pax_global_header00006660000000000000000000000064141267707570014532gustar00rootroot0000000000000052 comment=17aafed6f668614800dbd64c6dd51565a7f9b85a yubioath-desktop/000077500000000000000000000000001412677075700143715ustar00rootroot00000000000000yubioath-desktop/.flake8000066400000000000000000000000361412677075700155430ustar00rootroot00000000000000[flake8] max-line-length = 89 yubioath-desktop/.gitattributes000066400000000000000000000002041412677075700172600ustar00rootroot00000000000000# Auto-detect text files * text=auto # Always treat these as LF *.sh text eol=lf # Always treat these as CRLF *.bat text eol=crlf yubioath-desktop/.github/000077500000000000000000000000001412677075700157315ustar00rootroot00000000000000yubioath-desktop/.github/ISSUE_TEMPLATE.md000066400000000000000000000006661412677075700204460ustar00rootroot00000000000000- Yubico Authenticator version: - Operating system and version: - YubiKey model and version: - Bug description summary: Steps to reproduce --- [Please explain what you did when the bug appeared, and if and how you have been able to reproduce it.] Expected result --- [What did you expect to happen when you did the above?] Actual results --- [What actually happened?] Other info --- [Anything else you would like to add?] yubioath-desktop/.github/workflows/000077500000000000000000000000001412677075700177665ustar00rootroot00000000000000yubioath-desktop/.github/workflows/.gitattributes000066400000000000000000000000301412677075700226520ustar00rootroot00000000000000*.sha256sum text eol=lf yubioath-desktop/.github/workflows/appimage.yml000066400000000000000000000014241412677075700222750ustar00rootroot00000000000000name: Build AppImage on: [push, pull_request] jobs: build: runs-on: ubuntu-18.04 steps: - uses: actions/checkout@v1 - name: Build docker image that produces the AppImage run: | export REF=$(echo ${GITHUB_REF} | cut -d '/' -f 3) docker build -t xenial-appimage -f docker/xenial-appimage/Dockerfile . id=$(docker create --privileged xenial-appimage) docker start --attach $id docker cp $id:/yubioath-desktop/Yubico_Authenticator-x86_64.AppImage yubioath-desktop-${REF}.AppImage mkdir deploy mv yubioath-desktop-${REF}.AppImage deploy - name: Upload artifact uses: actions/upload-artifact@v1 with: name: yubioath-desktop-appimage path: deploy yubioath-desktop/.github/workflows/codeql-analysis.yml000066400000000000000000000020231412677075700235760ustar00rootroot00000000000000name: "CodeQL" on: push: pull_request: schedule: - cron: '0 11 * * 3' jobs: analyze: name: Analyze runs-on: ubuntu-latest permissions: actions: read contents: read security-events: write strategy: fail-fast: false matrix: language: [ 'cpp', 'javascript', 'python' ] steps: - name: Checkout repository uses: actions/checkout@v2 - name: Install Qt uses: jurplel/install-qt-action@v2 with: host: 'linux' # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL uses: github/codeql-action/init@v1 with: languages: ${{ matrix.language }} setup-python-dependencies: false - if: matrix.language == 'python' || matrix.language == 'javascript' name: autobuild uses: github/codeql-action/autobuild@v1 - if: matrix.language == 'cpp' name: Build cpp run: | qmake && make - name: Perform CodeQL Analysis uses: github/codeql-action/analyze@v1 yubioath-desktop/.github/workflows/macOS.yml000066400000000000000000000173031412677075700215170ustar00rootroot00000000000000name: macOS on: [push, pull_request] env: PYTHON_VER: '3.9.2' PYTHON_VER_SHORT: '3.9' PYTHON_VER_SHORT_COMPACT: '39' PYOTHERSIDE_VER: '1.5.9' OPENSSL_VER: '1.1.1i' jobs: build: runs-on: macos-latest steps: - uses: actions/checkout@v1 - name: Install Qt uses: jurplel/install-qt-action@v2 with: version: '5.15.1' host: 'mac' target: 'desktop' - name: Install dependencies from homebrew run: | pip install --upgrade pip brew update brew install swig zlib curl coreutils - name: Setup GPG run: | curl https://keys.openpgp.org/vks/v1/by-fingerprint/E3FF2839C048B25C084DEBE9B26995E310250568 | gpg --import curl "https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x7953ac1fbc3dc8b3b292393ed5e9e43f7df9ee8c" -o ./key1.asc curl "https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x8657ABB260F056B1E5190839D9C4D26D0E604491" -o ./key2.asc gpg --import ./key1.asc gpg --import ./key2.asc - name: Build OpenSSL run: | wget https://www.openssl.org/source/openssl-${OPENSSL_VER}.tar.gz wget https://www.openssl.org/source/openssl-${OPENSSL_VER}.tar.gz.asc gpg --verify openssl-${OPENSSL_VER}.tar.gz.asc tar -xzvf openssl-${OPENSSL_VER}.tar.gz cd openssl-${OPENSSL_VER} sudo env MACOSX_DEPLOYMENT_TARGET=10.13 ./config --prefix=/opt/openssl sudo env MACOSX_DEPLOYMENT_TARGET=10.13 make sudo make install - name: Build Python as a framework run: | wget https://www.python.org/ftp/python/${PYTHON_VER}/Python-${PYTHON_VER}.tgz wget https://www.python.org/ftp/python/${PYTHON_VER}/Python-${PYTHON_VER}.tgz.asc gpg --verify Python-${PYTHON_VER}.tgz.asc tar -xzvf Python-${PYTHON_VER}.tgz cd Python-${PYTHON_VER} # Make sure gettext is not installed when configuring Python, # otherwise it seems to break the linking for PyOtherSide build later. # Re-intall after, because it's needed for wget. brew uninstall gettext --ignore-dependencies brew unlink python@3.9 ./configure MACOSX_DEPLOYMENT_TARGET=10.13 CPPFLAGS="-I/opt/openssl/include" LDFLAGS="-L/opt/openssl/lib" CC=clang --enable-framework --with-openssl=/opt/openssl --enable-optimizations sudo make altinstall brew link --overwrite python@3.9 brew reinstall gettext - name: Install python dependencies from source run: | sudo /Library/Frameworks/Python.framework/Versions/${PYTHON_VER_SHORT}/bin/pip${PYTHON_VER_SHORT} install --upgrade pip sudo env MACOSX_DEPLOYMENT_TARGET=10.13 CFLAGS="-I/opt/openssl/include" LDFLAGS="-L/opt/openssl/lib" /Library/Frameworks/Python.framework/Versions/${PYTHON_VER_SHORT}/bin/pip${PYTHON_VER_SHORT} install -r requirements.txt - name: Change id for bundled Python run: sudo sed -i '' 's/org.python.python/com.yubico.python/g' /Library/Frameworks/Python.framework/Versions/${PYTHON_VER_SHORT}/Resources/Python.app/Contents/Info.plist - name: Build PyOtherSide QML plugin run: | wget https://github.com/thp/pyotherside/archive/${PYOTHERSIDE_VER}.tar.gz echo "189cb0b973e40fcb6b95fd51b0bcd6cc8494b514d49ffe966ec488cf05bbf51e ${PYOTHERSIDE_VER}.tar.gz" | sha256sum -c - tar -xzvf ${PYOTHERSIDE_VER}.tar.gz echo "DEFINES += QT_NO_DEBUG_OUTPUT" >> pyotherside-${PYOTHERSIDE_VER}/src/src.pro cd pyotherside-${PYOTHERSIDE_VER} qmake PYTHON_CONFIG=/Library/Frameworks/Python.framework/Versions/${PYTHON_VER_SHORT}/bin/python${PYTHON_VER_SHORT}-config make sudo make install - name: Build yubioath-desktop run: | qmake make macdeployqt yubioath-desktop.app/ -qmldir=qml/ -appstore-compliant - name: Copy over dynamic libraries run: | sudo find /opt/openssl/ -name '*.dylib' -exec cp '{}' yubioath-desktop.app/Contents/Frameworks/ ';' - name: Copy over Python.framework to app bundle run: | cp -a /Library/Frameworks/Python.framework yubioath-desktop.app/Contents/Frameworks/ sudo find yubioath-desktop.app/Contents/Frameworks/Python.framework -name '*.pyc' -delete sudo find yubioath-desktop.app/Contents/Frameworks/Python.framework -name '__pycache__' -delete - name: Point pyotherside to relative Python run: | sudo install_name_tool -change /Library/Frameworks/Python.framework/Versions/${PYTHON_VER_SHORT}/Python @executable_path/../Frameworks/Python.framework/Versions/${PYTHON_VER_SHORT}/Python yubioath-desktop.app/Contents/PlugIns/quick/libpyothersideplugin.dylib - name: Point custom Python share objects to relative openssl dylibs run: | sudo install_name_tool -change /opt/openssl/lib/libcrypto.1.1.dylib @executable_path/../Frameworks/libcrypto.1.1.dylib yubioath-desktop.app/Contents/Frameworks/Python.framework/Versions/${PYTHON_VER_SHORT}/lib/python${PYTHON_VER_SHORT}/lib-dynload/_ssl.cpython-${PYTHON_VER_SHORT_COMPACT}-darwin.so sudo install_name_tool -change /opt/openssl/lib/libssl.1.1.dylib @executable_path/../Frameworks/libssl.1.1.dylib yubioath-desktop.app/Contents/Frameworks/Python.framework/Versions/${PYTHON_VER_SHORT}/lib/python${PYTHON_VER_SHORT}/lib-dynload/_ssl.cpython-${PYTHON_VER_SHORT_COMPACT}-darwin.so sudo install_name_tool -change /opt/openssl/lib/libcrypto.1.1.dylib @executable_path/../Frameworks/libcrypto.1.1.dylib yubioath-desktop.app/Contents/Frameworks/Python.framework/Versions/${PYTHON_VER_SHORT}/lib/python${PYTHON_VER_SHORT}/lib-dynload/_hashlib.cpython-${PYTHON_VER_SHORT_COMPACT}-darwin.so sudo install_name_tool -change /opt/openssl/lib/libssl.1.1.dylib @executable_path/../Frameworks/libssl.1.1.dylib yubioath-desktop.app/Contents/Frameworks/Python.framework/Versions/${PYTHON_VER_SHORT}/lib/python${PYTHON_VER_SHORT}/lib-dynload/_hashlib.cpython-${PYTHON_VER_SHORT_COMPACT}-darwin.so sudo install_name_tool -change /opt/openssl/lib/libcrypto.1.1.dylib @executable_path/../Frameworks/libcrypto.1.1.dylib yubioath-desktop.app/Contents/Frameworks/libssl.1.1.dylib sudo install_name_tool -change /opt/openssl/lib/libcrypto.1.1.dylib @executable_path/../Frameworks/libcrypto.1.1.dylib yubioath-desktop.app/Contents/Frameworks/Python.framework/Versions/${PYTHON_VER_SHORT}/lib/python${PYTHON_VER_SHORT}/site-packages/cryptography/hazmat/bindings/_openssl.abi3.so sudo install_name_tool -change /opt/openssl/lib/libssl.1.1.dylib @executable_path/../Frameworks/libssl.1.1.dylib yubioath-desktop.app/Contents/Frameworks/Python.framework/Versions/${PYTHON_VER_SHORT}/lib/python${PYTHON_VER_SHORT}/site-packages/cryptography/hazmat/bindings/_openssl.abi3.so - name: Rename and archive app bundle run: | export REF=$(echo ${GITHUB_REF} | cut -d '/' -f 3) mv yubioath-desktop.app Yubico\ Authenticator.app tar -czf yubioath-desktop-${REF}.app.tar.gz Yubico\ Authenticator.app mkdir deploy mv yubioath-desktop-${REF}.app.tar.gz deploy - name: Uninstall runtime dependencies run: | brew uninstall openssl@1.1 python libusb --ignore-dependencies sudo rm -rf /usr/local/Cellar/qt - name: Run GUI run: | ./Yubico\ Authenticator.app/Contents/MacOS/yubioath-desktop --version ./Yubico\ Authenticator.app/Contents/MacOS/yubioath-desktop --help - name: Upload artifact uses: actions/upload-artifact@v1 with: name: yubioath-desktop-macos-app-bundle path: deployyubioath-desktop/.github/workflows/snap-pyscard-patch.patch000066400000000000000000000011621412677075700245100ustar00rootroot00000000000000From 6dd501199c1323a49f2e64e75c886a1d0b652577 Mon Sep 17 00:00:00 2001 From: Dag Heyman Date: Thu, 20 Feb 2020 18:05:59 +0100 Subject: [PATCH] setup.py: add typical snapcraft location of PCSC --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 3795389..27ad71a 100755 --- a/setup.py +++ b/setup.py @@ -67,7 +67,7 @@ else: platform__cc_defines = [('PCSCLITE', '1')] platform_swig_opts = ['-DPCSCLITE'] - platform_include_dirs = ['/usr/include/PCSC', '/usr/local/include/PCSC'] + platform_include_dirs = ['/root/stage/usr/include/PCSC'] yubioath-desktop/.github/workflows/snap-ykman-settings.patch000066400000000000000000000010371412677075700247240ustar00rootroot00000000000000diff --git a/ykman/settings.py b/ykman/settings.py index 77ca6d4..d64908e 100644 --- a/ykman/settings.py +++ b/ykman/settings.py @@ -41,7 +41,7 @@ class Settings(dict): _config_dir = HOME_CONFIG def __init__(self, name): - self.fname = Path(self._config_dir).expanduser().resolve() / (name + ".json") + self.fname = os.path.join(os.getenv('SNAP_USER_DATA'), '.config', '.ykman', name + '.json') if self.fname.is_file(): with self.fname.open("r") as fd: self.update(json.load(fd))yubioath-desktop/.github/workflows/snap.yml000066400000000000000000000006431412677075700214550ustar00rootroot00000000000000name: Build snap package on: [push, pull_request] jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: snapcore/action-build@v1 id: snapcraft - name: Install snap run: sudo snap install --dangerous ${{ steps.snapcraft.outputs.snap }} - uses: actions/upload-artifact@v2 with: name: snap path: ${{ steps.snapcraft.outputs.snap }} yubioath-desktop/.github/workflows/source-package.yml000066400000000000000000000011261412677075700234020ustar00rootroot00000000000000name: Build a source package on: [push, pull_request] jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v1 - name: Build a .tar.gz source package run: | export REF=$(echo ${GITHUB_REF} | cut -d '/' -f 3) git archive --format=tar.gz --prefix=yubioath-desktop/ -o yubioath-desktop-$REF.tar.gz HEAD mkdir deploy mv yubioath-desktop-$REF.tar.gz deploy - name: Upload artifact uses: actions/upload-artifact@v1 with: name: yubioath-desktop-source-package path: deploy yubioath-desktop/.github/workflows/windows-libs.sha256sum000066400000000000000000000005241412677075700240670ustar00rootroot00000000000000128fdd846fe24f8594eed37d1d8929a0ea78df563537c0c1b1861a635013fff8 jom.zip 8c7231e46570be7b13c997b56211f4d9173de8abef54597208763df7fa10bf57 pyotherside-1.5.3.zip efadf25a090c8438b3cbe27574fb36bd40c80e20a03939188a1d5051685495dd python-3.6.8-embed-amd64.zip 671f1a420757b4480e7fadc8313d6fb3cbb75ca00934c417c1efa6e77fb8779b libusb-1.0.22.7z yubioath-desktop/.github/workflows/windows-x64.yml000066400000000000000000000140641412677075700226270ustar00rootroot00000000000000name: windows 64 bit on: [push, pull_request] env: PYTHON_VER_DIRNAME: 'python38' PYOTHERSIDE_VER: '1.5.9' jobs: build: runs-on: windows-latest steps: - uses: actions/checkout@v1 - uses: actions/setup-python@v1 with: python-version: '3.8.x' architecture: 'x64' - name: Install Qt uses: jurplel/install-qt-action@v2.10.0 with: version: '5.14.1' host: 'windows' target: 'desktop' arch: 'win64_msvc2017_64' aqtversion: '==0.9.7' - name: Download dependencies run: | $py_ver = python -V $py_ver -match "python (?.*)" $version = $matches['content'] wget https://download.qt.io/official_releases/jom/jom.zip -OutFile jom.zip wget https://github.com/thp/pyotherside/archive/$env:PYOTHERSIDE_VER.zip -OutFile pyotherside-$env:PYOTHERSIDE_VER.zip wget https://www.python.org/ftp/python/$version/python-$version-embed-amd64.zip -OutFile python-$version-embed-amd64.zip shell: powershell - name: Fetch GPG keys run: gpg --no-default-keyring --keyring yubico --keyserver hkps://keys.openpgp.org --recv-keys 0A3B0262BCA1705307D5FF06BCA00FD4B2168C0A - name: Install swig run: choco install swig - name: Install jom run: | 7z x jom.zip - name: Prepare pyotherside run: | $py_ver = python -V $py_ver -match "python (?.*)" $version = $matches['content'] 7z x pyotherside-$env:PYOTHERSIDE_VER.zip cd pyotherside-$env:PYOTHERSIDE_VER (Get-Content .\src\qmldir).replace('pyothersideplugin', 'pyothersideplugin1') | Set-Content .\src\qmldir Clear-Content python.pri Add-Content python.pri "PYTHON_CONFIG = python3-config`nQMAKE_LIBS += -LC:\hostedtoolcache\windows\Python\$version\x64\libs -l$env:PYTHON_VER_DIRNAME`nQMAKE_CXXFLAGS += -IC:\hostedtoolcache\windows\Python\$version\x64\include`n" shell: powershell - name: Build and install pyotherside run: | set PATH=D:\a\yubioath-desktop\yubioath-desktop\5.14.1\msvc2017_64\bin;D:\a\yubioath-desktop\yubioath-desktop;%PATH% call C:\"Program Files (x86)\Microsoft Visual Studio"\2019\Enterprise\VC\Auxiliary\Build\vcvarsall.bat x64 cd pyotherside-%PYOTHERSIDE_VER% qmake jom jom install shell: cmd - name: Build app run: | set PATH=D:\a\yubioath-desktop\yubioath-desktop\5.14.1\msvc2017_64\bin;D:\a\yubioath-desktop\yubioath-desktop;%PATH% call C:\"Program Files (x86)\Microsoft Visual Studio"\2019\Enterprise\VC\Auxiliary\Build\vcvarsall.bat x64 qmake jom shell: cmd - name: Run windeployqt run: | set PATH=D:\a\yubioath-desktop\yubioath-desktop\5.14.1\msvc2017_64\bin;D:\a\yubioath-desktop\yubioath-desktop;%PATH% call C:\"Program Files (x86)\Microsoft Visual Studio"\2019\Enterprise\VC\Auxiliary\Build\vcvarsall.bat x64 windeployqt .\release\yubioath-desktop.exe --qmldir=qml --no-translations --angle --release shell: cmd - name: Copy over files to release folder shell: powershell run: | $py_ver = python -V $py_ver -match "python (?.*)" $version = $matches['content'] Copy-Item .\pymodules .\release -recurse Get-ChildItem -File -Include *.pyc -Recurse | Remove-Item -Force Get-ChildItem -Include __pycache__ -Recurse | Remove-Item -Force Get-ChildItem -Include *.cpp -Recurse | Remove-Item -Force Get-ChildItem -Include *.obj -Recurse | Remove-Item -Force cd .\release 7z x ..\python-$version-embed-amd64.zip - name: Create .zip artifact shell: powershell run: | $arr = $env:GITHUB_REF -split '/' $branch = $arr[2] 7z a yubioath-desktop-$branch-win64.zip release mkdir deploy cp yubioath-desktop-$branch-win64.zip deploy - name: Install Visual Studio C++ 2019 Redistributable MSMs shell: cmd continue-on-error: true run: | choco install visualstudio2019community --package-parameters "--add Microsoft.VisualStudio.Component.VC.Redist.MSM" - name: DPI awareness shell: powershell continue-on-error: true run: | $env:PATH += ";C:\Program Files (x86)\Windows Kits\10\bin\10.0.18362.0\x64" mt.exe -manifest .\resources\win\yubioath-desktop.exe.manifest -outputresource:.\release\yubioath-desktop.exe - name: Create an unsigned .msi installer package continue-on-error: true run: | $env:PATH += ";$env:WIX\bin" $env:SRCDIR = ".\release\" $env:MERGEDPATH = Get-ChildItem "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Redist\MSVC\14.*\MergeModules\Microsoft_VC142_CRT_x64.msm" heat dir .\release -out fragment.wxs -gg -scom -srd -sfrag -dr INSTALLDIR -cg ApplicationFiles -var env.SRCDIR candle .\fragment.wxs .\resources\win\yubioath-desktop.wxs -ext WixUtilExtension -arch x64 light fragment.wixobj yubioath-desktop.wixobj -ext WixUIExtension -ext WixUtilExtension -o yubioath-desktop.msi cp yubioath-desktop.msi deploy - name: Run installer shell: powershell continue-on-error: true run: | msiexec /i yubioath-desktop.msi /quiet /l .\log.txt - name: Rename installer continue-on-error: true shell: powershell run: | $arr = $env:GITHUB_REF -split '/' $branch = $arr[2] mv .\deploy\yubioath-desktop.msi .\deploy\yubioath-desktop-$branch-win64.msi - name: Run GUI shell: bash run: | ./release/yubioath-desktop --version ./release/yubioath-desktop --help - name: Upload artifact uses: actions/upload-artifact@v1 with: name: yubioath-desktop-win64 path: deploy yubioath-desktop/.github/workflows/windows-x86-libs.sha256sum000066400000000000000000000005241412677075700245120ustar00rootroot00000000000000128fdd846fe24f8594eed37d1d8929a0ea78df563537c0c1b1861a635013fff8 jom.zip 8c7231e46570be7b13c997b56211f4d9173de8abef54597208763df7fa10bf57 pyotherside-1.5.3.zip b4c65c63344c29c716f58c80fb91999f15af0992a142d5ed33cd12d22aa941e0 python-3.6.8-embed-win32.zip 671f1a420757b4480e7fadc8313d6fb3cbb75ca00934c417c1efa6e77fb8779b libusb-1.0.22.7z yubioath-desktop/.github/workflows/windows-x86.yml000066400000000000000000000137171412677075700226370ustar00rootroot00000000000000name: windows 32bit on: [push, pull_request] env: PYTHON_VER_DIRNAME: 'python38' PYOTHERSIDE_VER: '1.5.9' jobs: build: runs-on: windows-latest steps: - uses: actions/checkout@v1 - uses: actions/setup-python@v1 with: python-version: '3.8.x' architecture: 'x86' - name: Install Qt uses: jurplel/install-qt-action@v2.10.0 with: version: '5.14.1' host: 'windows' target: 'desktop' arch: 'win32_msvc2017' aqtversion: '==0.9.7' - name: Download dependencies run: | $py_ver = python -V $py_ver -match "python (?.*)" $version = $matches['content'] wget https://download.qt.io/official_releases/jom/jom.zip -OutFile jom.zip wget https://github.com/thp/pyotherside/archive/$env:PYOTHERSIDE_VER.zip -OutFile pyotherside-$env:PYOTHERSIDE_VER.zip wget https://www.python.org/ftp/python/$version/python-$version-embed-win32.zip -OutFile python-$version-embed-win32.zip shell: powershell - name: Fetch GPG keys run: gpg --no-default-keyring --keyring yubico --keyserver hkps://keys.openpgp.org --recv-keys 0A3B0262BCA1705307D5FF06BCA00FD4B2168C0A - name: Install swig run: choco install swig - name: Install jom run: | 7z x jom.zip shell: powershell - name: Prepare pyotherside run: | $py_ver = python -V $py_ver -match "python (?.*)" $version = $matches['content'] 7z x pyotherside-$env:PYOTHERSIDE_VER.zip cd pyotherside-$env:PYOTHERSIDE_VER (Get-Content .\src\qmldir).replace('pyothersideplugin', 'pyothersideplugin1') | Set-Content .\src\qmldir Clear-Content python.pri Add-Content python.pri "PYTHON_CONFIG = python3-config`nQMAKE_LIBS += -LC:\hostedtoolcache\windows\Python\$version\x86\libs -l$env:PYTHON_VER_DIRNAME`nQMAKE_CXXFLAGS += -IC:\hostedtoolcache\windows\Python\$version\x86\include`n" shell: powershell - name: Build and install pyotherside run: | set PATH=D:\a\yubioath-desktop\yubioath-desktop\5.14.1\msvc2017\bin;D:\a\yubioath-desktop\yubioath-desktop;%PATH% call C:\"Program Files (x86)\Microsoft Visual Studio"\2019\Enterprise\VC\Auxiliary\Build\vcvarsall.bat x86 cd pyotherside-%PYOTHERSIDE_VER% qmake jom jom install shell: cmd - name: Build app run: | $py_ver = python -V $py_ver -match "python (?.*)" $version = $matches['content'] set PATH=C:\hostedtoolcache\windows\Python\$version\x86\Scripts;C:\hostedtoolcache\windows\Python\$version\x86;D:\a\yubioath-desktop\yubioath-desktop\5.14.1\msvc2017\bin;D:\a\yubioath-desktop\yubioath-desktop;%PATH% call C:\"Program Files (x86)\Microsoft Visual Studio"\2019\Enterprise\VC\Auxiliary\Build\vcvarsall.bat x86 qmake jom shell: cmd - name: Run windeployqt run: | set PATH=D:\a\yubioath-desktop\yubioath-desktop\5.14.1\msvc2017\bin;D:\a\yubioath-desktop\yubioath-desktop;%PATH% call C:\"Program Files (x86)\Microsoft Visual Studio"\2019\Enterprise\VC\Auxiliary\Build\vcvarsall.bat x86 windeployqt .\release\yubioath-desktop.exe --qmldir=.\qml --no-translations --angle --release shell: cmd - name: Copy over files to release folder run: | $py_ver = python -V $py_ver -match "python (?.*)" $version = $matches['content'] Copy-Item .\pymodules .\release -recurse Get-ChildItem -File -Include *.pyc -Recurse | Remove-Item -Force Get-ChildItem -Include __pycache__ -Recurse | Remove-Item -Force Get-ChildItem -Include *.cpp -Recurse | Remove-Item -Force Get-ChildItem -Include *.obj -Recurse | Remove-Item -Force cd .\release 7z x ..\python-$version-embed-win32.zip - name: Create .zip artifact run: | $arr = $env:GITHUB_REF -split '/' $branch = $arr[2] 7z a yubioath-desktop-$branch-win32.zip .\release mkdir deploy cp yubioath-desktop-$branch-win32.zip deploy shell: powershell - name: Install Visual Studio C++ 2019 Redistributable MSMs continue-on-error: true shell: cmd run: | choco install visualstudio2019community --package-parameters "--add Microsoft.VisualStudio.Component.VC.Redist.MSM" - name: Create an unsigned .msi installer package continue-on-error: true run: | $env:PATH += ";$env:WIX\bin" $env:SRCDIR = ".\release\" $env:MERGEDPATH = Get-ChildItem "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Redist\MSVC\14.*\MergeModules\Microsoft_VC142_CRT_x86.msm" heat dir .\release -out fragment.wxs -gg -scom -srd -sfrag -dr INSTALLDIR -cg ApplicationFiles -var env.SRCDIR candle .\fragment.wxs .\resources\win\yubioath-desktop-x86.wxs -ext WixUtilExtension -arch x86 light fragment.wixobj yubioath-desktop-x86.wixobj -ext WixUIExtension -ext WixUtilExtension -o yubioath-desktop-x86.msi cp yubioath-desktop-x86.msi deploy - name: Run installer continue-on-error: true shell: cmd run: | msiexec /i yubioath-desktop-x86.msi /quiet /l .\log.txt cat .\log.txt - name: Rename installer continue-on-error: true run: | $arr = $env:GITHUB_REF -split '/' $branch = $arr[2] mv .\deploy\yubioath-desktop-x86.msi .\deploy\yubioath-desktop-$branch-win32.msi - name: Run GUI shell: bash run: | ./release/yubioath-desktop --version ./release/yubioath-desktop --help - name: Upload artifact uses: actions/upload-artifact@v1 with: name: yubioath-desktop-win32 path: deploy yubioath-desktop/.gitignore000066400000000000000000000003521412677075700163610ustar00rootroot00000000000000*/release/ .vagrant/ __pycache__/ dist/ lib/ yubioath-desktop.app/ /pymodules/ /vagrant/*/*.log *.autosave *.dll *.o *.qrc *.rc *.ts *.user .qmake.stash .ropeproject Makefile* /VERSION moc_*.cpp moc_*.h qrc_*.cpp /yubioath-desktop* yubioath-desktop/.pre-commit-config.yaml000066400000000000000000000003171412677075700206530ustar00rootroot00000000000000- repo: local hooks: - id: qmllint name: qmllint entry: qmllint language: system files: \.qml$ - id: flake8 name: flake8 language: system entry: flake8 ./py files: \.py yubioath-desktop/COPYING000066400000000000000000000024521412677075700154270ustar00rootroot00000000000000Copyright (c) 2017 Yubico AB All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. yubioath-desktop/NEWS000066400000000000000000000314601412677075700150740ustar00rootroot00000000000000* Version 5.1.0 (released 2021-10-05) ** Support and manage FIDO-enabled YubiKeys. ** Toggle applications over USB and NFC. ** Major UI improvements. * Version 5.0.5 (released 2021-04-14) ** Compatibility update for ykman 4.0. ** Add additional product names. ** Linux: Use the embedded version of ykman in AppImage. * Version 5.0.4 (released 2020-05-14) ** New app icons on all platforms ** Adjust the behaviour of the search bar, do not search accounts without having focus ** Bugfix: Fix keyboard shortcut to copy account code ** Bugfix: Show firmware version for YubiKey NEO correctly ** Windows: Show correct version number in .msi installers ** macOS: Fix issue with window positioning ** macOS: Fix occacional crashes on startup ** Linux: Fix the app icon and desktop entry for the Snap package. * Version 5.0.3 (released 2020-04-14) ** macOS: Make the app available in the macOS App Store ** Windows: Make the app available in the Microsoft Store (for Windows 10 20.04 and higher) ** Linux: Make the app available in the Snap Store ** Add support for YubiKey 5C NFC ** Bugfix: Make sure the application is always visible on Windows * Version 5.0.2 (released 2020-01-29) ** Allow spaces in secret key when adding accounts ** UI: Move favorite button to the credential card ** UI: Improved scrolling behaviour ** Windows: Improve how .dll files are loaded, thanks to Marius Gabriel Mihai for reporting this! ** Windows: Initial support for .msi installers. If upgrading from the .exe installer, make sure to uninstall the older version before using the .msi * Version 5.0.1 (released 2019-10-16) ** New colors for the account icons. ** Use Roboto font on all platforms. ** Increase some text sizes for better readability. ** Change icon for the Settings button and move it to the left. ** SysTray: Open application on double-click. ** Terminology: Use "Accounts" instead of "Credentials". ** Bugfix: Clear old accounts correctly when switching between devices. ** Add keyboard shortcut (Ctrl/Cmd + i) for info popup. * Version 5.0.0 (released 2019-09-23) ** New UI based on Material Design and Qt Quick Controls 2 ** Add Dark Mode and Light Mode ** Feature: Allow switching between connected YubiKeys ** Feature: Select favorite credentials, available from the System Tray/Menu Bar ** Show some information about the connected YubiKey, such as firmware version and serial number ** Add experimental support for external smart card readers, enabling the use of a YubiKey over NFC ** Add initial accessability support * Version 4.3.6b (released 2019-06-11) ** Fixes problem where YubiKey was not being detected on macOS. * Version 4.3.6 (released 2019-05-29) ** Windows: improve support for YubiKey NEO on Windows 10 * Version 4.3.5 (released 2019-01-02) ** Bugfix: Show correct message when YubiKey doesn't have the correct transport enabled. ** Improve error handling in Slot Mode. ** Linux: Add experimental support for .AppImage * Version 4.3.4 (released 2018-05-07) ** Support YubiKey Preview ** Add credential: allow space in secret key. ** Bugfix: Don't show "No credentials found..." incorrectly. ** Bugfix: Forget the password when removing the device. ** Windows: 64-bit version added. * Version 4.3.3 (released 2018-02-15) ** Focus is not locked on the search field. ** Pressing ESC now clears the search field and deselects all credentials. ** Copying the code with a keyboard shortcut now works even if the search field has focus. ** The top progress bar is now only displayed when needed. ** Scanning QR codes should now work better on some multiple monitor setups. ** Improve the handling of touch credentials when the YubiKey is never touched. ** The application should no longer refresh credentials to often on slower systems. ** Credentials with a custom time period should now autorefresh correctly. ** Logging: The command line option --log-file is now supported, which writes the log to a file. The --log-file option is ignored unless preceded by the --log-level option. ** Bugfix: The arrow key navigation is no longer broken after deleting a credential. ** Windows: OpenGL rendering is now chosen dynamically. It's possible to override it with the QT_OPENGL environment variable. * Version 4.3.2+1 (released 2017-12-20) ** Re-release of 4.3.2 for Mac, because package signature was missing from 4.3.2 release * Version 4.3.1+1 (released 2017-12-20) ** Re-release of 4.3.1 for Mac, because package signature was missing from 4.3.1 release * Version 4.3.2 (released 2017-12-19) ** Bugfix: Fixed crash on attempt to generate code for touch credential in YubiKey Slots mode ** Bugfix: Fixed crash in QR scan * Version 4.3.1 (released 2017-12-17) ** Bugfix: Removed references to QML Array prototype methods added in Qt 5.9 (unavailable in Ubuntu Zesty and earlier) * Version 4.3.0 (released 2017-12-15) ** Now requires ykman version >= 0.5.0 ** Feature: New icon ** Feature: Remembered passwords are now shared with ykman. ** Feature: Added option to hide window on launch *** Thanks to Steven Stallion for contributing! ** Feature: "About" dialog now shows OATH applet version instead of overall firmware version ** Feature: Touch credentials generate a code for the next period if current period ends in less than 10s ** Feature: Arrow keys now navigate the list while search field has focus *** Thanks to Arthur Burkart for contributing! ** Feature: Focus now starts on the search field, and ESC no longer removes focus from search field ** Feature: Added `--log-level` CLI option with same function as `--log-level` option to `ykman` version 0.5.0; see `ykman --help` for usage ** Bugfix: Reduced idle CPU usage ** Bugfix: Improved error handling to prevent hanging UI ** Bugfix: Fixed tray icon remaining after exit on Windows ** Bugfix: Fixed sorting when some credentials have nonstandard periods ** Bugfix: Selection now stable across refreshes and searches ** Bugfix: Arrow keys now scroll the view only if the selection changes * Version 4.2.0+deps.2 (de-published) ** Identical to release 4.2.0+deps except it unpacks to a directory with the same name as the archive * Version 4.2.0+deps (de-published) ** Identical to release 4.2.0b, but renamed to a valid Semantic Versioning version number * Version 4.2.0b (de-published) ** Source re-release with dependencies bundled in the archive * Version 4.2.0+2 (released 2017-11-17) ** Identical to release 4.2.0 except it unpacks to a directory with the same name as the archive * Version 4.2.0 (released 2017-09-14) ** Added support for 7 digit credentials. ** Added support for credentials with a non 30-second period. ** Moved "Scan QR code" functionality, now available directly from main view. ** Flip moving direction of the time left indicator. ** Win 7: Fixed issue with OpenGL rendering. ** macOS: Allow OpenGL to use integrated GPU. ** Bugfix: Issuer was not displayed correctly on Ubuntu. * Version 4.1.4 (released 2017-08-17) ** Double-click on system tray icon now shows the credentials. Not supported on macOS. ** Windows: An issue with the video drivers on some machines have been resolved. ** The About dialog now closes when the ESC key is pressed. ** UI: The credential codes should now follow any font scaling done by the operating system. ** UI: Codes now have a space in them for better readability. * Version 4.1.3 (released 2017-08-03) ** Feature: Double-click to generate a code and copy it to the clipboard. ** Feature: When searching, press the ESC key to clear the search field and press Enter to generate and copy a code. ** Added an error message for adding a credential when there is no storage space left on the device. ** Added an error message for adding a too large key when in Slot mode. ** Clicking outside the search field now removes focus from it. ** Names on new credentials can't be longer than 64 bytes. ** UI: Don't show timer when there is no credentials. ** The default button in the password prompt is now OK. ** Bugfix: Fixed crash caused by some QR codes. ** Bugfix: The selected credential was not being updated correctly. ** macOS: Remove sandbox entitlements to work better when running on a system with gpg-agent. * Version 4.1.2 (released 2017-05-12) ** Ubuntu: Fixed crash after entering password on Ubuntu 17.04 ** Windows: Fixed issue with window spawning outside desktop. * Version 4.1.1 (released 2017-05-09) ** Windows: Fixed issue with missing OpenGL drivers, include ANGLE in windows build. ** macOS: Fixed issue with incorrect linking to OpenSSL, causing the application to freeze when reading credentials. ** Bugfix: Touch credentials were not being selected correctly. ** Bugfix: Steam credentials were incorrect when read from a YubiKey 4. * Version 4.1.0 (released 2017-04-10) ** Added a optional system tray shortcut. ** Sort credentials based on name. ** Improved scrolling, keep scroll position when credentials are reloaded. ** Bugfix: new passwords was always being cleared. ** Removed custom coloring of progress bar, use system theming. * Version 4.0.1 (released 2017-03-27) ** Bugfix: Follow color schemes better. ** Removed some spacing thath caused the layout to be slightly off. ** Improved focus switching between search bar and credentials. ** Added keyboard shortcut (Ctrl/Cmd + F) for focus on the search bar. ** Select the top credential during search. ** Remember window location and dimensions between launches. ** Add a Edit menu in the menu bar for credentials. ** Improved error logging. ** macOS: Close app with Cmd + W. ** Windows installer: install Visual C++ redistributable packages if needed. * Version 4.0.0 (released 2017-03-20) ** The UI has been completely rewritten, to allow us to use a more modern technology stack. All main functionality and concepts are kept the same. ** CLI version has been removed from this project, the functionality is now found in the YubiKey Manager (ykman) tool. ** Slot mode and CCID mode are now kept separated, choose which mode to use under "Settings". ** Added keyboard shortcuts for copy code, generate code, delete credential, add credential and settings. ** Added support for resetting all OATH credentials and password. * Version 3.1.0b (released 2016-12-16) ** Fix crash on macOS related to how the application was built. New installer for macOS based on previous release. * Version 3.1.0 (released 2016-11-22) ** Added a search bar for credentials. ** Added support for adding SHA256 credentials in the GUI. ** Smart card is now being disconnected when the application is hidden. ** Bugfix: QR codes were sometimes not being parsed. * Version 3.0.1 (released 2016-06-13) ** Bugfix release: - Don't import OSX libs outside of OSX. - Packaging related fixes. * Version 3.0.0 (released 2016-06-09) ** Added compatibility with Python 3 (Python 2 is still supported). ** Added support for generating alphanumeric Steam authenticator codes for entries prefixed with "Steam:". ** Added a confirmation dialog box when overwriting entries. ** Added the capability to delete slot-based credentials. ** UX enhancements: split up issuer and name; added larger OTP codes. ** CLI was rewritten using the "click" library. ** CLI gained a "gui" subcommand which launches the full GUI. ** Binaries were renamed (yubioath -> yubioath-gui, yubioath-cli -> yubioath). * Version 2.3.0 (released 2015-11-20) ** Re-schedule timer each time period based on system time to prevent Qt timer drift. ** Clear password memory cache on minimize to prevent accidentally leaving the YubiKey unlocked unattended. ** Support for credentials which require touch (YubiKey 4 only). * Version 2.2.1 (released 2015-08-20) ** Bugfix release: Fix adding credentials via the UI. * Version 2.2.0 (released 2015-08-18) ** Allow spaces in OATH keys. ** Don't crash if smartcard subsystem isn't available. ** Disable systray icon by default. ** Added a flag to start the application minimized to the systray. ** Added the ability to scan QR codes from the screen. * Version 2.1.1 (released 2015-07-02) ** Added man pages. ** Fixed bug with non-CCID YubiKeys not displaying slot-based credentials. ** Windows installer/uninstaller checks for running instance, and closes it. * Version 2.1.0 (released 2015-06-26) ** Added setting to kill scdaemon on show, to release the device (GUI only). ** Added the ability to program standard YubiKeys with slot-based TOTP credentials. ** Added functionality to the CLI for programming YubiKeys. ** Added the reset command for wiping a device (CLI only). ** Better handling of composite modes. ** Support non-ascii characters in card reader names. * Version 2.0.2 (released 2015-06-16) ** Minor packaging related fixes. * Version 2.0.1 (released 2015-06-16) ** Minor fixes to platform specific quirks. * Version 2.0.0 (released 2015-06-15) ** Complete rewrite: - Supports all OATH-enabled YubiKeys, including YubiKey Standard. - New overhauled UI. yubioath-desktop/QZXing/000077500000000000000000000000001412677075700155515ustar00rootroot00000000000000yubioath-desktop/QZXing/CMakeLists.txt000066400000000000000000000036071412677075700203170ustar00rootroot00000000000000cmake_minimum_required(VERSION 3.2) project(QZXing) find_package(Qt5 COMPONENTS Core REQUIRED) find_package(Qt5 COMPONENTS Gui REQUIRED) find_package(Qt5 COMPONENTS Multimedia ) find_package(Qt5 REQUIRED Svg Quick QuickControls2) SET(BIGINT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/zxing/bigint) SET(WIN32_DIR ${CMAKE_CURRENT_SOURCE_DIR}/zxing/win32/zxing) SET(ZXING_DIR ${CMAKE_CURRENT_SOURCE_DIR}/zxing/zxing) set(CMAKE_AUTOMOC ON) set(CMAKE_WARN_ON) set(SOURCES CameraImageWrapper.cpp CameraImageWrapper.h ImageHandler.cpp ImageHandler.h QZXing.cpp QZXing.h QZXing_global.h ) if(QZXING_MULTIMEDIA) LIST(APPEND SOURCES QZXingFilter.cpp QZXingFilter.h) add_definitions(-DQZXING_MULTIMEDIA) SET(QZXING_USE_QML ON) endif(QZXING_MULTIMEDIA) if(QZXING_USE_QML) LIST(APPEND SOURCES QZXingImageProvider.cpp QZXingImageProvider.h) add_definitions(-DQZXING_QML) endif(QZXING_USE_QML) add_library(qzxing "" ${SOURCES}) if(WIN32) add_subdirectory(zxing/win32) if(MSVC) add_definitions(-D__STDC_LIMIT_MACROS) endif(MSVC) add_definitions(-DNO_ICONV) endif(WIN32) if(VS_WINRT_COMPONENT) add_definitions(-DNO_ICONV) endif(VS_WINRT_COMPONENT) add_subdirectory(zxing/bigint) add_subdirectory(zxing/zxing) target_link_libraries(qzxing Qt5::Core Qt5::Gui) if(QZXING_MULTIMEDIA) target_link_libraries(qzxing Qt5::Multimedia) endif(QZXING_MULTIMEDIA) if(QZXING_USE_QML) target_link_libraries(qzxing Qt5::Svg Qt5::Quick Qt5::QuickControls2) endif(QZXING_USE_QML) # Change Global Definitions depending on how you want to use the library target_compile_definitions(qzxing PUBLIC DISABLE_LIBRARY_FEATURES) # Target includes target_include_directories(qzxing PRIVATE . zxing zxing/win32/zxing zxing/zxing zxing/bigint PUBLIC $ ) yubioath-desktop/QZXing/CameraImageWrapper.cpp000066400000000000000000000200671412677075700217560ustar00rootroot00000000000000#include "CameraImageWrapper.h" #include //values based on http://entropymine.com/imageworsener/grayscale/ //round(0,2127*R) const zxing::byte CameraImageWrapper::R_TO_GREYSCALE[256] = { 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 12, 12, 12, 12, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 15, 15, 15, 15, 16, 16, 16, 16, 16, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 19, 19, 19, 19, 20, 20, 20, 20, 20, 21, 21, 21, 21, 21, 22, 22, 22, 22, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 25, 25, 25, 25, 26, 26, 26, 26, 26, 27, 27, 27, 27, 27, 28, 28, 28, 28, 28, 29, 29, 29, 29, 30, 30, 30, 30, 30, 31, 31, 31, 31, 31, 32, 32, 32, 32, 33, 33, 33, 33, 33, 34, 34, 34, 34, 34, 35, 35, 35, 35, 36, 36, 36, 36, 36, 37, 37, 37, 37, 37, 38, 38, 38, 38, 38, 39, 39, 39, 39, 40, 40, 40, 40, 40, 41, 41, 41, 41, 41, 42, 42, 42, 42, 43, 43, 43, 43, 43, 44, 44, 44, 44, 44, 45, 45, 45, 45, 45, 46, 46, 46, 46, 47, 47, 47, 47, 47, 48, 48, 48, 48, 48, 49, 49, 49, 49, 50, 50, 50, 50, 50, 51, 51, 51, 51, 51, 52, 52, 52, 52, 53, 53, 53, 53, 53, 54, 54, 54, 54 }; //values based on http://entropymine.com/imageworsener/grayscale/ //round(0,7152*G) const zxing::byte CameraImageWrapper::G_TO_GREYSCALE[256] = { 0, 1, 1, 2, 3, 4, 4, 5, 6, 6, 7, 8, 9, 9, 10, 11, 11, 12, 13, 14, 14, 15, 16, 16, 17, 18, 19, 19, 20, 21, 21, 22, 23, 24, 24, 25, 26, 26, 27, 28, 29, 29, 30, 31, 31, 32, 33, 34, 34, 35, 36, 36, 37, 38, 39, 39, 40, 41, 41, 42, 43, 44, 44, 45, 46, 46, 47, 48, 49, 49, 50, 51, 51, 52, 53, 54, 54, 55, 56, 57, 57, 58, 59, 59, 60, 61, 62, 62, 63, 64, 64, 65, 66, 67, 67, 68, 69, 69, 70, 71, 72, 72, 73, 74, 74, 75, 76, 77, 77, 78, 79, 79, 80, 81, 82, 82, 83, 84, 84, 85, 86, 87, 87, 88, 89, 89, 90, 91, 92, 92, 93, 94, 94, 95, 96, 97, 97, 98, 99, 99, 100, 101, 102, 102, 103, 104, 104, 105, 106, 107, 107, 108, 109, 109, 110, 111, 112, 112, 113, 114, 114, 115, 116, 117, 117, 118, 119, 119, 120, 121, 122, 122, 123, 124, 124, 125, 126, 127, 127, 128, 129, 129, 130, 131, 132, 132, 133, 134, 134, 135, 136, 137, 137, 138, 139, 139, 140, 141, 142, 142, 143, 144, 144, 145, 146, 147, 147, 148, 149, 149, 150, 151, 152, 152, 153, 154, 154, 155, 156, 157, 157, 158, 159, 159, 160, 161, 162, 162, 163, 164, 164, 165, 166, 167, 167, 168, 169, 170, 170, 171, 172, 172, 173, 174, 175, 175, 176, 177, 177, 178, 179, 180, 180, 181, 182, 182 }; //values based on http://entropymine.com/imageworsener/grayscale/ //round(0,0722*B) const zxing::byte CameraImageWrapper::B_TO_GREYSCALE[256] = { 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18 }; CameraImageWrapper::CameraImageWrapper() : LuminanceSource(0,0) { } CameraImageWrapper::CameraImageWrapper(const QImage &sourceImage) : LuminanceSource(sourceImage.width(), sourceImage.height()) { updateImageAsGrayscale( sourceImage ); delegate = Ref( new GreyscaleLuminanceSource(getMatrixP(), sourceImage.width(), sourceImage.height(),0, 0, sourceImage.width(), sourceImage.height())); } CameraImageWrapper::CameraImageWrapper(CameraImageWrapper& otherInstance) : LuminanceSource(otherInstance.getWidth(), otherInstance.getHeight()) { imageBytesPerRow = otherInstance.getOriginalImage(); delegate = otherInstance.getDelegate(); } CameraImageWrapper::~CameraImageWrapper() { } CameraImageWrapper *CameraImageWrapper::Factory(const QImage &sourceImage, int maxWidth, int maxHeight, bool smoothTransformation) { if((maxWidth != -1 && sourceImage.width() > maxWidth) || (maxHeight != -1 && sourceImage.height() > maxHeight)) { QImage image; image = sourceImage.scaled( maxWidth != -1 ? maxWidth : sourceImage.width(), maxHeight != -1 ? maxHeight : sourceImage.height(), Qt::KeepAspectRatio, smoothTransformation ? Qt::SmoothTransformation : Qt::FastTransformation); return new CameraImageWrapper(image); } else return new CameraImageWrapper(sourceImage); } ArrayRef > CameraImageWrapper::getOriginalImage() { return imageBytesPerRow; } ArrayRef CameraImageWrapper::getRow(int y, ArrayRef row) const { if(delegate) return delegate->getRow(y, row); else return getRowP(y, row); } ArrayRef CameraImageWrapper::getMatrix() const { if(delegate) return delegate->getMatrix(); else return getMatrixP(); } bool CameraImageWrapper::isCropSupported() const { if(delegate) return delegate->isCropSupported(); else return LuminanceSource::isCropSupported(); } Ref CameraImageWrapper::crop(int left, int top, int width, int height) const { if(delegate) return delegate->crop(left, top, width, height); else return LuminanceSource::crop(left, top, width, height); } bool CameraImageWrapper::isRotateSupported() const { if(delegate) return delegate->isRotateSupported(); else return LuminanceSource::isRotateSupported(); } Ref CameraImageWrapper::invert() const { if(delegate) return delegate->invert(); else return LuminanceSource::invert(); } Ref CameraImageWrapper::rotateCounterClockwise() const { if(delegate) return delegate->rotateCounterClockwise(); else return LuminanceSource::rotateCounterClockwise(); } ArrayRef CameraImageWrapper::getRowP(int y, ArrayRef row) const { int width = getWidth(); if (row->size() != width) row.reset(ArrayRef(width)); Q_ASSERT(y >= 0 && y < getHeight()); return imageBytesPerRow[y]; } ArrayRef CameraImageWrapper::getMatrixP() const { return imageBytes; } zxing::byte CameraImageWrapper::gray(const unsigned int r, const unsigned int g, const unsigned int b) { //the values are not masked with (x & 0xFF) because functions qRed, qGreen, qBlue already do it return R_TO_GREYSCALE[r] + G_TO_GREYSCALE[g] + B_TO_GREYSCALE[b]; } void CameraImageWrapper::updateImageAsGrayscale(const QImage &origin) { bool needsConvesionToGrayscale = origin.format() != QImage::Format_Grayscale8; QRgb pixel; zxing::byte pixelGrayscale; const int width = getWidth(); const int height = getHeight(); imageBytes = ArrayRef(height*width); imageBytesPerRow = ArrayRef>(height); zxing::byte* m = &imageBytes[0]; for(int j=0; j line(width); for(int i=0; i 199711L memcpy(m, line->values().data(), width); #else memcpy(m, &line[0], width); #endif m += width * sizeof(zxing::byte); } } yubioath-desktop/QZXing/CameraImageWrapper.h000066400000000000000000000042471412677075700214250ustar00rootroot00000000000000/* * Copyright 2011 QZXing authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef CAMERAIMAGE_H #define CAMERAIMAGE_H #include #include #include using namespace zxing; class CameraImageWrapper : public LuminanceSource { public: CameraImageWrapper(); CameraImageWrapper(const QImage& sourceImage); CameraImageWrapper(CameraImageWrapper& otherInstance); ~CameraImageWrapper(); static CameraImageWrapper* Factory(const QImage& image, int maxWidth=-1, int maxHeight=-1, bool smoothTransformation=false); ArrayRef > getOriginalImage(); Ref getDelegate() { return delegate; } ArrayRef getRow(int y, ArrayRef row) const; ArrayRef getMatrix() const; bool isCropSupported() const; Ref crop(int left, int top, int width, int height) const; bool isRotateSupported() const; Ref invert() const; Ref rotateCounterClockwise() const; inline zxing::byte gray(const unsigned int r, const unsigned int g, const unsigned int b); private: ArrayRef getRowP(int y, ArrayRef row) const; ArrayRef getMatrixP() const; void updateImageAsGrayscale(const QImage &origin); Ref delegate; ArrayRef> imageBytesPerRow; ArrayRef imageBytes; static const zxing::byte B_TO_GREYSCALE[256]; static const zxing::byte G_TO_GREYSCALE[256]; static const zxing::byte R_TO_GREYSCALE[256]; }; #endif //CAMERAIMAGE_H yubioath-desktop/QZXing/ImageHandler.cpp000066400000000000000000000055741412677075700206100ustar00rootroot00000000000000#include "ImageHandler.h" #include #include #include #include #include #if QT_VERSION < 0x050000 #include #include #endif // QT_VERSION < Qt 5.0 #if defined(QZXING_QML) #include #include #include #endif //QZXING_QML ImageHandler::ImageHandler(QObject *parent) : QObject(parent) { } QImage ImageHandler::extractQImage(QObject *imageObj, int offsetX, int offsetY, int width, int height) { QImage img; #if defined(QZXING_QML) #if QT_VERSION >= 0x050000 QQuickItem *item = qobject_cast(imageObj); if (!item || !item->window()->isVisible()) { qWarning() << "ImageHandler: item is NULL"; return QImage(); } QElapsedTimer timer; timer.start(); QSharedPointer result = item->grabToImage(); if (result) { pendingGrabbersLocker.lockForWrite(); pendingGrabbers << result.data(); pendingGrabbersLocker.unlock(); connect(result.data(), &QQuickItemGrabResult::ready, this, &ImageHandler::imageGrabberReady); while (timer.elapsed() < 1000) { pendingGrabbersLocker.lockForRead(); if (!pendingGrabbers.contains(result.data())) { pendingGrabbersLocker.unlock(); break; } pendingGrabbersLocker.unlock(); qApp->processEvents(); QThread::yieldCurrentThread(); } img = result->image(); } #else // QT_VERSION >= 0x050000 QGraphicsObject *item = qobject_cast(imageObj); if (!item) { qWarning() << "ImageHandler: item is NULL"; return QImage(); } img = QImage(item->boundingRect().size().toSize(), QImage::Format_RGB32); img.fill(QColor(255, 255, 255).rgb()); QPainter painter(&img); QStyleOptionGraphicsItem styleOption; item->paint(&painter, &styleOption); #endif // QT_VERSION >= 0x050000 #else // defined(QZXING_QML) Q_UNUSED(imageObj); #endif // defined(QZXING_QML) if (offsetX < 0) offsetX = 0; if (offsetY < 0) offsetY = 0; if (width < 0) width = 0; if (height < 0) height = 0; if (offsetX || offsetY || width || height) return img.copy(offsetX, offsetY, width, height); return img; } void ImageHandler::save(QObject *imageObj, const QString &path, const int offsetX, const int offsetY, const int width, const int height) { QImage img = extractQImage(imageObj, offsetX, offsetY, width, height); img.save(path); } #if QT_VERSION >= 0x050000 void ImageHandler::imageGrabberReady() { pendingGrabbersLocker.lockForWrite(); pendingGrabbers.remove(sender()); pendingGrabbersLocker.unlock(); } #endif yubioath-desktop/QZXing/ImageHandler.h000066400000000000000000000025651412677075700202520ustar00rootroot00000000000000/* * Copyright 2011 QZXing authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef IMAGEHANDLER_H #define IMAGEHANDLER_H #include #include #if QT_VERSION >= 0x050000 #include #include #endif class ImageHandler : public QObject { Q_OBJECT public: explicit ImageHandler(QObject *parent = 0); QImage extractQImage(QObject *imageObj, int offsetX = 0, int offsetY = 0, int width = 0, int height = 0); public slots: void save(QObject *imageObj, const QString &path, const int offsetX = 0, const int offsetY = 0, const int width = 0, const int height = 0); private: #if QT_VERSION >= 0x050000 void imageGrabberReady(); QSet pendingGrabbers; QReadWriteLock pendingGrabbersLocker; #endif }; #endif // IMAGEHANDLER_H yubioath-desktop/QZXing/LICENSE000066400000000000000000000261351412677075700165650ustar00rootroot00000000000000 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "{}" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright {yyyy} {name of copyright owner} Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. yubioath-desktop/QZXing/QZXing000066400000000000000000000002511412677075700166520ustar00rootroot00000000000000#include "QZXing.h" #ifdef QZXING_QML #include "QZXingImageProvider.h" #endif //QZXING_QML #ifdef QZXING_MULTIMEDIA #include "QZXingFilter.h" #endif //QZXING_MULTIMEDIA yubioath-desktop/QZXing/QZXing-components.pri000066400000000000000000000505701412677075700216370ustar00rootroot00000000000000# # Copyright 2011 QZXing authors # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # CONFIG += qt warn_on DEFINES += QZXING_LIBRARY \ ZXING_ICONV_CONST \ DISABLE_LIBRARY_FEATURES INCLUDEPATH += $$PWD \ $$PWD/zxing HEADERS += $$PWD/QZXing_global.h \ $$PWD/CameraImageWrapper.h \ $$PWD/ImageHandler.h \ $$PWD/QZXing.h \ $$PWD/zxing/zxing/ZXing.h \ $$PWD/zxing/zxing/IllegalStateException.h \ $$PWD/zxing/zxing/InvertedLuminanceSource.h \ $$PWD/zxing/zxing/ChecksumException.h \ $$PWD/zxing/zxing/ResultPointCallback.h \ $$PWD/zxing/zxing/ResultPoint.h \ $$PWD/zxing/zxing/Result.h \ $$PWD/zxing/zxing/ResultMetadata.h \ $$PWD/zxing/zxing/ReaderException.h \ $$PWD/zxing/zxing/Reader.h \ $$PWD/zxing/zxing/NotFoundException.h \ $$PWD/zxing/zxing/MultiFormatReader.h \ $$PWD/zxing/zxing/LuminanceSource.h \ $$PWD/zxing/zxing/FormatException.h \ $$PWD/zxing/zxing/Exception.h \ $$PWD/zxing/zxing/DecodeHints.h \ $$PWD/zxing/zxing/BinaryBitmap.h \ $$PWD/zxing/zxing/Binarizer.h \ $$PWD/zxing/zxing/BarcodeFormat.h \ $$PWD/zxing/zxing/common/StringUtils.h \ $$PWD/zxing/zxing/common/Str.h \ $$PWD/zxing/zxing/common/Point.h \ $$PWD/zxing/zxing/common/PerspectiveTransform.h \ $$PWD/zxing/zxing/common/IllegalArgumentException.h \ $$PWD/zxing/zxing/common/HybridBinarizer.h \ $$PWD/zxing/zxing/common/GridSampler.h \ $$PWD/zxing/zxing/common/GreyscaleRotatedLuminanceSource.h \ $$PWD/zxing/zxing/common/GreyscaleLuminanceSource.h \ $$PWD/zxing/zxing/common/GlobalHistogramBinarizer.h \ $$PWD/zxing/zxing/common/DetectorResult.h \ $$PWD/zxing/zxing/common/DecoderResult.h \ $$PWD/zxing/zxing/common/Counted.h \ $$PWD/zxing/zxing/common/CharacterSetECI.h \ $$PWD/zxing/zxing/common/BitSource.h \ $$PWD/zxing/zxing/common/BitMatrix.h \ $$PWD/zxing/zxing/common/BitArray.h \ $$PWD/zxing/zxing/common/Array.h \ $$PWD/zxing/zxing/common/detector/MathUtils.h \ $$PWD/zxing/zxing/common/detector/JavaMath.h \ $$PWD/zxing/zxing/common/detector/WhiteRectangleDetector.h \ $$PWD/zxing/zxing/common/detector/MonochromeRectangleDetector.h \ $$PWD/zxing/zxing/common/reedsolomon/ReedSolomonException.h \ $$PWD/zxing/zxing/common/reedsolomon/ReedSolomonDecoder.h \ $$PWD/zxing/zxing/common/reedsolomon/GenericGFPoly.h \ $$PWD/zxing/zxing/common/reedsolomon/GenericGF.h \ $$PWD/zxing/zxing/common/ByteArray.h \ $$PWD/zxing/zxing/multi/MultipleBarcodeReader.h \ $$PWD/zxing/zxing/multi/GenericMultipleBarcodeReader.h \ $$PWD/zxing/zxing/multi/ByQuadrantReader.h \ $$PWD/zxing/bigint/NumberlikeArray.hh \ $$PWD/zxing/bigint/BigUnsignedInABase.hh \ $$PWD/zxing/bigint/BigUnsigned.hh \ $$PWD/zxing/bigint/BigIntegerUtils.hh \ $$PWD/zxing/bigint/BigIntegerLibrary.hh \ $$PWD/zxing/bigint/BigIntegerAlgorithms.hh \ $$PWD/zxing/bigint/BigInteger.hh \ $$PWD/zxing/zxing/WriterException.h \ $$PWD/zxing/zxing/common/Types.h SOURCES += $$PWD/CameraImageWrapper.cpp \ $$PWD/QZXing.cpp \ $$PWD/ImageHandler.cpp \ $$PWD/zxing/zxing/ResultIO.cpp \ $$PWD/zxing/zxing/InvertedLuminanceSource.cpp \ $$PWD/zxing/zxing/ChecksumException.cpp \ $$PWD/zxing/zxing/ResultPointCallback.cpp \ $$PWD/zxing/zxing/ResultPoint.cpp \ $$PWD/zxing/zxing/Result.cpp \ $$PWD/zxing/zxing/ResultMetadata.cpp \ $$PWD/zxing/zxing/Reader.cpp \ $$PWD/zxing/zxing/MultiFormatReader.cpp \ $$PWD/zxing/zxing/LuminanceSource.cpp \ $$PWD/zxing/zxing/FormatException.cpp \ $$PWD/zxing/zxing/Exception.cpp \ $$PWD/zxing/zxing/DecodeHints.cpp \ $$PWD/zxing/zxing/BinaryBitmap.cpp \ $$PWD/zxing/zxing/Binarizer.cpp \ $$PWD/zxing/zxing/BarcodeFormat.cpp \ $$PWD/zxing/zxing/ReaderException.cpp \ $$PWD/zxing/zxing/IllegalStateException.cpp \ $$PWD/zxing/zxing/NotFoundException.cpp \ $$PWD/zxing/zxing/WriterException.cpp \ $$PWD/zxing/zxing/common/Counted.cpp \ $$PWD/zxing/zxing/common/StringUtils.cpp \ $$PWD/zxing/zxing/common/Str.cpp \ $$PWD/zxing/zxing/common/PerspectiveTransform.cpp \ $$PWD/zxing/zxing/common/IllegalArgumentException.cpp \ $$PWD/zxing/zxing/common/HybridBinarizer.cpp \ $$PWD/zxing/zxing/common/GridSampler.cpp \ $$PWD/zxing/zxing/common/GreyscaleRotatedLuminanceSource.cpp \ $$PWD/zxing/zxing/common/GreyscaleLuminanceSource.cpp \ $$PWD/zxing/zxing/common/GlobalHistogramBinarizer.cpp \ $$PWD/zxing/zxing/common/DetectorResult.cpp \ $$PWD/zxing/zxing/common/DecoderResult.cpp \ $$PWD/zxing/zxing/common/CharacterSetECI.cpp \ $$PWD/zxing/zxing/common/BitSource.cpp \ $$PWD/zxing/zxing/common/BitMatrix.cpp \ $$PWD/zxing/zxing/common/BitArray.cpp \ $$PWD/zxing/zxing/common/BitArrayIO.cpp \ $$PWD/zxing/zxing/common/detector/WhiteRectangleDetector.cpp \ $$PWD/zxing/zxing/common/detector/MonochromeRectangleDetector.cpp \ $$PWD/zxing/zxing/common/reedsolomon/ReedSolomonException.cpp \ $$PWD/zxing/zxing/common/reedsolomon/ReedSolomonDecoder.cpp \ $$PWD/zxing/zxing/common/reedsolomon/GenericGFPoly.cpp \ $$PWD/zxing/zxing/common/reedsolomon/GenericGF.cpp \ $$PWD/zxing/zxing/multi/MultipleBarcodeReader.cpp \ $$PWD/zxing/zxing/multi/GenericMultipleBarcodeReader.cpp \ $$PWD/zxing/zxing/multi/ByQuadrantReader.cpp \ $$PWD/zxing/bigint/BigUnsignedInABase.cc \ $$PWD/zxing/bigint/BigUnsigned.cc \ $$PWD/zxing/bigint/BigIntegerUtils.cc \ $$PWD/zxing/bigint/BigIntegerAlgorithms.cc \ $$PWD/zxing/bigint/BigInteger.cc \ enable_decoder_1d_barcodes { DEFINES += ENABLE_DECODER_1D_BARCODES HEADERS += \ $$PWD/zxing/zxing/oned/UPCEReader.h \ $$PWD/zxing/zxing/oned/UPCEANReader.h \ $$PWD/zxing/zxing/oned/UPCEANExtensionSupport.h \ $$PWD/zxing/zxing/oned/UPCEANExtension2Support.h \ $$PWD/zxing/zxing/oned/UPCEANExtension5Support.h \ $$PWD/zxing/zxing/oned/UPCAReader.h \ $$PWD/zxing/zxing/oned/OneDResultPoint.h \ $$PWD/zxing/zxing/oned/OneDReader.h \ $$PWD/zxing/zxing/oned/MultiFormatUPCEANReader.h \ $$PWD/zxing/zxing/oned/MultiFormatOneDReader.h \ $$PWD/zxing/zxing/oned/ITFReader.h \ $$PWD/zxing/zxing/oned/EAN13Reader.h \ $$PWD/zxing/zxing/oned/EAN8Reader.h \ $$PWD/zxing/zxing/oned/EANManufacturerOrgSupport.h \ $$PWD/zxing/zxing/oned/Code128Reader.h \ $$PWD/zxing/zxing/oned/Code39Reader.h \ $$PWD/zxing/zxing/oned/CodaBarReader.h \ $$PWD/zxing/zxing/oned/Code93Reader.h \ $$PWD/zxing/zxing/oned/rss/AbstractRSSReader.h \ $$PWD/zxing/zxing/oned/rss/DataCharacter.h \ $$PWD/zxing/zxing/oned/rss/FinderPattern.h \ $$PWD/zxing/zxing/oned/rss/Pair.h \ $$PWD/zxing/zxing/oned/rss/RSS14Reader.h \ $$PWD/zxing/zxing/oned/rss/RSSUtils.h \ $$PWD/zxing/zxing/oned/rss/expanded/decoders/AbstractExpandedDecoder.h \ $$PWD/zxing/zxing/oned/rss/expanded/decoders/AI013103decoder.h \ $$PWD/zxing/zxing/oned/rss/expanded/decoders/AI01320xDecoder.h \ $$PWD/zxing/zxing/oned/rss/expanded/decoders/AI01392xDecoder.h \ $$PWD/zxing/zxing/oned/rss/expanded/decoders/AI01393xDecoder.h \ $$PWD/zxing/zxing/oned/rss/expanded/decoders/AI013x0x1xDecoder.h \ $$PWD/zxing/zxing/oned/rss/expanded/decoders/AI013x0xDecoder.h \ $$PWD/zxing/zxing/oned/rss/expanded/decoders/AI01AndOtherAIs.h \ $$PWD/zxing/zxing/oned/rss/expanded/decoders/AI01decoder.h \ $$PWD/zxing/zxing/oned/rss/expanded/decoders/AI01weightDecoder.h \ $$PWD/zxing/zxing/oned/rss/expanded/decoders/AnyAIDecoder.h \ $$PWD/zxing/zxing/oned/rss/expanded/decoders/BlockParsedResult.h \ $$PWD/zxing/zxing/oned/rss/expanded/decoders/CurrentParsingState.h \ $$PWD/zxing/zxing/oned/rss/expanded/decoders/DecodedChar.h \ $$PWD/zxing/zxing/oned/rss/expanded/decoders/DecodedInformation.h \ $$PWD/zxing/zxing/oned/rss/expanded/decoders/DecodedNumeric.h \ $$PWD/zxing/zxing/oned/rss/expanded/decoders/DecodedObject.h \ $$PWD/zxing/zxing/oned/rss/expanded/decoders/FieldParser.h \ $$PWD/zxing/zxing/oned/rss/expanded/decoders/GeneralAppIdDecoder.h \ $$PWD/zxing/zxing/oned/rss/expanded/BitArrayBuilder.h \ $$PWD/zxing/zxing/oned/rss/expanded/ExpandedPair.h \ $$PWD/zxing/zxing/oned/rss/expanded/ExpandedRow.h \ $$PWD/zxing/zxing/oned/rss/expanded/RSSExpandedReader.h SOURCES += \ $$PWD/zxing/zxing/oned/UPCEReader.cpp \ $$PWD/zxing/zxing/oned/UPCEANReader.cpp \ $$PWD/zxing/zxing/oned/UPCEANExtensionSupport.cpp \ $$PWD/zxing/zxing/oned/UPCEANExtension2Support.cpp \ $$PWD/zxing/zxing/oned/UPCEANExtension5Support.cpp \ $$PWD/zxing/zxing/oned/UPCAReader.cpp \ $$PWD/zxing/zxing/oned/OneDResultPoint.cpp \ $$PWD/zxing/zxing/oned/OneDReader.cpp \ $$PWD/zxing/zxing/oned/MultiFormatUPCEANReader.cpp \ $$PWD/zxing/zxing/oned/MultiFormatOneDReader.cpp \ $$PWD/zxing/zxing/oned/ITFReader.cpp \ $$PWD/zxing/zxing/oned/EAN13Reader.cpp \ $$PWD/zxing/zxing/oned/EAN8Reader.cpp \ $$PWD/zxing/zxing/oned/EANManufacturerOrgSupport.cpp \ $$PWD/zxing/zxing/oned/Code128Reader.cpp \ $$PWD/zxing/zxing/oned/Code39Reader.cpp \ $$PWD/zxing/zxing/oned/CodaBarReader.cpp \ $$PWD/zxing/zxing/oned/Code93Reader.cpp \ $$PWD/zxing/zxing/oned/rss/AbstractRSSReader.cpp \ $$PWD/zxing/zxing/oned/rss/DataCharacter.cpp \ $$PWD/zxing/zxing/oned/rss/FinderPattern.cpp \ $$PWD/zxing/zxing/oned/rss/Pair.cpp \ $$PWD/zxing/zxing/oned/rss/RSS14Reader.cpp \ $$PWD/zxing/zxing/oned/rss/RSSUtils.cpp \ $$PWD/zxing/zxing/oned/rss/expanded/BitArrayBuilder.cpp \ $$PWD/zxing/zxing/oned/rss/expanded/ExpandedPair.cpp \ $$PWD/zxing/zxing/oned/rss/expanded/ExpandedRow.cpp \ $$PWD/zxing/zxing/oned/rss/expanded/RSSExpandedReader.cpp \ $$PWD/zxing/zxing/oned/rss/expanded/decoders/AbstractExpandedDecoder.cpp \ $$PWD/zxing/zxing/oned/rss/expanded/decoders/AI01AndOtherAIs.cpp \ $$PWD/zxing/zxing/oned/rss/expanded/decoders/AI01decoder.cpp \ $$PWD/zxing/zxing/oned/rss/expanded/decoders/AI01weightDecoder.cpp \ $$PWD/zxing/zxing/oned/rss/expanded/decoders/AI013x0x1xDecoder.cpp \ $$PWD/zxing/zxing/oned/rss/expanded/decoders/AI013x0xDecoder.cpp \ $$PWD/zxing/zxing/oned/rss/expanded/decoders/AI01320xDecoder.cpp \ $$PWD/zxing/zxing/oned/rss/expanded/decoders/AI01392xDecoder.cpp \ $$PWD/zxing/zxing/oned/rss/expanded/decoders/AI01393xDecoder.cpp \ $$PWD/zxing/zxing/oned/rss/expanded/decoders/AI013103decoder.cpp \ $$PWD/zxing/zxing/oned/rss/expanded/decoders/AnyAIDecoder.cpp \ $$PWD/zxing/zxing/oned/rss/expanded/decoders/BlockParsedResult.cpp \ $$PWD/zxing/zxing/oned/rss/expanded/decoders/CurrentParsingState.cpp \ $$PWD/zxing/zxing/oned/rss/expanded/decoders/DecodedChar.cpp \ $$PWD/zxing/zxing/oned/rss/expanded/decoders/DecodedInformation.cpp \ $$PWD/zxing/zxing/oned/rss/expanded/decoders/DecodedNumeric.cpp \ $$PWD/zxing/zxing/oned/rss/expanded/decoders/DecodedObject.cpp \ $$PWD/zxing/zxing/oned/rss/expanded/decoders/FieldParser.cpp \ $$PWD/zxing/zxing/oned/rss/expanded/decoders/GeneralAppIdDecoder.cpp } enable_decoder_qr_code { DEFINES += ENABLE_DECODER_QR_CODE CONFIG += enable_generic_qrcode HEADERS += \ $$PWD/zxing/zxing/qrcode/decoder/Decoder.h \ $$PWD/zxing/zxing/qrcode/decoder/DecodedBitStreamParser.h \ $$PWD/zxing/zxing/qrcode/decoder/DataMask.h \ $$PWD/zxing/zxing/qrcode/decoder/DataBlock.h \ $$PWD/zxing/zxing/qrcode/decoder/BitMatrixParser.h \ $$PWD/zxing/zxing/qrcode/detector/FinderPatternInfo.h \ $$PWD/zxing/zxing/qrcode/detector/FinderPatternFinder.h \ $$PWD/zxing/zxing/qrcode/detector/FinderPattern.h \ $$PWD/zxing/zxing/qrcode/detector/Detector.h \ $$PWD/zxing/zxing/qrcode/detector/AlignmentPatternFinder.h \ $$PWD/zxing/zxing/qrcode/detector/AlignmentPattern.h \ $$PWD/zxing/zxing/multi/qrcode/QRCodeMultiReader.h \ $$PWD/zxing/zxing/multi/qrcode/detector/MultiFinderPatternFinder.h \ $$PWD/zxing/zxing/multi/qrcode/detector/MultiDetector.h \ SOURCES += \ $$PWD/zxing/zxing/qrcode/decoder/QRBitMatrixParser.cpp \ $$PWD/zxing/zxing/qrcode/decoder/QRDataBlock.cpp \ $$PWD/zxing/zxing/qrcode/decoder/QRDataMask.cpp \ $$PWD/zxing/zxing/qrcode/decoder/QRDecodedBitStreamParser.cpp \ $$PWD/zxing/zxing/qrcode/decoder/QRDecoder.cpp \ $$PWD/zxing/zxing/qrcode/detector/QRAlignmentPattern.cpp \ $$PWD/zxing/zxing/qrcode/detector/QRAlignmentPatternFinder.cpp \ $$PWD/zxing/zxing/qrcode/detector/QRDetector.cpp \ $$PWD/zxing/zxing/qrcode/detector/QRFinderPattern.cpp \ $$PWD/zxing/zxing/qrcode/detector/QRFinderPatternFinder.cpp \ $$PWD/zxing/zxing/qrcode/detector/QRFinderPatternInfo.cpp \ $$PWD/zxing/zxing/qrcode/QRCodeReader.cpp \ $$PWD/zxing/zxing/multi/qrcode/QRCodeMultiReader.cpp \ $$PWD/zxing/zxing/multi/qrcode/detector/MultiFinderPatternFinder.cpp \ $$PWD/zxing/zxing/multi/qrcode/detector/MultiDetector.cpp } enable_encoder_qr_code { DEFINES += ENABLE_ENCODER_QR_CODE CONFIG += enable_generic_qrcode \ enable_encoder_generic HEADERS += \ $$PWD/zxing/zxing/qrcode/encoder/BlockPair.h \ $$PWD/zxing/zxing/qrcode/encoder/ByteMatrix.h \ $$PWD/zxing/zxing/qrcode/encoder/Encoder.h \ $$PWD/zxing/zxing/qrcode/encoder/MaskUtil.h \ $$PWD/zxing/zxing/qrcode/encoder/MatrixUtil.h \ $$PWD/zxing/zxing/qrcode/encoder/QRCode.h SOURCES += \ $$PWD/zxing/zxing/qrcode/encoder/ByteMatrix.cpp \ $$PWD/zxing/zxing/qrcode/encoder/QREncoder.cpp \ $$PWD/zxing/zxing/qrcode/encoder/MaskUtil.cpp \ $$PWD/zxing/zxing/qrcode/encoder/MatrixUtil.cpp \ $$PWD/zxing/zxing/qrcode/encoder/QRCode.cpp } enable_decoder_data_matrix { DEFINES += ENABLE_DECODER_DATA_MATRIX HEADERS += \ $$PWD/zxing/zxing/datamatrix/Version.h \ $$PWD/zxing/zxing/datamatrix/DataMatrixReader.h \ $$PWD/zxing/zxing/datamatrix/decoder/Decoder.h \ $$PWD/zxing/zxing/datamatrix/decoder/DecodedBitStreamParser.h \ $$PWD/zxing/zxing/datamatrix/decoder/DataBlock.h \ $$PWD/zxing/zxing/datamatrix/decoder/BitMatrixParser.h \ $$PWD/zxing/zxing/datamatrix/detector/DetectorException.h \ $$PWD/zxing/zxing/datamatrix/detector/Detector.h \ $$PWD/zxing/zxing/datamatrix/detector/CornerPoint.h SOURCES += \ $$PWD/zxing/zxing/datamatrix/DataMatrixReader.cpp \ $$PWD/zxing/zxing/datamatrix/DataMatrixVersion.cpp \ $$PWD/zxing/zxing/datamatrix/decoder/DataMatrixDecoder.cpp \ $$PWD/zxing/zxing/datamatrix/decoder/DataMatrixBitMatrixParser.cpp \ $$PWD/zxing/zxing/datamatrix/decoder/DataMatrixDataBlock.cpp \ $$PWD/zxing/zxing/datamatrix/decoder/DataMatrixDecodedBitStreamParser.cpp \ $$PWD/zxing/zxing/datamatrix/detector/DataMatrixCornerPoint.cpp \ $$PWD/zxing/zxing/datamatrix/detector/DataMatrixDetector.cpp \ $$PWD/zxing/zxing/datamatrix/detector/DataMatrixDetectorException.cpp } enable_decoder_aztec { DEFINES += ENABLE_DECODER_AZTEC HEADERS += \ $$PWD/zxing/zxing/aztec/AztecReader.h \ $$PWD/zxing/zxing/aztec/AztecDetectorResult.h \ $$PWD/zxing/zxing/aztec/decoder/Decoder.h \ $$PWD/zxing/zxing/aztec/detector/Detector.h SOURCES += \ $$PWD/zxing/zxing/aztec/AztecReader.cpp \ $$PWD/zxing/zxing/aztec/AztecDetectorResult.cpp \ $$PWD/zxing/zxing/aztec/decoder/AztecDecoder.cpp \ $$PWD/zxing/zxing/aztec/detector/AztecDetector.cpp } enable_decoder_pdf17 { DEFINES += ENABLE_DECODER_PDF17 HEADERS += \ $$PWD/zxing/zxing/pdf417/decoder/ec/ErrorCorrection.h \ $$PWD/zxing/zxing/pdf417/decoder/ec/ModulusGF.h \ $$PWD/zxing/zxing/pdf417/decoder/ec/ModulusPoly.h \ $$PWD/zxing/zxing/pdf417/decoder/BitMatrixParser.h \ $$PWD/zxing/zxing/pdf417/decoder/DecodedBitStreamParser.h \ $$PWD/zxing/zxing/pdf417/decoder/Decoder.h \ $$PWD/zxing/zxing/pdf417/detector/Detector.h \ $$PWD/zxing/zxing/pdf417/detector/LinesSampler.h \ $$PWD/zxing/zxing/pdf417/PDF417Reader.h SOURCES += \ $$PWD/zxing/zxing/pdf417/decoder/ec/ErrorCorrection.cpp \ $$PWD/zxing/zxing/pdf417/decoder/ec/ModulusGF.cpp \ $$PWD/zxing/zxing/pdf417/decoder/ec/ModulusPoly.cpp \ $$PWD/zxing/zxing/pdf417/decoder/PDF417BitMatrixParser.cpp \ $$PWD/zxing/zxing/pdf417/decoder/PDF417DecodedBitStreamParser.cpp \ $$PWD/zxing/zxing/pdf417/decoder/PDF417Decoder.cpp \ $$PWD/zxing/zxing/pdf417/detector/PDF417Detector.cpp \ $$PWD/zxing/zxing/pdf417/detector/LinesSampler.cpp \ $$PWD/zxing/zxing/pdf417/PDF417Reader.cpp } enable_generic_qrcode { CONFIG += enable_encoder_generic HEADERS += \ $$PWD/zxing/zxing/qrcode/Version.h \ $$PWD/zxing/zxing/qrcode/QRCodeReader.h \ $$PWD/zxing/zxing/qrcode/FormatInformation.h \ $$PWD/zxing/zxing/qrcode/ErrorCorrectionLevel.h \ $$PWD/zxing/zxing/qrcode/decoder/Mode.h SOURCES += \ $$PWD/zxing/zxing/qrcode/QRVersion.cpp \ $$PWD/zxing/zxing/qrcode/QRFormatInformation.cpp \ $$PWD/zxing/zxing/qrcode/QRErrorCorrectionLevel.cpp \ $$PWD/zxing/zxing/qrcode/decoder/QRMode.cpp \ } enable_encoder_generic { DEFINES += ENABLE_ENCODER_GENERIC HEADERS += \ $$PWD/zxing/zxing/EncodeHint.h \ $$PWD/zxing/zxing/UnsupportedEncodingException.h \ $$PWD/zxing/zxing/common/reedsolomon/ReedSolomonEncoder.h \ SOURCES += \ $$PWD/zxing/zxing/EncodeHint.cpp \ $$PWD/zxing/zxing/UnsupportedEncodingException.cpp \ $$PWD/zxing/zxing/common/reedsolomon/ReedSolomonEncoder.cpp } qzxing_multimedia { QT += multimedia CONFIG += qzxing_qml DEFINES += QZXING_MULTIMEDIA PRL_EXPORT_DEFINES += QZXING_MULTIMEDIA HEADERS += \ $$PWD/QZXingFilter.h SOURCES += \ $$PWD/QZXingFilter.cpp } qzxing_qml { greaterThan(QT_VERSION, 4.7): lessThan(QT_VERSION, 5.0): QT += declarative greaterThan(QT_MAJOR_VERSION, 4): QT += quick DEFINES += QZXING_QML PRL_EXPORT_DEFINES += QZXING_QML HEADERS += \ $$PWD/QZXingImageProvider.h SOURCES += \ $$PWD/QZXingImageProvider.cpp } symbian { TARGET.UID3 = 0xE618743C TARGET.EPOCALLOWDLLDATA = 1 #TARGET.CAPABILITY = All -TCB -AllFiles -DRM TARGET.CAPABILITY += NetworkServices \ ReadUserData \ WriteUserData \ LocalServices \ UserEnvironment \ Location } !symbian { isEmpty(PREFIX) { maemo5 { PREFIX = /opt/usr } else { PREFIX = /usr } } DEFINES += NOFMAXL # Installation headers.files = $$PWD/QZXing.h $$PWD/QZXing_global.h headers.path = $$PREFIX/include target.path = $$PREFIX/lib INSTALLS += headers target # pkg-config support CONFIG += create_pc create_prl no_install_prl QMAKE_PKGCONFIG_DESTDIR = pkgconfig QMAKE_PKGCONFIG_LIBDIR = ${prefix}/lib QMAKE_PKGCONFIG_INCDIR = ${prefix}/include unix:QMAKE_CLEAN += -r pkgconfig lib$${TARGET}.prl } win32-msvc*{ DEFINES += __STDC_LIMIT_MACROS INCLUDEPATH += $$PWD/zxing/win32/zxing \ $$PWD/zxing/win32/zxing/msvc HEADERS += $$PWD/zxing/win32/zxing/msvc/stdint.h \ $$PWD/zxing/win32/zxing/iconv.h SOURCES += $$PWD/zxing/win32/zxing/win_iconv.c } win32-g++{ INCLUDEPATH += $$PWD/zxing/win32/zxing HEADERS += $$PWD/zxing/win32/zxing/iconv.h SOURCES += $$PWD/zxing/win32/zxing/win_iconv.c } !win32{ DEFINES += NO_ICONV } winrt { DEFINES += NO_ICONV } yubioath-desktop/QZXing/QZXing.cpp000066400000000000000000000537331412677075700174500ustar00rootroot00000000000000#include "QZXing.h" #include #include #include #include #include #include #include #include #include "CameraImageWrapper.h" #include "ImageHandler.h" #include #include #include #include #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) #include #else #include #endif #include #ifdef ENABLE_ENCODER_QR_CODE #include #include #endif // ENABLE_ENCODER_QR_CODE #ifdef QZXING_MULTIMEDIA #include "QZXingFilter.h" #endif //QZXING_MULTIMEDIA #ifdef QZXING_QML #if QT_VERSION >= 0x040700 && QT_VERSION < 0x050000 #include #elif QT_VERSION >= 0x050000 #include #endif #include #include #include #include "QZXingImageProvider.h" #endif //QZXING_QML using namespace zxing; QZXing::QZXing(QObject *parent) : QObject(parent), tryHarder_(false), lastDecodeOperationSucceded_(false) { decoder = new MultiFormatReader(); setDecoder(DecoderFormat_QR_CODE | DecoderFormat_DATA_MATRIX | DecoderFormat_UPC_E | DecoderFormat_UPC_A | DecoderFormat_UPC_EAN_EXTENSION | DecoderFormat_RSS_14 | DecoderFormat_RSS_EXPANDED | DecoderFormat_PDF_417 | DecoderFormat_MAXICODE | DecoderFormat_EAN_8 | DecoderFormat_EAN_13 | DecoderFormat_CODE_128 | DecoderFormat_CODE_93 | DecoderFormat_CODE_39 | DecoderFormat_CODABAR | DecoderFormat_ITF | DecoderFormat_Aztec); setTryHarderBehaviour(TryHarderBehaviour_Rotate | TryHarderBehaviour_ThoroughScanning); setSourceFilterType(SourceFilter_ImageNormal); imageHandler = new ImageHandler(); } QZXing::~QZXing() { if (imageHandler) delete imageHandler; if (decoder) delete decoder; } QZXing::QZXing(QZXing::DecoderFormat decodeHints, QObject *parent) : QObject(parent), lastDecodeOperationSucceded_(false) { decoder = new MultiFormatReader(); imageHandler = new ImageHandler(); setDecoder(decodeHints); setSourceFilterType(SourceFilter_ImageNormal); } #ifdef QZXING_QML #if QT_VERSION >= 0x040700 void QZXing::registerQMLTypes() { qmlRegisterType("QZXing", 3, 1, "QZXing"); #ifdef QZXING_MULTIMEDIA qmlRegisterType("QZXing", 3, 1, "QZXingFilter"); #endif //QZXING_MULTIMEDIA } #endif //QT_VERSION >= Qt 4.7 #if QT_VERSION >= 0x050000 void QZXing::registerQMLImageProvider(QQmlEngine& engine) { engine.addImageProvider(QLatin1String("QZXing"), new QZXingImageProvider()); } #endif //QT_VERSION >= Qt 5.0 #endif //QZXING_QML void QZXing::setTryHarder(bool tryHarder) { tryHarder_ = tryHarder; } bool QZXing::getTryHarder() { return tryHarder_; } void QZXing::setTryHarderBehaviour(QZXing::TryHarderBehaviourType tryHarderBehaviour) { tryHarderType = tryHarderBehaviour; } QZXing::TryHarderBehaviourType QZXing::getTryHarderBehaviour() { return tryHarderType; } void QZXing::setSourceFilterType(QZXing::SourceFilterType sourceFilter) { imageSourceFilter = sourceFilter; } QZXing::SourceFilterType QZXing::getSourceFilterType() { return imageSourceFilter; } void QZXing::setAllowedExtensions(const QVariantList& extensions) { std::set allowedExtensions; for (const QVariant& extension: extensions) { allowedExtensions.insert(extension.toInt()); } allowedExtensions_ = allowedExtensions; } QVariantList QZXing::getAllowedExtensions() { QVariantList allowedExtensions; for (const int& extension: allowedExtensions_) { allowedExtensions << extension; } return allowedExtensions; } QString QZXing::decoderFormatToString(int fmt) { switch (fmt) { case DecoderFormat_Aztec: return "AZTEC"; case DecoderFormat_CODABAR: return "CODABAR"; case DecoderFormat_CODE_39: return "CODE_39"; case DecoderFormat_CODE_93: return "CODE_93"; case DecoderFormat_CODE_128: return "CODE_128"; case DecoderFormat_CODE_128_GS1: return "CODE_128_GS1"; case DecoderFormat_DATA_MATRIX: return "DATA_MATRIX"; case DecoderFormat_EAN_8: return "EAN_8"; case DecoderFormat_EAN_13: return "EAN_13"; case DecoderFormat_ITF: return "ITF"; case DecoderFormat_MAXICODE: return "MAXICODE"; case DecoderFormat_PDF_417: return "PDF_417"; case DecoderFormat_QR_CODE: return "QR_CODE"; case DecoderFormat_RSS_14: return "RSS_14"; case DecoderFormat_RSS_EXPANDED: return "RSS_EXPANDED"; case DecoderFormat_UPC_A: return "UPC_A"; case DecoderFormat_UPC_E: return "UPC_E"; case DecoderFormat_UPC_EAN_EXTENSION: return "UPC_EAN_EXTENSION"; } // switch return QString(); } QString QZXing::foundedFormat() const { return decodedFormat; } QString QZXing::charSet() const { return charSet_; } bool QZXing::getLastDecodeOperationSucceded() { return lastDecodeOperationSucceded_; } QVariantMap QZXing::metadataToMap(const ResultMetadata &metadata) { QVariantMap obj; for (const ResultMetadata::Key &key: metadata.keys()) { QString keyName = QString::fromStdString(metadata.keyToString(key)); switch (key) { case ResultMetadata::ORIENTATION: case ResultMetadata::ISSUE_NUMBER: case ResultMetadata::STRUCTURED_APPEND_SEQUENCE: case ResultMetadata::STRUCTURED_APPEND_CODE_COUNT: case ResultMetadata::STRUCTURED_APPEND_PARITY: obj[keyName] = QVariant(metadata.getInt(key)); break; case ResultMetadata::ERROR_CORRECTION_LEVEL: case ResultMetadata::SUGGESTED_PRICE: case ResultMetadata::POSSIBLE_COUNTRY: case ResultMetadata::UPC_EAN_EXTENSION: obj[keyName] = QVariant(metadata.getString(key).c_str()); break; case ResultMetadata::OTHER: case ResultMetadata::PDF417_EXTRA_METADATA: case ResultMetadata::BYTE_SEGMENTS: break; } } return obj; } void QZXing::setDecoder(const uint &hint) { unsigned int newHints = 0; if(hint & DecoderFormat_Aztec) newHints |= DecodeHints::AZTEC_HINT; if(hint & DecoderFormat_CODABAR) newHints |= DecodeHints::CODABAR_HINT; if(hint & DecoderFormat_CODE_39) newHints |= DecodeHints::CODE_39_HINT; if(hint & DecoderFormat_CODE_93) newHints |= DecodeHints::CODE_93_HINT; if(hint & DecoderFormat_CODE_128) newHints |= DecodeHints::CODE_128_HINT; if(hint & DecoderFormat_DATA_MATRIX) newHints |= DecodeHints::DATA_MATRIX_HINT; if(hint & DecoderFormat_EAN_8) newHints |= DecodeHints::EAN_8_HINT; if(hint & DecoderFormat_EAN_13) newHints |= DecodeHints::EAN_13_HINT; if(hint & DecoderFormat_ITF) newHints |= DecodeHints::ITF_HINT; if(hint & DecoderFormat_MAXICODE) newHints |= DecodeHints::MAXICODE_HINT; if(hint & DecoderFormat_PDF_417) newHints |= DecodeHints::PDF_417_HINT; if(hint & DecoderFormat_QR_CODE) newHints |= DecodeHints::QR_CODE_HINT; if(hint & DecoderFormat_RSS_14) newHints |= DecodeHints::RSS_14_HINT; if(hint & DecoderFormat_RSS_EXPANDED) newHints |= DecodeHints::RSS_EXPANDED_HINT; if(hint & DecoderFormat_UPC_A) newHints |= DecodeHints::UPC_A_HINT; if(hint & DecoderFormat_UPC_E) newHints |= DecodeHints::UPC_E_HINT; if(hint & DecoderFormat_UPC_EAN_EXTENSION) newHints |= DecodeHints::UPC_EAN_EXTENSION_HINT; if(hint & DecoderFormat_CODE_128_GS1) { newHints |= DecodeHints::CODE_128_HINT; newHints |= DecodeHints::ASSUME_GS1; } enabledDecoders = newHints; emit enabledFormatsChanged(); } /*! * \brief getTagRec - returns rectangle containing the tag. * * To be able display tag rectangle regardless of the size of the bit matrix rect is in related coordinates [0; 1]. * \param resultPoints * \param bitMatrix * \return */ QRectF getTagRect(const ArrayRef > &resultPoints, const Ref &bitMatrix) { if (resultPoints->size() < 2) return QRectF(); int matrixWidth = bitMatrix->getWidth(); int matrixHeight = bitMatrix->getHeight(); // 1D barcode if (resultPoints->size() == 2) { WhiteRectangleDetector detector(bitMatrix); std::vector > resultRectPoints = detector.detect(); if (resultRectPoints.size() != 4) return QRectF(); qreal xMin = qreal(resultPoints[0]->getX()); qreal xMax = xMin; for (int i = 1; i < resultPoints->size(); ++i) { qreal x = qreal(resultPoints[i]->getX()); if (x < xMin) xMin = x; if (x > xMax) xMax = x; } qreal yMin = qreal(resultRectPoints[0]->getY()); qreal yMax = yMin; for (size_t i = 1; i < resultRectPoints.size(); ++i) { qreal y = qreal(resultRectPoints[i]->getY()); if (y < yMin) yMin = y; if (y > yMax) yMax = y; } return QRectF(QPointF(xMin / matrixWidth, yMax / matrixHeight), QPointF(xMax / matrixWidth, yMin / matrixHeight)); } // 2D QR code if (resultPoints->size() == 4) { qreal xMin = qreal(resultPoints[0]->getX()); qreal xMax = xMin; qreal yMin = qreal(resultPoints[0]->getY()); qreal yMax = yMin; for (int i = 1; i < resultPoints->size(); ++i) { qreal x = qreal(resultPoints[i]->getX()); qreal y = qreal(resultPoints[i]->getY()); if (x < xMin) xMin = x; if (x > xMax) xMax = x; if (y < yMin) yMin = y; if (y > yMax) yMax = y; } return QRectF(QPointF(xMin / matrixWidth, yMax / matrixHeight), QPointF(xMax / matrixWidth, yMin / matrixHeight)); } return QRectF(); } QString QZXing::decodeImage(const QImage &image, int maxWidth, int maxHeight, bool smoothTransformation) { //qDebug() << "Start decoding"; QElapsedTimer t; t.start(); processingTime = -1; Ref res; emit decodingStarted(); if(image.isNull()) { emit decodingFinished(false); processingTime = t.elapsed(); //qDebug() << "End decoding 1"; return ""; } CameraImageWrapper *ciw = ZXING_NULLPTR; if ((maxWidth > 0) || (maxHeight > 0)) ciw = CameraImageWrapper::Factory(image, maxWidth, maxHeight, smoothTransformation); else ciw = CameraImageWrapper::Factory(image, 999, 999, true); QString errorMessage = "Unknown"; Ref imageRefOriginal = Ref(ciw); Ref imageRef = imageRefOriginal; Ref binz; Ref bb; size_t numberOfIterations = 0; if (imageSourceFilter & SourceFilter_ImageNormal) numberOfIterations++; if (imageSourceFilter & SourceFilter_ImageInverted) numberOfIterations++; //qDebug() << "Iterations: "<< numberOfIterations << ", sourceFilter: " << imageSourceFilter; for(size_t i=0; i((LuminanceSource*)(new InvertedLuminanceSource(imageRefOriginal))); } binz = Ref( new GlobalHistogramBinarizer(imageRef) ); bb = Ref( new BinaryBitmap(binz) ); DecodeHints hints(static_cast(enabledDecoders)); if (hints.containsFormat(BarcodeFormat::UPC_EAN_EXTENSION)) { hints.setAllowedEanExtensions(allowedExtensions_); } lastDecodeOperationSucceded_ = false; try { //qDebug() << "Decoding phase 1: started"; res = decoder->decode(bb, hints); processingTime = t.elapsed(); lastDecodeOperationSucceded_ = true; break; } catch(zxing::Exception &/*e*/){ //qDebug() << "Decoding phase 1: failed"; } if(!lastDecodeOperationSucceded_ && tryHarder_ && (tryHarderType & TryHarderBehaviour_ThoroughScanning)) { //qDebug() << "Decoding phase 2, thorought scan: starting"; hints.setTryHarder(true); if(hints.containsFormat(BarcodeFormat::UPC_EAN_EXTENSION) && !allowedExtensions_.empty() && !(hints & DecodeHints::PRODUCT_HINT).isEmpty() ) hints.setAllowedEanExtensions(std::set()); try { res = decoder->decode(bb, hints); processingTime = t.elapsed(); lastDecodeOperationSucceded_ = true; break; } catch(zxing::Exception &/*e*/) { //qDebug() << "Decoding phase 2, thorought scan: failed"; } } if (!lastDecodeOperationSucceded_&& tryHarder_ && (tryHarderType & TryHarderBehaviour_Rotate) && bb->isRotateSupported()) { Ref bbTmp = bb; //qDebug() << "Decoding phase 2, rotate: starting"; hints.setTryHarder(true); for (int i=0; (i<3 && !lastDecodeOperationSucceded_); i++) { Ref rotatedImage(bbTmp->rotateCounterClockwise()); bbTmp = rotatedImage; try { res = decoder->decode(rotatedImage, hints); processingTime = t.elapsed(); lastDecodeOperationSucceded_ = true; break; } catch(zxing::Exception &/*e*/) { //qDebug() << "Decoding phase 2, rotate: failed"; } } } } catch(zxing::Exception &e) { errorMessage = QString(e.what()); //qDebug() << "Decoding failed: " << errorMessage; } } if (lastDecodeOperationSucceded_) { //qDebug() << "Decoding succeeded."; QString string = QString(res->getText()->getText().c_str()); if (!string.isEmpty() && (string.length() > 0)) { int fmt = res->getBarcodeFormat().value; decodedFormat = decoderFormatToString(1<getCharSet()); //qDebug() << "charSet_: " << charSet_; if (!charSet_.isEmpty()) { #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) QTextCodec *codec = QTextCodec::codecForName(res->getCharSet().c_str()); if (codec) string = codec->toUnicode(res->getText()->getText().c_str()); #else QStringDecoder decoder(res->getCharSet().c_str()); if(decoder.isValid()) { string = decoder.decode(QByteArray(res->getText()->getText().c_str())); } #endif } emit tagFound(string); emit tagFoundAdvanced(string, decodedFormat, charSet_); QVariantMap metadataMap = metadataToMap(res->getMetadata()); emit tagFoundAdvanced(string, decodedFormat, charSet_, metadataMap); try { const QRectF rect = getTagRect(res->getResultPoints(), binz->getBlackMatrix()); emit tagFoundAdvanced(string, decodedFormat, charSet_, rect); }catch(zxing::Exception &/*e*/){} } emit decodingFinished(true); //qDebug() << "End decoding 2"; return string; } emit error(errorMessage); emit decodingFinished(false); processingTime = t.elapsed(); //qDebug() << "End decoding 3"; return ""; } QString QZXing::decodeImageFromFile(const QString& imageFilePath, int maxWidth, int maxHeight, bool smoothTransformation) { // used to have a check if this image exists // but was removed because if the image file path doesn't point to a valid image // then the QImage::isNull will return true and the decoding will fail eitherway. const QString header = "file://"; QString filePath = imageFilePath; if(imageFilePath.startsWith(header)) filePath = imageFilePath.right(imageFilePath.size() - header.size()); QUrl imageUrl = QUrl::fromLocalFile(filePath); QImage tmpImage = QImage(imageUrl.toLocalFile()); return decodeImage(tmpImage, maxWidth, maxHeight, smoothTransformation); } QString QZXing::decodeImageQML(QObject *item) { return decodeSubImageQML(item); } QString QZXing::decodeSubImageQML(QObject *item, const int offsetX, const int offsetY, const int width, const int height) { if(item == ZXING_NULLPTR) { processingTime = 0; emit decodingFinished(false); return ""; } QImage img = imageHandler->extractQImage(item, offsetX, offsetY, width, height); return decodeImage(img); } QString QZXing::decodeImageQML(const QUrl &imageUrl) { return decodeSubImageQML(imageUrl); } QString QZXing::decodeSubImageQML(const QUrl &imageUrl, const int offsetX, const int offsetY, const int width, const int height) { #ifdef QZXING_QML QString imagePath = imageUrl.path(); imagePath = imagePath.trimmed(); QImage img; if (imageUrl.scheme() == "image") { if (imagePath.startsWith("/")) imagePath = imagePath.right(imagePath.length() - 1); QQmlEngine *engine = QQmlEngine::contextForObject(this)->engine(); QQuickImageProvider *imageProvider = dynamic_cast(engine->imageProvider(imageUrl.host())); QSize imgSize; img = imageProvider->requestImage(imagePath, &imgSize, QSize()); } else { QFileInfo fileInfo(imagePath); if (!fileInfo.exists()) { qDebug() << "[decodeSubImageQML()] The file" << imagePath << "does not exist."; emit decodingFinished(false); return ""; } img = QImage(imagePath); } if (offsetX || offsetY || width || height) img = img.copy(offsetX, offsetY, width, height); return decodeImage(img); #else Q_UNUSED(imageUrl); Q_UNUSED(offsetX); Q_UNUSED(offsetY); Q_UNUSED(width); Q_UNUSED(height); return decodeImage(QImage()); #endif //QZXING_QML } #ifdef ENABLE_ENCODER_GENERIC QImage QZXing::encodeData(const QString& data, const EncoderFormat encoderFormat, const QSize encoderImageSize, const EncodeErrorCorrectionLevel errorCorrectionLevel, const bool border, const bool transparent) { return encodeData(data, QZXingEncoderConfig(encoderFormat, encoderImageSize, errorCorrectionLevel, border, transparent)); } QImage QZXing::encodeData(const QString &data, const QZXingEncoderConfig &encoderConfig) { QImage image; try { switch (encoderConfig.format) { #ifdef ENABLE_ENCODER_QR_CODE case EncoderFormat_QR_CODE: { Ref barcode = qrcode::Encoder::encode( data.toStdWString(), encoderConfig.errorCorrectionLevel == EncodeErrorCorrectionLevel_H ? qrcode::ErrorCorrectionLevel::H : (encoderConfig.errorCorrectionLevel == EncodeErrorCorrectionLevel_Q ? qrcode::ErrorCorrectionLevel::Q : (encoderConfig.errorCorrectionLevel == EncodeErrorCorrectionLevel_M ? qrcode::ErrorCorrectionLevel::M : qrcode::ErrorCorrectionLevel::L))); Ref bytesRef = barcode->getMatrix(); const std::vector< std::vector >& bytes = bytesRef->getArray(); const int width = int(bytesRef->getWidth()) + (encoderConfig.border ? 2 : 0); const int height = int(bytesRef->getHeight()) + (encoderConfig.border ? 2 : 0); const QRgb black = qRgba(0, 0, 0, encoderConfig.transparent ? 0 : 255); const QRgb white = qRgba(255, 255, 255, 255); image = QImage(width, height, QImage::Format_ARGB32); image.fill(white); int offset = encoderConfig.border ? 1 : 0; for (size_t i=0; igetWidth(); ++i) { for (size_t j=0; jgetHeight(); ++j) { if (bytes[j][i]) { image.setPixel(offset+int(i), offset+int(j), black); } } } image = image.scaled(encoderConfig.imageSize); break; } #endif // ENABLE_ENCODER_QR_CODE case EncoderFormat_INVALID: break; } } catch (std::exception& e) { std::cout << "Error: " << e.what() << std::endl; } return image; } #endif // ENABLE_ENCODER_GENERIC int QZXing::getProcessTimeOfLastDecoding() { return processingTime; } uint QZXing::getEnabledFormats() const { return enabledDecoders; } yubioath-desktop/QZXing/QZXing.h000066400000000000000000000240011412677075700170770ustar00rootroot00000000000000/* * Copyright 2011 QZXing authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef QZXING_H #define QZXING_H #include "QZXing_global.h" #include #include #include #include #include #if QT_VERSION >= 0x050000 class QQmlEngine; #endif // forward declaration namespace zxing { class MultiFormatReader; class ResultMetadata; } class ImageHandler; #ifdef ENABLE_ENCODER_GENERIC struct QZXingEncoderConfig; #endif // ENABLE_ENCODER_GENERIC /** * A class containing a very very small subset of the ZXing library. * Created for ease of use. * * Anyone interested in using more technical stuff * from the ZXing library is welcomed to add/edit on free will. * * Regarding DecoderFormat, by default all of those are enabled */ class #ifndef DISABLE_LIBRARY_FEATURES QZXINGSHARED_EXPORT #endif QZXing : public QObject { Q_OBJECT Q_ENUMS(DecoderFormat) Q_ENUMS(TryHarderBehaviour) Q_ENUMS(SourceFilter) Q_PROPERTY(int processingTime READ getProcessTimeOfLastDecoding) Q_PROPERTY(uint enabledDecoders READ getEnabledFormats WRITE setDecoder NOTIFY enabledFormatsChanged) Q_PROPERTY(uint tryHarderType READ getTryHarderBehaviour WRITE setTryHarderBehaviour) Q_PROPERTY(uint imageSourceFilter READ getSourceFilterType WRITE setSourceFilterType) Q_PROPERTY(bool tryHarder READ getTryHarder WRITE setTryHarder) Q_PROPERTY(QVariantList allowedExtensions READ getAllowedExtensions WRITE setAllowedExtensions) public: /* * */ enum DecoderFormat { DecoderFormat_None = 0, DecoderFormat_Aztec = 1 << 1, DecoderFormat_CODABAR = 1 << 2, DecoderFormat_CODE_39 = 1 << 3, DecoderFormat_CODE_93 = 1 << 4, DecoderFormat_CODE_128 = 1 << 5, DecoderFormat_DATA_MATRIX = 1 << 6, DecoderFormat_EAN_8 = 1 << 7, DecoderFormat_EAN_13 = 1 << 8, DecoderFormat_ITF = 1 << 9, DecoderFormat_MAXICODE = 1 << 10, DecoderFormat_PDF_417 = 1 << 11, DecoderFormat_QR_CODE = 1 << 12, DecoderFormat_RSS_14 = 1 << 13, DecoderFormat_RSS_EXPANDED = 1 << 14, DecoderFormat_UPC_A = 1 << 15, DecoderFormat_UPC_E = 1 << 16, DecoderFormat_UPC_EAN_EXTENSION = 1 << 17, DecoderFormat_CODE_128_GS1 = 1 << 18 } ; typedef unsigned int DecoderFormatType; enum TryHarderBehaviour { TryHarderBehaviour_ThoroughScanning = 1 << 1, TryHarderBehaviour_Rotate = 1 << 2 }; typedef unsigned int TryHarderBehaviourType; enum SourceFilter { SourceFilter_ImageNormal = 1 << 1, SourceFilter_ImageInverted = 1 << 2 }; typedef unsigned int SourceFilterType; enum EncoderFormat { EncoderFormat_INVALID, EncoderFormat_QR_CODE }; enum EncodeErrorCorrectionLevel { EncodeErrorCorrectionLevel_L = 0, EncodeErrorCorrectionLevel_M, EncodeErrorCorrectionLevel_Q, EncodeErrorCorrectionLevel_H }; QZXing(QObject *parent = Q_NULLPTR); ~QZXing(); QZXing(DecoderFormat decodeHints, QObject *parent = Q_NULLPTR); #ifdef QZXING_QML #if QT_VERSION >= 0x040700 static void registerQMLTypes(); #endif //QT_VERSION >= Qt 4.7 #if QT_VERSION >= 0x050000 static void registerQMLImageProvider(QQmlEngine& engine); #endif //QT_VERSION >= Qt 5.0 #endif //QZXING_QML void setTryHarder(bool tryHarder); bool getTryHarder(); void setTryHarderBehaviour(TryHarderBehaviourType tryHarderBehaviour); TryHarderBehaviourType getTryHarderBehaviour(); void setSourceFilterType(SourceFilterType sourceFilter); SourceFilterType getSourceFilterType(); void setAllowedExtensions(const QVariantList& extensions); QVariantList getAllowedExtensions(); static QString decoderFormatToString(int fmt); Q_INVOKABLE QString foundedFormat() const; Q_INVOKABLE QString charSet() const; bool getLastDecodeOperationSucceded(); private: QVariantMap metadataToMap(const zxing::ResultMetadata& metadata); public slots: /** * The decoding function. Will try to decode the given image based on the enabled decoders. * If the image width is larger than maxWidth or image height is larger * than maxHeight then the image will be scaled down. Either way, in case of scaling, the aspect * ratio of the image will be kept. * * The smoothTransformation flag determines whether the transformation will be smooth or fast. * Smooth transformation provides better results but fast transformation is...faster. */ QString decodeImage(const QImage &image, int maxWidth = -1, int maxHeight = -1, bool smoothTransformation = false); /** * The decoding function. Will try to decode the given image based on the enabled decoders. * The input image is read from a local image file. */ QString decodeImageFromFile(const QString& imageFilePath, int maxWidth=-1, int maxHeight=-1, bool smoothTransformation = false); /** * The decoding function accessible from QML. (Suggested for Qt 4.x) */ QString decodeImageQML(QObject *item); /** * The decoding function accessible from QML. Able to set the decoding * of a portion of the image. (Suggested for Qt 4.x) */ QString decodeSubImageQML(QObject *item, const int offsetX = 0, const int offsetY = 0, const int width = 0, const int height = 0); /** * The decoding function accessible from QML. (Suggested for Qt 5.x) * Can be used to decode image from the Camera element preview by providing * the following string: image://camera/preview_1 */ QString decodeImageQML(const QUrl &imageUrl); /** * The decoding function accessible from QML. Able to set the decoding * of a portion of the image. * Can be used to decode image from the Camera element preview by providing * the following string: image://camera/preview_1 * (Suggested for Qt 5.x) */ QString decodeSubImageQML(const QUrl &imageUrl, const int offsetX = 0, const int offsetY = 0, const int width = 0, const int height = 0); #ifdef ENABLE_ENCODER_GENERIC /** * The main encoding function. Currently supports only Qr code encoding */ static QImage encodeData(const QString &data, const QZXingEncoderConfig &encoderConfig); /** * Overloaded function of encodeData. */ static QImage encodeData(const QString& data, const EncoderFormat encoderFormat = EncoderFormat_QR_CODE, const QSize encoderImageSize = QSize(240, 240), const EncodeErrorCorrectionLevel errorCorrectionLevel = EncodeErrorCorrectionLevel_L, const bool border = false, const bool transparent = false); #endif // ENABLE_ENCODER_GENERIC /** * Get the prossecing time in millisecond of the last decode operation. * Added mainly as a statistic measure. * Decoding operation fails, the processing time equals to -1. */ int getProcessTimeOfLastDecoding(); /** * Get the decoders that are enabled at the moment. * Returns a uint which is a bitwise OR of DecoderFormat enumeration values. */ uint getEnabledFormats() const; /** * Set the enabled decoders. * As argument it is possible to pass conjuction of decoders by using logic OR. * e.x. setDecoder ( DecoderFormat_QR_CODE | DecoderFormat_EAN_13 | DecoderFormat_CODE_39 ) */ void setDecoder(const uint &hint); signals: void decodingStarted(); void decodingFinished(bool succeeded); void enabledFormatsChanged(); void tagFound(QString tag); void tagFoundAdvanced(const QString &tag, const QString &format, const QString &charSet) const; void tagFoundAdvanced(const QString &tag, const QString &format, const QString &charSet, const QRectF &rect) const; void tagFoundAdvanced(const QString &tag, const QString &format, const QString &charSet, const QVariantMap &metadata) const; void error(QString msg); private: zxing::MultiFormatReader *decoder; DecoderFormatType enabledDecoders; TryHarderBehaviourType tryHarderType; SourceFilterType imageSourceFilter; ImageHandler *imageHandler; int processingTime; QString decodedFormat; QString charSet_; bool tryHarder_; bool lastDecodeOperationSucceded_; std::set allowedExtensions_; /** * If true, the decoding operation will take place at a different thread. */ bool isThreaded; }; #ifdef ENABLE_ENCODER_GENERIC typedef struct QZXingEncoderConfig { QZXing::EncoderFormat format; QSize imageSize; QZXing::EncodeErrorCorrectionLevel errorCorrectionLevel; bool border; bool transparent; QZXingEncoderConfig(const QZXing::EncoderFormat encoderFormat_ = QZXing::EncoderFormat_QR_CODE, const QSize encoderImageSize_ = QSize(240, 240), const QZXing::EncodeErrorCorrectionLevel errorCorrectionLevel_ = QZXing::EncodeErrorCorrectionLevel_L, const bool border_ = false, const bool transparent_ = false) : format(encoderFormat_), imageSize(encoderImageSize_), errorCorrectionLevel(errorCorrectionLevel_), border(border_), transparent(transparent_) {} } QZXingEncoderConfig; #endif // ENABLE_ENCODER_GENERIC #endif // QZXING_H yubioath-desktop/QZXing/QZXing.pri000066400000000000000000000005261412677075700174500ustar00rootroot00000000000000#For backward compatibility, when using QZXing.pri, enable the complete # library functionality CONFIG += enable_decoder_1d_barcodes \ enable_decoder_qr_code \ enable_decoder_data_matrix \ enable_decoder_aztec \ enable_decoder_pdf17 \ enable_encoder_qr_code include(./QZXing-components.pri) yubioath-desktop/QZXing/QZXing.pro000066400000000000000000000017441412677075700174610ustar00rootroot00000000000000# # Copyright 2011 QZXing authors # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # CONFIG += \ enable_decoder_1d_barcodes \ enable_decoder_qr_code \ enable_decoder_data_matrix \ enable_decoder_aztec \ enable_decoder_pdf17 \ enable_encoder_qr_code #staticlib #qzxing_qml #qzxing_multimedia VERSION = 2.3 TARGET = QZXing TEMPLATE = lib include(QZXing-components.pri) DEFINES -= DISABLE_LIBRARY_FEATURES yubioath-desktop/QZXing/QZXingFilter.cpp000066400000000000000000000314471412677075700206140ustar00rootroot00000000000000#include "zxing/ZXing.h" #include "QZXingFilter.h" #include #include //#include "QZXingImageProvider.h" namespace { uchar gray(uchar r, uchar g, uchar b) { return (306 * (r & 0xFF) + 601 * (g & 0xFF) + 117 * (b & 0xFF) + 0x200) >> 10; } uchar yuvToGray(uchar Y, uchar U, uchar V) { const int C = int(Y) - 16; const int D = int(U) - 128; const int E = int(V) - 128; return gray( qBound(0, ((298 * C + 409 * E + 128) >> 8), 255), qBound(0, ((298 * C - 100 * D - 208 * E + 128) >> 8), 255), qBound(0, ((298 * C + 516 * D + 128) >> 8), 255) ); } uchar yuvToGray2(uchar y, uchar u, uchar v) { double rD = y + 1.4075 * (v - 128); double gD = y - 0.3455 * (u - 128) - (0.7169 * (v - 128)); double bD = y + 1.7790 * (u - 128); return gray( qBound(0, (uchar)::floor(rD), 255), qBound(0, (uchar)::floor(gD), 255), qBound(0, (uchar)::floor(bD), 255) ); } } QZXingFilter::QZXingFilter(QObject *parent) : QAbstractVideoFilter(parent) , decoder(QZXing::DecoderFormat_QR_CODE) , decoding(false) { /// Connecting signals to handlers that will send signals to QML connect(&decoder, &QZXing::decodingStarted, this, &QZXingFilter::handleDecodingStarted); connect(&decoder, &QZXing::decodingFinished, this, &QZXingFilter::handleDecodingFinished); } QZXingFilter::~QZXingFilter() { } void QZXingFilter::handleDecodingStarted() { decoding = true; emit decodingStarted(); emit isDecodingChanged(); } void QZXingFilter::handleDecodingFinished(bool succeeded) { decoding = false; emit decodingFinished(succeeded, decoder.getProcessTimeOfLastDecoding()); emit isDecodingChanged(); } QVideoFilterRunnable * QZXingFilter::createFilterRunnable() { return new QZXingFilterRunnable(this); } /// /// QZXingFilterRunnable /// QZXingFilterRunnable::QZXingFilterRunnable(QZXingFilter * filter) : QObject(ZXING_NULLPTR) , filter(filter) { } QZXingFilterRunnable::~QZXingFilterRunnable() { if(filter != ZXING_NULLPTR && !filter->processThread.isFinished()) { filter->processThread.cancel(); filter->processThread.waitForFinished(); } filter = ZXING_NULLPTR; } QVideoFrame QZXingFilterRunnable::run(QVideoFrame * input, const QVideoSurfaceFormat &surfaceFormat, RunFlags flags) { Q_UNUSED(surfaceFormat); Q_UNUSED(flags); /// We dont want to decode every single frame we get, as this would be very costly /// These checks are attempt on having only 1 frame being processed at a time. if(!input || !input->isValid()) { //qDebug() << "[QZXingFilterRunnable] Invalid Input "; return QVideoFrame(); } if(filter->isDecoding()) { //qDebug() << "------ decoder busy."; return * input; } if(!filter->processThread.isFinished()) { //qDebug() << "--[]-- decoder busy."; return * input; } filter->decoding = true; /// Copy the data we need to the filter. /// TODO: Depending on the system / platform, this copy hangs up the UI for some seconds. Fix this. filter->frame.copyData(* input); /// All processing that has to happen in another thread, as we are now in the UI thread. filter->processThread = QtConcurrent::run(this, &QZXingFilterRunnable::processVideoFrameProbed, filter->frame, filter->captureRect.toRect()); return * input; } static bool isRectValid(const QRect& rect) { return rect.x() >= 0 && rect.y() >= 0 && rect.isValid(); } struct CaptureRect { CaptureRect(const QRect& captureRect, int sourceWidth, int sourceHeight) : isValid(isRectValid(captureRect)) , sourceWidth(sourceWidth) , sourceHeight(sourceHeight) , startX(isValid ? captureRect.x() : 0) , targetWidth(isValid ? captureRect.width() : sourceWidth) , endX(startX + targetWidth) , startY(isValid ? captureRect.y() : 0) , targetHeight(isValid ? captureRect.height() : sourceHeight) , endY(startY + targetHeight) {} bool isValid; char pad[3]; // avoid warning about padding int sourceWidth; int sourceHeight; int startX; int targetWidth; int endX; int startY; int targetHeight; int endY; }; static QImage* rgbDataToGrayscale(const uchar* data, const CaptureRect& captureRect, const int alpha, const int red, const int green, const int blue, const bool isPremultiplied = false) { const int stride = (alpha < 0) ? 3 : 4; const int endX = captureRect.sourceWidth - captureRect.startX - captureRect.targetWidth; const int skipX = (endX + captureRect.startX) * stride; QImage *image_ptr = new QImage(captureRect.targetWidth, captureRect.targetHeight, QImage::Format_Grayscale8); uchar* pixelInit = image_ptr->bits(); data += (captureRect.startY * captureRect.sourceWidth + captureRect.startX) * stride; for (int y = 1; y <= captureRect.targetHeight; ++y) { //Quick fix for iOS devices. Will be handled better in the future #ifdef Q_OS_IOS uchar* pixel = pixelInit + (y - 1) * captureRect.targetWidth; #else uchar* pixel = pixelInit + (captureRect.targetHeight - y) * captureRect.targetWidth; #endif for (int x = 0; x < captureRect.targetWidth; ++x) { uchar r = data[red]; uchar g = data[green]; uchar b = data[blue]; if (isPremultiplied) { uchar a = data[alpha]; r = uchar((uint(r) * 255) / a); g = uchar((uint(g) * 255) / a); b = uchar((uint(b) * 255) / a); } *pixel = gray(r, g, b); ++pixel; data += stride; } data += skipX; } return image_ptr; } static void YUV_NV21_TO_RGB(uchar* argb, const uchar* yuv, int width, int height) { int frameSize = width * height; int ii = 0; int ij = 0; int di = +1; int dj = +1; int a = 0; for (int i = 0, ci = ii; i < height; ++i, ci += di) { for (int j = 0, cj = ij; j < width; ++j, cj += dj) { int y = (0xff & ((int) yuv[ci * width + cj])); int v = (0xff & ((int) yuv[frameSize + (ci >> 1) * width + (cj & ~1) + 0])); int u = (0xff & ((int) yuv[frameSize + (ci >> 1) * width + (cj & ~1) + 1])); y = y < 16 ? 16 : y; int r = (int) (1.164f * (y - 16) + 1.596f * (v - 128)); int g = (int) (1.164f * (y - 16) - 0.813f * (v - 128) - 0.391f * (u - 128)); int b = (int) (1.164f * (y - 16) + 2.018f * (u - 128)); r = r < 0 ? 0 : (r > 255 ? 255 : r); g = g < 0 ? 0 : (g > 255 ? 255 : g); b = b < 0 ? 0 : (b > 255 ? 255 : b); argb[a++] = 0xff000000 | (r << 16) | (g << 8) | b; } } } void QZXingFilterRunnable::processVideoFrameProbed(SimpleVideoFrame & videoFrame, const QRect& _captureRect) { if (videoFrame.data.length() < 1) { qDebug() << "QZXingFilterRunnable: Buffer is empty"; filter->decoding = false; return; } static unsigned int i = 0; i++; // qDebug() << "Future: Going to process frame: " << i; const int width = videoFrame.size.width(); const int height = videoFrame.size.height(); const CaptureRect captureRect(_captureRect, width, height); const uchar* data = reinterpret_cast(videoFrame.data.constData()); uchar* pixel; int wh; int w_2; int wh_54; const uint32_t *yuvPtr = reinterpret_cast(data); /// Create QImage from QVideoFrame. QImage *image_ptr = ZXING_NULLPTR; switch (videoFrame.pixelFormat) { case QVideoFrame::Format_RGB32: image_ptr = rgbDataToGrayscale(data, captureRect, 0, 1, 2, 3); break; case QVideoFrame::Format_ARGB32: image_ptr = rgbDataToGrayscale(data, captureRect, 0, 1, 2, 3); break; case QVideoFrame::Format_ARGB32_Premultiplied: image_ptr = rgbDataToGrayscale(data, captureRect, 0, 1, 2, 3, true); break; case QVideoFrame::Format_BGRA32: image_ptr = rgbDataToGrayscale(data, captureRect, 3, 2, 1, 0); break; case QVideoFrame::Format_BGRA32_Premultiplied: image_ptr = rgbDataToGrayscale(data, captureRect, 3, 2, 1, 0, true); break; case QVideoFrame::Format_BGR32: #if (QT_VERSION >= QT_VERSION_CHECK(5, 13, 0)) case QVideoFrame::Format_ABGR32: #endif image_ptr = rgbDataToGrayscale(data, captureRect, 3, 2, 1, 0); break; case QVideoFrame::Format_BGR24: image_ptr = rgbDataToGrayscale(data, captureRect, -1, 2, 1, 0); break; case QVideoFrame::Format_BGR555: /// This is a forced "conversion", colors end up swapped. image_ptr = new QImage(data, width, height, QImage::Format_RGB555); break; case QVideoFrame::Format_BGR565: /// This is a forced "conversion", colors end up swapped. image_ptr = new QImage(data, width, height, QImage::Format_RGB16); break; case QVideoFrame::Format_YUV420P: /// Format_YUV420P format, encountered on raspberry pi image_ptr = new QImage(captureRect.targetWidth, captureRect.targetHeight, QImage::Format_Grayscale8); pixel = image_ptr->bits(); wh = width * height; w_2 = width / 2; wh_54 = wh * 5 / 4; for (int y = captureRect.startY; y < captureRect.endY; y++) { const int Y_offset = y * width; const int y_2 = y / 2; const int U_offset = y_2 * w_2 + wh; const int V_offset = y_2 * w_2 + wh_54; for (int x = captureRect.startX; x < captureRect.endX; x++) { const int x_2 = x / 2; const uchar Y = data[Y_offset + x]; const uchar U = data[U_offset + x_2]; const uchar V = data[V_offset + x_2]; *pixel = yuvToGray(Y, U, V); ++pixel; } } break; case QVideoFrame::Format_NV12: /// nv12 format, encountered on macOS image_ptr = new QImage(captureRect.targetWidth, captureRect.targetHeight, QImage::Format_Grayscale8); YUV_NV21_TO_RGB((uchar*) image_ptr->bits(), (const uchar*) yuvPtr, width, height); break; case QVideoFrame::Format_YUYV: image_ptr = new QImage(captureRect.targetWidth, captureRect.targetHeight, QImage::Format_Grayscale8); pixel = image_ptr->bits(); for (int y = captureRect.startY; y < captureRect.endY; y++){ const uint32_t *row = &yuvPtr[y*(width/2)]; int end = captureRect.startX/2 + (captureRect.endX - captureRect.startX)/2; for (int x = captureRect.startX/2; x < end; x++){ const uint8_t *pxl = reinterpret_cast(&row[x]); const uint8_t y0 = pxl[0]; const uint8_t u = pxl[1]; const uint8_t v = pxl[3]; const uint8_t y1 = pxl[2]; *pixel = yuvToGray2(y0, u, v); ++pixel; *pixel = yuvToGray2(y1, u, v); ++pixel; } } break; /// TODO: Handle (create QImages from) YUV formats. default: QImage::Format imageFormat = QVideoFrame::imageFormatFromPixelFormat(videoFrame.pixelFormat); image_ptr = new QImage(data, width, height, imageFormat); break; } if(!image_ptr || image_ptr->isNull()) { qDebug() << "QZXingFilterRunnable error: Cant create image file to process."; qDebug() << "Maybe it was a format conversion problem? "; qDebug() << "VideoFrame format: " << videoFrame.pixelFormat; qDebug() << "Image corresponding format: " << QVideoFrame::imageFormatFromPixelFormat(videoFrame.pixelFormat); filter->decoding = false; return; } if (captureRect.isValid && image_ptr->size() != _captureRect.size()) image_ptr = new QImage(image_ptr->copy(_captureRect)); //qDebug() << "image.size()" << image_ptr->size(); //qDebug() << "image.format()" << image_ptr->format(); //qDebug() << "videoFrame.pixelFormat" << videoFrame.pixelFormat; //const QString path = QStandardPaths::writableLocation(QStandardPaths::PicturesLocation) + "/qrtest/test_" + QString::number(i % 100) + ".png"; //qDebug() << "saving image" << i << "at:" << path << image_ptr->save(path); //QZXingImageProvider::getInstance()->storeImage(image); decode(*image_ptr); delete image_ptr; } QString QZXingFilterRunnable::decode(const QImage &image) { return (filter != ZXING_NULLPTR) ? filter->decoder.decodeImage(image, image.width(), image.height()) : QString(); } yubioath-desktop/QZXing/QZXingFilter.h000066400000000000000000000076451412677075700202640ustar00rootroot00000000000000/* * Copyright 2017 QZXing authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef QZXingFilter_H #define QZXingFilter_H #include #include #include #include #include "QZXing.h" /// /// References: /// /// https://blog.qt.io/blog/2015/03/20/introducing-video-filters-in-qt-multimedia/ /// http://doc.qt.io/qt-5/qabstractvideofilter.html /// http://doc.qt.io/qt-5/qml-qtmultimedia-videooutput.html#filters-prop /// http://doc.qt.io/qt-5/qvideofilterrunnable.html /// http://doc.qt.io/qt-5/qtconcurrent-runfunction-main-cpp.html /// /// This is used to store a QVideoFrame info while we are searching the image for QRCodes. struct SimpleVideoFrame { QByteArray data; QSize size; QVideoFrame::PixelFormat pixelFormat; SimpleVideoFrame() : size{0,0} , pixelFormat{QVideoFrame::Format_Invalid} {} void copyData(QVideoFrame & frame) { frame.map(QAbstractVideoBuffer::ReadOnly); /// Copy video frame bytes to this.data /// This is made to try to get a better performance (less memory allocation, faster unmap) /// Any other task is performed in a QFuture task, as we want to leave the UI thread asap if(data.size() != frame.mappedBytes()) { qDebug() << "needed to resize"; qDebug() << "size: " << data.size() << ", new size: " << frame.mappedBytes(); data.resize(frame.mappedBytes()); } memcpy(data.data(), frame.bits(), frame.mappedBytes()); size = frame.size(); pixelFormat = frame.pixelFormat(); frame.unmap(); } }; /// Video filter is the filter that has to be registered in C++, instantiated and attached in QML class QZXingFilter : public QAbstractVideoFilter { friend class QZXingFilterRunnable; Q_OBJECT Q_PROPERTY(bool decoding READ isDecoding NOTIFY isDecodingChanged) Q_PROPERTY(QZXing* decoder READ getDecoder) Q_PROPERTY(QRectF captureRect MEMBER captureRect NOTIFY captureRectChanged) signals: void isDecodingChanged(); void decodingFinished(bool succeeded, int decodeTime); void decodingStarted(); void captureRectChanged(); private slots: void handleDecodingStarted(); void handleDecodingFinished(bool succeeded); private: /// Attributes QZXing decoder; bool decoding; QRectF captureRect; SimpleVideoFrame frame; QFuture processThread; public: /// Methods explicit QZXingFilter(QObject *parent = 0); virtual ~QZXingFilter(); bool isDecoding() {return decoding; } QZXing* getDecoder() { return &decoder; } QVideoFilterRunnable * createFilterRunnable(); }; /// A new Runnable is created everytime the filter gets a new frame class QZXingFilterRunnable : public QObject, public QVideoFilterRunnable { Q_OBJECT public: explicit QZXingFilterRunnable(QZXingFilter * filter); virtual ~QZXingFilterRunnable(); /// This method is called whenever we get a new frame. It runs in the UI thread. QVideoFrame run(QVideoFrame * input, const QVideoSurfaceFormat &surfaceFormat, RunFlags flags); void processVideoFrameProbed(SimpleVideoFrame & videoFrame, const QRect& captureRect); private: QString decode(const QImage &image); private: QZXingFilter * filter; }; #endif // QZXingFilter_H yubioath-desktop/QZXing/QZXingImageProvider.cpp000066400000000000000000000057651412677075700221300ustar00rootroot00000000000000#include "QZXingImageProvider.h" #include #include #include "QZXing.h" #include QZXingImageProvider::QZXingImageProvider() : QQuickImageProvider(QQuickImageProvider::Image) { } QImage QZXingImageProvider::requestImage(const QString &id, QSize *size, const QSize &requestedSize) { int slashIndex = id.indexOf('/'); if (slashIndex == -1) { qWarning() << "Can't parse url" << id << ". Usage is encode?/"; return QImage(); } //Detect operation (ex. encode) QString operationName = id.left(slashIndex); if(operationName != "encode") { qWarning() << "Operation not supported: " << operationName; return QImage(); } QString data; QZXing::EncoderFormat format = QZXing::EncoderFormat_QR_CODE; QZXing::EncodeErrorCorrectionLevel correctionLevel = QZXing::EncodeErrorCorrectionLevel_L; bool border = false; bool transparent = false; int customSettingsIndex = id.lastIndexOf(QRegularExpression("\\?(correctionLevel|format|border|transparent)=")); if(customSettingsIndex >= 0) { int startOfDataIndex = slashIndex + 1; data = id.mid(startOfDataIndex, customSettingsIndex - (startOfDataIndex)); //The dummy option has been added due to a bug(?) of QUrlQuery // it could not recognize the first key-value pair provided QUrlQuery optionQuery("options?dummy=&" + id.mid(customSettingsIndex + 1)); if (optionQuery.hasQueryItem("format")) { QString formatString = optionQuery.queryItemValue("format"); if (formatString != "qrcode") { qWarning() << "Format not supported: " << formatString; return QImage(); } } QString correctionLevelString = optionQuery.queryItemValue("correctionLevel"); if(correctionLevelString == "H") correctionLevel = QZXing::EncodeErrorCorrectionLevel_H; else if(correctionLevelString == "Q") correctionLevel = QZXing::EncodeErrorCorrectionLevel_Q; else if(correctionLevelString == "M") correctionLevel = QZXing::EncodeErrorCorrectionLevel_M; else if(correctionLevelString == "L") correctionLevel = QZXing::EncodeErrorCorrectionLevel_L; if (optionQuery.hasQueryItem("border")) border = optionQuery.queryItemValue("border") == "true"; if (optionQuery.hasQueryItem("transparent")) transparent = optionQuery.queryItemValue("transparent") == "true"; } else { data = id.mid(slashIndex + 1); } #ifdef ENABLE_ENCODER_GENERIC QZXingEncoderConfig encoderConfig(format, requestedSize, correctionLevel, border, transparent); QString dataTemp(QUrl::fromPercentEncoding(data.toUtf8())); QImage result = QZXing::encodeData(dataTemp, encoderConfig); #else QImage result; qDebug() << "barcode encoder disabled. Add 'CONFIG += enable_encoder_qr_code'"; #endif *size = result.size(); return result; } yubioath-desktop/QZXing/QZXingImageProvider.h000066400000000000000000000016341412677075700215640ustar00rootroot00000000000000/* * Copyright 2011 QZXing authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef QZXINGIMAGEPROVIDER_H #define QZXINGIMAGEPROVIDER_H #include #include class QZXingImageProvider : public QQuickImageProvider { public: QZXingImageProvider(); QImage requestImage(const QString &id, QSize *size, const QSize &requestedSize); }; #endif // QZXINGIMAGEPROVIDER_H yubioath-desktop/QZXing/QZXing_global.h000066400000000000000000000015011412677075700204170ustar00rootroot00000000000000/* * Copyright 2011 QZXing authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef QZXING_GLOBAL_H #define QZXING_GLOBAL_H #include #if defined(QZXING_LIBRARY) # define QZXINGSHARED_EXPORT Q_DECL_EXPORT #else # define QZXINGSHARED_EXPORT Q_DECL_IMPORT #endif #endif //QZXING_GLOBAL_H yubioath-desktop/QZXing/README.md000066400000000000000000000005071412677075700170320ustar00rootroot00000000000000Qt wrapper library for the ZXing decoding library. # How to use ## To compile as dynamic library qmake src/QZXing.pro make ## Include the complete code to your project In the .pro file of your project add the following line (update the path to point to the correct location of QZXing src): include(../../src/QZXing.pri) yubioath-desktop/QZXing/zxing/000077500000000000000000000000001412677075700167105ustar00rootroot00000000000000yubioath-desktop/QZXing/zxing/bigint/000077500000000000000000000000001412677075700201645ustar00rootroot00000000000000yubioath-desktop/QZXing/zxing/bigint/BigInteger.cc000066400000000000000000000266261412677075700225260ustar00rootroot00000000000000#include "BigInteger.hh" void BigInteger::operator =(const BigInteger &x) { // Calls like a = a have no effect if (this == &x) return; // Copy sign sign = x.sign; // Copy the rest mag = x.mag; } BigInteger::BigInteger(const Blk *b, Index blen, Sign s) : mag(b, blen) { switch (s) { case zero: if (!mag.isZero()) throw "BigInteger::BigInteger(const Blk *, Index, Sign): Cannot use a sign of zero with a nonzero magnitude"; sign = zero; break; case positive: case negative: // If the magnitude is zero, force the sign to zero. sign = mag.isZero() ? zero : s; break; default: /* g++ seems to be optimizing out this case on the assumption * that the sign is a valid member of the enumeration. Oh well. */ throw "BigInteger::BigInteger(const Blk *, Index, Sign): Invalid sign"; } } BigInteger::BigInteger(const BigUnsigned &x, Sign s) : mag(x) { switch (s) { case zero: if (!mag.isZero()) throw "BigInteger::BigInteger(const BigUnsigned &, Sign): Cannot use a sign of zero with a nonzero magnitude"; sign = zero; break; case positive: case negative: // If the magnitude is zero, force the sign to zero. sign = mag.isZero() ? zero : s; break; default: /* g++ seems to be optimizing out this case on the assumption * that the sign is a valid member of the enumeration. Oh well. */ throw "BigInteger::BigInteger(const BigUnsigned &, Sign): Invalid sign"; } } /* CONSTRUCTION FROM PRIMITIVE INTEGERS * Same idea as in BigUnsigned.cc, except that negative input results in a * negative BigInteger instead of an exception. */ // Done longhand to let us use initialization. BigInteger::BigInteger(unsigned long x) : mag(x) { sign = mag.isZero() ? zero : positive; } BigInteger::BigInteger(unsigned int x) : mag(x) { sign = mag.isZero() ? zero : positive; } BigInteger::BigInteger(unsigned short x) : mag(x) { sign = mag.isZero() ? zero : positive; } // For signed input, determine the desired magnitude and sign separately. namespace { template BigInteger::Blk magOf(X x) { /* UX(...) cast needed to stop short(-2^15), which negates to * itself, from sign-extending in the conversion to Blk. */ return BigInteger::Blk(x < 0 ? UX(-x) : x); } template BigInteger::Sign signOf(X x) { return (x == 0) ? BigInteger::zero : (x > 0) ? BigInteger::positive : BigInteger::negative; } } BigInteger::BigInteger(long x) : sign(signOf(x)), mag(magOf(x)) {} BigInteger::BigInteger(int x) : sign(signOf(x)), mag(magOf(x)) {} BigInteger::BigInteger(short x) : sign(signOf(x)), mag(magOf(x)) {} // CONVERSION TO PRIMITIVE INTEGERS /* Reuse BigUnsigned's conversion to an unsigned primitive integer. * The friend is a separate function rather than * BigInteger::convertToUnsignedPrimitive to avoid requiring BigUnsigned to * declare BigInteger. */ template inline X convertBigUnsignedToPrimitiveAccess(const BigUnsigned &a) { return a.convertToPrimitive(); } template X BigInteger::convertToUnsignedPrimitive() const { if (sign == negative) throw "BigInteger::to: " "Cannot convert a negative integer to an unsigned type"; else return convertBigUnsignedToPrimitiveAccess(mag); } /* Similar to BigUnsigned::convertToPrimitive, but split into two cases for * nonnegative and negative numbers. */ template X BigInteger::convertToSignedPrimitive() const { if (sign == zero) return 0; else if (mag.getLength() == 1) { // The single block might fit in an X. Try the conversion. Blk b = mag.getBlock(0); if (sign == positive) { X x = X(b); if (x >= 0 && Blk(x) == b) return x; } else { X x = -X(b); /* UX(...) needed to avoid rejecting conversion of * -2^15 to a short. */ if (x < 0 && Blk(UX(-x)) == b) return x; } // Otherwise fall through. } throw "BigInteger::to: " "Value is too big to fit in the requested type"; } unsigned long BigInteger::toUnsignedLong () const { return convertToUnsignedPrimitive (); } unsigned int BigInteger::toUnsignedInt () const { return convertToUnsignedPrimitive (); } unsigned short BigInteger::toUnsignedShort() const { return convertToUnsignedPrimitive (); } long BigInteger::toLong () const { return convertToSignedPrimitive (); } int BigInteger::toInt () const { return convertToSignedPrimitive (); } short BigInteger::toShort () const { return convertToSignedPrimitive (); } // COMPARISON BigInteger::CmpRes BigInteger::compareTo(const BigInteger &x) const { // A greater sign implies a greater number if (sign < x.sign) return less; else if (sign > x.sign) return greater; else switch (sign) { // If the signs are the same... case zero: return equal; // Two zeros are equal case positive: // Compare the magnitudes return mag.compareTo(x.mag); case negative: // Compare the magnitudes, but return the opposite result return CmpRes(-mag.compareTo(x.mag)); default: throw "BigInteger internal error"; } } /* COPY-LESS OPERATIONS * These do some messing around to determine the sign of the result, * then call one of BigUnsigned's copy-less operations. */ // See remarks about aliased calls in BigUnsigned.cc . #define DTRT_ALIASED(cond, op) \ if (cond) { \ BigInteger tmpThis; \ tmpThis.op; \ *this = tmpThis; \ return; \ } void BigInteger::add(const BigInteger &a, const BigInteger &b) { DTRT_ALIASED(this == &a || this == &b, add(a, b)); // If one argument is zero, copy the other. if (a.sign == zero) operator =(b); else if (b.sign == zero) operator =(a); // If the arguments have the same sign, take the // common sign and add their magnitudes. else if (a.sign == b.sign) { sign = a.sign; mag.add(a.mag, b.mag); } else { // Otherwise, their magnitudes must be compared. switch (a.mag.compareTo(b.mag)) { case equal: // If their magnitudes are the same, copy zero. mag = 0; sign = zero; break; // Otherwise, take the sign of the greater, and subtract // the lesser magnitude from the greater magnitude. case greater: sign = a.sign; mag.subtract(a.mag, b.mag); break; case less: sign = b.sign; mag.subtract(b.mag, a.mag); break; } } } void BigInteger::subtract(const BigInteger &a, const BigInteger &b) { // Notice that this routine is identical to BigInteger::add, // if one replaces b.sign by its opposite. DTRT_ALIASED(this == &a || this == &b, subtract(a, b)); // If a is zero, copy b and flip its sign. If b is zero, copy a. if (a.sign == zero) { mag = b.mag; // Take the negative of _b_'s, sign, not ours. // Bug pointed out by Sam Larkin on 2005.03.30. sign = Sign(-b.sign); } else if (b.sign == zero) operator =(a); // If their signs differ, take a.sign and add the magnitudes. else if (a.sign != b.sign) { sign = a.sign; mag.add(a.mag, b.mag); } else { // Otherwise, their magnitudes must be compared. switch (a.mag.compareTo(b.mag)) { // If their magnitudes are the same, copy zero. case equal: mag = 0; sign = zero; break; // If a's magnitude is greater, take a.sign and // subtract a from b. case greater: sign = a.sign; mag.subtract(a.mag, b.mag); break; // If b's magnitude is greater, take the opposite // of b.sign and subtract b from a. case less: sign = Sign(-b.sign); mag.subtract(b.mag, a.mag); break; } } } void BigInteger::multiply(const BigInteger &a, const BigInteger &b) { DTRT_ALIASED(this == &a || this == &b, multiply(a, b)); // If one object is zero, copy zero and return. if (a.sign == zero || b.sign == zero) { sign = zero; mag = 0; return; } // If the signs of the arguments are the same, the result // is positive, otherwise it is negative. sign = (a.sign == b.sign) ? positive : negative; // Multiply the magnitudes. mag.multiply(a.mag, b.mag); } /* * DIVISION WITH REMAINDER * Please read the comments before the definition of * `BigUnsigned::divideWithRemainder' in `BigUnsigned.cc' for lots of * information you should know before reading this function. * * Following Knuth, I decree that x / y is to be * 0 if y==0 and floor(real-number x / y) if y!=0. * Then x % y shall be x - y*(integer x / y). * * Note that x = y * (x / y) + (x % y) always holds. * In addition, (x % y) is from 0 to y - 1 if y > 0, * and from -(|y| - 1) to 0 if y < 0. (x % y) = x if y = 0. * * Examples: (q = a / b, r = a % b) * a b q r * === === === === * 4 3 1 1 * -4 3 -2 2 * 4 -3 -2 -2 * -4 -3 1 -1 */ void BigInteger::divideWithRemainder(const BigInteger &b, BigInteger &q) { // Defend against aliased calls; // same idea as in BigUnsigned::divideWithRemainder . if (this == &q) throw "BigInteger::divideWithRemainder: Cannot write quotient and remainder into the same variable"; if (this == &b || &q == &b) { BigInteger tmpB(b); divideWithRemainder(tmpB, q); return; } // Division by zero gives quotient 0 and remainder *this if (b.sign == zero) { q.mag = 0; q.sign = zero; return; } // 0 / b gives quotient 0 and remainder 0 if (sign == zero) { q.mag = 0; q.sign = zero; return; } // Here *this != 0, b != 0. // Do the operands have the same sign? if (sign == b.sign) { // Yes: easy case. Quotient is zero or positive. q.sign = positive; } else { // No: harder case. Quotient is negative. q.sign = negative; // Decrease the magnitude of the dividend by one. mag--; /* * We tinker with the dividend before and with the * quotient and remainder after so that the result * comes out right. To see why it works, consider the following * list of examples, where A is the magnitude-decreased * a, Q and R are the results of BigUnsigned division * with remainder on A and |b|, and q and r are the * final results we want: * * a A b Q R q r * -3 -2 3 0 2 -1 0 * -4 -3 3 1 0 -2 2 * -5 -4 3 1 1 -2 1 * -6 -5 3 1 2 -2 0 * * It appears that we need a total of 3 corrections: * Decrease the magnitude of a to get A. Increase the * magnitude of Q to get q (and make it negative). * Find r = (b - 1) - R and give it the desired sign. */ } // Divide the magnitudes. mag.divideWithRemainder(b.mag, q.mag); if (sign != b.sign) { // More for the harder case (as described): // Increase the magnitude of the quotient by one. q.mag++; // Modify the remainder. mag.subtract(b.mag, mag); mag--; } // Sign of the remainder is always the sign of the divisor b. sign = b.sign; // Set signs to zero as necessary. (Thanks David Allen!) if (mag.isZero()) sign = zero; if (q.mag.isZero()) q.sign = zero; // WHEW!!! } // Negation void BigInteger::negate(const BigInteger &a) { DTRT_ALIASED(this == &a, negate(a)); // Copy a's magnitude mag = a.mag; // Copy the opposite of a.sign sign = Sign(-a.sign); } // INCREMENT/DECREMENT OPERATORS // Prefix increment void BigInteger::operator ++() { if (sign == negative) { mag--; if (mag == 0) sign = zero; } else { mag++; sign = positive; // if not already } } // Postfix increment: same as prefix void BigInteger::operator ++(int) { operator ++(); } // Prefix decrement void BigInteger::operator --() { if (sign == positive) { mag--; if (mag == 0) sign = zero; } else { mag++; sign = negative; } } // Postfix decrement: same as prefix void BigInteger::operator --(int) { operator --(); } yubioath-desktop/QZXing/zxing/bigint/BigInteger.hh000066400000000000000000000153701412677075700225320ustar00rootroot00000000000000#ifndef BIGINTEGER_H #define BIGINTEGER_H #include "BigUnsigned.hh" /* A BigInteger object represents a signed integer of size limited only by * available memory. BigUnsigneds support most mathematical operators and can * be converted to and from most primitive integer types. * * A BigInteger is just an aggregate of a BigUnsigned and a sign. (It is no * longer derived from BigUnsigned because that led to harmful implicit * conversions.) */ class BigInteger { public: typedef BigUnsigned::Blk Blk; typedef BigUnsigned::Index Index; typedef BigUnsigned::CmpRes CmpRes; static const CmpRes less = BigUnsigned::less , equal = BigUnsigned::equal , greater = BigUnsigned::greater; // Enumeration for the sign of a BigInteger. enum Sign { negative = -1, zero = 0, positive = 1 }; protected: Sign sign; BigUnsigned mag; public: // Constructs zero. BigInteger() : sign(zero), mag() {} // Copy constructor BigInteger(const BigInteger &x) : sign(x.sign), mag(x.mag) {}; // Assignment operator void operator=(const BigInteger &x); // Constructor that copies from a given array of blocks with a sign. BigInteger(const Blk *b, Index blen, Sign s); // Nonnegative constructor that copies from a given array of blocks. BigInteger(const Blk *b, Index blen) : mag(b, blen) { sign = mag.isZero() ? zero : positive; } // Constructor from a BigUnsigned and a sign BigInteger(const BigUnsigned &x, Sign s); // Nonnegative constructor from a BigUnsigned BigInteger(const BigUnsigned &x) : mag(x) { sign = mag.isZero() ? zero : positive; } // Constructors from primitive integer types BigInteger(unsigned long x); BigInteger( long x); BigInteger(unsigned int x); BigInteger( int x); BigInteger(unsigned short x); BigInteger( short x); /* Converters to primitive integer types * The implicit conversion operators caused trouble, so these are now * named. */ unsigned long toUnsignedLong () const; long toLong () const; unsigned int toUnsignedInt () const; int toInt () const; unsigned short toUnsignedShort() const; short toShort () const; protected: // Helper template X convertToUnsignedPrimitive() const; template X convertToSignedPrimitive() const; public: // ACCESSORS Sign getSign() const { return sign; } /* The client can't do any harm by holding a read-only reference to the * magnitude. */ const BigUnsigned &getMagnitude() const { return mag; } // Some accessors that go through to the magnitude Index getLength() const { return mag.getLength(); } Index getCapacity() const { return mag.getCapacity(); } Blk getBlock(Index i) const { return mag.getBlock(i); } bool isZero() const { return sign == zero; } // A bit special // COMPARISONS // Compares this to x like Perl's <=> CmpRes compareTo(const BigInteger &x) const; // Ordinary comparison operators bool operator ==(const BigInteger &x) const { return sign == x.sign && mag == x.mag; } bool operator !=(const BigInteger &x) const { return !operator ==(x); }; bool operator < (const BigInteger &x) const { return compareTo(x) == less ; } bool operator <=(const BigInteger &x) const { return compareTo(x) != greater; } bool operator >=(const BigInteger &x) const { return compareTo(x) != less ; } bool operator > (const BigInteger &x) const { return compareTo(x) == greater; } // OPERATORS -- See the discussion in BigUnsigned.hh. void add (const BigInteger &a, const BigInteger &b); void subtract(const BigInteger &a, const BigInteger &b); void multiply(const BigInteger &a, const BigInteger &b); /* See the comment on BigUnsigned::divideWithRemainder. Semantics * differ from those of primitive integers when negatives and/or zeros * are involved. */ void divideWithRemainder(const BigInteger &b, BigInteger &q); void negate(const BigInteger &a); /* Bitwise operators are not provided for BigIntegers. Use * getMagnitude to get the magnitude and operate on that instead. */ BigInteger operator +(const BigInteger &x) const; BigInteger operator -(const BigInteger &x) const; BigInteger operator *(const BigInteger &x) const; BigInteger operator /(const BigInteger &x) const; BigInteger operator %(const BigInteger &x) const; BigInteger operator -() const; void operator +=(const BigInteger &x); void operator -=(const BigInteger &x); void operator *=(const BigInteger &x); void operator /=(const BigInteger &x); void operator %=(const BigInteger &x); void flipSign(); // INCREMENT/DECREMENT OPERATORS void operator ++( ); void operator ++(int); void operator --( ); void operator --(int); }; // NORMAL OPERATORS /* These create an object to hold the result and invoke * the appropriate put-here operation on it, passing * this and x. The new object is then returned. */ inline BigInteger BigInteger::operator +(const BigInteger &x) const { BigInteger ans; ans.add(*this, x); return ans; } inline BigInteger BigInteger::operator -(const BigInteger &x) const { BigInteger ans; ans.subtract(*this, x); return ans; } inline BigInteger BigInteger::operator *(const BigInteger &x) const { BigInteger ans; ans.multiply(*this, x); return ans; } inline BigInteger BigInteger::operator /(const BigInteger &x) const { if (x.isZero()) throw "BigInteger::operator /: division by zero"; BigInteger q, r; r = *this; r.divideWithRemainder(x, q); return q; } inline BigInteger BigInteger::operator %(const BigInteger &x) const { if (x.isZero()) throw "BigInteger::operator %: division by zero"; BigInteger q, r; r = *this; r.divideWithRemainder(x, q); return r; } inline BigInteger BigInteger::operator -() const { BigInteger ans; ans.negate(*this); return ans; } /* * ASSIGNMENT OPERATORS * * Now the responsibility for making a temporary copy if necessary * belongs to the put-here operations. See Assignment Operators in * BigUnsigned.hh. */ inline void BigInteger::operator +=(const BigInteger &x) { add(*this, x); } inline void BigInteger::operator -=(const BigInteger &x) { subtract(*this, x); } inline void BigInteger::operator *=(const BigInteger &x) { multiply(*this, x); } inline void BigInteger::operator /=(const BigInteger &x) { if (x.isZero()) throw "BigInteger::operator /=: division by zero"; /* The following technique is slightly faster than copying *this first * when x is large. */ BigInteger q; divideWithRemainder(x, q); // *this contains the remainder, but we overwrite it with the quotient. *this = q; } inline void BigInteger::operator %=(const BigInteger &x) { if (x.isZero()) throw "BigInteger::operator %=: division by zero"; BigInteger q; // Mods *this by x. Don't care about quotient left in q. divideWithRemainder(x, q); } // This one is trivial inline void BigInteger::flipSign() { sign = Sign(-sign); } #endif yubioath-desktop/QZXing/zxing/bigint/BigIntegerAlgorithms.cc000066400000000000000000000034461412677075700245530ustar00rootroot00000000000000#include "BigIntegerAlgorithms.hh" BigUnsigned gcd(BigUnsigned a, BigUnsigned b) { BigUnsigned trash; // Neat in-place alternating technique. for (;;) { if (b.isZero()) return a; a.divideWithRemainder(b, trash); if (a.isZero()) return b; b.divideWithRemainder(a, trash); } } void extendedEuclidean(BigInteger m, BigInteger n, BigInteger &g, BigInteger &r, BigInteger &s) { if (&g == &r || &g == &s || &r == &s) throw "BigInteger extendedEuclidean: Outputs are aliased"; BigInteger r1(1), s1(0), r2(0), s2(1), q; /* Invariants: * r1*m(orig) + s1*n(orig) == m(current) * r2*m(orig) + s2*n(orig) == n(current) */ for (;;) { if (n.isZero()) { r = r1; s = s1; g = m; return; } // Subtract q times the second invariant from the first invariant. m.divideWithRemainder(n, q); r1 -= q*r2; s1 -= q*s2; if (m.isZero()) { r = r2; s = s2; g = n; return; } // Subtract q times the first invariant from the second invariant. n.divideWithRemainder(m, q); r2 -= q*r1; s2 -= q*s1; } } BigUnsigned modinv(const BigInteger &x, const BigUnsigned &n) { BigInteger g, r, s; extendedEuclidean(x, n, g, r, s); if (g == 1) // r*x + s*n == 1, so r*x === 1 (mod n), so r is the answer. return (r % n).getMagnitude(); // (r % n) will be nonnegative else throw "BigInteger modinv: x and n have a common factor"; } BigUnsigned modexp(const BigInteger &base, const BigUnsigned &exponent, const BigUnsigned &modulus) { BigUnsigned ans = 1, base2 = (base % modulus).getMagnitude(); BigUnsigned::Index i = exponent.bitLength(); // For each bit of the exponent, most to least significant... while (i > 0) { i--; // Square. ans *= ans; ans %= modulus; // And multiply if the bit is a 1. if (exponent.getBit(i)) { ans *= base2; ans %= modulus; } } return ans; } yubioath-desktop/QZXing/zxing/bigint/BigIntegerAlgorithms.hh000066400000000000000000000014721412677075700245620ustar00rootroot00000000000000#ifndef BIGINTEGERALGORITHMS_H #define BIGINTEGERALGORITHMS_H #include "BigInteger.hh" /* Some mathematical algorithms for big integers. * This code is new and, as such, experimental. */ // Returns the greatest common divisor of a and b. BigUnsigned gcd(BigUnsigned a, BigUnsigned b); /* Extended Euclidean algorithm. * Given m and n, finds gcd g and numbers r, s such that r*m + s*n == g. */ void extendedEuclidean(BigInteger m, BigInteger n, BigInteger &g, BigInteger &r, BigInteger &s); /* Returns the multiplicative inverse of x modulo n, or throws an exception if * they have a common factor. */ BigUnsigned modinv(const BigInteger &x, const BigUnsigned &n); // Returns (base ^ exponent) % modulus. BigUnsigned modexp(const BigInteger &base, const BigUnsigned &exponent, const BigUnsigned &modulus); #endif yubioath-desktop/QZXing/zxing/bigint/BigIntegerLibrary.hh000066400000000000000000000003621412677075700240520ustar00rootroot00000000000000// This header file includes all of the library header files. #include "NumberlikeArray.hh" #include "BigUnsigned.hh" #include "BigInteger.hh" #include "BigIntegerAlgorithms.hh" #include "BigUnsignedInABase.hh" #include "BigIntegerUtils.hh" yubioath-desktop/QZXing/zxing/bigint/BigIntegerUtils.cc000066400000000000000000000027531412677075700235420ustar00rootroot00000000000000#include "BigIntegerUtils.hh" #include "BigUnsignedInABase.hh" std::string bigUnsignedToString(const BigUnsigned &x) { return std::string(BigUnsignedInABase(x, 10)); } std::string bigIntegerToString(const BigInteger &x) { return (x.getSign() == BigInteger::negative) ? (std::string("-") + bigUnsignedToString(x.getMagnitude())) : (bigUnsignedToString(x.getMagnitude())); } BigUnsigned stringToBigUnsigned(const std::string &s) { return BigUnsigned(BigUnsignedInABase(s, 10)); } BigInteger stringToBigInteger(const std::string &s) { // Recognize a sign followed by a BigUnsigned. return (s[0] == '-') ? BigInteger(stringToBigUnsigned(s.substr(1, s.length() - 1)), BigInteger::negative) : (s[0] == '+') ? BigInteger(stringToBigUnsigned(s.substr(1, s.length() - 1))) : BigInteger(stringToBigUnsigned(s)); } std::ostream &operator <<(std::ostream &os, const BigUnsigned &x) { BigUnsignedInABase::Base base; long osFlags = os.flags(); if (osFlags & os.dec) base = 10; else if (osFlags & os.hex) { base = 16; if (osFlags & os.showbase) os << "0x"; } else if (osFlags & os.oct) { base = 8; if (osFlags & os.showbase) os << '0'; } else throw "std::ostream << BigUnsigned: Could not determine the desired base from output-stream flags"; std::string s = std::string(BigUnsignedInABase(x, base)); os << s; return os; } std::ostream &operator <<(std::ostream &os, const BigInteger &x) { if (x.getSign() == BigInteger::negative) os << '-'; os << x.getMagnitude(); return os; } yubioath-desktop/QZXing/zxing/bigint/BigIntegerUtils.hh000066400000000000000000000050131412677075700235440ustar00rootroot00000000000000#ifndef BIGINTEGERUTILS_H #define BIGINTEGERUTILS_H #include "BigInteger.hh" #include #include /* This file provides: * - Convenient std::string <-> BigUnsigned/BigInteger conversion routines * - std::ostream << operators for BigUnsigned/BigInteger */ // std::string conversion routines. Base 10 only. std::string bigUnsignedToString(const BigUnsigned &x); std::string bigIntegerToString(const BigInteger &x); BigUnsigned stringToBigUnsigned(const std::string &s); BigInteger stringToBigInteger(const std::string &s); // Creates a BigInteger from data such as `char's; read below for details. template BigInteger dataToBigInteger(const T* data, BigInteger::Index length, BigInteger::Sign sign); // Outputs x to os, obeying the flags `dec', `hex', `bin', and `showbase'. std::ostream &operator <<(std::ostream &os, const BigUnsigned &x); // Outputs x to os, obeying the flags `dec', `hex', `bin', and `showbase'. // My somewhat arbitrary policy: a negative sign comes before a base indicator (like -0xFF). std::ostream &operator <<(std::ostream &os, const BigInteger &x); // BEGIN TEMPLATE DEFINITIONS. /* * Converts binary data to a BigInteger. * Pass an array `data', its length, and the desired sign. * * Elements of `data' may be of any type `T' that has the following * two properties (this includes almost all integral types): * * (1) `sizeof(T)' correctly gives the amount of binary data in one * value of `T' and is a factor of `sizeof(Blk)'. * * (2) When a value of `T' is casted to a `Blk', the low bytes of * the result contain the desired binary data. */ template BigInteger dataToBigInteger(const T* data, BigInteger::Index length, BigInteger::Sign sign) { // really ceiling(numBytes / sizeof(BigInteger::Blk)) unsigned int pieceSizeInBits = 8 * sizeof(T); unsigned int piecesPerBlock = sizeof(BigInteger::Blk) / sizeof(T); unsigned int numBlocks = (length + piecesPerBlock - 1) / piecesPerBlock; // Allocate our block array BigInteger::Blk *blocks = new BigInteger::Blk[numBlocks]; BigInteger::Index blockNum, pieceNum, pieceNumHere; // Convert for (blockNum = 0, pieceNum = 0; blockNum < numBlocks; blockNum++) { BigInteger::Blk curBlock = 0; for (pieceNumHere = 0; pieceNumHere < piecesPerBlock && pieceNum < length; pieceNumHere++, pieceNum++) curBlock |= (BigInteger::Blk(data[pieceNum]) << (pieceSizeInBits * pieceNumHere)); blocks[blockNum] = curBlock; } // Create the BigInteger. BigInteger x(blocks, numBlocks, sign); delete [] blocks; return x; } #endif yubioath-desktop/QZXing/zxing/bigint/BigUnsigned.cc000066400000000000000000000531361412677075700227010ustar00rootroot00000000000000#include "BigUnsigned.hh" // Memory management definitions have moved to the bottom of NumberlikeArray.hh. // The templates used by these constructors and converters are at the bottom of // BigUnsigned.hh. BigUnsigned::BigUnsigned(unsigned long x) { initFromPrimitive (x); } BigUnsigned::BigUnsigned(unsigned int x) { initFromPrimitive (x); } BigUnsigned::BigUnsigned(unsigned short x) { initFromPrimitive (x); } BigUnsigned::BigUnsigned( long x) { initFromSignedPrimitive(x); } BigUnsigned::BigUnsigned( int x) { initFromSignedPrimitive(x); } BigUnsigned::BigUnsigned( short x) { initFromSignedPrimitive(x); } unsigned long BigUnsigned::toUnsignedLong () const { return convertToPrimitive (); } unsigned int BigUnsigned::toUnsignedInt () const { return convertToPrimitive (); } unsigned short BigUnsigned::toUnsignedShort() const { return convertToPrimitive (); } long BigUnsigned::toLong () const { return convertToSignedPrimitive< long >(); } int BigUnsigned::toInt () const { return convertToSignedPrimitive< int >(); } short BigUnsigned::toShort () const { return convertToSignedPrimitive< short>(); } // BIT/BLOCK ACCESSORS void BigUnsigned::setBlock(Index i, Blk newBlock) { if (newBlock == 0) { if (i < len) { blk[i] = 0; zapLeadingZeros(); } // If i >= len, no effect. } else { if (i >= len) { // The nonzero block extends the number. allocateAndCopy(i+1); // Zero any added blocks that we aren't setting. for (Index j = len; j < i; j++) blk[j] = 0; len = i+1; } blk[i] = newBlock; } } /* Evidently the compiler wants BigUnsigned:: on the return type because, at * that point, it hasn't yet parsed the BigUnsigned:: on the name to get the * proper scope. */ BigUnsigned::Index BigUnsigned::bitLength() const { if (isZero()) return 0; else { Blk leftmostBlock = getBlock(len - 1); Index leftmostBlockLen = 0; while (leftmostBlock != 0) { leftmostBlock >>= 1; leftmostBlockLen++; } return leftmostBlockLen + (len - 1) * N; } } void BigUnsigned::setBit(Index bi, bool newBit) { Index blockI = bi / N; Blk block = getBlock(blockI), mask = Blk(1) << (bi % N); block = newBit ? (block | mask) : (block & ~mask); setBlock(blockI, block); } // COMPARISON BigUnsigned::CmpRes BigUnsigned::compareTo(const BigUnsigned &x) const { // A bigger length implies a bigger number. if (len < x.len) return less; else if (len > x.len) return greater; else { // Compare blocks one by one from left to right. Index i = len; while (i > 0) { i--; if (blk[i] == x.blk[i]) continue; else if (blk[i] > x.blk[i]) return greater; else return less; } // If no blocks differed, the numbers are equal. return equal; } } // COPY-LESS OPERATIONS /* * On most calls to copy-less operations, it's safe to read the inputs little by * little and write the outputs little by little. However, if one of the * inputs is coming from the same variable into which the output is to be * stored (an "aliased" call), we risk overwriting the input before we read it. * In this case, we first compute the result into a temporary BigUnsigned * variable and then copy it into the requested output variable *this. * Each put-here operation uses the DTRT_ALIASED macro (Do The Right Thing on * aliased calls) to generate code for this check. * * I adopted this approach on 2007.02.13 (see Assignment Operators in * BigUnsigned.hh). Before then, put-here operations rejected aliased calls * with an exception. I think doing the right thing is better. * * Some of the put-here operations can probably handle aliased calls safely * without the extra copy because (for example) they process blocks strictly * right-to-left. At some point I might determine which ones don't need the * copy, but my reasoning would need to be verified very carefully. For now * I'll leave in the copy. */ #define DTRT_ALIASED(cond, op) \ if (cond) { \ BigUnsigned tmpThis; \ tmpThis.op; \ *this = tmpThis; \ return; \ } void BigUnsigned::add(const BigUnsigned &a, const BigUnsigned &b) { DTRT_ALIASED(this == &a || this == &b, add(a, b)); // If one argument is zero, copy the other. if (a.len == 0) { operator =(b); return; } else if (b.len == 0) { operator =(a); return; } // Some variables... // Carries in and out of an addition stage bool carryIn, carryOut; Blk temp; Index i; // a2 points to the longer input, b2 points to the shorter const BigUnsigned *a2, *b2; if (a.len >= b.len) { a2 = &a; b2 = &b; } else { a2 = &b; b2 = &a; } // Set prelimiary length and make room in this BigUnsigned len = a2->len + 1; allocate(len); // For each block index that is present in both inputs... for (i = 0, carryIn = false; i < b2->len; i++) { // Add input blocks temp = a2->blk[i] + b2->blk[i]; // If a rollover occurred, the result is less than either input. // This test is used many times in the BigUnsigned code. carryOut = (temp < a2->blk[i]); // If a carry was input, handle it if (carryIn) { temp++; carryOut |= (temp == 0); } blk[i] = temp; // Save the addition result carryIn = carryOut; // Pass the carry along } // If there is a carry left over, increase blocks until // one does not roll over. for (; i < a2->len && carryIn; i++) { temp = a2->blk[i] + 1; carryIn = (temp == 0); blk[i] = temp; } // If the carry was resolved but the larger number // still has blocks, copy them over. for (; i < a2->len; i++) blk[i] = a2->blk[i]; // Set the extra block if there's still a carry, decrease length otherwise if (carryIn) blk[i] = 1; else len--; } void BigUnsigned::subtract(const BigUnsigned &a, const BigUnsigned &b) { DTRT_ALIASED(this == &a || this == &b, subtract(a, b)); if (b.len == 0) { // If b is zero, copy a. operator =(a); return; } else if (a.len < b.len) // If a is shorter than b, the result is negative. throw "BigUnsigned::subtract: " "Negative result in unsigned calculation"; // Some variables... bool borrowIn, borrowOut; Blk temp; Index i; // Set preliminary length and make room len = a.len; allocate(len); // For each block index that is present in both inputs... for (i = 0, borrowIn = false; i < b.len; i++) { temp = a.blk[i] - b.blk[i]; // If a reverse rollover occurred, // the result is greater than the block from a. borrowOut = (temp > a.blk[i]); // Handle an incoming borrow if (borrowIn) { borrowOut |= (temp == 0); temp--; } blk[i] = temp; // Save the subtraction result borrowIn = borrowOut; // Pass the borrow along } // If there is a borrow left over, decrease blocks until // one does not reverse rollover. for (; i < a.len && borrowIn; i++) { borrowIn = (a.blk[i] == 0); blk[i] = a.blk[i] - 1; } /* If there's still a borrow, the result is negative. * Throw an exception, but zero out this object so as to leave it in a * predictable state. */ if (borrowIn) { len = 0; throw "BigUnsigned::subtract: Negative result in unsigned calculation"; } else // Copy over the rest of the blocks for (; i < a.len; i++) blk[i] = a.blk[i]; // Zap leading zeros zapLeadingZeros(); } /* * About the multiplication and division algorithms: * * I searched unsucessfully for fast C++ built-in operations like the `b_0' * and `c_0' Knuth describes in Section 4.3.1 of ``The Art of Computer * Programming'' (replace `place' by `Blk'): * * ``b_0[:] multiplication of a one-place integer by another one-place * integer, giving a two-place answer; * * ``c_0[:] division of a two-place integer by a one-place integer, * provided that the quotient is a one-place integer, and yielding * also a one-place remainder.'' * * I also missed his note that ``[b]y adjusting the word size, if * necessary, nearly all computers will have these three operations * available'', so I gave up on trying to use algorithms similar to his. * A future version of the library might include such algorithms; I * would welcome contributions from others for this. * * I eventually decided to use bit-shifting algorithms. To multiply `a' * and `b', we zero out the result. Then, for each `1' bit in `a', we * shift `b' left the appropriate amount and add it to the result. * Similarly, to divide `a' by `b', we shift `b' left varying amounts, * repeatedly trying to subtract it from `a'. When we succeed, we note * the fact by setting a bit in the quotient. While these algorithms * have the same O(n^2) time complexity as Knuth's, the ``constant factor'' * is likely to be larger. * * Because I used these algorithms, which require single-block addition * and subtraction rather than single-block multiplication and division, * the innermost loops of all four routines are very similar. Study one * of them and all will become clear. */ /* * This is a little inline function used by both the multiplication * routine and the division routine. * * `getShiftedBlock' returns the `x'th block of `num << y'. * `y' may be anything from 0 to N - 1, and `x' may be anything from * 0 to `num.len'. * * Two things contribute to this block: * * (1) The `N - y' low bits of `num.blk[x]', shifted `y' bits left. * * (2) The `y' high bits of `num.blk[x-1]', shifted `N - y' bits right. * * But we must be careful if `x == 0' or `x == num.len', in * which case we should use 0 instead of (2) or (1), respectively. * * If `y == 0', then (2) contributes 0, as it should. However, * in some computer environments, for a reason I cannot understand, * `a >> b' means `a >> (b % N)'. This means `num.blk[x-1] >> (N - y)' * will return `num.blk[x-1]' instead of the desired 0 when `y == 0'; * the test `y == 0' handles this case specially. */ inline BigUnsigned::Blk getShiftedBlock(const BigUnsigned &num, BigUnsigned::Index x, unsigned int y) { BigUnsigned::Blk part1 = (x == 0 || y == 0) ? 0 : (num.blk[x - 1] >> (BigUnsigned::N - y)); BigUnsigned::Blk part2 = (x == num.len) ? 0 : (num.blk[x] << y); return part1 | part2; } void BigUnsigned::multiply(const BigUnsigned &a, const BigUnsigned &b) { DTRT_ALIASED(this == &a || this == &b, multiply(a, b)); // If either a or b is zero, set to zero. if (a.len == 0 || b.len == 0) { len = 0; return; } /* * Overall method: * * Set this = 0. * For each 1-bit of `a' (say the `i2'th bit of block `i'): * Add `b << (i blocks and i2 bits)' to *this. */ // Variables for the calculation Index i, j, k; unsigned int i2; Blk temp; bool carryIn, carryOut; // Set preliminary length and make room len = a.len + b.len; allocate(len); // Zero out this object for (i = 0; i < len; i++) blk[i] = 0; // For each block of the first number... for (i = 0; i < a.len; i++) { // For each 1-bit of that block... for (i2 = 0; i2 < N; i2++) { if ((a.blk[i] & (Blk(1) << i2)) == 0) continue; /* * Add b to this, shifted left i blocks and i2 bits. * j is the index in b, and k = i + j is the index in this. * * `getShiftedBlock', a short inline function defined above, * is now used for the bit handling. It replaces the more * complex `bHigh' code, in which each run of the loop dealt * immediately with the low bits and saved the high bits to * be picked up next time. The last run of the loop used to * leave leftover high bits, which were handled separately. * Instead, this loop runs an additional time with j == b.len. * These changes were made on 2005.01.11. */ for (j = 0, k = i, carryIn = false; j <= b.len; j++, k++) { /* * The body of this loop is very similar to the body of the first loop * in `add', except that this loop does a `+=' instead of a `+'. */ temp = blk[k] + getShiftedBlock(b, j, i2); carryOut = (temp < blk[k]); if (carryIn) { temp++; carryOut |= (temp == 0); } blk[k] = temp; carryIn = carryOut; } // No more extra iteration to deal with `bHigh'. // Roll-over a carry as necessary. for (; carryIn; k++) { blk[k]++; carryIn = (blk[k] == 0); } } } // Zap possible leading zero if (blk[len - 1] == 0) len--; } /* * DIVISION WITH REMAINDER * This monstrous function mods *this by the given divisor b while storing the * quotient in the given object q; at the end, *this contains the remainder. * The seemingly bizarre pattern of inputs and outputs was chosen so that the * function copies as little as possible (since it is implemented by repeated * subtraction of multiples of b from *this). * * "modWithQuotient" might be a better name for this function, but I would * rather not change the name now. */ void BigUnsigned::divideWithRemainder(const BigUnsigned &b, BigUnsigned &q) { /* Defending against aliased calls is more complex than usual because we * are writing to both *this and q. * * It would be silly to try to write quotient and remainder to the * same variable. Rule that out right away. */ if (this == &q) throw "BigUnsigned::divideWithRemainder: Cannot write quotient and remainder into the same variable"; /* Now *this and q are separate, so the only concern is that b might be * aliased to one of them. If so, use a temporary copy of b. */ if (this == &b || &q == &b) { BigUnsigned tmpB(b); divideWithRemainder(tmpB, q); return; } /* * Knuth's definition of mod (which this function uses) is somewhat * different from the C++ definition of % in case of division by 0. * * We let a / 0 == 0 (it doesn't matter much) and a % 0 == a, no * exceptions thrown. This allows us to preserve both Knuth's demand * that a mod 0 == a and the useful property that * (a / b) * b + (a % b) == a. */ if (b.len == 0) { q.len = 0; return; } /* * If *this.len < b.len, then *this < b, and we can be sure that b doesn't go into * *this at all. The quotient is 0 and *this is already the remainder (so leave it alone). */ if (len < b.len) { q.len = 0; return; } // At this point we know (*this).len >= b.len > 0. (Whew!) /* * Overall method: * * For each appropriate i and i2, decreasing: * Subtract (b << (i blocks and i2 bits)) from *this, storing the * result in subtractBuf. * If the subtraction succeeds with a nonnegative result: * Turn on bit i2 of block i of the quotient q. * Copy subtractBuf back into *this. * Otherwise bit i2 of block i remains off, and *this is unchanged. * * Eventually q will contain the entire quotient, and *this will * be left with the remainder. * * subtractBuf[x] corresponds to blk[x], not blk[x+i], since 2005.01.11. * But on a single iteration, we don't touch the i lowest blocks of blk * (and don't use those of subtractBuf) because these blocks are * unaffected by the subtraction: we are subtracting * (b << (i blocks and i2 bits)), which ends in at least `i' zero * blocks. */ // Variables for the calculation Index i, j, k; unsigned int i2; Blk temp; bool borrowIn, borrowOut; /* * Make sure we have an extra zero block just past the value. * * When we attempt a subtraction, we might shift `b' so * its first block begins a few bits left of the dividend, * and then we'll try to compare these extra bits with * a nonexistent block to the left of the dividend. The * extra zero block ensures sensible behavior; we need * an extra block in `subtractBuf' for exactly the same reason. */ Index origLen = len; // Save real length. /* To avoid an out-of-bounds access in case of reallocation, allocate * first and then increment the logical length. */ allocateAndCopy(len + 1); len++; blk[origLen] = 0; // Zero the added block. // subtractBuf holds part of the result of a subtraction; see above. Blk *subtractBuf = new Blk[len]; // Set preliminary length for quotient and make room q.len = origLen - b.len + 1; q.allocate(q.len); // Zero out the quotient for (i = 0; i < q.len; i++) q.blk[i] = 0; // For each possible left-shift of b in blocks... i = q.len; while (i > 0) { i--; // For each possible left-shift of b in bits... // (Remember, N is the number of bits in a Blk.) q.blk[i] = 0; i2 = N; while (i2 > 0) { i2--; /* * Subtract b, shifted left i blocks and i2 bits, from *this, * and store the answer in subtractBuf. In the for loop, `k == i + j'. * * Compare this to the middle section of `multiply'. They * are in many ways analogous. See especially the discussion * of `getShiftedBlock'. */ for (j = 0, k = i, borrowIn = false; j <= b.len; j++, k++) { temp = blk[k] - getShiftedBlock(b, j, i2); borrowOut = (temp > blk[k]); if (borrowIn) { borrowOut |= (temp == 0); temp--; } // Since 2005.01.11, indices of `subtractBuf' directly match those of `blk', so use `k'. subtractBuf[k] = temp; borrowIn = borrowOut; } // No more extra iteration to deal with `bHigh'. // Roll-over a borrow as necessary. for (; k < origLen && borrowIn; k++) { borrowIn = (blk[k] == 0); subtractBuf[k] = blk[k] - 1; } /* * If the subtraction was performed successfully (!borrowIn), * set bit i2 in block i of the quotient. * * Then, copy the portion of subtractBuf filled by the subtraction * back to *this. This portion starts with block i and ends-- * where? Not necessarily at block `i + b.len'! Well, we * increased k every time we saved a block into subtractBuf, so * the region of subtractBuf we copy is just [i, k). */ if (!borrowIn) { q.blk[i] |= (Blk(1) << i2); while (k > i) { k--; blk[k] = subtractBuf[k]; } } } } // Zap possible leading zero in quotient if (q.blk[q.len - 1] == 0) q.len--; // Zap any/all leading zeros in remainder zapLeadingZeros(); // Deallocate subtractBuf. // (Thanks to Brad Spencer for noticing my accidental omission of this!) delete [] subtractBuf; } /* BITWISE OPERATORS * These are straightforward blockwise operations except that they differ in * the output length and the necessity of zapLeadingZeros. */ void BigUnsigned::bitAnd(const BigUnsigned &a, const BigUnsigned &b) { DTRT_ALIASED(this == &a || this == &b, bitAnd(a, b)); // The bitwise & can't be longer than either operand. len = (a.len >= b.len) ? b.len : a.len; allocate(len); Index i; for (i = 0; i < len; i++) blk[i] = a.blk[i] & b.blk[i]; zapLeadingZeros(); } void BigUnsigned::bitOr(const BigUnsigned &a, const BigUnsigned &b) { DTRT_ALIASED(this == &a || this == &b, bitOr(a, b)); Index i; const BigUnsigned *a2, *b2; if (a.len >= b.len) { a2 = &a; b2 = &b; } else { a2 = &b; b2 = &a; } allocate(a2->len); for (i = 0; i < b2->len; i++) blk[i] = a2->blk[i] | b2->blk[i]; for (; i < a2->len; i++) blk[i] = a2->blk[i]; len = a2->len; // Doesn't need zapLeadingZeros. } void BigUnsigned::bitXor(const BigUnsigned &a, const BigUnsigned &b) { DTRT_ALIASED(this == &a || this == &b, bitXor(a, b)); Index i; const BigUnsigned *a2, *b2; if (a.len >= b.len) { a2 = &a; b2 = &b; } else { a2 = &b; b2 = &a; } allocate(a2->len); for (i = 0; i < b2->len; i++) blk[i] = a2->blk[i] ^ b2->blk[i]; for (; i < a2->len; i++) blk[i] = a2->blk[i]; len = a2->len; zapLeadingZeros(); } void BigUnsigned::bitShiftLeft(const BigUnsigned &a, int b) { DTRT_ALIASED(this == &a, bitShiftLeft(a, b)); if (b < 0) { if (b << 1 == 0) throw "BigUnsigned::bitShiftLeft: " "Pathological shift amount not implemented"; else { bitShiftRight(a, -b); return; } } Index shiftBlocks = b / N; unsigned int shiftBits = b % N; // + 1: room for high bits nudged left into another block len = a.len + shiftBlocks + 1; allocate(len); Index i, j; for (i = 0; i < shiftBlocks; i++) blk[i] = 0; for (j = 0, i = shiftBlocks; j <= a.len; j++, i++) blk[i] = getShiftedBlock(a, j, shiftBits); // Zap possible leading zero if (blk[len - 1] == 0) len--; } void BigUnsigned::bitShiftRight(const BigUnsigned &a, int b) { DTRT_ALIASED(this == &a, bitShiftRight(a, b)); if (b < 0) { if (b << 1 == 0) throw "BigUnsigned::bitShiftRight: " "Pathological shift amount not implemented"; else { bitShiftLeft(a, -b); return; } } // This calculation is wacky, but expressing the shift as a left bit shift // within each block lets us use getShiftedBlock. Index rightShiftBlocks = (b + N - 1) / N; unsigned int leftShiftBits = N * rightShiftBlocks - b; // Now (N * rightShiftBlocks - leftShiftBits) == b // and 0 <= leftShiftBits < N. if (rightShiftBlocks >= a.len + 1) { // All of a is guaranteed to be shifted off, even considering the left // bit shift. len = 0; return; } // Now we're allocating a positive amount. // + 1: room for high bits nudged left into another block len = a.len + 1 - rightShiftBlocks; allocate(len); Index i, j; for (j = rightShiftBlocks, i = 0; j <= a.len; j++, i++) blk[i] = getShiftedBlock(a, j, leftShiftBits); // Zap possible leading zero if (blk[len - 1] == 0) len--; } // INCREMENT/DECREMENT OPERATORS // Prefix increment void BigUnsigned::operator ++() { Index i; bool carry = true; for (i = 0; i < len && carry; i++) { blk[i]++; carry = (blk[i] == 0); } if (carry) { // Allocate and then increase length, as in divideWithRemainder allocateAndCopy(len + 1); len++; blk[i] = 1; } } // Postfix increment: same as prefix void BigUnsigned::operator ++(int) { operator ++(); } // Prefix decrement void BigUnsigned::operator --() { if (len == 0) throw "BigUnsigned::operator --(): Cannot decrement an unsigned zero"; Index i; bool borrow = true; for (i = 0; borrow; i++) { borrow = (blk[i] == 0); blk[i]--; } // Zap possible leading zero (there can only be one) if (blk[len - 1] == 0) len--; } // Postfix decrement: same as prefix void BigUnsigned::operator --(int) { operator --(); } yubioath-desktop/QZXing/zxing/bigint/BigUnsigned.hh000066400000000000000000000346421412677075700227140ustar00rootroot00000000000000#ifndef BIGUNSIGNED_H #define BIGUNSIGNED_H #include "NumberlikeArray.hh" /* A BigUnsigned object represents a nonnegative integer of size limited only by * available memory. BigUnsigneds support most mathematical operators and can * be converted to and from most primitive integer types. * * The number is stored as a NumberlikeArray of unsigned longs as if it were * written in base 256^sizeof(unsigned long). The least significant block is * first, and the length is such that the most significant block is nonzero. */ class BigUnsigned : protected NumberlikeArray { public: // Enumeration for the result of a comparison. enum CmpRes { less = -1, equal = 0, greater = 1 }; // BigUnsigneds are built with a Blk type of unsigned long. typedef unsigned long Blk; typedef NumberlikeArray::Index Index; using NumberlikeArray::N; protected: // Creates a BigUnsigned with a capacity; for internal use. BigUnsigned(int, Index c) : NumberlikeArray(0, c) {} // Decreases len to eliminate any leading zero blocks. void zapLeadingZeros() { while (len > 0 && blk[len - 1] == 0) len--; } public: // Constructs zero. BigUnsigned() : NumberlikeArray() {} // Copy constructor BigUnsigned(const BigUnsigned &x) : NumberlikeArray(x) {} // Assignment operator void operator=(const BigUnsigned &x) { NumberlikeArray::operator =(x); } // Constructor that copies from a given array of blocks. BigUnsigned(const Blk *b, Index blen) : NumberlikeArray(b, blen) { // Eliminate any leading zeros we may have been passed. zapLeadingZeros(); } // Destructor. NumberlikeArray does the delete for us. ~BigUnsigned() {} // Constructors from primitive integer types BigUnsigned(unsigned long x); BigUnsigned( long x); BigUnsigned(unsigned int x); BigUnsigned( int x); BigUnsigned(unsigned short x); BigUnsigned( short x); protected: // Helpers template void initFromPrimitive (X x); template void initFromSignedPrimitive(X x); public: /* Converters to primitive integer types * The implicit conversion operators caused trouble, so these are now * named. */ unsigned long toUnsignedLong () const; long toLong () const; unsigned int toUnsignedInt () const; int toInt () const; unsigned short toUnsignedShort() const; short toShort () const; protected: // Helpers template X convertToSignedPrimitive() const; template X convertToPrimitive () const; public: // BIT/BLOCK ACCESSORS // Expose these from NumberlikeArray directly. using NumberlikeArray::getCapacity; using NumberlikeArray::getLength; /* Returns the requested block, or 0 if it is beyond the length (as if * the number had 0s infinitely to the left). */ Blk getBlock(Index i) const { return i >= len ? 0 : blk[i]; } /* Sets the requested block. The number grows or shrinks as necessary. */ void setBlock(Index i, Blk newBlock); // The number is zero if and only if the canonical length is zero. bool isZero() const { return NumberlikeArray::isEmpty(); } /* Returns the length of the number in bits, i.e., zero if the number * is zero and otherwise one more than the largest value of bi for * which getBit(bi) returns true. */ Index bitLength() const; /* Get the state of bit bi, which has value 2^bi. Bits beyond the * number's length are considered to be 0. */ bool getBit(Index bi) const { return (getBlock(bi / N) & (Blk(1) << (bi % N))) != 0; } /* Sets the state of bit bi to newBit. The number grows or shrinks as * necessary. */ void setBit(Index bi, bool newBit); // COMPARISONS // Compares this to x like Perl's <=> CmpRes compareTo(const BigUnsigned &x) const; // Ordinary comparison operators bool operator ==(const BigUnsigned &x) const { return NumberlikeArray::operator ==(x); } bool operator !=(const BigUnsigned &x) const { return NumberlikeArray::operator !=(x); } bool operator < (const BigUnsigned &x) const { return compareTo(x) == less ; } bool operator <=(const BigUnsigned &x) const { return compareTo(x) != greater; } bool operator >=(const BigUnsigned &x) const { return compareTo(x) != less ; } bool operator > (const BigUnsigned &x) const { return compareTo(x) == greater; } /* * BigUnsigned and BigInteger both provide three kinds of operators. * Here ``big-integer'' refers to BigInteger or BigUnsigned. * * (1) Overloaded ``return-by-value'' operators: * +, -, *, /, %, unary -, &, |, ^, <<, >>. * Big-integer code using these operators looks identical to code using * the primitive integer types. These operators take one or two * big-integer inputs and return a big-integer result, which can then * be assigned to a BigInteger variable or used in an expression. * Example: * BigInteger a(1), b = 1; * BigInteger c = a + b; * * (2) Overloaded assignment operators: * +=, -=, *=, /=, %=, flipSign, &=, |=, ^=, <<=, >>=, ++, --. * Again, these are used on big integers just like on ints. They take * one writable big integer that both provides an operand and receives a * result. Most also take a second read-only operand. * Example: * BigInteger a(1), b(1); * a += b; * * (3) Copy-less operations: `add', `subtract', etc. * These named methods take operands as arguments and store the result * in the receiver (*this), avoiding unnecessary copies and allocations. * `divideWithRemainder' is special: it both takes the dividend from and * stores the remainder into the receiver, and it takes a separate * object in which to store the quotient. NOTE: If you are wondering * why these don't return a value, you probably mean to use the * overloaded return-by-value operators instead. * * Examples: * BigInteger a(43), b(7), c, d; * * c = a + b; // Now c == 50. * c.add(a, b); // Same effect but without the two copies. * * c.divideWithRemainder(b, d); * // 50 / 7; now d == 7 (quotient) and c == 1 (remainder). * * // ``Aliased'' calls now do the right thing using a temporary * // copy, but see note on `divideWithRemainder'. * a.add(a, b); */ // COPY-LESS OPERATIONS // These 8: Arguments are read-only operands, result is saved in *this. void add(const BigUnsigned &a, const BigUnsigned &b); void subtract(const BigUnsigned &a, const BigUnsigned &b); void multiply(const BigUnsigned &a, const BigUnsigned &b); void bitAnd(const BigUnsigned &a, const BigUnsigned &b); void bitOr(const BigUnsigned &a, const BigUnsigned &b); void bitXor(const BigUnsigned &a, const BigUnsigned &b); /* Negative shift amounts translate to opposite-direction shifts, * except for -2^(8*sizeof(int)-1) which is unimplemented. */ void bitShiftLeft(const BigUnsigned &a, int b); void bitShiftRight(const BigUnsigned &a, int b); /* `a.divideWithRemainder(b, q)' is like `q = a / b, a %= b'. * / and % use semantics similar to Knuth's, which differ from the * primitive integer semantics under division by zero. See the * implementation in BigUnsigned.cc for details. * `a.divideWithRemainder(b, a)' throws an exception: it doesn't make * sense to write quotient and remainder into the same variable. */ void divideWithRemainder(const BigUnsigned &b, BigUnsigned &q); /* `divide' and `modulo' are no longer offered. Use * `divideWithRemainder' instead. */ // OVERLOADED RETURN-BY-VALUE OPERATORS BigUnsigned operator +(const BigUnsigned &x) const; BigUnsigned operator -(const BigUnsigned &x) const; BigUnsigned operator *(const BigUnsigned &x) const; BigUnsigned operator /(const BigUnsigned &x) const; BigUnsigned operator %(const BigUnsigned &x) const; /* OK, maybe unary minus could succeed in one case, but it really * shouldn't be used, so it isn't provided. */ BigUnsigned operator &(const BigUnsigned &x) const; BigUnsigned operator |(const BigUnsigned &x) const; BigUnsigned operator ^(const BigUnsigned &x) const; BigUnsigned operator <<(int b) const; BigUnsigned operator >>(int b) const; // OVERLOADED ASSIGNMENT OPERATORS void operator +=(const BigUnsigned &x); void operator -=(const BigUnsigned &x); void operator *=(const BigUnsigned &x); void operator /=(const BigUnsigned &x); void operator %=(const BigUnsigned &x); void operator &=(const BigUnsigned &x); void operator |=(const BigUnsigned &x); void operator ^=(const BigUnsigned &x); void operator <<=(int b); void operator >>=(int b); /* INCREMENT/DECREMENT OPERATORS * To discourage messy coding, these do not return *this, so prefix * and postfix behave the same. */ void operator ++( ); void operator ++(int); void operator --( ); void operator --(int); // Helper function that needs access to BigUnsigned internals friend Blk getShiftedBlock(const BigUnsigned &num, Index x, unsigned int y); // See BigInteger.cc. template friend X convertBigUnsignedToPrimitiveAccess(const BigUnsigned &a); }; /* Implementing the return-by-value and assignment operators in terms of the * copy-less operations. The copy-less operations are responsible for making * any necessary temporary copies to work around aliasing. */ inline BigUnsigned BigUnsigned::operator +(const BigUnsigned &x) const { BigUnsigned ans; ans.add(*this, x); return ans; } inline BigUnsigned BigUnsigned::operator -(const BigUnsigned &x) const { BigUnsigned ans; ans.subtract(*this, x); return ans; } inline BigUnsigned BigUnsigned::operator *(const BigUnsigned &x) const { BigUnsigned ans; ans.multiply(*this, x); return ans; } inline BigUnsigned BigUnsigned::operator /(const BigUnsigned &x) const { if (x.isZero()) throw "BigUnsigned::operator /: division by zero"; BigUnsigned q, r; r = *this; r.divideWithRemainder(x, q); return q; } inline BigUnsigned BigUnsigned::operator %(const BigUnsigned &x) const { if (x.isZero()) throw "BigUnsigned::operator %: division by zero"; BigUnsigned q, r; r = *this; r.divideWithRemainder(x, q); return r; } inline BigUnsigned BigUnsigned::operator &(const BigUnsigned &x) const { BigUnsigned ans; ans.bitAnd(*this, x); return ans; } inline BigUnsigned BigUnsigned::operator |(const BigUnsigned &x) const { BigUnsigned ans; ans.bitOr(*this, x); return ans; } inline BigUnsigned BigUnsigned::operator ^(const BigUnsigned &x) const { BigUnsigned ans; ans.bitXor(*this, x); return ans; } inline BigUnsigned BigUnsigned::operator <<(int b) const { BigUnsigned ans; ans.bitShiftLeft(*this, b); return ans; } inline BigUnsigned BigUnsigned::operator >>(int b) const { BigUnsigned ans; ans.bitShiftRight(*this, b); return ans; } inline void BigUnsigned::operator +=(const BigUnsigned &x) { add(*this, x); } inline void BigUnsigned::operator -=(const BigUnsigned &x) { subtract(*this, x); } inline void BigUnsigned::operator *=(const BigUnsigned &x) { multiply(*this, x); } inline void BigUnsigned::operator /=(const BigUnsigned &x) { if (x.isZero()) throw "BigUnsigned::operator /=: division by zero"; /* The following technique is slightly faster than copying *this first * when x is large. */ BigUnsigned q; divideWithRemainder(x, q); // *this contains the remainder, but we overwrite it with the quotient. *this = q; } inline void BigUnsigned::operator %=(const BigUnsigned &x) { if (x.isZero()) throw "BigUnsigned::operator %=: division by zero"; BigUnsigned q; // Mods *this by x. Don't care about quotient left in q. divideWithRemainder(x, q); } inline void BigUnsigned::operator &=(const BigUnsigned &x) { bitAnd(*this, x); } inline void BigUnsigned::operator |=(const BigUnsigned &x) { bitOr(*this, x); } inline void BigUnsigned::operator ^=(const BigUnsigned &x) { bitXor(*this, x); } inline void BigUnsigned::operator <<=(int b) { bitShiftLeft(*this, b); } inline void BigUnsigned::operator >>=(int b) { bitShiftRight(*this, b); } /* Templates for conversions of BigUnsigned to and from primitive integers. * BigInteger.cc needs to instantiate convertToPrimitive, and the uses in * BigUnsigned.cc didn't do the trick; I think g++ inlined convertToPrimitive * instead of generating linkable instantiations. So for consistency, I put * all the templates here. */ // CONSTRUCTION FROM PRIMITIVE INTEGERS /* Initialize this BigUnsigned from the given primitive integer. The same * pattern works for all primitive integer types, so I put it into a template to * reduce code duplication. (Don't worry: this is protected and we instantiate * it only with primitive integer types.) Type X could be signed, but x is * known to be nonnegative. */ template void BigUnsigned::initFromPrimitive(X x) { if (x == 0) ; // NumberlikeArray already initialized us to zero. else { // Create a single block. blk is NULL; no need to delete it. cap = 1; blk = new Blk[1]; len = 1; blk[0] = Blk(x); } } /* Ditto, but first check that x is nonnegative. I could have put the check in * initFromPrimitive and let the compiler optimize it out for unsigned-type * instantiations, but I wanted to avoid the warning stupidly issued by g++ for * a condition that is constant in *any* instantiation, even if not in all. */ template void BigUnsigned::initFromSignedPrimitive(X x) { if (x < 0) throw "BigUnsigned constructor: " "Cannot construct a BigUnsigned from a negative number"; else initFromPrimitive(x); } // CONVERSION TO PRIMITIVE INTEGERS /* Template with the same idea as initFromPrimitive. This might be slightly * slower than the previous version with the masks, but it's much shorter and * clearer, which is the library's stated goal. */ template X BigUnsigned::convertToPrimitive() const { if (len == 0) // The number is zero; return zero. return 0; else if (len == 1) { // The single block might fit in an X. Try the conversion. X x = X(blk[0]); // Make sure the result accurately represents the block. if (Blk(x) == blk[0]) // Successful conversion. return x; // Otherwise fall through. } throw "BigUnsigned::to: " "Value is too big to fit in the requested type"; } /* Wrap the above in an x >= 0 test to make sure we got a nonnegative result, * not a negative one that happened to convert back into the correct nonnegative * one. (E.g., catch incorrect conversion of 2^31 to the long -2^31.) Again, * separated to avoid a g++ warning. */ template X BigUnsigned::convertToSignedPrimitive() const { X x = convertToPrimitive(); if (x >= 0) return x; else throw "BigUnsigned::to(Primitive): " "Value is too big to fit in the requested type"; } #endif yubioath-desktop/QZXing/zxing/bigint/BigUnsignedInABase.cc000066400000000000000000000102311412677075700240510ustar00rootroot00000000000000#include "BigUnsignedInABase.hh" BigUnsignedInABase::BigUnsignedInABase(const Digit *d, Index l, Base base) : NumberlikeArray(d, l), base(base) { // Check the base if (base < 2) throw "BigUnsignedInABase::BigUnsignedInABase(const Digit *, Index, Base): The base must be at least 2"; // Validate the digits. for (Index i = 0; i < l; i++) if (blk[i] >= base) throw "BigUnsignedInABase::BigUnsignedInABase(const Digit *, Index, Base): A digit is too large for the specified base"; // Eliminate any leading zeros we may have been passed. zapLeadingZeros(); } namespace { unsigned int bitLen(unsigned int x) { unsigned int len = 0; while (x > 0) { x >>= 1; len++; } return len; } unsigned int ceilingDiv(unsigned int a, unsigned int b) { return (a + b - 1) / b; } } BigUnsignedInABase::BigUnsignedInABase(const BigUnsigned &x, Base base) { // Check the base if (base < 2) throw "BigUnsignedInABase(BigUnsigned, Base): The base must be at least 2"; this->base = base; // Get an upper bound on how much space we need int maxBitLenOfX = x.getLength() * BigUnsigned::N; int minBitsPerDigit = bitLen(base) - 1; int maxDigitLenOfX = ceilingDiv(maxBitLenOfX, minBitsPerDigit); len = maxDigitLenOfX; // Another change to comply with `staying in bounds'. allocate(len); // Get the space BigUnsigned x2(x), buBase(base); Index digitNum = 0; while (!x2.isZero()) { // Get last digit. This is like `lastDigit = x2 % buBase, x2 /= buBase'. BigUnsigned lastDigit(x2); lastDigit.divideWithRemainder(buBase, x2); // Save the digit. blk[digitNum] = lastDigit.toUnsignedShort(); // Move on. We can't run out of room: we figured it out above. digitNum++; } // Save the actual length. len = digitNum; } BigUnsignedInABase::operator BigUnsigned() const { BigUnsigned ans(0), buBase(base), temp; Index digitNum = len; while (digitNum > 0) { digitNum--; temp.multiply(ans, buBase); ans.add(temp, BigUnsigned(blk[digitNum])); } return ans; } BigUnsignedInABase::BigUnsignedInABase(const std::string &s, Base base) { // Check the base. if (base > 36) throw "BigUnsignedInABase(std::string, Base): The default string conversion routines use the symbol set 0-9, A-Z and therefore support only up to base 36. You tried a conversion with a base over 36; write your own string conversion routine."; // Save the base. // This pattern is seldom seen in C++, but the analogous ``this.'' is common in Java. this->base = base; // `s.length()' is a `size_t', while `len' is a `NumberlikeArray::Index', // also known as an `unsigned int'. Some compilers warn without this cast. len = Index(s.length()); allocate(len); Index digitNum, symbolNumInString; for (digitNum = 0; digitNum < len; digitNum++) { symbolNumInString = len - 1 - digitNum; char theSymbol = s[symbolNumInString]; if (theSymbol >= '0' && theSymbol <= '9') blk[digitNum] = theSymbol - '0'; else if (theSymbol >= 'A' && theSymbol <= 'Z') blk[digitNum] = theSymbol - 'A' + 10; else if (theSymbol >= 'a' && theSymbol <= 'z') blk[digitNum] = theSymbol - 'a' + 10; else throw "BigUnsignedInABase(std::string, Base): Bad symbol in input. Only 0-9, A-Z, a-z are accepted."; if (blk[digitNum] >= base) throw "BigUnsignedInABase::BigUnsignedInABase(const Digit *, Index, Base): A digit is too large for the specified base"; } zapLeadingZeros(); } BigUnsignedInABase::operator std::string() const { if (base > 36) throw "BigUnsignedInABase ==> std::string: The default string conversion routines use the symbol set 0-9, A-Z and therefore support only up to base 36. You tried a conversion with a base over 36; write your own string conversion routine."; if (len == 0) return std::string("0"); // Some compilers don't have push_back, so use a char * buffer instead. char *s = new char[len + 1]; s[len] = '\0'; Index digitNum, symbolNumInString; for (symbolNumInString = 0; symbolNumInString < len; symbolNumInString++) { digitNum = len - 1 - symbolNumInString; Digit theDigit = blk[digitNum]; if (theDigit < 10) s[symbolNumInString] = char('0' + theDigit); else s[symbolNumInString] = char('A' + theDigit - 10); } std::string s2(s); delete [] s; return s2; } yubioath-desktop/QZXing/zxing/bigint/BigUnsignedInABase.hh000066400000000000000000000100301412677075700240600ustar00rootroot00000000000000#ifndef BIGUNSIGNEDINABASE_H #define BIGUNSIGNEDINABASE_H #include "NumberlikeArray.hh" #include "BigUnsigned.hh" #include /* * A BigUnsignedInABase object represents a nonnegative integer of size limited * only by available memory, represented in a user-specified base that can fit * in an `unsigned short' (most can, and this saves memory). * * BigUnsignedInABase is intended as an intermediary class with little * functionality of its own. BigUnsignedInABase objects can be constructed * from, and converted to, BigUnsigneds (requiring multiplication, mods, etc.) * and `std::string's (by switching digit values for appropriate characters). * * BigUnsignedInABase is similar to BigUnsigned. Note the following: * * (1) They represent the number in exactly the same way, except that * BigUnsignedInABase uses ``digits'' (or Digit) where BigUnsigned uses * ``blocks'' (or Blk). * * (2) Both use the management features of NumberlikeArray. (In fact, my desire * to add a BigUnsignedInABase class without duplicating a lot of code led me to * introduce NumberlikeArray.) * * (3) The only arithmetic operation supported by BigUnsignedInABase is an * equality test. Use BigUnsigned for arithmetic. */ class BigUnsignedInABase : protected NumberlikeArray { public: // The digits of a BigUnsignedInABase are unsigned shorts. typedef unsigned short Digit; // That's also the type of a base. typedef Digit Base; protected: // The base in which this BigUnsignedInABase is expressed Base base; // Creates a BigUnsignedInABase with a capacity; for internal use. BigUnsignedInABase(int, Index c) : NumberlikeArray(0, c) {} // Decreases len to eliminate any leading zero digits. void zapLeadingZeros() { while (len > 0 && blk[len - 1] == 0) len--; } public: // Constructs zero in base 2. BigUnsignedInABase() : NumberlikeArray(), base(2) {} // Copy constructor BigUnsignedInABase(const BigUnsignedInABase &x) : NumberlikeArray(x), base(x.base) {} // Assignment operator void operator =(const BigUnsignedInABase &x) { NumberlikeArray::operator =(x); base = x.base; } // Constructor that copies from a given array of digits. BigUnsignedInABase(const Digit *d, Index l, Base base); // Destructor. NumberlikeArray does the delete for us. ~BigUnsignedInABase() {} // LINKS TO BIGUNSIGNED BigUnsignedInABase(const BigUnsigned &x, Base base); operator BigUnsigned() const; /* LINKS TO STRINGS * * These use the symbols ``0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'' to * represent digits of 0 through 35. When parsing strings, lowercase is * also accepted. * * All string representations are big-endian (big-place-value digits * first). (Computer scientists have adopted zero-based counting; why * can't they tolerate little-endian numbers?) * * No string representation has a ``base indicator'' like ``0x''. * * An exception is made for zero: it is converted to ``0'' and not the * empty string. * * If you want different conventions, write your own routines to go * between BigUnsignedInABase and strings. It's not hard. */ operator std::string() const; BigUnsignedInABase(const std::string &s, Base base); public: // ACCESSORS Base getBase() const { return base; } // Expose these from NumberlikeArray directly. using NumberlikeArray::getCapacity; using NumberlikeArray::getLength; /* Returns the requested digit, or 0 if it is beyond the length (as if * the number had 0s infinitely to the left). */ Digit getDigit(Index i) const { return i >= len ? 0 : blk[i]; } // The number is zero if and only if the canonical length is zero. bool isZero() const { return NumberlikeArray::isEmpty(); } /* Equality test. For the purposes of this test, two BigUnsignedInABase * values must have the same base to be equal. */ bool operator ==(const BigUnsignedInABase &x) const { return base == x.base && NumberlikeArray::operator ==(x); } bool operator !=(const BigUnsignedInABase &x) const { return !operator ==(x); } }; #endif yubioath-desktop/QZXing/zxing/bigint/CMakeLists.txt000066400000000000000000000010051412677075700227200ustar00rootroot00000000000000SET(SOURCES ${BIGINT_DIR}/BigInteger.hh ${BIGINT_DIR}/BigInteger.cc ${BIGINT_DIR}/BigIntegerAlgorithms.hh ${BIGINT_DIR}/BigIntegerAlgorithms.cc ${BIGINT_DIR}/BigIntegerLibrary.hh ${BIGINT_DIR}/BigIntegerUtils.hh ${BIGINT_DIR}/BigIntegerUtils.cc ${BIGINT_DIR}/BigUnsigned.hh ${BIGINT_DIR}/BigUnsigned.cc ${BIGINT_DIR}/BigUnsignedInABase.hh ${BIGINT_DIR}/BigUnsignedInABase.cc ${BIGINT_DIR}/NumberlikeArray.hh ) target_sources(qzxing PRIVATE ${SOURCES}) yubioath-desktop/QZXing/zxing/bigint/ChangeLog000066400000000000000000000215441412677075700217440ustar00rootroot00000000000000 Change Log These entries tell you what was added, fixed, or improved in each version as compared to the previous one. In case you haven't noticed, a version number roughly corresponds to the release date of that version in `YYYY.MM.DD[.N]' format, where `.N' goes `.2', `.3', etc. if there are multiple versions on the same day. The topmost version listed is the one you have. 2010.04.30 ---------- - Strengthen the advice about build/IDE configuration in the README. 2009.05.03 ---------- - BigUnsigned::{get,set}Bit: Change two remaining `1 <<' to `Blk(1) <<' to work on systems where sizeof(unsigned int) != sizeof(Blk). Bug reported by Brad Spencer. - dataToBigInteger: Change a `delete' to `delete []' to avoid leaking memory. Bug reported by Nicolás Carrasco. 2009.03.26 ---------- - BigUnsignedInABase(std::string) Reject digits too big for the base. Bug reported by Niakam Kazemi. 2008.07.20 ---------- Dennis Yew pointed out serious problems with ambiguities and unwanted conversions when mixing BigInteger/BigUnsigned and primitive integers. To fix these, I removed the implicit conversions from BigInteger/BigUnsigned to primitive integers and from BigInteger to BigUnsigned. Removing the BigInteger-to-BigUnsigned conversion required changing BigInteger to have a BigUnsigned field instead of inheriting from it; this was a complex task but ultimately gave a saner design. At the same time, I went through the entire codebase, making the formatting and comments prettier and reworking anything I thought was unclear. I also added a testsuite (currently for 32-bit systems only); it doesn't yet cover the entire library but should help to ensure that things work the way they should. A number of changes from version 2007.07.07 break compatibility with existing code that uses the library, but updating that code should be pretty easy: - BigInteger can no longer be implicitly converted to BigUnsigned. Use getMagnitude() instead. - BigUnsigned and BigInteger can no longer be implicitly converted to primitive integers. Use the toInt() family of functions instead. - The easy* functions have been renamed to more mature names: bigUnsignedToString, bigIntegerToString, stringToBigUnsigned, stringToBigInteger, dataToBigInteger. - BigInteger no longer supports bitwise operations. Get the magnitude with getMagnitude() and operate on that instead. - The old {BigUnsigned,BigInteger}::{divide,modulo} copy-less options have been removed. Use divideWithRemainder instead. - Added a base argument to BigUnsignedInABase's digit-array constructor. I ope no one used that constructor in its broken state anyway. Other notable changes: - Added BigUnsigned functions setBlock, bitLength, getBit, setBit. - The bit-shifting operations now support negative shift amounts, which shift in the other direction. - Added some big-integer algorithms in BigIntegerAlgorithms.hh: gcd, extendedEuclidean, modinv, modexp. 2007.07.07 ---------- Update the "Running the sample program produces this output:" comment in sample.cc for the bitwise operators. 2007.06.14 ---------- - Implement << and >> for BigUnsigned in response to email from Marco Schulze. - Fix name: DOTR_ALIASED -> DTRT_ALIASED. - Demonstrate all bitwise operators (&, |, ^, <<, >>) in sample.cc. 2007.02.16 ---------- Boris Dessy pointed out that the library threw an exception on "a *= a", so I changed all the put-here operations to handle aliased calls correctly using a temporary copy instead of throwing exceptions. 2006.08.14 ---------- In BigUnsigned::bitXor, change allocate(b2->len) to allocate(a2->len): we should allocate enough space for the longer number, not the shorter one! Thanks to Sriram Sankararaman for pointing this out. 2006.05.03 ---------- I ran the sample program using valgrind and discovered a `delete s' that should be `delete [] s' and a `len++' before an `allocateAndCopy(len)' that should have been after an `allocateAndCopy(len + 1)'. I fixed both. Yay for valgrind! 2006.05.01 ---------- I fixed incorrect results reported by Mohand Mezmaz and related memory corruption on platforms where Blk is bigger than int. I replaced (1 << x) with (Blk(1) << x) in two places in BigUnsigned.cc. 2006.04.24 ---------- Two bug fixes: BigUnsigned "++x" no longer segfaults when x grows in length, and BigUnsigned == and != are now redeclared so as to be usable. I redid the Makefile: I removed the *.tag mechanism and hard-coded the library's header dependencies, I added comments, and I made the Makefile more useful for building one's own programs instead of just the sample. 2006.02.26 ---------- A few tweaks in preparation for a group to distribute the library. The project Web site has moved; I updated the references. I fixed a typo and added a missing function in NumberlikeArray.hh. I'm using Eclipse now, so you get Eclipse project files. 2005.03.30 ---------- Sam Larkin found a bug in `BigInteger::subtract'; I fixed it. 2005.01.18 ---------- I fixed some problems with `easyDataToBI'. Due to some multiply declared variables, this function would not compile. However, it is a template function, so the compiler parses it and doesn't compile the parsed representation until something uses the function; this is how I missed the problems. I also removed debugging output from this function. 2005.01.17 ---------- A fix to some out-of-bounds accesses reported by Milan Tomic (see the comment under `BigUnsigned::divideWithRemainder'). `BigUnsigned::multiply' and `BigUnsigned::divideWithRemainder' implementations neatened up a bit with the help of a function `getShiftedBlock'. I (finally!) introduced a constant `BigUnsigned::N', the number of bits in a `BigUnsigned::Blk', which varies depending on machine word size. In both code and comments, it replaces the much clunkier `8*sizeof(Blk)'. Numerous other small changes. There's a new conversion routine `easyDataToBI' that will convert almost any format of binary data to a `BigInteger'. I have inserted a significant number of new comments. Most explain unobvious aspects of the code. 2005.01.06 ---------- Some changes to the way zero-length arrays are handled by `NumberlikeArray', which fixed a memory leak reported by Milan Tomic. 2004.12.24.2 ------------ I tied down a couple of loose ends involving division/modulo. I added an explanation of put-here vs. overloaded operators in the sample program; this has confused too many people. Miscellaneous other improvements. I believe that, at this point, the Big Integer Library makes no assumptions about the word size of the machine it is using. `BigUnsigned::Blk' is always an `unsigned long', whatever that may be, and its size is computed with `sizeof' when necessary. However, just in case, I would be interested to have someone test the library on a non-32-bit machine to see if it works. 2004.12.24 ---------- This is a _major_ upgrade to the library. Among the things that have changed: I wrote the original version of the library, particularly the four ``classical algorithms'' in `BigUnsigned.cc', using array indexing. Then I rewrote it to use pointers because I thought that would be faster. But recently, I revisited the code in `BigUnsigned.cc' and found that I could not begin to understand what it was doing. I have decided that the drawbacks of pointers, increased coding difficulty and reduced code readability, far outweigh their speed benefits. Plus, any modern optimizing compiler should produce fast code either way. Therefore, I rewrote the library to use array indexing again. (Thank goodness for regular-expression find-and-replace. It saved me a lot of time.) The put-here operations `divide' and `modulo' of each of `BigUnsigned' and `BigInteger' have been supplanted by a single operation `divideWithRemainder'. Read the profuse comments for more information on its exact behavior. There is a new class `BigUnsignedInABase' that is like `BigUnsigned' but uses a user-specified, small base instead of `256 ^ sizeof(unsigned long)'. Much of the code common to the two has been factored out into `NumberlikeArray'. `BigUnsignedInABase' facilitates conversion between `BigUnsigned's and digit-by-digit string representations using `std::string'. Convenience routines to do this conversion are in `BigIntegerUtils.hh'. `iostream' compatibility has been improved. I would like to thank Chris Morbitzer for the e-mail message that catalyzed this major upgrade. He wanted a way to convert a string to a BigInteger. One thing just led to another, roughly in reverse order from how they are listed here. 2004.1216 --------- Brad Spencer pointed out a memory leak in `BigUnsigned::divide'. It is fixed in the December 16, 2004 version. 2004.1205 --------- After months of inactivity, I fixed a bug in the `BigInteger' division routine; thanks to David Allen for reporting the bug. I also added simple routines for decimal output to `std::ostream's, and there is a demo that prints out powers of 3. ~~~~ yubioath-desktop/QZXing/zxing/bigint/NumberlikeArray.hh000066400000000000000000000111441412677075700236020ustar00rootroot00000000000000#ifndef NUMBERLIKEARRAY_H #define NUMBERLIKEARRAY_H // Make sure we have NULL. #ifndef NULL #define NULL 0 #endif /* A NumberlikeArray object holds a heap-allocated array of Blk with a * length and a capacity and provides basic memory management features. * BigUnsigned and BigUnsignedInABase both subclass it. * * NumberlikeArray provides no information hiding. Subclasses should use * nonpublic inheritance and manually expose members as desired using * declarations like this: * * public: * NumberlikeArray< the-type-argument >::getLength; */ template class NumberlikeArray { public: // Type for the index of a block in the array typedef unsigned int Index; // The number of bits in a block, defined below. static const unsigned int N; // The current allocated capacity of this NumberlikeArray (in blocks) Index cap; // The actual length of the value stored in this NumberlikeArray (in blocks) Index len; // Heap-allocated array of the blocks (can be NULL if len == 0) Blk *blk; // Constructs a ``zero'' NumberlikeArray with the given capacity. NumberlikeArray(Index c) : cap(c), len(0) { blk = (cap > 0) ? (new Blk[cap]) : NULL; } /* Constructs a zero NumberlikeArray without allocating a backing array. * A subclass that doesn't know the needed capacity at initialization * time can use this constructor and then overwrite blk without first * deleting it. */ NumberlikeArray() : cap(0), len(0) { blk = NULL; } // Destructor. Note that `delete NULL' is a no-op. ~NumberlikeArray() { delete [] blk; } /* Ensures that the array has at least the requested capacity; may * destroy the contents. */ void allocate(Index c); /* Ensures that the array has at least the requested capacity; does not * destroy the contents. */ void allocateAndCopy(Index c); // Copy constructor NumberlikeArray(const NumberlikeArray &x); // Assignment operator void operator=(const NumberlikeArray &x); // Constructor that copies from a given array of blocks NumberlikeArray(const Blk *b, Index blen); // ACCESSORS Index getCapacity() const { return cap; } Index getLength() const { return len; } Blk getBlock(Index i) const { return blk[i]; } bool isEmpty() const { return len == 0; } /* Equality comparison: checks if both objects have the same length and * equal (==) array elements to that length. Subclasses may wish to * override. */ bool operator ==(const NumberlikeArray &x) const; bool operator !=(const NumberlikeArray &x) const { return !operator ==(x); } }; /* BEGIN TEMPLATE DEFINITIONS. They are present here so that source files that * include this header file can generate the necessary real definitions. */ template const unsigned int NumberlikeArray::N = 8 * sizeof(Blk); template void NumberlikeArray::allocate(Index c) { // If the requested capacity is more than the current capacity... if (c > cap) { // Delete the old number array delete [] blk; // Allocate the new array cap = c; blk = new Blk[cap]; } } template void NumberlikeArray::allocateAndCopy(Index c) { // If the requested capacity is more than the current capacity... if (c > cap) { Blk *oldBlk = blk; // Allocate the new number array cap = c; blk = new Blk[cap]; // Copy number blocks Index i; for (i = 0; i < len; i++) blk[i] = oldBlk[i]; // Delete the old array delete [] oldBlk; } } template NumberlikeArray::NumberlikeArray(const NumberlikeArray &x) : len(x.len) { // Create array cap = len; blk = new Blk[cap]; // Copy blocks Index i; for (i = 0; i < len; i++) blk[i] = x.blk[i]; } template void NumberlikeArray::operator=(const NumberlikeArray &x) { /* Calls like a = a have no effect; catch them before the aliasing * causes a problem */ if (this == &x) return; // Copy length len = x.len; // Expand array if necessary allocate(len); // Copy number blocks Index i; for (i = 0; i < len; i++) blk[i] = x.blk[i]; } template NumberlikeArray::NumberlikeArray(const Blk *b, Index blen) : cap(blen), len(blen) { // Create array blk = new Blk[cap]; // Copy blocks Index i; for (i = 0; i < len; i++) blk[i] = b[i]; } template bool NumberlikeArray::operator ==(const NumberlikeArray &x) const { if (len != x.len) // Definitely unequal. return false; else { // Compare corresponding blocks one by one. Index i; for (i = 0; i < len; i++) if (blk[i] != x.blk[i]) return false; // No blocks differed, so the objects are equal. return true; } } #endif yubioath-desktop/QZXing/zxing/bigint/README000066400000000000000000000064471412677075700210570ustar00rootroot00000000000000 C++ Big Integer Library (see ChangeLog for version) http://mattmccutchen.net/bigint/ Written and maintained by Matt McCutchen You can use this library in a C++ program to do arithmetic on integers of size limited only by your computer's memory. The library provides BigUnsigned and BigInteger classes that represent nonnegative integers and signed integers, respectively. Most of the C++ arithmetic operators are overloaded for these classes, so big-integer calculations are as easy as: #include "BigIntegerLibrary.hh" BigInteger a = 65536; cout << (a * a * a * a * a * a * a * a); (prints 340282366920938463463374607431768211456) The code in `sample.cc' demonstrates the most important features of the library. To get started quickly, read the code and explanations in that file and run it. If you want more detail or a feature not shown in `sample.cc', consult the consult the actual header and source files, which are thoroughly commented. This library emphasizes ease of use and clarity of implementation over speed; some users will prefer GMP (http://swox.com/gmp/), which is faster. The code is intended to be reasonably portable across computers and modern C++ compilers; in particular, it uses whatever word size the computer provides (32-bit, 64-bit, or otherwise). Compiling programs that use the library --------------------------------------- The library consists of a folder full of C++ header files (`.hh') and source files (`.cc'). Your own programs should `#include' the necessary header files and link with the source files. A makefile that builds the sample program (`sample.cc') is included; you can adapt it to replace the sample with your own program. Alternatively, you can use your own build system or IDE. In that case, you must put the library header files where the compiler will find them and arrange to have your program linked with the library source files; otherwise, you will get errors about missing header files or "undefined references". To learn how to do this, consult the documentation for the build system or IDE; don't bother asking me. Adding all the library files to your project will work in many IDEs but may not be the most desirable approach. Resources --------- The library's Web site (above) provides links to released versions, the current development version, and a mailing list for release announcements, questions, bug reports, and other discussion of the library. I would be delighted to hear from you if you like this library and/or find a good use for it. Bugs and enhancements --------------------- The library has been tested by me and others but is by no means bug-free. If you find a bug, please report it, whether it comes in the form of compiling trouble, a mathematically inaccurate result, or a memory-management blooper (since I use Java, these are altogether too common in my C++). I generally fix all reported bugs. You are also welcome to request enhancements, but I am unlikely to do substantial amounts of work on enhancements at this point. Legal ----- I, Matt McCutchen, the sole author of the original Big Integer Library, waive my copyright to it, placing it in the public domain. The library comes with absolutely no warranty. ~~~~ yubioath-desktop/QZXing/zxing/win32/000077500000000000000000000000001412677075700176525ustar00rootroot00000000000000yubioath-desktop/QZXing/zxing/win32/CMakeLists.txt000066400000000000000000000003001412677075700224030ustar00rootroot00000000000000SET(SOURCES ${WIN32_DIR}/iconv.h ${WIN32_DIR}/win_iconv.c ) if(MSVC) LIST(APPEND SOURCES ${WIN32_DIR}/zxing/msvc/stdint.h) endif(MSVC) target_sources(qzxing PRIVATE ${SOURCES}) yubioath-desktop/QZXing/zxing/win32/zxing/000077500000000000000000000000001412677075700210115ustar00rootroot00000000000000yubioath-desktop/QZXing/zxing/win32/zxing/iconv.h000066400000000000000000000005461412677075700223050ustar00rootroot00000000000000#ifndef _LIBICONV_H #define _LIBICONV_H #include #ifdef __cplusplus extern "C" { #endif typedef void* iconv_t; iconv_t iconv_open(const char *tocode, const char *fromcode); int iconv_close(iconv_t cd); size_t iconv(iconv_t cd, char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft); #ifdef __cplusplus } #endif #endif//_LIBICONV_Hyubioath-desktop/QZXing/zxing/win32/zxing/msvc/000077500000000000000000000000001412677075700217615ustar00rootroot00000000000000yubioath-desktop/QZXing/zxing/win32/zxing/msvc/stdint.h000066400000000000000000000170601412677075700234430ustar00rootroot00000000000000// ISO C9x compliant stdint.h for Microsoft Visual Studio // Based on ISO/IEC 9899:TC2 Committee draft (May 6, 2005) WG14/N1124 // // Copyright (c) 2006-2008 Alexander Chemeris // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // // 1. Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // // 2. Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // // 3. The name of the author may be used to endorse or promote products // derived from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED // WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO // EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; // OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, // WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR // OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF // ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // /////////////////////////////////////////////////////////////////////////////// #ifndef _MSC_VER // [ #error "Use this header only with Microsoft Visual C++ compilers!" #endif // _MSC_VER ] #ifndef _MSC_STDINT_H_ // [ #define _MSC_STDINT_H_ #if _MSC_VER > 1000 #pragma once #endif #include // For Visual Studio 6 in C++ mode and for many Visual Studio versions when // compiling for ARM we should wrap include with 'extern "C++" {}' // or compiler give many errors like this: // error C2733: second C linkage of overloaded function 'wmemchr' not allowed #ifdef __cplusplus extern "C" { #endif # include #ifdef __cplusplus } #endif // Define _W64 macros to mark types changing their size, like intptr_t. #ifndef _W64 # if !defined(__midl) && (defined(_X86_) || defined(_M_IX86)) && _MSC_VER >= 1300 # define _W64 __w64 # else # define _W64 # endif #endif // 7.18.1 Integer types // 7.18.1.1 Exact-width integer types // Visual Studio 6 and Embedded Visual C++ 4 doesn't // realize that, e.g. char has the same size as __int8 // so we give up on __intX for them. #if (_MSC_VER < 1300) typedef signed char int8_t; typedef signed short int16_t; typedef signed int int32_t; typedef unsigned char uint8_t; typedef unsigned short uint16_t; typedef unsigned int uint32_t; #else typedef signed __int8 int8_t; typedef signed __int16 int16_t; typedef signed __int32 int32_t; typedef unsigned __int8 uint8_t; typedef unsigned __int16 uint16_t; typedef unsigned __int32 uint32_t; #endif typedef signed __int64 int64_t; typedef unsigned __int64 uint64_t; // 7.18.1.2 Minimum-width integer types typedef int8_t int_least8_t; typedef int16_t int_least16_t; typedef int32_t int_least32_t; typedef int64_t int_least64_t; typedef uint8_t uint_least8_t; typedef uint16_t uint_least16_t; typedef uint32_t uint_least32_t; typedef uint64_t uint_least64_t; // 7.18.1.3 Fastest minimum-width integer types typedef int8_t int_fast8_t; typedef int16_t int_fast16_t; typedef int32_t int_fast32_t; typedef int64_t int_fast64_t; typedef uint8_t uint_fast8_t; typedef uint16_t uint_fast16_t; typedef uint32_t uint_fast32_t; typedef uint64_t uint_fast64_t; // 7.18.1.4 Integer types capable of holding object pointers #ifdef _WIN64 // [ typedef signed __int64 intptr_t; typedef unsigned __int64 uintptr_t; #else // _WIN64 ][ typedef _W64 signed int intptr_t; typedef _W64 unsigned int uintptr_t; #endif // _WIN64 ] // 7.18.1.5 Greatest-width integer types typedef int64_t intmax_t; typedef uint64_t uintmax_t; // 7.18.2 Limits of specified-width integer types #if !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS) // [ See footnote 220 at page 257 and footnote 221 at page 259 // 7.18.2.1 Limits of exact-width integer types #define INT8_MIN ((int8_t)_I8_MIN) #define INT8_MAX _I8_MAX #define INT16_MIN ((int16_t)_I16_MIN) #define INT16_MAX _I16_MAX #define INT32_MIN ((int32_t)_I32_MIN) #define INT32_MAX _I32_MAX #define INT64_MIN ((int64_t)_I64_MIN) #define INT64_MAX _I64_MAX #define UINT8_MAX _UI8_MAX #define UINT16_MAX _UI16_MAX #define UINT32_MAX _UI32_MAX #define UINT64_MAX _UI64_MAX // 7.18.2.2 Limits of minimum-width integer types #define INT_LEAST8_MIN INT8_MIN #define INT_LEAST8_MAX INT8_MAX #define INT_LEAST16_MIN INT16_MIN #define INT_LEAST16_MAX INT16_MAX #define INT_LEAST32_MIN INT32_MIN #define INT_LEAST32_MAX INT32_MAX #define INT_LEAST64_MIN INT64_MIN #define INT_LEAST64_MAX INT64_MAX #define UINT_LEAST8_MAX UINT8_MAX #define UINT_LEAST16_MAX UINT16_MAX #define UINT_LEAST32_MAX UINT32_MAX #define UINT_LEAST64_MAX UINT64_MAX // 7.18.2.3 Limits of fastest minimum-width integer types #define INT_FAST8_MIN INT8_MIN #define INT_FAST8_MAX INT8_MAX #define INT_FAST16_MIN INT16_MIN #define INT_FAST16_MAX INT16_MAX #define INT_FAST32_MIN INT32_MIN #define INT_FAST32_MAX INT32_MAX #define INT_FAST64_MIN INT64_MIN #define INT_FAST64_MAX INT64_MAX #define UINT_FAST8_MAX UINT8_MAX #define UINT_FAST16_MAX UINT16_MAX #define UINT_FAST32_MAX UINT32_MAX #define UINT_FAST64_MAX UINT64_MAX // 7.18.2.4 Limits of integer types capable of holding object pointers #ifdef _WIN64 // [ # define INTPTR_MIN INT64_MIN # define INTPTR_MAX INT64_MAX # define UINTPTR_MAX UINT64_MAX #else // _WIN64 ][ # define INTPTR_MIN INT32_MIN # define INTPTR_MAX INT32_MAX # define UINTPTR_MAX UINT32_MAX #endif // _WIN64 ] // 7.18.2.5 Limits of greatest-width integer types #define INTMAX_MIN INT64_MIN #define INTMAX_MAX INT64_MAX #define UINTMAX_MAX UINT64_MAX // 7.18.3 Limits of other integer types #ifdef _WIN64 // [ # define PTRDIFF_MIN _I64_MIN # define PTRDIFF_MAX _I64_MAX #else // _WIN64 ][ # define PTRDIFF_MIN _I32_MIN # define PTRDIFF_MAX _I32_MAX #endif // _WIN64 ] #define SIG_ATOMIC_MIN INT_MIN #define SIG_ATOMIC_MAX INT_MAX #ifndef SIZE_MAX // [ # ifdef _WIN64 // [ # define SIZE_MAX _UI64_MAX # else // _WIN64 ][ # define SIZE_MAX _UI32_MAX # endif // _WIN64 ] #endif // SIZE_MAX ] // WCHAR_MIN and WCHAR_MAX are also defined in #ifndef WCHAR_MIN // [ # define WCHAR_MIN 0 #endif // WCHAR_MIN ] #ifndef WCHAR_MAX // [ # define WCHAR_MAX _UI16_MAX #endif // WCHAR_MAX ] #define WINT_MIN 0 #define WINT_MAX _UI16_MAX #endif // __STDC_LIMIT_MACROS ] // 7.18.4 Limits of other integer types #if !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS) // [ See footnote 224 at page 260 // 7.18.4.1 Macros for minimum-width integer constants #define INT8_C(val) val##i8 #define INT16_C(val) val##i16 #define INT32_C(val) val##i32 #define INT64_C(val) val##i64 #define UINT8_C(val) val##ui8 #define UINT16_C(val) val##ui16 #define UINT32_C(val) val##ui32 #define UINT64_C(val) val##ui64 // 7.18.4.2 Macros for greatest-width integer constants #define INTMAX_C INT64_C #define UINTMAX_C UINT64_C #endif // __STDC_CONSTANT_MACROS ] #endif // _MSC_STDINT_H_ ] yubioath-desktop/QZXing/zxing/win32/zxing/win_iconv.c000066400000000000000000001663531412677075700231660ustar00rootroot00000000000000/* * iconv implementation using Win32 API to convert. * * This file is placed in the public domain. */ /* for WC_NO_BEST_FIT_CHARS */ #ifndef WINVER # define WINVER 0x0500 #endif #define STRICT #include #include #include #include /* WORKAROUND: */ #ifndef UNDER_CE #define GetProcAddressA GetProcAddress #endif #if 0 # define MAKE_EXE # define MAKE_DLL # define USE_LIBICONV_DLL #endif #if !defined(DEFAULT_LIBICONV_DLL) # define DEFAULT_LIBICONV_DLL "" #endif #define MB_CHAR_MAX 16 #define UNICODE_MODE_BOM_DONE 1 #define UNICODE_MODE_SWAPPED 2 #define FLAG_USE_BOM 1 #define FLAG_TRANSLIT 2 /* //TRANSLIT */ #define FLAG_IGNORE 4 /* //IGNORE */ typedef unsigned char uchar; typedef unsigned short ushort; typedef unsigned int uint; typedef void* iconv_t; iconv_t iconv_open(const char *tocode, const char *fromcode); int iconv_close(iconv_t cd); size_t iconv(iconv_t cd, char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft); /* libiconv interface for vim */ #if defined(MAKE_DLL) int iconvctl (iconv_t cd, int request, void* argument) { /* not supported */ return 0; } #endif typedef struct compat_t compat_t; typedef struct csconv_t csconv_t; typedef struct rec_iconv_t rec_iconv_t; typedef iconv_t (*f_iconv_open)(const char *tocode, const char *fromcode); typedef int (*f_iconv_close)(iconv_t cd); typedef size_t (*f_iconv)(iconv_t cd, char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft); typedef int* (*f_errno)(void); typedef int (*f_mbtowc)(csconv_t *cv, const uchar *buf, int bufsize, ushort *wbuf, int *wbufsize); typedef int (*f_wctomb)(csconv_t *cv, ushort *wbuf, int wbufsize, uchar *buf, int bufsize); typedef int (*f_mblen)(csconv_t *cv, const uchar *buf, int bufsize); typedef int (*f_flush)(csconv_t *cv, uchar *buf, int bufsize); #define COMPAT_IN 1 #define COMPAT_OUT 2 /* unicode mapping for compatibility with other conversion table. */ struct compat_t { uint in; uint out; uint flag; }; struct csconv_t { int codepage; int flags; f_mbtowc mbtowc; f_wctomb wctomb; f_mblen mblen; f_flush flush; DWORD mode; compat_t *compat; }; struct rec_iconv_t { iconv_t cd; f_iconv_close iconv_close; f_iconv iconv; f_errno _errno; csconv_t from; csconv_t to; #if defined(USE_LIBICONV_DLL) HMODULE hlibiconv; #endif }; static int win_iconv_open(rec_iconv_t *cd, const char *tocode, const char *fromcode); static int win_iconv_close(iconv_t cd); static size_t win_iconv(iconv_t cd, char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft); static int load_mlang(); static int make_csconv(const char *name, csconv_t *cv); static int name_to_codepage(const char *name); static uint utf16_to_ucs4(const ushort *wbuf); static void ucs4_to_utf16(uint wc, ushort *wbuf, int *wbufsize); static int mbtowc_flags(int codepage); static int must_use_null_useddefaultchar(int codepage); static char *strrstr(const char *str, const char *token); static char *xstrndup(const char *s, size_t n); static int seterror(int err); #if defined(USE_LIBICONV_DLL) static int libiconv_iconv_open(rec_iconv_t *cd, const char *tocode, const char *fromcode); static PVOID MyImageDirectoryEntryToData(LPVOID Base, BOOLEAN MappedAsImage, USHORT DirectoryEntry, PULONG Size); static HMODULE find_imported_module_by_funcname(HMODULE hModule, const char *funcname); static HMODULE hwiniconv; #endif static int sbcs_mblen(csconv_t *cv, const uchar *buf, int bufsize); static int dbcs_mblen(csconv_t *cv, const uchar *buf, int bufsize); static int mbcs_mblen(csconv_t *cv, const uchar *buf, int bufsize); static int utf8_mblen(csconv_t *cv, const uchar *buf, int bufsize); static int eucjp_mblen(csconv_t *cv, const uchar *buf, int bufsize); static int kernel_mbtowc(csconv_t *cv, const uchar *buf, int bufsize, ushort *wbuf, int *wbufsize); static int kernel_wctomb(csconv_t *cv, ushort *wbuf, int wbufsize, uchar *buf, int bufsize); static int mlang_mbtowc(csconv_t *cv, const uchar *buf, int bufsize, ushort *wbuf, int *wbufsize); static int mlang_wctomb(csconv_t *cv, ushort *wbuf, int wbufsize, uchar *buf, int bufsize); static int utf16_mbtowc(csconv_t *cv, const uchar *buf, int bufsize, ushort *wbuf, int *wbufsize); static int utf16_wctomb(csconv_t *cv, ushort *wbuf, int wbufsize, uchar *buf, int bufsize); static int utf32_mbtowc(csconv_t *cv, const uchar *buf, int bufsize, ushort *wbuf, int *wbufsize); static int utf32_wctomb(csconv_t *cv, ushort *wbuf, int wbufsize, uchar *buf, int bufsize); static int iso2022jp_mbtowc(csconv_t *cv, const uchar *buf, int bufsize, ushort *wbuf, int *wbufsize); static int iso2022jp_wctomb(csconv_t *cv, ushort *wbuf, int wbufsize, uchar *buf, int bufsize); static int iso2022jp_flush(csconv_t *cv, uchar *buf, int bufsize); static struct { int codepage; const char *name; } codepage_alias[] = { {65001, "CP65001"}, {65001, "UTF8"}, {65001, "UTF-8"}, {1200, "CP1200"}, {1200, "UTF16LE"}, {1200, "UTF-16LE"}, {1200, "UCS2LE"}, {1200, "UCS-2LE"}, {1201, "CP1201"}, {1201, "UTF16BE"}, {1201, "UTF-16BE"}, {1201, "UCS2BE"}, {1201, "UCS-2BE"}, {1201, "unicodeFFFE"}, {12000, "CP12000"}, {12000, "UTF32LE"}, {12000, "UTF-32LE"}, {12000, "UCS4LE"}, {12000, "UCS-4LE"}, {12001, "CP12001"}, {12001, "UTF32BE"}, {12001, "UTF-32BE"}, {12001, "UCS4BE"}, {12001, "UCS-4BE"}, #ifndef GLIB_COMPILATION /* * Default is big endian. * See rfc2781 4.3 Interpreting text labelled as UTF-16. */ {1201, "UTF16"}, {1201, "UTF-16"}, {1201, "UCS2"}, {1201, "UCS-2"}, {12001, "UTF32"}, {12001, "UTF-32"}, {12001, "UCS-4"}, {12001, "UCS4"}, #else /* Default is little endian, because the platform is */ {1200, "UTF16"}, {1200, "UTF-16"}, {1200, "UCS2"}, {1200, "UCS-2"}, {12000, "UTF32"}, {12000, "UTF-32"}, {12000, "UCS4"}, {12000, "UCS-4"}, #endif /* copy from libiconv `iconv -l` */ /* !IsValidCodePage(367) */ {20127, "ANSI_X3.4-1968"}, {20127, "ANSI_X3.4-1986"}, {20127, "ASCII"}, {20127, "CP367"}, {20127, "IBM367"}, {20127, "ISO-IR-6"}, {20127, "ISO646-US"}, {20127, "ISO_646.IRV:1991"}, {20127, "US"}, {20127, "US-ASCII"}, {20127, "CSASCII"}, /* !IsValidCodePage(819) */ {1252, "CP819"}, {1252, "IBM819"}, {28591, "ISO-8859-1"}, {28591, "ISO-IR-100"}, {28591, "ISO8859-1"}, {28591, "ISO_8859-1"}, {28591, "ISO_8859-1:1987"}, {28591, "L1"}, {28591, "LATIN1"}, {28591, "CSISOLATIN1"}, {1250, "CP1250"}, {1250, "MS-EE"}, {1250, "WINDOWS-1250"}, {1251, "CP1251"}, {1251, "MS-CYRL"}, {1251, "WINDOWS-1251"}, {1252, "CP1252"}, {1252, "MS-ANSI"}, {1252, "WINDOWS-1252"}, {1253, "CP1253"}, {1253, "MS-GREEK"}, {1253, "WINDOWS-1253"}, {1254, "CP1254"}, {1254, "MS-TURK"}, {1254, "WINDOWS-1254"}, {1255, "CP1255"}, {1255, "MS-HEBR"}, {1255, "WINDOWS-1255"}, {1256, "CP1256"}, {1256, "MS-ARAB"}, {1256, "WINDOWS-1256"}, {1257, "CP1257"}, {1257, "WINBALTRIM"}, {1257, "WINDOWS-1257"}, {1258, "CP1258"}, {1258, "WINDOWS-1258"}, {850, "850"}, {850, "CP850"}, {850, "IBM850"}, {850, "CSPC850MULTILINGUAL"}, /* !IsValidCodePage(862) */ {862, "862"}, {862, "CP862"}, {862, "IBM862"}, {862, "CSPC862LATINHEBREW"}, {866, "866"}, {866, "CP866"}, {866, "IBM866"}, {866, "CSIBM866"}, /* !IsValidCodePage(154) */ {154, "CP154"}, {154, "CYRILLIC-ASIAN"}, {154, "PT154"}, {154, "PTCP154"}, {154, "CSPTCP154"}, /* !IsValidCodePage(1133) */ {1133, "CP1133"}, {1133, "IBM-CP1133"}, {874, "CP874"}, {874, "WINDOWS-874"}, /* !IsValidCodePage(51932) */ {51932, "CP51932"}, {51932, "MS51932"}, {51932, "WINDOWS-51932"}, {51932, "EUC-JP"}, {932, "CP932"}, {932, "MS932"}, {932, "SHIFFT_JIS"}, {932, "SHIFFT_JIS-MS"}, {932, "SJIS"}, {932, "SJIS-MS"}, {932, "SJIS-OPEN"}, {932, "SJIS-WIN"}, {932, "WINDOWS-31J"}, {932, "WINDOWS-932"}, {932, "CSWINDOWS31J"}, {50221, "CP50221"}, {50221, "ISO-2022-JP"}, {50221, "ISO-2022-JP-MS"}, {50221, "ISO2022-JP"}, {50221, "ISO2022-JP-MS"}, {50221, "MS50221"}, {50221, "WINDOWS-50221"}, {936, "CP936"}, {936, "GBK"}, {936, "MS936"}, {936, "WINDOWS-936"}, {950, "CP950"}, {950, "BIG5"}, {950, "BIG5HKSCS"}, {950, "BIG5-HKSCS"}, {949, "CP949"}, {949, "UHC"}, {949, "EUC-KR"}, {1361, "CP1361"}, {1361, "JOHAB"}, {437, "437"}, {437, "CP437"}, {437, "IBM437"}, {437, "CSPC8CODEPAGE437"}, {737, "CP737"}, {775, "CP775"}, {775, "IBM775"}, {775, "CSPC775BALTIC"}, {852, "852"}, {852, "CP852"}, {852, "IBM852"}, {852, "CSPCP852"}, /* !IsValidCodePage(853) */ {853, "CP853"}, {855, "855"}, {855, "CP855"}, {855, "IBM855"}, {855, "CSIBM855"}, {857, "857"}, {857, "CP857"}, {857, "IBM857"}, {857, "CSIBM857"}, /* !IsValidCodePage(858) */ {858, "CP858"}, {860, "860"}, {860, "CP860"}, {860, "IBM860"}, {860, "CSIBM860"}, {861, "861"}, {861, "CP-IS"}, {861, "CP861"}, {861, "IBM861"}, {861, "CSIBM861"}, {863, "863"}, {863, "CP863"}, {863, "IBM863"}, {863, "CSIBM863"}, {864, "CP864"}, {864, "IBM864"}, {864, "CSIBM864"}, {865, "865"}, {865, "CP865"}, {865, "IBM865"}, {865, "CSIBM865"}, {869, "869"}, {869, "CP-GR"}, {869, "CP869"}, {869, "IBM869"}, {869, "CSIBM869"}, /* !IsValidCodePage(1152) */ {1125, "CP1125"}, /* * Code Page Identifiers * http://msdn2.microsoft.com/en-us/library/ms776446.aspx */ {37, "IBM037"}, /* IBM EBCDIC US-Canada */ {437, "IBM437"}, /* OEM United States */ {500, "IBM500"}, /* IBM EBCDIC International */ {708, "ASMO-708"}, /* Arabic (ASMO 708) */ /* 709 Arabic (ASMO-449+, BCON V4) */ /* 710 Arabic - Transparent Arabic */ {720, "DOS-720"}, /* Arabic (Transparent ASMO); Arabic (DOS) */ {737, "ibm737"}, /* OEM Greek (formerly 437G); Greek (DOS) */ {775, "ibm775"}, /* OEM Baltic; Baltic (DOS) */ {850, "ibm850"}, /* OEM Multilingual Latin 1; Western European (DOS) */ {852, "ibm852"}, /* OEM Latin 2; Central European (DOS) */ {855, "IBM855"}, /* OEM Cyrillic (primarily Russian) */ {857, "ibm857"}, /* OEM Turkish; Turkish (DOS) */ {858, "IBM00858"}, /* OEM Multilingual Latin 1 + Euro symbol */ {860, "IBM860"}, /* OEM Portuguese; Portuguese (DOS) */ {861, "ibm861"}, /* OEM Icelandic; Icelandic (DOS) */ {862, "DOS-862"}, /* OEM Hebrew; Hebrew (DOS) */ {863, "IBM863"}, /* OEM French Canadian; French Canadian (DOS) */ {864, "IBM864"}, /* OEM Arabic; Arabic (864) */ {865, "IBM865"}, /* OEM Nordic; Nordic (DOS) */ {866, "cp866"}, /* OEM Russian; Cyrillic (DOS) */ {869, "ibm869"}, /* OEM Modern Greek; Greek, Modern (DOS) */ {870, "IBM870"}, /* IBM EBCDIC Multilingual/ROECE (Latin 2); IBM EBCDIC Multilingual Latin 2 */ {874, "windows-874"}, /* ANSI/OEM Thai (same as 28605, ISO 8859-15); Thai (Windows) */ {875, "cp875"}, /* IBM EBCDIC Greek Modern */ {932, "shift_jis"}, /* ANSI/OEM Japanese; Japanese (Shift-JIS) */ {932, "shift-jis"}, /* alternative name for it */ {936, "gb2312"}, /* ANSI/OEM Simplified Chinese (PRC, Singapore); Chinese Simplified (GB2312) */ {949, "ks_c_5601-1987"}, /* ANSI/OEM Korean (Unified Hangul Code) */ {950, "big5"}, /* ANSI/OEM Traditional Chinese (Taiwan; Hong Kong SAR, PRC); Chinese Traditional (Big5) */ {950, "big5hkscs"}, /* ANSI/OEM Traditional Chinese (Hong Kong SAR); Chinese Traditional (Big5-HKSCS) */ {950, "big5-hkscs"}, /* alternative name for it */ {1026, "IBM1026"}, /* IBM EBCDIC Turkish (Latin 5) */ {1047, "IBM01047"}, /* IBM EBCDIC Latin 1/Open System */ {1140, "IBM01140"}, /* IBM EBCDIC US-Canada (037 + Euro symbol); IBM EBCDIC (US-Canada-Euro) */ {1141, "IBM01141"}, /* IBM EBCDIC Germany (20273 + Euro symbol); IBM EBCDIC (Germany-Euro) */ {1142, "IBM01142"}, /* IBM EBCDIC Denmark-Norway (20277 + Euro symbol); IBM EBCDIC (Denmark-Norway-Euro) */ {1143, "IBM01143"}, /* IBM EBCDIC Finland-Sweden (20278 + Euro symbol); IBM EBCDIC (Finland-Sweden-Euro) */ {1144, "IBM01144"}, /* IBM EBCDIC Italy (20280 + Euro symbol); IBM EBCDIC (Italy-Euro) */ {1145, "IBM01145"}, /* IBM EBCDIC Latin America-Spain (20284 + Euro symbol); IBM EBCDIC (Spain-Euro) */ {1146, "IBM01146"}, /* IBM EBCDIC United Kingdom (20285 + Euro symbol); IBM EBCDIC (UK-Euro) */ {1147, "IBM01147"}, /* IBM EBCDIC France (20297 + Euro symbol); IBM EBCDIC (France-Euro) */ {1148, "IBM01148"}, /* IBM EBCDIC International (500 + Euro symbol); IBM EBCDIC (International-Euro) */ {1149, "IBM01149"}, /* IBM EBCDIC Icelandic (20871 + Euro symbol); IBM EBCDIC (Icelandic-Euro) */ {1250, "windows-1250"}, /* ANSI Central European; Central European (Windows) */ {1251, "windows-1251"}, /* ANSI Cyrillic; Cyrillic (Windows) */ {1252, "windows-1252"}, /* ANSI Latin 1; Western European (Windows) */ {1253, "windows-1253"}, /* ANSI Greek; Greek (Windows) */ {1254, "windows-1254"}, /* ANSI Turkish; Turkish (Windows) */ {1255, "windows-1255"}, /* ANSI Hebrew; Hebrew (Windows) */ {1256, "windows-1256"}, /* ANSI Arabic; Arabic (Windows) */ {1257, "windows-1257"}, /* ANSI Baltic; Baltic (Windows) */ {1258, "windows-1258"}, /* ANSI/OEM Vietnamese; Vietnamese (Windows) */ {1361, "Johab"}, /* Korean (Johab) */ {10000, "macintosh"}, /* MAC Roman; Western European (Mac) */ {10001, "x-mac-japanese"}, /* Japanese (Mac) */ {10002, "x-mac-chinesetrad"}, /* MAC Traditional Chinese (Big5); Chinese Traditional (Mac) */ {10003, "x-mac-korean"}, /* Korean (Mac) */ {10004, "x-mac-arabic"}, /* Arabic (Mac) */ {10005, "x-mac-hebrew"}, /* Hebrew (Mac) */ {10006, "x-mac-greek"}, /* Greek (Mac) */ {10007, "x-mac-cyrillic"}, /* Cyrillic (Mac) */ {10008, "x-mac-chinesesimp"}, /* MAC Simplified Chinese (GB 2312); Chinese Simplified (Mac) */ {10010, "x-mac-romanian"}, /* Romanian (Mac) */ {10017, "x-mac-ukrainian"}, /* Ukrainian (Mac) */ {10021, "x-mac-thai"}, /* Thai (Mac) */ {10029, "x-mac-ce"}, /* MAC Latin 2; Central European (Mac) */ {10079, "x-mac-icelandic"}, /* Icelandic (Mac) */ {10081, "x-mac-turkish"}, /* Turkish (Mac) */ {10082, "x-mac-croatian"}, /* Croatian (Mac) */ {20000, "x-Chinese_CNS"}, /* CNS Taiwan; Chinese Traditional (CNS) */ {20001, "x-cp20001"}, /* TCA Taiwan */ {20002, "x_Chinese-Eten"}, /* Eten Taiwan; Chinese Traditional (Eten) */ {20003, "x-cp20003"}, /* IBM5550 Taiwan */ {20004, "x-cp20004"}, /* TeleText Taiwan */ {20005, "x-cp20005"}, /* Wang Taiwan */ {20105, "x-IA5"}, /* IA5 (IRV International Alphabet No. 5, 7-bit); Western European (IA5) */ {20106, "x-IA5-German"}, /* IA5 German (7-bit) */ {20107, "x-IA5-Swedish"}, /* IA5 Swedish (7-bit) */ {20108, "x-IA5-Norwegian"}, /* IA5 Norwegian (7-bit) */ {20127, "us-ascii"}, /* US-ASCII (7-bit) */ {20261, "x-cp20261"}, /* T.61 */ {20269, "x-cp20269"}, /* ISO 6937 Non-Spacing Accent */ {20273, "IBM273"}, /* IBM EBCDIC Germany */ {20277, "IBM277"}, /* IBM EBCDIC Denmark-Norway */ {20278, "IBM278"}, /* IBM EBCDIC Finland-Sweden */ {20280, "IBM280"}, /* IBM EBCDIC Italy */ {20284, "IBM284"}, /* IBM EBCDIC Latin America-Spain */ {20285, "IBM285"}, /* IBM EBCDIC United Kingdom */ {20290, "IBM290"}, /* IBM EBCDIC Japanese Katakana Extended */ {20297, "IBM297"}, /* IBM EBCDIC France */ {20420, "IBM420"}, /* IBM EBCDIC Arabic */ {20423, "IBM423"}, /* IBM EBCDIC Greek */ {20424, "IBM424"}, /* IBM EBCDIC Hebrew */ {20833, "x-EBCDIC-KoreanExtended"}, /* IBM EBCDIC Korean Extended */ {20838, "IBM-Thai"}, /* IBM EBCDIC Thai */ {20866, "koi8-r"}, /* Russian (KOI8-R); Cyrillic (KOI8-R) */ {20871, "IBM871"}, /* IBM EBCDIC Icelandic */ {20880, "IBM880"}, /* IBM EBCDIC Cyrillic Russian */ {20905, "IBM905"}, /* IBM EBCDIC Turkish */ {20924, "IBM00924"}, /* IBM EBCDIC Latin 1/Open System (1047 + Euro symbol) */ {20932, "EUC-JP"}, /* Japanese (JIS 0208-1990 and 0121-1990) */ {20936, "x-cp20936"}, /* Simplified Chinese (GB2312); Chinese Simplified (GB2312-80) */ {20949, "x-cp20949"}, /* Korean Wansung */ {21025, "cp1025"}, /* IBM EBCDIC Cyrillic Serbian-Bulgarian */ /* 21027 (deprecated) */ {21866, "koi8-u"}, /* Ukrainian (KOI8-U); Cyrillic (KOI8-U) */ {28591, "iso-8859-1"}, /* ISO 8859-1 Latin 1; Western European (ISO) */ {28591, "iso8859-1"}, /* ISO 8859-1 Latin 1; Western European (ISO) */ {28592, "iso-8859-2"}, /* ISO 8859-2 Central European; Central European (ISO) */ {28592, "iso8859-2"}, /* ISO 8859-2 Central European; Central European (ISO) */ {28593, "iso-8859-3"}, /* ISO 8859-3 Latin 3 */ {28593, "iso8859-3"}, /* ISO 8859-3 Latin 3 */ {28594, "iso-8859-4"}, /* ISO 8859-4 Baltic */ {28594, "iso8859-4"}, /* ISO 8859-4 Baltic */ {28595, "iso-8859-5"}, /* ISO 8859-5 Cyrillic */ {28595, "iso8859-5"}, /* ISO 8859-5 Cyrillic */ {28596, "iso-8859-6"}, /* ISO 8859-6 Arabic */ {28596, "iso8859-6"}, /* ISO 8859-6 Arabic */ {28597, "iso-8859-7"}, /* ISO 8859-7 Greek */ {28597, "iso8859-7"}, /* ISO 8859-7 Greek */ {28598, "iso-8859-8"}, /* ISO 8859-8 Hebrew; Hebrew (ISO-Visual) */ {28598, "iso8859-8"}, /* ISO 8859-8 Hebrew; Hebrew (ISO-Visual) */ {28599, "iso-8859-9"}, /* ISO 8859-9 Turkish */ {28599, "iso8859-9"}, /* ISO 8859-9 Turkish */ {28603, "iso-8859-13"}, /* ISO 8859-13 Estonian */ {28603, "iso8859-13"}, /* ISO 8859-13 Estonian */ {28605, "iso-8859-15"}, /* ISO 8859-15 Latin 9 */ {28605, "iso8859-15"}, /* ISO 8859-15 Latin 9 */ {29001, "x-Europa"}, /* Europa 3 */ {38598, "iso-8859-8-i"}, /* ISO 8859-8 Hebrew; Hebrew (ISO-Logical) */ {38598, "iso8859-8-i"}, /* ISO 8859-8 Hebrew; Hebrew (ISO-Logical) */ {50220, "iso-2022-jp"}, /* ISO 2022 Japanese with no halfwidth Katakana; Japanese (JIS) */ {50221, "csISO2022JP"}, /* ISO 2022 Japanese with halfwidth Katakana; Japanese (JIS-Allow 1 byte Kana) */ {50222, "iso-2022-jp"}, /* ISO 2022 Japanese JIS X 0201-1989; Japanese (JIS-Allow 1 byte Kana - SO/SI) */ {50225, "iso-2022-kr"}, /* ISO 2022 Korean */ {50225, "iso2022-kr"}, /* ISO 2022 Korean */ {50227, "x-cp50227"}, /* ISO 2022 Simplified Chinese; Chinese Simplified (ISO 2022) */ /* 50229 ISO 2022 Traditional Chinese */ /* 50930 EBCDIC Japanese (Katakana) Extended */ /* 50931 EBCDIC US-Canada and Japanese */ /* 50933 EBCDIC Korean Extended and Korean */ /* 50935 EBCDIC Simplified Chinese Extended and Simplified Chinese */ /* 50936 EBCDIC Simplified Chinese */ /* 50937 EBCDIC US-Canada and Traditional Chinese */ /* 50939 EBCDIC Japanese (Latin) Extended and Japanese */ {51932, "euc-jp"}, /* EUC Japanese */ {51936, "EUC-CN"}, /* EUC Simplified Chinese; Chinese Simplified (EUC) */ {51949, "euc-kr"}, /* EUC Korean */ /* 51950 EUC Traditional Chinese */ {52936, "hz-gb-2312"}, /* HZ-GB2312 Simplified Chinese; Chinese Simplified (HZ) */ {54936, "GB18030"}, /* Windows XP and later: GB18030 Simplified Chinese (4 byte); Chinese Simplified (GB18030) */ {57002, "x-iscii-de"}, /* ISCII Devanagari */ {57003, "x-iscii-be"}, /* ISCII Bengali */ {57004, "x-iscii-ta"}, /* ISCII Tamil */ {57005, "x-iscii-te"}, /* ISCII Telugu */ {57006, "x-iscii-as"}, /* ISCII Assamese */ {57007, "x-iscii-or"}, /* ISCII Oriya */ {57008, "x-iscii-ka"}, /* ISCII Kannada */ {57009, "x-iscii-ma"}, /* ISCII Malayalam */ {57010, "x-iscii-gu"}, /* ISCII Gujarati */ {57011, "x-iscii-pa"}, /* ISCII Punjabi */ {0, NULL} }; /* * SJIS SHIFTJIS table CP932 table * ---- --------------------------- -------------------------------- * 5C U+00A5 YEN SIGN U+005C REVERSE SOLIDUS * 7E U+203E OVERLINE U+007E TILDE * 815C U+2014 EM DASH U+2015 HORIZONTAL BAR * 815F U+005C REVERSE SOLIDUS U+FF3C FULLWIDTH REVERSE SOLIDUS * 8160 U+301C WAVE DASH U+FF5E FULLWIDTH TILDE * 8161 U+2016 DOUBLE VERTICAL LINE U+2225 PARALLEL TO * 817C U+2212 MINUS SIGN U+FF0D FULLWIDTH HYPHEN-MINUS * 8191 U+00A2 CENT SIGN U+FFE0 FULLWIDTH CENT SIGN * 8192 U+00A3 POUND SIGN U+FFE1 FULLWIDTH POUND SIGN * 81CA U+00AC NOT SIGN U+FFE2 FULLWIDTH NOT SIGN * * EUC-JP and ISO-2022-JP should be compatible with CP932. * * Kernel and MLang have different Unicode mapping table. Make sure * which API is used. */ static compat_t cp932_compat[] = { {0x00A5, 0x005C, COMPAT_OUT}, {0x203E, 0x007E, COMPAT_OUT}, {0x2014, 0x2015, COMPAT_OUT}, {0x301C, 0xFF5E, COMPAT_OUT}, {0x2016, 0x2225, COMPAT_OUT}, {0x2212, 0xFF0D, COMPAT_OUT}, {0x00A2, 0xFFE0, COMPAT_OUT}, {0x00A3, 0xFFE1, COMPAT_OUT}, {0x00AC, 0xFFE2, COMPAT_OUT}, {0, 0, 0} }; static compat_t cp20932_compat[] = { {0x00A5, 0x005C, COMPAT_OUT}, {0x203E, 0x007E, COMPAT_OUT}, {0x2014, 0x2015, COMPAT_OUT}, {0xFF5E, 0x301C, COMPAT_OUT|COMPAT_IN}, {0x2225, 0x2016, COMPAT_OUT|COMPAT_IN}, {0xFF0D, 0x2212, COMPAT_OUT|COMPAT_IN}, {0xFFE0, 0x00A2, COMPAT_OUT|COMPAT_IN}, {0xFFE1, 0x00A3, COMPAT_OUT|COMPAT_IN}, {0xFFE2, 0x00AC, COMPAT_OUT|COMPAT_IN}, {0, 0, 0} }; static compat_t *cp51932_compat = cp932_compat; /* cp20932_compat for kernel. cp932_compat for mlang. */ static compat_t *cp5022x_compat = cp932_compat; typedef HRESULT (WINAPI *CONVERTINETSTRING)( LPDWORD lpdwMode, DWORD dwSrcEncoding, DWORD dwDstEncoding, LPCSTR lpSrcStr, LPINT lpnSrcSize, LPBYTE lpDstStr, LPINT lpnDstSize ); typedef HRESULT (WINAPI *CONVERTINETMULTIBYTETOUNICODE)( LPDWORD lpdwMode, DWORD dwSrcEncoding, LPCSTR lpSrcStr, LPINT lpnMultiCharCount, LPWSTR lpDstStr, LPINT lpnWideCharCount ); typedef HRESULT (WINAPI *CONVERTINETUNICODETOMULTIBYTE)( LPDWORD lpdwMode, DWORD dwEncoding, LPCWSTR lpSrcStr, LPINT lpnWideCharCount, LPSTR lpDstStr, LPINT lpnMultiCharCount ); typedef HRESULT (WINAPI *ISCONVERTINETSTRINGAVAILABLE)( DWORD dwSrcEncoding, DWORD dwDstEncoding ); typedef HRESULT (WINAPI *LCIDTORFC1766A)( LCID Locale, LPSTR pszRfc1766, int nChar ); typedef HRESULT (WINAPI *LCIDTORFC1766W)( LCID Locale, LPWSTR pszRfc1766, int nChar ); typedef HRESULT (WINAPI *RFC1766TOLCIDA)( LCID *pLocale, LPSTR pszRfc1766 ); typedef HRESULT (WINAPI *RFC1766TOLCIDW)( LCID *pLocale, LPWSTR pszRfc1766 ); static CONVERTINETSTRING ConvertINetString; static CONVERTINETMULTIBYTETOUNICODE ConvertINetMultiByteToUnicode; static CONVERTINETUNICODETOMULTIBYTE ConvertINetUnicodeToMultiByte; static ISCONVERTINETSTRINGAVAILABLE IsConvertINetStringAvailable; static LCIDTORFC1766A LcidToRfc1766A; static RFC1766TOLCIDA Rfc1766ToLcidA; static int load_mlang() { HMODULE h; if (ConvertINetString != NULL) return TRUE; h = LoadLibrary(TEXT("mlang.dll")); if (!h) return FALSE; ConvertINetString = (CONVERTINETSTRING)GetProcAddressA(h, "ConvertINetString"); ConvertINetMultiByteToUnicode = (CONVERTINETMULTIBYTETOUNICODE)GetProcAddressA(h, "ConvertINetMultiByteToUnicode"); ConvertINetUnicodeToMultiByte = (CONVERTINETUNICODETOMULTIBYTE)GetProcAddressA(h, "ConvertINetUnicodeToMultiByte"); IsConvertINetStringAvailable = (ISCONVERTINETSTRINGAVAILABLE)GetProcAddressA(h, "IsConvertINetStringAvailable"); LcidToRfc1766A = (LCIDTORFC1766A)GetProcAddressA(h, "LcidToRfc1766A"); Rfc1766ToLcidA = (RFC1766TOLCIDA)GetProcAddressA(h, "Rfc1766ToLcidA"); return TRUE; } iconv_t iconv_open(const char *tocode, const char *fromcode) { rec_iconv_t *cd; cd = (rec_iconv_t *)calloc(1, sizeof(rec_iconv_t)); if (cd == NULL) return (iconv_t)(-1); #if defined(USE_LIBICONV_DLL) errno = 0; if (libiconv_iconv_open(cd, tocode, fromcode)) return (iconv_t)cd; #endif /* reset the errno to prevent reporting wrong error code. * 0 for unsorted error. */ errno = 0; if (win_iconv_open(cd, tocode, fromcode)) return (iconv_t)cd; free(cd); return (iconv_t)(-1); } int iconv_close(iconv_t _cd) { rec_iconv_t *cd = (rec_iconv_t *)_cd; int r = cd->iconv_close(cd->cd); int e = *(cd->_errno()); #if defined(USE_LIBICONV_DLL) if (cd->hlibiconv != NULL) FreeLibrary(cd->hlibiconv); #endif free(cd); errno = e; return r; } size_t iconv(iconv_t _cd, char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft) { rec_iconv_t *cd = (rec_iconv_t *)_cd; size_t r = cd->iconv(cd->cd, inbuf, inbytesleft, outbuf, outbytesleft); errno = *(cd->_errno()); return r; } static int win_iconv_open(rec_iconv_t *cd, const char *tocode, const char *fromcode) { if (!make_csconv(fromcode, &cd->from) || !make_csconv(tocode, &cd->to)) return FALSE; cd->iconv_close = win_iconv_close; cd->iconv = win_iconv; cd->_errno = _errno; cd->cd = (iconv_t)cd; return TRUE; } static int win_iconv_close(iconv_t cd) { return 0; } static size_t win_iconv(iconv_t _cd, char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft) { rec_iconv_t *cd = (rec_iconv_t *)_cd; ushort wbuf[MB_CHAR_MAX]; /* enough room for one character */ int insize; int outsize; int wsize; DWORD frommode; DWORD tomode; uint wc; compat_t *cp; int i; if (inbuf == NULL || *inbuf == NULL) { if (outbuf != NULL && *outbuf != NULL && cd->to.flush != NULL) { tomode = cd->to.mode; outsize = cd->to.flush(&cd->to, (uchar *)*outbuf, (int)*outbytesleft); if (outsize == -1) { if ((cd->to.flags & FLAG_IGNORE) && errno != E2BIG) { outsize = 0; } else { cd->to.mode = tomode; return (size_t)(-1); } } *outbuf += outsize; *outbytesleft -= outsize; } cd->from.mode = 0; cd->to.mode = 0; return 0; } while (*inbytesleft != 0) { frommode = cd->from.mode; tomode = cd->to.mode; wsize = MB_CHAR_MAX; insize = cd->from.mbtowc(&cd->from, (const uchar *)*inbuf, (int)*inbytesleft, wbuf, &wsize); if (insize == -1) { if (cd->to.flags & FLAG_IGNORE) { cd->from.mode = frommode; insize = 1; wsize = 0; } else { cd->from.mode = frommode; return (size_t)(-1); } } if (wsize == 0) { *inbuf += insize; *inbytesleft -= insize; continue; } if (cd->from.compat != NULL) { wc = utf16_to_ucs4(wbuf); cp = cd->from.compat; for (i = 0; cp[i].in != 0; ++i) { if ((cp[i].flag & COMPAT_IN) && cp[i].out == wc) { ucs4_to_utf16(cp[i].in, wbuf, &wsize); break; } } } if (cd->to.compat != NULL) { wc = utf16_to_ucs4(wbuf); cp = cd->to.compat; for (i = 0; cp[i].in != 0; ++i) { if ((cp[i].flag & COMPAT_OUT) && cp[i].in == wc) { ucs4_to_utf16(cp[i].out, wbuf, &wsize); break; } } } outsize = cd->to.wctomb(&cd->to, wbuf, wsize, (uchar *)*outbuf, (int)*outbytesleft); if (outsize == -1) { if ((cd->to.flags & FLAG_IGNORE) && errno != E2BIG) { cd->to.mode = tomode; outsize = 0; } else { cd->from.mode = frommode; cd->to.mode = tomode; return (size_t)(-1); } } *inbuf += insize; *outbuf += outsize; *inbytesleft -= insize; *outbytesleft -= outsize; } return 0; } static int make_csconv(const char *_name, csconv_t *cv) { CPINFO cpinfo; int use_compat = TRUE; int flag = 0; char *name; char *p; name = xstrndup(_name, strlen(_name)); if (name == NULL) return FALSE; /* check for option "enc_name//opt1//opt2" */ while ((p = strrstr(name, "//")) != NULL) { if (_stricmp(p + 2, "nocompat") == 0) use_compat = FALSE; else if (_stricmp(p + 2, "translit") == 0) flag |= FLAG_TRANSLIT; else if (_stricmp(p + 2, "ignore") == 0) flag |= FLAG_IGNORE; *p = 0; } cv->mode = 0; cv->flags = flag; cv->mblen = NULL; cv->flush = NULL; cv->compat = NULL; cv->codepage = name_to_codepage(name); if (cv->codepage == 1200 || cv->codepage == 1201) { cv->mbtowc = utf16_mbtowc; cv->wctomb = utf16_wctomb; if (_stricmp(name, "UTF-16") == 0 || _stricmp(name, "UTF16") == 0 || _stricmp(name, "UCS-2") == 0 || _stricmp(name, "UCS2") == 0) cv->flags |= FLAG_USE_BOM; } else if (cv->codepage == 12000 || cv->codepage == 12001) { cv->mbtowc = utf32_mbtowc; cv->wctomb = utf32_wctomb; if (_stricmp(name, "UTF-32") == 0 || _stricmp(name, "UTF32") == 0 || _stricmp(name, "UCS-4") == 0 || _stricmp(name, "UCS4") == 0) cv->flags |= FLAG_USE_BOM; } else if (cv->codepage == 65001) { cv->mbtowc = kernel_mbtowc; cv->wctomb = kernel_wctomb; cv->mblen = utf8_mblen; } else if ((cv->codepage == 50220 || cv->codepage == 50221 || cv->codepage == 50222) && load_mlang()) { cv->mbtowc = iso2022jp_mbtowc; cv->wctomb = iso2022jp_wctomb; cv->flush = iso2022jp_flush; } else if (cv->codepage == 51932 && load_mlang()) { cv->mbtowc = mlang_mbtowc; cv->wctomb = mlang_wctomb; cv->mblen = eucjp_mblen; } else if (IsValidCodePage(cv->codepage) && GetCPInfo(cv->codepage, &cpinfo) != 0) { cv->mbtowc = kernel_mbtowc; cv->wctomb = kernel_wctomb; if (cpinfo.MaxCharSize == 1) cv->mblen = sbcs_mblen; else if (cpinfo.MaxCharSize == 2) cv->mblen = dbcs_mblen; else cv->mblen = mbcs_mblen; } else { /* not supported */ free(name); errno = EINVAL; return FALSE; } if (use_compat) { switch (cv->codepage) { case 932: cv->compat = cp932_compat; break; case 20932: cv->compat = cp20932_compat; break; case 51932: cv->compat = cp51932_compat; break; case 50220: case 50221: case 50222: cv->compat = cp5022x_compat; break; } } free(name); return TRUE; } static int name_to_codepage(const char *name) { int i; if (*name == '\0' || strcmp(name, "char") == 0) return GetACP(); else if (strcmp(name, "wchar_t") == 0) return 1200; else if (_strnicmp(name, "cp", 2) == 0) return atoi(name + 2); /* CP123 */ else if ('0' <= name[0] && name[0] <= '9') return atoi(name); /* 123 */ else if (_strnicmp(name, "xx", 2) == 0) return atoi(name + 2); /* XX123 for debug */ for (i = 0; codepage_alias[i].name != NULL; ++i) if (_stricmp(name, codepage_alias[i].name) == 0) return codepage_alias[i].codepage; return -1; } /* * http://www.faqs.org/rfcs/rfc2781.html */ static uint utf16_to_ucs4(const ushort *wbuf) { uint wc = wbuf[0]; if (0xD800 <= wbuf[0] && wbuf[0] <= 0xDBFF) wc = ((wbuf[0] & 0x3FF) << 10) + (wbuf[1] & 0x3FF) + 0x10000; return wc; } static void ucs4_to_utf16(uint wc, ushort *wbuf, int *wbufsize) { if (wc < 0x10000) { wbuf[0] = wc; *wbufsize = 1; } else { wc -= 0x10000; wbuf[0] = 0xD800 | ((wc >> 10) & 0x3FF); wbuf[1] = 0xDC00 | (wc & 0x3FF); *wbufsize = 2; } } /* * Check if codepage is one of those for which the dwFlags parameter * to MultiByteToWideChar() must be zero. Return zero or * MB_ERR_INVALID_CHARS. The docs in Platform SDK for for Windows * Server 2003 R2 claims that also codepage 65001 is one of these, but * that doesn't seem to be the case. The MSDN docs for MSVS2008 leave * out 65001 (UTF-8), and that indeed seems to be the case on XP, it * works fine to pass MB_ERR_INVALID_CHARS in dwFlags when converting * from UTF-8. */ static int mbtowc_flags(int codepage) { return (codepage == 50220 || codepage == 50221 || codepage == 50222 || codepage == 50225 || codepage == 50227 || codepage == 50229 || codepage == 52936 || codepage == 54936 || (codepage >= 57002 && codepage <= 57011) || codepage == 65000 || codepage == 42) ? 0 : MB_ERR_INVALID_CHARS; } /* * Check if codepage is one those for which the lpUsedDefaultChar * parameter to WideCharToMultiByte() must be NULL. The docs in * Platform SDK for for Windows Server 2003 R2 claims that this is the * list below, while the MSDN docs for MSVS2008 claim that it is only * for 65000 (UTF-7) and 65001 (UTF-8). This time the earlier Platform * SDK seems to be correct, at least for XP. */ static int must_use_null_useddefaultchar(int codepage) { return (codepage == 65000 || codepage == 65001 || codepage == 50220 || codepage == 50221 || codepage == 50222 || codepage == 50225 || codepage == 50227 || codepage == 50229 || codepage == 52936 || codepage == 54936 || (codepage >= 57002 && codepage <= 57011) || codepage == 42); } static char * strrstr(const char *str, const char *token) { int len = strlen(token); const char *p = str + strlen(str); while (str <= --p) if (p[0] == token[0] && strncmp(p, token, len) == 0) return (char *)p; return NULL; } static char * xstrndup(const char *s, size_t n) { char *p; p = (char *)malloc(n + 1); if (p == NULL) return NULL; memcpy(p, s, n); p[n] = '\0'; return p; } static int seterror(int err) { errno = err; return -1; } #if defined(USE_LIBICONV_DLL) static int libiconv_iconv_open(rec_iconv_t *cd, const char *tocode, const char *fromcode) { HMODULE hlibiconv = NULL; HMODULE hmsvcrt = NULL; char *dllname; const char *p; const char *e; f_iconv_open _iconv_open; /* * always try to load dll, so that we can switch dll in runtime. */ /* XXX: getenv() can't get variable set by SetEnvironmentVariable() */ p = getenv("WINICONV_LIBICONV_DLL"); if (p == NULL) p = DEFAULT_LIBICONV_DLL; /* parse comma separated value */ for ( ; *p != 0; p = (*e == ',') ? e + 1 : e) { e = strchr(p, ','); if (p == e) continue; else if (e == NULL) e = p + strlen(p); dllname = xstrndup(p, e - p); if (dllname == NULL) return FALSE; hlibiconv = LoadLibraryA(dllname); free(dllname); if (hlibiconv != NULL) { if (hlibiconv == hwiniconv) { FreeLibrary(hlibiconv); hlibiconv = NULL; continue; } break; } } if (hlibiconv == NULL) goto failed; hmsvcrt = find_imported_module_by_funcname(hlibiconv, "_errno"); if (hmsvcrt == NULL) goto failed; _iconv_open = (f_iconv_open)GetProcAddressA(hlibiconv, "libiconv_open"); if (_iconv_open == NULL) _iconv_open = (f_iconv_open)GetProcAddressA(hlibiconv, "iconv_open"); cd->iconv_close = (f_iconv_close)GetProcAddressA(hlibiconv, "libiconv_close"); if (cd->iconv_close == NULL) cd->iconv_close = (f_iconv_close)GetProcAddressA(hlibiconv, "iconv_close"); cd->iconv = (f_iconv)GetProcAddressA(hlibiconv, "libiconv"); if (cd->iconv == NULL) cd->iconv = (f_iconv)GetProcAddressA(hlibiconv, "iconv"); cd->_errno = (f_errno)GetProcAddressA(hmsvcrt, "_errno"); if (_iconv_open == NULL || cd->iconv_close == NULL || cd->iconv == NULL || cd->_errno == NULL) goto failed; cd->cd = _iconv_open(tocode, fromcode); if (cd->cd == (iconv_t)(-1)) goto failed; cd->hlibiconv = hlibiconv; return TRUE; failed: if (hlibiconv != NULL) FreeLibrary(hlibiconv); /* do not free hmsvcrt which is obtained by GetModuleHandle() */ return FALSE; } /* * Reference: * http://forums.belution.com/ja/vc/000/234/78s.shtml * http://nienie.com/~masapico/api_ImageDirectoryEntryToData.html * * The formal way is * imagehlp.h or dbghelp.h * imagehlp.lib or dbghelp.lib * ImageDirectoryEntryToData() */ #define TO_DOS_HEADER(base) ((PIMAGE_DOS_HEADER)(base)) #define TO_NT_HEADERS(base) ((PIMAGE_NT_HEADERS)((LPBYTE)(base) + TO_DOS_HEADER(base)->e_lfanew)) static PVOID MyImageDirectoryEntryToData(LPVOID Base, BOOLEAN MappedAsImage, USHORT DirectoryEntry, PULONG Size) { /* TODO: MappedAsImage? */ PIMAGE_DATA_DIRECTORY p; p = TO_NT_HEADERS(Base)->OptionalHeader.DataDirectory + DirectoryEntry; if (p->VirtualAddress == 0) { *Size = 0; return NULL; } *Size = p->Size; return (PVOID)((LPBYTE)Base + p->VirtualAddress); } static HMODULE find_imported_module_by_funcname(HMODULE hModule, const char *funcname) { DWORD_PTR Base; ULONG Size; PIMAGE_IMPORT_DESCRIPTOR Imp; PIMAGE_THUNK_DATA Name; /* Import Name Table */ PIMAGE_IMPORT_BY_NAME ImpName; Base = (DWORD_PTR)hModule; Imp = (PIMAGE_IMPORT_DESCRIPTOR)MyImageDirectoryEntryToData( (LPVOID)Base, TRUE, IMAGE_DIRECTORY_ENTRY_IMPORT, &Size); if (Imp == NULL) return NULL; for ( ; Imp->OriginalFirstThunk != 0; ++Imp) { Name = (PIMAGE_THUNK_DATA)(Base + Imp->OriginalFirstThunk); for ( ; Name->u1.Ordinal != 0; ++Name) { if (!IMAGE_SNAP_BY_ORDINAL(Name->u1.Ordinal)) { ImpName = (PIMAGE_IMPORT_BY_NAME) (Base + (DWORD_PTR)Name->u1.AddressOfData); if (strcmp((char *)ImpName->Name, funcname) == 0) return GetModuleHandleA((char *)(Base + Imp->Name)); } } } return NULL; } #endif static int sbcs_mblen(csconv_t *cv, const uchar *buf, int bufsize) { return 1; } static int dbcs_mblen(csconv_t *cv, const uchar *buf, int bufsize) { int len = IsDBCSLeadByteEx(cv->codepage, buf[0]) ? 2 : 1; if (bufsize < len) return seterror(EINVAL); return len; } static int mbcs_mblen(csconv_t *cv, const uchar *buf, int bufsize) { int len = 0; if (cv->codepage == 54936) { if (buf[0] <= 0x7F) len = 1; else if (buf[0] >= 0x81 && buf[0] <= 0xFE && bufsize >= 2 && ((buf[1] >= 0x40 && buf[1] <= 0x7E) || (buf[1] >= 0x80 && buf[1] <= 0xFE))) len = 2; else if (buf[0] >= 0x81 && buf[0] <= 0xFE && bufsize >= 4 && buf[1] >= 0x30 && buf[1] <= 0x39) len = 4; else return seterror(EINVAL); return len; } else return seterror(EINVAL); } static int utf8_mblen(csconv_t *cv, const uchar *buf, int bufsize) { int len = 0; if (buf[0] < 0x80) len = 1; else if ((buf[0] & 0xE0) == 0xC0) len = 2; else if ((buf[0] & 0xF0) == 0xE0) len = 3; else if ((buf[0] & 0xF8) == 0xF0) len = 4; else if ((buf[0] & 0xFC) == 0xF8) len = 5; else if ((buf[0] & 0xFE) == 0xFC) len = 6; if (len == 0) return seterror(EILSEQ); else if (bufsize < len) return seterror(EINVAL); return len; } static int eucjp_mblen(csconv_t *cv, const uchar *buf, int bufsize) { if (buf[0] < 0x80) /* ASCII */ return 1; else if (buf[0] == 0x8E) /* JIS X 0201 */ { if (bufsize < 2) return seterror(EINVAL); else if (!(0xA1 <= buf[1] && buf[1] <= 0xDF)) return seterror(EILSEQ); return 2; } else if (buf[0] == 0x8F) /* JIS X 0212 */ { if (bufsize < 3) return seterror(EINVAL); else if (!(0xA1 <= buf[1] && buf[1] <= 0xFE) || !(0xA1 <= buf[2] && buf[2] <= 0xFE)) return seterror(EILSEQ); return 3; } else /* JIS X 0208 */ { if (bufsize < 2) return seterror(EINVAL); else if (!(0xA1 <= buf[0] && buf[0] <= 0xFE) || !(0xA1 <= buf[1] && buf[1] <= 0xFE)) return seterror(EILSEQ); return 2; } } static int kernel_mbtowc(csconv_t *cv, const uchar *buf, int bufsize, ushort *wbuf, int *wbufsize) { int len; len = cv->mblen(cv, buf, bufsize); if (len == -1) return -1; *wbufsize = MultiByteToWideChar(cv->codepage, mbtowc_flags (cv->codepage), (const char *)buf, len, (wchar_t *)wbuf, *wbufsize); if (*wbufsize == 0) return seterror(EILSEQ); return len; } static int kernel_wctomb(csconv_t *cv, ushort *wbuf, int wbufsize, uchar *buf, int bufsize) { BOOL usedDefaultChar = 0; BOOL *p = NULL; int flags = 0; int len; if (bufsize == 0) return seterror(E2BIG); if (!must_use_null_useddefaultchar(cv->codepage)) { p = &usedDefaultChar; #ifdef WC_NO_BEST_FIT_CHARS if (!(cv->flags & FLAG_TRANSLIT)) flags |= WC_NO_BEST_FIT_CHARS; #endif } len = WideCharToMultiByte(cv->codepage, flags, (const wchar_t *)wbuf, wbufsize, (char *)buf, bufsize, NULL, p); if (len == 0) { if (GetLastError() == ERROR_INSUFFICIENT_BUFFER) return seterror(E2BIG); return seterror(EILSEQ); } else if (usedDefaultChar && !(cv->flags & FLAG_TRANSLIT)) return seterror(EILSEQ); else if (cv->mblen(cv, buf, len) != len) /* validate result */ return seterror(EILSEQ); return len; } /* * It seems that the mode (cv->mode) is fixnum. * For example, when converting iso-2022-jp(cp50221) to unicode: * in ascii sequence: mode=0xC42C0000 * in jisx0208 sequence: mode=0xC42C0001 * "C42C" is same for each convert session. * It should be: ((codepage-1)<<16)|state */ static int mlang_mbtowc(csconv_t *cv, const uchar *buf, int bufsize, ushort *wbuf, int *wbufsize) { int len; int insize; HRESULT hr; len = cv->mblen(cv, buf, bufsize); if (len == -1) return -1; insize = len; hr = ConvertINetMultiByteToUnicode(&cv->mode, cv->codepage, (const char *)buf, &insize, (wchar_t *)wbuf, wbufsize); if (hr != S_OK || insize != len) return seterror(EILSEQ); return len; } static int mlang_wctomb(csconv_t *cv, ushort *wbuf, int wbufsize, uchar *buf, int bufsize) { char tmpbuf[MB_CHAR_MAX]; /* enough room for one character */ int tmpsize = MB_CHAR_MAX; int insize = wbufsize; HRESULT hr; hr = ConvertINetUnicodeToMultiByte(&cv->mode, cv->codepage, (const wchar_t *)wbuf, &wbufsize, tmpbuf, &tmpsize); if (hr != S_OK || insize != wbufsize) return seterror(EILSEQ); else if (bufsize < tmpsize) return seterror(E2BIG); else if (cv->mblen(cv, (uchar *)tmpbuf, tmpsize) != tmpsize) return seterror(EILSEQ); memcpy(buf, tmpbuf, tmpsize); return tmpsize; } static int utf16_mbtowc(csconv_t *cv, const uchar *buf, int bufsize, ushort *wbuf, int *wbufsize) { int codepage = cv->codepage; /* swap endian: 1200 <-> 1201 */ if (cv->mode & UNICODE_MODE_SWAPPED) codepage ^= 1; if (bufsize < 2) return seterror(EINVAL); if (codepage == 1200) /* little endian */ wbuf[0] = (buf[1] << 8) | buf[0]; else if (codepage == 1201) /* big endian */ wbuf[0] = (buf[0] << 8) | buf[1]; if ((cv->flags & FLAG_USE_BOM) && !(cv->mode & UNICODE_MODE_BOM_DONE)) { cv->mode |= UNICODE_MODE_BOM_DONE; if (wbuf[0] == 0xFFFE) { cv->mode |= UNICODE_MODE_SWAPPED; *wbufsize = 0; return 2; } else if (wbuf[0] == 0xFEFF) { *wbufsize = 0; return 2; } } if (0xDC00 <= wbuf[0] && wbuf[0] <= 0xDFFF) return seterror(EILSEQ); if (0xD800 <= wbuf[0] && wbuf[0] <= 0xDBFF) { if (bufsize < 4) return seterror(EINVAL); if (codepage == 1200) /* little endian */ wbuf[1] = (buf[3] << 8) | buf[2]; else if (codepage == 1201) /* big endian */ wbuf[1] = (buf[2] << 8) | buf[3]; if (!(0xDC00 <= wbuf[1] && wbuf[1] <= 0xDFFF)) return seterror(EILSEQ); *wbufsize = 2; return 4; } *wbufsize = 1; return 2; } static int utf16_wctomb(csconv_t *cv, ushort *wbuf, int wbufsize, uchar *buf, int bufsize) { if ((cv->flags & FLAG_USE_BOM) && !(cv->mode & UNICODE_MODE_BOM_DONE)) { int r; cv->mode |= UNICODE_MODE_BOM_DONE; if (bufsize < 2) return seterror(E2BIG); if (cv->codepage == 1200) /* little endian */ memcpy(buf, "\xFF\xFE", 2); else if (cv->codepage == 1201) /* big endian */ memcpy(buf, "\xFE\xFF", 2); r = utf16_wctomb(cv, wbuf, wbufsize, buf + 2, bufsize - 2); if (r == -1) return -1; return r + 2; } if (bufsize < 2) return seterror(E2BIG); if (cv->codepage == 1200) /* little endian */ { buf[0] = (wbuf[0] & 0x00FF); buf[1] = (wbuf[0] & 0xFF00) >> 8; } else if (cv->codepage == 1201) /* big endian */ { buf[0] = (wbuf[0] & 0xFF00) >> 8; buf[1] = (wbuf[0] & 0x00FF); } if (0xD800 <= wbuf[0] && wbuf[0] <= 0xDBFF) { if (bufsize < 4) return seterror(E2BIG); if (cv->codepage == 1200) /* little endian */ { buf[2] = (wbuf[1] & 0x00FF); buf[3] = (wbuf[1] & 0xFF00) >> 8; } else if (cv->codepage == 1201) /* big endian */ { buf[2] = (wbuf[1] & 0xFF00) >> 8; buf[3] = (wbuf[1] & 0x00FF); } return 4; } return 2; } static int utf32_mbtowc(csconv_t *cv, const uchar *buf, int bufsize, ushort *wbuf, int *wbufsize) { int codepage = cv->codepage; uint wc; /* swap endian: 12000 <-> 12001 */ if (cv->mode & UNICODE_MODE_SWAPPED) codepage ^= 1; if (bufsize < 4) return seterror(EINVAL); if (codepage == 12000) /* little endian */ wc = (buf[3] << 24) | (buf[2] << 16) | (buf[1] << 8) | buf[0]; else if (codepage == 12001) /* big endian */ wc = (buf[0] << 24) | (buf[1] << 16) | (buf[2] << 8) | buf[3]; if ((cv->flags & FLAG_USE_BOM) && !(cv->mode & UNICODE_MODE_BOM_DONE)) { cv->mode |= UNICODE_MODE_BOM_DONE; if (wc == 0xFFFE0000) { cv->mode |= UNICODE_MODE_SWAPPED; *wbufsize = 0; return 4; } else if (wc == 0x0000FEFF) { *wbufsize = 0; return 4; } } if ((0xD800 <= wc && wc <= 0xDFFF) || 0x10FFFF < wc) return seterror(EILSEQ); ucs4_to_utf16(wc, wbuf, wbufsize); return 4; } static int utf32_wctomb(csconv_t *cv, ushort *wbuf, int wbufsize, uchar *buf, int bufsize) { uint wc; if ((cv->flags & FLAG_USE_BOM) && !(cv->mode & UNICODE_MODE_BOM_DONE)) { int r; cv->mode |= UNICODE_MODE_BOM_DONE; if (bufsize < 4) return seterror(E2BIG); if (cv->codepage == 12000) /* little endian */ memcpy(buf, "\xFF\xFE\x00\x00", 4); else if (cv->codepage == 12001) /* big endian */ memcpy(buf, "\x00\x00\xFE\xFF", 4); r = utf32_wctomb(cv, wbuf, wbufsize, buf + 4, bufsize - 4); if (r == -1) return -1; return r + 4; } if (bufsize < 4) return seterror(E2BIG); wc = utf16_to_ucs4(wbuf); if (cv->codepage == 12000) /* little endian */ { buf[0] = wc & 0x000000FF; buf[1] = (wc & 0x0000FF00) >> 8; buf[2] = (wc & 0x00FF0000) >> 16; buf[3] = (wc & 0xFF000000) >> 24; } else if (cv->codepage == 12001) /* big endian */ { buf[0] = (wc & 0xFF000000) >> 24; buf[1] = (wc & 0x00FF0000) >> 16; buf[2] = (wc & 0x0000FF00) >> 8; buf[3] = wc & 0x000000FF; } return 4; } /* * 50220: ISO 2022 Japanese with no halfwidth Katakana; Japanese (JIS) * 50221: ISO 2022 Japanese with halfwidth Katakana; Japanese (JIS-Allow * 1 byte Kana) * 50222: ISO 2022 Japanese JIS X 0201-1989; Japanese (JIS-Allow 1 byte * Kana - SO/SI) * * MultiByteToWideChar() and WideCharToMultiByte() behave differently * depending on Windows version. On XP, WideCharToMultiByte() doesn't * terminate result sequence with ascii escape. But Vista does. * Use MLang instead. */ #define ISO2022_MODE(cs, shift) (((cs) << 8) | (shift)) #define ISO2022_MODE_CS(mode) (((mode) >> 8) & 0xFF) #define ISO2022_MODE_SHIFT(mode) ((mode) & 0xFF) #define ISO2022_SI 0 #define ISO2022_SO 1 /* shift in */ static const char iso2022_SI_seq[] = "\x0F"; /* shift out */ static const char iso2022_SO_seq[] = "\x0E"; typedef struct iso2022_esc_t iso2022_esc_t; struct iso2022_esc_t { const char *esc; int esc_len; int len; int cs; }; #define ISO2022JP_CS_ASCII 0 #define ISO2022JP_CS_JISX0201_ROMAN 1 #define ISO2022JP_CS_JISX0201_KANA 2 #define ISO2022JP_CS_JISX0208_1978 3 #define ISO2022JP_CS_JISX0208_1983 4 #define ISO2022JP_CS_JISX0212 5 static iso2022_esc_t iso2022jp_esc[] = { {"\x1B\x28\x42", 3, 1, ISO2022JP_CS_ASCII}, {"\x1B\x28\x4A", 3, 1, ISO2022JP_CS_JISX0201_ROMAN}, {"\x1B\x28\x49", 3, 1, ISO2022JP_CS_JISX0201_KANA}, {"\x1B\x24\x40", 3, 2, ISO2022JP_CS_JISX0208_1983}, /* unify 1978 with 1983 */ {"\x1B\x24\x42", 3, 2, ISO2022JP_CS_JISX0208_1983}, {"\x1B\x24\x28\x44", 4, 2, ISO2022JP_CS_JISX0212}, {NULL, 0, 0, 0} }; static int iso2022jp_mbtowc(csconv_t *cv, const uchar *buf, int bufsize, ushort *wbuf, int *wbufsize) { iso2022_esc_t *iesc = iso2022jp_esc; char tmp[MB_CHAR_MAX]; int insize; HRESULT hr; DWORD dummy = 0; int len; int esc_len; int cs; int shift; int i; if (buf[0] == 0x1B) { for (i = 0; iesc[i].esc != NULL; ++i) { esc_len = iesc[i].esc_len; if (bufsize < esc_len) { if (strncmp((char *)buf, iesc[i].esc, bufsize) == 0) return seterror(EINVAL); } else { if (strncmp((char *)buf, iesc[i].esc, esc_len) == 0) { cv->mode = ISO2022_MODE(iesc[i].cs, ISO2022_SI); *wbufsize = 0; return esc_len; } } } /* not supported escape sequence */ return seterror(EILSEQ); } else if (buf[0] == iso2022_SO_seq[0]) { cv->mode = ISO2022_MODE(ISO2022_MODE_CS(cv->mode), ISO2022_SO); *wbufsize = 0; return 1; } else if (buf[0] == iso2022_SI_seq[0]) { cv->mode = ISO2022_MODE(ISO2022_MODE_CS(cv->mode), ISO2022_SI); *wbufsize = 0; return 1; } cs = ISO2022_MODE_CS(cv->mode); shift = ISO2022_MODE_SHIFT(cv->mode); /* reset the mode for informal sequence */ if (buf[0] < 0x20) { cs = ISO2022JP_CS_ASCII; shift = ISO2022_SI; } len = iesc[cs].len; if (bufsize < len) return seterror(EINVAL); for (i = 0; i < len; ++i) if (!(buf[i] < 0x80)) return seterror(EILSEQ); esc_len = iesc[cs].esc_len; memcpy(tmp, iesc[cs].esc, esc_len); if (shift == ISO2022_SO) { memcpy(tmp + esc_len, iso2022_SO_seq, 1); esc_len += 1; } memcpy(tmp + esc_len, buf, len); if ((cv->codepage == 50220 || cv->codepage == 50221 || cv->codepage == 50222) && shift == ISO2022_SO) { /* XXX: shift-out cannot be used for mbtowc (both kernel and * mlang) */ esc_len = iesc[ISO2022JP_CS_JISX0201_KANA].esc_len; memcpy(tmp, iesc[ISO2022JP_CS_JISX0201_KANA].esc, esc_len); memcpy(tmp + esc_len, buf, len); } insize = len + esc_len; hr = ConvertINetMultiByteToUnicode(&dummy, cv->codepage, (const char *)tmp, &insize, (wchar_t *)wbuf, wbufsize); if (hr != S_OK || insize != len + esc_len) return seterror(EILSEQ); /* Check for conversion error. Assuming defaultChar is 0x3F. */ /* ascii should be converted from ascii */ if (wbuf[0] == buf[0] && cv->mode != ISO2022_MODE(ISO2022JP_CS_ASCII, ISO2022_SI)) return seterror(EILSEQ); /* reset the mode for informal sequence */ if (cv->mode != ISO2022_MODE(cs, shift)) cv->mode = ISO2022_MODE(cs, shift); return len; } static int iso2022jp_wctomb(csconv_t *cv, ushort *wbuf, int wbufsize, uchar *buf, int bufsize) { iso2022_esc_t *iesc = iso2022jp_esc; char tmp[MB_CHAR_MAX]; int tmpsize = MB_CHAR_MAX; int insize = wbufsize; HRESULT hr; DWORD dummy = 0; int len; int esc_len; int cs; int shift; int i; /* * MultiByte = [escape sequence] + character + [escape sequence] * * Whether trailing escape sequence is added depends on which API is * used (kernel or MLang, and its version). */ hr = ConvertINetUnicodeToMultiByte(&dummy, cv->codepage, (const wchar_t *)wbuf, &wbufsize, tmp, &tmpsize); if (hr != S_OK || insize != wbufsize) return seterror(EILSEQ); else if (bufsize < tmpsize) return seterror(E2BIG); if (tmpsize == 1) { cs = ISO2022JP_CS_ASCII; esc_len = 0; } else { for (i = 1; iesc[i].esc != NULL; ++i) { esc_len = iesc[i].esc_len; if (strncmp(tmp, iesc[i].esc, esc_len) == 0) { cs = iesc[i].cs; break; } } if (iesc[i].esc == NULL) /* not supported escape sequence */ return seterror(EILSEQ); } shift = ISO2022_SI; if (tmp[esc_len] == iso2022_SO_seq[0]) { shift = ISO2022_SO; esc_len += 1; } len = iesc[cs].len; /* Check for converting error. Assuming defaultChar is 0x3F. */ /* ascii should be converted from ascii */ if (cs == ISO2022JP_CS_ASCII && !(wbuf[0] < 0x80)) return seterror(EILSEQ); else if (tmpsize < esc_len + len) return seterror(EILSEQ); if (cv->mode == ISO2022_MODE(cs, shift)) { /* remove escape sequence */ if (esc_len != 0) memmove(tmp, tmp + esc_len, len); esc_len = 0; } else { if (cs == ISO2022JP_CS_ASCII) { esc_len = iesc[ISO2022JP_CS_ASCII].esc_len; memmove(tmp + esc_len, tmp, len); memcpy(tmp, iesc[ISO2022JP_CS_ASCII].esc, esc_len); } if (ISO2022_MODE_SHIFT(cv->mode) == ISO2022_SO) { /* shift-in before changing to other mode */ memmove(tmp + 1, tmp, len + esc_len); memcpy(tmp, iso2022_SI_seq, 1); esc_len += 1; } } if (bufsize < len + esc_len) return seterror(E2BIG); memcpy(buf, tmp, len + esc_len); cv->mode = ISO2022_MODE(cs, shift); return len + esc_len; } static int iso2022jp_flush(csconv_t *cv, uchar *buf, int bufsize) { iso2022_esc_t *iesc = iso2022jp_esc; int esc_len; if (cv->mode != ISO2022_MODE(ISO2022JP_CS_ASCII, ISO2022_SI)) { esc_len = 0; if (ISO2022_MODE_SHIFT(cv->mode) != ISO2022_SI) esc_len += 1; if (ISO2022_MODE_CS(cv->mode) != ISO2022JP_CS_ASCII) esc_len += iesc[ISO2022JP_CS_ASCII].esc_len; if (bufsize < esc_len) return seterror(E2BIG); esc_len = 0; if (ISO2022_MODE_SHIFT(cv->mode) != ISO2022_SI) { memcpy(buf, iso2022_SI_seq, 1); esc_len += 1; } if (ISO2022_MODE_CS(cv->mode) != ISO2022JP_CS_ASCII) { memcpy(buf + esc_len, iesc[ISO2022JP_CS_ASCII].esc, iesc[ISO2022JP_CS_ASCII].esc_len); esc_len += iesc[ISO2022JP_CS_ASCII].esc_len; } return esc_len; } return 0; } #if defined(MAKE_DLL) && defined(USE_LIBICONV_DLL) BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpReserved) { switch( fdwReason ) { case DLL_PROCESS_ATTACH: hwiniconv = (HMODULE)hinstDLL; break; case DLL_THREAD_ATTACH: case DLL_THREAD_DETACH: case DLL_PROCESS_DETACH: break; } return TRUE; } #endif #if defined(MAKE_EXE) #include #include #include int main(int argc, char **argv) { char *fromcode = NULL; char *tocode = NULL; int i; char inbuf[BUFSIZ]; char outbuf[BUFSIZ]; char *pin; char *pout; size_t inbytesleft; size_t outbytesleft; size_t rest = 0; iconv_t cd; size_t r; FILE *in = stdin; int ignore = 0; char *p; _setmode(_fileno(stdin), _O_BINARY); _setmode(_fileno(stdout), _O_BINARY); for (i = 1; i < argc; ++i) { if (strcmp(argv[i], "-l") == 0) { for (i = 0; codepage_alias[i].name != NULL; ++i) printf("%s\n", codepage_alias[i].name); return 0; } if (strcmp(argv[i], "-f") == 0) fromcode = argv[++i]; else if (strcmp(argv[i], "-t") == 0) tocode = argv[++i]; else if (strcmp(argv[i], "-c") == 0) ignore = 1; else { in = fopen(argv[i], "rb"); if (in == NULL) { fprintf(stderr, "cannot open %s\n", argv[i]); return 1; } break; } } if (fromcode == NULL || tocode == NULL) { printf("usage: %s [-c] -f from-enc -t to-enc [file]\n", argv[0]); return 0; } if (ignore) { p = tocode; tocode = (char *)malloc(strlen(p) + strlen("//IGNORE") + 1); if (tocode == NULL) { perror("fatal error"); return 1; } strcpy(tocode, p); strcat(tocode, "//IGNORE"); } cd = iconv_open(tocode, fromcode); if (cd == (iconv_t)(-1)) { perror("iconv_open error"); return 1; } while ((inbytesleft = fread(inbuf + rest, 1, sizeof(inbuf) - rest, in)) != 0 || rest != 0) { inbytesleft += rest; pin = inbuf; pout = outbuf; outbytesleft = sizeof(outbuf); r = iconv(cd, &pin, &inbytesleft, &pout, &outbytesleft); fwrite(outbuf, 1, sizeof(outbuf) - outbytesleft, stdout); if (r == (size_t)(-1) && errno != E2BIG && (errno != EINVAL || feof(in))) { perror("conversion error"); return 1; } memmove(inbuf, pin, inbytesleft); rest = inbytesleft; } pout = outbuf; outbytesleft = sizeof(outbuf); r = iconv(cd, NULL, NULL, &pout, &outbytesleft); fwrite(outbuf, 1, sizeof(outbuf) - outbytesleft, stdout); if (r == (size_t)(-1)) { perror("conversion error"); return 1; } iconv_close(cd); return 0; } #endif yubioath-desktop/QZXing/zxing/zxing/000077500000000000000000000000001412677075700200475ustar00rootroot00000000000000yubioath-desktop/QZXing/zxing/zxing/BarcodeFormat.cpp000066400000000000000000000021001412677075700232540ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- /* * Created by Christian Brunschen on 13/05/2008. * Copyright 2008 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include const char* zxing::BarcodeFormat::barcodeFormatNames[] = { 0, "AZTEC", "CODABAR", "CODE_39", "CODE_93", "CODE_128", "DATA_MATRIX", "EAN_8", "EAN_13", "ITF", "MAXICODE", "PDF_417", "QR_CODE", "RSS_14", "RSS_EXPANDED", "UPC_A", "UPC_E", "UPC_EAN_EXTENSION", "ASSUME_GS1" }; yubioath-desktop/QZXing/zxing/zxing/BarcodeFormat.h000066400000000000000000000025141412677075700227320ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- #ifndef ZXING_BARCODE_FORMAT_H #define ZXING_BARCODE_FORMAT_H /* * BarcodeFormat.h * zxing * * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace zxing { class BarcodeFormat { public: // if you update the enum, update BarcodeFormat.cpp enum Value { NONE, AZTEC, CODABAR, CODE_39, CODE_93, CODE_128, DATA_MATRIX, EAN_8, EAN_13, ITF, MAXICODE, PDF_417, QR_CODE, RSS_14, RSS_EXPANDED, UPC_A, UPC_E, UPC_EAN_EXTENSION, ASSUME_GS1 }; BarcodeFormat(Value v) : value(v) {} const Value value; operator Value () const {return value;} static char const* barcodeFormatNames[]; }; } #endif // ZXING_BARCODE_FORMAT_H yubioath-desktop/QZXing/zxing/zxing/Binarizer.cpp000066400000000000000000000022711412677075700225020ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- /* * Binarizer.cpp * zxing * * Created by Ralf Kistner on 16/10/2009. * Copyright 2008 ZXing authors All rights reserved. * Modified by Lukasz Warchol on 02/02/2010. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include namespace zxing { Binarizer::Binarizer(Ref source) : source_(source) { } Binarizer::~Binarizer() { } Ref Binarizer::getLuminanceSource() const { return source_; } int Binarizer::getWidth() const { return source_->getWidth(); } int Binarizer::getHeight() const { return source_->getHeight(); } } yubioath-desktop/QZXing/zxing/zxing/Binarizer.h000066400000000000000000000024641412677075700221530ustar00rootroot00000000000000#ifndef BINARIZER_H_ #define BINARIZER_H_ /* * Binarizer.h * zxing * * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include #include namespace zxing { class Binarizer : public Counted { private: Ref source_; public: Binarizer(Ref source); virtual ~Binarizer(); virtual Ref getBlackRow(int y, Ref row) = 0; virtual Ref getBlackMatrix() = 0; Ref getLuminanceSource() const ; virtual Ref createBinarizer(Ref source) = 0; int getWidth() const; int getHeight() const; }; } #endif /* BINARIZER_H_ */ yubioath-desktop/QZXing/zxing/zxing/BinaryBitmap.cpp000066400000000000000000000043711412677075700231410ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- /* * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include using zxing::Ref; using zxing::BitArray; using zxing::BitMatrix; using zxing::LuminanceSource; using zxing::BinaryBitmap; // VC++ using zxing::Binarizer; BinaryBitmap::BinaryBitmap(Ref binarizer) : binarizer_(binarizer) { } BinaryBitmap::~BinaryBitmap() { } Ref BinaryBitmap::getBlackRow(int y, Ref row) { return binarizer_->getBlackRow(y, row); } Ref BinaryBitmap::getBlackMatrix() { return binarizer_->getBlackMatrix(); } int BinaryBitmap::getWidth() const { return getLuminanceSource()->getWidth(); } int BinaryBitmap::getHeight() const { return getLuminanceSource()->getHeight(); } Ref BinaryBitmap::getLuminanceSource() const { return binarizer_->getLuminanceSource(); } bool BinaryBitmap::isCropSupported() const { return getLuminanceSource()->isCropSupported(); } Ref BinaryBitmap::crop(int left, int top, int width, int height) { return Ref (new BinaryBitmap(binarizer_->createBinarizer(getLuminanceSource()->crop(left, top, width, height)))); } bool BinaryBitmap::isRotateSupported() const { return getLuminanceSource()->isRotateSupported(); } Ref BinaryBitmap::rotateCounterClockwise() { return Ref (new BinaryBitmap(binarizer_->createBinarizer(getLuminanceSource()->rotateCounterClockwise()))); } Ref BinaryBitmap::rotateCounterClockwise45() { return Ref (new BinaryBitmap(binarizer_->createBinarizer(getLuminanceSource()->rotateCounterClockwise45()))); } yubioath-desktop/QZXing/zxing/zxing/BinaryBitmap.h000066400000000000000000000027361412677075700226110ustar00rootroot00000000000000#ifndef ZXING_BINARYBITMAP_H #define ZXING_BINARYBITMAP_H /* * BinaryBitmap.h * zxing * * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include #include namespace zxing { class BinaryBitmap : public Counted { private: Ref binarizer_; public: BinaryBitmap(Ref binarizer); virtual ~BinaryBitmap(); Ref getBlackRow(int y, Ref row); Ref getBlackMatrix(); Ref getLuminanceSource() const; int getWidth() const; int getHeight() const; bool isRotateSupported() const; Ref rotateCounterClockwise(); Ref rotateCounterClockwise45(); bool isCropSupported() const; Ref crop(int left, int top, int width, int height); }; } #endif /* ZXING_BINARYBITMAP_H */ yubioath-desktop/QZXing/zxing/zxing/CMakeLists.txt000066400000000000000000000332721412677075700226160ustar00rootroot00000000000000SET(SOURCES ${ZXING_DIR}/BarcodeFormat.cpp ${ZXING_DIR}/BarcodeFormat.h ${ZXING_DIR}/Binarizer.cpp ${ZXING_DIR}/Binarizer.h ${ZXING_DIR}/BinaryBitmap.cpp ${ZXING_DIR}/BinaryBitmap.h ${ZXING_DIR}/ChecksumException.cpp ${ZXING_DIR}/ChecksumException.h ${ZXING_DIR}/DecodeHints.cpp ${ZXING_DIR}/DecodeHints.h ${ZXING_DIR}/EncodeHint.cpp ${ZXING_DIR}/EncodeHint.h ${ZXING_DIR}/Exception.cpp ${ZXING_DIR}/Exception.h ${ZXING_DIR}/FormatException.cpp ${ZXING_DIR}/FormatException.h ${ZXING_DIR}/IllegalStateException.cpp ${ZXING_DIR}/IllegalStateException.h ${ZXING_DIR}/InvertedLuminanceSource.cpp ${ZXING_DIR}/InvertedLuminanceSource.h ${ZXING_DIR}/LuminanceSource.cpp ${ZXING_DIR}/LuminanceSource.h ${ZXING_DIR}/MultiFormatReader.cpp ${ZXING_DIR}/MultiFormatReader.h ${ZXING_DIR}/NotFoundException.h ${ZXING_DIR}/NotFoundException.cpp ${ZXING_DIR}/Reader.cpp ${ZXING_DIR}/Reader.h ${ZXING_DIR}/ReaderException.h ${ZXING_DIR}/ReaderException.cpp ${ZXING_DIR}/Result.cpp ${ZXING_DIR}/Result.h ${ZXING_DIR}/ResultMetadata.cpp ${ZXING_DIR}/ResultMetadata.h ${ZXING_DIR}/ResultIO.cpp ${ZXING_DIR}/ResultPoint.cpp ${ZXING_DIR}/ResultPoint.h ${ZXING_DIR}/ResultPointCallback.cpp ${ZXING_DIR}/ResultPointCallback.h ${ZXING_DIR}/UnsupportedEncodingException.h ${ZXING_DIR}/WriterException.h ${ZXING_DIR}/WriterException.cpp ${ZXING_DIR}/ZXing.h ) SET(AZTEC_DIR ${ZXING_DIR}/aztec/AztecDetectorResult.cpp ${ZXING_DIR}/aztec/AztecDetectorResult.h ${ZXING_DIR}/aztec/AztecReader.cpp ${ZXING_DIR}/aztec/AztecReader.h ${ZXING_DIR}/aztec/decoder/AztecDecoder.cpp ${ZXING_DIR}/aztec/decoder/Decoder.h ${ZXING_DIR}/aztec/detector/AztecDetector.cpp ${ZXING_DIR}/aztec/detector/Detector.h ) SET(COMMON_DIR ${ZXING_DIR}/common/Array.h ${ZXING_DIR}/common/BitArray.cpp ${ZXING_DIR}/common/BitArray.h ${ZXING_DIR}/common/BitArrayIO.cpp ${ZXING_DIR}/common/BitMatrix.cpp ${ZXING_DIR}/common/BitMatrix.h ${ZXING_DIR}/common/BitSource.cpp ${ZXING_DIR}/common/BitSource.h ${ZXING_DIR}/common/CharacterSetECI.cpp ${ZXING_DIR}/common/CharacterSetECI.h ${ZXING_DIR}/common/Counted.h ${ZXING_DIR}/common/Counted.cpp ${ZXING_DIR}/common/DecoderResult.cpp ${ZXING_DIR}/common/DecoderResult.h ${ZXING_DIR}/common/DetectorResult.cpp ${ZXING_DIR}/common/DetectorResult.h ${ZXING_DIR}/common/GlobalHistogramBinarizer.cpp ${ZXING_DIR}/common/GlobalHistogramBinarizer.h ${ZXING_DIR}/common/GreyscaleLuminanceSource.cpp ${ZXING_DIR}/common/GreyscaleLuminanceSource.h ${ZXING_DIR}/common/GreyscaleRotatedLuminanceSource.cpp ${ZXING_DIR}/common/GreyscaleRotatedLuminanceSource.h ${ZXING_DIR}/common/GridSampler.cpp ${ZXING_DIR}/common/GridSampler.h ${ZXING_DIR}/common/HybridBinarizer.cpp ${ZXING_DIR}/common/HybridBinarizer.h ${ZXING_DIR}/common/IllegalArgumentException.cpp ${ZXING_DIR}/common/IllegalArgumentException.h ${ZXING_DIR}/common/PerspectiveTransform.cpp ${ZXING_DIR}/common/PerspectiveTransform.h ${ZXING_DIR}/common/Point.h ${ZXING_DIR}/common/Str.cpp ${ZXING_DIR}/common/Str.h ${ZXING_DIR}/common/StringUtils.cpp ${ZXING_DIR}/common/StringUtils.h ${ZXING_DIR}/common/Types.h ${ZXING_DIR}/common/detector/JavaMath.h ${ZXING_DIR}/common/detector/MathUtils.h ${ZXING_DIR}/common/detector/MonochromeRectangleDetector.cpp ${ZXING_DIR}/common/detector/MonochromeRectangleDetector.h ${ZXING_DIR}/common/detector/WhiteRectangleDetector.cpp ${ZXING_DIR}/common/detector/WhiteRectangleDetector.h ${ZXING_DIR}/common/reedsolomon/GenericGF.cpp ${ZXING_DIR}/common/reedsolomon/GenericGF.h ${ZXING_DIR}/common/reedsolomon/GenericGFPoly.cpp ${ZXING_DIR}/common/reedsolomon/GenericGFPoly.h ${ZXING_DIR}/common/reedsolomon/ReedSolomonDecoder.cpp ${ZXING_DIR}/common/reedsolomon/ReedSolomonDecoder.h ${ZXING_DIR}/common/reedsolomon/ReedSolomonEncoder.cpp ${ZXING_DIR}/common/reedsolomon/ReedSolomonEncoder.h ${ZXING_DIR}/common/reedsolomon/ReedSolomonException.cpp ${ZXING_DIR}/common/reedsolomon/ReedSolomonException.h ) SET(DATAMATRIX_DIR ${ZXING_DIR}/datamatrix/DataMatrixReader.cpp ${ZXING_DIR}/datamatrix/DataMatrixReader.h ${ZXING_DIR}/datamatrix/DataMatrixVersion.cpp ${ZXING_DIR}/datamatrix/Version.h ${ZXING_DIR}/datamatrix/decoder/BitMatrixParser.h ${ZXING_DIR}/datamatrix/decoder/DataBlock.h ${ZXING_DIR}/datamatrix/decoder/DataMatrixBitMatrixParser.cpp ${ZXING_DIR}/datamatrix/decoder/DataMatrixDataBlock.cpp ${ZXING_DIR}/datamatrix/decoder/DataMatrixDecodedBitStreamParser.cpp ${ZXING_DIR}/datamatrix/decoder/DataMatrixDecoder.cpp ${ZXING_DIR}/datamatrix/decoder/DecodedBitStreamParser.h ${ZXING_DIR}/datamatrix/decoder/Decoder.h ${ZXING_DIR}/datamatrix/detector/CornerPoint.h ${ZXING_DIR}/datamatrix/detector/DataMatrixCornerPoint.cpp ${ZXING_DIR}/datamatrix/detector/DataMatrixDetector.cpp ${ZXING_DIR}/datamatrix/detector/DataMatrixDetectorException.cpp ${ZXING_DIR}/datamatrix/detector/Detector.h ${ZXING_DIR}/datamatrix/detector/DetectorException.h ) SET(MULTI_DIR ${ZXING_DIR}/multi/ByQuadrantReader.cpp ${ZXING_DIR}/multi/ByQuadrantReader.h ${ZXING_DIR}/multi/GenericMultipleBarcodeReader.cpp ${ZXING_DIR}/multi/GenericMultipleBarcodeReader.h ${ZXING_DIR}/multi/MultipleBarcodeReader.cpp ${ZXING_DIR}/multi/MultipleBarcodeReader.h ${ZXING_DIR}/multi/qrcode/QRCodeMultiReader.cpp ${ZXING_DIR}/multi/qrcode/QRCodeMultiReader.h ${ZXING_DIR}/multi/qrcode/detector/MultiDetector.cpp ${ZXING_DIR}/multi/qrcode/detector/MultiDetector.h ${ZXING_DIR}/multi/qrcode/detector/MultiFinderPatternFinder.cpp ${ZXING_DIR}/multi/qrcode/detector/MultiFinderPatternFinder.h ) SET(ONED_DIR ${ZXING_DIR}/oned/UPCEReader.h ${ZXING_DIR}/oned/UPCEANReader.h ${ZXING_DIR}/oned/UPCEANExtensionSupport.h ${ZXING_DIR}/oned/UPCEANExtension2Support.h ${ZXING_DIR}/oned/UPCEANExtension5Support.h ${ZXING_DIR}/oned/UPCAReader.h ${ZXING_DIR}/oned/OneDResultPoint.h ${ZXING_DIR}/oned/OneDReader.h ${ZXING_DIR}/oned/MultiFormatUPCEANReader.h ${ZXING_DIR}/oned/MultiFormatOneDReader.h ${ZXING_DIR}/oned/ITFReader.h ${ZXING_DIR}/oned/EAN13Reader.h ${ZXING_DIR}/oned/EAN8Reader.h ${ZXING_DIR}/oned/EANManufacturerOrgSupport.h ${ZXING_DIR}/oned/Code128Reader.h ${ZXING_DIR}/oned/Code39Reader.h ${ZXING_DIR}/oned/CodaBarReader.h ${ZXING_DIR}/oned/Code93Reader.h ${ZXING_DIR}/oned/rss/AbstractRSSReader.h ${ZXING_DIR}/oned/rss/DataCharacter.h ${ZXING_DIR}/oned/rss/FinderPattern.h ${ZXING_DIR}/oned/rss/Pair.h ${ZXING_DIR}/oned/rss/RSS14Reader.h ${ZXING_DIR}/oned/rss/RSSUtils.h ${ZXING_DIR}/oned/rss/expanded/decoders/AbstractExpandedDecoder.h ${ZXING_DIR}/oned/rss/expanded/decoders/AI013103decoder.h ${ZXING_DIR}/oned/rss/expanded/decoders/AI01320xDecoder.h ${ZXING_DIR}/oned/rss/expanded/decoders/AI01392xDecoder.h ${ZXING_DIR}/oned/rss/expanded/decoders/AI01393xDecoder.h ${ZXING_DIR}/oned/rss/expanded/decoders/AI013x0x1xDecoder.h ${ZXING_DIR}/oned/rss/expanded/decoders/AI013x0xDecoder.h ${ZXING_DIR}/oned/rss/expanded/decoders/AI01AndOtherAIs.h ${ZXING_DIR}/oned/rss/expanded/decoders/AI01decoder.h ${ZXING_DIR}/oned/rss/expanded/decoders/AI01weightDecoder.h ${ZXING_DIR}/oned/rss/expanded/decoders/AnyAIDecoder.h ${ZXING_DIR}/oned/rss/expanded/decoders/BlockParsedResult.h ${ZXING_DIR}/oned/rss/expanded/decoders/CurrentParsingState.h ${ZXING_DIR}/oned/rss/expanded/decoders/DecodedChar.h ${ZXING_DIR}/oned/rss/expanded/decoders/DecodedInformation.h ${ZXING_DIR}/oned/rss/expanded/decoders/DecodedNumeric.h ${ZXING_DIR}/oned/rss/expanded/decoders/DecodedObject.h ${ZXING_DIR}/oned/rss/expanded/decoders/FieldParser.h ${ZXING_DIR}/oned/rss/expanded/decoders/GeneralAppIdDecoder.h ${ZXING_DIR}/oned/rss/expanded/BitArrayBuilder.h ${ZXING_DIR}/oned/rss/expanded/ExpandedPair.h ${ZXING_DIR}/oned/rss/expanded/ExpandedRow.h ${ZXING_DIR}/oned/rss/expanded/RSSExpandedReader.h ${ZXING_DIR}/oned/UPCEReader.cpp ${ZXING_DIR}/oned/UPCEANReader.cpp ${ZXING_DIR}/oned/UPCEANExtensionSupport.cpp ${ZXING_DIR}/oned/UPCEANExtension2Support.cpp ${ZXING_DIR}/oned/UPCEANExtension5Support.cpp ${ZXING_DIR}/oned/UPCAReader.cpp ${ZXING_DIR}/oned/OneDResultPoint.cpp ${ZXING_DIR}/oned/OneDReader.cpp ${ZXING_DIR}/oned/MultiFormatUPCEANReader.cpp ${ZXING_DIR}/oned/MultiFormatOneDReader.cpp ${ZXING_DIR}/oned/ITFReader.cpp ${ZXING_DIR}/oned/EAN13Reader.cpp ${ZXING_DIR}/oned/EAN8Reader.cpp ${ZXING_DIR}/oned/EANManufacturerOrgSupport.cpp ${ZXING_DIR}/oned/Code128Reader.cpp ${ZXING_DIR}/oned/Code39Reader.cpp ${ZXING_DIR}/oned/CodaBarReader.cpp ${ZXING_DIR}/oned/Code93Reader.cpp ${ZXING_DIR}/oned/rss/AbstractRSSReader.cpp ${ZXING_DIR}/oned/rss/DataCharacter.cpp ${ZXING_DIR}/oned/rss/FinderPattern.cpp ${ZXING_DIR}/oned/rss/Pair.cpp ${ZXING_DIR}/oned/rss/RSS14Reader.cpp ${ZXING_DIR}/oned/rss/RSSUtils.cpp ${ZXING_DIR}/oned/rss/expanded/BitArrayBuilder.cpp ${ZXING_DIR}/oned/rss/expanded/ExpandedPair.cpp ${ZXING_DIR}/oned/rss/expanded/ExpandedRow.cpp ${ZXING_DIR}/oned/rss/expanded/RSSExpandedReader.cpp ${ZXING_DIR}/oned/rss/expanded/decoders/AbstractExpandedDecoder.cpp ${ZXING_DIR}/oned/rss/expanded/decoders/AI01AndOtherAIs.cpp ${ZXING_DIR}/oned/rss/expanded/decoders/AI01decoder.cpp ${ZXING_DIR}/oned/rss/expanded/decoders/AI01weightDecoder.cpp ${ZXING_DIR}/oned/rss/expanded/decoders/AI013x0x1xDecoder.cpp ${ZXING_DIR}/oned/rss/expanded/decoders/AI013x0xDecoder.cpp ${ZXING_DIR}/oned/rss/expanded/decoders/AI01320xDecoder.cpp ${ZXING_DIR}/oned/rss/expanded/decoders/AI01392xDecoder.cpp ${ZXING_DIR}/oned/rss/expanded/decoders/AI01393xDecoder.cpp ${ZXING_DIR}/oned/rss/expanded/decoders/AI013103decoder.cpp ${ZXING_DIR}/oned/rss/expanded/decoders/AnyAIDecoder.cpp ${ZXING_DIR}/oned/rss/expanded/decoders/BlockParsedResult.cpp ${ZXING_DIR}/oned/rss/expanded/decoders/CurrentParsingState.cpp ${ZXING_DIR}/oned/rss/expanded/decoders/DecodedChar.cpp ${ZXING_DIR}/oned/rss/expanded/decoders/DecodedInformation.cpp ${ZXING_DIR}/oned/rss/expanded/decoders/DecodedNumeric.cpp ${ZXING_DIR}/oned/rss/expanded/decoders/DecodedObject.cpp ${ZXING_DIR}/oned/rss/expanded/decoders/FieldParser.cpp ${ZXING_DIR}/oned/rss/expanded/decoders/GeneralAppIdDecoder.cpp ) SET(PDF417_DIR ${ZXING_DIR}/pdf417/PDF417Reader.cpp ${ZXING_DIR}/pdf417/PDF417Reader.h ${ZXING_DIR}/pdf417/decoder/BitMatrixParser.h ${ZXING_DIR}/pdf417/decoder/DecodedBitStreamParser.h ${ZXING_DIR}/pdf417/decoder/Decoder.h ${ZXING_DIR}/pdf417/decoder/PDF417BitMatrixParser.cpp ${ZXING_DIR}/pdf417/decoder/PDF417DecodedBitStreamParser.cpp ${ZXING_DIR}/pdf417/decoder/PDF417Decoder.cpp ${ZXING_DIR}/pdf417/decoder/ec/ErrorCorrection.cpp ${ZXING_DIR}/pdf417/decoder/ec/ErrorCorrection.h ${ZXING_DIR}/pdf417/decoder/ec/ModulusGF.cpp ${ZXING_DIR}/pdf417/decoder/ec/ModulusGF.h ${ZXING_DIR}/pdf417/decoder/ec/ModulusPoly.cpp ${ZXING_DIR}/pdf417/decoder/ec/ModulusPoly.h ${ZXING_DIR}/pdf417/detector/Detector.h ${ZXING_DIR}/pdf417/detector/LinesSampler.cpp ${ZXING_DIR}/pdf417/detector/LinesSampler.h ${ZXING_DIR}/pdf417/detector/PDF417Detector.cpp ) SET(QRCODE_DIR ${ZXING_DIR}/qrcode/ErrorCorrectionLevel.h ${ZXING_DIR}/qrcode/FormatInformation.h ${ZXING_DIR}/qrcode/QRCodeReader.cpp ${ZXING_DIR}/qrcode/QRCodeReader.h ${ZXING_DIR}/qrcode/QRErrorCorrectionLevel.cpp ${ZXING_DIR}/qrcode/QRFormatInformation.cpp ${ZXING_DIR}/qrcode/QRVersion.cpp ${ZXING_DIR}/qrcode/Version.h ${ZXING_DIR}/qrcode/decoder/BitMatrixParser.h ${ZXING_DIR}/qrcode/decoder/DataBlock.h ${ZXING_DIR}/qrcode/decoder/DataMask.h ${ZXING_DIR}/qrcode/decoder/DecodedBitStreamParser.h ${ZXING_DIR}/qrcode/decoder/Decoder.h ${ZXING_DIR}/qrcode/decoder/Mode.h ${ZXING_DIR}/qrcode/decoder/QRBitMatrixParser.cpp ${ZXING_DIR}/qrcode/decoder/QRDataBlock.cpp ${ZXING_DIR}/qrcode/decoder/QRDataMask.cpp ${ZXING_DIR}/qrcode/decoder/QRDecodedBitStreamParser.cpp ${ZXING_DIR}/qrcode/decoder/QRDecoder.cpp ${ZXING_DIR}/qrcode/decoder/QRMode.cpp ${ZXING_DIR}/qrcode/detector/AlignmentPattern.h ${ZXING_DIR}/qrcode/detector/AlignmentPatternFinder.h ${ZXING_DIR}/qrcode/detector/Detector.h ${ZXING_DIR}/qrcode/detector/FinderPattern.h ${ZXING_DIR}/qrcode/detector/FinderPatternFinder.h ${ZXING_DIR}/qrcode/detector/FinderPatternInfo.h ${ZXING_DIR}/qrcode/detector/QRAlignmentPattern.cpp ${ZXING_DIR}/qrcode/detector/QRAlignmentPatternFinder.cpp ${ZXING_DIR}/qrcode/detector/QRDetector.cpp ${ZXING_DIR}/qrcode/detector/QRFinderPattern.cpp ${ZXING_DIR}/qrcode/detector/QRFinderPatternFinder.cpp ${ZXING_DIR}/qrcode/detector/QRFinderPatternInfo.cpp ${ZXING_DIR}/qrcode/encoder/BlockPair.h ${ZXING_DIR}/qrcode/encoder/ByteMatrix.cpp ${ZXING_DIR}/qrcode/encoder/ByteMatrix.h ${ZXING_DIR}/qrcode/encoder/Encoder.h ${ZXING_DIR}/qrcode/encoder/MaskUtil.cpp ${ZXING_DIR}/qrcode/encoder/MaskUtil.h ${ZXING_DIR}/qrcode/encoder/MatrixUtil.cpp ${ZXING_DIR}/qrcode/encoder/MatrixUtil.h ${ZXING_DIR}/qrcode/encoder/QRCode.cpp ${ZXING_DIR}/qrcode/encoder/QRCode.h ${ZXING_DIR}/qrcode/encoder/QREncoder.cpp ) target_sources(qzxing PRIVATE ${SOURCES} ${AZTEC_DIR} ${COMMON_DIR} ${DATAMATRIX_DIR} ${MULTI_DIR} ${ONED_DIR} ${PDF417_DIR} ${QRCODE_DIR}) yubioath-desktop/QZXing/zxing/zxing/ChecksumException.cpp000066400000000000000000000020501412677075700241710ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- /* * ChecksumException.cpp * zxing * * Created by Christian Brunschen on 13/05/2008. * Copyright 2008 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include using zxing::ChecksumException; ChecksumException::ChecksumException() ZXING_NOEXCEPT {} ChecksumException::ChecksumException(const char *msg) ZXING_NOEXCEPT : ReaderException(msg) {} ChecksumException::~ChecksumException() ZXING_NOEXCEPT {} yubioath-desktop/QZXing/zxing/zxing/ChecksumException.h000066400000000000000000000020231412677075700236360ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- #ifndef ZXING_CHECKSUM_EXCEPTION_H #define ZXING_CHECKSUM_EXCEPTION_H /* * Copyright 20011 ZXing authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include namespace zxing { class ChecksumException : public ReaderException { public: ChecksumException() ZXING_NOEXCEPT; ChecksumException(const char *msg) ZXING_NOEXCEPT; ~ChecksumException() ZXING_NOEXCEPT; }; } #endif // ZXING_CHECKSUM_EXCEPTION_H yubioath-desktop/QZXing/zxing/zxing/DecodeHints.cpp000066400000000000000000000177131412677075700227550ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- /* * DecodeHintType.cpp * zxing * * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include #include using zxing::Ref; using zxing::ResultPointCallback; using zxing::DecodeHints; // VC++ using zxing::BarcodeFormat; const zxing::DecodeHintType DecodeHints::AZTEC_HINT = 1 << BarcodeFormat::AZTEC; const zxing::DecodeHintType DecodeHints::CODABAR_HINT = 1 << BarcodeFormat::CODABAR; const zxing::DecodeHintType DecodeHints::CODE_39_HINT = 1 << BarcodeFormat::CODE_39; const zxing::DecodeHintType DecodeHints::CODE_93_HINT = 1 << BarcodeFormat::CODE_93; const zxing::DecodeHintType DecodeHints::CODE_128_HINT = 1 << BarcodeFormat::CODE_128; const zxing::DecodeHintType DecodeHints::DATA_MATRIX_HINT = 1 << BarcodeFormat::DATA_MATRIX; const zxing::DecodeHintType DecodeHints::EAN_8_HINT = 1 << BarcodeFormat::EAN_8; const zxing::DecodeHintType DecodeHints::EAN_13_HINT = 1 << BarcodeFormat::EAN_13; const zxing::DecodeHintType DecodeHints::ITF_HINT = 1 << BarcodeFormat::ITF; const zxing::DecodeHintType DecodeHints::MAXICODE_HINT = 1 << BarcodeFormat::MAXICODE; const zxing::DecodeHintType DecodeHints::PDF_417_HINT = 1 << BarcodeFormat::PDF_417; const zxing::DecodeHintType DecodeHints::QR_CODE_HINT = 1 << BarcodeFormat::QR_CODE; const zxing::DecodeHintType DecodeHints::RSS_14_HINT = 1 << BarcodeFormat::RSS_14; const zxing::DecodeHintType DecodeHints::RSS_EXPANDED_HINT = 1 << BarcodeFormat::RSS_EXPANDED; const zxing::DecodeHintType DecodeHints::UPC_A_HINT = 1 << BarcodeFormat::UPC_A; const zxing::DecodeHintType DecodeHints::UPC_E_HINT = 1 << BarcodeFormat::UPC_E; const zxing::DecodeHintType DecodeHints::UPC_EAN_EXTENSION_HINT = 1 << BarcodeFormat::UPC_EAN_EXTENSION; const zxing::DecodeHintType DecodeHints::ASSUME_GS1 = 1 << BarcodeFormat::ASSUME_GS1; const zxing::DecodeHintType DecodeHints::TRYHARDER_HINT = 1 << 31; const zxing::DecodeHintType DecodeHints::CHARACTER_SET = 1 << 30; const zxing::DecodeHints DecodeHints::PRODUCT_HINT( DecodeHints::UPC_A_HINT | DecodeHints::UPC_E_HINT | DecodeHints::EAN_13_HINT | DecodeHints::EAN_8_HINT | DecodeHints::RSS_14_HINT ); const zxing::DecodeHints DecodeHints::ONED_HINT( DecodeHints::CODE_39_HINT | DecodeHints::CODE_93_HINT | DecodeHints::CODE_128_HINT | DecodeHints::ITF_HINT | DecodeHints::CODABAR_HINT | DecodeHints::PRODUCT_HINT ); const zxing::DecodeHints DecodeHints::DEFAULT_HINT( DecodeHints::ONED_HINT | DecodeHints::QR_CODE_HINT | DecodeHints::DATA_MATRIX_HINT | DecodeHints::AZTEC_HINT | DecodeHints::PDF_417_HINT ); DecodeHints::DecodeHints() { hints = 0; allowedEanExtensions = {}; } DecodeHints::DecodeHints(const zxing::DecodeHintType &init) { hints = init; } DecodeHints::DecodeHints(const DecodeHints &other) { hints = other.hints; callback = other.callback; allowedEanExtensions = other.allowedEanExtensions; } void DecodeHints::addFormat(BarcodeFormat toadd) { switch (toadd) { case BarcodeFormat::AZTEC: hints |= AZTEC_HINT; break; case BarcodeFormat::CODABAR: hints |= CODABAR_HINT; break; case BarcodeFormat::CODE_39: hints |= CODE_39_HINT; break; case BarcodeFormat::CODE_93: hints |= CODE_93_HINT; break; case BarcodeFormat::CODE_128: hints |= CODE_128_HINT; break; case BarcodeFormat::DATA_MATRIX: hints |= DATA_MATRIX_HINT; break; case BarcodeFormat::EAN_8: hints |= EAN_8_HINT; break; case BarcodeFormat::EAN_13: hints |= EAN_13_HINT; break; case BarcodeFormat::ITF: hints |= ITF_HINT; break; case BarcodeFormat::MAXICODE: hints |= MAXICODE_HINT; break; case BarcodeFormat::PDF_417: hints |= PDF_417_HINT; break; case BarcodeFormat::QR_CODE: hints |= QR_CODE_HINT; break; case BarcodeFormat::RSS_14: hints |= RSS_14_HINT; break; case BarcodeFormat::RSS_EXPANDED: hints |= RSS_EXPANDED_HINT; break; case BarcodeFormat::UPC_A: hints |= UPC_A_HINT; break; case BarcodeFormat::UPC_E: hints |= UPC_E_HINT; break; case BarcodeFormat::UPC_EAN_EXTENSION: hints |= UPC_EAN_EXTENSION_HINT; break; case BarcodeFormat::ASSUME_GS1: hints |= ASSUME_GS1; break; default: throw IllegalArgumentException("Unrecognizd barcode format"); } } bool DecodeHints::containsFormat(BarcodeFormat tocheck) const { DecodeHintType checkAgainst = 0; switch (tocheck) { case BarcodeFormat::AZTEC: checkAgainst |= AZTEC_HINT; break; case BarcodeFormat::CODABAR: checkAgainst |= CODABAR_HINT; break; case BarcodeFormat::CODE_39: checkAgainst |= CODE_39_HINT; break; case BarcodeFormat::CODE_93: checkAgainst |= CODE_93_HINT; break; case BarcodeFormat::CODE_128: checkAgainst |= CODE_128_HINT; break; case BarcodeFormat::DATA_MATRIX: checkAgainst |= DATA_MATRIX_HINT; break; case BarcodeFormat::EAN_8: checkAgainst |= EAN_8_HINT; break; case BarcodeFormat::EAN_13: checkAgainst |= EAN_13_HINT; break; case BarcodeFormat::ITF: checkAgainst |= ITF_HINT; break; case BarcodeFormat::MAXICODE: checkAgainst |= MAXICODE_HINT; break; case BarcodeFormat::PDF_417: checkAgainst |= PDF_417_HINT; break; case BarcodeFormat::QR_CODE: checkAgainst |= QR_CODE_HINT; break; case BarcodeFormat::RSS_14: checkAgainst |= RSS_14_HINT; break; case BarcodeFormat::RSS_EXPANDED: checkAgainst |= RSS_EXPANDED_HINT; break; case BarcodeFormat::UPC_A: checkAgainst |= UPC_A_HINT; break; case BarcodeFormat::UPC_E: checkAgainst |= UPC_E_HINT; break; case BarcodeFormat::UPC_EAN_EXTENSION: checkAgainst |= UPC_EAN_EXTENSION_HINT; break; case BarcodeFormat::ASSUME_GS1: checkAgainst |= ASSUME_GS1; break; default: throw IllegalArgumentException("Unrecognizd barcode format"); } return (hints & checkAgainst) != 0; } void DecodeHints::setTryHarder(bool toset) { if (toset) { hints |= TRYHARDER_HINT; } else { hints &= ~TRYHARDER_HINT; } } bool DecodeHints::getTryHarder() const { return (hints & TRYHARDER_HINT) != 0; } void DecodeHints::setAllowedEanExtensions(std::set toset) { allowedEanExtensions = toset; } std::set DecodeHints::getAllowedEanExtensions() const { return allowedEanExtensions; } void DecodeHints::setResultPointCallback(Ref const& _callback) { callback = _callback; } Ref DecodeHints::getResultPointCallback() const { return callback; } zxing::DecodeHints &zxing::DecodeHints::operator =(const zxing::DecodeHints &other) { hints = other.hints; callback = other.callback; allowedEanExtensions = other.allowedEanExtensions; return *this; } zxing::DecodeHints zxing::operator | (DecodeHints const& l, DecodeHints const& r) { DecodeHints result (l); result.hints |= r.hints; if (!result.callback) { result.callback = r.callback; } result.allowedEanExtensions = l.allowedEanExtensions; result.allowedEanExtensions.insert(r.allowedEanExtensions.begin(), r.allowedEanExtensions.end()); return result; } zxing::DecodeHints zxing::operator & (DecodeHints const& l, DecodeHints const& r) { DecodeHints result (l); result.hints &= r.hints; if (!result.callback) { result.callback = r.callback; } std::set intersect; std::set_intersection(l.allowedEanExtensions.begin(), l.allowedEanExtensions.end(), r.allowedEanExtensions.begin(), r.allowedEanExtensions.end(), std::inserter(intersect, intersect.begin())); result.allowedEanExtensions = intersect; return result; } yubioath-desktop/QZXing/zxing/zxing/DecodeHints.h000066400000000000000000000062301412677075700224120ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- #ifndef ZXING_DECODEHINTS_H #define ZXING_DECODEHINTS_H /* * DecodeHintType.h * zxing * * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include namespace zxing { typedef unsigned int DecodeHintType; class DecodeHints; DecodeHints operator | (DecodeHints const&, DecodeHints const&); DecodeHints operator & (DecodeHints const&, DecodeHints const&); class DecodeHints { private: DecodeHintType hints; Ref callback; std::set allowedEanExtensions; public: static const DecodeHintType AZTEC_HINT; static const DecodeHintType CODABAR_HINT; static const DecodeHintType CODE_39_HINT; static const DecodeHintType CODE_93_HINT; static const DecodeHintType CODE_128_HINT; static const DecodeHintType DATA_MATRIX_HINT; static const DecodeHintType EAN_8_HINT; static const DecodeHintType EAN_13_HINT; static const DecodeHintType ITF_HINT; static const DecodeHintType MAXICODE_HINT; static const DecodeHintType PDF_417_HINT; static const DecodeHintType QR_CODE_HINT; static const DecodeHintType RSS_14_HINT; static const DecodeHintType RSS_EXPANDED_HINT; static const DecodeHintType UPC_A_HINT; static const DecodeHintType UPC_E_HINT; static const DecodeHintType UPC_EAN_EXTENSION_HINT; static const DecodeHintType ASSUME_GS1; static const DecodeHintType TRYHARDER_HINT; static const DecodeHintType CHARACTER_SET; // static const DecodeHintType ALLOWED_LENGTHS = 1 << 29; // static const DecodeHintType ASSUME_CODE_39_CHECK_DIGIT = 1 << 28; // static const DecodeHintType NEED_RESULT_POINT_CALLBACK = 1 << 26; static const DecodeHints PRODUCT_HINT; static const DecodeHints ONED_HINT; static const DecodeHints DEFAULT_HINT; DecodeHints(); DecodeHints(const DecodeHintType &init); DecodeHints(const DecodeHints &other); void addFormat(BarcodeFormat toadd); bool containsFormat(BarcodeFormat tocheck) const; bool isEmpty() const {return (hints==0);} void clear() {hints=0;} void setTryHarder(bool toset); bool getTryHarder() const; void setAllowedEanExtensions(std::set toset); std::set getAllowedEanExtensions() const; void setResultPointCallback(Ref const&); Ref getResultPointCallback() const; DecodeHints& operator =(DecodeHints const &other); friend DecodeHints operator| (DecodeHints const&, DecodeHints const&); friend DecodeHints operator& (DecodeHints const&, DecodeHints const&); }; } #endif // ZXING_DECODEHINTS_H yubioath-desktop/QZXing/zxing/zxing/EncodeHint.cpp000066400000000000000000000002141412677075700225700ustar00rootroot00000000000000#include "EncodeHint.h" namespace zxing { EncodeHint::EncodeHint() : errorCorrectionLevel_(NULL), characterSet_(""), margin_(0) {} } yubioath-desktop/QZXing/zxing/zxing/EncodeHint.h000066400000000000000000000027621412677075700222470ustar00rootroot00000000000000#ifndef ENCODEHINTTYPE_H #define ENCODEHINTTYPE_H #include #include namespace zxing { class EncodeHint { private: /** * Specifies what degree of error correction to use, for example in QR Codes. * Type depends on the encoder. For example for QR codes it's type * {@link com.google.zxing.qrcode.decoder.ErrorCorrectionLevel ErrorCorrectionLevel}. * For Aztec it is of type {@link Integer}, representing the minimal percentage of error correction words. * Note: an Aztec symbol should have a minimum of 25% EC words. */ zxing::qrcode::ErrorCorrectionLevel* errorCorrectionLevel_; /** * Specifies what character encoding to use where applicable (type {@link String}) */ std::string characterSet_; /** * Specifies margin, in pixels, to use when generating the barcode. The meaning can vary * by format; for example it controls margin before and after the barcode horizontally for * most 1D formats. (Type {@link Integer}). */ int margin_; public: EncodeHint(); std::string getCharacterSet() const { return characterSet_; } const zxing::qrcode::ErrorCorrectionLevel* getErrorCorrectionLevel() { return errorCorrectionLevel_; } void setCharacterSet(const std::string& characterSet) { characterSet_ = characterSet; } void setErrorCorrectionLevel(zxing::qrcode::ErrorCorrectionLevel* errorCorectionLevel) { errorCorrectionLevel_ = errorCorectionLevel; } }; } #endif //ENCODEHINTTYPE_H yubioath-desktop/QZXing/zxing/zxing/Exception.cpp000066400000000000000000000032041412677075700225100ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- /* * Exception.cpp * ZXing * * Created by Christian Brunschen on 03/06/2008. * Copyright 2008-2011 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include using zxing::Exception; Exception::Exception() ZXING_NOEXCEPT : message(ZXING_NULLPTR) { } Exception::Exception(const char *msg) ZXING_NOEXCEPT : message(copy(msg)) { } Exception::Exception(const zxing::Exception &that) ZXING_NOEXCEPT : std::exception(that), message(copy(that.message)) { } Exception::~Exception() ZXING_NOEXCEPT { if(message) { deleteMessage(); } } const char *Exception::what() const ZXING_NOEXCEPT { return message ? message : ""; } void Exception::deleteMessage() { delete [] message; } char const* Exception::copy(char const* msg) { char* message = ZXING_NULLPTR; if (msg) { size_t l = strlen(msg)+1; if (l) { message = new char[l]; strcpy(message, msg); } } return message; } yubioath-desktop/QZXing/zxing/zxing/Exception.h000066400000000000000000000023531412677075700221610ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- #ifndef ZXING_EXCEPTION_H #define ZXING_EXCEPTION_H /* * Exception.h * ZXing * * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include namespace zxing { class Exception : public std::exception { private: char const* const message; public: Exception() ZXING_NOEXCEPT; Exception(const char* msg) ZXING_NOEXCEPT; Exception(Exception const& that) ZXING_NOEXCEPT; ~Exception() ZXING_NOEXCEPT; char const* what() const ZXING_NOEXCEPT; private: static char const* copy(char const*); void deleteMessage(); }; } #endif // ZXING_EXCEPTION_H yubioath-desktop/QZXing/zxing/zxing/FormatException.cpp000066400000000000000000000021561412677075700236660ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- /* * FormatException.cpp * zxing * * Created by Christian Brunschen on 13/05/2008. * Copyright 2008 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include namespace zxing { FormatException::FormatException() {} FormatException::FormatException(const char *msg) : ReaderException(msg) { } FormatException::~FormatException() ZXING_NOEXCEPT { } FormatException const& FormatException::getFormatInstance() { static FormatException instance; return instance; } } yubioath-desktop/QZXing/zxing/zxing/FormatException.h000066400000000000000000000020001412677075700233170ustar00rootroot00000000000000#ifndef ZXING_FORMAT_EXCEPTION_H #define ZXING_FORMAT_EXCEPTION_H /* * FormatException.h * zxing * * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include namespace zxing { class FormatException : public ReaderException { public: FormatException(); FormatException(const char *msg); ~FormatException() ZXING_NOEXCEPT; static FormatException const& getFormatInstance(); }; } #endif // ZXING_FORMAT_EXCEPTION_H yubioath-desktop/QZXing/zxing/zxing/IllegalStateException.cpp000066400000000000000000000017741412677075700250150ustar00rootroot00000000000000/* * IllegalStateException.cpp * zxing * * Created by Alexander Stillich on 05/11/2018. * Copyright 2008 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include zxing::IllegalStateException::IllegalStateException() ZXING_NOEXCEPT { } zxing::IllegalStateException::IllegalStateException(const char *msg) ZXING_NOEXCEPT : ReaderException(msg) { } zxing::IllegalStateException::~IllegalStateException() ZXING_NOEXCEPT { } yubioath-desktop/QZXing/zxing/zxing/IllegalStateException.h000066400000000000000000000020541412677075700244520ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- #ifndef ZXING_ILLEGAL_STATE_EXCEPTION_H #define ZXING_ILLEGAL_STATE_EXCEPTION_H /* * Copyright 20011 ZXing authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may illegal use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include namespace zxing { class IllegalStateException : public ReaderException { public: IllegalStateException() ZXING_NOEXCEPT; IllegalStateException(const char *msg) ZXING_NOEXCEPT; ~IllegalStateException() ZXING_NOEXCEPT; }; } #endif // ZXING_ILLEGAL_STATE_EXCEPTION_H yubioath-desktop/QZXing/zxing/zxing/InvertedLuminanceSource.cpp000066400000000000000000000043511412677075700253530ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- /* * Copyright 2013 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include using zxing::Ref; using zxing::ArrayRef; using zxing::LuminanceSource; namespace zxing { InvertedLuminanceSource::InvertedLuminanceSource(Ref const& delegate_) : Super(delegate_->getWidth(), delegate_->getHeight()), delegate(delegate_) {} ArrayRef InvertedLuminanceSource::getRow(int y, ArrayRef row) const { row = delegate->getRow(y, row); int width = getWidth(); for (int i = 0; i < width; i++) { row[i] = 0xFF - row[i]; } return row; } ArrayRef InvertedLuminanceSource::getMatrix() const { ArrayRef matrix = delegate->getMatrix(); int length = getWidth() * getHeight(); ArrayRef invertedMatrix(length); for (int i = 0; i < length; i++) { invertedMatrix[i] = 0xFF - matrix[i]; } return invertedMatrix; } zxing::boolean InvertedLuminanceSource::isCropSupported() const { return delegate->isCropSupported(); } Ref InvertedLuminanceSource::crop(int left, int top, int width, int height) const { return Ref(new InvertedLuminanceSource(delegate->crop(left, top, width, height))); } zxing::boolean InvertedLuminanceSource::isRotateSupported() const { return delegate->isRotateSupported(); } Ref InvertedLuminanceSource::invert() const { return delegate; } Ref InvertedLuminanceSource::rotateCounterClockwise() const { return Ref(new InvertedLuminanceSource(delegate->rotateCounterClockwise())); } } yubioath-desktop/QZXing/zxing/zxing/InvertedLuminanceSource.h000066400000000000000000000027051412677075700250210ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- #ifndef ZXING_INVERTEDLUMINANCESOURCE_H #define ZXING_INVERTEDLUMINANCESOURCE_H /* * Copyright 2013 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include namespace zxing { class InvertedLuminanceSource : public LuminanceSource { private: typedef LuminanceSource Super; const Ref delegate; public: InvertedLuminanceSource(Ref const&); ArrayRef getRow(int y, ArrayRef row) const; ArrayRef getMatrix() const; boolean isCropSupported() const; Ref crop(int left, int top, int width, int height) const; boolean isRotateSupported() const; virtual Ref invert() const; Ref rotateCounterClockwise() const; }; } #endif // ZXING_INVERTEDLUMINANCESOURCE_H yubioath-desktop/QZXing/zxing/zxing/LuminanceSource.cpp000066400000000000000000000055451412677075700236600ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- /* * LuminanceSource.cpp * zxing * * Copyright 2008 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include #include using zxing::Ref; using zxing::LuminanceSource; LuminanceSource::LuminanceSource(int width_, int height_) :width(width_), height(height_) {} LuminanceSource::~LuminanceSource() {} bool LuminanceSource::isCropSupported() const { return false; } Ref LuminanceSource::crop(int, int, int, int) const { throw IllegalArgumentException("This luminance source does not support cropping."); } bool LuminanceSource::isRotateSupported() const { return false; } Ref LuminanceSource::rotateCounterClockwise() const { throw IllegalArgumentException("This luminance source does not support rotation."); } Ref LuminanceSource::rotateCounterClockwise45() const { throw IllegalArgumentException("This luminance source does not support rotation 45."); } LuminanceSource::operator std::string() const { ArrayRef row; std::ostringstream oss; for (int y = 0; y < getHeight(); y++) { row = getRow(y, row); for (int x = 0; x < getWidth(); x++) { int luminance = row[x];// & 0xFF; char c; if (luminance < 0x40) { c = '#'; } else if (luminance < 0x80) { c = '+'; } else if (luminance < 0xC0) { c = '.'; } else { c = ' '; } oss << c; } oss << '\n'; } return oss.str(); } Ref LuminanceSource::invert() const { // N.B.: this only works because we use counted objects with the // count in the object. This is _not_ how things like shared_ptr // work. They do not allow you to make a smart pointer from a native // pointer more than once. If we ever switch to (something like) // shared_ptr's, the luminace source is going to have keep a weak // pointer to itself from which it can create a strong pointer as // needed. And, FWIW, that has nasty semantics in the face of // exceptions during construction. return Ref (new InvertedLuminanceSource(Ref(const_cast(this)))); } yubioath-desktop/QZXing/zxing/zxing/LuminanceSource.h000066400000000000000000000034571412677075700233250ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- #ifndef ZXING_LUMINANCESOURCE_H #define ZXING_LUMINANCESOURCE_H /* * LuminanceSource.h * zxing * * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include #include "common/Types.h" namespace zxing { class LuminanceSource : public Counted { private: const int width; const int height; public: LuminanceSource(int width, int height); virtual ~LuminanceSource(); int getWidth() const { return width; } int getHeight() const { return height; } // Callers take ownership of the returned memory and must call delete [] on it themselves. virtual ArrayRef getRow(int y, ArrayRef row) const = 0; virtual ArrayRef getMatrix() const = 0; virtual bool isCropSupported() const; virtual Ref crop(int left, int top, int width, int height) const; virtual bool isRotateSupported() const; virtual Ref invert() const; virtual Ref rotateCounterClockwise() const; virtual Ref rotateCounterClockwise45() const; operator std::string () const; }; } #endif // ZXING_LUMINANCESOURCE_H yubioath-desktop/QZXing/zxing/zxing/MultiFormatReader.cpp000066400000000000000000000110741412677075700241440ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- /* * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include #ifdef ENABLE_DECODER_AZTEC #include #endif // ENABLE_DECODER_AZTEC #ifdef ENABLE_DECODER_DATA_MATRIX #include #endif // ENABLE_DECODER_DATA_MATRIX #ifdef ENABLE_DECODER_1D_BARCODES #include #include #endif // ENABLE_DECODER_1D_BARCODES #ifdef ENABLE_DECODER_PDF17 #include #endif // ENABLE_DECODER_PDF17 #ifdef ENABLE_DECODER_QR_CODE #include #endif // ENABLE_DECODER_QR_CODE using zxing::Ref; using zxing::Result; using zxing::MultiFormatReader; // VC++ using zxing::DecodeHints; using zxing::BinaryBitmap; MultiFormatReader::MultiFormatReader() {} Ref MultiFormatReader::decode(Ref image) { setHints(DecodeHints::DEFAULT_HINT); return decodeInternal(image); } Ref MultiFormatReader::decode(Ref image, DecodeHints hints) { setHints(hints); return decodeInternal(image); } Ref MultiFormatReader::decodeWithState(Ref image) { // Make sure to set up the default state so we don't crash if (readers_.empty()) { setHints(DecodeHints::DEFAULT_HINT); } return decodeInternal(image); } void MultiFormatReader::setHints(DecodeHints hints) { hints_ = hints; readers_.clear(); enableReaders(hints, false); if (readers_.empty()) enableReaders(hints, true); } void MultiFormatReader::enableReaders(zxing::DecodeHints hints, bool allowAll) { bool tryHarder = hints.getTryHarder(); bool addOneDReader = hints.containsFormat(BarcodeFormat::UPC_E) || hints.containsFormat(BarcodeFormat::UPC_A) || hints.containsFormat(BarcodeFormat::UPC_E) || hints.containsFormat(BarcodeFormat::EAN_13) || hints.containsFormat(BarcodeFormat::EAN_8) || hints.containsFormat(BarcodeFormat::CODABAR) || hints.containsFormat(BarcodeFormat::CODE_39) || hints.containsFormat(BarcodeFormat::CODE_93) || hints.containsFormat(BarcodeFormat::CODE_128) || hints.containsFormat(BarcodeFormat::ITF) || hints.containsFormat(BarcodeFormat::RSS_14) || hints.containsFormat(BarcodeFormat::RSS_EXPANDED); #ifdef ENABLE_DECODER_1D_BARCODES if ((allowAll || addOneDReader) && !tryHarder) { readers_.push_back(Ref(new zxing::oned::MultiFormatOneDReader(hints))); } #endif #ifdef ENABLE_DECODER_QR_CODE if (allowAll || hints.containsFormat(BarcodeFormat::QR_CODE)) { readers_.push_back(Ref(new zxing::qrcode::QRCodeReader())); } #endif #ifdef ENABLE_DECODER_DATA_MATRIX if (allowAll || hints.containsFormat(BarcodeFormat::DATA_MATRIX)) { readers_.push_back(Ref(new zxing::datamatrix::DataMatrixReader())); } #endif #ifdef ENABLE_DECODER_AZTEC if (allowAll || hints.containsFormat(BarcodeFormat::AZTEC)) { readers_.push_back(Ref(new zxing::aztec::AztecReader())); } #endif #ifdef ENABLE_DECODER_PDF17 if (allowAll || hints.containsFormat(BarcodeFormat::PDF_417)) { readers_.push_back(Ref(new zxing::pdf417::PDF417Reader())); } #endif /* if (hints.contains(BarcodeFormat.MAXICODE)) { readers.add(new MaxiCodeReader()); } */ #ifdef ENABLE_DECODER_1D_BARCODES if ((allowAll || addOneDReader) && tryHarder) { readers_.push_back(Ref(new zxing::oned::MultiFormatOneDReader(hints))); } #endif } Ref MultiFormatReader::decodeInternal(Ref image) { for (size_t i = 0; i < readers_.size(); i++) { try { return readers_[i]->decode(image, hints_); } catch (ReaderException const& re) { (void)re; // continue } } throw ReaderException("No code detected"); } MultiFormatReader::~MultiFormatReader() {} yubioath-desktop/QZXing/zxing/zxing/MultiFormatReader.h000066400000000000000000000026511412677075700236120ustar00rootroot00000000000000#ifndef ZXING_MULTI_FORMAT_READER_H #define ZXING_MULTI_FORMAT_READER_H /* * MultiFormatBarcodeReader.h * ZXing * * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include #include namespace zxing { class MultiFormatReader : public Reader { private: Ref decodeInternal(Ref image); std::vector > readers_; DecodeHints hints_; public: MultiFormatReader(); Ref decode(Ref image); Ref decode(Ref image, DecodeHints hints); Ref decodeWithState(Ref image); void setHints(DecodeHints hints); void enableReaders(DecodeHints hints, bool allowAll = false); ~MultiFormatReader(); }; } #endif // ZXING_MULTI_FORMAT_READER_H yubioath-desktop/QZXing/zxing/zxing/NotFoundException.cpp000066400000000000000000000017401412677075700241700ustar00rootroot00000000000000/* * IllegalStateException.cpp * zxing * * Created by Alexander Stillich on 05/11/2018. * Copyright 2008 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include zxing::NotFoundException::NotFoundException() ZXING_NOEXCEPT { } zxing::NotFoundException::NotFoundException(const char *msg) ZXING_NOEXCEPT : ReaderException(msg) { } zxing::NotFoundException::~NotFoundException() ZXING_NOEXCEPT { } yubioath-desktop/QZXing/zxing/zxing/NotFoundException.h000066400000000000000000000020141412677075700236300ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- #ifndef ZXING_NOT_FOUND_EXCEPTION_H #define ZXING_NOT_FOUND_EXCEPTION_H /* * Copyright 20011 ZXing authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include namespace zxing { class NotFoundException : public ReaderException { public: NotFoundException() ZXING_NOEXCEPT; NotFoundException(const char *msg) ZXING_NOEXCEPT; ~NotFoundException() ZXING_NOEXCEPT; }; } #endif // ZXING_NOT_FOUND_EXCEPTION_H yubioath-desktop/QZXing/zxing/zxing/Reader.cpp000066400000000000000000000015561412677075700217640ustar00rootroot00000000000000/* * Reader.cpp * zxing * * Created by Christian Brunschen on 13/05/2008. * Copyright 2008 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include namespace zxing { Reader::~Reader() { } Ref Reader::decode(Ref image) { return decode(image, DecodeHints::DEFAULT_HINT); } } yubioath-desktop/QZXing/zxing/zxing/Reader.h000066400000000000000000000020471412677075700214250ustar00rootroot00000000000000#ifndef ZXING_READER_H #define ZXING_READER_H /* * Reader.h * zxing * * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include namespace zxing { class Reader : public Counted { protected: Reader() {} public: virtual Ref decode(Ref image); virtual Ref decode(Ref image, DecodeHints hints) = 0; virtual ~Reader(); }; } #endif // ZXING_READER_H yubioath-desktop/QZXing/zxing/zxing/ReaderException.cpp000066400000000000000000000017061412677075700236400ustar00rootroot00000000000000/* * ReaderException.cpp * zxing * * Created by Alexander Stillich on 05/11/2018. * Copyright 2008 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include zxing::ReaderException::ReaderException() ZXING_NOEXCEPT { } zxing::ReaderException::ReaderException(const char *msg) ZXING_NOEXCEPT : Exception(msg) { } zxing::ReaderException::~ReaderException() ZXING_NOEXCEPT { } yubioath-desktop/QZXing/zxing/zxing/ReaderException.h000066400000000000000000000020471412677075700233040ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- #ifndef ZXING_READER_EXCEPTION_H #define ZXING_READER_EXCEPTION_H /* * ReaderException.h * zxing * * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include namespace zxing { class ReaderException : public Exception { public: ReaderException() ZXING_NOEXCEPT; ReaderException(char const* msg) ZXING_NOEXCEPT; ~ReaderException() ZXING_NOEXCEPT; }; } #endif // ZXING_READER_EXCEPTION_H yubioath-desktop/QZXing/zxing/zxing/Result.cpp000066400000000000000000000035201412677075700220310ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- /* * Result.cpp * zxing * * Created by Christian Brunschen on 13/05/2008. * Copyright 2008 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include using zxing::Result; using zxing::Ref; using zxing::ArrayRef; using zxing::String; using zxing::ResultPoint; // VC++ using zxing::BarcodeFormat; namespace zxing { Result::Result(Ref text, ArrayRef rawBytes, ArrayRef< Ref > resultPoints, BarcodeFormat format, const std::string &charSet, ResultMetadata metadata) : text_(text), rawBytes_(rawBytes), resultPoints_(resultPoints), format_(format), charSet_(charSet), metadata_(metadata) { } Result::~Result() { } Ref Result::getText() { return text_; } ArrayRef Result::getRawBytes() { return rawBytes_; } ArrayRef< Ref > const& Result::getResultPoints() const { return resultPoints_; } ArrayRef< Ref >& Result::getResultPoints() { return resultPoints_; } zxing::BarcodeFormat Result::getBarcodeFormat() const { return format_; } std::string Result::getCharSet() const { return charSet_; } ResultMetadata &Result::getMetadata() { return metadata_; } } yubioath-desktop/QZXing/zxing/zxing/Result.h000066400000000000000000000034431412677075700215020ustar00rootroot00000000000000#ifndef ZXING_RESULT_H #define ZXING_RESULT_H /* * Result.h * zxing * * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include #include #include #include #include #include namespace zxing { class Result : public Counted { private: Ref text_; ArrayRef rawBytes_; ArrayRef< Ref > resultPoints_; BarcodeFormat format_; std::string charSet_; ResultMetadata metadata_; public: Result(Ref text, ArrayRef rawBytes, ArrayRef< Ref > resultPoints, BarcodeFormat format, const std::string &charSet = "", ResultMetadata metadata = ResultMetadata()); ~Result(); Ref getText(); ArrayRef getRawBytes(); ArrayRef< Ref > const& getResultPoints() const; ArrayRef< Ref >& getResultPoints(); BarcodeFormat getBarcodeFormat() const; std::string getCharSet() const; ResultMetadata& getMetadata(); friend std::ostream& operator<<(std::ostream &out, Result& result); }; } #endif // ZXING_RESULT_H yubioath-desktop/QZXing/zxing/zxing/ResultIO.cpp000066400000000000000000000020351412677075700222610ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- /* * ResultIO.cpp * zxing * * Created by Christian Brunschen on 13/05/2008. * Copyright 2008 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include using zxing::Result; using std::ostream; ostream& zxing::operator<<(ostream &out, Result& result) { if (result.text_ != 0) { out << result.text_->getText(); } else { out << "[" << result.rawBytes_->size() << " bytes]"; } return out; } yubioath-desktop/QZXing/zxing/zxing/ResultMetadata.cpp000066400000000000000000000065631412677075700235040ustar00rootroot00000000000000/* * Copyright 2008 ZXing authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * 2019-05-08 translation from Java into C++ */ #include #include namespace zxing { struct ResultMetadata::Value { virtual ~Value() {} virtual int toInteger(int fallback) const { return fallback; } virtual std::string toString() const { return std::string(); } }; struct ResultMetadata::IntegerValue : public Value { int value; explicit IntegerValue(int v) : value(v) {} int toInteger(int) const override { return value; } }; struct ResultMetadata::StringValue : public Value { std::string value; explicit StringValue(std::string v) : value(std::move(v)) {} std::string toString() const override { return value; } }; int ResultMetadata::getInt(Key key, int fallbackValue) const { std::map>::const_iterator it = _contents.find(key); return it != _contents.end() ? it->second->toInteger(fallbackValue) : fallbackValue; } std::string ResultMetadata::getString(Key key) const { std::map>::const_iterator it = _contents.find(key); return it != _contents.end() ? it->second->toString() : std::string(); } void ResultMetadata::put(Key key, int value) { _contents[key] = std::make_shared(value); } void ResultMetadata::put(Key key, const std::string &value) { _contents[key] = std::make_shared(value); } void ResultMetadata::putAll(const ResultMetadata& other) { _contents.insert(other._contents.begin(), other._contents.end()); } std::list ResultMetadata::keys() const { std::list keys; for(std::map>::const_iterator it = _contents.begin(); it != _contents.end(); ++it) { keys.push_back(it->first); } return keys; } bool ResultMetadata::empty() const { return _contents.empty(); } std::string ResultMetadata::keyToString(Key key) const { switch (key) { case OTHER: return "OTHER"; case ORIENTATION: return "ORIENTATION"; case BYTE_SEGMENTS: return "BYTE_SEGMENTS"; case ERROR_CORRECTION_LEVEL: return "ERROR_CORRECTION_LEVEL"; case ISSUE_NUMBER: return "ISSUE_NUMBER"; case SUGGESTED_PRICE: return "SUGGESTED_PRICE"; case POSSIBLE_COUNTRY: return "POSSIBLE_COUNTRY"; case UPC_EAN_EXTENSION: return "UPC_EAN_EXTENSION"; case PDF417_EXTRA_METADATA: return "PDF417_EXTRA_METADATA"; case STRUCTURED_APPEND_SEQUENCE: return "STRUCTURED_APPEND_SEQUENCE"; case STRUCTURED_APPEND_CODE_COUNT: return "STRUCTURED_APPEND_CODE_COUNT"; case STRUCTURED_APPEND_PARITY: return "STRUCTURED_APPEND_PARITY"; } return "UNKNOWN"; } } // zxing yubioath-desktop/QZXing/zxing/zxing/ResultMetadata.h000066400000000000000000000076111412677075700231440ustar00rootroot00000000000000#ifndef ZXING_RESULT_METADATA_H #define ZXING_RESULT_METADATA_H /* * Copyright 2008 ZXing authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * 2019-05-08 translation from Java into C++ */ #include #include #include #include namespace zxing { class ByteArray; /** * Represents some type of metadata about the result of the decoding that the decoder * wishes to communicate back to the caller. */ class ResultMetadata { public: enum Key { /** * Unspecified, application-specific metadata. Maps to an unspecified {@link Object}. */ OTHER, /** * Denotes the likely approximate orientation of the barcode in the image. This value * is given as degrees rotated clockwise from the normal, upright orientation. * For example a 1D barcode which was found by reading top-to-bottom would be * said to have orientation "90". This key maps to an {@link Integer} whose * value is in the range [0,360). */ ORIENTATION, /** *

2D barcode formats typically encode text, but allow for a sort of 'byte mode' * which is sometimes used to encode binary data. While {@link Result} makes available * the complete raw bytes in the barcode for these formats, it does not offer the bytes * from the byte segments alone.

*/ BYTE_SEGMENTS, /** * Error correction level used, if applicable. The value type depends on the * format, but is typically a String. */ ERROR_CORRECTION_LEVEL, /** * For some periodicals, indicates the issue number as an {@link Integer}. */ ISSUE_NUMBER, /** * For some products, indicates the suggested retail price in the barcode as a * formatted {@link String}. */ SUGGESTED_PRICE, /** * For some products, the possible country of manufacture as a {@link String} denoting the * ISO country code. Some map to multiple possible countries, like "US/CA". */ POSSIBLE_COUNTRY, /** * For some products, the extension text */ UPC_EAN_EXTENSION, /** * PDF417-specific metadata */ PDF417_EXTRA_METADATA, /** * If the code format supports structured append and the current scanned code is part of one then the * sequence number is given with it. */ STRUCTURED_APPEND_SEQUENCE, /** * If the code format supports structured append and the current scanned code is part of one then the * total code count is given with it. */ STRUCTURED_APPEND_CODE_COUNT, /** * If the code format supports structured append and the current scanned code is part of one then the * parity is given with it. */ STRUCTURED_APPEND_PARITY }; int getInt(Key key, int fallbackValue = 0) const; std::string getString(Key key) const; void put(Key key, int value); void put(Key key, const std::string& value); void putAll(const ResultMetadata& other); std::list keys() const; std::string keyToString(Key key) const; bool empty() const; private: struct Value; struct IntegerValue; struct StringValue; std::map> _contents; }; } #endif yubioath-desktop/QZXing/zxing/zxing/ResultPoint.cpp000066400000000000000000000074641412677075700230560ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- /* * ResultPoint.cpp * zxing * * Created by Christian Brunschen on 13/05/2008. * Copyright 2008 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include using zxing::common::detector::MathUtils; namespace zxing { ResultPoint::ResultPoint() : posX_(0), posY_(0) {} ResultPoint::ResultPoint(float x, float y) : posX_(x), posY_(y) {} ResultPoint::ResultPoint(int x, int y) : posX_(float(x)), posY_(float(y)) {} ResultPoint::~ResultPoint() {} float ResultPoint::getX() const { return posX_; } float ResultPoint::getY() const { return posY_; } bool ResultPoint::equals(const Ref &other) { return posX_ == other->getX() && posY_ == other->getY(); } /** *

Orders an array of three ResultPoints in an order [A,B,C] such that AB < AC and * BC < AC and the angle between BC and BA is less than 180 degrees. */ void ResultPoint::orderBestPatterns(std::vector > &patterns) { if(patterns.size() != 3) return; // Find distances between pattern centers float zeroOneDistance = distance(patterns[0]->getX(), patterns[1]->getX(),patterns[0]->getY(), patterns[1]->getY()); float oneTwoDistance = distance(patterns[1]->getX(), patterns[2]->getX(),patterns[1]->getY(), patterns[2]->getY()); float zeroTwoDistance = distance(patterns[0]->getX(), patterns[2]->getX(),patterns[0]->getY(), patterns[2]->getY()); Ref pointA, pointB, pointC; // Assume one closest to other two is B; A and C will just be guesses at first if (oneTwoDistance >= zeroOneDistance && oneTwoDistance >= zeroTwoDistance) { pointB = patterns[0]; pointA = patterns[1]; pointC = patterns[2]; } else if (zeroTwoDistance >= oneTwoDistance && zeroTwoDistance >= zeroOneDistance) { pointB = patterns[1]; pointA = patterns[0]; pointC = patterns[2]; } else { pointB = patterns[2]; pointA = patterns[0]; pointC = patterns[1]; } // Use cross product to figure out whether A and C are correct or flipped. // This asks whether BC x BA has a positive z component, which is the arrangement // we want for A, B, C. If it's negative, then we've got it flipped around and // should swap A and C. if (crossProductZ(pointA, pointB, pointC) < 0.0f) { Ref temp = pointA; pointA = pointC; pointC = temp; } patterns[0] = pointA; patterns[1] = pointB; patterns[2] = pointC; } float ResultPoint::distance(Ref pattern1, Ref pattern2) { return MathUtils::distance(pattern1->posX_, pattern1->posY_, pattern2->posX_, pattern2->posY_); } float ResultPoint::distance(float x1, float x2, float y1, float y2) { float xDiff = x1 - x2; float yDiff = y1 - y2; return (float) sqrt((double) (xDiff * xDiff + yDiff * yDiff)); } float ResultPoint::crossProductZ(Ref pointA, Ref pointB, Ref pointC) { float bX = pointB->getX(); float bY = pointB->getY(); return ((pointC->getX() - bX) * (pointA->getY() - bY)) - ((pointC->getY() - bY) * (pointA->getX() - bX)); } } yubioath-desktop/QZXing/zxing/zxing/ResultPoint.h000066400000000000000000000030031412677075700225040ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- #ifndef ZXING_RESULT_POINT_H #define ZXING_RESULT_POINT_H /* * ResultPoint.h * zxing * * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include namespace zxing { class ResultPoint : public Counted { protected: const float posX_; const float posY_; public: ResultPoint(); ResultPoint(float x, float y); ResultPoint(int x, int y); virtual ~ResultPoint(); virtual float getX() const; virtual float getY() const; bool equals(const Ref &other); static void orderBestPatterns(std::vector > &patterns); static float distance(Ref point1, Ref point2); static float distance(float x1, float x2, float y1, float y2); private: static float crossProductZ(Ref pointA, Ref pointB, Ref pointC); }; } #endif // ZXING_RESULT_POINT_H yubioath-desktop/QZXing/zxing/zxing/ResultPointCallback.cpp000066400000000000000000000014031412677075700244560ustar00rootroot00000000000000/* * ResultPointCallback.cpp * zxing * * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include namespace zxing { ResultPointCallback::~ResultPointCallback() {} } yubioath-desktop/QZXing/zxing/zxing/ResultPointCallback.h000066400000000000000000000020361412677075700241260ustar00rootroot00000000000000#ifndef ZXING_RESULT_POINT_CALLBACK_H #define ZXING_RESULT_POINT_CALLBACK_H /* * ResultPointCallback.h * zxing * * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include namespace zxing { class ResultPoint; class ResultPointCallback : public Counted { protected: ResultPointCallback() {} public: virtual void foundPossibleResultPoint(ResultPoint const& point) = 0; virtual ~ResultPointCallback(); }; } #endif // ZXING_RESULT_POINT_CALLBACK_H yubioath-desktop/QZXing/zxing/zxing/UnsupportedEncodingException.cpp000066400000000000000000000020561412677075700264340ustar00rootroot00000000000000/* * UnsupportedEncodingException.cpp * zxing * * Created by Alexander Stillich on 05/11/2018. * Copyright 2008 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include zxing::UnsupportedEncodingException::UnsupportedEncodingException() ZXING_NOEXCEPT { } zxing::UnsupportedEncodingException::UnsupportedEncodingException(const char *msg) ZXING_NOEXCEPT : Exception(msg) { } zxing::UnsupportedEncodingException::~UnsupportedEncodingException() ZXING_NOEXCEPT { } yubioath-desktop/QZXing/zxing/zxing/UnsupportedEncodingException.h000066400000000000000000000006241412677075700261000ustar00rootroot00000000000000#ifndef UNSUPPORTEDENCODINGEXCEPTION_H #define UNSUPPORTEDENCODINGEXCEPTION_H #include namespace zxing { class UnsupportedEncodingException : public Exception { public: UnsupportedEncodingException() ZXING_NOEXCEPT; UnsupportedEncodingException(char const* msg) ZXING_NOEXCEPT; ~UnsupportedEncodingException() ZXING_NOEXCEPT; }; } #endif // UNSUPPORTEDENCODINGEXCEPTION_H yubioath-desktop/QZXing/zxing/zxing/WriterException.cpp000066400000000000000000000017231412677075700237110ustar00rootroot00000000000000/* * UnsupportedEncodingException.cpp * zxing * * Created by Alexander Stillich on 05/11/2018. * Copyright 2008 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include zxing::WriterException::WriterException() ZXING_NOEXCEPT { } zxing::WriterException::WriterException(const char *msg) ZXING_NOEXCEPT : Exception(msg) { } zxing::WriterException::~WriterException() ZXING_NOEXCEPT { } yubioath-desktop/QZXing/zxing/zxing/WriterException.h000066400000000000000000000004711412677075700233550ustar00rootroot00000000000000#ifndef WRITEREXCEPTION_H #define WRITEREXCEPTION_H #include namespace zxing { class WriterException : public Exception { public: WriterException() ZXING_NOEXCEPT; WriterException(char const* msg) ZXING_NOEXCEPT; ~WriterException() ZXING_NOEXCEPT; }; } #endif // WRITEREXCEPTION_H yubioath-desktop/QZXing/zxing/zxing/ZXing.h000066400000000000000000000065461412677075700212720ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- /* * Copyright 2013 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef ZXING_H #define ZXING_H #define ZXING_ARRAY_LEN(v) ((int)(sizeof(v)/sizeof(v[0]))) #define ZX_LOG_DIGITS(digits) \ ((digits == 8) ? 3 : \ ((digits == 16) ? 4 : \ ((digits == 32) ? 5 : \ ((digits == 64) ? 6 : \ ((digits == 128) ? 7 : \ (-1)))))) #ifndef ZXING_DEBUG #define ZXING_DEBUG 0 #endif #include #include "common/Types.h" #if defined(_WIN32) || defined(_WIN64) #include #include namespace zxing { inline bool isnan_z(float v) {return std::isnan(v) != 0;} inline bool isnan_z(double v) {return std::isnan(v) != 0;} } #elif (__cplusplus >= 201103L) #include namespace zxing { inline bool isnan_z(float v) { return std::isnan(v); } inline bool isnan_z(double v) { return std::isnan(v); } } #elif(__STDC_VERSION__ >= 199901L) #include namespace zxing { inline bool isnan_z(float v) { return isnan(v); } inline bool isnan_z(double v) { return isnan(v); } } #else namespace zxing { inline bool isnan_z(float v) { volatile float d = v; return d != d; } inline bool isnan_z(double v) { volatile double d = v; return d != d; } } #endif namespace zxing { inline float nan() {return std::numeric_limits::quiet_NaN();} } #if ZXING_DEBUG #include #include using std::cout; using std::cerr; using std::endl; using std::flush; using std::string; using std::ostream; #if ZXING_DEBUG_TIMER #include namespace zxing { class DebugTimer { public: DebugTimer(char const* string_) : chars(string_) { gettimeofday(&start, 0); } DebugTimer(std::string const& string_) : chars(0), string(string_) { gettimeofday(&start, 0); } void mark(char const* string) { struct timeval end; gettimeofday(&end, 0); int diff = (end.tv_sec - start.tv_sec)*1000*1000+(end.tv_usec - start.tv_usec); cerr << diff << " " << string << '\n'; } void mark(std::string string) { mark(string.c_str()); } ~DebugTimer() { if (chars) { mark(chars); } else { mark(string.c_str()); } } private: char const* const chars; std::string string; struct timeval start; }; } #define ZXING_TIME(string) DebugTimer __timer__ (string) #define ZXING_TIME_MARK(string) __timer__.mark(string) #endif #endif // ZXING_DEBUG #ifndef ZXING_TIME #define ZXING_TIME(string) (void)0 #endif #ifndef ZXING_TIME_MARK #define ZXING_TIME_MARK(string) (void)0 #endif #ifndef ZXING_NULLPTR #if __cplusplus >= 201103L #define ZXING_NULLPTR nullptr #else #define ZXING_NULLPTR NULL #endif #endif // ZXING_NULLPTR #if __cplusplus >= 201103L #define ZXING_NOEXCEPT noexcept #else #define ZXING_NOEXCEPT throw() #endif #endif yubioath-desktop/QZXing/zxing/zxing/aztec/000077500000000000000000000000001412677075700211555ustar00rootroot00000000000000yubioath-desktop/QZXing/zxing/zxing/aztec/AztecDetectorResult.cpp000066400000000000000000000031231412677075700256170ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- /* * AtztecDetecorResult.cpp * zxing * * Created by Lukas Stabe on 08/02/2012. * Copyright 2012 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include using zxing::aztec::AztecDetectorResult; // VC++ using zxing::Ref; using zxing::ArrayRef; using zxing::BitMatrix; using zxing::ResultPoint; AztecDetectorResult::AztecDetectorResult(Ref bits, ArrayRef< Ref > points, bool compact, int nbDatablocks, int nbLayers) : DetectorResult(bits, points), compact_(compact), nbDatablocks_(nbDatablocks), nbLayers_(nbLayers) { } bool AztecDetectorResult::isCompact() { return compact_; } int AztecDetectorResult::getNBDatablocks() { return nbDatablocks_; } int AztecDetectorResult::getNBLayers() { return nbLayers_; } yubioath-desktop/QZXing/zxing/zxing/aztec/AztecDetectorResult.h000066400000000000000000000025151412677075700252700ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- /* * AtztecDetecorResult.h * zxing * * Created by Lukas Stabe on 08/02/2012. * Copyright 2012 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #ifndef ZXingWidget_AtztecDetecorResult_h #define ZXingWidget_AtztecDetecorResult_h namespace zxing { namespace aztec { class AztecDetectorResult : public DetectorResult { private: bool compact_; int nbDatablocks_, nbLayers_; public: AztecDetectorResult(Ref bits, ArrayRef< Ref > points, bool compact, int nbDatablocks, int nbLayers); bool isCompact(); int getNBDatablocks(); int getNBLayers(); }; } } #endif yubioath-desktop/QZXing/zxing/zxing/aztec/AztecReader.cpp000066400000000000000000000040351412677075700240540ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- /* * AztecReader.cpp * zxing * * Created by Lukas Stabe on 08/02/2012. * Copyright 2012 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include #include using zxing::Ref; using zxing::ArrayRef; using zxing::Result; using zxing::aztec::AztecReader; // VC++ using zxing::BinaryBitmap; using zxing::DecodeHints; AztecReader::AztecReader() : decoder_() { // nothing } Ref AztecReader::decode(Ref image) { Detector detector(image->getBlackMatrix()); Ref detectorResult(detector.detect()); ArrayRef< Ref > points(detectorResult->getPoints()); Ref decoderResult(decoder_.decode(detectorResult)); Ref result(new Result(decoderResult->getText(), decoderResult->getRawBytes(), points, BarcodeFormat::AZTEC)); return result; } Ref AztecReader::decode(Ref image, DecodeHints) { //cout << "decoding with hints not supported for aztec" << "\n" << flush; return this->decode(image); } AztecReader::~AztecReader() { // nothing } zxing::aztec::Decoder& AztecReader::getDecoder() { return decoder_; } yubioath-desktop/QZXing/zxing/zxing/aztec/AztecReader.h000066400000000000000000000024421412677075700235210ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- /* * AztecReader.h * zxing * * Created by Lukas Stabe on 08/02/2012. * Copyright 2012 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include #ifndef ZXingWidget_AztecReader_h #define ZXingWidget_AztecReader_h namespace zxing { namespace aztec { class AztecReader : public Reader { private: Decoder decoder_; protected: Decoder &getDecoder(); public: AztecReader(); virtual Ref decode(Ref image); virtual Ref decode(Ref image, DecodeHints hints); virtual ~AztecReader(); }; } } #endif yubioath-desktop/QZXing/zxing/zxing/aztec/decoder/000077500000000000000000000000001412677075700225625ustar00rootroot00000000000000yubioath-desktop/QZXing/zxing/zxing/aztec/decoder/AztecDecoder.cpp000066400000000000000000000311621412677075700256250ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- /* * Decoder.cpp * zxing * * Created by Lukas Stabe on 08/02/2012. * Copyright 2012 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #ifndef NO_ICONV #include #endif #include #include #include #include #include #include #include #include using zxing::aztec::Decoder; using zxing::DecoderResult; using zxing::String; using zxing::BitArray; using zxing::BitMatrix; using zxing::Ref; using std::string; namespace { void add(string& result, char character) { #ifndef NO_ICONV char character2 = character & 0xff; char s[] = {character2}; char* ss = s; size_t sl = sizeof(s); char d[4]; char* ds = d; size_t dl = sizeof(d); iconv_t ic = iconv_open("UTF-8", "ISO-8859-1"); #if defined(Q_OS_SYMBIAN) iconv(ic, (const char**)&ss, &sl, &ds, &dl); #else iconv(ic, (char**)&ss, &sl, &ds, &dl); #endif iconv_close(ic); d[sizeof(d)-dl] = 0; result.append(d); #else result.push_back(character); #endif } const int NB_BITS_COMPACT[] = { 0, 104, 240, 408, 608 }; const int NB_BITS[] = { 0, 128, 288, 480, 704, 960, 1248, 1568, 1920, 2304, 2720, 3168, 3648, 4160, 4704, 5280, 5888, 6528, 7200, 7904, 8640, 9408, 10208, 11040, 11904, 12800, 13728, 14688, 15680, 16704, 17760, 18848, 19968 }; const int NB_DATABLOCK_COMPACT[] = { 0, 17, 40, 51, 76 }; const int NB_DATABLOCK[] = { 0, 21, 48, 60, 88, 120, 156, 196, 240, 230, 272, 316, 364, 416, 470, 528, 588, 652, 720, 790, 864, 940, 1020, 920, 992, 1066, 1144, 1224, 1306, 1392, 1480, 1570, 1664 }; const char* UPPER_TABLE[] = { "CTRL_PS", " ", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "CTRL_LL", "CTRL_ML", "CTRL_DL", "CTRL_BS" }; const char* LOWER_TABLE[] = { "CTRL_PS", " ", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "CTRL_US", "CTRL_ML", "CTRL_DL", "CTRL_BS" }; const char* MIXED_TABLE[] = { "CTRL_PS", " ", "\1", "\2", "\3", "\4", "\5", "\6", "\7", "\b", "\t", "\n", "\13", "\f", "\r", "\33", "\34", "\35", "\36", "\37", "@", "\\", "^", "_", "`", "|", "~", "\177", "CTRL_LL", "CTRL_UL", "CTRL_PL", "CTRL_BS" }; const char* PUNCT_TABLE[] = { "", "\r", "\r\n", ". ", ", ", ": ", "!", "\"", "#", "$", "%", "&", "'", "(", ")", "*", "+", ",", "-", ".", "/", ":", ";", "<", "=", ">", "?", "[", "]", "{", "}", "CTRL_UL" }; const char* DIGIT_TABLE[] = { "CTRL_PS", " ", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", ",", ".", "CTRL_UL", "CTRL_US" }; } Decoder::Table Decoder::getTable(char t) { switch (t) { case 'L': return LOWER; case 'P': return PUNCT; case 'M': return MIXED; case 'D': return DIGIT; case 'B': return BINARY; case 'U': default: return UPPER; } } const char* Decoder::getCharacter(zxing::aztec::Decoder::Table table, int code) { switch (table) { case UPPER: return UPPER_TABLE[code]; case LOWER: return LOWER_TABLE[code]; case MIXED: return MIXED_TABLE[code]; case PUNCT: return PUNCT_TABLE[code]; case DIGIT: return DIGIT_TABLE[code]; default: return ""; } } Decoder::Decoder() { // nothing } Ref Decoder::decode(Ref detectorResult) { ddata_ = detectorResult; // std::printf("getting bits\n"); Ref matrix = detectorResult->getBits(); if (!ddata_->isCompact()) { // std::printf("removing lines\n"); matrix = removeDashedLines(ddata_->getBits()); } // std::printf("extracting bits\n"); Ref rawbits = extractBits(matrix); // std::printf("correcting bits\n"); Ref aCorrectedBits = correctBits(rawbits); // std::printf("decoding bits\n"); Ref result = getEncodedData(aCorrectedBits); // std::printf("constructing array\n"); ArrayRef arrayOut(aCorrectedBits->getSize()); for (size_t i = 0; i < aCorrectedBits->count(); i++) { arrayOut[i] = (zxing::byte)aCorrectedBits->get(i); } // std::printf("returning\n"); return Ref(new DecoderResult(arrayOut, result)); } Ref Decoder::getEncodedData(Ref correctedBits) { int endIndex = codewordSize_ * ddata_->getNBDatablocks() - invertedBitCount_; if (endIndex > (int)correctedBits->getSize()) { // std::printf("invalid input\n"); throw FormatException("invalid input data"); } Table lastTable = UPPER; Table table = UPPER; int startIndex = 0; std::string result; bool end = false; bool shift = false; bool switchShift = false; bool binaryShift = false; while (!end) { // std::printf("decoooooding\n"); if (shift) { switchShift = true; } else { lastTable = table; } int code; if (binaryShift) { if (endIndex - startIndex < 5) { break; } int length = readCode(correctedBits, startIndex, 5); startIndex += 5; if (length == 0) { if (endIndex - startIndex < 11) { break; } length = readCode(correctedBits, startIndex, 11) + 31; startIndex += 11; } for (int charCount = 0; charCount < length; charCount++) { if (endIndex - startIndex < 8) { end = true; break; } code = readCode(correctedBits, startIndex, 8); add(result, code); startIndex += 8; } binaryShift = false; } else { if (table == BINARY) { if (endIndex - startIndex < 8) { break; } code = readCode(correctedBits, startIndex, 8); startIndex += 8; add(result, code); } else { int size = 5; if (table == DIGIT) { size = 4; } if (endIndex - startIndex < size) { break; } code = readCode(correctedBits, startIndex, size); startIndex += size; const char *str = getCharacter(table, code); std::string string(str); if ((int)string.find("CTRL_") != -1) { table = getTable(str[5]); if (str[6] == 'S') { shift = true; if (str[5] == 'B') { binaryShift = true; } } } else { result.append(string); } } } if (switchShift) { table = lastTable; shift = false; switchShift = false; } } return Ref(new String(result)); } Ref Decoder::correctBits(Ref rawbits) { //return rawbits; // std::printf("decoding stuff:%d datablocks in %d layers\n", ddata_->getNBDatablocks(), ddata_->getNBLayers()); Ref gf = GenericGF::AZTEC_DATA_6; if (ddata_->getNBLayers() <= 2) { codewordSize_ = 6; gf = GenericGF::AZTEC_DATA_6; } else if (ddata_->getNBLayers() <= 8) { codewordSize_ = 8; gf = GenericGF::AZTEC_DATA_8; } else if (ddata_->getNBLayers() <= 22) { codewordSize_ = 10; gf = GenericGF::AZTEC_DATA_10; } else { codewordSize_ = 12; gf = GenericGF::AZTEC_DATA_12; } int numDataCodewords = ddata_->getNBDatablocks(); int numECCodewords; int offset; if (ddata_->isCompact()) { offset = NB_BITS_COMPACT[ddata_->getNBLayers()] - numCodewords_ * codewordSize_; numECCodewords = NB_DATABLOCK_COMPACT[ddata_->getNBLayers()] - numDataCodewords; } else { offset = NB_BITS[ddata_->getNBLayers()] - numCodewords_ * codewordSize_; numECCodewords = NB_DATABLOCK[ddata_->getNBLayers()] - numDataCodewords; } ArrayRef dataWords(numCodewords_); for (int i = 0; i < numCodewords_; i++) { int flag = 1; for (int j = 1; j <= codewordSize_; j++) { if (rawbits->get(codewordSize_ * i + codewordSize_ - j + offset)) { dataWords[i] += flag; } flag <<= 1; } // // // } try { ReedSolomonDecoder rsDecoder(gf); rsDecoder.decode(dataWords, numECCodewords); } catch (ReedSolomonException const& ignored) { (void)ignored; // std::printf("got reed solomon exception:%s, throwing formatexception\n", rse.what()); throw FormatException("rs decoding failed"); } catch (IllegalArgumentException const& iae) { (void)iae; // std::printf("illegal argument exception: %s", iae.what()); } offset = 0; invertedBitCount_ = 0; Ref correctedBits(new BitArray(numDataCodewords * codewordSize_)); for (int i = 0; i < numDataCodewords; i++) { bool seriesColor = false; int seriesCount = 0; int flag = 1 << (codewordSize_ - 1); for (int j = 0; j < codewordSize_; j++) { bool color = (dataWords[i] & flag) == flag; if (seriesCount == codewordSize_ - 1) { if (color == seriesColor) { throw FormatException("bit was not inverted"); } seriesColor = false; seriesCount = 0; offset++; invertedBitCount_++; } else { if (seriesColor == color) { seriesCount++; } else { seriesCount = 1; seriesColor = color; } if (color) correctedBits->set(i * codewordSize_ + j - offset); } flag = ((unsigned int)flag) >> 1; } } return correctedBits; } Ref Decoder::extractBits(Ref matrix) { std::vector rawbits; if (ddata_->isCompact()) { if (ddata_->getNBLayers() > 5) { //NB_BITS_COMPACT length throw FormatException("data is too long"); } rawbits = std::vector(NB_BITS_COMPACT[ddata_->getNBLayers()]); numCodewords_ = NB_DATABLOCK_COMPACT[ddata_->getNBLayers()]; } else { if (ddata_->getNBLayers() > 33) { //NB_BITS length throw FormatException("data is too long"); } rawbits = std::vector(NB_BITS[ddata_->getNBLayers()]); numCodewords_ = NB_DATABLOCK[ddata_->getNBLayers()]; } int layer = ddata_->getNBLayers(); int size = matrix->getHeight(); int rawbitsOffset = 0; int matrixOffset = 0; while (layer != 0) { int flip = 0; for (int i = 0; i < 2 * size - 4; i++) { rawbits[rawbitsOffset + i] = matrix->get(matrixOffset + flip, matrixOffset + i / 2); rawbits[rawbitsOffset + 2 * size - 4 + i] = matrix->get(matrixOffset + i / 2, matrixOffset + size - 1 - flip); flip = (flip + 1) % 2; } flip = 0; for (int i = 2 * size + 1; i > 5; i--) { rawbits[rawbitsOffset + 4 * size - 8 + (2 * size - i) + 1] = matrix->get(matrixOffset + size - 1 - flip, matrixOffset + i / 2 - 1); rawbits[rawbitsOffset + 6 * size - 12 + (2 * size - i) + 1] = matrix->get(matrixOffset + i / 2 - 1, matrixOffset + flip); flip = (flip + 1) % 2; } matrixOffset += 2; rawbitsOffset += 8 * size - 16; layer--; size -= 4; } Ref returnValue(new BitArray(int(rawbits.size()))); for (int i = 0; i < (int)rawbits.size(); i++) { if (rawbits[i]) returnValue->set(i); } return returnValue; } Ref Decoder::removeDashedLines(Ref matrix) { int nbDashed = 1 + 2 * ((matrix->getWidth() - 1) / 2 / 16); Ref newMatrix(new BitMatrix(matrix->getWidth() - nbDashed, matrix->getHeight() - nbDashed)); int nx = 0; for (int x = 0; x < (int)matrix->getWidth(); x++) { if ((matrix->getWidth() / 2 - x) % 16 == 0) { continue; } int ny = 0; for (int y = 0; y < (int)matrix->getHeight(); y++) { if ((matrix->getWidth() / 2 - y) % 16 == 0) { continue; } if (matrix->get(x, y)) { newMatrix->set(nx, ny); } ny++; } nx++; } return newMatrix; } int Decoder::readCode(Ref rawbits, int startIndex, int length) { int res = 0; for (int i = startIndex; i < startIndex + length; i++) { res <<= 1; if (rawbits->get(i)) { res ++; } } return res; } yubioath-desktop/QZXing/zxing/zxing/aztec/decoder/Decoder.h000066400000000000000000000035031412677075700243010ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- /* * Decoder.h * zxing * * Created by Lukas Stabe on 08/02/2012. * Copyright 2012 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef ZXING_AZTEC_DECODER_DECODER_H #define ZXING_AZTEC_DECODER_DECODER_H #include #include #include namespace zxing { class DecoderResult; namespace aztec { class Decoder : public Counted { private: enum Table { UPPER, LOWER, MIXED, DIGIT, PUNCT, BINARY }; static Table getTable(char t); static const char* getCharacter(Table table, int code); int numCodewords_; int codewordSize_; Ref ddata_; int invertedBitCount_; Ref getEncodedData(Ref correctedBits); Ref correctBits(Ref rawbits); Ref extractBits(Ref matrix); static Ref removeDashedLines(Ref matrix); static int readCode(Ref rawbits, int startIndex, int length); public: Decoder(); Ref decode(Ref detectorResult); }; } } #endif // ZXING_AZTEC_DECODER_DECODER_H yubioath-desktop/QZXing/zxing/zxing/aztec/detector/000077500000000000000000000000001412677075700227665ustar00rootroot00000000000000yubioath-desktop/QZXing/zxing/zxing/aztec/detector/AztecDetector.cpp000066400000000000000000000445071412677075700262440ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- /* * Detector.cpp * zxing * * Created by Lukas Stabe on 08/02/2012. * Copyright 2012 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include #include #include #include #include #include #include using std::vector; using zxing::aztec::Detector; using zxing::aztec::Point; using zxing::aztec::AztecDetectorResult; using zxing::Ref; using zxing::ArrayRef; using zxing::ResultPoint; using zxing::BitArray; using zxing::BitMatrix; using zxing::common::detector::MathUtils; Detector::Detector(Ref image): image_(image), nbLayers_(0), nbDataBlocks_(0), nbCenterLayers_(0) { } Ref Detector::detect() { Ref pCenter = getMatrixCenter(); std::vector > bullEyeCornerPoints = getBullEyeCornerPoints(pCenter); extractParameters(bullEyeCornerPoints); ArrayRef< Ref > corners = getMatrixCornerPoints(bullEyeCornerPoints); Ref bits = sampleGrid(image_, corners[shift_%4], corners[(shift_+3)%4], corners[(shift_+2)%4], corners[(shift_+1)%4]); // std::printf("------------\ndetected: compact:%s, nbDataBlocks:%d, nbLayers:%d\n------------\n",compact_?"YES":"NO", nbDataBlocks_, nbLayers_); return Ref(new AztecDetectorResult(bits, corners, compact_, nbDataBlocks_, nbLayers_)); } void Detector::extractParameters(std::vector > bullEyeCornerPoints) { int twoCenterLayers = 2 * nbCenterLayers_; // get the bits around the bull's eye Ref resab = sampleLine(bullEyeCornerPoints[0], bullEyeCornerPoints[1], twoCenterLayers+1); Ref resbc = sampleLine(bullEyeCornerPoints[1], bullEyeCornerPoints[2], twoCenterLayers+1); Ref rescd = sampleLine(bullEyeCornerPoints[2], bullEyeCornerPoints[3], twoCenterLayers+1); Ref resda = sampleLine(bullEyeCornerPoints[3], bullEyeCornerPoints[0], twoCenterLayers+1); // determin the orientation of the matrix if (resab->get(0) && resab->get(twoCenterLayers)) { shift_ = 0; } else if (resbc->get(0) && resbc->get(twoCenterLayers)) { shift_ = 1; } else if (rescd->get(0) && rescd->get(twoCenterLayers)) { shift_ = 2; } else if (resda->get(0) && resda->get(twoCenterLayers)) { shift_ = 3; } else { // std::printf("could not detemine orientation\n"); throw ReaderException("could not determine orientation"); } //d a // //c b //flatten the bits in a single array Ref parameterData(new BitArray(compact_?28:40)); Ref shiftedParameterData(new BitArray(compact_?28:40)); if (compact_) { for (int i = 0; i < 7; i++) { if (resab->get(2+i)) shiftedParameterData->set(i); if (resbc->get(2+i)) shiftedParameterData->set(i+7); if (rescd->get(2+i)) shiftedParameterData->set(i+14); if (resda->get(2+i)) shiftedParameterData->set(i+21); } for (int i = 0; i < 28; i++) { if (shiftedParameterData->get((i+shift_*7)%28)) parameterData->set(i); } } else { for (int i = 0; i < 11; i++) { if (i < 5) { if (resab->get(2+i)) shiftedParameterData->set(i); if (resbc->get(2+i)) shiftedParameterData->set(i+10); if (rescd->get(2+i)) shiftedParameterData->set(i+20); if (resda->get(2+i)) shiftedParameterData->set(i+30); } if (i > 5) { if (resab->get(2+i)) shiftedParameterData->set(i-1); if (resbc->get(2+i)) shiftedParameterData->set(i+9); if (rescd->get(2+i)) shiftedParameterData->set(i+19); if (resda->get(2+i)) shiftedParameterData->set(i+29); } } for (int i = 0; i < 40; i++) { if (shiftedParameterData->get((i+shift_*10)%40)) parameterData->set(i); } } correctParameterData(parameterData, compact_); getParameters(parameterData); } ArrayRef< Ref > Detector::getMatrixCornerPoints(std::vector > bullEyeCornerPoints) { float ratio = (2 * nbLayers_ + (nbLayers_ > 4 ? 1 : 0) + (nbLayers_ - 4) / 8) / (2.0f * nbCenterLayers_); int dx = bullEyeCornerPoints[0]->getX() - bullEyeCornerPoints[2]->getX(); dx += dx > 0 ? 1 : -1; int dy = bullEyeCornerPoints[0]->getY() - bullEyeCornerPoints[2]->getY(); dy += dy > 0 ? 1 : -1; int targetcx = MathUtils::round(bullEyeCornerPoints[2]->getX() - ratio * dx); int targetcy = MathUtils::round(bullEyeCornerPoints[2]->getY() - ratio * dy); int targetax = MathUtils::round(bullEyeCornerPoints[0]->getX() + ratio * dx); int targetay = MathUtils::round(bullEyeCornerPoints[0]->getY() + ratio * dy); dx = bullEyeCornerPoints[1]->getX() - bullEyeCornerPoints[3]->getX(); dx += dx > 0 ? 1 : -1; dy = bullEyeCornerPoints[1]->getY() - bullEyeCornerPoints[3]->getY(); dy += dy > 0 ? 1 : -1; int targetdx = MathUtils::round(bullEyeCornerPoints[3]->getX() - ratio * dx); int targetdy = MathUtils::round(bullEyeCornerPoints[3]->getY() - ratio * dy); int targetbx = MathUtils::round(bullEyeCornerPoints[1]->getX() + ratio * dx); int targetby = MathUtils::round(bullEyeCornerPoints[1]->getY() + ratio * dy); if (!isValid(targetax, targetay) || !isValid(targetbx, targetby) || !isValid(targetcx, targetcy) || !isValid(targetdx, targetdy)) { throw ReaderException("matrix extends over image bounds"); } Array< Ref >* array = new Array< Ref >(); vector< Ref >& returnValue (array->values()); returnValue.push_back(Ref(new ResultPoint(float(targetax), float(targetay)))); returnValue.push_back(Ref(new ResultPoint(float(targetbx), float(targetby)))); returnValue.push_back(Ref(new ResultPoint(float(targetcx), float(targetcy)))); returnValue.push_back(Ref(new ResultPoint(float(targetdx), float(targetdy)))); return ArrayRef< Ref >(array); } void Detector::correctParameterData(Ref parameterData, bool compact) { int numCodewords; int numDataCodewords; if (compact) { numCodewords = 7; numDataCodewords = 2; } else { numCodewords = 10; numDataCodewords = 4; } int numECCodewords = numCodewords - numDataCodewords; ArrayRef parameterWords(new Array(numCodewords)); int codewordSize = 4; for (int i = 0; i < numCodewords; i++) { int flag = 1; for (int j = 1; j <= codewordSize; j++) { if (parameterData->get(codewordSize*i + codewordSize - j)) { parameterWords[i] += flag; } flag <<= 1; } } try { // std::printf("parameter data reed solomon\n"); ReedSolomonDecoder rsDecoder(GenericGF::AZTEC_PARAM); rsDecoder.decode(parameterWords, numECCodewords); } catch (ReedSolomonException const& ignored) { (void)ignored; // std::printf("reed solomon decoding failed\n"); throw ReaderException("failed to decode parameter data"); } parameterData->clear(); for (int i = 0; i < numDataCodewords; i++) { int flag = 1; for (int j = 1; j <= codewordSize; j++) { if ((parameterWords[i] & flag) == flag) { parameterData->set(i*codewordSize+codewordSize-j); } flag <<= 1; } } } std::vector > Detector::getBullEyeCornerPoints(Ref pCenter) { Ref pina = pCenter; Ref pinb = pCenter; Ref pinc = pCenter; Ref pind = pCenter; bool color = true; for (nbCenterLayers_ = 1; nbCenterLayers_ < 9; nbCenterLayers_++) { Ref pouta = getFirstDifferent(pina, color, 1, -1); Ref poutb = getFirstDifferent(pinb, color, 1, 1); Ref poutc = getFirstDifferent(pinc, color, -1, 1); Ref poutd = getFirstDifferent(pind, color, -1, -1); //d a // //c b if (nbCenterLayers_ > 2) { float q = distance(poutd, pouta) * nbCenterLayers_ / (distance(pind, pina) * (nbCenterLayers_ + 2)); if (q < 0.75 || q > 1.25 || !isWhiteOrBlackRectangle(pouta, poutb, poutc, poutd)) { break; } } pina = pouta; pinb = poutb; pinc = poutc; pind = poutd; color = !color; } if (nbCenterLayers_ != 5 && nbCenterLayers_ != 7) { throw ReaderException("encountered wrong bullseye ring count"); } compact_ = nbCenterLayers_ == 5; float ratio = 0.75f*2 / (2*nbCenterLayers_-3); int dx = pina->getX() - pind->getX(); int dy = pina->getY() - pinc->getY(); int targetcx = MathUtils::round(pinc->getX() - ratio * dx); int targetcy = MathUtils::round(pinc->getY() - ratio * dy); int targetax = MathUtils::round(pina->getX() + ratio * dx); int targetay = MathUtils::round(pina->getY() + ratio * dy); dx = pinb->getX() - pind->getX(); dy = pinb->getY() - pind->getY(); int targetdx = MathUtils::round(pind->getX() - ratio * dx); int targetdy = MathUtils::round(pind->getY() - ratio * dy); int targetbx = MathUtils::round(pinb->getX() + ratio * dx); int targetby = MathUtils::round(pinb->getY() + ratio * dy); if (!isValid(targetax, targetay) || !isValid(targetbx, targetby) || !isValid(targetcx, targetcy) || !isValid(targetdx, targetdy)) { throw ReaderException("bullseye extends over image bounds"); } std::vector > returnValue; returnValue.push_back(Ref(new Point(targetax, targetay))); returnValue.push_back(Ref(new Point(targetbx, targetby))); returnValue.push_back(Ref(new Point(targetcx, targetcy))); returnValue.push_back(Ref(new Point(targetdx, targetdy))); return returnValue; } Ref Detector::getMatrixCenter() { Ref pointA, pointB, pointC, pointD; try { std::vector > cornerPoints = WhiteRectangleDetector(image_).detect(); pointA = cornerPoints[0]; pointB = cornerPoints[1]; pointC = cornerPoints[2]; pointD = cornerPoints[3]; } catch (NotFoundException const& e) { (void)e; int cx = image_->getWidth() / 2; int cy = image_->getHeight() / 2; pointA = getFirstDifferent(Ref(new Point(cx+7, cy-7)), false, 1, -1)->toResultPoint(); pointB = getFirstDifferent(Ref(new Point(cx+7, cy+7)), false, 1, 1)->toResultPoint(); pointC = getFirstDifferent(Ref(new Point(cx-7, cy+7)), false, -1, -1)->toResultPoint(); pointD = getFirstDifferent(Ref(new Point(cx-7, cy-7)), false, -1, -1)->toResultPoint(); } int cx = MathUtils::round((pointA->getX() + pointD->getX() + pointB->getX() + pointC->getX()) / 4.0f); int cy = MathUtils::round((pointA->getY() + pointD->getY() + pointB->getY() + pointC->getY()) / 4.0f); try { std::vector > cornerPoints = WhiteRectangleDetector(image_, 15, cx, cy).detect(); pointA = cornerPoints[0]; pointB = cornerPoints[1]; pointC = cornerPoints[2]; pointD = cornerPoints[3]; } catch (NotFoundException const& e) { (void)e; pointA = getFirstDifferent(Ref(new Point(cx+7, cy-7)), false, 1, -1)->toResultPoint(); pointB = getFirstDifferent(Ref(new Point(cx+7, cy+7)), false, 1, 1)->toResultPoint(); pointC = getFirstDifferent(Ref(new Point(cx-7, cy+7)), false, -1, 1)->toResultPoint(); pointD = getFirstDifferent(Ref(new Point(cx-7, cy-7)), false, -1, -1)->toResultPoint(); } cx = MathUtils::round((pointA->getX() + pointD->getX() + pointB->getX() + pointC->getX()) / 4.0f); cy = MathUtils::round((pointA->getY() + pointD->getY() + pointB->getY() + pointC->getY()) / 4.0f); return Ref(new Point(cx, cy)); } Ref Detector::sampleGrid(Ref image, Ref topLeft, Ref bottomLeft, Ref bottomRight, Ref topRight) { int dimension; if (compact_) { dimension = 4 * nbLayers_+11; } else { if (nbLayers_ <= 4) { dimension = 4 * nbLayers_ + 15; } else { dimension = 4 * nbLayers_ + 2 * ((nbLayers_-4)/8 + 1) + 15; } } GridSampler sampler = GridSampler::getInstance(); return sampler.sampleGrid(image, dimension, 0.5f, 0.5f, dimension - 0.5f, 0.5f, dimension - 0.5f, dimension - 0.5f, 0.5f, dimension - 0.5f, topLeft->getX(), topLeft->getY(), topRight->getX(), topRight->getY(), bottomRight->getX(), bottomRight->getY(), bottomLeft->getX(), bottomLeft->getY()); } void Detector::getParameters(Ref parameterData) { nbLayers_ = 0; nbDataBlocks_ = 0; int nbBitsForNbLayers; int nbBitsForNbDatablocks; if (compact_) { nbBitsForNbLayers = 2; nbBitsForNbDatablocks = 6; } else { nbBitsForNbLayers = 5; nbBitsForNbDatablocks = 11; } for (int i = 0; i < nbBitsForNbLayers; i++) { nbLayers_ <<= 1; if (parameterData->get(i)) { nbLayers_++; } } for (int i = nbBitsForNbLayers; i < nbBitsForNbLayers + nbBitsForNbDatablocks; i++) { nbDataBlocks_ <<= 1; if (parameterData->get(i)) { nbDataBlocks_++; } } nbLayers_++; nbDataBlocks_++; } Ref Detector::sampleLine(Ref p1, Ref p2, int size) { Ref res(new BitArray(size)); float d = distance(p1, p2); float moduleSize = d / (size-1); float dx = moduleSize * float(p2->getX() - p1->getX())/d; float dy = moduleSize * float(p2->getY() - p1->getY())/d; float px = float(p1->getX()); float py = float(p1->getY()); for (int i = 0; i < size; i++) { if (image_->get(MathUtils::round(px), MathUtils::round(py))) res->set(i); px+=dx; py+=dy; } return res; } bool Detector::isWhiteOrBlackRectangle(Ref p1, Ref p2, Ref p3, Ref p4) { int corr = 3; p1 = new Point(p1->getX() - corr, p1->getY() + corr); p2 = new Point(p2->getX() - corr, p2->getY() - corr); p3 = new Point(p3->getX() + corr, p3->getY() - corr); p4 = new Point(p4->getX() + corr, p4->getY() + corr); int cInit = getColor(p4, p1); if (cInit == 0) { return false; } int c = getColor(p1, p2); if (c != cInit) { return false; } c = getColor(p2, p3); if (c != cInit) { return false; } c = getColor(p3, p4); if (c != cInit) { return false; } return true; } int Detector::getColor(Ref p1, Ref p2) { float d = distance(p1, p2); float dx = (p2->getX() - p1->getX()) / d; float dy = (p2->getY() - p1->getY()) / d; int error = 0; float px = float(p1->getX()); float py = float(p1->getY()); bool colorModel = image_->get(p1->getX(), p1->getY()); for (int i = 0; i < d; i++) { px += dx; py += dy; if (image_->get(MathUtils::round(px), MathUtils::round(py)) != colorModel) { error ++; } } float errRatio = (float)error/d; if (errRatio > 0.1f && errRatio < 0.9f) { return 0; } return (errRatio <= 0.1) == colorModel ? 1 : -1; } Ref Detector::getFirstDifferent(Ref init, bool color, int dx, int dy) { int x = init->getX() + dx; int y = init->getY() + dy; while (isValid(x, y) && image_->get(x, y) == color) { x += dx; y += dy; } x -= dx; y -= dy; while (isValid(x, y) && image_->get(x, y) == color) { x += dx; } x -= dx; while (isValid(x, y) && image_->get(x, y) == color) { y += dy; } y -= dy; return Ref(new Point(x, y)); } bool Detector::isValid(int x, int y) { return x >= 0 && x < (int)image_->getWidth() && y > 0 && y < (int)image_->getHeight(); } float Detector::distance(Ref a, Ref b) { return sqrtf((float)((a->getX() - b->getX()) * (a->getX() - b->getX()) + (a->getY() - b->getY()) * (a->getY() - b->getY()))); } yubioath-desktop/QZXing/zxing/zxing/aztec/detector/Detector.h000066400000000000000000000055221412677075700247140ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- /* * Detector.h * zxing * * Created by Lukas Stabe on 08/02/2012. * Copyright 2012 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef ZXING_AZTEC_DETECTOR_DETECTOR_H #define ZXING_AZTEC_DETECTOR_DETECTOR_H #include #include #include #include #include #include namespace zxing { namespace aztec { class Point : public Counted { private: const int x; const int y; public: Ref toResultPoint() { return Ref(new ResultPoint(float(x), float(y))); } Point(int ax, int ay) : x(ax), y(ay) {} int getX() const { return x; } int getY() const { return y; } }; class Detector : public Counted { private: Ref image_; bool compact_; int nbLayers_; int nbDataBlocks_; int nbCenterLayers_; int shift_; void extractParameters(std::vector > bullEyeCornerPoints); ArrayRef< Ref > getMatrixCornerPoints(std::vector > bullEyeCornerPoints); static void correctParameterData(Ref parameterData, bool compact); std::vector > getBullEyeCornerPoints(Ref pCenter); Ref getMatrixCenter(); Ref sampleGrid(Ref image, Ref topLeft, Ref bottomLeft, Ref bottomRight, Ref topRight); void getParameters(Ref parameterData); Ref sampleLine(Ref p1, Ref p2, int size); bool isWhiteOrBlackRectangle(Ref p1, Ref p2, Ref p3, Ref p4); int getColor(Ref p1, Ref p2); Ref getFirstDifferent(Ref init, bool color, int dx, int dy); bool isValid(int x, int y); static float distance(Ref a, Ref b); public: Detector(Ref image); Ref detect(); }; } } #endif // ZXING_AZTEC_DETECTOR_DETECTOR_H yubioath-desktop/QZXing/zxing/zxing/common/000077500000000000000000000000001412677075700213375ustar00rootroot00000000000000yubioath-desktop/QZXing/zxing/zxing/common/Array.h000066400000000000000000000066521412677075700225770ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- #ifndef ZXING_ARRAY_H #define ZXING_ARRAY_H /* * Array.h * zxing * * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include namespace zxing { template class Array : public Counted { protected: public: std::vector values_; Array() {} Array(int n) : Counted(), values_(n, T()) { } Array(T const* ts, int n) : Counted(), values_(ts, ts+n) { } Array(T const* ts, T const* te) : Counted(), values_(ts, te) { } Array(T v, int n) : Counted(), values_(n, v) { } Array(std::vector &v) : Counted(), values_(v) { } Array(Array &other) : Counted(), values_(other.values_) { } Array(Array *other) : Counted(), values_(other->values_) { } virtual ~Array() { } Array& operator=(const Array &other) { values_ = other.values_; return *this; } Array& operator=(const std::vector &array) { values_ = array; return *this; } T const& operator[](int i) const { return values_[i]; } T& operator[](int i) { return values_[i]; } int size() const { return int(values_.size()); } bool empty() const { return values_.size() == 0; } std::vector const& values() const { return values_; } std::vector& values() { return values_; } void push_back(T value) { values_.push_back(value); } }; template class ArrayRef : public Counted { private: public: Array *array_; ArrayRef() : array_(0) { } explicit ArrayRef(int n) : array_(0) { reset(new Array (n)); } ArrayRef(T *ts, int n) : array_(0) { reset(new Array (ts, n)); } ArrayRef(Array *a) : array_(0) { reset(a); } ArrayRef(const ArrayRef &other) : Counted(), array_(0) { reset(other.array_); } template ArrayRef(const ArrayRef &other) : array_(0) { reset(static_cast *>(other.array_)); } ~ArrayRef() { if (array_) { array_->release(); } array_ = 0; } T const& operator[](int i) const { return (*array_)[i]; } T& operator[](int i) { return (*array_)[i]; } void reset(Array *a) { if (a) { a->retain(); } if (array_) { array_->release(); } array_ = a; } void reset(const ArrayRef &other) { reset(other.array_); } ArrayRef& operator=(const ArrayRef &other) { reset(other); return *this; } ArrayRef& operator=(Array *a) { reset(a); return *this; } Array& operator*() const { return *array_; } Array* operator->() const { return array_; } operator bool () const { return array_ != 0; } bool operator ! () const { return array_ == 0; } }; } // namespace zxing #endif // ZXING_ARRAY_H yubioath-desktop/QZXing/zxing/zxing/common/BitArray.cpp000066400000000000000000000174741412677075700235750ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- /* * Copyright 2010 ZXing authors. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include #include using std::vector; using zxing::BitArray; // VC++ using zxing::Ref; namespace zxing { int BitArray::makeArraySize(int size) { return (size + 31) / 32; } BitArray::BitArray(): size(0), bits(1) {} BitArray::BitArray(int size_) : size(size_), bits(makeArraySize(size)) {} //this could be wrong. TODO: check size value BitArray::BitArray(std::vector other) : size(int(other.size())), bits(int(other.size())) { for(size_t i=0; isize(); for (int i = 0; i < max; i++) { bits[i] = 0; } } bool BitArray::isRange(int start, int end, bool value) { if (end < start) { throw IllegalArgumentException(); } if (end == start) { return true; // empty range matches } end--; // will be easier to treat this as the last actually set bit -- inclusive int firstInt = start / 32; int lastInt = end / 32; for (int i = firstInt; i <= lastInt; i++) { int firstBit = i > firstInt ? 0 : start & 0x1F; int lastBit = i < lastInt ? 31 : end & 0x1F; int mask = (2 << lastBit) - (1 << firstBit); // int mask; // if (firstBit == 0 && lastBit == 31) { // mask = -1; // } else { // mask = 0; // for (int j = firstBit; j <= lastBit; j++) { // mask |= 1 << j; // } // } // Return false if we're looking for 1s and the masked bits[i] isn't all 1s (that is, // equals the mask, or we're looking for 0s and the masked portion is not all 0s if ((bits[i] & mask) != (value ? mask : 0)) { return false; } } return true; } vector& BitArray::getBitArray() { return bits->values(); } void BitArray::reverse() { ArrayRef newBits(bits->size()); // reverse all int's first int len = ((this->size-1) / 32); int oldBitsLen = len + 1; for (int i = 0; i < oldBitsLen; i++) { long x = long(bits[i]); x = ((x >> 1) & 0x55555555L) | ((x & 0x55555555L) << 1); x = ((x >> 2) & 0x33333333L) | ((x & 0x33333333L) << 2); x = ((x >> 4) & 0x0f0f0f0fL) | ((x & 0x0f0f0f0fL) << 4); x = ((x >> 8) & 0x00ff00ffL) | ((x & 0x00ff00ffL) << 8); x = ((x >> 16) & 0x0000ffffL) | ((x & 0x0000ffffL) << 16); newBits[len - i] = int(x); } // now correct the int's if the bit size isn't a multiple of 32 if (size != oldBitsLen * 32) { int leftOffset = oldBitsLen * 32 - size; int mask = 1; for (int i = 0; i < 31 - leftOffset; i++) { mask = (mask << 1) | 1; } int currentInt = (newBits[0] >> leftOffset) & mask; for (int i = 1; i < oldBitsLen; i++) { int nextInt = newBits[i]; currentInt |= nextInt << (32 - leftOffset); newBits[i - 1] = currentInt; currentInt = (nextInt >> leftOffset) & mask; } newBits[oldBitsLen - 1] = currentInt; } bits = newBits; } BitArray::Reverse::Reverse(Ref array_) : array(array_) { array->reverse(); } BitArray::Reverse::~Reverse() { array->reverse(); } namespace { // N.B.: This only works for 32 bit ints ... int numberOfTrailingZeros(int i) { // HD, Figure 5-14 #if defined(__clang__) || defined(__GNUC__) return __builtin_ctz(unsigned(i)); #else int y; if (i == 0) return 32; int n = 31; y = i <<16; if (y != 0) { n = n -16; i = y; } y = i << 8; if (y != 0) { n = n - 8; i = y; } y = i << 4; if (y != 0) { n = n - 4; i = y; } y = i << 2; if (y != 0) { n = n - 2; i = y; } return n - (((unsigned int)(i << 1)) >> 31); #endif } } int BitArray::getNextSet(int from) { if (from >= size) { return size; } int bitsOffset = from >> logBits; int currentBits = bits[bitsOffset]; // mask off lesser bits first currentBits &= ~((1 << (from & bitsMask)) - 1); while (currentBits == 0) { if (++bitsOffset == bits->size()) { return size; } currentBits = bits[bitsOffset]; } int result = (bitsOffset << logBits) + numberOfTrailingZeros(currentBits); return result > size ? size : result; } int BitArray::getNextUnset(int from) { if (from >= size) { return size; } int bitsOffset = from >> logBits; int currentBits = ~bits[bitsOffset]; // mask off lesser bits first currentBits &= ~((1 << (from & bitsMask)) - 1); while (currentBits == 0) { if (++bitsOffset == bits->size()) { return size; } currentBits = ~bits[bitsOffset]; } int result = (bitsOffset << logBits) + numberOfTrailingZeros(currentBits); return result > size ? size : result; } void BitArray::appendBit(bool bit) { ensureCapacity(size + 1); if (bit) { bits[size / 32] |= 1 << (size & 0x1F); } size++; } void BitArray::appendBits(int value, int numBits) { if (numBits < 0 || numBits > 32) { throw IllegalArgumentException("Num bits must be between 0 and 32"); } ensureCapacity(size + numBits); for (int numBitsLeft = numBits; numBitsLeft > 0; numBitsLeft--) { appendBit(((value >> (numBitsLeft - 1)) & 0x01) == 1); } } void BitArray::appendBitArray(const BitArray& other) { int otherSize = other.size; ensureCapacity(size + otherSize); for (int i = 0; i < otherSize; i++) { appendBit(other.get(i)); } } void BitArray::ensureCapacity(int size) { if (size > bits->size() * 32) { ArrayRef newBits = makeArray(size); //memcpy(bits, newBits->, bits->size()); for (int i=0; isize(); ++i) { newBits[i] = bits[i]; } bits = newBits; } } void BitArray::xor_(const BitArray& other) { if (bits->size() != other.bits->size()) { throw IllegalArgumentException("Sizes don't match"); } for (int i = 0; i < bits->size(); i++) { // The last byte could be incomplete (i.e. not have 8 bits in // it) but there is no problem since 0 XOR 0 == 0. bits[i] ^= other.bits[i]; } } void BitArray::toBytes(int bitOffset, std::vector& array, int offset, int numBytes) const { if(int(array.size()) < (numBytes + offset)) array.resize(size_t(numBytes + offset)); for (int i = 0; i < numBytes; i++) { int theByte = 0; for (int j = 0; j < 8; j++) { if (get(bitOffset)) { theByte |= 1 << (7 - j); } bitOffset++; } array[size_t(offset + i)] = zxing::byte(theByte); } } std::string BitArray::toString() const { std::stringstream result;// = new StringBuilder(2 * width * height + 2); for (int i = 0; i < size; i++) { if ((i & 0x07) == 0) { result << ' '; } result << (get(i) ? 'X' : '.'); } return result.str(); } } yubioath-desktop/QZXing/zxing/zxing/common/BitArray.h000066400000000000000000000051051412677075700232260ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- #ifndef ZXING_BIT_ARRAY_H #define ZXING_BIT_ARRAY_H /* * Copyright 2010 ZXing authors. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include #include #include #include #include namespace zxing { class BitArray : public Counted { public: static const int bitsPerWord = std::numeric_limits::digits; private: int size; ArrayRef bits; static const int logBits = ZX_LOG_DIGITS(bitsPerWord); static const int bitsMask = (1 << logBits) - 1; public: BitArray(); BitArray(int size); BitArray(std::vector other); ~BitArray(); int getSize() const; int getSizeInBytes() const; bool get(int i) const { return (bits[i / 32] & (1 << (i & 0x1F))) != 0; } void set(int i) { bits[i / 32] |= 1 << (i & 0x1F); } void flip(int i) { bits[i / 32] ^= 1 << (i & 0x1F); } int getNextSet(int from); int getNextUnset(int from); void setBulk(int i, int newBits); void setRange(int start, int end); void clear(); bool isRange(int start, int end, bool value); std::vector& getBitArray(); void appendBit(bool bit); void appendBits(int value, int numBits); void appendBitArray(const BitArray& other); void ensureCapacity(int size); void xor_(const BitArray& other); void toBytes(int bitOffset, std::vector& array, int offset, int numBytes) const; std::string toString() const; static ArrayRef makeArray(int size) { return ArrayRef((size + 31) / 32); } void reverse(); class Reverse { private: Ref array; public: Reverse(Ref array); ~Reverse(); }; private: static int makeArraySize(int size); }; std::ostream& operator << (std::ostream&, BitArray const&); } #endif // ZXING_BIT_ARRAY_H yubioath-desktop/QZXing/zxing/zxing/common/BitArrayIO.cpp000066400000000000000000000017471412677075700240210ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- /* * Copyright 2010 ZXing authors. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include using zxing::BitArray; using std::ostream; ostream& zxing::operator << (ostream& os, BitArray const& ba) { for (int i = 0, size = ba.getSize(); i < size; i++) { if ((i & 0x07) == 0) { os << ' '; } os << (ba.get(i) ? 'X' : '.'); } return os; } yubioath-desktop/QZXing/zxing/zxing/common/BitMatrix.cpp000066400000000000000000000134531412677075700237540ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- /* * Copyright 2010 ZXing authors. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include #include #include using std::ostream; using std::ostringstream; using zxing::BitMatrix; using zxing::BitArray; using zxing::ArrayRef; using zxing::Ref; void BitMatrix::init(int width, int height) { if (width < 1 || height < 1) { throw IllegalArgumentException("Both dimensions must be greater than 0"); } this->width = width; this->height = height; this->rowSize = (width + 31) >> 5; bits = ArrayRef(rowSize * height); } BitMatrix::BitMatrix(int dimension) { init(dimension, dimension); } BitMatrix::BitMatrix(int width, int height) { init(width, height); } BitMatrix::~BitMatrix() {} void BitMatrix::flip(int x, int y) { int offset = y * rowSize + (x >> 5); bits[offset] ^= 1 << (x & 0x1f); } void BitMatrix::rotate180() { int width = getWidth(); int height = getHeight(); Ref topRow( new BitArray(width) ); Ref bottomRow( new BitArray(width) ); for (int i = 0; i < (height+1) / 2; i++) { getRow(i, topRow); bottomRow = getRow(height - 1 - i, bottomRow); topRow->reverse(); bottomRow->reverse(); setRow(i, bottomRow); setRow(height - 1 - i, topRow); } } void BitMatrix::setRegion(int left, int top, int width, int height) { if (top < 0 || left < 0) { throw IllegalArgumentException("Left and top must be nonnegative"); } if (height < 1 || width < 1) { throw IllegalArgumentException("Height and width must be at least 1"); } int right = left + width; int bottom = top + height; if (bottom > this->height || right > this->width) { throw IllegalArgumentException("The region must fit inside the matrix"); } for (int y = top; y < bottom; y++) { int offset = y * rowSize; for (int x = left; x < right; x++) { bits[offset + (x >> 5)] |= 1 << (x & 0x1f); } } } Ref BitMatrix::getRow(int y, Ref row) { if (row.empty() || row->getSize() < width) { row = new BitArray(width); } int offset = y * rowSize; for (int x = 0; x < rowSize; x++) { row->setBulk(x << 5, bits[offset + x]); } return row; } void BitMatrix::setRow(int y, Ref row) { if (y < 0 || y >= bits->size() || row->getSize() != width) { throw IllegalArgumentException("setRow arguments invalid"); } //change with memcopy for(int i=0; iget(i); } int BitMatrix::getWidth() const { return width; } int BitMatrix::getHeight() const { return height; } ArrayRef BitMatrix::getTopLeftOnBit() const { int bitsOffset = 0; while (bitsOffset < bits->size() && bits[bitsOffset] == 0) { bitsOffset++; } if (bitsOffset == bits->size()) { return ArrayRef(); } int y = bitsOffset / rowSize; int x = (bitsOffset % rowSize) << 5; int theBits = bits[bitsOffset]; int bit = 0; while ((theBits << (31-bit)) == 0) { bit++; } x += bit; ArrayRef res (2); res[0]=x; res[1]=y; return res; } ArrayRef BitMatrix::getBottomRightOnBit() const { int bitsOffset = bits->size() - 1; while (bitsOffset >= 0 && bits[bitsOffset] == 0) { bitsOffset--; } if (bitsOffset < 0) { return ArrayRef(); } int y = bitsOffset / rowSize; int x = (bitsOffset % rowSize) << 5; int theBits = bits[bitsOffset]; int bit = 31; while ((theBits >> bit) == 0) { bit--; } x += bit; ArrayRef res (2); res[0]=x; res[1]=y; return res; } ArrayRef BitMatrix::getEnclosingRectangle() const { int left = width; int top = height; int right = -1; int bottom = -1; for (int y = 0; y < height; y++) { for (int x32 = 0; x32 < rowSize; x32++) { int theBits = bits[y * rowSize + x32]; if (theBits != 0) { if (y < top) { top = y; } if (y > bottom) { bottom = y; } if (x32 * 32 < left) { int bit = 0; while ((theBits << (31 - bit)) == 0) { bit++; } if ((x32 * 32 + bit) < left) { left = x32 * 32 + bit; } } if (x32 * 32 + 31 > right) { int bit = 31; while ((unsigned(theBits) >> unsigned(bit)) == 0) { bit--; } if ((x32 * 32 + bit) > right) { right = x32 * 32 + bit; } } } } } int width = right - left; int height = bottom - top; if (width < 0 || height < 0) { return ArrayRef(); } ArrayRef res(4); res[0] = left; res[1] = top; res[2] = width; res[3] = height; return res; } yubioath-desktop/QZXing/zxing/zxing/common/BitMatrix.h000066400000000000000000000040751412677075700234210ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- #ifndef ZXING_BIT_MATRIX_H #define ZXING_BIT_MATRIX_H /* * BitMatrix.h * zxing * * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include #include namespace zxing { class BitMatrix : public Counted { public: static const int bitsPerWord = std::numeric_limits::digits; private: int width; int height; int rowSize; ArrayRef bits; public: BitMatrix(int dimension); BitMatrix(int width, int height); ~BitMatrix(); bool get(int x, int y) const { int offset = y * rowSize + (x >> 5); return ((((unsigned)bits[offset]) >> (x & 0x1f)) & 1) != 0; } void set(int x, int y) { int offset = y * rowSize + (x >> 5); bits[offset] |= 1 << (x & 0x1f); } void flip(int x, int y); void rotate180(); void clear(); void setRegion(int left, int top, int width, int height); Ref getRow(int y, Ref row); void setRow(int y, Ref row); int getWidth() const; int getHeight() const; ArrayRef getTopLeftOnBit() const; ArrayRef getBottomRightOnBit() const; ArrayRef getEnclosingRectangle() const; friend std::ostream& operator<<(std::ostream &out, const BitMatrix &bm); const char *description(); private: inline void init(int, int); BitMatrix(const BitMatrix&); BitMatrix& operator =(const BitMatrix&); }; } #endif // ZXING_BIT_MATRIX_H yubioath-desktop/QZXing/zxing/zxing/common/BitSource.cpp000066400000000000000000000041531412677075700237450ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- /* * BitSource.cpp * zxing * * Created by Christian Brunschen on 09/05/2008. * Copyright 2008 Google UK. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include namespace zxing { int BitSource::readBits(int numBits) { if (numBits < 0 || numBits > 32 || numBits > available()) { std::ostringstream oss; oss << numBits; throw IllegalArgumentException(oss.str().c_str()); } int result = 0; // First, read remainder from current byte if (bitOffset_ > 0) { int bitsLeft = 8 - bitOffset_; int toRead = numBits < bitsLeft ? numBits : bitsLeft; int bitsToNotRead = bitsLeft - toRead; int mask = (0xFF >> (8 - toRead)) << bitsToNotRead; result = (bytes_[byteOffset_] & mask) >> bitsToNotRead; numBits -= toRead; bitOffset_ += toRead; if (bitOffset_ == 8) { bitOffset_ = 0; byteOffset_++; } } // Next read whole bytes if (numBits > 0) { while (numBits >= 8) { result = (result << 8) | (bytes_[byteOffset_] & 0xFF); byteOffset_++; numBits -= 8; } // Finally read a partial byte if (numBits > 0) { int bitsToNotRead = 8 - numBits; int mask = (0xFF >> bitsToNotRead) << bitsToNotRead; result = (result << numBits) | ((bytes_[byteOffset_] & mask) >> bitsToNotRead); bitOffset_ += numBits; } } return result; } int BitSource::available() { return 8 * (bytes_->size() - byteOffset_) - bitOffset_; } } yubioath-desktop/QZXing/zxing/zxing/common/BitSource.h000066400000000000000000000037431412677075700234160ustar00rootroot00000000000000#ifndef ZXING_BIT_SOURCE_H #define ZXING_BIT_SOURCE_H /* * BitSource.h * zxing * * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include namespace zxing { /** *

This provides an easy abstraction to read bits at a time from a sequence of bytes, where the * number of bits read is not often a multiple of 8.

* *

This class is not thread-safe.

* * @author srowen@google.com (Sean Owen) * @author christian.brunschen@gmail.com (Christian Brunschen) */ class BitSource : public Counted { private: ArrayRef bytes_; int byteOffset_; int bitOffset_; public: /** * @param bytes bytes from which this will read bits. Bits will be read from the first byte first. * Bits are read within a byte from most-significant to least-significant bit. */ BitSource(ArrayRef &bytes) : bytes_(bytes), byteOffset_(0), bitOffset_(0) { } int getBitOffset() { return bitOffset_; } int getByteOffset() { return byteOffset_; } /** * @param numBits number of bits to read * @return int representing the bits read. The bits will appear as the least-significant * bits of the int * @throws IllegalArgumentException if numBits isn't in [1,32] */ int readBits(int numBits); /** * @return number of bits that can be read successfully */ int available(); }; } #endif // ZXING_BIT_SOURCE_H yubioath-desktop/QZXing/zxing/zxing/common/ByteArray.h000066400000000000000000000023371412677075700234170ustar00rootroot00000000000000#ifndef ZXING_BYTE_ARRAY_H #define ZXING_BYTE_ARRAY_H /* * Copyright 2008 ZXing authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * 2019-05-08 translation from Java into C++ */ #include #include #include "Types.h" namespace zxing { /** * ByteArray is an extension of std::vector. */ class ByteArray : public std::vector { public: ByteArray() {} ByteArray(std::initializer_list list) : std::vector(list) {} explicit ByteArray(int len) : std::vector(len, 0) {} int length() const { return static_cast(size()); } const zxing::byte* bytePtr() const { return data(); } zxing::byte* bytePtr() { return data(); } }; } #endif yubioath-desktop/QZXing/zxing/zxing/common/CharacterSetECI.cpp000066400000000000000000000104271412677075700247400ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- /* * Copyright 2008-2011 ZXing authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include using std::string; namespace zxing { namespace common { std::map CharacterSetECI::VALUE_TO_ECI; std::map CharacterSetECI::NAME_TO_ECI; std::vector CharacterSetECI::ECItables; bool CharacterSetECI::inited = CharacterSetECI::init_tables(); #define COMMA , #define ADD_CHARACTER_SET(VALUES, STRINGS) \ { int values[] = {VALUES}; \ const char *strings[] = {STRINGS}; \ addCharacterSet(std::vector(values, values + sizeof(values) / sizeof(values[0])), \ std::vector(strings, strings + sizeof(strings) / sizeof(strings[0]))); } bool CharacterSetECI::init_tables() { ADD_CHARACTER_SET(1 COMMA 3, "ISO8859_1" COMMA "ISO-8859-1") ADD_CHARACTER_SET(0 COMMA 2, "Cp437"); ADD_CHARACTER_SET(4, "ISO8859_2" COMMA "ISO-8859-2"); ADD_CHARACTER_SET(5, "ISO8859_3" COMMA "ISO-8859-3"); ADD_CHARACTER_SET(6, "ISO8859_4" COMMA "ISO-8859-4"); ADD_CHARACTER_SET(7, "ISO8859_5" COMMA "ISO-8859-5"); ADD_CHARACTER_SET(8, "ISO8859_6" COMMA "ISO-8859-6"); ADD_CHARACTER_SET(9, "ISO8859_7" COMMA "ISO-8859-7"); ADD_CHARACTER_SET(10, "ISO8859_8" COMMA "ISO-8859-8"); ADD_CHARACTER_SET(11, "ISO8859_9" COMMA "ISO-8859-9"); ADD_CHARACTER_SET(12, "ISO8859_10" COMMA "ISO-8859-10"); ADD_CHARACTER_SET(13, "ISO8859_11" COMMA "ISO-8859-11"); ADD_CHARACTER_SET(15, "ISO8859_13" COMMA "ISO-8859-13"); ADD_CHARACTER_SET(16, "ISO8859_14" COMMA "ISO-8859-14"); ADD_CHARACTER_SET(17, "ISO8859_15" COMMA "ISO-8859-15"); ADD_CHARACTER_SET(18, "ISO8859_16" COMMA "ISO-8859-16"); ADD_CHARACTER_SET(20, "SJIS" COMMA "Shift_JIS"); ADD_CHARACTER_SET(21, "Cp1250" COMMA "windows-1250"); ADD_CHARACTER_SET(22, "Cp1251" COMMA "windows-1251"); ADD_CHARACTER_SET(23, "Cp1252" COMMA "windows-1252"); ADD_CHARACTER_SET(24, "Cp1256" COMMA "windows-1256"); ADD_CHARACTER_SET(25, "UnicodeBigUnmarked" COMMA "UTF-16BE" COMMA "UnicodeBig"); ADD_CHARACTER_SET(26, "UTF8" COMMA "UTF-8"); ADD_CHARACTER_SET(27 COMMA 170, "ASCII" COMMA "US-ASCII"); ADD_CHARACTER_SET(28, "Big5"); ADD_CHARACTER_SET(29, "GB18030" COMMA "GB2312" COMMA "EUC_CN" COMMA "GBK"); ADD_CHARACTER_SET(30, "EUC_KR" COMMA "EUC-KR"); std::atexit(removeAllCharacterSets); return true; } CharacterSetECI::CharacterSetECI(const std::vector values, const std::vector names) : Counted(), values_(values) { for(size_t i=0; i &values, const std::vector &names) { CharacterSetECI* charSet = new CharacterSetECI(values, names); for(size_t i=0; i= 900) { throw FormatException(); } return VALUE_TO_ECI[value]; } CharacterSetECI* CharacterSetECI::getCharacterSetECIByName(string const& name) { return NAME_TO_ECI[name]; } void CharacterSetECI::removeAllCharacterSets() { VALUE_TO_ECI.clear(); NAME_TO_ECI.clear(); for (std::vector::iterator i=ECItables.begin();i!=ECItables.end();i++) { delete *i; } ECItables.clear(); inited=false; } } } yubioath-desktop/QZXing/zxing/zxing/common/CharacterSetECI.h000066400000000000000000000032371412677075700244060ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- #ifndef ZXING_CHARACTERSET_ECI #define ZXING_CHARACTERSET_ECI /* * Copyright 2008-2011 ZXing authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include #include namespace zxing { namespace common { class CharacterSetECI : public Counted { private: static std::map VALUE_TO_ECI; static std::map NAME_TO_ECI; static std::vector ECItables; static bool inited; static bool init_tables(); std::vector values_; std::vector names_; CharacterSetECI(const std::vector values, const std::vector names); static void addCharacterSet(const std::vector &value, const std::vector &encodingNames); public: char const* name() const; int getValue() const; static CharacterSetECI* getCharacterSetECIByValue(int value); static CharacterSetECI* getCharacterSetECIByName(std::string const& name); static void removeAllCharacterSets(); }; } } #endif // ZXING_CHARACTERSET_ECI yubioath-desktop/QZXing/zxing/zxing/common/Counted.cpp000066400000000000000000000005311412677075700234430ustar00rootroot00000000000000#include "Counted.h" namespace zxing { Counted::Counted() : count_(0) { } Counted::~Counted() { } Counted *Counted::retain() { count_++; return this; } void Counted::release() { count_--; if (count_ == 0) { count_ = 0xDEADF001; delete this; } } size_t Counted::count() const { return count_; } } yubioath-desktop/QZXing/zxing/zxing/common/Counted.h000066400000000000000000000050131412677075700231100ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- #ifndef ZXING_COUNTED_H #define ZXING_COUNTED_H /* * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include namespace zxing { /* base class for reference-counted objects */ class Counted { private: size_t count_; public: Counted(); virtual ~Counted(); Counted *retain(); void release(); /* return the current count for denugging purposes or similar */ size_t count() const; }; /* counting reference to reference-counted objects */ template class Ref { private: public: T *object_; explicit Ref(T *o = 0) : object_(0) { reset(o); } Ref(const Ref &other) : object_(0) { reset(other.object_); } template Ref(const Ref &other) : object_(0) { reset(other.object_); } ~Ref() { if (object_) { object_->release(); } } void reset(T *o) { if (o) { o->retain(); } if (object_ != 0) { object_->release(); } object_ = o; } Ref& operator=(const Ref &other) { reset(other.object_); return *this; } template Ref& operator=(const Ref &other) { reset(other.object_); return *this; } Ref& operator=(T* o) { reset(o); return *this; } template Ref& operator=(Y* o) { reset(o); return *this; } T& operator*() { return *object_; } T* operator->() const { return object_; } operator T*() const { return object_; } bool operator==(const T* that) { return object_ == that; } bool operator==(const Ref &other) const { return object_ == other.object_ || *object_ == *(other.object_); } template bool operator==(const Ref &other) const { return object_ == other.object_ || *object_ == *(other.object_); } bool operator!=(const T* that) { return !(*this == that); } bool empty() const { return object_ == 0; } }; } #endif // ZXING_COUNTED_H yubioath-desktop/QZXing/zxing/zxing/common/DecoderResult.cpp000066400000000000000000000030711412677075700246100ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- /* * DecoderResult.cpp * zxing * * Created by Christian Brunschen on 20/05/2008. * Copyright 2008-2011 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include using namespace std; using namespace zxing; DecoderResult::DecoderResult(ArrayRef rawBytes, Ref text, ArrayRef< ArrayRef >& byteSegments, string const& ecLevel, string charSet) : rawBytes_(rawBytes), text_(text), byteSegments_(byteSegments), ecLevel_(ecLevel), charSet_(charSet) {} DecoderResult::DecoderResult(ArrayRef rawBytes, Ref text) : rawBytes_(rawBytes), text_(text),charSet_("") {} ArrayRef DecoderResult::getRawBytes() { return rawBytes_; } Ref DecoderResult::getText() { return text_; } string DecoderResult::charSet() { return charSet_; } yubioath-desktop/QZXing/zxing/zxing/common/DecoderResult.h000066400000000000000000000027671412677075700242700ustar00rootroot00000000000000#ifndef ZXING_DECODER_RESULT_H #define ZXING_DECODER_RESULT_H /* * DecoderResult.h * zxing * * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include #include #include namespace zxing { class DecoderResult : public Counted { private: ArrayRef rawBytes_; Ref text_; ArrayRef< ArrayRef > byteSegments_; std::string ecLevel_; std::string charSet_; public: DecoderResult(ArrayRef rawBytes, Ref text, ArrayRef< ArrayRef >& byteSegments, std::string const& ecLevel, std::string charSet = ""); DecoderResult(ArrayRef rawBytes, Ref text); ArrayRef getRawBytes(); Ref getText(); std::string charSet(); }; } #endif // ZXING_DECODER_RESULT_H yubioath-desktop/QZXing/zxing/zxing/common/DetectorResult.cpp000066400000000000000000000021671412677075700250210ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- /* * DetectorResult.cpp * zxing * * Created by Christian Brunschen on 14/05/2008. * Copyright 2008 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include namespace zxing { DetectorResult::DetectorResult(Ref bits, ArrayRef< Ref > points) : bits_(bits), points_(points) { } Ref DetectorResult::getBits() { return bits_; } ArrayRef< Ref > DetectorResult::getPoints() { return points_; } } yubioath-desktop/QZXing/zxing/zxing/common/DetectorResult.h000066400000000000000000000022401412677075700244560ustar00rootroot00000000000000#ifndef ZXING_DETECTOR_RESULT_H #define ZXING_DETECTOR_RESULT_H /* * DetectorResult.h * zxing * * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include #include namespace zxing { class DetectorResult : public Counted { private: Ref bits_; ArrayRef< Ref > points_; public: DetectorResult(Ref bits, ArrayRef< Ref > points); Ref getBits(); ArrayRef< Ref > getPoints(); }; } #endif // ZXING_DETECTOR_RESULT_H yubioath-desktop/QZXing/zxing/zxing/common/GlobalHistogramBinarizer.cpp000066400000000000000000000161571412677075700270010ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- /* * GlobalHistogramBinarizer.cpp * zxing * * Copyright 2010 ZXing authors. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include using zxing::Binarizer; using zxing::ArrayRef; using zxing::Ref; using zxing::BitArray; using zxing::BitMatrix; // VC++ using zxing::LuminanceSource; namespace zxing { const int LUMINANCE_BITS = 5; const int LUMINANCE_SHIFT = 8 - LUMINANCE_BITS; const int LUMINANCE_BUCKETS = 1 << LUMINANCE_BITS; const ArrayRef EMPTY (0); GlobalHistogramBinarizer::GlobalHistogramBinarizer(Ref source) : Binarizer(source), luminances(EMPTY), buckets(LUMINANCE_BUCKETS) {} GlobalHistogramBinarizer::~GlobalHistogramBinarizer() {} void GlobalHistogramBinarizer::initArrays(int luminanceSize) { if (luminances->size() < luminanceSize) { luminances = ArrayRef(luminanceSize); } // for (int x = 0; x < LUMINANCE_BUCKETS; x++) { // buckets[x] = 0; // } memset(&buckets[0], 0, sizeof(int) * LUMINANCE_BUCKETS); } Ref GlobalHistogramBinarizer::getBlackRow(int y, Ref row) { // std::cerr << "gbr " << y << std::endl; LuminanceSource& source = *getLuminanceSource(); int width = source.getWidth(); if (row == NULL || static_cast(row->getSize()) < width) { row = new BitArray(width); } else { row->clear(); } initArrays(width); ArrayRef localLuminances = source.getRow(y, luminances); if (false) { std::cerr << "gbr " << y << " r "; for(int i=0, e=localLuminances->size(); i < e; ++i) { std::cerr << 0+localLuminances[i] << " "; } std::cerr << std::endl; } ArrayRef localBuckets = buckets; for (int x = 0; x < width; x++) { int pixel = localLuminances[x] & 0xff; localBuckets[pixel >> LUMINANCE_SHIFT]++; } int blackPoint = estimateBlackPoint(localBuckets); // std::cerr << "gbr bp " << y << " " << blackPoint << std::endl; int left = localLuminances[0] & 0xff; int center = localLuminances[1] & 0xff; for (int x = 1; x < width - 1; x++) { int right = localLuminances[x + 1] & 0xff; // A simple -1 4 -1 box filter with a weight of 2. int luminance = ((center << 2) - left - right) >> 1; if (luminance < blackPoint) { row->set(x); } left = center; center = right; } return row; } Ref GlobalHistogramBinarizer::getBlackMatrix() { LuminanceSource& source = *getLuminanceSource(); int width = source.getWidth(); int height = source.getHeight(); Ref matrix(new BitMatrix(width, height)); // Quickly calculates the histogram by sampling four rows from the image. // This proved to be more robust on the blackbox tests than sampling a // diagonal as we used to do. initArrays(width); ArrayRef localBuckets = buckets; for (int y = 1; y < 5; y++) { int row = height * y / 5; ArrayRef localLuminances = source.getRow(row, luminances); int right = (width << 2) / 5; for (int x = width / 5; x < right; x++) { int pixel = localLuminances[x] & 0xff; localBuckets[pixel >> LUMINANCE_SHIFT]++; } } int blackPoint = estimateBlackPoint(localBuckets); ArrayRef localLuminances = source.getMatrix(); for (int y = 0; y < height; y++) { int offset = y * width; for (int x = 0; x < width; x++) { int pixel = localLuminances[offset + x] & 0xff; if (pixel < blackPoint) { matrix->set(x, y); } } } return matrix; } using namespace std; int GlobalHistogramBinarizer::estimateBlackPoint(ArrayRef const& buckets) { // Find tallest peak in histogram int numBuckets = buckets->size(); int maxBucketCount = 0; int firstPeak = 0; int firstPeakSize = 0; if (false) { for (int x = 0; x < numBuckets; x++) { cerr << buckets[x] << " "; } cerr << endl; } for (int x = 0; x < numBuckets; x++) { if (buckets[x] > firstPeakSize) { firstPeak = x; firstPeakSize = buckets[x]; } if (buckets[x] > maxBucketCount) { maxBucketCount = buckets[x]; } } // Find second-tallest peak -- well, another peak that is tall and not // so close to the first one int secondPeak = 0; int secondPeakScore = 0; for (int x = 0; x < numBuckets; x++) { int distanceToBiggest = x - firstPeak; // Encourage more distant second peaks by multiplying by square of distance int score = buckets[x] * distanceToBiggest * distanceToBiggest; if (score > secondPeakScore) { secondPeak = x; secondPeakScore = score; } } if (firstPeak > secondPeak) { int temp = firstPeak; firstPeak = secondPeak; secondPeak = temp; } // Kind of arbitrary; if the two peaks are very close, then we figure there is // so little dynamic range in the image, that discriminating black and white // is too error-prone. // Decoding the image/line is either pointless, or may in some cases lead to // a false positive for 1D formats, which are relatively lenient. // We arbitrarily say "close" is // "<= 1/16 of the total histogram buckets apart" // std::cerr << "! " << secondPeak << " " << firstPeak << " " << numBuckets << std::endl; if (secondPeak - firstPeak <= numBuckets >> 4) { throw NotFoundException(); } // Find a valley between them that is low and closer to the white peak int bestValley = secondPeak - 1; int bestValleyScore = -1; for (int x = secondPeak - 1; x > firstPeak; x--) { int fromFirst = x - firstPeak; // Favor a "valley" that is not too close to either peak -- especially not // the black peak -- and that has a low value of course int score = fromFirst * fromFirst * (secondPeak - x) * (maxBucketCount - buckets[x]); if (score > bestValleyScore) { bestValley = x; bestValleyScore = score; } } // std::cerr << "bps " << (bestValley << LUMINANCE_SHIFT) << std::endl; return bestValley << LUMINANCE_SHIFT; } Ref GlobalHistogramBinarizer::createBinarizer(Ref source) { return Ref (new GlobalHistogramBinarizer(source)); } } yubioath-desktop/QZXing/zxing/zxing/common/GlobalHistogramBinarizer.h000066400000000000000000000027771412677075700264510ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- #ifndef ZXING_GLOBALHISTOGRAMBINARIZER_H #define ZXING_GLOBALHISTOGRAMBINARIZER_H /* * GlobalHistogramBinarizer.h * zxing * * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include #include namespace zxing { class GlobalHistogramBinarizer : public Binarizer { private: ArrayRef luminances; ArrayRef buckets; public: GlobalHistogramBinarizer(Ref source); virtual ~GlobalHistogramBinarizer(); virtual Ref getBlackRow(int y, Ref row); virtual Ref getBlackMatrix(); static int estimateBlackPoint(ArrayRef const& buckets); Ref createBinarizer(Ref source); private: void initArrays(int luminanceSize); }; } #endif /* ZXING_GLOBALHISTOGRAMBINARIZER_H */ yubioath-desktop/QZXing/zxing/zxing/common/GreyscaleLuminanceSource.cpp000066400000000000000000000055211412677075700270010ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- /* * GreyscaleLuminanceSource.cpp * zxing * * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include using zxing::Ref; using zxing::ArrayRef; using zxing::LuminanceSource; namespace zxing { GreyscaleLuminanceSource:: GreyscaleLuminanceSource(ArrayRef greyData, int dataWidth, int dataHeight, int left, int top, int width, int height) : Super(width, height), greyData_(greyData), dataWidth_(dataWidth), dataHeight_(dataHeight), left_(left), top_(top) { if (left + width > dataWidth || top + height > dataHeight || top < 0 || left < 0) { throw IllegalArgumentException("Crop rectangle does not fit within image data."); } } ArrayRef GreyscaleLuminanceSource::getRow(int y, ArrayRef row) const { if (y < 0 || y >= this->getHeight()) { throw IllegalArgumentException("Requested row is outside the image."); } int width = getWidth(); if (!row || row->size() < width) { ArrayRef temp (width); row = temp; } int offset = (y + top_) * dataWidth_ + left_; memcpy(&row[0], &greyData_[offset], width); return row; } ArrayRef GreyscaleLuminanceSource::getMatrix() const { if (left_ == 0 && top_ == 0 && dataWidth_ == getWidth() && dataHeight_ == getHeight()) return greyData_; int size = getWidth() * getHeight(); ArrayRef result (size); for (int row = 0; row < getHeight(); row++) { memcpy(&result[row * getWidth()], &greyData_[(top_ + row) * dataWidth_ + left_], getWidth()); } return result; } Ref GreyscaleLuminanceSource::rotateCounterClockwise() const { // Intentionally flip the left, top, width, and height arguments as // needed. dataWidth and dataHeight are always kept unrotated. Ref result ( new GreyscaleRotatedLuminanceSource(greyData_, dataWidth_, dataHeight_, top_, left_, getHeight(), getWidth())); return result; } } yubioath-desktop/QZXing/zxing/zxing/common/GreyscaleLuminanceSource.h000066400000000000000000000030111412677075700264360ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- #ifndef ZXING_GREYSCALE_LUMINANCE_SOURCE #define ZXING_GREYSCALE_LUMINANCE_SOURCE /* * GreyscaleLuminanceSource.h * zxing * * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include namespace zxing { class GreyscaleLuminanceSource : public LuminanceSource { private: typedef LuminanceSource Super; ArrayRef greyData_; const int dataWidth_; const int dataHeight_; const int left_; const int top_; public: GreyscaleLuminanceSource(ArrayRef greyData, int dataWidth, int dataHeight, int left, int top, int width, int height); ArrayRef getRow(int y, ArrayRef row) const; ArrayRef getMatrix() const; bool isRotateSupported() const { return true; } Ref rotateCounterClockwise() const; }; } #endif // ZXING_GREYSCALE_LUMINANCE_SOURCE yubioath-desktop/QZXing/zxing/zxing/common/GreyscaleRotatedLuminanceSource.cpp000066400000000000000000000054351412677075700303300ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- /* * GreyscaleRotatedLuminanceSource.cpp * zxing * * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include using zxing::ArrayRef; namespace zxing { // Note that dataWidth and dataHeight are not reversed, as we need to // be able to traverse the greyData correctly, which does not get // rotated. GreyscaleRotatedLuminanceSource:: GreyscaleRotatedLuminanceSource(ArrayRef greyData, int dataWidth, int dataHeight, int left, int top, int width, int height) : Super(width, height), greyData_(greyData), dataWidth_(dataWidth), left_(left), top_(top) { // Intentionally comparing to the opposite dimension since we're rotated. if (left + width > dataHeight || top + height > dataWidth) { throw IllegalArgumentException("Crop rectangle does not fit within image data."); } } // The API asks for rows, but we're rotated, so we return columns. ArrayRef GreyscaleRotatedLuminanceSource::getRow(int y, ArrayRef row) const { if (y < 0 || y >= getHeight()) { throw IllegalArgumentException("Requested row is outside the image."); } if (!row || row->size() < getWidth()) { row = ArrayRef(getWidth()); } int offset = (left_ * dataWidth_) + (dataWidth_ - 1 - (y + top_)); using namespace std; if (false) { cerr << offset << " = " << top_ << " " << left_ << " " << getHeight() << " " << getWidth() << " " << y << endl; } for (int x = 0; x < getWidth(); x++) { row[x] = greyData_[offset]; offset += dataWidth_; } return row; } ArrayRef GreyscaleRotatedLuminanceSource::getMatrix() const { ArrayRef result (getWidth() * getHeight()); for (int y = 0; y < getHeight(); y++) { zxing::byte* row = &result[y * getWidth()]; int offset = (left_ * dataWidth_) + (dataWidth_ - 1 - (y + top_)); for (int x = 0; x < getWidth(); x++) { row[x] = greyData_[offset]; offset += dataWidth_; } } return result; } } yubioath-desktop/QZXing/zxing/zxing/common/GreyscaleRotatedLuminanceSource.h000066400000000000000000000026301412677075700277670ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- #ifndef ZXING_GREYSCALE_ROTATED_LUMINANCE_SOURCE #define ZXING_GREYSCALE_ROTATED_LUMINANCE_SOURCE /* * GreyscaleRotatedLuminanceSource.h * zxing * * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include namespace zxing { class GreyscaleRotatedLuminanceSource : public LuminanceSource { private: typedef LuminanceSource Super; ArrayRef greyData_; const int dataWidth_; const int left_; const int top_; public: GreyscaleRotatedLuminanceSource(ArrayRef greyData, int dataWidth, int dataHeight, int left, int top, int width, int height); ArrayRef getRow(int y, ArrayRef row) const; ArrayRef getMatrix() const; }; } #endif // ZXING_GREYSCALE_ROTATED_LUMINANCE_SOURCE yubioath-desktop/QZXing/zxing/zxing/common/GridSampler.cpp000066400000000000000000000101031412677075700242470ustar00rootroot00000000000000/* * GridSampler.cpp * zxing * * Created by Christian Brunschen on 18/05/2008. * Copyright 2008 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include #include #include namespace zxing { using namespace std; GridSampler GridSampler::gridSampler; GridSampler::GridSampler() { } Ref GridSampler::sampleGrid(Ref image, int dimension, Ref transform) { Ref bits(new BitMatrix(dimension)); vector points(dimension << 1, 0.0f); for (int y = 0; y < dimension; y++) { int max = int(points.size()); float yValue = (float)y + 0.5f; for (int x = 0; x < max; x += 2) { points[x] = (float)(x >> 1) + 0.5f; points[x + 1] = yValue; } transform->transformPoints(points); checkAndNudgePoints(image, points); for (int x = 0; x < max; x += 2) { if (image->get((int)points[x], (int)points[x + 1])) { bits->set(x >> 1, y); } } } return bits; } Ref GridSampler::sampleGrid(Ref image, int dimensionX, int dimensionY, Ref transform) { Ref bits(new BitMatrix(dimensionX, dimensionY)); vector points(dimensionX << 1, 0.0f); for (int y = 0; y < dimensionY; y++) { int max = int(points.size()); float yValue = (float)y + 0.5f; for (int x = 0; x < max; x += 2) { points[x] = (float)(x >> 1) + 0.5f; points[x + 1] = yValue; } transform->transformPoints(points); checkAndNudgePoints(image, points); for (int x = 0; x < max; x += 2) { if (image->get((int)points[x], (int)points[x + 1])) { bits->set(x >> 1, y); } } } return bits; } Ref GridSampler::sampleGrid(Ref image, int dimension, float p1ToX, float p1ToY, float p2ToX, float p2ToY, float p3ToX, float p3ToY, float p4ToX, float p4ToY, float p1FromX, float p1FromY, float p2FromX, float p2FromY, float p3FromX, float p3FromY, float p4FromX, float p4FromY) { Ref transform(PerspectiveTransform::quadrilateralToQuadrilateral(p1ToX, p1ToY, p2ToX, p2ToY, p3ToX, p3ToY, p4ToX, p4ToY, p1FromX, p1FromY, p2FromX, p2FromY, p3FromX, p3FromY, p4FromX, p4FromY)); return sampleGrid(image, dimension, transform); } void GridSampler::checkAndNudgePoints(Ref image, vector &points) { int width = image->getWidth(); int height = image->getHeight(); // The Java code assumes that if the start and end points are in bounds, the rest will also be. // However, in some unusual cases points in the middle may also be out of bounds. // Since we can't rely on an ArrayIndexOutOfBoundsException like Java, we check every point. for (size_t offset = 0; offset < points.size(); offset += 2) { int x = (int)points[offset]; int y = (int)points[offset + 1]; if (x < -1 || x > width || y < -1 || y > height) { ostringstream s; s << "Transformed point out of bounds at " << x << "," << y; throw ReaderException(s.str().c_str()); } if (x == -1) { points[offset] = 0.0f; } else if (x == width) { points[offset] = float(width - 1); } if (y == -1) { points[offset + 1] = 0.0f; } else if (y == height) { points[offset + 1] = float(height - 1); } } } GridSampler &GridSampler::getInstance() { return gridSampler; } } yubioath-desktop/QZXing/zxing/zxing/common/GridSampler.h000066400000000000000000000032011412677075700237150ustar00rootroot00000000000000#ifndef ZXING_GRID_SAMPLER_H #define ZXING_GRID_SAMPLER_H /* * GridSampler.h * zxing * * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include namespace zxing { class GridSampler { private: static GridSampler gridSampler; GridSampler(); public: Ref sampleGrid(Ref image, int dimension, Ref transform); Ref sampleGrid(Ref image, int dimensionX, int dimensionY, Ref transform); Ref sampleGrid(Ref image, int dimension, float p1ToX, float p1ToY, float p2ToX, float p2ToY, float p3ToX, float p3ToY, float p4ToX, float p4ToY, float p1FromX, float p1FromY, float p2FromX, float p2FromY, float p3FromX, float p3FromY, float p4FromX, float p4FromY); static void checkAndNudgePoints(Ref image, std::vector &points); static GridSampler &getInstance(); }; } #endif // ZXING_GRID_SAMPLER_H yubioath-desktop/QZXing/zxing/zxing/common/HybridBinarizer.cpp000066400000000000000000000165541412677075700251450ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- /* * HybridBinarizer.cpp * zxing * * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include using namespace std; using namespace zxing; namespace { const int BLOCK_SIZE_POWER = 3; const int BLOCK_SIZE = 1 << BLOCK_SIZE_POWER; // ...0100...00 const int BLOCK_SIZE_MASK = BLOCK_SIZE - 1; // ...0011...11 const int MINIMUM_DIMENSION = BLOCK_SIZE * 5; } HybridBinarizer::HybridBinarizer(Ref source) : GlobalHistogramBinarizer(source), matrix_(NULL), cached_row_(NULL) { } HybridBinarizer::~HybridBinarizer() { } Ref HybridBinarizer::createBinarizer(Ref source) { return Ref (new HybridBinarizer(source)); } /** * Calculates the final BitMatrix once for all requests. This could be called once from the * constructor instead, but there are some advantages to doing it lazily, such as making * profiling easier, and not doing heavy lifting when callers don't expect it. */ Ref HybridBinarizer::getBlackMatrix() { if (matrix_) { return matrix_; } LuminanceSource& source = *getLuminanceSource(); int width = source.getWidth(); int height = source.getHeight(); if (width >= MINIMUM_DIMENSION && height >= MINIMUM_DIMENSION) { ArrayRef luminances = source.getMatrix(); int subWidth = width >> BLOCK_SIZE_POWER; if ((width & BLOCK_SIZE_MASK) != 0) { subWidth++; } int subHeight = height >> BLOCK_SIZE_POWER; if ((height & BLOCK_SIZE_MASK) != 0) { subHeight++; } ArrayRef blackPoints = calculateBlackPoints(luminances, subWidth, subHeight, width, height); Ref newMatrix (new BitMatrix(width, height)); calculateThresholdForBlock(luminances, subWidth, subHeight, width, height, blackPoints, newMatrix); matrix_ = newMatrix; } else { // If the image is too small, fall back to the global histogram approach. matrix_ = GlobalHistogramBinarizer::getBlackMatrix(); } return matrix_; } namespace { inline int cap(int value, int min, int max) { return value < min ? min : value > max ? max : value; } } void HybridBinarizer::calculateThresholdForBlock(ArrayRef luminances, int subWidth, int subHeight, int width, int height, ArrayRef blackPoints, Ref const& matrix) { for (int y = 0; y < subHeight; y++) { int yoffset = y << BLOCK_SIZE_POWER; int maxYOffset = height - BLOCK_SIZE; if (yoffset > maxYOffset) { yoffset = maxYOffset; } for (int x = 0; x < subWidth; x++) { int xoffset = x << BLOCK_SIZE_POWER; int maxXOffset = width - BLOCK_SIZE; if (xoffset > maxXOffset) { xoffset = maxXOffset; } int left = cap(x, 2, subWidth - 3); int top = cap(y, 2, subHeight - 3); int sum = 0; for (int z = -2; z <= 2; z++) { int *blackRow = &blackPoints[(top + z) * subWidth]; sum += blackRow[left - 2]; sum += blackRow[left - 1]; sum += blackRow[left]; sum += blackRow[left + 1]; sum += blackRow[left + 2]; } int average = sum / 25; thresholdBlock(luminances, xoffset, yoffset, average, width, matrix); } } } void HybridBinarizer::thresholdBlock(ArrayRef luminances, int xoffset, int yoffset, int threshold, int stride, Ref const& matrix) { for (int y = 0, offset = yoffset * stride + xoffset; y < BLOCK_SIZE; y++, offset += stride) { for (int x = 0; x < BLOCK_SIZE; x++) { int pixel = luminances[offset + x] & 0xff; if (pixel <= threshold) { matrix->set(xoffset + x, yoffset + y); } } } } namespace { inline int getBlackPointFromNeighbors(ArrayRef blackPoints, int subWidth, int x, int y) { return (blackPoints[(y-1)*subWidth+x] + 2*blackPoints[y*subWidth+x-1] + blackPoints[(y-1)*subWidth+x-1]) >> 2; } } ArrayRef HybridBinarizer::calculateBlackPoints(ArrayRef luminances, int subWidth, int subHeight, int width, int height) { const int minDynamicRange = 24; ArrayRef blackPoints (subHeight * subWidth); for (int y = 0; y < subHeight; y++) { int yoffset = y << BLOCK_SIZE_POWER; int maxYOffset = height - BLOCK_SIZE; if (yoffset > maxYOffset) { yoffset = maxYOffset; } for (int x = 0; x < subWidth; x++) { int xoffset = x << BLOCK_SIZE_POWER; int maxXOffset = width - BLOCK_SIZE; if (xoffset > maxXOffset) { xoffset = maxXOffset; } int sum = 0; int min = 0xFF; int max = 0; for (int yy = 0, offset = yoffset * width + xoffset; yy < BLOCK_SIZE; yy++, offset += width) { for (int xx = 0; xx < BLOCK_SIZE; xx++) { int pixel = luminances[offset + xx] & 0xFF; sum += pixel; // still looking for good contrast if (pixel < min) { min = pixel; } if (pixel > max) { max = pixel; } } // short-circuit min/max tests once dynamic range is met if (max - min > minDynamicRange) { // finish the rest of the rows quickly for (yy++, offset += width; yy < BLOCK_SIZE; yy++, offset += width) { for (int xx = 0; xx < BLOCK_SIZE; xx += 2) { sum += luminances[offset + xx] & 0xFF; sum += luminances[offset + xx + 1] & 0xFF; } } } } // See // http://groups.google.com/group/zxing/browse_thread/thread/d06efa2c35a7ddc0 int average = sum >> (BLOCK_SIZE_POWER * 2); if (max - min <= minDynamicRange) { average = min >> 1; if (y > 0 && x > 0) { int bp = getBlackPointFromNeighbors(blackPoints, subWidth, x, y); if (min < bp) { average = bp; } } } blackPoints[y * subWidth + x] = average; } } return blackPoints; } yubioath-desktop/QZXing/zxing/zxing/common/HybridBinarizer.h000066400000000000000000000045271412677075700246070ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- #ifndef ZXING_HYBRIDBINARIZER_H #define ZXING_HYBRIDBINARIZER_H /* * HybridBinarizer.h * zxing * * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include #include #include namespace zxing { class HybridBinarizer : public GlobalHistogramBinarizer { private: Ref matrix_; Ref cached_row_; public: HybridBinarizer(Ref source); virtual ~HybridBinarizer(); virtual Ref getBlackMatrix(); Ref createBinarizer(Ref source); private: // We'll be using one-D arrays because C++ can't dynamically allocate 2D // arrays ArrayRef calculateBlackPoints(ArrayRef luminances, int subWidth, int subHeight, int width, int height); void calculateThresholdForBlock(ArrayRef luminances, int subWidth, int subHeight, int width, int height, ArrayRef blackPoints, Ref const& matrix); void thresholdBlock(ArrayRefluminances, int xoffset, int yoffset, int threshold, int stride, Ref const& matrix); }; } #endif // ZXING_HYBRIDBINARIZER_H yubioath-desktop/QZXing/zxing/zxing/common/IllegalArgumentException.cpp000066400000000000000000000020141412677075700267730ustar00rootroot00000000000000/* * IllegalArgumentException.cpp * zxing * * Created by Christian Brunschen on 06/05/2008. * Copyright 2008 Google UK. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include using zxing::IllegalArgumentException; IllegalArgumentException::IllegalArgumentException() : Exception() {} IllegalArgumentException::IllegalArgumentException(const char *msg) : Exception(msg) {} IllegalArgumentException::~IllegalArgumentException() ZXING_NOEXCEPT {} yubioath-desktop/QZXing/zxing/zxing/common/IllegalArgumentException.h000066400000000000000000000020121412677075700264360ustar00rootroot00000000000000#ifndef ZXING_ILLEGAL_ARGUMENT_EXCEPTION_H #define ZXING_ILLEGAL_ARGUMENT_EXCEPTION_H /* * IllegalArgumentException.h * zxing * * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include namespace zxing { class IllegalArgumentException : public Exception { public: IllegalArgumentException(); IllegalArgumentException(const char *msg); ~IllegalArgumentException() ZXING_NOEXCEPT; }; } #endif // ZXING_ILLEGAL_ARGUMENT_EXCEPTION_H yubioath-desktop/QZXing/zxing/zxing/common/PerspectiveTransform.cpp000066400000000000000000000115071412677075700262340ustar00rootroot00000000000000/* * PerspectiveTransform.cpp * zxing * * Created by Christian Brunschen on 12/05/2008. * Copyright 2008 Google UK. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include namespace zxing { using namespace std; PerspectiveTransform::PerspectiveTransform(float inA11, float inA21, float inA31, float inA12, float inA22, float inA32, float inA13, float inA23, float inA33) : a11(inA11), a12(inA12), a13(inA13), a21(inA21), a22(inA22), a23(inA23), a31(inA31), a32(inA32), a33(inA33) {} Ref PerspectiveTransform::quadrilateralToQuadrilateral(float x0, float y0, float x1, float y1, float x2, float y2, float x3, float y3, float x0p, float y0p, float x1p, float y1p, float x2p, float y2p, float x3p, float y3p) { Ref qToS = PerspectiveTransform::quadrilateralToSquare(x0, y0, x1, y1, x2, y2, x3, y3); Ref sToQ = PerspectiveTransform::squareToQuadrilateral(x0p, y0p, x1p, y1p, x2p, y2p, x3p, y3p); return sToQ->times(qToS); } Ref PerspectiveTransform::squareToQuadrilateral(float x0, float y0, float x1, float y1, float x2, float y2, float x3, float y3) { float dx3 = x0 - x1 + x2 - x3; float dy3 = y0 - y1 + y2 - y3; Ref result; if (dx3 == 0.0f && dy3 == 0.0f) { result = new PerspectiveTransform(x1 - x0, x2 - x1, x0, y1 - y0, y2 - y1, y0, 0.0f, 0.0f, 1.0f); } else { float dx1 = x1 - x2; float dx2 = x3 - x2; float dy1 = y1 - y2; float dy2 = y3 - y2; float denominator = dx1 * dy2 - dx2 * dy1; float a13 = (dx3 * dy2 - dx2 * dy3) / denominator; float a23 = (dx1 * dy3 - dx3 * dy1) / denominator; result = new PerspectiveTransform(x1 - x0 + a13 * x1, x3 - x0 + a23 * x3, x0, y1 - y0 + a13 * y1, y3 - y0 + a23 * y3, y0, a13, a23, 1.0f); } return result; } Ref PerspectiveTransform::quadrilateralToSquare(float x0, float y0, float x1, float y1, float x2, float y2, float x3, float y3) { // Here, the adjoint serves as the inverse: return squareToQuadrilateral(x0, y0, x1, y1, x2, y2, x3, y3)->buildAdjoint(); } Ref PerspectiveTransform::buildAdjoint() { // Adjoint is the transpose of the cofactor matrix: Ref result(new PerspectiveTransform(a22 * a33 - a23 * a32, a23 * a31 - a21 * a33, a21 * a32 - a22 * a31, a13 * a32 - a12 * a33, a11 * a33 - a13 * a31, a12 * a31 - a11 * a32, a12 * a23 - a13 * a22, a13 * a21 - a11 * a23, a11 * a22 - a12 * a21)); return result; } Ref PerspectiveTransform::times(Ref other) { Ref result(new PerspectiveTransform(a11 * other->a11 + a21 * other->a12 + a31 * other->a13, a11 * other->a21 + a21 * other->a22 + a31 * other->a23, a11 * other->a31 + a21 * other->a32 + a31 * other->a33, a12 * other->a11 + a22 * other->a12 + a32 * other->a13, a12 * other->a21 + a22 * other->a22 + a32 * other->a23, a12 * other->a31 + a22 * other->a32 + a32 * other->a33, a13 * other->a11 + a23 * other->a12 + a33 * other->a13, a13 * other->a21 + a23 * other->a22 + a33 * other->a23, a13 * other->a31 + a23 * other->a32 + a33 * other->a33)); return result; } void PerspectiveTransform::transformPoints(vector &points) { int max = int(points.size()); for (int i = 0; i < max; i += 2) { float x = points[i]; float y = points[i + 1]; float denominator = a13 * x + a23 * y + a33; points[i] = (a11 * x + a21 * y + a31) / denominator; points[i + 1] = (a12 * x + a22 * y + a32) / denominator; } } ostream& operator<<(ostream& out, const PerspectiveTransform &pt) { out << pt.a11 << ", " << pt.a12 << ", " << pt.a13 << ", \n"; out << pt.a21 << ", " << pt.a22 << ", " << pt.a23 << ", \n"; out << pt.a31 << ", " << pt.a32 << ", " << pt.a33 << "\n"; return out; } } yubioath-desktop/QZXing/zxing/zxing/common/PerspectiveTransform.h000066400000000000000000000036001412677075700256740ustar00rootroot00000000000000#ifndef ZXING_PERSPECTIVE_TANSFORM_H #define ZXING_PERSPECTIVE_TANSFORM_H /* * PerspectiveTransform.h * zxing * * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include namespace zxing { class PerspectiveTransform : public Counted { private: float a11, a12, a13, a21, a22, a23, a31, a32, a33; PerspectiveTransform(float a11, float a21, float a31, float a12, float a22, float a32, float a13, float a23, float a33); public: static Ref quadrilateralToQuadrilateral(float x0, float y0, float x1, float y1, float x2, float y2, float x3, float y3, float x0p, float y0p, float x1p, float y1p, float x2p, float y2p, float x3p, float y3p); static Ref squareToQuadrilateral(float x0, float y0, float x1, float y1, float x2, float y2, float x3, float y3); static Ref quadrilateralToSquare(float x0, float y0, float x1, float y1, float x2, float y2, float x3, float y3); Ref buildAdjoint(); Ref times(Ref other); void transformPoints(std::vector &points); friend std::ostream& operator<<(std::ostream& out, const PerspectiveTransform &pt); }; } #endif // ZXING_PERSPECTIVE_TANSFORM_H yubioath-desktop/QZXing/zxing/zxing/common/Point.h000066400000000000000000000020021412677075700225730ustar00rootroot00000000000000#ifndef ZXING_POINT_H #define ZXING_POINT_H /* * Point.h * zxing * * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace zxing { class PointI { public: int x; int y; }; class Point { public: Point() : x(0.0f), y(0.0f) {}; Point(float x_, float y_) : x(x_), y(y_) {}; float x; float y; }; class Line { public: Line(Point start_, Point end_) : start(start_), end(end_) {}; Point start; Point end; }; } #endif // ZXING_POINT_H yubioath-desktop/QZXing/zxing/zxing/common/Str.cpp000066400000000000000000000030261412677075700226140ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- /* * String.cpp * zxing * * Created by Christian Brunschen on 20/05/2008. * Copyright 2008 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include using std::string; using zxing::String; using zxing::Ref; String::String(const std::string &text) : text_(text) { } String::String(int capacity) { text_.reserve(capacity); } const std::string& String::getText() const { return text_; } char String::charAt(int i) const { return text_[i]; } int String::size() const { return int(text_.size()); } int String::length() const { return int(text_.size()); } Ref String::substring(int i, int j) const { return Ref(new String(text_.substr(i, j))); } void String::append(const std::string &tail) { text_.append(tail); } void String::append(char c) { text_.append(1,c); } std::ostream& zxing::operator << (std::ostream& out, String const& s) { out << s.text_; return out; } yubioath-desktop/QZXing/zxing/zxing/common/Str.h000066400000000000000000000025571412677075700222710ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- #ifndef ZXING_STR_H #define ZXING_STR_H /* * Str.h * zxing * * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include namespace zxing { class String; std::ostream& operator << (std::ostream& out, String const& s); class String : public Counted { private: std::string text_; public: explicit String(const std::string &text); explicit String(int); char charAt(int) const; Ref substring(int, int = -1) const; const std::string& getText() const; int size() const; void append(std::string const& tail); void append(char c); int length() const; friend std::ostream& zxing::operator << (std::ostream& out, String const& s); }; } #endif // ZXING_STR_H yubioath-desktop/QZXing/zxing/zxing/common/StringUtils.cpp000066400000000000000000000147131412677075700243400ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- /* * Copyright (C) 2010-2011 ZXing authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include using namespace std; using namespace zxing; using namespace zxing::common; // N.B.: these are the iconv strings for at least some versions of iconv char const* const StringUtils::PLATFORM_DEFAULT_ENCODING = "UTF-8"; char const* const StringUtils::ASCII = "ASCII"; char const* const StringUtils::SHIFT_JIS = "SHIFT_JIS"; char const* const StringUtils::GB2312 = "GBK"; char const* const StringUtils::EUC_JP = "EUC-JP"; char const* const StringUtils::UTF8 = "UTF-8"; char const* const StringUtils::ISO88591 = "ISO8859-1"; const bool StringUtils::ASSUME_SHIFT_JIS = false; string StringUtils::guessEncoding(zxing::byte* bytes, int length, Hashtable const& hints) { Hashtable::const_iterator i = hints.find(DecodeHints::CHARACTER_SET); if (i != hints.end()) { return i->second; } typedef bool boolean; // For now, merely tries to distinguish ISO-8859-1, UTF-8 and Shift_JIS, // which should be by far the most common encodings. boolean canBeISO88591 = true; boolean canBeShiftJIS = true; boolean canBeUTF8 = true; int utf8BytesLeft = 0; //int utf8LowChars = 0; int utf2BytesChars = 0; int utf3BytesChars = 0; int utf4BytesChars = 0; int sjisBytesLeft = 0; //int sjisLowChars = 0; int sjisKatakanaChars = 0; //int sjisDoubleBytesChars = 0; int sjisCurKatakanaWordLength = 0; int sjisCurDoubleBytesWordLength = 0; int sjisMaxKatakanaWordLength = 0; int sjisMaxDoubleBytesWordLength = 0; //int isoLowChars = 0; //int isoHighChars = 0; int isoHighOther = 0; boolean utf8bom = length > 3 && bytes[0] == (zxing::byte) 0xEF && bytes[1] == (zxing::byte) 0xBB && bytes[2] == (zxing::byte) 0xBF; for (int i = 0; i < length && (canBeISO88591 || canBeShiftJIS || canBeUTF8); i++) { int value = bytes[i] & 0xFF; // UTF-8 stuff if (canBeUTF8) { if (utf8BytesLeft > 0) { if ((value & 0x80) == 0) { canBeUTF8 = false; } else { utf8BytesLeft--; } } else if ((value & 0x80) != 0) { if ((value & 0x40) == 0) { canBeUTF8 = false; } else { utf8BytesLeft++; if ((value & 0x20) == 0) { utf2BytesChars++; } else { utf8BytesLeft++; if ((value & 0x10) == 0) { utf3BytesChars++; } else { utf8BytesLeft++; if ((value & 0x08) == 0) { utf4BytesChars++; } else { canBeUTF8 = false; } } } } } //else { //utf8LowChars++; //} } // ISO-8859-1 stuff if (canBeISO88591) { if (value > 0x7F && value < 0xA0) { canBeISO88591 = false; } else if (value > 0x9F) { if (value < 0xC0 || value == 0xD7 || value == 0xF7) { isoHighOther++; } //else { //isoHighChars++; //} } //else { //isoLowChars++; //} } // Shift_JIS stuff if (canBeShiftJIS) { if (sjisBytesLeft > 0) { if (value < 0x40 || value == 0x7F || value > 0xFC) { canBeShiftJIS = false; } else { sjisBytesLeft--; } } else if (value == 0x80 || value == 0xA0 || value > 0xEF) { canBeShiftJIS = false; } else if (value > 0xA0 && value < 0xE0) { sjisKatakanaChars++; sjisCurDoubleBytesWordLength = 0; sjisCurKatakanaWordLength++; if (sjisCurKatakanaWordLength > sjisMaxKatakanaWordLength) { sjisMaxKatakanaWordLength = sjisCurKatakanaWordLength; } } else if (value > 0x7F) { sjisBytesLeft++; //sjisDoubleBytesChars++; sjisCurKatakanaWordLength = 0; sjisCurDoubleBytesWordLength++; if (sjisCurDoubleBytesWordLength > sjisMaxDoubleBytesWordLength) { sjisMaxDoubleBytesWordLength = sjisCurDoubleBytesWordLength; } } else { //sjisLowChars++; sjisCurKatakanaWordLength = 0; sjisCurDoubleBytesWordLength = 0; } } } if (canBeUTF8 && utf8BytesLeft > 0) { canBeUTF8 = false; } if (canBeShiftJIS && sjisBytesLeft > 0) { canBeShiftJIS = false; } // Easy -- if there is BOM or at least 1 valid not-single byte character (and no evidence it can't be UTF-8), done if (canBeUTF8 && (utf8bom || utf2BytesChars + utf3BytesChars + utf4BytesChars > 0)) { return UTF8; } // Easy -- if assuming Shift_JIS or at least 3 valid consecutive not-ascii characters (and no evidence it can't be), done if (canBeShiftJIS && (ASSUME_SHIFT_JIS || sjisMaxKatakanaWordLength >= 3 || sjisMaxDoubleBytesWordLength >= 3)) { return SHIFT_JIS; } // Distinguishing Shift_JIS and ISO-8859-1 can be a little tough for short words. The crude heuristic is: // - If we saw // - only two consecutive katakana chars in the whole text, or // - at least 10% of bytes that could be "upper" not-alphanumeric Latin1, // - then we conclude Shift_JIS, else ISO-8859-1 if (canBeISO88591 && canBeShiftJIS) { return (sjisMaxKatakanaWordLength == 2 && sjisKatakanaChars == 2) || isoHighOther * 10 >= length ? SHIFT_JIS : ISO88591; } // Otherwise, try in order ISO-8859-1, Shift JIS, UTF-8 and fall back to default platform encoding if (canBeISO88591) { return ISO88591; } if (canBeShiftJIS) { return SHIFT_JIS; } if (canBeUTF8) { return UTF8; } // Otherwise, we take a wild guess with platform encoding return PLATFORM_DEFAULT_ENCODING; } string StringUtils::intToStr(int number) { std::ostringstream ostr; //output string stream ostr << number; //use the string stream just like cout, //except the stream prints not to stdout but to a string. return ostr.str(); //the str() function of the stream } yubioath-desktop/QZXing/zxing/zxing/common/StringUtils.h000066400000000000000000000027041412677075700240020ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- #ifndef ZXING_STRING_UTILS_H #define ZXING_STRING_UTILS_H /* * Copyright (C) 2010-2011 ZXing authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include #include namespace zxing { namespace common { class StringUtils { private: static char const* const PLATFORM_DEFAULT_ENCODING; StringUtils() {} public: static char const* const ASCII; static char const* const SHIFT_JIS; static char const* const GB2312; static char const* const EUC_JP; static char const* const UTF8; static char const* const ISO88591; static const bool ASSUME_SHIFT_JIS; typedef std::map Hashtable; static std::string guessEncoding(zxing::byte *bytes, int length, Hashtable const& hints); static std::string intToStr(int number); }; } } #endif // ZXING_STRING_UTILS_H yubioath-desktop/QZXing/zxing/zxing/common/Types.h000066400000000000000000000004321412677075700226130ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- #ifndef ZXING_TYPES_H #define ZXING_TYPES_H #include #include #include namespace zxing { typedef uint8_t byte; typedef bool boolean; } #endif // ZXING_TYPES_H yubioath-desktop/QZXing/zxing/zxing/common/detector/000077500000000000000000000000001412677075700231505ustar00rootroot00000000000000yubioath-desktop/QZXing/zxing/zxing/common/detector/JavaMath.h000066400000000000000000000020431412677075700250130ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- #ifndef ZXING_COMMON_DETECTOR_MATH_H #define ZXING_COMMON_DETECTOR_MATH_H /* * Copyright 2012 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include namespace zxing { namespace common { namespace detector { class Math { private: Math(); ~Math(); public: // Java standard Math.round static inline int round(float a) { return (int)std::floor(a +0.5f); } }; } } } #endif // ZXING_COMMON_DETECTOR_MATH_H yubioath-desktop/QZXing/zxing/zxing/common/detector/MathUtils.h000066400000000000000000000032761412677075700252430ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- #ifndef ZXING_COMMON_DETECTOR_MATHUTILS_H #define ZXING_COMMON_DETECTOR_MATHUTILS_H /* * Copyright 2012 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include namespace zxing { namespace common { namespace detector { class MathUtils { private: MathUtils(); ~MathUtils(); public: /** * Ends up being a bit faster than {@link Math#round(float)}. This merely rounds its * argument to the nearest int, where x.5 rounds up to x+1. */ static inline int round(float d) { return (int) (d + 0.5f); } static inline float distance(float aX, float aY, float bX, float bY) { float xDiff = aX - bX; float yDiff = aY - bY; return sqrt(xDiff * xDiff + yDiff * yDiff); } static inline float distance(int aX, int aY, int bX, int bY) { int xDiff = aX - bX; int yDiff = aY - bY; return sqrt(float(xDiff * xDiff + yDiff * yDiff)); } static inline int sum(std::vector array) { int count = 0; for (int a : array) { count += a; } return count; } }; } } } #endif // ZXING_COMMON_DETECTOR_MATHUTILS_H yubioath-desktop/QZXing/zxing/zxing/common/detector/MonochromeRectangleDetector.cpp000066400000000000000000000143551412677075700313110ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- /* * MonochromeRectangleDetector.cpp * y_wmk * * Created by Luiz Silva on 09/02/2010. * Copyright 2010 y_wmk authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include #include using std::vector; using zxing::Ref; using zxing::ResultPoint; using zxing::TwoInts; using zxing::MonochromeRectangleDetector; vector > MonochromeRectangleDetector::detect() { int height = image_->getHeight(); int width = image_->getWidth(); int halfHeight = height >> 1; int halfWidth = width >> 1; int deltaY = std::max(1, height / (MAX_MODULES << 3)); int deltaX = std::max(1, width / (MAX_MODULES << 3)); int top = 0; int bottom = height; int left = 0; int right = width; Ref pointA(findCornerFromCenter(halfWidth, 0, left, right, halfHeight, -deltaY, top, bottom, halfWidth >> 1)); top = (int) pointA->getY() - 1;; Ref pointB(findCornerFromCenter(halfWidth, -deltaX, left, right, halfHeight, 0, top, bottom, halfHeight >> 1)); left = (int) pointB->getX() - 1; Ref pointC(findCornerFromCenter(halfWidth, deltaX, left, right, halfHeight, 0, top, bottom, halfHeight >> 1)); right = (int) pointC->getX() + 1; Ref pointD(findCornerFromCenter(halfWidth, 0, left, right, halfHeight, deltaY, top, bottom, halfWidth >> 1)); bottom = (int) pointD->getY() + 1; // Go try to find point A again with better information -- might have been off at first. pointA.reset(findCornerFromCenter(halfWidth, 0, left, right, halfHeight, -deltaY, top, bottom, halfWidth >> 2)); vector > corners(4); corners[0].reset(pointA); corners[1].reset(pointB); corners[2].reset(pointC); corners[3].reset(pointD); return corners; } Ref MonochromeRectangleDetector::findCornerFromCenter(int centerX, int deltaX, int left, int right, int centerY, int deltaY, int top, int bottom, int maxWhiteRun) { Ref lastRange(NULL); for (int y = centerY, x = centerX; y < bottom && y >= top && x < right && x >= left; y += deltaY, x += deltaX) { Ref range(NULL); if (deltaX == 0) { // horizontal slices, up and down range = blackWhiteRange(y, maxWhiteRun, left, right, true); } else { // vertical slices, left and right range = blackWhiteRange(x, maxWhiteRun, top, bottom, false); } if (range == NULL) { if (lastRange == NULL) { throw NotFoundException("Couldn't find corners (lastRange = NULL) "); } else { // lastRange was found if (deltaX == 0) { int lastY = y - deltaY; if (lastRange->start < centerX) { if (lastRange->end > centerX) { // straddle, choose one or the other based on direction Ref result(new ResultPoint(deltaY > 0 ? lastRange->start : lastRange->end, lastY)); return result; } Ref result(new ResultPoint(lastRange->start, lastY)); return result; } else { Ref result(new ResultPoint(lastRange->end, lastY)); return result; } } else { int lastX = x - deltaX; if (lastRange->start < centerY) { if (lastRange->end > centerY) { Ref result(new ResultPoint(lastX, deltaX < 0 ? lastRange->start : lastRange->end)); return result; } Ref result(new ResultPoint(lastX, lastRange->start)); return result; } else { Ref result(new ResultPoint(lastX, lastRange->end)); return result; } } } } lastRange = range; } throw NotFoundException("Couldn't find corners"); } Ref MonochromeRectangleDetector::blackWhiteRange(int fixedDimension, int maxWhiteRun, int minDim, int maxDim, bool horizontal) { int center = (minDim + maxDim) >> 1; // Scan left/up first int start = center; while (start >= minDim) { if (horizontal ? image_->get(start, fixedDimension) : image_->get(fixedDimension, start)) { start--; } else { int whiteRunStart = start; do { start--; } while (start >= minDim && !(horizontal ? image_->get(start, fixedDimension) : image_->get(fixedDimension, start))); int whiteRunSize = whiteRunStart - start; if (start < minDim || whiteRunSize > maxWhiteRun) { start = whiteRunStart; break; } } } start++; // Then try right/down int end = center; while (end < maxDim) { if (horizontal ? image_->get(end, fixedDimension) : image_->get(fixedDimension, end)) { end++; } else { int whiteRunStart = end; do { end++; } while (end < maxDim && !(horizontal ? image_->get(end, fixedDimension) : image_->get(fixedDimension, end))); int whiteRunSize = end - whiteRunStart; if (end >= maxDim || whiteRunSize > maxWhiteRun) { end = whiteRunStart; break; } } } end--; Ref result(NULL); if (end > start) { result = new TwoInts; result->start = start; result->end = end; } return result; } yubioath-desktop/QZXing/zxing/zxing/common/detector/MonochromeRectangleDetector.h000066400000000000000000000035001412677075700307440ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- #ifndef ZXING_MONOCHROMERECTANGLEDETECTOR_H #define ZXING_MONOCHROMERECTANGLEDETECTOR_H /* * MonochromeRectangleDetector.h * y_wmk * * Created by Luiz Silva on 09/02/2010. * Copyright 2010 y_wmk authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include #include #include #include namespace zxing { struct TwoInts: public Counted { int start; int end; }; class MonochromeRectangleDetector : public Counted { private: static const int MAX_MODULES = 32; Ref image_; public: MonochromeRectangleDetector(Ref image) : image_(image) { }; std::vector > detect(); private: Ref findCornerFromCenter(int centerX, int deltaX, int left, int right, int centerY, int deltaY, int top, int bottom, int maxWhiteRun); Ref blackWhiteRange(int fixedDimension, int maxWhiteRun, int minDim, int maxDim, bool horizontal); int max(int a, float b) { return (float) a > b ? a : (int) b;}; }; } #endif // ZXING_MONOCHROMERECTANGLEDETECTOR_H yubioath-desktop/QZXing/zxing/zxing/common/detector/WhiteRectangleDetector.cpp000066400000000000000000000215261412677075700302610ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- /* * WhiteRectangleDetector.cpp * y_wmk * * Created by Luiz Silva on 09/02/2010. * Copyright 2010 y_wmk authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include #include using std::vector; using zxing::Ref; using zxing::ResultPoint; using zxing::WhiteRectangleDetector; using zxing::common::detector::MathUtils; // VC++ using zxing::BitMatrix; int WhiteRectangleDetector::INIT_SIZE = 10; int WhiteRectangleDetector::CORR = 1; WhiteRectangleDetector::WhiteRectangleDetector(Ref image) : WhiteRectangleDetector(image, INIT_SIZE, image->getWidth() >> 1, image->getHeight() >> 1) { } WhiteRectangleDetector::WhiteRectangleDetector(Ref image, int initSize, int x, int y) : image_(image) { width_ = image->getWidth(); height_ = image->getHeight(); int halfsize = initSize >> 1; leftInit_ = x - halfsize; rightInit_ = x + halfsize; upInit_ = y - halfsize; downInit_ = y + halfsize; if (upInit_ < 0 || leftInit_ < 0 || downInit_ >= height_ || rightInit_ >= width_) { throw NotFoundException("Invalid dimensions WhiteRectangleDetector"); } } /** *

* Detects a candidate barcode-like rectangular region within an image. It * starts around the center of the image, increases the size of the candidate * region until it finds a white rectangular region. *

* * @return {@link vector >} describing the corners of the rectangular * region. The first and last points are opposed on the diagonal, as * are the second and third. The first point will be the topmost * point and the last, the bottommost. The second point will be * leftmost and the third, the rightmost * @throws NotFoundException if no Data Matrix Code can be found */ std::vector > WhiteRectangleDetector::detect() { int left = leftInit_; int right = rightInit_; int up = upInit_; int down = downInit_; bool sizeExceeded = false; bool aBlackPointFoundOnBorder = true; bool atLeastOneBlackPointFoundOnBorder = false; while (aBlackPointFoundOnBorder) { aBlackPointFoundOnBorder = false; // ..... // . | // ..... bool rightBorderNotWhite = true; while (rightBorderNotWhite && right < width_) { rightBorderNotWhite = containsBlackPoint(up, down, right, false); if (rightBorderNotWhite) { right++; aBlackPointFoundOnBorder = true; } } if (right >= width_) { sizeExceeded = true; break; } // ..... // . . // .___. bool bottomBorderNotWhite = true; while (bottomBorderNotWhite && down < height_) { bottomBorderNotWhite = containsBlackPoint(left, right, down, true); if (bottomBorderNotWhite) { down++; aBlackPointFoundOnBorder = true; } } if (down >= height_) { sizeExceeded = true; break; } // ..... // | . // ..... bool leftBorderNotWhite = true; while (leftBorderNotWhite && left >= 0) { leftBorderNotWhite = containsBlackPoint(up, down, left, false); if (leftBorderNotWhite) { left--; aBlackPointFoundOnBorder = true; } } if (left < 0) { sizeExceeded = true; break; } // .___. // . . // ..... bool topBorderNotWhite = true; while (topBorderNotWhite && up >= 0) { topBorderNotWhite = containsBlackPoint(left, right, up, true); if (topBorderNotWhite) { up--; aBlackPointFoundOnBorder = true; } } if (up < 0) { sizeExceeded = true; break; } if (aBlackPointFoundOnBorder) { atLeastOneBlackPointFoundOnBorder = true; } } if (!sizeExceeded && atLeastOneBlackPointFoundOnBorder) { int maxSize = right - left; Ref z(NULL); //go up right for (int i = 1; i < maxSize; i++) { z = getBlackPointOnSegment(left, down - i, left + i, down); if (z != NULL) { break; } } if (z == NULL) { throw NotFoundException("z == NULL"); } Ref t(NULL); //go down right for (int i = 1; i < maxSize; i++) { t = getBlackPointOnSegment(left, up + i, left + i, up); if (t != NULL) { break; } } if (t == NULL) { throw NotFoundException("t == NULL"); } Ref x(NULL); //go down left for (int i = 1; i < maxSize; i++) { x = getBlackPointOnSegment(right, up + i, right - i, up); if (x != NULL) { break; } } if (x == NULL) { throw NotFoundException("x == NULL"); } Ref y(NULL); //go up left for (int i = 1; i < maxSize; i++) { y = getBlackPointOnSegment(right, down - i, right - i, down); if (y != NULL) { break; } } if (y == NULL) { throw NotFoundException("y == NULL"); } return centerEdges(y, z, x, t); } else { throw NotFoundException("No black point found on border"); } } Ref WhiteRectangleDetector::getBlackPointOnSegment(int aX_, int aY_, int bX_, int bY_) { float aX = float(aX_), aY = float(aY_), bX = float(bX_), bY = float(bY_); int dist = MathUtils::round(MathUtils::distance(aX, aY, bX, bY)); float xStep = (bX - aX) / dist; float yStep = (bY - aY) / dist; for (int i = 0; i < dist; i++) { int x = MathUtils::round(aX + i * xStep); int y = MathUtils::round(aY + i * yStep); if (image_->get(x, y)) { Ref point(new ResultPoint(float(x), float(y))); return point; } } Ref point(NULL); return point; } /** * recenters the points of a constant distance towards the center * * @param y bottom most point * @param z left most point * @param x right most point * @param t top most point * @return {@link vector >} describing the corners of the rectangular * region. The first and last points are opposed on the diagonal, as * are the second and third. The first point will be the topmost * point and the last, the bottommost. The second point will be * leftmost and the third, the rightmost */ vector > WhiteRectangleDetector::centerEdges(Ref y, Ref z, Ref x, Ref t) { // // t t // z x // x OR z // y y // float yi = y->getX(); float yj = y->getY(); float zi = z->getX(); float zj = z->getY(); float xi = x->getX(); float xj = x->getY(); float ti = t->getX(); float tj = t->getY(); std::vector > corners(4); if (yi < (float)width_/2.0f) { Ref pointA(new ResultPoint(ti - CORR, tj + CORR)); Ref pointB(new ResultPoint(zi + CORR, zj + CORR)); Ref pointC(new ResultPoint(xi - CORR, xj - CORR)); Ref pointD(new ResultPoint(yi + CORR, yj - CORR)); corners[0].reset(pointA); corners[1].reset(pointB); corners[2].reset(pointC); corners[3].reset(pointD); } else { Ref pointA(new ResultPoint(ti + CORR, tj + CORR)); Ref pointB(new ResultPoint(zi + CORR, zj - CORR)); Ref pointC(new ResultPoint(xi - CORR, xj + CORR)); Ref pointD(new ResultPoint(yi - CORR, yj - CORR)); corners[0].reset(pointA); corners[1].reset(pointB); corners[2].reset(pointC); corners[3].reset(pointD); } return corners; } /** * Determines whether a segment contains a black point * * @param a min value of the scanned coordinate * @param b max value of the scanned coordinate * @param fixed value of fixed coordinate * @param horizontal set to true if scan must be horizontal, false if vertical * @return true if a black point has been found, else false. */ bool WhiteRectangleDetector::containsBlackPoint(int a, int b, int fixed, bool horizontal) { if (horizontal) { for (int x = a; x <= b; x++) { if (image_->get(x, fixed)) { return true; } } } else { for (int y = a; y <= b; y++) { if (image_->get(fixed, y)) { return true; } } } return false; } yubioath-desktop/QZXing/zxing/zxing/common/detector/WhiteRectangleDetector.h000066400000000000000000000033571412677075700277300ustar00rootroot00000000000000#ifndef ZXING_WHITERECTANGLEDETECTOR_H #define ZXING_WHITERECTANGLEDETECTOR_H /* * WhiteRectangleDetector.h * * * Created by Luiz Silva on 09/02/2010. * Copyright 2010 authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include #include #include #include namespace zxing { class WhiteRectangleDetector : public Counted { private: static int INIT_SIZE; static int CORR; Ref image_; int width_; int height_; int leftInit_; int rightInit_; int downInit_; int upInit_; public: WhiteRectangleDetector(Ref image); WhiteRectangleDetector(Ref image, int initSize, int x, int y); std::vector > detect(); private: Ref getBlackPointOnSegment(int aX, int aY, int bX, int bY); std::vector > centerEdges(Ref y, Ref z, Ref x, Ref t); bool containsBlackPoint(int a, int b, int fixed, bool horizontal); }; } #endif // ZXING_WHITERECTANGLEDETECTOR_H yubioath-desktop/QZXing/zxing/zxing/common/reedsolomon/000077500000000000000000000000001412677075700236655ustar00rootroot00000000000000yubioath-desktop/QZXing/zxing/zxing/common/reedsolomon/GenericGF.cpp000066400000000000000000000075761412677075700262010ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- /* * GenericGF.cpp * zxing * * Created by Lukas Stabe on 13/02/2012. * Copyright 2012 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include #include using zxing::GenericGF; using zxing::GenericGFPoly; using zxing::Ref; Ref GenericGF::AZTEC_DATA_12(new GenericGF(0x1069, 4096, 1)); Ref GenericGF::AZTEC_DATA_10(new GenericGF(0x409, 1024, 1)); Ref GenericGF::AZTEC_DATA_6(new GenericGF(0x43, 64, 1)); Ref GenericGF::AZTEC_PARAM(new GenericGF(0x13, 16, 1)); Ref GenericGF::QR_CODE_FIELD_256(new GenericGF(0x011D, 256, 0)); Ref GenericGF::DATA_MATRIX_FIELD_256(new GenericGF(0x012D, 256, 1)); Ref GenericGF::AZTEC_DATA_8 = DATA_MATRIX_FIELD_256; Ref GenericGF::MAXICODE_FIELD_64 = AZTEC_DATA_6; namespace { size_t INITIALIZATION_THRESHOLD = 0; } GenericGF::GenericGF(int primitive_, size_t size_, int b) : size(size_), primitive(primitive_), generatorBase(b), initialized(false) { if (size <= INITIALIZATION_THRESHOLD) { initialize(); } } GenericGF::~GenericGF() { return; } void GenericGF::initialize() { expTable = std::vector(size); logTable = std::vector(size); size_t x = 1; for (size_t i = 0; i < size; i++) { expTable[i] = x; x <<= 1; // x = x * 2; we're assuming the generator alpha is 2 if (x >= size) { x ^= primitive; x &= size-1; } } for (size_t i = 0; i < size-1; i++) { logTable.at(expTable.at(i)) = i; } //logTable[0] == 0 but this should never be used ArrayRef coefficients_zero(1); ArrayRef coefficients_one(1); coefficients_zero[0] = 0; coefficients_one[0] = 1; zero = Ref(new GenericGFPoly(this, coefficients_zero)); one = Ref(new GenericGFPoly(this, coefficients_one)); initialized = true; } void GenericGF::checkInit() { if (!initialized) { initialize(); } } Ref GenericGF::getZero() { checkInit(); return zero; } Ref GenericGF::getOne() { checkInit(); return one; } Ref GenericGF::buildMonomial(int degree, int coefficient) { checkInit(); if (degree < 0) { throw IllegalArgumentException("Degree must be non-negative"); } if (coefficient == 0) { return zero; } ArrayRef coefficients(degree + 1); coefficients[0] = coefficient; return Ref(new GenericGFPoly(this, coefficients)); } int GenericGF::addOrSubtract(int a, int b) { return a ^ b; } int GenericGF::exp(int a) { checkInit(); return expTable[a]; } int GenericGF::log(int a) { checkInit(); if (a == 0) { throw IllegalArgumentException("cannot give log(0)"); } return logTable[a]; } int GenericGF::inverse(int a) { checkInit(); if (a == 0) { throw IllegalArgumentException("Cannot calculate the inverse of 0"); } return expTable[size - logTable[a] - 1]; } int GenericGF::multiply(int a, int b) { checkInit(); if (a == 0 || b == 0) { return 0; } return expTable[(logTable[a] + logTable[b]) % (size - 1)]; } size_t GenericGF::getSize() { return size; } int GenericGF::getGeneratorBase() { return generatorBase; } yubioath-desktop/QZXing/zxing/zxing/common/reedsolomon/GenericGF.h000066400000000000000000000037121412677075700256320ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- /* * GenericGF.h * zxing * * Created by Lukas Stabe on 13/02/2012. * Copyright 2012 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef GENERICGF_H #define GENERICGF_H #include #include namespace zxing { class GenericGFPoly; class GenericGF : public Counted { private: std::vector expTable; std::vector logTable; Ref zero; Ref one; size_t size; int primitive; int generatorBase; bool initialized; GenericGF(int primitive, size_t size, int b); ~GenericGF(); void initialize(); void checkInit(); public: static Ref AZTEC_DATA_12; static Ref AZTEC_DATA_10; static Ref AZTEC_DATA_8; static Ref AZTEC_DATA_6; static Ref AZTEC_PARAM; static Ref QR_CODE_FIELD_256; static Ref DATA_MATRIX_FIELD_256; static Ref MAXICODE_FIELD_64; Ref getZero(); Ref getOne(); size_t getSize(); int getGeneratorBase(); Ref buildMonomial(int degree, int coefficient); static int addOrSubtract(int a, int b); int exp(int a); int log(int a); int inverse(int a); int multiply(int a, int b); }; } #endif //GENERICGF_H yubioath-desktop/QZXing/zxing/zxing/common/reedsolomon/GenericGFPoly.cpp000066400000000000000000000160771412677075700270410ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- /* * GenericGFPoly.cpp * zxing * * Created by Lukas Stabe on 13/02/2012. * Copyright 2012 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include #include using zxing::GenericGFPoly; using zxing::ArrayRef; using zxing::Ref; // VC++ using zxing::GenericGF; GenericGFPoly::GenericGFPoly(GenericGF *field, ArrayRef coefficients) : field_(field) { if (coefficients->size() == 0) { throw IllegalArgumentException("need coefficients"); } int coefficientsLength = coefficients->size(); if (coefficientsLength > 1 && coefficients[0] == 0) { // Leading term must be non-zero for anything except the constant polynomial "0" int firstNonZero = 1; while (firstNonZero < coefficientsLength && coefficients[firstNonZero] == 0) { firstNonZero++; } if (firstNonZero == coefficientsLength) { coefficients_ = field->getZero()->getCoefficients(); } else { coefficients_ = ArrayRef(coefficientsLength-firstNonZero); for (int i = 0; i < (int)coefficients_->size(); i++) { coefficients_[i] = coefficients[i + firstNonZero]; } } } else { coefficients_ = coefficients; } } ArrayRef GenericGFPoly::getCoefficients() { return coefficients_; } int GenericGFPoly::getDegree() { return coefficients_->size() - 1; } bool GenericGFPoly::isZero() { return coefficients_[0] == 0; } int GenericGFPoly::getCoefficient(int degree) { return coefficients_[coefficients_->size() - 1 - degree]; } int GenericGFPoly::evaluateAt(int a) { if (a == 0) { // Just return the x^0 coefficient return getCoefficient(0); } int size = coefficients_->size(); if (a == 1) { // Just the sum of the coefficients int result = 0; for (int i = 0; i < size; i++) { result = GenericGF::addOrSubtract(result, coefficients_[i]); } return result; } int result = coefficients_[0]; for (int i = 1; i < size; i++) { result = GenericGF::addOrSubtract(field_->multiply(a, result), coefficients_[i]); } return result; } Ref GenericGFPoly::addOrSubtract(Ref other) { if (!(field_ == other->field_)) { throw IllegalArgumentException("GenericGFPolys do not have same GenericGF field"); } if (isZero()) { return other; } if (other->isZero()) { return Ref(this); } ArrayRef smallerCoefficients = coefficients_; ArrayRef largerCoefficients = other->getCoefficients(); if (smallerCoefficients->size() > largerCoefficients->size()) { ArrayRef temp = smallerCoefficients; smallerCoefficients = largerCoefficients; largerCoefficients = temp; } ArrayRef sumDiff(largerCoefficients->size()); int lengthDiff = largerCoefficients->size() - smallerCoefficients->size(); // Copy high-order terms only found in higher-degree polynomial's coefficients for (int i = 0; i < lengthDiff; i++) { sumDiff[i] = largerCoefficients[i]; } for (int i = lengthDiff; i < (int)largerCoefficients->size(); i++) { sumDiff[i] = GenericGF::addOrSubtract(smallerCoefficients[i-lengthDiff], largerCoefficients[i]); } return Ref(new GenericGFPoly(field_, sumDiff)); } Ref GenericGFPoly::multiply(Ref other) { if (!(field_ == other->field_)) { throw IllegalArgumentException("GenericGFPolys do not have same GenericGF field"); } if (isZero() || other->isZero()) { return field_->getZero(); } ArrayRef aCoefficients = coefficients_; int aLength = aCoefficients->size(); ArrayRef bCoefficients = other->getCoefficients(); int bLength = bCoefficients->size(); ArrayRef product(aLength + bLength - 1); for (int i = 0; i < aLength; i++) { int aCoeff = aCoefficients[i]; for (int j = 0; j < bLength; j++) { product[i+j] = GenericGF::addOrSubtract(product[i+j], field_->multiply(aCoeff, bCoefficients[j])); } } return Ref(new GenericGFPoly(field_, product)); } Ref GenericGFPoly::multiply(int scalar) { if (scalar == 0) { return field_->getZero(); } if (scalar == 1) { return Ref(this); } int size = coefficients_->size(); ArrayRef product(size); for (int i = 0; i < size; i++) { product[i] = field_->multiply(coefficients_[i], scalar); } return Ref(new GenericGFPoly(field_, product)); } Ref GenericGFPoly::multiplyByMonomial(int degree, int coefficient) { if (degree < 0) { throw IllegalArgumentException("degree must not be less then 0"); } if (coefficient == 0) { return field_->getZero(); } int size = coefficients_->size(); ArrayRef product(size+degree); for (int i = 0; i < size; i++) { product[i] = field_->multiply(coefficients_[i], coefficient); } return Ref(new GenericGFPoly(field_, product)); } std::vector> GenericGFPoly::divide(Ref other) { if (!(field_ == other->field_)) { throw IllegalArgumentException("GenericGFPolys do not have same GenericGF field"); } if (other->isZero()) { throw IllegalArgumentException("divide by 0"); } Ref quotient = field_->getZero(); Ref remainder = Ref(this); int denominatorLeadingTerm = other->getCoefficient(other->getDegree()); int inverseDenominatorLeadingTerm = field_->inverse(denominatorLeadingTerm); while (remainder->getDegree() >= other->getDegree() && !remainder->isZero()) { int degreeDifference = remainder->getDegree() - other->getDegree(); int scale = field_->multiply(remainder->getCoefficient(remainder->getDegree()), inverseDenominatorLeadingTerm); Ref term = other->multiplyByMonomial(degreeDifference, scale); Ref iterationQuotiont = field_->buildMonomial(degreeDifference, scale); quotient = quotient->addOrSubtract(iterationQuotiont); remainder = remainder->addOrSubtract(term); } std::vector > returnValue; returnValue.push_back(quotient); returnValue.push_back(remainder); return returnValue; } yubioath-desktop/QZXing/zxing/zxing/common/reedsolomon/GenericGFPoly.h000066400000000000000000000030621412677075700264740ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- /* * GenericGFPoly.h * zxing * * Created by Lukas Stabe on 13/02/2012. * Copyright 2012 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef GENERICGFPOLY_H #define GENERICGFPOLY_H #include #include #include namespace zxing { class GenericGF; class GenericGFPoly : public Counted { private: GenericGF *field_; ArrayRef coefficients_; public: GenericGFPoly(GenericGF *field, ArrayRef coefficients); ArrayRef getCoefficients(); int getDegree(); bool isZero(); int getCoefficient(int degree); int evaluateAt(int a); Ref addOrSubtract(Ref other); Ref multiply(Ref other); Ref multiply(int scalar); Ref multiplyByMonomial(int degree, int coefficient); std::vector> divide(Ref other); }; } #endif //GENERICGFPOLY_H yubioath-desktop/QZXing/zxing/zxing/common/reedsolomon/ReedSolomonDecoder.cpp000066400000000000000000000141041412677075700301050ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- /* * Created by Christian Brunschen on 05/05/2008. * Copyright 2008 Google UK. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include #include #include #include using std::vector; using zxing::Ref; using zxing::ArrayRef; using zxing::ReedSolomonDecoder; using zxing::GenericGFPoly; using zxing::IllegalStateException; // VC++ using zxing::GenericGF; ReedSolomonDecoder::ReedSolomonDecoder(Ref field_) : field(field_) {} ReedSolomonDecoder::~ReedSolomonDecoder() { } void ReedSolomonDecoder::decode(ArrayRef received, int twoS) { Ref poly(new GenericGFPoly(field, received)); ArrayRef syndromeCoefficients(twoS); bool noError = true; for (int i = 0; i < twoS; i++) { int eval = poly->evaluateAt(field->exp(i + field->getGeneratorBase())); syndromeCoefficients[syndromeCoefficients->size() - 1 - i] = eval; if (eval != 0) { noError = false; } } if (noError) { return; } Ref syndrome(new GenericGFPoly(field, syndromeCoefficients)); vector > sigmaOmega = runEuclideanAlgorithm(field->buildMonomial(twoS, 1), syndrome, twoS); Ref sigma = sigmaOmega[0]; Ref omega = sigmaOmega[1]; ArrayRef errorLocations = findErrorLocations(sigma); ArrayRef errorMagitudes = findErrorMagnitudes(omega, errorLocations); for (int i = 0; i < errorLocations->size(); i++) { int position = received->size() - 1 - field->log(errorLocations[i]); if (position < 0) { throw ReedSolomonException("Bad error location"); } received[position] = GenericGF::addOrSubtract(received[position], errorMagitudes[i]); } } vector > ReedSolomonDecoder::runEuclideanAlgorithm(Ref a, Ref b, int R) { // Assume a's degree is >= b's if (a->getDegree() < b->getDegree()) { Ref tmp = a; a = b; b = tmp; } Ref rLast(a); Ref r(b); Ref tLast(field->getZero()); Ref t(field->getOne()); // Run Euclidean algorithm until r's degree is less than R/2 while (r->getDegree() >= R / 2) { Ref rLastLast(rLast); Ref tLastLast(tLast); rLast = r; tLast = t; // Divide rLastLast by rLast, with quotient q and remainder r if (rLast->isZero()) { // Oops, Euclidean algorithm already terminated? throw ReedSolomonException("r_{i-1} was zero"); } r = rLastLast; Ref q = field->getZero(); int denominatorLeadingTerm = rLast->getCoefficient(rLast->getDegree()); int dltInverse = field->inverse(denominatorLeadingTerm); while (r->getDegree() >= rLast->getDegree() && !r->isZero()) { int degreeDiff = r->getDegree() - rLast->getDegree(); int scale = field->multiply(r->getCoefficient(r->getDegree()), dltInverse); q = q->addOrSubtract(field->buildMonomial(degreeDiff, scale)); r = r->addOrSubtract(rLast->multiplyByMonomial(degreeDiff, scale)); } t = q->multiply(tLast)->addOrSubtract(tLastLast); if (r->getDegree() >= rLast->getDegree()) { throw IllegalStateException("Division algorithm failed to reduce polynomial?"); } } int sigmaTildeAtZero = t->getCoefficient(0); if (sigmaTildeAtZero == 0) { throw ReedSolomonException("sigmaTilde(0) was zero"); } int inverse = field->inverse(sigmaTildeAtZero); Ref sigma(t->multiply(inverse)); Ref omega(r->multiply(inverse)); vector > result(2); result[0] = sigma; result[1] = omega; return result; } ArrayRef ReedSolomonDecoder::findErrorLocations(Ref errorLocator) { // This is a direct application of Chien's search int numErrors = errorLocator->getDegree(); if (numErrors == 1) { // shortcut ArrayRef result(new Array(1)); result[0] = errorLocator->getCoefficient(1); return result; } ArrayRef result(new Array(numErrors)); int e = 0; for (size_t i = 1; i < field->getSize() && e < numErrors; i++) { if (errorLocator->evaluateAt(i) == 0) { result[e] = field->inverse(i); e++; } } if (e != numErrors) { throw ReedSolomonException("Error locator degree does not match number of roots"); } return result; } ArrayRef ReedSolomonDecoder::findErrorMagnitudes(Ref errorEvaluator, ArrayRef errorLocations) { // This is directly applying Forney's Formula int s = errorLocations->size(); ArrayRef result(new Array(s)); for (int i = 0; i < s; i++) { int xiInverse = field->inverse(errorLocations[i]); int denominator = 1; for (int j = 0; j < s; j++) { if (i != j) { int term = field->multiply(errorLocations[j], xiInverse); int termPlus1 = (term & 0x1) == 0 ? term | 1 : term & ~1; denominator = field->multiply(denominator, termPlus1); } } result[i] = field->multiply(errorEvaluator->evaluateAt(xiInverse), field->inverse(denominator)); if (field->getGeneratorBase() != 0) { result[i] = field->multiply(result[i], xiInverse); } } return result; } yubioath-desktop/QZXing/zxing/zxing/common/reedsolomon/ReedSolomonDecoder.h000066400000000000000000000027511412677075700275570ustar00rootroot00000000000000#ifndef ZXING_REED_SOLOMON_DECODER_H #define ZXING_REED_SOLOMON_DECODER_H /* * ReedSolomonDecoder.h * zxing * * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include #include #include #include namespace zxing { class GenericGFPoly; class GenericGF; class ReedSolomonDecoder { private: Ref field; public: ReedSolomonDecoder(Ref fld); ~ReedSolomonDecoder(); void decode(ArrayRef received, int twoS); std::vector > runEuclideanAlgorithm(Ref a, Ref b, int R); private: ArrayRef findErrorLocations(Ref errorLocator); ArrayRef findErrorMagnitudes(Ref errorEvaluator, ArrayRef errorLocations); }; } #endif // ZXING_REED_SOLOMON_DECODER_H yubioath-desktop/QZXing/zxing/zxing/common/reedsolomon/ReedSolomonEncoder.cpp000066400000000000000000000046461412677075700301310ustar00rootroot00000000000000#include "ReedSolomonEncoder.h" #include #include #include namespace zxing { ReedSolomonEncoder::ReedSolomonEncoder(Ref field) : field_(field), cachedGenerators_() { ArrayRef arrayRef(1); //will this work? arrayRef[0] = 1; Ref< GenericGFPoly > tmpGeneratorRef(new GenericGFPoly(field, arrayRef)); cachedGenerators_.push_back(tmpGeneratorRef); } Ref ReedSolomonEncoder::buildGenerator(int degree) { if (degree >= int(cachedGenerators_.size())) { Ref lastGenerator = cachedGenerators_.at(cachedGenerators_.size() - 1); for (int d = int(cachedGenerators_.size()); d <= degree; d++) { ArrayRef arrayRef(2); //will this work? arrayRef[0] = 1; arrayRef[1] = field_->exp(d - 1 + field_->getGeneratorBase()); Ref tmpGFRef(new GenericGFPoly(field_, arrayRef)); Ref nextGenerator = (*lastGenerator).multiply(tmpGFRef); cachedGenerators_.push_back(nextGenerator); lastGenerator = nextGenerator; } } // ??? wont this through exception? // No the elements up to index degree are added above return cachedGenerators_.at(size_t(degree)); } void ReedSolomonEncoder::encode(std::vector &toEncode, int ecBytes) { if (ecBytes == 0) { throw Exception("No error correction bytes"); } int dataBytes = int(toEncode.size());// - ecBytes; toEncode.resize(toEncode.size() + size_t(ecBytes)); if (dataBytes <= 0) { throw Exception("No data bytes provided"); } Ref generator = buildGenerator(ecBytes); ArrayRef infoCoefficients(dataBytes); //to-do optimize the following loop for(int i=0; i< dataBytes; i++) infoCoefficients[i] = toEncode[size_t(i)]; Ref info(new GenericGFPoly(field_, infoCoefficients)); info = info->multiplyByMonomial(ecBytes, 1); Ref remainder = info->divide(generator)[1]; ArrayRef coefficients = remainder->getCoefficients(); int numZeroCoefficients = ecBytes - coefficients->size(); for (int i = 0; i < numZeroCoefficients; i++) { toEncode[size_t(dataBytes + i)] = 0; } for (int i = 0; i < coefficients->size(); i++) toEncode[size_t(dataBytes + numZeroCoefficients + i)] = zxing::byte(coefficients[i]); } } yubioath-desktop/QZXing/zxing/zxing/common/reedsolomon/ReedSolomonEncoder.h000066400000000000000000000011001412677075700275540ustar00rootroot00000000000000#ifndef REEDSOLOMONENCODER_H #define REEDSOLOMONENCODER_H #include #include #include #include namespace zxing { class ReedSolomonEncoder { private: Ref field_; std::vector< Ref< GenericGFPoly > >cachedGenerators_; Ref buildGenerator(int degree); public: ReedSolomonEncoder(Ref field); void encode(std::vector &toEncode, int ecBytes); }; } #endif // REEDSOLOMONENCODER_H yubioath-desktop/QZXing/zxing/zxing/common/reedsolomon/ReedSolomonException.cpp000066400000000000000000000016741412677075700305060ustar00rootroot00000000000000/* * ReedSolomonException.cpp * zxing * * Created by Christian Brunschen on 06/05/2008. * Copyright 2008 Google UK. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include namespace zxing { ReedSolomonException::ReedSolomonException(const char *msg) ZXING_NOEXCEPT : Exception(msg) { } ReedSolomonException::~ReedSolomonException() ZXING_NOEXCEPT { } } yubioath-desktop/QZXing/zxing/zxing/common/reedsolomon/ReedSolomonException.h000066400000000000000000000017351412677075700301510ustar00rootroot00000000000000#ifndef ZXING_REED_SOLOMON_EXCEPTION_H #define ZXING_REED_SOLOMON_EXCEPTION_H /* * ReedSolomonException.h * zxing * * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include namespace zxing { class ReedSolomonException : public Exception { public: ReedSolomonException(const char *msg) ZXING_NOEXCEPT; ~ReedSolomonException() ZXING_NOEXCEPT; }; } #endif // ZXING_REED_SOLOMON_EXCEPTION_H yubioath-desktop/QZXing/zxing/zxing/datamatrix/000077500000000000000000000000001412677075700222055ustar00rootroot00000000000000yubioath-desktop/QZXing/zxing/zxing/datamatrix/DataMatrixReader.cpp000066400000000000000000000030331412677075700260710ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- /* * DataMatrixReader.cpp * zxing * * Created by Luiz Silva on 09/02/2010. * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include namespace zxing { namespace datamatrix { using namespace std; DataMatrixReader::DataMatrixReader() : decoder_() { } Ref DataMatrixReader::decode(Ref image, DecodeHints hints) { (void)hints; Detector detector(image->getBlackMatrix()); Ref detectorResult(detector.detect()); ArrayRef< Ref > points(detectorResult->getPoints()); Ref decoderResult(decoder_.decode(detectorResult->getBits())); Ref result( new Result(decoderResult->getText(), decoderResult->getRawBytes(), points, BarcodeFormat::DATA_MATRIX)); return result; } DataMatrixReader::~DataMatrixReader() { } } } yubioath-desktop/QZXing/zxing/zxing/datamatrix/DataMatrixReader.h000066400000000000000000000022201412677075700255330ustar00rootroot00000000000000#ifndef ZXING_DATA_MATRIX_READER_H #define ZXING_DATA_MATRIX_READER_H /* * DataMatrixReader.h * zxing * * Created by Luiz Silva on 09/02/2010. * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include namespace zxing { namespace datamatrix { class DataMatrixReader : public Reader { private: Decoder decoder_; public: DataMatrixReader(); virtual Ref decode(Ref image, DecodeHints hints); virtual ~DataMatrixReader(); }; } } #endif // ZXING_DATA_MATRIX_READER_H yubioath-desktop/QZXing/zxing/zxing/datamatrix/DataMatrixVersion.cpp000066400000000000000000000173371412677075700263300ustar00rootroot00000000000000/* * Version.cpp * zxing * * Created by Luiz Silva on 09/02/2010. * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include namespace zxing { namespace datamatrix { using namespace std; ECB::ECB(int count, int dataCodewords) : count_(count), dataCodewords_(dataCodewords) { } int ECB::getCount() { return count_; } int ECB::getDataCodewords() { return dataCodewords_; } ECBlocks::ECBlocks(int ecCodewords, ECB *ecBlocks) : ecCodewords_(ecCodewords), ecBlocks_(1, ecBlocks) { } ECBlocks::ECBlocks(int ecCodewords, ECB *ecBlocks1, ECB *ecBlocks2) : ecCodewords_(ecCodewords), ecBlocks_(1, ecBlocks1) { ecBlocks_.push_back(ecBlocks2); } int ECBlocks::getECCodewords() { return ecCodewords_; } std::vector& ECBlocks::getECBlocks() { return ecBlocks_; } ECBlocks::~ECBlocks() { for (size_t i = 0; i < ecBlocks_.size(); i++) { delete ecBlocks_[i]; } } vector> Version::VERSIONS; static int N_VERSIONS = Version::buildVersions(); Version::Version(int versionNumber, int symbolSizeRows, int symbolSizeColumns, int dataRegionSizeRows, int dataRegionSizeColumns, ECBlocks* ecBlocks) : versionNumber_(versionNumber), symbolSizeRows_(symbolSizeRows), symbolSizeColumns_(symbolSizeColumns), dataRegionSizeRows_(dataRegionSizeRows), dataRegionSizeColumns_(dataRegionSizeColumns), ecBlocks_(ecBlocks), totalCodewords_(0) { // Calculate the total number of codewords int total = 0; int ecCodewords = ecBlocks_->getECCodewords(); vector &ecbArray = ecBlocks_->getECBlocks(); for (unsigned int i = 0; i < ecbArray.size(); i++) { ECB *ecBlock = ecbArray[i]; total += ecBlock->getCount() * (ecBlock->getDataCodewords() + ecCodewords); } totalCodewords_ = total; } Version::~Version() { delete ecBlocks_; } int Version::getVersionNumber() const { return versionNumber_; } int Version::getSymbolSizeRows() const { return symbolSizeRows_; } int Version::getSymbolSizeColumns() const { return symbolSizeColumns_; } int Version::getDataRegionSizeRows() const { return dataRegionSizeRows_; } int Version::getDataRegionSizeColumns() const { return dataRegionSizeColumns_; } int Version::getTotalCodewords() const { return totalCodewords_; } ECBlocks* Version::getECBlocks() const { return ecBlocks_; } Ref Version::getVersionForDimensions(int numRows, int numColumns) { if ((numRows & 0x01) != 0 || (numColumns & 0x01) != 0) { throw ReaderException("Number of rows and columns must be even"); } // TODO(bbrown): This is doing a linear search through the array of versions. // If we interleave the rectangular versions with the square versions we could // do a binary search. for (int i = 0; i < N_VERSIONS; ++i){ Ref version = VERSIONS[i]; if (version->getSymbolSizeRows() == numRows && version->getSymbolSizeColumns() == numColumns) { return version; } } throw ReaderException("Error version not found"); } /** * See ISO 16022:2006 5.5.1 Table 7 */ int Version::buildVersions() { VERSIONS.push_back(Ref(new Version(1, 10, 10, 8, 8, new ECBlocks(5, new ECB(1, 3))))); VERSIONS.push_back(Ref(new Version(2, 12, 12, 10, 10, new ECBlocks(7, new ECB(1, 5))))); VERSIONS.push_back(Ref(new Version(3, 14, 14, 12, 12, new ECBlocks(10, new ECB(1, 8))))); VERSIONS.push_back(Ref(new Version(4, 16, 16, 14, 14, new ECBlocks(12, new ECB(1, 12))))); VERSIONS.push_back(Ref(new Version(5, 18, 18, 16, 16, new ECBlocks(14, new ECB(1, 18))))); VERSIONS.push_back(Ref(new Version(6, 20, 20, 18, 18, new ECBlocks(18, new ECB(1, 22))))); VERSIONS.push_back(Ref(new Version(7, 22, 22, 20, 20, new ECBlocks(20, new ECB(1, 30))))); VERSIONS.push_back(Ref(new Version(8, 24, 24, 22, 22, new ECBlocks(24, new ECB(1, 36))))); VERSIONS.push_back(Ref(new Version(9, 26, 26, 24, 24, new ECBlocks(28, new ECB(1, 44))))); VERSIONS.push_back(Ref(new Version(10, 32, 32, 14, 14, new ECBlocks(36, new ECB(1, 62))))); VERSIONS.push_back(Ref(new Version(11, 36, 36, 16, 16, new ECBlocks(42, new ECB(1, 86))))); VERSIONS.push_back(Ref(new Version(12, 40, 40, 18, 18, new ECBlocks(48, new ECB(1, 114))))); VERSIONS.push_back(Ref(new Version(13, 44, 44, 20, 20, new ECBlocks(56, new ECB(1, 144))))); VERSIONS.push_back(Ref(new Version(14, 48, 48, 22, 22, new ECBlocks(68, new ECB(1, 174))))); VERSIONS.push_back(Ref(new Version(15, 52, 52, 24, 24, new ECBlocks(42, new ECB(2, 102))))); VERSIONS.push_back(Ref(new Version(16, 64, 64, 14, 14, new ECBlocks(56, new ECB(2, 140))))); VERSIONS.push_back(Ref(new Version(17, 72, 72, 16, 16, new ECBlocks(36, new ECB(4, 92))))); VERSIONS.push_back(Ref(new Version(18, 80, 80, 18, 18, new ECBlocks(48, new ECB(4, 114))))); VERSIONS.push_back(Ref(new Version(19, 88, 88, 20, 20, new ECBlocks(56, new ECB(4, 144))))); VERSIONS.push_back(Ref(new Version(20, 96, 96, 22, 22, new ECBlocks(68, new ECB(4, 174))))); VERSIONS.push_back(Ref(new Version(21, 104, 104, 24, 24, new ECBlocks(56, new ECB(6, 136))))); VERSIONS.push_back(Ref(new Version(22, 120, 120, 18, 18, new ECBlocks(68, new ECB(6, 175))))); VERSIONS.push_back(Ref(new Version(23, 132, 132, 20, 20, new ECBlocks(62, new ECB(8, 163))))); VERSIONS.push_back(Ref(new Version(24, 144, 144, 22, 22, new ECBlocks(62, new ECB(8, 156), new ECB(2, 155))))); VERSIONS.push_back(Ref(new Version(25, 8, 18, 6, 16, new ECBlocks(7, new ECB(1, 5))))); VERSIONS.push_back(Ref(new Version(26, 8, 32, 6, 14, new ECBlocks(11, new ECB(1, 10))))); VERSIONS.push_back(Ref(new Version(27, 12, 26, 10, 24, new ECBlocks(14, new ECB(1, 16))))); VERSIONS.push_back(Ref(new Version(28, 12, 36, 10, 16, new ECBlocks(18, new ECB(1, 22))))); VERSIONS.push_back(Ref(new Version(29, 16, 36, 14, 16, new ECBlocks(24, new ECB(1, 32))))); VERSIONS.push_back(Ref(new Version(30, 16, 48, 14, 22, new ECBlocks(28, new ECB(1, 49))))); return int(VERSIONS.size()); } } } yubioath-desktop/QZXing/zxing/zxing/datamatrix/Version.h000066400000000000000000000042471412677075700240120ustar00rootroot00000000000000#ifndef ZXING_VERSION_H #define ZXING_VERSION_H /* * Version.h * zxing * * Created by Luiz Silva on 09/02/2010. * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include #include namespace zxing { namespace datamatrix { class ECB { private: int count_; int dataCodewords_; public: ECB(int count, int dataCodewords); int getCount(); int getDataCodewords(); }; class ECBlocks { private: int ecCodewords_; std::vector ecBlocks_; public: ECBlocks(int ecCodewords, ECB *ecBlocks); ECBlocks(int ecCodewords, ECB *ecBlocks1, ECB *ecBlocks2); int getECCodewords(); std::vector& getECBlocks(); ~ECBlocks(); }; class Version : public Counted { private: int versionNumber_; int symbolSizeRows_; int symbolSizeColumns_; int dataRegionSizeRows_; int dataRegionSizeColumns_; ECBlocks* ecBlocks_; int totalCodewords_; Version(int versionNumber, int symbolSizeRows, int symbolSizeColumns, int dataRegionSizeRows, int dataRegionSizeColumns, ECBlocks *ecBlocks); public: static std::vector> VERSIONS; ~Version(); int getVersionNumber() const; int getSymbolSizeRows() const; int getSymbolSizeColumns() const; int getDataRegionSizeRows() const; int getDataRegionSizeColumns() const; int getTotalCodewords() const; ECBlocks* getECBlocks() const; static int buildVersions(); RefgetVersionForDimensions(int numRows, int numColumns); private: Version(const Version&); Version & operator=(const Version&); }; } } #endif // ZXING_VERSION_H yubioath-desktop/QZXing/zxing/zxing/datamatrix/decoder/000077500000000000000000000000001412677075700236125ustar00rootroot00000000000000yubioath-desktop/QZXing/zxing/zxing/datamatrix/decoder/BitMatrixParser.h000066400000000000000000000033661412677075700270530ustar00rootroot00000000000000#ifndef ZXING_BIT_MATRIX_PARSER_DM_H #define ZXING_BIT_MATRIX_PARSER_DM_H /* * BitMatrixParser.h * zxing * * Created by Luiz Silva on 09/02/2010. * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include #include #include namespace zxing { namespace datamatrix { class BitMatrixParser : public Counted { private: Ref bitMatrix_; Ref parsedVersion_; Ref readBitMatrix_; int copyBit(size_t x, size_t y, int versionBits); public: BitMatrixParser(Ref bitMatrix); Ref readVersion(Ref bitMatrix); ArrayRef readCodewords(); bool readModule(int row, int column, int numRows, int numColumns); private: int readUtah(int row, int column, int numRows, int numColumns); int readCorner1(int numRows, int numColumns); int readCorner2(int numRows, int numColumns); int readCorner3(int numRows, int numColumns); int readCorner4(int numRows, int numColumns); Ref extractDataRegion(Ref bitMatrix); }; } } #endif // ZXING_BIT_MATRIX_PARSER_DM_H yubioath-desktop/QZXing/zxing/zxing/datamatrix/decoder/DataBlock.h000066400000000000000000000024531412677075700256130ustar00rootroot00000000000000#ifndef ZXING_DATA_BLOCK_DM_H #define ZXING_DATA_BLOCK_DM_H /* * DataBlock.h * zxing * * Created by Luiz Silva on 09/02/2010. * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include #include namespace zxing { namespace datamatrix { class DataBlock : public Counted { private: int numDataCodewords_; ArrayRef codewords_; DataBlock(int numDataCodewords, ArrayRef codewords); public: static std::vector > getDataBlocks(ArrayRef rawCodewords, Refversion); int getNumDataCodewords(); ArrayRef getCodewords(); }; } } #endif // ZXING_DATA_BLOCK_DM_H yubioath-desktop/QZXing/zxing/zxing/datamatrix/decoder/DataMatrixBitMatrixParser.cpp000066400000000000000000000271221412677075700313610ustar00rootroot00000000000000/* * BitMatrixParser.cpp * zxing * * Created by Luiz Silva on 09/02/2010. * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include namespace zxing { namespace datamatrix { int BitMatrixParser::copyBit(size_t x, size_t y, int versionBits) { return bitMatrix_->get(int(x), int(y)) ? (versionBits << 1) | 0x1 : versionBits << 1; } BitMatrixParser::BitMatrixParser(Ref bitMatrix) : bitMatrix_(NULL), parsedVersion_(NULL), readBitMatrix_(NULL) { size_t dimension = bitMatrix->getHeight(); if (dimension < 8 || dimension > 144 || (dimension & 0x01) != 0) throw ReaderException("Dimension must be even, > 8 < 144"); parsedVersion_ = readVersion(bitMatrix); bitMatrix_ = extractDataRegion(bitMatrix); readBitMatrix_ = new BitMatrix(bitMatrix_->getWidth(), bitMatrix_->getHeight()); } Ref BitMatrixParser::readVersion(Ref bitMatrix) { if (parsedVersion_ != 0) { return parsedVersion_; } int numRows = bitMatrix->getHeight(); int numColumns = bitMatrix->getWidth(); Ref version = parsedVersion_->getVersionForDimensions(numRows, numColumns); if (version != 0) { return version; } throw ReaderException("Couldn't decode version"); } ArrayRef BitMatrixParser::readCodewords() { ArrayRef result(parsedVersion_->getTotalCodewords()); int resultOffset = 0; int row = 4; int column = 0; int numRows = bitMatrix_->getHeight(); int numColumns = bitMatrix_->getWidth(); bool corner1Read = false; bool corner2Read = false; bool corner3Read = false; bool corner4Read = false; // Read all of the codewords do { // Check the four corner cases if ((row == numRows) && (column == 0) && !corner1Read) { result[resultOffset++] = (zxing::byte) readCorner1(numRows, numColumns); row -= 2; column +=2; corner1Read = true; } else if ((row == numRows-2) && (column == 0) && ((numColumns & 0x03) != 0) && !corner2Read) { result[resultOffset++] = (zxing::byte) readCorner2(numRows, numColumns); row -= 2; column +=2; corner2Read = true; } else if ((row == numRows+4) && (column == 2) && ((numColumns & 0x07) == 0) && !corner3Read) { result[resultOffset++] = (zxing::byte) readCorner3(numRows, numColumns); row -= 2; column +=2; corner3Read = true; } else if ((row == numRows-2) && (column == 0) && ((numColumns & 0x07) == 4) && !corner4Read) { result[resultOffset++] = (zxing::byte) readCorner4(numRows, numColumns); row -= 2; column +=2; corner4Read = true; } else { // Sweep upward diagonally to the right do { if ((row < numRows) && (column >= 0) && !readBitMatrix_->get(column, row)) { result[resultOffset++] = (zxing::byte) readUtah(row, column, numRows, numColumns); } row -= 2; column +=2; } while ((row >= 0) && (column < numColumns)); row += 1; column +=3; // Sweep downward diagonally to the left do { if ((row >= 0) && (column < numColumns) && !readBitMatrix_->get(column, row)) { result[resultOffset++] = (zxing::byte) readUtah(row, column, numRows, numColumns); } row += 2; column -=2; } while ((row < numRows) && (column >= 0)); row += 3; column +=1; } } while ((row < numRows) || (column < numColumns)); if (resultOffset != parsedVersion_->getTotalCodewords()) { throw ReaderException("Did not read all codewords"); } return result; } bool BitMatrixParser::readModule(int row, int column, int numRows, int numColumns) { // Adjust the row and column indices based on boundary wrapping if (row < 0) { row += numRows; column += 4 - ((numRows + 4) & 0x07); } if (column < 0) { column += numColumns; row += 4 - ((numColumns + 4) & 0x07); } readBitMatrix_->set(column, row); return bitMatrix_->get(column, row); } int BitMatrixParser::readUtah(int row, int column, int numRows, int numColumns) { int currentByte = 0; if (readModule(row - 2, column - 2, numRows, numColumns)) { currentByte |= 1; } currentByte <<= 1; if (readModule(row - 2, column - 1, numRows, numColumns)) { currentByte |= 1; } currentByte <<= 1; if (readModule(row - 1, column - 2, numRows, numColumns)) { currentByte |= 1; } currentByte <<= 1; if (readModule(row - 1, column - 1, numRows, numColumns)) { currentByte |= 1; } currentByte <<= 1; if (readModule(row - 1, column, numRows, numColumns)) { currentByte |= 1; } currentByte <<= 1; if (readModule(row, column - 2, numRows, numColumns)) { currentByte |= 1; } currentByte <<= 1; if (readModule(row, column - 1, numRows, numColumns)) { currentByte |= 1; } currentByte <<= 1; if (readModule(row, column, numRows, numColumns)) { currentByte |= 1; } return currentByte; } int BitMatrixParser::readCorner1(int numRows, int numColumns) { int currentByte = 0; if (readModule(numRows - 1, 0, numRows, numColumns)) { currentByte |= 1; } currentByte <<= 1; if (readModule(numRows - 1, 1, numRows, numColumns)) { currentByte |= 1; } currentByte <<= 1; if (readModule(numRows - 1, 2, numRows, numColumns)) { currentByte |= 1; } currentByte <<= 1; if (readModule(0, numColumns - 2, numRows, numColumns)) { currentByte |= 1; } currentByte <<= 1; if (readModule(0, numColumns - 1, numRows, numColumns)) { currentByte |= 1; } currentByte <<= 1; if (readModule(1, numColumns - 1, numRows, numColumns)) { currentByte |= 1; } currentByte <<= 1; if (readModule(2, numColumns - 1, numRows, numColumns)) { currentByte |= 1; } currentByte <<= 1; if (readModule(3, numColumns - 1, numRows, numColumns)) { currentByte |= 1; } return currentByte; } int BitMatrixParser::readCorner2(int numRows, int numColumns) { int currentByte = 0; if (readModule(numRows - 3, 0, numRows, numColumns)) { currentByte |= 1; } currentByte <<= 1; if (readModule(numRows - 2, 0, numRows, numColumns)) { currentByte |= 1; } currentByte <<= 1; if (readModule(numRows - 1, 0, numRows, numColumns)) { currentByte |= 1; } currentByte <<= 1; if (readModule(0, numColumns - 4, numRows, numColumns)) { currentByte |= 1; } currentByte <<= 1; if (readModule(0, numColumns - 3, numRows, numColumns)) { currentByte |= 1; } currentByte <<= 1; if (readModule(0, numColumns - 2, numRows, numColumns)) { currentByte |= 1; } currentByte <<= 1; if (readModule(0, numColumns - 1, numRows, numColumns)) { currentByte |= 1; } currentByte <<= 1; if (readModule(1, numColumns - 1, numRows, numColumns)) { currentByte |= 1; } return currentByte; } int BitMatrixParser::readCorner3(int numRows, int numColumns) { int currentByte = 0; if (readModule(numRows - 1, 0, numRows, numColumns)) { currentByte |= 1; } currentByte <<= 1; if (readModule(numRows - 1, numColumns - 1, numRows, numColumns)) { currentByte |= 1; } currentByte <<= 1; if (readModule(0, numColumns - 3, numRows, numColumns)) { currentByte |= 1; } currentByte <<= 1; if (readModule(0, numColumns - 2, numRows, numColumns)) { currentByte |= 1; } currentByte <<= 1; if (readModule(0, numColumns - 1, numRows, numColumns)) { currentByte |= 1; } currentByte <<= 1; if (readModule(1, numColumns - 3, numRows, numColumns)) { currentByte |= 1; } currentByte <<= 1; if (readModule(1, numColumns - 2, numRows, numColumns)) { currentByte |= 1; } currentByte <<= 1; if (readModule(1, numColumns - 1, numRows, numColumns)) { currentByte |= 1; } return currentByte; } int BitMatrixParser::readCorner4(int numRows, int numColumns) { int currentByte = 0; if (readModule(numRows - 3, 0, numRows, numColumns)) { currentByte |= 1; } currentByte <<= 1; if (readModule(numRows - 2, 0, numRows, numColumns)) { currentByte |= 1; } currentByte <<= 1; if (readModule(numRows - 1, 0, numRows, numColumns)) { currentByte |= 1; } currentByte <<= 1; if (readModule(0, numColumns - 2, numRows, numColumns)) { currentByte |= 1; } currentByte <<= 1; if (readModule(0, numColumns - 1, numRows, numColumns)) { currentByte |= 1; } currentByte <<= 1; if (readModule(1, numColumns - 1, numRows, numColumns)) { currentByte |= 1; } currentByte <<= 1; if (readModule(2, numColumns - 1, numRows, numColumns)) { currentByte |= 1; } currentByte <<= 1; if (readModule(3, numColumns - 1, numRows, numColumns)) { currentByte |= 1; } return currentByte; } Ref BitMatrixParser::extractDataRegion(Ref bitMatrix) { int symbolSizeRows = parsedVersion_->getSymbolSizeRows(); int symbolSizeColumns = parsedVersion_->getSymbolSizeColumns(); if ((int)bitMatrix->getHeight() != symbolSizeRows) { throw IllegalArgumentException("Dimension of bitMatrix must match the version size"); } int dataRegionSizeRows = parsedVersion_->getDataRegionSizeRows(); int dataRegionSizeColumns = parsedVersion_->getDataRegionSizeColumns(); int numDataRegionsRow = symbolSizeRows / dataRegionSizeRows; int numDataRegionsColumn = symbolSizeColumns / dataRegionSizeColumns; int sizeDataRegionRow = numDataRegionsRow * dataRegionSizeRows; int sizeDataRegionColumn = numDataRegionsColumn * dataRegionSizeColumns; Ref bitMatrixWithoutAlignment(new BitMatrix(sizeDataRegionColumn, sizeDataRegionRow)); for (int dataRegionRow = 0; dataRegionRow < numDataRegionsRow; ++dataRegionRow) { int dataRegionRowOffset = dataRegionRow * dataRegionSizeRows; for (int dataRegionColumn = 0; dataRegionColumn < numDataRegionsColumn; ++dataRegionColumn) { int dataRegionColumnOffset = dataRegionColumn * dataRegionSizeColumns; for (int i = 0; i < dataRegionSizeRows; ++i) { int readRowOffset = dataRegionRow * (dataRegionSizeRows + 2) + 1 + i; int writeRowOffset = dataRegionRowOffset + i; for (int j = 0; j < dataRegionSizeColumns; ++j) { int readColumnOffset = dataRegionColumn * (dataRegionSizeColumns + 2) + 1 + j; if (bitMatrix->get(readColumnOffset, readRowOffset)) { int writeColumnOffset = dataRegionColumnOffset + j; bitMatrixWithoutAlignment->set(writeColumnOffset, writeRowOffset); } } } } } return bitMatrixWithoutAlignment; } } } yubioath-desktop/QZXing/zxing/zxing/datamatrix/decoder/DataMatrixDataBlock.cpp000066400000000000000000000077241412677075700301330ustar00rootroot00000000000000/* * DataBlock.cpp * zxing * * Created by Luiz Silva on 09/02/2010. * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include namespace zxing { namespace datamatrix { using namespace std; DataBlock::DataBlock(int numDataCodewords, ArrayRef codewords) : numDataCodewords_(numDataCodewords), codewords_(codewords) { } int DataBlock::getNumDataCodewords() { return numDataCodewords_; } ArrayRef DataBlock::getCodewords() { return codewords_; } std::vector > DataBlock::getDataBlocks(ArrayRef rawCodewords, Refversion) { // Figure out the number and size of data blocks used by this version and // error correction level ECBlocks* ecBlocks = version->getECBlocks(); // First count the total number of data blocks int totalBlocks = 0; vector ecBlockArray = ecBlocks->getECBlocks(); for (size_t i = 0; i < ecBlockArray.size(); i++) { totalBlocks += ecBlockArray[i]->getCount(); } // Now establish DataBlocks of the appropriate size and number of data codewords std::vector > result(totalBlocks); int numResultBlocks = 0; for (size_t j = 0; j < ecBlockArray.size(); j++) { ECB *ecBlock = ecBlockArray[j]; for (int i = 0; i < ecBlock->getCount(); i++) { int numDataCodewords = ecBlock->getDataCodewords(); int numBlockCodewords = ecBlocks->getECCodewords() + numDataCodewords; ArrayRef buffer(numBlockCodewords); Ref blockRef(new DataBlock(numDataCodewords, buffer)); result[numResultBlocks++] = blockRef; } } // All blocks have the same amount of data, except that the last n // (where n may be 0) have 1 more byte. Figure out where these start. int shorterBlocksTotalCodewords = result[0]->codewords_->size(); int longerBlocksStartAt = int(result.size()) - 1; while (longerBlocksStartAt >= 0) { int numCodewords = result[longerBlocksStartAt]->codewords_->size(); if (numCodewords == shorterBlocksTotalCodewords) { break; } if (numCodewords != shorterBlocksTotalCodewords + 1) { throw IllegalArgumentException("Data block sizes differ by more than 1"); } longerBlocksStartAt--; } longerBlocksStartAt++; int shorterBlocksNumDataCodewords = shorterBlocksTotalCodewords - ecBlocks->getECCodewords(); // The last elements of result may be 1 element longer; // first fill out as many elements as all of them have int rawCodewordsOffset = 0; for (int i = 0; i < shorterBlocksNumDataCodewords; i++) { for (int j = 0; j < numResultBlocks; j++) { result[j]->codewords_[i] = rawCodewords[rawCodewordsOffset++]; } } // Fill out the last data block in the longer ones for (int j = longerBlocksStartAt; j < numResultBlocks; j++) { result[j]->codewords_[shorterBlocksNumDataCodewords] = rawCodewords[rawCodewordsOffset++]; } // Now add in error correction blocks int max = result[0]->codewords_->size(); for (int i = shorterBlocksNumDataCodewords; i < max; i++) { for (int j = 0; j < numResultBlocks; j++) { int iOffset = j < longerBlocksStartAt ? i : i + 1; result[j]->codewords_[iOffset] = rawCodewords[rawCodewordsOffset++]; } } if (rawCodewordsOffset != rawCodewords->size()) { throw IllegalArgumentException("rawCodewordsOffset != rawCodewords.length"); } return result; } } } yubioath-desktop/QZXing/zxing/zxing/datamatrix/decoder/DataMatrixDecodedBitStreamParser.cpp000066400000000000000000000333221412677075700326170ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- /* * DecodedBitStreamParser.cpp * zxing * * Created by Luiz Silva on 09/02/2010. * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include #include namespace zxing { namespace datamatrix { using namespace std; const char DecodedBitStreamParser::C40_BASIC_SET_CHARS[] = { '*', '*', '*', ' ', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' }; const char DecodedBitStreamParser::C40_SHIFT2_SET_CHARS[] = { '!', '"', '#', '$', '%', '&', '\'', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '@', '[', '\\', ']', '^', '_' }; const char DecodedBitStreamParser::TEXT_BASIC_SET_CHARS[] = { '*', '*', '*', ' ', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z' }; const char DecodedBitStreamParser::TEXT_SHIFT3_SET_CHARS[] = { '\'', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '{', '|', '}', '~', (zxing::byte) 127 }; Ref DecodedBitStreamParser::decode(ArrayRef bytes) { Ref bits(new BitSource(bytes)); ostringstream result; ostringstream resultTrailer; vector byteSegments; int mode = ASCII_ENCODE; do { if (mode == ASCII_ENCODE) { mode = decodeAsciiSegment(bits, result, resultTrailer); } else { switch (mode) { case C40_ENCODE: decodeC40Segment(bits, result); break; case TEXT_ENCODE: decodeTextSegment(bits, result); break; case ANSIX12_ENCODE: decodeAnsiX12Segment(bits, result); break; case EDIFACT_ENCODE: decodeEdifactSegment(bits, result); break; case BASE256_ENCODE: decodeBase256Segment(bits, result, byteSegments); break; default: throw FormatException("Unsupported mode indicator"); } mode = ASCII_ENCODE; } } while (mode != PAD_ENCODE && bits->available() > 0); if (resultTrailer.str().size() > 0) { result << resultTrailer.str(); } ArrayRef rawBytes(bytes); Ref text(new String(result.str())); return Ref(new DecoderResult(rawBytes, text)); } int DecodedBitStreamParser::decodeAsciiSegment(Ref bits, ostringstream & result, ostringstream & resultTrailer) { bool upperShift = false; do { int oneByte = bits->readBits(8); if (oneByte == 0) { throw FormatException("Not enough bits to decode"); } else if (oneByte <= 128) { // ASCII data (ASCII value + 1) oneByte = upperShift ? (oneByte + 128) : oneByte; // upperShift = false; result << (zxing::byte) (oneByte - 1); return ASCII_ENCODE; } else if (oneByte == 129) { // Pad return PAD_ENCODE; } else if (oneByte <= 229) { // 2-digit data 00-99 (Numeric Value + 130) int value = oneByte - 130; if (value < 10) { // padd with '0' for single digit values result << '0'; } result << value; } else if (oneByte == 230) { // Latch to C40 encodation return C40_ENCODE; } else if (oneByte == 231) { // Latch to Base 256 encodation return BASE256_ENCODE; } else if (oneByte == 232) { // FNC1 result << ((zxing::byte) 29); // translate as ASCII 29 } else if (oneByte == 233 || oneByte == 234) { // Structured Append, Reader Programming // Ignore these symbols for now // throw FormatException.getInstance(); } else if (oneByte == 235) { // Upper Shift (shift to Extended ASCII) upperShift = true; } else if (oneByte == 236) { // 05 Macro result << ("[)>RS05GS"); resultTrailer << ("RSEOT"); } else if (oneByte == 237) { // 06 Macro result << ("[)>RS06GS"); resultTrailer << ("RSEOT"); } else if (oneByte == 238) { // Latch to ANSI X12 encodation return ANSIX12_ENCODE; } else if (oneByte == 239) { // Latch to Text encodation return TEXT_ENCODE; } else if (oneByte == 240) { // Latch to EDIFACT encodation return EDIFACT_ENCODE; } else if (oneByte == 241) { // ECI Character // TODO(bbrown): I think we need to support ECI // throw FormatException.getInstance(); // Ignore this symbol for now } else if (oneByte >= 242) { // Not to be used in ASCII encodation // ... but work around encoders that end with 254, latch back to ASCII if (oneByte != 254 || bits->available() != 0) { throw FormatException("Not to be used in ASCII encodation"); } } } while (bits->available() > 0); return ASCII_ENCODE; } void DecodedBitStreamParser::decodeC40Segment(Ref bits, ostringstream & result) { // Three C40 values are encoded in a 16-bit value as // (1600 * C1) + (40 * C2) + C3 + 1 // TODO(bbrown): The Upper Shift with C40 doesn't work in the 4 value scenario all the time bool upperShift = false; int cValues[3]; int shift = 0; do { // If there is only one byte left then it will be encoded as ASCII if (bits->available() == 8) { return; } int firstByte = bits->readBits(8); if (firstByte == 254) { // Unlatch codeword return; } parseTwoBytes(firstByte, bits->readBits(8), cValues); for (int i = 0; i < 3; i++) { int cValue = cValues[i]; switch (shift) { case 0: if (cValue < 3) { shift = cValue + 1; } else { if (upperShift) { result << (zxing::byte) (C40_BASIC_SET_CHARS[cValue] + 128); upperShift = false; } else { result << C40_BASIC_SET_CHARS[cValue]; } } break; case 1: if (upperShift) { result << (zxing::byte) (cValue + 128); upperShift = false; } else { result << (zxing::byte) cValue; } shift = 0; break; case 2: if (cValue < 27) { if (upperShift) { result << (zxing::byte) (C40_SHIFT2_SET_CHARS[cValue] + 128); upperShift = false; } else { result << C40_SHIFT2_SET_CHARS[cValue]; } } else if (cValue == 27) { // FNC1 result << ((zxing::byte) 29); // translate as ASCII 29 } else if (cValue == 30) { // Upper Shift upperShift = true; } else { throw FormatException("decodeC40Segment: Upper Shift"); } shift = 0; break; case 3: if (upperShift) { result << (zxing::byte) (cValue + 224); upperShift = false; } else { result << (zxing::byte) (cValue + 96); } shift = 0; break; default: throw FormatException("decodeC40Segment: no case"); } } } while (bits->available() > 0); } void DecodedBitStreamParser::decodeTextSegment(Ref bits, ostringstream & result) { // Three Text values are encoded in a 16-bit value as // (1600 * C1) + (40 * C2) + C3 + 1 // TODO(bbrown): The Upper Shift with Text doesn't work in the 4 value scenario all the time bool upperShift = false; int cValues[3]; int shift = 0; do { // If there is only one byte left then it will be encoded as ASCII if (bits->available() == 8) { return; } int firstByte = bits->readBits(8); if (firstByte == 254) { // Unlatch codeword return; } parseTwoBytes(firstByte, bits->readBits(8), cValues); for (int i = 0; i < 3; i++) { int cValue = cValues[i]; switch (shift) { case 0: if (cValue < 3) { shift = cValue + 1; } else { if (upperShift) { result << (zxing::byte) (TEXT_BASIC_SET_CHARS[cValue] + 128); upperShift = false; } else { result << (TEXT_BASIC_SET_CHARS[cValue]); } } break; case 1: if (upperShift) { result << (zxing::byte) (cValue + 128); upperShift = false; } else { result << (zxing::byte) (cValue); } shift = 0; break; case 2: // Shift 2 for Text is the same encoding as C40 if (cValue < 27) { if (upperShift) { result << (zxing::byte) (C40_SHIFT2_SET_CHARS[cValue] + 128); upperShift = false; } else { result << (C40_SHIFT2_SET_CHARS[cValue]); } } else if (cValue == 27) { // FNC1 result << ((zxing::byte) 29); // translate as ASCII 29 } else if (cValue == 30) { // Upper Shift upperShift = true; } else { throw FormatException("decodeTextSegment: Upper Shift"); } shift = 0; break; case 3: if (upperShift) { result << (zxing::byte) (TEXT_SHIFT3_SET_CHARS[cValue] + 128); upperShift = false; } else { result << (TEXT_SHIFT3_SET_CHARS[cValue]); } shift = 0; break; default: throw FormatException("decodeTextSegment: no case"); } } } while (bits->available() > 0); } void DecodedBitStreamParser::decodeAnsiX12Segment(Ref bits, ostringstream & result) { // Three ANSI X12 values are encoded in a 16-bit value as // (1600 * C1) + (40 * C2) + C3 + 1 int cValues[3]; do { // If there is only one byte left then it will be encoded as ASCII if (bits->available() == 8) { return; } int firstByte = bits->readBits(8); if (firstByte == 254) { // Unlatch codeword return; } parseTwoBytes(firstByte, bits->readBits(8), cValues); for (int i = 0; i < 3; i++) { int cValue = cValues[i]; if (cValue == 0) { // X12 segment terminator result << '\r'; } else if (cValue == 1) { // X12 segment separator * result << '*'; } else if (cValue == 2) { // X12 sub-element separator > result << '>'; } else if (cValue == 3) { // space result << ' '; } else if (cValue < 14) { // 0 - 9 result << (zxing::byte) (cValue + 44); } else if (cValue < 40) { // A - Z result << (zxing::byte) (cValue + 51); } else { throw FormatException("decodeAnsiX12Segment: no case"); } } } while (bits->available() > 0); } void DecodedBitStreamParser::parseTwoBytes(int firstByte, int secondByte, int* result) { int fullBitValue = (firstByte << 8) + secondByte - 1; int temp = fullBitValue / 1600; result[0] = temp; fullBitValue -= temp * 1600; temp = fullBitValue / 40; result[1] = temp; result[2] = fullBitValue - temp * 40; } void DecodedBitStreamParser::decodeEdifactSegment(Ref bits, ostringstream & result) { do { // If there is only two or less bytes left then it will be encoded as ASCII if (bits->available() <= 16) { return; } for (int i = 0; i < 4; i++) { int edifactValue = bits->readBits(6); // Check for the unlatch character if (edifactValue == 0x1f) { // 011111 // Read rest of byte, which should be 0, and stop int bitsLeft = 8 - bits->getBitOffset(); if (bitsLeft != 8) { bits->readBits(bitsLeft); } return; } if ((edifactValue & 0x20) == 0) { // no 1 in the leading (6th) bit edifactValue |= 0x40; // Add a leading 01 to the 6 bit binary value } result << (zxing::byte)(edifactValue); } } while (bits->available() > 0); } void DecodedBitStreamParser::decodeBase256Segment(Ref bits, ostringstream& result, vector byteSegments) { // Figure out how long the Base 256 Segment is. int codewordPosition = 1 + bits->getByteOffset(); // position is 1-indexed int d1 = unrandomize255State(bits->readBits(8), codewordPosition++); int count; if (d1 == 0) { // Read the remainder of the symbol count = bits->available() / 8; } else if (d1 < 250) { count = d1; } else { count = 250 * (d1 - 249) + unrandomize255State(bits->readBits(8), codewordPosition++); } // We're seeing NegativeArraySizeException errors from users. if (count < 0) { throw FormatException("NegativeArraySizeException"); } char* bytes = new char[count]; for (int i = 0; i < count; i++) { // Have seen this particular error in the wild, such as at // http://www.bcgen.com/demo/IDAutomationStreamingDataMatrix.aspx?MODE=3&D=Fred&PFMT=3&PT=F&X=0.3&O=0&LM=0.2 if (bits->available() < 8) { delete [] bytes; throw FormatException("byteSegments"); } bytes[i] = unrandomize255State(bits->readBits(8), codewordPosition++); byteSegments.push_back(bytes[i]); result << (zxing::byte)bytes[i]; } delete [] bytes; } } } yubioath-desktop/QZXing/zxing/zxing/datamatrix/decoder/DataMatrixDecoder.cpp000066400000000000000000000066561412677075700276570ustar00rootroot00000000000000/* * Decoder.cpp * zxing * * Created by Luiz Silva on 09/02/2010. * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include #include #include #include #include #include using zxing::Ref; using zxing::DecoderResult; //using zxing::datamatrix::Decoder; //using zxing::datamatrix::DataBlock; //using zxing::datamatrix::DecodedBitStreamParser; // VC++ using zxing::ArrayRef; using zxing::BitMatrix; namespace zxing { namespace datamatrix { Decoder::Decoder() : rsDecoder_(GenericGF::DATA_MATRIX_FIELD_256) {} void Decoder::correctErrors(ArrayRef codewordBytes, int numDataCodewords) { int numCodewords = codewordBytes->size(); ArrayRef codewordInts(numCodewords); for (int i = 0; i < numCodewords; i++) { codewordInts[i] = codewordBytes[i] & 0xff; } int numECCodewords = numCodewords - numDataCodewords; try { rsDecoder_.decode(codewordInts, numECCodewords); } catch (ReedSolomonException const& ignored) { (void)ignored; throw ChecksumException(); } // Copy back into array of bytes -- only need to worry about the bytes that were data // We don't care about errors in the error-correction codewords for (int i = 0; i < numDataCodewords; i++) { codewordBytes[i] = (zxing::byte)codewordInts[i]; } } Ref Decoder::decode(Ref bits) { // Construct a parser and read version, error-correction level BitMatrixParser parser(bits); Refversion = parser.readVersion(bits); // Read codewords ArrayRef codewords(parser.readCodewords()); // Separate into data blocks std::vector > dataBlocks = DataBlock::getDataBlocks(codewords, version); int dataBlocksCount = int(dataBlocks.size()); // Count total number of data bytes int totalBytes = 0; for (int i = 0; i < dataBlocksCount; i++) { totalBytes += dataBlocks[i]->getNumDataCodewords(); } ArrayRef resultBytes(totalBytes); // Error-correct and copy data blocks together into a stream of bytes for (int j = 0; j < dataBlocksCount; j++) { Ref dataBlock(dataBlocks[j]); ArrayRef codewordBytes = dataBlock->getCodewords(); int numDataCodewords = dataBlock->getNumDataCodewords(); correctErrors(codewordBytes, numDataCodewords); for (int i = 0; i < numDataCodewords; i++) { // De-interlace data blocks. resultBytes[i * dataBlocksCount + j] = codewordBytes[i]; } } // Decode the contents of that stream of bytes DecodedBitStreamParser decodedBSParser; return Ref (decodedBSParser.decode(resultBytes)); } } } yubioath-desktop/QZXing/zxing/zxing/datamatrix/decoder/DecodedBitStreamParser.h000066400000000000000000000065451412677075700303140ustar00rootroot00000000000000#ifndef ZXING_DECODED_BIT_STREAM_PARSER_DM_H #define ZXING_DECODED_BIT_STREAM_PARSER_DM_H /* * DecodedBitStreamParser.h * zxing * * Created by Luiz Silva on 09/02/2010. * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include #include #include #include namespace zxing { namespace datamatrix { class DecodedBitStreamParser { private: static const int PAD_ENCODE = 0; // Not really an encoding static const int ASCII_ENCODE = 1; static const int C40_ENCODE = 2; static const int TEXT_ENCODE = 3; static const int ANSIX12_ENCODE = 4; static const int EDIFACT_ENCODE = 5; static const int BASE256_ENCODE = 6; /** * See ISO 16022:2006, Annex C Table C.1 * The C40 Basic Character Set (*'s used for placeholders for the shift values) */ static const char C40_BASIC_SET_CHARS[]; static const char C40_SHIFT2_SET_CHARS[]; /** * See ISO 16022:2006, Annex C Table C.2 * The Text Basic Character Set (*'s used for placeholders for the shift values) */ static const char TEXT_BASIC_SET_CHARS[]; static const char TEXT_SHIFT3_SET_CHARS[]; /** * See ISO 16022:2006, 5.2.3 and Annex C, Table C.2 */ int decodeAsciiSegment(Ref bits, std::ostringstream &result, std::ostringstream &resultTrailer); /** * See ISO 16022:2006, 5.2.5 and Annex C, Table C.1 */ void decodeC40Segment(Ref bits, std::ostringstream &result); /** * See ISO 16022:2006, 5.2.6 and Annex C, Table C.2 */ void decodeTextSegment(Ref bits, std::ostringstream &result); /** * See ISO 16022:2006, 5.2.7 */ void decodeAnsiX12Segment(Ref bits, std::ostringstream &result); /** * See ISO 16022:2006, 5.2.8 and Annex C Table C.3 */ void decodeEdifactSegment(Ref bits, std::ostringstream &result); /** * See ISO 16022:2006, 5.2.9 and Annex B, B.2 */ void decodeBase256Segment(Ref bits, std::ostringstream &result, std::vector byteSegments); void parseTwoBytes(int firstByte, int secondByte, int* result); /** * See ISO 16022:2006, Annex B, B.2 */ zxing::byte unrandomize255State(int randomizedBase256Codeword, int base256CodewordPosition) { int pseudoRandomNumber = ((149 * base256CodewordPosition) % 255) + 1; int tempVariable = randomizedBase256Codeword - pseudoRandomNumber; return static_cast(tempVariable >= 0 ? tempVariable : (tempVariable + 256)); } void append(std::ostream &ost, const char *bufIn, size_t nIn, const char *src); public: DecodedBitStreamParser() { } Ref decode(ArrayRef bytes); }; } } #endif // ZXING_DECODED_BIT_STREAM_PARSER_DM_H yubioath-desktop/QZXing/zxing/zxing/datamatrix/decoder/Decoder.h000066400000000000000000000023161412677075700253320ustar00rootroot00000000000000#ifndef ZXING_DECODER_DM_H #define ZXING_DECODER_DM_H /* * Decoder.h * zxing * * Created by Luiz Silva on 09/02/2010. * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include #include #include namespace zxing { namespace datamatrix { class Decoder { private: ReedSolomonDecoder rsDecoder_; void correctErrors(ArrayRef bytes, int numDataCodewords); public: Decoder(); Ref decode(Ref bits); }; } } #endif // ZXING_DECODER_DM_H yubioath-desktop/QZXing/zxing/zxing/datamatrix/detector/000077500000000000000000000000001412677075700240165ustar00rootroot00000000000000yubioath-desktop/QZXing/zxing/zxing/datamatrix/detector/CornerPoint.h000066400000000000000000000021321412677075700264270ustar00rootroot00000000000000#ifndef ZXING_CORNER_FINDER_H #define ZXING_CORNER_FINDER_H /* * CornerPoint.h * zxing * * Created by Luiz Silva on 09/02/2010. * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include namespace zxing { namespace datamatrix { class CornerPoint : public ResultPoint { private: int counter_; public: CornerPoint(float posX, float posY); int getCount() const; void incrementCount(); bool equals(Ref other) const; }; } } #endif // ZXING_CORNER_FINDER_H yubioath-desktop/QZXing/zxing/zxing/datamatrix/detector/DataMatrixCornerPoint.cpp000066400000000000000000000022341412677075700307440ustar00rootroot00000000000000/* * CornerPoint.cpp * zxing * * Created by Luiz Silva on 09/02/2010. * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include namespace zxing { namespace datamatrix { using namespace std; CornerPoint::CornerPoint(float posX, float posY) : ResultPoint(posX,posY), counter_(0) { } int CornerPoint::getCount() const { return counter_; } void CornerPoint::incrementCount() { counter_++; } bool CornerPoint::equals(Ref other) const { return posX_ == other->getX() && posY_ == other->getY(); } } } yubioath-desktop/QZXing/zxing/zxing/datamatrix/detector/DataMatrixDetector.cpp000066400000000000000000000366061412677075700302650ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- /* * Detector.cpp * zxing * * Created by Luiz Silva on 09/02/2010. * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include #include #include #include #include #include #include using std::abs; using zxing::Ref; using zxing::BitMatrix; using zxing::ResultPoint; using zxing::DetectorResult; using zxing::PerspectiveTransform; using zxing::NotFoundException; using zxing::datamatrix::Detector; using zxing::datamatrix::ResultPointsAndTransitions; using zxing::common::detector::MathUtils; namespace { typedef std::map, int> PointMap; void increment(PointMap& table, Ref const& key) { int& value = table[key]; value += 1; } } ResultPointsAndTransitions::ResultPointsAndTransitions() { Ref ref(new ResultPoint(0, 0)); from_ = ref; to_ = ref; transitions_ = 0; } ResultPointsAndTransitions::ResultPointsAndTransitions(Ref from, Ref to, int transitions) : to_(to), from_(from), transitions_(transitions) { } Ref ResultPointsAndTransitions::getFrom() { return from_; } Ref ResultPointsAndTransitions::getTo() { return to_; } int ResultPointsAndTransitions::getTransitions() { return transitions_; } Detector::Detector(Ref image) : image_(image) { } Ref Detector::getImage() { return image_; } Ref Detector::detect() { Ref rectangleDetector_(new WhiteRectangleDetector(image_)); std::vector > ResultPoints = rectangleDetector_->detect(); Ref pointA = ResultPoints[0]; Ref pointB = ResultPoints[1]; Ref pointC = ResultPoints[2]; Ref pointD = ResultPoints[3]; // Point A and D are across the diagonal from one another, // as are B and C. Figure out which are the solid black lines // by counting transitions std::vector > transitions(4); transitions[0].reset(transitionsBetween(pointA, pointB)); transitions[1].reset(transitionsBetween(pointA, pointC)); transitions[2].reset(transitionsBetween(pointB, pointD)); transitions[3].reset(transitionsBetween(pointC, pointD)); insertionSort(transitions); // Sort by number of transitions. First two will be the two solid sides; last two // will be the two alternating black/white sides Ref lSideOne(transitions[0]); Ref lSideTwo(transitions[1]); // Figure out which point is their intersection by tallying up the number of times we see the // endpoints in the four endpoints. One will show up twice. typedef std::map, int> PointMap; PointMap pointCount; increment(pointCount, lSideOne->getFrom()); increment(pointCount, lSideOne->getTo()); increment(pointCount, lSideTwo->getFrom()); increment(pointCount, lSideTwo->getTo()); // Figure out which point is their intersection by tallying up the number of times we see the // endpoints in the four endpoints. One will show up twice. Ref maybeTopLeft; Ref bottomLeft; Ref maybeBottomRight; for (PointMap::const_iterator entry = pointCount.begin(), end = pointCount.end(); entry != end; ++entry) { Ref const& point = entry->first; int value = entry->second; if (value == 2) { bottomLeft = point; // this is definitely the bottom left, then -- end of two L sides } else { // Otherwise it's either top left or bottom right -- just assign the two arbitrarily now if (maybeTopLeft == 0) { maybeTopLeft = point; } else { maybeBottomRight = point; } } } if (maybeTopLeft == 0 || bottomLeft == 0 || maybeBottomRight == 0) { throw NotFoundException(); } // Bottom left is correct but top left and bottom right might be switched std::vector > corners(3); corners[0].reset(maybeTopLeft); corners[1].reset(bottomLeft); corners[2].reset(maybeBottomRight); // Use the dot product trick to sort them out ResultPoint::orderBestPatterns(corners); // Now we know which is which: Ref bottomRight(corners[0]); bottomLeft = corners[1]; Ref topLeft(corners[2]); // Which point didn't we find in relation to the "L" sides? that's the top right corner Ref topRight; if (!(pointA->equals(bottomRight) || pointA->equals(bottomLeft) || pointA->equals(topLeft))) { topRight = pointA; } else if (!(pointB->equals(bottomRight) || pointB->equals(bottomLeft) || pointB->equals(topLeft))) { topRight = pointB; } else if (!(pointC->equals(bottomRight) || pointC->equals(bottomLeft) || pointC->equals(topLeft))) { topRight = pointC; } else { topRight = pointD; } // Next determine the dimension by tracing along the top or right side and counting black/white // transitions. Since we start inside a black module, we should see a number of transitions // equal to 1 less than the code dimension. Well, actually 2 less, because we are going to // end on a black module: // The top right point is actually the corner of a module, which is one of the two black modules // adjacent to the white module at the top right. Tracing to that corner from either the top left // or bottom right should work here. int dimensionTop = transitionsBetween(topLeft, topRight)->getTransitions(); int dimensionRight = transitionsBetween(bottomRight, topRight)->getTransitions(); //dimensionTop++; if ((dimensionTop & 0x01) == 1) { // it can't be odd, so, round... up? dimensionTop++; } dimensionTop += 2; //dimensionRight++; if ((dimensionRight & 0x01) == 1) { // it can't be odd, so, round... up? dimensionRight++; } dimensionRight += 2; Ref bits; Ref transform; Ref correctedTopRight; // Rectanguar symbols are 6x16, 6x28, 10x24, 10x32, 14x32, or 14x44. If one dimension is more // than twice the other, it's certainly rectangular, but to cut a bit more slack we accept it as // rectangular if the bigger side is at least 7/4 times the other: if (4 * dimensionTop >= 7 * dimensionRight || 4 * dimensionRight >= 7 * dimensionTop) { // The matrix is rectangular correctedTopRight = correctTopRightRectangular(bottomLeft, bottomRight, topLeft, topRight, dimensionTop, dimensionRight); if (correctedTopRight == NULL) { correctedTopRight = topRight; } dimensionTop = transitionsBetween(topLeft, correctedTopRight)->getTransitions(); dimensionRight = transitionsBetween(bottomRight, correctedTopRight)->getTransitions(); if ((dimensionTop & 0x01) == 1) { // it can't be odd, so, round... up? dimensionTop++; } if ((dimensionRight & 0x01) == 1) { // it can't be odd, so, round... up? dimensionRight++; } transform = createTransform(topLeft, correctedTopRight, bottomLeft, bottomRight, dimensionTop, dimensionRight); bits = sampleGrid(image_, dimensionTop, dimensionRight, transform); } else { // The matrix is square int dimension = min(dimensionRight, dimensionTop); // correct top right point to match the white module correctedTopRight = correctTopRight(bottomLeft, bottomRight, topLeft, topRight, dimension); if (correctedTopRight == NULL) { correctedTopRight = topRight; } // Redetermine the dimension using the corrected top right point int dimensionCorrected = std::max(transitionsBetween(topLeft, correctedTopRight)->getTransitions(), transitionsBetween(bottomRight, correctedTopRight)->getTransitions()); dimensionCorrected++; if ((dimensionCorrected & 0x01) == 1) { dimensionCorrected++; } transform = createTransform(topLeft, correctedTopRight, bottomLeft, bottomRight, dimensionCorrected, dimensionCorrected); bits = sampleGrid(image_, dimensionCorrected, dimensionCorrected, transform); } ArrayRef< Ref > points (new Array< Ref >(4)); points[0].reset(topLeft); points[1].reset(bottomLeft); points[2].reset(correctedTopRight); points[3].reset(bottomRight); Ref detectorResult(new DetectorResult(bits, points)); return detectorResult; } /** * Calculates the position of the white top right module using the output of the rectangle detector * for a rectangular matrix */ Ref Detector::correctTopRightRectangular(Ref bottomLeft, Ref bottomRight, Ref topLeft, Ref topRight, int dimensionTop, int dimensionRight) { float corr = distance(bottomLeft, bottomRight) / (float) dimensionTop; int norm = distance(topLeft, topRight); float cos = (topRight->getX() - topLeft->getX()) / norm; float sin = (topRight->getY() - topLeft->getY()) / norm; Ref c1( new ResultPoint(topRight->getX() + corr * cos, topRight->getY() + corr * sin)); corr = distance(bottomLeft, topLeft) / (float) dimensionRight; norm = distance(bottomRight, topRight); cos = (topRight->getX() - bottomRight->getX()) / norm; sin = (topRight->getY() - bottomRight->getY()) / norm; Ref c2( new ResultPoint(topRight->getX() + corr * cos, topRight->getY() + corr * sin)); if (!isValid(c1)) { if (isValid(c2)) { return c2; } return Ref(NULL); } if (!isValid(c2)) { return c1; } int l1 = abs(dimensionTop - transitionsBetween(topLeft, c1)->getTransitions()) + abs(dimensionRight - transitionsBetween(bottomRight, c1)->getTransitions()); int l2 = abs(dimensionTop - transitionsBetween(topLeft, c2)->getTransitions()) + abs(dimensionRight - transitionsBetween(bottomRight, c2)->getTransitions()); return l1 <= l2 ? c1 : c2; } /** * Calculates the position of the white top right module using the output of the rectangle detector * for a square matrix */ Ref Detector::correctTopRight(Ref bottomLeft, Ref bottomRight, Ref topLeft, Ref topRight, int dimension) { float corr = distance(bottomLeft, bottomRight) / (float) dimension; int norm = distance(topLeft, topRight); float cos = (topRight->getX() - topLeft->getX()) / norm; float sin = (topRight->getY() - topLeft->getY()) / norm; Ref c1( new ResultPoint(topRight->getX() + corr * cos, topRight->getY() + corr * sin)); corr = distance(bottomLeft, topLeft) / (float) dimension; norm = distance(bottomRight, topRight); cos = (topRight->getX() - bottomRight->getX()) / norm; sin = (topRight->getY() - bottomRight->getY()) / norm; Ref c2( new ResultPoint(topRight->getX() + corr * cos, topRight->getY() + corr * sin)); if (!isValid(c1)) { if (isValid(c2)) { return c2; } return Ref(NULL); } if (!isValid(c2)) { return c1; } int l1 = abs( transitionsBetween(topLeft, c1)->getTransitions() - transitionsBetween(bottomRight, c1)->getTransitions()); int l2 = abs( transitionsBetween(topLeft, c2)->getTransitions() - transitionsBetween(bottomRight, c2)->getTransitions()); return l1 <= l2 ? c1 : c2; } bool Detector::isValid(Ref p) { return p->getX() >= 0 && p->getX() < image_->getWidth() && p->getY() > 0 && p->getY() < image_->getHeight(); } int Detector::distance(Ref a, Ref b) { return MathUtils::round(ResultPoint::distance(a, b)); } Ref Detector::transitionsBetween(Ref from, Ref to) { // See QR Code Detector, sizeOfBlackWhiteBlackRun() int fromX = (int) from->getX(); int fromY = (int) from->getY(); int toX = (int) to->getX(); int toY = (int) to->getY(); bool steep = ::abs(toY - fromY) > ::abs(toX - fromX); if (steep) { int temp = fromX; fromX = fromY; fromY = temp; temp = toX; toX = toY; toY = temp; } int dx = ::abs(toX - fromX); int dy = ::abs(toY - fromY); int error = -dx >> 1; int ystep = fromY < toY ? 1 : -1; int xstep = fromX < toX ? 1 : -1; int transitions = 0; bool inBlack = image_->get(steep ? fromY : fromX, steep ? fromX : fromY); for (int x = fromX, y = fromY; x != toX; x += xstep) { bool isBlack = image_->get(steep ? y : x, steep ? x : y); if (isBlack != inBlack) { transitions++; inBlack = isBlack; } error += dy; if (error > 0) { if (y == toY) { break; } y += ystep; error -= dx; } } Ref result(new ResultPointsAndTransitions(from, to, transitions)); return result; } Ref Detector::createTransform(Ref topLeft, Ref topRight, Ref bottomLeft, Ref bottomRight, int dimensionX, int dimensionY) { Ref transform( PerspectiveTransform::quadrilateralToQuadrilateral( 0.5f, 0.5f, dimensionX - 0.5f, 0.5f, dimensionX - 0.5f, dimensionY - 0.5f, 0.5f, dimensionY - 0.5f, topLeft->getX(), topLeft->getY(), topRight->getX(), topRight->getY(), bottomRight->getX(), bottomRight->getY(), bottomLeft->getX(), bottomLeft->getY())); return transform; } Ref Detector::sampleGrid(Ref image, int dimensionX, int dimensionY, Ref transform) { GridSampler &sampler = GridSampler::getInstance(); return sampler.sampleGrid(image, dimensionX, dimensionY, transform); } void Detector::insertionSort(std::vector > &vector) { int max = int(vector.size()); bool swapped = true; Ref value; Ref valueB; do { swapped = false; for (int i = 1; i < max; i++) { value = vector[i - 1]; if (compare(value, (valueB = vector[i])) > 0){ swapped = true; vector[i - 1].reset(valueB); vector[i].reset(value); } } } while (swapped); } int Detector::compare(Ref a, Ref b) { return a->getTransitions() - b->getTransitions(); } yubioath-desktop/QZXing/zxing/zxing/datamatrix/detector/DataMatrixDetectorException.cpp000066400000000000000000000005521412677075700321330ustar00rootroot00000000000000/* * DetectorException.cpp * * Created on: Aug 26, 2011 * Author: luiz */ #include "DetectorException.h" namespace zxing { namespace datamatrix { DetectorException::DetectorException(const char *msg) : Exception(msg) { } DetectorException::~DetectorException() throw () { // TODO Auto-generated destructor stub } } } /* namespace zxing */ yubioath-desktop/QZXing/zxing/zxing/datamatrix/detector/Detector.h000066400000000000000000000057551412677075700257540ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- #ifndef ZXING_DETECTOR_H #define ZXING_DETECTOR_H /* * Detector.h * zxing * * Created by Luiz Silva on 09/02/2010. * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include #include #include namespace zxing { namespace datamatrix { class ResultPointsAndTransitions: public Counted { private: Ref to_; Ref from_; int transitions_; public: ResultPointsAndTransitions(); ResultPointsAndTransitions(Ref from, Ref to, int transitions); Ref getFrom(); Ref getTo(); int getTransitions(); }; class Detector: public Counted { private: Ref image_; protected: Ref sampleGrid(Ref image, int dimensionX, int dimensionY, Ref transform); void insertionSort(std::vector >& vector); Ref correctTopRightRectangular(Ref bottomLeft, Ref bottomRight, Ref topLeft, Ref topRight, int dimensionTop, int dimensionRight); Ref correctTopRight(Ref bottomLeft, Ref bottomRight, Ref topLeft, Ref topRight, int dimension); bool isValid(Ref p); int distance(Ref a, Ref b); Ref transitionsBetween(Ref from, Ref to); int min(int a, int b) { return a > b ? b : a; } /** * Ends up being a bit faster than round(). This merely rounds its * argument to the nearest int, where x.5 rounds up. */ int round(float d) { return (int) (d + 0.5f); } public: Ref getImage(); Detector(Ref image); virtual Ref createTransform(Ref topLeft, Ref topRight, Ref bottomLeft, Ref bottomRight, int dimensionX, int dimensionY); Ref detect(); private: int compare(Ref a, Ref b); }; } } #endif // ZXING_DETECTOR_H yubioath-desktop/QZXing/zxing/zxing/datamatrix/detector/DetectorException.h000066400000000000000000000006761412677075700276300ustar00rootroot00000000000000/* * DetectorException.h * * Created on: Aug 26, 2011 * Author: luiz */ #ifndef DETECTOREXCEPTION_H_ #define DETECTOREXCEPTION_H_ #include namespace zxing { namespace datamatrix { class DetectorException : public Exception { public: DetectorException(const char *msg); virtual ~DetectorException() ZXING_NOEXCEPT; }; } /* namespace nexxera */ } /* namespace zxing */ #endif /* DETECTOREXCEPTION_H_ */ yubioath-desktop/QZXing/zxing/zxing/multi/000077500000000000000000000000001412677075700212015ustar00rootroot00000000000000yubioath-desktop/QZXing/zxing/zxing/multi/ByQuadrantReader.cpp000066400000000000000000000043771412677075700251150ustar00rootroot00000000000000/* * Copyright 2011 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include namespace zxing { namespace multi { ByQuadrantReader::ByQuadrantReader(Reader& delegate) : delegate_(delegate) {} ByQuadrantReader::~ByQuadrantReader(){} Ref ByQuadrantReader::decode(Ref image){ return decode(image, DecodeHints::DEFAULT_HINT); } Ref ByQuadrantReader::decode(Ref image, DecodeHints hints){ int width = image->getWidth(); int height = image->getHeight(); int halfWidth = width / 2; int halfHeight = height / 2; Ref topLeft = image->crop(0, 0, halfWidth, halfHeight); try { return delegate_.decode(topLeft, hints); } catch (ReaderException const& re) { (void)re; // continue } Ref topRight = image->crop(halfWidth, 0, halfWidth, halfHeight); try { return delegate_.decode(topRight, hints); } catch (ReaderException const& re) { (void)re; // continue } Ref bottomLeft = image->crop(0, halfHeight, halfWidth, halfHeight); try { return delegate_.decode(bottomLeft, hints); } catch (ReaderException const& re) { (void)re; // continue } Ref bottomRight = image->crop(halfWidth, halfHeight, halfWidth, halfHeight); try { return delegate_.decode(bottomRight, hints); } catch (ReaderException const& re) { (void)re; // continue } int quarterWidth = halfWidth / 2; int quarterHeight = halfHeight / 2; Ref center = image->crop(quarterWidth, quarterHeight, halfWidth, halfHeight); return delegate_.decode(center, hints); } } // End zxing::multi namespace } // End zxing namespace yubioath-desktop/QZXing/zxing/zxing/multi/ByQuadrantReader.h000066400000000000000000000022371412677075700245530ustar00rootroot00000000000000#ifndef ZXING_BY_QUADRANT_READER_H #define ZXING_BY_QUADRANT_READER_H /* * Copyright 2011 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include #include namespace zxing { namespace multi { class ByQuadrantReader : public Reader { private: Reader& delegate_; public: ByQuadrantReader(Reader& delegate); virtual ~ByQuadrantReader(); virtual Ref decode(Ref image); virtual Ref decode(Ref image, DecodeHints hints); }; } } #endif // ZXING_BY_QUADRANT_READER_H yubioath-desktop/QZXing/zxing/zxing/multi/GenericMultipleBarcodeReader.cpp000066400000000000000000000111411412677075700273760ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- /* * Copyright 2011 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include using std::vector; using zxing::Ref; using zxing::Result; using zxing::multi::GenericMultipleBarcodeReader; // VC++ using zxing::Reader; using zxing::BinaryBitmap; using zxing::DecodeHints; GenericMultipleBarcodeReader::GenericMultipleBarcodeReader(Reader& delegate) : delegate_(delegate) {} GenericMultipleBarcodeReader::~GenericMultipleBarcodeReader(){} vector > GenericMultipleBarcodeReader::decodeMultiple(Ref image, DecodeHints hints) { vector > results; doDecodeMultiple(image, hints, results, 0, 0, 0); if (results.empty()){ throw ReaderException("No code detected"); } return results; } void GenericMultipleBarcodeReader::doDecodeMultiple(Ref image, DecodeHints hints, vector >& results, int xOffset, int yOffset, int currentDepth) { if (currentDepth > MAX_DEPTH) { return; } Ref result; try { result = delegate_.decode(image, hints); } catch (ReaderException const& ignored) { (void)ignored; return; } bool alreadyFound = false; for (unsigned int i = 0; i < results.size(); i++) { Ref existingResult = results[i]; if (existingResult->getText()->getText() == result->getText()->getText()) { alreadyFound = true; break; } } if (!alreadyFound) { results.push_back(translateResultPoints(result, xOffset, yOffset)); } ArrayRef< Ref > resultPoints = result->getResultPoints(); if (resultPoints->empty()) { return; } int width = image->getWidth(); int height = image->getHeight(); float minX = float(width); float minY = float(height); float maxX = 0.0f; float maxY = 0.0f; for (int i = 0; i < resultPoints->size(); i++) { Ref point = resultPoints[i]; float x = point->getX(); float y = point->getY(); if (x < minX) { minX = x; } if (y < minY) { minY = y; } if (x > maxX) { maxX = x; } if (y > maxY) { maxY = y; } } // Decode left of barcode if (minX > MIN_DIMENSION_TO_RECUR) { doDecodeMultiple(image->crop(0, 0, (int) minX, height), hints, results, xOffset, yOffset, currentDepth+1); } // Decode above barcode if (minY > MIN_DIMENSION_TO_RECUR) { doDecodeMultiple(image->crop(0, 0, width, (int) minY), hints, results, xOffset, yOffset, currentDepth+1); } // Decode right of barcode if (maxX < width - MIN_DIMENSION_TO_RECUR) { doDecodeMultiple(image->crop((int) maxX, 0, width - (int) maxX, height), hints, results, xOffset + (int) maxX, yOffset, currentDepth+1); } // Decode below barcode if (maxY < height - MIN_DIMENSION_TO_RECUR) { doDecodeMultiple(image->crop(0, (int) maxY, width, height - (int) maxY), hints, results, xOffset, yOffset + (int) maxY, currentDepth+1); } } Ref GenericMultipleBarcodeReader::translateResultPoints(Ref result, int xOffset, int yOffset){ ArrayRef< Ref > oldResultPoints = result->getResultPoints(); if (oldResultPoints->empty()) { return result; } ArrayRef< Ref > newResultPoints; for (int i = 0; i < oldResultPoints->size(); i++) { Ref oldPoint = oldResultPoints[i]; newResultPoints->values().push_back(Ref(new ResultPoint(oldPoint->getX() + xOffset, oldPoint->getY() + yOffset))); } return Ref(new Result(result->getText(), result->getRawBytes(), newResultPoints, result->getBarcodeFormat())); } yubioath-desktop/QZXing/zxing/zxing/multi/GenericMultipleBarcodeReader.h000066400000000000000000000034011412677075700270430ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- #ifndef ZXING_GENERIC_MULTIPLE_BARCODE_READER_H #define ZXING_GENERIC_MULTIPLE_BARCODE_READER_H /* * Copyright 2011 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include namespace zxing { namespace multi { class GenericMultipleBarcodeReader : public MultipleBarcodeReader { private: static Ref translateResultPoints(Ref result, int xOffset, int yOffset); void doDecodeMultiple(Ref image, DecodeHints hints, std::vector >& results, int xOffset, int yOffset, int currentDepth); Reader& delegate_; static const int MIN_DIMENSION_TO_RECUR = 100; static const int MAX_DEPTH = 4; public: GenericMultipleBarcodeReader(Reader& delegate); virtual ~GenericMultipleBarcodeReader(); virtual std::vector > decodeMultiple(Ref image, DecodeHints hints); }; } } #endif // ZXING_GENERIC_MULTIPLE_BARCODE_READER_H yubioath-desktop/QZXing/zxing/zxing/multi/MultipleBarcodeReader.cpp000066400000000000000000000017111412677075700261030ustar00rootroot00000000000000/* * Copyright 2011 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include namespace zxing { namespace multi { MultipleBarcodeReader::~MultipleBarcodeReader() { } std::vector > MultipleBarcodeReader::decodeMultiple(Ref image) { return decodeMultiple(image, DecodeHints::DEFAULT_HINT); } } // End zxing::multi namespace } // End zxing namespace yubioath-desktop/QZXing/zxing/zxing/multi/MultipleBarcodeReader.h000066400000000000000000000023441412677075700255530ustar00rootroot00000000000000#ifndef ZXING_MULTIPLE_BARCODE_READER_H #define ZXING_MULTIPLE_BARCODE_READER_H /* * Copyright 2011 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include #include #include namespace zxing { namespace multi { class MultipleBarcodeReader : public Counted { protected: MultipleBarcodeReader() {} public: virtual std::vector > decodeMultiple(Ref image); virtual std::vector > decodeMultiple(Ref image, DecodeHints hints) = 0; virtual ~MultipleBarcodeReader(); }; } } #endif // ZXING_MULTIPLE_BARCODE_READER_H yubioath-desktop/QZXing/zxing/zxing/multi/qrcode/000077500000000000000000000000001412677075700224565ustar00rootroot00000000000000yubioath-desktop/QZXing/zxing/zxing/multi/qrcode/QRCodeMultiReader.cpp000066400000000000000000000041551412677075700264420ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- /* * Copyright 2011 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include #include namespace zxing { namespace multi { QRCodeMultiReader::QRCodeMultiReader(){} QRCodeMultiReader::~QRCodeMultiReader(){} std::vector > QRCodeMultiReader::decodeMultiple(Ref image, DecodeHints hints) { std::vector > results; MultiDetector detector(image->getBlackMatrix()); std::vector > detectorResult = detector.detectMulti(hints); for (unsigned int i = 0; i < detectorResult.size(); i++) { try { Ref decoderResult = getDecoder().decode(detectorResult[i]->getBits()); ArrayRef< Ref > points = detectorResult[i]->getPoints(); Ref result = Ref(new Result(decoderResult->getText(), decoderResult->getRawBytes(), points, BarcodeFormat::QR_CODE)); // result->putMetadata(ResultMetadataType.BYTE_SEGMENTS, decoderResult->getByteSegments()); // result->putMetadata(ResultMetadataType.ERROR_CORRECTION_LEVEL, decoderResult->getECLevel().toString()); results.push_back(result); } catch (ReaderException const& re) { (void)re; // ignore and continue } } if (results.empty()){ throw ReaderException("No code detected"); } return results; } } // End zxing::multi namespace } // End zxing namespace yubioath-desktop/QZXing/zxing/zxing/multi/qrcode/QRCodeMultiReader.h000066400000000000000000000021441412677075700261030ustar00rootroot00000000000000#ifndef ZXING_QRCODE_MULTI_READER_H #define ZXING_QRCODE_MULTI_READER_H /* * Copyright 2011 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include namespace zxing { namespace multi { class QRCodeMultiReader: public zxing::qrcode::QRCodeReader, public MultipleBarcodeReader { public: QRCodeMultiReader(); virtual ~QRCodeMultiReader(); virtual std::vector > decodeMultiple(Ref image, DecodeHints hints); }; } } #endif // ZXING_QRCODE_MULTI_READER_H yubioath-desktop/QZXing/zxing/zxing/multi/qrcode/detector/000077500000000000000000000000001412677075700242675ustar00rootroot00000000000000yubioath-desktop/QZXing/zxing/zxing/multi/qrcode/detector/MultiDetector.cpp000066400000000000000000000030071412677075700275570ustar00rootroot00000000000000/* * Copyright 2011 ZXing authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include namespace zxing { namespace multi { using namespace zxing::qrcode; MultiDetector::MultiDetector(Ref image) : Detector(image) {} MultiDetector::~MultiDetector(){} std::vector > MultiDetector::detectMulti(DecodeHints hints){ Ref image = getImage(); MultiFinderPatternFinder finder = MultiFinderPatternFinder(image, hints.getResultPointCallback()); std::vector > info = finder.findMulti(hints); std::vector > result; for(unsigned int i = 0; i < info.size(); i++){ try{ result.push_back(processFinderPatternInfo(info[i])); } catch (ReaderException const& e){ (void)e; // ignore } } return result; } } // End zxing::multi namespace } // End zxing namespace yubioath-desktop/QZXing/zxing/zxing/multi/qrcode/detector/MultiDetector.h000066400000000000000000000020611412677075700272230ustar00rootroot00000000000000#ifndef ZXING_MULTI_DETECTOR_H #define ZXING_MULTI_DETECTOR_H /* * Copyright 2011 ZXing authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include namespace zxing { namespace multi { class MultiDetector : public zxing::qrcode::Detector { public: MultiDetector(Ref image); virtual ~MultiDetector(); virtual std::vector > detectMulti(DecodeHints hints); }; } } #endif // ZXING_MULTI_DETECTOR_H yubioath-desktop/QZXing/zxing/zxing/multi/qrcode/detector/MultiFinderPatternFinder.cpp000066400000000000000000000224341412677075700317100ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- /* * Copyright 2011 ZXing authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include #include #include using std::abs; using std::min; using std::sort; using std::vector; using zxing::Ref; using zxing::BitMatrix; using zxing::ReaderException; using zxing::qrcode::FinderPattern; using zxing::qrcode::FinderPatternInfo; using zxing::multi::MultiFinderPatternFinder; // VC++ using zxing::BitMatrix; using zxing::ResultPointCallback; using zxing::DecodeHints; const float MultiFinderPatternFinder::MAX_MODULE_COUNT_PER_EDGE = 180; const float MultiFinderPatternFinder::MIN_MODULE_COUNT_PER_EDGE = 9; const float MultiFinderPatternFinder::DIFF_MODSIZE_CUTOFF_PERCENT = 0.05f; const float MultiFinderPatternFinder::DIFF_MODSIZE_CUTOFF = 0.5f; namespace { bool compareModuleSize(Ref a, Ref b){ float value = a->getEstimatedModuleSize() - b->getEstimatedModuleSize(); return value < 0.0; } } MultiFinderPatternFinder::MultiFinderPatternFinder(Ref image, Ref resultPointCallback) : FinderPatternFinder(image, resultPointCallback) { } MultiFinderPatternFinder::~MultiFinderPatternFinder(){} vector > MultiFinderPatternFinder::findMulti(DecodeHints const& hints){ bool tryHarder = hints.getTryHarder(); Ref image = image_; // Protected member int maxI = image->getHeight(); int maxJ = image->getWidth(); // We are looking for black/white/black/white/black modules in // 1:1:3:1:1 ratio; this tracks the number of such modules seen so far // Let's assume that the maximum version QR Code we support takes up 1/4 the height of the // image, and then account for the center being 3 modules in size. This gives the smallest // number of pixels the center could be, so skip this often. When trying harder, look for all // QR versions regardless of how dense they are. int iSkip = (int) (maxI / (MAX_MODULES * 4.0f) * 3); if (iSkip < MIN_SKIP || tryHarder) { iSkip = MIN_SKIP; } int stateCount[5]; for (int i = iSkip - 1; i < maxI; i += iSkip) { // Get a row of black/white values stateCount[0] = 0; stateCount[1] = 0; stateCount[2] = 0; stateCount[3] = 0; stateCount[4] = 0; int currentState = 0; for (int j = 0; j < maxJ; j++) { if (image->get(j, i)) { // Black pixel if ((currentState & 1) == 1) { // Counting white pixels currentState++; } stateCount[currentState]++; } else { // White pixel if ((currentState & 1) == 0) { // Counting black pixels if (currentState == 4) { // A winner? if (foundPatternCross(stateCount) && handlePossibleCenter(stateCount, i, j)) { // Yes // Clear state to start looking again currentState = 0; stateCount[0] = 0; stateCount[1] = 0; stateCount[2] = 0; stateCount[3] = 0; stateCount[4] = 0; } else { // No, shift counts back by two stateCount[0] = stateCount[2]; stateCount[1] = stateCount[3]; stateCount[2] = stateCount[4]; stateCount[3] = 1; stateCount[4] = 0; currentState = 3; } } else { stateCount[++currentState]++; } } else { // Counting white pixels stateCount[currentState]++; } } } // for j=... if (foundPatternCross(stateCount)) { handlePossibleCenter(stateCount, i, maxJ); } // end if foundPatternCross } // for i=iSkip-1 ... vector > > patternInfo = selectBestPatterns(); vector > result; for (unsigned int i = 0; i < patternInfo.size(); i++) { vector > pattern = patternInfo[i]; pattern = FinderPatternFinder::orderBestPatterns(pattern); result.push_back(Ref(new FinderPatternInfo(pattern))); } return result; } vector > > MultiFinderPatternFinder::selectBestPatterns(){ vector > possibleCenters = possibleCenters_; int size = int(possibleCenters.size()); if (size < 3) { // Couldn't find enough finder patterns throw ReaderException("No code detected"); } vector > > results; /* * Begin HE modifications to safely detect multiple codes of equal size */ if (size == 3) { results.push_back(possibleCenters_); return results; } // Sort by estimated module size to speed up the upcoming checks //TODO do a sort based on module size sort(possibleCenters.begin(), possibleCenters.end(), compareModuleSize); /* * Now lets start: build a list of tuples of three finder locations that * - feature similar module sizes * - are placed in a distance so the estimated module count is within the QR specification * - have similar distance between upper left/right and left top/bottom finder patterns * - form a triangle with 90° angle (checked by comparing top right/bottom left distance * with pythagoras) * * Note: we allow each point to be used for more than one code region: this might seem * counterintuitive at first, but the performance penalty is not that big. At this point, * we cannot make a good quality decision whether the three finders actually represent * a QR code, or are just by chance layouted so it looks like there might be a QR code there. * So, if the layout seems right, lets have the decoder try to decode. */ for (int i1 = 0; i1 < (size - 2); i1++) { Ref p1 = possibleCenters[i1]; for (int i2 = i1 + 1; i2 < (size - 1); i2++) { Ref p2 = possibleCenters[i2]; // Compare the expected module sizes; if they are really off, skip float vModSize12 = (p1->getEstimatedModuleSize() - p2->getEstimatedModuleSize()) / min(p1->getEstimatedModuleSize(), p2->getEstimatedModuleSize()); float vModSize12A = abs(p1->getEstimatedModuleSize() - p2->getEstimatedModuleSize()); if (vModSize12A > DIFF_MODSIZE_CUTOFF && vModSize12 >= DIFF_MODSIZE_CUTOFF_PERCENT) { // break, since elements are ordered by the module size deviation there cannot be // any more interesting elements for the given p1. break; } for (int i3 = i2 + 1; i3 < size; i3++) { Ref p3 = possibleCenters[i3]; // Compare the expected module sizes; if they are really off, skip float vModSize23 = (p2->getEstimatedModuleSize() - p3->getEstimatedModuleSize()) / min(p2->getEstimatedModuleSize(), p3->getEstimatedModuleSize()); float vModSize23A = abs(p2->getEstimatedModuleSize() - p3->getEstimatedModuleSize()); if (vModSize23A > DIFF_MODSIZE_CUTOFF && vModSize23 >= DIFF_MODSIZE_CUTOFF_PERCENT) { // break, since elements are ordered by the module size deviation there cannot be // any more interesting elements for the given p1. break; } vector > test; test.push_back(p1); test.push_back(p2); test.push_back(p3); test = FinderPatternFinder::orderBestPatterns(test); // Calculate the distances: a = topleft-bottomleft, b=topleft-topright, c = diagonal Ref info = Ref(new FinderPatternInfo(test)); float dA = FinderPatternFinder::distance(info->getTopLeft(), info->getBottomLeft()); float dC = FinderPatternFinder::distance(info->getTopRight(), info->getBottomLeft()); float dB = FinderPatternFinder::distance(info->getTopLeft(), info->getTopRight()); // Check the sizes float estimatedModuleCount = (dA + dB) / (p1->getEstimatedModuleSize() * 2.0f); if (estimatedModuleCount > MAX_MODULE_COUNT_PER_EDGE || estimatedModuleCount < MIN_MODULE_COUNT_PER_EDGE) { continue; } // Calculate the difference of the edge lengths in percent float vABBC = abs((dA - dB) / min(dA, dB)); if (vABBC >= 0.1f) { continue; } // Calculate the diagonal length by assuming a 90° angle at topleft float dCpy = (float) sqrt(dA * dA + dB * dB); // Compare to the real distance in % float vPyC = abs((dC - dCpy) / min(dC, dCpy)); if (vPyC >= 0.1f) { continue; } // All tests passed! results.push_back(test); } // end iterate p3 } // end iterate p2 } // end iterate p1 if (results.empty()){ // Nothing found! throw ReaderException("No code detected"); } return results; } yubioath-desktop/QZXing/zxing/zxing/multi/qrcode/detector/MultiFinderPatternFinder.h000066400000000000000000000030261412677075700313510ustar00rootroot00000000000000#ifndef ZXING_MULTI_FINDER_PATTERN_FINDER_H #define ZXING_MULTI_FINDER_PATTERN_FINDER_H /* * Copyright 2011 ZXing authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include namespace zxing { namespace multi { class MultiFinderPatternFinder : zxing::qrcode::FinderPatternFinder { private: std::vector > > selectBestPatterns(); static const float MAX_MODULE_COUNT_PER_EDGE; static const float MIN_MODULE_COUNT_PER_EDGE; static const float DIFF_MODSIZE_CUTOFF_PERCENT; static const float DIFF_MODSIZE_CUTOFF; public: MultiFinderPatternFinder(Ref image, Ref resultPointCallback); virtual ~MultiFinderPatternFinder(); virtual std::vector > findMulti(DecodeHints const& hints); }; } } #endif // ZXING_MULTI_FINDER_PATTERN_FINDER_H yubioath-desktop/QZXing/zxing/zxing/oned/000077500000000000000000000000001412677075700207745ustar00rootroot00000000000000yubioath-desktop/QZXing/zxing/zxing/oned/CodaBarReader.cpp000066400000000000000000000260021412677075700241160ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- /* * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include #include #include #include #include #include #include #include using std::vector; using std::string; using zxing::NotFoundException; using zxing::FormatException; using zxing::ChecksumException; using zxing::Ref; using zxing::Result; using zxing::oned::CodaBarReader; // VC++ using zxing::BitArray; namespace { char const ALPHABET_STRING[] = "0123456789-$:/.+ABCD"; char const* const ALPHABET = ALPHABET_STRING; /** * These represent the encodings of characters, as patterns of wide and narrow bars. The 7 least-significant bits of * each int correspond to the pattern of wide and narrow, with 1s representing "wide" and 0s representing narrow. */ const int CHARACTER_ENCODINGS[] = { 0x003, 0x006, 0x009, 0x060, 0x012, 0x042, 0x021, 0x024, 0x030, 0x048, // 0-9 0x00c, 0x018, 0x045, 0x051, 0x054, 0x015, 0x01A, 0x029, 0x00B, 0x00E, // -$:/.+ABCD }; // minimal number of characters that should be present (inclusing start and stop characters) // under normal circumstances this should be set to 3, but can be set higher // as a last-ditch attempt to reduce false positives. const int MIN_CHARACTER_LENGTH = 3; // official start and end patterns const char STARTEND_ENCODING[] = {'A', 'B', 'C', 'D', 0}; // some codabar generator allow the codabar string to be closed by every // character. This will cause lots of false positives! // some industries use a checksum standard but this is not part of the original codabar standard // for more information see : http://www.mecsw.com/specs/codabar.html } // These values are critical for determining how permissive the decoding // will be. All stripe sizes must be within the window these define, as // compared to the average stripe size. const int CodaBarReader::MAX_ACCEPTABLE = (int) (PATTERN_MATCH_RESULT_SCALE_FACTOR * 2.0f); const int CodaBarReader::PADDING = (int) (PATTERN_MATCH_RESULT_SCALE_FACTOR * 1.5f); CodaBarReader::CodaBarReader() : counters(80, 0), counterLength(0) {} Ref CodaBarReader::decodeRow(int rowNumber, Ref row, zxing::DecodeHints /*hints*/) { { // Arrays.fill(counters, 0); int size = int(counters.size()); counters.resize(0); counters.resize(size); } setCounters(row); int startOffset = findStartPattern(); int nextStart = startOffset; decodeRowResult.clear(); do { int charOffset = toNarrowWidePattern(nextStart); if (charOffset == -1) { throw NotFoundException(); } // Hack: We store the position in the alphabet table into a // StringBuilder, so that we can access the decoded patterns in // validatePattern. We'll translate to the actual characters later. decodeRowResult.append(1, (zxing::byte)charOffset); nextStart += 8; // Stop as soon as we see the end character. if (decodeRowResult.length() > 1 && arrayContains(STARTEND_ENCODING, ALPHABET[charOffset])) { break; } } while (nextStart < counterLength); // no fixed end pattern so keep on reading while data is available // Look for whitespace after pattern: int trailingWhitespace = counters[nextStart - 1]; int lastPatternSize = 0; for (int i = -8; i < -1; i++) { lastPatternSize += counters[nextStart + i]; } // We need to see whitespace equal to 50% of the last pattern size, // otherwise this is probably a false positive. The exception is if we are // at the end of the row. (I.e. the barcode barely fits.) if (nextStart < counterLength && trailingWhitespace < lastPatternSize / 2) { throw NotFoundException(); } validatePattern(startOffset); // Translate character table offsets to actual characters. for (int i = 0; i < (int)decodeRowResult.length(); i++) { decodeRowResult[i] = ALPHABET[(int)decodeRowResult[i]]; } // Ensure a valid start and end character char startchar = decodeRowResult[0]; if (!arrayContains(STARTEND_ENCODING, startchar)) { throw NotFoundException(); } char endchar = decodeRowResult[decodeRowResult.length() - 1]; if (!arrayContains(STARTEND_ENCODING, endchar)) { throw NotFoundException(); } // remove stop/start characters character and check if a long enough string is contained if ((int)decodeRowResult.length() <= MIN_CHARACTER_LENGTH) { // Almost surely a false positive ( start + stop + at least 1 character) throw NotFoundException(); } decodeRowResult.erase(decodeRowResult.length() - 1, 1); decodeRowResult.erase(0, 1); int runningCount = 0; for (int i = 0; i < startOffset; i++) { runningCount += counters[i]; } float left = (float) runningCount; for (int i = startOffset; i < nextStart - 1; i++) { runningCount += counters[i]; } float right = (float) runningCount; ArrayRef< Ref > resultPoints(2); resultPoints[0] = Ref(new OneDResultPoint(left, (float) rowNumber)); resultPoints[1] = Ref(new OneDResultPoint(right, (float) rowNumber)); return Ref(new Result(Ref(new String(decodeRowResult)), ArrayRef(), resultPoints, BarcodeFormat::CODABAR)); } void CodaBarReader::validatePattern(int start) { // First, sum up the total size of our four categories of stripe sizes; vector sizes (4, 0); vector counts (4, 0); int end = int(decodeRowResult.length()) - 1; // We break out of this loop in the middle, in order to handle // inter-character spaces properly. int pos = start; for (int i = 0; true; i++) { int pattern = CHARACTER_ENCODINGS[(int)decodeRowResult[i]]; for (int j = 6; j >= 0; j--) { // Even j = bars, while odd j = spaces. Categories 2 and 3 are for // long stripes, while 0 and 1 are for short stripes. int category = (j & 1) + (pattern & 1) * 2; sizes[category] += counters[pos + j]; counts[category]++; pattern >>= 1; } if (i >= end) { break; } // We ignore the inter-character space - it could be of any size. pos += 8; } // Calculate our allowable size thresholds using fixed-point math. vector maxes (4, 0); vector mins (4, 0); // Define the threshold of acceptability to be the midpoint between the // average small stripe and the average large stripe. No stripe lengths // should be on the "wrong" side of that line. for (int i = 0; i < 2; i++) { mins[i] = 0; // Accept arbitrarily small "short" stripes. mins[i + 2] = ((sizes[i] << INTEGER_MATH_SHIFT) / counts[i] + (sizes[i + 2] << INTEGER_MATH_SHIFT) / counts[i + 2]) >> 1; maxes[i] = mins[i + 2]; maxes[i + 2] = (sizes[i + 2] * MAX_ACCEPTABLE + PADDING) / counts[i + 2]; } // Now verify that all of the stripes are within the thresholds. pos = start; for (int i = 0; true; i++) { int pattern = CHARACTER_ENCODINGS[(int)decodeRowResult[i]]; for (int j = 6; j >= 0; j--) { // Even j = bars, while odd j = spaces. Categories 2 and 3 are for // long stripes, while 0 and 1 are for short stripes. int category = (j & 1) + (pattern & 1) * 2; int size = counters[pos + j] << INTEGER_MATH_SHIFT; if (size < mins[category] || size > maxes[category]) { throw NotFoundException(); } pattern >>= 1; } if (i >= end) { break; } pos += 8; } } /** * Records the size of all runs of white and black pixels, starting with white. * This is just like recordPattern, except it records all the counters, and * uses our builtin "counters" member for storage. * @param row row to count from */ void CodaBarReader::setCounters(Ref row) { counterLength = 0; // Start from the first white bit. int i = row->getNextUnset(0); int end = row->getSize(); if (i >= end) { throw NotFoundException(); } bool isWhite = true; int count = 0; for (; i < end; i++) { if (row->get(i) ^ isWhite) { // that is, exactly one is true count++; } else { counterAppend(count); count = 1; isWhite = !isWhite; } } counterAppend(count); } void CodaBarReader::counterAppend(int e) { if (counterLength < (int)counters.size()) { counters[counterLength] = e; } else { counters.push_back(e); } counterLength++; } int CodaBarReader::findStartPattern() { for (int i = 1; i < counterLength; i += 2) { int charOffset = toNarrowWidePattern(i); if (charOffset != -1 && arrayContains(STARTEND_ENCODING, ALPHABET[charOffset])) { // Look for whitespace before start pattern, >= 50% of width of start pattern // We make an exception if the whitespace is the first element. int patternSize = 0; for (int j = i; j < i + 7; j++) { patternSize += counters[j]; } if (i == 1 || counters[i-1] >= patternSize / 2) { return i; } } } throw NotFoundException(); } bool CodaBarReader::arrayContains(char const array[], char key) { return strchr(array, key) != 0; } int CodaBarReader::toNarrowWidePattern(int position) { int end = position + 7; if (end >= counterLength) { return -1; } vector& theCounters = counters; int maxBar = 0; int minBar = std::numeric_limits::max(); for (int j = position; j < end; j += 2) { int currentCounter = theCounters[j]; if (currentCounter < minBar) { minBar = currentCounter; } if (currentCounter > maxBar) { maxBar = currentCounter; } } int thresholdBar = (minBar + maxBar) / 2; int maxSpace = 0; int minSpace = std::numeric_limits::max(); for (int j = position + 1; j < end; j += 2) { int currentCounter = theCounters[j]; if (currentCounter < minSpace) { minSpace = currentCounter; } if (currentCounter > maxSpace) { maxSpace = currentCounter; } } int thresholdSpace = (minSpace + maxSpace) / 2; int bitmask = 1 << 7; int pattern = 0; for (int i = 0; i < 7; i++) { int threshold = (i & 1) == 0 ? thresholdBar : thresholdSpace; bitmask >>= 1; if (theCounters[position + i] > threshold) { pattern |= bitmask; } } for (int i = 0; i < ZXING_ARRAY_LEN(CHARACTER_ENCODINGS); i++) { if (CHARACTER_ENCODINGS[i] == pattern) { return i; } } return -1; } yubioath-desktop/QZXing/zxing/zxing/oned/CodaBarReader.h000066400000000000000000000030041412677075700235600ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- #ifndef ZXING_CODA_BAR_READER_H #define ZXING_CODA_BAR_READER_H /* * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include namespace zxing { namespace oned { class CodaBarReader : public OneDReader { private: static const int MAX_ACCEPTABLE; static const int PADDING; // Keep some instance variables to avoid reallocations std::string decodeRowResult; std::vector counters; int counterLength; public: CodaBarReader(); Ref decodeRow(int rowNumber, Ref row, DecodeHints hints); void validatePattern(int start); private: void setCounters(Ref row); void counterAppend(int e); int findStartPattern(); static bool arrayContains(char const array[], char key); int toNarrowWidePattern(int position); }; } } #endif // ZXING_CODA_BAR_READER_H yubioath-desktop/QZXing/zxing/zxing/oned/Code128Reader.cpp000066400000000000000000000403141412677075700237320ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- /* * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include using std::vector; using std::string; using zxing::NotFoundException; using zxing::FormatException; using zxing::ChecksumException; using zxing::Ref; using zxing::Result; using zxing::oned::Code128Reader; // VC++ using zxing::BitArray; const int Code128Reader::MAX_AVG_VARIANCE = int(PATTERN_MATCH_RESULT_SCALE_FACTOR * 250/1000); const int Code128Reader::MAX_INDIVIDUAL_VARIANCE = int(PATTERN_MATCH_RESULT_SCALE_FACTOR * 700/1000); namespace { const int CODE_SHIFT = 98; const int CODE_CODE_C = 99; const int CODE_CODE_B = 100; const int CODE_CODE_A = 101; const int CODE_FNC_1 = 102; const int CODE_FNC_2 = 97; const int CODE_FNC_3 = 96; const int CODE_FNC_4_A = 101; const int CODE_FNC_4_B = 100; const int CODE_START_A = 103; const int CODE_START_B = 104; const int CODE_START_C = 105; const int CODE_STOP = 106; const int CODE_PATTERNS_LENGTH = 107; const int CODE_PATTERNS[CODE_PATTERNS_LENGTH][6] = { {2, 1, 2, 2, 2, 2}, /* 0 */ {2, 2, 2, 1, 2, 2}, {2, 2, 2, 2, 2, 1}, {1, 2, 1, 2, 2, 3}, {1, 2, 1, 3, 2, 2}, {1, 3, 1, 2, 2, 2}, /* 5 */ {1, 2, 2, 2, 1, 3}, {1, 2, 2, 3, 1, 2}, {1, 3, 2, 2, 1, 2}, {2, 2, 1, 2, 1, 3}, {2, 2, 1, 3, 1, 2}, /* 10 */ {2, 3, 1, 2, 1, 2}, {1, 1, 2, 2, 3, 2}, {1, 2, 2, 1, 3, 2}, {1, 2, 2, 2, 3, 1}, {1, 1, 3, 2, 2, 2}, /* 15 */ {1, 2, 3, 1, 2, 2}, {1, 2, 3, 2, 2, 1}, {2, 2, 3, 2, 1, 1}, {2, 2, 1, 1, 3, 2}, {2, 2, 1, 2, 3, 1}, /* 20 */ {2, 1, 3, 2, 1, 2}, {2, 2, 3, 1, 1, 2}, {3, 1, 2, 1, 3, 1}, {3, 1, 1, 2, 2, 2}, {3, 2, 1, 1, 2, 2}, /* 25 */ {3, 2, 1, 2, 2, 1}, {3, 1, 2, 2, 1, 2}, {3, 2, 2, 1, 1, 2}, {3, 2, 2, 2, 1, 1}, {2, 1, 2, 1, 2, 3}, /* 30 */ {2, 1, 2, 3, 2, 1}, {2, 3, 2, 1, 2, 1}, {1, 1, 1, 3, 2, 3}, {1, 3, 1, 1, 2, 3}, {1, 3, 1, 3, 2, 1}, /* 35 */ {1, 1, 2, 3, 1, 3}, {1, 3, 2, 1, 1, 3}, {1, 3, 2, 3, 1, 1}, {2, 1, 1, 3, 1, 3}, {2, 3, 1, 1, 1, 3}, /* 40 */ {2, 3, 1, 3, 1, 1}, {1, 1, 2, 1, 3, 3}, {1, 1, 2, 3, 3, 1}, {1, 3, 2, 1, 3, 1}, {1, 1, 3, 1, 2, 3}, /* 45 */ {1, 1, 3, 3, 2, 1}, {1, 3, 3, 1, 2, 1}, {3, 1, 3, 1, 2, 1}, {2, 1, 1, 3, 3, 1}, {2, 3, 1, 1, 3, 1}, /* 50 */ {2, 1, 3, 1, 1, 3}, {2, 1, 3, 3, 1, 1}, {2, 1, 3, 1, 3, 1}, {3, 1, 1, 1, 2, 3}, {3, 1, 1, 3, 2, 1}, /* 55 */ {3, 3, 1, 1, 2, 1}, {3, 1, 2, 1, 1, 3}, {3, 1, 2, 3, 1, 1}, {3, 3, 2, 1, 1, 1}, {3, 1, 4, 1, 1, 1}, /* 60 */ {2, 2, 1, 4, 1, 1}, {4, 3, 1, 1, 1, 1}, {1, 1, 1, 2, 2, 4}, {1, 1, 1, 4, 2, 2}, {1, 2, 1, 1, 2, 4}, /* 65 */ {1, 2, 1, 4, 2, 1}, {1, 4, 1, 1, 2, 2}, {1, 4, 1, 2, 2, 1}, {1, 1, 2, 2, 1, 4}, {1, 1, 2, 4, 1, 2}, /* 70 */ {1, 2, 2, 1, 1, 4}, {1, 2, 2, 4, 1, 1}, {1, 4, 2, 1, 1, 2}, {1, 4, 2, 2, 1, 1}, {2, 4, 1, 2, 1, 1}, /* 75 */ {2, 2, 1, 1, 1, 4}, {4, 1, 3, 1, 1, 1}, {2, 4, 1, 1, 1, 2}, {1, 3, 4, 1, 1, 1}, {1, 1, 1, 2, 4, 2}, /* 80 */ {1, 2, 1, 1, 4, 2}, {1, 2, 1, 2, 4, 1}, {1, 1, 4, 2, 1, 2}, {1, 2, 4, 1, 1, 2}, {1, 2, 4, 2, 1, 1}, /* 85 */ {4, 1, 1, 2, 1, 2}, {4, 2, 1, 1, 1, 2}, {4, 2, 1, 2, 1, 1}, {2, 1, 2, 1, 4, 1}, {2, 1, 4, 1, 2, 1}, /* 90 */ {4, 1, 2, 1, 2, 1}, {1, 1, 1, 1, 4, 3}, {1, 1, 1, 3, 4, 1}, {1, 3, 1, 1, 4, 1}, {1, 1, 4, 1, 1, 3}, /* 95 */ {1, 1, 4, 3, 1, 1}, {4, 1, 1, 1, 1, 3}, {4, 1, 1, 3, 1, 1}, {1, 1, 3, 1, 4, 1}, {1, 1, 4, 1, 3, 1}, /* 100 */ {3, 1, 1, 1, 4, 1}, {4, 1, 1, 1, 3, 1}, {2, 1, 1, 4, 1, 2}, {2, 1, 1, 2, 1, 4}, {2, 1, 1, 2, 3, 2}, /* 105 */ {2, 3, 3, 1, 1, 1} }; } Code128Reader::Code128Reader(){} vector Code128Reader::findStartPattern(Ref row){ int width = row->getSize(); int rowOffset = row->getNextSet(0); int counterPosition = 0; vector counters (6, 0); int patternStart = rowOffset; bool isWhite = false; int patternLength = int(counters.size()); for (int i = rowOffset; i < width; i++) { if (row->get(i) ^ isWhite) { counters[counterPosition]++; } else { if (counterPosition == patternLength - 1) { int bestVariance = MAX_AVG_VARIANCE; int bestMatch = -1; for (int startCode = CODE_START_A; startCode <= CODE_START_C; startCode++) { int variance = patternMatchVariance(counters, CODE_PATTERNS[startCode], MAX_INDIVIDUAL_VARIANCE); if (variance < bestVariance) { bestVariance = variance; bestMatch = startCode; } } // Look for whitespace before start pattern, >= 50% of width of start pattern if (bestMatch >= 0 && row->isRange(std::max(0, patternStart - (i - patternStart) / 2), patternStart, false)) { vector resultValue (3, 0); resultValue[0] = patternStart; resultValue[1] = i; resultValue[2] = bestMatch; return resultValue; } patternStart += counters[0] + counters[1]; for (int y = 2; y < patternLength; y++) { counters[y - 2] = counters[y]; } counters[patternLength - 2] = 0; counters[patternLength - 1] = 0; counterPosition--; } else { counterPosition++; } counters[counterPosition] = 1; isWhite = !isWhite; } } throw NotFoundException(); } int Code128Reader::decodeCode(Ref row, vector& counters, int rowOffset) { recordPattern(row, rowOffset, counters); int bestVariance = MAX_AVG_VARIANCE; // worst variance we'll accept int bestMatch = -1; for (int d = 0; d < CODE_PATTERNS_LENGTH; d++) { int const* const pattern = CODE_PATTERNS[d]; int variance = patternMatchVariance(counters, pattern, MAX_INDIVIDUAL_VARIANCE); if (variance < bestVariance) { bestVariance = variance; bestMatch = d; } } // TODO We're overlooking the fact that the STOP pattern has 7 values, not 6. if (bestMatch >= 0) { return bestMatch; } else { throw NotFoundException(); } } Ref Code128Reader::decodeRow(int rowNumber, Ref row, zxing::DecodeHints hints) { bool convertFNC1 = hints.containsFormat(zxing::BarcodeFormat(zxing::BarcodeFormat::Value::ASSUME_GS1)); vector startPatternInfo (findStartPattern(row)); int startCode = startPatternInfo[2]; int codeSet; switch (startCode) { case CODE_START_A: codeSet = CODE_CODE_A; break; case CODE_START_B: codeSet = CODE_CODE_B; break; case CODE_START_C: codeSet = CODE_CODE_C; break; default: throw FormatException(); } bool done = false; bool isNextShifted = false; string result; vector rawCodes(20, 0); int lastStart = startPatternInfo[0]; int nextStart = startPatternInfo[1]; vector counters (6, 0); int lastCode = 0; int code = 0; int checksumTotal = startCode; int multiplier = 0; bool lastCharacterWasPrintable = true; bool upperMode = false; bool shiftUpperMode = false; std::ostringstream oss; while (!done) { bool unshift = isNextShifted; isNextShifted = false; // Save off last code lastCode = code; code = decodeCode(row, counters, nextStart); // Remember whether the last code was printable or not (excluding CODE_STOP) if (code != CODE_STOP) { lastCharacterWasPrintable = true; } // Add to checksum computation (if not CODE_STOP of course) if (code != CODE_STOP) { multiplier++; checksumTotal += multiplier * code; } // Advance to where the next code will to start lastStart = nextStart; for (int i = 0, e = int(counters.size()); i < e; i++) { nextStart += counters[i]; } // Take care of illegal start codes switch (code) { case CODE_START_A: case CODE_START_B: case CODE_START_C: throw FormatException(); } switch (codeSet) { case CODE_CODE_A: if (code < 64) { if (shiftUpperMode == upperMode) { result.append(1,(zxing::byte) (' ' + code)); } else { result.append(1,(zxing::byte) (' ' + code + 128)); } shiftUpperMode = false; } else if (code < 96) { if (shiftUpperMode == upperMode) { result.append(1, (zxing::byte) (code - 64)); } else { result.append(1, (zxing::byte) (code + 64)); } shiftUpperMode = false; } else { // Don't let CODE_STOP, which always appears, affect whether whether we think the // last code was printable or not. if (code != CODE_STOP) { lastCharacterWasPrintable = false; } switch (code) { case CODE_FNC_1: if (convertFNC1) { if (result.length() == 0){ // GS1 specification 5.4.3.7. and 5.4.6.4. If the first char after the start code // is FNC1 then this is GS1-128. We add the symbology identifier. result.append("]C1"); } else { // GS1 specification 5.4.7.5. Every subsequent FNC1 is returned as ASCII 29 (GS) result.append(1, (zxing::byte) 29); } } break; case CODE_FNC_2: case CODE_FNC_3: break; case CODE_FNC_4_A: if (!upperMode && shiftUpperMode) { upperMode = true; shiftUpperMode = false; } else if (upperMode && shiftUpperMode) { upperMode = false; shiftUpperMode = false; } else { shiftUpperMode = true; } break; case CODE_SHIFT: isNextShifted = true; codeSet = CODE_CODE_B; break; case CODE_CODE_B: codeSet = CODE_CODE_B; break; case CODE_CODE_C: codeSet = CODE_CODE_C; break; case CODE_STOP: done = true; break; } } break; case CODE_CODE_B: if (code < 96) { if (shiftUpperMode == upperMode) { result.append(1, (zxing::byte) (' ' + code)); } else { result.append(1, (zxing::byte) (' ' + code + 128)); } shiftUpperMode = false; } else { if (code != CODE_STOP) { lastCharacterWasPrintable = false; } switch (code) { case CODE_FNC_1: if (convertFNC1) { if (result.length() == 0) { // GS1 specification 5.4.3.7. and 5.4.6.4. If the first char after the start code // is FNC1 then this is GS1-128. We add the symbology identifier. result.append("]C1"); } else { // GS1 specification 5.4.7.5. Every subsequent FNC1 is returned as ASCII 29 (GS) result.append(1, (zxing::byte) 29); } } break; case CODE_FNC_2: case CODE_FNC_3: break; case CODE_FNC_4_B: if (!upperMode && shiftUpperMode) { upperMode = true; shiftUpperMode = false; } else if (upperMode && shiftUpperMode) { upperMode = false; shiftUpperMode = false; } else { shiftUpperMode = true; } break; case CODE_SHIFT: isNextShifted = true; codeSet = CODE_CODE_A; break; case CODE_CODE_A: codeSet = CODE_CODE_A; break; case CODE_CODE_C: codeSet = CODE_CODE_C; break; case CODE_STOP: done = true; break; } } break; case CODE_CODE_C: if (code < 100) { if (code < 10) { result.append(1, '0'); } oss.clear(); oss.str(""); oss << code; result.append(oss.str()); } else { if (code != CODE_STOP) { lastCharacterWasPrintable = false; } switch (code) { case CODE_FNC_1: if (convertFNC1) { if (result.length() == 0) { // GS1 specification 5.4.3.7. and 5.4.6.4. If the first char after the start code // is FNC1 then this is GS1-128. We add the symbology identifier. result.append("]C1"); } else { // GS1 specification 5.4.7.5. Every subsequent FNC1 is returned as ASCII 29 (GS) result.append(1, (zxing::byte) 29); } } break; case CODE_CODE_A: codeSet = CODE_CODE_A; break; case CODE_CODE_B: codeSet = CODE_CODE_B; break; case CODE_STOP: done = true; break; } } break; } // Unshift back to another code set if we were shifted if (unshift) { codeSet = codeSet == CODE_CODE_A ? CODE_CODE_B : CODE_CODE_A; } } int lastPatternSize = nextStart - lastStart; // Check for ample whitespace following pattern, but, to do this we first need to remember that // we fudged decoding CODE_STOP since it actually has 7 bars, not 6. There is a black bar left // to read off. Would be slightly better to properly read. Here we just skip it: nextStart = row->getNextUnset(nextStart); if (!row->isRange(nextStart, std::min(row->getSize(), nextStart + (nextStart - lastStart) / 2), false)) { throw NotFoundException(); } // Pull out from sum the value of the penultimate check code checksumTotal -= multiplier * lastCode; // lastCode is the checksum then: if (checksumTotal % 103 != lastCode) { throw ChecksumException(); } // Need to pull out the check digits from string int resultLength = result.length(); if (resultLength == 0) { // false positive throw NotFoundException(); } // Only bother if the result had at least one character, and if the checksum digit happened to // be a printable character. If it was just interpreted as a control code, nothing to remove. if (resultLength > 0 && lastCharacterWasPrintable) { if (codeSet == CODE_CODE_C) { result.erase(resultLength - 2, resultLength); } else { result.erase(resultLength - 1, resultLength); } } float left = (float) (startPatternInfo[1] + startPatternInfo[0]) / 2.0f; float right = lastStart + lastPatternSize / 2.0f; int rawCodesSize = rawCodes.size(); ArrayRef rawBytes (rawCodesSize); for (int i = 0; i < rawCodesSize; i++) { rawBytes[i] = rawCodes[i]; } ArrayRef< Ref > resultPoints(2); resultPoints[0] = Ref(new OneDResultPoint(left, (float) rowNumber)); resultPoints[1] = Ref(new OneDResultPoint(right, (float) rowNumber)); return Ref(new Result(Ref(new String(result)), rawBytes, resultPoints, BarcodeFormat::CODE_128)); } Code128Reader::~Code128Reader(){} zxing::BarcodeFormat Code128Reader::getBarcodeFormat(){ return BarcodeFormat::CODE_128; } yubioath-desktop/QZXing/zxing/zxing/oned/Code128Reader.h000066400000000000000000000026301412677075700233760ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- #ifndef ZXING_CODE_128_READER_H #define ZXING_CODE_128_READER_H /* * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include namespace zxing { namespace oned { class Code128Reader : public OneDReader { private: static const int MAX_AVG_VARIANCE; static const int MAX_INDIVIDUAL_VARIANCE; static std::vector findStartPattern(Ref row); static int decodeCode(Ref row, std::vector& counters, int rowOffset); public: Ref decodeRow(int rowNumber, Ref row, DecodeHints hints); Code128Reader(); ~Code128Reader(); BarcodeFormat getBarcodeFormat(); }; } } #endif // ZXING_CODE_128_READER_H yubioath-desktop/QZXing/zxing/zxing/oned/Code39Reader.cpp000066400000000000000000000243231412677075700236550ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- /* * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "Code39Reader.h" #include #include #include #include #include #include #include #include using std::vector; using zxing::Ref; using zxing::Result; using zxing::String; using zxing::NotFoundException; using zxing::ChecksumException; using zxing::oned::Code39Reader; // VC++ using zxing::BitArray; namespace { const char ALPHABET[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. *$/+%"; /** * These represent the encodings of characters, as patterns of wide and narrow * bars. * The 9 least-significant bits of each int correspond to the pattern of wide * and narrow, with 1s representing "wide" and 0s representing narrow. */ const int CHARACTER_ENCODINGS_LEN = 44; const int CHARACTER_ENCODINGS[CHARACTER_ENCODINGS_LEN] = { 0x034, 0x121, 0x061, 0x160, 0x031, 0x130, 0x070, 0x025, 0x124, 0x064, // 0-9 0x109, 0x049, 0x148, 0x019, 0x118, 0x058, 0x00D, 0x10C, 0x04C, 0x01C, // A-J 0x103, 0x043, 0x142, 0x013, 0x112, 0x052, 0x007, 0x106, 0x046, 0x016, // K-T 0x181, 0x0C1, 0x1C0, 0x091, 0x190, 0x0D0, 0x085, 0x184, 0x0C4, 0x094, // U-* 0x0A8, 0x0A2, 0x08A, 0x02A // $-% }; const int ASTERISK_ENCODING = 0x094; const char ALPHABET_STRING[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. *$/+%"; const std::string alphabet_string (ALPHABET_STRING); } void Code39Reader::init(bool usingCheckDigit_, bool extendedMode_) { usingCheckDigit = usingCheckDigit_; extendedMode = extendedMode_; decodeRowResult.reserve(20); counters.resize(9); } /** * Creates a reader that assumes all encoded data is data, and does not treat * the final character as a check digit. It will not decoded "extended * Code 39" sequences. */ Code39Reader::Code39Reader() { init(); } /** * Creates a reader that can be configured to check the last character as a * check digit. It will not decoded "extended Code 39" sequences. * * @param usingCheckDigit if true, treat the last data character as a check * digit, not data, and verify that the checksum passes. */ Code39Reader::Code39Reader(bool usingCheckDigit_) { init(usingCheckDigit_); } Code39Reader::Code39Reader(bool usingCheckDigit_, bool extendedMode_) { init(usingCheckDigit_, extendedMode_); } Ref Code39Reader::decodeRow(int rowNumber, Ref row, zxing::DecodeHints /*hints*/) { std::vector& theCounters (counters); { // Arrays.fill(counters, 0); int size = int(theCounters.size()); theCounters.resize(0); theCounters.resize(size); } std::string& result (decodeRowResult); result.clear(); vector start (findAsteriskPattern(row, theCounters)); // Read off white space int nextStart = row->getNextSet(start[1]); int end = row->getSize(); char decodedChar; int lastStart; do { recordPattern(row, nextStart, theCounters); int pattern = toNarrowWidePattern(theCounters); if (pattern < 0) { throw NotFoundException();; } decodedChar = patternToChar(pattern); result.append(1, decodedChar); lastStart = nextStart; for (int i = 0, end=int(theCounters.size()); i < end; i++) { nextStart += theCounters[i]; } // Read off white space nextStart = row->getNextSet(nextStart); } while (decodedChar != '*'); result.resize(decodeRowResult.length()-1);// remove asterisk // Look for whitespace after pattern: int lastPatternSize = 0; for (int i = 0, e = int(theCounters.size()); i < e; i++) { lastPatternSize += theCounters[i]; } int whiteSpaceAfterEnd = nextStart - lastStart - lastPatternSize; // If 50% of last pattern size, following last pattern, is not whitespace, // fail (but if it's whitespace to the very end of the image, that's OK) if (nextStart != end && (whiteSpaceAfterEnd >> 1) < lastPatternSize) { throw NotFoundException(); } if (usingCheckDigit) { int max = int(result.length()) - 1; int total = 0; for (int i = 0; i < max; i++) { total += int(alphabet_string.find_first_of(decodeRowResult[i], 0)); } if (result[max] != ALPHABET[total % 43]) { throw ChecksumException(); } result.resize(max); } if (result.length() == 0) { // Almost false positive throw NotFoundException(); } Ref resultString; if (extendedMode) { resultString = decodeExtended(result); } else { resultString = Ref(new String(result)); } float left = (float) (start[1] + start[0]) / 2.0f; float right = lastStart + lastPatternSize / 2.0f; ArrayRef< Ref > resultPoints (2); resultPoints[0] = Ref(new OneDResultPoint(left, (float) rowNumber)); resultPoints[1] = Ref(new OneDResultPoint(right, (float) rowNumber)); return Ref( new Result(resultString, ArrayRef(), resultPoints, BarcodeFormat::CODE_39) ); } vector Code39Reader::findAsteriskPattern(Ref row, vector& counters){ int width = row->getSize(); int rowOffset = row->getNextSet(0); int counterPosition = 0; int patternStart = rowOffset; bool isWhite = false; int patternLength = int(counters.size()); for (int i = rowOffset; i < width; i++) { if (row->get(i) ^ isWhite) { counters[counterPosition]++; } else { if (counterPosition == patternLength - 1) { // Look for whitespace before start pattern, >= 50% of width of // start pattern. if (toNarrowWidePattern(counters) == ASTERISK_ENCODING && row->isRange(std::max(0, patternStart - ((i - patternStart) >> 1)), patternStart, false)) { vector resultValue (2, 0); resultValue[0] = patternStart; resultValue[1] = i; return resultValue; } patternStart += counters[0] + counters[1]; for (int y = 2; y < patternLength; y++) { counters[y - 2] = counters[y]; } counters[patternLength - 2] = 0; counters[patternLength - 1] = 0; counterPosition--; } else { counterPosition++; } counters[counterPosition] = 1; isWhite = !isWhite; } } throw NotFoundException(); } // For efficiency, returns -1 on failure. Not throwing here saved as many as // 700 exceptions per image when using some of our blackbox images. int Code39Reader::toNarrowWidePattern(vector& counters){ int numCounters = int(counters.size()); int maxNarrowCounter = 0; int wideCounters; do { int minCounter = INT_MAX; for (int i = 0; i < numCounters; i++) { int counter = counters[i]; if (counter < minCounter && counter > maxNarrowCounter) { minCounter = counter; } } maxNarrowCounter = minCounter; wideCounters = 0; int totalWideCountersWidth = 0; int pattern = 0; for (int i = 0; i < numCounters; i++) { int counter = counters[i]; if (counters[i] > maxNarrowCounter) { pattern |= 1 << (numCounters - 1 - i); wideCounters++; totalWideCountersWidth += counter; } } if (wideCounters == 3) { // Found 3 wide counters, but are they close enough in width? // We can perform a cheap, conservative check to see if any individual // counter is more than 1.5 times the average: for (int i = 0; i < numCounters && wideCounters > 0; i++) { int counter = counters[i]; if (counters[i] > maxNarrowCounter) { wideCounters--; // totalWideCountersWidth = 3 * average, so this checks if // counter >= 3/2 * average. if ((counter << 1) >= totalWideCountersWidth) { return -1; } } } return pattern; } } while (wideCounters > 3); return -1; } char Code39Reader::patternToChar(int pattern){ for (int i = 0; i < CHARACTER_ENCODINGS_LEN; i++) { if (CHARACTER_ENCODINGS[i] == pattern) { return ALPHABET[i]; } } throw ReaderException(""); } Ref Code39Reader::decodeExtended(std::string encoded){ int length = int(encoded.length()); std::string tmpDecoded; for (int i = 0; i < length; i++) { char c = encoded[i]; if (c == '+' || c == '$' || c == '%' || c == '/') { char next = encoded[i + 1]; char decodedChar = '\0'; switch (c) { case '+': // +A to +Z map to a to z if (next >= 'A' && next <= 'Z') { decodedChar = (zxing::byte) (next + 32); } else { throw ReaderException(""); } break; case '$': // $A to $Z map to control codes SH to SB if (next >= 'A' && next <= 'Z') { decodedChar = (zxing::byte) (next - 64); } else { throw ReaderException(""); } break; case '%': // %A to %E map to control codes ESC to US if (next >= 'A' && next <= 'E') { decodedChar = (zxing::byte) (next - 38); } else if (next >= 'F' && next <= 'W') { decodedChar = (zxing::byte) (next - 11); } else { throw ReaderException(""); } break; case '/': // /A to /O map to ! to , and /Z maps to : if (next >= 'A' && next <= 'O') { decodedChar = (zxing::byte) (next - 32); } else if (next == 'Z') { decodedChar = ':'; } else { throw ReaderException(""); } break; } tmpDecoded.append(1, decodedChar); // bump up i again since we read two characters i++; } else { tmpDecoded.append(1, c); } } Ref decoded(new String(tmpDecoded)); return decoded; } yubioath-desktop/QZXing/zxing/zxing/oned/Code39Reader.h000066400000000000000000000035501412677075700233210ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- #ifndef ZXING_CODE_39_READER_H #define ZXING_CODE_39_READER_H /* * Code39Reader.h * ZXing * * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include namespace zxing { namespace oned { /** *

Decodes Code 39 barcodes. This does not support "Full ASCII Code 39" yet.

* Ported form Java (author Sean Owen) * @author Lukasz Warchol */ class Code39Reader : public OneDReader { private: bool usingCheckDigit; bool extendedMode; std::string decodeRowResult; std::vector counters; void init(bool usingCheckDigit = false, bool extendedMode = false); static std::vector findAsteriskPattern(Ref row, std::vector& counters); static int toNarrowWidePattern(std::vector& counters); static char patternToChar(int pattern); static Ref decodeExtended(std::string encoded); void append(char* s, char c); public: Code39Reader(); Code39Reader(bool usingCheckDigit_); Code39Reader(bool usingCheckDigit_, bool extendedMode_); Ref decodeRow(int rowNumber, Ref row, DecodeHints hints); }; } } #endif // ZXING_CODE_39_READER_H yubioath-desktop/QZXing/zxing/zxing/oned/Code93Reader.cpp000066400000000000000000000213501412677075700236520ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- /* * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "Code93Reader.h" #include #include #include #include #include #include #include #include using std::vector; using std::string; using zxing::Ref; using zxing::Result; using zxing::String; using zxing::NotFoundException; using zxing::ChecksumException; using zxing::oned::Code93Reader; // VC++ using zxing::BitArray; namespace { char const ALPHABET[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. $/+%abcd*"; string ALPHABET_STRING (ALPHABET); /** * These represent the encodings of characters, as patterns of wide and narrow bars. * The 9 least-significant bits of each int correspond to the pattern of wide and narrow. */ int const CHARACTER_ENCODINGS[] = { 0x114, 0x148, 0x144, 0x142, 0x128, 0x124, 0x122, 0x150, 0x112, 0x10A, // 0-9 0x1A8, 0x1A4, 0x1A2, 0x194, 0x192, 0x18A, 0x168, 0x164, 0x162, 0x134, // A-J 0x11A, 0x158, 0x14C, 0x146, 0x12C, 0x116, 0x1B4, 0x1B2, 0x1AC, 0x1A6, // K-T 0x196, 0x19A, 0x16C, 0x166, 0x136, 0x13A, // U-Z 0x12E, 0x1D4, 0x1D2, 0x1CA, 0x16E, 0x176, 0x1AE, // - - % 0x126, 0x1DA, 0x1D6, 0x132, 0x15E, // Control chars? $-* }; int const CHARACTER_ENCODINGS_LENGTH = (int)sizeof(CHARACTER_ENCODINGS)/sizeof(CHARACTER_ENCODINGS[0]); const int ASTERISK_ENCODING = CHARACTER_ENCODINGS[47]; } Code93Reader::Code93Reader() { decodeRowResult.reserve(20); counters.resize(6); } Ref Code93Reader::decodeRow(int rowNumber, Ref row, zxing::DecodeHints /*hints*/) { Range start (findAsteriskPattern(row)); // Read off white space int nextStart = row->getNextSet(start[1]); int end = row->getSize(); vector& theCounters (counters); { // Arrays.fill(counters, 0); int size = int(theCounters.size()); theCounters.resize(0); theCounters.resize(size); } string& result (decodeRowResult); result.clear(); char decodedChar; int lastStart; do { recordPattern(row, nextStart, theCounters); int pattern = toPattern(theCounters); if (pattern < 0) { throw NotFoundException(); } decodedChar = patternToChar(pattern); result.append(1, decodedChar); lastStart = nextStart; for(int i=0, e=int(theCounters.size()); i < e; ++i) { nextStart += theCounters[i]; } // Read off white space nextStart = row->getNextSet(nextStart); } while (decodedChar != '*'); result.resize(result.length() - 1); // remove asterisk // Look for whitespace after pattern: int lastPatternSize = 0; for (int i = 0, e = int(theCounters.size()); i < e; i++) { lastPatternSize += theCounters[i]; } // Should be at least one more black module if (nextStart == end || !row->get(nextStart)) { throw NotFoundException(); } if (result.length() < 2) { // false positive -- need at least 2 checksum digits throw NotFoundException(); } checkChecksums(result); // Remove checksum digits result.resize(result.length() - 2); Ref resultString = decodeExtended(result); float left = (float) (start[1] + start[0]) / 2.0f; float right = lastStart + lastPatternSize / 2.0f; ArrayRef< Ref > resultPoints (2); resultPoints[0] = Ref(new OneDResultPoint(left, (float) rowNumber)); resultPoints[1] = Ref(new OneDResultPoint(right, (float) rowNumber)); return Ref(new Result( resultString, ArrayRef(), resultPoints, BarcodeFormat::CODE_93)); } Code93Reader::Range Code93Reader::findAsteriskPattern(Ref row) { int width = row->getSize(); int rowOffset = row->getNextSet(0); { // Arrays.fill(counters, 0); int size = int(counters.size()); counters.resize(0); counters.resize(size); } vector& theCounters (counters); int patternStart = rowOffset; bool isWhite = false; int patternLength = int(theCounters.size()); int counterPosition = 0; for (int i = rowOffset; i < width; i++) { if (row->get(i) ^ isWhite) { theCounters[counterPosition]++; } else { if (counterPosition == patternLength - 1) { if (toPattern(theCounters) == ASTERISK_ENCODING) { return Range(patternStart, i); } patternStart += theCounters[0] + theCounters[1]; for (int y = 2; y < patternLength; y++) { theCounters[y - 2] = theCounters[y]; } theCounters[patternLength - 2] = 0; theCounters[patternLength - 1] = 0; counterPosition--; } else { counterPosition++; } theCounters[counterPosition] = 1; isWhite = !isWhite; } } throw NotFoundException(); } int Code93Reader::toPattern(vector& counters) { int max = int(counters.size()); int sum = 0; for(int i=0, e=int(counters.size()); i> INTEGER_MATH_SHIFT; if ((scaledShifted & 0xFF) > 0x7F) { scaledUnshifted++; } if (scaledUnshifted < 1 || scaledUnshifted > 4) { return -1; } if ((i & 0x01) == 0) { for (int j = 0; j < scaledUnshifted; j++) { pattern = (pattern << 1) | 0x01; } } else { pattern <<= scaledUnshifted; } } return pattern; } char Code93Reader::patternToChar(int pattern) { for (int i = 0; i < CHARACTER_ENCODINGS_LENGTH; i++) { if (CHARACTER_ENCODINGS[i] == pattern) { return ALPHABET[i]; } } throw NotFoundException(); } Ref Code93Reader::decodeExtended(string const& encoded) { int length = int(encoded.length()); string decoded; for (int i = 0; i < length; i++) { char c = encoded[i]; if (c >= 'a' && c <= 'd') { if (i >= length - 1) { throw FormatException::getFormatInstance(); } char next = encoded[i + 1]; char decodedChar = '\0'; switch (c) { case 'd': // +A to +Z map to a to z if (next >= 'A' && next <= 'Z') { decodedChar = (zxing::byte) (next + 32); } else { throw FormatException::getFormatInstance(); } break; case 'a': // $A to $Z map to control codes SH to SB if (next >= 'A' && next <= 'Z') { decodedChar = (zxing::byte) (next - 64); } else { throw FormatException::getFormatInstance(); } break; case 'b': // %A to %E map to control codes ESC to US if (next >= 'A' && next <= 'E') { decodedChar = (zxing::byte) (next - 38); } else if (next >= 'F' && next <= 'W') { decodedChar = (zxing::byte) (next - 11); } else { throw FormatException::getFormatInstance(); } break; case 'c': // /A to /O map to ! to , and /Z maps to : if (next >= 'A' && next <= 'O') { decodedChar = (zxing::byte) (next - 32); } else if (next == 'Z') { decodedChar = ':'; } else { throw FormatException::getFormatInstance(); } break; } decoded.append(1, decodedChar); // bump up i again since we read two characters i++; } else { decoded.append(1, c); } } return Ref(new String(decoded)); } void Code93Reader::checkChecksums(string const& result) { int length = int(result.length()); checkOneChecksum(result, length - 2, 20); checkOneChecksum(result, length - 1, 15); } void Code93Reader::checkOneChecksum(string const& result, int checkPosition, int weightMax) { int weight = 1; int total = 0; for (int i = checkPosition - 1; i >= 0; i--) { total += weight * int(ALPHABET_STRING.find_first_of(result[i])); if (++weight > weightMax) { weight = 1; } } if (result[checkPosition] != ALPHABET[total % 47]) { throw ChecksumException(); } } yubioath-desktop/QZXing/zxing/zxing/oned/Code93Reader.h000066400000000000000000000033351412677075700233220ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- #ifndef ZXING_CODE_93_READER_H #define ZXING_CODE_93_READER_H /* * Code93Reader.h * ZXing * * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include namespace zxing { namespace oned { /** *

Decodes Code 93 barcodes. This does not support "Full ASCII Code 93" yet.

* Ported form Java (author Sean Owen) * @author Lukasz Warchol */ class Code93Reader : public OneDReader { public: Code93Reader(); Ref decodeRow(int rowNumber, Ref row, DecodeHints hints); private: std::string decodeRowResult; std::vector counters; Range findAsteriskPattern(Ref row); static int toPattern(std::vector& counters); static char patternToChar(int pattern); static Ref decodeExtended(std::string const& encoded); static void checkChecksums(std::string const& result); static void checkOneChecksum(std::string const& result, int checkPosition, int weightMax); }; } } #endif // ZXING_CODE_93_READER_H yubioath-desktop/QZXing/zxing/zxing/oned/EAN13Reader.cpp000066400000000000000000000052341412677075700233760ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- /* * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "EAN13Reader.h" #include using std::vector; using zxing::Ref; using zxing::BitArray; using zxing::oned::EAN13Reader; namespace { const int FIRST_DIGIT_ENCODINGS[10] = { 0x00, 0x0B, 0x0D, 0xE, 0x13, 0x19, 0x1C, 0x15, 0x16, 0x1A }; } EAN13Reader::EAN13Reader() : decodeMiddleCounters(4, 0) { } int EAN13Reader::decodeMiddle(Ref row, Range const& startRange, std::string& resultString) { vector& counters (decodeMiddleCounters); counters.clear(); counters.resize(4); int end = row->getSize(); int rowOffset = startRange[1]; int lgPatternFound = 0; for (int x = 0; x < 6 && rowOffset < end; x++) { int bestMatch = decodeDigit(row, counters, rowOffset, L_AND_G_PATTERNS); resultString.append(1, zxing::byte('0' + bestMatch % 10)); for (int i = 0, end = counters.size(); i = 10) { lgPatternFound |= 1 << (5 - x); } } determineFirstDigit(resultString, lgPatternFound); Range middleRange = findGuardPattern(row, rowOffset, true, MIDDLE_PATTERN) ; rowOffset = middleRange[1]; for (int x = 0; x < 6 && rowOffset < end; x++) { int bestMatch = decodeDigit(row, counters, rowOffset, L_PATTERNS); resultString.append(1, zxing::byte('0' + bestMatch)); for (int i = 0, end = counters.size(); i < end; i++) { rowOffset += counters[i]; } } return rowOffset; } void EAN13Reader::determineFirstDigit(std::string& resultString, int lgPatternFound) { // std::cerr << "K " << resultString << " " << lgPatternFound << " " < #include namespace zxing { namespace oned { class EAN13Reader : public UPCEANReader { private: std::vector decodeMiddleCounters; static void determineFirstDigit(std::string& resultString, int lgPatternFound); public: EAN13Reader(); int decodeMiddle(Ref row, Range const& startRange, std::string& resultString); BarcodeFormat getBarcodeFormat(); }; } } #endif // ZXING_EAN_13_READER_H yubioath-desktop/QZXing/zxing/zxing/oned/EAN8Reader.cpp000066400000000000000000000037561412677075700233310ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- /* * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "EAN8Reader.h" #include using std::vector; using zxing::oned::EAN8Reader; // VC++ using zxing::Ref; using zxing::BitArray; EAN8Reader::EAN8Reader() : decodeMiddleCounters(4, 0) {} int EAN8Reader::decodeMiddle(Ref row, Range const& startRange, std::string& result){ vector& counters (decodeMiddleCounters); counters[0] = 0; counters[1] = 0; counters[2] = 0; counters[3] = 0; int end = row->getSize(); int rowOffset = startRange[1]; for (int x = 0; x < 4 && rowOffset < end; x++) { int bestMatch = decodeDigit(row, counters, rowOffset, L_PATTERNS); result.append(1, zxing::byte('0' + bestMatch)); for (int i = 0, end = int(counters.size()); i < end; i++) { rowOffset += counters[i]; } } Range middleRange = findGuardPattern(row, rowOffset, true, MIDDLE_PATTERN); rowOffset = middleRange[1]; for (int x = 0; x < 4 && rowOffset < end; x++) { int bestMatch = decodeDigit(row, counters, rowOffset, L_PATTERNS); result.append(1, zxing::byte('0' + bestMatch)); for (int i = 0, end = counters.size(); i < end; i++) { rowOffset += counters[i]; } } return rowOffset; } zxing::BarcodeFormat EAN8Reader::getBarcodeFormat(){ return BarcodeFormat::EAN_8; } yubioath-desktop/QZXing/zxing/zxing/oned/EAN8Reader.h000066400000000000000000000022711412677075700227650ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- #ifndef ZXING_EAN_8_READER_H #define ZXING_EAN_8_READER_H /* * EAN8Reader.h * ZXing * * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include namespace zxing { namespace oned { class EAN8Reader : public UPCEANReader { private: std::vector decodeMiddleCounters; public: EAN8Reader(); int decodeMiddle(Ref row, Range const& startRange, std::string& resultString); BarcodeFormat getBarcodeFormat(); }; } } #endif // ZXING_EAN_8_READER_H yubioath-desktop/QZXing/zxing/zxing/oned/EANManufacturerOrgSupport.cpp000066400000000000000000000105671412677075700265360ustar00rootroot00000000000000/* * Copyright 2008 ZXing authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * Records EAN prefix to GS1 Member Organization, where the member organization * correlates strongly with a country. This is an imperfect means of identifying * a country of origin by EAN-13 barcode value. See * * http://en.wikipedia.org/wiki/List_of_GS1_country_codes. * * @author Sean Owen */ #include #include #include namespace zxing { namespace oned { struct Country { std::vector range; std::string id; }; static Country Countries[] { { {0,19}, "US/CA" }, { {30,39}, "US" }, { {60,139}, "US/CA" }, { {300,379}, "FR" }, { {380}, "BG" }, { {383}, "SI" }, { {385}, "HR" }, { {387}, "BA" }, { {400,440}, "DE" }, { {450,459}, "JP" }, { {460,469}, "RU" }, { {471}, "TW" }, { {474}, "EE" }, { {475}, "LV" }, { {476}, "AZ" }, { {477}, "LT" }, { {478}, "UZ" }, { {479}, "LK" }, { {480}, "PH" }, { {481}, "BY" }, { {482}, "UA" }, { {484}, "MD" }, { {485}, "AM" }, { {486}, "GE" }, { {487}, "KZ" }, { {489}, "HK" }, { {490,499}, "JP" }, { {500,509}, "GB" }, { {520}, "GR" }, { {528}, "LB" }, { {529}, "CY" }, { {531}, "MK" }, { {535}, "MT" }, { {539}, "IE" }, { {540,549}, "BE/LU" }, { {560}, "PT" }, { {569}, "IS" }, { {570,579}, "DK" }, { {590}, "PL" }, { {594}, "RO" }, { {599}, "HU" }, { {600,601}, "ZA" }, { {603}, "GH" }, { {608}, "BH" }, { {609}, "MU" }, { {611}, "MA" }, { {613}, "DZ" }, { {616}, "KE" }, { {618}, "CI" }, { {619}, "TN" }, { {621}, "SY" }, { {622}, "EG" }, { {624}, "LY" }, { {625}, "JO" }, { {626}, "IR" }, { {627}, "KW" }, { {628}, "SA" }, { {629}, "AE" }, { {640,649}, "FI" }, { {690,695}, "CN" }, { {700,709}, "NO" }, { {729}, "IL" }, { {730,739}, "SE" }, { {740}, "GT" }, { {741}, "SV" }, { {742}, "HN" }, { {743}, "NI" }, { {744}, "CR" }, { {745}, "PA" }, { {746}, "DO" }, { {750}, "MX" }, { {754,755}, "CA" }, { {759}, "VE" }, { {760,769}, "CH" }, { {770}, "CO" }, { {773}, "UY" }, { {775}, "PE" }, { {777}, "BO" }, { {779}, "AR" }, { {780}, "CL" }, { {784}, "PY" }, { {785}, "PE" }, { {786}, "EC" }, { {789,790}, "BR" }, { {800,839}, "IT" }, { {840,849}, "ES" }, { {850}, "CU" }, { {858}, "SK" }, { {859}, "CZ" }, { {860}, "YU" }, { {865}, "MN" }, { {867}, "KP" }, { {868,869}, "TR" }, { {870,879}, "NL" }, { {880}, "KR" }, { {885}, "TH" }, { {888}, "SG" }, { {890}, "IN" }, { {893}, "VN" }, { {896}, "PK" }, { {899}, "ID" }, { {900,919}, "AT" }, { {930,939}, "AU" }, { {940,949}, "AZ" }, { {955}, "MY" }, { {958}, "MO" } }; Ref EANManufacturerOrgSupport::lookupCountryIdentifier(Ref& productCode) { int prefix = std::atoi(productCode->getText().substr(0, 3).c_str()); int size = (sizeof(Countries) / sizeof(Countries[0])); for (int i = 0; i < size; i++) { std::vector range = Countries[i].range; int start = range[0]; if (prefix < start) { return Ref(); } int end = range.size() == 1 ? start : range[1]; if (prefix <= end) { return Ref(new String(Countries[i].id)); } } return Ref(); } } } yubioath-desktop/QZXing/zxing/zxing/oned/EANManufacturerOrgSupport.h000066400000000000000000000017231412677075700261750ustar00rootroot00000000000000#ifndef ZXING_EAN_MANUFACTURER_ORG_SUPPORT_H #define ZXING_EAN_MANUFACTURER_ORG_SUPPORT_H /* * Copyright 2008 ZXing authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * 2019-05-08 translation from Java into C++ */ #include #include #include namespace zxing { class String; namespace oned { class EANManufacturerOrgSupport { public: static Ref lookupCountryIdentifier(Ref &productCode); }; } } #endif yubioath-desktop/QZXing/zxing/zxing/oned/ITFReader.cpp000066400000000000000000000250541412677075700232530ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- /* * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include #include #include #include #include #include using std::vector; using zxing::Ref; using zxing::ArrayRef; using zxing::Array; using zxing::Result; using zxing::FormatException; using zxing::NotFoundException; using zxing::oned::ITFReader; // VC++ using zxing::BitArray; #define VECTOR_INIT(v) v, v + sizeof(v)/sizeof(v[0]) namespace { const int W = 3; // Pixel width of a wide line const int N = 1; // Pixed width of a narrow line const int DEFAULT_ALLOWED_LENGTHS_[] = { 48, 44, 24, 20, 18, 16, 14, 12, 10, 8, 6 }; const ArrayRef DEFAULT_ALLOWED_LENGTHS (new Array(VECTOR_INIT(DEFAULT_ALLOWED_LENGTHS_))); /** * Start/end guard pattern. * * Note: The end pattern is reversed because the row is reversed before * searching for the END_PATTERN */ const int START_PATTERN_[] = {N, N, N, N}; const vector START_PATTERN (VECTOR_INIT(START_PATTERN_)); const int END_PATTERN_REVERSED_[] = {N, N, W}; const vector END_PATTERN_REVERSED (VECTOR_INIT(END_PATTERN_REVERSED_)); /** * Patterns of Wide / Narrow lines to indicate each digit */ const int PATTERNS[][5] = { {N, N, W, W, N}, // 0 {W, N, N, N, W}, // 1 {N, W, N, N, W}, // 2 {W, W, N, N, N}, // 3 {N, N, W, N, W}, // 4 {W, N, W, N, N}, // 5 {N, W, W, N, N}, // 6 {N, N, N, W, W}, // 7 {W, N, N, W, N}, // 8 {N, W, N, W, N} // 9 }; } ITFReader::ITFReader() : narrowLineWidth(-1) { } Ref ITFReader::decodeRow(int rowNumber, Ref row, zxing::DecodeHints /*hints*/) { // Find out where the Middle section (payload) starts & ends Range startRange = decodeStart(row); Range endRange = decodeEnd(row); std::string result; decodeMiddle(row, startRange[1], endRange[0], result); Ref resultString(new String(result)); ArrayRef allowedLengths; // Java hints stuff missing if (!allowedLengths) { allowedLengths = DEFAULT_ALLOWED_LENGTHS; } // To avoid false positives with 2D barcodes (and other patterns), make // an assumption that the decoded string must be 6, 10 or 14 digits. int length = resultString->size(); bool lengthOK = false; for (int i = 0, e = allowedLengths->size(); i < e; i++) { if (length == allowedLengths[i]) { lengthOK = true; break; } } if (!lengthOK) { throw FormatException(); } ArrayRef< Ref > resultPoints(2); resultPoints[0] = Ref(new OneDResultPoint(float(startRange[1]), float(rowNumber))); resultPoints[1] = Ref(new OneDResultPoint(float(endRange[0]), float(rowNumber))); return Ref(new Result(resultString, ArrayRef(), resultPoints, BarcodeFormat::ITF)); } /** * @param row row of black/white values to search * @param payloadStart offset of start pattern * @param resultString {@link StringBuffer} to append decoded chars to * @throws ReaderException if decoding could not complete successfully */ void ITFReader::decodeMiddle(Ref row, int payloadStart, int payloadEnd, std::string& resultString) { // Digits are interleaved in pairs - 5 black lines for one digit, and the // 5 // interleaved white lines for the second digit. // Therefore, need to scan 10 lines and then // split these into two arrays vector counterDigitPair(10, 0); vector counterBlack(5, 0); vector counterWhite(5, 0); while (payloadStart < payloadEnd) { // Get 10 runs of black/white. recordPattern(row, payloadStart, counterDigitPair); // Split them into each array for (int k = 0; k < 5; k++) { int twoK = k << 1; counterBlack[k] = counterDigitPair[twoK]; counterWhite[k] = counterDigitPair[twoK + 1]; } int bestMatch = decodeDigit(counterBlack); resultString.append(1, (zxing::byte) ('0' + bestMatch)); bestMatch = decodeDigit(counterWhite); resultString.append(1, (zxing::byte) ('0' + bestMatch)); for (int i = 0, e = int(counterDigitPair.size()); i < e; i++) { payloadStart += counterDigitPair[i]; } } } /** * Identify where the start of the middle / payload section starts. * * @param row row of black/white values to search * @return Array, containing index of start of 'start block' and end of * 'start block' * @throws ReaderException */ ITFReader::Range ITFReader::decodeStart(Ref row) { int endStart = skipWhiteSpace(row); Range startPattern = findGuardPattern(row, endStart, START_PATTERN); // Determine the width of a narrow line in pixels. We can do this by // getting the width of the start pattern and dividing by 4 because its // made up of 4 narrow lines. narrowLineWidth = (startPattern[1] - startPattern[0]) >> 2; validateQuietZone(row, startPattern[0]); return startPattern; } /** * Identify where the end of the middle / payload section ends. * * @param row row of black/white values to search * @return Array, containing index of start of 'end block' and end of 'end * block' * @throws ReaderException */ ITFReader::Range ITFReader::decodeEnd(Ref row) { // For convenience, reverse the row and then // search from 'the start' for the end block BitArray::Reverse r (row); int endStart = skipWhiteSpace(row); Range endPattern = findGuardPattern(row, endStart, END_PATTERN_REVERSED); // The start & end patterns must be pre/post fixed by a quiet zone. This // zone must be at least 10 times the width of a narrow line. // ref: http://www.barcode-1.net/i25code.html validateQuietZone(row, endPattern[0]); // Now recalculate the indices of where the 'endblock' starts & stops to // accommodate // the reversed nature of the search int temp = endPattern[0]; endPattern[0] = row->getSize() - endPattern[1]; endPattern[1] = row->getSize() - temp; return endPattern; } /** * The start & end patterns must be pre/post fixed by a quiet zone. This * zone must be at least 10 times the width of a narrow line. Scan back until * we either get to the start of the barcode or match the necessary number of * quiet zone pixels. * * Note: Its assumed the row is reversed when using this method to find * quiet zone after the end pattern. * * ref: http://www.barcode-1.net/i25code.html * * @param row bit array representing the scanned barcode. * @param startPattern index into row of the start or end pattern. * @throws ReaderException if the quiet zone cannot be found, a ReaderException is thrown. */ void ITFReader::validateQuietZone(Ref row, int startPattern) { int quietCount = this->narrowLineWidth * 10; // expect to find this many pixels of quiet zone for (int i = startPattern - 1; quietCount > 0 && i >= 0; i--) { if (row->get(i)) { break; } quietCount--; } if (quietCount != 0) { // Unable to find the necessary number of quiet zone pixels. throw NotFoundException(); } } /** * Skip all whitespace until we get to the first black line. * * @param row row of black/white values to search * @return index of the first black line. * @throws ReaderException Throws exception if no black lines are found in the row */ int ITFReader::skipWhiteSpace(Ref row) { int width = row->getSize(); int endStart = row->getNextSet(0); if (endStart == width) { throw NotFoundException(); } return endStart; } /** * @param row row of black/white values to search * @param rowOffset position to start search * @param pattern pattern of counts of number of black and white pixels that are * being searched for as a pattern * @return start/end horizontal offset of guard pattern, as an array of two * ints * @throws ReaderException if pattern is not found */ ITFReader::Range ITFReader::findGuardPattern(Ref row, int rowOffset, vector const& pattern) { // TODO: This is very similar to implementation in UPCEANReader. Consider if they can be // merged to a single method. int patternLength = int(pattern.size()); vector counters(patternLength); int width = row->getSize(); bool isWhite = false; int counterPosition = 0; int patternStart = rowOffset; for (int x = rowOffset; x < width; x++) { if (row->get(x) ^ isWhite) { counters[counterPosition]++; } else { if (counterPosition == patternLength - 1) { if (patternMatchVariance(counters, &pattern[0], MAX_INDIVIDUAL_VARIANCE) < MAX_AVG_VARIANCE) { return Range(patternStart, x); } patternStart += counters[0] + counters[1]; for (int y = 2; y < patternLength; y++) { counters[y - 2] = counters[y]; } counters[patternLength - 2] = 0; counters[patternLength - 1] = 0; counterPosition--; } else { counterPosition++; } counters[counterPosition] = 1; isWhite = !isWhite; } } throw NotFoundException(); } /** * Attempts to decode a sequence of ITF black/white lines into single * digit. * * @param counters the counts of runs of observed black/white/black/... values * @return The decoded digit * @throws ReaderException if digit cannot be decoded */ int ITFReader::decodeDigit(vector& counters){ int bestVariance = MAX_AVG_VARIANCE; // worst variance we'll accept int bestMatch = -1; int max = sizeof(PATTERNS)/sizeof(PATTERNS[0]); for (int i = 0; i < max; i++) { int const* pattern = PATTERNS[i]; int variance = patternMatchVariance(counters, pattern, MAX_INDIVIDUAL_VARIANCE); if (variance < bestVariance) { bestVariance = variance; bestMatch = i; } } if (bestMatch >= 0) { return bestMatch; } else { throw NotFoundException(); } } ITFReader::~ITFReader(){} yubioath-desktop/QZXing/zxing/zxing/oned/ITFReader.h000066400000000000000000000034741412677075700227220ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- #ifndef ZXING_ITF_READER_H #define ZXING_ITF_READER_H /* * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include namespace zxing { namespace oned { class ITFReader : public OneDReader { private: enum {MAX_AVG_VARIANCE = (unsigned int) (PATTERN_MATCH_RESULT_SCALE_FACTOR * 420/1000)}; enum {MAX_INDIVIDUAL_VARIANCE = (int) (PATTERN_MATCH_RESULT_SCALE_FACTOR * 780/1000)}; // Stores the actual narrow line width of the image being decoded. int narrowLineWidth; Range decodeStart(Ref row); Range decodeEnd(Ref row); static void decodeMiddle(Ref row, int payloadStart, int payloadEnd, std::string& resultString); void validateQuietZone(Ref row, int startPattern); static int skipWhiteSpace(Ref row); static Range findGuardPattern(Ref row, int rowOffset, std::vector const& pattern); static int decodeDigit(std::vector& counters); void append(char* s, char c); public: Ref decodeRow(int rowNumber, Ref row, DecodeHints hints); ITFReader(); ~ITFReader(); }; } } #endif // ZXING_ITF_READER_H yubioath-desktop/QZXing/zxing/zxing/oned/MultiFormatOneDReader.cpp000066400000000000000000000067641412677075700256510ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- /* * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include #include #include #include #include #include #include #include #include #include using zxing::Ref; using zxing::Result; using zxing::oned::MultiFormatOneDReader; using zxing::oned::rss::RSS14Reader; using zxing::oned::rss::RSSExpandedReader; // VC++ using zxing::DecodeHints; using zxing::BitArray; MultiFormatOneDReader::MultiFormatOneDReader(DecodeHints hints) : readers() { if (hints.containsFormat(BarcodeFormat::EAN_13) || hints.containsFormat(BarcodeFormat::EAN_8) || hints.containsFormat(BarcodeFormat::UPC_A) || hints.containsFormat(BarcodeFormat::UPC_E)) { readers.push_back(Ref(new MultiFormatUPCEANReader(hints))); } if (hints.containsFormat(BarcodeFormat::CODE_39)) { readers.push_back(Ref(new Code39Reader())); } if (hints.containsFormat(BarcodeFormat::CODE_93)) { readers.push_back(Ref(new Code93Reader())); } if (hints.containsFormat(BarcodeFormat::CODE_128)) { readers.push_back(Ref(new Code128Reader())); } if (hints.containsFormat(BarcodeFormat::ITF)) { readers.push_back(Ref(new ITFReader())); } if (hints.containsFormat(BarcodeFormat::CODABAR)) { readers.push_back(Ref(new CodaBarReader())); } if (hints.containsFormat(BarcodeFormat::RSS_14)) { readers.push_back(Ref(new RSS14Reader())); } if (hints.containsFormat(BarcodeFormat::RSS_EXPANDED)) { readers.push_back(Ref(new RSSExpandedReader())); } if (readers.size() == 0) { readers.push_back(Ref(new MultiFormatUPCEANReader(hints))); readers.push_back(Ref(new Code39Reader())); readers.push_back(Ref(new CodaBarReader())); readers.push_back(Ref(new Code93Reader())); readers.push_back(Ref(new Code128Reader())); readers.push_back(Ref(new ITFReader())); readers.push_back(Ref(new RSS14Reader())); readers.push_back(Ref(new RSSExpandedReader())); } } #include Ref MultiFormatOneDReader::decodeRow(int rowNumber, Ref row, zxing::DecodeHints hints) { int size = int(readers.size()); for (int i = 0; i < size; i++) { OneDReader* reader = readers[i]; try { Ref result = reader->decodeRow(rowNumber, row, hints); return result; } catch (ReaderException const& re) { (void)re; // continue } } throw NotFoundException(); } yubioath-desktop/QZXing/zxing/zxing/oned/MultiFormatOneDReader.h000066400000000000000000000021541412677075700253030ustar00rootroot00000000000000#ifndef ZXING_MULTI_FORMAT_ONED_READER_H #define ZXING_MULTI_FORMAT_ONED_READER_H /* * MultiFormatOneDReader.h * ZXing * * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include namespace zxing { namespace oned { class MultiFormatOneDReader : public OneDReader { private: std::vector > readers; public: MultiFormatOneDReader(DecodeHints hints); Ref decodeRow(int rowNumber, Ref row, DecodeHints hints); }; } } #endif // ZXING_MULTI_FORMAT_ONED_READER_H yubioath-desktop/QZXing/zxing/zxing/oned/MultiFormatUPCEANReader.cpp000066400000000000000000000103131412677075700257600ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- /* * MultiFormatUPCEANReader.cpp * ZXing * * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include #include #include #include #include #include #include #include #include using zxing::NotFoundException; using zxing::Ref; using zxing::Result; using zxing::oned::MultiFormatUPCEANReader; // VC++ using zxing::DecodeHints; using zxing::BitArray; MultiFormatUPCEANReader::MultiFormatUPCEANReader(DecodeHints hints) : readers() { if (hints.containsFormat(BarcodeFormat::EAN_13)) { readers.push_back(Ref(new EAN13Reader())); } else if (hints.containsFormat(BarcodeFormat::UPC_A)) { readers.push_back(Ref(new UPCAReader())); } if (hints.containsFormat(BarcodeFormat::EAN_8)) { readers.push_back(Ref(new EAN8Reader())); } if (hints.containsFormat(BarcodeFormat::UPC_E)) { readers.push_back(Ref(new UPCEReader())); } if (readers.size() == 0) { readers.push_back(Ref(new EAN13Reader())); // UPC-A is covered by EAN-13 readers.push_back(Ref(new EAN8Reader())); readers.push_back(Ref(new UPCEReader())); } } #include Ref MultiFormatUPCEANReader::decodeRow(int rowNumber, Ref row, DecodeHints hints) { // Compute this location once and reuse it on multiple implementations UPCEANReader::Range startGuardPattern = UPCEANReader::findStartGuardPattern(row); for (int i = 0, e = int(readers.size()); i < e; i++) { Ref reader = readers[i]; Ref result; try { result = reader->decodeRow(rowNumber, row, startGuardPattern, hints); } catch (ReaderException const& ignored) { (void)ignored; continue; } //added this because reader->decodeRow returns null if row is null //TODO: investigate why the execution reaches here with empty row. if(result.empty()) continue; // Special case: a 12-digit code encoded in UPC-A is identical // to a "0" followed by those 12 digits encoded as EAN-13. Each // will recognize such a code, UPC-A as a 12-digit string and // EAN-13 as a 13-digit string starting with "0". Individually // these are correct and their readers will both read such a // code and correctly call it EAN-13, or UPC-A, respectively. // // In this case, if we've been looking for both types, we'd like // to call it a UPC-A code. But for efficiency we only run the // EAN-13 decoder to also read UPC-A. So we special case it // here, and convert an EAN-13 result to a UPC-A result if // appropriate. bool ean13MayBeUPCA = (result->getBarcodeFormat() == BarcodeFormat::UPC_A || result->getBarcodeFormat() == BarcodeFormat::EAN_13) && result->getText()->charAt(0) == '0'; // Note: doesn't match Java which uses hints bool canReturnUPCA = true; if (ean13MayBeUPCA && canReturnUPCA) { // Transfer the metdata across Ref resultUPCA (new Result(result->getText()->substring(1), result->getRawBytes(), result->getResultPoints(), BarcodeFormat::UPC_A)); // needs java metadata stuff return resultUPCA; } return result; } throw NotFoundException(); } yubioath-desktop/QZXing/zxing/zxing/oned/MultiFormatUPCEANReader.h000066400000000000000000000023011412677075700254230ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- #ifndef ZXING_MULTI_FORMAT_UPC_EAN_READER_H #define ZXING_MULTI_FORMAT_UPC_EAN_READER_H /* * MultiFormatUPCEANReader.h * ZXing * * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include namespace zxing { namespace oned { class UPCEANReader; class MultiFormatUPCEANReader : public OneDReader { private: std::vector< Ref > readers; public: MultiFormatUPCEANReader(DecodeHints hints); Ref decodeRow(int rowNumber, Ref row, DecodeHints hints); }; } } #endif // ZXING_MULTI_FORMAT_UPC_EAN_READER_H yubioath-desktop/QZXing/zxing/zxing/oned/OneDReader.cpp000066400000000000000000000204001412677075700234440ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- /* * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include #include #include #include #include #include using std::vector; using zxing::Ref; using zxing::Result; using zxing::NotFoundException; using zxing::oned::OneDReader; // VC++ using zxing::BinaryBitmap; using zxing::BitArray; using zxing::DecodeHints; Ref OneDReader::decode(Ref image, DecodeHints hints) { try { return doDecode(image, hints); } catch (NotFoundException const& nfe) { // std::cerr << "trying harder" << std::endl; bool tryHarder = hints.getTryHarder(); if (tryHarder && image->isRotateSupported()) { // std::cerr << "v rotate" << std::endl; Ref rotatedImage(image->rotateCounterClockwise()); // std::cerr << "^ rotate" << std::endl; Ref result = doDecode(rotatedImage, hints); // Doesn't have java metadata stuff ArrayRef< Ref >& points (result->getResultPoints()); if (points && !points->empty()) { int height = rotatedImage->getHeight(); for (int i = 0; i < points->size(); i++) { points[i].reset(new OneDResultPoint(height - points[i]->getY() - 1, points[i]->getX())); } } // std::cerr << "tried harder" << std::endl; return result; } else { // std::cerr << "tried harder nfe" << std::endl; throw nfe; } } } #include Ref OneDReader::doDecode(Ref image, DecodeHints hints) { int width = image->getWidth(); int height = image->getHeight(); Ref row(new BitArray(width)); int middle = height >> 1; bool tryHarder = hints.getTryHarder(); int rowStep = std::max(1, height >> (tryHarder ? 8 : 5)); using namespace std; // cerr << "rS " << rowStep << " " << height << " " << tryHarder << endl; int maxLines; if (tryHarder) { maxLines = height; // Look at the whole image, not just the center } else { maxLines = 15; // 15 rows spaced 1/32 apart is roughly the middle half of the image } for (int x = 0; x < maxLines; x++) { // Scanning from the middle out. Determine which row we're looking at next: int rowStepsAboveOrBelow = (x + 1) >> 1; bool isAbove = (x & 0x01) == 0; // i.e. is x even? int rowNumber = middle + rowStep * (isAbove ? rowStepsAboveOrBelow : -rowStepsAboveOrBelow); if (false) { std::cerr << "rN " << rowNumber << " " << height << " " << middle << " " << rowStep << " " << isAbove << " " << rowStepsAboveOrBelow << std::endl; } if (rowNumber < 0 || rowNumber >= height) { // Oops, if we run off the top or bottom, stop break; } // Estimate black point for this row and load it: try { row = image->getBlackRow(rowNumber, row); } catch (NotFoundException const& ignored) { (void)ignored; continue; } // While we have the image data in a BitArray, it's fairly cheap to reverse it in place to // handle decoding upside down barcodes. for (int attempt = 0; attempt < 2; attempt++) { if (attempt == 1) { row->reverse(); // reverse the row and continue } try { // Look for a barcode // std::cerr << "rn " << rowNumber << " " << typeid(*this).name() << std::endl; Ref result = decodeRow(rowNumber, row, hints); // We found our barcode if (attempt == 1) { // But it was upside down, so note that // result.putMetadata(ResultMetadataType.ORIENTATION, new Integer(180)); // And remember to flip the result points horizontally. ArrayRef< Ref > points(result->getResultPoints()); if (points) { points[0] = Ref(new OneDResultPoint(width - points[0]->getX() - 1, points[0]->getY())); points[1] = Ref(new OneDResultPoint(width - points[1]->getX() - 1, points[1]->getY())); } } return result; } catch (ReaderException const& re) { (void)re; continue; } } } throw NotFoundException(); } int OneDReader::patternMatchVariance(vector& counters, vector const& pattern, int maxIndividualVariance) { return patternMatchVariance(counters, &pattern[0], maxIndividualVariance); } int OneDReader::patternMatchVariance(vector& counters, int const pattern[], int maxIndividualVariance) { int numCounters = int(counters.size()); unsigned int total = 0; unsigned int patternLength = 0; for (int i = 0; i < numCounters; i++) { total += counters[i]; patternLength += pattern[i]; } if (total < patternLength) { // If we don't even have one pixel per unit of bar width, assume this is too small // to reliably match, so fail: return INT_MAX; } // We're going to fake floating-point math in integers. We just need to use more bits. // Scale up patternLength so that intermediate values below like scaledCounter will have // more "significant digits" int unitBarWidth = (total << INTEGER_MATH_SHIFT) / patternLength; maxIndividualVariance = (maxIndividualVariance * unitBarWidth) >> INTEGER_MATH_SHIFT; int totalVariance = 0; for (int x = 0; x < numCounters; x++) { int counter = counters[x] << INTEGER_MATH_SHIFT; int scaledPattern = pattern[x] * unitBarWidth; int variance = counter > scaledPattern ? counter - scaledPattern : scaledPattern - counter; if (variance > maxIndividualVariance) { return INT_MAX; } totalVariance += variance; } return totalVariance / total; } void OneDReader::recordPattern(Ref row, int start, vector& counters) { int numCounters = int(counters.size()); for (int i = 0; i < numCounters; i++) { counters[i] = 0; } int end = row->getSize(); if (start >= end) { throw NotFoundException(); } bool isWhite = !row->get(start); int counterPosition = 0; int i = start; while (i < end) { if (row->get(i) ^ isWhite) { // that is, exactly one is true counters[counterPosition]++; } else { counterPosition++; if (counterPosition == numCounters) { break; } else { counters[counterPosition] = 1; isWhite = !isWhite; } } i++; } // If we read fully the last section of pixels and filled up our counters -- or filled // the last counter but ran off the side of the image, OK. Otherwise, a problem. if (!(counterPosition == numCounters || (counterPosition == numCounters - 1 && i == end))) { throw NotFoundException(); } } void OneDReader::recordPatternInReverse(Ref row, int start, vector& counters) { // This could be more efficient I guess int numTransitionsLeft = int(counters.size()); bool last = row->get(start); while (start > 0 && numTransitionsLeft >= 0) { if (row->get(--start) != last) { numTransitionsLeft--; last = !last; } } if (numTransitionsLeft >= 0) { throw NotFoundException(); } recordPattern(row, start + 1, counters); } OneDReader::~OneDReader() {} yubioath-desktop/QZXing/zxing/zxing/oned/OneDReader.h000066400000000000000000000047231412677075700231230ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- #ifndef ZXING_ONED_READER_H #define ZXING_ONED_READER_H /* * OneDReader.h * ZXing * * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include namespace zxing { namespace oned { class OneDReader : public Reader { private: Ref doDecode(Ref image, DecodeHints hints); protected: static const int INTEGER_MATH_SHIFT = 8; static int patternMatchVariance(std::vector& counters, std::vector const& pattern, int maxIndividualVariance); static int patternMatchVariance(std::vector& counters, int const pattern[], int maxIndividualVariance); protected: static const int PATTERN_MATCH_RESULT_SCALE_FACTOR = 1 << INTEGER_MATH_SHIFT; public: struct Range { private: int data[2]; public: Range() {} Range(int zero, int one) { data[0] = zero; data[1] = one; } int& operator [] (int index) { return data[index]; } int const& operator [] (int index) const { return data[index]; } }; virtual Ref decode(Ref image, DecodeHints hints); // Implementations must not throw any exceptions. If a barcode is not found on this row, // a empty ref should be returned e.g. return Ref(); virtual Ref decodeRow(int rowNumber, Ref row, DecodeHints hints) = 0; static void recordPattern(Ref row, int start, std::vector& counters); static void recordPatternInReverse(Ref row, int start, std::vector& counters); virtual ~OneDReader(); }; } } #endif // ZXING_ONED_READER_H yubioath-desktop/QZXing/zxing/zxing/oned/OneDResultPoint.cpp000066400000000000000000000014641412677075700245430ustar00rootroot00000000000000/* * OneDResultPoint.cpp * ZXing * * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "OneDResultPoint.h" namespace zxing { namespace oned { OneDResultPoint::OneDResultPoint(float posX, float posY) : ResultPoint(posX,posY) { } } } yubioath-desktop/QZXing/zxing/zxing/oned/OneDResultPoint.h000066400000000000000000000017041412677075700242050ustar00rootroot00000000000000#ifndef ZXING_ONED_RESULT_POINT_H #define ZXING_ONED_RESULT_POINT_H /* * OneDResultPoint.h * ZXing * * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include namespace zxing { namespace oned { class OneDResultPoint : public ResultPoint { public: OneDResultPoint(float posX, float posY); }; } } #endif // ZXING_ONED_RESULT_POINT_H yubioath-desktop/QZXing/zxing/zxing/oned/UPCAReader.cpp000066400000000000000000000044221412677075700233550ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- /* * UPCAReader.cpp * ZXing * * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "UPCAReader.h" #include using zxing::oned::UPCAReader; using zxing::Ref; using zxing::Result; // VC++ using zxing::BitArray; using zxing::BinaryBitmap; using zxing::DecodeHints; UPCAReader::UPCAReader() : ean13Reader() {} Ref UPCAReader::decodeRow(int rowNumber, Ref row, zxing::DecodeHints hints) { return maybeReturnResult(ean13Reader.decodeRow(rowNumber, row, hints)); } Ref UPCAReader::decodeRow(int rowNumber, Ref row, Range const& startGuardRange) { return maybeReturnResult(ean13Reader.decodeRow(rowNumber, row, startGuardRange)); } Ref UPCAReader::decode(Ref image, DecodeHints hints) { return maybeReturnResult(ean13Reader.decode(image, hints)); } int UPCAReader::decodeMiddle(Ref row, Range const& startRange, std::string& resultString) { return ean13Reader.decodeMiddle(row, startRange, resultString); } Ref UPCAReader::maybeReturnResult(Ref result) { if (result.empty()) { return result; } const std::string& text = (result->getText())->getText(); if (text[0] == '0') { Ref resultString(new String(text.substr(1))); Ref res(new Result(resultString, result->getRawBytes(), result->getResultPoints(), BarcodeFormat::UPC_A)); return res; } return Ref(); } zxing::BarcodeFormat UPCAReader::getBarcodeFormat(){ return BarcodeFormat::UPC_A; } yubioath-desktop/QZXing/zxing/zxing/oned/UPCAReader.h000066400000000000000000000026521412677075700230250ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- #ifndef ZXING_UPCA_READER_H #define ZXING_UPCA_READER_H /* * UPCAReader.h * ZXing * * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include namespace zxing { namespace oned { class UPCAReader : public UPCEANReader { private: EAN13Reader ean13Reader; static Ref maybeReturnResult(Ref result); public: UPCAReader(); int decodeMiddle(Ref row, Range const& startRange, std::string& resultString); Ref decodeRow(int rowNumber, Ref row, DecodeHints hints); Ref decodeRow(int rowNumber, Ref row, Range const& startGuardRange); Ref decode(Ref image, DecodeHints hints); BarcodeFormat getBarcodeFormat(); }; } } #endif // ZXING_UPCA_READER_H yubioath-desktop/QZXing/zxing/zxing/oned/UPCEANExtension2Support.cpp000066400000000000000000000061521412677075700260330ustar00rootroot00000000000000/* * Copyright 2008 ZXing authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * 2019-05-08 translation from Java into C++ */ #include #include #include #include #include #include #include #include #include namespace zxing { namespace oned { static int decodeMiddle(Ref row, int rowOffset_, std::string& resultString) { std::vector counters(4); counters[0] = 0; counters[1] = 0; counters[2] = 0; counters[3] = 0; int end = row->getSize(); int rowOffset = rowOffset_; int lgPatternFound = 0; for (int x = 0; x < 2 && rowOffset < end; x++) { int bestMatch = UPCEANReader::decodeDigit(row, counters, rowOffset, UPCEANReader::L_AND_G_PATTERNS); resultString += static_cast('0' + bestMatch % 10); for (int counter : counters) { rowOffset += counter; } if (bestMatch >= 10) { lgPatternFound |= 1 << (1 - x); } if (x != 1) { // Read off separator if not last rowOffset = row->getNextSet(rowOffset); rowOffset = row->getNextUnset(rowOffset); } } if (resultString.length() != 2) { throw NotFoundException(); } if (std::atoi(resultString.c_str()) % 4 !=lgPatternFound) { throw NotFoundException(); } return rowOffset; } Ref UPCEANExtension2Support::decodeRow(int rowNumber, Ref row, int extStartRangeBegin, int extStartRangeEnd) { std::string resultString; int range = decodeMiddle(row, extStartRangeEnd, resultString); ResultMetadata metadata; metadata.put(ResultMetadata::ISSUE_NUMBER, std::atoi(resultString.c_str())); ArrayRef< Ref > resultPoints(2); resultPoints[0] = Ref(new OneDResultPoint((extStartRangeBegin + extStartRangeEnd) / 2.0f, static_cast (rowNumber))); resultPoints[1] = Ref(new OneDResultPoint(static_cast (range), static_cast (rowNumber))); return Ref(new Result(Ref(new String(resultString)), ArrayRef(), resultPoints, BarcodeFormat::UPC_EAN_EXTENSION, "", metadata)); } } } yubioath-desktop/QZXing/zxing/zxing/oned/UPCEANExtension2Support.h000066400000000000000000000017351412677075700255020ustar00rootroot00000000000000#ifndef ZXING_UPCEAN_EXTENSION_2_SUPPORT_H #define ZXING_UPCEAN_EXTENSION_2_SUPPORT_H /* * Copyright 2008 ZXing authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * 2019-05-08 translation from Java into C++ */ #include namespace zxing { class Result; class BitArray; namespace oned { class UPCEANExtension2Support { public: static Ref decodeRow(int rowNumber, Ref row, int extStartRangeBegin, int extStartRangeEnd); }; } } #endif yubioath-desktop/QZXing/zxing/zxing/oned/UPCEANExtension5Support.cpp000066400000000000000000000114161412677075700260350ustar00rootroot00000000000000/* * Copyright 2008 ZXing authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * 2019-05-08 translation from Java into C++ */ #include #include #include #include #include #include #include #include #include namespace zxing { namespace oned { static int extensionChecksum(const std::string& s) { int length = static_cast(s.length()); int sum = 0; for (int i = length - 2; i >= 0; i -= 2) { sum += (int)s[i] - (int) '0'; } sum *= 3; for (int i = length - 1; i >= 0; i -= 2) { sum += (int)s[i] - (int) '0'; } sum *= 3; return sum % 10; } static int determineCheckDigit(int lgPatternFound) { static const int CHECK_DIGIT_ENCODINGS[] = { 0x18, 0x14, 0x12, 0x11, 0x0C, 0x06, 0x03, 0x0A, 0x09, 0x05 }; for (int d = 0; d < 10; d++) { if (lgPatternFound == CHECK_DIGIT_ENCODINGS[d]) { return d; } } return -1; } static int decodeMiddle(Ref row, int rowOffset_, std::string& resultString) { std::vector counters(4); counters[0] = 0; counters[1] = 0; counters[2] = 0; counters[3] = 0; int end = row->getSize(); int rowOffset = rowOffset_; int lgPatternFound = 0; for (int x = 0; x < 5 && rowOffset < end; x++) { int bestMatch = UPCEANReader::decodeDigit(row, counters, rowOffset, UPCEANReader::L_AND_G_PATTERNS); resultString += static_cast('0' + bestMatch % 10); for (int counter : counters) { rowOffset += counter; } if (bestMatch >= 10) { lgPatternFound |= 1 << (4 - x); } if (x != 4) { // Read off separator if not last rowOffset = row->getNextSet(rowOffset); rowOffset = row->getNextUnset(rowOffset); } } if (resultString.length() != 5) { throw NotFoundException(); } int checkDigit = determineCheckDigit(lgPatternFound); if (extensionChecksum(resultString) != checkDigit) { throw NotFoundException(); } return rowOffset; } static std::string parseExtension5String(const std::string& raw) { std::string currency; switch (raw.front()) { case '0': currency = "\xa3"; break; case '5': currency = "$"; break; case '9': // Reference: http://www.jollytech.com if (raw == "90000") { // No suggested retail price return std::string(); } if (raw == "99991") { // Complementary return "0.00"; } if (raw == "99990") { return "Used"; } // Otherwise... unknown currency? currency = ""; break; default: currency = ""; break; } int rawAmount = std::atoi(raw.substr(1).c_str()); std::stringstream buf; buf << currency << std::fixed << std::setprecision(2) << (float(rawAmount) / 100); return buf.str(); } Ref UPCEANExtension5Support::decodeRow(int rowNumber, Ref row, int extStartRangeBegin, int extStartRangeEnd) { std::string resultString; int range = decodeMiddle(row, extStartRangeEnd, resultString); ResultMetadata metadata; std::string value = parseExtension5String(resultString); if (!value.empty()) { metadata.put(ResultMetadata::SUGGESTED_PRICE, value); } ArrayRef< Ref > resultPoints(2); resultPoints[0] = Ref(new OneDResultPoint((extStartRangeBegin + extStartRangeEnd) / 2.0f, static_cast (rowNumber))); resultPoints[1] = Ref(new OneDResultPoint(static_cast (range), static_cast (rowNumber))); return Ref(new Result(Ref(new String(resultString)), ArrayRef(), resultPoints, BarcodeFormat::UPC_EAN_EXTENSION, "", metadata)); } } } yubioath-desktop/QZXing/zxing/zxing/oned/UPCEANExtension5Support.h000066400000000000000000000017351412677075700255050ustar00rootroot00000000000000#ifndef ZXING_UPCEAN_EXTENSION_5_SUPPORT_H #define ZXING_UPCEAN_EXTENSION_5_SUPPORT_H /* * Copyright 2008 ZXing authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * 2019-05-08 translation from Java into C++ */ #include namespace zxing { class Result; class BitArray; namespace oned { class UPCEANExtension5Support { public: static Ref decodeRow(int rowNumber, Ref row, int extStartRangeBegin, int extStartRangeEnd); }; } } #endif yubioath-desktop/QZXing/zxing/zxing/oned/UPCEANExtensionSupport.cpp000066400000000000000000000027711412677075700257540ustar00rootroot00000000000000/* * Copyright 2008 ZXing authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * 2019-05-08 translation from Java into C++ */ #include #include #include #include #include #include #include namespace zxing { namespace oned { static const std::vector EXTENSION_START_PATTERN = { 1, 1, 2 }; Ref UPCEANExtensionSupport::decodeRow(int rowNumber, Ref row, int rowOffset) { UPCEANReader::Range extStartRange = UPCEANReader::findGuardPattern(row, rowOffset, false, EXTENSION_START_PATTERN); try { return UPCEANExtension5Support::decodeRow(rowNumber, row, extStartRange[0], extStartRange[1]); } catch (NotFoundException const& /*nfe*/) { return UPCEANExtension2Support::decodeRow(rowNumber, row, extStartRange[0], extStartRange[1]); } } } // oned } // zxing yubioath-desktop/QZXing/zxing/zxing/oned/UPCEANExtensionSupport.h000066400000000000000000000016711412677075700254170ustar00rootroot00000000000000#ifndef ZXING_UPCEAN_EXTENSION_SUPPORT_H #define ZXING_UPCEAN_EXTENSION_SUPPORT_H /* * Copyright 2008 ZXing authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * 2019-05-08 translation from Java into C++ */ #include namespace zxing { class Result; class BitArray; namespace oned { class UPCEANExtensionSupport { public: static Ref decodeRow(int rowNumber, Ref row, int rowOffset); }; } } #endif yubioath-desktop/QZXing/zxing/zxing/oned/UPCEANReader.cpp000066400000000000000000000255501412677075700236050ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- /* * UPCEANReader.cpp * ZXing * * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include #include #include #include #include using std::vector; using std::string; using zxing::Ref; using zxing::Result; using zxing::NotFoundException; using zxing::FormatException; using zxing::ChecksumException; using zxing::oned::UPCEANReader; // VC++ using zxing::BitArray; using zxing::String; #define LEN(v) ((int)(sizeof(v)/sizeof(v[0]))) namespace { /** * Start/end guard pattern. */ const int START_END_PATTERN_[] = {1, 1, 1}; /** * Pattern marking the middle of a UPC/EAN pattern, separating the two halves. */ const int MIDDLE_PATTERN_[] = {1, 1, 1, 1, 1}; /** * "Odd", or "L" patterns used to encode UPC/EAN digits. */ const int L_PATTERNS_[][4] = { {3, 2, 1, 1}, // 0 {2, 2, 2, 1}, // 1 {2, 1, 2, 2}, // 2 {1, 4, 1, 1}, // 3 {1, 1, 3, 2}, // 4 {1, 2, 3, 1}, // 5 {1, 1, 1, 4}, // 6 {1, 3, 1, 2}, // 7 {1, 2, 1, 3}, // 8 {3, 1, 1, 2} // 9 }; /** * As above but also including the "even", or "G" patterns used to encode UPC/EAN digits. */ const int L_AND_G_PATTERNS_[][4] = { {3, 2, 1, 1}, // 0 {2, 2, 2, 1}, // 1 {2, 1, 2, 2}, // 2 {1, 4, 1, 1}, // 3 {1, 1, 3, 2}, // 4 {1, 2, 3, 1}, // 5 {1, 1, 1, 4}, // 6 {1, 3, 1, 2}, // 7 {1, 2, 1, 3}, // 8 {3, 1, 1, 2}, // 9 {1, 1, 2, 3}, // 10 reversed 0 {1, 2, 2, 2}, // 11 reversed 1 {2, 2, 1, 2}, // 12 reversed 2 {1, 1, 4, 1}, // 13 reversed 3 {2, 3, 1, 1}, // 14 reversed 4 {1, 3, 2, 1}, // 15 reversed 5 {4, 1, 1, 1}, // 16 reversed 6 {2, 1, 3, 1}, // 17 reversed 7 {3, 1, 2, 1}, // 18 reversed 8 {2, 1, 1, 3} // 19 reversed 9 }; } const int UPCEANReader::MAX_AVG_VARIANCE = (int)(PATTERN_MATCH_RESULT_SCALE_FACTOR * 0.48f); const int UPCEANReader::MAX_INDIVIDUAL_VARIANCE = (int)(PATTERN_MATCH_RESULT_SCALE_FACTOR * 0.7f); #define VECTOR_INIT(v) v, v + sizeof(v)/sizeof(v[0]) const vector UPCEANReader::START_END_PATTERN (VECTOR_INIT(START_END_PATTERN_)); const vector UPCEANReader::MIDDLE_PATTERN (VECTOR_INIT(MIDDLE_PATTERN_)); const vector UPCEANReader::L_PATTERNS (VECTOR_INIT(L_PATTERNS_)); const vector UPCEANReader::L_AND_G_PATTERNS (VECTOR_INIT(L_AND_G_PATTERNS_)); UPCEANReader::UPCEANReader() {} Ref UPCEANReader::decodeRow(int rowNumber, Ref row, zxing::DecodeHints hints) { return decodeRow(rowNumber, row, findStartGuardPattern(row), hints); } Ref UPCEANReader::decodeRow(int rowNumber, Ref row, Range const& startGuardRange, zxing::DecodeHints hints) { string& result = decodeRowStringBuffer; result.clear(); int endStart = decodeMiddle(row, startGuardRange, result); Range endRange = decodeEnd(row, endStart); // Make sure there is a quiet zone at least as big as the end pattern after the barcode. // The spec might want more whitespace, but in practice this is the maximum we can count on. int end = endRange[1]; int quietEnd = end + (end - endRange[0]); if (quietEnd >= row->getSize() || !row->isRange(end, quietEnd, false)) { throw NotFoundException(); } // UPC/EAN should never be less than 8 chars anyway if (result.length() < 8) { throw FormatException(); } Ref resultString (new String(result)); if (!checkChecksum(resultString)) { throw ChecksumException(); } float left = (float) (startGuardRange[1] + startGuardRange[0]) / 2.0f; float right = (float) (endRange[1] + endRange[0]) / 2.0f; BarcodeFormat format = getBarcodeFormat(); ArrayRef< Ref > resultPoints(2); resultPoints[0] = Ref(new OneDResultPoint(left, static_cast (rowNumber))); resultPoints[1] = Ref(new OneDResultPoint(right, static_cast (rowNumber))); Ref decodeResult (new Result(resultString, ArrayRef(), resultPoints, format)); int extensionLength = 0; try { Ref extensionResult = extensionReader.decodeRow(rowNumber, row, endRange[1]); if (extensionResult) { decodeResult->getMetadata().put(ResultMetadata::UPC_EAN_EXTENSION, extensionResult->getText()->getText()); decodeResult->getMetadata().putAll(extensionResult->getMetadata()); extensionLength = extensionResult->getText()->length(); for (const Ref& resultPoint: extensionResult->getResultPoints()->values()) { decodeResult->getResultPoints()->push_back(resultPoint); } } } catch (NotFoundException const& /*nfe*/) { // continue } std::set allowedExtensions = hints.getAllowedEanExtensions(); if (allowedExtensions.size() > 0) { bool valid = false; for (int length: allowedExtensions) { if (extensionLength == length) { valid = true; break; } } if (!valid) { throw NotFoundException(); } } if (format == BarcodeFormat::EAN_13 || format == BarcodeFormat::UPC_A) { Ref countryID = eanManSupport.lookupCountryIdentifier(resultString); if (countryID) { decodeResult->getMetadata().put(ResultMetadata::POSSIBLE_COUNTRY, countryID->getText()); } } return decodeResult; } UPCEANReader::Range UPCEANReader::findStartGuardPattern(Ref row) { bool foundStart = false; Range startRange; int nextStart = 0; vector counters(START_END_PATTERN.size(), 0); // std::cerr << "fsgp " << *row << std::endl; while (!foundStart) { for(int i=0; i < (int)START_END_PATTERN.size(); ++i) { counters[i] = 0; } startRange = findGuardPattern(row, nextStart, false, START_END_PATTERN, counters); // std::cerr << "sr " << startRange[0] << " " << startRange[1] << std::endl; int start = startRange[0]; nextStart = startRange[1]; // Make sure there is a quiet zone at least as big as the start pattern before the barcode. // If this check would run off the left edge of the image, do not accept this barcode, // as it is very likely to be a false positive. int quietStart = start - (nextStart - start); if (quietStart >= 0) { foundStart = row->isRange(quietStart, start, false); } } return startRange; } UPCEANReader::Range UPCEANReader::findGuardPattern(Ref row, int rowOffset, bool whiteFirst, vector const& pattern) { vector counters (pattern.size(), 0); return findGuardPattern(row, rowOffset, whiteFirst, pattern, counters); } UPCEANReader::Range UPCEANReader::findGuardPattern(Ref row, int rowOffset, bool whiteFirst, vector const& pattern, vector& counters) { // cerr << "fGP " << rowOffset << " " << whiteFirst << endl; if (false) { for(int i=0; i < (int)pattern.size(); ++i) { std::cerr << pattern[i]; } std::cerr << std::endl; } int patternLength = int(pattern.size()); int width = row->getSize(); bool isWhite = whiteFirst; rowOffset = whiteFirst ? row->getNextUnset(rowOffset) : row->getNextSet(rowOffset); int counterPosition = 0; int patternStart = rowOffset; for (int x = rowOffset; x < width; x++) { // std::cerr << "rg " << x << " " << row->get(x) << std::endl; if (row->get(x) ^ isWhite) { counters[counterPosition]++; } else { if (counterPosition == patternLength - 1) { if (patternMatchVariance(counters, pattern, MAX_INDIVIDUAL_VARIANCE) < MAX_AVG_VARIANCE) { return Range(patternStart, x); } patternStart += counters[0] + counters[1]; for (int y = 2; y < patternLength; y++) { counters[y - 2] = counters[y]; } counters[patternLength - 2] = 0; counters[patternLength - 1] = 0; counterPosition--; } else { counterPosition++; } counters[counterPosition] = 1; isWhite = !isWhite; } } throw NotFoundException(); } UPCEANReader::Range UPCEANReader::decodeEnd(Ref row, int endStart) { return findGuardPattern(row, endStart, false, START_END_PATTERN); } int UPCEANReader::decodeDigit(Ref row, vector & counters, int rowOffset, vector const& patterns) { recordPattern(row, rowOffset, counters); int bestVariance = MAX_AVG_VARIANCE; // worst variance we'll accept int bestMatch = -1; int max = int(patterns.size()); for (int i = 0; i < max; i++) { int const* pattern (patterns[i]); int variance = patternMatchVariance(counters, pattern, MAX_INDIVIDUAL_VARIANCE); if (variance < bestVariance) { bestVariance = variance; bestMatch = i; } } if (bestMatch >= 0) { return bestMatch; } else { throw NotFoundException(); } } /** * @return {@link #checkStandardUPCEANChecksum(String)} */ bool UPCEANReader::checkChecksum(Ref const& s) { return checkStandardUPCEANChecksum(s); } /** * Computes the UPC/EAN checksum on a string of digits, and reports * whether the checksum is correct or not. * * @param s string of digits to check * @return true iff string of digits passes the UPC/EAN checksum algorithm */ bool UPCEANReader::checkStandardUPCEANChecksum(Ref const& s_) { std::string const& s (s_->getText()); int length = int(s.length()); if (length == 0) { return false; } int sum = 0; for (int i = length - 2; i >= 0; i -= 2) { int digit = (int) s[i] - (int) '0'; if (digit < 0 || digit > 9) { return false; } sum += digit; } sum *= 3; for (int i = length - 1; i >= 0; i -= 2) { int digit = (int) s[i] - (int) '0'; if (digit < 0 || digit > 9) { return false; } sum += digit; } return sum % 10 == 0; } UPCEANReader::~UPCEANReader() { } yubioath-desktop/QZXing/zxing/zxing/oned/UPCEANReader.h000066400000000000000000000056171412677075700232540ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- #ifndef ZXING_UPC_EAN_READER_H #define ZXING_UPC_EAN_READER_H /* * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include #include #include namespace zxing { namespace oned { class UPCEANReader : public OneDReader { private: std::string decodeRowStringBuffer; UPCEANExtensionSupport extensionReader; EANManufacturerOrgSupport eanManSupport; static const int MAX_AVG_VARIANCE; static const int MAX_INDIVIDUAL_VARIANCE; static Range findStartGuardPattern(Ref row); virtual Range decodeEnd(Ref row, int endStart); static bool checkStandardUPCEANChecksum(Ref const& s); static Range findGuardPattern(Ref row, int rowOffset, bool whiteFirst, std::vector const& pattern, std::vector& counters); public: static const std::vector START_END_PATTERN; static const std::vector MIDDLE_PATTERN; static const std::vector L_PATTERNS; static const std::vector L_AND_G_PATTERNS; static Range findGuardPattern(Ref row, int rowOffset, bool whiteFirst, std::vector const& pattern); public: UPCEANReader(); virtual int decodeMiddle(Ref row, Range const& startRange, std::string& resultString) = 0; virtual Ref decodeRow(int rowNumber, Ref row, zxing::DecodeHints hints); virtual Ref decodeRow(int rowNumber, Ref row, Range const& range, zxing::DecodeHints hints = DecodeHints()); static int decodeDigit(Ref row, std::vector& counters, int rowOffset, std::vector const& patterns); virtual bool checkChecksum(Ref const& s); virtual BarcodeFormat getBarcodeFormat() = 0; virtual ~UPCEANReader(); friend class MultiFormatUPCEANReader; }; } } #endif // ZXING_UPC_EAN_READER_H yubioath-desktop/QZXing/zxing/zxing/oned/UPCEReader.cpp000066400000000000000000000101571412677075700233630ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- /* * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include using std::string; using std::vector; using zxing::Ref; using zxing::String; using zxing::oned::UPCEReader; // VC++ using zxing::BitArray; #define VECTOR_INIT(v) v, v + sizeof(v)/sizeof(v[0]) namespace { /** * The pattern that marks the middle, and end, of a UPC-E pattern. * There is no "second half" to a UPC-E barcode. */ const int MIDDLE_END_PATTERN_[6] = {1, 1, 1, 1, 1, 1}; const vector MIDDLE_END_PATTERN (VECTOR_INIT(MIDDLE_END_PATTERN_)); /** * See {@link #L_AND_G_PATTERNS}; these values similarly represent patterns of * even-odd parity encodings of digits that imply both the number system (0 or 1) * used, and the check digit. */ const int NUMSYS_AND_CHECK_DIGIT_PATTERNS[2][10] = { {0x38, 0x34, 0x32, 0x31, 0x2C, 0x26, 0x23, 0x2A, 0x29, 0x25}, {0x07, 0x0B, 0x0D, 0x0E, 0x13, 0x19, 0x1C, 0x15, 0x16, 0x1A} }; } UPCEReader::UPCEReader() { } int UPCEReader::decodeMiddle(Ref row, Range const& startRange, string& result) { vector& counters (decodeMiddleCounters); counters.clear(); counters.resize(4); int end = row->getSize(); int rowOffset = startRange[1]; int lgPatternFound = 0; for (int x = 0; x < 6 && rowOffset < end; x++) { int bestMatch = decodeDigit(row, counters, rowOffset, L_AND_G_PATTERNS); result.append(1, zxing::byte('0' + bestMatch % 10)); for (int i = 0, e = counters.size(); i < e; i++) { rowOffset += counters[i]; } if (bestMatch >= 10) { lgPatternFound |= 1 << (5 - x); } } determineNumSysAndCheckDigit(result, lgPatternFound); return rowOffset; } UPCEReader::Range UPCEReader::decodeEnd(Ref row, int endStart) { return findGuardPattern(row, endStart, true, MIDDLE_END_PATTERN); } bool UPCEReader::checkChecksum(Ref const& s){ return UPCEANReader::checkChecksum(convertUPCEtoUPCA(s)); } bool UPCEReader::determineNumSysAndCheckDigit(std::string& resultString, int lgPatternFound) { for (int numSys = 0; numSys <= 1; numSys++) { for (int d = 0; d < 10; d++) { if (lgPatternFound == NUMSYS_AND_CHECK_DIGIT_PATTERNS[numSys][d]) { resultString.insert(size_t(0), size_t(1), zxing::byte('0' + numSys)); resultString.append(1, zxing::byte('0' + d)); return true; } } } return false; } /** * Expands a UPC-E value back into its full, equivalent UPC-A code value. * * @param upce UPC-E code as string of digits * @return equivalent UPC-A code as string of digits */ Ref UPCEReader::convertUPCEtoUPCA(Ref const& upce_) { string const& upce(upce_->getText()); string result; result.append(1, upce[0]); char lastChar = upce[6]; switch (lastChar) { case '0': case '1': case '2': result.append(upce.substr(1,2)); result.append(1, lastChar); result.append("0000"); result.append(upce.substr(3,3)); break; case '3': result.append(upce.substr(1,3)); result.append("00000"); result.append(upce.substr(4,2)); break; case '4': result.append(upce.substr(1,4)); result.append("00000"); result.append(1, upce[5]); break; default: result.append(upce.substr(1,5)); result.append("0000"); result.append(1, lastChar); break; } result.append(1, upce[7]); return Ref(new String(result)); } zxing::BarcodeFormat UPCEReader::getBarcodeFormat() { return BarcodeFormat::UPC_E; } yubioath-desktop/QZXing/zxing/zxing/oned/UPCEReader.h000066400000000000000000000025721412677075700230320ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- #ifndef ZXING_UPC_E_READER_H #define ZXING_UPC_E_READER_H /* * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include namespace zxing { namespace oned { class UPCEReader : public UPCEANReader { private: std::vector decodeMiddleCounters; static bool determineNumSysAndCheckDigit(std::string& resultString, int lgPatternFound); protected: Range decodeEnd(Ref row, int endStart); bool checkChecksum(Ref const& s); public: UPCEReader(); int decodeMiddle(Ref row, Range const& startRange, std::string& resultString); static Ref convertUPCEtoUPCA(Ref const& upce); BarcodeFormat getBarcodeFormat(); }; } } #endif // ZXING_UPC_E_READER_H yubioath-desktop/QZXing/zxing/zxing/oned/rss/000077500000000000000000000000001412677075700216035ustar00rootroot00000000000000yubioath-desktop/QZXing/zxing/zxing/oned/rss/AbstractRSSReader.cpp000066400000000000000000000060221412677075700255650ustar00rootroot00000000000000#include "AbstractRSSReader.h" #include namespace zxing { namespace oned { namespace rss { using zxing::common::detector::MathUtils; AbstractRSSReader::AbstractRSSReader() { m_decodeFinderCounters = std::vector(4); m_dataCharacterCounters = std::vector(8); m_oddRoundingErrors = std::vector(4); m_evenRoundingErrors = std::vector(4); m_oddCounts = std::vector(m_dataCharacterCounters.size() / 2); m_evenCounts = std::vector(m_dataCharacterCounters.size() / 2); } std::vector& AbstractRSSReader::getDecodeFinderCounters() { return m_decodeFinderCounters; } std::vector& AbstractRSSReader::getDataCharacterCounters() { return m_dataCharacterCounters; } std::vector& AbstractRSSReader::getOddRoundingErrors() { return m_oddRoundingErrors; } std::vector& AbstractRSSReader::getEvenRoundingErrors() { return m_evenRoundingErrors; } std::vector& AbstractRSSReader::getOddCounts() { return m_oddCounts; } std::vector& AbstractRSSReader::getEvenCounts() { return m_evenCounts; } int AbstractRSSReader::parseFinderValue(std::vector& counters, std::vector const& finderPatterns) { for (size_t value = 0; value < finderPatterns.size(); value++) { if (patternMatchVariance(counters, finderPatterns[value], MAX_INDIVIDUAL_VARIANCE) < MAX_AVG_VARIANCE) { return static_cast(value); } } throw NotFoundException(); } int AbstractRSSReader::count(std::vector& array) { return MathUtils::sum(array); } void AbstractRSSReader::increment(std::vector& array, std::vector& errors) { size_t index = 0; float biggestError = errors[0]; for (size_t i = 1; i < array.size(); i++) { if (errors[i] > biggestError) { biggestError = errors[i]; index = i; } } array[index]++; } void AbstractRSSReader::decrement(std::vector& array, std::vector& errors) { size_t index = 0; float biggestError = errors[0]; for (size_t i = 1; i < array.size(); i++) { if (errors[i] < biggestError) { biggestError = errors[i]; index = i; } } array[index]--; } bool AbstractRSSReader::isFinderPattern(std::vector &counters) { int firstTwoSum = counters[0] + counters[1]; int sum = firstTwoSum + counters[2] + counters[3]; float ratio = static_cast(firstTwoSum) / static_cast(sum); if (ratio >= MIN_FINDER_PATTERN_RATIO && ratio <= MAX_FINDER_PATTERN_RATIO) { // passes ratio test in spec, but see if the counts are unreasonable int minCounter = 5555; int maxCounter = -5555; for (int counter : counters) { if (counter > maxCounter) { maxCounter = counter; } if (counter < minCounter) { minCounter = counter; } } return maxCounter < 10 * minCounter; } return false; } } } } yubioath-desktop/QZXing/zxing/zxing/oned/rss/AbstractRSSReader.h000066400000000000000000000047341412677075700252420ustar00rootroot00000000000000#ifndef ABSTRACT_RSS_READER_H #define ABSTRACT_RSS_READER_H /* * Copyright (C) 2010 ZXing authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * 2019-07-17 translation from Java into C++ */ #include #include #include #include namespace zxing { namespace oned { namespace rss { /** * Superclass of {@link OneDReader} implementations that read barcodes in the RSS family * of formats. */ class AbstractRSSReader : public OneDReader { static constexpr int MAX_AVG_VARIANCE = int(PATTERN_MATCH_RESULT_SCALE_FACTOR * 0.2f); static constexpr int MAX_INDIVIDUAL_VARIANCE = int(PATTERN_MATCH_RESULT_SCALE_FACTOR * 0.45f); static constexpr float MIN_FINDER_PATTERN_RATIO = 9.5f / 12.0f; static constexpr float MAX_FINDER_PATTERN_RATIO = 12.5f / 14.0f; protected: AbstractRSSReader(); std::vector &getDecodeFinderCounters(); std::vector &getDataCharacterCounters(); std::vector &getOddRoundingErrors(); std::vector &getEvenRoundingErrors(); std::vector &getOddCounts(); std::vector &getEvenCounts(); static int parseFinderValue(std::vector& counters, const std::vector &finderPatterns); /** * @param array values to sum * @return sum of values * @deprecated call {@link MathUtils#sum(int[])} */ static int count(std::vector &array); static void increment(std::vector &array, std::vector &errors); static void decrement(std::vector &array, std::vector& errors); static bool isFinderPattern(std::vector& counters); private: std::vector m_decodeFinderCounters; std::vector m_dataCharacterCounters; std::vector m_oddRoundingErrors; std::vector m_evenRoundingErrors; std::vector m_oddCounts; std::vector m_evenCounts; }; } } } #endif yubioath-desktop/QZXing/zxing/zxing/oned/rss/DataCharacter.cpp000066400000000000000000000015401412677075700247750ustar00rootroot00000000000000#include "DataCharacter.h" #include namespace zxing { namespace oned { namespace rss { DataCharacter::DataCharacter(int value, int checksumPortion) : m_value(value), m_checksumPortion(checksumPortion) { } DataCharacter::DataCharacter() : m_value(0), m_checksumPortion(0) { } int DataCharacter::getValue() const { return m_value; } int DataCharacter::getChecksumPortion() const { return m_checksumPortion; } String DataCharacter::toString() const { return String(common::StringUtils::intToStr(m_value) + '(' + common::StringUtils::intToStr(m_checksumPortion) + ')'); } bool DataCharacter::equals(const DataCharacter &other) const { return m_value == other.m_value && m_checksumPortion == other.m_checksumPortion; } int DataCharacter::hashCode() const { return m_value & m_checksumPortion; } } } } yubioath-desktop/QZXing/zxing/zxing/oned/rss/DataCharacter.h000066400000000000000000000023241412677075700244430ustar00rootroot00000000000000#ifndef DATA_CHARACTER_H #define DATA_CHARACTER_H /* * Copyright 2009 ZXing authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * 2019-07-17 translation from Java into C++ */ #include namespace zxing { namespace oned { namespace rss { /** * Encapsulates a since character value in an RSS barcode, including its checksum information. */ class DataCharacter { public: DataCharacter(int value, int checksumPortion); DataCharacter(); int getValue() const; int getChecksumPortion() const; String toString() const; bool equals(const DataCharacter& other) const; int hashCode() const; private: int m_value; int m_checksumPortion; }; } } } #endif yubioath-desktop/QZXing/zxing/zxing/oned/rss/FinderPattern.cpp000066400000000000000000000023021412677075700250510ustar00rootroot00000000000000#include "FinderPattern.h" namespace zxing { namespace oned { namespace rss { FinderPattern::FinderPattern(int value, std::vector startEnd, int start, int end, int rowNumber) : m_value(value), m_startEnd(startEnd) { ArrayRef< Ref > resultPoints(2); resultPoints[0] = Ref(new OneDResultPoint(start, rowNumber)); resultPoints[1] = Ref(new OneDResultPoint(end, rowNumber)); m_resultPoints = resultPoints; } FinderPattern::FinderPattern(const FinderPattern *other) { m_value = other != nullptr ? other->m_value : 0; m_startEnd = other != nullptr ? other->m_startEnd : std::vector (); m_resultPoints = other != nullptr ? other->m_resultPoints : nullptr; } int FinderPattern::getValue() const { return m_value; } std::vector& FinderPattern::getStartEnd() { return m_startEnd; } ArrayRef >& FinderPattern::getResultPoints() { return m_resultPoints; } bool FinderPattern::equals(const FinderPattern &other) const { return m_value == other.m_value; } int FinderPattern::hashCode() const { return m_value; } bool FinderPattern::isValid() const { return m_startEnd.size() != 0; } } } } yubioath-desktop/QZXing/zxing/zxing/oned/rss/FinderPattern.h000066400000000000000000000027021412677075700245220ustar00rootroot00000000000000#ifndef FINDER_PATTERN_H #define FINDER_PATTERN_H /* * Copyright 2009 ZXing authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * 2019-07-17 translation from Java into C++ */ #include #include #include namespace zxing { namespace oned { namespace rss { /** * Encapsulates an RSS barcode finder pattern, including its start/end position and row. */ class FinderPattern { public: FinderPattern(int value, std::vector startEnd, int start, int end, int rowNumber); FinderPattern(const FinderPattern* other = nullptr); int getValue() const; std::vector &getStartEnd(); ArrayRef > &getResultPoints(); bool equals(const FinderPattern& other) const; int hashCode() const; bool isValid() const; private: int m_value; std::vector m_startEnd; ArrayRef< Ref > m_resultPoints; }; } } } #endif yubioath-desktop/QZXing/zxing/zxing/oned/rss/Pair.cpp000066400000000000000000000010671412677075700232060ustar00rootroot00000000000000#include "Pair.h" namespace zxing { namespace oned { namespace rss { Pair::Pair(int value, int checksumPortion, FinderPattern finderPattern) : DataCharacter (value, checksumPortion), m_finderPattern(finderPattern) { } Pair::Pair() : DataCharacter (0, 0), m_finderPattern(FinderPattern()), m_count(0) { } FinderPattern& Pair::getFinderPattern() { return m_finderPattern; } int Pair::getCount() const { return m_count; } void Pair::incrementCount() { m_count++; } bool Pair::isValid() const { return m_finderPattern.isValid(); } } } } yubioath-desktop/QZXing/zxing/zxing/oned/rss/Pair.h000066400000000000000000000021461412677075700226520ustar00rootroot00000000000000#ifndef RSS_PAIR_H #define RSS_PAIR_H /* * Copyright 2009 ZXing authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * 2019-07-17 translation from Java into C++ */ #include "DataCharacter.h" #include "FinderPattern.h" namespace zxing { namespace oned { namespace rss { class Pair : public DataCharacter { public: Pair(int value, int checksumPortion, FinderPattern finderPattern); Pair(); FinderPattern &getFinderPattern(); int getCount() const; void incrementCount(); bool isValid() const; private: FinderPattern m_finderPattern; int m_count; }; } } } #endif yubioath-desktop/QZXing/zxing/zxing/oned/rss/RSS14Reader.cpp000066400000000000000000000343531412677075700242560ustar00rootroot00000000000000#include "RSS14Reader.h" #include namespace zxing { namespace oned { namespace rss { using ::zxing::common::detector::MathUtils; static const std::vector OUTSIDE_EVEN_TOTAL_SUBSET = {1,10,34,70,126}; static const std::vector INSIDE_ODD_TOTAL_SUBSET = {4,20,48,81}; static const std::vector OUTSIDE_GSUM = {0,161,961,2015,2715}; static const std::vector INSIDE_GSUM = {0,336,1036,1516}; static const std::vector OUTSIDE_ODD_WIDEST = {8,6,4,3,1}; static const std::vector INSIDE_ODD_WIDEST = {2,4,6,8}; const int FINDER_PATTERNS_[][4] = { {3,8,2,1}, {3,5,5,1}, {3,3,7,1}, {3,1,9,1}, {2,7,4,1}, {2,5,6,1}, {2,3,8,1}, {1,5,7,1}, {1,3,9,1} }; #define VECTOR_INIT(v) v, v + sizeof(v)/sizeof(v[0]) const std::vector RSS14Reader::FINDER_PATTERNS (VECTOR_INIT(FINDER_PATTERNS_)); RSS14Reader::RSS14Reader() : m_possibleLeftPairs({}), m_possibleRightPairs({}) { } Ref RSS14Reader::decodeRow(int rowNumber, Ref row, DecodeHints hints) { Pair leftPair = decodePair(row, false, rowNumber, hints); addOrTally(m_possibleLeftPairs, leftPair); row->reverse(); Pair rightPair = decodePair(row, true, rowNumber, hints); addOrTally(m_possibleRightPairs, rightPair); row->reverse(); for (Pair &left : m_possibleLeftPairs) { if (left.getCount() > 1) { for (Pair &right : m_possibleRightPairs) { if (right.getCount() > 1 && checkChecksum(left, right)) { return constructResult(left, right); } } } } throw NotFoundException(); } void RSS14Reader::addOrTally(std::vector& possiblePairs, Pair& pair) { if (!pair.isValid()) { return; } bool found = false; for (Pair& other : possiblePairs) { if (other.getValue() == pair.getValue()) { other.incrementCount(); found = true; break; } } if (!found) { possiblePairs.push_back(pair); } } void RSS14Reader::reset() { m_possibleLeftPairs.clear(); m_possibleRightPairs.clear(); } Ref RSS14Reader::constructResult(Pair leftPair, Pair rightPair) const { long long symbolValue = 4537077LL * leftPair.getValue() + rightPair.getValue(); String text(common::StringUtils::intToStr(symbolValue)); String buffer(14); for (int i = 13 - text.length(); i > 0; i--) { buffer.append('0'); } buffer.append(text.getText()); int checkDigit = 0; for (int i = 0; i < 13; i++) { int digit = buffer.charAt(i) - '0'; checkDigit += ((i & 0x01) == 0) ? (3 * digit) : digit; } checkDigit = 10 - (checkDigit % 10); if (checkDigit == 10) { checkDigit = 0; } buffer.append(common::StringUtils::intToStr(checkDigit)); ArrayRef< Ref > leftPoints = leftPair.getFinderPattern().getResultPoints(); ArrayRef< Ref > rightPoints = rightPair.getFinderPattern().getResultPoints(); ArrayRef< Ref > resultPoints(4); resultPoints[0] = leftPoints[0]; resultPoints[1] = leftPoints[1]; resultPoints[2] = rightPoints[0]; resultPoints[3] = rightPoints[1]; return Ref(new Result( Ref(new String(buffer)), nullptr, resultPoints, BarcodeFormat::RSS_14)); } Pair RSS14Reader::decodePair(Ref row, bool right, int rowNumber, DecodeHints hints) { try { std::vector startEnd = findFinderPattern(row, right); if (startEnd.empty()) { return Pair(); } FinderPattern pattern = parseFoundFinderPattern(row, rowNumber, right, startEnd); Ref resultPointCallback = hints.getResultPointCallback(); if (resultPointCallback != nullptr) { startEnd = pattern.getStartEnd(); float center = (startEnd[0] + startEnd[1] - 1) / 2.0f; if (right) { // row is actually reversed center = row->getSize() - 1 - center; } resultPointCallback->foundPossibleResultPoint(ResultPoint(center, static_cast(rowNumber))); } DataCharacter outside = decodeDataCharacter(row, pattern, true); DataCharacter inside = decodeDataCharacter(row, pattern, false); return Pair(1597 * outside.getValue() + inside.getValue(), outside.getChecksumPortion() + 4 * inside.getChecksumPortion(), pattern); } catch (NotFoundException const& /*e*/) { return Pair(); } } DataCharacter RSS14Reader::decodeDataCharacter(Ref row, FinderPattern pattern, bool outsideChar) { std::vector& counters = getDataCharacterCounters(); for (size_t x = 0; x < counters.size(); x++) { counters[x] = 0; } if (outsideChar) { recordPatternInReverse(row, pattern.getStartEnd()[0], counters); } else { recordPattern(row, pattern.getStartEnd()[1], counters); // reverse it for (size_t i = 0, j = counters.size() - 1; i < j; i++, j--) { int temp = counters[i]; counters[i] = counters[j]; counters[j] = temp; } } int numModules = outsideChar ? 16 : 15; float elementWidth = MathUtils::sum(counters) / static_cast(numModules); std::vector& oddCounts = getOddCounts(); std::vector& evenCounts = getEvenCounts(); std::vector& oddRoundingErrors = getOddRoundingErrors(); std::vector& evenRoundingErrors = getEvenRoundingErrors(); for (size_t i = 0; i < counters.size(); i++) { float value = counters[i] / elementWidth; int count = static_cast(value + 0.5f); // Round if (count < 1) { count = 1; } else if (count > 8) { count = 8; } size_t offset = i / 2; if ((i & 0x01) == 0) { oddCounts[offset] = count; oddRoundingErrors[offset] = value - count; } else { evenCounts[offset] = count; evenRoundingErrors[offset] = value - count; } } adjustOddEvenCounts(outsideChar, numModules); int oddSum = 0; int oddChecksumPortion = 0; for (size_t i = oddCounts.size() - 1; i-- > 0; ) { oddChecksumPortion *= 9; oddChecksumPortion += oddCounts[i]; oddSum += oddCounts[i]; } int evenChecksumPortion = 0; int evenSum = 0; for (size_t i = evenCounts.size() - 1; i-- > 0; ) { evenChecksumPortion *= 9; evenChecksumPortion += evenCounts[i]; evenSum += evenCounts[i]; } int checksumPortion = oddChecksumPortion + 3 * evenChecksumPortion; if (outsideChar) { if ((oddSum & 0x01) != 0 || oddSum > 12 || oddSum < 4) { throw NotFoundException(); } size_t group = static_cast((12 - oddSum) / 2); int oddWidest = OUTSIDE_ODD_WIDEST[group]; int evenWidest = 9 - oddWidest; int vOdd = RSSUtils::getRSSvalue(oddCounts, oddWidest, false); int vEven = RSSUtils::getRSSvalue(evenCounts, evenWidest, true); int tEven = OUTSIDE_EVEN_TOTAL_SUBSET[group]; int gSum = OUTSIDE_GSUM[group]; return DataCharacter(vOdd * tEven + vEven + gSum, checksumPortion); } else { if ((evenSum & 0x01) != 0 || evenSum > 10 || evenSum < 4) { throw NotFoundException(); } size_t group = static_cast((10 - evenSum) / 2); int oddWidest = INSIDE_ODD_WIDEST[group]; int evenWidest = 9 - oddWidest; int vOdd = RSSUtils::getRSSvalue(oddCounts, oddWidest, true); int vEven = RSSUtils::getRSSvalue(evenCounts, evenWidest, false); int tOdd = INSIDE_ODD_TOTAL_SUBSET[group]; int gSum = INSIDE_GSUM[group]; return DataCharacter(vEven * tOdd + vOdd + gSum, checksumPortion); } } std::vector RSS14Reader::findFinderPattern(Ref row, bool rightFinderPattern) { std::vector& counters = getDecodeFinderCounters(); counters[0] = 0; counters[1] = 0; counters[2] = 0; counters[3] = 0; int width = row->getSize(); bool isWhite = false; int rowOffset = 0; while (rowOffset < width) { isWhite = !row->get(rowOffset); if (rightFinderPattern == isWhite) { // Will encounter white first when searching for right finder pattern break; } rowOffset++; } size_t counterPosition = 0; int patternStart = rowOffset; for (int x = rowOffset; x < width; x++) { if (row->get(x) != isWhite) { counters[counterPosition]++; } else { if (counterPosition == 3) { if (isFinderPattern(counters)) { return std::vector{patternStart, x}; } patternStart += counters[0] + counters[1]; counters[0] = counters[2]; counters[1] = counters[3]; counters[2] = 0; counters[3] = 0; counterPosition--; } else { counterPosition++; } counters[counterPosition] = 1; isWhite = !isWhite; } } return std::vector(); } FinderPattern RSS14Reader::parseFoundFinderPattern(Ref row, int rowNumber, bool right, std::vector startEnd) { // Actually we found elements 2-5 bool firstIsBlack = row->get(startEnd[0]); int firstElementStart = startEnd[0] - 1; // Locate element 1 while (firstElementStart >= 0 && firstIsBlack != row->get(firstElementStart)) { firstElementStart--; } firstElementStart++; int firstCounter = startEnd[0] - firstElementStart; // Make 'counters' hold 1-4 std::vector& counters = getDecodeFinderCounters(); std::vector _counters = counters; for (size_t i = 1; i < counters.size(); i++) { counters[i] = _counters[i - 1]; } counters[0] = firstCounter; int value = parseFinderValue(counters, FINDER_PATTERNS); int start = firstElementStart; int end = startEnd[1]; if (right) { // row is actually reversed start = row->getSize() - 1 - start; end = row->getSize() - 1 - end; } return new FinderPattern(value, {firstElementStart, startEnd[1]}, start, end, rowNumber); } void RSS14Reader::adjustOddEvenCounts(bool outsideChar, int numModules) { int oddSum = MathUtils::sum(getOddCounts()); int evenSum = MathUtils::sum(getEvenCounts()); bool incrementOdd = false; bool decrementOdd = false; bool incrementEven = false; bool decrementEven = false; if (outsideChar) { if (oddSum > 12) { decrementOdd = true; } else if (oddSum < 4) { incrementOdd = true; } if (evenSum > 12) { decrementEven = true; } else if (evenSum < 4) { incrementEven = true; } } else { if (oddSum > 11) { decrementOdd = true; } else if (oddSum < 5) { incrementOdd = true; } if (evenSum > 10) { decrementEven = true; } else if (evenSum < 4) { incrementEven = true; } } int mismatch = oddSum + evenSum - numModules; bool oddParityBad = (oddSum & 0x01) == (outsideChar ? 1 : 0); bool evenParityBad = (evenSum & 0x01) == 1; /*if (mismatch == 2) { if (!(oddParityBad && evenParityBad)) { throw ReaderException.getInstance(); } decrementOdd = true; decrementEven = true; } else if (mismatch == -2) { if (!(oddParityBad && evenParityBad)) { throw ReaderException.getInstance(); } incrementOdd = true; incrementEven = true; } else */ switch (mismatch) { case 1: if (oddParityBad) { if (evenParityBad) { throw NotFoundException(); } decrementOdd = true; } else { if (!evenParityBad) { throw NotFoundException(); } decrementEven = true; } break; case -1: if (oddParityBad) { if (evenParityBad) { throw NotFoundException(); } incrementOdd = true; } else { if (!evenParityBad) { throw NotFoundException(); } incrementEven = true; } break; case 0: if (oddParityBad) { if (!evenParityBad) { throw NotFoundException(); } // Both bad if (oddSum < evenSum) { incrementOdd = true; decrementEven = true; } else { decrementOdd = true; incrementEven = true; } } else { if (evenParityBad) { throw NotFoundException(); } // Nothing to do! } break; default: throw NotFoundException(); } if (incrementOdd) { if (decrementOdd) { throw NotFoundException(); } increment(getOddCounts(), getOddRoundingErrors()); } if (decrementOdd) { decrement(getOddCounts(), getOddRoundingErrors()); } if (incrementEven) { if (decrementEven) { throw NotFoundException(); } increment(getEvenCounts(), getOddRoundingErrors()); } if (decrementEven) { decrement(getEvenCounts(), getEvenRoundingErrors()); } } bool RSS14Reader::checkChecksum(Pair leftPair, Pair rightPair) { //int leftFPValue = leftPair.getFinderPattern().getValue(); //int rightFPValue = rightPair.getFinderPattern().getValue(); //if ((leftFPValue == 0 && rightFPValue == 8) || // (leftFPValue == 8 && rightFPValue == 0)) { //} int checkValue = (leftPair.getChecksumPortion() + 16 * rightPair.getChecksumPortion()) % 79; int targetCheckValue = 9 * leftPair.getFinderPattern().getValue() + rightPair.getFinderPattern().getValue(); if (targetCheckValue > 72) { targetCheckValue--; } if (targetCheckValue > 8) { targetCheckValue--; } return checkValue == targetCheckValue; } } } } yubioath-desktop/QZXing/zxing/zxing/oned/rss/RSS14Reader.h000066400000000000000000000037061412677075700237210ustar00rootroot00000000000000#ifndef RSS14_READER_H #define RSS14_READER_H /* * Copyright 2009 ZXing authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * 2019-07-17 translation from Java into C++ */ #include "AbstractRSSReader.h" #include "Pair.h" #include "RSSUtils.h" #include #include namespace zxing { namespace oned { namespace rss { /** * Decodes RSS-14, including truncated and stacked variants. See ISO/IEC 24724:2006. */ class RSS14Reader : public AbstractRSSReader { public: static const std::vector FINDER_PATTERNS; RSS14Reader(); Ref decodeRow(int rowNumber, Ref row, DecodeHints hints); static void addOrTally(std::vector &possiblePairs, Pair &pair); void reset(); Ref constructResult(Pair leftPair, Pair rightPair) const; static bool checkChecksum(Pair leftPair, Pair rightPair); Pair decodePair(Ref row, bool right, int rowNumber, DecodeHints hints); DataCharacter decodeDataCharacter(Ref row, FinderPattern pattern, bool outsideChar); std::vector findFinderPattern(Ref row, bool rightFinderPattern); FinderPattern parseFoundFinderPattern(Ref row, int rowNumber, bool right, std::vector startEnd); void adjustOddEvenCounts(bool outsideChar, int numModules); private: std::vector m_possibleLeftPairs; std::vector m_possibleRightPairs; }; } } } #endif yubioath-desktop/QZXing/zxing/zxing/oned/rss/RSSUtils.cpp000066400000000000000000000036051412677075700240030ustar00rootroot00000000000000#include "RSSUtils.h" namespace zxing { namespace oned { namespace rss { int RSSUtils::getRSSvalue(std::vector widths, int maxWidth, bool noNarrow) { int n = 0; for (int width : widths) { n += width; } int val = 0; int narrowMask = 0; int elements = widths.size(); for (int bar = 0; bar < elements - 1; bar++) { int elmWidth; for (elmWidth = 1, narrowMask |= 1 << bar; elmWidth < widths[bar]; elmWidth++, narrowMask &= ~(1 << bar)) { int subVal = combins(n - elmWidth - 1, elements - bar - 2); if (noNarrow && (narrowMask == 0) && (n - elmWidth - (elements - bar - 1) >= elements - bar - 1)) { subVal -= combins(n - elmWidth - (elements - bar), elements - bar - 2); } if (elements - bar - 1 > 1) { int lessVal = 0; for (int mxwElement = n - elmWidth - (elements - bar - 2); mxwElement > maxWidth; mxwElement--) { lessVal += combins(n - elmWidth - mxwElement - 1, elements - bar - 3); } subVal -= lessVal * (elements - 1 - bar); } else if (n - elmWidth > maxWidth) { subVal--; } val += subVal; } n -= elmWidth; } return val; } int RSSUtils::combins(int n, int r) { int maxDenom; int minDenom; if (n - r > r) { minDenom = r; maxDenom = n - r; } else { minDenom = n - r; maxDenom = r; } int val = 1; int j = 1; for (int i = n; i > maxDenom; i--) { val *= i; if (j <= minDenom) { val /= j; j++; } } while (j <= minDenom) { val /= j; j++; } return val; } } } } yubioath-desktop/QZXing/zxing/zxing/oned/rss/RSSUtils.h000066400000000000000000000017471412677075700234550ustar00rootroot00000000000000#ifndef RSS_UTILS_H #define RSS_UTILS_H /* * Copyright 2009 ZXing authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * 2019-07-17 translation from Java into C++ */ #include namespace zxing { namespace oned { namespace rss { /** Adapted from listings in ISO/IEC 24724 Appendix B and Appendix G. */ class RSSUtils { public: static int getRSSvalue(std::vector widths, int maxWidth, bool noNarrow); static int combins(int n, int r); }; } } } #endif yubioath-desktop/QZXing/zxing/zxing/oned/rss/expanded/000077500000000000000000000000001412677075700233735ustar00rootroot00000000000000yubioath-desktop/QZXing/zxing/zxing/oned/rss/expanded/BitArrayBuilder.cpp000066400000000000000000000025231412677075700271250ustar00rootroot00000000000000#include "BitArrayBuilder.h" namespace zxing { namespace oned { namespace rss { Ref BitArrayBuilder::buildBitArray(std::vector pairs) { int charNumber = static_cast(pairs.size() * 2) - 1; if (pairs[pairs.size() - 1].getRightChar().getValue() == 0) { charNumber -= 1; } int size = 12 * charNumber; Ref binary(new BitArray(int(size))); int accPos = 0; ExpandedPair firstPair = pairs[0]; int firstValue = firstPair.getRightChar().getValue(); for (int i = 11; i >= 0; --i) { if ((firstValue & (1 << i)) != 0) { binary->set(accPos); } accPos++; } for (size_t i = 1; i < pairs.size(); ++i) { ExpandedPair currentPair = pairs[i]; int leftValue = currentPair.getLeftChar().getValue(); for (int j = 11; j >= 0; --j) { if ((leftValue & (1 << j)) != 0) { binary->set(accPos); } accPos++; } if (currentPair.getRightChar().getValue() != 0) { int rightValue = currentPair.getRightChar().getValue(); for (int j = 11; j >= 0; --j) { if ((rightValue & (1 << j)) != 0) { binary->set(accPos); } accPos++; } } } return binary; } } } } yubioath-desktop/QZXing/zxing/zxing/oned/rss/expanded/BitArrayBuilder.h000066400000000000000000000024421412677075700265720ustar00rootroot00000000000000#ifndef BIT_ARRAY_BUILDER_H #define BIT_ARRAY_BUILDER_H /* * Copyright (C) 2010 ZXing authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * 2019-07-17 translation from Java into C++ */ /* * These authors would like to acknowledge the Spanish Ministry of Industry, * Tourism and Trade, for the support in the project TSI020301-2008-2 * "PIRAmIDE: Personalizable Interactions with Resources on AmI-enabled * Mobile Dynamic Environments", led by Treelogic * ( http://www.treelogic.com/ ): * * http://www.piramidepse.com/ */ #include #include "ExpandedPair.h" #include namespace zxing { namespace oned { namespace rss { class BitArrayBuilder { public: static Ref buildBitArray(std::vector pairs); }; } } } #endif yubioath-desktop/QZXing/zxing/zxing/oned/rss/expanded/ExpandedPair.cpp000066400000000000000000000031131412677075700264410ustar00rootroot00000000000000#include "ExpandedPair.h" #include namespace zxing { namespace oned { namespace rss { ExpandedPair::ExpandedPair(DataCharacter leftChar, DataCharacter rightChar, FinderPattern finderPattern) : m_leftChar(leftChar), m_rightChar(rightChar), m_finderPattern(finderPattern) { } ExpandedPair::ExpandedPair(const ExpandedPair *other) { m_leftChar = other != nullptr ? other->m_leftChar : DataCharacter(); m_rightChar = other != nullptr ? other->m_rightChar : DataCharacter(); m_finderPattern = other != nullptr ? other->m_finderPattern : nullptr; } DataCharacter& ExpandedPair::getLeftChar() { return m_leftChar; } DataCharacter& ExpandedPair::getRightChar() { return m_rightChar; } FinderPattern& ExpandedPair::getFinderPattern() { return m_finderPattern; } bool ExpandedPair::mustBeLast() const { return m_rightChar.getValue() == 0; } String ExpandedPair::toString() const { return String(String("[ ").getText() + m_leftChar.toString().getText() + String(" , ").getText() + m_rightChar.toString().getText() + " : " + (m_finderPattern.getValue() != 0 ? "null" : common::StringUtils::intToStr(m_finderPattern.getValue())) + " ]"); } bool ExpandedPair::equals(const ExpandedPair &other) const { return m_leftChar.equals(other.m_leftChar) && m_rightChar.equals(other.m_rightChar) && m_finderPattern.equals(other.m_finderPattern); } int ExpandedPair::hashCode() const { return m_leftChar.hashCode() & m_rightChar.hashCode() & m_finderPattern.hashCode(); } } } } yubioath-desktop/QZXing/zxing/zxing/oned/rss/expanded/ExpandedPair.h000066400000000000000000000034161412677075700261140ustar00rootroot00000000000000#ifndef EXPANDED_PAIR_H #define EXPANDED_PAIR_H /* * Copyright (C) 2010 ZXing authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * 2019-07-17 translation from Java into C++ */ /* * These authors would like to acknowledge the Spanish Ministry of Industry, * Tourism and Trade, for the support in the project TSI020301-2008-2 * "PIRAmIDE: Personalizable Interactions with Resources on AmI-enabled * Mobile Dynamic Environments", led by Treelogic * ( http://www.treelogic.com/ ): * * http://www.piramidepse.com/ */ #include #include #include namespace zxing { namespace oned { namespace rss { class ExpandedPair { public: ExpandedPair(DataCharacter leftChar, DataCharacter rightChar, FinderPattern finderPattern); ExpandedPair(const ExpandedPair* other = nullptr); DataCharacter &getLeftChar(); DataCharacter &getRightChar(); FinderPattern &getFinderPattern(); bool mustBeLast() const; String toString() const; bool equals(const ExpandedPair& other) const; int hashCode() const; private: DataCharacter m_leftChar; DataCharacter m_rightChar; FinderPattern m_finderPattern; }; } } } #endif yubioath-desktop/QZXing/zxing/zxing/oned/rss/expanded/ExpandedRow.cpp000066400000000000000000000024571412677075700263270ustar00rootroot00000000000000#include "ExpandedRow.h" namespace zxing { namespace oned { namespace rss { ExpandedRow::ExpandedRow(std::vector pairs, int rowNumber, bool wasReversed) : m_pairs(pairs), m_rowNumber(rowNumber), m_wasReversed(wasReversed) { } ExpandedRow::ExpandedRow(const ExpandedRow *other) { m_pairs = other != nullptr ? other->m_pairs : std::vector(); m_rowNumber = other != nullptr ? other->m_rowNumber : 0; m_wasReversed = other != nullptr ? other->m_wasReversed : false; } std::vector &ExpandedRow::getPairs() { return m_pairs; } int ExpandedRow::getRowNumber() { return m_rowNumber; } bool ExpandedRow::isEquivalent(std::vector otherPairs) const { if (m_pairs.size() != otherPairs.size()) { return false; } for (size_t i = 0; i < m_pairs.size(); i++) { if (!m_pairs[i].equals(otherPairs[i])) { return false; } } return true; } String ExpandedRow::toString() { String result("{ "); for (const ExpandedPair &i : m_pairs) { result.append(i.toString().getText()); } result.append(" }"); return result; } bool ExpandedRow::equals(const ExpandedRow &other) const { return isEquivalent(other.m_pairs) && m_wasReversed == other.m_wasReversed; } } } } yubioath-desktop/QZXing/zxing/zxing/oned/rss/expanded/ExpandedRow.h000066400000000000000000000030221412677075700257610ustar00rootroot00000000000000#ifndef EXPANDED_ROW_H #define EXPANDED_ROW_H /* * Copyright (C) 2010 ZXing authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * 2019-07-17 translation from Java into C++ */ #include "ExpandedPair.h" #include namespace zxing { namespace oned { namespace rss { /** * One row of an RSS Expanded Stacked symbol, consisting of 1+ expanded pairs. */ class ExpandedRow { public: ExpandedRow(std::vector pairs, int rowNumber, bool wasReversed); ExpandedRow(const ExpandedRow* other = nullptr); std::vector& getPairs(); int getRowNumber(); bool isEquivalent(std::vector otherPairs) const; String toString(); /** * Two rows are equal if they contain the same pairs in the same order. */ bool equals(const ExpandedRow& other) const; private: std::vector m_pairs; int m_rowNumber; /** Did this row of the image have to be reversed (mirrored) to recognize the pairs? */ bool m_wasReversed; }; } } } #endif yubioath-desktop/QZXing/zxing/zxing/oned/rss/expanded/RSSExpandedReader.cpp000066400000000000000000000565241412677075700273560ustar00rootroot00000000000000#include "RSSExpandedReader.h" namespace zxing { namespace oned { namespace rss { using ::zxing::common::detector::MathUtils; static const std::vector SYMBOL_WIDEST = {7, 5, 4, 3, 1}; static const std::vector EVEN_TOTAL_SUBSET = {4, 20, 52, 104, 204}; static const std::vector GSUM = {0, 348, 1388, 2948, 3988}; const int FINDER_PATTERNS_[][4] = { {1,8,4,1}, // A {3,6,4,1}, // B {3,4,6,1}, // C {3,2,8,1}, // D {2,6,5,1}, // E {2,2,9,1} // F }; #define VECTOR_INIT(v) v, v + sizeof(v)/sizeof(v[0]) const std::vector RSSExpandedReader::FINDER_PATTERNS (VECTOR_INIT(FINDER_PATTERNS_)); static const std::vector> WEIGHTS = { { 1, 3, 9, 27, 81, 32, 96, 77}, { 20, 60, 180, 118, 143, 7, 21, 63}, {189, 145, 13, 39, 117, 140, 209, 205}, {193, 157, 49, 147, 19, 57, 171, 91}, { 62, 186, 136, 197, 169, 85, 44, 132}, {185, 133, 188, 142, 4, 12, 36, 108}, {113, 128, 173, 97, 80, 29, 87, 50}, {150, 28, 84, 41, 123, 158, 52, 156}, { 46, 138, 203, 187, 139, 206, 196, 166}, { 76, 17, 51, 153, 37, 111, 122, 155}, { 43, 129, 176, 106, 107, 110, 119, 146}, { 16, 48, 144, 10, 30, 90, 59, 177}, {109, 116, 137, 200, 178, 112, 125, 164}, { 70, 210, 208, 202, 184, 130, 179, 115}, {134, 191, 151, 31, 93, 68, 204, 190}, {148, 22, 66, 198, 172, 94, 71, 2}, { 6, 18, 54, 162, 64, 192,154, 40}, {120, 149, 25, 75, 14, 42,126, 167}, { 79, 26, 78, 23, 69, 207,199, 175}, {103, 98, 83, 38, 114, 131, 182, 124}, {161, 61, 183, 127, 170, 88, 53, 159}, { 55, 165, 73, 8, 24, 72, 5, 15}, { 45, 135, 194, 160, 58, 174, 100, 89} }; static const int FINDER_PAT_A = 0; static const int FINDER_PAT_B = 1; static const int FINDER_PAT_C = 2; static const int FINDER_PAT_D = 3; static const int FINDER_PAT_E = 4; static const int FINDER_PAT_F = 5; static std::vector> FINDER_PATTERN_SEQUENCES = { { FINDER_PAT_A, FINDER_PAT_A }, { FINDER_PAT_A, FINDER_PAT_B, FINDER_PAT_B }, { FINDER_PAT_A, FINDER_PAT_C, FINDER_PAT_B, FINDER_PAT_D }, { FINDER_PAT_A, FINDER_PAT_E, FINDER_PAT_B, FINDER_PAT_D, FINDER_PAT_C }, { FINDER_PAT_A, FINDER_PAT_E, FINDER_PAT_B, FINDER_PAT_D, FINDER_PAT_D, FINDER_PAT_F }, { FINDER_PAT_A, FINDER_PAT_E, FINDER_PAT_B, FINDER_PAT_D, FINDER_PAT_E, FINDER_PAT_F, FINDER_PAT_F }, { FINDER_PAT_A, FINDER_PAT_A, FINDER_PAT_B, FINDER_PAT_B, FINDER_PAT_C, FINDER_PAT_C, FINDER_PAT_D, FINDER_PAT_D }, { FINDER_PAT_A, FINDER_PAT_A, FINDER_PAT_B, FINDER_PAT_B, FINDER_PAT_C, FINDER_PAT_C, FINDER_PAT_D, FINDER_PAT_E, FINDER_PAT_E }, { FINDER_PAT_A, FINDER_PAT_A, FINDER_PAT_B, FINDER_PAT_B, FINDER_PAT_C, FINDER_PAT_C, FINDER_PAT_D, FINDER_PAT_E, FINDER_PAT_F, FINDER_PAT_F }, { FINDER_PAT_A, FINDER_PAT_A, FINDER_PAT_B, FINDER_PAT_B, FINDER_PAT_C, FINDER_PAT_D, FINDER_PAT_D, FINDER_PAT_E, FINDER_PAT_E, FINDER_PAT_F, FINDER_PAT_F }, }; static const int MAX_PAIRS = 11; RSSExpandedReader::RSSExpandedReader() : m_pairs(std::vector(MAX_PAIRS)), m_rows(std::vector()), m_startEnd(std::vector(2)), m_startFromEven(false) { } Ref RSSExpandedReader::decodeRow(int rowNumber, Ref row, DecodeHints /*hints*/) { // Rows can start with even pattern in case in prev rows there where odd number of patters. // So lets try twice m_pairs.clear(); m_startFromEven = false; try { return constructResult(decodeRow2pairs(rowNumber, row)); } catch (NotFoundException const& /*e*/) { // OK } m_pairs.clear(); m_startFromEven = true; return constructResult(decodeRow2pairs(rowNumber, row)); } void RSSExpandedReader::reset() { m_pairs.clear(); m_rows.clear(); } std::vector RSSExpandedReader::decodeRow2pairs(int rowNumber, Ref row) { bool done = false; while (!done) { try { m_pairs.push_back(retrieveNextPair(row, m_pairs, rowNumber)); } catch (NotFoundException const& nfe) { if (m_pairs.size() == 0) { throw nfe; } // exit this loop when retrieveNextPair() fails and throws done = true; } } // TODO: verify sequence of finder patterns as in checkPairSequence() if (checkChecksum()) { return m_pairs; } bool tryStackedDecode = !(m_rows.size() == 0); storeRow(rowNumber, false); // TODO: deal with reversed rows if (tryStackedDecode) { // When the image is 180-rotated, then rows are sorted in wrong direction. // Try twice with both the directions. std::vector ps = checkRows(false); if (ps.size() != 0) { return ps; } ps = checkRows(true); if (ps.size() != 0) { return ps; } } throw NotFoundException(); } std::vector RSSExpandedReader::checkRows(bool reverse) { // Limit number of rows we are checking // We use recursive algorithm with pure complexity and don't want it to take forever // Stacked barcode can have up to 11 rows, so 25 seems reasonable enough if (m_rows.size() > 25) { m_rows.clear(); // We will never have a chance to get result, so clear it return {}; } m_pairs.clear(); if (reverse) { std::reverse(m_rows.begin(), m_rows.end()); } std::vector ps; try { ps = checkRows({}, 0); } catch (NotFoundException const& /*e*/) { // OK } if (reverse) { std::reverse(m_rows.begin(), m_rows.end()); } return ps; } std::vector RSSExpandedReader::checkRows(std::vector collectedRows, int currentRow) { for (size_t i = static_cast(currentRow); i < m_rows.size(); i++) { ExpandedRow row = m_rows[i]; m_pairs.clear(); for (ExpandedRow collectedRow : collectedRows) { std::vector collectedRowPairs = collectedRow.getPairs(); m_pairs.insert(m_pairs.end(), collectedRowPairs.begin(), collectedRowPairs.end()); } std::vector rowPairs = row.getPairs(); m_pairs.insert(m_pairs.end(), rowPairs.begin(), rowPairs.end()); if (isValidSequence(m_pairs)) { if (checkChecksum()) { return m_pairs; } std::vector rs(collectedRows); rs.push_back(row); try { // Recursion: try to add more rows return checkRows(rs, static_cast(i + 1)); } catch (NotFoundException const& /*e*/) { // We failed, try the next candidate } } } throw NotFoundException(); } bool RSSExpandedReader::isValidSequence(std::vector pairs) { for (std::vector sequence : FINDER_PATTERN_SEQUENCES) { if (pairs.size() <= sequence.size()) { bool stop = true; for (size_t j = 0; j < pairs.size(); j++) { if (pairs[j].getFinderPattern().getValue() != sequence[j]) { stop = false; break; } } if (stop) { return true; } } } return false; } void RSSExpandedReader::storeRow(int rowNumber, bool wasReversed) { // Discard if duplicate above or below; otherwise insert in order by row number. size_t insertPos = 0; bool prevIsSame = false; bool nextIsSame = false; while (insertPos < m_rows.size()) { ExpandedRow erow = m_rows[insertPos]; if (erow.getRowNumber() > rowNumber) { nextIsSame = erow.isEquivalent(m_pairs); break; } prevIsSame = erow.isEquivalent(m_pairs); insertPos++; } if (nextIsSame || prevIsSame) { return; } // When the row was partially decoded (e.g. 2 pairs found instead of 3), // it will prevent us from detecting the barcode. // Try to merge partial rows // Check whether the row is part of an already detected row if (isPartialRow(m_pairs, m_rows)) { return; } m_rows.insert(m_rows.begin() + insertPos, ExpandedRow(m_pairs, rowNumber, wasReversed)); removePartialRows(); } void RSSExpandedReader::removePartialRows() { for (size_t i = 0; i < m_rows.size(); i++) { if (m_rows[i].getPairs().size() != m_pairs.size()) { bool allFound = true; for (ExpandedPair &p : m_rows[i].getPairs()) { bool found = false; for (ExpandedPair &pp : m_pairs) { if (p.equals(pp)) { found = true; break; } } if (!found) { allFound = false; break; } } if (allFound) { // 'pairs' contains all the pairs from the row 'r' m_rows.erase(m_rows.begin() + i--); } } } } bool RSSExpandedReader::isPartialRow(std::vector& pairs, std::vector& rows) { for (ExpandedRow r : rows) { bool allFound = true; for (ExpandedPair &p : pairs) { bool found = false; for (ExpandedPair &pp : r.getPairs()) { if (p.equals(pp)) { found = true; break; } } if (!found) { allFound = false; break; } } if (allFound) { // the row 'r' contain all the pairs from 'pairs' return true; } } return false; } std::vector RSSExpandedReader::getRows() const { return m_rows; } Ref RSSExpandedReader::constructResult(std::vector pairs) { Ref binary = BitArrayBuilder::buildBitArray(pairs); AbstractExpandedDecoder* decoder = AbstractExpandedDecoder::createDecoder(binary); String resultingString = decoder->parseInformation(); ArrayRef< Ref > firstPoints = pairs[0].getFinderPattern().getResultPoints(); ArrayRef< Ref > lastPoints = pairs[pairs.size() - 1].getFinderPattern().getResultPoints(); ArrayRef< Ref > resultPoints(4); resultPoints[0] = firstPoints[0]; resultPoints[1] = firstPoints[1]; resultPoints[2] = lastPoints[0]; resultPoints[3] = lastPoints[1]; return Ref(new Result( Ref(new String(resultingString)), nullptr, resultPoints, BarcodeFormat::RSS_EXPANDED )); } bool RSSExpandedReader::checkChecksum() { ExpandedPair firstPair = m_pairs[0]; DataCharacter checkCharacter = firstPair.getLeftChar(); DataCharacter firstCharacter = firstPair.getRightChar(); if (firstCharacter.getChecksumPortion() == 0) { return false; } int checksum = firstCharacter.getChecksumPortion(); int s = 2; for (size_t i = 1; i < m_pairs.size(); ++i) { ExpandedPair currentPair = m_pairs[i]; checksum += currentPair.getLeftChar().getChecksumPortion(); s++; DataCharacter currentRightChar = currentPair.getRightChar(); if (currentRightChar.getValue() != 0) { checksum += currentRightChar.getChecksumPortion(); s++; } } checksum %= 211; int checkCharacterValue = 211 * (s - 4) + checksum; return checkCharacterValue == checkCharacter.getValue(); } int RSSExpandedReader::getNextSecondBar(Ref row, int initialPos) { int currentPos; if (row->get(initialPos)) { currentPos = row->getNextUnset(initialPos); currentPos = row->getNextSet(currentPos); } else { currentPos = row->getNextSet(initialPos); currentPos = row->getNextUnset(currentPos); } return currentPos; } ExpandedPair RSSExpandedReader::retrieveNextPair(Ref row, std::vector& previousPairs, int rowNumber) { bool isOddPattern = previousPairs.size() % 2 == 0; if (m_startFromEven) { isOddPattern = !isOddPattern; } FinderPattern pattern; bool keepFinding = true; int forcedOffset = -1; do { findNextPair(row, previousPairs, forcedOffset); pattern = parseFoundFinderPattern(row, rowNumber, isOddPattern); if (!pattern.isValid()) { forcedOffset = getNextSecondBar(row, m_startEnd[0]); } else { keepFinding = false; } } while (keepFinding); // When stacked symbol is split over multiple rows, there's no way to guess if this pair can be last or not. // bool mayBeLast = checkPairSequence(previousPairs, pattern); DataCharacter leftChar = decodeDataCharacter(row, pattern, isOddPattern, true); if (!(previousPairs.size() == 0) && previousPairs[previousPairs.size() - 1].mustBeLast()) { throw NotFoundException(); } DataCharacter rightChar; try { rightChar = decodeDataCharacter(row, pattern, isOddPattern, false); } catch (NotFoundException const& /*e*/) { //rightChar = nullptr; } return ExpandedPair(leftChar, rightChar, pattern); } void RSSExpandedReader::findNextPair(Ref row, std::vector previousPairs, int forcedOffset) { std::vector& counters = getDecodeFinderCounters(); counters[0] = 0; counters[1] = 0; counters[2] = 0; counters[3] = 0; int width = row->getSize(); int rowOffset; if (forcedOffset >= 0) { rowOffset = forcedOffset; } else if (previousPairs.size() == 0) { rowOffset = 0; } else { ExpandedPair lastPair = previousPairs[previousPairs.size() - 1]; rowOffset = lastPair.getFinderPattern().getStartEnd()[1]; } bool searchingEvenPair = previousPairs.size() % 2 != 0; if (m_startFromEven) { searchingEvenPair = !searchingEvenPair; } bool isWhite = false; while (rowOffset < width) { isWhite = !row->get(rowOffset); if (!isWhite) { break; } rowOffset++; } size_t counterPosition = 0; int patternStart = rowOffset; for (int x = rowOffset; x < width; x++) { if (row->get(x) != isWhite) { counters[counterPosition]++; } else { if (counterPosition == 3) { if (searchingEvenPair) { std::reverse(counters.begin(), counters.end()); } if (isFinderPattern(counters)) { m_startEnd[0] = patternStart; m_startEnd[1] = x; return; } if (searchingEvenPair) { std::reverse(counters.begin(), counters.end()); } patternStart += counters[0] + counters[1]; counters[0] = counters[2]; counters[1] = counters[3]; counters[2] = 0; counters[3] = 0; counterPosition--; } else { counterPosition++; } counters[counterPosition] = 1; isWhite = !isWhite; } } throw NotFoundException(); } FinderPattern RSSExpandedReader::parseFoundFinderPattern(Ref row, int rowNumber, bool oddPattern) { // Actually we found elements 2-5. int firstCounter; int start; int end; if (oddPattern) { // If pattern number is odd, we need to locate element 1 *before* the current block. int firstElementStart = m_startEnd[0] - 1; // Locate element 1 while (firstElementStart >= 0 && !row->get(firstElementStart)) { firstElementStart--; } firstElementStart++; firstCounter = m_startEnd[0] - firstElementStart; start = firstElementStart; end = m_startEnd[1]; } else { // If pattern number is even, the pattern is reversed, so we need to locate element 1 *after* the current block. start = m_startEnd[0]; end = row->getNextUnset(m_startEnd[1] + 1); firstCounter = end - m_startEnd[1]; } // Make 'counters' hold 1-4 std::vector& counters = getDecodeFinderCounters(); std::vector _counters = counters; for (size_t i = 1; i < counters.size(); i++) { counters[i] = _counters[i - 1]; } counters[0] = firstCounter; int value; try { value = parseFinderValue(counters, FINDER_PATTERNS); } catch (NotFoundException const& /*e*/) { return FinderPattern(); } return FinderPattern(value, {start, end}, start, end, rowNumber); } DataCharacter RSSExpandedReader::decodeDataCharacter(Ref row, FinderPattern pattern, bool isOddPattern, bool leftChar) { std::vector& counters = getDataCharacterCounters(); for (size_t x = 0; x < counters.size(); x++) { counters[x] = 0; } if (leftChar) { recordPatternInReverse(row, pattern.getStartEnd()[0], counters); } else { recordPattern(row, pattern.getStartEnd()[1], counters); // reverse it for (size_t i = 0, j = counters.size() - 1; i < j; i++, j--) { int temp = counters[i]; counters[i] = counters[j]; counters[j] = temp; } } //counters[] has the pixels of the module int numModules = 17; //left and right data characters have all the same length float elementWidth = MathUtils::sum(counters) / static_cast(numModules); // Sanity check: element width for pattern and the character should match float expectedElementWidth = (pattern.getStartEnd()[1] - pattern.getStartEnd()[0]) / 15.0f; if (std::abs(elementWidth - expectedElementWidth) / expectedElementWidth > 0.3f) { throw NotFoundException(); } std::vector& oddCounts(getOddCounts()); std::vector& evenCounts(getEvenCounts()); std::vector& oddRoundingErrors(getOddRoundingErrors()); std::vector& evenRoundingErrors(getEvenRoundingErrors()); for (size_t i = 0; i < counters.size(); i++) { float value = 1.0f * counters[i] / elementWidth; int count = static_cast(value + 0.5f); // Round if (count < 1) { if (value < 0.3f) { throw NotFoundException(); } count = 1; } else if (count > 8) { if (value > 8.7f) { throw NotFoundException(); } count = 8; } size_t offset = i / 2; if ((i & 0x01) == 0) { oddCounts[offset] = count; oddRoundingErrors[offset] = value - count; } else { evenCounts[offset] = count; evenRoundingErrors[offset] = value - count; } } adjustOddEvenCounts(numModules); size_t weightRowNumber = static_cast(4 * pattern.getValue() + (isOddPattern ? 0 : 2) + (leftChar ? 0 : 1) - 1); int oddSum = 0; int oddChecksumPortion = 0; for (int i = oddCounts.size() - 1; i >= 0; i--) { if (isNotA1left(pattern, isOddPattern, leftChar)) { int weight = WEIGHTS[weightRowNumber][2 * i]; oddChecksumPortion += oddCounts[i] * weight; } oddSum += oddCounts[i]; } int evenChecksumPortion = 0; for (int i = evenCounts.size() - 1; i >= 0; i--) { if (isNotA1left(pattern, isOddPattern, leftChar)) { int weight = WEIGHTS[weightRowNumber][2 * i + 1]; evenChecksumPortion += evenCounts[i] * weight; } } int checksumPortion = oddChecksumPortion + evenChecksumPortion; if ((oddSum & 0x01) != 0 || oddSum > 13 || oddSum < 4) { throw NotFoundException(); } size_t group = static_cast((13 - oddSum) / 2); int oddWidest = SYMBOL_WIDEST[group]; int evenWidest = 9 - oddWidest; int vOdd = RSSUtils::getRSSvalue(oddCounts, oddWidest, true); int vEven = RSSUtils::getRSSvalue(evenCounts, evenWidest, false); int tEven = EVEN_TOTAL_SUBSET[group]; int gSum = GSUM[group]; int value = vOdd * tEven + vEven + gSum; return DataCharacter(value, checksumPortion); } bool RSSExpandedReader::isNotA1left(FinderPattern pattern, bool isOddPattern, bool leftChar) { // A1: pattern.getValue is 0 (A), and it's an oddPattern, and it is a left char return !(pattern.getValue() == 0 && isOddPattern && leftChar); } void RSSExpandedReader::adjustOddEvenCounts(int numModules){ int oddSum = MathUtils::sum(getOddCounts()); int evenSum = MathUtils::sum(getEvenCounts()); bool incrementOdd = false; bool decrementOdd = false; if (oddSum > 13) { decrementOdd = true; } else if (oddSum < 4) { incrementOdd = true; } bool incrementEven = false; bool decrementEven = false; if (evenSum > 13) { decrementEven = true; } else if (evenSum < 4) { incrementEven = true; } int mismatch = oddSum + evenSum - numModules; bool oddParityBad = (oddSum & 0x01) == 1; bool evenParityBad = (evenSum & 0x01) == 0; switch (mismatch) { case 1: if (oddParityBad) { if (evenParityBad) { throw NotFoundException(); } decrementOdd = true; } else { if (!evenParityBad) { throw NotFoundException(); } decrementEven = true; } break; case -1: if (oddParityBad) { if (evenParityBad) { throw NotFoundException(); } incrementOdd = true; } else { if (!evenParityBad) { throw NotFoundException(); } incrementEven = true; } break; case 0: if (oddParityBad) { if (!evenParityBad) { throw NotFoundException(); } // Both bad if (oddSum < evenSum) { incrementOdd = true; decrementEven = true; } else { decrementOdd = true; incrementEven = true; } } else { if (evenParityBad) { throw NotFoundException(); } // Nothing to do! } break; default: throw NotFoundException(); } if (incrementOdd) { if (decrementOdd) { throw NotFoundException(); } std::vector& oddCounts(getOddCounts()); std::vector& oddRoundingErrors(getOddRoundingErrors()); increment(oddCounts, oddRoundingErrors); } if (decrementOdd) { std::vector& oddCounts(getOddCounts()); std::vector& oddRoundingErrors(getOddRoundingErrors()); decrement(oddCounts, oddRoundingErrors); } if (incrementEven) { if (decrementEven) { throw NotFoundException(); } std::vector& evenCounts(getEvenCounts()); std::vector& oddRoundingErrors(getOddRoundingErrors()); increment(evenCounts, oddRoundingErrors); } if (decrementEven) { std::vector& evenCounts(getEvenCounts()); std::vector& evenRoundingErrors(getEvenRoundingErrors()); decrement(evenCounts, evenRoundingErrors); } } } } } yubioath-desktop/QZXing/zxing/zxing/oned/rss/expanded/RSSExpandedReader.h000066400000000000000000000071271412677075700270160ustar00rootroot00000000000000#ifndef RSS_EXPANDED_READER_H #define RSS_EXPANDED_READER_H /* * Copyright (C) 2010 ZXing authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * 2019-07-17 translation from Java into C++ */ /* * These authors would like to acknowledge the Spanish Ministry of Industry, * Tourism and Trade, for the support in the project TSI020301-2008-2 * "PIRAmIDE: Personalizable Interactions with Resources on AmI-enabled * Mobile Dynamic Environments", led by Treelogic * ( http://www.treelogic.com/ ): * * http://www.piramidepse.com/ */ #include "ExpandedPair.h" #include "ExpandedRow.h" #include "BitArrayBuilder.h" #include "decoders/AbstractExpandedDecoder.h" #include #include #include #include #include namespace zxing { namespace oned { namespace rss { class RSSExpandedReader : public AbstractRSSReader { public: static const std::vector FINDER_PATTERNS; RSSExpandedReader(); Ref decodeRow(int rowNumber, Ref row, DecodeHints); void reset(); // Not private for testing std::vector decodeRow2pairs(int rowNumber, Ref row); std::vector checkRows(bool reverse); // Try to construct a valid rows sequence // Recursion is used to implement backtracking std::vector checkRows(std::vector collectedRows, int currentRow); // Whether the pairs form a valid find pattern sequence, // either complete or a prefix static bool isValidSequence(std::vector pairs); void storeRow(int rowNumber, bool wasReversed); // Remove all the rows that contains only specified pairs void removePartialRows(); // Returns true when one of the rows already contains all the pairs static bool isPartialRow(std::vector &pairs, std::vector &rows); // Only used for unit testing std::vector getRows() const; // Not private for unit testing static Ref constructResult(std::vector pairs); bool checkChecksum(); static int getNextSecondBar(Ref row, int initialPos); // not private for testing ExpandedPair retrieveNextPair(Ref row, std::vector &previousPairs, int rowNumber); void findNextPair(Ref row, std::vector previousPairs, int forcedOffset); FinderPattern parseFoundFinderPattern(Ref row, int rowNumber, bool oddPattern); DataCharacter decodeDataCharacter(Ref row, FinderPattern pattern, bool isOddPattern, bool leftChar); static bool isNotA1left(FinderPattern pattern, bool isOddPattern, bool leftChar); void adjustOddEvenCounts(int numModules); private: std::vector m_pairs; std::vector m_rows; std::vector m_startEnd; bool m_startFromEven; }; } } } #endif yubioath-desktop/QZXing/zxing/zxing/oned/rss/expanded/decoders/000077500000000000000000000000001412677075700251635ustar00rootroot00000000000000yubioath-desktop/QZXing/zxing/zxing/oned/rss/expanded/decoders/AI013103decoder.cpp000066400000000000000000000005421412677075700301570ustar00rootroot00000000000000#include "AI013103decoder.h" namespace zxing { namespace oned { namespace rss { AI013103decoder::AI013103decoder(Ref information) : AI013x0xDecoder(information) { } void AI013103decoder::addWeightCode(String &buf, int /*weight*/) { buf.append("(3103)"); } int AI013103decoder::checkWeight(int weight) { return weight; } } } } yubioath-desktop/QZXing/zxing/zxing/oned/rss/expanded/decoders/AI013103decoder.h000066400000000000000000000026301412677075700276240ustar00rootroot00000000000000#ifndef AI013_103X_DECODER_H #define AI013_103X_DECODER_H /* * Copyright (C) 2010 ZXing authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * 2019-07-17 translation from Java into C++ */ /* * These authors would like to acknowledge the Spanish Ministry of Industry, * Tourism and Trade, for the support in the project TSI020301-2008-2 * "PIRAmIDE: Personalizable Interactions with Resources on AmI-enabled * Mobile Dynamic Environments", led by Treelogic * ( http://www.treelogic.com/ ): * * http://www.piramidepse.com/ */ #include "AI013x0xDecoder.h" #include namespace zxing { namespace oned { namespace rss { class AI013103decoder : public AI013x0xDecoder { public: AI013103decoder(Ref information); protected: virtual void addWeightCode(String &buf, int) override; protected: virtual int checkWeight(int weight) override; }; } } } #endif yubioath-desktop/QZXing/zxing/zxing/oned/rss/expanded/decoders/AI01320xDecoder.cpp000066400000000000000000000007541412677075700302320ustar00rootroot00000000000000#include "AI01320xDecoder.h" namespace zxing { namespace oned { namespace rss { AI01320xDecoder::AI01320xDecoder(Ref information) : AI013x0xDecoder(information) { } void AI01320xDecoder::addWeightCode(String &buf, int weight) { if (weight < 10000) { buf.append("(3202)"); } else { buf.append("(3203)"); } } int AI01320xDecoder::checkWeight(int weight) { if (weight < 10000) { return weight; } return weight - 10000; } } } } yubioath-desktop/QZXing/zxing/zxing/oned/rss/expanded/decoders/AI01320xDecoder.h000066400000000000000000000026231412677075700276740ustar00rootroot00000000000000#ifndef AI013_20X_DECODER_H #define AI013_20X_DECODER_H /* * Copyright (C) 2010 ZXing authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * 2019-07-17 translation from Java into C++ */ /* * These authors would like to acknowledge the Spanish Ministry of Industry, * Tourism and Trade, for the support in the project TSI020301-2008-2 * "PIRAmIDE: Personalizable Interactions with Resources on AmI-enabled * Mobile Dynamic Environments", led by Treelogic * ( http://www.treelogic.com/ ): * * http://www.piramidepse.com/ */ #include "AI013x0xDecoder.h" #include namespace zxing { namespace oned { namespace rss { class AI01320xDecoder : public AI013x0xDecoder { public: AI01320xDecoder(Ref information); protected: virtual void addWeightCode(String &buf, int weight) override; virtual int checkWeight(int weight) override; }; } } } #endif yubioath-desktop/QZXing/zxing/zxing/oned/rss/expanded/decoders/AI01392xDecoder.cpp000066400000000000000000000016431412677075700302410ustar00rootroot00000000000000#include "AI01392xDecoder.h" #include namespace zxing { namespace oned { namespace rss { AI01392xDecoder::AI01392xDecoder(Ref information) : AI01decoder(information) { } String AI01392xDecoder::parseInformation() { if (getInformation()->getSize() < HEADER_SIZE + GTIN_SIZE) { throw NotFoundException(); } String buf(""); encodeCompressedGtin(buf, HEADER_SIZE); int lastAIdigit = getGeneralDecoder().extractNumericValueFromBitArray(HEADER_SIZE + GTIN_SIZE, LAST_DIGIT_SIZE); buf.append("(392"); buf.append(common::StringUtils::intToStr(lastAIdigit)); buf.append(')'); String stub(""); DecodedInformation decodedInformation = getGeneralDecoder().decodeGeneralPurposeField(HEADER_SIZE + GTIN_SIZE + LAST_DIGIT_SIZE, stub); buf.append(decodedInformation.getNewString().getText()); return buf; } } } } yubioath-desktop/QZXing/zxing/zxing/oned/rss/expanded/decoders/AI01392xDecoder.h000066400000000000000000000027751412677075700277150ustar00rootroot00000000000000#ifndef AI01_392X_DECODER_H #define AI01_392X_DECODER_H /* * Copyright (C) 2010 ZXing authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * 2019-07-17 translation from Java into C++ */ /* * These authors would like to acknowledge the Spanish Ministry of Industry, * Tourism and Trade, for the support in the project TSI020301-2008-2 * "PIRAmIDE: Personalizable Interactions with Resources on AmI-enabled * Mobile Dynamic Environments", led by Treelogic * ( http://www.treelogic.com/ ): * * http://www.piramidepse.com/ */ #include "AI01decoder.h" #include "DecodedInformation.h" #include #include #include namespace zxing { namespace oned { namespace rss { class AI01392xDecoder : public AI01decoder { static const int HEADER_SIZE = 5 + 1 + 2; static const int LAST_DIGIT_SIZE = 2; public: AI01392xDecoder(Ref information); virtual String parseInformation() override; }; } } } #endif yubioath-desktop/QZXing/zxing/zxing/oned/rss/expanded/decoders/AI01393xDecoder.cpp000066400000000000000000000026361412677075700302450ustar00rootroot00000000000000#include "AI01393xDecoder.h" #include "DecodedInformation.h" #include #include #include namespace zxing { namespace oned { namespace rss { AI01393xDecoder::AI01393xDecoder(Ref information) : AI01decoder(information) { } String AI01393xDecoder::parseInformation() { if (getInformation()->getSize() < HEADER_SIZE + GTIN_SIZE) { throw NotFoundException(); } String buf(""); encodeCompressedGtin(buf, HEADER_SIZE); int lastAIdigit = getGeneralDecoder().extractNumericValueFromBitArray(HEADER_SIZE + GTIN_SIZE, LAST_DIGIT_SIZE); buf.append("(393"); buf.append(common::StringUtils::intToStr(lastAIdigit)); buf.append(')'); int firstThreeDigits = getGeneralDecoder().extractNumericValueFromBitArray( HEADER_SIZE + GTIN_SIZE + LAST_DIGIT_SIZE, FIRST_THREE_DIGITS_SIZE); if (firstThreeDigits / 100 == 0) { buf.append('0'); } if (firstThreeDigits / 10 == 0) { buf.append('0'); } buf.append(common::StringUtils::intToStr(firstThreeDigits)); String stub(""); DecodedInformation generalInformation = getGeneralDecoder().decodeGeneralPurposeField( HEADER_SIZE + GTIN_SIZE + LAST_DIGIT_SIZE + FIRST_THREE_DIGITS_SIZE, stub); buf.append(generalInformation.getNewString().getText()); return buf; } } } } yubioath-desktop/QZXing/zxing/zxing/oned/rss/expanded/decoders/AI01393xDecoder.h000066400000000000000000000027071412677075700277110ustar00rootroot00000000000000#ifndef AI01_393X_DECODER_H #define AI01_393X_DECODER_H /* * Copyright (C) 2010 ZXing authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * 2019-07-17 translation from Java into C++ */ /* * These authors would like to acknowledge the Spanish Ministry of Industry, * Tourism and Trade, for the support in the project TSI020301-2008-2 * "PIRAmIDE: Personalizable Interactions with Resources on AmI-enabled * Mobile Dynamic Environments", led by Treelogic * ( http://www.treelogic.com/ ): * * http://www.piramidepse.com/ */ #include "AI01decoder.h" #include namespace zxing { namespace oned { namespace rss { class AI01393xDecoder : public AI01decoder { static const int HEADER_SIZE = 5 + 1 + 2; static const int LAST_DIGIT_SIZE = 2; static const int FIRST_THREE_DIGITS_SIZE = 10; public: AI01393xDecoder(Ref information); virtual String parseInformation() override; }; } } } #endif yubioath-desktop/QZXing/zxing/zxing/oned/rss/expanded/decoders/AI013x0x1xDecoder.cpp000066400000000000000000000034371412677075700306120ustar00rootroot00000000000000#include "AI013x0x1xDecoder.h" #include namespace zxing { namespace oned { namespace rss { AI013x0x1xDecoder::AI013x0x1xDecoder(Ref information, String firstAIdigits, String dateCode) : AI01weightDecoder(information), m_dateCode(dateCode), m_firstAIdigits(firstAIdigits) { } String AI013x0x1xDecoder::parseInformation() { if (getInformation()->getSize() != HEADER_SIZE + GTIN_SIZE + WEIGHT_SIZE + DATE_SIZE) { throw NotFoundException(); } String buf(""); encodeCompressedGtin(buf, HEADER_SIZE); encodeCompressedWeight(buf, HEADER_SIZE + GTIN_SIZE, WEIGHT_SIZE); encodeCompressedDate(buf, HEADER_SIZE + GTIN_SIZE + WEIGHT_SIZE); return buf; } void AI013x0x1xDecoder::encodeCompressedDate(String &buf, int currentPos) { int numericDate = getGeneralDecoder().extractNumericValueFromBitArray(currentPos, DATE_SIZE); if (numericDate == 38400) { return; } buf.append('('); buf.append(m_dateCode.getText()); buf.append(')'); int day = numericDate % 32; numericDate /= 32; int month = numericDate % 12 + 1; numericDate /= 12; int year = numericDate; if (year / 10 == 0) { buf.append('0'); } buf.append(common::StringUtils::intToStr(year)); if (month / 10 == 0) { buf.append('0'); } buf.append(common::StringUtils::intToStr(month)); if (day / 10 == 0) { buf.append('0'); } buf.append(common::StringUtils::intToStr(day)); } void AI013x0x1xDecoder::addWeightCode(String &buf, int weight) { buf.append('('); buf.append(m_firstAIdigits.getText()); buf.append(common::StringUtils::intToStr(weight / 100000)); buf.append(')'); } int AI013x0x1xDecoder::checkWeight(int weight) { return weight % 100000; } } } } yubioath-desktop/QZXing/zxing/zxing/oned/rss/expanded/decoders/AI013x0x1xDecoder.h000066400000000000000000000034251412677075700302540ustar00rootroot00000000000000#ifndef AI013_X0X1X_DECODER_H #define AI013_X0X1X_DECODER_H /* * Copyright (C) 2010 ZXing authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * 2019-07-17 translation from Java into C++ */ /* * These authors would like to acknowledge the Spanish Ministry of Industry, * Tourism and Trade, for the support in the project TSI020301-2008-2 * "PIRAmIDE: Personalizable Interactions with Resources on AmI-enabled * Mobile Dynamic Environments", led by Treelogic * ( http://www.treelogic.com/ ): * * http://www.piramidepse.com/ */ #include "AI01weightDecoder.h" #include #include namespace zxing { namespace oned { namespace rss { class AI013x0x1xDecoder : public AI01weightDecoder { static const int HEADER_SIZE = 7 + 1; static const int WEIGHT_SIZE = 20; static const int DATE_SIZE = 16; public: AI013x0x1xDecoder(Ref information, String firstAIdigits, String dateCode); virtual String parseInformation() override; private: void encodeCompressedDate(String &buf, int currentPos); protected: virtual void addWeightCode(String &buf, int weight) override; virtual int checkWeight(int weight) override; private: String m_dateCode; String m_firstAIdigits; }; } } } #endif yubioath-desktop/QZXing/zxing/zxing/oned/rss/expanded/decoders/AI013x0xDecoder.cpp000066400000000000000000000010021412677075700303230ustar00rootroot00000000000000#include "AI013x0xDecoder.h" namespace zxing { namespace oned { namespace rss { AI013x0xDecoder::AI013x0xDecoder(Ref information) : AI01weightDecoder(information) { } String AI013x0xDecoder::parseInformation() { if (getInformation()->getSize() != HEADER_SIZE + GTIN_SIZE + WEIGHT_SIZE) { throw NotFoundException(); } String buf(""); encodeCompressedGtin(buf, HEADER_SIZE); encodeCompressedWeight(buf, HEADER_SIZE + GTIN_SIZE, WEIGHT_SIZE); return buf; } } } } yubioath-desktop/QZXing/zxing/zxing/oned/rss/expanded/decoders/AI013x0xDecoder.h000066400000000000000000000030171412677075700300000ustar00rootroot00000000000000#ifndef AI013_X0X_DECODER_H #define AI013_X0X_DECODER_H /* * Copyright (C) 2010 ZXing authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * 2019-07-17 translation from Java into C++ */ /* * These authors would like to acknowledge the Spanish Ministry of Industry, * Tourism and Trade, for the support in the project TSI020301-2008-2 * "PIRAmIDE: Personalizable Interactions with Resources on AmI-enabled * Mobile Dynamic Environments", led by Treelogic * ( http://www.treelogic.com/ ): * * http://www.piramidepse.com/ */ #include "AI01weightDecoder.h" #include #include namespace zxing { namespace oned { namespace rss { /** * @author Pablo Orduña, University of Deusto (pablo.orduna@deusto.es) */ class AI013x0xDecoder : public AI01weightDecoder { static const int HEADER_SIZE = 4 + 1; static const int WEIGHT_SIZE = 15; public: AI013x0xDecoder(Ref information); virtual String parseInformation() override; }; } } } #endif yubioath-desktop/QZXing/zxing/zxing/oned/rss/expanded/decoders/AI01AndOtherAIs.cpp000066400000000000000000000012141412677075700303410ustar00rootroot00000000000000#include "AI01AndOtherAIs.h" #include namespace zxing { namespace oned { namespace rss { AI01AndOtherAIs::AI01AndOtherAIs(Ref information) : AI01decoder(information) { } String AI01AndOtherAIs::parseInformation() { String buff("(01)"); int initialGtinPosition = buff.length(); int firstGtinDigit = getGeneralDecoder().extractNumericValueFromBitArray(HEADER_SIZE, 4); buff.append(common::StringUtils::intToStr(firstGtinDigit)); encodeCompressedGtinWithoutAI(buff, HEADER_SIZE + 4, initialGtinPosition); return getGeneralDecoder().decodeAllCodes(buff, HEADER_SIZE + 44); } } } } yubioath-desktop/QZXing/zxing/zxing/oned/rss/expanded/decoders/AI01AndOtherAIs.h000066400000000000000000000032021412677075700300050ustar00rootroot00000000000000#ifndef AI01_AND_OTHER_AIS_H #define AI01_AND_OTHER_AIS_H /* * Copyright (C) 2010 ZXing authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * 2019-07-17 translation from Java into C++ */ /* * These authors would like to acknowledge the Spanish Ministry of Industry, * Tourism and Trade, for the support in the project TSI020301-2008-2 * "PIRAmIDE: Personalizable Interactions with Resources on AmI-enabled * Mobile Dynamic Environments", led by Treelogic * ( http://www.treelogic.com/ ): * * http://www.piramidepse.com/ */ #include "AI01decoder.h" #include #include #include #include namespace zxing { namespace oned { namespace rss { class AI01AndOtherAIs : public AI01decoder { static const int HEADER_SIZE = 1 + 1 + 2; //first bit encodes the linkage flag, //the second one is the encodation method, and the other two are for the variable length public: AI01AndOtherAIs(Ref information); virtual String parseInformation() override; }; } } } #endif yubioath-desktop/QZXing/zxing/zxing/oned/rss/expanded/decoders/AI01decoder.cpp000066400000000000000000000025501412677075700276510ustar00rootroot00000000000000#include "AI01decoder.h" #include namespace zxing { namespace oned { namespace rss { AI01decoder::AI01decoder(Ref information) : AbstractExpandedDecoder(information) { } void AI01decoder::encodeCompressedGtin(String &buf, int currentPos) { buf.append("(01)"); int initialPosition = buf.length(); buf.append('9'); encodeCompressedGtinWithoutAI(buf, currentPos, initialPosition); } void AI01decoder::encodeCompressedGtinWithoutAI(String &buf, int currentPos, int initialBufferPosition) { for (int i = 0; i < 4; ++i) { int currentBlock = getGeneralDecoder().extractNumericValueFromBitArray(currentPos + 10 * i, 10); if (currentBlock / 100 == 0) { buf.append("0"); } if (currentBlock / 10 == 0) { buf.append("0"); } buf.append(common::StringUtils::intToStr(currentBlock)); } appendCheckDigit(buf, initialBufferPosition); } void AI01decoder::appendCheckDigit(String &buf, int currentPos) { int checkDigit = 0; for (int i = 0; i < 13; i++) { int digit = buf.charAt(i + currentPos) - '0'; checkDigit += (i & 0x01) == 0 ? 3 * digit : digit; } checkDigit = 10 - (checkDigit % 10); if (checkDigit == 10) { checkDigit = 0; } buf.append(common::StringUtils::intToStr(checkDigit)); } } } } yubioath-desktop/QZXing/zxing/zxing/oned/rss/expanded/decoders/AI01decoder.h000066400000000000000000000030631412677075700273160ustar00rootroot00000000000000#ifndef AI01_DECODER_H #define AI01_DECODER_H /* * Copyright (C) 2010 ZXing authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * 2019-07-17 translation from Java into C++ */ /* * These authors would like to acknowledge the Spanish Ministry of Industry, * Tourism and Trade, for the support in the project TSI020301-2008-2 * "PIRAmIDE: Personalizable Interactions with Resources on AmI-enabled * Mobile Dynamic Environments", led by Treelogic * ( http://www.treelogic.com/ ): * * http://www.piramidepse.com/ */ #include "AbstractExpandedDecoder.h" #include #include namespace zxing { namespace oned { namespace rss { class AI01decoder : public AbstractExpandedDecoder { public: static const int GTIN_SIZE = 40; AI01decoder(Ref information); void encodeCompressedGtin(String &buf, int currentPos); void encodeCompressedGtinWithoutAI(String &buf, int currentPos, int initialBufferPosition); static void appendCheckDigit(String &buf, int currentPos); }; } } } #endif yubioath-desktop/QZXing/zxing/zxing/oned/rss/expanded/decoders/AI01weightDecoder.cpp000066400000000000000000000014371412677075700310240ustar00rootroot00000000000000#include "AI01weightDecoder.h" #include namespace zxing { namespace oned { namespace rss { AI01weightDecoder::AI01weightDecoder(Ref information) : AI01decoder(information) { } void AI01weightDecoder::encodeCompressedWeight(String &buf, int currentPos, int weightSize) { int originalWeightNumeric = getGeneralDecoder().extractNumericValueFromBitArray(currentPos, weightSize); addWeightCode(buf, originalWeightNumeric); int weightNumeric = checkWeight(originalWeightNumeric); int currentDivisor = 100000; for (int i = 0; i < 5; ++i) { if (weightNumeric / currentDivisor == 0) { buf.append('0'); } currentDivisor /= 10; } buf.append(common::StringUtils::intToStr(weightNumeric)); } } } } yubioath-desktop/QZXing/zxing/zxing/oned/rss/expanded/decoders/AI01weightDecoder.h000066400000000000000000000031061412677075700304640ustar00rootroot00000000000000#ifndef AI01_WEIGHT_DECODER_H #define AI01_WEIGHT_DECODER_H /* * Copyright (C) 2010 ZXing authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * 2019-07-17 translation from Java into C++ */ /* * These authors would like to acknowledge the Spanish Ministry of Industry, * Tourism and Trade, for the support in the project TSI020301-2008-2 * "PIRAmIDE: Personalizable Interactions with Resources on AmI-enabled * Mobile Dynamic Environments", led by Treelogic * ( http://www.treelogic.com/ ): * * http://www.piramidepse.com/ */ #include "AI01decoder.h" #include #include namespace zxing { namespace oned { namespace rss { /** * @author Pablo Orduña, University of Deusto (pablo.orduna@deusto.es) */ class AI01weightDecoder : public AI01decoder { public: AI01weightDecoder(Ref information); void encodeCompressedWeight(String &buf, int currentPos, int weightSize); protected: virtual void addWeightCode(String &buf, int weight) = 0; virtual int checkWeight(int weight) = 0; }; } } } #endif yubioath-desktop/QZXing/zxing/zxing/oned/rss/expanded/decoders/AbstractExpandedDecoder.cpp000066400000000000000000000044141412677075700323740ustar00rootroot00000000000000#include "AbstractExpandedDecoder.h" #include "AI01AndOtherAIs.h" #include "AI013x0x1xDecoder.h" #include "AnyAIDecoder.h" #include "AI013103decoder.h" #include "AI01320xDecoder.h" #include "AI01392xDecoder.h" #include "AI01393xDecoder.h" namespace zxing { namespace oned { namespace rss { AbstractExpandedDecoder::AbstractExpandedDecoder(Ref information) : m_information(information), m_generalDecoder(GeneralAppIdDecoder(information)) { } Ref AbstractExpandedDecoder::getInformation() const { return m_information; } GeneralAppIdDecoder AbstractExpandedDecoder::getGeneralDecoder() { return m_generalDecoder; } AbstractExpandedDecoder *AbstractExpandedDecoder::createDecoder(Ref information) { if (information->get(1)) { return new AI01AndOtherAIs(information); } if (!information->get(2)) { return new AnyAIDecoder(information); } int fourBitEncodationMethod = GeneralAppIdDecoder::extractNumericValueFromBitArray(information, 1, 4); switch (fourBitEncodationMethod) { case 4: return new AI013103decoder(information); case 5: return new AI01320xDecoder(information); } int fiveBitEncodationMethod = GeneralAppIdDecoder::extractNumericValueFromBitArray(information, 1, 5); switch (fiveBitEncodationMethod) { case 12: return new AI01392xDecoder(information); case 13: return new AI01393xDecoder(information); } int sevenBitEncodationMethod = GeneralAppIdDecoder::extractNumericValueFromBitArray(information, 1, 7); switch (sevenBitEncodationMethod) { case 56: return new AI013x0x1xDecoder(information, String("310"), String("11")); case 57: return new AI013x0x1xDecoder(information, String("320"), String("11")); case 58: return new AI013x0x1xDecoder(information, String("310"), String("13")); case 59: return new AI013x0x1xDecoder(information, String("320"), String("13")); case 60: return new AI013x0x1xDecoder(information, String("310"), String("15")); case 61: return new AI013x0x1xDecoder(information, String("320"), String("15")); case 62: return new AI013x0x1xDecoder(information, String("310"), String("17")); case 63: return new AI013x0x1xDecoder(information, String("320"), String("17")); } throw IllegalStateException(); } } } } yubioath-desktop/QZXing/zxing/zxing/oned/rss/expanded/decoders/AbstractExpandedDecoder.h000066400000000000000000000033511412677075700320400ustar00rootroot00000000000000#ifndef ABSTRACT_EXPANDED_DECODER_H #define ABSTRACT_EXPANDED_DECODER_H /* * Copyright (C) 2010 ZXing authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * 2019-07-17 translation from Java into C++ */ /* * These authors would like to acknowledge the Spanish Ministry of Industry, * Tourism and Trade, for the support in the project TSI020301-2008-2 * "PIRAmIDE: Personalizable Interactions with Resources on AmI-enabled * Mobile Dynamic Environments", led by Treelogic * ( http://www.treelogic.com/ ): * * http://www.piramidepse.com/ */ #include "GeneralAppIdDecoder.h" #include #include #include #include namespace zxing { namespace oned { namespace rss { class AbstractExpandedDecoder { public: AbstractExpandedDecoder(Ref information); virtual ~AbstractExpandedDecoder() {} Ref getInformation() const; virtual GeneralAppIdDecoder getGeneralDecoder(); virtual String parseInformation() = 0; static AbstractExpandedDecoder* createDecoder(Ref information); protected: Ref m_information; GeneralAppIdDecoder m_generalDecoder; }; } } } #endif yubioath-desktop/QZXing/zxing/zxing/oned/rss/expanded/decoders/AnyAIDecoder.cpp000066400000000000000000000004761412677075700301250ustar00rootroot00000000000000#include "AnyAIDecoder.h" namespace zxing { namespace oned { namespace rss { AnyAIDecoder::AnyAIDecoder(Ref information) : AbstractExpandedDecoder(information) { } String AnyAIDecoder::parseInformation() { String buf(""); return getGeneralDecoder().decodeAllCodes(buf, HEADER_SIZE); } } } } yubioath-desktop/QZXing/zxing/zxing/oned/rss/expanded/decoders/AnyAIDecoder.h000066400000000000000000000026651412677075700275740ustar00rootroot00000000000000#ifndef ANY_AI_DECODER_H #define ANY_AI_DECODER_H /* * Copyright (C) 2010 ZXing authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * 2019-07-17 translation from Java into C++ */ /* * These authors would like to acknowledge the Spanish Ministry of Industry, * Tourism and Trade, for the support in the project TSI020301-2008-2 * "PIRAmIDE: Personalizable Interactions with Resources on AmI-enabled * Mobile Dynamic Environments", led by Treelogic * ( http://www.treelogic.com/ ): * * http://www.piramidepse.com/ */ #include #include #include #include "AbstractExpandedDecoder.h" namespace zxing { namespace oned { namespace rss { class AnyAIDecoder : public AbstractExpandedDecoder { static const int HEADER_SIZE = 2 + 1 + 2; public: AnyAIDecoder(Ref information); String parseInformation() override; }; } } } #endif yubioath-desktop/QZXing/zxing/zxing/oned/rss/expanded/decoders/BlockParsedResult.cpp000066400000000000000000000010261412677075700312560ustar00rootroot00000000000000#include "BlockParsedResult.h" namespace zxing { namespace oned { namespace rss { BlockParsedResult::BlockParsedResult(bool finished) : m_decodedInformation(nullptr), m_finished(finished) { } BlockParsedResult::BlockParsedResult(const DecodedInformation &information, bool finished) { m_finished = finished; m_decodedInformation = information; } DecodedInformation BlockParsedResult::getDecodedInformation() { return m_decodedInformation; } bool BlockParsedResult::isFinished() { return m_finished; } } } } yubioath-desktop/QZXing/zxing/zxing/oned/rss/expanded/decoders/BlockParsedResult.h000066400000000000000000000026701412677075700307310ustar00rootroot00000000000000#ifndef BLOCK_PARSED_RESULT_H #define BLOCK_PARSED_RESULT_H /* * Copyright (C) 2010 ZXing authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * 2019-07-17 translation from Java into C++ */ /* * These authors would like to acknowledge the Spanish Ministry of Industry, * Tourism and Trade, for the support in the project TSI020301-2008-2 * "PIRAmIDE: Personalizable Interactions with Resources on AmI-enabled * Mobile Dynamic Environments", led by Treelogic * ( http://www.treelogic.com/ ): * * http://www.piramidepse.com/ */ #include "DecodedInformation.h" namespace zxing { namespace oned { namespace rss { class BlockParsedResult { public: BlockParsedResult(bool finished); BlockParsedResult(const DecodedInformation& information, bool finished); DecodedInformation getDecodedInformation(); bool isFinished(); private: DecodedInformation m_decodedInformation; bool m_finished; }; } } } #endif yubioath-desktop/QZXing/zxing/zxing/oned/rss/expanded/decoders/CurrentParsingState.cpp000066400000000000000000000016301412677075700316360ustar00rootroot00000000000000#include "CurrentParsingState.h" namespace zxing { namespace oned { namespace rss { CurrentParsingState::CurrentParsingState() { position = 0; encoding = State::NUMERIC; } int CurrentParsingState::getPosition() const { return position; } void CurrentParsingState::setPosition(int _position) { position = _position; } void CurrentParsingState::incrementPosition(int delta) { position += delta; } bool CurrentParsingState::isAlpha() const { return encoding == State::ALPHA; } bool CurrentParsingState::isNumeric() const { return encoding == State::NUMERIC; } bool CurrentParsingState::isIsoIec646() const { return encoding == State::ISO_IEC_646; } void CurrentParsingState::setNumeric() { encoding = State::NUMERIC; } void CurrentParsingState::setAlpha() { encoding = State::ALPHA; } void CurrentParsingState::setIsoIec646() { encoding = State::ISO_IEC_646; } } } } yubioath-desktop/QZXing/zxing/zxing/oned/rss/expanded/decoders/CurrentParsingState.h000066400000000000000000000030701412677075700313030ustar00rootroot00000000000000#ifndef CURRENT_PARSING_STATE_H #define CURRENT_PARSING_STATE_H /* * Copyright (C) 2010 ZXing authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * 2019-07-17 translation from Java into C++ */ /* * These authors would like to acknowledge the Spanish Ministry of Industry, * Tourism and Trade, for the support in the project TSI020301-2008-2 * "PIRAmIDE: Personalizable Interactions with Resources on AmI-enabled * Mobile Dynamic Environments", led by Treelogic * ( http://www.treelogic.com/ ): * * http://www.piramidepse.com/ */ namespace zxing { namespace oned { namespace rss { class CurrentParsingState { public: enum State { NUMERIC, ALPHA, ISO_IEC_646 }; CurrentParsingState(); int getPosition() const; void setPosition(int _position); void incrementPosition(int delta); bool isAlpha() const; bool isNumeric() const; bool isIsoIec646() const; void setNumeric(); void setAlpha(); void setIsoIec646(); private: int position; State encoding; }; } } } #endif yubioath-desktop/QZXing/zxing/zxing/oned/rss/expanded/decoders/DecodedChar.cpp000066400000000000000000000005001412677075700300070ustar00rootroot00000000000000#include "DecodedChar.h" namespace zxing { namespace oned { namespace rss { DecodedChar::DecodedChar(int newPosition, char value) : DecodedObject (newPosition), m_value(value) { } char DecodedChar::getValue() const { return m_value; } bool DecodedChar::isFNC1() const { return m_value == FNC1; } } } } yubioath-desktop/QZXing/zxing/zxing/oned/rss/expanded/decoders/DecodedChar.h000066400000000000000000000026141412677075700274640ustar00rootroot00000000000000#ifndef DECODED_CHAR_H #define DECODED_CHAR_H /* * Copyright (C) 2010 ZXing authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * 2019-07-17 translation from Java into C++ */ /* * These authors would like to acknowledge the Spanish Ministry of Industry, * Tourism and Trade, for the support in the project TSI020301-2008-2 * "PIRAmIDE: Personalizable Interactions with Resources on AmI-enabled * Mobile Dynamic Environments", led by Treelogic * ( http://www.treelogic.com/ ): * * http://www.piramidepse.com/ */ #include "DecodedObject.h" namespace zxing { namespace oned { namespace rss { class DecodedChar : public DecodedObject { public: static const char FNC1 = '$'; // It's not in Alphanumeric neither in ISO/IEC 646 charset DecodedChar(int newPosition, char value); char getValue() const; bool isFNC1() const; private: char m_value; }; } } } #endif yubioath-desktop/QZXing/zxing/zxing/oned/rss/expanded/decoders/DecodedInformation.cpp000066400000000000000000000022241412677075700314240ustar00rootroot00000000000000#include "DecodedInformation.h" namespace zxing { namespace oned { namespace rss { DecodedInformation::DecodedInformation(const DecodedInformation *other) : DecodedObject (other == nullptr ? 0 : other->m_newPosition), m_newString(other == nullptr ? String("") : other->m_newString) { m_newString = other == nullptr ? String("") : other->m_newString; m_remaining = other == nullptr ? false : other->m_remaining; m_remainingValue = other == nullptr ? 0 : other->m_remainingValue; } DecodedInformation::DecodedInformation(int newPosition, String newString) : DecodedObject (newPosition), m_newString(newString), m_remainingValue(0), m_remaining(false) { } DecodedInformation::DecodedInformation(int newPosition, String newString, int remainingValue) : DecodedObject (newPosition), m_newString(newString), m_remainingValue(remainingValue), m_remaining(true) { } String DecodedInformation::getNewString() const { return m_newString; } bool DecodedInformation::isRemaining() const { return m_remaining; } int DecodedInformation::getRemainingValue() const { return m_remainingValue; } } } } yubioath-desktop/QZXing/zxing/zxing/oned/rss/expanded/decoders/DecodedInformation.h000066400000000000000000000031501412677075700310700ustar00rootroot00000000000000#ifndef DECODED_INFORMATION_H #define DECODED_INFORMATION_H /* * Copyright (C) 2010 ZXing authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * 2019-07-17 translation from Java into C++ */ /* * These authors would like to acknowledge the Spanish Ministry of Industry, * Tourism and Trade, for the support in the project TSI020301-2008-2 * "PIRAmIDE: Personalizable Interactions with Resources on AmI-enabled * Mobile Dynamic Environments", led by Treelogic * ( http://www.treelogic.com/ ): * * http://www.piramidepse.com/ */ #include "DecodedObject.h" #include namespace zxing { namespace oned { namespace rss { class DecodedInformation : public DecodedObject { public: DecodedInformation(const DecodedInformation* other = nullptr); DecodedInformation(int newPosition, String newString); DecodedInformation(int newPosition, String newString, int remainingValue); String getNewString() const; bool isRemaining() const; int getRemainingValue() const; private: String m_newString; int m_remainingValue; bool m_remaining; }; } } } #endif yubioath-desktop/QZXing/zxing/zxing/oned/rss/expanded/decoders/DecodedNumeric.cpp000066400000000000000000000022311412677075700305370ustar00rootroot00000000000000#include "DecodedNumeric.h" namespace zxing { namespace oned { namespace rss { DecodedNumeric::DecodedNumeric(int newPosition, int firstDigit, int secondDigit) : DecodedObject(newPosition) { if (firstDigit < 0 || firstDigit > 10 || secondDigit < 0 || secondDigit > 10) { throw FormatException::getFormatInstance(); } m_newPosition = newPosition; m_firstDigit = firstDigit; m_secondDigit = secondDigit; } DecodedNumeric::DecodedNumeric(const DecodedNumeric *other) : DecodedObject (other == nullptr ? 0 : other->m_newPosition) { m_newPosition = other == nullptr ? 0 : other->m_newPosition; m_firstDigit = other == nullptr ? 0 : other->m_firstDigit; m_secondDigit = other == nullptr ? 0 : other->m_secondDigit; } int DecodedNumeric::getFirstDigit() const { return m_firstDigit; } int DecodedNumeric::getSecondDigit() const { return m_secondDigit; } int DecodedNumeric::getValue() const { return m_firstDigit * 10 + m_secondDigit; } bool DecodedNumeric::isFirstDigitFNC1() const { return m_firstDigit == FNC1; } bool DecodedNumeric::isSecondDigitFNC1() const { return m_secondDigit == FNC1; } } } } yubioath-desktop/QZXing/zxing/zxing/oned/rss/expanded/decoders/DecodedNumeric.h000066400000000000000000000031311412677075700302040ustar00rootroot00000000000000#ifndef DECODED_NUMERIC_H #define DECODED_NUMERIC_H /* * Copyright (C) 2010 ZXing authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * 2019-07-17 translation from Java into C++ */ /* * These authors would like to acknowledge the Spanish Ministry of Industry, * Tourism and Trade, for the support in the project TSI020301-2008-2 * "PIRAmIDE: Personalizable Interactions with Resources on AmI-enabled * Mobile Dynamic Environments", led by Treelogic * ( http://www.treelogic.com/ ): * * http://www.piramidepse.com/ */ #include "DecodedObject.h" #include namespace zxing { namespace oned { namespace rss { class DecodedNumeric : public DecodedObject { public: static const int FNC1 = 10; DecodedNumeric(int newPosition, int firstDigit, int secondDigit); DecodedNumeric(const DecodedNumeric* other = nullptr); int getFirstDigit() const; int getSecondDigit() const; int getValue() const; bool isFirstDigitFNC1() const; bool isSecondDigitFNC1() const; private: int m_firstDigit; int m_secondDigit; }; } } } #endif yubioath-desktop/QZXing/zxing/zxing/oned/rss/expanded/decoders/DecodedObject.cpp000066400000000000000000000003641412677075700303500ustar00rootroot00000000000000#include "DecodedObject.h" namespace zxing { namespace oned { namespace rss { DecodedObject::DecodedObject(int newPosition) : m_newPosition(newPosition) { } int DecodedObject::getNewPosition() const { return m_newPosition; } } } } yubioath-desktop/QZXing/zxing/zxing/oned/rss/expanded/decoders/DecodedObject.h000066400000000000000000000023461412677075700300170ustar00rootroot00000000000000#ifndef DECODED_OBJECT_H #define DECODED_OBJECT_H /* * Copyright (C) 2010 ZXing authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * 2019-07-17 translation from Java into C++ */ /* * These authors would like to acknowledge the Spanish Ministry of Industry, * Tourism and Trade, for the support in the project TSI020301-2008-2 * "PIRAmIDE: Personalizable Interactions with Resources on AmI-enabled * Mobile Dynamic Environments", led by Treelogic * ( http://www.treelogic.com/ ): * * http://www.piramidepse.com/ */ namespace zxing { namespace oned { namespace rss { class DecodedObject { public: DecodedObject(int newPosition); int getNewPosition() const; protected: int m_newPosition; }; } } } #endif yubioath-desktop/QZXing/zxing/zxing/oned/rss/expanded/decoders/FieldParser.cpp000066400000000000000000000157371412677075700301040ustar00rootroot00000000000000#include "FieldParser.h" #include namespace zxing { namespace oned { namespace rss { static const int VARIABLE_LENGTH = 99999; struct DigitData { std::string digit; int variableLength; int length; }; static const DigitData TWO_DIGIT_DATA_LENGTH[] { // "DIGITS", new Integer(LENGTH) // or // "DIGITS", VARIABLE_LENGTH, new Integer(MAX_SIZE) { "00", 18, 0}, { "01", 14, 0}, { "02", 14, 0}, { "10", VARIABLE_LENGTH, 20}, { "11", 6, 0}, { "12", 6, 0}, { "13", 6, 0}, { "15", 6, 0}, { "17", 6, 0}, { "20", 2, 0}, { "21", VARIABLE_LENGTH, 20}, { "22", VARIABLE_LENGTH, 29}, { "30", VARIABLE_LENGTH, 8}, { "37", VARIABLE_LENGTH, 8}, //internal company codes { "90", VARIABLE_LENGTH, 30}, { "91", VARIABLE_LENGTH, 30}, { "92", VARIABLE_LENGTH, 30}, { "93", VARIABLE_LENGTH, 30}, { "94", VARIABLE_LENGTH, 30}, { "95", VARIABLE_LENGTH, 30}, { "96", VARIABLE_LENGTH, 30}, { "97", VARIABLE_LENGTH, 30}, { "98", VARIABLE_LENGTH, 30}, { "99", VARIABLE_LENGTH, 30}, }; static const DigitData THREE_DIGIT_DATA_LENGTH[] { // Same format as above { "240", VARIABLE_LENGTH, 30}, { "241", VARIABLE_LENGTH, 30}, { "242", VARIABLE_LENGTH, 6}, { "250", VARIABLE_LENGTH, 30}, { "251", VARIABLE_LENGTH, 30}, { "253", VARIABLE_LENGTH, 17}, { "254", VARIABLE_LENGTH, 20}, { "400", VARIABLE_LENGTH, 30}, { "401", VARIABLE_LENGTH, 30}, { "402", 17, 0}, { "403", VARIABLE_LENGTH, 30}, { "410", 13, 0}, { "411", 13, 0}, { "412", 13, 0}, { "413", 13, 0}, { "414", 13, 0}, { "420", VARIABLE_LENGTH, 20}, { "421", VARIABLE_LENGTH, 15}, { "422", 3, 0}, { "423", VARIABLE_LENGTH, 15}, { "424", 3, 0}, { "425", 3, 0}, { "426", 3, 0}, }; static const DigitData THREE_DIGIT_PLUS_DIGIT_DATA_LENGTH[] { // Same format as above { "310", 6, 0}, { "311", 6, 0}, { "312", 6, 0}, { "313", 6, 0}, { "314", 6, 0}, { "315", 6, 0}, { "316", 6, 0}, { "320", 6, 0}, { "321", 6, 0}, { "322", 6, 0}, { "323", 6, 0}, { "324", 6, 0}, { "325", 6, 0}, { "326", 6, 0}, { "327", 6, 0}, { "328", 6, 0}, { "329", 6, 0}, { "330", 6, 0}, { "331", 6, 0}, { "332", 6, 0}, { "333", 6, 0}, { "334", 6, 0}, { "335", 6, 0}, { "336", 6, 0}, { "340", 6, 0}, { "341", 6, 0}, { "342", 6, 0}, { "343", 6, 0}, { "344", 6, 0}, { "345", 6, 0}, { "346", 6, 0}, { "347", 6, 0}, { "348", 6, 0}, { "349", 6, 0}, { "350", 6, 0}, { "351", 6, 0}, { "352", 6, 0}, { "353", 6, 0}, { "354", 6, 0}, { "355", 6, 0}, { "356", 6, 0}, { "357", 6, 0}, { "360", 6, 0}, { "361", 6, 0}, { "362", 6, 0}, { "363", 6, 0}, { "364", 6, 0}, { "365", 6, 0}, { "366", 6, 0}, { "367", 6, 0}, { "368", 6, 0}, { "369", 6, 0}, { "390", VARIABLE_LENGTH, 15}, { "391", VARIABLE_LENGTH, 18}, { "392", VARIABLE_LENGTH, 15}, { "393", VARIABLE_LENGTH, 18}, { "703", VARIABLE_LENGTH, 30}, }; static const DigitData FOUR_DIGIT_DATA_LENGTH[] { // Same format as above { "7001", 13, 0}, { "7002", VARIABLE_LENGTH, 30}, { "7003", 10, 0}, { "8001", 14, 0}, { "8002", VARIABLE_LENGTH, 20}, { "8003", VARIABLE_LENGTH, 30}, { "8004", VARIABLE_LENGTH, 30}, { "8005", 6, 0}, { "8006", 18, 0}, { "8007", VARIABLE_LENGTH, 30}, { "8008", VARIABLE_LENGTH, 12}, { "8018", 18, 0}, { "8020", VARIABLE_LENGTH, 25}, { "8100", 6, 0}, { "8101", 10, 0}, { "8102", 2, 0}, { "8110", VARIABLE_LENGTH, 70}, { "8200", VARIABLE_LENGTH, 70}, }; String FieldParser::parseFieldsInGeneralPurpose(String rawInformation) { if (rawInformation.getText().empty()) { return String(""); } // Processing 2-digit AIs if (rawInformation.length() < 2) { throw NotFoundException(); } String firstTwoDigits(rawInformation.substring(0, 2)->getText()); for (DigitData dataLength : TWO_DIGIT_DATA_LENGTH) { if (dataLength.digit == firstTwoDigits.getText()) { if (dataLength.variableLength == VARIABLE_LENGTH) { return processVariableAI(2, dataLength.length, rawInformation); } return processFixedAI(2, dataLength.variableLength, rawInformation); } } if (rawInformation.length() < 3) { throw NotFoundException(); } String firstThreeDigits(rawInformation.substring(0, 3)->getText()); for (DigitData dataLength : THREE_DIGIT_DATA_LENGTH) { if (dataLength.digit == firstThreeDigits.getText()) { if (dataLength.variableLength == VARIABLE_LENGTH) { return processVariableAI(3, dataLength.length, rawInformation); } return processFixedAI(3, dataLength.variableLength, rawInformation); } } for (DigitData dataLength : THREE_DIGIT_PLUS_DIGIT_DATA_LENGTH) { if (dataLength.digit == firstThreeDigits.getText()) { if (dataLength.variableLength == VARIABLE_LENGTH) { return processVariableAI(4, dataLength.length, rawInformation); } return processFixedAI(4, dataLength.variableLength, rawInformation); } } if (rawInformation.length() < 4) { throw NotFoundException(); } String firstFourDigits(rawInformation.substring(0, 4)->getText()); for (DigitData dataLength : FOUR_DIGIT_DATA_LENGTH) { if (dataLength.digit == firstFourDigits.getText()) { if (dataLength.variableLength == VARIABLE_LENGTH) { return processVariableAI(4, dataLength.length, rawInformation); } return processFixedAI(4, dataLength.variableLength, rawInformation); } } throw NotFoundException(); } String FieldParser::processFixedAI(int aiSize, int fieldSize, String rawInformation) { if (rawInformation.length() < aiSize) { throw NotFoundException(); } String ai(rawInformation.substring(0, aiSize)->getText()); if (rawInformation.length() < aiSize + fieldSize) { throw NotFoundException(); } String field(rawInformation.substring(aiSize, /*aiSize +*/ fieldSize)->getText()); String remaining(rawInformation.substring(aiSize + fieldSize)->getText()); String result('(' + ai.getText() + ')' + field.getText()); String parsedAI = parseFieldsInGeneralPurpose(remaining); if (parsedAI.getText() == "") { return result; } else { result.append(parsedAI.getText()); return result; } } String FieldParser::processVariableAI(int aiSize, int variableFieldSize, String rawInformation) { String ai(rawInformation.substring(0, aiSize)->getText()); int maxSize = std::min(rawInformation.length(), aiSize + variableFieldSize); String field(rawInformation.substring(aiSize, maxSize - aiSize)->getText()); String remaining(rawInformation.substring(maxSize)->getText()); String result('(' + ai.getText() + ')' + field.getText()); String parsedAI = parseFieldsInGeneralPurpose(remaining); if (parsedAI.getText() == "") { return result; } else { result.append(parsedAI.getText()); return result; } } } } } yubioath-desktop/QZXing/zxing/zxing/oned/rss/expanded/decoders/FieldParser.h000066400000000000000000000027101412677075700275340ustar00rootroot00000000000000#ifndef FIELD_PARSER_H #define FIELD_PARSER_H /* * Copyright (C) 2010 ZXing authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * 2019-07-17 translation from Java into C++ */ /* * These authors would like to acknowledge the Spanish Ministry of Industry, * Tourism and Trade, for the support in the project TSI020301-2008-2 * "PIRAmIDE: Personalizable Interactions with Resources on AmI-enabled * Mobile Dynamic Environments", led by Treelogic * ( http://www.treelogic.com/ ): * * http://www.piramidepse.com/ */ #include #include #include namespace zxing { namespace oned { namespace rss { class FieldParser { public: static String parseFieldsInGeneralPurpose(String rawInformation); static String processFixedAI(int aiSize, int fieldSize, String rawInformation); static String processVariableAI(int aiSize, int variableFieldSize, String rawInformation); }; } } } #endif yubioath-desktop/QZXing/zxing/zxing/oned/rss/expanded/decoders/GeneralAppIdDecoder.cpp000066400000000000000000000302761412677075700314600ustar00rootroot00000000000000#include "GeneralAppIdDecoder.h" #include namespace zxing { namespace oned { namespace rss { GeneralAppIdDecoder::GeneralAppIdDecoder(Ref information) : m_information(information), m_buffer("") { } String GeneralAppIdDecoder::decodeAllCodes(String &buff, int initialPosition) { int currentPosition = initialPosition; String remaining(""); do { DecodedInformation info(decodeGeneralPurposeField(currentPosition, remaining)); String parsedFields = FieldParser::parseFieldsInGeneralPurpose(info.getNewString()); if (parsedFields.length() > 0) { buff.append(parsedFields.getText()); } if (info.isRemaining()) { remaining = String(common::StringUtils::intToStr(info.getRemainingValue())); } else { remaining = String(""); } if (currentPosition == info.getNewPosition()) { // No step forward! break; } currentPosition = info.getNewPosition(); } while (true); return buff; } bool GeneralAppIdDecoder::isStillNumeric(int pos) const { // It's numeric if it still has 7 positions // and one of the first 4 bits is "1". if (pos + 7 > m_information->getSize()) { return pos + 4 <= m_information->getSize(); } for (int i = pos; i < pos + 3; ++i) { if (m_information->get(i)) { return true; } } return m_information->get(pos + 3); } DecodedNumeric* GeneralAppIdDecoder::decodeNumeric(int pos) { if (pos + 7 > m_information->getSize()) { int numeric = extractNumericValueFromBitArray(pos, 4); if (numeric == 0) { return new DecodedNumeric(m_information->getSize(), DecodedNumeric::FNC1, DecodedNumeric::FNC1); } return new DecodedNumeric(m_information->getSize(), numeric - 1, DecodedNumeric::FNC1); } int numeric = extractNumericValueFromBitArray(pos, 7); int digit1 = (numeric - 8) / 11; int digit2 = (numeric - 8) % 11; return new DecodedNumeric(pos + 7, digit1, digit2); } int GeneralAppIdDecoder::extractNumericValueFromBitArray(int pos, int bits) { return extractNumericValueFromBitArray(m_information, pos, bits); } int GeneralAppIdDecoder::extractNumericValueFromBitArray(Ref information, int pos, int bits) { int value = 0; for (int i = 0; i < bits; ++i) { if (information->get(pos + i)) { value |= 1 << (bits - i - 1); } } return value; } DecodedInformation GeneralAppIdDecoder::decodeGeneralPurposeField(int pos, String &remaining) { m_buffer = String(""); if (remaining.length() > 0) { m_buffer.append(remaining.getText()); } m_current.setPosition(pos); DecodedInformation lastDecoded(parseBlocks()); if (lastDecoded.getNewString().length() > 0 && lastDecoded.isRemaining()) { return DecodedInformation(m_current.getPosition(), m_buffer, lastDecoded.getRemainingValue()); } return DecodedInformation(m_current.getPosition(), m_buffer); } DecodedInformation GeneralAppIdDecoder::parseBlocks() { bool isFinished; BlockParsedResult* result; do { int initialPosition = m_current.getPosition(); if (m_current.isAlpha()) { result = parseAlphaBlock(); isFinished = result->isFinished(); } else if (m_current.isIsoIec646()) { result = parseIsoIec646Block(); isFinished = result->isFinished(); } else { // it must be numeric result = parseNumericBlock(); isFinished = result->isFinished(); } bool positionChanged = initialPosition != m_current.getPosition(); if (!positionChanged && !isFinished) { break; } } while (!isFinished); return result->getDecodedInformation(); } BlockParsedResult* GeneralAppIdDecoder::parseNumericBlock() { while (isStillNumeric(m_current.getPosition())) { DecodedNumeric numeric(decodeNumeric(m_current.getPosition())); m_current.setPosition(numeric.getNewPosition()); if (numeric.isFirstDigitFNC1()) { DecodedInformation information(0, String("")); if (numeric.isSecondDigitFNC1()) { return new BlockParsedResult(DecodedInformation(m_current.getPosition(), m_buffer), true); } else { return new BlockParsedResult(DecodedInformation(m_current.getPosition(), m_buffer, numeric.getSecondDigit()), true); } } m_buffer.append(common::StringUtils::intToStr(numeric.getFirstDigit())); if (numeric.isSecondDigitFNC1()) { DecodedInformation information(m_current.getPosition(), m_buffer); return new BlockParsedResult(information, true); } m_buffer.append(common::StringUtils::intToStr(numeric.getSecondDigit())); } if (isNumericToAlphaNumericLatch(m_current.getPosition())) { m_current.setAlpha(); m_current.incrementPosition(4); } return new BlockParsedResult(false); } BlockParsedResult* GeneralAppIdDecoder::parseIsoIec646Block() { while (isStillIsoIec646(m_current.getPosition())) { DecodedChar iso = decodeIsoIec646(m_current.getPosition()); m_current.setPosition(iso.getNewPosition()); if (iso.isFNC1()) { DecodedInformation information(m_current.getPosition(), m_buffer); return new BlockParsedResult(information, true); } m_buffer.append(iso.getValue()); } if (isAlphaOr646ToNumericLatch(m_current.getPosition())) { m_current.incrementPosition(3); m_current.setNumeric(); } else if (isAlphaTo646ToAlphaLatch(m_current.getPosition())) { if (m_current.getPosition() + 5 < m_information->getSize()) { m_current.incrementPosition(5); } else { m_current.setPosition(m_information->getSize()); } m_current.setAlpha(); } return new BlockParsedResult(false); } BlockParsedResult* GeneralAppIdDecoder::parseAlphaBlock() { while (isStillAlpha(m_current.getPosition())) { DecodedChar alpha(decodeAlphanumeric(m_current.getPosition())); m_current.setPosition(alpha.getNewPosition()); if (alpha.isFNC1()) { DecodedInformation information(m_current.getPosition(), m_buffer); return new BlockParsedResult(information, true); //end of the char block } m_buffer.append(alpha.getValue()); } if (isAlphaOr646ToNumericLatch(m_current.getPosition())) { m_current.incrementPosition(3); m_current.setNumeric(); } else if (isAlphaTo646ToAlphaLatch(m_current.getPosition())) { if (m_current.getPosition() + 5 < m_information->getSize()) { m_current.incrementPosition(5); } else { m_current.setPosition(m_information->getSize()); } m_current.setIsoIec646(); } return new BlockParsedResult(false); } bool GeneralAppIdDecoder::isStillIsoIec646(int pos) { if (pos + 5 > m_information->getSize()) { return false; } int fiveBitValue = extractNumericValueFromBitArray(pos, 5); if (fiveBitValue >= 5 && fiveBitValue < 16) { return true; } if (pos + 7 > m_information->getSize()) { return false; } int sevenBitValue = extractNumericValueFromBitArray(pos, 7); if (sevenBitValue >= 64 && sevenBitValue < 116) { return true; } if (pos + 8 > m_information->getSize()) { return false; } int eightBitValue = extractNumericValueFromBitArray(pos, 8); return eightBitValue >= 232 && eightBitValue < 253; } DecodedChar GeneralAppIdDecoder::decodeIsoIec646(int pos) { int fiveBitValue = extractNumericValueFromBitArray(pos, 5); if (fiveBitValue == 15) { return DecodedChar(pos + 5, DecodedChar::FNC1); } if (fiveBitValue >= 5 && fiveBitValue < 15) { return DecodedChar(pos + 5, static_cast('0' + fiveBitValue - 5)); } int sevenBitValue = extractNumericValueFromBitArray(pos, 7); if (sevenBitValue >= 64 && sevenBitValue < 90) { return DecodedChar(pos + 7, static_cast(sevenBitValue + 1)); } if (sevenBitValue >= 90 && sevenBitValue < 116) { return DecodedChar(pos + 7, static_cast(sevenBitValue + 7)); } int eightBitValue = extractNumericValueFromBitArray(pos, 8); char c; switch (eightBitValue) { case 232: c = '!'; break; case 233: c = '"'; break; case 234: c = '%'; break; case 235: c = '&'; break; case 236: c = '\''; break; case 237: c = '('; break; case 238: c = ')'; break; case 239: c = '*'; break; case 240: c = '+'; break; case 241: c = ','; break; case 242: c = '-'; break; case 243: c = '.'; break; case 244: c = '/'; break; case 245: c = ':'; break; case 246: c = ';'; break; case 247: c = '<'; break; case 248: c = '='; break; case 249: c = '>'; break; case 250: c = '?'; break; case 251: c = '_'; break; case 252: c = ' '; break; default: throw FormatException::getFormatInstance(); } return DecodedChar(pos + 8, c); } bool GeneralAppIdDecoder::isStillAlpha(int pos) { if (pos + 5 > m_information->getSize()) { return false; } // We now check if it's a valid 5-bit value (0..9 and FNC1) int fiveBitValue = extractNumericValueFromBitArray(pos, 5); if (fiveBitValue >= 5 && fiveBitValue < 16) { return true; } if (pos + 6 > m_information->getSize()) { return false; } int sixBitValue = extractNumericValueFromBitArray(pos, 6); return sixBitValue >= 16 && sixBitValue < 63; // 63 not included } DecodedChar GeneralAppIdDecoder::decodeAlphanumeric(int pos) { int fiveBitValue = extractNumericValueFromBitArray(pos, 5); if (fiveBitValue == 15) { return DecodedChar(pos + 5, DecodedChar::FNC1); } if (fiveBitValue >= 5 && fiveBitValue < 15) { return DecodedChar(pos + 5, static_cast('0' + fiveBitValue - 5)); } int sixBitValue = extractNumericValueFromBitArray(pos, 6); if (sixBitValue >= 32 && sixBitValue < 58) { return DecodedChar(pos + 6, static_cast(sixBitValue + 33)); } char c; switch (sixBitValue) { case 58: c = '*'; break; case 59: c = ','; break; case 60: c = '-'; break; case 61: c = '.'; break; case 62: c = '/'; break; default: { std::string msg = "Decoding invalid alphanumeric value: " + common::StringUtils::intToStr(sixBitValue); throw IllegalStateException(msg.c_str()); } } return DecodedChar(pos + 6, c); } bool GeneralAppIdDecoder::isAlphaTo646ToAlphaLatch(int pos) { if (pos + 1 > m_information->getSize()) { return false; } for (int i = 0; i < 5 && i + pos < m_information->getSize(); ++i) { if (i == 2) { if (!m_information->get(pos + 2)) { return false; } } else if (m_information->get(pos + i)) { return false; } } return true; } bool GeneralAppIdDecoder::isAlphaOr646ToNumericLatch(int pos) { // Next is alphanumeric if there are 3 positions and they are all zeros if (pos + 3 > m_information->getSize()) { return false; } for (int i = pos; i < pos + 3; ++i) { if (m_information->get(i)) { return false; } } return true; } bool GeneralAppIdDecoder::isNumericToAlphaNumericLatch(int pos) { // Next is alphanumeric if there are 4 positions and they are all zeros, or // if there is a subset of this just before the end of the symbol if (pos + 1 > m_information->getSize()) { return false; } for (int i = 0; i < 4 && i + pos < m_information->getSize(); ++i) { if (m_information->get(pos + i)) { return false; } } return true; } } } } yubioath-desktop/QZXing/zxing/zxing/oned/rss/expanded/decoders/GeneralAppIdDecoder.h000066400000000000000000000047111412677075700311200ustar00rootroot00000000000000#ifndef GENERAL_APP_ID_DECODER_H #define GENERAL_APP_ID_DECODER_H /* * Copyright (C) 2010 ZXing authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * 2019-07-17 translation from Java into C++ */ /* * These authors would like to acknowledge the Spanish Ministry of Industry, * Tourism and Trade, for the support in the project TSI020301-2008-2 * "PIRAmIDE: Personalizable Interactions with Resources on AmI-enabled * Mobile Dynamic Environments", led by Treelogic * ( http://www.treelogic.com/ ): * * http://www.piramidepse.com/ */ #include #include #include #include #include "CurrentParsingState.h" #include "DecodedInformation.h" #include "DecodedNumeric.h" #include "FieldParser.h" #include "BlockParsedResult.h" #include "DecodedChar.h" // VC++ namespace zxing { namespace oned { namespace rss { class GeneralAppIdDecoder { public: GeneralAppIdDecoder(Ref information); String decodeAllCodes(String &buff, int initialPosition); bool isStillNumeric(int pos) const; DecodedNumeric *decodeNumeric(int pos); int extractNumericValueFromBitArray(int pos, int bits); static int extractNumericValueFromBitArray(Ref information, int pos, int bits); DecodedInformation decodeGeneralPurposeField(int pos, String &remaining); DecodedInformation parseBlocks(); BlockParsedResult *parseNumericBlock(); BlockParsedResult *parseIsoIec646Block(); BlockParsedResult *parseAlphaBlock(); bool isStillIsoIec646(int pos); DecodedChar decodeIsoIec646(int pos); bool isStillAlpha(int pos); DecodedChar decodeAlphanumeric(int pos); bool isAlphaTo646ToAlphaLatch(int pos); bool isAlphaOr646ToNumericLatch(int pos); bool isNumericToAlphaNumericLatch(int pos); private: Ref m_information; CurrentParsingState m_current; String m_buffer; }; } } } #endif yubioath-desktop/QZXing/zxing/zxing/pdf417/000077500000000000000000000000001412677075700210545ustar00rootroot00000000000000yubioath-desktop/QZXing/zxing/zxing/pdf417/PDF417Reader.cpp000066400000000000000000000123431412677075700235530ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- /* * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include using zxing::Ref; using zxing::Result; using zxing::BitMatrix; using zxing::pdf417::PDF417Reader; using zxing::pdf417::detector::Detector; // VC++ using zxing::ArrayRef; using zxing::BinaryBitmap; using zxing::DecodeHints; Ref PDF417Reader::decode(Ref image, DecodeHints hints) { Ref decoderResult; /* 2012-05-30 hfn C++ DecodeHintType does not yet know a type "PURE_BARCODE", */ /* therefore skip this for now, todo: may be add this type later */ /* if (!hints.isEmpty() && hints.containsKey(DecodeHintType.PURE_BARCODE)) { BitMatrix bits = extractPureBits(image.getBlackMatrix()); decoderResult = decoder.decode(bits); points = NO_POINTS; } else { */ Detector detector(image); Ref detectorResult = detector.detect(hints); /* 2012-09-17 hints ("try_harder") */ ArrayRef< Ref > points(detectorResult->getPoints()); if (!hints.isEmpty()) { Ref rpcb = hints.getResultPointCallback(); /* .get(DecodeHintType.NEED_RESULT_POINT_CALLBACK); */ if (rpcb != NULL) { for (int i = 0; i < points->size(); i++) { rpcb->foundPossibleResultPoint(*points[i]); } } } decoderResult = decoder.decode(detectorResult->getBits(),hints); /* } */ Ref r(new Result(decoderResult->getText(), decoderResult->getRawBytes(), points, BarcodeFormat::PDF_417)); return r; } void PDF417Reader::reset() { // do nothing } Ref PDF417Reader::extractPureBits(Ref image) { ArrayRef leftTopBlack = image->getTopLeftOnBit(); ArrayRef rightBottomBlack = image->getBottomRightOnBit(); /* see BitMatrix::getTopLeftOnBit etc.: if (leftTopBlack == null || rightBottomBlack == null) { throw NotFoundException.getNotFoundInstance(); } */ int nModuleSize = moduleSize(leftTopBlack, image); int top = leftTopBlack[1]; int bottom = rightBottomBlack[1]; int left = findPatternStart(leftTopBlack[0], top, image); int right = findPatternEnd(leftTopBlack[0], top, image); int matrixWidth = (right - left + 1) / nModuleSize; int matrixHeight = (bottom - top + 1) / nModuleSize; if (matrixWidth <= 0 || matrixHeight <= 0) { throw NotFoundException("PDF417Reader::extractPureBits: no matrix found!"); } // Push in the "border" by half the module width so that we start // sampling in the middle of the module. Just in case the image is a // little off, this will help recover. int nudge = nModuleSize >> 1; top += nudge; left += nudge; // Now just read off the bits Ref bits(new BitMatrix(matrixWidth, matrixHeight)); for (int y = 0; y < matrixHeight; y++) { int iOffset = top + y * nModuleSize; for (int x = 0; x < matrixWidth; x++) { if (image->get(left + x * nModuleSize, iOffset)) { bits->set(x, y); } } } return bits; } int PDF417Reader::moduleSize(ArrayRef leftTopBlack, Ref image) { int x = leftTopBlack[0]; int y = leftTopBlack[1]; int width = image->getWidth(); while (x < width && image->get(x, y)) { x++; } if (x == width) { throw NotFoundException("PDF417Reader::moduleSize: not found!"); } int moduleSize = (int)(((unsigned)(x - leftTopBlack[0])) >> 3); // We've crossed left first bar, which is 8x if (moduleSize == 0) { throw NotFoundException("PDF417Reader::moduleSize: is zero!"); } return moduleSize; } int PDF417Reader::findPatternStart(int x, int y, Ref image) { int width = image->getWidth(); int start = x; // start should be on black int transitions = 0; bool black = true; while (start < width - 1 && transitions < 8) { start++; bool newBlack = image->get(start, y); if (black != newBlack) { transitions++; } black = newBlack; } if (start == width - 1) { throw NotFoundException("PDF417Reader::findPatternStart: no pattern start found!"); } return start; } int PDF417Reader::findPatternEnd(int x, int y, Ref image) { int width = image->getWidth(); int end = width - 1; // end should be on black while (end > x && !image->get(end, y)) { end--; } int transitions = 0; bool black = true; while (end > x && transitions < 9) { end--; bool newBlack = image->get(end, y); if (black != newBlack) { transitions++; } black = newBlack; } if (end == x) { throw NotFoundException("PDF417Reader::findPatternEnd: no pattern end found!"); } return end; } yubioath-desktop/QZXing/zxing/zxing/pdf417/PDF417Reader.h000066400000000000000000000026051412677075700232200ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- #ifndef ZXING_PDF417_READER_H #define ZXING_PDF417_READER_H /* * PDF417Reader.h * zxing * * Copyright 2010,2012 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include namespace zxing { namespace pdf417 { class PDF417Reader : public Reader { private: decoder::Decoder decoder; static Ref extractPureBits(Ref image); static int moduleSize(ArrayRef leftTopBlack, Ref image); static int findPatternStart(int x, int y, Ref image); static int findPatternEnd(int x, int y, Ref image); public: Ref decode(Ref image, DecodeHints hints); void reset(); }; } } #endif // ZXING_PDF417_READER_H yubioath-desktop/QZXing/zxing/zxing/pdf417/decoder/000077500000000000000000000000001412677075700224615ustar00rootroot00000000000000yubioath-desktop/QZXing/zxing/zxing/pdf417/decoder/BitMatrixParser.h000066400000000000000000000046051412677075700257170ustar00rootroot00000000000000#ifndef ZXING_BIT_MATRIX_PARSER_PDF_H #define ZXING_BIT_MATRIX_PARSER_PDF_H /* * BitMatrixParser.h / PDF417 * zxing * * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include #include #include #include namespace zxing { namespace pdf417 { namespace decoder { class BitMatrixParser : public Counted { private: static const int MAX_ROWS; // Maximum Codewords (Data + Error) static const int MAX_CW_CAPACITY; static const int MODULES_IN_SYMBOL; Ref bitMatrix_; int rows_; /* = 0 */ int leftColumnECData_; /* = 0 */ int rightColumnECData_; /* = 0 */ /* added 2012-06-22 HFN */ int aLeftColumnTriple_[3]; int aRightColumnTriple_[3]; int eraseCount_; /* = 0 */ ArrayRef erasures_; int ecLevel_; /* = -1 */ public: static const int SYMBOL_TABLE[]; static const int SYMBOL_TABLE_LENGTH; static const int CODEWORD_TABLE[]; public: BitMatrixParser(Ref bitMatrix); ArrayRef getErasures() const {return erasures_;} int getECLevel() const {return ecLevel_;} int getEraseCount() const {return eraseCount_;} ArrayRef readCodewords(); /* throw(FormatException) */ static int getCodeword(int64_t symbol, int *pi = NULL); private: bool VerifyOuterColumns(int rownumber); static ArrayRef trimArray(ArrayRef array, int size); static int findCodewordIndex(int64_t symbol); int processRow(int rowNumber, ArrayRef codewords, int next); int processRow(ArrayRef rowCounters, int rowNumber, int rowHeight, ArrayRef codewords, int next); /* throw(FormatException) */ protected: bool IsEqual(int &a, int &b, int rownumber); }; } } } #endif // ZXING_BIT_MATRIX_PARSER_PDF_H yubioath-desktop/QZXing/zxing/zxing/pdf417/decoder/DecodedBitStreamParser.h000066400000000000000000000052211412677075700271510ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- #ifndef ZXING_DECODED_BIT_STREAM_PARSER_PD_H #define ZXING_DECODED_BIT_STREAM_PARSER_PD_H /* * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include #include namespace zxing { namespace pdf417 { class DecodedBitStreamParser { protected: enum Mode { ALPHA, LOWER, MIXED, PUNCT, ALPHA_SHIFT, PUNCT_SHIFT }; private: static const int TEXT_COMPACTION_MODE_LATCH; static const int BYTE_COMPACTION_MODE_LATCH; static const int NUMERIC_COMPACTION_MODE_LATCH; static const int BYTE_COMPACTION_MODE_LATCH_6; static const int BEGIN_MACRO_PDF417_CONTROL_BLOCK; static const int BEGIN_MACRO_PDF417_OPTIONAL_FIELD; static const int MACRO_PDF417_TERMINATOR; static const int MODE_SHIFT_TO_BYTE_COMPACTION_MODE; static const int MAX_NUMERIC_CODEWORDS; static const int PL; static const int LL; static const int AS; static const int ML; static const int AL; static const int PS; static const int PAL; static const int EXP900_SIZE; static const char PUNCT_CHARS[]; static const char MIXED_CHARS[]; static ArrayRef EXP900; static ArrayRef initEXP900(); static int textCompaction(ArrayRef codewords, int codeIndex, Ref result); static void decodeTextCompaction(ArrayRef textCompactionData, ArrayRef byteCompactionData, int length, Ref result); static int byteCompaction(int mode, ArrayRef codewords, int codeIndex, Ref result); static int numericCompaction(ArrayRef codewords, int codeIndex, Ref result); static Ref decodeBase900toBase10(ArrayRef codewords, int count); public: DecodedBitStreamParser(); static Ref decode(ArrayRef codewords); }; } /* namespace pdf417 */ } /* namespace zxing */ #endif // ZXING_DECODED_BIT_STREAM_PARSER_PD_H yubioath-desktop/QZXing/zxing/zxing/pdf417/decoder/Decoder.h000066400000000000000000000034031412677075700241770ustar00rootroot00000000000000#ifndef ZXING_DECOCER_PDF_H #define ZXING_DECOCER_PDF_H /* * Decoder.h * zxing * * Created by Hartmut Neubauer, 2012-05-25 * Copyright 2010,2012 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include #include #include #include namespace zxing { namespace pdf417 { namespace decoder { /** *

The main class which implements PDF417 Code decoding -- as * opposed to locating and extracting the PDF417 Code from an image.

* *

2012-06-27 HFN Reed-Solomon error correction activated, see class PDF417RSDecoder.

*

2012-09-19 HFN Reed-Solomon error correction via ErrorCorrection/ModulusGF/ModulusPoly.

*/ class Decoder { private: static const int MAX_ERRORS; static const int MAX_EC_CODEWORDS; void correctErrors(ArrayRef codewords, ArrayRef erasures, int numECCodewords); static void verifyCodewordCount(ArrayRef codewords, int numECCodewords); public: Ref decode(Ref bits, DecodeHints const &hints); }; } } } #endif // ZXING_DECOCER_PDF_H yubioath-desktop/QZXing/zxing/zxing/pdf417/decoder/PDF417BitMatrixParser.cpp000066400000000000000000001456211412677075700270440ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- /* * Copyright 2008-2012 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * Modified by Hartmut Neubauer (HFN) * * 2012-06-27 HFN plausibility checks of outer columns and modulus-3 conditions * of rows added. * 2012-09-?? HFN because the Detector now counts the rows, there is no more * need to check the equality of consecutive rows. All rows are * parsed now. */ #include using zxing::pdf417::decoder::BitMatrixParser; using zxing::ArrayRef; // VC++ using zxing::Ref; using zxing::BitMatrix; const int BitMatrixParser::MAX_ROWS = 90; // Maximum Codewords (Data + Error) const int BitMatrixParser::MAX_CW_CAPACITY = 929; const int BitMatrixParser::MODULES_IN_SYMBOL = 17; BitMatrixParser::BitMatrixParser(Ref bitMatrix) : bitMatrix_(bitMatrix) { rows_ = 0; leftColumnECData_ = 0; rightColumnECData_ = 0; for (int i = 0; i < 3; i++) { aLeftColumnTriple_[i]=0; aRightColumnTriple_[i]=0; } eraseCount_ = 0; ecLevel_ = -1; } /** * To ensure separability of rows, codewords of consecutive rows belong to * different subsets of all possible codewords. This routine scans the * symbols in the barcode. When it finds a number of consecutive rows which * are the same, it assumes that this is a row of codewords and processes * them into a codeword array. * * 2012-09-12 HFN: Because now, at an earlier stage, the Detector has counted * the rows, now it is no more necessary to check the equality of consecutive * rows. We now have to check every row. * * @return an array of codewords. * @throw FormatException for example if number of rows is too big or something * with row processing is bad */ ArrayRef BitMatrixParser::readCodewords() { //int width = bitMatrix_->getWidth(); int height = bitMatrix_->getHeight(); erasures_ = new Array(MAX_CW_CAPACITY); ArrayRef codewords (new Array(MAX_CW_CAPACITY)); int next = 0; int rowNumber = 0; for (int i = 0; i < height; i++) { if (rowNumber >= MAX_ROWS) { // Something is wrong, since we have exceeded // the maximum rows in the specification. throw FormatException("BitMatrixParser::readCodewords(PDF): Too many rows!"); } // Process Row next = processRow(rowNumber, codewords, next); rowNumber++; } erasures_ = trimArray(erasures_, eraseCount_); return trimArray(codewords, next); } /** * Convert the symbols in the row to codewords. * Each PDF417 symbol character consists of four bar elements and four space * elements, each of which can be one to six modules wide. The four bar and * four space elements shall measure 17 modules in total. * * @param rowNumber the current row number of codewords. * @param codewords the codeword array to save codewords into. * @param next the next available index into the codewords array. * @return the next available index into the codeword array after processing * this row. */ int BitMatrixParser::processRow(int rowNumber, ArrayRef codewords, int next) { int width = bitMatrix_->getWidth(); int columnNumber = 0; int cwClusterNumber = -1; int64_t symbol = 0; for (int i = 0; i < width; i += MODULES_IN_SYMBOL) { for (int mask = MODULES_IN_SYMBOL - 1; mask >= 0; mask--) { if (bitMatrix_->get(i + (MODULES_IN_SYMBOL - 1 - mask), rowNumber)) { symbol |= int64_t(1) << mask; } } if (columnNumber > 0) { cwClusterNumber = -1; int cw = getCodeword(symbol,&cwClusterNumber); // 2012-06-27 HFN: cwClusterNumber should be the modulus of the row number by 3; otherwise, // handle the codeword as erasure: if ((cwClusterNumber >= 0) && (cwClusterNumber != rowNumber % 3)) { cw = -1; } if (cw < 0 && i < width - MODULES_IN_SYMBOL) { // Skip errors on the Right row indicator column if (eraseCount_ >= (int)erasures_->size()) { throw FormatException("BitMatrixParser::processRow(PDF417): eraseCount too big!"); } erasures_[eraseCount_] = next; next++; eraseCount_++; } else { if (next >= codewords->size()) { throw FormatException("BitMatrixParser::processRow(PDF417): codewords index out of bound."); } codewords[next++] = cw; } } else { // Left row indicator column cwClusterNumber = -1; int cw = getCodeword(symbol,&cwClusterNumber); aLeftColumnTriple_[rowNumber % 3] = cw; /* added 2012-06-22 hfn */ if (ecLevel_ < 0 && rowNumber % 3 == 1) { leftColumnECData_ = cw; } } symbol = 0; columnNumber++; } if (columnNumber > 1) { // Right row indicator column is in codeword[next] // Overwrite the last codeword i.e. Right Row Indicator --next; aRightColumnTriple_[rowNumber % 3] = codewords[next]; /* added 2012-06-22 hfn */ if (rowNumber % 3 == 2) { if (ecLevel_ < 0) { rightColumnECData_ = codewords[next]; if (rightColumnECData_ == leftColumnECData_ && (int)leftColumnECData_ > 0) { /* leftColumnECData_ != 0 */ ecLevel_ = ((rightColumnECData_ % 30) - rows_ % 3) / 3; } } // 2012-06-22 hfn: verify whether outer columns are still okay: if (!VerifyOuterColumns(rowNumber)) { throw FormatException("BitMatrixParser::processRow(PDF417): outer columns corrupted!"); } } codewords[next] = 0; } return next; } /* Static methods. */ /** * Trim the array to the required size. * * @param array the array * @param size the size to trim it to * @return the new trimmed array */ ArrayRef BitMatrixParser::trimArray(ArrayRef array, int size) { if (size < 0) { throw IllegalArgumentException("BitMatrixParser::trimArray: negative size!"); } // 2012-10-12 hfn don't throw "NoErrorException" when size == 0 ArrayRef a = new Array(size); for (int i = 0; i < size; i++) { a[i] = array[i]; } return a; } /** * Translate the symbol into a codeword. * * @param symbol * @return the codeword corresponding to the symbol. */ /** * 2012-06-27 hfn With the second argument, it is possible to verify in which of the three * "blocks" of the codeword table the codeword has been found: 0, 1 or 2. */ int BitMatrixParser::getCodeword(int64_t symbol, int *pi) { int64_t sym = symbol & 0x3FFFF; int i = findCodewordIndex(sym); if (i == -1) { return -1; } else { int cw = CODEWORD_TABLE[i] - 1; if (pi!= NULL) { *pi = cw / 929; } cw %= 929; return cw; } } /** * Use a binary search to find the index of the codeword corresponding to * this symbol. * * @param symbol the symbol from the barcode. * @return the index into the codeword table. */ int BitMatrixParser::findCodewordIndex(int64_t symbol) { int first = 0; int upto = SYMBOL_TABLE_LENGTH; while (first < upto) { int mid = ((unsigned int)(first + upto)) >> 1; // Compute mid point. if (symbol < SYMBOL_TABLE[mid]) { upto = mid; // repeat search in bottom half. } else if (symbol > SYMBOL_TABLE[mid]) { first = mid + 1; // Repeat search in top half. } else { return mid; // Found it. return position } } return -1; } /* * 2012-06-22 hfn additional verification of outer columns */ bool BitMatrixParser::VerifyOuterColumns(int rownumber) { return IsEqual(aLeftColumnTriple_[0], aRightColumnTriple_[1], rownumber) && IsEqual(aLeftColumnTriple_[1], aRightColumnTriple_[2], rownumber) && IsEqual(aLeftColumnTriple_[2], aRightColumnTriple_[0], rownumber); } /* * Verifies whether two codewords are equal or at least one of the codewords has not * been recognized. */ bool BitMatrixParser::IsEqual(int &a, int &b, int rownumber) { int ret = (a == b) || (a == -1) || (b == -1); if (!ret) { int row3 = rownumber / 3; int row30 = row3 * 30; int row59 = row30 + 29; if (a < row30 || a > row59) { a = -1; } if (b < row30 || b > row59) { b = -1; } } return true; } const int BitMatrixParser::SYMBOL_TABLE[] = { 0x1025e, 0x1027a, 0x1029e, 0x102bc, 0x102f2, 0x102f4, 0x1032e, 0x1034e, 0x1035c, 0x10396, 0x103a6, 0x103ac, 0x10422, 0x10428, 0x10436, 0x10442, 0x10444, 0x10448, 0x10450, 0x1045e, 0x10466, 0x1046c, 0x1047a, 0x10482, 0x1049e, 0x104a0, 0x104bc, 0x104c6, 0x104d8, 0x104ee, 0x104f2, 0x104f4, 0x10504, 0x10508, 0x10510, 0x1051e, 0x10520, 0x1053c, 0x10540, 0x10578, 0x10586, 0x1058c, 0x10598, 0x105b0, 0x105be, 0x105ce, 0x105dc, 0x105e2, 0x105e4, 0x105e8, 0x105f6, 0x1062e, 0x1064e, 0x1065c, 0x1068e, 0x1069c, 0x106b8, 0x106de, 0x106fa, 0x10716, 0x10726, 0x1072c, 0x10746, 0x1074c, 0x10758, 0x1076e, 0x10792, 0x10794, 0x107a2, 0x107a4, 0x107a8, 0x107b6, 0x10822, 0x10828, 0x10842, 0x10848, 0x10850, 0x1085e, 0x10866, 0x1086c, 0x1087a, 0x10882, 0x10884, 0x10890, 0x1089e, 0x108a0, 0x108bc, 0x108c6, 0x108cc, 0x108d8, 0x108ee, 0x108f2, 0x108f4, 0x10902, 0x10908, 0x1091e, 0x10920, 0x1093c, 0x10940, 0x10978, 0x10986, 0x10998, 0x109b0, 0x109be, 0x109ce, 0x109dc, 0x109e2, 0x109e4, 0x109e8, 0x109f6, 0x10a08, 0x10a10, 0x10a1e, 0x10a20, 0x10a3c, 0x10a40, 0x10a78, 0x10af0, 0x10b06, 0x10b0c, 0x10b18, 0x10b30, 0x10b3e, 0x10b60, 0x10b7c, 0x10b8e, 0x10b9c, 0x10bb8, 0x10bc2, 0x10bc4, 0x10bc8, 0x10bd0, 0x10bde, 0x10be6, 0x10bec, 0x10c2e, 0x10c4e, 0x10c5c, 0x10c62, 0x10c64, 0x10c68, 0x10c76, 0x10c8e, 0x10c9c, 0x10cb8, 0x10cc2, 0x10cc4, 0x10cc8, 0x10cd0, 0x10cde, 0x10ce6, 0x10cec, 0x10cfa, 0x10d0e, 0x10d1c, 0x10d38, 0x10d70, 0x10d7e, 0x10d82, 0x10d84, 0x10d88, 0x10d90, 0x10d9e, 0x10da0, 0x10dbc, 0x10dc6, 0x10dcc, 0x10dd8, 0x10dee, 0x10df2, 0x10df4, 0x10e16, 0x10e26, 0x10e2c, 0x10e46, 0x10e58, 0x10e6e, 0x10e86, 0x10e8c, 0x10e98, 0x10eb0, 0x10ebe, 0x10ece, 0x10edc, 0x10f0a, 0x10f12, 0x10f14, 0x10f22, 0x10f28, 0x10f36, 0x10f42, 0x10f44, 0x10f48, 0x10f50, 0x10f5e, 0x10f66, 0x10f6c, 0x10fb2, 0x10fb4, 0x11022, 0x11028, 0x11042, 0x11048, 0x11050, 0x1105e, 0x1107a, 0x11082, 0x11084, 0x11090, 0x1109e, 0x110a0, 0x110bc, 0x110c6, 0x110cc, 0x110d8, 0x110ee, 0x110f2, 0x110f4, 0x11102, 0x1111e, 0x11120, 0x1113c, 0x11140, 0x11178, 0x11186, 0x11198, 0x111b0, 0x111be, 0x111ce, 0x111dc, 0x111e2, 0x111e4, 0x111e8, 0x111f6, 0x11208, 0x1121e, 0x11220, 0x11278, 0x112f0, 0x1130c, 0x11330, 0x1133e, 0x11360, 0x1137c, 0x1138e, 0x1139c, 0x113b8, 0x113c2, 0x113c8, 0x113d0, 0x113de, 0x113e6, 0x113ec, 0x11408, 0x11410, 0x1141e, 0x11420, 0x1143c, 0x11440, 0x11478, 0x114f0, 0x115e0, 0x1160c, 0x11618, 0x11630, 0x1163e, 0x11660, 0x1167c, 0x116c0, 0x116f8, 0x1171c, 0x11738, 0x11770, 0x1177e, 0x11782, 0x11784, 0x11788, 0x11790, 0x1179e, 0x117a0, 0x117bc, 0x117c6, 0x117cc, 0x117d8, 0x117ee, 0x1182e, 0x11834, 0x1184e, 0x1185c, 0x11862, 0x11864, 0x11868, 0x11876, 0x1188e, 0x1189c, 0x118b8, 0x118c2, 0x118c8, 0x118d0, 0x118de, 0x118e6, 0x118ec, 0x118fa, 0x1190e, 0x1191c, 0x11938, 0x11970, 0x1197e, 0x11982, 0x11984, 0x11990, 0x1199e, 0x119a0, 0x119bc, 0x119c6, 0x119cc, 0x119d8, 0x119ee, 0x119f2, 0x119f4, 0x11a0e, 0x11a1c, 0x11a38, 0x11a70, 0x11a7e, 0x11ae0, 0x11afc, 0x11b08, 0x11b10, 0x11b1e, 0x11b20, 0x11b3c, 0x11b40, 0x11b78, 0x11b8c, 0x11b98, 0x11bb0, 0x11bbe, 0x11bce, 0x11bdc, 0x11be2, 0x11be4, 0x11be8, 0x11bf6, 0x11c16, 0x11c26, 0x11c2c, 0x11c46, 0x11c4c, 0x11c58, 0x11c6e, 0x11c86, 0x11c98, 0x11cb0, 0x11cbe, 0x11cce, 0x11cdc, 0x11ce2, 0x11ce4, 0x11ce8, 0x11cf6, 0x11d06, 0x11d0c, 0x11d18, 0x11d30, 0x11d3e, 0x11d60, 0x11d7c, 0x11d8e, 0x11d9c, 0x11db8, 0x11dc4, 0x11dc8, 0x11dd0, 0x11dde, 0x11de6, 0x11dec, 0x11dfa, 0x11e0a, 0x11e12, 0x11e14, 0x11e22, 0x11e24, 0x11e28, 0x11e36, 0x11e42, 0x11e44, 0x11e50, 0x11e5e, 0x11e66, 0x11e6c, 0x11e82, 0x11e84, 0x11e88, 0x11e90, 0x11e9e, 0x11ea0, 0x11ebc, 0x11ec6, 0x11ecc, 0x11ed8, 0x11eee, 0x11f1a, 0x11f2e, 0x11f32, 0x11f34, 0x11f4e, 0x11f5c, 0x11f62, 0x11f64, 0x11f68, 0x11f76, 0x12048, 0x1205e, 0x12082, 0x12084, 0x12090, 0x1209e, 0x120a0, 0x120bc, 0x120d8, 0x120f2, 0x120f4, 0x12108, 0x1211e, 0x12120, 0x1213c, 0x12140, 0x12178, 0x12186, 0x12198, 0x121b0, 0x121be, 0x121e2, 0x121e4, 0x121e8, 0x121f6, 0x12204, 0x12210, 0x1221e, 0x12220, 0x12278, 0x122f0, 0x12306, 0x1230c, 0x12330, 0x1233e, 0x12360, 0x1237c, 0x1238e, 0x1239c, 0x123b8, 0x123c2, 0x123c8, 0x123d0, 0x123e6, 0x123ec, 0x1241e, 0x12420, 0x1243c, 0x124f0, 0x125e0, 0x12618, 0x1263e, 0x12660, 0x1267c, 0x126c0, 0x126f8, 0x12738, 0x12770, 0x1277e, 0x12782, 0x12784, 0x12790, 0x1279e, 0x127a0, 0x127bc, 0x127c6, 0x127cc, 0x127d8, 0x127ee, 0x12820, 0x1283c, 0x12840, 0x12878, 0x128f0, 0x129e0, 0x12bc0, 0x12c18, 0x12c30, 0x12c3e, 0x12c60, 0x12c7c, 0x12cc0, 0x12cf8, 0x12df0, 0x12e1c, 0x12e38, 0x12e70, 0x12e7e, 0x12ee0, 0x12efc, 0x12f04, 0x12f08, 0x12f10, 0x12f20, 0x12f3c, 0x12f40, 0x12f78, 0x12f86, 0x12f8c, 0x12f98, 0x12fb0, 0x12fbe, 0x12fce, 0x12fdc, 0x1302e, 0x1304e, 0x1305c, 0x13062, 0x13068, 0x1308e, 0x1309c, 0x130b8, 0x130c2, 0x130c8, 0x130d0, 0x130de, 0x130ec, 0x130fa, 0x1310e, 0x13138, 0x13170, 0x1317e, 0x13182, 0x13184, 0x13190, 0x1319e, 0x131a0, 0x131bc, 0x131c6, 0x131cc, 0x131d8, 0x131f2, 0x131f4, 0x1320e, 0x1321c, 0x13270, 0x1327e, 0x132e0, 0x132fc, 0x13308, 0x1331e, 0x13320, 0x1333c, 0x13340, 0x13378, 0x13386, 0x13398, 0x133b0, 0x133be, 0x133ce, 0x133dc, 0x133e2, 0x133e4, 0x133e8, 0x133f6, 0x1340e, 0x1341c, 0x13438, 0x13470, 0x1347e, 0x134e0, 0x134fc, 0x135c0, 0x135f8, 0x13608, 0x13610, 0x1361e, 0x13620, 0x1363c, 0x13640, 0x13678, 0x136f0, 0x1370c, 0x13718, 0x13730, 0x1373e, 0x13760, 0x1377c, 0x1379c, 0x137b8, 0x137c2, 0x137c4, 0x137c8, 0x137d0, 0x137de, 0x137e6, 0x137ec, 0x13816, 0x13826, 0x1382c, 0x13846, 0x1384c, 0x13858, 0x1386e, 0x13874, 0x13886, 0x13898, 0x138b0, 0x138be, 0x138ce, 0x138dc, 0x138e2, 0x138e4, 0x138e8, 0x13906, 0x1390c, 0x13930, 0x1393e, 0x13960, 0x1397c, 0x1398e, 0x1399c, 0x139b8, 0x139c8, 0x139d0, 0x139de, 0x139e6, 0x139ec, 0x139fa, 0x13a06, 0x13a0c, 0x13a18, 0x13a30, 0x13a3e, 0x13a60, 0x13a7c, 0x13ac0, 0x13af8, 0x13b0e, 0x13b1c, 0x13b38, 0x13b70, 0x13b7e, 0x13b88, 0x13b90, 0x13b9e, 0x13ba0, 0x13bbc, 0x13bcc, 0x13bd8, 0x13bee, 0x13bf2, 0x13bf4, 0x13c12, 0x13c14, 0x13c22, 0x13c24, 0x13c28, 0x13c36, 0x13c42, 0x13c48, 0x13c50, 0x13c5e, 0x13c66, 0x13c6c, 0x13c82, 0x13c84, 0x13c90, 0x13c9e, 0x13ca0, 0x13cbc, 0x13cc6, 0x13ccc, 0x13cd8, 0x13cee, 0x13d02, 0x13d04, 0x13d08, 0x13d10, 0x13d1e, 0x13d20, 0x13d3c, 0x13d40, 0x13d78, 0x13d86, 0x13d8c, 0x13d98, 0x13db0, 0x13dbe, 0x13dce, 0x13ddc, 0x13de4, 0x13de8, 0x13df6, 0x13e1a, 0x13e2e, 0x13e32, 0x13e34, 0x13e4e, 0x13e5c, 0x13e62, 0x13e64, 0x13e68, 0x13e76, 0x13e8e, 0x13e9c, 0x13eb8, 0x13ec2, 0x13ec4, 0x13ec8, 0x13ed0, 0x13ede, 0x13ee6, 0x13eec, 0x13f26, 0x13f2c, 0x13f3a, 0x13f46, 0x13f4c, 0x13f58, 0x13f6e, 0x13f72, 0x13f74, 0x14082, 0x1409e, 0x140a0, 0x140bc, 0x14104, 0x14108, 0x14110, 0x1411e, 0x14120, 0x1413c, 0x14140, 0x14178, 0x1418c, 0x14198, 0x141b0, 0x141be, 0x141e2, 0x141e4, 0x141e8, 0x14208, 0x14210, 0x1421e, 0x14220, 0x1423c, 0x14240, 0x14278, 0x142f0, 0x14306, 0x1430c, 0x14318, 0x14330, 0x1433e, 0x14360, 0x1437c, 0x1438e, 0x143c2, 0x143c4, 0x143c8, 0x143d0, 0x143e6, 0x143ec, 0x14408, 0x14410, 0x1441e, 0x14420, 0x1443c, 0x14440, 0x14478, 0x144f0, 0x145e0, 0x1460c, 0x14618, 0x14630, 0x1463e, 0x14660, 0x1467c, 0x146c0, 0x146f8, 0x1471c, 0x14738, 0x14770, 0x1477e, 0x14782, 0x14784, 0x14788, 0x14790, 0x147a0, 0x147bc, 0x147c6, 0x147cc, 0x147d8, 0x147ee, 0x14810, 0x14820, 0x1483c, 0x14840, 0x14878, 0x148f0, 0x149e0, 0x14bc0, 0x14c30, 0x14c3e, 0x14c60, 0x14c7c, 0x14cc0, 0x14cf8, 0x14df0, 0x14e38, 0x14e70, 0x14e7e, 0x14ee0, 0x14efc, 0x14f04, 0x14f08, 0x14f10, 0x14f1e, 0x14f20, 0x14f3c, 0x14f40, 0x14f78, 0x14f86, 0x14f8c, 0x14f98, 0x14fb0, 0x14fce, 0x14fdc, 0x15020, 0x15040, 0x15078, 0x150f0, 0x151e0, 0x153c0, 0x15860, 0x1587c, 0x158c0, 0x158f8, 0x159f0, 0x15be0, 0x15c70, 0x15c7e, 0x15ce0, 0x15cfc, 0x15dc0, 0x15df8, 0x15e08, 0x15e10, 0x15e20, 0x15e40, 0x15e78, 0x15ef0, 0x15f0c, 0x15f18, 0x15f30, 0x15f60, 0x15f7c, 0x15f8e, 0x15f9c, 0x15fb8, 0x1604e, 0x1605c, 0x1608e, 0x1609c, 0x160b8, 0x160c2, 0x160c4, 0x160c8, 0x160de, 0x1610e, 0x1611c, 0x16138, 0x16170, 0x1617e, 0x16184, 0x16188, 0x16190, 0x1619e, 0x161a0, 0x161bc, 0x161c6, 0x161cc, 0x161d8, 0x161f2, 0x161f4, 0x1620e, 0x1621c, 0x16238, 0x16270, 0x1627e, 0x162e0, 0x162fc, 0x16304, 0x16308, 0x16310, 0x1631e, 0x16320, 0x1633c, 0x16340, 0x16378, 0x16386, 0x1638c, 0x16398, 0x163b0, 0x163be, 0x163ce, 0x163dc, 0x163e2, 0x163e4, 0x163e8, 0x163f6, 0x1640e, 0x1641c, 0x16438, 0x16470, 0x1647e, 0x164e0, 0x164fc, 0x165c0, 0x165f8, 0x16610, 0x1661e, 0x16620, 0x1663c, 0x16640, 0x16678, 0x166f0, 0x16718, 0x16730, 0x1673e, 0x16760, 0x1677c, 0x1678e, 0x1679c, 0x167b8, 0x167c2, 0x167c4, 0x167c8, 0x167d0, 0x167de, 0x167e6, 0x167ec, 0x1681c, 0x16838, 0x16870, 0x168e0, 0x168fc, 0x169c0, 0x169f8, 0x16bf0, 0x16c10, 0x16c1e, 0x16c20, 0x16c3c, 0x16c40, 0x16c78, 0x16cf0, 0x16de0, 0x16e18, 0x16e30, 0x16e3e, 0x16e60, 0x16e7c, 0x16ec0, 0x16ef8, 0x16f1c, 0x16f38, 0x16f70, 0x16f7e, 0x16f84, 0x16f88, 0x16f90, 0x16f9e, 0x16fa0, 0x16fbc, 0x16fc6, 0x16fcc, 0x16fd8, 0x17026, 0x1702c, 0x17046, 0x1704c, 0x17058, 0x1706e, 0x17086, 0x1708c, 0x17098, 0x170b0, 0x170be, 0x170ce, 0x170dc, 0x170e8, 0x17106, 0x1710c, 0x17118, 0x17130, 0x1713e, 0x17160, 0x1717c, 0x1718e, 0x1719c, 0x171b8, 0x171c2, 0x171c4, 0x171c8, 0x171d0, 0x171de, 0x171e6, 0x171ec, 0x171fa, 0x17206, 0x1720c, 0x17218, 0x17230, 0x1723e, 0x17260, 0x1727c, 0x172c0, 0x172f8, 0x1730e, 0x1731c, 0x17338, 0x17370, 0x1737e, 0x17388, 0x17390, 0x1739e, 0x173a0, 0x173bc, 0x173cc, 0x173d8, 0x173ee, 0x173f2, 0x173f4, 0x1740c, 0x17418, 0x17430, 0x1743e, 0x17460, 0x1747c, 0x174c0, 0x174f8, 0x175f0, 0x1760e, 0x1761c, 0x17638, 0x17670, 0x1767e, 0x176e0, 0x176fc, 0x17708, 0x17710, 0x1771e, 0x17720, 0x1773c, 0x17740, 0x17778, 0x17798, 0x177b0, 0x177be, 0x177dc, 0x177e2, 0x177e4, 0x177e8, 0x17822, 0x17824, 0x17828, 0x17836, 0x17842, 0x17844, 0x17848, 0x17850, 0x1785e, 0x17866, 0x1786c, 0x17882, 0x17884, 0x17888, 0x17890, 0x1789e, 0x178a0, 0x178bc, 0x178c6, 0x178cc, 0x178d8, 0x178ee, 0x178f2, 0x178f4, 0x17902, 0x17904, 0x17908, 0x17910, 0x1791e, 0x17920, 0x1793c, 0x17940, 0x17978, 0x17986, 0x1798c, 0x17998, 0x179b0, 0x179be, 0x179ce, 0x179dc, 0x179e2, 0x179e4, 0x179e8, 0x179f6, 0x17a04, 0x17a08, 0x17a10, 0x17a1e, 0x17a20, 0x17a3c, 0x17a40, 0x17a78, 0x17af0, 0x17b06, 0x17b0c, 0x17b18, 0x17b30, 0x17b3e, 0x17b60, 0x17b7c, 0x17b8e, 0x17b9c, 0x17bb8, 0x17bc4, 0x17bc8, 0x17bd0, 0x17bde, 0x17be6, 0x17bec, 0x17c2e, 0x17c32, 0x17c34, 0x17c4e, 0x17c5c, 0x17c62, 0x17c64, 0x17c68, 0x17c76, 0x17c8e, 0x17c9c, 0x17cb8, 0x17cc2, 0x17cc4, 0x17cc8, 0x17cd0, 0x17cde, 0x17ce6, 0x17cec, 0x17d0e, 0x17d1c, 0x17d38, 0x17d70, 0x17d82, 0x17d84, 0x17d88, 0x17d90, 0x17d9e, 0x17da0, 0x17dbc, 0x17dc6, 0x17dcc, 0x17dd8, 0x17dee, 0x17e26, 0x17e2c, 0x17e3a, 0x17e46, 0x17e4c, 0x17e58, 0x17e6e, 0x17e72, 0x17e74, 0x17e86, 0x17e8c, 0x17e98, 0x17eb0, 0x17ece, 0x17edc, 0x17ee2, 0x17ee4, 0x17ee8, 0x17ef6, 0x1813a, 0x18172, 0x18174, 0x18216, 0x18226, 0x1823a, 0x1824c, 0x18258, 0x1826e, 0x18272, 0x18274, 0x18298, 0x182be, 0x182e2, 0x182e4, 0x182e8, 0x182f6, 0x1835e, 0x1837a, 0x183ae, 0x183d6, 0x18416, 0x18426, 0x1842c, 0x1843a, 0x18446, 0x18458, 0x1846e, 0x18472, 0x18474, 0x18486, 0x184b0, 0x184be, 0x184ce, 0x184dc, 0x184e2, 0x184e4, 0x184e8, 0x184f6, 0x18506, 0x1850c, 0x18518, 0x18530, 0x1853e, 0x18560, 0x1857c, 0x1858e, 0x1859c, 0x185b8, 0x185c2, 0x185c4, 0x185c8, 0x185d0, 0x185de, 0x185e6, 0x185ec, 0x185fa, 0x18612, 0x18614, 0x18622, 0x18628, 0x18636, 0x18642, 0x18650, 0x1865e, 0x1867a, 0x18682, 0x18684, 0x18688, 0x18690, 0x1869e, 0x186a0, 0x186bc, 0x186c6, 0x186cc, 0x186d8, 0x186ee, 0x186f2, 0x186f4, 0x1872e, 0x1874e, 0x1875c, 0x18796, 0x187a6, 0x187ac, 0x187d2, 0x187d4, 0x18826, 0x1882c, 0x1883a, 0x18846, 0x1884c, 0x18858, 0x1886e, 0x18872, 0x18874, 0x18886, 0x18898, 0x188b0, 0x188be, 0x188ce, 0x188dc, 0x188e2, 0x188e4, 0x188e8, 0x188f6, 0x1890c, 0x18930, 0x1893e, 0x18960, 0x1897c, 0x1898e, 0x189b8, 0x189c2, 0x189c8, 0x189d0, 0x189de, 0x189e6, 0x189ec, 0x189fa, 0x18a18, 0x18a30, 0x18a3e, 0x18a60, 0x18a7c, 0x18ac0, 0x18af8, 0x18b1c, 0x18b38, 0x18b70, 0x18b7e, 0x18b82, 0x18b84, 0x18b88, 0x18b90, 0x18b9e, 0x18ba0, 0x18bbc, 0x18bc6, 0x18bcc, 0x18bd8, 0x18bee, 0x18bf2, 0x18bf4, 0x18c22, 0x18c24, 0x18c28, 0x18c36, 0x18c42, 0x18c48, 0x18c50, 0x18c5e, 0x18c66, 0x18c7a, 0x18c82, 0x18c84, 0x18c90, 0x18c9e, 0x18ca0, 0x18cbc, 0x18ccc, 0x18cf2, 0x18cf4, 0x18d04, 0x18d08, 0x18d10, 0x18d1e, 0x18d20, 0x18d3c, 0x18d40, 0x18d78, 0x18d86, 0x18d98, 0x18dce, 0x18de2, 0x18de4, 0x18de8, 0x18e2e, 0x18e32, 0x18e34, 0x18e4e, 0x18e5c, 0x18e62, 0x18e64, 0x18e68, 0x18e8e, 0x18e9c, 0x18eb8, 0x18ec2, 0x18ec4, 0x18ec8, 0x18ed0, 0x18efa, 0x18f16, 0x18f26, 0x18f2c, 0x18f46, 0x18f4c, 0x18f58, 0x18f6e, 0x18f8a, 0x18f92, 0x18f94, 0x18fa2, 0x18fa4, 0x18fa8, 0x18fb6, 0x1902c, 0x1903a, 0x19046, 0x1904c, 0x19058, 0x19072, 0x19074, 0x19086, 0x19098, 0x190b0, 0x190be, 0x190ce, 0x190dc, 0x190e2, 0x190e8, 0x190f6, 0x19106, 0x1910c, 0x19130, 0x1913e, 0x19160, 0x1917c, 0x1918e, 0x1919c, 0x191b8, 0x191c2, 0x191c8, 0x191d0, 0x191de, 0x191e6, 0x191ec, 0x191fa, 0x19218, 0x1923e, 0x19260, 0x1927c, 0x192c0, 0x192f8, 0x19338, 0x19370, 0x1937e, 0x19382, 0x19384, 0x19390, 0x1939e, 0x193a0, 0x193bc, 0x193c6, 0x193cc, 0x193d8, 0x193ee, 0x193f2, 0x193f4, 0x19430, 0x1943e, 0x19460, 0x1947c, 0x194c0, 0x194f8, 0x195f0, 0x19638, 0x19670, 0x1967e, 0x196e0, 0x196fc, 0x19702, 0x19704, 0x19708, 0x19710, 0x19720, 0x1973c, 0x19740, 0x19778, 0x19786, 0x1978c, 0x19798, 0x197b0, 0x197be, 0x197ce, 0x197dc, 0x197e2, 0x197e4, 0x197e8, 0x19822, 0x19824, 0x19842, 0x19848, 0x19850, 0x1985e, 0x19866, 0x1987a, 0x19882, 0x19884, 0x19890, 0x1989e, 0x198a0, 0x198bc, 0x198cc, 0x198f2, 0x198f4, 0x19902, 0x19908, 0x1991e, 0x19920, 0x1993c, 0x19940, 0x19978, 0x19986, 0x19998, 0x199ce, 0x199e2, 0x199e4, 0x199e8, 0x19a08, 0x19a10, 0x19a1e, 0x19a20, 0x19a3c, 0x19a40, 0x19a78, 0x19af0, 0x19b18, 0x19b3e, 0x19b60, 0x19b9c, 0x19bc2, 0x19bc4, 0x19bc8, 0x19bd0, 0x19be6, 0x19c2e, 0x19c34, 0x19c4e, 0x19c5c, 0x19c62, 0x19c64, 0x19c68, 0x19c8e, 0x19c9c, 0x19cb8, 0x19cc2, 0x19cc8, 0x19cd0, 0x19ce6, 0x19cfa, 0x19d0e, 0x19d1c, 0x19d38, 0x19d70, 0x19d7e, 0x19d82, 0x19d84, 0x19d88, 0x19d90, 0x19da0, 0x19dcc, 0x19df2, 0x19df4, 0x19e16, 0x19e26, 0x19e2c, 0x19e46, 0x19e4c, 0x19e58, 0x19e74, 0x19e86, 0x19e8c, 0x19e98, 0x19eb0, 0x19ebe, 0x19ece, 0x19ee2, 0x19ee4, 0x19ee8, 0x19f0a, 0x19f12, 0x19f14, 0x19f22, 0x19f24, 0x19f28, 0x19f42, 0x19f44, 0x19f48, 0x19f50, 0x19f5e, 0x19f6c, 0x19f9a, 0x19fae, 0x19fb2, 0x19fb4, 0x1a046, 0x1a04c, 0x1a072, 0x1a074, 0x1a086, 0x1a08c, 0x1a098, 0x1a0b0, 0x1a0be, 0x1a0e2, 0x1a0e4, 0x1a0e8, 0x1a0f6, 0x1a106, 0x1a10c, 0x1a118, 0x1a130, 0x1a13e, 0x1a160, 0x1a17c, 0x1a18e, 0x1a19c, 0x1a1b8, 0x1a1c2, 0x1a1c4, 0x1a1c8, 0x1a1d0, 0x1a1de, 0x1a1e6, 0x1a1ec, 0x1a218, 0x1a230, 0x1a23e, 0x1a260, 0x1a27c, 0x1a2c0, 0x1a2f8, 0x1a31c, 0x1a338, 0x1a370, 0x1a37e, 0x1a382, 0x1a384, 0x1a388, 0x1a390, 0x1a39e, 0x1a3a0, 0x1a3bc, 0x1a3c6, 0x1a3cc, 0x1a3d8, 0x1a3ee, 0x1a3f2, 0x1a3f4, 0x1a418, 0x1a430, 0x1a43e, 0x1a460, 0x1a47c, 0x1a4c0, 0x1a4f8, 0x1a5f0, 0x1a61c, 0x1a638, 0x1a670, 0x1a67e, 0x1a6e0, 0x1a6fc, 0x1a702, 0x1a704, 0x1a708, 0x1a710, 0x1a71e, 0x1a720, 0x1a73c, 0x1a740, 0x1a778, 0x1a786, 0x1a78c, 0x1a798, 0x1a7b0, 0x1a7be, 0x1a7ce, 0x1a7dc, 0x1a7e2, 0x1a7e4, 0x1a7e8, 0x1a830, 0x1a860, 0x1a87c, 0x1a8c0, 0x1a8f8, 0x1a9f0, 0x1abe0, 0x1ac70, 0x1ac7e, 0x1ace0, 0x1acfc, 0x1adc0, 0x1adf8, 0x1ae04, 0x1ae08, 0x1ae10, 0x1ae20, 0x1ae3c, 0x1ae40, 0x1ae78, 0x1aef0, 0x1af06, 0x1af0c, 0x1af18, 0x1af30, 0x1af3e, 0x1af60, 0x1af7c, 0x1af8e, 0x1af9c, 0x1afb8, 0x1afc4, 0x1afc8, 0x1afd0, 0x1afde, 0x1b042, 0x1b05e, 0x1b07a, 0x1b082, 0x1b084, 0x1b088, 0x1b090, 0x1b09e, 0x1b0a0, 0x1b0bc, 0x1b0cc, 0x1b0f2, 0x1b0f4, 0x1b102, 0x1b104, 0x1b108, 0x1b110, 0x1b11e, 0x1b120, 0x1b13c, 0x1b140, 0x1b178, 0x1b186, 0x1b198, 0x1b1ce, 0x1b1e2, 0x1b1e4, 0x1b1e8, 0x1b204, 0x1b208, 0x1b210, 0x1b21e, 0x1b220, 0x1b23c, 0x1b240, 0x1b278, 0x1b2f0, 0x1b30c, 0x1b33e, 0x1b360, 0x1b39c, 0x1b3c2, 0x1b3c4, 0x1b3c8, 0x1b3d0, 0x1b3e6, 0x1b410, 0x1b41e, 0x1b420, 0x1b43c, 0x1b440, 0x1b478, 0x1b4f0, 0x1b5e0, 0x1b618, 0x1b660, 0x1b67c, 0x1b6c0, 0x1b738, 0x1b782, 0x1b784, 0x1b788, 0x1b790, 0x1b79e, 0x1b7a0, 0x1b7cc, 0x1b82e, 0x1b84e, 0x1b85c, 0x1b88e, 0x1b89c, 0x1b8b8, 0x1b8c2, 0x1b8c4, 0x1b8c8, 0x1b8d0, 0x1b8e6, 0x1b8fa, 0x1b90e, 0x1b91c, 0x1b938, 0x1b970, 0x1b97e, 0x1b982, 0x1b984, 0x1b988, 0x1b990, 0x1b99e, 0x1b9a0, 0x1b9cc, 0x1b9f2, 0x1b9f4, 0x1ba0e, 0x1ba1c, 0x1ba38, 0x1ba70, 0x1ba7e, 0x1bae0, 0x1bafc, 0x1bb08, 0x1bb10, 0x1bb20, 0x1bb3c, 0x1bb40, 0x1bb98, 0x1bbce, 0x1bbe2, 0x1bbe4, 0x1bbe8, 0x1bc16, 0x1bc26, 0x1bc2c, 0x1bc46, 0x1bc4c, 0x1bc58, 0x1bc72, 0x1bc74, 0x1bc86, 0x1bc8c, 0x1bc98, 0x1bcb0, 0x1bcbe, 0x1bcce, 0x1bce2, 0x1bce4, 0x1bce8, 0x1bd06, 0x1bd0c, 0x1bd18, 0x1bd30, 0x1bd3e, 0x1bd60, 0x1bd7c, 0x1bd9c, 0x1bdc2, 0x1bdc4, 0x1bdc8, 0x1bdd0, 0x1bde6, 0x1bdfa, 0x1be12, 0x1be14, 0x1be22, 0x1be24, 0x1be28, 0x1be42, 0x1be44, 0x1be48, 0x1be50, 0x1be5e, 0x1be66, 0x1be82, 0x1be84, 0x1be88, 0x1be90, 0x1be9e, 0x1bea0, 0x1bebc, 0x1becc, 0x1bef4, 0x1bf1a, 0x1bf2e, 0x1bf32, 0x1bf34, 0x1bf4e, 0x1bf5c, 0x1bf62, 0x1bf64, 0x1bf68, 0x1c09a, 0x1c0b2, 0x1c0b4, 0x1c11a, 0x1c132, 0x1c134, 0x1c162, 0x1c164, 0x1c168, 0x1c176, 0x1c1ba, 0x1c21a, 0x1c232, 0x1c234, 0x1c24e, 0x1c25c, 0x1c262, 0x1c264, 0x1c268, 0x1c276, 0x1c28e, 0x1c2c2, 0x1c2c4, 0x1c2c8, 0x1c2d0, 0x1c2de, 0x1c2e6, 0x1c2ec, 0x1c2fa, 0x1c316, 0x1c326, 0x1c33a, 0x1c346, 0x1c34c, 0x1c372, 0x1c374, 0x1c41a, 0x1c42e, 0x1c432, 0x1c434, 0x1c44e, 0x1c45c, 0x1c462, 0x1c464, 0x1c468, 0x1c476, 0x1c48e, 0x1c49c, 0x1c4b8, 0x1c4c2, 0x1c4c8, 0x1c4d0, 0x1c4de, 0x1c4e6, 0x1c4ec, 0x1c4fa, 0x1c51c, 0x1c538, 0x1c570, 0x1c57e, 0x1c582, 0x1c584, 0x1c588, 0x1c590, 0x1c59e, 0x1c5a0, 0x1c5bc, 0x1c5c6, 0x1c5cc, 0x1c5d8, 0x1c5ee, 0x1c5f2, 0x1c5f4, 0x1c616, 0x1c626, 0x1c62c, 0x1c63a, 0x1c646, 0x1c64c, 0x1c658, 0x1c66e, 0x1c672, 0x1c674, 0x1c686, 0x1c68c, 0x1c698, 0x1c6b0, 0x1c6be, 0x1c6ce, 0x1c6dc, 0x1c6e2, 0x1c6e4, 0x1c6e8, 0x1c712, 0x1c714, 0x1c722, 0x1c728, 0x1c736, 0x1c742, 0x1c744, 0x1c748, 0x1c750, 0x1c75e, 0x1c766, 0x1c76c, 0x1c77a, 0x1c7ae, 0x1c7d6, 0x1c7ea, 0x1c81a, 0x1c82e, 0x1c832, 0x1c834, 0x1c84e, 0x1c85c, 0x1c862, 0x1c864, 0x1c868, 0x1c876, 0x1c88e, 0x1c89c, 0x1c8b8, 0x1c8c2, 0x1c8c8, 0x1c8d0, 0x1c8de, 0x1c8e6, 0x1c8ec, 0x1c8fa, 0x1c90e, 0x1c938, 0x1c970, 0x1c97e, 0x1c982, 0x1c984, 0x1c990, 0x1c99e, 0x1c9a0, 0x1c9bc, 0x1c9c6, 0x1c9cc, 0x1c9d8, 0x1c9ee, 0x1c9f2, 0x1c9f4, 0x1ca38, 0x1ca70, 0x1ca7e, 0x1cae0, 0x1cafc, 0x1cb02, 0x1cb04, 0x1cb08, 0x1cb10, 0x1cb20, 0x1cb3c, 0x1cb40, 0x1cb78, 0x1cb86, 0x1cb8c, 0x1cb98, 0x1cbb0, 0x1cbbe, 0x1cbce, 0x1cbdc, 0x1cbe2, 0x1cbe4, 0x1cbe8, 0x1cbf6, 0x1cc16, 0x1cc26, 0x1cc2c, 0x1cc3a, 0x1cc46, 0x1cc58, 0x1cc72, 0x1cc74, 0x1cc86, 0x1ccb0, 0x1ccbe, 0x1ccce, 0x1cce2, 0x1cce4, 0x1cce8, 0x1cd06, 0x1cd0c, 0x1cd18, 0x1cd30, 0x1cd3e, 0x1cd60, 0x1cd7c, 0x1cd9c, 0x1cdc2, 0x1cdc4, 0x1cdc8, 0x1cdd0, 0x1cdde, 0x1cde6, 0x1cdfa, 0x1ce22, 0x1ce28, 0x1ce42, 0x1ce50, 0x1ce5e, 0x1ce66, 0x1ce7a, 0x1ce82, 0x1ce84, 0x1ce88, 0x1ce90, 0x1ce9e, 0x1cea0, 0x1cebc, 0x1cecc, 0x1cef2, 0x1cef4, 0x1cf2e, 0x1cf32, 0x1cf34, 0x1cf4e, 0x1cf5c, 0x1cf62, 0x1cf64, 0x1cf68, 0x1cf96, 0x1cfa6, 0x1cfac, 0x1cfca, 0x1cfd2, 0x1cfd4, 0x1d02e, 0x1d032, 0x1d034, 0x1d04e, 0x1d05c, 0x1d062, 0x1d064, 0x1d068, 0x1d076, 0x1d08e, 0x1d09c, 0x1d0b8, 0x1d0c2, 0x1d0c4, 0x1d0c8, 0x1d0d0, 0x1d0de, 0x1d0e6, 0x1d0ec, 0x1d0fa, 0x1d11c, 0x1d138, 0x1d170, 0x1d17e, 0x1d182, 0x1d184, 0x1d188, 0x1d190, 0x1d19e, 0x1d1a0, 0x1d1bc, 0x1d1c6, 0x1d1cc, 0x1d1d8, 0x1d1ee, 0x1d1f2, 0x1d1f4, 0x1d21c, 0x1d238, 0x1d270, 0x1d27e, 0x1d2e0, 0x1d2fc, 0x1d302, 0x1d304, 0x1d308, 0x1d310, 0x1d31e, 0x1d320, 0x1d33c, 0x1d340, 0x1d378, 0x1d386, 0x1d38c, 0x1d398, 0x1d3b0, 0x1d3be, 0x1d3ce, 0x1d3dc, 0x1d3e2, 0x1d3e4, 0x1d3e8, 0x1d3f6, 0x1d470, 0x1d47e, 0x1d4e0, 0x1d4fc, 0x1d5c0, 0x1d5f8, 0x1d604, 0x1d608, 0x1d610, 0x1d620, 0x1d640, 0x1d678, 0x1d6f0, 0x1d706, 0x1d70c, 0x1d718, 0x1d730, 0x1d73e, 0x1d760, 0x1d77c, 0x1d78e, 0x1d79c, 0x1d7b8, 0x1d7c2, 0x1d7c4, 0x1d7c8, 0x1d7d0, 0x1d7de, 0x1d7e6, 0x1d7ec, 0x1d826, 0x1d82c, 0x1d83a, 0x1d846, 0x1d84c, 0x1d858, 0x1d872, 0x1d874, 0x1d886, 0x1d88c, 0x1d898, 0x1d8b0, 0x1d8be, 0x1d8ce, 0x1d8e2, 0x1d8e4, 0x1d8e8, 0x1d8f6, 0x1d90c, 0x1d918, 0x1d930, 0x1d93e, 0x1d960, 0x1d97c, 0x1d99c, 0x1d9c2, 0x1d9c4, 0x1d9c8, 0x1d9d0, 0x1d9e6, 0x1d9fa, 0x1da0c, 0x1da18, 0x1da30, 0x1da3e, 0x1da60, 0x1da7c, 0x1dac0, 0x1daf8, 0x1db38, 0x1db82, 0x1db84, 0x1db88, 0x1db90, 0x1db9e, 0x1dba0, 0x1dbcc, 0x1dbf2, 0x1dbf4, 0x1dc22, 0x1dc42, 0x1dc44, 0x1dc48, 0x1dc50, 0x1dc5e, 0x1dc66, 0x1dc7a, 0x1dc82, 0x1dc84, 0x1dc88, 0x1dc90, 0x1dc9e, 0x1dca0, 0x1dcbc, 0x1dccc, 0x1dcf2, 0x1dcf4, 0x1dd04, 0x1dd08, 0x1dd10, 0x1dd1e, 0x1dd20, 0x1dd3c, 0x1dd40, 0x1dd78, 0x1dd86, 0x1dd98, 0x1ddce, 0x1dde2, 0x1dde4, 0x1dde8, 0x1de2e, 0x1de32, 0x1de34, 0x1de4e, 0x1de5c, 0x1de62, 0x1de64, 0x1de68, 0x1de8e, 0x1de9c, 0x1deb8, 0x1dec2, 0x1dec4, 0x1dec8, 0x1ded0, 0x1dee6, 0x1defa, 0x1df16, 0x1df26, 0x1df2c, 0x1df46, 0x1df4c, 0x1df58, 0x1df72, 0x1df74, 0x1df8a, 0x1df92, 0x1df94, 0x1dfa2, 0x1dfa4, 0x1dfa8, 0x1e08a, 0x1e092, 0x1e094, 0x1e0a2, 0x1e0a4, 0x1e0a8, 0x1e0b6, 0x1e0da, 0x1e10a, 0x1e112, 0x1e114, 0x1e122, 0x1e124, 0x1e128, 0x1e136, 0x1e142, 0x1e144, 0x1e148, 0x1e150, 0x1e166, 0x1e16c, 0x1e17a, 0x1e19a, 0x1e1b2, 0x1e1b4, 0x1e20a, 0x1e212, 0x1e214, 0x1e222, 0x1e224, 0x1e228, 0x1e236, 0x1e242, 0x1e248, 0x1e250, 0x1e25e, 0x1e266, 0x1e26c, 0x1e27a, 0x1e282, 0x1e284, 0x1e288, 0x1e290, 0x1e2a0, 0x1e2bc, 0x1e2c6, 0x1e2cc, 0x1e2d8, 0x1e2ee, 0x1e2f2, 0x1e2f4, 0x1e31a, 0x1e332, 0x1e334, 0x1e35c, 0x1e362, 0x1e364, 0x1e368, 0x1e3ba, 0x1e40a, 0x1e412, 0x1e414, 0x1e422, 0x1e428, 0x1e436, 0x1e442, 0x1e448, 0x1e450, 0x1e45e, 0x1e466, 0x1e46c, 0x1e47a, 0x1e482, 0x1e484, 0x1e490, 0x1e49e, 0x1e4a0, 0x1e4bc, 0x1e4c6, 0x1e4cc, 0x1e4d8, 0x1e4ee, 0x1e4f2, 0x1e4f4, 0x1e502, 0x1e504, 0x1e508, 0x1e510, 0x1e51e, 0x1e520, 0x1e53c, 0x1e540, 0x1e578, 0x1e586, 0x1e58c, 0x1e598, 0x1e5b0, 0x1e5be, 0x1e5ce, 0x1e5dc, 0x1e5e2, 0x1e5e4, 0x1e5e8, 0x1e5f6, 0x1e61a, 0x1e62e, 0x1e632, 0x1e634, 0x1e64e, 0x1e65c, 0x1e662, 0x1e668, 0x1e68e, 0x1e69c, 0x1e6b8, 0x1e6c2, 0x1e6c4, 0x1e6c8, 0x1e6d0, 0x1e6e6, 0x1e6fa, 0x1e716, 0x1e726, 0x1e72c, 0x1e73a, 0x1e746, 0x1e74c, 0x1e758, 0x1e772, 0x1e774, 0x1e792, 0x1e794, 0x1e7a2, 0x1e7a4, 0x1e7a8, 0x1e7b6, 0x1e812, 0x1e814, 0x1e822, 0x1e824, 0x1e828, 0x1e836, 0x1e842, 0x1e844, 0x1e848, 0x1e850, 0x1e85e, 0x1e866, 0x1e86c, 0x1e87a, 0x1e882, 0x1e884, 0x1e888, 0x1e890, 0x1e89e, 0x1e8a0, 0x1e8bc, 0x1e8c6, 0x1e8cc, 0x1e8d8, 0x1e8ee, 0x1e8f2, 0x1e8f4, 0x1e902, 0x1e904, 0x1e908, 0x1e910, 0x1e920, 0x1e93c, 0x1e940, 0x1e978, 0x1e986, 0x1e98c, 0x1e998, 0x1e9b0, 0x1e9be, 0x1e9ce, 0x1e9dc, 0x1e9e2, 0x1e9e4, 0x1e9e8, 0x1e9f6, 0x1ea04, 0x1ea08, 0x1ea10, 0x1ea20, 0x1ea40, 0x1ea78, 0x1eaf0, 0x1eb06, 0x1eb0c, 0x1eb18, 0x1eb30, 0x1eb3e, 0x1eb60, 0x1eb7c, 0x1eb8e, 0x1eb9c, 0x1ebb8, 0x1ebc2, 0x1ebc4, 0x1ebc8, 0x1ebd0, 0x1ebde, 0x1ebe6, 0x1ebec, 0x1ec1a, 0x1ec2e, 0x1ec32, 0x1ec34, 0x1ec4e, 0x1ec5c, 0x1ec62, 0x1ec64, 0x1ec68, 0x1ec8e, 0x1ec9c, 0x1ecb8, 0x1ecc2, 0x1ecc4, 0x1ecc8, 0x1ecd0, 0x1ece6, 0x1ecfa, 0x1ed0e, 0x1ed1c, 0x1ed38, 0x1ed70, 0x1ed7e, 0x1ed82, 0x1ed84, 0x1ed88, 0x1ed90, 0x1ed9e, 0x1eda0, 0x1edcc, 0x1edf2, 0x1edf4, 0x1ee16, 0x1ee26, 0x1ee2c, 0x1ee3a, 0x1ee46, 0x1ee4c, 0x1ee58, 0x1ee6e, 0x1ee72, 0x1ee74, 0x1ee86, 0x1ee8c, 0x1ee98, 0x1eeb0, 0x1eebe, 0x1eece, 0x1eedc, 0x1eee2, 0x1eee4, 0x1eee8, 0x1ef12, 0x1ef22, 0x1ef24, 0x1ef28, 0x1ef36, 0x1ef42, 0x1ef44, 0x1ef48, 0x1ef50, 0x1ef5e, 0x1ef66, 0x1ef6c, 0x1ef7a, 0x1efae, 0x1efb2, 0x1efb4, 0x1efd6, 0x1f096, 0x1f0a6, 0x1f0ac, 0x1f0ba, 0x1f0ca, 0x1f0d2, 0x1f0d4, 0x1f116, 0x1f126, 0x1f12c, 0x1f13a, 0x1f146, 0x1f14c, 0x1f158, 0x1f16e, 0x1f172, 0x1f174, 0x1f18a, 0x1f192, 0x1f194, 0x1f1a2, 0x1f1a4, 0x1f1a8, 0x1f1da, 0x1f216, 0x1f226, 0x1f22c, 0x1f23a, 0x1f246, 0x1f258, 0x1f26e, 0x1f272, 0x1f274, 0x1f286, 0x1f28c, 0x1f298, 0x1f2b0, 0x1f2be, 0x1f2ce, 0x1f2dc, 0x1f2e2, 0x1f2e4, 0x1f2e8, 0x1f2f6, 0x1f30a, 0x1f312, 0x1f314, 0x1f322, 0x1f328, 0x1f342, 0x1f344, 0x1f348, 0x1f350, 0x1f35e, 0x1f366, 0x1f37a, 0x1f39a, 0x1f3ae, 0x1f3b2, 0x1f3b4, 0x1f416, 0x1f426, 0x1f42c, 0x1f43a, 0x1f446, 0x1f44c, 0x1f458, 0x1f46e, 0x1f472, 0x1f474, 0x1f486, 0x1f48c, 0x1f498, 0x1f4b0, 0x1f4be, 0x1f4ce, 0x1f4dc, 0x1f4e2, 0x1f4e4, 0x1f4e8, 0x1f4f6, 0x1f506, 0x1f50c, 0x1f518, 0x1f530, 0x1f53e, 0x1f560, 0x1f57c, 0x1f58e, 0x1f59c, 0x1f5b8, 0x1f5c2, 0x1f5c4, 0x1f5c8, 0x1f5d0, 0x1f5de, 0x1f5e6, 0x1f5ec, 0x1f5fa, 0x1f60a, 0x1f612, 0x1f614, 0x1f622, 0x1f624, 0x1f628, 0x1f636, 0x1f642, 0x1f644, 0x1f648, 0x1f650, 0x1f65e, 0x1f666, 0x1f67a, 0x1f682, 0x1f684, 0x1f688, 0x1f690, 0x1f69e, 0x1f6a0, 0x1f6bc, 0x1f6cc, 0x1f6f2, 0x1f6f4, 0x1f71a, 0x1f72e, 0x1f732, 0x1f734, 0x1f74e, 0x1f75c, 0x1f762, 0x1f764, 0x1f768, 0x1f776, 0x1f796, 0x1f7a6, 0x1f7ac, 0x1f7ba, 0x1f7d2, 0x1f7d4, 0x1f89a, 0x1f8ae, 0x1f8b2, 0x1f8b4, 0x1f8d6, 0x1f8ea, 0x1f91a, 0x1f92e, 0x1f932, 0x1f934, 0x1f94e, 0x1f95c, 0x1f962, 0x1f964, 0x1f968, 0x1f976, 0x1f996, 0x1f9a6, 0x1f9ac, 0x1f9ba, 0x1f9ca, 0x1f9d2, 0x1f9d4, 0x1fa1a, 0x1fa2e, 0x1fa32, 0x1fa34, 0x1fa4e, 0x1fa5c, 0x1fa62, 0x1fa64, 0x1fa68, 0x1fa76, 0x1fa8e, 0x1fa9c, 0x1fab8, 0x1fac2, 0x1fac4, 0x1fac8, 0x1fad0, 0x1fade, 0x1fae6, 0x1faec, 0x1fb16, 0x1fb26, 0x1fb2c, 0x1fb3a, 0x1fb46, 0x1fb4c, 0x1fb58, 0x1fb6e, 0x1fb72, 0x1fb74, 0x1fb8a, 0x1fb92, 0x1fb94, 0x1fba2, 0x1fba4, 0x1fba8, 0x1fbb6, 0x1fbda }; const int BitMatrixParser::CODEWORD_TABLE[] = { 2627, 1819, 2622, 2621, 1813, 1812, 2729, 2724, 2723, 2779, 2774, 2773, 902, 896, 908, 868, 865, 861, 859, 2511, 873, 871, 1780, 835, 2493, 825, 2491, 842, 837, 844, 1764, 1762, 811, 810, 809, 2483, 807, 2482, 806, 2480, 815, 814, 813, 812, 2484, 817, 816, 1745, 1744, 1742, 1746, 2655, 2637, 2635, 2626, 2625, 2623, 2628, 1820, 2752, 2739, 2737, 2728, 2727, 2725, 2730, 2785, 2783, 2778, 2777, 2775, 2780, 787, 781, 747, 739, 736, 2413, 754, 752, 1719, 692, 689, 681, 2371, 678, 2369, 700, 697, 694, 703, 1688, 1686, 642, 638, 2343, 631, 2341, 627, 2338, 651, 646, 643, 2345, 654, 652, 1652, 1650, 1647, 1654, 601, 599, 2322, 596, 2321, 594, 2319, 2317, 611, 610, 608, 606, 2324, 603, 2323, 615, 614, 612, 1617, 1616, 1614, 1612, 616, 1619, 1618, 2575, 2538, 2536, 905, 901, 898, 909, 2509, 2507, 2504, 870, 867, 864, 860, 2512, 875, 872, 1781, 2490, 2489, 2487, 2485, 1748, 836, 834, 832, 830, 2494, 827, 2492, 843, 841, 839, 845, 1765, 1763, 2701, 2676, 2674, 2653, 2648, 2656, 2634, 2633, 2631, 2629, 1821, 2638, 2636, 2770, 2763, 2761, 2750, 2745, 2753, 2736, 2735, 2733, 2731, 1848, 2740, 2738, 2786, 2784, 591, 588, 576, 569, 566, 2296, 1590, 537, 534, 526, 2276, 522, 2274, 545, 542, 539, 548, 1572, 1570, 481, 2245, 466, 2242, 462, 2239, 492, 485, 482, 2249, 496, 494, 1534, 1531, 1528, 1538, 413, 2196, 406, 2191, 2188, 425, 419, 2202, 415, 2199, 432, 430, 427, 1472, 1467, 1464, 433, 1476, 1474, 368, 367, 2160, 365, 2159, 362, 2157, 2155, 2152, 378, 377, 375, 2166, 372, 2165, 369, 2162, 383, 381, 379, 2168, 1419, 1418, 1416, 1414, 385, 1411, 384, 1423, 1422, 1420, 1424, 2461, 802, 2441, 2439, 790, 786, 783, 794, 2409, 2406, 2403, 750, 742, 738, 2414, 756, 753, 1720, 2367, 2365, 2362, 2359, 1663, 693, 691, 684, 2373, 680, 2370, 702, 699, 696, 704, 1690, 1687, 2337, 2336, 2334, 2332, 1624, 2329, 1622, 640, 637, 2344, 634, 2342, 630, 2340, 650, 648, 645, 2346, 655, 653, 1653, 1651, 1649, 1655, 2612, 2597, 2595, 2571, 2568, 2565, 2576, 2534, 2529, 2526, 1787, 2540, 2537, 907, 904, 900, 910, 2503, 2502, 2500, 2498, 1768, 2495, 1767, 2510, 2508, 2506, 869, 866, 863, 2513, 876, 874, 1782, 2720, 2713, 2711, 2697, 2694, 2691, 2702, 2672, 2670, 2664, 1828, 2678, 2675, 2647, 2646, 2644, 2642, 1823, 2639, 1822, 2654, 2652, 2650, 2657, 2771, 1855, 2765, 2762, 1850, 1849, 2751, 2749, 2747, 2754, 353, 2148, 344, 342, 336, 2142, 332, 2140, 345, 1375, 1373, 306, 2130, 299, 2128, 295, 2125, 319, 314, 311, 2132, 1354, 1352, 1349, 1356, 262, 257, 2101, 253, 2096, 2093, 274, 273, 267, 2107, 263, 2104, 280, 278, 275, 1316, 1311, 1308, 1320, 1318, 2052, 202, 2050, 2044, 2040, 219, 2063, 212, 2060, 208, 2055, 224, 221, 2066, 1260, 1258, 1252, 231, 1248, 229, 1266, 1264, 1261, 1268, 155, 1998, 153, 1996, 1994, 1991, 1988, 165, 164, 2007, 162, 2006, 159, 2003, 2000, 172, 171, 169, 2012, 166, 2010, 1186, 1184, 1182, 1179, 175, 1176, 173, 1192, 1191, 1189, 1187, 176, 1194, 1193, 2313, 2307, 2305, 592, 589, 2294, 2292, 2289, 578, 572, 568, 2297, 580, 1591, 2272, 2267, 2264, 1547, 538, 536, 529, 2278, 525, 2275, 547, 544, 541, 1574, 1571, 2237, 2235, 2229, 1493, 2225, 1489, 478, 2247, 470, 2244, 465, 2241, 493, 488, 484, 2250, 498, 495, 1536, 1533, 1530, 1539, 2187, 2186, 2184, 2182, 1432, 2179, 1430, 2176, 1427, 414, 412, 2197, 409, 2195, 405, 2193, 2190, 426, 424, 421, 2203, 418, 2201, 431, 429, 1473, 1471, 1469, 1466, 434, 1477, 1475, 2478, 2472, 2470, 2459, 2457, 2454, 2462, 803, 2437, 2432, 2429, 1726, 2443, 2440, 792, 789, 785, 2401, 2399, 2393, 1702, 2389, 1699, 2411, 2408, 2405, 745, 741, 2415, 758, 755, 1721, 2358, 2357, 2355, 2353, 1661, 2350, 1660, 2347, 1657, 2368, 2366, 2364, 2361, 1666, 690, 687, 2374, 683, 2372, 701, 698, 705, 1691, 1689, 2619, 2617, 2610, 2608, 2605, 2613, 2593, 2588, 2585, 1803, 2599, 2596, 2563, 2561, 2555, 1797, 2551, 1795, 2573, 2570, 2567, 2577, 2525, 2524, 2522, 2520, 1786, 2517, 1785, 2514, 1783, 2535, 2533, 2531, 2528, 1788, 2541, 2539, 906, 903, 911, 2721, 1844, 2715, 2712, 1838, 1836, 2699, 2696, 2693, 2703, 1827, 1826, 1824, 2673, 2671, 2669, 2666, 1829, 2679, 2677, 1858, 1857, 2772, 1854, 1853, 1851, 1856, 2766, 2764, 143, 1987, 139, 1986, 135, 133, 131, 1984, 128, 1983, 125, 1981, 138, 137, 136, 1985, 1133, 1132, 1130, 112, 110, 1974, 107, 1973, 104, 1971, 1969, 122, 121, 119, 117, 1977, 114, 1976, 124, 1115, 1114, 1112, 1110, 1117, 1116, 84, 83, 1953, 81, 1952, 78, 1950, 1948, 1945, 94, 93, 91, 1959, 88, 1958, 85, 1955, 99, 97, 95, 1961, 1086, 1085, 1083, 1081, 1078, 100, 1090, 1089, 1087, 1091, 49, 47, 1917, 44, 1915, 1913, 1910, 1907, 59, 1926, 56, 1925, 53, 1922, 1919, 66, 64, 1931, 61, 1929, 1042, 1040, 1038, 71, 1035, 70, 1032, 68, 1048, 1047, 1045, 1043, 1050, 1049, 12, 10, 1869, 1867, 1864, 1861, 21, 1880, 19, 1877, 1874, 1871, 28, 1888, 25, 1886, 22, 1883, 982, 980, 977, 974, 32, 30, 991, 989, 987, 984, 34, 995, 994, 992, 2151, 2150, 2147, 2146, 2144, 356, 355, 354, 2149, 2139, 2138, 2136, 2134, 1359, 343, 341, 338, 2143, 335, 2141, 348, 347, 346, 1376, 1374, 2124, 2123, 2121, 2119, 1326, 2116, 1324, 310, 308, 305, 2131, 302, 2129, 298, 2127, 320, 318, 316, 313, 2133, 322, 321, 1355, 1353, 1351, 1357, 2092, 2091, 2089, 2087, 1276, 2084, 1274, 2081, 1271, 259, 2102, 256, 2100, 252, 2098, 2095, 272, 269, 2108, 266, 2106, 281, 279, 277, 1317, 1315, 1313, 1310, 282, 1321, 1319, 2039, 2037, 2035, 2032, 1203, 2029, 1200, 1197, 207, 2053, 205, 2051, 201, 2049, 2046, 2043, 220, 218, 2064, 215, 2062, 211, 2059, 228, 226, 223, 2069, 1259, 1257, 1254, 232, 1251, 230, 1267, 1265, 1263, 2316, 2315, 2312, 2311, 2309, 2314, 2304, 2303, 2301, 2299, 1593, 2308, 2306, 590, 2288, 2287, 2285, 2283, 1578, 2280, 1577, 2295, 2293, 2291, 579, 577, 574, 571, 2298, 582, 581, 1592, 2263, 2262, 2260, 2258, 1545, 2255, 1544, 2252, 1541, 2273, 2271, 2269, 2266, 1550, 535, 532, 2279, 528, 2277, 546, 543, 549, 1575, 1573, 2224, 2222, 2220, 1486, 2217, 1485, 2214, 1482, 1479, 2238, 2236, 2234, 2231, 1496, 2228, 1492, 480, 477, 2248, 473, 2246, 469, 2243, 490, 487, 2251, 497, 1537, 1535, 1532, 2477, 2476, 2474, 2479, 2469, 2468, 2466, 2464, 1730, 2473, 2471, 2453, 2452, 2450, 2448, 1729, 2445, 1728, 2460, 2458, 2456, 2463, 805, 804, 2428, 2427, 2425, 2423, 1725, 2420, 1724, 2417, 1722, 2438, 2436, 2434, 2431, 1727, 2444, 2442, 793, 791, 788, 795, 2388, 2386, 2384, 1697, 2381, 1696, 2378, 1694, 1692, 2402, 2400, 2398, 2395, 1703, 2392, 1701, 2412, 2410, 2407, 751, 748, 744, 2416, 759, 757, 1807, 2620, 2618, 1806, 1805, 2611, 2609, 2607, 2614, 1802, 1801, 1799, 2594, 2592, 2590, 2587, 1804, 2600, 2598, 1794, 1793, 1791, 1789, 2564, 2562, 2560, 2557, 1798, 2554, 1796, 2574, 2572, 2569, 2578, 1847, 1846, 2722, 1843, 1842, 1840, 1845, 2716, 2714, 1835, 1834, 1832, 1830, 1839, 1837, 2700, 2698, 2695, 2704, 1817, 1811, 1810, 897, 862, 1777, 829, 826, 838, 1760, 1758, 808, 2481, 1741, 1740, 1738, 1743, 2624, 1818, 2726, 2776, 782, 740, 737, 1715, 686, 679, 695, 1682, 1680, 639, 628, 2339, 647, 644, 1645, 1643, 1640, 1648, 602, 600, 597, 595, 2320, 593, 2318, 609, 607, 604, 1611, 1610, 1608, 1606, 613, 1615, 1613, 2328, 926, 924, 892, 886, 899, 857, 850, 2505, 1778, 824, 823, 821, 819, 2488, 818, 2486, 833, 831, 828, 840, 1761, 1759, 2649, 2632, 2630, 2746, 2734, 2732, 2782, 2781, 570, 567, 1587, 531, 527, 523, 540, 1566, 1564, 476, 467, 463, 2240, 486, 483, 1524, 1521, 1518, 1529, 411, 403, 2192, 399, 2189, 423, 416, 1462, 1457, 1454, 428, 1468, 1465, 2210, 366, 363, 2158, 360, 2156, 357, 2153, 376, 373, 370, 2163, 1410, 1409, 1407, 1405, 382, 1402, 380, 1417, 1415, 1412, 1421, 2175, 2174, 777, 774, 771, 784, 732, 725, 722, 2404, 743, 1716, 676, 674, 668, 2363, 665, 2360, 685, 1684, 1681, 626, 624, 622, 2335, 620, 2333, 617, 2330, 641, 635, 649, 1646, 1644, 1642, 2566, 928, 925, 2530, 2527, 894, 891, 888, 2501, 2499, 2496, 858, 856, 854, 851, 1779, 2692, 2668, 2665, 2645, 2643, 2640, 2651, 2768, 2759, 2757, 2744, 2743, 2741, 2748, 352, 1382, 340, 337, 333, 1371, 1369, 307, 300, 296, 2126, 315, 312, 1347, 1342, 1350, 261, 258, 250, 2097, 246, 2094, 271, 268, 264, 1306, 1301, 1298, 276, 1312, 1309, 2115, 203, 2048, 195, 2045, 191, 2041, 213, 209, 2056, 1246, 1244, 1238, 225, 1234, 222, 1256, 1253, 1249, 1262, 2080, 2079, 154, 1997, 150, 1995, 147, 1992, 1989, 163, 160, 2004, 156, 2001, 1175, 1174, 1172, 1170, 1167, 170, 1164, 167, 1185, 1183, 1180, 1177, 174, 1190, 1188, 2025, 2024, 2022, 587, 586, 564, 559, 556, 2290, 573, 1588, 520, 518, 512, 2268, 508, 2265, 530, 1568, 1565, 461, 457, 2233, 450, 2230, 446, 2226, 479, 471, 489, 1526, 1523, 1520, 397, 395, 2185, 392, 2183, 389, 2180, 2177, 410, 2194, 402, 422, 1463, 1461, 1459, 1456, 1470, 2455, 799, 2433, 2430, 779, 776, 773, 2397, 2394, 2390, 734, 728, 724, 746, 1717, 2356, 2354, 2351, 2348, 1658, 677, 675, 673, 670, 667, 688, 1685, 1683, 2606, 2589, 2586, 2559, 2556, 2552, 927, 2523, 2521, 2518, 2515, 1784, 2532, 895, 893, 890, 2718, 2709, 2707, 2689, 2687, 2684, 2663, 2662, 2660, 2658, 1825, 2667, 2769, 1852, 2760, 2758, 142, 141, 1139, 1138, 134, 132, 129, 126, 1982, 1129, 1128, 1126, 1131, 113, 111, 108, 105, 1972, 101, 1970, 120, 118, 115, 1109, 1108, 1106, 1104, 123, 1113, 1111, 82, 79, 1951, 75, 1949, 72, 1946, 92, 89, 86, 1956, 1077, 1076, 1074, 1072, 98, 1069, 96, 1084, 1082, 1079, 1088, 1968, 1967, 48, 45, 1916, 42, 1914, 39, 1911, 1908, 60, 57, 54, 1923, 50, 1920, 1031, 1030, 1028, 1026, 67, 1023, 65, 1020, 62, 1041, 1039, 1036, 1033, 69, 1046, 1044, 1944, 1943, 1941, 11, 9, 1868, 7, 1865, 1862, 1859, 20, 1878, 16, 1875, 13, 1872, 970, 968, 966, 963, 29, 960, 26, 23, 983, 981, 978, 975, 33, 971, 31, 990, 988, 985, 1906, 1904, 1902, 993, 351, 2145, 1383, 331, 330, 328, 326, 2137, 323, 2135, 339, 1372, 1370, 294, 293, 291, 289, 2122, 286, 2120, 283, 2117, 309, 303, 317, 1348, 1346, 1344, 245, 244, 242, 2090, 239, 2088, 236, 2085, 2082, 260, 2099, 249, 270, 1307, 1305, 1303, 1300, 1314, 189, 2038, 186, 2036, 183, 2033, 2030, 2026, 206, 198, 2047, 194, 216, 1247, 1245, 1243, 1240, 227, 1237, 1255, 2310, 2302, 2300, 2286, 2284, 2281, 565, 563, 561, 558, 575, 1589, 2261, 2259, 2256, 2253, 1542, 521, 519, 517, 514, 2270, 511, 533, 1569, 1567, 2223, 2221, 2218, 2215, 1483, 2211, 1480, 459, 456, 453, 2232, 449, 474, 491, 1527, 1525, 1522, 2475, 2467, 2465, 2451, 2449, 2446, 801, 800, 2426, 2424, 2421, 2418, 1723, 2435, 780, 778, 775, 2387, 2385, 2382, 2379, 1695, 2375, 1693, 2396, 735, 733, 730, 727, 749, 1718, 2616, 2615, 2604, 2603, 2601, 2584, 2583, 2581, 2579, 1800, 2591, 2550, 2549, 2547, 2545, 1792, 2542, 1790, 2558, 929, 2719, 1841, 2710, 2708, 1833, 1831, 2690, 2688, 2686, 1815, 1809, 1808, 1774, 1756, 1754, 1737, 1736, 1734, 1739, 1816, 1711, 1676, 1674, 633, 629, 1638, 1636, 1633, 1641, 598, 1605, 1604, 1602, 1600, 605, 1609, 1607, 2327, 887, 853, 1775, 822, 820, 1757, 1755, 1584, 524, 1560, 1558, 468, 464, 1514, 1511, 1508, 1519, 408, 404, 400, 1452, 1447, 1444, 417, 1458, 1455, 2208, 364, 361, 358, 2154, 1401, 1400, 1398, 1396, 374, 1393, 371, 1408, 1406, 1403, 1413, 2173, 2172, 772, 726, 723, 1712, 672, 669, 666, 682, 1678, 1675, 625, 623, 621, 618, 2331, 636, 632, 1639, 1637, 1635, 920, 918, 884, 880, 889, 849, 848, 847, 846, 2497, 855, 852, 1776, 2641, 2742, 2787, 1380, 334, 1367, 1365, 301, 297, 1340, 1338, 1335, 1343, 255, 251, 247, 1296, 1291, 1288, 265, 1302, 1299, 2113, 204, 196, 192, 2042, 1232, 1230, 1224, 214, 1220, 210, 1242, 1239, 1235, 1250, 2077, 2075, 151, 148, 1993, 144, 1990, 1163, 1162, 1160, 1158, 1155, 161, 1152, 157, 1173, 1171, 1168, 1165, 168, 1181, 1178, 2021, 2020, 2018, 2023, 585, 560, 557, 1585, 516, 509, 1562, 1559, 458, 447, 2227, 472, 1516, 1513, 1510, 398, 396, 393, 390, 2181, 386, 2178, 407, 1453, 1451, 1449, 1446, 420, 1460, 2209, 769, 764, 720, 712, 2391, 729, 1713, 664, 663, 661, 659, 2352, 656, 2349, 671, 1679, 1677, 2553, 922, 919, 2519, 2516, 885, 883, 881, 2685, 2661, 2659, 2767, 2756, 2755, 140, 1137, 1136, 130, 127, 1125, 1124, 1122, 1127, 109, 106, 102, 1103, 1102, 1100, 1098, 116, 1107, 1105, 1980, 80, 76, 73, 1947, 1068, 1067, 1065, 1063, 90, 1060, 87, 1075, 1073, 1070, 1080, 1966, 1965, 46, 43, 40, 1912, 36, 1909, 1019, 1018, 1016, 1014, 58, 1011, 55, 1008, 51, 1029, 1027, 1024, 1021, 63, 1037, 1034, 1940, 1939, 1937, 1942, 8, 1866, 4, 1863, 1, 1860, 956, 954, 952, 949, 946, 17, 14, 969, 967, 964, 961, 27, 957, 24, 979, 976, 972, 1901, 1900, 1898, 1896, 986, 1905, 1903, 350, 349, 1381, 329, 327, 324, 1368, 1366, 292, 290, 287, 284, 2118, 304, 1341, 1339, 1337, 1345, 243, 240, 237, 2086, 233, 2083, 254, 1297, 1295, 1293, 1290, 1304, 2114, 190, 187, 184, 2034, 180, 2031, 177, 2027, 199, 1233, 1231, 1229, 1226, 217, 1223, 1241, 2078, 2076, 584, 555, 554, 552, 550, 2282, 562, 1586, 507, 506, 504, 502, 2257, 499, 2254, 515, 1563, 1561, 445, 443, 441, 2219, 438, 2216, 435, 2212, 460, 454, 475, 1517, 1515, 1512, 2447, 798, 797, 2422, 2419, 770, 768, 766, 2383, 2380, 2376, 721, 719, 717, 714, 731, 1714, 2602, 2582, 2580, 2548, 2546, 2543, 923, 921, 2717, 2706, 2705, 2683, 2682, 2680, 1771, 1752, 1750, 1733, 1732, 1731, 1735, 1814, 1707, 1670, 1668, 1631, 1629, 1626, 1634, 1599, 1598, 1596, 1594, 1603, 1601, 2326, 1772, 1753, 1751, 1581, 1554, 1552, 1504, 1501, 1498, 1509, 1442, 1437, 1434, 401, 1448, 1445, 2206, 1392, 1391, 1389, 1387, 1384, 359, 1399, 1397, 1394, 1404, 2171, 2170, 1708, 1672, 1669, 619, 1632, 1630, 1628, 1773, 1378, 1363, 1361, 1333, 1328, 1336, 1286, 1281, 1278, 248, 1292, 1289, 2111, 1218, 1216, 1210, 197, 1206, 193, 1228, 1225, 1221, 1236, 2073, 2071, 1151, 1150, 1148, 1146, 152, 1143, 149, 1140, 145, 1161, 1159, 1156, 1153, 158, 1169, 1166, 2017, 2016, 2014, 2019, 1582, 510, 1556, 1553, 452, 448, 1506, 1500, 394, 391, 387, 1443, 1441, 1439, 1436, 1450, 2207, 765, 716, 713, 1709, 662, 660, 657, 1673, 1671, 916, 914, 879, 878, 877, 882, 1135, 1134, 1121, 1120, 1118, 1123, 1097, 1096, 1094, 1092, 103, 1101, 1099, 1979, 1059, 1058, 1056, 1054, 77, 1051, 74, 1066, 1064, 1061, 1071, 1964, 1963, 1007, 1006, 1004, 1002, 999, 41, 996, 37, 1017, 1015, 1012, 1009, 52, 1025, 1022, 1936, 1935, 1933, 1938, 942, 940, 938, 935, 932, 5, 2, 955, 953, 950, 947, 18, 943, 15, 965, 962, 958, 1895, 1894, 1892, 1890, 973, 1899, 1897, 1379, 325, 1364, 1362, 288, 285, 1334, 1332, 1330, 241, 238, 234, 1287, 1285, 1283, 1280, 1294, 2112, 188, 185, 181, 178, 2028, 1219, 1217, 1215, 1212, 200, 1209, 1227, 2074, 2072, 583, 553, 551, 1583, 505, 503, 500, 513, 1557, 1555, 444, 442, 439, 436, 2213, 455, 451, 1507, 1505, 1502, 796, 763, 762, 760, 767, 711, 710, 708, 706, 2377, 718, 715, 1710, 2544, 917, 915, 2681, 1627, 1597, 1595, 2325, 1769, 1749, 1747, 1499, 1438, 1435, 2204, 1390, 1388, 1385, 1395, 2169, 2167, 1704, 1665, 1662, 1625, 1623, 1620, 1770, 1329, 1282, 1279, 2109, 1214, 1207, 1222, 2068, 2065, 1149, 1147, 1144, 1141, 146, 1157, 1154, 2013, 2011, 2008, 2015, 1579, 1549, 1546, 1495, 1487, 1433, 1431, 1428, 1425, 388, 1440, 2205, 1705, 658, 1667, 1664, 1119, 1095, 1093, 1978, 1057, 1055, 1052, 1062, 1962, 1960, 1005, 1003, 1000, 997, 38, 1013, 1010, 1932, 1930, 1927, 1934, 941, 939, 936, 933, 6, 930, 3, 951, 948, 944, 1889, 1887, 1884, 1881, 959, 1893, 1891, 35, 1377, 1360, 1358, 1327, 1325, 1322, 1331, 1277, 1275, 1272, 1269, 235, 1284, 2110, 1205, 1204, 1201, 1198, 182, 1195, 179, 1213, 2070, 2067, 1580, 501, 1551, 1548, 440, 437, 1497, 1494, 1490, 1503, 761, 709, 707, 1706, 913, 912, 2198, 1386, 2164, 2161, 1621, 1766, 2103, 1208, 2058, 2054, 1145, 1142, 2005, 2002, 1999, 2009, 1488, 1429, 1426, 2200, 1698, 1659, 1656, 1975, 1053, 1957, 1954, 1001, 998, 1924, 1921, 1918, 1928, 937, 934, 931, 1879, 1876, 1873, 1870, 945, 1885, 1882, 1323, 1273, 1270, 2105, 1202, 1199, 1196, 1211, 2061, 2057, 1576, 1543, 1540, 1484, 1481, 1478, 1491, 1700 }; const int BitMatrixParser::SYMBOL_TABLE_LENGTH = sizeof(BitMatrixParser::SYMBOL_TABLE) / sizeof(int); yubioath-desktop/QZXing/zxing/zxing/pdf417/decoder/PDF417DecodedBitStreamParser.cpp000066400000000000000000000500021412677075700302670ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- /* * Copyright 2010, 2012 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include #include #include using std::string; using zxing::pdf417::DecodedBitStreamParser; using zxing::ArrayRef; using zxing::Ref; using zxing::DecoderResult; using zxing::String; namespace zxing { namespace pdf417 { const int DecodedBitStreamParser::TEXT_COMPACTION_MODE_LATCH = 900; const int DecodedBitStreamParser::BYTE_COMPACTION_MODE_LATCH = 901; const int DecodedBitStreamParser::NUMERIC_COMPACTION_MODE_LATCH = 902; const int DecodedBitStreamParser::BYTE_COMPACTION_MODE_LATCH_6 = 924; const int DecodedBitStreamParser::BEGIN_MACRO_PDF417_CONTROL_BLOCK = 928; const int DecodedBitStreamParser::BEGIN_MACRO_PDF417_OPTIONAL_FIELD = 923; const int DecodedBitStreamParser::MACRO_PDF417_TERMINATOR = 922; const int DecodedBitStreamParser::MODE_SHIFT_TO_BYTE_COMPACTION_MODE = 913; const int DecodedBitStreamParser::MAX_NUMERIC_CODEWORDS = 15; const int DecodedBitStreamParser::PL = 25; const int DecodedBitStreamParser::LL = 27; const int DecodedBitStreamParser::AS = 27; const int DecodedBitStreamParser::ML = 28; const int DecodedBitStreamParser::AL = 28; const int DecodedBitStreamParser::PS = 29; const int DecodedBitStreamParser::PAL = 29; const int DecodedBitStreamParser::EXP900_SIZE = 16; const char DecodedBitStreamParser::PUNCT_CHARS[] = { ';', '<', '>', '@', '[', '\\', '}', '_', '`', '~', '!', '\r', '\t', ',', ':', '\n', '-', '.', '$', '/', '"', '|', '*', '(', ')', '?', '{', '}', '\''}; const char DecodedBitStreamParser::MIXED_CHARS[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '&', '\r', '\t', ',', ':', '#', '-', '.', '$', '/', '+', '%', '*', '=', '^'}; ArrayRef DecodedBitStreamParser::initEXP900() { ArrayRef EXP900 (16); EXP900[0] = BigInteger(1); BigInteger nineHundred (900); EXP900[1] = nineHundred; for (int i = 2; i < EXP900->size(); i++) { EXP900[i] = EXP900[i - 1] * nineHundred; } return EXP900; } ArrayRef DecodedBitStreamParser::EXP900 = initEXP900(); DecodedBitStreamParser::DecodedBitStreamParser(){} /** * PDF417 main decoder. **/ Ref DecodedBitStreamParser::decode(ArrayRef codewords) { Ref result (new String(100)); // Get compaction mode int codeIndex = 1; int code = codewords[codeIndex++]; while (codeIndex < codewords[0]) { switch (code) { case TEXT_COMPACTION_MODE_LATCH: codeIndex = textCompaction(codewords, codeIndex, result); break; case BYTE_COMPACTION_MODE_LATCH: codeIndex = byteCompaction(code, codewords, codeIndex, result); break; case NUMERIC_COMPACTION_MODE_LATCH: codeIndex = numericCompaction(codewords, codeIndex, result); break; case MODE_SHIFT_TO_BYTE_COMPACTION_MODE: codeIndex = byteCompaction(code, codewords, codeIndex, result); break; case BYTE_COMPACTION_MODE_LATCH_6: codeIndex = byteCompaction(code, codewords, codeIndex, result); break; default: // Default to text compaction. During testing numerous barcodes // appeared to be missing the starting mode. In these cases defaulting // to text compaction seems to work. codeIndex--; codeIndex = textCompaction(codewords, codeIndex, result); break; } if (codeIndex < codewords->size()) { code = codewords[codeIndex++]; } else { throw FormatException(); } } return Ref(new DecoderResult(ArrayRef(), result)); } /** * Text Compaction mode (see 5.4.1.5) permits all printable ASCII characters to be * encoded, i.e. values 32 - 126 inclusive in accordance with ISO/IEC 646 (IRV), as * well as selected control characters. * * @param codewords The array of codewords (data + error) * @param codeIndex The current index into the codeword array. * @param result The decoded data is appended to the result. * @return The next index into the codeword array. */ int DecodedBitStreamParser::textCompaction(ArrayRef codewords, int codeIndex, Ref result) { // 2 character per codeword ArrayRef textCompactionData (codewords[0] << 1); // Used to hold the byte compaction value if there is a mode shift ArrayRef byteCompactionData (codewords[0] << 1); int index = 0; bool end = false; while ((codeIndex < codewords[0]) && !end) { int code = codewords[codeIndex++]; if (code < TEXT_COMPACTION_MODE_LATCH) { textCompactionData[index] = code / 30; textCompactionData[index + 1] = code % 30; index += 2; } else { switch (code) { case TEXT_COMPACTION_MODE_LATCH: textCompactionData[index++] = TEXT_COMPACTION_MODE_LATCH; break; case BYTE_COMPACTION_MODE_LATCH: codeIndex--; end = true; break; case NUMERIC_COMPACTION_MODE_LATCH: codeIndex--; end = true; break; case MODE_SHIFT_TO_BYTE_COMPACTION_MODE: // The Mode Shift codeword 913 shall cause a temporary // switch from Text Compaction mode to Byte Compaction mode. // This switch shall be in effect for only the next codeword, // after which the mode shall revert to the prevailing sub-mode // of the Text Compaction mode. Codeword 913 is only available // in Text Compaction mode; its use is described in 5.4.2.4. textCompactionData[index] = MODE_SHIFT_TO_BYTE_COMPACTION_MODE; code = codewords[codeIndex++]; byteCompactionData[index] = code; //Integer.toHexString(code); index++; break; case BYTE_COMPACTION_MODE_LATCH_6: codeIndex--; end = true; break; } } } decodeTextCompaction(textCompactionData, byteCompactionData, index, result); return codeIndex; } /** * The Text Compaction mode includes all the printable ASCII characters * (i.e. values from 32 to 126) and three ASCII control characters: HT or tab * (ASCII value 9), LF or line feed (ASCII value 10), and CR or carriage * return (ASCII value 13). The Text Compaction mode also includes various latch * and shift characters which are used exclusively within the mode. The Text * Compaction mode encodes up to 2 characters per codeword. The compaction rules * for converting data into PDF417 codewords are defined in 5.4.2.2. The sub-mode * switches are defined in 5.4.2.3. * * @param textCompactionData The text compaction data. * @param byteCompactionData The byte compaction data if there * was a mode shift. * @param length The size of the text compaction and byte compaction data. * @param result The decoded data is appended to the result. */ void DecodedBitStreamParser::decodeTextCompaction(ArrayRef textCompactionData, ArrayRef byteCompactionData, int length, Ref result) { // Beginning from an initial state of the Alpha sub-mode // The default compaction mode for PDF417 in effect at the start of each symbol shall always be Text // Compaction mode Alpha sub-mode (uppercase alphabetic). A latch codeword from another mode to the Text // Compaction mode shall always switch to the Text Compaction Alpha sub-mode. Mode subMode = ALPHA; Mode priorToShiftMode = ALPHA; int i = 0; while (i < length) { int subModeCh = textCompactionData[i]; char ch = 0; switch (subMode) { case ALPHA: // Alpha (uppercase alphabetic) if (subModeCh < 26) { // Upper case Alpha Character ch = (zxing::byte) ('A' + subModeCh); } else { if (subModeCh == 26) { ch = ' '; } else if (subModeCh == LL) { subMode = LOWER; } else if (subModeCh == ML) { subMode = MIXED; } else if (subModeCh == PS) { // Shift to punctuation priorToShiftMode = subMode; subMode = PUNCT_SHIFT; } else if (subModeCh == MODE_SHIFT_TO_BYTE_COMPACTION_MODE) { result->append((zxing::byte) byteCompactionData[i]); } else if (subModeCh == TEXT_COMPACTION_MODE_LATCH) { subMode = ALPHA; } } break; case LOWER: // Lower (lowercase alphabetic) if (subModeCh < 26) { ch = (zxing::byte) ('a' + subModeCh); } else { if (subModeCh == 26) { ch = ' '; } else if (subModeCh == AS) { // Shift to alpha priorToShiftMode = subMode; subMode = ALPHA_SHIFT; } else if (subModeCh == ML) { subMode = MIXED; } else if (subModeCh == PS) { // Shift to punctuation priorToShiftMode = subMode; subMode = PUNCT_SHIFT; } else if (subModeCh == MODE_SHIFT_TO_BYTE_COMPACTION_MODE) { result->append((zxing::byte) byteCompactionData[i]); } else if (subModeCh == TEXT_COMPACTION_MODE_LATCH) { subMode = ALPHA; } } break; case MIXED: // Mixed (numeric and some punctuation) if (subModeCh < PL) { ch = MIXED_CHARS[subModeCh]; } else { if (subModeCh == PL) { subMode = PUNCT; } else if (subModeCh == 26) { ch = ' '; } else if (subModeCh == LL) { subMode = LOWER; } else if (subModeCh == AL) { subMode = ALPHA; } else if (subModeCh == PS) { // Shift to punctuation priorToShiftMode = subMode; subMode = PUNCT_SHIFT; } else if (subModeCh == MODE_SHIFT_TO_BYTE_COMPACTION_MODE) { result->append((zxing::byte) byteCompactionData[i]); } else if (subModeCh == TEXT_COMPACTION_MODE_LATCH) { subMode = ALPHA; } } break; case PUNCT: // Punctuation if (subModeCh < PAL) { ch = PUNCT_CHARS[subModeCh]; } else { if (subModeCh == PAL) { subMode = ALPHA; } else if (subModeCh == MODE_SHIFT_TO_BYTE_COMPACTION_MODE) { result->append((zxing::byte) byteCompactionData[i]); } else if (subModeCh == TEXT_COMPACTION_MODE_LATCH) { subMode = ALPHA; } } break; case ALPHA_SHIFT: // Restore sub-mode subMode = priorToShiftMode; if (subModeCh < 26) { ch = (zxing::byte) ('A' + subModeCh); } else { if (subModeCh == 26) { ch = ' '; } else { if (subModeCh == 26) { ch = ' '; } else if (subModeCh == TEXT_COMPACTION_MODE_LATCH) { subMode = ALPHA; } } } break; case PUNCT_SHIFT: // Restore sub-mode subMode = priorToShiftMode; if (subModeCh < PAL) { ch = PUNCT_CHARS[subModeCh]; } else { if (subModeCh == PAL) { subMode = ALPHA; // 2012-11-27 added from recent java code: } else if (subModeCh == MODE_SHIFT_TO_BYTE_COMPACTION_MODE) { // PS before Shift-to-Byte is used as a padding character, // see 5.4.2.4 of the specification result->append((zxing::byte) byteCompactionData[i]); } else if (subModeCh == TEXT_COMPACTION_MODE_LATCH) { subMode = ALPHA; } } break; } if (ch != 0) { // Append decoded character to result result->append(ch); } i++; } } /** * Byte Compaction mode (see 5.4.3) permits all 256 possible 8-bit byte values to be encoded. * This includes all ASCII characters value 0 to 127 inclusive and provides for international * character set support. * * @param mode The byte compaction mode i.e. 901 or 924 * @param codewords The array of codewords (data + error) * @param codeIndex The current index into the codeword array. * @param result The decoded data is appended to the result. * @return The next index into the codeword array. */ int DecodedBitStreamParser::byteCompaction(int mode, ArrayRef codewords, int codeIndex, Ref result) { if (mode == BYTE_COMPACTION_MODE_LATCH) { // Total number of Byte Compaction characters to be encoded // is not a multiple of 6 int count = 0; int64_t value = 0; ArrayRef decodedData = new Array(6); ArrayRef byteCompactedCodewords = new Array(6); bool end = false; int nextCode = codewords[codeIndex++]; while ((codeIndex < codewords[0]) && !end) { byteCompactedCodewords[count++] = nextCode; // Base 900 value = 900 * value + nextCode; nextCode = codewords[codeIndex++]; // perhaps it should be ok to check only nextCode >= TEXT_COMPACTION_MODE_LATCH if (nextCode == TEXT_COMPACTION_MODE_LATCH || nextCode == BYTE_COMPACTION_MODE_LATCH || nextCode == NUMERIC_COMPACTION_MODE_LATCH || nextCode == BYTE_COMPACTION_MODE_LATCH_6 || nextCode == BEGIN_MACRO_PDF417_CONTROL_BLOCK || nextCode == BEGIN_MACRO_PDF417_OPTIONAL_FIELD || nextCode == MACRO_PDF417_TERMINATOR) { end = true; } else { if ((count%5 == 0) && (count > 0)) { // Decode every 5 codewords // Convert to Base 256 for (int j = 0; j < 6; ++j) { decodedData[5 - j] = (zxing::byte) (value%256); value >>= 8; } result->append(string((char*)&(decodedData->values()[0]), decodedData->values().size())); count = 0; } } } // if the end of all codewords is reached the last codeword needs to be added if (codeIndex == codewords[0] && nextCode < TEXT_COMPACTION_MODE_LATCH) byteCompactedCodewords[count++] = nextCode; // If Byte Compaction mode is invoked with codeword 901, // the last group of codewords is interpreted directly // as one byte per codeword, without compaction. for (int i = 0; i < count; i++) { result->append((zxing::byte)byteCompactedCodewords[i]); } } else if (mode == BYTE_COMPACTION_MODE_LATCH_6) { // Total number of Byte Compaction characters to be encoded // is an integer multiple of 6 int count = 0; int64_t value = 0; bool end = false; while (codeIndex < codewords[0] && !end) { int code = codewords[codeIndex++]; if (code < TEXT_COMPACTION_MODE_LATCH) { count++; // Base 900 value = 900 * value + code; } else { if (code == TEXT_COMPACTION_MODE_LATCH || code == BYTE_COMPACTION_MODE_LATCH || code == NUMERIC_COMPACTION_MODE_LATCH || code == BYTE_COMPACTION_MODE_LATCH_6 || code == BEGIN_MACRO_PDF417_CONTROL_BLOCK || code == BEGIN_MACRO_PDF417_OPTIONAL_FIELD || code == MACRO_PDF417_TERMINATOR) { codeIndex--; end = true; } } if ((count % 5 == 0) && (count > 0)) { // Decode every 5 codewords // Convert to Base 256 ArrayRef decodedData = new Array(6); for (int j = 0; j < 6; ++j) { decodedData[5 - j] = (zxing::byte) (value & 0xFF); value >>= 8; } result->append(string((char*)&decodedData[0],6)); // 2012-11-27 hfn after recent java code/fix by srowen count = 0; } } } return codeIndex; } /** * Numeric Compaction mode (see 5.4.4) permits efficient encoding of numeric data strings. * * @param codewords The array of codewords (data + error) * @param codeIndex The current index into the codeword array. * @param result The decoded data is appended to the result. * @return The next index into the codeword array. */ int DecodedBitStreamParser::numericCompaction(ArrayRef codewords, int codeIndex, Ref result) { int count = 0; bool end = false; ArrayRef numericCodewords = new Array(MAX_NUMERIC_CODEWORDS); while (codeIndex < codewords[0] && !end) { int code = codewords[codeIndex++]; if (codeIndex == codewords[0]) { end = true; } if (code < TEXT_COMPACTION_MODE_LATCH) { numericCodewords[count] = code; count++; } else { if (code == TEXT_COMPACTION_MODE_LATCH || code == BYTE_COMPACTION_MODE_LATCH || code == BYTE_COMPACTION_MODE_LATCH_6 || code == BEGIN_MACRO_PDF417_CONTROL_BLOCK || code == BEGIN_MACRO_PDF417_OPTIONAL_FIELD || code == MACRO_PDF417_TERMINATOR) { codeIndex--; end = true; } } if (count % MAX_NUMERIC_CODEWORDS == 0 || code == NUMERIC_COMPACTION_MODE_LATCH || end) { // Re-invoking Numeric Compaction mode (by using codeword 902 // while in Numeric Compaction mode) serves to terminate the // current Numeric Compaction mode grouping as described in 5.4.4.2, // and then to start a new one grouping. Ref s = decodeBase900toBase10(numericCodewords, count); result->append(s->getText()); count = 0; } } return codeIndex; } /** * Convert a list of Numeric Compacted codewords from Base 900 to Base 10. * * @param codewords The array of codewords * @param count The number of codewords * @return The decoded string representing the Numeric data. */ /* EXAMPLE Encode the fifteen digit numeric string 000213298174000 Prefix the numeric string with a 1 and set the initial value of t = 1 000 213 298 174 000 Calculate codeword 0 d0 = 1 000 213 298 174 000 mod 900 = 200 t = 1 000 213 298 174 000 div 900 = 1 111 348 109 082 Calculate codeword 1 d1 = 1 111 348 109 082 mod 900 = 282 t = 1 111 348 109 082 div 900 = 1 234 831 232 Calculate codeword 2 d2 = 1 234 831 232 mod 900 = 632 t = 1 234 831 232 div 900 = 1 372 034 Calculate codeword 3 d3 = 1 372 034 mod 900 = 434 t = 1 372 034 div 900 = 1 524 Calculate codeword 4 d4 = 1 524 mod 900 = 624 t = 1 524 div 900 = 1 Calculate codeword 5 d5 = 1 mod 900 = 1 t = 1 div 900 = 0 Codeword sequence is: 1, 624, 434, 632, 282, 200 Decode the above codewords involves 1 x 900 power of 5 + 624 x 900 power of 4 + 434 x 900 power of 3 + 632 x 900 power of 2 + 282 x 900 power of 1 + 200 x 900 power of 0 = 1000213298174000 Remove leading 1 => Result is 000213298174000 */ Ref DecodedBitStreamParser::decodeBase900toBase10(ArrayRef codewords, int count) { BigInteger result = BigInteger(0); for (int i = 0; i < count; i++) { result = result + (EXP900[count - i - 1] * BigInteger(codewords[i])); } string resultString = bigIntegerToString(result); if (resultString[0] != '1') { throw FormatException("DecodedBitStreamParser::decodeBase900toBase10: String does not begin with 1"); } string resultString2; resultString2.assign(resultString.begin()+1,resultString.end()); Ref res (new String(resultString2)); return res; } } } yubioath-desktop/QZXing/zxing/zxing/pdf417/decoder/PDF417Decoder.cpp000066400000000000000000000106371412677075700253270ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- /* * Copyright 2010, 2012 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * 2012-06-27 hfn: PDF417 Reed-Solomon error correction, using following Java * source code: * http://code.google.com/p/zxing/issues/attachmentText?id=817&aid=8170033000&name=pdf417-java-reed-solomon-error-correction-2.patch&token=0819f5d7446ae2814fd91385eeec6a11 */ #include #include #include #include #include #include using zxing::pdf417::decoder::Decoder; using zxing::pdf417::decoder::ec::ErrorCorrection; using zxing::Ref; using zxing::DecoderResult; // VC++ using zxing::BitMatrix; using zxing::DecodeHints; using zxing::ArrayRef; const int Decoder::MAX_ERRORS = 3; const int Decoder::MAX_EC_CODEWORDS = 512; Ref Decoder::decode(Ref bits, DecodeHints const& hints) { (void)hints; // Construct a parser to read the data codewords and error-correction level BitMatrixParser parser(bits); ArrayRef codewords(parser.readCodewords()); if (codewords->size() == 0) { throw FormatException("PDF:Decoder:decode: cannot read codewords"); } int ecLevel = parser.getECLevel(); int numECCodewords = 1 << (ecLevel + 1); ArrayRef erasures = parser.getErasures(); correctErrors(codewords, erasures, numECCodewords); verifyCodewordCount(codewords, numECCodewords); // Decode the codewords return DecodedBitStreamParser::decode(codewords); } /** * Verify that all is OK with the codeword array. * * @param codewords * @return an index to the first data codeword. * @throws FormatException */ void Decoder::verifyCodewordCount(ArrayRef codewords, int numECCodewords) { int cwsize = codewords->size(); if (cwsize < 4) { // Codeword array size should be at least 4 allowing for // Count CW, At least one Data CW, Error Correction CW, Error Correction CW throw FormatException("PDF:Decoder:verifyCodewordCount: codeword array too small!"); } // The first codeword, the Symbol Length Descriptor, shall always encode the total number of data // codewords in the symbol, including the Symbol Length Descriptor itself, data codewords and pad // codewords, but excluding the number of error correction codewords. int numberOfCodewords = codewords[0]; if (numberOfCodewords > cwsize) { throw FormatException("PDF:Decoder:verifyCodewordCount: bad codeword number descriptor!"); } if (numberOfCodewords == 0) { // Reset to the length of the array - 8 (Allow for at least level 3 Error Correction (8 Error Codewords) if (numECCodewords < cwsize) { codewords[0] = cwsize - numECCodewords; } else { throw FormatException("PDF:Decoder:verifyCodewordCount: bad error correction cw number!"); } } } /** * Correct errors whenever it is possible using Reed-Solomom algorithm * * @param codewords, erasures, numECCodewords * @return 0. * @throws FormatException */ void Decoder::correctErrors(ArrayRef codewords, ArrayRef erasures, int numECCodewords) { if (erasures->size() > numECCodewords / 2 + MAX_ERRORS || numECCodewords < 0 || numECCodewords > MAX_EC_CODEWORDS) { throw FormatException("PDF:Decoder:correctErrors: Too many errors or EC Codewords corrupted"); } Ref errorCorrection(new ErrorCorrection); errorCorrection->decode(codewords, numECCodewords, erasures); // 2012-06-27 HFN if, despite of error correction, there are still codewords with invalid // value, throw an exception here: for (int i = 0; i < codewords->size(); i++) { if (codewords[i]<0) { throw FormatException("PDF:Decoder:correctErrors: Error correction did not succeed!"); } } } yubioath-desktop/QZXing/zxing/zxing/pdf417/decoder/ec/000077500000000000000000000000001412677075700230505ustar00rootroot00000000000000yubioath-desktop/QZXing/zxing/zxing/pdf417/decoder/ec/ErrorCorrection.cpp000066400000000000000000000162151412677075700267020ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- /* * Copyright 2012 ZXing authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * 2012-09-19 HFN translation from Java into C++ */ #include #include #include using std::vector; using zxing::Ref; using zxing::ArrayRef; using zxing::pdf417::decoder::ec::ErrorCorrection; using zxing::pdf417::decoder::ec::ModulusPoly; using zxing::pdf417::decoder::ec::ModulusGF; /** *

PDF417 error correction implementation.

* *

This example * is quite useful in understanding the algorithm.

* * @author Sean Owen * @see com.google.zxing.common.reedsolomon.ReedSolomonDecoder */ ErrorCorrection::ErrorCorrection() : field_(ModulusGF::PDF417_GF) { } void ErrorCorrection::decode(ArrayRef received, int numECCodewords, ArrayRef erasures) { Ref poly (new ModulusPoly(field_, received)); ArrayRef S( new Array(numECCodewords)); bool error = false; for (int i = numECCodewords; i > 0; i--) { int eval = poly->evaluateAt(field_.exp(i)); S[numECCodewords - i] = eval; if (eval != 0) { error = true; } } if (error) { Ref knownErrors = field_.getOne(); for (int i=0;isize();i++) { int b = field_.exp(received->size() - 1 - erasures[i]); // Add (1 - bx) term: ArrayRef one_minus_b_x(new Array(2)); one_minus_b_x[1]=field_.subtract(0,b); one_minus_b_x[0]=1; Ref term (new ModulusPoly(field_,one_minus_b_x)); knownErrors = knownErrors->multiply(term); } Ref syndrome (new ModulusPoly(field_, S)); //syndrome = syndrome.multiply(knownErrors); vector > sigmaOmega ( runEuclideanAlgorithm(field_.buildMonomial(numECCodewords, 1), syndrome, numECCodewords)); Ref sigma = sigmaOmega[0]; Ref omega = sigmaOmega[1]; //sigma = sigma.multiply(knownErrors); ArrayRef errorLocations = findErrorLocations(sigma); ArrayRef errorMagnitudes = findErrorMagnitudes(omega, sigma, errorLocations); for (int i = 0; i < errorLocations->size(); i++) { int position = received->size() - 1 - field_.log(errorLocations[i]); if (position < 0) { throw ReedSolomonException("Bad error location!"); } received[position] = field_.subtract(received[position], errorMagnitudes[i]); #if (defined (DEBUG) && defined _WIN32) { WCHAR szmsg[256]; swprintf(szmsg,L"ErrorCorrection::decode: fix @ %d, new value = %d\n", position, received[position]); OutputDebugString(szmsg); } #endif } } } vector > ErrorCorrection::runEuclideanAlgorithm(Ref a, Ref b, int R) { // Assume a's degree is >= b's if (a->getDegree() < b->getDegree()) { Ref temp = a; a = b; b = temp; } Ref rLast ( a); Ref r ( b); Ref tLast ( field_.getZero()); Ref t ( field_.getOne()); // Run Euclidean algorithm until r's degree is less than R/2 while (r->getDegree() >= R / 2) { Ref rLastLast (rLast); Ref tLastLast (tLast); rLast = r; tLast = t; // Divide rLastLast by rLast, with quotient in q and remainder in r if (rLast->isZero()) { // Oops, Euclidean algorithm already terminated? throw ReedSolomonException("Euclidean algorithm already terminated?"); } r = rLastLast; Ref q (field_.getZero()); int denominatorLeadingTerm = rLast->getCoefficient(rLast->getDegree()); int dltInverse = field_.inverse(denominatorLeadingTerm); while (r->getDegree() >= rLast->getDegree() && !r->isZero()) { int degreeDiff = r->getDegree() - rLast->getDegree(); int scale = field_.multiply(r->getCoefficient(r->getDegree()), dltInverse); q = q->add(field_.buildMonomial(degreeDiff, scale)); r = r->subtract(rLast->multiplyByMonomial(degreeDiff, scale)); } t = q->multiply(tLast)->subtract(tLastLast)->negative(); } int sigmaTildeAtZero = t->getCoefficient(0); if (sigmaTildeAtZero == 0) { throw ReedSolomonException("sigmaTilde = 0!"); } int inverse = field_.inverse(sigmaTildeAtZero); Ref sigma (t->multiply(inverse)); Ref omega (r->multiply(inverse)); vector > v(2); v[0] = sigma; v[1] = omega; return v; } ArrayRef ErrorCorrection::findErrorLocations(Ref errorLocator) { // This is a direct application of Chien's search int numErrors = errorLocator->getDegree(); ArrayRef result( new Array(numErrors)); int e = 0; for (int i = 1; i < field_.getSize() && e < numErrors; i++) { if (errorLocator->evaluateAt(i) == 0) { result[e] = field_.inverse(i); e++; } } if (e != numErrors) { #if (defined (DEBUG) && defined _WIN32) char sz[128]; sprintf(sz,"Error number inconsistency, %d/%d!",e,numErrors); throw ReedSolomonException(sz); #else throw ReedSolomonException("Error number inconsistency!"); #endif } #if (defined (DEBUG) && defined _WIN32) { WCHAR szmsg[256]; swprintf(szmsg,L"ErrorCorrection::findErrorLocations: found %d errors.\n", e); OutputDebugString(szmsg); } #endif return result; } ArrayRef ErrorCorrection::findErrorMagnitudes(Ref errorEvaluator, Ref errorLocator, ArrayRef errorLocations) { int i; int errorLocatorDegree = errorLocator->getDegree(); ArrayRef formalDerivativeCoefficients (new Array(errorLocatorDegree)); for (i = 1; i <= errorLocatorDegree; i++) { formalDerivativeCoefficients[errorLocatorDegree - i] = field_.multiply(i, errorLocator->getCoefficient(i)); } Ref formalDerivative (new ModulusPoly(field_, formalDerivativeCoefficients)); // This is directly applying Forney's Formula int s = errorLocations->size(); ArrayRef result ( new Array(s)); for (i = 0; i < s; i++) { int xiInverse = field_.inverse(errorLocations[i]); int numerator = field_.subtract(0, errorEvaluator->evaluateAt(xiInverse)); int denominator = field_.inverse(formalDerivative->evaluateAt(xiInverse)); result[i] = field_.multiply(numerator, denominator); } return result; } yubioath-desktop/QZXing/zxing/zxing/pdf417/decoder/ec/ErrorCorrection.h000066400000000000000000000041301412677075700263400ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- #ifndef ZXING_ERROR_CORRECTION_PDF_H #define ZXING_ERROR_CORRECTION_PDF_H /* * Copyright 2012 ZXing authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * 2012-09-17 HFN translation from Java into C++ */ #include #include #include #include #include #include #include namespace zxing { namespace pdf417 { namespace decoder { namespace ec { /** *

PDF417 error correction implementation.

* *

This example * is quite useful in understanding the algorithm.

* * @author Sean Owen * @see com.google.zxing.common.reedsolomon.ReedSolomonDecoder */ class ErrorCorrection: public Counted { private: ModulusGF &field_; public: ErrorCorrection(); void decode(ArrayRef received, int numECCodewords, ArrayRef erasures); private: std::vector > runEuclideanAlgorithm(Ref a, Ref b, int R); ArrayRef findErrorLocations(Ref errorLocator); ArrayRef findErrorMagnitudes(Ref errorEvaluator, Ref errorLocator, ArrayRef errorLocations); }; } } } } #endif /* ZXING_ERROR_CORRECTION_PDF_H */ yubioath-desktop/QZXing/zxing/zxing/pdf417/decoder/ec/ModulusGF.cpp000066400000000000000000000057251412677075700254320ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- /* * Copyright 2012 ZXing authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * 2012-09-19 HFN translation from Java into C++ */ #include #include using zxing::Ref; using zxing::pdf417::decoder::ec::ModulusGF; using zxing::pdf417::decoder::ec::ModulusPoly; /** * The central Modulus Galois Field for PDF417 with prime number 929 * and generator 3. */ ModulusGF ModulusGF::PDF417_GF(929,3); /** *

A field based on powers of a generator integer, modulo some modulus.

* * @author Sean Owen * @see com.google.zxing.common.reedsolomon.GenericGF */ ModulusGF::ModulusGF(int modulus, int generator) : modulus_(modulus) { expTable_ = new Array(modulus_); logTable_ = new Array(modulus_); int x = 1,i; for (i = 0; i < modulus_; i++) { expTable_[i] = x; x = (x * generator) % modulus_; } for (i = 0; i < modulus_-1; i++) { logTable_[expTable_[i]] = i; } // logTable[0] == 0 but this should never be used ArrayRefaZero(new Array(1)),aOne(new Array(1)); aZero[0]=0;aOne[0]=1; zero_ = new ModulusPoly(*this, aZero); one_ = new ModulusPoly(*this, aOne); } Ref ModulusGF::getZero() { return zero_; } Ref ModulusGF::getOne() { return one_; } Ref ModulusGF::buildMonomial(int degree, int coefficient) { if (degree < 0) { throw IllegalArgumentException("monomial: degree < 0!"); } if (coefficient == 0) { return zero_; } int nCoefficients = degree + 1; ArrayRef coefficients (new Array(nCoefficients)); coefficients[0] = coefficient; Ref result(new ModulusPoly(*this,coefficients)); return result; } int ModulusGF::add(int a, int b) { return (a + b) % modulus_; } int ModulusGF::subtract(int a, int b) { return (modulus_ + a - b) % modulus_; } int ModulusGF::exp(int a) { return expTable_[a]; } int ModulusGF::log(int a) { if (a == 0) { throw IllegalArgumentException("log of zero!"); } return logTable_[a]; } int ModulusGF::inverse(int a) { if (a == 0) { throw IllegalArgumentException("inverse of zero!");; } return expTable_[modulus_ - logTable_[a] - 1]; } int ModulusGF::multiply(int a, int b) { if (a == 0 || b == 0) { return 0; } return expTable_[(logTable_[a] + logTable_[b]) % (modulus_ - 1)]; } int ModulusGF::getSize() { return modulus_; } yubioath-desktop/QZXing/zxing/zxing/pdf417/decoder/ec/ModulusGF.h000066400000000000000000000032151412677075700250670ustar00rootroot00000000000000#ifndef ZXING_MODULUS_GF_PDF_H #define ZXING_MODULUS_GF_PDF_H /* * Copyright 2012 ZXing authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * 2012-09-17 HFN translation from Java into C++ */ #include #include #include #include namespace zxing { namespace pdf417 { namespace decoder { namespace ec { class ModulusPoly; /** *

A field based on powers of a generator integer, modulo some modulus.

* * @author Sean Owen * @see com.google.zxing.common.reedsolomon.GenericGF */ class ModulusGF { public: static ModulusGF PDF417_GF; private: ArrayRef expTable_; ArrayRef logTable_; Ref zero_; Ref one_; int modulus_; public: ModulusGF(int modulus, int generator); Ref getZero(); Ref getOne(); Ref buildMonomial(int degree, int coefficient); int add(int a, int b); int subtract(int a, int b); int exp(int a); int log(int a); int inverse(int a); int multiply(int a, int b); int getSize(); }; } } } } #endif /* ZXING_MODULUS_GF_PDF_H */ yubioath-desktop/QZXing/zxing/zxing/pdf417/decoder/ec/ModulusPoly.cpp000066400000000000000000000212011412677075700260440ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- /* * Copyright 2012 ZXing authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * 2012-09-19 HFN translation from Java into C++ */ #include #include using zxing::Ref; using zxing::ArrayRef; using zxing::pdf417::decoder::ec::ModulusGF; using zxing::pdf417::decoder::ec::ModulusPoly; /** * @author Sean Owen * @see com.google.zxing.common.reedsolomon.GenericGFPoly */ ModulusPoly::ModulusPoly(ModulusGF& field, ArrayRef coefficients) : field_(field) { if (coefficients->size() == 0) { throw IllegalArgumentException("no coefficients!"); } int coefficientsLength = coefficients->size(); if (coefficientsLength > 1 && coefficients[0] == 0) { // Leading term must be non-zero for anything except the constant polynomial "0" int firstNonZero = 1; while (firstNonZero < coefficientsLength && coefficients[firstNonZero] == 0) { firstNonZero++; } if (firstNonZero == coefficientsLength) { coefficientsLength = field_.getZero()->getCoefficients()->size(); coefficients_.reset(new Array (coefficientsLength)); *coefficients_ = *(field_.getZero()->getCoefficients()); } else { ArrayRef c(coefficients); coefficientsLength -= firstNonZero; coefficients_.reset(new Array (coefficientsLength)); for (int i = 0; i < coefficientsLength; i++) { coefficients_[i] = c[i + firstNonZero]; } /* coefficientsLength -= firstNonZero; coefficients_.reset(new Array(coefficientsLength - firstNonZero)); for (int i = 0; i < coefficientsLength; i++) { coefficients_[i] = coefficients[i + firstNonZero]; } */ } } else { coefficients_ = coefficients; } } ArrayRef ModulusPoly::getCoefficients() { return coefficients_; } /** * @return degree of this polynomial */ int ModulusPoly::getDegree() { return coefficients_->size() - 1; } /** * @return true iff this polynomial is the monomial "0" */ bool ModulusPoly::isZero() { return coefficients_[0] == 0; } /** * @return coefficient of x^degree term in this polynomial */ int ModulusPoly::getCoefficient(int degree) { return coefficients_[coefficients_->size() - 1 - degree]; } /** * @return evaluation of this polynomial at a given point */ int ModulusPoly::evaluateAt(int a) { int i; if (a == 0) { // Just return the x^0 coefficient return getCoefficient(0); } int size = coefficients_->size(); if (a == 1) { // Just the sum of the coefficients int result = 0; for (i = 0; i < size; i++) { result = field_.add(result, coefficients_[i]); } return result; } int result = coefficients_[0]; for (i = 1; i < size; i++) { result = field_.add(field_.multiply(a, result), coefficients_[i]); } return result; } Ref ModulusPoly::add(Ref other) { if (&field_ != &other->field_) { throw IllegalArgumentException("ModulusPolys do not have same ModulusGF field"); } if (isZero()) { return other; } if (other->isZero()) { return Ref(this); } ArrayRef smallerCoefficients = coefficients_; ArrayRef largerCoefficients = other->coefficients_; if (smallerCoefficients->size() > largerCoefficients->size()) { ArrayRef temp(smallerCoefficients); smallerCoefficients = largerCoefficients; largerCoefficients = temp; } ArrayRef sumDiff (new Array(largerCoefficients->size())); int lengthDiff = largerCoefficients->size() - smallerCoefficients->size(); // Copy high-order terms only found in higher-degree polynomial's coefficients for (int i = 0; i < lengthDiff; i++) { sumDiff[i] = largerCoefficients[i]; } for (int i = lengthDiff; i < largerCoefficients->size(); i++) { sumDiff[i] = field_.add(smallerCoefficients[i - lengthDiff], largerCoefficients[i]); } return Ref(new ModulusPoly(field_, sumDiff)); } Ref ModulusPoly::subtract(Ref other) { if (&field_ != &other->field_) { throw IllegalArgumentException("ModulusPolys do not have same ModulusGF field"); } if (other->isZero()) { return Ref(this); } return add(other->negative()); } Ref ModulusPoly::multiply(Ref other) { if (&field_ != &other->field_) { throw IllegalArgumentException("ModulusPolys do not have same ModulusGF field"); } if (isZero() || other->isZero()) { return field_.getZero(); } int i,j; ArrayRef aCoefficients = coefficients_; int aLength = aCoefficients->size(); ArrayRef bCoefficients = other->coefficients_; int bLength = bCoefficients->size(); ArrayRef product (new Array(aLength + bLength - 1)); for (i = 0; i < aLength; i++) { int aCoeff = aCoefficients[i]; for (j = 0; j < bLength; j++) { product[i + j] = field_.add(product[i + j], field_.multiply(aCoeff, bCoefficients[j])); } } return Ref(new ModulusPoly(field_, product)); } Ref ModulusPoly::negative() { int size = coefficients_->size(); ArrayRef negativeCoefficients (new Array(size)); for (int i = 0; i < size; i++) { negativeCoefficients[i] = field_.subtract(0, coefficients_[i]); } return Ref(new ModulusPoly(field_, negativeCoefficients)); } Ref ModulusPoly::multiply(int scalar) { if (scalar == 0) { return field_.getZero(); } if (scalar == 1) { return Ref(this); } int size = coefficients_->size(); ArrayRef product( new Array(size)); for (int i = 0; i < size; i++) { product[i] = field_.multiply(coefficients_[i], scalar); } return Ref(new ModulusPoly(field_, product)); } Ref ModulusPoly::multiplyByMonomial(int degree, int coefficient) { if (degree < 0) { throw IllegalArgumentException("negative degree!"); } if (coefficient == 0) { return field_.getZero(); } int size = coefficients_->size(); ArrayRef product (new Array(size + degree)); for (int i = 0; i < size; i++) { product[i] = field_.multiply(coefficients_[i], coefficient); } return Ref(new ModulusPoly(field_, product)); } std::vector > ModulusPoly::divide(Ref other) { if (&field_ != &other->field_) { throw IllegalArgumentException("ModulusPolys do not have same ModulusGF field"); } if (other->isZero()) { throw IllegalArgumentException("Divide by 0"); } Ref quotient (field_.getZero()); Ref remainder (this); int denominatorLeadingTerm = other->getCoefficient(other->getDegree()); int inverseDenominatorLeadingTerm = field_.inverse(denominatorLeadingTerm); while (remainder->getDegree() >= other->getDegree() && !remainder->isZero()) { int degreeDifference = remainder->getDegree() - other->getDegree(); int scale = field_.multiply(remainder->getCoefficient(remainder->getDegree()), inverseDenominatorLeadingTerm); Ref term (other->multiplyByMonomial(degreeDifference, scale)); Ref iterationQuotient (field_.buildMonomial(degreeDifference, scale)); quotient = quotient->add(iterationQuotient); remainder = remainder->subtract(term); } std::vector > result(2); result[0] = quotient; result[1] = remainder; return result; } #if 0 @Override public String toString() { StringBuilder result = new StringBuilder(8 * getDegree()); for (int degree = getDegree(); degree >= 0; degree--) { int coefficient = getCoefficient(degree); if (coefficient != 0) { if (coefficient < 0) { result.append(" - "); coefficient = -coefficient; } else { if (result.length() > 0) { result.append(" + "); } } if (degree == 0 || coefficient != 1) { result.append(coefficient); } if (degree != 0) { if (degree == 1) { result.append('x'); } else { result.append("x^"); result.append(degree); } } } } return result.toString(); } #endif ModulusPoly::~ModulusPoly() {} yubioath-desktop/QZXing/zxing/zxing/pdf417/decoder/ec/ModulusPoly.h000066400000000000000000000034131412677075700255160ustar00rootroot00000000000000#ifndef ZXING_MODULUS_GFPOLY_PDF_H #define ZXING_MODULUS_GFPOLY_PDF_H /* * Copyright 2012 ZXing authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * 2012-09-17 HFN translation from Java into C++ */ #include #include #include #include namespace zxing { namespace pdf417 { namespace decoder { namespace ec { class ModulusGF; /** * @author Sean Owen * @see com.google.zxing.common.reedsolomon.GenericGFPoly */ class ModulusPoly: public Counted { private: ModulusGF &field_; ArrayRef coefficients_; public: ModulusPoly(ModulusGF& field, ArrayRef coefficients); ~ModulusPoly(); ArrayRef getCoefficients(); int getDegree(); bool isZero(); int getCoefficient(int degree); int evaluateAt(int a); Ref add(Ref other); Ref subtract(Ref other); Ref multiply(Ref other); Ref negative(); Ref multiply(int scalar); Ref multiplyByMonomial(int degree, int coefficient); std::vector > divide(Ref other); #if 0 public String toString(); #endif }; } } } } #endif /* ZXING_MODULUS_GFPOLY_PDF_H */ yubioath-desktop/QZXing/zxing/zxing/pdf417/detector/000077500000000000000000000000001412677075700226655ustar00rootroot00000000000000yubioath-desktop/QZXing/zxing/zxing/pdf417/detector/Detector.h000066400000000000000000000101471412677075700246120ustar00rootroot00000000000000#ifndef ZXING_DETECTOR_H_ #define ZXING_DETECTOR_H_ /* * Detector.h * zxing * * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include #include #include namespace zxing { namespace pdf417 { namespace detector { class Detector { private: static const int INTEGER_MATH_SHIFT = 8; static const int PATTERN_MATCH_RESULT_SCALE_FACTOR = 1 << INTEGER_MATH_SHIFT; static const int MAX_AVG_VARIANCE; static const int MAX_INDIVIDUAL_VARIANCE; static const int START_PATTERN[]; static const int START_PATTERN_LENGTH; static const int START_PATTERN_REVERSE[]; static const int START_PATTERN_REVERSE_LENGTH; static const int STOP_PATTERN[]; static const int STOP_PATTERN_LENGTH; static const int STOP_PATTERN_REVERSE[]; static const int STOP_PATTERN_REVERSE_LENGTH; Ref image_; static ArrayRef< Ref > findVertices(Ref matrix, int rowStep); static ArrayRef< Ref > findVertices180(Ref matrix, int rowStep); static ArrayRef findGuardPattern(Ref matrix, int column, int row, int width, bool whiteFirst, const int pattern[], int patternSize, ArrayRef& counters); static int patternMatchVariance(ArrayRef& counters, const int pattern[], int maxIndividualVariance); static void correctVertices(Ref matrix, ArrayRef< Ref >& vertices, bool upsideDown); static void findWideBarTopBottom(Ref matrix, ArrayRef< Ref >& vertices, int offsetVertice, int startWideBar, int lenWideBar, int lenPattern, int nIncrement); static void findCrossingPoint(ArrayRef< Ref >& vertices, int idxResult, int idxLineA1,int idxLineA2, int idxLineB1,int idxLineB2, Ref& matrix); static Point intersection(Line a, Line b); static float computeModuleWidth(ArrayRef< Ref >& vertices); static int computeDimension(Ref const& topLeft, Ref const& topRight, Ref const& bottomLeft, Ref const& bottomRight, float moduleWidth); int computeYDimension(Ref const& topLeft, Ref const& topRight, Ref const& bottomLeft, Ref const& bottomRight, float moduleWidth); Ref sampleLines(ArrayRef< Ref > const& vertices, int dimensionY, int dimension); public: Detector(Ref image); Ref getImage(); Ref detect(); Ref detect(DecodeHints const& hints); }; } } } #endif // ZXING_DETECTOR_H_ yubioath-desktop/QZXing/zxing/zxing/pdf417/detector/LinesSampler.cpp000066400000000000000000000636151412677075700260020ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- /* * Copyright 2010, 2012 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include #include #include #include #include using std::map; using std::vector; using std::min; using std::abs; using zxing::pdf417::detector::LinesSampler; using zxing::pdf417::decoder::BitMatrixParser; using zxing::Ref; using zxing::BitMatrix; using zxing::NotFoundException; using zxing::Point; // VC++ using zxing::Line; //favoritas37-22-01-14-change #ifndef Q_CC_MSVC const int LinesSampler::MODULES_IN_SYMBOL; const int LinesSampler::BARS_IN_SYMBOL; const int LinesSampler::POSSIBLE_SYMBOLS; const int LinesSampler::BARCODE_START_OFFSET; #endif //Q_CC_MSVC namespace { class VoteResult { private: bool indecisive; int vote; public: VoteResult() : indecisive(false), vote(0) {} bool isIndecisive() { return indecisive; } void setIndecisive(bool indecisive) { this->indecisive = indecisive; } int getVote() { return vote; } void setVote(int vote) { this->vote = vote; } }; // Moe 22.04.16 changed for the case that it's indecisive. // The better way is to check if one of the votes matches the "expected" length. // That solves some of the problems with PDF-417 codes that I had when I tried, // to decode codes from a spezific library. VoteResult getValueWithMaxVotes(map& votes,int expectedLength) { VoteResult result; int maxVotes = 0; int firstVote = 0, secondVote = 0; for (map::iterator i = votes.begin(); i != votes.end(); i++) { if (i->second > maxVotes) { maxVotes = i->second; result.setVote(i->first); firstVote = i->first; result.setIndecisive(false); } else if (i->second == maxVotes) { if(expectedLength != 0) secondVote = i->first; result.setIndecisive(true); } if(expectedLength != 0) { firstVote++; secondVote++; if(secondVote == expectedLength && result.isIndecisive()) result.setVote(secondVote); else result.setVote(firstVote); } } return result; } #if 0 VoteResult getValueWithMaxVotes(map& votes) { VoteResult result; int maxVotes = 0; for (map::iterator i = votes.begin(); i != votes.end(); i++) { if (i->second > maxVotes) { maxVotes = i->second; result.setVote(i->first); result.setIndecisive(false); } else if (i->second == maxVotes) { result.setIndecisive(true); } } return result; } #endif } vector LinesSampler::init_ratios_table() { // Pre-computes and outputs the symbol ratio table. vector > table (BitMatrixParser::SYMBOL_TABLE_LENGTH); for(int i=0; i < (int)table.size(); ++i) { table[i].resize(LinesSampler::BARS_IN_SYMBOL); } vector RATIOS_TABLE (BitMatrixParser::SYMBOL_TABLE_LENGTH * LinesSampler::BARS_IN_SYMBOL); int x = 0; for (int i = 0; i < BitMatrixParser::SYMBOL_TABLE_LENGTH; i++) { int currentSymbol = BitMatrixParser::SYMBOL_TABLE[i]; int currentBit = currentSymbol & 0x1; for (int j = 0; j < BARS_IN_SYMBOL; j++) { float size = 0.0f; while ((currentSymbol & 0x1) == currentBit) { size += 1.0f; currentSymbol >>= 1; } currentBit = currentSymbol & 0x1; table[i][BARS_IN_SYMBOL - j - 1] = size / MODULES_IN_SYMBOL; } for (int j = 0; j < BARS_IN_SYMBOL; j++) { RATIOS_TABLE[x] = table[i][j]; x++; } } return RATIOS_TABLE; } const vector LinesSampler::RATIOS_TABLE = init_ratios_table(); LinesSampler::LinesSampler(Ref linesMatrix, int dimension) : linesMatrix_(linesMatrix), dimension_(dimension) {} /** * Samples a grid from a lines matrix. * * @return the potentially decodable bit matrix. */ Ref LinesSampler::sample() { const int symbolsPerLine = dimension_ / MODULES_IN_SYMBOL; // XXX vector symbolWidths; computeSymbolWidths(symbolWidths, symbolsPerLine, linesMatrix_); // XXX vector > codewords(linesMatrix_->getHeight()); vector > clusterNumbers(linesMatrix_->getHeight()); linesMatrixToCodewords(clusterNumbers, symbolsPerLine, symbolWidths, linesMatrix_, codewords); // XXX vector > > votes = distributeVotes(symbolsPerLine, codewords, clusterNumbers); // XXX vector > detectedCodeWords(votes.size()); for (int i = 0; i < (int)votes.size(); i++) { detectedCodeWords[i].resize(votes[i].size(), 0); for (int j = 0; j < (int)votes[i].size(); j++) { if (!votes[i][j].empty()) { detectedCodeWords[i][j] = getValueWithMaxVotes(votes[i][j],0).getVote(); } } } // XXX vector insertLinesAt = findMissingLines(symbolsPerLine, detectedCodeWords); // XXX int rowCount = decodeRowCount(symbolsPerLine, detectedCodeWords, insertLinesAt); detectedCodeWords.resize(rowCount); // XXX Ref grid(new BitMatrix(dimension_, int(detectedCodeWords.size()))); codewordsToBitMatrix(detectedCodeWords, grid); return grid; } /** * @brief LinesSampler::codewordsToBitMatrix * @param codewords * @param matrix */ void LinesSampler::codewordsToBitMatrix(vector > &codewords, Ref &matrix) { for (int i = 0; i < (int)codewords.size(); i++) { for (int j = 0; j < (int)codewords[i].size(); j++) { int moduleOffset = j * MODULES_IN_SYMBOL; for (int k = 0; k < MODULES_IN_SYMBOL; k++) { //TODO: Potential unsafe sign check of a bitwise operation. if ((codewords[i][j] & (1 << (MODULES_IN_SYMBOL - k - 1))) > 0) { matrix->set(moduleOffset + k, i); } } } } } /** * @brief LinesSampler::calculateClusterNumber * @param codeword * @return */ int LinesSampler::calculateClusterNumber(int codeword) { if (codeword == 0) { return -1; } int barNumber = 0; bool blackBar = true; int clusterNumber = 0; //TODO: Potential unsafe sign check of a bitwise operation. for (int i = 0; i < MODULES_IN_SYMBOL; i++) { if ((codeword & (1 << i)) > 0) { if (!blackBar) { blackBar = true; barNumber++; } if (barNumber % 2 == 0) { clusterNumber++; } else { clusterNumber--; } } else { if (blackBar) { blackBar = false; } } } return (clusterNumber + 9) % 9; } //#define OUTPUT_SYMBOL_WIDTH 1 //#define OUTPUT_BAR_WIDTH 1 //#define OUTPUT_CW_STARTS 1 //#define OUTPUT_CLUSTER_NUMBERS 1 //#define OUTPUT_EC_LEVEL 1 void LinesSampler::computeSymbolWidths(vector &symbolWidths, const int symbolsPerLine, Ref linesMatrix) { int symbolStart = 0; bool lastWasSymbolStart = true; const float symbolWidth = symbolsPerLine > 0 ? (float)linesMatrix->getWidth() / (float)symbolsPerLine : (float)linesMatrix->getWidth(); // Use the following property of PDF417 barcodes to detect symbols: // Every symbol starts with a black module and every symbol is 17 modules wide, // therefore there have to be columns in the line matrix that are completely composed of black pixels. vector blackCount(linesMatrix->getWidth(), 0); for (int x = BARCODE_START_OFFSET; x < linesMatrix->getWidth(); x++) { for (int y = 0; y < linesMatrix->getHeight(); y++) { if (linesMatrix->get(x, y)) { blackCount[x]++; } } if (blackCount[x] == linesMatrix->getHeight()) { if (!lastWasSymbolStart) { float currentWidth = (float)(x - symbolStart); // Make sure we really found a symbol by asserting a minimal size of 75% of the expected symbol width. // This might break highly distorted barcodes, but fixes an issue with barcodes where there is a // full black column from top to bottom within a symbol. if (currentWidth > 0.80 * symbolWidth) { // Moe 22.04.16 for the codes I've tested 80 seems to be the better value(the old value was 75). // The actual symbol width might be slightly bigger than the expected symbol width, // but if we are more than half an expected symbol width bigger, we assume that // we missed one or more symbols and assume that they were the expected symbol width. while (currentWidth > 1.5 * symbolWidth) { symbolWidths.push_back(symbolWidth); currentWidth -= symbolWidth; } symbolWidths.push_back(currentWidth); lastWasSymbolStart = true; symbolStart = x; } } } else { if (lastWasSymbolStart) { lastWasSymbolStart = false; } } } // The last symbol ends at the right edge of the matrix, where there usually is no black bar. float currentWidth = (float)(linesMatrix->getWidth() - symbolStart); while (currentWidth > 1.5 * symbolWidth) { symbolWidths.push_back(symbolWidth); currentWidth -= symbolWidth; } symbolWidths.push_back(currentWidth); #if PDF417_DIAG && OUTPUT_SYMBOL_WIDTH { cout << "symbols per line: " << symbolsPerLine << endl; cout << "symbol width (" << symbolWidths.size() << "): "; for (int i = 0; i < symbolWidths.size(); i++) { cout << symbolWidths[i] << ", "; } cout << endl; } #endif } void LinesSampler::linesMatrixToCodewords(vector >& clusterNumbers, const int symbolsPerLine, const vector& symbolWidths, Ref linesMatrix, vector >& codewords) { for (int y = 0; y < linesMatrix->getHeight(); y++) { // Not sure if this is the right way to handle this but avoids an error: if (symbolsPerLine > (int)symbolWidths.size()) { throw NotFoundException("Inconsistent number of symbols in this line."); } // TODO: use symbolWidths.size() instead of symbolsPerLine to at least decode some codewords codewords[y].resize(symbolsPerLine, 0); clusterNumbers[y].resize(symbolsPerLine, -1); int line = y; vector barWidths(1, 0); int barCount = 0; // Runlength encode the bars in the scanned linesMatrix. // We assume that the first bar is black, as determined by the PDF417 standard. bool isSetBar = true; // Filter small white bars at the beginning of the barcode. // Small white bars may occur due to small deviations in scan line sampling. barWidths[0] += BARCODE_START_OFFSET; for (int x = BARCODE_START_OFFSET; x < linesMatrix->getWidth(); x++) { if (linesMatrix->get(x, line)) { if (!isSetBar) { isSetBar = true; barCount++; barWidths.resize(barWidths.size() + 1); } } else { if (isSetBar) { isSetBar = false; barCount++; barWidths.resize(barWidths.size() + 1); } } barWidths[barCount]++; } // Don't forget the last bar. barCount++; barWidths.resize(barWidths.size() + 1); #if PDF417_DIAG && OUTPUT_BAR_WIDTH { for (int i = 0; i < barWidths.size(); i++) { cout << barWidths[i] << ", "; } cout << endl; } #endif ////////////////////////////////////////////////// // Find the symbols in the line by counting bar lengths until we reach symbolWidth. // We make sure, that the last bar of a symbol is always white, as determined by the PDF417 standard. // This helps to reduce the amount of errors done during the symbol recognition. // The symbolWidth usually is not constant over the width of the barcode. int cwWidth = 0; int cwCount = 0; vector cwStarts(symbolsPerLine, 0); cwStarts[0] = 0; cwCount++; for (int i = 0; i < barCount && cwCount < symbolsPerLine; i++) { cwWidth += barWidths[i]; if ((float)cwWidth > symbolWidths[cwCount - 1]) { if ((i % 2) == 1) { // check if bar is white i++; } cwWidth = barWidths[i]; cwStarts[cwCount] = i; cwCount++; } } #if PDF417_DIAG && OUTPUT_CW_STARTS { for (int i = 0; i < cwStarts.size(); i++) { cout << cwStarts[i] << ", "; } cout << endl; } #endif /////////////////////////////////////////// vector > cwRatios(symbolsPerLine); // Distribute bar widths to modules of a codeword. for (int i = 0; i < symbolsPerLine; i++) { cwRatios[i].resize(BARS_IN_SYMBOL, 0.0f); const int cwStart = cwStarts[i]; const int cwEnd = (i == symbolsPerLine - 1) ? barCount : cwStarts[i + 1]; const int cwLength = cwEnd - cwStart; if (cwLength < 7 || cwLength > 9) { // We try to recover smybols with 7 or 9 bars and spaces with heuristics, but everything else is beyond repair. continue; } float cwWidth = 0; // For symbols with 9 bar length simply ignore the last bar. for (int j = 0; j < min(BARS_IN_SYMBOL, cwLength); ++j) { cwWidth += (float)barWidths[cwStart + j]; } // If there were only 7 bars and spaces detected use the following heuristic: // Assume the length of the symbol is symbolWidth and the last (unrecognized) bar uses all remaining space. if (cwLength == 7) { for (int j = 0; j < cwLength; ++j) { cwRatios[i][j] = (float)barWidths[cwStart + j] / symbolWidths[i]; } cwRatios[i][7] = (symbolWidths[i] - cwWidth) / symbolWidths[i]; } else { for (int j = 0; j < (int)cwRatios[i].size(); ++j) { cwRatios[i][j] = (float)barWidths[cwStart + j] / cwWidth; } } float bestMatchError = std::numeric_limits::max(); int bestMatch = 0; // Search for the most possible codeword by comparing the ratios of bar size to symbol width. // The sum of the squared differences is used as similarity metric. // (Picture it as the square euclidian distance in the space of eight tuples where a tuple represents the bar ratios.) for (int j = 0; j < POSSIBLE_SYMBOLS; j++) { float error = 0.0f; for (int k = 0; k < BARS_IN_SYMBOL; k++) { float diff = RATIOS_TABLE[j * BARS_IN_SYMBOL + k] - cwRatios[i][k]; error += diff * diff; if (error >= bestMatchError) { break; } } if (error < bestMatchError) { bestMatchError = error; bestMatch = BitMatrixParser::SYMBOL_TABLE[j]; } } codewords[y][i] = bestMatch; clusterNumbers[y][i] = calculateClusterNumber(bestMatch); } } #if PDF417_DIAG && OUTPUT_CLUSTER_NUMBERS { for (int i = 0; i < clusterNumbers.size(); i++) { for (int j = 0; j < clusterNumbers[i].size(); j++) { cout << clusterNumbers[i][j] << ", "; } cout << endl; } } #endif #if PDF417_DIAG { Ref bits(new BitMatrix(symbolsPerLine * MODULES_IN_SYMBOL, codewords.size())); codewordsToBitMatrix(codewords, bits); static int __cnt__ = 0; stringstream ss; ss << "pdf417-detectedRaw" << __cnt__++ << ".png"; bits->writePng(ss.str().c_str(), 8, 16); } #endif } vector > > LinesSampler::distributeVotes(const int symbolsPerLine, const vector >& codewords, const vector >& clusterNumbers) { // Matrix of votes for codewords which are possible at this position. vector > > votes(1); votes[0].resize(symbolsPerLine); int currentRow = 0; map clusterNumberVotes; int lastLineClusterNumber = -1; for (int y = 0; y < (int)codewords.size(); y++) { // Vote for the most probable cluster number for this row. clusterNumberVotes.clear(); for (int i = 0; i < (int)codewords[y].size(); i++) { if (clusterNumbers[y][i] != -1) { clusterNumberVotes[clusterNumbers[y][i]] = clusterNumberVotes[clusterNumbers[y][i]] + 1; } } // Ignore lines where no codeword could be read. if (!clusterNumberVotes.empty()) { VoteResult voteResult = getValueWithMaxVotes(clusterNumberVotes,0); bool lineClusterNumberIsIndecisive = voteResult.isIndecisive(); int lineClusterNumber = voteResult.getVote(); // If there are to few votes on the lines cluster number, we keep the old one. // This avoids switching lines because of damaged inter line readings, but // may cause problems for barcodes with four or less rows. if (lineClusterNumberIsIndecisive) { lineClusterNumber = lastLineClusterNumber; } if ((lineClusterNumber != ((lastLineClusterNumber + 3) % 9)) && (lastLineClusterNumber != -1)) { lineClusterNumber = lastLineClusterNumber; } // Ignore broken lines at the beginning of the barcode. if ((lineClusterNumber == 0 && lastLineClusterNumber == -1) || (lastLineClusterNumber != -1)) { if ((lineClusterNumber == ((lastLineClusterNumber + 3) % 9)) && (lastLineClusterNumber != -1)) { currentRow++; if ((int)votes.size() < currentRow + 1) { votes.resize(currentRow + 1); votes[currentRow].resize(symbolsPerLine); } } if ((lineClusterNumber == ((lastLineClusterNumber + 6) % 9)) && (lastLineClusterNumber != -1)) { currentRow += 2; if ((int)votes.size() < currentRow + 1) { votes.resize(currentRow + 1); votes[currentRow].resize(symbolsPerLine); } } for (int i = 0; i < (int)codewords[y].size(); i++) { if (clusterNumbers[y][i] != -1) { if (clusterNumbers[y][i] == lineClusterNumber) { votes[currentRow][i][codewords[y][i]] = votes[currentRow][i][codewords[y][i]] + 1; } else if (clusterNumbers[y][i] == ((lineClusterNumber + 3) % 9)) { if ((int)votes.size() < currentRow + 2) { votes.resize(currentRow + 2); votes[currentRow + 1].resize(symbolsPerLine); } votes[currentRow + 1][i][codewords[y][i]] = votes[currentRow + 1][i][codewords[y][i]] + 1; } else if ((clusterNumbers[y][i] == ((lineClusterNumber + 6) % 9)) && (currentRow > 0)) { votes[currentRow - 1][i][codewords[y][i]] = votes[currentRow - 1][i][codewords[y][i]] + 1; } } } lastLineClusterNumber = lineClusterNumber; } } } return votes; } vector LinesSampler::findMissingLines(const int symbolsPerLine, vector > &detectedCodeWords) { vector insertLinesAt; if (detectedCodeWords.size() > 1) { for (int i = 0; i < (int)detectedCodeWords.size() - 1; i++) { int clusterNumberRow = -1; for (int j = 0; j < (int)detectedCodeWords[i].size() && clusterNumberRow == -1; j++) { int clusterNumber = calculateClusterNumber(detectedCodeWords[i][j]); if (clusterNumber != -1) { clusterNumberRow = clusterNumber; } } if (i == 0) { // The first line must have the cluster number 0. Insert empty lines to match this. if (clusterNumberRow > 0) { insertLinesAt.push_back(0); if (clusterNumberRow > 3) { insertLinesAt.push_back(0); } } } int clusterNumberNextRow = -1; for (int j = 0; j < (int)detectedCodeWords[i + 1].size() && clusterNumberNextRow == -1; j++) { int clusterNumber = calculateClusterNumber(detectedCodeWords[i + 1][j]); if (clusterNumber != -1) { clusterNumberNextRow = clusterNumber; } } if ((clusterNumberRow + 3) % 9 != clusterNumberNextRow && clusterNumberRow != -1 && clusterNumberNextRow != -1) { // The cluster numbers are not consecutive. Insert an empty line between them. insertLinesAt.push_back(i + 1); if (clusterNumberRow == clusterNumberNextRow) { // There may be two lines missing. This is detected when two consecutive lines have the same cluster number. insertLinesAt.push_back(i + 1); } } } } for (int i = 0; i < (int)insertLinesAt.size(); i++) { detectedCodeWords.insert(detectedCodeWords.begin() + insertLinesAt[i] + i, vector(symbolsPerLine, 0)); } return insertLinesAt; } int LinesSampler::decodeRowCount(const int symbolsPerLine, vector > &detectedCodeWords, vector &insertLinesAt) { // Use the information in the first and last column to determin the number of rows and find more missing rows. // For missing rows insert blank space, so the error correction can try to fill them in. map rowCountVotes; map ecLevelVotes; map rowNumberVotes; int lastRowNumber = -1; insertLinesAt.clear(); for (int i = 0; i + 2 < (int)detectedCodeWords.size(); i += 3) { rowNumberVotes.clear(); int firstCodewordDecodedLeft = -1; int secondCodewordDecodedLeft = -1; int thirdCodewordDecodedLeft = -1; int firstCodewordDecodedRight = -1; int secondCodewordDecodedRight = -1; int thirdCodewordDecodedRight = -1; if (detectedCodeWords[i][0] != 0) { firstCodewordDecodedLeft = BitMatrixParser::getCodeword(detectedCodeWords[i][0]); } if (detectedCodeWords[i + 1][0] != 0) { secondCodewordDecodedLeft = BitMatrixParser::getCodeword(detectedCodeWords[i + 1][0]); } if (detectedCodeWords[i + 2][0] != 0) { thirdCodewordDecodedLeft = BitMatrixParser::getCodeword(detectedCodeWords[i + 2][0]); } if (detectedCodeWords[i][detectedCodeWords[i].size() - 1] != 0) { firstCodewordDecodedRight = BitMatrixParser::getCodeword(detectedCodeWords[i][detectedCodeWords[i].size() - 1]); } if (detectedCodeWords[i + 1][detectedCodeWords[i + 1].size() - 1] != 0) { secondCodewordDecodedRight = BitMatrixParser::getCodeword(detectedCodeWords[i + 1][detectedCodeWords[i + 1].size() - 1]); } if (detectedCodeWords[i + 2][detectedCodeWords[i + 2].size() - 1] != 0) { thirdCodewordDecodedRight = BitMatrixParser::getCodeword(detectedCodeWords[i + 2][detectedCodeWords[i + 2].size() - 1]); } if (firstCodewordDecodedLeft != -1 && secondCodewordDecodedLeft != -1) { int leftRowCount = ((firstCodewordDecodedLeft % 30) * 3) + ((secondCodewordDecodedLeft % 30) % 3); int leftECLevel = (secondCodewordDecodedLeft % 30) / 3; rowCountVotes[leftRowCount] = rowCountVotes[leftRowCount] + 1; ecLevelVotes[leftECLevel] = ecLevelVotes[leftECLevel] + 1; } if (secondCodewordDecodedRight != -1 && thirdCodewordDecodedRight != -1) { int rightRowCount = ((secondCodewordDecodedRight % 30) * 3) + ((thirdCodewordDecodedRight % 30) % 3); int rightECLevel = (thirdCodewordDecodedRight % 30) / 3; rowCountVotes[rightRowCount] = rowCountVotes[rightRowCount] + 1; ecLevelVotes[rightECLevel] = ecLevelVotes[rightECLevel] + 1; } if (firstCodewordDecodedLeft != -1) { int rowNumber = firstCodewordDecodedLeft / 30; rowNumberVotes[rowNumber] = rowNumberVotes[rowNumber] + 1; } if (secondCodewordDecodedLeft != -1) { int rowNumber = secondCodewordDecodedLeft / 30; rowNumberVotes[rowNumber] = rowNumberVotes[rowNumber] + 1; } if (thirdCodewordDecodedLeft != -1) { int rowNumber = thirdCodewordDecodedLeft / 30; rowNumberVotes[rowNumber] = rowNumberVotes[rowNumber] + 1; } if (firstCodewordDecodedRight != -1) { int rowNumber = firstCodewordDecodedRight / 30; rowNumberVotes[rowNumber] = rowNumberVotes[rowNumber] + 1; } if (secondCodewordDecodedRight != -1) { int rowNumber = secondCodewordDecodedRight / 30; rowNumberVotes[rowNumber] = rowNumberVotes[rowNumber] + 1; } if (thirdCodewordDecodedRight != -1) { int rowNumber = thirdCodewordDecodedRight / 30; rowNumberVotes[rowNumber] = rowNumberVotes[rowNumber] + 1; } int rowNumber = getValueWithMaxVotes(rowNumberVotes,0).getVote(); if (lastRowNumber + 1 < rowNumber) { for (int j = lastRowNumber + 1; j < rowNumber; j++) { insertLinesAt.push_back(i); insertLinesAt.push_back(i); insertLinesAt.push_back(i); } } lastRowNumber = rowNumber; } for (int i = 0; i < (int)insertLinesAt.size(); i++) { detectedCodeWords.insert(detectedCodeWords.begin() + insertLinesAt[i] + i, vector(symbolsPerLine, 0)); } int rowCount = getValueWithMaxVotes(rowCountVotes, int(detectedCodeWords.size())).getVote(); // int ecLevel = getValueWithMaxVotes(ecLevelVotes); #if PDF417_DIAG && OUTPUT_EC_LEVEL { cout << "EC Level: " << ecLevel << " (" << ((1 << (ecLevel + 1)) - 2) << " EC Codewords)" << endl; } #endif rowCount += 1; return rowCount; } /** * Ends up being a bit faster than Math.round(). This merely rounds its * argument to the nearest int, where x.5 rounds up. */ int LinesSampler::round(float d) { return (int)(d + 0.5f); } Point LinesSampler::intersection(Line a, Line b) { float dxa = a.start.x - a.end.x; float dxb = b.start.x - b.end.x; float dya = a.start.y - a.end.y; float dyb = b.start.y - b.end.y; float p = a.start.x * a.end.y - a.start.y * a.end.x; float q = b.start.x * b.end.y - b.start.y * b.end.x; float denom = dxa * dyb - dya * dxb; if(abs(denom) < 1e-12) // Lines don't intersect (replaces "denom == 0") return Point(std::numeric_limits::infinity(), std::numeric_limits::infinity()); float x = (p * dxb - dxa * q) / denom; float y = (p * dyb - dya * q) / denom; return Point(x, y); } yubioath-desktop/QZXing/zxing/zxing/pdf417/detector/LinesSampler.h000066400000000000000000000122551412677075700254410ustar00rootroot00000000000000#ifndef ZXING_LINESSAMPLER_H #define ZXING_LINESSAMPLER_H /* * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include #include namespace zxing { namespace pdf417 { namespace detector { class LinesSampler { private: static const int MODULES_IN_SYMBOL = 17; static const int BARS_IN_SYMBOL = 8; static const int POSSIBLE_SYMBOLS = 2787; static const std::vector RATIOS_TABLE; static std::vector init_ratios_table(); static const int BARCODE_START_OFFSET = 2; Ref linesMatrix_; int symbolsPerLine_; int dimension_; static std::vector > findVertices(Ref matrix, int rowStep); static std::vector > findVertices180(Ref matrix, int rowStep); static ArrayRef findGuardPattern(Ref matrix, int column, int row, int width, bool whiteFirst, const int pattern[], int patternSize, ArrayRef counters); static int patternMatchVariance(ArrayRef counters, const int pattern[], int maxIndividualVariance); static void correctVertices(Ref matrix, std::vector > &vertices, bool upsideDown); static void findWideBarTopBottom(Ref matrix, std::vector > &vertices, int offsetVertice, int startWideBar, int lenWideBar, int lenPattern, int nIncrement); static void findCrossingPoint(std::vector > &vertices, int idxResult, int idxLineA1,int idxLineA2, int idxLineB1,int idxLineB2, Ref matrix); static float computeModuleWidth(std::vector > &vertices); static int computeDimension(Ref topLeft, Ref topRight, Ref bottomLeft, Ref bottomRight, float moduleWidth); int computeYDimension(Ref topLeft, Ref topRight, Ref bottomLeft, Ref bottomRight, float moduleWidth); Ref sampleLines(std::vector > const &vertices, int dimensionY, int dimension); static void codewordsToBitMatrix(std::vector > &codewords, Ref &matrix); static int calculateClusterNumber(int codeword); static Ref sampleGrid(Ref image, int dimension); static void computeSymbolWidths(std::vector& symbolWidths, const int symbolsPerLine, Ref linesMatrix); static void linesMatrixToCodewords(std::vector > &clusterNumbers, const int symbolsPerLine, const std::vector &symbolWidths, Ref linesMatrix, std::vector > &codewords); static std::vector > > distributeVotes(const int symbolsPerLine, const std::vector >& codewords, const std::vector >& clusterNumbers); static std::vector findMissingLines(const int symbolsPerLine, std::vector > &detectedCodeWords); static int decodeRowCount(const int symbolsPerLine, std::vector > &detectedCodeWords, std::vector &insertLinesAt); static int round(float d); static Point intersection(Line a, Line b); public: LinesSampler(Ref linesMatrix, int dimension); Ref sample(); }; } } } #endif // ZXING_LINESSAMPLER_H yubioath-desktop/QZXing/zxing/zxing/pdf417/detector/PDF417Detector.cpp000066400000000000000000000620511412677075700257340ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- /* * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include #include #include #include #include using std::max; using std::abs; using std::numeric_limits; using zxing::pdf417::detector::Detector; using zxing::common::detector::Math; using zxing::common::detector::MathUtils; using zxing::Ref; using zxing::ArrayRef; using zxing::DetectorResult; using zxing::ResultPoint; using zxing::Point; using zxing::BitMatrix; using zxing::GridSampler; // VC++ using zxing::BinaryBitmap; using zxing::DecodeHints; using zxing::Line; /** *

Encapsulates logic that can detect a PDF417 Code in an image, even if the * PDF417 Code is rotated or skewed, or partially obscured.

* * @author SITA Lab (kevin.osullivan@sita.aero) * @author Daniel Switkin (dswitkin@google.com) * @author Schweers Informationstechnologie GmbH (hartmut.neubauer@schweers.de) * @author creatale GmbH (christoph.schulz@creatale.de) */ const int Detector::MAX_AVG_VARIANCE= (int) (PATTERN_MATCH_RESULT_SCALE_FACTOR * 0.42f); const int Detector::MAX_INDIVIDUAL_VARIANCE = (int) (PATTERN_MATCH_RESULT_SCALE_FACTOR * 0.8f); // B S B S B S B S Bar/Space pattern // 11111111 0 1 0 1 0 1 000 const int Detector::START_PATTERN[] = {8, 1, 1, 1, 1, 1, 1, 3}; const int Detector::START_PATTERN_LENGTH = sizeof(START_PATTERN) / sizeof(int); // 11111111 0 1 0 1 0 1 000 const int Detector::START_PATTERN_REVERSE[] = {3, 1, 1, 1, 1, 1, 1, 8}; const int Detector::START_PATTERN_REVERSE_LENGTH = sizeof(START_PATTERN_REVERSE) / sizeof(int); // 1111111 0 1 000 1 0 1 00 1 const int Detector::STOP_PATTERN[] = {7, 1, 1, 3, 1, 1, 1, 2, 1}; const int Detector::STOP_PATTERN_LENGTH = sizeof(STOP_PATTERN) / sizeof(int); // B S B S B S B S B Bar/Space pattern // 1111111 0 1 000 1 0 1 00 1 const int Detector::STOP_PATTERN_REVERSE[] = {1, 2, 1, 1, 1, 3, 1, 1, 7}; const int Detector::STOP_PATTERN_REVERSE_LENGTH = sizeof(STOP_PATTERN_REVERSE) / sizeof(int); Detector::Detector(Ref image) : image_(image) {} Ref Detector::detect() { return detect(DecodeHints()); } Ref Detector::detect(DecodeHints const& hints) { (void)hints; // Fetch the 1 bit matrix once up front. Ref matrix = image_->getBlackMatrix(); // Try to find the vertices assuming the image is upright. const int rowStep = 8; ArrayRef< Ref > vertices (findVertices(matrix, rowStep)); if (!vertices) { // Maybe the image is rotated 180 degrees? vertices = findVertices180(matrix, rowStep); if (vertices) { correctVertices(matrix, vertices, true); } } else { correctVertices(matrix, vertices, false); } if (!vertices) { throw NotFoundException("No vertices found."); } float moduleWidth = computeModuleWidth(vertices); if (moduleWidth < 1.0f) { throw NotFoundException("Bad module width."); } int dimension = computeDimension(vertices[12], vertices[14], vertices[13], vertices[15], moduleWidth); if (dimension < 1) { throw NotFoundException("Bad dimension."); } int yDimension = max(computeYDimension(vertices[12], vertices[14], vertices[13], vertices[15], moduleWidth), dimension); // Deskew and sample lines from image. Ref linesMatrix = sampleLines(vertices, dimension, yDimension); Ref linesGrid(LinesSampler(linesMatrix, dimension).sample()); ArrayRef< Ref > points(4); points[0] = vertices[5]; points[1] = vertices[4]; points[2] = vertices[6]; points[3] = vertices[7]; return Ref(new DetectorResult(linesGrid, points)); } /** * Locate the vertices and the codewords area of a black blob using the Start * and Stop patterns as locators. * * @param matrix the scanned barcode image. * @param rowStep the step size for iterating rows (every n-th row). * @return an array containing the vertices: * vertices[0] x, y top left barcode * vertices[1] x, y bottom left barcode * vertices[2] x, y top right barcode * vertices[3] x, y bottom right barcode * vertices[4] x, y top left codeword area * vertices[5] x, y bottom left codeword area * vertices[6] x, y top right codeword area * vertices[7] x, y bottom right codeword area */ ArrayRef< Ref > Detector::findVertices(Ref matrix, int rowStep) { const int height = matrix->getHeight(); const int width = matrix->getWidth(); ArrayRef< Ref > result(16); bool found = false; ArrayRef counters(new Array(START_PATTERN_LENGTH)); // Top Left for (int i = 0; i < height; i += rowStep) { ArrayRef loc = findGuardPattern(matrix, 0, i, width, false, START_PATTERN, START_PATTERN_LENGTH, counters); if (loc) { result[0] = new ResultPoint((float)loc[0], (float)i); result[4] = new ResultPoint((float)loc[1], (float)i); found = true; break; } } // Bottom left if (found) { // Found the Top Left vertex found = false; for (int i = height - 1; i > 0; i -= rowStep) { ArrayRef loc = findGuardPattern(matrix, 0, i, width, false, START_PATTERN, START_PATTERN_LENGTH, counters); if (loc) { result[1] = new ResultPoint((float)loc[0], (float)i); result[5] = new ResultPoint((float)loc[1], (float)i); found = true; break; } } } counters = new Array(STOP_PATTERN_LENGTH); // Top right if (found) { // Found the Bottom Left vertex found = false; for (int i = 0; i < height; i += rowStep) { ArrayRef loc = findGuardPattern(matrix, 0, i, width, false, STOP_PATTERN, STOP_PATTERN_LENGTH, counters); if (loc) { result[2] = new ResultPoint((float)loc[1], (float)i); result[6] = new ResultPoint((float)loc[0], (float)i); found = true; break; } } } // Bottom right if (found) { // Found the Top right vertex found = false; for (int i = height - 1; i > 0; i -= rowStep) { ArrayRef loc = findGuardPattern(matrix, 0, i, width, false, STOP_PATTERN, STOP_PATTERN_LENGTH, counters); if (loc) { result[3] = new ResultPoint((float)loc[1], (float)i); result[7] = new ResultPoint((float)loc[0], (float)i); found = true; break; } } } return found ? result : ArrayRef< Ref >(); } ArrayRef< Ref > Detector::findVertices180(Ref matrix, int rowStep) { const int height = matrix->getHeight(); const int width = matrix->getWidth(); const int halfWidth = width >> 1; ArrayRef< Ref > result(16); bool found = false; ArrayRef counters = new Array(START_PATTERN_REVERSE_LENGTH); // Top Left for (int i = height - 1; i > 0; i -= rowStep) { ArrayRef loc = findGuardPattern(matrix, halfWidth, i, halfWidth, true, START_PATTERN_REVERSE, START_PATTERN_REVERSE_LENGTH, counters); if (loc) { result[0] = new ResultPoint((float)loc[1], (float)i); result[4] = new ResultPoint((float)loc[0], (float)i); found = true; break; } } // Bottom Left if (found) { // Found the Top Left vertex found = false; for (int i = 0; i < height; i += rowStep) { ArrayRef loc = findGuardPattern(matrix, halfWidth, i, halfWidth, true, START_PATTERN_REVERSE, START_PATTERN_REVERSE_LENGTH, counters); if (loc) { result[1] = new ResultPoint((float)loc[1], (float)i); result[5] = new ResultPoint((float)loc[0], (float)i); found = true; break; } } } counters = new Array(STOP_PATTERN_REVERSE_LENGTH); // Top Right if (found) { // Found the Bottom Left vertex found = false; for (int i = height - 1; i > 0; i -= rowStep) { ArrayRef loc = findGuardPattern(matrix, 0, i, halfWidth, false, STOP_PATTERN_REVERSE, STOP_PATTERN_REVERSE_LENGTH, counters); if (loc) { result[2] = new ResultPoint((float)loc[0], (float)i); result[6] = new ResultPoint((float)loc[1], (float)i); found = true; break; } } } // Bottom Right if (found) { // Found the Top Right vertex found = false; for (int i = 0; i < height; i += rowStep) { ArrayRef loc = findGuardPattern(matrix, 0, i, halfWidth, false, STOP_PATTERN_REVERSE, STOP_PATTERN_REVERSE_LENGTH, counters); if (loc) { result[3] = new ResultPoint((float)loc[0], (float)i); result[7] = new ResultPoint((float)loc[1], (float)i); found = true; break; } } } return found ? result : ArrayRef< Ref >(); } /** * @param matrix row of black/white values to search * @param column x position to start search * @param row y position to start search * @param width the number of pixels to search on this row * @param pattern pattern of counts of number of black and white pixels that are * being searched for as a pattern * @param counters array of counters, as long as pattern, to re-use * @return start/end horizontal offset of guard pattern, as an array of two ints. */ ArrayRef Detector::findGuardPattern(Ref matrix, int column, int row, int width, bool whiteFirst, const int pattern[], int patternSize, ArrayRef& counters) { counters->values().assign(counters->size(), 0); int patternLength = patternSize; bool isWhite = whiteFirst; int counterPosition = 0; int patternStart = column; for (int x = column; x < column + width; x++) { bool pixel = matrix->get(x, row); if (pixel ^ isWhite) { counters[counterPosition]++; } else { if (counterPosition == patternLength - 1) { if (patternMatchVariance(counters, pattern, MAX_INDIVIDUAL_VARIANCE) < MAX_AVG_VARIANCE) { ArrayRef result = new Array(2); result[0] = patternStart; result[1] = x; return result; } patternStart += counters[0] + counters[1]; for(int i = 0; i < patternLength - 2; ++i) counters[i] = counters[ i + 2]; counters[patternLength - 2] = 0; counters[patternLength - 1] = 0; counterPosition--; } else { counterPosition++; } counters[counterPosition] = 1; isWhite = !isWhite; } } return ArrayRef(); } /** * Determines how closely a set of observed counts of runs of black/white * values matches a given target pattern. This is reported as the ratio of * the total variance from the expected pattern proportions across all * pattern elements, to the length of the pattern. * * @param counters observed counters * @param pattern expected pattern * @param maxIndividualVariance The most any counter can differ before we give up * @return ratio of total variance between counters and pattern compared to * total pattern size, where the ratio has been multiplied by 256. * So, 0 means no variance (perfect match); 256 means the total * variance between counters and patterns equals the pattern length, * higher values mean even more variance */ int Detector::patternMatchVariance(ArrayRef& counters, const int pattern[], int maxIndividualVariance) { int numCounters = counters->size(); int total = 0; int patternLength = 0; for (int i = 0; i < numCounters; i++) { total += counters[i]; patternLength += pattern[i]; } if (total < patternLength) { // If we don't even have one pixel per unit of bar width, assume this // is too small to reliably match, so fail: return numeric_limits::max(); } // We're going to fake floating-point math in integers. We just need to use more bits. // Scale up patternLength so that intermediate values below like scaledCounter will have // more "significant digits". int unitBarWidth = (total << 8) / patternLength; maxIndividualVariance = (maxIndividualVariance * unitBarWidth) >> 8; int totalVariance = 0; for (int x = 0; x < numCounters; x++) { int counter = counters[x] << 8; int scaledPattern = pattern[x] * unitBarWidth; int variance = counter > scaledPattern ? counter - scaledPattern : scaledPattern - counter; if (variance > maxIndividualVariance) { return numeric_limits::max(); } totalVariance += variance; } return totalVariance / total; } /** *

Correct the vertices by searching for top and bottom vertices of wide * bars, then locate the intersections between the upper and lower horizontal * line and the inner vertices vertical lines.

* * @param matrix the scanned barcode image. * @param vertices the vertices vector is extended and the new members are: * vertices[ 8] x,y point on upper border of left wide bar * vertices[ 9] x,y point on lower border of left wide bar * vertices[10] x,y point on upper border of right wide bar * vertices[11] x,y point on lower border of right wide bar * vertices[12] x,y final top left codeword area * vertices[13] x,y final bottom left codeword area * vertices[14] x,y final top right codeword area * vertices[15] x,y final bottom right codeword area * @param upsideDown true if rotated by 180 degree. */ void Detector::correctVertices(Ref matrix, ArrayRef< Ref >& vertices, bool upsideDown) { bool isLowLeft = abs(vertices[4]->getY() - vertices[5]->getY()) < 20.0; bool isLowRight = abs(vertices[6]->getY() - vertices[7]->getY()) < 20.0; if (isLowLeft || isLowRight) { throw NotFoundException("Cannot find enough PDF417 guard patterns!"); } else { findWideBarTopBottom(matrix, vertices, 0, 0, 8, 17, upsideDown ? 1 : -1); findWideBarTopBottom(matrix, vertices, 1, 0, 8, 17, upsideDown ? -1 : 1); findWideBarTopBottom(matrix, vertices, 2, 11, 7, 18, upsideDown ? 1 : -1); findWideBarTopBottom(matrix, vertices, 3, 11, 7, 18, upsideDown ? -1 : 1); findCrossingPoint(vertices, 12, 4, 5, 8, 10, matrix); findCrossingPoint(vertices, 13, 4, 5, 9, 11, matrix); findCrossingPoint(vertices, 14, 6, 7, 8, 10, matrix); findCrossingPoint(vertices, 15, 6, 7, 9, 11, matrix); } } /** *

Locate the top or bottom of one of the two wide black bars of a guard pattern.

* *

Warning: it only searches along the y axis, so the return points would not be * right if the barcode is too curved.

* * @param matrix The bit matrix. * @param vertices The 16 vertices located by findVertices(); the result * points are stored into vertices[8], ... , vertices[11]. * @param offsetVertice The offset of the outer vertice and the inner * vertice (+ 4) to be corrected and (+ 8) where the result is stored. * @param startWideBar start of a wide bar. * @param lenWideBar length of wide bar. * @param lenPattern length of the pattern. * @param rowStep +1 if corner should be exceeded towards the bottom, -1 towards the top. */ void Detector::findWideBarTopBottom(Ref matrix, ArrayRef< Ref > &vertices, int offsetVertice, int startWideBar, int lenWideBar, int lenPattern, int rowStep) { Ref verticeStart(vertices[offsetVertice]); Ref verticeEnd(vertices[offsetVertice + 4]); // Start horizontally at the middle of the bar. int endWideBar = startWideBar + lenWideBar; float barDiff = verticeEnd->getX() - verticeStart->getX(); float barStart = verticeStart->getX() + barDiff * (float)startWideBar / (float)lenPattern; float barEnd = verticeStart->getX() + barDiff * (float)endWideBar / (float)lenPattern; int x = Math::round((barStart + barEnd) / 2.0f); // Start vertically between the preliminary vertices. int yStart = Math::round(verticeStart->getY()); int y = yStart; // Find offset of thin bar to the right as additional safeguard. int nextBarX = int(max(barStart, barEnd) + 1); for (; nextBarX < matrix->getWidth(); nextBarX++) if (!matrix->get(nextBarX - 1, y) && matrix->get(nextBarX, y)) break; nextBarX -= x; bool isEnd = false; while (!isEnd) { if (matrix->get(x, y)) { // If the thin bar to the right ended, stop as well isEnd = !matrix->get(x + nextBarX, y) && !matrix->get(x + nextBarX + 1, y); y += rowStep; if (y <= 0 || y >= (int)matrix->getHeight() - 1) { // End of barcode image reached. isEnd = true; } } else { // Look sidewise whether black bar continues? (in the case the image is skewed) if (x > 0 && matrix->get(x - 1, y)) { x--; } else if (x < (int)matrix->getWidth() - 1 && matrix->get(x + 1, y)) { x++; } else { // End of pattern regarding big bar and big gap reached. isEnd = true; if (y != yStart) { // Turn back one step, because target has been exceeded. y -= rowStep; } } } } vertices[offsetVertice + 8] = new ResultPoint((float)x, (float)y); } /** *

Finds the intersection of two lines.

* * @param vertices The reference of the vertices vector * @param idxResult Index of result point inside the vertices vector. * @param idxLineA1 * @param idxLineA2 Indices two points inside the vertices vector that define the first line. * @param idxLineB1 * @param idxLineB2 Indices two points inside the vertices vector that define the second line. * @param matrix: bit matrix, here only for testing whether the result is inside the matrix. * @return Returns true when the result is valid and lies inside the matrix. Otherwise throws an * exception. **/ void Detector::findCrossingPoint(ArrayRef< Ref >& vertices, int idxResult, int idxLineA1, int idxLineA2, int idxLineB1, int idxLineB2, Ref& matrix) { Point p1(vertices[idxLineA1]->getX(), vertices[idxLineA1]->getY()); Point p2(vertices[idxLineA2]->getX(), vertices[idxLineA2]->getY()); Point p3(vertices[idxLineB1]->getX(), vertices[idxLineB1]->getY()); Point p4(vertices[idxLineB2]->getX(), vertices[idxLineB2]->getY()); Point result(intersection(Line(p1, p2), Line(p3, p4))); if (result.x == numeric_limits::infinity() || result.y == numeric_limits::infinity()) { throw NotFoundException("PDF:Detector: cannot find the crossing of parallel lines!"); } int x = Math::round(result.x); int y = Math::round(result.y); if (x < 0 || x >= (int)matrix->getWidth() || y < 0 || y >= (int)matrix->getHeight()) { throw NotFoundException("PDF:Detector: crossing points out of region!"); } vertices[idxResult] = Ref(new ResultPoint(result.x, result.y)); } /** * Computes the intersection between two lines. */ Point Detector::intersection(Line a, Line b) { float dxa = a.start.x - a.end.x; float dxb = b.start.x - b.end.x; float dya = a.start.y - a.end.y; float dyb = b.start.y - b.end.y; float p = a.start.x * a.end.y - a.start.y * a.end.x; float q = b.start.x * b.end.y - b.start.y * b.end.x; float denom = dxa * dyb - dya * dxb; if(abs(denom) < 1e-12) // Lines don't intersect (replaces "denom == 0") return Point(numeric_limits::infinity(), numeric_limits::infinity()); float x = (p * dxb - dxa * q) / denom; float y = (p * dyb - dya * q) / denom; return Point(x, y); } /** *

Estimates module size (pixels in a module) based on the Start and End * finder patterns.

* * @param vertices an array of vertices: * vertices[0] x, y top left barcode * vertices[1] x, y bottom left barcode * vertices[2] x, y top right barcode * vertices[3] x, y bottom right barcode * vertices[4] x, y top left codeword area * vertices[5] x, y bottom left codeword area * vertices[6] x, y top right codeword area * vertices[7] x, y bottom right codeword area * @return the module size. */ float Detector::computeModuleWidth(ArrayRef< Ref >& vertices) { float pixels1 = ResultPoint::distance(vertices[0], vertices[4]); float pixels2 = ResultPoint::distance(vertices[1], vertices[5]); float moduleWidth1 = (pixels1 + pixels2) / (17 * 2.0f); float pixels3 = ResultPoint::distance(vertices[6], vertices[2]); float pixels4 = ResultPoint::distance(vertices[7], vertices[3]); float moduleWidth2 = (pixels3 + pixels4) / (18 * 2.0f); return (moduleWidth1 + moduleWidth2) / 2.0f; } /** * Computes the dimension (number of modules in a row) of the PDF417 Code * based on vertices of the codeword area and estimated module size. * * @param topLeft of codeword area * @param topRight of codeword area * @param bottomLeft of codeword area * @param bottomRight of codeword are * @param moduleWidth estimated module size * @return the number of modules in a row. */ int Detector::computeDimension(Ref const& topLeft, Ref const& topRight, Ref const& bottomLeft, Ref const& bottomRight, float moduleWidth) { int topRowDimension = MathUtils::round(ResultPoint::distance(topLeft, topRight) / moduleWidth); int bottomRowDimension = MathUtils::round(ResultPoint::distance(bottomLeft, bottomRight) / moduleWidth); return ((((topRowDimension + bottomRowDimension) >> 1) + 8) / 17) * 17; } /** * Computes the y dimension (number of modules in a column) of the PDF417 Code * based on vertices of the codeword area and estimated module size. * * @param topLeft of codeword area * @param topRight of codeword area * @param bottomLeft of codeword area * @param bottomRight of codeword are * @param moduleWidth estimated module size * @return the number of modules in a row. */ int Detector::computeYDimension(Ref const& topLeft, Ref const& topRight, Ref const& bottomLeft, Ref const& bottomRight, float moduleWidth) { int leftColumnDimension = MathUtils::round(ResultPoint::distance(topLeft, bottomLeft) / moduleWidth); int rightColumnDimension = MathUtils::round(ResultPoint::distance(topRight, bottomRight) / moduleWidth); return (leftColumnDimension + rightColumnDimension) >> 1; } /** * Deskew and over-sample image. * * @param vertices vertices from findVertices() * @param dimension x dimension * @param yDimension y dimension * @return an over-sampled BitMatrix. */ Ref Detector::sampleLines(ArrayRef< Ref > const& vertices, int dimensionY, int dimension) { const int sampleDimensionX = dimension * 8; const int sampleDimensionY = dimensionY * 4; Ref transform( PerspectiveTransform::quadrilateralToQuadrilateral( 0.0f, 0.0f, (float)sampleDimensionX, 0.0f, 0.0f, (float)sampleDimensionY, (float)sampleDimensionX, (float)sampleDimensionY, vertices[12]->getX(), vertices[12]->getY(), vertices[14]->getX(), vertices[14]->getY(), vertices[13]->getX(), vertices[13]->getY(), vertices[15]->getX(), vertices[15]->getY())); Ref linesMatrix = GridSampler::getInstance().sampleGrid( image_->getBlackMatrix(), sampleDimensionX, sampleDimensionY, transform); return linesMatrix; } yubioath-desktop/QZXing/zxing/zxing/qrcode/000077500000000000000000000000001412677075700213245ustar00rootroot00000000000000yubioath-desktop/QZXing/zxing/zxing/qrcode/ErrorCorrectionLevel.h000066400000000000000000000030501412677075700256040ustar00rootroot00000000000000#ifndef ZXING_ERROR_CORRECTION_LEVEL_H #define ZXING_ERROR_CORRECTION_LEVEL_H /* * ErrorCorrectionLevel.h * zxing * * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include namespace zxing { namespace qrcode { class ErrorCorrectionLevel : public Counted { private: int ordinal_; int bits_; std::string name_; ErrorCorrectionLevel(int inOrdinal, int bits, char const* name); static ErrorCorrectionLevel *FOR_BITS[]; static int N_LEVELS; public: static ErrorCorrectionLevel L; static ErrorCorrectionLevel M; static ErrorCorrectionLevel Q; static ErrorCorrectionLevel H; ErrorCorrectionLevel(const ErrorCorrectionLevel& other); ErrorCorrectionLevel& operator=(const ErrorCorrectionLevel &other); int ordinal() const; int bits() const; std::string const& name() const; operator std::string const& () const; static ErrorCorrectionLevel& forBits(int bits); }; } } #endif // ZXING_ERROR_CORRECTION_LEVEL_H yubioath-desktop/QZXing/zxing/zxing/qrcode/FormatInformation.h000066400000000000000000000033021412677075700251310ustar00rootroot00000000000000#ifndef ZXING_FORMAT_INFORMATION_H #define ZXING_FORMAT_INFORMATION_H /* * FormatInformation.h * zxing * * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include namespace zxing { namespace qrcode { class FormatInformation : public Counted { private: static int FORMAT_INFO_MASK_QR; static int FORMAT_INFO_DECODE_LOOKUP[][2]; static int N_FORMAT_INFO_DECODE_LOOKUPS; static int BITS_SET_IN_HALF_BYTE[]; ErrorCorrectionLevel &errorCorrectionLevel_; char dataMask_; FormatInformation(int formatInfo); public: static int numBitsDiffering(int a, int b); static Ref decodeFormatInformation(int maskedFormatInfo1, int maskedFormatInfo2); static Ref doDecodeFormatInformation(int maskedFormatInfo1, int maskedFormatInfo2); ErrorCorrectionLevel &getErrorCorrectionLevel(); char getDataMask(); friend bool operator==(const FormatInformation &a, const FormatInformation &b); friend std::ostream& operator<<(std::ostream& out, const FormatInformation& fi); }; } } #endif // ZXING_FORMAT_INFORMATION_H yubioath-desktop/QZXing/zxing/zxing/qrcode/QRCodeReader.cpp000066400000000000000000000034611412677075700242740ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- /* * QRCodeReader.cpp * zxing * * Created by Christian Brunschen on 20/05/2008. * Copyright 2008 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include namespace zxing { namespace qrcode { using namespace std; QRCodeReader::QRCodeReader() :decoder_() { } //TODO : see if any of the other files in the qrcode tree need tryHarder Ref QRCodeReader::decode(Ref image, DecodeHints hints) { Detector detector(image->getBlackMatrix()); Ref detectorResult(detector.detect(hints)); ArrayRef< Ref > points (detectorResult->getPoints()); Ref decoderResult(decoder_.decode(detectorResult->getBits())); Ref result( new Result(decoderResult->getText(), decoderResult->getRawBytes(), points, BarcodeFormat::QR_CODE, decoderResult->charSet())); return result; } QRCodeReader::~QRCodeReader() { } Decoder& QRCodeReader::getDecoder() { return decoder_; } } } yubioath-desktop/QZXing/zxing/zxing/qrcode/QRCodeReader.h000066400000000000000000000022641412677075700237410ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- #ifndef ZXING_QR_CODE_READER_H #define ZXING_QR_CODE_READER_H /* * QRCodeReader.h * zxing * * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include namespace zxing { namespace qrcode { class QRCodeReader : public Reader { private: Decoder decoder_; protected: Decoder& getDecoder(); public: QRCodeReader(); virtual ~QRCodeReader(); Ref decode(Ref image, DecodeHints hints); }; } } #endif // ZXING_QR_CODE_READER_H yubioath-desktop/QZXing/zxing/zxing/qrcode/QRErrorCorrectionLevel.cpp000066400000000000000000000044201412677075700264040ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- /* * ErrorCorrectionLevel.cpp * zxing * * Created by Christian Brunschen on 15/05/2008. * Copyright 2008-2011 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include using std::string; namespace zxing { namespace qrcode { ErrorCorrectionLevel::ErrorCorrectionLevel(int inOrdinal, int bits, char const* name) : ordinal_(inOrdinal), bits_(bits), name_(name) {} ErrorCorrectionLevel::ErrorCorrectionLevel(const ErrorCorrectionLevel &other) : ordinal_(other.ordinal()), bits_(other.bits()), name_(other.name()) {} int ErrorCorrectionLevel::ordinal() const { return ordinal_; } int ErrorCorrectionLevel::bits() const { return bits_; } string const& ErrorCorrectionLevel::name() const { return name_; } ErrorCorrectionLevel::operator string const& () const { return name_; } ErrorCorrectionLevel& ErrorCorrectionLevel::operator=(const ErrorCorrectionLevel &other) { ordinal_ = other.ordinal(); bits_ = other.bits(); name_ = other.name(); return *this; } ErrorCorrectionLevel& ErrorCorrectionLevel::forBits(int bits) { if (bits < 0 || bits >= N_LEVELS) { throw ReaderException("Ellegal error correction level bits"); } return *FOR_BITS[bits]; } ErrorCorrectionLevel ErrorCorrectionLevel::L(0, 0x01, "L"); ErrorCorrectionLevel ErrorCorrectionLevel::M(1, 0x00, "M"); ErrorCorrectionLevel ErrorCorrectionLevel::Q(2, 0x03, "Q"); ErrorCorrectionLevel ErrorCorrectionLevel::H(3, 0x02, "H"); ErrorCorrectionLevel *ErrorCorrectionLevel::FOR_BITS[] = { &M, &L, &H, &Q }; int ErrorCorrectionLevel::N_LEVELS = 4; } } yubioath-desktop/QZXing/zxing/zxing/qrcode/QRFormatInformation.cpp000066400000000000000000000111671412677075700257370ustar00rootroot00000000000000/* * FormatInformation.cpp * zxing * * Created by Christian Brunschen on 18/05/2008. * Copyright 2008 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include namespace zxing { namespace qrcode { using namespace std; int FormatInformation::FORMAT_INFO_MASK_QR = 0x5412; int FormatInformation::FORMAT_INFO_DECODE_LOOKUP[][2] = { { 0x5412, 0x00 }, { 0x5125, 0x01 }, { 0x5E7C, 0x02 }, { 0x5B4B, 0x03 }, { 0x45F9, 0x04 }, { 0x40CE, 0x05 }, { 0x4F97, 0x06 }, { 0x4AA0, 0x07 }, { 0x77C4, 0x08 }, { 0x72F3, 0x09 }, { 0x7DAA, 0x0A }, { 0x789D, 0x0B }, { 0x662F, 0x0C }, { 0x6318, 0x0D }, { 0x6C41, 0x0E }, { 0x6976, 0x0F }, { 0x1689, 0x10 }, { 0x13BE, 0x11 }, { 0x1CE7, 0x12 }, { 0x19D0, 0x13 }, { 0x0762, 0x14 }, { 0x0255, 0x15 }, { 0x0D0C, 0x16 }, { 0x083B, 0x17 }, { 0x355F, 0x18 }, { 0x3068, 0x19 }, { 0x3F31, 0x1A }, { 0x3A06, 0x1B }, { 0x24B4, 0x1C }, { 0x2183, 0x1D }, { 0x2EDA, 0x1E }, { 0x2BED, 0x1F }, }; int FormatInformation::N_FORMAT_INFO_DECODE_LOOKUPS = 32; int FormatInformation::BITS_SET_IN_HALF_BYTE[] = { 0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4 }; FormatInformation::FormatInformation(int formatInfo) : errorCorrectionLevel_(ErrorCorrectionLevel::forBits((formatInfo >> 3) & 0x03)), dataMask_((zxing::byte)(formatInfo & 0x07)) { } ErrorCorrectionLevel& FormatInformation::getErrorCorrectionLevel() { return errorCorrectionLevel_; } char FormatInformation::getDataMask() { return dataMask_; } int FormatInformation::numBitsDiffering(int a, int b) { a ^= b; return BITS_SET_IN_HALF_BYTE[a & 0x0F] + BITS_SET_IN_HALF_BYTE[(a >> 4 & 0x0F)] + BITS_SET_IN_HALF_BYTE[(a >> 8 & 0x0F)] + BITS_SET_IN_HALF_BYTE[(a >> 12 & 0x0F)] + BITS_SET_IN_HALF_BYTE[(a >> 16 & 0x0F)] + BITS_SET_IN_HALF_BYTE[(a >> 20 & 0x0F)] + BITS_SET_IN_HALF_BYTE[(a >> 24 & 0x0F)] + BITS_SET_IN_HALF_BYTE[(a >> 28 & 0x0F)]; } Ref FormatInformation::decodeFormatInformation(int maskedFormatInfo1, int maskedFormatInfo2) { Ref result(doDecodeFormatInformation(maskedFormatInfo1, maskedFormatInfo2)); if (result != 0) { return result; } // Should return null, but, some QR codes apparently // do not mask this info. Try again by actually masking the pattern // first return doDecodeFormatInformation(maskedFormatInfo1 ^ FORMAT_INFO_MASK_QR, maskedFormatInfo2 ^ FORMAT_INFO_MASK_QR); } Ref FormatInformation::doDecodeFormatInformation(int maskedFormatInfo1, int maskedFormatInfo2) { // Find the int in FORMAT_INFO_DECODE_LOOKUP with fewest bits differing int bestDifference = numeric_limits::max(); int bestFormatInfo = 0; for (int i = 0; i < N_FORMAT_INFO_DECODE_LOOKUPS; i++) { int* decodeInfo = FORMAT_INFO_DECODE_LOOKUP[i]; int targetInfo = decodeInfo[0]; if (targetInfo == maskedFormatInfo1 || targetInfo == maskedFormatInfo2) { // Found an exact match Ref result(new FormatInformation(decodeInfo[1])); return result; } int bitsDifference = numBitsDiffering(maskedFormatInfo1, targetInfo); if (bitsDifference < bestDifference) { bestFormatInfo = decodeInfo[1]; bestDifference = bitsDifference; } if (maskedFormatInfo1 != maskedFormatInfo2) { // also try the other option bitsDifference = numBitsDiffering(maskedFormatInfo2, targetInfo); if (bitsDifference < bestDifference) { bestFormatInfo = decodeInfo[1]; bestDifference = bitsDifference; } } } if (bestDifference <= 3) { Ref result(new FormatInformation(bestFormatInfo)); return result; } Ref result; return result; } bool operator==(const FormatInformation &a, const FormatInformation &b) { return &(a.errorCorrectionLevel_) == &(b.errorCorrectionLevel_) && a.dataMask_ == b.dataMask_; } ostream& operator<<(ostream& out, const FormatInformation& fi) { const FormatInformation *fip = &fi; out << "FormatInformation @ " << fip; return out; } } } yubioath-desktop/QZXing/zxing/zxing/qrcode/QRVersion.cpp000066400000000000000000000721151412677075700237260ustar00rootroot00000000000000/* * Version.cpp * zxing * * Created by Christian Brunschen on 14/05/2008. * Copyright 2008 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include #include #include #include using std::vector; using std::numeric_limits; namespace zxing { namespace qrcode { ECB::ECB(int count, int dataCodewords) : count_(count), dataCodewords_(dataCodewords) { } int ECB::getCount() { return count_; } int ECB::getDataCodewords() { return dataCodewords_; } ECBlocks::ECBlocks(int ecCodewordsPerBloc, ECB *ecBlocks) : ecCodewordsPerBloc_(ecCodewordsPerBloc), ecBlocks_() { ecBlocks_.push_back(ecBlocks); } ECBlocks::ECBlocks(int ecCodewordsPerBloc, ECB *ecBlocks1, ECB *ecBlocks2) : ecCodewordsPerBloc_(ecCodewordsPerBloc), ecBlocks_() { ecBlocks_.push_back(ecBlocks1); ecBlocks_.push_back(ecBlocks2); } int ECBlocks::numBlocks() const { int sumSizeOfBlocks = 0; for (size_t i=0; igetCount(); return sumSizeOfBlocks; } int ECBlocks::getECCodewordsPerBloc() { return ecCodewordsPerBloc_; } int ECBlocks::getTotalECCodewords() { return ecCodewordsPerBloc_ * numBlocks();//int(ecBlocks_.size()); } std::vector& ECBlocks::getECBlocks() { return ecBlocks_; } ECBlocks::~ECBlocks() { for (size_t i = 0; i < ecBlocks_.size(); i++) { delete ecBlocks_[i]; } } unsigned int Version::VERSION_DECODE_INFO[] = { 0x07C94, 0x085BC, 0x09A99, 0x0A4D3, 0x0BBF6, 0x0C762, 0x0D847, 0x0E60D, 0x0F928, 0x10B78, 0x1145D, 0x12A17, 0x13532, 0x149A6, 0x15683, 0x168C9, 0x177EC, 0x18EC4, 0x191E1, 0x1AFAB, 0x1B08E, 0x1CC1A, 0x1D33F, 0x1ED75, 0x1F250, 0x209D5, 0x216F0, 0x228BA, 0x2379F, 0x24B0B, 0x2542E, 0x26A64, 0x27541, 0x28C69 }; int Version::N_VERSION_DECODE_INFOS = 34; vector> Version::VERSIONS; static int N_VERSIONS = Version::buildVersions(); int Version::getVersionNumber() const { return versionNumber_; } vector &Version::getAlignmentPatternCenters() { return alignmentPatternCenters_; } int Version::getTotalCodewords() { return totalCodewords_; } int Version::getDimensionForVersion() { return 17 + 4 * versionNumber_; } ECBlocks& Version::getECBlocksForLevel(const ErrorCorrectionLevel &ecLevel) const { return *ecBlocks_[ecLevel.ordinal()]; } Ref Version::getProvisionalVersionForDimension(int dimension) { if (dimension % 4 != 1) { throw FormatException(); } try { return Version::getVersionForNumber((dimension - 17) >> 2); } catch (IllegalArgumentException const& ignored) { (void)ignored; throw FormatException(); } } Ref Version::getVersionForNumber(int versionNumber) { if (versionNumber < 1 || versionNumber > N_VERSIONS) { throw ReaderException("versionNumber must be between 1 and 40"); } return VERSIONS[versionNumber - 1]; } Version::Version(int versionNumber, vector *alignmentPatternCenters, ECBlocks *ecBlocks1, ECBlocks *ecBlocks2, ECBlocks *ecBlocks3, ECBlocks *ecBlocks4) : versionNumber_(versionNumber), alignmentPatternCenters_(*alignmentPatternCenters), ecBlocks_(4), totalCodewords_(0) { ecBlocks_[0] = ecBlocks1; ecBlocks_[1] = ecBlocks2; ecBlocks_[2] = ecBlocks3; ecBlocks_[3] = ecBlocks4; int total = 0; int ecCodewords = ecBlocks1->getECCodewordsPerBloc(); vector &ecbArray = ecBlocks1->getECBlocks(); for (size_t i = 0; i < ecbArray.size(); i++) { ECB *ecBlock = ecbArray[i]; total += ecBlock->getCount() * (ecBlock->getDataCodewords() + ecCodewords); } totalCodewords_ = total; } Version::~Version() { delete &alignmentPatternCenters_; for (size_t i = 0; i < ecBlocks_.size(); i++) { delete ecBlocks_[i]; } } Ref Version::decodeVersionInformation(unsigned int versionBits) { int bestDifference = numeric_limits::max(); size_t bestVersion = 0; for (int i = 0; i < N_VERSION_DECODE_INFOS; i++) { unsigned targetVersion = VERSION_DECODE_INFO[i]; // Do the version info bits match exactly? done. if (targetVersion == versionBits) { return getVersionForNumber(i + 7); } // Otherwise see if this is the closest to a real version info bit // string we have seen so far int bitsDifference = FormatInformation::numBitsDiffering(versionBits, targetVersion); if (bitsDifference < bestDifference) { bestVersion = i + 7; bestDifference = bitsDifference; } } // We can tolerate up to 3 bits of error since no two version info codewords will // differ in less than 4 bits. if (bestDifference <= 3) { return getVersionForNumber(int(bestVersion)); } // If we didn't find a close enough match, fail return Ref(); } Ref Version::buildFunctionPattern() { int dimension = getDimensionForVersion(); Ref functionPattern(new BitMatrix(dimension)); // Top left finder pattern + separator + format functionPattern->setRegion(0, 0, 9, 9); // Top right finder pattern + separator + format functionPattern->setRegion(dimension - 8, 0, 8, 9); // Bottom left finder pattern + separator + format functionPattern->setRegion(0, dimension - 8, 9, 8); // Alignment patterns size_t max = alignmentPatternCenters_.size(); for (size_t x = 0; x < max; x++) { int i = alignmentPatternCenters_[x] - 2; for (size_t y = 0; y < max; y++) { if ((x == 0 && (y == 0 || y == max - 1)) || (x == max - 1 && y == 0)) { // No alignment patterns near the three finder patterns continue; } functionPattern->setRegion(alignmentPatternCenters_[y] - 2, i, 5, 5); } } // Vertical timing pattern functionPattern->setRegion(6, 9, 1, dimension - 17); // Horizontal timing pattern functionPattern->setRegion(9, 6, dimension - 17, 1); if (versionNumber_ > 6) { // Version info, top right functionPattern->setRegion(dimension - 11, 0, 3, 6); // Version info, bottom left functionPattern->setRegion(0, dimension - 11, 6, 3); } return functionPattern; } static vector *intArray(size_t n...) { va_list ap; va_start(ap, n); vector *result = new vector(n); for (size_t i = 0; i < n; i++) { (*result)[i] = va_arg(ap, int); } va_end(ap); return result; } int Version::buildVersions() { VERSIONS.push_back(Ref( new Version(1, intArray(0), new ECBlocks(7, new ECB(1, 19)), new ECBlocks(10, new ECB(1, 16)), new ECBlocks(13, new ECB(1, 13)), new ECBlocks(17, new ECB(1, 9))))); VERSIONS.push_back(Ref( new Version(2, intArray(2, 6, 18), new ECBlocks(10, new ECB(1, 34)), new ECBlocks(16, new ECB(1, 28)), new ECBlocks(22, new ECB(1, 22)), new ECBlocks(28, new ECB(1, 16))))); VERSIONS.push_back(Ref( new Version(3, intArray(2, 6, 22), new ECBlocks(15, new ECB(1, 55)), new ECBlocks(26, new ECB(1, 44)), new ECBlocks(18, new ECB(2, 17)), new ECBlocks(22, new ECB(2, 13))))); VERSIONS.push_back(Ref( new Version(4, intArray(2, 6, 26), new ECBlocks(20, new ECB(1, 80)), new ECBlocks(18, new ECB(2, 32)), new ECBlocks(26, new ECB(2, 24)), new ECBlocks(16, new ECB(4, 9))))); VERSIONS.push_back(Ref( new Version(5, intArray(2, 6, 30), new ECBlocks(26, new ECB(1, 108)), new ECBlocks(24, new ECB(2, 43)), new ECBlocks(18, new ECB(2, 15), new ECB(2, 16)), new ECBlocks(22, new ECB(2, 11), new ECB(2, 12))))); VERSIONS.push_back(Ref( new Version(6, intArray(2, 6, 34), new ECBlocks(18, new ECB(2, 68)), new ECBlocks(16, new ECB(4, 27)), new ECBlocks(24, new ECB(4, 19)), new ECBlocks(28, new ECB(4, 15))))); VERSIONS.push_back(Ref( new Version(7, intArray(3, 6, 22, 38), new ECBlocks(20, new ECB(2, 78)), new ECBlocks(18, new ECB(4, 31)), new ECBlocks(18, new ECB(2, 14), new ECB(4, 15)), new ECBlocks(26, new ECB(4, 13), new ECB(1, 14))))); VERSIONS.push_back(Ref( new Version(8, intArray(3, 6, 24, 42), new ECBlocks(24, new ECB(2, 97)), new ECBlocks(22, new ECB(2, 38), new ECB(2, 39)), new ECBlocks(22, new ECB(4, 18), new ECB(2, 19)), new ECBlocks(26, new ECB(4, 14), new ECB(2, 15))))); VERSIONS.push_back(Ref( new Version(9, intArray(3, 6, 26, 46), new ECBlocks(30, new ECB(2, 116)), new ECBlocks(22, new ECB(3, 36), new ECB(2, 37)), new ECBlocks(20, new ECB(4, 16), new ECB(4, 17)), new ECBlocks(24, new ECB(4, 12), new ECB(4, 13))))); VERSIONS.push_back(Ref( new Version(10, intArray(3, 6, 28, 50), new ECBlocks(18, new ECB(2, 68), new ECB(2, 69)), new ECBlocks(26, new ECB(4, 43), new ECB(1, 44)), new ECBlocks(24, new ECB(6, 19), new ECB(2, 20)), new ECBlocks(28, new ECB(6, 15), new ECB(2, 16))))); VERSIONS.push_back(Ref( new Version(11, intArray(3, 6, 30, 54), new ECBlocks(20, new ECB(4, 81)), new ECBlocks(30, new ECB(1, 50), new ECB(4, 51)), new ECBlocks(28, new ECB(4, 22), new ECB(4, 23)), new ECBlocks(24, new ECB(3, 12), new ECB(8, 13))))); VERSIONS.push_back(Ref( new Version(12, intArray(3, 6, 32, 58), new ECBlocks(24, new ECB(2, 92), new ECB(2, 93)), new ECBlocks(22, new ECB(6, 36), new ECB(2, 37)), new ECBlocks(26, new ECB(4, 20), new ECB(6, 21)), new ECBlocks(28, new ECB(7, 14), new ECB(4, 15))))); VERSIONS.push_back(Ref( new Version(13, intArray(3, 6, 34, 62), new ECBlocks(26, new ECB(4, 107)), new ECBlocks(22, new ECB(8, 37), new ECB(1, 38)), new ECBlocks(24, new ECB(8, 20), new ECB(4, 21)), new ECBlocks(22, new ECB(12, 11), new ECB(4, 12))))); VERSIONS.push_back(Ref( new Version(14, intArray(4, 6, 26, 46, 66), new ECBlocks(30, new ECB(3, 115), new ECB(1, 116)), new ECBlocks(24, new ECB(4, 40), new ECB(5, 41)), new ECBlocks(20, new ECB(11, 16), new ECB(5, 17)), new ECBlocks(24, new ECB(11, 12), new ECB(5, 13))))); VERSIONS.push_back(Ref( new Version(15, intArray(4, 6, 26, 48, 70), new ECBlocks(22, new ECB(5, 87), new ECB(1, 88)), new ECBlocks(24, new ECB(5, 41), new ECB(5, 42)), new ECBlocks(30, new ECB(5, 24), new ECB(7, 25)), new ECBlocks(24, new ECB(11, 12), new ECB(7, 13))))); VERSIONS.push_back(Ref( new Version(16, intArray(4, 6, 26, 50, 74), new ECBlocks(24, new ECB(5, 98), new ECB(1, 99)), new ECBlocks(28, new ECB(7, 45), new ECB(3, 46)), new ECBlocks(24, new ECB(15, 19), new ECB(2, 20)), new ECBlocks(30, new ECB(3, 15), new ECB(13, 16))))); VERSIONS.push_back(Ref( new Version(17, intArray(4, 6, 30, 54, 78), new ECBlocks(28, new ECB(1, 107), new ECB(5, 108)), new ECBlocks(28, new ECB(10, 46), new ECB(1, 47)), new ECBlocks(28, new ECB(1, 22), new ECB(15, 23)), new ECBlocks(28, new ECB(2, 14), new ECB(17, 15))))); VERSIONS.push_back(Ref( new Version(18, intArray(4, 6, 30, 56, 82), new ECBlocks(30, new ECB(5, 120), new ECB(1, 121)), new ECBlocks(26, new ECB(9, 43), new ECB(4, 44)), new ECBlocks(28, new ECB(17, 22), new ECB(1, 23)), new ECBlocks(28, new ECB(2, 14), new ECB(19, 15))))); VERSIONS.push_back(Ref( new Version(19, intArray(4, 6, 30, 58, 86), new ECBlocks(28, new ECB(3, 113), new ECB(4, 114)), new ECBlocks(26, new ECB(3, 44), new ECB(11, 45)), new ECBlocks(26, new ECB(17, 21), new ECB(4, 22)), new ECBlocks(26, new ECB(9, 13), new ECB(16, 14))))); VERSIONS.push_back(Ref( new Version(20, intArray(4, 6, 34, 62, 90), new ECBlocks(28, new ECB(3, 107), new ECB(5, 108)), new ECBlocks(26, new ECB(3, 41), new ECB(13, 42)), new ECBlocks(30, new ECB(15, 24), new ECB(5, 25)), new ECBlocks(28, new ECB(15, 15), new ECB(10, 16))))); VERSIONS.push_back(Ref( new Version(21, intArray(5, 6, 28, 50, 72, 94), new ECBlocks(28, new ECB(4, 116), new ECB(4, 117)), new ECBlocks(26, new ECB(17, 42)), new ECBlocks(28, new ECB(17, 22), new ECB(6, 23)), new ECBlocks(30, new ECB(19, 16), new ECB(6, 17))))); VERSIONS.push_back(Ref( new Version(22, intArray(5, 6, 26, 50, 74, 98), new ECBlocks(28, new ECB(2, 111), new ECB(7, 112)), new ECBlocks(28, new ECB(17, 46)), new ECBlocks(30, new ECB(7, 24), new ECB(16, 25)), new ECBlocks(24, new ECB(34, 13))))); VERSIONS.push_back(Ref( new Version(23, intArray(5, 6, 30, 54, 78, 102), new ECBlocks(30, new ECB(4, 121), new ECB(5, 122)), new ECBlocks(28, new ECB(4, 47), new ECB(14, 48)), new ECBlocks(30, new ECB(11, 24), new ECB(14, 25)), new ECBlocks(30, new ECB(16, 15), new ECB(14, 16))))); VERSIONS.push_back(Ref( new Version(24, intArray(5, 6, 28, 54, 80, 106), new ECBlocks(30, new ECB(6, 117), new ECB(4, 118)), new ECBlocks(28, new ECB(6, 45), new ECB(14, 46)), new ECBlocks(30, new ECB(11, 24), new ECB(16, 25)), new ECBlocks(30, new ECB(30, 16), new ECB(2, 17))))); VERSIONS.push_back(Ref( new Version(25, intArray(5, 6, 32, 58, 84, 110), new ECBlocks(26, new ECB(8, 106), new ECB(4, 107)), new ECBlocks(28, new ECB(8, 47), new ECB(13, 48)), new ECBlocks(30, new ECB(7, 24), new ECB(22, 25)), new ECBlocks(30, new ECB(22, 15), new ECB(13, 16))))); VERSIONS.push_back(Ref( new Version(26, intArray(5, 6, 30, 58, 86, 114), new ECBlocks(28, new ECB(10, 114), new ECB(2, 115)), new ECBlocks(28, new ECB(19, 46), new ECB(4, 47)), new ECBlocks(28, new ECB(28, 22), new ECB(6, 23)), new ECBlocks(30, new ECB(33, 16), new ECB(4, 17))))); VERSIONS.push_back(Ref( new Version(27, intArray(5, 6, 34, 62, 90, 118), new ECBlocks(30, new ECB(8, 122), new ECB(4, 123)), new ECBlocks(28, new ECB(22, 45), new ECB(3, 46)), new ECBlocks(30, new ECB(8, 23), new ECB(26, 24)), new ECBlocks(30, new ECB(12, 15), new ECB(28, 16))))); VERSIONS.push_back(Ref( new Version(28, intArray(6, 6, 26, 50, 74, 98, 122), new ECBlocks(30, new ECB(3, 117), new ECB(10, 118)), new ECBlocks(28, new ECB(3, 45), new ECB(23, 46)), new ECBlocks(30, new ECB(4, 24), new ECB(31, 25)), new ECBlocks(30, new ECB(11, 15), new ECB(31, 16))))); VERSIONS.push_back(Ref( new Version(29, intArray(6, 6, 30, 54, 78, 102, 126), new ECBlocks(30, new ECB(7, 116), new ECB(7, 117)), new ECBlocks(28, new ECB(21, 45), new ECB(7, 46)), new ECBlocks(30, new ECB(1, 23), new ECB(37, 24)), new ECBlocks(30, new ECB(19, 15), new ECB(26, 16))))); VERSIONS.push_back(Ref( new Version(30, intArray(6, 6, 26, 52, 78, 104, 130), new ECBlocks(30, new ECB(5, 115), new ECB(10, 116)), new ECBlocks(28, new ECB(19, 47), new ECB(10, 48)), new ECBlocks(30, new ECB(15, 24), new ECB(25, 25)), new ECBlocks(30, new ECB(23, 15), new ECB(25, 16))))); VERSIONS.push_back(Ref( new Version(31, intArray(6, 6, 30, 56, 82, 108, 134), new ECBlocks(30, new ECB(13, 115), new ECB(3, 116)), new ECBlocks(28, new ECB(2, 46), new ECB(29, 47)), new ECBlocks(30, new ECB(42, 24), new ECB(1, 25)), new ECBlocks(30, new ECB(23, 15), new ECB(28, 16))))); VERSIONS.push_back(Ref( new Version(32, intArray(6, 6, 34, 60, 86, 112, 138), new ECBlocks(30, new ECB(17, 115)), new ECBlocks(28, new ECB(10, 46), new ECB(23, 47)), new ECBlocks(30, new ECB(10, 24), new ECB(35, 25)), new ECBlocks(30, new ECB(19, 15), new ECB(35, 16))))); VERSIONS.push_back(Ref( new Version(33, intArray(6, 6, 30, 58, 86, 114, 142), new ECBlocks(30, new ECB(17, 115), new ECB(1, 116)), new ECBlocks(28, new ECB(14, 46), new ECB(21, 47)), new ECBlocks(30, new ECB(29, 24), new ECB(19, 25)), new ECBlocks(30, new ECB(11, 15), new ECB(46, 16))))); VERSIONS.push_back(Ref( new Version(34, intArray(6, 6, 34, 62, 90, 118, 146), new ECBlocks(30, new ECB(13, 115), new ECB(6, 116)), new ECBlocks(28, new ECB(14, 46), new ECB(23, 47)), new ECBlocks(30, new ECB(44, 24), new ECB(7, 25)), new ECBlocks(30, new ECB(59, 16), new ECB(1, 17))))); VERSIONS.push_back(Ref( new Version(35, intArray(7, 6, 30, 54, 78, 102, 126, 150), new ECBlocks(30, new ECB(12, 121), new ECB(7, 122)), new ECBlocks(28, new ECB(12, 47), new ECB(26, 48)), new ECBlocks(30, new ECB(39, 24), new ECB(14, 25)), new ECBlocks(30, new ECB(22, 15), new ECB(41, 16))))); VERSIONS.push_back(Ref( new Version(36, intArray(7, 6, 24, 50, 76, 102, 128, 154), new ECBlocks(30, new ECB(6, 121), new ECB(14, 122)), new ECBlocks(28, new ECB(6, 47), new ECB(34, 48)), new ECBlocks(30, new ECB(46, 24), new ECB(10, 25)), new ECBlocks(30, new ECB(2, 15), new ECB(64, 16))))); VERSIONS.push_back(Ref( new Version(37, intArray(7, 6, 28, 54, 80, 106, 132, 158), new ECBlocks(30, new ECB(17, 122), new ECB(4, 123)), new ECBlocks(28, new ECB(29, 46), new ECB(14, 47)), new ECBlocks(30, new ECB(49, 24), new ECB(10, 25)), new ECBlocks(30, new ECB(24, 15), new ECB(46, 16))))); VERSIONS.push_back(Ref( new Version(38, intArray(7, 6, 32, 58, 84, 110, 136, 162), new ECBlocks(30, new ECB(4, 122), new ECB(18, 123)), new ECBlocks(28, new ECB(13, 46), new ECB(32, 47)), new ECBlocks(30, new ECB(48, 24), new ECB(14, 25)), new ECBlocks(30, new ECB(42, 15), new ECB(32, 16))))); VERSIONS.push_back(Ref( new Version(39, intArray(7, 6, 26, 54, 82, 110, 138, 166), new ECBlocks(30, new ECB(20, 117), new ECB(4, 118)), new ECBlocks(28, new ECB(40, 47), new ECB(7, 48)), new ECBlocks(30, new ECB(43, 24), new ECB(22, 25)), new ECBlocks(30, new ECB(10, 15), new ECB(67, 16))))); VERSIONS.push_back(Ref( new Version(40, intArray(7, 6, 30, 58, 86, 114, 142, 170), new ECBlocks(30, new ECB(19, 118), new ECB(6, 119)), new ECBlocks(28, new ECB(18, 47), new ECB(31, 48)), new ECBlocks(30, new ECB(34, 24), new ECB(34, 25)), new ECBlocks(30, new ECB(20, 15), new ECB(61, 16))))); return int(VERSIONS.size()); } } } yubioath-desktop/QZXing/zxing/zxing/qrcode/Version.h000066400000000000000000000045721412677075700231320ustar00rootroot00000000000000#ifndef ZXING_VERSION_H #define ZXING_VERSION_H /* * Version.h * zxing * * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include #include #include namespace zxing { namespace qrcode { class ECB { private: int count_; int dataCodewords_; public: ECB(int count, int dataCodewords); int getCount(); int getDataCodewords(); }; class ECBlocks { private: int ecCodewordsPerBloc_; std::vector ecBlocks_; public: ECBlocks(int ecCodewordsPerBloc, ECB *ecBlocks); ECBlocks(int ecCodewordsPerBloc, ECB *ecBlocks1, ECB *ecBlocks2); int numBlocks() const; int getECCodewordsPerBloc(); int getTotalECCodewords(); std::vector& getECBlocks(); ~ECBlocks(); }; class Version : public Counted { private: int versionNumber_; std::vector &alignmentPatternCenters_; std::vector ecBlocks_; int totalCodewords_; Version(int versionNumber, std::vector *alignmentPatternCenters, ECBlocks *ecBlocks1, ECBlocks *ecBlocks2, ECBlocks *ecBlocks3, ECBlocks *ecBlocks4); public: static unsigned int VERSION_DECODE_INFO[]; static int N_VERSION_DECODE_INFOS; static std::vector > VERSIONS; ~Version(); int getVersionNumber() const; std::vector &getAlignmentPatternCenters(); int getTotalCodewords(); int getDimensionForVersion(); ECBlocks &getECBlocksForLevel(const ErrorCorrectionLevel &ecLevel) const; static Ref getProvisionalVersionForDimension(int dimension); static Ref getVersionForNumber(int versionNumber); static Ref decodeVersionInformation(unsigned int versionBits); Ref buildFunctionPattern(); static int buildVersions(); }; } } #endif // ZXING_VERSION_H yubioath-desktop/QZXing/zxing/zxing/qrcode/decoder/000077500000000000000000000000001412677075700227315ustar00rootroot00000000000000yubioath-desktop/QZXing/zxing/zxing/qrcode/decoder/BitMatrixParser.h000066400000000000000000000030631412677075700261640ustar00rootroot00000000000000#ifndef ZXING_MATRIX_PARSER_H #define ZXING_MATRIX_PARSER_H /* * BitMatrixParser.h * zxing * * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include #include #include #include namespace zxing { namespace qrcode { class BitMatrixParser : public Counted { private: Ref bitMatrix_; RefparsedVersion_; Ref parsedFormatInfo_; bool mirror_; int copyBit(size_t x, size_t y, int versionBits); public: BitMatrixParser(Ref bitMatrix); Ref readFormatInformation(); RefreadVersion(); ArrayRef readCodewords(); void remask(); void setMirror(boolean mirror); void mirror(); private: BitMatrixParser(const BitMatrixParser&); BitMatrixParser& operator =(const BitMatrixParser&); }; } } #endif // ZXING_MATRIX_PARSER_H yubioath-desktop/QZXing/zxing/zxing/qrcode/decoder/DataBlock.h000066400000000000000000000024771412677075700247400ustar00rootroot00000000000000#ifndef ZXING_DATA_BLOCK_H #define ZXING_DATA_BLOCK_H /* * DataBlock.h * zxing * * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include #include #include namespace zxing { namespace qrcode { class DataBlock : public Counted { private: int numDataCodewords_; ArrayRef codewords_; DataBlock(int numDataCodewords, ArrayRef codewords); public: static std::vector > getDataBlocks(ArrayRef rawCodewords, Refversion, ErrorCorrectionLevel &ecLevel); int getNumDataCodewords(); ArrayRef getCodewords(); }; } } #endif // ZXING_DATA_BLOCK_H yubioath-desktop/QZXing/zxing/zxing/qrcode/decoder/DataMask.h000066400000000000000000000023261412677075700245720ustar00rootroot00000000000000#ifndef ZXING_DATA_MASK_H #define ZXING_DATA_MASK_H /* * DataMask.h * zxing * * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include #include namespace zxing { namespace qrcode { class DataMask : public Counted { private: static std::vector > DATA_MASKS; protected: public: static int buildDataMasks(); DataMask(); virtual ~DataMask(); void unmaskBitMatrix(BitMatrix& matrix, size_t dimension); virtual bool isMasked(size_t x, size_t y) = 0; static DataMask& forReference(int reference); }; } } #endif // ZXING_DATA_MASK_H yubioath-desktop/QZXing/zxing/zxing/qrcode/decoder/DecodedBitStreamParser.h000066400000000000000000000052121412677075700274210ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- #ifndef ZXING_DECODED_BIT_STREAM_PARSER_H #define ZXING_DECODED_BIT_STREAM_PARSER_H /* * DecodedBitStreamParser.h * zxing * * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include #include #include #include #include #include #include #include namespace zxing { namespace qrcode { class DecodedBitStreamParser { public: typedef std::map Hashtable; private: static char const ALPHANUMERIC_CHARS[]; static char toAlphaNumericChar(size_t value); static void decodeHanziSegment(Ref bits, std::string &result, int count); static void decodeKanjiSegment(Ref bits, std::string &result, int count); static void decodeByteSegment(Ref bits, std::string &result, int count); static std::string decodeByteSegment(Ref bits_, std::string& result, int count, common::CharacterSetECI const *currentCharacterSetECI, ArrayRef > &byteSegments, Hashtable const& hints); static void decodeAlphanumericSegment(Ref bits, std::string &result, int count, bool fc1InEffect); static void decodeNumericSegment(Ref bits, std::string &result, int count); static void append(std::string &ost, const zxing::byte *bufIn, size_t nIn, const char *src); static void append(std::string &ost, std::string const& in, const char *src); public: static Ref decode(ArrayRef bytes, Refversion, ErrorCorrectionLevel const& ecLevel, Hashtable const& hints); }; } } #endif // ZXING_DECODED_BIT_STREAM_PARSER_H yubioath-desktop/QZXing/zxing/zxing/qrcode/decoder/Decoder.h000066400000000000000000000022261412677075700244510ustar00rootroot00000000000000#ifndef ZXING_DECODER_H #define ZXING_DECODER_H /* * Decoder.h * zxing * * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include #include #include namespace zxing { namespace qrcode { class Decoder { private: ReedSolomonDecoder rsDecoder_; void correctErrors(ArrayRef bytes, int numDataCodewords); public: Decoder(); Ref decode(Ref bits); }; } } #endif // ZXING_DECODER_H yubioath-desktop/QZXing/zxing/zxing/qrcode/decoder/Mode.h000066400000000000000000000034421412677075700237710ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- #ifndef ZXING_MODE_H #define ZXING_MODE_H /* * Mode.h * zxing * * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include namespace zxing { namespace qrcode { class Mode : public Counted { private: int characterCountBitsForVersions0To9_; int characterCountBitsForVersions10To26_; int characterCountBitsForVersions27AndHigher_; int bits_; std::string name_; Mode(int cbv0_9, int cbv10_26, int cbv27, int bits, const std::string &name); public: Mode(const Mode& mode); Mode(); static Mode TERMINATOR; static Mode NUMERIC; static Mode ALPHANUMERIC; static Mode STRUCTURED_APPEND; static Mode BYTE; static Mode ECI; static Mode KANJI; static Mode FNC1_FIRST_POSITION; static Mode FNC1_SECOND_POSITION; static Mode HANZI; static Mode& forBits(int bits); int getCharacterCountBits(Ref version) const; int getBits() const { return bits_; } Mode& operator=(const Mode& other); bool operator==(const Mode& other); bool operator!=(const Mode& other); std::string getName() const { if(name_ == "") return "null"; else return name_; } }; } } #endif // __MODE_H__ yubioath-desktop/QZXing/zxing/zxing/qrcode/decoder/QRBitMatrixParser.cpp000066400000000000000000000147001412677075700267620ustar00rootroot00000000000000/* * BitMatrixParser.cpp * zxing * * Created by Christian Brunschen on 20/05/2008. * Copyright 2008 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include namespace zxing { namespace qrcode { int BitMatrixParser::copyBit(size_t x, size_t y, int versionBits) { return bitMatrix_->get(int(x), int(y)) ? (versionBits << 1) | 0x1 : versionBits << 1; } BitMatrixParser::BitMatrixParser(Ref bitMatrix) : bitMatrix_(bitMatrix), parsedVersion_(0), parsedFormatInfo_() { size_t dimension = bitMatrix->getHeight(); if ((dimension < 21) || (dimension & 0x03) != 1) { throw ReaderException("Dimension must be 1 mod 4 and >= 21"); } } Ref BitMatrixParser::readFormatInformation() { if (parsedFormatInfo_ != 0) { return parsedFormatInfo_; } // Read top-left format info bits int formatInfoBits1 = 0; for (int i = 0; i < 6; i++) { formatInfoBits1 = copyBit(i, 8, formatInfoBits1); } // .. and skip a bit in the timing pattern ... formatInfoBits1 = copyBit(7, 8, formatInfoBits1); formatInfoBits1 = copyBit(8, 8, formatInfoBits1); formatInfoBits1 = copyBit(8, 7, formatInfoBits1); // .. and skip a bit in the timing pattern ... for (int j = 5; j >= 0; j--) { formatInfoBits1 = copyBit(8, j, formatInfoBits1); } // Read the top-right/bottom-left pattern int dimension = bitMatrix_->getHeight(); int formatInfoBits2 = 0; int jMin = dimension - 7; for (int j = dimension - 1; j >= jMin; j--) { formatInfoBits2 = copyBit(8, j, formatInfoBits2); } for (int i = dimension - 8; i < dimension; i++) { formatInfoBits2 = copyBit(i, 8, formatInfoBits2); } parsedFormatInfo_ = FormatInformation::decodeFormatInformation(formatInfoBits1,formatInfoBits2); if (parsedFormatInfo_ != 0) { return parsedFormatInfo_; } throw ReaderException("Could not decode format information"); } RefBitMatrixParser::readVersion() { if (parsedVersion_ != 0) { return parsedVersion_; } int dimension = bitMatrix_->getHeight(); int provisionalVersion = (dimension - 17) >> 2; if (provisionalVersion <= 6) { return Version::getVersionForNumber(provisionalVersion); } // Read top-right version info: 3 wide by 6 tall int versionBits = 0; for (int y = 5; y >= 0; y--) { int xMin = dimension - 11; for (int x = dimension - 9; x >= xMin; x--) { versionBits = copyBit(x, y, versionBits); } } parsedVersion_ = Version::decodeVersionInformation(versionBits); if (parsedVersion_ != 0 && parsedVersion_->getDimensionForVersion() == dimension) { return parsedVersion_; } // Hmm, failed. Try bottom left: 6 wide by 3 tall versionBits = 0; for (int x = 5; x >= 0; x--) { int yMin = dimension - 11; for (int y = dimension - 9; y >= yMin; y--) { versionBits = copyBit(x, y, versionBits); } } parsedVersion_ = Version::decodeVersionInformation(versionBits); if (parsedVersion_ != 0 && parsedVersion_->getDimensionForVersion() == dimension) { return parsedVersion_; } throw ReaderException("Could not decode version"); } ArrayRef BitMatrixParser::readCodewords() { Ref formatInfo = readFormatInformation(); Refversion = readVersion(); // Get the data mask for the format used in this QR Code. This will exclude // some bits from reading as we wind through the bit matrix. DataMask &dataMask = DataMask::forReference((int)formatInfo->getDataMask()); // cout << (int)formatInfo->getDataMask() << endl; int dimension = bitMatrix_->getHeight(); dataMask.unmaskBitMatrix(*bitMatrix_, dimension); // cerr << *bitMatrix_ << endl; // cerr << version->getTotalCodewords() << endl; Ref functionPattern = version->buildFunctionPattern(); // cout << *functionPattern << endl; bool readingUp = true; ArrayRef result(version->getTotalCodewords()); int resultOffset = 0; int currentByte = 0; int bitsRead = 0; // Read columns in pairs, from right to left for (int x = dimension - 1; x > 0; x -= 2) { if (x == 6) { // Skip whole column with vertical alignment pattern; // saves time and makes the other code proceed more cleanly x--; } // Read alternatingly from bottom to top then top to bottom for (int counter = 0; counter < dimension; counter++) { int y = readingUp ? dimension - 1 - counter : counter; for (int col = 0; col < 2; col++) { // Ignore bits covered by the function pattern if (!functionPattern->get(x - col, y)) { // Read a bit bitsRead++; currentByte <<= 1; if (bitMatrix_->get(x - col, y)) { currentByte |= 1; } // If we've made a whole byte, save it off if (bitsRead == 8) { result[resultOffset++] = (zxing::byte)currentByte; bitsRead = 0; currentByte = 0; } } } } readingUp = !readingUp; // switch directions } if (resultOffset != version->getTotalCodewords()) { throw ReaderException("Did not read all codewords"); } return result; } void BitMatrixParser::remask() { if (parsedFormatInfo_ == 0) { return; // We have no format information, and have no data mask } DataMask &dataMask = DataMask::forReference((int)parsedFormatInfo_->getDataMask()); int dimension = bitMatrix_->getHeight(); dataMask.unmaskBitMatrix(*bitMatrix_, dimension); } void BitMatrixParser::setMirror(boolean mirror) { parsedVersion_ = 0; parsedFormatInfo_ = 0; mirror_ = mirror; } void BitMatrixParser::mirror() { for (int x = 0; x < bitMatrix_->getWidth(); x++) { for (int y = x + 1; y < bitMatrix_->getHeight(); y++) { if (bitMatrix_->get(x, y) != bitMatrix_->get(y, x)) { bitMatrix_->flip(y, x); bitMatrix_->flip(x, y); } } } } } } yubioath-desktop/QZXing/zxing/zxing/qrcode/decoder/QRDataBlock.cpp000066400000000000000000000077001412677075700255300ustar00rootroot00000000000000/* * DataBlock.cpp * zxing * * Created by Christian Brunschen on 19/05/2008. * Copyright 2008 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include namespace zxing { namespace qrcode { using namespace std; DataBlock::DataBlock(int numDataCodewords, ArrayRef codewords) : numDataCodewords_(numDataCodewords), codewords_(codewords) { } int DataBlock::getNumDataCodewords() { return numDataCodewords_; } ArrayRef DataBlock::getCodewords() { return codewords_; } std::vector > DataBlock::getDataBlocks(ArrayRef rawCodewords, Refversion, ErrorCorrectionLevel &ecLevel) { // Figure out the number and size of data blocks used by this version and // error correction level ECBlocks &ecBlocks = version->getECBlocksForLevel(ecLevel); // First count the total number of data blocks int totalBlocks = ecBlocks.numBlocks(); vector ecBlockArray = ecBlocks.getECBlocks(); // Now establish DataBlocks of the appropriate size and number of data codewords std::vector > result(totalBlocks); int numResultBlocks = 0; for (size_t j = 0; j < ecBlockArray.size(); j++) { ECB *ecBlock = ecBlockArray[j]; for (int i = 0; i < ecBlock->getCount(); i++) { int numDataCodewords = ecBlock->getDataCodewords(); int numBlockCodewords = ecBlocks.getECCodewordsPerBloc() + numDataCodewords; ArrayRef buffer(numBlockCodewords); Ref blockRef(new DataBlock(numDataCodewords, buffer)); result[numResultBlocks++] = blockRef; } } // All blocks have the same amount of data, except that the last n // (where n may be 0) have 1 more byte. Figure out where these start. int shorterBlocksTotalCodewords = result[0]->codewords_->size(); int longerBlocksStartAt = int(result.size()) - 1; while (longerBlocksStartAt >= 0) { int numCodewords = result[longerBlocksStartAt]->codewords_->size(); if (numCodewords == shorterBlocksTotalCodewords) { break; } if (numCodewords != shorterBlocksTotalCodewords + 1) { throw IllegalArgumentException("Data block sizes differ by more than 1"); } longerBlocksStartAt--; } longerBlocksStartAt++; int shorterBlocksNumDataCodewords = shorterBlocksTotalCodewords - ecBlocks.getECCodewordsPerBloc(); // The last elements of result may be 1 element longer; // first fill out as many elements as all of them have int rawCodewordsOffset = 0; for (int i = 0; i < shorterBlocksNumDataCodewords; i++) { for (int j = 0; j < numResultBlocks; j++) { result[j]->codewords_[i] = rawCodewords[rawCodewordsOffset++]; } } // Fill out the last data block in the longer ones for (int j = longerBlocksStartAt; j < numResultBlocks; j++) { result[j]->codewords_[shorterBlocksNumDataCodewords] = rawCodewords[rawCodewordsOffset++]; } // Now add in error correction blocks int max = result[0]->codewords_->size(); for (int i = shorterBlocksNumDataCodewords; i < max; i++) { for (int j = 0; j < numResultBlocks; j++) { int iOffset = j < longerBlocksStartAt ? i : i + 1; result[j]->codewords_[iOffset] = rawCodewords[rawCodewordsOffset++]; } } if (rawCodewordsOffset != rawCodewords->size()) { throw IllegalArgumentException("rawCodewordsOffset != rawCodewords.length"); } return result; } } } yubioath-desktop/QZXing/zxing/zxing/qrcode/decoder/QRDataMask.cpp000066400000000000000000000074731412677075700254000ustar00rootroot00000000000000/* * DataMask.cpp * zxing * * Created by Christian Brunschen on 19/05/2008. * Copyright 2008 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include namespace zxing { namespace qrcode { using namespace std; DataMask::DataMask() { } DataMask::~DataMask() { } vector > DataMask::DATA_MASKS; static int N_DATA_MASKS = DataMask::buildDataMasks(); DataMask &DataMask::forReference(int reference) { if (reference < 0 || reference > 7) { throw IllegalArgumentException("reference must be between 0 and 7"); } return *DATA_MASKS[reference]; } void DataMask::unmaskBitMatrix(BitMatrix& bits, size_t dimension) { for (size_t y = 0; y < dimension; y++) { for (size_t x = 0; x < dimension; x++) { // TODO: check why the coordinates have to be swapped if (isMasked(y, x)) { bits.flip(int(x), int(y)); } } } } /** * 000: mask bits for which (x + y) mod 2 == 0 */ class DataMask000 : public DataMask { public: bool isMasked(size_t x, size_t y) { // return ((x + y) & 0x01) == 0; return ((x + y) % 2) == 0; } }; /** * 001: mask bits for which x mod 2 == 0 */ class DataMask001 : public DataMask { public: bool isMasked(size_t x, size_t) { // return (x & 0x01) == 0; return (x % 2) == 0; } }; /** * 010: mask bits for which y mod 3 == 0 */ class DataMask010 : public DataMask { public: bool isMasked(size_t, size_t y) { return y % 3 == 0; } }; /** * 011: mask bits for which (x + y) mod 3 == 0 */ class DataMask011 : public DataMask { public: bool isMasked(size_t x, size_t y) { return (x + y) % 3 == 0; } }; /** * 100: mask bits for which (x/2 + y/3) mod 2 == 0 */ class DataMask100 : public DataMask { public: bool isMasked(size_t x, size_t y) { // return (((x >> 1) + (y / 3)) & 0x01) == 0; return (((x >> 1) + (y / 3)) % 2) == 0; } }; /** * 101: mask bits for which xy mod 2 + xy mod 3 == 0 */ class DataMask101 : public DataMask { public: bool isMasked(size_t x, size_t y) { size_t temp = x * y; // return (temp & 0x01) + (temp % 3) == 0; return (temp % 2) + (temp % 3) == 0; } }; /** * 110: mask bits for which (xy mod 2 + xy mod 3) mod 2 == 0 */ class DataMask110 : public DataMask { public: bool isMasked(size_t x, size_t y) { size_t temp = x * y; // return (((temp & 0x01) + (temp % 3)) & 0x01) == 0; return (((temp % 2) + (temp % 3)) % 2) == 0; } }; /** * 111: mask bits for which ((x+y)mod 2 + xy mod 3) mod 2 == 0 */ class DataMask111 : public DataMask { public: bool isMasked(size_t x, size_t y) { // return ((((x + y) & 0x01) + ((x * y) % 3)) & 0x01) == 0; return ((((x + y) % 2) + ((x * y) % 3)) % 2) == 0; } }; int DataMask::buildDataMasks() { DATA_MASKS.push_back(Ref (new DataMask000())); DATA_MASKS.push_back(Ref (new DataMask001())); DATA_MASKS.push_back(Ref (new DataMask010())); DATA_MASKS.push_back(Ref (new DataMask011())); DATA_MASKS.push_back(Ref (new DataMask100())); DATA_MASKS.push_back(Ref (new DataMask101())); DATA_MASKS.push_back(Ref (new DataMask110())); DATA_MASKS.push_back(Ref (new DataMask111())); return int(DATA_MASKS.size()); } } } yubioath-desktop/QZXing/zxing/zxing/qrcode/decoder/QRDecodedBitStreamParser.cpp000066400000000000000000000371001412677075700302200ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- /* * DecodedBitStreamParser.cpp * zxing * * Created by Christian Brunschen on 20/05/2008. * Copyright 2008 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include #include #include #ifndef NO_ICONV #include #endif // Required for compatibility. TODO : test on Symbian #ifdef ZXING_ICONV_CONST #undef ICONV_CONST #define ICONV_CONST const #endif #ifndef ICONV_CONST #define ICONV_CONST /**/ #endif #include using namespace std; using namespace zxing; using namespace zxing::qrcode; using namespace zxing::common; const char DecodedBitStreamParser::ALPHANUMERIC_CHARS[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', ' ', '$', '%', '*', '+', '-', '.', '/', ':' }; namespace {int GB2312_SUBSET = 1;} void DecodedBitStreamParser::append(std::string &result, string const& in, const char *src) { append(result, (zxing::byte const*)in.c_str(), in.length(), src); } void DecodedBitStreamParser::append(std::string &result, const zxing::byte *bufIn, size_t nIn, const char *src) { #ifndef NO_ICONV if (nIn == 0) { return; } iconv_t cd = iconv_open(StringUtils::UTF8, src); if (cd == (iconv_t)-1) { result.append((const char *)bufIn, nIn); return; } const int maxOut = 4 * int(nIn) + 1; char* bufOut = new char[maxOut]; ICONV_CONST char *fromPtr = (ICONV_CONST char *)bufIn; size_t nFrom = nIn; char *toPtr = (char *)bufOut; size_t nTo = maxOut; while (nFrom > 0) { #if defined(Q_OS_SYMBIAN) size_t oneway = iconv(cd,(const char**) &fromPtr, &nFrom, &toPtr, &nTo); #else size_t oneway = iconv(cd,(char**) &fromPtr, &nFrom, &toPtr, &nTo); #endif if (oneway == (size_t)(-1)) { iconv_close(cd); delete[] bufOut; throw ReaderException("error converting characters"); } } iconv_close(cd); int nResult = maxOut - int(nTo); bufOut[nResult] = '\0'; result.append((const char *)bufOut); delete[] bufOut; #else Q_UNUSED(src); result.append((const char *)bufIn, nIn); #endif } void DecodedBitStreamParser::decodeHanziSegment(Ref bits_, string& result, int count) { BitSource& bits (*bits_); // Don't crash trying to read more bits than we have available. if (count * 13 > bits.available()) { throw FormatException(); } // Each character will require 2 bytes. Read the characters as 2-byte pairs // and decode as GB2312 afterwards size_t nBytes = 2 * count; byte* buffer = new byte[nBytes]; int offset = 0; while (count > 0) { // Each 13 bits encodes a 2-byte character int twoBytes = bits.readBits(13); int assembledTwoBytes = ((twoBytes / 0x060) << 8) | (twoBytes % 0x060); if (assembledTwoBytes < 0x003BF) { // In the 0xA1A1 to 0xAAFE range assembledTwoBytes += 0x0A1A1; } else { // In the 0xB0A1 to 0xFAFE range assembledTwoBytes += 0x0A6A1; } buffer[offset] = (zxing::byte) ((assembledTwoBytes >> 8) & 0xFF); buffer[offset + 1] = (zxing::byte) (assembledTwoBytes & 0xFF); offset += 2; count--; } try { append(result, buffer, nBytes, StringUtils::GB2312); } catch (ReaderException const& ignored) { (void)ignored; delete [] buffer; throw FormatException(); } delete [] buffer; } void DecodedBitStreamParser::decodeKanjiSegment(Ref bits, std::string &result, int count) { // Each character will require 2 bytes. Read the characters as 2-byte pairs // and decode as Shift_JIS afterwards size_t nBytes = 2 * count; byte* buffer = new byte[nBytes]; int offset = 0; while (count > 0) { // Each 13 bits encodes a 2-byte character int twoBytes = bits->readBits(13); int assembledTwoBytes = ((twoBytes / 0x0C0) << 8) | (twoBytes % 0x0C0); if (assembledTwoBytes < 0x01F00) { // In the 0x8140 to 0x9FFC range assembledTwoBytes += 0x08140; } else { // In the 0xE040 to 0xEBBF range assembledTwoBytes += 0x0C140; } buffer[offset] = (zxing::byte)(assembledTwoBytes >> 8); buffer[offset + 1] = (zxing::byte)assembledTwoBytes; offset += 2; count--; } try { append(result, buffer, nBytes, StringUtils::SHIFT_JIS); } catch (ReaderException const& ignored) { (void)ignored; delete [] buffer; throw FormatException(); } delete[] buffer; } std::string DecodedBitStreamParser::decodeByteSegment(Ref bits_, string& result, int count, CharacterSetECI const * currentCharacterSetECI, ArrayRef< ArrayRef >& byteSegments, Hashtable const& hints) { int nBytes = count; BitSource& bits (*bits_); // Don't crash trying to read more bits than we have available. if (count << 3 > bits.available()) { throw FormatException(); } ArrayRef bytes_ (count); byte* readBytes = &(*bytes_)[0]; for (int i = 0; i < count; i++) { readBytes[i] = (zxing::byte) bits.readBits(8); } string encoding; if (currentCharacterSetECI == 0) { // The spec isn't clear on this mode; see // section 6.4.5: t does not say which encoding to assuming // upon decoding. I have seen ISO-8859-1 used as well as // Shift_JIS -- without anything like an ECI designator to // give a hint. encoding = StringUtils::guessEncoding(readBytes, count, hints); } else { encoding = currentCharacterSetECI->name(); } try { append(result, readBytes, nBytes, encoding.c_str()); } catch (ReaderException const& ignored) { (void)ignored; throw FormatException(); } byteSegments->values().push_back(bytes_); return encoding; } void DecodedBitStreamParser::decodeNumericSegment(Ref bits, std::string &result, int count) { int nBytes = count; byte* bytes = new byte[nBytes]; int i = 0; // Read three digits at a time while (count >= 3) { // Each 10 bits encodes three digits if (bits->available() < 10) { delete[] bytes; throw ReaderException("format exception"); } int threeDigitsBits = bits->readBits(10); if (threeDigitsBits >= 1000) { ostringstream s; s << "Illegal value for 3-digit unit: " << threeDigitsBits; delete[] bytes; throw ReaderException(s.str().c_str()); } bytes[i++] = ALPHANUMERIC_CHARS[threeDigitsBits / 100]; bytes[i++] = ALPHANUMERIC_CHARS[(threeDigitsBits / 10) % 10]; bytes[i++] = ALPHANUMERIC_CHARS[threeDigitsBits % 10]; count -= 3; } if (count == 2) { if (bits->available() < 7) { throw ReaderException("format exception"); } // Two digits left over to read, encoded in 7 bits int twoDigitsBits = bits->readBits(7); if (twoDigitsBits >= 100) { ostringstream s; s << "Illegal value for 2-digit unit: " << twoDigitsBits; delete[] bytes; throw ReaderException(s.str().c_str()); } bytes[i++] = ALPHANUMERIC_CHARS[twoDigitsBits / 10]; bytes[i++] = ALPHANUMERIC_CHARS[twoDigitsBits % 10]; } else if (count == 1) { if (bits->available() < 4) { throw ReaderException("format exception"); } // One digit left over to read int digitBits = bits->readBits(4); if (digitBits >= 10) { ostringstream s; s << "Illegal value for digit unit: " << digitBits; delete[] bytes; throw ReaderException(s.str().c_str()); } bytes[i++] = ALPHANUMERIC_CHARS[digitBits]; } append(result, bytes, nBytes, StringUtils::ASCII); delete[] bytes; } char DecodedBitStreamParser::toAlphaNumericChar(size_t value) { if (value >= sizeof(DecodedBitStreamParser::ALPHANUMERIC_CHARS)) { throw FormatException(); } return ALPHANUMERIC_CHARS[value]; } void DecodedBitStreamParser::decodeAlphanumericSegment(Ref bits_, string& result, int count, bool fc1InEffect) { BitSource& bits (*bits_); ostringstream bytes; // Read two characters at a time while (count > 1) { if (bits.available() < 11) { throw FormatException(); } int nextTwoCharsBits = bits.readBits(11); bytes << toAlphaNumericChar(nextTwoCharsBits / 45); bytes << toAlphaNumericChar(nextTwoCharsBits % 45); count -= 2; } if (count == 1) { // special case: one character left if (bits.available() < 6) { throw FormatException(); } bytes << toAlphaNumericChar(bits.readBits(6)); } // See section 6.4.8.1, 6.4.8.2 string s = bytes.str(); if (fc1InEffect) { // We need to massage the result a bit if in an FNC1 mode: ostringstream r; for (size_t i = 0; i < s.length(); i++) { if (s[i] != '%') { r << s[i]; } else { if (i < s.length() - 1 && s[i + 1] == '%') { // %% is rendered as % r << s[i++]; } else { // In alpha mode, % should be converted to FNC1 separator 0x1D r << (zxing::byte)0x1D; } } } s = r.str(); } append(result, s, StringUtils::ASCII); } namespace { int parseECIValue(BitSource& bits) { int firstByte = bits.readBits(8); if ((firstByte & 0x80) == 0) { // just one byte return firstByte & 0x7F; } if ((firstByte & 0xC0) == 0x80) { // two bytes int secondByte = bits.readBits(8); return ((firstByte & 0x3F) << 8) | secondByte; } if ((firstByte & 0xE0) == 0xC0) { // three bytes int secondThirdBytes = bits.readBits(16); return ((firstByte & 0x1F) << 16) | secondThirdBytes; } throw FormatException(); } } Ref DecodedBitStreamParser::decode(ArrayRef bytes, Ref version, ErrorCorrectionLevel const& ecLevel, Hashtable const& hints) { Ref bits_ (new BitSource(bytes)); BitSource& bits (*bits_); string result; result.reserve(50); ArrayRef< ArrayRef > byteSegments (0); const CharacterSetECI* currentCharacterSetECI = 0; string charSet = ""; try { bool fc1InEffect = false; Mode* mode = 0; do { // While still another segment to read... if (bits.available() < 4) { // OK, assume we're done. Really, a TERMINATOR mode should have been recorded here mode = &Mode::TERMINATOR; } else { try { mode = &Mode::forBits(bits.readBits(4)); // mode is encoded by 4 bits } catch (IllegalArgumentException const& iae) { throw iae; // throw FormatException.getFormatInstance(); } } if (mode != &Mode::TERMINATOR) { if ((mode == &Mode::FNC1_FIRST_POSITION) || (mode == &Mode::FNC1_SECOND_POSITION)) { // We do little with FNC1 except alter the parsed result a bit according to the spec fc1InEffect = true; } else if (mode == &Mode::STRUCTURED_APPEND) { if (bits.available() < 16) { throw FormatException(); } // not really supported; all we do is ignore it // Read next 8 bits (symbol sequence #) and 8 bits (parity data), then continue bits.readBits(16); } else if (mode == &Mode::ECI) { // Count doesn't apply to ECI int value = parseECIValue(bits); currentCharacterSetECI = CharacterSetECI::getCharacterSetECIByValue(value); if (currentCharacterSetECI == 0) { throw FormatException(); } } else { // First handle Hanzi mode which does not start with character count if (mode == &Mode::HANZI) { //chinese mode contains a sub set indicator right after mode indicator int subset = bits.readBits(4); int countHanzi = bits.readBits(mode->getCharacterCountBits(version)); if (subset == GB2312_SUBSET) { decodeHanziSegment(bits_, result, countHanzi); } } else { // "Normal" QR code modes: // How many characters will follow, encoded in this mode? int count = bits.readBits(mode->getCharacterCountBits(version)); if (mode == &Mode::NUMERIC) { decodeNumericSegment(bits_, result, count); } else if (mode == &Mode::ALPHANUMERIC) { decodeAlphanumericSegment(bits_, result, count, fc1InEffect); } else if (mode == &Mode::BYTE) { charSet = decodeByteSegment(bits_, result, count, currentCharacterSetECI, byteSegments, hints); } else if (mode == &Mode::KANJI) { decodeKanjiSegment(bits_, result, count); } else { throw FormatException(); } } } } } while (mode != &Mode::TERMINATOR); } catch (IllegalArgumentException const& iae) { (void)iae; // from readBits() calls throw FormatException(); } return Ref(new DecoderResult(bytes, Ref(new String(result)), byteSegments, (string)ecLevel, charSet)); } yubioath-desktop/QZXing/zxing/zxing/qrcode/decoder/QRDecoder.cpp000066400000000000000000000066511412677075700252550ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- /* * Decoder.cpp * zxing * * Created by Christian Brunschen on 20/05/2008. * Copyright 2008 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include #include #include #include #include #include #include using zxing::DecoderResult; using zxing::Ref; // VC++ using zxing::ArrayRef; using zxing::BitMatrix; namespace zxing { namespace qrcode { Decoder::Decoder() : rsDecoder_(GenericGF::QR_CODE_FIELD_256) { } void Decoder::correctErrors(ArrayRef codewordBytes, int numDataCodewords) { int numCodewords = codewordBytes->size(); ArrayRef codewordInts(numCodewords); for (int i = 0; i < numCodewords; i++) { codewordInts[i] = codewordBytes[i] & 0xff; } int numECCodewords = numCodewords - numDataCodewords; try { rsDecoder_.decode(codewordInts, numECCodewords); } catch (ReedSolomonException const& ignored) { (void)ignored; throw ChecksumException(); } for (int i = 0; i < numDataCodewords; i++) { codewordBytes[i] = (zxing::byte)codewordInts[i]; } } Ref Decoder::decode(Ref bits) { // Construct a parser and read version, error-correction level BitMatrixParser parser(bits); // std::cerr << *bits << std::endl; Refversion = parser.readVersion(); ErrorCorrectionLevel &ecLevel = parser.readFormatInformation()->getErrorCorrectionLevel(); // Read codewords ArrayRef codewords(parser.readCodewords()); // Separate into data blocks std::vector > dataBlocks(DataBlock::getDataBlocks(codewords, version, ecLevel)); // Count total number of data bytes int totalBytes = 0; for (size_t i = 0; i < dataBlocks.size(); i++) { totalBytes += dataBlocks[i]->getNumDataCodewords(); } ArrayRef resultBytes(totalBytes); int resultOffset = 0; // Error-correct and copy data blocks together into a stream of bytes for (size_t j = 0; j < dataBlocks.size(); j++) { Ref dataBlock(dataBlocks[j]); ArrayRef codewordBytes = dataBlock->getCodewords(); int numDataCodewords = dataBlock->getNumDataCodewords(); correctErrors(codewordBytes, numDataCodewords); for (int i = 0; i < numDataCodewords; i++) { resultBytes[resultOffset++] = (zxing::byte)codewordBytes[i]; } } return DecodedBitStreamParser::decode(resultBytes, version, ecLevel, DecodedBitStreamParser::Hashtable()); } } } yubioath-desktop/QZXing/zxing/zxing/qrcode/decoder/QRMode.cpp000066400000000000000000000102641412677075700245670ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- /* * Mode.cpp * zxing * * Created by Christian Brunschen on 19/05/2008. * Copyright 2008 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include #include using zxing::qrcode::Mode; using std::ostringstream; // VC++ using zxing::qrcode::Version; using zxing::Ref; Mode Mode::TERMINATOR(0, 0, 0, 0x00, "TERMINATOR"); Mode Mode::NUMERIC(10, 12, 14, 0x01, "NUMERIC"); Mode Mode::ALPHANUMERIC(9, 11, 13, 0x02, "ALPHANUMERIC"); Mode Mode::STRUCTURED_APPEND(0, 0, 0, 0x03, "STRUCTURED_APPEND"); Mode Mode::BYTE(8, 16, 16, 0x04, "BYTE"); Mode Mode::ECI(0, 0, 0, 0x07, "ECI"); Mode Mode::KANJI(8, 10, 12, 0x08, "KANJI"); Mode Mode::FNC1_FIRST_POSITION(0, 0, 0, 0x05, "FNC1_FIRST_POSITION"); Mode Mode::FNC1_SECOND_POSITION(0, 0, 0, 0x09, "FNC1_SECOND_POSITION"); Mode Mode::HANZI(8, 10, 12, 0x0D, "HANZI"); Mode::Mode() : characterCountBitsForVersions0To9_(0), characterCountBitsForVersions10To26_(0), characterCountBitsForVersions27AndHigher_(0), bits_(0), name_("") {} Mode::Mode(int cbv0_9, int cbv10_26, int cbv27, int bits, const std::string &name) : characterCountBitsForVersions0To9_(cbv0_9), characterCountBitsForVersions10To26_(cbv10_26), characterCountBitsForVersions27AndHigher_(cbv27), bits_(bits), name_(name) { } Mode::Mode(const zxing::qrcode::Mode &mode) { characterCountBitsForVersions0To9_ = mode.characterCountBitsForVersions0To9_; characterCountBitsForVersions10To26_ = mode.characterCountBitsForVersions10To26_; characterCountBitsForVersions27AndHigher_ = mode.characterCountBitsForVersions27AndHigher_; bits_ = mode.bits_; name_ = mode.name_; } Mode& Mode::forBits(int bits) { switch (bits) { case 0x0: return TERMINATOR; case 0x1: return NUMERIC; case 0x2: return ALPHANUMERIC; case 0x3: return STRUCTURED_APPEND; case 0x4: return BYTE; case 0x5: return FNC1_FIRST_POSITION; case 0x7: return ECI; case 0x8: return KANJI; case 0x9: return FNC1_SECOND_POSITION; case 0xD: // 0xD is defined in GBT 18284-2000, may not be supported in foreign country return HANZI; default: ostringstream s; s << "Illegal mode bits: " << bits; throw ReaderException(s.str().c_str()); } } int Mode::getCharacterCountBits(Ref version) const { int number = version->getVersionNumber(); if (number <= 9) { return characterCountBitsForVersions0To9_; } else if (number <= 26) { return characterCountBitsForVersions10To26_; } else { return characterCountBitsForVersions27AndHigher_; } } Mode& Mode::operator=(const Mode& other) { characterCountBitsForVersions0To9_ = other.characterCountBitsForVersions0To9_; characterCountBitsForVersions10To26_ = other.characterCountBitsForVersions10To26_; characterCountBitsForVersions27AndHigher_ = other.characterCountBitsForVersions27AndHigher_; bits_ = other.bits_; name_ = other.name_; return *this; } bool Mode::operator==(const Mode& other) { return ( characterCountBitsForVersions0To9_ == other.characterCountBitsForVersions0To9_ && characterCountBitsForVersions10To26_ == other.characterCountBitsForVersions10To26_ && characterCountBitsForVersions27AndHigher_ == other.characterCountBitsForVersions27AndHigher_ && name_ == other.name_ && bits_ == other.bits_ ); } bool Mode::operator!=(const zxing::qrcode::Mode &other) { return !(operator==(other)); } yubioath-desktop/QZXing/zxing/zxing/qrcode/detector/000077500000000000000000000000001412677075700231355ustar00rootroot00000000000000yubioath-desktop/QZXing/zxing/zxing/qrcode/detector/AlignmentPattern.h000066400000000000000000000024411412677075700265630ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- #ifndef ZXING_ALIGNMENT_PATTERN_H #define ZXING_ALIGNMENT_PATTERN_H /* * AlignmentPattern.h * zxing * * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include namespace zxing { namespace qrcode { class AlignmentPattern : public ResultPoint { private: float estimatedModuleSize_; public: AlignmentPattern(float posX, float posY, float estimatedModuleSize); bool aboutEquals(float moduleSize, float i, float j) const; Ref combineEstimate(float i, float j, float newModuleSize) const; }; } } #endif // ZXING_ALIGNMENT_PATTERN_H yubioath-desktop/QZXing/zxing/zxing/qrcode/detector/AlignmentPatternFinder.h000066400000000000000000000037541412677075700277230ustar00rootroot00000000000000#ifndef ZXING_ALIGNMENT_PATTERN_FINDER_H #define ZXING_ALIGNMENT_PATTERN_FINDER_H /* * AlignmentPatternFinder.h * zxing * * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "AlignmentPattern.h" #include #include #include #include namespace zxing { namespace qrcode { class AlignmentPatternFinder : public Counted { private: static int CENTER_QUORUM; static int MIN_SKIP; static int MAX_MODULES; Ref image_; std::vector *possibleCenters_; int startX_; int startY_; int width_; int height_; float moduleSize_; static float centerFromEnd(std::vector &stateCount, int end); bool foundPatternCross(std::vector &stateCount); float crossCheckVertical(int startI, int centerJ, int maxCount, int originalStateCountTotal); Ref handlePossibleCenter(std::vector &stateCount, int i, int j); public: AlignmentPatternFinder(Ref image, int startX, int startY, int width, int height, float moduleSize, Refconst& callback); ~AlignmentPatternFinder(); Ref find(); private: AlignmentPatternFinder(const AlignmentPatternFinder&); AlignmentPatternFinder& operator =(const AlignmentPatternFinder&); Ref callback_; }; } } #endif // ZXING_ALIGNMENT_PATTERN_FINDER_H yubioath-desktop/QZXing/zxing/zxing/qrcode/detector/Detector.h000066400000000000000000000047251412677075700250670ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- #ifndef ZXING_DETECTOR_H #define ZXING_DETECTOR_H /* * Detector.h * zxing * * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include #include #include #include #include namespace zxing { class DecodeHints; namespace qrcode { class Detector : public Counted { private: Ref image_; Ref callback_; protected: Ref getImage() const; Ref getResultPointCallback() const; static Ref sampleGrid(Ref image, int dimension, Ref); static int computeDimension(Ref topLeft, Ref topRight, Ref bottomLeft, float moduleSize); float calculateModuleSize(Ref topLeft, Ref topRight, Ref bottomLeft); float calculateModuleSizeOneWay(Ref pattern, Ref otherPattern); float sizeOfBlackWhiteBlackRunBothWays(int fromX, int fromY, int toX, int toY); float sizeOfBlackWhiteBlackRun(int fromX, int fromY, int toX, int toY); Ref findAlignmentInRegion(float overallEstModuleSize, int estAlignmentX, int estAlignmentY, float allowanceFactor); Ref processFinderPatternInfo(Ref info); public: virtual Ref createTransform(Ref topLeft, Ref topRight, Ref < ResultPoint > bottomLeft, Ref alignmentPattern, int dimension); Detector(Ref image); Ref detect(DecodeHints const& hints); }; } } #endif // ZXING_DETECTOR_H yubioath-desktop/QZXing/zxing/zxing/qrcode/detector/FinderPattern.h000066400000000000000000000026251412677075700260600ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- #ifndef ZXING_FINDER_PATTERN_H #define ZXING_FINDER_PATTERN_H /* * FinderPattern.h * zxing * * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include namespace zxing { namespace qrcode { class FinderPattern : public ResultPoint { private: float estimatedModuleSize_; int count_; FinderPattern(float posX, float posY, float estimatedModuleSize, int count); public: FinderPattern(float posX, float posY, float estimatedModuleSize); int getCount() const; float getEstimatedModuleSize() const; void incrementCount(); bool aboutEquals(float moduleSize, float i, float j) const; Ref combineEstimate(float i, float j, float newModuleSize) const; }; } } #endif // ZXING_FINDER_PATTERN_H yubioath-desktop/QZXing/zxing/zxing/qrcode/detector/FinderPatternFinder.h000066400000000000000000000051201412677075700272010ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- #ifndef ZXING_FINDER_PATTERN_FINDER_H #define ZXING_FINDER_PATTERN_FINDER_H /* * FinderPatternFinder.h * zxing * * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include #include #include #include namespace zxing { class DecodeHints; namespace qrcode { class FinderPatternFinder { private: static int CENTER_QUORUM; protected: static int MIN_SKIP; static int MAX_MODULES; Ref image_; std::vector > possibleCenters_; bool hasSkipped_; Ref callback_; mutable int crossCheckStateCount[5]; /** stateCount must be int[5] */ static float centerFromEnd(int* stateCount, int end); static bool foundPatternCross(int* stateCount); float crossCheckVertical(size_t startI, size_t centerJ, int maxCount, int originalStateCountTotal); float crossCheckHorizontal(size_t startJ, size_t centerI, int maxCount, int originalStateCountTotal); /** stateCount must be int[5] */ bool handlePossibleCenter(int* stateCount, size_t i, size_t j); int findRowSkip(); bool haveMultiplyConfirmedCenters(); std::vector > selectBestPatterns(); static std::vector > orderBestPatterns(std::vector > patterns); Ref getImage(); std::vector >& getPossibleCenters(); bool crossCheckDiagonal(int startI, int centerJ, int maxCount, int originalStateCountTotal) const; int *getCrossCheckStateCount() const; static double squaredDistance(Ref a, Ref b); public: static float distance(Ref p1, Ref p2); FinderPatternFinder(Ref image, Refconst&); Ref find(DecodeHints const& hints); }; } } #endif // ZXING_FINDER_PATTERN_FINDER_H yubioath-desktop/QZXing/zxing/zxing/qrcode/detector/FinderPatternInfo.h000066400000000000000000000024071412677075700266720ustar00rootroot00000000000000#ifndef ZXING_FINDER_PATTERN_INFO_H #define ZXING_FINDER_PATTERN_INFO_H /* * FinderPatternInfo.h * zxing * * Copyright 2010 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include #include namespace zxing { namespace qrcode { class FinderPatternInfo : public Counted { private: Ref bottomLeft_; Ref topLeft_; Ref topRight_; public: FinderPatternInfo(std::vector > patternCenters); Ref getBottomLeft(); Ref getTopLeft(); Ref getTopRight(); }; } } #endif // ZXING_FINDER_PATTERN_INFO_H yubioath-desktop/QZXing/zxing/zxing/qrcode/detector/QRAlignmentPattern.cpp000066400000000000000000000033551412677075700273660ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- /* * AlignmentPattern.cpp * zxing * * Created by Christian Brunschen on 13/05/2008. * Copyright 2008 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include using std::abs; using zxing::Ref; using zxing::qrcode::AlignmentPattern; AlignmentPattern::AlignmentPattern(float posX, float posY, float estimatedModuleSize) : ResultPoint(posX,posY), estimatedModuleSize_(estimatedModuleSize) { } bool AlignmentPattern::aboutEquals(float moduleSize, float i, float j) const { if (abs(i - getY()) <= moduleSize && abs(j - getX()) <= moduleSize) { float moduleSizeDiff = abs(moduleSize - estimatedModuleSize_); return moduleSizeDiff <= 1.0f || moduleSizeDiff <= estimatedModuleSize_; } return false; } Ref AlignmentPattern::combineEstimate(float i, float j, float newModuleSize) const { float combinedX = (getX() + j) / 2.0f; float combinedY = (getY() + i) / 2.0f; float combinedModuleSize = (estimatedModuleSize_ + newModuleSize) / 2.0f; Ref result (new AlignmentPattern(combinedX, combinedY, combinedModuleSize)); return result; } yubioath-desktop/QZXing/zxing/zxing/qrcode/detector/QRAlignmentPatternFinder.cpp000066400000000000000000000156521412677075700305210ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- /* * Copyright 2008 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include #include #include #include using std::abs; using std::vector; using zxing::Ref; using zxing::qrcode::AlignmentPatternFinder; using zxing::qrcode::AlignmentPattern; // VC++ using zxing::BitMatrix; using zxing::ResultPointCallback; float AlignmentPatternFinder::centerFromEnd(vector& stateCount, int end) { return (float)(end - stateCount[2]) - stateCount[1] / 2.0f; } bool AlignmentPatternFinder::foundPatternCross(vector &stateCount) { float maxVariance = moduleSize_ / 2.0f; for (int i = 0; i < 3; i++) { if (abs(moduleSize_ - stateCount[i]) >= maxVariance) { return false; } } return true; } float AlignmentPatternFinder::crossCheckVertical(int startI, int centerJ, int maxCount, int originalStateCountTotal) { int maxI = image_->getHeight(); vector stateCount(3, 0); // Start counting up from center int i = startI; while (i >= 0 && image_->get(centerJ, i) && stateCount[1] <= maxCount) { stateCount[1]++; i--; } // If already too many modules in this state or ran off the edge: if (i < 0 || stateCount[1] > maxCount) { return nan(); } while (i >= 0 && !image_->get(centerJ, i) && stateCount[0] <= maxCount) { stateCount[0]++; i--; } if (stateCount[0] > maxCount) { return nan(); } // Now also count down from center i = startI + 1; while (i < maxI && image_->get(centerJ, i) && stateCount[1] <= maxCount) { stateCount[1]++; i++; } if (i == maxI || stateCount[1] > maxCount) { return nan(); } while (i < maxI && !image_->get(centerJ, i) && stateCount[2] <= maxCount) { stateCount[2]++; i++; } if (stateCount[2] > maxCount) { return nan(); } int stateCountTotal = stateCount[0] + stateCount[1] + stateCount[2]; if (5 * ::abs(stateCountTotal - originalStateCountTotal) >= 2 * originalStateCountTotal) { return nan(); } return foundPatternCross(stateCount) ? centerFromEnd(stateCount, i) : nan(); } Ref AlignmentPatternFinder::handlePossibleCenter(vector &stateCount, int i, int j) { int stateCountTotal = stateCount[0] + stateCount[1] + stateCount[2]; float centerJ = centerFromEnd(stateCount, j); float centerI = crossCheckVertical(i, (int)centerJ, 2 * stateCount[1], stateCountTotal); if (!isnan_z(centerI)) { float estimatedModuleSize = (float)(stateCount[0] + stateCount[1] + stateCount[2]) / 3.0f; int max = int(possibleCenters_->size()); for (int index = 0; index < max; index++) { Ref center((*possibleCenters_)[index]); // Look for about the same center and module size: if (center->aboutEquals(estimatedModuleSize, centerI, centerJ)) { return center->combineEstimate(centerI, centerJ, estimatedModuleSize); } } AlignmentPattern *tmp = new AlignmentPattern(centerJ, centerI, estimatedModuleSize); // Hadn't found this before; save it tmp->retain(); possibleCenters_->push_back(tmp); if (callback_ != 0) { callback_->foundPossibleResultPoint(*tmp); } } Ref result; return result; } AlignmentPatternFinder::AlignmentPatternFinder(Ref image, int startX, int startY, int width, int height, float moduleSize, Refconst& callback) : image_(image), possibleCenters_(new vector ()), startX_(startX), startY_(startY), width_(width), height_(height), moduleSize_(moduleSize), callback_(callback) { } AlignmentPatternFinder::~AlignmentPatternFinder() { for (int i = 0; i < int(possibleCenters_->size()); i++) { (*possibleCenters_)[i]->release(); (*possibleCenters_)[i] = 0; } delete possibleCenters_; } Ref AlignmentPatternFinder::find() { int maxJ = startX_ + width_; int middleI = startY_ + (height_ >> 1); // Ref luminanceRow(new BitArray(width_)); // We are looking for black/white/black modules in 1:1:1 ratio; // this tracks the number of black/white/black modules seen so far vector stateCount(3, 0); for (int iGen = 0; iGen < height_; iGen++) { // Search from middle outwards int i = middleI + ((iGen & 0x01) == 0 ? ((iGen + 1) >> 1) : -((iGen + 1) >> 1)); // image_->getBlackRow(i, luminanceRow, startX_, width_); stateCount[0] = 0; stateCount[1] = 0; stateCount[2] = 0; int j = startX_; // Burn off leading white pixels before anything else; if we start in the middle of // a white run, it doesn't make sense to count its length, since we don't know if the // white run continued to the left of the start point while (j < maxJ && !image_->get(j, i)) { j++; } int currentState = 0; while (j < maxJ) { if (image_->get(j, i)) { // Black pixel if (currentState == 1) { // Counting black pixels stateCount[currentState]++; } else { // Counting white pixels if (currentState == 2) { // A winner? if (foundPatternCross(stateCount)) { // Yes Ref confirmed(handlePossibleCenter(stateCount, i, j)); if (confirmed != 0) { return confirmed; } } stateCount[0] = stateCount[2]; stateCount[1] = 1; stateCount[2] = 0; currentState = 1; } else { stateCount[++currentState]++; } } } else { // White pixel if (currentState == 1) { // Counting black pixels currentState++; } stateCount[currentState]++; } j++; } if (foundPatternCross(stateCount)) { Ref confirmed(handlePossibleCenter(stateCount, i, maxJ)); if (confirmed != 0) { return confirmed; } } } // Hmm, nothing we saw was observed and confirmed twice. If we had // any guess at all, return it. if (possibleCenters_->size() > 0) { Ref center((*possibleCenters_)[0]); return center; } throw zxing::ReaderException("Could not find alignment pattern"); } yubioath-desktop/QZXing/zxing/zxing/qrcode/detector/QRDetector.cpp000066400000000000000000000276531412677075700256720ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- /* * Detector.cpp * zxing * * Created by Christian Brunschen on 14/05/2008. * Copyright 2008 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include #include #include #include #include #include #include #include #include #include using std::ostringstream; using std::abs; using std::min; using std::max; using zxing::qrcode::Detector; using zxing::Ref; using zxing::BitMatrix; using zxing::ResultPointCallback; using zxing::DetectorResult; using zxing::PerspectiveTransform; using zxing::qrcode::AlignmentPattern; using zxing::common::detector::MathUtils; // VC++ using zxing::DecodeHints; using zxing::qrcode::FinderPatternFinder; using zxing::qrcode::FinderPatternInfo; using zxing::ResultPoint; Detector::Detector(Ref image) : image_(image) { } Ref Detector::getImage() const { return image_; } Ref Detector::getResultPointCallback() const { return callback_; } Ref Detector::detect(DecodeHints const& hints) { callback_ = hints.getResultPointCallback(); FinderPatternFinder finder(image_, hints.getResultPointCallback()); Ref info(finder.find(hints)); return processFinderPatternInfo(info); } Ref Detector::processFinderPatternInfo(Ref info){ Ref topLeft(info->getTopLeft()); Ref topRight(info->getTopRight()); Ref bottomLeft(info->getBottomLeft()); float moduleSize = calculateModuleSize(topLeft, topRight, bottomLeft); if (moduleSize < 1.0f) { throw zxing::ReaderException("bad module size"); } int dimension = computeDimension(topLeft, topRight, bottomLeft, moduleSize); RefprovisionalVersion = Version::getProvisionalVersionForDimension(dimension); int modulesBetweenFPCenters = provisionalVersion->getDimensionForVersion() - 7; Ref alignmentPattern; // Anything above version 1 has an alignment pattern if (provisionalVersion->getAlignmentPatternCenters().size() > 0) { // Guess where a "bottom right" finder pattern would have been float bottomRightX = topRight->getX() - topLeft->getX() + bottomLeft->getX(); float bottomRightY = topRight->getY() - topLeft->getY() + bottomLeft->getY(); // Estimate that alignment pattern is closer by 3 modules // from "bottom right" to known top left location float correctionToTopLeft = 1.0f - 3.0f / (float)modulesBetweenFPCenters; int estAlignmentX = (int)(topLeft->getX() + correctionToTopLeft * (bottomRightX - topLeft->getX())); int estAlignmentY = (int)(topLeft->getY() + correctionToTopLeft * (bottomRightY - topLeft->getY())); // Kind of arbitrary -- expand search radius before giving up for (int i = 4; i <= 16; i <<= 1) { try { alignmentPattern = findAlignmentInRegion(moduleSize, estAlignmentX, estAlignmentY, (float)i); break; } catch (zxing::ReaderException const& re) { (void)re; // try next round } } if (alignmentPattern == 0) { // Try anyway } } Ref transform = createTransform(topLeft, topRight, bottomLeft, alignmentPattern, dimension); Ref bits(sampleGrid(image_, dimension, transform)); ArrayRef< Ref > points(new Array< Ref >(alignmentPattern == 0 ? 3 : 4)); points[0].reset(bottomLeft); points[1].reset(topLeft); points[2].reset(topRight); if (alignmentPattern != 0) { points[3].reset(alignmentPattern); } Ref result(new DetectorResult(bits, points)); return result; } Ref Detector::createTransform(Ref topLeft, Ref topRight, Ref < ResultPoint > bottomLeft, Ref alignmentPattern, int dimension) { float dimMinusThree = (float)dimension - 3.5f; float bottomRightX; float bottomRightY; float sourceBottomRightX; float sourceBottomRightY; if (alignmentPattern != 0) { bottomRightX = alignmentPattern->getX(); bottomRightY = alignmentPattern->getY(); sourceBottomRightX = dimMinusThree - 3.0f; sourceBottomRightY = sourceBottomRightX; } else { // Don't have an alignment pattern, just make up the bottom-right point bottomRightX = (topRight->getX() - topLeft->getX()) + bottomLeft->getX(); bottomRightY = (topRight->getY() - topLeft->getY()) + bottomLeft->getY(); sourceBottomRightX = dimMinusThree; sourceBottomRightY = dimMinusThree; } Ref transform(PerspectiveTransform::quadrilateralToQuadrilateral(3.5f, 3.5f, dimMinusThree, 3.5f, sourceBottomRightX, sourceBottomRightY, 3.5f, dimMinusThree, topLeft->getX(), topLeft->getY(), topRight->getX(), topRight->getY(), bottomRightX, bottomRightY, bottomLeft->getX(), bottomLeft->getY())); return transform; } Ref Detector::sampleGrid(Ref image, int dimension, Ref transform) { GridSampler &sampler = GridSampler::getInstance(); return sampler.sampleGrid(image, dimension, transform); } int Detector::computeDimension(Ref topLeft, Ref topRight, Ref bottomLeft, float moduleSize) { int tltrCentersDimension = MathUtils::round(ResultPoint::distance(topLeft, topRight) / moduleSize); int tlblCentersDimension = MathUtils::round(ResultPoint::distance(topLeft, bottomLeft) / moduleSize); int dimension = ((tltrCentersDimension + tlblCentersDimension) >> 1) + 7; switch (dimension & 0x03) { // mod 4 case 0: dimension++; break; // 1? do nothing case 2: dimension--; break; case 3: ostringstream s; s << "Bad dimension: " << dimension; throw zxing::ReaderException(s.str().c_str()); } return dimension; } float Detector::calculateModuleSize(Ref topLeft, Ref topRight, Ref bottomLeft) { // Take the average return (calculateModuleSizeOneWay(topLeft, topRight) + calculateModuleSizeOneWay(topLeft, bottomLeft)) / 2.0f; } float Detector::calculateModuleSizeOneWay(Ref pattern, Ref otherPattern) { float moduleSizeEst1 = sizeOfBlackWhiteBlackRunBothWays((int)pattern->getX(), (int)pattern->getY(), (int)otherPattern->getX(), (int)otherPattern->getY()); float moduleSizeEst2 = sizeOfBlackWhiteBlackRunBothWays((int)otherPattern->getX(), (int)otherPattern->getY(), (int)pattern->getX(), (int)pattern->getY()); if (zxing::isnan_z(moduleSizeEst1)) { return moduleSizeEst2; } if (zxing::isnan_z(moduleSizeEst2)) { return moduleSizeEst1; } // Average them, and divide by 7 since we've counted the width of 3 black modules, // and 1 white and 1 black module on either side. Ergo, divide sum by 14. return (moduleSizeEst1 + moduleSizeEst2) / 14.0f; } float Detector::sizeOfBlackWhiteBlackRunBothWays(int fromX, int fromY, int toX, int toY) { float result = sizeOfBlackWhiteBlackRun(fromX, fromY, toX, toY); // Now count other way -- don't run off image though of course float scale = 1.0f; int otherToX = fromX - (toX - fromX); if (otherToX < 0) { scale = (float) fromX / (float) (fromX - otherToX); otherToX = 0; } else if (otherToX >= (int)image_->getWidth()) { scale = (float) (image_->getWidth() - 1 - fromX) / (float) (otherToX - fromX); otherToX = image_->getWidth() - 1; } int otherToY = (int) (fromY - (toY - fromY) * scale); scale = 1.0f; if (otherToY < 0) { scale = (float) fromY / (float) (fromY - otherToY); otherToY = 0; } else if (otherToY >= (int)image_->getHeight()) { scale = (float) (image_->getHeight() - 1 - fromY) / (float) (otherToY - fromY); otherToY = image_->getHeight() - 1; } otherToX = (int) (fromX + (otherToX - fromX) * scale); result += sizeOfBlackWhiteBlackRun(fromX, fromY, otherToX, otherToY); // Middle pixel is double-counted this way; subtract 1 return result - 1.0f; } float Detector::sizeOfBlackWhiteBlackRun(int fromX, int fromY, int toX, int toY) { // Mild variant of Bresenham's algorithm; // see http://en.wikipedia.org/wiki/Bresenham's_line_algorithm bool steep = ::abs(toY - fromY) > ::abs(toX - fromX); if (steep) { int temp = fromX; fromX = fromY; fromY = temp; temp = toX; toX = toY; toY = temp; } int dx = ::abs(toX - fromX); int dy = ::abs(toY - fromY); int error = -dx >> 1; int xstep = fromX < toX ? 1 : -1; int ystep = fromY < toY ? 1 : -1; // In black pixels, looking for white, first or second time. int state = 0; // Loop up until x == toX, but not beyond int xLimit = toX + xstep; for (int x = fromX, y = fromY; x != xLimit; x += xstep) { int realX = steep ? y : x; int realY = steep ? x : y; // Does current pixel mean we have moved white to black or vice versa? if (!((state == 1) ^ image_->get(realX, realY))) { if (state == 2) { return MathUtils::distance(x, y, fromX, fromY); } state++; } error += dy; if (error > 0) { if (y == toY) { break; } y += ystep; error -= dx; } } // Found black-white-black; give the benefit of the doubt that the next pixel outside the image // is "white" so this last point at (toX+xStep,toY) is the right ending. This is really a // small approximation; (toX+xStep,toY+yStep) might be really correct. Ignore this. if (state == 2) { return MathUtils::distance(toX + xstep, toY, fromX, fromY); } // else we didn't find even black-white-black; no estimate is really possible return nan(); } Ref Detector::findAlignmentInRegion(float overallEstModuleSize, int estAlignmentX, int estAlignmentY, float allowanceFactor) { // Look for an alignment pattern (3 modules in size) around where it // should be int allowance = (int)(allowanceFactor * overallEstModuleSize); int alignmentAreaLeftX = max(0, estAlignmentX - allowance); int alignmentAreaRightX = min((int)(image_->getWidth() - 1), estAlignmentX + allowance); if (alignmentAreaRightX - alignmentAreaLeftX < overallEstModuleSize * 3) { throw zxing::ReaderException("region too small to hold alignment pattern"); } int alignmentAreaTopY = max(0, estAlignmentY - allowance); int alignmentAreaBottomY = min((int)(image_->getHeight() - 1), estAlignmentY + allowance); if (alignmentAreaBottomY - alignmentAreaTopY < overallEstModuleSize * 3) { throw zxing::ReaderException("region too small to hold alignment pattern"); } AlignmentPatternFinder alignmentFinder(image_, alignmentAreaLeftX, alignmentAreaTopY, alignmentAreaRightX - alignmentAreaLeftX, alignmentAreaBottomY - alignmentAreaTopY, overallEstModuleSize, callback_); return alignmentFinder.find(); } yubioath-desktop/QZXing/zxing/zxing/qrcode/detector/QRFinderPattern.cpp000066400000000000000000000051331412677075700266530ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- /* * FinderPattern.cpp * zxing * * Created by Christian Brunschen on 13/05/2008. * Copyright 2008 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include using std::abs; using zxing::Ref; using zxing::qrcode::FinderPattern; FinderPattern::FinderPattern(float posX, float posY, float estimatedModuleSize) : ResultPoint(posX,posY), estimatedModuleSize_(estimatedModuleSize), count_(1) {} FinderPattern::FinderPattern(float posX, float posY, float estimatedModuleSize, int count) : ResultPoint(posX,posY), estimatedModuleSize_(estimatedModuleSize), count_(count) {} int FinderPattern::getCount() const { return count_; } float FinderPattern::getEstimatedModuleSize() const { return estimatedModuleSize_; } void FinderPattern::incrementCount() { count_++; // cerr << "ic " << getX() << " " << getY() << " " << count_ << endl; } /* bool FinderPattern::aboutEquals(float moduleSize, float i, float j) const { return abs(i - posY_) <= moduleSize && abs(j - posX_) <= moduleSize && (abs(moduleSize - estimatedModuleSize_) <= 1.0f || abs(moduleSize - estimatedModuleSize_) / estimatedModuleSize_ <= 0.1f); } */ bool FinderPattern::aboutEquals(float moduleSize, float i, float j) const { if (abs(i - getY()) <= moduleSize && abs(j - getX()) <= moduleSize) { float moduleSizeDiff = abs(moduleSize - estimatedModuleSize_); return moduleSizeDiff <= 1.0f || moduleSizeDiff <= estimatedModuleSize_; } return false; } Ref FinderPattern::combineEstimate(float i, float j, float newModuleSize) const { // fprintf(stderr, "ce %f %f %f\n", i, j, newModuleSize); int combinedCount = count_ + 1; float combinedX = (count_ * getX() + j) / combinedCount; float combinedY = (count_ * getY() + i) / combinedCount; float combinedModuleSize = (count_ * getEstimatedModuleSize() + newModuleSize) / combinedCount; return Ref(new FinderPattern(combinedX, combinedY, combinedModuleSize, combinedCount)); } yubioath-desktop/QZXing/zxing/zxing/qrcode/detector/QRFinderPatternFinder.cpp000066400000000000000000000510061412677075700300030ustar00rootroot00000000000000// -*- mode:c++; tab-width:2; indent-tabs-mode:nil; c-basic-offset:2 -*- /* * FinderPatternFinder.cpp * zxing * * Created by Christian Brunschen on 13/05/2008. * Copyright 2008 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include #include #include #include //#include //#include using std::sort; using std::max; using std::abs; using std::vector; using zxing::Ref; using zxing::qrcode::FinderPatternFinder; using zxing::qrcode::FinderPattern; using zxing::qrcode::FinderPatternInfo; // VC++ using zxing::BitMatrix; using zxing::ResultPointCallback; using zxing::ResultPoint; using zxing::DecodeHints; namespace { class EstimatedModuleComparator { public: bool operator()(Ref a, Ref b) { return a->getEstimatedModuleSize() < b->getEstimatedModuleSize(); } }; } int FinderPatternFinder::CENTER_QUORUM = 2; int FinderPatternFinder::MIN_SKIP = 3; int FinderPatternFinder::MAX_MODULES = 57; float FinderPatternFinder::centerFromEnd(int* stateCount, int end) { return (float)(end - stateCount[4] - stateCount[3]) - stateCount[2] / 2.0f; } bool FinderPatternFinder::foundPatternCross(int* stateCount) { int totalModuleSize = 0; for (int i = 0; i < 5; i++) { int count = stateCount[i]; if (count == 0) { return false; } totalModuleSize += count; } if (totalModuleSize < 7) { return false; } int moduleSize = (totalModuleSize << 8) / 7; int maxVariance = moduleSize / 2; // Allow less than 50% variance from 1-1-3-1-1 proportions return ::abs(moduleSize - (stateCount[0] << 8)) < maxVariance && ::abs(moduleSize - (stateCount[1] << 8)) < maxVariance && ::abs(3.0f * moduleSize - (stateCount[2] << 8)) < 3 * maxVariance && ::abs(moduleSize - (stateCount[3] << 8)) < maxVariance && ::abs(moduleSize - (stateCount[4] << 8)) < maxVariance; } float FinderPatternFinder::crossCheckVertical(size_t startI, size_t centerJ, int maxCount, int originalStateCountTotal) { int maxI = image_->getHeight(); int *stateCount = getCrossCheckStateCount(); // Start counting up from center int i = int(startI); while (i >= 0 && image_->get(int(centerJ), i)) { stateCount[2]++; i--; } if (i < 0) { return nan(); } while (i >= 0 && !image_->get(int(centerJ), i) && stateCount[1] <= maxCount) { stateCount[1]++; i--; } // If already too many modules in this state or ran off the edge: if (i < 0 || stateCount[1] > maxCount) { return nan(); } while (i >= 0 && image_->get(int(centerJ), i) && stateCount[0] <= maxCount) { stateCount[0]++; i--; } if (stateCount[0] > maxCount) { return nan(); } // Now also count down from center i = int(startI) + 1; while (i < maxI && image_->get(int(centerJ), i)) { stateCount[2]++; i++; } if (i == maxI) { return nan(); } while (i < maxI && !image_->get(int(centerJ), i) && stateCount[3] < maxCount) { stateCount[3]++; i++; } if (i == maxI || stateCount[3] >= maxCount) { return nan(); } while (i < maxI && image_->get(int(centerJ), i) && stateCount[4] < maxCount) { stateCount[4]++; i++; } if (stateCount[4] >= maxCount) { return nan(); } // If we found a finder-pattern-like section, but its size is more than 40% different than // the original, assume it's a false positive int stateCountTotal = stateCount[0] + stateCount[1] + stateCount[2] + stateCount[3] + stateCount[4]; if (5 * abs(stateCountTotal - originalStateCountTotal) >= 2 * originalStateCountTotal) { return nan(); } return foundPatternCross(stateCount) ? centerFromEnd(stateCount, i) : nan(); } float FinderPatternFinder::crossCheckHorizontal(size_t startJ, size_t centerI, int maxCount, int originalStateCountTotal) { int maxJ = image_->getWidth(); int *stateCount = getCrossCheckStateCount(); int j = int(startJ); while (j >= 0 && image_->get(j, int(centerI))) { stateCount[2]++; j--; } if (j < 0) { return nan(); } while (j >= 0 && !image_->get(j, int(centerI)) && stateCount[1] <= maxCount) { stateCount[1]++; j--; } if (j < 0 || stateCount[1] > maxCount) { return nan(); } while (j >= 0 && image_->get(j, int(centerI)) && stateCount[0] <= maxCount) { stateCount[0]++; j--; } if (stateCount[0] > maxCount) { return nan(); } j = int(startJ) + 1; while (j < maxJ && image_->get(j, int(centerI))) { stateCount[2]++; j++; } if (j == maxJ) { return nan(); } while (j < maxJ && !image_->get(j, int(centerI)) && stateCount[3] < maxCount) { stateCount[3]++; j++; } if (j == maxJ || stateCount[3] >= maxCount) { return nan(); } while (j < maxJ && image_->get(j, int(centerI)) && stateCount[4] < maxCount) { stateCount[4]++; j++; } if (stateCount[4] >= maxCount) { return nan(); } // If we found a finder-pattern-like section, but its size is significantly different than // the original, assume it's a false positive int stateCountTotal = stateCount[0] + stateCount[1] + stateCount[2] + stateCount[3] + stateCount[4]; if (5 * abs(stateCountTotal - originalStateCountTotal) >= originalStateCountTotal) { return nan(); } return foundPatternCross(stateCount) ? centerFromEnd(stateCount, j) : nan(); } bool FinderPatternFinder::handlePossibleCenter(int* stateCount, size_t i, size_t j) { int stateCountTotal = stateCount[0] + stateCount[1] + stateCount[2] + stateCount[3] + stateCount[4]; float centerJ = centerFromEnd(stateCount, int(j)); float centerI = crossCheckVertical(i, (size_t)centerJ, stateCount[2], stateCountTotal); if (!isnan_z(centerI)) { // Re-cross check centerJ = crossCheckHorizontal((size_t)centerJ, (size_t)centerI, stateCount[2], stateCountTotal); if (!isnan_z(centerJ) && crossCheckDiagonal((int)centerI, (int)centerJ, stateCount[2], stateCountTotal)) { float estimatedModuleSize = (float)stateCountTotal / 7.0f; bool found = false; size_t max = possibleCenters_.size(); for (size_t index = 0; index < max; index++) { Ref center = possibleCenters_[index]; // Look for about the same center and module size: if (center->aboutEquals(estimatedModuleSize, centerI, centerJ)) { possibleCenters_[index] = center->combineEstimate(centerI, centerJ, estimatedModuleSize); found = true; break; } } if (!found) { Ref newPattern(new FinderPattern(centerJ, centerI, estimatedModuleSize)); possibleCenters_.push_back(newPattern); if (callback_ != 0) { callback_->foundPossibleResultPoint(*newPattern); } } return true; } } return false; } int FinderPatternFinder::findRowSkip() { size_t max = possibleCenters_.size(); if (max <= 1) { return 0; } Ref firstConfirmedCenter; for (size_t i = 0; i < max; i++) { Ref center = possibleCenters_[i]; if (center->getCount() >= CENTER_QUORUM) { if (firstConfirmedCenter == 0) { firstConfirmedCenter = center; } else { // We have two confirmed centers // How far down can we skip before resuming looking for the next // pattern? In the worst case, only the difference between the // difference in the x / y coordinates of the two centers. // This is the case where you find top left first. Draw it out. hasSkipped_ = true; return (int)(abs(firstConfirmedCenter->getX() - center->getX()) - abs(firstConfirmedCenter->getY() - center->getY()))/2; } } } return 0; } bool FinderPatternFinder::haveMultiplyConfirmedCenters() { int confirmedCount = 0; float totalModuleSize = 0.0f; size_t max = possibleCenters_.size(); for (size_t i = 0; i < max; i++) { Ref pattern = possibleCenters_[i]; if (pattern->getCount() >= CENTER_QUORUM) { confirmedCount++; totalModuleSize += pattern->getEstimatedModuleSize(); } } if (confirmedCount < 3) { return false; } // OK, we have at least 3 confirmed centers, but, it's possible that one is a "false positive" // and that we need to keep looking. We detect this by asking if the estimated module sizes // vary too much. We arbitrarily say that when the total deviation from average exceeds // 5% of the total module size estimates, it's too much. float average = totalModuleSize / (float)max; float totalDeviation = 0.0f; for (size_t i = 0; i < max; i++) { Ref pattern = possibleCenters_[i]; totalDeviation += abs(pattern->getEstimatedModuleSize() - average); } return totalDeviation <= 0.05f * totalModuleSize; } vector< Ref > FinderPatternFinder::selectBestPatterns() { std::vector> bestPatterns; int startSize = static_cast( possibleCenters_.size()); if (startSize < 3) { // Couldn't find enough finder patterns return bestPatterns; } std::sort( possibleCenters_.begin(), possibleCenters_.end(), EstimatedModuleComparator()); double distortion = std::numeric_limits::max(); vector squares(3, 0); for (int i = 0; i < startSize - 2; i++) { Ref fpi = possibleCenters_[i]; float minModuleSize = fpi->getEstimatedModuleSize(); for (int j = i + 1; j < startSize - 1; j++) { Ref fpj = possibleCenters_[j]; double squares0 = squaredDistance(fpi, fpj); for (int k = j + 1; k < startSize; k++) { Ref fpk = possibleCenters_[k]; float maxModuleSize = fpk->getEstimatedModuleSize(); if (maxModuleSize > minModuleSize * 1.4f) { // module size is not similar continue; } squares[0] = squares0; squares[1] = squaredDistance(fpj, fpk); squares[2] = squaredDistance(fpi, fpk); std::sort(squares.begin(), squares.end()); // a^2 + b^2 = c^2 (Pythagorean theorem), and a = b (isosceles triangle). // Since any right triangle satisfies the formula c^2 - b^2 - a^2 = 0, // we need to check both two equal sides separately. // The value of |c^2 - 2 * b^2| + |c^2 - 2 * a^2| increases as dissimilarity // from isosceles right triangle. double d = std::abs(squares[2] - 2 * squares[1]) + std::abs(squares[2] - 2 * squares[0]); if (d < distortion) { distortion = d; bestPatterns.resize(3); bestPatterns[0] = fpi; bestPatterns[1] = fpj; bestPatterns[2] = fpk; } } } } return bestPatterns; } vector > FinderPatternFinder::orderBestPatterns(vector > patterns) { // Find distances between pattern centers float abDistance = distance(patterns[0], patterns[1]); float bcDistance = distance(patterns[1], patterns[2]); float acDistance = distance(patterns[0], patterns[2]); Ref topLeft; Ref topRight; Ref bottomLeft; // Assume one closest to other two is top left; // topRight and bottomLeft will just be guesses below at first if (bcDistance >= abDistance && bcDistance >= acDistance) { topLeft = patterns[0]; topRight = patterns[1]; bottomLeft = patterns[2]; } else if (acDistance >= bcDistance && acDistance >= abDistance) { topLeft = patterns[1]; topRight = patterns[0]; bottomLeft = patterns[2]; } else { topLeft = patterns[2]; topRight = patterns[0]; bottomLeft = patterns[1]; } // Use cross product to figure out which of other1/2 is the bottom left // pattern. The vector "top-left -> bottom-left" x "top-left -> top-right" // should yield a vector with positive z component if ((bottomLeft->getY() - topLeft->getY()) * (topRight->getX() - topLeft->getX()) < (bottomLeft->getX() - topLeft->getX()) * (topRight->getY() - topLeft->getY())) { Ref temp = topRight; topRight = bottomLeft; bottomLeft = temp; } vector > results(3); results[0] = bottomLeft; results[1] = topLeft; results[2] = topRight; return results; } float FinderPatternFinder::distance(Ref p1, Ref p2) { float dx = p1->getX() - p2->getX(); float dy = p1->getY() - p2->getY(); return (float)sqrt(dx * dx + dy * dy); } FinderPatternFinder::FinderPatternFinder(Ref image, Refconst& callback) : image_(image), possibleCenters_(), hasSkipped_(false), callback_(callback) { } Ref FinderPatternFinder::find(DecodeHints const& hints) { bool tryHarder = hints.getTryHarder(); size_t maxI = image_->getHeight(); size_t maxJ = image_->getWidth(); // We are looking for black/white/black/white/black modules in // 1:1:3:1:1 ratio; this tracks the number of such modules seen so far // As this is used often, we use an integer array instead of vector int stateCount[5]; bool done = false; // Let's assume that the maximum version QR Code we support takes up 1/4 // the height of the image, and then account for the center being 3 // modules in size. This gives the smallest number of pixels the center // could be, so skip this often. When trying harder, look for all // QR versions regardless of how dense they are. int iSkip = (3 * int(maxI)) / (4 * MAX_MODULES); if (iSkip < MIN_SKIP || tryHarder) { iSkip = MIN_SKIP; } // This is slightly faster than using the Ref. Efficiency is important here BitMatrix& matrix = *image_; for (size_t i = iSkip - 1; i < maxI && !done; i += iSkip) { // Get a row of black/white values memset(stateCount, 0, sizeof(stateCount)); int currentState = 0; for (size_t j = 0; j < maxJ; j++) { if (matrix.get(int(j), int(i))) { // Black pixel if ((currentState & 1) == 1) { // Counting white pixels currentState++; } stateCount[currentState]++; } else { // White pixel if ((currentState & 1) == 0) { // Counting black pixels if (currentState == 4) { // A winner? if (foundPatternCross(stateCount)) { // Yes bool confirmed = handlePossibleCenter(stateCount, i, j); if (confirmed) { // Start examining every other line. Checking each line turned out to be too // expensive and didn't improve performance. iSkip = 2; if (hasSkipped_) { done = haveMultiplyConfirmedCenters(); } else { int rowSkip = findRowSkip(); if (rowSkip > stateCount[2]) { // Skip rows between row of lower confirmed center // and top of presumed third confirmed center // but back up a bit to get a full chance of detecting // it, entire width of center of finder pattern // Skip by rowSkip, but back off by stateCount[2] (size // of last center of pattern we saw) to be conservative, // and also back off by iSkip which is about to be // re-added i += rowSkip - stateCount[2] - iSkip; j = maxJ - 1; } } } else { stateCount[0] = stateCount[2]; stateCount[1] = stateCount[3]; stateCount[2] = stateCount[4]; stateCount[3] = 1; stateCount[4] = 0; currentState = 3; continue; } // Clear state to start looking again currentState = 0; memset(stateCount, 0, sizeof(stateCount)); } else { // No, shift counts back by two stateCount[0] = stateCount[2]; stateCount[1] = stateCount[3]; stateCount[2] = stateCount[4]; stateCount[3] = 1; stateCount[4] = 0; currentState = 3; } } else { stateCount[++currentState]++; } } else { // Counting white pixels stateCount[currentState]++; } } } if (foundPatternCross(stateCount)) { bool confirmed = handlePossibleCenter(stateCount, i, maxJ); if (confirmed) { iSkip = stateCount[0]; if (hasSkipped_) { // Found a third one done = haveMultiplyConfirmedCenters(); } } } } if(possibleCenters_.size() < 3) { throw zxing::ReaderException("no possible centers found"); } vector< Ref > patternInfo = selectBestPatterns(); if(patternInfo.size() != 3) { throw zxing::ReaderException("no pattern info found"); } vector< Ref > patternInfoResPoints; for(size_t i=0; i(patternInfo[i])); ResultPoint::orderBestPatterns(patternInfoResPoints); patternInfo.clear(); for(size_t i=0; i(static_cast( &*patternInfoResPoints[i] ))); Ref result(new FinderPatternInfo(patternInfo)); return result; } Ref FinderPatternFinder::getImage() { return image_; } vector >& FinderPatternFinder::getPossibleCenters() { return possibleCenters_; } bool FinderPatternFinder::crossCheckDiagonal(int startI, int centerJ, int maxCount, int originalStateCountTotal) const { int *stateCount = getCrossCheckStateCount(); // Start counting up, left from center finding black center mass int i = 0; while (startI >= i && centerJ >= i && image_->get(centerJ - i, startI - i)) { stateCount[2]++; i++; } if (startI < i || centerJ < i) { return false; } // Continue up, left finding white space while (startI >= i && centerJ >= i && !image_->get(centerJ - i, startI - i) && stateCount[1] <= maxCount) { stateCount[1]++; i++; } // If already too many modules in this state or ran off the edge: if (startI < i || centerJ < i || stateCount[1] > maxCount) { return false; } // Continue up, left finding black border while (startI >= i && centerJ >= i && image_->get(centerJ - i, startI - i) && stateCount[0] <= maxCount) { stateCount[0]++; i++; } if (stateCount[0] > maxCount) { return false; } int maxI = image_->getHeight(); int maxJ = image_->getWidth(); // Now also count down, right from center i = 1; while (startI + i < maxI && centerJ + i < maxJ && image_->get(centerJ + i, startI + i)) { stateCount[2]++; i++; } // Ran off the edge? if (startI + i >= maxI || centerJ + i >= maxJ) { return false; } while (startI + i < maxI && centerJ + i < maxJ && !image_->get(centerJ + i, startI + i) && stateCount[3] < maxCount) { stateCount[3]++; i++; } if (startI + i >= maxI || centerJ + i >= maxJ || stateCount[3] >= maxCount) { return false; } while (startI + i < maxI && centerJ + i < maxJ && image_->get(centerJ + i, startI + i) && stateCount[4] < maxCount) { stateCount[4]++; i++; } if (stateCount[4] >= maxCount) { return false; } // If we found a finder-pattern-like section, but its size is more than 100% different than // the original, assume it's a false positive int stateCountTotal = stateCount[0] + stateCount[1] + stateCount[2] + stateCount[3] + stateCount[4]; return abs(stateCountTotal - originalStateCountTotal) < 2 * originalStateCountTotal && foundPatternCross(stateCount); } int *FinderPatternFinder::getCrossCheckStateCount() const { memset(crossCheckStateCount, 0, sizeof(crossCheckStateCount)); return crossCheckStateCount; } double FinderPatternFinder::squaredDistance(Ref a, Ref b) { double x = a->getX() - b->getX(); double y = a->getY() - b->getY(); return x * x + y * y; } yubioath-desktop/QZXing/zxing/zxing/qrcode/detector/QRFinderPatternInfo.cpp000066400000000000000000000023101412677075700274610ustar00rootroot00000000000000/* * FinderPatternInfo.cpp * zxing * * Created by Christian Brunschen on 13/05/2008. * Copyright 2008 ZXing authors All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include namespace zxing { namespace qrcode { FinderPatternInfo::FinderPatternInfo(std::vector > patternCenters) : bottomLeft_(patternCenters[0]), topLeft_(patternCenters[1]), topRight_(patternCenters[2]) { } Ref FinderPatternInfo::getBottomLeft() { return bottomLeft_; } Ref FinderPatternInfo::getTopLeft() { return topLeft_; } Ref FinderPatternInfo::getTopRight() { return topRight_; } } } yubioath-desktop/QZXing/zxing/zxing/qrcode/encoder/000077500000000000000000000000001412677075700227435ustar00rootroot00000000000000yubioath-desktop/QZXing/zxing/zxing/qrcode/encoder/BlockPair.h000066400000000000000000000016531412677075700247670ustar00rootroot00000000000000#ifndef BLOCKPAIR_H #define BLOCKPAIR_H #include #include #include using namespace std; namespace zxing { namespace qrcode { class BlockPair { private: ArrayRef data_; ArrayRef errorCorrection_; public: BlockPair(ArrayRef data, ArrayRef errorCorrection) : data_(data), errorCorrection_(errorCorrection) {} BlockPair(const BlockPair& other) : data_(other.data_), errorCorrection_(other.errorCorrection_) {} ArrayRef getDataBytes() { return data_; } ArrayRef getErrorCorrectionBytes() { return errorCorrection_; } BlockPair& operator=(const BlockPair &other) { data_->release(); errorCorrection_->release(); data_ = other.data_; errorCorrection_ = other.errorCorrection_; return *this; } }; } } #endif //BLOCKPAIR_H yubioath-desktop/QZXing/zxing/zxing/qrcode/encoder/ByteMatrix.cpp000066400000000000000000000032221412677075700255360ustar00rootroot00000000000000#include "ByteMatrix.h" #include namespace zxing { namespace qrcode { ByteMatrix::ByteMatrix(size_t width, size_t height) : width_(width), height_(height) { bytes_.resize(height_); for(size_t i=0; i > ByteMatrix::getArray() const { return bytes_; } void ByteMatrix::set(size_t x, size_t y, const zxing::byte value) { bytes_[y][x] = value; } void ByteMatrix::set(size_t x, size_t y, size_t value) { bytes_[y][x] = (zxing::byte) value; } void ByteMatrix::set(size_t x, size_t y, bool value) { bytes_[y][x] = (zxing::byte) (value ? 1 : 0); } void ByteMatrix::clear(const zxing::byte value) { for (size_t y = 0; y < height_; y++) { for (size_t x = 0; x < width_; x++) { bytes_[y][x] = value; } } } const std::string ByteMatrix::toString() const { std::stringstream result;// = new StringBuilder(2 * width * height + 2); for (size_t y = 0; y < height_; y++) { const std::vector& bytesY = bytes_[y]; for (size_t x = 0; x < width_; x++) { switch (bytesY[x]) { case 0: result << " 0"; break; case 1: result << " 1"; break; default: result << " "; break; } } result << '\n' ; } return result.str(); } } } yubioath-desktop/QZXing/zxing/zxing/qrcode/encoder/ByteMatrix.h000066400000000000000000000014201412677075700252010ustar00rootroot00000000000000#ifndef BYTEMATRIX_H #define BYTEMATRIX_H #include #include #include #include namespace zxing { namespace qrcode { class ByteMatrix : public Counted { private: std::vector< std::vector > bytes_; size_t width_; size_t height_; public: ByteMatrix(size_t width, size_t height); size_t getHeight() const; size_t getWidth() const; zxing::byte get(size_t x, size_t y) const; std::vector > getArray() const; void set(size_t x, size_t y, const zxing::byte value); void set(size_t x, size_t y, size_t value); void set(size_t x, size_t y, bool value); void clear(const zxing::byte value); const std::string toString() const; }; } } #endif //BYTEMATRIX_H yubioath-desktop/QZXing/zxing/zxing/qrcode/encoder/Encoder.h000066400000000000000000000125701412677075700245000ustar00rootroot00000000000000#ifndef ENCODER_H #define ENCODER_H #include #include #include #include #include #include #include namespace zxing { namespace qrcode { class Encoder { public: static Ref encode(const std::wstring& content, ErrorCorrectionLevel &ecLevel); static Ref encode(const std::wstring& content, ErrorCorrectionLevel &ecLevel, const EncodeHint* hints); /** * @return the code point of the table used in alphanumeric mode or * -1 if there is no corresponding code in the table. */ static int getAlphanumericCode(int code); /** * Choose the best mode by examining the content. Note that 'encoding' is used as a hint; * if it is Shift_JIS, and the input is only double-byte Kanji, then we return {@link Mode#KANJI}. */ static Mode chooseMode(const std::wstring& content, const std::string& encoding = ""); /** * Append mode info. On success, store the result in "bits". */ static void appendModeInfo(const Mode& mode, BitArray &bits); /** * Append length info. On success, store the result in "bits". */ static void appendLengthInfo(int numLetters, const Ref version, const Mode& mode, BitArray& bits); /** * Append "bytes" in "mode" mode (encoding) into "bits". On success, store the result in "bits". */ static void appendBytes(const std::wstring& content, Mode& mode, BitArray& bits, const std::string& encoding); protected: /** * Terminate bits as described in 8.4.8 and 8.4.9 of JISX0510:2004 (p.24). */ static void terminateBits(int numDataBytes, BitArray& bits); /** * Get number of data bytes and number of error correction bytes for block id "blockID". Store * the result in "numDataBytesInBlock", and "numECBytesInBlock". See table 12 in 8.5.1 of * JISX0510:2004 (p.30) */ static void getNumDataBytesAndNumECBytesForBlockID(int numTotalBytes, int numDataBytes, int numRSBlocks, int blockID, std::vector& numDataBytesInBlock, std::vector& numECBytesInBlock); /** * Interleave "bits" with corresponding error correction bytes. On success, store the result in * "result". The interleave rule is complicated. See 8.6 of JISX0510:2004 (p.37) for details. */ static BitArray* interleaveWithECBytes(const BitArray& bits, int numTotalBytes, int numDataBytes, int numRSBlocks); static ArrayRef generateECBytes(const std::vector &dataBytes, int numEcBytesInBlock); static void appendNumericBytes(const std::wstring& content, BitArray& bits); static void appendAlphanumericBytes(const std::wstring& content, BitArray& bits); static void append8BitBytes(const std::wstring& content, BitArray& bits, const std::string& encoding); static void appendKanjiBytes(const std::wstring& content, BitArray& bits); //static bool isOnlyDoubleByteKanji(const std::string& content); private: static int chooseMaskPattern(Ref bits, ErrorCorrectionLevel& ecLevel, Ref version, Ref matrix); static Ref chooseVersion(int numInputBits, const ErrorCorrectionLevel &ecLevel) ; static void appendECI(const zxing::common::CharacterSetECI& eci, BitArray& bits); /** * The mask penalty calculation is complicated. See Table 21 of JISX0510:2004 (p.45) for details. * Basically it applies four rules and summate all penalties. */ static int calculateMaskPenalty(const ByteMatrix& matrix); static int calculateBitsNeeded(const Mode &mode, const BitArray &headerBits, const BitArray &dataBits, const Ref version); static bool willFit(int numInputBits, Ref version, const ErrorCorrectionLevel &ecLevel); static Ref recommendVersion(ErrorCorrectionLevel &ecLevel, Mode &mode, BitArray &headerBits, BitArray &dataBits); /** * Encode "bytes" with the error correction level "ecLevel". The encoding mode will be chosen * internally by chooseMode(). On success, store the result in "qrCode". * * We recommend you to use QRCode::EC_LEVEL_L (the lowest level) for * "getECLevel" since our primary use is to show QR code on desktop screens. We don't need very * strong error correction for this purpose. * * Note that there is no way to encode bytes in MODE_KANJI. We might want to add EncodeWithMode() * with which clients can specify the encoding mode. For now, we don't need the functionality. */ static const int ALPHANUMERIC_TABLE_SIZE; static const int ALPHANUMERIC_TABLE[]; public: //should not be public, temp solution for tests static const std::string DEFAULT_BYTE_MODE_ENCODING; }; } } #endif // ENCODER_H yubioath-desktop/QZXing/zxing/zxing/qrcode/encoder/MaskUtil.cpp000066400000000000000000000160471412677075700252100ustar00rootroot00000000000000#include "MaskUtil.h" #include #include #include namespace zxing { namespace qrcode { // Penalty weights from section 6.8.2.1 const int MaskUtil::N1 = 3; const int MaskUtil::N2 = 3; const int MaskUtil::N3 = 40; const int MaskUtil::N4 = 10; /** * Apply mask penalty rule 1 and return the penalty. Find repetitive cells with the same color and * give penalty to them. Example: 00000 or 11111. */ int MaskUtil::applyMaskPenaltyRule1(const ByteMatrix& matrix) { return applyMaskPenaltyRule1Internal(matrix, true) + applyMaskPenaltyRule1Internal(matrix, false); } /** * Apply mask penalty rule 2 and return the penalty. Find 2x2 blocks with the same color and give * penalty to them. This is actually equivalent to the spec's rule, which is to find MxN blocks and give a * penalty proportional to (M-1)x(N-1), because this is the number of 2x2 blocks inside such a block. */ int MaskUtil::applyMaskPenaltyRule2(const ByteMatrix& matrix) { int penalty = 0; const std::vector >& array = matrix.getArray(); size_t width = matrix.getWidth(); size_t height = matrix.getHeight(); for (size_t y = 0; y < height - 1; y++) { const std::vector& arrayY = array[y]; for (size_t x = 0; x < width - 1; x++) { int value = arrayY[x]; if (value == arrayY[x + 1] && value == array[y + 1][x] && value == array[y + 1][x + 1]) { penalty++; } } } return N2 * penalty; } /** * Apply mask penalty rule 3 and return the penalty. Find consecutive runs of 1:1:3:1:1:4 * starting with black, or 4:1:1:3:1:1 starting with white, and give penalty to them. If we * find patterns like 000010111010000, we give penalty once. */ int MaskUtil::applyMaskPenaltyRule3(const ByteMatrix& matrix) { int numPenalties = 0; const std::vector >& array = matrix.getArray(); int width = int(matrix.getWidth()); int height = int(matrix.getHeight()); for (int y = 0; y < height; y++) { for (int x = 0; x < width; x++) { const std::vector& arrayY = array[size_t(y)]; // We can at least optimize this access if (x + 6 < width && arrayY[size_t(x)] == 1 && arrayY[size_t(x + 1)] == 0 && arrayY[size_t(x + 2)] == 1 && arrayY[size_t(x + 3)] == 1 && arrayY[size_t(x + 4)] == 1 && arrayY[size_t(x + 5)] == 0 && arrayY[size_t(x + 6)] == 1 && (isWhiteHorizontal(arrayY, x - 4, x) || isWhiteHorizontal(arrayY, x + 7, x + 11))) { numPenalties++; } if (y + 6 < height && array[size_t(y)][size_t(x)] == 1 && array[size_t(y + 1)][size_t(x)] == 0 && array[size_t(y + 2)][size_t(x)] == 1 && array[size_t(y + 3)][size_t(x)] == 1 && array[size_t(y + 4)][size_t(x)] == 1 && array[size_t(y + 5)][size_t(x)] == 0 && array[size_t(y + 6)][size_t(x)] == 1 && (isWhiteVertical(array, x, y - 4, y) || isWhiteVertical(array, x, y + 7, y + 11))) { numPenalties++; } } } return numPenalties * N3; } bool MaskUtil::isWhiteHorizontal(const std::vector& rowArray, int from, int to) { from = std::max(from, 0); to = std::min(to, int(rowArray.size())); for (int i = from; i < to; i++) { if (rowArray[size_t(i)] == 1) { return false; } } return true; } bool MaskUtil::isWhiteVertical(const std::vector > &array, int col, int from, int to) { from = std::max(from, 0); to = std::min(to, int(array.size())); for (int i = from; i < to; i++) { if (array[size_t(i)][size_t(col)] == 1) { return false; } } return true; } /** * Apply mask penalty rule 4 and return the penalty. Calculate the ratio of dark cells and give * penalty if the ratio is far from 50%. It gives 10 penalty for 5% distance. */ int MaskUtil::applyMaskPenaltyRule4(const ByteMatrix& matrix) { int numDarkCells = 0; const std::vector >& array = matrix.getArray(); size_t width = matrix.getWidth(); size_t height = matrix.getHeight(); for (size_t y = 0; y < height; y++) { const std::vector& arrayY = array[y]; for (size_t x = 0; x < width; x++) { if (arrayY[x] == 1) { numDarkCells++; } } } int numTotalCells = int(matrix.getHeight() * matrix.getWidth()); int fivePercentVariances = ::abs(numDarkCells * 2 - numTotalCells) * 10 / numTotalCells; return fivePercentVariances * N4; } /** * Return the mask bit for "getMaskPattern" at "x" and "y". See 8.8 of JISX0510:2004 for mask * pattern conditions. */ bool MaskUtil::getDataMaskBit(int maskPattern, int x, int y) { int intermediate; int temp; switch (maskPattern) { case 0: intermediate = (y + x) & 0x1; break; case 1: intermediate = y & 0x1; break; case 2: intermediate = x % 3; break; case 3: intermediate = (y + x) % 3; break; case 4: intermediate = ((y / 2) + (x / 3)) & 0x1; break; case 5: temp = y * x; intermediate = (temp & 0x1) + (temp % 3); break; case 6: temp = y * x; intermediate = ((temp & 0x1) + (temp % 3)) & 0x1; break; case 7: temp = y * x; intermediate = ((temp % 3) + ((y + x) & 0x1)) & 0x1; break; default: throw IllegalArgumentException("Invalid mask pattern"); } return intermediate == 0; } /** * Helper function for applyMaskPenaltyRule1. We need this for doing this calculation in both * vertical and horizontal orders respectively. */ int MaskUtil::applyMaskPenaltyRule1Internal(const ByteMatrix& matrix, bool isHorizontal) { int penalty = 0; int iLimit = int(isHorizontal ? matrix.getHeight() : matrix.getWidth()); int jLimit = int(isHorizontal ? matrix.getWidth() : matrix.getHeight()); const std::vector >& array = matrix.getArray(); for (int i = 0; i < iLimit; i++) { int numSameBitCells = 0; int prevBit = -1; for (int j = 0; j < jLimit; j++) { int bit = isHorizontal ? array[size_t(i)][size_t(j)] : array[size_t(j)][size_t(i)]; if (bit == prevBit) { numSameBitCells++; } else { if (numSameBitCells >= 5) { penalty += N1 + (numSameBitCells - 5); } numSameBitCells = 1; // Include the cell itself. prevBit = bit; } } if (numSameBitCells >= 5) { penalty += N1 + (numSameBitCells - 5); } } return penalty; } } } yubioath-desktop/QZXing/zxing/zxing/qrcode/encoder/MaskUtil.h000066400000000000000000000041101412677075700246410ustar00rootroot00000000000000#ifndef MASKUTIL_H #define MASKUTIL_H #include "ByteMatrix.h" #include namespace zxing { namespace qrcode { class MaskUtil { private: static const int N1; static const int N2; static const int N3; static const int N4; static bool isWhiteHorizontal(const std::vector& rowArray, int from, int to); static bool isWhiteVertical(const std::vector >& array, int col, int from, int to); /** * Helper function for applyMaskPenaltyRule1. We need this for doing this calculation in both * vertical and horizontal orders respectively. */ static int applyMaskPenaltyRule1Internal(const ByteMatrix& matrix, bool isHorizontal); public: /** * Apply mask penalty rule 1 and return the penalty. Find repetitive cells with the same color and * give penalty to them. Example: 00000 or 11111. */ static int applyMaskPenaltyRule1(const ByteMatrix& matrix); /** * Apply mask penalty rule 2 and return the penalty. Find 2x2 blocks with the same color and give * penalty to them. This is actually equivalent to the spec's rule, which is to find MxN blocks and give a * penalty proportional to (M-1)x(N-1), because this is the number of 2x2 blocks inside such a block. */ static int applyMaskPenaltyRule2(const ByteMatrix& matrix); /** * Apply mask penalty rule 3 and return the penalty. Find consecutive runs of 1:1:3:1:1:4 * starting with black, or 4:1:1:3:1:1 starting with white, and give penalty to them. If we * find patterns like 000010111010000, we give penalty once. */ static int applyMaskPenaltyRule3(const ByteMatrix& matrix); /** * Apply mask penalty rule 4 and return the penalty. Calculate the ratio of dark cells and give * penalty if the ratio is far from 50%. It gives 10 penalty for 5% distance. */ static int applyMaskPenaltyRule4(const ByteMatrix& matrix); /** * Return the mask bit for "getMaskPattern" at "x" and "y". See 8.8 of JISX0510:2004 for mask * pattern conditions. */ static bool getDataMaskBit(int maskPattern, int x, int y); }; } } #endif // MASKUTIL_H yubioath-desktop/QZXing/zxing/zxing/qrcode/encoder/MatrixUtil.cpp000066400000000000000000000351341412677075700255570ustar00rootroot00000000000000#include "MatrixUtil.h" #include "MaskUtil.h" #include #include "QRCode.h" namespace zxing { namespace qrcode { const int MatrixUtil::POSITION_DETECTION_PATTERN[7][7] = { {1, 1, 1, 1, 1, 1, 1}, {1, 0, 0, 0, 0, 0, 1}, {1, 0, 1, 1, 1, 0, 1}, {1, 0, 1, 1, 1, 0, 1}, {1, 0, 1, 1, 1, 0, 1}, {1, 0, 0, 0, 0, 0, 1}, {1, 1, 1, 1, 1, 1, 1}, }; const int MatrixUtil::POSITION_ADJUSTMENT_PATTERN[5][5] = { {1, 1, 1, 1, 1}, {1, 0, 0, 0, 1}, {1, 0, 1, 0, 1}, {1, 0, 0, 0, 1}, {1, 1, 1, 1, 1}, }; // From Appendix E. Table 1, JIS0510X:2004 (p 71). The table was double-checked by komatsu. const int MatrixUtil::POSITION_ADJUSTMENT_PATTERN_COORDINATE_TABLE[40][7] = { {-1, -1, -1, -1, -1, -1, -1}, // Version 1 { 6, 18, -1, -1, -1, -1, -1}, // Version 2 { 6, 22, -1, -1, -1, -1, -1}, // Version 3 { 6, 26, -1, -1, -1, -1, -1}, // Version 4 { 6, 30, -1, -1, -1, -1, -1}, // Version 5 { 6, 34, -1, -1, -1, -1, -1}, // Version 6 { 6, 22, 38, -1, -1, -1, -1}, // Version 7 { 6, 24, 42, -1, -1, -1, -1}, // Version 8 { 6, 26, 46, -1, -1, -1, -1}, // Version 9 { 6, 28, 50, -1, -1, -1, -1}, // Version 10 { 6, 30, 54, -1, -1, -1, -1}, // Version 11 { 6, 32, 58, -1, -1, -1, -1}, // Version 12 { 6, 34, 62, -1, -1, -1, -1}, // Version 13 { 6, 26, 46, 66, -1, -1, -1}, // Version 14 { 6, 26, 48, 70, -1, -1, -1}, // Version 15 { 6, 26, 50, 74, -1, -1, -1}, // Version 16 { 6, 30, 54, 78, -1, -1, -1}, // Version 17 { 6, 30, 56, 82, -1, -1, -1}, // Version 18 { 6, 30, 58, 86, -1, -1, -1}, // Version 19 { 6, 34, 62, 90, -1, -1, -1}, // Version 20 { 6, 28, 50, 72, 94, -1, -1}, // Version 21 { 6, 26, 50, 74, 98, -1, -1}, // Version 22 { 6, 30, 54, 78, 102, -1, -1}, // Version 23 { 6, 28, 54, 80, 106, -1, -1}, // Version 24 { 6, 32, 58, 84, 110, -1, -1}, // Version 25 { 6, 30, 58, 86, 114, -1, -1}, // Version 26 { 6, 34, 62, 90, 118, -1, -1}, // Version 27 { 6, 26, 50, 74, 98, 122, -1}, // Version 28 { 6, 30, 54, 78, 102, 126, -1}, // Version 29 { 6, 26, 52, 78, 104, 130, -1}, // Version 30 { 6, 30, 56, 82, 108, 134, -1}, // Version 31 { 6, 34, 60, 86, 112, 138, -1}, // Version 32 { 6, 30, 58, 86, 114, 142, -1}, // Version 33 { 6, 34, 62, 90, 118, 146, -1}, // Version 34 { 6, 30, 54, 78, 102, 126, 150}, // Version 35 { 6, 24, 50, 76, 102, 128, 154}, // Version 36 { 6, 28, 54, 80, 106, 132, 158}, // Version 37 { 6, 32, 58, 84, 110, 136, 162}, // Version 38 { 6, 26, 54, 82, 110, 138, 166}, // Version 39 { 6, 30, 58, 86, 114, 142, 170}, // Version 40 }; // Type info cells at the left top corner. const int MatrixUtil::TYPE_INFO_COORDINATES[16][2] = { {8, 0}, {8, 1}, {8, 2}, {8, 3}, {8, 4}, {8, 5}, {8, 7}, {8, 8}, {7, 8}, {5, 8}, {4, 8}, {3, 8}, {2, 8}, {1, 8}, {0, 8}, }; // From Appendix D in JISX0510:2004 (p. 67) const int MatrixUtil::VERSION_INFO_POLY = 0x1f25; // 1 1111 0010 0101 // From Appendix C in JISX0510:2004 (p.65). const int MatrixUtil::TYPE_INFO_POLY = 0x537; const int MatrixUtil::TYPE_INFO_MASK_PATTERN = 0x5412; void MatrixUtil::buildMatrix(const BitArray& dataBits, const ErrorCorrectionLevel& ecLevel, Version& version, int maskPattern, ByteMatrix& matrix) { clearMatrix(matrix); embedBasicPatterns(version, matrix); // Type information appear with any version. embedTypeInfo(ecLevel, maskPattern, matrix); // Version info appear if version >= 7. maybeEmbedVersionInfo(version, matrix); // Data should be embedded at end. embedDataBits(dataBits, maskPattern, matrix); } void MatrixUtil::embedBasicPatterns(const Version& version, ByteMatrix& matrix) { // Let's get started with embedding big squares at corners. embedPositionDetectionPatternsAndSeparators(matrix); // Then, embed the dark dot at the left bottom corner. embedDarkDotAtLeftBottomCorner(matrix); // Position adjustment patterns appear if version >= 2. maybeEmbedPositionAdjustmentPatterns(version, matrix); // Timing patterns should be embedded after position adj. patterns. embedTimingPatterns(matrix); } // Embed type information. On success, modify the matrix. void MatrixUtil::embedTypeInfo(const ErrorCorrectionLevel& ecLevel, int maskPattern, ByteMatrix& matrix) { BitArray typeInfoBits; makeTypeInfoBits(ecLevel, maskPattern, typeInfoBits); for (int i = 0; i < typeInfoBits.getSize(); ++i) { // Place bits in LSB to MSB order. LSB (least significant bit) is the last value in // "typeInfoBits". bool bit = typeInfoBits.get(typeInfoBits.getSize() - 1 - i); // Type info bits at the left top corner. See 8.9 of JISX0510:2004 (p.46). int x1 = TYPE_INFO_COORDINATES[i][0]; int y1 = TYPE_INFO_COORDINATES[i][1]; matrix.set(size_t(x1), size_t(y1), bit); if (i < 8) { // Right top corner. int x2 = int(matrix.getWidth()) - i - 1; int y2 = 8; matrix.set(size_t(x2), size_t(y2), bit); } else { // Left bottom corner. int x2 = 8; int y2 = int(matrix.getHeight()) - 7 + (i - 8); matrix.set(size_t(x2), size_t(y2), bit); } } } void MatrixUtil::maybeEmbedVersionInfo(const Version& version, ByteMatrix& matrix) { if (version.getVersionNumber() < 7) { // Version info is necessary if version >= 7. return; // Don't need version info. } BitArray versionInfoBits; makeVersionInfoBits(version, versionInfoBits); int bitIndex = 6 * 3 - 1; // It will decrease from 17 to 0. for (size_t i = 0; i < 6; ++i) { for (size_t j = 0; j < 3; ++j) { // Place bits in LSB (least significant bit) to MSB order. boolean bit = versionInfoBits.get(bitIndex); bitIndex--; // Left bottom corner. matrix.set(i, matrix.getHeight() - 11 + j, bit); // Right bottom corner. matrix.set(matrix.getHeight() - 11 + j, i, bit); } } } void MatrixUtil::embedDataBits(const BitArray& dataBits, int maskPattern, ByteMatrix& matrix) { int bitIndex = 0; int direction = -1; // Start from the right bottom cell. int x = int(matrix.getWidth()) - 1; int y = int(matrix.getHeight()) - 1; while (x > 0) { // Skip the vertical timing pattern. if (x == 6) { x -= 1; } while (y >= 0 && y < int(matrix.getHeight())) { for (int i = 0; i < 2; ++i) { int xx = x - i; // Skip the cell if it's not empty. if (!isEmpty(matrix.get(size_t(xx), size_t(y)))) { continue; } boolean bit; if (bitIndex < dataBits.getSize()) { bit = dataBits.get(bitIndex); ++bitIndex; } else { // Padding bit. If there is no bit left, we'll fill the left cells with 0, as described // in 8.4.9 of JISX0510:2004 (p. 24). bit = false; } // Skip masking if mask_pattern is -1. if (maskPattern != -1 && MaskUtil::getDataMaskBit(maskPattern, xx, y)) { bit = !bit; } matrix.set(size_t(xx), size_t(y), bit); } y += direction; } direction = -direction; // Reverse the direction. y += direction; x -= 2; // Move to the left. } // All bits should be consumed. if (bitIndex != dataBits.getSize()) { throw zxing::WriterException("Not all bits consumed"); } } int MatrixUtil::findMSBSet(int value) { int sizeOfTypeBits = (sizeof(int)*8); int sample = ( value < 0 ) ? 0 : value; int leadingZeros = ( value < 0 ) ? 0 : sizeOfTypeBits; while(sample) { sample >>= 1; --leadingZeros; } return sizeOfTypeBits - leadingZeros; } int MatrixUtil::calculateBCHCode(int value, int poly) { // If poly is "1 1111 0010 0101" (version info poly), msbSetInPoly is 13. We'll subtract 1 // from 13 to make it 12. int msbSetInPoly = findMSBSet(poly); value <<= msbSetInPoly - 1; // Do the division business using exclusive-or operations. while (findMSBSet(value) >= msbSetInPoly) { value ^= poly << (findMSBSet(value) - msbSetInPoly); } // Now the "value" is the remainder (i.e. the BCH code) return value; } // Make bit vector of type information. On success, store the result in "bits" and return true. // Encode error correction level and mask pattern. See 8.9 of // JISX0510:2004 (p.45) for details. void MatrixUtil::makeTypeInfoBits(const ErrorCorrectionLevel& ecLevel, int maskPattern, BitArray& bits) { if (!QRCode::isValidMaskPattern(maskPattern)) { throw WriterException("Invalid mask pattern"); } int typeInfo = (ecLevel.bits() << 3) | maskPattern; bits.appendBits(typeInfo, 5); int bchCode = calculateBCHCode(typeInfo, TYPE_INFO_POLY); bits.appendBits(bchCode, 10); BitArray maskBits; maskBits.appendBits(TYPE_INFO_MASK_PATTERN, 15); bits.xor_(maskBits); if (bits.getSize() != 15) { // Just in case. throw WriterException("makeTypeInfoBits() failed, should not happen"); } } // Make bit vector of version information. On success, store the result in "bits" and return true. // See 8.10 of JISX0510:2004 (p.45) for details. void MatrixUtil::makeVersionInfoBits(const Version& version, BitArray& bits) { bits.appendBits(version.getVersionNumber(), 6); int bchCode = calculateBCHCode(version.getVersionNumber(), VERSION_INFO_POLY); bits.appendBits(bchCode, 12); if (bits.getSize() != 18) { // Just in case. throw WriterException("makeVersionInfoBits() failed, should not happen"); } } void MatrixUtil::embedTimingPatterns(ByteMatrix& matrix) { // -8 is for skipping position detection patterns (size 7), and two horizontal/vertical // separation patterns (size 1). Thus, 8 = 7 + 1. for (size_t i = 8; i < matrix.getWidth() - 8; ++i) { zxing::byte bit = (i + 1) % 2; // Horizontal line. if (isEmpty(matrix.get(i, 6))) { matrix.set(i, 6, bit); } // Vertical line. if (isEmpty(matrix.get(6, i))) { matrix.set(6, i, bit); } } } void MatrixUtil::embedDarkDotAtLeftBottomCorner(ByteMatrix& matrix) { if (matrix.get(8, matrix.getHeight() - 8) == 0) { throw WriterException(); } matrix.set(8, matrix.getHeight() - 8, zxing::byte(1)); } void MatrixUtil::embedHorizontalSeparationPattern(size_t xStart, size_t yStart, ByteMatrix& matrix) { for (size_t x = 0; x < 8; ++x) { if (!isEmpty(matrix.get(xStart + x, yStart))) { throw WriterException(); } matrix.set(size_t(xStart + x), size_t(yStart), zxing::byte(0)); } } void MatrixUtil::embedVerticalSeparationPattern(size_t xStart, size_t yStart, ByteMatrix& matrix) { for (size_t y = 0; y < 7; ++y) { if (!isEmpty(matrix.get(xStart, yStart + y))) { throw WriterException(); } matrix.set(xStart, yStart + y, zxing::byte(0)); } } void MatrixUtil::embedPositionAdjustmentPattern(size_t xStart, size_t yStart, ByteMatrix& matrix) { for (size_t y = 0; y < 5; ++y) { for (size_t x = 0; x < 5; ++x) { matrix.set(xStart + x, yStart + y, zxing::byte(POSITION_ADJUSTMENT_PATTERN[y][x])); } } } void MatrixUtil::embedPositionDetectionPattern(size_t xStart, size_t yStart, ByteMatrix& matrix) { for (size_t y = 0; y < 7; ++y) { for (size_t x = 0; x < 7; ++x) { matrix.set(xStart + x, yStart + y, zxing::byte(POSITION_DETECTION_PATTERN[y][x])); } } } void MatrixUtil::embedPositionDetectionPatternsAndSeparators(ByteMatrix& matrix) { // Embed three big squares at corners. size_t pdpWidth = 7;//need to change this, old version: POSITION_DETECTION_PATTERN[0].length; // Left top corner. embedPositionDetectionPattern(0, 0, matrix); // Right top corner. embedPositionDetectionPattern(matrix.getWidth() - pdpWidth, 0, matrix); // Left bottom corner. embedPositionDetectionPattern(0, matrix.getWidth() - pdpWidth, matrix); // Embed horizontal separation patterns around the squares. size_t hspWidth = 8; // Left top corner. embedHorizontalSeparationPattern(0, hspWidth - 1, matrix); // Right top corner. embedHorizontalSeparationPattern(matrix.getWidth() - hspWidth, hspWidth - 1, matrix); // Left bottom corner. embedHorizontalSeparationPattern(0, matrix.getWidth() - hspWidth, matrix); // Embed vertical separation patterns around the squares. size_t vspSize = 7; // Left top corner. embedVerticalSeparationPattern(vspSize, 0, matrix); // Right top corner. embedVerticalSeparationPattern(matrix.getHeight() - vspSize - 1, 0, matrix); // Left bottom corner. embedVerticalSeparationPattern(vspSize, matrix.getHeight() - vspSize, matrix); } void MatrixUtil::maybeEmbedPositionAdjustmentPatterns(const Version& version, ByteMatrix& matrix) { if (version.getVersionNumber() < 2) { // The patterns appear if version >= 2 return; } int index = version.getVersionNumber() - 1; const int *coordinates = POSITION_ADJUSTMENT_PATTERN_COORDINATE_TABLE[index]; size_t numCoordinates = 7; //POSITION_ADJUSTMENT_PATTERN_COORDINATE_TABLE[index].length; //need to change the constant 7 for (size_t i = 0; i < numCoordinates; i++) { int y = coordinates[i]; if(y < 0) continue; for (size_t j = 0; j < numCoordinates; j++) { int x = coordinates[j]; if (x < 0) continue; // If the cell is unset, we embed the position adjustment pattern here. if (isEmpty(matrix.get(size_t(x), size_t(y)))) { // -2 is necessary since the x/y coordinates point to the center of the pattern, not the // left top corner. embedPositionAdjustmentPattern(size_t(x) - 2, size_t(y) - 2, matrix); } } } } } } yubioath-desktop/QZXing/zxing/zxing/qrcode/encoder/MatrixUtil.h000066400000000000000000000142131412677075700252170ustar00rootroot00000000000000#ifndef MATRIXUTIL_H #define MATRIXUTIL_H //package com.google.zxing.qrcode.encoder; //import com.google.zxing.WriterException; //import com.google.zxing.common.BitArray; //import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel; //import com.google.zxing.qrcode.decoder.Version; #include "ByteMatrix.h" #include #include #include namespace zxing { namespace qrcode { class MatrixUtil { private: MatrixUtil() {} static const int POSITION_DETECTION_PATTERN[7][7]; static const int POSITION_ADJUSTMENT_PATTERN[5][5]; static const int POSITION_ADJUSTMENT_PATTERN_COORDINATE_TABLE[40][7]; static const int TYPE_INFO_COORDINATES[16][2]; static const int VERSION_INFO_POLY; static const int TYPE_INFO_POLY; static const int TYPE_INFO_MASK_PATTERN; private: // Check if "value" is empty. static bool isEmpty(int value) { return value == 255; } //static bool isEmpty(int value) { return value == -1; } static void embedTimingPatterns(ByteMatrix& matrix); // Embed the lonely dark dot at left bottom corner. JISX0510:2004 (p.46) static void embedDarkDotAtLeftBottomCorner(ByteMatrix& matrix); static void embedHorizontalSeparationPattern(size_t xStart, size_t yStart, ByteMatrix& matrix); static void embedVerticalSeparationPattern(size_t xStart, size_t yStart, ByteMatrix& matrix); // Note that we cannot unify the function with embedPositionDetectionPattern() despite they are // almost identical, since we cannot write a function that takes 2D arrays in different sizes in // C/C++. We should live with the fact. static void embedPositionAdjustmentPattern(size_t xStart, size_t yStart, ByteMatrix& matrix); static void embedPositionDetectionPattern(size_t xStart, size_t yStart, ByteMatrix& matrix); // Embed position detection patterns and surrounding vertical/horizontal separators. static void embedPositionDetectionPatternsAndSeparators(ByteMatrix& matrix); // Embed position adjustment patterns if need be. static void maybeEmbedPositionAdjustmentPatterns(const Version& version, ByteMatrix& matrix); public: // Set all cells to -1. -1 means that the cell is empty (not set yet). static void clearMatrix(ByteMatrix& matrix) { matrix.clear((zxing::byte) -1); } // Embed basic patterns. On success, modify the matrix and return true. // The basic patterns are: // - Position detection patterns // - Timing patterns // - Dark dot at the left bottom corner // - Position adjustment patterns, if need be static void embedBasicPatterns(const Version& version, ByteMatrix& matrix); // Embed type information. On success, modify the matrix. static void embedTypeInfo(const ErrorCorrectionLevel& ecLevel, int maskPattern, ByteMatrix& matrix); // Embed version information if need be. On success, modify the matrix and return true. // See 8.10 of JISX0510:2004 (p.47) for how to embed version information. static void maybeEmbedVersionInfo(const Version& version, ByteMatrix& matrix); // Embed "dataBits" using "getMaskPattern". On success, modify the matrix and return true. // For debugging purposes, it skips masking process if "getMaskPattern" is -1. // See 8.7 of JISX0510:2004 (p.38) for how to embed data bits. static void embedDataBits(const BitArray& dataBits, int maskPattern, ByteMatrix& matrix); // Return the position of the most significant bit set (to one) in the "value". The most // significant bit is position 32. If there is no bit set, return 0. Examples: // - findMSBSet(0) => 0 // - findMSBSet(1) => 1 // - findMSBSet(255) => 8 static int findMSBSet(int value); // Calculate BCH (Bose-Chaudhuri-Hocquenghem) code for "value" using polynomial "poly". The BCH // code is used for encoding type information and version information. // Example: Calculation of version information of 7. // f(x) is created from 7. // - 7 = 000111 in 6 bits // - f(x) = x^2 + x^1 + x^0 // g(x) is given by the standard (p. 67) // - g(x) = x^12 + x^11 + x^10 + x^9 + x^8 + x^5 + x^2 + 1 // Multiply f(x) by x^(18 - 6) // - f'(x) = f(x) * x^(18 - 6) // - f'(x) = x^14 + x^13 + x^12 // Calculate the remainder of f'(x) / g(x) // x^2 // __________________________________________________ // g(x) )x^14 + x^13 + x^12 // x^14 + x^13 + x^12 + x^11 + x^10 + x^7 + x^4 + x^2 // -------------------------------------------------- // x^11 + x^10 + x^7 + x^4 + x^2 // // The remainder is x^11 + x^10 + x^7 + x^4 + x^2 // Encode it in binary: 110010010100 // The return value is 0xc94 (1100 1001 0100) // // Since all coefficients in the polynomials are 1 or 0, we can do the calculation by bit // operations. We don't care if cofficients are positive or negative. static int calculateBCHCode(int value, int poly); // Make bit vector of version information. On success, store the result in "bits" and return true. // See 8.10 of JISX0510:2004 (p.45) for details. static void makeVersionInfoBits(const Version& version, BitArray& bits); // Make bit vector of type information. On success, store the result in "bits" and return true. // Encode error correction level and mask pattern. See 8.9 of // JISX0510:2004 (p.45) for details. static void makeTypeInfoBits(const ErrorCorrectionLevel& ecLevel, int maskPattern, BitArray& bits); // Build 2D matrix of QR Code from "dataBits" with "ecLevel", "version" and "getMaskPattern". On // success, store the result in "matrix" and return true. static void buildMatrix(const BitArray& dataBits, const ErrorCorrectionLevel &ecLevel, Version& version, int maskPattern, ByteMatrix& matrix); }; } } #endif //MATRIXUTIL_H yubioath-desktop/QZXing/zxing/zxing/qrcode/encoder/QRCode.cpp000066400000000000000000000033351412677075700245700ustar00rootroot00000000000000#include "QRCode.h" #include namespace zxing { namespace qrcode { QRCode::QRCode() : ecLevel_ptr_(NULL), version_ptr_(NULL), maskPattern_(-1), matrix_ptr_(NULL) {} QRCode::~QRCode() { } Mode QRCode::getMode() const { return mode_; } Ref QRCode::getECLevel() const { return ecLevel_ptr_; } Ref QRCode::getVersion() const { return version_ptr_; } int QRCode::getMaskPattern() const { return maskPattern_; } Ref QRCode::getMatrix() const { return matrix_ptr_; } std::string QRCode::toString() const { std::stringstream result; result << "<<"; result << "\n mode: "; result << mode_.getName(); result << "\n ecLevel: "; if(!ecLevel_ptr_.empty()) result << ecLevel_ptr_->name(); else result << "null"; result << "\n version: "; if(version_ptr_) { std::string version_str; std::ostringstream convert; convert << version_ptr_->getVersionNumber(); version_str = convert.str(); result << version_str; } else result << "null"; result << "\n maskPattern: "; result << maskPattern_; if (matrix_ptr_) result << "\n matrix:\n" << matrix_ptr_->toString(); else result << "\n matrix: null\n"; result << "\n>>"; return result.str(); } void QRCode::setMode(const Mode& value) { mode_ = value; } void QRCode::setECLevel(Ref value) { ecLevel_ptr_ = value; } void QRCode::setVersion(Ref version) { version_ptr_ = version; } void QRCode::setMaskPattern(int value) { maskPattern_ = value; } void QRCode::setMatrix(Ref value) { matrix_ptr_ = value; } } } yubioath-desktop/QZXing/zxing/zxing/qrcode/encoder/QRCode.h000066400000000000000000000020751412677075700242350ustar00rootroot00000000000000#ifndef QRCODE_H #define QRCODE_H #include #include #include #include "ByteMatrix.h" #include #include namespace zxing { namespace qrcode { class QRCode : public Counted { private: Mode mode_; Ref ecLevel_ptr_; Ref version_ptr_; int maskPattern_; Ref matrix_ptr_; public: static const int NUM_MASK_PATTERNS = 8; QRCode(); ~QRCode(); Mode getMode() const; Ref getECLevel() const; Ref getVersion() const; int getMaskPattern() const; Ref getMatrix() const; std::string toString() const; void setMode(const Mode &value); void setECLevel(Ref value); void setVersion(Ref version); void setMaskPattern(int value); void setMatrix(Ref value); static bool isValidMaskPattern(int maskPattern) { return maskPattern >= 0 && maskPattern < NUM_MASK_PATTERNS; } }; } } #endif //QRCODE_H yubioath-desktop/QZXing/zxing/zxing/qrcode/encoder/QREncoder.cpp000066400000000000000000000546571412677075700253120ustar00rootroot00000000000000#include "Encoder.h" #include "MaskUtil.h" #include #include #include #include #include "BlockPair.h" #include #include #include #include "MatrixUtil.h" #include #include #include #include namespace zxing { namespace qrcode { const int Encoder::ALPHANUMERIC_TABLE_SIZE = 96; // The original table is defined in the table 5 of JISX0510:2004 (p.19). const int Encoder::ALPHANUMERIC_TABLE[Encoder::ALPHANUMERIC_TABLE_SIZE] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // 0x00-0x0f -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // 0x10-0x1f 36, -1, -1, -1, 37, 38, -1, -1, -1, -1, 39, 40, -1, 41, 42, 43, // 0x20-0x2f 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 44, -1, -1, -1, -1, -1, // 0x30-0x3f -1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, // 0x40-0x4f 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, -1, -1, -1, -1, -1, // 0x50-0x5f }; const std::string Encoder::DEFAULT_BYTE_MODE_ENCODING = "ISO-8859-1"; int Encoder::calculateMaskPenalty(const ByteMatrix& matrix) { return MaskUtil::applyMaskPenaltyRule1(matrix) + MaskUtil::applyMaskPenaltyRule2(matrix) + MaskUtil::applyMaskPenaltyRule3(matrix) + MaskUtil::applyMaskPenaltyRule4(matrix); } Ref Encoder::encode(const std::wstring& content, ErrorCorrectionLevel &ecLevel) { return encode(content, ecLevel, ZXING_NULLPTR); } Ref Encoder::encode(const std::wstring& content, ErrorCorrectionLevel &ecLevel, const EncodeHint* hints) { // Determine what character encoding has been specified by the caller, if any std::string encoding = hints == ZXING_NULLPTR ? "" : hints->getCharacterSet(); if (encoding.empty()) encoding = DEFAULT_BYTE_MODE_ENCODING; // Pick an encoding mode appropriate for the content. Note that this will not attempt to use // multiple modes / segments even if that were more efficient. Twould be nice. Mode mode = chooseMode(content, encoding); // This will store the header information, like mode and // length, as well as "header" segments like an ECI segment. BitArray headerBits; // Append ECI segment if applicable if (mode == Mode::BYTE && DEFAULT_BYTE_MODE_ENCODING != encoding) { zxing::common::CharacterSetECI const * eci = zxing::common::CharacterSetECI::getCharacterSetECIByName(encoding); if (eci != ZXING_NULLPTR) { appendECI(*eci, headerBits); } } // (With ECI in place,) Write the mode marker appendModeInfo(mode, headerBits); // Collect data within the main segment, separately, to count its size if needed. Don't add it to // main payload yet. BitArray dataBits; appendBytes(content, mode, dataBits, encoding); Ref version; if (hints != ZXING_NULLPTR/* && hints->containsKey(EncodeHintType.QR_VERSION)*/) { version = Version::getVersionForNumber(1); //should version number be passed as argument? int bitsNeeded = calculateBitsNeeded(mode, headerBits, dataBits, version); if (!willFit(bitsNeeded, version, ecLevel)) { throw WriterException("Data too big for requested version"); } } else { version = recommendVersion(ecLevel, mode, headerBits, dataBits); } BitArray headerAndDataBits; headerAndDataBits.appendBitArray(headerBits); // Find "length" of main segment and write it int numLetters = (mode == Mode::BYTE) ? dataBits.getSizeInBytes() : int(content.length()); appendLengthInfo(numLetters, version, mode, headerAndDataBits); // Put data together into the overall payload headerAndDataBits.appendBitArray(dataBits); zxing::qrcode::ECBlocks &ecBlocks = version->getECBlocksForLevel(ecLevel); int numDataBytes = version->getTotalCodewords() - ecBlocks.getTotalECCodewords(); // Terminate the bits properly. terminateBits(numDataBytes, headerAndDataBits); // Interleave data bits with error correction code. Ref finalBits(interleaveWithECBytes(headerAndDataBits, version->getTotalCodewords(), numDataBytes, int(ecBlocks.numBlocks()))); Ref qrCode(new QRCode); qrCode->setECLevel(Ref(new ErrorCorrectionLevel(ecLevel))); qrCode->setMode(mode); qrCode->setVersion(version); // Choose the mask pattern and set to "qrCode". int dimension = version->getDimensionForVersion(); Ref matrix(new ByteMatrix(size_t(dimension), size_t(dimension))); int maskPattern = chooseMaskPattern(finalBits, ecLevel, version, matrix); qrCode->setMaskPattern(maskPattern); // Build the matrix and set it to "qrCode". MatrixUtil::buildMatrix(*finalBits, ecLevel, *version, maskPattern, *matrix); qrCode->setMatrix(matrix); return qrCode; //return NULL; } bool Encoder::willFit(int numInputBits, Ref version, const ErrorCorrectionLevel &ecLevel) { // In the following comments, we use numbers of Version 7-H. // numBytes = 196 int numBytes = version->getTotalCodewords(); // getNumECBytes = 130 ECBlocks& ecBlocks = version->getECBlocksForLevel(ecLevel); int numEcBytes = ecBlocks.getTotalECCodewords(); // getNumDataBytes = 196 - 130 = 66 int numDataBytes = numBytes - numEcBytes; int totalInputBytes = (numInputBits + 7) / 8; return numDataBytes >= totalInputBytes; } /** * @return the code point of the table used in alphanumeric mode or * -1 if there is no corresponding code in the table. */ int Encoder::getAlphanumericCode(int code) { if (code > 0 && code < ALPHANUMERIC_TABLE_SIZE) { return ALPHANUMERIC_TABLE[code]; } return -1; } /** * Choose the best mode by examining the content. Note that 'encoding' is used as a hint; * if it is Shift_JIS, and the input is only double-byte Kanji, then we return {@link Mode#KANJI}. */ Mode Encoder::chooseMode(const std::wstring& content, const std::string& encoding) { if (encoding == "Shift_JIS") { std::cout << "DEBUG: Shift_JIS detected...be aware!" << std::endl; return Mode::BYTE; } bool hasNumeric = false; bool hasAlphanumeric = false; for (size_t i = 0; i < content.size(); i++) { wchar_t c = content.at(i); if (c >= '0' && c <= '9') { hasNumeric = true; } else if (getAlphanumericCode(c) != -1) { hasAlphanumeric = true; } else { return Mode::BYTE; } } if (hasAlphanumeric) { return Mode::ALPHANUMERIC; } if (hasNumeric) { return Mode::NUMERIC; } return Mode::BYTE; } //bool Encoder::isOnlyDoubleByteKanji(const std::string& content) //{ // std::vector bytes; // try { // bytes = content.getBytes("Shift_JIS"); // } catch (UnsupportedEncodingException ignored) { // return false; // } // int length = bytes.length; // if (length % 2 != 0) { // return false; // } // for (int i = 0; i < length; i += 2) { // int byte1 = bytes[i] & 0xFF; // if ((byte1 < 0x81 || byte1 > 0x9F) && (byte1 < 0xE0 || byte1 > 0xEB)) { // return false; // } // } // return true; //} int Encoder::chooseMaskPattern(Ref bits, ErrorCorrectionLevel& ecLevel, Ref version, Ref matrix) { int minPenalty = std::numeric_limits::max(); // Lower penalty is better. int bestMaskPattern = -1; // We try all mask patterns to choose the best one. for (int maskPattern = 0; maskPattern < QRCode::NUM_MASK_PATTERNS; maskPattern++) { MatrixUtil::buildMatrix(*bits, ecLevel, *version, maskPattern, *matrix); int penalty = calculateMaskPenalty(*matrix); if (penalty < minPenalty) { minPenalty = penalty; bestMaskPattern = maskPattern; } } return bestMaskPattern; } Ref Encoder::chooseVersion(int numInputBits, const ErrorCorrectionLevel &ecLevel) { // In the following comments, we use numbers of Version 7-H. for (int versionNum = 1; versionNum <= 40; versionNum++) { Ref version = Version::getVersionForNumber(versionNum); if (willFit(numInputBits, version, ecLevel)) { return version; } } throw WriterException("Data too big"); } /** * Terminate bits as described in 8.4.8 and 8.4.9 of JISX0510:2004 (p.24). */ void Encoder::terminateBits(int numDataBytes, BitArray& bits) { int capacity = numDataBytes << 3; if (bits.getSize() > capacity) { std::string message("data bits cannot fit in the QR Code"); message += zxing::common::StringUtils::intToStr(bits.getSize()); message += " > "; message += zxing::common::StringUtils::intToStr(capacity); throw WriterException(message.c_str()); } for (int i = 0; i < 4 && bits.getSize() < capacity; ++i) { bits.appendBit(false); } // Append termination bits. See 8.4.8 of JISX0510:2004 (p.24) for details. // If the last byte isn't 8-bit aligned, we'll add padding bits. int numBitsInLastByte = bits.getSize() & 7;//% 8; if (numBitsInLastByte > 0) { for (int i = numBitsInLastByte; i < 8; i++) { bits.appendBit(false); } } // If we have more space, we'll fill the space with padding patterns defined in 8.4.9 (p.24). int bitSizeInBytes = bits.getSizeInBytes(); int numPaddingBytes = numDataBytes - bitSizeInBytes; for (int i = 0; i < numPaddingBytes; ++i) { bits.appendBits((i & 0x01) == 0 ? 0xEC : 0x11, 8); } if (bits.getSize() != capacity) { throw WriterException("Bits size does not equal capacity"); } } /** * Get number of data bytes and number of error correction bytes for block id "blockID". Store * the result in "numDataBytesInBlock", and "numECBytesInBlock". See table 12 in 8.5.1 of * JISX0510:2004 (p.30) */ void Encoder::getNumDataBytesAndNumECBytesForBlockID(int numTotalBytes, int numDataBytes, int numRSBlocks, int blockID, std::vector& numDataBytesInBlock, std::vector& numECBytesInBlock) { if (blockID >= numRSBlocks) { throw WriterException("Block ID too large"); } // numRsBlocksInGroup2 = 196 % 5 = 1 int numRsBlocksInGroup2 = numTotalBytes % numRSBlocks; // numRsBlocksInGroup1 = 5 - 1 = 4 int numRsBlocksInGroup1 = numRSBlocks - numRsBlocksInGroup2; // numTotalBytesInGroup1 = 196 / 5 = 39 int numTotalBytesInGroup1 = numTotalBytes / numRSBlocks; // numTotalBytesInGroup2 = 39 + 1 = 40 int numTotalBytesInGroup2 = numTotalBytesInGroup1 + 1; // numDataBytesInGroup1 = 66 / 5 = 13 int numDataBytesInGroup1 = numDataBytes / numRSBlocks; // numDataBytesInGroup2 = 13 + 1 = 14 int numDataBytesInGroup2 = numDataBytesInGroup1 + 1; // numEcBytesInGroup1 = 39 - 13 = 26 int numEcBytesInGroup1 = numTotalBytesInGroup1 - numDataBytesInGroup1; // numEcBytesInGroup2 = 40 - 14 = 26 int numEcBytesInGroup2 = numTotalBytesInGroup2 - numDataBytesInGroup2; // Sanity checks. // 26 = 26 if (numEcBytesInGroup1 != numEcBytesInGroup2) { throw WriterException("EC bytes mismatch"); } // 5 = 4 + 1. if (numRSBlocks != numRsBlocksInGroup1 + numRsBlocksInGroup2) { throw WriterException("RS blocks mismatch"); } // 196 = (13 + 26) * 4 + (14 + 26) * 1 if (numTotalBytes != ((numDataBytesInGroup1 + numEcBytesInGroup1) * numRsBlocksInGroup1) + ((numDataBytesInGroup2 + numEcBytesInGroup2) * numRsBlocksInGroup2)) { throw WriterException("Total bytes mismatch"); } if (numDataBytesInBlock.empty()) numDataBytesInBlock.resize(1); if (numECBytesInBlock.empty()) numECBytesInBlock.resize(1); if (blockID < numRsBlocksInGroup1) { numDataBytesInBlock[0] = numDataBytesInGroup1; numECBytesInBlock[0] = numEcBytesInGroup1; } else { numDataBytesInBlock[0] = numDataBytesInGroup2; numECBytesInBlock[0] = numEcBytesInGroup2; } } /** * Interleave "bits" with corresponding error correction bytes. On success, store the result in * "result". The interleave rule is complicated. See 8.6 of JISX0510:2004 (p.37) for details. */ BitArray* Encoder::interleaveWithECBytes(const BitArray& bits, int numTotalBytes, int numDataBytes, int numRSBlocks) { // "bits" must have "getNumDataBytes" bytes of data. if (bits.getSizeInBytes() != numDataBytes) { std::string message("Encoder::interleaveWithECBytes: Number of bits ["); message += zxing::common::StringUtils::intToStr(bits.getSizeInBytes()); message += "] and data bytes ["; message += zxing::common::StringUtils::intToStr(numDataBytes); message += "] does not match"; throw WriterException( message.c_str()); } // Step 1. Divide data bytes into blocks and generate error correction bytes for them. We'll // store the divided data bytes blocks and error correction bytes blocks into "blocks". int dataBytesOffset = 0; int maxNumDataBytes = 0; int maxNumEcBytes = 0; // Since, we know the number of reedsolmon blocks, we can initialize the vector with the number. std::vector< BlockPair > blocks; for (int i = 0; i < numRSBlocks; ++i) { std::vector numDataBytesInBlock; std::vector numEcBytesInBlock; getNumDataBytesAndNumECBytesForBlockID( numTotalBytes, numDataBytes, numRSBlocks, i, numDataBytesInBlock, numEcBytesInBlock); int size = numDataBytesInBlock[0]; std::vector dataBytes; dataBytes.resize(size_t(size)); bits.toBytes(8*dataBytesOffset, dataBytes, 0, size); ArrayRef ecBytes = generateECBytes(dataBytes, numEcBytesInBlock[0]); blocks.push_back(BlockPair(ArrayRef(dataBytes.data(), int(dataBytes.size())), ecBytes)); //?? please revisit maxNumDataBytes = max(maxNumDataBytes, size); maxNumEcBytes = max(maxNumEcBytes, ecBytes->size()); dataBytesOffset += numDataBytesInBlock[0]; } if (numDataBytes != dataBytesOffset) { throw WriterException("Data bytes does not match offset"); } BitArray* result = new BitArray; // First, place data blocks. for (int i = 0; i < maxNumDataBytes; ++i) { for (std::vector< BlockPair >::iterator it=blocks.begin(); it != blocks.end(); it++) { ArrayRef dataBytes = it->getDataBytes(); if (i < dataBytes.array_->size()) { result->appendBits(dataBytes[i], 8); ///????? are we sure? } } } // Then, place error correction blocks. for (int i = 0; i < maxNumEcBytes; ++i) { for (std::vector< BlockPair >::iterator it=blocks.begin(); it != blocks.end(); it++) { ArrayRef ecBytes = it->getErrorCorrectionBytes(); if (i < ecBytes.array_->size()) { result->appendBits(ecBytes[i], 8); } } } if (numTotalBytes != result->getSizeInBytes()) { // Should be same. std::string message("Interleaving error: "); message += zxing::common::StringUtils::intToStr(numTotalBytes); message += " and "; message += zxing::common::StringUtils::intToStr(result->getSizeInBytes()); message += " differ."; delete result; throw WriterException(message.c_str()); } return result; } ArrayRef Encoder::generateECBytes(const std::vector& dataBytes, int numEcBytesInBlock) { size_t numDataBytes = dataBytes.size(); std::vector dataBytesCopy(dataBytes); zxing::ReedSolomonEncoder encoder(GenericGF::QR_CODE_FIELD_256); encoder.encode(dataBytesCopy, numEcBytesInBlock); ArrayRef ecBytes(numEcBytesInBlock); for (int i = 0; i < numEcBytesInBlock; i++) { ecBytes[i] = dataBytesCopy[numDataBytes + size_t(i)]; } return ecBytes; } /** * Append mode info. On success, store the result in "bits". */ void Encoder::appendModeInfo(const Mode& mode, BitArray& bits) { bits.appendBits(mode.getBits(), 4); } /** * Append length info. On success, store the result in "bits". */ void Encoder::appendLengthInfo(int numLetters, const Ref version, const Mode& mode, BitArray& bits) { int numBits = mode.getCharacterCountBits(version); if (numLetters >= (1 << numBits)) { std::string message = zxing::common::StringUtils::intToStr(numLetters); message += " is bigger than "; message += zxing::common::StringUtils::intToStr((1 << numBits) - 1); throw WriterException(message.c_str()); } bits.appendBits(numLetters, numBits); } /** * Append "bytes" in "mode" mode (encoding) into "bits". On success, store the result in "bits". */ void Encoder::appendBytes(const std::wstring& content, Mode& mode, BitArray& bits, const std::string& encoding) { if (mode == Mode::NUMERIC) appendNumericBytes(content, bits); else if (mode == Mode::ALPHANUMERIC) appendAlphanumericBytes(content, bits); else if (mode == Mode::BYTE) append8BitBytes(content, bits, encoding); else if (mode == Mode::KANJI) appendKanjiBytes(content, bits); else { std::string message("Invalid mode: "); message += mode.getName(); throw WriterException(message.c_str()); } } void Encoder::appendNumericBytes( const std::wstring& content, BitArray& bits) { size_t length = content.size(); size_t i = 0; while (i < length) { int num1 = content.at(i) - '0'; if (i + 2 < length) { // Encode three numeric letters in ten bits. int num2 = content.at(i + 1) - '0'; int num3 = content.at(i + 2) - '0'; bits.appendBits(num1 * 100 + num2 * 10 + num3, 10); i += 3; } else if (i + 1 < length) { // Encode two numeric letters in seven bits. int num2 = content.at(i + 1) - '0'; bits.appendBits(num1 * 10 + num2, 7); i += 2; } else { // Encode one numeric letter in four bits. bits.appendBits(num1, 4); i++; } } } void Encoder::appendAlphanumericBytes(const std::wstring& content, BitArray& bits) { size_t length = content.length(); size_t i = 0; while (i < length) { int code1 = getAlphanumericCode(content.at(i)); if (code1 == -1) { throw WriterException(); } if (i + 1 < length) { int code2 = getAlphanumericCode(content.at(i + 1)); if (code2 == -1) { throw WriterException(); } // Encode two alphanumeric letters in 11 bits. bits.appendBits(code1 * 45 + code2, 11); i += 2; } else { // Encode one alphanumeric letter in six bits. bits.appendBits(code1, 6); i++; } } } void Encoder::append8BitBytes(const std::wstring& content, BitArray& bits, const std::string& /*encoding*/) { //TODO: find a pure C++ solution instead of Qt-specific QString str = QString::fromStdWString(content); QByteArray array = str.toUtf8(); for (int i=0; i= 0x8140 && code <= 0x9ffc) { subtracted = code - 0x8140; } else if (code >= 0xe040 && code <= 0xebbf) { subtracted = code - 0xc140; } if (subtracted == -1) { throw WriterException("Invalid byte sequence"); } int encoded = ((subtracted >> 8) * 0xc0) + (subtracted & 0xff); bits.appendBits(encoded, 13); } } void Encoder::appendECI(const zxing::common::CharacterSetECI& eci, BitArray& bits) { bits.appendBits(Mode::ECI.getBits(), 4); // This is correct for values up to 127, which is all we need now. bits.appendBits(eci.getValue(), 8); } int Encoder::calculateBitsNeeded(const Mode &mode, const BitArray &headerBits, const BitArray &dataBits, const Ref version) { return headerBits.getSize() + mode.getCharacterCountBits(version) + dataBits.getSize(); } Ref Encoder::recommendVersion(ErrorCorrectionLevel &ecLevel, Mode &mode, BitArray &headerBits, BitArray &dataBits) { // Hard part: need to know version to know how many bits length takes. But need to know how many // bits it takes to know version. First we take a guess at version by assuming version will be // the minimum, 1: int provisionalBitsNeeded = calculateBitsNeeded(mode, headerBits, dataBits, Version::getVersionForNumber(1)); Ref provisionalVersion = chooseVersion(provisionalBitsNeeded, ecLevel); // Use that guess to calculate the right version. I am still not sure this works in 100% of cases. int bitsNeeded = calculateBitsNeeded(mode, headerBits, dataBits, provisionalVersion); return chooseVersion(bitsNeeded, ecLevel); } } } yubioath-desktop/README000066400000000000000000000033121412677075700152500ustar00rootroot00000000000000== Yubico Authenticator Cross-platform application for generating Open Authentication (OATH) time-based TOTP and event-based HOTP one-time password codes, with the help of a YubiKey that protects the shared secrets. image:screenshot.png[] === Features * Add a credential by scanning a QR code on the screen * Favorite your most frequently used credentials for easy access * Keep your secret seeds safe by storing them on a YubiKey * Require a touch on the YubiKey to generate the code * Protect your credentials with a device password * Connect an external smart card reader and use the YubiKey over NFC === Supported devices Usage of this software requires a compatible YubiKey. Yubico Authenticator is capable of provisioning and using both slot-based credentials (compatible with any YubiKey that supports OTP) and the more powerful standalone OATH functionality found on the NEO, YubiKey 4 and YubiKey 5 series. To use the standalone OATH functionality your YubiKey must have the CCID mode enabled, which can be done by using the https://developers.yubico.com/yubikey-manager-qt/[YubiKey Manager]. === Installation Downloads for all supported operating systems are available on the https://developers.yubico.com/yubioath-desktop/Releases/[Yubico Authenticator release page]. === System Requirements The following operating systems are supported. The application may still run on other platforms. * Windows 8.1 or later * macOS High Sierra 10.13 or later * Ubuntu 16.04 LTS or later On Linux systems, make sure the `pcscd` service is installed and running. === CLI Looking for a command line option? That is available in the https://developers.yubico.com/yubikey-manager/[YubiKey Manager CLI] with the `ykman oath` commands. yubioath-desktop/README.adoc000077700000000000000000000000001412677075700170312READMEustar00rootroot00000000000000yubioath-desktop/build_qrc.py000077500000000000000000000017611412677075700167170ustar00rootroot00000000000000#!/usr/bin/env python import os import sys import json def read_conf(fname): if not os.path.isfile(fname): return {} with open(fname, 'r') as conf: return json.load(conf) def build_qrc(resources): yield '' yield '' for d in resources: for root, dirs, files in os.walk(d): dirs.sort() files.sort() for f in files: yield '{}'.format(os.path.join(root, f)) yield '' yield '' def build_resources(resources, target): with open(target, 'w') as f: for line in build_qrc(resources): f.write(line + os.linesep) def build(source): conf = read_conf(source) target = os.path.basename(source) if '.' in target: target = target.rsplit('.', 1)[0] target += '.qrc' build_resources(conf.get('resources', []), target) if __name__ == '__main__': build(sys.argv[1] if len(sys.argv) >= 1 else 'resources.json') yubioath-desktop/deployment.pri000066400000000000000000000003621412677075700172660ustar00rootroot00000000000000unix:!android { isEmpty(target.path) { qnx { target.path = /tmp/$${TARGET}/bin } else { target.path = /usr/bin } export(target.path) } INSTALLS += target } export(INSTALLS) yubioath-desktop/doc/000077500000000000000000000000001412677075700151365ustar00rootroot00000000000000yubioath-desktop/doc/development.adoc000066400000000000000000000044501412677075700203130ustar00rootroot00000000000000== Project outline Yubico Authenticator is a Qt5 application written in QML that uses the plugin PyOtherSide to enable the backend logic to be written in Python 3. The python library yubikey-manager is needed to communicate with the YubiKey, and may be installed from pip or other package managers. If a specific version, (or branch or commit) is needed for development, point to that version in requirements.txt. == Build requirements Yubico Authenticator currently requires Qt version 5.12 or higher. == Working with the code === Install dependencies It's assumed a Python environment with pip is installed. ==== Windows Install https://www.qt.io/download[Qt5]. Build and install the Qt5 plugin http://pyotherside.readthedocs.io/en/latest/#building-pyotherside[PyOtherSide]. Make sure the http://www.swig.org/[swig] executable is in your PATH. Add http://libusb.info/[libusb] and https://developers.yubico.com/yubikey-personalization/[ykpers] DLLs to the root of the repository of ykman (after setting up the project). ==== macOS $ brew install python3 swig ykpers libusb qt # Allow access to qmake - see https://superuser.com/a/1153338/104372 $ brew link qt --force Build and install the Qt5 plugin http://pyotherside.readthedocs.io/en/latest/#building-pyotherside[PyOtherSide]. ==== Linux (Debian-based distributions) $ sudo add-apt-repository -y ppa:yubico/stable $ sudo apt update $ sudo apt install python3-yubikey-manager Install Qt 5.12+ with offical installer. Build and install the Qt5 plugin http://pyotherside.readthedocs.io/en/latest/#building-pyotherside[PyOtherSide] === Setup the repository $ git clone https://github.com/Yubico/yubioath-desktop.git $ cd yubioath-desktop === Compile the app $ qmake && make === Run the app: $ yubioath-desktop == Code Style & Linting This project uses http://flake8.pycqa.org/[Flake8] (for the python parts) and qmllint (for the QML parts) for code style with a http://pre-commit.com/[pre-commit] hook. To use these: $ pip install pre-commit flake8 $ pre-commit install == QR decoder The third party library QZXing, based on commit https://github.com/ftylitak/qzxing/commit/4715b242cc08582a0c31aad94d74251b77821a29[4715b24], is needed to decode QR codes found in images. The library is already included in the repo. yubioath-desktop/docker/000077500000000000000000000000001412677075700156405ustar00rootroot00000000000000yubioath-desktop/docker/xenial-appimage/000077500000000000000000000000001412677075700207015ustar00rootroot00000000000000yubioath-desktop/docker/xenial-appimage/Dockerfile000066400000000000000000000055731412677075700227050ustar00rootroot00000000000000FROM ubuntu:xenial RUN apt-get update -qq \ && apt-get install -qq software-properties-common \ && add-apt-repository -y ppa:yubico/stable \ && add-apt-repository -y ppa:beineri/opt-qt-5.15.2-xenial \ && apt-get -qq update \ && apt-get -qq upgrade RUN apt-get install -y git make build-essential g++ libssl-dev zlib1g-dev libbz2-dev \ devscripts equivs python3-dev python3-pip python3-venv wget fuse \ qt515base qt515declarative qt515xmlpatterns qt515script qt515tools qt515multimedia \ qt515svg qt515graphicaleffects qt515imageformats qt515translations qt515quickcontrols \ qt515sensors qt515serialbus qt515serialport qt515x11extras qt515quickcontrols2 \ qt515connectivity qt515scxml qt515wayland qt515remoteobjects qtbase5-dev \ desktop-file-utils libglib2.0-bin qtchooser python3-pip python mesa-common-dev curl swig \ libpcsclite-dev libffi-dev ENV QT_BASE_DIR=/opt/qt515 \ QT_DIR=/opt/qt515 \ PYTHON_CFLAGS=-fPIC \ PYTHON_CONFIGURE_OPTS=--enable-shared ENV LD_LIBRARY_PATH=$QT_BASE_DIR/lib/x86_64-linux-gnu:$QT_BASE_DIR/lib:$LD_LIBRARY_PATH \ PKG_CONFIG_PATH=$QT_BASE_DIR/lib/pkgconfig:$PKG_CONFIG_PATH \ PATH=/root/.pyenv/bin:$QT_BASE_DIR/bin:$PATH RUN curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash \ && eval "$(pyenv init --path)" \ && pyenv update \ && pyenv install --force 3.8.7 \ && pyenv global 3.8.7 \ && wget https://github.com/thp/pyotherside/archive/1.5.9.tar.gz \ && tar -xzvf 1.5.9.tar.gz \ && echo "DEFINES += QT_NO_DEBUG_OUTPUT" >> pyotherside-1.5.9/src/src.pro \ && cd pyotherside-1.5.9/src \ && qmake \ && make \ && make install COPY . yubioath-desktop RUN mkdir -p yubioath-desktop/appDir/usr \ && eval "$(pyenv init --path)" \ && pyenv global 3.8.7 \ && cd yubioath-desktop \ && pip3 install --upgrade pip \ && pip3 install -r requirements.txt \ && cp -R /root/.pyenv/versions/3.8.7/* appDir/usr \ && qmake \ && make \ && cp resources/com.yubico.yubioath.desktop appDir/ \ && cp resources/com.yubico.yubioath.appdata.xml appDir/ \ && cp resources/icons/com.yubico.yubioath.svg appDir/ \ && cp ./yubioath-desktop appDir/usr/bin/ \ && wget -c "https://github.com/probonopd/linuxdeployqt/releases/download/continuous/linuxdeployqt-continuous-x86_64.AppImage" \ && wget -c "https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage" \ && chmod a+x linuxdeployqt*.AppImage \ && chmod a+x appimagetool*.AppImage \ && unset QTDIR \ && unset QT_PLUGIN_PATH \ && unset LD_LIBRARY_PATH CMD cd yubioath-desktop \ && ./linuxdeployqt*.AppImage appDir/usr/bin/yubioath-desktop -qmldir=./qml -bundle-non-qt-libs \ && rm appDir/AppRun \ && cp ./resources/linux/AppRun appDir/ \ && chmod a+x appDir/AppRun \ && ./appimagetool*.AppImage appDir yubioath-desktop/fonts/000077500000000000000000000000001412677075700155225ustar00rootroot00000000000000yubioath-desktop/fonts/Roboto-Black.ttf000066400000000000000000005161001412677075700205220ustar00rootroot00000000000000 GDEFBbGPOSnK!e.GSUBYOS/2v`cmapwXFcvt  .=Zfpgm#gasp glyfV ,hdmxxhead R6hhea ] $hmtx^ѡ8locanAd maxp>D name=Kl(postmd prepC8d( PEX/>YEX/>Y9999 ܲ 9 901!!!!5!(<6 }wx^^^g < 9EX/>YEX / >Y +X!Yа/01!!462"&+gkkkkJ____^ & 9/ 9/а01#3#3+_+vS8S8z !9EX / >YEX/>YEX/>YEX/>Y 9/ +X!Yаа а / +X!Y а аааа01###53#533333!3!#3#dCC,EDEE,C@,f``fQS&Q-r+./9EX / >YEX!/!>Y! 9  в !9  +X!Y +X!Y!$в(! 9!+ +X!Y014.546753!4&#"#5&&5!326NĦx@侟PJBITxDٻQe]DNOZPRlehpSIJWOUlerwQZ (59n6/8/EX/>YEX%/%>Y а / +X!Y +X!Y%а/%, +X!Y2 +X!Y014632#"&532554&#"4632#"&532774&#"'Z:3i831:۱@.a:20:ǝH4A<4CA8ψF/G\g5A=4OrO8A'3dEX/>YEX/>YEX/>Y99 +X!Y"9*91 +X!Y01&&5463265!!'#"$54672776654&#"7;C严L7DTngXP 9\ LC.*@/8@TQɕ5nٲM20em)*FXIfQFd*@1.DG+9/а/01#3!^c?x>F9 //0147&'x@@~P$:gK,Fg8)(>rF9 //01'65'7r@@4Z6h=-g7_1 EX/>Y/  /01%73%'`A?6AۭZ`Zv&q-  /а  +X!Y01!!!!!!UV;:y!|+x  9 / +X!Yа/01'7675!ժ"FtxPDvs/ +X!Y01!!YuG EX/>Y +X!Y012#"&46/PjjPQiiG__``/EX/>Y01#3}-UL H9EX / >YEX/>Y  +X!Y +X!Y01#" %4&#"3267L  RYWORYVRSB% '@,D:EX/>YEX/>Y9/ +X!Y901!!%3D4a;Q[9EX/>YEX/>Y +X!Y99 +X!Y 9901!!5654&#"!46632!QԭRNM`@=t^bbV/Q)r*+9EX/>YEX/>Y9|/ +X!Y 9( +X!Y(9" +X!Y("9013254&#"!46632#"&&5!32654&##ZRCcsnt~SlOYjnaeH[N:se^4*~m{CbcMn\;g W9EX / >YEX/>Y 9/ +X!Yа в 9 9013#!!'5!!ӔGQ95"PJm9EX/>YEX/>Y +X!Y9/ +X!Y9 +X!Y9901!!6632#"&&7!3254#"mYS!$u8}⚉R\Kv: zq|P^LSi#e$%9EX/>YEX/>Y +X!Y9/9 +X!Y +X!Y01#"632#"&'54$3"32654&r돛fCZMgip胍g>-ehk4M3EX/>YEX/>Y +X!Y901!!!M!JTL"-t./9 а#EX/>YEX / >Y) 9|)/ +X!Y)9)9   +X!Y# +X!Y01#"$5467&&54$324&"326"3264&/i\hzxn]j]^_MK\DGHFEEG+j13yu41jZaaZWedmYON``ZOG"[EX / >YEX/>Y 9/ 9 +X!Y +X!Y  +X!Y01#"546632##7$2754&#"m뎐@\rn0^PG`b3b _lrve& /01Dxe'.vPEX/>Yа/01#tah h'/а/ +X!Y +X!Y01!!!!bbEouOEX/>Yа/01%od22!`"#9EX/>YEX / >Y +X!Yа/9 +X!Y 99014>54#"!6632462"&XBMXKξSGk/cLJ____;;3?i0/)/EX/>Yв09/97 +X!Yа0 +X!Y)" +X!Y= +X!Y01#"&'#"&&76323267!"!267# $$ 3267&#" R~#b`C j?3qUsԿ׭ 88T;%=h n ?F/O( py&GAqЄ0D*٩Nl'(1$xTNw LEX/>YEX/>YEX/>Y 9 /O ] +X!Y 901!!!!!TJ9Pn !9аEX/>YEX/>Y9/o]O_qq]r] +X!Y9 +X!Y +X!Y013! 32654''36654&##n %herz_fsbjvq&vkWORP\QE P 9EX / >YEX/>Y 9  +X!Y +X!Y 901# 54$3 !&&#"3267 B~zuyvUHAtgr|n ;EX/>YEX/>Y  +X!Y  +X!Y013!2326554&#n4ͽzCóm?n[ [EX/>YEX/>Y 9 /O r ] +X!Y +X!Y +X!Y01!!!!!!r(in< BEX/>YEX/>Y 9 / +X!Y +X!Y01!!!!!6DRd !9EX / >YEX/>Y 9  +X!Y +X!Y 9/] +X!Y01%# '4$3 !&&#"3275#5!QȺ -xnCSZn^8~AzhX=n/ REX/>YEX / >YEX/>YEX/>Y 9 / ] +X!Y01!!!!!!!/_]`BEX/>YEX/>Y01!!!^$09EX/>YEX/>Y  +X!Y01!#"$5!3265^`EQIOxdZmbn3 L 9EX/>YEX/>YEX/>YEX / >Y9901!!7!!]_z:`~|n0)EX/>YEX/>Y +X!Y01!!!c>_nYEX/>YEX/>YEX/>YEX/>YEX / >Y99 901 !!#!;ED"" PT Gn. L 9EX/>YEX/>YEX/>YEX/>Y9901!!!!!._^vvE?H 9 EX / >YEX/>Y  +X!Y +X!Y01 $'54$324&# 3267?%">RGtkn O 9  EX/>YEX/>Y 9 / +X!Y +X!Y01!!2!32654&'#Efkn_{f]fzHA#H$%9EX/>YEX/>Y +X!Y +X!Y01%#"$'54$324&#"3267Av,,#"[@MFCnc9EX/>YEX/>YEX / >Y9/ +X!Y 9 +X!Y01#!! !3264&##=${0AdefcҘ>ik@(k)*9EX / >YEX/>Y 99] +X!Y  +X!Y9& +X!Y#&9014&$'$546$32!4&#"#"$&5!326]mWm]^mx.a`yWeMV\+ygpυYbS@8[a8ݐuoK$/EX/>YEX/>Y +X!Y01!!!!KS_i=9EX/>YEX / >YEX/>Y +X!Y01# '!3265ampG|9xM89EX/>YEX/>YEX/>Y901!!!"$P ` 9EX/>YEX/>YEX / >YEX/>YEX/>Y99 901!!!!!֧\ÿ]*P>o SEX/>YEX / >YEX/>YEX/>Y999 901!!!!iklj." 1EX/>YEX/>YEX/>Y901!!! {+,y8x[ > FEX/>YEX/>Y +X!Y9 +X!Y 901!!5!!Fkl4$// +X!Y +X!Y01#3!!4vv8/EX/>Y01!!_`'// +X!Y +X!Y01!!53#8ww$t'9EX/>Yв9/01#3#̫+,;)EX/>Yа/01!5!y6b!/]/а/]01!!bd:-N$EX/>YEX/>YEX/>Y +X!Y9 9 / +X!Y 9]^]@ ,<]l|]  +X!Y01!&'#"&54$3354#"!4$ %2675#"]hx ,?Sb>!@u9vʰ!O6".9aKf9 /EX / >YEX/>YEX/>Y 9 9  +X!Y +X!Y01#"'!!632%4&#"3276KȥeQ^SVr,+uw okWRVt94NM9EX/>YEX/>Y +X!Y99 +X!Y01%26'!#"546632!4&#"(GNYEX/>YEX / >Y9 9 +X!Y +X!Y0132!!'#"%327&#"4ǑcRhQp0.p %(r$t(^`=2NnEX/>YEX/>Y9//qq]r  +X!Y +X!Y 9 +X!Y01"5546632!327"!56&j{bzaZ?竔TV)[hpWg^QY e9EX/!>YEX/>YEX/>YEX/>Y +X!Y  +X!Yа013#5354632&#"3#HV4PV S7V9N&$'(9$EX/>YEX/>YEX / >YEX/>Y  +X!Y99 +X!Y$ +X!Y01466327!#"&'73255#"5327&#"7lʆ_ 2w;^aRdZm21lZf%r^qZHo"k/ IJW'J 9/EX/>YEX/>YEX/>Y9  +X!Y01632!4&#"!!lFTh+QƈUVQB\ ? 9EX/>YEX/>Y а / +X!Y01!!!462"&Rhhhh:H\\\\K K9EX/>YEX/>Y  +X!Yа/ +X!Y01#"'5325462"&TK:%hhhh: ]H\\\\a ;/EX/>YEX/>YEX / >Y9901!!7!!_Q"~_-Y01!!!RaNx9EX/>YEX/>YEX/>YEX / >YEX/>YEX/>Y 9 9 +X!Y0163263 !4&#"!4&#"! sHnI 8Jd16La3:r@SLYULY:X'NT 9EX/>YEX/>YEX/>YEX/>Y9  +X!Y01632!4&#"! pũBWc0:GRMN:4HN8EX/>YEX / >Y +X!Y +X!Y0146632#"'%325#"4~ P^\' $"#a`KNp9EX / >YEX / >YEX/>YEX/>Y 9  9  +X!Y +X!Y01#"'!!632%#"32K`; ax(,vmdx VVZ4`Nm9 EX/>YEX/>YEX/>YEX / >Y 9  9 +X!Y +X!Y01327!!#"%327&#"4Ŧd$aQt,*t ($t&n)XVaN Q 9EX / >YEX/>YEX/>Y  +XY@ /?O]901'"!!632o-< U6( dS: #N%#&'9EX / >YEX/>Y 9]]  +X!Y д  ]\ l | ]; K q* : ] 9]# +X!Y дS c ]4 q ]% 5 ]  ]C qr ]014.54632!4#"#"&&5!326ZV5HXIыz;`KEE0+48[Tž;,-8$Tٔd_KE8 Ga9EX/>YEX/>YEX / >Yа/ +X!Y  +X!Yа013#327#"&5#53粲,A2"[cG=0 Y):T 9EX/>YEX / >YEX/>YEX/>Y 9  +X!Y01%#"&5!327!!kQt1SuAS:89EX/>YEX/>YEX/>Y901!!!cd:: ` 9EX/>YEX/>YEX / >YEX/>YEX/>Y 9 9 901!!!!3mC㳴Ck~~:s : SEX/>YEX / >YEX/>YEX/>Y 9 99 901!!!!^+,b*@+K,:D9EX/>YEX/>YEX/>Y9  +X!Y01!#"'532677!iG^BI,GKhb.)5HDB: FEX/>YEX/>Y +X!Y9 +X!Y 901!!5!!i5wz(q=79 /EX/>Y 9/ +X!Y901$54#52556672?~~elҴ20\\0d/EX/>Y01#3d)r=79 /EX/>Y 9/ +X!Y90167547&55&'73")~~?0[[02c^oDA9/9/ +X!Y а +X!Y01#"&&#"'46323265KyA2CL~?3A:bI;cI{N ? 9EX / >YEX/>Y  +X!Yа/01!!"&462+qkkkkoJ____b &&!Y"#9EX/>YEX/>Y +X!Y9 ав9 +X!Y01%26'!#5&554753!4&#"VGN<žȥRENME#TZ5]~gaEX/>YEX/>Y +X!Yв9/ +X!Y аа +X!Y901!!3677'#3'4632!4#"!m;`g93> 31prAX5ŝQUE7+A,-9 EX/>Yа/ +X!Y( +X!Y01%#"''7&547'76327326654&&#"%˞dm›kbylpolmopmk~̡su{vttvwrr Jq9EX/>YEX / >Y 9 9/а/ +X!Y +X!Y аааа01!3!!!!!5!5!53!*e/f6ddw/EX/>Y+01!!!w$$^K-:;<95EX/>YEX/>Y696 +X!Y69 9 +X!Y090) +X!Y0)9!)9$ +X!Y01# $5!3254&$&&547&54$32!4&#"%&'654&Ress\"g\_dp$q:>71Yv8n[gKLr:Hdmf^jKZB:BDKJbD(PDG5",L>O_/ +X!Y аа/01462"&%462"&_WWWWWWWWU7NNnNN77NNnNNU)89:9 а5EX./.>YEX5/5>Y5.9/] .59 /  ] 9 +X!Y +X!Y 95 +X!Y.& +X!Y01 &554632#4&#"3265%32$$#"4$ #"$\\X\ef\YZzKKTմqե`Sq{uQb⭬LZZ %n&'9EX/>Y&9/ 9 / +X!Y 9|/а +X!Y  +XY01&'#"&5463354#"'4632%2675#X M|vftAI(TjLV)R{iny330haQ%<1XAt&r}v%&9/9/ +X!Y01#!5!CvU3<3=>93 а3а3;EX/>YEX / >Y +X!Y +X!Y 9/! 9!/!!]4!94/ +X!Y'49.а!< +X!Y014$ #"$732$$#"#!2#&54&#'32654&'#UKKzk:. BMLeG]ZZ˥⭬LR|n< pD"LC?5F;k#9EX/>Y +X!Y01!5!kJ} 1EX/>Y а /  +X!Y +X!Y014632#"&264&"}rprt5DDjIKuutHhLKjGT F /EX / >Y а  +X!Yа  +X!Y9 ]01!!!!!!!!86&#n\?3[9EX/>YEX/>Y +X!Y99 +X!Y 9901!5%6654#"#4632!21U+2᫈UQJ,UL<+vzK}jD)$u%&9EX / >YEX/>Y 9|/]  +X!Y 9# +XY#9#9 +X!Y013254&#"#4632#"&5332654'#Xe3-#6ઈ;48-m^uR %f}{hx1)hr/2UZ!/]а/]/01!!d`:a 9EX/>YEX/>YEX/>YEX / >YEX / >Y  +X!Y  901327!!'#"'!G[5QYyU@:kd[5J"SRv + 9EX/>YEX/>Y901!#"$54$3!P 4PV / +X!Y012#"&46DQiiQPjjV``__V( 19// а / +XY 9 901%#'254&'7u ưX?G =tM&A9EX/>YEX/>Y9/ +X!Y901#5%3߰|$zu* 5EX/>Y 9 / +X!Y +X!Y0146 #"&5326754&#"u6]PN[]ON]a¦HģbnlaPanmfMs&qW''" EX/>Y01Y''EX / >Y01U'' [,EX / >Y01IO$VEX / >YEX/>Y  +X!Yа/9  +X!Y 99013267!#"&546776?"&4632=HB]C5CKSL\UM PkkPRiiv==Z`GAUNϽSVNBWH__aa;EX/>YEX/>YEX/>Y9/ +X!Y +X!Y 9 / ]  +X!Y +X!Y901!!!!!!!!!3;z D;pIO5 8/ 9 / 9 9 9в 9  0175+%%,}12+Ϸ*QJ )GEX/>YEX/>Y& +X!Y$аа +X!Yа#01#"'#7&54$3273%4'3267%&#"JݺQύǝ#=ytYEX / >Y 9/ 9/  +X!Y +X!Y013#!32654&#ͫSgwvfrЉph^_k*Z+,9EX/!>YEX/>YEX/>Y9 +X!Y9' +X!Y01!!4$32#"&'732654.54654&#" _1TK*;U~YEX/>YEX/>Yа/9 9 / +X!Y 9@ ,<]]9696/6q6r6/6q6] +X!Y# +X!Y&#9* +X!Y . +X!Y3 +X!Y01"'#"&54$7354&#"%4$3262!3277%275#"!54&BpDAHL u~zf~a>QCYPNf=RW 5BBD.BK;+[]ba(4E?H:lvacQY@c+(R)*9EX/!>YEX/>Y9/ +X!Y# +X!Y01#"&&5432&''7&'772655&#"^e1kNll쳣Ml^jBb[dq9>fnvTB%0evaBuf~;qO D/ +X!Y +XY +X!Y +XY +X!Y01!5!462"&462"&O;ffffffff3G]]]]G]]]]4oH$DEX/>YEX/>Y" +X!Y аа +X!Yа014663273#"'#7&&#"4'324~^SEg]NGhQ q'Ԕד9`= (U><_`Hf9/EX / >YEX/>YEX/>Y 9 9  +X!Y +X!Y01#"'!!632%#"32H–^R^t*+uk i TQW4 !"9 /EX / >YEX/>YEX/>Y/]]9/ +X!Y 9 9аа +X!Y  +X!Y01#!'#"325#535!3327&#"hǑcRڨp0.p At((r㿂^`!mEX/>YEX/>Y9/9/а +X!Yаа +X!Y а а013#!!!#535!!5!!5!Huuff_]۷`${:EX/>YEX/>Y01!!!S:v: YEX/>YEX/>YEX/>YEX / >Y9/_] +X!Y 901#!!3!!?xQZ^Nz:{c ]EX / >YEX/>Y 9/а +X!Yа +X!Yа а а 017!!57!c>_55.%%u KEX / !>YEX/>Y 9/а +X!Yааа а017!57!R**((qK9e9EX/>YEX/>YEX / >YEX / >YEX/>Y +X!Y 9 901#"'325!!9XM05u^ L uvZK(Nc 9EX/>YEX/>YEX / >YEX/>Y9  +X!Y +X!Y01632#"'73254&#"! tWI22u=Dm=:V a]J:\#$%9EX / >YEX/>YEX/>YEX/>Y +X!Y9/] +X!Y +X!Y +X!Y  +X!Y01!!#"$54$32!!!!!27&#"~ty {r(Te\f]1  ΨKP(.EX/>YEX/>Y9а/а/,9,/,/,q,],q,r  +X!Y +X!Y 99! +X!Y& +X!Y) +X!Y014663262!3277#"'#"'%325#"%"!54KڋwZ_LPG|؏ Pq*'|~]f$5D$$#^ 3 9EX/!>YEX/>Y  +X!Y0134632&#"^Cd05 sE?^9EX/>YEX/>Y9/ +X!Y +X!Y +X!Y01 5!&&#"6$3 267! ־1="}IyڳtŔnL90ãѫ)|Kt 9EX/!>YEX/>YEX/>YEX/>Y +X!Y  +X!Yаа +X!Y01##"'73265#5354632&#"3ɸYG$3;0Cd.7P >MvV SH$^!%&9! EX / >YEX/>Y 9/ +X!Y  +X!Y! +X!Y01 $'54$3266534&# 3267B#V63K@MFhbPtk2^ 9EX/>YEX/>Y9/  +X!Y +X!Y +X!Y0146632653#"'%325#"2~>9 P^\':Y|$"#ilV9EX/>YEX/>YEX/>Y9/  +X!Y +X!Y01>53# '!3265IP"ͽˊamp8gӢ|9xYEj9EX / >YEX/>YEX/>YEX/>Y9/ +X!Y9 +X!Y01!'#"&5!327!665E kQt1S7.uASflK: )EX/>YEX/>Y  +X!Y01#"'7325VI20v: EB Oh9EX/>YEX/>Y 9 / +X!Y 9 +X!Y  +X!Y012'"55!&&#"'6627!%rv[_LPG商O[h$5Da;/]//а/а/]901!'!53C 7%/]а/]9а/017!#5!"{  kp /01^B +/]а/]  +X!Y 01 &53265BKIk  / ] +XY014632#"&k^HG^^GH^bARRA@RRvG7 *9 /а/?]  а014632#"&264&#"v^]_`0770177VuuVUrr>X<_<+/EX / >Y +XYа/<]01!327#"&547NC<'&I]n'G3>,tbZpuB/а//] а / +X!Y +X!Y 01#"&#"'46323265ubB2 -a2+ .rT,. oI ,.(@/]а/]/а/а//01!#!#,u F9 /@ 0@P`p ]а/S]3] а01462#"&732654&#"rolSRp}'$$'Jcc`aI'' ((r!/]/а/]01!!d:Nw!/]а/]/01!!dOT 2/а/@ /?] +X!Y9 901'654#72PF~9Bh]8K >z7//а/а//]а//01!!!!6q8  f/@  0] +XY01462"&kkkkATTTTtB/а/9/01!#D0Be - /а/а/  +X!Yа а/01!#462"&%462"&$WWWW|WWWW;7NNnNN77NNnNNVxlD,EX/>YEX/>Y +X!Y01!!!D_ : 9 EX/>YEX/>Y +X!Y 90173!!;2]@P^IB"#$9аEX/>YEX/>Y9/]qqO_q]o]q +X!Y +X!Y +X!Y01!! $'54$324&#"3267f<ܞ#"M@MFC%1EX/>YEX/>YEX/>Y901!!!|PQB EX/>YEX/>Y +X!Y9/o]]q?rqO_q]_rr +X!Y  +X!Y01!!!!!!Q_nYXl59EX/>YEX/>YEX/>Y +X!Y01!!!!!5_IV >EX/>YEX/>Y +X!Yа  +X!Y01!!55!!_2\41L7HH("q #$9 а EX/>YEX / >Y 9/  9 / +X!Y аа а +X!Y01!5$54$75!4&'66Đ]~np|1yopx  -t  z{ #] 9EX/>YEX/>YEX/>YEX / >Y 9/а +X!Y 01665!!$!!c[`_^?nA 6- b&^'(9EX/>YEX/>YEX%/%>Y +X!Yаа +X!Y#а$016554&#"!3&'54$323!ADaXWaDHq  e:S,PM.b QU^H<N !9EX/>YEX/>YEX/>YEX / >Y +X!Y  9 9  +X!Y +X!Y01327#"'#"327327&#"B 3JS_ƗYST\--Z:'p!2|̏?Ja()*9EX/>YEX/>YEX / >Y& 9&/&&]O&_&q&]&&q% +X!Y%&9 +X!Y  +X!Y012#"'!4664&#"32654&##576}f[|Ԙ{%SDI]HsWjgcHQкg2*G.tWLYg_)cMoc _: ? 9EX/>YEX / >YEX/>Y9 901!#!#!cds_:5X' ,e -.9 $EX/!>YEX/>Y +X!Y9/* +X!Y*9$ +X!Y014632'&#"#"55467'&32654&'"^]FmMHQݰg\[elT[hܛ ",(L-T# "g퍨e]SM&'(9EX/>YEX / >Y +X!Y# 9#/#]#q#/#q##r#r$ +X!Y$9$#9 +X!Y#9013265!#"$5467&&54$32!4&#"33#"]LYSQkdXdWCEQP3A;)\ $yH0-:0b6x L!"9/EX/>YEX/>Y +X!Y9  +X!Y01'66'6''&&5477!zF[Dh3s:j1-I]l'4[IT&EaESBy0YA0Z`(NT 9EX/>YEX/>YEX/>YEX/>Y9  +X!Y01632!4#"! wm=:MH:lc r 9аEX / >YEX/>Y 9|/]3C]  +X!Y +X!Y  +X!Y01#" !3267!54&#"c  RYVRTRYXPSB% '@9:.j}: )EX/>YEX / >Y +X!Y01327#"&5,A2"[c:0=0mS 9EX/!>YEX/>YEX / >Y +X!Y 9 +X!Y0123#"'!'&#'6*H&6# ]Q{;%cA U%P4Tiw.+Y,-9/EX(/(>Y +X!Y,(9/ +X!Y(9 +X!Y# 901'&#"33# '6654'.5%&54632i7BjPm1)[v=*iY ~{Pc; FPDy0Y>!8@[pbI</:^9EX/>YEX/>YEX / >Y +X!Y  +X!Yааа01#327#"&5#!#5!&,A2"[cH"=0H``KNY9EX/>YEX / >YEX/>Y 9 +X!Y +X!Y012#"'!432774&#"fė]81p VSNxEB-N E!"9/EX/>YEX/>Y +X!Y +X!Y012!4&#"'66'4'&&'54-IAWXZl1m1,SNO_{xE4 5cQDz0YI@)*1}:JEX/>YEX/>Y +X!Y +X!Y +X!Y01##"54335!325#"}QZ@6AQ+!(:K 9EX/>YEX / >Y +X!Y  +X!Yа01!327#"&5!!(0(=Rg8'=1 c:=9EX/>YEX/>YEX/>Y +X!Y013265&!#"&'[QiV9.C:e\'"O$^%&9/EX/>YEX/>YEX/>Yа +X!Y а" +X!Y01$4746632!665&&#"^s^6>pv\XRqs_V- $>UD[ VQ ."9":R/EX/>YEX/>YEX/>YEX / >Y +X!Y а01665&!!$!rra-R: "-")>6AU:!MEX/>YEX/>YEX/>Y +X!Y9 ав90132!3265&!#"'#"7|C>i=D}9j4i:hcf"(t'n()9 EX/>YEX/>Y"9"/ +X!Yв 9 +X!Y"а% +X!Y01#"&&55!32675&5546327%5&#"bYEX / >Y 9 +X!Yа0132'"!&#632~a8d&>KJ>#[@.GX5L:'r ()9 !EX/>YEX/>YEX / >Y +X!Y 9аааа  +X!Y!9%01##"&'#"47#5!&'!325!326}/s66r/yb+*E@hQIAE\kggk"(zq9EX/>YEX / >YEX/>Y +X!Y9/   +X!Y +X!Yа01!63 #52774&#"!!!=tk ydoZr؏j&]oE r  9EX / >YEX/>Y  +X!Y 9|/]3C]]] +X!Y +X!Y01# 54$3 !&&#"!!327 @}z ~ }vUGCx$2"w #$9 EX/>YEX / >YEX/>Y 9/ +X!Y +X!Y +X!Yа013!!#76632654&'7n˯^1i^f|e)}⌍~ҋ C}d^|l-9EX/>YEX/>YEX / >YEX/>Y 9|/3C]]] 9/ +X!Y +X!Y  +X!Y01!!32!!!!32654&' ^ _hggOa.~~A YEX/>YEX/>Y +X!Y9/  +X!Yа01!63 !4&#"!!!^L\A!9s6gN :vi nVW9EX/>YEX / >YEX/>YEX/>YEX/>Y +X!Y013!!!!!35!zD`\<]g`Ph^n ^ 9 EX / >YEX / >Y  +X!Y 9/ +X!Y  +X!Y01!32!!!32654&#F k}|nv׋ax_Zn]9 /EX / >YEX/>Yа +X!Y аааа  +X!Y01!!!367!3!!!gQc-ߛfs6o^ ]EX / >YEX / >YEX/>YEX/>YEX/>YEX/>Yа/C] +X!Yв9 в901#!#!!3!3!!LV*]aJ99;;m>(d')*9EX / >YEX/>Y  +X!Y' 9'/']$ +X!Y$'9 +X!Y014&#"!4663 !"$5!32654&##363k[Ug!ugv}`t[bzhdǪETQBxkd0*AY\JlYZ# EEX/>YEX/>YEX/>YEX/>Y9 901!!!!__Pji$7O9EX/>YEX/>YEX / >Y +X!Y   +X!Y01!!#7667n˯^1i^Pҋ D9EX/>YEX/>YEX/>Y9 +X!Y01!#'32677!rOńG6 :PQu8y}7O0Cs%J // 9/ 9/ +X!Yаа +X!Yа01 !!5 4676!5!"3!32654&QYPZQRR}4MJP.|V < /EX/>YEX/>YEX / >Y +X!Y01!!!3!!V] `^[_+G9EX/>YEX / >YEX/>Y9/ +X!Y01! $'!3767+g_s{OP Cwi gR IEX/>YEX/>YEX/>YEX / >Y +X!Yа01!!!!!j_f]^^Pg*U /EX/>YEX/>YEX/>YEX / >Y +X!Yаа а а01!!!!3!!j_f]^^S^ a9EX/>YEX / >Y 9/  +X!Y +X!Y  +X!Y01!32!!!32654&# ok}|n v׋ax_Znm o9 аEX / >YEX/>YEX/>YEX / >Y 9/ +X!Y +X!Y0132!!!!!32654&#͵ `^=k}|nv׋Pax_Zno O9EX / >YEX/>Y 9/ +X!Y +X!Y0132!!!32654&#ϵ `k}|nv׋ax_Zno  9EX/>YEX/>Y +X!Y9|/]3C]]] +X!Y +X!Y013267!!&&#"!6!2!"$&'o} nsB wO{a$%&9EX / >YEX/>YEX / >YEX/>Y 9|/3C] +X!Y +X!Y! +X!Y01#"$'#!!36$324&# 3267aݺ^ " *tkA c 9 EX / >YEX/>YEX/>Y 9/ +X!Y 9  +X!Y01!#!&54$!!33#"+ )Zji]vPodmMd%d&'9EX/!>YEX/>Y9/999 +X!Y! +X!Y012#"57665!6"32754~oEMwr~4 r7/2}U{ uR:~EX/>YEX/>Y9//qrO_rq]r +X!Y9 +X!Y +X!Y013!232654''32654&##uhd?6hҋ=1YEX/>Y +X!Y01!!!TV6::c9 /EX/>YEX / >Y +X!Yаа  аааа +X!Y016677!3!!!!!#{QIK QjJHL2Y% :9EX / >YEX / >YEX/>YEX/>YEX/>YEX/>Y9/\] +X!Yв9 в901#!#!!3!3!7!ɀ}pBaQd DdzzC{{<M#y"$%9EX/>YEX/>Y +X!Y"9"/"]"/"q"9 +X!Y"9 +X!Y9014#"!4632#"$5!32654'#532pWOQDO@C{j]Hy$A);>6tX&: EEX/>YEX/>YEX/>YEX/>Y9 901!!!!RS:v:u: `9EX/>YEX/>YEX/>YEX / >Y9/\] +X!Y 901#!!3!3!,eRa[7z:{  %:O9EX/>YEX/>YEX/>Y +X!Y  +X!Y01!##7667%j#CA :6u: YEX/>YEX / >YEX/>YEX/>YEX / >Y 9 9 901!!#!!tX8:X": bEX/>YEX / >YEX/>YEX/>Y 9| / ]C ]  ] +X!Y01!!!!!!!"Q'Ro:ZX&:9EX/>YEX/>YEX/>Y +X!Y01!!!!!&6::2EX/>YEX/>Y +X!Yа01!!!!885`"+~,-9а'/EX/>YEX / >YEX/>YEX/>YEX/>Y) +X!Yа! +X!Y&0132!632#"'!#"37'"4&#275׼@?Q:CٹF9?BQ*KJ*, 05] TяX: </EX/>YEX/>YEX / >Y +X!Y01!!!3!!XQ*S:6AP :G9EX/>YEX/>YEX/>Y 9 / +X!Y01!!# $'!327! :*QRu13SE aX? XH: IEX/>YEX/>YEX/>YEX / >Y +X!Yа013!3!!RR:66:Z@:L /EX/>YEX/>YEX/>YEX / >Y +X!Yа 013!3!3!!SQk:66A:#E: ^9EX / >YEX/>Y 9/   +X!Y +X!Y +X!Y0132#!!!32654&#xNUMVbw5G=YEX/>YEX/>YEX / >Y9/ +X!Y +X!Y0132#!!!!32654&#ȭxSSnMWNVbw::G=YEX/>Y 9/  +X!Y  +X!Y0132#!!32654&#ȭxSMWNVbw:G=YEX / >Y +X!Y 9|/CS]9 +X!Y  +X!Y901"!4632#"&5!327#53&YEX/>YEX / >YEX/>Y9|/C]]cs]]]q +X!Y  +X!Y +X!Y0136$32#"$'#!!325#"j$  gR^\<[:ؖ"#+ : c9EX/>YEX/>YEX/>Y9/ +X!Y9 +X!Y01!#!&&54$735#" aiԋQ@BT:f.`1GJK'"#$9/EX/>YEX/>YEX / >Y]/]]"9"/ +X!Y9  +X!Y +X!Yа"01#632#"'73254&#"!#535!3lWI 41uFTh+QڈF WQB,Ne 9EX/>YEX/>Y +X!Y9|/ +X!Y9 +X!Y901%26'!#"546632!4&#"!! GNYEX/>YEX/>Y9/  +X!Y +X!Y +X!Yа013!##766732654&#, i$CA \VMMV:Ϭ6I64EX:9EX/>YEX/>YEX/>YEX / >Y9|/C]]] 9/ +X!Y +X!Y  +X!Y01!!3!!!!32654&#'R QyVMMVϬo:I64E'v 9/EX/>YEX/>YEX/>Y/]]9/ +X!Y9  +X!Yа01#632!4&#"!#535!3lFTh+QUVQBX&: F/EX/>YEX/>YEX/>YEX / >Y +X!Y01!!!!!*S:6h:ega9EX/>YEX / >YEX/>YEX/>YEX / >Y9 +X!Y01#"'#"'!327!327g_\9}??X:a9EX/>YEX / >YEX/>YEX/>YEX/>Y9 +X!Y01#"'#"'!3265!3265rrRPLRGOGA: bsXssXgt9EX/!>YEX / >Y 9/ +X!Y 9/ а а +X!Y  +X!Y01#32!#53!332654#ާRޫMW;ڸ; (MFa($%&9EX#/#>YEX/>YEX!/!>YEX/>Y#!9/]а +X!Y +X!Y +X!Y013! !&&#"!!3267!# #!!D B}w{ ozy^]eJtr|K(cN"#$9EX"/">YEX/>YEX/>YEX/>Y9|/CS]а  +X!Y 9 +X!Y +X!Y90136$32!4&"!!326'!#"$'#!!n QN  MLGN<nRTZ\nmdME?:xd 9 EX/>YEX/>YEX/>YEX / >Y9/ +X!Yв901#!#!373!3?4:|bbP|: WEX/>YEX/>YEX/>YEX / >Y 9 / +X!Yв901###!!!3''A0Pm6##:̯x9EX/>YEX/>YEX/>YEX / >YEX/>YEX/>Y9/ +X!Y а ав901!373!#!#!#!!31?5^}z6Pbbb^:EX/>YEX/>YEX/>YEX/>YEX / >YEX/>Y9/б +X!Y ааав9013!!###!#!!3''mQA1P_S76##o:[|9 EX/>YEX/>YEX / >YEX/>Y9/а  +X!Y ав9 +X!Y01!4&'#!#"!6$%!!`q8Vsc0hGf[ WbT:Zz:x9 EX/>YEX/>YEX / >YEX/>Y9/а +X!Y аа +X!Y01!54&'!"!5667!7#BOSH[iaͷ]VuQ^ʷI " #$9 "EX/>YEX / >YEX/>YEX/>YEX/>YEX/>Y 9 / +X!Y  аав 9 ! +X!Y01!47#!!!!!4&##!#"!#^0at4VscGt\oiGf\ Wbc:{: !"9  EX/>YEX / >YEX/>YEX/>YEX/>YEX/>Y 9 / +X!Yаа  в 9  +X!Y01!547#!!!!!54&'!"7# SNZBOSHGiҾpR:/'ͷ]VuQ^@&/019+/,/EX/>YEX/>Y +X!Y%9%/" +X!Y "%9 +X!Y,],/а////]',/9(а(/014'#3##"&&'46332654!#327!#5!0 7cjSJbl^"ZXYP3§VD  U&/019'+/EX/>YEX/>YEX/>Y +X!Y$9|$/S$]! +X!Y !$9 +X!Y+]+(а(/((]'+(9/а//014'#5!##&&'46332654##53267!#5!2tqR=dp۞MAD"aJCWY8*ł?1{F  UNh  9 а EX / >YEX/>Y +X!Y 9/l|] +X!Y  +X!Y01#"$'54$32267!"!&&N޻#$} + @MFǼ2FNp 9 а EX/>YEX / >Y +X!Y 9|/CS]  +X!Y +X!Y0146632#"'"!&27!2~ j' \G9EX/>YEX/>YEX / >Y 9 +X!Y017663#"!! =ȗ#$'? 'p83³@+0OG9EX/>YEX/>YEX / >Y 9  +X!Y0176632'"!!?7@$8'A d{Mq#>0,:U{N#&T'(9EX/>YEX/>Yаб +X!Yа# +X!Y 01#5&57534&'#553665N-fa_eɻvy%z%=&{%hd h^LTRWa!ڴ4H#]$%9EX/>YEX / >Yа а  +X!Y +X!Yа!014753#5&'6754'#5534ҔєQnjpl''ijno-&5bg/&4seQ%6?5@A95 а5>EX/>YEX/>YEX/>YEX / >Y 9 +X!Y  +X!Y 9 а%а1а1/'а'/& +X!Y'-а-/4 +X!Y1:а:/?а?/012#"'#"'43"327!3254##"&'&#"#543267531''gYFtV8)fQ(/A`;+ 6}qT(;i"xRYEX/>YEX/>YEX / >Y 9 +X!Y  +X!Y 9!а(а4а4/+а+/) +X!Y+0а0/7 +X!Y4=а=/BаB/012#"'#"5543"3275!326554&##"&'&#"#54326753<ճffP_G;w;w;GZU V5)fP(:A`;Nߠjuujᘘjumr(<i"xRYEX / >YEX/>YEX/>YEX / >Y9 +X!Yа"а"/#а#/ +X!Y# а /01#"'#"'!327!327%5!!#5g_\9}??玎X%&'9$EX/>YEX / >YEX/>YEX/>YEX/>Y9 +X!Yа$а$/%а%/ +X!Y%"а"/01#"'#"'!3265!3265%5!!#5rrRPLRGOGA8: bsXssX鎎KK9/EX / >YEX/>Y а  +X!Y +X!Y01!&54$3 !4&#"3i VmgoneV$70i͜PNE9/EX / >YEX/>Y  +X!Y +X!Y01!&55432!4&#"37GBWXSSZ *TZi>/EX/>Y01%#%7%73%W!HݵG%I#%LhFkT/ +X!Y01'7!'2" ~l~x- /а/а/ +X!Y  +X!Y012#54#"#52>j+6eNwI"h:*Nt /а/0153:QܘiDt /а/01'7'3R;Di< '5BO\jE/S/`/8/EX/>Y  +X!YEаEL +X!YаSаSZ +X!Y%а`+а`g +X!Y2а8? +X!Y01462#4&#"4632#4&#"4632#4&"4632#4&#"462#4&#"462#4&#"4632#4&"4632#4&#")stp30.3t]_uq5.-2Hu]_tp5\3t]_tp5.-3Ostp30.3Mttp30.3u]_tp5\35u]_uq5.-3ThhT.750ThgU1450 UghT147.ThhT147.ThhT.77.ThhT.750 UghT147.UggU1450c "'9!// //&/EX/>YEX/>YEX/>Y01#'37%%57%'%'7 z`F: z`F Mu Z@DE&+A_B<aR |bG; |bGDEFEG+ZV8&'6nEX/>Y 01XV&&wsEX/>Y 01gBw9EX / >YEX/>YEX / >Y +X!Y 9/ а а +X!Y  +X!Y01#32!#535!332654#ާRޫMW4ڸ񿒒rMFnO9EX/>YEX/>Y9/ +X!Y +X!Y01!!2'#654&'#327'7Er]}n_2$^{ہ~T7i-YEX / >YEX / >YEX/>Y 9 +X!Y +X!Y01'#"'!!632%#"327'76K_b^Yi`; ax(,v0"v`ZrRr1mdx VVZRmBnW4 3 9EX/>YEX/>Y +X!Y01#!!!!WQ _Zw,EX/>YEX/>Y +X!Y01!!!!Q6:=lh9EX/>YEX/>YEX / >Y +X!Y9/  +X!Y +X!Y01!3 #524&##!!D%=򈅣UZ:L 9 /EX/>YEX/>Y +X!Y9/ +X!Y01!3 '6656!#!!UV"4˥jN 6CAxKd: &QP%:&Ql&,Q<u/:&Qod9EX/>YEX / >YEX/>YEX / >Y9/ +X!Y9 а017!##5#!!333s>'J`Jt::v:\EX / >YEX/>YEX / >YEX/>Y а/  +X!Y 9а01 !##5#!!3533Nu-HQH3i:z:{oEX/>YEX / >YEX/>YEX / >Y9/3C]] +X!Y +X!Y 901#!!!3!!%:pa@3`6:j9EX/>YEX / >YEX/>YEX/>Y 9/ +X!Y +X!Y 901#!!!3!3!oe~a[7z5{ n#&,QzX:&Qonf9EX/>YEX / >YEX/>YEX / >Y9/ +X!Y +X!Y01!!!'!!!!_nBS`Zm: tEX/>YEX / >YEX/>YEX / >Y9|/C]]] +X!Y +X!Y01!!!!!!!'Qo:l9u9EX/>YEX/>YEX/>YEX/>Y9/ +X!Y +X!Y +X!Y013 #524&##!!!!5%=򈅦CU_Z:Y9/EX/>YEX/>YEX/>Y9/  +X!Y +X!Y013 '6656!#!!!!',->˥jN*CAxKZ6:VH'3459(EX / >YEX/>YEX/>YEX/>Y9/  +X!Y +X!Y' +X!Y*а0 +X!Y01"'#"$55463"337&54663236554&#"H⾦QbǨp}zLWg9N<1BO6欎#沌̇pIN"./09#EX/>YEX / >YEX/>Yа/9/  +X!Y +X!Y" +X!Y%а+ +X!Y01"'#"$&554663&55463236554&#"ә~wֆjo^AȚՎCPEe1$#1 3(pygkrԜ kpUCNaVDi&<Q [:&\Q^9 /EX/>YEX/>YEX/>Y +X!Yаа +X!Y а 01!!!!!3!!N `c[_4v:M /EX/>YEX/>Y +X!Yа +X!Yа 01#!#!!3!!ï*R56A&QqP:&QmZP9EX/>YEX / >YEX / >Y 9/а +X!Y01367!!#5&$'KM`F_ZLEfc P\+:M9EX / >YEX/>YEX/>Y 9 /б +X!Y01!!#5$!537!+@tQ>@RE1^ic .G9EX/>YEX/>YEX / >Y9/ +X!Y013!63 !4&#_f%8s}M?wi w#g$%9EX/>YEX/>Y 9 / +X!Yа  а +X!Y +X!Y01 5&&536$ !327"!54&e1˴1:~vN0麙19+~N!"#9EX / >YEX/>Y 9//qqq]r +X!Yа а +X!Y9  +X!Y01"&&'&&536$32!327"!56& bz`Z?竔TUuֈ٬.[hpWg^QYo/j 9EX/>YEX/>YEX/>YEX/>Y9/ +X!Y9 +X!Y01#726&#!!!3!c`W7%ތN<v:f9/EX/>YEX/>YEX/>Y9|/]C]] +X!Y901'6656&'#!!3!JXqfRywvQZO8Z.<|Lgw:{$V#& V:&slK5h 9EX/>YEX/>YEX/>YEX/>Y9|/  +X!Y +X!Y01!!#"'325!! _XM04u^L IZK$:t 9EX/>YEX/>YEX/>YEX/>Y9|/C]]  +X!Y +X!Y01!!#"'7325!!'RXI41u:Z o:nV&,zXV:&pnV&1uV:&E?a9EX/>YEX/>Y 9 / +X!Y +X!Y  +X!Y01 ' 5!&&#"76267!fW۲ ־1TtŔ¤ϩnL9BO|De 9EX/>YEX / >Y +X!Y9 9/а  +X!Y +X!Y01!!#"&&5!32654&##5_cO]p})뽂ghFU^IyGuz:Y 9 /EX/>Y +X!Y9 9/ +X!Y9  +X!Y01!!#"&&5!32654&'#5RfU`u{6&iF^cMK&_&&TB:&M'&tPT; ]P ]p ]01K&<T K:&\TA R9EX/>YEX/>Y9/  +X!Y +X!Y01!!"$&546$7#"=_¶g~fP}⎌~4~_c}&#\ $%9 EX / >YEX/>Y 9 / +X!Y в 9  +X!Y01!"$&546$73!366''!##"3ƪ_= W*bgi}Ꮝ}_NJQO}`d}V,-.9*EX/!>YEX/>YEX/>YEX/>Y9  +X!Y99" +X!Y( +X!Y0132!36676'!#'#"5%&#"327&'Vņ]Q6+QVAK/cg5XTVUSc52p:mDNY$AC%,G(f )*9EX / >YEX"/">Y) 9/ +X!Y  +X!Y9" +X!Y" 90132654'!!36676'!#5&&#~o^ *QTAX+aOG[]b5P+bgcDXe+(:%c&'9EX/>YEX/>Y +X!Y9&9/ +X!Y +X!Y#90136676'!#&'54'!'3654#!!+?28@J- :kver9uHS[nJ-:"`#$9/EX / >YEX/>Y# 9/ +X!Y  +X!Y9 +XY01!254&#!! !'767!&'54'mng C(xtY8,;.Zlg%WsLPs`].dfu: `!"9/EX/>YEX/>Y 9 / +X!Y +X!Y 9 +XY01'767!&54'!'!2654&#!!23<* EPUA ; quPz^c’>45JâY>q>!e "#9EX / >YEX/>YEX/>Y  +X!Y +X!Y +X!Y 901!#766!76676'!#"&'l̰]1i^[KQBY+ԍ bg=:!e "#9EX / >YEX/>YEX/>Y  +X!Y +X!Y +X!Y 901###7667!36676'!#"&'g$BA 8@8?C@J4xև1KBPrG||o|9EX/>YEX/>YEX/>YEX/>Y +X!Y 99|/]]3C] +X!Y0136676'!#&'5!!!!30)MPAY/ ^:KYҽ^Bg:9EX/>YEX/>YEX/>YEX/>Y9|/C]cs]]] +X!Y  +X!Y901!!!!!36676'!#&'R2RC6?C@J+wևa:lI@Pr]a|/ B!"9EX / >YEX/>Y  +X!Y +X!Y01"$54$32&#"36676'!Ԧ,߈>ej5W'YD×f[åWV8)NF 9EX/>YEX / >Y +X!Y 9 +X!Y01%6674'!#"5546632&#"m<*JLJ`.__p|3.jYzI0B:"{oO9EX/>YEX/>Y +X!Yаа +X!Y901!!!36676'!#gw1*LR@W)_YEX/>Y +X!Yаа  +X!Y 901!!!3676'!#&'I?9@K1 4O?Q:XQ)d*+9EX / >YEX'/'>Y '9/] +X!Y9  +X!Y' +X!Y01467&&54$!2!4&#"3#"3265!# $Qr};sXmx}v^^~*1dkzDPSGYlJ]WD~i$K&T Kx:&TOo# /а// а/а/013#3&&'~o\ѨLVJS9T^|.`$SBJFL@WBJGff@_&+ +X!Y +X!Y01!5!5!5!yy_sl(! 9EX/!>Y 9/01#566#Rj(P[B! 9EX/!>Y 9/01'6753֔SkP]S 9/а/01'675!HjP}Ǿ[E /а/01&&55;SLkPD[s(&fP&xS   9 / а а /01'675!'675!H`RhPaJP`2 LEX/>YEX/>YEX / >YEX/>Y  +X!Yа01!!!!!!DQH,,vg`D~EX / >YEX / >YEX/>YEX/>YEX/>YEX/>Y +X!Y +X!Y аааа01!!!!!!!!!!!DCCRHH`2v  9/ +XY014632#"&'pssqkj*khG& EX/>YEX/>Y01G& 'q9/ +X!Y014>32#".q2D**D22D**D2u$<,,<$$<,,<ey#'4AN$/&/EX/>YEX/>Yа/а/а/ а /+ +X!Y1 +X!Y+8а1>а E +X!YL +X!Y014632632#"'#"&54632#"&5'32774&#"32774&#"326754&#"*PRSP;ǝ?.a:21:?.a:21:^:309:2keeeFddzGOrO9/G\g5AA8J/G\g5AA84A@3N3DltJ/9/01#53bqLs+/9/01#zzms. //017'ǝmOrO6 EX / >Y 01E M 9EX/>YEX/>YEX/>YEX/>Y +X!Y0163 #4&#"# M>>[%|iTH!j&$'(9EX/>YEX/>Y&9&/ +X!Y +X!Yа а а&а&а//] +X!Y9/ +X!Y!а#01#!!3677'#53'#53'4632!4#"!#3a;`g9prAX5*fŝf)l#$%9а!EX/>YEX/>YEX/>YEX / >Y9/а/] +X!Y +X!Y аааааааа а"013#3#!#!#535#53!!!35#3'#_^\F`$렪;񪪪()*9#EX/>YEX/>YEX/>YEX/>YEX / >Y +X!Y  +X!Yав!9!/ +X!Yа/' +X!Y01#327#"&5###!!23!332654&'#.@2"[cP,:("GQO<`kh]BP?. ǯ rXPgn&6W)"&),ڲ-.9"а%а'а,EX/>YEX / >YEX/>Y 9/а/а +X!Y  +X!Y 9аааааааа!а#а%в( 9 )в+ 9 ,0137!3#3#!!#53'#53'!37!37#37#7!7[+VU+] 'FXuWt.n0n nnn򩩨a:s9EX/>YEX/>YEX / >YEX/>Y  +X!Y +X!Y 9/ 9/012!&''!!!!767!#O^6eQBeR:P9z :: }brqUX#$%9EX/>YEX / >Y# 9#/ +X!Y  +X!Y а#а#а/] +X!Y +X!Yа 01!327# '#535#536!2&#"!!!cM+Nj~+NY 58~z}z)$) *+9 а #а (EX / >YEX/>Y+]@] +X!Y'}'/ +X!Y]]@]  +X!Y ааа/а/а/а/&ав$ 9|$/01!#535#53!23#3##'!!%!&'#!32"E;ġ9KJ`0F5.818!f '9EX/>YEX / >Y +X!Y +X!Yа/]а +X!Yаа/ +X!Y 901#3#!'367!7!&'!!, 75*>7,@GYҋ/ %_)EX/>YEX/>Y9/а/P`] +X!Yаа аа а а +X!Yа а аааа +X!Y9/01#"'57557!776675޻^B**l**..l..F8U:] 9EX/>YEX/>YEX / >YEX/>Y9/а +X!Y01!5'!!56675!owۓQZ9"u5qכ $? !9EX / >YEX/>Yа/ +X!Yа а /_ o ] ] ]? q  +X!Yаа а  +X!Y01%!!5#35#3!2!#!3254&'#B9pa橩7z7FbxX(59:;9а)а86/8/EX / >YEX%/%>Y а/ 9+ ; K ]  +X!Y +X!Y 9$4D]%а/%, +X!Y2 +X!Y01#"&554632#4&#"32654632#"&532774&#"'0(W/*&0/@.a:20:ǝ,vGx$4>2C2$9F/G\g5A=4OrO!]"#9 /EX/>Y 9/ +X!Yа +X!Yа  +X!Y01 $55#52743236554&#"_RXY§gmԅ)A aĦ&Y'why$#4o()*9ܰܰEX'/'>YEX%/%>YEX/>YEX"/">YEX / >Y а /а/ +X!Y  +X!Y +X!Y!% 9& %901!5!46 #"&5326554&#"!!!!oI4]PO[]ON]tUT˩2ͥbxye5axxevv| nEX/>YEX / >YEX/>Y9/ 99в 9 а +XYа а01##33####5! aSajuyTfYtNe9EX / >YEX/>Y 9/ +X!Y +X!Y 9  +X!Y01%#"&54632!327"!&wĬzs^r>nz*zqj''+$:EX/>Y01;''$EX / >Y01Sw'!'$EX/>Y01^L'#/'^$EX/>Y01Qg $^%&9 /EX/>Y 9/9  +X!Y +X!Y  +X!Y012&&#"'763 #"554"325&1r%u^8F=0x 2  Fk9loǩ!7|l(/EX/>Yа +X!Y01!!!!]I>2 7/EX/>Y +X!Yа  +X!Y01!!55!!NI$-HBJ/ +X!Y01!!oB3J= 9/EX/>YEX/>Y9 +X!Y013!#!L ס.P^N'6q789 а/EX/>YEX / >Yа/а/99  +X!Y% +X!Y+а401#"&'#"4663 6632327675&'&#"4&#"326QVބ"S!zf_%)\dz1xf\)\r?fz4䋑F*-F}F-3OK?9EX/!>YEX/>Y +X!Y +X!Y01#"'73274632&#"VI,-{Dd06  e,+o/а/а/ а +X!Y +X!Yаа/ а# +X!Y( +X!Y#+016636327#"."636327#"."e0B8f_8{e0cB8_f8E-f_`U[efz8_f8B028^~28^F8j+?&~j^B<L9/ +X!Yааа/ +X!Yа 01!'7#!7!!73!!jJO\U1eE\>?.6g @9_]`]]01o6g"@9_]`]]01 8 9EX/>YEX/>Y9901!!z*`')|~r"'O09,EX/>YEX/>Yа/а01#3#35^"nO / 0@]]а/01'765532NP.^zYJV [&JJt 9 EX / !>YEX/>YEX/>YEX/>YEX/>YEX/>Y +X!Y  +X!Yа013#53567632'&#"3#!!!.8mySP$sl:: ^EX/!>YEX/>YEX / >YEX/>Y +X!Y +X!Y а01&#"3#!#5356632!PV;s >PF J'+,-9)EX/!>YEX/>YEX/>YEX/>YEX*/*>YEX/>YEX#/#>YEX(/(>Y +X!Yа/  +X!Y +X!Y!а"а%а&013#5354632&#"!567632'&#"3#!!!!!HV4U/8mxORPV S$sl:P: J()*9EX/!>YEX/!>YEX/>YEX/>YEX / >YEX/>YEX/>YEX$/$>Y +X!Y  +X!Y +X!Y"а#а&а'013#5354632&#"!547632!&#"3#!!HV4U}ԤsV;PV SBjZ ?P 3%&'9EX / !>YEX/>YEX/>YEX$/$>YEX/>YEX / >Y$ +X!Y  +X!Yаа  +X!Yа01#327#"&5#535&#"!#53546323$.@1"[b5n]P?.tPVM#KȲ4LM9EX./.>YEX5/5!>YEX9/9>YEXJ/J>YEX/>YEXE/E>Y5 +X!Y.9 .9. +X!Y.9" +X!Y'.99; +X!YE@ +X!Y;HаI014&#"!4#"#"&&5!32654.54632&546323#327# #53XGEJ5HXIыz;`KEEZVSH.1=1"[bKTPF;cZoH;,-8$Tٔd_KE8-+48[TcNT?.dUr (7=CIOVZ^bfjnvz~A=/EXF/F>Y~I+z{+w+:+ =F9 /а/а/ а/P9P/o +X!YPo9  +X!Y% +X!Y)а)/.а./4 +X!Y=< +X!Y=kаgаcа>а<lаhаdа?а:AаF`а\аXаKбJ +X!YZа^аbаGаINаQ +X!Yv +X!Ywаzа{а~аа01#"&'5463232#4&#"32653#"&53326533!5353!#%5!#53254'5!!5!!5!5!!5!!5!3254&###535#53#53%#535#53#533df~heCbrT24JA@JJB@I\iRXm]h)6q(om56o\~gb[\ [\]v:<]qqqqqq"oooooobyx^u_|x^%IMT F-HENNEpENNEON]QS[6,;qqttSRJtttttt8qqqqqqP)~~~\s $(O++ +ܰ!/%/+%а/!а/ 9 /9/01 4676654&#"36632#33#3#AD$J\:+98][/KR11::'J34@4_YEX/>Y +X!Y999 +X!Y 901!!5%6654#"#4632!21U+2᫈UQJ,UL<+vzK}jD6EX/>YEX/>Y9/ +X!Y01!#5%3߰|$zC H9EX / >YEX/>Y  +X!Y +X!Y01#"&'54632'4#"327]V*1W1~H?xA a !"9 EX / >YEX/>Y 9/ +X!Y +X!Y  +X!Y01#"&546632#266'2754&#"aj̀"zI^N$@C:IEƽspc'V){TDaKD (~)*9а'EX/>YEX/>Y'9'/']O'_'q +X!Y'9'9 +X!Y# +X!Y01#"&5467&546324#"3264"32ӣXghXʄ8JK9:H46fQS)ab)Uxj375== __.:(:9EX/>YEX/>Y +X!Y901!!!%(> !QEX/>YEX/>Y +X!Y9/ +X!Y +X!Y01"632#"$'54$3"32654:chyڄIe0FS;T/hUVжpk]%c;>UKY?6fEX/>YEX/>Y +X!Y9/ +X!Y9 +X!Y9901!!632#"&&7!32654#"NTrKtю}~UAAh51\&ui\b[FS57 W9 EX / >YEX/>Y 9/ +X!Yа в 9 9013#!5!'5!3yyQa' ()9EX / >YEX/>Y 9/]qqo]/r  +X!Y 9& +X!Y&9  +X!Y &9013254&#"!4632#"&&5!32654&##}IA8HjdrT[FHKVNy.8*!U$;ԛ^n-CB6F9-Z9EX/>YEX/>Y +X!Y99 +X!Y в901!!56774#"!46632!`y:Jt΃9~me}_pVBrkİOudA9EX/>YEX/>Y9/ +X!Y901!!5%3W:E H9EX / >YEX/>Y  +X!Y +X!Y01#"&'4632%4#"3267}YEX/>Y +X!Y9  +X!Y  901!!5753!!(G^i1EX/>YEX/>YEX/>Y901!!!.kltj gp SEX/>YEX / >YEX/>YEX/>Y999 901!!!! xq]~)dkKB ` 9EX / >YEX / >YEX/>YEX/>YEX/>Y99  901!!!!!y@Cw)sY^1EX/>YEX/>YEX/>Y9017!!!E`fi_FKsSD=9EX/>YEX/>YEX/>Y  +X!Y01#"$'!3265DSTSUO^QQ^J/EX/>YEX/>Y +X!Y01!!!!J.w6(z)*9EX / >YEX/>Y 9 9 ,]]  +X!Y 9# 9U#]####]& +X!Y014.546632!4&#"#"&&5!326\f0uYD?NOdڗS]m=D>5@6YEX/>YEX / >Y9/ +X!Y 9 +X!Y01#!!2!3254##(bs~62 6#!H"#9EX/>YEX/>Y +X!Y +X!Y01%"&'546324&#"3267pc=uhooft2K7Q? O 9  EX/>YEX/>Y 9 / +X!Y +X!Y01!!232654&##}ڹROULmixF4EY/H 9EX / >YEX/>Y  +X!Y +X!Y01#"$554$324&#"3267thnpdt2 ) #Q} EEX/>YEX/>YEX/>YEX/>Y9901!!!!!}wRQZZQ`9EX/>YEX/>YEX/>YEX/>YEX / >Y99 901!!5#!"#so"Q)EX/>YEX/>Y +X!Y01!!!RQ L 9EX/>YEX/>YEX/>YEX / >Y9901'!!!!nR6xsm 3z09EX/>YEX/>Y  +X!Y01!#"&5!3265<RS1<4,KFP\hEX/>YEX/>Y01!!!QQ~ cEX/>YEX / >YEX/>YEX/>Y 9| /C ] ]0 ] ] +X!Y01!!!!!!!~uRPH/>ng !9EX / >YEX/>Y 9/  +X!Y9 +X!Y +X!Y_]01%#"''4632!&&#"3275#5!nM   X]euvc0GS_TI:Q BEX/>YEX/>Y 9 / +X!Y +X!Y01!!!!!!XH6s,y-.9EX / >YEX / >Y 9  в 9 ]  +X!Y 9 #в' 9V']'] * +X!Y014.546753!4&#"#5&&5!326\f0ޱYD?NOdʹS]m=D>5@6YEX/>Y9/ +X!Y +X!Yаа а в9 ] +X!Y01!!!365#53'&632!4&#"! g) Q85u \zWJ\KJo9EX/>YEX / >Y 9 9/|/ +XY +XYаааа01!3#!!!5!5!5'#53!qaЮ  ` ,۷%Q39EX/>YEX/>Y +X!Y01!!!iw= 9EX/>YEX/>Y9 +X!Y01!!!'!S|W/"k#$9аEX/>YEX/>Y9|/C] +X!Y +X!Y +X!Y01!!#"$554$324&#"3267Athnpdt ) #8 9EX/>YEX/>YEX/>Y901!!!!'S|sKRl a 9ܰ EX / >YEX/>Y +X!Y 9/ +X!Y  +X!Y01!!!'!!7!!l[d[Q@ 9EX/>YEX/>YEX/>Y +X!Y01!!!!!^FwL# E 9EX/>YEX/>Y +X!Yа  +X!Y01!!55!!0))X0q9аEX/>YEX/>Y9/в 9 /а  +X!Y +X!Yа01!5$$54$%5!4'66 $!Qvnjqjjtf} 7 y0] 9EX/>YEX/>YEX/>YEX / >Y 9/  +X!Y а01667!!&!!cSRSVaR9 5 (֡w5#^$%9EX/>YEX/>YEX"/">Y +X!Y аа +X!Y а!0166754&#"!3&&55466323!TPnkPZ!g~:zk ,~;),D~zHn9EX/>YEX/>YEX/>Y +X!Yав9/ +X!Y +X!Y01!!!632#5254&#"!mxj nnRXųVJ/a 9EX / >YEX/>Y  +X!Y 9/o]O_q?rorq]rr +X!Y +X!Y01# 54632!6&#"!!32'_lb \_0! R\kgH z!"9EX/>YEX/>YEX/>Y +X!Y  +X!Y9/ +X!Y +X!Y01!!##7>7!3232654&#P d̷0,F@!ZRccU{N'XA>PQ59EX/>YEX/>YEX / >YEX/>Y 9|/]3C] 9/  +X!Y +X!Y  +X!Y01!!32!!!!32654&#R~RԸRccUHXA>P\9EX/>YEX / >YEX/>Y +X!Yав 9/ +X!Y01!!!63 !&&#"!mvd^|RXCdWQ P 9/EX/>YEX / >YEX/>YEX/>Y +X!Y 01!!!!!!!tRRTwQa a9 EX / >YEX/>Y  +X!Y 9/  +X!Y +X!Y01!3#!!254'#uwwa]9 /EX/>YEX / >Y +X!Yаа  ааа +X!Y01667!3!!!!!#{aG]mawKO}9EX / >YEX / >YEX/>YEX/>YEX/>YEX/>Y 9|/]3C] +X!Yв9а 01#!#!!3!3!!Y\]f[QZ f]]f'QQ: $%&9EX / >YEX/>Y  +X!Y# 9#/o##]#q#/#r#]#qO#_#r##r  +X!Y #9 +X!Y014#"!4632#"$5!3254'#5321I`VaiSPG/m+!X)#_,8~zQ L 9EX/>YEX/>YEX/>YEX/>Y9 901!!!!-RvRsuxQd [ 9EX/>YEX/>YEX/>YEX / >Y9/ +X!Y 901#!!3!!sRv}YEX/>YEX / >Y +X!Y   +X!Y01!##7>7 d̷1!OB#s{ND9EX/>YEX/>YEX/>Y9  +X!Y01!#'3267!x\kTyE5/6D4h$4FQ| F 9/EX/>YEX / >YEX/>Y +X!Yа 013!!!!!'RRKwLwG9EX/>YEX/>YEX/>Y 9 / +X!Y01!!# $'!327!wgDS^|QZRddWQ P 9EX/>YEX/>YEX / >YEX/>Y +X!Yа 01!!!!!!!R!R!RwwQnY 9/EX/>YEX / >YEX/>YEX/>Y +X!Yа а а 013!!!!!!!5R!R!RKww  a9EX/>YEX/>Y +X!Y9/  +X!Y +X!Y01!!!!322654&##s߲RccUXA>PQ&LQa R9EX/>YEX/>Y9/  +X!Y +X!Y01!!!322654&##iRPdePVC@N%W 9EX/>YEX/>Y +X!Y9/o]O_q?rorq]rr +X!Y  +X!Y013267!!&#"!6$32!"$'x[] ak aq[SMQ"#$9EX/>YEX / >YEX/>YEX / >Y 9|/3C] +X!Y +X!Y +X!Y01#"$'#!!36324&#"3265$Q+thnpgs2J- #(- c 9 EX/>YEX/>YEX/>Y9/  +X!Y 9 +X!Y013&54$3!!#33#"(.NDAQbs| =II 6 R9EX/>YEX/>Y 9 / +X!Yа а  +X!Y01#!#53!!3i=ÿ  9/EX/>YEX/>YEX/>YEX / >YEX / >YEX/>Y 9|/3C]]] +X!Y9 +X!Y в9013!!#!#!!3!3!v\]f[QZnK]]f'QQQ9/EX / >YEX/>YEX / >YEX/>Y 9| / ]3 C ] ] +X!Y 9 +X!Y013!##!!3!(sRv}eK]QQy 9EX/>YEX/>YEX / >YEX/>Y9|/3C]]]а +X!Y9 013533!!##5#!!9-~=l+9R]9EX/>YEX / >YEX/>YEX / >Y9|/3C]]] +X!Y +X!Y 901#!!!3!!qtqv~=k]Q/".|EX/>YEX/>YEX/>Y9/ а / +X!Y +X!Y" +X!Y%а+ +X!Y01"'#"$'54663"&'54326554&#"[sĬAGEP 5? R5:Uʡ]d pi&&5i 9/EX/>YEX/>YEX / >YEX / >Y 9  9 9 +X!Y 901!3!#!! 򼼲]~)dKkKB^ 9/EX/>YEX/>YEX/>Y +X!Y +X!Y а а а 013!!!!!!!&RK{LwP9EX / >YEX/>YEX/>Y 9/ +X!Yа01!!#5&&'!537!wdS;YEX/>YEX/>Y9/  +X!Y01!63 !&&#"!QRq:#^|O\qWdW!"g #$9 EX/>YEX/>Y9/ +X!Yа а +X!Y +X!Y01 $'&5!66$3 !!27"!54&4EB$K4px wbxz0)yiao/a9EX/>YEX/>Y 9 / +X!Y +X!Y  +X!Y01 # 5!&&#"'66267!1\L4ox 4wd mf0)Czhcm:f9EX/>YEX/>Y +X!Y99/ +X!Y9 +X!Y01#"$5!3254'#57!RST08x/~9аEX / >YEX/>Y  +X!Y 9|/]3C]#q +X!Y +X!Y01#"$554$32"!&&267!б#lRQk[&2 )8goTmdHf%'&'9EX/>YEX%/%>Y+%$ +X!Y$]@ /?O_oqq]_o]]]  +X!Yаж]q]@ /?O_oq_o]] а +X!Y в9@ +;K[k{ ]]+;q]] +X!Y]?q_]013367#535'#53&632!4&#"!!!!! #7687aSj ( .ͽL=b^ H"EX/>YEX/>Y"+"]"]"]_"]?"q"] "]" +X!Y +X!Y] а"в_]]]?q]] ]а +X!Yа +X!Y_]?q]01!327#"$'#535#536$32&&#"!!!~$Fth##oqLH7#GUiuŴB" BQ'()9ааEX#/#>YEX&/&>YEX/>YEX/>YEX!/!>Y а /а/ +X!Y  +X!Y +X!Y #9%#901%!5!46  &5326754&#"!!!!Q6ZSPX]ON]wRQ̖4WebT?Wdc[ZZ(+ !9EX / >YEX/>Y +_o]] +X!Yв ]_ o  ]  +X!Y аа а  +X!Y01%!!5#535#53!2#!32654&## 2JUUJvvv:Ԭ:Q?=J)!$%&9EX / >YEX/>Y 9/]q ,]  +X!Y 9# +XY#9 +X!Y#9013254&#"#4632#"&5332654'#Xe3-#6ઈ;48-m^R %f}{hx1)hr/2U6 JEX / >YEX/>Y 9/ +X!Yа в 9 9013##5!'335sOO\O:;fEX/>YEX / >Y +X!Y 9/ +X!Y9  +X!Y9901!!632#"&533254#"L8N4^[kH$|}zye=gi$?(ZEX/>YEX / >Y +X!Y 9/#] +X!Y  +X!Y01632#"&'5463"32654BTEgtD#18+9(YEX/>Y +X!Y901#!5!EceeC!%oEX/>YEX/>Y$9$//$?$r $$,$] +X!Y$9 $9 +X!Y  +X!Y01#"&547&546324#"3264#"32oo]Y3(*1JHJH?s6<lzzl::ohzxIHH$))bAAFA!j !9EX/>YEX/>Y9/ ,] +X!Y +X!Y +X!Y01#"&54632##5266'2754&#"?LjS3B3-/*1*0xBخ<R9.E0adJ9/ +X!Y01!5!d&d /а/]_oqr_rqq@ ?O_o]rа/@ /?O_]/а/?O] +X!Y +X!Y01!#"&462'32654&#"%W^z}{y4'(00('4\mppm(22(*22Q QEX/>YEX/>Y 9 / +X!Y +X!Y +X!Y01!!!!!!m6vJ#N)7DEF9/а;EX&/&>YEX/>Y&)а)/ +XY&9/9/6 +X!Y_6]69&9/ +X!Y; +X!Y&B +X!Y01##"'2#"$5467&547&&554$32!32654&'#"326554&"#o>L@\Ɣhe*tmw ^Ri/-m^i{307VGDUPPWm ?^fyM~*2KmI0h;4A=3%/:II<9II9<[Nm9 EX / >YEX / >YEX/>YEX/>Y 9 9 +X!Y  +X!Y01%#"'5327!!326'56&#"#kйk"lsVT_[S"1rOl!c"#9EX/>YEX/>YEX/>Y9/ +X!Y 9 +X!Y01!!2!&'54&#32654&##X | A=\jageZ&v5$n10_gjZS[elE TEX/>YEX/>YEX/>YEX / >Y9/ +X!Y 901#!!3!!q_pa@3``h TEX/!>YEX/>YEX/>YEX / >Y9/ +X!Y 901#!!3!!@R8f~Rl' S 9EX/>YEX/>YEX/>YEX / >Y99901!!!!_ Hnw3`k S 9EX/>YEX/!>YEX/>YEX / >Y99901!!!!RuFQ> H9 EX/>YEX/>Y  +X!Y  +X!Y013!2326754&'Q^Y}no{)z~@/aP 9EX / >YEX/>Y 9  +X!Y +X!Y 901# 54632!6&#"32'_lb Zq0! R\YQ<  9аEX/>YEX/>Y9/]?qqO_rrq/rq]qo]r +X!Y9 +X!Y +X!Y013!232654''36654&##Q]iEP{̠MACH@]7/i55?4 V 9 EX/>YEX/>YEX/>Y9|/ +X!Y 901%!!!!!',_EDdshw2 /а/01#5CIqx^@c c/]а/@ /?] +X!Y а /а/ а /@  / ? O _ o  ]/01 &53265%3#@VU^ჯll5;;5w/а/@/?O_o] а / +X!Yа|/@/?O_o ]а/@/?O_o]/01#"&#"'46323265'3#_C:*"]E,*#߳LiA1$&Jk@1$̸x U/а/а/@ /?O_]9//9 а /а//]013#'#3#ۏ;tt=gx U/а/а/@ /?O_]9//9а/ а /  / ]01#'#%3#3gِttd0m///а/а/@ /?O_]а/а/@ ?O_o] +X!Y 9901#'#%3'654Hg݌s>3C:tt_j."xVN/@4g///а/а/@ /?O_]9 а / q ]  q@? O _ o  ] а /@  / ? O _ o  ] а/  +X!Y  +X!Y01#'#%37#"&#"'4632325g݌F4.$%oB4$ &ttCX>F BZ=NQ3 9EX/>YEX/>Y +X!Y01!!!!iQw^@c `/]а/@ /?] +X!Y аа/ а /@  / ? O _ o  ]/01 &53265'3#@VUyᵯll5;;5^Q c/]а/@ /?] +X!Y а /а/а/?] +X!Y9901#"&533265%'654#72QʯUQMXPCkl1872#c,4rQI-;0CEX / >Y016 EX / >Y 01;!EX/>Y01?"EX/>Y01/#EX/>Y01C$EX/>Yа 01A%EX/>Y01C'P 9EX / >YEX/>Y 9  +X!Y +X!Y 901!"$'54$3 !&&#"327#ߜ'9wyE7Mk1C' b !"9EX / >YEX/>Y 9/  +X!Y9 +X!Y +X!Y01%#"$'54$3 !&&#"3275#5!'Oڭ,8 i1;[mCDKmt?1l H9EX/>YEX/>Y  +X!Y  +X!Y013!2326554&'lOz[ѿ*m)CH  9 EX / >YEX/>Y  +X!Y +X!Y01 $'54$324&#"325ͭ64I8S#C!H"#9EX/>YEX/>Y +X!Y +X!Y01%#"$'54$324&#"326{pQ[ͩ33ιcθK!T#3EX/>YEX/>Y9/ +X!Y01!!%3#~aAH[9EX/>YEX/>Y +X!Y99 +X!Y 9901!!56654#"!4$32!H Q9HVbvqH]/wSCᷢc`nm!\9 /EX/>Y +X!Y9 9/  +X!Y +X!Y901!!#"'732654&##5"6w̩ܟÿ9ggX}uq#] f9 EX / >YEX/>YEX/>Y +X!Yа/ в 9 в 9013#!!'5!!ʓUR#yjPN9/EX/>Y +X!Y9/ +X!Y +X!Y01!!632#"'73265#";NHf#U({a$4U&/EX/>Y +X!Y901!!!U D!^B /]а/@ /?] +X!Y а /а/а/@/?O_o]а/ +X!Y +X!Y01 &53265#"&#"'46323265BUS_C:*"]E,*#nn2772LiA1$&Jk@1$X/а/а/01!!QC/u 9 EX / >YEX / >YEX/>YEX/>Y  +X!Y 9/ +X!Y +X!Yа +X!Y  +X!Y01!!"$554$3!!!!!7'"p@P6n ) #Kj&T'(9 /EX / >Y +X!Y 9/ +X!Y ! +X!Y01267#"546632#"'72754&#"uy鏟?GW{NeYRm_6U?>}l{K) ( /EX/>Y  +X!Y  а /01#"'7325VI40t) 64FL%EX/>Y01V<N=wM@GK6WOEX/>Y011seNdPoSTLjJGEX/>Y01K:K:{:i:& {:QN"g!#$9EX/>YEX/>YEX / >Y +X!Y 9 / +XY  +X!Y 90132654&##57&#"!4632#"'3271;f]Q6D2Aڕbєӭd.A;H:=gU܃>5wH9EX / >YEX/>Y  +X!Y +X!Y01#"&546324&#"3267wq_]oob_n? Ÿ 󢕤H63EX/>YEX/>Y +X!Y901!!! ta_f9 /EX / >YEX/>YEX/>Y 9 9  +X!Y +X!Y01#"'!!632%#"327_̦hQ^o/3mՊvk$KYEX/>Y +X!Y99 +X!Y01%267!#"5546632!&&#"BGV<߀XH ME/P^;87c9/EX/>YEX/>YEX / >Y9 9 +X!Y +X!Y01432!!'#"5327&#"8ɑbSiQeWh74iWg'*q#z1RQ8V7N#!$%9!EX/>YEX/>YEX / >YEX/>Y  +X!Y99 +X!Y! +X!Y014327!!"'73265#"%327&#"8˯^(y%FDMaQdXm21lYe(*wc>~l0KI-kNE9EX/>YEX / >Y +X!Y +X!Y0146632#"32654&#"-)Qlcalna_n' .a`_Np9 EX / >YEX / >YEX/>YEX/>Y 9 9  +X!Y +X!Y01#"'!!632%4&#"326_mɂ_< acYq/2pXbldxL?M8`7Nm9 EX/>YEX/>YEX/>YEX / >Y 9  9 +X!Y +X!Y014327!!#"%327&#"8ȣg&bQeVo11mXe'*s&m/LK=2N{9EX/>YEX/>Y9//qq]r  +X!Y +X!Y 9 +X!Y01"5546632!3267"!54q{b#@85MԚT'%/5^4VN"#$9 EX/>YEX/>YEX / >YEX/>Y9  +X!Y99 +X!Y  +X!Y01327!!"'73265#"%327&#"4ů^(|%OAL}aQq.)t ($wc>l)USqN(1n239"а+EX / >YEX/>YEX/>Y 9 9 & +X!Y) +XY, 901"$5477'&5463265!!'76654&#"27'*\5RΦҨH-.G:*9*33aB6@Ig<;e{|q.H_ی-Bi-I"."+4s (6/3  >9EX / >YEX/>Y +X!Y 9 901!!57!7ggSBB!9EX / >YEX/>YEX/>Y 9/ +X!Y +X!Y 9/ +X!Y   +X!Y 901!!!'!!!!!3GU"3Q Y9EX/>YEX / >Y 9/ 9/  +X!Y +X!Y01!32##!32654&#QRjzdRhKVVKerMA=M.(j)*9а%EX/>YEX/>Y99 +X!Y"9#9% +X!Y01#"'#7&54$3273&#"%4'3267VWQ6M4Sdt)Mtʝ)NtoW41M<<0;9EX / >YEX/>YEX/>YEX/>Y 9/ ]9/] +X!Y +X!Yа аа01#!!!#535!!5!3!5!ZuZZSPZuSHS{{{{QK}[9EX / >YEX/>YEX/>YEX / >Y +X!Y 9 901"'73255!!!WI40uxRQK ZZfzEX/>YEX/>Y9/qoqr?q]r +X!Yа +X!Y +X!Y013#53!2#326554&##34ͽQzv{vCó{?zEX/>YEX/>Y9/qoqr?q]r +X!Yа +X!Y +X!Y013#53!2#326554&##34ͽQzv{vCó{?Ev 9/EX/>YEX/>YEX/>Y/]]9/ +X!Y9  +X!Yа01#632!4&#"!#535!3lFTh+QUVQB$NEX / >YEX/>Y 9/ +X!Yаа  +X!Y 01#!#53!!!3РSK-ӿG9EX/>YEX/>YEX/>Yа/ +X!Yа/ +X!Y  +X!Yааа013#3#327#"&'5#535#53粲,A2"[cGꖿ=0п w6&%D6EX/>Y 01w6&%u6 / 01w6&%6EX/>Y01w8&%1 /01w&%j6w&%g /ܰ01w&%'VE( &'yn[6&)D6EX/>Y 01n[6&)u6EX/>Y01n[6&)6EX/>Y01n[&)j66&-Dt6EX/>Y016&-u@6EX/>Y016&-16EX/>Y01&-j:6n.8&21 /01E?6&3D6EX / >Y01E?6&3u6EX / >Y 01E?6&36EX / >Y 01E?8&31 /'01E?&3j6i6&9D6EX / >Y01i6&9u6EX/>Y01i6&96EX / >Y01i&9j6 6&=u6EX/>Y 01-&EDUEX/>Y&01-&Eu"EX/>Y'01-&EEX/>Y)01-&E#EX/>Y(01-&Ej-V&E}EX/>Y.ܰ101-&E'4(N&GyE=2&IDTEX/>Y01=2&Iu!EX/>Y01=2&IEX/>Y!01=2&Ij&DeEX/>Y01{&u1EX/>Y01&"EX/>Y01&j+X'&RN /014H&SDEX/>Y014H&SuLEX/>Y014H&S<EX/>Y014H&SM /#014H&SjEY)&YDEX/>Y01Y)&YuLEX / >Y01Y)&Y<EX/>Y01Y)&YjEK,&]u /01K,&]jw&%p0EX/>Y 01-&EpEX/>Y&01w8&%6EX/>Y01-&EGEX/>Y(01_ww9EX/>YEX / >YEX/>YEX/>Y  +XYа/9/ +X!Y901#327#"&547!!!]kNC<'&I]nrRT 9P'G3>,tbSo-_N)3EX/>YEX/>YEX/>YEX%/%>Yа/9 9 / +X!Y 9\l|]]@ ,<]% +XY* +X!Y / +X!Y01%&'#"&54$3354#"!4$ #327#"&542675#" ]hx ,7NC<'&I]nj?Sb>'7u9vʰ!O'G3>,tb(6".9E 6&'u6EX / >Y 014&Gu$EX/>Y01E 6&'6EX / >Y"014&GEX/>Y01E B&'MEX / >Y'014 &GEX/>Y&01E 7&'6EX / >Y#014&G,EX/>Y!01-7&(6EX/>Y014&HUn[&)ps0EX/>Y 01=2&IpEX/>Y01n[8&)6EX/>Y01=2&IFEX/>Y 01n[B&)qMEX/>Y01=2 &IEX/>Y&01n_[9EX/>YEX/>YEX/>YEX/>Y9/?qqOroq]r +X!Y +X!Yа +XY +X!Y01!!#327#"&547!!!!NC<'&I]ndr(i'G3>,tb|O=2N$+!,-9!%EX/>YEX / >YEX/>Yа  +XY(9(/_(o(q(/(q(](q(r +X!Y" +X!Y$"9% +X!Y01%327#"&547&5546632!327"!56&9oNC<'&I]n1{bzaZɔTVR4'G3>,tb[= [hpQYn[7&)6EX/>Y01=2&I)EX/>Y!01R6&+6EX / >Y$017V9&K%EX/>Y+01R8&+6EX / >Y#017V9&KZEX/>Y*01RB&+MEX / >Y*017V9 &KEX/>Y001R&+7V9&K47EX/>Y,01n/6&,6EX/>Y01W'&L /018&-B1 / 01&3 / 01&-p%0EX/>Y01&pEX/>Y018&-f6EX/>Y01&WEX/>Y01_&-_&MB&-"MEX/>Y 01z&-.j\K&MN3$6&.W6EX/>Y01qK&EX / >Y01n23&/a&Ojn06&0u56EX/>Y01p&Pu%EX/!>Y01n0&0u`&P>n0&0gEX / >Y01p9&Pn0&0pi&Pn.6&2u6EX/>Y 01X'&RuM /01n.&2X'N&Rhn.7&26EX/>Y01X'&RU /01}'&R[E?&3p0 /014H&Sp0 /01E?8&36EX / >Y!014H&SqEX/>Y01E?5&3L6EX / >Y ܰ$014p&SEX/>Yܰ 01n6&6u\6EX/>Y01a+&VuEX / >Y01n&6PN&V.n7&6d6EX/>Y01O&VEX / >Y01@6&7u6EX / >Y+01#&WuEX / >Y(01@6&76EX / >Y+01#&WEX / >Y*01@(&7y#N&Wy @&7#N&W!@7&76 /-01#&W /*01$&8 P ] ]01 G&X$2&8y (G&Xy$7&86EX/>Y 01 }&X.hi8&91 /01Y)&YM /01i&9p0EX / >Y01Y)&Yp0EX/>Y01i8&96EX / >Y01Y)&YqEX/>Y01i&9NEX / >Yܰ01Y)V&Y} /ܰ01i5&9.6EX / >Yܰ01Yp&YEX / >Yܰ01ia !9EX/>YEX/>YEX/>YEX/>Y9 +XY +X!Y01327#"&547 5!3265NC<'&I]nampG'G3>,tb;09xY_):w !9EX/>YEX/>YEX / >YEX/>YEX/>Y  +XYа/9 +X!Y01!327#"&547'#"&5!327!NC<'&I]nq kQt1S'G3>,tbRkAS6&;x6EX / >Y01&[EX / >Y01 6&=6EX/>Y 01K,&] EX/>Y01 &=j6>6&>u6EX/>Y 01B&^uEX/>Y 01>B&>jM /01B &^ /01>7&>6EX/>Y01B&^"EX/>Y01;B&uBEX/>Y01=&ukEX/>Y=01QJ&uEX/>Y,014oH&u&EX/>Y'01>&0&Y;]oqqorr?rqq]]01>&0&Y;]oqqorr?rqq]]01J&&{&3DEX/>Y01&3ukEX/>Y01&3[EX/>Y01 &3l /01&3jdt&3 EX/>Yܰ01&3'/-a&1y_Q&(DpEX/>Y 01Q&(u=EX/>Y01Q&(- /01Q&(j6&DREX/>Y01h&uEX/>Y01p&EX/>Y01w&jQ} &} /01/&DEX / >Y 01/&ugEX / >Y!01/&WEX / >Y#01/ &h /(01/&j`SD&DEX / >Y01SD&uREX/>Y01SD&BEX / >Y01SD&jKi&u+EX/>Y 01&3pOEX/>Y01 &3EX/>Y01_v9EX/>YEX/>YEX/>YEX / >Y +XYа/9|/ +X!Y901#327#"&547'!!!'LNC<'&I]nwC_E!s'G3>,tbS%h/a&1ucEX / >Y01/a&1SEX / >Y01/a*&1E5EX / >Y$01/a&1kEX / >Y01>&0 /01Q&(p!EX/>Y 01Q &(bEX/>Y01Q*&(5EX/>Y01Q_9EX/>YEX/>YEX/>YEX/>Y9/ +X!Y +X!Yа +XY +X!Y01!!#327#"&547!!!!m6NC<'&I]ndSv'G3>,tb|OQ&(EEX/>Y01>n&kEX / >Y$01>n &EX / >Y"01>n*&]5EX / >Y)01>n&Q~&]EX/>Y01 &  / 01n&pEX/>Y01 &DEX/>Y016_&h*&5EX/>Y 01&EX/>Y01Q&Q&uEX/>Y01Q&Q&uEX / >Y01Q&XQ}&u|EX/>Y 01Q}&Q}&EX/>Y01/&pKEX / >Y 01/ &EX / >Y!01/&EX / >Y!ܰ%01Q_&u /01Q_&4B_&  /016&uUEX / >Y+016&EEX / >Y-016(&yO6&]EX / >Y.01 J&O P]]01J&?EX/>Y 015J&y8 SD &S /01SD&p6EX/>Y01SD &wEX / >Y01SDt&EX / >Yܰ01Sv&EX/>Yܰ01SDa !9EX/>YEX/>YEX / >YEX/>Y9  +XY +X!Y01327#"&547&&'!3265D=<'&I]nSTSUO-,B>,tbI1 ޺^QQ^&EX / >Y01i&EX/>Y 01i&j$,&u5EX / >Y01,*&5EX / >Y01,&=EX / >Y01wB&%`[D&)q^/?&,o^D&-o(SB&39nB&=dJ B&[]&EX / >Yܰа"01w%n&n[)>>n/,-n3/n1n.2E?3n4$8 =<&-j:6 &=j6<B&EX/>Y"01]SB&EX/>Y)01Z`(B&EX/>Y01j}-&EX/>Y01c &EX/>Yܰа(01v:4HNS`:v:ZMPKj 9EX/>YEX/>YEX/>YEX/>Y9  +X!Y9 +X!Y012!3&&''!&#"'6r3RWN '/yr^8r$* lKduy\H@lZ&j+c&jD4HB&SEX/>Y01cB&EX/>Y01AUB&EX/>Y$01n[&)j6lD6&un6EX/>Y01@(k)*9EX / >YEX/>Y 99] +X!Y  +X!Y9& +X!Y#&9014&$'$546$32!4&#"#"$&5!326]mWm]^mx.a`yWeMV\+ygpυYbS@8[a8ݐuoK-&-j:6$.lE,n36&/u\6 /018&6EX/>Y01w%n&lDn[)Z#8&6EX/>Y 01n1n/,E?3l5n4E '$8<-NE=2NIX&&wEX/>Y 014HNSa`KNT4NM9EX/>YEX/>Y +X!Y99 +X!Y01%26'!#"546632!4&#"(GNY01#NW\M&j+KNu&udEX/>Y01K,&]AEX/>Y016&;D6EX / >Y01&[D%EX / >Y016&;u6 /01&[uEX / >Y01&;j6&[j 6&=D6EX/>Y 01K,&]DOEX/>Y01+ ^g&5_K&( /01Bn6&1u6EX/>Y01a&QuEX/>Y 01~w&%_ -N&Eon[6&)D6EX/>Y 01Z#6&D6EX/>Y 01=2&IDTEX/>Y01X&&DEX/>Y 01#9":$&p6EX/>Yܰ010&EX/>Yܰ014KN&S]~EK &3]>&Q|r<M&QsE &'Q|4N&GQ6| =_:- ]8&_6EX / >Y01% &EX / >Y01-w8&%6EX/>Y01-&EGEX/>Y(01w&%j6-&Ej;=Pn[8&)6EX/>Y01=2&IFEX/>Y 01E?&XjB OB &j! ]&j36% &j>&jw6<&j!Z#&p0EX/>Y 01X&&p6EX/>Y 01Z#&j6X&&jKE?&3j64H&SjEUN2FNUN&j62F&j@&j6-&j&p0EX/>Y01K,&]p /01&j6K,&]j5&46EX/>Yܰ01K@&]EX/>Yܰ01+&j6P &j_n&'-j6uZ&'j4Hw&% -N&E$w&%&-EX/>Y 01-&EEX/>Y%01z&%7 EX/>Yܰ01-L&E7EX/>Y*ܰ.01w&%8 EX/>Yܰ01VL&E8EX/>Y(ܰ-01w&%9 EX/>Y ܰ01-F&E9EX/>Y(ܰ,01w&%: EX/>Yܰ01-&E:EX/>Y(ܰ/01w6&%'6 EX/>Y 01-&E&$EX/>Y)01w&%<;EX/>Yܰ01-h&EY(ܰ301w&%5;EX/>Yܰ01-h&E5EEX/>Y(ܰ401w4&%=(EX/>Yܰ&01-&E=:EX/>Y(ܰ301w&%P+EX/>Yܰ01-&EPCEX/>Y(ܰ401w8&%'6 EX/>Y01-&E&G$EX/>Y(01n[&) =2N&In[&)-EX/>Y 01=2&IEX/>Y*01n[8&)1 /01=2&I" /&01nB&)7 EX/>Yܰ01=M&I7EX/>Y ܰ&01[&)8 EX/>Yܰ01U2M&I8EX/>Y ܰ%01n&)9 EX/>Yܰ01=E&I9EX/>Yܰ$01n[&): EX/>Yܰ01=2&I:EX/>Yܰ'01n[6&)'6 EX/>Y01=2&I&EX/>Y01H&--EX/>Y01{9o&EX/>Y01{&-\&Mo E?&34|HN&SE?&3+-EX / >Y014H&SEX/>Y01E&37 EX / >Y!ܰ'014L&S7HEX/>Yܰ#01?&38 EX / >Y!ܰ&01HL&S8CEX/>Yܰ"01E?&39 EX / >Yܰ%014p&S9@EX/>Yܰ!01E?&3: EX / >Yܰ(014H&S:CEX/>Yܰ$01E?6&3'6EX / >Y 014|H&S&<EX/>Y01H=&u=EX / >Y'012&uKEX/>Y!01H=&D=EX / >Y&012&D~EX/>Y 01H&04EX / >Y%012&EX/>Y01H?&8EX / >Y(012&LEX/>Y"01H&2|&i&9Y):&Yi&9 -EX / >Y01Y)&YEX/>Y01ilB&uBEX/>Y01YE&uJEX/>Y01ilB&DBEX/>Y01YE&D}EX / >Y01il&A9EX/>Y01YEo&EX / >Y01ilD&=EX/>Y01YE&KEX/>Y01i|l&,YE& &=/*,:&] &=-EX/>Y 01K,&]{EX/>Y01 8&=1 /01K,&] /014&H'&G4C}]]01/]/]$&8QO:&Q +&QzP :&QvlD&QXT:&Q&LQ|%N&MQW'L 9 EX/>YEX / >Y] 9/] +X!Y 9/ аа +X!Y  +X!Y01#32!!#535!332654&#絭 `k}|n=v׋=ax_Zn{ 9 EX/>YEX / >Y] 9/ +X!Y 9/ аа +X!Y  +X!Y01#32!!#535!332654&#絭 `k}|n=v׋=ax_ZnD KEX/>YEX/>Y 9 / +X!Yа а  +X!Y01#!#53!!3paT: KEX/>YEX/>Y 9 / +X!Yа а  +X!Y01#!#53!!3VBYEX/>YEX/>YEX/>YEX/>Y9/3C]] +X!Y9/ +X!Y а в901#!#535!3#3!!_pa@R3`|vEX/!>YEX/>YEX/>YEX/>Y9/ +X!Y9/ +X!Y а в901#!#535!3#3!!@R8f~R W 9EX/>YEX / >YEX/>Y9/ +X!Yв 901#!#53!!3Uy  {kx_:S9 /EX / >YEX/>YEX/>Y а  +X!Y 901%##!#'#53!!3tdc_g9dEX / >YEX/>YEX/>YEX/>Y 9/ +X!Y 9а в 901#!!#53!!3ZsklrRDLuf :dEX / >YEX/>YEX/>YEX/>Y9/ +X!Y9а в 901#!!#53!!3cTTb^b4@̿*Q]SM<&*&Z>WBJGff@;Q/Q;gPJg}h`OGi`R6&+u6EX / >Y"017V9&Ku5EX/>Y)01n.6&2D6EX/>Y 01X'&RDEX/>Y01w$&%6EX/>Y ܰ01&EEX/>Y&ܰ*01/[$&)\6EX/>Y ܰ012&IEX/>Yܰ"01$&- 6EX/>Yܰ 01x&EX/>Yܰ 01E?$&36EX / >Yܰ#01H&SEX/>Yܰ01$&6)6EX/>Yܰ01H&VuEX / >Yܰ01N$&9{6EX / >Yܰ01)&YEX/>Yܰ01\uB&dmn&& a|K&F n&(7 4&Hn&( P]]014&Hcn/&,0 W'&L n36&/u\6 /01a6&Ou6/ܲ_]01n3&/5a&On0&0 _&Po n&1 aN&Q n.&2,X'N&R E?&36VEX / >Y!ܰ401nB&4u^B /01a`K&TuEX / >Y01n&6 ON&V_ @&7#|N&WR$&8 G&Xi&96VEX/>Yܰ(01MD&:= /01&Z /01M&: :&Ze &; :&[? >&> B:&^d &3Fq{&3"&(<&<"&<& %&<"& .3Q<2Q(,Q~hQQQ}/Q?Jipw&ji&j$Q&(j6Q&uEX/>Y016hw&jQ&uEX/>Y01 &EX/>Y013Q<2QQ(Q &EX/>Y 01QQ~/QQ?/a1Jp:  '()9 /EX%/%>YEX / >Y% 9/]?qqr/rq]qo]r +X!Y9  а  +X!Y% +X!Y01!&&5!3254'#53254#"!4632`VaiSPG1IbX)#_",8~zvm+!Qth/EX / >YEX/>YEX/>Y  9| /3 C ] ] +X!Y  а +X!Y01!#!!!!!3tuRPdH/R/aV9/EX/>YEX/>Yв9 +X!Y +X!Y901!&'54632!6&#"32'_lb Zq&+* R\Yi!&Q1rQ&pSEX/>Y 01&pcEX/>Y010h&"!&suK.&uug6&f&D$&u&ji&D^hw&% -uN&Eni[&)R =_2N&I_&3)Qg&(_:&o EX/>Y01OQQQQQ9>6i^Y y({  a : ~ e > d K U7i3m/e*|=w|!L}Y/sq8Y(?Kn>z  ! !>!p!!!" "&"@"# #K#$ $t%<%%&Q&'.'''(?(~()2)*Z**+X+,(,,- -p---..(.a../ /Q/q///00!0;0z0001g112$2b23734445K56%6n677d78$8~89,9r9:$:~:;P;<<}<=e=>=>>?8?@@Q@@AIAABBSBCC`CDNDEEEF F}FG(GvGHHQHHI5ImIIJ5JJKAliA$6?-a(44[= 7W3\)`a3paX~4a4a# Y" %B( )^g{bguET  w^_HUAd}HU)-}NT3)Z!R9VuMqYUI;5Qt2=@;4|_)4!H{vqZ\5K^EH2iY\;B a7*^3kvps(rNO evlI#QlIbH#eb<5]6Zlj\ji[<`-1&\c'!9At3Ed$`lVnX  >Z$C,Vg_g;mo{M~uYX%7%#<|Xu~ $u|X|X15XvPX~Zi#uu-y{+, X|XeXacx^[Z h { U2/U4edeXKDPi~<HZUXn}axnZlVZ  %lnukov6YnWXnZrlZVWIri  4PTPoZ\DovY$U lZTnRXnuEDG AVHG+:f>=oB/L8@&Q$ O)) \0VlB,SEksqPlS@2g_3YqellL6SEj) n)\aU)=')8?X o| Sj;S^Q/2`W3z^se.oZrO"Z    H #'U5\3C3A3D3(3>363733-33E8,_iSh^6Q6Q/Q QQlQ"hQ>Q^6HQ/RQmL005/weQQQO:QwQQLQQ WQQ%Q~(N >QQQ/GLQf!/Q:/HH@Qp()6;?/CAQ;<.l-l_`'lT`oQ/zQw^=Q^^C6;?/CAYCC]lCCAW#kj.4^X/K&4V=@61NPT]]H{HH{zQ5J6aQ888-a8[=4qiN ZQ.X;QJJ $sssssss@EznznznznjjjjnEEEEEQiQiQiQi?-?-?-?-?-?-?-(4[=[=[=[=HH{HHX~4~4~4~4~4YYYY%%s?-s?-s?-@E(4@E(4@E(4@E(4,-4zn[=zn[=zn[=zn[=zn[=tR7tR7tR7tR7nWjHjHjHj3j\\$\qn`aVn3pVn3`VnpVnpnXnXnX}E~4E~4E~48na8nP8n@#@#@#@#@# $  $  $ QiYQiYQiYQiYQiYQiY%>B>B>B=Q4ooh/QQQQ""h"p"wQ/////SSSS_////oQQQQQ>>>>Q""""6"hlQQQQQQQQ///QQB^6^6^6^6hhhSSSSSS__8,8,8,sz`^j^(jyJ]s)nzn>njnnnE5n $j<]Zj\cv~4!" \c~4\cAznvl@jj$-lns)nvlznZnnEl5n@E $?-[=|X~4a(4% [=YX#3\H)u%%<+jg\_Bnas?-znZ[=|X#!9/4 E >#<@E(4jX 7%js?-s?-=zn[=E;B;BX 7% >#<Z|XZ|XE~4U2U2-%%%vPnu4s?-s?-s?-s?Vs?-s?-s?-s?-s?-s?-s?-s?-zn[=zn[=zn[=zn[=z[Uzn[=zn[=zn[=jH{j{3\E~4E~4E~4~E~4E~4E~4H2H2H2H2H2QiYQiYiYiYiYiYiY%%%4 $1vPvlYXWvYAs ]`V;/;PghOitR7nXs?z/[jHE~8HQN_\)na,n4,n4nWn`an`aVn3_nanXE5na8nO@# $ QiI"I">B{ ^zQQ8,Q"hlQ QQ/Qh_i"w_QQ^6"h"wlQzQQQQ QQ/QQ/hiO:Q/_f!Q0hZ.^6_s?-zn[=QH_l <) 33fP [ GOOG@f :                                 nt ~%'0S_g~7Y #%/EOboy?M    " ' 0 3 : < D t  !!!!"!&!.!^"""""""+"H"`"e% &(1T`h7Y #&0FPcpz>M    % 0 2 9 < D t  !!!!"!&!.!["""""""+"H"`"d%eD# (%^S~|}rsolkiaYP!ߔyMߪެߞߝߖߓ߇kTQ 222tt~lt0Rb{z|  }~+,-.   ()*+,-./012345678wxLM}~NOPQRSTUyzVWXYZ{|[\]^_opv   ~xcyo{z%&&''|(01127889@ABCIJKLQRST_`a befg}h~+ 77YY  ##      "#$%%&/0014556899:=>>??@ABBCCDDEEFOPPQQRRSSTTUXY[\\]]^^_abbco pqruvwxxyyz(,159wCL}NyVXY{[_`o>?pMM r }         " % ' 0 0 2 3 9 : < < D D t t      v    !!!!!!!"!"!&!&!.!.![!^"""""""""""""+"+"H"H"`"`"d"e%%,K PXYD _^-, EiD`-,*!-, F%FRX#Y Id F had%F hadRX#eY/ SXi TX!@Yi TX!@eYY:-, F%FRX#Y F jad%F jadRX#Y/-,K &PXQXD@DY!! EPXD!YY-, EiD` E}iD`-,*-,K &SX@Y &SX#!#Y &SX#!#Y &SX#!#Y &SX#!@#Y &SX%EPX#!#!%E#!#!Y!YD- ,KSXED!!Y- ,+E- ,,E- ,' SX@cTX+pY#SX TX+pYYY- ,@ ZX,D,DY- +++,%+B5* +,%+w\:#+v`K6+# +>0(+1)"+ 1)+ [J:0+ ,%+ ;0(+ 3%+G:- ++ E}iDsPttpu?s_ss/tOtottttu?u_uusousst_tttt?u/!so!s* N`J}`9 ! :[ ^ ^ v ^ ^ &  @   &" \H T    Copyright 2011 Google Inc. All Rights Reserved.Roboto BlackRegularVersion 2.137; 2017Roboto-BlackRoboto is a trademark of Google.GoogleGoogle.comChristian RobertsonLicensed under the Apache License, Version 2.0http://www.apache.org/licenses/LICENSE-2.0RobotoBlackjd(Y%>E^yy  "$%*+3466;<ADGHKMQQTX]^bbddhhjlnnpp  ((++--03_cz|  ,$%&'y 2LDFLTcyrlgreklatncpspkern $H %&'()*+,-./0123456789:;<=>eg/3579;ACEIKLXYz{}   "$%')+- }  Az<<`>P?<A.>f?v?v??`?v?vA.?  ?@@<0=A H>?< ??>??@6<@P?A.=>PA.>P@?z. B" #?v%0&<0)P>@@9?=<<0P>P>P>P>P>P>P<>>>>?v?v?v?v?vA.A.A.A.A.=>>>>>>><<<>>>>@@>P>>P>>P><<<<A.><><><><>A.>A.>??????@=@=AAAAdAdAjARARARARARARARAdAdAdAdAdARARARAdAL<<<<AdAdAdAj>P>?v?vA.=>P?>A?v?v??v?vA.??=<0?v=?>@>>=?v?v??<>P?=>?v?vA.?<?<0><>?@<<<@@@@=@<<<?v?>P>><@@<=@?v<0P>>P>><<<<0>?<@<@<@>P>>P>>P>>P>>P>>P>>P>>P>>P>>P>>P>>P>><><><><><><><>A.>A.>A.>A.>A.>A.>>=@=@=@?=P>>?vA.>???A.A.?v????`?v??v?A.????@@@@@AA.ARAdARALAjALARAdAj %*,- /6 88:?EFIJLL OO!QT"VV&XX'Z](__,-./0589:<=>FGRbcfhk  n  op""s.0t35w77z99{;;|CD}TTVVXX\^0033EEGHz{}}  "%''))/8CGMOTTeimoxx &6789:<>EHNPTVWX\bcefpr  vxyFHHJW__puww{| 89Ew:;&= &"$&&&prt&%@.08EGHIKSUVYZ]@@ @"9BE`ak3@@@@@@@@@@0#2345678MNO@@0@@@@ @ @!"@#$@%&@'(@)*@+,@-.@/0@12@34@579;=?ACEKMOQSUWY[]_acegikmoqsuw@38:;=9E3 "$2345678MNOprtw8:=9E"$prtw.9bdM  AGHIKUa"B`ak79;=?ACEY[]a@GHIKU"B`ak79;=?ACEY[]aS KMOQSUW_.9bd  Z]#qsu?'+35 !AjEFHI-  JLNPRTVXZ\^`@'+35!AjEFHI-  JLNPRTVXZ\^`8%<= 3C]"$ "$&(*,.024prt(FF% FFFF "$&(*,.024GHIKQRSTUYZ]"+6<>BSUW\`ak#  79;=?ACEKMOQSUWY[]_acegikmoqsu|| GHIKUYZ]"B`ak#79;=?ACEY[]acegikmoqsuG  GHIKU"B`ak    79;=?ACEY[]a:m  GHIJ KSUZ ]  "B`ak        13  # 23456789CDEFGL MNOPQRSZ[\]mnostuvx               79;=?ACEKMOQSUWY[]_aq s u       \^4D^&(* \^4D^&(*"Z\]^4D^#&(*qsub 8:<=Z\]  349:CDEGI]^bcdldm"#$pqrstuwyr 8:<=QRT+369:<>CEGILPSUW\]bdflmo"$ prtwy|u 8:<=QRT\+3469:<>CDEGILSUW\]^bdlm"$ prtwy|S8QRTZ]  +69:<>ELSUW\cm# qsuw|j8:<=QRT\+3469:<>CDEGISUW\]^bdlm"$ prtwy|%'+358:= !9AEGHIJMPQXbdfjlnopEFHI"$-   "$&(*,.024JLNPRTVXZ\^`prtwyz58:<=39CEP]bdflo"$prtwk%8:<=  39:CEGHIJLPQ]bdflmop"$     "$&(*,.024prtwyz: 8:=9:EGILbdlm"$prtwy18<=39CEPQ]flop"$prtw$8<39CEPQ]fopw8=9E"$prtw9QRT\  +46:<>DSUW\^m |$ Z] :m#qsu5QRT+6:<>HJSUW\m z|  vGHIKSU"B`ak19CDEFGPQRSZ[\]mno 79;=?ACEKMOQSUWY[]_a EGHIJ KSUZ ]   "BQ`ac e kp        13  # 23456789CDEFGL MNOPQRSZ[\]mnostuvx               !#%')+-/13579;=?ACEKMOQSUWY[]_aq s u       :HJQmpzOGHIKU":BHJQ`akmp79;=?ACEY[]az"Z]  :GHJcem#qsuz#Z\]4DQ^p#qsu  \v  4:DHJ^cemVz d  :HJcemVz j  :JcemV  bGHIKSpUW[ p"B`akpppppppp   ppp pp79;=?ACEKpMpOpQpSpUpWpY[]_papLxLx[  AaM:JLMXb d mn1.08@JM_ilh :ILbdlm0V~[m|^Kr Ah cIhh0  .0<8:j@IJ L?MX_c1e_i lm0n AJVXam| 1#X[:IeJLfMXbdlm  :cemJ[   :cm l[  :JXcemn1[1IJLbdlXR_:mJX2[4V[ml|nC~{y~}|t}y(} f .08}:@J|LMlX_kcei{lmn1 AVa1J  A Va1[1l1  h&%j Y\j h0X~|( dSNolH32q)cyUUf~3_akj6 w9 %),4 8>EGIILLQTVV"ZZ#\^$'()-./02347>?@ABD  F  GH.0K35N77Q99R;;SCDTTTVVVWXXX\^Y\cefgilm00p33qEErGHsz{u}}wx  "*/8CGMOTTeimoxx  "#$%&(25;BDEFJPQS_a  eghFoHHJW__bbddpuww{|t !!%%&&''(()).. // 0033448899 ::;;<<== >>EEFFGGIILLQRSSTTVVZZ \\]] ^^"  %      ..//"00334455 77 99 CCDDXX\\]]^^!!!# $ 00 33EEGHz{}}             "" ## $$ %%&&''(())**/0 11#28CG MOTT eefi$mo xx#     "  %"           % % %   !!""##$$%%&&''(())**++,,--..//00112233445566778899::;;<<==>>??@@AABBCCDDEEJJKKLLMMNNOOPPQQRRSSTTUUVVWW__bb dd pp qq rr ss tt uu ww{{"|| "        # ##       " !   !$     #         $    #"      " " " !   !        bDFLTcyrlgreklatnH .AZE CRT FRA ZMOL NAV ROM TRK      c2scccmpdligdnomfracligaligaligalnumloclloclloclnumronumpnumsmcpss01ss02ss03 ss04ss05ss06ss07$tnum*        60nL`tflq3210(sutvrwR   ; /0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwyxz{|}~    %&'()*+,-./0123456789:;<=>eg/3579;ACEIKLXYz{}   "$%')+- } q3210(ds0ut/rwR   ; v123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abdefghijklmnopqrstuvwyxz{|}~    EFGHIJKLMNOPQRSTUVWXYZ[\]^0468:<BDFJMZ|~   !#&(*,.~ *BZrMxN`H0I$'a_bc` MNI26rJd~"<N$.8J| <Fh.8BLV( &,   &,68:  &,HF  $$*06JL   $*06bd  $prt % &,!  &,79;I  $ &,KM    &,ce  $qsu &+-,. $G $X`Z\^ $Ya[]_ $fnhjl $goikm%)+-/46;=>EIKMOTV[$]^*,-./015     OX{@JMMJPPJ*  JXXJWKo6,- .//O EGFHIghijklm '(+35FGHKSTU nooIKj.Z^XUWV[Y]\OJKLMNSeff pp  .pfLNMKOeSJU^ .[]^XUWVY\ZJKLMNOSefp.pfJOSSU^ eel%<  !"#$% >zst?@ABCDyubioath-desktop/fonts/Roboto-BlackItalic.ttf000066400000000000000000005317401412677075700216570ustar00rootroot00000000000000 GDEFB6bGPOSnK9 e.GSUBYPOS/2vx`cmapwXFcvt .=3,Zfpgm#08gasp6 glyfߤ,xhdmxyheadGW6hhea HT$hmtx#8locaơA maxp> nameDr3postad6 prepC18d( PEX/>YEX/>Y9999 ܲ 9 901!!!!5!(<6 }wx^^^a<9EX/>YEX / >Y +X!Yа/01!!&632#"&^jNMfjNKhIg^FKe]Q & 9/ 9/а01#3#3siYYEX/>YEX/>YEX/>Y 9|/ +X!Yаа а / +X!Y а аааа01###73#733333#3##3#-ɉ Y!ȋɋ Y 0Zf``fQ4&|-r+./9EX / >YEX!/!>Y! 9  в !9  +X!Y +X!Y!$в(! 9!+ +X!Y016.766773%6&'"#7&&7326 8i; (*==CX;i; '(HOPB]E]MRkbtc^E?[NUlaqwUK )6:';<9'а'а'+а'77/9/EX/>YEX"/">Yа/ +X!Y +X!Y"а/"- +X!Y3 +X!Y01'&&776636776'&'&&77>776&'&'  +*-E Y-H ]-*)l (-/HnCK5?@8NsD6MNZH0AB3@G2WeV'2m03490а0!EX/>YEX/>YEX/>Y9 +X!Y"9*90 +X!Y01'&7>67!!''.7677676&'&I8wtbU ^O2}dBo J As 3Ei +-3S@ksfZ\Ó H9//01&&73!HyJ Hcbg=Xf<kF 9/ /01'67'7[ 3  I 9Q=bUs?`Uc. EX/>Y/  /01%73%'['&V:Yg{Zm'{   /а  +X!Y01!!!!!!K2ED2LB3:y!|y] 9 / +X!Yа/01'7677!4\4 )#-yO_K/ +X!Y01!!-I$H # 9EX / >Y +X!Y017&632#"&&lKJhjMLfLd[IKe\`J/EX/>Y01#3U}-K_ H!"9EX / >YEX/>Y  +X!Y +X!Y01.'&77674'&|d &.. (0C t+5 x*o׉JK3EJKF5 S( B:EX/>YEX/>Y9/ +X!Y901!!%7.%.` d[ 9EX/>YEX/>Y +X!Y99 +X!Y 9901!!776'&'&>%$G mMk  {&Gth߾pu n*y$+,9EX/>YEX/>Y9|/3C] +X!Y 9) +X!Y)9# +X!Y )#9016676&'&>'.7!676&''Zt FFAd a`rHRJS MZee[DXL?vcݸx0kkm|G\fSYeL S9 EX / >YEX/>Y 9/ +X!Yа ав 9013#!!75-66T%X95+m9EX/>YEX / >Y +X!Y 9/ +X!Y9  +X!Y9901!!672'.7!676&#"y>*YQx܁tHJCRl PUmD4rzN^osJAG&e'(9EX/>YEX/>Y +X!Y9/9 +X!Y! +X!Y01#6'&&776$7&6'&&L{uM tdspQHDd} JuㆇEO {ko4Xa~FU^3EX/>YEX/>Y +X!Y901!!!2e*(s#/|,019,а,EX/>YEX/>Y-9-/-]J-] +X!Y-9-9! +X!Y' +X!Y01'&&'&76%&7>6&'&66&#&36fTR b>|  W CDMp GDJn\:8AY :9?Z3wYEX/>Y 9/ 9 +X!Y +X!Y  +X!Y01#.7>!#3$?4&'&rxR /).N`J@?Zx E4c~ℏHGlSaSZdՉJX%f&yf'|WEX/>Yа/01u3.8[i hDB'/а/ +X!Y +X!Y01!!!!{.y{.EnHEX/>Yа/01%~3.j8j%?t $_ %&9 EX/>YEX"/">Y +X!Yа/9 +X!Y в90167766'&'&6$&632#"&A SDEZ:OՁ^ uglLMfkMJi|B7pKXXP`t]WMd^FMcY;7EyFG9D1/(/EX/>Yа/ 19 / 9= +X!Yа1 +X!Y(# +X!Y C +X!Y01&&''&&'&6676'&7#&$'&$67&#&OuxoNUMQ+i֛Ц'~T+#yz*&1dx!rH>[29&YCV2Y=RH.:`H T 9 EX/>YEX/>YEX/>Y9/ +X!Y 901!!!!!Y/B .@P 9 аEX/>YEX/>Y9/o]]O_q]qJ] +X!Y9 +X!Y +X!Y013!2676''676'' U_=` ա¶κ`nk_OH,P 9EX / >YEX/>Y 9 9  +X!Y +X!Y01'&'&$%6&'$67 Y dl;y~r SSt H9 EX/>YEX/>Y +X!Y +X!Y0132276&';3;drrǬ=µm! [EX/>YEX/>Y 9 /O r ] +X!Y +X!Y +X!Y01!!!!!!=y/1/6i BEX/>YEX/>Y 9 / +X!Y +X!Y01!!!!!e/:%DO?_ !9EX / >YEX/>Y 9  +X!Y +X!Y 9/ +X!Y01%'&&77%&&'&77#7!Rƿl.e]!z\-*C`iB<SulӴd= REX/>YEX / >YEX/>YEX/>Y 9 / ] +X!Y01!!!!!!!i jWedU`BkEX/>YEX/>Y01!!!oU7 9EX/>YEX/>Y9 +X!Y01!'&&774VYo&Ew L 9EX/>YEX/>YEX/>YEX / >Y9901!!7!!KAWmzOym)EX/>YEX/>Y +X!Y01!!!Q/YWYEX/>YEX/>YEX/>YEX/>YEX / >Y99 901!!# !>\9Pe & L 9EX/>YEX/>YEX/>YEX/>Y9901!!!!!N[ViiJ@H !9EX / >YEX/>Y  +X!Y +X!Y01&'&76&'&6[ :o߆ +s  zN"xE[os Oe O 9  EX/>YEX/>Y 9 / +X!Y +X!Y01!2#66'&&''V  ΂M?דrw=GM@'H()9EX/>YEX/>Y +X!Y# +X!Y01%'.'&76$%&&'&676.8 2@`H͔  aZ "[u+WZ|Rݛc9EX/>YEX/>YEX/>Y9/ +X!Y 9 +X!Y01#!2!266'&''pZ  Ry4 zȞ<PAo'f()9EX / >YEX/>Y 9  +X!Y% +X!Y %9 +X!Y"%9016''$66$!6&'&'&&'&7326"MXV OLvHWbtVsq>D zjTeTGd.~hFCpsOU/EX/>YEX/>Y +X!Y01!!!!&X_0_JX=9EX/>YEX / >YEX/>Y +X!Y01%.7!X#oXSL-JH2-JR89EX/>YEX/>YEX/>Y901!!!k@r P/ ` 9EX/>YEX/>YEX / >YEX/>YEX/>Y99 901!!!!!0Z;IMN##P9wt SEX/>YEX / >YEX/>YEX/>Y999 901!!!!2gw 01EX/>YEX/>YEX/>Y901!!%pW^d:vK FEX/>YEX/>Y +X!Y9 +X!Y 901!7%!/#G_0K"$// +X!Y +X!Y01#3!!rs'DA /EX/>Y01!!I<xv'// +X!Y +X!Y01!!73#C'ss1j'9EX/>Yв9/01!3#*>)lEX/>Yа/01!7!,n!/]/а/]01#%K8Q) *+9 $EX/>YEX/>YEX/>Y9 9 / +X!Y 9@ ,<] +X!Y $ +X!Y01!&5'&&76$377&'&>%77'Uon Wl{\ QeL!UOr )';z=5[ymWaq>J4]YM)5(f 9 /EX / >YEX/>YEX/>Y 9 9  +X!Y +X!Y01'&'!!6674'&77ʠV) IkmsfENi*qo@==7[PSYRM9EX/>YEX/>Y +X!Y99 +X!Y01%67%'&77>%6'&GP 4} SBwg/f& c9/EX/>YEX/>YEX / >Y 9 9 +X!Y +X!Y01!!7'&&'&77&'&)Ɋ[iJyKpaLJ!c\q4p&u?<@0`\%T {!"9EX/>YEX/>Y9//qq]r  +X!Y +X!Y 9 +X!Y01.77!7&!76'& t =\|\Xr=ۂ>Fg&I 7UjrWc_\l#d6ke9EX / !>YEX/>YEX/>YEX/>Y +X!Y  +X!Yа013#?6762&#"3#;( qy2q. I_ (͓P_fl C?XPnQ)*+9!EX/>YEX/>YEX / >YEX/>Y9  +X!Y99  +X!Y% +X!Y01667'&&'777'.'&7&'&+ԆS#0lHW;phZMB?]LU(^`qaRSn!ngw<\fLF?&J9/EX/>YEX/>YEX/>Y9  +X!Y016!6'&'&!!ypqgYE Ič`"cCJ?9EX/>YEX/>Y а / +X!Y01!!!&632#"&NJkLMgjMKi:IbXGJaWFL K9EX / >YEX/>Y  +X!Y а/ +X!Y01'&'37&636"&KZ7$lKLhgPLh: QJ`YbY ;/EX/>YEX/>YEX / >Y9901!!7!!x3 I(+4h0=4X/EX/>Y01!!!N JnRx 9EX/>YEX/>YEX/>YEX / >YEX/>YEX/>Y 9 9 +X!Y0166!74'"!74#"!b~qs]WKr]UK;XIW;cYYEX/>YEX/>YEX/>Y9  +X!Y016!6'&#&!rsiWH;W#_O:2RE9EX/>YEX/>Y +X!Y +X!Y01'.776&'&jce; GE[uN <;A[Zk`(Rp 9 EX / >YEX / >YEX/>YEX/>Y 9 9  +X!Y +X!Y01'&'!%6%&'&6 |Xb0mkhEMk( lg~>2[SW0`!`TQm9EX/>YEX/>YEX / >YEX / >Y 9  9 +X!Y +X!Y01667!'&&'&7&'&)ɀT3!emJ8>eGMg&" w&t:Yo[R+Q X9EX / >YEX/>YEX/>Y  +XY]O],<]  901&'&!%63251Nz3j)= jS:P%p$&'9EX / >YEX/>Y 9вT]  +X!Y 9  ]# +X!Y #9  ]016''&&76$%6#"'.'726U sG u2VPzuq2=V6B!.r;1Q!WZb\`k76Ga9EX/>YEX/>YEX / >Yа/ +X!Y  +X!Yа013#7'&&7#73\/)T6AS^X(/G34 ,h:Q 9EX/>YEX/>YEX/>YEX/>Y9  +X!Y01%'&&7!7!!yuIwZhIKvڷ@RVRN:89EX/>YEX/>YEX/>Y901!!!cR:l: ` 9EX/>YEX/>YEX / >YEX/>YEX/>Y 9 9 901!!!!3BM><5 }~:|E: SEX/>YEX / >YEX/>YEX/>Y 9 99 901!!!!drK(>:Hg:D9EX/>YEX/>YEX/>Y9  +X!Y01!#"'732677!kG9X&=\/T^$'8Z2: FEX/>YEX/>Y +X!Y9 +X!Y 901!7%!-#9G-_"j@79/EX/>Y9/ +X!Y901&&?&'7677667s д0DW"L="f68m ˻5}a6[6/EX/>Y01#3Ҵo<79/EX/>Y9/ +X!Y901667767&&7676'7UDW"M=  dIt !:}b5[-568n eElHA9/9/  +X!Y а +X!Y01'.''"'66327^iKu/8I Ùm)32m |lA`Lq+3O?9EX / >YEX/>Y  +X!Yа/01!!#"&'&632 JjNMfjNMfoKe^FKe^J )&Y 9EX/>YEX/>Y +X!Yв9 в9 +X!Y01%67%#7&776773%6'&GQ 4 Ӯ11/0}! SB#!#ܨԋm !9EX/>YEX/>Y9/ +X!Y +X!Yа а аа +X!Y01%!677#376$%6&#&!U RT/0VI.778L +.1ojN bVH\Mh+A,-9 EX/>Yа/ +X!Y( +X!Y01%'&''7&767'7676676&&'&ȃ{9tl{=pEisюBhsҎiz}נtr˝roswxnuv q9EX/>YEX / >Y 9 9/а/ +X!Y +X!Y аааа01!!!!!!7!7!73!NjW$!.."%"P8dd%/EX/>Y+01!!!$H1<|+=>9+2EX!/!>YEX / >Y8! 98в89  а  +X!Y3! 93/в3/9!%а!) +X!Y01'&$73276$&'&7667&766$!6&'&'676'xjUb ĕGVa2m lTc oRPI8KBIn?Gd0qeLJLx^gM.dd/qy`dNT"Hd^ r]%3Nn3::Gh8 # / ] +X!Yа а/01&672"&%&672"&U==WU<>WU<=XU==WQ7QL69OL69OM57QL\):;<9'а-EX./.>YEX7/7>Y7.9/] .79 /  ] 9 9 +X!Y +X!Y7 +X!Y.& +X!Y01'&&7766'6'&7$76&'&6$'&$@ ϛ ]}JA>"gc\÷Ǜ۹Uۤn)I[)(ei\G&n'(9EX/>Y'9/а/ 9 / +X!Y 9|/ +X!Y ! +XY01'#"&746376'&'&'66%277#hYph}j Nxy 5 E\PTf -HSycs}7Kg n};,0??4&,/t&g~v%&9/9/ +X!Y01#!7!}.,v\ :CYEX / >Y +X!Y +X!Y" 9"/$ 9$/$$]!"$9!/"3а3/!; +X!Y$C +X!Y016$'&$7$76&'&#'&7676&''6676&''q\÷Ǜ۹后f☟*g5;EA  *BlXj 9Xei\*Rs6W)6cy?%$+U?DA7=;#9EX/>Y +X!Y01!7!\ >9EX/>Yа/  +X!Y +X!Y0166'&&732676&#"uitm7.3T5,4Wwnto2CM64FP F /EX / >Y а  +X!Yа  +X!Y9 ]01!!!!!!!!/+77+-2P*V\?MV 9EX/>YEX/>Y9 +X!Y в9 +X!Y01!7%676&"66,x!'7 <_B ';/|pmZ #k$%9EX / >YEX/>Y 9|/  +X!Y 9# +X!Y#9 +X!Y0136676&#&66'&&'2676'#bR3A(#CwǕX.F a`u0'!6k{wbuB)psJ0'I!/]а/]/01!!o`:W9EX/>YEX/>YEX/>YEX / >YEX / >Y +X!Y017!!7#"'!hrsOHeoLGT:I^6L%Q + 9EX/>YEX/>Y901!'&&763[4*BPW  9/  +X!Y01&632#"&lKJhjMLfLd[IKe\&c +9// +XY 9 90177676''7>? Y P*+ CV>y H6A9EX/>YEX/>Y9/ +X!Y901#7%7[x$tz B9EX/>Y 9 / +X!Y +X!Y0166'&&7677'&'&ϗ ѕ C8Ln qMn`˕Bǘ$$=Iqde1ods&'U' EX/>Y01x''?EX / >Y01'' AEX / >Y01{uP"b #$9 EX / >YEX/>Y  +X!Yа/9 +X!Y в9017%'&&767767#"&'&632IJX L J YjOKhmLKhx?Hw{OϲfM6Ig]GKe]^EX/>YEX/>YEX/>Y9/ +X!Y +X!Y 9 / ]  +X!Y +X!Y901!!!!!!!!!,u.*.Q.+=IQ& 8/ 9 / 9 9 9в 9  017WP21*ϫ*}&Z$'(9$а$EX / >YEX/>Y # +X!Y!аа +X!Yа 01&''7&776&'&b|m'.zTި&-PF.IA7&Q@kBF(a# Y9 EX/>YEX / >Y 9/ 9/  +X!Y +X!Y01#'!6676&'O- 1ElWXːrpo^Xe+Z!,-9EX/!>YEX/>YEX/>Y9 +X!Y 9) +X!Y01!!6$'&'76676.7>76&'&c, Y&n. ݞjNYoC[ 't.o78KС,N2+`l201J:-_f4G:6HtR,6>?@90а9EX/>YEX/>YEX/>YEX/>Y9 9 / +X!Y 9@ ,<]9:9:/:]:r:q:/:q" +X!Y& +X!Y- +X!Y 1 +X!Y7 +X!Y01&''&&76$376'&'&%>26!67%77'&!654&]oڬ V=U }Y3P\\NF?ELg$pWv ?ED* /1S71hZ/,]܉[c'9>AK>05y72< e+*R+,9EX/!>YEX/>Y9/ +X!Y$ +X!Y01'.76&''7&'77677&#&ZJ j tlP|upM:(4|hgBZKCN2pSW9а/ +X!Y +XY +X!Y +XY +X!Y01!7!&62#"&&632#"&) +igiNOdiMPdiNOd3HcXGHc\Hc[DHc\ o; 'W$()9$а$EX/>YEX/>Y# +X!Y"аа +X!Yа!01667'"''7&'&%&'&%676)XTcu NYexJ56|*]z ׃9Vځ;B[BҚ4n`%f9 /EX / >YEX/>YEX/>Y 9 9  +X!Y +X!Y01'&'!!6%4'&6ŏVbSJjipfDNh' jm>3YNS1^&!'(9!/EX/>YEX/>YEX/>Y]/]а/ +X!Yв99а +X!Y$ +X!Y01#!7'&&'&776767#737!37&'&{J[2!J\pbLJ!d[rAu?<q忂@0b\mEX/>YEX/>Y9/9/а +X!Yаа +X!Y а а013#!!!#737!!7!!7!r rj ic b&V%&TT ۷`$:EX/>YEX/>Y01!!!YK: : YEX/>YEX/>YEX/>YEX / >Y9/_] +X!Y 901#!!3!zCIDMOgz:{  ]EX / >YEX/>Y 9/а +X!Yа +X!Yа а а 017!!77!)!PQ0Yn!nV453y$%z KEX / !>YEX/>Y 9/а +X!Yааа а017!77!!o"{J)*z'(F[ 9EX/>YEX/>YEX/>YEX/>Y +X!Y9901'&'36677!!N]+6*9JLdJ HWhiGRc9EX/>YEX/>YEX / >YEX/>Y 9  +X!Y +X!Y016#&'72776'&!kSR%3/xm[ZY;if<{K:G%&'9 EX/>YEX / >YEX/>YEX/>Y +X!Y9/] +X!Y +X!Y +X!Y  +X!Y01!!&$76$3!!!!!7&#&W|0+I/6.=yeSn`S1m7 >:ap2S,4Dz569'а0EX/>YEX/>YEX/>YEX/>Y9090/0]0/0q0q0r  +X!Y +X!Y 99" +X!Y) +X!Y- +X!Y0166%67#&''&776776&'&&!6'&H@tRVQJ?E։uDDD[wDD[wp> !5wԱSj'8?z' Z[fo]i,9<i2 3 9EX/!>YEX/>Y  +X!Y01#662&#"@i*4.?T  C?n>["a #$9 EX/>YEX/>Y9/ +X!Y +X!Y +X!Y01&&776&'&67767_lyxcΜs6 T39ȱ=@ͨ*"<0Z(>Fnt 9EX/!>YEX/>YEX/>YEX/>Y +X!Y  +X!Yаа +X!Y01#'&'3267#737662&#3ψݲLZ'2"9B % YEX/>Y 9 / +X!Y  +X!Y% +X!Y01&$''&666?&&'&676\!2Js }dZ! !?v+agc+W+\YT{{ޛ`ۓ'^()9EX/>YEX/>Y9/  +X!Y +X!Y$ +X!Y01666677'.76776&'&+{*1 h` #_DDE[vDDZw!$g[/ECDEYYio\jJV9EX/>YEX/>YEX / >Y 9/ +X!Y  +X!Y016677%&&'&7!a+hne$vAX . LFH2- -c9EX / >YEX/>YEX/>YEX/>Y9/ +X!Y +X!Y01!7'&&7!7!667 ytIxZiIK!=B vܶ@RVifH#: )EX/>YEX/>Y  +X!Y01#&'327#KZ)1-~:> Ph !9EX/>YEX/>Y 9 / +X!Y 9 +X!Y  +X!Y01'&776&'&'6667!@eYRVQJ>G?^&N ӱRk':>[oj;/]//а/а/]901'''3\#%/]а/]9а/017%#'[!|p /01 +/]а/]а/  +X!Y01'&&'67՝v?O |E<3 /] +X!Y01&636#&_BC^[EC_]BWQXQF  /а/?] а01&632#"&732676&#"]V}\W|t)*,I)*.GX{sRYvnT(:A-'=C`2=+/EX / >Y +XYа/?]01!7#"&54672CY.0AYb{bt*9D4)p^R:H/а//] а / а / +X!Y +X!Y01#".'66767d$@E="Cc--Ay%X uL X7@/]а/]/а/а//01!#!!&',t 5/а/@ 0@P`p ] а /а01&632#"&732676&'"oPLkoNLmw.4Ik`HLe^H(/*05!/]/а/]01%K8+!/]а/]/01!qK2/а/@ /?] +X!Y9 901'7676''7j U+` :5wA7//а/а//]а//01!!!!D0E  v /@  0] +X!Y01&62"&zmjkjCXPAEVPUB/а/9/01!#6Bx= / ]а/а//  +X!Yа а/01!#&632#"&%&676#"&(W;YEX/>Y +X!Y01!!!_` : 9 EX/>YEX/>Y +X!Y 9017!j.@1PaN@$y%&9а EX/>YEX/>Y9|/3C]]] +X!Y +X!Y! +X!Y01!!&$''&76$&'&6M.4!2@`H͕߆  .ul ! zNM?v+WY-lݛ^e1EX/>YEX/>YEX/>Y901!!!Cs P~ EX/>YEX/>Y +X!Y9/o]]q?rqO_q]_rr +X!Y  +X!Y01!!!!!!0,-&8y0YX9EX/>YEX/>YEX/>Y +X!Y01!!!!!_ FEX/>YEX/>Y +X!Y9  +X!Y 901!77!!_/02L7JP%#dEX/>YEX / >Y 9/ 9/ +X!Yаа/ +X!Yа а /01!7.76$77!&'>?䂀%%m$UIVeky j_8  f i]P]9EX/>YEX/>YEX/>YEX / >Y 9/а +X!Y 01667!!&7!!g}JXJ'NN JVIJIUImVH45Z{  $[%&9EX/>YEX/>YEX#/#>Y! +X!Yа +X!Yа!01674'&!7&'&777!fo}[x'%)-2&mp-0 F#&EXV ȲCI=X>%FS)|"*+9"EX/>YEX/>YEX/>YEX / >Y +X!Y 99! +X!Y& +X!Y0137'&&''&&'&77677&'&Fy$ 3@`ELǓG4UmKFW"QYq:53/XM_M޾?<;~QAGa't'()9' EX/>YEX/>YEX / >Y 9|/% +X!Y%9 +X!Y  +X!Y01'&'!6$676&'&32676'&''7 f[ ͋~[3r<;Jj@hX MЮ{0oH,JSjZ(iQ+%rX_R: 8 9EX/>YEX / >YEX/>Y901!#!#!dMQRw_:D+.e /09 #EX/!>YEX/>Y +X!Y 9 /+ +X!Y+ 9" +X!Y0166&"'.7667'&6776'&&'XyPG_ if ͟YGI]F;c}ԟ*./,E+lgm*-Kn&EP& '(9EX/>YEX / >Y% 9|%/C%S%]%%]3%C%q%%]%%]s%%q +X!Y  +X!Y9S]]%9 +X!Y%901327%'.7667&&5>%&#"E O?L ЎowzAN|@d $t0?fS^[+#pBaS]<4T&wNQ9 /EX/>YEX/>Y +X!Y99в901'7676&''$6?%N"+* & E #3t:-)Y5LMIGB&$ h `#QT9EX/>YEX/>YEX/>YEX/>Y9  +X!Y016!7&'&! U[W;̵U5ZJ:\u$r"%&9"а"EX / >YEX/>Y 9|/]3C] +X!Y +X!Y ! +X!Y01&&'&7!77!7676'&)+- &/y6L y8ηmq 'FJK}5]20==R4.: )EX/>YEX / >Y +X!Y017'&&7 xH=YY:,,8V9EX/!>YEX / >YEX/>Y  +X!Y 9 +X!Y01#$'!'&&76`&%85D4D>"X[Q E2Fq1(DvV,b-.9/EX*/*>YEX/>Y* +X!Y *9 / +X!Y +X!Y% 901&&"'"'676/&&7667&76$3]O)Tr 0z Lfcqd BJs ٘EAm|nHa )}[ZWdB73;:O7cT:^ 9EX/>YEX/>YEX / >Y +X!Y  +X!Yааа01#7'&&7#!#7!)RJAW[UВ*H -9H`,RY 9 EX/>YEX/>YEX / >Y 9 +X!Y +X!Y01>'&'!67765&'&V ÑSc(dWpq,B/uCQ& R O !"9EX/>YEX/>YEX/>Y +X!Y  +X!Y01!6'&'7676'.7766_r'vt J 6= NŪ N#}4-E^K J=>A<d 9EX/>YEX/>YEX/>Y +X!Y +X!Y +X!Y01'&?675677&'&(M;>`l nt@.6=}y.#+uT<E:K 9EX/>YEX / >Y +X!Y  +X!Yа01!7'&&7!!Q= AVVN-8%&?ȥ9==9EX / >YEX/>YEX/>Y +X!Y014''&&7m#o(;  p:].3F 9~X"S%^&'9/EX/>YEX/>YEX/>Yа +X!Y а" +X!Y01&76766!6776&rQM^ˆ?UY @@(F^Vxsf-H1my)"=V 9 /EX/>YEX/>YEX/>YEX/>Y +X!Yа 0166'&'!&7!.c>YZSJT:Osws,%: 31870B>'j()9EX/>YEX/>YEX!/!>YEX/>Y! +X!Y 9 +X!Y!90167!6'&''&&''&&'&7WbN1M@Z<`;-.AV. /%p"#a óuw9Ť]~taJX<|j^չDP ,n-.9"EX/>YEX/>Y$9$/ +X!Yв 9 +X!Y$а) +X!Y01'.77!77&77667%765&'&j e!5" YR. nE'V6- 1 1Iw[z<4 rz@m'5 *<7y{F9EX/>YEX / >Y 9а/ +X!Y01&!&'63~:iA&K+pLS>> FJzFGF?s :'k ()9 EX/>YEX / >Y +X!Yа а/ 9 9а  +X!Y%01''&&''&&'77!6'%7!7sDk!ե}(z N-`g}/\eqa°}  B%{q9EX/>YEX / >YEX/>Y +X!Y9/  +X!Y +X!Yа01!67676&'&!!!K@ndlB ߭ XY_kq/R<YEX/>Y99 +X!Y9|/]]]3C] +X!Y +X!Y01'.'&76%6&'&%!67⥖|@rdo^#0^]v^V{i9YEX/>YEX/>Y9/ +X!Y +X!Y +X!Y +X!Y01!!!#766776676&'R"ƃIx(!w(XMm^W) flCgXv9EX/>YEX/>YEX / >YEX/>Y 9/ 9/ +X!Y +X!Y  +X!Y01!!!!!!!6676&'jVQdeWNm [YOa.A <hZwtu_9EX/>YEX/>YEX / >Y +X!Y9/ +X!Yа01!62!6&'&!!!Z6X8yHIK^s(uz// BCEsh lW9EX/>YEX / >YEX/>YEX/>YEX/>Y +X!Y01!!!!!37CXi?>JUUX Ph^ ^ 9 EX / >YEX / >Y  +X!Y 9/ +X!Y  +X!Y01!!!!2676&'(y Hk ^ZtЇa{eTg W9/EX / >YEX/>Yа +X!Yаа  +X!Y01!!!6!3%!??UUTΘ4ߟqLfslB^*EX / >YEX / >YEX/>YEX/>YEX/>YEX/>Yа/C] +X!Yв9 в901#!#!%3!3!!rccG?dTcxb99+;;])#*+9EX/>YEX/>Y9|/3C]]]] +X!Y 9' +X!Y'99" +X!Y016676&'&66$''&&7!676''[u TOPq  `Xѥ,TZSa -h_[BPRE|kվv0jv]ES`O EEX/>YEX/>YEX/>YEX/>Y9 901!!!!2_sWP~}O9EX/>YEX/>YEX/>Y +X!Y +X!Y01!!#76677ƃH|(!x(~P fl|D9EX/>YEX/>YEX/>Y9 +X!Y01!'677%Zv_]ݎs@Jd)V; |=K3Jj$-G // 9/в& 9&/ +X!Yа&а +X!Y%0176'#!7#&76$37%"266'&&'b81ծ()x/)A dQ~{#|mR fY1!hRd\qxqxZo < /EX/>YEX/>YEX / >Y +X!Y01!!!3!!UX~=^[_G9EX/>YEX / >YEX/>Y9/ +X!Y01!'.7!7gugvJVJ_sOyPzݗDth IEX/>YEX/>YEX/>YEX / >Y +X!Yа01!!!!!N]WYUH^^PU /EX/>YEX/>YEX/>YEX / >Y +X!Yаа а а01!!!!3!!N]WYU}=^^S^ a9EX/>YEX / >Y 9/  +X!Y +X!Y  +X!Y01!!!!2676&'W~ zHl ^Z rҊa{eTg o9аEX / >YEX/>YEX/>YEX/>Y 9/ +X!Y +X!Y01!!!2676&'!!y XHk ^ZiUtЇa{eTgT O9EX / >YEX/>Y 9/ +X!Y +X!Y01!!!2676&'y XHk ^ZtЇa{eTg } !"9EX/>YEX/>Y +X!Y9|/]3C]]] +X!Y +X!Y9 90177!6'&'&66$'&'L Z$o0~| Wp6;|O%&'9EX/>YEX / >YEX/>YEX/>Y  9| / ]# 3 C ] +X!Y +X!Y" +X!Y01&''#!!36$&'&6jaUn%)߆ +s  zN!&/os Oe6 c9EX / >YEX / >YEX/>Y 9/ +X!Y 9  +X!Y01!#!&76$!'bY|< Jw{Ptu~8o+d,-9EX/!>YEX/>Y9/999 +X!Y% +X!Y01'&&77577767!6&677&&` 7"Dz p>W[s HC[u HF[4T*y*+LXUNV : !"9аEX/>YEX/>Y9//qrrO_rq]r +X!Y9 +X!Y  +X!Y013#3676'&''676'&'' lft } Gxw J:Mv-yVZ,R*:,EX/>YEX/>Y +X!Y01!!!bc6:y:T9 /EX/>YEX / >Y +X!Yаа а +X!Y01667!3!!!%#1gu!@4g:9ebaYկ[HK2PH:9EX / >YEX / >YEX/>YEX/>YEX/>YEX/>Y9/\] +X!Yв9 в901#!#!%3!3!7!BBojdDIDW P{zzS{{N%&'9EX / >YEX/>Y 9|/]CS]sq  +X!Y9# +X!Y#9 +X!Y#9016676'&6677'&&'36676''75R ap*[jHCѶE~:X w#58ab Iv5!}Nd=YEX/>YEX/>YEX/>Y9 901!!!! QkKj:a: : `9EX/>YEX/>YEX/>YEX / >Y9/\] +X!Y 901#!!37!hBJDUcOz:{ Z:O9EX/>YEX/>YEX/>Y +X!Y  +X!Y01!##767ZT6ϙ"7y:6| N : YEX/>YEX / >YEX/>YEX/>YEX / >Y 9 9 901!!#!!hegexAD:W: bEX/>YEX / >YEX/>YEX/>Y 9| / ]C ]  ] +X!Y01!!!!!!!FFIIIJo:Z[:9EX/>YEX/>YEX/>Y +X!Y01!!!!!6:?H:2EX/>YEX/>Y +X!Yа01!!!!-88 `z!*2y349&а//EX/>YEX/>YEX/>Yа/а/% +X!Y- +X!Y'а%001!632'&'!#"&''&7767'"%66>CYIZ:9dI"=CST9> )?Ns$Qgvt'!O3k~@8[+=8?D[RXyz: </EX/>YEX/>YEX / >Y +X!Y01!!!3!!IKx8:6A\^:G9EX/>YEX/>YEX/>Y9/ +X!Y01!!#&7!7!C.+8I9DJ&A^JG ].)%m: IEX/>YEX/>YEX/>YEX / >Y +X!Yа013!3!!JJ;:66::L /EX/>YEX/>YEX/>YEX / >Y +X!Yа 013!3!3!!JIx8:66A:G: ^9EX / >YEX/>Y 9/   +X!Y +X!Y +X!Y01#!!!6676'i .ra/Sf _t5K?y ~: o9аEX / >YEX/>YEX/>YEX/>Y 9/  +X!Y  +X!Y01#!!7676&'!!} K`/# E<]Kұ:uA<: ,: O9EX / >YEX/>Y 9/  +X!Y  +X!Y01#!!7676&'} K`/# E<ұ:uA<Ra !9EX/>YEX/>Y +X!Y +X!Y9|/CS] +X!Y01&>'&&767737&&>P ~]"4rGg%!<KLHxfbvH>J R$ %&9 EX/>YEX/>YEX / >YEX/>Y9|/C]]cs]]]q +X!Y  +X!Y! +X!Y0136$'.7!!6776'&'&XOlnIJ@DE[v z[uq|[:xYiU%B;c9EX/>YEX/>YEX/>Y9/ +X!Y9 +X!Y01!#!&&7>37'B?t,IP @6+Jd:f0Xu_v0?LF$%&9"/EX/>YEX / >YEX/>Y"]/"]"]$"9$/ +X!Y9  +X!Y +X!Yа$ 01#6'"'3676'&'&!#737!33|m<nCd(30xqhXEΖ"I܎kQ"cCSW 9EX/>YEX/>Y +X!Y +X!Y9|/ +X!Y01%67%'.77!6'&%#GS 4^ 4}9 SBvi-ĭAC|z:w !9 EX/>YEX/>YEX/>Y9/  +X!Y +X!Y +X!Yа01#!#'#76676676&'a7| @3v!Kcj+Qg A@:ɫ6G>69r:9EX/>YEX/>YEX/>YEX / >Y9|/C]]] 9/ +X!Y +X!Y  +X!Y01!!#!!!!6676&'IJ7~ FFI+Se @@ɪo:F>69&v9/EX/>YEX/>YEX / >Y/]]9/ +X!Y9 +X!Yа01#6!6'&'&!#737!3.ypqgYEЍ!I`"cC[: F/EX/>YEX/>YEX/>YEX / >Y +X!Y01!!!!!K?>̼:6h:E"a#$9EX/>YEX/>YEX/>YEX/>YEX / >Y9 +X!Y01'"&''.7!67!7Ȥ#j0ӒjVIBYrT*<RI:**HS|z:)*8:!a"#9EX/>YEX/>YEX/>YEX/>YEX / >Y 9 +X!Y01'&&''.7!7!67f!a*WdJc_$dJchFYd:JBXH YKtX .t9EX/!>YEX / >Y 9/ +X!Y 9/ а а +X!Y  +X!Y01##!#73!36676'1} "3J32Pl ;ճ; (RG| 5%&'9EX%/%>YEX/>YEX"/">YEX/>Y"%9/]9 +X!Yа! +X!Yа +X!Y901%6&'&%!67%'&&7!![a cpZ#o.xT०niTe.8wiN~tS$%&9EX$/$>YEX/>YEX!/!>YEX/>Y!$9|/CS]]9  +X!Yа +X!Yа +X!Y9016$%6'&%#67%'.7!!]Lþ|v9"qHR 4~d tNJ@FSBwey؂?:d 9 EX/>YEX/>YEX/>YEX / >Y9/ +X!Yв901'!#!373!3L>NP/4`_P||: WEX/>YEX/>YEX/>YEX / >Y 9 / +X!Yв901'##!!!3''@46-}8dA : 9EX/>YEX/>YEX/>YEX / >YEX/>YEX/>Y9/ +X!Y а ав901!373!'!!'!!3 7>NO/GV6z6P``b~:EX/>YEX/>YEX/>YEX/>YEX / >YEX/>Y9/б +X!Y ааав9013!!'##!'!!3''Hd?45-},KAo :|9 EX/>YEX/>YEX / >YEX/>Y9/а  +X!Y ав9 +X!Y01!6&''!'"!6$%%%56 Jb3cZBw~64$ Fb\ bcE5W:x9 EX/>YEX/>YEX / >YEX/>Y 9/ +X!Y ааа +X!Y01!774'!!7667%7'헓fIFWW ñ@\۩Cdy^SľM!"#9!EX/>YEX / >YEX/>YEX/>YEX/>YEX/>Y 9 / +X!Yав9  +X!Y01!67!!!%!6&''!'"%B5;]Ur56 Ga8b[B&9_9]od Fa] f5: !"9 EX/>YEX / >YEX/>YEX/>YEX/>YEX/>Y 9 / +X!Y  а  аав 9  +X!Y01!767!!!%!774'!7''!6CKQD?fHGZWhY:/"ڬCcycZiAN+445694/1/EX/>YEX/>Y9/ +X!Y) +X!Y )9# +X!Y1]1.а./..],1.93а3/016676''''&&76632676&''7%#5Xv / gr=2F-E`ϰKajm/~!nZPh+ri5+)A ęWK]fV'0"129"-,/EX / >YEX/>YEX/>Y 9|/S]]  +X!Y% +X!Y%9 +X!Y,],*а*/**]/а//016676/7#'&&76633276'#77%#'}E] |$) blW_1f[~!l!uD;R V1!qK[U6-zwlYL#j$%9 аEX / >YEX/>Y +X!Y 9|/3C] +X!Y  +X!Y01.'&667!&%76&i 1~ /hex8dm-cWY,>OQN2Tp9аEX/>YEX / >Y +X!Y 9|/CS]  +X!Y +X!Y016'&77&%6'&7,?b2I_ L  5@$&G9EX/>YEX/>YEX / >Y 9 +X!Y017!'!%W0)+" W0#U<8klX_UG9EX/>YEX/>YEX / >Y 9 +X!Y017&!!*a%854) Z3S]zu3:[zN$*T+,9EX/>YEX/>Yа а +X!Yа' +X!Y$01'7&'&7774&''7766#;D U<<5  R/x|%$ጠ Djgpkb\nj<<6ZeZn@']()9EX/>YEX / >Yа  а  +X!Y +X!Yа%017'7&77>6676'&''77DވFN 4AR'6Ikmpr##i(V(dk!;X'vEo/DL;MN9; а;EEX/>YEX/>YEX / >YEX / >Y 9 +X!Y  +X!Y" 9'а<а4[{J;uvq72@ zk>tvtL OD5 |y9*)GQ?Q{y-) (.!81'jr%.%S@^_v[B ,AI5JK95 а5CEX/>YEX / >Yа/ в 9 +X!Y  +X!Y  9&а,а8а8/.а./- +X!Y.4а4/< +X!Y8EаE/IаI/01'&&''.7767"77!?&''.#"'766677i`O&W3Yrbt%4U!{#sut=J P|وGF~݈yoAýB >  (.#h'jr&.$RA^eqZE%"*s+,9)/EX/>YEX/>YEX"/">Y а +X!Yа)а)/#а#/$ +X!Y#&01'&&''.7!67!7%7!!#7Ȥ#p0ΓiVIBYrT*Z{<RI:**HS|z:)*玎8 (')*9'EX/>YEX/>YEX / >YEX/>Yа +X!Y +X!Y'а'/(а(/" +X!Y(%а%/01'&''.7!7!67%7!!#7f!WWdJc_$cJchDZd :XH YKoX鎎:K9/EX / >YEX/>Y  а  +X!Y +X!Y01!&7%7&'&D/,W 5. Y)B/E\N69RK 9/EX / >YEX/>Y а  +X!Y +X!Y01!&7766%5&'&Ef' 1=]&!' QXo2>/EX/>Y01'#'7'77',S(R TVrrutG`q/ +X!Y01'7!7+' ~l-/ +X!Y а /а/ +X!Y01776'76&'&#7&FPCCeu"/\M"Llg(-2q`6t /а/0173`"%Kꊻe8Abt /а/01'773QNQkY #/;GS_x/?/K/W/3/  +X!Y?а?E +X!YаKаKQ +X!Y!аW'аW] +X!Y-а39 +X!Y01662'6#&6632'6#"662'6#"6632'6#&662'6#&662'6#&66'6#&662'6#"m[UpkNUk\VpkOSl[YmjNVyk[YmjNU/l[TqjNW@n[UpkNUl[YljOU(l[WnkNUXffZfgUhfZfeXfiVfeWfhWfgXfd\fgYefZfgXffXfgXffYfec "'9!// //&/EX/>YEX/>YEX/>Y01#'37%%77%'%'7'i|i} <>HAcA.sa?`@9aP XC= WCQRV8:1W:&'6FEX/>Y 01W&&sREX/>Y 01 .Bw9EX / >YEX/>YEX / >Y +X!Y 9/ а а +X!Y  +X!Y01##!#737!36676'P} ۇ!J2Pl 4ճ񿒒rRG| O9EX/>YEX/>Y9/ +X!Y +X!Y01!2'#6'&&''367'7V XZc? L?I05d\ᆈG5hd]YEX/>YEX/>YEX/>Y +X!Y +X!Y01%''&'!%64'&27'7676WI`D`aTb0m%ohENd&;X^E# k{Fq0jg~@=ZRTEpMQX5 3 9EX/>YEX/>Y +X!Y01'!!!%D@ _w,EX/>YEX/>Y +X!Y01!!!!*8I6:=h9EX/>YEX / >YEX/>Y +X!Y 9/  +X!Y +X!Y01!32766'&&'#!!=r_Ydhw:L9/EX/>YEX/>Y +X!Y9/ +X!Y01! '6676''!!cc# ޺md ,P6ۗL@|Nc:&QH:&Q&,Q :&Qkd9EX/>YEX / >YEX/>YEX / >Y9/ +X!Y9 а017!'#7#!!333U(,-FiXiF35@s;= &:\EX / >YEX/>YEX / >YEX/>Y а/  +X!Y 9а01!'#7#!!3733&b-,""DHJJD%'.:{:x{oEX/>YEX / >YEX/>YEX / >Y9/3C]] +X!Y +X!Y 901#!!!3!!ۧd2.#byr+y@3PZ:j9EX/>YEX / >YEX/>YEX/>Y 9/ +X!Y +X!Y 901#!!!37!5gB-DTcOz5{ &,QX:&QUf9EX/>YEX / >YEX/>YEX / >Y9/ +X!Y +X!Y01!!%'!!!!d-i jWnBQ`: tEX/>YEX / >YEX/>YEX / >Y9|/C]]] +X!Y +X!Y01!!!!!!!I-FFIo:u9EX/>YEX/>YEX/>YEX/>Y9/ +X!Y +X!Y +X!Y0132766'&&'#!!!!7r_YdBhw_U;i9/EX/>YEX/>YEX/>YEX/>Y9/ +X!Y +X!Y013 '6676&''!!!%! ܸhi pu3RL<OipX6:KG*7899,EX / >YEX/>YEX/>YEX/>Y9/  +X!Y +X!Y* +X!Y-а5 +X!Y01&''&$77737&&7736?6'&'&ᢻ͓")X!Y|# s=7&tc*LJqr Ty 9Q3 GKEos샬4v݇HDĐ'N8o.Q&2349(EX / >YEX/>YEX/>Yа/ +X!Y9   +X!Y& +X!Y)90 +X!Y01&''.7767&'&776636?6&'&ψzz  q   ט  CDX 1iQ#/*i t.+BAABɛ74jj]Jx,9Ht&<QE:&\Q|^9 /EX/>YEX/>YEX/>Y +X!Yаа +X!Y а 01!!!!!3!!.-ڡW>c[_X:Q /EX/>YEX / >YEX/>Y +X!Yа +X!Y 01#!#!!3!!--aJx856A&QO\:&QS{P9EX/>YEX / >YEX / >Y 9/а +X!Y0137!!#7&7MKg88xVfE^01JBGp P ki:M9EX / >YEX/>YEX/>Y9/б +X!Y01!!#7&&7!737!@@ %8I= 23>[JHئ]7( C9/EX/>YEX/>YEX / >Y +X!Y013!6!6&'&Vf{_wJJ^sOxxݘEthu",g-.9$EX/>YEX/>Y'9'/ +X!Yа' а +X!Y# +X!Y01&$77&&76$%7&!76'&&3~!?*t  qo$w) W!8d.}TUI<[f<@"1.OVS%&'9 EX/>YEX/>Y!9!/!/!q!q!]!r +X!Yа! а +X!Y9 +X!Y01.7&&76$%7&!76'&u }SL!ȊW}YXt<(Ei*I |փ Ӭ>f+TlrYeb[n"eoj9EX/>YEX/>YEX/>YEX/>Y9/ +X!Y9 +X!Y016674&'%!!3!lܶYWcXdKp2&ߵfy< :f9/EX/>YEX/>YEX/>Y9|/cs]C]] +X!Y901'6676&''!!3!,vw ܽhi Z`AIDNI9ޗM<O^v:{W&VW:&RFh 9EX/>YEX/>YEX/>YEX/>Y9|/  +X!Y +X!Y01!!'&'327!!SiiWP\+1/|be^I @HY:t 9EX/>YEX/>YEX/>YEX/>Y9|/C]]  +X!Y +X!Y01!!#"'727!!IIJMY%<&{DF:Zo:W&,RW:&PW&1 W:&>["h#$9EX/>YEX / >Y 9/ +X!Y9  +X!Y +X!Y01'&&776&'&6767(ͫlyvs6 T3ªɣ9ȱ=AP"<0Z(m9EX/>YEX / >Y +X!Y9 9/ +X!Y9  +X!Y901%!'&&7!676'&''7-0)x SLIZ %*nGRcM7.q:` 9 /EX/>Y +X!Y9 9/ +X!Y9  +X!Y901%!'&&7!676&''7.'q GOLZ \v$4&kKWfSrG&\&&T>:&K'&ZPT0 ]P ]p ]01Gt&<TG`:&\T# R9 EX/>YEX/>Y 9 / +X!Y  +X!Y01!%.766$3'hRV w ENi3-RP|ٌ|3~ga=5b"\ #$9 EX / >YEX/>Y 9 / +X!Y в 9  +X!Y01%.766$3!366776'%'^w RW4hENk]X{؍~\H|_iqwfZyAa$/019%EX/>YEX/!>YEX / >YEX/>Y 9  +X!Y9 9' +X!Y , +X!Y01!677676''&&''&&'&&'&77I ǂRmIDGn:򮍪IQ,Lau |RQ:oYEX)/)>Y-9/ +X!Y +X!Y9) +X!Y")9016&'%2676&'%76''&&73>A0{ Nb14k|{aH ߸ W_d\?Af{x:vG. dcdcU:+c),-9EX!/!>YEX/>Y +X!Y !9,!9/ +X!Y!  +X!Y(901676'&''"&776&'%7676&'%/b%9 l ){ (.(RcMO!6 }vONNN۠|wL, a.5Iu4pQb]'b()9/EX / >YEX/>Y( 9/ +X!Y   +X!Y9 +X!Y012676&'%3'667&'&776'&'b+d QU% g[ !,ۦx% .b[Teq?'yTPE,P0UY-&{gv1:$b%&9/EX/>YEX/>Y%9/ +X!Y +X!Y 9  +X!Y01'7767&?6'%76676&'%7 <6  #Fe <6!^\ $vO.g\J&(M@ C62@R4D{Z!e!"#9EX / >YEX/>YEX/>Y  +X!Y +X!Y +X!Y 901!#76677!76''&&7Hw(!w*@guI dl*] dddcۿX:"e #$9EX / >YEX/>YEX/>Y  +X!Y +X!Y +X!Y 901#'#767!6774''&&7>3u!5z"uCSb9 1 THEѼ0_^^^ܻXw9EX/>YEX/>YEX/>YEX/>Y +X!Y 99|/]3C] +X!Y016776''&&77!!!!>]t Iﭺ eVii)Z:dddc^4: !9EX/>YEX/>YEX/>YEX/>Y9|/C]cs]]] +X!Y +X!Y01!!!!6774''&&7HJG'GIt.'Pb 9 a:lG)3G_^^^߸"I #$9EX / >YEX/>Y  +X!Y +X!Y 901&$'&76$&'&6'&'R4"':ȒTw( x^|IʫoUFŢ<=exUS QE9EX/>YEX / >Y +X!Y а +X!Y01%26'''.776&#""GB9 x⎖oTlH^f ]_j`_m$.C?xJO9EX/>YEX/>Y +X!Yаа +X!Y901!!!76''&&7 s0_0! bzF*&6dddcc:O 9EX/>YEX/>Y +X!Yаа  +X!Y901!!!6'&''&&7e.r.HP[` 80 4N[ǃEBiؿ(*+,9EX / >YEX'/'>Y '9|/3C]]]]9 ' 9  +X!Y +X!Y' +X!Y# '9016%&&766$!4&'&'"367%'&$&0+W^!ZPj X[-z |b[V{g3[mGKXKPXhfKVUJsjmG &TG:&TqB# /а// а/а/017&&7ښ\8UF<8UxK0Z(OBJFL@MBJFff@O_&+ +X!Y +X!Y01!7!7!7!nn_sD)  9EX/!>Yа/01#766,G|)SFNo$ 9EX/!>Yа/01'66773*=9 !SaCW 9/а/а/01'6773Xa "S  9/а/01&&77 GF NHIHLP[)&[&m +9/а/ а /а/а/01'6773'6773[^&!'g*"'RRnQ= LEX/>YEX/>YEX / >YEX/>Y  +X!Yа01!!!!!!*:;I;?,,v`p~EX / >YEX / >YEX/>YEX/>YEX/>YEX/>Y +X!Y +X!Y аааа01!!!!!!!!!!!BA)9X)8;J;?)X?`2v  9/ +XY01663'&&5oiogql'mf/vH& /OH& 'r9/ +X!Y01&>32#".s2C%#A32B%$A2o'>-)<%'>-);#'4AO4PQ94а4а4&а46а4J$/&/EX/>YEX/>Yа/9а/ а / 9а/+ +X!Y1 +X!Y+8а1>аE +X!YL +X!Y016'&''&&7766'&&7766'776&#&776&'&326776&'&@@f Ae Pz n,*l +*.G .'k *+.G *+0B (-.F afN`eC0V?WeVA-FF5@D5O1B{O7<D54?B5N2CD7Yty/9/0173FBs /9/01#A3}zo, //017'^moWfWj sEX / >Y 01K[M9EX/>YEX/>YEX/>YEX/>Y +X!Y0163#76'&#_xw RG[N=`~;J!%$&'9EX/>YEX/>Y%9%/ +X!Y +X!Yа а%а%!а!/!!/!]" +X!Yа!в!9 +X!Y01'%!677737#7376$%6'&3#31PT/0WJ rx jL `Ofzkf#$%9а!EX/>YEX/>YEX/>YEX / >Y9/а/] +X!Y +X!Y аааааааа а"013#3#!#!#737#73!!!73''ƼYYYOMOUG!>%렪;()*9%EX/>YEX/>YEX/>YEX / >Y +X!Y  +X!Yав!9!/ +X!Yа/' +X!Y01#37'&&7#''!3!336676&''UJ++XZX>SB_ E7H/<5[ SN@P-9 ˧u_P[g&6WH"&),-.9а%а(а,EX/>YEX / >YEX/>Y 9/а/ 9/а/ +X!Y  +X!Y 9ааааааа" +X!Y# 9#/"&в( 9) +X!Y+ 9#, +X!Y0137!3#3#!!#73'#73'!37!77'77'7!7[GXS'O H \f[d 7 6n)nnrn򣤢:v9EX/>YEX/>YEX/>YEX / >Y +X!Y  +X!Y 9/ 9/01!6'&'%!!67!!/2 pt|IOjbarIpn8-'P::ITcA" #$9EX/>YEX/>Y9/"б +X!Y +X!Y аа/] +X!Yаа +X!Y01!7'.7737#7&'$%!!hQaurJdcGLP]6/zzE#()*9а#а$EX / >YEX/>Y+]@] +X!Y(}(/ +X!Y]]@]  +X!Yаааааа'аа # +X!Y01!#77737'7#!7!%%&''27%V5"! z VW@ A >1!!>V ;|9EX/>YEX / >Y +X!Y +X!Yа/]а/ +X!Yаа/ +X!Y01'7!76677!&'%!5[76Pm*@[xxnSO-3HA]%EX/>YEX/>Y9/а/P`] +X!Yаа аа а а +X!Yа а аааа +X!Y9/01'"'?77!776677Ŷf)(-V))YIz)*a)*-.a-.@:] 9EX/>YEX/>YEX / >YEX/>Y9/а +X!Y 01!776'!!777!{ Zik/,4/IW2llRd:o3!!"#9!EX / >YEX/>Y +?O] +X!Yд? O ]   +X!Y аа а ! +X!Y01%!!7#732'%266'&&''911x%5\: N== =FJG=DL(59':;9'а'*а'68/6/EX / >YEX"/">Y а/ 9+;K]  +X!Y +X!Y 9$4D]"а/", +X!Y2 +X!Y01'&&7766'&#"3267'&&7766776&'&' ~B): :$2  -)l *+/Hՙn-|A{[@9O$O0%fMJ-DA5?G2WeV$g%&9EX/>YEX/>Y 9 / +X!Yа +X!Y а" +X!Y01&$'&777766776&'& FiIfA   x? >N  fś,e(3'v ,$0!+",-9"а"а"!EX'/'>YEX*/*>YEX/>YEX"/">YEX%/%>Yа/а/ +X!Y +X!Y +X!Y$'"9)'"901!7!66'&&7676'&&'&!!!!:ӕ љ B7Mo @8Pq 9dLЙ,ʘGAJxiW)@MbZ ~ nEX/>YEX / >YEX/>Y9/ 99в 9 а +XYа а01##33'###7!WS#>_'_quJJ~^bYtzsRe9 EX / >YEX/>Y 9/ +X!Y +X!Y 9  +X!Y01%'&&766!7&!&&ąi a >YĈ4 6*w\s1g*| 49'K'"$!EX/>Y01jJ''$EX / >Y011'!'$EX/>Y01'#'T$vEX/>Y015o %W&'9 /EX/>Y 9/  +X!Y +X!Y! +X!Y016&'&'6'.76&7&\ktk>i9'g鵎e)\{35iP\*T7gL(/EX/>Yа +X!Y01!!!!>l*>O ?/EX/>Y +X!Y9  +X!Y 901!77!!-ke.8EG~BJ/ +X!Y01!!.WB= 9/EX/>YEX/>Y9 +X!Y013!#!H.1PDT&6j789"а1EX/>Yа/9а а /94 +X!Yа, +X!Y$01&&'%.76636776&'&6'&&'&63dH2ncnTI`$ Z~UE_#8k9j?Ubu]%,1VaoYEX/>Y +X!Y +X!Y01'"'732766&#gDa&/(Cf(4.?S  C>-K's()9/а/а/ +X!Y +X!Y аа/а +X!Y% +X!Y '016323277#".#636267#".#ij_dd.-fB?oqoA1iYEX/>Y9901!!"70\:pnA8#'Vt9,EX/>YEX/>Yа/а01#3#3JI^n# 9/ 0@]]а/01%'6?WپRjq6&JJa:9EX/!>YEX/>YEX/>YEX/>YEX/>YEX/>Y +X!Y  +X!Yа013#776$&"7#!!!?)+FuV~*͓KP)81SV:6o9EX/!>YEX/>YEX/>YEX / >YEX/>Y +X!Y +X!Y а 01&#"7#!#776$3!X-]w*̓) #گc NFGPG6g(,-.9*EX/!>YEX/!>YEX/>YEX/>YEX / >YEX+/+>YEX*/*>YEX$/$>YEX(/(>Y' +X!Yа  +X!Y +X!Y'#013#?66&#"76$&#"7#!!!!!;(Ab.K_ @+ZWKvV~*̓&JPj FYEX/!>YEX"/">YEX/>YEX/>YEX)/)>YEX&/&>YEX/>Y"# +X!Y'аа  +X!Y +X!Y013#?6762&#"76$!&#"7#!!;( w4n.K_ B"זzX.$*˓P^e^ FP6R%&'9EX / !>YEX/>YEX/>YEX$/$>YEX/>YEX / >Y$ +X!Y  +X!Yаа  +X!Yа01#7'&&7#737&#"!#?6623)TJ?VZX)'3b( b8P-9yPW,BKLM9EX3/3!>YEX7/7>YEXJ/J>YEX,/,>YEXC/C>YEX/>Y3 +X!Y, +X!Y +X!Y7: +X!YC> +X!Y:H016&#"!6&"'&&'32676'&&7>2&76$3#37'&&77#73B@Wc0A2W ~mz2?X yAa  )U6**XX Q(HU17DJPW[_cgkow{A>/EXL/L>YJ+{|+x+;+LZа^аbаGв >G9 /а/ а/а/Q9Q/p +X!YQp9  +X!Y& +X!Y*а*//а//5 +X!Y>lаhаdа?б@ +X!Yfаjаnа=а;BаLK +X!Y[а_аcаHаJOаR +X!Yw +X!Yxа{а|ааа01'&&77666&'&67#"&'326733!7373!#%7!#73676'7!!7!!7!7!!7!!7!7676/#737#73#73%#737#73#73 _bvu `_b*7%)l`4:@Y 88BU e:fPZdWU-< d8p$$n82./2nipODmnmnVT~ A!ap-po,pp-on-nn,nn-nez}^pb|}^%JB&< @'HWL?QWGjCNV@PM]ZN]9*;qqttUGKtttttt8qqqqqqR7~~~\s $(O++ +ܰ!/%/+%а/!а/ 9 /9/01 4676654&#"36632#33#3#AD$J\:+98][/KR11::'J34@4_YEX/>Y +X!Y99 +X!Y в901!!7%676&"66=,x!'7 <_B ';/|pmw'6EX/>YEX/>Y9/ +X!Y01!#7%7[x$t% H9EX/>YEX/>Y +X!Y +X!Y01&&776674'&7+  B\ #Z ,\,'3S!["#9EX / >YEX/>Y +X!Y 9/ +X!Y  +X!Y01767#"&7>!#2?&#"袴6bd ~ &s:@9_;X 4apFѩwsSq)}9^eO=K!,t -.9 а %EX/>YEX/>Y*9|*/ +X!Y*9*9 +X!Y$ +X!Y01#&&7667&76$6&#"3266#"36 qt{˷u:3YEX/>Y +X!Y901!%! q-8"^#$9EX/>YEX/>Y +X!Y9/ +X!Y +X!Y01#&6'&77!&32676& El }!VTI k=_ <qYԧvl:3lc>@"_^B<=m 9EX/>YEX/>Y +X!Y9/ +X!Y9 +X!Y9901!!636'.'3276'&#"C,(ILf qpJ0@q# c[@6W'Ŧzl\g/,q82Y4  W 9 EX / >YEX/>Y 9/ +X!Yа в 9 9013#!7!77Vu-u))-YT8c(r#)*9EX/>YEX/>Y9|/ +X!Y 9' +X!Y'9" +X!Y'"9016676&#&>'&&532676''rE] :4juڀq~XYGI?D] D<-2MeVW1\h]ʩ4;D9rZ9EX/>YEX/>Y +X!Y99  +X!Y в901!!77676&'"6$cz(1r -2;P ăe|vk+eU09YCWqfR^hJA9EX/>YEX/>Y9/ +X!Y901!!7%7-W":!H9 EX / >YEX/>Y  +X!Y +X!Y01&&7767676'&7(#ʃX%a&01yww؆@@=JZ M 9EX / >YEX/>Y +X!Y9  +X!Y  901!775%!-:KQ.O]1EX/>YEX/>YEX/>Y901!!%(rEMUw SEX/>YEX / >YEX/>YEX/>Y999 901!!%,Gvwh+bi[1z  ` 9EX / >YEX / >YEX/>YEX/>YEX/>Y99  901!!!!!@?05!sUe\1EX/>YEX/>YEX/>Y9017!!%cCFJs)= 9EX/>YEX / >YEX/>Y +X!Y01'.7!7~d ~J} to€%gO/EX/>YEX/>Y +X!Y01!!!!_.w"&f'(9EX / >YEX/>Y 9 +X!Y  +X!Y 9$ +X!Y $9016/&76$%&&"'&$7766wxM D=;^ @ |ISY>PER&$Zŧ;H=-HDanUԷXK9Bc9EX/>YEX/>YEX/>Y9/ +X!Y 9 +X!Y01#!!6676&''CyݜDd 96~17DG9;%#{#H$%9!EX / >YEX/>Y  +X!Y  +X!Y01%''&&777'&'&67Ph^&l RNgXN80jd!\3bwA O9 EX/>YEX/>Y 9 /  +X!Y +X!Y01!#6676&''o?ہjQe ;@mgvreCYEX/>Y  +X!Y +X!Y01&&776$6'&6hjl RNz)(\3bw EEX/>YEX/>YEX/>YEX/>Y9901!!!!!x@ xIMM`9EX/>YEX/>YEX/>YEX/>YEX / >Y99 901!!7#!^jk#tփOsI3pH)EX/>YEX/>Y +X!Y01!!!\.J L 9EX/>YEX/>YEX/>YEX / >Y9901'!!!!z?JNo fF0 9EX/>YEX/>Y  +X!Y01!'&&7377J~KS]1b%EX/>YEX/>Y01!!!EI cEX/>YEX / >YEX/>YEX/>Y 9| /C ] ]0 ] ] +X!Y01!!!!!!!LLJQ}QHH/)rl !9EX / >YEX/>Y 9/  +X!Y9 ] +X!Y +X!Y_]01%'.77%&&'&77#7!Jd N HS}XYQH( KP2APL!\g BEX/>YEX/>Y 9 / +X!Y +X!Y01!!!!!L0L@- $H  s+r,-9EX / >YEX/>Y 9  в 9  +X!Y +X!Y"в% 9) +X!Y016/&766773%&&#"#7&&5766ysP ./E=;^ pjM 00ISY=QFS%"Yᗽ;H=.H" aͣXJ8"cs9EX/>YEX/>Y9/ +X!Y +X!Yа а а +X!Y9 ]01%%!6777766%74'&%d(z.E&P"!$Ti]}YoKe7pso9EX/>YEX / >Y 9 9/|/ +XY +XYаааа01!3#!!!7!737'#73!dݣ!  !''! !oK|.۳,39EX/>YEX/>Y +X!Y01!!!Qw= 9EX/>YEX/>Y9 +X!Y01!!!'!uYnO}#r!$%9!а!EX / >YEX/>Y 9|/]3C] +X!Y  +X!Y  +X!Y01!!&&776$6'&67-:hil RNj5)(\3bw8 9EX/>YEX/>YEX/>Y9013!!!'Xo^sH a 9ܰ EX / >YEX/>Y +X!Y 9/ +X!Y  +X!Y01!!!'!!7!!-4-Tv.@ 9EX/>YEX/>YEX/>Y +X!Y01!!!!! m'wX E 9EX/>YEX/>Y +X!Yа  +X!Y01!77!!.Eo-X$q 9аEX/>YEX/>Y9/9/ аа +X!Yа +X!Y01!7&&76$%76'66 GI|W_^]j~ kl vbs"2~R]9EX/>YEX/>YEX/>YEX / >Y 9/а  +X!Y 01677!!&7!!o29J4/670K1 uJ >a JX0x#[$%9EX/>YEX/>YEX"/">Y  +X!Yа +X!Yа 016776'&&'&!7&7766$7!? RKJ; u*-0  t ., g-//P\u^ԩE }؃"OOk9EX/>YEX / >YEX/>Y +X!Yв 9/  +X!Y +X!Y01!!%6376676'&!.-%jjP` Di\G=d 9EX / >YEX/>Y 9  +X!Y 9|/3C]]]#q +X!Y +X!Y 901'&&77%6'&%!67 ^JLq+.FNVs fMcsjfQW!}"#9EX/>YEX/>YEX / >Y +X!Y  +X!Y9/ +X!Y! +X!Y01!###767!6676&'13C70Xn>g4Ty FHwn *(YG9G9EX/>YEX/>YEX / >YEX/>Y 9/]O_qqq]qo]?r 9/ +X!Y  +X!Y +X!Y01!!!!!!6676&'tQJ= MLJT3Sz FIڰwnHWH8IOO\9EX/>YEX / >YEX/>Y +X!Yав 9/ +X!Y01!!%63!6&'&!.-%n_25 McAk\=dY P 9/EX/>YEX / >YEX/>YEX/>Y +X!Y 01!!!!!!! ;;JJTw2 a9 EX / >YEX / >Y  +X!Y 9/  +X!Y +X!Y01!3'%!6'4'#w.ȫ^vpxT9 /EX/>YEX / >Y +X!Yаа а +X!Y01667!3!!!%#0iz#Hf9t:fep7Y۶wKNZ9EX / >YEX / >YEX/>YEX/>YEX/>YEX/>Y 9|/]3C] +X!Yв9а 01#!#!!3!3!!$eGIRblN]KILP]]wQQ$y%&9EX / >YEX/>Y 9|/3C]  +X!Y9" +X!Y"9 +X!Y"901676&#"6$'&&532676''7  8p L 9EX/>YEX/>YEX/>YEX/>Y9 901!!!!=uFusbe [ 9EX/>YEX/>YEX/>YEX / >Y9/ +X!Y 901#!!3!!tIJLk]QO9EX/>YEX/>YEX/>Y +X!Y  +X!Y01!##767GCS.2Ws& }D9EX/>YEX/>YEX/>Y9  +X!Y01!'267%jbj{qA;O%R 1,A F 9/EX/>YEX / >YEX/>Y +X!Yа 013!!!!!:z:DJJKwhG9EX/>YEX/>YEX/>Y 9 / +X!Y01!!&7!7!O[E6K8 LdBk_JQdY P 9EX/>YEX/>YEX / >YEX/>Y +X!Yа 01!!!!!!!JJJwwY 9/EX/>YEX / >YEX/>YEX/>Y +X!Yа а а 013!!!!!!!z:aJJJKww@ka9EX / >YEX / >Y 9/   +X!Y  +X!Y +X!Y01'%!!66'4&''`-=eQi[N5/ctiZD;I:&+8 R9EX/>YEX/>Y 9 /  +X!Y  +X!Y01'%!665&&''F=Pg\J4hZD=HB9EX/>YEX/>Y +X!Y9|/]3C]]#q +X!Y  +X!Y 990167!6'&>'&$'F Uv'- \y  Hav\Uirb%z&'9EX / >YEX/>YEX/>YEX/>Y  9| / +X!Y +X!Y" +X!Y01.7!!6$7'&'&67xLIQzQ=Ֆi.l RNiuЀJ-xd!\3bwp c 9 EX/>YEX / >YEX / >Y 9/  +X!Y 9 +X!Y01#&7>3!#'Jb Dw-lHa9gn]s|HrAy R9EX/>YEX/>Y 9 / +X!Yа а  +X!Y01#!#73!!3NN![Q-.=ÿ 9/EX/>YEX/>YEX/>YEX / >YEX / >YEX/>Y 9|/3C]]] +X!Y9 +X!Y в9013!##!#!!3!3!N`g:V]IIRblN]KILP]K]]wQQ9/EX / >YEX/>YEX / >YEX/>Y 9| / ]3 C ] ] +X!Y 9 +X!Y013!##!!3!ng:ltIJLkUK]Q y 9EX/>YEX/>YEX / >YEX/>Y9|/3C]]]а +X!Y9 013733!!'#7#!%6+-)j+)*6OAZO9EX/>YEX / >YEX/>YEX / >Y9|/3C]]] +X!Y +X!Y 901#!!!3!!>vI}.Kj]Q"./09#EX/>YEX/>YEX/>Y а / +X!Y +X!Y!9" +X!Y%9+ +X!Y01&''&$7767&776767674'&֓WhY·Y Y ^Yg .? A4 -bŢYEX/>YEX / >YEX / >Y 9  9 9 +X!Y 901!3!#!%,Gg:wwh+bKi[1O/^ 9/EX/>YEX/>YEX/>Y +X!Y +X!Y а а а 013!!!!!!!Pz:C.-pJK{jP9EX / >YEX/>YEX/>Y 9/ +X!Yа01!!#7&&7!37!Ne,.6K<Q43b^JQ'_@G9EX/>YEX/>YEX/>Y9/  +X!Y01!676!6&'&!JO[E67 Ld=p_oQdYQ %n&'9EX/>YEX/>Y!9!/ +X!Yа! а +X!Y9 +X!Y01&$'&7&&76%7&6'&&ĥE@ \GSd4dc+ Tyof B39ruB&9Aa 9EX/>YEX / >Y 9 / +X!Y  +X!Y  +X!Y01'&776%&'677%g  8h[C  W[039D,%:B,l9EX/>YEX / >Y +X!Y9 9/а  +X!Y +X!Y 901'&&532676''77%,&rF=] '-s[¨g?@~ݺ| !9аEX/>YEX/>Y +X!Y9|/3C]]] +X!Y +X!Y01&776$&%6'&67jQ~2L I|6iRB)(cx6Tbuhhd$%&9EX/>YEX$/$>Y +$# +X!Y#]в]]_o]]@ /?O_oq  +X!Yд_ o ] ]@  / ? O _ o q ] ]   +X!Y|/ +X!Y_]]?q а а01367777766%5&#&!%%%%"'#)" #'ǾRd% c! P!H.+/̻+`.#8$̲%&9EX/>YEX / >Y+]]]?q_] ] +X!Yа  +X!Y]?q_]]]] ] +X!Y +X!Y_]?q] а!а$01!77'&&'77736$&"%%%;E<45aoa#"Hix0mQMc%E!Pi=3 ΩH"#I@H) *+9 а  а EX/>YEX%/%>YEX(/(>YEX / >YEX#/#>Y а /а/@ 0@P`] +X!Y  +X!Y +X!Y"% 9'% 901%!7!'&&77666776&'&!!!!6AД 4FDMo DGLmx@ xI9.sZ_kY8V`dZMM, !"9 EX / >YEX/>Y +_o]] +X!Yв ]_ o  ]  +X!Y аа а   +X!Y01%!!7#7773#'%6676&''2)(^ /Ll C8vvv@̦vb@VA;@$#$%9EX / >YEX/>Y 9/]q ,]  +X!Y 9" +XY"9 +X!Y"90136676&#&66'&&'2676'#R3A(#CwǕX.F a`0'!6k{wbuB)psJ0'I JEX / >YEX/>Y 9/ +X!Yа в 9 9017##7!777,W"L `(M;k9EX/>YEX / >Y +X!Y 9/ +XY9  +X!Y9901!%676'&&'7676'&!}51Doz'&dZ:0vk%i_$ * ^!"9EX/>YEX / >Y +X!Y 9/ +X!Y  +X!Y01#&632'&&776$3"76676Rk5H\gz;6H-D *I_=s|2:++BB)P3EX/>YEX/>Y +X!Y901#%7!^svuc$ +,-9а*EX/>YEX/>Y)9)//)?)r )),)] +X!Y)9 )9 +X!Y# +X!Y01'&&767&76626&#"3266#"326aS[S{, $?) &@+= 1!3GpG=qLk9xd}L=_mvL#(&"%-c<& $*.$d !9 EX / >YEX/>Y +X!Y 9/ ,] +X!Y  +X!Y01767&766##772?&o|)ABnà  ++?-< CO-t,T'@I1ZvJ9/ +X!Y01!7!T:!c /а/?O]а/@?O_o ]/qа/@ /?O_]/  +X!Y +X!Y01#&632#"&732676&'"8WUt|ZSxw$$);%)>UtmNRtgR"2:&"3:  QEX/>YEX/>Y 9 / +X!Y +X!Y +X!Y01!!!!!!>D&.]-hGWP+7E'FG9'6а'BEX'/'>YEX/>Y'+а+/ +XY'9/9/7 +X!Y_7]79 '91 +X!Y; +X!Y'B +X!Y01#'&''"&&767&7667&&776$77!32676''26776&'"YEX/>YEX/>YEX/>Y 9 9 +X!Y  +X!Y01%'&&'&777!!676'&'&~ #ͲW5!oQmufpݻ@? 3ytK$c%&9EX/>YEX/>YEX/>Y9/ +X!Y 9$ +X!Y01!2&7676'&'2676&''` e_67  c CQ&rB&tn6 >)m+%ycSNd [EX/>YEX/>YEX/>YEX / >Y9/3C] +X!Y 901#!!3!!beWbyq+y@3P TEX/!>YEX/>YEX/>YEX / >Y9/ +X!Y 901'!!7!!AQ J1`P S 9EX/>YEX/>YEX/>YEX / >Y99901!!!!oWkc{d$, S 9EX/>YEX/!>YEX/>YEX / >Y99901!!!!OJ<7%9{) H9EX/>YEX/>Y  +X!Y  +X!Y01#!26774's 9oE z(mP9EX / >YEX/>Y 9  +X!Y +X!Y 901'&7%6'&67! J$ Vr f9Mm0QW3  9аEX/>YEX/>Y9/]?qqO_rq/rq]qo]r +X!Y9 +X!Y +X!Y01#'66''&''676&'' FPz%Z`S 76R}WN=4m;/5 V 9 EX/>YEX/>YEX/>Y9|/ +X!Y 901%!!!!35ng<9 si23 9/а/01#769( $Kl`6b A/]а/@ /?]а/ +X!Yа/ а /01'&&'27%3ʣeuqlq!w/]а/@ /?O_]а/ +X!Y +X!Y а|//]а/@/?O_o]/01"&'6632767'#VD,+5YE**5VQgIT&PhHUWx U/а/а/@ /?O_]9//9 а /а//]01''# tkssx U/а/а/@ /?O_]9//9а/ а /  / ]01''%7v6ssbz///а/а/@ /?O_]9а/а/@/?O_o] +X!Y9901''%'7676''7r8!T F%ss_l.-yRHa8///а/а/@ /?O_] | / а /@   / ? O _ ] а/  +X!Y  +X!Y01''%7&&'676767r4g"w$%ndw'&ssМ=C < K73 9EX/>YEX/>Y +X!Y01!!!!Idwc P/а/@ /?]а/ +X!Yа/ а /@  / ? O _ o  ]01'&&'27''ʢYuplq y9 /]а/@ /?]а +X!Y а /а/@/?O_o] +X!Y 9 901'&&'327''7676'#72˩ 0W W(sojj"f,+sLI[0sEX/>Y01j sEX / >Y 01h!sEX/>Y01~"sEX/>Y017#sEX/>Y01s$sEX/>Yа#01 %sEX / >Y01KIP !9EX / >YEX/>Y 9 9  +X!Y +X!Y01'&''&$%&&'&67 a ahh\q|8grӢGvAM#b$%9EX / >YEX/>Y" 9"/" 9  +X!Y +X!Y"! +X!Y01%##&$776$%&'&77#7!Mح ?  YEX/>Y +X!Y +X!Y011#2$76'&&'"FF! #m{\~K H!"9 EX / >YEX/>Y  +X!Y +X!Y01&'&776$6&'&6y Ia xt0mOor(Y[2Tka]J%H&'9#EX/>YEX/>Y +X!Y" +X!Y01%''&'&776&'&6(`H 3! @ww! xxto׫,Z]UZ\?`f3EX/>YEX/>Y9/ +X!Y01!!%7/% ` *M9EX/>YEX/>Y +X!Y9  +X!Y 901!!76676&#"6$($^J ;BF\ $ XIc24=UDmx>j\9 /EX/>Y +X!Y9 9/  +X!Y +X!Y901%!'&'73676%'7AH.^! R}e[ U 9 EX / >YEX/>Y +X!Yа/а ав 9013#!!75s-33TZ#|$]` 9/EX/>Y +X!Y9/ +X!Y9 +X!Y9901!!6'&'76'&&#"e8.XH|qHBFJ+؛{aOW<9&/EX/>Y +X!Y901!%!u[. {/]а/@ /?]а +X!Yа/а/@ /?O_]а/ +X!Y +X!Y 01'&&'27"&'66327677̣>JVD,+4 YB%)- tq34jQgIT&Td> ;\/а/а/01!!dIC#$%9EX/>YEX / >YEX/>YEX/>Y +X!Y9/ +X!Y +X!Y +X!Y  +X!Y01!!#&776$3!!!!!7'&mEZ[..D%PMq /QB2 ]0Kj(Jd(T)*9"/EX / >Y +X!Y 9/ +X!Y ! +X!Y0167'&7>'&'7?6&'&wmF d'ꩂVmgi!FE[~ ?9Yّ>-@8ion%*K]G) ( /EX/>Y  +X!Y  а /01'"'7272G_)5-w3)89L$JN)M)K;OEX/>Y01Ze<BOiS(sJEEX/>Y01H#:H#::j:& : L!"9EX/>YEX/>YEX/>Y +X!Y  +X!Y013266&''77&'&!6$'&'204JB[a$(=v%y}|gu箊r0Mp>Ϲ92{q@#^!H"#9 EX/>YEX/>Y +X!Y +X!Y01'&&7767674&'&67VbĜjIHc KMgF'C.E?_`uusB3EX/>YEX/>Y +X!Y901!%!e5-;f9 /EX / >YEX/>YEX/>Y 9 9  +X!Y +X!Y01'&'!!6%&'&6763ӉV0 Ikk x`IT&da{ xoA9N9IdRM9EX/>YEX/>Y +X!Y99 +X!Y01%67%'.7766!4'&HY5 c̓* RBxgũF2%c 9/EX/>YEX / >YEX / >Y 9  9 +X!Y +X!Y0166!!7'&&'&%7&'&-ЂWiK | OC?YQR&`]!n%{?=UXkSM$QlS)"*+9"EX/>YEX/>YEX/>YEX / >Y9 +X!Y99! +X!Y& +X!Y01767'&'7677'&&'&77&'&- -P*%";m\v) m JC?\MT'`Z|"@uf>,ut@=UXkMDST E!"9EX/>YEX / >Y +X!Y +X!Y01'.7676'&&'&hgQ"MFaLGcNC+1Wh?3Zi`;Rp 9 EX / >YEX / >YEX/>YEX/>Y 9 9  +X!Y +X!Y01'&'!%6%4&'&673ӆWb1m A?aJS&e\~kg~@ZiOYEX/>YEX / >YEX / >Y 9 9  +X!Y +X!Y01667!'&&'&%7&'&-҇U2$dn OBC_KT(`Y|!v&s><6ixNH#*Tx 9EX/>YEX/>Y9//qq]r  +X!Y +X!Y 9 +X!Y01.77%7&!76'& q B|oj#QzDI  >]cE4.a?#d QTT& '(9 EX/>YEX/>YEX/>YEX/>Y9  +X!Y9 +X!Y$ +X!Y017'&'7677'&&'&777&'& S)%";q\w)m") |cGPh&Ovf>,vt?; )RXO)1p239$а,EX / >YEX/>YEX/>Y 9 9 ' +X!Y* +X!Y- 901&&7677&&76667!!'77676&#"7'Z6$១ R?XU$0"*M-!-G&[N p2VwAq-QYqK,De,A-3%7v/5Si > 9EX / >YEX/>Y +X!Y 9 901!!77!7?.[i!hOK?B AN)9EX / >YEX/>YEX/>Y 9/ +X!Y +X!Y 9/ +X!Y   +X!Y 901!!!7!!!!!3wU -v- &9 Y9EX/>YEX / >Y +XY +X!Y 9/  +X!Y01!#'!6676&'JC v&1SMm B:ի|fQD=A(j&)*9&а&EX/>YEX/>Y99 +X!Y"9#9% +X!Y01'&''7&777&'&%6767cxna Yxn *Dj a)Ii)Mu̵# FNupO?,HA3+(;9EX / >YEX/>YEX/>YEX/>Y 9/ ]9/] +X!Y +X!Yааа 01'!!!#737!!7!7!7!*aLLW!WK}HL}RHS{{{{F[9EX/>YEX/>YEX/>YEX / >Y +X!Y 9901'&'3677!!!K[(3.v%x@ xI MM 9EX/>YEX/>Y9/q?q]oq +X!Y9/а +X!Y +X!Y013#732#26&''3 n!m;3?drr?{vǬ=µ{, 9EX/>YEX/>Y9/q?q]oq +X!Y9/а +X!Y +X!Y013#732#26&''3 n!m;3?drr?{vǬ=µ{, Dv9/EX/>YEX/>YEX / >Y/]]9/ +X!Y9 +X!Yа01#6!6'&'&!#737!30ypqgYEҮ!I`"cCUNEX / >YEX/>Y 9/ +X!Yаа  +X!Y 01#!#73!!!3ɛ}}!/_0/X/-ӿG 9EX/>YEX/>YEX / >Y +X!Yаа/ +X!Y  +X!Yааа/01#7'&&77#737#73!3#36AS^ !(/I/)34Ŀ 6&%D46EX/>Y 01 6&%u6 / 016&%6EX/>Y018&%1 /01&%j6 /ܰ01&% /ܰ01?&%'yH&,&'y6&)D6EX/>Y 016&)u6EX/>Y016&)6EX/>Y01&)j6 /ܰ01k6&-D6EX/>Y016&-u6EX/>Y01r6&-m6EX/>Y01v&-j6 / ܰ018&21 /01J@6&3D96EX / >Y!01J@6&3u6 /"01J@6&36EX / >Y$01J@8&31 /*01J@&3j6 /)ܰ,01JX6&9D6EX / >Y01JX6&9u6EX / >Y01JX6&96EX / >Y01JX&9j6 /ܰ 016&=u6EX/>Y 01&ED^EX/>Y+013&Eu% /,01&EEX/>Y,01&E- /401&Ej& /3ܰ601W&E} /3ܰ601i&E'&R&GyF%&IDREX/>Y"01%'&Iu /#01%&IEX/>Y%01%&Ij /*ܰ-01&DrEX/>Y01F&u8EX/>Y01*&%EX/>Y01 .&j: / ܰ01=&RW /012&SD{EX/>Y01P&SuB /013&S.EX/>Y012&SJ /%017&SjC /$ܰ'01,h&YDEX/>Y01,h&YuN /01,h&Y:EX/>Y01,h&YjO /ܰ01Hg&]u /01Hg&]j /ܰ01&%p0EX/>Y 01&Ep /*01:&%&6 /01&EP /-01`t9EX/>YEX/>YEX/>YEX / >Y +XYа/9/ +X!Y901!7#"&5467'!!!!~CY.0AYb{AN /B (.@*9D4)p^Cp4P`Q.89:93EX%/%>YEX/>YEX./.>YEX / >Y +XY.а/%9/% +X!Y!%9@ !!,!%77'XCY.0AYb{on Wl{\ QeL!UOr )*9D4)p^] 0z=5[ymWaq>J4]YM)5H,6&'u6 /01)&Gu /01H,6&'6EX / >Y01 &GEX/>Y01H,E&'M /%01&G /$01H,=&'6 /!01B&G / 01=&(+6 /01 &H &)p0EX/>Y 01%&Ip /!01:&)6 /01%&ID /$01E&)M /01%&I /)01`9EX/>YEX/>YEX/>YEX/>Y9/] +X!Y +X!Y +XY +X!Y01!!#7#"&547!!!!=y/CY.0AYb{p/6i*9D4)p^{W&$T#,%-.9%!EX/>YEX/>YEX / >Yа  +XY(9(/(/(q(](q(r +X!Y! +X!Y#!9$ +X!Y01%7#"&547&77!7&!76'&I-I.0AYb{?=\|\XrFg&Ii42@4)p^]H  7Ujr\l#d=&)6EX/>Y01%@&I /%01O?6&+6EX / >Y"01Pn&K$EX/>Y,01O?:&+06 /#01Pn&Kc /-01O?E&+M /(01Pn&K /201O?&+Pn&K4N //016&,6EX/>Y01]&LX /01o8&-1 /01'&A /01D&-pl0EX/>Y01&p$EX/>Y01_:&-6 /01&d /01`k&-`J&ME&-[M / 01&-.aFx&MN,6&.6EX/>Y01H&EX / >Y012&/g&O$6&0uu6EX/>Y01&PusEX/!>Y01&0+X&P%&0EX / >Y01&P&0~p&P=6&2u6EX/>Y 01]&RuO /01&2&S&R=&26EX/>Y01v&RS /01&&R7J@&3p0 / 012&Sp- /01J@:&3+6 /#012&Sm /01J5&3x6 /"ܰ$01&S /ܰ016&6u6 /01&Vu /01&6@+Q&V=&66 /01&V /016&7u6 /*01&Wu /(016&76EX / >Y,01&WEX / >Y(01&&7yP&Wy &7mP&W=&76 /,01'&W /*01U&8V4G&X0U&8y 6&G&XyU=&86EX/>Y 016&X hJX8&91 /01,h&YV /01JX&9p0 /01,h&Yp9 /01JX:&96 /01,h&Yy /01JX&9 /ܰ 01,hW&Y} /ܰ01J5&9[6 /ܰ01,&Y /ܰ01JX"a#$9EX/>YEX/>YEX/>YEX/>Y9 +XY +X!Y017#"&547.7!X"4.0AYb{hXSL-J;8*4)p^>4H2-JR,`h:!p"#9EX/>YEX/>YEX / >YEX/>YEX!/!>Y  +XY!а/ +X!Y01!7#"&5477'&&7!7!CY.0AYb{yuIwZhIK*9D4)p^]`ڷ@RV/6&;6EX / >Y01l&[EX / >Y016&=6EX/>Y 01Hg&] EX/>Y01&=j6 /ܰ016&>u6EX/>Y 01+&^uEX/>Y 01E&>M /01&^ /01=&>6EX/>Y01D&^!EX/>Y01^B&uBEX/>Y01t&ue /A01}&uEX / >Y)01 o;&u(EX/>Y*01n)&0&Y;]oqqorr?rqq]]01n)&0&Y;]oqqorr?rqq]]01O&&{5&3DEX/>Y01&3uqEX/>Y01b&3]EX/>Y01_ &3y /01f&3jr /ܰ015u&3 /ܰ01&3'+m&1yU &(D~EX/>Y 01S&(uEEX/>Y016&(1 /01:&(jF /ܰ01&DhEX/>Y01<&u.EX/>Y01 &EX/>Y01$&j0 / ܰ01 & /01}&DEX / >Y 01}&um /!01}&YEX / >Y#01} &u /)01}&jn /(ܰ+01)&DEX / >Y01)&uY /01)&EEX / >Y01)&jZ /ܰ01]&u3EX/>Y 015&3p\EX/>Y01O"&3 /01`5y 9 EX/>YEX / >YEX/>YEX/>Y  +XYа/9|/ +X!Y901!7#"&547'!!!35CY.0AYb{ng<9 *9D4)p^]siw&1ui /01m&1UEX / >Y01m-&1D5 /#01%&1m /01)%&0 /01 &(p0EX/>Y 01#"&(p /01 -&( 5 /01` 9EX/>YEX/>YEX/>YEX/>Y9/ +X!Y +X!Y +XY +X!Y01!!#7#"&547!!!!>D&.CY.0AYb{pm]-*9D4)p^{Wl%&(IEX/>Y01)r&mEX / >Y"01)r"& /#01)r-&\5 /(01)r&e&_EX/>Y01 &7 /01&pEX/>Y01 "&Z /01`&<-& 5 / 01&EX/>Y01&H&u%EX/>Y01H&H&@uEX / >Y01H& X&uEX/>Y 01&L%&EX/>Y01}&pX /01}"& /"01& /!ܰ#01B&u  /01B&B%& /01j&u\ /)01M&HEX / >Y)01&"&yE%&` /+01O & P]]01O%&CEX/>Y 01O3&y1 ) &a /01)&pD /01)"& /01)u& /ܰ01)& /ܰ01*V !9EX/>YEX / >YEX/>Yа  +XY +X!Y017#"&547&&7!7~B.0AYb{'~J} t+/>4)p^L9%gz &EX / >Y01]&EX/>Y 01]&j4 /ܰ01Z&u= /01Z-&5 /01d%&A /01B&%"D&)?&,kD&-TB&3GB&=d$B&hu&/ܰа01%&)>,k-/12J@34U8=t<v&-j6 / ܰ01&=j6 /ܰ01%FB& /,01&EB& /)01`#B& /014-& /019& /#ܰа#&01 :2RS`:vRN:ZiPK\ 9EX/>YEX/>YEX/>YEX/>Y  +X!Y +X!Y01!&&''!&#&76{'_c2 *"R\mTbt3cHo| HY01'^()9EX / >YEX/>Y 9 9  +X!Y 9! 9% +X!Y016''$66$!6&'&'&&'&7326"MXV OLvHWbtVsq>D zjTeTGd.~hFCpsOk-v&-j6 / ܰ01.,6&/u6 /01|:&6 /01%&):&+6 / 011,J@34H,'U8t<QE%TI[& / 012RS`(RTRM9EX/>YEX/>Y +X!Y99 +X!Y01%67%'&77>%6'&GP 4} SBwg/f&Hg:]E:\%&Ij /*ܰ-01&uEX/>Y01PWJM .&j: / ܰ01FLN &ueEX/>Y01Hg&]J /01/6&;D6EX / >Y01l&[D(EX / >Y01/6&;u6 /01l&[uEX / >Y01/&;j6 /ܰ01l&[j /ܰ016&=D6EX/>Y 01Hg&]DXEX/>Y01a Q&.HN&+ /01$6&1u6EX/>Y01n&Qu /!01}&%V Q&Eo6&)D6EX/>Y 016&D96EX/>Y 01%&IDREX/>Y"01[&DEX/>Y 01]P)"=$&6EX/>Yܰ01X_&EX/>Yܰ01HR&S]fJH &3]f&QWrN&QsH,&'Q|R&GQ |=X_R:k-:&6 /01H& /01k-:&%&6 /01&EP /-01&%j6 /ܰ01&Ej& /3ܰ601^tR:&)6 /01%&ID /$01>[&Xj /,ܰ/01 P  &j, /)ܰ,01&jd6 /ܰ"01H&j / ܰ#01&j6 /3ܰ601 &j, //ܰ201&p0EX/>Y 01[&p?EX/>Y 01&j6 /ܰ01[&jU /ܰ01J@&3j6 /)ܰ,017&SjC /$ܰ'01YL2TYL&j6 /-ܰ001>&jJ /&ܰ)01&j6 /*ܰ-01&j /)ܰ,01|&p0 /01Hg&]p /01|&j6 /ܰ01Hg&]j /ܰ015&`6 /ܰ01H&] /ܰ01&jQ6 /ܰ01\^&jh /ܰ 01&'-j6EX / >Y"ܰ.01 ~&'ijEX / >Y!ܰ-01 H&% Q&E&%3- /01&E] /801B&%7 EX/>Yܰ01lL&E7 /-ܰ101&%8 EX/>Yܰ01L&E8 /+ܰ101&%9 / ܰ01&E9 /+ܰ101&%: / ܰ01&E: /+ܰ1016&%'6 EX/>Y 01&E&EX/>Y.01&%<; /ܰ01h&EY01&E&PEX/>Y-01&) %T&Iw&)- /01%&IQ //018&)1 /01%&I! /+01 &)7 EX/>Yܰ01%`M&I7 /$ܰ(01&)8 EX/>Yܰ01M&I8 /"ܰ(01b&)9 / ܰ01%&I9 /"ܰ(01&): / ܰ01%&I: /"ܰ(016&)'6 EX/>Y01%&I&wEX/>Y#01&-- /01o&p /01k&-pJ&MW J@&3{2R&SzJ@&38- /.012&Sz /)01JG&37 /#ܰ'01L&S72 /ܰ"01J@&38 /!ܰ'012L&S8- /ܰ"01J&39 /!ܰ'01&S9* /ܰ"01J@&3: /!ܰ'012&S:- /ܰ"01J@6&3'6EX / >Y$01{3&S&.zEX/>Y01M?=&u=EX / >Y,01&uMEX/>Y*01M?=&D?=EX / >Y+01&DEX/>Y)01M?&>4EX / >Y*01&EX/>Y(01M??&8EX / >Y-01&UEX/>Y+01M?&{&pJX&9,h:&YJX&9-EX/>Y"01,h&Y /!01JB&uBEX/>Y01-&uHEX/>Y01JB&DPBEX/>Y01-&DEX / >Y01J&O9EX/>Y01-o&EX / >Y01JD&=EX/>Y01-&PEX/>Y01J{&-&s&=/)g:&]d&=- /01Hg&]W /018&=1 /01Hg&]' /01&H'&4Ct} !]!]01U&8Q=?H:&Q&Qg\^:&Qk&Q :&Q&LQp|%S&MQ&L 9 EX/>YEX / >Y] 9/] +X!Y 9/ аа +X!Y  +X!Y01#!!#737!32676&'y 켏!X Hk ^Z=tЇ=a{eTg{ 9 EX/>YEX / >Y] 9/ +X!Y 9/ аа +X!Y  +X!Y01#!!#737!32676&'y 켏!X Hk ^Z=tЇ=a{eTg KEX/>YEX/>Y 9 / +X!Yа а  +X!Y01#!#73!!3rq!j/;pa: KEX/>YEX/>Y 9 / +X!Yа а  +X!Y01#!#73!!3WMM!N.c Bz9EX/>YEX/>YEX/>YEX / >Y9/ +X!Yв9/  +X!Y 901#3!!#!#737!3ի%yq+yȧe!WR3P@Rs9/EX/>YEX/>YEX / >Y9/ +X!Y9/  +X!Y 9 а01#7!!'!#737!3Գ`1`AQ!JPW 9EX / >YEX / >YEX/>Y 9/ +X!Yав 901#!#73%!3νWY![dpav=_R:S9 /EX / >YEX/>YEX/>Y а  +X!Y 901%##!#'#73!!3 MQ!v|R+dW|_g=tdEX / >YEX/>YEX/>YEX/>Y 9/ +X!Y 9а в 901#!!#73!!3^gI!Hw2PEufE:dEX / >YEX/>YEX/>YEX/>Y9/ +X!Y9а в 901#!!#73!!3Wfr9M!YKcdZ4>̿(Q&EP&*&>MBJFff@d nL+U[<{\_sO?6&+u6 /"01Pn&Ku8 /,016&2DN6EX/>Y 01&&RDEX/>Y01$&%6EX/>Y ܰ01&EEX/>Y+ܰ/01$&)p6EX/>Y ܰ01%&IEX/>Y"ܰ&01&$&-,6EX/>Yܰ 01j&EX/>Yܰ 01J@$&36EX / >Y!ܰ%012&SEX/>Yܰ 01$&6?6EX/>Yܰ01U&V[ /ܰ01JX$&96EX / >Yܰ01,h&YEX/>Yܰ01B&d&& {(&F&( &Hq&( P]]01 &H&, &&Lx 6&/u6 /016&Ou6/ܲ_]01&/5&O}&0 X&PW &1 nR&Q &2&S&Rx J@&36V /(ܰ201B&4uB /01`&Tu /01&6 +Q&VG &7{P&W:U&8 6G&XJX&96V /ܰ&01D&:= /01RN&Z /01&: RN:&ZO /&; l:&[ &> :&^D &3Fq5&3eI"&(<&<K"&<V& &<z_"&  5332 (Z}AO]$&j0 / ܰ01]&j4 /ܰ01:&(jF /ܰ01&u EX/>Y01"$&j0 / ܰ01&uEX/>Y01}"& /015332 ("& / 01}Am1O & '(9/EX / >YEX/>Y  +X!Y& 9|&/3&C&]&9$ +X!Y$&9а +X!Y$901676&#"6$!&&532676''7  8p h/EX / >YEX/>YEX/>Y  9| /3 C ] ] +X!Y  а +X!Y01!#!!!!!3=LLJQ}QHdH/R jV9/EX / >YEX/>Yв 9  +X!Y +X!Y 901!&77%6'&67 ۱SVJ$ Vr "6Mm0QW]Q &Qr&p`EX/>Y 01}&pp /01$&N)&suE&uum"&z &D,z &uz &j]&Dli&%t vQ&Ej&)@ %`T&I`5&3h &(:&W TQQQQQBrEv9P@~%*6Bd  S B % L <ZIzH,KDfD ]%V0 IEZ,O1 ` l !W!w!" "_""#B#q###$R$^$x$$%%%&:&' '(^()/)*#***+>++,=,--.8./ //0[001/1Z1h1112&2p223 3)323i3334,444\455F556667h78r89,9: :q:;#;;>>?p?@G@A2AB3BC C\CDDEEMEEFXFFGGlGH4HIIIJmJKKsKLmLLMBMMN N;NO OVOOP;PPQ^QRPRS7ST3TTUOUV+VWKWWXnXYZYZWZ[\.\]]_]^^_o`@`aVabb8bUbbbcd d'dAde eeefBfffffggvgh)h5hAhhi[ijhkkkklkkkl$lvlm@mn)nnnnobonozooppuppqqqqrqrvrsust_tuCuv2vvwHwx.x:xFxzxzxzxzxzxzxzxzxzxzxzxzxzxzxxxxxxyy/yQy]yiyyzJzqz}zz{{{{||L|}q~~~VـuԂR $ %?Yʅ5M_ֈ5NaŊn]]_8&YǑ1[.`+psٖ+ŗ?ژ'ϙP&R8sӝA 1Ϡ)sJͣY jc]T` ^"o'ϭyy&Fʱ;D,yô Qѵ1(0y 3E\pպFeF!:ܾ %->FNVai+Z!y][c/ŜwFFNJȶpɇəɰ.EXoʆʝʰ'>Ul˖ˬ˾ "8J`r̶̟̉);Rdz͌͞Ͱh&8OewωϛϬϾ'9ЭG^oцќѮѿ*>MJ-T% ,|c5vUr^hNii;P]F g%Xfn&&f\4ERD<cf<E9)g0Py {H.*tj"jJv){68f Iy  d} f dd? ^\NIG l QkkgdE8l hz i *i hYfXh[fEBE8:-92`AY"6l e`?N K w{Z28;K8.RQ|lX*5\Ojk& 26f-3 u>#ebA"Ubgl5 ~c(\f)LtO%[a\)QG/ /QrYcujCKmH-AE&;%lz,j}5`H~@CDj-C1RAV;6:666)65\wS1 !"G]Qz}\)POFx%jT)F "||U$ROnH6Ox8_}h@0wnf7O*0]Oj?Q: P .%h&G =Wnb!jh~s:KaA>KJi@S9[J ;<O(UU@@@b#3B:~%$~}%D# I3N 9(,, SSSSSSS"Hbbbbaaaa}fJfJfJfJfJ2J2J2J2J(((((((D%D%D%D%@@@@ jfffffj,j,j,j,S(S(S("H"H"H"H bD%bD%bD%bD&bD%TOTOTOTO~ka@a@a@a,aNfTH?,?,??}j}j}jjfJffJffJf4662Jj,2Jj,2Jj,2Jj,2Jj,2Jj,lVaf WnWnPOn))))G]nnnnW))))TxxxFFFFPOPOPO)))))*zG]G]"""Sb~azMZS b~a}fJag%n&f4E9 f R E9fE9g0b^aafS ^bj~fJ"H(D%dfhD%I,@ "} lll=aQ\TS(bjD%d])Xu uJ "HXa" aS(S(VbD%u>% % "  jdjdfJfhYfhYfv^\ g S(S(S(S(S(S(S(S(S(S(S(S(bD%bD%bD%bD%bDbD%bD%bD%a@a,fJffJffJffJffJffJffJfMMMMM2Jj,2Jj,J-J-J-J-J-?v^\^Ik^I#[=n&HL +U<{_TO}jS(bD%a@jfJf2Jj,C hg g ~kHH?,}jfJh62J* R* RlXV_b"TjPOG]QG]FT}bjnPOQ8n G]?Q}$3NFzzzG]S(bD%@l uYH 33fP [ GOOGf :                          nt ~%'0S_g~7Y #%/EOboy?M    " ' 0 3 : < D t  !!!!"!&!.!^"""""""+"H"`"e% &(1T`h7Y #&0FPcpz>M    % 0 2 9 < D t  !!!!"!&!.!["""""""+"H"`"d%eD# (%^S~|}rsolkiaYP!ߔyMߪެߞߝߖߓ߇kTQ 222tt~lt0Rb{z|  }~+,-.   ()*+,-./012345678wxLM}~NOPQRSTUyzVWXYZ{|[\]^_opv   ~xcyo{z%&&''|(01127889@ABCIJKLQRST_`a befg}h~+ 77YY  ##      "#$%%&/0014556899:=>>??@ABBCCDDEEFOPPQQRRSSTTUXY[\\]]^^_abbco pqruvwxxyyz(,159wCL}NyVXY{[_`o>?pMM r }         " % ' 0 0 2 3 9 : < < D D t t      v    !!!!!!!"!"!&!&!.!.![!^"""""""""""""+"+"H"H"`"`"d"e%%,K PXYD _^-, EiD`-,*!-, F%FRX#Y Id F had%F hadRX#eY/ SXi TX!@Yi TX!@eYY:-, F%FRX#Y F jad%F jadRX#Y/-,K &PXQXD@DY!! EPXD!YY-, EiD` E}iD`-,*-,K &SX@Y &SX#!#Y &SX#!#Y &SX#!#Y &SX#!@#Y &SX%EPX#!#!%E#!#!Y!YD- ,KSXED!!Y- ,+E- ,,E- ,' SX@cTX+pY#SX TX+pYYY- ,@ ZX,D,DY- +++,%+B5* +,%+w\:#+v`K6+# +>0(+1)"+ 1)+ [J:0+ ,%+ ;0(+ 3%+G:- ++ E}iDsPttpu?s_ss/tOtottttu?u_uusousst_tttt?u/!so!s* N`J}`9 ! :[ ^ ^  v & & & $ @ 2 > &R \x T  ( 4Copyright 2011 Google Inc. All Rights Reserved.Roboto BlackItalicRoboto Black ItalicVersion 2.137; 2017Roboto-BlackItalicRoboto is a trademark of Google.GoogleGoogle.comChristian RobertsonLicensed under the Apache License, Version 2.0http://www.apache.org/licenses/LICENSE-2.0RobotoBlack Italicjd(Y%>E^yy  "$%*+3466;<ADGHKMQQTX]^bbddhhjlnnpp  ((++--03_cz|  ,$%&'y 2LDFLTcyrlgreklatncpspkern $H %&'()*+,-./0123456789:;<=>eg/3579;ACEIKLXYz{}   "$%')+- }  Az<<`>P?<A.>f?v?v??`?v?vA.?  ?@@<0=A H>?< ??>??@6<@P?A.=>PA.>P@?z. B" #?v%0&<0)P>@@9?=<<0P>P>P>P>P>P>P<>>>>?v?v?v?v?vA.A.A.A.A.=>>>>>>><<<>>>>@@>P>>P>>P><<<<A.><><><><>A.>A.>??????@=@=AAAAdAdAjARARARARARARARAdAdAdAdAdARARARAdAL<<<<AdAdAdAj>P>?v?vA.=>P?>A?v?v??v?vA.??=<0?v=?>@>>=?v?v??<>P?=>?v?vA.?<?<0><>?@<<<@@@@=@<<<?v?>P>><@@<=@?v<0P>>P>><<<<0>?<@<@<@>P>>P>>P>>P>>P>>P>>P>>P>>P>>P>>P>>P>><><><><><><><>A.>A.>A.>A.>A.>A.>>=@=@=@?=P>>?vA.>???A.A.?v????`?v??v?A.????@@@@@AA.ARAdARALAjALARAdAj %*,- /6 88:?EFIJLL OO!QT"VV&XX'Z](__,-./0589:<=>FGRbcfhk  n  op""s.0t35w77z99{;;|CD}TTVVXX\^0033EEGHz{}}  "%''))/8CGMOTTeimoxx &6789:<>EHNPTVWX\bcefpr  vxyFHHJW__puww{| 89Ew:;&= &"$&&&prt&%@.08EGHIKSUVYZ]@@ @"9BE`ak3@@@@@@@@@@0#2345678MNO@@0@@@@ @ @!"@#$@%&@'(@)*@+,@-.@/0@12@34@579;=?ACEKMOQSUWY[]_acegikmoqsuw@38:;=9E3 "$2345678MNOprtw8:=9E"$prtw.9bdM  AGHIKUa"B`ak79;=?ACEY[]a@GHIKU"B`ak79;=?ACEY[]aS KMOQSUW_.9bd  Z]#qsu?'+35 !AjEFHI-  JLNPRTVXZ\^`@'+35!AjEFHI-  JLNPRTVXZ\^`8%<= 3C]"$ "$&(*,.024prt(FF% FFFF "$&(*,.024GHIKQRSTUYZ]"+6<>BSUW\`ak#  79;=?ACEKMOQSUWY[]_acegikmoqsu|| GHIKUYZ]"B`ak#79;=?ACEY[]acegikmoqsuG  GHIKU"B`ak    79;=?ACEY[]a:m  GHIJ KSUZ ]  "B`ak        13  # 23456789CDEFGL MNOPQRSZ[\]mnostuvx               79;=?ACEKMOQSUWY[]_aq s u       \^4D^&(* \^4D^&(*"Z\]^4D^#&(*qsub 8:<=Z\]  349:CDEGI]^bcdldm"#$pqrstuwyr 8:<=QRT+369:<>CEGILPSUW\]bdflmo"$ prtwy|u 8:<=QRT\+3469:<>CDEGILSUW\]^bdlm"$ prtwy|S8QRTZ]  +69:<>ELSUW\cm# qsuw|j8:<=QRT\+3469:<>CDEGISUW\]^bdlm"$ prtwy|%'+358:= !9AEGHIJMPQXbdfjlnopEFHI"$-   "$&(*,.024JLNPRTVXZ\^`prtwyz58:<=39CEP]bdflo"$prtwk%8:<=  39:CEGHIJLPQ]bdflmop"$     "$&(*,.024prtwyz: 8:=9:EGILbdlm"$prtwy18<=39CEPQ]flop"$prtw$8<39CEPQ]fopw8=9E"$prtw9QRT\  +46:<>DSUW\^m |$ Z] :m#qsu5QRT+6:<>HJSUW\m z|  vGHIKSU"B`ak19CDEFGPQRSZ[\]mno 79;=?ACEKMOQSUWY[]_a EGHIJ KSUZ ]   "BQ`ac e kp        13  # 23456789CDEFGL MNOPQRSZ[\]mnostuvx               !#%')+-/13579;=?ACEKMOQSUWY[]_aq s u       :HJQmpzOGHIKU":BHJQ`akmp79;=?ACEY[]az"Z]  :GHJcem#qsuz#Z\]4DQ^p#qsu  \v  4:DHJ^cemVz d  :HJcemVz j  :JcemV  bGHIKSpUW[ p"B`akpppppppp   ppp pp79;=?ACEKpMpOpQpSpUpWpY[]_papLxLx[  AaM:JLMXb d mn1.08@JM_ilh :ILbdlm0V~[m|^Kr Ah cIhh0  .0<8:j@IJ L?MX_c1e_i lm0n AJVXam| 1#X[:IeJLfMXbdlm  :cemJ[   :cm l[  :JXcemn1[1IJLbdlXR_:mJX2[4V[ml|nC~{y~}|t}y(} f .08}:@J|LMlX_kcei{lmn1 AVa1J  A Va1[1l1  h&%j Y\j h0X~|( dSNolH32q)cyUUf~3_akj6 w9 %),4 8>EGIILLQTVV"ZZ#\^$'()-./02347>?@ABD  F  GH.0K35N77Q99R;;SCDTTTVVVWXXX\^Y\cefgilm00p33qEErGHsz{u}}wx  "*/8CGMOTTeimoxx  "#$%&(25;BDEFJPQS_a  eghFoHHJW__bbddpuww{|t !!%%&&''(()).. // 0033448899 ::;;<<== >>EEFFGGIILLQRSSTTVVZZ \\]] ^^"  %      ..//"00334455 77 99 CCDDXX\\]]^^!!!# $ 00 33EEGHz{}}             "" ## $$ %%&&''(())**/0 11#28CG MOTT eefi$mo xx#     "  %"           % % %   !!""##$$%%&&''(())**++,,--..//00112233445566778899::;;<<==>>??@@AABBCCDDEEJJKKLLMMNNOOPPQQRRSSTTUUVVWW__bb dd pp qq rr ss tt uu ww{{"|| "        # ##       " !   !$     #         $    #"      " " " !   !        bDFLTcyrlgreklatnH .AZE CRT FRA ZMOL NAV ROM TRK      c2scccmpdligdnomfracligaligaligalnumloclloclloclnumronumpnumsmcpss01ss02ss03 ss04ss05ss06ss07$tnum*        60nL`tflq3210(sutvrwR   ; /0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwyxz{|}~    %&'()*+,-./0123456789:;<=>eg/3579;ACEIKLXYz{}   "$%')+- } q3210(ds0ut/rwR   ; v123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abdefghijklmnopqrstuvwyxz{|}~    EFGHIJKLMNOPQRSTUVWXYZ[\]^0468:<BDFJMZ|~   !#&(*,.~ *BZrMxN`H0I$'a_bc` MNI26rJd~"<N$.8J| <Fh.8BLV( &,   &,68:  &,HF  $$*06JL   $*06bd  $prt % &,!  &,79;I  $ &,KM    &,ce  $qsu &+-,. $G $X`Z\^ $Ya[]_ $fnhjl $goikm%)+-/46;=>EIKMOTV[$]^*,-./015     OX{@JMMJPPJ*  JXXJWKo6,- .//O EGFHIghijklm '(+35FGHKSTU nooIKj.Z^XUWV[Y]\OJKLMNSeff pp  .pfLNMKOeSJU^ .[]^XUWVY\ZJKLMNOSefp.pfJOSSU^ eel%<  !"#$% >zst?@ABCDyubioath-desktop/fonts/Roboto-Bold.ttf000066400000000000000000005145541412677075700204010ustar00rootroot00000000000000 GDEFBHbGPOSnKe.GSUBYOS/2`cmapwXFcvt +~8Hfpgm_Pgasp< glyfH,ސhdmxhead\6hhea & l$hmtx']48locawC maxp>߼ name5dpostmd prep*v60 )d( PEX/>YEX/ >Y9999 ܲ 9 901!!!!5!(<6 }wx^^^|<9EX/>YEX / >Y +X!Yа/01#!2#"&46"4IYYIHYYqVCBVVW@O & 9/ 9/а01#3#3 (E've%e%@ !9EX / >YEX/>YEX/ >YEX/ >Y 9|/ +X!Yаа а / +X!Y а аааа01###5!#5!3333#3##3#HH2IIII2H[2f``fF\)7-r+./9EX / >YEX!/! >Y! 9  в !9  +X!Y +X!Y!$в(! 9!+ +X!Y014.546753!4&#"#5&&5!326[ڞq?سcSRZXj8Ժ!qjXfRaRQibxw]RL\`Uk[w]_ (4879:97аа7!а/5/7/EX/>YEX%/% >Y а / +X!Y +X!Y%а/%, +X!Y2 +X!Y014632#"&526554&#"4632#"&532554&"'_EpBB:7DH6zDpDǍHJYEX/ >YEX/ >Y 9 9 +X!Y 9( 9 . +X!Y01467&&54632653!'#"$%277664&#"GqAJ׶Ѱp;Kh]YoXM;-J:>KeiWS‘QtVj:LLgWmuKr3&HdJP?9/9/01#3ml'|9P9 //0147&'|z88|P?>l<:p=5(9aP9 //01'65'7a889^Y/  /01%73%'U;7/;ҟY}]{Yq$l9  /а  +X!Y01!!!!!!ij/h#  9 / +X!Yа/01'76753$CnOAzyon/ +X!Y01!5!3~) # 9EX / >Y +X!Y0174632#"&~]FG]\HG\EVVEDUU/EX/>Y01#3}-_7 H9EX / >YEX/ >Y  +X!Y +X!Y01#" %4&#"32677cifaakj^Z:% 1<!:EX/>YEX/ >Y9/ +X!Y901!!5%3![ZkFI[9EX/>YEX/ >Y +X!Y99  +X!Y 9901!!56654&#"!46632!Ia]b[bqprjGaon}l@3()*9EX/>YEX/ >Y9/o]q]q9I] +X!Y 9' +X!Y'99" +X!Y0132654&#"!46632#"$5!32654##nji\Sp{݅zc{y!{ZguXn[Xb[Irfd-,xRhmZ7_ JEX / >YEX/ >Y 9/ +X!Yа в 9 9013#!!'!! _$B$;t!iBm !9EX/>YEX/ >Y +X!Y9/ +X!Y9 +X!Y9901!!632#"&&'!32654&#"T0$gtwޗ mXbjzpg@7{k|[e|6dO#^$%9EX/>YEX/ >Y +X!Y9/ +X!Y +X!Y01#632#"54$7"32654&st{OFrrg]stưvގ@ hk'IYEX/ >Y +X!Y901!!5!A4,_7"-./9а&EX/>YEX / >Y+ 9+/o++]++] +X!Y+9+9   +X!Y& +X!Y01 $5467&&546324&#"3264&#"26j]j|:|i]in]\nl`^kZRQZZY-j13yy21j_rq`]rnUgdXWjjV,"`#$9 EX / >YEX/ >Y 9|/ +X!Y +X!Y  +X!Y01#"54663257$26754&#"q}|G@yFep^WpmFo k`H3wxw}\&3/019\'3/016OEX/>Yа/015Y:]jmm9'/а/ +X!Y +X!Y01!5!!5!~~cxNEX/>Yа/01%gm-"`#$9EX/>YEX!/! >Y +X!Yа/9 +X!Y 99014>54#"!6632462"&[DYа9 +X!Y99а/9а2а2/ +X!Y*а*/# +X!Y? +X!Y01#"&'#"&766323267!"!267# $$323267&#" V} dte?3 7<\|Ү <;SB&=i j DL1X*')sJEʥB+OT׮]w}%(1 pVQ \ GEX/>YEX/ >YEX/ >Y 9 / +X!Y 901!!!!!d!l,P! 9аEX/>YEX/ >Y9/]qrqqo]r +X!Y9 +X!Y +X!Y013! !2654'%3654&## nbpjws|k&{zweYcWVGEX / >YEX/ >Y а  +X!Y +X!Y01! 54$32!&&#"32674  yIY@n ;EX/>YEX/ >Y  +X!Y  +X!Y013!2326754&#/пCĮ4MR XEX/>YEX/ >Y 9 /: J ] +X!Y +X!Y +X!Y01!!!!!!0^@wz6 SEX/>YEX/ >Y 9 / ]l | ]I ] +X!Y +X!Y01!!!!!x@S^ s !"9EX / >YEX/ >Y 9/]_]q 9  +X!Y +X!Y +X!Y01%#"$'54$3 !&&#"3275!5!Qش$xH=ak:c?}t]H# MEX/>YEX / >YEX/ >YEX/ >Y 9 / +X!Y01!!!!!!!#,I,pNEX/>YEX/ >Y01!!!,(09EX/>YEX/ >Y  +X!Y01!#"$5!3265,{.ZaVftkfvm% L 9EX/>YEX/>YEX/ >YEX / >Y9901!!7!!J,sqH`ly+)EX/>YEX/ >Y +X!Y01%!!!}W,~YEX/>YEX/>YEX/ >YEX/ >YEX / >Y99 901 !!#! vtwx PYEX/>YEX/ >YEX/ >Y9901!!!!!",I+B@V.H 9EX / >YEX/ >Y  +X!Y +X!Y01#"$'54$ %4&#"3267.巵lФCHGG O 9  EX/>YEX/ >Y 9 / +X!Y +X!Y01!!2!%!2654&'!8 w}~oxݍphkT,"H#$9EX/>YEX/ >Y +X!Y +X!Y01%#"$'54$ %4&#"3267,u59lФ[ CHGGc9EX/>YEX/ >YEX / >Y9/ +X!Y 9 +X!Y01#!! !32654&##;q|uyҕ;segvE'f()9EX / >YEX/ >Y 9 9  +X!Y +X!Y# 9% +X!Y014&$'&546632!4&#"#"$&5!!26ux[~rnz- kx~U[e1vhq΃do]LG`*M䪽{֍W(/EX/>YEX/ >Y +X!Y01!!!5!BHCt=9EX/>YEX/>YEX/ >Y  +X!Y01!"'!32,yA? 489EX/>YEX/>YEX/ >Y901!!!JNMiGP# ` 9EX/>YEX/>YEX / >YEX/ >YEX/ >Y99 901!!!!3++ P2  SEX/>YEX / >YEX/ >YEX/ >Y999 901!!!!YXXY."1EX/>YEX/>YEX/ >Y901!!!x/H""I `I FEX/>YEX/ >Y +X!Y9 +X!Y 901%!!5!5!1D x($// +X!Y +X!Y01#3!!(P/EX/>Y01!!'` '// +X!Y +X!Y01!!53# P3,T'9EX/>Yв9/01#3#++7)EX/ >Y +XY01!5!q45/]а/]01#!5;6DN)yEX/>YEX/ >YEX/ >Y9 9 / ] +X!Y 9|/ +X!Y # +X!Y01!&'#"&5467354&#"!46632%2675#" iMSIStԄ*@llL':u>KZF=^[ɶ+O906Fo>f9 /EX / >YEX/ >YEX/ >Y 9 9  +X!Y +X!Y01#"'!!632%4&#"3276>ǰi !dhg45,݇suqUrBBNM9EX/>YEX/ >Y +X!Y99 +X!Y01%267!#"5432!&&#"1Pdv| dRegfXIne'*TiBc9/EX/>YEX/ >YEX / >Y9 9 +X!Y +X!Y01432!!'#"%327&#"BŞg"l!je76%,v(s-qqHNv9EX/>YEX/ >Y9//q]_q  +X!Y +X!Y 9 +X!Y01"554632!327"!5&&a~Ol^AިVkd$vjy\gxtl`ie9EX/>YEX/>YEX/>YEX/ >Y +X!Y  +X!Yа013#5354632&#"3#ѼYEX/>YEX/ >YEX / >Y9 9 +X!Y9 +X!Y$ +X!Y014327!#"&'732655#"5327&#"Eɲc w:lsd!vg9:hw%0zfn_Ky{q:q1 cchJ 9/EX/>YEX/ >YEX / >Y9  +X!Y0163 !4&#"!!s`P]9!ĊgK]Ybm?9EX/>YEX/ >Y а / +X!Y01!!!4632"&"WKJXYY:ATTABTTK K9EX/>YEX/>Y  +X!Yа/ +X!Y01#"'5325462"&KD4'WWYY: wATTABTToZ EEX/>YEX/>YEX/ >YEX / >Y9901!!7!!h!8[yhHE=~EX/>YEX/ >Y01!!!"o~Nx9EX/>YEX/>YEX/>YEX / >YEX/ >YEX/ >Y 9 9 +X!Y01632632!4&#"!4&#"!~ sNrӰH[2JY{7:yM\U|^Tf:iNT 9EX/>YEX/>YEX/ >YEX/ >Y9  +X!Y01632!4&#"!y tìP]z=:}E\Sh:BCN E9EX/>YEX / >Y +X!Y +X!Y0146632 32654&#"B|,!tlivvkjt'J,o`=Np9EX / >YEX/>YEX/>YEX/ >Y9 9  +X!Y +X!Y01#"'!!632%4&#"32=e ikf35rj~hEkB`Nm9 EX/>YEX/>YEX/>YEX / >Y 9  9 +X!Y +X!Y0143273!#"%327&#"BƮgd!mc76dn'(q&q,jfoN G9EX / >YEX/>YEX/ >Y  +X!Y 901&#"!!632;-3W0*+o<: 8N%]&'9EX/>YEX/ >Y9 9 +X!Yв9# +X!Y014&'$54632!4&#"#"&&5!326it~PUIP[JɈxjYSU+5=Q›>QB30;+TϔabMR? DT9EX/>YEX / >Yаа/ +X!Y  +X!Y013#327# #53ɹ.A0%UZD<43G h:T 9EX/>YEX / >YEX/ >YEX/ >Y 9  +X!Y01%#"&'!327!!k!7"nEf :89EX/>YEX/>YEX/ >Y901!!!..a:: ` 9EX/>YEX/>YEX / >YEX/ >YEX/ >Y 9 9 901!##!3W:P: SEX/>YEX / >YEX/ >YEX/ >Y 9 99 901!!!! 5AA6CT(K:D9EX/>YEX/>YEX/>Y9  +X!Y01!#"'52677!6Ma?A,RQ"792:Y=J: FEX/>YEX/ >Y +X!Y9 +X!Y 901%!!5!5!~c0=-9 // 9/ +X!Y901$54#5275467J8LNelԹ3{[\4\/EX/>Y01#3\"t=-9 // 9/ +X!Y90167547&55&'73""86XX92cjw;3/а/ +X!Y +X!Y а01#"&&#"'46323265źJF:H׵NC;K9dNY +X!Yа/013!"&462!;\\YY%CVVVVc &!T"#9EX/>YEX / >Yб +X!Y ааа +X!Y01%267!#5&554753!&&#"RPdȻҽȣdQffgXI " ޣVg!ct !9EX/>YEX/ >Y9/ +X!Y +X!Yаа а ав9 +X!Y01!!5365'#53'4632!4&#"!4>\HWQBW 5@{IUZb`QC+;,-9 /EX/ >Y  +X!Y( +X!Y01%#"''7&547'76327326654&&#"1˞dm›kbylonlloplk~̡su{vuuvwtt ?q9EX/>YEX / >Y 9 9/а/ +X!Y  +X!Y аааа01!3!!!!!5!5!53!&9 2;|46ss/EX/>Y+01!!!\<-9:;99/EX/>Y494 +X!Y49 +X!Y 9.9.* +X!Y.*9% +X!Y"*%901# $5%32654&$&&547&54$32!4&#"%654&'!pt[{knxor^.KS|R[vYfY_K?ARenj]gWkNDIJbns*cEK(C/]>O(^Z / +X!Y аа/01#"&4624632"&sN=>LL|MQ:;OL|MU5IJhKK46IJ54KKV(7899 а4EX,/,>YEX4/4 >Y4,9/] ,49 /  ] 9 +XY +XY 9, +X!Y4& +X!Y01 &554632#4&#"3265%4$#" $%4$ #"$]\X\ef\YZ@KKTմqե`Sq{uQb৪ ZZ %p&'9EX/>Y&9/9 +X!Y9 9 / +X!Y 9  +X!Y01&'#"&5463354#"'4632%2675#\ M|vftAI(TjLV)R{iny330haQ%<1XM}&b~v%/а/ +X!Y01#!5!CvV2;EX/>YEX / >Y +X!Y  +X!Y 9/  9 /  ]3 93/ +X!Y&39-а+ +XY ; +X!Y014$ #"$%4$#" $%#!2#&54&#'32654&'#VKK@%q=1 BMJ_G]ZZ˦৪ [R~p>oD"LC@4F;Z9/ +X!Y01!5!ZN~ 1EX/>Y а / +X!Y +X!Y014632#"&2654&"~nmml5EEjHIr杝 G54LLhHY A /EX / >Y а  +X!Yа  +X!Y901!!#!5!3!5!HO,`lW7[9EX/>YEX/>Y +X!Y99 +X!Y 9901!56654#"#4632!81_2;ΫHl_1TT>/twFtWs0$%&9EX / >YEX/>Y 9|/]q@P`q]0@r  +X!Y 9# +XY#9#9 +X!Y013254&#"#4632#"&5332654'#Rw91*;ͩD4<5z\qX#*f{wkw2)ir"15#\ee/]а/]9@! +;K[k{]@! +;K[k{q@! +;K[k{r01!#*;`N:Q 9EX/>YEX/>YEX/>YEX / >Y +X!Y  901327!!'#"'!Qc8!YfH:~wiDY-HKe + 9EX/>YEX/ >Y901!#"$54$3!P *PT  9/ +X!Y01462#"&\]^FH[EVVUWb2 09// ] +XY 9 901%#'254&'7Y pCK:nQ*A9EX/>YEX/>Y9/ +X!Y901#5%3̽v$)yv+ 5EX/>Y 9 / +X!Y +X!Y0146 #"&5326754&#"v6]PN[]ON]a¦HģbnlaPanmfU|&en'' EX/>Y01T''^ '' L.EN!V"#9/EX/>Y +X!Yа/9 +X!Y 99013267!#"&5477667"&462>9M[!a2'$\\YYHJ,ZQ˼]-bY2CVVVVI{EX/>YEX/ >YEX/ >Y9/ +X!Y +X!Y 9 /  +X!Y +X!Y901!!!!!!!!!!IBj07MvY:A 8/ 9 / 9 9 9в 9  017A3ͪ013u997Ǩ6]5 )UEX/>YEX/ >Y9#9#а +X!Y$а& +X!Y01#"'#7&54$3273&#"4'32675巤UśJX1Iky&HF]Fh9GR|;q=i/ Y9EX/>YEX / >Y 9/ 9/  +X!Y +X!Y013#!3264&'!upo͆ Lvx)Z*+9EX/>YEX/ >YEX/ >Y 9 +X!Y9' +X!Y01!!4632#"&'732654&'&54654&#"k=XQ(6byOTERnYDMǫlM%ON 4I?.WBx`OFSBP)4<޲=>9-а8EX/>YEX/>YEX/ >YEX/ >Y9 9 / ] +X!Y 99999/9]9/9q_9q +X!Y# +X!Y&9* +X!Y . +X!Y501"'#"&5467354&#"%4$3262!3267%2675#"!54&@}QMR_t~d uMWMI1t'_oQZm ~WEN9LVG4nptz -8@-#T=8Csm^fTQ+(Z)*9%/EX/>YEX/ >Y +X!Y +X!Y% +X!Y01#"&&5432&''7&'77&#"3265QΈl1uNt[MDqsxbgzxJ LqzraH'0mr%Sp?C]9аEX/>Y +X!Y +XY +XY +XY +XY01!5!4632#"&4632#"&C\[HG]ZJKX[HG]ZJKX; DTSECSTDTSECSTBrC$h%&9а"EX/>YEX/ >Y99а +X!Y а" +X!Y014663273#"'#7&&#"4'326B|eUFg_QHg!)$+jt%(iv'ӕԒ:NrR q`?f9/EX / >YEX/>YEX/ >Y 9 9  +X!Y +X!Y01#"'!!632%4&#"32?d"dkf66qqfAiB !"9 /EX / >YEX/ >YEX/ >Y/]]9/ +X!Y 9 9аа +X!Y  +X!Y01#!'#"4325#535!3327&#"lŞg"je76>s- ,v귇qq mEX/>YEX/ >Y9/9/а +X!Yаа +X!Y а а013#!!!#535!!5!!5!3zzqq-I,IȮp:EX/>YEX/ >Y01!!!!:: `EX/>YEX/>YEX/ >YEX / >Y9/]_] +X!Y 901#!!3!!v!Wmq:iL ]EX / >YEX/ >Y 9/а +X!Yа +X!Yа а а 017!!57!}W,>>&&Q KEX / >YEX/ >Y 9/а +X!Yааа а017!57!Î߄!//,,K [9EX/>YEX/>YEX/>YEX/ >Y  +X!Y 9901#"'73255!! ̷QB.5y-G6 ,-lKNc 9EX/>YEX/>YEX / >YEX/ >Y9  +X!Y +X!Y01632#"'73254&#"!y qĬʳNA-6yNVD:D lcW:`T#$%9EX / >YEX/>YEX/ >YEX/ >Y +X!Y9/ +X!Y +X!Y +X!Y  +X!Y01!!#"$'4$32!!!!!27&#"Ty{t_?j^hpX =z ˰SP)1239#а-EX/>YEX/>YEX/ >Y9.9./.]./.q  +X!Y +X!Y9!а' +X!Y*014663262!3267#"' 32654&#"%"!54&Sz猆rgUROIw錊.!qljrtjirMbo]'q}!-:A+rkabu 3 9EX/>YEX/ >Y  +X!Y0134632&#"uϿ@`,5 nK.^9EX/>YEX/ >Y9/ +X!Y +X!Y +X!Y01 5!&&#"'6$3 267!̷1@uBq௅yfM?1ͭKt9EX/>YEX/>YEX/>YEX/>Y +X!Y  +X!Y аа +X!Y01##"'7265#5356632&#"3NA~2Ѽ?`*9fk OKd ZP&^'(9#EX / >YEX/ >Y 9/ +X!Y  +X!Y# +X!Y01#"$'54$3266534&#"3267(巵RI6OФCHGa[tMG@"^#$9EX/>YEX/ >Y9/ +X!Y +X!Y  +X!Y01466326653#"'%32654&#"@}. ;} !tljttljt'yVP{$tTV 9EX/>YEX/>YEX / >Y 9/ +X!Y  +X!Y01>53!"'!32KS%,y=o ? h7j9EX / >YEX/>YEX/ >YEX/ >Y9/ +X!Y9 +X!Y01!'#"&'!327!6657k!7"D7nEf^}K: 0 9EX/>YEX/>Y  +X!Y01#"'7325ǴMA,6y: UNOh 9EX/>YEX/ >Y 9 / +X!Y 9 +X!Y  +X!Y012'"55!&&#"'66267!yߏgeY +XY01!327#"&547JPB!/I\d*Q5A,obeufB/а//] а / +X!Y +X!Y01#".#"'46323265f_&;h.#1_5x.#3q8 2. o: 1.9}@/]а/]/а/а//01!#3#zڦ-q )9 }/|/а/ а012#"&462654&"JQhhQPll+@((@+9fb`d ** "++//а/]01#!<6VV/а/]/01!#<aR)/а/@ /?]в9 901'6654#722IARD Eh[;K @V7//а/а//]а//01#!#!H  J /]  +X!Y014632"&ZGHZYX=NiO;:QM|L64KKhJI55JI64KKTx=,EX/>YEX/ >Y +X!Y01!!!=sC0EX/>YEX/ >Y +X!Y901!!%!Y7=GPdR*"m#$9аEX/>YEX/ >Y9|/0@] +X!Y +X!Y +X!Y01!5!#"$'54$ %4&#"3267巵lФ_CHGG1EX/>YEX/ >YEX/ >Y901!!!8P_8 mEX/>YEX/ >Y +X!Y9/o]q]qr +X!Y  +X!Y017!!!!!!_'s [jTE$9EX/>YEX/ >YEX/ >Y +X!Y01!!!!!$CHQ >EX/>YEX/ >Y +X!Yа  +X!Y01!!55!!=rIYH:)I#w $%9 а  EX/>YEX / >Y 9/а/ 9 /а/  +X!Y +X!Y а!01!5&$&54$75!4&'66Ԫ,SY4] 9EX/>YEX/>YEX/>YEX / >Y 9/а  +X!Y 01665!!&!!vs.,t,z(z< 14f$^%&9EX/>YEX/ >YEX#/# >Y +X!Y аа +X!Y!а"01%674&#"!53&'54$323!߮ sqb`m|~lKW%bYdaI|N !"9EX/>YEX/>YEX/ >YEX / >Y +X!Y 9 9  +X!Y +X!Y01327#"'#"''327327&#"D2KDb ĥa_w77ucl:v=2`ij(v)*9EX/>YEX/>YEX / >Y& 9&/o&&]% +X!Y%&9 +X!Y  +X!Y012#"'!4664&#"32654&##536rd[{О{~:cQUnRfxmjaNкd1*L2}r`Rdqc :sZly_:8 9EX/>YEX/>YEX/>Y901!!!..UQ#DH$)e*+9!EX/>YEX/ >Y  +X!Y'9' +X!Y'9! +X!Y014632&#"#"55467'&32654&'"ݾe\DWKV>d峈zigx~ah{ᙪ/3-Pp֞# #a㙬o_/M&'(9EX/>YEX$/$ >Y$9/q/q] +X!Y9 9 +X!Y$ +X!Y $9  ]0147&&54$32!4&#"33#3265!#"$_WbeRQbZZmY\m!2C$yH3>B64>7KF5L{I 9EX/>YEX/ >Y +X!Y9 +X!Y01'6'6''&&5477!5uVH5gUb`]Z}SrRW>$kSKEpeC?/laNT 9EX/>YEX/>YEX/>YEX / >Y 9  +X!Y0163 !&#"!y wTE:{[]:pG m9аEX / >YEX/ >Y 9|/0@] +X!Y +X!Y  +X!Y01#"32!32!54&#"Gk̻ lef `>%.D30F0o: )EX/>YEX / >Y +X!Y01327# /A,(Na:<45[ S9/EX / >YEX/ >Y  +X!Y99 +X!Y01237#"&'!'&&#'6E"4)Eo*H>/:F #Hcqi!2(gw,_-.9EX)/)>YEX/ >Y) +X!Y )9 /  +X!Y +X!Y$ 901&&#"33# '654''.5467&54$32[T2si쏋L^_u;lu>\R M?9$@NBpcFB !?_p/N4:^ 9EX/>YEX / >YEX/ >Y +X!Y  +X!Y ааа01#327# !!#5!-B,(N`߱];535]q`>NY9EX/>YEX / >YEX/ >Y 9 +X!Y +X!Y012#"'!432654&#"^f8djkbYeN y"\?N <!"9/EX/>Y!9 +X!Y  +X!Y012!4&#"'6'4'&&'54663[Pdmrn9Z^jyNVg|M=\GO?rbFH>)B~:N 9 EX / >YEX/ >Y  +X!Y +X!Y01##"543!32654&#"~;skbklchtP* $؜,:K 9EX/>YEX / >Y +X!Y  +X!Yа01!327#"&'!5!*1/3UfR;6  q:=9EX/>YEX/>YEX/ >Y +X!Y013265&!#"&'~`br:j͕6"I"h#$9/EX/>YEX/>YEX/ >YEX/ >Y +X!Y а  +X!Y01$474632!665&&#"bxi?E !ve3 !;TE`<<04D":P9 /EX/>YEX/>YEX/>YEX / >Y +X!Y01$&!!$!i ":98/ );VSA:"[#$9EX/>YEX/>YEX/ >YEX/ >Y +X!Y9 в90132!3265&!#"&'#"7SJ1LQn01mޕ:!W߻ lhhl'# u'n()9EX/>YEX/ >Y9/ +X!Yв 9 +X!Y"а% +X!Y01#"55%32655&'546 7%&#"0AzgS\XfZWO`A T m}oY+ "W |C9EX/>YEX / >Y 9а +X!Y016632'"!&#'632^1kII&9DF9#KEq.ׂrG`Gkt:&r '(9 EX/>YEX/ >YEX / >Y +X!Y 9аааа  +X!Y 9$01##"&'#"47#5!&'!325!326~2s23s2t32LF0FLlnkkn("!߶q9EX/>YEX/ >YEX / >Y +X!Y9/   +X!Y +X!Yа01!63 !5 54&#"!!5!'nGL{uopb?{f|WX 9EX / >YEX/ >Y  +X!Y 9/ +X!Y +X!Y01! 54$32!&&#"!!32673 A r?h?􍃼Ł(:!w "#9 EX/>YEX/ >YEX/ >Y9/  +X!Y +X!Y +X!Yа0132!!!#5766!32654&'"|fĪN2qa soy܋Ջ("ke:9EX/>YEX/>YEX / >YEX/ >Y 9/]qo]q 9/ +X!Y +X!Y  +X!Y01!!32!!!!32654&#G,,srtJfwًY-if!_9EX/>YEX/ >YEX/ >Y +X!Y9/  +X!Yа01!63 !4&#"!!5!y-YzYX2Án`u I /EX/>YEX/>YEX/ >YEX / >Y +X!Y01!!!!!!u,G-T:APh ^9EX / >YEX / >Y  +X!Y 9/  +X!Y  +X!Y01!3 !!32654&'8v-vsr@~jcs]9 /EX / >YEX/ >Yа +X!Y аааа  +X!Y01!!!367!3!!!nYa*+fVJAEX / >YEX / >YEX/>YEX/ >YEX/ >YEX/ >Yа/]o]@] +X!Yв9 в901#!#!!3!3!!NԱPuD,<tXQQ KK^C)r(*+9EX / >YEX/ >Y  +X!Y( 9(/o((]((](q% +X!Y%(9 +X!Y014&#"!46632#"&&5!32654&##536Pk`ԅulx.jx|wS__Lvja2*m}NilSrcx EEX/>YEX/>YEX/ >YEX/ >Y9 901!!!!-,P97("O9EX/>YEX/ >YEX / >Y +X!Y   +X!Y01!!#5766"|fĪN2qa PՋ(D9EX/>YEX/>YEX/ >Y9  +X!Y01!#''32677! D)qi6?M%COO,;_IE )J // 9/в 9 /а  +X!Y! +X!Y а"0132!!5#"$54$735!"33!32654&#Ꙙ!̕!.IBu < /EX/>YEX/>YEX / >Y +X!Y01!!!3!!u,G-AA_ G9EX/>YEX / >YEX/ >Y9/ +X!Y01!# $'!327 Ӊ-wP(8}n* IEX/>YEX/>YEX/>YEX / >Y +X!Yа01!!!!!-,VAAPU /EX/>YEX/>YEX/>YEX / >Y +X!Yаа а а01!!!!3!!-,AA8^ a9 EX/>YEX / >Y 9/  +X!Y  +X!Y  +X!Y01!3 !!32654&'-rsr@~jcst o9 аEX / >YEX / >YEX/ >YEX / >Y 9/ +X!Y +X!Y013 !!!!32654&'-.,?srP@~jcs O 9 EX / >YEX/ >Y 9/  +X!Y  +X!Y013 !!32654&'-.sr@~jcs>^ 9EX/>YEX/ >Y +X!Y а /o ] ] +X!Y  +X!Y013267!5!&&#"!6!2! 'k 4 1{ÿý_3%z!&'9!EX/>YEX / >YEX/ >YEX / >Y 9|/ +X!Y +X!Y" +X!Y01#"$'#!!36$32%4&#"32673巧, Ф|.GP c9 EX / >YEX/ >YEX/ >Y 9/ +X!Y9  +X!Y01!#!&4$7!33#"#7ww m|PznTP&V'(9EX/>YEX/ >Y9/9 +X!Y  +X!Y012#"5766536"326754&J؀gurliru10m671+ꊛF:9аEX/>YEX/ >Y9|/]pq@P]r +X!Y9 +X!Y +X!Y013!2#3254''3654&##c_t陒SU:Kw ^km`;2oP:,EX/>YEX/ >Y +X!Y01!!!P@P:!:]9 /EX/>YEX / >Y +X!Yаа  ааа +X!Y017667!3!!!!!#~bF[ h̻bE.b':EX / >YEX / >YEX/>YEX/ >YEX/ >YEX/ >Yа/] +X!Yв9 в901#!#!!3!3!!߁Ufj!lfXoo6llEM&'(9EX / >YEX/ >Y  +X!Y 9% 9|%/@%P%]%%]p%%q" +X!Y"%9 9 +X!Y014&#"!4632#"&5!32654&##536KEGYWO!bOMVRR9?;6Hy$A7DH:G=o: EEX/>YEX/>YEX/ >YEX/ >Y9 901!!!!!":d:e: XEX/>YEX/>YEX/ >YEX / >Yа/] +X!Y 901#!!3!!t!gmq:i:O9EX/>YEX/ >YEX/ >Y +X!Y  +X!Y01!##'7667b$NH :P: YEX/>YEX / >YEX/ >YEX/ >YEX / >Y 9 9 901!!#!!jgUhs:o: TEX/>YEX / >YEX/ >YEX/ >Y 9| /@ ] +X!Y01!!!!!!!!g"`:No:9EX/>YEX/ >YEX/ >Y +X!Y01!!!!!P::2EX/>YEX/ >Y +X!Yа01!!!5!RRD`%/019 а*/EX/>YEX / >YEX/>YEX/ >YEX/ >Y  +X!Y# +X!Y(а-0132!632#"'!#"'%4&#"32%327&#"DջI<!>KֹM>YEX/>YEX / >Y +X!Y01!!!3!!o!j":QAX:G9EX/>YEX/>YEX/ >Y 9 / +X!Y01!!#"&'!327!QF!ZsHO!T]^Qo%: IEX/>YEX/>YEX/>YEX / >Y +X!Yа01!!!!!)")!J:QQ:l:L /EX/>YEX/>YEX/>YEX / >Y +X!Yа 01!!!!3!!)"(":QQA:!: a9EX/>YEX / >Y 9/  +X!Y +X!Y  +X!Y01!32#!!32654&#!VόqVV\ZX:^tPPEFS: o9 аEX / >YEX/>YEX/ >YEX / >Y9/ +X!Y +X!Y0132#!!!!32654&#όq"l!V\ZX^t::PEFSD: O9EX / >YEX/ >Y 9/  +X!Y  +X!Y0132#!!32654&#όq"V\ZX^t:PEFS?No 9EX/>YEX/ >Y +X!Y99 +X!Y9|/@P] +X!Y01"!46632#"&5!3267!5!&N\uzx]OWj "dWInfSk{y<N !9 EX/>YEX/>YEX/ >YEX / >Y9|/]@]] +X!Y  +X!Y +X!Y0136$32#"$'#!!32654&#"  "tlktvkjtJO:ؚ): c9EX/>YEX/ >YEX/ >Y9/ +X!Y9 +X!Y01!#!&&54673#"aiƼM`\:v-bQtLK!"#9/EX/>YEX/ >YEX / >Y]/]]!9!/ +X!Y9  +X!Y +X!Yа!01#63 #"'73254&#"!#535!3s`ȴNA+8yP]9ߜ!g) ^Yb@N9EX/>YEX/ >Y +X!Y99 +X!Y9|/rq/qrq +X!Y01%267!#"5432!&&#"!!/Pdw| dQ1 cXIoe&*Vgun:} !9EX/>YEX/ >YEX/ >Y9/  +X!Y +X!Y +X!Y +X!Y0132#!##'7667!32654&#h$NH &V\\VʧPMA>Io:9EX/>YEX/>YEX/ >YEX / >Y9|/@]]] 9/ +X!Y +X!Y  +X!Y01!!32#!!!!32654&#g"!V\\VʧP:MA>Iv 9/EX/>YEX/ >YEX/ >Y/]]9/ +X!Y9  +X!Yа01!63 !4&#"!#535!!s`P]9ߎ! gK]Ybo: F/EX/>YEX/>YEX/ >YEX / >Y +X!Y01!!!!!j":Qg:wa9EX/>YEX / >YEX/>YEX/ >YEX/ >Y9 +X!Y01#"'#"5!3265!3265xx-\k.[i#,u*ud@:a9EX/>YEX / >YEX/>YEX/ >YEX / >Y9 +X!Y01#"'#"&'!327!327@jn"":~vsCt9EX/>YEX/ >Y9/ +X!Y9/ а а +X!Y +X!Y01!3!#53!!32654&'"W[WT::(=XMHX}#~ $%9EX#/#>YEX/>YEX / >YEX/ >Y# 9/  +X!Yа +X!Yа +X!Y0136$32!&& !!3267!# #!!4 R ,,\}Z+uN!"#9EX/>YEX / >YEX/ >YEX/ >Y 9|/@P]]в9  +X!Y +X!Y +X!Y90136$32!&&#"!!3267!#"$'#!!dREPe"zTiYH=:G WEX/>YEX/ >YEX/ >YEX / >Y 9 / +X!Yв901###!!!!`U8 ']]Psb: WEX/>YEX/ >YEX/ >YEX / >Y 9 / +X!Yв901###!!!3''ME])I  :Ҁh}EX/>YEX/>YEX/ >YEX/ >YEX / >YEX/ >Y9/а +X!Y ав901!!!###!!!!!M%8Ŋ`Tœ,z&r>P]]]~K:EX/>YEX/>YEX/ >YEX/ >YEX / >YEX/ >Y9/б +X!Y ааав9013!!###!#!!3''(_ME]f"Ir   :Ҁm|9 EX/>YEX/ >YEX / >YEX/ >Y9/а  +X!Y ав9 +X!Y01!&&'#!#"!6$%!!iz[km {Wqa+cqUloo:u9 /EX/>YEX/ >YEX / >YEX/ >Yа  +X!Y в9 +X!Y01!5&&#!#"!5667!#XqgU&~`ֿo\x^n;" #$9 "EX/>YEX / >YEX/ >YEX/ >YEX/ >YEX/ >Y 9 / +X!Y  б +X!Yав 9 ! +X!Y01!47!!!!!!&&'#!#"!+, iz[kmRbtoWqa+cqNl:!"#9!EX/>YEX / >YEX/ >YEX/ >YEX/ >YEX/ >Y 9 / +X!Y  аав 9   +X!Y01!547!!!!!!54&#!#"#(!y&UthUg}[p:,&ֿq`x^nu@(1239)./EX/>YEX/>YEX/ >Y +X!Y%9|%/0%@%]%]%%]$ +X!Y $%9 +X!Y.].1а1/11]).19*а*/014&#!5! ##&&'46736654!#536673#53dow 䄌8mRJhz鋟gpyҷL[ƶ]*}\b:#eR^8  P%./09&+/EX/>YEX/ >YEX/>Y +X!Y#9|#/@#P#]##]" +X!Y "#9 +X!Y+]+.а./..]&+.9'а'/014##5!#&&'46332654##53273#53J>|Q5a{𙝿sҶrKB\c9,x}D9  Z2 9аEX / >YEX/ >Y +X!Y 9/l|]] q]lq,<r +X!Y  +X!Y01#"$'54$ 267!"!&&2巵l u CHG@ANp 9 а EX/>YEX / >Y +X!Y 9|/@P]  +X!Y +X!Y0146632#"'"!&&267!@}} [r qZ[nL p' v~quzqwroz G9EX/>YEX/>YEX / >Y 9  +X!Y017663#"!!y9'V#>[W۹v$NG9EX/>YEX/>YEX/ >Y9  +X!Y0176632'"!!]0A&2&< .jjc<, :Zy2''W()9!EX/>YEX/ >Yаа +X!Yа! +X!Y$01#5&5753%4&'#5536652umnhls͹y{#|);%{%ki!!fbL9%]a"BC#Z $%9 EX/>YEX/ >Yа б +X!Y +X!Yа!014753#5&56554&'#553BȧȦPGC'(jklm%9tac8;nw%*>G0HI90 а0FEX/>YEX / >Yа а +X!Y  +X!Y 9#а*а6а6/,а,/+ +X!Y,2а2/9 +X!Y6BаB/GаG/012#"'#"543"3265!32654&##".#"#54326753 yy YjjY\kk\XkkXoR,f9lyzJA`;  yyu^uyy"M i"%/#RYEX / >Yа в 9 +X!Y  +X!Y 9"а)а5а5/+а+/* +X!Y+1а1/9 +X!Y5@а@/EаE/012#"'#"&'5463"3255!326554&##"&'&#"#546326753;ŻdfM\M?QD?M]LX3*h|mSvA`;Kowxnzpnxwo);h%piwRYEX/ >Yа а/9 +X!Yаа/#а#/$а$/ +X!Y$!01#"'#"5!3265!3265%5!!#5xx-\k.[i't#,u*u煅d@#$%9"EX/>YEX / >YEX/>YEX/ >YEX / >Y9 +X!Yа"а"/#а#/ +X!Y# 01#"'#"&'!327!327%5!!#5@jn""8:~vsYK9/EX / >YEX/ >Y а  +X!Y +X!Y01!&54$3 !4&#"3Nrzy\">&ڤVNB 9EX / >YEX/ >Y  +X!Y +X!Y01!&55432!4&#"33߸^Mdm׷a",Sjk>/EX/ >Y01%#%7%73%Y!HݵG%I#%LhFksF/ +X!Y01'7!'$" ~lxr0 /а/ +X!Y а/  +X!Y012#54#"#52>j+2m|)[rJ"h):Nk /а/0153;R܏lDk /а/01'7'3R;Dl0 '5BO\jE/S/`/8/EX/>Y  +X!YEаEL +X!YаSаSZ +X!Y%а`+а`g +X!Y2а8? +X!Y01462#4&#"4632#4&#"4632#4&"4632#4&#"462#4&#"462#4&#"4632#4&"4632#4&#"stp30.3t]_uq5.,3Hu]_tp5\3t]_tp5.-3Ostp30.3Mttp30.3u]_tp5\35u]_uq5.-3ThhT.750ThgU1450 UghT147.ThhT147.ThhT.77.ThhT.750 UghT147.UggU1450pc "'9!// //&/EX/>YEX/>YEX/>Y01#'37%%57%'%'7s z`F: z`F Mu Z@DE&+A`B<aR |bG; |bGDEFEG+xg/&'9wEX/>Y 01og&'}EX/>Y 01COw9EX / >YEX/>YEX/ >Y +X!Y 9/ а а +X!Y +X!Y01!3!#535!!32654&'"W[WT~XMHXO9EX/>YEX/ >Y9/ +X!Y +X!Y01!!2'#654&'!!27'78vf{~o B.{fxݍ|[8Z.Ck7[o`=N"p#$9EX/>YEX / >YEX / >YEX/ >Y 99 +X!Y +X!Y01'#"'!!632%4&#"327'76=weibWpe ikf35;*phYxXu4rj~hEkYlIE% 3 9EX/>YEX/ >Y +X!Y01#!!!!E s! Culuu,EX/>YEX/ >Y +X!Y01!!!!u!P:;^9 /EX/>YEX/ >Y +X!Y9/   +X!Y +X!Y01!3 #'265!#!!=s#=GI~~Pݲnl:L 9 /EX/>YEX/ >Y +X!Y9/ +X!Y01!3 '6674&##!!M@/+Ψxai4P8,c~}S:}&Q'.:&Q&,Q6:&Q}g]EX/>YEX / >YEX/ >YEX / >Y 9/ +X!Y9а01 !##5#!!333?6Q.Q%fOM:aEX / >YEX/>YEX / >YEX/ >Y а/]  +X!Y 9а01 !##5#!!35336/O!O-:q:i%cEX/>YEX / >YEX/ >YEX / >Y9/ +X!Y +X!Y 901#!!5!3!!ج&dn?SGO::gEX/>YEX / >YEX/ >YEX / >Y а / ] +X!Y +X!Y 901#!!5!3!!ZstfmqOi&,Qo:&Q{ _EX/>YEX / >YEX/ >YEX / >Y9/ +X!Y +X!Y01!!!!!!!I,bN:pli: fEX/>YEX / >YEX/ >YEX / >Y9|/@] +X!Y +X!Y01!!!!!!!gu!`:k9 /EX/>YEX/ >YEX/ >Y9/   +X!Y +X!Y +X!Y013 #'265!#!!!!$#=GI~B~PݲnCl:Y9/EX/>YEX/ >YEX/ >Y9/ +X!Y +X!Y013 '6654&'#!!!!U9̪xajb9+cxKP:^&2349'EX / >YEX/>YEX/ >YEX/ >Y9/  +X!Y +X!Y& +X!Y*9001"'#"$55463"37&54663236554&#"޹]nҬYEX/>YEX/ >YEX/ >Y9/   +X!Y +X!Y" +X!Y%9 +01"'#"554663&55463236554&#"Ǖ{oz:Br`LJHT[h8)*8508Zw|ddύȋzaQ\odWE&<Q@:&\Q"^9 /EX/>YEX/>YEX/ >Y +X!Yаа +X!Y а 01!5!!!!3!!nG-+A_-X:M /EX/>YEX/ >Y +X!Yа +X!Yа 01#5!#!!3!! j"PQA&QhX:&QanP9EX/>YEX / >YEX / >Y 9/а +X!Y01367!!#5&&']kgU,Fv=rp " P( h:P9EX / >YEX/>YEX/ >Y9/ +X!Yа01!!#5&&'!367!&6!_.."TȮd  G9EX/>YEX/ >YEX / >Y9/ +X!Y013!663 !&&#"-/Bw 3}nl$g%&9EX/>YEX/ >Y!9!/ +X!Yа! а +X!Y +X!Y01 5&&536$ !327"!54&y *ǧ1D㽇3R+&ദ.>"+һN!"#9EX / >YEX/ >Y 9//q]_q +X!Yа а +X!Y 9  +X!Y01"'&&536$32!327"!5&& u Pl^AݩUkdП.vjy\gxtl`i` 9/EX/>YEX/>YEX/ >Y9/ +X!Y9 +X!Y01#'265!#!!3!7{.cft8"歮jIc:R9/EX/>YEX/>YEX/ >Yа/]  +X!Y 901'6674!#!!3! ̪xbhf!WmY2㨐9+}aq:i(g&g:&~K$ 9EX/>YEX/>YEX/>YEX / >YEX/ >Y9|/]@Pq0@]]  +X!Y +X!Y01!!#"'7325!!G-ζOD.6xk8 hlK:m 9EX/>YEX/>YEX/>YEX/ >Y9|/@]  +X!Y +X!Y01!!#"'7325!!g"ǴOA+8x:N `:g&,og:&{gY&1gh:&K.a9EX/>YEX/ >Y 9 / +X!Y +X!Y  +X!Y01 ' 5!&&#"'66267!lLv̷߮1OʅyˬfM?%*-Pej 9EX/>YEX / >Y +X!Yв 9/ а  +X!Y +X!Y01!5!#"&&5!32654&##5,wZj}!hRfjVRu_:Y 9 /EX/>Y +X!Y9 9/ +X!Y9  +X!Y01!5!#"&&5!32654&##5"{]lPr hTjnX%K&X&&Th ]01E:&Q'&aT#] ]P ]p ]01K&<TK:&\TI R9EX/>YEX/ >Y9/  +X!Y +X!Y01!!"&&54663#"b-sqPy܌z1܃git"U#$9EX / >YEX/ >Y 9/ +X!Y а +X!Y01!"&&5433!3667'&'!%#"1-CUd,%*rpyۍB}MtQK܃giZ*+,9)EX/>YEX/>YEX/ >YEX/ >Y9  +X!Y9" +X!Y' +X!Y0132!36676'!#'#"5&#"327'Zŕ`!D5ejA)~^i=odkx=3u?aMVff! TXJA(f )*9EX / >YEX"/" >Y) 9/ +X!Y  +X!Y9" +X!Y" 901536654#!5!36676'!#54&#za*%]aA&+jbRbga;Q)8bg]?_t-:&c '(9EX/>YEX/ >Y +X!Y9'9/ +X!Y +X!Y$90136676'!#&'54##'3654##'!FFM@-鼵 sss_w9qHhmSTJ-Ax!b"#9/EX / >YEX/ >Y" 9/ +X!Y  +X!Y9 +X!Y01'3654&#!'!3'767#&'54#qEnV,5<AgngGfoJORg`1jmT:!b"#9/EX / >YEX/ >Y" 9/ +X!Y  +X!Y9 +X!Y01'32654&'!'!23'767#&'5&'XY]Q.nV*:D9YEX/ >YEX/ >Y  +X!Y +X!Y +X!Y 901!#5766!32676'!#"&5eX2p`?5[jA'+ԍGWbg?r:!e "#9EX / >YEX/ >YEX/ >Y  +X!Y +X!Y +X!Y 901##'7667!36676'!#"&'b$NH  J>NT@0rσM?IZSy~~9EX/>YEX/>YEX/ >YEX/ >Y +X!Y 99|/]]0@] +X!Y0136676'!#5!!!!?3afA&+x-CJTbgk]c:9EX/>YEX/>YEX/ >YEX/ >Y9|/@]]]0@q +X!Y  +X!Y01!!!!!36676'!#&'"r!J>NT@0rσ V:[?KXSy~F B!"9EX / >YEX/ >Y  +X!Y +X!Y01"$'4$32&#"36676'!"߈>qw5%' YDѨsfƨXXFNF 9EX/>YEX / >Y +X!Y 9 +X!Y01%6674'!#"5546632&#"cD:ӂ`.ci~7;p_K0B:"dH9EX/>YEX/ >Y +X!Yаа  +X!Y01!5!!36676'!#&'RZ?4af@%) HTffB:O9EX/>YEX/ >Y +X!Yаа  +X!Y901!5!!36676'!#&'jJ=NU@+ P'IXncsz4j)x'*+9EX/>YEX / >Y +X!Y% 9|%/%%]0%@%]%]%%]& +X!Y&%9 +X!Y013265!# $5467&&54$!2!4&#"!3#"q,r5 ӋkNjWihPh*0chxL`aRc(K?&TK>:&T[o /а/а/ а/013#3&&5o\ҭLSJ]<T^|8V#]nnT@FL@mT@Fff@`'EX/ >Yа/а/]а/01!5!5!5!qq`nh"! 9EX/>Y 9/01#546Vi"O^:y! 9EX/>Y 9/01'6753ˆVdOZB 9/а/01'6753ʈNcO~YG /а/01&&55-%3ReGUOG\p"&_H&iB 9 / а а /01'6753'6753яN^VeOaIO`9 LEX/>YEX/>YEX / >YEX/ >Y  +X!Yа01!!!5!!!\!aIIvb`?~EX / >YEX / >YEX/>YEX/>YEX/ >YEX/ >Y +X!Y +X!Y аааа01!!!!5!!5!!!!!?ZZ"aa`gvb  9/ +XY014632#"&5hljih~|e+g}|k)&u)&'e  9/  +X!Y014632#"&eWKKWWKKWqBSSBBSSWl#'4AOPQ9а&а(а5аG$/&/EX/>YEX/ >Yа/а/а/ а /+ +X!Y1 +X!Y+8а1>а E +X!YL +X!Y014632632#"'#"&54632#"&5'32554&#"32554&#"326554&#",QQQQ+ǍH5zD87DF7zD87DUC:8BD89BeiiGii|FLrL89LLI/9/01#53N qP|#/9/01# zzmr+ //017'ǍmLrL5 EX / >Y 01WT 9EX/>YEX/>YEX / >YEX/>Y 9  +X!Y0163 #&#"# K|`%{ȮO!f'()9EX/>YEX/ >Y'9'/ +X!Y +X!Yа а а'а'а//]] +X!Y +X!Y9"а$01!!!5365'#53'#53'4632!4&#"!!!I>\HWQCV"{I0nUZb`n%]#&'(9а!а&EX/>YEX/>YEX/ >YEX / >Y9/а/] +X!Y +X!Y аааааааа а"а%013#3#!!!#535#53!!!35#3'#5#-+,mgcOH۠+颢 q'"()9"EX/>YEX/>YEX/>YEX / >YEX/ >Y +X!Y  +X!Y ав 9 / +X!Yа/& +X!Y01#327# ##!!23!332654&##f-B1#UYe'm`!Whltuijf;53Gó ukgnb&6W%P#'*-./9"а'а)а-EX/>YEX / >YEX/ >Y 9/а/а +X!Y  +X!Y 9/ ааааааа а"а$а&в( 9 )в+ 9 ,013!3#3#!#!#53'#53!3!37#37#7#7#*+:nlϊݾ:+*+6r3p,"DB!C*֠>> **o: fEX/>YEX/>YEX / >YEX/ >Y +X!Y9/  +X!Y 9/012!4&'!!!!267!!ZƲIf!ljL":6ZS:NW]YD"#$9EX/>YEX / >Y" 9"/ +X!Y  +X!Y а"а"а//]] +X!Y +X!Yа01!327# '#535#536!2&# !!!~iU$|=i$^[MO| ߘ|%$) *+9 а #а (EX / >YEX/ >Y $ +X!Y а /@  0 @ P ` p ]а/@ ]0@]pq +X!Y'а'/@!'' '0'@'P'`'p''''''''']@'' '0'@'P'`'p'''' q +X!Y  +X!Y  ааааа/а&а01!#535#53!23#3##'!!%!&'!!!2ө9 ;ӯ7>Xg V>!!>-T(y9EX/>YEX / >Y +X!Y +X!Yа/а +X!Yаа/ +X!Y 901#3#!'327!7!&'!7!.5/41;H_ƕ#7y%tEX/>YEX/ >Y9/а/]`] +X!Yаа аа а а +X!Yа а аааа +X!Y9/01#"'57557!776675t㷐+ęGq==x==AAxAAKD1:` 9EX/>YEX/ >YEX/ >YEX / >Y 9/а/  +X!Y 01!5&&'!!54675!Kh\\iuݔ!a2񰯩0d0ޭ$!3Y !9EX / >YEX/ >Yа/ +X!Yа а / ]_ o ] ]  +X!Yаа а  +X!Y01%!!5#535#53!2!!!!254&'!h6>qLvیL?id(489:9а)а75/7/EX / >YEX%/% >Y а/  +X!Y +X!Y%а/%, +X!Y2 +X!Y01#"&5546 #4&#"32654632#"&532554&"' ;-/872,:#H6zDpDǍ)sGu,9I?K9L8+Y 9/ +X!Yа +X!Yа  +X!Y01"$'5#527663236554&#"YaaYŭeoԕ*M꿟'a7~r08()*9ܰܰEX'/'>YEX%/%>YEX/>YEX"/" >YEX / >Y а /а/ +X!Y  +X!Y +X!Y!% 9& %901!5!46 #"&5326554&#"!!!!U~4]PO[^NM^Z>"$ǧ>ɣcqrg?brrfMKtx nEX/>YEX / >YEX/>Y9/ 99в 9 а +XYа а01##33####5!oHou~apQlNe9EX / >YEX/ >Y 9/ +X!Y +X!Y 9  +X!Y01%#"&54632!327"!&wĬzs^r>nz*zqa''$-EX/>Y01H{''$EX / >YEX/>Y01Wh'!'$EX/>YEX / >Y01[2'#('H$EX/>Y01YU'W()9! /EX/ >Y 9/  +X!Y +X!Y! +X!Y012&&#"'763 #"554"32655&&5s~hIB-:s,}krpkiur s2Us>Ω! 锠n@F(/EX/>Yа +X!Y01!!!!K79 7/EX/>Y +X!Yа  +X!Y01!!55!!#e:xF—T@/ +X!Y01!5!_T7o= 9/EX/>YEX/ >Y9 +X!Y013##5!FBZ&P ^N(7n899 а0EX/ >YEX/ >Yа/а/99 +X!Y& +X!Y,а501# !"554663266324&#"326%327675.#"߬땍UV na2YEX/>Y +X!Y +X!Y01#"'73274632&#"ȴLD0%п?`*7/ Ӹ e *|+,9/а/ а +X!Y +X!Y аа/а/а" +X!Y' +X!Y"*016636327#"''&"636327#"''&"e0BXURXefwXRUXE-fZVOVef~XRUXB028&D&~j&D&F8j'E$~j&D&B<a9/ +X!Yааа/ +X!Yа 01!'7#5!7!5!73!!twS;j[$swQk9>?6(g @9 ]p ]01x(g"@9 ]p ]01 8 9EX/>YEX/ >Y99013#q')WX'  Z79,EX/>YEX/>Yа/а01#3#3:T4kT /а/]0@]а/01'6753ÏISOsgG]:&JJ\^9EX/>YEX/>YEX/>YEX/>YEX/ >YEX/ >Y +X!Y +X!Yа013#5356632&&#"3#!!!*bl>"f2;,:f^EX/>YEX/>YEX / >YEX/ >Y +X!Y +X!Y а01&#"3#!#5356632!DVJޡԗS IfT &*+,9(EX/>YEX/>YEX/>YEX/>YEX/>YEX)/)>YEX/ >YEX"/" >YEX'/' >Y +X!Y  +X!Y +X!Y а!а$а%013#5354632&#"!56632&&#"3#!!!!!Ѽ "f\ W2;,f:'()9EX/>YEX/>YEX/>YEX/>YEX/ >YEX/ >YEX#/# >Y +X!Y  +X!Yа а!а"а%а&013#5354632&#"!56632!&#"3#!!ѼYEX/>YEX/>YEX"/">YEX / >YEX/ >Y" +X!Y  +X!Y аа +X!Yа01#327# #535&#"!#53566323.A1#UY?kߡϽf<43Gnfdk8KELM9EXF/F>YEX?/?>YEX/>YEXJ/J>YEX / >YEX,/, >YJ +X!Y  +X!Y ааF +X!Y?,9 ]? +X!Y:,?9:% +X!Y1,?911],4 +X!YA? 901#327# #5354&#"!4&#"#"&&5!32654&'$54632&546323782#UZʛ[PIRPUIP[JɈxjYSUit~SN-fE3iYT]QF;bdqJ>QB30;+TϔabMR?35=QgNSWr (7=CIOVZ^bfjnvz~A=/EXF/F>Y~I+z{+w+:+ =F9 /а/а/ а/P9P/o +X!YPo9  +X!Y% +X!Y)а)/.а./4 +X!Y=< +X!Y=kаgаcа>а<lаhаdа?а:AаF`а\аXаKбJ +X!YZа^аbаGаINаQ +X!Yv +X!Ywаzа{а~аа01#"&'5463232#4&#"32653#"&53326533!5353!#%5!#53254'5!!5!!5!5!!5!!5!3254&###535#53#53%#535#53#535df~heCbrT24JA@JJB@I\iRXm]h)6q(om56o\~gb[\ [\]v:<]qqqqqq"oooooobyx^u_|x^%IMT F-HENNEpENNEON]QS[6,;qqttSRJtttttt8qqqqqqP)~~~\s $(X!/%/а/!а/9/ ]а/а/ 9 / 9 9а/ 901 4676654&#"36632#33#3#AD$J\:+98][/KR11::'J34@4_YEX/ >Y +X!Y999 +X!Y 901!!56654#"#4632!81_2;ΫHl_1TT>/twFtWs6EX/>YEX/ >Y9/ +X!Y01!#5%3̽v$)yG H9EX / >YEX/ >Y  +X!Y +X!Y01#"&'54632'4#"327jc72e6 TAH!g"#9 EX / >YEX/ >Y 9|/ +X!Y 9 +X!Y  +X!Y01#"&546632#5266'2754&#"atЀ!Uf3YJIZVP˹rpM/hBlcXlSO[O *+,9а(EX/>YEX/ >Y(9(/o((](](q +X!Y(9(9 +X!Y# +X!Y01#"&5467&546324&#"264#"326ZghZ[JHZZY@FFBCDSS)ab(Vq?AA?>GG"sYEX/ >Y +X!Y901!!5!O^ !9 EX/>YEX / >Y +X!Y 9/ +X!Y  +X!Y01"632#"&55!"32654&&gfOA[K`\탎eҴI6W26dJOOOm 9EX/>YEX / >Y +X!Y 9/ +X!Y9  +X!Y9901!!632#"$'!3254&#"kO nVν!\^\;5X(ÕpO_*3 W9 EX / >YEX/ >Y 9/ +X!Yв 9 в 9013#!5!'!3i!LJ/& '(9EX/>YEX/ >Yа/o]]]q +X!Y а% +X!Y%9в]  +X!Y0132654&#"!4632#"&5!32654'#rZUVMEXj]"jMT\K=9@5,X#=қ¥8GK>8V 9EX/>YEX/ >Y +X!Yв9  +X!Y в901!!56654&#"!4632!sWJKJP[L}&;G]K⾬lA9EX/>YEX/ >Y9/ +X!Y901!!5%348DO H9EX / >YEX/ >Y  +X!Y +X!Y01#"&'54632%4#"3267ޤNVSNuuot7 FEX/>YEX/ >Y +X!Y9 +X!Y 901%!!5!5!N6J O1EX/>YEX/>YEX/ >Y901!!!&:em8 j\ SEX/>YEX / >YEX/ >YEX/ >Y999 901!!!!$NpKx~KB ` 9EX / >YEX / >YEX/>YEX/ >YEX/ >Y99  901!!!!31ಯts!1EX/>YEX/>YEX/ >Y9017!!!7  0VX/@74Ps]069EX / >YEX/ >Y  +X!Y 01#"$5!32650"aeZg //EX/>YEX/ >Y +X!Y01!!!5!/]:&l'(9EX / >YEX/ >Y 9 9 ]V]  +X!Yв! 9!]$ +X!Y014.54632!4&#"#"&&5!326bh2 gWM`dtՑ"ssN[9:F8?VqNé@VDf?3^w]R@cL`9EX/>YEX/ >YEX / >Y9/ +X!Y 9 +X!Y01#!!2!3254##:gtqĵn|3- {A)"H#$9EX/>YEX/ >Y +X!Y +X!Y01%#"546324&#"3265oaĴ)*ӆ߆x|xv/J8 '.c5 O 9  EX/>YEX/ >Y 9 / +X!Y +X!Y01!!2#'32654&'#w\eeYeuLCM^@~H !9EX / >YEX/ >Y  +X!Y +X!Y01#"&'546324&#"3265~ޅx|{t/4.cr EEX/>YEX/>YEX/ >YEX/ >Y9901!!!!!r4"!*)c`9EX/>YEX/>YEX/ >YEX/ >YEX / >Y99 901 !!5#!#!sdMc)EX/>YEX/ >Y +X!Y01%!!!"cu LEX/>YEX/>YEX/ >YEX / >Y99 901!!7!!"bj^}b~ y 09EX/>YEX/ >Y  +X!Y01!#"&5!327W""ɻvEX/>YEX/ >Y01!!!"cs bEX/>YEX / >YEX/ >YEX/ >Y 9| /@ P q ]0 @ ] +X!Y01!!!!!!!s3"!:"I[k 9EX / >YEX/ >Y 9 ]  +X!Y +X!Y 9/] +X!Y01%#"532!&&#"3275#5![D ckx~9GV%N1UVD*c NEX/>YEX/ >Y 9 /l | ]9 ] +X!Y +X!Y01!!!!!n@::s+y,-9EX / >YEX/ >YEX"/" >Y" 9  а  +X!Y +X!Y9") +X!Y&)9014.546753!4&#"#5&&5!326bh2ӰgWM`dt˯"ssN[9:F8?VqN@VDf?3ˡ]R@@?v9EX/>YEX/ >Y9/] +X!Y +X!Yаа а в9 +X!Y01!!!5366'#53'&632!4#"!n]G )+ߋCFoܐc dWƷpkWs9EX/>YEX / >Y 9 9/|/ +X!Y  +X!Yаааа01!3#!!!5!5!5'!53!Ӟ/  0)ڧ+c39EX/>YEX/ >Y +X!Y01!!!E]= 9EX/>YEX/ >Y9 +X!Y01!!!'!v8 36@~#y$%9аEX/>YEX/ >Y9|/]0@]@Pq +X!Y +X!Y  +X!Y01!5!#"&'546324&#"3265u`ޅx|{tꂫ4.8 9EX/>YEX/ >YEX/ >Y901!!!!'.8 sO36J` f 9ܰ EX / >YEX/ >Y +X!Y 9/Pq +X!Y  +X!Y01!!5!'!5!7!5!`QtQc|@ 9EX/>YEX/ >YEX/ >Y +X!Y01!!!!!|+]H E 9EX/>YEX/ >Y +X!Yа  +X!Y01!!55!!KD4PAq9аEX/>YEX/ >Y9/9/ аа +X!Yа +X!Y01!5&$54$75!4'6}!}{kkv xnAL] 9EX/>YEX/>YEX/>YEX / >Y 9/  +X!Y а01667!!&!!Wnd"!_t!07 "՜J#U$%9EX/>YEX/ >YEX"/" >Y +X!Y +X!Y а!01%66754&#"!53&5466323!d_{ycg)҇4lf()=,(L tn9EX/>YEX/ >YEX/ >Y +X!Yав9/ +X!Y +X!Y01!5!!632#52654&#"!u}g_qrjo ŽLMaV@R 9EX / >YEX/ >Y 9  +X!Y 9//rq]qrl|]9I] +X!Y +X!Y 901#"532!&#"!!3267Q  J nomo)B8yX_.!z"#9EX/>YEX/ >YEX / >Y +X!Y   +X!Y9/ +X!Y +X!Y01#!!#'7>7!3232654&'. \:+FC" ` A]liYx N_IFVc'9EX/>YEX/>YEX / >YEX/ >Y 9|/]0@]@Pq 9/  +X!Y +X!Y  +X!Y01!!32#!!!!32654&'" ?"YomXٰ:\LIT t\9EX/>YEX / >YEX/ >Y +X!Yав 9/ +X!Y01!5!!632!4&#"!uxg{jo Jn`c| P 9/EX/>YEX / >YEX/ >YEX/ >Y +X!Y 01!!!!!!!|x""Y\cD a9EX / >YEX / >Y  +X!Y 9/   +X!Y +X!Y01!32#!!254##hɱ\!:]9 /EX/>YEX / >Y +X!Yаа  ааа +X!Y017667!3!!!!!!`Hj) f\M6Y9EX / >YEX / >YEX/>YEX/ >YEX/ >YEX/ >Y 9|/]]0@] q +X!Yв9а 01#!#!!3!3!!'^a=PX!WP>HHZ3<<>&%'(9EX / >YEX/ >Y  +X!Y 9% 9%/%] %q?%q%q%ql%|%]9%I%]" +X!Y""]V"]"%9 9 +X!Y014&#"!4632#"$5!32654'#536_WGXhYhl"^V_dē7=A6-Y(#^7AICcv L 9EX/>YEX/>YEX/ >YEX/ >Y9 901!!!!T"1"s&&cR [ 9EX/>YEX/>YEX/ >YEX / >Y9/ +X!Y 901#!!3!!q"mLtH<oO9EX/>YEX/ >YEX / >Y +X!Y   +X!Y01!!#'7>7o \>NF$sy JiD9EX/>YEX/>YEX/ >Y9  +X!Y01!''3267!Z3d1eYEX / >YEX/ >Y +X!Yа 01%3!!!!!|5""M\FEG9EX/>YEX/>YEX/ >Y 9 / +X!Y01!!# &'!327!Exb"hzhr!do` cK P 9EX/>YEX/>YEX / >YEX/ >Y +X!Yа 01!!!!!!!K"A"A"\\cY 9/EX/>YEX / >YEX/>YEX/ >Y +X!Yа а а 01%3!!!!!!!Kf"A"A"M\\ ` a9EX/>YEX/ >Y +X!Y 9 /  +X!Y  +X!Y01#!!5!322654&'#` ]liY_IFVc&?cD R9 EX/>YEX/ >Y9/  +X!Y +X!Y01#!!322654&'#D" ]liY_IFV1C 9EX/>YEX/ >Y9 +X!Y 9 / / r q ] q rl | ]9 I ] +X!Y  +X!Y9013267!5!&#"!6$32#"$'Somnn Jju _Xya_0cc"#$9EX/>YEX / >YEX / >YEX/ >Y 9|/@Pq]0@] +X!Y +X!Y +X!Y01#"$'#!!3632%4&#"3265c"$+ޅy{xu/8$ .6 c 9 EX/>YEX/ >YEX/ >Y9/  +X!Y 9 +X!Y013&5463!!#33#"6 ޿.XXQ_ \ĤseCO N  R9EX/>YEX/ >Y 9 / +X!Yа а  +X!Y01#!#53!!3D/ѷ9/EX/>YEX/>YEX/>YEX / >YEX / >YEX/ >Y 9/ +X!Y9 +X!Y в9013###!#!!3!3!^a=PX!WPbMHHZ3<<cm9/EX / >YEX/>YEX / >YEX/ >Y 9 / +X!Y 9 +X!Y013###!!3!q"mLVMH<cd 9EX/>YEX/>YEX / >YEX/ >Y9/а +X!Y9 013533!!##5#!!@3Lt7@"H j9EX/>YEX / >YEX/ >YEX / >Y9/ +X!Y +X!Y 901#!!5!3!!*qlLtH<@"/019#EX / >YEX/>YEX/ >YEX/ >Y9/, +X!Y а +X!Y" +X!Y&901"'# 54663"3&'543236754&#"뷗gxġBcTQISLY 6>A820Xߨ2k9O&&8i 9/EX/>YEX/>YEX / >YEX / >Y 9  9 9 +X!Y 901!3##!!$NpKxM~KB c^ 9/EX/>YEX/>YEX/ >Y +X!Y +X!Y а а а 01%3!!!5!!!!5!MFFEP9EX / >YEX/>YEX/ >Y 9/ +X!Yа01!!#5&&'!5367!EF>"HIBB!ha]  cbG9EX/>YEX/ >YEX/ >Y9/  +X!Y01!63 !&&#"!c"xbiwdvdbi\"g #$9 EX/>YEX/ >Y9/ +X!Yа а +X!Y +X!Y01 '&&53>32!!27"!54&LM 2F1ݮv   _v |5,ш{s|@a9EX/>YEX/ >Y 9 / +X!Y +X!Y  +X!Y01 #"5!&!"'76267!&!J-ΘFt a5 m9EX/>YEX / >Y +X!Y9 9/ +X!Y9  +X!Y901!5!#"$5!32654##5wjݘ!gXY`ф>>IE@~ !9аEX / >YEX/ >Y  +X!Y 9|/0@]]@Pqq +X!Y +X!Y01#"&'54632"!&&267!~j|dd~~/4Szz!ww@?&޲$'(9EX/>YEX / >Y 9/_]]]]qа//?]]] +X!Y] +X!Y]   +X!Yаааааа!в[!] !]# +X!Y_#]01!!!!!!5367#535'#535&632!4#"shq!G *ߋCFΨ*-" D 9 ͼpkG"#$9EX/>YEX / >Y" 9"/"]"q"]" "] +X!Y]  +X!Y а"а"а//?]]] +X!Y] +X!Y_]а01!327#"$'#535#536$32&#"!!!fh]Rvtl uneh'bmtNMʺL!Lc'()9ааEX#/#>YEX&/&>YEX/>YEX/ >YEX!/! >Y а /а/@  0@] +X!Y  +X!Y +X!Y #9%#901%!5!46  &5326754&#"!!!!E6ZSPX]ON]4"!ۖ<WebTGWdc[*)( !9EX / >YEX/ >Yа/б +X!Y@ o]а а / ]  q / ] +X!Y@ o  ]а а  +X!Y01%!!5#535#53!2##!32654&##IWddX℄A(ԪAZHFV0 $%&9EX / >YEX/ >Y 9|/]qP`q] 0r  +X!Y 9# +XY#9 9V]5E] +X!Y013254&#"#4632#"&5332654'#Rw91*;ͩD4<5z\X#*f{wkw2)ir"15#\5 JEX / >YEX/ >Y 9/ +X!Yа в 9 9013##5!'335hXX eF1Er 9EX/>YEX / >Y +X!Y 9/] +XY9 9  +X!Y 901!!632#"&'33254&#"W6?Eeh;=23 }z{eFq3= F%h9 EX/>YEX / >Y +X!Y 9/] +XY]  +X!Y01"632#"&'5463"32654:EkvO$t-B%VZAyt=F1&{>1c33EX/>YEX/ >Y +X!Y901#!5!LX^oG $%&9аEX/>YEX/ >Y#9#//#]?#ro#q#r ##] +XY]#9 #9 +X!Y +X!Y01#"&547&546 4#"3264#"32oq jg90/9WUWU@r8YEX/ >Y9/] ,] +X!Y +XY] +X!Y01#"&54632##5266'2754#"CP{j^6T?!i,;/4x;٣A&MuF7kH@9/] +X!Y01!5!HEXL /а/а/@?O_o ]qа/O] а01!#4632#"&72654&"uUTspWXrp4L00L4NmlOMjkL&22&)22c ]EX/>YEX/ >Y 9 / r9 I ] +X!Y +X!Y +X!Y01!!!!!!f6YJN+7DEF91а;EX(/(>YEX/>Y(+а+/ +X!Y(9/9/7 +X!Y79!(91 +X!Y; +X!Y(B +X!Y01##"'3#"&&5467&547&&554$32!32654#'326554&"}YEX / >YEX/ >YEX/ >Y 9 9 +X!Y  +X!Y01%#"''3273#32675&&#"Dp nls Zm l\cl <4ԑBc 9EX/>YEX/ >YEX/ >Y9/ +X!Y 9 +X!Y01!!2!&'54'%3254&#!@zI<vl9q7EU9/kek: TEX/>YEX/>YEX/ >YEX / >Y9/ +X!Y 901#!!3!!],dn?SGOqN TEX/>YEX/>YEX/ >YEX / >Y9/ +X!Y 901#!!3!![!QNz@ S 9EX/>YEX/>YEX/ >YEX / >Y99901!!!!,tI{."qF S 9EX/>YEX/>YEX/ >YEX / >Y99901!!!!!4Up& c4 H9 EX/>YEX/ >Y  +X!Y  +X!Y013!2#326754&'coo7E<@RP 9EX / >YEX/ >Y 9  +X!Y +X!Y 901#"532!&#"3267Q  o~mo)B8JX_c" 9аEX/>YEX/ >Y9/l|]]qrq?qqr] q9] +X!Y]V]9 +X!Y +X!Y013!2#32654''3254&##c[UbhT\㲯UWX\C7zF; GEX/>YEX/ >YEX/ >Y 9 / +X!Y 901%!!!!!6=R8%sIEX/>Yа/01#566AONvdjn V/p]а/@ /?O] +X!Y а /а/а/@ /?O_o]01#"&533265%3#QJKPzzij6:<4/]p]а/@/?O_o] а / +X!Y +X!Y а|/q@/?O_o ]а/@/?O_o]/01#"&#"'46323265'3#_E9)&x^E+((ѴLiC1%"JlB1$ O/p]а/а/@ /?O]9//9 а /а/013#'#3#ؗ6~~Ea| ]/p]а/а/@ /?O]9//9а/ а /@   / ? O ]01#'#%3#3aח``/p]а/@ /?O]9//а/9а/а/ в 9901#'#%3'6654#72aϟ >7yC;솆gr/c3 9EX/>YEX/ >Y +X!Y01!!!!!$]jn Z/p]а/@ /?O] +X!Y а /а/ а /@  / ? O _ o  ]01 &533265'3#ļQJKPo˯hi6:<4j# W/p]а/@ /?O] +X!Y а /а/а/в9901#"&533265''6654#72#ONJQG@KHgg1:92k5jPG-;5GEX / >Y015 EX / >Y 01E!EX/>Y01F"EX/>Y013#EX/>Y01G$EX/>Yа01C%EX/>Y01X&P 9EX / >YEX/ >Y 9  +X!Y +X!Y 901!"$'54$3 !&&#"3 $ߠ"6"E<L}0 X&#_$%9EX/>YEX/ >Y9 +X!Y +X!Y"9"/! +X!Y01%#"$'54$3 !&&#"32675#5!& rHư(1}֯dv,)O9BALt}.) H9EX/>YEX/ >Y  +X!Y  +X!Y013!2326554&'JϜ)4&X|H !9EX / >YEX/ >Y  +X!Y +X!Y01#"$554$32%4#"325|Ѻѯ//ȠǠQ(O"X|!H"#9EX/>YEX/ >Y +X!Y +X!Y01%#"$554$ 4#" 5|zJNҩ.x,ţFbũSR  3EX/>YEX/ >Y9/ +X!Y01!!5%3Z4kX:[ 9EX/>YEX/ >Y +X!Y99  +X!Y 9901!!56654&#"!46632!:6C<]RXhy݌](9a9AGcNth`o \9 /EX/>Y +X!Y9 9/  +X!Y +X!Y901!5!#"'732654&'#5awۚ9bgX,t SEX / >YEX/ >YEX/ >Y +X!Yа/ 9 в 901%3#!!'!!Ф %~`-]%h6`9/EX/>Y +X!Y9/ +X!Y9 +X!Y9901!!672#"'732654&#"J;%RX>Oyny9}+x/3S<2&/EX/>Y +X!Y901!!5!2&;j /p]а/@ /?] +X!Y а /а/а/@/?O_o]а/ +X!Y +X!Y 01 &533265#"&#"'46323265̿PKIP_E9)'x^F)&'kk4884LiC1%"JlB1$Z{/а/а/01!!{!2@o !9EX / >YEX / >YEX/ >YEX/ >Y  +X!Y 9/ +X!Y +X!Yа +X!Y  +X!Y01!!"&'5463!!!!!7'"n9H6|4  .`_$V%&9 /EX / >Y +X!Y 9|/ +X!Y  +X!Y01 #"546632#"'72754&#"2w~ዜ6xƕQwmaxtXQW>-VxK ( /EX/>Y  +X!Y  а /01#"'7325dzMA+7x־ 71L(EX/>Y01a/NEX/>Y014|MEX / >Y 01T6KEX/>Y01NDOEX/>Y013eeEX / >Y01_JEX/>Y01VUSEX / >Y01_7EX/>Yа&01RJJEX/>Y01K:K::d:& :c1!aEX/>YEX/ >YEX/ >Y +X!Y9/ +X!Y а  +X!Y01%32654&##57&#"!6632#"'@?AIpiS;NՄd▦կi0QDN@;$r|:L~H9EX / >YEX/ >Y  +X!Y +X!Y01#"546324&#"3267~܂߂vuws>>  󥠶?83EX/>YEX/ >Y +X!Y901!!5![oRf9 /EX / >YEX/ >YEX/ >Y 9 9  +X!Y +X!Y01#"'#!632%4&#"326Rʲk!dun8:kvҍyuhCiDNM9EX/>YEX/ >Y +X!Y99 +X!Y01%267!#"5432!&&#"BPihSiqYH)/TiD&f9/EX/>YEX / >YEX / >Y 9  9  +X!Y +X!Y0146632!#'#"%327&#"Dn˃f!m!xj=YEX/>YEX/ >YEX / >Y9 9 +X!Y9 +X!Y  +X!Y0143273#"'73265#"%327&#"Dǵf.sd!zh<9jz'-mK9s1fb<`NE9EX/>YEX / >Y +X!Y +X!Y0146632#"532654&#"<'!onpn' 2 o`QNp9 EX / >YEX / >YEX/>YEX/ >Y 9 9  +X!Y +X!Y01#"'!!6324&#"326Qmɂe i|i8:h{rla5bD`&Nm9EX/>YEX/>YEX/>YEX / >Y 9  9 +X!Y +X!Y0143273!#"5327&#"Dˬje!{h;:j{&.q&o1_^HNq 9EX/>YEX/ >Y9/]/q  +X!Y +X!Y 9 +X!Y01"5546632!3267"!54&s~OG:7DˠVmc)sw' 07xukbdBVN#!$%9!EX/>YEX/>YEX/ >YEX / >Y9 9 +X!Y9 +X!Y! +X!Y0143273#"'732655#"%327&#"Bŵf-kf"jd87fj'(mF4s,okfV&3dEX / >YEX/ >YEX/ >Y 9 9 +X!Y! 9* 9 1 +X!Y01"&54767&&54632653!''27'76654&#"Q,qQ?ƝƳ64;[G,:S.&).0>166oU/GSKzu#Tp۔;N*:6=!@&6%#2: WEX / >YEX/ >Y  9 / +X!Yа +X!Yа  а а01!!57!7rr"G!!zG9EX / >YEX/ >YEX/ >Y 9/ +X!Y +X!Y 9/ +X!Y   +X!Y 901!!!'!!!!!3E  hH:c Y9 EX/>YEX / >Y 9/ 9/  +X!Y  +X!Y01!32#!32654&'c"}ۄ"ZghU׮SJHU@~ )j*+9а&EX/>YEX/ >Y99 +X!Y#9$9& +X!Y01#"'#7&'5463273&#"!4'3265QPu=V|;Wt:Jqƚ6MophK1dI/69EX / >YEX/>YEX/ >YEX/ >Y 9//] +X!Y 9/ +X!Yа аа01#!!!#535!!5!3!5!Z3ZZ" Z3Q:QcKr[9EX / >YEX/>YEX/>YEX / >Y +X!Y 9 901"'73255!!!OA-7x5"!K *)On_EX/>YEX/ >Y9/] +X!Yа +X!Y +X!Y013#53!2#326554&##3/пDۑwCĮoD|dEX/>YEX/ >Y9/oq] +X!Yа +X!Y +X!Y013#53!2#326554&##3/пDۑwCĮoD|-v 9/EX/>YEX/ >YEX/ >Y/]]9/ +X!Y9  +X!Yа01#63 !4&#"!#535!3s`P]9߻!gK]Yb(NEX / >YEX/ >Y 9/ +X!Yаа  +X!Y 01#!#53!5!!3ĸHBD9EX/>YEX/>YEX/ >Yа/ +X!Y9/ +X!Y  +X!Yааа013#3#327# 5#535#53ɹ.A0%UZƞDԛ<41 \6&%D6EX/>Y 01\6&%u6 / 01\6&%6EX/>Y01\3&%4 /01\ &%j6\&%_ /ܰ01\&%'Z / ]/]/]01V1&'yR9&)D9EX/>Y 01R9&)u9EX/>Y01R9&)9EX/>Y01R &)j99&-D9EX/>Y019&-u:9EX/>Y019&-49EX/>Y01 &-jO9"3&24 /01V.6&3D6EX / >Y 01V.6&3u6EX / >Y!01V.6&36EX / >Y#01V.3&34EX / >Y"01V. &3j6t6&9D6EX / >Y01t6&9u6 /01t6&96EX / >Y01t &9j66&=u6EX/>Y 01D&ED /*01D&Eu7 /,01D&E0EX/>Y.01D&E9 /501D&EjKDY&E_ /3ܰ601D&E'?,q0,]p,]P,]p7]7qP7]07]=q0=]p=]P=]01B1N&GyAH&ID{ /01H&Iu0 / 01H&I)EX/>Y"01H&IjD&DtEX/>Y01&u(EX/>Y01&"EX/>Y01&j=i&RQ /01BC&SD /01BC&SuP /01BC&SIEX/>Y01BC&SR /%01BC&Sjdh&YDEX/>Y01h&YuLEX / >Y01h&YEEX/>Y01h&Yj`K&]u /01K&]j,\&%p4EX/>Y 01D&Ep( /*01\,&%6EX/>Y 01D&EdEX/>Y-01Z\w9EX/>YEX / >YEX/ >YEX/ >Y  +XYа/9/ +X!Y901#327#"&547!!!;!TJPB!/I\dad*lP*Q5A,obY!o!DZN-89:9/EX/>YEX)/)>YEX/ >YEX/ >Yа/9 9 / ] +X!Y 9|/)$ +XY. +X!Y 2 +X!Y01%&'#"&5467354&#"!46632#327#"&542675#" iMSIStԄ*0JPB!/I\dp@llL)3u>KZF=^[ɶ+O*Q5A,ob906FV>&'u>EX / >Y01B&Gu& /01V>&'>EX / >Y01B&GEX/>Y01V6&'OEX / >Y"01B&G  /"01V?&'> /!01B&G7 /!01:&(09 /01B&H+/01R&)p|7EX/>Y 01H&Ip! /01R/&)9EX/>Y01H&I]EX/>Y!01R1&)pJ /01H&I /#01ZR9EX/>YEX/>YEX/ >YEX/ >Y9/:J] +X!Y +X!Yа +XY +X!Y01!!#327#"&547!!!!JPB!/I\dt^@wz*Q5A,obVHyN$,-.9% /EX/>YEX/ >Y" +X!Y"9  +XY)9)/)/)q_)q)] +X!Y$9% +X!Y01%3327#"&547&554632!327"!5&&>sJPB!/I\d?~Ol^Vkd[5*Q5A,obaDvjytl`iR:&)9 /01H&IA /"01^>&+>EX / >Y#01EV"&K3EX/>Y+01^4&+>EX / >Y$01EV"&KgEX/>Y*01^6&+O /&01EV"&K /,01^&+EV"&K40 /+01#9&,9EX/>Y01h|&L| /016&-=7EX/>Y01&+EX/>Y01&-p,7EX/>Y01t&pEX/>Y01/&-h9EX/>Y01t&VEX/>Y01\&-Z&M1&-J / 01N&-.UmK&MN(6&._6EX/>Y01K&EX / >Y01:%&/o$Z&OK+6&0u.6EX/>Y01~&PuEX/>Y01+&0q[&P'+&08EX / >Y01~&P+&0~)&P"6&2u6EX/>Y 01i&RuO /01"&2iN&RT"7&26EX/>Y01i&R`EX/>Y01&R^ /01V.&3p4EX / >Y 01BC&SpA /01V.,&36EX / >Y"01BC&S}EX/>Y01V.5&3X6EX / >Y!ܰ%01BS&S /ܰ016&6uf6EX/>Y01o&VuEX / >Y01&6|PN&V7&6w6EX/>Y01$&VEX/>Y01E6&7u6 /*018&Wu! /(01E6&76EX / >Y*018&WEX/>Y(01E2&7y8)N&Wy(E&78N&W)E7&76EX / >Y,018&W2EX/>Y*01(&8P ]01 D&X(9&8y 2D&Xy(7&86EX/>Y 01 Q&Xpt3&94 /01h&YNEX / >Y01t&9p4 /01h&Yp=EX/>Y01t,&96EX / >Y01h&YyEX/>Y01t&9I /ܰ01hY&Y_ /ܰ01t5&946 /ܰ01hO&YEX / >Yܰ01tW !9/EX/>YEX/>YEX/ >Y9 +XY +X!Y01327#"&547 5!32Ќx8:B!/I\d",y?;#G.A,obH6? hZ:w !9EX/>YEX/>YEX / >YEX/ >YEX/ >Y  +XYа/9 +X!Y01!327#"&547'#"&'!327!JPB!/I\dk!7"*Q5A,obXeEf#6&;6EX / >Y01&[EX / >Y016&=6EX/>Y 01K&]EX/>Y01 &=j6I6&>u6EX/>Y 01J&^uEX/>Y 01I.&>jGEX/>Y01J&^EX/>Y01I7&>6EX/>Y01J&^+EX/>Y01IB&uBEX/>Y01B&um /?01]5&uEX/>Y,01BrC&u+EX/>Y'014&0&b,]qor/]qq]014&0&b,]qor/]qq]01 /&&" ]01&3DEX/>Y 01&3uhEX/>Y 01&3aEX/>Y01&3jEX/>Y01&3j|w&3} /ܰ01&3'@4R&1yfc&(DEX/>Y 01c&(u9EX/>Y01c&(2 /01c&(jM&DdEX/>Y01v}&uEX/>Y01&EX/>Y01&j-cr&EX/>Y 01@~&DEX / >Y!01@~&um /"01@~&fEX / >Y$01@~&o /+01@~&j]0&DEX / >Y01]0&uREX/>Y01]0&KEX / >Y01]0&jfO&u+EX/>Y 01&3pYEX/>Y 01&3EX/>Y01Zw9EX/>YEX / >YEX/ >YEX/ >Y  +XYа/9/ +X!Y901#327#"&547'!!!@JPB!/I\dM=R %s*Q5A,obY%@R&1uc /01@R&1\EX / >Y01@R&1H/ /01@R&1t /014&0 /01c&(p*EX/>Y 01c&(fEX/>Y01c&(/ /01cZ9EX/>YEX/>YEX/ >YEX/ >Y9/ +X!Y +X!Yа +XY +X!Y01!!#327#"&547!!!!f6JPB!/I\dt(Y*Q5A,obVc&(J /01I[&jEX / >Y#01I[&EX / >Y"01I[&V/ /$01I[&P#]01cs&lEX/>Y01&EX/>Y01d&p EX/>Y01d&FEX/>Y01%Z&t&/ / 01 b&EX/>Y01cu&P]01c&uEX/>Y01c&P ]01c&}EX / >Y01c&Q_]01cr&uEX/>Y 01cr&cr& /01@~&p^ / 01@~&EX / >Y#01@~& /"ܰ$01cL&u  /01cL&&P]01cL& /01:&uJ /)01:&CEX / >Y+01:2&yP:&[ /+01 /&:P ]01 /&D / 01 </&y9 ]0&T /01]0&pC /01]0&EX/>Y01]0w&} /ܰ01]U& /ܰ01]0W 9 /EX/>YEX/>YEX/ >Y9  +XY +X!Y01327#"&547&&'!32650|YB!/I\d+"ae ,?IA,obM> Zg&EX / >Y01O&$EX/>Y 01O&j?7&u2EX/>Y 017&/ /017&C /01\A&%oRB&)#?&,C&-iBA&3SA&=dA&r& /ܰ а01\%&R)I>#,-%/~1"2V.34(8=< &-jO9 &=j6I|A&' /#01_/A& /)01laA& /01o,&EX / >Y01q&/ܰа!01:BCNS`N:v :ZKJJj9EX/>YEX/>YEX/>YEX/>Y9  +X!Y9 +X!Y012!7&&''!&#'6m2a%-H !$Xog@@w.AOJhu"Ye33s&jNq&jXBCA&S /01q<&EX/>Y01SA;& /%01R &)j9=9&ux9EX/>Y01E'f()9EX / >YEX/ >Y 9 9  +X!Y +X!Y# 9% +X!Y014&$'&546632!4&#"#"$&5!!26ux[~rnz- kx~U[e1vhq΃do]LG`*M䪽{֍W- &-jO9(.:,%6&/ud6 /01/&9EX/>Y01\%&=R)x/&9EX/>Y 01~1#,V.3$4V'(8<DNEHNIo&EX/>Y 01BCNSo`=NTBN?9EX/>YEX/ >Y +X!Y +X!Y01%267!#"5432!&&#"1Pdv| dRegfXIne'*TiK:]:\H&IjDoP&uEX/>Y018NWmM&j=KN&uSEX/>Y01K&]EEX/>Y01#6&;D6EX / >Y01&[DHEX / >Y01#6&;u6 /01&[uEX / >Y01# &;j6&[j6&=D6EX/>Y 01K&]DcEX/>Y01? @O|&-K&4EX / >Y01:y~6&1u6EX/>Y01o~&Qu / 01w\&%mDN&ER9&)D9EX/>Y 01x9&D%9EX/>Y 01H&ID{EX/>Y01o&DEX/>Y 014D": &\%EX/>Yܰ01$&EX/>Yܰ01BKN&S]VK &3]C &QE!M&Q*V(&'QB(N&GQ@=_:-/&=9EX / >Y01'&EX / >Y01-\,&%6EX/>Y01D&EdEX/>Y-01\ &%j6D&EjKIBPR/&)9EX/>Y01H&I]EX/>Y!01K.&Xj NON&jF &j$9'&jC&j>E&j8x&p7EX/>Y 01o&pKEX/>Y 01x &j9o&jnV. &3j6BC&SjdZ2@ANZ2 &j7@A&j[>&j??&j0&p7 /01K&]p /01 &j9K&]j,8&29EX/>Yܰ01K&]EX/>Yܰ01  &j9X&jct &'-j9&'ijzBH\&%DN&E3\&%4 / 01D&E /*01a&%7EX/>Yܰ01D`&E74EX/>Y-ܰ301\&%8EX/>Yܰ01y_&E84EX/>Y-ܰ201\&%9 EX/>Y ܰ 01DN&E92EX/>Y+ܰ101\&%:EX/>Y ܰ01D&E:4EX/>Y+ܰ401\6&%'6EX/>Y01D&E&03EX/>Y.01\&%<7EX/>Yܰ01Do&E<`EX/>Y-ܰ901\&%57EX/>Yܰ01Do&E5`EX/>Y-ܰ;01\8&%=.EX/>Yܰ'01D&E=Z /-ܰ801\&%P3EX/>Yܰ01D&EP`EX/>Y-ܰ:01\,&%'6EX/>Y01D&E&d3EX/>Y-01R&) HN&IR&)7 / 01H&I /01R6&)7EX/>Y01H&I2 /)01(&)7EX/>Yܰ01H`&I7-EX/>Y!ܰ'01R&)8EX/>Yܰ01r_&I8-EX/>Y!ܰ&01&)9EX/>Yܰ01HG&I9+EX/>Y!ܰ%01R&): EX/>Yܰ01H&I:-EX/>Yܰ(01R9&)'9 EX/>Y01H&I&)EX/>Y"01,&-7 /01u&y /01&-m&Mf V.&3BCN&SV.&3#4EX / >Y01BC&S /01Vo&37EX / >Y"ܰ(01B`&S7MEX/>Yܰ#01.&38EX / >Y"ܰ'01C_&S8MEX/>Yܰ"01V.&39 EX / >Y"ܰ&01Bg&S9KEX/>Yܰ!01V.&3:EX / >Y ܰ)01BC&S:MEX/>Yܰ$01V.6&3'6EX / >Y#01BC&S&IEX/>Y01P9&u9EX / >Y)01@&uQEX/>Y%01P9&D9EX / >Y(01@&DEX/>Y$01P&"7EX / >Y'01@&EX/>Y#01P6&7EX / >Y*01@&SEX/>Y&01P&@&t&9h:&Y/t&94 /01h&Y /01tTB&uBEX/>Y01h7&uPEX/>Y01tTB&D&BEX/>Y01h7&DEX / >Y01tT&,@EX/>Y01h7p&EX / >Y01tT?&@EX/>Y01h7&REX/>Y01tT&"h7&&=":&]r&=4 / 01K&]i /013&=4EX/>Y 01K&] /01B&H'&f:Cw!`q] q]/]]01(&8QO:&Q &QX:&Q=&Q oP:&Q*&LQ2N&MQhLdEX/>YEX / >Y 9/9/  +X!Yаа +X!Y  +X!Y01#3 !#535!332654&'-ݫ.srAA@~jcsdEX/>YEX / >Y 9/9/ +X!Y аа +X!Y  +X!Y01#3 !#535!332654&'-ݫ.srAA@~jcs= KEX/>YEX/ >Y 9 / +X!Yа а  +X!Y01#!#53!!3ԟsjcP: KEX/>YEX/ >Y 9 / +X!Yа а  +X!Y01#!#53!!3ߩ@;ŷNvEX/>YEX/>YEX/ >YEX/ >Y9/ +X!Y9/ +X!Y а в901#!#535!3#3!!q,Édn?SJGObzEX/>YEX/>YEX/ >YEX/ >Yа/] +X!Y9/ +X!Y а в901#!#535!3#3!![!QNz@W 9EX/>YEX / >YEX/ >Y9/ +X!Yв 901#!#53!!3ϽfyI-/Hyvp _:d 9EX/>YEX / >YEX/>YEX/ >YEX/ >Y +X!Y 9 а01%#!#53!!3pŊ..Ҙ TxdEX / >YEX/>YEX/ >YEX/ >Y 9/ +X!Y 9а в 901#!!#53!!3pi[YYbqj :dEX / >YEX/>YEX/ >YEX/ >Y9/ +X!Y9а в 901#!!#53!!3ozok65v0TзCM_/M6&*&fP p ] q01mT@Fff@FI@37_iBxcsKV,sK^>&+u> /#01EV"&Ku: /)01"6&2D16EX/>Y 01i&RDEX/>Y01\#&%5EX/>Y ܰ01&EEX/>Y+ܰ/01<R&&)L8EX/>Y ܰ01&IEX/>Yܰ#01Q&&-8EX/>Yܰ 01?&EX/>Yܰ 01V.#&35EX / >Y ܰ$01C&SEX/>Yܰ01#&6'5EX/>Yܰ01[&VkEX/>Yܰ01_#&9o5EX/>Yܰ01&Y EX/>Yܰ01:A&d&& o>&F&(g B&H&(( P]]01B&He#&,+ h&L %6&/ud6 /01oZ8&Ou8 /01%&/>oZ&O(+&0 m&Pf ~&1 o~N&Q "&2+iN&R V.&36UEX / >Y"ܰ501B&4uhB /01o`=&Tu /01&6 bN&V[ E&78N&Wh(&8 D&Xt&96UEX / >Yܰ'014?&:@EX/>Y 01 &ZEX/>Y 014&: :&Z^ #&; :&[G I&> J:&^d t&3Fq&3!&(<&<!&<U& {&<b& 3c"2c(7csvcuccr@~c5 /O\&j-O&j?c&(jMc&uEX/>Y01:v&j- ycu&u EX/>Y01i&EX/>Y013c"2cc(cv&EX/>Y 01ccs@~c|c5@R1 /\>)EX / >YEX/ >YEX/>Y  +X!Y 9' 9'/'q'']?'q'q']'qo'']'q'r'r& +X!Y&'9в 9  +X!Y014&#"!4632!&&5!32654'#536_WGXhYhlߜ"^V_dē7=A6-Y(#^$7AICcPm/EX / >YEX/ >YEX/ >Y  9| / ]0 @ ]@ P q +X!Y  а +X!Y01!#!!!!!3P3"!e:"@@+R` 9/EX / >YEX/ >YEX/ >Y 9  +X!Y +X!Y 901!&'532!&#"3267Q Ţߵ o~mo-(>8JX_O &Q cv&pkEX/>Y 01i&pR /01Av&&sug@~&uum:&Q&DO&u&jO&Dv`\&%DjN&EdR&)H HZN&IZ&3&cb&(m:&f N2QQQQQ<KH{r}+I; P  f / 0 u ' /&f3d'A[8W&k4PW]Z#g4qn2S5A_ $` r !!>B>>?g?@@c@AAIAABBrBC%CDD`DEUkĂĘĪļ1H_vōŘţŵ*AMYnzƆƒƩƻ):Qgǒǩ)@VbnzȆȝȳ 3E[rɈɛɮ8ʤʻ "9Pg~˔˫˽1AXơ̦̹̅2H_k͙͂ͫ "-DZq&7Mcu 2CYpЇОЩк /FRduьџѱ):FWh~ґҤ-8Oar~ӊӖӢӮӺ $,4Up݊ݢݹ*A\vނގޠ޲ !8Pgߖ߱6H`w9Pg~ 2D[r+=Ofwa@NRZnx ":Rj*6BNZfz ":L^jv'3?KWco{%TZo !'EoooDonXo3l?!w)?~y)z)@oowdv$} uIy{c~mo M Z@$ ZBwwlwdYGVksx0p8x8ovoql;lE'3K%:@1ol\lm^*UUW)"-$Xqn{h2@(8lD5oKPR%IBtZMA$-Aym@?]F<FB>j(y[)) \0nnmh:BG?pEH9BN9b,eW~ljP5XWf%u%oY%8(%uD3d* tDaHW[Y9r7_^Oe6"xZZ4:mm,8,W5\7G(H(O(1'O(O(3(/(8((O17Md]Q I:vcAxc@cccdc vcIcI:@c@JcBHAAJ @e^c cc!pJ>cicncFc_c ;c{c1c67 cc  @P Fc1@L>@@G;c,(05EF3GCc;I9+Gq0@quc@mcjEcjjG5EF3GCjXXrXXhXW,kh.<jZ@`7a4TN3_V_AA111mcL>8oFDDD<oDSHBf5VPc@06cnQQ(bbbbbbb<VUUUUVVVVVDtDtDtDtJDJDJDJDJDJDJD,BSHSHSHSH1111{iBBBBBzhzhzhzhbJDbJDbJD<V,B<V,B<V,B<V,B3BSHSHSHSHSHs^Es^Es^Es^EzhU1U1U1UU3mx(AFoU~U[U~U~{i{i{i{VBVBVBoPE8E8E8E8E8( ( ( DtzhDtzhDtzhDtzhDtzhDtzh#IJIJIJB]BuuQ @ccccvc@@@@@]]]]M@@@@ucccccIIIIc%t dcccccccc@@@vcvcvcI:I:I:I:Q Q Q ]]]]]]MM171717bUiVtrbIUV)(UIs_l^qB ^qB^qSuEUUx(+ buxV)<V(JDSHoBo,BSHZo8m1###K?@Z|A:obJDxSHo4D$ B VCE<V,BU'UbJDbJDBSHK<N<N'CExoxoVBZ@Z@4>)?   nXBbJDbJDbJDbJybJDbJDbJDbJDbJDbJDbJDbJDSHSHSHSHSrSHSHSHU1UmVBVBVBVBVBVBP@P@P@P@P@DtzhDtzhthththththB(nXuZozhuZ?[s_bmF@7ixsVss^E{ibJ<SU1V[D_zo3B3BzhFoFoUmo{iV)obE8( Dt; ; #IJKUbmcc17cvdccc@xcQ MdMccI:v dcnmcccccc@cxc@Q dJ>c@M1cnAvP@I:MbJDSHc1ml 05 33fP [ GOOG f :                            nt ~%'0S_g~7Y #%/EOboy?M    " ' 0 3 : < D t  !!!!"!&!.!^"""""""+"H"`"e% &(1T`h7Y #&0FPcpz>M    % 0 2 9 < D t  !!!!"!&!.!["""""""+"H"`"d%eD# (%^S~|}rsolkiaYP!ߔyMߪެߞߝߖߓ߇kTQ 222tt~lt0Rb{z|  }~+,-.   ()*+,-./012345678wxLM}~NOPQRSTUyzVWXYZ{|[\]^_opv   ~xcyo{z%&&''|(01127889@ABCIJKLQRST_`a befg}h~+ 77YY  ##      "#$%%&/0014556899:=>>??@ABBCCDDEEFOPPQQRRSSTTUXY[\\]]^^_abbco pqruvwxxyyz(,159wCL}NyVXY{[_`o>?pMM r }         " % ' 0 0 2 3 9 : < < D D t t      v    !!!!!!!"!"!&!&!.!.![!^"""""""""""""+"+"H"H"`"`"d"e%%,K PXYD _^-, EiD`-,*!-, F%FRX#Y Id F had%F hadRX#eY/ SXi TX!@Yi TX!@eYY:-, F%FRX#Y F jad%F jadRX#Y/-,K &PXQXD@DY!! EPXD!YY-, EiD` E}iD`-,*-,K &SX@Y &SX#!#Y &SX#!#Y &SX#!#Y &SX#!@#Y &SX%EPX#!#!%E#!#!Y!YD- ,KSXED!!Y- ,"E- ,#E- ,' SX@cTX"pY#SX TX"pYYY- ,@ ZX#D#DY- ++ +1(+D:, +1(+w\:#+v`K6+% +B6*+:/"+ 6,"+ [K:*+ ͠rE+ + E}iD0ssPttpu?s_ss/tOtottttu?u_uusousst_tttt?u/sos/ s? s*N`1|-` ! :  ^  ^ j r r &  @   &$ \J TCopyright 2011 Google Inc. All Rights Reserved.RobotoBoldRoboto BoldVersion 2.137; 2017Roboto-BoldRoboto is a trademark of Google.GoogleGoogle.comChristian RobertsonLicensed under the Apache License, Version 2.0http://www.apache.org/licenses/LICENSE-2.0jd(Y%>E^yy  "$%*+3466;<ADGHKMQQTX]^bbddhhjlnnpp  ((++--03_cz|  ,$%&'y 2LDFLTcyrlgreklatncpspkern $H %&'()*+,-./0123456789:;<=>eg/3579;ACEIKLXYz{}   "$%')+- }  Az<<`>P?<A.>f?v?v??`?v?vA.?  ?@@<0=A H>?< ??>??@6<@P?A.=>PA.>P@?z. B" #?v%0&<0)P>@@9?=<<0P>P>P>P>P>P>P<>>>>?v?v?v?v?vA.A.A.A.A.=>>>>>>><<<>>>>@@>P>>P>>P><<<<A.><><><><>A.>A.>??????@=@=AAAAdAdAjARARARARARARARAdAdAdAdAdARARARAdAL<<<<AdAdAdAj>P>?v?vA.=>P?>A?v?v??v?vA.??=<0?v=?>@>>=?v?v??<>P?=>?v?vA.?<?<0><>?@<<<@@@@=@<<<?v?>P>><@@<=@?v<0P>>P>><<<<0>?<@<@<@>P>>P>>P>>P>>P>>P>>P>>P>>P>>P>>P>>P>><><><><><><><>A.>A.>A.>A.>A.>A.>>=@=@=@?=P>>?vA.>???A.A.?v????`?v??v?A.????@@@@@AA.ARAdARALAjALARAdAj %*,- /6 88:?EFIJLL OO!QT"VV&XX'Z](__,-./0589:<=>FGRbcfhk  n  op""s.0t35w77z99{;;|CD}TTVVXX\^0033EEGHz{}}  "%''))/8CGMOTTeimoxx &6789:<>EHNPTVWX\bcefpr  vxyFHHJW__puww{| 89Ew:;&= &"$&&&prt&%@.08EGHIKSUVYZ]@@ @"9BE`ak3@@@@@@@@@@0#2345678MNO@@0@@@@ @ @!"@#$@%&@'(@)*@+,@-.@/0@12@34@579;=?ACEKMOQSUWY[]_acegikmoqsuw@38:;=9E3 "$2345678MNOprtw8:=9E"$prtw.9bdM  AGHIKUa"B`ak79;=?ACEY[]a@GHIKU"B`ak79;=?ACEY[]aS KMOQSUW_.9bd  Z]#qsu?'+35 !AjEFHI-  JLNPRTVXZ\^`@'+35!AjEFHI-  JLNPRTVXZ\^`8%<= 3C]"$ "$&(*,.024prt(FF% FFFF "$&(*,.024GHIKQRSTUYZ]"+6<>BSUW\`ak#  79;=?ACEKMOQSUWY[]_acegikmoqsu|| GHIKUYZ]"B`ak#79;=?ACEY[]acegikmoqsuG  GHIKU"B`ak    79;=?ACEY[]a:m  GHIJ KSUZ ]  "B`ak        13  # 23456789CDEFGL MNOPQRSZ[\]mnostuvx               79;=?ACEKMOQSUWY[]_aq s u       \^4D^&(* \^4D^&(*"Z\]^4D^#&(*qsub 8:<=Z\]  349:CDEGI]^bcdldm"#$pqrstuwyr 8:<=QRT+369:<>CEGILPSUW\]bdflmo"$ prtwy|u 8:<=QRT\+3469:<>CDEGILSUW\]^bdlm"$ prtwy|S8QRTZ]  +69:<>ELSUW\cm# qsuw|j8:<=QRT\+3469:<>CDEGISUW\]^bdlm"$ prtwy|%'+358:= !9AEGHIJMPQXbdfjlnopEFHI"$-   "$&(*,.024JLNPRTVXZ\^`prtwyz58:<=39CEP]bdflo"$prtwk%8:<=  39:CEGHIJLPQ]bdflmop"$     "$&(*,.024prtwyz: 8:=9:EGILbdlm"$prtwy18<=39CEPQ]flop"$prtw$8<39CEPQ]fopw8=9E"$prtw9QRT\  +46:<>DSUW\^m |$ Z] :m#qsu5QRT+6:<>HJSUW\m z|  vGHIKSU"B`ak19CDEFGPQRSZ[\]mno 79;=?ACEKMOQSUWY[]_a EGHIJ KSUZ ]   "BQ`ac e kp        13  # 23456789CDEFGL MNOPQRSZ[\]mnostuvx               !#%')+-/13579;=?ACEKMOQSUWY[]_aq s u       :HJQmpzOGHIKU":BHJQ`akmp79;=?ACEY[]az"Z]  :GHJcem#qsuz#Z\]4DQ^p#qsu  \v  4:DHJ^cemVz d  :HJcemVz j  :JcemV  bGHIKSpUW[ p"B`akpppppppp   ppp pp79;=?ACEKpMpOpQpSpUpWpY[]_papLxLx[  AaM:JLMXb d mn1.08@JM_ilh :ILbdlm0V~[m|^Kr Ah cIhh0  .0<8:j@IJ L?MX_c1e_i lm0n AJVXam| 1#X[:IeJLfMXbdlm  :cemJ[   :cm l[  :JXcemn1[1IJLbdlXR_:mJX2[4V[ml|nC~{y~}|t}y(} f .08}:@J|LMlX_kcei{lmn1 AVa1J  A Va1[1l1  h&%j Y\j h0X~|( dSNolH32q)cyUUf~3_akj6 w9 %),4 8>EGIILLQTVV"ZZ#\^$'()-./02347>?@ABD  F  GH.0K35N77Q99R;;SCDTTTVVVWXXX\^Y\cefgilm00p33qEErGHsz{u}}wx  "*/8CGMOTTeimoxx  "#$%&(25;BDEFJPQS_a  eghFoHHJW__bbddpuww{|t !!%%&&''(()).. // 0033448899 ::;;<<== >>EEFFGGIILLQRSSTTVVZZ \\]] ^^"  %      ..//"00334455 77 99 CCDDXX\\]]^^!!!# $ 00 33EEGHz{}}             "" ## $$ %%&&''(())**/0 11#28CG MOTT eefi$mo xx#     "  %"           % % %   !!""##$$%%&&''(())**++,,--..//00112233445566778899::;;<<==>>??@@AABBCCDDEEJJKKLLMMNNOOPPQQRRSSTTUUVVWW__bb dd pp qq rr ss tt uu ww{{"|| "        # ##       " !   !$     #         $    #"      " " " !   !        bDFLTcyrlgreklatnH .AZE CRT FRA ZMOL NAV ROM TRK      c2scccmpdligdnomfracligaligaligalnumloclloclloclnumronumpnumsmcpss01ss02ss03 ss04ss05ss06ss07$tnum*        60nL`tflq3210(sutvrwR   ; /0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwyxz{|}~    %&'()*+,-./0123456789:;<=>eg/3579;ACEIKLXYz{}   "$%')+- } q3210(ds0ut/rwR   ; v123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abdefghijklmnopqrstuvwyxz{|}~    EFGHIJKLMNOPQRSTUVWXYZ[\]^0468:<BDFJMZ|~   !#&(*,.~ *BZrMxN`H0I$'a_bc` MNI26rJd~"<N$.8J| <Fh.8BLV( &,   &,68:  &,HF  $$*06JL   $*06bd  $prt % &,!  &,79;I  $ &,KM    &,ce  $qsu &+-,. $G $X`Z\^ $Ya[]_ $fnhjl $goikm%)+-/46;=>EIKMOTV[$]^*,-./015     OX{@JMMJPPJ*  JXXJWKo6,- .//O EGFHIghijklm '(+35FGHKSTU nooIKj.Z^XUWV[Y]\OJKLMNSeff pp  .pfLNMKOeSJU^ .[]^XUWVY\ZJKLMNOSefp.pfJOSSU^ eel%<  !"#$% >zst?@ABCDyubioath-desktop/fonts/Roboto-BoldItalic.ttf000066400000000000000000005246701412677075700215270ustar00rootroot00000000000000 GDEFB,bGPOSnK.e.GSUBY(OS/2`cmapwX$Fcvt ,o)XJfpgmc&lgasp, glyf*F,hdmx_zn head`6hhea $hmtx[_P8loca3 maxp> name; g)postad,h prep9B((.d( PEX/>YEX/ >Y9999 ܲ 9 901!!!!5!(<6 }wx^^^'A/EX/>YEX/ >Y +X!Yа/01#!&676"&q-XD@^XEFYB[SCB\Xy & 9/ 9/а01#3#3}cW#cVfu%u% !9EX / >YEX/>YEX/ >YEX/ >Y 9|/ +X!Yаа а / +X!Y а аааа01###73#733333#3##3#cabbf``fF;)d*]EX / >YEX!/! >Y! 9  а  +X!Y +X!Y!а!( +X!Y016&&'&766773%6'&#7&&76 BC )* Ol ?= ''YYUxFf\- eR@bV%yzcD (6:n7/9/EX/>YEX%/% >Yа/ +X!Y +X!Y%а/%, +X!Y3 +X!Y01'&&77666776&'&66'&&76776&'&'  /fO 127O T  40:J 216O nMC8HI?N;IN;͈C7KH@P;GI?UdS&3dEX / >YEX/ >YEX/ >Y 9 9 +X!Y! 9+ 9 1 +X!Y01677'&7>673!''&&%77676&#&) b(4rp rT7Wzj Vq*R| 91>\?Z~asaKxTk>JOlSek5Q2K^2BZx9/9/01#3XW]|'c9S9/ /017&&767z0K0[?V9 Le3oĜex'_U6]P 9//01'67'780WZ?vQ6 G@d9 EX/>Y/  /01%73%'U+P3~ޕ\dvYh%w.&  /а  +X!Y01!!!!!!^.GG._D /h8 / +X!Yа/01'76773I@%)Quk^ԸZ/ +X!Y01!7!~(%*l, EX/ >Y +X!Y016#&&6C_\CC\Z*WBB]T\oh/EX/>Y01#3M}-VJ;EX / >YEX/ >Y  +X!Y +X!Y01&&'&74'&6 )1  *2p7275 JJ*4KJ' jF JdW:EX/>YEX/ >Y9/ +X!Y901!!7%7,`%TkPFEX/>YEX/ >Y +X!Y9 +X!Y901!!766'&'&>6!h z` Z啺Y|p{ܷR'zEX / >YEX/ >Y 9/]qqo]r  +X!Y' +X!Y'9  +X!Y012676&&6$'&&7!676&''g Ru  b[_Ub acXr`Qa]J޷v/jkQgs]dj6 JEX / >YEX/ >Y 9/ +X!Yа в 9 9013#!!7!)77'2c$;v$CzfEX/>YEX/ >Y +X!Y9/ +X!Y99 +X!Y901!!632'.'!676&'&&`Yy {pZMd ]_jZ8ِ|oxYerPQ-&QEX/>YEX/ >Y +X!Y9/ +X!Y  +X!Y016'&&77!&66'&&7}vL ^ /UIt& RKJz: S{ކ Zx'L;Z-5^rfYN[q3EX/>YEX/ >Y +X!Y901!!7!H%3[!-rEX/>YEX/ >Y+9+/++]o++]+q +X!Y+9 +9 +X!Y% +X!Y01'&&76%&7>6&'&66&'&6PUT  ߄ TR[ ST\^ FEOn CGNp5x;g|u|fVrzcVoxRamZQgqB(SEX / >YEX/ >Y 9|/ +X!Y +X!Y " +X!Y01'.7676!#7367765&&'&{xQ ]o 1Cwx\LHHs;QGr~ს>)GFVR"y*5`tiZP`)_&3 /01_'{3/01$VEX/>Yа/017Q.)4dmmQ9+'/а/ +X!Y +X!Y01!7!!7!*eu*ec!GEX/>Yа/01%/)q4s $#LEX/>YEX!/! >Y +X!Yа/9 +X!Y901>76'&'&6$&676"&A Y V gGb  ʽ \ZD@^XFC[#_ka^QЭjUC\UC?^R;8DqEX/ >Yа/ а / 9; +X!Yа 1а1/ +X!Y(а(/# +X!Y A +X!Y01&''&&766776&&'&7#&$&'&$67&'&.~x}I[ U~d؝ Su)%S \Z< e6n&~%F.<5i23ӎFVթsZhD  GEX/>YEX/ >YEX/ >Y 9 / +X!Y 901!!!!!m N_R,P yEX/>YEX/ >Y9/]qqo]r +X!Y9 +X!Y +X!Y013#2676&''6676'' W`ElM[o̹fpzwk[ZedYW ;EX/>YEX/ >Y +X!Y +X!Y01'.'&76%4&'&67점{As nt! la}{nSth} ;EX/>YEX/ >Y  +X!Y +X!Y013!276&' ,a6zW[5}4(+  QEX/>YEX/ >Y 9 / +X!Y +X!Y +X!Y01!!!!!!D*K+s=0wz UEX/>YEX/ >Y 9 / ]l | ]: J ] +X!Y +X!Y01!!!!!h+B0S`*[EX / >YEX/ >Y 9/ 9  +X!Y +X!Y +X!Y01%'.'&$%&&'&77!7!Nӽ Q lk }i1',ck%ztK MEX/>YEX / >YEX/ >YEX/ >Y 9 / +X!Y01!!!!!!!lm%g6f%pN(IEX/>YEX/ >Y01!!!M%s)EX/>YEX/ >Y  +X!Y01!'&&767N%'Wztzl L 9EX/>YEX/>YEX/ >YEX / >Y9901!!7!!@F%p~wEm~j)EX/>YEX/ >Y +X!Y01%!!!dj*q%YEX/>YEX/>YEX/ >YEX/ >YEX / >Y99 901!!# !H^CPL3 L 9EX/>YEX/>YEX/ >YEX/ >Y9901!!!!!k$53Z5;EX / >YEX/ >Y  +X!Y +X!Y01.'&$76&'&7^݁ \~ ` su rx t_ұ  BEX/>YEX/ >Y 9 / +X!Y +X!Y01!2#'266&'%Zva_z|Y-$;EX/>YEX/ >Y +X!Y  +X!Y01%''&'&>6&'&7691 6~ꃒ܀  Css rx _Ɲ ${/_WWsOұ` VEX/>YEX/ >YEX / >Y9/ +X!Y 9 +X!Y01#!2!6676&'']tZbuyhan"'QEX / >YEX/ >Y 9  +X!Y +X!Y% +X!Y016''$66$!6&'&'&&'&7266afdL' ?;%kw?Mzkcn_Sm@2#d|qi^;/EX/>YEX/ >Y +X!Y01!!!7!PU+CTE/EX / >YEX/ >Y +X!Y 01'.7!67E"l%|@>8189EX/>YEX/>YEX/ >Y901!!!^P1;lDP5 ` 9EX/>YEX/>YEX / >YEX/ >YEX/ >Y99 901!!!!3_+MV P6^ SEX/>YEX / >YEX/ >YEX/ >Y999 901!!!!W`.#@ 0g1EX/>YEX/>YEX/ >Y901!!%PX_5"P! FEX/>YEX/ >Y +X!Y9 +X!Y 901%!7%7!z*!gK+%!$// +X!Y +X!Y01#3!!#[>/EX/>Y01!!<y\'// +X!Y +X!Y01!!73#[#39K'9EX/>Yв9/01#3#ͤ:)qEX/ >Y +XY01!7!(u~/]а/]01'%~#3 P +tEX/>YEX/ >YEX/ >Y9 9 / +X!Y 9|/! +X!Y % +X!Y01!&7'&&76$376'&&'&6$%77'u z=2B\ ǸSz[#bE=)9zA!/5EAӦ@G1n[!06?K /EX / >YEX/ >YEX/ >Y  +X!Y +X!Y01'&'!!66'&'&ȫY) mr  }RN&|/u{>?U/uRl4+TFEX/>YEX/ >Y +X!Y99 +X!Y01%67%'&?!4&'&Nh w.޷LL+ YJrf 7 5WdmK.H/EX/>YEX/ >YEX / >Y +X!Y +X!Y01!#7'.'&77>7&'&]jyeSS wXM'ugOu*thx?;-zL4uk0R iEX / >YEX/ >Y 9//q]_q  +X!Y +X!Y 9  +X!Y01.7766!7&!76'&&l in_t=*Ny0 N({i~{\g{f~($:AJdTEX/>YEX/>YEX/ >Y +X!Y  +X!Yа013#?66&#&3#O%=\0#Kk %Зfl NNXQWR(hEX/>YEX/>YEX/ >YEX / >Y 9 +X!Y +X!Y$ +X!Y0167'&&'7677'&&'&7&'&9 ˭U%pB^nv OKsYT+tl9yi]Qw{pAv=#^qf^I</EX/>YEX/ >YEX/ >Y  +X!Y016!6'&'&!!rs trV ŽV'!lf+2EX/>YEX/ >Y а / +X!Y01!!!&636&-\A@^WF?_:CXRA>\PF& >EX / >YEX/>Y  +X!Y а/ +X!Y01'&'77&672&תDR2%XEEYXE?_: vBWR?CWPx EEX/>YEX/>YEX/ >YEX / >Y9901!!7!!׃7 7Aj'-r;A/7/EX/ >Y01!!!- fR"}EX/>YEX/>YEX/>YEX / >YEX/ >YEX/ >Y 99 +X!Y +X!Y0166!6'&'"!6'&'&!d ssqtS~spkV;{XKƻO% i|/% jh:RMEX/>YEX/>YEX/ >YEX/ >Y9  +X!Y016!6'&'&!rt soX;P' fk:,-T 8EX/>YEX/ >Y +X!Y +X!Y01'.76'&&'&nab8;VNUO~N YEX / >YEX/>YEX/ >Y  +X!Y +X!Y01'&'!%676&'&6{[cu>KH{PQ%zfqm߿>?`arlBe.`GRUEX/>YEX/>YEX / >YEX/>Y  +X!Y +X!Y017!'.'&77>7&'&Y.eqeSW wUR'vj Ot&whv?<,w8mag P G9EX / >YEX/>YEX/ >Y  +X!Y 901&#&!%632:%X} f*8+ u<: P$_EX/>YEX/ >Y9 9 +X!Y +X!Y 9" +X!Y016''$76$%6'"'&&'26v[ Ba (Oz Ne1P$YB8P! !U~XgTˡ@8DMEX/>YEX / >Yа +X!Yа  +X!Yа/013#7'&&7#73?/%\6FKW ]%.D36; ;O:FEX/>YEX/ >YEX/ >Y9  +X!Y01%'&&7!7!!xuw eVpܴA!di\.:89EX/>YEX/>YEX/ >Y901!!!40e:s: ` 9EX/>YEX/>YEX / >YEX/ >YEX/ >Y 9 9 901!##!39PP5[:W,: SEX/>YEX / >YEX/ >YEX/ >Y 9 99 901!!!! =xAR6H=:=EX/>YEX/>YEX/>Y9  +X!Y01!#"'777!5:Dx/Y'@>$#is+: FEX/>YEX/ >Y +X!Y9 +X!Y 901%!7%7!s)![%)K 'A&// 9 / +X!Y 901&'&776'&'7677%MM } ;Y/! "E@ u5xy*$q EhA`3b95/EX/>Y01#3ˬo;&/ / 9/ +X!Y90167767&&?6'7^! "H@ t@ }3A^1b966+#s lPt?3/а/ +X!Y  +X!Y а01'.'"'663267\eMyr:#;Q ×M{;>U vlBv _UCdTP%/EX / >Y +X!Yа/013!#&'&676\A?_XE@^*EZTCA\SK & DEX/>YEX/ >Y +X!Y аа +X!Y01%67%#7&76773!'&'&Nj է12// e YJ& % ץ"n3aEX/>YEX/ >Y +X!Yв9/ +X!Y ав9 +X!Y01%!76677#7376$%6'&! U++K06)ȿFe,)@mSQSj[s+;,-9 /EX/ >Y  +X!Y( +X!Y01%'&''7&767'7676676&&'&̶ȃz9sm{>oDirҍDhsՊiz}נtr˝rnvxyntyw 9EX/>YEX / >Y 9 9/а/ +X!Y  +X!Y ааа/ +X!Y01!!!!!!7!7!73!B:@I!11(%~28ss/EX/>Y+013#390;y /EX!/!>Y !97 +X!Y79 9  +X!Y,! 9,1 +X!Y1,9%,!9!( +X!Y01'&$7!32676''&&767&76$77!6&'&%676'foW_ nima ` Cb\g^3UpZO_f.ou`[\LDb9FÔmq[eSHua]:`L7_y7+8]n< / +X!Yаа/01&66&%&676&LrRM95SL98QK87TR4MK45KG74MI67JH]*<EX0/0>YEX9/9 >Y909/] 099 /  ] 9 +X!Y +X!Y 99 +X!Y0' +X!Y01'&&7766'6'&7%$76&'&66$'&$A ϛ ]}JABg㕡#gď Ǜ۹Uۤn)I[~(դni\J%{EX/>Y&9/а/9 9 / +X!Y 9@ *:JZjz ] +X!Y  +X!Y01'#"&566377&'&'66%277#kYpi{j Nxy 5 E\PTf -HSxds}7.Kg n};,0??4&,<}&Wv%/а/ +X!Y01#!7!~.,v]!;DEX/>YEX/ >Y +X!Y +X!Y#9#/%9%/%%]<#%9 9/ +X!Y01!7!a 1EX/>Yа/  +X!Y +X!Y0166'&&732676&#"ohoi403T 2/3Wujtm-HJ91IP A /EX / >Y а  +X!Yа  +X!Y901!!#!7!3!7!?&99&E6Z%HlWQTEX/>YEX/>Y +X!Y99 +X!Y 9901!7676&#"66O_ $$aNPO>$*p~ou7T`$zEX / >YEX/>Y 9/r/] ]  +X!Y 9# +X!Y#9#9 +X!Y0136676&#"66'&&'32676'#^Q6I .$P::_4J n^q1,"%<jzucvA[YEX/>YEX/>YEX / >YEX / >Y +X!Y017!#7'"'!gXj|]LW:SlE]0F + 9EX/>YEX/ >Y901!'&&763Z4*9PW / +XY01&676#&ZDA_[E@^C\VCA_S/G 0/EX/ >Y +X!Y 9 90177676''7>?o b#+ @ W>sS=A9EX/>YEX/>Y9/ +X!Y901#7%7 _q(s{ 5EX/>Y9/ +X!Y +X!Y01'&&7766677'&'&E ѕ  7C8Ln qMn˕Bǘ?H$$=Iqde1od|&'Q' EX/>Y01z''AEX / >Y01'' 3EX / >Y01{IQ$B/EX"/">Y +X!Yа/9  +X!Y90167%'&&767767#&'&636TVD 4EGc ˺ VY\A@^\A@^zI9jn@TXW̱yO7EZSDEZSl{EX/>YEX/ >YEX/ >Y9/ +X!Y +X!Y 9 /  +X!Y +X!Y901!!!!!!!!!,Y*/*#5X*IMv[( 8/ 9 / 9 9 9в 9  017a\997Ȝ6  'REX / >YEX/ >Y$ +X!Y  +X!Y"$9"в$9!01&''7&76$7&'&6^|pŠ'+}cʷx$* ?3e#3XRF9:PP}(f@HH6( Y9 EX/>YEX / >Y 9/ 9/  +X!Y +X!Y01#'!2676&'// 3LqdaǍo Lwj_p{.O,/09EX/>YEX/ >YEX/ >Y +X!Y+ +X!Y01!!6$'&'772676&&'&7>76&'&4ծ  Z)x5 ͦqLYtHn + U=?RfMɝ.Q>%.aq597LE0`<.2-OH'>Rvv tS)3;۲<=9-а6EX/>YEX/>YEX/ >YEX/ >Y9 9 / ] +X!Y а/ ]9797/7/7q7]  +X!Y$ +X!Y* +X!Y . +X!Y401&''.76$376'&'&%6$6!67%277'&!76'&cmjT eFj b~ hhQH=B`x&c FnUqSdYEX/ >Y9/! +X!Y' +X!Y01'.7>&''7&'77&&#&677WD"h ىlV>Qlߔ<d=p WUeIJ4}߂}J}{YC*5p3)*m~7|G@/ +X!Y +XY +XY +XY +XY01!7!&636#&&636#&(ZEC\[CD\ZEC\[CD\;B\TZSB\TZSr9!+W(,-9(а(EX/>YEX/ >Y' +X!Y%аа +X!Yа$01667'&''7&'&&#&%6'6767[Ydr WTgw d "l !ֆ:S׃9$43 02L`f 9 /EX / >YEX/>YEX/ >Y 9 9  +X!Y +X!Y01'&'!!676&'&67{^bRlqKHxRR%zbpw>?`arj>e.$%&9"/EX/ >YEX/ >Y +X!Y99/9в9/9/ +X!Y" +X!Y01##7'&&'&7667#737!37&'&x]3 1IHwYM'v}>t9Y ~u췇0cqwl$mEX/>YEX/ >Y9/9/а +X!Yаа +X!Y а а013#!!!#737!!7!!7!xwwmlڶnn(')5)%?5!Ȯp:EX/>YEX/ >Y01!!!3:: `EX/>YEX/>YEX/ >YEX / >Y9/]_] +X!Y 901#!!3!!{EHHYy'q:i ]EX / >YEX/ >Y 9/а +X!Yа +X!Yа а а 017!!77!Tj*qop%=>|%& KEX / >YEX/ >Y 9/а +X!Yааа а017!77!p}..+,F[9EX/>YEX/>YEX/>YEX/ >Y  +X!Y 9901'&'77277!!GR';#%s7  FRc9EX/>YEX/>YEX / >YEX/ >Y9  +X!Y +X!Y016'&'732774'&!p޲DR%5*} rtna;55JIY:K$EX/>YEX / >YEX/ >YEX/ >Y +X!Y9/ +X!Y +X!Y +X!Y  +X!Y01!!&&7!!!!!!7&'"Wt.+qIm+t=.)DzNyZ]0 x+Fz ðC?jy:S!09EX/>YEX / >YEX/ >Y 9в4 94/4]4/4q +X!Y +X!Y 99& +X!Y- +X!Y 1 +X!Y016766!7'"&''.7!6?6'&&!6'&&Mk5ƄR_]@D|j6؍^RMlgĀNc D!㗸NE}ފi~S<>MFebpC9AB$9@ , 3 9EX/>YEX/ >Y  +X!Y013662&#& YEX/ >Y9/  +X!Y +X!Y +X!Y01&&776'&&'&'677Zh pjBK,t 5ƢTFmxBB~_d;V_HHZcEX/>YEX/>YEX/>Y +X!Y  +X!Y аа +X!Y01##"'7327#?662&#"3ɌЩEO/*v! 7l(2-HY fi] PE^T1(QEX / >YEX/ >Y 9 / +X!Y  +X!Y$ +X!Y01.'&666677'&676U݁ 2}~BJU@j rx"p/`dXz'a_Uwfұz()QEX/>YEX/ >Y9/ +X!Y +X!Y& +X!Y0166766677'&7!67765&&'&B^Ny1: ki+ǑTMgSNk!xM je-n/05ap)/7asSV9EX/>YEX/>YEX / >Y 9/ +X!Y  +X!Y016677'&7!67N+jri"%| >81<uc9EX/>YEX / >YEX/ >YEX/ >Y9/ +X!Y +X!Y01!7'&&7!7!667u |tw eV!IJpٷ@!cigrF: 0 9EX/>YEX/>Y  +X!Y01'&'727DR%.0 :P,Ph !9EX/>YEX / >Y 9/ +X!Y9  +X!Y +X!Y01'&77!6&'&'667!Ab ua\AF XDN ףj}SYEX/ >Y  +X!Y017#"&547+-x 23AX^rHP5)pYmC/а//] а / +XY?q +XY01#".'662767a3f3L`/o1Mv9_ t<_;/а/]/а/а//01!##k -pg -/@ 0@P`p ]а/а01&62#"&732676&'"ndlJLhl!3 6KiaGLd`D)0 ,0C!/]/а/]01%$4 !/]а/]/01!#J C 5/аа/@ /?]9 9 а /0177676''7/^ V.X  76 u C7//а/а//]а//01!!#!-%   /]  +X!Y01&636#&\@>`\@A]@PI?APM@A/а/9/01!# ۴AND /а/а/]_o]/  +X!Yа а/01!#&676&%&676&ЛL96SL85UUL86SL98R94MG76KF77KGnKIWx,EX/>YEX/ >Y +X!Y01!!!C30EX/>YEX/ >Y +X!Y901!!%0/q{PaV.$m %&9 а EX/>YEX/ >Y9|/0@] +X!Y +X!Y! +X!Y01!7!.'&6676&'&7n(v݁ 2}녑ۀ _ qw rx _p/`_ұ1EX/>YEX/ >YEX/ >Y901!!!0P mEX/>YEX/ >Y +X!Y9/o]q]qr +X!Y  +X!Y017!!!!!!*B)"9}+TE9EX/>YEX/ >YEX/ >Y +X!Y01!!!!!~C >EX/>YEX/ >Y +X!Yа  +X!Y01!77!!=Z\*+I:+Q#^EX/>YEX / >Y 9/в 9 /а  +X!Y +X!Yа 01!7.76$77!&'>i %%l%%Rezv&wnE y]  tkf9EX/>YEX/>YEX/>YEX / >Y 9/б +X!Y  +X!Y016!!&77!!d3P'O&LLM%NVQ%v8.1y#@098_6 "[#$9EX/>YEX/ >YEX!/! >Y  +X!Yа +X!Yа 01%66'&'&!77&'&$7!xu7 m& -w > 5ǽeP F2=Q+|,-9$EX/>YEX/>YEX/ >YEX / >Y +X!Y 99# +X!Y( +X!Y017'&&''.'&776677&'&=z %4=RsDPfT~M3iTS(hI$:4>3RQZOet><,~=cdJj'j ()9 '/EX/>YEX / >Y' 9|'/% +X!Y%'9 +X!Y  +X!Y01'&'!6$6676&'&326'&&''7 \c̒|Z(icn LEVHx|PAqѮx+yM0s`N`u`:?Gi_B:8 9EX/>YEX/>YEX/>Y901!!!B2HPXc)M(.e /09 #EX/>YEX/ >Y +X!Y*9* +X!Y*9" +X!Y0166&"'&7667'&&676''&'6i{`Mb ]'%ӠBK%TMi}nٚ-28/@/x&+#ctC1,F'!P+wEX / >YEX(/( >Y( 9/q/q] +X!Y9  +X!Y9(  +X!Y# 901667&&5>%4&#"'"367%'.*p~CIzviSJNt "ew ^JSvނs*X0$pAcPSd7:E9dGB6GC=mPNKzRL9 /EX/>YEX/ >Y +X!Y9 +X!Y01'7676/$677%7R -Cy$D 2#W ) FY:EXOw&H=5 baRT9EX/>YEX/>YEX/>YEX/ >Y9  +X!Y016!6'&'&! mob;پT$g`:hX&t$'(9$а$EX / >YEX/ >Y 9|/]0@] +X!Y +X!Y # +X!Y01&&'&7!7!7654'& +2 ݺ # y A IJJ1KI߉7O> ,C2^.@R: )EX/>YEX / >Y +X!Y017'&&7~6:F\ :36 S9/EX / >YEX/ >Y  +X!Y 99 +X!Y0133'&'!'&&76X"117V4&=9CSW8+k33'Bv6.b/09/EX,/,>YEX/ >Y, +X!Y,9/  +X!Y +X!Y& 901&#"'"'6676/.7667&&76$2Th \b*zs8yA/86H KXؑ'MHAH{:!CYOwAI#1 8qp9&}X4_:^ 9EX/>YEX/ >YEX / >Y +X!Y  +X!Yааа01#7'&&7!!#7!Z67F[ Z喬&]36)]`T!Y"#9EX/>YEX/>YEX/ >Y9 +X!Y +X!Y01676'&'!6776'&'&f#sc{Xd+vd  Y{@둘g{EE|xWU4)T >/EX/>YEX/ >Y +X!Y  +X!Y01!6'&'7676&'&&77jd y#E $&ȷ5N輸Y+}80BXQy$H@%$ C :);!>EX/>YEX/ >Y +X!Yа +X!Y01'.77636?4&'&>4ۍ_6BSMhMHgPZU'/6`r_[lU3:>EX/>YEX / >Y +X!Yа  +X!Y01!7'&&7!7! Z<$= R\U)R&BG =/EX/>YEX/ >Y +X!Y 01&''&&7mQ : p:b<pO"}'"M#N/EX/>YEX/>YEX/ >Yб +X!Y а! +X!Y01&76766!6674&}c23 flYSJ2 %D\iy}x8B/%Оx /4"=O/EX/>YEX/>YEX/>YEX/ >Y +X!Yа0166'&'!&7!ɝ< !2 YYSS:#zvq|."?;79XB">'j()9EX/>YEX/>YEX!/! >YEX/ >Y! +X!Y!9 +X!Y!9017!6'&''&&''&&547=|^ p0?*8m7& .:hdGfqr9 3:|wUqboiѸAP+dEX/>YEX/ >Y$9$/ +X!Yв 9 +X!Y$а/( +X!Y01'.77%677&7>7%76'&w&ҁ`' '][Rr rq-c m3<-> @V~ۂe{u]0 g)%w7)ZE@s9@9EX/>YEX / >Y 9б +X!Y 01662&#!&'&'6cAfBT4!E-jQY8+ CA?ׄtHO)?A:(e )*9 "EX/>YEX / >Y +X!Yаа в  9  +X!Y 9%01''&&''&&7477!'%677!6u=woקux&QQԋ TSr!)u1lkxa@2dEX/>YEX / >YEX/ >Y +X!Yв9/   +X!Y +X!Y01!676676&'&!!7!6F}im { fhZu+P!mƆvgbrX#O|/EX/>YEX/ >Y +X!Y +X!Y  +X!Y01'.'&76%4&'&%!67쟒y=v os;+V mh}ri$Vx@Cv pEX/>YEX/ >YEX/ >Y9/  +X!Y +X!Y +X!Y +X!Y01!!!'#776677!6676&':Ea#"{)Sweb~ ~~"r^9EX/>YEX/>YEX / >YEX/ >Y 9/ 9/  +X!Y  +X!Y +X!Y01!!#!!!!6676&'4j%Whi%Qxj^JfY-lbw_9EX/>YEX/ >YEX/ >Y +X!Y9/  +X!Yа01!6!6&'&!!7!<>p\JK_zE|+9?ys^  I /EX/>YEX/>YEX/ >YEX / >Y +X!Y01!!!!!!%4&a>>HAPh ^9EX / >YEX / >Y  +X!Y 9/  +X!Y  +X!Y01!!!!2676&'1Nt de@o[oZ9 /EX / >YEX/ >Yа +X!Y аа  +X!Y01!!!67!3%!>>X\VӦuQfV~JSAFEX / >YEX / >YEX/>YEX/ >YEX/ >YEX/ >Yа/]o]@] +X!Yв9 в901#!#!%3!3!!,ggfL]ԗf%f}(QQKKN+V|+/EX/>YEX/ >Y +X!Y+* +X!Y*+9# +X!Y016676&'&>'.7!676&''7o h_[i a[ u$l_sdb)Zn^N[\S|hiwx/klkSbm[gb  EEX/>YEX/>YEX/ >YEX/ >Y9 901!!!!W0ڥ1%PLKHEX/>YEX / >YEX/ >Y +X!Y   +X!Y01!!#776677Fz#,x'Pi~hD9EX/>YEX/>YEX/ >Y9  +X!Y01!#'72677!xJVZ͉qHE`+&+l>M? P? )]*+9а"/ / 9/ 9 / аа " +X!Yа! +X!Y0172'#!7"&76$37%"%266'&&'6 xԫ))v'*~Z xb+磬ٚ>|er  < /EX/>YEX/>YEX / >Y +X!Y01!!!3!!%4&z>AA_G9EX/>YEX / >YEX/ >Y9/ +X!Y01!'&7!7j{K%J_zjzP*>ys IEX/>YEX/>YEX/>YEX / >Y +X!Yа01!!!!!6&%AAPU /EX/>YEX/>YEX/>YEX / >Y +X!Yаа а а01!!!!3!!6&%ջx=AA8^ a9 EX/>YEX / >Y 9/  +X!Y  +X!Y  +X!Y01!!!!2676&'[~MNs de@r[o r9аEX / >YEX/>YEX/ >YEX/ >Y 9/  +X!Y +X!Y01!!!2676&'!!'Nt de-%@o[oP O 9 EX / >YEX/ >Y 9/  +X!Y  +X!Y01!!!2676&'ܿ'Nt de@o[o#"L| /EX/>YEX/ >Y +X!Y  +X!Y +X!Y017677!76&'&66$'&'Fptj*$7+pl{ $<冀LW!%#n| /EX/>YEX / >YEX/ >YEX/ >Yo ]  +X!Y  +X!Y  +X!Y01&#!!376&'&7Nd%p;y} ` su rx F |0m_ұt LEX / >YEX/ >Yв 9/ +X!Y9  +X!Y01!#!&76$3'[;Qs rPx=g)IEX/>YEX/ >Y9/9 +X!Y# +X!Y01'&&77'7776776&676'&~W ^0(JـBq UNgi4X)UaB3:x|/EX/>YEX/ >Yp]@qpq]@P]] +X!Y9 +X!Y +X!Y013#676''676&''d^iإ&Сѝ 6Q:.ITyUmcc.5:,EX/>YEX/ >Y +X!Y01!!!cMP::]9 /EX/>YEX / >Y +X!Yаа  ааа +X!Y017667!3!!!%#/k}Fa89aTj":^mE-b:EX / >YEX / >YEX/>YEX/ >YEX/ >YEX/ >Yа/] +X!Yв9 в901#!#!%3!3!!CEFrOnFF^!pVooFllP'sEX / >YEX/ >Y 9|/]@P]  +X!Y а /& +X!Yа/  +X!Y01676&'&66'&&'32676''7 7>=` \jHDw燰PGHj !x0@8<Ju5!}NcW:AJ>wQ: EEX/>YEX/>YEX/ >YEX/ >Y9 901!!!!.#q;ܼq:x:y: XEX/>YEX/>YEX/ >YEX / >Yа/] +X!Y 901#!!3!xEHY,wBq:iQ:O9EX/>YEX/ >YEX/ >Y +X!Y  +X!Y01!##7767QZ7ɚv34`:PaO: YEX/>YEX / >YEX/ >YEX/ >YEX / >Y 9 9 901!!#!!hptXXg:O: TEX/>YEX / >YEX/ >YEX/ >Y 9| /@ ] +X!Y01!!!!!!!IIL[K`:NQ:9EX/>YEX/ >YEX/ >Y +X!Y01!!!!!P:H(:2EX/>YEX/ >Y +X!Yа01!!!7!)RR.`e ,6`/EX/>YEX/ >YEX/>Yаа% +X!Y/ +X!Y)а%301!632'&'!#"&''&77654'&777&#& @E[[@@ )BITTV+<88H7y* r\: </EX/>YEX/>YEX / >Y +X!Y01!!!3!!]t8:QAf>:G9EX/>YEX/>YEX/ >Y 9 / +X!Y01!!#"&7!7!EKA79 H^<\_VV^RK: IEX/>YEX/>YEX/>YEX / >Y +X!Yа01!!!!!ٓt:QQ::L /EX/>YEX/>YEX/>YEX / >Y +X!Yа 01!!!!3!!֓t9:QQA:J: a9 EX/>YEX / >Y 9/  +X!Y  +X!Y +X!Y01!#!!6676&'sF7 5Ws IC:̫PSHFG6: r9аEX / >YEX/>YEX/ >YEX/ >Y9/  +X!Y +X!Y01#!!6676&'!! `4Vs IC̫:RIFG: : R 9 EX / >YEX/ >Y 9/  +X!Y +X!Y01#!!6676&' `4Vs IC̫:RIFGRl|/EX/>YEX/ >Y +X!YP]]]99 +X!Y +X!Y01&>'&&7!677!6& Mc ~xZߵGFT}, KeZIpgUiupyS$i|/EX/>YEX/>YEX/ >YEX/ >Y +X!Y +X!Y  +X!Y0136$'&7!!6776'&O`cw LEQPlm>*O:k_pXI,;SEX/>YEX/ >Yв9/] +X!Y9 +X!Y01!#!&&7>3',B;KMކ F>0Up:v/Xr[5GQF#!/EX/>YEX / >YEX/ >Y!]/!]!]!9/ +X!Yа/  +X!Y +X!Y"а"/01#6'&'73276'&'&!#737!34s۲ER%5*} w trVΗ 4&!le'Ti|/EX/>YEX/ >Y +X!Y99 +X!YP]]] +X!Y01%67%'&7!6&'&%!Lm z3MIW|)3  VMsf/8Xdw)(`:}  9 EX/>YEX/ >YEX/ >Y9/  +X!Y +X!Y +X!Y +X!Y01#!#'#7767!6676' D6ۮh +4`d0[n äPjODu g:9EX/>YEX/>YEX / >YEX/ >Y 9/ 9/  +X!Y  +X!Y +X!Y01!!#!!!!6676'ZI< LK0[o ģP:PCu e/EX/>YEX/ >YEX / >Y/]]9/ +X!Yа +X!Y01!6!6'&'&!#737!!.rs trVЊ!V'!lfQ: F/EX/>YEX/>YEX/ >YEX / >Y +X!Y01!!!!!ٓ]?>ļ:Qg:T~"a#$9EX/>YEX / >YEX/>YEX/ >YEX / >Y9 +X!Y01'&&''&7!67!~m,&JB^}'KC,"TL *+IT{} +*IT@i: a!"9EX/>YEX / >YEX/>YEX/ >YEX/ >Y9 +X!Y01'&''.7!67!7ikPzPjj_Tnkj;:)p:yՃ|G ~}s}KIU t9EX/>YEX / >Y 9/ +X!Y 9/ а а  +X!Y +X!Y01#'!#73!36676&'3 449Sx DE:ԫ:(=VUFP &'(9EX%/%>YEX/>YEX#/# >YEX/ >Y%#9|/в%#9  +X!Y +X!Y +X!Y%#9"01%4&'&%!67%'&&7!!˝X] nt>)f lq%롧hm%\1?Y~* S&|/EX&/&>YEX/>YEX#/# >YEX/ >Y]@P]]в9  +X!Y +X!Y +X!Y9!016$!4'&%!67%'.7!!vGĴSz+F!JAOk zb Nz忸p**JPXKqfzك=: WEX/>YEX/ >YEX/ >YEX / >Y 9 / +X!Yв901###!!!!RhGJK0@]]Ps: WEX/>YEX/ >YEX/ >YEX / >Y 9 / +X!Yв901##!!!''V-6>I"'9 :k&}EX/>YEX/>YEX/ >YEX/ >YEX / >YEX/ >Y9/а +X!Y ав901!!!###!#!!!;0P]]]:EX/>YEX/>YEX/ >YEX/ >YEX / >YEX/ >Y9/б +X!Y ааав9013!!##!'!!''|S -O/7@ї-'8r  :k|9 EX/>YEX/ >YEX / >YEX/ >Y9/а  +X!Y ав9 +X!Y01!6&''!'"!6$%%%77Nm]aaV96%Qlh+hoPh@:t9 /EX/>YEX/ >YEX / >YEX/ >Yа +X!Y аа +X!Y01!77&&'!!7667%'םDPLJ-# ɰ [ᱵ9>=w ǵ?(" #$9 "EX/>YEX / >YEX/ >YEX/ >YEX/ >YEX/ >Y 9 / +X!Y  б +X!Yав 9 ! +X!Y01!67!!!%!6&''!'"%D9Bb%q77Nm]``W9oYatkQki+klPh^:"e /EX/>YEX/ >Yа  +X!Y а  ааааа  а ! +X!Y01!767!!!%!76'&''!"' YEX/>YEX/ >Y +X!Y+]o+]+* +X!Y*+9" +X!Y1]13а3/33],139.а./012676&'%7''&&76632676&''777#'m \_* fl 9;K ]#]ɫ@jrz*`fZKQm,p6/N5$iXdmQ &/|&/,/EX/>YEX/ >Y +X!YP&]&q&]&]&q&% +X!Y %&9 +X!Y,],.а./..]',.9)016676'!7##&&76633276'#777#5^l %TZ sXvѭ [rH?d\!tHa]70pv^9 q!"9аEX / >YEX/ >Y +X!Y 9|/cs]0@] +X!Y  +X!Y01.'&$'67!$%76&b \ہ `=u-qdstZ _Y'4R]EX/>YEX / >Y +X!Y 9|/@P]  +X!Y +X!Y0166'.7&%6&79v`^/V1Sˬ[YU KtZrnrl|qG9EX/>YEX/>YEX / >Y 9  +X!Y017663'!%?&>Nɇ.Z6$U]мuiSQ@EX/>YEX/>YEX / >Y 9  +X!Y01732'"!!*;5//R6VtUPs:`x*(&JEX / >YEX/ >Yа а  +X!Yа# +X!Y 01'7.'7%74''7766y\T N66 {~^d#ml!aF`dYj,;$PEX/>YEX / >Yа а  +X!Y +X!Yа"01677'7&7676''77C ! \ (. &ln"np"%L A9dgOGKtqU$*0FNEX/>YEX/ >Yа а +X!Y  +X!Y#9)а0а=а=/2а2/8а8/A +X!Y2F +X!Y2KаK/NаN/01'&&''&767"67!6'&''.#"'766677z[Mf-N *a~OIC]89KD-LYEX / >Yа в 9 +X!Y  +X!Y  9%а,а7а7/.а./3а3/; +X!Y.@ +X!Y7DаD/HаH/01'&&''.776$77!?4&'.''"'766677h ~W#xM"Z&m#=;BH:'i~l=rss=J M ɻqMD{ԀC } G?AN^i'kq&.$RA^^xZS"*rEX/>YEX / >Yв 9  +X!Yа/а"а"/)а)/*а*/$ +X!Y*'а'/01'&&''&7!67!%7!!#7l-&JB^}'KD-l["TN *+IT{} +*IT煅@i!)mEX/>YEX/>YEX!/!>YEX / >Yа  +X!Yа(а(/)а)/&а&/$ +X!Y01'&&''.7!67!7%7!!#7ik_'zOjjaVlkj;:)p :KCzւ|G}r}KITIL9/EX / >YEX/ >Y 9  +X!Y +X!Y01!.7%6&'&E{G-,Y^h|1[]_$Iy<?TE9/EX/>YEX/ >Y +X!Y +X!Y01!&7!6&'&SF6ߵHBc d&;[a)S/4>/EX/ >Y01'#'7'77'.S(R TVrrutG`q/ +X!Y01'7!7+' ~l0 /а/ +X!Y а/  +X!Y01'76'&#72>euU?F>[Fd]lg(]RJFk /а/0173F &M뀲h8>_k /а/01'773ROQnM #/;GS_?/K/W/3/EX/>Y  +X!Y?б +X!YKаKQ +X!Y!аW'аW] +X!Y-а39 +X!Y?E +X!Y01662'6#"6632'6#&662'6#&662'6#&662'6#&662'6#"662'6#&662'6#&l[UpjNVmZVrkNTk[YlkNUykZWnkNT/m[UpkNU@m[UpjNVk[YmjNU(k[XokNVXffZfeVggYfgXfhWfgWgfYfgXffZfgYefZfeXfiVfgXfgXfgc "'9!// //&/EX/>YEX/>YEX/>Y01#'37%%77%'%'7i|i}<>HAcA.sa?`@9aP XC= WCQRV8:1 g1&'59MEX/>Y 01g&'ZEX/>Y 01 Ow9EX / >YEX/>YEX / >Y +X!Y 9/ а а  +X!Y +X!Y01#'!#737!36676&'T ݙ!l9Sx DEԫ~VUFP O9EX/>YEX/ >Y9/ +X!Y +X!Y01!2'6'&&'%367'7Z [ec~G [GP?@]e҄N4Ymg@J7N`R#p$%9EX/>YEX / >YEX / >YEX/ >Y 99 +X!Y +X!Y01''&'!%6%6&'&7'76!MgGfa[cuJH|PQ#w0DTgCCMu3qm>!dplBcKnz& 3 9EX/>YEX/ >Y +X!Y01#!!!% }B Cuu,EX/>YEX/ >Y +X!Y01!!!!'7P:;^9 /EX/>YEX/ >Y +X!Y 9/   +X!Y +X!Y01!327>'&&'#!!BqhJ sghxls:L9 /EX/>YEX/ >Y +X!Y 9/ +X!Y01!32'676&''!!`N)  ikp;SP֞A`n}Q:F&Q:&Q&,Q:&Qb]EX/>YEX / >YEX/ >YEX / >Y 9/ +X!Y9а01 !'#7#!!333 6/)Mg'gM-5!^VOP:aEX / >YEX/>YEX / >YEX/ >Y а/]  +X!Y 9а01!'#7#!!3733Y/$JFHK")*:q:icEX/>YEX / >YEX/ >YEX / >Y9/ +X!Y +X!Y 901#!!7!3!!ïg4)eyxZSG@b:gEX/>YEX / >YEX/ >YEX / >Y а / ] +X!Y +X!Y 901#!!7!3!!&wE)GX,xBqOi&,Q`:&Q` _EX/>YEX / >YEX/ >YEX / >Y9/ +X!Y +X!Y01!!!!!!!6f)lm%bN:p: fEX/>YEX / >YEX/ >YEX / >Y9|/@] +X!Y +X!Y01!!!!!!!ZKe*II`:k9/EX/>YEX/ >YEX/ >Y9/  +X!Y +X!Y +X!Y01327>'&&'#!!!!&rqhJ sgg~AxlsCS;i9/EX/>YEX/>YEX/ >YEX/ >Y9/  +X!Y +X!Y0132'676&''!!!%> euziL۞>`mKP:U)5yEX / >YEX/>YEX/ >Yв9/  +X!Y +X!Y) +X!Y,а3 +X!Y01&''&$'&7777&7736776&'&ݝJ]*Ga# xH!'  ,RP %%78) ;NJMK1־;L@ 璅YEX / >YEX/ >Yа/9/   +X!Y +X!Y& +X!Y)а/ +X!Y01&''.7767&'&776636?4'&t~r # ΘUITYEX/>YEX/ >Y +X!Yаа +X!Y а 01!7!!!!3!!))ª3&z=+A_V:M /EX/>YEX/ >Y +X!Yа +X!Yа 01#7!#!!3!!+))k]s8PQA&QFft:&QGkKEX/>YEX / >YEX / >Y 9|/а +X!Y0137!!#7&&7.J;7z%iKo01J<0'{#P*xO:HEX/>YEX / >YEX/ >Y 9|/б +X!Y01!!#7&&7!37!C["7<D43Y^V ئV'S"G9EX/>YEX/ >YEX / >Y9/ +X!Y013!6!6&'&&jJJ^zrz@ytj1#,g-.9&EX/>YEX/ >Y(9(/ +X!Yа( а +X!Y$ +X!Y01&$77&&76$%7&!6'&&Ox ~N)n  uk5/!g0ܲ>l*~SSNBfsBDX:[gS%tEX/>YEX/ >Y!9!/_!o!q!/!q!] +X!Yа! а +X!Y9 +X!Y01.7&&76$!7&!76'&lswINSji`v=T{- ˠ;f*{g}\f|pu($veY/EX/>YEX/>YEX/ >Y9/ +X!Y9 +X!Y017676'&&'%!!3!BJ"odg'fT~3  rrivI:L/EX/>YEX/>YEX/ >Y9|/  +X!Y 901'676&''!!3! ޽ip|EHI<xS3㚖E[g|q:ig&Ug:&[F 9EX/>YEX/>YEX/>YEX/ >Y9|/0@]]]@Pq  +X!Y +X!Y01!!'&'7727!!9l4k&GR&7*~hhk5cGL:m 9EX/>YEX/>YEX/>YEX/ >Y9|/@]  +X!Y +X!Y01!!#&'7327!!KZKݯLJ!3-JI:N`:g&,Yg:&Xg&1g:&CI"a#$9EX/>YEX / >Y 9/ +X!Y  +X!Y +X!Y01#&&776'&&'&'67ڧi p- Íį6ƢTFmxBF._d;V_%V/EX/>YEX / >Y +X!Yаа  +X!Y +X!Y01%7!'&&7!676&''7@+$a "YTgfz#!jQdn[xrv:I //EX/>Y +X!Yаа  +X!Y +X!Y01%7!'&&7!676&''7)"^ \Wgh|#Ny jUfq_z.G&U&&T]A:&O'&qaT P ]p ]01G^&<TG,:&\T* R9EX/>YEX/ >Y9/  +X!Y +X!Y01!%.766$3'W&l }Sve`Pzӈz0mfS!HEX / >YEX/ >Y 9 /! +X!Y а  +X!Y01%.766$3!36676'%%'4o  W%9xRxdbxԈx?rYbhjbD\!./09"EX/>YEX/>YEX/ >YEX/ >Y9  +X!Y99$ +X!Y+ +X!Y0166!6'%&&''&&'&&'&77L~Un,(z  0dglWsA^409dddc_]W۹:YOQ\>(V|/EX / >YEX%/% >Y +X!Y   +X!Y9% +X!Y016''7 76''%776''&&7L+ !+% qp >s ﮚ Ҍx: vEX dddc[:*X|/EX!/!>YEX/ >Y +X!YP] +X!Y!  +X!Y(901%676'&''"&776'%7676&'%72.  } V% =?#Yj !1 lmONNPp}vLYr7>Mt23y&Y|//EX / >YEX/ >Y +X!Y   +X!Y9 +X!Y0172676&'%73'767&?6'&'y(za_# dV *єA>5 Aldagr=)weOjgG?}0u-)y:$Y|//EX / >YEX/ >Y +X!Y   +X!Y9 +X!Y0176676&'%77'767&'&776'y"Yl CH  ^aI3 *ѕR/ E=8FQ}3&ORLS/YEX / >YEX/ >Y +X!Y +X!Y  +X!Y 901!#776677!6776''&&7;kEn#"})Oo h~2d>dddcԺ>:"e #$9EX / >YEX/ >YEX/ >Y  +X!Y +X!Y +X!Y 901#'#7767!6774''&&7E7ڬi,4`w Zau   ~Mj<f4_^^^ҹT^EX/>YEX/>YEX/ >YEX/ >Y +X!Y9|/ +X!Y016776''&&77!!!!Mq !h&l0k1c *dddc׹k/:jEX/>YEX/>YEX/ >YEX/ >Y9|/@]] +X!Y +X!Y01!!!!6764''&&7JJeIx ZPo  |V:[<f_^^]س5#I$%9EX / >YEX/ >Y  +X!Y +X!Y 901&&76$&'&676'&'V{**ʔSx( fk XE֮BBm~kSRVU/QF !9EX/>YEX / >Y +X!Y 9 +X!Y01%6'''&77>&'"QR rӇn=]n dc}fei/+?=35\l?O9EX/>YEX/ >Y +X!Yаа  +X!Y901!7!!76''&&7(_+_+gNx2c dddc׹j:O 9EX/>YEX/ >Y +X!Yаа  +X!Y901!7!!6'&''"&7)r)O5+gy  - dzP&-:ϟHEnԹ@+UEX/>YEX/ >Y +X!Y# +X!Y*9|*/@*]+ +X!Y01"67%'.76%&&76$77!6&'& xq%w/X` );znb|fn)rrlTceW~kpxg4[ izL^eWVaG&TsG:&TyqM! /а/а/а/ а/017&&7\6PHC;UuO9O*RZZT@FL@hT@Fff@P`'EX/ >Yа/а/]а/01!7!7!7!vu`n2"EX/>Yа/01#76.H$"RDREX/>Yа/01'6773g!"Tp6 /а/01'67739`"$Ru /а/01&&77 #GH MHKL`"&To&^/ аа/01'6773'6773<`('i(&QQv\D LEX/>YEX/>YEX / >YEX/ >Y  +X!Yа01!!!7!!!&Q;;WIIv`k~EX / >YEX / >YEX/>YEX/>YEX/ >YEX/ >Y +X!Y +X!Y аааа01!!!!7!!7!!!!!BA%Oa%O;;W%`W`gvi / +XY01'&&5766cwecw|f(i~^"l1>,&1,&'e9/ +X!Y01&>36#.f*:!!9,*:! :+l"9)&7!"9)&7#'5CQ$/&/EX/>YEX/ >Yа/а/а/ а /+ +X!Y2 +X!Y+9а2@а G +X!YN +X!Y01666'&''&&766'&&7'6776&'&6776&'&6776&'& @f?h~ yҋn3/:J 204Q 3/9L 216R 123O 118M dejNejU$UdS@9IH@P>DK=P9IGAP;GN@=FI@NY 01]VFEX/>YEX/>YEX/>YEX/>Y  +X!Y01632#75&'&#_uw RHQR?bЋ}<fQ!''/EX/>YEX/ >Y' +X!Y +X!Yаа'а'#а#/#]##/#]$ +X!Yа#в#9 +X!Y01'%!76677737#7376$%6'&!!!S++L.<ʽGd!vQTQ1nj[nq#&'(9а!а&EX/>YEX/>YEX/ >YEX / >Y9/а/] +X!Y +X!Y аааааааа а"а%013#3#!!!#737#73!!!37#3'#7XXXR)R%kzCT۠+颢 'EX/>YEX/>YEX/ >YEX / >Y +X!Y  +X!Yв 9 / +X!Yа/а/' +X!Y01#7'&&7#'!7!36676&''e]K?KU ]SjvZzg./DTmP^uf-;;̥ zm[m<&6Wm5#'*-./9"а$а)а+EX/>YEX / >YEX/ >Y 9/а/а +X!Y  +X!Y 9/ аааааав  9 /"а $а&в( 9 ) +X!Y+ 9,013!3#3#!#!#73'#73!3337#37#7#7#%\*l0  ]m* k)P@N?*֠>< **: fEX/>YEX / >YEX / >YEX/ >Y +X!Y 9/   +X!Y 9/01!6'&'%!!67!#e,23 x}TOaqsq9 q5* ^:Pc`F%EX/>YEX / >Y% 9%/ +X!Y  +X!Yа%а%!а!/!!/!]!]" +X!Yа!а +X!Y01!7'.7737#7&'$%!!V  vaTm olIUd;WVaMFB5SZ |!|C#(EX / >YEX/ >Y # +X!Y а /@  0 @ P ` p ] +X!Yа/@ 0@P`p] +X!Y&а&/@0&@&P&`&p&&&&&&&&& ]@ && &0&@&P&q&&] +X!Y а/а/аааа%а01!#777323'7#!7!%%&'%%76Yڈ3" * <$ZAu RD!$"%D'S';y9EX/>YEX / >Y +X!Y +X!Yа/а +X!Yаа/ +X!Y 901'7!7677!&'%7!5W8ڸPڭaUcZO"EugEX/>YEX/ >Y9/ +X!Yа/ +X!Yаааа а аа а ааа а +X!Y01!"'?77!77677gv⍙c((1$ '(Y$^j<YEX/ >YEX/ >YEX/ >Y9/а +X!Y 01!776&'!!777!Y  :@rt5%5..^0IHal,hy S*vEX / >YEX/ >Y 9/ +X!Yв  9 /_ ] ]  +X!Yаа а  +X!Y01%!!7#737#732#%!2676&'% ##++y5{_aLL?xob|D(6:7/9/EX / >YEX"/" >Y а/ 9*:J]  +X!Y +X!Y 9%5E]"а/", +X!Y3 +X!Y01'&&7766'4'&3267'&&77666776&'&'z yU0E D,:   407L 126O n*x@yfNY9/ +X!Yа +X!Yа  +X!Y01.77727666?4'&t^@y\\Jި t2Ouǀ7fg., C)EX&/&>YEX(/(>YEX/>YEX / >YEX#/# >Yа/а/ +X!Y +X!Y +X!Y"& 9' &901!7!66'&&776776&'&!!!!+E Л Ҕ CEPq CGOn /͘DǗbo}^C_qyfA? nEX/>YEX / >YEX/>Y9/ 99в 9 а +XYа а01#33####7!IG3@_0_~o}KKmlQl|uRQEX / >YEX/ >Y 9/ +X!Y +X!Y  +X!Y01%'&&76$!7&!&&ąi a >YĈ4 6*w\s1g*| 49'J' $EX/>Y01v4''$EX / >Y01"'!'$EX/>Y01'#'>$eEX/>Y01=])J /EX/ >Y 9/  +X!Y +X!Y# +X!Y016&'&'6'.77>&677&&^i }vg_^lRLia r4M׿aE/Vau?DP(/EX/>Yа +X!Y01!!!!E  ,7# 7/EX/>Y +X!Yа  +X!Y01!77!!)QX)#lEÈT@/ +X!Y01!7!)HT'= 9/EX/>YEX/ >Y9 +X!Y013##7!jY)u)P ER-=CEX / >Yа а/а; +X!Y!а 3 +X!Y)01'&&''.776666%&&'&6766776&&'&-ya0sa\Oi*?s?t^Pi)?u?og]kyA`FV25\l@\F5?9EX/>YEX/>Y +X!Y +X!Y01'"'73766&#"DٯBS 2 5o+7&HZ /ȵ PF/?(o/а/а/ а +X!Y +X!Y аа/а! +X!Y& +X!Y!(016363267#".#636327'".#"iCwef<9tMex>ioj@3gAnqe;zi|>hoj@i09(7Gj*=*|i*?(~k)=*~Oc-9/ +X!Yааа/ +X!Yа 01!'7'7%7%7!7wi,&k* wg,Ւ9IJ(g @9Lp ]01(g"!@9p ]016 8 9EX/>YEX/ >Y99013#(,y:HkV%',_{9,EX/>YEX/>Yа/а01#3#3KKTk /0@P]]а/01'6773MZR}}\;J&JJJAnEX/>YEX/>YEX/>YEX/ >YEX/ >Y +X!Y +X!Yа013#7376$&'"3#!!!G& %SO=uc &Ηtf4#0_V.:Jo9EX/>YEX/>YEX/>YEX / >YEX/ >Y +X!Y +X!Y а 01&#"3#!#?6673!V=]w %З䗜% 7" VOOf] J )-./9+EX/>YEX/>YEX/>YEX"/">YEX,/,>YEX/>YEX/ >YEX%/% >YEX*/* >Y +X!Y  +X!Y +X!Y#а$а'а(013#?66&#&!76$73&'"7#!!!!!O% 7b0#JiN$ TQAr\ %ϗfU LJ^$%/X].f:JQ*+,9EX/>YEX/>YEX/>YEX/>YEX"/">YEX/ >YEX/ >YEX&/& >Y +X!Y  +X!Yа$а%а(а)013#?66&#"%7676!&#"3#!!O%;]0#Mi W }KTB^x %їfk PJYNgU " WMOfJ%%&'9EX / >YEX/>YEX/>YEX$/$>YEX/ >YEX / >Y$ +X!Y  +X!Yаа  +X!Yа01#7'&&7#737&#"!#?663]6?IW ]%)=^嗜% 겣t9f36;tfVC(JԲ(KL9EXD/D>YEX/>YEXI/I>YEX=/=>YEX+/+ >YEX / >YI +X!Y  +X!YаD +X!Y8+=98# +X!Y=#9= +X!Y0+=900]+2 +X!Y01#7'&&7#?6&#&!6#".'2676''$76$2&766733[J?KWX% FEZlCc }/ǡ-ul Mg U LZ  f-CZQ^9MD7N 0z \j?8S"Yߚx8ѰYrC )8>DJPW[_cgkow{C>/EXG/G>YJ+{|+x+;+ G>9 /а/ а / а/p 9|p/Q +X!YQp9  +X!Y& +X!Y *а*//а//5 +X!Y>= +X!Y>lаhаdа?а=mаiаeа@а;BаGaа]аYаLбK +X!Y[а_аcаHаJOа R +X!Yw +X!Yxа{а|ааа01'&&77666&'&67#"&'326733!7373!#%7!#73676'7!!7!!7!7!!7!!7!7676/#737#73#73%#737#73#73_bvu `]d*7%)l`4:@Y 88=Ve:fPZdWU-< d8p$$n82./2njpODmnmnVT} ?"ap-po,pp-on-nn,nn-mc|}^pb|}^%IC&< @'HWL?QWGjCNOGPM]ZN]9*;qqttUGKtttttt8qqqqqqR7~~~\s $(O++ +ܰ!/%/+%а/!а/ 9 /9/01 4676654&#"36632#33#3#AD$J\:+98][/KR11::'J34@4_YEX/ >Y +X!Yв9 +X!Y901!!7676&#"669O_ $$aNPO>$*p~ou7Tq6EX/>YEX/ >Y9/ +X!Y01!#7%7_q(s% ;EX/>YEX/ >Y +X!Y +X!Y01&&776674'&7+   KgOi 1aa[#TEX / >YEX/ >Y 9/ +X!Y +X!Y  +X!Y01767'"&7>!#7776'&'"ݫ9is {Q (}1YJ nIl ?sSҩyq{ىOtDn#!spWGZ".pEX/>YEX / >Y, 9,/,],qo,,] +X!Y,9,9   +X!Y& +X!Y01'.767&7666&#"3266&'"26 EJ{فwd } M>Ig K>IiB>3>W;6=V[c-ToRPdh[v;?K=8GP!66F56>GD!:9EX/>YEX/ >Y +X!Y901!%7!|)&-#QEX/>YEX/ >Y +X!Y9/ +X!Y +X!Y01#&6'&77!&32676&w Ap }&DiU E;Mp GjզulD7^S8'#9AlKFOfEX/>YEX/ >Y +X!Y9/ +X!Y9 +X!Y9901!!632'&&'36676&'"`) OLl Tb GM]N:S)ƩyhqeQKY8 \9 EX / >YEX/ >Y 9/_] +X!Yв 9 в 9013#!7!7!:)** w%~DNN&EX / >YEX/ >Y 9/o]]qq?q]qJ]  +X!Y 9& +X!Y&9 9]  +X!Y016676&#"66'&&532676''voUm I=  WS}쌷VDQp LC8;b[[h[>AP@PEX/>YEX/ >Y +X!Yв9 +X!Y 9901!!7676&'&6$[$ ?9Ig ü tm_:@\QT)A9EX/>YEX/ >Y9/ +X!Y901!!7%7h)4"3C-;EX/>YEX/ >Y +X!Y +X!Y01&77674'&7 ! !"=v((=;"rLMGU@ FEX/>YEX/ >Y +X!Y9 +X!Y 901%!7%7!o8)Q)e1EX/>YEX/>YEX/ >Y901!!%=CDL$z SEX/>YEX / >YEX/ >YEX/ >Y999 901!!!%,X45v}[1 ` 9EX / >YEX / >YEX/>YEX/ >YEX/ >Y99  901!!!!30,< 7ws%g1EX/>YEX/>YEX/ >Y9017!!%5@;9Os1|/EX / >YEX/ >Y  +X!Y 01'&&7!7|$  Wr/EX/>YEX/ >Y +X!Y01!!!7!I)] $IEX / >YEX/ >Y 9  +X!Y 9" +X!Y016$'&7>%6&'"'&&7326/ z}WGJo 6 ^dJm@^Q`g\ťIKC9RSa䡺ҲYUB+OEX/>YEX/ >Y9/ +X!Y 9а +X!Y01#!!2676&''GUv EJn~42{RK@I0)o$;EX/>YEX/ >Y +X!Y! +X!Y01'&&776$%6'&&'&67]$Odb]Uz ^Vz5.5:gwe9ky¬= BEX/>YEX/ >Y 9 / +X!Y +X!Y01!#'6676&''UC ݲbw PI۬OEKU/m ;EX / >YEX/ >Y  +X!Y +X!Y01&&776$&&'&676bc\\U{ \`x .%iuS&|f EEX/>YEX/>YEX/ >YEX/ >Y9901!!!!!E`9EX/>YEX/>YEX/ >YEX/ >YEX / >Y99 901!!7#!.|,GQ's>]~>)EX/>YEX/ >Y +X!Y01%!!!;) LEX/>YEX/>YEX/ >YEX / >Y99 901!!7!!4RmGx.,y[)EX/>YEX/ >Y  +X!Y01!'&&767 @T ͷ]Y EX/>YEX/ >Y01!!!% bEX/>YEX / >YEX/ >YEX/ >Y 9| /@ P q ]0 @ ] +X!Y01!!!!!!!OCPSS:"4b [EX / >YEX/ >Y 9/ 9  +X!Y +X!Y +X!Y01%'&&776$%&&'&77#7!CcWY g_iT#%KS=WSFdp+ BEX/>YEX/ >Y 9 / +X!Y +X!Y01!!!!!;'P**+:  s)UEX/>YEX/ >Y9 а +X!Y9 а' +X!Y016$'$766773%6&'"#7&&5326% ./WHJo = ޺00^eHm@^RaޓIKC9RQb⒲ɝYUA4lEX/>YEX/ >Y9/ +X!Y +X!Yа ав9 ] +X!Y01%%!7677?66%5&'&!?&p)b"Y"÷ggcGM5As9EX/>YEX / >Y 9 9/|/ +X!Y  +X!Yаааа01!#!!!7!737'!73!5"  &' , ڣ139EX/>YEX/ >Y +X!Y01!!!.]= 9EX/>YEX/ >Y9 +X!Y01!!!'!i,76/v"O|/EX / >YEX/ >Y +X!Y  +X!Y +X!Y01!7!&&776$&&'&67)lf]]U{ ]` ?.%gwS&}8 9EX/>YEX/ >YEX/ >Y9013!!!'i,rsM76 f 9ܰ EX / >YEX/ >Y +X!Y 9/Pq +X!Y  +X!Y01!!7!'!7!7!7!)#)cr)@ 9EX/>YEX/ >YEX/ >Y +X!Y01!!!!!;]. E 9EX/>YEX/ >Y +X!Yа  +X!Y01!77!!5)_y)P4|dEX/>YEX/ >Y9/а/ 9 /а/  +X!Y +X!Yа01!7&&76$%76&'66 >!d}cfd{lm x#[kn bf9EX/>YEX/>YEX/>YEX / >Y 9/б  +X!Y  +X!Y01667!!&7!!7r25.8804 z2I%Y/}#MEX/>YEX"/" >Y! +X!Yа +X!Y а" а!01%66'&&'&!77&&7766767!G+aU%5+HE ĝjup )4X aFVc@^w:'$W-n9EX/>YEX/ >YEX/ >Y +X!Yав9/ +X!Y +X!Y01!7!!672676'&!))+u{ `v S_"ֺRO+aEX / >YEX/ >Y 9  +X!Y 9/qr]q/rl|]9I] +X!Y +X!Y 901'&77%&'&%!7 EXJ)'9D"}#$9EX/>YEX/ >YEX / >Y +X!Y  +X!Y9/ +X!Y" +X!Y01#!!'#776677!6676&' 7$X<6h^HAh9^ OQI X^QAO9EX/>YEX/>YEX / >YEX/ >Y 9|/0@] 9/  +X!Y  +X!Y +X!Y01!!#!!!!67676&'SA OOPd9N;U MQҭ:!0]APW-\9EX/>YEX / >YEX/ >Y +X!Yав 9/ +X!Y01!7!!6!6&'&!))+tx46 MhR_"Ife P 9/EX/>YEX / >YEX/ >YEX/ >Y +X!Y 01!!!!!!!<<ŢY\ QEX / >YEX / >Y  +X!Y 9/ +X!Y  +X!Y01!'%!66'&''*L ei4ǩ{^[UH}]9 /EX/>YEX / >Y +X!Yаа  ааа +X!Y017667!3!!!%!0g$QRc:A:cy/<\\M5v9EX / >YEX / >YEX/>YEX/ >YEX/ >YEX/ >Y 9|/]]0@] q +X!Yв9а 01#!#!%3!3!!gKMU;wZOOKX}HHj"<< %EX / >YEX/ >Y  +X!Y 9% 9%/%] %q?%q%q%%]%ql%|%]9%I%]$ +X!Y$$]V$]$%9 9 +X!Y01676&#"6677'&&532676''7 QH-NTy_u "8@d j#Wg[xPC L 9EX/>YEX/>YEX/ >YEX/ >Y9 901!!!!s{ [ 9EX/>YEX/>YEX/ >YEX / >Y9/ +X!Y 901#!!3!!uMO_9UKH<HEX/>YEX / >YEX/ >Y +X!Y   +X!Y01!!'#7766778@5k}]s _9EX/>YEX/ >Y9а  +X!Y01!#'73267!B6:ezq$&:O$#c*4,[ F 9/EX/>YEX / >YEX/ >Y +X!Yа 01%3!!!!!v:RŢM\bG9EX/>YEX/>YEX/ >Y 9 / +X!Y01!!'"&7!7!QwX79NhRb!Xef ~ P 9EX/>YEX/>YEX / >YEX/ >Y +X!Yа 01!!!!!!!C55\\Y 9/EX/>YEX / >YEX/>YEX/ >Y +X!Yа а а 01%3!!!!!!!v;55M\\D, a9EX/>YEX/ >Y +X!Y 9 /  +X!Y  +X!Y01'%!7!6654&''+)A[sdV9aLCQ & BEX/>YEX/ >Y9/ +X!Y +X!Y01'%!6654&''*A[sgS9{eaLDQ4EX/>YEX/ >Y +X!Y9//r]qqrl|]9I] +X!Y  +X!Y9901677!6&'&6$'&&'!\^e+)8TYc.ړ] ^Yxvba޿G"yEX / >YEX/>YEX / >YEX/ >Y 9|/0@]]  +X!Y +X!Y +X!Y01'.7!!6%4'&67-pPSJ6eK^W5|ׄ8$L~kyc c 9 EX/>YEX/ >YEX/ >Y9/  +X!Y 9 +X!Y01#&76$3!#'<h H FD2Ur`seAG R^ R9EX/>YEX/ >Y 9 / +X!Yа а  +X!Y01#!#73!!3QQ Z-)2/ѷu9/EX/>YEX/>YEX/>YEX / >YEX / >YEX/ >Y 9/ +X!Y9 +X!Y в9013###!#!%3!3xb:}aMMU;wZOOKWQMHHj"<<{m9/EX / >YEX/>YEX / >YEX/ >Y 9 / +X!Y 9 +X!Y013###!!3!Ɩb:uMO_9UFMH<#d 9EX/>YEX/>YEX / >YEX/ >Y9/а +X!Y9 013733!!'#7#!%=+/-:VJ8+*=REWj9EX/>YEX / >YEX/ >YEX / >Y9/ +X!Y +X!Y 901#!!7!3!!tM)O^:UIH</$0gEX / >YEX/>YEX/ >Yв9/   +X!Y +X!Y$а- +X!Y01&''&$7767&&7766?4'&O墩>q6(  ŁP jm_p />63)er%IKUs1pe&&i 9/EX/>YEX/>YEX / >YEX / >Y 9  9 9 +X!Y 901!3##!%,X4b:5vM}[1W^ 9/EX/>YEX/>YEX/ >Y +X!Y +X!Y а а а 01%3!!!7!!!!&u:R))yĢMFdKEX / >YEX/>YEX/ >Y 9|/ +X!Yа01!!#7&&7!737!P@E+-7;d31aXCg  'G9EX/>YEX/ >YEX/ >Y9/  +X!Y01!62!6&'&!RwY79 MhLbb!XfeD%ZEX/>YEX/ >Y 9 / +X!Yа  а +X!Y +X!Y01.7&&76%7&76'&& eEJ 3eo- e|ې F~w8=4,BH'TEX/>YEX/ >Y 9 / +X!Y +X!Y  +X!Y01'&776&'&'6767%yu  3gn+ iN,w7=05+@L [EX/>YEX / >Y +X!Yв 9/ +X!Y9  +X!Y01%7!&&53266&''7)R"|3WtOU% |QL/uVEX / >YEX/ >Y  +X!Y 9|/ +X!Y +X!Y01'&776$&%6&ckc6aai!a6Os<.Su"r 6&/EX/>YEX / >Y]]]_]oq ]а/]/?]] +X!Y] +X!Y]   +X!Yаааав!9$ +X!Y_$]01%%%%%!7667777766%6&'&s c'/)b""&! *79s++ /' +;ϸWI"/"/EX/ >Y"]" "]" б  +X!Y ]а +X!Y"а/]/?]]б +X!Y] +X!Y_] 01!7'&&7737#736$&'"%!!%BrbFf,_aW{-` btլL!VVL)EX/>YEX(/(>YEX&/&>YEX#/# >YEX!/! >Y а /а/@  0@P] +X!Y  +X!Y +X!Y"&#9'!(901%!7!'&&77666776&'&!!!! 6 і 4CFPp DGMk E+4?kY`p\8V`eS !9EX / >YEX/ >Y +o]/] +X!Yд / ]o  ]  +X!Y аа а  +X!Y01%!!7#7773#'%6676&''%&` Y{ HK턄G(̤G]L>P#$rEX / >YEX/ >Y 9/ ,]  +X!Y 9# +X!Y#9 +X!Y#90136676&#"66'&&'32676'#Q6I .$P::_4J n^1,"%<jzucvA[YEX/ >Y 9/ +X!Yа в 9 9017##7!777`UZ,D2mEX/>YEX / >Y +X!Y 9/] +X!Y9 9  +X!Y 901!%676'&&'76676&#&,{84Eo{-*6C,188uf*A508%{' _EX/>YEX / >Y +X!Y 9/] +X!Y]  +X!Y01#&632'&&776$3"32676Jq3J_gzE9O-N'ReBs~3F5&IC2Y3EX/>YEX/ >Y +X!Y901#%7!Thmnm!*EX/>YEX/ >Y(9|(/((]0(@(P(]((q +X!Y](9 (9 +X!Y" +X!Y01'&&767&76636&#"3266#"326cUz.(*G.(*I. K%:& &:HoI>qpxc}M;bj~uJ$'+,$+/oD)&!&-0# kEX / >YEX/ >Y 9/] ,] +X!Y +X!Y]  +X!Y01767&766#77?&#"t*EFn 44F.H)JU3t9)O+GM7-6Y@9/] +X!Y01!7!8X!W& /а/|/а/ а01'&632#"&7766'&#"wʘvSPlrRSlk##0A 3(?QrjKQngK 3P-5; ]EX/>YEX/ >Y 9 / r9 I ] +X!Y +X!Y +X!Y01!!!!!!9.,%)B)%xGTR+7EEX(/(>YEX/>Y(+а+/ +X!Y(9/9/7 +X!Y79!(91 +X!Y; +X!Y(B +X!Y01#&''.767&767&77>!32676''36776&'"8v! (IJ _Ꮝh ,vvM g\x }(SDJvOGRp c] =ihDwM_7;uVor\1B8AK?TANVFDMXD2S#p$%9 EX/>YEX / >YEX/ >YEX/ >Y 9 9 +X!Y   +X!Y01%'&&'&77673#6776'&&'&Μ  *d)=r ^LDr ػ??EcZ"A)4_t!VEX/>YEX/ >YEX/ >Y9/ +X!Y 9! +X!Y01!2&77'&''2676&'%c bZ 67 uX\9r@(|k6?}5~ja\g TEX/>YEX/>YEX/ >YEX / >Y9/ +X!Y 901#!!3!!Sh%fzxZSG@f VEX/>YEX/>YEX/ >YEX / >Y9|/ +X!Y 901'!!3!!eM C6YT@w S 9EX/>YEX/>YEX/ >YEX / >Y99901!!!!s%m+\oo 0\ S 9EX/>YEX/>YEX/ >YEX / >Y99901!!!!tUbcF ;EX/>YEX/ >Y  +X!Y  +X!Y01# 6'&' qp yZ:.E'l_+a;EX / >YEX/ >Y  +X!Y +X!Y01'&77%&'&67 Er b9DNZaEX/>YEX/ >Y9/] q]qqq?qrl|]9] +X!YV] 9 +X!Y +X!Y01#676''676'' oihESٝ,DQ],Y|r }t GEX/>YEX/ >YEX/ >Y 9 / +X!Y 901%!!!!!Lw JsI3 /а/01#76P"Pim /p]]а/@ /?]а/ +X!Y|/]q@/?O_o ] а /@  / ? O _ o  ]/01'&&'267%3GW [n}lm<5$/]p]]а/@ /?O]а/ +X!Y +X!Y а|/@ /?]а/@/?O_o]/01"&'6632767'XD-*9wZE$&9\ѱSeKT!Pi ASB |/]p]а/а/@ /?O]9//9 | /@  / ? O _ o ]а//]   /013''#zi~}| /p]]а/а/@ /?O]9//9|/@/?O_o]/ а /@   / ? O ]01''%3'7z=~_ /p]]//а/а/@ /?O]9|/@/?O_o]аа/@ /?O_]в901''%377676''78'Q I* gt /-sSId:/p]]//а/а/@ /?O]9 | / а /@  / ? O _ o ] а/  +X!Y  +X!Y01'#%7#"&'66327667>H8'~% fH5#( }}IVG+KUF.%3 9EX/>YEX/ >Y +X!Y01!!!! _]n l/]p]]а/@ /?]а/ +X!Y|/ а /@  / ? O _ o  ]/01'&&'27'#M˪o}nmq /p]]а/@ /?O]а/ +X!Y|/@/?O_o]] аа/@/?O_o]а/ 901'&&'327'57676'#721X a% p||lllm,,kKGa9sEX/>Y01f sEX / >Y 01r!sEX/>Y01"sEX/>Y012#sEX/>Y01w$sEX/>Yа"01%sEX / >Y01_IP 9EX / >YEX/ >Y 9 9  +X!Y +X!Y01'.'&$%&&'&67 b tpvt ~|{ pɲ\Q_ 9EX / >YEX/ >Y 9  +X!Y +X!Y 9/ +X!Y01%'&'&$%&'&77#7!Jص^ ~wb0'am"z ˱D H9EX/>YEX/ >Y  +X!Y +X!Y01322$76'&&'!GJ%o&+4͇h`H 9EX / >YEX/ >Y  +X!Y +X!Y01.'&$4&'&6c!f0|~|cs-`&;EX/>YEX/ >Y +X!Y$ +X!Y01%'#&&'&$76&'& JJ i R87xWmΜd.g06iaK3EX/>YEX/ >Y9/ +X!Y01!!7%7,_$.kIEX/>YEX/ >Y +X!Yв9  +X!Y901!!77676&'&6677Q!1r EKQt 7 w']b9GbTZR /EX/>Y +X!Y9 9  +X!Y +X!Y901%7!'&'72676%'7 )^| ҰM#geZ  SEX / >YEX/ >YEX/ >Y +X!Yа/ 9 в 901%3#!!7!t)45 (Ph-_(Uc9/EX/>Y +X!Y9/99 +X!Y +X!Y901!!6'&'76'&&'&_&*fPeuDVJkK~0՛tcO\S0u&/EX/>Y +X!Y901!%7!VR) !/p]]а/@ /?]а/ +X!Y|/а/@ /?O_]а/ +X!Y +X!Y!01'&&'67#''&'6632767CX XD_# :w ZC%$9o~nj77Sg .T!Te@S-/а/а/01!!a2/"EX / >YEX/>YEX/ >YEX/ >Y +X!Y9/:J]]]*q +X!Y +X!Y  +X!Y" +X!Y01!!#&&7723!!!!!7'&pKcPVZ)&).,%]ZgLZT% G |hyLY&G/EX / >Y +X!Y 9/ +X!Y ! +X!Y0167'.7>%&'7776'&&'&^|O{O 5Jko SNw O[[⋓Z=-X/5`iQcGb ( /EX/>Y  +X!Y  а /01'"'7327b.ޯBS$5*| 0$<L'NNMEX / >Y 01KAOEX/>Y01!`eL(BOS3[JHEX/>Y01F:F::e:& : y!"9EX/>YEX/ >YEX/ >Y +X!Y 9 / +X!Y  +X!Y 9 9 01%32676''77&'&!66'"';;B\ b!0C&|~xazxx2ZD6#s|r;9xH !9EX / >YEX/ >Y  +X!Y +X!Y01'&7%76&'&67fcR%J]Z[w [[vESFBH~|Lt3EX/>YEX/ >Y +X!Y901!%7!Ur)/f !9 /EX / >YEX/ >YEX/ >Y 9 9  +X!Y +X!Y01'&'#!6!65&&'&6&сZ/ mr RMxVR,wk{{A?/6bnl@c+S?9EX/>YEX/ >Y +X!Y +X!Y01%67%'.776!4&'&Oo 繐_жRImXK#VfB"1f !9 /EX/>YEX / >YEX / >Y 9  9  +X!Y +X!Y0166!#7'&&'&%7&'&9Ӄ]i   QKtZR-rk  s)z<@-5^qma0Q[S'()9 EX/>YEX/>YEX / >YEX/ >Y9  +X!Y9 +X!Y$ +X!Y0167'&'767'&&'&77&'&9̱V+#饘@wm~-q TNtYT*vm :pL9z?=@si]$HR E!"9EX/>YEX / >Y +X!Y +X!Y01'.76$676'&&'&ee[Po[QpN 25_n17_r`.Rp !9EX / >YEX / >YEX/>YEX/ >Y 9 9  +X!Y +X!Y01'&'!%6%6'&&'&6%Ӏ[cv RKtWT+uiqnA>.5and2]0`[Qm !9 EX/>YEX/>YEX / >YEX / >Y 9  9 +X!Y +X!Y01667!'&&'&77&'&9ՃX/dq QKqZV,rn t&u?=-4^qa[/U iEX/>YEX/ >Y9/]]_q  +X!Y +X!Y 9 +X!Y01.77%7&!76'&& l <ߊRj}r&CR~/JAk|J23{nw)$6@'QGU( )*9 "EX/>YEX/>YEX / >YEX/ >Y9  +X!Y9! +X!Y& +X!Y016767'&'7677'.'&77&'&7PT, ?ok&ueSHH|SO&xy pG4yhw?;_brrfXf'3dEX / >YEX/ >YEX/ >Y 9 9 +X!Y" 9+ 9 1 +X!Y01&&76677&&766673!''7'7676&#"j,<%ٔXI XU+Ak%T BQ&NK2'0HTK`s>p2\krN:P4@1841117"+;T ZEX / >YEX/ >Y  9 / +X!Yа +X!Yаа  а а01!!77!7A)[utRCG !Fg9EX / >YEX/ >YEX/ >Y 9|/C]0] +X!Y +X!Y 9/ +X!Y   +X!Y01!!!7!!!!!jR" )),> OEX/>YEX / >Y 9/ 9 /  +X!Y  +X!Y01!#'!6676&'Z ܎'7kaz IPϫZJ?Q&WEX/>YEX/ >Y99 +X!Y 9!9# +X!Y01'&''7&777&'&%6'67[uh^Qtfr-O~ 4-NyJrȯGMp-~fE*#EX / >YEX/>YEX/ >YEX/ >Y 9/ ] 9/] +X!Yа +X!Yа а01'!!!#737!!7!7!7!bOCOWXMCP:QHTEX/>YEX/>YEX/>YEX / >Y +X!Y  9 901#&'77277!!!ܳER%9(z&E!#Zl 9EX/>YEX/ >Y9/] +X!Yа +X!Y +X!Y013#73!#276&''33o!n ,aئEzDwW[5}o(+ |q 9EX/>YEX/ >Y9/]oq +X!Yа +X!Y +X!Y013#73!#276&''33o!n ,aئEzDwW[5}o(+ |,h/EX/>YEX/ >YEX / >Y/]]9/ +X!Y +X!Yа01#6!6'&'&!#737!31rs trVҶ!V'!lf;NEX / >YEX/ >Y 9/ +X!Yаа  +X!Y 01#!#73!7!!3³ہ!1U++P1DqEX/>YEX / >Yа/ +X!Y  +X!Yаа/ +X!Yааа/01#7'&&77#737#73!3#3~"6FKW &!%./%36鷛 ԛ6&%DH6EX/>Y 016&%u6 / 017&%6EX/>Y014&%4 /01 &%j6&% /ܰ01&%'~ W.&'y9&)D9EX/>Y 019&)u9EX/>Y01:&)9EX/>Y01&)j9(I9&-D9EX/>Y01(k9&-uz9 /01(A:&-p9EX/>Y01(P&-j94&2"4EX/>Y 01Z56&3DV6EX / >Y!01Z56&3u6EX / >Y"01Z57&36EX / >Y$01Z54&34EX / >Y#01Z5 &3j!6TE6&9D36EX / >Y01TE6&9u6EX/>Y01TE7&96EX / >Y01TE &9j6g6&=u6EX/>Y 01 &EDEX/>Y-01 +&Eu:EX/>Y.01 &E/EX/>Y001 &ECEX/>Y/01 &EjU Z&E_ /5ܰ801 P&E'+.T&GyB0&IDwEX / >Y"010&Iu'EX / >Y#010&IEX / >Y%010&IjB&DEX/>Y01!&u0EX/>Y01&&EX/>Y01&jL-&RZ /01,-&SDEX/>Y01,7&SuFEX/>Y01,-&S;EX/>Y01,-&SOEX/>Y01,-&Sja;O&YDEX/>Y01;O&YuNEX/>Y01;O&YCEX/>Y01;O&YjiH=&]uEX/>Y01H=&]j7&%p4EX/>Y 01 &Ep3EX/>Y-01.&%+6EX/>Y01 &EmEX/>Y/01[fEX/>YEX/ >YEX/ >YEX / >Y +X!Yв9/ +X!Y901!7#"&547!!!!q -x 23AX^r* #_RHP5)pYcP [P0;EX(/(>YEX/ >YEX0/0 >YEX / >Y +X!Y0а/(9(9/(! +X!Y$а$/ $$]1 +X!Y5 +X!Y01!7#"&547'5'&&76$376'&&'&6$%77'K -x 23AX^rz=2B\ ǸSz[#bE=HP5)pYb&'zA!/5EAӦ@G1n[!06?W>&'u>EX/>Y#01+&GuEX/>Y01W?&'>EX/>Y%01+&GEX/>Y01W9&'OEX/>Y'01+&GEX/>Y#01WE&'>EX/>Y&01+&G)EX/>Y"01@&(d9EX/>Y01.&H$/01&)p7EX/>Y 010&Ip EX / >Y"011&)9EX/>Y010&IZEX / >Y$014&)JEX/>Y010&IEX / >Y'01[zEX/>YEX/ >YEX/>Y9/:J] +X!Y +X!Y  +X!Yа +X!Y01!!#7#"&547!!!!D* -x 23AX^r+s=0wzHP5)pYZ1zR#-EX/>YEX / >YEX/ >Yа  +X!Y'9'/'']']'/'q_'q +X!Y! +X!Y#9$ +X!Y01%7#"&547&7766!7&!76'&&J!j23AX^rMin_tNy0 No3CL5)pYdM({i~{f~($:A@&)9EX/>Y010"&I3EX / >Y%01`*?&+>EX / >Y$01QW&K2EX/>Y-01`*6&+/>EX / >Y#01QW&KpEX/>Y,01`*9&+O /&01QW&KEX/>Y/01`*&+QW&K4CEX/>Y.01:&, 9EX/>Y01'}&LV| /01(W7&-7EX/>Y01 &:EX/>Y01(;&-pt7EX/>Y01&p*EX/>Y01(=1&-9EX/>Y01&dEX/>Y01]I&-|[+&M(r4&-WJEX/>Y 01(&-.MF?&MN[7&.6EX/>Y01F&EX / >Y01:&/b$x&O6&0un6EX/>Y01_&PunEX/>Y01&0(7&P&0EX / >Y01&P/01&0m2&P6&2u6EX/>Y 01B&RuQEX/>Y01&2R&R =&2%6EX/>Y01L&R]EX/>Y01&R<IEX/>YO]@ ]]qq?q]o]/]]01Z5&3p4EX / >Y!01,-&Sp?EX/>Y01Z5.&396EX / >Y#01,-&SyEX/>Y01Z5&36EX / >Y&ܰ"01,&SEX/>Y ܰ016&6u6EX/>Y01&VuEX / >Y01&63 P&V=&66EX/>Y01&VEX / >Y01"6&7u6EX / >Y*01  &WuEX/>Y'01"7&76EX / >Y*01 &WEX/>Y)01"/&7y &P&Wy("&7U P&W"=&76EX / >Y-01 &W%EX/>Y*01;&8B8D&X6;&8y8/D&Xy;=&86EX/>Y 018&Xp]]O_]/]01TE4&94EX/>Y01;O&YWEX/>Y01TE&9p4EX / >Y01;O&YpGEX/>Y01TE.&96EX / >Y01;O&YEX/>Y01TE&9EX / >Yܰ#01;OZ&Y_EX/>Yܰ"01Tr5&9a6EX / >Yܰ01;&YEX/>Yܰ01TE!K /EX/>YEX/ >Y!в!9  +X!Y +X!Y017#"&547.7!67Ec23AX^r)d%|@:BH5)pYI<>81;[O:"aEX/>YEX/ >YEX"/" >YEX / >Y +X!Y"а/ +X!Y 01!7#"&5477'&&7!7!k -x 23AX^rxuw eVHP5)pYc[ܴA!di57&;6EX / >Y01s&[EX / >Y01g7&=6EX/>Y 01H=&]EX/>Y01g &=j66&>u6EX/>Y 01&^uEX/>Y 011&>GEX/>Y01&^EX/>Y01=&>6EX/>Y01&^*EX/>Y01lB&uBEX/>Y01 t&ugEX/>Y>01 &uEX / >Y*01r9&u-EX/>Y.01&0&b%qor/]qq]01&0&b%qor/]qq]01Wr&& ]01&3DEX/>Y 01_&3unEX/>Y 014&3cEX/>Y01J&3wEX/>Y01C&3jx&3}EX/>Yܰ01&3'+1a&1y\&(DEX/>Y 012&(uAEX/>Y01&(6 /01&(j\ &DyEX/>Y01 &u(EX/>Y01&EX/>Y01 &jD&EX/>Y 01/m&DEX / >Y"01/m&usEX / >Y#01/m&hEX / >Y%01/m&|EX / >Y$01/m&j1|&DEX / >Y011|&uYEX/>Y011|&NEX / >Y011|&jte&u3EX/>Y 01.&3pgEX/>Y 010&3EX/>Y01[iEX/>YEX/ >YEX/ >YEX / >Y +X!Yа/9/ +X!Y901!7#"&547'!!!! -x 23AX^r$Lw JHP5)pYas+a&1ujEX / >Y01+a&1_EX / >Y01+a&1G/EX / >Y!01+e%&1vEX / >Y 01%&0EX/>Y01&(p:EX/>Y 01&(tEX/>Y01&(/EX/>Y01[sEX/>YEX/ >YEX/>Y9/ +X!Y +X!Y  +X!Yа +X!Y01!!#7#"&547!!!!9.,%) -x 23AX^rBB)%HP5)pYZ<%&(MEX/>Y014b&lEX / >Y%014b&EX / >Y$014b&T/EX / >Y'014b&B&nEX/>Y01 &2EX/>Y01 &p"EX/>Y01 &\EX/>Y01[&  &/EX/>Y 01&EX/>Y01&>&uEX/>Y01>&>&2}EX / >Y01>&Q&uEX/>Y 01&<%&EX/>Y01/m&plEX / >Y"01/m&EX / >Y$01/&EX / >Y'ܰ#01+&uEX/>Y01+&+%&"EX/>Y01 B&uQEX / >Y'01 &FEX / >Y)01 /&yF L%&]EX / >Y*01Wr&Wr%&GEX/>Y 01W9r&y2 1|&bEX/>Y011|&pREX/>Y011|&EX / >Y011|x&}EX / >Yܰ011&EX / >Yܰ012uH /EX/>YEX/ >Y +X!Y9  +X!Y017#"&547.7!7uX23AX^r6uN $ *?C5)pYSCpq &EX / >Y01e&(EX/>Y 01e&jN@&u:EX/>Y 01@&/EX/>Y01@%&FEX/>Y01A&%sB&) ?&,!IC&-IA&3*A&=dA&^&EX / >Yܰа&01%&)>,(I-/12Z53 4;8g=^<(P&-j9g &=j62=A&EX/>Y.01'!A&EX / >Y.01aA&EX/>Y01R,&EX/>Y01Gb&EX/>Y#ܰа#.01:,-TS`:v\.:ZL{Jj9EX/>YEX/>YEX/>YEX/>Y9  +X!Y9 +X!Y01!3'&/!&'&76m'-.i V&,@;D-`m3LH~sz >6xk-&j\G&j`,-A&SEX/>Y01G <&EX/>Y01B";&EX/>Y*01&)j99&u9EX/>Y01"'QEX / >YEX/ >Y 9  +X!Y +X!Y% +X!Y016''$66$!6&'&'&&'&7266afdL' ?;%kw?Mzkcn_Sm@2#d|qi^(I-(P&-j9s.,6&/u6 /01h1&9EX/>Y01%&) 1&A9EX/>Y 011,Z53 4W';8^< PE0RIQ&EX/>Y 01,-TS`RT+TM9EX/>YEX/ >Y +X!Y99 +X!Y01%67%'&?!4&'&Nh w.޷LL+ YJrf 7 5WdmKH=:],:\0&IjB&uEX/>Y01 PW+M&jLF&N&uTEX/>Y01H=&]OEX/>Y0156&;D6EX / >Y01s&[DJEX / >Y0156&;u6 /01s&[uEX / >Y015 &;j6s&[jg6&=D6EX/>Y 01H=&]DlEX/>Y01x y'g&&F$&5 /016&1u6EX/>Y01f&QuEX/>Y%01v&%c P&E9&)D9EX/>Y 01 9&D^9EX/>Y 010&IDwEX / >Y"01Q&DEX/>Y 01k4"=q&m%EX/>Yܰ01iS&EX/>Yܰ01,HT&S]mZH &3]f &Qf!P&Q W(&'Q+(T&GQ-g=i_B:(I-F1&n9EX / >Y01&EX / >Y01(I-.&%+6EX/>Y01 &EmEX/>Y/01 &%j6 &EjUl tS1&)9EX/>Y010&IZEX / >Y$01CI&Xj ,P, &jPF&jV9&j&j>&jB &p7EX/>Y 01Q&pTEX/>Y 01 &j)9Q&jvZ5 &3j!6,-&Sja^9'4R^9&j27'4&jd#&j?&j:h&p7EX/>Y01H=&]pEX/>Y01h&j9H=&]j7p8&_9EX/>Yܰ01H&]EX/>Yܰ01&jN9f>&jk&'-j96&'Gjz.H&% P&E&%#4EX/>Y01 &EeEX/>Y,01-&%7EX/>Yܰ01 o`&E7-EX/>Y1ܰ501&%8EX/>Yܰ01 _&E8.EX/>Y/ܰ401&%9 EX/>Yܰ01 &E9*EX/>Y/ܰ301&%:EX/>Yܰ01 &E:+EX/>Y/ܰ6017&%'6EX/>Y01 &E&/EX/>Y001&%<7EX/>Yܰ01 o&E<^EX/>Y/ܰ:01&%57EX/>Yܰ01 n&E5^EX/>Y/ܰ<018&%=.EX/>Yܰ01 &E=VEX/>Y/ܰ801&%P3EX/>Yܰ01 &EP]EX/>Y/ܰ<01.&%'+6EX/>Y01 &E&mEX/>Y/01&) 0R&Iw&)7EX/>Y010&IREX / >Y!017&)7EX/>Y010&I0EX / >Y$01&)7EX/>Yܰ010\`&I7EX / >Y$ܰ*01&)8EX/>Yܰ01#_&I8EX / >Y$ܰ)01T&)9EX/>Yܰ010&I9EX / >Y$ܰ(01&): EX/>Yܰ010&I:EX / >Y$ܰ+01:&)'9 EX/>Y010&I&wEX / >Y%01(&-7EX/>Y01v&[EX/>Y01I&-g+&MN Z5&3,-T&SZ5&314EX / >Y-01,-&SqEX/>Y01Z;&37EX / >Y%ܰ)01,{`&S79EX/>Yܰ#01Z5&38EX / >Y#ܰ(01,-_&S8:EX/>Yܰ"01Z&39 EX / >Y#ܰ'01,&S96EX/>Yܰ!01Z5&3:EX / >Y#ܰ*01,-&S:7EX/>Yܰ$01Z57&3'6EX / >Y$01,-&S&;EX/>Y01T19&u9EX / >Y+01(&uSEX/>Y,01T19&DU9EX / >Y*01(&DEX/>Y+01T1&07EX / >Y)01(&~EX/>Y*01T17&7EX / >Y,01(&\EX/>Y-01T1&(&sTE&9;O:&YTE&94EX / >Y01;O&YyEX/>Y01SB&uBEX/>Y01<u&uNEX/>Y01SB&D`BEX/>Y01<u&DEX / >Y01S&;@EX/>Y01<uq&yEX / >Y01S@&@EX/>Y01<u&WEX/>Y01S&<u&og&="=:&]6g&=4EX/>Y 01H=&]GEX/>Y01g4&=4EX/>Y 01H=&]%EX/>Y01&H'&:Cww/"]"]"]01;&8Q=H(:&Q&Qf>:&Q&Q:&Q1*&LQ2S&MQLdEX/>YEX / >Y 9/9/  +X!Yаа +X!Y  +X!Y01#!!#737!32676&'彧! ' Nt deAA@o[odEX/>YEX / >Y 9/9/ +X!Y аа +X!Y  +X!Y01#!!#737!32676&'彧! ' Nt deAA@o[o KEX/>YEX/ >Y 9 / +X!Yа а  +X!Y01#!#73!!3ss!j*@jc: KEX/>YEX/ >Y 9 / +X!Yа а  +X!Y01#!#73!!3UNN!N)M%;ŷ"pEX/>YEX/>YEX / >YEX/ >Y 9/б  +X!Yв 9/  +X!Y 901#3!!#!#737!3ʼ'zxZhۿ!%JG@SJzf/EX/>YEX / >YEX/ >Y 9/б  +X!Yв 9/  +X!Y 901#3!!'!#737!3\C6YTϿeM!@gSEX / >YEX / >YEX/ >Y 9/ +X!Yв  9а/01#!#73%!3XY!j5Pkr I_B:VEX / >YEX / >YEX/ >YEX/>Yа +X!Yв  901%#!#73!!3HK!IB2A cx^dEX / >YEX/>YEX/ >YEX/ >Y 9/ +X!Y 9а в 901#!!#73!!3t`!^@W`?Zqj ,:dEX / >YEX/>YEX/ >YEX/ >Y9/ +X!Y9а в 901#!!#73!!3?}Ne!my=n0RзAM'!P&*& P p ] q01hT@Fff@PR6CzeAGoBj^`*>&+u>EX / >Y"01QW&Ku=EX/>Y+016&2Di6EX/>Y 01&RDEX/>Y01#&%5EX/>Y ܰ01 &EEX/>Y-ܰ101&&)a8EX/>Y ܰ010&IEX / >Y"ܰ&01&&-8EX/>Yܰ 01r&EX/>Yܰ 01Z5#&35EX / >Y!ܰ%01,-&SEX/>Yܰ01#&6=5EX/>Yܰ01'&VQEX/>Yܰ01TE#&95EX / >Yܰ01;O&YEX/>Yܰ01A&d&& &F&(G .&H&(.&H&, &L} 6&/u6 /018&Ou8 /01&/>x&On(&0 7&PN &1 fR&Q &2R&Rr Z5&36 U /(ܰ301 B&4uBEX/>Y01`&TuEX / >Y01&6  P&VC "&7 P&WO;&88D&XTE&96U /ܰ'01@&:@EX/>Y 01\.&ZEX/>Y 01&: \.:&ZI 5&; s:&[ &> :&^D {&3Fq&39?!&(<2&<4+!&<w& T&<& a32(@ /m=Wre &jDe&jN&(j\ &uEX/>Y01   &jD&uEX/>Y01&EX/>Y0132(&EX/>Y 01/m=+a1Wr '/EX / >YEX/ >Y  +X!Y' 9'/o'']']'q?'q'']'q'q& +X!Y'&9а  +X!Y01676&#"6677!&&532676''7 QH-NTͳRT}_u "8@d j#W(${xPCm/EX / >YEX/ >YEX/ >Y  9| / ]0 @ ]@ P q +X!Y  а +X!Y01!#!!!!!3=OCPSSe:"@-+^A/EX / >YEX/ >Yа  +X!Y +X!Y01!&77%&'&67PR Er b24$DNZaeD &Q&pyEX/>Y 01&paEX/>Y014| & g&sua&uus &&DV&u&j!e&Da&%p kP&Ee&)6 0[R&I[&3c&(:&N ]01TQQQQQ<R'S $4[ 6W o % ~ P  L  H MCP&MhfY'jMdd.v9P g9cL  T !#!v!!""M""""##,##$2$%%x&K&'''(())O))*4*+#+,,x,-N-.../$/V////00K0011&1E1N11112L2T2|23'3U334445b56i67!788Q899`9:6::;U;;l>?9?@,@@A&AABlBBC5CCD4DvDE"EEFDFGGGHHwHIdIIJ6JJJK'KKL7LyLM MMNJNOOPP}PQYQR RxRSvTTRTUUUVoWWzXXY.YYZZZ[\]]]^B^u^^^^_`O`j``aSabb,bbbbbccacddedqd}deeefgg g,g}gggh1hhiJij#jtjjjkXkdkpk|kklZlllllmGmn@no(oppypqRqr'rrs2sssssssssssssssssstt tt?t_t~tttttu7uuuuv vvww+w?wxxyIyUzz{ {|@|}}~8~1(B\ʀ0G|Nă 1jwÃτ6GkJJMȊ}5R5i+uƎ1^yÑZӒMiWȔ4Ȕjaї6zyҚkƛEԜ`&m]i2T֡0kwѣ"r+V%_ɩ1_Tq.+rQӯ-a+Բ*Ųײ(E5.8OݸFu}ɸѸ ӻAɼ(SY/v !3?R^jÁØïû5LczĆĝĴ2HSfr~Ŕū,CZpƆƑƨƿ/F\qȈȟȶ'>Ne{ɒɨɿF5Lbtˋ˗ˮ3Jalw̦̎̽̚&2GWco͆ͩ͝͵+AXnΆΞε(?VlxτϐϜϳ*AWnЄЛвr #9E\sҊҡҸ*JjzӑӨӾ'>OZqԇԞԪ'>UkvՍգպ 7Mdz֐ּ֦>Tjׁטפ׺ 7CYez؆؝ة(>Ukwٍٙٯٻ.ڈڟڵ(4@LXs{ۃۋۓۣۛ۫۳ۻ)@Vpx܀܈ܐ*AXd{ 7?GOWnv~ކގޖޞަޮ޶޾@HP[rz߂ߎߖ߭&2I_go{ 6>F^v #9EPX`w+6>FR]it'3?Vm)D^v5O[g~ 8Og~(?Wn0G^u .E\s ,CZq oZe dl&>Vn.FR^jv*6I`w #/;GS_kw#.9PX`lt S[g}+7CU#T;_<.RM s d&'y~;"KxcdF. ZK*o~V~~~~~C~Q~q~3~;)${Q !CWgJS`M(`>fZ fY"&T2P2yn9q3 h+i.<0Jxb/cm,hl. 8b;\s'P;Ki3 ]|<Q ]  5Q``OU)c  4w7kq.$*^ikK : nCH{T(S<:%, |`9zC@K`]aVppQkA i2ik)['KkhRK&B_k){)UFG'4iBPsuA(X?Ay y `P oz#\!tu=nJqisqqH.Vfu!Jv_Vab'kqcTh@^ *aL&< (a^k'ia`k,bUOGcSh@I0?4F>M ^iY%U,rb&FU <6@_VfQcxv1xkjznC%.y*SD'[yayq5%/j @YY\f) Z ZgP06*7\11 e|uZafH][ uM5~FC";U|v{=jZl')EG/{O 6RV_JAJ>J>JJ5\q[D--6eLogv1:W2 ^0`/L 42 yo/o+4lbWj+6/Wlj}I3 QVob0vDcj{j!W/9eWd D'5 /y 0%x2 0)]j+U$frwJ_q\R``Pi@S0f/L~~~~~A~!~L~B~3~::***U9'Lx/+1}0$|0</x'*g# Z33CCCCCCCWggggM(M(M(M(fZfZfZfZfZ&T&T&T&T3 3 3 3 3 3 3 +<0<0<0<0****cm,m,m,m,m,b;b;b;b;C3 C3 C3 W+W+W+W+.g<0g<0g<0g<1g<0S`xS`xS`xS`xbM(*M(*M(*M|M(('`:/>>>>ccccfZm,fZm,fZm," " " " " 888&Tb;&Tb;&Tb;&Tb;&Tb;&Tb;sU c k]]:Wj+    /////v1v1v1v16ej+j+j+j+]4444     L///^^^2 2 2 2 :W:W:Wv1v1v1v1v1v26e6eCg M!z:*UCgM(fZ M(i2['kRFGm,\-FGm,FGiBg]"M(M(` C]gy fZ W3 <0qm,h+<0J *isssKxyL':C3 gy <0qk4i\, UZW+iM(M(C3 C3 U g<0nC%,%,y qy qfZm,a^k'a^k'#oVfvi.C3 C3 C3 C3 C3 C3 C3 C3 C3 C3 C3 C3 g<0g<0g<0g<0g<#g<0g<0g<0M(*MfZm,fZm,fZm,fZm,fZm,fZm,fZm,{T({T({T({T({T(&Tb;&Tb;S<S<S<S<S<HoVf]J1b]J!"DI['Jg~~~~CeGjS`xcC3 g<0M*rfZm,&Tb;hi.i.b//>cfZ h" 8&T\\s92E4rU L/`:W6eL 6e2   LVU/`j+:WL3 j-6e DV4 *g2 6eC3 g<0*l UMU 33fP [ GOOG!f :                      nt ~%'0S_g~7Y #%/EOboy?M    " ' 0 3 : < D t  !!!!"!&!.!^"""""""+"H"`"e% &(1T`h7Y #&0FPcpz>M    % 0 2 9 < D t  !!!!"!&!.!["""""""+"H"`"d%eD# (%^S~|}rsolkiaYP!ߔyMߪެߞߝߖߓ߇kTQ 222tt~lt0Rb{z|  }~+,-.   ()*+,-./012345678wxLM}~NOPQRSTUyzVWXYZ{|[\]^_opv   ~xcyo{z%&&''|(01127889@ABCIJKLQRST_`a befg}h~+ 77YY  ##      "#$%%&/0014556899:=>>??@ABBCCDDEEFOPPQQRRSSTTUXY[\\]]^^_abbco pqruvwxxyyz(,159wCL}NyVXY{[_`o>?pMM r }         " % ' 0 0 2 3 9 : < < D D t t      v    !!!!!!!"!"!&!&!.!.![!^"""""""""""""+"+"H"H"`"`"d"e%%,K PXYD _^-, EiD`-,*!-, F%FRX#Y Id F had%F hadRX#eY/ SXi TX!@Yi TX!@eYY:-, F%FRX#Y F jad%F jadRX#Y/-,K &PXQXD@DY!! EPXD!YY-, EiD` E}iD`-,*-,K &SX@Y &SX#!#Y &SX#!#Y &SX#!#Y &SX#!@#Y &SX%EPX#!#!%E#!#!Y!YD- ,KSXED!!Y- ,#E- ,$E- ,' SX@cTX#pY#SX TX#pYYY- ,@ ZX$D$DY- ++ +1(+@8, +1(+w\:#+v`K6+% +@8, +:/"+ 6,"+ [K:*+ >3'+ N@2$+ + E}iDsPttpu?s_ss/tOtottttu?u_uusousst_tttt?u/sos/!s?!s*N`1|` ! :  ^  ^ j $ $ & " @ , 8 &L \r TCopyright 2011 Google Inc. All Rights Reserved.RobotoBold ItalicRoboto Bold ItalicVersion 2.137; 2017Roboto-BoldItalicRoboto is a trademark of Google.GoogleGoogle.comChristian RobertsonLicensed under the Apache License, Version 2.0http://www.apache.org/licenses/LICENSE-2.0jd(Y%>E^yy  "$%*+3466;<ADGHKMQQTX]^bbddhhjlnnpp  ((++--03_cz|  ,$%&'y 2LDFLTcyrlgreklatncpspkern $H %&'()*+,-./0123456789:;<=>eg/3579;ACEIKLXYz{}   "$%')+- }  Az<<`>P?<A.>f?v?v??`?v?vA.?  ?@@<0=A H>?< ??>??@6<@P?A.=>PA.>P@?z. B" #?v%0&<0)P>@@9?=<<0P>P>P>P>P>P>P<>>>>?v?v?v?v?vA.A.A.A.A.=>>>>>>><<<>>>>@@>P>>P>>P><<<<A.><><><><>A.>A.>??????@=@=AAAAdAdAjARARARARARARARAdAdAdAdAdARARARAdAL<<<<AdAdAdAj>P>?v?vA.=>P?>A?v?v??v?vA.??=<0?v=?>@>>=?v?v??<>P?=>?v?vA.?<?<0><>?@<<<@@@@=@<<<?v?>P>><@@<=@?v<0P>>P>><<<<0>?<@<@<@>P>>P>>P>>P>>P>>P>>P>>P>>P>>P>>P>>P>><><><><><><><>A.>A.>A.>A.>A.>A.>>=@=@=@?=P>>?vA.>???A.A.?v????`?v??v?A.????@@@@@AA.ARAdARALAjALARAdAj %*,- /6 88:?EFIJLL OO!QT"VV&XX'Z](__,-./0589:<=>FGRbcfhk  n  op""s.0t35w77z99{;;|CD}TTVVXX\^0033EEGHz{}}  "%''))/8CGMOTTeimoxx &6789:<>EHNPTVWX\bcefpr  vxyFHHJW__puww{| 89Ew:;&= &"$&&&prt&%@.08EGHIKSUVYZ]@@ @"9BE`ak3@@@@@@@@@@0#2345678MNO@@0@@@@ @ @!"@#$@%&@'(@)*@+,@-.@/0@12@34@579;=?ACEKMOQSUWY[]_acegikmoqsuw@38:;=9E3 "$2345678MNOprtw8:=9E"$prtw.9bdM  AGHIKUa"B`ak79;=?ACEY[]a@GHIKU"B`ak79;=?ACEY[]aS KMOQSUW_.9bd  Z]#qsu?'+35 !AjEFHI-  JLNPRTVXZ\^`@'+35!AjEFHI-  JLNPRTVXZ\^`8%<= 3C]"$ "$&(*,.024prt(FF% FFFF "$&(*,.024GHIKQRSTUYZ]"+6<>BSUW\`ak#  79;=?ACEKMOQSUWY[]_acegikmoqsu|| GHIKUYZ]"B`ak#79;=?ACEY[]acegikmoqsuG  GHIKU"B`ak    79;=?ACEY[]a:m  GHIJ KSUZ ]  "B`ak        13  # 23456789CDEFGL MNOPQRSZ[\]mnostuvx               79;=?ACEKMOQSUWY[]_aq s u       \^4D^&(* \^4D^&(*"Z\]^4D^#&(*qsub 8:<=Z\]  349:CDEGI]^bcdldm"#$pqrstuwyr 8:<=QRT+369:<>CEGILPSUW\]bdflmo"$ prtwy|u 8:<=QRT\+3469:<>CDEGILSUW\]^bdlm"$ prtwy|S8QRTZ]  +69:<>ELSUW\cm# qsuw|j8:<=QRT\+3469:<>CDEGISUW\]^bdlm"$ prtwy|%'+358:= !9AEGHIJMPQXbdfjlnopEFHI"$-   "$&(*,.024JLNPRTVXZ\^`prtwyz58:<=39CEP]bdflo"$prtwk%8:<=  39:CEGHIJLPQ]bdflmop"$     "$&(*,.024prtwyz: 8:=9:EGILbdlm"$prtwy18<=39CEPQ]flop"$prtw$8<39CEPQ]fopw8=9E"$prtw9QRT\  +46:<>DSUW\^m |$ Z] :m#qsu5QRT+6:<>HJSUW\m z|  vGHIKSU"B`ak19CDEFGPQRSZ[\]mno 79;=?ACEKMOQSUWY[]_a EGHIJ KSUZ ]   "BQ`ac e kp        13  # 23456789CDEFGL MNOPQRSZ[\]mnostuvx               !#%')+-/13579;=?ACEKMOQSUWY[]_aq s u       :HJQmpzOGHIKU":BHJQ`akmp79;=?ACEY[]az"Z]  :GHJcem#qsuz#Z\]4DQ^p#qsu  \v  4:DHJ^cemVz d  :HJcemVz j  :JcemV  bGHIKSpUW[ p"B`akpppppppp   ppp pp79;=?ACEKpMpOpQpSpUpWpY[]_papLxLx[  AaM:JLMXb d mn1.08@JM_ilh :ILbdlm0V~[m|^Kr Ah cIhh0  .0<8:j@IJ L?MX_c1e_i lm0n AJVXam| 1#X[:IeJLfMXbdlm  :cemJ[   :cm l[  :JXcemn1[1IJLbdlXR_:mJX2[4V[ml|nC~{y~}|t}y(} f .08}:@J|LMlX_kcei{lmn1 AVa1J  A Va1[1l1  h&%j Y\j h0X~|( dSNolH32q)cyUUf~3_akj6 w9 %),4 8>EGIILLQTVV"ZZ#\^$'()-./02347>?@ABD  F  GH.0K35N77Q99R;;SCDTTTVVVWXXX\^Y\cefgilm00p33qEErGHsz{u}}wx  "*/8CGMOTTeimoxx  "#$%&(25;BDEFJPQS_a  eghFoHHJW__bbddpuww{|t !!%%&&''(()).. // 0033448899 ::;;<<== >>EEFFGGIILLQRSSTTVVZZ \\]] ^^"  %      ..//"00334455 77 99 CCDDXX\\]]^^!!!# $ 00 33EEGHz{}}             "" ## $$ %%&&''(())**/0 11#28CG MOTT eefi$mo xx#     "  %"           % % %   !!""##$$%%&&''(())**++,,--..//00112233445566778899::;;<<==>>??@@AABBCCDDEEJJKKLLMMNNOOPPQQRRSSTTUUVVWW__bb dd pp qq rr ss tt uu ww{{"|| "        # ##       " !   !$     #         $    #"      " " " !   !        bDFLTcyrlgreklatnH .AZE CRT FRA ZMOL NAV ROM TRK      c2scccmpdligdnomfracligaligaligalnumloclloclloclnumronumpnumsmcpss01ss02ss03 ss04ss05ss06ss07$tnum*        60nL`tflq3210(sutvrwR   ; /0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwyxz{|}~    %&'()*+,-./0123456789:;<=>eg/3579;ACEIKLXYz{}   "$%')+- } q3210(ds0ut/rwR   ; v123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abdefghijklmnopqrstuvwyxz{|}~    EFGHIJKLMNOPQRSTUVWXYZ[\]^0468:<BDFJMZ|~   !#&(*,.~ *BZrMxN`H0I$'a_bc` MNI26rJd~"<N$.8J| <Fh.8BLV( &,   &,68:  &,HF  $$*06JL   $*06bd  $prt % &,!  &,79;I  $ &,KM    &,ce  $qsu &+-,. $G $X`Z\^ $Ya[]_ $fnhjl $goikm%)+-/46;=>EIKMOTV[$]^*,-./015     OX{@JMMJPPJ*  JXXJWKo6,- .//O EGFHIghijklm '(+35FGHKSTU nooIKj.Z^XUWV[Y]\OJKLMNSeff pp  .pfLNMKOeSJU^ .[]^XUWVY\ZJKLMNOSefp.pfJOSSU^ eel%<  !"#$% >zst?@ABCDyubioath-desktop/fonts/Roboto-Italic.ttf000066400000000000000000005227141412677075700207230ustar00rootroot00000000000000 GDEFB0 bGPOS2p]GSUBY<OS/2R$`cmapwXFcvt -,Rfpgms)gasp0 glyfI,$hdmx:[Laheade6hhea $hmtx3d8loca|Qp maxp>P name7ec-8postad/ prep]+Dd( q 9 а а  а  EX/>YEX/>Y9999 9 9 01!!!!5!(<6 }wx^^^C@ 9 EX/>YEX / >Y +X!Y9/01#36676&1O:0.<<^;/=<./;: / 9/а01#SnPSnPn  REX / >YEX/>YEX/>YEX/>Y 9|/ +X!Yаа а / +X!Y а аааа01###73#7!3333#3##3#ހ4fb``f#bJ0<+p,-9EX / >YEX"/">Y" 9  а а  +X!Y +X!Y"а"&а") +X!Y016&&'&766773#6&'&#7&&736! jK ױ'(gdq ]A "# uv~Va=yĤoV|mwc꺃8 )7;%<=9%а%а%+а%88/:/EX/>YEX#/#>Yа/ +X!Y +X!Y#а/#- +X!Y4 +X!Y01'&&77666776&'&'&&77666776&'&' y}y CE@De BCEf | x >CBFc BCGd cqcM~@Q_eQNLffQ~CDPafQOKffPHhG:%1239а0EX / >YEX/>YEX/>Y  9) 9 )9) 9 9 9 99 +X!Y9 / +X!Y01677'&766673#''&&77676&#"Gr+H ؤ ̓[Iѽ+~p9k RDSpLMqbqMt|lTe/gPi@Ty!/9/01#3vLMm*l9/ /0167&67!zke- K5O|u[pt%`W)8k9/ /01'6''7##Ws./pI IMNs;pNaVk_ EX/>Y/  /01%73%'D3F/œrZq\l[X"bL4  /а  +X!Y01!!#!7!3wPPvJ 4̯/ +X!Yа/01'6773 ht$K/ +X!Y01!7!%5# 9EX/>Y +X!Y0176&461@@`>>>b=;bA/EX/>Y01#33`}-h+!H"#9EX / >YEX/>Y  +X!Y +X!Y01&&76776'&'&67ظ $0ݺ #5"+%JH72KHyCtIT:EX/>YEX/>Y9/ +X!Y901!#7%3\} ̈+V9EX/>YEX/>Y +X!Yв9  +X!Y в901!!77676&'&>!ab pf ㅵ\, anoӨ]C4!()*9EX/>YEX/>Y9/]q/]_r +X!Y а( +X!Y(9а! +X!Y012676&'&6$'&&7676&''x pkr |cbɻxr 2wttݵg8(tpw JEX / >YEX/>Y 9/ +X!Yа в 9 9013##!73!Y;;| Rw9*rjk9EX/>YEX / >Y +X!Y 9/ +X!Y9 а  +X!Y01!!6'&&'3676&'&۹pnѮzhzvIq8ӫrAܷx0-p&e'(9EX/>YEX/>Y +X!Y9/9 +X!Y  +X!Y01#6'&&'&7!&676&&#NsM ʢ!E:a.2bBy *a{كiuptZCQRPZW3EX/>YEX/>Y +X!Y901#!7!z>A6#/r019а(EX/>YEX / >Y- 9-/ +X!Y-9-9 ! +X!Y' +X!Y01'&&7667&&76$6&'&66&'&6( v^[ʽ NK xr| yo~b iap kam=m96k}:6^qt!eth(h)*9EX / >YEX/>Y 9/ 9 +X!Y +X!Y ! +X!Y01'.7>#736$'6?&&'&7JRsK ۄB{-%[6kd|6NM~܂ko^IQɗ=~0a+F&sEX / >Y01F'xs EX/>Y01AOEX/>Yа/0175!&]${zp'/а/ +X!Y +X!Y01!7!!7!+e+.:GEX/>Yа/0177 !$$_%&9 EX/>YEX"/">Y +X!Yа/9  +X!Y в9016677676&'&666676&A `lQ} V[fzb:0.=YEX/>Y09 09 / +X!Y0 +X!Y'" +X!Y: +X!Y A +X!Y01&&''&&7666&'&7#&$5&$?&'&Ym tp ܂ a j nࢩiNuk] 47"YMOfBVRuWAW>5  GEX/>YEX/>YEX/>Y 9 / +X!Y 901!#3#! y|P; k !9 аEX/>YEX/>Y9/ +X!Y9 +X!Y +X!Y0132#2676&'%2676&'%;ba [)nv m~ȳj&o|vrjltP !9EX / >YEX/>Y 9 9  +X!Y +X!Y01'.'&77#''&67*p /o !%4RNxH{2X; E9EX/>YEX/>Y  +X!Y +X!Y0132!276'&&';zp ,jƹ',# I渁; QEX/>YEX/>Y 9 / +X!Y +X!Y +X!Y01!!!!!!Z}yCQd,; BEX/>YEX/>Y 9 / +X!Y +X!Y01!#!!!plPVQ}y!t"#9EX / >YEX/>Y 9  +X!Y +X!Y! 9!/!!]!!]?!O!] +X!Y01%'.'&$#&&'&7!7!{I鳏z I (|<gow(ӊLmG;w VEX/>YEX / >YEX/>YEX/>Y а / r/ ] +X!Y01!#!#3!3zu9umm_rIEX/>YEX/>Y01!#3 J/EX/>YEX/>Y а  +X!Y013'&&7367 pp{x;P tEX/>YEX/>YEX/>YEX / >Y9@JZjz]9]9@6FVfv ]01#33# T|[;t;)EX/>YEX/>Y +X!Y01%!!3;YEX/>YEX/>YEX/>YEX/>YEX / >Y99 9013###%dwlZa^P@Jv;w L 9EX/>YEX/>YEX/>YEX/>Y9901!##33zĽ Żjow "H#$9 EX / >YEX/>Y  +X!Y +X!Y01.'&766&'&6QvBt 3eӇ)ydVti^A~; O 9  EX/>YEX/>Y 9 / +X!Y +X!Y01#2#%2676&'%ZcD:{o (H)*9EX/>YEX/>Y +X!Y$ +X!Y01%'#.'&766&'&76ًJJsAp΍r >iӇ>b*Lq~]VzTSUQ}Ash:c9EX/>YEX/>YEX / >Y9/ +X!Y 9 +X!Y01!##2676&'%f MƉ5 }'(d)*9EX / >YEX/>Y 9 а  +X!Y +X!Y$а& +X!Y016/$7>'6&'&'.76m: l ˕K v "wJ?yep~rM5 {bs /EX/>YEX/>Y +X!Y01!#!7!;;Eg =9EX / >YEX/>YEX/>Y +X!Y01'.7367 "d'{ߎ%a89EX/>YEX/>YEX/>Y9013#3>OPAYEX/>YEX/>YEX/>YEX / >YEX/>Y 9 9  9017373#'#3Ds ?tƫ~*0rP-dt+ kEX/>YEX / >YEX/>YEX/>Y9@ ]9@ ]9 9013##3SJC-%+721EX/>YEX/>YEX/>Y9013#3cs]`e* FEX/>YEX/>Y +X!Y9 +X!Y 9017!!7!7!" x$// +X!Y +X!Y01#3!!4px/EX/>Y013#;z'// +X!Y +X!Y01!!73#pHO'9EX/>Yв9/01#3# | )iEX/>Y +X!Y01!7!z+#/]/а/]01#3+&3Q +|,-9"EX/>YEX/>YEX/>Y9 9 / +X!Y 9! +X!Y & +X!Y01!&57'&&76$376&'&>%677'"  __] mX,W8' Y9Vaq_N_QţM76WMlcLef 9 /EX / >YEX/>YEX/>Y 9 9  +X!Y +X!Y01'&'#36'6&'&66{_% mhkuQYEX/>Y +X!Y99 +X!Y01%677'.77>'&&'&ajX茪̩ravu_f^2ܩj@DuKuf9/EX/>YEX / >YEX / >Y 9  9  +X!Y +X!Y01663#7'&&'&7&'&S}ahlhzVYEX/>Y9/] +X!Y +X!Y9 +X!Y01&7766!7&76&⃧  =hDp1q"+ ַAASXbo~tPe9EX / >YEX/>YEX/>YEX/>Y +X!Y  +X!Yа013#7376762&'"3#wdi3N01^u\` uakUO(R) *+9 &EX/>YEX/>YEX / >YEX/>Y9 9  +X!Y9! +X!Y& +X!Y016673'&&'7677'.'&7&'&Tz`$n:gbeRijuU<}ydWo`gx;J9/EX/>YEX/>YEX/>Y9  +X!Y016#6'&'&#3qvwx ͹;1*/ 2EX/>YEX/>Y а / +X!Y013#36&66㴼'.=;^<::;0/<:^>F >EX / >YEX/>Y  +X!Y а/ +X!Y01'&'7276676&5B%.90.==./<<  uEX/>YEX/>YEX/>YEX / >Y9@:JZjz ]9@6FVfv ]01#373#@ oVjp`3//EX/>Y013#3 jR x!"9EX/>YEX/>YEX/>YEX/>YEX / >YEX/>Y99 +X!Y0166#6'&'&#6&'&#gϢwvc{x ]bd;yZRұ94+g1ox:RT9EX/>YEX/>YEX/>YEX/>Y9  +X!Y016#6'&'&#vw{;̹;1*:ER"E#$9EX/>YEX / >Y +X!Y +X!Y01'.7666676'&&'&x]Z  yeZh zeN ?Dv_u\?y`Ri 9EX / >YEX / >YEX/>YEX/>Y 9  +X!Y +X!Y01'&'#76#74&'&6|daoir[={y@YEX/>YEX/>YEX / >Y 9 9 +X!Y +X!Y0173#'&&'&667&'&I`!bFohv^BOn&||fTT G 9EX / >YEX/>YEX/>Y  +X!Y 901'"#762Uds!5 :~.P&f'(9EX/>YEX/>Y9 9 +X!Y +X!Y 9$ +X!Y016''&766'6&'&'&&736jX^D? [xqtec%p.7RQf0-I^+0reOś[nWC@a9EX/>YEX/>YEX/>Yа/ +X!Y  +X!Yа013#327#&&7#73.qN!7ACll n.@_N [:M9EX/>YEX/>YEX/>YEX/>Y  +X!Y01%'&&7373#ětuLDjkֹB,*HRn:89EX/>YEX/>YEX/>Y901%3#3ߊԲ=:: ` 9EX/>YEX/>YEX / >YEX/>YEX/>Y 9 9 9013##33YpzuB:2:&: SEX/>YEX / >YEX/>YEX/>Y 9 99 9013##3&Nųl,E:@9EX/>YEX/>Y9а  +X!Y013'&'76773~%H/V}0A)U_|#: FEX/>YEX/>Y +X!Y9 +X!Y 9017!!7!7!`8?/ 9// 9| / +X!Y 901&&776'&'7677%ޞ ;_-"!g 51* SeuF^M,+G5!/EX/>Y01#3j;/9//9|/ +X!Y9016767&'&?&'7t+q - 3G]E*-G:q52) hi':9/аа/ +X!Y +X!Y 01'&''&#&663267Ì~{Y +X!Yа/013#&56676:`;;/.=O/>>-0;:R &"T#$9EX/>YEX/>Y +X!Yа ааа +X!Y01%677#7&&'&66773#4&'&aѠ./w ,yw--patsao ҅ ˕j*n !9EX/>YEX/>Y9/ +X!Y +X!Yа а в9 +X!Y01%!7677#7376$'6&'&!XCqben 6nԙg)Νѱjz-A+./9+EX/>Yа/" +X!Y* +X!Y01%'&''7&'&7'7676676&&'&仾Ljm Yhuro QcsJluבIlvؐn~UW!uzwWYxrr{~{sy~Cq 9EX/>YEX / >Y 9 9/а/ +X!Y  +X!Y аааа0133!!!#!7!7!7!3(;8940}|B|}/EX/>Y+013#3 1?w/EX"/">Y"9: +X!Y:9 а +X!Y."9.3 +X!Y3.9"&а") +X!Y01'&&776676&$'&767&76676#6&'&%'676&'?g  ?XS\ kPc w{ | `G K2A _w`gU~E6cEMoY&sgjl/0~uiQmTt4/d=)Q4Ip*Q  / +X!Yа а/016676&%6676&:0.=;0/;:b):EX./.>YEX7/7>Y7.9/] .79 /  ] 9 +X!Y +X!Y 97 +X!Y.& +X!Y01'&&7766'6&'&7$'&'&6$'#&$E ϝEZ_OD#-M[^² UاbUb#MZ}&d[N'cEX/>Y(9/а/ 9 / +X!Y 9|/ +X!Y ! +X!Y01'#"&766376'&'&'66%277#v\rixo U8W { 6K[]Xh6JV{as|6O18 m|:-.zD@7+.Y&:w /а/ +X!Y01#!7!{/'wa9BEX/>YEX / >Y +X!Y +X!Y! 9!/# 9#/##]:!#9:/  +X!Y* :9!2а2/#B +X!Y016$'&$7$'.'&##&?6&''6676&'#v^¯蓄 ~J~5DQM  0DHe AYd^.v|ÅtoQr:`.,a=W@%$H6BEE:?>9/ +X!Y01!7!s 1EX/>Yа/  +X!Y +X!Y0166'&&732676&#"gafb}=16U846Woepg1IP80OU% H /EX / >Y а  +X!Yа  +X!Y9 ]01!!#!7!3!7!aAAuAq+Vb \PEX/>YEX/>Y +X!Yв9 +X!Y 9901!7676&'&66!cc 50BP x@{t*TJ06K>u~f{}3n$tEX / >YEX/>Y 9|/]  +X!Y 9# +X!Y#9 9 +X!Y016676&#"#663'&&5332676''WNB]>2p }~vwB:@[ Wf=611]eyvawB+o|l27@5f#/]а/]/013#Ο`%:Z 9EX/>YEX/>YEX/>YEX/>YEX / >Y +X!Y0173#7'"'#g  aoPY:T:!sK*{ $ 9EX / >YEX/>Y01!'&&7>3[@ɎuPhL / +XY016676&=20@@1-A1A>21?;K :EX/>YEX / >Y 9 +X!Y 90137676''7 h..7frleG oA9EX/>YEX/>Y9/ +X!Y901#7%3hdU8q{ 5EX/>Y9/ +X!Y +X!Y01'&&77666776&'&M і K HMOp JHRpřGȖFH`srhQfmtdV& _3'N' EX/>Y01y''IEX / >Y01'' EX / >Y01zO$H/EX"/">Y +X!Yа/9  +X!Y в901677'&&767767&56676H Siaw ^]bt[;/0;<..=md[ssbtq^ʦfU@/>>-/;9x{EX/>YEX/>YEX/>Y9/ +X!Y +X!Y 9 /  +X!Y +X!Y901!!!#!!!!!!/Rb?>G`a)x(c 8/ 9 / 9 9 9в 9  017({yeROPrNrP #-h ./9  а )EX / >YEX/>Y 9& 9&а  +X!Y'а) +X!Y01&'#7&766673&'&6'6Nu|j1w΁1 Vp`M,") MJr(Pa,aztzDB/lShGNN:&8b \9 EX/>YEX / >Y 9/ 9 / +X!Y  +X!Y01#%#2676&'3 7i_v㼂kCx,] -.9EX/>YEX/>YEX/>Y 9 +X!Y9) +X!Y013#>'&'72676.7>76&'&ӵvy 6: 譲r;jqe 7=8A9 LQiWj_L7lq<IKcV9kw?;a[_:RlaR,7A̲BC91а;EX/>YEX/>YEX/>Y9 9 / ]8 +X!Yв 9в9<9YEX/>Y9 +X!Y% +X!Y01'&7>&''7&'77&'&672 Ⴜބoj;fFܖ:8p[ɐol~V48m7~˩D.@/ +X!Y +XY +XY +XY +XY01!7!4676&6676&6!=20@?b>=20@@b=X71A>21><1A>21>=9z*!+h ,-9 а (EX/>YEX / >Y 9$ 9$а +X!Y%а ' +X!Y017'&''7&'&77&'&%&'676~g[fnY]fv$6 37@W829 P+ς7V#|=<3k[JELܻ_`_9 /EX / >YEX/>YEX/>Y 9  +X!Y +X!Y01'&'#3674&'&6|eaSjphpZ=|ɉ=>TK&'(9#/EX/>YEX/>YEX/>Y/]]9/ +X!Y99аа +X!Y# +X!Y01##7'&&''&766!737337&'&ե~a4ngwVYEX/>Y9/9/а +X!Yаа +X!Y а а013##!##733!3!7!>u:u233#:_"".:EX/>YEX/>Y013#3㵼:-W: iEX/>YEX/>YEX/>YEX / >Yа/]]/]] +X!Y 901##333#nPQPt3:6" ]EX / >YEX/>Y 9/а +X!Yа +X!Yа а а 01%!!773artOSSҝ))#6 KEX / >YEX/>Y 9/а +X!Yааа а017#773uj<=675Ea[9EX/>YEX/>YEX/>YEX/>Y  +X!Y 9901'"'73277#3a5C8)% ƻ^rp$GR\EX/>YEX/>YEX / >YEX/>Y9  +X!Y +X!Y016'"'73276'&'&#}5C5. |q;60:Te$%&9EX / >YEX / >YEX/>YEX/>Y  +X!Y 9/ +X!Y +X!Y +X!Y  +X!Y01!!&&7!!!!!7&#&rEa/+YJ9CQdZLl_!/  +J, NNGS"3=>?9-а7EX/>YEX/>YEX/>YEX/>Y9898/  +X!Y +X!Y99( +X!Y0 +X!Y4016!7'&&''.776?4&'&&76'&&~y+}JL u`=Ds|,U$-sesmRe7 gNtc~܈z=@loABq_4>DuܻW51O[3  ,EX/>YEX / >Y  +X!Y013662&'"3ƞ/c!,,Wu ofTQ*$TEX/>YEX/>Y9/  +X!Y +X!Y +X!Y01&&7776'&&'&'66'67Oc #DԁqߝG /| c`V/6c#YPIF/t9EX/>YEX/>YEX/>YEX/>Y +X!Y  +X!Y аа +X!Y01#'&'7327#737662&#"3ĝ5>5* Ƙ3\7( q cg7(QEX / >YEX/>Y 9 / +X!Y  +X!Y$ +X!Y01.'&76$66776&'&76@s"ds#MT&"mA BiiqנH/B%QEX/>YEX/>Y9/  +X!Y +X!Y" +X!Y016673'.776676'&&'&yKRyv X"4xn vfn[Oc} KK6`?EygKEX/>YEX / >Yа/ 9/ +X!Y  +X!Y016677'&7367&owp y%ZNXEX / >YEX/>YEX/>Y а/9/ +X!Y +X!Y01#7'&&7373667N}ŜtuLDk[WkطB,*HRT F: )EX / >YEX/>Y  +X!Y01'&'73276>5*$:n>N"TEX/>YEX / >Y 9/ +X!Y  +X!Y +X!Y01'&77!6'&&'&'6767%GV t`={Nd7 iN$y=@mo~w 651N^d2/а/ +XYа/]аа/01''53dqj' /а/]9а/0177#50nΖV pL #/]  +X!Yа/а/01'&&767L {GR }yUA  / +X!Y014676&:0.=;/,>T/>;0/<9Q ' /а/ +X!Y  +X!Y016632#"&732676&#"YRsYTsb6+.O8*.Px[~tUY|rU.?G2.BIO94/EX / >Y +X!Yа//] ]017#"&76%Az A CDSN_/ZY?y+eR@/а/] а / +X!Y +X!Y01#".'662727 z]%=<>$Uz }]/j1V o&mnAq;/а/]/а/а//013#3#Ƴ4/j5 ;/а/@  0@]а/  +X!Y +X!Y014632#"&732676&#"hFDZcFE^T( ;&%:If_CGcYF/1'!09j//а/]01#3&/а/]/01#ɠ .6s - /а//?] 9 9 +X!Y0177676#7)k  ٙ BGj`QH7//а/а//]а//01#3#3  y /  +X!Y016676&:/.=;/,>/>;0/<9!A?/а/]9/013#t?; /а/а//  +X!Y а/013#>&%6&66:^<,?<./<:(/=<./<9hLxC,EX/>YEX/>Y +X!Y01!#!Xe0EX/>YEX/>Y +X!Y9013!%!5#2P&i'ZEX / >YEX/>Y 9|/`p] +X!Y  +X!Y# +X!Y01!7!&'&76$6&&'&6 x 0B]0  TYEX/>YEX/>Y901#3#yP  REX/>YEX/>Y +X!Yа//] +X!Y  +X!Y017!!!!!!(r#8y?Dp9EX/>YEX/>YEX/>Y +X!Y01!#!#!sI/ >EX/>YEX/>Y +X!Yа  +X!Y01!!77!!83T͝JGUs#^EX/>YEX / >Y 9/в 9 /а  +X!Y +X!Y а!01#7.766$7736&'66j$$k&]t ԣ ] 9EX/>YEX/>YEX/>YEX / >Y 9/а  +X!Y 016673#&733\]+DEXY  wdӣl6EAj &['(9EX/>YEX/>YEX%/%>Y# +X!Yа +X!Yа#01%6?6&'&!7776$7!{&Ii_"֡)t =YPw)!ykI~4!vߋh^H2T%|&'9"EX/>YEX/>YEX/>YEX / >Y +X!Y  9 9 +X!Y" +X!Y0137'&''&77677&'&2* 5= ,X/~mfuL8::8 KQL)h*+9/EX/>YEX / >Y 9/' +X!Y'9 +X!Y ! +X!Y01'&'#>6676&'&3676&''7Ҭ^` ˬoV z ibl)Ihaצr.}]4rjmao;8q`:8 9EX/>YEX/>YEX/>Y9013#3PU$2C /e019(EX/>YEX/>Y +X!Y-9-/ +X!Y-9' +X!Y0166&"'.776677&&676&'&Oz~Uu 5!҇V٣LTA W0M{m펥7?N@]AK %_>AC%ʉ)M({&)*9EX/>YEX / >Y' 9|'/']@'P'] +X!Y  +X!Y  9'9 9! +X!Y01"677'&'&767&&76677'6&'"| |jkċh BMڼ-scl ^YJ\kW6VR"tC K][Q<;9 //EX/>Y +X!Yа +X!Y01'7676''&&7!7</* )J͋ \"N _o~BV -KiE2Y$TD: !+ JL$aRT9EX/>YEX/>YEX/>YEX/>Y9  +X!Y016#6'&'&# n;R6/:s+$i%&9а"EX / >YEX/>Y 9|/  +X!Y +X!Y" +X!Y01.7676!76''&!yKNb 3  )dZ[~sޟKE;9rJЀe :)EX/>YEX / >Y +X!Y0127'&&7̈O"4 G>ll :J &O9/EX / >YEX/>Y  +X!Y 9 +X!Y01237"&'#'&&''76(9(Pb }c74+# 0S VuN:' ?w.U/09//EX,/,>Y +X!Y ,9 /  +X!Y +X!Y% 901&#"'"'7676'&'&667&&7676~Y  qY?#i`d;> XD ]f Ń{&i[dolC -E3HIW=D?:-!t9*V^Q'`:^ 9EX/>YEX / >YEX/>Y +X!Y  +X!Yааа01#37'&&7!##7!oO%/ BBmm l|)pL _`S R!"9EX/>YEX/>YEX/>Y +X!Y +X!Y016676'&'#6776&'&WGsX Ɂca/A dmzApIlYEX/>Y9 +X!Y  +X!Y01'6&'&'7676''&7766{ he4V k]\)G N.Oدm۾c8GGZ+KG= 9+J;!N"#9EX/>YEX/>Y +X!Y +X!Y01'.'&7763676'&&'&nf  *5Usl  ucjX fvBC*z߹ZYEX / >Y +X!Y  +X!Yа01!327'&&7!7!pH!;O]lg knh-T2g<=9EX/>YEX / >YEX/>Y +X!Y01'&'%&&7mJG "&m:m]]ju6}}{/A"8>#a$%9/EX/>YEX/>YEX/>Y  +X!Yа а! +X!Y01&76766#6'&&V{m{ n~]U#xc<9 Zj؄lg3cAO(O<E9/EX/>YEX/>Y +X!Yааа016'&'#&73k  %'TU!RR yp:K%B>{{%ڇ9FLI{f<*[!+,9EX/>YEX/>YEX/>YEX$/$>Y +X!Y 9в"90136'&''&&''.7 HK[OJ<3/RPL4 -/ ol}gA9  O?/:k(΃}|^lpҀ^,Qm$/n&019&EX/>YEX/>Y(9(/ +X!Yв 9 +X!Y("а, +X!Y01'.77677&7766677&'&g4`'zT66 iUw̕;N6 n~;oH[ r spuN85Vd&Τ P%XHiYgJ9EX/>YEX/>YEX / >Y 9  +X!Y01662&#&#&'&'63--6yO@@/B6jae;&6>Kd fX SkH{IW`fD:,l -.9 'EX/>YEX/>YEX / >Y +X!Y 9аа) +X!Y в$901#'&&''.76677!&'%736'rÅo~a8D@u PI=B8&'RV<\Zkr}oZ[hENzdEX/>YEX/>YEX / >Y +X!Yв9/   +X!Y +X!Y01!676676&'&#!7!Vv |zmI82.Yx$oEX / >YEX/>Y  +XY  +X!Yа//] +X!Y! +X!Y$ +XY01'.'&76#&&'&!%67*qMm{;0 A\3pEA+䨡 4:nd!q"#9 EX/>YEX/>YEX/>Y9/  +X!Y +X!Yа! +X!Y01#!!#776672676&'^cHx>L&+dJwԙw-|C9EX/>YEX/>YEX/>YEX / >Y9/ 9/ +X!Y +X!Y  +X!Y01!3#!!#32676&'nj7tIt[I}}9wݻdnY9EX/>YEX/>YEX/>Y +X!Yв9/ +X!Y01!6#6'&&'&#!7!QKL oksHO)9E6QS*=Bn I /EX/>YEX/>YEX/>YEX / >Y +X!Y013!3!#!?N>??Pg4 ^9EX / >YEX / >Y  +X!Y 9/  +X!Y  +X!Y01!#!!2676&'zXK6e`J||LvzW9 /EX / >YEX/>Yа +X!Yа а  +X!Y01#!#67!3%!> ?YkeO$n]e~Nu ruEX / >YEX / >YEX/>YEX/>YEX/>YEX/>Yа//]] +X!Yв9 в901####33333#sth nnRhh xxG %*cEX / >YEX/>Y  +X!Y  а*а*/) +X!Y)*9а  +X!Y012676&'&6$'&&767676&''7m ~,g_ |E6n4xsoݵt-oku$%LuCn ]EX/>YEX/>YEX/>YEX/>Y9@ ] 9@ ]013##3PVeO9EX/>YEX/>YEX/>Y +X!Y  +X!Y01#!#776677eAW$+P}@=9EX/>YEX/>YEX/>Y  +X!Y013'&'72?3=QzYEX/>YEX / >Y +X!Y013!33#!>j>_DI9EX/>YEX / >YEX/>Y 9|/ +X!Y01#'&&737DoLKϡ}P\78E56B8 IEX/>YEX/>YEX/>YEX / >Y +X!Yа01!3!3!PB8U /EX/>YEX/>YEX/>YEX / >Y +X!Yаа а а01!3!33#!i=+ _ a9 EX/>YEX / >Y 9/  +X!Y  +X!Y  +X!Y01!#!!2676&'Jg6r`J|{vE o9аEX / >YEX/>YEX/>YEX/>Y 9/  +X!Y  +X!Y01#!32676&'#36`J||^vA6 O 9 EX / >YEX/>Y 9/  +X!Y  +X!Y01#!32676&'6`J||^vt"cEX/>YEX/>Yа +X!Yа//]] +X!Y +X!Y0177!676&'&6'&&'07) 1.=܌wK۠o}ϧ8;}rOD0I'z()9"EX/>YEX / >YEX/>YEX/>Y  9| / +X!Y +X!Y# +X!Y01&&7##336$6&'&6int! 3eӇ)6dBi^A~ c9EX / >YEX/>YEX/>Y 9/ +X!Y 9  +X!Y01!!#&&76$3'"cyrh 4}d7p:P|>FU+O,-9/EX/>Y9/9% +X!Y+ +X!Y01'.?776736&676&'zV цY''q K@yl~y~-O1!o`wI@/UȘ0 : ZEX/>YEX/>Y9|/ +X!Y9 +X!Y +X!Y0132676&'%2676''0~ PZ9p aaރ :VT[QHORN-:,EX/>YEX/>Y +X!Y01!#!g_:>:T9 /EX/>YEX / >Y +X!Yаа  а +X!Y017667!3#!#%!-o TR7%7S$DDf]+>:EX / >YEX / >YEX/>YEX/>YEX/>YEX/>Yа/]]/]q +X!Yв9 в901####33333#QRwNOs_H**:@@!P'mEX / >YEX/>Y  +X!Y  а'а'//']']& +X!Y&'9а  +X!Y012676&#&66'&&7676''7f{ cXZ KEwwt_g ͹uVOGX`NY!}QhPRkdT/7: EEX/>YEX/>YEX/>YEX/>Y9 9013##3|: :/W: xEX/>YEX/>YEX/>YEX / >Yа/]]qq]/]or +X!Y 901##333#QPn[3:69:O9EX/>YEX/>YEX / >Y +X!Y   +X!Y01#!#7766779Q5N'a| b:lg0~: YEX/>YEX / >YEX/>YEX/>YEX / >Y 9 9 901%3###3漵,~ЎC,:/6: EX/>YEX / >YEX/>YEX/>Y а /o ] ]? q q r q ] q ]/ ]o  r +X!Y01!#!#3!3zQQQR2:+/7:9EX/>YEX/>YEX/>Y +X!Y01!#!#!{L_:`:2EX/>YEX/>Y +X!Yа01!#!7!n\L`=,:';<9'а'5/EX/>YEX/>YEX/>YEX/>Yа$ +X!Y2 +X!Y)а7 +X!Y0136'&'#'"&'&776'&'&677&#&'RAWYMQA"WLPQIG - 3=,;/:4*} P*#gtx!Tչ;7RdGǶ 5>0/7: </EX/>YEX/>YEX / >Y +X!Y013!33#!뵡ᢵ~d8:]](A{;I9EX/>YEX / >YEX/>Y 9|/ +X!Y01!#'&&7373DK{v23nb!ڹ<4-/: IEX/>YEX/>YEX/>YEX / >Y +X!Yа01!3!3!~:]]:$:L /EX/>YEX/>YEX/>YEX / >Y +X!Yа 01!3!33#!}c8:]]](A:V{: a9 EX/>YEX / >Y 9/  +X!Y  +X!Y  +X!Y01!#!!6676&'qA 5Gk VX:iq^Wk0: \EX / >YEX/>YEX/>YEX/>Y 9/  +X!Y  +X!Y01#!36676&'#3_ 7[Gk WW:iq^Wk:0: O9 EX / >YEX/>Y 9/  +X!Y  +X!Y01#!36676&'_ 7[Gk WW:iq^Wk4P!kEX/>YEX/>Y +X!Yаа +X!Yа//]] q +X!Y01&>'&&767!7!6&;c llc Хk`t1psx^d_cwAAܨe0T&EX/>YEX/>YEX/>YEX / >Y9|/]@P]P`q +X!Y  +X!Y# +X!Y0136'.7#3676'&&'&PB#W"~] SOxn vfo ):*-?Ex; c9 EX/>YEX/>YEX/>Y9/ +X!Y9 +X!Y01#!#&&7663'I_UP VN"?i:[*]MXgfE#!/EX/>YEX / >YEX/>Y!]/!]!]"!9"/ +X!Y9  +X!Y +X!Yа"01!6'"'73276'&'&##7373!6-K11#xҟϵ⨺1*NShEX/>YEX/>Y +X!Yаа +X!Yа/]]/] +X!Y01%677'&77#4&'&!!ak-שq_z1}vsae`(1ݨk/:!} "#9 EX/>YEX/>YEX/>Y9/  +X!Y +X!Y +X!Y! +X!Y01#!!#7766776676&'H 6Q3H&a| bG@f X[:dvgmYJZ/O:~9EX/>YEX/>YEX / >YEX/>Y 9/а  +X!Y +X!Y  +X!Y01!3#!!#36676&'YGH 7[[4@f W\c :lZJZ{9/EX/>YEX/>YEX/>Y]/]]9/ +X!Y9 +X!Yа01!6#6'&'&##7373!1vwxӋ -͹;1*/7: F/EX/>YEX/>YEX/>YEX / >Y +X!Y01!3!#!ᢵ?>:]d:o!a"#9EX/>YEX/>YEX/>YEX/>YEX / >Y +X!Y901'&&''&&7367367j ݫREm³ ^^d_P#--NZz$xw/O:!LEX/>YEX/>YEX!/!>YEX / >Yа  +X!Y01'&&''&&7367367zݬZ{zzD<[{z OOUxz:(MEΥ&&&@Pxk&fwum.t9 EX/>YEX / >Y 9/ +X!Y 9/ а а  +X!Y +X!Y01!'!#733!6676&': 5998ZMh WV:Ğ:EE{i[wI+,-9EX+/+>YEX/>YEX(/(>YEX / >Y+(9/ а  +X!Yа' +X!Yа  +X!Y 0136676#&&'&!%677'&'&77#3!|Z=>]4/w@W⨡N=ndPPW,S$Dz%&9EX/>YEX$/$>YEX!/!>YEX/>Y9/]?Oqqrq]q/?]orв9  +X!Y +X!Y +X!Y90136$#4&'&!!677'&7#3LAçp_}0]vvfkPgݨju_e_0:S WEX/>YEX/>YEX/>YEX / >Y 9 / +X!Yв901####3#!ULM[JJPZG: WEX/>YEX/>YEX/>YEX / >Y 9 / +X!Yв901####3#!'t44rhv%H()):FL[ZU}EX/>YEX/>YEX/>YEX/>YEX / >YEX/>Y9/а +X!Y ав901!3#####!#3!vFLMMZYWPJJHGNK:EX/>YEX/>YEX/>YEX/>YEX / >YEX/>Y9/б +X!Y ааав901!3#######3!'QiCu45s4Q%H'y))(:FL[&/"x#$9EX/>YEX/>YEX/>YEX/>Y9/а +X!Y аа" +X!Y0132#6'&''#''&#6$333B <=wmr==$<h'rC4%xq|) : ZEX/>YEX/>Y9/аа а +X!Yаа  +X!Y0137667!#76'&''#''&!)ּ 5OT:  Ť=3P \GHZ$( )*9 (EX/>YEX / >YEX/>YEX/>YEX/>YEX/>Y 9 / +X!Y  ааа %а ( +X!Y01!67#3!!3#6'&''#''&3GC!_mspE hh<=mr>hcl|wrsrC4 'w*.:"&EX / >YEX/>YEX/>YEX/>YEX/>YEX/>Y 9 / +X!Y  ааа #а & +X!Y01!767#3!!#76'&''#''"! _OT 5OTG j<:" ¤=3P\GH!-63/EX / >YEX/>YEX/>Y  +X!Y-а-/, +X!Y,-9$ +X!Y3]36а6/66].3690а0/012676&''%7#'&&766332676&''777#5 pszajd 4QYQmk o͖6zay cqp,qk?6oDz9[~}y H2(1./EX/>YEX/>YEX/>Y +X!Y(а(//(](](q/(q(](q_(r' +X!Y'(9! +X!Y.0а0/00]).09+а+/012676&'%7##&&76632676''777#5 gmgvVS"Rgq ?o͖hVS?MIv3#vKskIy6^}_Q i$i%&9аEX / >YEX/>Y  +X!Y 9|/ +X!Y  +X!Y01&'&76$&!676&67!B 7G`(  1;:nPTST78YEX / >Y +X!Y 9|/ +X!Y +X!Y0166'.767!&!6&TXXx8 |y5M~ x2K@EX/>YEX/>YEX / >Y 9 +X!Y017663#&#3 <}Ij3 hE§nw"}x<PG9EX/>YEX/>YEX / >Y 9  +X!Y017632&#"#3,f<4$J:X2Wi q:js5)JEX / >YEX/>Yа а  +X!Yа% +X!Y"01#7&'&777''776762;4$ "  n!awz'z=bf"reFgf'D-'MEX/>YEX / >Yа  б +X!Y +X!Yа%017'7&776654&''776ωJEqEqq& ln&#!i/dcd+ʑ39AgtV1DLEX/>YEX / >Yа в 9 +X!Y  +X!Y# 9(а1а<аFL6E } m0W[L ʼnn]N&Tqp-2Yk~SuC/2UhŁz;5$lrOQA`eoYR+?GEX/>YEX / >Yа а +X!Y  +X!Y 9$а+а6а6/-а-/, +X!Y-2а2/; +X!Y-DаD/GаG/01'&&''&&766767736774'.#&'766677t*٤b!},׮')BA[&$ YWRp-| XRX-5F } m/WUID OD/-ckykdz3D ʁM:5$mqRP5merWo"*wEX/>YEX/>YEX"/">YEX / >Yв 9  +X!Yа)а)/*а*/$ +X!Y*'а'/01#&&''&&7367367%7!!#7m ۫REk³ ^^d`O#--NZ$xw/kk}}O (bEX/>YEX/>Yа а +X!Yа а'а'/(а(/" +X!Y(%а%/01'&''&&73673677!!#7{ޫD{zzD<[{z OOUxz:(ԟ&&&@Pxk&fwum kkfD/EX / >YEX/>Y а  +X!Y +X!Y01#&&776$#6&'&YEI&  h*|{n 'ٜnNMRD/EX / >YEX/>Y а  +X!Y +X!Y01#.77>'6&'&Fi:別k_jfnr+ިe䈣@>/EX/>Y01'#'7'73',R%R TUrrutLaq/ +X!Y01'7!7* &#}l -/ а / +X!Y а +X!Y01>'76'&7<@xnw=eoz`,TCJ )-(of'deW /а/0173%Mrr9;QW /а/01'773GPHy8 #/;GS_?/K/W/3/EX/>Y +X!Y?а?E +X!YаKаKQ +X!Y!аW'аW] +X!Y-а39 +X!Y0166'6#&662'6#&663'6#"66'6#"66'6#&66'6#&66'6#"66'6#" q[XilQS qZXjlRRq[XhkQS{sXXhkQU1 q[XhkQRB sZXilQT p[XhkRT&sYXilRSYefXffXfiVffUgeXfdWgeXfdYeeXffYeeXffXeeXfdWgeXfdOcS "'9!// //&/EX/>YEX/>YEX/>Y01#'37%%77%'%'7 e d~ 7 @L=h>4i]C^E:`Q \E< [DMNO>?/Cn&'_BQEX/>Y 01/D&'ZEX/>Y 01.qw9EX / >YEX/>YEX / >Y +X!Y 9/ а а +X!Y  +X!Y01!'!#7373!6676&'a 5""83Mh WVĞE{i[w:O9EX/>YEX/>Y9/ +X!Y +X!Y01#'#676&'%!27'7Zcdbsj85 ~c<^ZUt:m{^6MW~]`R&p"'(9"EX/>YEX / >YEX / >YEX/>Y 99 +X!Y +X!Y01''&'#76'76&'&27'767 WtSiedaokr[;DTNtEH^{8{y@<T)x^ho5 6 9/EX/>YEX/>Y +X!Y01#!#!3P<P$v//EX/>YEX/>Y +X!Y01!#!3c8_:<C^9 /EX/>YEX/>Y +X!Y9/   +X!Y +X!Y01!76676&''#!XQjte/a$z:^ 9 /EX/>YEX/>Y +X!Y9/   +X!Y +X!Y01!'6676&''#!_1cd $yzTxӄ& :u&Q0:&QDj&,Q/W:&QF6HcEX/>YEX / >YEX/>YEX / >Yа//]] +X!Y9а01 ###7##3333H(R+,drpd-.ED r-:|EX / >YEX/>YEX / >YEX/>Y а/]]q]/]or  +X!Y 9а01 #'#7##33737Wٻ2'#aPQa&+'K:3:6mEX/>YEX / >YEX/>YEX / >Y9//]] +X!Y +X!Y 901##!7!33#q3o\br~6t:EX/>YEX / >YEX/>YEX / >Y а / ] ] q ]/ ]o r +X!Y +X!Y 901##!7!33#PpDPn\36;w&,Qe/6:&Qf: `EX/>YEX / >YEX/>YEX / >Yа//] +X!Y +X!Y01!!!#!#3m&u9u>r_$: EX/>YEX / >YEX/>YEX / >Yа/o]]?qqrq]q]/]or +X!Y +X!Y01!!!#!#3DQPPeՙ_2:Bok9/EX/>YEX/>YEX/>Y9/ +X!Y +X!Y +X!Y01376676&'##!#!jtI/@b$A:Z/EX/>YEX/>Yв9/  +X!Y +X!Y +X!Y01'6676&''#!#!i$TLwԄ&"x_:q*9EX/>YEX/>Yв9/б +X!Y +X!Y- +X!Y-9(-9* +X!Y4 +X!Y01&''.'&7777&76676'&'&ͣق 1!!:L)"'dN$5^t 1  h" EB\`MV65mw?9wYEX/>Yв9/ б +X!Y +X!Y* +X!Y*9%*9' +X!Y0 +X!Y01&''.'&6677&77666675&'&nd3pl`x.fI#> u#CanLJ W! 5BpҀtk8`V YO۝xN)+&<Q:&\Qc]/EX/>YEX / >YEX/>Y +X!Yаааа  +X!Y01!7!53!!!33#!d~k=_W:M /EX/>YEX/>Y +X!Yа +X!Yа 01!7!#!33#!a⢶}d8](AD&Q%{;&Q%9R9EX/>YEX / >YEX/>Y9|/ а +X!Y013673##7&&7K  nk;8b|nu}..K7F5PR6 !P\# ;KEX/>YEX / >YEX/>Y 9|/ +X!Yа01!##7&&733673^J4e24{64=Za ԭ<+(G9EX/>YEX/>YEX / >Y9/ +X!Y01336#6'&&'&pLK okda|7:E6QSK#.ZEX/>YEX/>Y%9%/ +X!Yа% а +X!Y* +X!Y01&&77&&77!67%676&'&sm  kN<  ^U"<gƘ($v+L 'ZRd^ZS.%`WN<:GS)aEX/>YEX/>Y$9$/$$] +X!Yа$ а +X!Y  +X!Y01.77&&76$!67&76'&&PW`]?F =\=hHm4 i7^-ض@ASQAXhi54Tg5D_9/EX/>YEX/>YEX/>Y9/а +X!Y +X!Y013#33376676&'%mx_ q-V:e/EX/>YEX/>YEX/>Yа/]/]]а +X!Y +X!Y01'6676&''#333l$ PQP` 袥%o3:6e&FF:&\CGmh/EX/>YEX/>YEX/>Y9|/q`p]]  +X!Y +X!Y01!3'"'7327!#rs•.I8(#xKon$G+:EX/>YEX/>YEX/>YEX/>Yа/o]]]q]/]?q  +X!Y +X!Y01!3'"'7327!#RR,K5+#ZP:+m2:;w&,X/C:&Y;&10:&Q*$a%&9EX/>YEX / >Y 9/ +X!Y  +X!Y +X!Y01'&&7776'&&'&'6667q ݥc #D(G U-| c`V/6#YP<{h9EX/>YEX / >Y +X!Y9 9/ а  +X!Y +X!Y01!7!'&&73676&''7|R# {n$溃ltq5:e9 /EX/>Y +X!Y9 9/а  +XY  +X!Y +X!Y01!7!'&&73676&''7,L'ڽ |ps~E&B&&@TE:&M&&T ]01E+&<TE:&\T1 R9 EX/>YEX/>Y9/  +X!Y  +X!Y013%&&76$3%"c.cz{s=P)8w23 \!"9EX/>YEX/>Y9/ +X!Y в9 +X!Y01%&&76$3366'&''%%"+`dKsb}x=RPQP8yLA#3459$EX/>YEX/>YEX/>YEX/>Y9 +X!Y99& +X!Y/ +X!Y016636'7'&''&&'&7&'&677Uˀ]mB9 -̗?kaW3N@$%?J A"cddcԵ=;BYEX*/*>Y.9/ +X!Y  +X!Y9* +X!Y#*9016&''72676&'%7676'3'&&7 cc {9r_FR ;?]W 🏗uvr|jpzQ4yG\cddch:'\EX/>YEX/>Y +X!Y9(9/ +X!Y +X!Y%901%676''&&776''72676'%7Rj( q}} u  >SNN١|rM YQ O8'Y/EX / >YEX/>Y( 9/ +X!Y   +X!Y9 +XY0172676&'%77'67#&'&776&' { $hW/`! gjyxؼq;@35ݔLgw+G%?sv:#Y/EX / >YEX/>Y$ 9/ +X!Y   +X!Y9 +XY0172676&'%77'67#&776'v ag krw "g^,\)XSQVPz--~)(KەLs{+T ;$e#%&9EX/>YEX!/!>YEX/>Y +X!Y +X!Y! +X!Y901!#776677!6'7'&&7+w'?K3~+GA7 ݼ #$>I =!cddc©:$e%&9EX/>YEX!/!>YEX/>Y +X!Y  +X!Y! +X!Y!901!#776677!6'3'&&7QR5N&d~ b{C7 y䐛lJ#%@M&^^^^;<}EX/>YEX/>YEX/>YEX/>Y +X!Y 9а/]_]]/]qOq +X!Y016'7'&&7!#3!XB5  /Xosr#$>I?cddcĩ'n#:EX/>YEX/>YEX/>YEX/>Yа/o]]qq?q]/]q +X!Y +X!Y901!#3!36'3'&&7PRR{A8yⓙ3:*#%AJ)^^^]ƨj"BEX / >YEX/>Y  +X!Y +X!Y 901&&'&77&'&6674'3H '-jɋE~#'hW LO\VE46h²ZYLR?EX/>YEX / >Y +X!Y 9 +X!Y01%667'3'.776&#&Jj.eyX*Ҩj9a~  {?rtutd8D=ڱgFt EEX/>YEX/>Y +X!Yа  +X!Y901!7!!676'7'&&7g3_+CCkY_^ݘ Gbmcddchì}:O9EX/>YEX/>Y +X!Yаа  +X!Y901!7!!'&''&&7qaB9 q㓚 $%?KQOOOؠĪj#,i-.9EX/>YEX/>Y +X!Y 9+а+/, +X!Y,+99# +X!Y01"677'.76%&&766$'6&'&ͽt 2_dvkwu{flzc0]iewm@HqzEe&T$EI:&T:rL / ]а/а/ а/0133&&7ꣿX &HHH ASO>6737.V"FL@"Fff@^kBEX/>Yа/]@  0] +X!Y +X!Y01!7!7!7!yykg1EX/>Yа/01#76dp$JpEX/>Yа/01'6773dv$Jy/ +X!Yа/01'6773cs#Kj` /а/01&'&77 &jgMFGEEj111>&9& 5$/ +X!Y а /а/а/01'6773'6773ht'fgt'KKwQ LEX/>YEX/>YEX / >YEX/>Y  +X!Yа01!#!7!3!8y|;;_v``~EX / >YEX / >YEX/>YEX/>YEX/>YEX/>Y +X!Y +X!Y аааа01!!#!7!!7!3!!!vAB~z~;;vy` v,  9/ +XY016632#"&5uVQiqZRg^qmX*ZnjU9&9S&'>R' 9/  +X!Y014676&S:/(;//;h/='/<;&*8FT)/'/EX/>YEX/>Yа/а/ а /а/. +X!Y5 +X!Y.<а5CаJ +X!YQ +X!Y016'&''&&7766'&&77>'6776&'&6776&'&6776&'&;BpfxHF >dx 1|}yY=bqbDBFc BCFc CBGc BCFc DBCe BCHc <Y 01~JMEX/>YEX/>YEX/>YEX/>Y9  +X!Y01632#7&'&#\qr SMfcC`|B~o 'EX/>YEX/>Y'9'/ +X!Y +X!Y а а'а'#а#/##/#]$ +X!Yа#а +XY +X!Y01!%!7677737#7376$'6&'&!!! TCi% dcoRJDc&G}}ѱky}} B#&)EX/>YEX/>YEX / >YEX / >Y 9/а/]$а$/а/а/ +X!Yа#ааа/ а /а/ +X!Y а)ав& 9' 9013#3##!##737#733!3!'#37!%3'7#jUjUUZZ7DyyW<j蘔Дק9% )EX/>YEX/>YEX/>YEX / >Yб +X!Y  +X!Yв!9!/ +X!Yа/) +X!Y01#327'&&7#!'#733>'&'' rO 5 BDkl notcbx[/.ExC `M \pjk:&6W4 #'+05:+;<9+а+"а+$а+-а+5а+6EX/>YEX / >YEX/>Y 9/а/а +X!Y  +X!Yа аааааав  9 /"а$а&а(а*а - +X!Y0 93 95 9(6а6/9 901333#3#####73'#7333337#37#37#7#%7?J練ݨ馯kE=gEƨc4{3/ 6$˜˜$   :LEX/>YEX / >Yб +X!Yв9  +X!Y 901#6'&'%#3273'뙏56 e*(tr˫8L0,_:YQ%&'9EX/>YEX / >Y% 9%/ +X!Y  +X!Yа%а%а//] +X!Y +X!Y а"01!7'&7737#732&'&!!!.  r_|rw >;Y"jc.zuJGx"6|} $}C#(EX / >YEX/>Y ( +X!Y$а$/@ $$ $0$]а/] 0]]#а#/##]@ ## #0#] +X!Y +X!Y$ +X!Yа$ а /$аааа"а01##737#73723'7!767%&'!c*' Ԙv |}rT68:0^~u3.4^ZYOIrbEX/>YEX / >Y +X!Yаа/а +X!Yаа/  +X!Y013##7277!&&'%7!)'I4|cfI|hI^grt]d EX/>YEX/>Y9/а/] +X!Yаа аа а а +X!Yа а аааа +X!Y9/01'&'?7%3%%677 Jrb"!;-!!a%NTnonoTrrrsk:VEX/>YEX/>YEX/>YEX/>Y9/ +X!Yа01#76'&&'##7773vU  i]'"/6(oKH|g3%ι+j#5pEX / >YEX/>Y 9/ +X!Yа а /  ]  +X!Yаа а  +X!Y01!##737#73#%!2676&'%00EE~&z9)7;8/:/EX / >YEX#/#>Y а/ 9%5E] 9)9I]  +X!Y +X!Y#а/#- +X!Y4 +X!Y01'&&7766'6&'"267'&&77666776&'&' ss  |o6@A\ 8<YEX/>Y  +X!Yа +X!Y а" +X!Y01&&'&7776766676'&U dmel^qz RPm~CnOX!!qc52Ub_o m5 *EX'/'>YEX)/)>YEX/>YEX!/!>YEX$/$>Y а /а/ +X!Y  +X!Y +X!Y#)$9(!)901!7!'&&77666?&'&##33IV Ж JKJNk RmǴdzÓW’V>cge` c)mbvy nEX/>YEX / >YEX/>Y9/ 99в 9 а +XYа а01#33####7!:4FGY^jEq^XjPYOxps8Q|Re9EX / >YEX/>Y 9/ +X!Y +X!Y 9  +X!Y01%'&&76$!7&!&d` ;_Έ3 3]]t1g+|lt'J'$EX/>Y01''$EX / >Y01'!y'w$EX/>Y01'#'$DEX/>Y01M7,J/EX/>Y9/  +X!Y +X!Y& +X!Y016'.'&'6'&?6&6776&dV4AyRKFT "lV rc$ KE.5e`#Dz1}rATy$+F(/EX/>Yа +X!Y01#!#!AL 7/EX/>Y +X!Yа  +X!Y01!!77!!OZc-BI҇D"EX/>Y +X!Y01!7!+A= 9/EX/>YEX/>Y9 +X!Y013##7!i.PtMR*;FEX/>Yа а /а +X!Y ' +X!Y/а801&&''&&'&$6666776&'&'&7&&'&67i(} (zYwjT?8N^ibsiTMOǟɥ巬Zơī̉n]*J:QSi`)OsE?9EX/>YEX/>Y +X!Y +X!Y01'&'7766&#"5A4ŝ6\"0(#k  1-)o/а/а/ а +X!Y +X!Yаа/а" +X!Y& +X!Y")016323267'"&''&#"636327'"&&#"mSP81^:YEX/>Y99013# =(r3x'C$pyw:%EX/>Yа/а/а/01#3#3NOy?_ /а/01'6773Fc[ J{yR?tk&JJXkEX / >YEX/>YEX/>YEX/>YEX/>Y +X!Yаа  +X!Y013#?676&'&3#!#3[xsGF,qo" ֣8dd_#3WU:tb^EX/>YEX/>YEX / >YEX/>Y +X!Y +X!Y а01&#"3###73766#;cxࣵئm`eo_sU*(tW'+EX/>YEX/>YEX / >YEX*/*>YEX'/'>YEX$/$>YEX)/)>Y ! +X!Y%аа аа  +X!Y +X!Y013#73766&'"!766&'&3##!!#3wԠ6K01YuHD/so" ף}oy j^ye&3WUU:t*EX / >YEX/>YEX#/#>YEX*/*>YEX'/'>YEX/>Y#$ +X!Y(аа#аа  +X!Y +X!Y013#737676&#"!766#&#&3##!wzf5K:([u֪Vq<"ߣ}^N nglk((d_UUt&EX"/">YEX/>YEX/>YEX%/%>YEX / >YEX/>Y +X!Yаа  +X!Y" +X!Y01#327'&&7#73&'"##737663rO"2 BAnl n3EjUr͵Ş<`M !$kiSxf)vMEXH/H>YEXA/A>YEX/>YEX./.>YEX / >YLб +X!Y  +X!YаH +X!YA.9A" +X!Y:.A9:' +X!Y2.A9.5 +X!Y01#7'&&77#7376'&'&#6&'&'&&73676''&7>3&7663]lR8 K:ajj ez hX] '< yrqed  um[Yݔ }4d $V+*;@DJPW[_cgkow{>/EXG/G>YJ+|{+x+;+ >G9 /а/а/ а/Q9Q/p +X!YQp9   +X!Y& +X!Y*а*//а//5 +X!Y>= +X!Y>lаhаdа?а=mаiаeа@аGH +X!Y`а\аXаKаGaа]аYаLаR +X!Yw +X!Y01'&&77666&'&673#"&'766733!7373!#%7!#73676'7!!7!!7!7!!7!!7!7676/#737#73#73%#737#73#73 _^t `]t `^_7'O48:;V 9xU a; kMRfYX,9 c7o$$m72-.2moo RJno no XW{ E!^o-oo,oo-om,mm-mm,mezzane{z`%JB09X0!NKCNNHr?RQEOO[RU_8);qqttTHKtttttt8qqqqqqQ7~~~\s $(4%/!/+%а/!а/ 9 /9/01 4676654&#"36632#33#3#AD$J\:+98][/KR11::'J34@4_YEX/>Y +X!Yв9 +X!Y901!!7676&'&66!/cc 50BP x@{t*TJ06K>u~f{}3k3EX/>YEX/>Y9/ +X!Y01!#7%3yhdU8q% H9EX/>YEX/>Y +X!Y +X!Y01&&7766&'&77  4ce z1|ij7ɶk#[EX / >YEX/>Y 9/ 9 +X!Y +X!Y  +X!Y01'&&7>#73$6776'&&'&v v *,jvP,  [Le bpըwiU vPAD03Xcrh(".yEX/>YEX / >Y, 9,/,],,],/,],,q +X!Y,9,9   +X!Y& +X!Y01'&&767&&7666&'&66&#"326NTzt BE糠 o]d jaeIeOY aPZca)YiRg(M`Shp_TblkL_fUL_fp3EX/>YEX/>Y +X!Y901#!7!G`dK!XEX/>YEX / >Y +X!Y 9/ 9 +X!Y  +X!Y01#6'.77%&676&L'{ uO )w+Q, cbe ` {եw}E<[PB(oeJ`EX/>YEX/>Y +X!Y9/аа +X!Y +X!Y01!!62'&&'3676&'&_cmiNl ocgmFG1`ntb{E BEX / >YEX/>Y 9/б +X!Y аа  013##!73!..Wq_"| 1(EX/>YEX/>Y9/]q]/]or +X!Y а( +X!Y(9а" +X!Y012676&'&66'&&7676''cnt `\] VO{u&4rk phXP[\Oa![kUC->i]OEX/>YEX/>Y +X!Yв9 +X!Y в901!!7676&'&6$!FNu ]Ss UdmcLfrlJ3EX/>YEX/>Y9/ +X!Y01!#7%3"bJ"H #$9  EX / >YEX/>Y  +X!Y +X!Y01&&'&77654&'&67#‘ #XUn!X[mб=? ][39cuHz M 9EX/>YEX/>Y +X!Y9 +X!Y 9017!!7!7!_ote8 9EX/>YEX/>YEX/>Y9013#3EKKBsm L 9EX/>YEX / >YEX/>YEX/>Y99013##3(a"FU8)YEX/>YEX/>YEX/>YEX/>YEX / >Y9 9  9017373#5#7kQSZ^U&RBw=\[s lz8 9EX/>YEX/>YEX/>Y90173#7,z$[acsEW/EX / >YEX/>Y  +X!Y 01'&&7367Wȿ utzܳ u{ mB/EX/>YEX/>Y +X!Y01!#!7!&~~ 'WEX / >YEX/>Y 9  +X!Yа +X!Y% +X!Y"016/$76677'6'&'"'&&726}> ))7q B |x1{6'fΌ ĝQ4E^Rq97{ǥeq\ OEX/>YEX/>Y9/ +X!Y 9 а +X!Y01!##2676&''3N Xw hn?a# Xt`[hE7K#;EX / >YEX/>Y  +X!Y +X!Y01%'#&?&&'&676 B7 @X* ~n |mAf '5F2zض_zн) O 9  EX/>YEX/>Y 9 /  +X!Y +X!Y01##%2676&'%L } ogJ řre_lJNH !9EX/>YEX/>Y +X!Y +X!Y01&&77&&'&676X ?W® }m ~l+ G)x׶_|Ѽ L 9EX/>YEX/>YEX/>YEX/>Y9901!##33ϭJ˭tu`9EX/>YEX/>YEX/>YEX/>YEX / >Y99 9013## #ʴGjLDssjy#09EX/>YEX/>Y +X!Y017!!37˴ L 9EX/>YEX/>YEX/>YEX / >Y9901#373#°@˴_|0 9EX/>YEX/>Y  +X!Y013'&&767䷌쨭 [~ţod*$9EX/>YEX/>Y013#3ʶ i 9EX / >YEX/>YEX/>YEX/>Y9|/`pq]`p] +X!Y01!#!#3!3ϴVW˴YHZLA_ !9EX / >YEX/>Y 9  +X!Y +X!Y 9/ +X!Y01%'.77'&'&77!7!?]!;ڔ  oj-ÖQW;6ȸ_zN I 9EX/>YEX/>Y9/ +X!Y +X!Y01!#!!!!W? s,p -.9EX / >YEX#/#>Y# 9  а а  +X!Y +X!Y# а#'а * +X!Y016/$766773'6'&'"#7&&726}> ޯ,+)7q ZH ӷ,-~|x1{6'fΉQ4E^RYEX/>Y9/ +X!Y +X!Yа ааа +X!Y01%%!767773766'6'&!#2! f# ꭧ `} \5)ryjҮro9EX/>YEX / >Y 9 9/|/ +XY +XYаааа0133!!!#7!7!7!733Yo'' ٶO>v EvvPvt39EX/>YEX/>Y +X!Y01!#!а = 9EX/>YEX/>Y9 +X!Y01!!3'!r &}4lW'JX"j#$9аEX / >YEX/>Yа/]] +X!Y  +X!Y +X!Y01!7!&77&&'&676;, @W!ij |nm^;, H4xٴ`yѼ8 9EX/>YEX/>YEX/>Y9013#3#'dǝ *s\l` g 9а EX / >YEX/>Y +X!Yа/]] +X!Y   +X!Y01!!7!!7!!7! vz {I@ 9EX/>YEX/>YEX/>Y +X!Y01!#!#!̰  E 9EX/>YEX/>Y +X!Yа  +X!Y01!!77!!Y~?:_`Qq 9аEX/>YEX/>Y9/в 9 /а  +X!Y +X!Yа01#7&&7>773%66I t u npy vt | ~]9EX/>YEX/>YEX/>YEX / >Y 9/а  +X!Y01$3#&&'&733;45$88 44 d]:b8!_e8@Ar j"[#$9EX/>YEX/>YEX!/!>Y  +X!Yа +X!Yа 01%$76&'&!77&'&$7!U4 J`)ԲIC$ͭt9)76/,Νlk9EX/>YEX/>YEX/>Y +X!Yв9/ +X!Y +X!Y01!7!!67$76&'&#o:  ]r~f4θn2G7m !9EX / >YEX/>Y а  +X!Yа/]] +X!Y +X!Y01'.77#&&'&!!7#ȊV %9mx.RygLzX0նrBAn z!"9EX/>YEX/>YEX / >Y  +X!Y  +X!Y9/ +X!Y +X!Y01#!!#732677!2676&'- 6ms6ʜC"c!mMIr dfkJY|fWi9EX/>YEX/>YEX / >YEX/>Y9|/ 9/ +X!Y +X!Y  +X!Y01!3#!!#32676&'C5ZL 5WW˴Jr bhJYzhVjmY9EX/>YEX / >YEX/>Y +X!Yв 9/ +X!Y01!7!!6#6'&'&#o::9f2ػe8.2 C 9/EX/>YEX / >YEX/>Yб +X!Y01!!#!3!3>>˴5e  ^9EX / >YEX / >Y  +X!Y 9/ +X!Y  +X!Y01!'%!6676&'%2L)qrgJ xg[fYW9 /EX/>YEX / >Y +X!Y  ааа +X!Y017667!3#!#%!-l'bV<;W#2sLEb T\C 9EX / >YEX / >YEX/>YEX/>YEX/>YEX/>Y  9| / ]` p ] +X!Yв 9 в 901'###33333#hWXZw[XYO|<  [2()*9EX/>YEX/>Y +X!Y 9(9(/(]/(]((]((q' +X!Y'(99! +X!Y012676'&'&66'&&73676%'7 3kEC U`}≵ف aW6%M-,Qb!]kTf[ L 9EX/>YEX/>YEX/>YEX/>Y9 9013##3ʲ ʲsW i 9EX/>YEX/>YEX/>YEX / >Y9|/]`p] +X!Y 901##333#mW˴XXp yO9EX/>YEX/>YEX/>Y +X!Y  +X!Y01#!#776677y˴mu6ǕK)`| osnXTD9EX/>YEX/>YEX/>Y9  +X!Y013#"'77273>c|P54:^R'mdpe4 o C 9/EX/>YEX / >YEX/>Y +X!Y 01%3#!3!3רg;l˴5T Z.I9EX/>YEX/>YEX/>Y9|/ +X!Y01!#'&&7373dU9:f1־c8.12 M 9EX/>YEX/>YEX / >YEX/>Y  +X!Y01!!3!3!32˴{{  S 9/EX/>YEX / >YEX/>YEX/>Y +X!Y а 01%3#!3!3!3Ng<˴{{T  P ^9 EX / >YEX/>Y   +X!Y  9 / +X!Y +X!Y01'%!7!6676&'%0JLsqhJJyfZgY& O 9 EX/>YEX/>Y 9 / +X!Y +X!Y01'%36676&'%hLʲLqriJJxgVkY v !9EX/>YEX/>Yа +X!Y9|/`p]]`pq +X!Y +X!Y0167!7!6'&&'&6$'&&'t{-H |i"& "޽zwzCBl~vOӳ&'(9"EX / >YEX/>YEX/>YEX/>Y  9| /` p q ]` p ] +X!Y +X!Y# +X!Y01.7#3366'&&'&67`Y˴W@,ӏW!Ű ~n ~m 3FGzѵgz@ c9EX/>YEX/>YEX / >Y9/  +X!Y 9 +X!Y01#&&7663#!'"!}\[ ʵTBv&ds!)|k, g 9EX/>YEX/>Y9|/]`p]`pq +X!Yа  +X!Y 01###73!!3eYYX=9/EX/>YEX/>YEX/>YEX/>YEX / >YEX / >Y9|/]`p]`pq +X!Y9 +X!Y в9013######33333@˛UYEX/>YEX/>YEX / >Y 9| /` p q ]` p ] +X!Y 9 +X!Y013####333.U<^mW˴XXIMT  y9EX/>YEX/>YEX / >YEX/>Y 9|/]`p]`pqа +X!Y9 0177333#'#7##3?S'-6pA)%LX˯ i:9EX/>YEX / >YEX/>YEX / >Y9|/]`p]`pq +X!Y +X!Y 901##!7!73#ylWYYp P8$1239%EX / >YEX/>YEX/>YEX/>Y9/   +X!Y +X!Y' +X!Y'9$ +X!Y"$'9. +X!Y01&''&7727&6675&'&̛ uKwBi0?︖ )H&  {7<P 'ѐJ) .̫Anڶ ci<.te&&m[9/EX/>YEX/>YEX / >YEX / >Y9 +X!Y 90135###3(aիTYEX/>YEX/>Y +X!Y +X!Y а 01%3#!!7!!!3ϩgYEX/>YEX/>Y 9|/ +X!Yа01!##7&&7373673cUgg'':; /-Ysf" ծc0* 2G9EX/>YEX / >YEX/>Y9/ +X!Y0136#6'&'&#U}P ::|f=2`ye8.3/a'l()9 EX/>YEX/>Y#9#/#] +X!Yа# а +X!Y +X!Y01.77&&76!7&6'&&j HR87ՓY w-~]*  ɡcmPBitHUc=^gAd!a"#9EX/>YEX/>Y 9 / +X!Y +X!Y  +X!Y01'.776'&&'&'6767%d"ޕY2 u*PsB { uYBfuIUX}a?]ii 9EX/>YEX / >Y +X!Yв 9/ +X!Y9 9  +X!Y01!7!'&&73676&''7 trf ps~sXXctgXcJXv9аEX/>YEX/>Y +X!Y9|/]`p]`pq +X!Y +X!Y01&77'67!&!6& @W..w;, H/t'%()9EX/>YEX / >Y 9/]а/@ /?O]] +X!Y +X!Y   +X!Yааааа"в"]="]L"]$ +X!Y01!!%%%!7677777#73766'6'&y'/ D&檧 Yzy\yoEg1y\y:Ү"#$9EX/>YEX / >Y" 9"/ "]" "]б  +X!Yа  +X!Y"а/@ /?O]]б +X!Y +X!Y 017'&&7737#736$&#&!!!tvqPy pl =\$YoZq~ymyym)(*+9(а( а(EX&/&>YEX(/(>YEX/>YEX / >YEX#/#>Y а /а/] +X!Y  +X!Y +X!Y"& 9' &901%!7!'&&77666776&'&##33 З IKKQl LIQp .J˭SIIVZfi]U\dm_tupyEX / >YEX/>Y 9/б +X!Yа а / ]@   . > ] +X!Yа а  +X!Y01%##7#737#73#%3'6676&'%H g s h_鴴YPȟY}eapx"$oEX / >YEX/>Y 9|/]q  +X!Y$ +X!Y$9 +X!Y016676&#"#663'&&5332676''NB]>2p }~vwB:@[ W=611]eyvawB+o|l27@5fs FEX / >YEX/>Y  9 /б +X!Yа в 9013##7!733 hg A:+p#cEX/>YEX / >Y +X!Y 9/а а  +X!Y +X!Y01!!632'&&'72676&'"Fv;@Bmu oAVAYEX / >Y +X!Y 9/ 9 +X!Y  +X!Y01#&62&&776$3&2676&< VRfjv  ]=:~W<Nlz8nQ"G`W=9J/3EX/>YEX/>Y +X!Y901#!7!;NZO x# ,EX/>YEX/>Y*9|*/P*`*q***q***] *0*r +X!Y*9 *9 +X!Y$ +X!Y01#&&767&7666&#"3266&#"326sl}~[xtB6>UB6>V/606I8.2NKqI;viwbI7ik}wB17@427A*5YEX/>Y9/ +X!Y +X!Y +X!Y01#"&766#'726'776'&&#"MZkz  XQ=7-=U;@@q{3^K>/8\BYа/а/@ ]а/@/?O_o]  +X!Y +X!Y013#4632#"&732676&#"SeGCYaFE\R>!:""DqFh]DEf[DP3'4 d 9EX/>YEX/>Y 9 / / ] ] +X!Y +X!Y +X!Y01!!!!!!1BY:GIR*8FEX'/'>YEX/>Y'*а*/ +X!Y'9/9/]8 +X!Y89 '91 +X!Y< +X!Y'C +X!Y01'"''&&7667&767&77676'326676&'6776&'&/! |IMB `q_& &kqO r\e SnuYcp]b\a$cM89Fc`yY0/?|^l gS?yIR3Z9?DVox[Vuu^KR%p"&'9" EX / >YEX/>YEX/>YEX/>Y 9 9 +X!Y " +X!Y01%'&&'&76673#76776'&'&2~| Pl`o13Ե9VuYEX/>YEX/>Y9/ +X!Y 9% +X!Y01#2#&'&776&'%2676&'%mm!   ih% zt׿p@357(:*-F.Ett~Dj e 9EX/>YEX/>YEX/>YEX / >Y9/]/] +X!Y 901##333##qo]ar~5% Q 9/EX/>YEX/>YEX / >Y9/ +X!Y 901##333#W r|27  DJ L 9EX/>YEX/>YEX/>YEX / >Y9901#333#yyv !Dx2% S 9EX/>YEX/>YEX/>YEX / >Y99 901##33#<[ s E9EX/>YEX/>Y  +X!Y +X!Y013!26776'&'Re8E01f|G7P9EX / >YEX/>Y 9 9  +X!Y +X!Y01'.77#&&'&7#ȊV %9mxvlLzX0նrʶcu  ~ 9 аEX/>YEX/>Y9/]/]] +X!Y9 +X!Y +X!Y0132676&''2676''~ OVBn Wdo S]fZTb]S T 9 EX/>YEX/>YEX/>Y9/ +X!Y 901!#3#! #hs'= /а/01#76gK=Wnfr\8/  +X!Yа/ а /а/а//01#&&'567%3#\ =YKVbmo`s9<*f/]]p]а/@ /?O] а /  +X!Y +X!Y аа/@/?O_oq@/?O_o ]а/@ /?O]01#"&&'6632767' \B%s$ES _F2C%D[قTcC URf)Y T/а//]/аа// а /а/   /013#'#3#믈Y" b//а/а//]а/|//]/ а /  / ]01#'#3#3G|ϝUy//а//]аа//|/]@ /?O_]а/@ /?O_]9 +XY901#'37766''7޶6+Va wrDJ 乸| j]PC6E=/а/@ /?]9/аа// а /@  / ? O _ ] а /? O ] а/  +X!Y  +X!Y01#'#%37#"&'6632767ڷO ]=)q'>"O ]@&v&@"䝝FYJFE]IF,EX/>YEX/>Y +X!Y013!#!NQа00 \/  +X!Yа/ а /|/@/?O_o ]@/?O_o q@?O_o rа/@/?O_o]/01#&&'567'\ =Y9qbmo`s9<E E/  +X!Y а /а/ а/а/9 9 +XY01'&&527'77676E |z/a@R  fmp`rs|3S }b?sEX/>Y01c sEX / >Y 01!sEX/>Y01"sEX/>Y01&#sEX/>Y01~$sEX/>Yа$01%sEX/>Y01AP !9EX / >YEX/>Y 9 9  +X!Y +X!Y01'.'&$#&'&'&,ۃ ]=OߗMe2gmߊSkT|l QC!_"#9EX / >YEX/>Y 9  +X!Y +X!Y 9 / +X!Y01%'.'&76$#%&7!7!I޳  -Qlހ<eqQ~\{pnFD H 9 EX/>YEX/>Y  +X!Y +X!Y0132266'&&'D=9 ͔;1^ H!"9EX / >YEX/>Y  +X!Y +X!Y01&&'&$4&'&6ـ cق  o_VT+p]d#H$%9EX/>YEX/>Y +X!Y  +X!Y01%'#&&'&$&&'&6Ћ8:ք e ag=q aa3EX/>YEX/>Y9/ +X!Y01!#7%3L "9OEX/>YEX/>Y +X!Yв9  +X!Y в901!!77676&'&6$!2) e[ukV^]#osQfxS`Q /EX/>Y +X!Yв 9/  +X!Y +X!Y901!7!'&'7$76&''7 YDgG 먵>A~p{kdWҬo0 GEX / >YEX/>Y  +X!Yааа/ а  01%3##!73!p9:2p%Iw 7D^9/EX/>Y +X!Y9/в9 +X!Y +X!Y01!!6'&'7676&'&XozM dzDsȞ{z[*vsC~܆ocݤ>Q+7)9/EX/>Y +X!Y01#!7!#ǿ.6?s _/  +X!Yа/ а /а/а/?]а/ +X!Y +X!Y01'&&527#"&'6632767L {} ^F)'ER aC$x$C"fru`uv PgOUSeF V/а/а/01#3sYI" #$9 EX / >YEX / >YEX/>YEX/>Y  +X!Y 9//]] +X!Y +X!Y +X!Y  +X!Y01!!#&7723!!!!!7'&U ?\`t;BZys |t:2 @ i p1?>'T()9 /EX / >Y +X!Y 9/ +X!Y " +X!Y01'.76676'&'76?6&'&@X~T VF'#㩒|3m7e5vtsllI=2\UZ֥E ( /EX/>Y  +X!Y  а /01%'&'7277'4?.1$);L+RNM-KVbO+%9ejSA6 bJQ F: F:.:zY:& .:!bEX/>YEX/>YEX/>Y +X!Y 9 / +X!Y  +X!Y 901%2676''7&'&#66'&'eJUa ]YEX/>Y  +X!Y +X!Y01&&776676'&'&676XcQ ױy  ~R7?!\bJ:9EX/>YEX/>Y +X!Y901#!7!6>}= f!"9 /EX/>YEX/>YEX/>Y9 9 +X!Y +X!Y01'&'#36'&&'&676 YC^+ mgW sduQ: yLhu=Bu)޺ZCTM9EX/>YEX/>Y +X!Y99 +X!Y01%677'&77#4&'&ak.ئq_ vrbe_,4٬k$G c!"9/EX/>YEX / >YEX / >Y 9  9 +X!Y +X!Y01663#7'&&'&737&'&Pـai xkuV< 5x?<),ܶ$P6T* +,9 &EX/>YEX/>YEX / >YEX/>Y9  +X!Y9! +X!Y& +X!Y0167673'&'77'&&'&737&'&Pb_+#ָAxQ  tcwU:j8fZ2U?<>CudwA(R!E"#9EX/>YEX / >Y +X!Y +X!Y01'&&'&7766676'&&'&[ {p|qmaNˮPQ_+.`Rf 9EX / >YEX/>YEX/>YEX/>Y 9  +X!Y +X!Y01&'#76&&'&676 da  * xdr[={~@>;v\F`5Tm 9EX/>YEX/>YEX/>YEX / >Y 9  9 +X!Y +X!Y01673#'.'&77&'&O ιa'bf[ wcw]A=s&|gw8D>DwESb !9EX/>YEX/>Y9/]  +X!Y +X!Y +X!Y01&7776!7&76'&& >,@n4  h/z]9873S]5P(R* +,9 'EX/>YEX/>YEX / >YEX/>Y9  +X!Y9" +X!Y' +X!Y016673'&'77'&&''&737&'&U_+#֨AoOibyU< SIr6>;;Cw+''3t04590а0!EX / >YEX/>YEX/>Y 99 +X!Y" 9+ 9 1 +X!Y01&&76677&&766673#''77676&#" dn[M+uVNi\H}]k \^4#I\ <72X|VG:ks8xnE6Ew_rQ0>HZIR=F-2AN3>G# a 9EX / >YEX/>Y  9 / +X!Yа +X!Yаа  а а01!!773%EI7Y[QT^++ 0T9 EX / >YEX/>YEX/>Y 9/] +X!Y +X!Y 9/ +X!Y   +X!Y 901!!!!#!!!!SB5;*yM.54N-& Y9EX/>YEX / >Y 9/ 9/  +X!Y  +X!Y013#'#2676&'$ Ի*BJ| kk*Zpg[o *j+,9а'EX/>YEX/>Y99 +X!Y#9$9& +X!Y01'&''7&777&'&6'6760 2o`_$>oYZ7>W.x9EX / >YEX/>YEX/>YEX/>Y 9/9/] +X!Y +X!Yа а аа а01##!##7373!733!7!`VWWWHRsH#OOF[9EX/>YEX/>YEX/>YEX / >Y +X!Y  9 901'"'7277#333A.2!N˭YehupEX/>YEX/>Y9/]q/]or +X!Yа +X!Y +X!Y013#732!#276'&&''3Ysozp ,j͞X',# TI渁p9EX/>YEX/>Yа//]] +X!Yа +X!Y +X!Yа013#732!#276'&&''3Ysozp ,j͞X',# TI渁=e/EX/>YEX/>YEX / >Y/]]9/ +X!Yа +X!Y01#6#6'&'&##737335vwx͹;1*җ NEX / >YEX/>Y 9/ +X!Yа   +X!Y а01###73!7!!3ߎ9;E;977D@mEX/>YEX / >Yа/]б +X!Yа  +X!Y +X!Yааа/01#327#&&7#737#7333#3^8N!7ACll 6..ZN M6&%Di6EX/>Y 016&%u6EX/>Y 016&%6EX/>Y01!&%:EX/>Y01&%j36EX/>Yܰ 01&%~A /ܰ01&%'"tB&'y;B&)D7BEX/>Y 01;B&)uB /01;B&)BEX/>Y01; &)jB /!ܰ 01IB&-DBEX/>Y01IB&-uwB /01IB&-~BEX/>Y 01I  &-jB /ܰ01;w!&25:EX/>Y 01w 8&3D8EX / >Y$01w 8&3u8 /%01w 8&38EX / >Y(01w #&3"<EX / >Y&01w &3jT8 /8ܰ#01g 6&9Dd6EX / >Y01g 6&9u6 /01g 6&96EX / >Y01g &9j.6 /(ܰ0126&=u6 / 013&EDEX/>Y-013 &Eue /.013&EkEX/>Y1013!&Es /6013&Ej /Aܰ,013\&E /5ܰ8013^&E'FBR&Gy>E&IDEX/>Y!01E&IuJ /"01E&IPEX/>Y%01E&Ij /5ܰ 01.&DEX/>Y01.&u% /01.&,EX/>Y 01.&jfEX/>Y ܰ01&Rj /01E&SDEX/>Y$01E&SuS /%01E&SYEX/>Y(01E&Sa /-01E&Sj /8ܰ#01[&YDEX/>Y01[&YuW /01[&Y]EX/>Y01[&Yj /)ܰ01E&]u /01E&]j^ /%ܰ01&%p>EX/>Y 013&EpvEX/>Y-01&%.7EX/>Y013&E //01Ov9EX/>YEX/>YEX/>YEX / >Y +X!Yа/9/ +X!Y901!7#"&767!#3!eAz A CDSN_B y/ZY?y+eRqkP3OQ/:;<91EX'/'>YEX / >YEX/>YEX///>Y  +X!Y/а/'9'9/' +X!Y"'90 +X!Y5 +X!Y01!7#"&767'7'&&76$376&'&>%677'"DAz A CDSN_  __] mX,W8' Y/ZY?y+eRr00Vaq_N_QţM76WMlcLetW&'uW /"01F&Gu* /#01tW&'W /!01F&G0 /"01t&'W /)01F&G /*01tY&'X /$01F&GD /%01;D&(CEX/>Y01K&H;&)pJ / 01E&Ip[ / 01;&)C /01E&I /#01;&)B /01E&I& /)01;O9EX/>YEX/>YEX/>YEX/>Y9/ +X!Y +X!Yа  +X!Y +X!Y01!!#7#"&767!!!!ZKAz A CDSN_{yCQd/ZY?y+eRi,EhQ&./09( /EX/>YEX/>Y$ +X!Y$9  +X!Y+9+/++]  +X!Y&9' +X!Y01%7#"&767.7766!7&76&S;u A CDSN_p|V ⃧  =p1qw5+WY?y+eRr] + ַAAS~;D&)C /01E&Id /$01yW&+W /#01O(&KS /+01y0&+2X /%01O(&K /-01y&+W /+01O(&K) /301y&+O(&K42X /.01;wB&,!B / 01A&LTA/ܲ]01I4-&-F /01&4 /01I$&-pJ /01.&p7 /01I&-C /01.&a /01X&- pO&MI6&-SB / 01Ip&-.&/F&MN  5&.5 /01 F&2 /01;XP&/Z E&O;1&0ue1 /01/&Pui /01; &0% &P;&0EX / >Y01/;&P,;&0L/&P;w6&2u'6 / 01&Ru\ /01; w&2 R&R;w8&2A7EX/>Y01&RvEX/>Y01&RE O]]01w &3p%@ /#01E&Spd /#01w &3O9 /&01E&S /&01wT7&38 /%ܰ'01E&S /%ܰ'01:6&6u6 /01b&Vu /01: &6 T&V:8&67EX/>Y01X&VEX/>Y01'8&7u8 /+01.&WuG /)01'8&78 /*01.&WM /(01'K&7y.CP&Wy['&7, @.P.]01.P&W @,P,]01':&79EX / >Y-01.&WaEX/>Y+01 &8 @ P ]01C@&X @P]01K &8yCK@&Xy 8&87EX/>Y 01Cy&X~ ]]01g !&9: /01[&Ye /01g &9p> /01[&Yph /01g &9)7 /01[&Y /01g &9yA /ܰ01[\&Y /ܰ 01g.5&9p6 /ܰ01[&Y /ܰ01g{(REX/>YEX / >YEX/>Y +X!Y9  +X!Y017#"&767&7367( A CDSN_V'6g`?y+eRgR%[O:#eEX/>YEX/>YEX#/#>YEX / >Y +X!Y#в9 +X!Y!01!7#"&7677'&&7373TAz A CDSN_ětuLDj/ZY?y+eRq]ֹB,*HRA6&;6 /01&[ /0126&=6 / 01E&]$ /012&=j6 /ܰ 016&>u6 / 01&^u$ / 01&>6EX/>Y01&^EX/>Y018&>7EX/>Y01&^>EX/>Y01xB&uBEX/>Y01a&usEX/>YD01 &u(EX / >Y0019z*&u9EX/>Y.01&0&x,qq/]orOq]_]01&0&x,qq/]orOq]_]01mB&&= ]01&3DEX/>Y 01&3uj / 01&3pEX/>Y01& &3x" /01&3j / ܰ 01z&3) /ܰ01{&3' GH7&1yh&(DEX/>Y 01&(u> /01&(D / 01&(j~ /!ܰ 01*&DEX/>Y01*&u# /01*&* /01*&jd /ܰ01 &" /01JN&DEX/>Y!01JN&u /"01JN& /!01JN &" /*01JN&j /5ܰ 01EW&DEX / >Y01EW&ud /01EW&j /01EW&j /'ܰ01te&u: / 01&3p{& / 01&3 /01Os9EX/>YEX/>YEX/>YEX / >Y +X!Yв9/ +X!Y901!7#"&767!#3!Az A CDSN_5 sh/ZY?y+eRusG7&1uo /01G7&1u /01G7&1KEX / >Y&01G7 &1EX / >Y"01 &04EX/>Y01&(pO& / 01&(y /01&(EX/>Y01O9EX/>YEX/>YEX/>YEX/>Y9//]] +X!Y +X!Yа  +X!Y +X!Y01!!#7#"&767!!!!1BY?Az A CDSN_:/ZY?y+eRi &(XEX/>Y01LA&s /!01LA& /#01LA&IEX / >Y)01LA&& / 01 &2" /01*&p5& /01*&_ /01zO&*&EX/>Y 01h& /01&#&u /01#&#&EX / >Y01#&7&u / 01&$ &EX/>Y01JN&p& / 01JN& /#01J& /"ܰ$01&u/ /01& &IEX/>Y01&uE /*01&K /)01K&yI &_EX / >Y-01mB& @ P ]01mB &SEX/>Y 01mMB&y5EW &r" /01EW&pu& /01EW& /01EWz&) /ܰ01E& /ܰ01EtW c !"9EX / >YEX/>YEX/>YEX/>Y 9  +X!Y +X!Y017#"&767&&7367WTJA CDSN_b utz*;`/?y+eRpU ڪ u{ )&7 /01te&@ / 01te&jz /ܰ 01&u: / 01&EX/>Y01 &TEX/>Y01?&%?&)~wA&,@&-V!?&35?&=di?&8 t&-EX/>Yܰа$01%;&;)>;w,I-;P/;1;w2w 3;4 82=+<I  &-jB /ܰ012&=j6 /ܰ 01H2:&h /(01)9&! /+01$a:&; /01e%&$ /01g t& /+ܰа+01-W:ERS`%:vn:ZIQGqEX/>YEX/>YEX/>YEX/>Y999  +X!Y9 +X!Y0137''#&'76Yx*BQ&x2$//=#EUl'WF>Fu$-P@ WD f&j /$ܰ01g&j{ /+ܰ01E:&S, /%01g%& /01f"&< /-01; &)jBEX/>Yܰ!01CB&uBEX/>Y01'(d)*9EX / >YEX/>Y 9 а  +X!Y +X!Y$а' +X!Y016/$7>'6&'&'.76m: l ˕K v "wJ?yep~rM5 {bsI-I  &-jB /ܰ01 J.Dj,;P0&/u0EX/>Y01@&CEX/>Y01%;&C;)Cn&kC / 01;1;w,w 3Dp;4t' 8+<3QEEQI/7& / 01ERS`RTFR M!"9EX/>YEX/>Y +X!Y99 +X!Y01%677'.77>'&&'&ajX茪̩ravu_f^2ܩj@DuE:]:\E&Ij /5ܰ 01-&uEX/>Y01.PW/M.&jf /ܰ01FN/W&u9EX/>Y01E&]YEX/>Y01A6&;DL6EX/>Y01&[DEX / >Y01A6&;u6EX/>Y01&[uEX / >Y01A&;j6EX/>Yܰ(01&[jUEX / >Yܰ"0126&=D36EX/>Y 01E&]DEX/>Y01! C& F&FEX / >Y01;6&1u6EX/>Y01j&QuEX/>Y#01j&%t3jQ&E;B&)D7BEX/>Y 01CnB&DBEX/>Y 01E&IDEX/>Y!01/7&DEX/>Y 01O(O<K&DEX/>Yܰ01<&EX/>Yܰ01EEcR&S]wwE L&3]`%Q&Q!RP&Q-tQ&'QFQR&GQF2=`:I-u&,CEX / >Y01&\EX / >Y01I-&%.7EX/>Y013&EEX/>Y/01&%j36EX/>Yܰ 013&Ej /Aܰ,01xaR;&)C /01E&I /#01Q*&Xj /:ܰ%01>N>&j /8ܰ#01u &j1B /+ܰ01&ja /+ܰ01%&jW /@ܰ+01!&jg /=ܰ(01Cn&pAJ / 01/7&p{ / 01Cn &jpB /ܰ 01/7&j /ܰ 01w &3jT8 /8ܰ#01E&Sj /8ܰ#01iB Si&j`= /:ܰ%01B &j /5ܰ 01t&jLX /8ܰ#014&j /7ܰ"01@&pJ /01E&]p/ /01@ &jB /&ܰ01E&]j^ /%ܰ01@A&]BEX/>Yܰ01E^&]EX/>Yܰ01D &jDBEX/>Y(ܰ01{&ji /(ܰ01E &'-jBEX / >Y!ܰ-010&' jjEX / >Y!ܰ-01KuH&%3Q&E)&%F /013&Es /901&%7.EX/>Yܰ013_&E7dEX/>Y/ܰ501&%8=EX/>Y ܰ013&E8jEX/>Y/ܰ401l&%9EX/>Y ܰ 013&E9eEX/>Y/ܰ301&%:EX/>Yܰ013&E:aEX/>Y-ܰ6016&%'6EX/>Y013&E&k)EX/>Y101&%<- /ܰ013&E< //ܰ;01&%5- /ܰ013&E5 //ܰ;01@&%== /ܰ013 &E= //ܰ801&%PE /ܰ013&EP //ܰ801&%'.7EX/>Y013&E')EX/>Y/01;&) EQ&It;&)R /01E&IX /-01;-&)F /01E&IX /*01;&)7:EX/>Yܰ01ED&I7IEX/>Y#ܰ)01;&)8IEX/>Yܰ01E&I8OEX/>Y#ܰ(01;:&)9'EX/>Yܰ!01E&I9JEX/>Y!ܰ501;&):EX/>Yܰ01E&I:FEX/>Y#ܰ*01;B&)'B EX/>Y01E&I&PtEX/>Y%01I&-R /01.i&3 /01&-S &M6 w &3ER&Sw &3"H /001E&Sa /001w&370EX / >Y&ܰ,01EM&S7REX/>Y&ܰ,01w &38?EX / >Y&ܰ+01E&S8XEX/>Y&ܰ+01w&39EX / >Y&ܰ*01E&S9SEX/>Y$ܰ801w &3:EX / >Y$ܰ-01E&S:OEX/>Y$ܰ-01w 8&3'8EX / >Y(01E&S&YEX/>Y(01g1&u1EX / >Y+01B&ufEX/>Y(01g1&D1EX / >Y*01B&DEX/>Y'01g&AEX / >Y)01B&tEX/>Y&01g&5EX / >Y,01B&tEX/>Y)01g7&B&vg &9[:&Y0g &9F / 01[&Ye /!01gB&u BEX/>Y01ZN&u`EX/>Y01gB&DBEX/>Y01ZN&DEX / >Y01g&REX/>Y(01ZNo&nEX / >Y01g-&FEX/>Y01ZN&nEX/>Y01g&ZN&d2&=:&]c2&=F /01E&], /012!&=: /01E&], /01&H'&GCd &8Q-`:&QD&Q{;&QC&Q-:&QU&LQYGS&MQL+q9EX/>YEX / >Y 9/  +X!Yв 9/а +X!Y  +X!Y01##!#737332676&'*6##`J||PPv+t9EX/>YEX / >Y 9/ +X!Y 9/ а а  +X!Y +X!Y01##!#737332676&'*6##`J||PPv R 9EX/>YEX/>Y 9 / +X!Yа а  +X!Y01!##73!!!zvwleXQTm1: R 9EX/>YEX/>Y 9 / +X!Yа а  +X!Y01!##73!!!PSSO4!ߗęI~oEX/>YEX/>YEX / >YEX/>Y 9/б  +X!Yа а/  +X!Y 901#33####73733.]arq('75r7+2h/EX/>YEX / >YEX/>Y 9/б +X!Y а/  +X!Y 9 01#33####73733ar|27W  2W 9EX/>YEX / >YEX/>Y9/ +X!Yв 901###73333|[ZՐ  &]`:d9EX / >YEX / >YEX/>YEX/>YEX/>Y +X!Y 9 а01###73333FF k$R+cEX / >YEX/>YEX/>YEX/>Y 9| /б +X!Y 9в 901####73333:J b7{-:kEX / >YEX/>YEX/>YEX/>Y  9| / +X!Yв 9 9 |/01####73333ųƧ&lv>)M&*&D"Fff@+4!rj UJ|?yW&+uWEX / >Y$01O(&KuMEX/>Y,01;w6&2D6EX/>Y 01&RDEX/>Y01 &%2EX/>Y ܰ013&EEX/>Y-ܰ101;,&)N>EX/>Y ܰ01E&IEX/>Y!ܰ%01,&->EX/>Yܰ 018&EX/>Yܰ 01w "&34EX / >Y$ܰ(01E&SEX/>Y$ܰ(01: &6C2EX/>Yܰ01&VIEX / >Yܰ 01g  &9{2EX / >Yܰ01[&YEX/>Yܰ01N<?&d-;&& &F;&( Ku&H; &(]@P`]01Ku&H! @"P"]01;w&, &L ;P0&/u0EX/>Y01 #A&Ou}A /01;P&/Y &OPF;&0 &P7 ;&1 jR&Q ;w&2 R&Rf w &36S /,ܲ,q,qO,q/,q801;B&4uBEX/>Y01`7&TuEX / >Y!01:&6 T&V3 '&7.P&Wm &8C@&Xg &96Q /ܰ(01a-&:FEX/>Y 01n&ZEX/>Y 01a&: n:&Z8 A&; :&[, &> :&^B S&3Fq&3+&(<&<&<X& _&<>t&  32(*JN)mBtem*&jdEX/>Y ܰ01te&jzEX/>Yܰ01&(j~EX/>Yܰ!01&u;EX/>Y01**&jdEX/>Y ܰ01&u-EX/>Y01XT&tEX/>Y0132(&EX/>Y 01JN)G71mBmP*EX/>YEX/>YEX/>Y +X!Y в*9|*/`*p*]*]`*p*q) +X!Y)*9а!а# +X!Y012676'&'&66#&&73676%'7 3kEC U`HJف aW6%M-,Qb!]^f[t/EX / >YEX / >YEX/>YEX/>Y  9| /` p q ]` p ] +X!Y +X!Y01##!#3!33.>VW˴YHZg HV?ZEX / >YEX/>YEX/>Yа а  +X!Y +X!Y01#&77#&&'&7GJ %9mxvlLzd(&X0նrʶcu te/Qa&Q&p&EX/>Y 01XT&pJ&EX/>Y01Q*~&&su&uu&)&D)&u1)&jqte&DO&%g3OQ&E;Y&)( EOQ&IO&3 W&(:&6 VaaaaaFw1a #H_M,5J_ 9 7 [ O > c Wt\5f-Ih\${I/LkATK|P%F( K W v!.!I!!"'""##<#]##$$#$=$W$q$%<%z&&_&'((j()W)*G*b*++B++,-B-t-.N././/00~00011)1e1122[2x22233%3A33334f4455G5667778D899l9::s:;D;< K>?-?@@AAABBvBCACDDNDEELEEF%FFG:GH2HIIlIIJ_JKKlKLLaLLMeMMN'NoNO*OzOPqPQQQR:RSS\ST-TU-UVVlVWJWX0XYWYZ[[}[\\t\]^r^_s_``N`k```ab#b>bYbc'ccdd_dddddeDeffdfpf|fg7gghi4i@iLiiiijYjjkwklLlllmmmmmmn,nnooo%o1oopqqzqrSrs=st5ttu@uvv&v2vfvfvfvfvfvfvfvfvfvfvfvfvfvfvnvvvvvvvwwl׎:|Z&Z&cSc_j)&\՘Uʙ?r[՜-iǝ [Ult| #:BYp#6HZk~%6I[s 1I`x"5H[n,>Og~ &@Rdp|.E]t3J`lx'>Ukw ".:FRZ3z!}q "*AXo.F^v "9KWco{&2>Qh~&.6>FNV^fnv~#:PX`hpT)@V^jv#2/_<.R8 Ls d CRfJ:dmbkpL.5=fhfff4ffrfpffAf+ALp:D;t!;s;T;Sy;&IR ;7;;;`w;`o:'g9zHOpC3eFjK&EteP/ /RwEesI .CQ[n8!QiHRCH#bYV$a/%\nyo{K-(` 8\xDo9Ky5.[-8""#j5o$pTG3gQI^gyBogZ !>|'Z#Rj ![CQi x DxUh3 lHoC9)o$usV?`o6NoJEgAyOnfQ+g"fExYlCZB4%C[AZWBBE6EtITFy0K-!/;/0//`L/B{P/u$V0A064_0LP6N/p/oO?.I,/ZN&)H. QirBQjoDtRoOf0M@ ;8OC/?.:pK5$C$q:yD/6f-dct;/:$B$q_=W}{ORO 5C-Co$;/!;0gQ<)1k2L/ h2M;x#jL}Ej\f)--"^Qwv9;9}Ry^_^cP~. h9?: fQC I\ )0K5CvMm$yAMi1LpADxptVXrttttr)5\kk(pKJJ t=OzdEm 3EEJ=*L OJOxHQ~ RldG!TmB(7 X RZ*P7c Nn!aiPGt:lRZR/A(J/ 6 $K-CD%D%gdG9l*"c~arDi9AS+{I?ffff-fVf%fjffAf   .z.9d beCzGs$AtF&Ee5h+.??n=ts;s;s;s;&I&I&I&I;`w`w`w`w`wggggC3C3C3C3C3C3C3F&E&E&E&E....RwEwEwEwEwEQ[Q[Q[Q[C3C3C3tFtFtFtF!;Ks;&Es;&Es;&Es;&Es;&ESyeSyeSyeSye;P&I&I.&I.&p&IxI/R  ; 7;/7;7;/7;/;R;R;RR`wwE`wwE`wwE:::' .' .' .' .' .CCCgQ[gQ[gQ[gQ[gQ[gQ[K` o9ggmllllllldG****JJJJJdEdEdEdEtllldGdGdGdGgLLLL**z*=JJJ333    mmmdEdEdEdEdEdEtt   s&tVG ;s;;&I;;;`w;&IlH9)o$Eg[-wEonfEgwEEgnfs;[C'&I&IR D;;[Cs;C;;`wD;tC3&E/wEeF&EK- ./.;/dC ;C3s;C&E/hyO-E w%!tF&I&IC3C3Ks;&EgQ!>!>%!C/C/`wwEQirBQirBEt64ZB{E0jKC3C3C3C3C3C3C3C3C3C3C3C3s;&Es;&Es;&Es;&Es;&Es;&Es;&Es;&E&I.&`wwE`wwE`wwE`wwE`wwE`wwE`wwE^gyB^gyB^gyB^gyB^gyBgQ[gQ[ogZogZogZogZogZ`ZB{[CK- P++[KI+]9)Tff4ffrzUz|Sye;RC3s;&E&`wwE:gQ[N;e!;jK!;jK;P; ; 7;;;R`w;e:' .CgnnlQ_l9 *=JEmt=*t **= Xl9JEdGm=(dHt/ XHQ* tC3s;&Ell 8l Lo33fP [ GOOGf :                  nt ~%'0S_g~7Y #%/EOboy?M    " ' 0 3 : < D t  !!!!"!&!.!^"""""""+"H"`"e% &(1T`h7Y #&0FPcpz>M    % 0 2 9 < D t  !!!!"!&!.!["""""""+"H"`"d%eD# (%^S~|}rsolkiaYP!ߔyMߪެߞߝߖߓ߇kTQ 222tt~lt0Rb{z|  }~+,-.   ()*+,-./012345678wxLM}~NOPQRSTUyzVWXYZ{|[\]^_opv   ~xcyo{z%&&''|(01127889@ABCIJKLQRST_`a befg}h~+ 77YY  ##      "#$%%&/0014556899:=>>??@ABBCCDDEEFOPPQQRRSSTTUXY[\\]]^^_abbco pqruvwxxyyz(,159wCL}NyVXY{[_`o>?pMM r }         " % ' 0 0 2 3 9 : < < D D t t      v    !!!!!!!"!"!&!&!.!.![!^"""""""""""""+"+"H"H"`"`"d"e%%,K PXYD _^-, EiD`-,*!-, F%FRX#Y Id F had%F hadRX#eY/ SXi TX!@Yi TX!@eYY:-, F%FRX#Y F jad%F jadRX#Y/-,K &PXQXD@DY!! EPXD!YY-, EiD` E}iD`-,*-,K &SX@Y &SX#!#Y &SX#!#Y &SX#!#Y &SX#!@#Y &SX%EPX#!#!%E#!#!Y!YD- ,KSXED!!Y- ,'E- ,(E- ,' SX@cTX'pY#SX TX'pYYY- ,@ ZX(D(DY- ++++:0%+H;.!+XH8(+RC4%+^M<++6,"+q]F2+w\:#+~gP9+ TE6&+ v`K6+ dN:#+ ٲc<+  +<2'+PA.!+ + E}iDPt?s_ss/tOtottttu?u_uusousst_tttt?u/sos*xdNZ`V4<` ! :  ^  ^  j v v &  @   &0 \V TCopyright 2011 Google Inc. All Rights Reserved.RobotoItalicRoboto ItalicVersion 2.137; 2017Roboto-ItalicRoboto is a trademark of Google.GoogleGoogle.comChristian RobertsonLicensed under the Apache License, Version 2.0http://www.apache.org/licenses/LICENSE-2.0jd(Y%>E^yy  "$%*+3466;<ADGHKMQQTX]^bbddhhjlnnpp  ((++--03_cz|  ,$%&'y 2LDFLTcyrlgreklatncpspkern $H %&'()*+,-./0123456789:;<=>eg/3579;ACEIKLXYz{}   "$%')+- }  :44^67497zd88788898D  89X9469 F7\8f5 8:8:8:78f8|9v&5<9v@8f956969v8:xjp55!8"`#^4%885B888&585(@)))*5+n5<3F+-r8f11:3$3$8f2p23$3$3$679X9v3F8f5545<777845<889545<43p444:44`:499:9999949499998666666647z7z7z7z888889999967\7\7\7\7\7\7\55558:777779v9v67\67\67\444497z57z57z57z57z588:888887888888:88:88:8:9797978|8|8|888969v6999:::9999999:::::999:94444::::67z8896677z98878898D864868:79v77z588775B6757z8898D4847\578f9v5<559v99969v44488:67\7z59X9v469v845<867\67\7z55545<9778f5B9v5B9v5B9v67\67\67\67\67\67\67\67\67\67\67\67\7z57z57z57z57z57z57z57z58897979797979797769v69v69v8558:557688:67\7z8978|78f9988:77888:88:98D8f8|89X9v9X9v9999:99:99:: %*,- /6 88:?EFIJLL OO!QT"VV&XX'Z](__,-./0589;=@HITdehjm  p  qr""u.0v35y77|99};;~CDTTVVXX\^0033EEGHz{}}  "%''))/8CGMOTTeimoxx!"(89:;<>@GJPRVXYZ^deghrt  xz{FHHJW__puww{| 89Ew:;= "$prt %V.8EGHIKSUVYZ]VV V"9BE`ak3VVVVVVVVVV#2345678MNOVVVVVV V V!"V#$V%&V'(V)*V+,V-.V/0V12V34V579;=?ACEKMOQSUWY[]_acegikmoqsuwV38:;=9E3 "$2345678MNOprtw8:=9E"$prtw.9bdM  AGHIKUa"B`ak79;=?ACEY[]a@GHIKU"B`ak79;=?ACEY[]aS KMOQSUW_.9bd  Z]#qsu?'+35 !AjEFHI-  JLNPRTVXZ\^`@'+35!AjEFHI-  JLNPRTVXZ\^`8%<= 3C]"$ "$&(*,.024prt(%  "$&(*,.024GHIKQRSTUYZ]"+6<>BSUW\`ak#  79;=?ACEKMOQSUWY[]_acegikmoqsu|| GHIKUYZ]"B`ak#79;=?ACEY[]acegikmoqsu< JYZ] #cegikmoqsuAGHIKU"B`ak79;=?ACEY[]a:m  GHIJ KSUZ ]  "B`ak        13  # 23456789CDEFGL MNOPQRSZ[\]mnostuvx               79;=?ACEKMOQSUWY[]_aq s u       \^4D^&(* \^4D^&(*"Z\]^4D^#&(*qsu 8:<=QRTZ\]  +3469:<>CDEGISUW\]^bcdlm"#$ pqrstuwy|(8Z]  9:ELcm#qsuw?8:<=\349:CDEGI]^bdlm"$prtwy%'+358:= !9AEGHIJMPQXbdfjlnopEFHI"$-   "$&(*,.024JLNPRTVXZ\^`prtwyz58:<=39CEP]bdflo"$prtwj%8:<=  39:CEGHIJLPQ]bdflmop"$     "$&(*,.024prtwyz18<=39CEPQ]flop"$prtw$8<39CEPQ]fopw8=9E"$prtw9QRT\  +46:<>DSUW\^m |# Z] :m#qsu :HJmzvGHIKSU"B`ak19CDEFGPQRSZ[\]mno 79;=?ACEKMOQSUWY[]_a EGHIJ KSUZ ]   "BQ`ac e kp        13  # 23456789CDEFGL MNOPQRSZ[\]mnostuvx               !#%')+-/13579;=?ACEKMOQSUWY[]_aq s u        :HJQmpzMG H I K U :   " :B HJQ` a k mp                               7 9 ; = ? A C E Y [ ] a z   "Z\]4DQ^p#qsu    :PJcemL  (L O P SW[     KMOQSUW_   LxLx[  AaM:JLMXb d mn1.08@JM_il :ILbdlm/Vm[m|}+KaFRIh < .0<8:j@IJ L?MX_c1e_i lm0n AJVXam| 1#X[:IQJ{LMXbudlOm  :cemJ[   :cm l[  :JXcemn1[T1IJLbdlX_:mJX2[3V[m|(M~gejs^t}y}  .08}:@J|LMlX_kcei{lmn1 AVa1J  A Va1[1l1  h&% x -&~| v8{q?;QyVD3DK>,r'jzb m %),4 8>EGIILLQTVV"ZZ#\^$'()-./02347>?@ABD  F  GH.0K35N77Q99R;;SCDTTTVVVWXXX\^Y\cefgilm00p33qEErGHsz{u}}wx  "*/8CGMOTTeimoxx  "#$%&(25;BDEFJPQS_a  eghFoHHJW__bbddpuww{|t !!%%&&''(()).. // 0033448899 ::;;<<== >>EEFFGGIILLQRSSTTVVZZ \\]] ^^"  %      ..//"00334455 77 99 CCDDXX\\]]^^!!!# $ 00 33EEGHz{}}             "" ## $$ %%&&''(())**/0 11#28CG MOTT eefi$mo xx#     "  %"           % % %   !!""##$$%%&&''(())**++,,--..//00112233445566778899::;;<<==>>??@@AABBCCDDEEJJKKLLMMNNOOPPQQRRSSTTUUVVWW__bb dd pp qq rr ss tt uu ww{{"|| "        # ##       " !   !$     #         $    #"      " " " !   !        bDFLTcyrlgreklatnH .AZE CRT FRA ZMOL NAV ROM TRK      c2scccmpdligdnomfracligaligaligalnumloclloclloclnumronumpnumsmcpss01ss02ss03 ss04ss05ss06ss07$tnum*        60nL`tflq3210(sutvrwR   ; /0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwyxz{|}~    %&'()*+,-./0123456789:;<=>eg/3579;ACEIKLXYz{}   "$%')+- } q3210(ds0ut/rwR   ; v123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abdefghijklmnopqrstuvwyxz{|}~    EFGHIJKLMNOPQRSTUVWXYZ[\]^0468:<BDFJMZ|~   !#&(*,.~ *BZrMxN`H0I$'a_bc` MNI26rJd~"<N$.8J| <Fh.8BLV( &,   &,68:  &,HF  $$*06JL   $*06bd  $prt % &,!  &,79;I  $ &,KM    &,ce  $qsu &+-,. $G $X`Z\^ $Ya[]_ $fnhjl $goikm%)+-/46;=>EIKMOTV[$]^*,-./015     OX{@JMMJPPJ*  JXXJWKo6,- .//O EGFHIghijklm '(+35FGHKSTU nooIKj.Z^XUWV[Y]\OJKLMNSeff pp  .pfLNMKOeSJU^ .[]^XUWVY\ZJKLMNOSefp.pfJOSSU^ eel%<  !"#$% >zst?@ABCDyubioath-desktop/fonts/Roboto-Light.ttf000066400000000000000000005140341412677075700205610ustar00rootroot00000000000000 GDEFB"\bGPOS$]GSUBYOS/2X`cmapwX Fcvt /Xfpgm"gasp"P glyf,VhdmxG`RpheadYi6hhea 4$hmtxUҽ?8locat maxp>\ name=Qm,hpostmd"0 prepz/W:d( o 9 а а  а  EX/>YEX/>Y9999 ܲ 9 901!!!!5!(<6 }wx^^^> <9EX/>YEX / >Y +X!Yа/01#3462"&o|,L--L,"//"!--; /а/а01#3#3PaQatŌUEX / >YEX/>YEX/>YEX/>Y 9|/ +X!Yаа а / +X!Y а аааа01!##5!!5!3!33#3!#!!McMS)OcO;OdOSMd;Sf]````G]fs0+{,-9 /EX / >YEX / >YEX / >YEX"/">Y" 9  +X!Y +X!Y"а") +X!Y014&'&&546753#4&#"#5&&53326Ȭfw_Oͳexgo?GÛǝ|xwmh Ŝm &48n5/7/EX/>YEX$/$>Y а / +X!Y +X!Y$а/$* +X!Y1 +X!Y01462#"&5326554&#"462"&5326554&#"'m|{agWUehTSi|`gWVegVThKKG]xy`I]yxdӂG^xybI`uvc0r0l)5{-679-а- EX/>YEX/>YEX/>Y 999 +X!Y$9,93 +X!Y01&&54632653#'#"&5467267'76654&#"WO[oǐ~Os}[Di.Ĵ1@RlZbtiQ||.NXղjvAMG#,zd.nJNi~wB /а/01#53Zfs(*m`9//0147&p|Bf?_dmLUJQ/~JMLS!*`9//01'654'7mցb```~p=iNMF&/EMMd}J EX/>Y/  /01%73%'i LhD!UUle{res?1=K1  /а  +X!Y01!!#!5!3vEyNypp</ +X!Y01'6753G[u4z}1P/ +X!Y01!5!!Pe<EX/>Y +X!Y017462"&-P..P-H#11F--/EX/>Y01#3m`l}-x H 9 EX / >YEX/>Y  +X!Y +X!Y01#"324#"327x_9+3<:EX/>YEX/>Y9/ +X!Y901!#5%3xt piP 9EX/>YEX/>Y +X!Yв9  +X!Y901!!56654&#"#46632!p|`wo̓j\6X{sҵf5b+,-9EX/>YEX/>Y9/_]/]O_q +X!Y 9* +X!Y*9!9$ +X!Y01326654&#"#46632#"&&5332654&##|gQxr{t̂wx˜xISqfؼi,&h|CK JEX / >YEX/>Y 9/ +X!Yа в 9 9013##!53!hxSn5epD%@\i9EX/>YEX / >Y +X!Y 9/ 9  +X!Y +X!Y 901!!632#"&'332654&#"G3uϾsU~FoPԿƷ+>#e$%9EX/>YEX/>Y +X!Y9/9 +X!Y +X!Y01# 6632#"55%"32654&KYEX/>Y +X!Y901#!5! }jkJfj  ,$-.9$ а$EX/>YEX / >Y* 9*/_*]/*]O*_*q +X!Y*9*9  +X!Y$ +X!Y01#"&5467&&546 4& 3264&#"326l~lR&9q*+~ڼ|+*qꥤE}e$a%&9 EX / >YEX/>Y 9/ +X!Y +X!Y  +X!Y01#"&&546632!#73$%26754&#"t@o|hoǂ*x(^g←lvth ÏrE宧,7&<!7'M;<9EX/>Y9/ +X!Y +X!Y015;~{az~'/а/ +X!Y +X!Y01!5!!5!BB=jj|=2EX/>Y +X!Y9/ +X!Y0155C9M/{a|TK$K %&9 EX/>YEX"/">Y +X!Yа/  +X!Y01>54&#"#66324632#"&x<9wxwڨbq+'&--&'+vQa>}uɬl~_"//"!--q;6B$CD9$@+/3/EX/>YEX / >Y3939/ : +X!Yа3 +X!Y+$ +X!Y? +X!Y01#"&'#"&7>323267!"3267#"$$32327&#"brazlwmMtM3 OW{ =\<9h b ZJX-C[oLf\ͣ+At~,#P&3fdm1 T 9 EX/>YEX/>YEX/>Y9/ +X!Y 901!#3#!k'u'HhPv p!"9аEX/>YEX/>Y9//] +X!Y9 +X!Y +X!Y013!2#!2654&#%!6654&#!{kqPq$gB9EX / >YEX/>Y  +X!Y +X!Y01#"&'54632#!"3267|.),sԹ H9EX/>YEX/>Y  +X!Y  +X!Y013!2#!254'†ҤG!1.B VEX/>YEX/>Y 9 // ] +X!Y +X!Y +X!Y01!!!!!!Wvhi> DEX/>YEX/>Y 9| / +X!Y +X!Y01!#!!!Y{Xi"_ #$9EX / >YEX/>Y 9  +X!Y +X!Y" 9"/ +X!Y01%#"$'5!2#&&#"32767!5!@恵2{ϧqӉrJ$y[f,¸/_ɠ2!,xh REX/>YEX / >YEX/>YEX/>Y 9 // ] +X!Y01!#!#3!3|{{@|FrNEX/>YEX/>Y01!#3N{{G09EX/>YEX/>Y  +X!Y013#"&533267;|{Ǟ L 9EX/>YEX/>YEX/>YEX / >Y9901#33#{{x)EX/>YEX/>Y +X!Y01%!!34|hh3YEX/>YEX/>YEX/>YEX/>YEX / >Y99 901 3###[{ _ {Pz L 9EX/>YEX/>YEX/>YEX/>Y9901!##33{||Fz"!}H9EX / >YEX/>Y  +X!Y +X!Y01#"54$ #"32ƍP{Фm63*+  O 9  EX/>YEX/>Y 9 / +X!Y +X!Y01#!2#%!2654&'!3{uQhy#H$%9 EX/>YEX/>Y +X!Y  +X!Y01#"$'54$32'#"32蓈 URU{OL-ţ3** c9EX/>YEX/>YEX / >Y9/ +X!Y 9 +X!Y01!#!2#!2654&#!Y|lyı^ˌ) ǰXl'f ()9EX / >YEX/>Y 9 9  +X!Y +X!Y" 9% +X!Y014&$'&54$32#4&#"#"$&53326YEX/>Y +X!Y01!#!5! {`GGi=9EX/>YEX / >YEX/>Y +X!Y01#"$'3 65zhu'̶1EX/>YEX/>YEX/>Y901%73#3o ʇv↴P=YEX/>YEX/>YEX/>YEX / >YEX/>Y 9 9  9017373#'#3-7YEX / >YEX/>YEX/>Y999 9013##3sXVHh2|1EX/>YEX/>YEX/>Y9013#3c{t$Zr FEX/>YEX/>Y +X!Y9 +X!Y 9017!!5!5!`hh]iX$// +X!Y +X!Y01#3!!Jf0/EX/>Y013#0u`uK'// +X!Y +X!Y01!!53#KHfM+9EX/>Y9/901#3#t+Z*t)rEX/>Y +X!Y01!5!rqeeg/а/]9/01#3mdN)*+9 EX/>YEX/>YEX/>Y9 9 // ? ] +X!Y 9|/ +X!Y # +X!Y01!&'#"&54$3354&#"'4632%2675#G?mُ}x!x+ֳʇ3dRY{tZN Vtao[xf9 /EX / >YEX/>YEX/>Y 9 9  +X!Y +X!Y01#"'#3632'4&#"326tpwrxs)Z䔧רqm^NM9EX/>YEX/>Y +X!Y99 +X!Y01%2673#"5546632#&&#",}srlpьsQpc\($ԭ#lc9/EX/>YEX/>YEX / >Y9 9 +X!Y +X!Y014323#'#"327&#"lswps߻y]]ۗ'+_-ZNe !9 EX / >YEX/>Y 9/  +X!Y +X!Y 9  +X!Y01"&&5546632!3267"!5&&?|y~Ӡ`YEX/>YEX/>YEX/>Y +X!Yа  +X!Yа013#5354632&#"!!򳳩D; 2;cnbd {qb(lQN&$'(9$ EX/>YEX/>YEX / >YEX/>Y9 9  +X!Y9 +X!Y$ +X!Y0143273#"&'732675#"5327&&#"lspq;Csܼy\*o')eTH,hmJ 9/EX/>YEX/>YEX/>Y9  +X!Y016632#&&#"#3;mwyo)wwaj:Ǒv: ? 9EX/>YEX/>Y а / +X!Y01!#3462"&"xx,L--L,:9"//D..K5 K 9 EX / >YEX/>Y  +X!Y а/  +X!Y01#"'73252#"&4663,.<',,'&++:Ec /D..D/ QEX/ >YEX/>YEX/>YEX / >Y 9 в901#373#xxq5!c)z8"EX/ >YEX/>Y01!#3"xxN x!"9EX/>YEX / >YEX/>YEX / >YEX/>YEX/>Y 9 9  +X!Y01663 663 #&&##&&#"# YEX/>YEX/>YEX/>Y9  +X!Y016632#&&#"#=nwyo)w:di:Ǒv:Z NE 9EX/>YEX / >Y +X!Y +X!Y0146632#"5326554&&#"Zy݌ y܍xɣ\k-/ |q`Np9 EX / >YEX / >YEX/>YEX/>Y 9 9  +X!Y +X!Y01#"'#3632'4&#"326vwouxn*+mלڙje]bl`Nm9EX/>YEX/>YEX/>YEX / >Y 9  9 +X!Y +X!Y0143273##"5327&&#"lrpxv׾y`-i')&&,aiNG 9EX / >YEX/>YEX/>Y  +X!Y 901&#"#3632&+p!wu_2}w: eN%m &'9EX / >YEX/>Y 9 9+ ; ]  +X!Y +X!Y  9# +X!Y014&$&&54632#4&#"#"&53326$M֧xyvw;Lݲx}Yl=OrQ_~iTQYJTvTiunIOa9EX/>YEX/>YEX / >Yа/ +X!Y  +X!Yа013#327#"&5#53VALC/Q{pOb/ZX bb:Q 9EX/>YEX / >YEX/>YEX/>Y 9  +X!Y01%#"&'33 73#TlwExtO&:89EX/>YEX/>YEX/>Y901%3#3I{laj{:?:YEX/>YEX/>YEX/>YEX / >YEX/>Y 9 9  901%7373#'#3f|f f{]bZ;<:0: SEX/>YEX / >YEX/>YEX/>Y 9 99 9013##3$̍~6' K:D9EX/>YEX/>YEX/>Y9  +X!Y01%3#"''26773<2Y+1>Xm&5h8cWj1W: FEX/>YEX/>Y +X!Y9 +X!Y 9017!!5!5!eeX{gYDl=- 9 // 9/ +X!Y901&&55#525667}l2h3ONIMQ/EX/>Y01#3ee l_=- 9 // 9/ +X!Y9016547&55'73" 窨Q$DDR?3~m1N ? 9EX / >YEX/>Y  +X!Yа/013#"&462o|,L--L,e"..D..w &!Q"#9//EX/>YEX/>Y +X!Y аа +X!Y01%2673#5&554753#&&#"E{ s͔xӺxsQr$#Ҝ#]F!q"#9EX/>YEX/>Y9/ +X!Y +X!Yаа ав9 +X!Y01!!53676'#534632#4&#"! Bb3 ݹ{} XZhh ^JRh"ӱhm_*A+,9 EX/>Yа/  +X!Y( +X!Y01%#"''7&547'76 7326654&& kNq⥛U|UVzV HQV㫫WXשW{q9EX/>YEX / >Y 9 9/а/ +X!Y  +X!Y аааа013!!!!#!5!5!5!3mq9f{b9rYXDXY/EX/>Y+013#3xxxf_6E%FG9%> /EX%/%>Y?% 9? +X!Y?9 а  +X!Y7% 972 +X!Y729%)а%, +X!Y01#"&'&5732654&&$&&5467&&54$32#4&#"%6654&'_{m[amDxϱEYujV\x>ĽXglvG\pd!0n89rqM^N`ged!/l͒sO^L-3g tYS`L8 sVbv8$ / +X!Y аа/01462"&%462"&,L--L,,L--L,t"//"!.. "//"!..k(7899а4EX,/,>YEX4/4>Y4,9/],49/] 9 +X!Y +X!Y94 +X!Y,% +X!Y01 &5546 #4#"3265%32$54$#"4$ #"$aԷ*cj~ljm£&"ݧڠUKJ_ԵZաࢍ[jvz̴31ЮZX%&'9EX/>Y&9/а/9 9 / +X!Y 9@ ,<L\] +X!Y ! +X!Y01&'#"&5463354&#"'4632%2675#"WuPQZgk|5s+3ludnz=U^GHf\WQ<,~{@&D|/а/ +X!Y01#!5!xL,jf 2;:<=9:а:а:!EX/>YEX / >Y +X!Y +X!Y 9/ 9 /  ]3 93/ +X!Y&39-а ; +X!Y014$  $7 $54$#"#!2#&54&#'32654&'#fKKvU#N$ݫݦbH8 fKZQiWjZXdẕ50G{}@mD$YJ[TEUI?9/ +X!Y01!5!k?av >9EX/>Y а / +X!Y +X!Y01#"&4622654&#"vdeƏsYVVBAZhΓgCXXCEZZT A /EX / >Y а  +X!Yа  +X!Y901!!#!5!3!5!ayobobC=fJf eLW9EX/>YEX/>Y +X!Yв9 +X!Y 9901!5654&#"#462!@jQOW^iv7K:nI?MYIl|fez7G&w '(9EX/>YEX/>Y9|/oq +X!Y 9% +X!Y%9%9  +X!Y0136654&#"#4632#"&5332654## VQ_VQL`iwLFjiTW]ISH<>JJ:`|xf8^*f|g>QLB|/а/]/013#;i`:e9EX/>YEX/>YEX/>YEX / >YEX/>Y +X!Y  9 90132673#'#"'#~xmbոWw:stƚ}S! + 9EX / >YEX/>Y 901!#"&&54$33lv tՋP{M # 9EX/>Y +X!Y01462"&,P..P,#00F//bM\9EX/>YEX/>Y ,] 0]9/ +X!Y  +X!Y013#'2654&'7 YqWY@\lNA7:,~3EX/>YEX/>Y9/ +X!Y01#5%3jDFZk B 9 EX/>Y 9 / +X!Y +X!Y014632#"&5326554&"lqhcstsl^rx_susC&Qsw'' EX/>Y01d''EX / >Y01v'' 4/EX!/!>Y01XTM#\ $%9 EX!/!>YEX/>Y! +X!Yа/9  +X!Y90132673#"&5467677"&5462'2QwxҫjU,L--L,{viuȭoʇGmEO"//"!..9EX/>YEX/>YEX/>Y9/ +X!Y +X!Y 9 // ]  +X!Y +X!Y901!!!#!!!!!!q`JM #{ff=]d 8/ 9 / 9 9 9в 9  0177]fOVWOfOm^P^POl} )h*+9а&EX/>YEX/>Y9#9#а +X!Y$а& +X!Y01#"'#7&54$3273&#"%4'32ehkg zxwyPkФaٸT3ӎ#T+ H Y9EX/>YEX / >Y 9/ 9/  +X!Y +X!Y01!2!#!26&'/EqxxDf{kH,P#-.9/EX/>YEX/>Y9 +X!Y"9* +X!Y01!#4632#"&'732654.54654&#"xGSYԤT("%CzX\~~[g٩:`R08hO0 e4b=qM`T]wUzN+7?Ȳ@A9/а;EX/>YEX/>YEX/>YEX/>Y9 9 / +X!Y 99<9YEX/>Y9/ +X!Y" +X!Y) +X!Y01#"&&5432&''7&'77'&&#"3265+p~|d;*3Ή'36'oZehn{MCIjCgHyI9S`ҹgeH. S9а/ +X!Y +XY +XY +XY +XY01!5!462"&462"&.,P..P,,P..P,tH#00F//#00F..Yt#-h./9 а*EX/>YEX/>Y9'9'а  +X!Y(а* +X!Y014663273#"'#7&&53&#"%4&'3265Yy݌rdN^d^hz܌l\O^cdnwGEK[B?}DV-0H!)Gn=+ g?"`f9 /EX / >YEX/>YEX/>Y 9 9  +X!Y +X!Y01#"'#3632'4&#"326vxxuxn**pלjeZcl" #$9 /EX / >YEX/>YEX/>Y/]]9/ +X!Y 9 9аа +X!Y   +X!Y01##'#"5432!5!533327&#"ps߻s?wd]]ۗ-+HfhtEX/>YEX/>Y9/9/]а +X!Yаа +X!Y а а013##!##533!3!5!ב{{{@{E@b`F`NNr :EX/>YEX/>Y01!#3 xx: : bEX/>YEX/>YEX/>YEX / >Y9/o],<] +X!Y 901##333#yy :  ]EX / >YEX/>Y 9/а +X!Yа +X!Yа а а 01%!!57303|1aZah2Z2 KEX / >YEX/>Y 9/а +X!Yааа а017#573Exx\F[FF[FKe9EX/>YEX/>YEX / >YEX/>YEX/>Y  +X!Y 9 901#"'732655#3颐:7 -6X_{{=fvVKN` 9EX/>YEX/>YEX/>YEX / >Y9 +X!Y +X!Y01632#"'732654&#"# n?=-AX`~t(x: g{v묨pp:l #$%9EX / >YEX/>YEX/>YEX/>Y +X!Y9//] +X!Y +X!Y +X!Y  +X!Y01!!#"&'4632!!!!!27&#" zGW}tv :ih^N!.6789'а2EX/>YEX / >YEX/>YEX/>Y 93 93/ +X!Y +X!Y 9 9%в) 9, +X!Y / +X!Y01466326632!327#"&'#"5326554& "!54&^yۊ><~ƚs4:=ۍxƢ-~`wR|/ ʟe 3 9EX/ >YEX/>Y  +X!Y0134632&#"@H27bl` ~q@| e9EX/>YEX/>Y9/  +X!Y 9 +X!Y +X!Y01 5!5#"'6! '27!)'$P TR-wC +x\|°i/5K t!"9EX/ >YEX/>YEX/>YEX/>Y +X!Y  +X!Yаа +X!Y01##"'73265#53547632&#"3X87%YEX/>Y 9/ +X!Y  +X!Y$ +X!Y01#"$'54$326653#"32KkjoSzФ-ģ2g_ ** Y%^&'9EX/>YEX/>Y9/  +X!Y +X!Y" +X!Y01466326653#"5326554&#"Yy݌҅ZMgijOz܌wɤʢ-f-0 V 9EX/>YEX/>YEX / >Y 9/ +X!Y  +X!Y016653#"$'3 65xgjzh ƻNu'̶j9EX / >YEX/>YEX/>YEX/>Y9/ +X!Y9 +X!Y01#'#"&'33 736765كtlwEx}OQ)fK*: 0 9EX/>YEX/>Y  +X!Y01#"'73265*97 +8X_:mcv\Nh !9 EX/>YEX / >Y 9/ +X!Y9  +X!Y +X!Y012#"&55!54&#"'6267!{y}Ŝv53N8aB7SȠ2/ +XYааа//]901#'#573omL '/]а//]9а/0173#53kVk.  ?p -/а//]  +X!Y а /01#"&53265̝fccstSX\O9  / +X!Y014632#"&,&',,'&,f"//"!..u1 1 /а/?O]  +X!Y +X!Y014632"&732654&#"uqPOrnnMB21DF/1CsPnnPOllO2BA35BDY +X!Y@ ,<]01!327#"&5467[iJU63ANPZ|hPi1T!T,YPJ:j >/а/] а /  +X!Y +X!Y 01#"&#"'46323265 qRL9/?ZmV0D<=).A`un>8\x"*"B8x @/]а/]/а/а//013#3#yy6m/ C9 /а/ ] а /  +X!Y +X!Y014632"&72654&"Z@?XX~[I/D..D/=RS<;PO<(( **/#/]/а/]01#3/m#/]а/]/013#XhK@mY?/а/@ /?O]9/ +X!Y +X!Y0156654HWPm\[U}'0-2M^OBS>/B/?]/а//]/а/а/01#3#3yҙm  `j /  +X!Y014632#"&`,&',,'&,"//"!..4/а/]/013#vmS4$84 /а/а/]  +X!Yа а/013#4632#"&%462"&نHa,&',,'&,,L--L,"//"!.. "//"!..{M x',EX/>YEX/>Y +X!Y01!#!' {nG,_0EX/>YEX/>Y +X!Y901!! VhDPv#$%9а EX/>YEX/>Y9/_]]qqO_q]/]q +X!Y +X!Y  +X!Y01!5!#"$'54$32#"32*zeФ-ţ3** D1EX/>YEX/>YEX/>Y901#3#6wPt  uEX/>YEX/>Y +X!Y9/]qqO_q,]\]y] +X!Y  +X!Y017!!!!!!tga2Uqhhii9EX/>YEX/>YEX/>Y +X!Y01!#!#!{{.G?. >EX/>YEX/>Y +X!Yа  +X!Y01!!55!!Th\\]iXc!| "#9 а EX/>YEX/>Y9/9/] +X!Y аа +X!Yв901#5&$&546$75366& | |R`{ ]9EX/>YEX/>YEX/>YEX / >Y 9/  +X!Y а016673#&'33{|{cv|{"|p x%^&'9EX/>YEX/>YEX$/$>Y +X!Yаа +X!Y"а#01%6754#"!5!&554632!!홬⼽߭1 !5w56p6whaHs!t^hozN#!$%9!EX/>YEX/>YEX/>YEX / >Y +X!Y 99  +X!Y! +X!Y01327#"&'#"''327327&&#"d)9N]n l|],k:ҵ][j? 1͹~qB*l+,9/EX/>YEX / >Y) 9)/& +X!Y&)9 9 +X!Y   +X!Y012#"&'#4664&#"32654&'#53 Rg_eYEX/>YEX/>Y 9013#37G|qxp|;:BYY[-e./9*EX/ >YEX/>Y +X!Y 9 /* +X!Y* 9" +X!Y014632&#"#"5547'&& 6554&&'"ʣ mwۋ̔ltD\] {BgA[h%<# *GdykM&'(9EX/>YEX$/$>Y$9/,<]o]OqqY]] +X!Y9 $9 +X!Y$ +X!Y $90147&&54632#4&#"!3#32653#"&kckƹw3x):#~N[wl`dblaucI}? 9/EX/>Y9  +X!Y +X!Y01'654&$&'&54!5p~dq_GeADwO(9d=Nx_p$3SDG'9ak/4HJ2Hw3faNT 9EX/>YEX/>YEX/>YEX/>Y9  +X!Y01632#4&#"# r踯xHx:M:   9аEX / >YEX/>Y 9/_]]O_q]]/]q  +X!Y +X!Y +X!Y01#"532!54 !327 ȫphF)0HOU E!: )EX/>YEX / >Y +X!Y01327#"&5.AL/27I{p:XW d*1=P9/EX/>YEX / >Y +X!Y99 +X!Y01237#"&'#''&#'6D:*+,Nf,],U/!AJ:c Pq!\_ w,f-.9EX*/*>YEX/>Y* +X!Y-*9/  +X!Y*9 +X!Y$ 901&#"!3#"'7654.5467&&54632{s|X)[IF+LLyDvؖt5)}kgb1C3>4:'EO)1?Ehl,%b-3:^ 9EX/>YEX/>YEX / >Y +X!Y  +X!Yааа01#327#"&'!##5!m@M/27Iyp%x:>ZX d-g`NY9EX/>YEX / >YEX/>Y 9 +X!Y +X!Y012#"'#632654&#"Ptxx[ܗN ޽oN!V"#9EX/>YEX/>YEX/>Y9 +X!Y  +X!Y012#4&#"'7654&'&55466=r_c:BOAesNѲ!b$^T=&9JT454 +[l:N !9 EX/>YEX / >Y +X!Y  +X!Y01!#"5543!326554&#"lmyxۊ /gƢƣD!/$M:K 9EX/>YEX / >Y +X!Y  +X!Yа01!327#"&5!5!mEL"A9[t|>`_Yf:=9EX/>YEX / >YEX/>Y +X!Y013253#"&5|tr:0г:Uq":$a%&9/EX/>YEX/>YEX/>Y  +X!Yа а! +X!Y01&474632#665&&#"|{?^kx]{txx)4,SWE^r509-yE :Y9/EX/>YEX/>YEX/>YEX/>Y +X!Y а0165&3#&3H8wx: W* :%[&'9EX/>YEX/>YEX/>YEX/>Y +X!Y 9в9013267332653#"&'#"547~{y}|M<ʳw(N?J:Ľ0ѽ!|(u *n(+,9(EX/>YEX/>Y$9$/ +X!Yв 9 +X!Y$а' +X!Y01#"&5732675&55463267#"uG^x񩄘SHmʶRbG пheviJ 9EX/>YEX/>YEX / >Y +X!Yв 9012&#"#&&#"'632766=4,6H#{$G5,2>Yp/2o_DMVkLC^^hJMmZ8%:&r'(9EX/>YEX/>YEX / >Y +X!Y9аааа  +X!Y 9$01##"'#"547#5!&'!32673326%XPOXaWbu|y}t)gƻ6q9EX/>YEX/>YEX / >Y +X!Y9/   +X!Y +X!Yа01!6632#'2654&#"#!5!QFsؔ·|PbG%~mcC:Gi !"9EX / >YEX/>Y 9  +X!Y 9/]_]/]O_qq +X!Y +X!Y  901#"&'54632#!"!!3267{._),s.h1Թ3"w #$9 EX/>YEX / >YEX/>Y 9/  +X!Y +X!Y +X!Yа01!#!!#5766!2654&'qr "S4(gh9$ hi~Gۃhx 839EX/>YEX/>YEX / >YEX/>Y 9/_]/]] 9/ +X!Y +X!Y  +X!Y01!3!2!!#3!2654&'58{jt{{hd}W#6_9EX/>YEX/>YEX/>Y +X!Y9/  +X!Yа01!632#&&#"#!5!Ѽ|{IaG3X4@Gi I /EX/>YEX/>YEX/>YEX / >Y +X!Y013!3!#!|8{,|!HPax ^ 9 EX / >YEX / >Y  +X!Y 9/ +X!Y  +X!Y01!!2#!!!2654&'isnhGc~G]9 /EX / >YEX/>Y +X!Yаа ааа  +X!Y01%3#!#36!!!{{ao%J; h7at _JEX / >YEX / >YEX/>YEX/>YEX/>YEX/>Y 9//]_] +X!Yв9 в901####33333#i{ ʰ{ʔ KKnnAZd)~'*+9EX / >YEX/>Y  +X!Y 9' 9'//']_']O'_'q$ +X!Y$'9 9 +X!Y014&#"#46632#"&&5332654&'#5366Ʒ{~ xz{ڧ־ƺ4tgo*Lo|j EEX/>YEX/>YEX/>YEX/>Y9 9013##3u{{||P"#(O9EX/>YEX/>YEX / >Y +X!Y   +X!Y01#!#5766{"S4(gh9$PGۃhx 7D9EX/>YEX/>YEX/>Y9  +X!Y013#"'732?3$j=! ?|K?ٍ =E d-/L"+` ,-9 а * // 9/а/ 9/ а /) +X!Yа# +X!Y"013##5#"$54$33533254''"6"%xx<Փ  H  q C 9/EX/>YEX/>YEX / >Y +X!Y013!33#!|8{ rH7_I9EX/>YEX / >YEX/>Y9|/ +X!Y01##"&'3327|ͽ|P9h9 IEX/>YEX/>YEX/>YEX / >Y +X!Yа01!3!3!2F{D{HHP<U /EX/>YEX/>YEX/>YEX / >Y +X!Yаа а а01!3!33#!2F{D{ mHH<_ a 9 EX/>YEX / >Y 9/  +X!Y +X!Y  +X!Y01!!2#!!!2654&' cis chc~J o9аEX / >YEX/>YEX/>YEX/>Y 9/  +X!Y  +X!Y01!2#!3!2654&'#35is {hE{{8c~1x O9EX / >YEX/>Y 9/  +X!Y  +X!Y01!2#!3!2654&'-is {h8c~ !9EX/>YEX/>Y9 +X!Y 9 /O _ q_ ] ]/ ] q q +X!Y +X!Y9013255!5!54# #6$32#"$'ƽ`.{1ƿ0$i$*ͮӡ$%&9 EX / >YEX/>YEX / >YEX/>Y 9/_]O_q]/]q +X!Y +X!Y! +X!Y01#"5!#3!4$ #"32Nj{{ P{Фm6Rc2*+ \> c9 EX / >YEX/>YEX/>Y 9/ +X!Y 9  +X!Y01!!#&&54$3!3!!"]…WϵaQs1ƏPa)g*+9!EX/ >YEX/>Y9/999! +X!Y( +X!Y012#"557665366326554& PuێygF@ơ`P'RGTnCTh : !9аEX/>YEX/>Y9/o]qrOq/?]r +X!Y9 +X!Y +X!Y013!2#!2654&#%!$54&#!b^j[/:Q^rhbZjdc[>:,EX/>YEX/>Y +X!Y01!#!>x-:4K:]9 /EX/>YEX / >Y +X!Yаа  ааа +X!Y01776!3#!#3!!5~pwsVk eEI+]>e}:EX / >YEX / >YEX/>YEX/>YEX/>YEX/>Y9/o]/?]Oq +X!Yв9 в901####33333#אxprcxcp  +%%bM&'(9EX / >YEX/>Y  +X!Y 9$ 9$/o$$]/$?$]O$q$$q" +X!Y"$9 9 +X!Y014&#"#4632#"&5332654&##536tw空`\⻵x~bjw[N~#9ɒbscm`h: EEX/>YEX/>YEX/>YEX/>Y9 9013##3cxxww:y:: nEX/>YEX/>YEX/>YEX / >Y9/o]Oq/?]q +X!Y 901##333#¦yyD: ,:O9EX/>YEX/>YEX / >Y +X!Y   +X!Y01#!##57667xE Bl.%gZ:kpj 5: YEX/>YEX / >YEX/>YEX/>YEX / >Y 9 9 901%3###3x`UXwxt:: lEX/>YEX / >YEX/>YEX/>Y 9 /o  ] qO q/ ? ] r +X!Y01!#!#3!3xxxGx::9EX/>YEX/>YEX/>Y +X!Y01!#!#!xx7-:(:2EX/>YEX/>Y +X!Yа01!#!5!vx},fo`]&1239!а,/EX/>YEX / >YEX/>YEX/>YEX/>Y  +X!Y$ +X!Y*а/01323632#"'##"'%4&#"326%327&#"oϷiIwJn еlNwMg vf8?a^?:a2/3A/F.A,')F)I: </EX/>YEX/>YEX / >Y +X!Y013!33#!xGxn n:++ZAn:I9EX/>YEX/>YEX/>Y 9| / +X!Y01!##"&'33673xwx6$⛉0: IEX/>YEX/>YEX/>YEX / >Y +X!Yа01!3!3!xx:++:F:L /EX/>YEX/>YEX/>YEX / >Y +X!Yа 01!3!33#!xx n:+++ZA:#: a9EX/>YEX / >Y 9/  +X!Y +X!Y  +X!Y01!!2#!!!2654&'#8x]׷U6|:wWfwqlQ: o9аEX / >YEX/>YEX/>YEX/>Y9/  +X!Y  +X!Y01!2#!3!2654&'#3 8x]׷Uw6|xxWf:ql:: O9EX / >YEX/>Y 9/  +X!Y  +X!Y01!2#!3!2654&' 8x]׷Uw6|Wf:qloN !9EX/>YEX/>Y +X!Y99 +X!Y9/qo]/?]qrOq +X!Y01"#46632#"&533267!5!&&|tmk tЉt~ qb`M׫eN#$%9EX/>YEX/>YEX/>YEX / >Y9/o]Oqq]/?]q +X!Y  +X!Y  +X!Y01!>32#"'!#3326554&#" 5~؆ z܌ wwɤʢM:]: c 9 EX/>YEX/>YEX/>Y9/ +X!Y9 +X!Y01#!#&&5463!!"xo{ӴylY}:Lq_zxK%&'9"/EX/>YEX/>YEX / >Y/"]"]%"9%/ +X!Y9  +X!Y +X!Yа% 01!6632#"'732654&#"##5353!H;m>=+BXayo)ww5aj᪲cvvfkN !9EX/>YEX/>Y +X!Y99 +X!Y9/qo]/?]Oqq] +X!Y01%2673#"5546632#&&#"!!9{ srlpьsQrc\'!ԭٿf$: } !"9 EX/>YEX/>YEX/>Y9/  +X!Y +X!Y +X!Y +X!Y01!!!#57667!!2654&'8kcԴNO7&gZ6}^XAj @}gcx:9EX/>YEX/>YEX / >YEX/>Y 9/ 9/  +X!Y +X!Y  +X!Y01!3!!!#3!2654&#GxE԰Kxx6|O':@{ifvv9/EX/>YEX / >YEX/>Y/]]9/ +X!Y 9 +X!Yа01!6632#&&#"##5353!T;mwyo)wwAaj:Ǒvf: F/EX/>YEX/>YEX/>YEX / >Y +X!Y01!3!#!Gxx:+a:o a!"9EX/>YEX/>YEX/>YEX/>YEX / >Y9 +X!Y01#"&'#"&'3326733267oԺs.0v|z~hjjh闯ꕲ:!a"#9EX/>YEX/>YEX/>YEX/>YEX / >Y9 +X!Y01#"&'#"&'3326533267ĩh+-jwL@cuxro:=]``]лBQCE w 9 EX/>YEX/>YEX / >Y +X!Y 9/ а а +X!Y  +X!Y01!!2#!#533!!2654&'e7x^صTxE5{:Xi:elup$%&9EX#/#>YEX/>YEX!/!>YEX/>Y 9 // ]в9  +X!Y  +X!Y +X!Y9а 01!32#!"!!32673#"5!#3M1{.{{{,3fseJйj.B9N$%&9EX$/$>YEX/>YEX!/!>YEX/>Y9/o]Oq/?]qв9  +X!Y +X!Y +X!Y9013632#&&#"!!32673#"'##3 ɲs '}srlxxY ԭпfٍpc\ :% WEX/>YEX/>YEX/>YEX / >Y 9 / +X!Yв901####3#!y⫀w2&&PE : WEX/>YEX/>YEX/>YEX / >Y 9 / +X!Yв901####3#!'x|i|~'([[:h}EX/>YEX/>YEX/>YEX/>YEX / >YEX/>Y9/а +X!Y ав901!3#####!#3!_Awy⫀{{{(EkP&&%:EX/>YEX/>YEX/>YEX/>YEX / >YEX/>Y9/б +X!Y ааав901!3#####!#3!'AR i|x|xx~'(y[[Z:h!x"#9EX/>YEX/>YEX / >YEX/>Y 9 /а  +X!Yа а  +X!Y0136633!32#&&'##'#"3!cQnQ^| {$`/[ym s <:x !9EX/>YEX/>YEX / >YEX/>Y9/а +X!Yаа +X!Y0135663!2#5&&'##'#"3!xJ wJϗ$ R$()*9(EX/>YEX#/#>YEX / >YEX/>YEX/>YEX!/!>Y 9/%аа +X!Yаа' +X!Y01!3!32#&&'##'#"#67!#33!La0QnQ^| {|i%{{`/ [ym s_Z[<:!%%&'9%EX/>YEX / >YEX/>YEX / >YEX/>YEX/>Y 9/  +X!Yа аа"а $ +X!Y012#5&&'##'##567!#3!!3!"xJ wZycZxx(Rϗ$ _:tgw)2/349/$///EX&/&>YEX/>Y&9/_]/] +X!Y9 +X!Y&$ +X!Y/]/2а2/22/2]*/29+а+/01##&&546332654&##53 4&'!5!273#53"D]M,f<„~;kWk1o,M}8dX%Ujvgf  ^gl.(1-239-/./EX/>YEX/>Y +X!Y'9'//'?']'']O'qo'']'q'r$ +X!Y $'9 +X!Y.1а1/11/1]).19*а*/014&'!5!2##&&546 6654&##53 73#53ݜle2[P-iPHkWkTagN$<|7dX'Ujv4]?h]g  v#$%9а EX / >YEX/>Y 9/_]]O_q]]/]q  +X!Y +X!Y  +X!Y01#"$'54$32!5#"!32 yyФ-ţ31!** YN 9 а EX/>YEX / >Y 9/o]Oqqq]/?]q +X!Y  +X!Y +X!Y0146632#"5! 6"!&&Yy݌ z܌M+ <  -0)岴G 9EX/>YEX/>YEX / >Y 9 +X!Y01%76673"#3!2,k 2P/xumm}l \,MG9EX/>YEX/>YEX/>Y9  +X!Y0176632&#"#3&)$kM=""S)`|rka_ q:vr9)W*+9EX/>YEX/>Yаа +X!Yа# +X!Y&01#5&546753'4'#55365|x~xzɴxϵx٪}}g&( xy 'uvuu(Y|'Z()9EX/>YEX/>Yа а% +X!Yа +X!Y014753#5&566554&'#553Ywwww-*qqst'Cyyul2,<E FG9 2а ?EX/>YEX / >Yа в 9 +X!Y  +X!Y  9%а,а4а4/.а./- +X!Y.2а2/9 +X!Y4@а@/EаE/012#"&'#"&5463"3267332654&##"&#"#566326753Ӵv00uҶz{|||pC\jYpDiL2gjjg;h&=JT!hu>Gki3h,?H IJ9 3а GEX/>YEX / >Yа а/ 9 +X!Y  +X!Y  9%а,а6а6/.а./- +X!Y.4а4/; +X!Y6CаC/HаH/012#"&'#"&'463"32655332674&##"'&&#"#546326753lk-,jmnuwskmGR'[j/]u3CjO0F]aa]eꕫjUO,"lv"Y'=Glf5jo ()*9%EX/>YEX/>YEX/>YEX/>YEX / >Y9 +X!Yа'а'/(а(/" +X!Y(%а%/01#"&'#"&'3326733267%5!!#5oԺs.0v|z~"ohjjh闯ꕲRRqq!)*+9&EX/>YEX/>YEX/>YEX/>YEX / >Y9 +X!Yа'а'/"а"/# +X!Y"%а&01#"&'#"&'33265332677!!#5ĩh+-jwL@cuxro]p:=]``]лBQCE%QQV9EX / >YEX/>YEX/>Y 9  +X!Y +X!Y01#&54632#&&#"33{| öLZr"0oNV9EX / >YEX/>YEX/>Y 9  +X!Y +X!Y01#&5546632#4&#"3wsӈsS\'#٪|!y>/EX/>Y01%#%7%73%A!6ݺ5%7#˄%:_^`hZ^/ +X!Y01#5!53pn;{lV- /а/а/ +X!Y   +X!Y012#4#"#53667ij\'Pf*jIvl!U'Ut.<a /а/0153t>9܅y..oa /а/01'7'39>..y  '5BO\jE/S/`/8/EX/>Y  +X!YEаEL +X!YаSаSY +X!Y%а`+а`g +X!Y2а8? +X!Y01462#4&#"4632#4&#"4632#4&"4632#4&#"462#4&#"462#4&#"4632#4&"4632#4&#" stp30.3t]_uq5.,3Hu]_tp5\3t]_tp5.-3Ostp30.3Mttp30.3u]_tp5\35u]_uq5.-3ThhT.750ThgU1450 UghT147.ThhT147.ThhT.77.ThhT.750 UghT147.UggU1450(cg "'%//#/!/// /EX/>Y01#'37%%57%'%'7+ z`F: z`F Mu Z@DE&+A`B<aR |bG; |bGDEFEG+d&'3CUEX/>Y 01O&'@EX/>Y 01c 9 EX/>YEX/>YEX / >Y +X!Y 9/ а аа/ +X!Y  +X!Y01!!2#!#5353!!2654&'e7x^صTxE5{JyXiJfupO9EX/>YEX/>Y9/ +X!Y +X!Y01#!2'#%654&'!!27'70|KpWttOwLQpD4Ur#D`N%p&'9EX/>YEX / >YEX / >YEX/>Y 99 +X!Y +X!Y01'#"'#3632'4&#"327'765~nMl]vvwouxn*+m`GnNgRC>ڙje]b2Cw! 3 9EX/>YEX/>Y +X!Y01#!#!3! {xIb=,EX/>YEX/>Y +X!Y01!#!3=x'x-:YI^ 9 /EX/>YEX/>Y +X!Y9/   +X!Y +X!Y01!3 #'2654&###!' +oΌ{nGb/:^ 9 /EX/>YEX/>Y +X!Y9/   +X!Y +X!Y01!32'6676&###!:܉dk xfv\:!&Q:&Q &,Q4:&Q.nEX/>YEX / >YEX/>YEX / >Y 9/_]/]O_q +X!Y9а01 #####3333OI\f||fa}@Pj?:|EX / >YEX/>YEX / >YEX/>Y 9/o]qOq/?]r  +X!Y 9а01 ###5##33533 KfyyfL!:: QptEX/>YEX / >YEX/>YEX / >Y9/_]/]O_q +X!Y +X!Y 901##!5!33#|{c3UJfd435:EX/>YEX / >YEX/>YEX / >Y 9 /o  ] qO q/ ? ] r +X!Y +X!Y 901##!5!33#xpCg Z&,QTF:&Q@ aEX/>YEX / >YEX/>YEX / >Y9|/ +X!Y +X!Y01!!!#!#31@N-{||"fF: ~EX/>YEX / >YEX/>YEX / >Y 9/o]qOq/?]r +X!Y +X!Y01!!!#!#3G%SxxxUg-:k9/EX/>YEX/>YEX/>Y9/  +X!Y +X!Y +X!Y013 #'2654&###!#!ߤ+oΌ{{.Cb'G:k9/EX/>YEX/>YEX/>Y9/  +X!Y +X!Y +X!Y013 '6656&###!#!֞bn ¡xx8qgw\ -:{)7*899*EX / >YEX / >YEX/>YEX/>Y 9/  +X!Y +X!Y) +X!Y- +X!Y 4 +X!Y01"'#"$'5463"327&55466323654&#"ѩuт|dWdswySxzFB:ާlǨa&[#SII vN&3459'EX / >YEX/>YEX/>YEX/>Y9/   +X!Y +X!Y& +X!Y* +X!Y 001"'#"&'543"327&&5546323654&#"oy]ǣI?mxUMZopggQUb 7@R iѥIMj`Lу<^ȵ7&<Q0:&\Q#oZ/EX/>YEX / >YEX/>Y +X!Yа а  +X!Y01!5!53!!!33#!r|V8{ qIffH7_:M /EX/>YEX/>Y +X!Yа +X!Yа 01!5!!!33#!IHxn nff+ZA&Qn :&QR9EX/>YEX / >YEX / >Y 9|/а +X!Y013673##5&&'(f||f`U -P.:R9EX / >YEX/>YEX/>Y9|/ +X!Yа01!##5&&533673xffg̹x{go]x% 瘍%!G9EX/>YEX/>YEX / >Y9/ +X!Y0133632#&&#"{;{i9b9P$&n'(9$EX/>YEX/>Y9/ +X!Yа а +X!Y9# +X!Y01 5&&5354632!327!54#"hdiE&@Cg!ew\O+ SN$n%&9EX/>YEX/>Y!9!/ +X!Yа! а +X!Y9 +X!Y01"&&55&&536$32!3267"!5&&|oseӠ`YEX/>YEX/>Y9//]а +X!Y +X!Y01!#333#'2654&#!/||"*q΍qpe:z9/EX/>YEX/>YEX/>Y9/o]Oq/?]q +X!Y9 +X!Y01'6676&###3330cn!ʺyyVdt]: (W&H,P:&AK 9EX/>YEX/>YEX/>YEX/>Y9/_]]]/]O_q  +X!Y +X!Y01!3#"'73265!#57{99+8X_{UfvdK: 9EX/>YEX/>YEX/>YEX/>Y9/o]qOq/?]q  +X!Y +X!Y01!3#"'73265!#Gx97%=X`x:mcvI:c&,TN:&?&1:&| h9EX/>YEX/>Y 9 / +X!Y9 +X!Y  +X!Y01 # 5!5#"'627!$P)'> T|°R-wC +x\/5q p9EX/>YEX / >Y +X!Y9 9/ 9  +X!Y +X!Y901!5!#"&&5332654&'#5k&hEςw|}Gi`hequ :c9 /EX/>Y +X!Y9 9/ 9  +X!Y +X!Y901!5!#"&&533265%#5c.eIsԇxy|g]}egT gKI&"&&DTKf:&(&&T7K&<T0K:&\TK R9 EX/>YEX/>Y9/  +X!Y  +X!Y013!"$54$7!"|kLdP|ޯL  \!"9EX/>YEX/>Y9/ +X!Y в9 +X!Y01!"$54$7!376676'3#'!".l|xy@v)ϲdSWh|oN*+,9)EX/ >YEX/>YEX/>YEX/>Y9  +X!Y99! +X!Y' +X!Y0132336676'7#'#"'&#"327'oqxi^Cu/Bo Z֕\ 1vAتYMD3)f*+9EX / >YEX"/">Y* 9/ +X!Y  +X!Y9" +X!Y" 90153665!!5!36676'3#&'54&#qfUEz0󾕛ji¹*CRcxȬXK.:(c')*9EX / >YEX/>Y +X!Y 9) 9/ +X!Y  +X!Y&901%36676'3#&'54##'36654&'!'!CIJ{*Ԯ|vԾJ>QOrMdeX^vcH1b$b%&9/EX / >YEX/>Y% 9/ +X!Y  +X!Y9 +X!Y015366&#!5!3'67#&554&#ɴytHDHZ9Dffu+ *W@4xDyp:b !9/EX/>YEX/>Y9/ +X!Y +X!Y9 +X!Y01'3$54%!7!23'67#&'54! 3gJBGYG!ffB1n\<4z~#~dBO"e#$9EX/>YEX/>YEX/>Y +X!Y  +X!Y +X!Y901!#5766!72676'7#"&'T!Q:'eh:&*i\Cy+ŝGއhr լbgݵ3: e!"9EX / >YEX/>YEX/>Y  +X!Y +X!Y +X!Y 901!#57667!76676'7#"&5Ig6%e[eWEu0׷AjĹTx&9EX/>YEX/>YEX/>YEX/>Y +X!Y 99/]_]]]/]O_qq +X!Y0136676'7#!#3!kZDy+||}ԦbgvBeT:9EX/>YEX/>YEX/>YEX/>Y9/o]Oqqq]/?]q +X!Y  +X!Y901!#3!336676'7#&'RxxDwgTDu0׷:}ĹTx I!"9EX / >YEX/>Y  +X!Y +X!Y 901"$54$32&#"36676'3ρ(5z LaDϕEuNF !9EX/>YEX / >Y +X!Y 9 +X!Y01%674'3#"5546632&#"Ntĭq΅V"_11aPzrV0?_8W=}!O9EX/>YEX/>Y +X!Yаа  +X!Y901!5!!36676'7#&'"k\Dy+ƗGiiаhC:O9EX/>YEX/>Y +X!Yаа  +X!Y901!5!!36676'7#&'}ql\Cu.ٵee=*{%+,9EX/>YEX / >Y +X!Y 9& 9&//&]_&]O&_&q' +X!Y'&9 9 +X!Y0132653# $5467&&54$!2#4&#"3# Ϸ{Ι{~m⽇&*nfuj(KY&T.,KS:&T(_yc. /а/а/ а//   /013#3&&5]Gq\1KS>Ja|H2$P1P1PFL@~Gvff@-=EX/>Yа/@  0] +X!Y +X!Y01!5!5!5!qqfeba6 9/а/01#546HZwK3vp\>K 9/а/01'6753GZvK4ye) 9/а/а/01'6773pGSw4oweYK- 9/а/01&55ZHy4eca2&DK &)+ 9 /а/ а /а/а/01'6753'6753pGYw^GXx4{ف4zC! LEX/>YEX/>YEX / >YEX/>Y  +X!Yа01!#!5!3!!PxJx/ivT`1~EX / >YEX / >YEX/>YEX/>YEX/>YEX/>Y +X!Y +X!Y аааа01!!#!5!!5!3!!!1EyWWyE`engvg 9/ +XY014632#"&5fSRffSTfOdaM(Q`bQ&s&'7[3  9/  +X!Y014632#"&[+&',,'&+"..""..[f&4BPTUV9а)а5аHаSQ/S/EX/>YEX/>Yа/9 а /а/9#а#/* +X!Y1 +X!Y*8а1?а#F +X!YM +X!Y0146326632#"&'#"&5462#"&5326554&#"326554&#"326554&#"'N{Ty #|S{|T}# xS{ |{TeXVegVUfeXUefVTg4gWUehTSiJJeOBBOGOAAO|G]yybI`uwbJ]ywcJatuc]xy`I]yzb0r0l/9/01#53i'i+|{{a/9/01#'j>yO //017'JJy0r0; EX / >Y 01{T 9EX/>YEX/>YEX/>YEX/>Y9  +X!Y01663 #&#"#&}QoThpFP[J"`F)!*+9EX/>YEX/>YEX/>Y)9)/ +X!Y +X!Yа аа)а)а//] +X!Y  +X!Y$а&01!!!53676''#53'#53'4632#4&#"!!!Bb3ݹ{}g^mZhh ^JRnYZӱZ##&)*+9а#а%а)EX/>YEX/>YEX / >YEX / >Y 9/а/]$ааа +X!Yа#ааа аа +X!Y а)ав& 9' 9013#3##!##535#533!3!'!!5!%3#0|{{l{?6kOFfffffL/(#)*9#EX/>YEX/>YEX/>YEX/>YEX / >Y +X!Y  +X!Yав!9!/ +X!Yа/' +X!Y01#327#"&5###!233332654&##ALC/Q{p wYxQ⧴/ZX bҹu&6WP##'+05:9;<99а9"а9'а9+а9-а93EX/>YEX / >YEX/>Y 9/а/а +X!Y  +X!Yа ааааааа а"а$а&а(а*а -в0 9 2в5 96в9 901!33#3##!##53'#533!337!37!3'#7#%7#3''0d~k0t{pqzv0k~f3hx0/--#)p''feefYEX/>YEX / >YEX/>Y +X!Y9/  +X!Y 9/012#&&'!#3!2673#wrww^sw:W,:\S% &'9EX/>YEX / >Y% 9%/ +X!Y  +X!Yа%а%а/@ /?] +X!Y +X!Y а"01!327#"5#535#5332&#"!!!1]uf trc pm]3"k&YZ,m#Z#_"',Ʋ-.9а&а+EX / >YEX/>Y & +X!Y &9 /а/ ]*а*/@ ** *0*] +X!Y +X!Y  +X!Y ааааа а #а(01##535#535!23#3#!4'!!6%!&'!!!6e{2cu &\LQDeeqe*.-'e.,(3t9EX/>YEX / >Y +X!Y 9/ +X!Y 9/  +X!Yааа01!3###'3667!7!&&'#7!z!!$"QGci gX|i{i, 9EX/>YEX/>Y9/а/ ] +X!Yаа аа а а +X!Yа а аааа +X!Y901#"'5755737725+N{qϥ \v\\u\zhuhhui)sj:]9EX/>YEX/>YEX / >YEX/>Y 9/а  +X!Y 01#54'&'##5753wifwxwo#h# !9EX / >YEX/>Y 9/ +X!Yаа а /@   / ? ] +X!Yа а  +X!Y01!##535#53!2!!%!2654&'!zpv{SSihv%37899а&а64/6/EX / >YEX#/#>Y а/ 9  +X!Y +X!Y 9#а/#) +X!Y0 +X!Y01#"&55462#4&"3265462"&5326554&#"'tuaZfgNI\`gWVegVThKK bGdAT|`GZ{U>\G^xybI`uvc0r0[8 "] #$9  /EX/>Y 9/ +X!Yа +X!Yа   +X!Y01"&55#527663236554&#"vstfɧ~yq?3'*q1DĦ/ecFX mg'%()9%а%а%EX&/&>YEX#/#>YEX/>YEX!/!>YEX/>Y а /а/ +X!Y  +X!Y +X!Y #!9%&901!5!46 #"&5326554&"##33U$lrgbtrqԁMxvaZgrvips"!k9 nEX/>YEX / >YEX/>Y9/ 99в 9 а +XYа а01##33####5!4I[ZHI7`YR,ENe9EX / >YEX/>Y 9/ +X!Y +X!Y 9  +X!Y01%#"&54632!327"!&wĬzs^r>nz*zqc''$ EX/>Y01H'9'$EX/>Y01x/'! '$EX/>Y01k'#-' $OEX/>Y01j2*W+,9 /EX/>Y 9/  +X!Y +X!Y$ +X!Y012#"'7632#"55466"3255&&@rE߳QK-y|v֓â b^9)2^JRvEդ|fݶ*.o (/EX/>Yа +X!Y01#!#!x x=? 7/EX/>Y +X!Yа  +X!Y01!!55!!ZyJBf\]f/ +X!Y01!5!Cf@! :EX/>YEX/>Y9 9 / +X!Y01%73##53| `PPPfwN,=|>?9$а5EX / >Yа а/ 9 9а ! +X!Y) +X!Y1 +X!Y: +X!Y01#"&'#"5546632663232675'&&#"%4&&#"3265y؅RSyׅSSxWi??څYf=<׈ 7Ԏ/yt* yq*Kp?9EX/ >YEX/>Y +X!Y +X!Y01#"'73254632&#")8:0*@H27blab` }qeN-|./9'/а/ а +X!Y +X!Yаа/а/!а% +X!Y* +X!Y%-016636327#"''&"6636327#"''&"j0BRJ@Jg0zBNBDOB|0 0~BRJYEX/>Y99013# `f`cKI')UVU'Ju:,EX/>YEX/>Yа/а01#3#3bbbbcyJ4" 9/а/ ]а/01'6753GEs4bp`??&JJ09EX/>YEX/>YEX/>YEX/ >YEX/>YEX/>Y +X!Yа  +X!Yа013#5354632&#"3#!#3䴴z~Dxxbo;g5mb(:?o9EX/>YEX/>YEX/ >YEX / >YEX/>Y +X!Y +X!Y а 01&#"!!##5356632#7bgpx|w{qb(b=(?&*+,9(EX/>YEX/>YEX/>YEX)/)>YEX/ >YEX/>YEX"/">YEX'/'>Y +X!Yаа +X!Y а а!а$а%013#5354632&#"!54632&#"3##!!#3򳳩D; 2;cnͼ}|w3xxbd {qo;g5kb((:?)*+9EX/>YEX/>YEX!/!>YEX/ >YEX/>YEX/>YEX%/%>Y +X!Yа  +X!Yа а#а$а'а(013#5354632&#"!56632#&#"!!#!򳳩D; 2;cn}xbgpw3bd {q=({qb((?o()*9EX/>YEX/>YEX'/'>YEX#/# >YEX/>YEX / >Y' +X!Y  +X!Yаа# +X!Yа01#327#"&'#53&&#"##535676323\ALC/Qyr"x1ckxXRGV/ZX bbI~q@bYR+*ze2JòKL9E/EX>/>>YEX/>YEXI/I>YEX / >YEX+/+>YI +X!Y  +X!Y аE +X!Y>+9> +X!Y8+>98$ +X!Y/+>9+2 +X!Y01#327#"&'#535#"#4&#"#"&5332654&$&&54632&546323*73Mqz[f#*#xyvw;Lݲx}M֧va*G bbIcSDicnH_~iTQYJTvTiunTYl=OrQ+eTxBXr (7=CIOVZ^bfjnvz~9аа0а<а>аFаJаPаWа[аaаcаgаmаpаwа{аааа=/EXF/F>Y~I+{z+w+:+ =F9 /а/а/ а/o9o/oq_oooo]@ oooo]oqoor@ ooooorP +X!YPo9  +X!Y% +X!Y)а)/.а./4 +X!Y=< +X!Y=kаgаcа>а<lаhаdа?а:AаFG +X!Y_а[аWаJаF`а\аXаKаINаQ +X!Yv +X!Ywаzа{а~аа01#"&'5463232#4&#"32653#"&53326533!5353!#%5!#53254'5!!5!!5!5!!5!!5!3254&###535#53#53%#535#53#536df~heCbrT24JA@JJB@I\iRXm]h)6q(om56o\~gb[\ [\]v:<]qqqqqq"oooooobyx^u_|x^%IMT F-HENNEpENNEON]QS[6,;qqttSRJtttttt8qqqqqqP)~~~\s $(F!/%/а/!а/ 9 /а/9/ 9/9/01 4676654&#"36632#33#3#AD$J\:+98][/KR11::'J34@4_YEX/>Y +X!Y99 +X!Y 9901!!5654&#"#462!@jQOW^iv7K:nI?MYIl|fez7~:EX/>YEX/>Y9/ +X!Y901!#5%3jDFZkW H9EX / >YEX/>Y  +X!Y +X!Y01#"&'54632'4&#"325iYXZXF t{s~U"a#$9EX / >YEX/>Y 9/ +X!Y +X!Y  +X!Y01#"&54632#7366%26754&#" /j%$e"}AR۬XfۤiY:}\#/ 019 а 'EX/>YEX / >Y- 9-/-,-]O-_-q_-]-]-] +X!Y-9-9 ! +X!Y' +X!Y01#"&5467&&546324&#"3264&#"326naq缿o^pԮW!tvxu^X%&ad%#[Kfhi|}]|vc`vwC:9EX/>YEX/>Y +X!Y901#!5!}(cG&g{"e#$9EX/>YEX/>Y +X!Y9/9 +X!Y +X!Y01#6632#"&55!"32654&8\ٰB+_zhFI֬c8SbNHp9EX/>YEX / >Y +X!Y 9/ 9 9  +X!Y +X!Y 901!!632#"&'332654&#"F/i t wM,P=l>ά̳gy|2< ^9 EX / >YEX/>Y 9/9I] +X!Yа в 9 9013##!'3!xY1fI&tSU()*9EX/>YEX/>Y9/]q_]O_q/]]]I] +X!Y 9' +X!Y'99" +X!Y01367654&#"#4632#"&533264&'#jwO<}w⬴sc|s฻wxJ9Rguz`U" ceyuZ[ 9EX/>YEX/>Y +X!Y99  +X!Y 9901!!56654&#"#4632!ocwx縮̤aZlFiwvʲgxA9EX/>YEX/>Y9/ +X!Y901!#5%3xxoli H9EX / >YEX/>Y  +X!Y +X!Y01#"'5432'4&#"3265xƽٺK FEX/>YEX/>Y +X!Y9 +X!Y 9017!!5!5!u?\eeTgQ 1EX/>YEX/>YEX/>Y9013#3s?xB|Y* SEX/>YEX / >YEX/>YEX/>Y999 9013##3VcaN?2YEX/>YEX/>YEX/>YEX / >YEX/>Y 9 9  9017373#'#3%o $!xtsy wlsUUY+1EX/>YEX/>YEX/>Y901%73#3o1u1XWs=9EX/>YEX/>YEX/>Y  +X!Y01#"&'33267vϴ+/EX/>YEX/>Y +X!Y01!#!5!VwW&&gJ&f'(9EX / >YEX/>Y 9 9  +X!Y +X!Y! 9$ +X!Y014&$&&54632#4&#"#"&&53326ZS콾xSX{x!Yl[\{TŚqpZSiV^XUnwqj9EX/>YEX/>YEX / >Y9/?O] +X!Y 9 +X!Y01!#!2#!2654&'!qws4y<,s  :jue3= H!"9EX/>YEX/>Y +X!Y +X!Y01'#"554324&#"3265=}pQDI wɭȬ AI'o)o O9 EX/>YEX/>Y 9 / +X!Y +X!Y01#!2%!2654&#!w81ftvi?H9EX / >YEX/>Y  +X!Y +X!Y01#"55466324&#"3265?x vɭʬ (noF EEX/>YEX/>YEX/>YEX/>Y9901!##33FwBwww//Z`9EX/>YEX/>YEX/>YEX/>YEX / >Y99 901 3###7Ÿw 8Z: ws#u)EX/>YEX/>Y +X!Y01%!!3d%wee= SEX/>YEX/>YEX/>YEX / >Y999 901#373#wwŗ+4kz;709EX/>YEX/>Y  +X!Y013#"&533265y̧xqÞ³ywr)EX/>YEX/>Y01!#3)xxA OEX/>YEX / >YEX/>YEX/>Y 9| / +X!Y01!#!#3!3AwGwww x* w !"9EX / >YEX/>Y 9 ]  +X!Y +X!Y 9 /o  ] ]? O ] +X!Y01%#"55432#&&#"3267!5!*'NwҲg-4&A&~ }|ʂ1-b BEX/>YEX/>Y 9 / +X!Y +X!Y01!#!!!Rw kAgUJs+s,-9EX / >YEX/>YEX"/">Y 9 "9  +X!Y +X!Y&" 9) +X!Y014&$&&546753#4&#"#5&&53326ZSԨexSXҮex!Yl[\{T ŠqpZSiV^X wq)t !9EX/>YEX/>Y9/ +X!Y +X!Yа а аав9 +X!Y01!!!5366''#53'&632##"!e [ >HxwzDxffЉDW{ƽ{o9EX/>YEX / >Y 9 9/|/ +XY +XYаааа013!!!!#5!5!5!5!3;.x.|rWRVVSW~39EX/>YEX/>Y +X!Y01!#!~w&+= 9EX/>YEX/>Y9 +X!Y01!!3'!+u!WXi? !"9аEX/>YEX/>Y9/_]O_qq]/]q +X!Y +X!Y +X!Y01!5!#"55466324&#"3265lx vɭʬfo(no+8 9EX/>YEX/>YEX/>Y9013#3#'uρsWXGL h 9а EX / >YEX/>Y +X!Y 9//] +X!Y  +X!Y01!!5!!5!!5!LMiMffg*@ 9EX/>YEX/>YEX/>Y +X!Y01!#!#!*x_w&; M 9EX/>YEX/>Y +X!Y9  +X!Y 901!!55!!=~vKOh:,f]]g8i !9аEX/>YEX/>Y9/9/@ /?O_] +X!Y аа +X!Yа01#5&$7534&'66%wwbԿ%ӌ{mmhîƯi]9EX/>YEX/>YEX/>YEX / >Y 9/а  +X!Y 016653#&533wozyxy<쌘.<i$^%&9EX/>YEX/>YEX#/#>Y +X!Yаа +X!Y!а"01%66754&#"!53&&55466323!ȖƯlj^lyvs_t73!;teF%Le" n9EX/>YEX/>YEX/>Y +X!Yав9/ +X!Y +X!Y01!5!!632#5 4& #}vħx&gglDįeFm !9EX / >YEX/>Y 9  +X!Y 9/]_]/]O_qq +X!Y +X!Y 901#"5546632#&&#"!!3267wڐxoɹf挎%z !9EX/>YEX/>YEX / >Y +X!Y   +X!Y9/ +X!Y +X!Y01!!#7326!!2%!2654&'ּ@ /$n] ?%B`&l!0Vvm9EX/>YEX/>YEX / >YEX/>Y9/_]]qrO_q]/]?r 9/  +X!Y +X!Y  +X!Y01!3!2!!#3!2654&'w?ּ@ewwBr0 vm+\9EX/>YEX / >YEX/>Y +X!Yав 9/ +X!Y01!5!!632#&&#"#}vxx&ggmCFF* P 9/EX/>YEX / >YEX/>YEX/>Y +X!Y 01!!#!3!3*txtwxV' a9 EX / >YEX / >Y  +X!Y 9/   +X!Y +X!Y01!!2!!2654&'!|?ּ@׈(نvm4`9/EX/>YEX / >Y +X!Yаа а /аа +X!Y01776!3#!#3!!4΅xtxfA`KO%9EX / >YEX / >YEX/>YEX/>YEX/>YEX/>Y 9/_]O_q/]q +X!Yв9 в901####33333#}x}lnj{x|kmśO>  N'#()9EX / >YEX/>Y  +X!Y 9& 9&/_&]&/&]O&_&q&&q# +X!Y#&9 9 +X!Y014&#"#4632#"&&5332654&'#53 >xthztx;Xhuz`a#>՜Qjj{kvifM L 9EX/>YEX/>YEX/>YEX/>Y9 9013##3ww;wws'& g 9EX/>YEX/>YEX/>YEX / >Y9/_]/] +X!Y 901##333#ww %O9EX/>YEX/>YEX/>Y +X!Y  +X!Y01#!#77>7w 4%KR- s&8l[ǶE D9EX/>YEX/>YEX/>Y9  +X!Y0173#"'732673"7 K>gB ?@[+BVt;] a>Q F 9/EX/>YEX / >YEX/>Y +X!Yа 01%3#!3!3* mQwxfKO'CG9EX/>YEX/>YEX/>Y 9 / +X!Y01!##"&'332673xwYYEX/>YEX / >YEX/>Y +X!Yа 01!!3!3!3|wxw''Y 9/EX/>YEX / >YEX/>YEX/>Y +X!Yа а а 01%3#!3!3!3} nwxxfKO'' a9EX/>YEX/>Y +X!Y9/  +X!Y +X!Y01!!!5!!'2654&'!/?I‰&g0dum& R9 EX/>YEX/>Y9/  +X!Y +X!Y01!3!22654&'!ּ@w?g`0evm_  !9EX/>YEX/>Y9 +X!Y 9 /O _ q_ ] ] / ] q q +X!Y  +X!Y9013265!5!54&#"#6632#"&'¨wtۍof䓈ꔞ˴!"#9EX / >YEX/>YEX/>YEX/>Y  9 /_ ]O _ q q ] / ] q +X!Y +X!Y +X!Y01#"##334324&#"3265ww vɭʬ ')oP c9EX/>YEX/>YEX / >Y9/  +X!Y 9 +X!Y013&&5463!#!3!!"P'vx*DvsArmq R9EX/>YEX/>Y 9 / +X!Yа а  +X!Y01###53!!3sxfgV%9/EX/>YEX/>YEX/>YEX/>YEX / >YEX / >Y9/_]O_q/]q +X!Y9 +X!Y в9013######33333/xknKl}x}lnj{x|kTLOO>  +9/EX / >YEX/>YEX/>YEX / >Y 9/_]O_q/]q +X!Y9 +X!Y013####333lo?&wwRLO u9EX/>YEX/>YEX / >YEX/>Y 9/_]/]qа  +X!Y 90135333###5##3Uf=&>fUww 9EX/>YEX / >YEX/>YEX / >Y 9 /_ ]O _ q / ] q +X!Y +X!Y 901##!5!33#x'f iD$23491EX/>YEX/>Yа/9/ а /  +X!Y +X!Y$а( +X!Y/ +X!Y01"'# 543"327$5432366554&#"DϠYFIJtmnqpzz:;O9$iq-:V&BB=ø &&`*7^9/EX/>YEX/>YEX / >YEX / >Y 9  +X!Y  901353###3VcdooFaLON?"^ 9/EX/>YEX/>YEX/>Y +X!Y +X!Y а а а 01%3#!!5!!!3. mQ}vxfKO&gg@'CP9EX / >YEX/>YEX/>Y 9/ +X!Yа01!##5&&'33673xfǻw{fyx9Q 5+G9EX/>YEX/>YEX/>Y9/  +X!Y013632#&&#"#xwxDKF C$g%&9EX/>YEX/>Y 9 / +X!Yа +X!Y +X!Y  01"55&&53>32!327"!54&p⨯hvy~,+mp3_]lG&^?a9EX/>YEX/>Y 9 / +X!Y +X!Y  +X!Y012#"55!54&#"'6267!8|j,} r2_]m&No9EX/>YEX / >Y +X!Y9 9/ 9  +X!Y +X!Y01!5!#"&&5332654!#5u!zzsxr&g]oSjjyhi? 9аEX / >YEX/>Y 9/_]O_qq]/]q +X!Y +X!Y  +X!Y01#"5546632!326!54&#"?x vʬɭ (n~ <)'%()9EX/>YEX / >Y 9/]а/@ /?O]] +X!Y +X!Y   +X!Yаааав" 9$ +X!Y01!!!!!!53667#535'#53'&632##"Zcg F 2DxwzW| W[ffjW |WCƽ5|# $%9EX/>YEX / >Y# 9#/#]O#_#q#q# #] +X!Y  +X!Y а#а#а/@ /?O]] +X!Y +X!Yа 01!327#"&'#535#536632&#"!!!Qam ri] fm N fWWg Wt)!*+9!а!а!EX&/&>YEX(/(>YEX/>YEX#/#>YEX!/!>Yа/а/] +X!Y +X!Y +X!Y"#&9'!(901%!5!4632#"&5326554&#"##33JmrfausecswBwwwb񖹷<o~u=mp//(> !9EX / >YEX/>Y 9/ +X!Yаа а /@   / ? O _ ] +X!Yа а  +X!Y01%!#5#535#53!2!!%!2654&'!xض'Bfffsɤf̐tuG &r '(9EX/>YEX/>Y9|/ +X!Y 9% +X!Y%99  +X!Y0136654&#"#4632#"&5332654## VQ_VQL`iwLFjiTW]IH<>JJ:`|xf8^*f|g>QLB; SEX / >YEX/>Y 9//] +X!Yа в 9 9013##5!'3!7iqov!XB2lp9EX/>YEX / >Y +X!Y 9/ 9 9  +X!Y +X!Y 901!!632#"&'33254&#"1B^|sh`E`ZS2[&uz{dECM^ `^ !9 EX/>YEX / >Y +X!Y 9/ +X!Y  +X!Y01 632#"&55467"32654&Kt|dž9igSK`^Y[wt@;/0^ngOQ_>3EX/>YEX/>Y +X!Y901#!5!onU(YO !-t ./9 а %EX/>YEX / >Y+ 9|+/ +X!Y+9+9  +X!Y% +X!Y01#"&5467&&546324&"264&#"326}H=FUTG=Hz{Thfge\HKVZIJXF=\cDgxxgDd[=dvw0?ON@DIL:LK;YEX/>Y9//] +X!Y +X!Y +X!Y01#"&54632#73$26754&#"Guz(@_bQMa_XYvxFV=03jjoe}/ +X!Y01!5!dfkNd /а/o]а/@/?O_o ]а/@/?O_o]/ а013#4632#"&732654&"LJZzYBAWX@AZD2%#22F4?[Z@?WX>"41%'34 XEX/>YEX/>Y 9 / / ] +X!Y +X!Y +X!Y01!!!!!!R kA)YEX/>Y'*а*/ +X!Y'9/9/7 +X!Y79 '91 +X!Y< +X!Y'C +X!Y01##"'332#"&5467&547&&554632!326654!#326554&#"\hqLDIʅkcBfUaLDSUjohͧyw}{^[[8IaT^}X..VmQ-ZJZlAo:ahgno4Nm !9EX / >YEX/>YEX/>YEX/>Y 9 9 +X!Y  +X!Y01#"''323#32675&&#"2Ɖ ࿈3-vahv)y w6? 19O c!"9EX/>YEX/>YEX/>Y9/ +X!Y 9 +X!Y01#!2#&554&#%!2654&#!5{{E}Cpepv+:ACsh ^EX/>YEX/>YEX/>YEX / >Y9/_]/] +X!Y 901##333#{{3Ud4 TEX/ >YEX/>YEX/>YEX / >Y9/ +X!Y 901##333#xx~Jv LEX/>YEX/>YEX/>YEX / >Y99 901#333#8{{ 4;Y4 LEX/ >YEX/>YEX/>YEX / >Y99 901##333#(xx ͜S H 9 EX/>YEX/>Y  +X!Y  +X!Y013!2326554&#bm&?_mP9EX / >YEX/>Y 9  +X!Y +X!Y 901#"5546632#&&#"3267wڐx¿oɹ̄挎~ !9аEX/>YEX/>Y9/_]/]O_q +X!Y9 +X!Y +X!Y013!2#!2654&'%!2654%!re^j5~ Xf'>wkgw`gg: SEX/>YEX/>YEX/>Y 9 /@  / ? O ] +X!Y 901!#3#!D||s{x7saF) 9EX/ >Yа/01#546L6w7)1bW;w =/  +X!Yа/ а /а/а/@ /?O_]01#"&53265%3#ӡgecmN_rr_DHL@{/а/@ /?] а / +X!Y +X!Yаа/@?O_o ]@O_oqа/@ /?O]/01#".#"'463232653#]C /R"'7B\D0r"'8vXaF[6 3*D\J 8* \a `/а/а/@ /?]/9/ а /а/@ /?O]   /013#'#3#jt 䉶fX `///а/а/@ /?]9а// а /@   / ? O ]01#'#%3#'3 teʭKmb///а/а/@ /?]99/ а / 9 +X!Y901#'#%3'6654#72K>t人tp&MJQCx4m/а///а/@ /?O]9 а /@ ? O _ o  ]а//] а/ +X!Y  +X!Y01#'#%37#".#"'46323265_T= /J"!/@W91x("/䬬YEX/>Y +X!Y013!#!xwlbw =/  +X!Yа/ а /а/ а /@   / ? O _ ]01#"&53265'3#ӡgecnmO_rr_DHL@ G/ +X!Yа/ а / а /а/ 9 +X!Y 901 &53265'6654Hca_ULgZWS\rr\BGI@k!)%)=LA6D7WEX / >Y01; EX / >Y 01l!EX/>Y01`"EX/>Y01>#EX/>Y01O$EX/>Yа%01K%EX/>Y01P !9EX / >YEX/>Y 9  +X!Y +X!Y 901#"$554$32#&&#"3267띙 {ղz{ދL<L᷽=垲%_&'9EX/>YEX/>Y9 +X!Y +X!Y%9%/" +X!Y01%#"$'54$32#&&#"3267!5! @zץ{ڱz(z P06O'Ṃ"ޣK5xh H9EX/>YEX/>Y  +X!Y  +X!Y013!2!26754&'49G! ?3#H$%9EX / >YEX/>Y  +X!Y +X!Y01#"$'54$324&#"32673멧zz݉|{݈|J:M<栘 3&H'(9EX/>YEX/>Y +X!Y# +X!Y01%#"$'54$32'4&#" 673UUPz|ۉ~z{XMK4R;硚3EX/>YEX/>Y9/ +X!Y01!#5%3wm [ 9EX/>YEX/>Y +X!Y99  +X!Y 9901!!56654&#"#46632! SOwx~JQJUqpl|\9 /EX/>Y +X!Y9 9/  +X!Y +X!Y901!5!#"'732654&'#5&2`^"L&gXH Ţg[ZA> SEX / >YEX/>YEX/>Y +X!Yа/ в 9 901%3##!53!x.deIGGOec 9/EX/>Y +X!Y99/9 +X!Y +X!Y901!!672#"'732654&#"]\AoӁj*ڱ๚i+(piu܏r[g067J&/EX/>Y +X!Y901#!5!|d>xqf $\/ +X!Yа/ аа/а/?]а/ +X!Y! +X!Y$01#"&5332657#".#"'46323265—f\US\c_B /R"'7B\D0r"'8^ww^CKKCGZ6 3*D\J 7+{/а/а/01#3xxiq 9 EX / >YEX / >YEX/>YEX/>Y   +X!Y 9/,]I]] +X!Y +X!Yа +X!Y  +X!Y01!!"554663!!!!!%%"qDxSkA (ngif<  op'T"()9"/EX/>Y +X!Y9/ +X!Y" +X!Y012#"&&546632#"'726754&#"Y  +X!Y01%#"'73255+97 (;襯g< L-nN ~MsKlO"98e|cSiJpK*:K*: :m3:&  :!u "#9EX/>YEX/>YEX/>Y +X!Y9/,]\] +X!Y 9  +X!Y01%32654%#5&#"#4632#"'Xe\YvmUվո|h4}^:g Za5}|H  9 EX / >YEX/>Y  +X!Y +X!Y01#"&5546324&#" 5|閕闕xױf2)>83EX/>YEX/>Y +X!Y901#!5!yUkJff9 /EX / >YEX/>YEX/>Y 9 9  +X!Y +X!Y01#"'#3632'4&#"326m~t fwrxs)-nqmeh`NM9EX/>YEX/>Y +X!Y99 +X!Y01%2673#"5546632#&&#"9{ srlt׍sQrc\)!ԭ!_c9/EX/>YEX/>YEX / >Y9 9 +X!Y +X!Y014323#'#"5327&#"_swj ty]]ۜ'/_5_QN&#'(9# EX/>YEX/>YEX / >YEX/>Y9  +X!Y9 +X!Y# +X!Y0143273#"&'732655#"&&7327&#"_r eRC$t~mx]W'-.)[MbZ(N!E"#9EX/>YEX / >Y +X!Y +X!Y0146632#"&&'7326554&&#"Z|ߋ~|~w^j_i-, zsys`Np9 EX / >YEX / >YEX/>YEX/>Y 9 9  +X!Y +X!Y01#"'#36324&#"326vwdt wn*+mМڝ-je]b_`Nm9EX/>YEX/>YEX / >YEX / >Y 9  9 +X!Y +X!Y014663273##"5327&&#"_lʂs ixvy`-i!&&/aiZNe 9 EX / >YEX/>Y 9/  +X!Y +X!Y 9  +X!Y01"&&5546632!327!54& Qx׀ܨ+8boSlQN&$'(9$ EX/>YEX/>YEX / >YEX/>Y9  +X!Y9 +X!Y$ +X!Y013273#"&'732655#"5327&&#"ls fQ=$sܽy\*o!+("_Di(hmptx'3w459а0EX / >YEX/>YEX/>Y 9 9 +X!Y! 9+ 9 1 +X!Y01"&54677&&54632653#''277654&#"Qf[kCRYXpy绂[F@*:RYk[NJ]SKBk{@qhw<~̣{fqnB3`?ZqG-bU@M^?TXu ZEX / >YEX/>Y  9 / +X!Yа +X!Yаа  а а01!!573%Qd%w@f@e/Z/4f9EX / >YEX/>YEX/>Y 9|/ +X!Y +X!Y 9/ +X!Y   +X!Y 901!!!!#!!!!f$O v +9dDehw Y9EX/>YEX / >Y 9/ 9/  +X!Y  +X!Y0133##32654&#wwwԕOsui?(j)*9а%EX/>YEX/>Y99 +X!Y"9#9% +X!Y01#"'#7&'54663273&#"%4'3265uWf|xᑱ|Sf\`LZoQ_|Ru RoC?9EX / >YEX/>YEX/>YEX/>Y 9/] +X!Y 9/ +X!Yа аа01##!##5353!533!5!\wGw[[ww\tG[ [eKF[9EX / >YEX/>YEX/>YEX / >Y +X!Y 9 901"'73255#3397 (;CwwwKgO//1P!x9EX/>YEX/>Y9/_]/]O_q +X!Yа +X!Y +X!Y013#53!2#!!254'!!ֵ!4f†Ҥ1.!kEX/>YEX/>Y9/_]/]O_q +X!Yа +X!Y +X!Y013#53!2#!!254'!!ֵ!4f†Ҥ1.v9/EX/>YEX / >YEX/>Y/]]9/ +X!Y 9 +X!Yа01!6632#&&#"##5353!d;mwyo)ww3aj:Ǒvf4NEX / >YEX/>Y 9/ +X!Yаа  +X!Y 01###53!5!!3{` BBfiiarO9EX/>YEX/>YEX/>Yа/ +X!Yа/ +X!Y  +X!Yааа013#!!327#"&'#53#53VALC/QypObfZX bmf b;&%D;EX/>Y 01;&%u;EX/>Y 011&%;EX/>Y01&%DEX/>Y01&%j;q&%M@EX/>Yܰ01&%'9D&'yBA&)DAEX/>Y 01BA&)uAEX/>Y01B7&)AEX/>Y01B&)jA \A&-DAEX/>Y01A&-uNAEX/>Y01)7&-^AEX/>Y01B&-j^A&2 DEX/>Y 01}G&3DGGEX / >Y01}G&3uGEX / >Y 01}=&3GEX / >Y"01}#&3PEX / >Y!01} &3jG;&9D>;EX / >Y01;&9u;EX/>Y011&9;EX / >Y01&9j;5&=u5EX/>Y 01d&EDEX/>Y+01d&EuEX/>Y,01d&EEX/>Y.01d&E EX/>Y-01d&Ejd6&EEX/>Y3ܰ801dO&E'^DN&GyWZ&IDEX / >Y!01Z&IusEX / >Y"01Z&IEX / >Y$01Z&Ij1&D{ /01&u# /01&3EX/>Y01&j3&REX/>Y01Z &SDEX/>Y 01Z &SuxEX/>Y!01Z &SEX/>Y#01Z &SEX/>Y"01Z &Sj&YDEX/>Y01&YuzEX / >Y01&YEX/>Y01&Yj K&]u>EX/>Y01 K&]jM&%pDEX/>Y 01d&Ep /*01&%> /01d&E /-01cy9EX/>YEX / >YEX/>YEX/>Y  +X!Yа/9/ +X!Y901#327#"&5467!#!'iJU63ANPZ^Rk'HPPi1T!T,YPB6hQdcN.9:;90EX/>YEX)/)>YEX/>YEX/>Yа/9 9 / +X!Y 9)$ +X!Y/ +X!Y 3 +X!Y01%&'#"&54$3354&#"'4632#327#"&546%2675#E?mُ}x!iJU63ANPZ\x+ֳʇ3`RY{tZN Pi1T!T,YPAtao[xV&'uV /01^&GuX / 01L&'VEX / >Y!01^&GgEX/>Y"01 &'V /&01^&G5 /'01I&'Y /!01^&Gt /"014&(D /01l&HQB&)pJEX/>Y 01Z&Ip{ / 01B&)D /01Z&I /#01B&)AEX/>Y01Z&IP /)01cB9EX/>YEX/>YEX/>YEX/>Y9//] +X!Y +X!Yа  +X!Y +X!Y01!!#327#"&5467!!!!WBiJU63ANPZZN/hPi1T!T,YP@~6iZN'/$019$(EX / >YEX"/">YEX/>Y, 9,/  +X!Y +X!Y 9 9" +X!Y ( +X!Y01"&&5546632!3267327#"&547"!5&&?|y~Ӡ`rU63ANPZ^L+CFM9T/2^XT!T,YP]\Ƨ B4&)DEX/>Y01Z&I /$01L&+VEX / >Y'01lQ&K}EX/>Y+01+&+Y /&01lQ&K /*01 &+V /,01lQ&KK /001-&+lQc&K4[: /+017&,AEX/>Y016&L2@ /01g&-\JEX/>Y01<&1EX/>Y01K&-pWJEX/>Y01 &p,EX/>Y013&-gD /01&< /01'g`&-c:&Md&-+AEX/>Y 01&-.!K&MNG!&.+EX/>Y01K&:EX/>Y01&/K&OC&0u4EX/>Y01&Pu$ /01;&0tg;"&P&0EX / >Y01V&P"Q/01&0 /01P&P/01;&2u;EX/>Y 01&Ru| /01;&2;N&R@.&2/>EX/>Y01&R /01&RXREX/>Y01}&3pP /01Z &Sp /01}&3J /!01Z &S /"01}F&3cG / ܰ"01Z &S /!ܰ#01;&6u; /01&Vu /01;&6f^?N&V.&6>EX/>Y01&V /01XlG&7uGEX / >Y*01e&WuVEX / >Y(01Xl=&7GEX / >Y*01e&WeEX / >Y*01XIl&7yeGN&WyUX,l&7|e*N&WXl:&7J /,01e&Wr /*0141&8j1IO&X4M&8yM{O&Xy4*&8:EX/>Y 01G&Xa&9DEX/>Y01&Y EX / >Y01&9pD /01&Yp /01&9> /01&Y /01q&9u@ / ܰ016&Y /ܰ01:&9Z; /ܰ01&Y /ܰ01 c!"9EX/>YEX/>YEX/>YEX/>Y9  +X!Y +X!Y01327#"&547"$'3 65|fHU63ANPZeNzh%;Mh1T!T,YP`_'̶c: y!"9EX/>YEX/>YEX / >YEX/>YEX/>Y  +X!Yа/9 +X!Y01!327#"&5467'#"&'33 73iJU63ANPZ^SlwExPi1T!T,YPB6O=1&;;EX/>Y01?&[IEX/>Y01+&=5EX/>Y 01 K&]MEX/>Y01&=j5Zr;&>u;EX/>Y 01W&^u=EX/>Y 01Zr&>~;EX/>Y01W&^EX/>Y01Zr.&>>EX/>Y01W&^YEX/>Y01A&uAEX/>Y01Uz&u /B01}&uEX/>Y,01Yt&uHEX/>Y001&0&Wn9_]]qrrqOq]/]]01&0&Wn9_]]qrrqOq]/]]01+&&Z:&3D / 01:&3uh / 01:&3wEX/>Y01:&3u&EX/>Y01:&3jw:S&3"EX/>Yܰ01:l&3'mH&1y&(DEX/>Y 01&(uSEX/>Y01&(bEX/>Y01&(jb8&DEX/>Y01&u*EX/>Y01&:EX/>Y01&j:F&&EX/>Y 01i?&DEX / >Y01i?&u /01i?&EX / >Y!01i?&&EX / >Y 01i?&j&DEX / >Y01&uEX/>Y01&EX / >Y01&j &uLEX/>Y 01:&3pp&EX/>Y 01:&3 /01c@y9EX/>YEX / >YEX/>YEX/>Y  +X!Yа/9/ +X!Y901#327#"&5467!#!diJU63ANPZ`Tw||ںsPi1T!T,YPB6/am&1u /01m&1EX / >Y01m&1b /&01m&1 /!01&0P /01&(p[&EX/>Y 01&(k /01&(0EX/>Y01c9EX/>YEX/>YEX/>YEX/>Y9//] +X!Y +X!Yа  +X!Y +X!Y01!!#327#"&5467!!!!R7iJU63ANPZZN kA)Y01x*&EX / >Y#01x*& /$01x*&k /*01x/*&dA&EX/>Y01C&8&EX/>Y01'&p3&EX/>Y01&C /01 cD&@&EX/>Y 01;&=EX/>Y017=&u&uEX/>Y019u&u&[EX / >Y01u&j /01F&uEX/>Y 017F&sF& EX/>Y01i?&p& /01i?& / 01i?& /ܰ!01&uE /019&&a /01J&u\ /)01J&kEX / >Y)01JK&y`J&x /+01+2&+&h EX/>Y 01+N&yL&&EX/>Y01&p& /01& /01S&"EX / >Yܰ 01& /ܰ01 `!"9EX/>YEX/>YEX / >YEX/>Y +X!Y9  +X!Y01327#"&547"&'33267>rU63ANPZq1va2^XT!T,YPfdϴ2&bEX/>Y01 &[EX/>Y 01 &j[K&uMEX/>Y 01K&*EX/>Y01K&i EX/>Y014&%>B5&)wK6&,[N3&-4&3934&=dl 4&EBk& EX / >Yܰа&01%v&B)Zr>,N-/312}3448=7<B&-j^A&=j5oz&tEX/>Y&01k&*EX/>Y)01a&EEX/>Y01!&EX/>Y01k&%EX/>Y"ܰа"-01 :Z NS`:v&:Z@UGEj 9EX/>YEX/>YEX/>YEX/>Y9  +X!Y9 +X!Y0123327#"&'#'&#'6T(4}#9C<+PlG!8]D*ESO/Hwg hx Eqc &&jB&j]Z &S> /!01& /01&] /(01B&)jA'A&uAEX/>Y01Xl'f ()9EX / >YEX/>Y 9 9  +X!Y +X!Y" 9% +X!Y014&$'&54$32#4&#"#"$&53326Y017&D /01%v&'B)&3DEX/>Y 0131,}34'487<dNEZNI& / 01Z NS`NT^NM9EX/>YEX/>Y +X!Y99 +X!Y01%2673#"5546632#&&#",}srlpьsQpc\($ԭ# K:]0:\Z&Ij>&uEX/>Y01eNW:M&j3K5N&uXEX/>Y01 K&]VEX/>Y01=;&;D1;EX/>Y01?&[DEX/>Y01=;&;u;EX/>Y01?&[u:EX/>Y01=&;j;?&[jI5&=D5EX/>Y 01 K&]DEX/>Y01wB ; &K&G /01>K3;&1u;EX/>Y01&QuEX / >Y#01&%\dN&EBA&)DAEX/>Y 01A&DrAEX/>Y 01Z&IDEX / >Y!01&DEX/>Y 01{ yE :&=EX/>Yܰ01 &EX/>Yܰ01ZK+N&S]{}K &3]jZRd&QbSM&Q5R&'Q^RN&GQR=,a:N-&DEX / >Y01&^EX / >Y01N-&%> /01d&E /-01&%j;d&EjUzNB&)DEX/>Y01Z&I /#01| &Xj\N\&j~&jA&jUZd&jVb&jJ&p#JEX/>Y 01&pEX/>Y 01&j*A&j} &3jGZ &SjvYNv&j<Y&j{&jWo&jo7&pJ /01 K&]pF /017&jA K&]jM7@&6AEX/>Yܰ01 K&] /ܰ01&jAn&jJ&'-jAQ&'1jhlH&%dN&E@&%X / 01dv&E /*01&%78EX/>Yܰ01df_&E7EX/>Y-ܰ301&%8?EX/>Yܰ01\&E8EX/>Y-ܰ201&%98EX/>Y ܰ01dD&E9EX/>Y+ܰ101&%:EX/>Y ܰ01d&E:EX/>Y-ܰ4011&%';EX/>Y01d&E'@EX/>Y.01&%<A /ܰ01d}&E< /-ܰ701&%5A /ܰ01d}&E5 /-ܰ7017&%=CEX/>Yܰ01d&E=EX/>Y-ܰ601&%PK /ܰ01d&EP /-ܰ801&%'>EX/>Y01d&E'@EX/>Y-01B&) ZN&I~B&)^ / 01Zu&I| / 01B&)JEX/>Y01Z&IEX / >Y#01&)7>EX/>Yܰ01ZY^&I7EX / >Y#ܰ)01DB&)8EEX/>Yܰ01[&I8~EX / >Y#ܰ(01l&)9>EX/>Y ܰ01Z7&I9EX / >Y!ܰ'01B&):%EX/>Yܰ01Z&I:EX / >Y!ܰ*01B7&)'A EX/>Y01Z&I'~EX / >Y$01&-W^ /01i&, /01^&-Y:&M- }&3Z N&S}&3dEX / >Y01Z u&S /01}&37 DEX / >Y#ܰ'01Z^^&S7EX/>Y"ܰ(01}&38KEX / >Y!ܰ&01 [&S8EX/>Y ܰ'01}&39DEX / >Y!ܰ%01Z<&S9EX/>Y ܰ&01}&3:+EX / >Yܰ(01Z &S:EX/>Y"ܰ)01}=&3'GEX / >Y"01Z &S'EX/>Y#01=&u=EX / >Y*01Y&uEX/>Y(01=&D^=EX / >Y)01Y&DEX/>Y'01&ZEX / >Y(01Yu&EX/>Y&01&FEX / >Y+01Y&EX/>Y)01&Y&&9:&YG&9X /01v&Y /01A&uAEX/>Y01&uEX/>Y01A&D;AEX/>Y01&DEX / >Y01&^EX/>Y01`&EX / >Y01&JEX/>Y01&EX/>Y01&&y&= -:&]c&=R / 01 Kv&]G /01&=>EX/>Y 01 K&]K EX/>Y01l&H'&;Cd ]/]014&8Q(:&Q&Q#n:&Q*'&Q>:&Q$C&LQ[SN&MQLxq9EX/>YEX / >Y 9/ +X!Y 9/ аа +X!Y  +X!Y01!!2#!#5353!!2654&'ais {4hgc~gfxq9EX/>YEX / >Y 9/ +X!Y 9/ аа +X!Y  +X!Y01!!2#!#5353!!2654&'ais {4hgc~gf+' KEX/>YEX/>Y 9 / +X!Yа а  +X!Y01!##53!!!{n [=fi>: KEX/>YEX/>Y 9 / +X!Yа а  +X!Y01!##53!!!dxI fgEX/>YEX/>YEX/>YEX/>Y9/_]/]O_q +X!Yа/ +X!Y а в901###533!!33#{{ 3UCff4EX/ >YEX/>YEX/>YEX/>Y9/_]_oq +X!Yа/ +X!Y а в901###5353!!33#xx.~JffZ 9EX/>YEX / >YEX/>Y 9/ +X!Yаа/ 901###53333{('f0,a:]EX/>YEX / >YEX/>YEX/>YEX/>Y +X!Y 9а01###533733*x|;6|efXXK(7lEX / >YEX/>YEX/>YEX/>Y 9//]_] +X!Yаа а 01####53333ՔXVFFH|fhn0:rEX / >YEX/>YEX/>YEX/>Y9//?]o] +X!Y9а в 901####53333(_̍]$$6fI$kM>&*&s ]01~Gvff@ibCK~e V&+uV /%01lQ&Kun /)01;&2Dj;EX/>Y 01&RDEX/>Y01'&%x9EX/>Y ܰ01d&E9EX/>Y+ܰ/01B-&)a?EX/>Y ܰ01Z&I,EX / >Y!ܰ%016-&-?EX/>Yܰ 01 &EX/>Yܰ 01}3&3EEX / >Yܰ#01Z &S1EX/>Y ܰ$01'&6U9EX/>Yܰ01&VEX / >Yܰ01'&99EX / >Yܰ01b&Y3EX/>Yܰ014&d%v&& &F&( l&H;&(_l1&Hd&, &L  &/u EX/>Y01@&Ou_@ /01.&/d&&OS\&0 4&P/ 3&1 N&Q &2 N&R }&36cEX / >Y!ܰ701A&4uAEX/>Y01`&TuEX / >Y01&6 N&V&Xl&7eN&Wa4&8IO&X&96W /ܰ)01&:JEX/>Y 01&&Z=EX/>Y 01&: &:&Z8 =&; ?:&[G Zr&> W:&^\ 2&3Fq$:&3&(<}&<e&<I& 5<H&<u's& `:32(KA)=ZFi?+ *&j: &j[&(jb~&uE /01J)&j:;7=&uCEX/>Y01 &k EX/>Y01:32~(M& EX/>Y 01ZAi?*m1+*NQ)%*+9EX / >YEX/>YEX/>Y  +X!Y 9( 9(/_(](/(]O(_(q((q% +X!Y%(9в 9 +X!Y014&#"#4632#&&5332654&'#53 >xthԵxx;Xhuz`a#>Ց _j{kvif9/EX/>YEX / >YEX/>YEX/>Y 9 /_ ] ] q q r qO _ q ] / ]? r +X!Y01##!#3!33xkGwwwlc mUj !9EX/>YEX/>YEX/>YEX/>Y9 +X!Y +X!Y901#&5546632#&&#"3267ԭxwڐx¿o b⃞ɹ̄挎  RC&QM&p& / 01 &p[& /01i&&sui?&uuJ.&*2&D2&uS2&jb &Dc&%ndcN&EmB&)D ZeN&Ic:&3k&(2:&- Yr`````=DGz a_u)5 @ F  y  I m R ^7f5m/f*F+= H R d2v zA`8Wc2L !!0!U!!"""8"R"l"#@#}#$O$%x%&@&'''((g(()H)*/*++q+,M,- -k-..0.X.`.../ /b///00"0^000111E1u12+2223f34,455P56H667h778c899q9::U:;";<=>/>??=??@`@AAaABBXBBC$C~CD/DE1EFFFFGqGH$HwHIITIIJ=JsJJK:KKLBLM@MNNOOwOPPPQQQRdRRSjSTPTUNUVqWWXX^XYY}Z9Z[\\]\\\]3]I]_^3^^^_A_``=`f`aaa+a7aCabb]bbbc!c{cd:depe|eeff)f5ffgghh\hhhiAiiiiijDjkkk&k2k>kklxlm\mn(noo~opVppqRqqqrrrrrrrrrrrrrrr#r+r5r@rrrrrrrrs.smssstt2u u&uCuVujuvBvwywxgxySyzhz{?{|N|}E}~~!~;~U~o~?V%i1DWǁ_Q݄d**^ވ* Q"pNь 9׍Doێ;ߏ2k&Yt"YҒ>ɒz-qE ~}ИiUax¦½%1HSj|Îàİ%7HZf}ŎŠŲN/ASewǃǕǬǾ,>ITkwȃȚȱȽ /?OfxɄɐɧɹ+>Pbnzʑʢʹ !-?P\htˀ˗ˣ˺,?Re9Pg~͔͠ͷ)@Ri΀Ϊ/:R^jρϘϮϹ6H_vЂЙаёѨѺҏҥҼ1CNd{ӇӝөӾ,?Q]nԀԖԢԳԿ 4Gժ&1=IUamyִּ֤֔֜֬3Jawביסשױ*5GYkw؎!8JRZbjفىّٙ١٩ٱٹGOWczڂڊږڞڵ'3?Vmu}ۉۣۛۺ.EMUm܅ܑܝܩܵ-?KW_g~ݐݜݤݯݻ $0Ul3Jax(>Vbnz&w(x5=NYaiqy3Kc{ #/;GS_kw/FR^jv ".:FR^jv~"*6>Uks{k8@L^ow+#M_<.R s dLUosml\w!eK<J1-oxooioboCoooMojoe<Mm%|TNq2=x!gG 7j}jyX4B,=7Z'0TMtIgIdo^rl"Z?plde{Zovl ee&?0 WD z[w]m fqek{]|jfj=TLG@|tSb~ss d6vXI0]j}UHtY~lW:tyld^|zYr\pDka{u<{jxnm/`j,bv/Dyty?X{=xo,t[YkItfg1w3tGor[MG|qxyJJ86Hq3o6G Z(7LSh1HH\gay_4# b%,(oBnYk #HGoX]dGk$uG&%8jt^bvY,bvtYc/ot (GbR5YzRvQG3({v70#:QLnNfN $8(,t|qq70K?LoQ3&.DbpBp3u!CH(,_)) \0B1B16,}-lbl>a)lYdciDQ)gCT!Z[[alaa>;^{`'#^#oS}#3,Aj"#v[(kcxjkjB?^@twemE&w 7Luy?L0[????|e.X5\L~WU\C{<UZi K#9*'2C!+Jbe@iX;xJ)CiCG;_iiS"xm6%EY+A4%5NA%  LC`3t_HnPW%diQ*8"LCL ^5Ni)5(G;l`>OK`}7<oD(xm<S^\u mym}W;l`>OK\x^>ke.Jipp<pnppsplp9p|pcpip<}8n,`y_w_Zv}_"Zplpx%i?J1[![!42! !!!j}j}j}j}j}BBBBIdIdIdIdIdIdId^"Z"Z"Z"Ze{Z{Z{Z{Z{Zeeee  IdIdId2^2^2^2^=l"Z"Z"Z"Z"Zxplxplxplxpld!!!!'!gG 77g7a7eeeej}{Zj}{Zj}{Z^X eX eX eX eX e444BeBeBeBeBeBe,=? ZWZWZWIUj}tY!+SSSSSSSxmiiiii#SSSxmxmxmxmxxxx ;XiiibbbJJJJ!+!+!+'2## K K K>K![~.3Q fZ! j}47!oYktfGW{Zt&0fG{ZGjX!!gG 7jj}247Id"Z{Zo^ 0"Z_ e% ,=?,=?,=? \wLl>Id"Z{xy HZ 7}Z b2^,! #!IdIdIU"Z|\\ #Z bj}{ZbvYbvYHGo7 7 7 SBnrlIdIdIdIIdIdIdIdIdIdIdId"Z"Z"Z"ZD""Z"Z"Z!!j}{Zj}{Zj}{Zj}{j}{Zj}{Zj}{ZzYzYzYzYzYBeBerrrrr   l4(SBnj_ $dj+_0,70Yk,}oioboCo~expleId"Z!6 j}{ZBebo=rl=rld  7ej}oX e4B&&,=?ZWS$_<'S< KXi@!+#9*#J;X S<i@xm!+9*5Nxm#  _i%iJ'2'2'2#Id"ZSl 7 E o,33fP [ GOOG@f :                  nt ~%'0S_g~7Y #%/EOboy?M    " ' 0 3 : < D t  !!!!"!&!.!^"""""""+"H"`"e% &(1T`h7Y #&0FPcpz>M    % 0 2 9 < D t  !!!!"!&!.!["""""""+"H"`"d%eD# (%^S~|}rsolkiaYP!ߔyMߪެߞߝߖߓ߇kTQ 222tt~lt0Rb{z|  }~+,-.   ()*+,-./012345678wxLM}~NOPQRSTUyzVWXYZ{|[\]^_opv   ~xcyo{z%&&''|(01127889@ABCIJKLQRST_`a befg}h~+ 77YY  ##      "#$%%&/0014556899:=>>??@ABBCCDDEEFOPPQQRRSSTTUXY[\\]]^^_abbco pqruvwxxyyz(,159wCL}NyVXY{[_`o>?pMM r }         " % ' 0 0 2 3 9 : < < D D t t      v    !!!!!!!"!"!&!&!.!.![!^"""""""""""""+"+"H"H"`"`"d"e%%,K PXYD _^-, EiD`-,*!-, F%FRX#Y Id F had%F hadRX#eY/ SXi TX!@Yi TX!@eYY:-, F%FRX#Y F jad%F jadRX#Y/-,K &PXQXD@DY!! EPXD!YY-, EiD` E}iD`-,*-,K &SX@Y &SX#!#Y &SX#!#Y &SX#!#Y &SX#!@#Y &SX%EPX#!#!%E#!#!Y!YD- ,KSXED!!Y- ,*E- ,+E- ,' SX@cTX*pY#SX TX*pYYY- ,@ ZX+D+DY- ++ + + :0)+mYE2+~gP8+v`K6+dN:+G:)+w\:#+mYE2+QB4%+ 9/$+ w\:#+ v`K6+ gJ,++ E}iDsPttpu?s_ss/tOtottttu?u_uusousst_tttt?u/ so s?(s*hZ`VNnN`F`9 ! :[ ^ ^ v ^ ^ &  @   &" \H T    Copyright 2011 Google Inc. All Rights Reserved.Roboto LightRegularVersion 2.137; 2017Roboto-LightRoboto is a trademark of Google.GoogleGoogle.comChristian RobertsonLicensed under the Apache License, Version 2.0http://www.apache.org/licenses/LICENSE-2.0RobotoLightjd(Y%>E^yy  "$%*+3466;<ADGHKMQQTX]^bbddhhjlnnpp  ((++--03_cz|  ,$%&'y 2LDFLTcyrlgreklatncpspkern $H %&'()*+,-./0123456789:;<=>eg/3579;ACEIKLXYz{}   "$%')+- }  :44^67497zd88788898D  89X9469 F7\8f5 8:8:8:78f8|9v&5<9v@8f956969v8:xjp55!8"`#^4%885B888&585(@)))*5+n5<3F+-r8f11:3$3$8f2p23$3$3$679X9v3F8f5545<777845<889545<43p444:44`:499:9999949499998666666647z7z7z7z888889999967\7\7\7\7\7\7\55558:777779v9v67\67\67\444497z57z57z57z57z588:888887888888:88:88:8:9797978|8|8|888969v6999:::9999999:::::999:94444::::67z8896677z98878898D864868:79v77z588775B6757z8898D4847\578f9v5<559v99969v44488:67\7z59X9v469v845<867\67\7z55545<9778f5B9v5B9v5B9v67\67\67\67\67\67\67\67\67\67\67\67\7z57z57z57z57z57z57z57z58897979797979797769v69v69v8558:557688:67\7z8978|78f9988:77888:88:98D8f8|89X9v9X9v9999:99:99:: %*,- /6 88:?EFIJLL OO!QT"VV&XX'Z](__,-./0589;=@HITdehjm  p  qr""u.0v35y77|99};;~CDTTVVXX\^0033EEGHz{}}  "%''))/8CGMOTTeimoxx!"(89:;<>@GJPRVXYZ^deghrt  xz{FHHJW__puww{| 89Ew:;= "$prt %V.8EGHIKSUVYZ]VV V"9BE`ak3VVVVVVVVVV#2345678MNOVVVVVV V V!"V#$V%&V'(V)*V+,V-.V/0V12V34V579;=?ACEKMOQSUWY[]_acegikmoqsuwV38:;=9E3 "$2345678MNOprtw8:=9E"$prtw.9bdM  AGHIKUa"B`ak79;=?ACEY[]a@GHIKU"B`ak79;=?ACEY[]aS KMOQSUW_.9bd  Z]#qsu?'+35 !AjEFHI-  JLNPRTVXZ\^`@'+35!AjEFHI-  JLNPRTVXZ\^`8%<= 3C]"$ "$&(*,.024prt(%  "$&(*,.024GHIKQRSTUYZ]"+6<>BSUW\`ak#  79;=?ACEKMOQSUWY[]_acegikmoqsu|| GHIKUYZ]"B`ak#79;=?ACEY[]acegikmoqsu< JYZ] #cegikmoqsuAGHIKU"B`ak79;=?ACEY[]a:m  GHIJ KSUZ ]  "B`ak        13  # 23456789CDEFGL MNOPQRSZ[\]mnostuvx               79;=?ACEKMOQSUWY[]_aq s u       \^4D^&(* \^4D^&(*"Z\]^4D^#&(*qsu 8:<=QRTZ\]  +3469:<>CDEGISUW\]^bcdlm"#$ pqrstuwy|(8Z]  9:ELcm#qsuw?8:<=\349:CDEGI]^bdlm"$prtwy%'+358:= !9AEGHIJMPQXbdfjlnopEFHI"$-   "$&(*,.024JLNPRTVXZ\^`prtwyz58:<=39CEP]bdflo"$prtwj%8:<=  39:CEGHIJLPQ]bdflmop"$     "$&(*,.024prtwyz18<=39CEPQ]flop"$prtw$8<39CEPQ]fopw8=9E"$prtw9QRT\  +46:<>DSUW\^m |# Z] :m#qsu :HJmzvGHIKSU"B`ak19CDEFGPQRSZ[\]mno 79;=?ACEKMOQSUWY[]_a EGHIJ KSUZ ]   "BQ`ac e kp        13  # 23456789CDEFGL MNOPQRSZ[\]mnostuvx               !#%')+-/13579;=?ACEKMOQSUWY[]_aq s u        :HJQmpzMG H I K U :   " :B HJQ` a k mp                               7 9 ; = ? A C E Y [ ] a z   "Z\]4DQ^p#qsu    :PJcemL  (L O P SW[     KMOQSUW_   LxLx[  AaM:JLMXb d mn1.08@JM_il :ILbdlm/Vm[m|}+KaFRIh < .0<8:j@IJ L?MX_c1e_i lm0n AJVXam| 1#X[:IQJ{LMXbudlOm  :cemJ[   :cm l[  :JXcemn1[T1IJLbdlX_:mJX2[3V[m|(M~gejs^t}y}  .08}:@J|LMlX_kcei{lmn1 AVa1J  A Va1[1l1  h&% x -&~| v8{q?;QyVD3DK>,r'jzb m %),4 8>EGIILLQTVV"ZZ#\^$'()-./02347>?@ABD  F  GH.0K35N77Q99R;;SCDTTTVVVWXXX\^Y\cefgilm00p33qEErGHsz{u}}wx  "*/8CGMOTTeimoxx  "#$%&(25;BDEFJPQS_a  eghFoHHJW__bbddpuww{|t !!%%&&''(()).. // 0033448899 ::;;<<== >>EEFFGGIILLQRSSTTVVZZ \\]] ^^"  %      ..//"00334455 77 99 CCDDXX\\]]^^!!!# $ 00 33EEGHz{}}             "" ## $$ %%&&''(())**/0 11#28CG MOTT eefi$mo xx#     "  %"           % % %   !!""##$$%%&&''(())**++,,--..//00112233445566778899::;;<<==>>??@@AABBCCDDEEJJKKLLMMNNOOPPQQRRSSTTUUVVWW__bb dd pp qq rr ss tt uu ww{{"|| "        # ##       " !   !$     #         $    #"      " " " !   !        bDFLTcyrlgreklatnH .AZE CRT FRA ZMOL NAV ROM TRK      c2scccmpdligdnomfracligaligaligalnumloclloclloclnumronumpnumsmcpss01ss02ss03 ss04ss05ss06ss07$tnum*        60nL`tflq3210(sutvrwR   ; /0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwyxz{|}~    %&'()*+,-./0123456789:;<=>eg/3579;ACEIKLXYz{}   "$%')+- } q3210(ds0ut/rwR   ; v123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abdefghijklmnopqrstuvwyxz{|}~    EFGHIJKLMNOPQRSTUVWXYZ[\]^0468:<BDFJMZ|~   !#&(*,.~ *BZrMxN`H0I$'a_bc` MNI26rJd~"<N$.8J| <Fh.8BLV( &,   &,68:  &,HF  $$*06JL   $*06bd  $prt % &,!  &,79;I  $ &,KM    &,ce  $qsu &+-,. $G $X`Z\^ $Ya[]_ $fnhjl $goikm%)+-/46;=>EIKMOTV[$]^*,-./015     OX{@JMMJPPJ*  JXXJWKo6,- .//O EGFHIghijklm '(+35FGHKSTU nooIKj.Z^XUWV[Y]\OJKLMNSeff pp  .pfLNMKOeSJU^ .[]^XUWVY\ZJKLMNOSefp.pfJOSSU^ eel%<  !"#$% >zst?@ABCDyubioath-desktop/fonts/Roboto-LightItalic.ttf000066400000000000000000005300701412677075700217050ustar00rootroot00000000000000 GDEFB:xbGPOS<]GSUBYOS/2<0`cmapwX!Fcvt /6Xfpgm"3gasp:l glyfi|b5,0hdmx/KCZheadm6hhea  $hmtxq8locar| maxp>\ nameDsE7Dpostad:L prep1 5?d( o 9 а а  а  EX/>YEX/>Y9999 ܲ 9 901!!!!5!(<6 }wx^^^6/EX/>YEX / >Y +X!Yа/01#36636&n|4#-2D,"00#!--;e /а/а01#3#3iDQKaDRLanŐ0EX / >YEX/>YEX/>YEX/>Y 9|/ +X!Yаа а / +X!Y а аааа01!##7!!7!3!33#3!#!!Ւff,ffy,f]````G]fL0*-./9EX / >YEX / >YEX / >YEX#/#>Y 9 9  +X!Y +X!Y( 9 + +X!Y016&$&&766773#6&'&#7.736E s܌C #f#v&< !e!tJ w ncuqb这~W\,vĦ sw< )7;<=9а(а+а8:/8/EX/>YEX&/&>Y а / +X!Y +X!Y&а/&- +X!Y4 +X!Y0166'&&76776&'&66'&&76776&'&'{s yq aRLRrSJQw }u xs `QMPuNOTu IuEC_svbN_u{fԂN^uudOar{e5k0=q'2w349 а1EX/>YEX/>YEX/>Y 99 +X!Y!9*90 +X!Y01'&766673#''&&7667'7676&#&%S ʗ ؖ7pl!aڴ ⬭ 14i c| _L`A{uh3吨ҫm#)y"waoKdBo9/а/01#3X?[Lemn+a9 //01&&7#D)  aRmvBpM= n)_9//01'676'&'7;8rf#  AzNW?TLr4^Rr{ EX/>Y/  /01%73%'//=hINYNla|t}js<1BL+  /а  +X!Y01!!#!7!3}STxTZQxpp/ +X!Y01'6773Cst!7-P/ +X!Y01!7!-Pe. # 9EX / >Y +X!Y0176676&03#$.3F/H#12$#-.m/EX/>Y01#3 raq}-j"H#$9EX / >YEX/>Y  +X!Y +X!Y01.77'&676uJ+/ ٱ (5٢%,{k+0vl0=HCWy^3z 4:EX/>YEX/>Y9/ +X!Y901!#7%3;xev&W 9EX/>YEX/>Y9 +X!Y 99 +X!Y01!!7676&'&6$!vsµaoɡ}צ9)'*+9EX/>YEX/>Y9/_]O_q/]q +X!Y 9' +X!Y'9! +X!Y012676&'&6$'&&73676&/st  no ƺv  ~ݭl5'x紆  JEX / >YEX/>Y 9/ +X!Yа в 9 9013##!73!9Aw@k;>epC%4Sbi9EX/>YEX / >Y +X!Y 9/ 9  +X!Y +X!Y 901!!6'&&53676&'&w̱qoQ߲زkj'e"()9"EX/>YEX/>Y +X!Y9/9 +X!Y! +X!Y01#6'&&'&7!&6676& MsL QA !>Cv 6b_c i{ځfF߲\uehsvgro3EX/>YEX/>Y +X!Y901#!7!gς,kJf9/#/(019(а(EX/>YEX / >Y- 9-/_-]/-]O-_-q +X!Y-9-9 ! +X!Y' +X!Y01'&&7667&&76$6&'&66&'&6! jlм ZX c x xBv41sز50gHuv(e")*9"EX / >YEX/>Y 9 9/ +X!Y +X!Y ! +X!Y01'.7>#736%67654&'&oLirK ց={1 (5r<ai 3u_iۂphzz1kpegj9& / 01_9'K?<9EX/>Y9/ +X!Y +X!Y017phy}`{p'/а/ +X!Y +X!Y01!7!!7!,[+=jj6;2EX/>Y +X!Y9/ +X!Y01774/va#_$%9EX/>YEX!/!>Y +X!Yа/9  +X!Y в901>76&'&66>&S `Q3 gkssꦙqj0F,2!#,n_g>qzȢ__"/0#!--J9:Gy)HI9)E*/3/EX/>Y39а/ 39 /> +X!Yа3 +X!Y*% +X!Y D +X!Y01&&''&&'&6676&'&7'&$54$67&'&VqQR\j Mu9<=jawj|򨧪ֿ旞o CB]'YEX/>YEX/>Y9/ +X!Y 901!#3#!مuym3hPIu !9аEX/>YEX/>Y9//]oq +X!Y9 +X!Y +X!Y013#2676&'%6676%%I {ht h^ ?Ĭr, xh | P !"9EX / >YEX/>Y 9 9  +X!Y +X!Y01'&'&776$'4&'&67~3   y*If7 NM6ZvjI H9EX/>YEX/>Y  +X!Y  +X!Y0132!2666'&&'I{o.x'3ƝϷyG!Az9I VEX/>YEX/>Y 9 // ] +X!Y +X!Y +X!Y01!!!!!!lhm`hiI DEX/>YEX/>Y 9| / +X!Y +X!Y01!#!!!nwzn cXi"X #$9EX / >YEX/>Y  +X!Y +X!Y" 9"/ +X!Y01%'&'&77#&&'&7!7!kJ  /]x) B_eRN2mŘAExhI` REX/>YEX / >YEX/>YEX/>Y 9 // ] +X!Y01!#!#3!3b{zzzzr$r|FrcEX/>YEX/>Y013#3zz:09EX/>YEX/>Y  +X!Y013'&&7367{ȼzI/ L 9EX/>YEX/>YEX/>YEX / >Y9901#373# Zzzj96rI)EX/>YEX/>Y +X!Y017!!3{hhIYEX/>YEX/>YEX/>YEX/>YEX / >Y99 901 3###)zow^gnzPv zId L 9EX/>YEX/>YEX/>YEX/>Y9901!##33hv{vVy x&H'(9EX / >YEX/>Y  +X!Y# +X!Y01&'&7776674&&'&A  -p #Lm-$'PO1}VR̙@?Azkb>I O 9  EX/>YEX/>Y 9 / +X!Y +X!Y01##%2676&'%*gzcQit)H*+9EX/>YEX/>Y +X!Y& +X!Y01%#.'&776$674&&'&S[VNo   KNl,#(2G~RL@VRaU?B{h\: Fc9EX/>YEX/>YEX / >Y9/ +X!Y 9 +X!Y01!#2#2676&'%ej{h^0-(f)*9EX / >YEX/>Y 9 9  +X!Y +X!Y$ 9& +X!Y016/$7>#6&'&'.736> e { o zPmXEyt_q{g6JΑx^pÀ/EX/>YEX/>Y +X!Y01!#!7!zAGGi{=9EX/>YEX / >YEX/>Y +X!Y01'.7367$]y!'|$ư61EX/>YEX/>YEX/>Y901%73#3u{PKYEX/>YEX/>YEX/>YEX / >YEX/>Y 9 9  9017373#'#3WnRu 8uz-#Px SEX/>YEX / >YEX/>YEX/>Y999 9013##3l[Jf,$z$1EX/>YEX/>YEX/>Y9013#3X8_^zan+ FEX/>YEX/>Y +X!Y9 +X!Y 9017!!7!7!ehhci^$// +X!Y +X!Y01#3!!v5Cfo/EX/>Y013#nY9/901#3#xZm)EX/>Y +X!Y01!7!Zee #/]/а/]01#3 d%Q!, -.9 'EX/>YEX/>YEX!/!>Y9 9 // ? ] +X!Y 9/" +X!Y & +X!Y01!&77'&&7>376&'&#66%677'" Kp  xuvuZ #nB) o&&KQ\kW|oyc›W65 UqhxXr-f !9 /EX / >YEX/>YEX/>Y 9 9  +X!Y +X!Y01'&&'#36'76&'&6#j+"p vqԛwxw|ReZM@;_aiGQM 9EX/>YEX/>Y +X!Y99 +X!Y01%673'.77>'6&'&vqO Osqt|`Pv+iƙYئ}꜡UZ#f$%9/EX/>YEX/>YEX / >Y9 9 +X!Y  +X!Y01663#7'&&'&7767&&'&^~`.nvoїzwno:Wg UV_>:CLlZaoBQ"e#$9EX / >YEX/>Y 9/ +X!Y +X!Y 9  +X!Y01.7766!67&76&ۂY yL>c`AFI4t"ImuPC9^a°~?h9EX/ >YEX/>YEX/>YEX/>Y +X!Yа  +X!Yа013#73766&#"3#:I83dbctb(L S+#,-9#EX/>YEX/>YEX / >YEX/>Y9 9  +X!Y9" +X!Y) +X!Y0173'&'&'7677'&&'&667&&'&Ia.%oрf]^9Jg˘xud?UhOVXوo12YF~³^]fdaq.J 9/EX/>YEX/>YEX/>Y9  +X!Y016#6'&'&#39ԜvvviEv vҸ@95; 2EX/>YEX/>Y а / +X!Y013#367&xwVQ'! &&Q:9A#(&# D K 9 EX/>YEX/>Y  +X!Yа/ +X!Y01'&'737>&j+B7!%"/F,1"#+:Ec9!00#"./. QEX/ >YEX/>YEX/>YEX / >Y 9 в901#373#Gw w|ןuh2r3;EX/ >YEX/>Y013#3x x(qR"x#$9EX/>YEX / >YEX/>YEX/>YEX/>YEX / >Y 9 9  +X!Y01666#6'&'&#'&#W"rJt wwvz|wxs"w:nbeoŮ?;5z4n:.PT9EX/>YEX/>YEX/>YEX/>Y9 +X!Y0166#6'&'&#\$HlvvviEv:dkҸ@95:CQ E!"9EX/>YEX / >Y +X!Y +X!Y0166'&77366776&'&K鈆WԶw =dlt'9wrr~!`T"p#$9EX / >YEX/>YEX/>YEX/>Y 9 9  +X!Y +X!Y01&&'#3676&'&67]3dvnԘzxi;Y a#KPڙ?;}F_kf\`V` S!m"#9EX/>YEX/>YEX / >YEX / >Y 9  9 +X!Y +X!Y0173#'&&'&7767&&'&_#_0#pwf̘ywwc?[d!0QT&&>;^b]\j.RG 9EX / >YEX / >YEX/>Y  +X!Y 901&'"#3662'(r vu$;d#/k:`d.P&f'(9EX/>YEX/>Y9 9 +X!Y +X!Y 9$ +X!Y016''&766#6&'".726 뢟vnr }C ѥ)m^wyx>3PazkX4$U Q_fvmWzOa9EX/>YEX/>YEX / >Yа/ +X!Y  +X!Yа013#7'&&7#730xdB;=i` w1Ob.>mbbi:T9EX/>YEX/>YEX/>YEX/>Y9  +X!Y01%'&&73673#㙖tvs`Txxt׿H65\dybq:89EX/>YEX/>YEX/>Y901%3#3~av:;YEX/>YEX/>YEX/>YEX / >YEX/>Y 9 9  901%7373#'#7V'fk)ffwbfspU]9fg:Z<=:: SEX/>YEX / >YEX/>YEX/>Y 9 99 9013##3_D8- F:D9EX/>YEX/>YEX/>Y9  +X!Y01%3'&'7773υlId&: YEX/>Y +X!Y9 +X!Y 9017!!7!7!ee^ug_:n?-9// 9 / +X!Y 901&&776'&'7677%ܖ &"6X+"$u  n35. g ]hPWR@-->:B#/EX/>Y01#3eexjS;- !9//9/ +X!Y901$767&&'&776'&&'7* $YEX/>Y  +X!Yа/013#&76676o{w1"#,1"#,e!//#"./^ &"V#$9EX/>YEX/>Y +X!Y9 ав9 +X!Y01%673#7&'&'&6773'6&'&x!q۟+x,a=ug*x+qtPw5f[ϕ|Ppj !9EX/>YEX/>Y9/ +X!Y +X!Yа а а +X!Y01%!767#7366#6&'&!%X6\q%%z sw~%Nbhg*hת{h .A$/09$EX/>Yа/# +X!Y+ +X!Y01%'&&''7&767'7676676&&'&eEIQ]aEJV^ '_eWz𪃛LJ\䵭RGE^ױRs\\8q 9EX/>YEX / >Y 9 9/а/ +X!Y  +X!Y аааа013!!!!#!7!7!7!3ߏ-$\9{9W$3YXDXY/EX/>Y+013#3xww0>~1?@91 /EX!/!>Y8!98 +X!Y89 +X!Y в2!92- +X!Y2-9!( +X!Y%01'&&77676&/$767&7>#6&'&%'6676&'* w h}P v럌3 pJz zUdrXzX{+5mWepXzMP9+']hsY[2#N  / +X!Yа а/016636"&%6636"&4#-2D-4#-2!"-t"00#1-""00#!.-p)9&:;9&а&-EX./.>YEX6/6>Y6.9/] .69 /  ] 9 9 +X!Y +X!Y6 +X!Y.% +X!Y01'&&7766#6'&7$'.'&'6$'&$M͖ bj aa*[ՄeD`ų_ܤNb,ˎ{ c`;'p()9EX/>Y(9/а/ 9 / +X!Y 9|/ +X!Y " +X!Y01&7#"&766376'&'&'66%277'"cgy mLohuy 1 q_~kF0/lv\r># lDLm~z]YPiQI;>jf& 7/а/ +X!Y01#!7!hw2`jk!:BCD9 а:а<EX/>YEX / >Y +X!Y +X!Y# 9#/% 9%/%%];#%9;/" +X!Y+";9#3а%B +X!Y016$'&$7$6'.'&##&?6&''6676'']±kȏ gلi7b S  b7MRu ^p`~0}3G{pL*b>L!?$$H,KM\UJ?b9/ +X!Y01!7!S[?a > 9 EX/>Yа/  +X!Y +X!Y0166'&&732676&#"e\{e`{^J;C^E>@bjbj`>W_D=\_ A /EX / >Y а  +X!Yа  +X!Y901!!#!7!3!7!t|EnEnEo-=fJf egV9EX/>YEX/>Y +X!Yв9 +X!Y в901!7676&#&#66!sn I>Qdgvp?PAbS@EYLtxas6v&p'(9EX/>YEX/>Y9|/ +X!Y а% +X!Y%9а  +X!Y01367676&#&66'&&7332676''YLY74OACehqp}vgVMRk QR(&=>EDAgxuavD,k}h?PQCV#/]а/]/01p` :h9EX/>YEX / >YEX/>YEX/>YEX / >Y +X!Y 9 901673#7'&'#fi zwly̰I^v:P/}nƚy $ 9EX/>YEX/>Y01!'&&7636[S1Py[! /  +X!Y016672&2#%-3#$-#00$#/0KL9EX/>YEX/>Y9/ +X!Y  +X!Y01376676''7`s g7-BblOB:O~T3EX/>YEX/>Y9/ +X!Y01#7%3isHE^id B 9 EX/>Y9/ +X!Y +X!Y01'&&77666776&'&I Ő w ZZ` ZYd cX>oz[nu$&G'g' EX/>Y01J''YEX / >Y01'' EX"/">Y01|O$c%&9EX"/">YEX/>Y" +X!Yа/9  +X!Y 9901677'&&767767#&76676*S nmnu䧢O4#,2!"-lw~ΜxNO"00#!..C9EX/>YEX/>YEX/>Y9/ +X!Y +X!Y 9 // ]  +X!Y +X!Y901!!!#!!!!!!3ݘTL_H<Pm{ff2c 8/ 9 / 9 9 9в 9  0177WDvVfn^K]VJl)w&1h 239 #а -EX / >YEX/>Y 9) 9) а " +X!Y*а, +X!Y01&'#7&767673'&'&4'66?tpeH؞t`Bo0 ! <]*Xښ:^ڜaDF4CGmvwsŝ5~~tXV M RHKY9 EX/>YEX / >Y 9/ 9/  +X!Y +X!Y01#%#2676&'51{[ 9w1m3fugk) .S/09/EX/>YEX/>Y9 +X!Y!9+ +X!Y013#66'"&'7676.7>76&'&wڥ o9A P4.iu :@$_% ^Vvg/TI+:mx@+(cPiYEX/>YEX/>YEX/>Y9 9 // ? ] +X!Y 9/9<9anqO)-./9#EX/ >YEX/>Y9/9999999 +X!Y# +X!Y) +X!Y01'.7>6''7&'77&&'&771ar{X څX6|(n1ڐ( b wEQ܀HGO}hDeIyO-TZ߹DL,S9а/ +X!Y +XY +XY +XY +XY01!7!6676"&6676&52#$/3#&,2#$/3F.tH#01$#/1#01$#./=t&h'(9 а%EX/>YEX / >Y 9! 9!а +X!Y"а $ +X!Y017'&''7&'&$&'&%6'wn\kdrb\ldz LGO{rDAKP.}*zIVb*?h B`!f"#9/EX / >YEX/>YEX/>Y 9 9  +X!Y +X!Y01&&'#3676&'&6]3dwSwpќ$yyi;Y aKP?;H_kf[`V)t*+9'//EX/>Y +X!Y99/9аа  +X!Y' +X!Y01##7'&&'&77676!7!73367&&'&ҩoі}`-=5 vxvcAWg>:WUHf]bean3tEX/>YEX/>Y9/9/]а +X!Yаа +X!Y а а013##!##733!3!7!zzyz;z;%:z$(b`F`NNr9m:EX/>YEX/>Y013#3xw:4*: bEX/>YEX/>YEX/>YEX / >Y9/o],<] +X!Y 901##333#VxxT{:  ]EX / >YEX/>Y 9/а +X!Yа +X!Yа а а 01%!!773N<lwv{4`^ah1^2% KEX / >YEX/>Y 9/а +X!Yааа а017#773jx}}x`EaEEaEFEZe9EX/>YEX/>YEX / >YEX/>YEX/>Y  +X!Y 9 901'&'73677#3Z6>7+Vv zvLe}U/FQc !9EX/>YEX/>YEX / >YEX/>Y9  +X!Y +X!Y0166'&'73676'&'&#U@w  y8H75Ut| {w:_pORfwr<<:Vk$%&9EX / >YEX / >YEX/>YEX/>Y  +X!Y 9//] +X!Y +X!Y +X!Y  +X!Y01!!#&&7!!!!!7&#&sB[0-RP7 _lgdvv%. +DihWVD S"089:9)а4EX/>YEX/>YEX/>Y9595/  +X!Y& +X!Yав99- +X!Y10166!7'&&''.776'&&'&&!76&{#U| n+|$S釅R/~irytЁ7lNyfbL~{Rw:N39 3 9EX/ >YEX/>Y  +X!Y01366&'"92Z17d_l?j=%h&'9EX/>YEX/>Y9/  +X!Y9 +X!Y +X!Y01&&77!76'&&'&'66'67!ed  ˤT犱j⢃ڡ(r !|Dke{]AEνk6cZ-F(t !9EX/ >YEX/>YEX/>YEX/>Y +X!Y  +X!Yаа +X!Y01#'"'767#737662&#"3+F.0Vt/\66_}Ϩdu1bb~y~#-^ ./9  EX / >YEX/>Y 9 / +X!Y  +X!Y) +X!Y01&'&776$66774&'&76G  vBo|k37ۙ5Nl-$UR?cc __h_A%|j'?#^$%9EX/>YEX/>Y9/  +X!Y +X!Y! +X!Y016677'.776'&&'&{v\^dr T4isN i|NO<1{eV9EX/>YEX/>YEX / >Y 9/ +X!Y  +X!Y016677'.7367$r~fw"]y ĺ Vzގ$ӳi#c9EX / >YEX/>YEX/>Y в9/ +X!Y9 +X!Y01#7'&&73673667#tᚖtvt`Vtx[^ ׿H75Zfve]Ew: 0 9EX/>YEX/>Y  +X!Y01'&'767w6<10Tu:md}~4Qh !9EX/>YEX/>Y 9 / +X!Y9 +X!Y  +X!Y01'&77!76'&&'&'667!BS ƶ n*W9MfFK}T,2/ +XYааа//]901''7%3,lnI &G"/а//]9а/0177#7kVi0  ?bpB '/а//]а  +X!Y01'&&767ByveOQUhzsO[\P  / +X!Y016676&0"#-2!#,f!00#"-.v2 8 /а/@ /?O]  +X!Y +X!Y016632#"&732676&#"wOKguRKfO4.0J7-/LkStkLPtgO.@E50AJc&+/EX / >Y +X!Y@ ,<]017#"&7667D H+>AHIPv1__I!U*[GJI}9/а/ а / +X!Y +X!Y01#".#"'662327}qS3b4.CYsS&>A>%\$dsE>8`w"-"z;/а/]/а/а//013'3u.2 =/ а /@  0 @ P ` p ] +X!Y +X!Y016632"&736676&#^=:S\xTH 5'7=YO;>TK=) )-//а/]01#3c/а/]/01#p*] ;X+/а/@ /?O]в990177676''7 /z>eW |NI LWKDU ?GB/?]/а//]/а/а/01#3#3\~qő  l / +X!Y01>&0F,1"#,!00#"-.4+4/а/]/013#yX4"?/а/а/]/ +X!Yа а /013#6636&%6636&rd4#,1D-4#-2!#,"00#"-.""00#!..y[!xJ,EX/>YEX/>Y +X!Y01!#!$zVG0EX/>YEX/>Y +X!Y901!!HRoPq,f -.9 а  EX/>YEX/>Y9|/ +X!Y +X!Y) +X!Y01!7!&'&776$674&&'&p  p  Mk(Pl(eTS@|XOÜ??Bzh>Azh: U1EX/>YEX/>YEX/>Y901#3#hv~Pi uEX/>YEX/>Y +X!Y9/]qqO_q,]\]y] +X!Y  +X!Y017!!!!!!E5YhhiiN[9EX/>YEX/>YEX/>Y +X!Y01!#!#!_{zGp >EX/>YEX/>Y +X!Yа  +X!Y01!!77!!7-gupha\Wi_l$u%&9а"EX/>YEX / >Y 9/в 9/] +X!Y а" +X!Yа!01#7&&'&766$7736&'6$%n%{&qA!%{=ƿ(ž듞QHߞ3  b] 9EX/>YEX/>YEX/>YEX / >Y 9/а  +X!Y 016673#&733 X{X'G{HXzXx{0 ([)*9EX/>YEX/>YEX'/'>Y% +X!Yа  +X!Yа%01%677654&'&!7%&&76%!&$)lQ=IɎn~ Q@v93|9=Qoҏ!wh~%@2ہZhV S'|()9$EX/>YEX/>YEX / >YEX/>Y +X!Y  9 9  +X!Y$ +X!Y017'&5'&&'&7777&&'&  M..,ї$h&21{sԃF_!:2^ٽ=;;ja\|q1*o+,9/EX/>YEX / >Y 9/( +X!Y(9 9 +X!Y ! +X!Y01'&'#6$2676&'&676'&''7ʤ jno q\w @ t$fGGӡi3)ƒ|lsFUVUea: 1EX/>YEX/>YEX/>Y 9013#37~LxPv&:IMV>  0e129-EX/ >YEX/>Y +X!Y,9,/ +X!Y,9$ +X!Y01663&#"'&77677&&676'&&'&V ڥl RYR[V.jdDfB_Qu@=%  ,?m[ gۂ-M'()9EX / >YEX%/%>Y %9/o]Oq/?]q +X!Y9 %9  +X!Y% +X!Y!% 90167&&76677'6&'&'"673'&&7OR׸-t{  v I$uI \srddni^o~i|!Z9/EX/>YEX/>Y +X!Y99  +X!Y901'676/&767!7! T PsmT@ W?US_ͼSo'<0vM2YEX/>YEX/>YEX/>Y +X!Y016#6'&&'&#[ ݡwf]ww:L<9^fn:} &i'(9а$EX / >YEX/>Y 9|/  +X!Y +X!Y# +X!Y01&&'577!76''&!67٢&0F '7sy ٠(a |}30k6MexHB!V}Z%n>x: )EX/>YEX / >Y +X!Y017'&&7`H>9gb :=m d)L9/EX / >YEX/>Y  +X!Y 9 +X!Y01277#"&'#''&'#76- O"E^P. N"4]e [u#-`_ P ,l -.9/EX*/*>YEX/>Y* +X!Y*9/  +X!Y +X!Y# 9)*9)/01&#"'"'7676/&&7667&&76677{o (y cWD.W M3Eԯ DZ_l ,~5+pgĪ_:0rF:>'LN9?ڥ5%] ,r:^ 9EX/>YEX / >YEX/>Y +X!Y  +X!Yааа01#7'&&7!##7!v`&:>9gb u6w=>m e-g`SY 9 EX/>YEX/>YEX / >Y 9 +X!Y +X!Y016'&'#6776&'&#lO$acxBȕ!xw!^jB?`VR#V$%9EX/>YEX/>YEX/>Y9 +X!Y +X!Y01#6&'&'6676''&77>q ~wbvG hM>E9 QONӬ}f034E1<9W/K;#A;d !9EX/>YEX/>YEX/>Y +X!Y +X!Y +X!Y01'.77636776&'&φ R/-| x+g!T:K9EX/>YEX / >Y +X!Y  +X!Yа01!7'&!7!zv52 A>Mtd=@8B[&fo;=9EX / >YEX/>YEX/>Y +X!Y01&''&&7mq !|q:Y48"PX">%a&'9/EX/>YEX/>YEX/>Y  +X!Yа а" +X!Y01&76766#>'&&5 ZyPSwٌm-5/ZZf|bq5.;)gE; ` !"9EX/>YEX/>YEX/>YEX/>YEX/>Y +X!Yа016676'&'#&&'&73,+ +{( MvN RwR  :Ǖwy| W˩hrXTp;)g*+9EX/>YEX)/)>YEX/>YEX#/#>Y +X!Y )9 +X!Y!9016736'&''&&''&&767RbV~/x/ccuL .|* 4:o~呚qr9~%PkqrDZJ[s#/n.019.EX/>YEX/>Y'9'/ +X!Yв 9 +X!Y'!а, +X!Y01'&&77677&77666765&'&sL^#~ǁ6x6 xe%8Y@:Tq  ԍjIB=epڱ fX-3i`V9EX/>YEX/>YEX / >Y +X!Y +X!Y 90166&'&#'&#"'6327jAR>6' "VHjfzi&I&65Hj$$v]\ n`^c*a `_o>J]O:+x&,-9& EX/>YEX / >YEX/>Y +X!Y  9аа  +X!Y" 9( +X!Y01#'&&''&&77!&'%6736;mʋpy莏sjTYU|,x+aemIpmt5gnpڞ{PNlq9EX/>YEX / >YEX/>Y +X!Y 9/   +X!Y +X!Yа01!676676&'&#!7!b~{\CGEgD9Gi~$ %&9EX / >YEX/>Y 9 9  +X!Y 9/]/]_]O_qq +X!Y! +X!Y01'&'&776$'4&'&!!674   y2QIf7 NM8hjBvj"q#$9 EX/>YEX / >YEX/>Y 9/  +X!Y +X!Yа" +X!Y01#!!77672676&')jT^ #$@اN *1pVgzG g&u8K 9 EX/>YEX/>YEX / >YEX/>Y 9/_]_q]/]q 9/  +X!Y  +X!Y +X!Y01!3#!!#367676&'MuznA%vwzzkUiڸW#@W_9EX/>YEX/>YEX/>Y +X!Y9/  +X!Yа01!6#6&'&#!7!bD{D}zVBG3d5?GiJY I /EX/>YEX/>YEX/>YEX / >Y +X!Y013!3!#!G{z:=|>/HPaB a9EX / >YEX / >Y  +X!Y 9/  +X!Y +X!Y01!#!!2676&'$[B#VjUGڷ]W9 /EX / >YEX/>Y +X!Yааа  +X!Y01%3#!#67!%!sPz=>zQYy~{!ksh7azCsQ5EX / >YEX / >YEX/>YEX/>YEX/>YEX/>Y 9//]_] +X!Yв9 в901####33333#[yzyKrzr/KKnn;-+ ,-9EX/>YEX/>Y9/_]/]O_q +X!Y 9) +X!Y)9 9# +X!Y012676&'&>'.73676&''7fx tm h ywfӳq3(y{kkzjMa EEX/>YEX/>YEX/>YEX/>Y9 9013##3z {P-.TO9EX/>YEX/>YEX / >Y +X!Y   +X!Y01#!'#7767Tz.D. &0PGg'uqAD9EX/>YEX/>YEX/>Y9  +X!Y013'&'7326773z2Xt,6(*HzDHI| dUnt(R!*Z+,9 а( // 9/в 9 / а' +X!Yа & +X!Y013'##7"&76$3373276&'3#"q֨)w)v()r/0֓G DS C 9/EX/>YEX/>YEX / >Y +X!Y013!33#!A{zXq=H7_G 9EX/>YEX / >YEX/>Y 9 / +X!Y01#'&&737{w̶C{B'CzP=m9G IEX/>YEX/>YEX/>YEX / >Y +X!Yа01!3!3!2z0z/HHPGU /EX/>YEX/>YEX/>YEX / >Y +X!Yаа а а01!3!33#!2z0zWm=HH<_wj a9EX/>YEX / >Y 9/  +X!Y  +X!Y +X!Y01!#!!6676&'SnC#&jUڷJKT r9аEX / >YEX/>YEX/>YEX/>Y 9/  +X!Y +X!Y01#!32676&'#3TB$zjUzz8ڷ2CG R9EX / >YEX/>Y 9/  +X!Y +X!Y01#!32676&'LB$zjU8ڷn"y#$9EX/>YEX/>Y +X!Y 9 // ]_ ] ]O _ q +X!Y +X!Y9"901!7!674&&'&#6$'&&7驤.LLh8y47  0Ʋ<i\EyiONa,'-.9'EX/>YEX / >YEX/>YEX/>Y  9 /_ ]O _ q ]/ ] q +X!Y  +X!Y( +X!Y01&'&7!#3!76$4&&'&76 wzzu# p #Lm-$,$OvRc00}VR̙zkb* c9 EX / >YEX/>YEX/>Y 9/ +X!Y 9  +X!Y01!!#&&76$3%"YEX / >Y 9/99 9 +X!Y & +X!Y01'.77776736&6776&y|W  [H҃Y -!|f=jMȜ}܆"mGdH.#}=пiݨ!!;: !9аEX/>YEX/>Y9/o]qrOq/?]r +X!Y9 +X!Y +X!Y013#2676&'%6676%%;j tgYcFI |s :V$TrodUcej]5{:,EX/>YEX/>Y +X!Y01!#!hw-::W9 /EX/>YEX / >Y +X!Y  ааа +X!Y01767!3#!#%!%m+XolIv88rJCzGLch +]>eY:EX / >YEX / >YEX/>YEX/>YEX/>YEX/>Y9/o]/?]Oq +X!Yв9 в901####33333#WwW%܆SwSP  1 %%)P&'(9EX / >YEX/>Y 9/o]Oq/?]q  +X!Y  9$ +X!Y$9 9 +X!Y012676&'&#66'&&7676''7 |spu񩩸 SO up [ga[isaUXe~whh6: EEX/>YEX/>YEX/>YEX/>Y9 9013##3{x7zv:o:5 : nEX/>YEX/>YEX/>YEX / >Y9/o]Oq/?]q +X!Y 901##333#VxxT՞z: :O9EX/>YEX/>YEX / >Y +X!Y   +X!Y01#!'#776677xUV/1 'j"d:lxii:c: YEX/>YEX / >YEX/>YEX/>YEX / >Y 9 9 901%3###3?wUwks:6: lEX/>YEX / >YEX/>YEX/>Y 9 /o  ] qO q/ ? ] r +X!Y01!#!#3!3WxWVwwU3Uw:6:9EX/>YEX/>YEX/>Y +X!Y01!#!#!Wxͪw!-:g:2EX/>YEX/>Y +X!Yа01!#!7!wf,fX`4+92:;92а2'/EX / >YEX/>YEX/>YEX/>YEX/>Y # +X!Y( +X!Y/ +X!Y4 +X!Y016636'&'#'&&54%76&'&677&'&`{bIWvZRc%eMQvRT\ZlnVJ9YllPN5Ye5/4?7/F/0eZ,&c)H(s76: </EX/>YEX/>YEX / >Y +X!Y013!33#!w2wkSn9:++ZA:I9EX/>YEX/>YEX/>Y9|/ +X!Y01!##&&73373(xT|+w,{^w5D736: IEX/>YEX/>YEX/>YEX / >Y +X!Yа01!3!3!iϫw˫w:++:0:L /EX/>YEX/>YEX/>YEX / >Y +X!Yа 01!3!33#!cЫw˪w~Rn9:+++ZA:bq: a 9 EX/>YEX / >Y 9/  +X!Y  +X!Y +X!Y01!#!!2676&'uD# WU%} vm:wwvg~;~: r9аEX / >YEX/>YEX/>YEX/>Y9/ +X!Y +X!Y01#!36676&'#3(_r XvVU& zkyxwL\:sh}:;: R9EX / >YEX/>Y 9/ +X!Y +X!Y01#!36676&'(_r XvVU& zkL\:sh}=R!"#9EX/>YEX/>Y +X!Y99 +X!Y9/qOqo]/?]qrr +X!Y01&>'&&7367!7!6&'&BxqkϤs t1 "Evg\ئzeO8p:T'()9EX/>YEX/>YEX/>YEX/>Y9/o]Oqqq]/?]q +X!Y +X!Y$ +X!Y01!6676'.7#36'&&'&%dLȨ ꍀZUwv? 7djsMnHݺ;k:xs0; c 9 EX/>YEX/>YEX/>Y9/ +X!Y9 +X!Y01#!#&&7663%"wL\]Z fZMMz:L#g^p~.E%&'9"/EX/>YEX / >YEX/>Y/"]"]%"9% +X!Y9  +X!Y +X!Yа% 01!66'&'72676'&'&##7373!BKi;B27Wuيvֱ#v#,fgл稺d~{95fTQ !"9EX/>YEX/>Y +X!Y99 +X!Y9/qqo]Oq]/?]qrr +X!Y01%673'&&'&66'6&'&!!w!q Drt0#Pw׽nԪzfGH|6:!}"#9 EX/>YEX/>YEX/>Y9/  +X!Y +X!Y +X!Y! +X!Y01#!!'#776677!2676&'# V_V01 (g#d\N%{ vqlxiz@n]q6E:9EX/>YEX/>YEX / >YEX/>Y 9/ 9/  +X!Y +X!Y  +X!Y01!3#!!#32676&'3KwL$ X``wwMN%{ tqO':@~o^p.v9/EX/>YEX/>YEX/>Y/]]9/ +X!Y9 +X!Yа01!6#6'&'&##7373!@ԜvvviEv٨!v#9Ҹ@95f6: F/EX/>YEX/>YEX/>YEX / >Y +X!Y01!3!#!i2w>w>:+a:}#d$%9EX/>YEX/>YEX/>YEX/>YEX / >Y9 +X!Yа01'&&''&&73673367"n?y| hY{~pn}oafp89cr 앱n:!a"#9EX/>YEX / >YEX/>YEX/>YEX / >Y9 +X!Y01'&&''&&7367367wߨd|Ҙuvu pwwv feov:EeVݲC25!C6 9EX / >YEX/>YEX / >Y +X!Y 9/ а аа/  +X!Y +X!Y01!#!#733!2676&'B# X?x@<`X% xk::elvmb,-.9EX/>YEX,/,>YEX!/!>YEX)/)>Y),9//] !9  +X!Yа( +X!Yа! +X!Y!90176$'4&'&%!3'&'&77##3i+y? Kf\sx6 |zz, 1eK;?wh | TLE98sS&'(9EX&/&>YEX/>YEX#/#>YEX/>Y#&9/o]Oq/?]q9  +X!Yа" +X!Yа +X!Y90136'6&'&!!673'&77#39rt/8  rx q WwwY֨zfHI~v- :6 WEX/>YEX/>YEX/>YEX / >Y 9 / +X!Yв901####3#!jSxRvy{&&PE: WEX/>YEX/>YEX/>YEX / >Y 9 / +X!Yв901####3#!'=w=ʁshu$pW >[[:nwt8}EX/>YEX/>YEX/>YEX/>YEX / >YEX/>Y9/а +X!Y ав901!3#####!#3!SvzSSxSSzz{EkP&&%Y4:EX/>YEX/>YEX/>YEX/>YEX / >YEX/>Y9/б +X!Y ааав901!3#####!#3!'BoiuR=w=ˁy[[Z:nw/ x!"9EX/>YEX/>YEX/>YEX/>Y9/а +X!Yаа  +X!Y013663!#6&''#''$3/?jOOǻ>{>u uzx)?K{[ɿ|m  <0:!x"#9EX/>YEX/>YEX / >YEX/>Y9/а +X!Yаа! +X!Y0137663!#76'&&''#''&30!iw siCTwXF  4ּͻF6SU$ Ra$(()*9(EX$/$>YEX/>YEX!/!>YEX/>YEX/>YEX / >Y$9/%аа  +X!Yаа( +X!Y01!7!#6&''#''$#67#33cB/ON_>{>w uzw)>{C"z4vzzuL [Lf|m _Z[<9:$(()*9(EX/>YEX#/#>YEX/>YEX/>YEX/>YEX/>Y9/%аа +X!Yа а#( +X!Y01#76'&''#''"#767#3!73!3w GUvXU y&"rhVxwU 6PͺF6$ a:h x,536793/2/EX)/)>YEX / >Y ) 9 /_ ]/ ] +X!Y 9  +X!Y)( +X!Y2]24а4/44/4]-249/а//01'&&76632676&''72676&'%777#7 vp 4B^` 3[m>{kWi9r4'{H=qAV'Rm|gxfԿ  ir/'0129-/-/EX/>YEX/>Y +X!Y'9'//'?']o'']O'q''q& +X!Y&'9 +X!Y-/а//////](-/9*а*/012676&'%7'&&766 6676%'777#7  $, 4\jb ‡0lVhWjcO\g[A pAU(Sm|1_Gg  q)i *+9 а %EX / >YEX/>Y 9|/  +X!Y +X!Y% +X!Y01&'&776$!654&'&7679  p  )` V(TS@|XOÜ_Du>A ?Q!c "#9 а EX/>YEX / >Y +X!Y 9|/ +X!Y +X!Y01676'.767!&!6&'&R^rT4@*0&L&@+/KȳO:sAG9EX/>YEX/>YEX / >Y 9  +X!Y01%76673'&#3 1Ah% {Ltހejxl7`1TG 9EX/>YEX/>YEX / >Y 9  +X!Y0162&'&#3m d[02#SYEX/>Yа а  +X!Yа& +X!Y)01#7&'&77773&&''776776px -Dw /~v%v' }~PI$hxzPHќuwWuv WA| )])*+9)EX/>YEX / >Yа  а  +X!Y  +X!Yа'0173#7&?66676'&&''773Hv |v   p_vxZ p`tKprܮȾsv-^Jwz{wt61EM=NO9=#а=FEX/>YEX / >Yа в 9 +X!Y  +X!Y# 9(а1а=а=/3а3/2 +X!Y39а9/B +X!Y=IаI/MаM/01'&&''&&77667673676'&&'#.#"#766677O]!m>y\ ~_hZ{Q{Nswu`gY/^Z+E[ Z gY[Nhp_dp=h8YEX / >Yа а/ 9 +X!Y  +X!Y! 9&а/а9а9/1а1/0 +X!Y15а5/> +X!Y9GаG/KаK/01'&&''&&76676773676'&&'#&&#"#766677'ܤf{ӗ(ܰ q*^Qq&v&lin'ZQYQEZ Y kO jEeWe27`t 47^nmVQBo}484CJaepJ}"*v+,9)EX/>YEX / >Yав 9  +X!Yа"а)а)/*а*/$ +X!Y*'а'/01'&&''&&7367367%7!!#7"n>z|iX~qo}l  nmcfp89at얱RRqqn#+y,-9*EX/>YEX / >Yа/в 9  +X!Yа#а*а*/+а+/% +X!Y+(а(/01'&&''&&73673677!!#7wߨd|Қuvu qwwu bQqv  o:EeVޱC25!C44Zi%QQ~V9EX / >YEX/>YEX/>Y 9  +X!Y +X!Y01#.'&76#6&'&5{@vZR]iz ~ז3W[qB>"תOVSV9EX / >YEX/>YEX/>Y  9  +X!Y +X!Y01#&77#6&'&wA&Ѣq rxK]!:٦}$aU>/EX/>Y01'#'7'73'A#ACFYXZhUX&/ +X!Y01#7!73o$n!;{l0/ а / +X!Yа/ +X!Y016$3#76&'&#7:^^em[8B/cj1# r|`>O X$U#.a /а/0173#(;t,>.0a /а/01'773s5S.0~; #/;FR^6/EX/>Y69  +X!Y69/69 +X!Y69/69! +X!Y'69'/*69- +X!Y9699/3 +X!YA69DаJвM69!Pа'VвY69-\0166#6#"663#6#"66#6#"66#6#"66#6#"66#6#"66#6#"66#6#" xWXfmSR s[XgnSM wWWfnRQ{ uWXfnRO1 uZZenRQC xfmSR wWXemSP& wWXfnSQYeeWfdVfdXfdZdfVfd[ceWfdXeiSfdYeeWfdZddXfdZddXfdJcP "'%//#/!/// /EX/>Y01#'37%%77%'%'7 d d 5 CO;l;9b\H]I;`R ~^F< ~^FJKLAC/Ma&'bC,EX/>Y 016&'EX/>Y 01:cz9/EX / >YEX/>YEX / >Y +X!Y 9/ а а  +X!Y +X!Y01!#!#7373!6676&'q# X w <1X% xkJyJfvmEd9EX/>YEX/>Y9/ +X!Y9/ 9 +X!Y901#'%6&'%!27'7(h{bPjw'h$rXnd[QQ{?1` r$?`T'x#()9#EX/>YEX / >YEX/>Y99 9 +X!Y  +X!Y$9%901%''&&'#366&'&27'766SRPik^3dvnDfyzi;Y aS[SSNHIm>=JPڙMWkf[`2?VB < 9EX/>YEX/>Y +X!Yа/01#!#!3 z?rIb05EX/>YEX/>Y +X!Yа/01!#!3gwY +X!Y 9/   +X!Y +X!Y01!76676&''#!$[}zVGd/0w:< 9 /EX/>Y +X!Y 9/ +X!Y01!'6676&''#!d>w[w̧$^%:5&Q:&QN>&,Q5 :&QD nEX/>YEX / >YEX/>YEX / >Y 9/_]/]O_q +X!Y9а01 #####3333 ZZ2f2x{{s1f2X:Pj4G:|EX / >YEX/>YEX / >YEX/>Y 9/o]qOq/?]r  +X!Y 9а01 ###7##33733GPJ*f+WxxT+f+Cl:: tEX/>YEX / >YEX/>YEX / >Y9/_]/]O_q +X!Y +X!Y 901##!7!33#tw{&St9UJfd."r7:EX/>YEX / >YEX/>YEX / >Y 9 /o  ] qO q/ ? ] r +X!Y +X!Y 901##!7!33#Ww|Sԟ{g I`&,Q36:&Q'F aEX/>YEX / >YEX/>YEX / >Y9|/ +X!Y +X!Y01!!!#!#3L%q8C{zz{{"fF0: ~EX/>YEX / >YEX/>YEX / >Y 9/o]qOq/?]r +X!Y +X!Y01!!!#!#32U`wVWwwUg-:BiQ9/EX/>Y9/  +X!Y +X!Y +X!Y013276676&'##!#!㑦g~{zBd(G0":?9/EX/>Y9/ +X!Y +X!Y01'6676&''#!#!Zw̪w"qΣ'`"-:y+=Y<>?9< //EX!/!>YEX/>Y!9+ +X!Y/!9!8 +X!Y01&''&'&7777&7766776&&'& ɝ #1 $ \oVhy`&(&:k k]|-(^Gz$+ BBZV3lBDqm$)=7v;HS\WKbET'4\45694EX/>YEX/>Y 9 +X!Y' +X!Y+9101&''.'&766727&&7766676'&'&{}ld$ٞ wAJ[Csz's`JrUPC' vTs2 3@l|_iF[~cɢIS`W/c&<Q:&\QIZ/EX/>YEX / >YEX/>Y +X!Yа а  +X!Y01!7!53!!!33#!%~}{dzXq=IffH7_\:M /EX/>YEX/>Y +X!Yа +X!Yа 01!7!!!33#!3wkSn9ff+ZA&Q:&Q P9EX/>YEX / >YEX / >Y 9/а +X!Y013673##7&&7B>e;z{{w/f/Bm U +P,  :F9EX / >YEX/>YEX/>Y99901!##7&&733673NwTie g!+w+ 6g4ee^x# ̿?5% 8cG9EX/>YEX/>YEX / >Y9/ +X!Y01336#6&'&8zx֬CzCzi:o;Pp!,l-.9*EX/>YEX/>Y9#9#/ +X!Y +X!Y9) +X!Y01&&'&77&&73!7!76'&&'&869 g /ZbJп) /.(%dؼsqm~z^S,XXHS (i)*9"EX/>YEX/>Y 9%9%/ +X!Y +X!Y9! +X!Y01.77&&736$!67&76&MW]V dUC{F  paBFI7t,w>g(I]O|PC9^aD O9/EX/>YEX/>Y9/ +X!Y +X!Y013#33376676&'%{{ru qne4:=9/EX/>YEX/>Y9/  +X!Y01'6676&''#333VxxT{T鰤%_#: T&:& KEX 9EX/>YEX/>YEX/>YEX/>Y9/_]]]/]O_q  +X!Y +X!Y01!3'&'7367!#wwz8>7+UutzUe}xd0E : 9EX/>YEX/>YEX/>YEX/>Y9/o]qOq/?]q  +X!Y +X!Y01!3'&'767!#cT2Uw0C1.TtdWw:mezvU:I`&,+6:&I&1^:c:&pj=%h&'9EX/>YEX / >Y 9/ +X!Y 9  +X!Y +X!Y01'&&77!76'&&'&'6667!-j⨩d  ˤT8ڡ(r ν!|Dke{]AE6cZDyN9 /EX/>Y +X!Y 9/  +X!Y +X!Y01!7!'&&73676&''7@Q 愸z tGie}k뼎kr5:N9 /EX/>Y +X!Y 9/  +X!Y +X!Y01!7!'&&73676&''7HN ㄸw rgb }jmmF&!&&DTaF:&'&&TF&<TF:&\T  R 9  EX/>YEX/>Y9/  +X!Y  +X!Y013%&&76$3%"k{2'oLdP޻|" `!"9 EX/>YEX/>Y9/ 99 +X!Y +X!Y01%&&76$3366'&'''%"&dk{pp  h҉o ޸dUUUTh|V!#1q$239$EX/ >YEX/>YEX/>Y9 999& +X!Y. +X!Y0136'3'&&''&&'&66&'&77K_-qwMD o |d㗫A@yúNUVw@*.M`q"cddbagּvkս]D,f-.9EX/>YEX)/)>Y)9/ +X!Y)9/  +X!Y) +X!Y")9016&''72676&'%7654''&&7 ntA OKogt 웅 j|iį2Y +X!Y 9 9/ +X!Y! 9!/ +X!Y01%66'&''&&776''72676&'%7u3DeNtmՊsu | u ԒADNNמvvR dl\]lcT8&I%'(9/EX / >YEX&/&>Y +X!Y &9 / +X!Y0172676&'%73'67'&7676&'  u!Hh!1,ffйt4659Q8w@n!I:#P $%9/EX / >Y 9/ 9 / +X!Y 9# +X!Y0172676%%77'67'&7676&'ԏ # zh Cc : jdfjgfO,{'+n˂6u'.*]d$B#%&9EX/>YEX!/!>Y +X!Y! +X!Y01!#77667!4'3'&&7ڃ%?ޫD *2LE s Gg*-N^l%cddbª:%I%&'9EX/>YEX"/">Y +X!Y"9" +X!Y01!'#776677!6'&'3'&&7pwV20 'j"ds{HBiTn  qݑlvii(-P`^^^^ĨNR !9/EX/>YEX/>YEX/>Y +X!Y +X!Y01674'3'&&7!#3!NCvbs 3)t{{wx*-N^4cddbBeT(:L !9/EX/>YEX/>Y9/ +X!Y +X!Y01!#3!36'&'3'&&7%VwxV0UvzHBkUn  qސ:(-P`^^^]ƨ{r#I$%9EX / >YEX/>Y  +X!Y +X!Y 901.'&77&'&6676'Au  ',b2~'(zh utՇKL_M_D;<sYZ[R? !9EX/>YEX / >Y +X!Y +X!Y01%677'3'.7762&'&{nhzR#̦a,]'Pz^tsd;C]9պgS; 9/EX/>Y +X!Yаа  +X!Y01!7!!674'3'&&7a OCvbs 읈Gii*.O^4cddbm:H9EX/>YEX/>Y +X!Yаа  +X!Y01!7!!66'&'3'&&7r}iNDhSo  nܐee+.N^WWWWѦ_ +_$,-9EX/>YEX/>Y)9)/ +X!Y +X!Y 9# +X!Y01"677'.7667&&76$77#6&'&ɸxt ku7z ge|.-i ްjFT&TF:&T|% /а/ +XY а/а/0133&&7~Iq+3B;>JZYа/@  0] +X!Y +X!Y01!7!7!7!YYfea 9/а/01#76Eiv6y{mI 9/а/01'6773GjuI8|}r 9/а/а/01'6773Cgv!7w|xL  9/а/01&&77n #I9* xHAB@1BVta&I&+ 9 /а/ а /а/а/01'6773'6773Cpv OLiw!7Ň9{zN LEX/>YEX/>YEX / >YEX/>Y  +X!Yа01!#!7!3!>]wV;w;/iv`^~EX / >YEX / >YEX/>YEX/>YEX/>YEX/>Y +X!Y +X!Y аааа01!!#!7!!7!3!!!SAyBcc;x;S`engvg  9/ +XY016632#"&5kPL[iQL\Sg_Q%Qc`LB}&B&']1  9/ +X!Y016676&_0"#-1##*!//#"./&4BQUVW9а)а6аKаTR/T/EX/>YEX/>Yа/9 ав9 а /* +X!Y1 +X!Y*8а1?а F +X!YN +X!Y016666'&&''&&7'&&77666776&'&6776&'&6776'&'&' Hs0Kt yIw`t u yq ONPuPMQtONSs OMUu RKUr (TSw 7KuDeKEEN~DIEz~CDM]vudOarvbP]vyhGar}e^s~bFQ:Ic6k0_//9/01#73_\r%z| /9/01#rUz //017'8HuDz5k1j sEX / >Y 01BM9EX/>YEX/>YEX/>YEX/>Y  +X!Y016#6'&'"#_ hxySoQM^o+(^H"p'()9EX/>YEX/>Y'9'/ +X!Y +X!Yа а'а'а//] +X!Y9 +X!Y"а$01!%!7677#737#73766#6&'&!!! W6\p z sw~\Tmahg)nYZת{Z #&)*+9а#а%а)EX/>YEX/>YEX / >YEX / >Y 9/а/]$ааа +X!Yа#ааа аа +X!Y а)ав& 9' 9013#3##!##737#733!3!'!!7!%3#@#Yw!ZzY#^v^{_ #urڠu6fffffN1J(&)*9&EX/>YEX/>YEX/>YEX / >YEX/>Y +X!Y  +X!Yав! 9!/ +X!Yа/' +X!Y01#7'&&7##'#7332676&''ybE7Aga x0fvH1w01Ԥ.>m cʨuF&6W/+#'+05:6;<96а6"а6'а6+а6-а63EX/>YEX / >YEX/>Y 9/а/а +X!Y  +X!Yа ааааааа а"а$а&а(а*а -в0 9 2в5 96в9 901!33#3##!##73'#733!337#37#3'#7#%7#3'7$Vzy y'wTlR0|+{jIfeef?q~W-:m 9EX/>YEX/>YEX/>YEX/>Y +X!Y  +X!Y 9 901#6'&'%#3673'y  4v4vЀvnKpwq˭8zJPF:7,:cI*+,9EX/>YEX / >Y* 9*/ +X!Y  +X!Yа*а*а//] +X!Y! +X!Y&а'01!7'&&77737#77&'&%!!k a|wkZ6YEX/>Y "а"/@ "" "0"]а/] ]+а+/0+] +X!Y* +X!Yаа" +X!Yа" а"ааа*а & +X!Y01##737#73723#7!67!6%%&'%27[g{+ʦ# ;\<~aQDeeueW)-e;+qn1{9EX/>YEX / >Y +X!Y 9/ +X!Y 9/  +X!Y 9ааа013##7667!7!4&''7![2.xq/34?GrimRizi& !9EX/>YEX/>Y9/] +X!Yа а аа а в9/ +X!Yа ааааа +X!Y901'"'?7737767'ԛu1JrBz8o-E5 [|[[{\wg{gg{i% qw:]9EX/>YEX/>YEX/>YEX/>Y9/а +X!Y 01#7676&'##7773 #v$v+'w"1='vnJI9=)_ !9EX / >YEX/>Y 9/ +X!Yаа а /@   / ? ] +X!Yа а  +X!Y01!##737#732#%!%2676&'%9 (а +а 99/;/EX / >YEX&/&>Y а/  +X!Y +X!Y&а/&- +X!Y5 +X!Y01'&&7766#6&'&36766'&&76776'&'&'kl wi_IGJsNECbxu xs `QMPu((MUt IuE l~MgEQy`N[yRB\N^uudOa:9}e5k0= (])*9/EX/>Y 9 / +X!Yа +X!Y а% +X!Y01&&'&77767>6?6&'&K}  lz}aSzMag ]Z,+=UQP,&q/YEX(/(>YEX/>YEX / >YEX#/#>Y а /а/ +X!Y  +X!Y +X!Y"% 9'% 901!7!'&&77666776&'&##33<F Ő x ZZ` W\a |9w|uaba9ovfky  nEX/>YEX / >YEX/>Y9/ 99в 9 а +XYа а01#33####7!O3LHI[XP]\HdOIN~(pZV,E~|Qe9 EX / >YEX/>Y 9/ +X!Y +X!Y 9  +X!Y01%'&&76$3!7&!&i}a:bՅ1 2_]t1h~+|la'T'$EX/>Y01''$EX/>Y01'!~'y$EX/>Y01'#'$6EX/>Y01K<,^-.9 /EX/>Y 9/ 9  +X!Y +X!Y% +X!Y0176&&'&'6'&&?6&74&&li5AcM Y{*қ)Xb\v{u]`hu0lح-* EpC$ (/EX/>Yа +X!Y01#!#!x%w = 7/EX/>Y +X!Yа  +X!Y01!!77!!L=BfaWf/ +X!Y01!7!-fD :EX/>YEX/>Y9 9 / +X!Y01%73##77]_}JOPf]S.=k>?9(а7EX/>YEX/>Y9ав9: +X!Y#а2 +X!Y+01&&''.7766$776&&'&%&&'&6'T /̔'~!yB `XXx@ ^Wzj;ݱ@>/2)]с~)]҃E? 9EX/ >YEX/>Y +X!Y +X!Y01'"'767662&#".G1'Xx/\80b|aa{_~s9L/*|+,9/а/ а  +X!Y +X!Y аа/а/ а# +X!Y( +X!Y#*01672267#"&'&#"6723277#"''&#"tAlc^tvN u.KTQio+AuRS61_;id1 sHNmQQ}c/:+=N}L/b(-,\/})=.p9/ +X!Yааа/ +X!Yа 01'7#7!!7!3!!ERE-j1j-j0f ^@9,SEX/>Y]01 -f"^@9]SEX/>Y]01J 8 9EX/>YEX/>Y99017# Rb_)V 0S[b'4J{*:2 9EX/>Yа/а/а/01#3#3fK\fJ]cI" 9/а/ ]а/01'6773:CXs 7jvPL~K&JJ pfEX/>YEX/ >YEX/>Y +X!Y  +X!Yа/ааа/013#73766&'&3#!#3tԤywsz3xwby;f6syb(:~+WEX/ >YEX/>YEX / >Y +X!Yа  +X!Y а 01'&#"3###73766#l>;gxYYt ub(b*(~"'+EX/ >YEX/ >YEX/>YEX'/'>Y +X!Y  +X!Yа +X!Yа&а"а'$а)а*013#73766&'"!766&#&3##!!#3C@66dՠv {pvvDfxwbctYEX/ >YEX/>YEX*/*>Yа"б% +X!Y(аа  +X!Y*'аа +X!Y013#73766&#"!7662#&#"3##!:I66f—RxXgvDbcs$(!ub((~%&'9EX!/! >YEX/>YEX/>YEX$/$>YEX / >YEX/>Y$ +X!Y  +X!Yаа! +X!Yа01#27'&&7#73&'"##737663yb=:YEX/>YEX1/1>YEX / >YOб +X!Y  +X!YаK +X!Y!1D9D$ +X!Y>1D9>* +X!Y5K1919 +X!YFD!901#7'&&'&7#7376'&&'"#6&'&'.7676''&7663'&6675t40!<7@T^t [Kq|%wlm : tlnZvyw  s] Td F@;K ci\55bJ1/MV89bylZ~6'T_LR_ewo\?3O+Zm_ŢJrD*9?EKQX\`dhlpw{@?/EXH/H>Y<+x+|{+K+ ?H9 /а/а/ а/q9|q/R +X!YRq9  +X!Y' +X!Y+а+/0а0/6 +X!Y?mаiаeа@бA +X!Ygаkаoа>а<CаHI +X!Yaа]аYаLаHbа^аZаMаKPаS +X!Yw +X!Yxа{а|ааа01'&&776766&#&673#"&7766733!7373!#%7!#73676'7!!7!!7!7!!7!!7!3676''#737#73#73%#737#73#73 `_r VBU]s _^^7&Qpb>6=S ;;8T `; jRTb[Y+7b7q$$n72//2osk RNmnlmYXx acp-pq-pp,qn-no-nn,ogy{`gx?0z`%KA/9 VKUKENSBsCNLIPN]WO_9(;qqttTHKtttttt8qqqqqqP?~~~\s $(F!/%/а/!а/ 9 /а/9/ 9/9/01 4676654&#"36632#33#3#AD$J\:+98][/KR11::'J34@4_YEX/>Y +X!Y99 +X!Y 9901!!7676&#&#66! sn I>Qdgvp?PAbS@EYLtxas6w:EX/>YEX/>Y9/ +X!Y901!#7%3[isHE^i"s$ H9EX/>YEX/>Y +X!Y +X!Y01&&7766'&'&677{{ {{atTkF>Sk x~;y:JV|i"g#$9EX/>YEX/>Y9|/ +X!Y9 +X!Y +X!Y01'&&76$!#73$6776'&&'& ' .]1 s^| x ݠNf xi]<:@hww!#/019а-EX/>YEX / >Y- 9|-/--]--]- -q +X!Y-9-9 ! +X!Y' +X!Y01'&&7667&&7666&'&66&'&6 Zbxu KS 话 s yI eq {lpg`'[fSe,%USb}mcyYw}gYt|:9EX/>YEX/>Y +X!Y901#!7!*7HG&gO$e%&9EX/>YEX/>Y +X!Y9/9 +X!Y +X!Y01#6'&&77%&676&P AJ:| ,x#_. 1oPz wh֒ӣX6u]9_`RJ]Vy\p9EX/>YEX / >Y +X!Y 9/ 9 9  +X!Y +X!Y 901!!6'&&'3676&'&tk q|i xyS:l?ΡivsS W9 EX / >YEX/>Y 9/ +X!Yа в 9 9013##!73!2x3τ@l5fI&iF'()9EX/>YEX/>Y9|/y]I]]] +X!Y 9& +X!Y&99  +X!Y012676&'&66'&&7676&''ki wqwt画 ]a t x yzg_tvf\cfqer [ 9EX/>YEX/>Y +X!Y99 +X!Y 9901!!7676&'&66!/B sjv no_|`wzaA9EX/>YEX/>Y9/ +X!Y901!#7%3wnpJ#H$%9 EX / >YEX/>Y  +X!Y +X!Y01&&'&776'&'&6776 $ $ od \V YZO*ʾ@HxB FEX/>YEX/>Y +X!Y9 +X!Y 9017!!7!7!eXEeeZgWyU1EX/>YEX/>YEX/>Y9013#3֏HxMрz_J SEX/>YEX / >YEX/>YEX/>Y999 901##37R ԄT92YEX/>YEX/>YEX/>YEX / >YEX/>Y 9 9  9017373#'#3L:nj9t{sr"ErjuvnsIPZ{r1EX/>YEX/>YEX/>Y901%73#7 (ttxTUsVN=9EX/>YEX/>YEX/>Y  +X!Y01'&&7367NŸuױ킟x;/EX/>YEX/>Y +X!Y01!#!7!(cwc&&g(f)*9EX / >YEX/>Y 9 9  +X!Y +X!Y" 9& +X!Y016/&76677#6&'&'.76 7 * v ~ iE~wzfv (A/`ƅ osaHiR%cdKVkut*c9EX/>YEX/>YEX / >Y9/ +X!Y 9 +X!Y01!##2676&''%JRv ~, yx,v) :rf J3;#H$%9EX / >YEX/>Y  +X!Y  +X!Y01%'#.776'&&'&67޸VI@U$5ڊU /; yD x,Df/\OMt, O9 EX/>YEX/>Y 9 / +X!Y +X!Y01##%2676&'%Qv ) y1gxrN7!H"#9EX/>YEX/>Y +X!Y +X!Y01.776'&&'&67鉿S$4  # y {f03\OMpNM, EEX/>YEX/>YEX/>YEX/>Y9901!##33rvrv--,`9EX/>YEX/>YEX/>YEX/>YEX / >Y99 901 3###avTfZTRvs ',)EX/>YEX/>Y +X!Y017!!3R8vee,\ SEX/>YEX/>YEX/>YEX / >Y999 901#373#Fvvj2p09EX/>YEX/>Y  +X!Y013'&&7367x矦 w xrmás|uBEX/>YEX/>Y013#3ww, OEX/>YEX / >YEX/>YEX/>Y 9| / +X!Y01!#!#3!3w\_\vv^^v \6d !9EX / >YEX/>Y 9  +X!Y +X!Y 9/] +X!Y01%'.776#&&'&7!7!>뙊X#1۲tw3KRu)srbb, BEX/>YEX/>Y 9 / +X!Y +X!Y01!#!!!.]vK1gUs*r+,9EX/>YEX/>Y9 в9 +X!Y +X!Y!в$9( +X!Y016''$766773#6&'&#7&&76 )e* v ~ }B +e+ v (AF_ɇ pt`A&e· vr!n"#9EX/>YEX/>Y 9 / +X!Y +X!Y а а в 9 +X!Y01!%!73677#73766#6'&&'&!u u . ۦx[Qs>~fd1Wkϰ43U]$o9EX/>YEX / >Y 9 9/|/ +XY +XYаааа0133!!!#7!7!7!733D&-x-%zyrWMWWSW,39EX/>YEX/>Y +X!Y01!#!v&= 9EX/>YEX/>Y9 +X!Y01!!3'!oF (,fWN5%f&'9а EX / >YEX/>Y 9|/ +X!Y  +X!Y" +X!Y01!7!&?6'&&'&67K $3  # y zfu 0f13\OMgNM8 9EX/>YEX/>YEX/>Y9013#3#''to +sf] h 9а EX / >YEX/>Y +X!Y 9//] +X!Y  +X!Y01!!7!!7!!7!Yffg,n@ 9EX/>YEX/>YEX/>Y +X!Y01!#!#!wvvx& M 9EX/>YEX/>Y +X!Y9  +X!Y 901!!77!!(T5_:,fbWg9Z !"9аEX/>YEX/>Y9/в9/@ /?O_] +X!Y а +X!Yа01#7&767736&'>%+w?v!}x$ mn  hˣ aa ] 9EX/>YEX/>YEX/>YEX / >Y 9/а  +X!Y 016673#&&'&733"6v5$9x9 4w4 svB/]fYEX/>YEX!/!>Y +X!Yа +X!Y а01%66776&'&!77&&'&$7!\ebiFI 6hs8'},teBr:-Iepn9EX/>YEX / >YEX/>Y +X!Yав 9/  +X!Y +X!Y01!7!!676676&'&#eK  cw&gglEdGP* v !"9EX / >YEX/>Y 9 9  +X!Y 9|/ q] +X!Y +X!Y01'&77>#&&'&%!*펶u* u#[o)zѮf^L~ #!}"#9EX/>YEX/>YEX/>Y9/ +X!Y +X!Y +X!Y! +X!Y01#!!'#72677!2676&'7 K U5ƛ/#n%iPV1 {u&hkw 0f{l|,9EX/>YEX/>YEX / >YEX/>Y9/_]]qrO_q]/]?r 9/  +X!Y +X!Y  +X!Y01!3#!!#32676&'^vQ/ J\|\vvW1 yvr0 yj~x\9EX/>YEX / >YEX/>Y +X!Yав 9/ +X!Y01!7!!6#6&'&#eKķ3x4ucw&ggmC@H,n P 9/EX/>YEX / >YEX/>YEX/>Y +X!Y 01!!#!3!3YEX / >Y  +X!Y 9/   +X!Y +X!Y01!'%!2676&'%?A\1vW(؍xl|oW9/EX/>YEX / >Y +X!Y ааа +X!Y01767!3#!#%!&p+^Mw;:wM-ULdc"KOh_9EX / >YEX / >YEX/>YEX/>YEX/>YEX/>Y 9/_]O_q/]q +X!Yв9 в901####33333#{^w^s"y\w\qMU8  )*+9EX / >YEX/>Y 9/_]qO_q/]r  +X!Y  9' +X!Y'9 9" +X!Y012676&'&#66'&&'&7676%'7 }v \b~R3k u} ߞsjcrtiZclQ1.]l}pf/ L 9EX/>YEX/>YEX/>YEX/>Y9 9013##3!lplqs27 g 9EX/>YEX/>YEX/>YEX / >Y9/_]/] +X!Y 901##333#^vw\ XO9EX/>YEX/>YEX / >Y +X!Y   +X!Y01#!'#736677XvU ej/$v"hs&^tkcPHD9EX/>YEX/>YEX/>Y9  +X!Y0173#&'732677LBt9*5YEX / >YEX/>Y +X!Yа 01%3#!3!3Um;mvwfKO'YI 9EX/>YEX/>YEX/>Y 9| / +X!Y01!#'&&7373.w]ƴ3v3xcxD?F+, P 9EX/>YEX/>YEX / >YEX/>Y +X!Yа 01!!3!3!3Avwv'',Y 9/EX/>YEX / >YEX/>YEX/>Y +X!Yа а а 01%3#!3!3!3Un;%vwwfKO''U a9 EX / >YEX/>Y 9/  +X!Y  +X!Y +X!Y01'%!7!2676&'%)\PهvV&g0wl|/3&/ R 9 EX/>YEX/>Y9/  +X!Y +X!Y01'%32676&'%Z\qQڅvW0xl|4 s!"9EX/>YEX/>Y9 +X!Y 9| / ] q +X!Y +X!Y90167776'&&'&#6$'&&'+  u+u* Q$׶pfXQ|sͰ,*&+,9&EX/>YEX / >YEX/>YEX/>Y  9| / q ] ] +X!Y +X!Y' +X!Y01.77#3766766'&&'&67wT]vw\fK  # z# z vI3\OMǵm~ c9EX/>YEX/>YEX / >Y 9/  +X!Y 9 +X!Y01#&&7663#!%"e_ wX2Nύ hs:y/ R9EX/>YEX/>Y 9 / +X!Yа а  +X!Y01###73!!3V]w]\KfgV9/EX/>YEX/>YEX/>YEX/>YEX / >YEX / >Y9/_]O_q/]q +X!Y9 +X!Y в9013######33333mLn;D{^w^s"y\w\qNLOU8  279/EX / >YEX/>YEX/>YEX / >Y 9/_]O_q/]q +X!Y9 +X!Y013####333SoMn>:^vw\LLO 2|9EX/>YEX/>YEX / >YEX/>Y 9/_]O_q/]qа  +X!Y 90177373###7##3T*f.7<,e)P^vr _ 9EX/>YEX / >YEX/>YEX / >Y 9 /_ ]O _ q / ] q +X!Y +X!Y 901##!7!33#e^w\'f _):;<97EX / >YEX/>YEX/>YEX/>Y9/   +X!Y +X!Y) +X!Y- +X!Y5 +X!Y01&''&&'&7677&'&76666?5&'&˓ " IY *᠏-^d\{ v6;Ks#h)BAm˰:7/r4F7Q3yU&&*J^9/EX/>YEX/>YEX / >YEX / >Y 9  +X!Y  9015###3sLo>@R ԄMOT9pj^ 9/EX/>YEX/>YEX/>Y +X!Y +X!Y а а а 01%3#!!7!!!3Tm:mewfKO&gg@'dR9EX / >YEX/>YEX/>Y 9|/ +X!Yа01!##7&&7336739w\(f)4v31f0bx5 ѷ??44,,G9EX/>YEX/>YEX/>Y9/  +X!Y0136#6&'&#w]Ŷ3w4wcwD@H9G&n '(9 EX/>YEX/>Y#9#/#/#] +X!Yа# а +X!Y +X!Y01.77&'&73>!7&!76&^ HH g  "F).5YZt4b^66I'<Ha9EX/>YEX/>Y 9 / +X!Y +X!Y  +X!Y01'&77!76&'&'667!]"N "G+'qu3b^m'l9EX/>YEX / >Y +X!Y9 9/в 9  +X!Y +X!Y01!7!'&&'&7676&''7; ? ~P5l u} &gbroY1.^l{hwmN5%f&'9а"EX/>YEX/>Y9|/ +X!Y +X!Y" +X!Y01&?67%%76'&&'& $4  #- y-: z1 0f03\- NMm OM*EX/>YEX / >Y 9/]а/@ /?O]]а +X!Yаа +X!Yа   +X!Yа' +X!Y"'901!!%!%!73677#77#73766#6'&&'&Zpx:6 h1٦x[QpW{ WL:fd)JWW<β43U]# $%9EX/>YEX / >Y# 9#/#]O#_#q#q# #] +X!Y  +X!Y а#а#а/@ /?O]] +X!Y +X!Yа 017'&&7737#736$&'&!!![P~mh 7Xcf,[ gWWg"W,p) *+9 а  а EX/>YEX%/%>YEX(/(>YEX / >YEX#/#>Y а /а/] +X!Y  +X!Y +X!Y"% 9'% 901%!7!'&&77666776&'&##33 ȍ q[Y^\Xb crvrvbA87jp|p@lu--N !9EX / >YEX/>Y 9/ +X!Yаа а /@   / ? O _ ] +X!Yа а  +X!Y01%!#7#737#73#%!'6676&'%9)x)m 1 |qfffsÛfyrl$&r'(9EX/>YEX/>Y9|/ +X!Y 9% +X!Y%99  +X!Y01367676&#&66'&&7332676''LY74OACehqp}vgVMRk Q(&=>EDAgxuavD,k}h?PQCk SEX / >YEX/>Y 9//] +X!Yа в 9 9013##7!73!|{!i"s,I'XA3(p9EX/>YEX / >Y +X!Y 9/ 9 9  +X!Y +X!Y 901!!632'&&'676&'&WsKFSm}keLBQkPJPP[$l~{dBEeWJW3$T e!"9EX/>YEX / >Y +X!Y 9/ 9 +X!Y  +X!Y01'$6'&&776$3&32676&5 ^\thwvy YEX/>Y +X!Y901#!7!!u,B(Y k# ,t-.9а$EX/>YEX/>Y*9|*/ +X!Y*9 *9 +X!Y$ +X!Y01'&&767&76626&#"3266&#"326f7B{ hqk[FOpXIPo1P?EcMAEdOxF\?kt`F8mj{s2=KTB?HS8HN@8EN8c# p!"9EX/>YEX/>Y9|//] +X!Y9 +X!Y +X!Y01#"&766#'73$'6776&#"Xrg{x{{  b>bLJNmOWXp|8U>43aqwPLb/ +X!Y01!7!Tf jU/а/а/@/?O_o]/а/  +X!Y +X!Y013#6632#"&732676&#"nd_>@O\>=SD@!;)FC^Z;@]S@R7#$2, XEX/>YEX/>Y 9 / / ] +X!Y +X!Y +X!Y01!!!!!!2OG0)YEX/>Y%(а(/ +X!Y%9/ 9 /5 +X!Y5 9%9/ +X!Y9 +X!Y%@ +X!Y01'"''.767&767&&76$2676%'6776&'&< AMV i xU/ {E@%gQ_x 7jtnvbBGSd]GxOn/Il^1U OWdn}ahgnUfQ$p %&9 EX/>YEX / >YEX/>YEX/>Y99 +X!Y ! +X!Y01'&&'&663#6776&&'&HM׃Fo{exsxn) YEX/>YEX/>Y9/ +X!Y 9" +X!Y01#2#&7676&'%2676&'%7rz h^-u+Spѹv4"^<Bn!iN> ^EX/>YEX/>YEX/>YEX / >Y9/_]/] +X!Y 901##333#wzzt:Ud."1 TEX/ >YEX/>YEX/>YEX / >Y9/ +X!Y 901##33#\w wsטkv N LEX/>YEX/>YEX/>YEX / >Y99 901#373#D|zzz \8X/!1 LEX/ >YEX/>YEX/>YEX / >Y99 901##373#\wwR,  H9EX/>YEX/>Y  +X!Y  +X!Y013#2$776&',Qc "* c&?ePIEX / >YEX/>Y 9  +X!Y +X!Y 901'&?>#&&'&)û 펶u  u#[o2zѮ|KK~ #, kEX/>YEX/>Y9/_]/]O_q +X!Y9 +X!Y +X!Y013#2676&'%2676&'',` Yd N$ wq L`'>}nbpare^i GEX/>YEX/>YEX/>Y 9 / +X!Y 901!#3#!ެst7s]*EX/ >Yа/01#76MEv*4c_~Sw E/  +X!Yа/а/а/ а /@   / ? O _ ]/01'&&727%3#S~yeQS"cdEenp`AJ9az/а//]а/  +X!Y +X!Y а|/@/?O_o ]а/@ /?O_]/01#"&#'66323673# ZE*z)ND \E)z)N"_~aaIZU\F[W^ e` `/а/а/@ /?]/9/ а /а/@ /?O]   /013#''3#rӕnIMX `///а/а/@ /?]9а// а /@   / ? O ]01#''%3#'3M~Ӕ/r\}ʫKAd///а/а/@ /?]9а/а/9 +X!Y901#'#%377676''7Rr'(f[8 pp丷tp ?: JJ?x4c///а/а/@ /?O]9 а /@ ? O _ o  ]а//] а/ +X!Y  +X!Y01#''%37#".'6632767Rr8^ T=%O$?"? X:'H'A䫫AT<Z D]7R,3 9EX/>YEX/>Y +X!Y013!#!wHvYbSv E/  +X!Yа/ а /а/ а /@   / ? O _ ]/01'&&727'3#S~yeSQ"LuXenp`BI?G/  +X!Yа/а/а/а/9 +X!Y901'.7367#77676''7? yMv;aPOHl"pA  bo4[?AJCHk I: =~q7sEX/>Y01j sEX / >Y 01!sEX/>Y01"sEX/>Y01#sEX/>Y01|$sEX/>Yа$01%sEX/>Y01!P"#9EX/>YEX/>Y99 +X!Y +X!Y01'.'&66#&&'&67"x7}yWp<ǔrt,_جIv,"_ #$9EX / >YEX/>Y 9  +X!Y +X!Y" 9"/ +X!Y01%'&&'&$#&&'&67!7!E魐 e x bwz@C]idǜ~ΌyB?xhN E 9 EX/>YEX/>Y +X!Y +X!Y013#2$776&'N_˴(XΔ훢G!06$H%&9EX / >YEX/>Y  +X!Y  +X!Y01&&'&$.'&6iw e z  $UpTo="fUQQwyЅz55 4'H ()9 EX/>YEX/>Y +X!Y$ +X!Y01%'#&&'&$.'&$~[ZIx b w ܊TpVo4H`UQw܆w{3EX/>YEX/>Y9/ +X!Y01!#7%7 v~"s=[9EX/>YEX/>Y +X!Y99 +X!Y 9901!!7676&'&>!Q {us{ Vїh~vi}\9 /EX/>Y +X!Y9 9/  +X!Y +X!Y901!7!'&'7$76&''7XLI裶)#@&g]Kd\Zë@( SEX / >YEX/>YEX/>Y +X!Yа/ в 9 901%3##!73!h9x:[u0deIFHB5c9/EX/>Y +X!Y9/99 +X!Y +X!Y901!!6'&'776&'&hrŴuϪ3~ͳqBpl̒HVrYgITa7&/EX/>Y +X!Y901#!7!)D8~qf"j e/  +X!Yа/а/а/?]а//]а/ +X!Y +X!Y 01'&&73677#"&#'6632327? urdNJIe \F*z(ND [E%m'Pgrv_DKGHH[U\GZ Ja{//а/01#3ZwSxN#$%9EX / >YEX / >YEX/>YEX/>Y  +X!Y 9//] +X!Y +X!Y +X!Y  +X!Y01!!#&77!!!!!37%&oQ$5[WF0NR )e.gif< iNL-)V*+9/EX / >Y +X!Y 9|/ +X!Y # +X!Y01'&&77>'&'76?6&'&1Gۨߊ &4&s${: 3x*!+ej@^7smibkF (/EX/>Y  +X!Y а /017'&'7677#3A.4Wu"禴f{+L,EX/>Y01>N EX/>Y01MEX / >Y 01.KEX/>Y01XO!EX/>Y01*6eEX / >Y01dEX/>Y01 SEX / >Y#018.2AJmEw:Ew:9m:ymm:& 9m:,!e"#9EX/>YEX/>YEX/>Y +X!Y9/ +X!Y  +X!Y01%676&''7&'&#66'&'>T^~ JBFuߴŘ sl2~fmc7b 7lxH !9 EX / >YEX/>Y  +X!Y +X!Y01'.'&66'&&'&6Z"yf Jt~ 9jǂ&yt;F6r-3EX/>YEX/>Y +X!Y901#!7!$~.ckJf-$f!%&9! /EX/>YEX/>YEX/>Y9 9 +X!Y  +X!Y01'&&'#36'654&&'&667ԁg-*f vq՝w8sR|RedtYR@=.2^Vajk܄FSM9EX/>YEX/>Y +X!Y99 +X!Y01%673'&?'6&'&w!q +աrs  Pw&7Ԫ~TMHff 9/EX/>YEX / >YEX/>Y 9 9  +X!Y +X!Y013#7'&&'&667&&'&Va.mwiؚ zp:VgvmNUV_滯YZl[an(KR'()9$EX/>YEX/>YEX / >YEX/>Y9  +X!Y9 +X!Y$ +X!Y0173'&'7677'&&'&67&&'&Od--e"Ǵ.!͗ zЂUh|cNZ[WYMdħ[YaqAR!E"#9EX/>YEX/>Y +X!Y +X!Y01'.77666?6&'&'&UׅV% &L{vN(O Q@`T p!"9EX / >YEX / >YEX/>YEX/>Y 9 9  +X!Y +X!Y01'&&'#3665&&'&67"]3dvcם~z~Y aKPڝ7E.3\`H`Q j!"9EX/>YEX/>YEX/>YEX / >Y 9 9 +X!Y +X!Y0173#'&&'&77>7&&'&S`/)ixg̛ zƈZdNSU&&޼?<)`\j>Sk !9EX/>YEX/>Y 9 /  +X!Y +X!Y9 +X!Y 01.776!7&!76&]+yJ?e$V6v"<yՃfouqU±2K R,-.9"EX/>YEX/>YEX / >YEX/>Y9  +X!Y9! +X!Y( +X!Y0173'&'77677'.'&667&&'&Ic--f!ɫ.{jQ*dN0mQd?UgdiNZYJ]D/Wlhv`VZVfdaql׌9&2w349а+EX / >YEX/>YEX/>Y 9 9 +X!Y! 9* 9 0 +X!Y01&&76677&&766673#''77676&#" mv]L1o }jl]Ҩa xV D$gu MCGjTLYEX/>Y  9 / +X!Yа +X!Yаа  а а01!!773%IMR8Xbv[HfBe.^/2e 9 EX / >YEX/>YEX/>Y 9|/ +X!Y +X!Y 9/ +X!Y   +X!Y 901!!!!#!!!!NGT82cf@ea+9dDehl, Y9EX/>YEX / >Y 9/ 9/  +X!Y +X!Y013#'#2676&'v&IJ ,v WƎ |Oyo!+j,-9а(EX/>YEX/>Y99 +X!Y$9%9' +X!Y01'&'#7&74667&'&&'6760 $ޜklnP1됫lim? NCL{# Ybcc`N|J8\|TC L|FIE@Ĵ,9EX / >YEX/>YEX/>YEX/>Y 9/9/] +X!Y +X!Yа а аа а01##!##7373!733!7!^w\_\vXX%v$$v"TY)_[ [e,E[9EX/>YEX/>YEX/>YEX/>Y +X!Y 9901'"'7677#330D.4Wv vrvYf}Z,--P/i 9EX/>YEX/>Y9|/ +X!Yа +X!Y +X!Y013#732!!2666'&&'%!gwt{o.xf3Ɲb+fϷyAz9/i 9EX/>YEX/>Y9|/ +X!Yа +X!Y +X!Y013#732!!2666'&&'%!gwt{o.xf3Ɲb+fϷyAz9Li/EX/>YEX/>YEX / >Y/]]9/б +X!Yв9 +X!Y01!6#6'&'&##7373!BԜvvviEvڵv!+Ҹ@95fNEX / >YEX/>Y 9/ +X!Yаа  +X!Y 01###73!7!!3zHAHBBfiiazOnEX/>YEX / >Yаа/ +X!Y  +X!Yаа +X!Yа/01!7'&&7#73#7333#!d;dB;=i` :,1w0,i>mbbf bbR;&%DP;EX/>Y 01R;&%u;EX/>Y 01R1&%;EX/>Y01&% DEX/>Y01X&%j ;Rr&%{@EX/>Yܰ01Z&%'\|B&'yIA&)D:AEX/>Y 01IA&)uAEX/>Y01I7&)AEX/>Y01I&)jAcA&-DAEX/>Y01cA&-uAEX/>Y01c7&-AEX/>Y01c&-jAId&2[D /01xG&3DGEX / >Y(01xG&3u%GEX / >Y)01x=&30GEX / >Y+01x"&3;PEX / >Y*01x&3j;G{;&9Dv;EX / >Y01{;&9u;EX/>Y01{1&9%;EX / >Y01{&9j0;$5&=u5EX/>Y 01%&EDEX/>Y.01%&EuEX/>Y/01%&EEX/>Y101%&E EX/>Y001%&Ej%7&EEX/>Y6ܰ<01%N&E'GBQ&GyVB&IDEX / >Y$01B&IuhEX / >Y%01B&IsEX / >Y'01B&Ij~9&D /019&u+ /019c&7EX/>Y019&jB.&REX/>Y01C&SDEX/>Y"01C&SulEX/>Y#01C&SwEX/>Y%ܰ#01C&SEX/>Y$01C&Sji&YDEX/>Y01i&YuzEX/>Y01i&YEX/>Y01i&YjF&]u@EX/>Y01F&]jVg&%pDEX/>Y 01%&Ep EX/>Y.01V&%>EX/>Y01%&EEX/>Y001cRy9EX/>YEX / >YEX/>YEX/>Y  +X!Yа/9/ +X!Y901!7#"&767!#3!=D H+>AHIPJمu31__I!U*[GxhP%cQ1<EX)/)>YEX / >YEX/>YEX1/1>Y  +X!Y1а/)9//?])" +X!Y%)9%/2 +X!Y7 +X!Y01!7#"&767&77'&&7>376&'&#66%677'"3D H+>AHIP Kp  xuvuZ #nB) o1__I!U*[G{##EQ\kW|oyc›W65 UqhxXr|V&'uVEX / >Y#01G&GuMEX/>Y!01|L&'&VEX / >Y%01G&GXEX/>Y#01|&'VEX / >Y*01G&G EX/>Y(01|J&'3YEX / >Y&01G&GeEX/>Y$01I5&(DEX/>Y01Uj&HQ(/01I&)pJEX/>Y 01B&Ipy /#01I&)D /01B&I /&01I&)AEX/>Y01B&I; /,01Ic9EX/>YEX/>YEX/>YEX/>Y9//] +X!Y +X!Yа  +X!Y +X!Y01!!#7#"&767!!!!lhED H+>AHIPMm`h1__I!U*[GuiBQ)1239+EX / >YEX$/$>YEX/>Y. 9./ +X!Y +X!Y 9 9$ +X!Y * +X!Y01.7766!677#"&767&76&ۂY yL>c`AFG_4H+>AHIPe`4t"ImuPC9[0%b_I!U*[GdZ°I5&)DEX/>Y01B&I /'01L&+/V /'01L &KyEX/>Y001,&+DYEX / >Y&01L &KEX/>Y/01&+VEX / >Y,01L &KAEX/>Y501,&+L d&K4Z:EX/>Y101I`7&,EAEX/>Y01.6&Lh@ /01c#&-JEX/>Y01&BEX/>Y01c&-pJEX/>Y014&p=EX/>Y01c&-DEX/>Y019&LEX/>Y01g&-oc&Mc&-bAEX/>Y 01cU&-.;D&MN !&.+EX/>Y01Ee&9EX/>Y01I/&/[K.&OCI&0unEX/>Y01;&Pur /01I:&09:&PI&0}EX / >Y01;&PQ/01I&0I /01;c&P/01Id;&2uE;EX/>Y 01.&Ru|EX/>Y01I:d&2.:P&RId/&2]>EX/>Y01.&REX/>Y01.&RGR ]/]01x&3p6P /'01C&Sp} /!01x&3EJ /*01C&S /$01x+F&3GEX / >Y-ܰ)01Cr&S /#ܰ%01F;&6u; /01.2&VuEX / >Y01F:&6,>R&VF/&6>EX/>Y01.<&VEX / >Y01-G&7uGEX / >Y+01.&WuKEX/>Y)01-=&7GEX / >Y-01.&WVEX/>Y+01-G&7y.EP&WyT-+&7?.)P&W-;&7J /-01.&Wc /+010&8.W0zO&XK&8yWKzO&Xy+&8:EX/>Y 01W2G&XN /]01{&90D /01i&Y / 01{&9p+D /01i&Yp /01{&9:> /01i&Y /01{r&9@ /ܰ01i7&Y /ܰ!01{ :&9; /ܰ01i&Y /ܰ01{"c#$9EX/>YEX/>YEX/>YEX/>Y9  +X!Y +X!Y017#"&767.73673{H+>AHIPi2]y!&6%]\I!U*[Gf[|$ưic:$y%&9EX/>YEX"/">YEX / >YEX/>YEX$/$>Y  +X!Y$а/"9 +X!Y01!7#"&7677'&&73673GD H+>AHIP㙖tvs`Txx1__I!U*[G{|׿H65\dybK1&;;EX/>Y01&[?EX/>Y01$+&=5EX/>Y 01F&]KEX/>Y01$&=j5;&>u;EX/>Y 01&^u?EX/>Y 01&>;EX/>Y01&^EX/>Y01/&>>EX/>Y01&^WEX/>Y01CA&u#AEX/>Y01k&uEX/>YC01)w&uDEX / >Y401=t&uIEX/>Y)01 &0&Cn/]Oq_]01 &0&Cn/]Oq_]01x;&&Q&3D / 01&3un / 01&3yEX/>Y01&3&EX/>Y01&3jT&3"EX/>Yܰ01k&3'PF&1yx,&(DEX/>Y 01,&(uYEX/>Y01,&(dEX/>Y01,&(joB&DEX/>Y01B&u9EX/>Y01Bq&EEX/>Y01B&jP,&&EX/>Y 01N7&DEX/>Y#01N7&uEX/>Y$01N7&EX/>Y&01N7&&EX/>Y%01N7&jVN&DEX / >Y01VN&uEX/>Y01VN&EX / >Y01VN&jyU&uSEX/>Y 01&3p&EX/>Y 01&3 EX/>Y01cy9EX/>YEX / >YEX/>YEX/>Y  +X!Yа/9/ +X!Y901!7#"&767!#3!D H+>AHIP?ެsa1__I!U*[G{)s]P&1uEX / >Y!01P&1EX / >Y#01P&1]EX / >Y(01P&1 EX / >Y$01, &0S EX/>Y01,&(pj&EX/>Y 01,&(y EX/>Y01,&(,EX/>Y01,c9EX/>YEX/>YEX/>YEX/>Y9//] +X!Y +X!Yа  +X!Y +X!Y01!!#7#"&767!!!!2O:D H+>AHIPG0)Y01\6&EX / >Y$01\6& EX / >Y#01\6&fEX / >Y)01\.6&(,&EX/>Y01&P&EX/>Y01B&pK&EX/>Y01B&Z EX/>Y01}c&B& EX/>Y 01e&9EX/>Y01,6\&,&u%EX/>Y01,8&,&EX / >Y01,& /01,&uEX/>Y 01,6&8,& EX/>Y01N7&p&EX/>Y#01N7& EX/>Y%01N&EX/>Y(ܰ$01*&uLEX/>Y01*8&*&d EX/>Y01&ubEX / >Y+01&mEX / >Y-01I&yU&z EX / >Y.01x1;&x;&k EX/>Y 01xL;&yCVN&&EX/>Y01VN&p& /01VN& EX / >Y01VNT&"EX/>Yܰ!01V& /ܰ01VN!c"#9EX/>YEX/>YEX/>YEX/>Y9  +X!Y +X!Y017#"&767#&&7367NwgOH+>AHIPzu*Gf4I!U*[Gmaױ킟2&]EX/>Y01yU&^EX/>Y 01yU&ji&uTEX/>Y 01&'EX/>Y01&l EX/>Y01R4&%5&)`6&,3&-r4&3>4&=dx4&J(k& EX / >Y&ܰа&01R%I&I)>I`,c-I//I1Id2x3I48$=<c&-jA$&=j5V &aEX/>Y*01-&EX / >Y*010a&4EX/>Y01x&EX/>Y01ok& EX / >Y/ܰа/$014*:CQS` :vq:ZU0Cg 9EX/>YEX/>YEX/>YEX/>Y9  +X!Y9 +X!Y0137#''#'&'76@Y#C'(/}>gJp&XA,CPL(=xg N{=zd M&jOo&jbC&S!EX/>Y#01o&EX/>Y01p&@EX/>Y,01I&)jAJA&uAEX/>Y01-(_EX / >YEX/>Y 9 9  +X!Y +X!Y# 9& +X!Y016/$7>#6&'&'.736> e { o zPmXEyt_q{g6JΑx^pÀc-c&-jA:.N>,I/ &/u EX/>Y01qA&DEX/>Y01R%I&JI)Ma&nDEX/>Y 01I1I`,x3N[I4|'8<%QEBQI6&EX/>Y 01CQS`TTGQFEX/>YEX/>Y +X!Y99 +X!Y01%673'.77>'6&'&vqO Osqt|`Pv+iƙYئ}꜡F:]:\B&Ij~5{&uEX/>Y01.PW;M9&jBDN5 &uUEX/>Y01F&]`EX/>Y01K;&;DQ;EX/>Y01&[DEX/>Y01K;&;u;EX/>Y01&[u4EX/>Y01K&;j ;&[jJ$5&=D15EX/>Y 01F&]DEX/>Y01Bo ;e6{&E&F /01II;&1u;EX/>Y01(q&QuEX/>Y%01R&%S%Q&EIA&)D:AEX/>Y 01MaA&DAEX/>Y 01B&IDEX / >Y$016&DEX/>Y 01gE;A&HEX/>Yܰ011&EX/>Yܰ01CFOQ&S]cxF 6&3]J-R&Q)SP&Q|R&'QGRQ&GQE$=a:c-5&DEX / >Y01&\EX / >Y01c-V&%>EX/>Y01%&EEX/>Y001X&%j ;%&EjCkSI&)DEX/>Y01B&IEX / >Y&01j=&Xj4Q4&j5&jA&jR-&jV)&jSMa&p_JEX/>Y 016&pEX/>Y 01Ma&jdA6&jx&3j;GC&Sjq?Qq&jP<?&jn&j?W=&jwqA&p JEX/>Y01F&]pQ EX/>Y01qA&jAF&]jVqA@&dAEX/>Yܰ01FF&]EX/>Yܰ01&j7A&jOKT&'-zjA;~&'jeUZHR&%%Q&ER&%X /01%u&Ek /<01q&%7 8EX/>Yܰ01%^&E7EX/>Y0ܰ601R&%8?EX/>Yܰ01%\&E8EX/>Y0ܰ501?&%98EX/>Y ܰ 01%&E9EX/>Y0ܰ401Z&%:EX/>Yܰ01%&E:EX/>Y.ܰ701R1&%';EX/>Y01%&E'EX/>Y101R&%<A /ܰ01%|&E< /0ܰ:01R&%5A /ܰ01%}&E5 /0ܰ:01R7&%=C /ܰ01%&E= /0ܰ<01m&%PK /ܰ01%&EP /0ܰ;01V&%'>EX/>Y01%&E'EX/>Y001I&) BQ&IfI&)^ /01Bt&IS /201I&)J /01B&I~ /.01I[&)7>EX/>Yܰ01B]&I7EX / >Y&ܰ,01I&)8EEX/>Yܰ01B[&I8oEX / >Y&ܰ+01I)&)9>EX/>Yܰ!01B&I9rEX / >Y$ܰ801I&):%EX/>Yܰ01B&I:kEX / >Y$ܰ-01I7&)'A EX/>Y01B&I&sfEX / >Y%01c&-z^ /019Qh& /01!&-@&M x&3CQ&Smx&3d /601Ct&SW /001x&37=DEX / >Y*ܰ001C]&S7EX/>Y$ܰ*01x&38,KEX / >Y*ܰ/01C[&S8sEX/>Y$ܰ)01xp&39/DEX / >Y(ܰ<01C&S9vEX/>Y"ܰ601x&3:(+EX / >Y*ܰ101C&S:oEX/>Y"ܰ+01x=&3'0GEX / >Y+01C&S&wmEX/>Y%01#=&u:=EX / >Y001?&uEX/>Y&01#=&D=EX / >Y/01?&DEX/>Y%01#&%ZEX / >Y.01?t&nEX/>Y$01#&PFEX / >Y101?&EX/>Y'01#&?&i{&9i:&Y&{&9XEX/>Y"01iu&Ye /$01{eA&uAEX/>Y01i#&u}EX/>Y01{eA&DtAEX/>Y01i#&DEX / >Y01{e&^EX/>Y01i#_&hEX / >Y01{e&.JEX/>Y01i#&EX/>Y 01{e&i#&W$&=+:&]c$&=R /01Fu&]+ /01$&=> /01F&]V /01&H'&;Cd &]/&]01&8Qg:&Qv&Q :&QJ&Q5{:&Q|pC&LQ[HS&MQ.LCGt9EX/>YEX / >Y 9/ +X!Y 9/ а а +X!Y  +X!Y01!#!#7373!2676&'4B$İ(z(+}jUgڷgfCGdEX/>YEX / >Y 9/  +X!Yв 9/а +X!Y  +X!Y01!#!#7373!2676&'4B$İ(z(+}jUgڷgf; KEX/>YEX/>Y 9 / +X!Yа а  +X!Y01!##73!!!{z{qV$_Q=fi{: KEX/>YEX/>Y 9 / +X!Yа а  +X!Y01!##73!!!BWwWSB@ fgGR}9EX/>YEX/>YEX/>YEX / >Y9/ +X!Y9/  +X!Y 9 а01!33####733!4:-wz.z.C."UCfE s9/EX/>YEX / >Y9/ +X!Y9/9/  +X!Y 9 а01!3####7373!jsטk\w׹"w"$ f$Z 9EX/>YEX / >YEX/>Y 9/ +X!Yаа/ 901###73333o]z^É!8f0Wa:]EX/>YEX / >YEX/>YEX/>YEX/>Y +X!Y 9а01###733733GxHv&efMVH(lEX / >YEX/>YEX/>YEX/>Y 9//]_] +X!Yаа а 01####73333Z4,Hzffn:rEX / >YEX/>YEX/>YEX/>Y9//?]o] +X!Y9а в 901####73333_v8fK$-M&*&[s ]01Gzff@&9b~MC~*V&+u$VEX / >Y%01L &KunEX/>Y.01Id;&2D;EX/>Y 01.&RDEX/>Y01R'&%9EX/>Y ܰ01%&EEX/>Y.ܰ201I-&)v?EX/>Y ܰ01B&IEX / >Y$ܰ(01n-&-'?EX/>Yܰ 01 &EX/>Yܰ 01x3&3EEX / >Y(ܰ,01C&SEX/>Y"ܰ&01F'&6j9EX/>Yܰ01.&VtEX / >Yܰ01{'&99EX / >Yܰ01i&YEX/>Yܰ01gV4&d3I&&p -&FrI&( UZ&HI:&(%U0Z&H(I`&, .&Lk I/ &/u EX/>Y01.@&Ou@ /01I,/&/d.$&OB\I&0 &P I&1 (qR&Q Id&2 .P&Ra x&36cEX / >Y*ܰ;01IA&4uAEX/>Y01`&TuEX / >Y%01F&6 R&V-&7.P&WH&8WzO&X{&96WEX / >Yܰ'016&:JEX/>Y 01q&Z;EX/>Y 016&: q:&Z# K&; ;&[ &> :&^< :&3Fq2&3*&(<&<&<<A& &<NX& 23,2,(,B,\,,N7,x;yUJB&jPyU&ji,&(jo,&uL /01BB&jP,\&uJEX/>Y01PH&y EX/>Y013,2,,(/& EX/>Y 01,,N7,n,P1x;JQ)*+9EX / >YEX/>YEX/>Y 9/_]O_qq]/]r  +X!Y  9' +X!Y'9в 9" +X!Y012676&'&#66#&&7676%'7 }v \b IwI u} ߞsjcrtiZc`l}pf,9/EX/>YEX / >YEX/>YEX/>Y 9 /_ ] ] q q r qO _ q ] / ]? r +X!Y +X!Y01##!#3!33w=h\_\vv^^vjc QU) `!"9EX/>YEX/>YEX/>Yв9 +X!Y +X!Y 901#&77>#&&'&'HwH펶u  u#[od!zѮ|KK~ #yU9RG&Q{/&p& / 01PH&pj&EX/>Y01ZB^&&su&uu-&2&D2&uR2&jhyU&DcR&%Y%cQ&EIm&)1 BeQ&Ic&3,k&(m:& X `````<v #Q:Q@ v/AM E E ! s a ; ` Z{b._(Dc`. \9a7fE5(l4m ! !!!"5"##%###$$>$$$$$%_%& &&'j(@()5)*%*++++y+,,d,-a..D./+/00|01111122:2223+3s33334"4C4`44455566L67 7h78e899:(::;Z;;C>??q?@z@AgABTBCWCCDODEEEF+FqFG'GoGGH[HIIJ,JK KKLLMMIMMN3NNNOOPPQPPQaQR8RS2ST?TU4UUVRVW5WXdXYYnYZ[Z[l[\]N]^@^^_J_`apabbc>crccccde]exeffkfg"gQggghhhh~hi?iiijjejk kl'l3l?llllmHmmndno2o|ooppop{pppqqqqqqqrrRrsMst@tu uquv;vwwWwwxwxxxxxxxxxxxxxxxxxxxxy!y>y[yzyyyyz*zzzzz{|||0|D|}}~f~rUƀW {c܃kӆQżpψ$1^GӋUUBבM5(eRʘJeIʚ;ʛ{0vYƞ,H} I.kAse8i$zʪ gI0íXu8?ñ3J鲡ش cPbʷ\.\ 1EWnT|a;K&7H[n,0U5]ŭqo<ȫY ,DP\sʊʡʭ'>Ulxˏ˦˽%Uayڅڑڨڿ #/F]tۋۢۮ,Cܲ$:Pg $;G^uތޣޮ .EQhߖ߮ 6BXd{FNV^fnv~ #+3;C 0 ,4Ukw -E]u#6I\o -?Ph (BTfr~1H`w6Mdp|0G^u(4@KWckA00 (08@HPg~ $pyjECkZ&gv9\J)H)qsL\=f{Vc39@4$ yF\/JV5D9xj-sb?R{i 4`5&[Qrje* 4RJrCqaNa_m hV\>B-\0|}^xOPr\0VZA0o\XXgop~[3`$])~:jKHJB-M}qRD49GZG wKC)naOCa;O5})f65h:f6f6gXu6+26D0b;1;0=Y:AL.0T6].f6}mn06b8"tY]/0ma;9Cqm?Cr\A<`}mn~VU&#>;JMz60:EkJBo0J0$:Nb5D;4N(rIp6F0B0yb\25/N/8pD"4{K\0Iy6I:xjDtmva| "V*j-INs({[)_}\f);-;-kk`k\`IOziBBZ]Y_Y jNycJ(F-WI]In&#=B~CxK$$wFD=]i9Up JbD{~5pD~v~v~~T)5\w"i!O\ J  y#,{nV xJ*J),N,,,A,B,\,$,,N,,@Z4p`P ,:x,*//*2P,5Y,9,Uo//\4",V0L22__:ykp5d5,q9<N,($C 8P ,!U&KN1 N1g,`P%,<9NdIh,qlj|=XNi=FSa"N-XXXX.XX*XdX X8X29y9%,lrV-FaH_(iA^eH >X2q9,,,B-=/=/jL|tItItItIccccIJxJxJxJxJx${${${${2%2%2%2%2%2%2% G B B B B9999M.cCcCcCcCcCMiMiMiMi2%2%2%| G| G| G| GIUtI BtI BtI BtI BtI BXXXXXXXXIL.cc4c9ocjc;OI.!I;!I!I];!I;IM.IM.IM.M.JxcCJxcCJxcCF.FF.-.-.-.-.-.WWW${Mi${Mi${Mi${Mi${Mi${MiJ)\=gg x<<<<<<<`P,,,,BBBB,NNNNNnVnVnVnV y<<<`P`P`P`Pg,,,,,,\\\\,BB}BA,,,,,,,,NNNJ*J*J* x x xnVnVnVnVnVnV y y   t^r3^(ItIIcIIIJxIchVB-\0^x0o@4cC\q^M0ocC0ooptIRJ-ccONIqIRJtIMIIJxNI|2% Bf6cCW G BO5.;95\D6kI(2%tIM Bf6mXgC x-)| Gcc2%2%tI Bxj 4 4-)Mf6Mf6JxcCCqm?Cqm?)n0=qqq4+K;ZU2%2%2%2%2%2%2%2%2%2%2%2%tI BtI BtI BtI BtI BtI BtI BtI Bc9!JxcCJxcCJxcCJxcCJxcCJxcCJxcCsb?sb?sb?sb?sb?${Mi${MiR{iR{iR{iR{iR{ixg4+RJO5pL.CCR;OGEWB-gW&W9WWk~Mk~XXIM.2%tI BJxcCF.${MigIW-IZUIZUIL.I.I.!II(IM.JxIWF-.W${qq<<I<%,, ,BA,,,N), x y#B y,,BBA,P<%,,,/,,N,),`P x#,`Q yq9/P@ZB y2%tI B<,l ;f 6Y,33fP [ GOOGf :                 nt ~%'0S_g~7Y #%/EOboy?M    " ' 0 3 : < D t  !!!!"!&!.!^"""""""+"H"`"e% &(1T`h7Y #&0FPcpz>M    % 0 2 9 < D t  !!!!"!&!.!["""""""+"H"`"d%eD# (%^S~|}rsolkiaYP!ߔyMߪެߞߝߖߓ߇kTQ 222tt~lt0Rb{z|  }~+,-.   ()*+,-./012345678wxLM}~NOPQRSTUyzVWXYZ{|[\]^_opv   ~xcyo{z%&&''|(01127889@ABCIJKLQRST_`a befg}h~+ 77YY  ##      "#$%%&/0014556899:=>>??@ABBCCDDEEFOPPQQRRSSTTUXY[\\]]^^_abbco pqruvwxxyyz(,159wCL}NyVXY{[_`o>?pMM r }         " % ' 0 0 2 3 9 : < < D D t t      v    !!!!!!!"!"!&!&!.!.![!^"""""""""""""+"+"H"H"`"`"d"e%%,K PXYD _^-, EiD`-,*!-, F%FRX#Y Id F had%F hadRX#eY/ SXi TX!@Yi TX!@eYY:-, F%FRX#Y F jad%F jadRX#Y/-,K &PXQXD@DY!! EPXD!YY-, EiD` E}iD`-,*-,K &SX@Y &SX#!#Y &SX#!#Y &SX#!#Y &SX#!@#Y &SX%EPX#!#!%E#!#!Y!YD- ,KSXED!!Y- ,*E- ,+E- ,' SX@cTX*pY#SX TX*pYYY- ,@ ZX+D+DY- ++ + + :0)+mYF2+~gP8+v`F2+dN:+G:)+w\:#+mYE2+QB4%+ 9/$+ w\:#+ v`K6+ gJ,++ E}iDsPttpu?s_ss/tOtottttu?u_uusousst_tttt?u/ so s/(s?(s*hZ`VNnN`F`9 ! :[ ^ ^  v & & & $ @ 2 > &R \x T  ( 4Copyright 2011 Google Inc. All Rights Reserved.Roboto LightItalicRoboto Light ItalicVersion 2.137; 2017Roboto-LightItalicRoboto is a trademark of Google.GoogleGoogle.comChristian RobertsonLicensed under the Apache License, Version 2.0http://www.apache.org/licenses/LICENSE-2.0RobotoLight Italicjd(Y%>E^yy  "$%*+3466;<ADGHKMQQTX]^bbddhhjlnnpp  ((++--03_cz|  ,$%&'y 2LDFLTcyrlgreklatncpspkern $H %&'()*+,-./0123456789:;<=>eg/3579;ACEIKLXYz{}   "$%')+- }  :44^67497zd88788898D  89X9469 F7\8f5 8:8:8:78f8|9v&5<9v@8f956969v8:xjp55!8"`#^4%885B888&585(@)))*5+n5<3F+-r8f11:3$3$8f2p23$3$3$679X9v3F8f5545<777845<889545<43p444:44`:499:9999949499998666666647z7z7z7z888889999967\7\7\7\7\7\7\55558:777779v9v67\67\67\444497z57z57z57z57z588:888887888888:88:88:8:9797978|8|8|888969v6999:::9999999:::::999:94444::::67z8896677z98878898D864868:79v77z588775B6757z8898D4847\578f9v5<559v99969v44488:67\7z59X9v469v845<867\67\7z55545<9778f5B9v5B9v5B9v67\67\67\67\67\67\67\67\67\67\67\67\7z57z57z57z57z57z57z57z58897979797979797769v69v69v8558:557688:67\7z8978|78f9988:77888:88:98D8f8|89X9v9X9v9999:99:99:: %*,- /6 88:?EFIJLL OO!QT"VV&XX'Z](__,-./0589;=@HITdehjm  p  qr""u.0v35y77|99};;~CDTTVVXX\^0033EEGHz{}}  "%''))/8CGMOTTeimoxx!"(89:;<>@GJPRVXYZ^deghrt  xz{FHHJW__puww{| 89Ew:;= "$prt %V.8EGHIKSUVYZ]VV V"9BE`ak3VVVVVVVVVV#2345678MNOVVVVVV V V!"V#$V%&V'(V)*V+,V-.V/0V12V34V579;=?ACEKMOQSUWY[]_acegikmoqsuwV38:;=9E3 "$2345678MNOprtw8:=9E"$prtw.9bdM  AGHIKUa"B`ak79;=?ACEY[]a@GHIKU"B`ak79;=?ACEY[]aS KMOQSUW_.9bd  Z]#qsu?'+35 !AjEFHI-  JLNPRTVXZ\^`@'+35!AjEFHI-  JLNPRTVXZ\^`8%<= 3C]"$ "$&(*,.024prt(%  "$&(*,.024GHIKQRSTUYZ]"+6<>BSUW\`ak#  79;=?ACEKMOQSUWY[]_acegikmoqsu|| GHIKUYZ]"B`ak#79;=?ACEY[]acegikmoqsu< JYZ] #cegikmoqsuAGHIKU"B`ak79;=?ACEY[]a:m  GHIJ KSUZ ]  "B`ak        13  # 23456789CDEFGL MNOPQRSZ[\]mnostuvx               79;=?ACEKMOQSUWY[]_aq s u       \^4D^&(* \^4D^&(*"Z\]^4D^#&(*qsu 8:<=QRTZ\]  +3469:<>CDEGISUW\]^bcdlm"#$ pqrstuwy|(8Z]  9:ELcm#qsuw?8:<=\349:CDEGI]^bdlm"$prtwy%'+358:= !9AEGHIJMPQXbdfjlnopEFHI"$-   "$&(*,.024JLNPRTVXZ\^`prtwyz58:<=39CEP]bdflo"$prtwj%8:<=  39:CEGHIJLPQ]bdflmop"$     "$&(*,.024prtwyz18<=39CEPQ]flop"$prtw$8<39CEPQ]fopw8=9E"$prtw9QRT\  +46:<>DSUW\^m |# Z] :m#qsu :HJmzvGHIKSU"B`ak19CDEFGPQRSZ[\]mno 79;=?ACEKMOQSUWY[]_a EGHIJ KSUZ ]   "BQ`ac e kp        13  # 23456789CDEFGL MNOPQRSZ[\]mnostuvx               !#%')+-/13579;=?ACEKMOQSUWY[]_aq s u        :HJQmpzMG H I K U :   " :B HJQ` a k mp                               7 9 ; = ? A C E Y [ ] a z   "Z\]4DQ^p#qsu    :PJcemL  (L O P SW[     KMOQSUW_   LxLx[  AaM:JLMXb d mn1.08@JM_il :ILbdlm/Vm[m|}+KaFRIh < .0<8:j@IJ L?MX_c1e_i lm0n AJVXam| 1#X[:IQJ{LMXbudlOm  :cemJ[   :cm l[  :JXcemn1[T1IJLbdlX_:mJX2[3V[m|(M~gejs^t}y}  .08}:@J|LMlX_kcei{lmn1 AVa1J  A Va1[1l1  h&% x -&~| v8{q?;QyVD3DK>,r'jzb m %),4 8>EGIILLQTVV"ZZ#\^$'()-./02347>?@ABD  F  GH.0K35N77Q99R;;SCDTTTVVVWXXX\^Y\cefgilm00p33qEErGHsz{u}}wx  "*/8CGMOTTeimoxx  "#$%&(25;BDEFJPQS_a  eghFoHHJW__bbddpuww{|t !!%%&&''(()).. // 0033448899 ::;;<<== >>EEFFGGIILLQRSSTTVVZZ \\]] ^^"  %      ..//"00334455 77 99 CCDDXX\\]]^^!!!# $ 00 33EEGHz{}}             "" ## $$ %%&&''(())**/0 11#28CG MOTT eefi$mo xx#     "  %"           % % %   !!""##$$%%&&''(())**++,,--..//00112233445566778899::;;<<==>>??@@AABBCCDDEEJJKKLLMMNNOOPPQQRRSSTTUUVVWW__bb dd pp qq rr ss tt uu ww{{"|| "        # ##       " !   !$     #         $    #"      " " " !   !        bDFLTcyrlgreklatnH .AZE CRT FRA ZMOL NAV ROM TRK      c2scccmpdligdnomfracligaligaligalnumloclloclloclnumronumpnumsmcpss01ss02ss03 ss04ss05ss06ss07$tnum*        60nL`tflq3210(sutvrwR   ; /0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwyxz{|}~    %&'()*+,-./0123456789:;<=>eg/3579;ACEIKLXYz{}   "$%')+- } q3210(ds0ut/rwR   ; v123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abdefghijklmnopqrstuvwyxz{|}~    EFGHIJKLMNOPQRSTUVWXYZ[\]^0468:<BDFJMZ|~   !#&(*,.~ *BZrMxN`H0I$'a_bc` MNI26rJd~"<N$.8J| <Fh.8BLV( &,   &,68:  &,HF  $$*06JL   $*06bd  $prt % &,!  &,79;I  $ &,KM    &,ce  $qsu &+-,. $G $X`Z\^ $Ya[]_ $fnhjl $goikm%)+-/46;=>EIKMOTV[$]^*,-./015     OX{@JMMJPPJ*  JXXJWKo6,- .//O EGFHIghijklm '(+35FGHKSTU nooIKj.Z^XUWV[Y]\OJKLMNSeff pp  .pfLNMKOeSJU^ .[]^XUWVY\ZJKLMNOSefp.pfJOSSU^ eel%<  !"#$% >zst?@ABCDyubioath-desktop/fonts/Roboto-Medium.ttf000066400000000000000000005172101412677075700207310ustar00rootroot00000000000000 GDEFB!dbGPOSnK#e.GSUBYOS/2決<`cmapwXFcvt 1K \fpgm$gasp!X glyf/,h name>mRhpostmd!8 prep)Sd( o 9 а а  а  EX/ >YEX/>Y9999 ܲ 9 901!!!!5!(<6 }wx^^^ <9EX/ >YEX / >Y +X!Yа/01#!462"&~JJHH9KK97JJe@ %EX/">Yа/а/а/01#3#3#-#w} } `EX / >YEX/ >YEX/>YEX/>Y 9/ +X!Yаа а / +X!Y а аааа01###5!#5!3333#3##3#LL:NNNN:Lv:f9``Ǟf89d-&,*-.9EX / >YEX / >YEX#/#>YEX / >Y 9 +X!Y #9  +X!Y'# 9#* +X!Y014&&'&546753#4&#"#5&&533263lFʭqa`lkd6Ϲtrw|UoY&}~haWi^PgZ~nc '59:;9аа(а66/8/EX/ >YEX%/%>Y а / +X!Y +X!Y%а/%+ +X!Y2 +X!Y014632#"&5326554&"4632 &5326554&#"'cM?>LM~K諪O>@IN=>M}}HEUUIIEVWGІGDWSKKFTTJHrHV%1.239.а.EX / >YEX/>YEX/>Y  9( 9 (9( 9 9999 +X!Y9 / +X!Y01467&&54632653!' $2777654&#"VnUCа\ic=~RP{kxgo>VBGTetkFǻ[LHxau#Rw[ue~TL7V9Q`R EX/">Yа/01#3 y1_9/ /0147&|00{PGBkIV%|BI(1Q_9//01'65''7Qz00@cAt2Ɋ>yMt EX/ >Y/  /01%73%'L7.)6ȑXuXsXj fD*  /а  +X!Y01!!#!5!3|~!O]  9 / +X!Y01'66753:+iN[FjG T/ +X!Y01!5!T   # 9EX/>Y +X!Y012#"&46DJJDALJM:9KJtM/EX/ >Y01#3=}-i" H9EX / >YEX/>Y  +X!Y +X!Y01#"532'4&#"3267"pzwprzupe71::Ϳȹ:EX/ >YEX/>Y9/ +X!Y901!#5%38zQ@P9EX/ >YEX/>Y9  +X!Y9 +X!Y01!!56654&#"#46632!@-iYucvy{uOh}vռmO)q*+9EX/ >YEX/>Y9/q]?q +X!Y( +X!Y(9" +X!Y0136654&#"#46632#"$5332654&##pmpb~wՄ}cx}mqGrlhsq[pgb,)z`xxrs|4X JEX / >YEX/>Y 9/ +X!Yа в 9 9013##!'3!t}DW` :m9EX/ >YEX / >Y +X!Y 9/ +X!Y9  +X!Y9901!!632#"$'332654&#"O(e |dp}yB\6:jq#3u7e !9 EX/ >YEX / >Y +X!Y 9/ 9 +X!Y  +X!Y01#632#"5!"26&auu^P~{BSIZKJE63EX/ >YEX/>Y +X!Y901#!5!6E)h"!+w ,-9 а $EX/ >YEX / >Y) 9)/)q +X!Y)9)9  +X!Y% +X!Y01#"$5467&&546324&"264&"26n_r{|p^mӁ}{nlmm0k05tu20klmk|_{uedvv]!g "#9 EX / >YEX/>Y 9|/ +X!Y 9 +X!Y  +X!Y01#"546632#536626754&"zt֍#I#}~a ېDvbTJ_ĭQ&Q.Q'Q?N9EX/>Y0156NEwutd'/а/ +X!Y +X!Y01!5!!5!^^ N9EX/>Y01%55`|<#` $%9 EX/ >YEX"/">Y +X!Yа/9  +X!Y 99014667654&#"#66324632"&^B(]ZVi{BJ?@JHG(=G^caS̷yK;IK97JJ[;6B;CD9;#*/3/EX/>YEX/>Y3939/: +X!Yа3 +X!Y*# +X!Y@ +X!Y01#"'#"&766323267!"3267#"$'&$323267&#" ޾=3JnTW4fѲ T@&=i[^ g JQ6`-2/oߚLLɣ*Bۮq("(1&e_SB GEX/ >YEX/>YEX/>Y 9 / +X!Y 901!!3!!v&'SP\p !9аEX/ >YEX/>Y9/q +X!Y9 +X!Y +X!Y013!2#!2654'%32654&##lhvwv{d, |9vikbl`fB9EX / >YEX/>Y  +X!Y +X!Y01#"$'54$32#&&#"3267&0Ɉ: H9EX/ >YEX/>Y  +X!Y  +X!Y013!2#326754&#+ŦIƪQL QEX/ >YEX/>Y 9 / +X!Y +X!Y +X!Y01!!!!!!HLV@n1 BEX/ >YEX/>Y 9 / +X!Y +X!Y01!#!!!`JiOjX  9EX / >YEX/>Y  +X!Y +X!Y 9/ +X!Y01%#"$'5!2#!"327!5!O買<*DZR(gj5rJspX MEX/ >YEX / >YEX/>YEX/>Y 9 / +X!Y01!#!#3!3uy^EX/ >YEX/>Y01!#3-09EX/ >YEX/>Y  +X!Y013#"&533265smfytuw SEX/ >YEX/ >YEX/>YEX / >Y9jz]9eu]01#37!!62<u:U{&)EX/ >YEX/>Y +X!Y01%!!3njnEX/ >YEX/ >YEX/>YEX/>YEX / >Y9eu]9jz] 9j z ]01 !###GRS\Pa  L 9EX/ >YEX/ >YEX/>YEX/>Y9901!##33w  fH 9EX / >YEX/>Y  +X!Y +X!Y01#"$'54$ 4#"325d@RFT O 9  EX/ >YEX/>Y 9 / +X!Y +X!Y01#!2#%!2654&'!-0~xv`#H$%9 EX/ >YEX/>Y +X!Y  +X!Y01%#"$'54$324&#"325v=FYÔ @RFU\9EX/ >YEX/>Y9/ +X!Y 9а +X!Y01!#!2!!2654&'!~G1֒5 puJ'f()9EX / >YEX/>Y 9 9  +X!Y +X!Y" 9% +X!Y014&$'&54$32#4&#"#"$&53326h|T`w`hjA}ɰp~rj_PkepuΉ|k-/EX/ >YEX/>Y +X!Y01!#!5!:>}=9EX / >YEX/ >YEX/>Y  +X!Y01#"533 $3 2489EX/ >YEX/ >YEX/>Y901!#!r=sP0 ` 9EX/ >YEX/ >YEX / >YEX/>YEX/>Y99 9013##33 hHP'F) SEX/ >YEX / >YEX/>YEX/>Y999 901!!!!2$HG$."1EX/ >YEX/ >YEX/>Y901!#!oOhP FEX/ >YEX/>Y +X!Y9 +X!Y 901%!!5!5! ʤ@̠$// +X!Y +X!Y01#3!!hd/EX/ >Y013#` '// +X!Y +X!Y01!!53# f.W55'9EX/ >Yв9/01#3#+*3)AEX/>Y +X!Y01!5!k1 $/]а/]9/01#! /ZN)*+9 EX/>YEX/>YEX/>Y9 9 / +X!Y 9@ ,<] +X!Y # +X!Y01!&'#"&54$3354&#"#46632%2675#" t^`Sjv})H ]FyGTeS@YXWF;^VFS|2f9 /EX / >YEX/>YEX/>Y 9 9  +X!Y +X!Y01#"'#3632'4&#"32672žj i|v@Ar|։u|BONM9EX/>YEX/>Y +X!Y99 +X!Y01%2673#"5432#&&#"9[xvuw\vjNef&)]x'Of9/EX/>YEX / >YEX/>Y 9  9  +X!Y +X!Y014323#'#"7327&#"Oìj muECv%/x*p2򥹅΂S N9EX/>YEX/>Y9/]_oq/qq]  +X!Y +X!Y9 +X!Y01"5546632!327"!5&&Y}= wiA٤d{r#b}ak}z}-U9EX/">YEX/>YEX/>Yб +X!Yа  +X!Y013#5354632&#"3#ҥȴ@H(5c`zRV N$"%&9" EX/>YEX/>YEX / >YEX/>Y9  +X!Y99 +X!Y" +X!Y0143273#"&'732655#"7327&#"RĹj w;spyivGEx%-mcPIu.~{yC 9/EX/>YEX / >YEX/>Y  +X!Y0163 #4&#"#3lwZa^HĊu=p]} ?9EX/>YEX/>Y а / +X!Y01!#3462"&GHHG:8JJ87IIK K9EX / >YEX/>Y  +X!Y а/ +X!Y01#"'5327462"&zC>&0yGHHG:f 8JJ87II}6 SEX/">YEX/>YEX/>YEX / >Y9jz]9eu]01#37!!lL+$no_Q=EX/">YEX/>Y01!#3|yNx9EX/>YEX/>YEX/>YEX/>YEX/>YEX / >Y99 +X!Y01632632#4&#"#&#"#arPvֳZhSi=:q9g`YHȿw:yNT 9EX/>YEX/>YEX/>YEX/>Y9  +X!Y0163 #4&#"#^xRYeH:}}5gc:O=NE 9 EX/>YEX / >Y +X!Y +X!Y0146632#"52654&#"O~ {yw'91 |`0Np9 EX / >YEX / >YEX/>YEX/>Y 9 9  +X!Y +X!Y01#"'#3632'4&#"3260k kxABtun{ ~O`Nm9EX/>YEX/>YEX/>YEX / >Y 9  9 +X!Y +X!Y0143273##"7327&#"OƵjjtFFt&*k&p/{v|N G 9EX/>YEX / >YEX/>Y  +X!Y 901&#"#363203:X4"\:yKN&k '(9EX / >YEX/>Y 9а  +X!Y 9  ]$ +X!Y!$9!!]014&&'&54632#4&#"#"&&53326kShVPe^Oątxc`d&AD4(XF]J>8>?WzW`aV]IrAT9EX/>YEX / >Yаа/ +X!Y  +X!Y013#327# #531?*+SM貲A>7 5ew:T 9EX/>YEX / >YEX/>YEX/>Y 9  +X!Y01%#"&533273# kŰ>j~F :89EX/>YEX/>YEX/>Y9013#34:!: ` 9EX/>YEX/>YEX / >YEX/>YEX/>Y 9 9 9013##333޷O:: SEX/>YEX / >YEX/>YEX/>Y 9 99 901!!!!VV dr% K:@9EX/>YEX/>Y9а  +X!Y01!#"'52677!Rc5@.\]#\"CO]5R: FEX/>YEX/>Y +X!Y9 +X!Y 901%!!5!5!@%OŸĚ8=79 /EX/>Y 9/ +X!Y901$54#5255667a0c`Դ28[\8U/EX/ >Y01#3Uu=79 /EX/>Y 9/ +X!Y90167547&55&'73"0³9VV93Ż3u/A9/9/ +X!Y а +X!Y01#".#"#46323265ܾJ}C&CMJC'CT8!hT;"pTM?9EX / >YEX/>Y  +X!Yа/013!#"&54632HABHHBAH78KK87KKd  & _!"9EX/>YEX / >Y +X!Y 9 а/а/ 9 +X!Y01%2673#5&554753#&&#"OYxŒȷ̷Ȟv[hP" "؜`uH^|h !9EX/ >YEX/>Y +X!Yв9/ +X!Y ав9 +X!Y01!!53665'#53'46 #4&#"!@R'+i^Yg 7VU o[ڸ_ih]O(A)*9EX/>Yа/  +X!Y& +X!Y01%#"''7&547'763272664&&"=ʞdm›kbxnܾmm޾mk~ȥsu{xuvuu 4q9EX/ >YEX / >Y 9 9/а/ +X!Y  +X!Y аааа01!3!!!#!5!5!53!! /4Oa6-m/EX/ >Y+013#3Z&/= >?9 0/EX / >Y9 99 +X!Y99 +X!Y 92 92, +X!Y2,9 ' +X!Y$,'901#"$5732654&'.547&&54$32#4&#"%&'654&y]AD x{xZQLlc.sǸYdnx_OM[73nmZ2dj_RTWhqn(|QV/5/uQa]##/] +X!Y аа/01462"&%462"&]CvDDvCCvDDvCV2DDdDD12DDdDDW(6789 а3EX3/3>Y-а-/3-9/] -39 /  ] 9 +X!Y +X!Y 9- +X!Y3% +X!Y01 &554632#4&#"3265%4$#" $%4$ #"$^\X\gh[YZ@KJTմqե`SvuvQb৪ ZlZ$ %&9 EX/ >Y%9/а/9 9 /  +X!Y 9]@ ,<L\l| ]q +X!Y  +X!Y01'#"&5463354#"'4632%2675#`M|vftAI(TjLVDR{iny330haQ$<1XW&Rv%/а/ +X!Y01#!5!CvW 1: ;<9 а 1а 3EX/ >YEX / >Y +X!Y  +X!Y 9/ 9/]292/ +X!Y%29,а: +X!Y014$ #"$%4$#" $%#!2#&54&#'32654&'#WKJ@%xA4 BME]G]ZlZ˦৪ [R}u?oD"LC>6F; J9/ +X!Y01!5!JQ  ;9 EX/ >Y а / +X!Y +X!Y012#"&462654&"jlmk5EEjHIĞܛܞxG54LLhH_ H /EX / >Y а  +X!Yа  +X!Y9 ]01!!#!5!3!5!We2Q|y<[9EX/ >YEX/>Y +X!Y99 +X!Y 9901!5654&#"#4632!q64:Bjbs}gC*5B6tskfWq7$%&9EX / >YEX/>Y 9|/@P`q]  +X!Y  9# +X!Y#9 9 +X!Y013254&#"#4632#"&5332654'# Q6>0AEYEX/>YEX/>YEX / >YEX / >Y  +X!Y 9013273#'#"'#Yj;\yM:yVk7>EV + 9EX/ >YEX/>Y901!#"$54$3!P !PER  9/ +XY01462#"&JKN@AL:NN:;JJmA5 9/EX/>Y +XY 9 901%#'2654&'7> BGGP 6iv/*-#:9EX/ >YEX/>Y9 +X!Y01#5%3o:0ww, B 9 EX/ >Y 9 / +X!Y +X!Y0146 #"&5326754&#"w6]PN[]ON]a¦HģbnlaPanmf]& ~Y'' EX/ >Y01P''EX / >Y01g'' >0EX / >Y01BN#c$%9EX!/!>YEX/>Y! +X!Yа/9  +X!Y 990132653#"&5477677"&5462v5IgZbYXj\N GHHG|Ojaj^]dSɸ]Hs578KK87KKW{EX/ >YEX/>YEX/>Y9/ +X!Y +X!Y 9 /  +X!Y +X!Y901!!!!!!!!!!W~ Cz$yTh6gM 8/ 9 / 9 9 9в 9  017M<Ĕ;<<lBBBAi" )h*+9а&EX/ >YEX/>Y9#9#а +X!Y$а& +X!Y01#"'#7&54$3273&#"4'325"[ÖŏWDGW,NiKgCDeKπ:Ur6~ Y9EX/ >YEX / >Y 9/ 9/  +X!Y  +X!Y0132###3264&'}z%ބ,]#-.9EX/">YEX/>YEX/>Y9 +X!Y"9* +X!Y01!#4632#"&'732654.54654&#"zλEAQP&1-6aZFQ~\PQ>bqA',TK'%VC1[PXMQaHP)4<в=>9-а8EX/>YEX/>Yа/ 9 / ] +X!Yа/898/8/8q88q_8o8q88]8]  +X!Y# +X!Y* +X!Y / +X!Y5 +X!Y01"'#"&5463354&#"'463262!3277%2675#"!54&Aֆ_X[soI k=IF:-hx]+cmMTG[gYB뉋:"8@;+_FAOqzg@,+h,-9(EX/">YEX/>Y9/9 +X!Y" +X!Y( +X!Y01#"&&546632&''7&'77'&&#"3265B~匊~q΄q1~N~KN {N~nooR~∕}[zmrR*2xm08~ȭC7 W9а/ +X!Y +XY +X!Y +XY +X!Y01!5!2#"&464632#"&7  DJJDCJJJJCDJJDCJFLrKKrLJ:LL:9JJOw=%h&'9а#EX/>YEX/>Y9 9 а +X!Y!а# +X!Y014663273#"'#7&&#"4'326O~jXGf{]ZHf@+/9w :+3{'"Йϖ6ba]`7f9 /EX / >YEX/>YEX/>Y 9 9  +X!Y +X!Y01#"'#3632'4&#"3267²kjvABtuw{ ~O!"#9/EX / >YEX/>YEX/>Y/]]9/ +X!Y 9 9аа +X!Y  +X!Y01##'#"4325#53533327&#" mìjuECv8p2/x򪎎΂mEX/ >YEX/>Y9/9/а +X!Yаа +X!Y а а013##!##533!3!5!u||yuy :EX/>YEX/>Y01!#3:k: `EX/>YEX/>YEX/>YEX / >Y9//q] +X!Y 901##33!!oUP,aT:P"6 ]EX / >YEX/>Y 9/а +X!Yа +X!Yа а а 017!!573ngGG''!. KEX / ">YEX/>Y 9/а +X!Yааа а017#573y55//K h9EX/ >YEX/ >YEX/>YEX / >YEX/>Y  +X!Y 9901#"'73255#3 F<(:{ 1~KNc9EX/>YEX/>YEX / >YEX/>Y9  +X!Y +X!Y01632#"'73254&#"#\ sİE:(;|]iK: xpg:d-#$%9EX / >YEX/ >YEX/>YEX/>Y +X!Y9/ +X!Y +X!Y +X!Y  +X!Y01!!#"$'4$32!!!!!27&#"-y {\LV}chr[ :n@ 8ϼ[O*2349$а.EX/>YEX/>YEX/>YEX/>Y9/9/////q/]  +X!Y +X!Y9"а( +X!Y+01432662!3267#"'#"32654&#"%"!54&[AmV uYGOGxywxuUxq'/T^숋*2?A- yoz 3 9EX/">YEX/>Y  +X!Y0134632&#"°?Y*2 hQ^ 9EX/ >YEX/>Y9/ +X!Y +X!Y +X!Y01 5!&&#"'763 '267!̧41!:k婖/`I4HkïڽKt 9EX/">YEX/>YEX/>YEX/>Y +X!Y  +X!Yаа +X!Y01##"'7325#5354632&#"3ɵH6Dx±=[&;5 ʴb gX.&^'(9#EX / >YEX/>Y 9/ +X!Y  +X!Y# +X!Y01#"$'54$3266534&#"325OLy|W@RF #TO"^#$9 EX/>YEX/>Y9/  +X!Y +X!Y  +X!Y01466326653#"2654&#"O}50Xg?{yw'jr%}. }=V 9EX/ >YEX/ >YEX / >Y 9/ +X!Y  +X!Y016653#"533 m^$  24w(c9EX / >YEX/>YEX/>Y в9/ +X!Y9 +X!Y01#'#"&5332736677(kŰ>HA j~F BLLK: 0 9EX / >YEX/>Y  +X!Y01#"'7325F8':|: lYOa 9EX/>YEX/>Y 9 / +X!Y +X!Y  +X!Y012'"55!&&#"'66267!{چ wVNOFґVxKqO툈'5>C`tozCE/]P]p]а//а/]9/01#'#53CÖ r4%/]а/]9а/0173#53Ғf   Jpu 0/]а/] +X!Y а /01 &53265ڰKJ~~BIIB  9/] +X!Y01462"&D~DD~DY5GG54FFx3* ,/]а/ +X!Y +X!Y012#"&4632654&"V]}`a}B./A?b?*{xx{/A@0.CC)R<#9EX / >Y +X!Y01!327#"&547WJG,.I\_t8^1D,n[lzWB/а//] а / +X!Y +X!Y01#".#"'46323265W`'9i+&5_94&6n< 9.nZ9/IV@/]а/]/а/а//013#3#hŐ޹.j ?/а/@ 0@P`]а/ +X!Y +X!Y014632#"&732654&#"iNIjjINie0"!--!"0IcaKJ^`H!.-"$00f#/]/а/]01#!f/^6#/]а/]/01!#!sP>+/а/]9 +X!Y 901'6654#72QIANH#H{hXYEX/>Y +X!Y01!#!7`0EX/ >YEX/>Y +X!Y9013!%!o>yUP["y#$9аEX/ >YEX/>Y9|/`p]0@]q +X!Y +X!Y +X!Y01!5!#"$'54$ 4#"325@pdy‰<]DT 1EX/ >YEX/>YEX/>Y901!3!DPl. NEX/ >YEX/>Y +X!Y9/ +X!Y  +X!Y017!!!!!!l>d WgM)9EX/ >YEX/>YEX/>Y +X!Y01!#!#!yGM >EX/ >YEX/>Y +X!Yа  +X!Y01!!55!!u7kʗB?J"n #$9 а EX/ >YEX/>Y9/в 9 / +X!Y а а +X!Y01#5&$&546$7534&'66|ƠtSD\]9EX/ >YEX/ >YEX/ >YEX / >Y 9/а  +X!Y 016653#&'33LCu0 lk%^&'9EX/ >YEX/>YEX$/$>Y +X!Yаа +X!Y"а#01%6754&#"!53&554$323!t{wkxwk mdgbegVyN!|"#9EX/>YEX/>YEX / >YEX/>Y +X!Y  9 9  +X!Y +X!Y01327#"'#"55327327&#"F 3L5fĵgzvFFs:{  6ǎwj(h')*9'/EX/ >YEX / >Y' 9'/$ +X!Y$'9 +X!Y  +X!Y012#"'#4664&#"32654&'#532icXyѥz|Lq]`Xqzg{Hز_0,S8spmZv~hRnm _:8 9EX/>YEX/>YEX/>Y9013#3;5 T8 +e,-9#EX/">YEX/>Y  +X!Y9/) +X!Y)9# +X!Y014632&#"#"467'&&32654&'"ԷIqOiNZz[hvywmyꑥ5=4]BO#"(}x` M'()9EX / >YEX%/%>Y %9|/@P]] +X!Y9  +X!Y 9 ] ]% +X!Y!9!!]01467&&54632#4&#"33#32653#"$`ibWaҿzY^r`i}fb2\ $yHYEX/>Y +X!Y9 +X!Y01'656''&'&57!5`VF=KaOzR}]nhJ9% mkTZBbQG>egF=!2iP Q~aNT 9EX/>YEX/>YEX/>YEX/>Y9  +X!Y01632#4&#"#\ w^hF:Sniz:s, | 9аEX / >YEX/>Y 9|/`p]0@]q  +X!Y +X!Y +X!Y01#"532!54&#"!267,:zqoz,{wrA-5L#0*a: )EX/>YEX / >Y +X!Y01327# 2>*+JV:=6 5JR9/EX / >YEX/>Y  +X!Y 9а +X!Y0127#"&'!'&'#'6lx$1 *4mu+["I";UPV Xo7Kdv,Y-.9/EX*/* >Y +X!Y-*9/  +X!Y-*9 +X!Y$ 901&#"!3# '6654&$'&&5467&&54$32Wzo#Q{P5.?Lvn|}$VKbB%8mH;d9P)#-D 5-(a,-:^ 9EX/>YEX / >YEX/>Y +X!Y  +X!Y ааа01#327# !##5!1?&/JV||>7 5S|`1NY9EX/>YEX / >YEX/>Y 9 +X!Y +X!Y012#"'#432654&#"VjCv}|rfwNw!uRN"O#$9EX/>YEX/>Yа +X!Y#9  +X!Y012#4&#"'6654&'&&'54668m`q.`1L3*YEX/>Y +X!Y +X!Y01!#"547!32654&#"~zޑ ADžzuuvv, #ة?:K9EX/>YEX / >Y +X!Y  +X!Y а01!327# !5!+3'7&Ply;;,9T:99EX/>YEX/>Y +X!Yа/013265&3#"&'rqns:vD"A#a$%9/EX/>YEX/>YEX/>Y  +X!Yа а! +X!Y01$5474632#665&&#"e~sHL|t77SFhw1>O"~:E9 /EX/>YEX/>Y +X!Yааа 01665&3#$3Rpy:}Τ23 <f-: W!"9EX/>YEX/>YEX/>Y +X!Y 9аа/901326533265&3#"'#"7aX[`_ZXa\\֍:˝F˽.8v )n*+9!EX/ >YEX/>Y$9$/ +X!Yв 9 +X!Y$а' +X!Y01#"5732655&'5463267&#":DnbmťK*}km4CW u}|&л #l EIC9EX/ >YEX / >Y 9  +X!Yа016632&#"#&#"'632?+z`FB& (A!@+ $YEX/>YEX / >Y +X!Y9аааа  +X!Y 9$01##"'#"47#5!&'!326753326T7ʼ\\6o!=<SK\fc]KS.ʗ"q9EX/ >YEX / >YEX/>Y +X!Y 9/   +X!Y +X!Yа01!632#'265&&#"#!5!rx|nt&Pyw tht !9EX / >YEX/>Y  +X!Y 9|/0@]`p]]q +X!Y +X!Y01#"$'54$32#&&#"!!3267%6{:윎凝-A"w #$9 EX/ >YEX/>YEX/>Y9/  +X!Y +X!Y +X!Yа01!!!##57>7!!2654&' 1Bc@(W_1 )~zuԇ݆j&usG9EX/ >YEX/ >YEX/>YEX / >Y9/] 9/ +X!Y +X!Y  +X!Y01!3!2#!!#3!2654&#+|)~|Ekn˅zpo1XEX/ >YEX/>YEX/>Y +X!Y9/  +X!Yа01!63 #4&#"#!5! }a7ʋzM  I /EX/ >YEX/ >YEX/>YEX / >Y +X!Y013!3!#!K7Ph ^9EX / >YEX / >Y  +X!Y 9/ +X!Y  +X!Y01!!2!!!2654&',a*|a)|nʅsn$g9 EX / >YEX/>YEX/>Yа +X!Y аааа  +X!Y01#!#367!3!!!AuWh&pWf0TAfe~EX / >YEX / >YEX/ >YEX/>YEX/>YEX/>Y 9/ +X!Yв9 в901###!!333!!J2\Y1Ntt``YI)%*+9EX / >YEX/>Y  +X!Y( 9|(/(]0(@(]`(p(]((](9% +X!Y%(9 +X!Y%9014&#"#46632#"&&5332654&##53 lmxlz}x #bts[wgc0*n{^~e{o  EEX/ >YEX/ >YEX/>YEX/>Y9 9013##3P - O9EX/ >YEX/>YEX / >Y +X!Y   +X!Y01#!##57>7 Bc@(W_1 P݆j9J9EX/ >YEX/>Y9а/  +X!Y 901!#'73277!$.dh=l,4H[\{$O"+] ,-9 !а # // 9/в% 9%/  +X!Y а +X!Y% а#0132##5#"$54$3353"33332654&#엘&oҹҳ < /EX/ >YEX/ >YEX / >Y +X!Y013!33#!_@EX/ >YEX / >YEX/>Y 9/ +X!Y01## $'3327~P=)0v* IEX/ >YEX/ >YEX/ >YEX / >Y +X!Yа01!3!3!PU /EX/ >YEX/ >YEX/ >YEX / >Y +X!Yаа а а01!3!33#!^ a9EX/ >YEX / >Y 9/  +X!Y +X!Y  +X!Y01!!2!!!2654&'*}u)|nɆsnX o9 аEX / >YEX/ >YEX/>YEX / >Y 9/ +X!Y +X!Y01!2!3#3!2654&'*|@)|nʅPsn O9EX / >YEX / >Y 9/  +X!Y   +X!Y01!2!3!2654&'*|)|nʅsnk !9EX/ >YEX/>Y 9| /` p ] ]0 @ ] q +X!Y +X!Y9  +X!Y 9013267!5!&&#"#632#"'h%ٞ䌞{Ǩ%&'9EX/ >YEX / >YEX/>YEX / >Y 9|/`p] +X!Y +X!Y" +X!Y01#"$'##336$324#"325q5T _ c9 EX / >YEX/>YEX/>Y 9/ +X!Y9  +X!Y01!!!&4$7!33#"bE댈 kxP{[<&V'(9EX/">YEX/>Y9/9 +X!Y! +X!Y012#"5766536"32654&zQBvzy (F^3?6e~O# ß::{9аEX/>YEX/>Y9|/@P]] +X!Y9 +X!Y +X!Y013!2#!254#%3254'#][j| :Kw [󆇮zM:,EX/>YEX/>Y +X!Y01!#!M*v:':]9 /EX/>YEX / >Y +X!Yаа  ааа +X!Y017667!3#!#!!!eEJvq˞B\:EX / >YEX / >YEX/>YEX/>YEX/>YEX/>Y9/] +X!Yв9 в901###!!333!!5g)rs)iMM3WWMM'()9EX%/%>YEX/>Y%9|/@P]] +X!Y9 +X!Y 9  ]% +X!Y!9@ !!+!;!]01#"&&5332654&##53654&#"#4632WO|rvZYi\`^RPnHy$ASiBYSCOFBJO<: EEX/>YEX/>YEX/>YEX/>Y9 9013##3 X:.:.e: iEX/>YEX/>YEX/>YEX / >Y9|/]CS]q +X!Y 901##33!!{k+,yT:P!:O9EX/>YEX/>YEX/>Y +X!Y  +X!Y01#!##'7667K2PI :v o: YEX/>YEX / >YEX/>YEX/>YEX / >Y 9 9 901!###!@0֥2+40:: EX/>YEX / >YEX/>YEX/>Y 9 / ]_ o q q_ r/ ? r q / q ] r +X!Y01!#!#3!3[K:=:9EX/>YEX/>YEX/>Y +X!Y01!#!#!Zv:#:2EX/>YEX/>Y +X!Yа01!#!5!yyT`$/019 а*/EX/>YEX / >YEX/>YEX/>YEX/>Y  +X!Y# +X!Y(а-01323632#"'##"'%4&#"32327&#"TѻL>@VԷSE=O 7tj-%!3lj-!"*hp 7. V< : K  : </EX/>YEX/>YEX / >Y +X!Y013!33#!:xA_;I9EX / >YEX/>YEX/>Y  9| / +X!Y01!##"&533273^hilbdiLvb : IEX/>YEX/>YEX/>YEX / >Y +X!Yа01!3!3!yRS:xx:~:L /EX/>YEX/>YEX/>YEX / >Y +X!Yа 01!3!33#!qRS:xxA:: ^9EX / >YEX/>Y 9/   +X!Y +X!Y +X!Y0132!!5!3264&'Jg+YgeV\nvY_: o9 аEX / >YEX/>YEX/>YEX / >Y9/ +X!Y +X!Y0132!3#33264&'gGYgeV\n::Y_": O9EX / >YEX/>Y 9/  +X!Y  +X!Y0132!33264&'gYgeV\n:Y_QN !"9EX/>YEX/>Y +X!Y9|/@P]9] ] +X!Y +X!Y9]01"#46632#"&&533267!5!&&Uvtr yܑ{nvVf~ S~iOdhgu]w8N !9 EX/>YEX/>YEX/>YEX / >Y9|/]@P] +X!Y  +X!Y +X!Y0136$32#"'##32654&#"  {xw9<:ا': c9EX/>YEX/>YEX/>Y9/ +X!Y9 +X!Y01###&&546733#"dkƼeOYj:s*eDU8ZK!"#9/EX/>YEX / >YEX/>Y]/]]!9!/ +X!Y9  +X!Y +X!Yа!01!63 #"'73254&#"##5353!wwZF:';{a^H u p]TN}9EX/>YEX/>Y +X!Y9|//q +X!Y9] +X!Y9] ]01%2673#"5432#&&#"!!>Yxxtv[n} [hPfd')`u:} !9 EX/>YEX/>YEX/>Y9/  +X!Y +X!Y +X!Y +X!Y013!!#'766732654&'N2RG XhdV:v XMHQ:9EX/>YEX/>YEX / >YEX/>Y 9/ 9/  +X!Y +X!Y  +X!Y01!33!!#332654&#y[Zfd[#:ZKFT{ 9/EX/>YEX/>YEX/>Y]/]]9/ +X!Y9  +X!Yа01!63 #4&#"##5353!wZa^Hu=p]: F/EX/>YEX/>YEX/>YEX / >Y +X!Y01!3!#!y:xf:a 9EX/ >YEX / >YEX/ >YEX/>YEX/>Y9 +X!Y01#"'#"&533265!3265mqg^irmcanuwtyp:a 9EX/>YEX / >YEX/>YEX/>YEX/>Y9 +X!Y01#"'#"&53326533265ڽ`f˸TFSf\OJ[:N܎QrllrQrllr!t9EX/">YEX / >Y 9/ +X!Y 9/ а а +X!Y  +X!Y01!3!#533!32654&'"[ecW:ή:3[eYUi%&'9EX$/$ >YEX/ >YEX/>YEX"/">Y"$9/q$9  +X!Yа! +X!Yа +X!Y$90136$32#&&#"!!32673#"$'##3  & O4tN# $%9EX/>YEX#/#>YEX/>YEX / >Y9|/@P]а  +X!Y 9 +X!Y +X!Y90136$32#&&#"!!32673#"$'##3yv[| }nYxxtq`u櫊hPfd:: WEX/ >YEX/>YEX/>YEX / >Y 9 / +X!Yв901###!3!!~sSVVPh E: WEX/>YEX/>YEX/>YEX / >Y 9 / +X!Yв901####3#3'][h\d:dd0}EX/ >YEX/ >YEX/>YEX/>YEX / >YEX/>Y9/а +X!Y ав901!3!###!!#3!h+~rbSgIPVVU:EX/>YEX/>YEX/>YEX/>YEX / >YEX/>Y9/б +X!Y ааав90133#######33'j][hmdv:ddn|9 EX/ >YEX/>YEX / >YEX/>Y9/  +X!Yаав9 +X!Y01#&&####"#66!!!zvh~u/(lo \n~ld:|9EX/>YEX/>YEX / >YEX/>Y9/а +X!Yав9 +X!Y0135667!#5&&'###"!ƾ^r/-y`ֲ $dzr_n|i" #$%9#EX/ >YEX / >YEX/>YEX/>YEX/>YEX/>Y 9 / +X!Y  аав!9 " +X!Y01!47!#3!!#&&####"!;0vhs.`e{xlo \q|9v: #$%9#EX/>YEX / >YEX/>YEX/>YEX/>YEX/>Y 9 / +X!Y  аав! 9 " +X!Y01!567!#3!!#5&&'###"!5ž^s.-y`ְdX:'$Ƴr_n|i"(@'0129(,/EX/ >YEX/>YEX/>Y +X!Y&9|&/&]@&]`&p&]# +X!Y #&9 +X!Y,],)а)/))](,)90а0/014&#!5!2##&&'46736654!#53 73#53z }n 5zR?rω!^jϵp,WckA(}e  3H'0129(,/EX/>YEX/>YEX/>Y +X!Y%9|%/@%P%]$ +X!Y $%9 +X!Y,)а)/))](),90014&#!5!2##&&'46732654!#53273#53tsiaW6~Q5lw⠒YEX/>Y  +X!Y 9|/ +X!Y +X!Y01#"$'54$ "!&&267!d D <]DO=Nj9аEX/>YEX / >Y +X!Y 9|/@P] +X!Y +X!Y0146632#"267!"!&&O} {kkj'9.ݕG9EX/ >YEX/ >YEX / >Y 9 +X!Y017663##!a5z-T' ro| NG9EX/>YEX/>YEX/>Y9  +X!Y01732&#"#3zZC' "; naa"6*:_v.'W()9!EX / >YEX/>Yа а  +X!Yа$ +X!Y!01#5&5753'4&'#553665 xy{y#~~#sU$z#qr##`a#L%`_#O=%Z&'9EX/>YEX/>Yа а# +X!Yа +X!Y014753#5&56654&'#553Oݽ߿PRZZPOXVO'&nmkl&``!!h?*=F0GH90 а0EEX/ >YEX/ >YEX/>YEX / >Y 9 +X!Y  +X!Y 9#а*а6а6/,а,/+ +X!Y,2а2/9 +X!Y,BаB/FаF/012#"'#"&'463"3265332654&##".#"#54326753rr_ff_irqh_ff_j!S0h%Fo)A`; ̎퀎wys#K h"ORYEX / >Yа/ в  9 +X!Y  +X!Y 9#а*а6а6/-а-/+ +X!Y-2а2/9 +X!Y6AаA/FаF/012#"'#"&'463"326753326554&##".#"#54326753:Եac²ܻI[SCP^^QBT[I$S,h%Fp0A`;G瑑u||upjjpu||u#L h"NRYEX/>Yв 9 +X!Y а/аа/ %а%/&а&/  +X!Y&#а#/01#"'#"&533265!3265%5!!#5mqg^irmcan9Uuwtyzzp&'(9%EX / >YEX/>YEX/>YEX/>YEX/>Y9 +X!Yа %а%/а/  +X!Y"а#01#"'#"&53326533265%5!!#5ڽ`f˸TFSf\OJ[8:N܎QrllrQrllr{{fU9EX / >YEX/>YEX/>Y а  +X!Y +X!Y01#&54$3 #!"34݌f G&߼\NU9EX / >YEX/>YEX/>Y а  +X!Y +X!Y01#&5546632#4&#"3yے|otXq~pj #gv[zm>/EX/>Y01%#%7%73%[!HݵG%I#%LhFkf9/ +X!Y01'7!'" ~lsm0 /а/ +X!Y а/   +X!Y012#54#"#536$j6)'y"hww{r` /а/0153{;R܄pD` /а/01'7'3R;Dp$ '5BO\jE/S/`/8/EX/ >Y +X!YEаEL +X!YаSаSZ +X!Y%а`+а`g +X!Y2а8? +X!Y01462#4&#"4632#4&#"4632#4&"4632#4&#"462#4&#"462#4&#"4632#4&"4632#4&#"stp30.3t]_uq5.,3Hu]_tp5\3t]_tp5.-3Ostp30.3Mttp30.3u]_tp5\35u]_uq5.-3ThhT.750ThgU1450 UghT147.ThhT147.ThhT.77.ThhT.750 UghT147.UggU1450Mc "'/!/// //&/EX/ >YEX/>Y01#'37%%57%'%'7P z`F: z`F Mu Z@DE&+A`B<aR |bG; |bGDEFEG+~$&'>EX/ >Y 01~&'EX/>Y 01!bw9EX / >YEX/ >YEX / >Y +X!Y 9/ а а +X!Y  +X!Y01!3!#5353!32654&'"[ecWήeYUiO9EX/ >YEX/>Y9/ +X!Y +X!Y01#!2'#654&'!!27'7-uzmy~0O:snwd7C5Jvd|`0N"p#$9EX/>YEX / >YEX / >YEX/>Y 99 +X!Y +X!Y01'#"'#3632'4&#"327'760njohYpk kxABF2jnY"zcx6un{ ~!{dgX4 6 9/EX/ >YEX/>Y +X!Y01#!#!34` `~[s,EX/>YEX/>Y +X!Y01!#!3[v:9^9 /EX/ >YEX/>Y +X!Y 9/   +X!Y +X!Y01!3 #'265%##!7`"<_ֺ{ ~:L 9 /EX/>YEX/>Y +X!Y 9/ +X!Y01!3 '654&###!F+I ^sUޛNv`Jԁ::&Q:&Qe&,Q0:&Qs6bEX/ >YEX / >YEX/>YEX / >Y 9/] +X!Y9а01 !##5##33533 |AYY7[mf:]EX / >YEX/>YEX / >YEX/>Y 9/  +X!Y 9а01 !##5##33533V/WW':T:P4cEX/ >YEX / >YEX/>YEX / >Y9/ +X!Y +X!Y 901##!5!3!!'Ջ6 pdG =:mEX/>YEX / >YEX/>YEX / >Y 9 // q ] +X!Y +X!Y 901##!5!3!!@{jl*-xTvP&,Q:&Q EX/ >YEX / >YEX/>YEX / >Y9/]oqqrq?q/?r|] +X!Y +X!Y01!!!#!#3guR^y~f: hEX/>YEX / >YEX/>YEX / >Y 9|/@P] +X!Y +X!Y01!!!#!#3qP[wK:k9/EX/ >YEX/>YEX/>Y9/ +X!Y  +X!Y +X!Y013 #'265%##!#!}"<yAֺ{ ~:Y9/EX/>YEX/>YEX/>Y9/ +X!Y +X!Y013 '6654&###!#! },]sUuiZa(g6v:g%2349&EX / >YEX/ >YEX/>Yа/9/  +X!Y +X!Y% +X!Y)а/ +X!Y01"'#"$'5463"327&54323654&#"߳ԩ}f~۲1)\jec`XT^GG6ɯὸD5H ծaN"./09#EX / >YEX/>YEX/>YEX/>Y9/   +X!Y +X!Y" +X!Y%а+ +X!Y01"'#"54337&55463236554&#"ɺz۪@K}%MXxc=12;69BB {IzwӔlc{kxj)"&<Q':&\Q-Q /EX/ >YEX/ >YEX/>Y +X!Yа +X!Y 01!5!!!33#!_&::M /EX/>YEX/>Y +X!Yа +X!Yа 01#5!#!33#!wKxA&Q^_;&QUP9EX/ >YEX / >YEX/>Y9/а +X!Y013673##5&&'}O5nld`p,9'+ P< t;R9EX/>YEX / >YEX/>Y 9|/ +X!Yа01!##5&&'33673E1;;iбP  G9EX/ >YEX/>YEX / >Y9/ +X!Y013363 #&&#" ~)1ϋv*Z$g%&9#EX/ >YEX/>Y9/ +X!Yа а +X!Y" +X!Y01 5&&534$ !327!54&#""˽1ClT+<Ԫ*5F(.lN! "#9 EX / >YEX/>Y 9/]_oq/q]q +X!Yа а +X!Y 9   +X!Y01"$''&&536$32!327!5&&"h= wgAmrz20b}akz}h9/EX/ >YEX/ >YEX/>Y9|/] а +X!Y +X!Y01##33!#' %!q2" q\ozC:Z 9/EX/>YEX/>YEX/>Y9|/@P] +X!Y901'6'4&'##33!ͯ^sUUA-a)`Gv T:P-~&~!~:&Kv 9EX/ >YEX/ >YEX/>YEX/>Y9|/`p]0@]  +X!Y +X!Y01!3#"'7325!#E<$>{} ~K :o 9EX/>YEX/>YEX/>YEX/>Y9|/@P]  +X!Y +X!Y01!3#"'7325!#qE:';|[:= K:~&,~:&~1&1~A:&Qa 9EX/ >YEX/>Y 9 / +X!Y +X!Y  +X!Y01 ' 5!&&#"'76267!q@m̧41)/k±`I4 Jڽ[Kn 9EX/ >YEX / >Y +X!Y9 9|/в 9  +X!Y +X!Y01!5!#"&&5332654&##5~hỵOg_d]uF:_ 9 /EX/>Y +X!Y9 9/в 9  +X!Y +X!Y01!5!#"&&5332654&##5{lzvěCh`i4K&R&&)T5-I:&U'&zT )KQ&<TKU:&\TR R9EX/ >YEX/>Y9/  +X!Y  +X!Y013!"&&54$7!"ڝ4|yPtԈ/uth!b"#9EX/ >YEX/>Y9/  +X!Y9а +X!Y!01!"$54$7!336676&'3%!"r4K^l!&}z}JL^Etu^+,-9*EX/">YEX/>YEX/>YEX/>Y9  +X!Y99" +X!Y( +X!Y0132336676'3#'#"'&#"327'^ãeNCt@/}Uk˹ GszvE 6xBOOiYQh͞rD<)f#*+9EX / >YEX"/">Y* 9/ +X!Y  +X!Y9" +X!Y" 901536654!!5!36676'3#&'54&#槓d<3er@+zڊ|gbmud?M9Ibg>n~/:$c%&9EX/>YEX/>Y +X!Y9%9/ +X!Y +X!Y"901%36676'3#&'54##'3654##'!NZ`A-鼞¹䰹X9qHJ0H7"b #$9/EX / >YEX/>Y 9/ +X!Y  +X!Y9 +X!Y01'36654!!'!3'667#&'54&#Α.dZ$8<~t\sofGcKM9wI1qt:"b#$9/EX / >YEX/>Y 9/ +X!Y  +X!Y9 +X!Y01'3254&#!'!23'667#&'54#kc xjhU&8+JSdYO<$eGM=~OTB"e#$9EX / >YEX/>YEX/>Y  +X!Y +X!Y +X!Y 901!#5766!32676'3#"&5aaJ(zhL?nA)ӊ Rdff@Z:!e "#9EX / >YEX/>YEX/>Y  +X!Y +X!Y +X!Y 901!#'7667!32676'3#"&'S2PI QEXg@0p}t +RdP||g9EX/ >YEX/ >YEX/>YEX/>Y +X!Y 99/ +X!Y0136676'3#&'5!#3! M>p~A/|⎻ ~V`Y}w\:z9EX/>YEX/>YEX/>YEX/>Y9|/]@P] +X!Y  +X!Y901!#3!336676'3#PRF^d@+p~F:C-Rf]a|]!I"#9EX / >YEX/>Y  +X!Y +X!Y 901"$'4$32&#"36676'3߈?Ğ}5'YDṯXXnUNF 9EX/>YEX / >Y +X!Y 9 +X!Y01%6674'3#"5546632&#"ZQEҵ|Ⓕ`.crCGwgR1B: !ZO9EX/ >YEX/>Y +X!Yаа  +X!Y901!5!!36676'3#&'>>M>p~A+}⌻ T`bgD:O9EX/>YEX/>Y +X!Yаа  +X!Y901!5!!36676'3#RE^c@,wTdt|~7(v&)*9EX/ >YEX / >Y +X!Y$ 9|$/s$]`$]% +X!Y%9%$9 +X!Y$90132653# $54%&&54$!2#4&#"!3#"v/ |3e~^iW1biwYuscp-K&Tn!K:&Txgo # /а// а/а/013#3&5p]ԱLP?T_{FHZG TG Tm1FL@m1Fff@`+01!5!5!5!jj`gc  9EX/">Yа/01#566|[gM`3e 9EX/">Yа/01'6753|ZiMg2d 9 / +X!Y01'6753{UfN]J|EX/">Yа/01&&55Z|MiM>gl & Y@& [2 " 9 / +X!Y01'6753'6753U71XfNɺlrdAN˶c@ LEX/ >YEX/>YEX / >YEX/>Y  +X!Yа01!#!5!3!sxrrv\`9~EX / >YEX / >YEX/>YEX/>YEX/>YEX/>Y +X!Y +X!Y аааа01!!#!5!!5!3!!!9rrxx`vLD 9/ +XY014632#"&'ydgxwgcy_yyb%^ws]o&(&'Zm  9/ +X!Y014632#"&ZHABHHBAHk8JJ87IIJ_#'4AN(OP9(а(а(&а(5а(G$/&/EX/ >YEX/>Yа/9а/а/9 а /+ +X!Y2 +X!Y+8а2?а E +X!YL +X!Y014632632#"'#"&54632#"&5'326554&"326554&"326554&"/NNNNw}}O>@JN|MO>@JN|MNM?>LM~KeooGnn{FHrH8DWRLKFTTJJDWRLKFTTJEUUIHFVWIl3/9/01#53< qT/9/01# zz-mq' //017'}}mHrH5 EX / >Y 01iT 9EX/ >YEX/ >YEX / >YEX/>Y 9  +X!Y0163 #&#"# K}c'y ڭY _|'()9EX/ >YEX/>Y'9'/  +X!Yа +X!Y а'а'#а#/##/#]% +X!Yа#а +X!Y#901!!!53665'#53'#53'46 #4&#"!!!2@R'+i_Xg?5.U o[7yڸ_ihy!O#&) *+9 а !а &а (EX/ >YEX/ >YEX / >YEX / >Y 9/а/] +X!Y +X!Y%а ааа!ааа"ааа'аа $а)013#3##!##535#533!335#3'#5#3'w5Wqg_/++Šޗ~KD:%!&'9!EX/ >YEX/>YEX/>YEX / >YEX/>Y +X!Y  +X!Y ав 9 / +X!Yа/$ +X!Y01#327# ###!2333324'#32?&/SMxʞu_=8 5eó<&6Wr!#'+.1*239*а*"а*'а*-а*1EX/ >YEX / >YEX/>Y 9/а/а +X!Y  +X!Yа ааааааа а"а$а&а(в* 9, 9 -в/ 9 001333#3#####53'#5333337#37#3'#7#7#>P!v^|`w!O?==rNmH?Q;*zHHz8Ż|: m9EX/>YEX/>YEX / >YEX/>Y +X!Y  +X!Y 9 9012#4&#!#3!2673# ZiPjY:Bmc:ahW^0#$%9EX/ >YEX / >Y# 9#/ +X!Y  +X!Y а#а#а//] +X!Y +X!Yа 01!327# #535#53632&#"!!!jn_x ,jfe cd! "!$) *+9 а #а (EX / >YEX/>Y $ +X!Y а /@  0 @ P ` p ]а/]@  0@]& +X!Y'а'/@0'@'P'`'p'''] +X!Y&аа б +X!Yааа  аа&01##535#53!23#3##'!!%!&'!!!2-<6CFr 1{H &"}(H;;7( p9EX/ >YEX / >Y +X!Yаа/а +X!Yаа/  +X!Y 901#3#!'3267!7!&#!7!32p316Ke Q]L!Q 9EX/ >YEX/>Y9/а/] +X!Yаа аа а а +X!Yа а аааа +X!Y901#"'575573776655Qk᪲Yë]WWWW;ZZZYMO:]9EX/>YEX/>YEX / >YEX/>Y 9/а  +X!Y 01#5&&'##5753(rqj)쿸*j*DZp+(3{ !9 EX / >YEX/>Y 9/ +X!Yа а / ]  +X!Yаа а  +X!Y01%!#5#535#53!2!!!2654&'!3- B-|kk6~}pp&489:9а'а75/7/EX / >YEX$/$>Y а/ 9  +X!Y +X!Y 9$а/$* +X!Y1 +X!Y01 &554632#4&#"2654632 &5326554&#"'A64BCj@諪O>@IN=>M~~%sGs5@TJJEUC1@GDWSKKFTTJHrHL!]"#9 /EX/>Y 9/ +X!Yа +X!Yа  +X!Y01"&5#5276632366554&#"a`a`ײhlMW+ Vִ&gMzDKf)?@'()9ааEX&/& >YEX$/$ >YEX/ >YEX!/!>YEX/>Y а /а/] +X!Y  +X!Y +X!Y $!9%&901!5!46  &5326554&#"!#!3av8½\QO[\PO\  /N¢`llcQ_mmb  mW nEX/ >YEX / >YEX/ >Y9/ 99в 9 а +XYа а01##33####5!|>|oou t}E_Ne9EX / >YEX/>Y 9/ +X!Y +X!Y 9  +X!Y01%#"&54632!327"!&wĬzs^r>nz*zqY''$!EX/ >Y01Th''$EX / >Y01[\'! '$EX/ >Y01X'#"'3$pEX/ >Y01bC&^'(9 /EX/>Y 9/ 9  +X!Y +X!Y  +X!Y012&&#"'763 #"554"32655&&8wń|Yа +X!Y01#!#!N,@ 7/EX/ >Y +X!Yа  +X!Y01!!55!!DOGCs×Ƙsm1/ +X!Y01!5!Qm;= 9/EX/ >YEX/>Y9 +X!Y013##5!Axg+PA^N*9t:;9"а2EX/>YEX / >Yа/9а/9 +X!Y' +X!Y.а701#"&'!"&&55463 !24&#"3265326775&'&#"߀損Uߏ偁$$zn(.ky]{i+(nyGJB$EUâó$BJK?9EX/">YEX/>Y +X!Y +X!Y01#"'73274632&#"B?,%?Y*2O  e+|,-9/а/а/ а  +X!Y +X!Y аа/ а# +X!Y( +X!Y#+016636327#"''&"6636327#"''&"e0BRLFQefQFOTB00BTOFQefQFLRB028"N ~j L$B<28$L ~j N"B<9/ +X!Yааа/ +X!Yа 01!'7#5!7!5!73!!m]!~anc}d>><kg @9kg"@9$ 8 9EX/ >YEX/>Y99013#~')*)'c>94 9EX/>YEX/>Y9/01#3#3>FEgZ /а/01'6753ŀISMs{dO]-&JJDu 9 EX / ">YEX/>YEX/>YEX/>YEX/>Yб +X!Yа  +X!Y013#535>32&#"3#!#3jˆPO%rodgJ\"0aaDz:-,e9EX/">YEX/>YEX / >YEX/>Y +X!Yа  +X!Y01&#"3###5356632#9fJzD?[za0-(,-.9*EX/">YEX/">YEX+/+>YEX!/!>YEX/>YEX/>YEX(/(>YEX%/%>YEX*/*>Y!" +X!Y&аа  +X!Y +X!Y013#5354632&#"!5>32&#"3##!!#3ҥȴ@H(5tjˆPO&sodc`J\"0aaDzz:-'()9EX/">YEX/">YEX/>YEX/>YEX/>YEX'/'>YEX$/$>YEX/>Y +X!Y  +X!Y +X!Y&а"013#5354632&#"!56632#&#"3##!ҥȴ@H(5tzDfJc`a0?[zz-$}%&9EX/>YEX/">YEX/>YEX / >Y +X!Yаа  +X!Yа +X!Y#01#327# #535&#"##53546323˿1?&/SM貲El°er>7 5e gb81KLȲFMN9EXG/G">YEX@/@>YEX/>YEXK/K>YEX / >YEX,/,>YK +X!Y  +X!Y ааG +X!Y@,9@  +X!Y&,@91,@9,4 +X!Y;@,901#327#"&'#5354&#"#4&#"#"&&5332654&&'&54632&546323yq&/SM`XOX!hVPe^Oątxc`dkS[M-ٮ޿ NXbiTE:ifyMF]J>8>?WzW`aV]I;AD4(XlOOYr (7=CIOVZ^bfjnvz~Ȳ9аа0а<а>аFаJаPаWа[аaаcаgаmаpаwа{аааа=/EXF/F >Y}D+|y+x+9+ F=9 /а/а/ а/o9|o/P +X!YPo9  +X!Y% +X!Y)а)/.а./4 +X!Y=kаgаcа>б? +X!Yeаiаmа<а9AаFG +X!Y[аWаJаF`а\аXаKаDNаQ +X!YG_аv +X!Yxаyа|а}аа01#"&'5463232#4&#"32653#"&53326533!5353!#%5!#53254'5!!5!!5!5!!5!!5!3254&###535#53#53%#535#53#537df~heCbrT24JA@JJB@I\iRXm]h)6q(om56o\~gb[\ [\]v:<]qqqqqq"oooooobyx^u_|x^%IMT F-HENNEpENNEON]QS[6,;qqttSRJtttttt8qqqqqqP)~~~\s $(L!/%/а/!а/ 9 /а/а/ 9 /а/9901 4676654&#"36632#33#3#AD$J\:+98][/KR11::'J34@4_YEX/>Y +X!Y99 +X!Y 9901!!5654&#"#4632!q64:Bjbs}gC*5B6tskfWq2EX/>YEX/>Yа/ +X!Y01!#5%3o:0wK H9EX / >YEX/>Y  +X!Y +X!Y01#"&554632'4#"327urwo> O!`"#9EX/>YEX/>Y9|/ +X!Y +X!Y +X!Y01#"&54632#5366'26754&#"d$DdjYXii[϶A:*Ym~{^_pX"- ./9  а &EX/>YEX / >Y+ 9+/+q?+q_+r +X!Y+9+9   +X!Y& +X!Y01#"&5467&&546324&#"3264&#"26\Q^ll^Q\޹kYXiiZXjZNMWXXVU'(ab('UcJVUUUBBOMDCQQ9:9EX/>YEX/>Y +X!Y901!!5!i` e!"9 EX/>YEX / >Y +X!Y 9/ 9 +X!Y  +X!Y01"632#"&55%"32654&kM8Hln_YmiǝmԲH7P=-.tsY[kgm9EX/>YEX / >Y +X!Y 9/ +X!Y9  +X!Y9901!!632#"&'332654&#"I!de˵lTZhvd^<";R+˵ܻJDjd]m'0 W9 EX / >YEX/>Y 9/ +X!Yв9 в 9013##5!'3!R *;/!>& '(9EX/>YEX/>Y9/?qq_rrqroq]r +X!Y 9% +X!Y%99  +X!Y0132654&#"#4632#"&5332654##giebYRhcarZch}WFGMH:O%=ӝBSXHB[9EX/>YEX/>Y +X!Y99 +X!Y 9901!!5654&#"#4632!`OcnRf`FnGVe[ڻRd[@9EX/>YEX/>Yа/ +X!Y901!#5%3oSîY H9EX / >YEX/>Y  +X!Y +X!Y01#"&'5432'#"32½ĺA FEX/>YEX/>Y +X!Y9 +X!Y 901%!!5!5!x{Nl<Ċ61EX/>YEX/>YEX/>Y901!#! ]d zlJ SEX/>YEX / >YEX/>YEX/>Y999 901!!!!'gKB( YEX/>YEX/>YEX / >YEX/>YEX/>Y99 9013##33J+bsAd r1EX/>YEX/>YEX/>Y9017!#!*"FG8MKWsg6 9EX/>YEX/>Y  +X!Y01 $53327J~lsh$/EX/>YEX/>Y +X!Y01!#!5!~7>%f &'9EX / >YEX/>Y 9 9  +X!Y +X!Y! 9# +X!Y014&$&&54632#4&#"#"&&53!26hϰSxe_nq̊~ao2BOLb\ȠQ]M@:L#6]qJv9 c9EX/>YEX/>YEX / >Y9/ +X!Y 9 +X!Y01##!2!32654&##H4llioW[% k_NQ`L0l"H#$9EX/>YEX/>Y +X!Y +X!Y01%#"&'54632'4&#"3265lncϝ24"񗉆,H 9ö3öv, O9 EX/>YEX/>Y 9 / +X!Y +X!Y01#!2'32654&##ihwyegխXTWiOoH9EX / >YEX/>Y  +X!Y +X!Y01#"54632'4&#"3265oڅ 򖈆,5 .5övg EEX/>YEX/>YEX/>YEX/>Y9901!##33g v`9EX/>YEX/>YEX/>YEX/>YEX / >Y99 901 !###QN>Ks;:pv)EX/>YEX/>Y +X!Y01%!!3i+vh KEX/>YEX/>YEX/>YEX / >Y9в 901#37!!nO,Cۃ}|$d#9EX/>Y  +X!Y013#"&533265qKW^]wEX/>YEX/>Y01!#3wvh EX/>YEX / >YEX/>YEX/>Y 9 / ]? q q? r q ro  q ]_ r , ] +X!Y01!#!#3!3h %TH_9EX / >YEX/>Y 9  +X!Y +X!Y 9/ +X!Y01%!"532#&&#  75#5!Hyl(F. A ,d\@9ȱv BEX/>YEX/>Y 9 / +X!Y +X!Y01!#!!![(%>s*r+,9EX / >YEX"/">Y" 9  а +X!Y  +X!Y9"а"( +X!Y&(9014&$&&546753#4&#"#5&&53!26hϰSϩxe_nqîao2BOLb\Q]M@:L#6ǚJ8q !9EX/>YEX/>Y9/ +X!Y +X!Yаа аа +X!Y901!!!5366''#53'&632#4&#"!GPe )+ؿWPMWp }iԼaj~yi o9EX/>YEX / >Y 9 9/|/ +XY +XYаааа0133!!!#5!5!5'!53!   0ّ> Iv39EX/>YEX/>Y +X!Y01!#!!7 r= 9EX/>YEX/>Y9 +X!Y01!!3'!riKMoOo y!"9аEX/>YEX/>Y9|/`p]0@]q +X!Y +X!Y +X!Y01!5!#"54632'4&#"32658Z7څ 򖈆v5 .5ö r8 9EX/>YEX/>YEX/>Y901!!3!' sVKMBU a 9аEX / >YEX/>Y +X!Y 9/ +X!Y  +X!Y01!!5!!5!!5!UI~I8 vb@ 9EX/>YEX/>YEX/>Y +X!Y01!#!#!b7D M 9EX/>YEX/>Y +X!Y9  +X!Y 901!!55!!p^?|EĘPMq9аEX/>YEX/>Y9/в 9 /а  +X!Y +X!Yа01#5&$54$7534&'$Iml x* PL9EX/>YEX / >Y 9/ааа  +X!Y 016653#&33#nh}p}§/㓯*6Ѩ_#^$%9EX/>YEX/>YEX"/">Y +X!Yаа +X!Y а!01%66554&#"!53&5466323!xlvt0*cY/"ɰ+(#ě'J$Rn9EX/>YEX/>YEX/>Y +X!Yав9/ +X!Y +X!Y01!5!!632#52654&#"#~svtu'ƼTirg&OC9EX / >YEX/>Y 9  +X!Y 9/qr?qqoq]_rr +X!Y +X!Y 901#"546632#&&#"!!3267B~ }r ~x| , DpiĔbp$ z!"9EX/>YEX/>YEX / >Y +X!Y  +X!Y9/ +X!Y +X!Y01!!##77667!32%32654&# X4&`N ;@guvfu+l kSQcvIJ9EX/>YEX/>YEX/>YEX / >Y9/]?qq?r_rqroq]/]r 9/ +X!Y +X!Y  +X!Y01!332#!!#332654&#ioguvfl_p%kSQc$RY9EX/>YEX/>YEX / >Y +X!Yв9/ +X!Y01!5!!632#4&#"#~tt&Z|i&va P 9/EX/>YEX / >YEX/>YEX/>Y +X!Y 01!!#!3!3a~a6v( a9 EX / >YEX/>Y  +X!Y 9/  +X!Y +X!Y01!3#!!2654&'#YEX / >Y +X!Yаа  ааа +X!Y017>7!3#!#!!!JB# =t Q~6Q9EX/>YEX/>YEX / >YEX/>YEX/>YEX/>Y 9 /? q_ r q ] rб +X!Yв9901###!!333!!_`\TT^++T9  B'&()9EX / >YEX/>Y  +X!Y 9& 9&/&q?&q&&]&q&r_&r# +X!Y#&9 9 +X!Y014&#"#4632#"&'&5332654'#536pk[fn]on]?| wtCFOF<['$[-/[WHvn L 9EX/>YEX/>YEX/>YEX/>Y9 9013##3{s#v@ x 9EX/>YEX/>YEX/>YEX / >Y9/?q_rq]r +X!Y 901##33!!jc8r+ $UO9EX/>YEX/>YEX / >Y +X!Y   +X!Y01#!#77667U W:'bJ sx +9D9EX/>YEX/>YEX/>Y9  +X!Y01!#'727!) p8Z~ZfW`3[K7y~~i8av$ C 9/EX/>YEX / >YEX/>Y +X!Y01%3#!3!3bCQ6AG9EX / >YEX/>YEX/>Y  9 / +X!Y01!##"&'33273oy&fwl&v B 9EX/>YEX/>Y +X!Yаа 01!!3!3!3h_`66vB 9/EX/>YEX/>Y +X!Y а а а01%3#!3!3!3_`Q66  a9EX/>YEX/>Y +X!Y 9 /  +X!Y  +X!Y01!!5!322654&'#R2fuqblkSOcv&2v( O9 EX/>YEX/>Y9/ +X!Y +X!Y01#!3322654&'#(o2fuqbl_kSOc<09EX/>YEX/>Y9 +X!Y 9 / q? qo  q ] q r_ r +X!Y  +X!Y9013267!5!#"#6$32#"$'/ |x r}  {pb1ipuںvA!"#9EX/>YEX / >YEX/>YEX/>Y  9 / ]o  q q r r_ r q? q / ] r +X!Y +X!Y +X!Y01#"'##33632'4&#"3265A 򖈆,5öC \9EX/>YEX / >Y 9/  +X!Y 9  а +X!Y013&5463!##33#"C.akak VѣsD"JYJW  R9EX/>YEX/>Y9/ +X!Yа  +X!Y 01###53!!3!m9/EX/>YEX/>YEX / >YEX / >Y 9/?q_rq]r +X!Y9 +X!Y в9аа013#####!!333!Ы_`\TT]eQ++T9  v|9/EX / >YEX/>YEX / >YEX/>Y 9 /? q_ r q ] r +X!Y 9 +X!Y013####33!!Лjc8RpQ+ v9EX/>YEX/>YEX/>YEX / >Y9/?q_rq]rа +X!Y в 9013533!!##5##3iG78r>G+$N 9EX/>YEX / >YEX/>YEX/>Y9/?q_rq]r +X!Y +X!Y 901##!5!3!!jSc8r+ O#./09$EX/>YEX / >YEX/>YEX/>Y9/   +X!Y +X!Y# +X!Y&а, +X!Y01"'# 543"337&543236754&#"㮑qܿ_\S[9><:.̴&, H ox56&&;[ 9/EX/>YEX/>YEX / >YEX / >Y 9 +X!Y 901!3##!!' ϒwQgKB$.^ 9/EX/>YEX/>YEX/>Y +X!Y +X!Y а а а 01%3#!!5!!!3jDQAP9EX / >YEX/>YEX/>Y 9/ +X!Yа01!##5&&'353673LVTVJX ѿjki vKG9EX/>YEX/>YEX / >Y9/  +X!Y013632#4&#"#vutV&a|i& #g $%9 EX/>YEX/>Y 9 / +X!Yа  а +X!Y +X!Y01 '&&53>3 !!277"!54& TX Os/A;šL ݻ]v ~+!,Oa 9EX/>YEX/>Y 9 / +X!Y +X!Y  +X!Y01 # 5!&&#"'66267!9 ;?v-A@ɘ z,"+Bl9EX/>YEX / >Y +X!Y9 9/в 9  +X!Y +X!Y01!5!#"&5332654##5RƢqess}ěIPZSOo9аEX / >YEX/>Y  +X!Y 9|/`p]0@]]q +X!Y +X!Y01#"54632"!&&267!oڅ y6xy,5 .۝8'%()9EX/>YEX / >Y 9/]а/]@ /?O]] +X!Y +X!Y   +X!Yаааааа$ +X!Y!$9 !]01!!!!!!5367#535'#53'&632#4&#"{s&e 4ؿTSMWBE5lJ'жZg~yF" #$9EX/>YEX / >Y" 9"/"]" "] +X!Y  +X!Y а"а"а/]/?]] +X!Y +X!Yа01!327#"$'#535#536632&#"!!!N{oPyvnlz[u"|}jhĒ\ ֓\v'()9ааEX&/&>YEX$/$>YEX/>YEX!/!>YEX/>Y а /а/ ] +X!Y  +X!Y +X!Y $!9%&901%!5!46  &5326754&#"##33;6ZSPX]ON] ȕ򖹸HWebTSWdc[(  9 EX / >YEX/>Y 9/ +X!Yа а /  / ] ] / q  +X!Yаа а  +X!Y01%!#5#535#53!2!!32654&## asu^M:MgUVe7 $%&9EX / >YEX/>Y 9|/P`q]  +X!Y 9$ +X!Y$9 +X!Y$9013254&#"#4632#"&5332654'# Q6>0AEYEX/>Y 9/ +X!Yа в 9 9013##5!'335___ m:y%Om 9EX/>YEX / >Y +X!Y 9/ +X!Y9  +X!Y9901!!632#"&'33254&#"b4>GruCBC5zxcR}8D(M"^ 9 EX/>YEX / >Y +X!Y 9/ +X!Y  +X!Y01"632#"&55463"326542 Gkuޖ-B5D"_bEzw1W$$F6t63EX/>YEX/>Y +X!Y901#!5!SLxTK $%&9а"EX/>YEX/>Y"9|"/"""]P"`"q""q@"P"]""q +X!Y"9 "9 +X!Y +X!Y01#"&547&54632264&"4"26qq5@Aj@@3`1At7=jzyk=7tivv3Z00Z3VV'00F c !9EX/>YEX/>Y9|/ +X!Y +X!Y +X!Y01#"&54632#526'2754&#"BZ~ycN#B43A<69}x;R4EHAN97D-1/ +X!Y01!5!-cHP /а/ +X!Yа/а/@/?O_o]/  +X!Y013#4632#"&732654&#"nNLliOQkc4%$00$%4NdeMJcbK%11%'33v QEX/>YEX/>Y 9 / +X!Y +X!Y +X!Y01!!!!!!_ L< JN)6CDE90а:EX&/&>YEX/>Y&(а(/ +X!Y&9/9/5 +X!Y59&90 +X!Y: +X!Y&A +X!Y01##"'3#"$547&547&&554632!32654'%326554&":s΀QE%sʏ2uZdUKq0$1r@zYXwuuUid_#/JXbyY2HwQ1_H0BM^@k KfgNJffMV_Np9 EX / >YEX / >YEX/>YEX/>Y 9 9 +X!Y  +X!Y01%#"553273#32675&&#"cnqls|t`|}cs  6/c 9EX/ >YEX/>YEX/>Y9/ +X!Y 9 +X!Y01#!2!&'54&#%!2654!!)G;{pVeEs=1ytqm0 YEX/ >YEX/ >YEX/>YEX / >Y9/q +X!Y 901##33!!C6  pdG 5 TEX/">YEX/>YEX/>YEX / >Y9/ +X!Y 901##33!!oi' LEX/ >YEX/ >YEX/>YEX / >Y99 901#33!!8f5" LEX/">YEX/>YEX/>YEX / >Y99901#3!!sY*P v* H9EX/>YEX/>Y  +X!Y  +X!Y013!2#3 5%v{G=\C`OCP9EX / >YEX/>Y 9  +X!Y +X!Y 901#"546632#&&# 3267B~ }r톇x| , DpiHbpv  !9аEX/>YEX/>Y9/]oqqrr_rq?q/]r +X!Y9 +X!Y +X!Y013!2#32654''36654&##vY[`pfd[cgeO#cUAHEOF  GEX/>YEX/>YEX/>Y 9 / +X!Y 901%!#3#!?_Tsi+ 9EX/">Yа/01#546&?U+Sm|Yu~ ^/а/@ /?O]  +X!Y а /а/а/@/?O_o]/01#"&533265%3#LIGLra|zc4<<4v/а/@ /?O_] а /  +X!Y +X!Y а|/@ /?]а/?O_]]01#"&#"'46323265'3#_F8)*g_F,*,öLiF2%KmF1%z [/а/а/@ /?]/9/ а /а//]   /013#'#3##ԟ3؝L\ [///а/а/@ /?]9а// а /  / ]01#'#%3#3\՟#ڎ\ u a/а///а/@ /?]9а/ а / 9 +X!Y901#'#%3'6654#72\?8I8碢t}>iYK7A;u\/а///а/@ /?]9 а /@ ? O _ o ] а /@  / ? O _ o ] а/  +X!Y  +X!Y01#'#%37#"&#"'46323265\*Y=1{$)ZY<*&,玎>_B,@`A-v3 9EX/>YEX/>Y +X!Y013!#!.7u~ ^/а/@ /?O]  +X!Y а /а/а/@/?O_o]/01#"&533265'3#LIGLea|zc4<<4u [/а/@ /?O]  +X!Y а /а/а/9 +X!Y901#"&533265''6654#72PDEMH?NDbyyb49:3v6`PD/::KEX / >Y015 EX / >Y 01O!EX/ >Y01M"EX/ >Y016#EX/ >Y01K$EX/ >Yа01F%EX/ >Y01k&B 9EX / >YEX/>Y  +X!Y +X!Y01#"$'54$32#&&#"3267$ܠ 4ҬE<J阒4䏖k& X !"9EX / >YEX/>Y  +X!Y +X!Y 9 / +X!Y01%#"$'54$32#!"3267!5!&Fܰέ#+.d_rH1O30$ H9EX/ >YEX/>Y  +X!Y  +X!Y013!232554#AĮ8& kr H!"9EX / >YEX/>Y  +X!Y +X!Y01#"$'54$324#"327rشت*&ܭfn N1M"% kr#H$%9 EX/ >YEX/>Y +X!Y  +X!Y01%#"$'54$ 4#"325rC>ڪ(h'ܭfob M.R 3EX/>YEX/>Y9/ +X!Y01!#5%39izn,[ 9EX/>YEX/>Y +X!Y99  +X!Y 9901!!56654&#"#46632!,`F9iZg{yׅWnI?c@HZx`sjZf\9 /EX/>Y +X!Y9 9/  +X!Y +X!Y901!5!#"'732654&##5wې9ĪHďgX{5 SEX / >YEX/>YEX/>Y +X!Yа/9 в 901%3##!'3!նXd;6*f`9/EX/>Y +X!Y9/ +X!Y9 +X!Y9901!!676#"'732654&#"Z)-eJxSfu2uc5;C&/EX/>Y +X!Y901#!5!>2u ~/а/@ /?O]  +X!Y а /а/а/@ /?O_]а/ +X!Y +X!Y 01 &533265#"&#"'46323265ްLFHJ_G8**haE/,,e{{e5:<3KkG2%MlG2$\O/а/а/01#3OOm 9 EX / >YEX / >YEX/>YEX/>Y   +X!Y 9/ +X!Y +X!Y +X!Y  +X!Y01!!"5463!!!!!7'"mGڅS Lφ5 . 5sT$V%&9 /EX / >Y +X!Y 9|/ +X!Y  +X!Y01267#"546632#"'72754&#"阽r{ڇ󲞄/}ѰRmȾZY  +X!Y а /01%#"'7325p[F8$=|bO 9L*EX/>Y01j"NEX/>Y01,MEX / >Y 01f$KEX/>Y01c0O EX/>Y015XeEX / >Y01o1EX/ >Y01Y:SEX / >Y01h"EX/ >Yа%01;JLK:K::\:& :v!h"#9EX/>YEX/>YEX/>Y +X!Y 9 /б +X!Y  +X!Y01%32654&##5&#"#6632#"'KHM\|tTFQxhٯ|l1eRXG9ao6b H9EX / >YEX/>Y  +X!Y +X!Y01#"&5324& 3267>Ď >Ⱥ,Ŵ:3EX/ >YEX/>Y +X!Y901#!5!,D)|Ff9 /EX / >YEX/>YEX/>Y 9 9  +X!Y +X!Y01#"'#3632'4&#"326Fmi{DGzώz|7PNM9EX/>YEX/>Y +X!Y99 +X!Y01%2673#"5546632#&&#"BZzztzx\yiOfd+_vOf9/EX/>YEX / >YEX / >Y 9  9  +X!Y +X!Y01466323#'#"&&57327&#"Op͂jl~t{FF}&w)u}OVN&'(9 EX/>YEX/>YEX / >YEX/>Y9  +X!Y99 +X!Y$ +X!Y014663273#"&'732655#"&&7327&#"OmͅiUI5jrxFE|&r/-Lw{LUNE9EX/>YEX / >Y +X!Y +X!Y0146632#"52654&"L ' 1 ĵ|`DNp9 EX / >YEX / >YEX/>YEX/>Y 9 9  +X!Y +X!Y01#"'#36324&#"326Doȁll |DExtq'xxO`Nm9EX/>YEX/>YEX / >YEX / >Y 9  9 +X!Y +X!Y014663273##"'7327&#"Oo͆kj xFH~&n&p'vsS N 9EX/>YEX/>Y9/]_oq/q]q  +X!Y +X!Y +X!Y01"5546632!3267"!54&v}>U1:?f|s(!{/ 29|pQVN$"%&9" EX/>YEX/>YEX / >YEX/>Y9  +X!Y99 +X!Y" +X!Y0143273#"&'732655#"7327&#"QýkW75ujsCDv&+r.!?"v/[]&2l,349,а,EX / >YEX/>YEX/>Y 9 +XY! 9* 9 0 +XY01"&54677'&54632653!''277654&#"Rr2@\H:ԀJtXEB\9*?IB73?UN"Eisy{l2cܠL]-00H?J)J*+5A,:< >9EX / >YEX/>Y +X!Y 9 901!!5737m+}}Lq&&WL9EX / >YEX/>YEX/>Y 9|/ +X!Y +X!Y 9/ +X!Y   +X!Y 901!!!!!!!!!E  mw @v Y 9 EX/>YEX / >Y 9/ 9/  +X!Y  +X!Y01332##32654&'vלksvcЪ_UReOo(j)*9а%EX/>YEX/>Y99 +X!Y"9#9% +X!Y01#"'#7&5463273&#"!4'3265zL{H(Cb<$gB_AGnÛ4LirYR4wY0ö19EX / >YEX/>YEX/>YEX/>Y 9/] +X!Y 9/ +X!Yа аа01##!##5353!533!5!ZZZ Z O%OvKg[9EX / >YEX/>YEX/>YEX / >Y +X!Y 9 901"'73255#33G8$>| K 92G T9EX/ >YEX/>Y9/]?qoqq]r +X!Yа +X!Y +X!Y013#53!2##326554&##3+?ızIƪ>FR9EX/ >YEX/>Y9/]?qoqq]r +X!Yа +X!Y +X!Y013#53!2##326554&##3+?ızIƪ>FRv 9/EX/>YEX/>YEX/>Y/]]9/ +X!Y9  +X!Yа01#63 #4&#"##53533qwZa^Hu=p]Ǫ-NEX / >YEX/>Y 9/ +X!Yаа  +X!Y 01###53!5!!3>:(Au9EX/>YEX/>Yа +X!Yаа/а/ +X!Yа  +X!Yа/013#3#327# #535#531?*+SMҲA>7 5B6&%D#6EX/ >Y 01B6&%u6EX/ >Y 01B7&%6EX/ >Y01B,&%7 /01B&%j6EX/ >Yܰ01B&%Xj /ܰ01B&%'^f<&'yL=&)D=EX/ >Y 01L=&)u=EX/ >Y01L>&)=EX/ >Y01L &)j=EX/ >Yܰ01=&-D=EX/ >Y01}=&-u5=EX/ >Y01z>&-7=EX/ >Y01 &-jb=EX/ >Y ܰ01,&27 /01f6&3D:6EX / >Y 01f6&3u6EX / >Y!01f7&36EX / >Y#01f,&37EX / >Y"01f&3j6EX / >Y&ܰ/01}6&9D6EX / >Y01}6&9u6 /01}7&96EX / >Y01}&9j6EX / >Yܰ!016&=u6EX/ >Y 01Z&EDEX/>Y+01Z&EuL /,01Z&EMEX/>Y.01Z&EOEX/>Y-01Z&EjxEX/>Y1ܰ:01Z^&E4EX/>Y/ܰ701Z|&E'O<N&Gy=S &IDEX/>Y01S &Iu@ / 01S &IAEX/>Y"01S &IjlEX/>Y%ܰ.01&DEX/>Y01i&u!EX/>Y01f&#EX/>Y01q&jNEX/>Y ܰ01y&RU /01O=&SDEX/>Y01O=&SuU /01O=&SVEX/>Y01O=&SX /&01O=&SjEX/>Y"ܰ+01w&YDEX/>Y01w&YuN /01w&YOEX/>Y01w&YjzEX/>Yܰ!01 K&]u /01 K&]jBEX/>Yܰ 01B&%p:EX/ >Y 01Z&EpH /*01B&%6EX/ >Y01Z&EEX/>Y-01RBv9EX/ >YEX/>YEX/>YEX / >Y +X!Yа/9/ +X!Y901#327#"&547!!!'>WJG,.I\_tsv&bP8^1D,n[bIo\ZRN-89:9/EX/>YEX)/)>YEX/>YEX/>Yа/9 9 / +X!Y 9@ ,<])$ +X!Y. +X!Y 2 +X!Y01%&'#"&54$3354&#"#46632#327#"&542675#" t^`Sjv})*WJG,.I\_tvH ]EyGTeS@YXW8^1D,n[F;^VFSfK&'uK / 01O&Gu) /01fL&'KEX / >Y 01O&G*EX/>Y01f)&'TEX / >Y&01O&G EX/>Y%01fL&'K /"01O&GA /!01>&(g= /01O[&H/01L&)pAEX/ >Y 01S &Ip< /01L#&)=EX/ >Y01S &ItEX/>Y!01L&)nFEX/ >Y01S &I' EX/>Y&01RL9EX/ >YEX/>YEX/>YEX/>Y9/ +X!Y +X!Yа  +X!Y +X!Y01!!#327#"&547!!!!oWJG,.I\_tLV@8^1D,n[_nSm N#+,-9$EX/>YEX / >YEX/>Y9  +X!Y(9(/(/(q((](]_(o(q((q +X!Y! +X!Y#9$ +X!Y01%327#"&547&'546632!327"!5&&IqWJG,.I\_tP}= wid{rj38^1D,n[fR :bV}z}L>&)=EX/ >Y01S &IX /"01jL&+KEX / >Y!01RV &K@EX/>Y'01j1&+KEX / >Y"01RV &KsEX/>Y(01j)&+TEX / >Y'01RV &K& EX/>Y-01j&+RV &K4'~ /)01>&,=EX/ >Y01y^&L] /013&-9>EX/ >Y01|&% /01|&-p2AEX/ >Y01h&pEX/>Y01e#&-j=EX/ >Y01Q&VEX/>Y01X&-R&M&-FEX/ >Y 01&&-.B}K&MN -7&.h6EX/ >Y01Kk&(EX / >Y01D&/}/6&O-&6&0u)6EX/ >Y01b&PuEX/">Y01&&0mU&P&&0 EX / >Y01&PEX/">Y01&&0&Pd6&2u6EX/ >Y 01y&RuR /01&2yN&RA7&26EX/ >Y01y&Rj /01&R`EX/">Y01f&3p:EX / >Y 01O=&SpQ /01f&3 6EX / >Y"01O=&SEX/>Y01f5&3c6EX / >Y!ܰ%01O=&SEX/>Yܰ!016&6uq6 /01|&Vu /01&6nON&V 7&66 /018&V /01J6&7u6 /*01K&Wu: /)01J7&76EX / >Y*01K&W;EX / >Y)01JA&7yK8N&WyDJ&7KN&W0J7&76 /,01K&WR /+01-&8wrA&X-D&8yAA&Xy-7&86EX/ >Y 01'&X}},&97EX/ >Y01w&YQEX / >Y01}&9p: /01w&YpJEX/>Y01}&96EX / >Y01w&YEX/>Y01}&9Fj /ܰ01w^&Y4 /ܰ01}5&9:6EX/ >Yܰ01w.&Y /ܰ01}Y !9EX/ >YEX/>YEX/>Y9  +X!Y +X!Y01327#"&547 533 ~=OG,.I\_t6$2=)Y7D,n[UE 24wR:h !9EX/>YEX/>YEX/>YEX / >Y +X!Yа/ +X!Y01!327#"&547'#"&533273WJG,.I\_tkŰ>8^1D,n[ab~F 07&;6EX / >Y01!&[ EX / >Y017&=6EX/ >Y 01 K&]EX/>Y01&=j6EX/ >Yܰ01P6&>u6EX/ >Y 01R&^uEX/>Y 01P&>j?EX/ >Y01R&^ EX/>Y01P7&>6 /01R&^3 /01WB&uBEX/ >Y01H&uq /?01i"&uEX/ >Y,01Ow=&u0EX/>Y(01*&0&nFqoqqrrr_rq?q]/]01*&0&nFqoqqrrr_rq?q]/]01$&&2 ]01 &3DEX/>Y 01 &3ufEX/>Y 01 &3gEX/>Y01 &3i /01 &3jEX/>Yܰ01 |&3REX/>Yܰ01 &3'OAC&1ykv&(DEX/>Y 01v&(u5EX/>Y01v&(6EX/>Y01v&(jaEX/>Yܰ01~&DuEX/>Y01[&uEX/>Y01X&EX/>Y01c&j@EX/>Y ܰ01vg& /01Oo&DEX / >Y01Oo&ut /01Oo&uEX / >Y!01Oo&w /(01Oo&jEX / >Y$ܰ-01g&DEX/>Y01g&uTEX/>Y01g&UEX/>Y01g&jEX/>Yܰ 016&u-EX/>Y 01 &3pb"EX/>Y 01 &3EX/>Y01 Rs9EX/>YEX/>YEX/>YEX / >Y +X!Yв9/ +X!Y901#327#"&547'!#!6WJG,.I\_tY_<Ts8^1D,n[a%OC&1uc /01OC&1dEX / >Y 01OC&1J'EX / >Y$01OC&1{ / 01j*&0 /01v&(p1"EX/>Y 01v&(iEX/>Y01v&('EX/>Y01vR9EX/>YEX/>YEX/>YEX/>Y9/ +X!Y +X!Yа  +X!Y +X!Y01!!#327#"&547!!!!_ L^WJG,.I\_t<8^1D,n[_v&(MEX/>Y01TH&hEX / >Y!01TH&EX / >Y 01TH&N'EX / >Y%01TH&jvh&{EX/>Y01n& /01Z&p"EX/>Y01C&HEX/>Y01R&|&'EX/>Y 01$7&EX/>Y01vh&v&u EX/>Y01v&v&EX / >Y01v&rFvg&uEX/>Y 01vg&xvg&EX/>Y01Oo&pp" /01Oo&EX / >Y 01Oo& /ܰ!01v9&u /01v9&v9&/ /01>&uA /(01>&BEX / >Y*01>A&yO>&Y /*01$&%$&GEX/>Y 01$G&y9g&WEX/>Y01g&pP" /01g&EX/>Y01g|&R /ܰ01g4& /ܰ01gc 9EX/>YEX/>YEX / >YEX/>Y9  +X!Y +X!Y01327#"&547&&'3327}wG,.I\_t@~l2VZD,n[]Iֻsh(&EX/>Y016&.EX/>Y 016&jYEX/>Yܰ01A&u0EX/>Y 01A&'EX/>Y01A&HEX/>Y01BA&%LA&)!A&,*C&--2A&3:A&=dA&& EX / >Yܰа!01B%&L)P>,-/j12f34-8=)< &-jb=EX/ >Y ܰ01&=j6EX/ >Yܰ01VyA&P /$01` A& /*01~aA&# /01a,& /01&EX/>Yܰа'01k:O=NS`:v:Z>IeJj9EX/>YEX/>YEX/>YEX/>Y9  +X!Y9 +X!Y01237'&''#&#'6f2r5L)((*6[~|BpCBJht(>{8 ~&joEX / >Yܰ01&jlEX/>Yܰ#01O=A&S" /014& /01f-2&, /#01L &)j=EX/ >Yܰ017=&u=EX/ >Y01J'f()9EX / >YEX/>Y 9 9  +X!Y +X!Y" 9% +X!Y014&$'&54$32#4&#"#"$&53326h|T`w`hjA}ɰp~rj_PkepuΉ|k- &-jb=EX/ >Y ܰ01-.0,6&/un6EX/ >Y019#&=EX/ >Y01B%&7L) #&=EX/ >Y 01j1,f34f'-8)<ZNES NI&EX/>Y 01O=NS|`0NTONM9EX/>YEX/>Y +X!Y99 +X!Y01%2673#"5432#&&#"9[xvuw\vjNef&)]x' K:]:\S &IjlEX/>Y%ܰ.01M&uEX/>Y01KNW}Mq&jNEX/>Y ܰ01KNe&uDEX/>Y01 K&]JEX/>Y0106&;D6EX / >Y01!&[DjEX / >Y0106&;u6EX / >Y01!&[u EX / >Y010&;j6EX / >Yܰ01!&[j5EX / >Yܰ016&=D6EX/ >Y 01 K&]DwEX/>Y01R  EX/">Yа/01e@,EX / ">YEX/">Y а/а/01&%Ks&? /013ej6&1u6EX/ >Y01|y&Qu / 01mB&%zZqN&EL=&)D=EX/ >Y 01 =&DJ=EX/ >Y 01S &IDEX/>Y01&DEX/>Y 01D\O"~:&IEX/ >Yܰ01&EX/>Yܰ01OKdN&S]fK \&3]I:&QM;M&Q9f>&'QO>N&GQJ= _:-#&=EX / >Y01\&EX / >Y01-B&%6EX/ >Y01Z&EEX/>Y-01B&%j6EX/ >Yܰ01Z&EjxEX/>Y1ܰ:01WHPL#&)=EX/ >Y01S &ItEX/>Y!01Q&XjEX/ >Y&ܰ/01YOY&jiEX/>Y&ܰ/01 &j=EX / >Yܰ&01\&jEX / >Yܰ&01I&jKEX / >Y1ܰ:01M&jNEX%/%>Y/ܰ801 &pAEX/ >Y 01&p_EX/>Y 01  &j=EX/ >Yܰ01&jEX/>Yܰ01f&3j6EX / >Y&ܰ/01O=&SjEX/>Y"ܰ+01_O=N_&j:EX / >Y&ܰ/01O=&jsEX/>Y%ܰ.01k&jLEX/ >Y'ܰ001Q&jYEX/>Y(ܰ1019&pA /01 K&]p /019 &j=EX/ >Yܰ 01 K&]jBEX/>Yܰ 019<&/=EX/ >Yܰ01 K&]EX/>Yܰ01 &j=EX / >Yܰ"01_&jgEX / >Yܰ"01X & '-j>EX / >Y ܰ)01&'GjtEX / >Yܰ(01OHB&% ZN&E@B&%< / 01Z&E /*01J&%7!EX/ >Y 01Z|&E7IEX/>Y-ܰ301B&%8+EX/ >Y 01y&E8NEX/>Y-ܰ201B&%9EX/ >Yܰ01ZW&E9MEX/>Y+ܰ101B&%:EX/ >Y ܰ01Z&E:NEX/>Y+ܰ401B7&%'6 EX/ >Y 01Z&E&M@EX/>Y.01B&%<0 /ܰ01Zy&E&%=6 /ܰ01Z&E=x /-ܰ801B&%P<EX/ >Yܰ01Z&EP{EX/>Y,ܰ:01B&%'6 EX/ >Y01Z&E'@EX/>Y,01L&) S N&IL&)C / 01S &I /01L3&)> /01S &IC /)01&)7(EX/ >Y 01S|&I7=EX/>Y!ܰ'01L&)82EX/ >Y 01 y&I8BEX/>Y!ܰ&01&)9EX/ >Yܰ01SK&I9AEX/>Yܰ%01L&): EX/ >Yܰ01S &I:BEX/>Y!ܰ(01L>&)'= EX/ >Y01S &I&AEX/>Y"01&-xC /01~&d /01&-xx&M\ f&3O=N&Sf&3<EX / >Y01O=&S /01fa&37!EX / >Y$ܰ)01O|&S7REX/>Yܰ$01'&38+EX / >Y"ܰ'01=y&S8WEX/>Yܰ#01f&39EX / >Y ܰ&01O`&S9VEX/>Yܰ"01f&3:EX / >Y ܰ)01O=&S:WEX/>Yܰ%01f7&3'6EX / >Y#01O=&S&VEX/>Y01X3&u3EX / >Y)01O&uXEX/>Y%01X3&D43EX / >Y(01O&DEX/>Y$01X&9EX / >Y501O&EX/>Y#01X)&4EX / >Y*01O&[EX/>Y&01X.&O&}&9w:&YB}&9< /01w&Y /01}=B&uBEX/ >Y01w(&uWEX/>Y01}=B&D8BEX/ >Y01w(&DEX / >Y01}=&HEX/ >Y'01w(q&EX/>Y(01}=8&CEX/ >Y01w(&ZEX/>Y01}=&w(&&= :&]F{&=< / 01 K&]Y /01,&=7 /01 K&] /01O&H'&BCm/]q]01-&8QM#:&Q&Q_;&Q7&QM:&QC&LQFN&MQyLq9EX/ >YEX / >Y 9/ +X!Y 9/ аа +X!Y  +X!Y01#!2!#53533!2654&'m*|)|GnʅGsnq9EX/ >YEX / >Y 9/ +X!Y 9/ аа +X!Y  +X!Y01#!2!#53533!2654&'m*|)|GnʅGsn7 KEX/ >YEX/>Y 9 / +X!Yа а  +X!Y01###53!!3`ageM: KEX/>YEX/>Y 9 / +X!Yа а  +X!Y01!##53!!!*/ѪDvEX/ >YEX/ >YEX/>YEX/>Y9/ +X!Y9/ +X!Y а в901###53533#3!!WՋ6  p?ǪdG IvEX/">YEX/>YEX/>YEX/>Y9/ +X!Y9/ +X!Y а в901###53533#3!!oi'W 9EX/ >YEX / >YEX/>Y9/ +X!Yв 901###53!!3zgOOgN _:d 9EX/>YEX / >YEX/>YEX/>YEX/>Y +X!Y 9 а01###53333`΢`o)dEX / >YEX/ >YEX/>YEX/>Y 9/ +X!Y 9а в 901#!!#53!!3ۇs$22$ykq:dEX / >YEX/>YEX/>YEX/>Y9/ +X!Y9а в 901#!!#53!!3W&% )rתdG` M1&*&rim1Fff@Q@O4X:K|6]}6jK&+uK /!01RV &Ku? /'016&2DL6EX/ >Y 01y&RDEX/>Y01B!&%w3EX/ >Y ܰ01 &EEX/>Y+ܰ/01HL(&)<:EX/ >Y ܰ01 &IEX/>Yܰ#01(&-:EX/ >Yܰ 01 &EX/>Yܰ 01f!&33EX / >Y ܰ$01=&S EX/>Yܰ 012!&6&3EX/ >Yܰ01n&VbEX/>Yܰ01q!&9e3EX / >Yܰ01&YEX/>Yܰ01A&d&& |2&F&( O&H&(HO&Hh 0@P]01&,& y&L 6&/un6 /01}6=&Ouk= /01&/K}6&Oy6&&0 x&P\ j&1 |yN&Q &2(yN&R f&36SEX / >Y"ܰ501B&4urB /01|`0&Tu /01&6 rN&VV J&7KN&W|-&8rA&X}&96S /ܰ%018&:C /01&Z /01&: :&ZW 0&; !:&[N P&> R:&^c d&3Fq &3v*!&(<d7&<q9!&<sy& r&<"&  3v 2v(AvhwvhvvgOov,$6Jc&j@EX/>Y ܰ016&jYEX/>Yܰ01v&(jaEX/>Yܰ01v&u# /01>wc&j@EX/>Y ܰ01$dvh&u /019&zEX/>Y01 3v 2vv(vn&EX/>Y 01vvhOovbv,OC1$JB9(')*9/EX / >YEX/>Y  +X!Y 9' 9'/_'r?'q'q'q'ro''q'']'r'r$ +X!Y$'9в 9 +X!Y014&#"#4632#&&5332654'#536pk[fn]on wtCFOF<['$[AWHv,9EX / >YEX / >YEX/>YEX/>YEX/>Y  9 / ]? q q? r q ro  q ] / ]_ r +X!Y +X!Y01##!#3!33, f%(OCC` 9EX/>YEX/>YEX/>Yв9 +X!Y +X!Y901#&'546632#&&# 3267B Ʃ~ }r톇x| I$OpiHbp6 :&Qvn&p" / 019&pB" /01PM`&&suOo&uut>&;(&Dy(&u(&jD6&DUB&%ZYN&E\L&)@ SR N&I R&3#vZ&(x:&\ N0`````B]@o(?3H1 F G k ? c S Z3d/h -d7=w %)-/_7p QW: ,8V"b m ! !,!b!!!"""6"##D#$$%@%&&&'`''('(q())c)**+++,W,--8---..2.U.../4/y////0%0A0Z00001x1122T23#344s45556@667;778X89 9R99:R:;,;|;>A>>?c?@@f@AAUAABBwBC)CD D{DEPEwEF:FFGDGGH0H_HIILIIJJfJKKKLYLMBMN)NNO*OOPyPQHQRRqRSVSTiU UV VwVWWoWXYSYZMZZ[,[H[|[[\|\]] ]]^Q^^__M_Y_e_q_}_`&`w```aEaabKbchctccd dd#dvdeeyefZfffg&ggggghh}hhhiii`ijRjk0kkljlm;mnnXnnotoooooooooooooooooooooppUl~پ0G]sʿܿ2DZq[#:Pg~¡³/FõNevčģĺ 3E\nŅŜų&=IUlƃƏƛư5F[rǃǚDZ/@Rd{ȑȝȩȵ+7NdvɌɣɺ j(@Wn˅˜ˮ˿Fv̴̝̆ #:Qg~͕ͫ+Ulلٜٳ"9KWczڑڨڿ #/;GOW_vۍە۬/GOf~ܖܮ ":RZbzݑݩ*BZqލީޱ޽6Me|ߔ߫*=Og~,C\s*6BNZq(?Zt+7CO[m 6BNZfx'/<|;0 "9Qi)AYeq} ,8DPhz ".:FR^jv ":Qhz !)19AII&2>JVbnz#7E_<.R$ \s d%e`dcVZR(uDG<*iQO4uEh].?z*<([S 9f:erjBq- Tf`J-7}- 0)P1X1 k51TZ|0OOKS-Rqy }-} |syO|O|!Krw! R8Qu}d^]@ Z]DWWmDW J_<7pEBmw]Y+PWgBDMiHgCOOd"O!~d:[ QXO}w&<Yr|u xM)zIl^s> ]<gBuz[8 lGJD[kV T``a~sjd-7RR-?`DOfv{q3"Yh-[1$I- 9_OPkT }[Z'vMn!#Tf_~oh<Qp'q<TIOpg( ` B6 2 (3z_O z_OEDtIOpfJ\mfs{$M*g|j~ ~,4=( ~G~*ga9)F1-p&_tst$!x(-!~5~xQ[]4-g)tRh^S<(/{H>tB@w],U!DUI->!,g)) \0GG)0c32Jl@2]@\ZJrliT-5\i_p!(!|^!4(!^O}(pL. m5YT[Xb@;E^-ez<* $[cE--#-#--K0Y5\<KOX9`g0>BY*A<^({ g;$4>\vLmvOvvv[v$vTv4>f8 v{ O{ BvDPTP_$OT$Wv$vqvY':FBv\v$F]vAv vZ  vgv<vC" vvn$OZ$Av OFBOf8F6v(75OM6KFv; VD(09-zvO`v u z L u uvuuK5OM6KFzkkkknW5kf.Cu\Os9j,fc5oYh&&`vb3:|=POOL|OKSQ[]F vO 1vGXX-SSSSSSS9fBBBBfffff7}7}7}7}TZTZTZTZTZTZTZ0OKSKSKSKSsyOOOOOrwrwrwrw  STZSTZSTZ9f0O9f0O9f0O9f0O:OKSKSKSKSKSrjRrjRrjRrjRqyBBBB B }q-& -}T T UTTsysysysfOfOfO|O8J!KJ!KJ!KJ!KJ!K---7}rw7}rw7}rw7}rw7}rw7}rw 0! PRPRPRHiOzz;$       OvvvvvOOOOOgggg<   OOOOzjvvvvvTTTTv|$[vvvvvvvvOOO\v\v\v4>4>4>4>;$;$;$gggggg(<<*A*A*ASBDoS PB f-)BV``~`O`O`fuJBBq-(  9S uf9f-)TZKSO|0O KSZ!K }n  0! 0! 0! ZReJ&3|STZKSDOsO kfIM9f0O BvBSTZSTZHKSQ<Y<YvIMfOz_Oz_OPk<Q 9  9  9 f_oOSTZSTZSTZSTSTZSTZSTZSTZSTZSTZSTZSTZKSKSKSKSKKSKSKSBB xfOfOfO'fOfOfOXOXOXOXOXO7}rw7}rw}w}w}w}w}w   O-#f_uZ$qyuZ<D )``e0QO4|]}rjRsyST HKBf2n7qr |:O:Oqy -} -}T x|syf|rJ!K-7}-- 0!PR *789x `vv*Av[vvvOmv;$<^<vv4>$[vF `vvvvvvOvmvO;$^FBvO< vFPFO4>(((<STZKS vxl k$A \33fP [ GOOG@f :                        nt ~%'0S_g~7Y #%/EOboy?M    " ' 0 3 : < D t  !!!!"!&!.!^"""""""+"H"`"e% &(1T`h7Y #&0FPcpz>M    % 0 2 9 < D t  !!!!"!&!.!["""""""+"H"`"d%eD# (%^S~|}rsolkiaYP!ߔyMߪެߞߝߖߓ߇kTQ 222tt~lt0Rb{z|  }~+,-.   ()*+,-./012345678wxLM}~NOPQRSTUyzVWXYZ{|[\]^_opv   ~xcyo{z%&&''|(01127889@ABCIJKLQRST_`a befg}h~+ 77YY  ##      "#$%%&/0014556899:=>>??@ABBCCDDEEFOPPQQRRSSTTUXY[\\]]^^_abbco pqruvwxxyyz(,159wCL}NyVXY{[_`o>?pMM r }         " % ' 0 0 2 3 9 : < < D D t t      v    !!!!!!!"!"!&!&!.!.![!^"""""""""""""+"+"H"H"`"`"d"e%%,K PXYD _^-, EiD`-,*!-, F%FRX#Y Id F had%F hadRX#eY/ SXi TX!@Yi TX!@eYY:-, F%FRX#Y F jad%F jadRX#Y/-,K &PXQXD@DY!! EPXD!YY-, EiD` E}iD`-,*-,K &SX@Y &SX#!#Y &SX#!#Y &SX#!#Y &SX#!@#Y &SX%EPX#!#!%E#!#!Y!YD- ,KSXED!!Y- ,,E- ,-E- ,' SX@cTX,pY#SX TX,pYYY- ,@ ZX-D-DY- ++++:0%+8.$+N@2#+H;.!+N@2#+0(+cQ?-+@4$+[J:)+ dN:#+ wbL6!+ w\:#+ v`K6+ ,$ +C7+++ E}iDssPtt?s_ss/tOtottttu?u_uu so u s s t_ t t t t? u/"so"s/*s?*s*r}V_N``9 ! :[ ^ ^ x ^ ^ &  @   && \L T    Copyright 2011 Google Inc. All Rights Reserved.Roboto MediumRegularVersion 2.137; 2017Roboto-MediumRoboto is a trademark of Google.GoogleGoogle.comChristian RobertsonLicensed under the Apache License, Version 2.0http://www.apache.org/licenses/LICENSE-2.0RobotoMediumjd(Y%>E^yy  "$%*+3466;<ADGHKMQQTX]^bbddhhjlnnpp  ((++--03_cz|  ,$%&'y 2LDFLTcyrlgreklatncpspkern $H %&'()*+,-./0123456789:;<=>eg/3579;ACEIKLXYz{}   "$%')+- }  Az<<`>P?<A.>f?v?v??`?v?vA.?  ?@@<0=A H>?< ??>??@6<@P?A.=>PA.>P@?z. B" #?v%0&<0)P>@@9?=<<0P>P>P>P>P>P>P<>>>>?v?v?v?v?vA.A.A.A.A.=>>>>>>><<<>>>>@@>P>>P>>P><<<<A.><><><><>A.>A.>??????@=@=AAAAdAdAjARARARARARARARAdAdAdAdAdARARARAdAL<<<<AdAdAdAj>P>?v?vA.=>P?>A?v?v??v?vA.??=<0?v=?>@>>=?v?v??<>P?=>?v?vA.?<?<0><>?@<<<@@@@=@<<<?v?>P>><@@<=@?v<0P>>P>><<<<0>?<@<@<@>P>>P>>P>>P>>P>>P>>P>>P>>P>>P>>P>>P>><><><><><><><>A.>A.>A.>A.>A.>A.>>=@=@=@?=P>>?vA.>???A.A.?v????`?v??v?A.????@@@@@AA.ARAdARALAjALARAdAj %*,- /6 88:?EFIJLL OO!QT"VV&XX'Z](__,-./0589:<=>FGRbcfhk  n  op""s.0t35w77z99{;;|CD}TTVVXX\^0033EEGHz{}}  "%''))/8CGMOTTeimoxx &6789:<>EHNPTVWX\bcefpr  vxyFHHJW__puww{| 89Ew:;&= &"$&&&prt&%@.08EGHIKSUVYZ]@@ @"9BE`ak3@@@@@@@@@@0#2345678MNO@@0@@@@ @ @!"@#$@%&@'(@)*@+,@-.@/0@12@34@579;=?ACEKMOQSUWY[]_acegikmoqsuw@38:;=9E3 "$2345678MNOprtw8:=9E"$prtw.9bdM  AGHIKUa"B`ak79;=?ACEY[]a@GHIKU"B`ak79;=?ACEY[]aS KMOQSUW_.9bd  Z]#qsu?'+35 !AjEFHI-  JLNPRTVXZ\^`@'+35!AjEFHI-  JLNPRTVXZ\^`8%<= 3C]"$ "$&(*,.024prt(FF% FFFF "$&(*,.024GHIKQRSTUYZ]"+6<>BSUW\`ak#  79;=?ACEKMOQSUWY[]_acegikmoqsu|| GHIKUYZ]"B`ak#79;=?ACEY[]acegikmoqsuG  GHIKU"B`ak    79;=?ACEY[]a:m  GHIJ KSUZ ]  "B`ak        13  # 23456789CDEFGL MNOPQRSZ[\]mnostuvx               79;=?ACEKMOQSUWY[]_aq s u       \^4D^&(* \^4D^&(*"Z\]^4D^#&(*qsub 8:<=Z\]  349:CDEGI]^bcdldm"#$pqrstuwyr 8:<=QRT+369:<>CEGILPSUW\]bdflmo"$ prtwy|u 8:<=QRT\+3469:<>CDEGILSUW\]^bdlm"$ prtwy|S8QRTZ]  +69:<>ELSUW\cm# qsuw|j8:<=QRT\+3469:<>CDEGISUW\]^bdlm"$ prtwy|%'+358:= !9AEGHIJMPQXbdfjlnopEFHI"$-   "$&(*,.024JLNPRTVXZ\^`prtwyz58:<=39CEP]bdflo"$prtwk%8:<=  39:CEGHIJLPQ]bdflmop"$     "$&(*,.024prtwyz: 8:=9:EGILbdlm"$prtwy18<=39CEPQ]flop"$prtw$8<39CEPQ]fopw8=9E"$prtw9QRT\  +46:<>DSUW\^m |$ Z] :m#qsu5QRT+6:<>HJSUW\m z|  vGHIKSU"B`ak19CDEFGPQRSZ[\]mno 79;=?ACEKMOQSUWY[]_a EGHIJ KSUZ ]   "BQ`ac e kp        13  # 23456789CDEFGL MNOPQRSZ[\]mnostuvx               !#%')+-/13579;=?ACEKMOQSUWY[]_aq s u       :HJQmpzOGHIKU":BHJQ`akmp79;=?ACEY[]az"Z]  :GHJcem#qsuz#Z\]4DQ^p#qsu  \v  4:DHJ^cemVz d  :HJcemVz j  :JcemV  bGHIKSpUW[ p"B`akpppppppp   ppp pp79;=?ACEKpMpOpQpSpUpWpY[]_papLxLx[  AaM:JLMXb d mn1.08@JM_ilh :ILbdlm0V~[m|^Kr Ah cIhh0  .0<8:j@IJ L?MX_c1e_i lm0n AJVXam| 1#X[:IeJLfMXbdlm  :cemJ[   :cm l[  :JXcemn1[1IJLbdlXR_:mJX2[4V[ml|nC~{y~}|t}y(} f .08}:@J|LMlX_kcei{lmn1 AVa1J  A Va1[1l1  h&%j Y\j h0X~|( dSNolH32q)cyUUf~3_akj6 w9 %),4 8>EGIILLQTVV"ZZ#\^$'()-./02347>?@ABD  F  GH.0K35N77Q99R;;SCDTTTVVVWXXX\^Y\cefgilm00p33qEErGHsz{u}}wx  "*/8CGMOTTeimoxx  "#$%&(25;BDEFJPQS_a  eghFoHHJW__bbddpuww{|t !!%%&&''(()).. // 0033448899 ::;;<<== >>EEFFGGIILLQRSSTTVVZZ \\]] ^^"  %      ..//"00334455 77 99 CCDDXX\\]]^^!!!# $ 00 33EEGHz{}}             "" ## $$ %%&&''(())**/0 11#28CG MOTT eefi$mo xx#     "  %"           % % %   !!""##$$%%&&''(())**++,,--..//00112233445566778899::;;<<==>>??@@AABBCCDDEEJJKKLLMMNNOOPPQQRRSSTTUUVVWW__bb dd pp qq rr ss tt uu ww{{"|| "        # ##       " !   !$     #         $    #"      " " " !   !        bDFLTcyrlgreklatnH .AZE CRT FRA ZMOL NAV ROM TRK      c2scccmpdligdnomfracligaligaligalnumloclloclloclnumronumpnumsmcpss01ss02ss03 ss04ss05ss06ss07$tnum*        60nL`tflq3210(sutvrwR   ; /0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwyxz{|}~    %&'()*+,-./0123456789:;<=>eg/3579;ACEIKLXYz{}   "$%')+- } q3210(ds0ut/rwR   ; v123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abdefghijklmnopqrstuvwyxz{|}~    EFGHIJKLMNOPQRSTUVWXYZ[\]^0468:<BDFJMZ|~   !#&(*,.~ *BZrMxN`H0I$'a_bc` MNI26rJd~"<N$.8J| <Fh.8BLV( &,   &,68:  &,HF  $$*06JL   $*06bd  $prt % &,!  &,79;I  $ &,KM    &,ce  $qsu &+-,. $G $X`Z\^ $Ya[]_ $fnhjl $goikm%)+-/46;=>EIKMOTV[$]^*,-./015     OX{@JMMJPPJ*  JXXJWKo6,- .//O EGFHIghijklm '(+35FGHKSTU nooIKj.Z^XUWV[Y]\OJKLMNSeff pp  .pfLNMKOeSJU^ .[]^XUWVY\ZJKLMNOSefp.pfJOSSU^ eel%<  !"#$% >zst?@ABCDyubioath-desktop/fonts/Roboto-MediumItalic.ttf000066400000000000000000005304541412677075700220640ustar00rootroot00000000000000 GDEFB4bGPOSnK6le.GSUBYOS/2d`cmapwXFcvt 1M0p\fpgm$-\gasp3 glyfc nameE:t0postad3 prep9݉/Xd( o 9 а а  а  EX/ >YEX/>Y9999 ܲ 9 901!!!!5!(<6 }wx^^^7 <9 EX/ >YEX / >Y +X!Yа/01#34676&V̜K:9NK:7P;LJrKG %EX/">Yа/а/а/01#3#3\S \Sl  ;EX / >YEX/ >YEX/>YEX/>Y 9/ +X!Yаа а / +X!Y а аааа01###73#7!3333#3##3#ӑoԔn of9``Ǟf89B-Q+,-9 /EX / >YEX / >YEX/>Y 9  в 9  +X!Y +X!Y"в& 9) +X!Y016&&'&766773#6&'&#7&&76 QH () UW\} P? $% fbiLqb7ϪpbLlf-ڭs> )7;'<=9'а'а'+а'88/:/EX/ >YEX#/#>Yа/ +X!Y +X!Y#а/#- +X!Y4 +X!Y01'&&77666776&'&'&&77666776&'&'~ $8:YEX/>YEX/>Y 9 9 +X!Y# 9, 9 2 +X!Y01677&&766677!''&&677676&#"8 r=( ]PivyS=ǻDx8" hp 0c H7HdKp?RWZRP|_v4#q`w`xE\*>Rj9IiEX/">Yа/01#3TQwh1 `9/ /017&675O$f%db8 Lm9nοWj*`V/P_ 9//01'67'7G%9sO //|FgK EX/ >Y/  /01%73%'O-K.|܆Xw]pXb!n=.  /а  +X!Y01!!#!7!3q'KL(rF!O 9/ +X!Y01'6773v%(PwΡ6 X/ +X!Y01!7!5# 0C # 9EX / >Y +X!Y0174676&0M<;OL=;Ou=MK;:MJ/EX/ >Y01#3C>}-`: H!"9EX / >YEX/>Y  +X!Y +X!Y01&&76765&'&߽ '1޼ '3 z. AJJ2.KIr0g< nx:EX/ >YEX/>Y9/ +X!Y901!#7%3%@$z ?W 9EX/ >YEX/>Y9 +X!Y 99 +X!Y01!!7676&'&>!I] ZZo 튾 >[E_wԲ=t&9*j+,9EX/ >YEX/>Yа/ +X!Y а) +X!Y)9 а# +X!Y012676&'&>'.7676&''u ^]^   {igcm slG~icqr]uc۸dYEX/>Y 9/ +X!Yа в 9 9013##!73!z"98iqDWc"Zsm9EX/ >YEX / >Y +X!Y 9/ +X!Y9  +X!Y9901!!63'&&'3676&'&!gfx׶e[o ji@e0:fs|-(c%^&'9EX/ >YEX/>Y +X!Y9/ +X!Y  +X!Y01'&6'&&'&7!&676& PuL 刭 AHP0 ^Xl `ր݂keIYRe+3EX/ >YEX/>Y +X!Y901!!7!*;E".n/09а'EX/ >YEX/>Y,а,/ +X!Y,9 ,9  +X!Y& +X!Y01'&&76%&&76$6&'&66&'&6<YW KH wZ d^j f]l` US[ VQ\8w9jߵ}6\demg{Zvf^r/&['(9EX / >YEX/>Y +X!Y 9/ +X!Y ! +X!Y017$7'.7>!#76?6&'& BqR u`@\JJ0 XX}ZфwqсkxUKaFYl+T&QT'yQ2T9EX/>Y0172)"o-rutbd'/а/ +X!Y +X!Y01!7!!7!$Em#F /I9EX/>Y01%77("x,$`%&9 EX/ >YEX"/">Y +X!Yа/9  +X!Y "9901>76'&&'&6$4676#&? ]^H9Rqz^K:8NO68N}$lv4=cUΪfV;LJ9=IG2;;GHI9E+/4/EX/>YEX/>Y49 49 /> +X!Yа4 +X!Y+& +X!Y D +X!Y01&&''&&766676&'&'&7#&$'&$67&'&Mvrz UC(/YV;<}i۟ݜ ocj8w-)$JNO90YEX/>YEX/>Y9/ +X!Y 901!!3#!}߮cSPZ' l 9 аEX/ >YEX/>Yа/] +X!Y9 +X!Y +X!Y013#2676&'%2676'%'ZbOuZhz˴k v9|lgttce P  9EX / >YEX/>Y 9 9  +X!Y +X!Y01'.'&$#&&'&%vDyw& -rXO~r8霋fg_ -' H 9 EX/ >YEX/>Y  +X!Y +X!Y0132#2$76'&&''v *% Oɬݘq' QEX/ >YEX/>Y 9 / +X!Y +X!Y +X!Y01!!!!!!N#c$aFE@n' BEX/ >YEX/>Y 9 / +X!Y +X!Y01!#!!!k$tK9iOk!^"#9EX / >YEX/>Y а  +X!Y +X!Y 9 / +X!Y01%'.'&76''&7!7!Pܴ܁ @v(q6"hkxt!RoW[' T 9EX/ >YEX / >YEX/>YEX/>Y 9 / +X!Y01!#!#3!3ppjviy^5(EX/ >YEX/>Y01!#3+a7 9EX/ >YEX/>Y9  +X!Y013'&&767k dz'q SEX/ >YEX/ >YEX/>YEX / >Y9jz]9eu]01#37!!3MuYEX/>Y +X!Y01%!!3A$'nEX/ >YEX/ >YEX/>YEX/>YEX / >Y9eu]9jz] 9j z ]01!## #^WDU[QZP_mf-' L 9EX/ >YEX/ >YEX/>YEX/>Y9901!##339Ƕk!"H#$9EX / >YEX/>Y  +X!Y +X!Y01.'&7676&&'&7Wx;i 9g 2w[~y #}NW|Zjma' O 9  EX/ >YEX/>Y 9 / +X!Y +X!Y01#2#%2676&'%|^opzod&H'(9$EX/ >YEX/>Y +X!Y# +X!Y01%%'&'&7676&&'&7ЮP/ ;sؐz > 3x[4wY(VȊ $}IYVVWnjn`oa'\9EX/ >YEX/>Y9/ +X!Y 9а +X!Y01!#2!2676&'%b Rnp1ˍ;tqy$)d*+9EX / >YEX/>Y 9 а  +X!Y +X!Y$а' +X!Y016''&&7>'6&'&'.76LQ pstuK |x~FO؏|fqɁr~raIRݗ{dvх|j"/EX/ >YEX/>Y +X!Y01!#!7!HK$b[/=9EX/ >YEX / >YEX/>Y +X!Y01'&77367/" v{3&189EX/ >YEX/ >YEX/>Y901!#!Q ?qP: ` 9EX/ >YEX/ >YEX / >YEX/>YEX/>Y99 9013##33eHb0jFP$AG SEX/ >YEX / >YEX/>YEX/>Y999 901!!!!z*>|1 #-M1EX/ >YEX/ >YEX/>Y901!#!s~[`[% FEX/ >YEX/>Y +X!Y9 +X!Y 901%!!7!7!:$2$ʰ4̬$// +X!Y +X!Y01#3!!s9/EX/ >Y013#<zC'// +X!Y +X!Y01!!73#p.WD.'9EX/ >Yв9/01#3#5)yAEX/>Y +X!Y01!7!"{V$/]а/]9/01#3V/"P + ,-9 &EX/>YEX/>YEX/>Y9 9 / +X!Y 9@ ,<]! +X!Y & +X!Y01!&7'&&76$376'&'&>%677'" {Ls vS!K-%q K(=}J'"lQDdTͣZ;8I:eXCMf 9 /EX / >YEX/>YEX/>Y 9 9  +X!Y +X!Y01'&'#36'4&'&676\& lyZUcN,xvсYEX/>Y +X!Y99 +X!Y01%677'.77>#4&'&U qZ쐰[VgSkb#]v;c9/EX/>YEX / >YEX / >Y 9  9 +X!Y +X!Y01663#7'&&'&77&'&D~]h~[ZdQ/ w,p>;H|};Q !9EX / >YEX/>Y 9/]_oq/q]q  +X!Y +X!Y 9  +X!Y01.7766!7&76'&&c W zkxD^ Z)h~ak.,GR_^e9EX/">YEX/>YEX/>YEX/>Y +X!Y  +X!Yа013#73766&#&3#c ۭ=P,-Ul ՝t ^SfzOBQ*+,9#EX/>YEX/>YEX / >YEX/>Y9  +X!Y99" +X!Y' +X!Y01667'&&'7677'&&'&77&'&FІ[%سr>~_t} \UeU4xodR}Ly<>3;j|w J9/EX/>YEX/>YEX/>Y9  +X!Y016#6'&'&#3tv h ÎֽH+%z ?9EX/>YEX/>Y а / +X!Y01!#34676& H=:MK:9N:7NK69JI F K9 EX/>YEX/>Y  +X!Yа/ +X!Y01'&'73274676"&@G.&H<:MK:YEX/>YEX/>YEX / >Y9jz]9eu]01#37!!; SX/ <wVL2EX/">YEX/>Y01!#3  hR!x"#9EX/>YEX/>YEX/>YEX / >YEX/>YEX/>Y 9 9 +X!Y0166#6'&'&#6'&'&#fžuvU|vY;sZJѼC,%u/+%yy: RT9EX/>YEX/>YEX/>YEX/>Y9  +X!Y016#6'&'&#uv f;ӽE+%w:9'R E!"9EX/>YEX / >Y +X!Y +X!Y0166'.76774&'&I]^ eZzfaX5!ti¨b]yT` Ri 9EX / >YEX / >YEX/>YEX/>Y 9  +X!Y +X!Y01'&'#7676&'&6aa|gQ[[bT-vtpgx=?Iy;`8R m!"9EX/>YEX/>YEX / >YEX / >Y 9  9 +X!Y +X!Y01667#'&&'&7367&'&D\'by[XKo-X4r }m&u?YEX / >YEX/>Y  +X!Y 901&#&#762./\o!:\ :{P$w#%&9EX/>YEX/>Y9 9 ] ] +X!Y +X!Y9]" +X!Y016$'&766'6&'"'&&7265VKOq D}vdWXu,cMXKUN?[GWgQʞWZI;A^9EX/>YEX/>YEX/>Yа/ +X!Y  +X!Y013#27#&&7#73#.fJ%/JK|{ e .AA jJ1:Q9EX/>YEX/>YEX/>YEX/>Y9  +X!Y01%'.7373#{i; uv sakdyA%#| d :89EX/>YEX/>YEX/>Y9013#3V7:w: ` 9EX/>YEX/>YEX / >YEX/>YEX/>Y 9 9 9013##33)&_c)VQ:": SEX/>YEX / >YEX/>YEX/>Y 9 99 901!#!3bbq0 E:D9EX/>YEX/>YEX/>Y9  +X!Y01!'&'76773T6E+Vp&9^ GKp': FEX/>YEX/>Y +X!Y9 +X!Y 901%!!7!7!8&"#7«ĥ0@7 9/EX/>Y 9 / +X!Y 901&&776'&'7677%͞ 9c##!I6 3-'z PhF`7XG: /EX/ >Y01#3Ĥo;79/EX/>Y9/ +X!Y90167767&'&?4'7g)"#p7 9@[J+-H96.&| f[~4>9/в9/ +X!Y а +X!Y01'.#&#663267 ĔQ~tC!"ǑRpDD]Jt$Lr$i\P? 9 EX / >YEX/>Y  +X!Yа/013#&54676̚JvLJ;:M;9MJ89LKL &!Y"#9EX/>YEX/>Y +X!Y9 ав9 +X!Y01%677#7.776773#4&'&X֠/0k:..\S\hR߄""!қaqj} m!"9EX/ >YEX/>Y9/ +X!Y +X!Yа а аа +X!Y01%!7677#737>'6&'&!Y$$Ed#RSZ.#V_$iٶ_gp,A"-.9"EX/>Yа/! +X!Y) +X!Y01%'&''7&'&7'7676676&&'&ԶÇx Xfsny>oDiqяDirӌizUVutrɞrnyywnxz2q 9EX/ >YEX / >Y 9 9/а/ +X!Y  +X!Y аааа01!3!!!#!7!7!7336g9'54*Q_6-/EX/ >Y+013#3ߊ#.9':;9'4/EX/ >Y9 а +X!Y99#а& +X!Y,93 +X!Y,9 +X!Y01'&&732676/$767&76$'6&'&%676'Ra ~xx Y` * tirNS|Tny(ϵihyYkybSxA0#wgml{.1Zq+t 7v=@;rD / +X!Yаа/012"&464672"&L6FF58DDxG38DF58CC13ED`Hy5CD03EC^):.;<9.а.'EX/// >YEX7/7>Y7/9/] /79 /  ] 9 9 +X!Y +X!Y7 +X!Y/& +X!Y01'&&7766'6&'&7$'&'&66$'&$C  ОHQ]{KB=Ib TاeZY,KXw(o\P'o()9EX/ >Y(9/а/ 9 / +X!Y  +XY +X!Y " +XY01&7#"&766376'&'&'66%277#n]mjyh Lw z 6 EZSRf1(R{as}5Kgo}}:-/>>5&,I&Hv%/а/ +X!Y01#!7!.+v^8A:BC9:а:а:8EX/ >YEX / >Y +X!Y +X!Y! 9!/$ 9$/$$] !$9 / ]9 +X!Y) 99!1а$@ +X!Y016$'&$7$76&'&##&7676&''6676&''s^Ų搊 ~~'i5I  ,BJe ;Ya\+v-pRqtL.dy>%$!_?DC6;= 9/ +X!Y01!7!c  1EX/ >Yа/  +X!Y +X!Y0166'&&732676&#"oclf617P5/6Toirk,IO41IT H /EX / >Y а  +X!Yа  +X!Y9 ]01!!#!7!3!7!M == YYEX/>Y +X!Y99 +X!Y 9901!7676&'"66Va +):C O_SC)/G4yh~wYEX/>Y 9|/  +X!Y 9# +X!Y#9 +X!Y#90136676''&66'&&52676'#YS=M J] }IRv}j6S x\m8.C Lizwb;W&)omY8/Y#/]а/]/01!#`T:W 9EX/>YEX/>YEX/>YEX / >YEX/>Y +X!Y0173#7'"'#fZhlRV:U(|Vn9=} + 9EX/ >YEX/>Y901!'&&763Z8+, PBU  9/ +X!Y014676&M;=NN<;N=NO8;MJ=/*9// +X!Y 9 90177676''7>? R8-;U?mwZ< :9EX/ >YEX/>Y9 +X!Y01#7%3cn6/s}B9EX/ >Y9/ +X!Y +X!Y01'&&77>6776&'&J ҙ  gqEFOl EFPl ǙBěBn[IalugFdivdu& s*'L' EX/ >Y01''DEX / >Y01'' %EX / >Y01z#Q$c!%&9!EX"/">YEX/>Y" +X!Yа/9  +X!Y 9901673'&&767767&54676k W_Rx JNSs m_,J:;LJ;:LtWJmoR`eW̩^V;;KJ89LJx{EX/ >YEX/>YEX/>Y9/ +X!Y +X!Y 9 /  +X!Y +X!Y901!!!!!!!!!!,!&#7#<XfUTh6gz# 8/ 9 / 9 9 9в 9  017#kjwACA@!+W,-9 а'EX / >YEX/>Y' +X!Y%аа  +X!Yа$01&''7&77$73&'&6'77W{vl5p8Ja}>)?`$IO ~cyeț"US?NFG2y' Y9EX/ >YEX / >Y 9/ 9/ +X!Y +X!Y01#'#6676&'15Uာpj%qk|L-Z!./9EX/">YEX/>YEX/>Y9 +X!Y 9* +X!Y01!#6$'&'732676&'&7>76&'&ȧ $`.5 qDglXv 2F~ 2<4 EFZuQ1WB&1fn8ABYI4fKo9]Y\7L\pR+5>?@9/а9EX/>YEX/>YEX/>YEX/>Y9 9 / +X!Y 9@ ,<]9:9:/:/:q:]_:o:q::]::q! +X!Y% +X!Y(9, +X!Y 0 +X!Y6 +X!Y01"&''&&76$376'&'&'>6!67%277'&!76'&js5  wWw {{ZcwsUJ:Ar(k N`.SLJ&"uTIbS֍5'9>f^O?H!-*FJ,*a+,9(EX/">YEX/>Y9/ +X!Y! +X!Y' +X!Y01'.7>&''7&'77&'&67[A ` k`?[[ޔ>6ibvV܁YylI06zy9axЭ=:W9а/ +X!Y +XY +X!Y +XY +X!Y01!7!4676&4676&)%N:=NK>;OL=9QL=9QF)=KL89NH 9PI<;KH*w3$.W+/09+а+"EX/>YEX/>Y* +X!Y(аа! +X!Yа'0166767'&''7&'&7&'&%6'676D^N^_apV[ev&5dPp(*y  vN#҄:Sт=<|?=g<<T`X9 /EX / >YEX/>YEX/>Y  +X!Y +X!Y01'&'#3676&'&6 }baSjzZ]bU/vu|YEX/>YEX/>Y]/]9/ +X!Yв99а  +X!Y% +X!Y01##7'.'&7667#737337&'&cU}^3ZTeQ/v8pix8X v󪎎3;i|.mEX/ >YEX/>Y9/9/а +X!Yаа +X!Y а а013##!##733!3!7!_|{ppxx-.v-+v!y ":EX/>YEX/>Y01!#3:!: `EX/>YEX/>YEX/>YEX / >Y9//q] +X!Y 901##33!!sKKH6ET:P! ]EX / >YEX/>Y 9/а +X!Yа +X!Yа а а 017!!773Z#prlFG&'[ KEX / ">YEX/>Y 9/а +X!Yааа а017#773™r45//#Fxh9EX/ >YEX/ >YEX/>YEX / >YEX/>Y  +X!Y 9901'"'73277#3xץ;L#6)"H(FRc9EX/>YEX/>YEX / >YEX/>Y9  +X!Y +X!Y016'&'73276'&'&#vУAD#9've; -)j:P%&'9EX / >YEX/ >YEX/>YEX/>Y +X!Y9/ +X!Y +X!Y +X!Y  +X!Y01!!&&76$3!!!!!7&'&Wi2JR$aFE$NO{sL/ = n@ ;HFtBR /9:;9)а3EX / >YEX/>YEX/>YEX/>Y 94 94/4]4/4q  +X!Y +X!Y 9 9% +X!Y, +X!Y 0 +X!Y01666!7'&&''.736775&'&&!76'&&Tr1p khAC{v1X{rR6S ^Q׏_>A\NK.ƥaSz-)CM  39EX/">YEX/>Y  +X!Y01366&'"ڪYEX/>Y9/  +X!Y +X!Y +X!Y01&$''&776'&&'&'6!'67!I   w֝CE 2TZ[SITh"NClwJFLt9EX/">YEX/>YEX/>YEX/>Y +X!Y  +X!Y аа +X!Y01#'&'727#73766&#"3ÔȢC@ 7$x ت5g*7' 4Ӵe R[&.+^ ,-9 EX / >YEX/>Y 9 / +X!Y  +X!Y( +X!Y01.'&76667376&'&7H{?lwCRe =u # 5wY(~PWXPGgeX{j@ima6'^()9EX/>YEX/>Y9/ +X!Y +X!Y# +X!Y01666773'&76776&'&Qb>gsn%cYzcbz IM)|L'HGGI5si©b}ìQ[V9EX/ >YEX/ >YEX / >Y 9/ +X!Y  +X!Y016677'.73672(jwl"gu}  ~1Jaj9EX / >YEX/>YEX/>YEX/>Y9/ +X!Y9 +X!Y01#7'.7373667a{i; uuv_RR kdyA%#| \{H: )EX / >YEX/>Y  +X!Y01#"'7327̣=F5*!:n6Ph9EX/>YEX/>Y 9 / +X!Y 9 +X!Y  +X!Y01'&77!6&'&'66!E jiACgX UN9 Տ_>B] I)COJ/]//а/а/а/а/]901'''3u- %/]а/]9а/0177#5B̒g pl -/]а/]а/  +X!Y01'&&53267l xCL 煚N=  9/] +X!Y01466&GnJG76KU8GE69DE+ 1 / ]а/] +X!Y  +X!Y014632#"&732676&#"]Rz]Wvk2+2I1+2JRZuTY}tT(BH.+@IQ$=EX / >Y +X!Y017'"&76%$/8= EUWiVV9+mTvC/а/] +X!Yаа а / а / +X!Y01#".'6667 ^-k4O `0"Qw=erYf@/]а/]/а/а//013#3#V.iM ?/а/@ 0@P`]а/ +X!Y +X!Y014632#"&732676&'"jKIaiHJda%!6 #9MgbDJf^F+3!16T#/]/а/]01#3ٴ/#/]а/]/01!# =&/а/9 +X!Y 90177676''7/_ k"(   :<|}F7//а/а//]а//01#!#!   / +X!Y014676&K:7PJ;:M6ID79EF.A/а//013#ĖA#? /а/а/]/  +X!Yа а/013#4676&%6676&賗D72JF32KDF32KE64H20HB44DB34DB40HDBUx.,EX/ >YEX/>Y +X!Y01!#!u 0EX/ >YEX/>Y +X!Y9013!%!1zɷP^%&'9а EX / >YEX/>Y 9|/`]B]r]]0]q +X!Y  +X!Y" +X!Y01!7!.'&7676&'&7K#z:t 9g "  (ysQ!Z|ZjGi1EX/ >YEX/>YEX/>Y901!3!AP NEX/ >YEX/>Y +X!Y9/ +X!Y  +X!Y017!!!!!!$#Y#8#M).9EX/ >YEX/>YEX/>Y +X!Y01!#!#!Y >EX/ >YEX/>Y +X!Yа  +X!Y01!!77!!/# $v+ʢC>R"q#$9а EX/ >YEX / >Y 9/  9 / +X!Y аа а +X!Y01#7&76$7736&'66$$&X}Cz 0 ,  O u] 9EX/ >YEX/ >YEX/ >YEX / >Y 9/а  +X!Y 016673#&733AUV*HHSTcY?ŚwA>YEX/>YEX"/">Y! +X!Yа +X!Yа!01%675'&!7776$7!! ϐ>QQ %ѡ% f 5$'37O3|v]&ިW>3Q+|,-9$EX/>YEX/>YEX/>YEX / >Y +X!Y 99# +X!Y( +X!Y0137'&&''&&'&776677&'&3' 5@N^ YEX / >Y 9/' +X!Y'9 +X!Y ! +X!Y01'&'#>6676&'&2676&''7۸ ^^ ۄtWi XQ`JqYXթu.uoR6wmtiXnfPrew_0:8 9EX/>YEX/>YEX/>Y9013#3iNS>C88$.e/09&EX/">YEX/>Y +X!Y9/+ +X!Y+9% +X!Y0166&"'.76675&&676&'AljLk p,'\۞HMcWwf`z╭18A7M7u's5;h}(Q'()9EX/>YEX%/%>Y%9/]/q_oq]qZ] +X!Y9 +X!Y 9  , ]% +X!Y 9  ]0167&&76$'4&#&'"673'&&/ =O βeNY n g\Z ~)S!mHBHPDyUJ?NUJkPf}PQ9 /EX/ >Y +X!Y9 9 9 +X!Y 901'7676''$67!7P]YI z+? Nu" ^$=!aIk/H:7$[ *aRT9EX/>YEX/>YEX/>YEX/>Y9  +X!Y016#6'&'&#e;T,'}:l?" #$9 а EX / >YEX/>Y 9|/`]B]r]]0]q  +X!Y +X!Y  +X!Y01&7477!65&'&! 1߹ "4K7TNNKGBIKGQQ̓Ky dn : )EX/>YEX / >Y +X!Y0127'&&7K'-JK|{ :-@ S9/EX / >YEX/>Y  +X!Y99 +X!Y0137#&&'!'&&''760$ **_ri1. *+>6fk9(->u&-Y./9/EX+/+ >Y +X!Y.+9/  +X!Y+9 +X!Y% 901&#"'"'7676''&'&667&&76$32{X| #~ a`.xl/B ?*B T`ی&[N]%YEX / >YEX/>Y +X!Y  +X!Yааа01#27#&&7!##7!cJ&/EP|{ b훧"[|A X|` S R!"9EX/>YEX/>YEX/>Y +X!Y +X!Y016676'&'#676'&&'&u[Hа  ,aak4u UNk>oIEESvou=ql;S \ !"9EX/>YEX/>YEX/>Y +XY +X!Y  +X!Y01'6&'&'7676&'&77sUTsm{ly)C %:Ϳ1Ndn#W'=QMk,J?!(>58;"d#$9EX/>YEX/>YEX/>Y +X!Y +X!Y  +X!Y01'.77636776'&&'&Y"1;`Wo^Uxv!6=n|/4:fwn#:K9EX/>YEX / >Y +X!Y  +X!Yа01!37'&&7!7!e?!=R_|za"y(J+IW<=9EX / >YEX/>YEX/>Y +X!Y01&''&&77m;9!:  n:kLL_t$}ơ&2"mD$[%&9/EX/>YEX/>YEX/>Yб +X!Yа" +X!Y01&'&76766#66'&&rhqn q`q{fW^gV6 # [h}cu1$񫁐6?"<S9/EX/>YEX/>YEX/>YEX/>Yб +X!Y0166'&'#&73D #+ WW RR g_:z"~xvD2"DB@kT=+`#,-9EX/>YEX/>YEX!/!>YEX&/&>Y +X!Y !9! +X!Y016736776'&''&&''&&7(ROFC=[}54 rVy  -4 rjӢ9w{FK1@|xYxe_+P(n)*9 EX/ >YEX/>Y!9!/ +X!Yв 9 +X!Y!а% +X!Y01'.777&766774'&9K%~[/0da4ܟ4r8T9J V uy׀#x o,٭!L87pTMmV 9EX/ >YEX/ >YEX / >Y 9 +X!Y +X!Y0166'#&'&'63G?W;Q53A,hY^8%<@? y`E]>W}:*h +,9 !EX/>YEX / >Y +X!Y в  9аа  +X!Y! 9'01''&&''&&777!&'%67736ZxYEX / >YEX/>Y +X!Y9/   +X!Y +X!Yа01!676676&'&#!7!"Mo rynv$Ns'zn sg !"9EX / >YEX/>Y 9 9  +X!Y 9|/`]r]B]0]]q +X!Y +X!Y01'.'&$#&&'&%!67!wD {v=$ ~|$~q9랋b"} #$9 EX/ >YEX/>YEX/>Y9/  +X!Y +X!Y +X!Y" +X!Y01#!!#776677!6676&' f RqC[$)[qiv̂ o&}n.9EX/ >YEX/ >YEX / >YEX/>Y 9/ 9/  +X!Y  +X!Y +X!Y01!3#!!#36676&'klannUqkEkzsh|_9EX/ >YEX/>YEX/>Y +X!Y9/ +X!Yа01!6#6'&'&#!7! FKLd}$A8@0L%| I /EX/ >YEX/ >YEX/>YEX / >Y +X!Y013!3!#!"lY??DPh# a9 EX / >YEX / >Y  +X!Y 9/  +X!Y +X!Y01!#!!6676&'}v=VpkwiyW9 /EX / >YEX/>Yа  +X!Yаа  +X!Y01#!#6!3%!>`?[es7}ٴ_fnUf0S3UB~EX / >YEX / >YEX/ >YEX/>YEX/>YEX/>Y 9/ +X!Yв9 в901###!!333!!nn9Xjj97tt``M)*+9EX/ >YEX/>Y9/q]z]J] +X!Y 9' +X!Y'99! +X!Y012676&'&>&$7676/7w~ }mg c\ 5f~$#Ixj^ppawiعx.l dyn'| EEX/ >YEX/ >YEX/>YEX/>Y9 9013##3}P|O9EX/ >YEX/>YEX / >Y +X!Y   +X!Y01#!#776677|RqDX"~*PSD9EX/ >YEX/ >YEX/>Y9  +X!Y01!'"'77277!MT/A4nCDUl|V",c-.9а$ // 9/$ 9$/  +X!Yаа/$а/# +X!Y012''#7"&76$73#%326'&&' <@((s(* `n$OYܩo%| < /EX/ >YEX/ >YEX / >Y +X!Y013!33#!"l٫t=_jG9EX/ >YEX / >YEX/>Y  9 / +X!Y01#'&&737jkLL`|P>,6*+c IEX/ >YEX/ >YEX/ >YEX / >Y +X!Yа01!3!3!P+cU /EX/ >YEX/ >YEX/ >YEX / >Y +X!Yаа а а01!3!33#!ۥr= ^ a9 EX/ >YEX / >Y 9/  +X!Y  +X!Y +X!Y01!#!!2676&'u`V mmwg{. r9аEX / >YEX/ >YEX/>YEX/>Y 9/  +X!Y +X!Y01#!36676&'#3VpkwiyI# R 9 EX / >YEX/>Y 9/  +X!Y +X!Y01#!36676&'VpkwiyO !"9EX/ >YEX/>Y +X!Y9|/0]r]]B]`]]q +X!Y  +X!Y9 901677!76&'&6'&'C~|:$~#(Ky Gڛd~xsѝ2( )*9 $EX/ >YEX/ >YEX/>YEX/>Y 9| / q` p ] +X!Y +X!Y% +X!Y01&7##3367676&&'&7/ir'o| 9g 2w[~y #< 'qTD,|Zjmac9 EX / >YEX/>YEX/>Y 9/ +X!Y9  +X!Y01!!!&&7>3'"_gX ksY׆ oAwkPqCa+d,-9EX/">YEX/>Y9/999 +X!Y% +X!Y01'.7757776736&6776&[ 1#^R׿AO}M bXu gKP2fdS9M[J:ds": !9аEX/>YEX/>Y9/]_oqq],qZ] +X!Y9 +X!Y +X!Y0136676&''276&''"b Ta/ao GR Md:+IQzVJA9C:?:,EX/>YEX/>Y +X!Y01!#!f9v:d:]9 /EX/>YEX / >Y +X!Yаа  ааа +X!Y017667!3#!#%!1jNۚZ8a8[hv6?aBr:EX / >YEX / >YEX/>YEX/>YEX/>YEX/>Y9/] +X!Yв9 в901###!!333!!LLstJJg90SMM?WWP)*+9EX&/&>YEX / >Y& 9/q/qq_oq]]Z] +X!Y9  +X!Y9]& +X!Y"9 ""]01'&&7332676''76676&#&66^fHE|}bPWy Ug ODKs s\Jv3!}OiQEVUHID?GMAJH: EEX/>YEX/>YEX/>YEX/>Y9 9013##3T||:>:>": iEX/>YEX/>YEX/>YEX / >Y9|/]CS]q +X!Y 901##33!!~KK^m64T:PI:O9EX/>YEX/>YEX/>Y +X!Y  +X!Y01#!'#776677Ic5̟R$[s`:v<R": YEX/>YEX / >YEX/>YEX/>YEX / >Y 9 9 901!###!.zl%- F&:G: EX/>YEX / >YEX/>YEX/>Y 9 / ]_ o q q_ r/ ? r q / q ] r +X!Y01!#!#3!3LjLONK:=H:9EX/>YEX/>YEX/>Y +X!Y01!#!#!isv:S:2EX/>YEX/>Y +X!Yа01!#!7!"yy=`Q!,8~9:9)а4/EX/>YEX/>YEX/>YEX/>YEX/>Y6 +X!Y&а1 +X!Y+0136'&'##"&'&77666'&'&327&#&DEXZFHqOHRR>F #1'&  7$!;P-!@8$r Uٸ<7+~[9 7 GW0 H: </EX/>YEX/>YEX / >Y +X!Y013!33#!m8:xAp ;I9EX/>YEX/>YEX/>Y9|/ +X!Y01!##&&7373dF[a56 SrakܼL0&y *: IEX/>YEX/>YEX/>YEX / >Y +X!Yа01!3!3!ÛFG:xx:<:L /EX/>YEX/>YEX/>YEX / >Y +X!Yа 01!3!33#!GG운m9:xxA:O: a 9  EX / >YEX/>Y 9/   +X!Y +X!Y +X!Y01#!!7!6676&'Qְ !"]=\| LL¡v^SMY": o9аEX / >YEX/>YEX/>YEX/>Y 9/  +X!Y  +X!Y01#!36676&'#3ְ !]=\| MK¡:^SMY:": O 9 EX / >YEX/>Y 9/  +X!Y  +X!Y01#!36676&'ְ !]=\| MK¡:^SMY#Pw !9EX/>YEX/>Y +X!Y9|/S]@]9 +X!Y +X!Y9S]01&>'&&77!6&,T} rWWQ\C]iQla[v*~$S'&()9&EX/>YEX/>YEX/>YEX/>Y9//qq]_r +X!Y +X!Y$ +X!Y0136$'.7#36774&'&G!]dz~cOMbZwa`y?-}ׂ<:7YEX/>YEX/>Y9/ +X!Y9 +X!Y01##!&&76$3'ENPM  ND6\:s-[@N8_ G#$%9!/EX/>YEX / >YEX/>Y!!!]/!]!]#!9#/б +X!Yв9  +X!Y +X!Y01!6#&'73276'&'&##7373!3zɥCB5+ | fϙ +%z;Te !9EX/>YEX/>Y +X!Y9|/ +X!Y9 +X!Y901%677'.77#4&'&%!V qV0ް\Sh-X _gSkd6arF:} !9 EX/>YEX/>YEX/>Y9/  +X!Y +X!Y +X!Y +X!Y01#!!#7766776676'0Aֲ !K7ɦd%\o`{7Y} :ve\O \:9EX/>YEX/>YEX / >YEX/>Y 9/ 9/  +X!Y +X!Y  +X!Y01!3#!!#36676&'{GBֲ !SjS!8]{ JQ#:_L@M u9/EX/>YEX/>YEX / >Y]/]]9/б +X!Yв9 +X!Y01!6#6'&'&##7373!.tv hЇֽH+%zH: F/EX/>YEX/>YEX/>YEX / >Y +X!Y01!3!#!Û>?:xf:`.#a$%9EX/ >YEX / >YEX/ >YEX/>YEX / >Y9 +X!Y01'&&''&&7367367.l%ڻKCdPE_WL*+HWx-+KQ{D:"]#$9EX/>YEX / >YEX/>YEX / >Yа/ 9  +X!Y01'&&''&&7367367s["sr88StsrB;Ohs:RJBPGCQspP&&CNvk!t9EX/">YEX / >Y 9/ +X!Y 9/ а а +X!Y  +X!Y01!'!#733!6676&'6ǹ 66rC`| FO:̩:3[pVLf+&'(9EX%/% >YEX/ >YEX#/#>YEX/>Y%#9/9  +X!Yа" +X!Yа +X!Y901#&&'&%!7'.'&7#3P] yw<"+ }O'xqO2J윋d -~QRtS& '(9EX&/&>YEX/>YEX#/#>YEX/>Y9|/R]@]а  +X!Y 9 +X!Y +X!Y9!0136$#4&'&%!677'&7#3sEïYVVy J%:X pNq_t22l0iQlb:: WEX/ >YEX/>YEX/>YEX / >Y 9 / +X!Yв901###!3#!N}JJi\HKVVPh: WEX/>YEX/>YEX/>YEX / >Y 9 / +X!Yв901####3#3'c01RX6.:Tm>}EX/ >YEX/ >YEX/>YEX/>YEX / >YEX/>Y9/а +X!Y ав901!3####!!#3!X@}JJhKHLgIPVVU0}:EX/>YEX/>YEX/>YEX/>YEX / >YEX/>Y9/б +X!Y ааав90133#######33'k^6]21R1u6.v:Tmdy  9 EX/ >YEX/>YEX / >YEX/>Y9/а +X!Y в9 +X!Y01#6&''#'&#6$%!!y99V|h lil:9 $,>$ay}\s`*:u 9EX/>YEX/>YEX / >YEX/>Yа/а +X!Yв9 +X!Y0137667!#76'&''#'"!б$MN&r 㾩4- as~k 5!$%&9$EX/ >YEX / >YEX/>YEX/>YEX/>YEX/>Y 9 / +X!Yа  ав"9 # +X!Y01!67#3!!#6'&''#'&!G;Vkp9:g lin;+=_k{ta=. \s:"-:!$%&9$EX/>YEX / >YEX/>YEX/>YEX/>YEX/>Y а / б +X!Yа  ав" 9 # +X!Y01!767#3!!#76'&''##!MJR#MN+sਫ਼dX:' ⿩5, avk B1*3 459 3/0/EX / >YEX/>Y 9/  +X!Y( +X!Y(9" +X!Y0]02а2/2]+029-а-/012676&'%7''&&76632676&''777#5} ek#jfh5[tƪ4rx#͓MsjVc\tm,pih>*qlkyJ %.²+/09++/EX/>YEX/>YEX/>Y9/]_oq/?rq/q]r +X!Y# +X!Y #9 +X!Y+-а-/--]&+-9(а(/01676'!7##&&76632676'#777#5! Ѭ%Yh0h O̓nu\FjaB.mPFb$s%&9 аEX / >YEX/>Y  +X!Y 9|/s]`] +X!Y  +X!Y01.'&76$&%676&67Pz8E`3 9g>>XsC|Z 05036&Rm9 аEX/>YEX / >Y +X!Y 9|/R]@] +X!Y +X!Y0166'&77&%6&F[ aedh ($}^G9EX/ >YEX/ >YEX / >Y 9 +X!Y01766'"#3*2WKv2[>cvwDRG 9EX/>YEX/>YEX / >Y 9  +X!Y01732&"#7$w88'K7{Χn``" o:fu/&W'(9EX / >YEX/>Yа  а  +X!Yа  +X!Y#01'7&'7%7&''77$6M4ƕ > $Ln&rt$x@bd5B=bbW85#Z$%9EX/>YEX / >Yа  а  +X!Y +X!Yа!017'7&7766676''775#o}nmylFoo'ln'#1-쳸YEX/>Yа/ 9 а +X!Y) +X!Yв"91а>а>/3а3/2 +X!Y39а9/B +X!Y>KаK/OаO/01'&&''.76$76736765&'#.#"'7666677XUg)|RUaUIDf??UG^|V ;qqm73@ l0Zb+'  SIyڃ*.S_{|/,IQ-. '/$81&lqI1>%^fo[K0EM:NO9: а:FEX/>YEX / >Yа/ в 9 +X!Y  +X!Y! 9(а0а=а=/2а2/1 +X!Y28а8/A +X!Y=IаI/MаM/01'&&''&&7676767736776&'#.#"'766677kqI !Y#$!w'$76PoE;Gb&;: !:mxk72@ l0ZYK Ho|KDo^HH_wl&&BPzu ?EU%2#81&lqMU?^eo\`-#+,-9*EX/ >YEX / >YEX/ >YEX / >Yа/ 9  +X!Yа*а*/(а(/& +X!Y(+а+/01'&&''&&7367367%7!!#7-i&ٿKCdPE]}=WN*+JUx-+KQ~|zzD"*+,9)EX/>YEX / >YEX/>YEX/>YEX / >Y9 +X!Yа)а)/*а*/$ +X!Y*'а'/01'&&''&&7367367%7!!#7s["sr88SstrB;Ohs!:RJBPGCQpkP&&CNvk{{VU9EX / >YEX/>YEX/>Y а  +X!Y +X!Y01#&&7''&zE}J*-]  -tjh T @ESU9EX / >YEX/>YEX/>Y а  +X!Y +X!Y01#&7776'6&'&$E֬VRq VXl' [w£j|8>/EX/>Y01'#'7'77'0T&T VYuuswGbt/ +X!Y01'7!7+' ~l-/а/ +X!Y а / +X!Y01'76'&72>dsV*SAC JWalg(]bM+` /а/0173+&Pyl;<[` /а/01'773NONrA #/;GS_?/K/W/3/EX/ >Y +X!Y?а?E +X!YаKаKQ +X!Y!аW'аW] +X!Y-а39 +X!Y01662'6#&663'6#"66'6#&66'6#&66'6#&662'6#"66'6#&66'6#&o[WmkPUoZYklPRn[XjkPSzqWXjkPR0p[XjkPSBp[WmkOTn[XjkPS'oZXklPRXfiVffWffXfdXffWffYffWffYegWffYeiVfdXffWffXffWffocs "'/!/// //&/EX/ >YEX/>Y01#'37%%77%'%'7f}f} 9 ?J?f@2m_A_C:`Q ZD< ZDNOS;=0'~|%&'J>SEX/ >Y 01~v&'bEX/>Y 01!bw9EX / >YEX/ >YEX / >Y +X!Y 9/ а а +X!Y  +X!Y01!'!#7373!6676&'Yǹ ߩ OC`| FO̩pVLf'O9EX/ >YEX/>Y9/ +X!Y +X!Y01#2'#676&'%!67'7|^_qg, qmXGNXrÁZ6CDCnY`R&p'(9EX/>YEX / >YEX/>YEX/>Y9 9 +X!Y +X!Y01%''&'#76&&'&27'7676TQqNcfba|#\UbU.;IQsD8 Yx6sp@=$k~x"YhaqI" 3 9EX/ >YEX/>Y +X!Y01#!#!3l= `s,EX/>YEX/>Y +X!Y01!#!3t%7v:9.^9 /EX/ >YEX/>Y +X!Y9/   +X!Y +X!Y01!3766'&&'##!uIkG wm^qny:L9 /EX/>YEX/>Y +X!Y9/ +X!Y01!'676&''#!_:(@i Buu\Ovyֈ0Qy::&Qr:&Q<.{&,Q":&QY#bEX/ >YEX / >YEX/>YEX / >Y 9/] +X!Y9а01 !'#7##33733ֶA.)UlkT-32Nmh!:]EX / >YEX/>YEX / >YEX/>Y 9/  +X!Y 9а01!'#7##33733j/$ SKKR$)":T:PcEX/ >YEX / >YEX/>YEX / >Y9/ +X!Y +X!Y 901##!7!3!!l5#j} >pd;l:mEX/>YEX / >YEX/>YEX / >Y 9 // q ] +X!Y +X!Y 901##!7!3!!~Jv"wL_m64TvP'&,Qii:&Qk' _EX/ >YEX / >YEX/>YEX / >Y9/ +X!Y +X!Y01!!!#!#3viO"ppR^y: hEX/>YEX / >YEX/>YEX / >Y 9|/@P] +X!Y +X!Y01!!!#!#3lNA#LiLwK:.k9/EX/ >YEX/>YEX/>Y9/  +X!Y +X!Y +X!Y013766'&&'##!#!nkG wmY@qnyR:Y9/EX/>YEX/>YEX/>Y9/ +X!Y +X!Y01'6676&''#!#!a By PisԦ0*cx6v:e+:;<9:EX / >YEX/ >YEX/>YEX/>Y 9/ +X!Y +X!Y+ +X!Y/а 6 +X!Y01&''.'&77727&76667654'&JҤ .8o?  12% v"1OiE>," 6$ AIWV+Rx<Ѥ}ѵ7B=Z9S2=KR'2349)EX/>YEX / >YEX/>YEX/>Y9/   +X!Y +X!Y' +X!Y*а0 +X!Y01&''&&776737&77>6?4'&M`&g[_mZ{!9ai_kKo4:; xMoƎz\4/~Ֆ peWG&<Q:&\QnQ /EX/ >YEX/ >YEX/>Y +X!Yа +X!Y 01!7!!!33#!##m٫s>_V:M /EX/>YEX/>Y +X!Yа +X!Yа 01#7!#!33#!D"#x횏m8wKxAj&Q<p9;&Q;\P9EX/ >YEX / >YEX/>Y9/а +X!Y013673##7&&7K ;8^p{kQ./K5:.+ P= 4;P9EX / >YEX/>YEX/>Y9/ +X!Yа01!##7&&73373yEu68Y55t`jۤL@k"  G9EX/ >YEX/>YEX / >Y9/ +X!Y01336#6&'&kLL^|,8*Yb!,g-.9+EX/ >YEX/>Y#9#/ +X!Yа# а +X!Y) +X!Y01&$77&&76$%7%76'&&'&ht ^%    t[ vh7!HӥDt(!RQ8SJuHSe!BBpS& '(9 EX/>YEX/>Y!9!/!!]_!o!q!q!/!q!]!!q +X!Yа! а +X!Y9 +X!Y01.7&&76$!7&76'&&maihBIW-hIxC^5 X 8_-hQM}ak}.,GR#[`9/EX/ >YEX/ >YEX/>Y9/ +X!Y 9 +X!Y01##33!766'&&''sjd<qH rr\wmy!:`9/EX/>YEX/>YEX/>Y9/ +X!Y9 +X!Y01'6676&''#33!Bu rnKKH7\*杣.%bmT:P~|&Q~w:&c.Fv 9EX/ >YEX/ >YEX/>YEX/>Y9|/`p]0@]  +X!Y +X!Y01!3'"'7327!# njo֦7N#6)!ok}G?:o 9EX/>YEX/>YEX/>YEX/>Y9|/@P]  +X!Y +X!Y01!3#"'7327!#OOͣ;H=#!RiL:=K:'~&,^~t:&`'~&1"~:&H7$a%&9EX/ >YEX / >Y 9/ +X!Y  +X!Y +X!Y01'&&776'&&'&'6667!=?֬d @ CE n0ŏ[SI)+"NClw/m9EX/ >YEX / >Y +X!Y9 9/ +X!Y9 9  +X!Y01!7!'&&73676&''7S$wE mZot ̮U﯆kdyorT:` 9 /EX/>Y +X!Y9 9/ +X!Y9 9  +X!Y01!7!'&&7676&''7 #rE k_rv vĦJ밅kd~p3F&P&&)T, D:&R'&zTFG&<TF:&\T0 R 9 EX/ >YEX/>Y9/  +X!Y +X!Y013%.7>3%]g ZoiPs̄s.woE!\"#9 EX / >YEX/>Y 9/  +X!Y 9а +X!Y01%.7>336654'#%%f .];Z}nit˄r]XY[xpGQ#2349$EX/">YEX/>YEX/>Y9/9 +X!Y99& +X!Y/ +X!Y016636''"&''&&'&&'&77OˁYm7/v7w|ZR~ewDN7@ + dddcZYӸ;ncϱ38fsuE*f+,9EX / >YEX'/'>Y+ 9/ +X!Y   +X!Y9' +X!Y '9016&''72676'%76''&&7d UW$$/b_ -- {e{xt o>"~F6H 0dddca:)c%*+9EX/>YEX/>Y +X!Y 9*9/ +X!Y +X!Y&901%66'&''&&776''7676'%77Ir= p啗 ckOF!3lyONNN֠|tLq Ou/xR'b$()9/EX / >YEX/>Y( 9/ +X!Y   +X!Y9 +X!Y0172676&'%77'67&'&776&'"nkGT(ǃd,% ]^\ysmquxT35w Qo.G,L}m:#b$%9/EX / >YEX/>Y$ 9/ +X!Y  +X!Y9 +X!Y017676&'%77'67&776&' TT egn &ȃk(# MLCPP{14{&(!Qq-NNNJ#e#$%9EX / >YEX / >YEX/>Y  +X!Y +X!Y  +X!Y 901!#776677!6''&&7YoC^3t)u5.[ r4@ % dddcϮ&:"e#$9EX / >YEX/>YEX/>Y  +X!Y +X!Y +X!Y 901#'#776677!6776''&&70b7ΠM%[s`y<>n  y홬t?N,Qe<^^^^̯'Ps 9EX/ >YEX/ >YEX/>YEX/>Y +X!Y 99|/0@] +X!Y016''&&77!#3!x3-'koio6?"dddcα} ):v 9EX/>YEX/>YEX/>YEX/>Y9|/S]@] +X!Y +X!Y901!#3!374''&&7^MNMy;0w x F:C, 6A^^^^ʲL!I"#9EX / >YEX/>Y  +X!Y +X!Y 901&&76$&'&6'&'Rq)"̏Pz( o XEFJyXW=QE !9EX/>YEX / >Y +X!Y а +X!Y01%67'3'.77>&#"Ybl~_mA]x  linme*D=_?hz4O 9EX/ >YEX/>Y +X!Yаа  +X!Y901!7!!776''&&7EK$_$L5. ;4@dddcαs:O 9EX/>YEX/>Y +X!Yаа  +X!Y901!7!!6'&''&&7"r#X;1w )©w 7@KJw̯V"+w,-9EX/ >YEX/>Y)9)/)qJ)] +X!Y +X!Y 9)99# +X!Y01"677'.76%&'&766$'6&'&à  w 0P1>n$|wcw~efnzg,CUfd]oygekF&TLF:&T]q`# /а// а/а/0173&7] &M>USYа/ ] +X!Y +X!Y01!7!7!7!||`g " 9EX/">Yа/01#76wk&O| 9EX/">Yа/01'6773wj%O 9/ +X!Y01'6773vf#P{  9/а/01&&77 ${EE NHIFIGb q& OO& Q[" 9 / +X!Y 01'6773'6773zo {zt ~PqGPtiK LEX/ >YEX/>YEX / >YEX/>Y  +X!Yа01!#!7!3!+ g;;mrrv`e~EX / >YEX / >YEX/>YEX/>YEX/>YEX/>Y +X!Y +X!Y аааа01!!#!7!!7!3!!!AAflg:;mmn`vLM 9/ +XY01663#"&5}`[p}_Zpd|v^+dst[3&3&'k[f9/ +X!Y014>76.[#12$$11$g1$"/0#!.$(6DRST9а'а+а8аM%/'/EX/ >YEX/>Yа/9а/а/9а/, +X!Y3 +X!Y,:а3AаH +X!YO +X!Y01666'&&''&&7'&&7766'6776&'&6776&'&6776&'&W :8?U :9>Z :7=V 8:=V dkpD68oJ@OgO?ESXFOBVXEPESWGOBVZJHPVHMEUVI]e/9/01#73&T ~/9/01#&?|zo% //017'ZypxoOgOd sEX / >Y 01nSM9EX/ >YEX/ >YEX/>YEX/>Y  +X!Y016632#76'&#4lArtRK_V?azH?=[ &'(9EX/ >YEX/>Y%9%/ +X!Y  +X!Yа/ а%а/%а//] +X!Y +X!Y9!а#01!%!7677737#7376$'6'&!!![$$Ed Ǵ Z~6--_$8yٶiy _#&) *+9 а !а &а (EX/ >YEX/ >YEX / >YEX / >Y 9/а/] +X!Y +X!Y%а ааа!ааа"ааа'аа $а)013#3##!##737#733!337#3'#77'VVVVSV`B0/*Šޗ}NF+X )&*+9&EX/ >YEX/>YEX/>YEX/>YEX / >Y +X!Y  +X!Yав"9"/ +X!Yа/( +X!Y01#27'&&7#!'#733676'&''9gJ&/KJ{{ eip^s|hy..HB# A j\o\]'&6WP;#'+.1(239(а("а($а(-а(/EX/ >YEX / >YEX/>Y 9/а/а +X!Y  +X!Y( 9(/ +X!Y аааааав  9 /"а $а&в* 9, 9 - +X!Y/ 9001333#3#####73'#7333337#37#77#7#7#̀= w m6h6D E<B:*zHHz8¸6:j9EX/>YEX/>YEX / >YEX/>Y +X!Y  +X!Y 9 901#6'&'%#373'935 ]9'uq9B,%x:[N& '(9EX/ >YEX / >Y& 9&/ +X!Y  +X!Yа&а&а//] +X!Y +X!Y!а#01!7'.7737#73&'&!!!D  zi[szseBHc1__.aZD=cq"#B$)߲*+9а#а(EX / >YEX/>Y $ +X!Y а /@  0 @ P ` p ] +X!Yа/@  0@] +X!Y'а'/@0'@'P'`'p'''] +X!Y  а /а/ааа/а/&а01##777323'7#7!!%%&'%%6^/%QM 0/vwL |)$)L9<;;i9EX/ >YEX / >Y +X!Yаа/а +X!Yаа/  +X!Y01#7#!7277!&'%7!4P7fqeQYV[\G 9EX/ >YEX/>Y9/а/] +X!Yаа аа а а +X!Yа а аааа +X!Y901'&'?77377677G۰tb%%6%%%]LWVW~VW6YZ~YYM:] 9EX/>YEX/>YEX / >YEX/>Y 9/  +X!Yа01#776&'##7?3: !MSyzF, +h(oli(iaZ)`{ !9 EX / >YEX/>Y 9/ +X!Yа а / ]  +X!Yаа а  +X!Y01%!#7#737#732#%!2676&'%)($#|9skkk6n>*8<=>9(а,а99/;/EX / >YEX$/$>Y а/ 9  +X!Y +X!Y 9$а/$. +X!Y5 +X!Y01'&&7766'6&#"267'&&77666776&'&' {w y227L -'0C~ ~ $<6>T :7?X yoz%xDs8@XEN2.8<7lDBGRUJOHP[IOgN1$]%&9/EX/>Y9/ +X!Yа +X!Yа! +X!Y01.77767666?4'&fPKv[fT˕ k6Ss,fN3. ?%%U,#) *+9 а а EX%/% >YEX(/( >YEX/ >YEX / >YEX#/#>Yа/а/ +X!Y +X!Y +X!Y"% 9'% 901!7!66'&&76776&'&##33=Pӗ ԕ EGMj DHPiͶ5.ÚJė`imcU_kq^ nEX/ >YEX / >YEX/ >Y9/ 99в 9 а +XYа а01#33####7!><YEX/>Y 9/ +X!Y +X!Y 9  +X!Y01%'&&76$!67&!&„h_ <]Suʊ4 5\\s1g7D+| k'I'$ EX/ >Y01!''$EX / >Y01'!~'$EX/ >Y01'#'*$VEX/ >Y01EH-W./9 /EX/>Y 9/  +X!Y +X!Y' +X!Y016'&&'&'6'.77>&677&&dk nEB  [vaWz t{*0 CFw}69dsUN[U(/EX/ >Yа +X!Y01#!#!M/, 7/EX/ >Y +X!Yа  +X!Y01!!77!!s""=("Eqâƍum1/ +X!Y01!7!#9m4 = 9/EX/ >YEX/>Y9 +X!Y013##7!5)n#Y-PAIR/AdBC9)а;EX / >Yа а/в 9 9? +X!Y$а 5 +X!Y,01'&&''.776666'6''&'&6766776&'&'&.z`-x,& "u*FzE|fXK&%Qj{v5=%ֆ$Khʣ6YEX/>Y +X!Y +X!Y01'"'73766&#"ʣ9M#9ת5g)0)Pe O `S05%|&'9 /а/а  +X!Y +X!Y аа/а/а +X!Y# +X!Y%01632327'".#632327'".#m]M-{m|YEX/>Y99013#%*?67i '9f93 9EX/>YEX/>Yа/01#3#3MNFg/0@P]а/01'6773J{_ $OxSV_&JJ3KL9EX/">YEX/>YEX/>YEX/>YEX/>YEX/>Y +X!Y +X!Yа013#7766&#&7#!#3O #NJ9~p( ΝUQ&3Bz:_o9EX/">YEX/>YEX/>YEX / >YEX/>Y +X!Y +X!Y а 01&"3###?66#m5]x ՝흡 mmB_^Zze _'+,-9)EX/">YEX/>YEX/>YEX / >YEX*/*>YEX/">YEX/>YEX#/#>YEX(/(>Y +X!Y  +X!Y +X!Y!а"а%а&013#73766&#&766&'&7##!!#3c ߮YEX/">YEX/>YEX/>YEX"/">YEX/>YEX/>YEX&/&>Y +X!Y  +X!Y +X!Y$а%а(а)013#73766&#&%766#&#"3##!c 2X7!Ulg fd![y՝_ _Rfe#A\[`zz_'()9EX"/"">YEX/>YEX/>YEX&/&>YEX/>YEX / >Y& +X!Y  +X!Yаа" +X!Yа01#7'&&7#737&#"##737663۹fI#2JJ{| e /BcMg흡 תri:@ j"]X__?+JƲ)KL9EX>/>>YEXE/E">YEX/>YEXI/I>YEX,/,>YEX / >YI +X!Y  +X!YаE +X!YI,9>  +X!Y7,>97& +X!Y,3 +X!Y01#7'&&7#7376&'&6&'"'&&732676$'&76$2&7663~dK#2KJ{x` JM]s RLNs D ~vcVZu K_먹 /R IY_i<:9KVMAZEWhQɟXYIA`NXÖ|9֬XrE (7=CIOVZ^bfjnvz~[9[ а[а[а[1а[<а[>а[Fа[Jа[Rа[Wа[aа[cа[iа[mа[pа[zа[~а[а[а[а[=/EXF/F >Y:+w+{z+I~+N+++A+ =F9 /а/а/ а/o9|o/P +X!YPo9  +X!Y% +X!Y)а)/.а./4 +X!Y=kаgаcа>б? +X!Yeаiаmа<аFG +X!Y_а[аWаJаF`а\аXаKаQ +X!Yv +X!Y01'&&77666&'&673#&'726733!7373!#%7!#73676'7!!7!!7!7!!7!!7!7676/#737#73#73%#737#73#73 `ate]u `&8Om`7:?U 8;?T c;iOSgXV-: d7o$$m72-/3mmn QHmnno WVz @#`p-oo,pp-om,nm,nn-mfy}^p`~xb%'8 XIVL@PTCq@QQEOM]SU_9*;qqttUGKtttttt8qqqqqqQ6~~~\s $(L!/%/а/!а/ 9 /а/а/ 9 /а/9901 4676654&#"36632#33#3#AD$J\:+98][/KR11::'J34@4_YEX/>Y +X!Y99 +X!Y 9901!!7676&'"666Va +):C O_SC)/G4yh~wYEX/>Yа/ +X!Y01!#7%3cn6/s% H9EX/>YEX/>Y +X!Y +X!Y01&&776674'&7%  VvYv 7o0od$[%&9EX / >YEX/>Y +X!Y 9/ +X!Y  +X!Y01767'&&7>#7776'&&'&Զ9m x|L #*tXK?V} P]Ҩxlzֈ9yh[()GQcUq!".!/09!а!'EX/>YEX / >Y, 9,/,q?,q_,r +X!Y,9,9   +X!Y& +X!Y01'.767&7666&#"3266&#"326 IO~ys` ﹬ ZMXx XNWzEMBJhLAHk_e*VlQObfXlEU^JEU]B?LWB>PVX:9EX/>YEX/>Y +X!Y901!!7!c#}<!^"#9EX/>YEX / >Y +X!Y 9/ +X!Y  +X!Y01'&6'&77%&676&e Aw  *3Y  PBW Tq֥N/XqV.MT{[Ti1m9EX/>YEX / >Y +X!Y 9/ +X!Y9  +X!Y9901!!632'&&'2676&#&}#UXh  \{ [W[`?N+ϧv_Ul> W9 EX / >YEX/>Y 9/ +X!Yв9 в 9013##7!73!",,n'P/#'"()9EX/>YEX/>Y9/]oq?q/]qr +X!Y 9& +X!Y&99! +X!Y016676&#&66'&&73676''lpf} SKKo UR|_PY ~VMCKF?[ [lUEOZO`9EX/>YEX/>Y +X!Y9/9 +X!Y 9901!!7676&'&6$R IG`y  ij f-yhASh\R @9EX/>YEX/>Yа/ +X!Y901!#7%3H$ kS˪: H9EX/>YEX/>Y +X!Y +X!Y01&77674&'&67"$YIE.% Z{ [Vd[' FEX/>YEX/>Y +X!Y9 +X!Y 901%!!7!7!0`#i#˜1Ėm1EX/>YEX/>YEX/>Y901!#3 bDK|y SEX/>YEX / >YEX/>YEX/>Y999 901!!!!+1$%hW6 YEX/>YEX/>YEX / >YEX/>YEX/>Y99 9013##33@$@Gg._s>_p1EX/>YEX/>YEX/>Y9017!#7#8JSLs9j=9EX/>YEX/>YEX/>Y  +X!Y01'&&7367j [gkeroibZ/EX/>YEX/>Y +X!Y01!#!7!7#7&p'(9EX / >YEX/>Y 9 9 ]  +X!Y +X!Y 9 ]$ +X!Y016/&76$'6&'"'&'&7326vG  gT]{ =F ؀rmna{9j/$dԛ¢VVPCa]%glOGh]bM  `9EX/>YEX/>YEX / >Y9/ +X!Y 9 +X!Y01###6676''J h Wa) k`U 70`"H#$9EX / >YEX/>Y  +X!Y +X!Y01%'#&&77&&'&676*:(^ I].lb lbL~K:oHqw 6 O9 EX/>YEX/>Y 9 / +X!Y +X!Y01##'2676&''>Gȼ k \XgХ`URa:c H!"9EX / >YEX/>Y  +X!Y +X!Y01&&77666'&&'&67] ] ~kb maC~=@nHqο  EEX/>YEX/>YEX/>YEX/>Y9901!##33w%& `9EX/>YEX/>YEX/>YEX/>YEX / >Y99 901!## #<9tM5IsH| 4)EX/>YEX/>Y +X!Y01%!!3#  KEX/>YEX/>YEX/>YEX / >Y9в 901#37!!դ:W|7Pً ~w09EX/>YEX/>Y  +X!Y013'&&767 Jhêc[EX/>YEX/>Y01!#3  EX/>YEX / >YEX/>YEX/>Y 9 / ]? q q? r q ro  q ]_ r , ] +X!Y01!#!#3!3RSVV%?Q g!"9EX / >YEX/>Y 9/  +X!Y9 ] +X!Y +X!Y01%.77'&'&77#7!:`A tfZ( ݒ 7<ɸZAAn{:ȱ  GEX/>YEX/>Y 9 /J ] +X!Y +X!Y01!#!!!,S#4%s+r,-9EX / >YEX"/">Y" 9  а +X!Y  +X!Y9"а") +X!Y%)9016''&&766773'6&'"#7&&7326<̬ ,-fU]{ >ȡ ڴ..nn`{9j/8~VWPC`0=ǔ]bM h !9EX/>YEX/>Y9/б +X!Yа +X!Yа +X!Y901%%!76?73766'6'&!;:$]"  񸭽 Rg vT@%Ghָ~bo9EX/>YEX / >Y 9 9/|/ +XY +XYаааа01!3#!!#7!7375!733 '&ƙ1ؑ? I 39EX/>YEX/>Y +X!Y01!#! 7= 9EX/>YEX/>Y9 +X!Y01!!3'!v^Db:c"t#$9а EX / >YEX/>Y 9|/`p]0@] +X!Y  +X!Y +X!Y01!7!&&7776&&'&7e#ɓ^!] lb lb N!mGq8 9EX/>YEX/>YEX/>Y9013#3!'v"sG^Q a 9аEX / >YEX/>Y +X!Y 9/ +X!Y  +X!Y01!!7!!7!!7!##pt#8  @ 9EX/>YEX/>YEX/>Y +X!Y01!#!#! 7 M 9EX/>YEX/>Y +X!Y9  +X!Y 901!!77!!{V#xc#DĤC7n9аEX/>YEX/>Y9/в9/ б +X!Y +X!Yа01#7&&76$776'66~8jkmny".g!pQ]9EX/>YEX/>YEX/>YEX / >Y 9/а  +X!Y 016673#&733z35)7822QT~69/9YEX/>YEX#/#>Y! +X!Yа +X!Yа!01%6676'&&'&!77&77>7!N|  o`iT <$g ##<%ȱhYEX/>YEX/>Y +X!Yав9/ +X!Y +X!Y01!7!!67676'&###2 gc)չ'9I 9EX / >YEX/>Y 9 9  +X!Y 9|/]q0@]q`p] +X!Y +X!Y01'.77'&&'&!!7ԐY A `k\}"eW94Aݽgp86[h!n"#9EX/>YEX/>YEX / >Y +X!Y9/ +X!Y! +X!Y01#!!'#776677!%6676&' D;>"f|h$FkAf XY\lkZLZ 9EX/>YEX/>YEX / >YEX/>Y 9/ +XY +X!Y  +X!Y  +X!Y01!3#!!#36676&'kVG SSrAh XYlʦ%kZLZb\9EX/>YEX / >YEX/>Y +X!Yав 9/ +X!Y01!7!!6#6'&'&###289lc'[4)&  P 9/EX/>YEX / >YEX/>YEX/>Y +X!Y 01!!#!3!3>>a6  a9 EX / >YEX / >Y  +X!Y 9/  +X!Y +X!Y01!'%!6674&'''9!h|i\>âw\5fWLWY9 EX/>YEX / >Y +X!Y +XYв 9 +X!Y017667!3#!#%!1o$R'\;;]g@Ae6Q;9EX/>YEX/>YEX / >YEX/>YEX/>YEX/>Y 9 /? q_ r q ] rб +X!Yв9901###!!333!!fQRU WSTID$a++a,   &C '(9/EX/>Y 9 9 +X!Y$ +X!Y012676&"66'&&733676''7f ej  QZ|싹\Vj ܇ SMDLE>e#YjWGLYO  L 9EX/>YEX/>YEX/>YEX/>Y9 9013##3fs1 m x 9EX/>YEX/>YEX/>YEX / >Y9/?q_rq]r +X!Y 901##33!!mRTW&3+ @9EX/>YEX/>YEX / >Y +X!Y01#!#776677FYEX/>Y99/ +XY9/01!#'76677\\tkR:N#J8{tv:+|  C 9/EX/>YEX / >YEX/>Y +X!Y01%3#!3!3p;_Q6]dG9EX/>YEX/>YEX/>Y9/ +X!Y01!#'&&7373R8:od'a4)%  C B 9EX/>YEX/>Y +X!Yаа 01!!3!3!3xST66 XB 9/EX/>YEX/>Y +X!Y а а а01%3#!3!3!3p;STQ66J a 9 EX / >YEX/>Y 9/  +X!Y  +X!Y +X!Y01'%!7!6676&''^8#>FemXAʢlkYN\ &  R9EX/>YEX/>Y +XY +X!Y  +X!Y01'%36676&''r8GclZAɣlkYM] 9EX/>YEX/>Y9 +X!Y9|/`p]0@]]qq +X!Y  +X!Y901!7!6&'&6$'&&'elV#n imq  !jg;ďsj73ع "#$%9EX/>YEX / >YEX/>YEX/>Y  9| /` p ] ] q0 @ ] q +X!Y +X!Y  +X!Y01.7#3364&'&7g TUE5Ҕ]kikl $҈ V c9 EX/>YEX/>YEX / >Y9/  +X!Y 9 +X!Y01#&&76$3##'".rRR NԱ UQ:_+^sDJOJ[D R9EX/>YEX/>Y9/ +X!Yа  +X!Y 01###73!!3UTY #6;9/EX/>YEX/>YEX / >YEX / >Y 9/?q_rq]r +X!Y9 +X!Y в9аа/а/013#####!!333!];aRRU WSTID$PrQ++a,   m9/EX / >YEX/>YEX / >YEX/>Y 9 /? q_ r q ] r +X!Y 9 +X!Y013####33!}];mRTW&F|Q+  $9EX/>YEX/>YEX/>YEX / >Y9/?q_rq]rа +X!Y в 9013737!!'#7##3iD+.2%4?))DV)br 9EX/>YEX / >YEX/>YEX/>Y9/?q_rq]r +X!Y +X!Y 901##!7!3!mR#BTW&3+ @y$/019/EX / >YEX/>YEX/>Yв9/   +X!Y +X!Y$ +X!Y'а, +X!Y01&''$777&&77636776'&۝.x?H/  #gH ' 3>G5+i~&ɭOxe\~am&&[ 9/EX/>YEX/>YEX / >YEX / >Y 9 +X!Y 901!3##!!+1$%\;QhW6b^ 9/EX/>YEX/>YEX/>Y +X!Y +X!Y а а а 01%3#!!7!!!3p;`#"Q]dP9EX / >YEX/>YEX/>Y 9/ +X!Yа01!##7&&7373673QF\**9:u1/D]d ܶa+(x   G9EX/>YEX/>YEX/>Y9/ +X!Y0136#6'&'&#Qx9:ldU'b4)&7$g%&9EX/>YEX/>Y 9 / +X!Yа  а +X!Y +X!Y01.7&&76!7&!6'&&Xu s=B/w}}-: t۵'$x?JS7NX4za !9EX/>YEX/>Y9/ +X!Y +X!Y +X!Y01'.77!6&'&'667!m \ 0z||- ue?K=3PW m9EX/>YEX / >Y +X!Y9 9/ +X!Y9  +X!Y901!7!'&&73676&''7":舼l _`"ĥuYbTMW:c 9аEX/>YEX/>Y +X!Y9|/0]C]`p]]qq +X!Y +X!Y01&&77&!6&67!^I^r3% os2 pM$ &%'(9EX/>YEX / >Y 9/]а/]@ /?O]] +X!Y +X!Y  +X!Y ааааа$ +X!Y!$901!%%%%!767777773766'6'&v#6$4𽮽 (CD:@)Kѳ"#$9/EX/>Y"9"/"]"]" "] +X!Y +X!Y а" а"а/]/?]]  +X!Yаа/ +X!Y01!7'&&7737#736$&'"%!!E shA^%Zkg0yxܵ\hs\ ) *+9 а  а EX%/%>YEX(/(>YEX/>YEX / >YEX#/#>Y а /а/ ] +X!Y  +X!Y +X!Y"% 9'% 901%!7!'&&77666776&'&##33 + Й  ;FGKk FFLlwȕBB@]Y`hYNY`dZ%& !9EX / >YEX/>Y 9//q +X!Yа а / / q  / ] ]  +X!Yаа а/  +X!Y01%!#7#737#73#'!6676&'' !cι b WTM:̟MjYO_$$r%&9EX / >YEX/>Y 9|/  +X!Y 9# +X!Y#9 +X!Y#90136676''&66'&&52676'#S=M J] }IRv}j6S x\8.C Lizwb;W&)omY8/Yz JEX / >YEX/>Y 9/ +X!Yа в 9 9017##7!7737d\ S39$ m9EX/>YEX / >Y +X!Y 9/ +X!Y9  +X!Y9901!%676'&&'76676&'"8x78Cmx3/YEX / >Y +X!Y 9/ +X!Y  +X!Y01'&632'&&77667"32676&Dt0P]fz ɬM: V3R3$[kEs{E X>$ZN52;#3EX/>YEX/>Y +X!Y901#!7!I_fa# ,-.9а$EX/>YEX/>Y*9*/***]**/*]***q +X!Y*9 *9 +X!Y$ +X!Y01'&&767&7666&#"3266&#"326}@FfVzv302L6./O/+&*A-&*@I9X(>qpwd|O:dk~tE(/8+(24|'*1*'+23#!j"#9EX/>YEX/>Y9//] +X!Y +X!Y +X!Y01#"&766#'736'776'&#"KLm{  wD=:  M4L,79s4T6GVT:1C<1/ +X!Y01!7!uGVP /а/ +X!Yа/а/@/?O_o]/  +X!Y01'4632"&732676&#"anMLblea@$:$&7OkhDMhbGQ7$$14  VEX/>YEX/>Y 9 /I ] +X!Y +X!Y +X!Y01!!!!!!56;#%#/GPP+9G'HI9'9а'DEX(/(>YEX/>Y(+а+/ +X!Y(9/9/, +X!Y,9 (93 +X!Y= +X!Y(D +X!Y01'"''&&767&7667&&776677!&'32676&'26776&'&6 CR2):!V;GC(*pu8c qg ?W`PX `PT\^2' "fbxf2=Ie&6X! ;Y?I[J38I`hNM_fT;T#p$%9 EX / >YEX/>YEX/>YEX/>Y 9 9 +X!Y   +X!Y01%'&&?673#6?'&'&㫹 'm'D2\Rf u-9*qf39eu.D5.'c ()9 EX/ >YEX/>YEX/>Y 9 / +X!Y  9' +X!Y01#2&'&776'&'%2676&'%h$#  ihVp=@467$=),J,Ly0* wpjo.{ YEX/ >YEX/ >YEX/>YEX / >Y9/q +X!Y 901##33!!>lj} >pd;E TEX/">YEX/>YEX/>YEX / >Y9/ +X!Y 901##33!!rR ]O%I'.g LEX/ >YEX/ >YEX/>YEX / >Y99 901#37!!uvxC/]}*&5 LEX/">YEX/>YEX/>YEX / >Y99901#3!!XW5b   E9EX/>YEX/>Y  +X!Y +X!Y013!26776'&&' blp yn,,G@hr9IP9EX / >YEX/>Y 9 9  +X!Y +X!Y01'.77'&&'&7ԐY A `kda84Aݽgp?p  9аEX/>YEX/>Y9/r]oqqrr_rq?q/]y]I] +X!Y9 +X!Y +X!Y013#6676''6676'' &T KTސ6ez _r 9SWYRI OE GEX/>YEX/>YEX/>Y 9 / +X!Y 901%!#3#!.bHWsi6-EX/">Yа/01#76Q-W}vzwz~ [/а/@ /?O]а/  +X!Yа/ а /@  / ? O _ o ]/01'&&'7%3#zѢNmhxxdos&y/а/@ /?O] а /  +X!Y +X!Y а|/@/?O_o ]qа/@ /?O_]/01#"&&'6632767'# \C%|$;e ^D#%;]֛VcA TTfB S- [/а/а/@ /?]/9/ а /а//]   /013#'##"𹂲i [///а/а/@ /?]9а// а /  / ]01#'#%3#3Fڍ\ i///а/а/@ /?]9а/а/?]9 +X!Y901#''%377676''79 "ZM*w 硡t} 3/jSHk=///а/а/@ /?]9 а /@ ? O _ o ]а/@ /?O_] а/ +X!Y  +X!Y01#'#%37#"&&'6632767K U;#n$3 Z SE 3 9EX/>YEX/>Y +X!Y013!#!'Y7z~ [/а/@ /?O]а/  +X!Yа/ а /@  / ? O _ o ]/01'&&'67'#z:Y@Əhxxdo7;n _/а/@ /?O]а/  +X!Yа/а/?O]9 +X!Y901'&&'67'77676''7n ~:X 0W _* H ktvfl5:v0+ax]<sEX/ >Y01d sEX / >Y 01}!sEX/ >Y01"sEX/ >Y01.#sEX/ >Y01{$sEX/ >Yа$01%sEX/ >Y01oFP 9EX / >YEX/>Y 9 9  +X!Y +X!Y01'.'&76$#'&67#ޅ #( &sG$/qJ$_%&9EX/ >YEX/>Y9 +X!Y +X!Y#9#/" +X!Y01%'.'&776$''&7!7!Kڶ 5tÉ H`p5"cqV^'[^=ueX. E9 EX/ >YEX/>Y +X!Y +X!Y0132276'&&'. )*,ؐwrr'H ()9 EX / >YEX/>Y  +X!Y$ +X!Y01.'&776$674&&'&7  "3 dNA\"B\'VWRG4:nd4:pg!rl+H!,-9!EX/ >YEX/>Y  +X!Y' +X!Y01%'#.'&776$674&&'&67ƮF8݈  4  ?^ۆsƎSƊ WW>PXW7?5:re¸}53EX/>YEX/>Y9/ +X!Y01!#7%3q&@$dz W 9EX/>YEX/>Y9  +X!Y 99 +X!Y01!!77676&'&>z=m SNd ₶ M03_eFTzbwh@\9 /EX/>Y +X!Y9 9/  +X!Y +X!Y901!7!'&'767%'7#^d ܪJ#eĚfY # SEX / >YEX/>YEX/>Y +X!Yа/9 в 901%3##!73!r"77m9w;6,N`9/EX/>Y +X!Y9/ +X!Y9 +X!Y9901!!62'&'7676&'&Y%qczP ϹZwhiHv6z߉udr'T&/EX/>Y +X!Y901#!7!: M# y/а/@ /?O]а/  +X!Yа/а/@ /?O]а/ +X!Y +X!Y 01'&&'7"&'6632767q} ,.F((;f ^F'/F(<kx{fnrT23NTPk 'S/а/а/01#3^:$%&9EX / >YEX/>YEX/>YEX/>Y +X!Y9/ +X!Y +X!Y +X!Y  +X!Y01!!#&&776623!!!!!7'&{N]Y]#0#6;keĂ!j]6  pcpGF(T#)*9#/EX / >Y +X!Y 9/ +X!Y " +X!Y0167'&7>'&'7776'&&'&PP苓X$䭌Ar"qdZ[G ^]ד=/{8Y  +X!Y   +X!Y01%'&'7327?*ТD@"9&~ + >L)RNMEX / >Y 01KFsOEX/>Y01"^e] .-S;EJJH:H:":}[:& ":  l!"9EX/>YEX/>YEX/>Y +X!Y 9 / +X!Y  +X!Y 901%32676''77&'&#66'&'EEOo `5O*~r^؂ nw3nS6gjw6N H9EX/>YEX/>Y +X!Y +X!Y01&74&'&67$G 0čkhlaJ!IGS YEX/>Y +X!Y901#!7!H^"#f !9 /EX / >YEX/>YEX/>Y 9 9  +X!Y +X!Y01'&'#36''&'&676]- ly eQ3|{с߿A>s'5¨T7TM9EX/>YEX/>Y +X!Y99 +X!Y01%677'&77#&&'&Wp6߰^RbgSlc07bq₍;c !9/EX/>YEX / >YEX / >Y 9  9 +X!Y +X!Y01663#7'&&'&737&'&Dց_h  bWgT5} v+u?<5;g~x*PLQ*+,9'EX/>YEX/>YEX / >YEX/>Y9  +X!Y9" +X!Y' +X!Y016673'&'77'.'&77&'&DׁZ*Ϫ"䮛BsJ~e\bUdU4~ sYM<|hv?=5;g}wƦ4?Q#E$%9EX/>YEX/>Y +X!Y +X!Y01676'&&'&7676'&&'&Eeya/-iZ{ jY~ A-{vi|Ľ8>k˥Q`!Rb 9EX / >YEX / >YEX/>YEX/>Y  +X!Y +X!Y01'&'#76'74&'&6aa| f_cW2zsr@>K~|t;`KQm  9 EX/>YEX/>YEX / >YEX / >Y 9  9 +X!Y +X!Y016673#'&&'&77&'&Dم\*cy d^dY7}o&u?=J{yo;T 9EX/>YEX/>Y9/]_oq/q]q  +X!Y +X!Y9 +X!Y01.776!7&76'&& j9X }->bXAQ37/+BO0P:Q)*+9&EX/>YEX/>YEX / >YEX/>Y9  +X!Y9! +X!Y& +X!Y016673'&'77'&&'&737&'&F΂\+έ"᠒Bl{L~XVbR0ys L?Ez>;3;hz-"G%1m.239.а.EX / >YEX/>YEX/>Y 9 +X!Y 9) 9 / +X!Y01&&7677'&766673#''7'7676&#"u.ȂOO7csBZ I]0-i 8+/OtHHlavw2eݢJ^3*=I:C<;DG-2B= > 9EX / >YEX/>Y +X!Y 9 901!!773%fE"ZVILu%&\K 9 EX / >YEX/>YEX/>Y 9|/ +X!Y +X!Y 9/ +X!Y   +X!Y 901!!!!!!!!!^S, "$%e#$7E  Y9EX/>YEX / >Y +XY +X!Y 9/  +X!Y013#'#2676&'!s ۢ(v@h Y[ˤb[L^&j'(9а$EX/>YEX/>Y99 +X!Y 9!9# +X!Y01'&''7&777&'&6'67 Zsaa$Jr]k6Y97V#GoŪ.=Lj77W/35,9EX / >YEX/>YEX/>YEX/>Y +XY 9/ +X!Yа а +X!Y аа а01##!##7373!733!7!`SSWWOO%O F[9EX/>YEX/>YEX/>YEX / >Y +X!Y 9901'"'73277#33ѡ1"&6 Xl 9EX/ >YEX/>Y9|/ +X!Yа +X!Y +X!Yа013#732##2$76'&&''3Eqnv ŸN% KzOɬ>ݘqRl 9EX/ >YEX/>Y9|/ +X!Yа +X!Y +X!Yа013#732##2$76'&&''3Eqnv ŸN% KzOɬ>ݘqR+v9/EX/>YEX/>YEX / >Y/]]9/ +X!Y9 +X!Yа01#6#6'&'&##737332tv hԿֽH+%zǪ"NEX / >YEX/>Y 9/ +X!Yаа  +X!Y 01###73!7!!3Ɉ4K$b$H4(A 9EX/>YEX/>YEX / >Y 9/ +X!Y  +X!Yаа +X!Yа/а01#27#&&7#737#7333#3m-J%/JK|{ . ..7A 6&%D[6EX/ >Y 016&%u6EX/ >Y 017&%6EX/ >Y01+&%7 /01&%j(6&%j /ܰ01&%'e8 &'y'=&)D#=EX/ >Y 01'=&)u=EX/ >Y01'>&)=EX/ >Y01' &)j=52=&-D=EX/ >Y015H=&-uv=EX/ >Y015>&-s=EX/ >Y015, &-j='+&2(7 /01k!6&3Dr6EX / >Y$01k!6&3u 6 /%01k!7&3 6 /$01k!+&37 /-01k!&3j?6[/6&9DJ6EX / >Y01[/6&9u6EX/ >Y01[/7&96EX / >Y01[/&9j6M6&=u6EX/ >Y 01"&EDEX/>Y-01" &EuNEX/>Y.01"&EJEX/>Y001"!&EXEX/>Y/01"&Ej"_&E4EX/>Y5ܰ;01"2|&E'88R&Gy<;&IDEX / >Y!01; &Iu7EX / >Y"01;&I3EX / >Y$01;&Iji"&DEX/>Y01"&u+EX/>Y01"&(EX/>Y01"&j^ '&R^EX/>Y019'&SDEX/>Y"019'&SuKEX/>Y#019'&SGEX/>Y%019'&SUEX/>Y$019'&Sj}J1&YDEX/>Y01J1&YuP /01J1&YL /01J1&YjE&]u /01E&]jL&%p:EX/ >Y 01" &EpR /,01&%06 /01"&E //01Qy9EX/ >YEX / >YEX/>YEX/>Y  +X!Yа/9/ +X!Y901!7'"&767!!3!q/8= EUWi6߮cVV9+mTiAPZ"QP0;<=96EX(/(>YEX / >YEX/>YEX/>Yа/(9(9/(  +X!Y$ 9@ $$,$<$]1 +X!Y6 +X!Y01!7'"&767'5'&&76$376'&'&>%677'"J/8= EUWi{Ls vS!K-%q KVV9+mTi))}J'"lQDdTͣZ;8I:eXCMe K&'uK /!018&Gu! /01e L&'K / 018&G /01e ,&'T /'018&G /%01e P&' K /#018&G4 /!01'B&(=EX/ >Y01;&H'&)pAEX/ >Y 01;&Ip; / 01'$&)= /01;&Iq /#01'&)F /01;&I /(01'Q9EX/ >YEX/>YEX/>YEX/>Y9/ +X!Y +X!Yа  +X!Y +X!Y01!!#7'"&767!!!!N#q/8= EUWi$aFE@VV9+mT`nYEX / >YEX/>Yв&-9&/&]&/&q&&q_&o&q&&]&&q/&?&r +X!Y! +X!Y#9$ +X!Y01%7'"&767&7766!7&76'&&U1m8= EUWi`W zkɼ^ Zx2!LR9+mTmU)hX.,GR'B&)=EX/ >Y01;&IJ /$01kL&+K /#01OB&K> /,01k2&+/K /%01OB&K| /.01k,&+T /*01OB&K /301k&+OB&K44~ //01'>&,=EX/ >Y01 ^&LR] /015J2&-> /01&6 /0152&-p{AEX/ >Y01"&p0EX/>Y015$&-= /01"&f /01W(&-vQ &M5T&-SF / 015&-.;F&MN17&.6 /01H&(EX / >Y01'Dq&/_/J&O'6&0uj6EX/ >Y01=&PukEX/">Y01'&0%&P'&0EX / >Y01t&P^/01'&0\&P'6&2u6EX/ >Y 01 &&RuT /01'&2 R&R';&216EX/ >Y01 #&Rg /01 &R@/01k!&3p: /#019'&SpO /!01k!&3G6 /&019'&S /$01kw5&36 /%ܰ'019&S /#ܰ%01'6&6u6 /01&Vu /01'&6&S&V';&66 /01&V /01$6&7u6 /,01&Wu1 /'01$7&76 /+01&W- /&01$=&7y4P&WyB$&7>P&W$;&76 /.01&WD /)01"&8-;A&X@"&8y;=A&Xy";&86EX/ >Y 01;&X}[/+&97 /01J1&YZ /01[/&9p: /01J1&YpT /01[/&96 /01J1&Y /01[/&9{j /ܰ01J1_&Y4 /ܰ 01[O5&9f6 /ܰ01J&Y /ܰ01[2 c!"9EX/ >YEX/ >YEX / >YEX/>Y9  +X!Y +X!Y017'"&767.73672z 8= EUWi=`v{38PX9+mTXHߌ1JQ1:#y$%9EX/>YEX!/!>YEX / >YEX/>YEX/>Y  +X!Yа/!9 +X!Y01!7'"&7677'.7373\/8= EUWi{i; uv saVV9+mTgZdyA%#| :7&;6EX / >Y01w&[EX / >Y01M7&=6EX/ >Y 01E&]EX/>Y01M&=j66&>u6EX/ >Y 01&^uEX/>Y 01&>? /01&^ /01;&>6 /01&^2 /01xB&uBEX/ >Y01p&uk /A01&u EX / >Y.01*w3&u3EX/>Y101&0&n;qoqqrr_rq?q]/]01&0&n;qoqqrr_rq?q]/]01bZ&&% ]01&3DEX/>Y 01?&3umEX/>Y 01&3iEX/>Y01@&3w /01"&3j}&3R /ܰ01Q&3'9=I&1y` &(DEX/>Y 01 &(u=EX/>Y01 &(9EX/>Y01 &(jo&DEX/>Y01&u$EX/>Y01&!EX/>Y01&jW & /01:c&DEX / >Y"01:c&uz /#01:c&v /"01:c& /+01:c&j9j&DEX / >Y019j&u[ /019j&W /019j&jm&u5EX/>Y 01(&3pq"EX/>Y 01&3 /01Q9EX/>YEX / >YEX/>YEX/>YEX/>Y  +X!Yа/9/ +X!Y901!7'"&767'!#3!/8= EUWi,.|HWVV9+mTks9I&1uj /019I&1f /019I&1G' /%019I#&1} /!01 #&0EX/>Y01 &(pA"EX/>Y 01 &(w /01 &(' /01 Q9EX/>YEX/>YEX/>YEX/>Y9/ +X!Y +X!Yа  +X!Y +X!Y01!!#7'"&767!!!!56;#`/8= EUWi%#/VV9+mT`  #&(PEX/>Y01?Q&j /"01?Q& /$01?Q&K' /)01?Q& &|EX/>Y01 &/ /01&p)"EX/>Y01&_ /01Q&&' / 01&EX/>Y01 & 4&uEX/>Y01 4& ;&%EX / >Y01 4&F &uEX/>Y 01 &. #&EX/>Y01:c&p~" /!01:c& /$01:& /#ܰ%01 &u  /01 & #&3 /01&uI /)01&E /(01=&yE#&\ /+01bZ&bZ#&JEX/>Y 01bCZ&y09j&e /019j&p_" /019j& /019j}&R /ܰ019& /ܰ01:jc !9EX/>YEX/>YEX / >YEX/>Y9  +X!Y +X!Y017'"&767&&7367jy 8= EUWiK [gk)OX9+mTbMݪeroi&EX/>Y01m&1EX/>Y 01m&jg'&u8EX/>Y 01'&' /01'#&KEX/>Y01A&%^A&)0fA&,8j(C&-<5A&3XA&=d* A& F&#/'ܰа'01%'&')>',5(-'q/'1'2k!3'4"8M=G<5, &-j=M&=j6>3A&F /.01(A& /*01aA& /01n,& /01W=& /0ܰа001!:9'RS`T:vd :ZMiIY 9EX/>YEX/>YEX/>YEX/>Y  +X!Y +X!Y0137'&&''#&&'76b)5)"q ;)):3$Xx):^D0EAGzO#V  sOAL&j{W&jr9'A&S /#01W4& /01T2& /.01' &)j=.=&u=EX/ >Y01$)d*+9EX / >YEX/>Y 9 а  +X!Y +X!Y$а' +X!Y016''&&7>'6&'&'.76LQ pstuK |x~FO؏|fqɁr~raIRݗ{dvх|j5(-5, &-j=a..{,'q6&/u6EX/ >Y01S$&= /01%'&.')'|$&W= / 01'1',k!3.'4e '"8G<"PE;QIH& / 019'RS` RT8RM9EX/>YEX/>Y +X!Y99 +X!Y01%677'.77>#4&'&U qZ쐰[VgSkb#]vE:]:\;&Iji&uEX/>Y01PW M"&j^ FN"&uDEX/>Y01E&]T /01:6&;D(6EX / >Y01w&[DkEX / >Y01:6&;u6EX / >Y01w&[uEX / >Y01:&;j6w&[j8M6&=D"6EX/ >Y 01E&]DEX/>Y01 /а/01 /а/а/ а/017?&H&? /01/01'6&1u6EX/ >Y01h&Qu /$01l&%o"pP&E'=&)D#=EX/ >Y 01'|=&D=EX/ >Y 01;&IDEX / >Y!01H&DEX/>Y 01u?"<^&WEX/ >Yܰ01wD&EX/>Yܰ019ER&S]ukE x&3]f:&Qu;P&Qe> &'Q8>R&GQ:M=w_0:5(-$&P= /01r& /015(-&%06 /01"&E //01&%j(6"&EjxpR'$&)= /01;&Iq /#01H7&Xj6P6&jr &jH=r&j}&jK&jW'|&p!AEX/ >Y 01H&pfEX/>Y 01'| &jO=H&jk!&3j?69'&Sj}b6&Rb&jM:6&&j{O&j!L#&jbS&pA /01E&]p /01S &j =E&]jLS<&\= /ܰ01E&]EX/>Yܰ01j &jI=p &jm. & '-j>"&'&jr;H&%"P&E!&%< /01"&Em /:01&%7!EX/ >Yܰ01"p|&E7CEX/>Y/ܰ501&%8+EX/ >Yܰ01"y&E8JEX/>Y-ܰ401&%9EX/ >Y ܰ01"&E9DEX/>Y-ܰ301&%:EX/ >Yܰ01"&E:CEX/>Y-ܰ6017&%'6EX/ >Y01"&E&J!EX/>Y001&%<0EX/ >Yܰ01"y&EY/ܰ;01&%50 /ܰ01"y&E5t //ܰ801>&%=6 /ܰ01"&E=t //ܰ901&%P < /ܰ01"&EPx //ܰ801&%'06EX/ >Y01"&E'!EX/>Y/01'&) ;Q&Iv'&)C /01;&IV /.01'2&)> /01; &IA /*01'&)7(EX/ >Yܰ01;Y|&I7,EX / >Y#ܰ)01'&)82EX/ >Yܰ01;y&I83EX / >Y#ܰ(01'H&)9EX/ >Yܰ01;&I9-EX / >Y!ܰ'01'&): EX/ >Yܰ01;&I:,EX / >Y!ܰ*01'>&)'= EX/ >Y01;&I&3vEX / >Y$015&-C /01"~&J /01(&-_ &MD k!&39'R&Sk!&3,< /1019'&Sj //01k/&37!EX / >Y&ܰ,019m|&S7@EX/>Y$ܰ*01k!&38 +EX / >Y$ܰ+019'y&S8GEX/>Y$ܰ)01k&39EX / >Y$ܰ*019&S9AEX/>Y"ܰ(01k!&3:EX / >Y$ܰ-019'&S:@EX/>Y"ܰ+01k!7&3' 6EX / >Y%019'&S&GEX/>Y#01[&3&u3EX / >Y.016&uZEX/>Y*01[&3&Dk3EX / >Y-016&DEX/>Y)01[&&%9EX / >Y:016&yEX/>Y(01[&(&4EX / >Y/016&dEX/>Y+01[&.&6&u[/&9J1:&Y"[/&9<EX / >Y01J1&YoEX/>Y01[B&u BEX/ >Y01Ja&uUEX/>Y01[B&DrBEX/ >Y01Ja&DEX/>Y01[&,HEX/ >Y01Jaq&tEX/>Y01[7&CEX/ >Y01Ja&_EX/>Y01[&Ja&kM&= :&]{M&=< /01E&]9 /01M+&=7 /01E&]$ /01&H'&BC{m/!]!q!]01"&8Q;S:&Qj&Qp ;&Q.&Q:&QbC&LQFS&MQ L#w9 EX/ >YEX / >Y 9/ +X!Y 9/ а а а  +X!Y +X!Y01##!#737336676&'"ݾ!"VpkGGwiy#w9 EX/ >YEX / >Y 9/ +X!Y 9/ а а а  +X!Y +X!Y01##!#737336676&'"ݾ!"VpkGGwiy KEX/ >YEX/>Y 9 / +X!Yа а  +X!Y01###73!!3ttk$uGage: KEX/>YEX/>Y 9 / +X!Yа а  +X!Y01!##73!!!VQQN#9,/Ѫ7pEX/ >YEX/ >YEX / >YEX/>Y 9/б  +X!Yв 9/  +X!Y 901#3!!###73733*} >l##?d;p?Yl/EX/>YEX / >YEX/>Y 9/ +X!Y 9/  +X!Y 9 а01#3!!###73733^]O%IrR'MW 9EX/ >YEX / >YEX/>Y9/ +X!Yв 901###73!!3ZZ}|PT_0:d 9EX/>YEX / >YEX/>YEX/>YEX/>Y +X!Y 9 а01###73333IHfi(`oGdEX / >YEX/ >YEX/>YEX/>Y 9/ +X!Y 9а в 901#!!#73!!3NJ#|xtz*,rkq :dEX / >YEX/>YEX/>YEX/>Y9/ +X!Y9а в 901##!#733!3)g)qתbG(Q&*&0im1Fff@ ?&9 *Zsw'OY/tNkK&+uK /$01OB&KuB /-01'6&2D6EX/ >Y 01 &RDEX/>Y01!&%3EX/ >Y ܰ01"&EEX/>Y-ܰ101'(&)R:EX/ >Y ܰ01;&IEX / >Y!ܰ%01(&- :EX/ >Yܰ 01~r&EX/>Yܰ 01k!!&33EX / >Y$ܰ(019'&SEX/>Y"ܰ&01'!&6<3EX/ >Yܰ01&VHEX/>Yܰ01[/!&9y3EX / >Yܰ01J1&YEX/>Yܰ01$jA&d'&& &F'&(s ;&H'&(;&H'&, &L 'q6&/u6 /01u=&Ou= /01'q&/KJ&O`6'&0 &PD '&1 hR&Q '&2 R&Rl k!&36S /,ܰ701'B&4uB /01`m&Tu /!01'&6 S&V> $&7P&Wb"&8;A&X[/&96S /ܰ'017&:C /01d &Z /01&: d :&ZB :&; w:&[' &> :&^C g&3Fq&3Hm5!&(<?x&<J{ !&<Mm& ,&<& 3 2 ('    :c 6bZm&jWm&jg &(jo &u, /01&jW &u  /01r& /013 2  ( & / 01  :c  69I1bZ 9(")*9/EX / >YEX/>Y  +X!Y( 9(/(r((]o((q(q(r_(r(q?(q(/(](rJ(] (9& +X!Y&(9а! +X!Y&!9012676&"66#&&733676''7f ej  QZضMO\Vj ܇ SMDLE>e#YD#yGLYO 9EX / >YEX / >YEX/>YEX/>YEX/>Y  9 / ]? q q? r q ro  q ] / ]_ r +X!Y +X!Y01##!#3!33_>RSVVf%(:CO` 9EX / >YEX/>YEX/>Y 9в 9  +X!Y +X!Y01#&77'&&'&7KN A `kda8N/(4Aݽgp?pm7:&Q &p" / 01r&pR" /01C7& &su|&uuz&&D~&u&jKm&DT&%m"XP&E'[&). ;QQ&IQ&3 Y&(:&D V8`````G0_E\G v*Kt  z , p  Y t  w k4NT{nU<a}F=c+z%c7 + 5 A `!&!A!!"$""##=#b##$$'$A$[$u$%N%& &b&'(;())|**e**++[+,,-k-.../u/0:0i01181@1q1122M2223 33D3v3344 424_455Z556E67788Q89f9:::;*;;<_<=:==>@>???@{@AdAB]BBCWCDDDE0EvEF0FwFGGbGHHI,IJ JJKKLLRLLM:MMMNNOOWOOPbPQ&QRRRSxST[TU UxUVtWWPWX X|XYhYZ[+[\Z\]]W]^;__`aaoaabbUblbc`ccddudeOeef fYfefqf}ffg:gggghKhii_j jjjk kRk^kjkllYlmlmn+n7nCnoooo*o6oppvppppqqlrrrsrstWtu;uvvhvwwwwwwwwwwwwwwwwwwwwxxxBxdxxxxxyyUyyyyz,{{4{Q{d{x{|T|}}~}~r0w|ʄ_ÅچpЈ Dam݉@ꊈ"{h(J֒4f’.xÓ7cܕ8MږD{aO͚KĜ6gYџ*lʠ"?ޢ(d)_LSK7}$ȭKpٯsqI۴8ɵ&t,rзGuŸ';OauպAݻ9El*2:MUfnv~)$}s?®)òúDĂG=ƑƑƙu'Ȝȳ*AXo{ɒɩ+7Ne|ʈʟʶ)5Lcy˄˚˰-CNeẅ̦̱̔n0BTewΉΛά ,>ϴUl}ЏРв.@RiрђѤѯѺ %P[l܃܏ܥܱ /BT`q݃ݔݠݱݽ&9ޤ޻&2>JVbn߄ߌߔߜߤ߬ߴ߼ 0BShpx*wo8H(folnR>]o!;w8nHW2?kTPcmJW:gPW.4%#q'8V%hk++.#1O&2eCv"JNV""~S=NpfOH"P"%#\$XY %;p `)DO!+H>05" Zbo6wZfo8bK`)DV3E8+<Ao'O!'mR". ."#!ll''.eK/PVpT[fb#`!.o'N'P"hH/3 H\0EG, ac't'u L=s6V# \f)66  R Ei33[vi]`dLnI +['dsNB;?]1#}yxEuj4I&u0bb:Sif_K____5\md!X<1:%mFcpk9%bE 7U :   D  ? N c:c |C5ppbg9&) vb Y :/  E /r> s]\  ;J O gj o j  Nb@Cmlbs]s 74/ :N  #3 %;&. ..b g9H & d}{Zoqf.rri@S'o:G sssssFs"s]s.s;s  "}"H NUo&7;z*4{;4;p0"   6::w+4444444em'm'm'm';5;5;5;5'fkfkfkfkfk[[[[="="="="="="="84;4;4;4;""""[ u9u9u9u9u9ZJZJZJZJ4="4="4="e8e8e8e8';m'4;m'4;m'4;m'4<m'4;RkpRkpRkpRkp'Y ;5;5";5";v;55Y '='='='=''[ '[ '[ [ fku9fku9fku9'''$ $ $ $ $ ;;;[ZJ[ZJ[ZJ[ZJ[ZJ[ZJwUdo*bb%bg9     :::::k9k9k9k9%mg9g9g9g9b      ????  D        :::E E E %b%b%bk9k9k9k9k9k:%m%m4m^f;jz)XP 4'm'';5'''fk';5k>H(onHW!u9dLHWu9HWkTm'].$;5;5Y .'4'].m''''fk.'e="4;u9h84;J " V"wwwZ>7 '4="m''4;u?wF9 7ke8w;5qN;54="4="Um'4;hH%6%6qN''fku9Zbo6Zbo61O%#hNp.H"k;4="4="4="4="4="4="4="4="4="4="4="4="m'4;m'4;m'4;m'4;m'4;m'4;m'4;m'4;;5";fku9fku9fku9fku9fku9fku9fku9i[6i[6i[6i[6i[6[ZJ[ZJ[J[J[J[J[JShNp].JbY ##]J7.TH(M s s&s sZwOtRkp'[ 4="m'4;;~fku9'[ZJ$'h'k;'k;'Y ''='''[ fk'h'$ ;[ddwmx3{a,H   D   :U %b%mF%m  D /rH      : U g9%bF/  g:%m7 /r|C %m4="m'4; l 7Ab x33fP [ GOOGf :                   nt ~%'0S_g~7Y #%/EOboy?M    " ' 0 3 : < D t  !!!!"!&!.!^"""""""+"H"`"e% &(1T`h7Y #&0FPcpz>M    % 0 2 9 < D t  !!!!"!&!.!["""""""+"H"`"d%eD# (%^S~|}rsolkiaYP!ߔyMߪެߞߝߖߓ߇kTQ 222tt~lt0Rb{z|  }~+,-.   ()*+,-./012345678wxLM}~NOPQRSTUyzVWXYZ{|[\]^_opv   ~xcyo{z%&&''|(01127889@ABCIJKLQRST_`a befg}h~+ 77YY  ##      "#$%%&/0014556899:=>>??@ABBCCDDEEFOPPQQRRSSTTUXY[\\]]^^_abbco pqruvwxxyyz(,159wCL}NyVXY{[_`o>?pMM r }         " % ' 0 0 2 3 9 : < < D D t t      v    !!!!!!!"!"!&!&!.!.![!^"""""""""""""+"+"H"H"`"`"d"e%%,K PXYD _^-, EiD`-,*!-, F%FRX#Y Id F had%F hadRX#eY/ SXi TX!@Yi TX!@eYY:-, F%FRX#Y F jad%F jadRX#Y/-,K &PXQXD@DY!! EPXD!YY-, EiD` E}iD`-,*-,K &SX@Y &SX#!#Y &SX#!#Y &SX#!#Y &SX#!@#Y &SX%EPX#!#!%E#!#!Y!YD- ,KSXED!!Y- ,,E- ,-E- ,' SX@cTX,pY#SX TX,pYYY- ,@ ZX-D-DY- ++++:0%+8.$+N@2#+H;.!+N@2#+0(+cQ?-+@4$+[J:)+ dN:#+ wbL6!+ w\:#+ v`K6+ ,$ +C7+++ E}iDssPttpu?s_ss/tOtottttu?u_uu so u s s t_ t t t t? u/"so"s/*s?*s*r}V_N``9 ! :[ ^ ^  x ( ( & & @ 8 D &X \~ T  . :Copyright 2011 Google Inc. All Rights Reserved.Roboto MediumItalicRoboto Medium ItalicVersion 2.137; 2017Roboto-MediumItalicRoboto is a trademark of Google.GoogleGoogle.comChristian RobertsonLicensed under the Apache License, Version 2.0http://www.apache.org/licenses/LICENSE-2.0RobotoMedium Italicjd(Y%>E^yy  "$%*+3466;<ADGHKMQQTX]^bbddhhjlnnpp  ((++--03_cz|  ,$%&'y 2LDFLTcyrlgreklatncpspkern $H %&'()*+,-./0123456789:;<=>eg/3579;ACEIKLXYz{}   "$%')+- }  Az<<`>P?<A.>f?v?v??`?v?vA.?  ?@@<0=A H>?< ??>??@6<@P?A.=>PA.>P@?z. B" #?v%0&<0)P>@@9?=<<0P>P>P>P>P>P>P<>>>>?v?v?v?v?vA.A.A.A.A.=>>>>>>><<<>>>>@@>P>>P>>P><<<<A.><><><><>A.>A.>??????@=@=AAAAdAdAjARARARARARARARAdAdAdAdAdARARARAdAL<<<<AdAdAdAj>P>?v?vA.=>P?>A?v?v??v?vA.??=<0?v=?>@>>=?v?v??<>P?=>?v?vA.?<?<0><>?@<<<@@@@=@<<<?v?>P>><@@<=@?v<0P>>P>><<<<0>?<@<@<@>P>>P>>P>>P>>P>>P>>P>>P>>P>>P>>P>>P>><><><><><><><>A.>A.>A.>A.>A.>A.>>=@=@=@?=P>>?vA.>???A.A.?v????`?v??v?A.????@@@@@AA.ARAdARALAjALARAdAj %*,- /6 88:?EFIJLL OO!QT"VV&XX'Z](__,-./0589:<=>FGRbcfhk  n  op""s.0t35w77z99{;;|CD}TTVVXX\^0033EEGHz{}}  "%''))/8CGMOTTeimoxx &6789:<>EHNPTVWX\bcefpr  vxyFHHJW__puww{| 89Ew:;&= &"$&&&prt&%@.08EGHIKSUVYZ]@@ @"9BE`ak3@@@@@@@@@@0#2345678MNO@@0@@@@ @ @!"@#$@%&@'(@)*@+,@-.@/0@12@34@579;=?ACEKMOQSUWY[]_acegikmoqsuw@38:;=9E3 "$2345678MNOprtw8:=9E"$prtw.9bdM  AGHIKUa"B`ak79;=?ACEY[]a@GHIKU"B`ak79;=?ACEY[]aS KMOQSUW_.9bd  Z]#qsu?'+35 !AjEFHI-  JLNPRTVXZ\^`@'+35!AjEFHI-  JLNPRTVXZ\^`8%<= 3C]"$ "$&(*,.024prt(FF% FFFF "$&(*,.024GHIKQRSTUYZ]"+6<>BSUW\`ak#  79;=?ACEKMOQSUWY[]_acegikmoqsu|| GHIKUYZ]"B`ak#79;=?ACEY[]acegikmoqsuG  GHIKU"B`ak    79;=?ACEY[]a:m  GHIJ KSUZ ]  "B`ak        13  # 23456789CDEFGL MNOPQRSZ[\]mnostuvx               79;=?ACEKMOQSUWY[]_aq s u       \^4D^&(* \^4D^&(*"Z\]^4D^#&(*qsub 8:<=Z\]  349:CDEGI]^bcdldm"#$pqrstuwyr 8:<=QRT+369:<>CEGILPSUW\]bdflmo"$ prtwy|u 8:<=QRT\+3469:<>CDEGILSUW\]^bdlm"$ prtwy|S8QRTZ]  +69:<>ELSUW\cm# qsuw|j8:<=QRT\+3469:<>CDEGISUW\]^bdlm"$ prtwy|%'+358:= !9AEGHIJMPQXbdfjlnopEFHI"$-   "$&(*,.024JLNPRTVXZ\^`prtwyz58:<=39CEP]bdflo"$prtwk%8:<=  39:CEGHIJLPQ]bdflmop"$     "$&(*,.024prtwyz: 8:=9:EGILbdlm"$prtwy18<=39CEPQ]flop"$prtw$8<39CEPQ]fopw8=9E"$prtw9QRT\  +46:<>DSUW\^m |$ Z] :m#qsu5QRT+6:<>HJSUW\m z|  vGHIKSU"B`ak19CDEFGPQRSZ[\]mno 79;=?ACEKMOQSUWY[]_a EGHIJ KSUZ ]   "BQ`ac e kp        13  # 23456789CDEFGL MNOPQRSZ[\]mnostuvx               !#%')+-/13579;=?ACEKMOQSUWY[]_aq s u       :HJQmpzOGHIKU":BHJQ`akmp79;=?ACEY[]az"Z]  :GHJcem#qsuz#Z\]4DQ^p#qsu  \v  4:DHJ^cemVz d  :HJcemVz j  :JcemV  bGHIKSpUW[ p"B`akpppppppp   ppp pp79;=?ACEKpMpOpQpSpUpWpY[]_papLxLx[  AaM:JLMXb d mn1.08@JM_ilh :ILbdlm0V~[m|^Kr Ah cIhh0  .0<8:j@IJ L?MX_c1e_i lm0n AJVXam| 1#X[:IeJLfMXbdlm  :cemJ[   :cm l[  :JXcemn1[1IJLbdlXR_:mJX2[4V[ml|nC~{y~}|t}y(} f .08}:@J|LMlX_kcei{lmn1 AVa1J  A Va1[1l1  h&%j Y\j h0X~|( dSNolH32q)cyUUf~3_akj6 w9 %),4 8>EGIILLQTVV"ZZ#\^$'()-./02347>?@ABD  F  GH.0K35N77Q99R;;SCDTTTVVVWXXX\^Y\cefgilm00p33qEErGHsz{u}}wx  "*/8CGMOTTeimoxx  "#$%&(25;BDEFJPQS_a  eghFoHHJW__bbddpuww{|t !!%%&&''(()).. // 0033448899 ::;;<<== >>EEFFGGIILLQRSSTTVVZZ \\]] ^^"  %      ..//"00334455 77 99 CCDDXX\\]]^^!!!# $ 00 33EEGHz{}}             "" ## $$ %%&&''(())**/0 11#28CG MOTT eefi$mo xx#     "  %"           % % %   !!""##$$%%&&''(())**++,,--..//00112233445566778899::;;<<==>>??@@AABBCCDDEEJJKKLLMMNNOOPPQQRRSSTTUUVVWW__bb dd pp qq rr ss tt uu ww{{"|| "        # ##       " !   !$     #         $    #"      " " " !   !        bDFLTcyrlgreklatnH .AZE CRT FRA ZMOL NAV ROM TRK      c2scccmpdligdnomfracligaligaligalnumloclloclloclnumronumpnumsmcpss01ss02ss03 ss04ss05ss06ss07$tnum*        60nL`tflq3210(sutvrwR   ; /0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwyxz{|}~    %&'()*+,-./0123456789:;<=>eg/3579;ACEIKLXYz{}   "$%')+- } q3210(ds0ut/rwR   ; v123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abdefghijklmnopqrstuvwyxz{|}~    EFGHIJKLMNOPQRSTUVWXYZ[\]^0468:<BDFJMZ|~   !#&(*,.~ *BZrMxN`H0I$'a_bc` MNI26rJd~"<N$.8J| <Fh.8BLV( &,   &,68:  &,HF  $$*06JL   $*06bd  $prt % &,!  &,79;I  $ &,KM    &,ce  $qsu &+-,. $G $X`Z\^ $Ya[]_ $fnhjl $goikm%)+-/46;=>EIKMOTV[$]^*,-./015     OX{@JMMJPPJ*  JXXJWKo6,- .//O EGFHIghijklm '(+35FGHKSTU nooIKj.Z^XUWV[Y]\OJKLMNSeff pp  .pfLNMKOeSJU^ .[]^XUWVY\ZJKLMNOSefp.pfJOSSU^ eel%<  !"#$% >zst?@ABCDyubioath-desktop/fonts/Roboto-Regular.ttf000066400000000000000000005164101412677075700211130ustar00rootroot00000000000000 GDEFB'HbGPOS)]GSUBYxOS/2 l`cmapwXFcvt +$4Tfpgmw`!,gasp'< glyf& ,lhdmxUz`z headjz6hhea  H$hmtxr8locaw maxp>  name6!a$postmd' prepf"Id( q 9 а а  а  EX/>YEX/>Y9999 9 9 01!!!!5!(<6 }wx^^^{ 0EX/>YEX / >Y +X!Y901#3462"&[ 7l88l7-==Z;;# / 9/а01#3#3ooxwEX / >YEX/>YEX/>YEX/>Y 9|/ +X!Yаа а / +X!Y а аааа01!##5!!5!3!33#3##!!PP ERRRREPEfb``f#bn0+iEX / >YEX"/">Y" 9  а а  +X!Y +X!Y"а"&а") +X!Y014&'&&546753#4&#"#5&&53326Xÿrw~1Q˷ӹw\~3Aѡ͍{nfycwjƋ~i &48|EX/>YEX#/#>Y а / +X!Y +X!Y#а/#* +X!Y1 +X!Y5#95/7#97/014632#"&5326554&"46  &5326554&#"'iXJGWVV;XJHVWIGYiiGNebUINffRуGOecUJOdcTBrBe'3EX / >YEX/>YEX/>Y" 9* 9"*9*"9 9 9 99 +X!Y!9 1 +X!Y01467&&54632653#'#"$2776654&#"euaBĨYokDD{aJgדz!"vvD2dLR`iuvGXRO}sBEKp{v`S0W>CYog!/9/01#3*k //0147&'y& Uu&yOTFzp4U~`qJT&*7k //01'654'77u'Xb'wEgIqv/ iPqIdaU EX/>Y/  /01%73%'J.. ).|}ZpXn[^ [N4  /а  +X!Y01!!#!5!3jj 4̯4 / +X!Yа/01'6753i^cHe% / +X!Y01!5! v EX/>Y +X!Y017462"&9r;;r9a0@@0.>>/EX/>Y01#3`}-s  ;EX / >YEX/>Y  +X!Y +X!Y01#"532'4&#"3267 m53A8 :EX/>YEX/>Y9/ +X!Y901!#5%3ٺщ]3OEX/>YEX/>Y +X!Yв9  +X!Y в901!!56654&#"#4$32!3FpUszۅ0UrձY^&{EX / >YEX/>Y 9/]q/]_r  +X!Y  а& +X!Y&9а +X!Y013665#"#4632 $5332654&'#x{jxf~2rq_,&޶s5P JEX / >YEX/>Y 9/ +X!Yа в 9 9013##!53!ʺiRm9(-dEX/>YEX / >Y +X!Y 9/ +X!Y9 а  +X!Y01!!632#"&'332654&#"J,kvyE1֫s?ֽ}5(!QEX/>YEX / >Y +X!Y 9/ +X!Y  +X!Y01#632#"55%"32654&O"sǾWS_y}AGprVDܸM%3EX/>YEX/>Y +X!Y901#!5!%YHp!+dEX/>YEX / >Y' 9'/'] +X!Y'9'9  +X!Y" +X!Y01#"&5467&&546324&"326"264&sbrrap헛mޅ4m01wv10lztoތd$[EX / >YEX/>Y 9/ 9 +X!Y +X!Y  +X!Y01#"&&546632#5366%26754&#">:`~fö$']$yzET|ሒ|6WyrTJ仙mD&sEX / >Y01)UD's EX/>Y01HzJEX/>Yа/015r2{z'/а/ +X!Y +X!Y01!5!!5!BB.KEX/>Yа/0155kVKv!SEX/>YEX / >Y +X!Y99  +X!Y в9016677654&#"#6632462"&e2MTnif|㶽ӢmI7l88l7wT_miwl[˱lQ-==Z;;j;5Bl2/EX/>Yв29/99 +X!Yа2 +X!Y*а*/# +X!Y@ +X!Y01#"'#"&766323267!"3267#"$$3232677&#" ص56JyiQP4qȴ 'Z<%>i |dQXYEX/>YEX/>Y9/ +X!Y 901!#3#!,-M|PXEX/>YEX/>Y9/ +X!Y9 +X!Y +X!Y013!2#!265!%!2654&#!tdv="~f+!z~lxmwGEX / >YEX/>Y а  +X!Y +X!Y01# 54$32#&&#"3267ɑ Ʋr64宜葴 ;EX/>YEX/>Y  +X!Y  +X!Y013!232554'$]ʦUF QEX/>YEX/>Y 9 / +X!Y +X!Y +X!Y01!!!!!!c-w,/ BEX/>YEX/>Y 9 / +X!Y +X!Y01!#!!!:c}zlEX / >YEX/>Y а  +X!Y +X!Y 9/]]?O] +X!Y01%#"$'5!2#!"3267!5!J36l5ji4Ij!w09G gEX/>YEX / >YEX/>YEX/>Y а / ] q q/ ] r +X!Y01!#!#3!3"_rwEX/>YEX/>Y01!#3w5/EX/>YEX/>Y а  +X!Y013#"&533267 w} tEX/>YEX/>YEX/>YEX / >Y9@JZjz]9]9@6FVfv ]01#33#j0})EX/>YEX/>Y +X!Y01%!!3jRYEX/>YEX/>YEX/>YEX/>YEX / >Y99 901 3###"#\P7de L 9EX/>YEX/>YEX/>YEX/>Y9901!##33#߿bgv ;EX / >YEX/>Y  +X!Y +X!Y01#"$'54$32'#"327   лӹ9iBk O 9  EX/>YEX/>Y 9 / +X!Y +X!Y01#!2#%!2654&'!iY:坑m "O#$9EX/>YEX/>Y9 +X!Y  +X!Y01%#"$'54$32'#" 7yHP  ;tVy9iBkc9EX/>YEX/>YEX / >Y9/ +X!Y 9 +X!Y01!#!2#!2654&'! Vn'Mֈ2 |Pr&d'(9EX/>YEX/>Y а +X!Y&9& +X!Yа" +X!Y01&&54$32#4&#"#"$&533264&VܖkcãGϘty}oY{f{os|u1/EX/>YEX/>Y +X!Y01!#!5!,-f=9EX/>YEX / >YEX/>Y +X!Y01"'332653"&89EX/>YEX/>YEX/>Y901%3#3P=YEX/>YEX/>YEX/>YEX / >YEX/>Y 9 9  9017373#'#3) (ɯP%oo9 kEX/>YEX / >YEX/>YEX/>Y9@ ]9@ ]9 9013##3]43.."81EX/>YEX/>YEX/>Y9013#3e| oVz FEX/>YEX/>Y +X!Y9 +X!Y 901%!!5!5!9A $// +X!Y +X!Y01#3!! yx(8/EX/>Y013#(` '// +X!Y +X!Y01!!53# zH@'9EX/>Yв9/01#3#+*)iEX/>Y +X!Y01!5!l9#/]/а/]01#3ڟ&mN(|)*9 EX/>YEX/>YEX/>Y9 9 / +X!Y 9 +X!Y # +X!Y01!&'#"&54$3354&#"#46632%2675# ( tqcsv& W#t RUasdGQXXZHWb f9/EX / >YEX/>YEX/>Y9 9  +X!Y +X!Y01#"'#36 '4&#"326 p pṒPUӑ}ËΪ,\NK9EX/>YEX/>Y +X!Yаа +X!Y01%2673#"546632#&&#">cvntٔixZ]d'ڮi#_f9/EX/>YEX / >YEX/>Y 9  9  +X!Y +X!Y014323#'#"5327&#"_쿾o oƼQS&/4t4О]Nl9EX/>YEX/>Y9/]  +X!Y +X!Y9 +X!Y01"5546632!3267"!5&&M{݁#b3qp!"MPBXʣ<e9EX/ >YEX/>YEX/>YEX/>Y +X!Y  +X!Yа013#5354632&#"3#竫@? /5Zbo ibrU`VN$"%&9" EX/>YEX/>YEX / >YEX/>Y9 9  +X!Y9 +X!Y" +X!Y0143273#"&'732655#"7327&#"`o u;`wo뺖RU&+xdWo]2џJ 9/EX/>YEX/>YEX/>Y9  +X!Y0163 #&&#"#3E{WioZ&}5up`Nh ? 9EX/>YEX/>Y а / +X!Y01!#3462"&U7l88l7:->>Z<<KY K9EX / >YEX/>Y +X!Y а/ +X!Y01!"'532654632"&K=4 4>A75688l6:ICS,?>Z<<  uEX/ >YEX/>YEX/>YEX / >Y9@:JZjz ]9@6FVfv ]01#373#tcQ[y_wd<UEX/ >YEX/>Y01!#3UxNx9EX/>YEX/>YEX/>YEX / >YEX/>YEX/>Y 9 9 +X!Y01632663 #4&#"#4#"#:wR6vdj}g C:xN`+ts{h2:NT 9EX/>YEX/>YEX/>YEX/>Y9  +X!Y0163 #&&#"#;|WioZ&:}5up`N:[4NE 9 EX/>YEX / >Y +X!Y +X!Y0146632#"532654&#"[}ߏyﺧ' 2 Dz`Np9 EX / >YEX / >YEX/>YEX/>Y 9 9  +X!Y +X!Y01#"'#3632'4&#"326q q㹜TS}xԕ_`Nm9EX/>YEX/>YEX/>YEX / >Y 9  9 +X!Y +X!Y0143273##"5327&#"_op鹝WX&)m&x1ԒN G9EX / >YEX/>YEX/>Y  +X!Y 901&#"#3632*1A[6:}_N&d '(9EX / >YEX/>Y 9  а  +X!Y +X!Y!а$ +X!Y014&$&&54632#4&#"#"&&53326qO᯸庁berjS蹂qriKSVyW\`]mU V@a9EX/>YEX/>YEX / >Yа/ +X!Y  +X!Yа013#327#"&5#536A 8IE|~@aAA :T 9EX/>YEX / >YEX/>YEX/>Y 9  +X!Y01%#"&'33273#(lѭFkE!:89EX/>YEX/>YEX/>Y901%3#3 |x?:+: ` 9EX/>YEX/>YEX / >YEX/>YEX/>Y 9 9 901%3##33JйŖƸ;4:*): SEX/>YEX / >YEX/>YEX/>Y 9 99 9013##3mmk#K:J9EX/>YEX/>YEX/>Y9  +X!Y 013#''526773Me#E2^i")~+ Len.X: FEX/>YEX/>Y +X!Y9 +X!Y 901%!!5!5!:yU4@=29 // 9/] +X!Y901&&554#5255667x&ѧ2з3sCYZBD/EX/>Y01#3Dr=29 // 9/] +X!Y9016547&55'73"&ԵA TRCs2ʼ2"D9EX/>Yаа/ +X!Y +X!Y 01#".#"4632265ﻉHJ*NTL@L_ 5$k^@ t_fM 3 9/EX / >Y +X!Y9013#"&462 7l88l7L->>Z<<i &!T"#9EX/>YEX / >Yб +X!Y ааа +X!Y01%2673#5&554753#&&#"JdƐʱiyY~"#!Ԗi#[h!"#9EX/>YEX/>Y9/_rq] +X!Y +X!Yаа ааа +X!Y01!!536675'#534632#4&#"!>M(2 Ⱦ޿oi ?nܚ[ `ݝԱk|}i[*A+,9'EX/>Yа/ +X!Y' +X!Y01%#"''7&547'7632726654&&#"Oϟhpğnf`sqqpqspΣxyğ{{z{{zyx$q9EX/>YEX / >Y 9 9/а/ +X!Y  +X!Y аааа013!!!!#!5!5!5!34D>0}|B|}M/EX/>Y+013#3Zy4D#EF9#5/EX#/#>Y#9? +X!Y?9а +X!Y0#907 +X!Y709#'а#* +X!Y01#"&'&5732654&'.547&&54$32#4&#"%&'6654&yEHpFѶ]BG 8q:ZKPK6,NTU1d89qu`Yi>0ooX1d}sbEPAPHaeEFPBReEXme/ +X!Y аа/01462"&%462"&e7l88l77l88l7[-==Z<<+->>Z<<[*9':;9'а'6EX./.>YEX6/6>Y6.9/] .69 /  ] 9 +X!Y +X!Y 96  +X!Y.' +X!Y01#"&554632#4&#"3265% $54$#"4$ #"$__[^ll^\]@sKJUӶnӤcU{qxTeۦ%"ܪZX%o&'9EX/>Y&9/в9 9 / +X!Y 9 +X!Y   +X!Y01&'#"&5463354#"'4632%2675#j Lwl|EO+XpSY"&V|gox463 gaQ{(?3^fd&Dw /а/ +X!Y01#!5!{?wZ4=6>?96 а6а6#EX/>YEX / >Y +X!Y +X!Y 9 /" 9"/""]5 "95/5]55] +X!Y(59 /а//"= +X!Y014$ #"$732$54$#"#!2#&4'&''36654&##ZKJs졠zsHXNdZXǬۦ"!Q}{A2=V&$`B6I=.9/ +X!Y01!5!.`| 1EX/>Y а /  +X!Y +X!Y014632#"&2654&#"jhhi6JJ67KKhijG9:KOlJa H /EX / >Y а  +X!Yа  +X!Y9 ]01!!#!5!3!5!lACVb BV9EX/>YEX/>Y +X!Yв9 +X!Y в901!5654&#"#46 !,m@& '(9EX/>YEX/>Y9/o]?q/]_r +X!Y 9& +X!Y&99  +X!Y0132654&#"#4632#"&5332654'# TJH?F9K|FBOCFIXf=0-:3)b{yh7[)j}~k-<<3q{#/]а/]/013#<`:Q 9EX/>YEX/>YEX/>YEX / >Y +X!Y  9013273#'#"'#Sgt> ]Q: sI+C@ + 9EX/>YEX/>Y901!#"$54$3!T  PkyI  9/ +XY01462"&9r;;r90@@0/??tMB9EX/>YEX/>Y#]9 +XY 01!#'2654&'7 OW@b 4aqk4/,* zA9EX/>YEX/>Y9/ +X!Y901#5%3cY9uz' B9EX/>Y 9 / +X!Y +X!Y014632 &5326554&#"z̾aTS_aSQ`cJ¥drseNcrnafx& jU'' EX/>Y01P''EX / >Y01o'' 21EX!/!>Y01DxM"Y #$9 /EX!/!>Y!99  +X!Y в9! +X!Y0132653#"&547765"&5462L)` tmd}֠mB7l88l7jvc%msq[ɳqN=->>-,<<W{EX/>YEX/>YEX/>Y9/ +X!Y +X!Y 9 /  +X!Y +X!Y901!!!#!!!!!!WpMNa)xYc 8/ 9 / 9 9 9в 9  017YJwIIwJwIPO{O{{Qv )h*+9а&EX/>YEX/>Y9#9#а +X!Y$а& +X!Y01#"'#7&54$3273&#"4'327 a ֔g,b4f8[yRhSB}co @] Y 9 EX/>YEX / >Y 9/ 9/  +X!Y +X!Y01!2#!#!2654&'`wi~Cޗx{j*k!+,9EX/ >YEX/>YEX/>Y 99 +X!Y 9#9( +X!Y01!#4632#"&'732654.54654&#"DϺŀKV˶Q&+15kqJWhXW볟}E3_L, ,^R4`QYT^kN|N*5=ʲ>?9.а9EX/>YEX/>YEX/>YEX/>Y9 9 / ] +X!Y 99:9:/::]! +X!Y% +X!Y(9+а / +X!Y601 '#"&5463354&#"'46326632!3277%2675#"!54&A⍧nhis2?i(y/@ H2ujPsV^Uk{nQSSOWsLyJ6nSM]4~-,+V,-9(EX/ >YEX/>Y9/9" +X!Y( +X!Y01#"&&546632&''7&'77'&&#"32654u؆ypρy0I9ﯽIh!\}g]rÍc[16d8=IG- S9а/ +X!Y +XY +XY +XY +XY01!5!462"&462"&-9r;;r99r;;r9X:0@@0/>>0@@0.??[z4&e'(9а#EX/>YEX/>Y# +X!Y!#9!а +X!Y9 014663273#"'#7&&#"4'3265[{n^I|f|hVJ|d͹aW>HfW7B'*͚#˕7o ڵoP۹`'f9 /EX / >YEX/>YEX/>Y 9 9  +X!Y +X!Y01#"'#3632'4&#"326'qq㹜TS}ʄԕ_"/EX / >YEX/>YEX/>Y]/]9/ +X!Yв 9 9а +X!Y   +X!Y01##'#"55432!5!533327&#" oƼ쿾olQS/t4/ОmEX/>YEX/>Y9/9/а +X!Yаа +X!Y а а013##!##533!3!5!#b#_""U:EX/>YEX/>Y01!#3U:?: iEX/>YEX/>YEX/>YEX / >Yа/]]/]] +X!Y 901##333#k[<3:6" ]EX / >YEX/>Y 9/а +X!Yа +X!Yа а а 01%!!573iKT}Tϝ*}*"  KEX / >YEX/>Y 9/а +X!Yааа а017#573le={=7{7K[9EX/>YEX/>YEX/>YEX/>Y  +X!Y 9901#"'73255#3=6%=3GjhKNc 9EX/>YEX/>YEX / >YEX/>Y9  +X!Y +X!Y01632#"'73254&#"#7 t˳=6#Bo}Q: :h #$%9EX / >YEX/>YEX/>YEX/>Y +X!Y9/ +X!Y +X!Y +X!Y  +X!Y01!!#"&'4632!!!!!27&#" r|F-wqfml5,aN ,4569&а0EX/>YEX / >YEX/>YEX/>Y 91 91/ +X!Y +X!Y 9 9$а* +X!Y-01466326632!327#"&'#"532654&#"%"!54&ayێ=Ap2xJ?>dž-c'udfstl~pdcq0 ζ֣} 3 9EX/ >YEX/>Y  +X!Y0136632&#";T(3 `]^ !9EX/>YEX/>Y9/  +X!Y +X!Y +X!Y01 5!5#"'763 '27!ݥ=/.dꧩYEu: XT"Kt 9EX/ >YEX/>YEX/>YEX/>Y +X!Y  +X!Yаа +X!Y01##"'73265#5356632&#"3`˨=2CAG;T&< h\x ze7%U&'9"EX / >YEX/>Y 9а  +X!Y" +X!Y01#"$'54$326653#"32 `]aϽӹ>dA=k[#U$%9EX/>YEX/>Y9 а +X!Y! +X!Y01466326653#"5326554&#"[{ψG@I|񹧍'd33 ۹M 9EX/>YEX/>YEX / >Y 9а  +X!Y016653"'33265saI ~&a9EX/>YEX / >YEX/>YEX/>Y9в9 +X!Y01#'#"&'33273>5lѭFDDkE#HlKe: )EX/>YEX/>Y  +X!Y01#"'73265e;4CAH:m h\bOh9EX/>YEX/>Y 9 / +X!Y9 +X!Y  +X!Y012'"&55!&&#"'6267!|z{IbO$tl}5}4/а/]9//в901#'#53p  /а/]9а/0173#53qU  .p /01 ' 9/]  +X!Yа/ 01 &533265إLIFOyxFONGh 9/ +X!Y01462"&7l88l7W->>Z<<y'P *9 /а/?] а01#"&4623264&#"'|[\{{{C10DC12BWuvzzV/DBbEF2O829/EX / >Y +X!Y@ /?]01!327#"&5467~:qN04 FZYg{-[VHy,hVY8{>@/а/] а / +X!Y +X!Y01#".#"'46323265>{\) ?1k:D-^,;/а/]/а/а//013#3#]mږ/~k 4/@  0@] а /@ 0 @ P ` ] ]а014632#"&72654&#"~dJGb`ILbW4F00#%2Fa`GF]^E#00#$24H//а/]01#3H&o/а/]/013#0N^t./]а/@ /?]в9 901'664HtKF[KNMٙN'jgU=P G'7//а/а//]а//01#3#3  8v/ +X!Y01462"&87l88l7->>Z<<?/а/]9/013#tp?q 8 /а/а//  +X!Yа а/013#462"&%462"&e7l88l777l88l7%-==Z<<+->>Z<<kyIx/010,EX/>YEX/>Y +X!Y01!#!0Bs0EX/>YEX/>Y +X!Y9013!%!CLgP(g#z$%9а EX/>YEX/>Y9/]]/]q +X!Y +X!Y  +X!Y01!5!#"$'54$32#"327: лѻª9iB k21EX/>YEX/>YEX/>Y901#3#fwPx! REX/>YEX/>Y +X!Yа//] +X!Y  +X!Y017!!!!!!xWWSl?9EX/>YEX/>YEX/>Y +X!Y01!#!#!2OED >EX/>YEX/>Y +X!Yа  +X!Y01!!55!!C$ϝJGMt#n $%9 а  EX/>YEX / >Y 9/в 9/ а! +X!Yа +X!Y 01#5&546767534&'66B}t²/IW" ʵZ!]9EX/>YEX/>YEX/>YEX / >Y 9/а  +X!Y 016653#&'33 ת j*q$^%&9EX/>YEX/>YEX#/#>Y +X!Y аа +X!Y!а"01%6754& !53&5546323!ኚjxxjqf3o$䴂fdwN!"#9EX/>YEX/>YEX/>YEX / >Y +X!Y 99  +X!Y +X!Y01327#"'#"55327327&#"N0J&kk̒RU:"=úM*l+,9/EX/>YEX / >Y( 9(/% +X!Y%(9 9 +X!Y  +X!Y012#"'#4664&#"32654&'#5326]bX{͵xzgkl,^mUx~ۮ[.-Â_5lk{fk4?vw.`:8 9EX/>YEX/>YEX/>Y9013#3 &'`'*a+,9"EX/ >YEX/>Y +X!Y9/( +X!Y а" +X!Y014632&#"#"5547'&&32654&'"˯|Vevۑck>}7;H>l'' #'cƈcM%r&'9EX/>YEX / >Y +X!Y а "а"//"]"]# +X!Y#"9"9 +X!Y0132653#"&547&&54632#4&#"33#vqXbʺkp0MbnQB$zIFe[JmM !9/EX/>Y +X!Yв 99 +X!Y901'6654$'&&547!5fCRQGlCb/36g[xUZaHXNE6T5U-DN-@CaNT 9EX/>YEX/>YEX/>YEX/>Y9  +X!Y01632#4&#"#8 xȾl\":Q|WN:z  9аEX / >YEX/>Y 9/_]]qq/q]/]q  +X!Y +X!Y +X!Y01#"532!54&#"! 67!%%ےL4=N,7'K: )EX/>YEX / >Y +X!Y01327#"|7@0'FI:?@ & %;R9/EX / >YEX/>Y  +X!Y 9а +X!Y01237#"&&'#'&&#'6bx!-#&$*MN>`5-/*P_3' %VPQ8. ew-Y./9/EX+/+>Y +X!Y.+9/  +X!Y.+9 +X!Y% 901&#"!3#'7654.5467&&54$32raMǐ| OhHk91LwAvp$gUۘpA%1i@=T@<>'.3Bio.*`'):^ 9EX/>YEX / >YEX/>Y +X!Y  +X!Y ааа01#327#"!##5!q6A0'FIoHr@A &_`NY9EX/>YEX / >YEX/>Y 9 +X!Y +X!Y012#"'#46632654&#"P rq̈́SuNB|ȓةeN"K#$9/EX/>YEX/>Yа +X!Y  +X!Y012#4&#"'7654&'&55466=篆o@bPcJb/1FVwNմn۳ c&`P?>U6YEX/>Y +X!Y +X!Y01!#"554667!32654&#"{z݌vٌ@/ ׷ˬQ:K 9EX/>YEX / >Y +X!Y  +X!Y а01!327#"&'!5!i+1*Lj}ui4:=9EX/>YEX/>YEX/>Y +X!Y013265&3#"&'IɁvq:y!W"L:"^#$9/EX/>YEX/>YEX/>Yа +X!Y а  +X!Y01$5474632#665&&#"le qB3Wi}3fޤR_(C:Y9 /EX/>YEX/>YEX/>YEX / >Y +X!Y а01665&3#&3zv:N96z:#[$%9EX/>YEX/>YEX/>YEX/>Y +X!Y 9в901326533265&3#"'#"7ĊrjlqqkjrÇϼU)wχ:㭦-Τuy1yy(q)*9&EX/>YEX/>Y9/ +X!Y 9 +X!Yа#а& +X!Y01#"&5732655&5463267&#"yYEX/>YEX / >Y 9  +X!Y016632&#"#&#"'632$+kWH4$ 'F$׿'C' $4GXk*cXOw<OT]J:&r'(9EX/>YEX/>YEX / >Y +X!Y9аааа  +X!Y 9$01##"'#"47#5!&'!32673326@SS@tJK`XiqqjV`0ȩ㧢*d9EX/>YEX / >Y +X!Y 9/   +X!Y +X!Yа01!632#'265&&#"#!5!aj90N㖑.Z{ !9EX / >YEX/>Y а  +X!Y 9/q]q]/]_rr +X!Y +X!Y01# 54$32#&&#"!!3267ɏ :Ʋr65嬞葴1;!w "#9 EX/>YEX/>YEX/>Y9/  +X!Y +X!Y +X!Yа01!!!#57>7!2654&'iY?(]d4 w_܉k-M9EX/>YEX/>YEX/>YEX / >Y9/ 9/ +X!Y +X!Y  +X!Y01!3!!!#3!2654&'rj2_9w⽿dzt>_9EX/>YEX/>YEX/>Y +X!Y9/  +X!Yа01!632#&&#"#!5!hhP(-Θ*> I /EX/>YEX/>YEX/>YEX / >Y +X!Y013!3!#!@2Pg ^9EX / >YEX / >Y  +X!Y 9/  +X!Y  +X!Y01!!!!!2654&'!BjB_Lݘ{2]9 /EX / >YEX/>Yа +X!Y аааа  +X!Y01#!#367!3!!!ǿw^o g kejeouT5EX / >YEX / >YEX/>YEX/>YEX/>YEX/>Yа//]] +X!Yв9 в901####33333#d<<hhxxQPj(u)*9EX / >YEX/>Y  +X!Y в% 9%/%]%q$ +X!Y$%9а +X!Y014&#"#46632#"&&533265%#5366|oô)thtge0Vgsx~ ]EX/>YEX/>YEX/>YEX/>Y9@ ] 9@ ]013##3?3Pb/O9EX/>YEX/>YEX / >Y +X!Y   +X!Y01#!#57>7Y?(]d4 P܉kMK9EX/>YEX/>YEX/>Y9  +X!Y9013#"'72?3O4Zy[O[i3&cMCta3 e4Y6S!*] +,9  а " // 9/в 9 / а +X!Y $ +X!Yа"013##5#"$$3353"33332654&#x#ּڿĘ N g < /EX/>YEX/>YEX / >Y +X!Y013!33#!_G9EX/>YEX / >YEX/>Y9/ +X!Y01##"&'3327inP[26 IEX/>YEX/>YEX/>YEX / >Y +X!Yа01!3!3!qPjU /EX/>YEX/>YEX/>YEX / >Y +X!Yаа а а01!3!33#!q _ a9 EX/>YEX / >Y 9/  +X!Y  +X!Y  +X!Y01!!2!!!2654&'[Zf[_ݘ{0 o9аEX / >YEX/>YEX/>YEX/>Y 9/  +X!Y  +X!Y01!!3!2654&'#3rj_W^ݘ{@ O 9 EX / >YEX/>Y 9/  +X!Y  +X!Y01!!3!2654&'cj_^ݘ{ !9EX/>YEX/>Yа +X!Y9/q]/qqq]/]_rr +X!Y  +X!Y01327!5!4#"#632#"$'T=Ϻ δɑ̥%!&'9!EX/>YEX / >YEX/>YEX / >Y 9/_]]O_qq/q]/]q +X!Y +X!Y" +X!Y01#"$'##336$32'#"327ڐ  лӹ*d7kYd c9 EX / >YEX/>YEX/>Y 9/ +X!Y 9  +X!Y01!!#$4$3!!!"R7loP>a((d)*9EX/ >YEX/>Y9/999 +X!Y# +X!Y012#"55766536"32654&gvݐbq|#ZU,H?}'ę):9аEX/>YEX/>Y9/]q]q/?]or +X!Y9 +X!Y +X!Y013!2#!2654#%3 '#ZXbw2ts:Ky ]VN0G:,EX/>YEX/>Y +X!Y01!#!G _:.:]9 /EX/>YEX / >Y +X!Yаа  ааа +X!Y01776!3#!#!!!@l / O]+>:EX / >YEX / >YEX/>YEX/>YEX/>YEX/>Yа/]]/]q +X!Yв9 в901####33333#낹~**0 @@XM&'(9EX / >YEX/>Y  +X!Y% 9%//%?%]%%]%%qo%%r% 9" +X!Y"%9 9 +X!Y014&#"#4632#"&5332654&##536teb챾XQijmsɽLYfEIz$@OqbN[O: EEX/>YEX/>YEX/>YEX/>Y9 9013##3H ::?: xEX/>YEX/>YEX/>YEX / >Yа/]]qq]/]or +X!Y 901##333#݇ylT3:6,:O9EX/>YEX/>YEX/>Y +X!Y  +X!Y01#!#57667J5ZN :k R: YEX/>YEX / >YEX/>YEX/>YEX / >Y 9 9 901%3###3pE$:: EX/>YEX / >YEX/>YEX/>Y а /o ] ]? q q r q ] q ]/ ]o  r +X!Y01!#!#3!32:+:9EX/>YEX/>YEX/>Y +X!Y01!#!#!e_:(:2EX/>YEX/>Y +X!Yа01!#!5!\d`i%0129 а+/EX/>YEX / >YEX/>YEX/>YEX/>Y  +X!Y# +X!Y)а.01323632#"'##"5%4&#"326%327&#"dҷU@F^ѷaEBUL{?/-C|mz:/*=z 6+# U: </EX/>YEX/>YEX / >Y +X!Y013!33#!:]](Ag;G9EX/>YEX/>YEX/>Y 9 / +X!Y01!##"&'33273zz C : IEX/>YEX/>YEX/>YEX / >Y +X!Yа01!3!3!V:]]:m:L /EX/>YEX/>YEX/>YEX / >Y +X!Yа 01!3!33#!K:]]](A:: a9 EX/>YEX / >Y 9/  +X!Y  +X!Y  +X!Y01!!#!!!2654&'ܺ6hrod:ik]Zs: o9 аEX / >YEX / >YEX/>YEX / >Y 9/ +X!Y +X!Y01!#!3#3!2654&'Vܺ6)hrod::ik]Zs: O9 EX / >YEX/>Y 9/  +X!Y  +X!Y01!#!3!2654&'Vܺ6hrod:ik]ZsdN !9EX/>YEX/>Y +X!Y9//?]]qor99 +X!Y +X!Y01"#46632#"&533267!5!&&cvjw׊fw j~V]ef0N !9 EX/>YEX/>YEX/>YEX / >Y9/]q]q/?]_or +X!Y  +X!Y +X!Y01!632#"'!#3 654&#"V  |o:):״Ʊ/: c9 EX/>YEX/>YEX/>Y9/ +X!Y9 +X!Y01#!#&&5467!!"Ǻho޺lY&gz:[&jOageK" #$9/EX/>YEX/>YEX / >Y]/]]9/!б +X!Y9  +X!Y +X!Y01!63 #"'72654&#"##5353!c{W=6#HipZ&}ܪ h\ xr`NgN !9EX/>YEX/>Y +X!Y99/r]qq]q/?]orr9 +X!Y +X!Y01%2673#"546632#&&#"!!Hcxnuؔh l xZ^c(ڮi':} !9 EX/>YEX/>YEX/>Y9/  +X!Y +X!Y +X!Y +X!Y01!!!#57667!2654&'ӷ)A6UM eurc:dZ iVQ`:~9EX/>YEX/>YEX / >YEX/>Y 9/а  +X!Y +X!Y  +X!Y01!3!#!!#3!2654&'V"ٽ6eurcc :iVQ`{ 9/EX/>YEX/>YEX/>Y]/]]9/ +X!Y9  +X!Yа01!63 #&&#"##5353!y{WioZ&4}5up`N: F/EX/>YEX/>YEX/>YEX / >Y +X!Y01!3!#!V:]d:u a!"9EX/>YEX/>YEX/>YEX/>YEX / >Y9 +X!Y01#"&'#"&'3326533265um14qrbr|ijzWYYW&{|#}}":a 9EX/>YEX / >YEX/>YEX/>YEX/>Y9 +X!Y01#"'#"&'3326533267ʮY_Χ[Sboe\Ye:'Ɣð#fuxg'gxuft9EX/ >YEX/>Y9/ +X!Y9/ а а +X!Y +X!Y01!!!#533!!2654&'Է*Aiqod::EEwda}&'(9EX/>YEX&/&>YEX/>YEX#/#>Y9/а а  +X!Y +X!Y +X!Yа!0136$32#&&#"!!32673# 5##3xƲ@&謞蓲r6WN$Dz%&9EX/>YEX$/$>YEX!/!>YEX/>Y9/]?Oqqrq]q/?]orв9  +X!Y +X!Y +X!Y9013632#&&#"!!32673#"'##3SѶh K cxngڮixZ^c0:( WEX/>YEX/>YEX/>YEX / >Y 9 / +X!Yв901####3#! JJPZI%: WEX/>YEX/>YEX/>YEX / >Y 9 / +X!Yв901####3#!'u|w/)):;YY}EX/>YEX/>YEX/>YEX/>YEX / >YEX/>Y9/а +X!Y ав901!3#####!#3!5ŖŞEYWPJJHI:EX/>YEX/>YEX/>YEX/>YEX / >YEX/>Y9/б +X!Y ааав901!3#######3!'vzu|wyѺ/y))(:;YY?!x"#9EX/>YEX/>YEX / >YEX/>Y 9/  +X!Yааа  +X!Y0132#&&'##'#"#6633!3!A| *x*x#v{|~zK:u !9EX/>YEX/>YEX/>YEX / >Y9/аб +X!Yа +X!Y0135667!#5&&###'#"3!s5 >u! ЭO ~\Fr"&&'(9&EX/>YEX / >YEX/>YEX"/">YEX/>YEX/>Y 9 / +X!Y #а ааа & +X!Y01!67!#3!!32#&&'##'#"3!ObYyx|xil|zx%u{|*;:!%&'9%EX/>YEX / >YEX/>YEX/>YEX/>YEX/>Y 9 / +X!Yа  аа "а $ +X!Y01!567!#3!!#5&&###'#3!Fs5 Koh<:"! ЭO \FPF)2*349*/./EX/>YEX/>Y +X!Y(9(/% +X!Y %(9 +X!Y.].+а+/++]*.+92014&#!5!2##&&54673665%#53 73#53ڝ+s4Jz4?r*nزg-)miB}5czy  LFv0)2.349././EX/>YEX/>Y +X!Y(9(//(]((]((qo((r% +X!Y %(9 +X!Y.+а+/++]*.+92014&'!5!2##&&5467367654%#53 73#53p'f[2K|6rC?虈ٗr CSIw$BmiB}7az0.H  g !9аEX / >YEX/>Y  +X!Y 9//]]/q]_]O_qq +X!Y +X!Y01#"$'54$32"!&27! ζª9iB  p[4N9аEX/>YEX / >Y 9/]q]q/?]q +X!Y  +X!Y +X!Y0146632#"5! 6"!&&[{ | }^':3DyG9EX/>YEX/>YEX / >Y 9 +X!Y017663"#3C!#3g.@@|v?xYEX/>YEX/>Y9  +X!Y017632&#"#3MG# <׍YEX/>Yа б +X!Yа$ +X!Y!01#5&5753'4'#55365#q#`$vvx% #ad]fd" [4%Z&'9EX/>YEX/>Yа а# +X!Yа +X!Y014753#5&56654&'#553[ԹݶFcvtebrqc'*"po kl'yͫ ba!Х"foQ,@I JK9 2а IEX/>YEX / >Yа в 9 +X!Y  +X!Y  9%а,а8а8//б- +X!Y/4а4/< +X!Y8DаIаI/012#"&'#"&'463"3265332654&##".#"#546326753ۻٻp44pؽcqrbrscpodh+P4qn(Hj@B[;UXXUJ񞝉Č|Tz:"P p$nlRPYEX / >Yа в 9 +X!Y  +X!Y 9$а+а7а7/-а-/, +X!Y-3а3/; +X!Y7CаC/HаH/012#"'#"&'463"32655332654&##".#"#546326753B_/bR]\SbopaQ]]Q,O~0ro)JmAA[;DڕKJл2ۘ|{xggu}!| R o$nlPN?hf2u u ()*9'EX/>YEX/>YEX / >YEX / >Yв 9  +X!Yа'а'/(а(/" +X!Y(%а%/01#"&'#"&'3326533265%5!!#5um14qrbr|ijzB,WYYW&{|#}}"kk}}&'(9#EX / >YEX/>YEX/>YEX/>Yа/ 9 +X!Yа %а%/&а&/  +X!Y&#а#/01#"'#"&'33265332675!!#5ʮY_Χ[Sboe\Ye,:'Ɣð#fuxg'gxuf kkuK9/EX / >YEX/>Y а  +X!Y +X!Y01#&554$32#&&#"3 ŝ|lV dNK9/EX / >YEX/>Y а  +X!Y +X!Y01#&5546632#4&#"3w׋emp&#eڵt>/EX/>Y01%#%7%73%X!DݶD%F#%H{{m}Khzg'/ +X!Y01'7!' #}lqd0/а/ +X!Yа/ +X!Y012#54#"#52>vor*-ovY +X!YEаEL +X!YаSаSZ +X!Y%а`+а`g +X!Y2а8? +X!Y01462#4&#"4632#4&#"4632#4&"4632#4&#"462#4&#"462#4&#"4632#4&"4632#4&#"stp30.3t]_uq5.,3Hu]_tp5\3t]_tp5.-3Ostp30.3Mttp30.3u]_tp5\35u]_uq5.-3ThhT.750ThgU1450 UghT147.ThhT147.ThhT.77.ThhT.750 UghT147.UggU1450,ck "'9!// //&/EX/>YEX/>YEX/>Y01#'37%%57%'%'7/ z`F: z`F Mu Z@DE&+A`B<aR |bG; |bGDEFEG+&'1BEX/>Y 01&'EX/>Y 01qw9EX / >YEX/>YEX/>Y +X!Y 9/ а а +X!Y +X!Y01!!!#5353!!2654&'Է*AiqodEwda}V9EX/>YEX/>Y9/ +X!Y 9 +X!Y01#!2'#654&'!!27'7ig~mv%XbEnn:˺pg7A[yf`#N"w#$9EX/>YEX / >YEX / >YEX/>Y9 99 +X!Y +X!Y01'#"'#3632'4&#"327'76jonnYsq q㹜TSRYEX/>Y +X!Y01#!#!3#BȹPBv//EX/>YEX/>Y +X!Y01!#!3B _:<|^ 9 /EX/>YEX/>Y +X!Y 9/   +X!Y +X!Y01!3 #'265&&###!0B<ε/a:^ 9 /EX/>YEX/>Y +X!Y 9/   +X!Y +X!Y01!32'6654&###!> lbu0xpbȆ!y:&Qa=:&QD&,Q#:&Q`cEX/>YEX / >YEX/>YEX / >Yа//]] +X!Y9а01 ###5##3333pPhhMCNr:|EX / >YEX/>YEX / >YEX/>Y а/]]q]/]or  +X!Y 9а01 ###5##33533Zw2ee*:3:6DmEX/>YEX / >YEX/>YEX / >Y9//]] +X!Y +X!Y 901##!5!33#%Vr~?>}:EX/>YEX / >YEX/>YEX / >Y а / ] ] q ]/ ]o r +X!Y +X!Y 901##!5!33#eUzkS36&,Q:&Q `EX/>YEX / >YEX/>YEX / >Yа//] +X!Y +X!Y01!!!#!#3i=">r_i: EX/>YEX / >YEX/>YEX / >Yа/o]]?qqrq]q]/]or +X!Y +X!Y01!!!#!#3K-eՙ_2:k9/EX/>YEX/>YEX/>Y9/ +X!Y +X!Y +X!Y013 #'265&&###!#!v<y2OAa:k9/EX/>YEX/>YEX/>Y9/  +X!Y +X!Y +X!Y0132'6654&###!#!"љ0|{e& }_:q(6789)EX / >YEX/>YEX/>Yа/9/  +X!Y +X!Y, +X!Y,9&,9( +X!Y3 +X!Y01"'#"$55463"327&5546632366554&#"׳u҄vF8yhvofhy}xubhycazIBBĬ"٦ a_4JHҲmO$/019%EX / >YEX/>YEX/>YEX/>Y9/   +X!Y +X!Y' +X!Y'9$ +X!Y"'$9, +X!Y01"'#"&5543"327&5463236754&"vśI].,OafIxF 9B:8 ^btsuz9&<Q):&\Q4]/EX/>YEX / >YEX/>Y +X!Yаааа  +X!Y01!5!53!!!33#!w_:M /EX/>YEX/>Y +X!Yа +X!Yа 01!5!#!33#!1](Ag&QFg_;&Q>P9EX/>YEX / >YEX / >Y 9/а +X!Y0133673##5"&'Wyxr26 !P[" ;P9EX / >YEX/>YEX/>Y9/ +X!Yа01!##5&&'33673ٺFSTE ̵C G9EX/>YEX/>YEX / >Y9/ +X!Y0133632#&&#"5.͘7L?%g&'9$EX/>YEX/>Y9/ +X!Yа а +X!Y# +X!Y01 5&&53463 !327!54&#"PW̳/@Q)[ŢZ}l]S-5Z!cN!u"#9EX / >YEX/>Y 9/] +X!Yа а +X!Y 9  +X!Y01"5&&53>32!327"!5&&xwep#oqp!0nMŒXʣ_9/EX/>YEX/>YEX/>Y9/а +X!Y +X!Y01!#333#'265&&'!d q:{ 9/EX/>YEX/>YEX/>Yа/]]q]/]qа +X!Y +X!Y01'654&'##333dp0[d]|9抒3:6/&t,:&K 9EX/>YEX/>YEX/>YEX/>Yа/_]]qoqqrqqOq]]/]?r  +X!Y +X!Y01!3#"'73265!#r<6%=AH4ng\K: 9EX/>YEX/>YEX/>YEX/>Yа/o]]?qqrq]q]/]or +X!Y +X!Y01!3#"'7265!#K񹫘<4<BH:+mh\'2:&,:&&1:&]a !9EX/>YEX/>Y 9 / +X!Y +X!Y  +X!Y01 # 5!5#"'7627!.dݥ=/!TYEu: X"h,j 9EX/>YEX / >Y +X!Yв 9/ а  +X!Y +X!Y01!5!#"&&5332654&##5vkkv{}irxiu(:] 9 /EX/>Y +X!Yв 9/ а  +X!Y +X!Y01!5!#"&&533265%#5 erބz}ɠvfqy":Kt&D&&@T;K:&O&&T]019K&<T)K:&\TWe R9 EX/>YEX/>Y9/  +X!Y  +X!Y013!"$5467!"ms=P*8Yg\ !9EX/>YEX/>Y9/ +X!Y в9 +X!Y01!"$54$7!376676'3#%!"GjXor@/={Dn8dn+,-9*EX/ >YEX/>YEX/>YEX/>Y9  +X!Y99" +X!Y( +X!Y0132336676'7#'#"5&#"327'dķj_NA)yىNlRS =MA_xнff1ޭ>6'f()9EX / >YEX!/!>Y( 9/ +X!Y  +X!Y9! +X!Y! 901536654!!5!36676'3#54&'kSAtA0uy{bEPO[ιXM@x1:'c()9EX/>YEX/>Y +X!Y9(9/ +X!Y +X!Y%901%36676'3#&'54##'36654&#!'!_pvB-縇zn}uܼX9pGWJU]J4R!` "#9/EX / >YEX/>Y" 9/ +X!Y  +X!Y9 +XY0153665!!5!3'67#&'54&#!aMjQk<wy}dFa@Hsn4~y: ` !"9/EX/>YEX/>Y!9/ +X!Y +X!Y9 +XY01'3654#!5!3'67#&'54#'lVbMiT g3gSI5La>Ht}!^Dp#e$%9EX/>YEX / >YEX/>Y +X!Y +X!Y  +X!Y 901!#57>7!32676'7"&5'Y?(]d4 _YO?).܉k`tͼff?::!e "#9EX / >YEX/>YEX/>Y  +X!Y +X!Y +X!Y 901!#57667!32676'3#"&'1A6UM ZOl{A0lxZ !`yP|yq9EX/>YEX/>YEX/>YEX/>Y +X!Y 9а/q_]]qoqqqOq]]/]r?r +X!Y0136676'7#&'!#3!]JB+{؊Beoͺbg'nM:9EX/>YEX/>YEX/>YEX/>Yа/o]]?qqrq]q]/]or +X!Y  +X!Y901!#3!336676'3#&'C\Ml|A0滧3:*!duSyv"I#$9EX / >YEX/>Y  +X!Y +X!Y 901"$'4$32&#"36676'3 ܇;bq5&{XDuϳ[[meNF 9EX/>YEX / >Y +X!Y 9 +X!Y01%6674'3#"5546632&#"Q`Zĭv֋`,cPYzrV2B:ܳ#GO9EX/>YEX/>Y +X!Yаа  +X!Y901!5!!366'7#&'%\LB+yىH`rnbgF:O9EX/>YEX/>Y +X!Yаа  +X!Y901!5!!36676'3#&'^Mqw@*蹪ct}<)r$*+9EX/>YEX / >Y +X!Y в% 9%/%]%q& +X!Y&%9а +X!Y0132653# $54%&&54$!2#4&#"3#Xϰx%­ıxtgV0eeugvu}~/K&TE,K:&TTop # /а/а/ а//013#3&5tYިPIBR[{U;_% % "FL@"Fff@ k+01!5!5!5!llkg`1x! 9EX/ >Y 9/01#546j]aHtf0G! 9EX/ >Y 9/01'6753i]aHd$; 9 / +X!Yа/01'6753i[cIvdeOg /а/01&&'5]jM_H@ah1&C<& ?$d1 9 / +X!Yа/ а / 01'6753'6753i[ci[aHl@HkF$ LEX/>YEX/>YEX / >YEX/>Y  +X!Yа01!#!5!3!$lp_vW`4~EX / >YEX / >YEX/>YEX/>YEX/>YEX/>Y +X!Y +X!Y аааа01!!#!5!!5!3!!!4jssj` v"  9/ +XY014632#"&5o\[rn^]oWpm]%WnoX/&&'XR,  9/  +X!Y014632#"&R66688666k-==--<<DW#'5CQRS9а&а(а6аIEX/>YEX/>Yа/а/а/ а /$9$/&9&/+ +X!Y2 +X!Y+9а2@а G +X!YN +X!Y014632632#"'#"&54632#"&5'326554&#"326554&#"326554&#"7MOOL ihhXJHVWIGYXIHVWIHWBXJGWVJHXeyyGxx{HBrB7OecUJOdcTJOefRJOddSNebUINfeSl /9/01#53'&sY/9/01#'َ{{;nj" //017'hhnBrB6 EX / >Y 01zT 9EX/>YEX/>YEX / >YEX/>Y 9  +X!Y0163 #&#"#Jn,{ m [h)!*+9EX/>YEX/>Y)9)/ +X!Y +X!Yа аа)а)а//] +X!Yа  +X!Y$а&01!!!536675'#53'#53'4632#4&#"!!!>M(2Ⱦ޿oi\SD[ `E}}Աk|}}6#&)EX/>YEX/>YEX / >YEX / >Y 9/а/]$а$/а/а/ +X!Yа#ааа/ а /а/ +X!Y а)ав& 9' 9013#3##!##535#533!3!'#35!%3'5#WbQa;aLwwh蘔Д(#)*9#EX/>YEX/>YEX/>YEX / >YEX/>Y +X!Y  +X!Yав!9!/ +X!Yа/' +X!Y01#327#"&5###!233332654&'#6A#4IF|~ɹybaAA &6WU#'+05:9;<99а9"а9'а9+а9-а93EX/>YEX / >YEX/>Y 9/а/а +X!Y  +X!Yа ааааааа а"а$а&а(а*а -в0 9 2в5 96в9 901333#3#####53'#5333337#37#3'#7#%7#3''Xe)fVXg)e[VHp#ql$ܮ"h7e52$˜˜$ : fEX/>YEX/>YEX / >YEX/>Y +X!Y9/  +X!Y 9/012#4&'!#3!2673eo>qg:Lx_:u~N_#$%9EX/>YEX / >Y# 9#/ +X!Y  +X!Y а#а#а//]  +X!Yаа +X!Y01!327#"#535#5332&#"!!!Qtfxx jmn"% |}#˼}#(EX / >YEX/>Y ( +X!Y$(9$/p$q$$ $] +X!Yа/pq ]  +X!Y!а!/p!q !] +X!Y аа/а$ а$ааа/01##535#535!23#3#!'!!!!2!&#!6kDm?YJT:0^p2,4^YV*iEX/>YEX / >Y +X!Yаа/а +X!Yаа/  +X!Y 901#3###'3667!7!&'!7!@.}.0/Qu i}k\ EX/>YEX/>Y9/а/] +X!Yаа аа а а +X!Yа а аааа +X!Y9/01#"'5755737765PldǦZooooYssss X]:]9EX/>YEX/>YEX / >YEX/>Y 9/  +X!Y а01#5&'##5753߹q!ڷ 4!m"pEX / >YEX/>Y 9/ +X!Yа а /  ]  +X!Yаа а  +X!Y01!##535#53!2!!!2654&'!OZ&z'59:;9а(а8EX / >YEX%/%>Y а/ 9*:J]  +X!Y +X!Y 96F]%]%а/%+ +X!Y2 +X!Y6% 96/8 %98/01#"&554632#4&#"326546  &5326554&#"'{z{yIBAMOA=LXJHVWIGYiinGo:MfRINeL:GGOecUJOdcTBrBhj!g"#9EX / >YEX/>Y 9/ +X!Yа +X!Yа  +X!Y01"&5#5276632366554&#"bnq_xΫkpYg0&g#$ƭ%kbcU{'RL()*9ааEX'/'>YEX%/%>YEX/>YEX"/">YEX / >Y аа/] +X!Y  +X!Y +X!Y!% 9& %901!5!46 #"&5326754&#"##33gu8_VT]_UT_T=]bkj`eakkcnqg8 nEX/>YEX / >YEX/>Y9/ 99в 9 а +XYа а01##33####5!ތ4ZppZ [!vwq8QNe9EX / >YEX/>Y 9/ +X!Y +X!Y 9  +X!Y01%#"&54632!327"!&wĬzs^r>nz*zqT''$EX/>Y01dS'&'$EX/>Y01cI'!'$EX/>Y01Y'#' $^EX/>Y01j2*^+,9# /EX/>Y 9/9  +X!Y +X!Y# +X!Y012.#"'763 #"554"32655'&&<]:i`1txސ䌟MDy;0Nn2֥#=Zj+(/EX/>Yа +X!Y01#!#!6<E 7/EX/>Y +X!Yа  +X!Y01!!55!!kaFAJҐB"EX/>Y +X!Y01!5!C?= 9/EX/>YEX/>Y9 +X!Y013##5!0;PtbN,<q=>9$а4EX/>YEX / >Yа/а/99   +X!Y) +X!Y0а 901#"&'#"&5546326632326775.#"%4&#"3265~߉PQ쐉ހ~߈QPPr4 rPs5 uP ܼ'*caܹ߽*a`޸K?9EX/ >YEX/>Y +X!Y +X!Y01#"'73254632&#"e9:.!=f a@9wEX/>YEX/>Y01Pf"s@9vEX/>YEX/>Y01+ 8 9EX/>YEX/>Y99013# pl')'%%$ny3:,EX/>YEX/>Yа/а01#3#38y?\_W  9 /а/@P]а/01'6753iHOHm\L[<&JJ,9EX/ >YEX/>YEX/>YEX/>YEX/>YEX/>Y +X!Y  +X!Yа013#5354632&#"3#!#3ʫϽp}qwiI\=2kk^U:<^EX/ >YEX/>YEX / >YEX/>Y +X!Y +X!Y а01&#"3###5356632#0|L繫e+ckUv=(<2'+EX/ >YEX/ >YEX / >YEX/>YEX/>YEX*/*>YEX)/)>YEX#/#>YEX'/'>Y ! +X!Y%аа  +X!Y013#5354632&#"!54632&#"3##!!#3竫@? /5ZbϽp}rwi޹po ibr\=2jl^UU:<2(lEX/ >YEX!/!>YEX(/(>Y!" +X!Y&аа!аа  +X!Yа(%аа 013#5354632&#"!56632#&#"3##!竫@? /5Zbe+|Lpo ibrv=(ckUU<&vEX!/! >YEX/>YEX/>YEX / >Yа%б +X!Y  +X!Yа! +X!Y01#327#"&5#53&''"##535463236A#4IF|~=f]ZaAA `p9,_TLͲMN9EXG/G >YEX/>YEXK/K>YEX@/@>YEX / >YEX,/,>YK +X!Y  +X!Y аG +X!Y@,9@  +X!Y:,@9:% +X!Y1,@9,4 +X!Y01#327#"&5#5354&#"#4&#"#"&&5332654&$&&54632&546323Ow#4MBvfbX\%berjS蹂qriqO`V,ʛ~ UruXF;ip|LLnXGCD>VyW\`]mUGKSаFаJаPаWа[аaаcаgаmаpаwа{аааа=/EXF/F>Y~I+z{+w+:+ =F9 /а/а/ а/P9P/o +X!YPo9  +X!Y% +X!Y)а)/.а./4 +X!Y=< +X!Y=kаgаcа>а<lаhаdа?а:AаF`а\аXаKбJ +X!YZа^аbаGаINаQ +X!Yv +X!Ywаzа{а~аа01#"&'5463232#4&#"32653#"&53326533!5353!#%5!#53254'5!!5!!5!5!!5!!5!3254&###535#53#53%#535#53#539df~heCbrT24JA@JJB@I\iRXm]h)6q(om56o\~gb[\ [\]v:<]qqqqqq"oooooobyx^u_|x^%IMT F-HENNEpENNEON]QS[6,;qqttSRJtttttt8qqqqqqP)~~~\s $(R++ +а!/%/+%а/!а/ 9 /9/01 4676654&#"36632#33#3#AD$J\:+98][/KR11::'J34@4_YEX/>Y +X!Yв99 +X!Y 01!!5654&#"#46 !,m@YEX/>Y9/ +X!Y01!#5%3cY9uP H9EX / >YEX/>Y  +X!Y +X!Y01#"&'54632'4#"327EµU TEX/>YEX/>Y9/ +X!Y +X!Y +X!Y01#"&54632#53$26754&#"e)#Oih|nװ?xO@Blm`!,eEX/>YEX / >Y*а*/*]*] +X!Y*9*9  +X!Y% +X!Y01 &5467&&546 4&#"3264&#"26cUbsqbU`bڜlknmt]^nopZV&&bc'&VXVnlX[dgeNdaQPbcB:9EX/>YEX/>Y +X!Y901#!5!F~$r e!"9EX/>YEX/>Y +X!Y9/9 +X!Y +X!Y01#6632#"&55!"264&4N߾@

YEX / >Y +X!Y 9/ +X!Y9 а  +X!Y01!!632#"&'332654&#"E%csī bpysiB)CJ0Ҵұ[Vqj*0 P9 EX / >YEX/>Y 9/ +X!Yа в 9013##!'3!5Bs/N& '(9EX/>YEX/>Y9/]q]/]or +X!Y а% +X!Y%9а  +X!Y0132654&#"#4632#"&5332654!#`zvlpb泼e[깃lpqcTS`[MO%@њOcb[NV 9EX/>YEX/>Y +X!Yв9  +X!Y в901!!56654&#"#4632!g]t^yöc~^ARipkκQA9EX/>YEX/>Y9/ +X!Y901!#5%3cc H9EX / >YEX/>Y  +X!Y +X!Y01#"'5432'#"32zrI᧨SG FEX/>YEX/>Y +X!Y9 +X!Y 901%!!5!5!/gqx|xy 1EX/>YEX/>YEX/>Y9013#38RXJC i&1 SEX/>YEX / >YEX/>YEX/>Y999 9013##3(usEKB1`9EX/>YEX/>YEX/>YEX / >YEX/>Y 9 9  9017373#'#3  Ƹ֮׷&P@w;PeskS1EX/>YEX/>YEX/>Y90173#3@77$^\kst =9EX/>YEX/>YEX/>Y  +X!Y01#"&'33265 Ӷy{ (/EX/>YEX/>Y +X!Y01!#!5!qs C%]EX / >YEX/>Y 9  а  +X!Y +X!Y а# +X!Y014&$'&54632#4&#"#"$53326#yVyq{8Vﺚ~*PXJ+bȜbkYPAXPe[ˢfr[% c9EX/>YEX/>YEX / >Y9/ +X!Y 9 +X!Y01!#!2#32654&##Z u~?Y Xm]dnY6W!O"#9EX/>YEX/>Y9 +X!Y +X!Y01%#"54632'4&#"3265Upf|6F$Fo 1>ϹU O 9  EX/>YEX/>Y 9 / +X!Y +X!Y01#!2#%!2654&'!C|wJǨjd`w`Z H9EX / >YEX/>Y  +X!Y +X!Y01#"5324&#"3265Z$2>4BX EEX/>YEX/>YEX/>YEX/>Y9901!##33X]lmw`9EX/>YEX/>YEX/>YEX/>YEX / >Y99 901 3###zrsqsZo)EX/>YEX/>Y +X!Y01%!!3CHW LEX/>YEX/>YEX/>YEX / >Y99 901#373#֓!Րz+M69EX/>YEX/>Y а  +X!Y013#"&533265Աۺqr\nŝŷ^fm_QEX/>YEX/>Y01!#3QX TEX/>YEX / >YEX/>YEX/>Y 9| / ] +X!Y01!#!#3!3X\c5b 9EX / >YEX/>Y 9/  9  +X!Y +X!Y +X!Y01%#"'532#&#"3275!5!5B &QіSS*Z'TJ CEX/>YEX/>Y а / ] +X!Y +X!Y01!#!!!K Cs+iEX / >YEX"/">Y" 9  а а  +X!Y +X!Y"а"&а") +X!Y014&$'&546753#4&#"#5&&53326#yV˦ƹyq{8Véߺ~*PXJ+bˆbkYPAXPe[”fr[0 cEX/>YEX/>Y9/ +X!Yа +X!Yаа +X!Y01!!!53677'#53'&632#4&#"!p8 O ˵ʹh`]h"oF"y{̷pw{ m9EX/>YEX / >Y 9 9/а/ +XY +XYаааа0133!!!#5!5!5!533M@yDxxKyt39EX/>YEX/>Y +X!Y01!#! S= 9EX/>YEX/>Y9 +X!Y01!!3'!Sɭ=C\^0`ZaEX/>YEX/>Y9|/`pq`p] +X!Y +X!Y +X!Y01!5!#"5324&#"3265Un2>4BS8 9EX/>YEX/>YEX/>Y9013#3#'ɭsj\^>K f 9а EX / >YEX/>Y +X!Y 9/] +X!Y  +X!Y01!!5!!5!!5!K CwC {ID@ 9EX/>YEX/>YEX/>Y +X!Y01!#!#!D ? E 9EX/>YEX/>Y +X!Yа  +X!Y01!!55!!owQWJ:__`^EX/>YEX/>Y9/в 9 /а  +X!Y +X!Yа01#5&$54$7534&'66?6 nn vr `]9EX/>YEX/>YEX/>YEX / >Y 9/а  +X!Y01$3#&'33ٺ3k4K-u~!^"#9EX/>YEX/>YEX / >Y +X!Yаа +X!Yа01%66554&#"!53&54323!>=&! :#˜&,n9EX/>YEX/>YEX/>Y +X!Yав9/ +X!Y +X!Y01!5!!632#52654&#"#}1ľmxy2`0 9EX / >YEX/>Y 9  +X!Y 9|/]`p]0q`pq +X!Y +X!Y 901#"546632#&&#"!!32670{~Ay'^ӻtïo' z!"9EX/>YEX/>YEX / >Y +X!Y  +X!Y9/ +X!Y +X!Y01!!#7766!!%!2654&#+^ M{;.`Q $;rsneu J-Yuc_p 9EX/>YEX/>YEX / >YEX/>Y 9|/] 9/  +X!Y +X!Y  +X!Y01!3!!!#3!2654&'CH$+s}nJYwa[q(.\9EX/>YEX / >YEX/>Y +X!Yав 9/ +X!Y01!5!!632#4&#"#}1dy2C P 9/EX/>YEX / >YEX/>YEX/>Y +X!Y 01!!#!3!3CGe  a9 EX / >YEX / >Y  +X!Y 9/   +X!Y +X!Y01!!2!!2654&'!+ s}nĥ wa[qY.]9 /EX/>YEX / >Y +X!Yаа  ааа +X!Y0177667!3#!#!!!)GG.Bd 1V T\9EX / >YEX / >YEX/>YEX/>YEX/>YEX/>Y 9|/]`p] +X!Yв9а 01####33333#cd,YY,  Q<G($)*9EX / >YEX/>Y  +X!Y 9' 9'/'/']']'']$ +X!Y$'9 9 +X!Y014&#"#4632#"&'&5332654%#536}nngvq[=yyPT]XOV)$[,.YV``Xa L 9EX/>YEX/>YEX/>YEX/>Y9 9013##3st, i 9EX/>YEX/>YEX/>YEX / >Y9|/]`p] +X!Y 901##333#jd5 '6O9EX/>YEX/>YEX/>Y +X!Y  +X!Y01#!#776676^ D)^P s^" D9EX/>YEX/>YEX/>Y9  +X!Y013"'72673-^%P&P\1I f0xEI 1; F 9/EX/>YEX / >YEX/>Y +X!Yа 01%3#!3!3DPGT =G9EX/>YEX/>YEX/>Y 9 / +X!Y01!##"&'33273߹~0py21 P 9EX/>YEX/>YEX / >YEX/>Y +X!Yа 01!!3!3!3Ĺ  uY 9/EX/>YEX / >YEX/>YEX/>Y +X!Yа а а 01%3#!3!3!3Ǯ͹T   a9EX/>YEX/>Y +X!Y 9 / +X!Y  +X!Y01!!5!!22654&#!* hQrsnJXuc_pYg& R9 EX/>YEX/>Y9/  +X!Y +X!Y01!3!22654&'!+Ps}nnJwa[qYK} 9EX/>YEX/>Y9 +X!Y 9| / ]` p ]0 q` p q +X!Y  +X!Y9013267!5!&&#"#6632#"&'A~xyotuλ!"#9EX/>YEX / >YEX/>YEX/>Y  9| /` p q ]` p ] +X!Y +X!Y +X!Y01#"'##336324&#"3265 ع$ BP c9EX/>YEX/>YEX / >Y9/  +X!Y 9 +X!Y013&&5467!#!!!"P"zqѹ. &hs!0|  R9EX/>YEX/>Y 9 / +X!Yа а  +X!Y01###53!!3"9EX/>YEX/>YEX/>YEX / >YEX / >YEX/>Y 9|/]`p]`pq +X!Y9 +X!Y в9013######33333c&zcd,YY,Z<T  Q<N9/EX / >YEX/>YEX / >YEX/>Y 9| /` p q ]` p ] +X!Y 9 +X!Y013####333AoiqjdRDT y 9EX/>YEX/>YEX / >YEX/>Y9|/]`p]`pqа +X!Y9 0135333###5##3DP<4qAP #9EX/>YEX / >YEX/>YEX / >Y9|/]`p]`pq +X!Y +X!Y 901##!5!33#i c4 `[#./09$EX / >YEX/>YEX/>YEX/>Y9/   +X!Y +X!Y& +X!Y&9!&9, +X!Y01"'# 53"327&54323654&#"[٦~62ϵͶ^vbj;<E*(!E'8ڲy8 &&D ]01&ql 9/EX/>YEX/>YEX / >YEX / >Y 9 9 9  +X!Y 901353###3(u1tsJTEKB&^ 9/EX/>YEX/>YEX/>Y +X!Y +X!Y а а а 01%3#!!5!!!3DPFT=P9EX / >YEX/>YEX/>Y 9/ +X!Yа01!##5&&'353673߹cighge! ɺm{x "1,G9EX/>YEX/>YEX/>Y9/  +X!Y013632#4&#"#~>1dy3k$l%&9EX/>YEX/>Y!9!/!] +X!Yа! а +X!Y +X!Y01"5&&53>32!3267"!54&Φ_fLP9<" ƨ^w ((/¤^ia 9EX/>YEX/>Y 9 / +X!Y +X!Y  +X!Y012#"5!54&#"'66267!G)R9AgH)/ơGp9EX/>YEX / >Y +X!Y9 9/ 9  +X!Y +X!Y901!5!#"&'&5332654&##58YYEX/>Y +X!Y 9|/]`p]`pq +X!Y  +X!Y01#"532267!"!&&Z v  $2>4wì0'()9EX/>YEX / >Y 9/q]Oqа/@ /?O]] +X!Y +X!Y   +X!Yааааав!9$ +X!Y01!!!!!!5367#535'#53'&632#4&#"nl $ ?˵ʹh`]hy]yjGy]y@̷pwB!"#9EX/>YEX/>Y!9!/!]! !] +X!Y +X!Y а! а!а/@ /?O]] +X!Y +X!Yа01!!27#"&'#535#536632&# !!!/h bhvo`Yy dymyym()*9ааEX'/'>YEX%/%>YEX/>YEX"/">YEX / >Y а /а/] +X!Y  +X!Y +X!Y!' 9& '901%!5!46 #"&5326554&#"##33n-4^WT^aSRa]PYji\RZhg^lm(f !9EX / >YEX/>Y 9/ +X!Yаа а /@   / ? ] ] +X!Yа а  +X!Y01%!#5#535#53!2!!%!2654&#!rp괴YP̨Yxbdz> &tEX/>YEX/>Y9|/] +X!Y 9& +X!Y&9  +X!Y& 90132654&#"#4632#"&5332654'# TJH?F9K|FBOCFIX=0-:3)b{yh7[)j}~k-<<3q6 JEX / >YEX/>Y 9/ +X!Yа в 9 9013##5!'33Pkky+f![dEX/>YEX / >Y +X!Y 9/ +X!Y9 а  +X!Y01!!632#"&'332654&#"p2AJy AHNJI;y|~ecKD>M+VQEX/>YEX / >Y +X!Y 9/ +X!Y  +X!Y01#632#"&55467"3264&(Hrv~3MS?=NGMwt3n, "TUO|L:3EX/>YEX/>Y +X!Y901#!5!];kEO (}EX/>YEX/>Y$9$/$$$]$$/$]$q$$r +X!Y$9 $9 +X!Y +X!Y01 &5467&546324&#"26"264&wJ@w}~N>?KL~L7??p?@Cv7;jyyjBa7vgvv:4::45::50.88\7I ]EX/>YEX/>Y9//] +X!Y +X!Y +X!Y01#"&54632526'2754&#"Eevs7{^*O<;LJ@A~y=dbGYа/@ ?O_o]а/?O_]а/@/?O_o]/  +X!Y +X!Y013#4632#"&732654&#"rdHDcaFHdU3$#00#%2rFa^IG\^E#21$&24 WEX/>YEX/>Y а / ] ] +X!Y +X!Y +X!Y01!!!!!!WkJN)7DEX&/&>YEX/>Y&)а)/ +X!Y&9/9/]7 +X!Y79 &90 +X!Y; +X!Y&B +X!Y01##"'3#"&5467&547&554632!32654&'#326554&":oxOI4z΍^T8sPGo<8YEX / >YEX/>YEX/>Y 9 9 +X!Y  +X!Y01%!"553 73#325&&#"l l"jquHk=$c 9EX/>YEX/>YEX/>Y9/ +X!Y 9 +X!Y01#!2#&'54&#%!265!!rA;9tcE=6x| iEX/>YEX/>YEX/>YEX / >Y9|/cs]3C]] +X!Y 901##333##Ur~> TEX/ >YEX/>YEX/>YEX / >Y9/ +X!Y 901##333#̀~;  LEX/>YEX/>YEX/>YEX / >Y99 901#333#r ckKy; LEX/ >YEX/>YEX/>YEX / >Y99 901##333#P+ u  H9EX/>YEX/>Y  +X!Y  +X!Y013!2!326554&#iƽM@`0N9EX / >YEX/>Y а  +X!Y +X!Y01#"546632#&&#"32670{~y'^ӻt˽jokEX/>YEX/>Y9/]/]] +X!Y9 +X!Y +X!Y013!2!2654#%32654'#_Xctszl|Q~!ebUčUSp GEX/>YEX/>YEX/>Y 9 / +X!Y 901!#3#!Fnߦؼs; /а/01#546+k;T;ScoM `/а/@ /?O_]  +X!Y а /а/а/@/?O_o]/01#"&533265%3#ਇOIGOpe_rr_7=?5/]]p]а/@ /?O] а / +X!Y +X!Yаа/@?O_o ]а/@ /?O]/01#"&&#"'46323265'3#`F5q"#/T`F/,#0x}JiB 3&KkK3&nX ]/]а/а//]/9/ а /а//]   /013#'#3#"ũ"ɍ^F ]/]//а/а//]9а// а /  / ]01#'#3#3FŪ"ϞUis/а//]9/аа/9|/@ /?O_]а/@ /?O_] в 9901#'#3'6654#72FũA;J<人|!C\XI;B<iF/а/а/@ /?]9/в9 а /? O ] а /@   / ? O _ ] а/  +X!Y  +X!Y01#'#%37#"&#"'46323265Fũ-`A6n(6M`@*|&4䞞>^G.?bF-3 9EX/>YEX/>Y +X!Y013!#!̹B0  `/а/@ /?O_]  +X!Y а /а/а/@/?O_o]/01#"&533265'3#ਇOIGO`f_rr_7=?5 f/а/@ /?O_]  +X!Y а /а/а/@/?O_o]в9901#"&533265''6654#72ʡJIELJBQD^rs]5>=6|;RNB2;>PEX / >Y016 EX / >Y 01[!EX/>Y01V"EX/>Y01:#EX/>Y01O$EX/>Yа01I%EX/>Y01~N  9EX / >YEX/>Y а  +X!Y +X!Y01#"$'54$32#&&#"3267/n}GDJ㣨7~"p #$9EX / >YEX/>Y 9/  +X!Y +X!Y" 9"/?"O"]""] +X!Y01%#"$'54$32#&&#"3267!5!C㰻֨!" xӅr*arG-NڕF:0F H9EX/>YEX/>Y  +X!Y  +X!Y013!23254#8>*$(~_"H#$9EX / >YEX/>Y  +X!Y +X!Y01#"$'54$324&#"325_⯫! n}xrqyJ7O5;~_&O'(9#EX/>YEX/>Y9 +X!Y# +X!Y01%#"$'54$32'4&#"325_9<"!n}xqqyZy F:P3;3EX/>YEX/>Y9/ +X!Y01!#5%3ɹ  V 9EX/>YEX/>Y +X!Yв99  +X!Y 01!!56774&#"#46632! } }fzx~xsT5TluplQ /EX/>Y +X!Yв 9/  +X!Y +X!Y901!5!#"'732654&##5tr4׹<vlgXʥg> LEX / >YEX/>YEX/>Y +X!Yа/ в 901%3##!53!ź< Im! 5eQ /EX/>Y +X!Y 9/ +X!Y9  +X!Y01!!676#"'732654&#"f~6o:әju"tt@reϤ:SJ&/EX/>Y +X!Y901#!5!W#? !~/а/@ /?O_]  +X!Y а /а/а/@ /?O]а/ +X!Y +X!Y!01#"&533265#"&#"'46323265ҡJHGJ`F:w,"0S`E0,#0_vv_6@@6 JiK3&KkK3&g!/а/а/01#3!`m9 EX / >YEX / >YEX/>YEX/>Y   +X!Yа/]] +X!Y +X!Y +X!Y  +X!Y01!!"53!!!!!7'"mc[l얯2>4 g B?%N/EX / >Y +X!Y 9/ 9 +X!Y   +X!Y01267#"546632#"'726754&#"߱wu҄v&zi"i~<2\RëKg ( /EX/>Y  +X!Y  а /01%#"'73255g;4C ; L,EX/>Y01sNEX/>Y01#MEX/>Y 01wKEX/>Y01vO,EX/>Y017HeEX/>Y01~EX/>Y01_SEX / >Y 01pEX/>Yа"01JTKe:Ke:U:EX/>Y01YZ:& U:!fEX/>YEX/>YEX/>Y +X!Y9//] +XY а  +X!Y01%32654&##5&#"#6632#"'RXarTNcke׵wh3{cbU'>Ub1x ;EX/>YEX/>Y +X!Y +X!Y01 5 '4&#"3267"<<> 4;3EX/>YEX/>Y +X!Y901#!5!@%H4f9 /EX / >YEX/>YEX/>Y 9 9  +X!Y +X!Y01#"'#3632'4&#"3264oɀpp񹣌PUË֪,\NK9EX/>YEX/>Y +X!Yаа +X!Y01%2673#"5546632#&&#"@cxnvۓhxZ^c* ڮiο![f9/EX/>YEX / >YEX / >Y 9  9  +X!Y +X!Y01466323#'#"&&'7327&#"[q΀oo|uRS&4x؟[VN&'(9 EX/>YEX/>YEX / >YEX/>Y9  +X!Y9 +X!Y$ +X!Y0143273#"&'732655#"5327&#"[oVH7?OoSS&272*2(8١ZDN8EX/>YEX / >Y +X!Y +X!Y0146632#"&&'732654&#"Z~咏' į`2Np9 EX / >YEX / >YEX/>YEX/>Y 9 9  +X!Y +X!Y01#"'#36324&#"3262nȁqt TS}}'ە[`Nm9EX/>YEX/>YEX/>YEX / >Y 9  9 +X!Y +X!Y0143273##"5327&#"[opVX%4r&x5ߓ]Ne9EX/>YEX/>Y9/]  +X!Y +X!Y +X!Y01"''46632!327"!54&q |݀$™x9s NtZrʠ`VN%#&'9# EX/>YEX/>YEX / >YEX/>Y9  +X!Y9 +X!Y# +X!Y0143273#"&'732655#"5327&#"`pRA7zo뺕RU%/-)I:2ӠWg&2,349,а,EX / >YEX/>YEX/>Y* 9! 9*!9!*9 +X!Y 9 9 99 9 0 +X!Y01"&54677'&54632653#''277654&#"NhKK]I E^ёjdLk?6BSHB8HVK6Ohlspo4taqK3I;TI]:F90YEX/>Y  9 / +X!Yа +X!Yаа  а а01!!573%MH U[,},,U 9EX / >YEX/>YEX/>Y 9/ +X!Y +X!Y 9/ +X!Y   +X!Y 901!!!!#!!!!5&& f) ;D-2 Y9 EX/>YEX / >Y 9/ 9/  +X!Y  +X!Y0133###32654&'ִwŦ*Zlb`w`Z'j()9а$EX/>YEX/>Y99 +X!Y!9"9$ +X!Y01#"'#7&53273&#"%4'3265քtK{E=Or4;Jj>Gp ?4Ngni;b\409EX / >YEX/>YEX/>YEX/>Y 9/] +X!Y 9/ +X!Yа аа01##!##5353!533!5![ZZ\[\OOKX[9EX / >YEX/>YEX/>YEX / >Y +X!Y 9 901"'73255#33<4 #@]K Qkm% iEX/>YEX/>Y9/]/]q +X!Yа +X!Y +X!Y013#53!2#32754'#3$)]ʦ]iEX/>YEX/>Y9/]/]q +X!Yа +X!Y +X!Y013#53!2#32754'#3$)]ʦ]l/EX/>YEX/>YEX/>Y/]]9/ +X!Yв9  +X!Y01#63 #&&#"##53533^{WioZ&ȹ}5up`Nҗ1NEX / >YEX/>Y 9/ +X!Yаа  +X!Y 01###53!5!!3-f,77Dp@vEX/>YEX/>Yа/ +X!Yа/] +X!Y  +X!Yааа013#3#327#"&5#535#536A 8IE|~@AA N6&%D06EX/>Y 016&%u6EX/>Y 016&%6EX/>Y01"&%:EX/>Y01&%j6EX/>Y01&%PAEX/>Y01&%'Z"wD&'yFB&)DBEX/>Y 01FB&)uBEX/>Y01FB&)BEX/>Y01F&)jBEX/>Y01B&-DBEX/>Y01QB&-u5BEX/>Y01FB&-@BEX/>Y01^&-jpBEX/>Y 01"&2:EX/>Y 01v 8&3DR8EX / >Y!01v 8&3u8EX / >Y"01v 8&38EX / >Y"01v $&3<EX / >Y#01v &3j8EX / >Y'0016&9D+6EX / >Y016&9u6EX/>Y016&96EX / >Y01&9j6EX / >Y#016&=u6EX/>Y 01m&EDEX/>Y* 01m&EudEX/>Y+ 01m&EnEX/>Y+01m&EjEX/>Y,01m&EjEX/>Y0901m[&E EX/>Y,601m_&E'\DN&Gy?]&IDEX/>Y 01]&IuTEX/>Y 01]&I^EX/>Y 01]&IjEX/>Y%.01g&DEX/>Y 017&uEX/>Y 01,&&EX/>Y01D&jVEX/>Y 01&RaEX/>Y01[4&SDEX/>Y 01[4&Su^EX/>Y 01[4&ShEX/>Y01[4&SdEX/>Y01[4&SjEX/>Y#,01&YDEX/>Y 01&YuVEX / >Y 01&Y`EX/>Y01&YjEX/>Y!01K&]uEX/>Y 01K&]jUEX/>Y 01&%p>EX/>Y 01m&EplEX/>Y*01&%7EX/>Y 01m&EEX/>Y+01OiEX/>YEX/>YEX/>YEX / >Y +X!Yа/9/ +X!Y901#327#"&547!#!-&:qN04 FZYg,P-[VHy,hVlsjmON-7EX/>YEX/>YEX/>YEX)/)>Yа/9 9 / +X!Y 9)$ +X!Y. +X!Y 3 +X!Y01%&'#"&54$3354&#"#46632#327#"&54'2675# $tqcsv&!:qN04 FZYgW#t&EUasdGQXX-[VHy,hVZHWbwW&'uWEX / >Y01\&Gu3EX/>Y 01wW&'WEX / >Y01\&G=EX/>Y 01w&'WEX / >Y#01\&GEX/>Y$01wW&'XEX / >Y!01\&GREX/>Y"01B&(CEX/>Y01_+&HHr]]qqr_rOq]O_]`]q]01F&)pJEX/>Y 01]&Ip\EX/>Y01F&)CEX/>Y01]&IEX/>Y!01F&)qBEX/>Y01]&I;EX/>Y%01OFzEX/>YEX/>YEX/>YEX/>Y9/ +X!Y +X!Y  +X!Y +X!Y01!!#327#"&547!!!!I:qN04 FZYg]-w-[VHy,hVi,]hN%-~EX/>YEX / >YEX/>Yа  +X!Y*9*/**] +X!Y" +X!Y%9& +X!Y01%3327#"&547&5546632!3267"!5&&Gs:qN04 FZYgb{݁#b3pn6-[VHy,hVlZ!!MPBFB&)CEX/>Y01]&IsEX/>Y"01zW&+WEX / >Y"01`V&KUEX/>Y'01z/&+XEX / >Y"01`V&KEX/>Y'01z&+WEX / >Y'01`V&K2EX/>Y,01z&+`V&K4+XEX/>Y*01B&,BEX/>Y01A&LA /01z.&-<FEX/>Y01`&"EX/>Y01l&-p>JEX/>Y01R&p$EX/>Y01C&-kCEX/>Y01)&QEX/>Y01Xx&- Oh&M&-BEX/>Y 01&-.-KJ&MN55&.|5EX/>Y01K9&3EX / >Y01X&/E &O1&0u&1EX/>Y014&PuEX/ >Y 01 &0lW U&P&0EX / >Y01&PVP]]/qq/?rr_orqOq]O_]`]r01&0&P86&2u6EX/>Y 01&Ru[EX/>Y 01 &2 N&R36&27EX/>Y01&RzEX/>Y01&R`/O]]01v &3p@EX / >Y!01[4&SpfEX/>Y01v &39EX / >Y"01[4&SEX/>Y01v 7&3k8EX / >Y&"01[4&SEX/>Y" 016&6u6EX/>Y01&VuEX / >Y 01 &6cS N&V6&67EX/>Y01c&VEX / >Y01Pr8&7u8EX/>Y)01_&WuQEX / >Y) 01Pr8&78EX/>Y)01_&W[EX / >Y)01PMr&7y_EN&Wy]Pr&7u_N&W3Pr8&79EX/>Y+01_&WpEX / >Y+011&8f V@&X1M&8y M@&Xy16&87EX/>Y 01 y&X]]O]01"&9:EX/>Y01&Y\EX / >Y01&9p>EX/>Y01&Yp^EX/>Y01&97EX / >Y01&YEX/>Y01&9KAEX / >Y 01[&Y EX/>Y015&9D6EX/>Y01 &YEX / >Y 01{ UEX/>YEX / >YEX/>Y в 9  +X!Y +X!Y01327#"&547"'33265N04 FZYgO!;r`Hy,hVaS&O:oEX/>YEX/>YEX/>YEX/>YEX / >Y +X!Yа/9 +X!Y01!327#"&547'#"&'33273:qN04 FZYglѭF-[VHy,hVjeE=6&;6EX/>Y01+&[$EX / >Y016&=6EX/>Y 01K&]%EX/>Y01&=j6EX/>Y01Vz6&>u6EX/>Y 01X&^u!EX/>Y 01Vz&>n6EX/>Y01X&^EX/>Y01Vz6&>7EX/>Y01X&^@EX/>Y01WB&uBEX/>Y01N|&uzEX/>Y@ 01v&uEX/>Y,01[z4&u7EX/>Y) 01&0&/x,qq/]rOq]_]01&0&/x6]Oqrrorqq_]/]01(&&E  ] ]01p&3DEX/>Y 01p&3udEX/>Y 01p&3nEX/>Y01p &3j"EX/>Y01p&3jEX/>Y01py&3)EX/>Y01p|&3' `J0&1yt&(DEX/>Y 01&(u7EX/>Y01&(AEX/>Y01&(jqEX/>Y01_&DEX/>Y01/&uEX/>Y01$&EX/>Y01<&jNEX/>Y 01X &"EX/>Y 01`Z&DEX / >Y01`Z&u}EX / >Y01`Z&EX / >Y 01`Z &"EX / >Y01`Z&jEX / >Y#,01t &DEX / >Y01t &u^EX/>Y01t &hEX / >Y01t &jEX / >Y"01 &u3EX/>Y 01p&3pl&EX/>Y 01p&3EX/>Y01OpiEX/>YEX/>YEX/>YEX / >Y +X!Yа/9/ +X!Y901#327#"&547!#!&:qN04 FZYghnxs-[VHy,hVl !`0&1uiEX / >Y01`0&1sEX / >Y!01`0&1PEX / >Y#01`0&1EX / >Y!01&01EX/>Y01&(p?&EX/>Y 01&(lEX/>Y01&(EX/>Y01O|EX/>YEX/>YEX/>Yа/]] +X!Y +X!Yа  +X!Y +X!Y01!!#327#"&547!!!!Wk=:qN04 FZYg-[VHy,hVi&(VEX/>Y01c5&qEX / >Y 01c5&EX / >Y 01c5&NEX / >Y%01c5&OX&EX/>Y01X &"EX/>Y01J&p&EX/>Y01!&IEX/>Y01Of&c&EX/>Y 01+ &EX/>Y01W&&uEX/>Y01&&~EX / >Y01&f7X&uEX/>Y 01X&lX&EX/>Y01`Z&p&EX / >Y01`Z&EX / >Y01`Z&EX / >Y"01%&u'EX/>Y01%& %&FEX/>Y01C&u>EX / >Y(01C&HEX / >Y*01CM&ySC&]EX / >Y*01(&(&PEX/>Y 01(O&y>t  &d"EX/>Y01t &pf&EX / >Y01t &EX / >Y01t y&)EX / >Y01t&EX/>Y01tt  UEX/>YEX/>YEX/>Y в 9  +X!Y +X!Y01327#"&547"&'33265 xo2lN04 FZYgZz0([RHy,hVhVθy{ 1&;EX/>Y01 &=EX/>Y 01 &jmEX/>Y01G&u3EX/>Y 01G&EX/>Y01G&REX/>Y01?&%)F?&)r7A&,=w@&-?&3/?&=d]?&2t&*EX / >Yа!01%&F)Vz>,w-/R12v 3418=9<^&-jpBEX/>Y 01&=j6EX/>Y01dw:&uEX/>Y$01c9&+EX/>Y(01a:&FEX/>Y01K%&*EX / >Y01t&!EX/>Yа'01?:[4NS`:v!:ZZLtInEX/>YEX/>YEX/>YEX/>Y999  +X!Y9 +X!Y012337#"&'#&#'6®X=DH/%[x>IkDDI/^rn&jEX / >Y01&jwEX/>Y#01[4:&SCEX/>Y01%&"EX/>Y01z"&SEX/>Y&01F&)jBEX/>Y010B&uBEX/>Y01Pr&d'(9EX/>YEX/>Y а +X!Y&9& +X!Yа" +X!Y01&&54$32#4&#"#"$&533264&VܖkcãGϘty}oY{f{os|uw-^&-jpBEX/>Y 015.,0&/u{0EX/>Y01M&CEX/>Y01%&0F)&1CEX/>Y 01R1,v 34w'189<mNE]NI&EX/>Y 01[4NS`NT\NK9EX/>YEX/>Y +X!Yаа +X!Y01%2673#"546632#&&#">cvntٔixZ]d'ڮi#K:]):\]&IjEX/>Y%.01G&uEX/>Y 01_NWhMD&jVEX/>Y 01KYN?&u;EX/>Y 01K&]PEX/>Y01=6&;D,6EX/>Y01+&[DEX / >Y 01=6&;u6EX/>Y01+&[uEX / >Y 01=&;j6EX/>Y#01+&[jTEX / >Y016&=D6EX/>Y 01K&]DEX/>Y 01g! #&K?&HEX / >Y010GR6&1u6EX/>Y01x&QuEX/>Y 01k&%mkN&EFB&)DBEX/>Y 01B&DmBEX/>Y 01]&IDEX/>Y 01&DEX/>Y 01Z!_(C:&9EX/>Y01 &EX/>Y 01[K@N&S]vK 0&3]PQj&QXRM&QCwQ&'Q\QN&GQR=.`:w-5&CEX / >Y01&_EX / >Y01w-&%7EX/>Y01m&EEX/>Y,01&%j6EX/>Y01m&EjEX/>Y0901WN|NF&)CEX/>Y01]&IEX/>Y!01]&XjEX/>Y'001bOb&jEX/>Y$-015&jBEX / >Y&01&jdEX / >Y&01Pj&jWEX / >Y0901X&j^EX / >Y.701&pJEX/>Y 01&puEX/>Y 01&j6BEX/>Y01&jEX/>Y01v &3j8EX / >Y'001[4&SjEX/>Y#,01g[4Ng&j'=EX / >Y'001[4&jEX/>Y$-01&j XEX/>Y'001d&j|EX/>Y'001M&pJEX/>Y01K&]p#EX/>Y01M&jBEX/>Y"01K&]jUEX/>Y 01MA&/BEX/>Y01K&]EX/>Y 01&j BEX / >Y#01g&jdEX / >Y!010&'-jBEX / >Y(01&'*jmEX / >Y(01_H&%mN&EJ&%FEX/>Y 01m&EEX/>Y)01&%7.EX/>Y 01m&E7hEX/>Y,201&%8=EX/>Y 01&E8lEX/>Y,101&%9EX/>Y 01mY&E9mEX/>Y*001&%:EX/>Y 01m&E:lEX/>Y*3016&%'6EX/>Y01m&E&nJEX/>Y-01&%<-EX/>Y01m&E<EX/>Y,901&%5-EX/>Y01m&E5EX/>Y,:01@&%==EX/>Y'01m &E=EX/>Y,E01&%PEEX/>Y01m&EPEX/>Y,:01&%'7EX/>Y01m&E'JEX/>Y,01F&) ]N&IF&)REX/>Y 01]&IEX/>Y01F.&)FEX/>Y01]&IZEX/>Y!01&)7:EX/>Y 01]&I7XEX/>Y!'01F&)8IEX/>Y 01&I8\EX/>Y!&01&)9'EX/>Y 01]I&I9]EX/>Y%01F&):EX/>Y 01]&I:\EX/>Y!(01FB&)'B EX/>Y01]&I&^EX/>Y 01&-dREX/>Y01&JEX/>Y01~&-k h&MM v &3[4N&Sv &3HEX / >Y.01[4&SEX/>Y*01v=&370EX / >Y# )01[&S7bEX/>Y%01G &38?EX / >Y! (014&S8fEX/>Y$01v &39EX / >Y! '01[S&S9gEX/>Y#01v &3:EX / >Y! *01[4&S:fEX/>Y&01v 8&3'8EX / >Y"01[4&S&hEX/>Y01e1&u1EX / >Y(01[&ueEX/>Y& 01e1&DN1EX / >Y'01[&DEX/>Y% 01e& AEX / >Y401[&EX/>Y201e&5EX / >Y)01[&kEX/>Y'01e7& [&&9:&YQ&9FEX / >Y01&YEX/>Y01B&uBEX/>Y01&ucEX/>Y 01B&DEBEX/>Y01&DEX / >Y 01&REX/>Y)01p&EX/>Y(01.&FEX/>Y01&iEX/>Y01& &&=:&]c&=FEX/>Y 01K&]JEX/>Y01"&=:EX/>Y 01K&]!EX/>Y01_&H'&GCd/]011&8Q?(:&Q&Qg;&Q0&QG:&Q?U&LQYcN&MQLdEX/>YEX / >Y 9/9/  +X!Yаа +X!Y  +X!Y01#!!#53533!2654&'Pj_PPݘ{dEX/>YEX / >Y 9/9/ +X!Y аа +X!Y  +X!Y01#!!#53533!2654&'Pj_PPݘ{0 PEX/>YEX/>Y 9 /z ] +X!Yа а  +X!Y01!##53!!!B Tm1G: KEX/>YEX/>Y 9 / +X!Yа а  +X!Y01!##53!!!xܺ $!ߗę1EX/>YEX/>YEX/>YEX/>Y9//]] +X!Y9/ +X!Y а в901###53533#33#7Ur7>(vEX/ >YEX/>YEX/>YEX/>Y9/ +X!Y9/ +X!Y а в901###53533#33#~; W 9EX/>YEX / >YEX/>Y9/ +X!Yв 901###53333۔Qz|Q  %.`:d 9EX/>YEX / >YEX/>YEX/>YEX/>Y +X!Y 9 а01###53333Jܿ k&R9dEX / >YEX/>YEX/>YEX/>Y 9/ +X!Y 9а в 901####53333Ĥk_]kb8{.):dEX / >YEX/>YEX/>YEX/>Y9/ +X!Y9а в 901####53333<AA֧ku>cM/&*&"Fff@]3^5P-0"dzW&+uWEX / >Y"01`V&KuKEX/>Y' 016&2Df6EX/>Y 01&RDEX/>Y 01 &%m2EX/>Y 019&EEX/>Y* .01_F,&)8>EX/>Y 01)&IEX/>Y #01 ,&->EX/>Y 01&EX/>Y 01v "&34EX / >Y!%0134&S EX/>Y !01U &6.2EX/>Y01&VdEX / >Y 01 &9h2EX / >Y01+&YEX/>Y 01?&d&&  &F&( _&H &(e]01_&Hi&, &L 0&/u{0EX/>Y01 A&OuDA /01&/Y &OeF&0 a&PN R&1 xN&Q &2$ N&R v &36 S*EX / >Y#ܲ#q#qO#q/#q701B&4u|BEX/>Y01`&TuEX / >Y 01&6 N&VJ Pr&7_N&W1&8 V@&X&96QEX/>Yܰ*01.&:FEX/>Y 01!&ZEX/>Y 01&: !:&ZM =&; +:&[S Vz&> X:&^b 2O&3Fqp&3c&(<&<&<d& X&<d& 7p32(GXQWwX`Z( &1<&jNEX/>Y 01 &jmEX/>Y01&(jqEX/>Y01&u4EX/>Y01CQ<&jNEX/>Y 01+MW&u%EX/>Y01" &gEX/>Y01p32(a&EX/>Y 01wX`ZD`01(&1GP)EX / >YEX/>YEX/>Y  +X!Y 9' 9|'/']'q']`'p']0'q`'p'q& +X!Y&'9в 9  +X!Y014&#"#4632#&&5332654%#536}nngvq˯yPT]XOV)$[[V``X_/EX / >YEX/>YEX/>Y  9| / ] +X!Y  а +X!Y01##!#3!33\g `V0ZEX/>YEX/>YEX/>Yаа +X!Y +X!Y01#&5546632#&&#"32670˩{~y`aӻt˽jo Qk&Qa&p&EX/>Y 01" &p:&EX/>Y01`5& &su`Z&uu}C&)1&D1&u11&jk &DO&%|mON&EYF&): ]ON&IOp&3W&(`:&M T$aaaaa:@?rUJQ~[pJ 5 0 r  a |  ( v  T  u3Xoq$?9dco 9M-a1.? P p !!B!t!!!!""{"###$`% %%&U&','''(A((),)*L*}*+L+,,l,,-Z----..?.u../+/H/e/n///0 0N0Z001,1Y112 2~23A34.4a45B556k667c788l899J9::x:;D;<<= =~=>>i>?1??@8@@A(AmAABMBBC}DDkDETE{EFFFFGRGGH?HnHI&I\IIJ JxJK&KL L|LMwMN]NOOdOP.PQNQQRTRS9ST5TURUVpVW/WuWXJYYZAZ[[a[[[\\\]]]x]]^Y^^_(_~____``[`aasaaab@bbcd9dEdQddddeNeefPfgggghhhhhhi$iiijjjjijkUkl6llmkmn`no@oop8ppppppppppppppppppqqqq2qVqzqqqqrrGrrrrs sstt+t?tuuv?vKw+wx xyyyzQ{{j||^|||}}*}}}~~M~",erˁ4ÃÅv2^}y>ĊK{ċLuԍs!dVgƐ&@?r^J͘f)i gכUv؝9,=3uJ!;ңEUܥYϦ5z%=ĩN Jd(pbv­٭IhѯP=dձoҲ 3DUh{ͳسHĵ%xٶTfʸCK3hֻ''/Z1H_x׽5Le|ؾ6Of}ٿ !8Ng}3Lcz3—/F]tÊáø-DZqĈğĶ ŦŽ.E\hƖƨƿ2=H_kwǎǥDZǽMYe|ȓȟȫ1Hazɑɨɴ2HT`lxʏʥʱʽ/F\sˊˣ˼L̳'>Ul͚̓Ͱ /Wj΁Θή%F]sۊۡ۸/7?Kbj܁ܘܤܰ 5NZfr~݊ݖݞݦݮ+DLTkނޛޣ޼6Le~ߗ߰߸ #:Pi&2>Ul0Ke~-Hco{ 8Qi !-D[t:Tk #/;Ri ,8DPg~ (+k.x!x2Kd},E^jv(4@LXz5AMYeq} %-5=EMf~ #+BJRZbjrz Z&2>JVbnz#o2_<.R 0s dw~nieeg&rN5%L~s~~]~^~5~~~M~p~d)Hd.K/j85w?lsz-j5Nv mP10=9VH( X@y9Zm}0\_=]<}`hj[}_ _ i!+)X@q`i[i3ZXeI[fnJZFaB>{CtzzfU5P9oDzDYvN~G[_sO")"hDa]~e[7bjy*2{^Z~o^'8  qsqg>2xEMZRqd.`Pc%mzn%e)Me`,Q]W_zyBHJ*d{1> 2CP/M,Szd'Yla[. XR,(dYgx6XMdd/hMg'+V+(F   #PLqg[ .qg[$~+2uGdtgqf, Vca ~D>1qm9*),4\gojo/? Z/,O>]hi:;.9@)WYdV6+1IRyDu?ve# Fd/, o)) \04%4%@? `0$Oh<$iFWZ~RDflfY;6`z[Uv+~_"*t H]Ozh:g&TdcjYjE?:b ed>/+Ln\<n<<<<_3[5\BzPU`Br0NNc#G+ T&1g|t&( CJY\`T+c C30 g`g>?g``ur&|`A'Ot(Y$. ?GN'"(j=QN{KvP Gy 7#`_ &a&j=j^?G`30B"(>6[V:OI:dL$=|`Pn^iiP6[V:OI~~~~X>ke.Jg`;s#wv7~_pPx ;}2\[[Z[=]}`yWg9 `05%]]188888885w----vvvvv0000ZmZmZmZmZmZmZm0\=]=]=]=]j[[[[[iiii8Zm8Zm8Zm5w0\5w0\5w0\5w0\?_=]=]=]=]=]sz}`sz}`sz}`sz}`h-----j5NNWNNjjjjv[v[v[ScP _P _P _P _P _1 1 1 0i0i0i0i0i0i=+VXVXVXzNv[&(|``````|t|t|t|t+ |`|`|`|`cccc+T```JJJ C C C C&(&(&(|t|t|t|t|t|t1+ + #G#G#G8)7-=2f8V-v 19-dPc]s[!)][]zsP--j5$M8sv 5w19Zm=][}0\)=][ _R=+=+=+eg08Zm=]Z_ Y[ IvPX5w0\.-C -8Zm8ZmzN=]]7b7bC PXv[qg[qg[dMdMMMzYg6_8Zm8Zm8Zm8Z8Zm8Zm8Zm8Zm8Zm8Zm8Zm8Zm=]=]=]=]==]=]=]--v[v[v[Gv[v[v[~e[~e[~e[~e[~e[0i0i_1(zYgs[/?hs[8'.9)Pcl?~]~^~5~dsz}`j8Z9_=)- v3U0i+}?_?_hNjv }P _1 0!!=+VX2"c$gP#GT`\&(+ T&+  C+T"P`\|`&(T&?G|`+ "g`9 ` C111+ 8Zm=]l IJ 033fP [ GOOG@f :                     nt ~%'0S_g~7Y #%/EOboy?M    " ' 0 3 : < D t  !!!!"!&!.!^"""""""+"H"`"e% &(1T`h7Y #&0FPcpz>M    % 0 2 9 < D t  !!!!"!&!.!["""""""+"H"`"d%eD# (%^S~|}rsolkiaYP!ߔyMߪެߞߝߖߓ߇kTQ 222tt~lt0Rb{z|  }~+,-.   ()*+,-./012345678wxLM}~NOPQRSTUyzVWXYZ{|[\]^_opv   ~xcyo{z%&&''|(01127889@ABCIJKLQRST_`a befg}h~+ 77YY  ##      "#$%%&/0014556899:=>>??@ABBCCDDEEFOPPQQRRSSTTUXY[\\]]^^_abbco pqruvwxxyyz(,159wCL}NyVXY{[_`o>?pMM r }         " % ' 0 0 2 3 9 : < < D D t t      v    !!!!!!!"!"!&!&!.!.![!^"""""""""""""+"+"H"H"`"`"d"e%%,K PXY _^-, EiD`-,*!-, F%FRX#Y Id F had%F hadRX#eY/ SXi TX!@Yi TX!@eYY:-, F%FRX#Y F jad%F jadRX#Y/-,K &PXQXD@DY!! EPXD!YY-, EiD` E}iD`-,*-,K &SX@Y &SX#!#Y &SX#!#Y &SX#!#Y &SX#!@#Y &SX%EPX#!#!%E#!#!Y!YD- ,KSXED!!Y- ,(E- ,)E- ,' SX@cTX(pY#SX TX(pYYY- ,@ ZX)D)DY- ++++:0%+H;.!+XH8(+RC4%+^M<++6,"+q]F2+w\:#+~gP9+ TE6&+ v`K6+ dN:#+ ٲc<+  +<2'+@4)+PA.!+ + E}iD?s_ss/tOtottttu?u_uussst_tttt?uou/ so s*xdNZ`V4<` ! :  ^  ^ j  ^  ^ &x  @   & \@ TCopyright 2011 Google Inc. All Rights Reserved.RobotoRegularVersion 2.137; 2017Roboto-RegularRoboto is a trademark of Google.GoogleGoogle.comChristian RobertsonLicensed under the Apache License, Version 2.0http://www.apache.org/licenses/LICENSE-2.0jd(Y%>E^yy  "$%*+3466;<ADGHKMQQTX]^bbddhhjlnnpp  ((++--03_cz|  ,$%&'y 2LDFLTcyrlgreklatncpspkern $H %&'()*+,-./0123456789:;<=>eg/3579;ACEIKLXYz{}   "$%')+- }  :44^67497zd88788898D  89X9469 F7\8f5 8:8:8:78f8|9v&5<9v@8f956969v8:xjp55!8"`#^4%885B888&585(@)))*5+n5<3F+-r8f11:3$3$8f2p23$3$3$679X9v3F8f5545<777845<889545<43p444:44`:499:9999949499998666666647z7z7z7z888889999967\7\7\7\7\7\7\55558:777779v9v67\67\67\444497z57z57z57z57z588:888887888888:88:88:8:9797978|8|8|888969v6999:::9999999:::::999:94444::::67z8896677z98878898D864868:79v77z588775B6757z8898D4847\578f9v5<559v99969v44488:67\7z59X9v469v845<867\67\7z55545<9778f5B9v5B9v5B9v67\67\67\67\67\67\67\67\67\67\67\67\7z57z57z57z57z57z57z57z58897979797979797769v69v69v8558:557688:67\7z8978|78f9988:77888:88:98D8f8|89X9v9X9v9999:99:99:: %*,- /6 88:?EFIJLL OO!QT"VV&XX'Z](__,-./0589;=@HITdehjm  p  qr""u.0v35y77|99};;~CDTTVVXX\^0033EEGHz{}}  "%''))/8CGMOTTeimoxx!"(89:;<>@GJPRVXYZ^deghrt  xz{FHHJW__puww{| 89Ew:;= "$prt %V.8EGHIKSUVYZ]VV V"9BE`ak3VVVVVVVVVV#2345678MNOVVVVVV V V!"V#$V%&V'(V)*V+,V-.V/0V12V34V579;=?ACEKMOQSUWY[]_acegikmoqsuwV38:;=9E3 "$2345678MNOprtw8:=9E"$prtw.9bdM  AGHIKUa"B`ak79;=?ACEY[]a@GHIKU"B`ak79;=?ACEY[]aS KMOQSUW_.9bd  Z]#qsu?'+35 !AjEFHI-  JLNPRTVXZ\^`@'+35!AjEFHI-  JLNPRTVXZ\^`8%<= 3C]"$ "$&(*,.024prt(%  "$&(*,.024GHIKQRSTUYZ]"+6<>BSUW\`ak#  79;=?ACEKMOQSUWY[]_acegikmoqsu|| GHIKUYZ]"B`ak#79;=?ACEY[]acegikmoqsu< JYZ] #cegikmoqsuAGHIKU"B`ak79;=?ACEY[]a:m  GHIJ KSUZ ]  "B`ak        13  # 23456789CDEFGL MNOPQRSZ[\]mnostuvx               79;=?ACEKMOQSUWY[]_aq s u       \^4D^&(* \^4D^&(*"Z\]^4D^#&(*qsu 8:<=QRTZ\]  +3469:<>CDEGISUW\]^bcdlm"#$ pqrstuwy|(8Z]  9:ELcm#qsuw?8:<=\349:CDEGI]^bdlm"$prtwy%'+358:= !9AEGHIJMPQXbdfjlnopEFHI"$-   "$&(*,.024JLNPRTVXZ\^`prtwyz58:<=39CEP]bdflo"$prtwj%8:<=  39:CEGHIJLPQ]bdflmop"$     "$&(*,.024prtwyz18<=39CEPQ]flop"$prtw$8<39CEPQ]fopw8=9E"$prtw9QRT\  +46:<>DSUW\^m |# Z] :m#qsu :HJmzvGHIKSU"B`ak19CDEFGPQRSZ[\]mno 79;=?ACEKMOQSUWY[]_a EGHIJ KSUZ ]   "BQ`ac e kp        13  # 23456789CDEFGL MNOPQRSZ[\]mnostuvx               !#%')+-/13579;=?ACEKMOQSUWY[]_aq s u        :HJQmpzMG H I K U :   " :B HJQ` a k mp                               7 9 ; = ? A C E Y [ ] a z   "Z\]4DQ^p#qsu    :PJcemL  (L O P SW[     KMOQSUW_   LxLx[  AaM:JLMXb d mn1.08@JM_il :ILbdlm/Vm[m|}+KaFRIh < .0<8:j@IJ L?MX_c1e_i lm0n AJVXam| 1#X[:IQJ{LMXbudlOm  :cemJ[   :cm l[  :JXcemn1[T1IJLbdlX_:mJX2[3V[m|(M~gejs^t}y}  .08}:@J|LMlX_kcei{lmn1 AVa1J  A Va1[1l1  h&% x -&~| v8{q?;QyVD3DK>,r'jzb m %),4 8>EGIILLQTVV"ZZ#\^$'()-./02347>?@ABD  F  GH.0K35N77Q99R;;SCDTTTVVVWXXX\^Y\cefgilm00p33qEErGHsz{u}}wx  "*/8CGMOTTeimoxx  "#$%&(25;BDEFJPQS_a  eghFoHHJW__bbddpuww{|t !!%%&&''(()).. // 0033448899 ::;;<<== >>EEFFGGIILLQRSSTTVVZZ \\]] ^^"  %      ..//"00334455 77 99 CCDDXX\\]]^^!!!# $ 00 33EEGHz{}}             "" ## $$ %%&&''(())**/0 11#28CG MOTT eefi$mo xx#     "  %"           % % %   !!""##$$%%&&''(())**++,,--..//00112233445566778899::;;<<==>>??@@AABBCCDDEEJJKKLLMMNNOOPPQQRRSSTTUUVVWW__bb dd pp qq rr ss tt uu ww{{"|| "        # ##       " !   !$     #         $    #"      " " " !   !        bDFLTcyrlgreklatnH .AZE CRT FRA ZMOL NAV ROM TRK      c2scccmpdligdnomfracligaligaligalnumloclloclloclnumronumpnumsmcpss01ss02ss03 ss04ss05ss06ss07$tnum*        60nL`tflq3210(sutvrwR   ; /0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwyxz{|}~    %&'()*+,-./0123456789:;<=>eg/3579;ACEIKLXYz{}   "$%')+- } q3210(ds0ut/rwR   ; v123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abdefghijklmnopqrstuvwyxz{|}~    EFGHIJKLMNOPQRSTUVWXYZ[\]^0468:<BDFJMZ|~   !#&(*,.~ *BZrMxN`H0I$'a_bc` MNI26rJd~"<N$.8J| <Fh.8BLV( &,   &,68:  &,HF  $$*06JL   $*06bd  $prt % &,!  &,79;I  $ &,KM    &,ce  $qsu &+-,. $G $X`Z\^ $Ya[]_ $fnhjl $goikm%)+-/46;=>EIKMOTV[$]^*,-./015     OX{@JMMJPPJ*  JXXJWKo6,- .//O EGFHIghijklm '(+35FGHKSTU nooIKj.Z^XUWV[Y]\OJKLMNSeff pp  .pfLNMKOeSJU^ .[]^XUWVY\ZJKLMNOSefp.pfJOSSU^ eel%<  !"#$% >zst?@ABCDyubioath-desktop/fonts/Roboto-Thin.ttf000066400000000000000000005167541412677075700204270ustar00rootroot00000000000000 GDEFL($bGPOS*]GSUB\OS/2{ `cmapwXFcvt .2$Hfpgm_"Lgasp( glyf",hdmx)E5O headG6hhea  h$hmtx08locam maxp> name=l%4postmd' prep+6ɼ$d( q 9 а а  а  EX/>YEX/>Y9999  9 901!!!!5!(<6 }wx^^^ < 9EX/>YEX / >Y +X!Yа/01#3462"&66J .!!. !!. b # 9/ 9/а 01#53#53 27 26q  3 !9 EX / >YEX/>YEX/>YEX/>Y 9|/ +X!Yаа а / +X!Y а аааа01!#!5!!5!3!33!!!#!!J8J_6K8LmL8L`K8k`f4 6``64f y0.$/09 /EX / >YEX / >YEX#/# >YEX%/%>Y %9 %9  +X!Y +X!Y%"в)% 9%, +X!Y014&&$&&546753#4&#"#5&&53326EI֬76A`/Ϯ76ݾX[wdoid ªϮbr]^I`vP űȴr )7;<=9аа*а:8/:/EX/>YEX&/&>Y а / +X!Y +X!Y&а/&- +X!Y4 +X!Y014632#"&5326554&#"4632#"&5326554&#"'rtutu7wd`vwa_ztust7wcbuudcu --HhoHlsԁGkoIqrrs(3,459, а,EX/>YEX/>YEX/>Y"9+9"+9 +"9 999 9 +X!Y! 91 +X!Y01&&54632653#'#"&54672677654&#"XM}s7CqoL4vs@{aq"lUu|ذɫby(_X#)f[oyw\vb9/9/01#7532 7W*EW 9//0147&jqbhdetkJLG+Ap4iC+I=*W9//01'654'7kthafdqj6[I+FD;B+G^@' 9EX/>Y/  /01%73%'j8`/-|6u5!B I/ " 9 /а  +X!Y01!!#!5!3N7275 5\ 9/а/а/01'6773%Q6 ho=9/ +X!Y01!5!*6i# 9EX/>Y +X!Y017462"& .!!. 1!!. *9/EX/>Y01#3e;`;}-} H 9 EX / >YEX/>Y  +X!Y +X!Y01#"32'#"326ǷʵRD&"E (* A9EX/>YEX/>Y9/ +X!Y901!#5%36^ l;uW 9EX/>YEX/>Y +X!Yв9  +X!Y 9901!!56654&#"#46632!zwf_6lwؿ[H 6=]bjurιog*r+,9EX/>YEX/>Y9|/ +X!Y 9) +X!Y)9# +X!Y #)90136654&#"#46632#"&&5332654&'#zӽ6pxޓ}Ąr6촳rtfնt&!r{ӹRF W9 EX / >YEX/>Y 9/ +X!Yа в 9 9013##!53!J6>A\nT6sp 9EX/>YEX/>Y +X!Y9/9 +X!Y +X!Y9901!!6632#"&'332654&#"Dk;4Rƻ7˫i>5+6ֽӶ8<"e#$9EX/>YEX/>Y +X!Y9/9 +X!Y +X!Y01 6632#"&&'5"3254&H :܃huzn[꺛6gy׋|擳áyM:9EX/>YEX/>Y +X!Y901#!5!7zrz6d#/t019а'EX/>YEX / >Y- 9|-/ +X!Y-9-9 ! +X!Y' +X!Y01#"&5467&&546324&#"3264&#"326ڗxx罾 洵߼)̤֝>z$&Ȁֹ&$zfg&h'(9 EX / >YEX/>Y 9/ 9 +X!Y +X!Y  +X!Y01#"&&546632#73$%26754#"5ߌxlnx0+$0`(ka^s⇏}6^> ~ywrx+&Q+'R-A9/ +X!Y9б +X!Yб +X!Y015E;{2z:1 9/а/ +X!Y +X!Y01!5!!5!BBK636r 0D9/ +X!Y9б +X!Yб +X!Y0155h DY;2;]! `!"9EX/>YEX/>Y +X!Yа/9  +X!Y 9901>54&#"#66 462"&AH!6:ZN .!!. pfnMƨsvg!!. x;5B:CD9:$+/3/EX/>YEX / >Y 39/ 9 9 +X!Yа3 +X!Y+$ +X!Y? +X!Y01#"&'#"&7632327!"3267#"$$3 3267&"dgd| n߈sS41 ab  TZ@@[ } gR}3+E(" zl-B,{pq+%.*/5_tRȰ! T 9 EX/>YEX/>YEX/>Y 9 / +X!Y 901!#3#!7;!B!;MPe !9аEX/>YEX/>Y9/_]]/]] +X!Y9 +X!Y +X!Y013!2#!2654&'%!265%!za̫F]g˃g66P 9EX / >YEX/>Y 9  +X!Y +X!Y 901#"&'54632#&&#"32676tٌ!%֬ H9 EX/>YEX/>Y  +X!Y  +X!Y013!2!26754&']߳ܤz  > n 9EX/>YEX/>Y 9 /_ ] ]/ ] ] +X!Y +X!Y +X!Y01!!!!!!&@vd66N I 9EX/>YEX/>Y 9 / +X!Y +X!Y01!#!!!646"_ #$9EX / >YEX/>Y 9  +X!Y +X!Y" 9"/ +X!Y01%#"&'54632#&&#"3267!5!7즢6畒/CLd V=7 V 9EX/>YEX / >YEX/>YEX/>Y 9| / +X!Y01!#!#3!36^666.X&$9EX/>YEX/>Y01!#3&66Z09EX/>YEX/>Y  +X!Y013#"&533267l66 ˲ָ L 9EX/>YEX/>YEX/>YEX / >Y9901#373#66\NwF_s09EX/>YEX/>Y +X!Y017!!3766 ` 9EX/>YEX/>YEX/>YEX/>YEX / >Y99 901 3###WYO6+6aP`Y L 9EX/>YEX/>YEX/>YEX/>Y9901!##336T776TQH !9EX / >YEX/>Y  +X!Y +X!Y01#"54632'#"32χЇ6y kݟ^)Ҽ$ۻ?ծ>e O9 EX/>YEX/>Y 9 / +X!Y +X!Y01#!2%!2654&#!6hog6#H$%9EX/>YEX/>Y +X!Y  +X!Y01#"54632'#"32ϟ 'Z_Ї6y kJ#^)Ҽ$ۻ?ծ>h9EX/>YEX/>YEX / >Y9/ +X!Y 9| / +X!Y01!#!2#!2654&#!69˨jo•̛`g)o *+9EX / >YEX/>Y 9в 9  +X!Y +X!Yв$ 9' +X!Y014&&$&&54$32#4&#"#"&&533260WX ׌z6n|䎞6 ׿]]chjdm|ի{Qgn\i„Ư79 9EX/>YEX/>Y +X!Yа01!#!5!6Zzz6= 9EX/>YEX/>YEX/>Y  +X!Y01 '3 6566&(#8 9EX/>YEX/>YEX/>Y901%73#3G;B;XX"P=` 9EX/>YEX/>YEX/>YEX / >YEX/>Y 9 9  901%7373#'#3BX<VAD,;x=31=w<.ZffPB6 Z 9EX/>YEX / >YEX/>YEX/>Y999 9013##3cD CA D7C!8 9EX/>YEX/>YEX/>Y9013#3aB6HZVy)^j M 9EX/>YEX/>Y +X!Y9 +X!Y 9017!!5!5!66,O5&+ 9// +X!Y +X!Y01#3!!J699/EX/>Y013#9:`:. 9// +X!Y +X!Y01!!53#H6L[+9EX/>Y9/901#3#;+4+=fs)M#9EX/>Y +X!Y01!5!MN66 //а//]01#3;B \N*+,9 EX/>YEX/>YEX/>Y9 9 // ? ]o  ] +X!Y 9@ ,<] +X!Y # +X!Y01!&5#"&54$7!54&#"'4632%267#"g@ތ  6訯7{dEhrp@ !{\Kpcf 9 /EX/>YEX/>YEX/>Y9 9 +X!Y +X!Y01#"&'#36632'4#"32ڼz7669{8++eZukns} aNM9EX/>YEX/>Y +X!Y99 +X!Y01%2673#"55432#&&#" 6ɬ6"&$&Ϋ#zc9/EX/>YEX / >YEX/>Y 9  9 +X!Y +X!Y01323#5#"3267!"zھz:667z8.](#nm\e*wsWN!l "#9 EX / >YEX/>Y 9//?]  +X!Y +X!Y 9  +X!Y01"&&5546632!3267"!54&&1|x|orm;&y]-9;IL, niBh9EX/>YEX/>YEX/>YEX/>Y +X!Yа  +X!Yа013#5356632&#"!!J64Ck{747yLN) *+9 'EX/>YEX/>YEX / >YEX/>Y9  +X!Y99! +X!Y' +X!Y013253#"&'732675#"3267!"yھy97ܽm@&?e8y7(X駹(#ok^X$PU˹\c*sJ 9/EX/>YEX/>YEX/>Y9  +X!Y016632#&&#"#35}6$66>~>ĮǝK  ? 9EX/>YEX/>Y а / +X!Y013#3462"&66R .!!. :R!!. qK H9EX/>YEX/>Y  +X!Yа/ +X!Y01#"'73265462"&110/pw .!!. :E4yR!!.  B 9/EX / >YEX/>YEX / >Y 9 901#373#66MFI@x39/EX/>Y013#366N$x%&9EX/>YEX/>YEX / >YEX/>YEX / >YEX/>Y +X!Y99 01!#&&#"#366326632#4&6qC777|0؆6sBף^rT:xu>YSNT 9EX/>YEX/>YEX/>YEX/>Y9  +X!Y016632#&&#"#35}6$66>~>ĮǝK:Z N E!"9EX/>YEX / >Y +X!Y +X!Y0146632 &&'732554&&#"Zwىyvx6k{ly20~`Np 9EX/>YEX / >YEX/>YEX/>Y9 9 +X!Y +X!Y01#"&'#36632'4#"32ڼ{6668y7**dXgnp{z`Nm 9EX/>YEX/>YEX / >YEX/>Y9 9 +X!Y +X!Y013253##"3267&&#"zھy866:x8./(#ng&H[a*wsNG 9EX / >YEX/>YEX/>Y  +X!Y 901'"#36632F66,/;:q l}N%y&'9EX/>YEX/>Y9 9@  , < ] +X!Y +X!Y 9  ]# +X!Y014%&&54632#4&#"#"&53326Gʞɡ7> FҪ6 G+vwm|]ISC>TsSr&<^a9EX/>YEX/>YEX / >Yа/ +X!Y  +X!Yа013#327#"&'#53%KX,? !Pvf^7sn 3 7$:Q9EX/>YEX/>YEX/>YEX/>Y9  +X!Y01!5#"&'332673067ZiE+:89EX/>YEX/>YEX/>Y901%3#3:[5\:V:S:` 9EX/>YEX/>YEX/>YEX/>YEX / >Y99 901373#'#3n;=7;=?6376>9-:7: Z 9EX/>YEX / >YEX/>YEX/>Y 9 99 9013##3YDCCDZ++K:K9EX/>YEX/>YEX/>Y9  +X!Y901%73#"''326773v<N: )Up)BQ;T < 3 cp4W: M 9EX/>YEX/>Y +X!Y9 +X!Y 9017!!5!5!X66,70IG=- 9/ / 9/ +X!Y901&&55#525667G2B2-[15`9/EX/>Y01#366GL=- 9/ / 9/ +X!Y901$57&5%73"ua@ 51RZ-2B3F9/]9/ +X!Y а +X!Y01#".#"#46323265ޓzGzd=dq7}H~d9ep8/;.zO ? 9EX / >YEX/>Y  +X!Yа/013#"&46266J .!!. !!.  &!m "#9//EX/>YEX/>YEX/>YEX / >Y +X!Y 9 9 +X!Y01%2673#5&554753#&&#"@ 6қ776" "$! ʣ#_% m!"9EX/>YEX/>Y9|/  +X!Yа +X!Yв9 +X!Y01!!5366'#534632#4&#"!h G>x03 ƨ6 rX66kK6>гȷ6rd,A-.9"EX/>Yа/" +X!Y* +X!Y01%"&''7&547'7632732654& QQ((vP))S]\R''WM(IJ꯺({  !q9EX/>YEX / >Y 9/а/ +X!Y +X!Y аааав 9013!!!!#!5!5!5!337>Poxx6zzmQ> 77F77 233" 9/EX/>Y+013#3666sF4DEF95 /EX#/#>Y #9/> +X!Y>9 #9  +X!Y0 #90/7 +X!Y709'# 9#* +X!Y01#"$5732654&&'$&5467&&54632#4&#"%&'6654&&Fv6ǷIךp6ڶHеY;1NRi6pǟXkR(@m3lΧҚ[lT-4^ k]lWEeUpZV/а/ +X!Y 01462"&%462"& .!!.  .!!. !!. !!. {)7899а-EX-/->YEX5/5>Y5-9/ -59 /  ] 9 +X!Y +X!Y 95 +X!Y-& +X!Y01#"&554632#4&"32%32$54$#"4$  $d4x/0ϯб8KKvhװK֥JqA?ZX&'(9EX/>Y'9/а/9 9 /o  ] +X!Y 9@ ,<L\l| ] +X!Y " +X!Y01&'#"&5463354&#"#4632%2675# 'Gycdm6tF6@YEX / >Y +X!Y +X!Y 9/! 9!/!!]2!92/ +X!Y&29,а!: +X!Y014$  $732$54$#"#3 #&54&''32654&'#sKKv700ϯϮ7!;M^`uguZXǺA?>>'o1$\R8eRbTg9/ +X!Y01!5!7g5p 1EX/>Yа/  +X!Y +X!Y014632#"&732654&#"b``b7fOLdeKNgaabcMhePRgjH N9 /EX / >Y а  +X!Yа  +X!Y901!!#!5!3!5!9]6E6C%626 6V[ 9EX/>YEX/ >Y +X!Y99  +X!Y 9901!56654&#"#4632!"OJbafr6wtqB,'Mt3M[hUgvb^{FP}&'(9EX/>YEX/ >Y9|/ +X!Y 9; K [ ]% +X!Y%9  +X!Y% 94DT]0136654&#"#4632#"&532654##Kevk_[y5rwPKVXz|6q<BYEMY]L`ztf9cdHdzeNf\Q~} /а//]/013#;B<`:e9EX/>YEX/>YEX/>YEX / >YEX/>Y +X!Y  9 90132673#'!"&'#63`r*4:kƵd[c + 9EX / >YEX/>Y 901!#"&&54$33v tՋP" 9/ +X!Y01462"& .!!. !!. QMu\ 9EX/>YEX/>Y9/@ <L\l|] +X!Y  +X!Y013#'2654&'7 eMpLUi1O>88 yA9EX/>YEX/ >Y9/ +X!Y901#5%36% Q5a B 9 EX/>Y 9 / +X!Y +X!Y0146 #"&5326554&#"6wtsrupq&8\''!EX/>Y01zp''EX / >Y01|''!7 ,EX!/!>Y01l0M%c&'9 EX#/#>YEX/>Y#  +X!Yа/9  +X!Y990132673#"&54676677"&46208NOF6h3-N .!!. fIB3LOeɥyˈ(R;E_!!. 29EX/>YEX/>YEX/>Y9/ +X!Y +X!Y 9 // ]_ ] ]  +X!Y +X!Y01!!!#!!!!!!AqHLQ'W66Zb@ E 9EX / >Y а /а/ 9 9 9а/ 90177b'de''$l'l'w%y )h*+9а&EX/>YEX/>Y9#9#а +X!Y$а& +X!Y01#"'#7&5463273&#"%4'32χËjBoBkL| kݟpͰCм$ܬIg>3 Y9EX/>YEX / >Y 9/ 9/ +X!Y  +X!Y01!!#!2654&'y66sϮ޵CĘ&+^(,-9/EX/>YEX/>Y 9 9 +X!Y!9$9) +X!Y013#4632#"&'732654.54654&# 6~wUZhY[&,ISWq_wɟwdr;jPZS7"1#2tAr{Go[Z]yN.:BCD93а>EX/>YEX / >YEX/>YEX/>Y 99//?] +X!Y9@ ,<L\] 9? 9?//???]$ +X!Y) +X!Y+ 9/ +X!Y4 +X!Y;01"&'3#"&5467!54&#"'46326632!327%2667!"!54&40吨)5߱8ςѽ̀O]Qsӧřڻs kZ}OM*O?49^*^t ).h/09$EX/>YEX/>Y9/9 +X!Y$ +X!Y+ +X!Y01#"&&5432&&''7&'77'&&#"327"yvgwvq<tY܊.΅gv}P~YTZ0{yV2\q07ivsp I/o W9а/ +X!Y +XY +X!Y +XY +X!Y01!5!462"&462"&/ .!!. .!!. 4U!!. !!. Wo #-h./9 а*EX/>YEX/>Y9'9'а  +X!Y(а* +X!Y014663273#"'#7&&5&#"%4&'325WwىxhT?c_kvىpbT?bgq6cWXoG[SRSg27F*0E@x5 zC+`f 9 /EX/>YEX/>YEX/>Y9 9 +X!Y +X!Y01#"&'#36632'4#"32ڼ{6668y7**dXygnp{zW%&'9#/EX/>YEX/>YEX/>Y/]]9/ +X!Y99аа +X!Y# +X!Y01##5#"532!5!5333267!"W67zھz:u6[.]\e*#nm6wsH9EX/>YEX/>YEX/>YEX/>Y9/9/]а +X!Yа +X!Y а 013##!##533!3!5!6^666(^95.5wwX:EX/>YEX/>Y013#366:: ] 9EX/>YEX/>YEX/>YEX / >Y9|/ +X!Y 901##333#77E;G:  d9EX / >YEX/>Y 9/а +X!Yа +X!Yа а а 01%!!573_޸7o9oX6:9: H 9 /EX/>Y 9/а +X!Yааа а017#57366RP;PU;UKe9EX/>YEX/>YEX / >YEX/>YEX/>Y  +X!Y 9 901#"'732655#3◆6: 03oxR664YTSKN`9EX/>YEX/>YEX/>YEX / >Y9 +X!Y +X!Y016632#"'732654&#"#0AD 9?ox6:q4˾X:p $%&9EX/>YEX / >YEX/>YEX/>Y +X!Y9//]_]]] +X!Y +X!Y +X!Y  +X!Y01!!#"&'4632!!!!!27&#" ǃH&@njku ;66d S ՞\?N#3;<=9*а7EX/>YEX / >YEX/>YEX/>Y 98 98//8?8] +X!Y +X!Y 9 9(а0 +X!Y401466326632!327#"&'#"&&'732554&&#""!54&\wى/.方imo.0x6k{ly2OM~|*~!H 3 9EX/>YEX/>Y  +X!Y0134632&#"K54CkzԜ4,/!h "#9 EX/>YEX/>Y9/  +X!Y 9 +X!Y +X!Y01 5!5!"'76! '267!]Q?CلKv|8VD+1t̢Ǯ6!HKt !9EX/>YEX/>YEX/>YEX/>Y +X!Y  +X!Yаа +X!Y01!#"'73265#5356632&#"!Q▇6: 03pwJ64Ck{4\74'^()9$EX / >YEX/>Y 9/ +X!Y  +X!Y$ +X!Y01#"546326653#"32ЇHv6I6y kݟ^)Ҽ$~p ?ծ>W'^()9EX/>YEX/>Y9/  +X!Y +X!Y$ +X!Y01466326653 &&'732554&&#"Wwىфl^7gs\vx6k{ly2g 1~O9EX/>YEX / >Yв 9/ +X!Y  +X!Y016653 '3 65zp666,(j 9EX / >YEX/>YEX/>YEX / >Y9/ +X!Y9  +X!Y01#5#"&'332673665qz7067_U ZiEhcK: )EX/>YEX/>Y  +X!Y01#"'732656: 03pw:m4WNv !9 EX/>YEX / >Y 9 /  ]O _ ] +X!Y 9  +X!Y  +X!Y012#"&55!74&&#"'6! 6xzw}*inp>~:NBOM}=G*t!;///а/а/@ /?]901#'#573D@( '/]а//]9а/0173#'535;9 gp 5/]а/@ /?]  +X!Y а /01#"&5332656rokupp[egY>  9/ +X!Y01462"& .!!. u!!. r B9 /]а/?O_]  +X!Y +X!Y012#"&462654&"HccHEfe/BfBBfBfb_c4@@46BBGuX19/ / +X!Yа/@ ,<]01!327#"&5479pL]958FCPWk4_&0,ILuZ@9/а/ а /  +X!Y +X!Y 01#"&#"#46323265eKQ>8A7dLN:6CRh}D9Pc|H;H 9/а/]/а/а//013#3#PILE0 I9/]а/@ 0@P`p]  +X!Y +X!Y014632#"&72654&"M98MO67O:,@,,@,0HH01CC1""##/а//]01#3;B /а//]013#B<Ip{??/а/@ /?O]9/ +X!Y +X!Y0156654HcZl|dac283;1TKFR677//а/а//]а//01#3#3IPEL  ^/ +X!Y01462"& .!!. !!. t* /а//]/013#5?g5*Vy D /а/а/@ /?]/  +X!Yа а/013#'462"&%462"&O+; .!!.  .!!. y!!. !!. "x39EX/>YEX/>Y +X!Y01!#!6^z:L= 9EX/>YEX/>Y +X!Y9013!7!'AiRmP6PP#f$%9аEX/>YEX/>Y9|/ +X!Y +X!Y  +X!Y01!5!#"54632'#"32OЇ6y 5}ݟ^)Ҽ$ۻ?ծ>W89EX/>YEX/>YEX/>Y901#3#;A;jPp c 9а EX/>YEX/>Y +X!Y9|/ +X!Y  +X!Y017!!!!!!pwlWWM6665@ 9EX/>YEX/>YEX/>Y +X!Y01!#!#!6^6z9M9EX / >YEX/>Y +X!Y9   +X!Y 901!!5535!! #%}66,q,5dR%[EX/>YEX / >Y 9/в 9 /а" +X!Yа ! +X!Y01#5$57676%534&&'6%77&-*'.DŽ3uKy]9EX/>YEX/>YEX/>YEX / >Y 9/  +X!Y а016$73#&'33 6777`z#_$%9EX/>YEX"/">YEX/>Y 9 а +X!Y"! +X!Y01%$54&#"!5!&'546 !!evԇmMn.탯pNN|n(N6_R܎vf6z}N'()9%EX/>YEX/>YEX/>YEX/>Y +X!Y 99 +X!Y% +X!Y01327#"&'#"''32573267&&#"w+ -VX6z ۽|7,',: 1ns{ A+_c7-o)./9)/EX/>YEX / >Y, 9,/) +X!Y,)9 9 +X!Y # +X!Y012#"&'#'74664&#"32654&'#53 Gmit:6i(ՄdXϧo,˗[N"vlӢ^u8+a: 8 9EX/>YEX/>YEX/>Y 9013#37m:]6]:N67:\8W !1e239&EX/>YEX/>Y  +X!Y9/. +X!Y.9& +X!Y014632'&#"#"5546675&32554&&'"ɘ~H\|vى_cJj{hikM1!'nZcs"* ""|ӊ ^y qtN&o'(9EX/>YEX$/$>Y$9|/ +X!Y9 +X!Y 9$ +X!Y 90147&&54632#4&#"!3#32653#"&tlzŸ6Ӥoɳ7"6Ulq7p|vs&xwZ !9/EX/>YEX/>Y +X!Y99  +X!Y901'6654&''&&547!5w)a]lmR_<%3X=P%kd{/SAPC.7+5pO5`NT9EX/>YEX/>YEX/>YEX/>Y9  +X!Y016632#&&#"#3/666YqT»e: i !9 а EX / >YEX/>Y 9|/  +X!Y +X!Y +X!Y01#"32!5#"!32ǷʵRD&"Emq (c* : )EX/>YEX / >Y +X!Y01327#"&'KW,? !Pvf:nk 3 2>?I9/EX/>YEX / >Y +X!Y9 +X!Y012327#"'''#&#'6E"E/ ': g;a5l0 WC3 < 32 -f./9EX+/+>YEX/>Y+ +X!Y+9/  +X!Y +9  +X!Y% 901&#"3#"'6654&$'$467&&54632~rQ}iPVB!=GJTܲ|ϔa.8Ϸgf/"K=?z#!#f3)6H"u+#d1>:^ 9EX/>YEX/>YEX / >Y +X!Y  +X!Yааа01#327#"&'!##5!jKX,? !Pvf6, sn 3 7`NV9EX/>YEX / >YEX/>Y 9 +X!Y +X!Y012# '#6632554#"Pٽl6,N޷"lwzN"V#$9EX/>YEX/>YEX/>Y9 +X!Y +X!Y012#4&#"'6654&'&'5466=6u`\/#/IDloNΰ"/SY: m5A:5 5W]:"N#$9EX/>YEX / >Y +X!Y  +X!Y01! &&'54667!32554&&#"]|vxwֆ30k{jz?)0·~~{I:K9EX/>YEX / >Y +X!Y  +X!Yа01!327#"&'!5!LXa*A *Grzq|z 2 7:=9EX/>YEX / >YEX/>Y +X!Y013253#"&5pB;(ǥ:=!;'h()9/EX/>YEX/>YEX/>YEX/>Y  +X!Yа$ +X!Y01&474632#>54&&#"{keIsi66v]b2F "  O,A \Si5鎁K=a:]9EX/>YEX/>YEX/>YEX/>YEX/>Y б +X!Y0164'3#&3C1Z66: ^t 2 :&g'(9EX/>YEX/>YEX/>YEX / >Y +X!Y 9  +X!Y90132673 54'3#"&'#"577e7 FRB0[ũ##Z1:)ҋl㌃ mq!,d*-.9*/EX/>Y%9%/ +X!Yв 9 +X!Y%а) +X!Y01#"&'73267&$55463267&&#"qp0ɸ6tcMF|\w P ~ XuJ 9EX/>YEX/>YEX / >Y +X!Yв 9012&#"#&&#"'63276639-%.E[.73^E/%07Xu956;t)XaoPn_)f~Ec'0;)r *+9 $EX/>YEX/>YEX / >Y +X!Y 9аааа  +X!Y" 9'01##"&'#"5477#5!!32673320'Kĩv''vL& }}8\ 倍 \70Bq9EX/>YEX/>YEX / >Y +X!Y9/   +X!Y +X!Yа01!6632#526654&#"#!5!RQ́ygͬ6>Zz(3ug3bf\!z6"h#$9EX / >YEX/>Y 9  +X!Y 9|/ +X!Y +X!Y" 901#"&'54632#&&#"!!32676|tٌ!%C6]6!w"#9EX/>YEX/>YEX/>Y9/  +X!Y +X!Y +X!Yа01!!!#5366!!2654&'V,Ls,0dk@/qܽ(׹zdz6yBD9EX/>YEX/>YEX / >YEX/>Y 9|/ 9/  +X!Y +X!Y  +X!Y01!3!#!!#3!2654&'6[^66q۶z׺JDA._9EX/>YEX/>YEX/>Y +X!Y9/  +X!Yа01!632#&&#"#!5!66*Zzy??Cz6 P 9/EX/>YEX/>YEX/>YEX / >Y +X!Y013!3!#!666zP]? ^9EX / >YEX / >Y  +X!Y 9/  +X!Y  +X!Y01!!!!!2654&'}U^qzϸ.X\H]9/EX/>YEX/>Y +X!Yаа ааа +X!Y01%3#!#367!!!x76LJQ m6m]E)Df 9EX / >YEX / >YEX/>YEX/>YEX/>YEX/>Y 9|/ +X!Yа в 9901####33333#*6HPG6FQH00VV1d_)o$*+9EX / >YEX/>Y  +X!Y' 9|'/'9$ +X!Y$'9 +X!Y$9014&#"#46632#"&&5332654&'#5366ѷ6}:~7ſ?tgϺy%Bۺn}Ҹ8 L 9EX/>YEX/>YEX/>YEX/>Y9 9013##366S66PT"O9EX/>YEX/>YEX / >Y +X!Y   +X!Y01#!#53666;,Ls,0dk@/Pzdz6y!D9EX/>YEX/>YEX/>Y9  +X!Y013#"'7326773B$u91W>DCSD 3 iz'Fp$/Z019а./ / 9/ 9/  +X!Y аа +X!Y%а-013###5#&$54$7353326654&&'#"3#7 *7u$풓K F 9/EX/>YEX/>YEX / >Y +X!Yа013!33#!666zk_jG9EX/>YEX / >YEX/>Y 9/ +X!Y01##"&'3327j6ݵ6P=d< P 9EX/>YEX/>YEX/>YEX / >Y +X!Yа01!3!3!76.zzPY9 /EX/>YEX/>YEX/>YEX / >Y +X!Yаа а 01!3!33#!766zzk_ a9 EX/>YEX / >Y 9/  +X!Y  +X!Y  +X!Y01!!!!!2654&'%m}UmqdϸzdX o9аEX / >YEX/>YEX/>YEX/>Y 9/  +X!Y  +X!Y01!!3!2654&'#3}U6q666ϸ.X"? O 9 EX / >YEX/>Y 9/  +X!Y  +X!Y01!!3!2654&'}U6qϸ.X!h"#9EX/>YEX/>Y 9| / +X!Y +X!Y9 +X!Y 901325!5!5#"#6$32#"$'~6?S6K@ܟ&z'(9EX / >YEX/>YEX / >YEX/>Y 9|/ +X!Y +X!Y# +X!Y01#"5!#3!532'#"3266G.6y kݟ^)j#c)+]ۻ?ծ>_c9 EX / >YEX/>YEX/>Y 9/ +X!Y9  +X!Y01!!#'&&5463!3!!" >[ţkx)ȌPa+a,-9EX/>YEX/>Y9/999 +X!Y$ +X!Y012#"&&557665366"326554&&: xوw䞏6%<Љk{j!~pF ZQi|#es6!|t up:!m"#9а EX/>YEX/>Y9|/ +X!Y9 +X!Y  +X!Y013!23#!2654&#%!2654&#!togn͸R:Z f -|rf6trtj6:39EX/>YEX/>Y +X!Y01!#!66:;:]9 /EX/>YEX / >Y +X!Yаа  ааа +X!Y01776!3#!#3!!&EV6,$63~>ti:9EX / >YEX / >YEX/>YEX/>YEX/>YEX/>Y9|/ +X!Yв9 в901####33333#6G@C6E=G(  mN'o()9EX / >YEX/>Y  +X!Y& 9|&/&9# +X!Y#&9 +X!Y#9014&#"#4632#"&&5332654&'#53$N7㡸nd۹lm7Ș<%skU4ԎP`pt}p7: L 9EX/>YEX/>YEX/>YEX/>Y9 9013##377c66:&:&: ] 9EX/>YEX/>YEX/>YEX / >Y9|/ +X!Y 901##333#77N4 Q: ,:O9EX/>YEX/>YEX/>Y +X!Y  +X!Y01#!#536677{&-f_:5B: ` 9EX/>YEX / >YEX/>YEX/>YEX / >Y 9 9 901%3###3A7*6JR.:: V 9EX/>YEX / >YEX/>YEX/>Y 9| / +X!Y01!#!#3!37c667: :@ 9EX/>YEX/>YEX/>Y +X!Y01!#!#!7c6 :(:9 9EX/>YEX/>Y +X!Yа01!#!5!W6mr7z`R'2~349"а-/EX/>YEX / >YEX/>YEX/>YEX/>Y +X!Y% +X!Y+а001323632#"'##"'73277&#"4#"32zζ|R6O}ϳzT6Vz 7nN9j7Uz/C B">7> *6]USD: F 9/EX/>YEX/>YEX / >Y +X!Yа013!33#!67[6:Au:G9EX / >YEX/>YEX/>Y9/ +X!Y01!##"&&553366736H>O6DP46 #-M셗B-: P 9EX/>YEX/>YEX/>YEX / >Y +X!Yа01!3!3!77.6:: :Y9 /EX/>YEX/>YEX/>YEX / >Y +X!Yаа а 01!3!33#!77.6l6:A:(: a9EX/>YEX / >Y 9/  +X!Y  +X!Y  +X!Y01!!!!!2654&'(cʯgY:ddΙ|#: o9аEX / >YEX/>YEX/>YEX/>Y9/  +X!Y  +X!Y01!!3!2654&'#3cʯg6Y66:.Ι|:: O 9 EX / >YEX/>Y 9/  +X!Y  +X!Y01!!3!2654&'cʯg6Y:.Ι|zNk9EX/>YEX/>Y +X!Y9|/9 +X!Y +X!Y901"#4632#"&53327!5!&8ʱ8<#ѭ6N&z'(9$EX/>YEX/>YEX/>YEX / >Y9|/ +X!Y  +X!Y# +X!Y01!432#"&&'!#332554&&#"f Јyvىz66k{ly--0 :·~: c9 EX/>YEX/>YEX/>Y9/ +X!Y9 +X!Y01#!#&&5467!!"6t@uӍx:>~u K%&'9"/EX/>YEX/>YEX / >Yo"]/"]"]%"9%/ +X!Y9  +X!Y +X!Yа% 01!6632#"'732654&#"##5353!.5}@D 6Apx$66LQ~媲4ǝK6pNe9EX/>YEX/>Y +X!Y9|/ +X!Y9 +X!Y901%2673#"55432#&&#"!!* 6ɬ6E"&$&Ϋ6":} !9EX/>YEX/>YEX/>Y9/  +X!Y +X!Y +X!Y +X!Y01!!!#53667!!2654&'dɮd{&-f_{Yv5Bxs:9EX/>YEX/>YEX / >YEX/>Y9/ 9/ +X!Y +X!Y  +X!Y01!3!!!#3!2654&'7dɮdc66Yx<B:xsv9/EX/>YEX / >YEX/>Y/]]9/ +X!Y 9 +X!Yа01!6632#&&#"##5353!.5}6$66L>~>ĮǝK6: P 9/EX/>YEX/>YEX/>YEX / >Y +X!Y01!3!#!76:^:i a!"9EX/>YEX/>YEX/>YEX/>YEX / >Y9 +X!Y01#"&'#"&'3326733267iȯ%%66yy ԴԴ:S 9EX/>YEX/>YEX/>YEX / >Yа  +X!Y01#"&'#"&'3 653 65y%(s66:Z}tyxXʰXʰn9/EX / >Y 9/ +X!Y 9//] а а +X!Y  +X!Y01!!!#533!!2654&'4cʯg6IY:d:6nΙ|y*+,9EX)/)>YEX/>YEX'/'>YEX / >Y)'9|/а  +X!Y  9 +X!Y  +X!Y9%01!56632#&&#"!!32673#"&'5!#3#@6tٌ6662"(6x!fN$%&9EX/>YEX$/$>YEX!/!>YEX/>Y!9|/а  +X!Y 9 +X!Y +X!Y901!632#&&#"!!32673#"!#32Ŭ6ϵ 666LΫ6&:" d9EX/>YEX/>YEX/>YEX / >Y 9 / +X!Yв901!#!#3#!'6پ; B!;hP2^^$: k9 EX / >YEX/>YEX/>YEX / >Y 9//?] +X!Yв 901####53#!' 6;4:kϱ67uu89 EX/>YEX/>YEX/>YEX/>YEX / >YEX/>Y9/а +X!Y ав901!3#!#!#!#3!'5NB!;6پ;D66 h2~P^^:9 EX/>YEX/>YEX/>YEX / >YEX / >YEX/>Y9//?]а +X!Y ав901!53#####!#3!' 4:6;66ϱ67wuuu:!x "#9 EX/>YEX/>YEX / >YEX/>Y 9 /а  +X!Yа +X!Y 0136633!32#&&'###"!37Ρ'*&66½ =pIyz"":#x!$%9!EX/>YEX/>YEX / >YEX/>Y9/  +X!Yаа +X!Y!0132#5&&'##'#"#56673!!37-6b6X74yj[BI  7Q  &'(9"EX/>YEX/>YEX / >YEX/>YEX/>YEX/>Y 9/а +X!Yаа! +X!Y$01!!32#&&'###"#67!#3!37"'*&66½766 =pIySI6""\:"()*9$EX/>YEX!/!>YEX / >YEX/>YEX/>YEX/>Y! 9/а +X!Yаа# +X!Y&01!!32#5&&'##'##567!#3!37y-6b6j766[BI  S:7Q i+456910/EX/>YEX/>YEX/>Y +X!Y)9|)/& +X!Y &)9 +X!Y0]0-а-/--/-],0-94а4/014&'!5!2##"&&546332$54&'#536673#'53L8Hb_rBT|zN里5;9?6Űx&CܫCK8o4J]g8 pb,(1-239--/EX/>YEX/>YEX/>Y +X!Y'9|'/$ +X!Y $'9 +X!Y-*а*/**/*])-*91а1/014&'!5!##"&&54 7654&##53$73#'53"tp"b_sBS mEzj5;91bo7T#7ȇCK8p4Ia=X{j8 #i$%9а EX / >YEX/>Y 9|/  +X!Y +X!Y  +X!Y01#"54632!5#"!32χЇ#y kݟ^)Ҽ$ۻRT?R>W N!i"#9аEX/>YEX / >Y 9|/ +X!Y  +X!Y +X!Y0146632 &&'7!."2667!Wwىyvx6Gkkxkk205~g|ޅ}# G 9EX/>YEX / >YEX / >Y 9 +X!Y01%7663#3_'|;>qA(;8Y;w/6+MG9EX/>YEX/>YEX/>Y9  +X!Y01%76632&#"#538 ]D1" ,7<4:I_K-BFj9p>'W()9EX/>YEX/>Yа а +X!Yа! +X!Y$01#5&5753'4'#553666666k }} ]\ {{ = : Wn +k,-9 EX/>YEX/>YEX/>YEX/>Y +X!Y +X!Y!а)01466753#5&56554&&'#553Wp̃6ṕ6dr6cs62tt $ + !݂ ܀~i,>G² HI9 :а FEX/>YEX / >Yа/ а/ 9 +X!Y  +X!Y9% +X!Y,а6а6/.а./- +X!Y.2а2/: +X!Y6BаB/GаG/012#"&'#"&'463" 67332654#"&#"#546326753˯&%˯$6R_yPUd7j4_k?F6<-{yG6ָöճx^ָ=,edf,k-.Rkg3_,>G2HI92 а2AEX/>YEX / >Yа в 9 +X!Y  +X!Y  9%а,а5а5/.а./- +X!Y.2а2/: +X!Y5BаB/GаG/012#"&'#"&'463"32655332674&##"&#"#546326753z$(s6PUd7j4_k,F6<-Iryx 6ʪʰʪ,edf,k-.Rkg3_i ()*9%EX/>YEX/>YEX / >YEX / >YEX/>Y 9  +X!Yа'а'/(а(/" +X!Y(%а%/01#"&'#"&'3326733267%5!!#5iȯ%%666yy ԴԴ88gg&'(9#EX/>YEX/>YEX/>YEX / >Yа/ 9 +X!Yа%а%/&а&/  +X!Y&#а#/01#"&'#"&'3 653 657!!#5y%(s66'6:Z}tyxXʰXʰ>88L9/EX / >YEX/>Y 9  +X!Y +X!Y01#&&'54632#&&#"3376*JDVAHzNL9/EX / >YEX/>Y 9  +X!Y +X!Y01#&5546632#4&#"3m6oΆ6ί>J'$ΰ"b>R9/EX/>Y999 9 9 99901%#%7%73%*!'ݿf&%(#c%+DDFMC/ +X!Y01#5!53:7RylG- /а/а/ +X!Y  +X!Y012#4&#"#52>[i7dU-VzxUKk_hde*c.,-k,E#j /а/0153a@$܎~EKj /а/01'753$@aE~$ '4AN[ixD//R/_/7/  +X!YDаDK +X!YаRаRY +X!Y%а_+а_f +X!Y2а7> +X!Y01462#4&#"4632#4&#"4632#4&"4632#4&"462#4&#"462#4&#"4632#4&"4632#4&#"stp30.3u]_uq5.-3Iu]_tp5\3u]_tp5\3Ostp30.3Mttp30.3u]_tp5\35u]_uq5.-3ThhT.750UggU1450 UghT147.UghT147.ThhT.77.ThhT.750 UghT147.UggU1450$cd "'%/#/// //!/EX/>Y01#'37%%57%'%'7' z`F: z`F Mt ZADE&+A`B<aR |bG; |bGDEFEG+&'5D+EX/>Y 01&'EX/>Y 01Vt9EX / >YEX/>YEX / >Y +X!Y 9/ а а +X!Y  +X!Y01!!!#5353!!2654&'4cʯg6IYz$z6Ι|^O9EX/>YEX/>Y9/ +X!Y +X!Y01#!2'#%654&#!!27'76)jo\~)gl#3y`Ű#)#`N(p)*9EX/>YEX/>YEX / >YEX/>Y 99 +X!Y! +X!Y01'#"&'#36632'4#"327'76KFl,j]~{6668y7**nMq-mzH!FdXgnp{; $ 3 9EX/>YEX/>Y +X!Y01#5!#!366(6yt83 9EX/>YEX/>Y +X!Y01!#!386V6:t^ 9 /EX/>YEX/>Y +X!Y9/   +X!Y +X!Y01!3 #526654###!x}qc6^z3 :^ 9 /EX/>YEX/>Y +X!Y9/   +X!Y +X!Y01!3 '6676&###!6  Ý6[*:&P:&P~&,P:&Pf9EX/>YEX / >YEX/>YEX / >Y9|/ +X!Y9а01 #####3333]*"Gf7667v3D/V3:f9EX/>YEX / >YEX/>YEX / >Y 9|/ +X!Y9а01 #####3333R|e7777o>::  ^Vl9EX/>YEX / >YEX/>YEX / >Y 9| / +X!Y +X!Y 901##!5!33#h6 +jG|G9z6L*&(:l9EX/>YEX / >YEX/>YEX / >Y 9| / +X!Y +X!Y 901##!5!33#7{N4 Q6  &,P :&P h9EX/>YEX / >YEX/>YEX / >Y9|/ +X!Y +X!Y01!!!#!#3`6^666.: h9EX/>YEX / >YEX/>YEX / >Y 9|/ +X!Y +X!Y01!!!#!#37c66G7:k9/EX/>YEX/>YEX/>Y9/  +X!Y +X!Y +X!Y013 #526654###!#!x}qc6^6F3 za:k9/EX/>YEX/>YEX/>Y9/  +X!Y +X!Y +X!Y013 '6676&###!#!  Ý7c6 ^*:'5679(EX/>YEX / >YEX/>YEX/>Y9/   +X!Y +X!Y' +X!Y+ +X!Y2 +X!Y01"'# 54663"327&54323674#"ťrуoҪ٘(CBC6֢+W3!U.pKK%eN$2349%EX / >YEX/>YEX/>YEX/>Y9/   +X!Y +X!Y( +X!Y/ +X!Y01"'#"5543"327&&55462366554&#"elpeSh^lyՍ_jfj 6?:V6k%Hl_K$=>gԸ6&<P7:&\PKX9/EX/>YEX / >YEX/>Y +X!Y а +X!Y 01!5!53!!!33#!Z6,66y66zk_:^9 /EX/>YEX/>YEX/>Y +X!Yаа +X!Y а 01!5!!!33#!a7[6662A&Pu:&PjP9EX/>YEX / >YEX / >Y 9/а +X!Y013673##&&'766ѝ7s6P8p:P9EX/>YEX / >YEX/>Y 9/ +X!Yа01!##5"&&553336736~8O6D8e6 <M셗B/3jG9EX/>YEX/>YEX / >Y9/ +X!Y0133632#&&#"6ݵ61=lYEX/>Y 9 // ] +X!Yа +X!Y9 а% +X!Y01 5&&5354632!3 7!54&&#"vˏ7{y$ ^fwݐ8 s 6x+VLF3DN(u)*9%EX/>YEX/>Y9//?] +X!Yа а +X!Y9$ +X!Y01"&&55&&53632!3267!54&&#"3|ep7orm;&y}]e Es9;IL nid9/EX/>YEX/>YEX/>Y9|/  +X!Y +X!Y013 #526654#!#333;x}qc66BG3 /V:R9/EX/>YEX/>YEX/>Y9|/ +X!Y01'6676&###333^n77NG _s*—:"&,:&Kh 9EX/>YEX/>YEX/>YEX/>Y9|/  +X!Y +X!Y01!3#"'73265!#67:-6nx^6=4IK:h 9EX/>YEX/>YEX/>YEX/>Y9|/  +X!Y +X!Y01!3#"'73265!#76: -6pwc6: m4j: &, :&I&1^N:&c/!l"#9EX/>YEX/>Y 9 /  ] +X!Y9 +X!Y  +X!Y01 # 5!5!"'76267!C]Q?ل̢ǮKv|8VD+1t^!Hzl9EX/>YEX / >Y +X!Y9 9/в 9  +X!Y +X!Y013#"&&5332654&##5!5.~t8ٲɻeDӻjѹ786zu:` 9 /EX/>Y +X!Y9 9/ +X!Y9 9  +X!Y01!5!2#"&&5332654&##5e~t8ٲD7Dҹjѹ8K&&'HS/K6:&''|S'6K&<S7K:&\S? R9 EX/>YEX/>Y9/  +X!Y  +X!Y013!"&5467!"6XyԻ(P۹ƿ?\ !9EX/>YEX/>Y9/ +X!Y в9 +X!Y01!"&5467!376676'3#'!"y6A2)Ի۹X\6ƿz- .}/09!EX/>YEX/>YEX/>YEX/>Y9  +X!Y99$ +X!Y *013233676&'7#'#"'&&#"3267'z۽z97㢶)8+׸53ʃ *)+miIddbghu (y.1+i,-9EX / >YEX%/%>Y, 9/  +X!Y+ +X!Y+9% +X!Y% 90153 4&'!5!3>76&'3#&'5!v}gib+90lx7P66g~~ddXOL,:*c+,9EX!/!>YEX/>Y +X!Y!9!+9/ +X!Y! +X!Y(901%36676'3#&'54&'#'32654&#!'![aRA*Šxvc^cQŻQOr}Vcn3{bj2S 0r%`&'9/EX / >YEX/>Y& 9/ +X!Y  +X!Y9 +XY01536654&#!5!3'677#&'54&#*6j%QH̻66~0O2q hoEWhf:#`#$%9/EX / >YEX/>Y$ 9/ +X!Y  +X!Y9 +XY01'36654&'!7!23'665#&'54&#Ie`4j%-,$6sy|t7g-ƕq :qT$Xjw@."e#$9EX/>YEX/>YEX/>Y +X!Y  +X!Y +X!Y901!#5366!7676'7#"&5s,Ls,0dk@/ziF8)պzdz6yL޸':!e"#9EX / >YEX/>YEX/>Y  +X!Y +X!Y +X!Y 901!#53667!76676&'7#"&'a{&-f_Wp_)7.ʱ5B__Ci9EX/>YEX/>YEX/>YEX/>Y +X!Y 99|/ +X!Y013676'7#&'!#3!ctoG8/׷66%Y\K;:l9EX/>YEX/>YEX/>YEX/>Y9|/ +X!Y  +X!Y901!#3!336676&'7#&'ar666ϙ*8.̯|:&__C"I#$9EX / >YEX/>Y  +X!Y +X!Y 901"&'4632&#"36676'3zwޏ5:w A9Dθ]ZlNF !9EX/>YEX / >Y +X!Y 9 +X!Y01%6674'3#"5546632&#"L7ĭkƀL\d!jV3;16O9EX/>YEX/>Y +X!Yаа  +X!Y901!5!!3676'7#&'FtqG8+չz66ߕbgA{:O9EX/>YEX/>Y +X!Yаа  +X!Y901!5!!36676'7#&'`LvnG8-ʰ55TǕI)o*+9EX/>YEX'/'>Y'9|/ +X!Y9 +X!Y 9' +X!Y"901%&&54$32#4$#"3#32$53#"$Q6  6}%B&yft8ϣyq"K&S,K:&SP( /а// а/]а/013#3&&5*;4:e;N9Bnu<){O==FL@nGiff@M?EX/>Yа/@  0@] +X!Y +X!Y01!5!5!5!NN66e 9/а/01#56%V6 l~xvM 9/а/01'6773r%Q6 hou/J 9/а/а/01'6773T%Q6 hod /а/01&'5Q%foh mu`&M&/Ji+9/а/ а /а/а/01'6773'6773T%Q6E%Q6 hom hoA S 9EX/>YEX/>YEX / >YEX/>Y  +X!Yа01!#!5!3!36%6:vR`/9EX / >YEX / >YEX/>YEX/>YEX/>YEX/>Y +X!Y +X!Y аааа01!!#!5!!5!3!!!/7;;7`67v73!}  9/ +XY01462#"&'[]^IH^GYXKGWUGi&&EX/>YEX/>Y01i&&'dc  9/  +X!Y014632#"&d !! !! sv&4BPTUV9а2а5аHаSQ/S/EX/>YEX/>Yа/9 а /а/9$а$/* +X!Y1 +X!Y*8а1?а$F +X!YM +X!Y0146326632#"&'#"&54632"&5326554&#"326554&#"326554&#"'fsW WusV!Ts ut*wbawuebuudcsseds%wcbuwb`x--ebNNbG`PQ_|HkpInrJjnIpqjnHlrrl9/а/01#53&F'F0rrj9/а/01#&F%{A59//017'n--rA!EX / >Y 01|T9EX/>YEX/>YEX/ >YEX/ >Y9  +X!Y01663 #&#"# )\$5d7MY ui%c%( )*9EX/>YEX/>Y(9(/?(O(] +X!Y +X!Y а а(а($а$/$$/$]& +X!Yа$в9 +X!Y01!!!5366''#53'#53'4632#4&#"!!!G>x03ƨ6rjX66k78гȷ8(#&)#*+9#а#а#%а#)EX/>YEX/>YEX/>YEX / >Y9/o]а/] +X!Y +X!Y аааааааа а"а$в&9'9(013#3##!##535#533!3!'!!5!%!! 677%6VVSGy6666776 (#)*9#EX/>YEX/>YEX/>YEX/>YEX / >Y +X!Y  +X!Yав!9!/ +X!Yа/' +X!Y01#327#"&'#!#!2333!2654&'!KX,? !Pvf697@Ӻsn 3 ư$Yɩ&6WL(#'+05:9;<99а9"а9'а9*а9-а93EX/>YEX / >YEX/>Y 9/а/а +X!Y  +X!Yа ааааааа а"а$а&а(а*а -в0 9 2в5 96в9 901!33#3##!##53'#533!337!37!!'#7#%7#3''vp;p7==7pYEX/>YEX / >YEX/>Y +X!Y  +X!Y 9/ 9/012#&&#!#3!2673`666}6:T:OaH'()9EX/>YEX / >Y' 9'/ +X!Y  +X!Yа'а'а/@ /?] +X!Y +X!Y"а$01!327#"5#535#53532&#"!!!9vfis`~pn9H2"9'/78*#:#)8("',̲+-.9+а+а+&EX / >YEX/>Y  а /@  0 ]а/]*а*/0*] +X!Y +X!Y  +X!Y #а#/а/аа а /а/)аа ' +X!Y01##535#535!23#3#!4'!!6%!&!!!! &6Ǭ-^  ^y 'gW66s6:B@:6B<9ݺ<rr9EX/>YEX / >Y +X!Yа/ +X!Yа/  +X!Yааа01!3###53667!7!&&'#7!^ydv 9R 2 ೩"z1|6e6669J9EX/>YEX/>Y9/а/@  0@] +X!Yаааа аа +X!Yа а аа а а +X!Y901#'5755737725J66 I;II;I{];]];]*?x:]9EX/>YEX/>YEX / >YEX/>Y9/  +X!Y а01#5'##57536676l < 6 ^ ( !9EX / >YEX/>Y 9/ +X!Yаа а /@   / ? O _ ] +X!Yа а  +X!Y01!##535#53!2!!%!2654&#!p6hpoo66־r)7;<=9а*а88/:/EX / >YEX&/&>Y а/ 9  +X!Y +X!Y 9&а/&- +X!Y4 +X!Y01#"&554632#4&#"32654632#"&5326554&#"'|lpol7lW[~}^Tm!tust7wcbuudcu--Y}F||\F[lFdZEoGkoIqrrN"] #$9  /EX/>Y 9/ +X!Yа +X!Yа   +X!Y01"&55#527463236554&#"rfVoä튧P?F<5@S̪`e/YJ( )*9 а а EX$/$>YEX'/'>YEX/>YEX/>YEX"/">Y а /а/ +X!Y  +X!Y +X!Y!$9&$901!5!46 #"&5326554&#"##33D6wtsr67766vpqJGo; 9 EX/>YEX / >YEX/>Y в9/ааа а  +X!Yааа01##33####5!47EE78LK=5 9Ne9EX / >YEX/>Y 9/ +X!Y +X!Y 9  +X!Y01%#"&54632!327"!&wĬzs^r>nz*zqs''%EX/>Y01<' L'%EX/>Y01'"'%EX/>Y01}'$;' %AEX/>Y01j2+[,-9 /EX/>Y  +X!Y 9 9/ +X!Y$ +X!Y01#"'632#"&&55466 %"325&'&]E ~⏇zxjzJOd7C)^y[զ|+~xB{tT#UIA, 9/EX/>Y +X!Y01#!#!A66v9>9/EX/>Y +X!Yа  +X!Y01!!5535!!T%2HD6+34,5/ +X!Y01!5!C6A 9 9 /EX/>YEX/>Yа  +X!Y01%3#5#535:54|`P6N+<g=>9#а4EX/>Y а /а/а/999 +X!Y а 0 +X!Y(01#"$'#"55466326$32'4&&#"32532775'&#"tЂQUtς PP 6euGFfwDF2$ *  ~ )aKR?9EX/>YEX/>Y +X!Y +X!Y01#"'732654632&#"6: 03pwK54CkzY4-4e'|()9/а/ а  +X!Y +X!Y аа/а/а  +X!Y% +X!Y '01636327#"''&"636327#"''&"ofRJFMhfNBIOhfRJFMhfNBIOhE#O"BS"#O"@S"C9/ +X!Yа а /  +X!Y а а01!'#5!!5!!!!/$/ 6a66Lf Z@@C0EX/>Y01jf"]@@C1EX/>Y01D 8 9EX/>YEX/>Y99013# 3\3[yz')hg' n}:4 9EX/>YEX/>Y9/01#3#37766yy5t. 9/а/@  0@P]а/]01'6773%>6 VZoOB&JJ Bt9EX/>YEX/>YEX/>YEX/>YEX/>YEX/>Y +X!Yа +X!Yа013#5356632'&#"!!!#3{;Su}@667947:Bto9EX/>YEX/>YEX/>YEX / >YEX/>Y +X!Y +X!Y а 01&#"!!##5356632#>fk{6{6+77=(B(,-.9*EX/>YEX/>YEX / >YEX+/+>YEX/>YEX/>YEX$/$>YEX)/)>Y +X!Yа  +X!Yа а"а#а&а'013#5356632&#"!56632'&#"!!#!!#3J64Ck{ {;Su}66674947:B)*+9EX/>YEX/>YEX!/!>YEX/>YEX/>YEX/>YEX%/%>Y +X!Yа  +X!Yа а#а$а'а(013#5356632&#"!56632#&#"!!#!J64Ck{ {6fk{674=(+7BC&'(9EX / >YEX/>YEX%/%>YEX/>YEX/>YEX/>Y +X!Y   +X!Yаа +X!Y#а$01&''"##53566323#327#"&'#53Bt&kz6KX,? !Pvf& ,7Ej7sn 3 7lIƲJK95/EX./.>YEX8/8>YEXH/H>YEX/>YEXC/C>Y5 +X!Y .9. +X!Y).9) +X!Y .9# +X!Y8: +X!YC> +X!Y:FаG01#"#4&#"#"&5332654%&&54632&5463 3#327#"#53_oN7> FҪ6ʞɡc*r,,? 'Kxn_?\;$m|]ISC>TsSr`G+vw>eUs:7 17Vr (7=CIOVZ^bfjnvz~Ų9аа0а<а>аFаJаPаWа[аaаcаgаmаpаwа{аааа=/EXF/F>Y}D+|y+x+:+ =F9 /а/а/ а/o9|o/P +X!YPo9  +X!Y% +X!Y)а)/.а./4 +X!Y=kаgаcа>б? +X!Yeаiаmа<а:AаFG +X!Y_а[аWаJаF`а\аXаKаDNаQ +X!Yv +X!Yxаyа|а}аа01#"&'5463232#4&#"32653#"&53326533!5353!#%5!#53254'5!!5!!5!5!!5!!5!3254&###535#53#53%#535#53#534df~heCbrT24JA@JJB@I\iRXm]h)6q(om56o\~gb[\ [\]v:<]qqqqqq"oooooobyx^u_|x^%IMT F-HENNEpENNEON]QS[6,;qqttSRJtttttt8qqqqqqP)~~~\s $(F!/%/+%а/!а/ а /а/99 а /01 4676654&#"36632#33#3#AD$J\:+98][/KR11::'J34@4_Yа/@?O_o]а/@?O_o]а/@/?O_o]/  +X!Y +X!Y013#462#"&72654&"PBrQtOO:;P34H22H4:TV87SR8&22&(33V [ 9EX/>YEX/>Y +X!Y99  +X!Y 9901!!56654&#"#4632!"OJbafr6wtqB,'Mt3M[hUgvb^{FA9EX/>YEX/>Y9/ +X!Y901!#5%36% Q5a^x H9EX / >YEX/>Y  +X!Y +X!Y01#"&554632'4&#"3265x5phgqsfhoGUm%h&'9 EX / >YEX/>Y 9/ 9 +X!Y +X!Y  +X!Y01#"&&546632#736%26754&#"72smdfn+$ _V7Zehjpmu6sj1`^X#/t019а'EX/>YEX / >Y- 9|-/ +X!Y-9-9 ! +X!Y' +X!Y01#"&5467&&546324&#"3264&#"326vl{kЬΝɤ$c^hf ^YEX/>Y +X!Y901#!5!8:GjV7 e!"9EX/>YEX / >Y +X!Y 9/ 9 +X!Y  +X!Y01 6632#"&55"32654& 5lӡEEuŞ6PYӫx2\,|]_ɐp 9EX/>YEX/>Y +X!Y9/9 +X!Y +X!Y9901!!6632#"&'332654&#"G9-Pǽ 7 \E^/8A *ȥȲ|%6H W9 EX / >YEX/>Y 9/ +X!Yа в 9 9013##!53!6p@)Im76!6r\)r*+9EX/>YEX/>Y9|/ +X!Y 9)9" +X!Y)"9( +X!Y01367654&#"#4632#"&5332654&'#ul^[6ݧălԳ6ѠnmFEhzvZo{{gW 9EX/>YEX/>Y +X!Yв9  +X!Y 9901!!56654&#"#4632!}j6׮mz3JxǩNsTA9EX/>YEX/>Y9/ +X!Y901!#5%3T6 E{;p H9EX / >YEX/>Y  +X!Y +X!Y01#"55432'4&#"3265˼˽6P M 9EX/>YEX/>Y +X!Y9 +X!Y 9017!!5!5!0?66.)6* 8 9EX/>YEX / >YEX/>Y90173#3A,7-A!"(K. Z 9EX/>YEX / >YEX/>YEX/>Y999 9013##3DQB_aAPC~#Q<4` 9EX/>YEX/>YEX/>YEX / >YEX / >Y 9 9  901%7373##37&9"889;):;Twss:H8 9EX/>YEX/>YEX/>Y901%73#3;,>,YEX/>YEX/>Y +X!Y01#"&532675Ϲ딵 .9 9EX/>YEX/>Y +X!Yа01!#!5!<6;VV7R$f%&9EX/>YEX/>Y9 +X!Y +X!Y 9" +X!Y"9014&$'&546 #4&#"#"&53326XXyr6ʣɥwV5ⷦgj:O×ecz]Y{Uc9EX/>YEX/>YEX / >Y9/ +X!Y 9 +X!Y01!#!2#!2654&'!U6wJ9v yq0%!H"#9EX/>YEX/>Y +X!Y +X!Y01'#"'5466324&#"3265%y&JUu،6¿;%䰙ڝ O 9  EX/>YEX/>Y 9 / +X!Y +X!Y01#!2#%!2654&'!6V7r%H9EX / >YEX/>Y  +X!Y +X!Y01#"'546632'4&#" 65%u،u،5䰙ڝ4 L 9EX/>YEX/>YEX/>YEX/>Y9901!##334666630= ` 9EX/>YEX/>YEX/>YEX/>YEX / >Y99 9013###M6+6;sB>`09EX/>YEX/>Y +X!Y017!!3J666$ L 9EX/>YEX/>YEX/>YEX / >Y9901#373#66LVH_OfzK"09EX/>YEX/>Y  +X!Y013#"&5332657 6ž$9EX/>YEX/>Y01!#366+ V 9EX/>YEX / >YEX/>YEX/>Y9|/ +X!Y01!#!#3!3+6666&1 d !"9EX / >YEX/>Y 9  +X!Y +X!Y 9 / ] +X!Y01%#"5546632#&&#"3267!5!+v׈6Ȧx+YEX/>Y9/] +X!Y +X!Y01!#!!!Y6/y57Rs+ ,-9 / /EX / >YEX / >YEX/>YEX"/">Y" 9 ж +]  +X!Y +X!Y"&а) +X!Y014&$'&546753#4&#"#5&&53326XXyձ66ʣɥwV65ⷦgj:O{ecz]Y{U#!o"#9EX/>YEX/>Y!9!/!/!]б +X!Yа +X!Yа +X!Y!901!!!536675'#53'&632#4&#"!Z  H[6|7et66ʒ)e6{ʬ½{s9EX/>YEX / >Y 9а/ +X!Y 9}/ +X!Y аааа013!!!!#!5!5!5!337K9/J7J0<j Y6[66[6sw39EX/>YEX/>Y +X!Y01!#!wi6V= 9EX/>YEX/>Y9 +X!Y01!!3'!>wDPP2r% f!"9аEX/>YEX/>Y9|/ +X!Y +X!Y +X!Y01!5!#"'546632'4&#" 65Ou،u،506p䰙ڝ8 9EX/>YEX/>YEX/>Y9013#3#'Y<>;bsPPPN c 9аEX / >YEX/>Y +X!Y 9|/ +X!Y  +X!Y01!!5!!5!!5!NWJW6 66@ 9EX/>YEX/>YEX/>Y +X!Y01!#!#!66gW7E9EX/>YEX/>Y +X!Yа +X!Y01!!5535!! y.d%:6,!,6r [EX/>YEX / >Y 9/в 9 /а +X!Yа  +X!Y01#5&547534$'6$%(6 6 4ِ~mm Z]rW] 9EX/>YEX/>YEX/>YEX / >Y 9/  +X!Y а016653#&533676kl7s==={{U'b ()9EX/>YEX/>YEX&/&>Y9а  +X!Y +X!Y$а%01%>554&&#"!5!&'546632!!zzAf~A~|:uՉN6R9Y6n9EX/>YEX/>YEX/>Y +X!Yав 9 / +X!Y  +X!Y01!5!!6632#52654&#"#mrWCWڿX-6W66*16="zk !9EX / >YEX/>Y 9|/  +X!Y9 +X!Y +X!Y901#"5546632#&&#"!!3 rЇ6ı @޴c'f´Y6=A#!t"#9EX/>YEX/>YEX / >Y +X!Y   +X!Y9/ +X!Y а01#!!##53267!!2%!2654&'˹^ =vi$V\3 koSW7|6||Ǘ9EX/>YEX/>YEX / >YEX/>Y 9|/ 9/  +X!Y +X!Y  +X!Y01!3!2#!!#3!2654&'6k˹^66#o\1&Ǘ.\9EX/>YEX/>YEX/>Y +X!Yав 9 / +X!Y01!5!!6632#&&#"#mrWCWU6X-6V77*1P-=" P 9/EX/>YEX / >YEX/>YEX/>Y +X!Y 01!!#!3!3g6h66IW h9 EX / >YEX / >Y  +X!Y 9//]   +X!Y +X!Y01!!2#!!2654&'!c}k˹^읮WN;y]9/EX/>YEX / >Y +X!Yаа ааа +X!Y01776!3#!#3!!%{6.66/yKt!Vb+9EX / >YEX / >YEX/>YEX/>YEX/>YEX/>Y 9|/ +X!Yа в 9 901####33333#6K:J6G9K;;N?V(r&)*9EX / >YEX/>Y  +X!Y% 9|%/%9$%9 +X!Y$9%# +X!Y014&#"#4632#"&&5332654&##5366t6srvt6ݣǷǞ`}sf 3☱Ug~x6~: L 9EX/>YEX/>YEX/>YEX/>Y9 9013##36666s7  ] 9EX/>YEX/>YEX/>YEX / >Y9|/ +X!Y 901##333#66GAK;#O9EX/>YEX/>YEX / >Y +X!Y   +X!Y01#!##532676 =vi$V\3 sW7|6|K9EX/>YEX/>YEX/>Y9  +X!Y90173#"'732673k+CH#_>1Nn4DPE 3 Kf F 9/EX/>YEX / >YEX/>Y +X!Yа 01%3#!3!3}6R666KWIG9EX / >YEX/>YEX/>Y 9/ +X!Y01!##"&&53326736.U6R565BPӵ8&3 P 9EX/>YEX/>YEX / >YEX/>Y +X!Yа 01!!3!3!33w666WWY 9/EX/>YEX / >YEX/>YEX/>Y +X!Yа а а 01%3#!3!3!33}606666KWW h 9  EX/>YEX/>Y +X!Y 9 / / ]  +X!Y  +X!Y01#!!5!!22654&'!˹^|kSW6C&  Y9 EX/>YEX/>Y9//]  +X!Y +X!Y01#!3!22654&'!˹^6kSCs h!"9EX/>YEX/>Y9|/ +X!Y +X!Y9 +X!Y901!2655!5!54&&#"#6632#"&'%e@dw6qЇf666ró# $%9 EX/>YEX / >YEX / >YEX/>Y 9|/ +X!Y +X!Y 9  +X!Y01#"'5!#3!5432'4&#" 65u،665I*ڝP c9EX/>YEX/>YEX / >Y9/  +X!Y 9 +X!Y013&&5463!#!!!"P-|ļ6:&%sQ| ~ U9EX/>YEX/>Y 9 / +X!Yаа а  +X!Y01!#!5!!!!_6 i //6(7+9/EX/>YEX/>YEX/>YEX/>YEX / >YEX / >Y9|/ +X!Y9 +X!Y в9013######33333566K:J6GQK;;N? o9/EX / >YEX/>YEX/>YEX / >Y 9|/ +X!Y9 +X!Y013####333 56٬66GTK;'f9EX/>YEX/>YEX / >YEX/>Y 9|/а  +X!Y 9013333###5##3Z7?GAK97Z66q;l 9EX/>YEX / >YEX/>YEX / >Y 9| / +X!Y +X!Y 901##!5!33#f6|GAK;W6r.%34591EX/>YEX/>YEX/>Y9/ а /  +X!Y +X!Y%а) +X!Y0 +X!Y01"'# 54663"327$543236754&#".Ü~pІuc}O89ZG6!6=O&NDFD&'{.^9/EX/>YEX/>YEX/>YEX / >Y9 +X!Y 90133###3DQ56_aAPC~K#Q<^ 9/EX/>YEX/>YEX/>Y +X!Y +X!Y а а а 01%3#!!5!!!3}6RmrW66KW66WIP9EX / >YEX/>YEX/>Y 9/ +X!Yа01!##5.'33667367P67Q-65VP-׭:"G9EX/>YEX / >YEX/>Y 9/ +X!Y0136632#&&#"#6CWU6X-6*1P-="$z%&9EX/>YEX/>Y 9 / / ]_ ] +X!Yа +X!Y9 +X!Y  01"55&&53>32!327"!54&P7yׄ݌K[{acu*{0_m 9EX/>YEX/>Y 9 / ] +X!Y9 +X!Y  +X!Y012#"55!54&&#"'627!* y؆iň݌actu* 0Vn9EX/>YEX / >Y +X!Y9 9|/а  +X!Y +X!Y9013#"&&533265%#5!5IDvt6ڦ-DAUg| -6r% f!"9аEX / >YEX/>Y 9|/ +X!Y +X!Y  +X!Y01#"'546632! 65%!54&#"%u،u،5H䰙`:l2#(&)*9EX/>YEX / >Y 9/]а/@ /?O_]] +X!Y +X!Y   +X!Yаааааа% +X!Y"%901!!!!!!53667#535'#53'&632#4&#"-W_w HZ6|66i66Ʌ66Eʬ½([# $%9EX/>YEX / >Y# 9#/#]# #] +X!Y  +X!Y а#а#а/@ /?O_]]  +X!Yаа +X!Y01!327#"&'#535#536632&#"!!!;lfii ܾV~pd 9"966:#6<( )*9 а а EX/>YEX'/'>YEX%/%>YEX"/">YEX / >Y а /а/] +X!Y  +X!Y +X!Y!% 9& %901!5!46 #"&5326554&#"##33'6wtsr6666<6*+30( 9EX / >YEX/>Y 9/ +X!Yаа а /@  / ? O _ o  ] +X!Yа а  +X!Y01!##535#53!2#!!%!26&'!s6гMo6r7rP} &r'(9EX/>YEX/>Y9|/ +X!Y 9& +X!Y&9  +X!Y& 90136654&#"#4632#"&532654##Kevk_[y5rwPKVXz|6q<YEMY]L`ztf9cdHdzeNf\QA W9 EX / >YEX/>Y 9/ +X!Yа в 9 901%3##5!'3!5YYEX/>Y +X!Y9/9 +X!Y +X!Y9901!!6632#"&'33254&#"/n%`>y~g 6pVsjb:"~3qwdM^[o$ke 9EX/>YEX / >Y +X!Y 9/ 9 +X!Y  +X!Y01"6632#"&5546"3264& uMso|7FdWtq2.>옠MK=YEX/>Y +X!Y901#!5!8~? 2P  *t +,9 а !EX/>YEX / >Y& 9|&/ +X!Y&9&9  +X!Y! +X!Y01#"&5467&&54624&"326"264&oSDNaaNDRʀ{li{ZstrvJA_jDdwwdHf^Aaut#Ka`^^lZJHWY^Nl "h#$9 EX / >YEX/>Y 9/ 9 +X!Y +X!Y  +X!Y01#"&54632#7366'26754&#"6 xMsu̿Pzue]yst4AowK0\SB&_[l9/] +X!Y01!5!K6 k 9EX/>YEX/>Y 9 /_ ] / ] ] +X!Y +X!Y +X!Y01!!!!!!N;nC67#ZJN)7EFG90а;EX&/&>YEX/>Y&)а)/ +X!Y&9/9/7 +X!Y79&90 +X!Y; +X!Y&B +X!Y01##"'332#"&5467&547&&'54632!326654&'326554&#"ˉܢGA^Ɂ⌹zqMZZdۤIA6r|uUbCTnTZ]1&gcJ+UBbk}KFkzhltwzNm !9 EX / >YEX/>YEX/>YEX/>Y 9 9 +X!Y  +X!Y01#"''323#32675&&#"ؐ ۽):YEX/>YEX/>Y9/ +X!Y 9  +X!Y01#!2#&'54&#%!2654&#!6G5GþEfTɽAV6 ] 9EX/>YEX/>YEX/>YEX / >Y9|/ +X!Y 901##333#66jG|G9L*& S 9/EX/>YEX/>YEX / >Y9|/ +X!Y 901##333#v66G F)_{ S 9EX/>YEX/>YEX/>YEX / >Y99 901##333# 66 Q3Q9;+%  H 9 EX/>YEX/>Y  +X!Y  +X!Y013!2!266554#[$y쓅VuԄzP9EX / >YEX/>Y 9  +X!Y +X!Y 901#"5546632#&&#"3 rЇ6ı޴c'f´ɶA 9аEX/>YEX/>Y9/_]]/]] +X!Y9 +X!Y +X!Y013!2#!2654&'%! 54%!NkfsҸd)Rcg;~o6 T 9 EX/>YEX/>YEX/>Y 9 / +X!Y 901!#3#!'B;?:*7Vs@A /а/01#56,/6_=Qe d/]а/@ /?O_]  +X!Y а /9/а/@ /?O_]/01#"&533265%3#Ɨ6vnlvpA7]ss]NTWKe/а//] а / +X!Y +X!Yа|/@/?O_o ]а/@ /?O_]/01#".#"'463232653#XC .M"->0YB /K#,?A7G>R: 3. =M9:0i ] 9EX/>YEX/>YEX/>YEX / >Y9|/ +X!Y 901##333#66I>H3K:0 o/]а/@ /?O]/9а// а /а/@ /?O_]   /013#'#3#CPTTI?ߺj0 o/]/а/@ /?O]9а//а// а /@   / ? O _ ]01#'#73#'3TTP?IƺArq//а/@ /?O]9а//а/ а / +X!Y9/ +X!Y01#'#7356654#72TTPZ;i人k]#(W7H?{,r//а/@ /?O]9а// а /@? O _ o  ]а/@ /?O] а/ +X!Y  +X!Y01#'#%37#".#"'4632325TTYEX/>Y +X!Y013!#!A6i6e a/]а/@ /?O_]  +X!Y в9/а/@ /?O_]/01#"&533265'3#Ɨ6vnlv|A7]ss]NTWK h/а/@ /?O_]  +X!Y а /а/а/9/ +X!Y +X!Y01#"&53326556654H}~5sjgs`Vyj[qq[MQUIY+3,4+M>/^xEX / >Y01A!EX / >Y 01}"EX/>Y01k#EX/>Y01B$EX/>Y01P%EX/>Yа!01Nl&EX / >Y01P 9EX / >YEX/>Y 9  +X!Y +X!Y 901#"$554$32#&&#"3 ܪ 6 Ø=K9QѨкB̫"H#$9EX / >YEX/>Y  +X!Y +X!Y01#"$554$32'4&#" 65  6,L;L2ҸGά2#b $%9EX / >YEX/>Y# 9#/# 9  +X!Y +X!Y#  +X!Y01%#"$554$32#&&#"3267!5!3٤ 6ɔ ,CKfT&Jı̽%òW=7 %H&'9EX/>YEX/>Y +X!Y! +X!Y01#"$554$ 4&#" 65+'an D 6.W# +L1Q7͸=Ϯ1 H9EX/>YEX/>Y  +X!Y  +X!Y013!2#!2$754$'0лI;z"L%FA9EX/>YEX/>Y9/ +X!Y901!#5%3F6G5 [ 9EX/>YEX/>Y +X!Y99  +X!Y 9901!!56654&#"#46632! DRT6x~d` "KTȝplaYJU 9 /EX/>Y +X!Y9 9/  +X!Y +X!Y01!5!#"'73254&##5hO;JW6<'ӟg-\> ]9 /EX / >YEX/>YEX/>Y +X!Yа в 9 в 901%3##!53!6QL@56I$j'\ec 9/EX/>Y +X!Y9/9 +X!Y +X!Y9901!!6632#"'73254&#"T:KHuάs4?6T?ךr.jӻ26C %~/]а/@ /?O_]  +X!Y а /а/а//]а/ +X!Y" +X!Y%01#"&5332657#".#"'46323265xz6ld_o8XC .M"->0YB /K#,?_vw^PUWN>R: 3. =M9:0_9/а/а/01#366rv 9EX / >YEX / >YEX/>YEX/>Y   +X!Y 9//]_]] +X!Y +X!Y +X!Y а  +X!Y01!!"'54663!!!!!%%"vu،^;n.䰙7#6"ڝJ-9/EX/>Y +X!Y901#!5!?qX^6cKv / 9/EX/>Y  +X!Y а /017#"'7326556: 30pwvԧ4= L.iNvMo Kb R;(ezgda+JcK:cK:: :& :#u$%9EX/>YEX/>YEX!/!>Y +X!Y9/,]\] +X!Y 9 +X!Y01%32654&'#5&&#"#66322#"'_qJ@3W5mMӺfW54KEJZe:_,[-.9%/EX/>Y +X!Y9/9 +X!Y% +X!Y012655#"&&546632#"'726754#"Όx6ߋwrsx򜈊9Y(jc\ٜjv~憍˨B3% > |{vuo"H #$9 EX / >YEX/>Y  +X!Y +X!Y01#"&'546324&&#"325o}瑎琍6s΀trЀ*F{z_6:9EX/>YEX/>Y +X!Y901#!5!7ifsy6f 9 /EX/>YEX/>YEX/>Y9 9 +X!Y +X!Y01#"&'#36632'4#"32|7-69{8ɪ+,f\uknv{dNM9EX/>YEX/>Y +X!Y99 +X!Y01%2673#"55432#&&#"2 6ά6!*#+Ϋ"dc 9/EX/>YEX / >YEX/>Y 9  9 +X!Y +X!Y014323#'#"3267!"dz:648{8ȩ.]('nm^d/xsdLN) *+9 &EX/>YEX/>YEX / >YEX/>Y 9  +X!Y9  +X!Y& +X!Y0143273#"&'732675#"3267!"dz:.ܽN>:x7˧)X('om% /?˹_a/}vZ N E!"9 EX/>YEX / >Y +X!Y +X!Y01466 #"&&5732554&&#"Zz|zمz6mwnv25`Np 9EX/>YEX / >YEX/>YEX/>Y9 9 +X!Y +X!Y01#"&'#36632'4#"32}46* 47ɫ**gV`vp| d`Nm 9EX/>YEX/>YEX / >YEX/>Y 9 9 +X!Y +X!Y0143273##"'73267&&#"dy916:y8Ŭ./1mi&H[b#xsWN l !"9 EX / >YEX/>Y 9//?]  +X!Y +X!Y 9  +X!Y01"&&'546632!3267"!54&1~y|os]KOOM|=G*-!yLN( )*9 &EX/>YEX/>YEX / >YEX/>Y 9  +X!Y 9  +X!Y& +X!Y013273#"&'732675#"'73267!"y۽z:.ܽLD:x 6)X馺+om6?˹_a ,}vc)6w789а3EX / >YEX/>YEX/>Y 9 9 +X!Y# 9. 9 4 +X!Y01"&54677&&54632653#''267'7654&#"Uq]jJytYl7~IpId\_U=RNt}l]\qRRDj@l~d}Bb6OHDFxLi<}NU\kIci` a9EX / >YEX/>Y 9 / +X!Yа +X!Yаа  а а01!!573%VJ6vw(6393Ww9EX / >YEX/>YEX/>Y 9|/ +X!Y +X!Y 9/ +X!Y   +X!Y 901!!!!#!!!v#8BYPzX@6Z6Fi Y9EX/>YEX / >Y 9/ 9/ +X!Y  +X!Y013!###32654&'666򦺷°sȒr% )j*+9а&EX/>YEX/>Y99 +X!Y#9$9& +X!Y01#"'#7&54663273&#"%4'3265yu،xd8xu،c8|EpHfi ڭ[r7ހfh|RN9EX / >YEX/>YEX/>YEX/>Y 9/] +X!Y 9/ +X!Yа аа01##!##5353!533!!\66\\66\Yg&g6 K4[9EX / >YEX/>YEX/>YEX / >Y +X!Y 9 901"'732655#336: 30pw666K4Y30=< 9EX/>YEX/>Y9/_]]]]/]q +X!Yа +X!Y +X!Y013#53!2!!254&'!!檪 S6k6߳ܤmL < 9EX/>YEX/>Y9/_]]]]/]q +X!Yа +X!Y +X!Y013#53!2!!254&'!!檪 S6k6߳ܤmL v9/EX/>YEX / >YEX/>Y/]]9/ +X!Y 9 +X!Yа01!6632#&&#"##5353!j5}6$66j=~>ĮǝK67X9EX / >YEX/>Y 9/ +X!Yаа  +X!Y а 01##!5!!5!!3x6ZOO666 &t^9EX/>YEX/>YEX/>Yа/ +X!Y9/ +X!Y  +X!Yааа013#!!327#"&'#53#53%OKX,? !Ptf^76sn 3 ~6S7$!?&%D?EX/>Y 01!?&%u? / 01!,&%?EX/>Y01!&%N /01!&%j?EX/>Yܰ01!S&%I? /ܰ01!&%D&'y>?&)D?EX/>Y 01>?&)u? /01>,&)?EX/>Y01>&)j?EX/>Yܰ01:8?&-D?EX/>Y01?&-uf? /01 ,&-{?EX/>Y01%&-jK?EX/>Y ܰ01&2EN / 01T&3D<TEX / >Y!01T&3uT /"01A&3TEX / >Y$01#&3c /#01&3jTEX / >Y'ܰ001?&9DQ?EX/>Y01?&9u? /01,&9'?EX/>Y01&9j?EX/>Yܰ 01!4&=u4 / 01\&EDEX/>Y,01\&Eu /-01\&EEX/>Y/01\&E /.01\&EjEX/>Y2ܰ;01\&E& /0ܰ501\A&EaDN&GypW&IDEX / >Y#01W&Iu /$01W&IEX / >Y&01W&IjuEX / >Y)ܰ201&DjEX/>Y01&u+ /01&@EX/>Y01&jEX/>Y ܰ01&R /01Z &SDEX/>Y"01Z &Su /#01Z &SEX/>Y%01Z &S /$01Z &SjuEX/>Y(ܰ101&YDEX / >Y01&Yu /01&YEX / >Y01&YjEX / >Yܰ$01+K&]ua /01+K&]jEEX/>Yܰ#01!&%pJ / 01\&Ep /+01!&%D /01\&E /.01!uy9EX/>YEX / >YEX/>YEX/>Y  +X!Yа/9/ +X!Y901327#"&547!#!!pL]958FCP7;!PWk4_&0,ILmM9\uN,89:9.EX/>YEX(/(>YEX/>YEX/>Yа/9 9 // ? ] +X!Y 9@ ,<](# +X!Y- +X!Y 1 +X!Y01%&5#"&54$7!54&#"'4632327#"&54%267#"f@ތ  6訯pL]958FCP7{dHzhrp@ Wk4_&0,ILq{\KpcT&'uT /!01a&Gu} /01A&'TEX / >Y#01a&GEX/>Y 01&'TEX / >Y&01a&GPEX/>Y#01;&'Y /#01a&G / 01&&(D /01z&H>&)pJ / 01W&Ip /"01>&)D /01W&I /%01>&)?EX/>Y01W&IdEX / >Y)01u>9EX/>YEX/>YEX/>YEX/>Y9/_]]/]] +X!Y +X!Yа  +X!Y +X!Y01!!#327#"&547!!!!&@;pL]958FCP vd6Wk4_&0,ILn6WN*3 459 +EX / >YEX$/$>YEX/>Y/ 9////?/]  +X!Y +X!Y 9 9$ +X!Y + +X!Y01"&&5546632!3267327#"&547"!54&&1|x|orm;&'5pL]958FCPg@X]-9;IL8'Wk4_&0,ILRg, ni>&&)D /01W&I /&01A&+-TEX / >Y%01yL&KEX/>Y.01'&+Y /&01yL&K /-01&+TEX / >Y*01yL&KdEX/>Y101_&+*yL6&K3 /.01,&,:?EX/>Y01+&LG> /01U&-|N /01&A /01+&-ppJ /01&p5 /01"&-bD /01&' /016uG&-u&MD&-9?EX/>Y 01&-.K&MNZ&.!EX/>Y01cK&@EX/>Y01&/y&O&0uB /01|&Pu0| /01i&0{4xi&P4&0;EX / >Y01&P/01&0&P?&2u0? / 01&Ru /01i&24iN&RL4&&2IDEX/>Y01&R /01&RN&3p_ / 01Z &Sp /!01'&3Y /#01Z &S /$01T&3ZT /"ܰ$01Z &S /#ܰ%01?&6u? /01&Vu /01i&6h4irN&V=&&6D /01&V /01`gT&7uT /,01l}&WuZ /(01`gA&7TEX / >Y,01l}&WnEX/>Y(01`Dg&7ylI}N&WyM`Ug&7 lZ}N&W %`g;&7YEX / >Y.01l}&Ws /*017_&8n*&_<^&X*7M&8y&M_^&Xy7&8< / 01&>&X,&9(N /01&Y /01&9pJ /01&Yp /01&9D /01&Y /01S&9? /ܰ01&Y) /ܰ01?&9o? /ܰ01&Y /ܰ01!c"#9EX/>YEX/>YEX/>YEX/>Y9  +X!Y +X!Y01327#"&547#"'3 65opL]958FCPDF6%6Wk4_&0,ILZu(u:"y#$9EX/>YEX / >YEX / >YEX/>YEX/>Y  +X!Yа/ 9 +X!Y01!327#"&5475#"&'332673pL]958FCP067Wk4_&0,ILpZiE=,&; ?EX/>Y01S&[mEX/>Y01!!&=4EX/>Y 01+K&]uEX/>Y01!&=j4EX/>Yܰ01^j?&>u?EX/>Y 01W&^uX / 01^j&>?EX/>Y01W&^+EX/>Y01^j&&>DEX/>Y01W&^q /012?&u%? /01]y&u /E01}&u"}EX/>Y,01Wo &uXEX/>Y001 &/'~e/]q/]q]q]_]01 &/'~e/]q/]q]q]_]01.&'n ]01&2DEX/>Y01&2ul /01&2EX/>Y01&2* /01&2jPEX/>Yܰ01/&2 /ܰ01]&2zF&0y&(DEX/>Y 01&(un /01&(EX/>Y01&(jREX/>Yܰ01&DEX/>Y01&u@ /01&UEX/>Y01&j%EX/>Y ܰ014&* / 01r%&DEX / >Y01r%&u /01r%&EX / >Y!01r%&* / 01r%&jEX / >Y$ܰ-01&DEX / >Y01&u /01&EX / >Y01&jEX / >Yܰ#01&ue / 01&2pu& / 01&2g /01u"y9EX/>YEX / >YEX/>YEX/>Y  +X!Yа/9/ +X!Y901#327#"&547!#!'0pL]958FCP;7sWk4_&0,ILpO@Az&0u /01z&0EX / >Y 01z&0tEX / >Y#01z&0 / 01 &/o /01&(pw& / 01&(i /01&(AEX/>Y01u9EX/>YEX/>YEX/>YEX/>Y9/_]/]] +X!Y +X!Yа  +X!Y +X!Y01!!#327#"&547!!!!N0pL]958FCPy;nC6Wk4_&0,ILn7#&( /01&EX / >Y%01& /$01&EX / >Y(01^&y)+&EX/>Y01/&V* /01&pJ& /01&< EX/>Y01u!&&EX/>Y 01K&rEX/>Y01e$&"0`&u# /01g`&#2`&7EX / >Y01`&n4&u / 01g4&y24& /01r%&p& /01r%& / 01r%& /ܰ!01&uc /01g&2&| /01R&uyEX/>Y'01R&EX/>Y)01RH&ymR& EX/>Y*01._&*.& / 01.M&y[&* /01&p& /01& /01/&; /ܰ01&  /ܰ01$c%&9EX/>YEX/>YEX/>YEX/>Y9  +X!Y  +X!Y013327#"&547#"&53267{gpL]958FCP055ꉰ*Wk4_&0,IL_| Ϲ딵 4&EX/>Y01&yEX / >Y01&jIEX / >Yܰ01P&uf / 01P&9EX/>Y01P& /01!)&%T>+&)|`+&,z&&&-)&3DR)&=dz0)&Xb&EX / >Yܰа"01!%e&>)^j>,&-/123e478!=6<%&-jK?EX/>Y ܰ01!&=j4EX/>Yܰ01z}&r /*01t&( /)01`&C /01&ƙ /01b&(EX/>Y ܰа (01:Z NS`:v+:Z&]$B!g"#9EX/>YEX/>YEX/>YEX/>Y9  +X!Y9 +X!Y0123327#"&''#'&&#"'6r|P,j?sA4;' 06K*7w;&F6, BXV/_2 @Ro6O?84 &jEX / >Yܰ01&jBEX/>Yܰ%01Z &S8 /#01& /01&g /)01>&)j?EX/>Yܰ01?&u? /01`g)o *+9EX / >YEX/>Y 9в 9  +X!Y +X!Yв$ 9' +X!Y014&&$&&54$32#4&#"#"&&533260WX ׌z6n|䎞6 ׿]]chjdm|ի{Qgn\i„Ư&-%&-jK?EX/>Y ܰ01Z.,&/u /01!&D /01!%e&>)&5D / 011,3e4'786<\NEWNI& / 01Z NS`NTaNM9EX/>YEX/>Y +X!Y99 +X!Y01%2673#"55432#&&#" 6ɬ6"&$&Ϋ#+K:]7:\W&IjuEX / >Y)ܰ2016&u /01l}NW M&jEX/>Y ܰ01qKN&uu /01+K&]\ /01=?&;D6?EX/>Y01S&[DEX/>Y01=?&;u? /01S&[uY /01=&;j?EX/>Yܰ#01S&[j=EX/>Yܰ!01!4&=D4EX/>Y 01+K&]DEX/>Y01b b&cK&E /01M?&1u? /01&Qu /'01!&%:\N&E>?&)D?EX/>Y 01?&Dx?EX/>Y 01W&IDEX / >Y#01&DEX/>Y 01a:#&BEX / >Yܰ01&EX/>Yܰ01ZKN&S]gK &3]TdQ_&PmRN&P'Q&'PaQN&GPR!=+a:&-&DEX / >Y01&\EX / >Y01&-!&%D /01\&E /.01!&%j?EX/>Yܰ01\&EjEX/>Y2ܰ;012]yN>&)D /01W&I /%01/&XjEX/>Y)ܰ201WNW&juEX/>Y'ܰ001&j?EX / >Yܰ&01&jEEX / >Yܰ&01d_&jTEX / >Y1ܰ:01m&j6EX / >Y/ܰ801&pCJ / 01&p / 01&j?EX/>Yܰ01&jiEX/>Yܰ01&3jTEX / >Y'ܰ001Z &SjuEX/>Y(ܰ101W N&j:EX / >Y+ܰ401W &jmEX/>Y)ܰ201&jUEX/>Y)ܰ201z&jaEX/>Y%ܰ.01!&pJ /01+K&]pj /01!&j?EX/>Yܰ"01+K&]jEEX/>Yܰ#01!?&<?EX/>Yܰ01+K&]EX/>Yܰ01j&j?EX / >Yܰ"01u&j/EX / >Yܰ&01&'-j?EX / >Yܰ(01#&'8jbEX / >Yܰ(01zH!&%\N&E7!&%h / 01\g&E( /+01!q&%7AEX/>Yܰ01\ 1&E7EX/>Y.ܰ401!q&%8AEX/>Y ܰ01\1&E8EX/>Y.ܰ301!&%9TEX/>Y ܰ01\/&E9EX/>Y,ܰ?01!&%:6EX/>Y ܰ01\&E:EX/>Y,ܰ501!,&%'?EX/>Y01\&E'7EX/>Y-01!&%<T /ܰ01\y&E< /.ܰ901!&%4T /ܰ01\y&E4 /.ܰ901!0&%=I /ܰ01\&E= /.ܰ901!&%OQ /ܰ01\&EO /.ܰ901!&%'DEX/>Y01\&E'7EX/>Y.01>&) WN&Iq>&)h / 01Wf&Iu' /"01>&)N /01W&I /%01>q&)7AEX/>Yܰ01W0&I7EX / >Y%ܰ+01>q&)8AEX/>Yܰ01W0&I8EX / >Y#ܰ*01Y&)9TEX/>Yܰ01W%&I9EX / >Y#ܰ601>&):6EX/>Yܰ01W&I:EX / >Y#ܰ,01>,&)'? EX/>Y01W&I'qEX / >Y&01&-Jh /01P& /01?&-H &M &3Z N&Ss&3} / 01Z e&Su& /!01&375VEX / >Y#ܰ)01Z 0&S7EX/>Y$ܰ*01&38 VEX / >Y#ܰ(01Z 0&S8EX/>Y$ܰ)01&39iEX / >Y!ܰ'01Z%&S9EX/>Y"ܰ(01&3:KEX / >Y!ܰ*01Z &S:EX/>Y"ܰ+01A&3'TEX / >Y$01Z &S'sEX/>Y#01I&u0IEX / >Y*01W&uEX/>Y*01I&DnIEX / >Y)01W&DEX/>Y)01&rEX / >Y(01We&&EX/>Y(01&EXEX / >Y+01W& EX/>Y+01&W&&9:&Y>&9h /01h&Y) /01?&u?EX/>Y01&uEX/>Y01?&D1?EX/>Y01&DEX/>Y01&hEX/>Y01P&EX/>Y01&NEX/>Y01&EX/>Y01&&l!&= +K:&] c!&=]EX/>Y 01+Kh&]E) /01!&=C / 01+K&]v /01z.W&H''0Cd !]/!]017&8P(:&P=j&PGu:&P^&PB6:&P+ /c&LP[DN&MPL&?t9 EX/>YEX / >Y 9/ +X!Y 9/ а а +X!Y  +X!Y01!!!#5353!!2654&'q}U6zqϸ6)X&?t9 EX/>YEX / >Y 9/ +X!Y 9/ а а +X!Y  +X!Y01!!!#5353!!2654&'q}U6zqϸ6)XS R9EX/>YEX/>Y 9 / +X!Yа а  +X!Y01!##53!!!Y6nn^%666: R9EX/>YEX/>Y 9 / +X!Yа а  +X!Y01!##53!!!O6m67A 9EX/>YEX/>YEX/>YEX/>Y9|/ +X!Y9/ +X!Y а в901###533!!33#66(jG|G9Q6)6*&+u9/EX/>YEX/>YEX/>Y9|/ +X!Y9/ +X!Y а в901###5353!!33#66G F)66o!T 9EX/>YEX / >YEX/>Y 9/б +X!Yв  901!#'!5333336H B.)6LL+a:] 9EX / >YEX/>YEX/>YEX/>Yа +X!Yв 901%!#'!533733 6t:N67M:r[6U6k9EX / >YEX/>YEX/>YEX/>Y 9|/ +X!Yаа а 01####53333CA DD -C6aY7:m 9EX / >YEX/>YEX/>YEX/>Y9|/ +X!Y9а в 901####53333}CC|DZYD6  tN!N&*'hnGiff@ugRF xgT&+uT /%01yL&Ku /,01?&2Dn?EX/>Y 01&RDEX/>Y01!-&%?EX/>Y ܰ01\&EaEX/>Y,ܰ001>-&)?EX/>Y ܰ01W&IWEX / >Y#ܰ'01c-&-,?EX/>Yܰ 01(|&EX/>Yܰ 01B&3TEX / >Y!ܰ%01Z &SWEX/>Y"ܰ&01-&6~?EX/>Yܰ01&VEX / >Yܰ01-&9?EX/>Yܰ01&YdEX / >Yܰ01)&d*e&&l &F&( z&Hi&(X4z_&H_*&, &Lx &/u /01?&Ouz?/ܲ]01]&/n]01a&OBr@ 0@P`p ]01&0  &P &1 N&Q &2 N&R~ &35r /+ܰ801e?&4u? /01`&Tu /!01&6 N&V`g&7l}N&W<7&8&<^&X&95] /ܰ(01#&:N / 01+&Z] / 01#&: +:&Z% =&; S:&[= ^j&> W:&^W &3Fq&2 &(<g &<=&<%/& M]8&<b_& 21(P+$=4r%..&j%EX/>Y ܰ01&jIEX / >Yܰ01&(jREX/>Yܰ01w&uU /01R&j%EX/>Y ܰ01K"$&u` /01&n /0121w(:& / 01=+r%z0..VP+),-9EX / >YEX/>YEX/>YEX/>Y  +X!Y( 9|(/(9& +X!Y&(9  +X!Y& 9014&#"#4632#.5332654&##5366t6srڽ6rl6ݣǷǞ`}sf 3⒰_Vb~x6~af9/EX/>YEX / >YEX/>YEX/>Y 9| / +X!Y +XY01##!#3!33a666666`&1zRj 9EX/>YEX/>YEX/>YEX/>Y9 +X!Y +X!Y901#&5546632#&&#"3 պ6rЇ6ı޴c'fa袗´ɶAQ&P{:&p& / 01&p|& /01r&&sur%&uuRY&*$4&D4&uu4&jY&D!u&%`\uN&E>&)M WyN&Iu&2 }&(:& VaaaaaNs*YC]=eEr  y & v  [ y  d G "|7_z Nt@x3GZ,v M9t?m n ! !c!!"Q"}""##a#m###$($$%\%&&'o'(?()+)))*M**+@+,z,---.d.//F//0 00H0h0011X111122F2b222232334 4R45 5h56U67778U899?9: :`:;;~;<<|<=P=>%>? ?v?@`@@AMABBBCC[CDDRDDE6EEFOFG+GH H6HHIkIIJ8JJJK(KKL8LyLMM~MN-NOOOPXPQ1QrQR3RS$SSTUTUDUV/VWKWX|XY^YYZVZ[\Q\]Y]]^Q^k^^^_```:``araab'bbbbbc cccd dd%dtde%ef(fffggkgwggh%hghi]ijjj(jjjjjk k}klsHsSssssstttBttu u(u8u[v3vPvovvvwnx&xxyzz{D{|.||}}~~]wŀ9bĂA/Xd҄/ʅVنT$yi5/>ȏ8X2;} zڕCu7i˘3p bћCɜ\ݝgÝϞ [wϡ$ĢcsݤBRd{LpPwGwȶжضeٸ5f͹ \Ȼ2%n8|^-?Vh,C[m„–­¿/AXjÁÓêý,CTkăĕĬľ'>Vhőţŵ3/F]oǁǓǟDZȏ#5G^uɇəɰ 2DVhzʅʐʧʳʿ)5AVfr~ːˢˮ˺%7J]ó̙̫̼̍ %1=Teq}͉͕ͧͳ 2EXkCZqψϞ϶ $5GYpЇЬ !3J]iuьўѵ #5L^u҇ҟҶ +ӚӬ6Ԯ #5G^iՖբճտ"4GYev֍ְ֤&9L׵ "3>JVbnz؆ءةرع )ASewو٢٪ٲٺ2Jasڅڗگ7?W_gyۋۓۣۛ۫۽ '/܂܊ܒܩܻ%>aAz]WI1UVRL'B-Q6].\d"!F-JUQp-h_baacX;& mab,aa(z`+u:8(8Az{MaAp"aa,8!"+$9mGpTW#+TaW ,z$$\98bq`;'`^ (R9P67u-b- L"9,aQ8zzbc675??zL1!,?rh@k'A-M":,MP)) \0P=P=,mM@e@M,/@d`M/fAuR{}7ds\l\jAA]|~c(G<( aH!(<9:x(rNo sj}j9AaevLj D }B+B+BkBkBB]l)V5\V^UXEH\gpP.94 .R{q%r\KR# r P7Wrr4uz,#<?.*;(++V4# .I.nsUP(g+ORrDa..I.a_+Vr#((PA}kBPN+l4Zz<uz("Krre]^A}kBPN8^d>ker.Jca=aiaaoaba;azagaaa+cc(_6_&d_dbdgZ__dWcyrN_=Z<Z<7&!!!!!!!/:TTTTTUUUU!9\9\9\9\9\9\9\aWWWWagZgZgZgZgZaaaa++!9\!9\!9\/a/a/a/a<zWWWWW~cy~cy~cy~cya6{ceZc!!x!<!aaaaTgZTgZTgZ<<i<`l`l`l`l`l7&7&7&UaUaUaUaUaUa?=S!+!^W^W^W2]TaW."""""""uzrrrrr"""uzuzuzuzK\rrr{{{RRRR...94PPP!T`zh+R=05!^T7!6!}zbta51<gZa+751gZ1b`eZ!!bT/769\WagZaa+7Wclq+?=S?=S?=S!+T c@M,!9\WaV#9Z &d m/a!+&!9\!9\2]WWW&d maaTgZTWTW-Az!+!+!+-+upaz!9\!9\!9\!9\!9\!9\!9\!9\!9\!9\!9\!9\WWWWWWWWTgZTgZTgZTgZTgZTgZTgZbWbWbWbWbWUaUaUmUmUmUmUm!+!+!+z7(-+ubc a&&bSc(+!+67bt!mauagaRauxug~cya!9\Wc(TgZ<Uaa<az<aza!,aTa<`l7&U#+#+?=S^W"&%X]b"(P\r%..RK\ "(r%uz..+Vuza WrrR949494!9\W"l &$@ Y33fP [ GOOG@f :                  nt ~%'0S_g~7Y #%/EOboy?M    " ' 0 3 : < D t  !!!!"!&!.!^"""""""+"H"`"e% &(1T`h7Y #&0FPcpz>M    % 0 2 9 < D t  !!!!"!&!.!["""""""+"H"`"d%eD# (%^S~|}rsolkiaYP!ߔyMߪެߞߝߖߓ߇kTQ 222tt~lt0Rb{z|  }~+,-.   ()*+,-./012345678wxLM}~NOPQRSTUyzVWXYZ{|[\]^_opv   ~xcyo{z%&&''|(01127889@ABCIJKLQRST_`a befg}h~+ 77YY  ##      "#$%%&/0014556899:=>>??@ABBCCDDEEFOPPQQRRSSTTUXY[\\]]^^_abbco pqruvwxxyyz(,159wCL}NyVXY{[_`o>?pMM r }         " % ' 0 0 2 3 9 : < < D D t t      v    !!!!!!!"!"!&!&!.!.![!^"""""""""""""+"+"H"H"`"`"d"e%%,K PXYD _^-, EiD`-,*!-, F%FRX#Y Id F had%F hadRX#eY/ SXi TX!@Yi TX!@eYY:-, F%FRX#Y F jad%F jadRX#Y/-,K &PXQXD@DY!! EPXD!YY-, EiD` E}iD`-,*-,K &SX@Y &SX#!#Y &SX#!#Y &SX#!#Y &SX#!@#Y &SX%EPX#!#!%E#!#!Y!YD- ,KSXED!!Y- ,"E- ,#E- ,' SX@cTX"pY#SX TX"pYYY- ,@ ZX#D#DY- +++ѫ_8+k8+w\:#+v`K6+fTA/++ E}iD sP t tp u?s_ss/tOtottttu?u_uusousst_tttt?u/sos? s*60N`o`9 ! :[ ^ ^ t ^ ^ &  @    & \D T   Copyright 2011 Google Inc. All Rights Reserved.Roboto ThinRegularVersion 2.137; 2017Roboto-ThinRoboto is a trademark of Google.GoogleGoogle.comChristian RobertsonLicensed under the Apache License, Version 2.0http://www.apache.org/licenses/LICENSE-2.0RobotoThinjd(Y%>E^yy  "$%*+3466;<ADGHKMQQTX]^bbddhhjlnnpp  ((++--/2^bz|  ,$%&'y 2LDFLTcyrlgreklatncpspkern $H %&'()*+,-./0123456789:;<=>eg/3579;ACEIKLXYz{}   "$%')+- }  :44^67497zd88788898D  89X9469 F7\8f5 8:8:8:78f8|9v&5<9v@8f956969v8:xjp55!8"`#^4%885B888&585(@)))*5+n5<3F+-r8f11:3$3$8f2p23$3$3$679X9v3F8f5545<777845<889545<43p444:44`:499:9999949499998666666647z7z7z7z888889999967\7\7\7\7\7\7\55558:777779v9v67\67\67\444497z57z57z57z57z588:888887888888:88:88:8:9797978|8|8|888969v6999:::9999999:::::999:94444::::67z8896677z98878898D864868:79v77z588775B6757z8898D4847\578f9v5<559v99969v44488:67\7z59X9v469v845<867\67\7z55545<9778f5B9v5B9v5B9v67\67\67\67\67\67\67\67\67\67\67\67\7z57z57z57z57z57z57z57z58897979797979797769v69v69v8558:557688:67\7z8978|78f9988:77888:88:98D8f8|89X9v9X9v9999:99:99:: %*,- /6 88:?EFIJLL OO!QT"VV&XX'Z](__,-./0589;=@HITdehjm  p  qr""u.0v35y77|99};;~CDTTVVXX\^//22EFIIz{}}  "%''))/8CGMOTTeimoxx!"(89:;<>@GJPRVXYZ^deghrt  xz{FHHJW__puww{| 89Ew:;= "$prt %V.8EGHIKSUVYZ]VV V"9BE`ak2VVVVVVVVVV#2345678MNOVVVVVV V V!"V#$V%&V'(V)*V+,V-.V/0V12V34V579;=?ACEKMOQSUWY[]_acegikmoqsuwV38:;=9E2 "$2345678MNOprtw8:=9E"$prtw.9bdM  AGHIKUa"B`ak79;=?ACEY[]a@GHIKU"B`ak79;=?ACEY[]aS KMOQSUW_.9bd  Z]#qsu?'+35 !AjEFGH-  JLNPRTVXZ\^`@'+35!AjEFGH-  JLNPRTVXZ\^`8%<= 3C]"$ "$&(*,.024prt(%  "$&(*,.024GHIKQRSTUYZ]"+6<>BSUW\`ak#  79;=?ACEKMOQSUWY[]_acegikmoqsu|| GHIKUYZ]"B`ak#79;=?ACEY[]acegikmoqsu< JYZ] #cegikmoqsuAGHIKU"B`ak79;=?ACEY[]a:m  GHIJ KSUZ ]  "B`ak        02  # 23456789CDEFGL MNOPQRSZ[\]mnostuvx               79;=?ACEKMOQSUWY[]_aq s u       \^4D^&(* \^4D^&(*"Z\]^4D^#&(*qsu 8:<=QRTZ\]  +3469:<>CDEGISUW\]^bcdlm"#$ pqrstuwy|(8Z]  9:ELcm#qsuw?8:<=\349:CDEGI]^bdlm"$prtwy%'+358:= !9AEGHIJMPQXbdfjlnopEFGH"$-   "$&(*,.024JLNPRTVXZ\^`prtwyz58:<=39CEP]bdflo"$prtwj%8:<=  39:CEGHIJLPQ]bdflmop"$     "$&(*,.024prtwyz18<=39CEPQ]flop"$prtw$8<39CEPQ]fopw8=9E"$prtw9QRT\  +46:<>DSUW\^m |# Z] :m#qsu :HJmzvGHIKSU"B`ak09CDEFGPQRSZ[\]mno 79;=?ACEKMOQSUWY[]_a EGHIJ KSUZ ]   "BQ`ac e kp        02  # 23456789CDEFGL MNOPQRSZ[\]mnostuvx               !#%')+-/13579;=?ACEKMOQSUWY[]_aq s u        :HJQmpzMG H I K U :   " :B HJQ` a k mp                               7 9 ; = ? A C E Y [ ] a z   "Z\]4DQ^p#qsu    :PJcemL  (L O P SW[     KMOQSUW_   LxLx[  AaM:JLMXb d mn0.08@JM_il :ILbdlm/Vm[m|}+KaFRIh < .0<8:j@IJ L?MX_c1e_i lm0n AJVXam| 0#X[:IQJ{LMXbudlOm  :cemJ[   :cm l[  :JXcemn0[T0IJLbdlX_:mJX2[3V[m|(M~gejs^t}y}  .08}:@J|LMlX_kcei{lmn0 AVa0J  A Va0[0l0  n&% x -&~| v8{q?;QyVD3DK>,r'jzb m %),4 8>EGIILLQTVV"ZZ#\^$'()-./02347>?@ABD  F  GH.0K35N77Q99R;;SCDTTTVVVWXXX\^Y\cefgilm//p22qEFrIItz{u}}wx  "*/8CGMOTTeimoxx  "#$%&(25;BDEFJPQS_a  eghFoHHJW__bbddpuww{|u !!%%&&''(()).. // 0033448899 ::;;<<== >>EEFFGGIILLQRSSTTVVZZ \\]] ^^"  %      ..//"00334455 77 99 CCDDXX\\]]^^!!!# $ // 22EEFFIIz{}}             "" ## $$ %%&&''(())**/0 11#28CG MOTT eefi$mo xx#     "  %"           % % %   !!""##$$%%&&''(())**++,,--..//00112233445566778899::;;<<==>>??@@AABBCCDDEEJJKKLLMMNNOOPPQQRRSSTTUUVVWW__bb dd pp qq rr ss tt uu ww{{"|| "        # ##       " !   !$     #         $    #"      " " " !   !        bDFLTcyrlgreklatnH .AZE CRT FRA ZMOL NAV ROM TRK      c2scccmpdligdnomfracligaligaligalnumloclloclloclnumronumpnumsmcpss01ss02ss03 ss04ss05ss06ss07$tnum*        60nL`tflq210/(sutvrwQ    ;/0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwyxz{|}~    %&'()*+,-./0123456789:;<=>eg/3579;ACEIKLXYz{}   "$%')+- } q210/(cs0ut/rwQ    ;v123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abdefghijklmnopqrstuvwyxz{|}~    EFGHIJKLMNOPQRSTUVWXYZ[\]^0468:<BDFJMZ|~   !#&(*,.~ *BZrMxN`H0I$'`^ab_ MNI26rJd~"<N$.8J| <Fh.8BLV( &,   &,68:  &,HF  $$*06JL   $*06bd  $prt % &,!  &,79;I  $ &,KM    &,ce  $qsu &+-,. $G $X`Z\^ $Ya[]_ $fnhjl $goikm%)+-/46;=>EIKMOTV[$]^*,-./015     OX{@JMMJPPJ*  JXXJWKo6,- .6/O EIGFHghijklm '(+35FGHKSTU nooIKj.Y]WTVUZX\[RJKLMNdeff pp  .pfLNMKRedJT] .Z\]WTVUX[YJKLMNRdefp.pfJNRRT]del &<  !"#$%& >zst?@ABCDyubioath-desktop/fonts/Roboto-ThinItalic.ttf000066400000000000000000005274001412677075700215430ustar00rootroot00000000000000 GDEFL98bGPOS;]GSUBpOS/2'd`cmapwX Fcvt .25Hfpgm_3$gasp9, glyfU',dhdmx)%/head|҃6hhea }e@$hmtx&Q8locai maxp> nameC"s6 postad9 prep+6ɼ4d( q 9 а а  а  EX/>YEX/>Y9999  9 901!!!!5!(<6 }wx^^^+k/EX/>YEX / >Y +X!Yа/01#36632#&&66%&"$!"b! /а/а 01#73#73H32/732/6l !9 EX / >YEX/>YEX/>YEX/>Y 9|/ +X!Yаа а / +X!Y а аааа01!#!7!!7!3!33!!!#!!8,9_88]f4 6aa64f K0.-./9 /EX / >YEX / >YEX"/" >YEX$/$>Y$ 9 $9  +X!Y +X!Y$!а!/($ 9$+ +X!Y016'&&'&766773#6&#"#7&&73766z 8= 754~E75Xj$\'u˙ 亩ЭV}`g3t 澫M -?CnB/@/EX/>YEX'/'>Yа/ +X!Y +X!Y' а /'3 +X!Y < +X!Y012#"&7766326776'&&#"2#"&7766326776'&&#"'pz so~ YFZ VE\eqz prz XE]XF^*u*ű|B@.GUpH,,JTkM-s}N{C-+GVlN-,ISv o ;a)4EX/>YEX/>YEX/>Y"9,9",9 ,"99999 +X!Y!92 +X!Y01&&'&6632673#'#"&7667277676&#"7, TgrЫu'7)@{ٶ:9G1 RiW#]s;arp|ׯΦeq(!(iY\Rr|~[wbU9/а/01#773:23/7Rp+W 9 //01&'&7 zҚ#{p}mjW-OmV)^T6{*V 9 //01'676'&'7x 5zox *-FGV)ZUz' 9EX/>Y/  /01%73%'JE8Kl 1+{4x6A!P! " 9 /а  +X!Y01!!#!7!3O-W6VAW75 5 9/а/а/01'6773"k6"x~~B9/ +X!Y01!7! 66+i EX / >Y +X!Y0176632#&&/%&3"$!"E9/EX/>Y01#3<^<|+g #H$%9EX / >YEX/>Y  +X!Y +X!Y01"&&7732&&#"3276rI03tH 14I }1. 6g0*rߏ`)TslfU|o/$A9EX/>YEX/>Y9/ +X!Y901!#7%36Q i:8W 9EX/>YEX/>Y +X!Yв9 +X!Y 9901!!7676&#"#6$32! 6  6ʪעװ9)r*+9EX/>YEX/>Y9|/ +X!Y 9( +X!Y(99" +X!Y0132676&#"'6$32#"&&7332676&##Y!6 {^6Ħ]ݮq.$lxվ-  W9 EX / >YEX/>Y 9/ +X!Yа в 9 9013##%77!E5DTRBWf6s\p 9EX/>YEX/>Y +X!Y9/9 +X!Y +X!Y9901!!672#"&73326'&&'&zK!6dv5_v~ܷ/vuu]&e'(9 EX/>YEX/>Y +X!Y9/9 +X!Y  +X!Y01 67632#"&&77"766'&&|P@ZyEoT<"Fuzr6V9Q~څ~çs}x&~V:9EX/>YEX/>Y +X!Y901#!7!R8@rz6*(&2t+349+а+EX/>YEX / >Y0 9|0/ +X!Y0909 $ +X!Y* +X!Y01#"&&7667&&76$326&&#"32$6&#"326~XokqOKiq>w,*~eu.+qe`\d*h+,9$EX / >YEX/>Y 9/ 9 +X!Y +X!Y # +X!Y017#"&'&672#73 %2$7676&&#L酑 yT'?|,m(Gi>6yΨ7ho6]uBu]z/+& /010+'W,A9/ +X!Y9б +X!Yб +X!Y017 n;{2y9s1 9/а/ +X!Y +X!Y01!7!!7!*N+K6366 0D9/ +X!Y9б +X!Yб +X!Y0177Z\W;2:}$`%&9EX/>YEX"/">Y +X!Yа/9  +X!Y 990167766'&&#"#66326632#&&]~iW x\#7"㗓, %&qcg[fѝoǚ."$!"J;;Hu,/5/EX/>Yв 59 / 9 +X!Y5 +X!Y,' +X!Y? +X!Y E +X!Y01"&7#"&746323267676$#"327#"$76$3 %67&'"`d_g>j< IG6 ~!o/FJ@s3;rݎf戅v2YEX/>YEX/>Y 9 / +X!Y 901!#7#!N< A9MPYt !"9аEX/>YEX/>Y9/_]]/]] +X!Y9 +X!Y +X!Y013!#!2676&#%!2676&'!Yo~sr=ƭȁg6"P#$9EX / >YEX/>Y 9  +X!Y +X!Y" 901#"&&5&7732#6&#"32$7h<e !1P 5Ļ% Ur<xOM!oٌBDoY H 9 EX/>YEX/>Y +X!Y +X!Y013!!276'&&'Y~ ڧe?m0v܉TT֨zQohY n 9EX/>YEX/>Y 9 /_ ] ]/ ] ] +X!Y +X!Y +X!Y01!!!!!!;t&\md66Z I 9EX/>YEX/>Y 9 / +X!Y +X!Y01!#!!!,|6kn46#b $%9EX / >YEX/>Y# 9#/# 9  +X!Y +X!Y#  +X!Y01%#"'&776$32#4&#"3267!7![I  (5̮ZҵMKRS]OL ྫྷH#KH7ZE V 9EX/>YEX / >YEX/>YEX/>Y 9| / +X!Y01!#!#3!3K6||}66uv5.X$9EX/>YEX/>Y013#366&*09EX/>YEX/>Y +X!Y013#"&7332676&6 z!PCkqZ Z 9EX/>YEX/>YEX/>YEX / >Y999 901#3%#^66 TB`pYm09EX/>YEX/>Y +X!Y017!!3766Z{ ` 9EX/>YEX/>YEX/>YEX/>YEX / >Y99 901 3###V5P6*6_PWYZP L 9EX/>YEX/>YEX/>YEX/>Y9901!##33V4\756VSw(H )*9 #EX / >YEX/>Y  +X!Y" +X!Y01"&&'&776$32&&#"3267760l "! l "̴/# ̴"' vMM0wTMɸҤCCIZ O9 EX/>YEX/>Y 9 / +X!Y +X!Y01#!#%!2$76&'!j6 r!wg6w,H-.9'EX/>YEX/>Y +X!Y& +X!Y01%#"&&'&776$32&&#"326776)][l "! l !%̴/# ̴"' !vMM0wTMgCCIVc9EX/>YEX/>YEX/>Y9/ +X!Y 9 +X!Y01!#!#!2676&#!l5XՕ 7ƿokz!ʝ,,f-.9EX / >YEX!/!>Y! 9 !9  +X!Y +X!Y%! 9!( +X!Y01&&$&&7>32#6&#"#"&7332$76E炁[6Ư%6ˣ,[ykm[kXpzՓzI:Yu-E̓o]ì͑yS9 9EX/>YEX/>Y +X!Yа01!#!7!6:zz6=9EX/>YEX / >YEX/>Y +X!Y01#"&&7332$7'ۋX5Ĺ#+z%8 9EX/>YEX/>YEX/>Y901%73#3 +<A9UYQR` 9EX/>YEX/>YEX/>YEX / >YEX/>Y 9 9  901%7373#'#3f<i<<I=:^baQ“F Z 9EX/>YEX / >YEX/>YEX/>Y999 9013##3k1E@CpA4D8 9EX/>YEX/>YEX/>Y901#3MDN^6`E\Sw. M 9EX/>YEX/>Y +X!Y9 +X!Y 9017!!7!7Hm66,O5% h+ 9// +X!Y +X!Y01#3!!b5J6A9/EX/>Y013#8>8j. 9// +X!Y +X!Y01!!73##H6Ln+9EX/>Y9/901#3#=3;dv(#9EX/>Y +X!Y01!7!666!%/]/а//]01#38? N* +,9 %EX/>YEX/>YEX/>Y9 9 // ? ]o  ] +X!Y 9@ ,<]  +X!Y $ +X!Y01!&7'"&76$7!76&#"'6632%67#T燈!6c U.Xngt~vD54 !c=$f %&9 /EX / >YEX/>YEX/>Y 9 9  +X!Y! +X!Y01"&'#3663276&&#"327p*6 6tKtiE 4 5}[(Yz,b]uiphz@;BYEX/>Y +X!Y99 +X!Y01%2673#"&'&77>32#6&#"#6$򡕹 ~ 6 "_`*ԥI]?#f$%9/EX/>YEX/>YEX / >Y9 9 +X!Y  +X!Y0166323#7#"&&76367&&#"ovr&r66"HvjE52{]BZ}p(ri[fiz9*na~m9N#l$%9EX / >YEX/>Y 9//?] +X!Y +X!Y 9  +X!Y01"&&77>32!7"!76'&&ʂS{  $M; 2?;TV, HHv)h9EX/>YEX/>YEX/>YEX/>Y +X!Yа  +X!Yа013#7376672&!!???0i727!LN,#-.9# EX/>YEX/>YEX / >YEX/>Y9  +X!Y99" +X!Y) +X!Y01663273#"'732677#"&&763267&&#"lvu$$6&q)g&HujE4 BX~n(ue"[diz9*s뉐?J9/EX/>YEX / >YEX/>Y 9 +X!Y016632#6'&&#3Qu| x6x sk-x6 6>yLSJFDjpёKL?9EX/>YEX/>Y а / +X!Y013#36632#&&66%&:T"$!"K K 9 EX/>YEX/>Y  +X!Yа/ +X!Y01#"'73676632#&&=&: /(f%%&:P4{T"$!"? B 9/EX/>YEX/>YEX / >Y9901#33#xL6 6SBHC81L9/EX/>Y013#3665}N)x*+9EX/>YEX/>YEX/>YEX/>YEX / >YEX/>Y +X!Y99%01!#6'&&#366326632#6'&&/5| wi*w670QvH} x5x ul^D=ahْT:{uwLSJE@joXW?NT9EX/>YEX/>YEX / >YEX/>Y 9 +X!Y016632#6'&&#3Qu| x6x sk-x66>yLSJFDjpёK:AN#E $%9 EX/>YEX/>Y +X!Y +X!Y01>32#"&&'&32676'&&#"Pndoe>8.8.2buDjcwClܻ߸`N#p $%9 EX / >YEX/>YEX/>YEX/>Y 9 9  +X!Y  +X!Y01"&'#3663276&#"327s(g66%GziE 4 (Zy-dX`uhz@;BYEX/>YEX / >YEX/>Y9 9 +X!Y +X!Y013273##"&&76367&&#"o.p($56iIuhE52{]BZ|w(%li&HYciz9*na~m?NG 9EX / >YEX/>YEX/>Y  +X!Y 901'"#36632A'{66*Dx&&Ǝ;:t -N$f%&9EX/>YEX/>Y9 +X!Y +X!Y 9" +X!Y"9016%'&76632#6&#"#"&73366$o6 ֕2栧5 O K{rvcC+Uāpo^^a9EX/>YEX/>YEX/>Yа/ +X!Y  +X!Yа013#27#"'&7#732>?Q.? 2^77DM 3 357$r:T9EX / >YEX/>YEX/>YEX/>Y9 +X!Y01!7#"&'&7332673"Gy~ u6w xj%7ba|OTOD@lwt;89EX/>YEX/>YEX/>Y901%3#3;58X;;` 9EX/>YEX/>YEX/>YEX / >YEX/>Y 9 9  901373#'#26geY@6xXw6x<42;; Z 9EX/>YEX / >YEX/>YEX/>Y 9 99 901##3E</@NEA[/ K;D9EX/>YEX/>YEX/>Y9  +X!Y01%73"'732?3 =TJ]&*3a(a9Tq 3 B0: M 9EX/>YEX/>Y +X!Y9 +X!Y 9017!!7!7@Yp66,7/>H="-#$9// 9 /  +X!Y 901&&'&776'&'76677%m}  '  v$9H #(HR& H'pHL<2Brk.1ޛ=oM4/F@M(j9/EX/>Y01#3^6 6dG<<"&"//"9/ +X!Y901$77&&'&776'&'7$3!(HR& o{  &  iX y#9whH@nM30EAK+)pMO<1LWBj3/а/ +X!Y +X!Y а01"''&#"'66723667vsafS\`7vpdoOW`^gP{]oJxHO2EX / >YEX/>Y  +X!Yа/013##"&766366<%&}"$!"i &$REX/>YEX/>Y +X!Y9 ав9 +X!Y01%2673#7&&7476773#6&#"Ɏ(6%ޠ)7)G@(7(6v" ߴu`͛yߎg4Z"v#$9EX/>YEX/>Y +X!Yв!9!/@ !!/!?!O!]" +X!Y а!в9 +X!Y01%!73677#736632#6'&&#"!j.ZZr`& 0.!顠5 h/fb66)?K6>ԯE=_lҭ6-4EX/>Yа/# +X!Y* +X!Y01%#"&''7&'&7'7632732$'&&#"mE$6u+jF%r&(,]ԍ/ 뱏XU)_iR%SP*ü믻&{X1_u9EX/>YEX / >Y 9/ 9/а/ +X!Y +X!Y ааав 9013!!!!#!7!7!7!337 ?a*{957z+e<"77F77 133p" 9/EX/>Y+013#36667G-HI9-@ /EX$/$>Y $9@ +X!Y@9 $ 9  +X!Y3$ 938 +X!Y839($ 9$, +X!Y01#"&7732676'&''&&7667&7>32#6&&#"6676'&'v`6( W {6Ek! 2R!瀩A&g5i΁oO>CDfjhVm_zE1SkXHSj( eBIb(.nZF7J%VI  / +X!Yа а/016632#"&%6632#"&(%&$%"#!""#!"}0@EX1/1>YEX9/9>Y919/ 199 /  ] 9 +X!Y +X!Y 99$ +X!Y1, +X!Y01#"&'&76632#6'&&#"26732$'.#"2#"&'&Rj "Ņ3 eTpkYr ndZxܘgt`ɬ70KRPcv|9ɖՌ@ 4(rEX/>Y)9/а/ 9 / +X!Y 9@ ,<L\l|] +X!Y # +X!Y01'7"&7667376'&&'"#6632%2677#tkwOCj7yoo6 J(! V<;t]i{E,(AG]Uh{\Y)Y@IU~;&4&9/9/ +X!Y01#!7!V64405u!8@EX/>YEX/>Y +X!Y +X!Y#9#/%9%/%%]9#%99/" +X!Y+"99#2а%@ +X!Y012#"&'&$32$6'.#"#3#&776&''36676'#{ܘu3 犔r 76傆u :GZY"ċAYkAdU>}qG2B"?$$jYS8cRg)9/ +X!Y01!7!"(g5 1EX/>Yа/  +X!Y +X!Y016632#"&73266'&&#" ]\q^`rG K6

Y а  +X!Yа  +X!Y901!!#!7!3!7!IiH6HSH5+%626 6tOEX/>YEX/ >Y +X!Yв9  +X!Y в901!7676'&#"#6632!_3-J]6nhyG,pZQR.(cYjwahw@x&kEX/>YEX/ >Y9|/ +X!Y 9& +X!Y&9 +X!Y&90136676&#"#6632"&7332676&'#^Ca\UZ~5jozMF  5 nZ_esIBTHJ[ZMax{_u?eAa}}gSa^OMW /а//]/01'D>`:^EX/>YEX / >YEX/>YEX / >YEX/>Y +X!Y 990132673#7#"&'#,n wp's63$dg4:~EH|ʲ_` $ 9EX/>YEX/>Y01!#"7633`Yf""8P0 /  +X!Y016632#&&%%"$!"MLEX/>YEX/>Y9/<L] +X!Y +X!Y01376676''7a" e~8,M$}Se1J@_ x7A9EX/>YEX/ >Y9/ +X!Y901#7%36|+ N4a_ 5EX/>Y9/ +X!Y +X!Y012#"&77663266'&&#"UfTp. gQr.ihR^4S^;1&/'' !EX/>Y01'''iEX / >Y01''! EX!/!>Y01M%VEX#/#>YEX/>Y# +X!Yа/9  +X!Y 990132673 &7667667#"&7663Hyb {b!7#П>@%&f|{qhZdΠt{1l^]"$!" 9EX/>YEX/>YEX/>Y9/ +X!Y +X!Y 9 // ]_ ] ]  +X!Y +X!Y01!!!#!!!!!!M$9CQ\R9[!;zW66Z@ E 9EX / >Y а /а/ 9 9 9а/ 901'7*#f2*G&j%k)x#z6O%0REX / >YEX/>Y+ +X!Y ! +X!Y)+!9)в!+9(01"''7&?6$327&&#"&'32760yDi(! e?D4  4Ze6]/(&j:4&o̒Y/KQepqn ąJMGiVf<vZH Y9EX/>YEX / >Y 9/ 9/ +X!Y  +X!Y01!#!#!2$76&'6c:6zU߲C7/W/EX/>YEX/>Y 99 +X!Y"9&9, +X!Y013#6632#"&'732676.7>76&'&m6"ʖy%m AC W03B CH )_ tZ fբt/UI*?vF/+/+)uC|E4^N*XkN4?I*JK9*9а*CEX/>YEX"/">YEX/>YEX/>Y"99//?]Z]] +X!Y9@ ,<L\l|]"9D"9D//D?D]D]ZD]( +X!Y0 +X!Y2"95 +X!Y: +X!Y@01"&'3#"&76$3!76'&&#"'66326632!327%267!""!76'&&r#G󅘧  ve4N~   q6>JAwo}ZA<`k}QUT @UT,4kV^n IFqU(,h-.9)EX/>YEX/>Y9/9 +X!Y" +X!Y) +X!Y01#"&&7632''7&'777&&#"327-{Q$ r/q݀ |oz+cł \Q+Ȃ2zyV0Zp27hw|}V'oD/ +X!Y +XY +X!Y +XY +X!Y01!7!6632#&&6632#&& 6-%&%&4W"$!" "$!"YEX / >Y, +X!Y! +X!Y*,!9*в!,9)0127#"''7&'&66&#"%654'327rq_r@ /h[rAQ <8APc*/ hJ^+N7z>=&0u܁q78Z6y456p*`#f $%9 /EX / >YEX/>YEX/>Y 9 9  +X!Y  +X!Y01"&'#3663276&#"327s(g6Q6tGziE 4 (Zy-dXy`uhz@;BYEX/>YEX/>Y/]]9/ +X!Y99аа! +X!Y( +X!Y01##7#"&&7676632!7!733367&&#"6"HvjE vr&Gj#6"2{]BZ}p[fiz9Uri6rna~m3s9EX/>YEX/>YEX/>YEX/>Y9/9/]а +X!Yа +X!Y а 013##!##733!3!7!ޕ6||}5@6@A6-{95.5wwXH8:EX/>YEX/>Y013#3~66:>: ] 9EX/>YEX/>YEX/>YEX / >Y9|/ +X!Y 901##33#u[77V1GC: f d9EX / >YEX/>Y 9/а +X!Yа +X!Yа а а 01%!!773fv|u7l8pY678;  H 9 /EX/>Y 9/а +X!Yааа а017#773B҈6z6UL:RQ:WZKQe9EX/>YEX/>YEX / >YEX/>YEX/>Y  +X!Y 9 901#"'732677#3Q/?1+i\642NVU=KNc 9EX/>YEX/>YEX / >YEX/>Y 9  +X!Y +X!Y016672"'732677#"#(%Eʆ~8K=2f)v6:oW!2F;ϡX:\g%&'9EX / >YEX/>YEX/>YEX/>Y +X!Y9//]_]]] +X!Y +X!Y +X!Y  +X!Y01!!&&'&77!!!!!7&mN 0/JP3mYEX/>YEX/>YEX/>Y9<9YEX/>Y  +X!Y0136672&A@>=2iɜ27N%j&'9EX/>YEX/>Y9|/  +X!Y9 +X!Y +X!Y01"&77!76'&&#"'6!2'267!}h;"꟎){|uk-һv~6#Hpd Kt !9EX/>YEX/>YEX/>YEX/>Y +X!Y  +X!Yаа +X!Y01!#"'73267#7376672&!-A1+h:D=2j2\73z+0^+129+ EX / >YEX/>Y 9/ +X!Y ! +X!Y* +X!Y01"&&'&776$32667&&#"326776Nl #  3y6"%$̴0! ̴"' vMMϼ0oWV\YټۙFFI7)^*+9EX/>YEX/>Y9/  +X!Y +X!Y% +X!Y012667#"&'&6632776'.#"ukfq7~m! Fف?* Q`4NlQU|}x#G8:h]r;V9EX/>YEX/>YEX / >Y 9/ +X!Y  +X!Y01667#"&&7332$7&s6!(ًX5Ĺ#  1z%r j!"9EX/>YEX/>YEX / >YEX/>Y 9/ +X!Y 9  +X!Y01#7#"&'&7332673667sIS7"Gy~ u6w xj%7]e dba|OTOD@lw oxK=: )EX/>YEX/>Y  +X!Y01#"'73267=/?/,g:y2'P$o%&9EX/>YEX / >Y 9/] +X!Y 9  +X!Y +X!Y01#"&&77776'&&'&'6267!;e_ *tH  {є*=( Ndr><)qzS@OS,fIo;///а/а/@ /?]901'#7%3BA( ( '/]а//]9а/0173#'77697 g)p< 5/]а/@ /?]  +X!Y а /01#"&733267<sx 5 e^_rm_ab^>  / +X!Y016632#&&!%&w"$!"S , / ]а/ +X!Y  +X!Y016632#"&732676'&&#" rBFQ oGBWAK5K 1"BTfLbiFEdbGE.#'mu& //  +X!Yа/<]017#"&7677R|$+0C >@DA D;\])4'1+TAjn1L9/а/ а / +X!Y +X!Y01#".#"#66323267LkF*=9<'i#7jJ)?7='4IVc'/&{Nd(,'F;wM 9/]а/]/а/а//013'3' WK2RG-%9 49/а/] а /0 ]а016632#"&266&#",[03GZ05E| 2 $ 3 &3DJ/1BE $0$%2!/]а//]01#37? Gn/а//]01'D>M(G>2/] а / +X!Yа/ +X!Y0176676''7(kZB|  c 70Y/SF67//а/а//]а//01#3#3,IUDQ   ~^ /  +X!Y016632#&& %&"$!"K) /а//]/013#@7)FVjy9 /а/а/@ /?]  +X!Yа а/013#'6632#&&%6632#&&yRU;%&%%y"$!""$!"0xT39EX/>YEX/>Y +X!Y01!#!5Ez= 9EX/>YEX/>Y +X!Y9017!7!'@\[J -P6IQw,f-.9а'EX/>YEX/>Y9|/ +X!Y +X!Y& +X!Y01!7!"&&'&776$32&&#"326776?il "! l "̴/# ̴"' 5vMM0wTMɸҤCCI:89EX/>YEX/>YEX/>Y901#7#$<@9gPI c 9а EX/>YEX/>Y +X!Y9|/ +X!Y  +X!Y017!!!!!! oj/56665ZD@ 9EX/>YEX/>YEX/>Y +X!Y01!#!#!K6|6zTM9EX / >YEX/>Y +X!Y9   +X!Y 901!!7735!!u<X#f66,m,5d^$u%&9а"EX/>YEX/>Y9//] +X!Y в9/ +X!Y!в"901#7.76%736&&'6$6%Tp$&7&q%x#7cޗ bߔ # 3yKy҉y n] 9EX/>YEX/>YEX/>YEX / >Y 9/  +X!Y а01673#.7330%W5U)J6JZW7W"ʭ6  ` *X+,9EX/>YEX/>YEX)/)>Y' +X!Yааа  +X!Y01%67654&&#"!7%&&7632%!.$UoC{ ZdRВbm{eMZ{eXNX@]|ld;EN6;~+@+tlj6\N-s$./9$EX/>YEX/>YEX / >YEX/>Y  +X!Y 9 9#а* +X!Y01327#"'&7#"&76776327732676&#"_3/뜥 5v / (?~-:0 2 *)>;B}iʴ_c0o.129./EX/>YEX/>Y.9./+ +X!Y+.99 +X!Y% +X!Y012#"&'#77666&#"32676&##7326hHjd8so2c6w~! yWagt/^ZʠVXQ"Ҽҟcp8|a; 8 9EX/>YEX/>YEX/>Y 9013#37;H5H8O9a43 2e/349/EX/>YEX/>Y +X!Y9/. +X!Y.9& +X!Y016676&#"#"&&77677&&32776&&'&Rח~}!R(̅P$ja )EcmաkP/Gl\E0Պ*  1*US*gх p{1N,o-.9EX / >YEX)/)>Y )9|/ +X!Y9  +X!Y9)" +X!Y%"901667&&76632#6&#"!3#3267#"&&?b^ m\ 6 %"3 }7uQ"a$QL[qraB07 9+PVyRsx Z9 /EX/>YEX/>Y +X!Y99 +X!Y901'6676/$7677!7 A!ƙ jL#Ba d0 >$KͻN<7rL&!"|BO"1\G-5?`NT9EX/>YEX/>YEX/>YEX/>Y9 +X!Y01632#6'&&#"#36 un*s66Y~SSGECozԩe:)(i )*9 а &EX / >YEX/>Y 9|/  +X!Y +X!Y% +X!Y01"&&776632!76'&&#"!32rI2"sD .4E }0 6g2rߏ`'"ul`r䅃U|o/c:)EX/>YEX / >Y +X!Y0127#"'&7.Q.? :C 3 35+L9/EX / >YEX/>Y  +X!Y 9 +X!Y01637#"&'#'&#'6+W+#ES<g-j2#>3 `y82 Y,l -.9EX*/*>YEX/>YEX/>Y* +X!Y *9 /  +X!Y +X!Y$ 901&#"33#"'676''&&76767&&76$32zge"с dJ gvzgjpb-{8ѵ<(2i@v%$RgE$$D㢣q_*$b1:^9EX/>YEX / >YEX/>Y +X!Y  +X!Yааа01#27#"'&7!##7!ф>?Q-? 5 ODM 3 447`N!Y"#9 EX/>YEX/>YEX / >Y 9 +X!Y +X!Y012#"&'#63266776&#"iD yx%g6% |ou! $Nk~:VaVh{yԯkWN$V%&9EX/>YEX/>YEX/>Y9 +X!Y +X!Y012#6&#"'6676&'&77>lG5)/ H _@!5S 6b N`m*`NO2~=z!#_;7C87:"N#$9EX/>YEX / >Y +X!Y  +X!Y01#"&'&$7!32776'&&#"R^P} 2* !4i~uj[TT/:K9EX/>YEX / >Y +X!Y  +X!Yа01!27#&&'&7!7!YIEQ39]d XDHV 2 aY6;7r;=9EX / >YEX/>YEX/>Y +X!Y01327&'3#"&'&7+x nd @@uw  v:G>?kwi;\yzNNj!;)h*+9/EX/>YEX/>YEX/>YEX/>Y +X!Yа& +X!Y01&&'&676676#6676&&I~hLpHcJQ6>xR5M }.M.?y UVkhs͸ 5 l^J;za; g !"9EX/>YEX/>YEX/>YEX/>YEX/>YEX/>Y +X!Y016$'&'3#&&'&73 4@+MF6F T6U : |v{xt ʮnvh` t;*[ +,9EX/>YEX/>YEX/>YEX#/#>Y +X!Y #9в!90132673326'&'3#"&'#"&&767-oQ&/71a 1@( =fv ^:yv9c^nTmsfsa`e$/d019//EX/>Y(9(/ +X!Yв 9 +X!Y("а- +X!Y01#"&'&773267&76672676'&#"eSg.'񹅩 868  u%2r}{ =ZW>\䑁RUEMFq ɡ^~ R_DʏZV 9EX/>YEX/>YEX / >Y +X!Y +X!Y 901&'&#'&'6767765.$(k]*j7l0g,,50;vO*o&@tV0,GAy>MR;0o'129' EX/>YEX/>YEX / >Y +X!Y 9ааа ! +X!Y% 9-01##"&'#"&'7677!&'!32673326J m؎w ꇑnc eu -oQ'-80 ru{f֏~ó&W7Ãc^"+/]hq9EX/>YEX / >YEX/>Y +X!Y 9/   +X!Y +X!Yа01!63276$76'&&#"#!7!nȮ$ d[6M:z[xn3K@s6&!z6%h&'9EX / >YEX/>Y  +X!Y 9|/9 +X!Y" +X!Y%"901#"&&5&7732#6&#"!!32$7h<e !1P 5Ļ7r Vp<xOM!oD6]AEm!w"#9EX/>YEX/>YEX/>Y9/  +X!Y +X!Y +X!Yа01!2#!!#7327!!2$76&'Pp(F֚*A(yzQ (ߵz6*BDV9EX/>YEX/>YEX / >YEX/>Y 9|/ 9/  +X!Y +X!Y  +X!Y01!3!2#!!#3!2$76&' {6pPox|x56BzP z޷JDA_9EX/>YEX/>YEX/>Y +X!Y9/  +X!Yа01!632#6&'&#!7!s!@6@ {69:zy?sACz6WA P 9/EX/>YEX/>YEX/>YEX / >Y +X!Y013!3!#!P66'<6YEX / >Y  +X!Y 9/  +X!Y  +X!Y01!!2#!!!2$76&#jLpFtvPþz׳.XAW9 /EX / >YEX/>Y +X!Yаа а  +X!Y01%3#!#36!%!NtE7<<6EFMaFON6m]~`D9EX / >YEX / >YEX/>YEX/>YEX/>YEX/>Y 9|/ +X!Yа в 9901####3333#!|6|SJ_Cv6vxHfD00UV/#1+o&,-9EX / >YEX/>Y  +X!Y) 9|)/)9& +X!Y&)9! +X!Y&!9016&#"'>32#"&&7332$&##732$Jʼ#6~~b7St<?teرv-%{dl{l`B8[O L 9EX/>YEX/>YEX/>YEX/>Y9 9017##36576PMBO9EX/>YEX/>YEX / >Y +X!Y   +X!Y01#!#7327B6S&E֜+@)Pz6#Q?D9EX/>YEX/>YEX/>Y9  +X!Y0173#"'732?3krC2%1"%~'fk@->E1 4$G!*Z +,9 а ( // 9/в 9 / а( +X!Yа  +X!Y'013###7"&76676!73276&&#33"]pէ)7*r{]'7+f*b,a}LL6 F 9/EX/>YEX/>YEX / >Y +X!Yа013!33#!F56F6=zk_G9EX/>YEX / >YEX/>Y 9/ +X!Y01##"&7376#<6< xP=_>N P 9EX/>YEX/>YEX/>YEX / >Y +X!Yа01!3!3!76YzzPNY9 /EX/>YEX/>YEX/>YEX / >Y +X!Yаа а 01!3!33#!76~F6<zzk_h` a9 EX/>YEX / >Y 9/  +X!Y  +X!Y  +X!Y01!!2#!!!2$76&'o]tMpvQd׳zdXR o9аEX / >YEX/>YEX/>YEX/>Y 9/  +X!Y  +X!Y01!2#!3!2$76&##3Mp6|vPþ66׳.X"R O 9 EX / >YEX/>Y 9/  +X!Y  +X!Y01!2#!3!2$76&#Mp6|vPþ׳.Xb%e&'9EX/>YEX"/">Y +X!Y "9| / +X!Y9 +X!Y 90132677!7!674&#"#6$32#"&7 Ŀp<7<0}e $" ؑP6HڿvRK֙}0z129)EX/>YEX / >YEX/>YEX / >Y 9|/ +X!Y! +X!Y* +X!Y01"&&'&77!#3!76$32&&#"326776k ~66s: ! l !!̴/# ̴"' wLNr#c='wTMОCCIc9 EX / >YEX/>YEX/>Y 9/ +X!Y 9  +X!Y01!!#'&&'&67!3!!"\jP?[ry|oikx#ZyPrbnؖ='-d ./9 EX/>YEX/>Y9/999 +X!Y& +X!Y01#"&&?66776766 "32776&&&ǃS$v6lMNXg Gs"L %*S)cz2~es}%ywtoG: m!"9аEX/>YEX/>Y9|/ +X!Y9 +X!Y +X!Y013!3#!2676&#%!2676%!Gdlc{R`1(:X b -{sg~6wo ?q:39EX/>YEX/>Y +X!Y01!#!i6w:: W9/EX/>YEX / >Y +X!Yаа а +X!Y0176!3#!#%![U6T@668,>5R_6x>tj;9EX / >YEX / >YEX/>YEX/>YEX/>YEX/>Y9|/ +X!Yв9 в901####3333#[6[IP?KW6VGC,  ,N&o%'(9EX / >YEX/>Y  +X!Y% 9|%/%9" +X!Y"%9 +X!Y"9016&#"#6632#"&7332676%#73$_7񜩵i`a6,;%nmV#fut7 @: L 9EX/>YEX/>YEX/>YEX/>Y9 9017##386769-:&>: ] 9EX/>YEX/>YEX/>YEX / >Y9|/ +X!Y 901##333#[77VTI: :O9EX/>YEX/>YEX/>Y +X!Y  +X!Y01#!#7326 z4z'V:5SHD: ` 9EX/>YEX / >YEX/>YEX/>YEX / >Y 9 9 901%7###3yA7*Э6HT7:?: V 9EX/>YEX / >YEX/>YEX/>Y 9| / +X!Y01!#!#3!336Zy[66VV7: ?:@ 9EX/>YEX/>YEX/>Y +X!Y01!#!#!36y6:q:9 9EX/>YEX/>Y +X!Yа01!#!7!d6zY7Z`7 ,8~(9:9(а(4/EX/>YEX/>YEX/>YEX/>YEX/>Y$ +X!Y) +X!Y0а$50123672#"'#"&767>367&#"&&#6FtJY5YYvf= .mQQ6Rar '{npi,no {nMDveNC @k}?7>7<>7}鈎C]UQAqA: F 9/EX/>YEX/>YEX / >Y +X!Yа013!33#!67YA67:A:G9EX / >YEX/>YEX/>Y9/ +X!Y01!#'&773%6736]! (6(Y6 NMdVBI>: P 9EX/>YEX/>YEX/>YEX / >Y +X!Yа01!3!3!/$66::>:Y9 /EX/>YEX/>YEX/>YEX / >Y +X!Yаа а 01!3!33#!/$66iA67:A:rs: a9EX/>YEX / >Y 9/  +X!Y  +X!Y  +X!Y01!!2#!!!2676&'yH:Sa<:ddΚzGP: o9аEX / >YEX/>YEX/>YEX/>Y9/  +X!Y  +X!Y01!2#!3!2676&'#396Pb=[66:.Κz:G: O 9 EX / >YEX/>Y 9/  +X!Y  +X!Y01!2#!3!2676&'96Pb=:.ΚzAN k!"9EX/>YEX/>Y +X!Y9|/9 +X!Y +X!Y901"#6632#"&73327!7!674&Q 8 󢦿Qz82) ẁpթ689HN)z*+9EX/>YEX/>YEX/>YEX/>Y9|/ +X!Y +X!Y% +X!Y01!7>32#"&&7!#3326676'.#"V"↗ փOW66'w͏P`'-ST :[߈`YEX/>YEX/>Y9/ +X!Y9 +X!Y01#!#&&'&667!!ջ6MAXQf [ǀpU|Z{I:>lOfv[GR k?K)*+9&/EX/>YEX/>YEX / >Yo&]/&]&]) &9)/ +X!Y 9 +X!Y +X!Y"а)$01!6632#"'732676'&&##7373!OQu|  7K96h sk*x6&6&AQyLM2FDjpԎK6TN e!"9EX/>YEX/>Y +X!Y9|/ +X!Y9 +X!Y901%2673#"&'&6632#6&#"!!(6%Or625 "{jѨ679F:} !9EX/>YEX/>YEX/>Y9/  +X!Y +X!Y +X!Y +X!Y01!2#!!##73267!!2676&#84t _/jW[:vӽ5zt?F:9EX/>YEX/>YEX / >YEX/>Y9/ 9/ +X!Y +X!Y  +X!Y01!3!2#!!#3!2676&#M7M8eyd66h[:x<B:zt?v !9/EX/>YEX / >YEX/>Y/]]9/ +X!Y 9 +X!Yа01!6632#6'&&##7373!PQu| x6x sk-x6#6$B>yLSJFDjpёK6>: P 9/EX/>YEX/>YEX/>YEX / >Y +X!Y01!3!#!/7=5;:^:&a '(9EX/>YEX/>YEX/>YEX/>YEX / >Y9 +X!Y"01#"&'#"&'&73326733267̮%}Ay 5 l"5 l! s}TNGIxGIx>:&a'(9EX/>YEX/>YEX/>YEX/>YEX / >Y9 +X!Y"01#"&'#"&'&73326733267>p$r=sz  t6t ygq6t yfq:pqqRI_@Brմ_@Brմ>n9/EX / >Y 9/ +X!Y 9//] а а +X!Y  +X!Y01!!2#!#733!!2676&'yH9E6E>hb=:d:6nΚz~/019EX/>YEX///>YEX"/">YEX,/,>Y"9|/а  +X!Y  9 +X!Y" +X!Y9*01!732#6&#"!!32$73#"&'&'&77!#3=2<K 5ƹ#  Wq<7YEX)/)>YEX/>YEX&/&>Y9|/а  +X!Y 9 +X!Y +X!Y9$01!632#6&#"!!32673#"&7477!#3$;66Ba(6% \66L Ѩ6@?j[@?: d9EX/>YEX/>YEX/>YEX / >Y 9 / +X!Yв901!#!#7#!'X6W< A9@T /P2V_m; k9 EX / >YEX/>YEX/>YEX / >Y 9//?] +X!Yв 901####53#!'D6D<x48gQuu99 EX/>YEX/>YEX/>YEX/>YEX / >YEX/>Y9/а +X!Y ав901!7#!#!#!#3!'&B9bX6W<UW66cT /2}PV_h;9 EX/>YEX/>YEX/>YEX / >YEX / >YEX/>Y9//?]а +X!Y ав901!73#####!#3!'s48eD6D=D66]gRxuuu:: x!"9EX/>YEX/>YEX / >YEX/>Y 9 /а  +X!Yа +X!Y 0136633!3#6'&#### !3:C  C6C &x6xYEX/>YEX/>YEX/>Y9/!аа +X!Y а +X!Y0132#76'&''#''#76673!37"&6' %R [6]S:(7'/\sp HQ:  稷6Q } %"&'9"EX/>YEX/>YEX / >YEX/>YEX/>YEX/>Y 9/а +X!Yаа! +X!Y$01!!32#6'&#####67#3!34 ĴC6C &y5w9E6A%x66| ={Q:Iv[I6"H4:"()*9$EX/>YEX!/!>YEX / >YEX/>YEX/>YEX/>Y'! 9'/а' +X!Yаа# +X!Y01!7!32#76&''#''#767#3!370`?"&6'^ [6\e<)7&%)[66pIᔘ  \:7Q  3j.7)899)54/EX/>YEX/>YEX/>Y +X!Y,9|,/) +X!Y),9" +X!Y4]47а7/77/7]/4790а0/016&#!7!##&&76673 $''&%#732$73#'77B]9p#;C UDSg p2,%b7:7?631dx-8S×S;g2I[g߶' 8 p-(1239../EX/>YEX/>YEX/>Y +X!Y'9|'/$ +X!Y $'9 +X!Y.*а*/**/*]).*91а1/016%!7!##&&766732676%#73$73#'77&$ sof TFUd p,xn6:71 7}W&^;f2GYiv8 w ,i -.9 а )EX / >YEX/>Y 9|/  +X!Y! +X!Y( +X!Y01"&&'&776$32!765&&#"!32670l "! l " ̴2B ˶"vMM0wTMɸҤTDHoRFF7N"i#$9аEX/>YEX / >Y +X!Y 9|/  +X!Y +X!Y012#"&'&66"!6'&&27!u /Ș?ރ2, į 3 Nac&ֺx#6TV 998G9EX/>YEX/>YEX / >Y 9 +X!Y01%76673"#,>f [>@:;W>s/hR|-OG9EX/>YEX/>YEX/>Y9  +X!Y01%766&#&#73US]1h=*( #O<539L\M+d/s9xp>0h*129*EX / >YEX/>YEX/>YEX/>Y +X!Yа+ +X!Y(01#7&'&77773&&'#773676H6 !1M5}b 1o 6.# 6+/$}} NM`{{ |܇OM AA AgYEX / >Yа а  +X!Y  +X!Y#а,0173#7&&'&766776'&&'#773[6 36^[R( }6' 6Mtt]_Z ܳg SS TR ~6JR?ST9?(а?KEX/>YEX/>Yа в 9 +X!Y" +X!Y&9-а6аAаA/8а8/7 +X!Y8<аYEX/>Yа в 9 +X!Y" +X!Y&9-а6аAаA/8а8/7 +X!Y8<аYEX/>YEX&/&>YEX / >Yв 9  +X!Y"а-а-/.а./( +X!Y.+а+/01#"&'#"&'&73326733267%7!!#7̮%}Ay 5 l"5 l!N6 s}TNGIxGIx88gg>&./09-EX/>YEX/>YEX&/&>YEX / >Yв 9  +X!Y" +X!Y-а-/.а./( +X!Y.+а+/01#"&'#"&'&733267332677!!#7>p$r=sz  t6t ygq6t yfq} 6:pqqRI_@Brմ_@Brմ>88L9/EX / >YEX/>Y 9  +X!Y +X!Y01#&&76732#6&#"36;X:_5 6Hv8J[AkNYNL9/EX / >YEX/>Y 9  +X!Y +X!Y01#&&'&$32#6&#"36<lG5)7J}`m~Uj>R9/EX/>Y999 9 9 99901'#'7'73'/i"/01f4@@BJ?e/ +X!Y01#7!73:7Ryl$0/а/ +X!Y а / +X!Y01>32#76&#"#763ff3bo6 PM1iIbQ+m+aQf+1],0Ej /а/01730`)&{AFj /а/01'773c"V`F> #/;GS_?/K/W/3/EX/>Y  +X!Y?а?E +X!YаKаKQ +X!Y!аW'аW] +X!Y-а39 +X!Y016672#6#&6672#6#&6672#6#&6672#6#&6672#6#&6632#6#&6672#6#&6672#6#&|YXamPT|YYcn UT}XZam UUw}XZam UU0|YZam UUBVZam UU|YZam UU)|Y[an UTVdeWdfVdiSdf VdhTdfVdhTdfVdjRdfVejRdf VdjRdfVdjRdfGcM "'%/#/// //!/EX/>Y01#'37%%77%'%'7 a b 3 CP:n:;_ZI[K;`Q }_F; }_FGHJBD-[O&'dDEX/>Y 01@&&yEX/>Y 01GVt9EX / >YEX/>YEX / >Y +X!Y 9/ а а +X!Y  +X!Y01!!2#!#7373!!2676&'95>1b=z$z6ΚzTO9EX/>YEX/>Y9/ +X!Y +X!Y01#!'#%676&'!!27'7k5$c+hy#wv|n`+gt!2yh#*!`N+p%,-9%EX/>YEX / >YEX / >YEX/>Y9 9 +X!Y$ +X!Y01%'#"&'#3663276&#"367'767P/Lnrs(g66%GziE 7 (Z|f]R/N1UEdX`uhz@;&Ckǝtp{:T$ 3 9EX/>YEX/>Y +X!Y01#7!#!35#5A5yt?3 9EX/>YEX/>Y +X!Y01!#!3j6CA6:tT^ 9 /EX/>YEX/>Y +X!Y9/   +X!Y +X!Y01!3766'&&###!ewة5Ez3Q?q:^ 9 /EX/>YEX/>Y +X!Y 9/   +X!Y +X!Y01!32'6676&###!iJ &ܙ`6w[ћ%+!Ǝ:&P;&PZ~&,P>:&PWf9EX/>YEX / >YEX/>YEX / >Y9|/ +X!Y9а01 #####3333D{d878}56u575n 1!D/V3>:f9EX/>YEX / >YEX/>YEX / >Y 9|/ +X!Y9а01 #####3333I3Kc160\77V.7.g::  l9EX/>YEX / >YEX/>YEX / >Y 9| / +X!Y +X!Y 901##!7!3#d{5xI C9z6L(*r:l9EX/>YEX / >YEX/>YEX / >Y 9| / +X!Y +X!Y 901##!7!33#\6WSI6 ZE&,P?:&PVR h9EX/>YEX / >YEX/>YEX / >Y9|/ +X!Y +X!Y01!!!#!#3vG6||}566.?: h9EX/>YEX / >YEX/>YEX / >Y 9|/ +X!Y +X!Y01!!!#!#3W )6Zy[66G7:Ftk9/EX/>YEX/>YEX/>Y9/  +X!Y +X!Y +X!Y013766'&&###!#!Ϻwةˆ6|6F3Qz?:k9/EX/>YEX/>YEX/>Y9/  +X!Y +X!Y +X!Y0132'6676&###!#!vs &ݑ`6y6^yvΚ%+!ŏ:/ABC9?EX/>YEX$/$>YEX/>YEX/>Y$9/ +X!Y +X!Y/ +X!Y3 +X!Y$< +X!Y01&'#"&&'&777327&&'&76326776&&#"{$,&'% mŀzk -+`E3!śs n!44uT',@AYY<6MMx,FWY&erP[+ˁ:O&+Ki[Te@N'56794EX / >YEX/>YEX/>YEX/>Y9/   +X!Y +X!Y' +X!Y+ +X!Y2 +X!Y01&'#"&'&767327&'&763266''&'"ܙm|z@Hux%Vg IM_ro 3[}6aS?)gL 1>`4n6⬎U&ycWoͭEhˤ!uh0 #&<P;&\P.X9/EX/>YEX / >YEX/>Y +X!Y а +X!Y 01!7!53!!!33#!5h696E6<y66zk_d:^9 /EX/>YEX/>YEX/>Y +X!Yаа +X!Y а 01!7!!!33#!©7XA57662A&P:&PP9EX/>YEX / >YEX / >Y 9/а +X!Y013673##&&7< B7Cx66Ƨ.7/"<s 2P4 _:P9EX / >YEX/>YEX/>Y9/ +X!Yа01!##7"&'&7733367336]|%8$ (6( 786oY6 8rsMcYAea/0VAG9EX/>YEX/>YEX / >Y9/ +X!Y0133632#6&'&V6#<6< x1=_>TJu",p-.9*EX/>YEX/>Y$9$//$] +X!Yа$ а +X!Y 9) +X!Y01"&77&&7376$32!327!65&&#"b&z6! #l '$ڧ{ʮ4 5mՈHImp_-FpI2?N".u+/09+EX/>YEX/>Y$9$//$?$] +X!Yа$а +X!Y 9* +X!Y01"&&'&7&'&736$32!37!76'&&#"3Blc7qFtD $ nA fuKz#+2'"l{|?c: HHvWd9/EX/>YEX/>YEX/>Y9|/  +X!Y +X!Y017766'&&'!#33+:wУ}56uI3Q/V>:d9/EX/>YEX/>YEX/>Y9|/ +X!Y +X!Y01'6676&###33 &[77VTF Ś%,!Ŏ:B&:&VKAh 9EX/>YEX/>YEX/>YEX/>Y9|/  +X!Y +X!Y01!3#"'73267!#zz6.A/,g{x5=2I?K:h 9EX/>YEX/>YEX/>YEX/>Y9|/  +X!Y +X!Y01!3#"'73267!#/VV7/?1+gky[6: s2j:ZE&,?:&Z{&10HD:&=N%o&'9 EX/>YEX / >Y 9/] +X!Y 9  +X!Y  +X!Y012#"&77!76'&&#"'6267!]"꟧h;:)һv~{|uk-^#HpdGuo !9EX/>YEX / >Y 9 9/ 9  +X!Y +X!Yа +X!Y0132#"&7332676'&&''7!7u/u8 h7D·~\ݰaҿYIpx686u5:_9 /EX/>Y +X!Y 9 9/в 9  +X!Y +X!Y01!7!2 &7332676'&%'7L!8!/;7DŴѶdP7K&&'HS.Kq:&''|S&K&<SK;&\S C R9 EX/>YEX/>Y9/  +X!Y +X!Y013!&&'&76$3!3p6i^6o&zû(P:7o #\$%9 EX / >YEX/>Y 9/ +X!Y в 9 +X!Y01!&&'&76$3!37>5&'#'!3^6o&\p6kV1 htzû:7o[[[Z6\&6} 789 (EX/>YEX/>YEX/>YEX/>Y9  +X!Y99* +X!Y 20123326'&'3#"&'#"&76776&&#"32677Wp(u7 XTv 6 ~dqHр 5~. @NmiG4;_pZeeedrkgv>;Gjɇs>2f349EX/>YEX+/+>Y39/ +X!Y  +X!Y9+ +X!Y$+901&&'#732676'&%!7!326'&'&'&776~k *Y![K 8 bv   [e7;-6!492Q_Jeeeeja;@WFp:)c*+9EX / >YEX/>Y +X!Y 9* 9/ +X!Y  +X!Y'901%326'&'3&776&'#732676&##7!Rpd ? ptduyʃx`մPNڤ|qV^q3ydo2Y~$9)` *+9/EX / >YEX / >Y* 9/ +X!Y  +X!Y9  +XY01732$76&#!7!3'677#&'&776&# o5x"k! 66ѳ%""#q#s 7<><T: ` !"9/EX/>YEX/>Y!9/ +X!Y +X!Y9 +XY0173$76!!7!3'677#&776&#?/- <!ͯ3y"h# 67D6s#s1Ajw&e%'(9EX/>YEX!/!>YEX/>Y +X!Y +X!Y! +X!Y!901!#73267!326'&'7#"&'&7#F؛,@1 WTw 7 }hr z627`oXedʳ}oGA:$e$%&9EX / >YEX/>YEX/>Y  +X!Y +X!Y +X!Y 901!#732!326'&'3#"&5&7#z4z'VG NExi 5 t׉ak 5SI=XZ_`_`ȫrC:dl !9EX/>YEX/>YEX/>YEX/>Y +X!Y 99|/ +X!Y01326'&'3&77!#3!YTv 6 ~os=x66z {Q`oReeedW\K;1: l!"9EX/>YEX/>YEX/>YEX/>Y9|/ +X!Y +X!Y901!#3!3326'&'3"&'&79Z55WxX6 NEwi 6 u֋bh :I=XZ_`s@<a$I %&9EX / >YEX/>Y  +X!Y +X!Y 901"'&777676&326676'39  )2~}+ ȭy8JI!D7EEFZ[jN F!"9EX/>YEX / >Y +X!Y 9 +X!Y01%26676'3#"&&'&767&k[6 kY`\8{F\|!W;;fv,k6/7˛O9EX/>YEX/>Y +X!Yаа  +X!Y901!7!!326'&'3&'&7_WT{ 7 gs z66Q`oWeeɯoA@T:O 9EX/>YEX/>Y +X!Yаа  +X!Y901!7!!326'&'3&'&7nqY{XTxh 7 u׉gs 55YEX,/,>Y ,9|/ +X!Y9  +X!Y9,$ +X!Y($901667&&76$32#6&&#"!3#32667#"&&gǧ;f6Xv(.)䪀6%ߘg%-rhuhXT?8[Goy\ojKB&SK:&S# /а// а/а/0133&&7<5: 1?- 7Bb=\&&#wEBBFL@Gnff@?EX/>Yа/@  0@] +X!Y +X!Y01!7!7!7!6!666 9/а/01#76l"j5"tihx 9/а/01'6773"k6"x~igJx 9/а/а/01'67733"h6"u` /а/01&77F "(SiE<<=vg=&)&J+9/а/ а /а/а/01'6773'67733"h6."h6"ur"uK S 9EX/>YEX/>YEX / >YEX/>Y  +X!Yа01!#!7!3!CA65:6::v`Z9EX / >YEX / >YEX/>YEX/>YEX/>YEX/>Y +X!Y +X!Y аааа01!!#!7!!7!3!!!-A7AIJ;6:-`67v73!} / +XY016632#"&7hCGNgEFNIW]CFXWGP8i&%EX / >YEX/>Y01Pi&%'hc  9/  +X!Y016632#&&l%&"$!"0&8I[_\/^/EX/>YEX/>Yа/9а/ а /9 а /, +X!Y5 +X!Y,<а5Dа M +X!YV +X!Y0126632#"&'#"&77662#"&7766326776'&&#"3266''&&#"326776'&&#"'aSm7Nrz pSsiqz &qz rp| XE\XG_XE\- VF]ZD^XE\S*u*aOVZzNaO{G4|B~@R,,GVmN.,GToGV1JQoN- GVmH,,HVkM,e o `9/а/01#7C]H,sq9/а/01'H_}9//017'+u+ o o!sEX / >Y 019T9EX/>YEX/>YEX/ >YEX / >Y9 +X!Y016632#6'&&#"#89Qez U4X _Ta_7OW`X=J6/HO^%Z*+,9EX/>YEX/>Y*9*/ +X!Y +X!Y а а*а*а//] +X!Y9! +X!Y%а'01!%!736?#737#7376632#6'&&#"!!!ZZr`& "!顠5 h$f_䓺b66)?78ԯE=_lҭ8#&)۲#*+9#а#а#%а#)EX/>YEX/>YEX/>YEX / >Y9/а/] +X!Y +X!Y аааааааа а"а$в&9'9(013#3##!##737#733!3!'!!7!%!!*[4\7\+a5b6{L+l?My6666776]!*(+,9(EX/>YEX/>YEX / >YEX / >YEX/>Y  +X!Y  +X!Yав#9#/ +X!Y а) +X!Y01#27#"'&7####!33332$76&'#>?Q.? ,i6+ 372 !7DM 3 35ʪ$YȪV&6W+'=#'+05:6;<96а6"а6'а6+а6-а63EX/>YEX / >YEX/>Y 9/а/ 9/а +X!Y  +X!Yа аааааа а"а$а&а(а*а -в0 9 2в5 96в9 901!33#3##!##73'#733!337!37!!'#7#%7#3''i;§`= < ;kYEX/>YEX/>YEX/>Y +X!Y  +X!Y 9/ 9/01#654#!#3!$3667 6ށ5vs?q5tL:|SS@HC:Op[sD|+EX/>YEX / >Y+ 9+/ +X!Y  +X!Yа+а+'а'/@ ''/'?']( +X!Yа'а" +X!Y01!327#"&'&77#737#73732&#"!!!H Ȝfyni !3IVif2G"H2h[!8es278-:#"8TF!&+*,-9*а*а*%EX / >YEX/>Y  а /@  0 ]а/])а)/0)] +X!Y +X!Y  +X!Y "аааааа(аа & +X!Y01##737#737!3#7#7'!!6%%&!!! !j6*+)+8!qgW66s69Wg6 ??8q9EX/>YEX / >Y +X!Yв 9/ +X!Y 9/  +X!Y аа01#736767%7%6&''7!-s6|Gtn/!ø {s4e6]Y44GO9EX/>YEX/>Y9/а/@  0@] +X!Yаааа а а +X!Yа а ааа а +X!Y901#'?7737767O 7F6C;0~ԠE:KE:K~Y:_Y:_,Es l:]9EX/>YEX/>YEX/>YEX/>Y9/  +X!Yа01#76'&&'##7773 (6)6-%7%0L&6l PLge 6b !9EX / >YEX/>Y 9/ +X!Yаа а /@   / ? O _ ] +X!Yа а  +X!Y01!##737#73!#!!%!2$76&'!{E6EÉ rxo66ߠ¦M+=A BC9 'а -а >>/@/EX / >YEX%/%>Y а/ 9  +X!Y +X!Y 9%а/%1 +X!Y: +X!Y01#"&776632#6&#"32672#"&7766326776'&&#"'en m`{6YLV XCPwqz prz XE]XF^*u*^wxM}ucLUjM++GVWF}N{C-+GVlN-,ISv o 1j$]%&9$/EX/>Y9/ +X!Yа +X!Yа" +X!Y01&&7677676632677674'"4 l"aQL ir$ c;7y85<fpso./]7,>(S",#-.9#а# а#EX)/)>YEX+/+>YEX/>YEX&/&>YEX$/$>Y а /а/ +X!Y  +X!Y +X!Y%+&9*$+901!7!2#"&77663266'&&#"##3304 fTp0 gQp256566di<62R^ 1S^KH 9 EX/>YEX / >YEX/>Y в9/ааа а  +X!Yааа01#37####7!g4QN7[C[E[7[R8RBV=8 9xNe9EX / >YEX/>Y 9/ +X!Y +X!Y 9  +X!Y01%#"&&'&$32!27"!&ijns 'WY01 ' '%EX/>Y01'"'z%sEX/>Y01'$'%(EX/>Y01BJ.e/09/EX/>Y9/9 +X!Y 9 +X!Y( +X!Y01276&#"'6676#"&&776"327&&~4 =y[GE^ NR&0ΰ&&4~oB8+BBLϜ!6TP] ', 9/EX/>Y +X!Y01#!#!65 qv>9/EX/>Y +X!Yа  +X!Y01!%7735!!BJ#KD6*70,5/ +X!Y01!7!+6H# 9 9 /EX/>YEX/>Yа  +X!Y01%3#5#73E;I3yx\Q6jN.AtBC9'а:EX/>YEX/>Yа/9а/9" +X!Y* +X!Y5а">01"&&'#"&'&76326$32.#"36767266774&&'"ku坒Ygӣ~%jZQ|I^c# &:& K]f۸+ kd(v彡Izevymj[v*ݺ|-68i\{*wK?9EX/>YEX/>Y +X!Y +X!Y01#"'732676672&}/?1+j:D?1iY23C/(|)*9/а/а/ а  +X!Y +X!Y аа/а! +X!Y& +X!Y!(016763677"/&676367"&'&y4XKdh4~}LK1Y01f"]@@CL1EX/>Y01W 8 9EX/>YEX/>Y99013# k33(".fmPo'%n:4 9EX/>YEX/>Y9/01#3#37@66@5yy 5t'/а/@  0@P]а/]017'6773b"Q5'b"blO&&JJ9EX/>YEX/>YEX/>YEX/>YEX/>YEX/>Y +X!Yа  +X!Yа013#7376676&!!!#3Œ|t|x.667{<28z7:o9EX/>YEX/>YEX/>YEX / >YEX/>Y +X!Y  +X!Y а01&&!!##7376672#nl6j6_|o6~77('+ ,-9 )EX/>YEX/>YEX/>YEX/>YEX*/*>YEX/>YEX#/#>YEX(/(>Y +X!Yа  +X!Yа а!а"а%а&013#7376672&!76676&!!#!!#3???0iŒ|r}x6]6672{<28z7:#+ ,-9EX/>YEX/>YEX/>YEX#/#>YEX/>YEX/>YEX'/'>Y +X!Yа  +X!Yа а%а&а)а*013#7376672&!76672#&&!!#!???0i_|o6nl7j672(~7V'()9EX/>YEX / >YEX/>YEX&/&>YEX/>YEX/>Y +X!Y  +X!Yаа +X!Y$а%01&###73766323#27#"'&7#73tWrk6}~E>?Q-? 2=7Ej7ODM 3 357&TղUV9EX8/8>YEX>/>>YEXS/S>YEX1/1>YEX/>YEXK/K>Y8 +X!Y1а1 +X!Y*19* +X!Y"а% +X!Y3S9>@ +X!YF +X!Y@QаR016'&&#"#6&#"#"&7336676%.76632'&66323#27'&&5&7#73 bWLx: 7!ԕ, 頧6 (Ɋz; ᖈb LTk}  pN;3S[x74V^TN:TdArudC+VŁpdP#JlOz=\`]ocBE97C 2f[557rB ,;AGMSZ^bfjnrvz~>A/EXJ/J>YMz+wv+s~+{>+AJ9/ а / а /а/ 9/Z +X!YZ9  +X!Y ) +X!Y-а-/ 2а2/8 +X!YAoаkаgаBбC +X!Yiаmаqа@а>EаJK +X!Ycа_а[аNаJdа`а\аOаMRа T +X!Ysаvа +X!Ywаzа{а~0176632"&36'&&#"32673"&73766733!7373!#%7!#73676'#7!!7!!7!7!!7!!7!#737#73#73%#733676''#%#73#73E_`l m`f_ 9&Z sX7.=V8-YEX/>Y +X!Yв9  +X!Y 9901!!7676'&#"#6632!_3-J]6nhyG,pZQR.(cYjwahw@A9EX/>YEX/>Y9/ +X!Y901!#7%3>6|+ N4a#W !H"#9EX / >YEX/>Y  +X!Y +X!Y01"&'&776632&&#"3267_o {_o ULd4TMc5 sg?9{sf=;}@Xb:Xd#c([EX / >YEX/>Y 9/ 9 +X!Y +X!Y " +X!Y01#"&7>32#736%26776'&&#)Cpj1, "9u$ vqh7XgooUVe6 vh1JJxlbs#0t129а.EX/>YEX / >Y. 9|./ +X!Y.9.9 ! +X!Y( +X!Y01#"&&7667&&766326&&#" 66&&#"326qssrLaa꣛G[..YAPca#&`T]f%#X?NxEItCol:9EX/>YEX/>Y +X!Y901#!7!:/jV7Pq&e'(9EX/>YEX / >Y +X!Y 9/ 9 +X!Y  +X!Y01"6632#"&&77%"32676'&&FFEjpJ3xu  nt+!6PYݡlpg3n,~[_HBhwdV_hgp9EX/>YEX / >Y +X!Y 9/ 9  +X!Y +X!Y9901!!632#"&7332676&#&{y6y_.8AJқгz\ Y9 EX / >YEX/>Y 9|/ +X!Yа в 9 9013##%77!565A-Xm76 5l(r')*9EX / >YEX/>Y 9|/  +X!Y 9( +X!Y(9  +X!Y( 90132676& #66 #"&&7332676'&%#nK6<svmmW 5 &fmqs|Z$#fUcw:*W 9EX/>YEX/>Y +X!Yв9 +X!Y 9901!!7676&#"'6632!I7󡚪3 uïA9EX/>YEX/>Y9/ +X!Y901!#7%36Cx:I H!"9EX / >YEX/>Y  +X!Y +X!Y01"&'&77632&&#"3266  )#+y'%M\Yɱ[YJR M 9EX/>YEX/>Y +X!Y9 +X!Y 9017!!7!7=*'66.)6)~@ 8 9EX/>YEX / >YEX/>Y9017#3 CK7M> #&O% Z 9EX/>YEX / >YEX/>YEX/>Y999 901##3FM>C@ "U98`9EX/>YEX/>YEX/>YEX / >YEX / >Y 9 9  901%7373##>X9Z9;::^Xsnt7}G8 9EX/>YEX/>YEX/>Y901%73#3 )B:NRtcH=9EX/>YEX/>YEX/>Y  +X!Y01#"&733267H 5دꙹ› 19 9EX/>YEX/>Y +X!Yа01!#!7!)I6JVV7)_EX / >YEX/>Y 9 9  +X!Y +X!Y" 9% +X!Y01&''&&76632#6&''"#"&7332676H ǕnQ 6)%4mu<+3iZdw ~kQ-7iyd=9c9EX/>YEX/>YEX / >Y9/ +X!Y 9 +X!Y01!#!#!2676&#!baT67dx }L0!(H)*9$EX/>YEX/>Y +X!Y# +X!Y01%'#"&'&77632&&#"32$776)LQ*-Θ&  )#_b&`b釛՗YSҢX= O 9  EX/>YEX/>Y 9 / +X!Y +X!Y01#!#%!2676&#!T6|87M!#H$%9 EX / >YEX/>Y  +X!Y +X!Y01"&'&77632&&#"32$776՗*+И*<'  )_b'`bTٗYSҢX=v L 9EX/>YEX/>YEX/>YEX/>Y9901!##33564M652=x `9EX/>YEX/>YEX/>YEX/>YEX / >Y99 901 3###O1N6_]W+ͻ69s*?<09EX/>YEX/>Y +X!Y017!!3|k\566=; L 9EX/>YEX/>YEX/>YEX / >Y9901#373#J65r@SD^Rk} v09EX/>YEX/>Y  +X!Y013#"&733267?76ΥƷ][$9EX/>YEX/>Y013#365=m V 9EX/>YEX / >YEX/>YEX/>Y9|/ +X!Y01!#!#3!36^_65`a6&1h1"i #$9EX / >YEX/>Y 9 ]  +X!Y +X!Y" 9"/"] +X!Y01%"&&77632#&&#"3267!7!t4I6= P 9EX/>YEX/>Y9/] +X!Y +X!Y01!#!!!;b6DUe57s.kEX / >YEX / >Y 9  в 9  +X!Y +X!Y #в' 9 * +X!Y01&''&&766773#6&''"#7&&7332676H Ǖ'6'6)%(6(4mu<+3i{ w ~kQ-7i yd=$kEX/>YEX/>Y9//]#б +X!Y +X!Yа в9 +X!Y01!%!736677#7376632#654&#"!f %Z{ ҝw 6 ge7c~66$ڬW6m~tFK?YEX / >Y 9/ 9}/|/ +X!Y +X!Y ааав 9013!!!!#!7!7!7!337;#?271A*9Z6[66[6r=39EX/>YEX/>Y +X!Y01!#!|6Vz= 9EX/>YEX/>Y9 +X!Y01!!3'!z=; &-XO.M!'SEX / >YEX/>Y 9|/ +X!Y  +X!Y" +X!Y01!7!"&'&77632&&#"32$776d>j*+И*<'  )06_b'`bTٗYSҢX{8 9EX/>YEX/>YEX/>Y901##3#'8;9 (sXS c 9аEX / >YEX/>Y +X!Y 9|/ +X!Y  +X!Y01!!7!!7!!7! :6 66=S@ 9EX/>YEX/>YEX/>Y +X!Y01!#!#!66MWE9EX/>YEX/>Y +X!Yа +X!Y01!!7735!!-$!(:6,%,6[!"#9аEX/>YEX/>Y9/9/@/?O_o ] +X!Y аа +X!Yа01#7&767736&'6$%#6##G6z"כ1=!44ϐ}mm  Zκ±] SEX/>YEX/>YEX/>YEX / >Y 9/б  +X!Y 01673#&&'&733C&567-969 666 7s 3 =`g?^S4!JEX/>YEX/>Y +X!Y аа +X!Yа!01%66'&&#"!7%&732%!cW 18J2NLDyO{N6D'k۳Cco6vn9EX/>YEX/>YEX/>Y +X!Yав9/ +X!Y +X!Y01!7!!63276676&##zYc\ſڤYM_6W66[é60.U#k!$%9EX / >YEX/>Y 9|/  +X!Y9 +X!Y  +X!Y# 901#"&'&77632#6&#"!!675 *$Ƶ6+ 1  3eð]^"ʬ,6=TR!{"#9EX/>YEX/>YEX / >Y +X!Y   +X!Y9//] +X!Y а01#!!#732677!!2%!2676&#ns9!j3iUVnGHcSSW6SǗ=9EX/>YEX/>YEX / >YEX/>Y 9|/ 9//]  +X!Y +X!Y  +X!Y01!3!2#!!#3!2676&#a5SPm`+_65cS\1&Ǘ\9EX/>YEX / >YEX/>Y +X!Yав 9/ +X!Y01!7!!676#6&# {Yc]а!060YL_6V77Y0.<T P 9/EX/>YEX / >YEX/>YEX/>Y +X!Y 01!!#!3!3t968t56IW> h9EX / >YEX/>Y  +X!Yв 9//] +X!Y +X!Y01!!2#!%6&#!!26K]8zYc]WNκǀǝC W9/EX/>YEX / >Y +X!Yаа а +X!Y0176!3#!#%![cwB69M76>T46Kt!y9EX / >YEX / >YEX/>YEX/>YEX/>YEX/>Y 9|/ +X!Yа в 9 901####3333#c5bP`F=]6]ID;;R<&oEX / >YEX/>Y  +X!Y# 9|#/#9,]" +X!Y"#9 +X!Y"9016&#"#6$32#"&7332676!#73666 ra5/`yxKg6;~ L 9EX/>YEX/>YEX/>YEX/>Y9 9013##3L23223s=H ] 9EX/>YEX/>YEX/>YEX / >Y9|/ +X!Y 901##33#b66]9IC;8O9EX/>YEX/>YEX/>Y +X!Y  +X!Y01#!#73267785s9!j3isW6D9D9EX/>YEX/>YEX/>Y9  +X!Y0173#"'732773D,..$$}g'AG8fC1 ~3<T F 9/EX/>YEX / >YEX/>Y +X!Yа 01%3#!3!3zC58n566KWVG9EX/>YEX/>YEX/>Y 9 / +X!Y01!#&73766736eѰ!150YM_65X䳮0-<m P 9EX/>YEX/>YEX / >YEX/>Y +X!Yа 01!!3!3!3566WW<mY 9/EX/>YEX / >YEX/>YEX/>Y +X!Yа а а 01%3#!3!3!3yB69T5666KWWXu e9EX/>YEX/>Y +X!Y 9 / / ]  +X!Y +X!Y01#!!7!!2%!!26&Xx U]c](SW6ǝ>& h> V9EX/>YEX/>Y9//]  +X!Y +X!Y01!!3!26&#!!26z3W]8c]κUǝB#e$%9EX/>YEX / >Y +X!Y  9| / +X!Y9 +X!Y 9013277!7!76'&&#"#6$32#"&7}* -  272 *Ŷf.66TRȱ^^ʬ=+mEX / >YEX/>YEX/>YEX/>Y  9| / +X!Y +X!Y& +X!Y01"&'&77!#3!7632&&#"32776L a65^.+Θ)='  ']c:#`bTٗYSٗX c9EX/>YEX/>YEX / >Y9/  +X!Y 9 +X!Y01#&&7663!#!!! ud6\Lt[&ssQz  0 U9EX/>YEX/>Y 9 / +X!Yаа а  +X!Y01!#!7!!!!H`6``}W//6(79/EX/>YEX/>YEX/>YEX/>YEX / >YEX / >Y9|/ +X!Y9 +X!Y в9013######3333j5A6;c5bP`F=]6]IMK;;R<Ho9/EX / >YEX/>YEX/>YEX / >Y 9|/ +X!Y9 +X!Y013####335A5;Lb66]9IPK;H1f9EX/>YEX/>YEX / >YEX/>Y 9|/а  +X!Y 901333###7##3Y,7/;:ICM8.6+Uc66q;Yl 9EX/>YEX / >YEX/>YEX / >Y 9| / +X!Y +X!Y 901##!7!3#Rb6^9ID;W6h/>{EX$/$>YEX/>Yв$9/$а/ +X!Y +X!Y/ +X!Y3 +X!Y$: +X!Y01&'#"&&5&77>7327&&'&776326776&#"mވ&`hsft *ߥ !m{k z{,!58wRU6fGo"@ˀPSCЮ:6FT#}4RD-ȕ~@&'C%^9/EX/>YEX/>YEX/>YEX / >Y9 +X!Y 9013###3F+5@6;C@ K"U9vS^ 9/EX/>YEX/>YEX/>Y +X!Y +X!Y а а а 01%3#!!7!!!3zB68nzYc66KW66WYIEX / >YEX/>YEX/>Y 9/ +X!Yа01!##7&&7336736e*7*Ð150374Ŋ_65O ξR? S>G9EX/>YEX/>YEX/>Y9/  +X!Y013676#6&#5dϲ"061YM_6Y0.>$ *mEX/>YEX/>Y%9%/_%]%/%] +X!Yа% а +X!Y9! +X!Y01"&'&77&&73632!7"!76'&&ٜ6w{7'ƊP Ǯ45/  _fc}%|cc[Tw,{0[O|4"m#$9EX/>YEX/>Y9/] +X!Y9 +X!Y +X!Y012#"&&77!76'&&'&'627!Q+͉Qe ɬ4 5  rzcc\Sw,0[N}n9EX/>YEX / >Y +X!Y9 9|/ +X!Y  +X!Y90132#"&&7332676&''7!7&tpZ 5}GD@hWWe~~,6M!'f()9 а$EX / >YEX/>Y 9|/ +X!Y +X!Y $ +X!Y01"&'&77632!32$7%!76'&&#"՗*+И*)   --  ,_b'`b@:YSg2XT-EX/>YEX/>Y9/]а/@ /?O_]] +X!Y +X!Y  +X!Yаааав%9%]+%]:%J%]* +X!Y01!!%!%!73677#777#7376632#654&#"/dn[CF  "Ϛw 6 ge!666667N56@~tFK?YEX / >Y' 9'/']_']' '] +X!Y  +X!Yа'а'"а"/@ "/"?"O"_"]"]# +X!Yа"а +X!Y01!27#"&7#7377736672&#"!%%J yZ{q]YEX*/*>YEX,/,>YEX'/'>YEX%/%>Y а /а/] +X!Y  +X!Y  +X!Y&,'9+%,901!7!2#"&7766326776'&&#"##33 fTj  fQn564M6<6/##62R^{853R_525EX / >YEX/>Y 9/ +X!Yа а /@  / ? O _ o  ]  +X!Yаа а/  +X!Y01!##737#73!#!!%!2676&'!+160rBR6r7Ŝrj &kEX/>YEX/>Y9|/ +X!Y 9& +X!Y&9 +X!Y&90136676&#"#6632"&7332676&'#Ca\UZ~5jozMF  5 nZ_esITHJ[ZMax{_u?eAa}}gSa^OMWa W9 EX / >YEX/>Y 9/ +X!Yа в 9 901%3##7%77!ӎ#4"g=RR41(A4iEX/>YEX / >Y +X!Y 9/ 9  +X!Y +X!Y9901!!632#"&532676&#&lnzYRcqxdx5WPbd[f]}3.juxcN\qe\m;'Q#e$%9EX/>YEX / >Y +X!Y 9/ 9 +X!Y  +X!Y01#632#"&776$"3266'&&1 -cnukt #G'  \GEz? Y2lltz>K=<.+EOYB;FY:9EX/>YEX/>Y +X!Y901#!7! 9/ 2r  +aEX/>YEX/>Y)9|)/ +X!Y)9 )9 +X!Y$ +X!Y01"&767&&76626&#"3266&#"326bJG :B ؁prZ^U5Fa< ePWeQSJ|;eAbyyb=_=_wy(Jb^N^/]F^]XW5Y $[EX/>YEX/>Y9/9 +X!Y +X!Y +X!Y01#"&76632##7 2676'&&#" di{q^r  %EO(ULH! Wtunti\9K~9/ +X!Y01!7!:6< k 9EX/>YEX/>Y 9 /_ ] / ] ] +X!Y +X!Y +X!Y01!!!!!!3[PSZC67#J N,:HEX)/)>YEX/>Y),а,/ +X!Y)9/9/: +X!Y:9")93 +X!Y> +X!Y)E +X!Y01#"'32#"&&767&7667&&77663!326676&#326776&#"nYEX/>YEX/>YEX/>Y 9 9 +X!Y # +X!Y01&76776323#3266776'&&'"^F 3<;P Y r?:9 ippx,3U&c'(9EX/>YEX/>YEX/>Y9/ +X!Y 9% +X!Y01#!#&'&776&#%!2$76&#!v6Wj $3  fm T\y}%856/7<@?6Z ] 9EX/>YEX/>YEX/>YEX / >Y9|/ +X!Y 901##33#{66wI!C9L(*? S 9/EX/>YEX/>YEX / >Y9|/ +X!Y 901##33#f`6 6v1IB)_Z S 9EX/>YEX/>YEX/>YEX / >Y99 901##33# }66} WWG9;)(<  H9EX/>YEX/>Y  +X!Y  +X!Y013!#!2776&&'<MZ(S 3&NsVv|yUP !9EX / >YEX/>Y 9  +X!Y +X!Y 901#"&'&77632#6&#"675 *$Ƶ6' 3eð]^"ʬݓTR<"#$9аEX/>YEX/>Y9//]]_]]I] +X!Y 9 +X!Y! +X!Y013!#!2676&#%!2676'&%!<@fhwZD "be;zo6y)! T 9 EX/>YEX/>YEX/>Y 9 / +X!Y 901!#7#!'<>8$ "Vs@A/а/]0167#F,A 6\]^aEJf d/]а/@ /?O_]  +X!Y а /9/а/@ /?O_]/01#"&733267%3#Jtv 5 eba=4bmp`NTVKJ_d/а//] а /  +X!Y +X!Y а|/@/?O_o]а/@ /?O_]/01#"&&#"'6632327']>'fZ"0YB!P Z#YC9FANM _ =L>h? ] 9EX/>YEX/>YEX/>YEX / >Y9|/ +X!Y 901##33#^6 6VKD3/ o/]а/@ /?O]/9а// а /а/@ /?O_]   /013#'''PLVKA߹gn 1 _/а//аа/@ /?O]9а// а /@   / ? O _ ]01''#%3#'3 PZM<FBm///а/а/@ /?O]9а/а/ +X!Yа/ +X!Y01''#%377676''7PZM7] $ ! k] ?M6,;///а/а/@ /?O]9 а /@? O _ o  ]а/ а/ +X!Y  +X!Y01''#%7%#"&&'''6632327PZ!;N5$UD3R2 -)*F>MSmDX )!`=3 9EX/>YEX/>Y +X!Y013!#!6?}6Jd a/]а/@ /?O_]  +X!Y в9/а/@ /?O_]/01#"&733267''Jtv 5 ebaZC:bmp`NTVK: a/а/@ /?O_]  +X!Y аа/а/ +X!Yа/ +X!Y01#"&73326777676''7:oq 4 `a` 9}) K `kn^KRSIYOT )ov/sEX / >Y01o!sEX / >Y 01"sEX/>Y01#sEX/>Y01$sEX/>Y01s%sEX/>Yа$01&sEX/>Y01P !9EX / >YEX/>Y 9  +X!Y +X!Y 901#"&'&$32#4&#"32$7CЋrh5ųc~ Gb?$H%&9EX / >YEX/>Y  +X!Y +X!Y01"&'&6324&&#"32676Lpmrm`|`})m}I~('_()9EX/>YEX/>Y9 +X!Y  +X!Y'9'/$ +X!Y01%#"&'&776$32#4&#"3267!7!pF%5ո; sˈELQT\ XW&P⼪$OROE7  'H ()9 EX/>YEX/>Y +X!Y" +X!Y01%#"&'&6324&&#"32676Q)kepmpj^|ܴ`})0!*g]ٓ~(Y H 9 EX/>YEX/>Y  +X!Y  +X!Y013!!2$776'&&'Yo a֧[3.! "z,=|rA9EX/>YEX/>Y9/ +X!Y901!#7%75}!D4C[ 9EX/>YEX/>Y +X!Y99  +X!Y 9901!!76676&#"'>32!fe$6yvu"SMƟsmY_J{i9 /EX/>Y 9/ +X!Yв9 9/  +X!Y +X!Y901!7#"'73276&''7 6YF'!BW6;&t̃h+[ӻ! f9 EX / >YEX/>YEX/>Y +X!Yаа/ в 9 в 901%3##%73!`868NK56I#j W"c 9/EX/>Y +X!Y9/9 +X!Y +X!Y9901!!6'776$'&'&'"zOܮɬ˙HO~qo6u,k8uFMGc-\ "v/а/@ /?O_]  +X!Y аа/а//]а/ +X!Y  +X!Y"01#"&7332677#"&&#"'66323274lm{ 5 Y[X{`\>'fZ"0YB#I$[#brsbMWTOANM _ =L:h _9/а/а/01#3B6L6M'()9EX/>YEX / >YEX/>YEX/>Y +X!Y9/_]/]] +X!Y +X!Y +X!Y  +X!Y01!!"'&&'&776763!!!!!77''\QV**Y]PT[\L޼J& `b%7#6"֗YS5-9/EX/>Y +X!Y901#!7!-@VX_6Kv / 9/EX/>Y  +X!Y а /017#"'732677!/?1*h$vì2L-&NM0KLR&eW%d'%YJK=:K=:H8:p8:& H8:="aEX/>YEX/>YEX / >Y +X!Y 9 / +X!Y +X!Y 01%2676&''7&&' #66323#"'Zf:q&PD5&֩xγwhV3{3LFGu ;+[,-9/EX / >Y +X!Y 9/ 9 +X!Y % +X!Y0127 &'&672#"'72$77676&#" 89P ,"zv )  }~ ][xOKLC1> >;>Ҳ֌k^#H$%9EX/>YEX/>Y +X!Y +X!Y01"&'&6632&&#"32776Wwd 1I+  ,ƅ,rj~FF#=C>=R]:9EX/>YEX/>Y +X!Y901#!7!8GMtx6=%f&'9 /EX/>YEX/>YEX/>Y9 9 +X!Y! +X!Y01#"&'#36632'6&&#"32676vs)'- 6tKt  -;](Y|3e]uip2A=mn_vq]DNM 9EX/>YEX/>Y +X!Y99 +X!Y01%2673#"&'&$32#6&#"Ĉ*7& 5!}ҧIJ<$f%&9 /EX/>YEX / >YEX/>Y 9 9  +X!Y! +X!Y0123#7#"&74773267&&#"Sr&r64 Hv 1 <^EZ},Nri[g@<(49j`zq2LN-$./9$EX/>YEX/>YEX / >YEX/>Y9  +X!Y9# +X!Y* +X!Y01273#"'776677#"&74773267&&#"Rr&-.&%Hv 1 AW~+NplF-?ӹ[e@<(49σp뉐:N E!"9EX/>YEX/>Y +X!Y +X!Y012#"&'&$326676'.#"QzQ`r˕Q_N{u{Ih^z`;k]`N#p$%9EX/>YEX / >YEX/>YEX/>Y9 9 +X!Y  +X!Y01#"&'#36632'6&#"326vn*g6*H|  ,(Z{z˅a\au2A=mΝtp|1I`N"m#$9 EX/>YEX/>YEX / >YEX/>Y9 9 +X!Y +X!Y0163273##"&&5473267&&#"V.p()16iIujM -BZ|ˁ5lj&HYdgy?YEX/>Y9//?]  +X!Y +X!Y9 +X!Y01"&&77632!27"!76'&&Q *)sF  ~)> @7p}S @SS,-!IEp3JN+",-9"EX/>YEX/>YEX / >YEX/>Y9  +X!Y9! +X!Y( +X!Y01273'776677#"&767763267&&#"Sr&-.%%Hv 5 @X~|{NqkA4?ӹ[e>;GQƂq뉐@'6~789 а-EX / >YEX/>YEX/>Y 9 9 9 +X!Y! 9, 9 3 +X!Y01"&7677'&7663267#''7'77676&#"l3ZohL~$7%Ex 0{Z3(#g^QIy6FE}flbysVeĖ6 [$`nlA?F9XPZIcN~ a 9EX / >YEX/>Y 9 / +X!Yа +X!Yаа  а а01!!773%MRk\Xg5c}x)6084Vt9EX / >YEX/>YEX/>Y 9|/ +X!Y +X!Y 9/ +X!Y   +X!Y 901!!!!#!!!J[7YEX / >Y 9/ 9/]  +X!Y  +X!Y01332###32676&'6'ӽ-6cץ㺝sȓm"-j)./9)а)EX/>YEX/>Y99 +X!Y%9&9( +X!Y01#"''7&?6327&#"&'32$7764 *ϟk}:Z*+гk|:H\'W)5Z )T_`^ZyL'qޛhggܱgRLQҢT=9EX / >YEX/>YEX/>YEX/>Y 9/] +X!Y 9/ +X!Yа аа01##!##7373!733!![6^_6W[)6*)6'V?/g&g6 =Kv[9EX / >YEX/>YEX/>YEX / >Y +X!Y 9 901"'732677#33P/?1*i64M6K2N52&BN!i!"#9!EX/>YEX/>Y9|/ +X!Yа +X!Y +X!Y 013#73!!!276'&&'!!w|x~ ڧr?m0n]6v܉TT֨mQohN!i!"#9!EX/>YEX/>Y9|/ +X!Yа +X!Y +X!Y 013#73!!!276'&&'!!w|x~ ڧr?m0n]6v܉TT֨mQoh]v !9/EX/>YEX / >YEX/>Y/]]9/ +X!Y 9 +X!Yа01!6632#6'&&##7373!PQu| x6x sk-x6ݦ#6$^=yLSJFDjpёK6X9EX / >YEX/>Y 9/ +X!Yаа  +X!Y а 01##!7!!7!!36W:WOO666 .p^ !9EX/>YEX/>YEX / >Y 9/ +X!Y  +X!Yаа +X!Yаа/а01!27#"'&7#73#7333#!iE>?Q.? @:272;Dzq7DM 3 35w6S7$7@&%D7?EX/>Y 01>&%u? / 01,&%?EX/>Y01] &%NEX/>Y01)&%j?S&%v?EX/>Yܰ01&%5D&'yY@&)D>?EX/>Y 01Y>&)u? /01Y,&) ?EX/>Y01Y&)j?@&-D?EX/>Y01>&-u? /01,&-?EX/>Y01&-j?ZP &2NEX/>Y 01wU&3DyTEX / >Y*01wS&3u5TEX / >Y+01wA&3DTEX / >Y-01w"&3ScEX / >Y,01w&3j"T@&9D?EX / >Y01>&9uF?EX/>Y01,&9U?EX / >Y01&9j3?3&=u4 / 01&EDEX/>Y,01&EuEX/>Y-01&EEX/>Y/01&EEX/>Y.01&Ej&EEX/>Y4ܰ901@&ECDN&Gyn9&IDEX / >Y%019&IuEX / >Y&019&IEX / >Y(019&IjrHg&DvEX/>Y01H6&u1 /01H4&AEX/>Y01Dh&j?&R EX/>Y01A&SDEX/>Y%01A&SuEX/>Y&01A&SEX/>Y&01A&S EX/>Y'01A&Sjqr&YDEX / >Y01r&YuEX/>Y01r&YEX / >Y01r&YjK&]ubEX/>Y01K&]jO.&%pJ / 01&Ep EX/>Y,013&%D /01&EEX/>Y.01uo9 /EX/>YEX/>YEX/>Y  +X!Yа/9/ +X!Y901!7#"&7677!#7!R|$+0C >@DA YEX/>YEX/>Y  +X!Yа/)9)9/o]/?])" +X!Y%"9@ %%,%<%L%\%]2 +X!Y7 +X!Y01!7#"&7677&7'"&76$7!76&#"'6632%67#'R|$+0C >@DA 9T燈!6c U.;\])4'1+TAji)Ppgt~vD54 !cS&'u7T /%01C&Guq /!01A&'FT /%01C&G /!01&'T /,01C&G: /(01<&'LY /'01C&G /#01Y'&(D /01]+&HuY&)p J / 019&Ip /$01Y&)D /019&I /'01Y&)? /019&IN /-01Yu 9/EX/>YEX/>YEX/>Y9/_]]/]] +X!Y +X!Yа  +X!Y +X!Y01!!#7#"&7667!!!!;t&=R|$+0C >@DA ^g"\md6;\])4'1+TA:uG69N,6789.&/EX / >YEX/>Y1 91//1?1] +X!Y +X!Y 9 9&! +X!Y - +X!Y01"&&77>32!77#"&767"!76'&&ʂS{  $19R|$+0C >@DA j:X; 2?;TV8&;\])4'1+TA\Z, HHvY'&)D /019&I /(01A&+^T /&01!L&K //01'&+SY /'01!L&K /001&+T /-01!L&KY /601_&+*!L5&K3 /301ZE,&,g?EX/>Y01?+&L{> /01 &-N /01&P /01&-pJ /01?m&pD /01&-D /01Hr&6 /01u&-eu&M&-o?EX/>Y 01:&-.LK@&MN& &.! /01K1&>EX/>Y01Z&/\?&OYm&0ux /01L{&Pu|| /01Yim&0L4i&P4Ym&0a;EX / >Y01L&PYm&0GL&PZP>&2ub? / 01?&Ru /01ZiP&24?iN&R4ZP'&2wDEX/>Y01?&R /01?&RH /01w&3pG_ /)01A&Sp /$01w'&39Y /,01A&S /'01wS&3T /+ܰ-01AP&S /&ܰ(01V>&6u? /01?&Vu /01Vi&6:4rN&V=V'&6D /01?&V /01,S&7u T //01-&WuO /'01,A&7T //01-&W^ /'01,D&7y-IN&WyL,U&7P -ZN&W%,<&7 Y /101-&Wd /)01_&8>*o_^^&X}*M&8yoM^^&Xy&8< / 01o&X &9dN /01r&Y /01&9pXJ /01r&Yp /01&9JD /01r&Y /01S&9? /ܰ01r&Y /!ܰ$01>&9? /ܰ01ri&Y /ܰ01%f &'9EX/>YEX/>YEX/>YEX/>Y9/  +X!Y! +X!Y017#"&767#"&&7332$7~R|$+0C >@DA :CX5Ĺ#%;;\])4'1+TA`n z%ru:)o$*+9 /EX/>YEX'/'>YEX/>YEX)/)>Y  +X!Y)а/'9# +X!Y01!7#"&76?#"&'&73326730R|$+0C >@DA < Gy~ u6w xj%7;\])4'1+TAll+ba|OTOD@lwR,&;"? /01&[b /01!&=4EX/>Y 01K&]q /01&=j4>&>u?EX/>Y 01&^uY / 01&>? /01&^" /01'&>DEX/>Y01&^n /01 >&uP? /01k&uEX/>YL016O|&u_}EX / >Y301Y201 &/'ge1]q/]q]q]_]01 &/'ge1]q/]q]q]_]011&'c&2DEX/>Y01&2ur /01&2EX/>Y01&2*EX/>Y01&2j_/&2EX/>Yܰ01\&2UF&0y<&(DEX/>Y 01<&(us /01<&(EX/>Y01<&(j`]&DEX/>Y01]T&uO /01]R&_EX/>Y01]&j==v&*EX/>Y 01M!&DEX / >Y%01M!&uEX / >Y&01M!&EX / >Y(01M!&*EX / >Y'01M!&jcH&DEX / >Y01cH&uEX/>Y01cH&EX / >Y01cH&j~@&uk / 01&2p& / 01&2v /01uo 9 /EX/>YEX/>YEX/>Y  +X!Yа/9/ +X!Y901!7#"&7677!#7!'zR|$+0C >@DA @H<>M$ ";\])4'1+TAjh.Ls@AU&0uEX / >Y"01U&0EX / >Y$01U&0nEX / >Y)01U&0 EX / >Y%01< &/q EX/>Y01<&(p& / 01<&(w /01<&(<EX/>Y01YEX/>YEX/>Y9/_]/]] +X!Y +X!Yа  +X!Y +X!Y01!!#7#"&7667!!!!3[3R|$+0C >@DA ^gPSZC6;\])4'1+TA:uG7#<&( /01h1&EX / >Y'01h1& EX / >Y&01h1&EX / >Y,01h^1&H)=m&EX/>Y010&n*EX/>Y01]&pb& /01]&T EX/>Y01xu[&]&EX/>Y 01 ^&kEX/>Y01=e;&0<&u2 /01Y01<&=v&u / 01=gv&J2=v& /01M!&p&EX / >Y%01M!& EX / >Y'01Mq&EX / >Y&ܰ*019&ui /019g&29&~ /01&u~EX / >Y,01&EX / >Y.01H&ya& EX / >Y.01_1&*1& / 01M1&yQcH&*EX/>Y01cH&p&EX / >Y01cH& EX/>Y01cH/&6EX / >Yܰ 01c&EX/>Yܰ01cH$c%&9EX/>YEX/>YEX/>YEX/>Y9  +X!Y  +X!Y017#"&767#"&733267HnR|$+0C >@DA 3&5ꂵ,;\])4'1+TAgrدꙹ› 8&EX/>Y01~@&zEX / >Y01~@&jX&ul / 01&5EX/>Y01& /01(&%*&)E*&,%&-(&3Jw(&=d#(&]4Xb&EX/>Yܰа(01%Yt&Y)>ZE,-Z/Z{1ZP2w3Z48=<&-j?&=j4\&X /0011& //01?`&+ /01c& /01rb&# /(ܰа(+01>:ANS`:vt;Z] Bg9EX/>YEX/>YEX/>YEX/>Y9  +X!Y9 +X!Y0137#"''#&#'6z7sA $K9&%h0y=$#bF$BBM,92 [9 4 8\&jr&jHA&S /&01r& /01t&B /-01Y&)j?T>&u? /01,,f-.9EX / >YEX!/!>Y! 9 !9  +X!Y +X!Y%! 9!( +X!Y01&&$&&7>32#6&#"#"&7332$76E炁[6Ư%6ˣ,[ykm[kXpzՓzI:Yu-E̓o]ì͑yS-&-j?&*.Z,Z&/u /01Q?&D /01%Yt&TY)[O&pD / 01Z{1ZE,w3ZDZ4'8<NE9NI@& / 01ANS`NTCNM 9EX/>YEX/>Y +X!Y99 +X!Y01%2673#"&'&77>32#6&#"#6$򡕹 ~ 6 "_`*ԥIK;];\9&Ijr?q&u /01-NWLMDh&jKN>&uq /01K&]f /01R@&;DW?EX/>Y01&[DEX/>Y01R>&;u? /01&[uS /01R&;j?&[j@5&=D24EX/>Y 01K&]DEX/>Y01bU b!+&KQ&D /01x /а/01Z{>&1u? /015}&Qu /,01&%2N&EY@&)D>?EX/>Y 01[O@&D?EX/>Y 019&IDEX / >Y%01@&DEX/>Y 01nza;8&MEX/>Yܰ01|-&EX/>Yܰ01AK7N&S]OwK &3]51Q&P,RN&PQ&'PCQN&GPE=|a;-&DEX / >Y01&ZEX / >Y01-3&%D /01&E /.01)&%j?&Ej kNY&)D /019&I /'01N&Xj''P'&j}&j?&jC1&jT,&j@[O&p~J / 01@&p / 01[O&jY?@&jnw&3j"TA&Sjqw7Nw&j?:7&jzb&j2UA&jjQ?&p&J /01K&]pt /01Q?&j?K&]jOQ?>&i? /ܰ01K.&] /ܰ01&j*?&j6R&'-^j?GP&'j_]?H&%N&E&%h / 01f&Ec( /+01p&%7%AEX/>Yܰ010&E7EX/>Y.ܰ401r&%8AEX/>Yܰ012&E8EX/>Y.ܰ301!&%9TEX/>Yܰ01&E9EX/>Y.ܰ2019&%:6EX/>Yܰ01&E:EX/>Y.ܰ501,&%'?EX/>Y01&E'EX/>Y/01-&%<T /ܰ01x&E< /.ܰ901-&%4T /ܰ01z&E4 /.ܰ901/&%=I /ܰ01&E= /.ܰ901B&%OQ /ܰ01&EO /.ܰ9013&%'DEX/>Y01&E'EX/>Y.01Y&) 9N&IZY&)h / 019e&IN' /$01Y &)N /019&I /'01Yp&)7,AEX/>Yܰ019/&I7EX / >Y)ܰ-01Yr&)8AEX/>Yܰ0191&I8EX / >Y'ܰ,01Y(&)9TEX/>Yܰ019&I9EX / >Y'ܰ+01Y&):6EX/>Yܰ019&I:EX / >Y'ܰ.01Y,&)' ? EX/>Y019&I'ZEX / >Y(01&-oh /01HAO& /018&-/&M w&3AN&SZw&3} /)01Ad&SM& /$01w4&37gVEX / >Y.ܰ201A/&S7EX/>Y'ܰ-01w&38?VEX / >Y,ܰ101A1&S8EX/>Y'ܰ,01wc&39IiEX / >Y*ܰ001A&S9EX/>Y'ܰ+01w&3:@KEX / >Y,ܰ301A&S:EX/>Y'ܰ.01wA&3'DTEX / >Y-01A&S'ZEX/>Y(01+H&udIEX / >Y3017&uEX/>Y,01+J&DIEX / >Y2017&DEX/>Y+01+&-rEX / >Y?017d&h&EX/>Y*01+&XEX / >Y4017& EX/>Y-01+&7&^&9r:&Y&9h /01rg&Yf) /01;>&u'?EX/>Y01r&uEX/>Y#01;@&Dk?EX/>Y01r&DEX/>Y"01;&hEX/>Y01rO&bEX/>Y!01; &ENEX/>Y01r&EX/>Y$01;&r&K&= K;&]c&=] / 01Kg&]+) /01&= C / 01K&] /01 .&H''0Cd ']/']01&8Pq:&P3&P.:&PLL&P@6q:&P*J/u&LP}2[?N&MP?LRt9 EX/>YEX / >Y 9/ +X!Y 9/ а а +X!Y  +X!Y01!!2#!#7373!!2$76&#>MpǕ,6+mBvPþ׳6)XRt9 EX/>YEX / >Y 9/ +X!Y 9/ а а +X!Y  +X!Y01!!2#!#7373!!2$76&#>MpǕ,6+mBvPþ׳6)XT R9EX/>YEX/>Y 9 / +X!Yа а  +X!Y01!##73!!!e~5~kltEk%66q: R9EX/>YEX/>Y 9 / +X!Yа а  +X!Y01!##73!!!2[6[WwN`67AG#9EX/>YEX/>YEX/>YEX / >Y9|/9/ +X!Y  +X!Y 9 а01!3####733!:I!C{6363Q(*9Q6)Su9/EX/>YEX/>YEX / >Y9/ +X!Y 9|/  +X!Y 9 а01!3####7373!qv1IBr`6ڐ&6&so)6V 9EX / >YEX / >YEX/>Y 9/ +X!Yаа 01##!73333a^6`ER |D~. .6MKSa;] 9EX / >YEX/>YEX/>YEX/>Yа +X!Yв  901%##!733733H5H8O;a6Tk9EX / >YEX/>YEX/>YEX/>Y 9|/ +X!Yаа а 01####73333~@C\A_1E-D6aZ;m 9EX / >YEX/>YEX/>YEX/>Y9|/ +X!Y9а в 901####7333#@NEAEV6 1N&*'qh ]01Gnff@89- \q><{!S&+uOT /&01!L&Ku //01ZP@&2D?EX/>Y 01?&RDEX/>Y01-&%?EX/>Y ܰ01&E?EX/>Y,ܰ001Y-&)?EX/>Y ܰ019&I*EX / >Y%ܰ)01;Q-&-K?EX/>Yܰ 01&EX/>Yܰ 01wB&3TEX / >Y*ܰ.01A&S)EX/>Y%ܰ)01V-&6?EX/>Yܰ01?&VEX / >Yܰ01-&9?EX / >Yܰ01r&YBEX / >Yܰ01l(&d8Yt&&L =&F`Y&(i ]?&HnYi&(*4]_?&H/*ZE&, ?&LX Z&/u/ܲ?]01?>&Ou? /01Z]&/n?a&O5rYm&0 &P Z{&1 5}N&Q ZP&2 ?N&R^ w&35r /2ܰ>01Z>&4u? /01`&Tu /&01V&6y N&V,&7-N&W%&8}o^^&X&95] /ܰ(01 &:N / 01t&ZZ / 01&: t;&Z R&; ;&[ &> :&^8 [&&3Fq&2'&(< &<&<W+&  |&<^'>& [2<1<(=m][=;=x=vM!=1~@%]&j=~@&jX<&(j`=&u[ /01][]&j= v=;&uf /01D9&| EX/>Y012<1=<(;~& / 01=x=mM!=S=U01%P)'*+9EX / >YEX/>YEX/>YEX/>Y  +X!Y& 9|&/&9$ +X!Y&$9 +X!Y$9016&#"#6$32#&&7332676!#73666 raG6G5/`yxKg_ 6=mf9/EX/>YEX / >YEX/>YEX/>Y 9| / +X!Y +XY01##!#3!336<3^_65`a63`&1UR"j #$9EX/>YEX/>YEX/>YEX/>Y9 +X!Y +X!Y"901#&&'&77632#6&#"673F6F *$Ƶ6' 3ea]Z"ʬݓTR~@>Q$&PZ;~&p& / 01D9&p&EX/>Y01[]>&&sum&uuY&$8&D8&us8&j`~@&Du&%KuN&EY&): 9yN&Iu&2<}&(8:& WaaaaaI6g3Ys b+AM_k  u ) p N 4  ? AlGxE/Jvq<yU'At] gAgP+%  !9!E!i""5"z"###$$,$M$$%%%9%S%m%&K&''j'()R)*$*+'++,,T,,-V-../X/0J0111252h22223/3c334"4=4V4_44455T5\556A6r667>788999:_:;A;<D>>?H?@7@A1ABBCCzCDLDDEDEF1FpFGG|GHHEHHIVIJJK KKL)LLMfMMN8NNNO0OP PUPPQCQQRaRSGST9TU%UUVLVW(WXFXXYsYZfZ[r\\]J]^A^^_X_`abbc c`ccd d#d:ee|eeffyfg+gYgh hh$h0hPgs̸̡̊ 7CUl͚̓ͱͽ2=Te|ΈΟζ4KWnyϋϢϴ9%7I[mёѝѯ ҈"4FXj|ӎӠӲӾ /ASep{ԒԞԪԼ'JVbn׀׌מװ 1Dط2DVm~ي١ٳ(?V|ڢڭ'3?Vhۊ۠۱0GSj܁ܘܤܶJaxݏݦݼsޅޜ޳-8Neq߂ߎߣ߯ %7CTk,D'2>JVbnz/ASdy.@R^p 2:BJRdlt|.6>I[ckw #:BJVhw7O[gs !)1CUait(3EVbm&>Vn*=Pcv 2Jbz (:LXdp|0H`{ 7NZfr~,CZfr~%0Pamy !)19AIQYaiqy +3;CKS[ckG ".:FR^jv#_<.R> s d+IIK;TWpf{HzfP~WB+IgI$I8I9I-II]II*IkkW^s6l?JYYuY{Z^}ZM&Z YZZ5wZ5wV,6 jBn>!#I=CI]9|K!I?L?L5I?OAII]?-oIrt>(dd?if1y%Z}qx~6butxIp1 56Z7nVI<II]M3H%> ZI=#\T<A{ J76Ur'(IB"y%GM( KFJTc5wI}ZIds e\|I3J1sI?.cIYI*WE7r6j7zqtt`;Z&MiV6sWRp1[sQGqLN'N*hIRRb9}J=IGS?A,I@>JHI?I?qZHA>>rG"G*ASH6I?*T?I?I>">~Fh:M:}H 5wh7|5xI<zjYje$0A>G=[#@"GTfJTa?HT?Z%>W>9r3Z#?V?F?edJVJ2W>-#sVI?2Z"?gZ|HuGuJS  \&p(Dkdn1jT.$E\f)HBHB@@-@N]rlPP8hT`TxoMf^]V'=IDTG 1SxC{B'uvHvjiC^sWP yDDv6&5\2#cPgI~  }zcc9L=M==<E= ]=h=2= M =8[v]U=!<>;HD<V<<X>>VB=> @8H;HYh-~IvY>B>p4M f=o4'Y5~<z\UZ?Zg<]U< J?n=UMosisi?YiCL{S- MIIII0II&IWI%I'IYHpH=gkG=DGJJ2O:GGI4K3z@===WB<N<Ng].uYuYuYuYZ5w5w5w5w5w6666#######C9999HHHDI?OAOAOAOAOAIrIrIrIr###CCCCY]uY9uY9uY9uY9uY9^K!^K!^K!^K!}ZI??He]]LM&Z? YL Y Y9L YLZI?ZI?ZI?I?5wOA5wOA5wOAV?VV?,-,-,-,-,-ooo6Ir6Ir6Ir6Ir6Ir6Ir56I<gg       ]U<<<<]]]]=MMMMMzczczczc~   ]U]U]U]Ug<<<<<<hhhh=0]]x] E=<<<<===MMMc9c9c9zczczczczczc~~u}I#.4YuY}ZZZZ5wZe\J1I?.cr%>OAIt.8rOArqtuYJT,M&ZZQYJTuY[Z}Z5w}ZZ#9I@OAIC9S?-LD>T+@Z5#uY[9I@s7z|Aw1,C|##uY9''1,[I@[I@5wOA5wh75wh7b*AQQQIRGI]############uY9uY9uY9uY9uY9uY9uY9uY9H85wOA5wOA5wOA5wOA5wOA5wOA5wOAJ7J7J7J7J76Ir6Ir6Ur6Ur6Ur6Ur6Urg qJLS6J2I?RRJTS GSSJ1{I8I9I-I]qq>]q{^K!ZI?#uY9;5wOAV?6IrYI=YI]YI]}ZI?Z?Z? YZ5ZI?5wZIV,-o6tt{[  WB' <<=]E===M=~ ]~<=]] E=D <=<;==M==]U =]U~B>;D8[|]~#uY9 <l >W D33fP [ GOOGf :               nt ~%'0S_g~7Y #%/EOboy?M    " ' 0 3 : < D t  !!!!"!&!.!^"""""""+"H"`"e% &(1T`h7Y #&0FPcpz>M    % 0 2 9 < D t  !!!!"!&!.!["""""""+"H"`"d%eD# (%^S~|}rsolkiaYP!ߔyMߪެߞߝߖߓ߇kTQ 222tt~lt0Rb{z|  }~+,-.   ()*+,-./012345678wxLM}~NOPQRSTUyzVWXYZ{|[\]^_opv   ~xcyo{z%&&''|(01127889@ABCIJKLQRST_`a befg}h~+ 77YY  ##      "#$%%&/0014556899:=>>??@ABBCCDDEEFOPPQQRRSSTTUXY[\\]]^^_abbco pqruvwxxyyz(,159wCL}NyVXY{[_`o>?pMM r }         " % ' 0 0 2 3 9 : < < D D t t      v    !!!!!!!"!"!&!&!.!.![!^"""""""""""""+"+"H"H"`"`"d"e%%,K PXYD _^-, EiD`-,*!-, F%FRX#Y Id F had%F hadRX#eY/ SXi TX!@Yi TX!@eYY:-, F%FRX#Y F jad%F jadRX#Y/-,K &PXQXD@DY!! EPXD!YY-, EiD` E}iD`-,*-,K &SX@Y &SX#!#Y &SX#!#Y &SX#!#Y &SX#!@#Y &SX%EPX#!#!%E#!#!Y!YD- ,KSXED!!Y- ,"E- ,#E- ,' SX@cTX"pY#SX TX"pYYY- ,@ ZX#D#DY- +++ѫ_8+k8+w\:#+v`K6+fTA/++ E}iD sP t tp u?s_ss/tOtottttu?u_uusousst_tttt?u/sos? s*60N`o`9 ! :[ ^ ^  t $ $ & " @ , 8 &L \r T  " .Copyright 2011 Google Inc. All Rights Reserved.Roboto ThinItalicRoboto Thin ItalicVersion 2.137; 2017Roboto-ThinItalicRoboto is a trademark of Google.GoogleGoogle.comChristian RobertsonLicensed under the Apache License, Version 2.0http://www.apache.org/licenses/LICENSE-2.0RobotoThin Italicjd(Y%>E^yy  "$%*+3466;<ADGHKMQQTX]^bbddhhjlnnpp  ((++--/2^bz|  ,$%&'y 2LDFLTcyrlgreklatncpspkern $H %&'()*+,-./0123456789:;<=>eg/3579;ACEIKLXYz{}   "$%')+- }  :44^67497zd88788898D  89X9469 F7\8f5 8:8:8:78f8|9v&5<9v@8f956969v8:xjp55!8"`#^4%885B888&585(@)))*5+n5<3F+-r8f11:3$3$8f2p23$3$3$679X9v3F8f5545<777845<889545<43p444:44`:499:9999949499998666666647z7z7z7z888889999967\7\7\7\7\7\7\55558:777779v9v67\67\67\444497z57z57z57z57z588:888887888888:88:88:8:9797978|8|8|888969v6999:::9999999:::::999:94444::::67z8896677z98878898D864868:79v77z588775B6757z8898D4847\578f9v5<559v99969v44488:67\7z59X9v469v845<867\67\7z55545<9778f5B9v5B9v5B9v67\67\67\67\67\67\67\67\67\67\67\67\7z57z57z57z57z57z57z57z58897979797979797769v69v69v8558:557688:67\7z8978|78f9988:77888:88:98D8f8|89X9v9X9v9999:99:99:: %*,- /6 88:?EFIJLL OO!QT"VV&XX'Z](__,-./0589;=@HITdehjm  p  qr""u.0v35y77|99};;~CDTTVVXX\^//22EFIIz{}}  "%''))/8CGMOTTeimoxx!"(89:;<>@GJPRVXYZ^deghrt  xz{FHHJW__puww{| 89Ew:;= "$prt %V.8EGHIKSUVYZ]VV V"9BE`ak2VVVVVVVVVV#2345678MNOVVVVVV V V!"V#$V%&V'(V)*V+,V-.V/0V12V34V579;=?ACEKMOQSUWY[]_acegikmoqsuwV38:;=9E2 "$2345678MNOprtw8:=9E"$prtw.9bdM  AGHIKUa"B`ak79;=?ACEY[]a@GHIKU"B`ak79;=?ACEY[]aS KMOQSUW_.9bd  Z]#qsu?'+35 !AjEFGH-  JLNPRTVXZ\^`@'+35!AjEFGH-  JLNPRTVXZ\^`8%<= 3C]"$ "$&(*,.024prt(%  "$&(*,.024GHIKQRSTUYZ]"+6<>BSUW\`ak#  79;=?ACEKMOQSUWY[]_acegikmoqsu|| GHIKUYZ]"B`ak#79;=?ACEY[]acegikmoqsu< JYZ] #cegikmoqsuAGHIKU"B`ak79;=?ACEY[]a:m  GHIJ KSUZ ]  "B`ak        02  # 23456789CDEFGL MNOPQRSZ[\]mnostuvx               79;=?ACEKMOQSUWY[]_aq s u       \^4D^&(* \^4D^&(*"Z\]^4D^#&(*qsu 8:<=QRTZ\]  +3469:<>CDEGISUW\]^bcdlm"#$ pqrstuwy|(8Z]  9:ELcm#qsuw?8:<=\349:CDEGI]^bdlm"$prtwy%'+358:= !9AEGHIJMPQXbdfjlnopEFGH"$-   "$&(*,.024JLNPRTVXZ\^`prtwyz58:<=39CEP]bdflo"$prtwj%8:<=  39:CEGHIJLPQ]bdflmop"$     "$&(*,.024prtwyz18<=39CEPQ]flop"$prtw$8<39CEPQ]fopw8=9E"$prtw9QRT\  +46:<>DSUW\^m |# Z] :m#qsu :HJmzvGHIKSU"B`ak09CDEFGPQRSZ[\]mno 79;=?ACEKMOQSUWY[]_a EGHIJ KSUZ ]   "BQ`ac e kp        02  # 23456789CDEFGL MNOPQRSZ[\]mnostuvx               !#%')+-/13579;=?ACEKMOQSUWY[]_aq s u        :HJQmpzMG H I K U :   " :B HJQ` a k mp                               7 9 ; = ? A C E Y [ ] a z   "Z\]4DQ^p#qsu    :PJcemL  (L O P SW[     KMOQSUW_   LxLx[  AaM:JLMXb d mn0.08@JM_il :ILbdlm/Vm[m|}+KaFRIh < .0<8:j@IJ L?MX_c1e_i lm0n AJVXam| 0#X[:IQJ{LMXbudlOm  :cemJ[   :cm l[  :JXcemn0[T0IJLbdlX_:mJX2[3V[m|(M~gejs^t}y}  .08}:@J|LMlX_kcei{lmn0 AVa0J  A Va0[0l0  n&% x -&~| v8{q?;QyVD3DK>,r'jzb m %),4 8>EGIILLQTVV"ZZ#\^$'()-./02347>?@ABD  F  GH.0K35N77Q99R;;SCDTTTVVVWXXX\^Y\cefgilm//p22qEFrIItz{u}}wx  "*/8CGMOTTeimoxx  "#$%&(25;BDEFJPQS_a  eghFoHHJW__bbddpuww{|u !!%%&&''(()).. // 0033448899 ::;;<<== >>EEFFGGIILLQRSSTTVVZZ \\]] ^^"  %      ..//"00334455 77 99 CCDDXX\\]]^^!!!# $ // 22EEFFIIz{}}             "" ## $$ %%&&''(())**/0 11#28CG MOTT eefi$mo xx#     "  %"           % % %   !!""##$$%%&&''(())**++,,--..//00112233445566778899::;;<<==>>??@@AABBCCDDEEJJKKLLMMNNOOPPQQRRSSTTUUVVWW__bb dd pp qq rr ss tt uu ww{{"|| "        # ##       " !   !$     #         $    #"      " " " !   !        bDFLTcyrlgreklatnH .AZE CRT FRA ZMOL NAV ROM TRK      c2scccmpdligdnomfracligaligaligalnumloclloclloclnumronumpnumsmcpss01ss02ss03 ss04ss05ss06ss07$tnum*        60nL`tflq210/(sutvrwQ    ;/0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwyxz{|}~    %&'()*+,-./0123456789:;<=>eg/3579;ACEIKLXYz{}   "$%')+- } q210/(cs0ut/rwQ    ;v123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abdefghijklmnopqrstuvwyxz{|}~    EFGHIJKLMNOPQRSTUVWXYZ[\]^0468:<BDFJMZ|~   !#&(*,.~ *BZrMxN`H0I$'`^ab_ MNI26rJd~"<N$.8J| <Fh.8BLV( &,   &,68:  &,HF  $$*06JL   $*06bd  $prt % &,!  &,79;I  $ &,KM    &,ce  $qsu &+-,. $G $X`Z\^ $Ya[]_ $fnhjl $goikm%)+-/46;=>EIKMOTV[$]^*,-./015     OX{@JMMJPPJ*  JXXJWKo6,- .6/O EIGFHghijklm '(+35FGHKSTU nooIKj.Y]WTVUZX\[RJKLMNdeff pp  .pfLNMKRedJT] .Z\]WTVUX[YJKLMNRdefp.pfJNRRT]del &<  !"#$%& >zst?@ABCDyubioath-desktop/images/000077500000000000000000000000001412677075700156365ustar00rootroot00000000000000yubioath-desktop/images/add.svg000066400000000000000000000002711412677075700171070ustar00rootroot00000000000000 yubioath-desktop/images/apps.svg000066400000000000000000000004441412677075700173240ustar00rootroot00000000000000yubioath-desktop/images/arrow-down.svg000066400000000000000000000002301412677075700204510ustar00rootroot00000000000000yubioath-desktop/images/arrow-up.svg000066400000000000000000000002301412677075700201260ustar00rootroot00000000000000yubioath-desktop/images/autorenew.svg000066400000000000000000000005601412677075700203710ustar00rootroot00000000000000yubioath-desktop/images/back.svg000066400000000000000000000003031412677075700172530ustar00rootroot00000000000000 yubioath-desktop/images/build.svg000066400000000000000000000006251412677075700174610ustar00rootroot00000000000000yubioath-desktop/images/check.svg000066400000000000000000000002731412677075700174360ustar00rootroot00000000000000yubioath-desktop/images/clear.svg000066400000000000000000000003671412677075700174530ustar00rootroot00000000000000 yubioath-desktop/images/cogwheel.svg000066400000000000000000000014411412677075700201540ustar00rootroot00000000000000 yubioath-desktop/images/copy.svg000066400000000000000000000016101412677075700173270ustar00rootroot00000000000000 Material/Icons black/content copy Created with Sketch. yubioath-desktop/images/delete.svg000066400000000000000000000003271412677075700176230ustar00rootroot00000000000000yubioath-desktop/images/down.svg000066400000000000000000000003031412677075700173220ustar00rootroot00000000000000yubioath-desktop/images/edit.svg000066400000000000000000000004621412677075700173060ustar00rootroot00000000000000yubioath-desktop/images/favorite.svg000066400000000000000000000004701412677075700201770ustar00rootroot00000000000000yubioath-desktop/images/favorite_border.svg000066400000000000000000000007411412677075700215350ustar00rootroot00000000000000yubioath-desktop/images/fingerprint.svg000066400000000000000000000033741412677075700207150ustar00rootroot00000000000000yubioath-desktop/images/help.svg000066400000000000000000000006301412677075700173060ustar00rootroot00000000000000 yubioath-desktop/images/info.svg000066400000000000000000000004401412677075700173100ustar00rootroot00000000000000yubioath-desktop/images/launch.svg000066400000000000000000000004141412677075700176300ustar00rootroot00000000000000yubioath-desktop/images/lock.svg000066400000000000000000000005671412677075700173170ustar00rootroot00000000000000 yubioath-desktop/images/logo-mask.svg000066400000000000000000000052521412677075700202540ustar00rootroot00000000000000 yubioath-desktop/images/logo-small.png000066400000000000000000000064471412677075700204250ustar00rootroot00000000000000PNG  IHDR88'IiTXtXML:com.adobe.xmp  iCCPsRGB IEC61966-2.1(u+Q?01Q\p461H)[BIk 7k?~[vE. U"Rr5qz=Is>{5V2z]?dy-4wG'`goTձ`p~+bVy9+`iUT-/<) ^j=h]Ӌۆ WZ[ɴ&r -hJ~9|%Bķ.}gp( pHYs  IDAThKlWό' `^!}MZ,khT]nRUE4EJA)MKyb;G{Ϲg&A OR=Z ,5PSb:P?0L=WbB;[-HD W+?XIqiW(.z)^^nR/K)f{Bw[7YhT~vW%ՒG՚K }_aU IQ ސPE!x:ZE(J=>.>icoVen8qkЏ[Y_bDz)#@*4LX2NfS4K61Kua@`eEZd[HBЕ{\=帄"ke wˇޕr B.}Ç k8YϬ1A ,n3 b(QDdտ\/)o ZtBV(1EvЦʹBW5JȬuTnPEi:%k[K{a1m5jJjRJ[7uUS(FtqoxWLdBTj ڂIBP. MbEں Iulԛb#nB-Rb50~x0D܃+Oúza/P41QrJԲvaR)% KO_Tn!Ȯ?7Tz] KĿzQdsVaT:y.' ?ዒ/9Ϸw:g#EA'ESs]Gˍ@,}Sd4KzΖTMFvn/'\ؐ9@.8ZO#IңՃER{ٯyu C%ö {UOwUF6Gx `;iCCPsRGB IEC61966-2.1(u+Q?01Q\p461H)[BIk 7k?~[vE. U"Rr5qz=Is>{5V2z]?dy-4wG'`goTձ`p~+bVy9+`iUT-/<) ^j=h]Ӌۆ WZ[ɴ&r -hJ~9|%Bķ.}gp( pHYs   IDATxYlg/oRRd]V%YrX$X΁4@")&/C )R1-дEѢ@"r!NƮ-n,;-[-RuQ<>0rw\-]@pfs|;zQPA<6~"T"STd*LEP*2dW0~٫n*c(J&vUIɌ)PWJ,<9a3Vksj~WK-ݺi=xEN  VRJ%h$|j(J tvk]7Fא/'h"Vjk݉y<? T;J2Dn+}ؖ2O-Z& Dyc0f,H?w!fJd :>8զ?.}ysSiwQXvL[GzveudG/6|ZkkV^h}h2C8}frò'}^kWMI a;1o6:5hϙ }˼AQѡ)aGtaOzzWԦ'{HyԒ 0LzuFGHXm FBq 0 15)ͼJ>#(hb[8Aq(~GP`hFS|'ulQ+J)(^ۑ[EcI"A*R:"娴Pav/K ZiOBse Z}pjWexw S)(3J:;!㶱v妔]́5?=A@#\ׯ5כH`3fW8"¯U[LqW_[tsSy{tJAoYZ$#< ,m4$ۊ߯dd1aD"!fR,#Y|T>ސ I(Dn}UkTP!{V{L>mcrHL:"}a\'h))5 *ݳݧNet_ưmw::%3tH'(B:#tRE#NIBAEv2 33lJ9z܍ldH7m1G = 4Vu"ӻ۷̲\b$^dE6c~7 xpN[تmUui-f(ZH,S><Ӿ |j-z E&$BW?s>8%}f-}0B|:E Nd<0`fzj=d& } ,G38<%ض z"'TCiI+ٞ?DyC*Q]e2!coZ}3=|G&zfxBr@|@ Z](_ۓ_,{)<E,\nT·[^3]ԯBvC lK5}$WES \ЀC?.wn~)Q/;mOyZK1>x^E.h#ڶY;0xIJzϵOr/kA!>խW5<+M?j;8fzP£ޣ\3mY5@Ji3tsYJ-h&/-aa{uv#%> H@A0_UHI@F6@]j`̯W9Z-g&|5[Ӧ=@6%s:0*%.xd˯V~o\{3O.ۇwlE!홨YbѶRBWPyJJMU%46TM5zv۟-Z2LI!_7)[DKt> CEi j TNYH$ Scxs*+QPK(n<2n;e$`]BٹEJViBtg!hRSk̿wUYw=\5Z qs4/yyj/O.՘jǂUaD^ݫWqܨRԚ4l-qIbي7 F| G(:97C:!Zs h0~[-C07{& Sc& ^`7=54%?TASpVOPwP9i6cEgBT77ytx)<o [RR2Db>p1,Cnhtnծ,WRSSx`({s`AjefSd-y& YcX I$zϔ:f..؀<ز4X{cD&<g츃עc\r'O 1 *"gDo8f.OVa}O,kЕ\fIMew .e&(xcC~4b*tX/̾BI#Rwp)ߵdfϸ_P6w_wKQy0~gEo䆀b@ĤBU0$OH+rT)jj9@wٹa4?0 75C+cs4+uN1ሚuȄCWݡ+()%M<5 h f*,@?RXM~s!:iyubioath-desktop/images/menubaricon.png000066400000000000000000000057261412677075700206600ustar00rootroot00000000000000PNG  IHDR@@iqiTXtXML:com.adobe.xmp H؂iCCPsRGB IEC61966-2.1(u+DQ?bbXQb$4Q~mffx7l%6~- *k, s۽sӹ+RvE7+<yTYO[TPh2eo*WiG͢nkPV%9[; uCA#\0.zgE-`Fh^*2 x=YhB~9Ⱥ|A{ge pHYs+7IDATx]h\E&bkS֯hG,ZAWEDH`-jPAj`iRVՊQG\^v:;wwf{7ssΜ93 B Y || Sw X8Gj=3ãܝW%kC` S X tkc72G㘝Ύi-Oޠht1K #gt`x AǸ4uY4hcǙoQjz2,iwzU>~k'~}ѳ lH{)|໹K ~%2ˀ$ Ek]1T+'c`3pCo0IKBߐsz`Tִe7300 3mG#` S#ɪS UG !d4]@_TځkH _> |pZE:3 @W7?#5@LEC"$F,รJr6W"5g#ዊ9H;id9E6QC~dg4}W[ʝ^@5+), <@}ĂxNwp"<$TvAFsbGRg_$A~B%ma_ez)ы?EA{8| +آYZO(/\EF^^ԙr}ʆ !5a`!̙0ڀ' |+/x#G|ܤs *U` =ވs> K jc}+ |K5k=W)}df_kɁ⅊z Ч iJZ U;ܦٷTiQk{RA;"g:dk!OG6:OQ#YUb A$pfdb-m)zyON4ϵ(W[ }ơ(c[d5:( 7Q= Ub~Q*ru%5EojAj]]rN܌\}~QOxWUPpon~+>js?9uQ$g |ᦫ#Z7#T[yubioath-desktop/images/neo.png000066400000000000000000001222611412677075700171310ustar00rootroot00000000000000PNG  IHDRZ=gAMA a cHRMz&u0`:pQ<bKGDtIME+77HIDATx}weGqp}39GIP090-D0$DdM2rY;Y i﷈yͫS1a c01a c01a c01a c01a c01a c01a c01a c01a c01a c01a c01a c0C'0a5+we\"EysbxswSݩw0x cv|{KR˭6Jtμg镸kpǽrg?}\< s{,]1gv:ǔE@ɑ$z9?g_w\u1~k/|rgy1{ n{z媿[ygWV6 0GJv=z'm޾m%\_]8wsO`ø;oqŊ%Ku~-]jY0; 0F#$EQgԊ}=W^>a~}ʳ`xf͘oSqhY4@B$A'qe'^vW>o>a>u<桏gyzCnx~y$ 1p!>(UCOwe4znwʅK~ڦ?I}u wy0чq~sw0 ٿyƦmOʫ4K`*Փ"Jh`mH@& z`Y^\/ckv|u.^W_wnLv삟c @i VpC) @!xZ\WUHP Nr92e{x㟂^׾՝k1чq=)Ŧxշmv02hchxaE0Z#k ( yᝇJ)^{y >7ÏAdgJ }?M~#Yں~1xMB+ R J)x(x`As6 |ac^?:7uCp5d&0vzm[&,_[Ƿ} n,L{N4M+{(P/cqt`E>7/cY[~x;ñk//=DNg=sxXl/&Gk1hxwprFjrп&}^@eU! |`;f>V5 n cnKcldr#|!mN8e44Ih.eP:sr Y}i)BYh/~%\=yp;?~øc=ŬQcvs=^aF$!X4+ X(6ԇ(˒^)ࡍFUUp镣~& ʲCAA Z(Ya{]<+YVXoagdu køO㘣74,[wruIbaKe6SCQù SnFCt32`!xj &Ȳ y5XaO/E$xc_:0A`֬8ܳnp2ZM愆$Aq$5{Xc8VCi%;x研F@@i1IziZӿ) pYC|V0Ơ,KCs9m Ѩ*zŏ@@jm ׳~o/eUGdgQ }jϾtF͚ys&'^vCX$JK`̑N4z;jKt|Zk-.4AUQ.R4wU,%e /3_hgv {akG< {Νcҍ6}mZ-L$&T;PUaR0ZmZxd 54M"Ay . eY"8NpiܵeÇЗ/3JOyԓvKguƽ|(įO5_pdlݳ1Fk klCq%ҚJhUU Yƥw$>^t5UU@:rD# |d9گ~.KÞ+Vo/ݎa˗c LvN Z(7!ZWPuFkDȔ JEZc2xuR]5=*/g+n6[߱k$0чq 1['4If]oWF/6֐8$'z_kc(y<⨍nk > M3hU7ZYH`;A~媴??LaűfZ)H,KxVK{UW+>*Ӽ(z#=͓wG>>LaEzH8ꎍw#>܉~U'>|ه>~CzkЇ(ZTQY5K"GP%y~,Q4~Q "NtM{vsȃ9wjxN)NE-_c͚5y ($1>?UF}Q0E8ZRU;"V%XdM ʈ{N`^@‰mBY9E^UqtF쉵H4_@f_}c0@Cga[7:m=v.70h,\dZ̘9#eU~oeDF l'R1JDs:-.t`iM.3Hl^iڔ0V*LۘlOp+M$(!䀬KW( Tc4K ~@@`$^~?jbjrd35h>4o/˝&0 VX I0^ʻw%i{mty-ғv\E5{xB I38PVW ;ٹsUD}~Qd;e-RB0 $]iXhcaaԌ-\U*h(n9F;h&]zٽ^/?7w:LaL% #IR ^J BM#)_o4cۑ`D =Z<La֊h HA!I(nP1$d1@)#MveJ9TkUV1 1ME(?H~T{k~:LWsθOD~66r4ţox |r6M&͏0KJUcAzhHzeM'j*P]E>IVNPM1( &HO_Ajhe"Ϟ$RJ:؜IE+b! %] &_kU[0+ws3JxZ y2RIx^X t hʩ,JeYF %bF(h}L^0j,KLNM(Jx?n"E`0HJXQxOAeӊ/A18trjrw?׿K𚗿 wG$҈TѝV)$IU z;Sw[ t8هs8A?A+SyMRB%=ϒkm1T;R%I$[U&ch(B`FP|&HG% ibRU_/B? YE9{b?(LNm3fheW#`@Xck,XvX6:Ӿ76sY~qQGCk&=9 a&"s8yaE1{Z k,5XbN!.LT[S;V< EG8Ts9X.)KRt{=L Kܻw6WFoЧOĠ%3Z3m̜`,|uYȲ I,ˠUMP~4~b2߻}Xܱ=%osY3gbNW Zi*OJJ &<m(j1o'BC ]_] נ\>@-+CƐ.?g4n]^ ds]gw2Woaܻlb1kiel⫮6X/ mxKcltz|/|!MJr魕4P.{E+H)_f$p#ϋX^N]\3 .ot2Dgeq-sqI@+v' (A$F)̚9{}O?8lɘH<ȔbFlw /×,^z~ K0o\~OarhgB7]3f9ՙ:ih#S/m)yrq}0p`%3ʀ8&s|ƛpVh (|X( kr6.B ՐqќE+kK~Mv(rEY֭Z~ηi&\zw}F^B).Y wXmjkg=F Qdݑ -w$#__2IFkHlI <9zႅW捯6cdy;n&\~~~X|wlپ \<8jO=e||92:jD#I촖޶$Mpx;IRęžp]5Wc*g /%؊Ż_3/ N|g';C.+WĂ=S>Yi8(`fժ7pfZ ul.BCNPzm12P⶛ڢ8;t<`VwUB I8c@滋%PU`ګg͚}=V}zjkr h(,Y>A ;={p'c/(s?[=/&l$kg~eV&D)*ѭw!8 HƝeY*+h찇OpŵWũ?9%szҭf&:XJ#1-^=VeUE1 y |4U-G4 E例}yڠGUqW,k,[+K1p}K"O%wP%|#&v_|<蠃o||/ oi|A8aά9mL6IȺzows mDѵ*'$.)3'qRG]"oj%:H<->oInEYp,!'2IB%>mft&V&Ș* n+ ա}$YQiQav@0p0!l=B1!2W!xxxO:PV/_Ko0l(#K;x3$)3qDAH#}r4TQs!2je#(˒kuXm !;Zջn4 DFEcȒ7G?,ci,eQTSyd(~Y(pRk#_64Med$9*n*z ZԯdJrH>?Id>Xdg=s֜ŧLLnᦫ0gxxkwjez/o$)嶌Z䞢,5R Ѝ# 2#m50ZX-NJ&vSqIc Oy6VV/35Yjހ ֬HĴBXh+޶b%6:*df/y[ 1ɐILZY gKoyB-~afXftvJӽm{k~?5k֠lUx>g%cO :I<2]#DIBic҉>;ifDՆx؜bӜdzXJ!Q6K0eUti$'`FS@FCUVU%IӴaT!e,)ӡ^Z AypD"Xw?D&6!cť?}PDRr0ȋ L35R| Xp1l!p̚iFK^aM,'F4bҪbM 1" )5dc5Iz<Ң%^@b=B4.{ʲD(2%t 4XQycI5% T|r(atOFc#ZD(@+a(JXFӔ@ra ܞP@m?F022k ڝ6&eDqN.<1> }|>$ΐRU#cCHg^/bPP_yR>khm[@P,F^4]/eee'Xϋ^,$wUQa睇WT;2LUD XU8JM=v@,AŨ{bIl MUc,ʲ@A' ֤gLUe09ax.yt-X`#|px쐪&'Vf#xO)6" ݔG\xPj5lh!KSUUbCpC{c,{_1ߝoqЊ,=#>eG4F*1C%0(UB0Gd,=`!ϩTQS5T1V<>* J* (?@A,*#ɰF*-X$6AQb*GQ*n6`f:Zfd|7Z*dJoZzXHi+.[\wc Ս%2$Hj<+h#vmP1$l0`EWd5 =z-@R؄Ae/.MfY-&,?ygTD1Lf)bP6j, 0M@TERM\Tdcz'`$]o۬]КHښnX o8͝~f̅fQgjyU6$IBĜqt #rΓpUN骪8`ǪrjJ3``0@T,Q>rF N>hiB4EW;a ȸr N)[aHK^JP1kU>vSon(eʕ2wAfUY +hZ/CnIXl#w6I٩'e$qL`3`[lZXCw7$Kvo{ok^(V)fƕioeFZ-dI,6:>1xo, ~LVZ#M3ḑ ȌW<{{nv ߾Ɗ "O lbM h`l&O@#S2^RfǕeg8ם02P쯉ښ)U9|;׋bN*;m 򜫸0Sٽg6{J@sM{ox1::y3fH?(T$)̼oAЕ9RPD$!Оl!3F 1v015E80.c2D={ڵX?MSIB\@ohk PyPU,;\6at F4QEGRK1| " 69$%QKJ2cYh*gQQ9/Ek8X+.3eUbrr2&YACJuɃo'߃^ `Kpk{;<0޿7BIB3=9dIdIHllr@XM@[e1:n-۷#hLj`9)L0c2rEd[%x,"-&)h(q\^צ[70HG|-M k:ppbM>UM)oZ)B:xV P~4#a\2&.6ĵPqd:t#B@CEU:[ *C*Q`&ژˎ,#GkirO0SD屜I%"|98>֦-8L{)V-_Il.cEʻ"2hhU#Z-B]LJIX19*5% M,RkQ&me$7 nxQpd,^_x0Ce-2<ޡggm݄k(AFx퉵HdͰ֨X*OQZntʐKd)1=*$(,bS *%؞(Xu[YgZX'I@sVS1ؙ t 9ӄ-"5wׅ%Dgn~ǚU12|pIY/(]*&M7Vf/7K'`6jcia->9A,QV)<x"<+yH[),Dg3͎Z#xa|L|;Oǧ߅q]9Um,C+Y_T[M7oN͛X041,zBXfZDT(ch} t#I2u6a|=t`!9ѵD~$I019N-܏8 N›2G=|7uߗCQ= DoI,(]Aa~e[UPhn!EhbXd)m4ݴe+&;]MGp2[Ax`06`av%.A0Lh̚5#\ kN2 L\Y%/cxI‰~^e6!i HmNzye,0_t悤7v=d2Npqt]> m5uPFJ@+tz?9L{([c t AEp`uf1<"٪ˍ^m'L<7hILu8#x>XlT@РVu&8ɛoǐW scFq ۱y@!HF.Ndwy*~$T>VT-Ҋ;05^K L^E75D/TOFT$:y߁? B%90L:Xh)V+䘥+>_$ːiQ+V;A?\2NqhXFv,It9k{xZ SPbjJl PzP)NtW3k׭#[nގ6vVV aلeztUUhlLPwUzg `fꮊ(y4A$zJ; Y!*,ZMW&_fŁעAk3:ë˪: n[Q؝E(~:!%i,R">dqv{h !oƹ-vXp&Tr#{NĒrkk>DWuiŋp>sp[p2*xkK"E+{6PQoA Bt+ek9A BPoWA8D[)޴`L1@nv(xtFq͇)MJ_ JsPQ/ap|e_YVՇ|CPi8GC4;J ; !"ҍ8z"u:j'"â/^c79|~k?'$$v7 R3s53pq'XEXbjgβ\.ZkQQq1@"c4o:1[t@&Q` BboDXR)@X1U p^* QA^:Ơanb :rʹh#*aCc(}6.VFz'&'i==ƒ?^R/rIRN/̪q[oϢxlDQEJʘIsrՉ'64Z(N޲,k>IοSwMJ&bRј%0CD\<'ĒEdĻ;t{]NF<^Ex 5 %yQIɭY֛}v䫪p+Ӹ}Yf>S={68SqqbOO@FP{}ftHAcPnbU@&FhE%M(KsMfmyYVRJXtV PO_y_ "lphLO0f̝5wܵsUEXĚD#]kNq Pl/DcG(rLLNr{jCsZxҼ?Ǟ\!2K;$r]zh<3qa3ntkS z|$xOI$|bɤa*.7"UJ!uY,Cue']sÏ#.=^vMZs%$& ދC@.^ėNbw#Κ 4̞ (UV'eqlЪ$6J*.AZҜV)dYƾ_y]fz}~˲$eXbrj y$_8cWcLZnr 1& P=e@S4zyV bSkכYsZs-2^dVv%ɄazI WEI@U EWזbA/ygҎR<T$q'Lom;љ)>޹F'mPj9s0H?b"ZZܵmfxL骓KGjk>6hZB2=׺*qaIP:Y"⧮ݸM7orոc6ov`W?{~s-ؼfeXr;Pdƾ -vqJl<+NlM|ע[W\Mˉ:,"[8z{(Z?:8 $U$fm6Ugm^>@߿ג&sfQDo6Ͳ+e26I}Ijzj7hfFK1#2*_ =Xe{cYL7Ir4Jxb}'0c-lݎS~}6mncՊ913kCa]Xg$-6,KbaaMݳV^?d5L,KM>7Agj%*6 M@= D?e}8I~$hz{l NJ{3Gb9+z8eAY%f.9&=݉5qģ!(-y!. 7]S,Ť7xvM+ 3p531 P*} +胗)ZsZn™܎VƢųvb@n|r:?UioCͅב *KK,z>G\"L rh%]|}qVOt$M#NNC[e`kwbP8PWT܏e?7Cx1X6k _\IxJLB~nHR*,&+цGO@BG ' |3 ȝ-`x,7 xET{7i1ћkp-wKoig܈oێ?x<p%qڙ}a;fphG9+Fn,UNT5hKlr;R.$jE "",>e`]םu~4.NY=,i !RY=D@x ֐ۻJcib͊=Uڔz?]&%2Kt y}O mV("LPoZf\(v t1 ~Buى 65&@PI+}GܹnufoxܭH<0,ou<%oߎ`dt{ @xm/m w&90Ltu0gfy2(﯂_i+~J)f]2FoF =KwD ,<{2zb@%||+Jrkfŗށt<;1c,ۧ^;|7,[8v>P5=yXFj;pm]K7ye P94 '%+BܕW*%F$*Lkm-bY%o>p'Y:<¯qӅ**_xb(m|eQ|4/WQٯ%A)Fౌ6o.I$M©"Bۤ *'#ْ2gxE3AF&2d5gB@6j ×c_]ۺx 6L ;VVሃV \B}FsT/{+CΙ7@ԟ8+ı8݈4DV„.{?Sh011ɩI2qQy& E V)ucU}~7orll K-k,-SJZ9<4'; c6IspxE?NjuFRz8,0(*:^@$<=QϨ9r-~0Z -a:Mv9ƉVy8l’gbm:h &qlNB+͐6oތ,ة5\=zge-fHyK9`|j cª(m ZL|tM 4ٓ]/5B>#5IxJ+ $M2roc ] HWյ{JM5{) mԢ 7TY=)xnG>lI(5FFgMfviH33ṕK'<VfCVbh5`G65FP~kH4wɊ|*,$Q,G-[ZX$IRE0 Xcg{'`=EqGL9khْL$CmEއR ??\'O9z0)^罃2/keH2ιv踇\R[AjgSjIZ.$A!:`M-vGljo9FgHdYzvW Q5G6j*U9nbS Q@po^s L* HY%:uͫ4E{WTqJMĶ LAEF~!lvUUm!Cc<ϝ=}*r&1z? ^K/9ɓHlx5 #`5I/RMc%dXV Va=|ƻT ,j[3*y1mXKنLD1b%+ )a󜶤%46e)nֶ//x-G/:}ウ$6H0Ӓ(Y@`r$RnJªńl&h g~v#5 9O !N'I4@;P ۦ*Um5*Nj4m숏|nAl R@ƉQ│++\|VT|PϻIbtPBf۵ێ8> |F/fB*^w (iTEUFN_Ū3vAmZkλ/>sL\i`*_wZei1 KG^5dŤ/RQ/7蒽re$U vSaK{-f[ liPs5dnmeVPy`X?cU'@jp8-q^s%k)Ωn{;(63$ Lۍ~<$QYx>x??V7TM<}td}ZY -gOu_cl MiKxw7E(Bf %v-D*˒û*ڂ!UE5 >5ϓE TiH0^'(tn ޺G7)MtN+ `,uL#:)oM(pby J4yjQDrjhAk2( ۷oGLeMmJ:-@+x7 @˾M.?@s_)\}eyiJf{5MUU!KӸE!dFb"[c1՞ʒ*f4 |wzeF%VFt@]1v|->Oc=0k;;[|K41)IUͼFFF0Uya)sܛ/zBW T*Gn4 lX_Zzߎ3XT[ dk7}ۍ?O>g1]󠐄zteX eɏ—p#rE wA-ykYTfXIs&rbjSSmLInT*q| (tfcrw'x|̛3o+'i!8 '"Oȋ[q׶awmK$ INUY9]Kb 1$s(YGU[JV"FTuX pLX5qNP2RQ\?MI,0?0w/û?q $IЁUlq\M?Vr ښ=^5Mؾ};SmR$I|uzD[^ڠ .Xܑmn_Wzy$Ma)!D]K!rI-fM)r_.94TԟGJW@V@˭ ;f5|`w6ZE+M|Ǐn#HQ{ɞ( Q(9\ھ.99+Y7ך[-}/<*Kl۾yQRoSI6mjV ݝVڪJ_=\?!G0ʼa3$MI\^P|*iMT.}h/6j7F̶vaW);e._',|:]e/&ʠzCݴo؊I/c$4<޺Fץtܔ$469N8^(4Edid" 8=7&[8DS!9YficvT )I\5LBp/&9+רkR\'bի7nUMC$T4γ8EÖEQB A Q֎wm[V*W+3^VW &~d5e !wI0|JӚ&c8nޘ6am|Qmc@Y ]gᇿۈB'IJFYM }*&aJ;4/P㉀ R$SZ < ?zVN{ 垈]*ѿg}ƚGOneUB1UR.2&Yc Ӷu&W>D_׆"v_9.3A3ZARnt@,VSLm7lppxߞ .>Z˜]xYzH?Lpj4=x 8,pmٓ/?}cFf뎼.2c@㠔04&&' 5#7yL>UUQm[ҍjZ5 m,g/[}Xv\MZ$Ii A@2!e+J`?E"w-˂!lB@pi#@YV3^D ;Pǿ{;θx+^ux̣Wcݣ1YyӍ{De!.8;nنF|nշml4Cf,%/hds  jy26pBQ HM,&'步 ) $%޻7͚SPV9BcZIYBxNNEZ|ws[\U5MXULF .KR6n꽳$CYF&1)=P ur(Q J/˜")G&reQ%οi+?v9f3~qwᆻr isƙm4&f>@)4"h)yӮ:B=n݊nKЍ6ZY(CP$LAmXS]YصsfC+nMyW["KR%dĘp ؜y37UDԳW\"tpEY@)QV!p+AFՂ=I'C Ѿ1 i,5뵊s+p֕W`c}`銹5wY+6 :nrUm‹7᢫[;HGF1b ΉĒ+"2?jMtz5,؄<$@ J5_@!O9_}Dk;1ٞco4ɎkO2qV3.YkMN1@#; $pUXFʲ+#:P#@;d-xUi{8#8jJM:*@1Af?'Xwp#*Cfh,b0c`lFDi S[ ]`DmSQ׬'!NuJ2 >zX ܘU7XZDej YR˄\S;ʲIBQR}صnts.H6v-.M>|12:B WDeB+WYKBW48eNm-q`Q-cP4AQav9/Bvx1Z+ -{IrHM*h$ X*e؆5F{qђXrhJ/dU=6yάCǎ;$ ]z@kv [d1:Xi{޽%léǕ].}p?k^fy^YE!eI=d E5lݘZs/B|D٥ r;p/1QP(Ƹ/T@7 Tdx! $dBjc8*r˃Ic^7$ q$tY% ~> =B2nJ?XnIR5Xh,UOH5qv HD$y[fS܃B5oB5p 9h2&Q)ݶ2D Y5!Dtx[[6 "|x\z:,PL2kH5iIK(L֋̇)c+FZ-VՂY )#*EAM5 <&4IMiF'CtzzʢXr~7?.;c]QUG7WEr#4z*?@,,kƛT<&Ի.o?V!x2I@Lj0ԖВqcR~܈EDmV CZk%UALd 5c뷉v4Dz5d퀴PH=1e(۶mG^tpjE؏]74iP y{QYV[S<%XUVf,7V׼iq9} FtLJ!bϪYzjk^twQBȘN* Css!HKV׶Q!v4hcb,dclM tro9 bag;M3E^ B`N3dtK kQ!!x^PV쒉~EcŒ58yw=*(yzbR3fd<tlbM# Hj'$^ k|t!b+)$&AU,qDϷbBDj6aZ.K co<[NPGX ,UU9{rsNEQbr@7z|v*!m>wxf\@TaL]2ܙ Tἠ0BE/bMŤ\j@V)vQ\!Ȃw%bFY,Z-VBU!XO& q7|AԿk !PfV2xٜ3ר f6mY>_<|rv> m4#)띬uf2MZY9Gr`cHjO1x)L3DbyR @fhe-.S?3m#K!W>џơg]rM|?&vNjE4hFTqK=V//F =b1$@ƄoPj$ر5F 񖋎,Vn&ȰSrH+P \ȐO ..sM1ۏ" AU[[)`xZV|ۓSS=mvHi/X7;CoZRu?aϝ5=΍w|&/IRkIf#(ثW Fx q?3f@YjDžWnE%%Bd]4I".`[Y\'Zq摛6,m=7{ +(0_]i#2nT#/(Ur$IwvHe¶KTNtxGRqXkDb&gMіƍ_fOu7|2wcbFk/|GraM'Wx!xIme %8Ũ&۸m(|iTPo@jdY $HvQpQ{yD[509E ״ʒfּ419`*%I1cj>"*OO7;0caνMaAFۍmtxUZJ\/}=>b¥XdOLNM)HP g⃯= MYU>wOtg'.ێ;K̩oq,-Dgs8JiUN%Ru_ 488&Ȃd(6&tlc,5}ڒ/[;ټg('~y^ʡvXcA&5 ãڇ>Ejh1h9 : e`'9I͇|{:7G< ׿e}a6oҠzҳ0ctnZ,]bMJcme@"0x/[^| ,÷x3{q ETQcq]#wnx Ƚ`٣8֭v٥7UT8 u _! UF]b4:jmB`TuU( W< rFӤ|.,yBLd+q5R`Tȍ-BYhUEbZ#2Ncrr2"&nJP\{I˔6g$wxޏ4_/WKHGqݲq olPa,ː/sg ~xؑA'-Z%$7wDѸhK_;Oz2cA&t3fiMozwwAYAsUr.F)D?;}]0ehAMqO~ߣO~}An*dg@{P%9k'샴#3qg[{!KIp|30;xӋkS1<}C'~\uFG&р/Pso6\GIb1::Vs\r]hҠCbojj0)%P=r5VS`pT1[N2>LeQ"IS%(l@pGo6=(;}=+c,>oSOo=C4Ri  E|Uɏ&I6#~Kb0@i8pMw(|>US;mqN`0{p 5=X1{>K.ڀ >'J@82_],\L{^izMFˢAǦ&62Ҍ췌5h;hۄ+h I?h~R|!W*/-Z)tC*1 ~NGq>`ݺ}G/WSiʻ̡f'<o{Xzx6}Pubk/|JO^eospݖ`(4< kYfc`WvS MR$_ N16DSJY̠@I?6;:ZR SS r31k0ݦf5kp>~?FS;W_v),Xh~M,⺟;B^r,TVѠJ+BԙcSI\ni7xC5N/s'^#0g( 4^+l^:.݈݊]ʈb:FR-ۈQK,q=I~vzJYJzMEe ۶nCW(Eiel%dL2PJ!JKW02:}mѼ,mO "ϱlÛq/MSL&U+T&MS_){,4JR=Fۦ/،7P<"ݖ5ZWߗ'\nE 1k-FGvm?* 磛*i2ZFb+A>iԈ,TA!zBM.sV P .D: Bg7imwp%/Bݏk_w+)7o;Kx -s٪qn q!U w h|oGxQ;k p|pkTDyǾxf08A{/#*6Bzn.ނ4rUvHEלћFJ k,!\%zsq ͷ O XLLLD a7/ !o w**z&OcU{akn״SoVZIҴa#53x <9xKi YQ8_ι>kow7tA{xm?\T#4D<<ǚy oGN鷮JM+*eߏ_v_ %G`vHG ZqmxË1Ƽqֱ#LZ~f_K]_h"BQ%wu1Hcc"/ӎ0];ӈ9̰+j BFo>n`y: ^L,{SK@Ft=oRzv wٸ[g_WϪ815I$M,3s_<"͒Fyn身|ѫ4N3 vx؃ۖGn1` =|?x5)FFF,5tʠ !)*')ڐz;&6AG*5, prsw[(BQ [pw7fge~HLd˜{EqXe邒HBmcReՙ/uY5NJez|m '{qaA7G{o,o\U8rxˏĚ5|{>lD4je]>xι6ყDJaՂіl, X֜/[m+Y=GoAEa'Xݸe+ K !mټV(+,ćZIkWA{DiZ%]=ww(w[]kh }:|੏^>`m""$ՙq&V/_z8VHV!v n_<g_v'xy3mPp|%^C0g}?Ix%pw ćO>&x۱?4EӽhC!n߾'וQbdH|me}ߥ׃/MwC! R&Qebj ݦY/n,O@~=Bx ״%Œ3 obD/ Fc7{HƲ#?fcLGo<>>~~Cq>˸G8>0mN9>pO}>TnfE,5zewOƅX8;}*(ji`\7/Vtfϙv * j,e(@y4`@pAYU㦖B|#A֤ .trD7f Fv[ Fms'f͸M^.s#/Nۈ/|7oQGb,&^Ci* 5IqUɓN }(8h%'u6lZcD}ީ,ƛ; k_c Ž\S^r&|g'1hmedsCBAyfEFSm\ɈsXNb^v `*e{)nP@7Lzifn!Kg7&.2 2w 掤xSW U8316~kqsrP i'}w{(^G`;n~;Wߴٸ xs粣K,8 g;2\|dIAbQn,9t%{FGc]{GqZCYZ v11tiiܰRmRzr,C&HD?{~q7{~ytQqİe/VO|P "ہl\{ݍx1_]Dy:dO?}9~;^1st fP)[W8[8>yaxF6J~Gy)V+#⣮7EUbm\Z>(rhMh m4ԯ$r^:E>oEo\-cRSCPI=Ektj̛d{?o?yPvT4Nr>`jp`>(m.; _p#5xF#buq*稵mG?}6>  2z.t]TM1 _xQx`IlO}5(lŕȢ1%a-[H&RR6 KT$E?1n#u pBxRT9N72op ts???/UU(:JK܈% R,c~rF|S?Uwn y ^Al"%.pS[W?wjn&ca[tpA<gYӶL &ùm;?K0#hM?xXkax6زu+ʢ~ʊbUѦQ7(>3g,InNyƭ-J}PZwǾ7~clioF?^WHYq2 +i u6h"UcIaxCli4^mS7w_\;}Xt.iЁޡ>mg7O /}=k 8;Z'Z_݀O}巸sBklfԀ O]k}rSSQ*-ыGQeiQZ#.kceV⫇{Mc3n&8IKCHJUC[VR'nZ]ヿX+}Z^M;c6#&K7`͊cՂV ; ߼ GĿH,?5H'vo=/U_uӱmwwatEϘF(׵F)33_=E6:cFhc-jw{sز5p:ڌ"*ϋyYUyY`|r(=,h9Ͻ_ Mc? ZkLTKNU~7CKBJk+i%9Q9dž2:S%..z-*{$>po;^w~jbAn@NkGO~~)a ԥ[>oÃO |;wPfzZ-͚yqUr Z3w2vjBᰏ1b䯣rDa=K^<{Mfe? W+}sOtt`-au2>d=OS窘R1XXZ4ӆ~{ʼnlآO"Q@q3_w;o;{';gsک'/0E^KYM:STō{Wk{CX\4ˍ<'3<{,,.4m&Ck_Nj_sz<"f;s,y7SĿZo% }|#(uH15rKZzS!ٺ?xT{ Wlݫ aU`S,,y4b6}4 oKgp;NC:3XFMN/JtZ,:3(fgkNk-GX\^>n&n_rW*l觾Av1ZwyXD :xK8u +RZœ:Ovn?Om//b0?.Y=f$'WA\Rg)f)Gz>}ᛃ@KT3in@늋:~0&D>یë |[%kQ:ܪU4<7\nlo{6Zr12؆Oin ^(E9.fR/,Bu▌2>[))t/`fZ[,P f:{/.F [|a7mfPZt|}#gIļָO8.w۽F8/`º}en3 8x4ZBI>|HD .QaFdT?8י RMfՙd'SV;N W E51l61&䃡${vS!S_Y'֭84sW߻G]|d{=ˮ &Кnse.=;٪d6ZME#GJD_!'ՕZّVʕ,_g=pVǃ:ygr>_bM.0tcc5Ǫ͍7]=1`w !{-~&Xqti |lى#ƂrZi8yRO9x^ʏc[F=P3[4-n7D0SZ"z^<֯0xd' W}_YhD=a9[<*H<"ȷD2{֖Pp4QJıZEѣݘ1fhhK)J%֪9V̴3^mDD&\LS:QE::G G 1Nz"2xJ=iOw<vtk%Y_Jm_\#"xv`69mN,l)n/p۾1ى8ZC7nR UhlMM' "Qnz00%Hk̶7^嫛PJU W;l$Dz^s?Z5;S2&Za~۷׎aIaʊ^/mr%ڞzs%yV^+4#*:f$nk@&1h2^^p Hsg.ޕ0p5͈l0]݂TV?CDBXc(e~00YX|!ZD.TJ=82JsgyT(A^";WYqCO9#m- rh*eY)clR-~Az_QJwkR'AT3ә< ۺ~͹,L],p$σij2m.Yn ]AA:L]YGQ}(sNUU׌q3YBBͰ& ™ 7^]](=ry1UZo締׼힇;p{rQU%qj F#1eUNoս>_PGWO<8 `J#?5s]xiE+s.Ш2Il/bMxq{Td s3(GKdRQzJ7km-'n:"w#A_zݷn'|ę>3!lJ9WYnض-.M~K>S˓~W}_ye܇ÏD|So'PPPPǯ>8C䦭g RJad25RJd)gH!n!uoSǛI?EoD x[ߊ}{q'z;=7ޱ'i)%BknLrB9gL'49!Ƅ>ڶ7/,=sm׮pѧ>+nv/A=R GxK__ys~ t$n֫v:ͧ)%6PJhk,b H0Z(m !F*)AJ!5RL22:Eם{/^[v .ʍJA/(((~_1'?[^޵JJBH0LBrFBB! TuEzNPR‡]Y7|S?=uCKR=F)w#rθKcii zkpW}[m{ RJ4&)g!FX %cc@kcRJ)"ggd;[o?ḃח~_F)w>z;RWןt׾]䃗Jih Z3BR 匔1C6RJA*!D @v.z=_uxkgQ zAAA݀<98cx2>}Ͽ^s}A%T)Ѩ\2Sl4pZ(#uuU!*Z)TUm,|胷mo9_پ{w7__6(ē$̦S/9wW\[nM ,//#pHЍN\i:HAd8) !bʐB+C@ .?.sc5>n+Q zAAA\p45O}Skw>&椥1w]SW % @52,QlU!gbǔP75R(BFZCJ Ō3zMܺ}Ǧ#:uZAx߿їnBr/(((//x1~qQGWqvNjv<" ( !C A^ CDu\Л)a}s@MGR so{(~!猵5Ęrj;}k-{w/8O|d/y՟}k/^N8.my m֘R"z {@gW7!I% cRBR9EDR_c4RR!@;rZkPR@B1'}^׬ ~ Gr4SK_􂂂 럹; /(>?W[pBZ,ȋ] 4#Od0vBJxO]< =J2VZ z,-6)CH3y+EŝrP F)(^t]w¢m=^׾pԁGc~ zAAAW+= Gt">g?Yocs"2R0FCBRAA* R[ JKHR hj %&MtDNT̅s9CC@.yfHSDe-U. @)& - t]=uB EP[ / q Oz.x藢;@ g=XZلOO_ˍ/ڵ/hR345Cr~8Xx>9șmRH!3N8+o7ԧ90|藥?R OyOjģCg\zer? R 5o}[/e^H29 8#lY"V\0ع[m0Mc4.ƒ 8勿/]O֭[^ 5c>E61+K H)Hz.XY^B:#ܱ 9%0BD}gP$*HCWwpq:! Bwd3RΨ9@"ѻܹ{ï~p s @ᴓO dnIgxb=* ș-V-^U)$H,fPJ#pvئ4Ԕ>P鱴1H9v\kaEJ J)cc RmX!47 DڛO&cumc2ҁBk!BQ#?c)?+^ׯEq_藳.(/bz83k}[ ƔT4Bt9gN0GK=F" C Tb6"3I푝h?_W0@!/b3g?ؾReL .^>9[H Tꖙ.;nc@ kIHG y]4;Ęcϣ_U]a}}FY ;n1N`lFqåCΉ&BIU BR*hmCD1H1b:X~s3|hv|~-?!ÉG.d_^PPpo<7.w#ڧvmJ!FHEek*XCoy19c:!zD,pަsNЊtkd:MAN:m4<1`ٜhmA{dw}/Vd'2Űrǯ9=}]pi/W8\~Q zAA}{>& 3O 'xॗ}wrBnTbJ:4.RGu]C #%ͦ:1Ak~7,Crml5N j)': nhoڹfy[DMSjjڕeFݾF2Jjxc:pz[Da5{ZI`:u\3х=;#F3Bp1)s@dĔi / CUUh@&9EvFInB^$+Yd,nEמvܑG_|_qqK~y_X^PPpcc'fK3<)O7\wu뭯mZʌ.l!;!m(Zr]uUCYD&84 c1T)0=@6.D4b\1Σixv-k Rh!DXkCBux^+ VPZa2rĠƌ+.3ƲdC>ow_qa+_xoH^PPp0r)ګk3O~ywlyDd3I3DžH ڠ[%D8=ruPJ4ޱ1kǂo!Ipޡ{4d-I쨰w'@dB]װF;w%;!g)`0ccm}{=iML7umֿW{z=q KJ~O􂂂<(l޼еݻ`>^%!*n֧6ԅXԔ#b XJQFe T<j䔡ҤH'% )&hMYEkq$!Sc$vmxz2&ڳ<괦7/f0giy$ rK)F^M QB\׷ڮ?x__^O|&tԉS'Q zAA5^0\s-8 .iw-hJrRNPR!x"XP !5.0X9 2b;!5v| 9X.c@ SϠ tχbW)Ҵ& cеg{)< 2˧B ~`yzB<4zGb~os N=d\xE}􂂂[A Vs]VLIH Ұ\E=Vd9DIXcQ TY~8Cѳ6( {W=ӊ1B=b,h,-GSa0Zi&h0NYBR&&Bo0" n]k ɤA 9L)2ФS_,]G÷=oڧ?|ܑG_to^PP}G=ش?g38n~b]1%u9'#ztW:NZ?dkR5!D֞KDE^>J! a9nB:uk=`!;mhg s5|T5#l;_s+5]A)mS& %cWO9'_j|{~>|1'2~􂂂;g)(;!$|2ȃއRm&y[ d Op!=%yZe+>~T4Ga! ?n>~县~\}"}QQ{R /G?K/[LOwNjvq$1dPQbK8$fB/M{nO,ƿQWLZr8σ'_$=֤i k)2x=h"UF7T0sNMXGoc,V8uUZi@)Ir6w/PBd.c btp)'ࡴFQ# qLd~_o^vH'v,.};'Q zAAr0ׁ2?hoߜU]5%6<$ )-fͶ )DAkg#HIh>+P;-wd~N4 C=f2M@ݬwu]fҠo{iܯBJE l)Bn5Ji{XSU=*[ Mi2g!|aֵ_E?g|9H\v}[P zAAR7zV ܹ )AS<Y܌`8<c-1j[yO1f2J)t]?&!g(md62~0` !2EJ҇K!P75k@B"G$4]M݌9c #A#ϣ4]B؁5EL)ھȀa&tݤbњ;wک&m۝wxO~CeWcoww?^ ͛6CWVv!OnQ U]!M 8O6.;-hB#Lޓos(ssȨA<6a,0k+hcP755!;E8BCYc{*zc֏;TzB5))fffIlmK6{]b1ںm9lڴ@wޣz8硤l:E{b|D۵=ndC9ZN+ $|9ߵ[oGg~J//g~76Ot:`iy=8ޱ V[Ĕ( IsJ7$BgU~{HD϶{$}Bi [hGL&5Uma-w=c}Kdք/-/#zb//- IFNm_)Fs=DΫ-0r"1P,E;݅ҏ}bVB 4A0G@iE;z]_ZKozGoQ zAAя~4~ g?i{c|~} R)rRJҮVkde9eǢB . }ߑ[nlN?t4M미vЙ"]3]+( eY hC-!%BJ\RQ=8$eZkBL{`rc!H#<RQ!;:L>;n]whBq]Yf'6t0L>q̐ye]N0&8d2c5JR dZM]#H$Sp\GhUqȉ X";%Ev{3Fijyz0ϙU1i&fKݬцFFm%q(MB^ł@fS4FN es&֊vw]x4+˙MoRHTJISr}[?ko&y_p?m/ ((((NhEu8*GsO;W)I=H[jMrc){ TMM,jއKA;EN "C8JJAJN*3][1KOCuehe&^"bR>xf+(f@.scPIiv!4M pL>yУ[]ӵkss{{<w B (%%lpશ[ ]ۡm[tmB}ס;6wl*8=uɘ>x PZ%=xz\JhֳX4nO|߅l61$bZزeRIm !h++Q!lmYM@KISc8H!ضm'hlFBYV`yimA)tA%Q9gT1ĘD2L9sjo8 @롔B]W}Cnq;n|_"uW+G>ѷ|Oc;=i_޻Zp2RwSOBQ5Xc@`= -1ehP؉Nq<5GR ș4C\2UMIJ((liE*؝͠zA6 VYX,RF$װku ?o7t]ˮoQ&z2sToԙV֒cYݰU:;Apq;a-[;`,l4b@ zJk]7e+k{(VH9,| ;W8v)#z YZ^w鄧t(u<صAkƤi`e9YbĢﰺ5mcNēcBAu}{;O9eW]?}߫P zAA݆9 zR#mlg[~YfrQm3m؇\2njk->9ȇT\EDN a.B tb•sn4S1֎1hm0_cWZi 9y׳ хM֪h1LQ75nV:}Hg%cBΜR玼oyDS"'HX6& f2.?1 <'Pj\P&v-&u:$7󁾟4U,] F]5%*c Mrf 8HrCk c OF֠D6\xQ##2st}Ok!T{gv_ڕ|ǻn_[r)g}zߕpAxG߿? R 8#p?bOSBw>8S+RO0=8@zUUЊQN>$N.kvn9QcyF7{f7!`%#yw>F]Ր4Z'f|]W{`A੃O)Aqd(ce>=$3cyM :ň;v`uq9YR@/)!ON !!8?^I!K:I@뱴/@`:* RJ8>uNp$iLZah"’Ę\pwIkk+tEϝ?s ^F%}̦٘ʯCUf+o-/"Hn54&u;$%H%w=Ru\R%!@;!ٌJAkB+45ڶe'9m[kh $L] XsDVu 4VWR0ԈXx{A?;w4pGe,ڮ̖عs,0Nyb{ڮE۵̆~'I.9]* .y@n\|9cf *bj#FJP1#+5)-ib"e {z= ">*cG;*Ag4i^PPy睇ULgA%՛ww1H);>X k yKu)H&9BTRi$$D'P5ju-`mˌkȝ 2R`B)] c,wp]k4iuJ*vfx!rb20>%:(X,c@wc!e ĥdr=9q @{x{~W5l.%s@&b@.S,fѐ>!Rih-wz @ 1$g0#1Nֻps/s`E|}r􂂂wKFl{;{ޢm/]bB*JJTY뮧1xU)k,V6o.0ԓ Y&)mGtrwC`ۛIٙ j tnlu&R6`: 1ϣ IHBD]׈FC'縦i&1/-$!X3xb`O:F>zdJ1s=4 ":zLvrfK8Rn} yQc-0&2v G99!kr)~ͯgqᓟFܣ(M+>#+ڭ_ڵZ؊Z22# (Ү=#۔"YkGll24"q !9*M@i*dF-){oc4X^^F׵0+\&̈́fpht4:$x@y ,ͦB SD7B.G[աXR'M!JA/((qaL(.TokT#=$gFx7<-!>t7oM"`ţzh?G{|ΉiM]aFmH99 Su%')9Bly5dt9 #C :F6iOcmVHzס{sh䊋y=RI}ʐ^Hx{`SG` ;~Qt! iiGaBɨ*7bnsI>G8Z".uE+3z=#_/c|o=R {ア8>`]˟z׶̐0ƢjH=aG(*,= Lw(=IES|VZN0703띭`+N]\bB3i0MᝃҚ\\l6HqSm[/6M(<.{,]d!\JlFf@D?NS"͕ BX_,C1L8T]| r.|xnD"gHCѾ`#Lr0耜!T{\݈ ! YwNSsA%l>q^<lEvznATMR>5A. q)E纣Vw:cozγpFH}Q zAAWq|u޾u˭7.\wOƲ\I (P rbԘ7sފmQsɈwd2Lu^1ve{Z\B5CgiXԴ#1H9¹$}p*,ݓ SyLIblvy.N&Ę6Ĥb30VHheiMJ" m8t ڶ=tc'JUo.Vî_` Nh1ڊ9Hth#c y!4MV!J*@;t}wl7N8/}ӟ?+8};S􂂂o^++1MNο_\%iܬdTU=z$JQyvvR;42|3GtH7}N)[J"XP-ps })hEvޣѵXM{L{{j[Y69RJekubA8 KK蝃rdG.:qTצq:w9Ais9Pb̈́D힯Lax"CH5h ~1oibd:U\V9ƑgfԠOS>~O t`#ww_~QE3 \r%شi3!ģܢC )()4R . ]׏!+VcIdoť"VŐP[&Vp! e*j6iwBUPJihOKiԩюo_x:@ 8|O=[q yhli,ZJ%9!'^y?꭛9)4eGS\֬j Or&;OɱRߥ=u>%]U cF2kG Sr`82~䴦 wORAA@.t2C0H$Y̙Bzⰾ?㴳?GЏOgٍq<|..W-fL OVc(%I.a`Fsw8&SPD]2mU!Db7uU]X ȂuMp:Fdw<#4dA2S"˜h򾕔p d, u>P7?#c!ju$wHLx9a޶RB @@#_y9fg3p`pd# H9;M[S9g-y_nȑEH&eA A.R]!uU4 i {;׏ǜ3d?Z)Av;zz駜7У>_7nG~-(a}8 / \J:(9: hxլ-!AJc0!{ PZ!0ڗ,9Rh(2䂭Bw0+(!,O1"RzR)gq~DUO敱dq ?BܤM4c|m ]# +]Z(1ڤ@2^?99)DηC A{-.Y,f8Q q@*\Qm=FaJoyL0G9װ{:u‘SЌv=zw Pd zS,5躖$r3dQdv5dTVU]sbN @EZ=1" 䛞:Ȱ7ֲ-@T1hEwפ.UB RJ,--aΝR`ǎH1a6k4~x͇ڝHGr)Q _VT)-u  dCd amD@m+ zМ9^)(eFXHq W!Bj5YfXP؎GUp}ɤ&qkcЍs=6h{ 68`~riݧ^o|/oû e^PeZozrhc0OW}{OI/؁&͆%hޏ@!F4u s;pk-w@TU p"ZX&hֈw}7:FMC6hhEf3Zq7X A) إ[k#Kc 3XC]U8`fSaBBlB }Ga2v29Ŝӕ@ >R]Z"$E7 /n/`w0v!B5yݿH)nR@rؙk`4]X~S)ɪWJ3amEN<.hI;F=!1E@9bt )bѵ-gmo=aG vFH-( t"fwnZ&czIC1tߙIbU].i@]0u8n122e'J2>'9{HAލ6ӥl6AU5bqN7rHP\|] za؜,DeyyLW|$(D+Ҕ1N uxXŇdW$4daѮr8:NۓQOj_L>d #!r*W3ݓw톐ĨoJ>kNYKEc,Z] L_jꊮs=ӝ!94MC`4I VK z,)fSt}YY4؝l <)3nOƘFk#}@zԶbu7k>)_zեJJRJMv\;PdE q ̥l=@̑֠pܨ(SD:uC=k迹߯_tgw/O||;$|lwR ~~a2$v_w#EHw1<&ꪂѲ\rwBH JR.7w 'Wr$99Dk".YkH ):pbMURwpL& XZ^FN}G:w(j-`e2J*8ƘҶ#R),f)"F=BrbBligP 8>k9*H!)5HgA*X)`HI)HzydC{vOG[+.4j_J{x 3|}KA SO9(áZ23VVV\?v{Jmli}wJHCH"Iݫd49oGίH9XI}aB y p@:BBʖˣ/J-߲ьs-5meYbF$`fwZ11YbRD| }t?κ?k'/ c_B)alZZA <S]~N酋;!avVɭڎCQtd74'Nc Mc;; )8mKj"IE4I3ȵ6HqO7R"9TPZh tBbgn؁h-&K޷cDwvmuNѷ1l3"DI_mK\H [5Ɛ]IX(!5ޣw11E߶-Lsvl+S\ŔB)${XZZA?v_;On>2(O]`i )Z VC2ҔaE۷#pRä6ctI( u~8cqɕo%P zA} vn݊l۹]W1-kw)m-m*zcI1Jm;M$-L_n%i$Bu]u뚻ji3&ٴ:iLlyڳ"5Gt}kBBe-bR(ݓF]JK,kn)C )mnѶB*O^5 @NEg{Z[m')B $?jsN QJ!Fr߆VVu[zm)stWhDJ%8BV)GhQUa]Zl?ZfQJaiimFн: Мεkg;;8#q5?R C8ꨣTƒjܴi\عص5R}zRLj"B $[QJ~z}dɍ@P|} yYSRmבЎyRҚb9@FR"x׶*@p֊d'[Y;ꗫ`rL!1N8O:q!_8diw+,9DyN.{:;YkǸP!5'$A88 9ŗ^#vwk۱Ϧ0'g{_G߂hN#XO7 |)m8򖂄& I)]:":׭xSι]۫GKF_JA/(` }j-ci+b cwKRIغGZ+}@̴7VC;Z+sƹXgdM9F|Rէ @ƏdhEf4 X( SaҰbi7YH ˙hJf][2< k-u!Z۵RHl޼{Sa>#fVr2\v9<%a*L'ST%, @d@ڐTQwRE#r~]Tv;vw(.s9弗sEkH7dEΐO|kY&)H=#ݓC` BHlZ R )~5q(q;"{߲}1^k>㘃eW_їR qg­ZaΝbyy7]#}JVH1:4 V\aO^Wލz'IHD^"9c 6uCCj(:$qcn<8u Qa*wcvS5tQF,t|n]JIce&fcGNOҧt-{AK=g"=iz|SN-NRBDX[wmJnD >tĘ("t̕H/87V9da;|BiEk875XSQ{@ZLE?>r,.ҍ!w>WuU >|~)u}~Nh"d!NT`b?z3!ԾB$.H̖fLH".d8TUUS+̌z=;zf+*~Y#H1؂{"LgwnkGfSKcG8=ӼTcq>N %i 5! 3n5Td2!$DΠ4^ N&'B+ű Zv*IhCʛS!i_,,'򴧰6|Y`۶wTVWwA 6 RC7~煿cԣwT )127cD$ |$adRݐ 6} @Sא{7IEaEuC{U3|~ |ke\կ:W\{F_|ÏD]UQ#-˲|"D] –JNj2OLRS= u{Q`J idk1N0i kkmZ)HD 3~44S"^{ء{&_or y`MşnGN/KI*#<㩿+ߺo[/mVlSU5+ l]P8G܊lEݞHΘ5:鎑F*5O9]cPA%z K$'F{91Lu 0 \hmp=iч,iHqfxK*bkEctm30ikJ$yeS)J7AHwk7V'=οBc۵sO !,O)ED@ kOc@ЯR ^7opjPy^0V{ ™f*܄@]o#8H@?/}pUx%W]taG㊫7(W zAnJilHJt}]B8U&y,cDc:L5CXټBKXJw$4ؼy|OL$'m)EEqyHoȔ&Q75bu1k\I;vd Yb)'tEdcFZ 0%y)@ub5O:R֤}w}?ff[kQWi]!WIf9Ѿ|@P }K.oyy 9iKk̅ƌdOE1&Z"=?y9N;xFQ1g%Vc^˛Vrp3@P{E=l:w{|rNزi0i&䗐T')ۺs w ~4jvꥠ˰RIJ:WµoZ)&Q1jn .%eX[^|O4$Qo "g,ږ@ef7Ǯm!B|dB.SY) 1Fl޴nr1CJ5 ŮN"!U,SQT%˕hș.RW1ahИN'ȂdDy! kҌ}[5$ޅQRI{bU'>Tdq);ecg XePUO\˵ټio}Fߒi<k,~Y]o{];&PJ+LP(7R4Ň0cY;&DZ@</Ӕj` "TJ=H|P̐ĒOp5mx7ߴ?t!k6^Pp/gM-۶MMORE.8)4wL&dzhC8ck`49^!0HVfv VBRU*l9aiy ]a6AJ1Zvm=r=zjcGe_<Q=زv!IQ>p >3s$ tF${4b|>\ d2@ c43K!%X7=XbL C+>-wo>8ēg{%~֛o2e HBi&grdCwְKa1n[ UP@ @ 2H1cyyvi_N2Nlӌ>P|`Ɣ2`ŪC1M5K>xh\k٧];!n=^Pp/Op;nGT/O`SzY#)%Z)ljeS*X)g+Y~gDux Au ZIhf]#f)"!dI),3Ա"yBAqq!GwϏ7_>x$?_w5xY3O&;iKS|>&vih<!5؋1!uڐ1xy=< DMGS^A12w];ì^kj=^R 6'R{'9t˂[ D,]BSJ\khYΛYlڴd.ljޡ, |9G]26oٌD]X[<' `fRW5ؾm;JX?2Ű_/|+?<\K6Vy{' ommx$gx񋞇3:K.VW/>ڲ maci:CU|0 !xǞp#IhaqtzGӪ#饄NAk1a19'"oSC$29ZI}ζ[oWpʗ̿>;w~l: \rױ,aݵ՟O_h}Z!\+DcvGwSFyU ID$!& 6oނ"h]W ^0"$e~u{H\u]aX-2`X"dbѲL`[T85PZ\ێłMc6oقKQؼNR2s5bØ~yy N1?yO#RI3 R{hUP7l]Ja5- w]϶u%ĜRXqꉧ;u>lWG?#<wo}UkVw~RIݠ{8Cr([(1#Zdy$'M]CiE@P!DH=s=knc+#C>BtHӰt];wTǟ|ʗӺ?c=]JA/(q҉'4آP7S߿;"Jf,u{bdw霃z AIӠ4)a}sB}KHFw)hTnRmĐ0NG$ 1 o&f/q8Kfe̦P읣n֓aM}<$Fzufw#2# c51d7Nhe4)6oD{ٜ(C=xuVh  9!njv.\4&9iO;\kOxE\a/?G)%1"YV ŜBh@ա0;qZhY|h RJH!=6l;LywM%d=kU0:'9#ILp4u$z? A6ft$!zuswwlû^x={mJA/(yiE[u ?3wnڮm{dA6uUzX*F,\b]i`Ü b |,qR˪R#le4'yA]OxԿG^.INc z# TlG+t9YCZ)^M Z YKkuSS$9COłM_8:v(d:™,XĴz7ʓ2w1F$*CֺvpΡpbmE{GzД%͛7!ƈŢ< !Ya@۶m;SϺ/緟|‰Kw%\=gY{oN=cq/p}`BLF`Q+zdWP ]G9{1S>4ӆ4D04:t]׎e~ ;iOS@]W8Ub8STGFK+%.zvoVv̩_LJmkT zA=?p_aoI|[ݽm=^KI;C%28%99-7EZ"yӷcJk-Yj~S'pf]G&]JhO.%HP޹@]\꺂*bO;KɄX#~>,KɎ1Bs&V 2GŲqH JQ"K|X__'5ɴKJ) cX zbptNs>tPK9y{u9pj?V?^O;ܾ>~~\{͵ׯ]vthp37ccBhQYi3>[ 0bC);؊I ؽ-jIŝ4,cɣ9GrP}I1‡鮄C4,MmEu۶gZ_7|ÿTu R ǘNqX6%?λ&#š pUNi.#dF<w1%R5p8 9 :RF3Y HYfFR۷ubde-F"!euCљ)BioMoq茽ҒHhc:m_F8Z! 0irPePLgK$[[cy]ȺT+cF Ĵw"rJ)\dCf}Bw :YkbDwȫƾ~{_z6NG~ޢN3 !%hf%"u2_| w%5}69(IDj1Վv肧'$BDNc+,NFK198ףЧ9OS*´6 Kx%.##hm;r?yqٸ/5|KǑ;ӥvzEw,g])-.*N$d1_H~᎜\bDSWES1B\,йiH?1liiU"O9h/*CV;{.,A3v1 ;& Dnwzqwz150}#|Zlfw$+Xi z454h[fH%; Zz'dzPJ{s IKdEpȉ_zJ!m}<#WBx__y瞏O|ƆK_a-{㓟xXu׿~xmw^c1%5k#j.l6WJҺCښW%}niev-E)mk)O ?!aedV.zG[?/0iF {[Wd 0ԄgOw+n|S>tLw7̱h{=7y xs!IE^5*l*5 gL0__,+Ja!2Bkk$R<Х7a޻OU)Cꡋ! ++ؽ{7}@.L+] %)1.%b +)i.miUFmxT%rr@sR4v_,P|ИLԶ-rC౻#cSbݺ{H1ixyן*>ڭSa]:9+C@I{u,%#`/8 t?N?ey{ۑukvjt!| \1%p.+qG^q֭Ծ[2(jwăfSɤU!¤i(n{={TWÞ6pAGIO_v<-=n{)n68p3疛n~xq )?ny樔t6:*kw]rag-֣W ` A,zĠM]@Ip )k A#y_lъC@3"T,F%ӾTyH_S ue9 !#z34$zG{}m,{qeSTRvM]󎚼9͓?O p9iX@kb3wh L'p>5Rù uL0)%շ~CIuҶfҬ }} ]is۝=8^ qZܑλM1M!1V%^amۑ1[N;uh B3c6a4;P  UU-B ϓ&p0k:XDY>}rݸ"!@ -[6!Hcm=ǥ^D3$s}!sEȈ:vC~zPR〽Vwݗ7 ྂN<!LS9qw48V, _m()X:t<B - HR-Y\!8kX%wJX# m:z(cϣmOӺNa}ιC܈9#c rf&!@PNTK)8%V]j-*id(E$I IȄ32cq9{ <}N@$r:"Ȉ{g}|C)D[֒-8 *|J"ϩUZiHAm@ ~Aa0'<#$…RT01q|t<3wkbDvJ1@Mk %c98H"cJ`Vz4 @:)hpϙ6F6xR X|h*X)edJ3{ƦՅo}owB3RdZ]\Ҳq#">є2bb,BͳCӶh RR*,ƔPf^m6[}7[em $*BT-GX yյ޴D!p69S!126񫵆fM6C- <ȄBRiM@ XooԇE?s+x (r]r}9w_~/E>)5|\A,-p~V8^N K&uyN|-tBͯidu9:Z1+?`v{gvj*UEw9kcSDtYrAJW@nJizfw ĈyXFV:PRE خwt|D'4-mbKޠm[JcFB&bIBX{fXc\.ᜯ dٍÈmx3r!/%$nv=wL˰AJ<#3hOc[=WN֯߅?r=,r*g3\{~xڍ6 ӌՃ4m4 EOkiiPS9% 8*MX,0MtwnE 4ՓU۶Ʊ5 xA($1dt-*c(;NB1 Q-z$)@J*([-/uL-y5OK;:ǀ~ٓ\'4[d𴶅Y > 3"l H)0N#B96,4_ QzghN e=V+$* )yײ8 SpXMuB@X00TKF(s_ur(&L:Hs @BώTyl7[v9P9I~#[D=03f4NPJmB(QOԉ >(1P-Fh3*+n4mb:/}`|;\. \!感|Oqi~ Δ XcǼpp~OLJ9h[3 A,`ӗm,z?.U)X>]|ʏNP\!DQT~g[碒Y qPLFBr4ܱ(v$1Q8!b2fރqyĴN0R$5 uO qk(`ڵ)b&{6-m@-46N`y !>ܹ[RJg~Rr|iҪRIś9,Khݯ` h MOi](bp)!ƚ$>9OSͧW s)Yștoچg[s!Djz sUoΏ.D# cfqJeTZ1AbU4}BX`FڸXeBͶk.ܤ5 R߽ٮ?7[_eA\?c]~FS+R_,e&U8FLE|v3%iCivڶV0ol~ 5k"@33dJZF/^|c(x6g6H!.m[Y9u}L EC_Ȱi,mT-z'Wa`a&o .X7O\7"Z@1m(2{SRr0)aX`G%$:evs uČi7r{/u@lǛ[red zQ{ Uc ;9E|սiŏm۟_YOr]_aq+'׷/4~bN"GkQr &IC#{|˙ff5ŒXQrR0Լ,!${ӹE[VR(:jS1 ʵ+,SJm;V*<Y!I\}-D[NY:ie)Zbk`gbQ .ȯɫM4QgJf{7ZB* ;W9^h!f5  :B'hwn%?(>Xg5+ļq1|Ե ֒q]1Z5)p >iRh8w<%RGVD1mT[cFA1͎>@}_#JS7~{jhX.97Z+=2&! p+&MR[|g,'ĐW? 8 L0z]Z3τ+/PRaRfACBd{'߈G}]+X7ivxWc!ou)z- bEvF`L۶m&Kq(M'?94mS-ajQa"з Y*/``gtm !TƁl vEX8- m.!RA*_v#gD}Y=m P-l˞ 'z%ئ!ʷWwmZ@4 )aHȘ rQ^ ȯG汉RE-goV4U8SZH݆y( ɑm-V!!GxNr+Bq[XV k;VzS烔檈P7Zk&Q2k< r\^ O$xk9=H^MӠcn?f_J"͆ jI#VmZCd#"!R>D%ǍPD3H,B2Epvs \Yf */pN T!䶋o<9[_u{SՕYQk;43Jj%Iy}dZ@Prq\1iN E0Jc٠_a@ІZxF+ΑВs9<B*xе 6G-cIauÐb`R0Q $";CLQ>m[ilB tIn{/4\݌ڳ>HV|ɋg51= tSblU{o5Ʋ:D!R|5i-=!؏-*R;"XD9(Lvm4P%QʸBmnzڽㄫW` r!B۵gXo 2PO^ftۧX3 Qh:`>zmX,4Dt;+^ 9-mhXj"ЊڳV?@"*}('Y5fGkW0rΐZ֎DD6"69A饺YvCk׮]8t;b{]6{BOXmq||!C׶npӄ8,_gH _heZ,7~~ {ꣾf]uK'~!tƷ [pWHӨCs!R4e@ !;W99Jz|nw|/4V ) A*>AyLzMk]=F^<ҩ=+Y@E3_-;"%V+t}7XB0|mY5MaX2[imi(9/N\OZ{~A.NM`&ضm8jRJfi4@<7C$. 5LkUC@Ӵ@6Ȟjp4w=ub$6|NEXKxN/DTjQgĘ!qXνOb`_=jw )ɲgI83R:^!xsNTuHj/(hJkv;,WK6uXcVs&8Ӧ“oސCJxO3ƶdpvN3 /+0;_m;hKݤğUr?ƹtN\8+Uv%!XH"XIe%{3]r]{+ޏha2y|ԆUZǻ\iaLS/&ٮ9+[Zj|.֨"!`RJm2 tBa!%,%Đ*)olAN%>D"SY@suCR\UcDBNX$pJbV9!P-Z#C©`b6B Tg ڢmbYh-؍V0J#D#ee64{mZXK"+mbGJY p 9)Xfƞdy#"Jb kՆVbLU3uF86T0)!6w%4[T^A4 N+m(Xgu8UNcLynQFYE!I,D=5R^t=_ :̓cgb<}w2B)9ghC|* c(r{: J(4MXH8|>E KIqڰ_ØִϻuY/]w~ a{dSolሌ`OT iI(dem 1Qv6d[cVVS2t OFFm;j_rN}8x0JCkbuޕ''GRm۱XJZ,%aZӐDсӥ5R i",@-ޑv;hk#1wҁObBNAbY;I!Dmq)]څolkݒ`IK :TTn -|33#R*\V%hF뜃7XbQDY9t#hwHjwS{HLz&g#g'tma0ώShg*⋉Zb١m’;x~M!]Vj@iXd=M`@#ޠm;XPwV]b\o03_Rg*((u!O<3Q_. _7]g^~LC~GJޭR躖\,K6LHfƬD~[U=p _Rh>UZ4L|ڍ<7dIt™>DR*>YZei;q{ʕ+u4ZS@iS+D03.DTu }@㈻_g™bg, VBI(E2KPJjچ\rJ{<D(8GG̅FK3JXi#K׶mY}΃F箑6;B4c'(pUVszx7)Swb5\HXkD~ybec%(a͠+fn7zia5[hD.*QQ/iU9&r\,eGTip|FfB er}ʮ?g,~ׯޅƏ?VZ9j&8pO'bJBBMѐ|!B` <3#S̑ZfGH*j)fop. 8M5&u mq|Ģ@K37`oۈ1">7- & Yٚ1kB~v]GE{%Bl3j jء ؏ܤ:ȾyOe]R70A/KkkJLE)=-hۆt ,вjަ"'J*SpS" E=2U"TH0OVMr J T`^{|R椽b"-/yT(x'_8)X(q*#sw6ynK)@5ᤔT)FUq '}!}IR6L1EىhLm`%HsKA gPѶ%ԇه>kڥr}J57\Is)i-R0l%hix<&ᣫmfWIpJ+hP/֕ 0#/VOwkf77B 0|TZScm*k|ŷ(l6ń惇a.`0~#.@'Jt+ߔ,Xe{\riy'pznn­8۬1 #yP{9cXq/#Y=uJ+a7TP$2!&͔o>;]* qkl7ICu3Ӱqb=#_\1FVG)Z;D}O )HI-v9u]eSnErrB*pE9G)km0_<:o%E, !pzv CPjmX,ANm h Y SX,&F1b\0=<B_M'<δQ21D>j}R[@`ZgD!%t{n "5MK3wRk<&8)Z)lw;$ƶzI\,+%F GBMp3, >a 4aG*)ޞI5ÑVXG{?eA\27}-pv񊯔R~4ϿE/Q5| Ӂ·yFLˌ:ySjHPJ MjwŒLMo32σou0Zcٷt*_`%132 u Nn g'"69C.-3C%TV|GΌ-u]3qg悇yǢk|jֺ̇U0{}Zoڹ$')U1/EjF2qET$(E=ui"_bC](k$Q]|e H~t}gk 1VpTL;+kZ)܁d6s5C>x^_7E-_ZLC ^0%ۭB 1Y"R^N6#,hƑx[)BrW#Dq#To{I0VDӶգTgb Bf.P3躮Z E!w.N ?^ct%%-4ADVw"ئWZh m[WNNд-a?W=ֺZ݊_=\g| v][O׮]',>N'wf᎓Uk[ngh ?0)VSr?ZCIm Y7Al+u$¥ҴqZBI% o=^PRc={Ywr}RG}&Q˳_吿`NWnҒJ\vc;v3]S B&pbD66[(g!)jp|*])dtE_O1Fpn޺n 24}T?R/E{I=X8Ȓ.*8"sPBl8$$i\x'0-پ,)p5DEk1߳P B! I>D"BDP;Zi,kQhW"fHbš&B -xRhmW)t7]rDϗQ^١Z&&@gk{26 RT$T$05,<nj_BiLy8ָUT=:󤜰Zj*,MT-lNkaEFF~Ǒs2xC"]V-bh{HWHz}H!酜ӟ {׿wᙛ}˂~>=s:7FnXPL1pa;0τ-IutWӹd5;cr&=Fe;y 1N,nܾl׾KZׯ\&$삿~ү94/9A'HyK'KD2ڮG~a-7RGGG?m(Z|R*)1B[ f4=LC,0~7ۻTT$XKd1Z}c]O/[g[$L>)$Ϧ3ϕe.S@3W \1xŵwl2}mN/xӌWLj#o[k6$sn0pNݖ`0, .l8Do.i8P'׎I]@JQ3r7)c˅R1kkl ;vRaFh-4y`łhAo'⪧Xmgxw}=ͷĐ؎O>l[˥LpJ PB>EL㈙; }$*"ޔ)19/ny?l oB/Yr}Ҭ{߀ WCvSJWdp-mK+X17gF#Gge_p32.WqbxzC!`g6id9g´*̢)-b Y7qrr`6M{:Q\Jm1BHv[=ܶm0gOЈж-&΂/'ؒIu=ӭXu_9)1jrZ7FmјZ *ۘv IxUPJ)@isNnj@4JS@: =-K -48w1v4S$<ۮ4瞥5Ҩٔ.[KS)%`Jn<69 j )p{}e^ x ]kwṳwV-䷻0ZEb# |-Ujmd,s> Lmڊu91RP\mg|Sbs3}fo # w[ !XOvVÚ9#!Uh vQT!xBIj0JAjH)Is~EG^qtnnBɾPsRx#=W~?r +=Ħ翏2.wmEYrSJA3 u)b_zCO&~#36^ q/ExuϹxa| !rx-}{o-e_ vOrT<{}c -1 ere00҉>FuH]Min1Mϩ$IH=vCxRtDn墳eڵ+l`x4 'LHmdkepllw>];jpKmbU؆2!nѴ-/с1SBL{];z)m>L1]#qT>ƚuKڙn~,(}Xb&}vw|'<ϵ 6$ƱBnŰgW(Xsr@2Qa/ӝg x/QͰ5&^/'z a {>_A#9IGhmj{LCa$94ˣX"93\InH퐙mw{ڕ1tڨvY\_ӡrJ >ЅRIw -1֛ n޾q)غƔ5U*  @ogq|>m@L| B(nSq-;sǟ*?+zVyQ/+'OR37lҁ}υ!rl>e=9>!XP O_?n.)_cESEΠ ֈBD ^ 9ɔ"4lZy™ !_ t7Jk@0Lۖ6h%q3< TT2ɑX|WWΐ9AěY|͟w/b8iGEΤtSw=x_//`V^[o~ +smv(w@ 7{mOWm$ ɿ|Wr s ͫsFd7Ǒ3E&$cJHXfEyG yuޛȶeD֧琈ir湊쌱#]oK;>FvhEG֍c5R (xc-1}D@]bw@ RǨwؿZJs3bu.CNqF׎ t"g+>{# (oR[P7ZKDtmi";a֍1yŧᙛ^YOK!}7hM✊nN !EF1kSDic yEuHD'qZ%,׋4MmX,*i[Rh`1^$l$dJ.M7o-U*;F#U߼ sN O^WƯopt 8S81ľN??lrbOMϭ|_~>x/{G<3/pNP>0clut =,88$M3#LH\b}Pd=K.`fh%v'-[RBd*ybOmQ|'XR񞦩r +S&ܢ;O*uyxSxE>w(5(K}lM)8D*iS]_CUј,g9k?0mOIk,5DE4ZaLC>!ms$ ֣ԍyW&#~FXr}BkWW?f^h}h#$ ӦgJSg1I,MZi1fmtP|Bbg8﫨faef̂:9[K9O/AHMi @Xo6xml "Bo.17__?_G*PPB^y#d,sEE&:xbcn+1PXLLbFS12۳̯E瀗Scn )12!o\gM"ň#{cFW!t AwT#UO=šn)=:#4?oxKjSa6J).ж84/NR#e,J9lUOi 8_ qĜx.P?Âff6#)r3BwHBn~,~=#32g?&:t}ʔ MڮBhI'.!j32“ ZyFk-b8ڴ23YJJT4v27-E6JMGk,<)y&/1D_ _xo'5Is Df(.UyH_8Z/*/sX^]9 {93Q3]_w~nm9{*/NNkAA^{Y ttf$@_Nk8 @] -b/y! iD4u\ ZHxF<}Ĭ91n$`(Dƺ䀓%_섑(Y4)p cgֺ-33AJ43:CBUşJzmH1%xįBz7pzzy"w"%育̫oL>&|Dp< wd/#?g]qR9cv[: aw.|JpI+$)RgGy=ub9d($#Vih^ mJR]lnQqJڪPʳda7_`'ngG->HSV3ͭȔpwG:׿yݽPk`dͶ;,)r a ϱ q_s M${3c;߿AO3}~b8yhM>ٻ @HAiDt>](#XdѧbbYA-jZ^:03xZfLb?6whEGiUմqpcx+!pݬyU|4O85Wb8RKZ!})mriHQ~ v+5RiNrXN\s%(x n4ba?4.~Vm9AH Iɳu?ngDƟ),b,֛_yYr}\'s£?[<_<7l?;? Wo)鋭CZ8b~6Ţ-SwǛ>wbp K\E@i5|A-B(d P.!*9}#oڶ-zbwwRTfriBRZ50p>YywÉsG7 Ci]Rdn㣣 @>uFȔSd ŭMOWx|Qqy LZ\t}y "\r5ubLX- 0`lw[=hxN_Z9PJާ |w)yH) l_{Kگd]q}Qܺu ;?jjM`^d)`Ka%TH i(N۔Oyc]6 ![S愯c 3YZe&9!l\ @R5G" r'х^iUE;#eɰ_r77|:zU 󋂶zm:r>x2 v;x28?x.9%|n茷l553ąƘ6EO{TѵddW-A'hZ:ҶPz[S]*=תY`4uAT,S5DEJ8z20 ƙ8w*[7:9Z g8'|˂~>>D<#XOGҟti/(O NJjr)}vلʜ궜†aG^nZ1D3Ǧi N*4t ,n!D )biJC5hR'V=Տh{b< px||0bs~gӡ]*v-ڎ@7Nd8@z1QŢHU ]1%L9$ֶ"gp0XC3m i!X.KBbͮWˆ aiе T󌑽)庑'ф,(Wu@4/GB"fkIH2+j>>ZeA\O V(%*9bNvr@v5Т~#ȊC + Ze_2}m@+qjȇֆĬLbZO&Ga!h~} [4dҀi1#HHМ023{0;_3ؕR>V94GqL`&8‡HQC;U '"7j+꽧y 俟sK1EHH솏uY/dickw!)ߞ:Rr.4gYh D"-(2ߤ<suN,@$okby2cNXtr ǎ AԪmѴ-Dw#N7k8 1Q.8} %_J ( ,Q1a{}܂XP\9Zx8w'{;niKS/x* 2h$4 { c].obqqnn^ ( !lA]$ 1:"<݋Oޜ-ضS`vѯ˂~~׵נ#w߇+b qw!PL$NZRRZVs \6hچZJxdV($9BS~Kj{64!yO0$)C/ $ެmJHj2g?5|cb/ S`Ev1ڇ%/ G3xzjc.KO1F8XmǕSgvOW )0$c_5o%bc$ mR'A8S[Jk4ڐ`S bA-SѴe+nOrhfB 1V+t-SoBJ9R6D%4MJb 8N!aT4٥Y-# ua"N8@BFN釐7l_7sM8u_,u!ƛ/~7g7fR+RdR 1e] yhYHX'm)&B22m;R-n=ƈi0M3bJHtӆXJIĀNW4Xt8ZCdnXc19b}*0N3gkn@3 NdYNBy1/aTڋ~9Xc9ӌ_pp~ >r ?jBeNIQIWЈ2WKi\OX~%베__裏"޺-N29ӛ7jm 6]gӳsPP֡4F#Fvݽ'zIٴM͵R|^v^tus?Sr[rf Gt Ѣ4T'+5vup?/B}^3v:]"4GNNᣧ0Eh |Hoċm'rT8(w;?p3y\. N;rtQlGi#c2( pN^D&S;(kZ)%PnR 6#$uuLddLlysamMsW3h)I*m ц.ҦP)EOv!Z= lku4r!# (hZBW2c&> 匔4\_(RHȔ=It-]ܛ.‹Ѷ-e+5G_ʪ. @刯zkEt!Ns ;aYy 8WJ"qANIS<_/uߤǧp恜B ̉F;B҆/2aiFu1R誇yit QGFyyT /QS:vEbڋbASMm9ڠ|։ঔ ,o:"@52tbDR&6n[;<3$R Pb־#$F2[SrQ;p9D XL= GZjS@!չyyH,=v`-베__նnmNJ;QI+%Jr'q'+QH4lp4j'JXHHZMӲ6밖f"S~s#5]WZQBݹ Fid!O82N"  %w7㡇I%EEa,l]xSpY$Q[$+qyLߡ"}N+pxwZwx nWVڠm:h9J.Fȓ 1Zk  8B%W7:(Xc~v v!8c 3 sqnu%s ]ӱ6m@(#l6[ÆS̲! &>3X5u<}JQQ L0,y`mےVQĥnv%9+(`F^1C~Y8d< C濉'ܼNKZ<[&6pZkzVFN۶E)aR!kRg1V=^$g[.7 |X 41{2TAU@p{kX$DJÞX(iI6-|2 b#+Ȑhe{W Ts4 bh (.P{ψG`׀7-p+preYL+.%=Fė-hauI]}fD>󺈭- HoSo9>ƿ t1H$CR$y8!eP a4mm,a^5(iaSv q@|#8<$)f̟߮뉷0%8Y4psN=jv]bӨsHs@BR҉Т4vk81 ?z+k.fS^C۝wh_ɅS3!8qs=k-qJ z|? l's=G\{b/y/6=mo_{ H<PF>Djp hc`0dzIfHr.i%jI1PHI=A8;XGn6xV3bE=Lӌ`<9c %'k JH)gl6>2mGb@SN\oZ g'Mӳ3*HBTkIL5ć>R*H ߚYBsrZg;\)meA\l~߆֧7:wiI#|G-jUk,g#!S U-Kd8X!хO2($JP jg-ڦ掱ȀҳHnIY%O6 uS^W!R—ao} X;Łz}IDsCϵ'<7?/E_*|+\8iMKQफ़{}yᶇ3z% SF,$y?e:T!(j-t.ĘU)04rJhmSIjtX ͺh^ XP|tj3nD&qن/ZFc&D>CT1F2h"F!9LXm>ҞZ4 hzR|a7;SA4) (' @ V oï]?hrY 9łxxZ?D N B@ǘ+1lb\z.77n=éx 3~>fM{sG橇Y@Rъ۬Bg".I+'l3.ٮĿOUK,; 3_NtRpp" x:?lmo#Cxsn雧xSgG~_xMʸ]7އcﻅn72= P'p;qqp! r?Z > 2$~C@c ؊yX-Rbtm{#:Aß ú)%vŗHpaϴ\ G)r4!`%G(Z-S:{IRQ4Xr0 ĈiX}0`!c)hf Dzm^4UP`NNjvU~tEw\xQ^|  2Iw3?>Fnj7ui/q۶H9VaJcf y]㉁ C5Ut,Ήn)Nk\vWe0N#\PqK_)]7 1V7(BCg|K !6WW`ۏӗs]+Zw_1%[=li{5p[Z˞^xS Lc)d9exNRJR\$̛VB*ɲVhK0@JH T)I BCx>}=1KY)L#ԩMd1X)D*XjF_.{}D-ZkDY cQ~X,'rl4RdP m3iT6v;;p)QJOmg0Ms3Eִg+M-B V<'gFSB5?Dyr˂~^r߅y9߭wuH;6u>I^)PԪMCn_rkJnvf:i!0;ĈkY@NMdjOJ1EFEJHd1 ! 9PtW%NS4(A1nghw<>'ɍ{O8u񆇎q+ߡ__{y_K\u $6ҕ0XBH\z- RSeb'_hsD5Mv`BMmk֥L&diA9&t}3VSDwRwFR:!P d9,v4D>'n!$E4zclv iRydD?2vڂOEv[O@Iv _,U~=aе+9g6p#}n  2 J+HB"*ב"%Ļxbe'HfhZǨ!BJD̶XSAEH]¹PAW;0OR C&L;"1/U[?_C H3"vř78>w/OsBgo_ڍ|wc<ᅤgo'WWX?ϼ 1c%(=s |lB jy|ߏ? :ӡd<d chmm+{tn/9Ȥ7~6MA'źX $P}BJ i]bX١m(T%Fk@PBZ׵,k[:/дGLc))MGb,ѬdPZc\;\~:V?+GL˜&x$%T]SDJ9t2=IDATi^5?베_G|~;K{G|?x7{*|g܇>r>ƳϬGl?g~\q1{=px@Y[‡np>^}x9~/I?؃hO{DY|EW j"%DL{d'PRg͆-ag4rgYN`/C ɐb@`(mh]}3yrT9D0&"#c\0Іf䥧QTxIj,a0h.%V#Dΐv5yVO@r7yC.dKZ-@FI P?SĒ+Yr@{ +}CL[϶]BGHc-[{(ݨRhf>S!&L 06`A6X-0MV癔,\J6b@+ß<"Oϼ?y BQ*m (v-}yAƳ(-v~݄h:T1;qpZfAB..OCLDlZ~.g2%[yF{RbDGd/8h/'9/LJV=/%)3- 7f͏%?\K)gyC1;xG;כǝRE)m[HAVm錌q1sŚ jrJ0bk8΋7_x)%4$#ZH]+9Ծ癭1{ԈVk-ƉK'dGZg_){F (9fϕ.pc5\|w3w"?"x( yJ Spݸr~ |ݸrOtO~҆l1 NNZǬ8cE4$BiB|/@EBC+R6etQJ|Mףkl[LDC7-'6nir= rnֆr9e$$XMq~y]jukK~=bJ{$=15<'~Nʏioww hg \ʐO 1cy&ؼ0M8n 0Y@: &zL~9ù&‹ׅSŧrqp,S 29"g[S(ODZ"1gkRfg CacY8PQJ+#$Ϲ}p4^,HLg i48:>A IKnZ0M3$RHl8@nݺ l@fgmc.RaLg ÀqYf Au\_CE'(@D99?Bn?uuY??[g_MdڮCN:o, *K.|&4ma2 }TJ"٢52Ӊ:ꉵ HFc 59cbvRڃZ1SNN‰|RʚxRB'PT|1E(% ݪDtR qòSbz/бI)nN[1B 8 =[D^Utu?OQ\!~1y샛ԝ|^? u !< 3"Pl*̃ 1m G* Rȫ1ϱ0K;F 6 a]"*4ϝm;>Jv}$!>CZk,r=: Aߴ-%&va RR*BBׯ^nrz8JBnHEEurpio_t߫HRi$db+YSlmgּUO~igmBJncL)Thن .E\Uv]$g Xcc [rx%?TԀ7Zydd [cJ36p\|t_>`=ڮ~|8ZqA8͈m̾ǜ襔BFՊpnW_m` TR(QY Pݎ 'zKF)vN_<<}ga 3Wx57Qq{tP xK׿x@xWѶ _^ %5xװߋŲE ~<,ůgzV՞zH3BB 䈂Gx~!2  eqBE< d"!tt$wU~\UwQIw'7UjUժ~Kz|^sb2=s:uP }Y-! :9DI^.25xdǘ藠bawx4#Ցu qv 2b\}ΑUzڣqt|i$Mn3ڶC3wqNLqg~|u 8AiEa~fl[a`JZ-y)Zizu_~X$J-[2%4d4 <c}=OzX$:_sW[,X.z[Bv;TYЀ2(lkZ\aeHxZ9ږWcptl k-BL5c 9@`;920M`TT+;v#9+qG/;cC҂4ܫ6m#~nLRXcM}&g4 '\1 OCn:nݯf~pc^n7n!Dmoy?) wux3pzSQ躦>#ƳM-2z)>Q'<yG^ǵiZVA+e p|Ěy(lZ5n Pmm?T;S^Z5?ϴ5M5螧!x̐PÅxZ]_ﭭ )d7nh/s5NhZqW,~fv+qS-b^ib.{YFnrC!С_Ogxw_+3&v&v-Ɓr/bdOvu>g-{ D9b&hMKy=t ~桀Y,軅Cv)021X(Dҕ=U?",B}+L^לm~vٯ} Ge-#=_+ʹg~kno<{@ktmJT1]bRN\ERy#O#CA\ft>RuOT1si8pQE 鳸*j@ M) d9o)~f5P#CA'a3n0;߅R z{e]k LF Y[g0Ph4{8g&)Ua,|庲 {3NnHqwp\.04 ` f?ZL(V2q"J9(E%HRl#4ձdR|3/I, !Lٷs&?放)Zk7=|1,iaס\ 9x PkyrSq0Y4"$|Tl)E΂g]`]לGl]9nt.3$(?4-ю^UZk8w=yXaFLQ|D`O ]a FG8G?31ݥNFR"rpM'1@-f 1mZ}wP)% t23pu9i_W^gz -;罶鑮G_?F/ܞ|Xq1ld{c<> ΅W^uÃ'R SEVP#CK/c'%N:hk>ebTUb>8ꘆSF5: &骛HgWMƨxM)q:N׸78>^]qk kLC @[8'$ʈ-/q!A+r)o1wc{J郊CtS?;܉牗yyv9ΤY m^Eڌ$xe$ݴ-YLLÍEOdyfXb0V?!PA/b>=R7 "2I|d+Jڦzӛ8 'wIv-f:rΜՋo?wbT _OB46T|.^f4-Cwpb/p>1ןOՈb@StmbP=J߷su=-')!(4 ABa'cBک}vJ+M v!t\X ^a@u-sMDS ֠ZmGFk$w݂q&dе-3C&'c`%Zk\CQ ;FVJDujwݹk^|#6ܧ/6" {Ϸ]Mi ~Wl; w qppt {;d=U= "^[,Rܲq H:Hp r*)if3^FbbUˡ,.ƴḞ քY&) <*CY{ƶ҄G GQ~97J6SNi ևu(׽ދGWp6}~WczrvmmbAJD/bR6 3D4iEok-=m|ut#i@%SZ4m[`k\-H)!FvƲpH8MF>':r#!0-8̔t᧙IiPX0huĝrbdeqqak)ps˩2Ŵ8Ƅ+} ŝnVnMۼcK/N~q>߹qs]+skU?6|? @ /:Z"q0˗PDMsLϹl2t114gJ:ޘ-yI3SUk0śD*C8 kZDQ#]5rN gggׅF=Ac8B?<)eszBMxYCw u||<>wbӵ'\/sK1͠J6HL+S Thtݢ]SN{2iKD:}xͽi=HV8>:6qsR0 Lt@%XSG1pܞ,X._^a#&߬סC_w}76 V#ܸy_Ooy?ݞ-`J0h/qq$K~5}hh'c hqc|(ݮq||bd`8Br8+( ~A`(PH#xTAsh=+R`](^)yjڎ_teǨFԫGX@)3%hRrJ躾,HL]]JqrCB5/#ּWpo)_عҽ>-c`v D8rKPKVF|w"[O /NN'cޯ{Zg m2](tm+vxRh[ڌ&ѣMl( V%U9XYo$4o |lb{THv-4ψ1q%9?{x?:-cL2A/23‡څU%ɵN]RTjMrUТ:^Q+rmT6C4u}n~# s{q6(x o~v;:u2 WL!iSm ȸ]\!DfSZ\JqqŔd۹CDӶ nf8k*)9F2̃!TB1o)=q꾜FNLӪjCpՊ I1)/VFlVP8:uUӄg\~2N-/y73,"'+,"PS4g3L6yK8 e4pb'yl8ppm!WQPF_{/[;o$XK 3"'TnR4hچ L-~Z ,= |!1J9E3$1FX,vwX lʈXB6Lpr/䌾_i#===>k-5(r8V5vyJuFhߕD,iu(菳ʕ+xӟ͸Uw_4Kq s+HԢ-B EjZv4v)&U%ⴌ܍SL Ϙ}`׮D0 $<ݎ-Y'+E4D6tci1b͒{pǑV kZ3GMq3^#j埅edW^6̧֜0((٩1ϓQ[9RBM7 #ـ ~`#y1vŚOB{B{~t7Zo_P׏pk>ۏE z;?[ j%1N,_hNPrf.ٚ` , E 4ʨB;M31p>w/n4SnpZqZ$i- H4Xdm/?''AkaCɞ5*\9("dII\gdr_ Jgv>JwHס?ήqѵ<}y L6+vIQһ5IeƲfn|'bT#iI+9' Rܡ)bwE!^=}A`/=Mb" Yv9 kqRm+-  !xlQ@ZvyFhZ1=ϳ@51- So1Pd[cBK@aGKŗ7S4ܫŗ~N_(/FSNq7:ERyn\A\nQ?">]QSAd~Gl:"/K!$i{5ʠ:1 #95! Fa42/ԬPebQ:<'5$qh{l-~a6)ً\(OiXuZIi_sj#MRt҄ʠ8\u(菓ʥ)??pGK!|>z/7JUb*RE9ހuW ZS4NchmD"6@uJmW!"G vӄy%^w4N*H3B,p ,ϛ{+WyK~H㥈kВ4 [(SF,` EE}jPƛ~ Әɧ93F`YU?{,W H~}OU\VVEZ.^w(] >8_Յw:y_,/t8oS/l'S c 2B7!zRUҼPô0 dІ wXsw[=.ABy|/bWoXҕwtqe?yMd` ykkeonzL'4MKi)~ !,CkC}ZX0lʸr Rrm1#'lFWK(X$={~a٬6\z]ivF;Y#ޠ<ו'&r~yN²lu(oGk oz]Njoqgn>:͉8 յr)#-\gތCqMBn,F5T7M#(YY \]bObds 2 mZ# V4I ;|+mcvc-CY EOg,Ndr;AZk0cqj"o <*|*pІBLlJ"+;u'ћY V9UaպwggT5yeϋ{s漀 Q_>V_G?#u-\^)?}׫?z&a,1~[h-k( nT!Q,^FMۢu\0sE>yv}4\e;PNUhNUjÍ7"6Wr+;s e WRf-9P|rNo9}5r&7qz cx}g~.A)?6Oӷ<66:X1)&B_ i[ْa'Hscإ!e:Zb*jaXW h1FH=rCHEךIc-1\ d=;,=[Z[yFwH1a>c1 l}#Ӫ8FlFX(4M\ۍ<˗=؂gwBw5kMeD힑qh{Eh@k&dS|'\kV슧P//v c|ue<~[. n8xDžb|^s?دo|p3;Db2wEqE-iw%d_.ؙ;zʃDkM 1] }ix LqQX4W t!#vLӄi"8fl78990S^-Ft1jD8RVX қW[Aٜ]YIJ)lp}_],+>/=>y٣iNmk1N#юѤFSִT{kD#a8OS`%It.2 k9z,#;$k;xbv;\vI9|tPFT+iӚc(ˑEs{$9OЌ7 Evu{ vTz}ZNVBS" X#vA J);}Vvz?Dv淫S_q7<]|`s6Lv`80 o/,5mL:hyr%&9G{, ̩QJP6k;kDYܑBږtZjXy { [ip^WMc7l\}(;)Pn>KR > ^~f0b_\t_9_h||C'ןDZWJR #ݶrJ 5'^,/@4Yw!qߜhm I=P{HVXߠ뺽sB KhQR vKEyiR^V{$I.BЖk vQF GG+HS)dvĜѸF]Ȝu4 -raD&.[,O~Usjs}~\ OU?B?R7}zޡC]x{/bJ1ʿ@ux?W߷EAVJ]PF*TӕsM5 Y,u¡,KCдmmbhFw2q|Dp^?^9yMLTJJTD]:rd1f29KR@vCA//r}sxѻxKN돢٠QjZN)%|a޸i¡jQM s@KkR2b+I_+VZ35]gRY`)=2L 4bXR݊i[ĘEa21 FA dХě;wPA$Ae\"O!>qmcJ*Egc01PJape$#R2Q-w|施n\7v.1?=#u{s}z/t{Zб+]BW܋k="_0%WM˹'ƉڊiDYd 7 n׶2.Z,Qx%x3._^de}FR!6 dk/dbдdMQ秜pzvZxN69ƀ1%s.&ބʔ0ʎ&dPe_2ggŸw/wf\&YҚ d,FkU֗"lѵ6Mketj)D02',z#q$Z$A*M\#*fnzڋh;@Vm c " S tV0zпbU[`&jJǖە׶-B Gi;fh5g;T+Y ['XO͋o@Gxj\|]\_kHVvoCsЯ%#qPPڴ-k%6U!q&yMt-{Ęx`{@ju2aIJ^Ae,L B~Wq_ci&܈=W7 f?]o ^QY9pw hH2ϩN[hۖԶrB {aF,\l`/`+%9sԿ^oj<Tnz}cZ36k߼ SфXNJTO)EQt<7ڨ 9?>"}+"xxikD[ в brP(NnoΤp)E,E9.Qca{IRZ4]+ #`b2Cry< 1H>&`y^:Os2AAcDJA!`T)~{0u:LHHЦd hcq2d+8t8nV -n~{~G9g9sk+: }-_ 4"܊TʹQWgXgl(LTWLǫ#̢g>l֕SQ CQPJFf.'mϕWcsX \r4a.?vh`*-tٌI}mb(^|ژM5`IpQ>Oiu=_@ 8Shc,6 ޙ68soF-pxquܼy"/s䷛PO{">Uqu)/bgNq )|CAO}>~}Ko|n-WMHf3lǞ&Q] [O3։LcZiio+ gLDoyKҔ,iݭtsc4FbbVAn4bPDm3IKc\3=EI~ଣB?FѸ9mL{ضaTs [8B%ePxڟ'"V{U.-.pBPNOO%O^' q5"TI;!#~,Ŷi^ 6y~CA/s8)L2d?kEu9(ȋ";rÚP}j("#Ф+v)$c}4|{/V^N1->ڔDy٩LMU3ҡӢ1 :`Qž^3<)^)$ѧ#OAr7NiduNb _y< PGu(;^~|}_xCXtJ[D-ETc\+~nnwg "G t-7b^"#5eϭi0{ &Q_"ݮl{IRwp% y'FDT6 \KV|L 8%H]E*)>z(lY%`Gg8v`r60pg+ x%XھkhGӴuQ7!xo2uш6!R~?vӟz~Ev䷋cbq:7bq m3ݞ\+eetd9@( |&?}-^ϾqJ#dh!W}VNH9TA8({+Y ptfϮ}NJTFڶ4MP$elk\r1J)1M5bҰMC@iK|#EEuG]w.mZ iȸQôO3On-ɹd5MT#I ݩ2 ʘm[cdgc,Zs0O;!Ŕ=jNN:HgR#q.M ѶyKpWRpJU5^: g5bucp֢:gд| qH +쌘2TF[gE7m=CVeja,;wBBP9Ǐ+{s}8{O~ ":.3?wU ۅ{vx\V(Le1#~{5fHJ@ O m-VG+I du `$"ǃQ/`r$; Eq= )ib+y j s|m *隦VOONl0lX µPt4WYe6\t2O)pJKd@z{Xׇ:GzG=ǣ?{=}RҴʞ+%ޠt]!]1Xb&zťhNk$|1,$'[1ov^oSuQEsZFlϳkHVz]JWo-)F'\=FvFk, PW;6h~}H!"ˢ#匮秀Mė}o\Hmۊ׀%8bu-\4T}!p#s=_3s p$!s`Yg0@B~7Υ%ݨZ+gZN%CshKHZ19"Ndʽ:!q\C<5a@Պ\JH1 +)tT0O3 @KnnPEJ.p8~rH"ѲWs$h(.-rɼ|/Pu <)p!A:DkYӈW!ߋ5]2X70Na\TwnZ=B=|&{O7Ỿwnq H@i/ imEQbN$&}3&l6\cİhK BKeh}ck4jqv :.hB!bX#'nU+ZhmTezYafaRJ\qw碼%3J'>#0W{) &μ8ڦAo6A)ZwhiJOyו#g~.~30).X? k8:[ۜZ0,Z!KJie|LTE7$6#? g wQMq?~Rx-*xo; QXk)@ukZT)'ƒx5u8k{1EyA 4M0E&Ę0MM8bUIsšJQM )L.4∼:,4R jl Қ;iAZ3u9BmG0]v0JUWn$dP2U ׿W}g?> _kA-$eE6TS 1fy :y2$$>xxB5gkmi=j3#`ZK ܼ  Yo@!E, IZ1]"cLe@k15 D"km8mR@K1[)-)?'|")#K2|ocHן``6 NxBL"|1#A+k#'3#t6 ; )PƢ19JkcJLGߵ@ӈ}gPy͉F-f Vrc&x0RA_9aHHP|m5ư"ŀ#_:}_^(0"k!r]mAjXs9)ů5;ݞ>ַ^Qܣpǟwq=7?>UoQ2ƠI@`S3uFc);=O1rlaO~Xޒa3!" 얺1t"^JfQ&v/Qj8rpUR0s:`+\ia<exֈo$^kNace8Oד."ľ)zV 0n^oa1gsHMꈜHVV/ !2|2|7ON#[NhmеK'~v<#V;gyH)~_J+&!p t=5_q@Hb,lTZ=BkHNkщ=+xvW55\+UGN"\î@fb*k1 #[b^3uվ8KD}QĨx댨{sd'j =]׉O(Zm4J!'8==- ?OJq66̛%]k0M|ł;O3w$a+*V\ I/Q`()%QSd8+ ʔO$vPlw mI{VP NȠ/ŋKC-. گVv9AgLVX,#\aKLq&9NUz9Z1|V[m1Mc@)iva:5yTS!o ~89=ׯ (4 f- yQ+#OO)47QӺy.P<㱼@T/@kN_1dԛPcyb9/bMaR5niĻKfJ} ?u(EN*,+ƨBA V]ad7MC tҶh&Ib۶sB$J3ӄ=ڦŃ̎72Y`a f~R YWچ(ؖ ݜ#ANԚG+HEuAip3-;n(H H8gHbױtJ]Mu0lpDMTWR8 3Dz'p|mӄ ~ͦI(kPll,m||e קtjSLggu(qdoy>{{f c 2=u(SOde[' ;Bś͂ROa!sde"\.i )f3J c4oZV ۶ml+/z@œRZaqy5hZ<>r O-]&oڋEko$Bs}G}U~ݦ`ˋһ|̣9)B2Zcwm84V%qRH@;T'!⻖RF#x#j$A'bQu c,VhV(}t>Q|XpQ(]uY*b'_?AxO]w5 G  gaI28 ʶm\.0AXcyPҥ˘KH9aftm,е=\s!DY/XїP$!<03q<{ W #g8p=CAW-o774ќBĒ圡%DРw˅K]FZdaSsGȵ$4}fQ]'{e &ex2u5'O(DhG~d4 vUk 1&,5mo9~F.Z6&ҦC4|T6po~e g"1> )aIp8S`3'''<ynh ,jÜX0Ke/6NeTi2/PFJ^8e.ҚLCʡ A΁8[HJΑcS1/#1M& }(~6Eh(, @~ϰ E_._za]ŢѶNNOn A U+ڡiV r Vc,ɗ_Xؤ+J4 ؎:G:;k'+wnd$&QnZ &DyLlI_ QK%c9T;qC1<;_ )B ,q**(,lqN RP>xv1"c(1 CvAAE} i".<gv`'̞YdeLLJ r5{94A9 i48:>b~*032֭$%.G<I$E,= T|M˓mcMhSгfD@bWoW{ys3rD۵VmXWuJi ӄf1?wOK+ⶔHB,zk1M^| "!{bk!^59#DŽEf|-H V8y cvߟ(9@GAN=1ůmmI`1CA_ {7Oٜ~8OJkҩFnϐ3tH/C k p.CKHH#s&tmGQ[;n}&ٛ7;j0J)*ԶOVi7/%*r2ۛkI`dOXQi9 ʖ2XsklUCb8Hs_Pclu4m (E -#;?~ {G%dg&x?J jRXJV'R08|g&әlQ:~ ǂektrDFF͋ޠzt}_Yn=a&t}7}͎IX1YC>gBđKve yǗXqGvehRHQ8Z<$AW^EPtbg01PvŒGGr 9_"-&qƵA)Sס?׳|2TVh9&x?i۽!7Ŕ32mGGGXEMϮ;TK'1xRb@c@'XѢ(+Ԑh"V#DmI"#/y_c9-UzJUxSO!ӟX[-VF9]V2 Ru ߅j;w3VU+!1SlbvKXŘ5ψ^yS a@yX,[edĘ%1Ma0dbSN aS_)G 3`k0 mڝ,%XqXx+7E`;!ӕ bI͆3O 2F'yܓ K@ϧ_ /|}J+L~"u^]Oy;++o=XhkRΊ8LƎ]VdE[ 2fOt7AҼɊwFv(Se^FTP`8\,w{`e #JUH<)p 傝k)xlwSQqJ)+GlX.}؉;ҖgGhq5잵([Iz0m[ad*FK|G 1ŲT2`'t]:=GJ\`u#|c ڎ av.k2h(r`rh:N|LyWn4Bd 1mFysgk$tZ5K<\Dtq.HOQ&S+k=P a"Rj-._c ljt5=j|]jmP|2eRǜ?M1X[ ЕPz|1WB 1]r+؆ԦFJ5o8/<0iU2TkN9&u}X}ŲfǔpZU[-T2ϼ9X,`sD^n&ΡZ Àis˗ݒb2dew p>oe12"{w;iK)cQ2ۗP3Z8%)4{ش2O$ňVxC5;ljaV0\qV%V|,cBqb иIJxc"#cHJ IZs]VlX1b'YO+1R쫵 v0HVl2ڞ9Q"Z~a#Ȼ\{Fpe^(sc1/))ſc&4ӡPwi}K]~mt!8(cy8A8vƚZ۶Z\ 0<KQ;u|]if&P[ys%dmR)qR(7Lړv0Y@͌Pr q&S!o:Zeg+YN渶eXĐ/.˸@]f?WR]ru8vԮy/'!rO<:B k7MΊCt!2f3}Nblec@45Ce!J nQO~Ţ Atlc%I/JyFR@cShNzN2($D*mסiRLD[}J)ŪrM !?nua4N1H;ZI ZV+ Èv0`R["$b,Xܲ9BUb)N)~Qt9g=+epP'w &?CW9-@eO^f#N IDATJGQH옵2e,a`C/m04i6f!D#(|'A`.aJ3;XX!iMSn_N}N6M#{᥸&!ni!fF'fAJ]s #Eu5@@ck7E!\Y 0Aڶ? i11hu( M+MZiѥ%H iIA)bwg}BOڱF %%'WlmyM`9}8Nuel1M3i%2(x24ZaV-V Ŏr@/R@w0hw^c 1J75qv{R+jNcƔh)LbI;ou(菓뙫g`G )5!ŧ㬆q-턐bm]j@FىUn4!%$*t&byOǢ%ez@(k-P,Lѷ--=J!@dlOeY19MPb &ZڽJ.ؚJ'Z c)<ٝn$Eˈ@i#uRLVv@2J +sGr#xĘ#ΊH+yU!&٣DyQ+&U)Gm7MkZ1؅~kK֊V4MH,Y0mfZx\RN8>:•+W<;rFkc^ ~i\ԗbt8:^kD\cϢBB{Ӳ'5P(~x(-I0H՝S@Jc/SPxƵ7:u,%n>t9N3ZwHDhf7S#ԈuL Vw& #H d`Dm]I6$]~%/61( A%q0b^ !Ys=A!ZJ N:JmFdQV1BMr!#sǑ!=iBӴSUx\CrpkLT *4U[ v%(E޶]ѮVnBS錣X S$D-,jyk-(OU Eq$QDZUnm8{1V8>rZi#^kWi^l6lBb1/kǗptt֛3l-rʘ:JhO4PpM+@HaA~'$y6-n\q+8R9:1c ,"'Ԉ]9ސRi Z3z~o9#:}#{[z2^W&?}Bl/{8Q{?WMFuFlAD!As,XyK2ǏbPSV8Z!V8::4-T7J/'5Ůw],wFf>Ou8t ggkR~)s}|E?ۖpljY2bY,U ~%z9s!Vdee"иF|72S_ Xcj|MȒ$N7״g^ľenou' ]E }E+I[,H QrK@(\cj)1*3Z%`L34~c/br]w߅3|Cab^]Zʜ/ѲFk(UvUl**YrsJ91m'y8Du(g>/k[_{rd/4 `;Bųh?}ϵHWHU8=:^L6))|5Ā (fy|&9dC#%䮒`մĉN2-ja@]SME`f$yQ̇Ox0XVDh{PFԅ<Ȋ[w Y5dY0Պs*eQ Jn:$8!'Ѷhq,[@ 9)b!nۆQrE%{~PYQ'fx6 Qu58BvP!9١BL_m(kW^v6D-Aޅ1XJvAhg.ߥ"&S-7_~Ps?O;ķݗOwOS1;䴲)xN]1`geb J(8:Z͆K}7SxC5)ʡBc&m ^]w[<DG:GoF5En/>ӿ;nO~oFtcDZڻ og=ͽvq7qhޒ,BC"BLRQU~EbDv00ҍfg*ղ_s=@Ƶ!4aN @bi0W%y !HW-7 IBg&6,#mLu俗D"qJUAbT b7* ƠL(-t_GQ^ײx{=vQ3 ^mJ*4'1YO fy7$ 99:yU@GvĖ De-0L#65h9QLO< !Xi1Ɏzxqrzi _k׌Q{PsbSD;\>ߙҏ$/1b1lCztCA/_/hv=q"r %bgQY(!1Jp?]v1&+@@ik9Z9=erLjqCQ +*C\ vk[)4Sdu&g5J Cq!/'۶el7@e?S %P Ї=ź%YqJׂ=!Jp*@ 䢠RBS+v; v7c,U]{SGݍkvp?$-׿iJZZD!:[rķ#<ض9;wF X|IfP[l#<4"F 5UOtr;9SF;e\(]>/߆{zqG7?a=ek0Z#ǜ3XcJhr)l邻Ԃ8ĎwsG9sXb3tXE όkfȏxQ[U Z芺9, PGJ u-2/*H舖νA2=0+^(C[|u "WgBt]v]ߖDe l܇ռݒV뺮^9ԃoCs ANOOlXC%!jUo]!{0 Miz&I,p91H9}m ;V z,CA/]ƿ7?~ӟ7O}ubj4m ڴof1#1"R|ڳZY.B[ i92znˇҚZE̝+hu=t,8TV (KTڰB%cIjfßM8GA)(`܀BpShEt ;#x*% 1TK"t0J74:Pqb>k@i9dxIxȈ0X.* @%7ƀ./mFmeO1F6MRYaYWN~Q^Ē\\3Dk+C/dO2n/cJ߽P '8p=Vסo?O/_ClsG$[X'l(ή\ )>jʿ< m1 -=CND~Z%qOUUAiٚ`(q9! 1yK٬!)cFN%dc#t&3HLw΅iиM\W@Y h)r2WJCt}џ1cxkz._z|vc Tt.ⴐc_DOBqX2xY|<< `3i°0X%ƚV9 JI#o(8W?3_+Zym::G~g;x>_W>y4m`Gԍu$"\ETF 0G+~;IOR &5 HO8PJc]u͐2:IDԢchԱ}(PڪJgdDdhű|S_;'=QP{yALIqbU$i[. ^^k\9gXgеtξn{>*`7kaV,z#qymόeR89YK&82ps',Ѫa\"Ez40Z+#&PhۦɌ51+{?iE2"kB8n%VKVOE hE+E42bcnx۶Y\ 4MK^[.$aZVaD@YH&L?ggk@?[4&2ȡEԗ0#f?3)meB݌*3 yL.rER Ff-bj#<%sZ"YC YXKL(#Y<1a0Г}rvJ|O #|l|g{Y_V x< fX8AQZ ʈMgI5}]{H!c #@fWp3ŏÞRBv1bx >09nkX!DT◃]NL3e/h~&8g-}kQkcj] &VYr 19/7ʼ) Z)lqz o%Kg= x;1;˯|lsT,F&-iRʹi5L-59aܮ1miķ|ogg1I8:p :|Fzs(ʑ1JrrˌVsyT;~ѿ5C@=Rݺ[T>Gnږ 󰑑p|$n-;2^: ,wJil[~FӴKqh v,qBgrݏyNxIQJKYm0Ϟ?S0pC2k$=de$U+%kH]ny,$3<͈1_P6M%AvZ0$]m'l8uΝ?JQIz<ËUo_.M#SaFX_,0 1#f﫳h;np}tT>;9sJ[C^`{u(}c|W}9^>uoymXEHY,VU;sBglg~;M_;qzx -ryBE'u ^1!NB;xG΅Z8j7ibiCu鄝 rE~M9{$i)E--tpGZƽ1 #vmi" 'Wes b@Gg4-%;i٣q q$|uЙIxZZ<4mqiW w:&N)Y M!]Pڠmx͉5Kh6vwDCem׀3[[Kn1IPQ~Q!Hڝ5bAPh{2^r&Oӈfa( S=$ : c)={WcJ/[k}l_>ahe4Bf ڦb 򲃧jcQrm+|ͱد8pbGzg +J\⫶j|~gY~.Lkk{/EaщU xXFcbFЍuaC'v/ra ea H5CEmٔcӦMz<_?p͗]8>is/O?ww<|'(Tvyi#XL"Vj8IO -q39X|b^[sve^@{ᓞw7woy)f=;µf {pZ6{#$ nޘr"y[Б]Ҙ|l4Q8V'm36 %L^@[GI+]t,)cF h?A5+КpM chK-EHwm,zK_HD〡äRw i,vYFTIʅ\ۜߍ)}ӼRpP;/K_gܳq^g{x{̜snv ދ5X=&T}ذPTD@@DzS=s,^>skO>w/a7$d%Lk ]=PI #F+ |4$T9޿[_~$}˼ Q/H&ӎ_ktg{{Nlu3ܺ]TubVZRǦIc"F9Xz ^uAՎq5-qi]r[sȥq,vX@5iE LMZ|Y1VU.h52u^oEGI(M e-Ȳ5odkAhDJv)icG0`m]EwJtӽĚc$$afviJQLM6a'QzhgYhkI*VQy2>pGlR4@!:NS9Buŭ,V㑖=-Dv嗐p wѹF-`DtL$~bOzSS͛_}}/}통//|6MS4zRqwN6hh)1=ϓ||1pBIk'Z=3?t+}f}6ܴkn#h[R_^*/Z [TWƘGckM#?ChL\8D\wAH"[Ո\$#aP5ՉdYߦ2ɜ8:INwUܐT*v:Dᘲ,zJ*llhpeQ2 Lu Q@FCeT"k~}A _ۄeI2ѻZ֒ei{8Y)lNFbcy&6ioTPdkJl B0;=Ge4Z3l,^.$ڋ> @X$Zo+sIJ-r8t:"#F*HR9T!7%RoƚOݓW>hVY&IFʼ:o7-B+z;~rz#ׯRսF\5D]$IM5<]JRQ61ID^ӠRceܰe.UVUJzJJ1H xodt:距 8S6i/(cs k]&g7OR1"*yQNI(Y)b6pk-DRx_5@q"["_ad~0Lb1IEMos~{1G?ooݾ`i4UI W>UI[Ʀj)˂m۸`8@-lPt5$83\L]w^9?oseѰ!5\yqf,2פFZeU .Rs =MъO"Ȫ'7VF(UOuH+(MYt;"ʓvt= eNyЊ$K9Qmv)Je`*j Wp4pMe!w| I}.(C^ܔ(DSd#][]'EpǻUPW&oRFU#!U5Fӫ"UњWH!m"U)MQ G9I QZA:WuK:,ʈW]lhBs;,Eo8cyLo>녬Zۮ=o9|w}ߏ$tj &$өnZL0Cx+&~T_ۿlzI|򫛷1Ryu|}KڣyoB9NZu3N`"3?${gsmy߶aIWlX%B@IU ˎfVբx5i:"])Bxeȸ[x.mA1e[抖MjsJ$bS),0PF*ʝ:)JڶF"2=5=VJJ7U XBAMty|@E 4 I%TXAUF{ZF+R8+NGf5,KlXYF9xA|QUdlYw{hpwM36taLxk~ϟHN:AAgӦA"1LSSS΢bTkZD?6mb~~<*%? E)[B8u~04ɜU[$&(8|_閻7>[o!F/11T Q:YG:4B* IN˨(Hb\E 5>JK'D)磎;]LxǙTO \b%(#Vks#.w{/1j]sPFۯ!tMx]|$#<^Wwyfzݸa9~CO/@*/{kHɻ-0^41e&B1 8+7Î^uw|n4I6p0TENP[9ID]#be!;&do#ԛ| zsZӚ5AiTˆO>08pi^#ӇV|E?7K.kCKum*f" 4ksg!x)̋ы݌ֵVQε`4hl-HVT_>JQ%nGC )$nk[X["uO_2V餙в WM%_D&ѵ8MeVʕQjU: ݎx&r(P֛ jZGŸ/-YGEs|`zz"퇸aSS Cv:UR{'">WdP^(iE^D;'TzR9v#!PW崤\}CaK]w1Zo ^ j IƤB짟®l;/_3Gt4-tDN6"!tLk hWfSأ@iBl<6{{Zz =k7]jk|_3<`no*FɛHE4UTڃuku7TQz8I$g|r>űǝxUW^u>U'IS(SmS5 XLj}.O>0m*^yKb&P[.i%/Ak0/~zopί>fOʞ;*ȁm,W^MBW-U#\4Ekq !4ԳgYOvYiF9FTeF]7F@UC1YZ'1& <Ǫ߸v!0GHYVȺDb̭1!ѫ%4J*I^ḇҍIp#$i"hȵu ʪ1$YJUƩH@|,'BH4!Л -:)ZkYz `85gc_#4CiȲL6EF}n[4@:נE;E'!\;_IOM{(tG?W?==T{e=y歛T58“ QGXJs_KQecgƋq3q^ *4|m-Ԣ0Je`/} 뻷ӲW?^|ʃXrY/cQNr5 _ qZ@SO8I9,edTRui>ρJuQ`eTN@xnzgُ}[\n_iBi;էtlagZfFÄ/ <7-/>>l_le+ݦm׿n%s׊>p]:'rנ=>?ҨcUno" O+\φE,Apu+^b%#?w|1*^WUI Kl[cHUlvq̊Yi+#EQb!FL^te^]WFE'2pU_$pۗUE$Q#\*W1=;֢aO0irMIiM+UVeYD|jy5Fi&:ub]e6J̦Y+} bG5c-nUH42'A+: }>ssMn~-*~ [iтZVO' ʽE)&IeBxk^'ׅ^w}+p6-NT&]Kd ( s]x+: mQJ]/j+NjX,^Ge%z7f33BCkEl^\"XsE4M&۷}vQް d^._[vͲM2Bp_5ұcI]+qcܻ,fo?G?^o}W_soZ;F[<("k@h U`8")y/:]v]ѴؕIZ3Ep;$|=3_ߺwk\tt:S7;D{5Bo;J}&ᗿ\ǖj]M4i8F[9 5`:U-\nPuJWe%y52rPD1FE̢,qM]:]h #MUXm(X%"!@m#9?gPc Do\%IJjKڲ,vg4e>Q3v,0,Y鈻\ɢNk{Xh4钦h˧2MLԦWL^Zc>RT_V$a۶ zU1)q7ii:"$9&ikT# qRM3Ũlr*sF>7|0z!(K%sqgW-v{^!Iش}Ϟ+>os9v_s} 3S=mSZ{sGqUHe %vT- (dmB$bRK Q54F17Du.hEZ(+D%3/]J,[NEڙx` 4mau%,K Ifrt;rZu;A3QUxPU%F PQy?e 0G*7cy3hk*tzj(7=?o\Jـ'-IEB)/!\_sZ/~uyۿΏ@ F[EǙw.~]4㶻V e1ʇ<~]G'WÚdniQUsXXǯc.r=>oME1},x$ڀoKw}_E^5٫$ 19k_63MYUTakH-al"?i2F6-):!eY2"`| ոy=csԾn]!\v͖|0h/o'|3Xf5o_o;/xw$͢sƘx UTMXs҉;>5^oz$ZdCOcG!+P/r.}? *xvM:/ʵfAe&~P'qZ ,bfT/=! 8P5uE4<$99<UܣVZ|E⿞^|4b4 y(x3332{Fiɱ(ň*+.yǤHc霗j8LMO{\}Jo|K;R4apqݴcrTõ9u4OqDN, D[F%KQMtBvE6"ũiXFl)FƼtP#? DfP7"UխeLC]ǖ{ 2YUaeX䔑/?ItBiw8cpuWw *N*YD B9 RUE|h0`MxԓbYrǪ==*;8=_[bcySԗ* zE=VXmTDW뷻PeYnuP!Ҿ1Qƾ4xh4%]XexE*Dr;\ho${4:V5F7BFtf>;ިFBIN'1:zv䗱.o׽O{zM_fA[kc"n);5@4HF3QňG2{;A,ta"i+*4]c9~2^9}y>hmRs{k(;ϑ0§.STAIukLMD- J*4`d^XCQTq^e*4a~~* F^Q \n7W@5SSSPϪ^CY9oڄ0I&&rAer~̍Vd:#Diީi_:MRdFٮuDH),G @jS N֡tطƈ,l0rtn4[Izr.E z?:(`U.ZPyZMkwy7Po >y0Oe8c$TB֓E7>G=q{_xo<噕+Ӊq#Bv{ W:i#7@> 9|NCiP `,[vm4X䂟n}Kn {ArɢdNش>%[ɏ3c ))[ 9 93WXay))A[F腻@`;jZU@]/4H/m (MOOKb/:6Ib_ M.#عFzM+opJ6ObRш|Tel9A?·fU3*jqh Ef4 _1Ru{'d>I,-ß<]{yߵiۦ'hUFq_L*,F7:sш*^xgkf<}A,nw|jy{ĕcٲ?'f k7Zm~qG Qvfɯ\ϖQ/>}nQ9)򜀊U8 [ݤE/ձʻFɋRdfSQ;&"TODhZHVe)ղR$(p53hhmb8싇x*75l8`TqM^E>t}Dw_5!G5/x/m8㯢NQGǸ4󢈶6ƪ`(MMȺ"Y;77/(Vq,[S@6{HȵH}ks!W+e~$&q{_u~ĖA c Q,fDhkY^QF cuCi ]cx.Dz+ӇŚՖ֏ѵ]RLMMsueAY9FQD:kF"[b4EĻ6+vn#@sջ1[t{Пw :<17޵h*I[.rӨ.eFם|+!+%8fM]"vej(Ie\uӾ̹? לr [_^W"E^K|~"> vݐS /|~cY'~))˿:<8e \A (MofJ油`JfG[SiYN`k]Uh"lArM. I.MMQQh]J\׼#sQAgYhcr mh(6^ MZ)loeȇøA,)6I9UY2Q0 nEi+\Ga8|B* Ko\E]fy n}DL2Q;V'BSׇٹyMI:̏N哘-'e/oxNbyYTYҊl ߵfW?h>}%VWv{PoRKZ/E)wș.m/=g?zSFUi&x*޵o܊"hcˋIc 9[ZX{y$(E&BKilED,{|c&V&$* -/⯝J򼈢5e^9Gڑ83;Klu%AJR6-c4ӳ3$6!oPlke0D;G:] sKP M-f(I[EݩF}> F])ת6Tu+Uׅod/L}KfƏ}o߻~׿u>}G߷i eM&Af"aHTF*TeA1rxst3nf5v%zŢǩ(ֲ\Wvu\r3K},+ώ[싍\)zh9aa=o970._^ C,53Հra;m\sV\\K`Зk-Բ4Mp m*ýw],k)*;Ъ*vQ$;c#o7>T0 ZUүZ\*/ltHb4a%,c-FRY LySFW 6ehHRTfLDCX;c I wyt>ƘcƙyejfO`~~[2b1 9"Ǣ1`h.jʕUj37 cj?MU&1j/Oy޽9Qe  7 4"c Fy/7%p2Ǎ<`o|aހi%EI<"F\hutcgu._yl49Pr 8P~cNԋx=^P* ?u񫛶a܅WDg Fhyb.xO NreБF[nC+J'x(sdEQ)J61yT3t:)s}+>ʱm*Qe}G6z<~~^LPЊ67v+E|(r 1e|y!O8%*Jz)lb)@`yΨ(Hm Zl+IueY4}]16RE\Ɨ C,K( hPdYF?>v=Jm&BkZ^fC+|~#dE7B{Rzx'|?=gwލo|swk޸ne3bmg6`JM eF}4઒O'T<#sϝcE N䭖R0^ 謲\~g|]t5E?=r{ޱ.b_,Ѻ@S^?G|HDկbn\b'y,V Gp"(ƵYHFْY 7=,m$P#/J$% l B:sF& ό1^+ Db0Y6|4|K^n .+%pGVj.yn Arp?MmoHa>F`aN3IU;)^"#FA6;i*-IE\rE^ݢʼx_1XVq{p_Y<]L7[0n'h:.7o@QX9#Wr7iyCv%'ŮkV nS,]ŋmy>(6usck{1:4*ITiIƍ;I]TՔ l{3oǟ32(VpFk1Uv y=#$?WtRIeE%P7հto#lкI(%3i!(FVIR"Uv[Ӂ#2Xk_k4[n118f-A^O\uǡ(:h#@FQ $"hSAKĆZ~דsl ֮'f#$X魩еy_Kz$\ ?νI_I"$_ ?=|G"~)'3owmݾx4:M3e+梕7( * xʢP4h& yЪb&Ղd5$cpU~W-"Uϼ/~ֱf^Lg؋ q AθʵgZƿ: X;cU3]8h%kočw͋k7yQ27TNLOly4&0*KUh]nR+0ZQ"jL/:(4kn\Iu7*Ut pH^:FLMOyQ >z$;?"XSV{[2UȻ G^uZXmزe#)h4>Q mhRT쭍e~?=xua(-h/$_lBSaӞ?ȕ^tmu`&Td'Y[wHZ5VZ)|4$9ٷǿQ|l/9|iңx#& d},BWX< ?l.n hW=Zx-^=;hw\7^MwbHbuv(ʊUÏ&}`8JGc;+'iE.ozj "DD \EUtQ* fP8ϲQRIL,Qń-=)(҉52*vjzqy&8bBT%[mc۶FQߏ$;u&af{(<#!Wol F2'哘Ľ#['si]7 7] =y1Ɛu:b%j3p*$z**RVʓg=V|aV1kde蠏_DUQ\xو3&\qenq$XjC^ͭnֵR_BD1^GMdŮ[v,΍ ,jrQ"+99>or5BywU;v[[[ g굄{Vr O-vcٲ󟻈~kU?n/Nza,6zA>=|^+|c<O4N+1tNl-媴8MrebNjAtP;GW*I(IUvQnH1OaMTGiUd qSn6=5 7o լ (H`TieK!"sUiI"Nnc@(%^ynajj 4ne8r|lP 6\ 4:c[##/޿?י J+I}m4?Ob|#r\=H " ֪, 5`]?yoCL;a -2*a{o}f>qַi6M9iG|:'V-be%z-K̉0u2O|sy2pn]95Iԯ_RWA+Aq,J o4N\ŻwW1 Iȴf (c)n,&$jq]'^k!MJv˲D\j2RB :QN-S'z _ u{$ /eXk(Z526oL%:F@'̫WxΞ$ so5Zy.!x4% meP؋< мæ=dO\.wt BP_%?+COP쓘KNZy#c}`cy~?looQ9œ(ݙX|-xi+X,??G9r. o<`'cLP,2j^PCEWtXeg}"s/k.:`4uXf9ǵ (MAE1޸aG /9Ef\[|Fs֫4<ע F3ׯ'>uwrO߇]{μ(mubQ=-1 Y'#{Pq΃>ΒxI텲655%Hfi(2"k0]w"ᚏF M@pm Q s4!t"P.xO sPѸalvJKr:@H'X`$eTޑ9P[P--J7dqwo#w;ޥ |o'?mOz#Vq{_aW أ z|*F+t Qyt1)EZf-:֒c$T]U7Z7fP -u/8#jYб{B{S@0A7/O]-t3z^ciqKŸxZElBr[~ξN~n^9OyE+P282!+(]dIBY,@/R|ӖQ& xO4'"j(-հ^MSʘRdTA$W=Akɬ% ,? C W7.۶ލRp'1E>sUf5|S=OnnݶaAI/tX8 M^gzWhȞӁ}xsfec ŀűwK*vMISD5|k7~kXtK?xqzE!,.m-Da"c,hמz]TG/Fyabj ݩP預sFvƢHeY"ƉX*Ej{lЩ#QtzkUZ`T#&1"'O_c|0؊R0M哘*~ _թ/O;n~`e"(\9TXAK!P9fw?CI 7KU0Ρ)׏D>r9seM/8v:Q:qͯ}׭%b4kuDBԷeY|4>TbwZVTUIYdϏXƫ_p$>4 "zdyQ W^O/É5?Sfԡ5[EƲW/_;Lgg?j^Xz4i'Eya M:{r9Onb{09]^c9O12TJ GJ~yis9-纖n+jbRNG _*Iܝn"/ 12c (- Ċ%à?/, 't2=>qTiFڛ"8Uv B@Hֈ{+rv潴ĎnӲyFe`Џm.i@+sy&*4x ߶? Wo.kVeRQ2L*ILw5Pܩ/x5x:~u1{_pOm˶-O\embnē:ImE֧9+)+ϋ;/|,_\^Tu/H^4?Ga?F>z71晏؍=8Sb_x8͡["^jZ;̏s-[,yʟ*Q FYrS4<=Q)eO?vN08}J^w w {ktTPV?Ky{i4#Ly~dhC  ]Nh%JZE?dnR9vAdm2mG3Y.(~h+ZE!Xrk*"Y9UUbj \pk=OBNseuh齅%Ƥ~[ILb[CUqǜxе^7?6hZkI W3S@$:z;;*p'uϺCHܜt[%V[ɴ-Õ|W|;Y,~LzRl.U/;k?ְ0ǎ9݊Bpŕ8+&;OWN舘lq(E0Q.681Gܗrv]0ϭ,S~W\+4S,IVK*MHUh$)1)+y%&/UbZdIpєyOb-y..) DF.=Ц5̝wT/k-n<ϩmeTE!/c4QAb-iҟ01?'G w)4a J*HTЍXW0 C_ڨ;?X$&?)O|N:8}8KlٶhUBm1m,ȥ&B-<`.#8긽[ _VEּA u|Ƕ~wy>lЋR(uZN"ju ?8g=W1<{g<2MN@X87rmmovڀ[׾Hip~ͦBkБ)&vϨ*~[Nu@졩$EkEC ŽMeQTh4^TYqXՆhG tb-P&3"j&cѨ1^:^[lw;/\Z1szA~,7݋F5vziWhmC@WK|!/I4c--cĽ*ˮ;'>=׿ ֟BPID Prjch<!aaphϫ7zqeeL拵%ȶo!*fm="lfx֣o_@c'tER VDJZ;Y߼#}W9tO,Od΢dHoQ`Mf")( K?] % |8%DdiUQ﷊\uFUW:VlbDuUIW':\YaZ=qޓčf+$ڰs(k,k6!@^:/%IOeYb'4/3&z B06*r!eY XcoUq,؞j>:ڀJfTk@PJ17޼]Lb^CA}lbɢURCmlKuD-]owiK$ jϋZ*ЀW`S6ίK_~ܹuSiO8^5ළE3P.niMz\rf>b}y)GpQR'ai}Kt-vc)Rx2,~+'u#6,KycXF~歏f"sȷ*N;V㹺^+Gl4!0/D%t&JENe@(r:^ ]i-z/qSFE\n>n}+ʨ"'.^YmbE9yh4Uc4:zkU"2,h+ئe:CY(޷֊v༣( BW˵K6d(Z6+[f8 @ZhDf4֧yQlJ,#({en3"QU_ޮvi{P+0m!1h>Zd>I>Ľпٸn-?`*8NB72#cŞ9|@J_^h<+PE's޴|\y\2G߷O9OEŔ4YX,5nZYsM}Tִ^V-RH$ҒT:(J> Dz4&.(0[|~~4J*5V_+`N_9z%ht% w:BSJʲ$/((]'(ʊ[PecdU^؄@Ks/&s_"~?kz5|c_>IŽ?|o>q;9jc1F LXFS1Τ( yVu={g̲HI[nz孙j߮VE7[w;k\sF:y4W.ZDJe-)U/XM9\{޵̕^Cx }sytT.|s-[(% S_|3>4vGD/HRWíl};.Ia1u?:1+k^F$AKA%."̦|IŽЯrNG9tڏbI^ƽn*vו6*mb8 1ȇ*M/>K1T#/;'M7cܕ>8mt8\ x㋇ 0/߇'m6sKW=g|֡< 5r[KxMX[ 1|sڇu&ћ!AIVZai/;iWeIIcBֵax] H,~o&8G*:Qs\U*1mAZ.|Lg\L5,&Z4>p4d~Чȋ1E5BQjBF: 7ײ?kMZL07$~q%|4$WVUGĭ)}YQ߲`x=?!>w[#n%fЋoK%EASB/yq'+_p4wWZҖ7uk;DQ>&rpUIۅhSV%Y! qB'ec!MS<'/KE/ Kn6Rm3 VETƗ`y9;޵k9{v0ILw^B/ruK^)bb(yiQ,:MXjq_PD,@شk/Wo'>unk#SS)yޜ̣X|&բJsi9ƶH3:G8]`:Cyr#tA hCEʹ1ݴJ[xqkx e}v ue{ҢսT75،[nN?s s>vLM͠,Kh4&Ҹ5^F+Ecp0$eYa"3FJ %Mk%8+8eU6y9h0JhivҚe)\-D̾yGe.`4R†+jWQm1tX0y2;C UY{-NP쓘Dk =I24[RʑsnMTJFĦ)+gok.'@jV[a95,T',g~凬r5]^qa<d_~aGJX̨U..a-Rx ^sr}e&ki-dxЂ%ccݜFio[o]G>{)o.ʲs7'=V%TqH=S,z;lV?ui \*H:$)eL6vB-=gfS:p8Cb QT@,CU8\g ѵ!tD}8"/sJZsvD%|4jۣs7c& xeQDTbŅI[cjgyjZGL}MNiZ%m{1OӕY(!%ƄQBC _x@j E?KƄM~t%̗#[_r ʫE,|tmWŁ'Q 7 G߹uo'M5O}p]WF9 ?/8Kb4i])wos{- 9^ |<vb~b@xR_}|n]WYJ|\<.4m+װufZ:%i_iM2" h\YblMS4Iīj@ZΑu{F3}yYbTfdWdIъ5~͛G#)oyMGZz1 ]#Ҿ @B;eT%ꆓd>IŽЇyEÛMVJ/wNq!DJTUQsUAr_C#/n›;^~_^wr^{5*'{/Y/5+oLLW o:lbY? %k^4 Wrd^LUn3'5_t G$Ę0I-A#^2)6|s9+qI;pbs2sVJi&eLO3s!uRu1ϓl bF߂p}E7MI;UUe*Z|thLvVs$*]`<~*$&ZBVz^or+'+U>uGM,UPF6xe?u-3XG mBba[o}>{7yVfz)'=y?cXlAwHo*j vyvXW̵P} \ݦxI??&̹Ijњ=fEڐ{9??~W޶ x;ScwK,bomꎅ V/#_L>~p NOo"PUŮ$xs,+@tzlbٶu3sss->`Rc; H YS6z_;:G\|ӝ8r 8X8`WB$_x kuj(iۆ/">X; ʰՌTvH䋣̀&K ai\*:ShXkm--C9.UZ$MQq݀^çzTٸѱ7";k {Dg8_aӄQ1 {4(Peګ|9Q+c` :1 M=npkۚc 6xv?h۟I$&ZB.n={{ႨTw1ʰP:'7,L#M}Ԛ>Љq8i-cէ'M g9`ǿƏ~~);x%y1y(rk· bt=| gf/糟7nM O}DzfQ~|;Z{=K Ǘpms>swc{%U |Ρ< u˷-͜[Vj{ `6O/]g?}nۜ:SdiGT}bbM%Ơm"n3S3ClEØ! oh*"u|Vt) hD!M'9p8Ľ6ѧ@g誔"-۩*;nD-ȕoES! Ts݆<}1N>IB":I1Ľfz ?v=vڭ?(rA&%riM VwѪRW.v]fgߝbUƖvJo0w?̇Y~~TC\R[\?cqM0֕㺬ߘG9˲S`ұ,_>ӚfrW;wIXI׷~ϻ7y~Q"Vi%Rܴ97pGe:ߜ#k24F9Y&r뽴Bh:qԦzN,O'1?*tN8 ȯs솘̽ss$FPJ7bE^n0O É'T5K-(p*lw[_5_7mnD29ox#XzPU"%`/}a2 j앙k*>s/z#yGk+0;l*_,X߸%s }~}\D{cwPDtjZk*P~ɯ徻BG&P&t*>~rO:5Ǒ̲}V6*;̪Ɍ%>jq|!MqO7w~]s3Rdi3@TAT>UUI= j^fjJpZEEx)J!oz[0G$ȟ$&GjB?q<|w7౅l]Y(*QpaHkуm>pwq>++x#3Rsƻ?%[T)AI;[+~{OqVghhR^wu;yly5_7t 0#v;M@-I@ڏa ќS]6>_ C:$I6=ĎL|4qAڬ5Iɴ$YJQlظA-bf"[+#ʥZ.DY92I"T˲0P{k%+-c?Ϩ(k;-&F  眱HLE!WI+5EY$&1?W:a?^T=(ëP M0DvAfRj=8 W\~o%X\3?:NYXYfVWˮ+pjqSk$sEKg} >s][^Cxf xbqE&űD_]~7o;{|[ ?7xheGc_'Mu;K>/CYNw ep1;TZ "x D lٺ(/= p$*^^[ӭ!P%i Zab=xOHhuX5VtUl3ތhUѵ* OE}&l~PTFĊ?qI$^O]Ct38/ |C]Ǩ\|vNqq^+Qqf6enĵW5{snoDsQ԰bKf [ n?hO&+v_V?v֔*.N} V_v4y$IAxf;'Q& =] "Yĥ7nR <㡻/ =N-x,T8=JPכ*9zTN2i?ri?$1UQ4%ޓP۷2?ߧ--2Z:683: S$IJ4*ъ׬fk:np8Uw׭|F2 6„=Z\%݋h2/$C?Ŏ􇿌[Ë=~>W+jH)QlJ=M4j])\Y1'67\8*,ebXiU3ȱa(8.rCp~ϰ}ןirM?'?_?ENPGWr,H'yq }1FݣʇґPdf'2 & Hc y7@jcsNk\hƴ}I5ndj(B1VzXz.۶lY̰a&*)#sHBiU1c9$۬H !DR8xѧ(?ILbg[I'oe|anV)y1S1dYJw+e*T,ZfS[ t"$ \ޕ,N;Wq|O:$ȸ"J*WFpbGuSR:G$&2޴m yCukTZi+CdCaMmx]Cӑ Q9yQHk=x|Mk]>j=z:!&tpqB_,CW>7I"$&1{^nbvz5:|q)*TJjUM PA)ƠM[Hei7cЃI6wݴ#څM;yz@8>C-tp {^Wt0'=fP7@Z>!`kR}[r7 /3ZEt *0y>VR |PpkZQGLKUgmϺXWf%^Q>^L#ͧ#uIP5NBD@P/lz|PYoBf)ރ׽XG5ukMlukmq1KҬKo,gJȲ.:i5%WW cV'6Oe`ڰm۷G`G\'f/ W:ݯNk}ILb&tsZ "5:9N+cFsE9OCU4BF歵 z= *anG.(lbeQ7:6p1=Z ݇׆y3?:.ڧ5P<؝W=4vvuL8yPži㓟:3ZfYN:yӂWdx] #½xAkcWr?9.. !ؔ,ꓸ1ImcBK;Cj ,#M,ѐ60DPdM?+\-朵x! |xdYoMy_>^kZG7@Q~7m}mɦq⮫l5vF >#hӴkhC#5\pJ 6D}=o=loa*4_jJk{ڈjn>A@x(#DВpԝs7H|\mp-zV;bw 'sdl[?w1qVzsNEJZ %$veB vga=GSx<}w`k!#^v~^o,F_6hk7Lv*O8sæ.tHlQ)7k6 9t`bv36l̆ r'Z"5mT9C竷i$a5dQ9Fkuf*^/{amXm|>MRGDI6èXV(uGp*|%܄_>IL7KB6VDCQVŅVcR\C5(۔M*K6IIFomje1GUq*Qu7me}3G~4yyo/뇬}ekwz,B;V;[ZjޑƂ6|$BO]&? 1XOů9$#MXLBPWU *h*7k5Miwuż؞gʓ(]pYU#ܧL"J*WZ9dʛ2F)uRzxA5N+ 9L1VF.wo{@ףUQ__>IL⿎y&V'A MJ+c5XdSVە{ÎsUvJZkb77[,ֈkW7QoCw#2 55~/.p޳+<ԦPӑB"1Y/l7-VtW/~kF 3) =]v]r[-r^ױ0r__kTI.*IҀB*%ے5hiUgIB7Kɋ;[B9Wd:^gI\4}$9W9Q7g*$* XMPW+eJ:iZJqf)W41Y1 2[#^x+&I2$&7[:@3tjP .ݴ6jh 3֖!EQ$D3z-ǕA0/c*7VI n/% ngsw~n;ng9=Q^<2Qm*:п=:Zl'ܹIO~槬/q(PiO}E)=ǭ,MʪYMWS!ۜTO =VJ$ZM)(j-/;^/ײ;XÎvƴ4L~{O7ݽJYf2x{hۮ7Z{6Sv%xTT>0\)22rR62\ Bј֦1LcHL#!ɀj^ۜnf>9!`ht߹sg?/rCُf1+^UίJ1L)TLrn^}۹񋷰+5R cuMOH2>ф.'D`4D;﹛{ܛg;x͂D#e-_BIH1͋9t6acmv̛އ.bTԇ} gZ<4Yv+}?z/פ;qdhؙY17 {+[[\_Al9H_GǤ(yޖݬ|]R:Slt(#OՈOÛ Oqz%:Ǖ+tr qF7\eH_{Ny$bqnh>6n83?Dh6<) j LT%mL l1͸1&I йfa)Nz I)_r>.&Mbdfw wjIIZK.Eoh~ѬEϋr]8Bıhgm>~DJI{f{FtZ!TYwBno0"*dZ6FŗY_kcGxt{_][9ڰ>nϷǭ8?_>PF };[Ba#oxǝg4ՐQՃ5R󬪪ʝ9URxOsN:|>[Ŕ<}W]o钡ܗ?:MT3kÝ6k5F<ឨFA.EI/ǽ 3Z^Jk<5 /[ط~HT'4_+[$ŕ/")EB(x$ξS';;9g55 5ͷC'>\X8/,u{٨bA>SU/nSx >f+1{o/Ty6_5=>sujpp4^y7]0jFuq~+mlRUgΟS,zy~ 9٬H̾_RҋwMЦtxLK©ܛZ/ifuv8 rļp0O`k T#^Ql¥yF7EF)t}wŅ2߱kr"KÏG5^<;MKe+uS㟕 sEʈݣaِ}--/8qF<_=*^ rZ^h/\MAv~s$_1>na?rʇҶ U ,1)u]gVшzTB &%jĽ8s,1rWpMԔTbAuDQq} (N'G\®If7 r8Q_8]?$pRя*%m]>s0w0wчDSʎ$䦝6 1.UuM*.BDJ%)wݮ3";1|-k.rL3.;/}soIXoįn. 91w1_|DqrOegwp}mHnxR|c?/YW8ppH'*S(k* T*WۂPvU> zcJV2N ~+@"TQIS΅ Y63vAاUb8 :ndzOqWvW62Q`;Ţ]p/x.?OXĬԜWލ؝qֳ 7/|)pj{E1,΂&bۅE|j{Nn|𧜘E_!({MxtYjOF1 :ϑcY,ybD.D@gT7M|Sn:O aH~y>bL 9s>'n#WHQՓzv.P,LfeAxe&%e#\V{ V1Mm(ElU.=Co˘;/:wm.E͏QhcS|*, iǿyw\w.(S|cw!u(?cq<1Uޟ~5u=%7▯ o}{gyRU]B-Igi70uUAcdsc|3C۶Ezd{T-jqJ,_R6OWwum ߡ~&KG3 Ã\zQ7^Ō|BJM:ܩ .6yM_|W%gw7L/wBhq)ǁ>?+ǔ[jKe~wVslkF+!?sf߾u4>I֬{ɾÏ'OۿNͻ!Pֲ_!Ty⊯y>ŕ.BVY-'Nb{{;OFۏ;8\8N44?J)ZpW4CogcHA#/v'lo6iV|YYr=~ 1%%ܽ vt򨓜dϵ|c<\q9R2̝C1GN]$/WOƣl$}Ƭ<!:GƜ]﫼o{N1 #굍ӗK{s>XGULىMsDnnPA]vvoeH7"< Ņ,BV;I+!tcb }lc$q.?0;}zGLp̌o;ӞpÇz:O77poe79HʳZ|rVʘ]PWS#uE#V}?坿~^c\=ćTl9 ޕˁ'NɓNd;AJZ?P״5SM.js$GZ17 /M?6*6;ιk0"B.zջtO)wO$=~v<!P׃ܩ f/ygz̜O!.>?T}`#>oWs u?wNwvB=;^&\ͷxO?Ωb8zIO.{MD-PKp1Z_c;v<+.d+ݮﱽ.җ4-maCDA؞l~RjMUpئ:ur] fVY{\ߙ16 ~+A|bU=r…@Ra8l̛đ3<)s8x{|r]Z '_/=I{w=ݸ X-櫏Y^+r?~oqneKHB]YZvN\? z8'?hc8sެ9w]JVѤ&UOINCܗay"j~ #_.WW}}tXqfz+o{N0 C`̠)|N@H~KK? :;|RՁ͍ v'9|{{+q* Vq9XstZw&闝w0ۈ0 {Arn<1Ob1LvF2Z{ _J) 16Ԯcd`O+eY*r^,bɝzl|F!%|h3Mb0$ڦ% Gǿg=4v`eNtt^aw8{cVCNPN@ضf)w[cb:!'=ͱǙNfəSܕ*z+98U=)zj%t>am~ayHugΟfs:./C hץ'4ѧzyUuUKSQc1YEoPyħ^ygBZ T8%|k|#DzpF>T(JR)'r"B6S'~T{ĉ"˵d\/~+k~S01}I5a./UĆ6پ0 ClMY[9~9YW{|&VC2T*()cJm]Jw~Ukl"ĿzUu'i]^-ڙw_ۻ*.+k&zOoM_$?`Am [K_laUwK @6iۖ#ǎ?XR<ٳ!r$4}(B§$?ݗaqOĻڥdɊ(( R=zqrE8u#`%tq<Ռr|58e=}yc?3fO0p3sv}tl-lA=Uٷ[]/_13!ѨPLvX)N58w{Z/7 ø yp9ҶmNF##Qz۶6@*yym;؉RrWws*vQr.6\1/Wݸ-}+JSef]kqks|?[nǦ k$r'޴-]ĨC b1GeiHp:>x:ӧivyn֏]o*{i M~M훽 ˭aܯ<$Eqrpٳi2+~.(fN $_Ux頻ʇ~WX\]Y]U5UH)XL!h <0/g\q锶Ӿ/Tޏ}YSw&ݬ~?9C@}`ޏ̫Ph}Ti@ϧjKU^V܇os[[}b7y_˗Eەw_5})iՖşxs 0OTDMTu]WrW9OӴ=N8xw=ʹ.@K7eLJ[U)QQ0 âC+$$}NO1h휔")EKW8G* m}Yybl>9^ϞOç0BgmZ}حkw{ c^mn#`Ȭm{>ދiRֆ#8͙g-坪_+5K.--:QMo@?;SaEޱ5bA1sH*O!<6Rre -,yup13 )Js-F1=k~a1_ݗZqKx>̻~ܹk71hbˢmk+nnfw<)78~'Ob:74wb's/RVrTї7 /ܤPʊaUA؞lɢ2UWfe)[ s銜E$ֱ;Ļ^D;]1b#T<1#Ngo]+}gؓwt·`5x+[hMm0Bm)VeߠsN*UK$uEȉ'>p8;!6ۥ^GT?ʾ\Eԉ0}aeA'9./#''3Rbv^+4Ekyw'mwgN".?< W]һu5] (s)9;xkέ> G9)sPQURL0X泱Ne׷}؜+8'V=s|C/~d?v"[m9YamAL8Hã菉sxЕ}ך]|@% 4˩Ф4ї. NѺe*d?w:[룼sR5 NjЦ..{gyGN(U$8v/"cgf_{)gng%{ yםף,F dVm_n.wγ6`2escl6pȉCS2E]RPB[SB|.UU*^ɏ_+.bV/ؗCgᖋyٗ7<~廸ßc6pS4#x=ms̫)&u6cgϟg{gE,{OvOu]kUI5Hy83 0@`gwxt)ξ)s]b;]ɊC9qIQ{q~_':W>ԟIߙw'+%YX|3_-cuH;@Ӷ0 .xTgeFw>{bNl[.9y hpYv>/t>|:b 0<" :txf6bzh H9ۜ皔saw"8\ U 8w?|×M/\f1Ð3x_| Z7dp8b4h' v'.O (J+ҪJ]Gw1NҜӮM֭P*%|+}aƃGLALwY%N9qyWC~8'9-uGJJUU86&(y|2Ó_vG'J1qC-o}:=%UcƣuHť-U{s3`4݈ӓü_፯yQ{z6|@! QiTxX?$TTFEPڦ |F"k56ט5 'Ofww'KTS`Ngګw/wjSa1;)J& NS*bwN+Tf]s;9/ʤɧg.xRqkp!Bٛ&8֍֘gu=LgӼ's1Yh n#NXM 0 ! b<:4~6;L'ةۻl.}.9DzF-vwΗ" mvArUe4C`k{N2D yTfƉc>r0*V6hb )*TOwS#9\51+ɽ'-]GĘ嚃R*U<(5=fQF]=v#锳,8Dw/NGwkTTN)_aC+-nR{j.9f#AMlsYNiw)WŗdW!%RIOҼlo4 [[lnc,TrV =:(iWע ȷa[ԋ}kS)^]h*#Evc9& lZ>9jP3o{ Gr1.]w_{ytDU_S{s4M 0.XA+Ͷ9xRsF!O?'ȓWII<EѢa[3x[OB4K/綶8{lI]rKWT+RsŤEa#5L;lu!CcVEg q.[ºW/-rz}X!8~$[۹+_u"E(90sѨ>T_|餭 0XA0nNKÝN>GwE늻}:ۮh H1R恵1EјA]s90 !Cf䠮n^y].<]ۂcphSC;[0k\8Źsgmc9UIXm׷eU}Y+Ĺٔ-a<\`wŁl68wMˀ^ צiI3bSůib6;;\myG쒋yW:l`ӿPbB_qidr03=pˈ)1&>/.)Ō66._S)vc +{F%ԅ=SX5,_5 (/ܦf_n:l:<8k>O8wHj2Z܃ԟ)@Z,r[UZbV%]U}_";ڴs/7 x`{d:e4`1oh w@-T]8׺}z鴻O̦t⤜|֍e#(ۤz'r&n ߁|x{o ?sVE6˓2"=/xq]^/֝ UE=o͏0 㑋. 镠vuWSl) 2^/)y.{;(|0!ݐT_-IpөuaTCLvmys괢&1Џ٥8G"žY|qw"Nμ;bj_N a#+;F5^mm \ :,yrezNGܝw#vQ՗EMp"' W,V 0XAv eU? %eTrs,kiЉ~T%.4˛!}a|p8FUSx&@F }"{A?Gy9\Es;өݗaKL}b~YUԪ9+e2߂nQGgI*|@<0 A#k(٪ &)>FwO!\!"CA6gsK/Ν8Y$w\ 0kTRbz6[4*닏ɇz@Doa_0|3dRLb@ĔKxG[jaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa|o+ⰦE{%tEXtdate:create2018-06-21T12:56:21+02:00?%tEXtdate:modify2018-06-21T12:43:55+02:00CIENDB`yubioath-desktop/images/next.svg000066400000000000000000000003131412677075700173320ustar00rootroot00000000000000yubioath-desktop/images/nfc.svg000066400000000000000000000006041412677075700171250ustar00rootroot00000000000000yubioath-desktop/images/password.svg000066400000000000000000000012351412677075700202220ustar00rootroot00000000000000yubioath-desktop/images/people.svg000066400000000000000000000006531412677075700176470ustar00rootroot00000000000000yubioath-desktop/images/qr-scanner.svg000066400000000000000000000011221412677075700204240ustar00rootroot00000000000000yubioath-desktop/images/refresh.svg000066400000000000000000000005241412677075700200160ustar00rootroot00000000000000yubioath-desktop/images/reset.svg000066400000000000000000000005441412677075700175040ustar00rootroot00000000000000yubioath-desktop/images/search.svg000066400000000000000000000005641412677075700176310ustar00rootroot00000000000000yubioath-desktop/images/sky1.png000066400000000000000000001570301412677075700172410ustar00rootroot00000000000000PNG  IHDRZ=gAMA a cHRMz&u0`:pQ< pHYs  iTXtXML:com.adobe.xmp xmp.iid:4da2450b-af13-488e-9d2d-a7fc0c76d38c adobe:docid:photoshop:eb8a65f9-dec8-11e4-abd4-8fd0dbc5a116 xmp.did:D329AD16BA5211E5A89DE80D83EC3680 xmp.iid:D329AD15BA5211E5A89DE80D83EC3680 xmp.did:0c831759-8947-9d41-9b32-c406ffd0bc2e 1 Adobe Photoshop CC 2015 (Macintosh)  ȱ@IDATx ]Uyx9sBBŒcՠ~Z:TQRPcնz[AR[TկU Lb HB2ܛy4Wl=ikZG- (Т@- (Т@- (Т@- (Т@- (Т@- (Т@- (Т@- (Т@- (Т@- (Т@- (Т@- (Т@- (Т@- (Т@- (Т@- (Т@- (Т@- (Т@- (Т@- (Т@- (Т@- (Т@- ^_wΡ-鿽 RZRm;VOy;(ǖ p7{$\{'uUsUrqjӧ/8G?wDJ=jg+"ښ{pѧj7Q[VN-j礀A iɵwGN_kjXs`rg!K >#scl}{[B7؉T8 Nky߯& j%/Ðz*R!8^7mr\Psoo5eZGI u'Jן&K}c򑅅%=ZwGdd-\14yA'<4V:7k7MxSNCr\0M~dV9?z6Ƕpx6z}@HT(6sRaH#~%EhQ>CsڟǞp-k/e:SՅ *N Y -1h4[Ô纺7'&q >(~)=X#;AɵW  -Z6Q][/1lt#ះ y5;vyRfoF*Bq׾z:/}B.蚽XXߎF\S>}^zZZ9X *\+ytw#Ɏ/}#b}G +" [ZLS\i 'ND1]}vȪ\ؽSڪFX;W@DhWSf9`<):zEtД'DRɥZu@*sg)`o>+ 퓿KV??fV,(bLr0`6b\՝g֭6H{信2$ u _DUK]=ҞfGcK~ɧ]Y@f|KJXᩬOG _9ғO:;EP4 5UK\t1) Y$3tPP:a/\rީ/(G x?|*W|.gm5VUS}i^e^<K3ӭRĘ:̘u@_o\5}tuOQ>q>9VK'to;?tx G xSgڸ_qj&G E8#Epnp`[pqm.A~2 :+uie_Iizuv+UV|Z1Tpgr0&ȦOUfxL8i3CbQh~|:̹Ӥ׼C|$ո!~|Qm+=o/+f.|W=gm)3إBhQQkTpǟ?/m=#zeqj@Qk5q)n &ĩ OE94="WG27,\6G#=86{; D[_p,{639Ѣ=DSYO;-[u|W8WZ\ Zu㢐5 uJUZ,}嚦9s:Bgn $&` u"0Cpa֋h )bUo!(aEP^["{N5vl\}#j/>;}?ᵎ~1 dYd1x>}={fKEp35U@Φ )3V*U)G =AXkOY39+܊Zq " tLN59r"p`@ۓ+උ{¥ [@iMSY|w^s_lߑVjRvLj\^7-y * jck{.H= |j >Z0!P 5d2n]hHA%̄~ja{8!"hHl+= rzv]9Yp-cm;:S?/:ݫ}Xp\aMA0Ԑ咠%.~xC,YK"Y}GH+ Ri»_A<49&12`7OZo^k L|{ %U%hȩ֍ اj|߹⡿.7um?a~쑗n>_߻|eY.m  d;'nTF$`33] Ė!!림r3馡JgB/'2@ۻ逸W]kYsy~ tnT>geo9O>T_na0}&EL5ٯ_s?0 t׫m(rݷ5: SN}! [5 Au[K{m'!R"fjMR`m4{>}z7SE5xM}| z ~'}9*؃\A֟Sg;w| iQo^nM!,hq@FbAݬ7Nye~Y'(g;ZN5QY8qO!aLQ Ѧ& &M}:lIrN}S|7]GN`ϲi .jiGm׾mÆm2Tv8]hQN)0]Ս+t.„upR#׶T3xbs*6 [¨wzdl%2CcpڮjS#f({/iP1l,c!` lN+e}QzBz:4Ul%?? ZG? iW3Oց/۵QY_-@oMl0Fp&~굌CC;n5QI3<-X{6zRi#@&y{ kϧirb3B޹hCl,br* 5{ 㫑nksUǘY-JgG|L߾>m'|//tud .n΂K/~yqoות]R0+ż2R @*Sf \ 8bMjƫkV 0Uxޒ+moRy'=Kdϥ\Ksizq/_ Unp.F4[δqEYZ*6JqfjIgn|!Q'<1:ZvWKG\-cn'+ڼ*~nUm;Xk._htu7 5&UT *NU LFA8EZA3ꛫ5۳9VbK5'R05A;e )^0޴I`bB3n.g|m\=g=-dYI}@\H~ 4B̕{csC.#;(ruⅆxe?^re#GSiT+Ep+Rs閁zCrA7|f95bNў =ɄB@3őWhLEVƽ|AH7mCsWR)?ITO+ VM食m='iў /Tb,A\A0m^~}xWzT*k$UJ.'PyjKѢ@P𩳗O߸ssW.)vT3s`?lR5.0Ւ5vH s^8gV20ߛs2jvJ$(Pm8[izYLIO}2-.'4ȡ)ݾ:vi<*8Qݴ' q~YJKW4YM>ߛ|xڣ 9cƲЅY342Z]ľ͏_qc?ѷ[ǻ7 jANF:8|/?C^(eCZwl){YC5byl(վռ3ޭf"[B\pJ`Y}a-ТgЯ7>ϼyg3N`gk,5iw|ꩴxZ/5;SnAz3ز#wˎJ}Xjf|iaZz:ODa9c֡JT~z|މ-O*}u^cl铯wޥVʲٲA|4&4qVZZm;3#ל@Vg` !  {jHzi ೠx:89H[o\?Қt- _z47SkM#c${́nE-7U/& smKצbO/%aOH4[Lt$9K?L %Ucz19S&??t۞tch y`æ8k߽?מ0Eiz\J(6@.$uLz1ƥ6jz^d3LQ0=y@?^Hg&rxvh-L?hLzcz/Hgzi.A)y]J[cP)ͶR~d6r w&-lNM5?bYGܜ~`?Ke]}q)ܻ"xEQ|ˤFDit7K?vVo{ M`BXܜ:{s?ػʡJTjB :L 7r9LwkL+7hj֪=Bk , V.3uS:?=xV?rźpts Z\/ׂ^E.ACmG_j]j\*Χy7n?<bA:Sg_8`$\9vSpyȦj1;20,Kp3̍$sX gW k[lIˡ \uF;7!f݉fڹkWѴګҥq?iϕ76rx}]ugl;h$ÏO|w^zw?)=G#d = >mνb_oq9/4ʕ5eJj"ZW ~$Ԇ7*gU܄%`); x+ھ و~w amt-,Ә4b>9~-iÎJ7m"弫?NcOZ5lō!G>IEvbh񳮹/ڒ{&myj-㌱9'}bm ѣ7;ɮU/׵k7|^5Ryާj> =_׼өzYfQ *SxN?;M|j%8Ϋk0 ֕45;ǜ:/e@d 0n%p@(zFytH`m]yG> Sel ^sbYGk0{rg}pJjLz7ys] XŨ뫜ujhwݚSF՞#fx--K~?1Nt^@}Iމ7~cdou3tRć=,i9ӶZ,zc+f~˴ΡP053:\a+<}`5nPOMlA .3Qf&c:p|)=ݘO]W|EJ壎z 37EuWOsֻ]oXԽmQ 1loEbo&h4ӮTܾR{Yt¯?9kY`I֡:09~}e{-뚬-F fI=ԞG&SG: {.[[,+oy?&dSgDKZRwUsOe) 2dzĴoAmvyׯb7oL{}&⸒|H^,ݲ\#GpTDdHJݍ/8$!zVA޾R{uݑ7n-\q?v:@s2@VxK8Cnۙǭ1׿uJL@{.b Ϧ2< feE7>! }lV&#+*h2uU~) 44ЁI\-OMwY6mλ?5k޵ڳfnhJ~5Z? `G6q% H$pL5o҂RѬ`lh=Wep= zw;; ۣwWdԫbjyk)4=EhF,A/wU׋zJ<%*zkjpS FԜ{5cbvډ=> y\gP#ÍX֐8ګ9+fvCkvR㱧t?@zd+KpYcwևW(efԣ|w\ܣW@EcwW~Vᮞ+pO{: ^}vS뿷gřJlnWI ` E_f ed^Sܒ]e?곬Z~a_N+~+34$PzjŎ#iQ?ԝNcfI8>N:Ɨ6,ڸºQძ3k'7");($biq9Ҳr|X4S,/g|v܍>q?K\9//}_X^>4[쩖=xl1Ln Q͒7{i: VĢ[KZSs~zO ~" GAd0t6}]6HztZ~T蔎qP;mRnOzǹj+^*0>H?$,F,_ruÌ@>j]]W}W#OthѺWL\)\'#yFC0]lŌ)wƲ^w` m4!>떵 ># 7Wj yD5NM_'nMh*-@a}ZnRٞ RY^B"w~U8ti*NKfogzW>ߛO]$hQf ~8to<_ _<ǩp*b\E"x=}ӵ#oo.^7I(ĻTk)u]W?vYy%F>\t#KxsC@n(HO|ПgaKvT>1gI8TN'&*azDIQxkGzJ9-'+ۑƍ3,?, Fo{TQ3/Z?ܐN ?1[Q~ћέh~ѷ?ӎ捋jk4 6ݎ =v&:'lb<b CPB/}va+_նj'Ǜg>)E_{vjErW;HWohRT֧Wm['ӒjWgxp1rh` 3e.Sc=S9F(mAЇw\o>ȈP8,Su& )/V=a'?՗xpya[Js3v S/=stZ^g`nV MOV̴ vp03͚H\Ѥ˶oijYx<4P`^=ǭuIa7V*"`q4YϯY.f!`Zaau]}k{Y_46UJSt˷*y{eO:|ow>~8g{e?~m{q~b~2.R(,@yiBq+"k9i芸1?d3nsh 7^xbt֟K5j} 0uvU]`^ϯt?TmYn0F0&{hN55o ٷLSc(eQݙWȑBagw Fj5 Eua?*O TjqGlJk~f0efwĊx_ :e&~ Lz:fy(zb LΣ9.c7 m 7(DJw2Wj_Aމbsv?m:fꥁ@yo&\maGݜ},Lр+M8^MhƙȢc^iW@XFV։âQBkdLZ6j|c ONVxa8SG/S?=]9ntlQ 8ufT3.zM|Z2Pu5x"pK:}j RX\w(vRup34h}&(l.((8891K;`7`2:x* l-ՔΪ]Mf]([fY;@C> UҨ>fg7!ymZCh"GD4{ >fs/WNgtCƗsݱӽN]#=lB0ctpmg&Xz/Ur(w}WJܫp>я{m_nߪW용7V-6Oً cSJ0d11,MRp~us\"Q9)hq2?y)flDO)ұlf-˳햷n*NjVgP@Ep2+V+BP g`w^mvUm3#^/P4m a7E\G@)tlŏg1@Ҕ7HZ^޸x1\lV񍩃ājoGۊ)}oքߺ~L?zʽLt{sU?_o.蚱+kx8r%(Q6| S`Mk8Y (ĭ-qH]Ԭ 'j[<7ƋJ91W_?]s0*4Fh/''=sX-% Յ8fѪl;ڬYvwɨ|  CKrOBE_̄ ]Z$9F"1J(PDfx۪"[cd-!-ec+tv5Q|IF9{Ӫ;нx] W+ |rdZ;Uh-FO 2--0dxN&I hsj%WRݤNk90>=0eڃ”`NZ"~S͵2/2 g+u:yk_py ˂Gh9K?s<ީ0uĜJKCir.zS>Ѯ 0kh[&z nĂ"g AZ)H7YLЕFy4yZ/n|qq(Ly3dZ)Tnrv&mݑV -:pl~qk5 JkNջ;k;.ˬkeДWXXKwkwSH+fќj?z6w-LLtf6^pY$;GB#|tƘ!\X^F!-bS'Rw H ;^qA V} `|!ġ6$ڤepSmu16mNA_'kiY;>Dnu)W˚K^8ه5CW+8-}Oni2L#zMĻaSiKeBh65 v`T8xRb<HBE=2y~w@QM1`Ah8DEЖ%NzIy8(*tKW-. س+ ~w/\ 3.9uvNZ(2ھY/W^Mκ%݄ku@i"iwzb 6 Ӎi*HmuTƫlٰSo(p 'LOeEe0cLyםe̟T[ti ip; Y !X"whF4T)_jL WVF~ӎ>՚l8[#ZD |wldƬ!q&yW7KǎVu A mߚK[ \21/Si & ـvM@:"۵vN'6g{:ˍFؖ33˼n:NO~W޺qw{MӪj[QHR"L2-,&, %3QW>pgab`)u'\.5Gӳ0z kz|jD&K?eiv,#8&Ȑ X&pVBcDhǶ^Czl84.WEiyӄ2 0{mЗ' 8jBPR6Nqey6ioh>Fht7BiuwԉO_C[a+_I xͻ$Y99FFnzSI˻ß:s߻乇j @T 2^`P\  (C|M*Ogy+ EorbåCӺպ؉"aqG/f Y(?Va7uLk=kC ?T?F|p36Ub8Gh}(' [q=ڲ=nׂq8UVU9Ӳi@)8c8P#{b^9j43c!4c?cBvsxZ:8YO` ;)S&x ,H>,MY/hrњD!^#.O`;擃e`[3ށe-I< R"; @y&9*tiJh)4i5ֻp6ku_&OU|Oo/V;Le+0Ix +~gY ٌo˦2ZApd_ 0nōh,F,:h}ˆ!, L/j ho1b4[LzƸ+cV]eQ>[vz* \0sDI*8IQXOhm( T4|@ ^04u{c_(MLP*$/يjn>Ͼ[i?S9I9UK55pyh1IX!GtQnY,C 4iC2jL7i1(/5tm "3|fvKV%Mv ێQk=UeaH F`L#lB %`*~g 8|?/Y6J{$x&3R5,-\f VԳܑ;hבW9Fh!h?!+UgٻO:/\3[>@TMV?V#`꫍rm4r<;/cV 0-k5)b2n.BȻv%&x˩{@h,N, EVnzҢb[@0 (# 5H 3Ƽ: 0״}&ϠH ?+VABM dQkn >Uhtd@] ; e¤ Ò| 6gb]%rd9 gqXϰʶnf:x(Ii1|e V$TՒ6- _0Љ+ks^NR3ӏ:m6V%qhNuUjwWi``L Ȭ =4yiP6 CXdKٝKW:7wv$4?0g}kҪi6ӂrŢY 8B%W~st K%" ځ4U_v嗓6({xxf|GZ؇ ɮ.RiqT: 8>A>t|Sl@~s3fʧB(Q(i-K< rb  1y(_ y`sk`۶`Ͼzj,mDT}l-/&zTW(X+$6}T}MOgu܃7?}nE"+bTt:3(v!r2$LfÑi,^:&Y[GΦn˥- hc@IDAT|_j̎;SwcWڛp+䩉GK'꘥iP=- Vr(Pg55 Hk Y'l~4WeO&Z;zYSYby:BdKcoȁ(/\atYO8Bw|w  ~AachO#,W`}XӓxbH"CZ@Dhv^\dQW=ZDlPC4Picl=mۋ;63~TWPiХa?GYTr|ӻ^/p'~{: s?O=]CmX y0 2cMXDoAgeXujA۩3b5] h̔K9cu̻xu&v}zoT#"=/Xb ߶L0o.:)TaJhgNPf (,eӖ'ӿ}c* HK;Kא1|IR7SsJgX@EMmp2ӖU>4h &7?[/. wRAC uM},Z֨ Z 'âXlue|r,C8 @\% ضc&׬Ea#GB˰^T1‰M;ivtw׭Sg|g_zl T}mi%)mNmXQtQtTV 0*M$qlyl-y6$r/R_uK-L7~ cwsDZsdojw 77/8hG,}Ρ1*g寻vOۏ7rbrL* b_v_\7:-(I0:ӆI:,@|\{(9?w:m<đ J!TCʊd AK07"u]OǮnt2a~InDZ30KƯбIMY4cxJC7ǯ{ߏIsxٰ]=u"8|'4UQ|+6^Kx<}`,Lˀ*+ˈ2i`Z[ֈqo)먦kn I3- v!=GR$|tSdzG\M/0i@(2PM ,su>r3}/|72>wHzgұ'6WI pJEsN(DLZ,c A.GZius_k]ĒZO5pws¿R' tug갘s6i^1Mv79-klkES!*{3YGz]N3k/Z<7o&J ~ !8H븛8餫؉Q՗m|ą7XtmliJ%8WK$c<+3'W \ /14 ŲKݺ{44s A4+Oܙst }9u3ɐh:EجBvc>y̩+d ( Ϯ0{N_C8:PsQOkO|X8|ũ^Iˆ.B3|jM)4ɭt؎JZATs2B;Ʀ^FDb4|VwsuS% &f>[t;wsdlbpk=ͱkΟ 6'ZHyn1v{ Qg3r~F֥E6l8k6n[aづk;;Yu6K\-61ycUsΙk2YYe`6[ BMЩ]|ۃ)y{5ԣiht9=}2^tdZ}T/{S:DqT lf}TC;o^gv׌izjaҌsdàk$ۙt/K{ӾT`!u0MbS4Qt.ysahU#k!E14|y&B 33z1`VD< 3+5/3T v^Fm#;3wjr݌[qlHd>c׽).OB=o?:{٭{d{Z1P.h94TPVNg 4)(ﲏ| /vHW܌F`Qٝ7 ihj*Y3O;wъlPHH?[s-L+]h23eXih. d0-oD]M{ۀ*$t|kyoLktk}5EwH&jMm- DJ:\ '4->o1?U猆,[e{n`wÊXi^eij~(7)kK2&޶jb46Ca3MnNun1䈩7+7fG}ƏnEMutjwN]~jh7W6G.m`.b"L^}:Od*-j4>`=K`B|,V-dM햫mt=g&tX,.kZŠeHUF p5fhTLf Mw^J>J߬0R { 9t1=,؝7RdW = !y7㔄cwFJlv^!!BrV3C#25cb~&6A(/st0q)n6>QI?ޅҍ!A @|j\WvXu6#P+fAwhcG wW3@~|޼.yL4S]>Ps ~jg"X3c_0:pn/sG gCX-Y8bߓ\߶s$}H/xa-2l 814 oM(=&9Z?98?* vvL3k8|t_?@ A!\Ê8aM.]]i}L J[.vLZSE H9J"LlC~1{`h̄P1JcY@pM0~ؾ. sczJڶ[d1?ΪEA LCrBv ~D3&|YG9x̩ 2N>]sB»剙 %FD|X2l";ZO#2LvGH˘ؑdzS oFM`;Q [SZ5-{3NaGHӼg~*jjx&b[t9?:u^H'+yw+V f 3R #SV19W&đZhq;FL4Ҏ0Sګws:7cmŊ'3:Dcr5v̆4F퇂 kLaVlj`隬BGh"Rpt:u௯XRJ;Kٲ<-#N_‡7^)2Zm$]X&sAFSZsi9臣s8OX7yj)>= >`of@CtaO Qf9?"xz BV5x^^:6gSߐ6q ÇKwAk^w+j^QfvqʷMe|e 2E{Q0]0X6Qel'Y0=+RYqd[BNgqI[6OtZs{_xlgE0Fj%4-Z^d'3`dՍf:&x{ &gge=*_XVE}ڝfL) ț_=C_}OX"m7`v;A=CLMI.\R~dMz.}Kޜx!hM±SBJ9[) \ ^gm?*VOf,BB7s|HIId2?|F# 殿,1W8Ntr/3y WY\VY1X/R>GDaOp`eL2%0ٳs,e6HoM:ۭ#ΚYꛟI J3 q~Ÿc…u lrhۯڹm:4`q_ `BD*r*EP[ R3tSq3O àS0Ou)dԗgӶCUKCK11MY0gv2 )"u:L&Į#G[9 s쮚Z0{-DEsfH|]?[lH#Ы^J=-M~Xa\?(UmKL`:㉷@`ਔ_zD(Lj%LcMuPwp3`?mK${.Xq ii7lx0Id=5&q=|,:PFgcJ5hzelWч6' 06R9捞{s%a06wǦ#K~kQ+XtՇO<6_*؉%fyN ]0j9cJ w_1ȘYZ9v`'1IS5Hl7^Wª%ev DBfrPӟmC _Zf=lx#D 2f kızӼq.)Q;zGIhdUUd#SNK`/h5I2ͥ>3M,O&gV4urelL!ED5а, Mَؘ4H,?FXO7yAv|no|BM\R}f[i{N;\Me7ՃyS_.K7ZI@ @.@ m >cz.Dt'1W. r1Y6ל%5j&\2d|wJRc)j!Wv{m;oK.f:BH&Cg54Zyds뀯`Ѝ[[;U!RJu7Uӏnٝv8fIɥ5kҕ^Ze +Qx9LLԡSߖV-#N|uJ" `<8 U}i)ഌ8R /V)#H 1^]ب&f}<5o܍4DTaؕ,Y4Aя5e^|Q .H4 k9 13ve32%4f݀{55e4BJB&4l/ZM᚜(T Xs;ϟ}Bs_*˚o1csrz18XSY5 c4S8k m>`ӨtV1&1g` F۔Zpji !r 2g<"۟A|^vA$cirYn$tag|&:/)jF9׿\zNNپntv0[g'RY P8X-uȜw|* & ✯%Cu524eLV (Rxd gŊv2C_F @fG 'kSǴ7.`l]BK\z{,9] Oǯbg yA[Z2^2/o?1AuxV" A<5غG6JH@8LZ4iEek3A``3x0񒼈0` ZiY >0sitr :>{lƪ3O:21S*s;mI35zÇ7?A"_`:Sg(^}ճ^#~[ ^z!yPfVFp 93!eS@[sއSeeL@xQczsm qxƈWq$VT1fL+Ŵs/{ē F5  t{N޾kEGH$t*>he1<z᫦Wsj;=4CܴWW$AE^b~L_+@ao2 e^0C_Ia Sϱǃ1ufpw}yG?cez3l.,yoA3T&r 0ǭQx(\dxlħ,)(=`PPXY)6AKV}:gDBwDL/ͧ7B#3-!֦|wQ0ڨ!4J.Z#5q,t)bTp):,EM^"'O.X a6L]#͸;HJOf&H?j SϦQ%YR@4U bC"fV`~Oϕ6 ٠'5NW\?&&'/,M"u3LO~)Kx˙iӖjUU׼+xc6}zؾg& {@rW6/lBh7|u M?jDMӚщQB4MjVtmܺbooǭ$XwKD2z,_xFZdžpuMms}Ao Su 6+e/7ޅ?mκvܠ‰Ny9> _Q*5{~1VOK=@?|?ܸcǻBΆzsĔЖXe.XF qA&v0 Q0ͳ0/&wFLrbVCѬu {F{u=i&ئS mlLF |aJyQCAK>v\jҚ#Hx6<+ߚ6J\?.v"!@|]\6eUu+6}`Mz"2(X(k4!Qc1ƌ&QԨ bEQPıTP1[]K128gr>{^{cg\vѳ71Aә$Ў\+BHJG\ ~I)+ O*͟ ǂD/RG_T]Ž%̖zј9;F[͐v 0]Lè?ia\q⼋63YqĂhLvƽ*q5ߍi~1hdwL> ˿|Q{[~cA코f!aub&2Pd\ȴN阫p-8YN qԒ`c9FpJ2YYLJzBO#uoʮd )Z6LD-5Z @(XޟuiCȜd xVT_ʑ8p8aoZLĝ,"ŠHDpA›o=s0v9'ZH_g;[4|oe)SoO8vw^2bڏ:uBXG:2=)zHiZ jm>hBv-Q@vQX,k]tX\ ӑ 5nkBM 0'ojq^u;ia[&~m+]Ug0}D˖N>e<チKN98Mu3N(3Qj|&CӃZsu30],uHр=⍍eTuj":XP83n{ߟeE~b1O<_\uV:{6Wv{~oZEHfh+*J)@C^{K^LR0$ƒ^6(#I{sCY'2eYtKx$\F??~x.qܡQO]-6bIN:w3|MƂ6Pzwl{oؽ'^m,Ƴxm>6Zأ,5ulN4MyBz5G@@ʌ2c٧b7<cg TSsUb9Eu__V'w-ӂ/g}.q8 of.x)4dE}|'0h}7nGQljYZ^e$l|S5??1=˜RCw4% Կh@$ @gԔEQCO^_Rry!%q/)}-%Ut6xI)F2bj eNUzIo7W]l18=߉sZf>5Slȇ'^aK:(PlA iӰD> .ڀSMMNK@HitW=.c5:t-Z?5'MH#(1q.o^8fXUuy #w~fzQZ*J~6GyN=:i|j9#ʌ7ޭUX6@k(ד_zg+ nh}bt<7Z{>V*2:@bOȓ~Zk~aj}+~J2mc2&#(rx'fexv&JIn/PFo<?΍s~ͻEoKڐ 6$j[aNb旭LU]GL@Q$ڠBW$7$K(2U0k;KjL&uIDSOmqW6cg|mhڸT 0XJي-~Đ&hB OѧO# 3!L6yX.U'+Y#o&ųC-GSW3]vTUc>)y"92?kRϠ86HcA F3]Ll:&:Sdaޔ+1X~df;ۡoְbš[?t~bs\17™ȑ?"D A)HyW<^JxLb~BDgi$%֢l 3:-.`DgSҖRSƂHD0 1"ƪqћ|m}&v=+uCQ R %{2Tjs&С$Cxx>[EǝipuS7dž|'x0Ƌj>D1|ㄗ/1Qڃ16s&ʍuKΏck)o)=ZF(jj+MZϑ?mt5k>[]?_5M 7tXڼJΜ 1aH dN@YUXQ2PIF]V\RFoD+MOna?~ڶxxR˰׌b +a~'\2;p5[Wކπm }v4=)5M٬A7sƫ8hO-I^น=FǛvLdm-Y_8Ӈš'cqiTՍ7qL)an *]s o~9HrwcsC-j'E?.$"ЀN+6=nfl w_$\W؃G!ae,X|ym͚}N{2'݌ )?:)>C>IHe=$TSKqoЬ;NK!y^lٗ ؿdJ5I$3_/"S_FXﺤ).|7Dv-iJsL7mu7 +`ezɋح2ғI )SqP h P4(``2&>9>GagUo8A9uz N')7tJL/κmF'qn$p+FLCYۉWOd3رFsub޻t|$osp ,RRbY̿;w\ٟP !P,$;ܿERMōLy$QAlcAܣIBg{|}t28o89O@6+{&y2()FX{l|O`VY3;6KSZ5v>L٢ pF]XXL(,Ի cD̵NF>I;83f{5+u MVhPRcz-<{Ud|!ݕǹ%S3m8z|di[w,\KI0WG}g ;nHt߳-GJwKLf/-, [P8SLv5f=iSM:uS" |lX.qeKfdmi=熋)S`R\^j6VI[jlbS׏#ͱDErq _L MWx=-PbR:)n|%g\9˶!f.̉SSOY,eCCc'u%8аh7=Cm-lQ")敕={x[UQAG܎xnn?{/<^] ],ҘKVu HjW 2ss' *J|A1630:{A|@mZb||  =uf8u$mٺ%fjJLI2 > /) :%A>_8~M^!5C2Mq$PPq[쌢mSb|nfi,7xnbCavV@8 zT|"mv3 mj27cUh?S wr|50Uq0^}-V'fXↆΏˡOsH=+K8[~L3/Rx,\V=㌳o]'nhP:I~̆~Lhn@$~;HFJ 4;;2;2TTMUR/eWK5q|SFA:,$ R-{9W0+PLXH7Aa49J]"N /*5vu>YTi>9q5| x.Cp C#Cy=Ⳛ28мLiUSN{?kn`ɬ" A0^VX8dJj1zlӆ\q}E,-C$vU߱od&a#sU8PqgB@3"sss]/8fJ+n)*xB-k#xLԣdN)ŰRZD{-z7`S`dZc#h.J0 :wԽwgl팳~t?|t<~xYf&IŦ 4FcJ:p/;teVq%@>[>cy:F9'#-ta*Gʘ^> B;=SZM-XLYL]"?C$-^tY?\gt|~qmFGoO+R˜fHl:S2_㼘.(y6УΙ;uUǴ)cA0uD.Kȉ_O-|{i3ϩ& s)-u? _xzq_}Pd6籑]6 Orď r"c9`@%t݌f%99%Jg/@>o2E0+Žd1hTr6T5`:3u{Usʕ MXsbg:UT eg0;Q[JRñǖׁϔ3Dcm5H|A`{vAni{΂ڊ@2J'S(C8AN͞< h>shyagn1_]rkϞE֔O`^2 {LT5\IB;{`}OܠPV}_rWz TJZ4oXPHcyHBYj/GFm@Iu\n%2"5S9̆m`W,0ǵ?ݨLhc}|hkiuL~-zd!䬻'jNU542!lb!W=CT%D)Jh B *‹1A&v$xRߩaX,u*Vj{BM{ F)*s9+| CCm7ǣk'봴ՎWIyͅ>>T>8`Y8[qOTM?m]Rlߌ>-%6nfeҾq1S=UƷlX}3f2 >γ:umf+)56wժLWtxh + ) p#H- S] !HI%}f)D%H%/]ٕR{8ͭd^SZa pҖ4H@nY+sP'yJRQfQd' NS]T俔ChCSì, p|f}nن'c3H5$ɠ@IDAT5׹X`ϱіviO*cG[?tn@l 㬂lq)J%\kn=xS ]Ra?#lG+.Ok޹Q>ZS& ct8@2&+HPXR %hHm[P>]J0M bx9SHpYB@T5.[uXR.ɠΧd:rn d@ޓ<>T: if&a| 8PpюXg!gE{:&3:7CmB>u>bY۞HMjjC-VSdzN`ܵ)N9uT֜;Ә,/ͯ tb͚Uy/$r~CcC7T&ƈ9_M1ɦħ, A 4,r T@J\5A9KIH[$Y{ݏJ/_t)s%:jyL2 Z95dz4ےy(>۞hm {l>Ǫ19f^vvlOt1>tf5j7oU!Αzn=SLY'/ 2HW{#iii<üy/iڸ5+MO]?=]z;ʛcxx4ƑUvZ% ,r) $@$b.q  {V韄YW+hs|HP??R>g=i;̲D `S*yނ(Go]>~6OA;|OUz[oߵs6NJ>%C_J4=(Pn,x{:f e#q'nMS)N(U.gSg6 CFkT>~1n9姽sG76vܱ)):##w DS[[ĥw4'UD,QbؕaQ_8i; B[V0x %Rk/yٺYym@+$~5 ̂ɔ$ؕR HR'` E9ȑ}e+skD!U 3gdHj%3(L^j;İw$b{Hqo ;uWqk9$biieb SCIUi<qXƍO+92sGgz: 6zCm,XIMH@ s\4'\HI)%J;SNf#͝YF`pkJ`+BZYF б sbP֓ҼپxIo/-u&@F)un.Qu},Li}0ezi*Qq Ƚu8ac?0u687`2++]j[0!a`bf|WJJI2C]ovt_>X.u9ր%J Q/)#0v T(@|ВS" X+ld=uA)=I̅MU,ҝ5;З!?/,m~Z03J%sU/5%Q*^33fq; lIJY0JV˩lF1gj2[,OޤT. P(,m/*6Uhk|o9=$.w,ۣp# s1d-Em~r֦S{.}sLWo 9`'+e Jrꊺ&\@^^f0*:i#;ID2> ±EOoI#nCo;X;bw#x oX.ףJc]f\+'a k M;r_qkLSվ#Zc1u1i":gBT`B nr(&`.Rn B|P2Ju b` { /Bs(D75yok ROnu:,릂Υ.IF»ӒJdg< u߾բxVrmrR H7BYqG{ ). ?=%8tcZZ;zahwcE,{ޣH8dN]f0Vj|62 Y"o;?(Asb;̆)Z>H-W`I3 ʺwY)l_Ph _BJ`x[36>uP` _JQׯ%lg|Nю˥%CNQE٠5+dX+!e`@-C/XmqF7 !]꺞Pֵ,JidksWj;̸~{y?2\jTϣJq޺BCiO~k>jYkomG1ojmkip-vQay+Q/ ndy}1u6$N9,4%U\+OAVPYAJi&Ҟϣ(_J{[Ods^ ˩$zy>ԃN| le,o=.g(_b}Zmʔl/UF9ƍmGl2z+kaJlQWZܷW hYYi AFg=ꉥ㵑{Ne w74wx#{}+7_{_eqGwyKubdq;I4Ē ;E+zЦ F(Y
  • :/求kzOW'T\VSUW!|UgxikO̝= e߸{"uu&6c˸25 {w]J_XYKej@mg 2ӊ˹3wv<@Vsʅo\ S{g=UH%nZ_{ύq^qxw-E^,TBU)%#(}-ѿvʂsnB\|ƄX vuyB( Z~KD~;rбUSBX0{MP "B`.2 뱌LD#ϫp= py6"k2 _BD Iīo{cA $GUoos`$jqBY+Ϛ5g?;SUjg;[.Lԥ[VRRVQ'MZ-|&d&uxo?f[ s Mz/.NzkBJd-qL"[(b2E} NMx~hیY]U`6o;ZgՙY[Tձ[cd_tUgΥ(oa S6ƿy .~ۖR]-qE ykxo'˜Bf,&.l.qǎM=p1 yJ:+Rp<`o 1A8}31o,wUM]A< 5rMMڅ/*\Jf>rC@)Q +<L +޶udYNoA2("5!*"")sV/Sgn#hн-0 mMcUW96yϭĮ6VW4\ZZ?З.Nyv3/Y`'K}JOLomkmy$0456Ǖ5SA %+M';VM+zcF D4|\G҂yLUch͆hn(ڊ Pt iςӶs|a|W/Yc?i?(_o-6SK,HhGfMvh+QoJm0Pmqr]YZ~TLT)n.RwBhCŽa`43g}bwjwHU}3FsA=~ͧU8cYp߫|pl#&eN2 B Ǜ'eq۫qi&$: M9C>X衸cqnO$vL@U KidX[|>d.seWv hU} ~XrվB`:At/iSȻl?5JxP~u]`ܘǸftK}2WmZة;?e 8!ؕ^y{K'9)UX6Z'XsU=~#3#B/E䛒T! ͙F+lszy7# KK{ܠ;q|F|dVFګ/*%^Dys~oCY~/[,dꬷJ—Ia[ݸ5ߋ=wN6Iq>C(`+cqյcz1/DϕXI$V͆SJ"ԥm} Xl܊f.0MW?`]mÓVVV wہekϻ]`CL~>*`۬HGX@iYol@Dmː+ГpM'`SUw [*|[:g/ZsA=LjVOMuo|Oٟ~ԣl萧]rƱ7:7*mMS(Ps^Gc2:2.|Pv!$@0wBUF*I>h{bx9wogCq 8pwyJFlqkg7q0ટǦulϼkSa|h{[3Qu-la mu@\ x Y0B5lt_2y껌:(i Nz=2{,i>4!NyW+jx ۆgp:7&:?Y&liOcs X1}s;r/G~ɿͿk˒+7L;4YY;Xro XpQ!#h-~xx߽͞;_șAwoAoM d7M ?H ԱOܹ#^ǫ_>ќ'4-Vc^ 9L?NgR R[ 0LidZ_懆٬1oM" G0HJ^mPjs*e_~ǐQsgm|,sWKϬcV$ϣ.j;'2Y@9ܓ-c bK? ͍LJr!7 m(śѯNnxཟH:\Η?̒F"rHE3O<'rԜ*ӽS$g0@YͷG^x)G⩇%lЈ4WUWBKtxE3tU[o2/};&Nzܾ1̃7Ase9}"؃4x;{ (m|SfWD}|-?H*aGv ]@(`7{m:z$Jl躪/8^{?C`>7OT}bKaS:KH) ,@ >7ۚsL3,›>箥lXPn*Jɭ5/YéeZF#;?/G<7lj?{S+m-3} Z|n=8& QGㅪZ 8K12G\⺳>g]xԾ b>u ;͂J{wkqpGE1Ls*e$ V77yObk?fsoiHL5  (kcC&WL5P2|+lACڕ:,gu^.4bY9h_Pۉpk`I. O?iINpurՇxЖbO e|ʇQe҃vg~"XwSi/UЅUKQ9qжƕo>/:gOŮt ҈Z^ăC{Ż;#Wć~NF8{WHLUBANdXzƸ"洃_k&)RO0V(K0qOQa8Qm:1H,r,ɀkK DySmO@miuimu\ij3TD5 ^xbx#c]K7`&Wg8Rce`pn-󛸒FXhT_wO455}=?w P'?wW-xZcte9ՆֆT!~/30'//F'U Q P퓈!J$|vζ}}]qƋ?/=}Sg4L PB,5QƱޭq7D%ʠˤs!a)ф[ȅ4 ^\ފF<Ѝ)J)6 $`RK'h `dd]bJlfid =(d<@&{i/v-]϶HoΜd~ȩF5uɆ7x%oUZ^P<f#{ʅ|`srwU.d(kjvU [=Iy~kMUaHr¸;7(9{xIGSe_ p<.{tZvpo:(.bs,ZX ۈԃju"_+#yyYs,;UJ1va,0TAY^*L:@W۬32r,@y}M.Po),V^rHsg.А5}\ʐ s3SՑOZK~tMk4x7=g\uCݟZikY7˾Zv܄L|vvaJu}?L#:b`* PsMI5#hg9z+w y_d}U˂x&˩?D,)|`-]m^8JXՃ&8㹡!ϸlQƂca7V^N^|Υ9;PҥW_z_;1q--T `{;PW>xǫw'& ǪW/l {Vdɇ=~m??+z[O'@w-,l#|:]k:O;/|13ЃvŦ.Ģ q闺bblR $>ԛQ_+VR6dK0`E5H&0\;jz[A ?mnϧs&2;U'?CvTDZ3S1;zs/u[J\;;w^LUgsjP{Zi۾KmKba /9Oj1jlKK5~eCķ/>)rbA7Qi@_ŅISm4J]]_{}ǪxLnQ:v%чPq{\qU[&p :OCuβL@f'Ta:T: m޹ { +Ŵ"ɩ=[O^-Kq%58qTe~X#΅V3?N!Tul䀼.)xUy2 n ԁ/2آ:,PVoק{E^33- Ke- ,B<:9uqՙC?3ᇪΫeN K ꑐy\^ I# X(=*y7ۂ*LѶ[|85;0oS\:f V w!q;d HBe|δ@==1z5(#LVi^9jWwqZN ?UtǏ<}Е ^G~g,ʴіSc$mdiiթ3Vժx '&{]K öh>0S#F)L2xTw.-uwz=W3ofዯ];6 33AQnbj'vV5O.s{oL@裥#@px5k-K"{qGo|rtj3>Q sZ 1{5]=]>X}J-le*O<慩~{|?qmg.lfg-{+?۪$z7u?(ӘLOYvۆg^WԐ(8Cq_BgEY -o`Wz=?x)G{ӱeP?x^щr(QYݜpXEGzsNum[y yM=_=:I Zk* ד߲"zͯ;:{wEƱF S^Ρ$SUTji4q͇r;tuW5.5FݱatXvg>olFtb iB<@㎜ۻ *8MᬓKS^c? c^t5{[Jf%83C:%h.k|9F)-|N1fEl[XP)kcdeEUg]ƚIRsh$ "ߧ6jOiov(ȯС5'mzpbn炞r R nHs㫯1F$>[{RbC-at(IHs񡆃KWl\أ)j_H8%0'G poBRt΍/:8 >3zZ2%ט|K89l4/GOwSrhg\x=4NX_o](E?ΏgZ -3]dfbphhs.4jƪ)}}JJ{tZ};n=̋OW'haU-x9N{S-$wCw.Ys;Gtbփ퐞sqnyh5v[a7fW:A5JYihU%~ Ո7S*[d o?⼏,,H8${ GPxuq1Uδ_`Eg#GFv^zS#3 /Gh; l  7pS@U-M**@V2cx'y\˵vct o qkٕfQ`+&Цv:}u+vqMPQ3SD?C U֏ E)Qno`,6:U:֏.ܴjN{e:dEt'3?g! o,7n=rY#ozlBuw14 edΡY?G584I\H"[g)@ĉ ãyP~&m}8g}͟s@_ZϮFwcAoL[3ۍJ3԰q__'4{1.Pu69Hd ܞR: q,Ɨ?:GꓽWA,B q&5GkG_ܿu~~-#{~,٥w|Ќ O ȆNfT@hlݓX/Ug?5w!KYǗk_6fdik IBR r''Sg ι}$gf=-M bsǂXd*_w鴩* QcXl)Y /;KKQӵ sc-+,`Q-[eտxٙGl8ڭ6%Bk]fTno5SN$ yix %*%5[Z^WZ be{&66xWU _#crфfthM*v9g=m|/[ [ ̼1i\fj8Ґ\Jkcn0?o?,Q32.([qQa &%_oq͇.![h9l]یqRJZԘoA~pIɊ8Wp|<}(L.]!~{Go$qE)gJ= Y.5u1L70v}kn:ZOJfhFFFFyn"P?-PhQl$j߉]`'ٍ~0zV<,riiϏ43%jW~{ o>]Z!DƠCH1.׬:_ āz >3@uWn1xޫ{fמ_x̥/M gjz U=}U)*2لjnG7'[b?{2KU3L5,d L?4PJoŝ{Z|疟w~ZygeA5JD՘ ŁOg4[bBV&V(y4v u\ -54U~ >s߂( v6T\f*7 *NQpio AĠR<39u8Ϧe@Ώ+ N7fWFe? }{m1 lyuZZTe eu,˕βvW</ĢW{VCuz)Ji)U< Dh(Ѷw|8bN˺sω#Y/OaQMSG2 $ zaς8u7Sm4fo%C kw$k6!qGvO7V0q8P1#C18b́k Yw*maNqVa喋Ru\ B34.vkц-X 1/<#JCYQh\}[Z[;:K,*CD ƣ|t†nTf=/כPAK]}~dIcj5񭯟 c84P[H67@5];}$>Ʃ'j湕\ gşàgm̅o-.x/3_sxymqr5b:TB`8zk0Fjd9]%#]!tGoޫJt<=LF2Zn]4 PWH ipY|P5Sށf #V8pxgE~5 `lh[clh4F%XYB}0>ZC@׺BIg0QʊVoB+hِ2b+$.3 Šzކ+nحyKea,u["}.3"aeޱX>zxdrE ŏn'p/,63+Ơ=0k UV3}koT|pN(lP!mB͢<kQ q{>돍Qw- Uqxe6Y[w)4 $6nq"g6&K$+o4*s'A)[=W5=42\6U!n0=ӛ8}W~sᘆTј`WX2Ns-=v_0n|LM^^\e`,BU{>,=4(,eaU, ' Cf&$A`˖'/= )A*őxHuُ]32 I '\7I`b#Uw ڊ2ѕ[ミ=tq 5:ENti0[=޸k8/cn OwUsZ-!^" *m@fNudJexC_Nl7*DboqaSDf LyӯHuxڕ+ZyCG,k3%K"A1\ۛjfHli<$&qDXs/T=^ _.pF@- #{;ϼtLWgelޘCu U.Ͻ֐u( @eIDATӌV`zr߿O}7..yd,=l\nde/ViMx`d~]?vlĖf jw;V]db s 0JCCDڝOXw-)i7C?o ](I{?5 )f <,Ge5C+?/ů3,U|c~ G,_[^۰WY}u-mMɜB<,*l xEY8x8G8pA\{ȃDssӾ/k\7ktv~SgTT2Zj QyO~#\f9%vz$r X,i=ե[PKmA,YIfOi 7d.7!#\ԌIH! -W > A3xgzCAbZ:_Ͽ&O#2Y8uVKNۖD}2 sݨyWg}fmWx#aM TQ"z%6oۘftjN'J-L#jLP5֡{7 p\prΛJC^S.1NXtdGHV7><|Cݧ aW $s~9)~Bxn᧼#G7oگ46w* qH 46V{}HXv#6\?8r9=vk:bF-!`J ЕfEʭ -tqGvI @i6Jsn-Nսil싻ꌷyi|#مYd}.&Hw-7_q7` zJxB0 `nHHpR3Gbti ]Ӭߙb7/"wPUO2߬w#V{}VXQK\2kKNhk@Դx@4,P9+af%jS=ω2QK+PM;(u 'v0v]Z,n=⨃ݵ303D.QX@! Jm| {{I3Fb+n&sI Юg ]n&g ON&?ot}"%mnrzbnGc``ԛTqfUQQϲKKs@w~F@o v%3Y{km!rdž biK*V?8 tjXRݽ +w73EҌdD`oa1؆-4Іm=MN HB,1Kq I `A6el",#[͌CIhl;Hy曹w#[Λ3XFبJL2 ]Sg7r\ɩ .1^(3DV0ƙAD!מG`*3F"1\AM A]Utle'1%! n7q\ O|h--\{.pIGxȏns*^@~zG-:Qp[۽ O[U[7 =aW&\'\R՘q;Yx0BNՓsӣ:9Qsc *'}i6o_]`V֟\ ^mY"N#deD3F,oރ1z9x2xp%< =/]2jl7RO23W&< h0Ѡ I&+q'qobn;7)!޲ecη%>q9G7 ݲxQ<"΀#݉rfu=`ލXOEk;~A~\8!o#&&YtGvԡJKwɗxV̓d4 Ϥ/H232ApNbO0:Z>WoX޶ƾ`Ċ>"sb|2Sלjd2kEe)3 Ps"ɝ|n?s%7ǵ3}' 㲢On [ů:[tnh͑4 !0 IaH^YC瓵v'2╩R9V}%ܙFe83l&uiW\BoH|xƾ@H~:9&؅Њʳfr-{< H&cf0t7GCH*3Eer#E$HvwC?%eE/2Ԃx}5<',B' :rN $03o[2O+neˎMח4ʏ1_f'd) E#g=0r䬱zNλ5u/|3wRq_ )`vD)5H3 (q,[R'!^p)`8E}uW]oʎc2w,^ nXsTY\i؛ yq<+|#r_*i,_7+9m^f yv\LKv 9B4r$J9Qz !t"g\2T|^PA<]~fқS 㺢sym-uY]OhZog鬫g^$]cS:?vo՟꒿Y:6c(S5Yt!O4 a[_j|mraxY7U|C;oZ5j;woKrfJ\JלZt-rUgo9l`|֧e[IےMuuW;`m0,8, .(df専>>錈j墹1Cd`P35m‚eġbf%ׅh/-1{ B+y˄G9 #N5Cnف]JzrpC'"4vC`c_`ٵ(YdoLaHBGgȰ#-2^x5zY8k"^ּIL/*mU'#ɠ27ȡ5au`La䐪F};d걐[`=NI.ڵjgYOA:?o3ƾuC48@ gs iIdrFY%UȂiMr&f[.YSHE I4&ElF xF!!.ДBH};+;xnXNVnouO<WJWa4U14QAw1fas0x܄̠nI]ЕWm^0cXV{S *h\ANN,iJE+!-MZeB]kS%ViI)ȬYU> cPU8t\ wR<~1Cv#NiKL6;# s.xrФ0S6V%n+Y!2r)QtsԘihRWG}yh׎e5'xG l|詪M9ux̒P4 4<] PH.tL@!ˍ$lnC;d<<ewr>nқw ,|XUZnQooʸ1Km)ENJA8+-#GЊK2%W43CuǨ5HFd!(獫VOO`;>7L~"~{a61}P]@ &l0 $qtBLj/H0 =7.dO=^cX0!mʵY('cxI0Lҗo rَiˑƣ :׍,Ne;Wݎ\3^@fĞU7q|CoqeDxQz]TnvS({S+8LV]i(\u; QezuqM%݈3t ec<$2 ,3N+G {1:R_ʭtwU/eލ﮾fEyn,;2b{lS}3Uuci<~'Y}/^gm70q;S imc"{!-y  ec\uS 0nWSNi9ׅpFNu7H;g>|2vS8דjorWMP~/~Eg _rl`<($2&SPE@PE@PE@PE@PE@PE@PE@PE@PE@PE@PE@PE@PE@PE@PE@PE@PE@PE@PE@PE@PE@PE@P' m?ϡ+/eIENDB`yubioath-desktop/images/sky1@2x.png000066400000000000000000005043351412677075700176170ustar00rootroot00000000000000PNG  IHDRߊgAMA a cHRMz&u0`:pQ<bKGDtIME3%.YIDATxwYQ.?UkN'uĞ< JRT2f"E0 @@P (^09:>yUݧzg|>vzϮUUO 3} |'1cmBY%`:?sł1JA/(((O_,۱fu9`y0oRl۩t/ /8w1ϼC(x􂂂{G(>p1u<l:hiXІL&]7[˭j|S_'o~൏77>o?JA/(((x?>{G-M߲w:ڽk-0A AxztAu6/775$}m?@AAA?z ۉ5/߳]K,؏<1G|_嶩7_sY-Nu.12b tu Ċ#CC,M Xkj4^h =gv!O_T<(;w|lR-wጣ/^Wr 3Cە5az Q&(*֝ga*b TH֩g K8sHD񉧿7\S:ZAAAwoq@0^oaIW0JJ"+D HY1C)"Q(Y %`ed 1:C2_~)h: |/=J^PPP_pczҊ{~svt1n*Ě+]A@P `̌*p,1TL(rR(Y&S]8{L‘3MeG)|9qNu/.~-SCvB LMUE &1DQ@Ps6!0A M 4 PzsJst;:W?_OYw 'fzWO'[?lۆc\oy{UTF9J 09. %BÄL(1R&TU(H>RfQ<'Qx̠Xtx«s%燐ເR x| e:?=O{޹.𨉈0n&3n׾40 뼕 XT1I"$ 瀬$ gE8- ]l˅ep;PPPPP—>yCG4Wʭ]}#.La*tj`Щ01b`DEbA[ř!͹TYU$@@6fW&G,*X鄻צ~ o;yFUOewC/((([1z:N:ԕ7^}73i~Q +tz̘m_N`z)٨p2\ Z%bc Rf$e$+8!2b0HcƊC荿'@Ώ=bpA)[>_SNg}λޱ,իS DpPٙ:(F UPM8D W&k#}^ V;0! PEBʄ,r" J3t1omVyEW]^PPPEu30;W ]׏uw_{w.i"bPW fߚ3l2)rbJ@`2Ɋ50B\!B BP(@+Hb@MfԈ1|`6{?}63g㫗|n?E^PPP>yгE.eO?^u]{Qf T^RB T@lśވaIAJYAp)[/B "I fdר*T +,0UOOÏꍿuر/_ES(􂂂æi{qֱQz[g~=sKk]0>0ZPD9Ȝ@Y!`5"Hdk1(b$d@ 'Xjvӫ*f>$H pz87n]~G;ePE)xן} 3?Zsl#bz1&I >WeExg 6qQd3D B ԕЀ*F &g9N tɤnTA' 3#Nk#_O/4%/A8 xcj }y Q*?ur&f3A(< cwj+D@"*`wei!0j+!>eFS%o '4INm>;}O'oC ==¸r$oxߗƿy=߽~CW J33&MeT_΄ɺɮdn Eu$,Dh8 E`EWIatB)#+Mdml?sgd |Lz1Ջs慿:k䨗~Y P zAA<>ޏcn:UO8sҗ_|ݺgCwi^l@\rU-HFokc"6~E[p&\ybdߑBZ&{%FNs0c+ ?nS'(E!R y[:lܻ4kM=T/#zT>;gaWrՀ&QP@6o2 v׶<@Do1={f |N`B䑬=, "FA  M4G>uO_ ..6ׂI|KUEOa6_-߼GB|~0􂂂);>)?s9\/eb3 "6?d-.KbE`b(퀝։gӞ&@57Xdj2 ts" }R6dbUU}`D4Y(ji-i j t怊9=" HqK1M׫3c[ǩb3c +h>o u.xKQ􂂂=?e qQ2/֫ky # )(PWVU:dcqNd h A.U~FJ< FV AjoD^1RvYm>VW5̦oWI0zr02o΍~8k <y{B8W~_u~vjZj{^~q2ziWYjd9"+!8[pPi Ѽ{@lr~׶gc*hŭ 6F=fDUV@$FS;J=ohdo'ĭۛ)YfX*>WLV9`Zqq=%!F(@BhH@C|Lv%Gs .*ER v?|g>&ԝ'.+ϝuyq SA׺4;(@fLN@tiZCLcq@Nd2#%K&T8GR"$b/ dcS3#%HvJ`: L2Znɴ˒=S&APuUH{xXqI3K?_GfY/Y!z9kv1N=6 K _C4ctܭ919F!=(!?~^7~k˷o| a^ЭCJ3׺إ_a[ |T0N 6++R:RY2d_ N%۩}ܘtS+޲Z`cqvv F1jvhi2G A8|$t)W}'2g߼2B))| _0>GTϮ[}Uu,FYg[EAEbm$L^onL_QFE@$ X{ܩ`mbNفtRl;==BUX7Zm(dֱVLUյ},%`6!dlm.z>~lJ9A;ܐx` 01zs#8ԹZy>ui^PP;qyy,]u0X 9S}\aLoj;\%ب\ڝ7P +aR1 QqOu6YiC0{5I;-p85cȶ':嗇`Nڋ"PUW:NnBv=r A5q3߫r6| I"97瞱at͗N~_} =Q zAAo{1cWnOp.ޫvȝ sau0=Ș8+Bdߗ]#KFQ2yMV`]>?+"qFPPGuTGa1~\5 eFVND 3)$huv@+̎=FUDZ7e7itNTrwA(x@aT@Q$UvȈȍCG){V^q pٕ|滉R ']O~ұxcN{{ofi[1N5boݓ:D.WE=QŨA4lYƶGd;߽3c Ue&)4 `mw2q< ͬ1wf%XwF,/>+ly70,ȏ:~p>L\q?aR Tx?^xk6Mus OoiL3}A$؉1+یrAP|{6ܙb0ei{im G6LM ר ye'N@1nL8  ~#Q"K @]DRWƀg&Hr2^ #`FN(QeJFؘPCnխJIrP"z뿾|'uw3k.wAO姡z6+_5K]sgn]`4ATAjLXD](&d6ɉ_mKvg"'Soӓ9" Jar8`ؘM*n2^:7z{7b9KU3z lIfni3ؽX}o&3DRt*cxux1ɜlr Q>o| .c2ݺe{Qi{x"4޵t%+F&9|Kyt '|\{?KaR +Ǡ ~Qy5f^xt\^DM6MY'֬fJdoe-E33cK;Z9`rR3xMSQ.8 6dr #kX*ghۉ9DhܞSkA-nÇ 'U$'Kjq1y"W9 &Ã{֫刚|J 1D4)Ʉ: sTw˗f<~j '<\{?K!R /b1=GO?-w]c-;131˨]o-9y=Bn]eES';hۚݙ:XRtQ$mnDG Uv':5ܗ] WIDfs&DZzr*Z{΂ټޕ!F& tume/O`NNݶ,Ć!&gQ ď=zㅻ6q*?pQR p|㏉yC_^~ʭ?aa]iAk{qc{eѝgDb:HD+×IWˌ:S^*+~(1Dm|83a6wGnێ"&#F.9S;bhdBds)^ Ҧ˙,2PP̺t'u>ͳ=D';$vh=Ȯ(LD FJv8S L;nrW~ǞcʿߗC⍟YGqg/1?n;_X!R5yPg#mU kSG>bGɰŋŕfBD'*֡ZAb/ʢD˺VG>VO.O e;̝M:f^7765ۇU3!mP: T-,-#ebx0+:ژ^liBH [f#L&bbR #`>RH7rᶍaǟcR3(Û~|;&W-^sY +.@LjvvzN~uAkcRgz]T1X^yxqcRm(SKekm,)mHM"^5V+8ers2I&) D[``?E2xJZ7C5NWbBd#{ :m x(L@?LskTE1N `~qG~[=d'Pv(:>Q+/_|Gرp\bi`c@2T&bIHV\c'Е֋C1Ű!ܿAϢf @ !Z+u 졪 A6-3X!Ɓ"b;hH-NLJFEӈf c (PPHɭi3Ab<0 (&vrэncqFP'ܱ@(ہ"Ӯw+F "B2Y=Fʄ5Ž-K<~t?}>P:􂂂*֏s?_&ӿuW;tkͨ*ڊ$׻w.65FX7WT28DF% 4Gj"X &E(Sklr83o[7:NZnb#mrRDYճ`F2z+z+MRϨ &o;m$ċҲ3(ۈ $ mA9!Wpǔ29λᄳ_ Q?R kxAW_V՞`;%q0 & ^QvNFi(w6dE'}ww܉N.n3R~H􂂂8>OßW_1~ng/heA3遅2X8~:7y-8Nsv&As59-+R&+NqX 34e`V-,{7'~r[V#p&[Yi]I\Ce!0,|GH:2:݈n7`fF[aGՄ^t;v;]xP CMO3XCJXrL0B1FKlF.Y1F'uM|?q9\|.n,3((((X|Gsᆝ_c=5T0 0+$,Ȣ3u TMB6ٻxiC *bXBɼψ=U`|dm{wy;xesA&IK@lm`@X7 nlB5p C9i6N&dFc0@qڶC}/3u51>R=^PPo|Lׂ4~ a{筷O?qr nƹJ a%'>/L 'Ygx!E')OT Hb]/kl"f$Cl:U<ԒĜr\0Y !8٢8UBNfWL:OٿޚجW]ƆiLhU24b,[7 FhW#`D7;t;~Wѯ2@g߰aq{WSPи,D@&٪`yɨ+cq) 5 1g|og:EY_/%࿄yqpʑ瞗+ǯ 7eq&0D:1!REm,{~Lb^kbՂF[FzkPopupkݦ2 /Wɯ[ђ_(@Tdq.os`:}`iݽ`˼ܹewbi)cuyZf 7cfArA2#1$5HMBjX],, L` F܃^hqq_y a!!6q^?OSj{-,oGBSJxgw}G~گǟBXrJA/((OoNX)ސ7ݕ߼vԛn5sjY"x c )whlh7)ԭJsŃ[עMn5xhJ6۶ݣ"F+&{L^CG5o+g@-C~0eB4" u48` uy $ y5@<k-cXCs3R Z8i!ŝ1WWN.L,d?UZSzhs!r9hJ_Y9eNwmx!nHE))ŠxǗ2N?Vo|~n cPn;}r{OڿLk(0lLF*2I[G1.ۡ q"W}]ҭm*R@lzSB)矿^ g#7U [$\Hu9bD7ֱc#^2ٵ7Hn9YJ͝10:1O< Z 1ۖU/CۓU@ ]cki6=yLcy/}݋)ًAK2:XEPr" T2&9`}>b# MوW%^Oļ @0XKmb܋f<.7FO2^|+\I?]P zAAO~s?'=n?WvG]7;wRT!ĈajnF[V"T8QtnʦCϢQ.T-NDA`Bm%]mDzh"e3GK\!:v+Y`ѦsǞfΔ$5|$YA&P牵$VmM|b{4GQ*H-`b&ځF"Hd ڋރ>EEth=ZD˨d]]F *=Y ôRmB:n6cSZ}! |3ΦeYU&"v\R%\sfQ/2G O8{sܷ-_s2*ĺ alLr@4Q}̬=ȄA2I,H=);!-gAEաU?oo8׻CK`!;Ʌ`mdRG6#Yht6Cq%e0v.va%Ѫw>JOk<*zX4/aJ$CD1[) YƆB`u8B3X\NزkXNa4q f0 y=8kLMf,lC@)U/;liG:*X+Ǩ1G,,WhF +S7<{/3hFz =(~C8dO:On{7}t\Us*{sI0 {A5t;Bg4YX%Em+ 4Y}\ rCӼȤ^uӧ!00n2*"e+LD v\'V1YëgQ`([UQEF[Z]{y$#MFFAW%Lai<t q=j͇acGonY+t*roȊԌށص~\*.a#N92)+) Tw0EO8CvljҤQ߂cH`m_NjIݼF"F)biEьγ\~Uf ߿J(JA/((7xk?.uoLx/߼=zTcf [Ą<:fֹ5fio0780BTFDji]kd}ؾu1'­# Wvm{+>N-}U`q"3i8ʈ1NX⧁@l01a  uv/f ,(d5YrkYGOB<+x;ē9GaD"@3iq7($YFx$i`j4s`۵k7op&4| C0B@5 P] Pw"fSgay^Nm@#Vȳga.} +0! azi鸩۱xG=^m_ e^PPpWvǣ]cOn3w>QUiTF s#pp9E%gaHqc]eF6Fj@yֽ:w#q6e׋3a .a5}&A,dah<11[/@ 6=dݶ4jt}ZކGjV`>8gB\^k1j ݆pqL QB".Ȗt0wcq'ԃW!߉;Aa( O1-\Qc!5DcW+hYM(PDTu0YM_HhrD#GPcUgxU=v|YW~oKA/(([磘(-8>7];gػC .cnZ0$`O B#?MlP;%[$v;@}~{ak+DAߚpSy_qhBU21ah^\euw78}MbތeEf]V@ySǴl6o/>-Gp8pҋC+iehv߅ߊ;*˩=Kk`iyM1̌A뇓 =T+wߋ0`NÙ,܋UAhV<%@(QWæ$,{CC1d&;ײ!hӗ&G$D#cw y#v|W5q~#^<⻯9c-LW.5[gؤb``C% [i;Kn @ nƈcF$32璋[u❪u3[͗=\L_,ge0X'v#ؾݓCջwdWq=O /7I=i͆L u(Umk`x0d9Ɍu\-f{Ih9NR4{"[`hC#ƞf@Ӛum`JZB ېK8ESwG= 13ޅST6R(VV3nq}|k4\`q&# H'`4X=㈭]4Åp=,DLՊMSPb9̢.aēXVܷytPЉcx_LȾ?ب @c" ;3"k1c gE$T=faaHg<\z!?n^+qշzUz~~i/xT0,`Q`65pu»^QϴSR+fYRf~daЉiʶ'"4٣QɜŒŠ.Ֆlݲa)`{ ߁y!FFhTaV}~-DA4;4}\ GjhځYomCUBރy+b3#wwgu,L?kW^iΨ \~. ň_܀Lcǰةvbiȅ Hmh4_72nyǰڭ.% 1*XӇLn,mž Qں`}qDh=7!Xo:&)I';t5sB"5TcXfsxͣ{.w<! j !݇,}{޾D6p86ܲp~b牐ɌdH:Դn| d[y9U,`N kNs2?`Z6|#nk7G~(w.+3{W u$(lE8®2|z@CmMZmybۑy( ~$ KWE=n! W5+ϽqeO/,l}yr#<_>1I3+(v|RkZՄGίιF,|L)#毟~o8{s:ҭ?nY5 ajM>%Ș@[mtَAH\ :T.U';hM\ػTdWmMP=iW۷2ȘB ܔMlH6?wFKtr0'G v 288^M6KW{V쾘~}+k@n ]A<ijN؁zAء˷3]m;Yܱ8u[?K{2r?mqĞ?ߥ+.,ހN@\yxm=C{v9CiܽrDA6E2T" .Pq"L%` ;Zvc g@sF*qKQQs{.~KA/(xW|t7pEOxUze~[z?;-+ߜ 2 OmDlkfy* EJJYl?N5! CLNlcw.ۅsş|vO]Sq/QPEq-\\k80x:h 'vwci\@];v4V;6{(Y &?漧 *R|uWPE;pCo,DGD1acE<>? iz?o˷|ݳn[A4 V zHb>6oPR@kry#m1V'/Nd>f;&Ol$ϭ[g FƳnf3x̡i(t}^'v1+Dh5Y k_H;Iq2/uNP[,^䳒7vYly=Zc<FtcuYYC΂hbNb$4BS] u;@M=ϜM <۵qhHYvy;(LXKޱ0l| {5^49G78ػ:➅]߹Ux9/ooߟeu=7 ÏHW5 l| +! Pe+$pt]H6=ѫ!]dE&pVd@jL u'8 )cu l]v׿OM<I~{n3(!_y .gv̾]8"VT_a*R8xQmDj*rӵ"|LR5L̉(xnӷT=ܴYDjo؞12i2z'F9֡O vk*Z'4b3U$Iqcg!?z.kB`3$LhMCku p;v6b[itnӥγ֓ݠPaZKngFam!ي&F}I4!ЍUUT ,Ч)r**Tj怪 @)":ضv|줙:^?@AAҫQGO\w/Vϻl>;q~.074 T@dH+-;zGNelqzp5;yMi7{vqx mF*1ٙVm^'{O'Ձzҙ2McY;A$ɦ%b9@ʓ@ Z}d2ilrҾ8DPlqaL͘H@2=,bou(jlfY%\~W~pp>v})>=`(JUkl[AB=I^@Q@u+Q:"$D\k@Ld 2B0{X|U@$8)`@Vt:hb$uYMGE B0$lfz_\c$ v S}@oj7;otv]m%;Wr7Œ9WANN`2fyps&B ȴƠOٛ.ͲCwr75c y i yO~b&rܵwZczJ07ѩܦ5X6ȭF닾N"MM[Yzjo i?N >&m'k@tCN:ș7C;mοMpTm^W^MgM Ivn6x:3{ m`=5F#)hI kLjdL gW=uf{.Ʈ]ߗUxk7'uk?wo"CCB G?#f[ 6>5 5'k4ZnV$-ǔue:>ʬ.okMlr#=e0 5VRWpRswmSpV_R x|:(N[e_[}ߞ>ƹFU+fg]mfSu+j97'3mnsu_M{%Y[[c4)M^'ĺxr^^IGL !&VdVj)$<2SS;AQfL"B{7$SX@K[ R1by7 Sqk@%CP׽mlx 8}Io8,oǓg~z8 \wY?H5MFڤNMc=Xdp2$  ![Hx~#K.s$EVtz8_3Q% [޳ZцNtH-xvꥠa Z:e]E0JRpBH!C n4|k tKXLt0\s6߸/ 4{|8lz;e/]uq(\ը+sL1nY M B y2S" S&0SkRC,fsfz۵3+4bVJ,NkpH9`y\c߻O=.i>_ lAч[!dI]{g]sn;8uR#ꈙ)`m'$&Por[UQ&nj7Dv3|c`ۃm $8:^Z9Uu2Vl}o+s&DqZvO;&¸ b֖DǮw[@ \'0bDgd'w9w3[qgnߗ+~+xԁ#\z3pW]ЭO7R`6Y'; glZ }BN(ھt_mŸp+rƑ8-HAlO&hk9ZOQsΚ֑Ͽ9x߇ny^P_:xӗN7{3;֚06N'T2ijX7-)nA*m &_(0ɛg Qt4vIVR"0$ E h:ɫ |.r&}`ɤ,ly؛~ 69HzGB7VʤnK;*vBzllnY>dAJ$j:D\67~z!(a$5f<8xvD8qǟp4.c~^_/>?8?>ܶPgu' m0"ؔBU Ԓ?~r}?WU PyWޓ hCP 4€$f9FXkãu}ಥ_COڔ^P_~%qUxaNoznzͻO߱Eֈn7bf;NRnMcFVoмsH-Frd. ][ٸMhK/ck:a;eRhlJڑudyMV*Z]k01r⟪KH')oYILo {J5sPG@L` wv`Zvf @3hOxtTZj--hz! QR\.Z)jʓT4f$Rіg#Rbl;t#uk ghM11imNm=.`ai p0˻IN)s"7Yu7X0=[ϻ. bB'uc.!JNJu7oӉk$F*6(G@wqA8\A}ǩ}W\u |Kk~,o{^ӟThح173"}.ʉ[@lZja`A*>Mہ, p8KUݠ H!Xj뫀y9v8PB@#5T 4 0{ /7^JA/(x} uyx7zM{fꞽ8"Fav WW[躍||oĮTReSf tYK"j-\;lc {7/u\E _()<_IzF''IĮ`ǍNdm궲G6lŠD! ^HnJ`Tn9ֶ4=l41 ljn2DTB[8U<\o;鄫>8w!7}W7CHj|KOCv,ɧI~@袪+:UFlh+ʃr$;[_LHX?R.C_k<1ivڇy4fB$>iAݮOT͉b&D H<~QхԮWŅW}{o) _I"?ny#,̾=߷cGDt:YŠk]$3P+́lfFZ#iK+V'hY}gm4E{ `$-&| 1z;oT Y٦ ֌uLRlw^A;w-DPOV #MrS{ķ mzP'}Infa; rO3w'2F4jb1 p }qbga][ϻEϾ?yN|][g:pčm4&oEƧ2 ƫE2٩ֱ%mtl `4aVثXYq4Ǻ;g+#u[>AȞl>n+{::b ƀg{+O{Z۽ܒD3NV8ʈ#Z$ KP#4'V\ݳ{~%<[Ww}2^FG|3o}W۟Y1BSM3g}ז6ј FnCի:b#ӵ3^+Fn0üs]%f:&'1m_U0!@)Yy?Iu]=Xrbaݸ8X `cRgw˓`)+ 2C*`ch;7\x > '@ ODM> WIMƈ,v8lS<O_t-ᚰ׆m#"?_G{!S7gucM۹GJ@1]t3`oNġR筷}D;vixұ݇geDj"8 6tcc3nrBXfCkNTt@+lIg1ydu{]TlPPR5gJe!N]'y1$Dj@`{l3$M#6^ZX]H΀@u wWqD?rvp|k7|?.'\Gor!/o;,[\@ѩ3XUֺeWngգ!uBR9n!w-+&6_0:o6yZ:|LnlQԾWAlnguzpVNQmO(udsu( s :c_Xac:sN>mi!=z{a5啈U 7 c #<xW,^s²|sϕ4Bwa 10w~7=MOT#TQ9pyRGcc=Qc d3kJӒ$\rɀdD5((!ivnMhla&ֶXGbZ#֚&:?-o99܈74"bmf VB`i) dweA<9<oA*EOIDATo=]y5;^?[|> cRpeegҺR)TCִC8h4&eah5 }'% c33*TK_,oCRqG t$oU`#t2%)h.\si+@M߁5>amJlk"%dfIdul~ja;6 D>= Iym`aNfKQ(hAuX֑{^'\62;Ǖ39> Tñ[9IyVI*bE]^ z( gz M=fsbD9k £ƘB-X @R ڱRLM%fS,68r''EPm5 7C*Uɸ .J)uZY_EH ?^*P9\)ڔ H]aW/~c_|c/?\|֛ކE;|u!b0̳ND7tIS =~JSn2y@EY"\t,H{X6\lqt8 IUC(͆ݵ$`B$ ӕ EX9J ; (Nffn,ilN9I"7M77=\ƅ}l~{"ɚeoCO,t!}6IF]Ezn *vb6*zxn"-Jw&}* w M M3AAJ$|oo5"DoDYj{͈h l\JY-7Q>X|nV갚6ǥ9OR$B$ 0XnhQ5 cxa_qT_PEp50pt} ;|C]󣮽k,|~NK<3?O:8_ſ[{O/_qr|8:,:UYR,zg!(7w M 4D` $xtԗKtE'CNQ /d>݀E/SZUF . LڦqzMVV+iM@45J&J3j˛N>GG7W E:73DQyMW*-X}tIB_KTyn5>R-PGt)SA5t6,ȩ)ugRArјc\g0]t %sH!u=fp,+Waѱ!*_N{i3!yKDƲG D$̔ WFr-G߁TR `ߢ I |m߿%-O ^t兇u(dFݮ隽m+ipF0XcǗɸ~?/ۿm]t9_!/oŵ?x]'>vvg=='N](\G+ўFS$͏ǵNrf?n*(ēpL11M<@ &6 n}tu''*OAkqh*cf-$3i4hl,}3 zFgq`p\}}s J%icGfMKq p B>eG_7϶_ox \?V,;?~ex77=q<6CF9**Tj^j5ńCbTfu22ie{I2cԶ*'v#W0'pFK:7ąoz0MDD.ZBKXCO͔ĂاP T1$tI&]ƆrF'f.MOXsA}o,Gcˢ˽pT~bLEe; ]2tɱaWt]Ŭw,+},y/Xd6_) ~aHEPWs~f[4!L6hj)8sA߃0A?CI}L?rh9FSVNjkm. ׌XD!Q",$X8lhL+)v)_>mʙ+T| }:i*dfm zn$:N}d}PjDA&MYāΝ\TޒVb2 RNLt؈\]"ᎅ1kp?`ؽ3H HsPϻ1QMD;n ~Y4`r8 Z w-a3-aŷ(jdVĩg]D+@GYi$f \IhbSgJqiA@ I9!QEa&$$.3* C|+`;2nx׼eí <rB|^80cfӥ`W(!.} < ASXI+]X FdfiHZYą+ Y,hr\R]Mnc͠`kU)cu[f~#IH H0,e6p1 8='}u _9_ol{s^s]@Tqt\=pc!.}D$ipuӽ6H2"AVm@􉗜4OSdV ~< P(Os^h--!O)!4X53J AfN. -ʔI0|yEǻhC\`_10U2Yޢ@}kɰΩ*MDEr(kfB67F"VabKɣ:[G>M$x DX +, 3f`{9 x\tzs! !c sN 6\41敛i.XH@x5VD~Ik{UG(RJ_86|8'nmRB?'g{;wy.]ON'YkHgkcJ};mc]&mwHI*iƂg=NH_M$Pg#'t~Lx||]Ny-<8}ㅫ_{]K IGaV5 1|Pw #.pr;=jZY.;* Kj:^rQ=QSm)l$QTH0&N-u [Kt|i֙O6Yel0v#tV;>]͓YL',{ r]@fue<#N] H,V=dYt_أ׶!RRC#oqH-F4`B\Ċή 5P?&½ |NEh$EF. HN0/pHAdQtx}Rp~wWr@ /sn3%Ȏ|Z\)K$7);6}N[Hs~ H!kn6"`kӗkHW|0 㣳qqQ0vpQf|\ow`1J_!a\M߉1 xۍG#ï3:_ңp0-:6`-$=հL6Ѕ#.3OhK=%xVY!M23Rk|!1le5ucXjM3Ab}qnhS{fbQ_DFx(\BS`XAlF. hA1 {4] "mFN^a朢t.Lcupf&/J߀NjlDZҚ;c # T+ʰ.w'^EA:=a"Mj꠆J2"1EH CAdcvӵ؍'6J1L?2k-|DAeߛ@V+ I|YՐk c?SLk8:`.gPZn cVƢyf0 ;'kzİ C.=>뚉"zo,7}Tm?:|kuvk?Y~fq2;<[aʞBӤlO1 wlU;!3S^$w{7(d5 . wTD)3-(5X.sUvȌ c:ZĶfRQ-¾,~fˁ^]44Q$Y!Jn&Eћ pM,e1CsdS2.|μM{3uE'^CP;l=э^PVEYf2o; pR+bDR)rTNgh^hPC3=uJscAHDk &Ɓ4}PK0Fnzh^ĕPB3f+PXh4<=PB((k jR)5`ܓUZꨕH>C#Atqۡl}^]hBʝ5f{+$Х5"~OzNK5{>7Ozco~[sr1W1qQŢ4M+8J0Q+nՃ- bDɌ`1;ZۛrNO.VV")'SLHFrr,>U Vs+8wU J pǕaUfЧN !O 8w !ݨ4p72N}G]NX9 [kni+dI0DC4LF&%F4 VСIN8G?ر-K%P EDJc"FzN!ۣ8keЧާbo{S_30Ф͈ HFJ([VSWEdD[˨2| wr"WBI9ۥq_Ӕ(QLS1f;iź2VJ %kz:{mq:8Yō _o7 vl*f]DFR$Kpi5y~~'݀O2{䙻3ydvHYpp0w”\s\@vx6Q ́Ƽ23ZFUXqe! sD0v}wEr O6I]Wq:Ut]s]Jv'\c~T`GT$le P1v a11AqdK&`U8.I;#' elNy )uR N7k25ͱLm?(J{K^3`'&UJ4 h4Z‚ש}+Tqabcz-7mUmů믋`cM+pc,F%JT:JJ?-)#zTQ1+&":wj-X DxVUĸ '/tI!QYV:D3 RLhPN-dF ͹nK?*$ȉL&}삷JBZ3$R5'V|r^uX-oԘJ2A{A4qMCMRk 9s6 :KE5t8;+M.! N熰t?9DWm9~.˂~y~͜¿~g7xd5O?y |&8Z6m_I.F1UtfITȉB>+fÝM¹,yM{'~,?N'XɧN[^KXpF mn'Iew Y600h)љ1ZcAFVz9=4Y\p0w\;ܵp\]2JYųg 7O.;źbP_AB`=Gb I4f8rY],S{<Ԃ v#38@h!' Xq$hw*KQ3_*4Y%^ bX 6967:hXtm c46a`9`FF)3J1%F$u6}"9 N$I&`ލ\cTh ); .&ש1a-++(Է+ WN\w~LKs whB8f1T"HpWwuV*ζJ$ĕ-'eAW\¸Zq%RB!"ձ3Vv3K돞{__}w_ɏW,ŬTŬ3VrJxQ-`D[ (RϳcxpfM 08!c4O3o)N>Lkj{\bP$8O5ҦÖHU$&E:t1 ,9'Y;f̯xE1)hӪ+ Z!Ӫk{Lo)%b8dz8/3Ʉ;S:{c',a.QR( #{u6q}G_pdž>Ru}6A" u2gQ`H%jK&H([710 3wJ+;szߌa[pd ¢.$ 2ƞ~TI\# BSh|Є_C2UFqgeKtkѨGyD!6<ZU~U;ȇ-.{~[ 3-x}~g˯n]t0PľĜ(F8įVkf 0ؖ[tAp+q1%8tR`΀aFeG2%O&0}Yj:+@9[,,!M7Vb4s"n35>@s+r YZ{OIXd/6Y`P1ѐ9%A4 Yk4x4,8 ::pwi9o##btSV5Mc]!|0 E'Ⱥ֊yD>?PQs!#>E+=0Ti5XH섫;U.'̳6BoߟrB<*goj?Wݷ?e?ïQ$P$T{HxR@*h)L\^%̚7F6Evz0y[&ڬָٰ% 뉛O7/'aX BfRwUH ͽњ A{ĕ Ua5dV2NX́ÅcP,a1fBHmbg(I.T.AV C'kp E6KwD}4"׻yc :Y^vqj r72:'Jɓ WAӝu,aS0VƇѨ( > 7m<@-l`V(j6l#%-Tߋ;XPL$$eoq`9^gia;禭 CVEy.8N/ bSPZa9UC u$>ݞ{`Ggg7׋޻,Wo~;f[n$'<'fJq$\QztY}10.4&V[QYҦI^#SRx-*PpXL~݈-buQ. >u4a" tgƑ0 f(@FVFP*L/Y< \(BrA-) !CDƄZ3.tWCSu2;2Ȥ'\፶=+|WϫSDZsE5M1]FbC1 O1@ '{'\: F9+vc^/j-9 AZ 7Ot9SRp6Ta%'vA|MI;av"($&姣e&4GWY|=}Oy'ﲠ__U?Z{ޞO<%'\YYxTDutVS[&{KN, )'& tm:t6 :^ptY3O+ !u%v#pQ+#$vyQKI$%.L\\:@{7$Atмvj(cMi͢`5E`ߌ4q(/bRJBHs.*>ujk/e:!`SSVNc$ dj%:/Y LI`-+A8OSpp4qN[+00AKuIMͅKK1oF*h9ȡ')42h[ VDECj,p$^EhZ>sQTsȶ8{Rj H)6 X׈U!]R0` bnMvPJh~ڗO,thEC4b$5%"/ qS -{3C9.wW%?'Sg7^wp0g4Vg Q~8cޔPid)"C^RH:Tl#+oAb&d;IYG ËR̴q3g E`Z^bjgnb(FtPc1&¼Pa`Q/2G932Kɋ(3@gtaӱЧ3sB+Fw4򱰘A&]b4Jr}b{ucWI9ÒȓC#!I.)0TB]뉮H3w! pc\E ]\WYH֔;6a Dη;8>AԲ*XiNRbWOgĂͩ=*eDaUF?lvQU)5ZX8:(|=\0 kll6a6L.ӈ^ !!JR*eTNYC#=zsv^NW7 E??ٸmoy|O-?f\9prn1e/Ck1 ]7Z6/8Ki*WFC#!` a@&{ǯf"iSG+Sq+#?8Оyܧ曡GV+—"HT$85)P\Ni=~y~Ş¿^+?﻽g/aH8\r@DL6yUcG,`vD`J;g NPiXyF01I)=dL^^Ix|(xg[g&er[w𺁔3h=ΠA'Ӹwy8+WgTpq_3+g3Rqz6xB N/  mz_x=CppMdĶê0зy4h44 6<*zx[C@È&XfSM w/8;9q\<} '-ج̻Zwg nϱیؖq5ǻǛ 52'DmC:BMt` {zlQjg[sCDds1X"ԮRZgrX'T#aDT>Ѭ\ +%"sPj!6Ff8:]8q ᗠ&JH%9[ I*F&x-LV3`Dnf\aᩃ`z&C"dVdސZ\Bϥ C:;ͅ<ʄ )z益l \lb@YǾ| $K5$:m) U2/"dl^+j_էw1\§n/ϯo6ݯ p\˞ ۍo0#s4 J~)Ta†ZI;r 䡙H/19 aP汋B㔜F5 E+#yq S<3bSq89w c!/1'-< 9Wt)aHJln:HM0qa=c-n_E#/!|W}~;+ȫg~z_?q}z,#f}0v(é @L2/%BFσH$RfYbZ[u-kRO1w{ME =u7 7ǧn79P֐ZϐrBoMk3E GW:ů~| Hk+A}DgPbJ6Yj͓R5ކt )w8\)06zz',xg\15'EM;TR(f449WbEDL]3Lw.Y\ %T܏ "~4L`E;Yp"c%tN!3 }pZB hZI3 ?ԏ{@"3Zk`$wʆD$lR/Ժ2D4}=\3(X٬t#3~RDҖb,&44%EGLkJu&[䆬C\l盄 CGJ7kJ3i =TB3%TRXSht[e~S5=;::v;Í-h<\ϗ}ѷݷz<K=?Kݞ=+CrxP&m #En=@K?C8rjY9F)kfk{@zh\Q[peSS`NuC6{PNnHob&[T'9x-|x#?7<׼A<+X,}ޡ+g¬)#a T֑udR ݪ2J@n`ݜl%۠0cy]xee/%cyBˢeۓ$Eka۝Hbd{nM;s{(3B9) vepJ$5p#h䛂BBnUŰ Rs+~=Lm I.:.q)pb??l\hSsV}X!T w0BtjME ΐ0b4& ;.ր^Fx6}4T0!eЩISKJ S#e$;ξuۡ:frg_%//!|-ܵp'x}KtCO]]j(;s isb f R9Rس#vnDl$8<-xk$4832͛9L;46NV`B^B*kNPV6y9!-rzW6zagy{n᷽6>9^Q^яྗߍŬvUF?vucEZaQ1+pinIxXcpӎmHi8zkwEy^`lOnG{kذXW/MQ>G{m1Mc:̙\F¯i_YH X ΆEҞ kƦYtjwӜY Rd4~V)y~_RTF;P 6+tQ e'sii-ȁ9hȪafʵרi#]&VQBrgS8X$s-pF1P6FOZѧ}nz5!@! )P̶& Ż-n_%7/ eu~+~^ƟG֟ox;HX̔Ҫ9I_N{萐Anx ɧyֵoPflrof"ka,vꍘGS;(73[HaQg#Ğ[88bx~7N/y/k=txeT3V0ϓ,3TA2=Ftv!U2Ar#ll c27QQ @H܃wx6pf =v"-=)'k\mtKD!,i/-$IIcݷ EI0ocKj..i[C;f~K0C> &5ʘ7>%` ecoA67Oxt2$^IU"d:@D&+Y4xލ)>4|jfXoFsye XF#i,R~!lH3LRQKl.}/B[3yFy5__6ȷzpxq~}aM#YI 1)D6ӸLIZSҮpn`Ue?{:i]N.v!S:⼹N #8w9,=G3 ZiJ҂Xx8kj#rKy]gRixR7k!yAEF[\{^Wb{{ G8Ŧ( EfSsۧJG[&P-k%e6cDS "A"Z@'R Ct/p[5e> iP4#By@čp} '> sZ>(uz.k+^ۇ DIHBg`jϐ}j&"OAiR]0Оa 'Х 8v[C)ٷֱ ZЧĜ넆M{/ (FGeڋf &9! ]lj]5 }W=^t 7 c58F&ug'H 5/PX!w_+Ӯpm 7pMަL\Sk Y`uPIf#,uP,4x^TpԳx#,nq1И@aaZ負 >-cc Z܇ʯ[0&zL{(3Ś9Dl)]fAَ"2-&` ip:b41gbYR:L ͷrbRKutmKF ♡DM |%i(ȁ^Ȟhhgx2%%t)KΦK RNLGN!:ŕ9qmu&RҊ>貇!|5b_WI{j݋]mEW~*ӟk_-/oab hvOR6!{EZ4&9F\&TPGIj 7ÝG0IY7'یpmn1 KcDuM:#v-EUBOlD M=y@#؅j S I-iLrs2`,lʛ.G$]W6v;Qwp5Z \gj%LoL~h"͍Q}\)OBq=n|_Þpy~7േ ^xe{O?e̿\2sphёa ƜO$ `B:pКl'`v0"Q fj2ػq+óFAeməvk"%m ԋ̏qEo z-GnGW?EuVGajMLmq{*nLE4&zX gĨ]XQ%,qߺ'G4 C!l w0z'1 {AW2ՌK7,qx$~ь.;z)X\;@rNxHe܇OKS6Iam*GnՂiEzuLEÈ$̢Bt׈<&K2L WpWOp<R/gLcצu~wDL;hpZ&ejh Mkiy"Ѩ"`9s:Ŗ|c02H'4-U);/=!)? |ݓ*eA<_Xt{ex]W'/~xup#ptPm҇9to@KBȆG0[ٖl[QFe= dR=:eiܳ o%;BMo~TNMY\=a|Kni\ܚuj2F$\'pd &,8ktpvKܑl#'&j^F5a]ߺ%teM^;T'HKt,BVC&H>@vxWg懿r)effyz-\ڕSTKk_Hwtbz7+Z[sIdk:p#&Q3P6E!Uј|4vր0%H@0M<%$S/`Q5vQ!'6S4ҧ$1WS+n v[b[, %`u>7[_t^~۫q9|EĽ J7 dJsZtI[yUTQ$LL|# ug1GQaW2Y Bs*SB62$HTGTTG@MLgd󗣼+HҎnYR[4w@M$Ԭ4' rNi?[J ^Ǐ=cQ,!Ca+k@dd/N\pdE>l4ᎰV8Oo{N&"g5ʩrHd(1MҀ!)3'|Ah؂0;>H7VpjW,(HL"QJai93ю$pjXv.Rq|a80l6aҏ`qҘįgc2Z@965Ųw&L_MWHwA;)HZJ粠__-8ݟ~W>z3<^\;qtT,{GYnNj{-5޸gPL'@[frc)&̰:]»ڝ{m%APL7ʝzAH;Z;Bv`^xk>g{対7|+9nŸ*z_sM$\wNӻi=r4XPPQ d2!Cll5YBH&|Vش}=tl e$XXܑ0{}>q|*8 0%:XIZo1DڜSzLՀaa3wc؟6 ڣM])He"E؊m5NN=mY9+V1 U $"SU144y5YC)QěLy`VQjE!aWP v>BeC -֔y4)e~G?Qg:7ŕ?gg|_sY//Rſ:8~cg?ywc\90ɦD& i}Jjڜb?m1yHʀ=LՐ6w:1OL+fadp*Z U1ÈgNȠPiӕ[8u(FWw>B_:S!dWEW!FdC Ui_JZd<Ð%Y.i+j[@A|v$ô$i$4Ai嫊8_z\2j.t^Ӏ*~x'޵l.Hs@;# @jFip5w !Srĕ*wqQ*i՚@qdzd%+:jz{ Oʡ=TmQU$ bał|}b$s;ynV'Ի# YdVR Skx|B~Hs:nF/ &Չc9;C[sz@ibu,xD* uҙ`hfF~?+x {sY///[7(kHOn7=zko\̥ qQA@L/ꒉqw,ixD9 月4v~MgNOm&AmYY02c}Xv益gOkav_C9r9AWnlM/>u~^/2o4PF6].0GQFaI]~؞ O`U&i0}F< 6j;j8Et(*wd!M3$G@ S + puD=;nqOmn+HJeA<(sxa l3]Ǐ/>tH9`8Z932ț}}$tbƋCݠT!{[< B4HN+do Cͤ]U|. yN췢W?gSnu]πpD\,1{5BSЉc)@frHfZ|# [Z:ew/e2 gɐ|s鹠 jLM Яck /;o}&>_)ibz_D 0Qsi]lDO'zL顝ꎒ0 EAa)G Fol`Hn02Ny Q҂JU J_cr\I3,;@N=N!. ~ZLIui ɩe}U‰mIWX#ޑiϹH2 ޴"h{ISu)=c>4Z6Deox'2獰Y얣9dZuѭV4L҈mMLqw*c7nNCQX-q AEN9wi5M")l 6@WI(gq ON|\9D;'|֚@]5+qt܍5_ʔal>=?{޾1,FiP 'fô74#?;%+_O;?;)q]`'1Wi4-%` aT#ܼIƙb(#%h>|N7-S1od"6{Y̅Px˛jN1~L?헸J?sY/χ|߁\Sq|w\ϖ_͘9c>R6i]:^˄kUcO9u5j5:/ư8p}>.AZfI X {L_gAtّF[x‘_zrxkV۔SH-L7 9`T: * 帣Zuk Ug+49b6R4 qC盰؃IF uzf%^Nʄ5K]Dg&4W&D/D y ApLpvZ `l`\kEP'O?I}yAX!2yk\We~?ox\!}0ӊ+o|t9cQYrf'J8()MCie7=cD28!=i(%蓄eߦȨFL׵Y6BB,szn v5N)Y+>%7_?%@ס"G)s$BR3ڭ6xW.ZHEM}ĂA@L݈#kJt<#aDh.qr:IZ6Pu! մCƈ5PDRfu8Wa@Lc7]7yF0/]]g%6]+9aޓnٹ"0{ʪD)w 5F5ud }e!@ 5癄~:rk1t! Jh c`ʓB:c{. J CX(cVلD fWXpx ;QkavymDFK#fB'>ik:Er;2bP)3;Q23I/Ww@<3/3JsY/v轟WO$O;[Yƚ*gN=5`bKtl,ajw^{s^r}@Qj8Es0xA[HVqD9\uLl^]${˄Ӗ2o;J߄#!q7һy~X^;XSf {Q`] P&=Ĩ&Z|N=R^1+ܝż%uMLY SֺzAf$ `lBJ5-XLsYl wc"-Rr\QSζr@<"worW8p=]'X]SV{E4F|bQPm6D9܃)nMYTkLx[i*!Uk >Vmāb) s"Ͻf)ϋM&saIS p`u"ΰ+6;3s:j&Kn-@JTtyD} T[ SUP'XtY+aEU?0E7~k|}>g'?;˾>=Wk%̮nķKR1-NX/U"n]!Fe&Y`b HFXEjnǐtڒx&)mde+9dܺqd[p/upx=]JHЬ]p (J[PYhwRXq}9Bc6v LZarbE)m40 Dewqފ Iń)=TPF>F.-S=ut*3j&w-8[m؎PTitazd}mwO+P[ R^Nb&Y_|_[\_KMo?rw-+~_{uO=w }vAa2)oyeE{j Gew_8#S# m@IDT$PgT֫Gb/VǮ(Io|)pՐmY9E@A%H>Ъ$(74*i*ɵj 1$DmyNiPҜ 10 JyR|MKdK;xϭqv`> F}+4AiqL N6Աݎ:ꎒ4M]/ODPnJbOyʷVg| /?W/ʹ,?7?ğ~q<~{mw %j#.Qܘ\!|s5NMXo P\'h{2f +,2i@f8rL4TR$_5-E7`PZS +_Yx[v[H|K/a}fRm``b:#(M3$FiLqh|+$ve.RbѰ2PH4oi&aPFzRDZA[]<5`D9'KWC?@ (2! Y'oy\PoIh)ST G"@w ۱!=l؍Df]C@8y ]}pTn4ٛ9+͒i!/D&5cInWc"b3BA~Οm`X@'@JMjlYeW 7ScX ,ud#5l޽1 X*2ymo}o|Ȧ_\_*ܡ_ǿ?xbwOVݷVIgW}Di7 2i4-=Xs Pk,((!%`(""dU NsOpՄ櫭%.N[p$u{#$l Zϐ~3\7{2=!! !q'r'Vڣ42 ;jZ$#yA_א0D0yc 1J,%*C26@r߶08Y$1>pNH)NN,+3 I F]2X. VqxM<~ʽ02v}l@ynf BH2)!| (6 d$ gJCDR<˥Y"ΨnTΰ(|8ʪRdZwp\ö6% WTcPD>3 $ jo;l8>7*NNF\\DܩB6㘥3sqЏ]HH"LH(ZQN?E_ch٣J[xx<_,7C<ұ  y #x%c]Jɿ4C'̗ORM)& 'kfVc qiQś{ςI3)b3DX9mv]@ ZId`[cAF!W0iIQ¾CrLWQhw$ "`RWZP%!K&32ݦK]gZ`nvXUaJhIoHD(bqt @x(jpD*צ2oP0 P:ل^c!y$@ƀR, Væ J2^;=fh>|rۉGQ29 ErJ@\!xJ)T#r>dTPap{A$x߫Efe0 YawuË}HAB%DѦVgհ:opn4?Ço𷡿e8_s _ozRr|3/ _۫xt܎$8,=='DRc,evDIFW*C]UK ܍YNi~Ў3eLz4 LcGۈG߱9&Pk!Nۭ dp4/XC-H8qʆWԠ4poue&xs;r0Z|bt*( c|ABU<&0G4LIB׹b$Y,&g"6@]4rK\PQ%v 4 P쎽E .,\̒%Wnuka|pͳJ~yΟow=Z?_wqwcw`%XdbnbEIDATKUC\* j[5!C9^`R0 &Q'Km79bC "x5 b7K;,؝Xy"~P:C76V"#Ze w](x$$n-8Ju]2\&$m@P0 [d&WSֲ1 v^. K `3t(csd!W팏)3#iuf:vGEl[J7jb4ɬ`fVo#~PK ЄFz048R1E @2z*K@0 }UE3;" [SD=$VcH:jVQ፪A I/d'6CEzѰYܾ(8NB#"#:ХL9f)lhPTKƓu?g?W/,/o ;~?/}|ņJZ CrR;IycJV;#Iq.!*rV$C[APP,`.s:&V5'ϟu"dNݱV "~E1$oydW2}9P5 \ DZ(yI™ >H- |SC1rl;Tt{SVs[5ta m@Z/{4qt S2O H1tF}!yZqqNp>E))͑w]/=8nwid&:EVY(>lJ#U@C-4 \ guŐpx=NP:xN9Z-o R6I cmuje32;$d{_D%>/GO$Q̹f P×­Vȹwq&Хd %U~6Jߥj>)D n_/ vX [ 9lM :! H4Mt[⡎1(+GkbweA:};?ywc`8X:/b|Iza<+ 0= dJعFsC&#+t?3\ɚ *}eA<enۮ^m1Ɯ_]gd$ "x=(c ED= 5$ԐJH2;kgr9F?ǷzTX)@6jcG=_XĸZ^MoJfIY0U4>4U 'q q2K1U 6"˄N 7^t; ? ;=R!m@P K * U:_s gŷT1$|FKUG@1'5",Cǃ`?z;[%b.-SᎨz^ ]+BBZ{All>~)~nP*?o r;uYiw׎O# V@do8D YFt 8Ԓ Ay& >o,_)ۧ8scu7QzCӂ~/٧܃?;_g/\8X~ݣ  Slo.Хmt+ꎜc o4GY-9?<<Rɯ-ԥѸ,|ހky(ջM]l13=2G6'VR`cfbڠbLG$A pwqy(ڣʂ@BkŔQ Ө!(X  T_f!݅VqC%o0m# vE*+Ys 88^oå1@vDUd3UD޽+Tzphc_byd=P"SXț9+__wՁ8Xޟ8=R9 T> 1 zj>v0׽N𱢰THa2tBc8Rtn!BH*͛M1{g*F Zk.|.j#:&E3!kzc PKxGW;mBƝ 1ái3YKyρ2ѕ37ޘ}@z\zӇ:_/VWLܱ=g遽јPC?(lKzٙa"#H% _:@_6NT*|T'A)I*b0Vrz64 ("Xfv*Eh~Z bB@#{y8s~v95^4k4:FVHv\B7/lpwx MͥÒfұۇIx_QYG(:;&][o AZGvR'R 7'!Wރ=e <bPaJ]5AXEI{>waw4Q+u#tq.P0 uy-8HO)) )HDoi~,0.5keSBl'17'TF$qq"H|v ުUWńC4}la2*ԜLS$s[fx3Q&p~Q!Ipqj!:mP_Y+Gc&:1><|VW݈+=-|6$-pizatR}^zO|oy/u̠bw1d-T<'pD5$7P\hmEޥyt ]JT`SSia*`ŭ4~,ٔ5MxS"*k 'U@5w.R?O#FCRҸjYRww1AĐqp UbJђ eZ!Ok@=< 0)E~=iZR-r잪kb]A+V1v v_{Y%\uR ^xΞQxqpmG=/lGzLA+^ʷϿEHJ]ôFGF f[A\Щ̎`P9 ' 6;$8@6 ɐED)%L zE|dA7(RLU2SLJ%ǜqNdܲi#m B4qZ~BqÕ=H0m&l0rnܙ ,E~y# ]mypC`?[x?™'W7QAukwG|. Wݗ{u/Ͼr,l-gvی,5RC3>.1tbѥ Fj%ˊ1^UBAˑ|)ArX%"e*'D6D!V4Vɹ7Hhrsw*nDU*y.& Y)%Tu3`E@YH c C)&!rղapI*g_V\7pqHb ћ貢!ΜVHȵnf&#t[ޛvLsQ2>SI/m1XDaO~ \|WKP{ķ^K>viUC/k$-0Db[K$e_G1AEd4uC]N8l0ޓnǰ>tfĤ̀(bj7tbD~XK k:w-LEP=)2ͣ|meZrP̈G^t3,u}ڡxUˉ=U y#"z5A]$BkH=|m.}gvc5>~~]#KGx8?lν;慃_}?{{'l/CYiˬr4o $|00Gt .T1r*BHP)NlW1DBb."C6%&ⱟ wޛ En{T1+J"vN Λ nm! Y/ (:UP9(*68vW+  I>^QmJ|]p^'d-؂ւNX(%>s `lkxJ4ތ_7 COݲW|xnUAUtyg}p͏~ wR'Dp //&!j0ϴ-~‚t<`*Gȵ᲎=GsgM\*ןYA%%<5>#)߮ㄪHY{P1d.I7>;AqrsƟqnCR# |6'㏯3X0|U{\|* *dIxNـVP)Պ[b%/Qu!$etgIIdJpEDE"GDJ['hC *.q׍9}p+q`@9 ě.H k%?g)Dr"(JvXi,8 VcƧMd C|t84kX8=0ƙ4f"A|\I9~ݏipsiA؟!T)_*ޫ;%Ok;[xST|)s* zid=!Nys ^ HIJU$"IIpN8(f!NJzQTO3FblO/}.E8o=GH+%PӲvvKFZ.0'M(wVKUZ- l th䦓@fVA8jJb*M둫/]a)x ^),p~Y;G\[ 9;aedV\ʃtJ R( pDC~\ƫ^}S7ܓ?W7QA뫿_㫟z^ˣ/?/o}30(e*Tڪ`#Bj ǐT;QSdm![aƺ,ۨ Ż1Fy_tH>V$v?1S !!e,@iК՟$߀ EPʜW#!0%X?S!Q*[TxB-Acj@$~E -*pp(]+h-cӌ\Gtb0װ )tJV3u-WYٱy8:Pj']|ySڅ_я봠^+~j퟈>|x?vǏTbk):SR£NPb hX$m89aU8Phk`=y[d@kە2$[ xMT)36nU+0Y26Ud(%w= upfڃ(VL1Yi#z$,GTa,^ N;8: ơ]"ú=-9HAZ6[[/W9~I7u n]Ϊk"ۚ1 ,?ÓC7@@KAĴ9p1ueL=NGdt6.p9c%;L2`*_(X q]"լzd-q j29¶B<ԙhk%lvfז2y H 9Q?ٻ9u:n?0|&`}\Yl#vh T 9~.6Bi ̣lǎ/zgv !bn^~ 7N<#< fmݐp:뱆(V`y(tL0>J= t'ئSAv"k$H.&M !QO 6&J6 P-wTFL`8ւAK8S /n0M)B5\ <c] 'liD# W>c<+P9^cܴ! TX Oi 5u0<9"Wr :Abk,TY 5 B扇Ѓ)Cˈe»([`+_r K)%Eq]jBnB@Ji7^Ont&D*EzPt3ks_9Jf2j #ČpFy+S$Er,tD)h=aZuܛ׮WG 4SsT%JwpՆ@Q=x+_r >w7Q!wk1< 7ạ5b}/,H),a8LCVt47SʝҗvrcĒs+ չ׫dBtL&3[ӃMљ߬a53`A>(NTBS)j!Rbv`FS 2(ˆUAJDsB%Lu>'q&lH;Mkxޥ+Epio ]q< }q`0ք u$qF}N(aG>2lÄ!m*a s1TMdp/L^a-xIcѝ!3жHHN9_I OyR^lw(n:my_̟1*_\(&( xd$,=$jV〤 %a(P)Fn6N BJ^1'I8n\o>s^CgA!'Q1[Z;#x;'wvdGfG N8 c fܙS#3Łq5EE ٫GZ'VI8ȞC?M?֗l׼~F?N?$ӂar}W}Φ5>p/]$B6>/vc\ Yt1Sc[/#~|+Y|SrX6<$"Pcn|Iu vPlc]}qtÃj}tHBB9DFFV~MUc{x j oK:86o2ri `yR mʊ&sw'^QUaWGwC?([,DjxK>6-n;/-dI1d65 o{81W zo:H oƻJxBSvpKNmפy &]R!çn<S{!6Tۨ/&c ežqm}[~%X^&y Fh[C >ȡ ND)Z7V?ړ<ƨ^'.2՘=BPc(QymPt G| 0Y0]P#U>,z}J>ê[ > G}Q0is|;0A%q,)K4 o|U|1^~3xn鉗 *}+T :'{k@^e _Oچ:@o h܊.:Тe=MgC˾y0d/s\_Ҟqtg']qt&TeSEFUJMʂ^fOPiᡢȃF8p$V\Dؔإ@M(HIxpG>&_s8R4Jս;HbTErO]f #ؠCYEy>1Utv#/f:()HmUUܼۧxI@vA+v3znuX`S2fXڡTt&|Գ3kx-AD;m m׾*~WrACtPZ!p6ݝxŻzѫ:?V>)108L@Qo:s_#-]½txቇ%`+IloxUh+E$_ib1o(DYe')2 sL=Med(5(XኢT 6<)(q##qwtFiqŕ#=!^qCW@"!X 5 rRh^ !^B訥jyS$ݙk-={ =ݗϺNGח_^ W̥CYyPlmwX@/!Q-Dp]w*ܭwsD*LТSꉂ7ڌ! ,Tn&A )SxU;M3hYZJQ>{|Qf?KpTI4+{|&{&z0ХH rfΒ4tf ׌|a]E$=q;q~ZPDf7!uB xaq8]ͷ?tO:uvxړhBkNB$~LsHm>VbPu? >Omw܁3Z<HrlwpQ\uA F :ڨoS[+R4S4 l d/{Q ?wviA_A,RwcO{ܷJr!\SLk~ZMmL5ԿJ^*Cuaó 5Gbo39Y*HF}SK0U-p`nc(X X]F.k?SCŵJu}%#|,d;;f!E? 'bJ*6"( & wH6R15 \r9#+ 7Ul2@7nHeg(P+#Lz&P >3ƕ+/meFm.³ $l@x-+cEw7ޤKd_Ý+K0'FW! X 6.>3&d(=S֐Tqp)c̃+;Sh] CP\ t(QFC8Nh`cm+JaH[Ĺ`p 6U@#Rս"gAةcUluVj׫$RcWS*WCNDμʷaԡ(8 ΃o?_guP盱3я+ppEܺXowMMYpf7cw)M zcLr K`L֝GQ@fV)X$N71Lt)s)Ew 839.^V!]UG'J흌kN +ehJf@ݶf[AP&p Qg9ĉBCR&T:t~ HD|w*7t#t⎳ym΅3NЊRiXUpB:*ЩZ3<qlC;5zUlSVg'Q\2A.m Ǎ.) 6BŸkqC"KfGWLEP5Fp=6qtp/{ZPu &_ }r |܅OCwmUj ;Bs&,&PQ%.ϋ8\*O JGBT.K[x~Ei  94HP)itJRFuk5HŰg&䁜Y iJR-XWvaUg2U"jޤy}4] +PLy`!#Ì{@Vk?::fǩ!|ϻ٩9qk>~A1," tLl!R?݌ļocVwՄ*C2IdM3A$= <T0@a+^5${C12 OyMxnCk8<\V 6l ct6\0ϻS>:9&]dt2`6ܳ .#YNqL6)KVבXdu#&Ŧ$hSݬO)$xKج@i89Td;>>A@VL_ ([;.9U>6@]s_^cĮtvti"W ZrR%h9:jl(R<}e8SY\{n#:?һTܶm;__?/_[.nYmA3s$5ݑFG7;nsD8 bIMUk (IE1Dbf!cѝjT6G\ŀUq }⵱Dw^jtJd,59г]v2|bń|v`cGEU=(lsØq՛[7eR7pQlYZ!SK2%d@:e?W8ar \&k2icnI:rq`t|ZY!J81՚Q%s*i2 gv^၇CW ǫc$-9u-<7[z.RaL"D5Cb1yA2f?_xLAp?@ZЫT+*ZG6 D::9ue||ow?p'`яӏKǿ?i(x7gQ.vfT$@;l', CY3 uzc.:6>*1ړ4?X"zjT+ t]&@ gŦ62D♧;󞃄5dy;L’ Fy@qT+J(iɮTOUÏ9bpqd@|u ߐ˵|FalWL+dǙr/{; O#aY 0[ Ewj"_!6!aB")8=. ?;t&pD繌Jc-"T_pΪWHp:n|% :ئRRsdLPt ,^QTtq IqoPy. ^? o?zlCN8wÐR ]MuAŸ[@5T,6b/c5+7Âi"#wd$eB9}s3$6X8u`%n{W??욷pq??[ݯy!>-ˇ]G QYV,CB1tyUo T(fߣi77DءY$L)l1- qAyKH lm9q,?;Cd8;0 3%lm_ vuE>n9Xy55.o =.I$e§= nl+=&]D$ّͅwwwɧ1'zكeX뜸$"o*=|Z 8Gdߐ;Tq#&tn 5-{n#*ROJĞIS0qaK<&zح凞%c3(Aב2&{QH$ELT*JS$ڶ:D/@(+Pà- xpb&klfcF.MvΥ}}$%3UŤ\r_g?"HZ`SN A? /%pϯx`׎X,8 ,zC+B64vۘ 9{[E (Bի$ؽmšPJ'cܾ>ѯܣ/:fKt-mM]HN Œǡo6HqYeo;rՓz5cTN(lQ$5ZGlR#)[o w=>O_X3M-7~gZu͛'и\SΗѪ.EE'D(}DR"˔Z}ܑPQä~0%ft-jhtCj7R-F\_%ȳLkwB[0b;ۊ-)GqMjN[gQY75v.TK#Đ=I$] s8TCx !M ^ . rv,v$j oyONw4;z-t"]'bhw 6rXWcȇ·#p|]9g?*ΞtZEA"%m }F?9dY#m2[I;08P"O(2 Mlv⬇6)ߠi#': H vHb u2v$pxR:"aCl 9' is|+? ېTU,jh uEEx5fSxAT wqX5ݩڹ;Ni*̱g<(<@:yj7Vz6N/&;z%)U7?K7Ggv˞( ^TR9K Q9+6;X8j|WTLn;i(7ɍN5FLcfT \]%\>p\=X i*/>C\,@hwH[EO~7߆t8xuuZoƫ~)8׭οﻺǏؔD{,2Οq,EK %"% \`c3m.XX_~UK,J|Op{9>؉K1gfSsq{RU}^>F1B+eх,u9f4e9S 1]XvgPd>,!vxP:CvHi lm+:TgrNm?K'ݚRl57kTWfgS±8e.x$2UW(`l>]kHTcƃDNTK#B6h甁o<]pڸ; 1KZ$iPzkKw&,qs%uT!tM)뻄3l #m ƱPS{bN[)BtTh-!鍹5juÈ#.`v4<  }ءHZH~S8o#,}bo?x2 %4wZ7 1bu)JeoR(Vy84SZɁ+݉{S$IhSp=ӂ$>"⎫+kCz]*};e\ \3K Ci$xj8U[8ZGnO|?pt71zzN tc›>?{pyxZb qnǰWdqlx"j]e;Dg!AP%Ғw6Ҏ`_Ζe $.̃ } >R#mT{|gPz~,Ĉ]DbscO߾Xd>ȋ7E!ޅ?~ѹK ]8FS<qO_᎛60tkc;g&C2&v摴V287C%DpStѭK p )-a~+;$(&C)LfP1>a"ZѼqTg#(3F$ |폾a: bgqn2]a6w6j.p*IQCRb`23=lIf5qꉬ(`ՔBhLhwa<,^=vz|Pqq|l7ķZu,4g5^YP_n:^ytW;~~uUrGQ֗n#N >?/{{bҐbw͂ GcRt!.p+mcb;m.ؓb]{b+346;9: g!Nc7_;P1t,!K]85I𧥵&|^,4'}NopД lN+]OGU /\('ۤ(sW") 7M$:fwK@LzP&RÚOP͑&)74^3X Xx *)2Hx7XE/? OK$Xn l[|?wt[iN)Ȇ|i ) 2|8,g@x 'L!ϮO,&G0tK1pq8<2qυ|dWrEA bREn鱮)>oaN8X-/zڅSKuZo߅.wxϹpVS6!~եx"ƖfE<^zczjSn][Α"F#ΨI@F$vwb)_ tPIj}۹xԔ9Tv i;Y(FTm!v(/FL'c с9rǥԓq3!ǡBOlUFAOǠh0W},;YF40Ma{"#]=)"EN3z iT*Zi' !l]OQ1N>!:`„*=T,IP9NO UaEFM?~M Bܻz@갳- ]@SfgmбXWY"*iyM''k4g>`w m8,IgASLW |?8^U)"O*: ,o V }!EOthU^ujE%v:^oz=yy'xÍ~t^ )9o|ۿv.]x=>_t8.i̮mk+9gX!VTB%kmDGmP"&tsA4%jKuwsY+i:/y(Z*ٍT2s0 c`Ƽ"X;6!'>X 搻6,r6@_QcaA Rd[fųf" xVL %v8Z=ݣ*9MM6pi0*H6#c7Pa<ѧ -|ϼ/O4el-7U ]ōb !@T!  }#0|g^:6%+) 8Ǭ>M~y1dq;G*B} h-rl8Xdž͊_:{` N& _խ=+$:b5k- ߸ߏSrp8H=S^n~w|kWG|xO>޸RNT;plZ )qD$c*CIi,|:* GVdvu k@؉_郬L'xvG Y)SD!bybmcVWL0gQ7eN;{aa2,sFSh\;t9a"iMtLX~iq$1rUQY)rc?g[~)(ViFv1:y\8&/:˶BcFtɧ uКgG[5Q„"z7 7֖'ZrDQfB:1*]cˁU =peY1D1t+֎KG+6^Vr##C6,!k|̫%;EV":֏t/_YiO.~p8=o\å@oveOuoq9ۉBԞbu>v&T WZQAtЛ E^* Ƌ&'2 \nHmSE@qc' ÈoOO924 vaAa\w=5 Kq~6LH Ռ`S'ɩNL3sf;j%`" j!I\ ܁kG fe `q-U/ȩWjVRr IacU5;7.}pK.\{?E޺F?FO봠>\8uIϮfDe: f0+ yx.Ac=q{f?@5Cy *D)r`7,g|9B-"3b]'GIN`%tm( KX6UEJiib7v4ŀlG FΞ!j5])(kk{NB`QŨYz30KY/ bvM>qlHq&ToƿÕq<، NpiUtnʻЀ/u@]=D@M$HXx̀}=^6Ǖ A3&liBP31R95jAE"-N9!w'>s`6$P @AJtEqG(c̩ EqSb4tjej 5vC3T2pszbK[jΒW{Gi,0rL!>?A4c8*펈+4ZmftR=|߷7}ѕw}=~^iA}`70,2ΜIwخNQlkF=pL}VY&pՀD5s% QTS;IVzS-e@u ;RX=dTWZE^1y Iu]y !5{S!S"O޷a>d+Ujz5 Ե:Yܡ- 5fhp ? AlYd9ղ"35 Y,T |VBGXِPVw4/5ʔ`UPr^J\#fg_:wKR|Du>dve0nSA( oQ A \+ow1N8F;Il3WFI&,+{[}l_w,:G ]A*+GkNֱ/']@'GY+&6))bVzm-X.>.m$_{~|^iA}?蒨\BeӪ`)$ٮ |Qu:!b*?"',ml"u%&4v.b.>yrגÂtv*Y“஽uuX@!݀q~9f.{If# s:E : Ye@R]w(E{w2NfϬ0ͤvWkŵc8WEaDc9($)͘ap{~g_g:1S8w 08g了]I$Hh'+ŗNT4XͭP&ovA*3 ftXARB 1}NF!\hiͫq|s4=H7?=E~]Zd,tAzQV_vGFȹ7k]Eѥ+g2ID*2Jn+o-3jmZ*&'lv̩"K{(∔V-e;%v51--EQ,7^ck~,N; Eu̹6\MBӈ 0GGEu.Js._#mMdZcaxp?'>Q|KǓv/a΢!`'׫t(f{ J"H.b}`xy9UwPXX byfCC6\#q$-򷟍_~ Ƽ 3D; cgXE3R\ Q'Ҧ!3FN͈b*tVtj)з߭My%HU!UL0"K$8X+ Wi y\K!񽰉Ŝ:F |LteeM|D]?w_}'c:_r~#{_ȥS'N,D!TT.VIşwI b8+K;=ƭXF28B\O@δQ/ǵ bHt v)f雩`,][=U>$X8~&S u`hZZۻZHz#v<<9R#`KD+إ1ly&Rr<ޗ!T `Uf^{\8:zMx;qI;v7#}VA#!n}dTl:{R[7~BpcJ ksUKEХJo?xn O=rp@^E7=y#㈱EܯyIJ*͐(f~~xuJIBh\e zdUd`aU׎{qA Ą4)d%-%C*ߍs.G_AڦBjt{˻[^FG@^ߺя:-ן /Oo?+\]#MzbE**áw6劝Zqi؉>,+찛raΓp!)J#̣TٲxdO$[w(]g I=EvMgg] 炜>\1OOIIp&5N}̘Db9eԩPŶ(kNXvDjZ &ƨF'˅0A LSЄpwH.E t<]@38<~ӑ5QrvzˮE%gdd+Iq\*ud#0CPǨx: *Q*3,*KKE.Le@"FA+*ǣbȨHE+n*ް=<7Ճ/ĢS|2p2Ѯ,ܤp,~X'49qlU4 NŜpkV50mIG(~QC5a*+QH5S({t8#^7((ux.wG)YϻOxx!uıބj #2x%vP/cJlHZPC+\O e$8+}_޴W]m3 =D `gaF2|*ej.Ȏٱ0 $g$ڂx`,Fi ]fܫpMNGJ@> ]zւѱ_P+#*wuϚ!i \C3qȠBd[0e/>\wlG^=Koя:-Wg!ݴ]ϯ?>8KP0u4@'CB|`6ǣ: x؁>gFRNT9֞jx`ɀ/2Z! jaqsI4p.:ǔSI P=C\0*QaA*VyY-hVP;RUnm|@ h+F1IDB`;ߩr8xX$$ 3>u@[>aoa Q'C|;{7u<2>{x݇[ȝckIH j*UP6BzHEw [U9E/wx}x݂"iFt`l),Vcjc#0QQ,}MW#X]Ӣ,B*yY]:$] TqnriҋawQZP+LF0oPN]`Ew^ $}ؗ!p1䎰Ry&){߱~~{w{봠߀hu7_Yl]ӬRσ#ZhUz%#v 'bTG@`hjsk[(Qr.[pǁS 78nlJ,jΠq \g%4E;C2xHo~}qsTk1&v:'1IcNM.E0R.J;sň\e~ia)I-iU8jԄP$3hǽ6HA QfY案.ΝT ĺ֖fA^S䙉~2*#*-1Rp٥EN"D*:Lb[J^co U5RWҌ+i\ğuuJXI~B+#¥qr&IKe867stP0KZ%~` cJ)(mnX悬qme88X% y5Y' -U|bXua&Opt$@2rX(vw29<-zr@Y(64Vs"hʺkuR%Rj Eb*a,@R)4MEiD,Af9tC9i캎"3y=r6xbԬEjJ'|M߆q(:4g.w]fdsqIׄnF~DF5L18,8fS?7ީ 4 ]8e &y"?;Ϭ<3 P7,8p;>Y[B'NAL^+4󋷽"eD*볇ZY7B83뺉IRc0xͨgI@bLSޖPװQR2db96&882lƊ2UG&0'(K}2 [#xn F}slCM}xzM8X;nuCAק<ӯo>|ҵv0$tq!~ n6VhJLd)(`is|]0)IIm;,@H``dj!JE̩ØuGg\]stciLCvdՁ/srl { _<}^gKLHEP*Zy@Ytz9T*:9N;K`s]CDZw,9|<ؔBب|vM n2rSA18H.Uѥ4Â$/pH;4@5+@ڻ)q!8@x: :ftBڲ(ڊ*Ê#P7d_Μ-k6:!VUo+}<>۹?nN\~Ӎ~^iAA^7/;O/޹zT?k&;[:  r]mSb:dkDI3t. :6N(2Xk1q;vpCЫ(0j'[۞>p@+ͮ_CS 茠='#RT:^ONnX`L=g]n;zQ<ckmb' K~ \1娢'WAK z\EwrDH4>QN:!lD P)𡓃6}o8 puEO2 ,].x(3%[$Ak k*̌4Ei΋9=/&;!|TA^ & c59VqxXo@[i*@^A `蚒:K'iff!]=i=/` `~~^$iAA׏ؿgKllx5ꉰ'%qۆx<@6J/MΉx&& )rŋ9r @O8 稼8i꽹Sވh-=b,x9Ǎ'A"u͐DdQ2kTKy* 8q̥"v}PLsұqtJq`ks-$i΀:R x-zo5)tr5nuFy5FA PmlQY *-b>@q*`,Y6wO6ke@[a-as)pݍT.XC P#fulc"pQBм>M;n痆N qu\ۯ8^965[!N':KSDr[Y١9Jf^竇;>|8zuя:-7_q|g| ՟L>K$^GTiˬdmmksNS4{`ZOSK(cj#v[gѥ",zSA{$4 )4 (WD8K)vB+ [YXhK0UTҿhHn ;Rhl l a+Aĵ5pIDAT{ Nh tTc dD,sO"= < %{C)Z1zNqxKJ`SR +h#NEfjwS9>ΝttqA?'70Z>>sṾhBJ]@|Gy0@X^rӀ/ܦl%E2,8ͦ` |ЖfA~):0hEhv>n5vfV9=zp.Wd{7SK}|}'~^ka i˭i,,t󮗤Vα!5S gv{lM%܁-DjiAP<1r=t Za9V^iLÉ\fSкSBZ40c;%E Qaϡ4@rҍ1kMW fx́6 )Z aXv[ 35/EHZ4ӢG_$i,}nxS-3+QX9\In :^x@sK5H>)5TN9i|.`!Ióq9!0%Y%Be⽂_whA=$nv켏:{`'z|pHwdl*4JOD=x#TVshf_$ݍO\b}kڹG^s[uZo7<xCgSR"p Pu#A3аh5)ýFǮGhJjD~x 0c`vR4RQRJaI%S"DLq{XtIgWSki9lz0fk!+:^gv)`N„fZl1c[' гqv9հFWVvCH1#\#ƕi ?A0*>wCff#iB+6IM8p-'”<vjXEtnqDaR<$\Ȧ6EE5{)!AE#k0OqZ/R=8p88Ʊ")|E\Nb:To;|V YHA\| v|muޗ?8IRKGc|YuZ?~㦅kÅm][|aAN^Y"7iH Y+NG\FGKIU D8AcZoਉIo=Ih2Df'>+Q ޑ#_m*67EiR{h|MNJ4v0$xյ7ߣ0X y,U "HmTyC&M]O´łR;,Gl'XE('7O >oެs^D< p ')V&-ݹ_$&&$&bB!T~i:RdNI3"5b]f<CaQ؉F`b7KNNwyI^9'dwa{t1 S:@&"Qc)O)idˉ=A]by8s<@i|?Xua;'Eq"U!c :֫:N9u ]*8Ua>9[sEx%i PksGP}c:>DӂArg>HǏor'K[Oj ;pq͊vQB9 JS:*ۛ )U١U^ӦWQ2c`k8QwңdGIX${ k˄a/R(cz" kCM{iwMWsSs*'nz'Ӥ8tE%:(ۦz7M-:0E B[U`gp,uzHq8>X&ZCaWnJ؝u~9t $ܹWT' 6/Խ{a|-<#v\=E^iA 3"#G;D2wT\*g-XloA7WP͉oWRkYHM6Vf6z(1>d)eQ8'LER mzYJH8Q./Jf(Ӆ<)Ϳ,8qU*%I"T5gǝ5!M1oPfYFt ?Z4Ye3鵏 Yo~kgY&rpmV.rtl,4!3qNl\^5li)~ _ ŚK#J-)!`jd6Vfַ 5r B%ݨoSIHkTT QtNۙ'VPY84.m fe9j/̖hHQL@*5&3gw*M5Mumܐ>!$V,G(DEVJB,}J-KD-KK-[ }w $=t]k1?Ƙk_}jT.͞O}9Yc1~2!Qٗ~>F쓔w۾e>v? O}l?K, yS_½kqs86黳M32sԘ젝O-K"內Y]5kі^=W~wu7r2 Qvp&{Efh,1w}BIe)B-c=a]K&]b6MBS:פ:3kHŚb?ŕhMutO&~i`.瀗tR]o]/Fc窗Dٹ&Yd'$֭S!Cx;u*^zuM=.UUtڛ&]&`9vlt\խL*FFmeL {l]晣[+N9c@ 5eڕLZ "[|q Fnw7+ɏ, /<~=МΧ#hyϲG=Q;_ͻU6k+]ekkLwvus՘n!"BS+|Y!.(gL߁/NEfمL`(5q!'ZZؾG'WNX282UE~(Ⱥ31h/V whVWļ!N.TkB5Oe|`#)|K)w¿nnKA"~B20oY8w @UUn/*(r2ZMTbeD?(5M FE; Ѷ0gPQB`Sfcd@58R/2j}vv>Ym\=V oawg/_Y/:u_惰OkZi.%E] 'lf 7PuLOԕ+Nj&H#ؽ@vtQ5QtJdVr".*1Z!N.IغLiv.2UEI}m. F<ЏţE8u}Tf=sKZ; AUD`{\/8uxRsDT}J-ӽz]$XqE_6m njŧ+)Obxs Sʦ' &*V6P0'-u:)  [0IȨشH|rPSbPUIp5q0M@Ї_J0G֙f4,Xt^I3&$4A9/5| '1d;$[%oBtzl?C,<湯zܵh_qzR4U8w`<bj"0gOގ<Zn" 6V>^sƇ!2@GNKmE[a/B&XJA ޺]"X6Y{@P*OYns![`>iCƙUO˾V,@Wq2uکoI[gS[Nkˮ|l0U/tjoV(q1b5NlŌ}wZA(b<޾ Y&'0@Yy`J쒔b ϰ%х'9c)~"ֵ+Ӷ,h7o-pq"/ ľ+?*DD .e!QG\el\1fh iDL-" ꠨]^TH8c#~2!%lɳZ/1#s7£6{PC afFU'oA V  Ƨ<&D",;FSr 6.vmHIS@vlbGZmN+fb[xējOcE{Ͻvy-ƴN#0LviJE9~Y3{|'>?IΖBٝ v5nqڛT/,`䯽[>H˦;HBbvYْR//l@Ƈo`v!`6!(1N ,^o_udU6\{m^͵%nW @J CXk6m8')&tw#^C*d4Q9& ' ;@P Hi_o}=xLvn>ۏ2;˂~Γ'ظ1uNʹiG1ӹb8ml `)<"U\k2XOB. HvH PREfc{"6Ȓ VB.< D{<x2n]OU(}QG+6*vŽ\AnEqumg3"[{G(5/D}b֧~U@-) Tr &NKmI+r_Cr[œEZxŲ#yn;~0M7[wF͢O+63/ˁzF+h{\d_?'/̨v{ VbªGSxvydn-@u9a+.ߗQu v˵@5Ȑ[;~r|^`װ}3g1<_gYп绞`uy&oܺSFտ?W]:m82V ki* ށV#),^=-XQqqO P rI|ַ^g[]'[ }W)3r n=#B$xU޿6x9pƘ>`Bc:3D. vWqA.I?I-Fw/d`7< FIP;KXb{Nrcn 0UR9 0Zja :6*Ih?}g.-u$`JԢ `~Cez xGS >y|$_ꗜ5k+vf^&y&ж8>&f5c|4 |[fo̳ b6|,=-k0;.Eس1WAW RH4{|rXyٳMe{plh )p,9߄;{=6FŢ4@z*=Dݫ}LSAe|}&vyQ{I"ijoH|, [Њ|K3yF[*F Lhf+0M69ơwRr?OL#aѯ&jJ{ b)$%((X3BlMS{$c2 >-fQq |Dzʥ* e},/i\{ୣ~-ϗY/y~ k1^`<Ǟկ:[ǩID k{P0d6,zTes{VwN7*T U_DLV|<+ja1gx;RkHGzvd)7UŔտ"OB.1P;f V_> _q?Fo*Ŝ)bmQ :Z޷+]TWA'/_sp] *Pe|fmnIT%o؈ioꅛ߂fUoa0viJyq9!sIU2)N`-o:@ & a{,Nrȹp  5h' ! r3MCrQ@M֭?FGh-F;<_ J8+ǀS{ՓN?ܷrp`uE1(A|-mݙzadE@!`;e5V.gBk\"3l)т C0N{Xl*'BEVĢDZ+ޅ V` 4@Ю+ҩRcQKiHnƧ.42/bUOO`yx68Ŭ-?Ƿ}에}lUc=@AQ[ (L+g`7ls#)xMQgEv0*ЕˍleA=¬KL=!#JCΓ uqY#; `b@h:5N(v4a2頩>))9*?WjL7(DS9ŮS~}'1= &ΉG|e8_5Oc<ƻ_{jk2PD5cjQ/f*Ee1NJN`1Z5upc@9*(KHJVSUMX`UCR/Ŧ"UK 1#ۃ͎pm PTw&N5[_opkYو]3|ŃmA6a+C׋5`vi.8АO(}T{ʛջ`R[Ku}zrAbAvB }P&WRP0v"3ՅvfͳK ;{mxŨScֈ7Vdin*=1uȨY|r,`7gl*@;{wOEwֱ-,;1s#oN ҉yA hDVB L]' vA$FR¼(x !+5jjcxe"1 o֟{z N3T8FT 5=悛τwB6r뤈ݡo}53X)qp0`>)BO*6`F I{jjE'~"UwiF@SQcǢQ01N~.RqBG. ؇xb[Xט=\0cn!#@ZL\W1*aɪ' dq٫ \uM;l I\(` ׸֢> r$O<\xR)J~w^ UTtg؀H^g[g^/qu ;ʘM[Sd汧i/@NmK<H9{h(צ[~4|G~g~m.-isϲ=?Edooם{⛎LV~xӳi46,XRB #{"iO#R);ad0]T22qx|w<  lg{B HwQ)Wr]ZX@lߋ2u[͆&?L ^f_ *03W'2fakw5 cc$%~]`44\-coꙏ N[@e.Y!k |b/.f㑷ǡAuelڨ Q8W.|E yZ$9hSul-޽. 6*Q+1na ^J]:+eP0 ԶvT[5I% `i^ Q^Xm_c6>*~/$3BN)Iٟ;?+2ـ[g3eS .bXE&=NR4]yyq 5woq=(cM 08(k!@>wo7Fظr>U;gy?˂pu$>9 _UsO + 6 `OOyv0hw~pW)-,Y f@`GqC h6`J' 2lOTUh}B J|{Yn:<`Ŝ\ŞQq&TA1BS=s@ɑ_zLO,FXb:˂w<Op~\wr6E{}PWBr `j`"zD7U<-b3˃8'Sm qt={l ˨è_ V`VkD^h?' M" jB `BRdd \7ׁ]Uŀ}>{ey%.0?o:y̫]h}o_W tD*oMZ-״)MTp͸vԺKd9uBo Ɩ6f̦YҤ[ˑY~9gMe3VMqPMa<ܟ~6WqS7,ϳ,!J?o?5k~Ĥ~XPkkJRC4ut4uU ê`0srv=-ʨԊm_$Դ$56$`\jHB&Qpb>U'-gVHL*dߧS:LMJa7EX^;vG{e{1*X$G[(ќM Vi ߳cWbeS8*"O!:+KMTPOs {cQlmb90ʡH8gEU悤 ϡ]VVzKEiJh>BkzvEYEpp_+( )}(W#>ݴ=K6*;|Q7jsWCu[#A;u-r_p-_BF3l-?/we.7@Tҙwg*~US@XΒǾ<_gYh? tėy Vl dMG}x$ ׆ݓPEBI1hB.,[|/ XL{-ϋ40vX\{\)\7X]_t44G*"9f N#*vgj{]mBPr+ Xx*jeTorP`RE8Qy]EIQE._.o[;LnOrЍHP'$- W?&X.藃KN ] ߛ]<(#eNDn:^j5ź!:=з˅vg_Cn9ԹV>D)#8* 2]y֗>29*;>'gyx<7\ݣON<>=j*TujľKh! `##`u-'`5*Hax3cPYzjQúU!J|\lMV""7ob^Ȉ d18|}f:|?o̸*M/:>z^؋n .fzTVD ].sn#ٯk2!7;j|@&ls ╇ʖ\NjyEg:/t~!fH[EQ+}+@H=gU1o^k(^>-BiieWhPE-`AJ8ag1et}tN3BBPgSni))<}O`{_ +;ɳY>˂?q.xfas~b\8|lN$`0d` D> G.Y-ZB%ew+2M'C+@XFAsQ#\M~GZRT,SfoNmT*65VֆDMMnNcD Bg;E]0[-& YX/0cib*Mrܧe%8/f8$4F"++ w@ T~!Hs-5 \vqePN؅M 9dġj~é:6m~^sh@j c=Ĕ|+0(p2dNz=>=; 7duF A2A(^$Jlu^%A̕D6]`6Ј2+ O#KKw=d{3#X(]+$H 4tDzB&FSӄ)  rV>58Z-zi\Zk"%|Br[^WPL XRӊfeԎ(=}>|]fʔ|6V2pMzPa8. 8MS+<˥¡><ʶ+_1)#p!a J0oc֘;UMgWke}yBNlg.6 7?}W\;3gѳ<|֧j|~kM~tzm"b+K P5!RBBLhO>FEcJ (3 >(kx-cvr~ ޥ?C:Pb|%1S6Yՠ,o-dB /~~B[ {);EnIN D5 bݩ`{yybKkA"&dXs%B4x)[^zr=!Ggy, y3U^*\'&LWx `cژP˨V+E E 2JAI̎Չw'a<mW!. Wnt ؔu@UDELdFMZ E7[%:~3e6ك|e} uUay߽^j;}](nlKGzwg_<5|O\&]ؓģO\UlRE~=A\-֓'Hb&>bd íF4gAV@A_\ח=/PHrǒsL*Ѧ)(]Ճn`>PGXrËF'tpLQr_^3::>bwyPTP0slWۙ;;韦Ջ>;m@\h/_/,m82\:ef O_plTqI0\!l +BXN5C""H@0[gtx@mXmp O#j5#H,%ԕCmo}l\s1{p8Mʘb]bL@2Qlg _0SWfiK}umhp 4u1.׊ŰY|LNٮl%`9~\;%.g9|]){w5 ~P+!x>K6r]r*9 ~x@ 6}0'Pv؅+Q~q E_fW~/0h?3en](_bP!c vxе 9ͭbg0QF"e-k]vs@cy~/ǵ/9^L/mgѳ˂~g>W 2;?{lThV8`u X[1q*0Y(.P:O~!\v?}x/E9ehQu\Aà x i1@)5)B+ 0Y=nD\ =wA7.}0> wZַ& `.VCV(Tә+qwΊΩpł#B4-\qnX(`ZDo䲀Qwì萣ffKӢvg!႒Kʚz:(r&TQWEPYb{gdwITMҘr<M3XQSuH%(0Y@DUPɄ@N ӣ7?{:pfgѳ9& Y]"0(TMf2 88/\i,@Me4:>0&>KnU߷3!D 1xwltMNQ˾ŋ -̦qicU +9<'Z}@_,tgXԡ=G6Dq@3 W'Uza^J.? /ab6 M(+tYY$\ ;wO- w~:a]q좁&Z-uM:\MUh*O& |[nZG"?3~" 3E@>7y떗Pm{7,YtGD[S7?ޚD$7߬ۊ#u8.&$4UF~ݑ~৾1O EjDF:JB&\ lLN㷶5l8N豎^egt6|gl/+kPߴz{&e[CE&|#: ҡ. 9f-㒿/46E`|Xɖ},kٓld])nAN2Ѱg}]Fݡh`-a&1.%lBl.:+~$gb`acs[\ z -͵JH=7޾6ߌ@hǝ`/;&d d$E :CD=1[d&2RACSb( U2/Si{v++G 7<]/]пٯ{.^GvGNM¯v `8 X[a kEE 02d0%41f;Nx~)Br~65A rlm4 ) @$xCnDN2b]Cg GZxf3_4CY96"`3} )H£+.]玗͊ڛ`3 +Ι=kJ[@Aeȕ~u&/f_ YkXQu>+:Q0bQ}U#bQւ$&~۝FStb>|+{@CB-O#D,"OK|tDDĹdze疗{_v~3B; m<]/Yп1n qp+ONUUXv`Adc<),18U tQ 0A:?l?~1ZAw~,HLT5{G\C|_ufD𨇯ō$P Ḧ́XWhttdb6v 6]txK ]&;-BkbۅALpx ;onpcڦ #.=LVioB)c;o(oNcmC) yҲzO;b]KP3))Zn[pF 7gsЅԢ<-GGL^Ѹx!Iq`!"я{^%z!ǃwPALfA#;9-"̣쯰3&B ;){mjJKʼ=)D:1m;pŮv!]toxl`Ks,h@8mB Ts?r=?(zW#f؝HcN] "u8,Q>a()il^}gh{jWvo08\gѳ<9_1n 'Oֿtb\2m(HAqX+)BI ܊}o! /UWaP"%2Cj1&\F#XuTe$T\W _!G+hpvBU fYpHz5QtE Î1H&],l7*m0P6gu o`TbL/rF#Sv C]5{W`vY-S 7^v/.^r8hE4SИ:݊r-'ܷ_@sXNE;ޭ{o>FebXQ8Tg&'! ذڸƇW95`X%Tik壉`6Mڅ%MfvCs 3 sl"g$AG{뷰~ńh yK|圯>VHC\~xIx/\IPKF@#Dk<$@bc*f[˖i?C-5.XW>x\Pd*W&DpyL|n*"+SgstVdҋB!Ĩ 60a6[$:/S&"WHDh:)KlaijfbgF{t0!Z[\eDT$WGMA}/z~v8D r2Gh 8SVvI{>@ݸťʸ |ԑ] n~-PEWYPYa/k.ۥ)`+1i8=&YB:H];@gH;< ˑ}:OɉdCy[^r؍ vO~~,|Aϗ}A."+|xktp|Zz$,5c2V o08oavA[7^9J<1lmES-:Rj(_SNp_wV@UF4M@,j@ţlzAMl@F &ӂ:RkV8o=ؿv{ l`@`T S[׌:/~Re]x*+܋+dnk1<]"v_cePpc"RXɹv28zu" w1bB+V3(%v>Fw(i#熋V* H8=MY\6jsXxo?k!Q|7n#Yl!ܢ?u_൳bwG,Y=_v1O>q|pQk'śzQ"V+&%+NA}'ZJ"+ rSy?K-*thPhFGU8hG <"J K %F@)~l]$y'{-܇tu?y?AB,9 Y B 5Ŷx*@A{! 08hGq1۷v8 |!Zg ; }~w텐=CKrZ?^&m^$4lɉWFRBbE;-07u5 wj/F,vueDZ(( ;l0lDQ{/c0%ޕ!@K]eZ(cģ 9'H-Ef%"3P֙-ixN[ԜM" p-0? 'oߋߛ * lj }(#>&ЎE0:T]SS/W\|ȡUҢ r!T#H`qX1[q nʀms!=܂y%乗[j:mc)^ݎhP{h&= rhhJS]H]S/[ޡ<"Oce}A٣MCWkڛݿm}ƍ+oޏ;ۏY/eQПW֏W߅szfT㑗3~W⺇]iJCFjࡗnIBC$q;kcE|\*'>n'r'IY9tz0OKkUd't6XgLVЋLcPFg1 i-qwNLh,a2V-CGz||씤{9:9=Hcm=lPBA{cbwQ VK)8/ ̝N*u:%ʘ猽I2rYJLκs$02*n_m J3ŕDBױU ޙ'hwD쿖z}oD=8͛gy|'LpDg $sD8"H>{p_'~EimE#phf0^3vH44bFA ax0>|3n$ ^kqޡ}:Aǫ22k@/p p[ŮƾM][zn n<'ۥ~-´" ,30%6tRJ@`{{uTP!=6V|>V&]z׭dQ1&98싟}eP1Qx L` 45AuȅgtA7ue4g Up x!׍d׬ř!xȋg)gOSxff/N3rji4 pe[JȎ. @{;aT+abBgG?wp}WwDvr|l?zgyΗtAS5)>qj  :>m^yrR=gkT] uF AK$Bn{vU(h~8>Y`HU@,&{BKS μg32ru'3֏t!ǭP 9Tva3lO\65+>s&w+$"@`Ѻ UA1_ "KdcZ)=.@Ew %TU CLND$hmM}EѲzH|{]`cx%_dEmd= EW [S{8! mfp`4pGwd%սشY>N-c'ߕ$ju +F#Xbɲ%qAھ90H l>%X^< ߮({ g6w~d"|FշE2$/;u[὞ zcKĠ@jq(7dq˴&v81nCځCEnI 'XO+fp`0G&/KGh|UƚbXw!F~#Dge cfrʃ bLt1OCT$<%#s~0HH90m ǎm7]5>W_s)Rg"qc"i>BMD,%g\r 1a3C8@@HՃ&QWc+©h1jB+ok,ՀulA%n`mt{{avC`@-Dufi&W  E. mCeOE;Vfx+j.oJ8qY>WuSj/:-_Ỹn ʾN"|)XxKd;"SGw(T\G*]>SEjf roYBvᠽ1{w~u?ոzއ;wG,*F> eGG/;=֦]X%&˫.&4*pY=Uxɛ1͸]~eamoQAv@xJ.XQ*#_t}p +fʼM x߾w _E{=w?Ί5($غ֕gZ!S .4p L!fSGf+x#8z^bGlew b *+T{&sۀً :xZp<0ƹP@fus.#sK Ѣ8MkBozǩۯcgyK|=?ֵwYwlQHA7PHBl`UˀJ}uXkT1)] ]g Yxma -Qq%=ش nA bٗBs;vt{:W?K͡軀z?F;G,ϗ.WP@aLoϟu kC#ZUAm+[8 bݺߎxw3@P\L`Cqq䞧M 5 ?ĕ&zcd\<q?voW W%.'\Z!4=\^H8n`mn3aCdXQqLF D- d5iSςb䱤zu1޲bYS-X⢮f{vGzWZV얇}ZhAĔh$jrJ -;}7_\jajuIJ_bT^_!Z\T x)l 6%Z=^xZ@<%M: ҄Zܡ䟻΢_BUD [W;_EWkWcmll?zgy$mAƧ" >y7kvl\l򕵀`-9l]=,2:aX'̏ w/ѥ`5SaMںDn@C Sw)Pb"Xz G+7~ Mgj;|}5ط#Վ"Z[%q<΃0!n%vbk$躌;H.R;Cd/kW<7P!m΂U,䥅̎?oz[d#c:]˗gyweAZ;Gp>cᫎoٛVD V+_'TbV͈Qjd E-{{Aw<:_t.|;BVJqܵ$JQ9_$\(;:8O}z ͟ЊO9W5tZA h̍1֑ 2GWИM 5llrO{ЮG(W 1Uz#cĵ ;o>S8>m1B5"l1F*"BD6T gvYmP b4PL@c`AsAs/ ߅MWOgVw!ԡ0Зbm3u7 ۮinCy9f,LBIj+^}\_{(إKY8)rE`6?p}`0AR]0(Ҽfq3Đ9 :[!tb&E{Od֯TwAao<ۏY/EUП_{+~-OಛdkApƪ`ڡ@apN;ٸ{u!}8|=>t1#ʦ&#@#6O5wx >Wm*xȅxأ/\d֙͋MP)X+G/w]ʦ@A)/>Ó 9M#h\tQX[O(T h>ff1?],e'yLi*6PE>ۇfJ`v M J#(9 !H2Mx*ޜT{ XX k(a{, Ri<ǜhn#ĐPceԕ jJvu-۾_[qvn;ۏY/Csɿ}a.i3S'[Ҷ VV Tl1D HʐNߌѽUCOߏo+cN"/KFjl0t;YFйjDN`Ez9{w~ [Z|3}rʣ$cvE&uP. ̎B%xn_q\_w~.?{f+C*B`uP5H"U||]P"ۅX9~3zC+* `Fjk+ʰ*6Mg_+QRȣc]D/TM9t8bF٤S{mR.6dT@3.Av})vȂVLi]gQ1j ^ qV1\} |e );&J~DpI(-:gEdXeޚlabeW2RUXxc1[XSn>9 liҁЁYP9pf(TX0Ӥiw_u=;cgy̧r7>[{K]6J5V6V 5,c`02TLxTM-H[b瞷^S}BsL5 *RoSS5{RwbPEd헖)حG>|FcGWg_+ ]kcy yrQZ(~' %^ 3얟@w!\YG3)O0G#.?p Wm*tƣmpF jfSU׵G[::4áz.;DO8؈'1"mE;t M\t Tu0i1,Hk&6fߟwɳljb & /N+xSh#ka0wb d09eOldFMn}KϳƲ xˊ`oͲshnsJaS@T^l=WUsӓ2? wqphs?E=8ɏG,ϗ9+{*kڇ8/۫~g]XUX]Xm2*.PQĽ*M1?>ه%^x@!C}0PlrUxEХ!N- 3V8E߼$1[,SKF3B:,w$0XX)R2椹A0{bn7D\3ai9~wUБn߾/hx#Zf'fy+| 7=wQ!];_l:|Չ c'5AՀaT,n-*cv{Ȱ"PF)fG?|?xxUW^q6"Z&n{:(3D>=냸0My>pj>9+-^o +HNU` Z!15(V+p b1kL!R@Ž[^vf`-xηg?jԃutlSQ3$4vMUt86k\# #%DM@EOLdT*aN14q;0:XjE̬fY@UfRcav<-ZгƿY h.ֳ].^U*aLw$%t.,1(]4i߻\lqF{] .ˊU`{87HssMcBJ tlķ&~X}ya߰ m 6ۺ>yCޣ`7}3˳<_ Vп?V'|8{|#<-8cM!U dn"j zp#B=bgy?鹿sW:2aW?Z@yՈ w nI3,C?)d!=莾 OGkA"'R=H3R7떙Ąmދx(aGj[O!޳^/z.{%h[ i*G@"#*PW,waU@3\keG6x$v_P\ j@ //Fs 0Yu]\:)n8NHRC : P`1Ph%ٱZ U %WM+s{z(Uԁ]$G` )B?6pIk3hTǴ:w% ґcPlciXJfTvPRűJ/>zT&b3&3`o0&"b/N,i3݌;:"i @1Sf~n~߻CXhK/pY/?i*᦭ \rONCL9X[%T HY)#%.xg50;}7#ģ.O>- nѫAV*[J@&SK{L'B@ֈv <3Bq8'_bV d6 BȘ:cs%^5zO bM`ZT΃#R VMpE=b .h|ܭ1WӽZ稫ӕjA3(-%-q+h=ݹ] (l3fb< VI-$nEsX 2@U0y`τi0 #= џپߺqcq|k˳<_C Ux_k7ybT}$r U`FxSˢ6Ejw j]tLN܀xv\q ۈ1%3gd;aMٓȜVܶyvz5|!,eEʶ'6 p#TԵ@jPG3e[1WUOl< ?ݲ"؝ 0 ڹh>#XL%;!\cB_(L^4 4.4V{؇ Bo=ϴYRП_>_|'.^4OM_=M* ڋ?KG G:v 1=n;x?\!\{c Qr"2{A[TyluP 'dp>?}+&$ yUxأF#}Qݺa&+SS%%EA:(0aR]np_[L#.?'ᇞ`</f̊ 6Bv0 T[".jc|-:9dyeU%D$r60Jڿv/?g-o1+V5&ȮЧTzb0!ľ}'q'ddSev]B 5;`Z]U z_퀪 z zu%`fhJM2Ygri]vf17AU˃uu.@fc (@}ڑOGٹaN/s0>8[>57-~ cgOsfmD"V#1TɉH-9cuw侷⚵{SO_w|ހܣ() ɨdFP :?B.Mӭ;/RHM{ rpiĂc{@dŜν:?wvcuYz-,O9qd2MݦaB^+plA#bQF3ahG>rLd1fȝw3O 5Qm֍pQ X,*uyl};ߊTa=xw3ԫ0-DV]T0x+C".."- Xu;ۏo05ZO^7͙'nE~-, 1g\r'6>'<<~δԃ 6 \f>l!R[#k**"6&G\C4Xg :^YXxF (*}GLKq]p0 g_o~j6!%EE>Pa^>0\BgBWq_n T-']*FE$ؔx198j d7O"g '<8O&--Fo0Rp"ANX21ؽ¬%\BϪrd4k`MJq |eyя,uMaYeleLk!i.~@C -`+NBp<%l!N. ?+ps.F7g,?߹uT\qN^ύVk@j0 dcuo$VTU@>kߎyA|7<ICpv0 "FFP,۶2rK"B؝!@T zg׽wo:I_\p6 EӢRGc@!Ք*}k6>)pltwނ  x K/;6Y Pm=y0ܺy؇sT:V>-}8pi `FN !B 8#z;rBl⬬"!+B''D0\@DAsG英1nfh^"fs:]pu 2?ncv`3f]\䖴3@5[0)gYRO+Qp!|M!2C?5N睊jv˳<_T? 42y~⎝yd:IphX$ Լ#=u9[\cuGO(^.<7@nT!TAv!SAޡ-̋M]m=.T>wڷ$ؿ9O=Oy굨uHax}w^2\)@BG:0%3Rs:GnmXzcg=ZnO(>/2CU Q- #bweǟqۜFJPDAB iqr~%7_1WȘcGruiD\'&SH7IJWY)P6S@R!0'Y Lamd6lSu:ؙ9oj AN1Z p`{}b>_/͂lMPUN N <Ӿۀ&\2[#dj#MYgҐ@hQYJJ Cgԅwk)1ѻKuoHB\sE۞:ϬY9򗯺o;='Mfj@"N%/z>=zsĐ!?}O ;Chd+[\TF*OAX:tqༀgQ婍b(a^]n]y/Ig\krŮfa/6 Pج285/*e2v-~no m⢵) @I퐩B1>%aI vp#㉳5 ؃fdjbԬuǻ?~/Fup ]|˷]_7 !u F*\sp8b)#0!gÉԆ":(Utyk, C(6Ϩ!B!!T{9 (X6vD,KOpeD+< @}b0ǽz]|g(͎`UQ o<ϪY_ȯuM_soQ4`e%`S#L ы;C0=n\v^U<;/ ΃t 9 ŵE ) Flb]K58S=~Q\] !G 6ж%I|Ǭ@=8YAMHuXO{rDd`oss$0r%/btL` -#;sǜ' kQ -Bv)W^u=cWkPǞ{)ć^=#FCdDt)!F Yتգɓ]|-e!ޓ%LxGʃI28VXXCa6F&~q*1ᅧᄢrg_WBKh`j  H"Ks|+%xfVu Zg.ޙk%Xg}G-`1{n7ўMNm_`v=g9<˳<?vV2qGOUGkhVpeh 1 f;޲:τUU{snh4HD̤%Y)%e[qli4{hlKV(L "Ft5T-y$b3ԣjܾY{}䝼C/_ȋQK Ƭ!m1q^yN*fKjC -w[?DZcnuykhN!ٚ2lj I6! RyڍOhaFBUőnnn>|kyb9wlS"cl2]:49U=yR'q[Y]aSil5.Gy[nDŽ 7>_֧hzqX}'BuGQ!ܥnbs4$$3qoC9]xcd}⪚ UF3'ry^,FLbMoGpS\%^vuIkb&qhv}qaXY#!tv5ƐrƴT3ɻ!N|OWlv~ޝk Gh{W[zi3Z|0<|ߣ Ÿ?rqտzfnSk6l6cW3.g//3Y|;v`4NfM-Kgbi~iRSa&gb.<&zy6n}-|X=7~R^KѤ!*Û\X;4')&'٣][xl|^a~c?rBh%a V=C>W a,6}/VQ[&^G B^nz'sܢMC#^|/#+.Tع9b穅tBϾWM4X4<6t1TH{阍}L~Z[c:ʢ*J㙊ELVw 9 92qflĵmiƤ7Y<B~f̈bkO&Ik` {Xuu"}N.fTE*GNuHڛR(K>gƭ8αߵ+74v .w^nWlƽΤu 4.YƠGU%llr܅ƱƤ0U4LO9^.j&l1+kJć>H2XQ,*Dn>$Kצ6)X%*:=K0YO1ʔU`XY1vmwIɞ;ߍtX٭|+I6V%&S1M&qQBVIx"z,ċg[>šj~䇯avzq j&G5$Dے .!HOB5!Hrz#yƧ7qWMuK?jV:SkWUn{ye|cΛE jRG#waܲW'# am DSS.ftY<1)LHI'RY*O1rbbЫS`V M^>9g}S=)]O!f9Dv@+N!̸Kz.;%HR p1cCsJŜo&PӦWҟ3k'655j=8l#B{ߴvpxrMo KJMWUx]s{+>uG+;j\__3!mEۓt>õ~f;Ϲh3]_/j*G|NDo8#{d[L5 EGw[>WybnG_xqcNѢ&y=" >@j =ʣe!->zhh#?rsGh[v.9]}+ɞ8j@cMap ·Mw!@FjV:JVSV &Й)*?H{= 1_mOΝB;E_㻮vGgj&FmHڽ'C$X"F]?>ŃD# b,SS&+9L#D!Đ.w ~ 1%Z:jDg+J*tjРPo !mjaTYٖ4ވ&rt#cFXb3#MB8LU~^YEFgmѵubYe["$sL#V Κy擴IW<<{w#bY>T(|U;W^4F:=*Nk4m`=9-7pE]2J%jFӸ9 jmV NB˱Оq;?c4r5MWrN33)H5J;K2\Isb jSDZm#|k~^U}t[K?A>N8d#ܯb 4ZUFByB7mqI&g:rQML©Kw=>` != 󁵱2 ݸ#t-:IFiǚFjmM*W1Ǯ ]Ҿ[/C7cbzXy#g=P(| 䇸`ӴKs ?/`vn#?6$Yd--j'#oP;qK´fr8LW4WӜ'ne F^t)MpsӶ%-HRgR#(-=jȟMOqҎܘ)<>ua31Nyǫ^sY*jLm].!Hz s:梋.p,1G&FrǭLTC`$oqMVH@N&Fȩ k@7R1]iKC[ "|&gr"6N1uސ|Y;.L:{4\W@YF9FiCLjIGkrz]Lj{xIӨkw'M߾r_K~yWUпϛHuCJ&^k%AO>vl>+WPhCʂ6Lғ{l2!,Oc[o,I2hy=[eqv N~-ssSt]ruzc7Y|A&տvM,3YsRZJ2cQ×ljEb?w6;1LC![g8I;38O}n>9<'^X{]m|$%ӥE 5~ɸc8dj|7٬Gϛex{W,# dtf%E&7Ȇ>L`0X+KCZ{x1+ eݨ_oҴkJXjCʁ+F M66#O:X^RxM7&vC"Ǟf+T;j0pI1g=F8bn1/q=+f梯#OB[C:Xe~ڞre'۪j5GusH.'ݢdoVC\zc̈́.TiKR75Sl.yy|K'=*ϽZ.9wqH;KK:H\&ƮQa. .U>Eh."[]R~1FJl[I+t)Q|Gѷ~/ +2?=ӟO7u jXehil?H46 4~de;^KT/¾|yoi\vg 4K+z4&6F<84, kHxq*gg.1B;Lρ3<&c"FPҢQj46HY\ ֧bAß;'-U*DR+Ɍ}ݠǘ>1Ee_7C,?[ oe;>nNĚzǏi[;2La#F'Qq>!~(W^Ѱm~6٘ ɾljbv Vm7=?% ]T0TylӮ4#nd[b.?Ph!u&+/lBj3k^Po|!睻R*h3ia$b)Eؚeo~Sy}Lp'tz?ŗ  Wrژ8w6M`%dLGgGu&́UN|CŎzN|7è `*T 89,f\dlDL˜+0@ -8E+'YK7pb8I,[iELbP!tjAw^}K\;1G~vm~) _7~|sw矻uUlj mLF7D[Q12q^xIĦؿ؎Y>q={q fB;MTb[>[y jxi>c%E7^VB:OHqɝpҿ"q}f+6'rYbԈ7%;Äry.exOqu\er\̮xy:!VqX{?"_oj0/~ zxć(GBJFٺWҤt_ ב2ۯUWwj1kJ]꺚Јm`eg88^a<{k¼)s=i¹|SOsMc߲#>7=wV\¤ӯTl~i@crO& vT4 fF *;G{oCZ5\so|W\,'{tɟo9Om@T҃IcOƿޫpࣤ2Sav&O<%>1 {g~t_m`{bg`uڈTsNMvD21&͠hЯ h8ز F(B^M @=]~05J0Үb%ПkO֣l'A&SOIxO!cCI0mRǞѸm]~·#-j/$9Hg0b&&CsJڿсe챓{;El 3_uA^|޿עpZJkZӝD!,& E5Rm@F9vdđcGMLMu5sxy3Wq"N!^Wy5طDgi406id/!Fw>1ۨWlD=:N;s'ıbN󦟹s1`##Mco8lmrJ$}OȢ39&,]|]˜=n󯻄":Ik0Ę=Qc$tt?M_&~^ePy[>϶)W!; !Ti\55N:Ԑԣ0"kCK<%&!p16舫@۶(JlG4=hzHe$ ik̃@CL1!?hџ5$Uluy-z'P'#vM4Bl#p?0{R(_uA_%n:5W;Wj:Iku5K"cs&;iVSy$/t=˓+'O)<YYrf3~%ͯD,&ZL N ӫq Cauk*!{kT(E<}穤=@e 1] HmАR*-)RHO&IYfcEx'3= r!oLNMb;bN?HNVC`MZ3EMbbGӝzz'ԈcaaᩳR(_ømOՋkkv5 )\CG$T $ճbt5VSRZfh:r<y%߭}h\}M&ur =v'#D\y >֏F`oԕChDۤzV;}(6xѵrgrHFQ\q)1.j?ƫ`쭞$؅"T1HyO b҄ ֓jܢ&Θ&w<"Fٽ»y~b"ޘ7|>c+br]RƤhYI&vLGtBT}үw,NJGmv [籓,;1ϥ uGԭwjgS D#lλ zX 4359[E!ĈǤu2]o?[}>{~CgLJrK31OZqt'0&}+c哴xgp&3㉽$IQ5ݗʿ[X|g.auHP/T^^ĔYE5%ִ2B6Tغi/l?EiJ+0k n.sv6eUSOfvg.m. tU<~sw.ؾuj]q_`f@ GŧnǖZM'e SLH1ƑL`DV]0߿ c]|OnÞHvӫ &51@3B ;)f6w|z$ljػdgJĈKh:%s&]?%lXX7޶͹'VǘsnlY56},~,T"xDrgMv|\ 0|S䋍HQ+c1j h ?h,>|}'0Zxn B/\?ss_0xwj=/ f6ni{8] G\-4.yΪ+Ո8s"uJ$Q4h0 RV- yuo#4L9ӤDɧLI|K=)x~/Xk1DkI[ӔӒ=9j9J m$~yl6pxuno}S]Ƽy?Wmdb'i}8F92&Û4Qp:BLkgWzVs&l|!Nj&]=H^[.Ҹ 7.)X.Mzr˛hll*]5'LFwKwƯ}S8V};xHzQ]='Y\T5rc-9>QDI*6Ta.7N"vEډqLd@n[%wg3fi;{GP/\N.~KYKc6\"jۧJ.:\],~ӘliAG>b1j˽M.F&Ҷ2A|b]> oʺ^h'wXWp=7c<|-Ͻrn|Nԏ ,P󍹕Tɛ՞t695"uVݧs=E 9fy>ϗ>@߱sTٕdu38#RJz O^z  vƛ0u)!ԕKĘE?T—ۧV'W#]Ik)I1=rg=(ME%^/h>@|PƇ/0vѩ;|fE +/+%śb Ƙ,dcoxYŚI\3Mf=fb.#O-ISrZ! ?frnb_^(|M :]mv6T@\eZWM2jݤSw<Q@zLU 1.Zd:4NRQ$bt]bC<.<[gҩB ;o?ﻍ}Akzq5;/J&!$LJ O?v;mKf1UNbv;:;q{z=zc~G/໾R'i&w9n6am= Nl1}3|m= ,]2[iE4ȉVMIUo@#΂!fseN0*M;0؜`fvJmS A#1*䱐^U c7mb|  9ItsJ6FR`&,$65`ip`r-(=f>81H :V qӵI.|lg oPf_`yB_*ԗvSIY6Vz"hIc*fbjР2х8'bL⮉j݀ڎcGf [trus\>/rkGGo$zJm-[&MdݓraM:3ٯzvԠgY͏daԠ0p%W]u>mHJ47I%@&dwVҸ==DuR6&ZG,ۋ]K|cڹ7܈ĘV.fo,3rBmW++Î` 9X%vwq4Q!T1QYC>ɛ$_g;-7cĕzOfO0]dwƟxʺvs1HO~BiR=׵ פU6)"d!V'r)U.H\kv{ >q7Ꭓ~Q(t>?d=\ ;g`rk1{t .b8FD#.c9LcM XtLVHoõ,\С\uV|AVx>'=b:yÏ=˒9tٟ~2NW!P-vZiDpqD4G+5zcvn>'YBOysg%}wȨ8@21$BbO l }wnn>/pp0xw/HR#ɗ]HS!LZ$:Rѱ6fy,Qw]{tORAXV2]*ї/\rOԉ''~tkvm2q;3:_鬝f/q>dD@qD8\r$˖s:K.6؊'~& 7_~{qCƯܫSkg3Dt^T:.7QQYZH9$J&pN0m2 'V9tW`3M=l{F[}dAsJ|V 2ٱNFQ$2S@*IQ5fGi':u&֋Cm}gAaylG~J#`xn0dwkrNZmLr3Ln# v-]w=;xz`U^|ǛܹK0vF@sj]D%K2id.'[oqVQow=ʻ  !z.0?~/}ť. =dԯXEw4aE4Rgh7{N~{w`EŰUD] 2&bkQi5B60ׇ=Y\:eYVID֯}M2)QXqT%51yڦGE</;r/})Ux qVs8l>S{3\R>ɃTfPDǦ@k9<?|b4} ~+̣j16}QMF9(D6MC,O u1Y:--XT&иH64N ݯDtp[=k0:֖sn?s'hdC^jZͣwH y51M4YW,zC$ݮOE_]jUR@ 'MJٗ ?i8#܆}Q[gB.'Yy!ZKUYIuu uI4We )t6$Nb]ua4EmSuj_~5Wjk:iKݘ9_ݞgaݟݚOl͑N$z90[?~}Dci/፯͛mm-CD[nTHJvK\L_%)Щ,-srwp=Y5St9 n$>iBL oKZzGn$T&2׋X98X:/4tglcjUPW͓@q|gw|~t<87;Un>s_e{I7)iӧm9VRXA^(݄_b}yPK-nĆ!,GUb)OO1׌N4t>y;E Ve [C\%kθ4P}J2:2G.eƜu풄eV(.bSPqGj]Ǐo︝y8WeS5{>?RWAMj*,NrPe[P"ُNb ٰ'%#!}A=cǷ?4=7෼_Fjʼn* 0gB`Ӵ|˱S-#xOs&1&b~uM'ݭv;6\[4k67'so J/T=TmgI"$,~B%w.w޷G)v?Fz`|./{م0Q&I?!bIr:1vqڷ°f4s~ṭOLy{kQjGfڨȩ⚧ 95-j{wԕ'8hi[v[w~暍GN={yk=y>6p|k~&@Rםqb$?ׂ1O 7zucA׭M_?B[KA8]sQuttkļLt66 &r}pg$>JcHE.[*Inr$%c4YW%kԬN n#O6 H3M /A }uTq|ՑfBaI|>d .q:LrTNEr>>/phC./݀+12UL[ ΡXgzumMhI(T:L9'>[>I: lvËB+5bkR#wQֻ顪0Sey8tҳwе4w~' BZ1JS%#>QOikK?{sV!O~/up>6o _ͫ3L{VHnSOwLpQ? ': q,CI y+eX>rdcmЦ<|rbL7 'bE:'~8CGa?>(ֱ[`x/u{Cll{,?q-Bx3HSJ\#{{D[xTsX~_?~B[??׿o"צ/kLwrg=3lأLo̮c?y Y$gr@q.d3*Cg=X9; 6OWxe+t41jiOKBb33'ZL`f;>ƓN9| l y]k^CĈl޺]1a%EF5@PДb,wﭹwij+c˩{HPa\B5XAXưyVYZ,<&CTs\L2t8\mK^$ښvt_.طpnF|=ײz1 v8].{u|A.rԿ&,"LXxk( 8Klg FDZ"g8RO5=\~%t%S>q:>?1fӘNPT[)vI8g \k8?^:BGio4T@cw._yt'1k o=yO<+.w U2QM/&>b>7jVeN;nuW:5)Մc {>>n cлvF0iN!rN_HӍR^rEee-2nGiR9G*{z13|J~݀_ *#߭[&]`,T: F|VM'wѸ1`iP,UX[UvpۧO|cq2 /Ř>-6{;3Tk,"=68 <9XAEb舡͟;F׋ymu}i\t8~埞z_J_Mo÷%P(G;WxG{Wavj`@8FšO]׆qT&_1!w v2ȕ ƤX7'1֦4FFGy<-lNjom->V$G0Y,;?u7 GDͼ_9 eb++5hd,8u+Q`Ry$tF&e#P&! No<,he٫4xoRИ|n[g#Q'"O)k@=rא~95He"Szɥ|b0qڅ_6_و8x p6_B Y-wz]O/[{] RڧAO ;C IW45gܝ8Re)'lIYXK6'|T^Y9qnfCoKvgWl̢>= y}``!?x\BcOq[S\3},>1F"}kv)iN%q-9y>H[E~f@f.tOً:q@#6T626MpܱDJdE|BB V"QzҸ8]{?c>c3p٫ޡFL:TӪXc fD/<{cee*whh޻ᚂ$ܕO5!iJ~e|ZkagP(|S Q|s.xu\ TX]|T{9Rm2bQ]_¸KhkQUQ:;l,3ֳ]yߞfBV[k^Cڣ~v+'-]ء?u>~gp*Ly7^s0LnRjR;yJ21҄C0tojx<{=)\Fg.Sc-!SrlLZ><{)P1z2AB.)YLR==Ttb{]OV' |l, Bᛆop*]dP_LQc_qsACZfkX:>1TUkHc*cN;]ɣm&-1X!MJӊB̖7`;UW]D'#|o;=oԎ'jŧv_BM7TA8~uuw{|;~ǂT}1"38:B8TFO$A;_M*w;{@R& Dl#qf}{Gt+w2]q~i_^#+yFmNI|iyOT#1C*Z@ m \qXR^xQ>ErhdY5mx9: #hETK%}MoN-<_f.fe߇KP()+?]pم/?[Q+0I^|X &gGU%kRt".L}1:hHN!%t!8%Wm*GNe>}z٫9w]SkVBt5!"Æ dQ7'i<mhrt1e|MwpmYF C}r߻/SaLˡOxV Q֭94=dJ~B ,AҍߥwWc'/l Е BP,?ȹ#6u~ujWSTTVfzjS.S6!hMWĘG3JАoߓs=M4aD=~g=" {>}! L{~u3ݷ.h*DRacRL:ZWP1B7tf ؜(̓ [y߻ӟ`g3~1  !VTc3WMJ2xnmI1N ƑD?&]s( x]zU~(Q]W0 J2s٬غ Bk7lA8?:\Wp}BTz-P >a2õ.)5@crfPؤ &2J*zHD>F->4*sn~%Xj^HQRt u4uΖ16zqSD7fİ>{T-q3y-KS7ҺstSo$ 钀`$5 J[AǾˁ80nԙs&B`2ԕ懥KUa 24:ړ4[c K{y_fB-7tA8pB"wQf”|M)FˣGSW6}Ij`'ɻrHchN;MS'&xҞ<3\?~ Wp5ݐB^Mq˘`x铊{ +(&܍Z7QbXM yDC੓L1w3hQz>ܢS4i0?]8peiӎ;|}2IMsN\L0U!d!ipTtw}N~z,}yP(|/9_zaKf[wmL)uVY# [U,BӉ\5Y?bTM6"9EE1FAf4*w,o~ag4s#:{)k Ŭ #ǽfpfelD5Xg<dW.O s[-A'?b7KԻ>MoĈԓ|_JB-7MA4sq+kŻ0j%6aHa.Xrԁ]UR׀wni]vzl%p {t+ǹt_yż;1~b$b$۰pG-^8LGqѤ>b"^ba@W޽wIe ^J|06%`L{ac_4#ϞcˑÇM ?vHco,4@'['ԚLWfӺfXx _T\u#_b%/ݣ5U8&{PU+Id2gcROݍ*Ðg֞~9n4Em*1#F Zw~ j1ځhTL5SS!۾ <Vhg_K>QkKJ*4Mrs6'K<>uGĂ`e<$$NbLp?e?R/o}9/BPpKSQ⵱Hs&m'YVC }BSLhS`YɊ[EL\E̦C7LOK@4uʳ='ƌ]il=uC;H;N4:I_;wVwcT// #T#39py-fqezb7 @zgY>|t+%%Dy1̊qJm|N6}P5HuIMcDF}D3tnIq$<59?$YfhM=KjNhZMiqM6X Ȟ#'W|$Fئ15qP{]''v9] 5ߊaj7wHP(|[M[͎_,}ѺW̢JTSVXB ihFIKUvCz(+#,.p[Iim"MgfDO.bMx19ttM; x;> Jld4{=.ѫbL'[ :'ԁcˁgu,-d1(9ݕ'Q~JH焘sQE ဉknO&nn]C#KP(.=?:^q}K )gaGA%IgfsfQö9U ^puRhqx0DX4Qk]=Ue94<|!n= οn9hYH3zǤZ1 +Ϟ8tc0lw1ݔ1Y뛤 QLl򙏚My_LtwKWD, _5ڕ'KP(-/>]r+>p޶~U*@V;O jkg|[fz$W>o DIkAtz-i#OB҄%g}h3~=,jxk .߁>'ti9.$-Ė:Jo]c/We{MtIZ1ߗfb Kz?`j2( ok% :ry6p~ƾ4bԧ{+#!C\EeӾ9u)C$j@[CNTsCl'5(JGXɗH4I"O!ZI5%o^aivڍ$VAT@-FT̝s83O g`us8˻}|[_/g}.TNז)ҙ_.F⊉ߌSzWaeP()G>]ѫ{7>5Zn4X%ŮV{TƥŞ)*>ѵ ۭa"w/0E-h1SC4"bsGDg>[<).ƶaԿKj!9!06 )G=oY\tZ{44^3OF`%sdIdĬ=[kgXc/ bky! u5ҩ:G%1s16x@w`.l- 9%%ba B2g.[>v'fؿHQ9Z6#Dj$s|_<+@=17_7X1N5ä#OI~/̽CpX}yP(|-W\mhk_ RoYMc3 .)5֩=9j+ ^་j.:zb\ R8 b98w3y,4~2/cܿ+A%v:5_ yn}iڹ0rZ݈pĘtN'XDvJe>lqd²g4x-sq:)M,~kL_ M6I.r]6:/Cfp,BP[lݸsӫ-ߥR1O4OlH Bo~.O0}6_h_QS_ (}9t vN q!%(AcLoHSޅK'N\sMep4N4Fϻ8\z5+??BP(O.?ʶ_BoQsq۝ պj9TXmhUu`$汵nBlac\}5SXS?~gCXfy7 Ed:kfe ڎ'Z/{1mD?ОO1$[SYbj%;mjsVIǩl Bg[:/zxv14[nլ]P`**\&JwmhHmZoŴ'8vx '8Ѐ?y<|`1}1aӍ}4X`+u(-HT†y'Ӿ|1$!S[a뜡q';-xÎKE\cObθg#34U:KVB'i+'|/lxQ ˏ_ N}yP(|mUm;ƌq#oĖ/՘n*bj+D X.䩢cCRJ[o32\`v3)i"nr@TqF1&E 3p&g] 1툾MOhtlZHԵI69-Aіj/<ҋGSOP(J :C8rX}!iYS[ǚLמQg ^*PMY ƂVU[ӗB;-!S1&9ѡ#vMSlVGgwZM*hH*v(31BV1 TMTYzq?ȶ`[=pg5SR1fj;E SWN#A@Lq* 1JMs)u-¤WZcrʶL/y Q>nh?R+-. _cO~z3{)r-9?>..2]g5@KIDATDx Z"TV`C/aʰe`pd9xĒKQ,\ Bۍ2rplq=#fx]<ռ }Jp=A5ǘvi-v'{t'0(zCU%P$akA\\$XzP( gR?8v>6>N}ֻN⫢z`5JC1X0=-!/L<W9`]wh*)dEAVVJ/\Rٗ ·-8q>v{- #S[* ٢UrFlCUT0XgIJkGi" ½N>pMBP8gٺJnx>u}{*Eۍƌ[l娭ଡ2~ XgDpR9`Ⓤ=5%":12Jt,=YR B(cr 0nlb7a+t}x[ FZB\A$y+ *bD0jtTWFX|g[Q( o WU7-4vqL?:T !ByyZҰT5v=}$\ڗGOms ʓ%XP( oJA p~Lwȧ1De=,O瘣UI9d{WDG6Bb/P( ߠ_m;x႕ʄb[E1Hu{ThH\dm^5 R_D-~j{0Ҟ?9_nP()/ .m.=%zk AAu18\e$*n;_{-vۜ.d/P( ׀^< #3Cիc4E9esTJ"OTý~aBӰgK+ 7  ump߽s37=[9Q8BuQL8c8Dqg^ BᛈRrw(Y垓D>i BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP('<ذ%tEXtdate:create2018-06-21T12:56:21+02:00?%tEXtdate:modify2018-06-21T12:51:37+02:00IENDB`yubioath-desktop/images/sky2.png000066400000000000000000001346561412677075700172530ustar00rootroot00000000000000PNG  IHDRZ=gAMA a cHRMz&u0`:pQ<bKGDtIME/ ]IDATxw$GyUݓgw/I:I' %H$s9&dl'&;bdD4( $PtyvbwW?Nyݙ}}^&6Mlb&6Mlb&6Mlb&6Mlb&6Mlb&6Mlb&6Mlb&6Mlb&6Mlb&6Mlb&6Mlbo``M7w3"ܠJ"hmiko6q&u,[~w-??0Í_}۞Qjx}ۃ}7.CSvw#O:/'v/U!k[xKmj}yjU!kWs7׆GO9/|cO=/'v xo͵V 7 R `a[ Hsk'Nu~َ ϼcy_9ofOVg2]xO愍 gy Jܪ\ @H+Rc^b؈(wU? }'v}?{ RX?}vC$)!REkQRI$  X,2r7H˻ h7?{5ku`_&>[}s_pf=To|ť38RH 7`5" ;`EDX m%<_|`_ߺM}b2u<]1槟j,J>WXZ+‚!AXkcX!鍔.C#\=kn?z#8-4~;(/PI$<=3nydGL55ȸl]*E)En%-3Eɐ[%wa$7Tb흇F?;+jxMƳsgw'8nqGqy_]=M]ˑT@IkºH.|61yp?k-J9R89Z3Sn(~;'>[gq?_oKinZ֥B"@J r-\ƥ-@)X9KºVI1æmF;5Gp湷}g8n;38'5o\2;W5ͦ`apn+EqͽZ߳|4<S%K] /DxEAo1R8v,Gr94~YZqƓHN9dxoX>s5&*Ω@HMi y18PN)XIev:B"t5n=VD RP˓FCn"]09:ϻGo0Hixɹg?Ջk ,ʏJ"9"tR(rXt 8^{ۅhǀ!>Z[kWNoXFXh-H 3Esа,cE /{co[0Go>/9P8ukR #{z4kr6q]o=6\qz.[aٮ[INP%V-&Ϭ<c\ .λq]_b|W)c|9rg<4'{@ aNL~YB%݋Wgxڽy|`__&>ߊu#?:~f7Uլi HرQ;pEb9guQZ+hOj]"8`\$pS|/^,q$bETDmV^>/M}bQd*1Esͧ_8;wIDn:\:(sYEH͵m4}$V.1݄Ў=$AVi` uB߆s;<Ơ7d[}ԡYz`>\|ѭ8~m/xq..z6jZb\[9֙Ԅ΄]:/c`\JIh)c3n0Er\~$\6|wLBJH1TDlV^mSz}o򳬉3v~to~sS/ZNթ^k#K9z*19`}tk=?"]\VH;L6hcpIhX!<k<|)#wW#}~P S068K k<~y8OO~C{$kxxm_h?8& W+KPH f}n(_=pHi-8+()'|FՎHQ#V#Qʽ(H4Ǝf&(S sql.ԱY1u}s08~e{?g8Yt6SrJ8I׬o_I3+EePspd%\CEt]馊eܴ^_*8R@_V{P-n,vI3B>:3{/.%^1qJW^Eθk_b-W̵bnМU RGS͕ rc(ZZ§.J!a:6uGՕ4(#X@KRtUPL(1` 騱V;/*[|VBqcFb'l?mo#Ў5TD80tX'Ili$ЪYuESFT#'zU$$5}w Duh*a 8`OT].}{߁/uDO쿵i4" wg]Zw'vPxe,hlU ;)%ĘdeZ/c|ㄠhY?f=Uź)&$ #BG.Xf˰G mUAG>E)iك$& SMKy҆F~xc䢯rdqbW·߿~+oܠ>ӨKZ M%6B[GB7ڋ·(B[{\0k“_d%[M-E;ZR:$ʰj7YhFFgV=y@*FTDj#K X L%rEQ]6?99|(~W3}:<9D4[#ç[ϼqﯜzҨޘj Z.:n@̓]Ƅ=PYX++D)T 8鑂$2)Lנ7\+#{deL +^ t6b8Ԭt%4FI#PNhX}kE8)7Ϟ#Ns\;?=w+Dn䕟GbwĩwE?xi5SjEP|8B IA!bYI[~hx/ 4fR Qֲ᚝)+Kh%Ȗ!_F%"D2R *.V`SISX)% OaV,Q& G75sG]9Ͻ;f8x[?4;,DYMogub\ذPM'XF3,kI֕(/J%-*󀞫殺$,G>Xl%d@MҶ{XkvA\&u#[i۽T`cr,gYYLn"O|c$a5'!t LnS6z?k9|9I>1orڳ>[{ޞ_|RZzF%yV۱ߴxslaBPqR,6s@k=a]O1$KC%2G] ˋ]OeHgCw8 2C]^ȅ?-@+o4\9dUMC2nF`1R^U$MX)&tV3bϏj_.U/;{G=W3k9z޾ce#[c͔^qU%hKrBص)p"8RDpW;bG\ I"lCn؛æK0Z g2X+vqm|&/Q9 ( xgKf[ܱ2uTzHCT:m㤘RE|`sė $@9Q)Zdď=6L#_ dD^uf;/{H#s,`iNt΀0G霦HI=XYC6MqvXbE+b45?WB3 Y$4?$EeT~;k~ßYE^*9aðϟ^>7՚ %n>]wgY&mrSfXE%=G^xuSw%4`|Ё|c:^+~82IAM9O继`O+ӈvlѽ^l]|=CRc7~VX'e%$TcC rT{x.=3vRE-kc*sǬ[z7_FSS.Qc͖-Z Y .ZB rͲ|&3x^-,[wȾX'r|G`zHB+W>y#XYgqb^}Urj1#gt%DUa1k 98i',󎳷b0Z uM;fli-+tW s]&{>۸Oy~^OL,xwƻvED)" lxu8ǧyjPNݵT5HBI7IbE- er9jSfPe;#rY\Nˍ5ߍI6ݞ;/ ,Bűv,{a>[75=oy(T7QiͰe}N%hgjJiW[MV_pR_{O]Y7lPKm{z߷{yb\4JYO#?Y­-]Y)S?A/ 28«Ba+ )WKK!Ίͥ^ak|#mats߸v[x4ʙSMf /XkRLJI!FJ$NnX;5s^Uv=ΏWߪGiDԠQ-7GXmFwR B*Üt4ڜ5/>p{h9䜯, sp:W/޸0m4ǣ0egeSW-i'``xEڻe/qߝdTuK՞`y>s}T{b#Go-}2+y!VDbIWh F+v.g| SG[V}c_r瑧3~Y6#͆2bp0AJmy+D"ajĦ;] =fqO̟~)&vk駑pÚ>̝kO߾0קۖZՁaA!ۅ$E\Ao*Vٺ(Gȷ\M^a-T_aa|Z ӂ܀!$Y&AbĔ*]75wox'J )Uw"56oͮD_J>GmoB1^VX!(7qېF^P *Q]wjѓ6?+f<[&;hyys?Gooys8iC_:ӈ+4 "hdNѼ8>Z@Z7Im9ʃz)'KE%Z׫/%:a&ɽ;PC|||Ne7}{>b\!w|W_mO8wåZſ_HDJ:fbYZ9Hl%$Tnټ k&o0?['&;f_ގlm ٩6O 6UYnKT\ _]_úS\˔je(HZuA> ˆ5V5n\̾_,_nKu.ZjlKh1a 9 $R(H7y'n` +&$\+Xp 6|E-6W<?[/&;d}'9~f :k١ر=Mm~ZjJvoֲpYaCՆK JT\k4e?AyF_{Sq +ZIY!#aOqG1٘ y?[7&;b~|dFgsWM=wD%^;&t+p dR[ҙ/\p'd.SLnH[Y'K1,JjYͧ {zqwotMOgM;_ڹ]}$Rm7g*sm,q\$ԚU8߹Z}kGM+^Oo|= R#y1{a3.S+1kۆ$E:jdЖV"Q(:oA:ZVk6F+!uj(F |D3͵ܿPqT} 9PeCkKݡ0=e}]_'҇ߕ缡;G}£E$V qN)g+cEY_7%=a^Zrۭc%1?Y=o͐߆$o1럝7~Ad}tաɬ(tk|x8voSlYG 3c h#cxP,|+.lE @X)KA`ծ'omC>jM|St>Uq+<^kx:JJ@@ J9k@%*7gTR+,+1Wꃞ߼׌o}jr{[j=`t5S >W$ntV_V(?ݷl&|zB?|kŨߓdRY k,{v-lקWІwᜫ 8>'Yڝq6?}mXY;:x9hQngRZt.=h -YJGYjq>o?|#N8GsAOLT||î\hhWq5m'Z_;GPOl@E\o1tut (wQƵ]]V[›èk]+ҩ@hvCA9b, X;kOl⑧/PK\M1=3%i4BAl!T< חa}@巾Z%;gVRq]\zwOoC엜ο]$hӮ]am[!hH*ANQx e{A-|HőU纃ބU8D{{}~}sRz2~[N/?$E #@qΧ㕋]rs1i\Ƕ?_\⚾Ow{*?vw3Cxkp8 "wX/R̕lXS-Ša_k!$B*.-Lz,i46k ̸Vs޶8jSKr5KU+9ͪ;%Y% 5LؕY&ӆU`:ֹ݅+8c=okm!!NI:㬹rcKe8*\8ǰ102A**ӒJfD2u`MbG?v971Bk \ yKH{3kЍE RQvl1~d7]u$iW 3,|;H~p̜8^O]Ԕ+_xb1͆dAMx=X7<%\[xu (kͯd 9l1~!o5P贡g O1j.||zhBT1zn!!tP1[Q-3n$C$dl:!d)}VH!\Oi>vQYxck_C 9/8dK괓|W: mvIAyͣu..emm*4>I,"r{L`٫-|/r/(2)5tHKPl@4N39)W9C݁2-AXQt(ПsWAk \q .%Ơ*';%7h!AHOm 헻]=6ql|g7CDXr).E7AE`Uj #Mbt{Cnrwc>;!C` | .4X\rKjҎ\mYd*"όL-l9Ll[WFt%f5Xe$~D6;veB刕ܻykO 䝒PPkG@ JU\kJ `q˺7!mN-qb'cieͺn7X)naf^{>5m2G\-v|K߶oW 5MufE4 Mo;^VQPom.ӍRAƵsEi#ȁ؏J/Na"juʧzXRBqp,,*Z:cPwc\0![];FQ8Lsr.ʺݗ*2%_ CA7A޹i@wRM s,g,w[DXjD)UjS4~M/o﷉{O߻/Eg͇~ө%3-C=1#Fe܂zV:^"Z*JGzESOr)M5h" ӖHpZ$p5t`f fc,zB"-qdcr,w`qY Z S(J`Y??^HXLZ)bֱY)2QX[;w{zL ^zpTGʜDFiξECa%,)ըoa{s>E#N9h$;niV(SK~w!ht)oǘrnM/")U-S5t-rK?2tA*eLv)QB%VnmrMYuCf"2YB8R!6bГz(19.ҕ Xȭed,dDh}E^[T~>Op4S·(ݚ'$/  ;6.2TǦBF{9h@~}ʒHr_3Gɇ`3"U%IbV]I!uEo1<9_AKs7qK{lջU*\ ѥkK"zp{e.~D:^0c(.Kf =` 5jCE_BFł$+UFna&L`ѱ$;KPd1s iˁ * m1W}V=7Výwe1-hkNsTIe1.T_,\A!KܸXY<X/KjPUGR0S7mhwѰwA3 G|ve(TXLEDF$4MI.c(%x%VY[~Vl8,^^J?p6މm,0^6n~ շ${p]U!8LMӋDw>%gec88o(iF4/,jL"KEbB!\!$7(16~?USa}KF$閠۱(ڂGNulE"H.hfvdלaM;d=wc`F=D¤HSh V$XYŪVA5@* vC"$MKBHQꄕHQ d8020h"cQ*_Ifk1Fc'XNNdClbae+&=!iV<#w27ș[Rt:zJ"S**wmA>KA5"+뿸C}]}8q/P4?9kߵ|\Ȩ3݄jP\vP}(CZk K847<]`U]' "2]b; bآm5\ X&ƈ j)r5&BՑqfTL\cQHU\Z+PVKذPV%:N @`K3'jŌCfTh<ԇI9j~km֪;j ծ%W+A4` X)jf8aU0CTTNEe^_ p9Ue.m$c,bǚ:oʼn |Fo~ԧ{;w, Zכ& nrA9bDSW*9[҃kd,,0UW@@D͓b!f@"SqJ#JiW44ch퀺TK bV*l-R*$?W ƃu~dCMI7/!6{T=?*6!c4:0_ҥwb)`/+ݛG-K_>v.'3rO |ܠq8VmkEYb(BA3 =swy ),3u"gn@6ЎvmK m9n-k%~N nZ#"UL2B+._?ל΁ (6!6z͚( ҫZ?rb> @ AkCC"5 RR{[q %R\Hkv`ڢr8k)b @eaY zج6CɌj+t!Z +Q2gwdz7gc\Jl8ebҙ^}u˭, k5-4|`d( V;}CZw"QhGM-yçxКQ !#ʽfhrב5DlF`5&GVX[biK&,Ԓ>+]LgaDXh ܱK79 D]ې9޿cֹ ^!pGmWv !s 9ٰ yaG*g$H?c :'~^5߈Ȁ`ҷ1m8o`Oyg\|ͦfǻ Ϳ̚6jHmP%_:̍&V{*g^B-"$i;Xsy=3MuM$URr#mQ F~2#lNu-AQKHPd+c *U1ks%݅f%Dh+&i,)8VZfJH7S1~ c`Z6^*O0*JBLXSZf# 1!]TR0U3.e"=@etF^Y,G嘓6""\ k( ,?DSuG1"sr F8:X02.I-J 'W!I;\K76mI XZwbyt8䀷Re:ncb.Wz?Yp)O&gxpRƂX/}GeC̩'8Q 0?H,]/};q=y?-^֩nmgKwC[5͜(ԟōV HNa(%SRȑ4pq_N: 9 > sNSlZ ʩ 1ZTѸeh}͐`dE߱T@:.bK d̉H+\cĪmcdc#ה6,e/Llsce^zNͦt_޽!>ef"%x~ZN eeiʁl4C!rN(%EX7|ψ"`w0X87w'+Kg~׆.;0O{V/DR[;mhT_.0(U^DYP/ %i[b뀥#yNZ lwxީuXXGHc"!UV0>laeK)m0#b5Ah3D6;*&Tq1vYڽZUu (r *pkl1w?@85EEQxlZU\\ѣ*1$*g!GtbH%ʩ9 |j\gуBբw!VVYݿw~QBݓn;W#mF;qH=!|Bx-P2R /tHg<=z[&H"A(HV(yGK}SFFf4")Z-bO8$I#6\ty298V) .(- T!i/]x,sPC}cd0c9w|RQɺ`(1gTbTkZ/Z=|3#֒L6`Fs\}McZݎtEZ_~_MW^^lAZz!:^0%%Kx8`i)fZg>gqEؼC9T"99 geh]M_79h|7['s_qOo<[vT|hmIf=Tj;$;D<~ 71:QԆ.T%]`Yzܒfl?;5ǟ=&v'mt]/W"F5l[1RYX!P6#nD5r>kU 8pѸ\P\ҥB[K~yYݍj!cjUI36y'<MDQpDQD YF)qpJO(OoA)GMZOxHsN_{ްIUDKUz r<;EVTn8)KY~SSi$o~zJZV*kxlED=Q9rc)j$-Nrc?xزh<sN+ȉ]3asWv&KGT|K+\V"rg5c\6D+w+c] sDa1iL RSEZ_ХGL9kƀuqU`䣎=*jD3N(B*Y:*kֿfwO3#` /I0Dt4((?ܽTDQ3&[EEfGtjVO [ R՚A*:G鰵wH[EFnquvk mJD.6?,k?Ef xc~UNu FQ0ZrYbK$EDwnHM]Y.1̵0iWҌ.ukGhgdHa4ŠN^XSJT"R`2Š#]r]~PH'Nq#rZnF8Ľ ̥"ZUGҧ"SzIN pEUpSE 2R O䶤B\Ƃ{ŶcYq KlèHFURy^x'O6WvC6.-ϩ[_rXsӃݟ_X^WL5BW}-(V]havzQ!\;7`p3nøTӸ^J2mݲ=38A0lM/j CRH}$[MG `H3Knd8 kg8ys6Oyfu᥏%d(;DHA.*6OLw.E6c<(V v8 ۄ\J).~1?/~ :PL0!-a.dG(Rq[˳lv2IY΅PԶ<џrܚ%.\]I7}ݩ=ohJZga ȍ+ ȸTPC>WNyס7^9j}\t^kL،J펈*GN]/|/ऍʂ&-"m#G+|YR""&ao!YI(e15b3m!1 AIZk;p|Ɂw_Mhd̔"|Tu%ej磄Tbw`jPQvZ=Er"\FdK. 7}_Ǫ:Kf) qg\4êNy 'o_u_V(fH58C wmqpٳ`XY ,0rT(%(Y|>H`'co[yGsNgl;i1̵>׫<>\3lr+KMIwdč7nrҪ2a^XxV\PkF10!5Vd۞_n4J6 'b0hPuPT$4Rh_Zxl rL$z C\aGciK%VHRZHa*qqkOD5E ^snWIn\ L*Q TǭP|TR]а(eD/\XvY5#|hiS.5:^^_bSk\'wJ*mI'ZP\͆E-Wb4d ] (a_60Ή+qHcD{!#uB=Yw"H6‰)rC4n.TYnoQ^GT7bMn {5KhyXX*x %;M~}=Kgw?VDo>s7i[1͚$RCX lthߞ 4Qc̨P[_4*gZqT }\J"F!CЈ3r&;u2@Uz6(G _loI5@i^ClBSAǞ4wM1:HC-X\5_QYcC$]j_pu͇ke؋=k,\}J;1+r۳QuԎ^;VVNQĚbtp\e{aݏWa [7#o!MxI]w VM)WNX`û ,d OS'ns-"l@7<2cZ x4I%ҍ̆R/qcy-YNpDa[Ѵm^Bq.`Q$ (#) 4~z*kJ-NF9,1y}R$S|q8K|`#_Aq~vL'fjʕQҬcD3ݱ78m\˱騯`\s M+ - !"lꩬuRރ@/%_mo_gcm굟exvGG;x[_ïZhkf_ (Rvhc%am/7W!2R1V_[ﴂRʏLSl̷wg]*ZR1;[[@.#4^nw Dmkjzrc}#ɭmwq%0Db\$rξ~z2:rl8mJQ3إH2-ȵ(хH@?"2Qbϲc6GbH-шS%E>}Xhɳu=U6}=+?|tr ]榆 wwNY EFz',ªQ@W.wnMo88^'L(^C:JR 5V.:I_ 8|%5l }=ծ&m"+' (4(L] /Mv[rAL;onDL$4S;}HL+5)`!#ty$M.!,A+h$XjXBO$HK7u1_#kv.\VXᶕgM:_xkW-?kuZgôR@hcY#R@nWK~V*A݌^7\zؤ ;뷄(a0!@E% i&XI+r/Sy-VJB3e--VJ%@@խoG Dˌ}|vLOŬi;g-` w}r[K: -GE4ÞEˁ٠ͻ; Rш8rSgAUrAkɇȖ_gdLZ];6Q .8?s7 n5MF~̔l6z *")m()7$4J<FzӊIHMB{i(4X?ɦ |Beg 9a?񫃊=pBe8 HK^gj*Uqqt$<b 堩n-:%^=+M=2 REM3¤]ȻHF$QNUeE)}96^ۺ2w+xKmFˀgC^q=աxLo$r5cĘ0"BNZx y#Bg̅.Ϗ'e(t@#YDvCji&n N=HKyfP_X:q(r)T#AD!9VrmvR;^~)|33vJPBS\0WF"`(qmһ?=ˍ9+hJn(%VGgX<5fETůYW96э)&d\}:mmѣKY%QFy5emc-F[ ;(JoP1ܶc, ?+]FN(>Co] ұQdkuWBtXvajŇ~vGv.\}m飅*ޕMW H]KLh 6AHo]V:Nծ/@ {gc>/N+ױvQqbt֧'nBH&j 7Uˀ&3/j;9:^E>q:MdHՁPi1iF=<\}S59x, o&~^HK\>[[ҢZOX3PMREÃ=^?\ ȴBzX2J%⌔dZ{'oX~H|&WCj2;ūTL66է+]K6r~^k9sokIK.+h6??n,X#r(`XZQ|>r\4Zږ[<0zhgZcB~ ua4_t#L>,JRHӴ`tVf_8)\Oof$=5-UaizM5y@(RAM]\c;1ETsδ!uTWpŰ%5DYap!Y+.(TN"[A"% 5A% }6Ng+ -FʼnֺOc #%Q\Zs7𖯞ϻs&֮Yr 'l]t4ShG X?{(, "(#V9]WuC!xHUi")-)'`A究g/[._q[fDmjq[*?pqT%?*3 дjD l*Oь}mPyRK״1K+Z2#Щyh!H{QPbN,!h(laU+ʃ(텿-A$h r)}fDn:QSb~xc<;lϣN}MS)-Dd}71:5%*m̭bЇvVrFM{Y5(i˖bU׎^Mn Rb_NmqH!  /eƆfx}>RrN.Lj>y>Œ^e~f#:@gQ(3k޷}y.#0̨$!ͣzאeUUqc!ȵsB0"u~Th]7 "Ys׊5>)+[S8V 0X j-΃۹XR6lcRY7\KP:MkC $^%7HO_ r\eėzL\knvY3_M,G#7Z`hFsWxmرt?47}j6??s8м#u~F%K!3@gCG0,sFkVՍ^ Gn*Ca1Jj&p};׳ERY(cBJ/_4Ď[[X7ZWeHQQBΖAfDq ƹ 7EFRJ%o1fՐE҈t؃ @7T^m0YwhߥZGxhVeiGhrjQnq`~K醭F5еHI݄fKnк k|XrL-@5~ @Yp0VCh-@ >pLj,@i_8 &L,BcۏP4fϼfey"QQ#jD ۽K瘬s~!OW@HWVgiG?I_Cwf5u|zi3h5arOs$ @"BV"X B8OI1B]]ڱI:]jus~9BTXc``ߖJMqGYHH%9+g#ȥ^af Zu7aRAe 42i! q5afAb,"IfR!I\|ho1cZ0+ "MCo?/C Q]hI?W N:T˵kt.^Il4'eRrF6:SrH-ʈǨ6ucٰgF ɗ/l5wt-ovY7\7܊#N ZQB$,2LG $Z LB9q!i01N[ ѽ1 #CEx;_ׁn(0 @ؐ>:B ,e#DdZ"$c(aZR^㗶@g Pm ^t}㩥*(wk,CB}V(P I?j>k AZ M=Fs9}tTYjT`u2^t3h\ƱwݹXB6a)Gݽ-[̏f}jMYRUF`@.I;)U- -qi|EӢ{3E=`X({eN\ ΁ACMq(N`Zccs6#^r$=;mH(W!%J32}lwr:+hb|MyzKUKV/~32woSvь{S>qw<|e+}^eĚX5;EU} MUuAF#:݁-3'3lJ6lZhSIXufžo[xnu/%&, VXYm')K}Ƞ-b\nlƽ>Se'B;0dJ h݅N"5KمQM;'рj˲eLC=7y/q{Grknܜv7;Dj~|8h[*۬[נ] j~Pˢ.QBn,ywg`+Q`tDgȭQ\ PNl6lS,zrp`0T4'dm %D*oƺDp-q_W^Pf~qUo&9abK=6%V95R%C%O5&[ bЇ7ы]`ߒIU~MD\':zڿVFF#HbExC#!*Sa 5shOwmN#SJ@Rc5<ĘMҪpr1.jX:\.[$76#Pb/7TB#8{[mamx)#Cc2TTNg`71骫ǽS-rMx^3LdC+E[}KfV|yɮ^wBͳ_6j*`12$I,,çփnכk19IJ?ebI0& R5 $øp:[޴?-lڒ'm]a'\Y;0!8E9:k52D2g1w*Bhi'ph|=>ptݽ媾oF7=0vt{?t"e95߳Zy|/~&JE$@F1F08ȣ ,”tl25W"zK0FэgƱ!orT=|p~b[(Ռ1d}@Xbj| N_f5E)_6(f!t|Yd׺h)jxڹ b|ﳺȱFJ@ASmQ\nZFUyP(&5NŌZHՋdi# Uڀt-# [0~D̓i3kNײN$B,u5{rzݞǍ^Fn|?WX:æѽ/מtLAH:{hxo)U8|:9ÈJֻeҜjJSaN8V)7xGlq*W6HMB"v[6 OHAFdZW JMqj 2=u\r&<0JZY7ېΆ%B KɐeBٴotX %xP Jd6g31w!w[$TJErTnÑ}@\MT; iO}'umS]wwW XM7[Zwc%K|w1.wHf4nr͵]oS%JJSi}WkP+K."\Kr#Ibwx*D$| %-3ܺ*YuWnBD?Lݴ}6~倂V%v;)Ȣ Ғw-B0D0$ʐeKKKCata{$jDM2'Rn[5&;TȎz沃ym} RXyԒ۫>ujarr0ݰT"Cƚ%-}y야i9t V0VОˑھu Mr"'4r\nw kFٜAgZqRX ёqMXM^Clce0gn)c3@`H;"TXZxUp(,fKLK}si%Օ֭{aß=TOvM@WǛME故_DNc=}<è5Z 8 F̬9e*]cJ-I<& GAb)D,8 "XdQ8PcQW kypmJYǕmB~SX5Έ+)W0 k0K=ju UHm7C#hLGmΟә=47~ǟN3JmJ՗W[n1_$ G_dN`BN7"ĒH5w 2Y(p |OؐMoQ$YB[&\ߴ-:%V 0;|! ae4/a(]6!ppPRCn*#3t:Cߒ#N+C䥗 K=1=o?ɩz"I[䏑l"%8݉ {r\Ѯb"sؚ#pv^Cذ~ ȭdιR-|{WC~-bj@Dž B˥[w465V}/sJ$x e ce`I2x9L_)D'o,C ΎqTк"szŌ>!93[g3l= v|5c#ߞPY~8u?ߺtMb~׹i+IBȪ7K“~8j&2C1"Ƣ&C #" j\O]<iwW+ #IT wːSZF4g^dmTʲ@)'TQs)6[&)(#2oݱc=rǾU ڔqx-uN"4,f- zݲC^1Tָ5R2$h%޹tLZgnVG>B5|Lw]T%I)_hRNW?QqS6cN>Š99. ,U"R&]_ r^c8 ʶ \j80beD  xvJZY gF{ _a"B[ExWIn,D)Bݥ% [ʃ iQ" Hٷ$@`Len}X DjΙ[YXJI"lX 6JR8˽U;{Wrşa/*ԏPxq|n僝rF=fH ɌXAW?umA#&C;wpal7uFbYh:hNM#հyWUDT] t\-NZ@E1[+*\VOeٺZsu,h*nz튅 {ᩪR=T)rHK΂c(͙]tQG$r@-nXcrtyUkO<ciLg[qoǩ%R|_=$)4RFo5PY{HS5r,(Ly'V`tM6/o>'ow8=bjtMo~^LT[kШT]IHiz6 +B'3 z<RaDB._{oeYU~pιC9d&90) %<"T]]V?U[*KKmGDLPPQ@I!ɌLr̈{o {>Fگ=ߵ ˍ{PeNuK=._˳N]!ˆ, qBqڀQ3}[Teܚso2]@: n̐\`"IC9wԿ :7l;ӻ־>?g.qT ksȭ=%zP Zlt#cz&&pLD*#z L\}~Sz5:(gzH,͜Q) A$+?v VStݬYo,]y8A  xzA9A#ʁV}C쭬pzAJ~,K@$h-uvG ׽\xG)h8Y/"ѻW=MzQ 2,cb&^Mj~恆FΩ7j;13eSsq]4 *1ߺ_DV˟=%wMjάTFg]q%-! =d#| KYraJ.Nd"M#zr 4S glxN40HQ81"E:Zs {j<7$Aʫzׯ@Eֳ=ajL>IyI|2&ν:9y(z&Gw{)H:9Gs;=h)r284Gg&nCD^j.Y=e19kT=5A* *1ߪ_v٧aٲ f;G>2 GCR2?k3xx+PZ6A,?{1p|"|907jο`.b?+GWʯ"_]$Ė &&$ #@Ep6CykA*2 ͋ RrgS!Z9^z[s9sm+yπҢhaI۸3%y_\K-+kmp W},O[>1'. ?:o-2B ;8^j%27M.E"}%ȼc-q3Cw֟1P6Ab ?Wn[!N^A>Q&D.$"B%T۟:ھgk2ATS2{k"'/UK[{G9FO%]wsyoYˑZJ%qGQY|ܟǘ4qY닮{?pdGk'Q#'2[X/ W\۷l3l/%A**/,JEx.lO\\.Cu 0|w3gV?\~2FIms\:MKg" bke 5D2gha37<]j+DS-r P̻y ~{=;^/R;ϩz󆞗zo5/k3)F쩬Y\@B\JIߥw-edIB`?W_zW_֎GAGohO7蔁JP(C/T 6).={/,ZJ?^si_D ~œ!j뿽MO_>X8Yy^Wq),G|MT\OZBS* :2w#bP 5Q qy 'k QB%1p@ykЗV{sLum&@- Ͷofش;K)HaQrFa1|{ 5c:|K^~kx͢j`t7GZ UA %.EN#&/8 BX.C.ϔs2'c68&o~N9u%)!zdf,./?h\Jь#~I~zg6k^᪷t! 0q [wn ^E#i N*UFWzӹ8o/FW!@eFBJs\R\S(K_'W]_}wG^CQkĤ. \HD:yG ,&K!鏨-@Uo ;k藼Ӕ3S"x[!.Sg@ 3_8^%&Q6NHE;u~Kϯ8떑YWI3~vli'r;t|ZJ篈@MePs3l,XM.亮>5CP$aϒ>V(* yQp2HU.$sM@oa 9,S}hp-{o/y?HnKǛ/ԺJepEͭ JXfGXvNΚϗ_UAh\A]y1 L5UͿ!5x 9p2BJ |^Ȑu 옪:Mh |NmmBJaB t?8g\hTsu9̜fo5hu=pĩ]`Z}7j]ZhV㲴)$!CEj9 tVV(M2%j['k:Uf~{|W3UN. .d="X?c(Y[e% R:p}56~1~I_i!,w'ov)8˂U#?H\t?_ssnzard3JC(z25ZKT']IQÜו0MI4@CB($|d]XaCs\1}BQW Ot5/ȁf忴]4<(tWL2t[e2'eXWNE%pXYaˎo)|׳vrB\_N^y<}RS_sGxKS(hC"#qJٶpwc $[`!ÃR=w=v^HOqĚkɲ#SX|@ NN0gsL_ 筷]Y)q˚`b$)9{ǘ9ӹdotiٍ"!=ZiS/吉xtGO ;\rt=sFo`9"wVVG솸)n!֭ 7`oղuӁꀢs9)2$mMk128Lfv80m`d bUwce\ttA!, o~9DƛeNX+wҽ?"D-v\?d͏Q)[rƙ+p:ctWfLAN6#Z X_*o,Vj90 '3Z\@oOHK4t%#>5'WY5^LrXxAљwO#3qtZ-dDgYн_׾x 2fy6IFw|wD=7~Qff7p3SAP^ጿea|_@HA7 gSq'/WE>S,oZ\]I]bz7n5% \Lr|kO& SN7]kQXbci+gY:~32$Vyd>wy̡jwb1NM:`«V]Wύ.l3}dgk1}O)e/n/AUTKγPw_+^ +XpNL"b++"6=~Ix"-#< }3Pq.Ʒw q34T"syOyUNxC]͟db MF35!nwi;ߪ{?H +zAk:ג'AF4voOgY6Eef$/R.~N *k L BE {s睏rU^өT}oVUE`{YgP.2;ڍl6ypAHR3ٜo.oA`; Uzb/[ E+Js7^T;/7iB*aZA>Ϟi‘CjEW*l,hA/yD2Ø#l,LlKUf}<95i8fBCiCg UpquFRBiMJP܇T)S$&L.kl'|zr$ ˹~'JGE'$ݘP.6y\y̓\L/W~A K{BbFJ.:J/?FRk+/gP-<*QT&%ϒ_uk{a8,NKCd>H;NVλgMvr$.Ƙ\9뮧AN3 Jk~S/7c݆e^!~]r HWI֒!ŦWI& Un!e ʖ8IjI. l y JIxݸr F(2 ΧtP4P֭7;iK,Q/J+-a):ݜJHqpΑ\Q< -Ub@ Oq?۾q7СCu༕"o5ti}uq8?l/xD&*!DrR3 :qaӑzP׆g[zWRcޛhliv$&Xu.GL@7 3<ҋ+l.5H e734x'p~iϢ~|ђt!n6{22rZ{E/Qox~^ƃIF/QŪ2* NFheqoIbJ>"]FX'd tgL%جڐzPRoIշwf&ق|_I!NCO+0xB[s ᨮ]A!(i9玪J v:IC@02b0 B->3v3xYD 88Mm/xa {y~-֝NW !t1|BGVH# K=zN 3@P vӨd9g םp9+ KR󱛘PV.A)^g 7gA t ۣg]xv~)afdS. jh)zᙄN;홺>LTBms܌Lwɠ2]YGOgǴj[Y`fы͑M|Zi,^Vx(Xk6 (5~@m*{1_w%-[ӣ(ZZYyV9kGf6QQط6v\Rgo'I;f97|1}z_*3EN*wv1C2ru/X_q`DE{hޤc>sV6YN{LD+A%C1]w1RĔuJ5:۝|_"$yL㸋'<萧Y'V,=z?-36?-D~FjO^;Tc YTDpuk(S ҕ#aZSӌa^slb3׼+K(L68e cU93MOAEJE|3\sykVsǡY#XtJ:#iIvg V.cI-X4eDlB8Wq-Sʁ6SbMz3w2426}3[>덌6n^9Φo 5KYmY:g&KF&{D~*pv/]s WʜFMhACoJ09mxnt\LdlU cz6Tv;Úl %PhOM1U6FN0 {I_ƶsQ'6/PY*t6)ega $3cW}Tǿ>t[)/:u.*b}ElĔ`B {Gkҋ%WX C$,/ xpXXE<'xl!\Ud@҉bdž@4c^MkbL[9k=R("*ab:%M:oSȈTF%Igʹ?ϺhA'Gc.:w}+Oy311L&yKթ? 7*t.x'd]ЉdeND_ \NF,PtojS0B.CHb_QOeLyY^}R^q R=҅$#wEϓcC3\}Ow\ZşDžA%NLcLLyx ;pnt?2ħnYp;"`fŽ7^;!V>LӪ]&ⲲΘMwɵ`ﱦ !ƞU +`3Nq= qӣ*_K_RyykecviH)`uwn5K~n #COq'о&a^7Xȥh=օ.HUR -{':쟌I:]G-̷N%;+ʸh93ۿ>ׯ@_ O{,\% dG^Dp4&tXJ>7'ĂCJa^y6(  ,;"tS_h?[(FJòcڎp駄i5op?/J}:(;ż:C,]yNU3~,R1M(qHP.i/Ѫ$аw"T,iq B8->lvpÁ(J L? kTN&0A kdx}pP֖&2(ER(aezK[`;DگRE/ʑ[8>M\ usߊ F0&:BJN՗*AX&4XCfdI/!%ͥR@)DڇXu:鲿"ܭ]fv#({1Qg<$jRPW=HSs`VZ -gfBKBwXkg$0P\J6V a޷=0B0ۮϸn#\\Xma Ȑ-BV7ݬ-O8Y@hs81SfJB: MB K"CK֒@K&93X5x8cvsW*tXxk h8l1N\1bN4 ;.}B?E(p:,Z<2Φ,sˬsuz¶3 gt@FQs+PfDAFU"Ig*4<3,kYmqP6㒇 W!ʶn~ BXwi4(], dr(ຈt 7[.P1_GctE X"q4=o@ (P@ (P@ (P@ (P@ (P@ (P@ (P@ (P@ (P@ (P@ (P@ڄu=%tEXtdate:create2018-06-21T12:56:21+02:00?%tEXtdate:modify2018-06-21T12:47:10+02:00?IENDB`yubioath-desktop/images/sky2@2x.png000066400000000000000000005047171412677075700176240ustar00rootroot00000000000000PNG  IHDRߊgAMA a cHRMz&u0`:pQ<bKGDtIME/ ]IDATxwYQ.?UkN'uĞ< JRT2f"E0 @@P (^09:>yUݧzg|>vzϮUUO 3} |'1cmBY%`:?sł1JA/(((O_,۱fu9`y0oRl۩t/ /8w1ϼC(x􂂂{G(>p1u<l:hiXІL&]7[˭j|S_'o~൏77>o?JA/(((x?>{G-M߲w:ڽk-0A AxztAu6/775$}m?@AAA?z ۉ5/߳]K,؏<1G|_嶩7_sY-Nu.12b tu Ċ#CC,M Xkj4^h =gv!O_T<(;w|lR-wጣ/^Wr 3Cە5az Q&(*֝ga*b TH֩g K8sHD񉧿7\S:ZAAAwoq@0^oaIW0JJ"+D HY1C)"Q(Y %`ed 1:C2_~)h: |/=J^PPP_pczҊ{~svt1n*Ě+]A@P `̌*p,1TL(rR(Y&S]8{L‘3MeG)|9qNu/.~-SCvB LMUE &1DQ@Ps6!0A M 4 PzsJst;:W?_OYw 'fzWO'[?lۆc\oy{UTF9J 09. %BÄL(1R&TU(H>RfQ<'Qx̠Xtx«s%燐ເR x| e:?=O{޹.𨉈0n&3n׾40 뼕 XT1I"$ 瀬$ gE8- ]l˅ep;PPPPP—>yCG4Wʭ]}#.La*tj`Щ01b`DEbA[ř!͹TYU$@@6fW&G,*X鄻צ~ o;yFUOewC/((([1z:N:ԕ7^}73i~Q +tz̘m_N`z)٨p2\ Z%bc Rf$e$+8!2b0HcƊC荿'@Ώ=bpA)[>_SNg}λޱ,իS DpPٙ:(F UPM8D W&k#}^ V;0! PEBʄ,r" J3t1omVyEW]^PPPEu30;W ]׏uw_{w.i"bPW fߚ3l2)rbJ@`2Ɋ50B\!B BP(@+Hb@MfԈ1|`6{?}63g㫗|n?E^PPP>yгE.eO?^u]{Qf T^RB T@lśވaIAJYAp)[/B "I fdר*T +,0UOOÏꍿuر/_ES(􂂂æi{qֱQz[g~=sKk]0>0ZPD9Ȝ@Y!`5"Hdk1(b$d@ 'Xjvӫ*f>$H pz87n]~G;ePE)xן} 3?Zsl#bz1&I >WeExg 6qQd3D B ԕЀ*F &g9N tɤnTA' 3#Nk#_O/4%/A8 xcj }y Q*?ur&f3A(< cwj+D@"*`wei!0j+!>eFS%o '4INm>;}O'oC ==¸r$oxߗƿy=߽~CW J33&MeT_΄ɺɮdn Eu$,Dh8 E`EWIatB)#+Mdml?sgd |Lz1Ջs慿:k䨗~Y P zAA<>ޏcn:UO8sҗ_|ݺgCwi^l@\rU-HFokc"6~E[p&\ybdߑBZ&{%FNs0c+ ?nS'(E!R y[:lܻ4kM=T/#zT>;gaWrՀ&QP@6o2 v׶<@Do1={f |N`B䑬=, "FA  M4G>uO_ ..6ׂI|KUEOa6_-߼GB|~0􂂂);>)?s9\/eb3 "6?d-.KbE`b(퀝։gӞ&@57Xdj2 ts" }R6dbUU}`D4Y(ji-i j t怊9=" HqK1M׫3c[ǩb3c +h>o u.xKQ􂂂=?e qQ2/֫ky # )(PWVU:dcqNd h A.U~FJ< FV AjoD^1RvYm>VW5̦oWI0zr02o΍~8k <y{B8W~_u~vjZj{^~q2ziWYjd9"+!8[pPi Ѽ{@lr~׶gc*hŭ 6F=fDUV@$FS;J=ohdo'ĭۛ)YfX*>WLV9`Zqq=%!F(@BhH@C|Lv%Gs .*ER v?|g>&ԝ'.+ϝuyq SA׺4;(@fLN@tiZCLcq@Nd2#%K&T8GR"$b/ dcS3#%HvJ`: L2Znɴ˒=S&APuUH{xXqI3K?_GfY/Y!z9kv1N=6 K _C4ctܭ919F!=(!?~^7~k˷o| a^ЭCJ3׺إ_a[ |T0N 6++R:RY2d_ N%۩}ܘtS+޲Z`cqvv F1jvhi2G A8|$t)W}'2g߼2B))| _0>GTϮ[}Uu,FYg[EAEbm$L^onL_QFE@$ X{ܩ`mbNفtRl;==BUX7Zm(dֱVLUյ},%`6!dlm.z>~lJ9A;ܐx` 01zs#8ԹZy>ui^PP;qyy,]u0X 9S}\aLoj;\%ب\ڝ7P +aR1 QqOu6YiC0{5I;-p85cȶ':嗇`Nڋ"PUW:NnBv=r A5q3߫r6| I"97瞱at͗N~_} =Q zAAo{1cWnOp.ޫvȝ sau0=Ș8+Bdߗ]#KFQ2yMV`]>?+"qFPPGuTGa1~\5 eFVND 3)$huv@+̎=FUDZ7e7itNTrwA(x@aT@Q$UvȈȍCG){V^q pٕ|滉R ']O~ұxcN{{ofi[1N5boݓ:D.WE=QŨA4lYƶGd;߽3c Ue&)4 `mw2q< ͬ1wf%XwF,/>+ly70,ȏ:~p>L\q?aR Tx?^xk6Mus OoiL3}A$؉1+یrAP|{6ܙb0ei{im G6LM ר ye'N@1nL8  ~#Q"K @]DRWƀg&Hr2^ #`FN(QeJFؘPCnխJIrP"z뿾|'uw3k.wAO姡z6+_5K]sgn]`4ATAjLXD](&d6ɉ_mKvg"'Soӓ9" Jar8`ؘM*n2^:7z{7b9KU3z lIfni3ؽX}o&3DRt*cxux1ɜlr Q>o| .c2ݺe{Qi{x"4޵t%+F&9|Kyt '|\{?KaR +Ǡ ~Qy5f^xt\^DM6MY'֬fJdoe-E33cK;Z9`rR3xMSQ.8 6dr #kX*ghۉ9DhܞSkA-nÇ 'U$'Kjq1y"W9 &Ã{֫刚|J 1D4)Ʉ: sTw˗f<~j '<\{?K!R /b1=GO?-w]c-;131˨]o-9y=Bn]eES';hۚݙ:XRtQ$mnDG Uv':5ܗ] WIDfs&DZzr*Z{΂ټޕ!F& tume/O`NNݶ,Ć!&gQ ď=zㅻ6q*?pQR p|㏉yC_^~ʭ?aa]iAk{qc{eѝgDb:HD+×IWˌ:S^*+~(1Dm|83a6wGnێ"&#F.9S;bhdBds)^ Ҧ˙,2PP̺t'u>ͳ=D';$vh=Ȯ(LD FJv8S L;nrW~ǞcʿߗC⍟YGqg/1?n;_X!R5yPg#mU kSG>bGɰŋŕfBD'*֡ZAb/ʢD˺VG>VO.O e;̝M:f^7765ۇU3!mP: T-,-#ebx0+:ژ^liBH [f#L&bbR #`>RH7rᶍaǟcR3(Û~|;&W-^sY +.@LjvvzN~uAkcRgz]T1X^yxqcRm(SKekm,)mHM"^5V+8ers2I&) D[``?E2xJZ7C5NWbBd#{ :m x(L@?LskTE1N `~qG~[=d'Pv(:>Q+/_|Gرp\bi`c@2T&bIHV\c'Е֋C1Ű!ܿAϢf @ !Z+u 졪 A6-3X!Ɓ"b;hH-NLJFEӈf c (PPHɭi3Ab<0 (&vrэncqFP'ܱ@(ہ"Ӯw+F "B2Y=Fʄ5Ž-K<~t?}>P:􂂂*֏s?_&ӿuW;tkͨ*ڊ$׻w.65FX7WT28DF% 4Gj"X &E(Sklr83o[7:NZnb#mrRDYճ`F2z+z+MRϨ &o;m$ċҲ3(ۈ $ mA9!Wpǔ29λᄳ_ Q?R kxAW_V՞`;%q0 & ^QvNFi(w6dE'}ww܉N.n3R~H􂂂8>OßW_1~ng/heA3遅2X8~:7y-8Nsv&As59-+R&+NqX 34e`V-,{7'~r[V#p&[Yi]I\Ce!0,|GH:2:݈n7`fF[aGՄ^t;v;]xP CMO3XCJXrL0B1FKlF.Y1F'uM|?q9\|.n,3((((X|Gsᆝ_c=5T0 0+$,Ȣ3u TMB6ٻxiC *bXBɼψ=U`|dm{wy;xesA&IK@lm`@X7 nlB5p C9i6N&dFc0@qڶC}/3u51>R=^PPo|Lׂ4~ a{筷O?qr nƹJ a%'>/L 'Ygx!E')OT Hb]/kl"f$Cl:U<ԒĜr\0Y !8٢8UBNfWL:OٿޚجW]ƆiLhU24b,[7 FhW#`D7;t;~Wѯ2@g߰aq{WSPи,D@&٪`yɨ+cq) 5 1g|og:EY_/%࿄yqpʑ瞗+ǯ 7eq&0D:1!REm,{~Lb^kbՂF[FzkPopupkݦ2 /Wɯ[ђ_(@Tdq.os`:}`iݽ`˼ܹewbi)cuyZf 7cfArA2#1$5HMBjX],, L` F܃^hqq_y a!!6q^?OSj{-,oGBSJxgw}G~گǟBXrJA/((OoNX)ސ7ݕ߼vԛn5sjY"x c )whlh7)ԭJsŃ[עMn5xhJ6۶ݣ"F+&{L^CG5o+g@-C~0eB4" u48` uy $ y5@<k-cXCs3R Z8i!ŝ1WWN.L,d?UZSzhs!r9hJ_Y9eNwmx!nHE))ŠxǗ2N?Vo|~n cPn;}r{OڿLk(0lLF*2I[G1.ۡ q"W}]ҭm*R@lzSB)矿^ g#7U [$\Hu9bD7ֱc#^2ٵ7Hn9YJ͝10:1O< Z 1ۖU/CۓU@ ]cki6=yLcy/}݋)ًAK2:XEPr" T2&9`}>b# MوW%^Oļ @0XKmb܋f<.7FO2^|+\I?]P zAAO~s?'=n?WvG]7;wRT!ĈajnF[V"T8QtnʦCϢQ.T-NDA`Bm%]mDzh"e3GK\!:v+Y`ѦsǞfΔ$5|$YA&P牵$VmM|b{4GQ*H-`b&ځF"Hd ڋރ>EEth=ZD˨d]]F *=Y ôRmB:n6cSZ}! |3ΦeYU&"v\R%\sfQ/2G O8{sܷ-_s2*ĺ alLr@4Q}̬=ȄA2I,H=);!-gAEաU?oo8׻CK`!;Ʌ`mdRG6#Yht6Cq%e0v.va%Ѫw>JOk<*zX4/aJ$CD1[) YƆB`u8B3X\NزkXNa4q f0 y=8kLMf,lC@)U/;liG:*X+Ǩ1G,,WhF +S7<{/3hFz =(~C8dO:On{7}t\Us*{sI0 {A5t;Bg4YX%Em+ 4Y}\ rCӼȤ^uӧ!00n2*"e+LD v\'V1YëgQ`([UQEF[Z]{y$#MFFAW%Lai<t q=j͇acGonY+t*roȊԌށص~\*.a#N92)+) Tw0EO8CvljҤQ߂cH`m_NjIݼF"F)biEьγ\~Uf ߿J(JA/((7xk?.uoLx/߼=zTcf [Ą<:fֹ5fio0780BTFDji]kd}ؾu1'­# Wvm{+>N-}U`q"3i8ʈ1NX⧁@l01a  uv/f ,(d5YrkYGOB<+x;ē9GaD"@3iq7($YFx$i`j4s`۵k7op&4| C0B@5 P] Pw"fSgay^Nm@#Vȳga.} +0! azi鸩۱xG=^m_ e^PPpWvǣ]cOn3w>QUiTF s#pp9E%gaHqc]eF6Fj@yֽ:w#q6e׋3a .a5}&A,dah<11[/@ 6=dݶ4jt}ZކGjV`>8gB\^k1j ݆pqL QB".Ȗt0wcq'ԃW!߉;Aa( O1-\Qc!5DcW+hYM(PDTu0YM_HhrD#GPcUgxU=v|YW~oKA/(([磘(-8>7];gػC .cnZ0$`O B#?MlP;%[$v;@}~{ak+DAߚpSy_qhBU21ah^\euw78}MbތeEf]V@ySǴl6o/>-Gp8pҋC+iehv߅ߊ;*˩=Kk`iyM1̌A뇓 =T+wߋ0`NÙ,܋UAhV<%@(QWæ$,{CC1d&;ײ!hӗ&G$D#cw y#v|W5q~#^<⻯9c-LW.5[gؤb``C% [i;Kn @ nƈcF$32璋[u❪u3[͗=\L_,ge0X'v#ؾݓCջwdWq=O /7I=i͆L u(Umk`x0d9Ɍu\-f{Ih9NR4{"[`hC#ƞf@Ӛum`JZB ېK8ESwG= 13ޅST6R(VV3nq}|k4\`q&# H'`4X=㈭]4Åp=,DLՊMSPb9̢.aēXVܷytPЉcx_LȾ?ب @c" ;3"k1c gE$T=faaHg<\z!?n^+qշzUz~~i/xT0,`Q`65pu»^QϴSR+fYRf~daЉiʶ'"4٣QɜŒŠ.Ֆlݲa)`{ ߁y!FFhTaV}~-DA4;4}\ GjhځYomCUBރy+b3#wwgu,L?kW^iΨ \~. ň_܀Lcǰةvbiȅ Hmh4_72nyǰڭ.% 1*XӇLn,mž Qں`}qDh=7!Xo:&)I';t5sB"5TcXfsxͣ{.w<! j !݇,}{޾D6p86ܲp~b牐ɌdH:Դn| d[y9U,`N kNs2?`Z6|#nk7G~(w.+3{W u$(lE8®2|z@CmMZmybۑy( ~$ KWE=n! W5+ϽqeO/,l}yr#<_>1I3+(v|RkZՄGίιF,|L)#毟~o8{s:ҭ?nY5 ajM>%Ș@[mtَAH\ :T.U';hM\ػTdWmMP=iW۷2ȘB ܔMlH6?wFKtr0'G v 288^M6KW{V쾘~}+k@n ]A<ijN؁zAء˷3]m;Yܱ8u[?K{2r?mqĞ?ߥ+.,ހN@\yxm=C{v9CiܽrDA6E2T" .Pq"L%` ;Zvc g@sF*qKQQs{.~KA/(xW|t7pEOxUze~[z?;-+ߜ 2 OmDlkfy* EJJYl?N5! CLNlcw.ۅsş|vO]Sq/QPEq-\\k80x:h 'vwci\@];v4V;6{(Y &?漧 *R|uWPE;pCo,DGD1acE<>? iz?o˷|ݳn[A4 V zHb>6oPR@kry#m1V'/Nd>f;&Ol$ϭ[g FƳnf3x̡i(t}^'v1+Dh5Y k_H;Iq2/uNP[,^䳒7vYly=Zc<FtcuYYC΂hbNb$4BS] u;@M=ϜM <۵qhHYvy;(LXKޱ0l| {5^49G78ػ:➅]߹Ux9/ooߟeu=7 ÏHW5 l| +! Pe+$pt]H6=ѫ!]dE&pVd@jL u'8 )cu l]v׿OM<I~{n3(!_y .gv̾]8"VT_a*R8xQmDj*rӵ"|LR5L̉(xnӷT=ܴYDjo؞12i2z'F9֡O vk*Z'4b3U$Iqcg!?z.kB`3$LhMCku p;v6b[itnӥγ֓ݠPaZKngFam!ي&F}I4!ЍUUT ,Ч)r**Tj怪 @)":ضv|줙:^?@AAҫQGO\w/Vϻl>;q~.074 T@dH+-;zGNelqzp5;yMi7{vqx mF*1ٙVm^'{O'Ձzҙ2McY;A$ɦ%b9@ʓ@ Z}d2ilrҾ8DPlqaL͘H@2=,bou(jlfY%\~W~pp>v})>=`(JUkl[AB=I^@Q@u+Q:"$D\k@Ld 2B0{X|U@$8)`@Vt:hb$uYMGE B0$lfz_\c$ v S}@oj7;otv]m%;Wr7Œ9WANN`2fyps&B ȴƠOٛ.ͲCwr75c y i yO~b&rܵwZczJ07ѩܦ5X6ȭF닾N"MM[Yzjo i?N >&m'k@tCN:ș7C;mοMpTm^W^MgM Ivn6x:3{ m`=5F#)hI kLjdL gW=uf{.Ʈ]ߗUxk7'uk?wo"CCB G?#f[ 6>5 5'k4ZnV$-ǔue:>ʬ.okMlr#=e0 5VRWpRswmSpV_R x|:(N[e_[}ߞ>ƹFU+fg]mfSu+j97'3mnsu_M{%Y[[c4)M^'ĺxr^^IGL !&VdVj)$<2SS;AQfL"B{7$SX@K[ R1by7 Sqk@%CP׽mlx 8}Io8,oǓg~z8 \wY?H5MFڤNMc=Xdp2$  ![Hx~#K.s$EVtz8_3Q% [޳ZцNtH-xvꥠa Z:e]E0JRpBH!C n4|k tKXLt0\s6߸/ 4{|8lz;e/]uq(\ը+sL1nY M B y2S" S&0SkRC,fsfz۵3+4bVJ,NkpH9`y\c߻O=.i>_ lAч[!dI]{g]sn;8uR#ꈙ)`m'$&Por[UQ&nj7Dv3|c`ۃm $8:^Z9Uu2Vl}o+s&DqZvO;&¸ b֖DǮw[@ \'0bDgd'w9w3[qgnߗ+~+xԁ#\z3pW]ЭO7R`6Y'; glZ }BN(ھt_mŸp+rƑ8-HAlO&hk9ZOQsΚ֑Ͽ9x߇ny^P_:xӗN7{3;֚06N'T2ijX7-)nA*m &_(0ɛg Qt4vIVR"0$ E h:ɫ |.r&}`ɤ,ly؛~ 69HzGB7VʤnK;*vBzllnY>dAJ$j:D\67~z!(a$5f<8xvD8qǟp4.c~^_/>?8?>ܶPgu' m0"ؔBU Ԓ?~r}?WU PyWޓ hCP 4€$f9FXkãu}ಥ_COڔ^P_~%qUxaNoznzͻO߱Eֈn7bf;NRnMcFVoмsH-Frd. ][ٸMhK/ck:a;eRhlJڑudyMV*Z]k01r⟪KH')oYILo {J5sPG@L` wv`Zvf @3hOxtTZj--hz! QR\.Z)jʓT4f$Rіg#Rbl;t#uk ghM11imNm=.`ai p0˻IN)s"7Yu7X0=[ϻ. bB'uc.!JNJu7oӉk$F*6(G@wqA8\A}ǩ}W\u |Kk~,o{^ӟThح173"}.ʉ[@lZja`A*>Mہ, p8KUݠ H!Xj뫀y9v8PB@#5T 4 0{ /7^JA/(x} uyx7zM{fꞽ8"Fav WW[躍||oĮTReSf tYK"j-\;lc {7/u\E _()<_IzF''IĮ`ǍNdm궲G6lŠD! ^HnJ`Tn9ֶ4=l41 ljn2DTB[8U<\o;鄫>8w!7}W7CHj|KOCv,ɧI~@袪+:UFlh+ʃr$;[_LHX?R.C_k<1ivڇy4fB$>iAݮOT͉b&D H<~QхԮWŅW}{o) _I"?ny#,̾=߷cGDt:YŠk]$3P+́lfFZ#iK+V'hY}gm4E{ `$-&| 1z;oT Y٦ ֌uLRlw^A;w-DPOV #MrS{ķ mzP'}Infa; rO3w'2F4jb1 p }qbga][ϻEϾ?yN|][g:pčm4&oEƧ2 ƫE2٩ֱ%mtl `4aVثXYq4Ǻ;g+#u[>AȞl>n+{::b ƀg{+O{Z۽ܒD3NV8ʈ#Z$ KP#4'V\ݳ{~%<[Ww}2^FG|3o}W۟Y1BSM3g}ז6ј FnCի:b#ӵ3^+Fn0üs]%f:&'1m_U0!@)Yy?Iu]=Xrbaݸ8X `cRgw˓`)+ 2C*`ch;7\x > '@ ODM> WIMƈ,v8lS<O_t-ᚰ׆m#"?_G{!S7gucM۹GJ@1]t3`oNġR筷}D;vixұ݇geDj"8 6tcc3nrBXfCkNTt@+lIg1ydu{]TlPPR5gJe!N]'y1$Dj@`{l3$M#6^ZX]H΀@u wWqD?rvp|k7|?.'\Gor!/o;,[\@ѩ3XUֺeWngգ!uBR9n!w-+&6_0:o6yZ:|LnlQԾWAlnguzpVNQmO(udsu( s :@ht ]g `guݼ--$0BoU# t zyG>jXݲŋv.4\X"wrqӰߟF#"Bشq.,y!<uãIgn_VoP5B u@U "am< 9Y\ۤ:~8lq6!Z9iSML9kjL c>^E<`=kT>O@-D$S]HbiMሠ@ A3A1.iY[~9ܻN)agߏ#n|cx6N_sb_ G{K H8Y^'lȦV2綜m(hV){ g{gLe;Kؚd;UE<5ECBNcl1gbKW&jPT]'5'٘IV[[Jvdt;n%7x 62 U}~ٿ] fӪ!w6FkY6Yl+ &K5A{E'*(X;Qde,0Vc1HT*qt/ߞ:UnukD?`ٹkf mjgz[9{yg,j6QCXEtj`z`~IfDPUTJ^Z(h`i)PRRz{^EE$ȈhΉ֚s;uA׬o9x˃U0[}o_;oVɟs_^x}Q6IDATy(x׿{o_i4g,W SZWJ:~$dM;ESuCӨI<ZOJ%fxUTK'aʈR8X .)t$oU`#tpw it~n*R) xdD#amZ 63a0~K/X2+5( 3qB'(29LxR Z趃b$muXe+ \/0sӰNiݶJRWVuq-uQ0d M=fsbD;k ƘB/XG ]GgDG(Q!E5|]l6- Gd&=awƎ7fsh2bBRJEWG*aeazc|o #RŇ;|տ/艛wOo3n>~y]^9_6,r_k! 7=qqgW(yI搨.1D f17ḌR|;*9(M5ΑC2 TWFD;{iZib+G Ki# 1,7ASٍߓ< 1͉' \ w|Fӓ8` :hwxիp0q" U "6COځLط1mL2r -R}kPb7V[8R/&bP+qD,ڤ]ᮐIIw~&{`17H)V3 ђ^#-]|h lZJY-LTtȨPQ,>7T+7갚RB') ja' 0Xl8tk%8D9 `50pt}‹;|]cw/_o^נKuy}ןokËۿ_|էH=s`qͻH,Npi{KoZ0%S \14.ܴo^p@]&hSFi6˽~9hP @-ysS\o24E ^4TZ; zp^^nW3CͪKb$8RLЩw6H+fّSE:QaKvpt%\!i-:,p8:p. "=ͫ!Mm#}]bh,n 3aS4*_`~R)K)0>ߢ I W'񊆗!X^x{EaV' vbȉq.O®OF0XcWʸ~goۿmZtY_^ׇp}+w>x:[,V Q`N Z=4B14kSo7ƵNvf_FXUPēR(KKQ1Mh<L6 n>qJ=alܵbYb` g5|>UƃESoFA, .+C`6@wTX6mX@!&H$ʡX Ezw߾1S]Vy{%>sqsz:w!WW*Tj@/ZMQ2=PғʬN \ޯk1mLjLJoD9sC@mBInrD{?pX Ɯ\K5qM\B(%uc AI,}*J*.dK^J]Ul#nX_Y`F,zc,݆+7 sA}o*GcMs8>*(*a蒡Kܰ ˾*fpY1+f}"E=&9 IQ2t")ol+=KazϴމR18koxb7VA3P*+~,?j1 t 6L/B$Ie'ʔ,3*q46;h+_Oy?;ۚt_^۰{ŋ#>;΅~{/}'{l,ӐKXNB[S |50ʠ)EXHBqT5m^ٺ$2msO1HުOVwhœjOm{AϽ=4XBж s"A`ֱ&-@1h6' YQ@1(,vAD@mUvRQenBBq  b:v'01\i}:&ʵ XCh )C_aM/i"0ѹqش%;&ē{ys/yܻhBCZI*;M!\KIC_; ts 86O@l9CiĹCQch+ tߣнqu6')w̨]Q`7T`\uTUtC-}||6_U~\+/]~_٦AqFkqH,iiE#-DP3̶.*+DnԸ`Š0S ڙ:wJ*Y-idyco@scn*g5]`j>JY2uR9 ɸK$qt ֘p96aH`d 6+\GP} IYp>`* Ǽ'IolSτw8Cg`.1 {] (U0(Ol:Ŋ J 'CT @ԣ+# ܼ= |-EypFk@^~ 7̱(`u zȋy2+A2hZ~,?А# QLY[|$.-7Q’!aHTQ;YasE ċ)# X!AHKnVKS[FVnq$a;ްgl5éېKo؍548癩ds&P ,<|ە@ x@1,ҁ5%\[%͛^ݑC5҆9 Ǭ''KݘO9)GA,e`+sT;.vc|ӧx_{:u_^_-|׶Ey;~ћ9?@5ʼR1 `@<0E޶yD`ʞvfAJY}Y~KP9jaZxܨb"wbx%zG/)<%.S8:Z *w%K,8nG[T;rA} VI{%mc6;|]b><,hJ%lT=¶ov"_^@M OQ*0_軌<_Z" "RU+jyt)azĶoXQ*+r5b% 7-+ZbK+#[NRc =|$"aasxRث- +l33V@v$ą# bUur\R]ܦhfc -UIϪYC<EIX H0xXGCTvv/'zu9C._V,ӈxwW7l- G\p +h]Fzao6>y,G[U ѢШ2 1yGm'gɂJ"U*<u&Ig YLcEv`CDz N\mB#ͭWa7jy؄ȤյQ %TAS{'z|!CˎÊU%yBNVD-10 hGDB75D= 5ЛDZ'-<`0>][R`v!9.NIV1.PTv[T %g=0D/A%5<[s$X =@8Ljv[˷צu.ڱTn5![V(#3:zv; l$421wt@^ k֯ȇAUCѰ#$DZKRѥL؋a$1$*Rv}p+ 2wĖb?bvn1c^8b֬&sa|UibA ^%Z,:tmNLD|~]V[o/>˞8[O^͐8\HMJ>"*32EƜMTFIl Nx,8]v١Un-!xpOpUcz^(jn"0t*Q Yx5,xni,ЙO jV:+|Nkc;z̢p!hjEDB})´S8* NX9sp8T <s\?cawoopvF̕ -^#fB:. "d!VT^La%>h$E^ .)DL,3rI^|Q Kܰx , )qR!Ly5~.Zߏ+?GsF)RXF$16`1'|t5];Vqێ5CKCb#ŀO|y / Ęcxm~|\ң pa[uTui k3LVɐ `ˤhK~n<6VY \lZ `u n$vp&hx`pL9; Pg7'- 99 QXA pЩ ި%ln@} abybL:k9"  ɀqppsPQ-=Ltº;)`}/8<ȨV\p~v(Xo n4a(3>a z w*W+rNuAb0&uP%Qc"1Np!Ģ"RXJ⡧:YwG"ܼU͓B]tVL~I|P*Ok2Z:ԺIςV{qle,g` ðNq6#]߬^tk)Dp9;w:v_^B*'߈x{~ί~ˏ;a0; U^sC[=-G\[)+2@>Ō8-*6wf!sE~o8P͍-Y <*{9M*R;du󐀊:ZĶfRQ-¾,~g@|%0P/!R!JV7J&ne»قl^q`6JMqrr>bfu uWw,|c|p8=['ܾUpv!"e2ގ~DG%[ny``UXс3>3_( mD5;V @0 9C/Ug`7:vCES@xGCap a2-s@K B[`50'@RĢrL(ߟR$>drQ+뻑" #2 H]MRD3xv(88^Tl;BhP93loC0Ce-]^bCooңS^ěw~͋aybё)Mh0G)jЭz(Z/Q-m~ۦ^~=Ix]Kx CǕaU ˹OzÞ8w!ZͻQ#hp7{~sNe: 5*[䨊b^$F$uS7lٝc>X{_@\qx!:q ?98_9 OupT56s3wSŬ ANMdwV˚vY_^"%߉y7>{qnj!eb٦c1GK̿l*Ҿ7K,#ؕ[R*K %=PŃ9ոPjlsa5>"“ nl#ࠧj1z5[C sk%Sy}0#$CUʾ_8~sG-g30#ðxju0-1V\9\nn ZAǝ `7fPkT8`7'ŦG>1:48cuj(18w UD\b謘^A Q 9k@q߫dö8Zov+HdIv &@se$1mqKJp )oh:m)]Z] #BJ(;qpq2N/ ]!;^N(zu4 ?||>ֵ w}/Ȩ'/>g_쿼y>ӡfc0,g1>VB9zqQ ~̿|cƊMau5VvhS`c%.]28 vppUNn#~Ӫ(`jV8!\Y)J07qn6[_!ez5Nkq~w|0*WN{80sܖv@A 222]ȷ]xVU8 8,)D9;j[ܪ@gk9ոWVKH\jTv%|'HԠH= 8pơ&qj 96 :KE5٦l8?/]l Ep EN>[K ΁?OlX.7W_]ܠܦ-.߽Q!E.!F'$F+C-{xmj61E_+v؈ݐיNVSv/nA1f-^ WkG3BV;zuq5`Ks]I?V ;R$"XP/:wYEm WG)k\z932܍#JrK &8J`; F~+NQX)5l]1 Y|9e4qpaåx<,7.=a*sI?OvlH<6ӺdHbSr*; 7}\h[7DSxB PϢgF4d《B@(!Asr<\P6-"؋P2 KT+᫭&юն! 3wD̐YePg,rqHpmḺdn9;j]1a(Hy6ތ!i\]U)<ɐ3eU2=J-`7;Icy+̀J&2KSyP*+ncP u}uAC .\؋Pio8vPak4pTbkjmlaC0 @ߑ5@إQwd4(㿃 *=ݬy@)Av$7b_sf~>2/U3…oc ;5>wZ=7Vys~8`2TC. 2TQM>AF8UCД4 2y=9?(7lӬqi3JdoatsZS~{?%._|wao#ۯį}|8}UoGGI̻Z@'38c%jr&\.Ҫ@Bji ^w#/8]h1eϜnV]ZulzxeQ8O Sk+6 T%rX", up )C4!uþt}PCه4dK D6-H"IeLUZ6*#^=p/8<#[ Zز}`1F8b%`3p#kz1 $lib '}{֛鿏 6it~b Z)BzoKghYYoѱ OnalN+\rP.-g=F őU1:ߔ)q6(0ZֵV_' lC؍s)7,b]ys+g sĢ.#֊zvPf 9tZb )@a{ 9gt9auzwܷ}̟k~y|l&ATh:&$E2 o,urg-2U 9@Dhƈe&/JW.jN&|N%o@<zW=uJp`.oj\Ϋǘv4ӼG\)  vQw]g\\d8Z8 "ICmP*vn6 WBEp׏㠦Ua+WD6{pf((VB$j9 3+\ثRyycG`72:+JIUtg]Z;Kt ƪqaߩa4: NB"_g y2()N$BXHɓɖ)BW0'@3c@g"!|(#} [,- ^CΡ9q~nڨ ̀;j1dU炬leXoMAjDm9UC,p>ksz{o~;g[q4ٮ}O_hK]@q`%\q3FYD=(]~_LPƅF9Ъx+*Z~Gb1LA M흒kg5guv#^r࡫ϝ ^w.2.eu D;6b3xKC廷h2-iޅQ.)f$%dj/2fX0֛q8W,_(B GS VBX:1f{2.ndөɐ`(#CW~@>X^ JS;ڿijYzh/uhԒ@Zg(Q7Vp9}挾 "buTG`GTK(CWuuɎbRFcCU"K=BO1@ aSY.B𡀳b76z|3PkspA2 ' coH9SRp>T\a&8ϊ$;P$l}Edb?ן~־ eu}Y+޻ݼdt+r J=.hkXU{zmC}*U5%lTVC] ^z6r]?]V Y ֈ$i&R+0Z{3Cy[.7[>;73O}tg9}u׌AX`Rj,L0A%hlp{z zXe%jS 7b;8#L0T^q0ZL+nT8y.X +#þ^KGx2 V 6@}bD >X̬-2y(i&̡pOPjz9t5 $/ 3@{>fYA; α[8sż-U[ v4xޣl}& Rv)NOutdBo9',rj4;6h}ny fPcƷI)&TڽW(*(.%faM'%HC6"Uo<3`x]RD,STmcsMO/–~1 a:n NkGxDl-%rE@M@9ykJX$AK-+ݮd mՑy&LN'I =D){#\j < wv_]{x_^/x+^'oz3?aQCŽ-7mh-B o`5/R&T?.JpÀL{W 9e*N \FMݵYj=vMЅmg-`kHBm2vHC/#:-HRI&OmITUk3X W>z3Cc%.PuK΁d97u!ú*J]`=2 p͙uP =)h>ZD@YW+l&8V1'>zjZ Iʹ'M׊M֪Yb ohNjW;A1$VHlqQc| ݄PovE:0W iVx1d5t5F k&ps[BahTl#wJTϝ#4NkXrͨ0$Iumv'kF:Ų]|VF~pBEUzȡZW$N:QL*}wW}i׵R~y>K݈s?O>}g盡G \fm . F.'U U*ylYm ['OJ [9Y$:b9W7?g0E•E,P9+rhGC͓,i'rg<,nB' L cq@#{ w檭= + ^u\ |p\pqqc =(;H Cv :`=5P7sQ? quf8LxW ]A?\p*8Z,+qcKdJXE XؖC5s.Z`R1ұV-pCDEH7U**rp~mvEQ9ƍ!N6jeqX1taj3HbӼc#R3~s`n"!*-ډ8c0ġ怺hUaұnضNBEi#:+%"s(56!VFf8Yܔ4Ugp]'(5aW*mB{;n))O3j+h0vnH3A Vk(cTNE*d`+ްZ\Bϥ :;Bx2ù CŦ|m8 U(똗o@ ]qHح&UrWj03T{EkT0IO -o6ׯAW>}_x5M8EH%6k!*Ipg{!.^9EX ]LI3-K0ΤZfr `ZJNlP4G,3p]U [.@2oR.B~\`)T *}*(xxc[xvbyp+Wz\1t}O >L6}ze&]{BY1qmop <{݇VcjJ/qVK|Dg4t3$z|p3w)ČQQEyl!V_3 =@(H3TìŇֈywV*pWXIr)%́Y潴VF| 5`DsYCc 4`TS  etԎĩ&nGML;CHɀ"^%աMYczj+:a*pt]j@$EjݿЫg:V[`3ppHQ0n!|4"! DdS,HZsEEr8K /O_~ӛ<{q˛@'8Ywk &. huxhUMßMZBuBD[0.]!);X; 9:sࡇ#,fez) fsti!|0&]]R+S ȸEFlXn>3C|pG=cgkʯ®a݇z@Zh3t]Rq8zAq^lm3USՕ+XsPA-lsDA.|K \ŝ.fŸ#w t{^}gV5FFŨHn7'@,!?5HbLSh*G|F@(L{p.^LčjrC@ PY-: -(P)9V5E+#p S<3|e^8PPw]Ɇ+0$%6Ny{G+AaoϩtOn -_m}\ozy;X.WGPQ`Uq09ʵFFD') J8%ڪmц"'ݞ#FSQ`yAx~j]-í lͶz5d;9[T*p|õ /}#=kd >`@^3\yQ+1GtbdS ɪP3O p d.KHсb/CݦϮ{{?{?x:8Ɖpj[ԴC1 @1#;TW\*2}-\9"e`(|̵^ G,z#΂0VE^b@ʜwq%p B 6ihS3M @j# UHD_p]"IKqQƱ:c&w܃"DF ++] @PƊTdvRM#ASXyhiM):jm܀ ܐbVpIX eiݬ( /@RC U=Qhv`kHϫ@"/ nf\^/+[o;=98Oܝjڑa9<0ĄRmBiXKLꓞ&f {8F)kf1k{kj GF+B9\\5_ x. p xP^W@=) Xmmd=tp7=t xGQb|G?׿<+X,}ޡ+YSF] LsԑIU(00~4ՁUefj 99JAa:kx㕯<`W;k A)谘CXZv`':6|79!wѭM'R /&eWU'F'kt;$a:-x+4^KJ]BmwBh4vض,Zɉ}3^Gt`9،]b6O2R^Qt ]B0 "IJDUnߐLJѥ_8o]3/+{?0Ooǿ O};O]w, ֡%\Y>&m [,1/OAnM26Լ\f8טI| 6 hY̒c5|6]@KZg 2ޅw],-\e yx|x>_u&t%Uʎwl5@QVHFHH̊*\Òf< ,f%\g#@*;d Ra4/fׯ% ^HKwpsӣJ5l`[s+}m(Fs#=ҶЦQ'qj{~sFjpؤ"Xh6,THg)@xӯ>yA Kں:FN<xO{,oю.+(kIt."-Eʊ1 0gj jXF{Tyh#[\xp0V ζVprbJ30&OZѧ}oz5aB@RkZmJ#.w;'ɿ n^n/~ŷ_?'чlfp$,fJk՜$>c=#:,d r;;>Q|Zg]ʌc-d-G)ўm, A҃Tvb]u ;79bO-)1xkgxK{ =txyg-5FשR`>D{JήKN@*V pv[C)[||-ӀYbNAqBM^h x |_6:~ Eq/z+:>W]|{Nw]~3P{hN8<̺Ek'ܧJ۞& -{4gx~gYӥU<I:V]̪y09^~{ >׼ ]#)42Gvj)v+l{K[JC:`ڵ\A]F0۔kQjM;K=F_6T`y:Un`5xc^Rpsxc,b5Ш@aYn}n] њB86}~ihPDnC k}umdc{|lwv it1gbYRr;sǴRypUh" FK>KihѽШHbJJRB.f.H91-NA),֎պbuqGRZVyD=hl֎ J}pw/w\~ zaoyO̰|{,sgK)ޣ *ṈVp#4)DI풨T}۾!^ lfE$lm0D+ a7)g+km_d}YU梢k[xՂW*~o~-xA`t!J3eiiVjHw*ml W>jջPSuU#&Z^ P=~3*fZlF5fEMs8NejA)]ŏ1Yx?:úRG-@~t1U-bGVV'Z=f"-h!tP9)j PpLrͩ6e,+50r[T Q|]N䈙{ nQk6'} ms{4%5M0 Oϵ{`EEaq=8T>/:e[eConLIjZmMz Oq r {+z ptOWG?_?Yd}8>4->qaPiC0MU,:*s~h2\l;voKZ &n.,y&C 956Yv*NW N [Cl)ik2?ₜ*>Ew[>^GFA톚gR[zO@h=MwrI#l1z1Vn K÷ӓ# C!|2&p/ kU)BU yVGhLdÈ$b8N(I6$Zr SjRQ n$st |l|0Ө)5Gsݧan2S 8&e:,"YnZK3q0б?+eruՖưcqxIR_J1RE7!|ARߨO)V*5]y>x/_Xt{x_=+=yrpx#!p|Xqa:bv΅K*\EwB)^bDm[ټ _\=2Ap6seHnt$en0 [?B/?/_볾;Kŷ7~=~r_8_]q6َHB^FCAPu5Z"p*$SQRkTmmBO46S4Z!OIpcgV:-ĶNylpM1|ګn7(sn/+g,7)-Εj+m1VUQeFے$nd`2 jhjX K3x0Me L:VȡWm.&c0I]^V7G=~#"X J{h@ 2fPll;oRtU+Es \*w`E)>%%eK(#0Dr]^ZB>*8 qʊ4, 򦈿G s#U~7sJSbwe@R&נQCr] md !EWL(D]U8*3R gمbqc=M .U=4u AB4~‚ph"~7/C\{//_ ?w˖+N_yd;wX,U,g[A MlMN P-qV7DD PDO%a|ub#V; {R n=>n2RN;pQ[_u ^>> nBPT-qw@62$HTGTtG@MLgTޕfTj{uiǍd{.-KՎS;~2.Q+"5+rw9ϖ!)#^;s7O.p_j0ʜdpSBߵ@ȴ3Ny清c*$!@&X6YӪlRdrV*'/VMr;Z% ^=&L_[#"xx4k?{cv%ԅbDŏR9J)"nGmR8z5,;C c8YVͦb78T v'yNy6&E?F`hJP5z{ϥRwZO@N^{]n/[p7ɕyO|dq|CRq|XY*f;k ΠƢ Vı6e91RRna-NS͑3ϖϺjg~vV.tEutaf~zdJ.iC)9܇8PS_sOx&^Oz 1 [h1׬`Eqh 7\wVջi=qq4XPPQ dPl5Y8򭣝JLw,!mCPd%:!ӌ~Շ/Sgzvs@PL !.dȣ"mbq5 w5;9s;2rtBtY&\f`MSXVV%>'8"& -IbiU14Tyǘ,C1TS5[xc8H{9Ϸj5;|}^ >E_:S[Ȯ\@dCt+Q<_xU}{P-RjaH|)KZ 䲁*r$ǀw9BDaA"&\=.5ͨUWfi@]?GVc]V~9 C54#n`H9Eq ],JYzfhcnTeGMޔIY4oU[l*-b߰xb!d>yr;yMnV'Ljn;),y{i6@0ZaJƙŏ0Ku yU"qc<<;QgVpg8pHÖ&Re_τ@u ìA`ƈo 'a=[ų?'P ^v}W-׸(HOo7=~gkoRep|8\r( dRv!lje+C9+"_M2äR# #26)ˮbSܙb-cz\Nѕ;8[S|ˁ|xG܏7~[xb<),MPخM6rV 3MDUx2$TIhӇlQ @P8APTĩBϐPKɣS `Wѕ5L;ֻL<^p?52C 35!$#%E~R!F\kV3f 6Ttbgݰs#ШAw "#ՕK ?%vmv-{z Ѡ\7O_'O/=tH9q|X̨ or$tRċġnT!{[< 4=,iDxJPh G VLx Mj*2˾"3 v#ARjm\ vW| G~K0j8,lcM$6uWŕt6Tt ~{+fV@X.:hA/m)p ѲMW!8)-H=`Z ^BAKw PW`3<?.)Vv% 9맅*a^ae h7E'U4hTVWhD/DYhز]҈;xM $g⍡ʚn֕j KJ aIk9I~ S[b p8`hmU8]ќ͈Ӌjf=PX[eT6ъJP|-+{orc)'RN/߸F^\Ż^J zޯo,﹗⑃ͫ}r/eAqya6`B|bHvU`gY| >_nwSl'ErΣM:$ UzTqn AIfڅG=J( $:)l l~tmJj3$i16H`~%5B@r | dE6>zl|)/6euNo:`cn 9[ܧ{ԃ F6d<6AI4&g=/#8f}U1m5R̲:b0ք())kP%A8S3_W#J"Ol#>0mdŝY${&1,g1çɪ°ݑfॉv:xB.FQPEJ Y RKSk L}?RM9Ƨ^J z^oE~ O'NvK~GKBM5 \v^-ܶJD1`Jxy]'(R"Xo!k(|ZvO(-u4!},u!8iSS;G.'8f|+W Vy) ,Ra0GEϙUwE~8+y2!s'C;-aRަ6z e K2]è>fPPu|6:w^HQ:5Jpp8 98+Gd]bJKSpHN-U ۔$ +)qGܑiH2hou4=:L`:콖wsmLu#,fqY}qZm ]+Ia医3Pp&8;vYɅB0wpoTdUy9iIJ*,KCe? q`/Ru]nr/VSuwo8v1 rUQR*D{= Ԅ=0 xH#Ko1z؅j,m:IQ g]ը1ٮ~\}V-S c*.nnb5)yαxS8Ł-Q5S禙WF&:`,R\i5΁YVdgꚵ0D>6$mf^%Ew@q?;xnKl ,!VlY;]%pY)SnZK",?'og۷ (MpmUYi(U"sqD#&Gl^aqm, gT#y,2Wֹaq4`U>c~/M˴7U~N2 c^[ތv㷪dn~_C.7C%߁\q|w^'ϗ_͘9c>RҢ]mV[t41[x.ԪN6Fjjc5:8Ċ}]j I{;\<57j3ݍ …\#q-d_{돽V[UH-L7 9ڨ$ *7qGZ"5Iڀh+45b6)E, / 7՘IF wz)J(,u9 DK𬛅`PI{$]{T$\WsK*Li&; fG6K/(7іy\{&Luy =g߳ڶ,p=*k[η0dW+-E]c 1e~G8N')5bzKd3׹t^,!<^J?rC>6̴q!ůz8[~,_K?@ס"VHZE+gĭ6f| *&RQS[b K n5-]@t#aDήiҍ@U,^-Oo:Ð?t51"y!F*ԣr1UM%xޏ xыfx{xF…8MWt%'{ bvxOY6}׫u}\)#RTBWSk{0i }&OGx-.0CAbJyUHpl˂Rce *!hy$+sn,uVqN/訵0A}(Qn҈YO{"TZ.z$×??0 auϾKr]n_>>|{>Ise,ʑhfC9߲Lpw7ZxX.+rnEo(J 2Xl}/h}K0Ԡd%#%cRUALb9!,qrPJ&pkz<šl+mM`yhRMi>&=fKRzVBbWX;7FKر43mi.LYa0I@`0BJ,&l7WE[:bgԣmbQC Umāb)9^vsuŦVݹpISpB َ[0$ aWlv犻u !KD %\*<܅s-)@s,tY3aU?0E~| >oW~Kc_x:ǵʷ?З?qqG>x:ٲ\ youJzq\Z yqdU*P"aI~iKB/w4Rmd%0y7e*0k CVZAiqLpT3n[əcau-iVYM]/OenJdJo퍯Z?_me`c^J^ ~ߛoyuWeuA4TR$_"`PZRͤV ῲ Է=,W fGRm``^uF_G*њfHu; ӌDWHb} f'@JF&JZʌZ oi&aPF3zRDZA[]WTcP$>q(0f8"Ij$;}6\n#V;{o8fiLFt䱋6X>"~{@B{_:{5K?w^_^Żx~ X,7C<ұ  y KTw\F W)xJݥ=m|JʭJ1`8 ^+4RFVXY6]} KHrt(!> ^' $R`0gt -hR;$mnkp:?jbjiIhu}7٫h ; ل"ڤHJB2LfTM*"δ$ٰ:2 xɋUH @0t54ʵ |^cZ  t@+fB'+z1#e+d ab50 FXR3pe\/YTPK4/P,x `9*ZFzY]x\Atyor/Ҋ'#pOa7THNC|^-5+QnW]gkO@ʀeU9U rl?V۪b{5nKJ0` F*A %< l2|ãK;,e1;G rE$;Cչɮ 0Taΰ(кE/[(oo{naL@;fqé. S+aRX\<BZb iBZ6:FK(; X Y( wd;rmϜabd:Qg(icyTTȶפּ͈[Kn|E/~i(Wb(ނG "J M48R1E c=K%Z0 }UE3Q;"ۡXI$YD"P \MXE ]/^Ob7lzq`1*8.g+xKTw  R &xN-!eވ5DWxC~Ջg ^p~ _?-z{s6>T$!$Gs'GxDbwA!DzH't$4Jծnv5q3s}稰Ӽ ۬5{s>fvܫk>\||hEQb{Kc?"Õb=u]-B u5^-8P;\b(T jێpg вxE[@kϣZoz(&vm~oZ*4 %+:?Ojt;uZZo{f78RL%v $L[qމS\zA\|A<QJAJ s=[gކ7i@ Q,YDSMJ^ U@C54 \ xb[pfnp:xMZVS1Jy0MbjStGSU+#!).9%zdv + \a8dOHj RDL5 $f/3~:M2^{e9|o{?nqG̈|k/D ~⡧Իӥ>oQ2cg˱@+ƛH bG'Ȕرs/.sCf#+~2fXOQ{M#K 8gGx,c pIt{p].Fm+.(T`%u2WZq~1Ӟؾugd!6!aLP10 sL#Xzv|̟KYx8;#^o<lnؼIf9%-gbrjnOw:xqiGu ) =ؗuog ~-O /xy,̍ye *,mѢnY 5<Ex&HPc r'^*U%@t qŲCy7LFEB(\{w^FՌ܃@&uj^+7h>x8yp {#5 nU0H2L5c,Dp* ǎM1X[ݮ#BĐDR )9q|!lJy}=wGںs[-/ᅟяv ^b/Ͼwo\8?jd$9[[n{50p\g>5pRحmש 6k և&V-vl W ӫ׭Y_w!UPtLi>ȾݭCʊhit=fV),\NU(z'] Y8]Iy?f|/\%ݨa1AZK!rşrrEmDǤR;r8dW~Xo uj O yMԸ3R$f84m7k)9P5rv7}ںxSHKo\>e_ ۞;;uܷ=??třm`wI/8;s> X9zi+P'thPƩB@#(% PEQ,5J_UFEkN\%OkABLH#`Db//B}#Ƌ:xP Xx` O;^{XL:vpXVa: o!*H8BEgAtڤq+XRd6CNJW{;@3@lB :L@ (u^Ys>2D6qTxhJd{aty5I0p] %ֶc{B<)-͏Fإf ux Q("-$Fʈ$.NN!tr4[rf-LFi"SqnL`C]s!2D>/*$ .:.^?VM kA"kŐh xCG#8ǝ|8tkwoC zvןF'}OK|}e̋G)3bv (b y. .Qo*fM'M',"Z[wi]Cd(tZئ lq+ Bc6%wMD^H C'(IP͝SH:#Đ4jpEEjp}f(xycC$1dz\a5oXf&HVcP8Lnѷ_gT GX0|{hzfЊ&U9¯^lg>b݁T7xʹ>3ge\G wEb7?«~m /{zW0QѫF"0GP&%t*8#4AN|<lDĎ<">ᾣ+)bs2$}fQcd a!vQ$')%'4PM"h=+)@`R 1g.sHyì gbPpe|(88Lv1wbn_uWks|p-$-xt'p)_{Ս~~P]#ڿ] U%ﻺ{g_9ft 3;|mF)g@šF :R@E5vL e{qM *!f Hf9g2D"++N@Eܛz$ ;xh]*SI/m1XDaO~ \|WKP{ķ^K>viUC/k$-0Db[K$e_G1AEd4uC]N8l0ޓnǰ>tfĤ̀(bj7tbD~XK k:w-LEP=)2ͣ|meZrP̈G^t3,u}ڡxUˉ=U y#"z5A]$BkH=|m.}C?3O5>8N G_}#E6^>zП=XQνǬeV97H|u>rNeM !Cd$H'^6ϫQD"Q HVn1d_Zp|!nwIL~kpGy͂;M"`*cɌE;h'Cq͆s7uȶF T|Db,̗U*(Ak;+s$M%.TlAkA', HB5<%\oƯqRVnY˿v#)߮ㄪHY{P1d.I7|O}sPWL$Dq8jyM {ywh\$E"9GNe%Fuw,S4L WG+1SJtS&T2!G>:5,} |Of3 >@]?iV4mrϿя봠\W}՝o}G=!eΖ`{=^**3y\)𩊾p^iOfj\W+R: hHRke"+G*$'o,^  AfxƮ?%0#*5*8nag2RJ<Ǵ,yݒ LGC jJb6O]v\|b_ŁlK|m*dv̜xmHӥF6# dA6EF3$p d.ӢH*./pCqW >Sx;Ǒ"?7؆Ԋf5l/|x>iRõMƒ^S$Դ@626 (D'낼@Ez$&+ܝ:&]QßĺXY0&|XEpǪPtɢ `Ox1tQt2h*HGS @L%z=rrv~ Ų V;:AZ+/+zkk#WQ6@~bG8,4ʟKyNIQ=#$nh׏xԫ~ݽ7}+=p|iA0+5'cy3=߾P=c9[K`R^B 1ҩ,Do1.p Ic8UA&Ik(;4@ıg&4Lj7>oxx5L[KR0t@FG=8V HXی!qsêq"[=њ%v.zf֠+eInG4 TRgl"ݪVՓ#`eC';lHPJX4{̴+TQRc9uGH"X$95<X@ #]vpt0];@CDu{ZRs'^c_)lB s$_s-] 3n6 O-c{w9!lkƴJ*ĂO }l] 'qIHu/+TdT v:]$ p,ݹ gKP)DRf+& 6o`\]UɁMEuD[P.a33t\9îeGapd7Yd v ᑫkqe+حe':VR14be40FTHԵџ ߰Oy=Bя봠^*cO'`>v|ͤФ8cX v0txkHvUl5k{+?_5Dṍ}eYBf{C;gVb-a;6{a_c%/-'AuG u1l^IfL}J1WT*ms2bBd J^Ȁdę2UL`ȸxqiHi ]b\uEj8aL#Yd_9riPy:N30M9_h [[g"6_2O<|OZFt]o,.F٢[-GSXMN))lR*pRJ+i;Ԅ&\O8\u&{7sB; a& h;Wj&{ahKS @HErzHJxbjbEqMi;bI'T.?Pz@0AOxś 3$aѥ 'Q$d( CJ1BPtqjW<Mqcz #:8< 8}-[G9yU%=28Nn.tFpHwXd0+@Μ)S)*L`^}@=~8J©E|$.oNd_ѽ%87q!y뫾p6/s}9[.._~]L2Z.IiCb=V>K':5?=GGoґUʇ`Mp0%*Ǿ0eZL"5ƇĈ?]`Evn 4rGe@^[(ҳx_ǡ@8w?R;(Д5yS5ooIAHEix_eAwu,6VRܙ*|[H#pCG}&1_D0\Y4pJuGԀEvIh*5˦{]7h:5X Sŧg"UF\=6l{ +N)z u V9wՏy׵⋮viImrFޑc.qy eY` y/Ħʑv7dBط3.o¯9]Ыc]$/S݈v ]x~kt֧9ɀ>EXƊYG{5bٟ3%]&G r=8\5M">.QHӚ4P;+ *uD5֧EAiѧpX5}kǿ zHC&tp\+y?CC+z`%/vBLzb,/Iyޛֽi ?6aeu@Tiqb5RZ +HTXޑce?ا^@u^ r7^sE_C8HJiUcTY#83IY*!7aw_heLiE^vUŘwR/R[4MPXe`S@/!"@ЩhEh{iE휍sl} ,!LE5$dDEC9 gs[Ǖ#Ǖ#ځ`50&Nu2"\ō"W =K#t/Zmmӵ{J{wDb?:-˿{:"'ao9->qФN0$r "tb*JD5n ^JU 5sGC*"XK#*8r9bTGS>cZ0Q%p189,?C$\kcTp<*( JsF(t8G R"gv T(J8'Z̀`t(Xc͐6 #wbsR'TҎ߻ d_k0xʵe7m & R+rY{ZTї8wv}6жTQskz+a] !W:PT 8 Nz|ѫ:?V>.LFۘze &VO^QhJϹ늖.}wxቇ%`+IloxUh+E$_ib1o(DYe')2 sL=Med(5(XኢT 6<)(q##qwtFiqŕ#=!^qCW@"!X 5 rRh^ !^B訥j}y茶E3׆[>z=z/u?/ ? 睽r<.nK':c^B/[DET[+PH/I"5TtMEo B'iAY*"yM4S2"vܛ"34f qؑ&|8ݣ(=~਒uiVzZLMG[1la2K<|%iSpú8Iz >w‰/)C7nB0U넚n,Bp,o<١7iOY zd9 L3"M*O[w>'[@9>m>G+ԗ> qh9 jQ.$ҿ ;p6!aϒ4BOM2ZGv =:-]iCL)aE0HF3#|%ɌޔPy:gwZ# ˦2);uñv]LM8 QE'1ħ] }sA`38V0 T6R@F}+՘Zb^IHgՀp0$;|/|}]o(N HOSG~j:4;16^Ϋx}'Ӟq+Ϟkp/G/a6 %C-0s?,P)4E{^1

    ,d;;f!E? 'bJ*6"( & wH6R15 \r9#+ 7Ul2@7nHeg(P+#Lz&P >܍+Wލ_xʰ\n _[J&LUwx~ҏ|$N )Їwj8cmVFK__ Z'L j$COy2>=nRc%0Qd0Z*q~^JUyHOVxEV:hvy_lzx/aCӈE-Fw ,eijn5|K _rTA`- ¹d0de\ס/P7QaELfx^$ <(0,L,#DxУ%NR+%~(&? /5@#ׁN"ۀZv>)NWX,{E 6I1]B5KDpMRpu; +&XT I+ĝ(D^ jnM~>u[w}ꛖ (N;}`)cެzg̿WR\Fvv4kc<<֭,"AGko.UXrRfJ)Iex`]YSUTXy9T"vq4dЯpB2#tBRD"3ͳ9Zu$s ?gnĭI]ǰ(LM0MIHw<~fT$}#JT7Hu&T>I"n –  0xJ \!cDU!L7ϻpZ-7 ^*ďوsi'??v|>w}urLyIʟK͠^fJ  s}4d&[mg0]FܙmS,Fd#Ȧ`G*MMIЀ4Yb=3SiWsIJHY'Ӥqrd*w|9H}Cā6i[$X@kř@Pv\s VB}m澼ƈ]҄E"K:s hu\Qycqٻ秐OGuڡ^/'wm驸mv~_9\ܲ)ڂf,I8k #uውn1w1Nq',Œ:"<2APR2Փc4(0nP+C0;Ceըlnѹ80kcX>ek(sg{f_2ud$ Ĕ5 0:X%#/{>W+P[1mWo;bo`HEgiK O-ʔ}Vg\ut1p ʤ%AiK1:oimd(.VkF̑0K?9x'ކ8ƒ\':[ބ[npmH]MW04l@̪qGxۚܯ ^i=#)qHtbDVd`OHс"D9NV(E]c#ms%26:&$uAXؓEx,9"لb7F(tb31>-R"kECFRkIp*PH76^>~-MF?N?.˾{qPGos=Qg.vfT$@;l', CY3 uzc.:6>*1ړ4?X"zjT+ t]&@ gŦ62D♧;󞃄5dy;L’ Fy@qT+J(iɮTOUÏ9bpqd@|u ߐ˵|FalWL+dǙr/{;M O#aY 0[ Ewj"_!6!aB")8=. ?;t&pD繌Jc-"T_pΪWHp:n|% :ئRRsdLPt ,^QTtq IqoPy. ^> o?zlCN8wÐR ]MuAŸ[@5T,6b/c5+7Âi"#wd$eB9}s3$6X8u`%nǏ??ꚷpq?/ ߏ׼G>gˇ]G QYV,CB1tyUo T(fߣi77DءY$L)l1- qAyKH lm9q,?;Cd8;0 3%lm_ vuE>n9Xy55.o =.I$e§= nl+=&]D$ّͅwwwɧ1'zكeX뜸$"o*=|Z 8Gdߐ;Tq#&tn 5-{n#*ROJĞIS0qaK<&zVGIg1gvCO`N|HDKB=sLM$آJ|&q)VCrm[j~"ԗLNQH Pjwa U\s蒙*}bR|9Z $-F]W ^럄?w8W_~w>xk]vz, r F!Wm̅ =N-ڢ\UbͶPr(rsn_W%.$aFȀoP7QEl岷~1*b'#m<'!iLة4lJ-#VAO7c'/sdݦ›j?3^-h\)rڋ_ˏhU"Ԣ{VѓN`"ZwkceJP>Ham~?M3^:e5jM{4RVZST`P.Y5~;_y!V-@ʊmΖĔţ8&t5'歳(ˬ;l*UݥTbž$D.scvN*px<A̐PצDV G/gS\;\w\;ln'; :aƈ]Z^4;DgEo. ٧߿z#/oяӏ봠뻿O؜qvw.m݇o;Xb60dTJSU0Ӏ4 TE:K D1o % @cTq{TJX撖PV -#E=RaL=a r|i;m6wY8vbqX#}*W'Lm.-X#ƐGF?r|U=贊V#D!Jښ;BA`?1!ȃs(ҳGXK dɷv`PqEPdA؀YmRAAGNt@@0*'ze.t<ԘCN>Xwz`i#:m'p5/0qSu@ #d%%):FCסuXܓǨVO+:_PӒF&Atq T͢/( ȶbJ aŸ&V0D.jL`A{r1&4Tί)EFT(??~ޱQ O }%ō*GQJʢl5PLtGjoSl n~GrrSLt+ O,d#ƠO0o/ vKCAf3L#NF04R"W4ѥ)ݘ:'m5@7U9j^3[O/~cݿyK;ؖȽbp  rI~,^`Α#GU" QE_0ŠښT 1S"6EZQ4ME_3Wvf!Rkh6uk[_c.hsNxHI _3myL%r UW9 "9)_A c:EyU?6}n>lxZ ĂʮX \:d[#4@1܁WCaLDK=Ri]` ݒ԰ paÔ>R $$iBؑǫ %MAPS]8V$jDȶ|^LG}JR|׫nݗ`oK =;Q5ATHS$s@9 9BsVl"w˱qvƙvfQn:5k:Md&ͨ J|zP:1 f5(T,_}&0X w.">o3-ЋL({yywoquuZoƫ~.Vvq^]~GKl=[8"Tѥc.ΙݶG ,/GmMiL%j|=vKĥ33Bm A9Yڸ= lZ>/bgeB  Nk^r3tݲ) Į\Z, 3 ( v2SC;]kHTcƃDNTK#B6h甁o<]pڸ; 1KZ$iPzkKw&,qs%uT!tM)뻄3l #mwZv()=DzGguWEUvI*pvr:{aB{g ;t \m{{ ]jW>XP$-i?p?7q}Αmd>1G ]o7l_t gCLXpfRh'J`{:!2&rrCw1I\ϴf~zJpcа^dJv0NW;Ȅ!WRPy: ޷N!5х_\;B{1lY[1ރZ`W$n|HP%T:Gk!¿u;(8JR␔$vLpeYhMz"+# @5 xmh"4 Wlp.T\:p VFx݄n`%@(k+&&bo`?![W^?>;/ΟJ[!ҍ~^iAק~gewW_}ο~p9{+v9:lo , I-v,r4)E2yW* Bl9&ֹCojfAѩ=)K۽(2#!Ic8pܱ1Ι` Y)p4vչCǢ= ~uSI ZZ9AAh%OʂIsDM.洢ߵAOdaެ}_]uP*G@x$5ш.QL:+!Q=ʘ Pͱo;w2]0:a!m' \ň#.`9Dz,=:0GNz2Nf18T*c() fuU|;=r*Xv\C]]Gǫ:Ei]EG>m*C2"/IJh)ͺ"ʫX.Z=zNjM֓tϿF^މ'ppȏ7 _7S=>^t8.i̮mk+9gX!VTB%kmDGmP"&tsA4%jKuwsY+i:/y(Z*ٍT2s0 c`Ƽ"X;6!'>X 搻6,r6@_QcaA Rd[fųf" xVL %v8Z=ݣ*9MM6pi0*H6#c7Pa<ѧ -|ϼ2*`BcFvzڐDc>ST3exHCN]jycVcg&wC?8j#q>z\96cfůz|BhHA'̯c ֞WYʵՅoڿG|* 8 _}~^7S^n~w~kWGxO>޸RNT;plZ )qD$c*CIi,|:* GVdvu k@؉_郬L'xvG Y)SD!bybmcVWL0gQ7eN;{aa2,sFSh\;t9a"iMtLX~iq$1rUQY)rc?g^yUtZ].,gNh^<'ɋ청Gr) 4:q9\Pg)8SK į' O|MT0@^e0OSm96~MMq7K=}6ߞpyjM 3b^kKl-9"(rNsTCZRk.hpٱYba82Bc:`glkǥ#Õ /+x9`grqti!ِ5>[H@ՒUҝ"A\s xaGmvϗ-iO.~p8=\å@oveOuoq9ۉBԞbu>v&T WZQAtЛ E^* Ƌ&'2 \nHmSE@qc' È|`OO924 vaAa\w=5 Kq~6LH Ռ`S'ɩNL3sf;j%`" j!I\ ܁kG fe `q-U/ȩWjVRr IacU5;7.~pK.\{?F޺F?FO봠>\8uIϮfDe: f0+ yx.Ac=q{f?@5Cy *D)r`7,g|9B-"3b]'GIN`%tm( KX6UEJiib7v4ŀlG FΞ!j5])(kk{NB`QŨYz30KY/ bvM>qlHq&ToƿÕxmWΓ ?!!JcݔwI_8zw0#TI0z=l(+ VifL؎hE!gNc*skBEՂDZrC ~O|,~mHDl5(4EE5 ,Q"S?A^iW23j0&f r eD$fĖԂ%#O+9 X`[C| ~-ipU!Wh>%jʥzo_=o+:<7zz7^h۟8s&Q]׌:1a{.6%P(Lh9w)Pj>W總K2vTaY">Zʐ5vإzɨ,p_caB6$JwCjZCEBo |Vë4j*kuC?Z@j' )3-~81HreEt gjAxYP%b!hH( ']{x̘l1nzfqpD!Ԣ+X0!ğ/y6\SQTLW;@52 yeOܛO0NB_~"Ao$X6Sgrk)(&(>@{o_z&o~ϾEt0P*2Gpx^7RTF˙`IBG$Aaw۫G q?:_ w=p/WVKB:jHw".;V#OrgMwp9L3G%v9;p%SA6gj4ڜ\y;b&E |@ [[RD;2-MӖH;Z߳O`ǦO׏cc:mt?IjX1`X rԍUeab-~UO9N ^+I8 g2y&(iTG#:bC#٭ LHIR7q"G5eJ mf5|`NäۀH5CpЃAO:#@oO@  s)mpvGp~۱xx,P5Rޙ*21VE#,r)\Z,\Maû) Ju+lXt'RdXdž!9]cرZR`;rvk A)d腖4 js7:EZppUڻV޺$4iJڇuڡ_w޶7-)ŨQ!XDŽct@ PB,wAc_ ?ivwɒPEk x`qԺ!F(R`,;H0zg %nK!$8snb*ʢ/9ʘ  @CKt, 8" =(k>fȰ nT6FK EfM$̻^j堐886cOa97?2n?q G:Źnf9cU% 5\eL@'Xǔ&AfF;Y-tuh'Eln*0y RaQ5 R^o݄y;1ug#8XD _3'L l*h=rOfEѪ )cEn^Ky_&Rxw/?Г&LR6UP`hcc8.`A?4lFC-sZ W y9Xō u0 @+Nk^KN@n~):-"cѧKgX Rv300*T&=2BͽY(r'/.u_9H$TUTB0<-ŔwXykQkýFR1`>If`NuY*յFG Eh,)qiIl):lb1=\gqT(sw`YjBz='莦Fi)%8>B-CXt1ը<$Ustik.}>' 臄ժKeŻWO79[ǟG/yOڽU:Z3Td"G_ҡ`U7(↊"\ TWAca1噑 Uvp $)bJBc=~u[~6~.ygvzg&PMOjѥMs KCf BUT 0:3DSo[lJFCs`sEIpV 8-0 iE C{a9u&8^HJh ˚~-u_/fOׇu:r2~{]{'i r *g* ]+Ȥϻ$  1ۇV,#JSA g(qiOF`h1@d:T0Ѯ۞*wY,rch}uGXͩD:B04I-A]z$j][0R%O"|R~<Xu)9ː^*0a*B =.o&8$v~f>a+R L>L2 i^r\xuޭC?!8 1R5ƹҪ"R@7w|4>%S8|F3`MO8bl+AFh`%J3d'߯7C|k,~70WdYÃ(YU'=dXŵc!pt\P:1!MJ0iIKЧw17 v@?]8znc}N Y~KͦL="rPt];arN-縴 mbvM90?EbcыQc*ylYjt2￧rFq;be7>}K$ů=G߁8ԸG^HLsfKCB2U(~HQUUbu5TRVB',;ւKCzA-fPcn#BР}j &A)AhBZ8^G czX~.xp|g_~~^(WxI;oeW3VA2ؤ8p.[Kֺ`VPIWjcT<@Z(PTΙ~UL2Y ZSV CvLf1SxdT7GoXIObѩSy> T8hWnR؋SL8N?Y@*'b΃@ 5 6RI}#B?t0(GFqh=:Ul/qf:@ӈQ{s; ^re|~0>cHq7ZF ^K):&n*<` H } o«ɸm3 =D `gaF2|*ej.Ȏٱ0 $g$ڂx`,Fi ]fܫpMNGJ@> ]zւѱ_P+#*wuϚ!i \C3qȠBd[0e/>XotK6r"|?૎3M}nڮub(Mk: !!e>0]z2֌v'9!UĂֺRZo35NȦ皠 oox!a=F1}RfU PSp5@:N UzWIȢw戃llekZwrHSw"*!(8WGP 2H[Q)J_zO FShn~ˆ|*j*zo/WuxwGNGIi~!Uܶ\.~c]T4&!;.%,(Sei]O;RNcS1 7%FiB `|}KeX00 5 ‹vK@BڢHCЦV~S8vR{Jw@.0:& O) !9F_[aKmͶxxQmĀ7yRP$QZdN&Uc dUa=)Vi^. X8.]x}~> c–ۍ8ۯp~wbl >:2{b]GkF^`oqyCztrGXP)Xrwѝ{o`瞃k#:-7:ZW_j4(`/֪aձ^gf눝!cd;'ĉPb&{a(3ă-F`q5GVb;q8ĪuTC "AR*!(3h;rB,.:=Y9Mΐ 30R_`>kp՚@pŁq̻fҘya{K04< (!C;DΜ|pn1"2$tvߧFZX -ҩEe@P# W [;*_N#!wamI @ѺP $%t&iE%yFcj^f F,!|<L6t;$WjXhd%u+0 2tj}+W2Yɱ +ZpxX1m/焄 iܯْRD'+f"H4 S6x֣y_io݉i98rpHN ':`w+mY2p LppSG3#2&G1% GTdMḷF)hd5"<}*6Xڲ,k1vzc<3OFcsZe%!Tj@"t)Y$ؑHeB鵜PRtK)qp-CJRz:-]— s[@ k:P҃/M Ne9zY}G81e-X-LsSbevAHh:(muxOS z гLU[^}KD ?O<7vzt~z/⋾_kʜoT ѱ؛:֣Ԅ HF2 N2V¾%XOh7 ņFي}.;?v1Rd-TYwT25RPJBchWLű5T3Hʜ4B&Q1(SC4l6n2=7]YDt6p;ogCOTMă10NtEu.K l..)x0ORأ)Fpfs;fAaV L9D60O\RggG#` n''kKÉ zIkf~^$ HPe}W"놱Rg&x]71Ij  9iC<`X*6JjS V,3GXQ 8VtOAR55tk$ ԨoM=z?^N _k N}7g~5.tmY4 FjƢy}MD1.Y $X?<:b}"G,b|rR<Ǝ4tE4 %34./-YZD3s0e"b"]64Xw=:PGmmu K\)4C='=v\0JS/A(+/'s~Bb_bYhR=RJoD'Ǫb*,Pli N1tS,gqe266*ߢlSx@TPF)R|KUt)Ͱ "8 #P a"@|H&;NG,&Pci%HpΡ-Ъ*Jb)M0ױ3',fKGZgNUgq:gq|}xp﷎w;w>'m݉oя:-7zv;O=? wΖ΂1ktCGW۔؆A(,ZQv4DfRDzKxwq !Z~Ď*4p.Zm$8ֶ ;Fk$BfjÐT:#hɈՀN'SYێACFkjs%D14$Fa"_Â"uv9@tã^.:W\ a=aqb$iJ3|ũMs'\r@L{ {q #4>(L_}gbǫVO=.э6ITzirN31Mf+^̑S(}B7ƙ>^8G$ISŘFDkic1>n$8 jkn$$E_7Z'8XʷWa[<]eҡIDAT.CưbՏS_cmyح IpՑDHkwף~ۈ߭AM;qU4Ӏ1 mЀ*}nf"}ςOWh@Sc!tβC|9^;( 8h kt KMstn"vb1cI:iB!lLw;4tjXM+~ʱe 1pt: ]"x$ۊQ6۠?z힯_KZxF?N봠9E%W,}vIBY(Ma/@i8@8P|$F䫷TKO91HE҉ L[XIiH&ShtQpRtW .д`6cYU1Foq А@>vѮV:'8kkvЩ>\5ɈX> <;D{@xJ>Rb𖔶֝V"F(u kVm%>):xs6}R;&:l;R3N8D#o`9}|s}ф a#,ˉ`2 # -^M),}'KdYPq8W{M4-͂S't:aЊ>!а>m0nV96D`n ;;@m"-JP:8^ÁNC ?j[+-r)Uw8Q,z ZW`jU(BfUFw|r9as=3:9&]NX1f $ 9&36}@^1= wk#a5i@fZ7;^E oʟEz`% ++)~~v #Ah.rzIg4Eq=AW)'3%,9ixCx=7'D$DLW`K3" #;ސ͢ڎQRv,{D ME&X }Đ**tMv>LWlyݷ'_=kPv=7uz}^_{K>>0{6E?--њ\74s( V9ktxj>qDF7`3vf'E#Ůo 4vTk{8xM MHdkDE]~Oonqv|5:&fL7a[loufݜB v(Lm6~ /f8y9! =gwopX a}Un5`7$Ɍ35`jl\IHs;dvn.9&tbS4g.,"LiaVUDM >NV ̃NɅljSQ$^'Z0 u"[W` ,XW ^+3H{l`V_;IqAl6o# N \ܴ0P'DuIZ; PUoCٛQ,[䀆<}NGC*M CB|6*!\'abAR莣C6@n"z|F7Lo9 Tvd8X+QTܯC]  L1N *j[4@)2}L.H\x3#_v!;.Wca )`@bnXd/o׍ANXm#vlevNW^HZ7!poz џwi2Mݰsm(fW#YM%B z /2绰vB:\)FI] N B(42D.C~<^Itѹ hj 'v$DFeͯ-,caDZy4t@#N66+ɾH3dِuUU*9Ni9:{[Vsww(cJ.AoL7Fo1""ogo֜ccpMr x©}~w1}EԖ\`b':xѻ)y8,lGmB@V@L8  >ي_{`B>ZZMm +уO5J,`:Y$ ~b {s=ԬCim^o?,실A8j͑boiFn;ǜSS*$4U]_X˜"4%h vyWη>rZ_}떳Z/,sގcxܶd榩N%t{!Nlf>5 BmSD BDU؀B:,-5uaHل]D@r3Բ+ l&+;6  GH#Ҙ@SmR =*sQjGcE&dv&R9WX셽VWWŦu4^bh݉`u5Cz8.vą-n8ryV؄k˸`/+}zBlQFV¦:M#L#ns_}|:Z]r~b4/]^J=ʶ틆m*e{<Dz \[f`Q ,tsql!·u2@!ͺs=cԏ#T3 G'ϻwZ\{1c%uyϲ?w W_Mآȇ>9\OofgtNw!hs.+r7_v)ŨiZʖ^"JELf&Oxx`*k6=$Em$ ,!0$[%ӕdܡ)ſLXlU^*,* E"jlw _ZDI#U+,e_H O ػ'y=ϚQF` U_vR_<bUHr#z .a2/e"QK+ .1:>%ڃ\.j9"ȧrBvXk{3 FnAryndwh8"q>I隸qqyXa%wyU?{kv?L!0mG|eA>^\|w`>;qSxw7La8pUmtөsHKmt,VhDC,fz*XsG{e`o(EWD&Pst%LVʖo-$:AVv\hWIFH+'lgxjf;auUHCBH hL )0 H%;DrR[ =5Nľ.մy+_=0>_*=)@r_N3/]or߶(E<Cf Mvhsu۴#AԵ[N4_~o̦&V+PE<\X~ bPIBNeI`J`Έф 2!Qٗ~>F쓔w۹e>ru?Ol?K, 'υ^VscsMdBO5I[B4|ŃmwTz] 7MLqs>a_[dU16؝',A 3GzWŝrƀj0+FŵDڱd@^޿߷>4H @s&8ۏ>˂:~_f>r..lf3|g90m(62V*6.1&Cj#D$T&V2B\P, _ U;n̲ Qj*CN4}?O&8Le3q e߫‹ʻ1P@ !2KuBgcѶ_ @.=ѬyCp]z׌jZ!PGRB0S헂Dd`6Qq!}]aͫry  ^fE5y1ҫH# {ى@o 4EO C60l<Ŀ/(uɾSS;cju|=UPdÜ9#PBE uHL}%bHSʨݻϵw}ojIz-Vx{}β??~O~ӫ ߞaooHIQWC sM(#Cz8p}ӭPrI)0Xbn.&N=CNW%Xm=gʯؚT?7 "@0]7E&69(G8;0WkM0\]J8k]v0D(()vɺhr+EֵT)H[wV5k}hJRiqU0ms.d l'>w(8iÊȽ*@.CP;-)s ljiwٕMfN 3.&T p-bε_+Tԑ2!(+NL]؃TpA$ē3|,=Oĺva`Wf]#.B[WvU5QEӀeL2A3H8bۣ0+ $_9(E$AuˋQ g~|oZs"ٜm2'mi3*{@A>~AetYKT^f 7{ۢ8 pTAwG(5/D}b֧~U@-) Tr &NKmI+r_Cr[œEZxŲ#yn;y0M7[wF͢O+63/ˁzF+h{\d?'/̨v{ VbªGWzvydn-@u9a+.ߗQu v˵@5Ȑۻ;j|_^}`װZ/ó,_]}\:μF7nӣߞگ.k+C넵fdVOZG p W+o6e-}K{$B(Nh_'.і3j3Usȑr8F΋Xb'QZp9KP$>ru[e/WW3.`->+P9̞!Wh_mcLm0]iy"DŅnq;z쫸c rǤ zcR-q]ⴻ ;k7@Żs'<|jSܘLnTs̮Z#uCmj:6Gx1̥0ΜL ZT\sa쑧>p>qBpoM-ϑ'-me+}[xG(09n'chyLϲϓ_hjO@#W~ғfmu8qpd#$T'=_GČb e ] 7;xcM&clYٖAw)J@Ǟ% P~F2ʹt Ϟum/ۃ['dSE[L`FιC]'c[l^,jI1b3MDٽ9HTla$)B<fQ1p~U8Ix=Sg8qeݡbT6{`2 _a1dpC`z1!%4&xj BRX:#T8M2&" o¨oI_g ^nKg\_ݗ|Ƶ>qG|eA"3î|ܩQ{w!Ip(8FXS!Kf2aL]9.J+ЬmaxwQmL b"YW ڧ+#N*y:uy1}bBU^Q(<7zkU)xOlRpga]::1|Ad D\WPV 2, KIb+gG퐓w䲰Au!! `b%Q}+`#vBO;=_oy 0ݹl?+,  <$5憽"`mp`ZQt p_܋H VDvMTxڨ2+Rhg-P@h;wRT&=\VG1)8c.>8 ]{G؊^ 0<-xwݞ7.@LJ)u>Ӫ^n/w a>U@Z}OgX~ 2EĤƀ.E EyE0dgL }t(v}<FwHZYnAj\|H.xQKSʋ yKMqky(X0glO;ctSFέ@gU0e0wE>a]TؕÅogG?mt^ۂj-E:lR)>v8_=Ԙ}{+8VWC֝&ʸOPO3[vl]~[cpA!)2FI0-`88D{OqJEZخr2/TdE,n*J >l]``E 6@Cڏ r+)E)8ĜȈd6+j|*9BN#"V`ƞgsP"}|^xۜݷ~ )K.V5u@΀!kδrf]Qz&:A!I=7B܄uVd)@!{kQ(s]x]t#:<0<ٰ):\G]UQ9"`X /vQZ#hjboJL& :hNzK3{va0Bt13Y*}@H=]z~)~{r>= o;^Ǿ( K+)h M\`Ht;{y B;ϥ 腝v6}936qCRۛ_ngxֱ-,;Np;oN ҉yA hDVB L]' vA$FR¼(x !+8xك5jjcxe"J@1uN9E~@Lœ: ]-R,^ Z[dAa1U0 O4ft3eS4{[g35I0m] A{2Xj ŰTI;&tHm6x!׹љ/UP=>(7O?7K򜥳,@i/8Gp*]@^;ԁZ(H| AъP H%%5"y+xšt #VR 9©ӧb"h2u┯!:@sԢRjlw؋'[(Z!۝WSA,a*t.h]]d{׊sY,^>3dq(ȽEN^9ܽGkJd{3B!ݹϴ3絬 .:P ^vg\bN.v)BO*6`F I{jjE'~"UwiF@SQcǢQ01N~.RqBG. ؇xb[Xט=Ϡ\0cn!#@ZL\W1*aɪ' dq٫ \uM;l I\(` ׸֢> r$O<\xR)J~w^ UTtg؀H^g[g^/qu߽  .7ʘM[Sd汧i/@NmK<H9{h(ץ~,~(1\ZҖeA{>_jpo::YᓷficXVd] ?JFD$ҞF(6S wja"bTddpUY!E:>}x* :'6AxR庲pkST.0-)e.S} M]-~iBջT$a7g6p)Nd,*2*iU[k=& jIKJhhZ&3yL9&n<ˈ]B?#B_+yJ/Qijڜ=;{zD/z%~.Xwes X ijPW:ZڧA y$w8=FX;}8UMNT }{ȹ=ʼ˿w fW+rn{?G_+ݗ}#9mg<`YS?3y ҵԬ '/:9n~~xXߨ6 hw${3M ϤKbVƨE6W48z &bp~7zd[n cP@ɺ26vbmRK쨃ANZv"l -lez˺lh6^ xvʨo7g0/pd.[ 2U(VrEwdu j[nEJdy~ 4]/춯~GJYXro{^n cN?0"L61+LY?KjIpz_=:5}W|oyr\Bj6[E\kX, N=Zo&;~o~3l\=·ޝgѳ<ӟeA{8Oz:Vp{q/NsO + 6 `OOyv0hw~pW)-,Y f@`GqC h6`J' s2lOTUh}B J|gYn:<`Ŝ\ŞQq&TA1BS=s@ѿM{w95H&1M7<@:˂w}PWBr `j`"zD7U</-b3˃8'Sm qt={l ˨è_ V`VkD^h?' M" jB `BRdd \7ׁ]Uŀ}>{ey%.?0?o:y̫]h;޾ZمTߚǵZ$i)R.",>qBuUeN{jK@$l-%m<͘M;Iؗ#ҁrN}`g 90zE,՘98f`*nR )yjsK,jԡd"&0ޫ]`-ԴREi^UƷ!PR[*>1럫>\sn-wc|l[/n6{6^lE7F.tq!>"[*sOn`:`S%uJ޻ە53G,c>o!ĸ"(!PFd/mIhK\~[\ bμڕ~=+_<ܳ, )].}R\V^y/ݜrvrnZ]%@ahǛZ5a+`kd]H;t]%g\ gQnj:([ϡ] (t&؝ٟG;qT5V/, y³~M.w<Sxp<@ZЊ탁Iȸaw  hcV()M@e Eiuq~y˰ b+뫘noKsʡ"n{8b{Q׵.&%wPRY}/XMVF/ Ef{-U\>_建 \ =YU,aJt{nDJ:$il\Wy09$NJwE6XJt ]dGPAQ)u zvԙTc>.\.;wYle1+`h*݌1;{vH ޤrgŜ2"uhBFÂ@1!JdMŁWQ@fɽ{h},cBa|~l?zgyϲO'b_E:EȎk ؾ%s@b Vv}]k U]r Xdd3NvGYF:gK:sJ $Y0 UHxƈ85vLγl쓖"?H;$֮tи,Y/C\q鷠#/Y|qS59qp6`2edjtM&>o{4Uatb1FE5pU4AiIQ9P{LUc;IQԠjXYb|zY̮f#65GDػ9E!XP01unX'Df[cObXYu4Ɂs pDTЬ3;j+9]2 3P pϵ@.+pڵ+ǥ @a_\:=zF;`6&ؓ}ݪ3eTϋkp~vDQ˄F)вYk *6Lve&ń:`}`y؛{c`>9ib̎ b#- *6-«_x I\/T֦E#7+cgiI[/,i;neGC_o>ǧ/o.XY X[!4|g{Y|B߅ހsOeO%ã/p{8խx&CP 2ąnP##:IsW+kIs7irvA 4Jpt(xףK!`03bՏ%[KrOjpԹMKm},+db=0M`hOѰ g#]sբ7q?++UQž("YZ/O,$'xu %5h&PFX#S0ꐝ=eLkc. פ 6>m=宼N{λ\*ɣl5M?60V3Vl {Su yv%[F ۗ7!/TĶ'z iOBjÑ2;v ?}=˳f']:Y3d@`p,*_^;`X 6BVK+=0痨*,gPm.d`JʛMX~L$X x؛ v\-'//@-" hBY0j )^r!D1ǞByK޽G+!N|Y_:˂z6e`{PQQF$S+7wSVB(MC`hBL=(M _Y_C]UnwW@gtZcegc8Jf;>./e.cѦ]O #'IFoW+$SbF8WT~^Cρ:1p"Wd" Iu#pY嬄a+b# SǭFBxy>^GgִҕCG1/ J8y {ΐ JuӼow[Z ?˂;^VǸ^ 8>3+Հae]H [ܩf UDd u 4Cgof BmXmpW OCh5#H,%ԕCmo}l\s1{p8Mʘb]bL@2Qlw _0SWfiK}umhp 4u1.׊ŰY|LNٮl%`9~\;%.g9|]){w5ץ ~P+!x>K6r]r*9 ~x@ 6}0'Pv؅+Q~q E_fWY`T~g,:{Pp#~ĠCƴ3&8kr[/<`dKI:$D&" .Z2E#bO! Qz7S=_k\v=_ϜG,, ۟8X%P88HQ'Y5`m!(f<LsB20B>~p~']#rPS. @s?d6> ƴh#פUDlXNWgUb'r7dT|܏KG 6bxg jyÞ^ŋfcd{KA߭g>8|DȭoM ]:0đQ3 }'W8G+SGzi[HQ7F[ImI=eρ|E Y1(`)S!GM͖ާEY?g 9^)B%-5+t8QL"rϞ m1x.؟fO u-r;wᛏs KP`h3 q> 0zWrxNH Vl3XPϰC{m:gNΫ*¼]*_Ąm 6P QV鲲Hx)!wZ:_uúpUEMx["Л)t::!́T0$L& $V籷":>QE ~wE`f($%ۗ+<}m/ 7o>ۏY׳,鿏fz.ӳ?ޞD$7߬ۊ#u8.&$4UF~ћPM?'HP[b@JSq_"sDPUd>m62Ϯg ['h}3l>.P4eu`^Wgd!6TB]`S31\01vd-m.ڃ_=ܖ %$k]˂o?oToF RK YI`L̖6 泌f&zЄ"~B/0eU"cgK@~ݼ7 o/#O|Eo+WQ8oӓO5{00 zqn2A}<?ac}x!T9?Dx96P6ք fS+Ώ'w|:WӕOv]F.ϗ-b+بڋtr:ph:(FDZ=K[PBr 9-hhW˞}1m*\Ù``rѹUX&ӥKFxc.żZ.3ۃB 2RRXBF L}kO~%}'\eYZDX/ŻDzжn `dj d&ѣVTB߳r|/Ieb&XECsfVx7gPr彽%s Kwwٳũ(W~u;_D]JFuXoB_Xk &T1:h7_ʵŞ&:Đp'Ӓ/_562q.;dAٽPa?E.#O|Eo `8{&nKX_Xm,; r1ߪM ]yՏԠ;?$djc#bd!/:H3"wx#'{jNfB+4uE \::Qb6v 6]txK ]&;-BkbۅALpx ;onpcڦ #.3LVio;Rx=v5/A%ƴϧw޺Q,Eۆ #bA7Se-~ܯ0{t-A1ۃ{K&|].ԝ6*E,dHUl/ kX~<Me5^yjv! #WhW{X^ڻ*ؾPŌA)G߅zcx0~K.<]+ d(DAW|'LjpGՆx hl6 QwІ0hU-XGEmh8#B ۛ BjQ#_&/fpڡulhkl[T$8rmK]FG=/[E`K&\❜VQWXfz6B5%{%e^3)D:1m;pŮv!]toxl`_Ks,h@8mB Tp?r=?(zW#f؛HcN] "u8,Q>a()il^}gh{zO?08(N\gѳLxK˅hc"ux5ӿ[blRXld~}tA+,tTVŕk||_>yU} ,jrr.tnU#_|1m-Ž"$:d4> aĆ0><Y*aRL[/MiB׵.,i7Օ2fA\g yWn$ 2=zW޿|읿&Dko-s" hXޣ5 qI+&ՏmMyPW+CC3bW*ӷ }7r^ ^IPKF@#Dk<$@bc*f[˖i?C-5.XG\Pd*W&DpyL|n*"+SgstVdҋB!Ĩ 60a6_$:/S&"WHDh:)KlaijfbgF{t0!Z[\eDT$WGMAs/z~v8D r2Gh 8SVvI{>@ݸťʸ |ԑ] n~-PEWYPYa/k.ۥ)`+1i F,!u$͌Ů3 Gф>nb H@<{m/]9oƟ N}~,|Qϗ}A."+|dupbZԸz$,5c2V w08ocv@7^=jtm?~?>7Z Yr$؃@!jmS}U,ncB:|'apb*P58p` ӝmt|q`n&%;Bw> !{Ň~$ MtۼHt+hؒ=0˅DŊwE[`nF$k+6_`Yr+}!U3sMЉQ4P&+Bcwzaو_CaJ+CߗQOrN[@KDgg31([҂91D)DZ`~ym=йrbM~,eUп;^/{OL:?'T + PF|LB)aPu0B{;Aߏ'=2_r--C V@)E*PCF 3D+ c4/ܺb{b oӷ Hx.÷|`%tڠ!xԃw|>?]:,H0h؊P'UlɁ$G΀J Íuwcѩ@ qsvev T1 =p# s" ŗY|riAKx6l|8$2ndl@1ƂIO<gg%OӞ,EdQEG>)^ݎhP{h&= rhhJW]H]S/[ޡ<"Oce}A٣MCWkڟݿmƍ>c=ۏY(Oy+qGބ?xwᜆOSNLJ V#f "ږ|RHazP,~;ϺmfHl܊ רdl3WEƽb@5sB kX\cT_9ƍj|]̨ƣd؋ &$6<6ոBa>S82[ *IM*vfX݋ UN}j,O"Oxr@ `5LNKkUd't6XgLVЋLcPFg1 i-qwNLh,a2V-CGz||씤{9:9=Hcm=lPBA{cbwQ VK)8/ ̝N*u:%ʘI2rYJL?uH`dTܚ<>g+ʼnnc@3Oɼ_z}oB=8OG,|'>?cR?|&6#N5BUWXc+f2љl40E9-鏡;n\sx ?o!"sD1u[" &kFfہY($b?/ތ7 }u~V+.^VS}\O;2(]lŘ(p Æ}H&0S_:B3젛b3u@? A8|?kVVv<}oj}  uN5pHBM4lѭYzIuo+-6mpktS؉ewmg9 Z]ʰdgH{U>YD0.Wۗ;Aa7٧ Ë>}b!y_U6eXfԏX䴀Ϩu8c(X`n0ZuvTH-%ݾ֠L9}zDV4.'v2-?Swsh\;w-i ){  #v'д={eڹX8hgy} G5 ڇ6~xh/XS +.o⁀ T`0dzߌ `4mX;@P$U& `\ &R<f[G|9>cx_>yek3 C1q`ʦ"ܒ3.jޘ! dA(LҫThhg5A_!ŷ5_j:I WRa 0P 9)Qu]plZ0uջbBhCBQ GBwbiU٨;*ꊚKꛧ-Njܔڋ9xxK1v}jþȾ^J(^R0j} e'gρTZB0[d]8hhéf'(B_ĝ_]'~-^7bgy 7=?B8scWNMoMiW!6V  q"f"AU)*brVLy3n8t?𸯻3-*@25[eĵ떮aEWOױ7~ow=3Y?ƹDY[LQ[+`zA@V•G\N#n"$ll4{dGR_1h=AAeze*`sdcnr5{14]UOY+؀8w lN}qds} a!ZU#tM0].y]&ϤJaȗxx; Bͪl;Q~98^Tъ䌕*CT1 FSd1 *ޙodv@/oV&B\s['$bHF :òq"~1G,ϗ)DE >}?4Ĩz8NcIp%/8M 01`vM>_3_t{ȅwAeEoBjA8U/0aUL -B9pko{?Ql49^P!jʺQm!,,x3x}oi4>3B8"`T4V ǹhrBVl;!u jcd\N&Stbb`w6y?܃neZlj(b;}םJu-Yw.!Ȭ'uX|h4uj]ًÅs}+<^ULB,΄m) ۂr-j|x܂~ bVE{몼[ۘfYzN?'ۙE97 J`/ gQ|a_ɃUj/](a?>#`y~,|I|An_Q\:µǧo5S8JڭiD:8NrG) ?)1rD"MG}lrvYa]M(gݬX:Lv]*`[&7F5~1 /a_Pg1~yd']nqTAJ©xEqaWKO]:cc}  ])`Q} )DVE ڈy'-PJV :QMb<е ur@Т UWM }(4cGsSs|@}gyK< >U84v8[wtK!bu5bmhD* 4{ep`grZ\S۷c~pi} /xa(.fǁ\Do̽+S ƃpGmjܾ9\ꀗuAa۞]5֙+1b6XK9g W+ PBv -w%xUB̢"+=4@QɈ=Ӂ`&M`YVB  8bI~VR ] I @C;4kYKsQ2{᪳Sw,y۫h|Z ݝϞG,ϗyo|o#cpA3lK&0e󗯬l hyρdJA Xg :a~#h`/x\.E$y kB-X&r#*dKZ#n k8^#x{s~7 g_kh;P*{ESMCA+ ?32Ȩ!!QUw6{U&.',G=spwFT63K@JԇXp($T.q;IB2{aUv^phI@~6\x/])?`1)>^mdj6R Mղ KAkRTC bKiyw;}n8ǥ/ߧ$΁gyf#ĭV;Ql]s)Ry9uAgm':Y;^J7bL\crFLK,y@oxE/?O8>Y`E`uJ%hՌ N6ڠQԲ{1?p`RR,㮝%yPu%":Giع`qfR0>1n7#~RW/zoT A;dnP@9ȼlr4ac{ڃv?@#myƉif1"V'YJ0?JVƿnrHb*D "s:{Q/ 1DL.lB*x@> AO=kaXX](vHt1+]dqdMJR[_7BCq.=E^ϲ'I;n+ٗ൏u{ۅ2{SxHZh9$pH`CF*P"klc ]8fdW?~Z3 +ۺl?vgy?);_~-OE[d'Apƪ`ڡ@apN;ٸ{u!s׍8|=t1#ʦ&#@#6O5wx>W T3Ћޫ\43WK"J3)RXXWȑ^6(qm >O# ,&8 |%Um͒ Y>w@6!F`Qrc(Bpe(h=y (U91 4ւQX,%6AHSy9VG,!vKW~+ Q! AԔ tGf'msNlZĕs0~,|YOMc|vvέFlmNlOJ*8VXY! +`PgDd{wP,) -+CFں{߅km㇞q5W!'ƜV!D^ - bn`xwsՈ]>6JF9g^,eKѓGI9 [4BM3 SlUZVʸJ5ovo,fK rͧ4$-M::0 QqBÖ0g@ ^Ҙ f1{3~/5Wl>vgylY+zگ+wz1w'OM_TceXacPr;(CńGԂ};vy. ⇟kCDfQfVz{Oʾ.je$kH^} >xݟ w4?6ㇾ:\}Z `V/+͈BQ;I(hP`5:@EOu|#n9"yy mHTՃ5s}{?q?>?j dT6=ѡ1@ $etٱ%J xuiEFD<Pv`oo#wx`hR Pfi&NaAZ3'^7ŮcO=N%lN01axv^aREYf߽K$){"u4-=b7l.+b6cϡrG(M^US z}gԛ\U͖V)OOn};w z,|ٟR=R}΋'Ny}UUյ& %9%K˪ʨx<߄n݂n{/  @h1L4v`Iqrk]V>nyAl>_v}upe `U#A h`蔹h:OS5QyE`;]suƑI[3:\rt@BZaW]' 2 k@g *Zfg``M9 l%\{չ" ^ Vgi1#BP6L*";'7\ctJSK|ޝxxK5W_q6"Z&n{:(3D>=øo^n|sVZyIv 4usWJ/"B?bdkHQVbwb֘BBT{[^6o?ͮZlo;y٦fHh@-D.p-'q|@FFJ։̟ɨhU Ü2!bn?+i.9w.a&u"ՊYͲϳ` m4 xZgأъ]gd]*.,Tp̵5# |c7Dd+`YA@ǫ}Zmσ69-*037ɛ;Nc\|=*<"q@HaLPRCC/R8ޮY MQB& oϚO />,SP 6A{VVlm!e[9Z=gbD&4W.u[d =+M }+&+́PEF; MD8!Mtݲ ^Ձ}g@Â)co" sEjS:+:a1d$ɱgKEN&xN=*ٻgAY?_6]0˄s;v^q|~>_4k!V#6&X)$%D VF;\6<׃0DN w{8fDIDATɉo-3 ۠nQŽT!!Mٷ^/~0xeh[ i*G@"#*PW,waU@3\k6?#$~_0\Ћj@ //Fs 0Yu]]>ĵ)nNHRC : P`1Ph%ٱZ U %WM+s{z(Uԁ]$G` )B?6pIk3hTǴ:w% ґcPlciXJfTvPRűJ/>zT&b3&3`0&"b/N,i3݌;:"i @1S(fa~߻]Xd_mL*˳<_CU'7pɵ&_:OrD5JX2*d SGJ] k`u7/O=|y6:q /s~=^G}jjaluWݗ<E5A-_sSV|aOW3|Ϸ?: *B.-!B-Jf&  ʕIq᪵)>qilbw@v~Sو<1-gى%=ܻC"ԡ\Fݕ.~em:b,Fw%]?$+ q?{Qvj9RVlxbg|>^*>C0H }fl+x'[`T{S&SA;`gdG2kLsR|5ɋ&&etƟyCVw䦳L[= 'ނ?ĥk;IkiB`X{1whb@RGޅs7=Cck2kxL14!񠀢STDo\#h* T >p'7B.]?Z:05Xݭf 1 m;e1~;{]ZQT&nq}{iĕ$~UtX YѴBA<@1ajKzCDV•׬zO|r#',"`̽D6\FY?Em;fY[ds0^JoSB &b1D>$vLa 1ێKA:B2f pCk௫ Q PuA=ALڌM IF;[.,6J~yސ/_}l!O; w"^t֧<<=ˏY^П_z_g0ٽy|RQ}άUġuJc0?a1:9%0g30&\v~oМ{%A  \Xw VAGC<-H) %} 7]8Ѯ"joy4^`\xEwo[ h6[}^*D.B^l$܂ݮ8b}pώ|ѵx5"R|D˲]h= mX69(%7p1at:k ?a/ l<,|忄f]zKZ>ȋ)ܪeb*-ǂ&T)B UΡɃRj7 X`ۡgxB8ޓ PK+"b!u (Vi؛ǂԩ˻|_vPB ;!LRϑ)Bɖϣŏ׏s0ɛiyc˳<˃ǂU (ᙗş~WawZSA aP.|3vCultރjxg i 5X;t[BAuQ(U63cވ[?Vd?|㯂hVkE))B(q "!u:{r9!7y2Gok1 uƀx  rǒǍiQǘUf-ZˑѬLw6!(/h]E?FU6e~?>dωbHb9%Β% ݓE-sqr TXV Rb4fIKu.v[ҌjCF+ymd@z+ra9u2eec FGY{)EJq^s<2YF+GJ CES+q&ZSe3JM71;6\Vx3j:uZA,*8G͡6P7.zWD+[w?{=L`<9~a<@ҦW'{Q+Uf=w<[4+w x,0gtlЏۤ1_JPyѯ }d$U4AD23&ӌܵ4rI H!M !s@LKwt7Ϗ|_ ^nhZY;xoɫ{Ÿh_ MjF 3`KIOJ6VfObEUe ih{+7|Ct`<Wi@P,bd jD ʲmK s(Gt "Ty܏N+oM{O:w--B8"{M"\VGX)ICތw6t ThK^p\~9pG1jh3yօ&ҹ_7=o Oދc1f"T3W{LY,'(&J1 1"tB}Y`XAݞ(hN@}1V4&_| v̀ݫU,tNCQ.0,#Z6>j`A v8ceLlKnI;c̮ DZ|v%ԺBQ1-;u{T6ao_<@<D ?-']GG+4kkA YMK>҃X琳5aX'̎|ī>|e *3n@##djQ#;Ey WֹDž*4;^{>txSv=fRx'Gߝ>>W 󑾩mz>{8LG;ԜowC܋6`Jxkg?znO(ʾ.2CU Q- #bweǟqۜFJPDAB iqj~5/nƟ#821*p;ӈ6N$Mn<| (Sl?2w#BJ aZEO2bov lx({u3s ē1"(b׉Z7,|6.=zQ_dE!ؚ'wuއ}9N 4D!@dJ,R2%J#P-vNl+N\%,YEQ H`6$ΠLoSw~}_ 8,"rw VKɴA'\ 2h3kFmZgNJR;Ix6RBgBkyӚQm!ݞG~y~ۍnZa?BӜ8 uy˹mJdn?bcLo;46 NqNO4+7w.gX=v =^|r<^[T$ dZVnpb22^.,$ ǑH%k"I:3<{jOSgYbfyV7\;3֑s5i9o{q+* )N6ϹUgbX=v\r9SϨ}@433f_̚$hْٜX c>M)=%SZޕ@"0:(_cliM $F$Jg^G =6Ns\vh;]|gK{TmlWM4Dz'qN۷:uҨ)<ӝl1r LP;#jҞx۹b _'BFY- ^#.8D?e.❥s-P}}9 ,W;},k?욣ilg+:Z'옵 Pl.sNÆh2zVQV8ݶO~6>5"

    Q ك .+:dzj[AwH.+YLYn[~9|M״>Lwo_30}ÐCߺE6i[2߯^~pe }֧i]'щz2jB&I8[3 $\(\ BC]C Cd4eMu`$ >Oف̤< U<yJ<;uo~, _ yd =9dϮ|T2Yb ڸӠ'9'f%K>os t.cY$Kd)LNђ33"$VĀg"@3*h/43S<П+hHM)'݀g}`0c:Hoias`Kc~ic_79女m )/[qD03tu~ [dJct ydh]l1j0+Xd{KK < GbRR@m&)@ y$ښ+$yZ}`Sv榶 c@zt=HF1Ff6=i {w]kЯ})] 1!Ff?i#K~g'|ip;/<%v$ #t7lksE @Wz :AL&r.'>r[٠~*.74;ZI^JzEGҠ-;wFCzQ=Š-s] [u5Hv"7K̻ t].-w9+{un 1#0%M~[VZܖ CG6PSOSh  ӪL4Hz9VNw {jЗgHQ* LY)rOMH);E%\mWUrSsI }e<}}lq=ͲG{{oy,#ýqk26|CoOk}0!Sܽݪuw}MT Eb 3u-0sO N/AHd, S"`Ӈ؂U0vTI-Bl{Ӳ-kImb>/u> zf̚ 0yH>I'94+=1z@X0*34nnBmP),,s5̒qfZF7AHi\c"it}6Got-UΔT`G)i*`͛C>7~ H'43e&@wH2F&2%glg?UԂ)+ 3)A3h*viG.09LZ9+"@RAI7y[`7]7hNMC^fLQϔzi[(AMVs (JV^>v^eLY \4e/A ]|vmb [elM8I c%Op!F;?i= ow7h^ )܈V6/'?حJi(Q)G95 d^e4e\9\j]_͞ t: >o CA!䶁&%h-AshI ss8c?+Kb% QQBtpàg1gMvs|.GzF_{L-$n_ nr #=e\)}H,8%qx'̈́U&y/\fcVizJ !}NY"54JjZX(RtϿUi'# 6a}›.dOkXSCN %ŕWUrC [4AyM dq>2A JN)ֳG\ ph. h6Pq&n;5XifvchnKv#Uy ms`p 9 Ԡ z] ySV Iq䶜@m-|o@IQXLV&Gt.W1Z˷W#F?.eqF Ơ6ʹ e}bdv堩4ںR@ ɋ`~1{Vod,eV@ P|7}wqs #"cݲ= [N}~dAQ08چ  iO|n_X.mmNfݫ AK$+ g9 Wb%?#n?zS$,9A:2A|_W'`*>}]?vf-Q˾hAB FkzXV;mX'OGp#^]/ !XRNU hft2%o^rW-=Gj}B]a[ L7@Fs`l^MCRdli`K7WBh[hhT>s>6*DQPkQCf7&!kU(ES,;'zԕn|kH-y HKFsYn6"ͥ 4́( ~ $,9 #W@o[0YLB_e%]`OL&<)&u!>[GqQŇ-exx$Cguv~'EjP3բT/}.0jVb~3~"Hc# @1XځYk6Oc#5 Hl˯=`U{Iwԟt{ UMx Q,AsUgJWvn'=k %NrB&A (Ld4dh3]>szO,]t-a^T@2 (K`~mk?o`.CU9|"A_,0I,ed|!y}n=7@68YѼ3- wsf2Qз١ALuL-5wS@ No@x|LZfx'c @BrONx;z/#6- ]=n;fYe+_7Ai6xK0L}WwS~ct ~ ZKLAH iZEjk-/!߃+ΆU"0]B> `kj#t菮hOH&0d?4'r͂E`<#z4'ջ8Xm8y`{mn$ͣu)FAֶ AJr{pO7ƀ+S-čm+oLe f̗:R`9t^6*@[ 5|2w^=p|| -s`TbhB!eZٷ}g_** vExq'#ߢ,9K59dkQOcg~1_?\QQ> cV{-r=""""""g-;i$0΁q%S5XYڧ΄PG]${T=M!I%fg@,i @S%660Ft2s5Қ`4 e԰a<]?eY R@ $yufnJhA]ښ (&[N֦l.`.H 側"5h*ͫc|}''f S ~i~g/ ydEk[73hkx|aϗ@ki%:S14Z{@^^"#0O s棼f.h?.]bد?GO-M3.0sm@7$dܠ|m- 'u?ѝg2Tb$ ޡ@y^<4-K7ߛsKܾ Vt/3Af~5B CcTЏI& @03; T~31Kx~s>^^ gu? 'ł骻Svy=u9C}SAf>'hN㫻J>0_HKst1,.|5}iI*Y(A~uu?!~>ռ"@vΰA>=_Wgk>WŹh]-ͻ` .HF Ie^nA0MS ܕ߁EH/K^6r 5K@oV~:wzVOiGnt28jIsƜ0|eW 1mWLYjf@\hf42vڃ;]nx^+_ u҈nekdY8g}t{˽;~=o D6,.gIp;#!vE/4ϫO;9vBn]NX+O' +c>]xI-<-򒬒 h~ҙ&Ffi x:n_YhJl 7 B ڂ~?  ] >K2ufY ,),\+ pdY,Ł-ѱ ă44N A.; r[&ʆv*̑d>ft>?2^^7k tiuH 7ł$V5_.%_-P觠t)! 1r@B=Zk&jch YjU*L.sAD>h`FZJ;$l@6HO"@KiZ-!E@&9Jdo@L7s>2` 2ZTKyɼfJo۫5&1_-Q59@_mf[Z  @2RIQE fyd!ɋS| վ[\rZ~ qXp3py/Oy "|A&2IӁaΙ(CBc!nk l7!g*k2PC!6gf(`ˠ#]ڀ RGqV&4d;a#`Fҍ' -{Ҽ ̲ d sjZ2ZY ~w=RCp+5oO/ɸ.sL-?]?={[vGU"_ zDDDDDDW-zں<|ɴ_-m{^*gUJĸ>}3'R.LNnQ į蟣l~нNڍv +$Y b֕ZLyl6цZ[u5 |^so7/Qi L1S{ޱ}Qv-0F?QRe]YV_ZYc@CiAmw~A^Vnq|"a,8] k"lb ;_NϜ^8Ձt1Rǰ 规IW`vC'y 42%*~&N:BKVW ͷ@A5Eo6cZ LT*T-:)&*-L'f '9E I r@6ÁafH/ =h#okZ464רBOsܧsMO.ζyh$$@&U| U*vԣHZJsx Su<59W3)Jk ʮ.[ sG X9?=—lf9$Y47mދ:1bCHmQm;BsBL=CN67h_ ,^e!t#t&t<IOfH>R 5iKz} f$ l'A˳:W|( h>!z4|)_PAn!|6t(h:mtT}7TErS $d>) IUGk:kB{ p 3L%3hsm@;zLrD zHƹ`ʛ5@INժ|Es _7AO>9µSR/2eNֺn˫;>u_An8ع|[U#H{DDDDDD=o>~fТI/cSJ^|#+.&GB͞dy<4pC|m :~J/bVfZNaNާ^| _᷂: S `rt PCЖZ][_W@jU-&06mS0M`I+SR|2` f6_6;@ޠ[r\s\0ַBuβ =9$-رX[ d+-yOV 7m<Ys8nSSm'R2RXʀֳ̐]7ԋz֦!:3ꗨf e 5R?PW;|;ѷޒnt^$#e@&!2l闂Շ |:ܧ45mAyL`vZ ?҄#<6 3@kb㗃6L VRŴj*f. 7\-4? >@JL)M@k- #3)f'HsS]6&Z \kRʤJIEfmO[}t 6X IYF%ŀv3@Է+> >o9 YJKI`sP\K=~Oe ?A.+D-It78:N3ǎ!ի1;)+vq]crAj@L{ҴMB.R.CjA\f6Ĺǡ`kQm!qZ@h3 g)H`(+!\JߌiB-)ib`jr`nJUJL]ITַxp\oPWʅ TMqR& :@xAȓOKZAWؿA ?aM̯gA? I: Y*gq,P2\iUc9! `mydnd,&+N`}VE`߹n.HEyEB\hMhkhjZ=R{cE YU"˫S>~씃0폾,ӿzD_GDDDDDDhYfe!fqt C͗_$u=$V?p^}zv@ñ &&G?ڡ '|]A?4:.в[¾'PrU$y ,} ~' {3'%rh5ڂuwAiyLyvam; V@fRLbҀK. OѼ>d nFovsӜ07ξ`IsH} /7M|c` q,L`d;ڮzҎ@K:X)`z$`7}3%]M@GA _ԧBz] TԇQ-Ahajn0䀹fI1@r$) :`z RH^ЮP!1*SZUσn@PVv{ٕq偉L`19!sJi 45CYːF Q3!qD݅!1R ~g+ϮuGv2Qu짨L(A>5o?hVE(ffүiz3| f9ŧeξfMz 47=t>Thil SY&E^L"iE yH&Hi !9e )``&OMae}B@T*Y*1`7]&z;Tt_T6M8TFsئ=4#,MB~U LJf~{q_|޺enң)3L96nvE*ɱ/Bh4՜@[m&mrbnl9rr/;5[l-Bֱ W.~wu c% NB< [mR;7N3H3_Я>@5g_Lg_ Mr d,ɠWl D :ӏw2-ZMkiK_tS@i}΀7դ/ ?L'xd'< OIg`晉v?/AޖrB/?imM;m 9%wELcȻr| LJg2q@jƐ(S Eh=}Me)R:IW }MLWZZ -L{ifilDL.HG}KLr`zwM2}`y=ݾ+S6q lA@ɐoiKC1yfE*xAPpU{@P}kRt۬S@0Bj:H.u{)+ ߏ|ãgOԢSU oVi~ЍzS@Ci$\ۼ 2  &`@)/L24&~U{hU}#_t, [TUӶ b͇g E@E6 h@ljsޠojKCs! Z]qr $Jf'2>ݤsL79ACR Ƨ\w/Mi^Obﮂ|5,B Hp5 ars[ƨ1\crxݷ2$,Ydɒ7nˁm7B˜"gAU^ƴ''zjd 1Ǣnu{]һKI7+%!htHz8Itpޙ+Nj|FRmuo )Gy5@@`7h&Miy$94!=ؖ:6 !SN1@]` =o^`2H|||Y@bDMۼ7 dz@Ї6TJӃ Z{@0Q3e AP$J. r1Om NiZ[z2 Y׀<'0)?2hz˞n&93ܑ@. g-Gn{ϗOH2F`KR6#hume?>2A '&%HFSPwܽ`2J~.ե_ChMm2&i:U!+!2Rܕr p3HrM:ws[~d?Q y%ﰷ1A3@ۇ "o7,kY -35U`vfЅs^v]Єa@bZI[ k&dvVs;kM #)=x?R MeĐRBvs d]$HS4rpkH6UОB/z@G -bwAHw4St ^}t?ӻ[kڗ 1bx>*BXg͓뤷&C;ew#ыf{_DG] } PѤ)K9`o`73;W߁4! t/izUpbOU~sg<85>'e)?bb tm~T4UL4e &7`73<1'd%a4 y%It4 u@Q5$;N;\'/ l0 *SƂ䔚z9'K@#Nwg=w )MRxRh9-% dI!u4#uy2} 35,7۞ߥvNO=Ydɒ%o^oF )>Ii!u/chZ1:(*O=iJJtR,HY->-;h7S`S؀t^j/ $[$h- gH> elQ8p~w9iJx"U/kHu҂zh"H0RP///5ߪV߁ 7[ԠV!Ѡo4Z8Kzp`{{w@?GM d5`rLn% iZ}I)o`~t>u&g L;Y'2;OJJ,hvkHs:Qt[;%2,[7f Jf:MMe3۴420YsfJ ЊԠ+}1okzww`caf i# @_9ͨx`\wn{)œ)#-C}uԄt]jz??? H.)k*7v;C)@5 + LcSi ̑f7Ix wy_ &%O iVF}n/2Kyu|) :H8Źl~5';">hdnŐeD LEt,2O2-?CNH]aͥ7›CoGq7Jw+ IOr@a^]oIԦjП8HJ( h.EE5{|z[3>nuߏw;ARxb;5u h~/`?A}ˇL{B6b YL7?7p9| NMGGt1xgp(bC :?|#8>K@ yZL#(3rĄ#*)/-EY9f7 hEB*T$/ As\V/y0$N9pIdpIGHxް W򟇴Kf"}B̵^7٪]~hΛ9gz_|t5Jܠ'K,Yd|Jɶ݃Le=v7Nej1U.fiƘT:)&){׆Y)G<d&_ u2H I4 do; $k3rGV}lt{>wAkkGa~L'qIvNJ>wНzVOJvyjޘ.qC@jHZ[o)v~QFKt>C`)dK;IsΜmghl^|o WG?J ϴAK2Zd u8 x &KE5mm} TAZJ+oTv@N*$I%QΞNs0N ͵ p'_iOi -1Xl*l!6_,N5S G*x^Z䒼*Cť(H&e(R+OwN9A؉xI{L_%6] ; RzIc(؁:~a y%!M+_I=03!h_[һ^/:p7橉p d _2vNEp|CO חI&}~ t)E")eT1pK^VR]ό sf:%%7ɒ%K,ԫDr `>v=xC/9>'+x{ N Lfd&ZESS,1g>aoErLN)28R ng);~uRkÒy;x|$LsTRT6MsrI΁.G-dhнܻ/s!͕]S܅,2=P5 iYMbKx-'@ Zq^ҽIA b_Ɇhsm, +8<4&Nasg9H2A||,]FK0KeIyd?I0>=i!^9&~l;jKS`i> / \)Al~$x>OW'ɒ%K,!uָ8'1;ͩ}<_їx]WlRĆIv;{!EߦlPӠKHrk݀vvӡ'A#' F]6Fx[lCgW!'{nGURx!TnU7defg3m= o>;PGoA]Mf_W%# B<h_'ѹdAhkZOI/]ɞsN@<ЎtaM5S9FM} 6OeD L{`d޳[IEs0sHA)'??|0vmḾ؎pHV>p|oAKhQ Kr k}n7Wꦄi}f_Ԕ.Ŝֱc-ݲS4v$U$/Cσ"e%'0Q /e 2[s$R@@ oqA3k "]mm zخ`uOz .`_ط6 &ty ş mI@؍V`ےnO/Dv!KtCAʅ5&cCľw~㴞;~p"\q3W&{ Y|GqmzRR[%Ka~`~ނnS̒_6K@XH@2Hg ld"5S.0/&Y>/W )_֠մ:s`Jղe`(0?d4q6%H)+h>rhUr00AJU^)_byN>%i|9{ yg3$ WvGAH!u eTRՍҽIeBk:5YG9_LJg?k%K,Yd2KcxyeW9kwF7h{qsuTT}60?P'0ʄf v)J-ji)Pun[k t0Tu6xzϽwu—r/Q(NJ8a]vR+Q0LI c8v.FYgB@[iqJp zn]0g"qΘ`O[0 s\2gX[נo}v@NG)اFI/MG Sȯۉ#@3ir}rWh9[}9vN\\^WH] `='ICj{Jm?@r尼l@KͦCeEv@3`o[{AH.gșɯg8P6C*3T4l[Vkm@uPc&hzHi!H vn7,|"JTrRwNnp?xm ncrRY/|b+{; Sv'-o I'jy=AKٲpyl('m)03L4?<㏄ IBgN5V[(9Q0}ޭm/}r;HȒ_ oGE߈~8/K/y?^g<*W|,8ǘߥiW>Hzs1yϼ)h$)Ώf9͙OA!C,Z.RP \`ܭuduV(⏜OY'픩fV o60m)E i\v؋2l Ĺ2˔M/ ~]BOM[(:P!m6]+}<,΁Gh=yf230LF@b+H@jAr85A6Z$A+u!&7fzPN8d1tNҭ.V/bV_ ] v]E`;'@0i%iWʀbK_ynQt~N}ڊ7OqsX Bw/YhA  "O-^Mrk,I_*ob8t#y,Ydɒk^e#I% 730q ?:!Vd[1=I9́AV.lS!T=Rm-6  $6 May^ Wr|'if#`u~ͬ *Wo} eNvօVIW6N|ԥ!-lu&}aH` ZSj@,ԧԂLZӍ֠kt3A&ɠ5i@ I.ZMjuЎ~a g0I)53<'"Emi|CGzMAֱQց-la`5ȏd6X'p0etQ``3(@(޴g=iw4'%gHn  AWrT5@H3ì7cn#v5xo/hi rl7@f3 <3ki ZevYi5ecW0&yvnGAA6pd )A3it`BLAJ^e[Ji{D_oA;_;ZDN#RK,lj?CBvX 65a~ 2 "ö2@Y*"4QfHsZfܛp̕ij{έmo-jbg$E,zQr _wC;D7؂cOWE; O HBghY^gz['f!ܢr0U4_a߇57\ψ9!%!̷";\M|VK3sоʅDi%4[Ö=HSΌ H:@\c`{@98o5bT0;ط 奦κ6|_>u0 <"QGYf,.Ǡ\QIOPO_jk#ȟ@fn V,4#t~@AV׺>SKϝL71L_A7r ^[ xs`7L i^v\B2;?ΉQy.{;Ҏ@A)D%RK*R H 8^Zz}]󊀙q$ !/ qğ_>NZ osW۠5ԞN[wS@R| -F4X(Z\ ' zP>x65fx#w}v;g}}qԲLU]>iͱ |c7W߾K: U7~;+Ox>]ʺ8Sϴ!8?6_u0W΂W'9(\s,Z'Ϙ2Szl\}?t8]&RI _꫼ {]_9si.ܚ01Lw46k[ >4aM 'Wv ypqRrin($CN CjbA( ,O^kS@mjhBJ¦\砳י A $ ' E@ ha:NWhG74ez~'SL0eߦ&Hf@ 8sd S޼4%A7$]^#co>Ѓ%=DDI H:ٌ!3gfܒ%e#'M4‘Y⒯'K,YdFETx^7Oo9uSwǕFi8!}LKʞ.vB 0IY Oêgo" Of@Ro^`6f0 mc6`=43̀avFIpܒ$8-0Mx;ގ L45 h@[ηa [ r\4LVfW{A~2Iv80 #SZn9#e`f"h;Dn92%2 |+} z]=-WYd3{s\ghf ,`7v 8M9"% u.=47M[|&J&Ιj"ɗ՗ ^#TS_&,wN*9jֱT=10Ō1hJe#L73xJD y`dAm*PIKZM*HVv xͼ7^ct&d in mQA Nec`lAg Le!@k: ]>Q&Dƃpd5M>x^;!wIq2: L_jIH(Jb qs;]~ZNhLV[Զd` 퓈Ӑeg !P`O򮂢Q9\]"{20E(g$x w5~̀7?CRr s{uNl);pӯ"#)pGO|{PI{ I1tPdϏo_se ͨ'ْ5G7zxOMbn|Oj ![d2p+Eˑa_~gp{Ϣ{BT>W0 ~ Ę@7 mMldcڀm:6p bo־ ݡ?S4#806MUuFWNF$.0cMI ̠ @< k}i收ʲ g%N6\0N ^ o"FIv6tp-Sh--քI]x=ICLᘝQu|LsiȮَ̑e{Hn{lbJ酧?[ڒdɒ%K@>+7 s̓6)vvl\a-rĤ|uI &StvCX\SEPkkf(ik@^HuBM Z^6{պe 2f&$mI42~p9KwÀLaa*Ag)8K u8@WWMҴbPkzQoL6M ՜`~%xlwL5nV:yWmU9',87 găܒfHHp&ct>=|k6`^3 jTԀȋ7p c&]jpv8km`V_j?Wh&O: <1M)^%m{٢@Y2m!@1Aر#h:ͪ)i`Cn7 & hh y5 4J@+>9v2L!^#e9fL6'h1:Slo78q-bڜ, N[SLV8F,7 Ь`Ǹp0ǜ-e_HW/ Sͨ7!dғ7 E#䌜@&|%r2OY+(!wo{Ƽ ݂kߜ|%r 7>6oBI;(;$×r߽taZxsY4NUYOeDs;wxY;?GSMLnpHAiE*S**~AP;~)A\ZH(87k f x6  oMoR`^;{ n <;)cT,P]!H?>` ~= l}ҟt!v ;=;{u $H.i3vO}Ee-H)$wUAkj Zf /e ޠV*Vڝ?tT=cmoR x=B&ES˚ސ_eL'}'zez:=ADDgf,Ydɒ%B| z 6iv$~"&QcG4u淙N~p88. m/t>45+'J*0qMJGko/ݣ`jg;hi(o$d.dHX 3K9:ֱtnU`g`ZJu|})}7Է4@HJ T.E,DC"ը F^i=@Kăk_;Vu˹Uו@7^Zde),&z z(C1悾U]:Z+dʀ,bL3Y% cVEA/i +W2 Ml;DLttͧ5-?&l)+e$ýmo`/s~9:'ƶ:o?()@w]z^[@N 4n73h{X;=l_1f ެ )%D:$7MwY` ݞg vnl 8KP LfLv^3Ok`sh> -!8Jw@HNA ݬ_RLGfan U/Ne_I]Yveӷ zm^Jඝ9*PKUw];WNd9Sc?bs[YɳϤo>Mlk=>Xuww+O!ð'_6ХW5w_|U}XaPn'97C)DTRkAA^/ lpV d?K^k9hcfֲv)ؼ6:0_:? d 4]Mp~q~rڂl942MS_X<0=3߁YSjM¬6S&Ƥ]Ov2]ur \v2+&uz1]൶ue^Wk{Ay;;:_UudVsEg_>{ݟ},fA-2W{C/:L zdɒ%KHO:Vfz{w iGQs:˘#1G8ST\t^Ao7wW_ ffci|}m_ib00AKtchm`~/ GR]_@izHs[J SmD9~?zC*4/K_s__+lJ@S@k=Ώ@0: z@_hHΑ L%S) ̣Ao>Y@&-EZQlh T }mվ,e;8Ye d9!7Z &_[0Od(HVAJO*hf43ukrKFmz``[da`*JAS8(Qݧz$T/f:Yq5SMBo y%G$8;t/Hk&JY yI6N]_;0Mej10&Iׂ3׬2g6hUHE8တ@,#9Ih0m:4ȥ;\aqC }@4I܋f)bʙ`?z^[" ^|MZ TK tnֶ`]o3x&յ~ &lD|z8/#E O|#} nެ|%}"p&n 1_a,(}'S0P?_,?A *J |kǡk';(SeIg/r WpZsޝQyo'MZSuҗܡKV5N~%c <{R5 -jwBm> ǶCFؚ)0-Wul؀]oG-ز6hn};A+hI:A'tPZh"5utSt؆mz0plOFge) 5 NwG@&C3qd`\1H^oKvЮЉ x[]Rmr|Yy }i IIW&B̬1 dghYʚ[43Ȗ)g7gWPrǿ-2a}'-'AO,YdhY{Re˒5k[E?j4Elk9S ٦3 Hڰ:df0uNo0L&܀Ɓ!0%OmejIj7*vVy|&A|W+hs1}rH-5v"%̗`M.lfA>2 |v.AigII9Sߩ /KHZ=cg;aN5/~Sg߁񊺧A\V3-0K(`ڿ1pWyS-@f> ;ڦFRKV&@pK-7;k.sn Fh" T_U-LT&Hzy.AF3ZƁ XcG/ :nٴ4/ڂnt H 2KY*2L@jRImlڏ@6e- <s ;bEւ'&I=׭ppFf8x?yz#AfBFp#& TT35A뀭aضXD{]FN0l>ܞi" '3Qzݩ[6 " 29 v؋YIYR(avh3}t BPfVqB%\r ~==gu?*KEx(1pO!i{鄦'K,Ydm6prn:IDATZ.<{bli<_ԥw#7<?߻# B< _!BZdԦ,2ԓ !$H0؛v= j| }Ar~}Ap@b-m [^?)}`صv Mfl"5C:h:͠ifj`KZ) 2_ƚ58r].&`؞` 0/]t9Ktؕv] E7V Ռp4^*/ zq [$mOOvV/exI^ܐ[rVI8w Ho e)7q:skd} 䵜d̗@=pHя=pwWȫ[sh / ~ft3t3eѶ׏)d8WٗWk Nw>?8ϝc'zV_vf8aTc' ^ԋI1`r䀹l(zMF#\rLIS gW6ц@o~6pݨ@'Q:ppA2JF&q@!Sh*6ҾAJQS$dL צN 9 d5LЇEwe>{c!&I%aFl{Պܛ<wy_1yU -~ۇ.[Y~ᘛP}Y]y6-,TeSAoѝ .e"<~j"ݡɂAི>uƃst0_ּ2s˹i@ 9f|eƁ}g}c cN<(Iz>9-/@ҋejΘ `y;ݣKoGg%t;A9ѻZ8;rTY!;}^rc:zrҀO|6Nz PZ(IY-~ g6CmSǴ6 V Ycu jrK>OWe]==3y"tH'K,Yduh0ҤH6lġlB]ƾYkAWk ,l u{>S\0@3%x@)ˇ_U烗{]-ij> ^f51izi^uAI9)Bk .r+>Y^pz{|:>).٤:IQ֦ {2 rtd;}j 6@pSOO? 6D #@`f>88FZ4Jٌ(@"g} !m(+eg 汓@3kֵ H!Z 3M!3y$*l Hk6HG^i6Me |#恽7,&lk[Vn h }  $IprOl ?( XJcC`cvhG}g\y$[]xB)*zE$O-` { Hn?:uoIq^qnzL`:tn^jS 1i)"rNcSXli/ l-,ٲ}V31Tu9I" um:{=qL?aiC;W=k vh}7ܪp:]wcGG:<)O[Cw~Ѷƙ?)gGCQg )Q[_|X7]~_ 8-MU&pd2AZ134 H&)!_Mt; tֆ|2^l&' }m 418>+\qw;t8;&TJI 9fz$TN* ^@a2&`VT4:0T4OH+"pJYv<J075R.xU ~?{̤݃A7'iL)pMAL[= d5J'rrL[<;5k/+AO,YdӲ/ RȠRaoތo'tmС1SG nB3pN8< kBof `ڛ*dO,-,-c:`E@==N2Lp?ho~3ż0[VoZK 0CeX.eH(8al{͹r^6}-X ^ y*yAgi&٫mMPCf#N>ҥ4XSEM ր:j:\=҂w_"вZ_+ynM&yygb@'HNSH2XZ9Ab] }cSU %)%@~6M7Ƃ~D(-@x%gȴi`:6(ɧy31@B*쇶->1f%@#%fԠ9qt; XR,m a#r:gۋ@3i! Y猳·𤰗hv `!R'ր/Η%Sk׶/h>:8Y$di$AʠibH#V30KIMZR&[ Tr8!8¾hp8`նHOJy2ެr-JiDZAԙ~N :/]קo&%{-vZDDǶl?{V8ɝG/|cޚh'l$rcE?>R}S$^^AtQ4)fq##!v?I58ط~-x˽^Emmh)*dgꄁi_@YʠA/jZ,NliSaK&-F म%$#0h9my_[ `KF%SF^{=s{ 5ēU~Y;H 0Upbg2!zSMp׺ie3s`rcrCҮ)!v|܊=ϒk|lpZٻvٖ~nu8C35FOG>ɋ%K,Yi~W[,a';R5C^K/|[;^Tn;bvu Jyk Cs?nc`%H< w*[jyKNl%bmr[U#lmOvS@`R_tT~3ˀ;l6yI "iD@JJ) N?@-NpӺܔ %InѓLfj2oo28swK: MЫ`.<Eh(HmoZ)LЮTOZ6`KXI2Ifj j ;Nor;- Ԣu A[Sجt=peLhHw9AݳQpc'%PA jMֳokʂybΛ`gt4hZ*;ތ3p:2`&(լm1xK`,tk3L0'T~`8:d5%Mst*|atB& "@G 67{=d΁6Ybe@2T<Ns.Ex}l/(LLҐ@`N>Px>N愳T J^k[-} ?;w{Z:u\}R \? m(R3wEXgj~r٥Rrop}=`nҿSvlW%~[ Z;X%of_o>5Sk{N<{r,'t4͜u~1qi+$NE']]X$^^g/hwp:< 2ut+S~a_^tQ{Oe6óO)?쟎<'ɒ%K,--o>|UIKIQϞ87azד4upoWNb/AE!|yv;;oڛ |NA3XFJQ@ɿޥ'-@kI:mڛ!./rBrПzzY'0n;Ttr9 >t7\rLu(y pkCxvm'?=71Mm02$?w&HWmMփy:4+ЃDt.@j)\G\g䐎#IADv1(3vl-&,0o@aGm#[V-`iF/$9*߂mf;L;[d'9IࠜƹAJ4jW2./#?pTOxѼ;t#+dsւ? "?q;i@!f0H@k H/tZ}b ;嘜uTsDim o7 L6']Rr}UpK `hn[Z&*v ]| y l^gYL[ى\`2M&/H*9$!LxӰ, 2<7yC_l gPd4^zíq :n3nz᫿Ue9b^9%wn vC?D.fK89 T7VC ap2NrL.aiTY,4&dqs<<//9Dp&9ÝsN@AJd9niEu W =zhcAn]z̞[6{;l٧AK) 9-asw`:fjR4sy :a: @C4LSS)`&_|*7Mv^,bp<Kluh[!0LEK; {^րW=6os;@B'a`60I80f=8-}:߀Y#e'8M.g @+ztTRpMK$xJKQtc@ C%Ӽblf~' 9`΃+4 fhYꄴ o67q{EŇz;p v7׻)_!?ƎKT#nگw< wʄy2NR | 2`ƙ8g{g8b>"wn}Wn48?RC]{Y^|!ANߜrH:RDJ7݁krE.u,R hX/`:9[3Ї/@4]4I8` X ,7] *~`),`$&gJ䐼R3 :s]lUpOz`{+iml-< ^^+揇nqm+zo\Rѫ6qj?H:|WKO^=Ydɒ%A~m"P~M|IY1welJ\͸ 12TtfƭS:f X=b-m ygS4om QP g`i)߃~ u=kfQ1Yq^og dR Y[ xUAsʯf"`j_?dgwFvtApH y-V<ܒf9q'`[t,AShܕ`JJSd*VhBd䒜|TYNuY d7׀ʔa#x}c߂o%tN}g+q8EanѺZ - rEx`5+YCuX)fQ3(Co=@qDioIG| uөԇ-`I/QYY+;z\Dz1)LSK]2Q !)%RMwYj'0נe8C09 l1H}fs\374)y+l.pZ9; l3}Qm:LqSĔk:D@#2^F!vn֝:y_hM{ /5$; N!q 6«fS)`~4U7I_D˂d G9CxI%x0pKc!x`P-D/4 ᐿLFOgYd( ,na=~V}6<.}쳨kB+,I;€ppK_Ec|:д_Pd-wI`~DI6c!hAh}:> L+Ā.a@Rte;5.+ަpLE=ͫp[W`~{QL7Ќ%ZX f-H&cƂnG`?=4?Jv7 YaRmcﯿE[Ϲ w'ݝ$8Npw@n`!܂kpw[ Ku}ξ9{ FzVsTCkƀo}`KrW.{׆b(%s+qMGs(|q+nre Hc-j5.cǨs J脓&rv/ z8qĉ@{fVj[*A;}`.|S;]O}ZX#!- [HW>J2pufjooohK{-za = ?XSXb5L@Jj j[kjp]#WL]]rSt 7h @74^{/AՍ\Y@,eT80Q2fn=n8⃋v.&&6 A&2Z_S|]fh,=hmmd,tѠ 5˞A~+23)nV,@Ԫ7EY=x Kx]УzL[idڃ}e(If)&%To$+C#g]ۺtIv> +]H_Wyh,7h/p8`*b!wπLѲ&md:2Bf[[txuNY$3$ f L.M6.+vCCIJ 9 R4R_hx>s/v}߹RxkK6yg eL; ZAKk!srBN@)D>)J ^x@qSth@$wE@  e2g ('5ěF~ - Bf2"0_Ę+1etE}p5Ӈ]_B _Au Wҫ ^_7<pNdqx{@ki-g_ qG0 \>'@<0zGszLjZV Tuz`JBc/"=Jݨ+Us]0L7yc^=k{R N= 0s^ 46愹iނov=Rմ:@ дӴypxA4_hXC.xxk`fYbmj`bLZ܆ӱbұA?.+x\[.ݾӾt}A3D(E&|OOЃ@!o 1)׀ﴆMJ2W&b[+rtҭ6 PL_z__^t$?4i& _?%9$ hvͦ_@@-*8u%(%1i;П L/d. ^adwb ) Y:Ko`&քj ArKv)vz Y$$^KykZmm!(4}p{0cL7ӏWCn׋cuq~+/ nIf7 k > >]>+u 7otؿI$!ɃV}68.;cVp9R,Md xg3z]Q_iI_&)P̠4=>΃~t?dfGF <噤-sHI]xP7'vQ)T2JVo}_}kM;aПςM ?.:|8^6rD tuIԞf] ?}MFlpϮ*.5@*Ht ˁ` :$XGyI 36Hiil&-(L[~rA+0M3|#lYlubxSl+z+Yla 0Ҁ<H 2SV[C؉ d$[,73`LG0kQVӞ7CM~]6x7g֣AO!f(>޻Z?ACN\FW |'|/}YWW >>.狙ɏhd?[vJbKڃi%wXQ'@'N8qN5q=,vAPhȬ2iO~G| _e~M&#8Wr0HoJt,TǷ4&s8 n-@@o]-zDO6) %d7w`g`elEr$$)& .vT|\;<6H:r$TҊց{ԼR~j@˂ͺ#@E}z 2k6 ݭGgBEygs%]*z+:z%s](8et/5־>7 t1 `f-f6U %Omzt] {ť 3ߘ\ 3-'!f@,6%@M:#1vyhhtu1WT%S,߂;t|Yl.dlq0˕pζm@Ҟ1@yIWptnKT>%f|uA͟2C6zIW{5PY惉2,7gmN3j9ptN-e>ЉvxGހ9m.U%ͤ=H)c}5 tznvs+AN>H ]:PCt#t ^H{^Z]jم`6Мyߢvyrk&wQ81xop!_UW)ͻR8{XgIlp=g<6ާ Ď |@m=Lg:w4mM0IMS~ Am5/$@ƛ4BUn//-' RTIHa`2E4} -f{;UݦxO^Rr FqD&%h#CNc|Slc )c$n&i) ߒ7/OE$*^6/45SJzk\ 7mp)u uc\ tց`N9kQ^6KE_pC믠%-\7Ӯ zܗrhpЧo.E7 zk}]3.@h3'hwUۂtͦ4#xB^n\R2h۴@aKaY\:d!~C|n$9@4 ;敹&IcoHa),AgTWhm5+AvWodX`"4U}\4S=9jNܒ'rd`FB3$6^SNL\v.fZi[N. ݴ C{1aHUT)-E0+zٝʂi 6vvJUJԥ* vcZi'> %| 4%@ _ X ˘^[u3~oGAW:u+ s= ½@[H_`Rpڂfmj :\G yK3,32Of~$3 D is2lw(.AF9Q~a𖇄벻\{t;@o^Sz^Ynk nur-\[i c*ؑYSvqp.ڥ_M_ 7Kl/7 L))M [@ysaϓKz'lx^vV' $BSN9~4_kr1IF·'ˇDDϯ!6ʫ@j6MJ\b&0Mg9o{,iMi n{{C !9Nb_KH 쓳`:I`97kuwy 欙lf!@R-s:_%_o-hm@x o`"x0&Nޛ~,Qxe\?jx]02, kKI.TӯrK/aŽ# N8qA ^WI!BRQ]DlĈ#"EVz{^kmC}=@It pе?Ԡ)#rY'=en>ԭ6t>' 3RƂ]mf@қ"dim@lXt]禀44tЈ2EV0e  PNPx!4P>Lwt >ro[}jkt `rKj)-|0LR zN&2zX#t/IF; '%([϶5)iJ9D^D엓rDЖM N O LGi 'A -is`6]fH:"9nN2\#ᖁ6]@hSm -uAK뗮Hei.@FhZ`kjy.$5."Lޠ5$inyAHuIZT˓ē`bƚV <IcH6+:8*/D%*nE<\sgbp; 5S6 K%˗pٿ͖w*z;`áqo+g͛Vn+OT{X폂&>.0X|Κ3Ǐ= GDo7 I[TAt M5kr[IF6ZzKc`tOR0L-^~EDJ$`{v0q@]$9h^iJ"-Љ\dϫ}#CZy/W% h@kji` L00S _yf n`o^P}G4L hi& }  2PI(HSHJһ@kFH}Vק ]Mvws]d}^C؍1gmT$hppH(YLS>Je/fL)?43gӾ#=qĉH j68Ҥ*EƧ'󵴷yo#}~y<=zFPÁűcw~堑-dU+n0ρBBcf\e _-R ={~eKNy/?CS ydpyF:\#⎀gkڡ`i9\sꚂlK˜8H-pxE@_\u wUh i sBNWRbmuGen[#P$ϞhG#ЂZE3N7fKdR1?p]@O'=Vww.K'RQI  bwn 3߃}hʕ렃 {]v|P{rD(Arp5{rJ.>Ч@#rQ`;r| Sb ^voCӮxA~_dzB6u4Qht9+^ d [?فpp] $ǧiܿw䮹bwLf,%d5IKe mv#.΀n`o0AkjemY_" id:&t$+c灜Sr d0ǁ |@shZMrPS0/ScAk *߂D`ʚ2t mƸ 6m߹@FIn0)AA=;o/bG׋n[ { ~y~eH {^/o?XAt蟬_j u) MOgۙ2[{(o$"A6+{H9& Wѡo!&3< ߬4E/f1UcL*4;LM 5-Y݌|]ya'}&k8 AOq-2J:*dX-/s~,oG8qĉru~xz.Sd,>;Ǽ1> Y8wtS5-CС {A[t[`NЉZn)s.}HĠ)d h/@3k2"?Mk}@ RIe>jY:?| ImuKfyFKǀ9bvc"u;ַc@KiB}Or/%.' 02x3Ǝ|ll=rMց=vnd& hMmvt>pGdW}FM ]~堗]F]RV*IYt.+b^/%lV[ԗ /9.!θtvivgVw-@r n7xk?H) EA2. sޜ]V]X :#A1BSu -xˁ\20H2h-lY_PB V\@7 u8' ;g \^>\Jł"~ >`z.k myUTnpwk@ P^MW\FM/=Ү@@@+!?* G|П]`I &Ie+d|΀){؞I&$5hcq-zg7@2B)攽hC\$164ї՗Lc2xbn |(#Ƕ!Zh~Z CW}}T컪Ubg#_J.vkLpE/os*B5 Ie) vmb؇K`[ۑVAJ{)Pn=mA+F[ﶁv΁<BuA0dPIf0 TZ/ -59H lŶ;͔5dbr2 &&pY"@N_jV_^kzx.UYp\&{u{ut  |0CAv=4H%V4v@`5)U: DHy(dHJR:hGn{+peqH^9 ņ//HFbCљSw+y<=qw7&ʔh|¿[|hې;jqĉVR)b\(t%Ǡo+‹PiSO>t!92+9V} ,s/6 qA}Lr%py\HNV2uw]e`p}.2\F3i9ZZkXIG5DӂNn"h3W5-u_Ow$1Ask-Ժ}%x 3H:Mm5![y.@\wýrAQVxA3O]d~A@7wO u-= \,ׁ@*1ťSv%)dˀIfҙ `&/HOZ p]WM{P{'+ ZRZIRвZNI-`K 3n6+@I 6 Wqovs=_mh[V`*j$#p` I$Agek)pLv3FFX SS2L-f^[/)hFSuL S%h rFs#`As!ڋ1-h}@Jsi Jf])<EȥL#p/'H?i&5.hF*SsD\ <,@^Ki`3[t0B3L$<jh#zSք`ʙ~y)o%xY?Fx#y?#(x^ ="s6A93}Il|;^x7si%]99ٌamw,_W5)̉r;)3|Kޕb_${9.xW=3 dD/flv_{& 0l[. 嬄/-e*H"I/ARRCJO Wuw=B]biwy\j.@=I0ͤ23szxq> s=$$&-,(m߁l |m[<0f|#MAkI#-H2)iyEo$/ ե٨ f9k>N: Zl < $ `42B&?Wx[? t[y ioLd[7AkjMyc^'R!Q6–:cb^oS/hw+OClHWp;ĉ'NLT)gؿsoͥK_mP9粑}??_XcY#vsO}d ~ ^h !@6f-*z9E9ԗs4}kpItKK ivbZ@>zzx1``; ^V/W!ؕ&.@GFyn{n#t!#@[д^ HR(I|yA{恹lYa晭 ;e<wAGn$^Yfʁfђdl?@ S^K;:Z`*Y/kA׺ !LZaeL].[Q+ל֢ yW \| XG+iށS h+Mfܐ`bLw2 h~h ""tfŠ#C@CՋ)f m=@iUwO'd6$3oYׂtȠʴ פ\9+؜K0E(&eA(4t7p ZHK҂Ie۹u#p^ `~G ň-n6B `65Lr0{Vsx}^k&yM&ٗv2Hig^eJJKnp]QWHOb Ls^2- 0 Q{Y: v.k}"05@RY 0%@Ni*/y0: d52l B"%  vn̖'r%y@9`ziHOZ0L' f]l`k[8 nsAh6OټIz_RJTsB>ǔë a`M ܡ,#:^e~uPr<ե6{/7Gm". djH*7>)#0Ly2P|8"YARK"FS!}_J|n8i3b1w jׅ5M4 ?K_hBG N/?r';oG!qqĉ翥e{U'Cvm7k~#fjԆD &]61bzb AGaªo/ mw` +{A0^V&Z \ o}bw׻ vm&[ Wޕ2ԣI(j-^wH4*&x34G0 #i#|JHQ) Kz 4"m>[;Bq2^7;MW־ Қn7LD4o hwɁ}r^)`.a%D(/H*P4Rg):Fbʚt 2$$B`&b3!%a3+vi4ԗʜ*Q`JS \<Re.%t>w9C6ӧ WdV{n 5i @irYh~wлXkurR.F9 dj:y ҂^Տz䲜-v r0i5\5WM~kW$d7M+M%8q d3@=ky9o@j@aN.`{GzݝuKՌbLlv׾o]mzI/g4\߀ч t35,|rRt Gef ,ʛ r].S#%+<@$diWm\h0I lϏ"SB EӮ+xYC *^gs\/?_ogF]=tI5ſ-w4Q롭g/U|*s2M8oݮ_fUYrl8~'Ae@8p 2L_j'$hpTg) Z.G!MѺnfcp gԳ3@).!p+P%db|IPCu)X"ǀ!.V1TR  s➂_hjp]W 4~ eO Y<7t_֋&)cn-kpo6mr /Āփz oGyG Hm[I _<3X7s H+]cށ.oMfl@G~y!pAlwGwM2MqYg:mveb~QEW9sQ-@'N8-TZa\v;+vO|5lQXOG}Ӫ>nc?$| F2A-<$Wr#kd;y)ົ#! @Uk p'q= zg\>3 {=gM')%=hAIp?\7KҼnZ&&h-mVLVx'/ yM!3߃Z ݙ]HLRStC f'vRiX&R5'p KB<<4N@>Ғѓs,Kt.g̢AJ /Az8Z&o3MB" anܓ  ex+lo HJ 67?@!}xAJ!}>6/(p%+e @j\΢h/zdΛˠ)45A*-h!ͭŀ:9hG 2byK<]wue*|4aF6K_/.+fiT}=zPwdWArS>&d'α20]Lo 8=z]/'KRHu6/@{.Kh2;yk28 ;궻55= D.-mХ`1x l^Qumudt4&@Lo$zC6L21+0~&+c ;Gнz\?$t.堻u^S5eFhyn:igzw "LBsL!TRX[5duIvcAyA`o馐Y TioP 6]00L6Shbď) '(=R^M,MR6Ou4݌^"7}ԣ~>J?oG8qĉ_\Ǡ:p6_(AşGO|kjҏ?͉F><1}ͦ U-MW@b ^"u+ҊZ%d| i^oPl ,M ,5@h3+qD 〫xdƘ`pLVQ|3i:B'^π,b, WFMGn+ :)PJRte*^==!5v`3I;d55e.;hk_I@BZWk&_ {v;z6:92$=l6eI.MZ7&-sn[ր~vt&y$/Ηԗ$ g\>"D),%Mqhq@I2IRԔZ>;usX}e f HK2$ G/'Ҙf^pH¦9.1jX-k@C \̾Ԡ կYd$1M03oAVYZZ))Łx%hz2/c@[}!#4I֧r$;gЇzZρT4_ nbMw5ym@nm9UtM;h40LeIN҃̕2CsUф`Q2 \zޥ-%\A` u H_(c@$:Igp0g)sLM X p;.In;WY ´23 82HmW' AقFhx{]]G\vEU_XkaHN-R0`?Jng xmZ|q9G6IF^_|3_l Y*Ӑ4wWؗBIȠ}^Pt>gH|M{fq&) 46sAS,5wAi1=@ih'Ahmn}4ZLhqCrXy0GeLy)79A0B90wMf=k O,ÁچIPo[ Xgx .3uПdncL{d-wCz0Rxdְ  !0{JfjxM-.^!%0- ֡ Ows}EbnpRoS 'Τ2CpDgǁ^Z}k|OשdFda'+C6eNЦA='^o=N8qUyRY5ך^m-fdi5'C=4VЌ߃}<"4[h#?$|)qSwE ܟ յ @듙6ຸ*'xʸܮO{<-5?T&DҼ`gٙf6i2,_MwUgmALj8)3/Şt EB vk@ΘGZJgڀ3e,_+A jzGm ,~m[ Agi)0{&If45)AEdҙ, (@ ve'dF\Њr6o :I @mu2@^g!Oֳ@JI,fWQ3Csϼ_7 NvDI<@֧6y,Њ6/[nrlz^t.Nj  cDHFi=]HNE.yHpF'e<wYkj08(@} ^=w3x9A^C )HQ@zl#lE09js L;;Ԧ2AvY=nvqx%:xE@C5FϗtpG e [M0F.tb0N2dà_j>-RTWFi43z $FHf0v{H!d?9 ԑZlmSTjofK-t%|4JmszUy7]tV\y!M@1XB`U< '; nGajW^DV+tZkk&PM{nVӚZL .粁{4@@@O03L-3@M>X,) '=4HB|5RLAxB.K>4h1b@B 7oyZor]nmR{dz md ZW \ 5*7T7M"LQr<ne9a.)%E4hW݁fF[``vf7Fa`uv ȷT*&d%q @$`f)^?7 -AK6^k-6P|DpGAw HAj2Xlжw[| V`󕱝AΛCrO;^/+ f2dRArfē½PR^Vq:N]+C$#;^s @4x^0E .?kL sC# ^J/K zDa}L3'URT)c*J}puWV U9-GD7nw@RPS|c:]&ؿ1W+eJәf͘",L*ɁpQrC`ZF%o7 rB_MW&4c3s!x GzX$//$&ifew=ug|=&, W@Ҋ1AcN&$+ٺ_7+v qn0xn*H7)%]Ay Ifۃ]s]q$/47&=hW} G7$\֛mNsSF/fC p_O:ioR2{.hZriFԒBr+劀;>O Y\|m+LNm̴lY51`r'yҏ2LDT2сn];H_/3?<i+d  bvħ"˳^"OdAc aO_L|}c`fwߩ{_9/ݳ?n\.]  QVD2D#0QT':&j%]&Io2rzцP;k=J @VЍ@]h3WW6>&: )IH|+2Cf9֭9!枼jNWK5o0Q+H@Fۧgt?r֬ZƠ<3/}@*Jt"tE4 Sů^y8yo?ef˘1k6"mUE UsUpՓwB@N$g A#14o*h}p嵙^#@I P4 hfFCE&7L>`*CdM) ^oKҀ6-HkI QHjp u'APg;m72̗\W%HIf=8yr\+;wI˦[]nUi?}A'N8[+ /W0hRpkt'8S͏? ]}wn^sOY>5m@ b=ӗ^{U *6wic0eRޔr`C BYr[O÷7 ^_/0 IijI'|-,~tRє '8*e0>؆m 䤴% >^:Wo O8Eߜe#M4Fd 2 lJo @@iH;`c0Chh ^Ë+}ҕ c߸2, 7 21 U UAK k;ZM.5-@cԥ5dKݢgx}ai'n- ^_%;olӼ9z wýB )k,_~9z9g=,|7=< w>)5h8a}%%Nɠ(} ,2nT(({ev0d Yf%nva &y`^j:Mz]5 4VSh*mCylnwIMB0CG\kz+x$#9zd @^ =oMM D$| :]WvԦYZ`!ܒr*xfK<@1p`t&;H3RҌ@|| {`~v 6KD&{ cXЦQYJnʙ m44޺ Y$CEzYmvh&4L3i=pǜSwFzG!R{@[&*Ԗ`s"Ɓ?K"e|?t_M~*g=s|+Y"g'yw~ιs=N8qoُMǴi*9/M.闠gGE~\tLu#|8i=T/7`cn f`{>@~ 9$FpWbqmrPs2]i#x;㙱r[M1IYlJ\`xp<y U1hsZWK಻ e' Z@H 9 L @>JQL%lEsTdyA[#ZP(å?O?7("u hnE72\JKСaE)Ft(idvx3toؤ߀XK Y앚@$7ޗЗx+nI '/أ= qA՜DĊ8%g$pu{O27`n?-"].24Ncq9~ـ|Ky yIv]iW {nduSG}0;zx#@MJ{x[&&d5}߮pw!%Cp @4w  ݡ9c>s~׮94ha-+֍QJJJM"f=+%2㜂>:8% lͲ`'aCz2 K$lL6v4$d2y^ d ݡ4p'а 7 $KK\<b}yrvTQЁ`G+d#hSmuv= XY+k.2N=څ~6ML{%#?b0/ O+P;񃑙ves{#z:/6ekhݠzUf}qwڕr( -1`ۻo_@Fߟ' HTQly3UNn興neըmwdoEV'Vk HI=!t:be56y>2W ct ZAi|l$Ie}ױ& Xkau&LM.w -6I+ $,޿1$Ƿ Her v[a! \?߃d2QQ` f\kay 1Z9|,H+@R}"$6@!>M[55)7 -)2L@}"A>"R:vYڢ@f,>>TuP_.Pd}ܶ/ԕrX| t'+ANKz$x dk,)s6&[4vQ̇,Tl4 I~zs(Kя/nSGژգW<d{{ZC >uVw;;~x;ѽUG^n>0z˺ =_!bDgq!XdHK [D 6FIDAT0섿hǁn@4Xu㠿f< iV,䛄og[i /H| ֐J6[~ t~# rC^O)^ {6ϰYહ_\5 kX,+[+Las$#6:Jj)XTRv `7>?SYcOKEL֍=Y> a=H}cS.@! Qho]hzG}Vr[r te ե|ZQKiM + ~^~6Hc-+w.C=HGK%ë!|->` fA:J'$!7R _'rLX+nUP"` oY??\-j.t o|U{ 9-?+m,11_'9Vs762)(% 0y2)ooF֕VI@&~&WJr-e!?Vec-3q`]޶/|ꛀ }-MO}[,+s љ1tXO1k(M *%Z2d,m|T `-p3]6W4ė kmI g ӌuH.עĭ A98å G~Wulir[_SrQGKާ⾊{?Ϻ$21%rX-2Zeߖ=Ы2fo됲D?'̗E ~Zg.Aؿc#!CqûomV2^o] X?fˆCMѤ@o݉=Iۻmfn4%8޺\V9x߀K&KrN Q/p e]N X$ 8C0ERx"N$+vdG6QxvI(@.J*y ~O% PC~{^3nI5ypP'/ϥ~og2 |?.% Z`E0k4™@{Y- t$KEu!A7k RDk~C &Su9X{k RJi-p4@j -v (GE WYt^fŤ&ˡw`V6l;XjVf{>DVT;[.bċ21d-3T-7]mEMƮzf]_WA{V5WUm!<>tYp-־vB,xe-:sۿr#lT nx'̕i,Y ZU/o[f]Dv%bCBji[a4(ZNsi uZ%{|s>k'@:]i < e@Cqd>9b,Kd*m%X $)hGg8 "?}pK[z9Ly`ݬe0FhD> 89( 2Q|"zPHLKҺnXh2ITZN+YfК~<4 >Y$o`'8`*l6PB4BDIP~2@'H/3Ft.ZA*VdliApÊl@En@&K2ARP4S'Sq캽7! 7/4!tP|Ϡj #= ( BD([GJSZĊbLA.e`'m:6 Qy!`R]m5{3 ?Uf5;%@6 XlnV 7~oKfefY7+ vBd"8,`*À4m,Ks k,H2e{TY`XzWi|A'w]|{d˖U'^\ۚN~kTǪ[%ِ{}{-)cphA7/}1cuyϟ>QɯzDOns'N8!t/"D\(^$9n~D l-gH+/5N lO9qAACqÝ+E|oj`mͨ4;e׀w-H~/kˇ䠖uI@Y@q\΂/}~wu5JgԚHӃbc23DWbN6X 0c@7 n|a :s$!nM1hO$%C\]%sg, eL^m@ȷ XCv(ipeHZI"ف 46%6 (B!)!!|w(;_JR[+[%CMe , |i:-pg'  Q*q$$i@+hBI/a?Qp]~W H-r]?:"R ldCAKzy|ǯ6еP<G~E\  S~d&_}.}OLjz5Fpo7?- hZzX":J~[VVK5 RD rY}f|^+HW }%C% EC~ ξZ Xz+ bI 5 ~yUผ l/eWEpFR=_ |G`sED> wNj\y6zq&'˙ 7%ؘQo[.cDW=x+mW7/3R?fڛoO-G197-޵ ӁW)_^i yUƗ盷_]}6ץ_}]풘>`iH$ܬPU"F<wαI}],S!}zG~G ~,WXkF2`8E$|L'~ OӃ{#-hkRFJʗ$ > "HR Nt*@[i}I Tͪ% rr,ePdkEMkRNtj-P%)%$?oHݦGTV'9)w@9D *2L7>sh5_o Nᙱ wƟzdա1F,}{O}N?? md}Goο>lWej7UVD5 o~ARG~`t'uq-;p^M\ 'vlf@JkԊZ"%Ma  uE};͍X1t!`Lk L I$n | :AܳPBM.FkgL`M>}I]!e 2@rKI-9V?=?}rj1cY4BT뷮(e.eR٢+d/$Y"ҶX*VmlPBS÷Az/l͵Yr7 4ZC?d0L+yN p))')AVpaW w91úO(B=%9/':骀k(`I4m}u2|BIKryC4V7ȷG#  8 [_n;;蒃e`( Xl]!U3ptNU[Ft`%|"D|W %MV}ǵ0 k~@RJvp%ҾoBo7T! :6XfMv[Z$D0Mt Ln$eZ}jk}m`_48+Y5q::d!\J.Ӹ_݃s dK\(<'\]Ʉcckvz\nd/_~Iւ}l[|DrQ΁zՃM#?CO`}m1wAV iI跈!v'?ւ1%w0"7"ߌp[rNjV Rd eX)VlքZ ({ X_9MFh#tO$`M,?i+`yEQת [_aLJWYNKepW'HU = Ak)A^gP&_e#y6l}נõ:gS1x@jJ hé 䌬F{F6 d_7倪|@|г ~!@J)>O߀Di2I !x< /R Y!@;X 4`?XyJ,B`9H X4`oxWݶv .[UALB"k1Xnk+*Ms'C@C֍V A HI%X,~a'{[AK,;i(0Y3\`ˁ_H]:mF;y"̡s/A9pC 쑥GAJ rT) ZVa 2[Q:JCT8W$} Fc4;k ,a/HGzŎpuXլ::4n;pFc;e{Xy+d@Ynopm?0,c;X#[NE a2ݲ eM7`)#K~a ͲO elu֔ C{jo-h}A?XZ]}w$PЊRAJB0R_ ,նPd߀l .X (I h<-ↂ?A/h7>M@_._V C[o<(!h &G ZUqAJ .by<@cS;m7 { s'5 ҝt_Sr gYXfSO6d2uzLcX!+oz2ڃ%0oAoXZL/i~ AP!Tr@T I.]> $`|ck~JF$;HA2]| %YJ8 Uɷ Z~V)PTPeP}@DЫ8?d hտ@uX:ЅPWv»1ߕ׳}{$Ll/S{7/~aA??M_Woq{6a;HY'U% ΋fKUu^-zxxee \V#kCTx? Q3^F* }쉥/76`^_64&T`;msOebeD7 wq)*y0M9/7@.^ς8 T:`%9::E,2}m!6i̠hB͠@ Ju) d"+}4d8d HHnHl [gY%d.Ao}K]v@0էBV=+jA} QoѾ}B% |]Abd`34E qu0d vk` 'e--_@SH3cv֎eZ,Ų?'~52v pܿ.)wB0%ͷ|MiO{pMKzIֆh@H?h9Ӄ ME6KZ҃^zgE2N`%ko5ғzܐ $y$r9MiaUgXb%rɁ%UU9%%eYKla\md- |.5tc}K`D|J$,^ wʃ旜Z6΄s]JO;苚2,0$6 ]$Y'e=> od<P |*-$ӍV * h ".ut.~ U6)*i'`,H:ʆwO{UgUw} 1IO^?9ճO?ثˬ/Ǽ7ip0`Dg{0S ꫨxQ _*#6ǃ9+|y.@F>Cб2Oǂ=ﲒe࿷;vNųc^? & I$ (Kyʃԕ: 䡼' E%Ÿ ˃og98)S[AhGZD$H\@G $+z\5WUsADKFjb@V3M6]7XzKA6[ BBB%tI]pE]-,", A5@K:IXK U|LQ-rd1Sd >ƚ[kpIwIAWa-@$Q#$\Rl !`Y-e7~.=.$"3"oD@- `7?ŵ;k,ZW=h>(@6SZ/MAIXV _9QrJzE~qa|r AP,?o!XrEUMv:X ,!h\Eg[f!k# Kjdk-1P|` ' Ҍn iI<,}I^s Hk vCS hk[ d$.N2D6'qJDeqĝQ).wGvĝ$τ!TQ]6)DLh C#Cf35v#>m,J<4fϧN<_m|L@29 CEhp3uho/m[m=PZx4~y,akB `],]ڷb`Qt@Aͷ`s>e @IO ;RedJdb A =a'@H ֛Y4&|_*9bp1c ƶ˶I)D `# x2Q7p5G) ]٧k_`l}y&a)|- R6&֚RV[.k#0,w8 vZ*:J `-ڒ XCZq b4؟,!{<f,a D&Ҵnp(ke{ $ X ,xJm/]D3t E$ #A3n] AP??-xǁ.vs5i-eh -%,.$bWu}yx]u5So7l C˝ e)' \`9h9@z- YJ6ܷ: ^-lHj]!AJFP!Xu[5W?4y@+yH;rRL>E1[q@ xS(BacHX"ݸ2]<03o5nrHOV2KRLJ;6C`m ni_IГ_]v~A7 , aI .K$X9t@A,\6uu?'@6Z}f7fADzE.!wA"-c/m eHvi#@]=?/ŵ$d$಻4C z Vj$b]". ?uw5 4p4ԒeZWOƧ`Pܪܗ H!@|#ng f]U\`=;mq!8Kʀ}̑`Ed )>\),{a>`_ K d/(9@.J)2D균;ThZRnCDJw]r_,1h#WYyB<> ΁M+vZ{R/dԔ* WT}ץ&ª(a4G$^1}k $Ij})x) ;怤X] A~tz{Kf$Xw LlMi6ܖle`1ʂ}k%iUjW A /e X/KH2wi]0e`e~EUy-sgVkA/?B@6~We Fr X%F2Zf?y 7rCXJ%C)v7].+N dnHRB>ী~.tXULY\932 9n thz-/=v6x-e͢9>Tm` {@t 2ZoJpwfl 9:L[נ/B,%ptƪZk@heh2Gk+`ᗀ'4Ms&l߂5RY>sy,Advb,Ww9T@'RH#+-j2@u;FtУVl@>BQ${d'}x"f Klp3\PP"nǣ#7hG^/W{?L2'΁M{7n %hyѹ^>\뺯& jN ǨgQn3F3 y~ $7E@#˦EX9pS$(A AՃo]g d4Sy9 iVVd @rRAlP -3VK6teЃ/ RBRȧoʈ; jRU W\ke}sp 7KOAJe΋ 68A A lb[@} rrot鿶9?(|'KrH.dh2Ab^;?<2_ Vؗw>M)4=6vBjP vNgA຺]7p\-W"E>| n[v\*t=λzx]e| ҂<`GAsm-I(H*DB(K(sD }O tl4AH4 O<Vt%\j  Sh 攬CMYD`Ucʃ d,Aȷ t_s{ M6n["+M@~.`ALI kw&.dF湑:"JF䋬E{`i}A:Hlmr($),7w\&z dЅJChPK rD63_o`ŏJ6( |.>|lZ9GjJ&4**)1PF]RYKj !qH"`!Kay솅-/I :Y!0d$h%? nS y%VJ- F# &KZl}F{' vkayYcWbv|"<!Ѡ4g!H4 <*8sA7T߁b8{Yx#Uee >e+<_q d,r@=I7vy$SAKwmwW@M ԪW ե;yB_*L@7 /_ۀ{ Nv?o7:IIAp@w?S[ 1`ps`_XpkF7ܗ(y;뮃[-O'K K&OV7`] }ûZ9L^I4tO_._̱y $+1u9)@H~)ͤ1&.](D /Eh>mFu<߃j zXw(04'|>j"* Z- B>`V?X >OA Xg <bĴfdV>N8G§>8۹}qU{<#R>C u\J+=Ư?}^9mؗ^Ȑ]w+ 9!ĻJʸS 9 A>? uVuw䪞ҋ`G];e- !>`sV[A 0 -AJ&gS֒@ M  O) '$&К  gi%i Vg.. Vtn1&.r]ASqa Mb9V70|3=M)NJ,@۸A"i҈G+aԦ}A?[|iA^-py3,={^s@!yllj ꂭm5Љ]~]AQT]d=_ERWZ^;A^ 4uѮ XG:0@V|R>[dc 徤 k9 a U_ <`Nx)pHB_a@I&Яw(3t>Q~F C> pL;R 9 _| ZPc`wE-ݦ.ALcՃ H)In'.Fl-=~q i@{4-m;}} j{ d_ v\&, S@W+`me)(9$=]I*}9$쥽hkj+@oY-.KK W[Q~1C)$ @\NR@-Kd'6xn)6+JI@s Ua'-DKCĵ!h2t`2J@/k HB$]!~IDR '~l#z&+Č. n| WdJ A1< eoe"|,|>ʏ -2 5{jI, _/Pl6 2t.ZP~@LrLRU7rW.ܖcze(OTJy 33,/g]Уz?gH6+꒻`y,/ |:_ ҏ9Gr^n]v d@OQwD@0%kY3`7zA > ajRK++`94`kk_9H|- ;\"(/)H]zR J2U@KHQ|k[_2;I&VjLv4XG|Q|1_j:]mm'ЊdЏv,, e9%r |F/U4WAO}p_x!D)M9u8}{)gn\:2}> brYELo;ǫd MZ//e.ǻ"AE(u(D5e7].KrfMnfh^VV )IHQJҖF glng6(q9BCCAс KoE IB @c}m =W:B2J, Wut @n y VRu7B HH|Եb ?j;a~} 䨤!y'@]P_TŪ:DNpe\W\ЫP;O)(5CpBmuw]pE]q .N~@}6Hm.)%$>Ou<=s{jAN9e ^}{ns*|Ayv ldװ .Y'@ ~s@JU:PZe7@AKH^$BiEmߟj-)m ?$CHOxa:F_Wf;_#Aa [ΰ6u:=[mm7Q'04;4dL =_o #@5W xBYRL!Xq C(A^@VF: ϧ4j8 fGv, R2S @4T'G "x|qi1HL-eŁ҂ \05)HNКRJ AP$(Tdm#ІbTПo6[d+Uypvqӷ@NR\ťs@{!4dj  abog },=`vžZ,CTI2LMpyr\b;A 1ۏ+0S56G6A8/XvVݗ̄@p8wCP՟A$|_/4t>to;.2,e) f0OR;Q~_ AC_?߯p ~aD܌-=`w} # ) |). 6#AZJ ) {m76Ӻe>>PVH^|YEփݱveѭ,he9 Pʀ_dl=Xiiפ1<;HH:}#HS.߁4/"˘VV?t5K9y"ā~&7  i~߁55HRI*9zt$En'W , Ah6-,{e'029TtleC(G^.P8j߂{2\-(VFVl-dH-Ԫ_g X=#7d ~kH V lb<BW.v]`soY6TZ uLLb+&"1Ws;o{QUNqxA8GJ&۽*ӫGo.-Jl&_At'6N8AriF=Ph45i}ZptޕtwÂ.9*[MnHl6,{/e/}m+-E :ȧzK<|Eߗ) \cL* lcm:(C#JS5Rǃ,|)>:!0v|.Ys[ۢ PWɮ`kᕱY@jz]zLoIW@s@P)HUy(rUS/׊JCr~#;M@RnӃ X& H$騝 ,/@[m' k_*߲BfRJjpG^w춿h[K=11^ܕr\1\k[Y?VD?4O2Op5A?̒p_0z\@xH6x FղXjl3lЛrE~j/i "Dl i&2B -3Rj@m0E~fj~-{]&[d/s5t$ৠUO<p@JyL*KаV -hDf69!9x|\P4z uw0t|]z?h|oОGhp}u* %>#h)-d~M8](_ vۯ`앯 rG`p!)">[0OZph7S;WY%*/|]f6ժgH5?X`04/f(M H{B/Fiь?nۦ: wju Xe$ %72Fe0/"v,}im e\rB^py'iEVGclƗt@X_L ?K)2$t`MO"`'yYKISr| ~q $ZnT$/ >thS}IM_ @3 IMJpy`?}9<+gVY zZ;&~Ծ`W[vwz I@:kh Akv7CU4)&xA`AVVmc{L*`qd`fk=1s]ZЫ|b&mpe+ԋYn0 7D."=]hcou/5q%q{UEojϛ<^K-ޭ]_KG2PCv"'GLw&^[V\ˆ8⏈5`Ta6n0 WwyO47 G <[Zlr q)!8,Cm߀okG2؟~-bQ:O>kc=9.-{|E@E\S_ \UwU+9 SiAG&v ?JZN?DFJ"|uu0D6l4H ^WifrǷIJc~dů 䞄>X+d@j } 8C@qX2T53 6A$4*hJESK~r@.9 L$f1fn*tJd%jS M/9 R@Ha~-+hE-Hod  RNA_ANrˬxH;p7%R *m7Kv߀Z(A DQ@j r*r lm]@"^tױ rXAGHr @@IU2F~$%p='h}HyAf`-X:UnrG4AQ/"&< d %0| laAJHdfe2AԩYvVK*}Q QkknBhuh3?(d5IBZIoԧ=JX)@'3 dz*c)$cAH ii&Z4@b(zd$Ń._tծCJm\|@;Y&_зF`[IO|"Z- ArT6]J$,W9!s<|T2U7ѝQʃ%L; f WXr}h׬.G~&xf͕@Vi{)'*%uO /)_@Cz1^f. ׳RI`]G;l)lQ `9eE2aVKe3 JoP`mg-M/l2p5H_KZ"V I \;`euD&I2r,Uz\=WAmin`?\PRr;@KK:HOրgv^}5Kl >I& ^x+⦁S>K0A-RMKy;gղ}{ZVN2_|e'I]Ҙ:o_B跥MuDlY "D\ppJNޕxY"@xhxH>Y.5 rZP>c, A"|;lK@KIr C%x1'pvG> ֊vrނ-%A`)h/mAOhǁ$nocԖ`C ,EBy05+H /_c}7Z9:4.we`/m ZsAzK\`- 񕃸p@6L਽' }Jo X r_k  Hf*!;bŮ:zΓ:l1:uRP~"jP|sk훂4گsN ~8騝@_%߲Um0Lm)IwMq[Q>)n! rA2~%f=Bj 4Z>`E-́HY+N {$0'BCO> ςLA=к\?8w1 )@3B끗#4rI.l>݀(qqNq>Oܑrjܤ7Ѕo4J ۈǵ)2 h*Bppa鷀ւ,pP/֦)| Nsmc7wB"𵭯-Mu#Hn$ Y1+ ʖ m~ I>/OYҜb#'倢(*o7 9t|4F`=1ȗR]FGtt`mKli-XMm|>Hw]?y2B qDEo VZr4E ;_/[+`h0#x%M{woe53\koCEZAZN[%EZ|s~sXcWhЏO')&jPKjm滅-l3^ȗ49W4?J]Le6 @B,` Z^+F`n05m䆬} 'Ah]c/=tf]5M~`&{i"_ ^s 0@Fvhm`~$'{~@KhJвBӁd3J`R 8^K _R mVhEPF0+sv|i([D dֻ<z4֍<6欍_H'-9"$ rH@az1L]IdtMZ,D1D@5=OxŀIaV/RpҎЂZNK ţ60k=)8NRs|-2X3yn;:Sw8p]M_83`3I RD!|08HKRJ*ـD~Ѕ:/Ʉ^~jٙ`rW$ q^5|?HL;JvچL4XNH(=Q%$8mz-jٺ֧P/&9p)zԹ3G6G~5+)6&ƼL :tSG 6Ihvh8pkz_Xͯ3@:KO7ȴ`B|^V&Zx f.\3YT`& Sb*<y H] DJՕZry` P diAQh`(_3d t!2'g%Q #Mm%FũEig4E)BhwлOW]HjJ~@B 0݁d9 ]<[n[r#8i-SAf"93z )dӴO|"bY&00f73i *Z>S6ieKԒVU~$@39Lk0}e d`h~ Ї s% ii.H 4f lTrr $$\ hITКIdI <5@H!UMm0E3^> m,mmaJ|*@iDЛ]oYgtD @J R֬2{T[L?Ҿ =~ oV@r@֚ufPURW7kwWNYyJ&#5>A AF -})2Mb0̗==UGt0pTT6Az rQzBS(I d"y@DH!L.SK3Oʃ.AVD惖Н 5%0_@;14>=w0V2$-$@cumΛ ' Iro!ֿٌA9&yd^<@fHC$UgK457~[@Z  MKo1L2'fi,2l:]t=6A38tYeʙ:`Je0H1)iʃ.@J/6$ X An\n(vWTfH3 @NJ9 zXbn$4)S@&<61-W=1Hܖ' v$d9${oeϟco+o[eU $ȜpwUV,|Ѡ?{58̫зg>,:;6 '.l/θ09 {dpW/s43y5%ONlMF*N.B'Bg(رvbhG4Mro/ٿg I>3|kFI >pѝ~,Y<R><[ !쫀`v 5z5]A~hmrQdw47hGC(MbS0;x 5|nG<'(H. =?~V/斀䑈4@F4s< m|NEx @I{A:,9)4LR]~;A6M5 =Oh~`6Z|J*HE* nsSt&>ԫ fk:C'.w?EՃ!Zta &7E%Jn~ѕ yfۘ8v0y4b.YҋA|'׮Ou@rti5Q  t3ځ).kL9ЭS#ηo{;5 _:Xy|\@7] մ䉜!}fc?JnI a!mI}^b)pL*2xK=z]s UplxSRyjAhc@i #AWk^-rQl%Ai#M$J. =9"#Я F"[Z)lJ(`U: qrL7ϥ' d3|'3_WjY@}RXbeE q5@otUI*9A:dF|, d$=pDQcl4D7 4#f/AKrl)/c~HRV79eRq&)-]4w@g@XkqB6ڃX=.߮ 4T|>- * 9UлJc3;B0LRS hr?hg2f9h6JsANEgǁZǏ@t%rhi[Lgt&&ab |;CIUb0[2 >;x= > budH2*.𥌐>3(G=ysބ`{vXL3ԓ`NKXJ}_=0mٵpլt@ Fk{d(b&)8pt6kwe-tLD0GLO-0/(uMHڜfZ_HAԕ $$2Bڎw5}R`99 n຃,iH[9" 򞔖Uu@q \{5tnز_q: Z͠A|6Ŕx{/>ɊdxSߍnq뭷L5MT⪇ |3EUYܯvoٗu5~f>uiJ^'/;nj`}6h~M9f=c\`g+hXo>\w;X$1{?`ҚG&%PS>%i\ #xoZx}1-KxVE`?$P4D&BS>)b K- ̖i2Lu) nW{$g< 7~a>Uvz@DBirte2!~PP\2s&b)fHOZ;h$3Pf@>dA bpXK승 &]С,ұ@NH`(0ذ`N|({t!(ws7ߙ`盯OE(ŵLa} zU/Y)ц)$9(hͮ/tHaKq0;7+="Ze=Yw]˯4? P1`rK=`{0L][K2<܅pPO0̿&H=K=0MeSBC}4ay)J|˜G`yP<];@npE^9b;i-OzH/7Sz03gДJӃϭyt>O 46l,'n`RǠYC@iu r]_YL0֤5%E:Nn֥gH7i,~hʘw3M ]h ғ` 4HB*!T#34]Y$fj?٣yjB&”Y%epQqtূ4 hCu``&!i) f 0mA~4{'` ^SIKu]ρat %':@.X^kLp@rFbA~7q6 ~- u5؛vzN:KY|Z7-Ky8ri @͢y5D?Rw@%rĿY'd+k.N:=vo}Ahf}g9 z8X@Φy,g1Aay Fh i+O|U_ t@vޡ6𜗄 3١`4,|= R+0WsNiX (Ch,1Wm-05dW:Fd :쯡 t3 \oւ>nY)0'!`:3ÇI Hw $&-id/ }oUGp:T=HO4Z&.ғhbuAJezJ_d$%@}@jMMa`_/L$x.C:F>Ф zWS&!9 6oܒ*Z;9h ZjEW| ,Mԑj e t/ 8<B%CܩqE@܌3ʧhvFma[Bѡ!B I*~(]7|/ozGTZUaFW84ēO>?,*QHHV,TH8/ Ombqu./#@2t߭ (r_f x\'  + ׮CXq>4%M9%wAtXZ/=M7e2׬1JR`+v+Њ4`p0: -ef a )~>/@-KM HT " b}A7䌼~ժwש? w_;fVu¶}ԓV4pp,03B7 vIh>v&ڤ3I@Km 8@j2ljƦv"JBw e_U@rHZ Z_kj-`CdPR~\ &`҂Z܀:ɏs@[hm:[g|4 Ԁ`]>s~- Vn/4O3u+OH8S(HU 2eH6"WASFo+lu(c 06_փKZ% 幼wAoj :t⠽O202 Bඹj*^s)ssc;_3 NA_(t^Ж| 4ְ 6N M} w _Qf)h: L+ Zw@-LW ?gt% Q @Z&wRQ2KaQn쮃fWd) =7=!?Ԓ |rke?efoڃ.;:h|}WOyFFJ_@EoNQT0EL5St3mL7L?Љ/`sWҍ`ꛬ:2UItB_B赝l7le63D󽗍_.}-.Q*Dⷍh;$46&!=cnݤkFt3,`uւt3h+7}y\d$ē ݥ@NGN)]d(_eY&d#r\2@dXSञA>Cpnћ }}<7sTLRx}uN&4a:7 ߂~KDp Q74%&I\gw/|i>Xw. T0$<`'x )%>h)͢فq:HǗq9@Lzڡz`50@`` ;YZz)"S%gyArsr@ R){ܞxq^+` ~n𿀬0r̚Uӂ] `;|Zz\> @j-<@hVM *݁ղDVAXTpA0$d'! "*F`G~v/σyeʿ$dS3Aiv- 7 y +BPugk%< cxM?Qt'5n; A 䇸KqgR`I,gYPkB}}_?/^?@Iy)n6ҪZ $>qA rd(@j{?(ɵ@>a*k~wA:?o1ڃF)H"Y:hBI@ޑd,e%[@sOwAoZu[Zsɞ%е$z)+ u Sɴ9,Y~t\>Kw5PT?s#\mel~ Nhl*[e.HbղXփ#0 lݬIns+UfT2M@؏CPlk.Chp(sH o/>/Cw`n[on6d=1gSo(pu<2@fH~N:А=[$IR1!:Eλ?Ai~M id>}5%J6;GD$y3*`F 7/N!Ad=hMAJZ?^s@. Af~'e+@H# u 2QGS* #c/< *@=]G`@3tn`:([X;V=֦w/tB$|>0@1֭eh[mNrHv{- 0th2h0;W[Bn]i /-3`SդuqB2A1=%7؞ !`w[lŌHBh /bbH'xmzޟY&ke3HCSYjuvZvN- ͪ䦸Oq}Gnsd-@mI&T|/ 6Mi\:J/Ѕ/Mp >+ ͤMAi&:l&d˔5فļ{iWpݽƙ,`:jvcgG1Tҁj`k5 :939T~`O(HbI$ @T^K>ֿq1~D%$ :IpP?O t Ga򃔕JRb!΍F;c`*7k@H;>o`p0$ n@.4|`뙺 LW7us]`"lOS9N0YmAN_A Uksp=}{0MR{u[@U!W|y,,V1@K/wŴ*j%8RX]}yO2L=փ/K" /%NNEp\)W5ݬ{*/;A0ИV41-q(}MS'm _}@3Jm!ou $#3 3~c6`HR "%%h:}d Ӻ\π}b!&2 Bl`q^!t3] Aj熺oJ{r;lF`Zf*ЋTz_l NKJޜL`v NtƁfӗ٠;901 ԕRVМ ܭ+t) g}4 ƶ)$"/T4-PݦA2[tXx< : G |O}7 , \ ӘRY*(|`n4]rMHQO/>侬_AzlZZ+`P|w~?ֽ?pkfao[ }T _w^֗`Ldc&QU3439"fg=_\;ZϿ nspy9xL ln.Vl909MS lbVy(p]'0i*_!_6!VԒ~=; ZCk`ǚFpRֳhC% ?ݜ1i 5IS IC&FSknכ 䬬`Iub4.6ХNf=W+n[в:AULmҀ m;LWRz3@W==rG=RP d,췏l| L. CFhrn0EV$3y^z 46[;[40LFq}.U=*7s5!\:k1*?$d`ٯR%TO8_.{뭷r UIsEWvz}dvVx3i1Gb~?i1πI̫Ggp=A2?{IDAT@kAɤ8HYbaڡ=`(=-Jy=lK3Ă}#-5$Egwj޵/m)]= s@s_Ι`:5fhH@ l7/@/0G>s@\a$Fi$\HF-{XW:8$i#^ۦD@ȳUp3.ST0%:&qt&$DPFpza`RXJ~ЃzH6]gY}F``;xsx?Ii8V( ]`rԒdօ 9cj@~J~=e QrOø` J Sh43IF@,r G_\\*j k kY\ޑtuoΠ?Q2:/|OбjJnmZjs| ħkT@$ hG`n_Y {TЏ@[hu ` mlf%S Q]il?4U!y@'T4s5A2AzH[(r;u-H%pg}20MSZ;h_1r((L``ojIMfB?"0. b7Ӌ|Eg0K<0Łt L`Zu>FWR^RH4CJ."0å0U~r.߬@?>`(%Y@g?Ci50Z ~}/ VA |*M!HSk(@2Ju uAj QRs[9,y괗Ou qS,4%M6֠$]$&>A3tO1--2 ~jΚU`z~f x{(l; XԐJS]^UT-#cAU[ns+ cDW}-oTl~;2_VB":_՜2w6ƴrG CÚ+= 2]ӽ +_c6z`&0Ye"&9,ܶ`no#4]WSf;,S)N5M`I/Y@c}]vD判"hl2Ee 3w䞼G.hKDd$1G,Ko+3MD<4iWG:2XBp\ZLS۴t+_||o`C }aD&3ցź`$&%H Uvդ!50Lbe%HY @-^Mm AȔJڬޠ94/!|7<"<£-C-\BdtLN{n}pa]'C 7o"qD/yXDD:㸷z!*0ba}zn]ėix1#^폍S4z%4(x7)[VY$dWWteHI/ŀOk`t$HrI(Iuu@a-{Bh >%AWպ xь3$l^2h Wn"נO=ۂ侸O ^7lc$1ewck>/_'q`+]zKSܔr3@s>^G_uVׂ$hXRd_h_,A2N: Ǿ . x2N- 7I|w| ?J;hT9cܿnp# q!/r1x*l;zE~bM^}b?^%msbމ qq7nfo=}x}4nm}sp`렅3ⲂkﶸhuaA*'@SH_vAsz>',Y*)AR\3nd)@/>g 0I ugTbnו6o A/5+rBF\h?WΕvMw=]rKvY`D0H>`ž !(|!,@:|o?wz $)@ HX*<2EdP5vkFnw.= RD` HJI( @vb4f?|NБlg+Ƈp w]>o󁴐<$;x'+h_j?Lһc@=0$vS Htn+zAh0FoF{OKzwAkjM- v-hYCkvT¡! 7A1p}e"IfOB.t0a:W"iM8q\c3l9*R0d,kʘZ`۪:XAp6W>>ĝ[nA0|CN1'񉽃mqBlW_mess|l^j^$j3$){+xm CN}J^IM߉xmzRMh^Qpiå}J;;骘ͱݟ?6i_|pfBTQ@Zѡ ab.J|m_\CǏ[T T2t5Tt .% q|;p4 h;~~ɷ_i= oyLS)gkҟ}M2Y43dLɯhCp\ 0m{3 ]⇿ CS|J K0 F#w:7IL*fI:BCՁ,@ @z>b |pYél-f'纋hANE9 &dTC: /s@Q 6l% $ZDJyC0Msdٴ<% R=5 L),ف_]_gj. d @:М݂Z 'wo41Bs$5 8.-!H-nDF#Ar-]hGAdK-`vit~?rd9fZft*?4d1 [ rJ0AWДDjnLz#6moBu\H;\8_b2@ +'Y(@’Frp/WO@rLFd@^{]H}Hiᦙ$j'O΂TrO@(~(q/pndr$r tw2F\o>6uA(m2t0=ws8sYcւm t!542l߶?TKL'7пI =A/+}fY-”{͜! ?92DO422f>_o9H_>]4/FjGV|f߂ Ntr{R_ځ/ g38L\4g4!I(c`QTZF3w{ܴ3qt.OiU9iԣ, r|gRr Hefh"Tu^OCe5Hq#!Hڂ0U3З,oKw{ؔ{cXGiC0]dgY)Gyof& W@=-KV\!ct͏S1 Ү ]77ҵ;Xyx<W۟Ov}/D<:`LN'j/Pi_}nyl >}~a9G2g|CG|R&d2`,wZKf;>Sל6Pwe%} h;2q Oa_p`4s$ h ߓYJfVCc&0ei \'5'`9._|ґ,d4@<_:x$>WJl9&XמTݫ;)Z̐e!WR"~bd(e,nk J ALD$'h/́w/8fw6RoTwo7*1}8 $ؑb?Dׇx=eɲ%jDz25FV[y! įië1c~Ž^`ԋ/`g.(\Q_Eu{N@>5^@&@SR\f !6yEigUoVv6Lj?_3) Amdz@(/mmAp\W)Gk> H Si#-qW➀>ボm9$J0BC;C?4wCW&1}^3 BqۡiB0.x ~.pAp6\ 4.`tT%'y&@ U@H} |,]@BCAn.vE iBAm5OF$p[AE1~R&fIDVi _oS}_85z߁oIAc =dÌ4C!9H _SQ:w}?D?g~5C2("uJ6CzӒ^& ku=`|.dBj7Fvlmue$cݮthm-U@G!Er"+8 l.Sd4Y@OHJ(ww/F0c*9HMi#@ #2JƒмZB`ʘ*rBC#L&m@o 5_ѿK)F&"ZLgv)HOy$ASk>M Yrў =Hj-`)3|'d TRC:'=/M~;)Г:d؋iz#:o偓#߂S`0} 00MMEN>CWڄ`{ƃ~?Y- e(r ei&$0 JSKG]l.3>?sIlB&+P@2R+X3u \0Ue,L5Ov \GvڌgCAɮ(`-%)fw, `c.{$:&2HJ.r7|-vf {/hkcdARxE5/!& Io0io?. ̒@gSL#f;V9D.ߜ34߃?jQ}j}4J#ׂhphDnMR]2Ę<ة4j|*3M}hS*\; mS%Ax!@THT >nђ`jM[4U_;@jzSo<]t˃JE,yݗ=bλ1j{^ym?wvk!zZG@<хAzf:pLOs /Kz ԁ^c4>> Rw) Rj //{Iƙ}^_(#ʾ${ ">_.rd g<: 2H94f( @=muuJb8HDb.ؿL (ֱ@mJRT5 TT [޴AZѕV`k~3d,9`jKI:Q$ rAO== \kz (KYʂf dZi[Zg@KFθh͡@O!? IH^x=ՆW DF} >"ԊNi\O3Mgpdn4'@y=.[ .@o@U4Ri@~^M_V]K b~+R 5@X;OfuM f~Ip$w_7.@,wH&<6iXxx,7Aʒ1@jz O=_ߥݭ:ٺO7_ @<:S4x]FZ R^ Js %6*NUAqmۚ N` @CA34r~ :l=BCi eQY}9ka%_tNf>v(>g͊< 1 ܪป 4`.n@'dleqD t M<*q.H4~5TmMM`!G ZqxV$ז8wcwvzTH[9QѰޮ fڕ>$fĄ19cF4*:H섘o@nqYEKvħ9=tq>H|A ZMfc@RQarӮn?,i`AЀaTrR@GZhGTJR)lmhKKs@K4i@AhS>y|"3ZBkjЉ:Oc_^G\ijK0e`>HU)&@n6 q3@MmVG>6 <NVH{T G2/ 6b٤|+}Bǃ9c`ZI=rgni@_7sC#~H#y1[ܑ`K&zAԁ:.~pd;z-i5 T>췁3 yܐ| Mh` H|!9h^d*hIk dT!L[t[fpWu0;Ч`FJf,1_B!j~zjW؋`#6cC 5&bqvȟlNscnz'd?O.mk;d|/ @K\KЏ'(R|&*Ѡ]Upz$CfYt|AcYfK]xHv%8򾲯Wf@g#eI@KƃfmFW AHN5!YE]y-x"0%[!zu@65YdN6)KZ-̀o`Wo=,5Uyw\0$3T7iA_L<'3Hk]~U2&9eRMJdy\c-%@^ 6kFю +2t3\&hVMnAÀR`>6y,HKq 73Y:%$$$o"?ptW؉͛A K:h~y6 K~#>AxG:T $7H zw(ZFkiY~wσ&6z0k)8*.[n9?BwI`ʘymLw;>5~ !cع 9<Ÿ<5.H.I24բ` gؔSTrIHE%MA/i kFٕ60y-u֪>n8onp(qn`2@B3M7v -Da` 7w\<`7E( f]c@t j\tԋ :OA.Fd$.PZKi6.K}M_ th'2Լ'eAwjnNioLI75!7BO遲V]*Lw@not%ArxM;Dg 'h4*z0PʹЗe6'/Mc ݏ_uw:LdOUzgW㾷zCUWiDFVBɖB]`/߉"2‹"Ow>kY8u̐^Ɠ^@|"~6. RHKqZ{lwtCܕ<)me]W"HmUȬ]aYd>SXb] I3j&lb8+o125M+fGi} `{X0Ɍ5}V hDW _UueGW F@ck[q^Uw!3ԋ3p#e_/Du䌫N#" Zɗ-EvZĽcXEDp[q;#ͯA% hV=ϗ +' 2u-p׃*|z z'vjL솗?@̠g/m/OTRBpJ0M&Sv)$MeMI[Lk)$H3jZIG5NS=ʧ>?u]Ձ>!Pf=u,nKU0de H! z_0UT{_U`f/x0M X*2|RՃ9y~ =@w T+:XZMk4Hy)(qXƯ=BIlPg0L[0H~]]uN#af {d>Q,@He 2_-ooA Ȟo@ԉ# zP-h_NNd %^3Z A-'OA?fItԶZ8sysm=9+GAwנ#tX1`ت=0L  tf('yt̏;rH9/ F⒏\Y5?v|)@}@@ h2MbRB-g ~W;qRT`gf0pN~ V.@nf22LE0Ly|_6AR?'Aj[f ;Rrn5 hfͨww sO1M`U`˛(|c[6LZT_ُw#}_ >/>_*hLRJ9kv}ՠ ̍46u X$S!49A,^jKf*Aj`2%<Ϡ:wqe!$BCv𿸫hKP? |QмzOb~N5"<7| % GN$*x;D%Jt5Y ιs΀ !424v}h-ѫK/tO_N [o!jqn- ix8[޹F}.봶1^l=͸qK^> !݂x tb,ПO \1GWTU~V$d%JU A %)9(sAbR>?ួϾ˧zzjcH )nSD <ⒼI/JVps\]Lf)#| t/VClcm\ =I4'H)K]`lk&?ڟ2!}w |_|d鏌WUu}kc}zDv.\>W3%:E"x3X~e,hH3/9bցDK~IM>C;zF[玹ڜcn6yMr) u׀ cj!<%\N]hIS ſr28-d< c9 nkBhPo#&=# qw| mHڞP-^ K nz .m 6.5 Q`/ۗIA˺㠯] T:w?[<2:䭌гB_9`vK>ҙHSQ \27Vlf#l`]^֙ $Iq= laS`* 2n%78/! 'm>NlI/Aܦ' uW}!bl7 Ahp;t v[eg]=/+l(?ֱ5 ݤw; ﮿ gUqu]I`$czPOp m{)(O἞JQfvAСW!2^w'tnu9nw/=HDE0H2B&ɷ@6ʪ}>Ah~=^>/X3,9/ӃQ"]JJ5hmh;mAjW]sli9m]l>8ɁҊ5[r!_K[3U}&,p~Ak9n,pxu>􊂬51*ꮍ/{YZ}䲁yτʹ5tkUpA7 hC3zW=)!7pMluI=a&3c9:\"iLp]Agu U +A`/RG>OA-A|J 3 j .`!I6&N_RZϴS<0}yp La@ޓ  $RRku$7$t2Յ3(&3G8 ZEk@ #42v=ꮀ ;| ҧ jc/^/;n캁eL4 @:$pu Z[r%R mMC&2LO x}A^ 0IgH҂>.!o0 iC_0 9g@9Ik0L)ޯIxrM)#{cp]ի#ou wPV`:`+T6`$-C0EOZ3@M tV`ۚ6ݡ!{BhXhuh cN-:\>ם:y$!lNN55"AduH5d@{cܯ#ؼ6`k* 4W3F}r}Lo{נ;YC]Nt&%|LG Ȋ_ |olb?xlĤ9ҽO:*^&<DO/j[tf#%|oL <[ǖu P wBezHWխAs RDf?@$$7 9!Ablh;Kd&Zyl6 ݥllm[~誀 \Rav:2ִ\=Mm/L7oBs,ޒ8x;9.M0eL1QF Fj~MrJ0uS4ylޘ¼@K{;Vlfh7tCG.eX} =k&)Ћ 9x-<_ ue{-mڡ;I/@kIgp찤`$[ǎJ#;-i>3:'vU$v.ܵQ90LL0&XSL&@ZpQw .h=tc^-@~5 d)%4J ZT@hThU<&mNJIs&U;tN ]6hCAjXE@O<'gI e ,i\$-;uGm~Lxm/ !0"}H4BmPSVY&2zƋr{.Y4f{۞5s ]c`5{Xd!',0Д[w^;ꮺ=rT Ѐ` 5` WLixJ^Ynh* )*xUhN-ADz] a`/6 xo"S:K7`(l#3*NCzR7Ypxwt.`d7}nk,,!L֟@G])ЎKU ] 0.0(GaeLpQhIHZt5:`_>ЩpGg5%Mqir?_OzAٰi>;U!jD:@KHl$&=w~g2sAui> .Y][HGWw[ywUy~9)H]~K o5vMl V7Ԏr!zx7) mlchۄ-'mZ2p. LvlaQ9xc)x~[\r;H] 䦤+_nntbHL-h BjZ X a$+uA#%qWt^]x㽪)wus}]o,-/ cs[~h?u%̕vHFWi^Eֺ6E` }(,SF4Lb:1%Z$d((( zdT R65Cm@j %5;I`~1_f2\`I5ljp/\jkPG] zCrsn{+0L >`1HIif<3ϼxB X#me_xh5`T_jH*>07J6,C@nK|O2.^s[ 0@7hntmp{43*歴'$Q<8^7/4+RPd;HV )A@ aj ,@' RX*#iZͨb-@VNe>n z% 0@Y'-xZ% T_ߺ0La f{.GmzAv nvNT ::u&k9EiQL]Y0Y%(O@k48L:Kp\ Ҋ0) |u:yLm=p׶P2u΃zQ5d<p\Z \2X IEJ yS Rd4 | ft=n Z7HESRڂ}`@IYx>.}A_pti\C2͏&!楹 nk d%;0`!0Mf3 Yp}p~r]5:{mE(lg&]cp+ &SMH10dS&Et*R}_? '$48'^;|jX[2u^L_9n^AGmKz(pi\K8+}m ?eXYw~ۈf+lﻭ햆,];XUW)/>{^WLy6eyoL:Ǜ<&<+HrF O#]MԵK 尽ewk\_]nWNZ94\h zw] A]ˀ&QW6YMNӽ*`ly;mL6Hycn=z PI+Kzp/ _KeҀZTnVAH-ifan:Mee- Ls0+d+tNz umCMi 3ZH?r]% R]?0JF0_[P t xSAK-w^$a=6 gi_c՞^RNΒ5[ :q=ARG?kC>0 ZF+ȗ`:vR vf(5MYw8Hi,Aֲ:3q`8MD]_ ne7JJr;Mpxd24렃i{m̫.m>NᮩrNRXx%p o9Lr!r# ͧlk6H' yi'-AHU%u/p$W/$%@Kpw$ƶ ݯ,[,h#7FgCtIy"6G\AFxy7E`vr0#uz֟a 5MRہ,9 6 LGT3Ac5(p64~HU`@Jz+'yܗ= F2\(~ZPɤ7!4 !48||o߁Vr^4@Gfw^@`:"%@o0/X3tI&׺Y4fW5teA2RqF| %6~&qL]&^zJ[bVfxT`Ho}L5vMb7YZ]UԱL9}(k@FI?o xo[ Σ߀&#[\9@40}({@/1|xV@ w9 +eHzs07 ]k"Wf[#>۠ fp [95qC;vj# +暹n=g g^'S nk:COzJWK F/@ P`~z@KAVہKpa?@Il7LJ A>4I{CG׍әz%B>PB0Ok&`{ͼyzڠ5ASN`s,)4R)&p \ۍ&O hAxlh*m;fٱ@jHI`2fp\cW 5dojbt5]%pt ^Wt[熂,5* {kbA`,pewg#6~]&hTAjI-$Zγ\o=G%W;'7U^a71*|Dv~y<kځ-M{yx[wo˝/Rޟw~z>w_ m/ԉ;RH9[~TJ{tdU3DZc_,*s2櫘[ķo;D},#xz:`S46 ={ϝk~.dFv4x;f/HsӤ󷌗u`%]CwB>/w쇶+b@b$<g NN~<6f4Y e!V4FSk.ft7t46@^1y НPF;B._JM0դTw؝s!Sph2:q߃d0}v'~pi (j!p.K_7L fr^&Y+Av.u]s=[Bpxhnh6~n+3{!b`&4 rLj#B/ ւʖd]f`hi=u5sk-)xFCt}I? iW`:ABiH%DC!$ ukB&@&ܞN؏bwe~HU*y@He^;Hw]3ROL^8;|F6!H:='=ATFf,>6R T?)|o05 2k=e]1#x9M; ~oIO.0=<7 :1`ؿu$&ۀ C "-XDv0.ARx@R2!~{\Wo| 'ė5sƫ[ג$Z`? m)w2AuANY92UtLaO3$2 1Z.օL鿠SO~uu(^9M.!d̐|]r]-|AU Ah_@ Oe`BBOAא@В4*4- hrew` xsd-t/ 9_b٭`ls_ZYh50|sT"/yeY&Wd9a@.m 9h!MNrۤ9+1\?яI21@ >.m@m@_hE.UkKZt8 b}ev` bD"M,H$2y= RFJM?]fJ[) OHpo7 a0We9 k/{2TV`oe.@:J\ؿ ֆPPP6}3R w])#%TK+]2L7Od4se$h}fk"՜fNo [u@W3B62-t0Sr xL@r^@6=Wԫ<ޏdp{uk>Ќ xf&b3ytI9lwyaUWRZ,piz2ķ q wFE{30fh q{ꯆב#7oOp4x0P/>L'g&{y߁AWt^DD41T.x3@="]gֳ\enI#pw$!9Ͳ_4Jk T),/M:L΂|$Y!1nԽ 7h!Y3_HaGA``ЋzPt5A =2PJG hn5`#BC=|z PvsI0L&a#xR~G{i!ȫaay}|+olf.O!sد ~Q?Gd?]ZKv/&`Ƕ-1lwזwR0U\)p3$x{C҇Ixĉ2!S0$ eA҇'. `ۏ4'? {djng^9=/X(\ô ڒu`JcZ0L^َ`kh2Q~5]vԟt?QB0}bgMv IW@ʈCT(D CJ^y8IڃV],`nIn2ԠU~ RUKyd Ӈ ;ǁK ^+&`b('EG7+lwshܼ,CtNWz׼]pO{`{onq{|+zOr̟f&XK8v4;g/hCN;.6qUwtxƻOL=Ip47@`i`;S -v^^[v`&XS4T tnҕ@1-#L pn)*倷lpS))A?v)]pw5N/ߠcu`e\R,)i+@tCs<t[tm lPk0bor܌S$ `v1x1歹Qvj?3DcyCpϝUo@j@#F#MU (47f`-8 H;Ь<3 ?;R; i w7HK20I6JdM9,<h+oGX0-OGa L.A= \ =B9'F>&_`Sl \^+Ir?5@?fSʘS-@KW5=tW\`٣dĀh:!%<dI'߀\qWͥ{t;K?64=.Bǁ5@siL&6಻yv:u|@vT{g)ـZ;yA "vG'E(Y~ ܔUm=סݡF1= i4 åls0T\ 4 -=&^z_Aw߬IcZs ܾa2&+qMqͰ7tLv:%QU&x)"C#W <9. RX:I.[ l`ٻhրj>3$0tI3106GYG^/WC nj.gV/ؠwY-_@ֱ +c E4@W?Au*x9_Pѣ`uI.W{x/mtVp5sdK-0ogԋxA,q)a43/P$tv@c|ħ ~ =MK MEdnVm#[B5BB뎸 8!A^I6y:vAvEЍ:\ۂe56/aw$D znm O ?T3K9 fTi!J@Xwo E4sx`$QXSBBėaJHz9. o%%iCI%!fwܴľS#>'q ICB;|CH(}II6Y_hXЭgxL1U9NVM ~TLFIڂV׫=v PjPD(o0=\9IAsY I' Fn4WzGK2T@wJv ]F~j3 ]RHzI'A[`@>j r_nZ` FgK\$Ք@g>z@%>pm+U2t=Yiaj\/u"I`7ky;634((=xctLIX("%s]-Ӝ > Ah:J:+OIoY.Q Hf 8Q =_윽 z\`RdJc^k)FgrdJ[~A`Y*kнLVNГ:H ēZ"@=F 7V 9 v-Tu +z} ɯFTR ះ\ܐRFQk뵁Ȓ$?O$Y)OyG:vy u*>d\5#q]UKQ mzH5&$ ZH\,\^v!n[x^,{]bƼg@o|Px屘iЛ osVoڷfp#H0,8bpo[LkIKH!m('+dA4IQm5Ao.3a@B]^`jy1^MnfЫZj@tdGUsP"vsTNZ-Q-h><71`:\X0Meȍӟ@cI k@ͤ@OM҇zWf|FM2 tr(+w8n-1p~ ]Iq`1S {t%zS dl.K)#O $X)}@jA[v5:E2\r洖`֘~.2 Or^2/XώtKAwhESBC2S!G֒F榫-#2MGAvFp.5M'`&hM s.K-ə ,&nz %(@w˥tAGD9${@#N bzL.Iпe^*  sMΚANܑR6dfv&ڹ,ur5בc0Hf3 - ML%v=) -+ʮ?Az<9 Lbtѓep .f\fͧŴD}Zr_iB`r7lcZN,7LN>|qo ? au1n)F.a+$LO.w %\"RY`ޗ8 sAt۴'uA?anHO¬GtU@"I =z+ zD+ C`@r) GpTL63tL[~  6<\ֳW=umlf`.`ҙRH2Lzc%rW,t% {!,[X@U.23DDlܽpA0n?\zc9@n[r\=_Ǧx$JHFbWaL>\U7&GcN=Aw_`iuO<K_qqLo?&v.D} 2%˖|W / j-kptw؍t@Ho Mi惞ўƿ bfx3^7MrQ| V\@@ +Y-C\"Tv_Boځ#x0o]]%\[\K;ѵy6y%(Vv=3nfc&^ } yi2k\SB-DOl_R^jH2C,MR]K2, #M_o82ZB(hh:<iI- 򡂡Tfv4LRH 2?T+ nH3.^]- FX&ZK5#!% cXj/~zӔFj.g`:ؘlvTgHiUH;&6o ^X8$.9D roΈO!bm!IBa $lw D@i̯f(qA_]:_t=臚L0Ki MZd +Qp4m7r~LXfI0HLX-i!o|} {ǤIL#x{  Saq'㞧[^yU>.;S1;7x$ [ 6F}_poӄr7I͏L I7t]C6cHֱ. 8$%t_Rη5 :m P2$PL6S(D>-mQ**|WSt3k |sb`ھW8f=^wLEp ] rTrdN&$(`2g7u@Y CTK2ěy=VUvljMWAc>s~3y;N-_vлB׃|X{cXp\9-&x {䦜(::_>`rIg ".K2ۜSu6!AhM殹o@c9HNpig 0VH'0?=+ 2Iz0kNʸZ@>v[HgD 5u,\- xT΁!}$.@q9`NH =3<Yf1cB_jz @i%2KN kZ" &]l7@'ΒXsY _R$%}0-p'] H#!hcV13S2ӴWߪͮm#T ʉ; RXr`.K )4łk&_l#p1S pv9`K ]1MI>A`ph1DzY"/X^+ĘW` H `? =Snzh]W<$zs1P_aUݗyMLwͨQ# o9}>|נ;TP'썆R >(Y_oK_8p±cK#he׮Z^BĿmC䎈B^vClClFI]~oiցt+d7ud*B.FDSr2?hCuRM:8BfL) L!;zIomdم`ʮ*R~^zcd' $Isi0"AY d"4`N^0u4|@ >viHz(s0u| H)#@S09ƻ(u y;B)lf/0iMZIiO rUr- %=c_ynޚb5!P` S Uu RLhΩڍ΁QAQBW2_TO~;܌L|v]B]6AB7f8;!f1fE3C }!QY UEz{< xt~~? :O (04sL!惈D7 dũ 9ej . 8J7%49Zp'XZ{fnyY z9^%yH|s dzA<$Inpu ג^uYv+ml L|a -rRML ԕO@|'(tN9vEǹ{/wu]e0PQJE2T:7@^ `Kq) ^wػ #ASӂ&,/09%d mu, H%yvsI -LFVK52_'42Tx:uHW|2RJ}R>8V2Sys vd|*ff* nr\J^O>Kt;v sAi2w L n" 8kkvMw 演@ߺ rחCHb WA = mvqBgRzY?E Jf`K7i:=㖸?A¤I 9+ptꆂg..$()%r ^nKv : $^Bxa ZĞ!TԚHSiЙ:U'd?CpApRp.h;2h 8W&q@Jݣ:{Mn-/i42 ,'``NXfu6o;[*׮H(愔9#ϼ'UT]u=2ݨAkZd4J }H} r^Z`?(e)9  R )) #ఞ$xa^/%xy %e|]wә lV nC9RT:`KUS C&Izu &- m;n|%k%Hg:q Lr('>p oq4fM- @f3gO_B rI5 yG^Z۩lfod_CƉӦ|RJ"u]H)e!FBɇ@ a#ҀĿv$Z2o7e@QDϴWs|:|2LgSϫ feIFq $0^u2C a^AF=k#@DRd19 ^TwH>:Śt,d\am'aLQ_AƟHqN*jH&ŦcD0l]jmܓC&"2=q;ưn%Cֲf|'@spjVڂ ج f_gJ,n.]jiŘ`l@QGڂ@[>'H5D?6: )9(:7zCoBJ34z|#i59cjvxk eʺڠTR$p?Œ (d/$LƂܕS;6sܒ@"C6M6rT A2JFg]nZD[d9pJ![9P*e` ı=jL=~f$0\3@A2 uyAD&O~YL&7紮^ݬkt5,AB Ue,L<3֮GQ|MFy;@f3NfwAg!]4)5AH9.”7̀o(GVpgc )RssIt-pE?hNlm˂9hx ѵ`>fy3M .EFx &eRIY0\7 O޺nIn&0A̗>f)!-Mg-}/֌] 4 n<H4ߵVưFk p@Db@ : `%3:7Z Tbۣc )@PLF ZE/k`ؖ-] ܿ[[4DžkC|޷ޖoN$6U_uK<o/;U_'{nny43<rRzH( &T\З Yu 'D^z)$_\/YD y' 9![AĜsQ Rz& O"F' %^Ys vz0>lGY Li^fG#R^Z\@6\Ź s8 J2Ib@H~M .+ ;$ |/s%lf.[~u߁IDAT }8G9|EGi&J6AZfy(Q`jshHiSL>L6@j}`%ux fl}7vͨ9'kud>HVp#u d!t_W@3IOnܵv@}}s?G| 9Pd7% )|4hE\Лt?FQDl׺Y dg#,%`f6R~D8DR[t1i6i((Ց :Cp | 튺pN  kdh`H! n.v=4U $ir>D@ {"NEL ~mk/HTz`r/\IgRW|bBhiǂW45`zeë߁&ϑU/^o߽掅+6Swy7o\()x⣎y#YdRF倗_{=&M' ƗJچfT "=/Q9Y_nr!8(Ih ho-纀7+Bn,~d# Z}ܴ d+nuaL=nz`zOm6γHN$Qz[}9%RZA+Ju]>mt7i@^J<g 0\;<ŵHS$mAyZPԒR&]AFv3I7-2OKY6 AHvC@yJQ(42^Q03^ $8=v۶m0k#hV-|k<H:`0C !Z dUH$rWٍo.<=>0Kd!sKCE64#B{CEr#(|}% #{|e " fH)"=AKL֞ 1YK:A: @S wO):ō2k zKd7S)=CK^e]fس}L #LUYM=5E>`5HyIsK}oی-7\λC"@o% ڷ${Bl]1J1=cُnO,n p'٫pӫCb\b ؕ`G:R%qWj $@X@g̢:\/Z 3t~ Q&Y5~psX6>603IrC\~X' p.hzͮ`=&䜄&7m9fv1H6QdT[򠅵e6$'QvI;փśmGIp}@D]&4^48Uzw^).\ЭK>2M6^ӢZ:k6gvLNR&R%i j,2GƀaB}0/fB *7 =&+QY̤3_x5_sDZ_'[j90y<P'7ӎ~ gx`bv'R.g H:hV d"#1\`  bpx1W#>Le40MB_>$ pD.%3 0"@f'஁7n fӏ5;4N`Ѐ-u;Z6 B\>Y"Sx< >wûڀNZ 7 e,FSR2nRN)(S=FƎ߂9g^Gn^ 3 l[>'p4AdwGz pt.ݽJM>9* .-dS ^ 0/  e"nD@O$;u4 T9Y(^˭' 04y]_woU{cӸ>038  . Mw>}kTDUE|< 2{r{oh?W'f~['!v!8wH֐9EG,6z߾IEjꬳܧG Ή߼ [`P@Gl[OO WP \32 `oܛn1}A8[g' ,w֛@]Kult`r\SC; pxZz [XRud!9m6Ef,,A? 'gh RB*3rdPNzKkpOwM?D+m-hDMx&$>I-Lk-M;Z^$!yGܼn2Ė ?M hi'$&%@?H.3Ki8|'!<ޞFt֙_'lt0q h iqA 3ׁBjw&YzKROw0͸ *?xI=A[NZ,UEB~B$L[ i#^@ai%@ cn3~ˁ2.u;hHSx:䜤3S~%I d$ۀ82hJ? L6-%=~-i|W$)ud$H Ҵ7C@j77y=$mA˲yt%slC;Ю7|E|Nl.*ܘ^z!v{^70^}>f)|^){|ynE[[>_X瀿MAJk32$ |C\)NC0)_c*?Z5l+HfI@Pi:݀'I:%$ NX>Zd+t';Rۻ )%-ltѪ`&8@vrK "҄,3W%@cu.hMKy$!-&.wSƆu[,6#@r͠k=6–7\:8LNg ( xm}L!f#S:lc+? &Ij҃5A2L3亱4`ӽ{]vۗho֫&lڸ5:}/56(ų3@Šb=5_|_@ohӔ6M */ 'Pl1īR͙ B rVZ@?I"L,<$N$$ $hxh)JC;&1udqW@Dfx΂3@H^90n4TY v $Hfd+a=4ƂRhCWBv;H9iHCfsY et@_-n3e},]KCQȩeA_i-CSʔӊ- t,m D\qgԽZ8EqK#?l]\ӌzd4H`?Ii:|Z ]ďP'ctK \ ae; :AË@%ɶ{)˦wF?ܪuww%C̘Gwm`@1}5ȨHvkKa;օ_3Η&(|s~[cFzB`Q)S41x{>$vƂڴ`:&AJ:[tAm} ZZԯ1 ]M 2UwS1MЩ AH8AKfpQ`|4A{2Tf}LCͲV1FM}lwmnmƕe#0K @gK,D@+ 8Y53_% KP/|2$P@kB &Ib5dYH;0 'oyr,@_u -c{n~5Ajo= QEKޙmI= 46y,Fh&llct4&!1)}e烎+ d NG9mZL0yM )IT~: 'ӜF6pI:,MoS3tpL!y Gd&h+WahQM9lF8ˁQl~o$+Ԓ N2R`2lQ.Im'0pg}` i6hk[`kU; d @Jqd|.,` Y+G4>8ל w!`ؑp7D" e%@R"XW+ M)NR V#Y&iA)`Kzl~[fIcif@@"A! pXMYalSVJtzhN "[w%`E:4F4#-=k=#Y\̄*CpA+@qOs]p߻A~𘚠%)% xp<ɒ:zJzJ_-M6mz?>ߠwW.Y+¡Ws+u[[E=<몯W!:Et$!JAХ7 ^ү!?7ʖ,8,-$HDP~3xg7Nנ 10?@b%>: ͭA"OrU  "{2_ 'hb+skNedDRzofS%ckgpF@'jym -B&}0 @ S (o 5oYZVw6M \ވRt`߸_uF'l%zVYRY^g7ධ d{Fj~`h 5VAnS炍 &H9 %i:{V&v㘭 ᚆ_AkkM &sgeIR;t;;PSHJj=Ei\%KUAώz̔G @6 zOMW߃ǒ| c":>pi̓µھ+ke'\ 69Mz$ @4e) vB`n MBmv𥉛[a&5Lfl3ǰ;.H2 6%v][J0jfqӻ@;,OZ]'TR5HI# rnFB0IFJ~ Bgg(h|͵v44@A׼I>`-HHC^ZLWNmlObݬ%5/y%I9pf m]$ as$1Ybw]`\ ]7Y|H c^Y" AO<3oGz82IZ#irdƀf=h$8՜f*h J_O~ 9kƁ9`BͿ7/.pa5=$Hd%{wucmUim `@M5 f斴^[$ [&7P:m10% Z@Kia0k$W><6@3QM8)_@{jOmڏ= $FFn6ϴ `(roX\3CeeS38=il"v0Ik|&^K e^N }홷/zD})r3'~~OS?1q yel xSz{o ;@G :&n "FOOmg_*Vj;P:  I+z:E??Iar H8 ={|3K]j頽=l2Wdl7 uv5G<-y(1fSSvt Ť-Eh[Ɩ3O&4sz@>ֻt@ܚAxԓqf!S" 9$3 sgs9| w[[x 0LT;,1|0;AT)/:HBnG:O6g&K Lɠ?j-:H6 9@|p8)np -ice%_w8G m> /v}M0I+$pKp;{s`;C`,6>n7'ݣAp[ܦvQ'ӕv8h~Ppv UvjSMi+Zhb (`^ )H;<@2`Olo0s2YGTjtU@34ٜ|r71&B:l2ԦT L+iz@7 g!@~_8MJS+oizXW9=ZI~OI' |[@ћ>,l#߁7ѣA}nrv{ ƾ0 %! 5tf9- w;c ~йR%Nv3( DnJ)ddf^Ⲑ`!u#Cɉ&¶ooLĀ`U0 X(_d('LQкVi %fP l'F=S"gL|g}6~ Фgݵ*@/ض@c& [T+@Q]Ni$Aނu4ʿlq]ZO  _cԓ @|ect$1Ns d pWp@"t!lݧ{` 5؋dRЁbqılk`[%(&56H)j@i- ZC?0QOHU{zCs4dT%{AC`I6_uV}-Spno=O~IxbKHw|;G?@FN{Ԓ4w`YٞjК/8~ So5ovz \i8,$%8LS~@:R$Jm2=Q(p[- ].?%0 ii:@g0^m\I" Ta #]qG~q>9 @' vg<d0?ۍrނfWiA`!v6-ꂙlE ۤQ.Av^vdLҠ |ʹD$xOyn)C1 Y-o00$0R$,smIkv#'H&7m⮴m ^ d x 嵮6[ځ=A4~;>w烬yf-~*VAB R^l;;ͮ#\MDm@6J`.s oaDvI/=MEl9]R $x%hU-@90 tq%4`I^POlfK3Sٳ,Su:{yltrM5fwi[ہڑf) cgsLi-vFvӇzx1]R4fMk<f?||o}@-v*hfOf!h1@bem fVag<=5]|(ZptB@+o7 &5.4KF*ZUˀ`rh\ L|$&ٞQΦ-C|w7a\7e-]O󾷸wmU5Wkj@.J9ltݨco|]4햴apF ~6n Ds`HE4M ڒ V0dq{gd8W@3Nc&#AuRRm_#ft[,3 s#.˻e4M\qׁ4d 2D%UA$$hSk0umc6p .qK/^Tl< i'I \fm6pz{F㈖3F@ +}Ur)K V)f)̦)A': }:p pMkhyͭm I0z+QH&bodH6͏ A&K5~RH ЈSKTFQ`ڐyP-+8'>I rW8GtMRuNbYBa` G8l- p45 Ҕ-vgrH+/@&**Lg9Paf_.U 9(r^t=-raj&w"%e$]Ig:)A{RPF~ʠu/' !@,sRXII kR Lj(}4dAI)Zg"'Tg.HO&8;2d}oWAUV.ԾpWOS@#'6"  vM!y!`{Lx2u&ԇ:+BؽЀpe˟4xg&:,}Kt7 OWt ԯIi=n;`l,ח3)Hu 5z8 &Og7I{!Lvy*л6^O'lgmokԤzLfSؔr`۹nM0w ~z seSTvJҜaB6@~x;޶c&!p-l[&'2GfY/A QB+i*?T>I48?@, a(0MUi:R'ZNҙ 5#~ܑ@&9)y<{A[hfymj`8H`2o'L'Vusخ4Fx%(hGy$w}v8_aЬZ]Mv3\3"d9^#Qz Sȧ!rNO `4.NVxy}lwc-lGipBr>В>Й !L0KstI+$ teh[VH0 < A3g}&_ 2ܟ771БL` :d` U{Ͼ!(Bhܱ7)#mX⓬!%;6+t$Li09"sT6!(I`p8pY@6^<糙n{bU=' ($l9$[Ap !~1lsv5'θo:}_oܙ2+6'Mn|RZc?^ӱ/o?*gԗ/jrim] Nr' 偻O''rVyv ؽ}BH@H ta*j::^f=PVhKK.aq ;Y>Lf88YN0ɝ&) J/x&l"n88W)`s rL10匹`e*D+;ɭ rp}nq7l-b}Pp]"Vui`KCn NZ$DTBpGLndy,y 29L12 dǁ.:x}r3L2[2o?/%UVlЬ2(z&ӕv7H x8yᕂ /q@ȑAdo$; ٫d&ݟ~UH05aP4W׳ĩCK@rB]ӦG1d%;Ԡ῿VJ`8OAs,ύt&`hzj^X spt6$0e. cѠ&1PZSGmZ[O Ln'`H!AgnB #PMzL^gEZWL@j4a_Sڊ;q!" E6#@8d1@q ^Y&AOi5@1Itd7̮ox r3-R|RmyiЊ*Iy()dz8pI2=+:[$PbGi#fd:0 $Os.ݢ:玔89U@Nv^wݗ>{+j|yم$ǿ> pkz l-ZU+ke..m m@|bŀ=n}`cmKp۸h77dLg$80/yBʮSOh>LfԆdI$\h: 5џ) LW>smJ`HQi)s 7]2L>ke!P"dch`Qj*_\нtcN Iޝ`f?e.=h^-@GAR&IW>gSH ZQ h `y.OfZv`q]69w e%л(EeHB|҂=``]rTBmcA`N v6@`/ NnU0%L*hAM R T) NsX(C 4IOpJ9D4dsլ1Gm2BVgsyfIg xxϸ) Oyt&4.0vt # v,b֙K.Vv<ց7/t[wf);b2fN3lJse5Ry)+oH ޭd)oIܸ1B\nКفd4H +M:@$`Ԧtc'3x;{{=\,$.2 N\m77}p;n;=U7%M.2O}@?SvvxtmQk/QqI7a+ܪle.{׾M1m6jN_do3=jMLN<55 n?`rHU0Iz@}z:;$d-O:$r:`-hv-t1 4t0YM& 072[D(XI!_Mt<bw{$PJr{ʂa`>@Je:@JuzD4P#5HMJ4 y ]hHKꀽb X' ??Ǟvb+4&  6;<ם.N1M"!ARR\I1`2(x:WӔUHRfB5^> N:1n@G kOA*ׂ)H)Il udݭch snkb7 kZfͩ:`0CBL6")4&tv;5NN!WxA(7L@xt1A37M4Yf@yr#y zVgM2 #UŀN6pNd8!!=HbDúzj@%:d̖. ';6p v+顯A2IcS-3U~+ 闤}2MZL>.qNR?`I ]b8Bu&?8I#g/. Q|9~~'8ާV<w>|kς[w 8 nV#N,3ؚ`zrnH0< 2¦cB fAƚ`rJE6䢹j.t>Wb pWI#)%+h7];}4|ltf;_@D>Iq6 ]垱eAҋ]0;'^$"RzZDK zB4S3͙E_iǻ>lOp;~'ЯG~кddF$\RF̤nחr_6 RKdDW[ < Yo97vAn#w4E@6;h/)%)a"/ wwd M4HYI)Ik^/h#<W`[im-TՋ$y'xu l0azbx $gW`Ms~Қ` IrI:RkODIO{ t;AK5 ml}`~0t ө@eAm &8+MUܚ6hko,k$7tR eEҵ: )7%klzegN>/U:8@H8N)瀙c ~Q7|4,ۗܬkw<*PpIQk5^MJWP޲o(> 8_|I/l4rGAঠqS9 G NZh t4z$|6@  AjI CЊ. n<9v zЎA$ITqIC$2Ro= ZUmPLM-\6iNsǹS@o#v; RR{p؛ s  RXԣ\ 5i={#6)h<@V\u^z%#`V HDBM=lv` G#PRT߷ypp v 6xe]Xҟ(K*<<<@1RnٮZ_5@W&-61ЖtV,ii 5u JF,lpVNs[@ s3\HRdO! i NŠAѯ 孉ͯw|@wHFD)  w 5SL HR8L:Rv;.Wp#4jUnYԥ4CUƃЗp0A`\ :Xl @)'/"?)+2@" 〄d"'P\np~3Mr<@S/BBjn0pg3د?&$rHUY DL XD;,ѕ@jhM:-}ނ˞Jqg1<$ۗ;< ڟLdp((9o4 ݮ {턠5!ہ:A x -M'pMK3`΁S!a?ct9PmM@ý* [0>x7 0@~ri-^ :EA_*`kbZ@}N6 e63tINQ0I{/nmx)aC`Wvn=a`=2;Lqs\mi ҤPK3 K.ݤWN~`5v*xyxNbwM^p1=%:RJ`#8MSie:%#Է` (H3ìS^jHG?-T~0j&8a3`:Kd)Qvn' tNB@~o?HG[?ĝ 5AIo2L<Ʈp=wda6I443l)t[:}?{w}? C->} ++>.0|r>W4:ESkc-u!p|}-0>xzv4FÁ$%x6 %U/)I`5t- RƀTRR 1hfYh}e/ُm;m潜2D:>OFf  1&`ےHgY&}L7we98ZgГ2XE( P/mk;1Uh$D ]ڞ7ē䨜*RE~Zՠc"PS[`3MzqL"No{lKV9lcc ' 6U􂞶Il `JIl|l=fUx\`vҞnu︳}j ìcH-m^ &WH:?0H}!Ukz$L>O6$wTgjr׸ X,ivU3rEnLg"x@OY$Alq>-AڃxI')&rȩ  G"m@aH} -i@ y@iZJ,Nc"{}L>ϲ(pZK+J (2c%dDA3Ydφ4`n}`hamA=ROj˺^%u,Yj/t80PcAc^[`07^1[v/ᇃ  wKrIM һeΗ|-[o ?5'j; +V O30hxp;D5gm:5dzHbE{6_致!S鴻# $:tX% 0= ?),/gJu]?6r_7i sfUlb*z~{n{CP`>ztH:I0LbI(>]1vCV)"-87&OT TЁdS9 n)v†9h`,-HN窙 Zhl,P\ "9] FLRl Y/7@^RFSY`'gHU[*AO C)Iv D^@Ъa,%W`1A<K )RARH(H F.2CƂ;ɎsNӥ:쒵@E`"%Q`0yeg]9-46/s@r{pH1)/eAZ¦[I$Tq*`4\p+ItHz OAr>nы;E{7RলU AO@KkBMmj< [W@! 1Qz0q@"䒼g,s\b DHIwb1M7OJҁ6#tHBb*e2;Usptz\'R۔i y\)10KBh& lgv%m9В6Vvww3͵!h%q@i̗NOgn Ԃ!!AP 40eJSСZٽv6O~'7$ Os-k & -,{V}^1mxÖB7.-}4~̟ o_$N3*QFDE%K6?RN1߮\(f́!CzBjANЊ >2U w$F=#CA~5o9= qXz@}oWW@12Pda&PߤѪSũhmҗ@eM.ź$Tb ;dp;ftKw) կ!O H/*F20~sDMgi׾yRAH}@ (Sp9C1OOO 4#-:.W oE7v{ܒֲ@- x& }gDA〩̌WҤT3- [Ň0?{Ti.IBpya5 ௠a3(??.ȋXo/˸I@Yx?d d=4P d Ls}dqj+{=w^}I?h_֫ny^дf]i3 S`p]P] H@C6 et0L*4`}@wY"@FnS`ֱ]%=@Itl=+AW@VsxWqo%T ~@a9"oA Jgi)CcrS0Pf@")-UAk4]&Yo,Q=rl MB$Ĝ:RÅ>?Wvt00 ⦂ɞR I I ք Ml5LӼ%Hk`/}Fc N=oƧoi+Bxt酘@$qg|5O֫ v@8 y!'1O5h$o #Hi^17U5`4Ht.d89fH"J&`*FwnefO@u),fV͞< m$^0M5SL|1Rt-K9$&"u%#Z_(Z<FGʀMc0K <<nvd!}=sˀ2S20u兼'9\Rށ[ANJ% _'#@ZI%S4\ /f \}+f2)h~'e=A}=z3PV :#lͤYl]k/WhS62 1{˞!$7PdSW~j n G?ܥ,Ad K%s .枹 zDt /KLyQ8NL:Y d23 9%p>"0ygt8NW9ELw=cu A PICt;Ad]mٮ@ +d1L]wzW \F34 {Ԏ)(?H}X6TO`=]}nZ``?v- ^7 D#<Az c+yos<-#F`N8.03\  !F?r1hݬFEl[Lgq@HM9NwH3`[@Sύo HP 癥jl vؕ?>@?Z?r:5:r¾Q=i$|xyoo}8p~m_3He62.i h3EЬQ}hG@!QC/Ho {.@x$.mJ, ){ p9'`;j(4lfi '3TMM RCK]H>l70/3:@m޲kEQRlO6L{ V'Aw1GƸ:\yU+s;Sk_= crؚfgdc1&)NQT5;/jPGN+|- Oւ),Y+V".h-VJd!nn/?؃vKn? v?8X0eL}Vsۺ@'‰4P\ƦYu<} m_lsV8@IuDЕN&Nwg8[ Sz mc` {$`4vѹUH d ,t83A˰\@ QSitO5O6_ v7&-f2ShCw UL+`!yWǃ9pY2;~Ji N*cg(]iʠٵM@0LR8P:=k>r`vB3x#YNJkhb^Q_IuEwUKnAk !HK@pw NpwniZso9{}s.UciKZ4Tmxwx2y?] 8&BmΠAH7i: YjmmJPxg҂a"Ii䡺[汹ZD+6q3corgRs4" e5 f#ʔ?vq7 h r14=vh s`V f 8W lV[)`'bo2)QG XъQn&752YB{53=?:o!("xF;}oO]zUx4]H8l~;7*6Jxʗ~=Y2o.O '-aDf)ifc3 Hr+c;KdhsmWA$}o]@&HaIA,k{eDIGV= zSKs+AeM?kSa:Ҧ) v2 N!g58Si0%L&I`9l2s>>ijS\@* $2 Lrߤ&IIS>4{ 8b7e{s{(AjEEsi6m|`v%E#A8@ӗ@bT&z~gI TߤVt9$R *Jw?kB|Gq]?[]E"S4>$䈅R:E/ߕnX2s檐#M5iCB~MNlNL~}o#`[󵙛 P lW⫁\Ah)8 NJ Ԓ$$') -jwHz O3HE &:H#4!mR ^rj ǵH7gLO.K %IGE- ;Rـ2LFwA tD2ܖNkޜ@1Kr/ӤU ێogF[~:3B Aڛ+L1*sm N7YޔDZ 7d8=) 6 ֑@M's@Hki \r^ax{sќ2C.:cM:R\ʃl ;'5)srjRe<1@2II dt߭/d1A0 bl[?ؖ.(IK0ULAwp_܂`n A XMyg@Sl*[ߞC^R鬀6OBpi[eQ /Ǐ`JHslI;FSm%(Mm~`{ˎ_D2N/xF=3yf j5.D7sd3@h: I+$ͭ95 :IJ- :Dk5a+ w9 &Ifn2JEIͩ0Os wVl9ui: đ`Gi!@p+`tך`V9:3#an %\y,14@8H K<3)%K^ h:e ,i Ŷա ͟d/T@@-IS2Z `7h<mjkEbg]]7_=]'/A#Ҡ)w׮RQM'>xyjxCА{ \R C@8o5p&Npby2U [+k%/u IlVBl@wfeyy`=v׋ےoIRN`7ѱ.QmaM.SdGb?c~M5+A$AD»r>xl7`)tm$E~]ˠDx@)2@` 4CM n< 4Mٺ Et)'8;Abeb >p$up[@M ҿ [FI,&ԛ HHZ^㤎)< B g/@_QJ ]sn ^KY2F5@H.Tvmhv[^>Ce2 [2yp28̛<џt6[c(߼' ݄SbpV;V 妷3H/"H5`_jTnݩ+\d$Hv:e= ^ ~ )ɆoWF{kV'{^KV|}PX_3Aօò*+e͝<'-uKy{r[?Ǘ.~4`UH=3ty6 ys3ԓ|?޾˓ eOr4Dk%#j}i>eߑ/ٴ:P)N1@g 9,_)!~Pܕ)  @JQTiԠ}VDn1M 7̗@~$x%#<( eLpϺ7A7iZ$$ hEMZPs =ֲ 2Mƃf (y5xr;w`]]ZCnകs8u<܇m eY(e$R4L5Ȍ  mXy-.zK9/'L%ڞ`9LpD'h$I6;3Z%032i^i_@ͣ w6IAF0?KUSbm Hc4c@ [n`ÿ)Xh8#  |2>Z:^$6&<1 9sb`^H3y/SSyh= v3$2qg@+ܐ!2 lB:;ގ]vЂxxz'.h' G%1W➱AG>$Z/kO٩Nf4)ApCt.Ÿ"; wmD:{_^t 5Cmp&y: 9Sej8z zw&0l[?۟A'P_S,.vi~j<[mtõ ()l)tu[7QPU@P tQy&bnG)Ɯ ydF@`A ;0] JRN 0lRyHp9wg@_49>W]@0J=zLssI4B詅Zm@y=5T @1>w Z E3T _@D ԐN=ܑS@MIKV2If*cR` .> Iox lq[6q҃j\ p5נdD@6 J8Q&ֶdWe*ޮ㴔 +?0/(rx'^ !ژf=5l*e=c=A<_g{3_,U@?nKC:)pnxNxFwyA7`򟐷Pp`& &isH|*٩B .mrE;}h۸恹rY{ -{tHnRq!W H&& %,u6e Pr&ЩO׃nпN?'@&o{$?MFuY&>^9^I$#yݧGi{#MG)4'] LO01Zt'y(PT S4x$48NGk%sF8:Qwo[5D|:#&TXl|@I', nC^h#AibZM :T$j ~d@wQPmaoyn|QawovH ݗC ˞uxoj(yWx^P=K' $_,!pm@g:loյyϰ'3w/~W5{0&7 H.yXD'uz@ =&gO yh! 7[ׄ+g D_?,GLǂoɏ#"/g-ƦL+Kķ=<»޳(]rv~3X :@;L+H=@ y:w$#9crֳ.8~f#,)&eN.pi9t1AfxE)L+쯶9YHw5RJ7y܁`h %<lK՞E.gsMSL'crN+=&t4Zsl~ݭ dif. ܿ`6i|V4@DtNy@z=j@a,ffwA] \ 刜 .Y z7z(Bi*Y@4O%ͨ}awsh~ (n*[4b0L92 ^L 4ԧ#Ād4w$%8Arv4 x\p\84yMjӀ >2䡔&N5UmuEJOnM` MOJm+z\w I@V1@ibfC> Lkf,]& Sj[o[ z3LZ`iZ-t!^z~0s'LOXC`UӠ p.t-H. % y OXZBmjh8&H/h&0̦f,ۚyc;skIC&7_y7UUU8QxS> awbxB"*69rZDIǍ$:$r" *畓Bn.Ki@RHJI j k "Gֵ^rPb@@H]s얆Cn;tv<@*_ArFCAvSX.jiGum c4s9&)c2g!$N 5Q5c-m5\e"eA7v=;-]Al| @Ki1QYh` ^4< -h"1PG@kj] RAK%0 tнlv~<),dm}q·>ڰ>9KD5Kx7| ?ygdY8N~=PI%r d;@139_NE; 7}z59ZQ4 h@H2B~L$ϦEƙtp x2B^T|tr, WrW^6^s)NrL 3 YI8f)SAծ;0148ju9+7 A׆\I+2$J> ;NYphWhGZt ojpɹ ?!u-Mtt&}?, 6pª 'l|{@Z_wÞ'칿gQu [7?|+rU[-`i_#E.rbd/z=uU8m01&)I,8[L` _Mgl(HbY(@#}e_޵u$n;HYN 4r@t'Q_hz$) ֒WK[/h9hw"yTaR.mxST W g%:1 kp.-Pc :8^p;Y ? di/AVIݤ5;6n֮9FʀshZ&LJQWlo $Tf-Dr2g<~WGǀsSHuo@N2٦3ksU-/ Ev`9`z4K53PNn (K\$OmE%:m򂷰kxZp 'K2Q (?}kX $/08Ɂnh8.*Q2!4 pА:^~5 0'U&L8/ m oAٙfd= \/G}z7k(!z )X*!zEz}f;9I ލΚ!a^'l%_ x2S){6v%nr{Q^.GrqɀDWpzz8!0. W1 :3*rRJCi%%+2Ff' = VB ^g7A W`y&#Ao9#g&dLd'h=- mZп[rL6ӝz/dP奁r3۳38BzgKW0En{|tnok{ )9 :W[0%A=y rEJ+4PpҘ NiОZ\y e%M޲0^͔f4M0fYZ_#B2it47io^:%H"HN`q5ܜC0/Ʀ){g  K(IQUys2 7=?LFir a6??+Hi.a8@19/vb#;f#$)C;h!7M Qc3it!3$+HBI+AfF o+@+?X Gbfx-Z`6fN"M[ YSk"RONNmؑzYwÞu;=ncw"d|~ m$q`{b- J"09Lj TU! p@u;I;M@wڴnw%J? W$C:آ5-liaZporh))1)-`}-S| o1}ayq0 K86ݸbZu_/G4qЌw m“ L C`ԁA!}^ن y%GL^ W(5 H5]E4w |:O9iZ ~'5998\JzH/AIYIFdޒ X Ӟ|ؤ(ff,fI.wMڞ BGf9hM.b CZ(A>ν^")N=@; nW7M'ro9d΂̬[S[k;{L>) @L d/?`۟5-ּ x0S%9tfI /EE5ޗ@\Dl؛`7{ X'mmЙҲ44FB2 24Iқ($c(\HtY!I>Y}AҮ`8 =g҄vgw67`xM<+fwW6/%Un MmRǽf!#9Rdu&5PPDQp0q86 "M$f@zpxyPW~ $ydi-\(5t:hYͦAf:x"3v=h;֖V`jMnmCF8s;H^0=] g(3f;k ^ r 7Rjb&ފDhRpaRLI xFځ`^\W^|91\ex1iE"Vãϖo 1?GBҤI$x,d,16y%+CX\54{T{xs瘘+m YJ/3dt2~M䖭+OZ?V7DcAY$'3hcmuYZM&%A<7g 끨1K Df_KySOq I4\1%3 O]oV{a#0stttAoizHp /mi- 2=MkZAi+ЯI@ٙ<#Y]0+Pm,z/Z`iw t fYm"I%|Н`)rJKݭv&hkshZ $ 's9rH%BZ x;.g獧# zN L/r5癳Y" /0e6MZP?5n9'@,? XRƀ]o ZhL^S_͏`4DZva^IbA j)62L$ KOrD9Ӂs|1h8+t18Nt-x v=yg{ϭf9,.T4[LqFJ<3@D q NF'ITAsfw9gqx2LZ3sAҙsr4^=0 `d0sS #&Y q;e>o⑮ gE8I0EPI4'Hę 9|1 x@?x{)g^J pu;: HjqU}2]S3m6'2'U?P;}z={쾿N{|+пoRghskɮFA6A*}=q_/,_m_SAIoճ8u91nu(QGGh$s4KD䖕f3h h`c2uNLf"ym ?w +p8k:|7`^Od,2"Nk:`7X2KL0M3ƫSP0lg5 b_W A ")%$fk{ ZN7LgAZTRX/RE`(3>h>,?@ފ_>''7=j(4q;ׁD$# qf2UBd2L֐ T `Mxes0yMI !cTʨKKh/@nM}NNRM֓Z/'(_B滐n)RA & ='\~@i].pĬ4mAd$I̐%rp !U@.G@ ~ +(0_{ ?:g@p +e𓦱5@\+;tWlF9Hb@6+0$s#@cKN`#T6?\&0Y'f@g0[mq'(J#бa|/~^.x&HGﻀv,zf167EM>psr<Eփ/)|H?&qV!S!ѽ dAG i6?@ coB\qB٘~/DR$Nz) dhnH BHžu(> B,d_RQқb-YzۀO#+B&d(o~mɒT0NcՌw<4ft*((|Iw0)Vr T07|9jܻѓ;g) rNչ$sNsz& 2L~7f|F]dkڴ`^;C` l[Sԕ`ƛ&@_.:Thz]ǁǾq{!%@rXKNe&IgZ8Ovl0gyh^GI`t38\LAA l8FKa $׹O3MKۼ D;^P* 3MƁY.2h#7:Д& 7)Aݠ<3-\CMLLY0LY]QԠ mcbGU 7\^v t8rCZH J_"] =ZdU됼Z&@`ҀJ f'@O{I!:&.@^xěxOJM;\!^"2YnY`Wt %8 WfzB46#p-ce wJ#ؠK4r֙ 4-em̱a7AֳG{(Mp\f:g%RԴ:џd>s̔?Wأp+í" sRdjrF+h.@K3t0^#GWukxWC,3#X^Hy-ys!hL>o4x8 _F=[^lZ ]xBB%K 9jdWH2eք) mtX\fr|Ir۬7!BBJoO?Sçы C4SC 5N^ܔnp_okFjc}ǛHNrM8pz#*NB gv9Ch7 ^z3seSLzBu4}p]K1HBvs3@1=Nowv@8/ u27@F`K 'v NgпuF_ JRHNM:rEnm~mܡVp~v8>0~mB@ J% gsQ@ZJC r*@Y&,c6 N6ܷuC?o7|3vأ)rxeX9ps?|vyI"EΟS/="rw &a rV>`oG%( X "2NWÐu9*qg?o/!_Wŭﲙ d/|~ ?Dׁb}!{LN⇐X脤E+rXb@viBpVW] \'dyۈg#wûk~mdZ Q|7/@J[SJlrʃgwp@Q2#8v3PTN)ͬm(t^sT0<4?@9Hi ՠyJlHTfwY5w wrM<=<>0LzV"e5IlC@n̒R <<} / z.MUt!AJ6 ^0 AaZe  Xb6)!@%iF7;@fHWirUtп6um 0%R_.K]0LQ >6e!0Dptbe1ZVy`[sY!+@~67-J^/'3jz6a;zw9_Yk;3A{z\ y(+-ZHmm[tC'hC!9T0uG~)`i)- Npu d+zhA>&]v f9&ob "q/y,FI@%_yI860H{ #|;Ep7}@?Yl]`hgqv Vպ ">pNI#S hr 8J$9fIݯ u)b;`k.{\b6hFj]`<2_e"5*fzBI4mqbCo&4}{~pB[7F㚆ûo( J^8ܗ_ڏq/7.bz@DB`7@Aw u>mmkdŲ(Kk@ҋ_V\@ js 8M=RYΛ !HYaZV:HK!R_n$ioL5v҇ Kd @Wpf5i.Y&GdHN*A~aL,#'Khc@O*zL>sn0M _J?Y{CK?l4@*#/༖/6 V~j2k5 ^f9H77Su Ys m6ی~f6:E$@s4Ri2Iޚra2jIk2D&9X҂eZ_ {ӮJX{\={xJ34a@J!൮xj`) 0QGj r g^5E #d K)f{Uy&c4: 奵R_Z=L0\5z֤cq0)@n2dwa  BziI(f3"ARDԗ_#B)$i.Iz }EO?%AhKHz)o!"?cl/ BT-%,݋$s 4CS􄘿Dt|!up$! ,i<NI2l6w;p%4D_@i}N{Sc ×sw/ m7)+P\Jk9upV{y[@Рs@( (KfPc,C@J9$(c㚕`t6PWSNQhUy)aYZRJr3lW +78MMd3I[6@;AjB- ڄ'tq[6iÄ@75`,`He)aYBR̠Iffo 煳S$s}\+& ;K) ы\ImI> 98EKiR{lI>{'L]ۏ>,ApKZ>cD;=?/AGP2@ iOZ] T 8A_gΙH0b X v>`Wi [ 䭄I Ж*SM:pwkB`zIvY Q l-la`99`2܃4'}m+(Aǩcݨ&y-Ml Hn+424G(5e dlFnuw/ς&-%% d`:pi w./_}dO`6 [ >>7|WnT,pvwW __c҉4b>W&LmM-!pW; Ҧt{ήԃ@43pM 5:@&}thmjۀzիHfKpM_lkЂڐol{|G#п70B1,6п6s9VkS@XyX; m I0S< ғ f`f8{=]oԤa/ O5H$I 6'u`OoMp>zzz ?@kSLv1dily.pd6mALUd#y5)HP{39A}?% vp+Ë*/N[' _(Hx,ꉪ7x2m83䝚`48iAP.dd>cxh\+Y픑`jSrNA7 `@n!iZ@>wp&:8cA~?)\@K̀Q`pCv ^a{y)ρp‰yw`ڭ6";߾{F؂ζǬ}jmQ622NJO tu 8no]eOYP[G/܋.ngXua; [ЮcSlYZC:`5؞:E͵}v+z'5h mU ߀rӠٴ7[t wcm_PSh0H7 ZmZ{מ]y+A>8?9_$##h7W+ۊ`昆+OK`ex;HA DБ 5;׮֣`Ҙd4_Ss_ `ܑ; 4HkWJ33 $;ehQF5-+_k1.l[t?AܗW n/;>5mA--j [XNv' pނlcr7@k)[|}o46nɀkIy: mh2W${z x/oeg[>`j(8Zg V/3 sښѿ{,XȵpQc)>7|O'aW?5w}IV$Eee/]TxdsTsA'=Ls%-A* 6 59LU|\}:pE-򕊟6u`;2p[qЁLf$2L'$vT6<wbr@ԓv!HI @r,?Y!7 ^)*j}Vµ! `w=/M7y_,wP^3)^ȧ'o}|!$[;ւ9q>V= /5 q:`ښિKT7?.7H22b6w-pSҟz̓V13e(ؑjۄ;U1m-/EoKB&%l7{7]OZ'=$I4{4՟}vNa:]熃AT^\ZPKkc2|vr@IbRY*g3t .|`ںdLfسXρ^H h%K[E{ *>.z9etG:ݥ9xy{M~S{ˠguH+$3) X ݠ^} *^/1SeS/0rmikyN[{@:Џ`8L;`$=e nBRZJNSW߃<1+gfŔrڭ |TiZUD@SiC'm:+ # S 3iMA>p6jf`ҿLF񄃠39 0!bMЉPoA\y-)lv,N y#"^l8P"R4U.0Or'i2@;}]:&?=Azз`Cf hͩ~1H*l.yi&@К9w ~3u6P4X`yq ݥ, ;39fƧ T޺lN&XiP;Fy?<=j5 *,va_F:=~7#;u5:c0\p.8Gˠa-6zkCmrt &ILIz2AF&dӺ@, oi t˙:xICi t.p't P {SN|`~@lr_sxKqEyG@ 8eۺ(Հ7@s ex@n^e+A=-1Tj"bB2JkԷ=ͫ!Z`i]ֵ}/TxeH(uS?!ܛKoͼ3@OiYgv9#2ZB r9 II(_Uc<H,G ~ 褁ufRmHYݼ |2dB4Q[ KCԯ# )ZVjC܎@_ͫw3)fBn7 - xv^HՊ}~p@i)ۅ &4*T.F R-78'<Ci-Y!a$ɾ.ho;3yĒXn0t6jcAR]/hK[:Sd5\Cy ֌>œ- )D-GZn34 IiF-cŷw WЋ`iMi: @JI9 n;m)a-z>9ww   $h.!\]l콮Y}{AA3}?|cuPj֯q ?!0Lu%`ۛ`ߘ2$FJ6DgEv-v!pF (srJ pE\em *ԓ&PJ=XzI6CvnಸZ6SsӞew5ڙn?3]׿AJY ?q4B)4n ŀ /Ӝt:U5SBا<@~Rtnp4.nlm90\0A=2Lf XXAffPRS4?9,fO 䖼Kkm+m@mH Dၝku~d05LSAZ̒ܒEw4ȗ+pH~bB~I?+4 澬1AkmJks l. Z9U-!4]W9ntʠgj@}uf `+ I潩AoMaB )aþ 9mJHp\zoOZ@o &Ĥ6@]Zz]as]ez)}ʧ<|Rm{UwtcŮύ>O?C_lXw6E{l"rsGVKĺ4܇z E!QX!άgu: MLT=͂-*`JpSd,%:LեvTFR O.K{l`H[ij7-1 RGH>0NS$l6IMMwGY tP_4!X?8oK0#sLq$ɏ]ָU M= %p @& 4&% XkSۤ`_G RZ̕Ց"Z﫾 #6G؂` 4L TcTPvfCo$&`^i+#}&)ed2O:iIwMfi&3$ZQPym$v>G9/wAk+ e4$|#7##% ; IHW \¸A{h^ hCz\7Ł4,kYGFkbk+ T$=D? *#Z>& {`=I$nNX&d#j渴S3g4M )ϗc9Jǖc^A_M6Xj#^5)R uV@kH76X: d, :V[ dǥSAژp7ݵ/S )#@ k*lwd%#Vs2e@u.v,t_\3d2@O?؍<VrU3)gvY,\sK+ *߇ \ ?<(K5T;87g"hbb.@f=!#rU-Ezum,MMs%&6eV' #nn5d Iiu@ߚlU:Q'!~ ޷^3[N+)$Ak<6nxӽ_ Zփ+*.b-q/T7Мܒ-fh^ZjKd֏xR`a(Y&;GodDKY: ird&7VVЂNII"l2&QĀus?H()!OOI~ &s#t 8;DI~1*݀pz9kn00 lI`Na_⎀&v5 W@ YQ;.J8@]+An +|BA>Id 5fwN&*z[fzp==wLMҤ>_IRKjwF~ WНnmI? LAxm54-v7׮ |E4*МVtͩouxo\l@Hː N8er\Ё7S椹7:%'xvfeCzw/w;PڥjrUؖg!q}oy=Oxޅ]|wMlQ߯:w^lpt;$LBcB㇖a q'WR_tUw^#AeW@с`bYsԖCD䝄l* TFK2q(WYCLf 6Hg43M`8.0Mf tԮ@.6ϧ\3L<0Cf ]:l}R?_ ̬AIff;nz.5X4&w#`HY`;w@hW;0LSe,ź?z@/C/>xG>0\f紞6%y$H3ʌ<]c,4EM0LS[/Әw`R&\;c5f.1}2QBd xL3ț sdQPaY@\)~H4 윐m@kw<2}YVPuiAu9/5mS 0A;1׵t9nz iրNU~`f3% Ij-8]ChbD$&ir uXYJ9 W䥙ZPo:P[~6b,f3Uz *7wc6RDFPƜʱ@4<>Ͱޡ׎_޵Ii$xf Vi!v9湙&$2_jS ."x,x :w} ɶƔ_RgL0i|%,;Ԕ*0Ϳx TtAew{V3~3C@P\e;AABOѿ@[=>he-ᶁ$<8֍M;~zQx~E֨luCUbŞt 6twL1>|^@0-m;u7BwlMh|okQtYw7%sᠷi]AH}$Bb%5PmibӠ!CJ7su A.STa{M+d1 O@AjYb[M.ԿAgj\-tݠed"0D:+h`F/L<`5+-R$T Ѐn.!xk̥)4 e\$,سڞ.dHEy'>Hv A:OHk }A hJigu` "Z 3{|*`Қ7HB F Q m4ӵ QT6Mm-:4b ȴ7+Af҃tHeDKn,d1@45+ N7ÿ@HC+vl;op]:7 tƺ.gpc B*IcrF΀$l/M 6d!a!f. 󫀆jp"/GZ㙀9OaU*CȐ@/Za/çV0jH伨a']"P$;l;UgC>UT6&/p'.zo9*Ë?\1hHXwut͏S>@-N@x7aE!Βo7~՟7A ;=q{k<@U(߀mu?بSA Dy?Dr\!Wؕ9m`^ ) f(#@g!70w7*^ax T^ZT`W{A;ɟ]E qLUQpe}cjJz] +0LzUv7 lRpg7#~?2MI"I$ e}rsE B6\$%sFl6CmđL'Y\E$m\' X>%#0L$VD|,~9)'@҆O'c`f9x$oV7q@AJH) TjJs5ptKcN %MF a]m !ٖdB<ɞ'( a5~ Lp0nmECs@AIIH-~8ecd3Q{`2 )qҝ[Q@^򋃦wC#@_"@7pf d)#%@@{$e4 v9,Zw JGγQSa|Tl /0'@KY  2CRy'cʘ& .N^@x҈Ѡi t$)w0=xf09 m0ݭA)] %w{?' N ZM+ fer dYmƛ`ڜ!v,;D%brp1(w s@${(RQ( _2H^<9ZUԼ@ p`h;ہ4{%}JM%@P 8uh]T$=Zy >Sϖ3%mw#hޙxeyN_=lƘ`Φ*2G悹c.g@7*Q(G\Vt++e)hb- l7#%YD !\oFwtf?^s78J*t!\wP1 z@O(--@yR -$T- ,PUЕvIAsim~)uI%FrKE\FO Bb$朽 KD\] <v'Ak8jNӝ0PW{0lh}0mR Ė &!TWpWٕ7UoY\ & MaS#+a3]Epi]E\ +~Yzz 4ӆ29/fMK6- =z7<1dp[siR`uhq-i@77A;9 SzKX.^?z⧩D\\uVEYFʻgܘ>*S\D!|tXв.}jTq#DNXX#KwR6Xoy >|pxGaA%4'j]4PR@]:T; H҂! zR0FNIn@O~}r75fKz\W/![$~$̈(T^'n>IzCA_i&} v ^MF3[Д6y@w6~*at05wFp=t f]c"HrIMBIt\ =@Ls'=|21DM.EKA%7?a)J  k} n뎂 g<2@5ACо 2 6C@ ч>'77']Z4՜@}iFnp?7CAJaS䴙)g@3iZM56*@r\|Ќ.{扙,]˹INg:O.%}`*t +LU$Q@\h0!\|i rdDff%J'\:H.1E䡔@QA=TIL~yZz&iM" 5L枷 t&qAwWIN ~ Q@s.!@ΦCdn}s $1A3F-/NQg",~{n;x3 [2-i&]orVuG x6xO~/?憴DdŲ 4ZA[ B $y~x0sd yC6qliﲃfv͂oA@~ Oj!6e'@NK73=$d)$g:ҽc'>ͤt(Їr~-s0r٤mv0HCI՘j%A :d5߀[O )' d+)mť<0O@A{hW P7v-❎s 2x+$\ I$J!3LV+Al~>G`a`!"B$%_ dԓ`joLДK`Vىo3~B0d P 7zSh(HS85i 6jˀim<"  _,e|Yl|> \q]u%\E^y7Ah:Le$Ra|RJz.p5t`Ts<}f5'o@J^Fvkpzjv]RS 4M_34tYn!Mu +`Nf,F-=ANL潉6&/[ GJ掹/[5>~-n( L, jUZTsjI\<'Ce М)@0`x~^ \▜3A-ڄ*_Lp]N2Y"rE^gۂ3; lޠ <\GkG- ~_bs[K؋2:G4NfRƲ)Jo{[l%+0lSh[>kvW ~`\pg[4y$ZYsj 0LN3H:#mq*ut裱_ɑ<"Ŭ+`o/OWo}j\DLbƽ.~-PZQ,|oKIq-Ml6iBxt8 PS?.=κzwc_OJWp嵢+ <7t'ehR|g~F3`Kc)-?Jc0sxp LBb}pt暹ii"m!wfv:72#PB~``p߹]r?%0 /1-5Ah"M &%L~[mDv= v=a9oΚ+ *łcà5 :5toۙ E%PT(M05LbS ; ,5 a Gl`=rͼs®Aƛa2t';`ƵdYltGة@ƛ 2$<إL.^ ^'^10찐 /=rVYKrB,A{^r$ UA{iwHB [NԠ9uM 9 Uz5 gD|`Cmv/ CsНb +M/H3VJ=p? Bu !?$O%O0/`Y'etL9"OLV0K_ YuupI +B:_{P(Ha3d:I $!A3h 2Bv=rtp3@czK,PD*XupUwQ(Fy kz+; 8^Bmb K}i74- ]M0 -0Cޟ`}!- 䗐E ͬ O4{RvWB Az&ivI%p~^vm.6x;8\q튃n; q9`vЃzQwn-s=vd40e|f ĈH!/ Oz vVdiz?_ Cue@Bė@%"+v~-O3"7[_j8 ~1p[ $'w BE0L= _J/lL7I!h~M.bNW_p!Dwp>P-![Q{%LWԸ^@^.AJqڜ]і&Ce fyaƥZKtCAL`HU&`|0EM 7V3j2ŎC@~Q8]MV7d,4F_45SeHiiXxxZGR7SMf|`w4Yg;wW>3Fڛ sb{.cWGt5S ,0#:ТZ[ $;ȶ3-3+yW./74ƃMa P^ j1c{^1䠼|I]'Z`oeGSno;~R+ެܘ琸>PիViwg~4w>뻦OQ}{!۱RE%` Wy!BCxaW4׀Hvbh{Binf#/HkrZǕ #6".+ ZQKSLYaKwg;}fѢBRhNo ]J`O-􇁍Q6 ~ lW{tw]@u 7t[}Ҹv MG xHzYM}} aɘ*`xA!N\~ 0MO#g,AN1:H3Ьz>OG0L^Y!E3)MFvgNU;CpIEp1 yrNtWwA5 fkwerF1U9mzGk 1;LW˶FY C*D[2Mv=7bWAD7/>qb3J C) ?ǙPhxIkZ-}r[,:sƴͬ3bkD0.m9gIؿ25%$1 dI SЗ-V+E #epm:{[q@~`)$kApikR1_v@CMAװ`H@z\7M=EV4rȷ (r1{@h}FKp]ffBh?6>̻)שp #₝$`ymvj>Mf'3L p~fC p=\b.[&t5 9M6W^d̓i,`{z!2 4ik^M%=% ~JCA= \4>r>D%zS"#τ ?%? .FGKٵ3 Pi󵞫tגZ乄@k^,E d\.)a|Ā^iKt!7TP4~iEܲ&wXM7 ?YN16RjXÃE像{>S\{B:!@ّ$`j p/NQH,@> ),8f j:nZrǮ(Ʈt~= )&Xl\h: ! 9%#52 V 2F9)K# T`6 zl ]r` *4pwWkk/mzOfiEnz؆)1%J E A'j7]9iJӀưShIZ H1Igp; M543M@qI4 ^[G7pC]ݡ'm ڇfC7 H H+ړDI$dx`rfh36r`5~>l1}YߠuI2`f|#$1;[ʦXryA6K^9 @Aw/ r&!5:DO_ fie&Ynv?-!v|ɘLFh$5@sHW;i-Ary}u0Hs̷f tYCB詐3!81twsp\BpQ7|]9([mb01&mXM k/8<e*/k?[qџ[OW9$'ͬoV|BЩaC2?k8D? P9P#HL)@jJ7ˁHjvy;9a }e|fueRuvkV4Oԕ1TZZ:iS&zIσē+hEnfq`.m+."[@h* ,`94+rB|25YL+E k~@R2tw\uu3I8@+Y+ܓ.;94Dj4@kRE0#붎 bh#~ Gc g% ?H_1][Ўh  W`I1 tc/XhҘ LC < h\Z44{ nӴ 8?AlXi~Oc#ew 8&䜛yHPjY$B 1S P$Jx]Zrp+= "dHgfNEYԕߥ;P@nKQKЙT%@~g^J;Pd:d()#j!7DQV(&l 帹"M,qUdYHgж+#*$PT +UHj>툩%?s=zjL`Bj d p&=aʀLj  潹ktrI0Bdmx O1]͈ 9_W lѪ@Aw iK $Ӂ51Du2]_S?[4?iaWĚor&ƒC_s 8Y 7 ħ ߜn\֊hc]&mAo-67B 6ڞ@UiA0zsX0ցye.w5ŁlxMVpsiAWՁ42(H^oLW@w l~\{,HIBʃSRt1ץQfwE9t\;=I&٤2z ,y"eXr,TПHfo̐fh[=A]0e-%5%ЇI"_= $dA~2oMJ0) 40~m2pDjqHKsDz8G"As׺ HI]+咁k:H=ye&Ak=i2W.#9FYZ05 f6Кߙ~_zcXKJfPзUky%I:(,?9Y> I՞@Ki- ^m3-kCLء1[tAgks74Rγ0ZRk+ 67MyxÞ!I{vwҠe+C׹O ,w6c"̂ENWƭ7Sxηغtg?_Tl ݾ"gw &X \Қl@R(M= j~"hu-G*2G&H_ ? }D30A t 4gŸ we\qB7kpHi+S7KhZ&cU uR/8 \a@o񪠇tƂē䍈<7Ro_]vyDJaN]NzA7-Dx!f)j?B+Xq՛c%J/_χVĖ"F(зa P5WرYoPS+CH]!qAH41&7$dKf}8=~" 5_$!Aj7WhV6Jσna:2<)) Ttմ1S"4@Y,d6MIzZn>YЗT;o 7&CSЌ <"H#P GLYjiyH:IbPX𓻥~ ;涹 ~]2Hm)En?A&Ǥfj fHJy)Q ';̰CXm{%6C[ `#H@"RrU&1)%'i<lc.65?_b pM@f9pN\0? f]9*oAFJ}\ok`;WhԟuK fdރ&Nk &M̐O AhPop܏zC.@U-m`G[k!'սq0| e (/Wd; .{]toCdK溹fBH[Vs/ӧ;G,aY+B?sHg7T~-oW]NMovl1QS]w==ӸO_1uMq'*N4| YZu X0/xG cՠZfy .d8 h'@;k=5nb,5@ӈn\Mz kEL3K^3,1@ZғܗSsu!H07`)QV{,0 ہ' ruЛ5//y.l$.( w ])c٨@Zv=o&L8SKF?گ Md$U/H\+8bdZQ '4}`/TrW;9jvS/Wf _].hc;.k36!@>!;J&`e7[ 8%eҠ.[d<А 天| df&؃6} ?t pXZ0Y@`Ѷ)Ari0۴=-V. K& X2 :<`55;COiv!=+ C I)ex~ !K\} H*eu2 &%p\{  :Zsa-R2>K >hd#*Js쥽|ZH p9tU.uM V^#ElD X0r:Lg]*% 6O0Q0 _& l)ż?ֿ:u,aLs]AYH3s*4; ZsoA:{ bV- 1 c~ )?]Q,'OȾ W,x0Oļ !}<,gHe Ԧ7Pv_hxMO`Cݣ.c} RJ6>HNN(3fpS7H#J#AR\*A n/=pS$->o z4e֩h|${ d$Xm.Mtv8@*Ӝoցz+kkG<{7ݑgʿo1}7ҋ6qz!Cֲf~3' '!fl؂`r˷8zI4B3W}pe5}^;_j" 62M\zDG@GH.$Lo.HG=>` /L*7!zZNw`Ӄ;Dį,s_^:x-|p~K0MS s.)=sॱlF_E4KUj70'M:P*Zҕ)xx% éol/xs\(8t7NC #1rN= rUn :@cz+ 6]n7d vp`¦v_h>vdR-;-w 0=p7 lF;.w>k@vDY22#[1VnO50L:%=/ Kyi*Vu@vcyHޚXЩ|(H~0E@e^qaMM>R$]OdTGK4aa ɫ|\ >HoX^~'MdHdփ׺'AhF+j]1uA,mA:K$U3:؋bA\@ZЮ%`I@VeR44$T+R:h}pS?K&%uAu7RVJ5oks ހ}Q9߿=>܈{+#VmwѿƾF`Cv؁&ix).[0 f}'Ƚ}a˜ů%T X/1޸#H/sR[v3&XMO^RǤI)9x :URp/G=pHr++wT`lM~'Ÿ7I%e%a[㶸 MmV+F\#td7]kW;ݫA|ϏTo pnbKks`!m}T ~p4"r0yD?^wo#L@h`trw] H_(9RWnc\ 8-e=M ǚ1{9WYrUj{q@I "R?"Vn ZgCInn8 C"AIoK3k,ެM2He`3Ga.5H] L{=3uH2 \]1Mc^Ny-c Z[d0hNWݥ]2$Gx +a $y >A!|G8 .ƹ VMa674%hN`6W}`~ѱsB>d#}&1osE~ѵf?ust(>oazQE8uoG?y!;wUyW~RI#>BČ_5R'4^ +>ԉ!W e rARGFހFi (/5f4!h~mjTqD$V0 ˩5[p\{W ԢH b&Wߖ'<.-Dp]\s= &I/3T %ҫd[]Z ޝ-L\9W?x Lnl o@mH 0KlW74sKA' dK} n;fsl<5q [` HW(@K7 ,f kAsmA0knzN/Y0ML6gA{WRWAiׁk^mm4FCAsi-҈x:OAcL4L;WBGO4S崾pk` 76'ZXKCAir.ssH!3 F[%)l/L+VDtz5`ARٽ)$35G4hZgiB10V@߳vM&T2eK3˿gОYfɤԮ9NjIfI,SXCu '@/i@i/m.@l9-.9qi;7"ӂ= ަ0@ijddAZKbMyU/znH&!u%,Q& :un3<@NrN-)wAr v'. 1eQhCRj0UDnĮ~`Sf/DYq=7O?Aɷg q5,dhB2 /$%j|Lu@:8^[ЙХݪbU$J<в?{rjoE:D>7 ЌoMBN7sA  _ $H6"sOƀ~){Dy|KJr{F`f `B,ߔs>/A/Im:5ҁH>,A5f0?xUl3/y@wn*pmt8 ?H_vJ>zx ݶMQ-\2x  К:Mb8&~{6&`xum\9,%/A^rW֛hW:'MsGyФZJkxԕ>tACpky=b^繲5L#cIg | 6 L::Y|/e:UEN^ '< [_N ӤMl )u9e0WJ]Gނy/u G&/%r8``w |#ifܻz8L ienL)IAzvozB`d`^`,[/!CƇLS_zhGM x-WlMp[W:].k$LaA0W2$!C_5axScǤ<ɂTuvWGܠո]RƐ|҄)79٘D#FS=bě)U2C;89BF>9 0:A*b: V(UY+߁r3Em~gmtReAIŨ`vv9 Ѡo5.r@nQp; {~w: LO[4+5# m\UМz]))-$ H(`(/K Ikg ̲+΂@.\U3J@U.~Ep_n<A4g0{\),y%'<I`V\cH)I pC=ZL+ w}iq@Jawv e$%,z`9 O.9pgnwy.0 $Tϯ47߁d#/\vL|biFv ZR r RHrw]r?o c+\R$5m!Vp^`,Xm&yd@I nO6Ђ\KydGk|(Rik~h" Kd '>k@' nR9hzNe4Bϗ oLshEUR43\vH{mhqRl4ej*Ad*6J ^]жġ3 5ɍ$5]:AሾE7orlG-`>APM:7kԬ¾,,p v/mt䄙I#[)F a2Udn}Eo|| ~Mp cCiA;h#- Q f/@n -w@B&np'!+X _I8hCmLCVx'`Rݺ1_Oր 1lC>?,3_6etAvV;r C{=5t+G.ҥþ_JV^ffmM9x@0M)h 2A~ t36#Aj S4kUn5W*%g3 2`Ne L6ICgOypGUw#=oa-_;q0i'_O 94WůApF\6/ %4$ ̱9'i4EHKhuPHEZ҂ūh^vWGJHLVͲ]T x2>8/c~ ;EC6)$L O%TtI*3+A6Hb tPzTpE6kz/8Z $' d75tPX+$c vZ-Z,F3U 5EA02m^stk5E7跠Gxy`[j4 d>0J1 (KsL\=_>)3IJʛ%-u6Ք]Dgt^QwWV]5Z[p=Hpw N $X5 8Dpnٰa5"owoX5F,= v[D[=3aG} mo)0Yk}vZ/p=ZWaӫmOUvp?QƁ x{uAgz2ԕ2Ԗ^) ]u)v}X*6Fndy% w:p,ގ: vodzwfĵ75`'\y,`ݤ,4mX\ζv xR5t1_YGV͚ M6&q(\6 >AlzShR`!{,"%6xU0/!<.{W~ͶZ~~V4tvBݰ9)*߂l=g''xݥ[k >o@D<`Gށx2Cejm M bN6xF4>m+MAomRHf"xɽ*Rط7^dhH}.W @o8h9- V>@b+>~7m#E j==+;yt᱗֭[?gct>_}_ԫ;nl*uߞ zYapT7=<ڻB`vAOCwqċ=F#ɡB`9 n,vk..[ VS~O0v d| t3iA-~ Kel \pr C#?h6N?O"d@' MWp\ "RMw>H^I-%p!Dd`e:ʃ.Ӯ\j;dAV2;!WխrQ3WM)M#JM\7WwKC Vkn t3W+*ӟ8ЀE(EH|®joVlMP /(-9iig,.e}9+9' ![-ue%dv #-wnײAҝ-u-p]9HfWR^m?a9u rO&1#GVt2nvяŕeրJ< RJxA`DPCVtIFJɗ`Or'q X'K{ Xs8zi@ɧ^A`-`X>cŁLY-rXz҆KvrlP6 sEkdw=cmDeWB+mՖ $Hf 4ͣSn=WʅKU~~ Aք8<)Y&߹wx i?^o axE{Y&Gk.`E6;Km!el| 2ӪKB@p\?.Ae{0rFVKgs}OBo&i7C`k=)2 .(n|unX)NB@uKa ;$dY+qTW_*D-zXYTLnkpJ@m[;AXWR\- 4 @/›BX@E 0nnד:o?-?{4Ju?g,9,q Ѧ@ }3ށ\w;r .70FۂzzNp4 Hu}o,<;tQ.@ "H#WX@RR@4*lQtKogHH93΂kIy "eدCCS%q㽳p1. ކ7^ 7h:ޚ[&0i<@[C ?2NeXdzõoWkvuOt\, \ޫ첃[AЇV.) ~07ڵjeՁl*. #rw us lN`fXŵ[ȟi(oZRO 6)~IBeo= M`=W+ǁ i`-˦@K6kV*p&8"G\au.pdo \NIG:Jw@i-$NFB`Op^ u &;6"]ﯺU@#5?~ VYwMtk>fs-]oֱ Np_ێQG{_4Z$ndol㠑:O CDqqCܬƿ ^-c ItBT wht4HZ h9-VI['!VЊ<f2Q@eX`+eq[lGKEzApZ = E zxF<j_$V;d[!rNzV߂;n8M 9UI- I+ 4n;'AITduy0h;KRNRIyy#HЬZ m>В<=NQ:_BkY H|/9f. :r>si]!zU@JJ3b aĀKrUC5_A2KZ)1@L+rDtδf()]ݟ2Ij=p\okp7>w VdFz?MzG>p疀}N+2䠜0;D&1\;UZ&V kl.ܽ/> f|X6, G4ȼ3էHh E6CE5r!8. yY#+ieqBbd|n10 ;uE,0VT@"ކ$#1X j ;Y(@+&TKrߍXZI7v3i![]3dX!Kǀl(R# BF ?[bkvX hZ ͵0Y#`seܚ"2S&{3@7rv! W/k^5// `?Mς?'X~f1Ҷ]V|n2@iZ4XDIjM-(6?HR5`olu8P]@rJ<$Me2S;j)JYT4s@[+2) c' e*nj毯K$0 $$lM \6Lca"W??C ̲,= ")XniIm Ս)=g Eq/Fge?{rCp3ޅ]hh?=o@0m>qzBq2@<ǏKa@k4e{`}=+{E@HS}`J0 'I*&š 8@ 1UӿO۵ \rθBe7?|ot` ͢Ёi]tk t./@JEW b{ֆW9IAyQK5>SnHrڢ)ICjKGZZu!I 5l`,%'H ,e6xCwB2Gr_"!,MpnXVEյti4fE,1 AVʯHI2X-;= }z^h|n ^F[B~N YbYV :&:TtC` ^jKAS–r hs#o-73`1֎jXf6]`kH{-5 W,΅|9pxE$Z[~uuW[Q`-m"PXH2GvȞ{X>vRg8~Zُw;m;n9^~/'{͠u 8.h^+ŁT2.{ vG~hFb_q7zKGCldp\6-XB3Bq 6O: $ZWƁv9 d!)XX\|*9la 5~kpC `>>ף 4@I' \m9Kf{#9 @rKr)uz=Ml ;ov$ ȏNͱ66Vjd&=n >孠v?)Be'n8(/mf_ y):jR ,*:>BC|h ߁a]Q} R+ <%HS"c;bl+Вj:ZFs?DPsn-XzZMRN6}j,|YOo񲎻`8,A sS_KuK*R $#e rp(V6w7Ba쎝n`7-`ac^qtu`ֱ %l)$% .9 O1}X^V;~R4IVӻsn D<,n U𞃫NM:{@)`Iyt7>U=))]@r |-2Xw-oz{@Sb%%uA"q<;T$cAvi>&Fp=ܯ.zAn1BRZ˯.*DR':s`_h2A[Y[mD[@wEG/R?;'h6ˎr]40ކ\Kݽ 3`Gm3Vx H@!p \c TYA`K: U\a[\' `gt~ $q]A.ն`3nH~)? ~ ,kXL]y}GS~ͥ =hC5\!{ YK,(&lѠ}-փ횺Y^`)sY%Mt]p6޽=o,X; l #ہ]eoGAI5udOwk *g8vrl+w dKmQ{+v>+;%cM,hwAu5X+ƓILvhkV5!,AX۠k6 Yp>U'?yLS=H50ߛotGR=oU?3k(XhvT)54*bcWWox=t =A.",1@`]Iಹ`#l=ؗWGE!7h-YpJ+++e%اey'qrfu\d;co,n^#Rc@;zhWׄk hCW:Wث ~kݫ rf,"l/HIhMe !|-rc_$p tְIdY2) ̥YYR@K#о:վKaI_zDyx @atsO=A&I~`,=;]fDhEK lf;A/#kG*K掁 =Aһl%7U}i߀~ſ22/MpjAh:*vp;~*s=CB+뺸 k&o6so¦ؘނ04L])9M &/o?! gKo5Hb*g{ ^Qgy!g@l"+@:r_{Ժ͵CY  zd?N^`Y/ OtXS`<t͂\,[hCwR>pl5!`Wvhcl'vۮIWMצ`-M` {7z?x^\-7e*]įR5wUȏt ~F7+pkX " dx^?>Zꃅ!x$v̓-McEp&Ye ?GKNO8'g!XKRKO(9b;rJ[} ܱƦ{Wp]g2plF CԐ'2K5LȞ9 H{9d;xmYGv8,ojΜ) Pihvۮ'6}@9G5Vo 4Az/# tzzMrղƃIԩ$$37O@pup{ 눒vX DI+jH:#@#_3s@XoM{ozR@*.{V e N tS^oԒ\Oݢ8xd{rIƸ `m͡I4Hq-A4OCj75hqڮ?ʿW%paSAivѮr Ll8X {c _RѺ@i7 gE:M@n } :_k F KB#X P/;`kZ,g@j~a7 Z<=wrDF3pC\Z f[5м/ f^[́뱃cBC/Bq[G Acm%H}2XB"XskO *.+{_ 3Ma5ݩc:t&g@j[jKΰz кw v!sZ>"n8I$^kgޓL kܿUGS|<5~'M=rUvP4eZ4+z@aw޾)fmn[.οo- ^>= ^pv %* Z`m.WeL_]zCׁs<(6l't"d,a/pEIyL"[u2XGcmo#@}ld\]%҅&+|4{oM Y;'Dr$'dlf?}17?}z@-*P.6,]c&x{{3{B^O6Bll=rAӪ'Y#gpF[9_B og#Sp.Г䤌$ dc.g~hg{bkL؎-v\-i'u+$/xN6X{fXoHMN3XF@WC%kp]7G. ;9/;A^K'Ɵo#nXz+n 6@r^w t 'Zd6^vK\`760ρڼ /  eF6wL T@%k. K򣁬.pZu,G@J r;*["n)p'Rc?Nv* blx}+w^w]yt`?Hws< [M9 J-\)]v)/~jPpJ^Q dT/Kx»I lBbWHeW:ep9P𣽰߀I#CA&\w $B@RzP`0i VFdx=km?-?'@=7 -%GĠy|@G_DCYA3 zQg;pu5hQbmK,'{*{ϼGJ}ڀS>`Z;o'v /hABp%{ t$Xsf6<*$KRʛ쭆-? \c N)djJ_ROvNpPh>jM vwE.. WnPӤ l=3 dLAU K `յDW{f-}W7Ajh[%I,epBKSO5CeO+2Hnl:4.;Td MZ74)ψF{i Dg-@+jW&8q1'h@=># X`il"3@6ܗa4jbJ{`y5dWA}`vd)]i|!@k(YugT={`VQb%X?왝nsm!T`yc.#V)|snmK!nI~mߘxo|<T[9s~7cD8y4ixo~ocJt\"յ!N6Z4k;fhL <߽'8 p]3 (MA) +/nZ䥘<"H$ | Ce+ gyn ݮY K \J3:l@@ kVDK_:Bol4Mi- [z?1@:BGu)?"ԱGtsM67;N~HwK~ *5@_~zF̶6†OCn~Y6#;L^fe ec;l HVZQ$) Kc,c;!p 5ܢhZMk)AB]ʀ%$'Pm$ k:LpoԨq^_%J+*>M/=sW^V}_aMb2D1l3N~'_䑂,}k@*^4>$ %( mlVAS\*@ Վ/AԆV`5snum;b4 \eH)'sp'cgA=c#y,o2j n+m_;]6-b]W6K\IJJT7 u[5ܖ[m=~nk} ԖB8l6t&7Z '\@&KZW{a t4Ky4=&ֲ%}a 2gVKL-0V $4p}RIfp=]M~ Ge+ i >~ tq[Vݦ0 UA|Vy *H"CAi* .vAN  l`ڮt6F5 Z;VO]&EX_anl7vs{.j?.M&8jl9Xj1̓`ڷ~ &^ Xxc.@"a mq߭=k<vvxH { |/jpA& g w"Rۢ6`s@sKiO>ҚU5'Bcor޿|\{ˢ wzfp{W ap*6;=Y]hV: h#dKUܲNWtzWRN ǭ۪'u.hMi(yI4r`2X6p]:Y vA4/.5f\; PJV ]l3PCVr]\m>&UR2op:ٷLOAҟ뇽Fݖ)~;֖HgFmhh-@i7[_0T>^]`--M}Yd)dk u%-H9hZ$D L9ᖀvlA: ￝޾:4 cN@U)wpjo.yI,@y醴 ,h-G3s\_'_.+RX$߳?t.& _Ifp e2w Mխzt_ίźKRˀ$'ĠE] Lr& fu%/;|*V,eӤ`,.A9Dł;~M+')_ XKp㤂[ 6uv. m Ђ+C[Zii@'j?10Hx)RAb0RV)$-Ҝ %Z|/ 9e!bġ(< 3hO@1KdaR[*?.>i@NEZ{\"'@6Io^>w]SeHMPۃ?M]w 'Z3te#8`/@_jhk4&p+Xzq~<mË4 llR`uMn |7 CY,*BakNY0e,kye 2T;N6 >o7Ϧ?q{?‚s93/zuu7]l|!,?$ާ~+β`}㔒~BlZ@nY{ c@M;x.ܽw\,@V[ˣ߯a!*rRZ]:Iw>ok6@ǟ :.O/_4V04Ӂ`tRpg&Y-k:h- qA7E)̗rCA+kz#!I%o%ؾ _P[? ~S??XFւՔ`-37@,epY&&p⁍V6QLd sA 9~,%5Hoi3 $@V %L){OqvL7FJIv-uAWB;! k6p?XbH6;Icx7!stςT qĝ]n?x^\f2WvHSk9n<# ރYܶlz4K`selzM~պm[V6~d"0)$X3.輘R`tv(V;NQ/΂W#^}bb /ےH& Dz݀uAfHe6@ JnH?[EKZ;p5]S7CBD K;Go@f k+y`+-kʹ`M`--ќV YFY,aw6jYEe^z%qq\.=  d 'u{Ж3xq<%PDZKVdxݽGSf9q_|~Iw?= uh5kHb k>Nnp_yj( V勗_wuW_(7*oԦ7?AlІR{zp@_ rxYȞd,[3i:f{O9Z VZY.$AjW!(;K M`fi,9X|",.օ% .w-wvz@vͮ:6X%),$0,I#AIa\mo+[%#=ɡN!;1T4_H]vv$fnխWE"%^RBؼ1y.W. O: X jtb X`Au)^~ \a,:*[W:~,H&xCk%hb}aAXͯg FpdD1 l3 tҾ& S|7 .+~?{_z`m{lX{Z;渃C.HI#ilahF;z9$!09 }:@\ )+ť"xz9An0s%s}/4 +F-?xޟk(CaZHEmn];pW"ytW`?osYsw8 [ZTs. e$,m#Z[-+KA=2~pf*c? {-x\Ettx HK @[{mNI-H|)L"cYZX_*rw]pit[" M6Nв`byr O5.+G HQ$}fI9 +n&cVmgBBH!W$90L|%bdɛ@! &I$=Pp$]fK_Rjdlpc>Ke{C';@ x `촶Lg:o yҏUsImg)R.a`,Zod[Y^Ddf C~Yvf`is .LpWO6s P"x%,oL|gj{<`m&AjH~jQv+fɨ,,KNzyy[+kd{6z)|BZW&,{DUJQ@JIиPB`75p^ƞ:|*6F ߮}}Su6 ]SmrwtŜFݱFg[!m腟$^# s{]o]Z n; -[RѲo-7y!LwPRGuvs΁߫:Trxd7n뮃Ys`N;K>J@`7 đn 2׎Nn'6 mͯe3# VfS UҠtKh_2 7k$Z, q>v%/W3P ,R&Jb}ϯjB8ZˏaŃk}xgq,f_n-HK6i#aʓ?B?c@Л^|rۗ^{5{s!د!; q9@jV(uKguoк /FoD[ I VǞm,]c`:jYOnzT\Њ{[oY=_Q:r@q9BE6’쁝;h[d/@Y2} 8MwɝgjAK \¥uTXUYvq2ȗ} F I*y H"0,yDsz; rN.e"T`cxaIܶ`-%Wŕ*Axl0<KeVTCwͫJڹm}p:W dqc?~m\tt;޺^K|JVz} nD̒2 "߶:pe V^жChWyAy gA&0&@^ rTNm-?Ko6Ƃ+VpȖv>@V5.N֑$/Ɂ|BBrF{V3 B=JrkSD ;-o ]4S #g iU"Ƃ2$D-SihGD=[cy@~G Rh#Kx2>@adⅪBF&qPhcMQ (6(2@vf^ ' o{)CK^]9HW: d!a͒_zҺ$n02;=Jq@B@*A` nD/RV2 } ZRZ q0J9!'@Runtǿ{oGU&V^&vIlc;&|8~IY8ҶG؝3oσgraLrmj`m a"n@ %^"otO&@ZJc m&!X2{*1Xu`U i+{}pCAJ4Ir$d(' eu@[Lڮ8 H|p_(ů q`L' MՌ@Q^N6 䡼/~pp@6F5;bI 6H`8x =<h;"\i}SW-L6Gj\nud5e; !$7pGmt\20w|#oA2i _ cw+cE O\=2,'e5/`SlMBZ[-:?!+9%ʁݲݴ@&r$:8e``_"q'@xa@׻M+z``Xq6`lp+9,%)mwa &L2 zm{~O>NmNtvG?wчi_=}PܓEm[w޻#1$iƿLQw}n[L]aiڇ߀> !0`xewg:lԙHi+@q=yGATyL`y@kjS+ rLN Ў@!KN+zO rC/@n=9 ݢ&҃{E$ Hm)Št? ,$5ľ{!_ )57ץp @AK[]mVn5\-`IzZ]m gZBK֫UY4JuMd"HfeOITeݩ~s:^RAz$su/QϏ6ݦ4ФgD=v7ǠVk(Ajl]1~-L`-#K@N{x]qS4\k0^I ^BRoY`,#)As.\sW,z:߾*̀]k$lB}B?~XH!`e]Tv[2lb61~.?5{r8e8nFUԖR'3 æZ t8<v B;YuE n}M)x x*xqvLy`4;b\S:ܐo|-;8m \"AjJ6L +wLGA C0|E(!୵L3X{ +d4X{ϯo;6~ e\{.HKKf-H!P)x1PL2YUv @3v ] vM1fVA`і' 6`E` Yf (o$ʕpeMJy`lmۥSuA+bA$Y"D_!TO~-wC!rW&CtBḯ̳?MHDB ^rS p2-h`t5 1p*>2%?Gr 6 ilFz VL"XZX2s,ʮ&:H'"v@aʲ'E$o>SLOd.;ha;mAR6l 2v@5ZWп {bWd)kj2)i36Z]уB$2C'~iF~ C<`L^<i8?#,`$gmu"MG 傜 k>z7\2VO#/], 6 .ihMR&iFY6KRo7G[Kf߅KxΟ;&5)hVUk" U`- a].^ qGf ngKnU,HQ*HЗ?|Bvt='߁Ӳ  ;FqFmBn&?ΛF.Ay|6FQzt5_| MJ5/{6b`x7<TkL ^y~i~e>Q"!n~r5\c;2M5\h~P/^V/h2Md uX vt7(.E@Ia I=:2lZ4Fn@KCu:;cO1p77 t ;ee #Xp9tr= M'q(rJTU22NY&ce5Є&m Xi5J \"ךCeD(>ă<оb!8.Kf5 `UFj% 5)I JYp 8RN?8"~5 7q]<0YRY/@y򣤐>u~ZI9Q||&e-Xkb ADiI'3@Hi rS-y ꃼ8Djz{AMm ZJOi9nO h "i&C Sv'hjolo 鿂`@n Aqx#!W>YIϦ!!}dq@~bI/a[fH4ۀ7Ҏg ۩#@g H' ̣/#'\} qd$0T HL1^(4\ $LCDJ_] G<\\ r v]|ĝIλS ,+OR 6z)NL X.5s hYO2d+ee-0WJ\K-wݒTWmt?]-AgkMiF1ح31DC +wB.?<܁# i*z-UɐxMC8<3K?Y oI&p\?!)j}rBIp?v5ȗ͝Д`>Ξ=>Dr|h`uIeZ,?v{o% ;׭H> :cCn hl?uvSxHЌ@UO*4!2υU 6u QaU^5o7{ f~f?%OG/ĩg`<| kYk.߉+\`]`'OMV $H *M`GI _ <Lp&ɚt $nCt2եH?i6\^iyh6k3;s|! ,D?߂2 e`XJ ]Fuk@ HP=)*5@rKA.R y$ Wv |VԬ;nl|I*cyUoE@bFfV4`->@K{ZKk2ԕfO=\M` ( &9AJ&+dWb?ZSI9v[?ݯ?6TkzY LOrށ^f2"oD,)%q5p \== 2D2졽_ 4hqe?neaIs~TqINA=ëUkW]Wo>v?;nf{W{]^{Q6}uf3^ ~Qe@Řw1>y+!wma{W@XNk#p+>wlͷ`MoO >;dK nO` 6XU,`6MwZ@=XZ+}nmwR# vm\ i 2`v-$E[΃հVXJ[ }e-2Ova.kerż@Q2, كYAiV r[ pXEq) :#[|!kބ@>Цvʎ|n2 7@`[yvpU]3I5ԠfJ)L䒂o ҙ \i+0̖?e*XR{gu%e*?Pl^`l-I5v4cǔhU͵DٖLmfn3333336333[dT{\xϜ+W+iK ~ r ȮjNr(@jaM`R?^*0 O:_,Js' ֱAЈ?գoArKybtmRy*J~C3k\uRB򂬗UVY0 yl{, %s'  @*Gc%|٠AVۉ@Ŷ0E[t?Y j7 rƴvm"Px7ʀ$vN0.l8< 2;HYH=-=MXһiO9S:6"46 c© dQ'+hMܑͪ.G\pPORi)륙*h᠕u}:ǀ,d1-!Zw;g]dty|ޔ&U\K"^$,uĐ qtxY/gH:_l :#,_zLQـk@2J4q/:g8yAF92GIS<˙ lh wy RHl 뵋'Maxmv5qu4Ha*Kj $OI Oz88Z\}@3mH7sP(MYe(_Vnp-! Ke:ЗnY}rNKްcǴ_\Q(u9cH]0*<5As@Z4Zh ЖۮK@wӉ`ܤ ^ 0#D9Ł9&`s*;8%mxlZFo_S.ys"A+7z3D < F]jOi{t7u a2 b?ےUy) &do[Љ9 g) rWFZpmt~9^>`)NQ-ܧc/@I| 3ئ6 Sl02-h05i`R[~i$ j[)g9g*p'L6Ra[}f3egw_nYAЛUd$=ҕx&H5ykeF7iIeK@i|Ŏ޷LqwHetv9EsÓ SC #/74~wWi-#'ݫ)5 h- t#uh-bA?HcPl=' УR>{e9?۶mOvOWwA -58<|kЍ50}?5ִ/ϨˈSq)^2?e [sގpmcwtI*LlK'j ]<,tfmx$L0_߿Q&o 3C}: m1)`*@S6LFlwYI࡜o[UZI˃)=0f$8>dͮAFf^ &)'[Fw]Es\|3@l ںܗ+`~8m" /$Z^hD6j6ஷN|J \@^P &Ju@j_`2Ǚ&$L@6l7[vˉ3;2ni)G:Eh~k9-b33=5 |k}*r^75 Hm@ SNYb "]i@go. y@Q3uyUjL$1$MмZH -t4Ѡ^M:4 Rz-t:c\0) Rg;x{^7̝>/?~£>*8WL=S G*Ie/XXeWW$Hr`=5.MY>3g m^Z Y \ 7A_4選@rt (CTIhкڟ`Ӝʠe62e`'{Д6k4cfé(A89Na`:{b,7sAgq WnFy)G#7hBm&{E҃&ӤdY`idb)#s*rk,1@K.):}h;l)7'IN߾@OE\0mP[( &B.`Nmbwp&H0~vgWM+vLfg;y2F+$R\c *W^}jOLtҔ s@NM9 GPP5ҢZeQ?87$(ZDն!Ϯ󚟲׃8VHe/@WwKuGn|,:d6VS X5hK`@J)V1D7h3\ gPFHI2Gƛ@8*@8|Pl)$U?;:Rtjd<#+v-rL S XL2@$=gl:  q]jF o%Rv`on2txs6v&<; ҿKy:iHI*vW(!IWI1Aiw?Kz 4i'??@YABS17<RjU~g789'AVa1 ;M.f3O[)IfN|bIl:Ak#f$qh?<#ހCLЖlz.vK=ڒM4ʳFjO$h& y8oKvZbE6YCBDůS.Hjjbs ќ3!~C'$iltnaNCcrԂ`ڙIeӯؚ/[d{@( 3ЈrQ`#/S{Gt,-7םf`kO*`G`mv:)fBAjR 9KlHA1u6Y/븇A廄d +2Ld"@ijm洙fE}'L\3D;՛7mPhSp;O`J?3=/anw`.b%upXf$HBY#,7M*Ml][t L,g߮kQw)!-xsSGB& TOR| 'fLM-7y@f(Ah[ (=$Ѫ^:SSS$~Anm 6 Pf9O/ E.x z$yHH>d{һÉ ~85elf8@]-4c)h*M㧀V@zUWF&t:z b`37 m!̐v[q!-P"@*g !͠4[xN\58$m= U9Y崕 5%ArU"d~rI-Mg%RT%} Y1PŒiW[):j*P d0p@q ZF;yb{"AJ! yշ'c;75Jr<|. h&ߥ1I'O%”WK-[d;hAm`Ci!/K`V{[|7+ښ4>Ќ,ͥ<W@+=;&7#‹Ï }}@gi'^.49 wzQ3?ӗٗ $$Dx1]Umh+wvzcH}C4 $m!v#HE*Hy`df h&JivmbfnuzݠAK29 ܦ /lc02@!O0L x*-(K_F NS l= %ЯFmkZ9&Ӿ`Ky3l&f#ha-Aw3`N8h.H "q)$AY~?PTi+ gh=y0ŝey4 rtJ8@H'Yf e-nAt>A_!poH|;L_@&d ?hT Zݖy k&d%A@@ Mf:b;Vz4] d &7l2d8CN /aQq]7,싓)SKy*~OdvEgOCOY :a%F\z?YauG6k'F@ z烧+p=a_C7 d8FvRN 1MLa076sEw9# 5$>7k&89#{0[<]e)c5 د,ʄ6R}wn[1 Z["sSNIвZYVvۋ`RrNo0L|cA246 !3&ЕQ ҅Q`3fىp6㎲Cُ6H@)I6(nu%)GY`*;f.u9Edσjۚ`Ι r >W 4y}u,89:ܦt_s_!{ 5 ҞRtJD.RaK(0Ii ORK5SWI/FY۷ M 0PRt7[5 Бr^Ns d `Qn6֬UUY%O_r`f6u?A٢ZE"E:Y}`Jm6ր&M8M pjnQ-6z`"5?A!TxR t!Ә 6[ѭF>{0=Mw :ԗhkʙ& ] Nh![~3^+\XgUW!ck4t.wGI4]#5[ t ~A{<h ~,v 26 \^u~`( CO zx]J-4y{7 _sRl_:蝋M݂#~x?o#P7l6/vy(ޅB:bz" $P@H;3!Ud^BȥBJA&c's4kiZ) #|a ,q~14H =yHEJEKsLFnf xiB@ 78zP-*N,elH'.{'"zDR@I't! $3޲M &L }K` ك+\y#o@=`׿\ eyl޶UIO" 6+|ݮ;h =:4ԧ&A[UShGA{kb@vݤMmQmn?@TL_֝kAȿ!3! /xx/!7e!hm1]Һi`pدb0%)g'lw zIs E` Z|h2kN` EX,43ׄe O=$ 8e~ZMW%#͟rlo!/AGEf`E-@Θ:W j ?/A ^.eHCs{i{IY6ݬ{t/-He`T!/h.xfԐ< }*35-~Lc;\ZnKоl48=<@h<CNHg ?9 r4KUQsfm`ofQ`f_&жӘԑ 7 &zy  !`c=wo  >}`2i'Npѫ`^' Dn #2MiMⶎQ-x٤G7>q!Oע&/(mv,dA"!9ZكMK|E&Meo`B| m5L B az%] 0& eNJ(p.ҩ,D*õ Voc-481k zJc`_ {"=i>`9@&g6f(MbJC45@f tSAi'}4 5)'AB\擬y-gʊ^ u01Lqs93k71}?%!6w@u`ƙ2l3[G+Y@bHaAC>p9i1]0A&jЍV4XǃIinX y"1C{Mn` o,W&8ap $dB`sim[4gc#l6e#0K.dp} ƛ|3LdڟJNli[VY-dI!!J)@kjqfYj6;߮rn.0kL&k6;{R%DM>d?9 {ƞy$aL.)zo6_^t7mt gD'J5~->:l:85x|-0?UǦy+{>Jl| yS3oM-aN4V2 FũJff PO_H*wva6݁=ZJ#S"Hdi,eAKkZ[D$&c\b;hW=@N,= T`' |-j䭼On?慎5N bOG܀IǙ?!]>N1-N=H>uX⃐dITA`P;4>gNYК@nR0L+x,N*@C @cVRPV&8 @FOC7W@U{̓]f P~7m4A@N:i $VZݧC T6j (N5pk读A:pF7' r^8>~CYA; kL5m@i 1zt/u!wt?h~+Amy({d0H} 6-h03z.vi{- c}+#6lI.l w/uۦF}:VWcT&1kD*n`0e MM.6Z}{%أvי py<]c̖>n]wpCjV,c|wp\umZ"HjI.@ZL~4mmf=:LW#Pv]Yqx seYLc77N?g 5}N9ωI)2m6-m10%p/`u:;ϝ` gC0M'@{Խfo.cz G `s p g ްw{9T%3 A>#>K}lQ;O[x}5>m4gWcH–K` B =_'o~Aii}xX+q@f CZ,`i\iGr] 8P~0cZ&j?D]mǎ<*~O4UogBoC#|)n~qa=k:>|ZN Jsl3Mi喵AvjI rT clStZLZxn)m)\NW  o{B@'T]s|$@6~f;tCjK.ئ.DN|1cAK AfU0[ g$pFTw9ym"[ |5ܻnē|@jsL7SL3`sUm 0B 6򜣲fF)F }bsV}Zhzm1AR.+DK bS|@F| ,MN]:/& ni[|O`TŒS) r@P^W?"0UF`%N*1P?no.v :^pk~=z7 L7Dxh[Q0ɴ=e07!'/mMi0ym&/hmA=^oz_o5/N؃`=+A:V llc71%=ضv4X]}&h@[: <;] c;CtWp9@Z٠봼`f;)/6FnlU_ޟ|óa^"ޓC/, ͧlm>h{Үd:|)0[߻A#e:pKPQۀs2_"!P* %U=6 Oy,GTVPQb6 .~G^?_6ד ˾yBe)z% i_N$ *Pp2xxvKԑAmo=;ld); T`3_oRC@\`;d?Lj&-E* hn!Yژ,}ϠIA*""PAp%OiH S@VK簵 1% {csW;3-pAoO`=u+pF XeBlX ()*n xf(h-:X@Ih#O*ڇy`;~twE:AR9AK%d,AYPG@]6soMmz;"6(`_bM^')~__|+<5[vp;܎`cڦx9= 4wW7WhUmzđ$@+k3EU8zs89 =SA2Ax-ng3#)TpWp:w;`ov(2 kh aX;˶Ee ޞ1-h+{_;&6 .)lZɠ-VPLf0jB` n)0]j'm@4RSz490,2A1'AK .-f[0Lbyϭb,8 4V@ֳSV8Ik^b0'oůxnyJybZ>|e|ݟ 3R;QZNGMY1!n@Rdb'afhc֌o˛CEHBOo'=Rtjp_n\tcunrd~%=cD-aIQ 9g&r!pUP`қNs}>)HH,L0A']'jQ"~y d=7 Eimg{uMU ^.i_@LR8[nD+QPHz T(jR=0ge`tD=pz9̀`{:llHM<҂6]%H @, d3frd@NA< 䐎{ % ;7Ѝ}wЈRLqL|0?C8-'9U%2H=P4i5!x笳N.qg3JuRb`tH |!_` P^SԔ`b8Nt h4)4lym@p`J)3qXHy'Wgm|/@c@1 >`ڽi{e{](=miH`b vjQP7 . .0䶹 2\K/wr_}f E"x'pz 5h]^w&^\O*;c̅=~{ yuLCCa0LX@>0NVyiFǁ}:^-_j55iRdO&(I%j L@ J% o\Gԑrd̗bk3A2HKNb| ɦ!i3kgiA$5rV4^+oPE.ʼ14?#~b=ݫ0w[H1|Ёdd3\'px]@S*Ј?4##@r2I2{h$s@V8]}OZ4@Z)h?@;i'T!(MY laF)@u;hO.Է M[ H M@AIg˴.bU`˵8_2PR3䔹tsr&$jr.#B hWong$R֙e&~;">}fo@?w=h}6v!Sµ7exed3q+a{&,xrx~'S?;4 ]Skzpy|s1uv8&N[,:v`T 53^D]gNR9PvV՚4P+aDcc:;||}@$I/ \4iĒ\[u+@RK<99Ny@'RHG PojW&C']i[}c}`?} !<3r.vy_4-h5]_ݢbKi#`%+d!L)4ڔ}ZjAW3>C@}Mо|M|u}P fn'Zw%hi-9@KC/J PYEcф fImSGd-b4*h7  [nݭԦ-Aci :I`\Z:BA^=kv:U^r۳,zu룶n o䭜TYp^o'D?+[݈ ቘT" ͇(od_A^I+&~[NJtAR'I¿im:yfPZ2=9@>{>[؎wQ#0-M=Y+i` eX>XpϺ}@7 ܓW`ڕNЛv_\8?8YNFvFAupjx.2\  toWm%ۺ liʟ` ;Ik"=&,Ѡg5@[= a"$$EW*Oc x?@Ph5a`h7P1榞"fz$[ pC&j+le"sZ,b#pvhB] $:Gv dV`yz3h ;՗G)hH/ rCBI4B0 {"AN_ d.h2]1iLcY䦈 9hMc3f^}Z2SΛ1+2Z.RR@3d6U=eAOhg2M\*]r 2_.PEm7|}#&QG\Lw:&?K6 _ؘ~gĔ D7zm?x!w$w;m>ѩiLaL"/p*&Lu <7 qU3R]cmeƠ R]uVZZ4J4ԫD}蕾C30)M\S:H0ȯ55vlg6fډ`m};sރqx:6 jKM2 3v}a}@*SFpCc>{}v=nOtvsiI(硹 6ͬy:l>ȎS4fQl9[~_ѵ!Tl}} ZF|kd p#t[T3 NPs6WO^nlr8kAiWn{}&d_\ҵw ~|pٸ=݌7?Tdls6\x 5G(Һ"~5w7/6jB}8|ﻻo?bX/m[q&~O!Bn12wv )G -EDi&ciSKpg5r%m[½}M McSAO}Ky0d+ )K3p` $L2dY Tkd /QMNLL)z t[@NBWiZ͵y֞E`&:CW{6wWw xI^b:t`4ͭt";d<nV`mm 4?@K" Oy!@cY`ڂ3Ӭ1S@ڛ& Iy'\0<0V ` {"6s{< =w{7܉nkuw+_)l&vJQQJh(1:>mupS9l*p |M%d 2[tH*,ҽ i"@ZZOy*< y]?`N|SŒg'Jz0uM?k^{ֻ}_K~~l+/@G8QmL! $k9B"`ְw/cH-,>\[v 3U4ijlz TrRE@AIrrcӃW $I@h`W@,.QI= zjuvkr|4C2j e%x8@V@ p] 92tfgԤ-i@5DA2=hm઻tΰ#}l8%<0GMYl MҜwmRN4d)g> D!:Rg%FQ|[g@Қ>@b1{]dk K>R_⃩-mh69|79eR;&65*7@N0V΃25DWоY`vm=`@HJyZDj1:vKY2A"d B:6zj > ͫ@Qh<3hݧ3 |!-d|6=P ;Hgpb81`;rz9jjb*㴋s̖r E3 Қ`Kk +@0Lj:GAfjY= YlM+p_l#6-rB&q1$T kdҢ@.Rl~qʓ DDIb:Y|U* DNI}MDΰ |s i*M1i $-[ /~wSF`[5=AJu'3Nj 7nx@>K\3@mA*@~.5@"#iAJKF^cݡd,9$tfJ>nzd1UK agu`K p󝦯2\yzo(D>ÿc>piW?80l)=g@@;@IL @fDO.!NK #%4 3eLjWii`:ӦӢ@kmm`;)%׀ =I G`- Rԓ $QZ [dY@~-2Tڙ!s;I@%lqy`>YI*G1D r3l('0YC'4pЕ(,iUkw0=MS}~M?83sb-l_V\v Gjs'eИLS4y,?E!dt^$ѩҁ.y]"t @oi~^SW$2L4~%&C;@@~@*;Rd 3 z[ήIZkv9~5pGu;^1[܀[? J7>]acfOW o:촿S钠cF{f eie;ٞ5>2ݮ޴Ad -!@i3٬`DJ-2Y0'5QG}h?wApA6$#2$'$d0IAci Af$f<$I2rZ^%Ao {^ח&$miE.d `S}:@bґ=AI.)n;]>MH Njt7=𜫼&ҟ1q$JY'+t5f{H3e򆂙cf;#`Kq)rRN? 5oORObp93\qbA3ew1I \0 x>g4KUrH<pڠs@1]~ .Ҟ!rtJd8@B V2`$Nu`evM}gl{lеgݥ񀋺F $܌D#9:ZuHC 4P""$ h8 edQLIAN񀼖&hM %@>1p`Ma̕ 2Dz@ʛ^s m57j9cƃw6p9HFRKn^*5'b9m΃<HSz)KA+k~cl))ם`؇ OFH"zGm_@$I 2 LҨpЙo~,w֣Z\K7|.sRN@0)I$'LSAjn- TJT:v2e)0E;Wgi ll#MK&IC)t59AZ ܎TݮA5XC rM?z_ρ=j_ڭ@sl.q=!YWmЌ6:Eم`bstW3h. 3|#>h&SSL?fkz`";5{ߍj&\3@hFuAso U}=GgiN1#l=eW gY3Ld pk}twkM);^i+>wv9:/ϩ NLT=A t6A7g30G-m-h [^ Mkivmǀ0ϥ1' -Yc/:-ETe)*O7*wXmvݙg}fV 7(R#f^g0E?#=x҂93M2 i$AF۶v3u{rM.m%+.=`?H\%#rG,kipһ`O-F QR@[%=3+ЄZI0 $0AkpW'vUkW"l Gp^;'+ @#hR-AKR|`YrCSAvD=EA|W`8#@QQ^{h) Dj 5'A{X?jh%PTn H`^&4TcI>!MCs m"궏- D\wp`>Kt!Do6e}vmY4,S4=8|@vOE~$EqA^syy[4.rI(YP[A6m;*mFmnh+RMP2?7طBjR0M'igg+PbZ8K9)met[v3s3:3Nkc" 1$UKhNlKLyI(@0Z=l& -ol-`LA`Ycvlp{vzրXеv\cY rG>{ !0 0LS Nr'cߨ_/&l?F<o Snj5n:>w(L ! ko8d%J3 d!-z7dd$bsM ,04cVk} !qd sYҜ4Hi(QiQ;t8Yl)hhNbLnV@yJёD+ BM!L$Hz  oj9fBMGeA<丠K$H23O 8d}$%9)@v**vkj$fF)ہZ8IKyV9)#A@+?"$}F*AJh}cϸA1Gym`r$ w' خ$=}q~&IUv"ce/?AҀ+ /.5 7g،I78&{/?G9+[ U `>`H$,>y(ZPTu5Fw:=Af0z@{ dlY@Or~uЩi2 d 4pwBHF8S|+fqKeޙdϦ Rώ\2@Ӟ>\s `7}bcu.LBtף P,7SMu3s |!`2A)H/0~n`:N$q 򏨛ѓ,q:iZ;PdS,}54>o|)5@rHNܶr6Ձtf=xzx=jx:pK@xo>1ftUاk[d9n8 5?u؛fYc@h9.q'ߜt/H߻7o-l/pѵ#w tĕ l#Rz5چM D.5zOA^il9k\+nL73HESӅ "+8%JHLS8RY/y E{fz[] 3J~|ײuXt(t ""- (% !%-% k]swg{<ƘsKJ HJ~<49HХ6]Yʹ[ol%HsgZX$W7E[ B*|Ӡu|[r\Qt~fKAFn<{w]o.3  "/"#9NB7.GwJU:8e\Wr Y`I%r@Vd4 _K_!7]JKy_dMAv_ ܧ RHa{ny[$`_iO o>*@OM8ky#%@zh A&I+u)rD`];Cp;8'ƀ}jŬ;З/HW*꺆r>rn'-8kYj nྀt,i :[AWt/% y%,%) Gi)p =БO B{0 k:,Wӝn7 Fep̓qeKnAgu.DIf|ز r@VNC~ Hu `o].<i)o`I쒥k9q%)+@Yo)luF A Y4A_H󠹽A2e];rpXi 2(EBp,8i@okhpC${bNLs=so`q΃ )`X_rOUw9,%Bha5id4T)) ?큯߃%ŀ]2QH?H&H ʕF pFKfy5)H GWG`'@;`#s)\*` `oYK UTYnqh,-# % =PMwU 2BPѭq n/܁/2=p`)~ބk/˰>[_/5H?}䟃ǝb6K)/Gk(d kdtKa]"_c ;NOm3BF9j̴` lWZ\䦄) KF )$3MV`i/-5 `U e{i/ VުjS ]!`xg8ydlu>=x S 7;3o#P ?V0!] ܠP1GVwZ<&b@^JŬl $mm4,P CV`m/p\q}Lps@!Hg%a`{V( ю;[bANI%=hg9$=f;q8+SC3r+H|  ~K$GUIO~V.RyQ]~6[Bs᧑Vn.Lc %N>1&PQf!XO{~ >!T" ғ2E{rXBXzrl#emqu: =FtcW'h̑)L? 2О`Ku-{i,G.5/r{ݛZ^pWnhSoab )wҖe10<% ҂+fYI=$% l2St% @:QChjP(!5rW{e4X6+d!`fh-5ZAqW݈ t;mek],>'-B(hI jYAE$>> '8`HO7ms{:  ͏kmay}!K&y kʘ,eʁI+v3>F'yÄ N|]u^Ľ??9lԼ{lWʖ{\ L|\hEM!~'A1e qhN9Xrl6a edneG&B[,G TX&]6R6\; E@IlU`#wt왵oB&%)Z`,රn.Vlp9qru`[m\b-HI.-A/Mm ֏ Āܐ,Ʀ3 8K>MCݠJP(F& H=Jf9-##9#7'Hi҆ '_q-YUwL5n,9=aہ6-7oQ^٧w@iWҀ?D~9%-HI&9E;o/~I6${7JFY)KVj2 `if˶٦ ].\[h`:A08h(+I!7Az)@\渊q@7C" 31U҃"lh}y8+!РG D?%bI\nyW%%6VL`m f|7+c ?8<'xdu M1ɾ/>(wN~?mʨvkxcIpk~<xBRۿ8l|}M5c7QI>2Kpus ÍB@.??_p]2W(s]a Ł "h> ke)\d 'p R)R)R"@Cq׃VnѵtH i'-Aш<#ܡ V lf |Z yAI6A+hkfXKJO0ћ@f\lѠYH;KGY :X6}UsBzc_d[.cA~ZYgk94FXRBu]v M Ces 9$'_JEo ]{3 _F݅Ø BJԙIS[2AWag}.nJzv <H\M# R]&@b7l:[=`%2<+,~Uͧb7}2̵tJ4`o'e| MCat`u,ˁo{muz=>3̒2wV_2f}T<09 flX[労B4_! m?V0nM/l9. >F9VRhN`%}"XJ;[zeEW؍[DKKscDYY$4>VrC{R`j%`@GQ9 XK_-vVf1`k]|]"$_=XG?f "%po' NG d$G?@|]}8~)Vڸp̽q78Jڹd*:}J'[7Bp#X"eȏMv!t27tܗ ¿Dž'Ԓ݇1 e2p<hU}q_%;9N0D^oU;ꧨA n"hi_`ei^O=dͥmzHƀeGЖR ~6lP OP&XGe,R.{2wcVX R"|`iDD$0+K0vrpeAJu@k>4XN+`%|aU,Ŵ{am ;=#]v.$T##> ס.. 2IPK -Um_ ypN}Js{4Z3`u~%QO o$2*6{#U#M} E[^f0i7GkkӾۣP{6wboM?NxQo0:q$ H¨DW!(` J]4JۛEG8O2^"XnKpݕ'.Tk&Kgw@S`pd;c326=wvIg!t3*dΚ@|^%/l!Iz[Wm`YGꂻvĠhօd -y.$bOG~7A[:5 $LZe|,PB I@-e*XSuC`h{>d!dn[ vnr̀PˠG |GHg!X"Y[#骂`ѠuY~+` ROb$ZM#>!9R$6A%})sa 7QZL \?a';R]d ,Kz[*d8`Dx a9m@{%dAm iH$V#eOT}bNDt wLѱ{kwX5=,ZrO \*`́lAY&u[ ;d LVez=r@y )vO6rvޗ6p!T`K`+;{3+b?}bm8HkY-ˀ".1 5rjX2L$ ݤX?: ocQ 4 #Agvn2P>> 𥬓D`U힞\m)DrJi߰9!e\VHl7zϾ"SЍ=1@rfB݃/BJ5Aj@,1<M4?HICYʂ*+l@H7] h]i/\O`9JZ*?' Gmnz 0ZXpFw. e/d%ς E@*.ˇ`nu7Ń Of X.eoxEpXQIA $4'|[!; m,t3МVA7fZ1j&`B<@IeZBghpS Evi:Бyrh6򢔃u@As`?߀R!_ ͭ]!XL tdAKh}Cl#E 2mt aIX2u3U'(lV皀ͤ DFEv_Q2Hwi]"#G4 X-q,tq,`E^ú+2i*ICpۮb8^<( ^\:A#pQ'P\si!U"Mc4'YS< 6p-CRUyoqgi-M-v; APP )}9p|pxL Kw[**48G$,dV8#o D2~+o/8d'JĐ(Or#n.rLvE,$07RW w @*K7 #pn2 +v@%9fG]!TH~iT6]` mGIԒq.0dw@9E?{bt-":8ˋ ғH9&@UW6E/ef6 rC` :+}C%;o# ebh?_?Z lfO`N)6 -Vz>XMknT|50, ^ Vh\8;#`Ƣ9'w;z9<|_wL n*A_]n ǖ?դ\3C2(d=#k`]uE\ PĪ R]3v(KrwJM(!KV09pHy/|'+@S \@Aʐh(C $9HZjN elմjw& FVi(En[E`~쇠KhHPU9.w~!%;[ f=*?i'p\G{y%3` FG`%!>wp~T [*L ])' LJ@gBxRxrD厞] (iX{ZYsv"|U߃gF I(G%D,։vD۬)]ƞE?7>~zgoW G_=2HføoY=\gU^5!j>B|(>c|F4)ߔl6 8, v{_JJ52zE;-x8a)l9#I#OmIJְ+gO|j""7U|-,a%I!a$=iLq5WUt hQAp r@vp"/##Ԉl, ]b@B.&XH?Y9-4w]GVelԃ`lF L޾ d|Qƿ ӷ#ȧrX& v&O c+nu?cjZO:@S{i H CP\H`fHQ$G HW-/y EмЯ 1, Ѐz/\rK맟fo pAr./]ݦ(A1f@Hd$XeHY~Қʠk]ͬb% {~HHHa? ^п-inW{`7>OqPrC#l3hN_ŖoDmcuŶOi)-pg~WR.f%A$ 4?Eo '夜[u)q_A v.-]fpN bg,?³bZ&:ci1]Lϫw;53xq}Ckh^oG*D7' ?`,0. TSF#~ׂ:~Xe BS@0:o\$Ul*%n[ |{|R4&f1IXRtF zZQzC6 ԐwWBr`m0?fhFk\{|N_'+ej)}N^vMВ`U t}o# H\@+|*h-K`(|b|fm!472t$A]AB/!@h]!X⪺`9s22=g@?oi*[$Dd4`9l !2z=m3Au~0 nRN$=`]p.:wm%iwAIB<28 RNq2vDI3.MyAŠH=)ꖂ7"~I&> &O\%lrTFq)x/9.s!2 `+e"X͡ \"ݾ.ĂRVxK*n)Vۚ[m:\ %@s GJK~~)>+ 7r@]<[l.eL_yң,d?h=`,K\g0Ha-Y`mW̕t/ANPVIDATy* ZG|DrrBPP'7, ./2Ynp<ݪl+A1Qcuߥ+<_g_+7,Iq&]p/(v,;!q$e!@}@*8Y}IL=Mh2e0+]Y SFʹnAY0g[#C|T;K'v]VK`F% dL _@fv<ZӅ Ik ad9l:"1|(G L@;!o%uUR;V kVrԵZY~}dtm;vZM*4f$lYxPN)dc fˀ2j@f* j5 b)߀etvXP{ !'XbR ց%Z tV:(k b| MI_%\p⣂=yPBQd~2E U~ WCVwJb@dߤ-cv}K_ޱ\^岁l g4.d`Rhd0|,?d|A`9 m]+Uon"tuoյ^V,%u9y. '/A;$ '0Hgi+] :z/5 l.j1\w퐙{u@&2Aࢂiwcη/ }s @` c]N:k!EAUSiКfR Yw!~4laVqIT'T. 묳@u^׊`wr&l1lAƃ .IP)3Q)!AbBr 'L;ڀ+|vp'\VV] he𛴱NkiϭPP $jod)vvvݜ/* 0Ek'T` VQi| 666c)>NB`kO &$\~w(M Q.JM6JvC|1~hDomY. H RoK;C(yP:HE깚 da>Z*$e# %AkjkYR RVj$l+@Ҹb 疁-u)N6f hRs# }]+'COB8\' q@wV?>2!24&ǔ/PtKnd#廒6l'"[DNX=N2< ƅCp/WF4[F\>+Яt}//r LH62Ul]l>А1V,`K-ʓK@P|pk)}gT=pw Ѯ2klmͫEXa Y!tԃHHH2`2Ùz֮vA?/CQd}=$:7/A+g:\p#/r{!lgi^̽< X};`{ۑ;럟׋;bl0oiԖn G פz 2˝c/ .ͥ"P]F06L0LRB45\kcq=4 i"s#ۍ3nZMJ"`섿 2VLLn e$J^!qdl $& `tL5=FI +YNK+&l8GoZuODs4g)ևn(Ox RȍL#[tVwS6W#heFYc Vh`ZYNֲD~H'¹= .bؑ@kNj|{-AFQ-cHtЄeklݬA3}a_"]G.8~C:T?X-}B#4/ ~~d_X҃dq%+}L_#>q|`Xޭ&,` R^ssvq8q~-Җ`{mՖzSo/AHIʁʹQ6(I>XȯigRCSl:cl4F?J r0p\K=@p^=";@ eDLvm\>j6_F.Pg9ݤ4c]kSֺӎ  r6H}=Z?g6sh`6 %}?j).zxlAS@zrKz|O>"R o _Ơ-}% HFB^@O&+O6"i$/Oz5q$4G06ZS^7毽 kNyegeuYUfyЗt# ۩^փna>Xzi[FU >k[Ž nrk'ܒj>ֲ4,Lu%/}"iH^y) A4 )9&Аf }D$/d=ZR?i٩=š jp+5HosqVtn|!N7\p( Q5p7d)۬͡ 0kRWv" e8~zJH;#OxKZ\۶ lR a[X~o?[eJ%=);Q AfHgY@t] \+uH"/rDv6Zp/HHl$& !AJi D9Z0Oy$)x 6 wdKAp "FNGˣNӀpgR62#7ߥT8,%@(n2:ozH2pf76i 3#k"u\`"364p[,䡔[|!]-*4"m|F+|KMKFS- ~G'U\}Mwܖr.ź-pF&.ID, tl HyhF=' U?=AHP< mInC"XQ3~d̑hd''!D[ЍaZ NWg_x#<ᛓ_ݗ&?Oը%YHW1$G(!7]yd5լ)F`=v@E*oQO'x aukj_HmpܮpF&%"VN_,| Y)s>\+S\/O6Z `䕏vN;i(IhH`Ku!RIw* PEJB e ͆-u1Ai!Z9h5Xy{"o4W2h2shI`9it:X@jWPڸ z0잽R_J&,dE2L^`#8mH{^ue*LtǵN,S$jTpP^GW A(YQoM&ۗVl n JwZJzzf`+~Ya n4@CdA8`gy2TN? h&݃/ABĀEI4&*$'XsV[KA`u\;lEHVDlI.w%'\S̥=w%+{:Ά8G p@ʸR3}1IP 䊜X_l{2g ٥wƭtBudl|y@n \RHɠI %wA?~6蛚J}h TI[N{ $$DbA@ +|/4bBbÂ+19!h*|^KX*zŧ`,b@&HikX[S$D]{ce)>}dw(Hk7AhllpдP -/e':PЇ__>OփOCWG #B-Г6l _K?i n& !x :@z0?Z%0G9>/RZ*e7̍nrAIp. CVU Hu!@6_ f{f;FN]amhIM?)Y2{-,vJu!'Sv\pɝw AjJinc3D[dw]pg H`d->vU\-L0ЧCoܑclmљ[EEڃ.m pQr-r*2HXr e@$,@z "AϠX/Am[- }:Si%5[ K 8DYE.2즹>aV"#㛁׺de .;2ZJ?B_m 'Ai@~9*Stm `bAޔ< ce}\냵 |̷YsjV 25)\u蘏NBmB\ld z7>ͫwJ&V%&A~ܯ`=(jK [_B q7 O%1A@H@H=TH>@: WhHG6b/g-1u"/IAB"+ r@nH=73"- 2ج<`%ME QNwxM%2/yhn X@xN'AATgKnvO̓pVX.Ђ>_q`uJkcцX!KS% 0Pfh@, H[d5&PD|e}RU9غnaz {qxӰ>a<'_BQc+ד\7l.0Fp4AV ď ΂k:J HR@? 7<Qy%k|.FY?F#?1$$Њ`Kume[e{43]5d&r`-FIW~7pke >E_lha˨A^QyZV,@:9XqJXA}`mځ&Y)7w7$1{@2.i:ܷW7ɭpPPM3zدϛ >3.CH_=vtm@jHӃtM@;!<:*.DWYb>m Q F׆`fhT9U@dҏѿ-'fЌ"KGdT=wI '!M^6y#r[חml:&߮_{'}[~}[a+.pXԃr>L ϓ?,⧃k5 k܎ b^K4bH“+tsJ[# AWBP~u6kʏfsن|,{"6s \`I`l-;$Y75`S, lA:KE$iZShAp hE &]@zƃ%V,E҂>[bRwd([V %`,bW,Jizܷ\@ +B`+YoCA+:$ZJ`2cY r?D@"M$mc̡NL*RͯoZ pe{ =m74:J_%\8H4!9!i:B?jYvmC\*^6>6+m9Y #tq MiG]5,!e8ЏzA7<\>K$;75 VͲk6l-7MHl- З/UBUrZ, m~Xd$[rsJڃZVhD=)`XedA'4Rh8sW#wM \;i6Ö|7kC >ݠlNi7?D3%<5L &&>Dn_; $PPP+Ip e6 =BxkQ{naw5>i&ay֡?C{!)[W4}5 by7lgk['e)ɏBҳrTKL|.$!IE_C R.N~Odu1Rޕ[`leI`H\*`̀x@RHlc.߃սza2%V= G0B6u` ->nsڂG]EGKePRJS$ٿ2,' h m'Xݧ*`Ot: Jf6A6+"e(޽aON,\: H x^W wu |*(CccNYU[$DApSNI99.ֽt1y 䵧C= #VXGe =б}ΎYIAnp?n h3!r1θHXSFgR nW|1- of +HgX@;h:d. ?SO^:AantZX'􂭰Xw 8(RQoy%VB@{| {[ Ԡ96%l!Ke w^cH ? MǗu`nQiGN-U,57R{dppP8A8f'Du5kB5!EOL5F-59ovZ ˷p{LuI6V s''^_TE{Uko{=o渑(QA-29ͤ%̡.edY/d=.96 qc˔|O.UA+$C8:eTn5 gTiGdpuSUӲ|A_PS}$ vUp(INJ-$vp"P h%5i{W 埀t;ИjH() \@jRd|Ad̔p 61=l-g2Ym_d/vnr $$w8ޣ$h7od{+I %{gFRx%bTl:E]W,z( :et42j@)#4CAHcR./xADqLʂ_ ^Y ^^$ 3 4hxjɀC0FH}%u@RHGIթJSAJkYpzY Apwr Ym4Zi,PO%3~k)hU{`@2VPڹfAs&*-%4nu}$"c}.쌕 ?Hwt`겸(.n2=K.:l%F7 gh8gfݿw&=gp+A&)md@Xmm.%A`]xrõ;"HeH X@ < 2Rw_DͬJځIH[k`Gx`--5]suyZWv3Ly@Q@B|gr_ds/d>^hț`\i s`mnp_5X^4L;g l'mI|)HV7"e~М p!78RTu_d09 hN!9¦[9`7CQV&񤷫W7@⚃)&‘j"fkcÑzw%4߀\a@hT_LBy&,OQ+ Hwo ɑ1 | 6ha#40 zKSnRnI6t`9i\ C`=সn&  >+7E=h jq rAf=R@ - VU doDڀ `lrpn#X(p/%{r]u{~r9g 6hE=%6 ϲe>ණ8{ZLk=S(@!Ha=Xzͫf2](ͳπW!xDk! @GTPNH04A T<)07Ƚ/s$R3l#m Xk2Irr 䞻%! tyRk&J3YQp?Eu\]^7Oz|QCVZw&H/߮ঃ6`s*u~@d;0_)Ϣ̶ྒ<GH>4p%%{8@ v`@v9-A }>@FLm /A ?eT w]p;HsWׅF= v$H %%!J` rD>LoH+|&KS,{:m@: t(Cd7[-#d3WM[]s4 ܃I !  %<)ǜ7x6꺻 5y kWY u65N60O7 &G/H1'FQz^ ؒ(d ^\@ķ stӯT*@w0] $7 d5]E\\~ԧ@>i(y < Wg9$Zǂѳ8%}vZ\v1N?:B-vg@K Yt[ln3^&!+ɺR'5Д4ԭ v-4 ^[wֺ ?Aô@nҐ  ܓ0PhOxz@>Bu#@yG'2h90p:F3Yk2mݴ GS`c*h2kn_\r ȥ246!Wy}i!M!mvebNj׹d2St ]ۀv:46-Ae+:0ȿSƉ@L稚`sD=ǣDoqz$B^wiD%2sO$0qVq53@rx @O,eH..sX t'}q0Mzӄf`mlHsh4kzV5Z4 k\9T$*L Ԕ `0>c53A%d𖀆kA- Z͍yOdHie%s%3@ ?-^v-A8?=N6r 6@yA nI7 5%%icgV \`ַ@}nHW]?!jx$nU.8ώ9 <_b@>k \RR&K!0جk f 3u0d <$T@h/yar&QAJ}vogѲY+tN+&Tib~6 ʮ;\2VjGmu0JwLDkM^1?ܫ .2_>2XLGn3nt- :Y{d7صv@ΰ]"@Wݪu1ظNìowks}TR;Ẃ;G2Az$fj`Br#B@hi!@$i &$4aসWImi^o>&9A_^aBܹ=!CjI'ٟNݽ޾[̿Y_F ?X7K+*,|C@}BnI`sl=CbOOl!CGAoI7RKw<\Re7ҍuA LKڃ[آXft `ROܓl7F(7lN(p!d9upty!@k2fw6y`,7DO35!}nZ'h]p{LW3L. `NI6[Nd0-L[&7 h뚁vw(vu4a]0 $oZV h9Jk&$&jj_%Lc LH*$uJK"@!x t- M& > DB$M[G[~cJ] .ҁ;m)eKQs<=Hܗ`KMY2 CfpeFpe`0e3SF7df%dwO[H30I59) 3F:GO42<&pNn10?]9{ށn mVI/rBB̦e1#C@[d7 &QOZo4-؎oHa Jq. [\Na 쓶 efY+ L^a=thIfR( 2IZ 4 '[’\fc1낕A+.t&9w.΀]s?r7<{};8̮Qp^BnMi_l!GcAx^!0]GHMz2^2 _xϮ1"4̐/2'@_;L TеZеAb& /;h*.ۦ@e: hH AؚrCB0ےӌ}2 H*fpg< : +p;LYZK$H{,HYE?>pƽr sz |*Wl?_3`@+hcIcŴ )\U+@"JR $d,1K jM>\t1h_Xk3 W]> ^1E]8q r9:~I-Lv.= myЬZHkH2.AKrIuhyHBփᚹ~@[TL!5h{-f)h~Ը ե9Olvt@ T[io@p@N%4;;e.tw HfVr ro ;nA}0HVI']tR>[ =Mi)<,5RbR \ԞA}1D:3@UR$,Y浙l.MѦLMIG!2xk]b hLZ* ?Ҁ =Q'cG:yB%PȤ@ 8s e`’N!BCw[֝pOYguCw9wK %L<BDHĆНOGL._i?rũꧾrY:j/K@⿒b!oWݟQ(XW(1ǚ'_~*Q@J8h;W .$:cbAxjBu0^)R!8#]8h: 7/Kni%W\2#Pnp@wz48hS5 #}_l `&d4EQvwp]I[ˏ i刜ltXR )EH1qK҃o]H6 3u%/@ݭ=A:SM'"3 Ns(D. 4&=ZQsl1Kv{kuOov:L.T4F6 _+ b$3,#r'mAGrR)EY09%3Aрr`:^[dҕF`)s &t ص[\d;Հ4_Ao}, €!\fC@}g,-I]7pG9zA;BwLz(G5) rG5KvМ|Mk a J`u,avY%%PAvmQ{hOq:ޛ-y*/HA))Y-l՗`⛠ :_K?M@ p'$wo7W)ui@io ;uk2mA&JS :\{yCu1m%⮱Lɵ ,uIp8/d?x&'d6M:,W+qA8q)B5`3[X ;AiMw~Uiw`12t)|~%3`'!2,XH;N }* .%#fsBWK "&D 81v*NB@ {0=%p 4;n-l LdIzuĘuAFLcſ|+'Jv;ld,>KFÁo,6`*Uoz~Og7h[@H|ӕ@:ˏ(&(FH#%+N޵]r"p txe$X, 4)Dǎ`N W໿?ww}!ǚ ®'{>^D`l%!TD)p50BU3=AK{JsnB̞1 wL`ZH-NnrԕRtn@^ PrTW/C~vcg$MXpMWgo@zhow`n=Bn+fcf0$46p} &h M@Pck-<F'u¼g^vvt5i #C ^j$=irDlSv ^3zXYVAI ^#W8C8nV|oJa[ny$Ixn'DALLL觠@{s,|vp> rhuhI,HMJYc5m`4 G?};ɮ x:x x\{d d)H7YZl}/tgcUX'ž:m涞//_?/Wdߖ|7YEN^cu5Ux}ji#G *T] J#|Ekj\go.MY&x9U𦃦b&IgVI:i |M;2{08l E\0$dsx/ pI]|;/J#+$!;V>r@FJYfib~^&%Hf(G4d1@W1 zN_`*yϜ]A s L zD[hQpWZugtZn3΃ilIQ`=$xMG2*d.0N %L  @H~ #I ZkfCa&;@H)2k/CI42h. )%&) .{u ҹd SM<3R %%p]<ɒQfe> @7k2=̑mdӍ@N;kʁkrI;гt@oK.Mt <S7yAj$@菮%0D@@#>Pb3N&Jq 4Iڸk dˀ4k`"eebй )%B⃖z LD*ҁt2@ A%TJY2?+`4u}u. 5@jjցqݸ G ƅW ;C\y;܉{o+ii G4 [ ?i y6Dd1dXN7e"AuNx<*3DG)cO+Z t (%4mQOB ds@X=P5H@JE\a]J)/͏  Y\ ׀l ?2 :$i&y/e$$@7˶oIi&8p7%g 2_MFMzT #rVLT2j. Sypi .҃K;]2Ы+fVtkuHS*ہdy6LE0uX )!CCBaie@+J 'BjR_H~ ׸!{ tYXQ㤍}&"*ɗ'ؔz~ |kiε=|ۓe_#[kZ8+,{$: PC;qla>y<sghC7ļkqsӵXW=^j}QfRF "̀`G@KN3*Dj 0̯HC<`fKE "[eSUI_d /l€Ѽ/*.>H=.jbLЄ@fX#{dx 4lZ=$Â@*{i A n4Lw9+U~㊻ u-a@QeKP0)M7 07 9/@jJ5uwN߃<~tiMr`rJI AttxE ev?h" #0Qk L-+WL@3MB8+ .eS6 ђ>פ\6u.h-d`AA K>9 M S&-߀$) PI4f#$dL4[F۬7gAjJM~\H*%,3[I9 )pZ{YBh3p07@WHWNzS / .?ГsD}4młg@oT;B^=/hCڇ~y@ ].{7MtA2AV{`i 5 GPRml1\5آv \@IE} ٭57HN)b@q6s!)&]b-z<x7j;ԀcO M52*ZNuOS)z.d:w%.7'%2TZNNY׹Y d,hM* =f6 ]`}` -%d %p3 !K$D{НF_w(Lb MiZCJ=ۯ RW~5uf>>@Of;0#Zl?^3Zh"3t Έ ;nBp- Q+>׷ʼn5ޟo}&ɽAp/wQώ~* Eu)[Rگ 7!k< !_Mtw@[ͯ'!XU+ASkY~wokeR`g.3]ܯ.KFh z{?Δ5ebZA 0$V2[jp2(eЈJSOʙ:QǍf?>3W ԑhzf1/Wz$4I-!l\0geKpb6W:,Ya AP6CMhNݮ]{M ,As\w@ R4fl 1K4Y{~:7=xOAjo&A06 ~& R%řnܑVRZ4ˮGf Lb\^1'ZyS bIĈU9O9'8וּܐ0InŠ/ &QYtue$O 雄N%>:؎/%_)QXnO؞1Y-+)Z G7^Q[m VFm9ukem?"Ffl1cJŔj'Yq7_ H&xL<0垹&}B{u}n30oL^JҶW#+8 .e8c{☶9]/uqQ"E%!LFS%>pZ;0iZc\rdM]X>J}&1f؜ $W]pEKmܺŖW) r֔H*wAJd9r:=t6@;;0u P%fw@l*V'pLUYaI"AKM΃kؾYHJ߂^uٴP潹k,XzfՒ}.hMwf&%t8y씆lh+9yFM*+ce?1\%s i$AiU} Hz=0& FM S|ktaL/XLv{펂fsƔ! %dH+"@RW:h*-x ,el&$PJJQ 2k $ k02rDi p5sIu0>֚c,P $=Ɂ"ަ$uI Ii2lc HL7-%3|j m5=J|yr]E(y.@^[guȷRTJ$_LI V]^w(41 S#ig RO:xO7¦ikt̗2 u<3 }jK'#M9)?/'ⴞk5K\ґW5``Ҡ}!\kH+;gCրw8 3 2'ewuc2ϗ~ ׏ݶOõ7^=G_^$~>?(z9$4k=S~y<69\Y]kl@_jߠ#A[t3d hU]NF Ă2^дB]RHRj4 /HoA'&]w],P8 ̈́owwt Do:"~~lsX| f^i~̍W?{wߌg&]4}T)x#*Ǭ@$ Ұ L|FcdtѼ9V=. Y [Qf>04o9 ^HkM=kYAN0MQsEzb`Je$LA& #lf?H.Y ւnѷD - 6F+檻 *FAjs`ۏ6+WFX>zB9#7NCȬ!߀ro`xbցl 46 h7d{rDW;k- 3يD[n Y^kR//R};Ԭ$5N}r*1Od\JwhzVvD(){mfp8>$vS.O0_1Գ5jг.[fI`ɷ` {M!Z;Tl1_ē$ $-P]3j^[<"5גڬ$wZPpuJ~<՜4+|0HI,eq\I5̖@GӮ ̕t2d;6𛬐[n$px&zu]f@O:nc*KK&J3uZF /RY<` 4^@C4vS8d Y tTS_9TO~ʓ[[vU/D 'yP^ﭗ ė5u@l^=fx=S:kZ:Nf%ԗ@S ,;`& e/k@ڙ6 \&ΥݩOt Үbp@?J k@2`nQ Nft]XYh7{k%Ђ Id @W@-Mshm>ii%1EAfY2$4uY]f !T<|0{c8gzl6AײF>d$/9,[t~\b7Nes2e4hBMƁ*kD 4Ԣ %w 帜9)ե&hh#e5ژl&Lsj>"RXJ3~*zL#'Gd#K@hbf;:3ݤAb)cw |$nlh bسiT 8fAFwaw_ʹϭnԸWoAtU_{1S>]z6|k+sHo7Xb&JycL =GBRL`iLdAphn.]9zDi$kZ 4?ODyi@IUzV4)W't ߐH56m@vH'i AO5 Ms:߶nKvO`{mD @9\2wSi#nY}hMw~K%i ֺ# 2UOpٴ[Wuv7M@:4ٯQ落Lւq8x$PD2dYXp\km ^_ s HK*i&5-[N)@C nփyo.g?kcWgI`I: H;҂T0$\'daH;s25!(D635I KƘ,@@*i=0%0lY(Ke}+᪃7JfgnBmOM:vlf{޲A H!Ł#EA ҥWk fjSEX\N\`4opg53$2>6iZHb҃> MW{Kv|Ӡu`4k$qqS@ivWd̗`k,V% J=@n2(zZG`'nόe",)IY}jGJ&i̖Y2 @](vѶM Z:&q} Db ntxt` 3e%榪47 xV0-[Q |rlm|M2DWwx?hx>ͯjԏr~%/Q-T>Anևxm& M!S⟌(4Mo јD lOòCBJ@Z܆@쐉Mp55}S;Q3DCL WgCe\r\iYx C}O yW?;Fχ>lo/E&!X$)m'R u1t &Lz@ f_\W]ׂ~dbI}/#И b*4_ڂ}{HpܷYaþ8aWwN!0s쫳c_|ϗ%ooLV5x;xeثuR䬼 Xf+Gd 6a&hu{~pX&(jvR \jڭfw mWȈM=)%I,Z-假^I l A{]EY2dh"]ZA^!"L. xCe09%;p/:PKH$A-4O@skA n^U \MW uА43jFtu)O^E tS3dwLY q SY6o<3lW-pAH+j-{=S,u큒H] 7wfWڮ"L_H|pE]-i"ARq(Lꦉ/[vמ<(k1>).$6. RNJ7`RvhB {.$ O   a<'!hU0!RLU c%iBkpLF<u)4 0{}7νsoAHI'&]vgEЇ.{ ֧( mj:d9%A/= 3Ӥ#xR^~;o7;by(aW'-7N`O':f6?%hJwM7jI׸+oȯ]JC Ÿf<0.p$ R,+%80G)&7IA?hʕ@zL ֫W~f8 6 6t`D&J <'-S-ѥpi<eRxYڃK} *Gb͂Ea-o76MoA=ѩ weA( 7[@FLkaVfN8;ޯ rf_t՟mq9w,_è#B& OWq_|/J%!ܕ3\?2-5d5QyOV_1P#*o7Dm؝ط 5LvcgI I;Z˖g1c:ABPG7^@h&,9^./cGG,2<^9P\wzE.Yky^3 hI7BL }fn@ I`8]4h"- @~-\!OVLWne" A Or%8+ ׸"%5HZI?pv4QOY~/1֖ ėi&A&GIB/L[ʥA2~SQIe l?$ o՚Zzʠ `+̕f&(,@ 1Hg d @H^cMrt= /d "+8< jَ>xZy ?O$HWi+AHf-n7eH22",CKY]8HNځ / <t Aq9tv%vIK'Bj k\5,c5hKN` %*/$q3TIturɠ)'Hw=TWW;Ombd KkAshV larR0[>/?h^@Ӆ #:Cs[ ^3~n2d4A"% ?Rnt 0QsPe%?5HmY@xMCf^ e*Kc;^n{oʘAiA-G(?j kSԚFӂaf@=\, 򝔖J:{A7U;6{54 M3>})C>Gt&{l4m5\W<5#da1=@&P.rzӵ`fsL~ v]j4R*3i+ 7"vRWB1s[n@0]0KЂܓr +Җ`{M> w9d1ЌE~C0l2:2V惛1d\+u;ZԊiOf& OAx&!tZXZ:zd,ځj2ؠ#?HiYȟv"P%pX~Ћ'B黌oC $$ On_|5_NL4)QD= Hs-W>tSx}2D.`e8 oW /xf^-ځE+;jVZ \3!l6oJQ%>-NF ,gDh!P7`Ii3$@oIg%P@1Rg\YAWrBHoB[oh 6eYH{cV/V4aخ L7I;(4nҧ NmλF`wg9,8GZ"@ iCm +;ed g$#3C]@d)#)%dt;+5pÜ@|a#x^+$;9f C4.s[&n}RL!1c YY!AVYrT.Mp㵤 ^C$RA=MϏ>C?7Mn v "c஀Na^"Lo֛ T=5X~ `K;  dܔ45\Z\g\/i 9h'h[g!oBF &@X \h^VYBkjlUlg0Νc`Nw T0+!p4kx̱߻i%yK_^~1 ]pmt_|F'}_ج/l ,_Rm &eǘ3=(jmt5 :'Doybڔ06l1x%4~[nתI\RAxT-V!RĚo tThB`l[0gYN0kC0V`]0j0{/=۴؆6S06iDWe~@i9C߂ t imlg؟A'mmC^t-Re R3:SokYi&j@7q:H fY5͠+t[ F nB]N=M2':"7$`` ;tӕ@wz LGYn&r$uƺpWn_f 饧I ^ :\0\FeS%u bԐ?uMl #dRA-) R&\,fivkAde`T' 7Ac~Id2IIsY΀ƨGQ5%t\^w-^n]sܕ(M.ѵ:4Ԍ %Lk諸1vRL d߁&~,3+Hv^;o%mڻ@ZOYI"9$; ~\jjsMW'xqN4-z4"I^4f-95Е_8\0ͼ^eEEIZo G;m.>.t?/q: wkk 1c'JZ|/%40D@҈H$'t d$^o ӶuGyh`SY^s< isѼkAϹhmsSm,Ҋ`z<JC榺f)4:fL[CALIfse@MyiF[nߵ HG-Aj#L ]tRtYnr7uMHz2[ֲfqmr$H:S```^ e h^*-k kY f3F8$7̖f&h ӄ^ՠ@CHD09U ŵSW~vizKU2H< lbcDUiP@ZK 3($9) ZLhaZ^OkzI/eHn$*AZy : 4tW<wq7Һn x^B0[sl7[Ŷ-(1cEo0X`&br /^{ᠫu}n3u('!0"P= . io fb:k7 w*A_[}foƀ&+M,&yu!Ch>kgNC=l>J/пʓQ~QrLd-2W.0\ U9~N~Ath&cޚ<: H/:Hs+%yZ<MbAǐ1W6=]0I/A4e3SK4s▹ ض /d 72G22KAJ;6^x\ mmAGiFKMwHIjezC/st5 xL_o CPlR.awi`*JU &1#M4 cׄ7p[=0'#sA2Z6 ܒBɺDT>R dl~q]Oz5`Nkmg4Z$b⃶&dlu`2&3~nk@3B)~5'p]YW8c.5̠'[ײLY) wpuvⓝ[pע@5͠AJ|$6a{I4`c[a;> #*T4߁\10In}@&ўWԐ 7T[??8(RI i S0#dto9j7Kwq]@>E4Ғ T}o| 4&f`q0ƚy;jTJs9A+T 9LIM .f%sA?i-) n`mZEktKfln3db6n7:8@B1!1O*y?{?hJ3mdl]+3>pV'PgzMo-]'Ky u6zulr P[? x:`$xh/߼Hk \};d6l]x?ؠKXԔz f+fIDAT`R9hX@s4>Я%c.JW ~wEԜ"c|X>?2GD0) `?lcm5n;?3uA?UjFzkE)- tH 4tt(%! q ^{=Ɯk5? 'zv?>OT$ pB4"$AzW KAwpݲ\r& l?_Xy`Y*:]SBhuBhdy3E #3Gm1.پeo2Y1svԎ4pP-٣A_NN<]>\~_ihן{vU[oAk=閣KM8D5o=6T2oRÛuw( "G>ݍt߃9`Hp><|m?)Xqƒ!ޱK^kU2RfUz%d5=Ck k%\y4K0%D-"&E|Q"F揬ῂ`C-Et"[׃̒5TF;r>'3Mƴ2Pԣ}z:I7H[=.*5T]d x/}]nW̛72ڂTR\]cs~p]Z}$BLv-qgzy}O$&8=~ Фl7 b!;A s 5w%d.X-d$t4O ƀ51KZ(CY|vֱˡKK/cuV*='h i'-d$+˿GZp 2\>ԼZw lY"[!A HRh)%7÷S}mͫmA}.ŸA@?#MH}/_\zwIB)HsfQ6qj\–F5Y$FB 犻 v%q@Ͽt,p`k8 >u%- 8@1uu2V&Z ݵYrVemYlApS`7cm>9.8d&yC6̗ "B@o`"[.ւYCk 77Hc.U }I%.ESe7:\Wd |ݧq͠_~?W-\`_922_jMhBk`!=BZICs5XaY svޒqjqzrSʟ`a{h9g}pQ__LeK?fQ68&n^>|A} TG}| ߀:"$PmBB]Bi ddlc39f!D>\T! wwy h;!HdIޅ.'>4I)Hu:܀?k>2FXuŻz9ooC)G>˸SAry>-'u>Uk/4+Eqw6AGulaG@KW)CrQ(HJ((3Asw 4|uem<&,eu'3;jG2(LS[ͮ'uB3?~ 25Ջ?[dž͢isvـ+?"s>Q4"$5 s4xbrRm?n ﳜTNJRsiAy8LozJ{S?aYA6,9rI6H57|rǾrζ\| kNاFJicsHW\F_|ǻma+!y4'?hHoDj5Zlzx3H )$Aki4b3,9Py%C@FJ'QL`G>m y67vėjj u+Zkb_]fd;fSrXZlBm{HnN2`U o'BgE~_ KF' TWGU@voRrV6]GaJab2(.?V`CxqRz\4ViD|ˏ<[B%2N/uTʏ@2 l?3-3=o^R`me?_tv$ FV,f/eAГ6`6 q K$$|`_FIARre'; -` -7C@ 3B|0 $@ޓ_uʐ 3VUG0͠X_&C=YK$,{c7,+^rDv|.uh@h `_F16XFn[ Vd W#Vp7AoY|'٤}*qGMsVf .(d {뭷ߠ[3.Pd[ \jb?D#;i>f6"]6pCB X'<bw;,nA`mbI[AD#rAj= 398|Ҕw+!730|W_ŸM`ҒT NH|,ͩ~_B8up%}<q lL_ߏ ?@x;XcpI݆ХS3l-?,lw9n҃z@)= * /竁$<h%S}A :Cc-=>3 02DA =Am Rqd[:9@+jqm KXZC-wjвWʀv,`+l_n.tA#2h/ =!ǵ7U McSV <jROf?m(+?7[gڗ~Mn|"/:OHKdorO?v`"+m4(ſ.e;HIMniKbWBP:kk q\.ܗϚZ:\ZE\ml5I]Q6 Ϸ @Jt`_pzA%<)r3 Ikf`,=}OA{im- ŕ d(%0Y+ )t :v_-nшAZҌ!Wu W<_Wu! *֒fzf>ִ'+u r[b)4l(®+nVj^_WUvS`!HUՀxU  w!\w0cv { FZнzOC0*8@8q'\ |v . 3<3% ^ґ|=?ڦ*߂dj켥r` { AGvK>_ z%eb~-dž+?B0GZ1, @ltʸg#&%D_%3e!HbI&q2h e ^\d"`}_A._lm*X=KAY( ? Xzp{bXV×UVJrZ.]zytݟXY_n?  yAev.@ *Ie*REi@j \}_s0ey  W 'z0`m+'@?k@NS9rBaA+<HqI.@;h?Dā.`?Oi!G~\]–ҁ[TRle _ m9-$as!5 AԖѓ pL阂==zt$ORk,0Ҿa ?0 i%$Sq}%~Q"2/uN$g&]m4­~I(e1vzMoG?JђE~̟yD|͋s^}fX  &|!v(.75aD-п]欶e~S| >/nCOqCFA@8q'6vccSw!2 1ׄVQxk#D/xL8$N#M 0q!fZCİPሁԳ+QyXcHmvʏY% r֓ `[^u@NS$e X+KK$m8 $%4`m ^rjEM6X ~MPǁ솁ky6Y6C`"fS&H}ZYk~w|*Zp |@a%=F~9p')NE?&,lbyClAKi\o+eU=w}F_B: @6_;m求ARNB$)'(NsiOEIA[l[gKɹvZ~FR@|+?.h6M9@i ] >/ӂ$dp&x@Jn`3HbI%i@Kov Fԑ9σ`)!9% w]a'gt!+cL2?AI=.ExSmkXbgk᪇>%Cm __ JZHK`̔Mԕ Ux^q=Aj;*#7fmkFCk~ :4fԌ$@aIGvg\@,% ,ZZK"kh6gSW$Ɉ.{.A86 \~Wr?Z>t4$?2|[n/ .>G+h5CA+ ,A? ]7@JV/4:B4Z"K>OӀ='"D\^ԑw"XZHN{nVG ?Kl)- HK@KN~wK$_: $<҄ 2uc=i rFN`2D`d9~.rx@yH:QƂ݁l- ;C @^qL^Af*kg~|2g7AGi- ]ӻUnfL'{#,a>R9- vbB(}dHC#@ΰK VzKq1r@HX pppާ-U@z6O 8NRd4Byw全[QޅĜ^j`++j,>hi}OjzJ[c@2xǧ2ն Z96"N>^%+{DS<|˪-k,zU4۪vܾq{ý{]|2^rщϽ~/E~Z96l^{?Yvnk??)Oe!p#迳f 9[*JPFJ` I vlEA\V@5V@Жy 1[|s|%ROC@ĝPа E[b; !@ c>bHIrptm&A2H>fvviZY![gY"#Y 6Қ! }s} oN[v/%Q-9̒d}:O,V$)%3OR[V@,9hu2@c`5/lmBY'K:ξHkݡ {o| B=kY[^ F$YZFky]VvamX+;B{  /<r$t`/|-|@|>Kea+ zS=ʧX;@  dHm)%Ax]_D^Vx3GV;`~.07M'y"$l2N~@!&%dJ9lG&h Liw:ȏ24)~% _ȯ '_!4$(4D8[mt+6$ RZK1m(`b Ix$4I/uLɡ3< HcD΃/ev<6*-kd!Hl ,,嵼 [|"ɀ-H])@ޗ,g9vV+,ee-XZuk@/8b dc@9QDʧ _ƯTn)*v< $ė@{nOo#vGí8պ8NMu)+Aʇ>3f;vmFhКۿRdLT)_B\N $F$9oxA I ghkG9_ %$~@' DX%k@y _KbI.Y+4 /} 1` SʹZCG BB@F #_W-e$?PLJRd ye !H9)ہ#|? i #)x2{ 9%R|f-P-GAf0,ͭ}=37d355ؚYSMjRZYM:ZW_`X^3 '[pԖ5sg{ Oq{hqv,-U,!I쌩ak AO0S Ju  xߋi%"D|Q(*h_y*O@k nb@i-6ooS`'?tF̼" b>bB/%<֫wJ°aÆ ߮z/={H9,=tÐXȒFu?$  vOe '9Қ1 χbc GbgtYA%TŠr=Ľ&OBq[!r8YӁ?JLV8J@VY "Z17W=Ot!:]H9ƵsGA?$h#@~҉z%C;>e+k,e9)A jY)Բ7y6l-ϛ <}f -͠ՌgGFC xglN:Knˁ,_h' ĕ Y6K \ׂlooMAn8<RBjR\(p3j0c_l/X f3!=HH $)/$+hCm) s[`S ll7/g 0 uT Xn+At|  `-m%~tZDJ4GmLAjJILl"9)@0>@>\g4oAH5 / /\?Ά(d8,:  f`q?b [d+A I*)ZT2Kn\B94]ƒ`l xmUZFA0,()w|_8+@BhwW^t+2[N{$%rII0g/- dj& !-| 4fv9,5F`~*Ŷ~w**]! 5\Tvо=|r=|x7 ).C vr!(ͭ ?nv}`X~~ ɏVD})@Y5r`XDXpKΏ!s&ޔy&G^[ѹn.~ {װ"k AM5MׁלZ $u/cZ_^[`i H-6Uޜ}k9[`ǸiUځ~ee4? "F }.⡧]5jvtv;:IL5"GLAh~0~Xͷ[KX)Xw1&\ǞӒ4JRGޕ V]w|{Oo6,Z,MU[oAhP4=>lӋ3OJ?q\ܕbᨉNFY&߂_lptM(Dx[5D2heÙe3 ~nLAQO;Wbkm|vקJCPI䖈)?]@̠$TnMN>yG^Ͷ.6x3#!ؕt ȟrG``#j}!:[Fjh 4Xu&CІ|Ft7h'/!> Ex}?7X| -q M\D%}Hօz w9^`-8>' :<+]$tۨ:J 66Ԕvd\@N Db$wFa@ߗ젵1n  +_o]cџ`,"@KfIA/Kgl|vB)C#J$\6lMn`8bz{ ݾX - !bGĚ Gme;AKJźgmGmW#7 尜9(5?%!5APP}"nc\GzZ3v\Y}  vɧ=[؀lN/ok_X/"ZFK| $<[m +K@~~P ~$Vpnu H'Z,e#ٶ 8)g r3Чz\.|nr~>`vX@V2S /ֈ~tIz$sA7r2/Áxa֞Fl]@ 8v\='0{6@fFY JZ|%оvY Џn 6ڂn׭iig@o>2hgMX)Ȫvv.cӎi} _{"} vَQpM6kmh S?HZk Nk@9JSt{Y{c_͵Դ$kbho4FRne{uVp y5U@1n k)$(Wiw :|/엳rly7d#d<K~ h)&]0C I*ۗTf/ X/K e*A/i<=b,7{ F,I'R9!<5|4<d`ZN{|2kLd|۟xh| -: #@ɗpdU8X+N^w`p6sGY[:W6QӢB?Qkjv ❈d6 nVxBx$Hu)#@K{i?7/D&~y)R R{&(?S\+|V_xyn0woWMo .{h:~\›P(<==j@l;o@-R@j^\Ч9nM`ڟv55A I!:N&<@ VV 3 c_@P>\,\|> >,,EY9kXy_,EZr`Qlm|v +]얹e _dcrV*nr:P'T@>TK;w`Yc$9J/\Y2r$:98*F?2@*J N֚ 5Y+tv\Q$,s`EjGY*@ݵGlG@ D+pi\Ka`i=K 䖂6-#) :ϬIP &e t@9S\sk :Sqn<&G ]f,` _ ?5-jCP *eݭƮwDD1bN܁PLɠ}4;e9p ](deh.ͯEMv]'.t&qtWVIR77|e{Jɿ>mz_o~tľɛЛN+WzO^|Y0Cb.FŋqY n㓃َUVD*R"FLQi(] 󁕼 { QnB\8WXe'@%?%y2PGjBu.p {WYW:Pۊ T Lv4? R@i/`.@(K>i% #A1l#~vM=`'Z8P).eA^JVQ2`7-?";u/l ׾MMk T*(SlNJ֊4&ISNF:$ `ͬ]NR0ۖ|57j[ΟHE;5]vԚA2AN&7)@HEԦB;e6߂cjg<'+HV+϶%6 n߂Y |w?`{j2(6 Lӭu@R:$&vV*?B<ăKq@RK$'iUD/6ľf3 %WA\qd_gc I;|$Ls;rFngX1`Mg=^YZ0PK49@P] *NT46F3 8am) ~k߃$ y#u(#5mM`-d񁛜 Щ:FǁaklH>)ZzK"x3<tN)Wdx]a-V+7^]5l`ޒX쑽5`_,`3k@)  %B֕d@=!u>;~A ߊYap{怈#2Igp5{F2Xal!n ΃'r[v+ vSpeBE\MZJ&F!t_>6^@v> 3$ ( JC\q!h ~ffl& IZA{䀜 B;]IQGD $8NoslBhgPR}j ,b?C3 %:%!l~\D%DG>{MؿYӸvu`\7~߮z]U2L#uVxy})j^L߈z磂~}YRv꧁t  h9.K\5`\ؽVry D @:Y zU[iAIcygAjg V1=K@ĎFz _k }`Z[JHZ,;ZY 6`Y-햸z`=ł1rnЯDۥ%5 v7f C#2j rZП䊤6I[ C 44?o/M'X-m-iL_GRLNb% ~9 OrHuй+7 [F=Z&`ue#<19+ف'5>OPIG>m{MmZ $VF}2{asADKKj~ԁmuRʀ+4ܕcX]5RLIK;g /}OfO "KAJI֒:4r?rdΧ5wOAJamvێ`-ȟzGρ[4?t')?.Cs:d;KEƐ-Za@+, _Whzph^,ŷx 5)2^H2`,9 n<7AH i[B`l RSj3ЁS a?\ \G 4[9pǵ6k2C'; Zmw$}` yF[eV["nru=_l9[ dd p`K ~@e0ܰPT2%_nvFY-6l>m%_YjQJe7Qc~?vl% /x+(U)UiO zT6cĀwJ +)h5AR+I vzvK5`hmB[ALk`VZW{f O:̭H; O*Id<d"iX V޷|{AKO ,'S`?!l~lbA6"F"WE}g7Ct za ը _V2?vnLٲ@h^@̬JeMP8AiN&Oo&˙| t?][oN9<(@9`錵vrRL+?zܷ M9 L6+ο7ׅ!MDw2o jt#r΃45[2 trCFd8Wm ln6l,=t&|?.S0>o d<9%N ݵf)e$w>/ O_v[K@zO*= 鶂մv ,UbP6|/X $*^7,f4 F`e?"/Z6*`B+f s{Yr,|9_ؗIH!ix 4h#i/Ab5F_1ЕzTMZ F>hjM kDd l-`U@&J$1Y5CZ.Cn82| zRjA ȓ2/t֩ //Cܖt.IjQ, Y"}6f0kA~+AHjAH.) f dq AHi~Pʂ]vl_bsAzB Ho;ԧAJY:Z+/Mc:XE{ހOm U@I%-J0J6`=f0BRpp)BѡD` }$F|#@ic VWbj@JJQ r<`=J@N>Y#LcXY$!$ns8PQ6Ip;jdu[nZ6K/篃r]FHvsuA AIRF>`a2pdM1|a>5>HaI(%@չa;`@k6:^bwHeInX%Yg& CfO )/?^MeM uY"4 }m&x. rl_P:ڧ!=g!^ I$7SiE,OVڗ`-eI 3UUMђ6쀵] HHK >?i loX>E} \Y`VҀյ??A4d~3(d 䒄' kd,j,-n']%X3kOE}G FG+iKb-96O @L~C r 9A`17d@4HH5vCiǓsY>  4diCi MA#}Vn_C\`m vl9Y&ŀNJt`&K `<jQE}}"B) 2kօ Dab?lA`=N{@ґAͨy Lj'(g*xxJNҷ*護%qo_-\2Ň1/]sW=ד\w*̛|ruǃCA#`f?qyBĸA_/8dt*W%nqx~?6IdV }NfՠhI7uN~ 1b[2 VʒSm!!L&H_i . <<|$H 6v8, Ue-^Fk2Y $ߧYf}VGO`-PPP &omفaAu@$5x d%YZQV[IYrMsl+oXZXrk! }`!t #9:‰ÛUtC W:}(ePp lA`(=Ut\P9Н|Ji> kb'@:~) 6ξM9k8)c/q@oI@iIF>5H!=-0ÖpDtHz[ Z[sJ-`-d И%:_We,GAo?4 =L`l6 R %`lMO+.r>fV-hJ= A7RRN?5@OcCk;FUV  d0 t; :F*Sd4`"~&-AC`b {ۍ.U֞m3yOgjjR`]Q(#\uϲ -VM qXckY R[0 ύY!V2@ +3y* 8< _I,$&eȇH ɯe[6 rZNi=rd7|VP«zCW>kl PT*Sel,0E89Lf۶uAԾ'i.9|rFiFz:4 Y~{߮X:#=X#[TTZl*>b79![@^4 "@~Ӄhei44 V YirE`om@08^K[>SctXQgy@}]WF2{`݇R!z^Qp]lʹn~rE}Q7//oC"CMxu 9OXe#,I !BfO VAWϼ.s` ``" \&lO籊V "ݨkAnuQqQE@Fߊ.#>z[~U <3|ZU <সn60xG޾8L*??xriN楏U[o#o_A &bfTdDjpG?^:nT9Tþ_NN`8s){(Lq?Kwds ڡOCAh} RT9 +hAA| CeO kmO(8= "&GL#BCC@HaK;# ewMq? rNR $J{}hY '/W "!u+XK_Wz?uZ*7G2Xom  nX%@׽Z 459*̢G<GMd 9L QrghAڀ}'leL"Е9åPPw Mt4Ke- d|%_8Ÿ dwY`-습;j'm/HE/92V:Z?)Ec҃kiyІHNs- /*5$lV䤞 uz`-e15nvϴi6(HV=(BFY TV%>_ @${8p#ӡ7>!Sj`Kfw׼A:t*О tKL Q`YkѠmVXrDDIb u`ìVǚsl({ rOI72F[r8a/>-eX+̔ԑjKYl+@f#d[, |$.H(YU8m?mmЀjQ  ׉n(h5g@*q@.kwPL_ȪR@ S ={+zЙn7^`rSFoZ]6䐜 q>\ThRdAP J|')$Xh76`7=Np O%FY*%3Xkh@4]e;j Ѽr<AQv`YecAkJ]Vܚگ@K \GK vʚ,D 4Ht(Y%;>p>,(K{r @[H++xo|Y0=|!@uyX2l/l73i&mS[ಸ$.;p~_7Nh .ʽqq?jYg >AVAV!2)PRv:l9 }e?X[YŸBP)\; ` Qu)0UBv? T*$>īyLww(~x!"wD5F ;)JI}JӔ&Y$9Xk099]Є2.r `W,쫁Н.75]zr;tnGi lZX3i$jY$hO ):Euh"@H#(@c,QҁD)CW9_/h `;lw˽ˠQ7fck[ m~dŀ6r` %~]/?`3ќl7$> EI&"Q$$%nj`Nvnস_6Le/Df^:KyXON`e:h'_o{-9 R}Z&.0%,e4 @gH-I'@*Zf`0o49vyg'->pE\cխ1:`jk峺 giKe=vyC@.} _pE򃭶s~63약ps"7=^|*w}wń%B]^A4d٤߂ղV?HjI@:(4]r՟u5XY[aǁIVґ753e80źX 2qwq~ 7lܗ|g?& T&SAVG e5)X1V伞Ơ4&o ll2)(( aXvZ.Ғ_cl,c!^rϤ=a=(uV`oGRZ p@?ddHKAH?ʾ5mf:t>Ќ ZYd _i5IkdA.b K;ji8h[*Z8nXGeE@ QrVՍ` (O=7\Mϥ|֙ 'zK/|+e4y"Áܤ]ΐ:4Fj~LZgi}C e  ?7e`H}#k@v&)V X uփJ4uEA'!zm(?HL,n +C"ŕrE>h!'2ojXR^FඹEL2W$8kr/s*ՏWJ[?gǢo[o#oGzn3|o6ǭM鯸qMͻ^{$.\KH2D.]K5rpNV~77:^\qcL 9~n& 1ˢvAɊ'M 1 7_D7}+c7YTkg].jG }.灉__WkZX?zFD`LE`Z K $dZZ 蠳*$Ғ\2-!o TͧSN" +y6ՠ}6L;~pr $.)2Y KX/hFYy`ɭ=?b@vJu x,7r u~/n `[YARA(k,5LWtuY./ (V+iRp H J}֔V>99%W@3Jz>Sg߁멃H^f҇6'*@?Aާ<9ǒ64VH_ >U9+.vI`ί1,w'{!HpBp $w9zk"s.޵֮kS5G==OK6 ^nCojWo 4eӸ`4MwX667 [l̳uܵCu9=PJ,_e'W}+>Y1p]r U8! h_A*]ld&=cXZn@` c!2]Ď.X=@,. h'VWWԋJrn ^5(t#G-~5:UsE/q냈K ?j#NbBb;ɕtM"?vӊ% Sڌ?D_-ok>w@Y ^$[@J lND|K i<}L EvՖrʂR lN'`C9a߂M6]' ^dK=XO[hoFZA>NV8Ǯnl흝D^MНGbS[RGyk~..olɖ0 KNV-'+6F;Z.x ݯ@$I/AJlF:tt\+>` &vGgk޸"`9hKg\ 0і0 +A{[/m e;ܒXL32AjQ.[$\.T;r b h Emȯc m'`-oխ`cbCY6>ylC )wE>{4)H#SRHkI8`?s H#H ߵp~H2YҖ@FdLf X%X]̔T`l-ݪ;O-m9`| @ p`ﭡ5[amXasm` VZE>E@J|$=!LL7j%F;ك#ROUWy,82?3ZX;o+/I@.,p1nr]ixp%|(*^5.D~Z- C8A7qAr KlR<7rd̓`;m_#A>S Aovl{j6rVbk_Ęg㞉si^--7^~ЍC47υKpOW nqh۫e@M?׫ ce v^~pRVK6y 2ZFgC〪T $k|- 7uA/=.!p)2p:޷^yGY*,*ckV<Laaw_A낕[kuYn Y*šM %OBkmUI#$%w{2V +h_=Mm:y Res<,xz0 <:^nC BC56~ [#eXgZZ;R(.eAj[ڀ# oFb_WԞZZd39,;{EVR|rX@FG8Ƹ}b옶FK^7ouOW#1b$&$.F w>%s3ǝޟ8u!a9 41',U߹;.#(,i& d;ѓ>-cA|g,4,74xgKaAȃ;|7 5/Ae,HKNp]74%$Hd`_ZM lUԺ1GI(WwG:vxfNSpOs ;Y̕h9}tCYE/iBeLa'Xbvա瀻V 4 I/rrd$`W[V ;9%q$2;Tw;ܟkuI./$.0F k Dܢͬ.d߀Bb57`yaAR0Dru$AlWw7A6qfKZIf;3vmԪJi-sHMw]d)H77Ml!=;S:`GNgK9aW,X"ӿalV `]aF~ _Rd6e-99(@~jr) [q+3C05J`m-sm%`3;l$iJn$s` ~0/ಹ.9XP਴Ms4)0CF /x %YRBX Ә }v.kchQy Va`Uf/HԿk,ʦZNa>H&-ɀҜV !QQp'sW"rlU} O1 {0`}g>-n[n,8 nZWo6@ 3vɾ9.pk:Y[ %9|`&5p޾w Gͱ]: ֱ hǦ'i]L@aO}r\[zī=5@::)g cx74R R@ +S:8n9 n+փ Ap=q222@Pk~]Ռ@~"m&j0,XdkH2u[@2=Dd<"6{=nYS ~ lX ʰR3%DVH<3ι[q.UCWsmԖ3Gil^oG1;#KNs7$=sN\ogl;x0Mx0b߾ہUa+ T5 E_Y= P$V Huw~ n{}sk)-XEEn6?/υeFUw@ p6̖ ^?ԑVkj'; ~N?}$;XgA&IY.½s~֓BKM$-n s4'{M`#YrE6\.=@n@%(.E7i`q-̠ 6@teNkl \kvgƄւZ ,Ji+ .(ߒ# c!VjU6U{NIpE~sn|Cck tƴ/+ 4,m@!y҈gn^ J6<`u*i 6CB%/KґSkurݽ d\Jw ]sI2.D? de _% (*Pi1? s{ Wm~o?H +d@L oH$ X9  32X~d56R L-7X>ǹio2S\ t2Kp $ė`mNYRQ i$0\ Dl`m/0ٰ \?mSAq Z\KiQrSnnujpa&{eleҁl ˒i2 f4HЅ6fl#u6f^U\a&Ecv` RIλmr &^@}y쮃k5*)p-<+uq`,dO@O_vPB`]o]o#mS>[!12Q en2 ߅buwv$r$!xS_ ]C\gWC$[% i#z8?P K6F|XD^\^-9@Uyn! ]{@KK̷lN~Z ]b+m*xcÁ@>#'(+Yjk@6:^7o ց Eq"2EH#6)Q\AĿFl`hY@2II ҁku7VX={Rױl>{u-t G}ɐt#Fb1/(@- &"gy]@ݰ^@@F O@JvXWh~,~2п+N H_L tj+(a`2aI+ʀ>pMq[PV6R 7$v}Y\@v)3A(CX36g8. ,%n! e=b>XZZCs 0"VJ52Ei жZ|RWKe -Z GíEY*mamHH7WL{A :[2J9~`+jO[=wƽ*[ݟ j+n'@zhji(o+zRxUr)j7.=;d ~Խu{~F3WF7[& e,/?R"2?,[ o gkr 嶈~ n~La dfYR}dҤN[f"Rв@+cWp!= H nT鯠嬣0^j. RVb7;OcԑTSB<2[^^{)`G`om``픽q))I1ي5 /hl]u.fx1q 7íw3,4ρ4XKl)Ym;*h7-mmX "' { 4\7[&zSAW4[kg]@CZ_(NyJē( n[67qew\&0H[: 4i@B >0ft?le@$J $e<ۡs2Ao}*f(hMuXI(pe ԱvVk@3k1 RNɯ`Afyɢf֚`앥75­E2e&X5e@QLewvhrD%-}_;Od:͗@i.AQ?o yh h1-E $=Q|Mj2pBz ޿_|SOAsSMcnm` l.(K S/D6 -~ .q`<~n? h`_W#. ku ^ .qZE}D'jcO=?4auh WE1bĤLjV;3?gR{زx^xcNtZj*SK+4mlM}4U.\% 3d xYw쭭z@jRSwRMරr$Z~wէ}pc ?n v=;쮀\wrt^!TXgڂK]drY\\W}2}$T)Li, r(m9vюM}] /䨤w`ejݺGO/m+gw[-dwl l2qi--[=N-Uf.Heb]y"d73ɢ, B^S*%Xh/ЋݞҌ \sv6Y CHAWY JPlD~)CI'n$*lktUj4o rޏ Y8.<0kVKjvp:93zq]۶C?k>T I5x\AWp\ȯ2W{i+~Љ6Fu5[R@ZIMp<0[ Nz`c1w2^Fyd~п)V]j`L`QҀ+>6S vIDAT/l@HAF{(\ↀn*;qq2 pV&dh7d݁d Sd7i%+l,H):GKJ^=44%HRfPr. wɁ(hY+@Xy!p'p+BG`t]SgmM\l)c 2Ė6 BG~~)Kgk&"52Ձ"25OL.uk |'smֱ|@k/n&+@kC V[S$YIIZŵ߭kPJ, )=r\7gW+xZ VX3i>7x]ܗ`uE% զH_L_~NdEK֗ 9yld m2z$-Ɂ({yUaOX-EDr^@ Y##Zz^ {#Ahǟ@ Q$'8 ե:V{M l{m,b_xD^9 (W|/tdz`]mV5bgzwm{a?}1a#u#׏]J]ü}.y.bĈ'AB͋5TW\^u% DΉ1!ɤכ^r G墜1VDH@^+X 3Mt!t߯ rZwAZZ6+].f@&>Q,xPQ"]e}o6X[[mz6$z dMg d?ZF{@eH kA.S\$ϸ r_3jui}C Pڂ7ݵpN6ģ"@Kdz1U;N\ʒxiGQԵzjz`}t2Re2K^~b2 w{AH [JZ@X%s%k_%'ICo[:ZWjpIW Og⁖FZl \by^eVGoYS+-`AR*O%2eAFEG{ 9r\A+M'Xo+ )%rrO!/@ZPSBt]h/AKJp@gi+] ᦴml H3 |.{4f2]:Y,J2%ut-HJrYFe,@j["[&d̓%ڹ6[{^[ ZOwډ M\ )PvG{9bYR@g`iA[pcƀ>շd,f)i{:?3))?ƁU!$Ky^u?G꺂l$$C@`_X)#\M opp 7lvYgzU_4ήH"1 ,z^eMil6.ֲl5e Qp]%Wd~:h:ͮف7_e_e>(iN< y_֫zi9%X<5tήdk{g,>}F\faVqmnD.=e*Xa!Teُ@ґde2yp0V"jp\VK4`:9 s``FX? !=Ɂ~YJYg =hA;pd[\pqr:B>"l 䆫&%Mm3/K>֧<Zn{ Q ɦh3 9PU_xkU';hkL"x!` ʤ9YY4F $> ^#!RR *MKh ZN[iyr2O.PK B$g E<!7kD hB#k ?&#O`t.ZQ $TY-Y$HRI)r<'9nLwS^xJ8L4R}Anʂ4B ^@up, v~@bI tH?OAzz HnWXf B#~Go6k; aڻk{]xIh%}3c`km.e Dicjk 2B3PR \l"AJ<rP|@zIO:af08ac@;(V;gyJRJ# gFj ^dd4vA>][C{"ESTK>8`oR;.pfԮYLlElpW#ngo ?: tK@ron8P,wm )$}5Z ] Ч ~PPg`3lH1{gI,hMߝGi7uS PğY Q!PIJ%by] T0Ttm`E`Km.p58E) Q"/~޳xO|'A׌i&4z} Uz'>Ʉ"*#F141b齩Yn.dx@(u(Ǹnk:Vg[cGNƞs2`HWpr iDSO ס?πi!qEJPOj`.mx]G\g[Jb ̖`,  @Is9"T҄{ln8ŷH ~s?Ai `7%ffZ_kyG|"i y*w7rNBvXa WU``*pAƅ+ڹI \.TrdvU% ovvV.=Ԕp{ܯ`vl).=@<LO-޶߇R xɼ ep]>'%~3]֝7U=j>\YWUw}@ 5muVSIho 5ֳVݵvֶv@%4wAў,%l`W]f5*-c=o/se!>~{F+&eʂxӀ;=1RsK Lc: d+m(.]qa'lW5@F0Zƃ6 >H+iZ,c %32nЍX*6t6 Tu`7?.Ǧy+@KZʺz3@7]u'XKͭkY-OBH*20VrK'~u ѩF=q>pfr 45)[^oo/ NgT_^GHUsbΚ)J{)&ysuFq,f98O?y">WilNZ/]va 45 \" jljg]uH"} t;y!P"}@nI6vnSTx`EZsƂֱ1 tKpCJiPt@ISF^Ekи_l0Xr҂`q)!: ndL {S 252p<&==FY(cPR_u׀{=H2CҀ=Hwi:Ix`'7,5hr[*l`0MA2 _I:LK'2^箖H6Kp݄Pw8j۹ )eAjHOH` /mPFzJY 9jR %_\VK JIF9E<Ai%-228+vxDN^& W| _m)XShNyڂ 9t2CĖTjcl ˮp'X@/jBOnv(n V`b `wtN }e!AH@7g,] NIJ_n | tE~ =cM%7xg;xr?G p]]1Dp#nUaihR]K\ОdqcY*J0R܍vܟ %d@v}oAqEFX1}!!}MZ$ ,~3 'q@>"t_ BMۀ7pچՂȽ#vC؅a!|Fd9} XwAC} Kra̎?R"&u{wQpN:9ҿ~=#Fu1 zW[/8Uw dΉފ{$oug_Xޫ؇IΟT#O4 of~/ n@RIjm,'fy(EA_ {`ڦm>ʀ$w]%P)W^3kFp 6pw\z-e[.0PP& [)RTHv{yRSk ZC]z粸>1$RJqO~mKjrT6 QD\2 dɤil/x\\l5c0` W*`- ߀㾒i^,dRZfaց?%`\o &~@yV2] 5u͍HVm@s M[-߀tOKj8ȪSԖ:`,ӏસKЏzB#Y, %m5Pi/k'6ǦҗO,ම6# ͛ڃV ,]0`mU Iz#PZZYCFO6l$Vd솁3, Ic2Ip{BoOpנ~/pB4J#56.Wd% X ~gc,p<qG*^ p n9P%X=O5r \:L9 )zo@``{!{-B=79u nAZLVӄh=/S!XidXv[ uy(2]`yt>F=ͬo4+hHoji2z7/n=z~n?4:C`d Dm+3 '";:ao =[6UՇPPPE?찝,%v6N#l|?{R:Ó6/\esOwV +,.bĈ- 5lsAµ ';W߳'_~pغys ?N|w >^ ѷCW5ϟrQ> @7^ԿAHie"Dd akcWq!&5XF4n`hƔ*RO~2v}N)p]y^1/Uh\,&X[z?~&a9 l]gU?= .p+0l-hGCNu޺,Ŭ4,b*sSހy+8nm8z˖}Aoiy~ v2xUAT.3pzp^!xVn5j. b#6!fdu ? ?*J5rT4~aB 47֍Kves{s\ZЖC3U V`3; ,g=@^cyt I U,W\g~w Zނu:é)ZJjbMd<| H$75+j)Ķ$(-d(H#rb@yJY%VWۂ5X)?Z2.y2y)7%PjXU_^H8H$vq@\f]׀8H*![S+ ;`[&WLeOcu$ }/*g@ʟ \:%wN16rI3n9^7F,.f.;YlAu tmb@k# fbs8&I7d"9TR H&^7z Mi5%P:T2`3 H+IH  W9^,$JD<)hRؠ ~ !*d+86Q`)Ek9t \f|ւ|&4h5-[}u @\v6<c /䑼#/pf6Ѵe<0خx?y-?Ln&pf)8,>n)6)'J^ LM;I,;  J@]Z,;e&XAͨed%gu8khլ> &@j lto 4ex)CAhOhpP02K=G`m}aU29p ^V/"6F̉ _Ů"EU Ҹ@E>'?|-M`L16="S®% 挾5!֮!s$b!~}YZxR1y1=+Cvd:껩CnA' 4iVf?z?᳹~2Y-߅}Z?BBZ`3i;Akgk@Kiԗ\.o I96uI% ?  D@[L4/g]%5طZ^7v%H"L@"A8>;nڶS8a_u:\Re w2@s0W՛$tY$n$+g V'߂\wy4d$.'$.CǤo`"RBZH*_dL}X+je֔#@<(C*H{(cfi zd[")Af \o},uC%5g "1Էz" I6 DdDNj.l'7uKD RE&!H[(_ėנ=KY 2͒RJ6I IarrXm76X!iYHK. |' k%-L'#XXQ.2jzpeTͯխ w`t̥pQq [edI{gˁs춋 IդZHGzKs)RZW $ \gXzkYL_V΀ܒrdL`5a,0 ]>n>@3w=?AIA$`wu!?OjsK erԬ)nOdSu.3VFI*Mw4 Qo c0M*($\Osĕ NԳ6yYB]d?G;z@v5j޺'pI\!t6{k N~`Y4;9оmfyp H@kc[*+aGZjK/W%?ȷEc{ak opwAN|V*ge8PTHB*W GrIuփBW5ZHw6` $$T r$l u@~aLf?jUxlu(5 \5ώX%. E1G?\PXj m?Oh w `>K$@5|{ܞ͔Vz^?k,L n.a=%6VRG`mmmm&H*I(^{ Lg%;'kmXb>᷄ԍ7v|?NBl*bĈ~1kb?_aSoׅG=E|p^a6y |nq| >e^,7a캄#Я,= { )wE Ǹ G 0#88 `x]O !x~?.'t HB w@j p/eo6-RY5о~ tK 4A)GV.@YiBv"eV \6FHi`9e+NmRPRKQNρlsi@F2$4sI=Zͯ@6.p^p}dև6U@'T#1!$*4\+hnSw~JtѦ%w`(elXr-e !Wҟ`Cm3ͶNZ AgW p /)t@p`,;0MHB2,XzD9Y1T$9n0NMH`K^Bwhvd.`cZk5v+[o$tW+ -`WEWUv@{j nLK";K<ͧ92[cˀvԗູ2t>`6 |4,$&3p஺?uvށW)Pk  eh!AnE;|/MdhR`)D Վv u8xK e3!~J')&~5d)/"{ ZKis:UOJyvE\j w{ Q`Β3FR@,A?<<R UiƗHRtm ?pM(;X Ж w]W0h6E| kb_tNxeف$5tal͵.Wn..U E*,E\7ضEd,1Vʕr>D`])a`kA z0A|JēR ܌@/`+"߅#.QV@ VnDp䀌gR rFI§WBCqCEDϥdg5hSt5mm1&y +4 F[x @[i Z,Yk}i,ےX@꺣R f{1x=-um낯G7YrM UE1b?'f=kzo;Ⱦ(w\/]fi~L|󧏯+q}yCy!2zmtw3BZk@;j'-K[z{8hagBl5Y*kR7V0ea;>#7ܝr`m=I'(>V J]7?TI4xٽ8^QJ?UHLHꎺ Ϯ ?J@ c,!hgcl ӐVm+i%DwpaA;NjB[z4&$߇ނݵx;=#VLOR_ʀD#m op-mT?}vȶ,h3 U\rҸH<';7Dv {S=.fZ@Ϧ??T_GC@h$Xm+h@"䡤e/2NY#'W˫鮺U/:Nc եTwĝFlʀ|rdAamE~`DxOzmܗzځs Ape\.@K诶6 %%hKdp%4Xek`_5tN%ஹP9)~Y\惜:y_w;"H*5'Nx 8q5A򺲒\"W]i,X9d]lfN6\ Hڃln hj+i@\MWK)D I )FVaAi mv.mnrLІL-#I_Ip.PR B}C~Pf{B@Rޑ ǛM$PHQ,%syY;XBSK 4 A>8n,&1IƂ$.hac@sj?+PT@ /W傩JAWkAow`jj m,&;pPPPvBbsC6KuОd)@]_=\f'HAWeoDv" [?z_GjUҀ{Gݶvա+ڪǜkȒsPD@rR$(A$dADIQrP$s\asno{oy>ڸ7s_^O0 ,H P;t]-Q`9Mmp4r!(4p jeԞpQ*J&H1:y1s?ffVz?(zV?E) |I;{lͱ1r1 Ab?0#fL9_O|/2%|4q~w  %JgV 4eYjLw E,2ޮn~QS6QL EUЙPj$&G $!BC?AIy rUst_YGv-PW>y$9q[΁_e e]zRiXYj=w7\QdB%wAE3*^+kXOkhV3~9filkT[d;KR g8 6bH 1r dU@@Jч~/PΪ[^`1.{%YA =XЂZVぇ$a5pt(~ "`lOp. he- 'R |;Ql 6P@Oe4W)(Bp}]nsmkUA2lV/aЛ~fĿnS{ 'mXVKm2Fy&ۖm!uu% \{TrL&okqiҙ+uZ! \Sh,Q,}jv% H6,)!( x|֓hlWH$XnKo(ERR`+ )-iZLKh1n,խs@s |/B4|-Wý n;6sd(rS.@ư1 kꂝv2X~|w"#X[; -dE6AЋXI.ZR!2/{d>X Cmprjz\Z\_j52CdH䷄5-M> d2scl/AIG Hf I?ය_pS K~3*A#w,ʚwEIn ^z[σ.s4@b!Rɿy""ι`%-?sAj[8FNCnқEmO@JHF)ou _Q[Nsi}w,y-A"r]lY ? "@. c=@?9Iz``mMwfX1} %" ?/@K^a/H'OAdtLdOU@ZЗV )U >@m Y &}A|v*9 ՇIirR;]n}yn! GtF SgNs $U64= %IK9yk`->5h X=5<@qa sr lρ >2Ng=9A}IA'h .qQAN~o'rC!t "t-j9s YoD~Xmku ,@[O | &d' d\fl:HFJpQ`fڝ jQOO{zTs N-=Ѕ|WV;"" |7wBmC9B-AbU@vcI&yV;4kjq2][vvUbRIrn]Kʹw]y [WM |EUM- m ;dI&@K]i!5@n'@Z$$A < kE1knp{Av1J΁ݶ0N~1a-WTn|&ed#n6Zk1{ᧂ}#jͷ: d,p3}` 󾄿 Wev\uA2Kz $`],)bEG1\@𖰁/kF FX!`~l!p % 74lKi'0m І|"#"! bAp):SЌ&@7z\u$eO:6S-`1vR5?#wԔREGV# d| d0)b%Z#E"pd[\g db ǚSݴv\q,E *+BC4kik AΠvK]I+i4AJH`?[U %޲Nzͯm W쓹@C>{ML+oLuAԨQW!\>]>:MC Ua l/9 ]iG Grb>hikB8bFI&sÏ>;x`V/v榞wttH(QOk.~|A&*]}{B>ytأr/}"!qao]~XA#ZC S>`~$HRl}lLN. QFuQô )3~O+ݣອ iNE[>{|.arCfS"p\f$R_&3V['ґz RƔhf @?^6\"p]>vWA2*#9.w8`gi $dt`'w ~t@=9,d h -9A#Xz9 _ le+c` $u#mDž2el&yhOljlpHFy"Yh^Hw@5  M!T"Z(ăT4P*LF?e,j!-a#g$D&_p*u`W AnKM eHD[bЃAx;5YVT2>UzSsAC&d= A}SЭvB$gR$-z0v`-lA/=zPO>)~b{U9#9 V^ uWҕuGF` d?g87wxK& 8*7A˒ xiR;APK?Rٷ"2HKhIi4ut ^yA"GQi2Y$g′VZ{s tf ď [e !/ab&H52J'p]Xh=%6 $ĸ $W j&R@>PPPaPAzJA98bݿkIy%TS 1omM|ez6ƪ{=v BB7}/_{u&p TRevVtѭvB 2CV^@?c|q5}ղ>H~`<4t`l˨l9R{4wk\_4-Op O uÛ jYԬl :Gtm nEXia!XL ϭ [Ud.6,ݵJIkAE # !mWt>|:/*&k 4 O]fp ,;/Ȕߑpd^6Cp&玂Hc@ =T:Rf<dLno?.X@L/-R]*IK4֎U/]`SXz&*x~bM 3%Sb@[2s4&/ {epv d;-GAI;@[C㪂 }?C@԰BRi.@[Y] ꞁԕhk1@0tE  4 > c|RýAgeǀ8vqݷ GIOlcm/Iy"@t~YFzRK-)׏үb왕W] I+I dîir-s q΁zd, owlֲ/~+9%/,yXk 6abT@q2;K/`h ( ▻\svf:||rVi2#iE P(8 t ~K-@NJ9˺յX ĕuSfu}vXjur:.K i9({ [8"Wq"p)*gk!yBUp\\`-=wOpujv^w֥zԕ*ep`--ip]3I`rZVp Tm;tdŭ1.K`>\+Ep[8Ѷ+ w} *e3Hr2 HGҀ S<-@fRJ++by-/]*HZ5rXJK ˃\Z]eR_\@u԰^'#%3lvI:F1\/":OǁlNA,AI`<QBYCe:$6&DQW7{v?._t !2| n|pdmCؼ1ybF=W)'(mӉW|yatѣOD%KlqOʔStq`!гB t}W|z;hQGY?JŲ[Bq!>i\!s A~_?+V|Z_ghG\j%b؍[i+#$`D 6CE+z ؇VF| 't춅>ߺC賠r}\\+гZO-p9NDiu%@|YDqJ@:ιwoH82 J n$soAֻun+LR]!xV?@ɍ Ƃ?d"Ƃv%9H K7eh rRNY7$FJ(-\c` c(؏e"p\}/%!^Ymv{M >_Ÿ~_@kJu gBs1n҃ Mk |piD?JBqYx`GlGLb XAc{tjJ Y[Zi`++Y6S +ài|_=?{F;{DMkl%X_;]rN(R,]h`8e2CyNJ;6Dh/+-_[喸u#`ҘvSq,* mew@KI$ 7]b; 3t"X |#CehEͨ@i'} nu@_؛!yD0l` !4?*d_#X+ M0A|}N3 '[[>6ۚY>CS-.{*ݷ#.(DNGvE@)t* ,c=4*Oԕi n+mp*+%  r>Դ|}g[M[`Wp|w |2ҹAv/FpغVFpnG06db:?),86@)x3H 6O lk`E,r愞@dgȎȶO`[CKtϥ} 1l=Z~`puGe&AID?`p[N@t$>.ZUjGŚ{(0jZ5pEt_>=dtguxhڴgVNrҁFEZZA$D%IlqO¸ENxwҰۯ=OTv$W]?ƍ ׇ^=lÏ?h$_cc׀7&Mr8"ip'а] aіd-D^5 G/ZH4Ѝ/ VjB |9/ ŞH, 0#&#bW9^Y.䲺82I*qd3 ^}Пw] Oc[ej܊fҚ";"ёxtRSJ^} ??o\KVip y.\XSCAH98\.ll7&Oa f6)-кZXApI TIg'/ lu` ]PN>w:| )9)̱_핍n3X`&Xz-m1dpWty@HjIR^2J> y d/+KVZK|fBP;hZAPUwƨhH$aXd$蟶..+~6AE"Sxe[l&[&HoVJd HfgH f*FLq,_0"#TPm Yw՝*n4_ 6ADiBN dFjME6tV,ڞ81 >nz>AͭRB`F1ƾ5}OAױJ|M{G{hl_2E9e =#QYmsGi`, -4gA ZT;ZIN^J[NsWnHI&MqCi C`U\ؕ7EZ(/@2IHҁmZG`N?JEUj@sk~- HI?0$8=.C nh0ݍb stGa.g/O ~t淃~.#kn jk#ӶUO<ddY醂l؏hM#s$d, Q$/F;r*`7-'/HAQ u3+ olmi4fw­s'A^= ~Y=U&5M;k ̳ELIawu}Ht wq:Q!杤哾&}T$EԄuJ hb2A&'G ٓdy_SS>)5klb=H,%JN_c{Iu O,YꍫWt[6$׃nƯϓ>쎔P.<!K܄M56}t ^~ WPWXf B $ФP,$!Iົ7D^ZrK_B`" %pNr$p\r lm")DO8*6\`&5\c>mσzV4j 5%\&w fDnEE )w~[g@#Z>/Aj9 >7VBzo00v9Hu7\cizH=Mz@Kr'}_aV̵ ]A{v $VƹyIX&fK@3kW 8&XLsuv Aj= ̑[| 5}[si O_&,M9+g@*HU}@Y+о~P*Gc2h/n hF.3!͘@|uEC6u 2C`Ym|3/ n5HWu! =./<2ĿY'[+ e} a%gA.>wGl@/A$t]qy RbA@YP(omOV?u-M\~XO \A/2@X}d8c,W '{Q];.AԆpӨ`孛A K#8nt^WqUzj_5ь8 7l-Yk%1&)JXr] EB[=v@ 9 |+?-XIF@.&KAY ٔr'|Hj`)@UƁlS2Hq $APY)l˥,5__ҧo ]_ڂvc!"+`2 apuwW.sVH#4m߫U UV(L.) + U%4i>g,qkgSVѣ`1v" -xINo]}u7S5_͛o6saw A8Q- q5 IT59kxI)sBI$ @_[2V[0hLw6YW@RU lWqo,=,d Aܑ8I7 a~,I%ɶ`;=чs Y]II4uq@ #\Jpb|i$3_]hLp[[R`d5sen+L1U[o Z6Y%)䠄W-qUTI&w%%Xnf!%ͷ@?f@nL)2LfͦkKk@ur}qYv8NP 쒽G;28DmmoX5fX k5vsE.. S0l~ 0`׬$ANA@=~;B$SX$>L^ $ۭ $| A75e"fϖ< T ['Q>,n|GtWwyGLI TҜ)pت͠E l 5X d|6NsR rX.Ke 02ف̤߫&u a*Cv5!u-`x`;q`kH&yEF;掺e0,Ю6غ|+1\jw@=q&pt2hO%kV:ݶ~\mTE ccc@NJDkV앖 /A&lt&6,}a3@v0OBp4)1p]]Q74ݿCN׏AkFJ%,w R3]ݢOs)\R- = -"3 I'&^H I$ zhё>mR d8IUJQ#ޡ.RE@xI(eO {O ُIv$OlYw٥z0{܄_WEDx{:qo=mdұ(Jt3x?vז]ﰇ5zoZy϶4 Ė *I :'mEDv=.fd#!w .Gs?=3C炟U67 Ir' c!B7bz\Q'-? q6u?Hey I fH)/RXVcl X)e>2 -sJ>@KiMA/\; REQxw | .r(J @P%;8Uhm%h5z܈OtQ,ݳ@y㚃u`iUzi,ZCݶvV L~ |lv2YNp9n O,}]keF5\Z̏/9`[ %&:=3(al5{Zz_ jpU\*X6[*KV`̇hpt^߃ sӤ"І$nLa9Oj5\p; *\|-u`;G6V\kxC'kGJS{(CyܧA'\ K}S]Y@vnpu *$DN%L\L/ (W@2I6/ onȟ`+-Ag>]Y| Ră{Ҹ{]q@IAgM!h`C~d'@R*.s$3 ][47Fw-U]1|KO[Z/I xd 38%+uH9 \=M PYUp͂ZЈX[@}He -K7>PJ,MkB`hh:hCkU@/3[NS@gVu+]J|lLn.{ 63$5Xo:eYrY[=u~#=/cpQnK#9?i n,+j$|!_q о`u|O=].;;^@p%HQO6)a[fGmva,H}ACq֖) KlLv! 8)U^(^|] Ҏ}w#ɝ1҂ gdCz&CT(}!D玮}O9&f{`C{(O@PP* aAdo>WBó,CT ˖V~+8ye*۸̽aF{OD%'@OքA,-cR?~:~\_-R_΄*@l[ wA$Hpl0,ȧ Y!ݮvB{^a(4*AHCuBkUF`}bGew) d<']w ]eZ"a޷ $\ WȽ&>L~mr-b("=w<4n qi}c'G} >V^u asAsk`J |&_`op%8v[ \vevm@z2lmQ~i!9,*\rZPSN@u_e.rK3"C|`ЌzLˀ堤Wյ@mKu5HJ{U=,K yIv6n5)H! \ā/١oi3 XrVI`Leh5$%} [tIV KR @M:`_(Ak"-<>?Lg56 *pm]AE`4w,=:oK1 e ¾~`#MYHvA.t^'Baк>Fms\Fg8#J2i|Hkl㘌9',-n‘l]@,99AvP hfy+뮴 ǻTp|ு~'|4 HÄ Mm j!}L'~a5%n[ ֏9rO:B¡) M\m |jh^+̓b A4w:\'nU~k4-}) /7mHHHt+JN#?}MwAˇ|qd_ QO+5*dDb'ˑ}Z r,epao%VW!撃lf,ŧM6 F5dI6'հc}*SOk&?.%J迯!q#_xwԣ2?U=W߹4b3sU[˧J| q= aq!/@ԗ'bY :޴ @OkeŀG*:QgJGПl q5E_H2jPhIVp`Vvh=P'4kw)V^Xk@*+pn&~fӉh%ktـ<"0%ݶ c- 5`C'XA7d'dp:}BCCNf2t+Y=;lW p)3Ǯ|/6vn0 kZ` mTܣ?+ܟnLqнD0vT7ɵqCr ST>*i$%v fy 8w|N^pI۝F xD%7II[! $O"ߑ~LRQt::l#s ,%AIf"m%?;A5\ZJzqஹ-Є)i֙3 .xH`H)!Y2K -]#zP1.aдJS V4?rl -gӮɛ'izgcb6u+.yjba(QD$'j₉O惮ͻ&p!Uſk|;O~<׳/~y0.EbǮ{$NA.J9y ;h)nhp3d J :WS r@hln0Nrj?ffXR g,=|߬%<W )5вTseKpg>w%.U t\ 9p1 %Vʃ}f?X/nmAR\W H i nϢ~ 9VI>W""?%9%s9p9R$AH J. Q|F|{m fA%p=] Wl?J[Y @c4B^9Ho7)>icv-t`Cl͂Oo`i{ܪSp c#X#j9J/`-pn@t~ RA9%DRF@qޡ=A ?hW8^n]H>)-i!y8:\@}fK%W7tօ`>zNr]Y$W@]- vS`=m.36֖gx6*~3=! nc/w?CПmMйquN2kV[il(3[J]*J+ , Ϣց%ZQShm:z+!M%)$ -U";rM@*w-cHJcdf'iJACS|Qo 嚜DEdEdAiR䤌Da9L9##@NTB&W|&»[cƠ3tH6n>Ǯi,TZ&vXJ_q@8XkAfKkRLV8΃٭rC@®K[-3m߀;NfP[1L'gv,lYԳ %$w@_V\c@hR֞ *[f+vӎB̗n` _hCBp*+Aѯ%) 1c'wC%["C Sdz_=2o;<h>𫀳o!"|*эĆZ.3 z2e, 4fӒ@ WAl9T?Wp (Jd50[l 0 찮PWc A.1 A$E5m H/+@^O$cc`s>ln-|n65|E?4; =|d'%Yl[VA|)!ݓ.go ΄B\X3]) T%+>V-AAʀ5\htЊ/5*]G6=/ d + [{l@crW҂TE,l)0Us6-< e q 8+ρRސ.tչ,3ubKB4!}wH5BAajpE\Ơ(X5ZST;l/A1}3M :N}um5B&4z 6TO#h-ta41`UP_!n˪o-XrOֶ@FXЪZn?0ʆ<FЭ13]v)c|p$kԮ_ko&ˁ &*vp-zvr^2 .Ut9J76[7G`U3F&TښCNypv׃Aon_q w\ 6,xհ) &@GM[bb>lj%M1<:\ \`O(M*g t=t1t tץ@wF1 rZA`EdM}dg. %QpͤG+m]o_7M@,ăb!c㴇Ÿd}nր k8Z19aLe XI ]1 v%eD6V~ GKd}i2H<8Hk:+8}-sChe0&#AkWKDI'I#$V8t/d>lYW IVdۂ)A %$3-Y=Iױٺw1[_R|ԥ'%J)_qGWOÄWƮ-ED%[k}sߍWӏX<,O=-bΉqY~qѱ_eI%oȖm(7R@pSe4Ń} @ȇ ߆jI')m3'9 Am,`e,P@eV^a7/ 庂V಻=RB`smAU{}@RKvJYd   k""9#a#]%/hM?Q-d'AZ;tḼڲFkfM֐Ζ4-JN9n[CրjR K-.[ڊC&&Y!H7ݖ6_z$p߂R.#~b7o@H)9nYPQ:ܖ. hFͨY~ӏl!6IyA/ s7A>rHs+AFIN)a9qglp, {<SjRһnj⭊ U۲,k[fK\D 7<jrzv8q[CJ`hݣ sz0'҃.8pn_:KYp]3Wݲn |GS-;-\~8v]oq:#GAUeX@ k ]wp].ӡ*(*r4e6SLh3p]i 2I!\ ܦāu']^ dHl-k) vD/@rC=u>KiYd)%slp[j :Ӂ@O~`/ Uwr֒!@0ynK#߀KpC]'Vtr@#u $$.J%lme>H9#@Z>@vH W$7mk0h{k]ӮNii2]VJ 07AC4"e zkF`IDAT @[N7e 9$Ou5 )%$6s`Xt\w|spm R]ޕ# I?TZZZLdMji5e묂]hE,>R=T `\{n ,df1T怋@z3}m}XWj1[xd 4 GJ)lZ[kuԠk”LX:]$J(|-:P:ty- >P|O>pkk/\}ѮĀ\å _08rB B'A:fך|S[">l{:T |K+zW;vTo(x@-&\ ,_HZMB` 8H{)RSPP.pYA$J~?AD"@e} {-S8q  Hu)& !4?T\~Jƀ^l io@hOb%467\a=X5 c.PMj 'd'O]Wt^п+\,7 t~}]@"UAhG6_ $-ߵr}N] 6,, hA$<!дVLV 2 8z~{w$)<.;Ԣ@rJa1U}_kt{.w Th\Ŋ 55JVUA5;+3d&HS 7}LcYƻ !'@[,le 62=H} "rV=XErB 2,U@N |y  RBJ-߲`;)8,MkU&h}UA R~{>w} `[pDFJ 8߂5(s)޵lrbO> N6)m266ͥM-vKd6K[?"EHV&h [d }G{vF]\q,9 k/\rb + A4HHy" ܖJ["}_?la>2~ #mvye B$#)rHli,0Cqgq\X{&`{==]=Ot=< "$JK #MWW _3^Ӑ_ɑ} ?-lX\HFrρL" !x _dLAh>ChG&_s?/SzmLv^|}gWbyD$YykexM*8醚B 6QGҫ+<:ރ>/Ũ^ϻb%o)>D6`XW Mp3 /)&jBtMdN%p?ɗ Kn6g+_4 w~oU(]; Gj־Rg8 \";+ Ep R\gi##@7'Xo~Hj)ڀ*p'R+1D!~( M2`b￾=תځ$9g A$sV@HPD2Hd$(9dîϜ}1z_ԨO͵U*05U2ɍץvN= ArG9|Ћ A?K!rRw $' 5\vx-nzd`mE4_ABëBູ hEwk u_wi 3f.  Uۯl'= X.@ v/I!G6MtI]"&Iop~|N )# m'*ȚBJ`7mӃ`;-l^W 8}' [ulI!%Gz[&﹊. +; $7O`-K9(|JƂ>Sgj-㐜~ó(NWߍrIHVWR rM܇ $N|)] 9 ׭o|΀%,8) 6YjGm`m@A)RՃDW-j:kSzڀ/SAJ S)F?LJK!N ֟@F^U@v>@_?(H(3]7`#P)=.s# 6\bbfWX($ـlAVuU)1&PղZ}AO4 H2< U\R &]#M6IL`Fp(̒?g6>D% Z 1 .q`g9l.dqg* 3@VZ 2drA{jbA>mXClbfo@~ͲBC?@!JH$@EP\We޽va` a6pD#Uɞ+ +µ5!>t tw@/@0:?/_ꧭWݶI}>g}waG5{6}^|qMx!q!(nc0 ,] eP_fO5<\T1^.zDq>8H]y-``$O6rQZZZ M),wO]V*t1 dےS"  P!^t.ֽ``# ͬ/ }45@l .{枀$s $  A>!OA;wdKZ2223<vA^# <tY]u ld4z@0 l _%h)"PH Ij=zpC<\;N@ 8\J. 6n|L & d3N҂qVZ&o HcKyĮܴ E'y|P)h5 oJ @:./t(XkkEs"'/=y`-UB 4rv;"u h-HkлB+ mr3df_FS <`=c-@NV!l]`Sd_T#dsЏ x^#14ك`y:ف2mA [Z3!WO:GI]pdBp%= @)F DKӺ77C46;;T׆l"C~Ֆ =y(Etvn_D"7Voh76m,7PT#92u6 ~w"ɸ:U'@G鸠Ԯ{ 6JW[7. )8?[n(_%`59U`t0-ҽ/ "rYa`5g 9W :A$!8@P!`54N0"6 NU.[Az$m9XOkg_kʹ`}m}nKVhYL"oF^Lrd 0i%p{\.eKn JK* :Q1{T, ^X:Ka9"@ րT,p HE^)]Zp@im nvK]%v_fKz\OF K ] lݩq}]U Mt߁ĈJJi!h SPH ^@!ة kiϻ4Y"eXrjYuʠ5h]+յ/\W Ӂv{eOAev9@wr-jSl'YA,K@fu{XOF+]nбM *GAi}kLfM;``W@JV".E\Š5./ 224<ܖGVîr|Oo)$ҟ252`{+ꨀ\ -n;J<G| e4Hfo|&k 90,]'`{S;miE"=^ԒT҃-Ͷ?I7pX`HmـOmͮo[~GrЊZTkV ޱGV$,L v]KHfI[m 7 ;XbpQreWeqUTS:rJ6|H0.# -iO>44: bK  fgӻ۾t !eKt ;kZʂ{?p SI ]\w@^\My[ܕBC\j+p$w!٠: \I>Ѝr <6h^u%` e8h_dYZ`dl/԰`y^շtZ1+Y/&`!X $) Bnգ5Hi 6l^I@^MZp Pg6Ѐj@>B0G >&K/)U %=A#?I|W*AL7 66H^8A}!T#<4HI^B ;/Y nHH%=`'Y3!*Kt1cGu鍥fJ|M9SExZ#|~{8v w9ͽ[vۏowۃkR|̓>*+_ۋ K_]^xeqõ3f;6ZREn;n?o!kԌ^ +G{T`m%Dp0bx 1;f5J]is$?/2X0oB '".p^JKY`H w?#@&n3z`HXBU|C_|Ͳ s%m0H^ka(hW\{`l;aO9XYkJuBC@J;@W<ȕ@{ q﹃ vdGmKA6@ZI6/M9,NnL24w}@kJsOu=f'm2~~>1­:ӡ5>K_.Am}#]@\c;YeV\y\ G[kj= _$$`l}{zAdx8 SrRZjKe/ k)U1 1ܐ`U[W0|mw PpD\` NcD<a##LL/bA+0=T5jK b.Q;>iFJywd|BK5 :V,6_;0UK"ʼ$'Xmځ9PĦt~Iv %%ݷ`y-uиڑW? ҭ ps_Dò KM[|Dn@PAu4qAfe`uHcAJIԦe@?L.Jq584 ?٦\V!rH"-w)AIp]iW;rrfл-1\%۲\r%@`fV4Ml-n*.Unuϥ Jȶe&*5% DmL+?9Ӟ;  HAf,&˴!.Ť,A"% #,R d E=N)r";dž2[k`%Lz/^xoW~^(*a=[dxˉ/7t7ܼQ!ٟr>x'g< ^7=XL]taB_?㖇FdžAtt}!eO zst=T.:YG $)iQ$l3KW"N=\}I+uI1C Zl e=_v@<-Us[eY ^2\2ra[rYØȯ`b! tf-+G#AK{ Jp=T eā Vr6A>,XO*]e@On 8 ~⧃# 6~`bP8hhX%kdZ9Y?~;3RƸ %iH9*@9%pd @rsP춽'@gD[,~]Bp5|+_hE[i:CiPMtRUB`W-m&av&2G1Xn+hi ޮj[nkRVkuY t7fh?hͭɁ0o|k9)9 ZAkj# u{i"[dVȴH1mR dLKЅ6C?|Lpݡ ~2{ARL8Nv+ޓ se6UT`-m%X*aA9}Q N*XZKj{`K$!=i@Iy:w-q;e-oO_o '%'\" Fq *;<~`;?E<ߦ"#M&R&s## AJkطum024M_ I_PPPVw˱{c@l+sM]G+vn@P'ԃZp5O-R#{.J: nĶJaı&f 孿 y=xzx S͘%^;6y<Y*.~:iQ/ëN:3ĝ; VqnAHew\Ont<?ۯ (6UÏB %,<ܯnV]0tԕel)lq+enel Y$%6źu@ 9KԮChbo wu ~^H >?ߗ7l`wlA @~!,-X!+n ,`ٞ{. vY<8 ~_ׁVJݳ@+&u &am({ P*_mb~+B(o[cvLzYkp/T$ap+@7qM h5D]]}$#$ aKa/t`Gl+I gqYalw+@:hppǷCN@K} (b 2SIAaqn VֲZ:Z$db)@K2$0NP5n[>`-my `ũk a$ ;g\b'JňȂ$w}챖f7H!2.7ȻGJ+θ4 ]Ƕ1Ғ pA6+hnua@k`&ط,c*Xyka@`|.;RLnKY`wI !rnr7A{ e$+ QiOK;;ݏT:'t ,e 0$MRua0k=dL`1mU\\2.;AVK p \c DRl3|d ],s (e=>#_CpW 4з Ƒ= @klvl+ZҠYmʡ(e4Z `MD3cd B3pn-=ȯP?)z97"tyfX:]J^ͥ=_i34 +tBTu!xȘ >^^ r[Jj’Bkj^Gz\iUX䖷( L& _OWuXeQueHv>]1/k]]_hsᗹϸ2/^x[=eS 4JɼC3U'OX_7G΁ {:$|" @Som| rԝpEh D牺SMB&Btf1+ ޳wmKl@ JN):]WY[m) RٵFڸ ('}/`f 0'6xC҃vt -ɃQNM`X 3&,hgm@F0LFl]~(e|TKa)l-0E (l[|UvJY9 zC#Zd&@;U tc ;얻`ͭ)!d(/Ԕ f9 5Ma1x P>y# g\"}bp^9Eh">P$@ZJ}CP"МВ\d5V-˧. t`mi#uAb=u)Ѝ. ZֹujZfZjX> ^~H'VJ ʺXnggMlo4 C8K({XzHmLއHqJ{ash hN9@_;*ycA\ 1sSG=p|\Q`uwIZI*p  ~z:?=cK\W(H|~Bѫ@\ ahw^A"HICn&98Ck~쎌d"HQ)"@rK.~G\SV֠@32]ڂT sg8by9BO~ְ@ۇZԂ[>2-w!)/=v+@gZJjnmՒ*V 9Xfd)4k ~䳂YquQ |4A v,V1`mv=0%9-\ϵM!+B Llo OJVۺB7#s? ?0~@mC$A4h qS$DIlut>}5 Xjl X=X9:B>S\8ss'~m7 u!69{hF&aw\kRp!af!/(2"#@z)=A:0)|$52` jA9rH]v\o)#AzRP'( ;&;]t+( Y 4$ܧ2B: w\)p֮zHxdA^K,%XmXm:GBP;Ȥ-N6>{`^Z}. ͨļ^$*R 6k sܤ3g@-2%3ȵs2BF=]Nq!e RuZZ,_@.Rȅs{yCNK 6ZhpRhOm5 vӒ`t Z[X]V=?4qrT8I 2eP;e-Ӻb/"sYǶtmЙ` , kA}AH!6Y$ŀL)}y/PEFt1Hy_jFal+ϞԐRl- \ ΂`se3O)d'A#8z"<:5ry +Vr[Xn.d*oQÿGc $yF/_.8&9) &( XhA:_Aay43Dۣ 9#T*+(|`\J0/Y yx zJdG\I{ ~uD#Â+Z"#Yↁ]::@(7mp!c!}oqK@^ggTmj>\W^jw,51537@kzMYvmٝw@ y 9 _zPWybWyP!7YV}l/*=NXq A``0\zwN: zU ,JC`waLEA76*y(ݭ7߀fǂ}b>P?B  Un{&Н!VT.+E7vCnyziwӭKiŭy  tL0(xWG_wZ`'nFA1NA i~kDB? ܇2T#DFVzX %3 e:Nc5{a[ U.= 䒫+a(HyiB9uփvsA.Q MEò]j8@ڃKo,=C7E=Й>>>%IHN`;0 {Af%jͬ&Hu9> `J4H&Հβ._)psܻn-C~!T,q+2\MF]1qd̀e@\e_oAb$DyyDK"ErtiV7p;pN>!1i"cܢ%2[fLpweHW*@[qYȇX? K ]KjRKCP7dkk>Or2`W}n-2!*rG+*5q\E욂;釸[74bh%oPz\WWufm,0̃ W0 ZIp4.kRW Ap98s~{U`HR -8Ѐ/$bilwՑ,%4ß#1/1c?.ztꆂH}6{f47#n R] HF wQߨ["Tl6eHj;>7׳Bx]=%zCt/&kﺸ2d em!3NIPM,be`YnW߼b<\ `T0/h# ) NGi&vbAW> 2 p+3YV*VU oנN`FP.2ݑ |AYvl[ _' FU!E!T'!9\#|bf< $$pq6Vht.DD=O/G@NrHT@Z@t3QOYtlZź)_tݮt/^x->ϓLW nMK.|-TzWy~3.;4$4g҄Chvhn xřgi'>, /r??.ȺM;>ct%s1 ";d?x$D)(=Z KU{kkVҚ_З 4wJ˒%\`S\Mt#$X"lGUyƧnBBIC)E60om!0.2 $& 3+7>?ݯRK>}|CDbvt`툝w^r[!1+4Zy 7bЈT=_A,t^`/=kc_h-+HTg?pֱWܐ ]|Xݠ@NH~PP u/oy*Aw5͠dh"AOz@i.e_(Ff)6HC { 6ņB 1Xȯ2|sW޵g-'֒욦 %%@rˇ3*쓞kM&_HMp[${\7wMܭwGl .Tf"H{)(s! $,Źh2C&@ۇiD{"!.[A W2ԏt920b@?캥 F. ߻]eUwL i KR Zփe Xb;f@J{R&uBt`la$mM)U.UpYMI @%TmH> A`H{*`, vA2xY{B`q$5o[&HN) Y2[ KrpQ YVG'R۽ a,pKVI, \B`a1$ƁZZt-] ݤ z 'CוC,SBނS\0$%38zQ/ ;8/!2)4BBSBy!aэ A^ Ou`k<:uǵmjݭXQbe_#\ u51=$L\(Q6[֍_OFn`ڕSAxJ|@_yHi%+ %L(CɫvD5NOP'X|fŀ{ݗZ._nn)[৹*4< PXrx1y“n=H/jH"1Rnodآpf<'w@ Z*i~ZתX K*]B? dL9Lf Ľ)-/|?ӏwۃ;{Z`OLȟ`x q`4qs m^f]c`%}il60d,M^~ H&A"`YyK`}HvS?M] y`}@zo@[*'Y nid_d;0Ƴ.nN/ x$ t!}gAzHi(7I A`H+oFTAՋ ̱X \c7@ޑ  a AGhP`<2P~%u2]f$r$d aYJ`,Elu_@K ҟtE_2e>9$%;e>Hu)'ys\pdn=%hGP@P74o[ \b56$#ޕl~U=2I(e4Mo`4m7!.A=6NglI.PK/еngͬH^)(0\i X ߂=׃z4f;]΀;vGAC#~Z WcF.nnTX_L fGٺJSKm.H]$c12Df-l;قAYAZNkglS@_:g]k5rVCz4 lc76\Ft 46056dܓ `y~ Bjik8u Mv.>(j了tI]VpdJP"Pzg%5m2HA?`@Q-uwe|F}q(A}@4DMA\)˕UCP;2;RE |ί\*g7E4V",=3v9!vqws=vdl7 @^앙=SrvI\&p{5w|?C?ڂWXTI-"׋D/z?w|e_OŋjwW쿒rKgoHuŵ޽Q?ZK2՟Q;y-RYFԖXσtr%#HFJV/|y3. `Y!{ L #߀V6 ]>\pl7 à2ZU^\HLV P/P.177,𳵱 i.3< qlF@=d')@hA6Xo3#\i_(FQ@j:uȯe,VqH' IRXސ2q oݫ/ 쨤bo)xe=եູyt6\@*M; 6r'1ϸz`},օ]1vI[5X&G. ҆:#' ]i9Fo>zh6όZA',R6V57bv}}S`;$-2Ge=pݙˢƴ.yȭFN}uYŋ/-}|Ⱦd[ lǽThsx#v*\>pǾ;XVB[d#2 |0f NA>0r^-{+p;xb'GH<*$!ሄWeԭ+ w%dgLɿo>u(+n+^͞eK4ͤo/ $5`-bX;>/Xc/S HH.< ΂4A G $xA }uynLq}$·Aܗq"屰.TĂ,GZ5>:4B`9)8A6rP{VUv$rEAP13c.9%d#&8.{V~ (d +`|$=Y9*$= jA\bwWvb g6x>.PP[w3?(TWY~?to]V)2ЭN@*MÞgNѴgkжVRHF7@2].%ZvO鋸dd8-y";Z)+n0,( ߭sa@ޒXREJHjV`>!]Xu Oݵw@ k 6Ϻ@9ʇ d|Z3]fXA[R@@O;l hۀщ஺Rn17]0+ e (MI`YY<9^`2|?зJӂ<c^T\`kmA du )|h6J 6J>nU56n;$FޖAc>6w n7X* T6@ddd|dn 8/AjV]*`Ap28Id .!x/ HRJ[Bhv8W*n &ĖTzz+)X6]7l6#?0lX~5`k= VϞ^rLq76]b\2%zem E7_Nj/^#Yvڍ`%Y6{G%,}*4-!UoN7$i(Gjk[&Jr>ZL;CҞ$WXn9պggɕ-EUv4ζڠ3k ,Aa=X6a+$\O?ȕJ;irD&G PH>/LrD .dz)hqU;Aϥ';?Y`UeJRܠ46`hi2`?0־F2ꂫ HZg@c_e!'=g-ަ ȁ۷ @u6XMe`(X5wWq@\.KnF۠Aw ]S) $|grT6Ykm]ŹRqnp`X`'OrR@9-(Ż-l,%^Od 0'@&0lWHI(Ɂt`i]K 6LqŠoK6݆3@`@ч/wu] pPE΀ui@d,DGGF?Vfmnn6@N\ȇy6r:_LK3p~1 ^RHJ e ցovy!?Q 2D8 (3\ZPI#A: VZ9m=`U'ԅ\ByZLjaVr<'rfж` W At#Az Πm~6о`٬ 4J>\V⇀A8yi0n`5J=쐿Twdt+\y} c}\(WAi)n#k@Ik#~}.KMhhkx|Ps|M?Tw WzH.6O|3}~ǃ_@;z|ɏ"'K)@W`tn-%8ҍ #'9wEq'1I|KcdI Z;ï@GX3vPw]qw@FnH-R"FŽu %n1nj %! "Dz , #xD . 1=Wt 磳Cx\pp]:_ kPj`m@uҶZ8>Ch:A19+5ŋѓn<>Nj/^xGFe!O:Kߥ뒡@[)iְȘ_k5_ȶ1L'{$ ۢjB8@xta> ]~pWೄ~ M,Y Óc>,O7?""i#,(H9u'"%!R6adLH&\ƃ&<]/J,DE2Gބw ^^JB{WqN츝Srb>|%Wgޕ$(}B-кA^nƃ7 el9M{A9{zPYJsKCq0!t.]m5ri y-6+f[d-N"\?14B}2|]ЕVrK@ RQ$]=]O岸NS.)%t&de Npy|vAv;$qd0l}1Кz z:w^y3p3JW6 Vchg&vriK?ƒ5]uGrRܒ l7-}cw \Z%h5R ۵^'w@kzך@VK)RVHp}F>^vZ(& I  -ђCm  n.d5T#3 T7}޴"G#' .[ l[ Z/Inm,p^>LxVv7Y"$;*sx~'n{4&po{#N r n+KAW olA] *MAX; [b8u 02BGAC HWXʀ[)3e5 d.֑" KX1}6ʤٛ>Еt ?u9Qn`n,%9H-Qtu-*=;uUSsub0d쐍ϿY6ږpR\ܐgr\'Ϸ!U]eT$dtq' 8>&4Vk)) x S~/QŢjwB zn:S.`l(FpwL]*Xo^;>@.,*!HTP g5Jt06K绵OP/?RՍ֌=^xG|@_YQiY`]_N ~-|Ldgu.S| ,̗`IY @zI:']'kޗQ*sʪɟA A:i Ŀ%OU ]).$ 27mMtjEg>i/j=_*DEŽDV-vt`@&28F9 oAr+.nA{  eD Xb5$ԔL_.\3ҥw]ps@-Y i?-ݱ@iJ%†Ƹ@%iEpRBDwHOE9UbMџ ucd d6%IE9}vOw%!Tҿ{}^FAhP*%x!{4FKkz@\xkMp87Wԕ!VKh&`m}n,uˁ ̡Hy-t_\_ vBBG|`,d {wAdJ[ uPI7e92dVۢU vӮ+6 SuGWl`,h# 2uv2 c||AЖ@NSpi%v!_ ͟Z$.'!\WSM:(A#9ҚYAfp]APP5Ge#CKlg֋@vYi@ͪ@˷`٭Hi ZuCptQUrAnp]1ھo]vA6kn)3B rqGJbtn k-Im).sSF  3>d#_')K dG^EVZGC\q?ׂh94(Z6q q;v퇠v %K &.c\Q uo sw] < {y{ERLK YjsM$`X{ AS^G[7`hI@k~-G&@dur].%% MQ`]ͤh4褠xTd+$ #Ox<6W"V纻 ;ep6U8:o;S1KHx7a\Œ̱oo՗U׷{kw @pn  h`{pww(\|itM}]{wIN>'9g[9 &T"L@S]pa!>p1|zw{mw=A wP'kS 5֏_} 9lެ@H?y7yFz}?۳̳ݻ\|-!b#っ  2/Cs(sԎJMKIJ4/T.ȗ+G H;=͢dP0٤T'yS 嗘/e A/-A2IRS~ ,11d,2@J7& 0I[ràٴzS?{qZ{/J(uAw%1OuZZα| `n7ʹAF=}y'R Cf8MSL5TqqrL"H-Iu҃ggHM3kV} l @ k0@zKR tg~agf 9$Dd ir}+9lyLSDәd@nL{.{(QE3\r|ozggp3{^] q$߀I}n7M  9%RibjJu$u4z=AHS! ZNMp?O O_+|3|}A9i Ssámfܟ:qbbV^~&i-N7VwTn[ $HCBD$%&66{?{ N.ǘiox'z#b愯u/}s[< n;2/2ʐ,3)atiR›_|wpحCTѓ'.fo-c'tq}=)g6m77;N'/ ")H*}4h =eۄׇv:W}WҘ` yڄ^4 ByA'F-f+EAFSTs {8u.S9=@jY 2%D00j2de: $ZK|7 ͸"ۈr?+2rl'_V}H|o+K @ i>^^,d|5w־4;8e>Ybx=͸9[w =\> Xl^nZ< =L2fOj t9!)+y1HfI)-営]HRh3 ڍuH="e.̀+p؎ ߤ/yrK0ޥI`[Я KŎ [j^ [mfj.`I .0;L5)/r*[MgsV,Aw`2WJ|;Bڪ355Vy-i.p-$I#@bp xZQh{0)dLe&\P rB1DfIGs%ݣtz7'P-Zp|M]%v&SI2k>0?J{l&Gpv J9hyK9g`9$_XfY @(@s`1H/ZFҁoHl-5Mؾ`RBrQt.b Ζ`gv3")z6@h>m fsN"TUw9Y#׀x72vd -$ @-NжW̕%l+=f`)lwlY!Y :v)0:0о~YH}|i* HNI'@i9[ˤ*8CNweA7j ]i 9 CE4~@2}FMl5{9'q }4$MAnZXcY Kf]4x>P?At޴w-^/_eAƂ^խz)HJi"IASe۝`f2$`g|S}3AHg|0*P`I1)rdY,@4B^-dqJݵɄ %Tn-?@+a> ְ!dl!DOpO]e, m6@c;1Htu_'X*g]zGo 8 ]fGuI>PhE.N2~!diː>UwvBٺf=Ҧɚ= J<Г<RKASBh b4!v;\x='|H%||f7]!z|t(ֱؔ 6׌n, mR<!f7޽e$-b4$-8?'f<mldǂ}Z`McAgkrd`W'X?a}l~!J3K?GrrF*fO-H ޜu-vs`_أ6< 3D\r4~֌ۘ=o:M`LP4Sg46'WwSy *UҊ)\DVl'мUsa?G@O̬ruЂ*p)VBf 5N;xV2|OBkF@7`1 8LJN0D's[~*B CN0L L& 6WAhb{̏lm߂$i,u%3G>ZF[7]A&,3?3lCM "`&|dO,@F(Pf#66޴Ej|#-hm-a6#82l&eco@3 4)x՟rRsq@O%} c$'g8ӌOAtN}m?5TS@{K>a hiFpv!fw G'ۥAS Д[(.wxx~9N ]`-4M?E͹q?xlYF Px[G襁0N $H?o@Y9o&?80չ?cpܱ莑;ŷ$ӎ7+bC_XOçj.| }m|#H$řd k,2\/riGf4mD@"iF7Xw 49:8~xg8CI[V\{K٫]GE$#8ۜ &>.y!7%3Nyl]8g6l;<s|5Azrb{]GPP|_(a)a>m@>?`n2F>08BqhG`4+VJ t<9KSY_gĊ$L{d\q@\NfZ#O0a 3dRr :PI\`N(pAD7Y$Nu6w7N:|fy bvy`>`֛F)pA2INϬ+YnqA_9AZp& 4/avYIDAT 暹`nnf pzjw'%!'$Z-O:HN $ ]7di hKk RYlXz/GA64r!(t2H&6תz(`fd hjM@`lj[f3ݥ8!Nj0g 8C~;t]҂yf9m.ɚK@PP c^ρ 5i i$~7bڂ d =YZ2~JiB `2qM`_٣T I:c0d&kzPȄGV%gҦ|||חW4El=k{Mf4f5'<o/oZ*hx:\crBthWЃOM f*F}!(GHր/څM.xNke.oٛ5?='۩ A Khq?kSHFuH`||#Z&I<؞q^/O n#}zO{s@jraE2μJY;kHtS{P9I70d`Cm$v4L'zA_+rؤARIׁ,2 N ;n1o\p/\ de4HmiY_Gu%% a-f $|5 XʯWn l06,ͨi4^[u/k\qҚf73AK7;w|4Sq\djvQK0|}I}mA"|7d3 `K/p 4@gW;8ɝNh/F3uIP(ITU4V $p;"Q2Zl'-^C;5zԠ.c9*@1]YCb@Hcyft @ 6JS|T?NS-50AN6sDTsj iv HbI, ̐u^:hrRWIUzOo4Ʀ({Ӎ?{] aodV8.tAjY@h~=hKjeP}n?7ׇpgg18M[3U ~8$2v.AZl]=.-<8|=HBt)L{(6sL־7LYm#iZdj6<_eG;$H  [⧿. Vieβ#Qm+7nrtZQEJ42,fc^)kO fN\ KJ?6?kB}Jy!M2䁹Ӄo[=Q٣UѽcF=kd`+tЉ6Rί}`wH"elbC4%UhJ*\b<[My:7[ 5&OLSJ-מ*r ^u@ C2p٧hfrhqG& W7+^}ڴm.plrjsd'i#uMmr P>K)jJjb8&ʸ`1]/ǺUM^`}Cu6x$ss;iL`=>շkxdzomv-4jRInZ`' %f֔7+@8{0W= %p[pkmݙvf $43KFMJ $&3^0dtgg fY E;$RW||oUuffGA }/@kMv$% ^ XMdZ`l>lˁqƺppqwaY] և`{vdmk@2HNI磧9N#sLYc\9*w9T LfAh]|( y,*@t]OA&w{>Һ *;@ڶvЯ4M M@o`NufcS=dtz2M{x% A@6M`L4wzw?iL2#=ݠ*9%32I"FBARȺRQ;XÁ v.􅞃 !fwM&u77/~Vjej;ֻs%G} l!WBAOm^=uG܏|2rs7-h) +Q: Z 4X=l"4.Ãs_IjL($H 7Z;vG!||osozOԽLlhԇV#v$bAx/˻/!rsDTe5PoȰcI!.ٶg $N)uqp~q8ex/o{ŞKƗf^8r؉N2`#DXN_/;-"F': 菺Bm؞6ԾooS4ީ@ZSm쐅&0b5< iM h }{I7X/OAʟhp;Yo 5όd׫6{S/}Zr L g,UQY>-5ԤP][d)!9T25EmCl9ꧻ5Fg-ZFj[0ߙI/@" ( xBHGH-vs{}' $dy#3I#׀dteKz `*5t(hqM _') @) @PKp֙o`4N ?R$R3#Pf7vYu=Y~7.!tI :`K ԥ:a`ʚ䑼`7YfAr@Bgi# }dܤ"ܴaVM2Y2#E4\"Vb cIrF=}D&J{Z[SB.2nf((7iZ_h l]M45y WR] 9MбQ@>`N0Q6ԁ_5~ʐƠMgm U< h#jS ļ\4WVH9SW OD7݊n{`=(&JF_$wNUrSfpV{N33lmGiq)<'H/c`F@b[x5^6JjWU-HOS,l$ZBa@ Px:B`r_`Č4l k(-3\,uzh9_vto~ؿ1Ԡg3g xmt3_mwH(]%$T~14ꀌ6p.:?߃Ҭ-`sں tA?(k4p툿<"8}A<-!08u=owͯH/6AٚHsOZgWچ;ˆH")(I4!`V[$I&Yi]B*lfnIuߧay=A oԖ[n -{1dYAd.WL6ydŦ.5Ϲ}x˯?aC|G㢿;՝dHr ȱ G)(ᦐpB'ɳ>gP 74%}-(PF#'TSD6?pfߞm^zAI$?fޒu_Vld?fta,ea`J h_nqcG *[ȫ"r+`hm \3YvET8{F{R3$BJKpo@?iiHE yA(m0' : r\)lRNFޤ`opڙ&Iy!z^u 6 N'<Nm$엒=m I>3 FGRu :A`N1[@]@*:";Sc;QCfYP'#d ؙb`Z=qˁ>4ԫE 3:;4Z ֲ5 2]Lepn:k sy3g+hJ-@N v]eZNvY O4" 8M 3[߀i2i`ۡ+䶀M&S$su`:LF%% )#(+\>5uM @{xdaUHZ!^`0= w9,67 4cpgo\0 9&<2aõ@RW 慹cNI*SR$HWuԣ'%u˹̀ " G-A]FEE0*:ʹrF-88#lݨY&)NJHCX0lf=oo[M/-HԒ p^r ŕS8sІA<<4)u}7(U9)qLnd~y@PAu!8E ?rx[EN& ̛e_ ,y3AMyg~ 8*CjT=5PZb Eݱcˁ﩯1>Ec#[Fٴp˺@sPmR^J `8 -k'_K~p}vޏ>>ggz~.r „R@l趱1q.LxZzځY!}B% As|57t gzIW|xy0y"5@?cQ)ԒJʁ}eCV)Z\5eʼ `:ZF}Rsg&X]rOH0;IzVO >UfN:tꆁmr]j2`=g- g䠜bޙAҁfw܌!ZH]MZ \@sNv3v9,f lF˦T=N 7֗4N jh d9a :a!p$}Ahk}ڴ64c0ZLSgS7As 87֍;ОQ yN3E]^6imv7{~Ц6f nA2zm^p;%`HN?(0ĕh& @X/e&ICO\}m%I:`6״oc\yė_:SIf#@?5y཮[VS[4PON!.n{kWY2qƂDHMՀjr:AgجO9.eSjZ d o$āNU:H%y jClFUs`>*V חp ہc'&88<̟3 @9AR46<0"cܒ8-} emQ083 Z:X- W<綼{MwYТ6- G KA0wIsa]{Aα U3K^`J4i@rI~a & h6}>cS0.s3 q}ƏR5X`܃ 3/s|AÃN1Y$?k6fLiu[7O=A "㶦w}{(RZ4?ڜNbF_/pӷ060|%ϟ ]beSwb_ICپXrγ/H:mc h`Ƚ 㤗dBbA bԚHlj[%wu/u| ZJKkY$Ҋ ?K\A޺ip%8~=yg1^ ;N7;|qA:Bd]mo YAK,𗄃ZK۲g> M.0LݩXu7hr`?m#R;#d>8 j0O4nεg3MffiZHײh]m@` {#ܫu&[?D$5E$N*:5a9kvp<]fC2yo~èwWǁl;z }=pYmc'@0W yvП783MuO(H&ZX[h>9V8&U)=_}}@^Sx;L KN)ܧv On! wu6N;Rh-s^;S lcm Բ:V72h3tΠ?{󫧍 xnxz@@o枙}9⫁3pNG3#u6=^KGzH%SC9o ZϑHү<^ȏ| H^'ⴷe~#-j3vkԢCm]:"w1}bE>>x^T"E&y) uTSòN?k^_9(M( G-1fSBu*2mܳT?'> !v􅾵d@kO@IR4L`6?Zpe n [ F50 <0NZKm'}t(dmPYѓFBѿ/8!J>p.8q^N[ط8G!EǍ6Zfp[~krrLr<g]7h]ڑ,#26HHp8M}iDP@K?"ƀ&~]N,c|t,榥3Jp95ܠ&8kG`'t.5U$ 5T]nڕ@õBy0eݧu?22R{FYZAh^AJ!.d*wF5n57#0Gw`keQ9a0:8GH f AKhjԓL`@#y < Gbp3$g.C- ͟Hoq`2TvkҁO&;ZN%S;`o׭t{glzVH$o4vڛRY?@A^3y ,`*P`>y&Tgt2?~]ؒ6h&z]orylA[ uե&;շWo))!+dN[0Igx%<3łl|$#BÁ*\3AVT9Vߞtf%p'z gd9 -g[g;ufIlwolZlzfsg= fsiNY'f ƁlZ6s1qfh{mJkpV8{zp2:yuf,AJSlcm{iWo BY A?T =ў`ۋ2ДG5v^X}D-x$q^CqsK\(˞-Иe3 [ٺ y $%Cmx :(7?NӵxQeN]5jiQ1-#7D> 㿾j >5{Fe9@6 3VZO<xL&y b7~EA8-n[7 (.WܴLwF}gAIfmc-@y'^u0eLjj C:.iݻ@fm}!pJKVC2R *pI(z mt1APq|u4fHk,I} ԊwaRI3@#4V#q`(hMjVm pF2 =B2pu@'Xΰt3S(0A{ޱ@Rh|ygs!sI徶@pd\`7? X73+hY@;]hSLk^ 0odYhƃ,0< 9&Ieݮt0' l9&OdHV()@JHQ6܆{[V`rNvp`NJ9 g&< O+^hSNt .hfh:0L) OjgpQd?8E'5әlڱF~|p9THiL972X ZGܥ5h"M!`K t7 6QWpz t"c`nKځt4DZ^M6c d'` M!H Is CN` z8/3ԙa`:7ysƙf΁y)L 0\jȟ45t&a6 @sJ:3̜qL=0=%9"d?\^KEэ x/׾Z*thiҁ`a .2&i-0Q<8 V5Df1sM95%8f=Ii`Kuh ʶ4 MRJ(h} r5;jT,).*8Hܒ`h~( iN禓Du3fw?ںi>~_TO A #aPz7.el9}'~ϿlH2-B#F/W›߃o)=ر!lFdz S8//d[ǜѐ^V @`@ r@79jw1# \lC`PRW~꠿jMYkqd )@^k;Fh٭; [kEczAd.3 nsl)]oǃC&/FC rRԎ3 7T2~u n#G"d|-ik1H/DoЊwn-v h{.x L;OOu;-A+VG/ /)d6RY`{HƦp7 ZNg.aNi3 @ Rh@u0HsLu.A?2I{,-&yk.cY=?2^mc_}z]Oj']u抬o_D/)'ـcrZFZЊE=4%unC+2dAfG[dcL4q ~ԖY kd ~Asid4jVo5@zJRP Hf=W .)*`9Y24O;XLC4t"/_0﵍ &,05@R" : 8`֚$ c})M `J- NYZN \7 W)4HAB@.')aSd,ulN PJ"{ASyzU؜ I`,S3A$lFT<0!PAiy`$/d إPw1؝n ~ɻ&6-j߂9$H%%'>s6bt e:Xo9 k Ia65 dLcLpHۂ  L/` &}5@KiFT9 L% $'pbl#,?mEH"#K@Tͫ?i6`!X {Ҟt)aapV9{,@ ҳX-Xf;KSJY*IK U~]Dnp{:-AI-^pr˃-~ 7HrHEP>p G`U}ik\x{V{nA;'s sPm-]zOS{uZHC6˙rY0 <T 

    `.L{}i#+69MKBᔗ~;q?6;.Jv~lik7En% W$U~veI@t0 ?-'҂A-RV I9Kl +@ LIch &yo;M\!3=fpXg}0l:O{';.;6 Lщ{QS 9MAS)-еESHxu V/ "UłΆ@\ QtAk"QDkt@8v81}$8#2Ϛ$F\yw:،v3@JIqF YPdk~57jQ(:lc}86#w6\ aݢGDZ8." n;(HJP4U ZMkUrgm3i* 7Jj@>J(؊5`di/$L-h4;8)dPA`m]|?o;$H Ag S۷l+Gg7oj3c~4&6jcdӢ]'6[xW9%z;Z-k!U~!\}\d3MqRqbƌOԑ~/&gTʒU̓t^ҌZ5)h3M1y &Av&G΂ ֽ f9b^r x f@AVݲ4t3H q4fveD+74$Y L`I < o )fcxٯ/d/ww|ڀԦ: [H]Ќh2BHDBRrM3w߀Lt43sV_m6`0H "\63BF 䛴=4/ ǚ +0P RU>V6X~@FU_c,1@v- AdHqMNFf_~)}nϸ``" VCTL;Z B^Hs`Ѳ@_). 7G^Q`WcaeMڂ@8G A/S0L.d 'PS<({,?Nl .Dr2$IIaF7MW{I!ARmm2N764ܮ֤ 3\41f;H 2DZ8)^mlK`s=k_MV0'ڜ)J&b{ik2%9AZ]@>p[hzK8j4-'I,t8pyv%Еfmj;yL$xfuM^ 'dg^H&s H gd/a1;ؤW@+B=g)Ӝ`h%;LzSʤV`VtRlЅ6Җ`ngYL IYMfLЉ 9_O`&d&h"jmඦ"L Ιf/D n04%mC/Ot,4|9$ p~pIZqg_^_M xHNp: ArH^ŴjVezJ#8&Uu8v=og%obq_0! NcbOKڛU+*xWPғg;;7MNS' AGu !̙I%ߜ"xZM?WVv|CnMI A%D3W4% 8sbgt>g%~-|x|3|)駡3!QPbtfP(UC" cn&l?b4_r_%~W\ /[ *6gp68Pb 9&% hE~@.j:]$ d3#.r /9*YT3:@A^lgZcݩCpf;q w9%![|ո砙4DU ",e^~W@J_)z\76 \&'L"qmny)vscfj= QSÓ۳n{ן5;4 23AS 侦4LS@[ͤA;GНl&v l$r`H+ pLd $ &ܦ[v_AӪ ?FJ`f0B&^*)h3N7.u makjK3 n3i"ݥ8UzN79!LNB`LA0Luܛ H$0A&BdOǃsnRq?ڶ*h#mrGh/u86S@ghjwhK<)9N(P]J?=9NK,;;Wt/GH L]ؓ |8ǝ'`ޡYbTec k jk:п,gU͢@7 #uT6 a{Hڣ ut<5S+_yNQ'䶜`wvR6- '&F3R;5$w\='yLpn `5><Qr'`6K]`}!4 t:be`m:f!mA`uG]tIi*iK,$=EmN[|/|O}2g%pC=MY ̗XWk"; lu;6a= RTHy2,`(PѷgO~Sܲ-nl{ӾVS O%8=ynay90\LsQw'xQY\p::`0 g9iItt= +pN/ttc'La/B 3/77[Ǩqg?la[=v'H A/%̠7v5L $8S1<2ev_;~[>V.lŇ&U 1obc 5 KxIȕ" 9K}"$ IQ9@p;{K1#BdHD7 eb I_clCds˹ܷ`?H[X0Lgs^h+V+kOI %,~g/y`0SR tr{p$uhߔ3T!/h{MKdf;y@iK ִ,3Xm*0ٴ&|A`g</#Lci m}~u>A* Q N{Lp&tEϱ tVcH\6AjofhFHП8 iR̕,`>y ڪ'=]w1Q :x XJ//Э[A+jY-AVHq'ăօZy"c@R#m?xM1SK >DNIG*HQ SM%R2E[閻3 tɽ `1 ӂ}W)Y@-@-#Hoezdf!hf,yln; !Q Āa5焁y405I<0Zޒ}hE'w!T[)t< $OΕPBh~1 L Ļ3UtC>of9n[ i.n7h~ݡkQ. + 7[bfΧ(]j /%<3,I]Fr^6te0yAI@3kTՒ\; $&1p^ t>s?g\?"GI!s\1=]򖀌7#) a"Mf䧳G' A~=6@#NqtK@JcssVcK}n+ 7Mh&9A,pLpmtn{%F#k 0?p oĘy[!L}L; n+)*%@+ 4dz7(L!"3a1y~1 zevW_)RH"lֵcVwu}`>UX|%WK~ZV.uW3x4kI'1O"!DҾzSLV+,9!Z@,%hS28Y5-߂۫sh 8 H2ТZTk,R3٤L5n*X=ǂ3|r <ݭtxƼA1Vdo{B0uڃ9Y\8﭂cyjwkҐ .&&$W%_{ЭA%J sN5!&0S&z AJ^$Ik1R1_9hIdb%OAZPkХP`ǘ MJ~M ~6H}I M%LzSW%@hrQ6KZp LցaKԉ`74wOss6Ӳ@Nf0奠TwtrPN3:\= 6y_J䲩a=iA+t>@u̷ mMMr%]U:Ufwlq隁Fz =Hx{]đٺ$ԑ@}@fFWؤ5WA yݞI\NKɟ$9Fmok$K%Зn=(\#[U-`ЦJZ Ja?s Ћu 8XON d` rbwBKk9 Z#u $!酼A'\' i A;dI{^4Dtq@y'& )F) j}Q@qfpYNT2 )x`^g}@KHzA9hAWG+(暄@i@Sy+_$G!λ- n@ͤU|jz_o3]׊.z#A)yLe.4L/ #kN ie -s%\p_n$H6Y*kK\:`?eV.ڵ0;]n4'CY6>AHqAJ'hj='tt/h@sy0]^u: <<d뵝փPtd$j=6_=t9]Ho  զ(z'Cġ3:[4m9a}ӗT2}FXzَ۩"E)R&A/4qMy?U.fɩ'rXn50ior>޵KEg IB1?4­ 3k\`AM<"1cbkK*%4 }!{}/KwD_7GyfGs7d>ԺjWݢt6I @&?`Fd,y*({2pFk= &<2@ѭAW حGu*ZQ6ӄX"x eY3/4L| v .27!|sxu5Bb NBrR#౫JiiJ`kwnR>j{ o4u-r+a6zohy+@0zKu'hmhй%]vkI rj^p8Wiٜ3AwknsO;.x=X&7 *2n{^/34&$$Hv0MsS|f_؅}8klfq恉5 e}|c7 Ce2AJ4l4ƃy%$`;~ Ff& xQ`)W@1Xe׺~@^FE*{23yAzX)I# =uHgX&@qZ֧ mA)i O(؊vzPW} voBAHR{(C*}jn;hCn;6΁=?w< 4d?0$5A~M+H[i/Ff晼fw VN3z;mM'>7h~h>KV{XPL Sd@fI:${s&\}eN5aW6h {(zq[AYchO@/-m/ `>` u.<.̥vZ9'@Gjgpqv%ݣȧ@6ML1j&|mztu3[^낗asܫ L ̗vJ7pwX}[l&Abpp~g(1О! 8ap(u'W † v&S. v[o{T5  xAMjw?ϤH>mWPyBBeށ~(;SH"E5R2&Hj.OV}<+9S5ż̙vţ?~ ϸWuxם'%%ݢXۢ W ,2&Ň7f& ]} o tCt>o@+k/ kd b.+GJ{ػM} e@U6~)W@ft?&Y.ImV3@iPo-@D呩@z[ 8`˂yGL-aks󮳫 }$E\.JN\`i{ q#v_ 3xwtr=(0[ň=!) c[d.A i)v=3+lkM]2G4|.^ E%f~1@E} Tsd;%+ƕF[W> oLF {l;oq@i9Ǡh#5V\? -; p=OAnl1 dT)C t/Tᦁ\aft5d!L`')t"\g}.e{@'h ҕ 5٭K"ed0%a ;/&+6p@-N^hy!>92^D(-6?t[ցlE2 DW' i d>pJ f?nAePlhGI\OL f@fѼ%A? swt#kYhڃlzSz ά/gV`J'pEnIzifY*K f|& ^:Ы 5Po,1E{0'&sOn n$`X.`Ky:F3\WLKp@fdYk8"4\F KM]0u9ZI639 $սAނP}VDΚc`HNK=޼p/v4؇ ChI6Q.#+Z:@ʂfS!Z5uAid̑`yeOMQGԠy]*t>c ,ֵ 4Q??O#J gbM1#-͛~~ZIs`h]ϷRlyOߝW)RH"Z) MWYn-0 T_74?ȗjKw",4[:Ah9 4v"Jx7>+!YX.C<.\HH9).eJ&nKw5p7@IiL1:nzut>9@o!iF` PJhrOhvv:h7{6栣} җ2 .S>Ї|F\}q`6#`f|2]2|ాIp]ZW 'u)GT^ 4ͫ/!wROT 5,ARW,+ uduvE%i Uޖ]nڻ}GH/Mځ%k &|)@:?qЁZڀy)w kl)hSy:^N``u("(MQ;gMtVl| ns'hgmƃhkvk6 ܟP N6WM?C` 7X*ɮkng@( ł6`@3څ(#uP};woۼ 4 r2LVra)/{bzxOA db1h_#80H>wd]XF^7Zpl\iݡk|DOЌ*3Nrtpi\~ ds26ôZ x% k4S) :ݥwA*} ^}*c:I6dv,Ջa9%@Ă2T1@^!r=*H,CWqPl'RpdD@n.ݤG&=fnq߃KkKå7A࠷ț&لYА;ɠot@46)!il#i4i do@GR۫mA0Y!5w\a`Q fu3 9+ ٥0D+])"7t xLWgl_{iC(Id!e)Pd;~vw%@]s20G5!0 a9F k@ҭIgk %)kqv(4 `..HjjAIF?N~/0H ȡ en03-IfB`FJ/H@F~\k몂avy!of,Mv (`(Y01h w tYaF>wsLoYfɄ7D3!嘆]6ԋNsb#-9#ErI9ebrП 7s'`W:~W^ R446h>͡vmW;S \Nc Cȵt%Z@qRo~"ya砫tTm7Wq1M7p6w X겻^ 3WLM]=UCX=ac 툚 l}x$:w-uH),Ud{ڞ@Ff3P&S(RJHna,7rW_̘/ú gF%N|/a^baFo-my࿝)RH"R~rMpgޕ ,lr0&ϒʼnfKJnJ/cw>:F᛻oTW^z"* ERV$Sw!_B5<43˼Q?wNo'I2$ޅP١94V+f+e,@Ut+=zJVvANyL3SIlrUs[r0wr&ї F@H:$HpY,3"k^) Iy7 uo;m߁j˧tӛk#`<dKzl"2Krn9Cx*Y 7V ذ`{x.+a[glNpU{\Uρ޷? dyi: L>/ E5%@HNd`y1О)A}O 4'0WZ<v׹ƶ:GS"8CV0d 9/foH E\(R[ZL6#I0pP1~Fw`^sn p_Ngh@I{2l +A& 5AQddH]s]jw ]Az-B !<7(in{hfܔU)aHk "ZD 1cCpMf4pt+&k+snZ>q.s>& @rJ} ruo0- : i.@h3mq?ͭ!m G< Z$;B{6Po_ + 2i~גSd JH~:ͤ-e  Z\d\? ZHST ` 9f6ة.= 3  9Aǀ $y ZHwZc ey.+xL@8/f@@pw ^腁L\hF đ8>0\4B zH @j{j d,>qA/y/7K&tU?t&/N<8Os߻-plW%W9 AD Q*G":F|q}$q دG%;㮀Tt!@fzhAdHYA3I?3ͨ$MHWkmN)RH)"'l?.K2{V"O>v>x)}ؽÍ'n o][Q"P(5|#RJo d(G&a@-$}4$y5$I8 ߻ ekd!h'Vp] d 00̷K4\mLO}uАF,Ox 77Zh5m ftmPWv;k6ÁF4@2/į dMYDUJd72ղt4r@RS  5hi=*A'.AfoϹ)@RIj m0ekia6?ݦ"  ozG`)$I'&]d'k1E`f/⮊[U׃bY70 H\΂tt-(:9枌6]A*RWR6 ןtPNq%U@ Iir$#0} /+%И$63ł|.d~P* aRGbu&5=H/H9"7@kj7}GW9,Md64SһRAҒl'`(>FovS4 4} jUwU=jz4V/` J! %쀰4a&|F/l3?KHJ1AREIMsfv.hFi:4l9']y rr4:kXok~)̓Qc@>6fnk6A!9 HJJvdyTn1e,HKb.j*M㚁,6b`R&=Pq\veшAKi&o0sLIf˂Im*&<ll1:2 ]$i Vp @j<;Bn_Y?*jF4V#(4\hNH %H%Ahzվ`˸= P[[-yAF"&l~M >-ι. tvk/=w ]캀TRK#:x " Du:#sTAO;.mAB2Xn}K.(L1URVAnT*9)r`lrj1>.fƢv{_+vH"E~m.po҅F@A_rRf%zJ~ًnNwfmw޾`H4-:ĞN}0j{^xMPtEE~_Po v q6AOZ cwUn1]g?Mb8A7 oIY nw~e侼#/MEyTzInG+6SSI p u BĀI6x#Ao ir]WM}ڻ. oiBu {;xc^@ .s\[v Pjt5Hk|`{-n[;\:-!iH$ش-bN\`1wd4^,x[["d.hgk' .{|O>޺X" 7֘;SH"EtkZ Q9R/|>#fP[M+Kfe7 O}2ɒW7g݊?/'JG͘f=:Xrۇٲ;,9s& 1%SJ{ wr? q;a\>HP?4$L4l-$jHj9yA"F=NՊ@v"( R\@LW't3L0 kkGn 1H2@"xSE0M1׽@N]OVSrF͚Lwn/5s F[.q lb/!}1yLKW.tU0a&HK*XKp m "t&;fٛ=ȡ>#kAx`fz' r߆O&3 ]knp׿@_5K ʴ  )(e;ǁZA)`ΛŠ1K`ȧ("M( Qv 6WЎڄ@s( >ww@i [o yh\5AJ//vܧ.A0= i-@~}^[S|\ w ]r.ߙn@Łtm[2YZnO b>`O\zL @)=@*f'Pi`N, ?$P*P@+CpnJ1MNC;CB8 ;b ySG?9;h# :1v5h?PK84 :U-nLqՂf$t5}LMy˼Um@_| KY ^E9ҀF4A( 8}8^pZO^4NڸZ)YAZkz'k=&r?ܓ@Wyw6Sluޣ25nu绶n,Hg9-7A*Sw0LzNtNEk;r[Nkl&]|WʙpZiO= jHMI'̑U+{8t6:`f5RQ )#lrH` );Q^[0娩L5rl_;ʯ z"9ZB'hn0MG 3,^k!0+{" @(<hES YL7A4 ۯi[[NٕOwIo P-CF9at[ӦIӱW_z=܏9rq~& S=E)RCJ5jVBZ5Ro 4}4=_唟#A7'v(W?zYV{w颧' A|26I?&M?(qxBENgm y%_CB% O0~Uv;@ $yG"\ M_ puK_9rJ>sTeZHKkvR,}e4+m\yl'(@yn;-\փ dY(d U ew\Vwt8pw N.Bs@Sj(?y>huݪÀ\Àr@wNͭU!M1C򰈰2>5`lt 6."!Φ B.p#uNϦLy%J; uz=4ּ?/Zs`tj[ À+t+;F|;؋TO"E)ҠhkB+oBq ~{a|XQҾWǥmÝwޝ O?xr` @Y;fe[5.WRp\*k G"D M"I$e1 BbT75t+m$PFn7H)"N_jTɄ3nyëkMp.iL4{r XO.2R$V~ՠ7hȟLnRgtԢTzO@*@_>+| {] & `'wF/nz@"M%Y @.Ij9ַ2S6ݪ]<9+RTJsf)?whPuZ L3/~!I|-Yg{!,&ljC߅A­q ?6!n>`)Ϧ-oREF#WMvC l=xͷ,'H )#w??@ \d4 h&r_8S:-U.ABM^e <rIVB2k4yDrHaSf0p-Vnn&nN`ZJh0LEzg L+g+KͲLoo 9 \#[dj(27Wb-$/0aC{ Zҽr7@+۫JvKgy7M 0U]נ>wl185tW7ҫZ@i.pۏ@/ vhkE/4c-E y`5M /י 2@3 AD*^ןH)$mu2;@j.6%LPWޕ = ܧv)gޘ$P Ls\ T` p\=IDATVhU t5%?v9w͝Q quJ{ |xؑ.u3i92bD0{MV`mpi4 dnPcx p'u{2_Vm5!\m/#zX(}؟R?[<ΡT/۱aꖉ]>oz)RH񿧔oZ[TI^,Z7H^'įo9jHR_]5˳`*p{_ż: l|s0-٨M}8Ԃ}YBQSǺ%Ion{Lrڤ"3i̕~N_9Џ>t[ 奢\"5fK :5oW7tԅl@3szB'y=Y0oL=d\@U`: [փN#ݤ+݇`T30C&+ h@qހ%;F#n VfMus@G9`vx^?LvҊ.ƶL+Sό-@~0uM".v# \&3dkN?l6vW]0G^ H`= I&O sgѤW .u!G} ܮ~_.|࿧93" M>ՠU/fl#^H!s =fЂ~%;d=hG;k\y |5XOp E0(3H @K dNFڒ`~0?z7e n\1 l`x5Mep=g3Hi(,N%POפ.bE8@^mJ划5viA ڃ>rW*tq!; z:,[ RUR\qcsDAM{"Hmjڀyef574BpHnJPZeݘ W/% : A7R`{݌4^@{R eť:E; zQS럠j} , +lWHK|B ~Wg l_1k&YzY)KgPf-,GqwS1J7'X,i/_%@be)v[ ^@YJ0x ౗(b<Np\= k {Ν`rXF^=0m=p9fWNYfRn6p$L7SvqIs2@ ځ`vf=HGQi"Ul:CCt=\j8]}Z&lӶߟ RͤH>d; b†Aķ{@xX`yM#,gOA#rCH%@HeΒ3->=/jIĻ&rKպ_'=X~z]S=E)R?o?nvu2v;M^H'?BŒF}=0cM_%iֆo W^^܄@c3n PlA@w[gZ5Du\.7 $J߃wJ^.x}|3tA7.~*C3G"wqzVr# R7rH +sx `N9`s٫!p~m [7IzK>t]МZXD֭ XDGzJ-AZ@<'BɍNF0o3@PPU9H]!_e7 +DHF^k S}0#!L]6~,lrZn/16 +FNW=M2ut&x(yAJE䞘r!xԨ,a[-9 ~%Tې͒ kyAҶI pt0،6M4znѫ8-_Sƚ_@t2hFݬA =KьRrF#x5^M2Ҍ@@I8YfLAڔ:`~& #ArIFI2Kp ])m 62@jP ι<  Vr U% nn zⶁd .+FlC/hV!I'pz4:%'[[A4iGЉȍc:^?\FಞLi+t[ |CthAmAGn:BZA+{X feU4ͧ^y jĀkr`FtxhfWt1A*B D [AOo-<:tґWύW#l}?'OybkrU }Om>uM@Q( H \+h$QR :Kp]K7RF|  a8`;~Um 5t6- Pyut^`J 6h !vzm;H9P*ijx x (xy?n%n%Mޑl;mj<@[XL~O[XJ ao"@䛨ܑO @ȵ~4

    sl8P7r c}|T/7m)n۽HR gTm^ژYZɴm$5su| ,:< jG4e̞S4'+-<]og}j&S9zGuc˽_=6UVLu4N)*DB O>B}N^ya~W/%7\0Ĺ4Dڜ:luk"LT0,xT^7a`jNaMq2'gҺüJbsۍ h0eb!hs|b/r/ &yӼW-ZJ68o0"nЕV{rs-@-)){Mx%>sS#Ro M%[Z{ { G SMU%4ʝYYŖb0 bym(UP LӅ7g6 ))DZ_c_;}L+3ZJ}mƧn%^!B8}ŚZ@L24'2A2h-Q& ,\ 0ҕp3vO'ōUۓ/ ݹy6~}yåI#g=j&S9\n<7=pgOXmqu؈n]ݘ-m^nX=t3_^o"vpdU71ҝv&fۿӯL:lA+ve]"uı=  Yzip1I[*EKn|_^GGmgȻnwC'?WT d8,vbsxHN\MA¹>,}/:")|=e v:: /Mm4-qݕS{O.P ]}{ 42v@&$l/ ǕWkTUѨT^̌*fgh5r4Jdj'q n1m4f%!4R*m9Rl<u1gFև--iiLjG/qWޖQIK"]ͤWwT\;s sfL_W~U|g?rߛ&h?SAIFy/Kv6f,g:)1"{Ǵ5OvQv=s?LJSUT[h8] 0* OvKQV@\lݬ yy Wrۅ689 sQEs@z8IR٥R}0&r*Ы/,} C# *-&Cvjg*Y,f)+┩06?hiLl#9^::iDjgNv;+HÖ0UA&U2iwWMzC&Ns2M7n{J[!TqؙZ"Tٲ;?|߫vJ&Wb_>X37I@=N-Ogg<] Ba9n/YFMԈ7b!-Yp qvvo7T#b7ocoD>?ns MoΟ%6-#7p:>SPcfkAn#B?BQu{[|X!v6uyS#cr {hCݮ[?;ٸNuǿ6O>gH  FM)tz"sBn1%Yyʥ2;C$(3R#]ehD?0$ ot(y3Y(*A 3j\/2JT0%Ö 1EbLĘlĞ-\9o.QX+1F,yXmĮY|L23Bs/Ž/ID}98qr˩Ѻ#aʶZK;9E{ \c?v򼋶2l=1TܢčYHF6yqe( SX7ybn'߰{8 4  'QgrY&F58vW̲p~9J_th?q%s[FFHmXriӓւU  x:i_\lu%>OSD'+63Zvם2Z ˉVjf C+*.D릨b+iD~?I~}hyO^hl͚3.Twb7.[!IMl T @cL܆Pƣw1|5?׽"DMqbRQمb;c'l3zij gü&?|OsL@koڼa"bw pw.u].f__7~Ih/';!if}]癚p)[ȋz3͐SiJ)JJ--7j?ڲ:4)ԛgДZ,Uqك!Q;qޕS.IwRd4cq8Ȕ / y:7HYDvԒ' pdh#`[ͥn.rE >vgrپ]'[aj3k'nu7'{DMMs*e?[Ck?x|(bt: =KĹ) ]Dʁ=.' $um *5ZIl <|cԲB_6 LO|Z6APg4Ӕ)N ?f1'?tVyɥ^%I%- EJC}[{k;r6$NRy}(ާ+n}GƃUs;=m?~yeVd%P[B%0"J$@tirEw`=-{wF Ցp8qWC"f77pQ3Qfz?юZ+5c6<@۵ l`P]1ɕ4>s By5_vmws6$B[%r_Y$CshZh YB=GD`:~ו-ݸ{DfEtx@ok~082/h&=/a,~=hݸd*;Ad̂x/=t8"Sڅ4*Fܒ\($o 1k yO# ĄV3?[9~NGTdYN2q^&㉀8~ߝtۍv)8mqGۙ-q]Sd|7똛m˕sqAܘ_ݾ$9Q z8sIJ- ,oⱃ #7/7=+^aFӌj nIS3#]nLг*JL]\e=+Ы=5>|\AGv&w7qpi;|ws3^Z/]-o;ƌ%")t6x3N=\cw+=_1xzBPy:3:)wK:bF#lA%ÖvK/ ܺڈX]EĺsWOqo-xՁ_zu\{8jI6Q0ӝ<z5#mTy`ݥAWGX|WoyF Q3Oyp :©(Y S;`[q+td UKsXoᑧz|+<̠ͪ&^MQђņfg/M9f&D9 q l[p ^gNiB%:u1I._k)[nXe5a}iD q|o++N'Yϩ/z=~zDWƏ6c/-LCs8J3"!A3`r+;옟3W!˭tKR81<[?W9< LZ~ٟAۮu6Fܪddwe-9P(tF9#Yr6$5 "g_Xk׽b;w mZ*V⼭-w^N΁O86r׮.=%^N߄ql91֛9[?x'_]ܐO^mmjQu ?iQ{H hEb{*8?|/0'u8䥗 Wq;hl TyTlofױ(XQaYB:QPyeQ/w,ԛvMWQH./dv q# #N*ǰ9h<#dL ^+' ܡP Z rt=M ,2ML$6fso˃ukA! #r-6b8x|HYkf[8rP97Xxh&[\Ͻqws79Pƭ5diё}EU ̘>ffbSABE]@nF<ǹ慳fR~&-d_1 qC y-<|hA53+l>Sb%E`;Js(4EJK6Uc}v?oà]+~].1Њr&媸;a#Sɰ{(Kxt]č42ˁOT:UD㙕>M}GΞ`ff3 Mhߘ vzs!'Wa0̌N*{hmmԾѝ78ɚ"j,Ņ@gS'm%BE) );ڔiZ22hAߏ􇙦hAo2ޗkKC%Hv=S~GS˭ؐ'19;9U>s3,?ѳ2D} ^f{53ڨnq:bDZթ|  nWvh Eq,@$S6@L*q'rM@4J"e𡬅 :8nt:Y ywґ[~^2ҥ?DMt :ʯO?SӝZ+?jWUhbMdh[PS q8_pҚ)^2/"nYzOCv=b9wݤ>6ƧORFvu::a}qt|]+v޵Q7 lK#]עYT m3g#jڮWiߺ_})%]^#;\Ƌ 8ˤH210`}/ *x/pxwroU<7EW_s KgKX;>2D}U^^Th^fF)LwqZ$( )%T뚎dVWvhN#KX;;LiT1z\=EMsi0ÜqͤU5N.FHs~cw[SK^kټeIRG}|BO˹mXqc0OJ6V1Nγ B=4\=Eb| F`ڄa]7.EPߥ{N?GDz3i*-. NԑQHBZSwl`eqq#~1j8S2N"tvJRlkN>-ZXι';݇s7:bJ悔},q/T"DDJgjߪ`7orQ^/? s99tKkZqƒkDMds;i~YrASM%NXe/RE!LTGN0X5CsVT3az f2eԖA3Qvhr1 RTm Vxѧso#%nZ$f t!Ksۏ̧z#,jNgR~/_,8\gilA-3ix7٘x4$平#k|{Yl;D҈\QK?5{.5`ۘ(;;{TyX@93"l1& Ar`\>sC|_.Mg;ג6QxgWRtBu`>rj8RFkKS7Z؛.Xg3AGe*YV] S`}b.9;8'4 M]JJr)^}Y8ϩ-ۋkSBC͙ܬb|,ƴ"S! ޓBݩDHMGdtW}7O3\-/`Zb/>aueu]@pΕӜly-xŻq mÌB%cli9'w:w4 O:Żqa&M4]ߔc_fEAYZ=*f 1S-ѭXzuvܩE^( *5 4) fMtԡyJeGӶ-7KO'rlS)9 \3}AkͿ~ /NۘC]J^ pn[b$9 uNr~/u;4DYRKQM|7Kܬ#7\ij7}\}fܷo]h s9nQD5W\ʨMZMa0PQ$o;4`JW I39;-y,ٸz5˿?zᱛF_WґSp3AVS_T3VĽs1~BόcS tR졬0ˉ1F"H;VyT+3?3{Y:ɳ1D}VevhrJ}i<2_"HՁ##FhrEWmd^+h>p1աI 26&sB5v;vRӲ|(:nc[\A$0ǡ C_ S>?7tzƸN3VвQK&Swo)$3ޯF!`;jP\|`aACҀkvzU\}4ɜ6wfINg`u ev{9E R1k\xu]vP! u{ÛP~j4T l)ZN,Uv{$ʵ~G8?hm~hM-/B̓{T :M-3]isatHbg#XFeιF~69㼳qx$W\De[nq:8R G/5zN>gf]Yosϝ5c'}UvVdTeVOj9UH`ȸ?TK{G̡~~r,,Eӯ'Jĩ\ s:˿-G+OY~hM/臞.}33zaro(,T:)XoY3m"9}]rsiejk-#ec3eEJ%S hk>zk^N={|ofui%9x:mgdU^/N= fGiZ$:`l,Í␺[yh{;w")oK;N7, &g[O[yqFsbib`GM_Ƈ{;⣜=F my->+޾l> WnFeaeq-6vg'nK fسS9v:Mg5߮xj1~-~?Ok9]D8h.8X&Pc˃]5{(/݋3>E{D׾ vJuwĭuKVIxF%:D4B'%w {5ϰpbH9rѦox.B[3'YbF⨜Sl̼N!mbdi=3l0i l1a^ީľq-J:ͪ連:?=ulyJV@we_9q"XbJn6-=+ҪrĘ^9]ƧUA\}߹zY_:ڳ7w&;R!S_/"4 ;I?"9 [aЬh(֪vMf{ Ru8U3JdVΓGȆ.ڎ8r}{;ω4ͦN|6~'`jGl]vS9O| B˧7d xr(;EYw|#u< ++!6g`J&ź}Lxۓ'p)P-{NmÏ%aN_Kj"hzϘK?N.ezUfe8r?hiFκii%RD'dT jpm.wzzOz/'g~.@nNz$r|1jHM4pbzCn򷢣/z't:ٗO4D6t ^4s`Hw f)uYoKUT9o3 4l+-2%rf$'hsH>'-qXÈS嵯 Um8=tc ?}Ϟݻ\N|NH-`'c#.]-[?Njt#/-o[Mk6-PD=7tC=7Ӏ{G5;SHg3*;uFcWE Њ1Ñ7sƿ;_@mD8CFKrmu:Z#$y/QK"ZqR\˼ۍ,bp{IӣqR 51xc'w]oU JJXPyeZIbrbش1b%D2et|WAݱej鸻Ֆ4xwXzf|=3ߜSGe/"K7U=UM]0kftLLpğk4r:s掶q&._xA8zn\r#_Ue%_vtIf{ZH bRy iIjDy`@08!H:θ68b2؂$֝p ΁,$9!9Ϯh\9se0nDžJZ\wO|s}j&t9rfm?|^ I74n߳Z\I_ed!ʽ3pd* =|3>ʠf8"KiGC]L(c(23bbi=ҤF (p)mXؕӷBZv_էIl>z1/sxC@]\_/DlC6h QAbЫKlIA:Qu`9g?Y<}fKhS/5klQ:,]yR{=w鎲O>YZZhDNZQ̓^D8SH&l0ǎvIm~c'SwA~JS_ y.;&VaED""[d/ӝ8c3\B4Dҳ'I+U셈KO|N4Dt#ͮ=/? ]+3]'eMשWd5ڙrZKDʾfyѺqy* YF2"L;LцsIk\r8:mi}c [lxV"8,3|_狟{opgK?lg4̕egHٕ,x8gyW+exYl8вo+OONf~d?FŊvtk3 &MZ\}QG޾y~Xz08=uA6] >IR>V4af$~Cz֑8HusH^}D]xTs{XyC?~M4w!ˊl\Ύ*y*U#u\SS<K՛a.y+ٞPq~OxC ]by[ tFTQH>9r97ZVeNE✣s??ez$^N3w#iDSXiq 6T|1MXi9gFMB&%Zr8|}9?O3B^"vz;Wxgxg륻{s#o& DC,?uT'hp+͌P%?ݟ\U/Jw^"Pnƈ=1\tq/>vG/zur[IDM4o֫^cݫq͠O5u %HٯP?J9֝XtoT3{HSMftG8ΙisˏkoQzTڠrbD0Y-};?w7 KF〿ʭ]ɦO% e 43YJ8:I.e#PNZG:3=4KYH]+WG|p\r$f*Nf,*D#Jd?jkDhTVOg붲;ڸZ,Ñw`-An!?W%ttDzjqD'#dPಫJJSΑL׍ |Wx>Meؽf1y8@3T>3Ilĉ̰Ħ!-Ӆdjt+Ee {3ri_bstw=rjzw6_M4D:бG|Sb4s){3,~wBN%GaTRdp:ƾZAٞ;!&%k&xW tw" nǤ66Vl,ݭv<}8/nD"$**B*t !Y/Kػ>SGj b;2͛oe/9> 4G"k\%>:Yv4ӡ0xTr:$9h h6&O#xbtq tYaYf9YZoiH b_˨bc$Q{u l0.r_~Jo嵧KϣGt&^g8065vyj􂙥d{lgfnf7Үqq:ɵ&,Ubnl %Np^8*rmcH8/mo=Ϡ͐D%Sq$0LINҀT΍>GYu=FnIאc@G]8TmU+1B';fYhxTZèQRlԔwS2ՂxtS{H{پ<ߎ}'h&зEA8|ι%yT(PU(U3eJz ZqNHCrȳKX=Wn[E7|/b"aϽao38oTjNpvV %؄Gr]=r!Z꼎:;/DM4wm :sΞQ§:LC0[ &ّl 1ZѵTfcoNWʨݘnllo,M+H _p>K ";p#')RVΛK?y!}EIP;Ö́ϮyX;(߽<5?`:ҖWaHHz:3B\O1GXiMG$Ry:B6ufy(:]FDt/RͰKq&;NVȁ8o1:zsĔՑN`H%\Ʃ3tr༹}ZM_&2K3⪫v=|>l_^m3֫x理M6g8vcWI.+dE_@rY ah-p%൵4v-+K엖{oг63JtZKҊ6}:Fׄ#ʽyuSpDVXE>^~?KIKHB" 8'\ Lwft{ Qi29ȱEs[:J/ [ՍpM -4 ,3'#&hom :s36'N%đ2mVJ$sk."Ε-o 9 \a"XC2aQj6lTS^/?5T,1 v;%],AG4_Gs9] !|︕o<~8ױ7_d_>DMMӷ}A8r^9\mIk_wvd eK&|%6zT"Ip%^8Y 0"%EEqN!f3i"Q5~EW)E§ޣ ]Miq3#dW.Y#R9X{!7>q829/%^MN51ݼqA)C6yLO98x">hؒcDM拓~^.>ѯ|ͲQ_]=*RVKwI:TËb#c){v9}Ltw.LLS_Z^<]mtsz+٨S6oI=N^[*7U:"U K|ݟcAfzu$푵Fd*KEWSy-N1Q, 8p*܇0b32jW3 킕AtA29d!gRkӷ3=R- Cj!KThcƻb;Gq@+ g/&N,Y49ZmU7IT.QW.!)Ԯ%ב WG~-[^^w#s*d $jԀCt45DQW$luL'رM|wr#}{8o`w1jJ(?@saWINsȩQK۪s[ɮG9lTx4gRށ;Үf۽w&M4DB}Gspkɛ? GqիY&fg/Ĕ9KF7tx̊ J(|/n=p캨:$%ٿG 8h]yrFgN\xB봽sQ]YطO3z1b+92ԝ}-[Z\s3s(h˩İ9Bn!76fWpwk#%ۑt5֝mNKUVlD&h[ˮ_B/gE&2rIPD4S?%U:D$c9F-KkA%_,\d#lkccNnź uw>~y <4 go`4s=8C^[0s垞Xs}NWOoYZm -3F͔o uݐUKn9]oV%?F>z~l4&h]_Okgλ$z .D<9eV!%!@Kg3A Yڙgt!>g-^@Z Mq(]TnP@KHIұOFFsxpă{8>WXT,FK~ݎp&gO>4l7yQ1B}{%8Tg>kym&ڻ]ZkܖD< _ 'Kb&{Rٵ:nuձJ;ׯuI^' 6FprBl<h8UW,F_KRf6xB(= NZZ7hBIPϲV;]XMב]ABF0_ZɃ+ԷNRnQڶ%g/{Aޚ=쾼[ n@5rJԬB10qBwݣG\ғp_M4D(G>9]OڢՃz;rRF*'JL }uJ)5SۉNc+Tsl74 u,Jxe'9-D:@/-T*e\_o2 Gfc̥nÏV-A( gr!S9ϳ͟iM3]po&犬vVq,ōo&P{:^)]8tBdhcBc$h{ PL.NJ>Sq8|/νHyMM4D.+ƪ{!ͯ@9:8*{mGp1-sr:)Mb~L:c׌}8~Sap?i&&hoK}t71|+wRcf{+v cAVɮCrԾmRun3W<0]M3!ʨ: r>7}xyzIX;H;{ tgg1=`t}Vՙ"-0Eھ|l~1:AԂqceMBGп;]"+O}lH'h&wuA?vlǙ>0[/[r$g~30zbС%(As6byuؽaI?}kgw49}z]{aN~RF;@w9.>D{#yӵ}B>2iLj#G֑kƊy*(>S9Mi挓ooݥ7yɽ;cg9DM4 :#`عobaHc5S4QIIЪdDs)x@vaVfWdژ.*dw lxwx3e'NDM8Ԝ6ʿqgrf~T6XnQ#g?@@,>p&h? :㏲Q\rďU7fuSFsC/,PaMJ \E6vRosVD hלU,Ks׃}_䡃#nKI[nDCM_|4컅M]e,,3Oپ|4lm6klt$ MwJ^-ԕi%)J^vsBeSM4DMwlsuWuYV?E:9S=_HHg)zb;t)e $"(Y[OLGd~&mQh;0P3/8W͈fR lu̱ᅖeԴ8ޗdV̝ eA*wj7K:.9=rO:Jc??&h :z|/]"*h__$^g)2S29!UMp9W͆=mH Sx]f0 SyCG̀ff#Gj/lstB ik.#1(;A> Nesr9I3VN| 䬎O&&h4}OtC`Ǯkpg?~,a*/2W er*PqrP*KinE l~iRR %%B$aAlt/☩sxbJ<}rMKS< Qtq\[yf٘m|qˏL4DM=W~]ɭJuzu =;t=)UC <8o/N4zRSqHt{eDQeJ05 WImDE-f#Qf C㩽9 T\ ?U9>mcr,M4D9=Yz-vXjve*#Ǚ3kmRF+\]QAlq*9 JMJBV~yU^9c63ӅˑCF#mɩ5@52J|>}c'c팞 GOoM4D-?9^O IG _UuR^TcBCl7i{%`Xl*,\!NjMvDbd}M$Rܔ}A~s$J1)f\5gvq[n͢Yijbi龳ch&蛠pl}=B_K~jSƿȇ'yt}:tYRjIm&=8ubx`012݁3¨<}Rd8lImCTo5B=H%ujg_PiU aDd="z 'M4DM/Ǐ9!nyP.\[# zꨢEIR/F62(RF<%~GꜣM̖ayyTby=1skUIDATDMIAt8FrZƇǑNd΀{@Y8I8yDZCjKBZjkUgi6ҩ=ldg%'EDO:ڿjayzײoDM4D}O,忈jNI|\^1d*?C9[< $>x:m6YK1Qƶpt7Ι7<VɈctM4D} 5)/eoUq_֡uk-<8ZPٸ.cyg3$3oj/"N@]y 䒌&eĞQDEG}>x \'h4ؾDTt0{-t+!>$c=K=y{AH8өŪIQe 1$'C^"X~m&hIA#u t yd޳Hʯ킣qhVژJybq~Nars)!/B3J(sR/>?ey/h&դ)t::~'adW"(U9'CY3 UJF&`(>rbw( RFD_YȻ-"_SoDM4DgQԱ}Ud?ĽzD9烔μ[+ qőp8"w' ApNN*G:$DĬf4)9NFܗFFp?:_DM4Dƚ?Nyyvs-9iԳqppU즊-z+ڕ_{wUxg])lXhB kkRt!(A0s0,<[ tzx_/;*|,>|~&/c6_|~XQNrf kDFZG)_v?>~rs4}}h M6ưYގyF{ע.6j6,%3id,Mӳ$;֘>ˎ %#(5Ϸ?{w{ Ͳ`k%tEXtdate:create2018-06-21T12:56:21+02:00?%tEXtdate:modify2018-06-21T12:47:10+02:00?IENDB`yubioath-desktop/images/sky3.png000066400000000000000000001124311412677075700172370ustar00rootroot00000000000000PNG  IHDRZ=iCCPicc(c``2ptqre``+) rwRR`?> v^~^*vD_)p%?@lZhdg"I`($>dCW@$ ]>faˀ% { *23J ---SR+KRs< KRSj!ABPi5Zho@p2A!@riQdL0cR?1^: Sbj  OE cHRMz&u0`:pQ<bKGD pHYs.#.#x?vtIME#&DIDATx}weUuw}mMo03  XM4&5%&D(&X(һH7-c}0ȼw{^{.'=IOzғ'=IOzғ'=IOzғ'=IOzғ'=IOzғ'=IOzғ'=IOzғ'=IOzғ'=IOzғ'=IOzғ'=IOzғ'=IOz 'τ~<\{Sv'\I9_\}YSLoپYy/GPhGa|8$H)Ҳj~NUvB2B}睳}ۻTl@Oz%7O4wFG5q5N0.W$.!W5Cl.67Г!lPqoڲ=% cW @RBJ&I֒G+:x;=|.y'~o G6o cd,Z14@J EfR J!_>́~y]=pׅu)zO7r};XߍMo?0(E\)JFw:.GJ0ӓ\r8ιj#ݳm;SGF712V Eҍt'@@C;n{@kR J`#|G~ψ,zOSۂex}mYcaLZP57RYq'qCI_% ZSz1z;ο:5ow<3=ޓ| 79mcx8!l-_O J+(}\^㘮] g}`ӒEsB>5VicwD>1-NVQwjsK]>ˤgώvJr_! wvuo~;~}ײ'*r'|?[ï?lG ch%ɵ&ƶBNw_+;4dI< RJ#Cn㷼~d'&߿lmObWJɒV؊xe܄2KTX_֎ă<=p58yxgtDtlD*MN1HVZ왂 MHQ6t&ϐ# H-']{mQ?YAoя=E.z*/߷s$h8O]u[t4 +z/bj]>;JNA$-YJz 8J H)OjǘjT{gQS2Zc.oiXh.  r.6xR[#]SJfͭWL+"5! PQ:-W^.ߍx`u ;H CGr4)PLxfu-p+,@k93թ[0n)j S4Jvj:mn_8K~~Uz'Ϻ|k<'|Q;GY;ADH ;KNxt|f'[f݋=!lg$JSOIy үsAoNxm{ޓgU;k10–pF3&Q+UڠBJ ҅pϭuBJ餈 }t9kcw&Htcw:-њ/S)bGqM,rfC_ ۤg+rܝdTRBH)%2PJ8p2fKŧVjOK}al;7c,zO 0ouYDf3^ {k+,F据 p yva[RYBrHTmo;ԁp]s]x .$D a25P!ߓs7-qzV^=ޓKA_͝ĆGF/NEIC)X'Pl;U( RjCKm7@맼_!9$F& BR%Bp! T cLԔڬr<92(%j-[ 6?{]iKeLIlk'd--ƛ܅Ϊ%+$bc-@H 8Bk %49n5FM*2I}+z|g׍=&uf,;?#'&}(]Սn35s+&_|>Lٻ4?oH5h^JhJ" Z57CE;@ 4jXͶxtx4,H uo&NSSժd*}@e]z=qe14x~T)iھÿ2ا+$=kӞ$_2ٌ뜛qUJ8#{@mv9*L&][BW=?AinQ$C5#(^z@5Ʀ #S{ y׽š g|&z+n725aO8 5?3԰e &P-Mwhmo˦l5ԁUB%n T{xͳT{oz|݋1Tsܺ=[(Q,`VtyeM"5>_5KMZkGd^SJ@Zpacn`N Ǧ|F9dUC{ɵ}Uk@ͣO|a,Jiȿ5J;uQPE~G&;TsN3qO_o? E/>mѹcIA'""IR(Ѭ,hrC1BurLn$1̘ t56YkH"Tq]J>*6]r8.9}_oYWFTjA'>`=ߢv@}@ jP|bku&sO_GGex4:sl2ZŦt(]/ig¢ pIa }y7d`BtP8d &jtǸXF軹|6oN|;'wQ'U:yLnDYL@ô! (6,WFw݁c Jn< h돬rGo #nFfv\ L=reCݣ=//w{X>_ORl!oHΜjDqL4i3CTџA#R3"xRo#fK"=kyfb7f&\rhU_׏|7^{~N0oDDpp=՟޺`c[@CCFCN<Е,65rRe #?ll{w`MOwSChccSiNg:t)9AͲw 18]RwJi,CD!0bxq &Tzrz{{9; y~qksp?q,TNYtߨ"Qc~Od MB4aB̗RwȾrikOŃ}7/K*xrTI8O U .y]ڲwfPZ눔g=9gv6T&Z8fS<3ihly BX?,xH,\@j?:2.= 7|o}Z߂p4zX߮{ ZBRdٵ',seoCc]Jʗrjn@9l(aJG`vSx)HV& ">q;ڵyަ?{{{MӞ܉??pVrCW]Wܿ$>")Jj\K][/?T?l-b(u0!GϙV_ykӕO) ǝ2l^{5S\sEENmD3N'Ǔ4R¶3gZekkctbA+:t%V /V vS PӕkLrHP $+`׵]v=Ǯ9niHR8iϞgWSCC)$ y .+T)kw ]z9`pZ'1&"u;?oO؆B}wxLxy's:6fYbyslZ ]ґj] 2]xvX~Bv\0(ciC%zЕ3ߤw6JO:jkv'Oon;:Bwht@\⌰͓etZ˵ʼnVpQs.] u_enk1vo~*(Odg*f]/GJu 3;)w9EwЦ&x('mH*C.E(Biž\|̩Pm8oݑ`l"H$*XQyec)J$O.]X* W{!4Mp1@)-';fwYmNp$f1mV Eg-MJ55 @,sL>:ԇ\W;yHrZ_% Lsjad?g`4AɲtY<7vH+,5fu蔛EQ7! /쵶G"P$l4O(bj{ ѹfyuM:͏$x҆85_GcUOџC_[ R_NLnIAYmd[@y3{dR2 $TJҒ<%PJ@P?溙e7 ! )ґ"tidm7 E7AEf+.mlEۈ]ʯSt9V~`%'&җfKs]BE5m6\rDqȤ pTPUV{9+?n(*tæS_u:qsrV13* +ZvAT2%&B@.aJZ/YFc. PDp@:p1x \(p.Llڥta/PrGR8lY)&Lh̤(9|f-`nm=];.RZa"I:P2!Q4KA ƬT:BW*k,^x|  E5RS8ԁPC$ b AHtBA+"B2ZQ!O)}r^>Fx !Kk?hP؊&YO{)6/2o 8$pށpT]QqFI&WՁƩJ( qϾk'Tx<'(N~}omێ䭭V٢N!Lk,4e2!bQa8  DJAxD@Jk> (s0VPB2$\#  B\6v&4CM(%\!N88O,Yr Sm[fSZaY]5[jieΈwӻY 3 9$@xP<*{ڴRbqZZQ9ňwaTZW\߸z}o!VˎXp &R>ie){xĻzq N:P2|f8JrhPhP"6T~ [^Ϣ"oyݼ=X4JLIpKuU+[jH$HJ!`Q0$QO!Acg8*V.a u8 )Ph4;?ĖݵCͭU,[BjıD 4>lqЉ)@B .8h/a [~|*mIK%lIs/>P>jZ_A aq(8*LKT]14 ) Ff0?~~z޷~SgYw6`ʼ:ټ-d\fx]̚.H &b8ȴO<茀;!QxDL8tI/%a񂆱.cvhlI ]0F \`wQq@P(0(E RZıŽqw.cӘ@s]d *E) ,>7BV*);C./[ʧǘ|qy@t e8 _s2RhȄ~N/ٴ?yS[z(oqO<խl^l's-x H#,7Uv:IJ$e(j"pH< §0O/vq1Xcp!i?ǔSbE:1pp]F)DW<`PsPi6'CK!`u= [G'; B- Vd\5jD F;!ah;(Dzo?74{D  8.t0oЃxX2Cw0o4j$J{fE0hF}G'a3d )]T|2t@ǗYX |*ELWi0 {/ȼ3HC*aꪷd  |fxpC4| Q;D|gJ#U? rEPWຍ 8uKU22;CPVZl(5x" ;@8 clhº /MVD4c h8h8R$TZf0\'Bݢ8ã&KyCO{* $ű9h%M,S hT*"-5ɍ.#ԗ^?xM[^`_o ?5: Si "ϩ9ȉ 2e. %+ʕ&0p;H4 wb@?} ^s\̟_G^P@(XI,50}Ujs0 ,J_Ag)C" 1ҙh QfVN!ϞW6z%tjр\C٨X(\ 1gދϛ$G6Ddp]]B)DuՇ…?æfҋџ!yxMs{}iGnji#[DV+D%HRЫwc$h:$x 蹘;9TWUXo+y/r= {pݱY$hf= k+&0vREվ9B$Gk:RNn 3(lGҙBcY<.CBWprgӮJ@'_wNWaz,3 ]39.[~7=!8spxt'E%ˢ,հ'׶RJ$QQg<w^byX }@k qnt(RԒZm.xp<>a?"aQAC۱bro T7Sܯ_5S yX3]pI*6 -::Fő{5pYz(@dC\ZKў?M϶Zeo; (@Kɴ"q0vTyy=ug9cm0 \jժFeӮr9I?9,Js1 d!qk8hThg`Cɵ_4n%R涝)=gkδ"$m-6x҂uUy<:Q 6|||uŧ?봧` We>ʆG'~<3 ,tgހV6`D 4F'6pQרѴ=Htv?)av^[3f~zpDITR64#6/H ڹ{SS`lEX׷o[tRo9oVaAtiJq G#UxhtpF⟸NDMO^%5p˽cG>Dɉ !Bt*)@fHy(3 6XYS"J BZFq܋_c L2%Wնf.YQ)+YT'IR`*GDphHS=PGNgg\LQ;GUqua:RX‹/&q(TՅ(jYXED_=p [)- IuBi&H3JKPJx#8l T=:3 <ۢ4-P`CA(U^ +OZz#ֻv.ݑxxm[w]R 1 $By}j0jTJaD"H#KW]\u鳷n{;_h_9'&&ぼ^~V9|8)-2ƻ<ݶVҸ+ VPCZ:IJǼhժ&t,#,ϯa2@ `w>c81S;4A}w`V:=v< BECM,AP{3ϳ(1;dz$EpYo[RrDI(@$@`HҮ3S7ΐVT'wT|r[.~{;}7x ڿ[_޾#z{'47Z)]Jʔ[e6kUڸvLu F8[c}%tUR,AYXLaqpӃ~pfLA9.vX}y9id>󐤄 >Ǣ 8lb=~²M-S*rEuP[ dMEJtwǓP/ \"Qq%6PV2I!JA^HV֎vᒋx|&)oKK#/ٷr5v%Gal8r(k9۝ry&ޜ]I(š5h콬z!:=j]աYi,+QJgfュn}8k41bt|>᮵FSUEs $hczTXcķ?90EŠVxe (b{RFZO%4FtIsR Ő|qLF|?/e븧Am[lӶc8Rxd%-W93ʤS?HUNo!NChObi N-zRLeF18.p|Sb-@i$k808h~A%wzMc𦣫)U4L #`=HҴlYֿD[2[1åUϰfM)USJxZB!-4RPj ,|5#CA&$}>)(.^!+@ ($Ӡ8v(LEk tB> mҒ"Mˊ#@Qw/R]ò<TmBֹS$=[ f#Q҂ 0$kxq(({(ៜoU/֗_?{% .>q!8?X h;/X.茼+aOz)Wԫ ZYԪ7;&⡥)jՇPD@$̡@sQ B@4wR^ވV RC :ASD\#E~R =1ڮsW8W"WQP*еt=cG`h _=s4IDR]ں)%75+_;Gtmg|HR$])J@ FÆXv]@`Y[V,;gq{)uaq݌F!̜AsA$)<]0F:IK !X:)ҡ PD0pMd2ecjc@F=y, bap\6.cL(`K)?{{7duJ0k-3*RÐV& MutCӤtWo'{b;еӾD1-J0y]82){\m){h{{3)4d柹Pԃ5ZdkC 7B¦+0&XNؗB ZS(  n[ލPX>aE[tzms5^1? 2Ia^U@;xd2)?wTHEmq;tLSJ !x3T[_pI#h|O왒k3uȢMOLռT+ 'z3(W˨|dU32Ī S(9HK 7 BRjaFI-@(4#9'`X'Q^t )\"&U</ړQah+d_>!(iiΩ0'<M Bs@ғ(ug-;N,׼Qt]YĜCI'R<^ ^=*R= P ړ7L%K3;!5O۴=:ՎP=uZ7xt`=EÃ=茺;v"3uR[pA K`U~@ h>pJc huq*_NLQ N:ax۞]hVCq`дGaa@:TBiYXif1&h["lE mhWuf3DH$ ?N%sWל9 Xѯc W>xm#Ah:SrT PL֣9n1òYR`<c Z SG;04O}(}q|P7UG`0UlJiW(8f*"xV`oGPBc J4Oa؀IIY>sTT!1Td>]'"05tx*i"zʮj@,ħ*.<~ql/iTs/~7`ݖv ԐĴfD0Z:xC,feֺs)nR¨-A#v_rHl身ΞRt5rz>nh|*CIơ@)Όlڇm@3oI"} f+Eina/G"1?k#LZ|֙ҒIdԢaʽ C>3 ͐DS[2Œfj*~PJ:39FS9mi͙#Aܶv9$*=S7Z3˘EG|.Қƒs#;IZ`0$UWTOCj)O]C<7 vЀond+D K;Xв]gRFjXy?u]C<@v)|1-fRt+~fW0 e|5lGF 6XBM¯ B*(!muTHK0/QbF*B KV.Ž=6+\<#;P 356u?Ě5nս#9I2:.Θl%{&I )9 ӔzM)2߮,Gv )%gun/b%p;G;8|_`\GIIg  g݉Jna]V@B@ܭO!&$`` (q#iZ ,}R%Ξ ¨$iAʴr4|Әb) D*xx ~Ux|&٭}K>9vJ8wf<@B QakII{uud_;`ߗ#OBAR8αQ{kx,r9ΨqgI:2CM0Nepp`* e% |JHn1.! Iu5K'}^0slV s%tm\]xamC_܄}y?꣟BNΓZdsHJ;,ѬI(@zSᨳy܅Rwo(嶭rwI Dx}Q 'p㠕`yiE/9c>]C1w0X|*2kN08BpMcG %8yN XE2{QBJDI8j!I 2ӆ "$U1{]Yl/?Xv%SRV T YBaVYT4K@P\V]N=bf!z!O*yH"[g|9GW2V+b;RL4p1іXDJ+yBsBItBݜUmJ;[*&!:|2֦G4 ۠2#tRfP S9E E5WNk3)s9X*]hIkEfѝ!Ͻ" \q|WkyŽQR԰3oťue3.&TU#J(~|64qs4N]hjOR0⧊n6{c#침Kjјph ap}ƵO]t;Qg h\>ŽaC(aZIhi]Qb\PgEk[*:~0R R$NFJ$IIҁA̺ಬ)s3h@GQdE+ϛ%nȸ}3@k1ՖcFE a'e)#9J*Iv ۳ ]ݷ}nk3(>@Yrk}'%䝅zّl*"=-SppT<[Dc".bA(7ήR 6!X Fɓ$]u)CjːPQT rí[ɁX|_MG)7V(8jzZiqPn(gԛ[ dV $LA m;mZ8̳ܩ:1`58 #aW+:Wj]Xn{3i%"]^ ,6à!D#ıiJDϨt%Ekvʜmq6,^0>_G ft e,{_ 0֐JXn|CLE漠**s[XҐez1ߞ6rJ[Ⱦ&eV [ V0ztZĺV`rP^/838bmNʀ`x8jrARNLA4 *w47\](gQv6սR{p{s._4ǽNDjj B*Bs1WGRNWsTW9ӞkAwJMwu b7m 0ݳ('U4Hk#r(bd3=N/ad/_watδ56nv%76;&( q ः  MY1 Ƒ;F4_y֮_,%OnL h]CS2EJ!D;`C_A[;Sw{ݍF)Yw:4%?״e{Tdˠ싕,.##X.me:vbX1k2-3è(jB%-¥ OQIrCl@TtQ?{qkk! ){쳧?wy+{fyM9 px:JEu.]v^]U *a"Am,|$?Xn5`͕[#Zyks 3(.wiBEaU&k H'8S:L{iǺPϙniBo9\q]!mk\s(>p疽iNyֽۋw!A1棯^GV :{>KsݳbƔQ-,yV YM#m֘H?'V-"v'WJfʺ(6% Iԁ(% Lc<,N4@g2"9&u\6g˜yCj6ll kM`jiH1WAvr bRw'ZOOڙ~+h^~G_m!vyR$YZfKyK7߻-G`Nps3LDpQa ߀` XuhK"~tzVMv˦[n#iКG&\BI8LWAkRST+jzmW_L=1wۂ~g'۸-DEbĻݦFX ZCH)0IcvaeBTc;Sme؄kٳg[g>gѽNݼ=|d+vs*`E5 j>wF ZFqY 2 .JUYĩ<-oRֽ+mZ [OH^PVr<3,/%嬝\/6cZA 8 %o)IKk1ET5*ojⶮ볶۹<u'8Wl%Lx m'f)7x.5U];k|I%+ S-첶}]d,ɬ_j,/q~L9ְJ3:s$O#?Q|﨔Hi螔g$Rc*Ht.(]Yuر?1!Is]H@U̚LrdcoN1Չ!L\*皺x6;,[Q Hu LMY\^fKˏ bKaLtxɽguٞ,{֝#K0&R$x\T>|JJdg%Y=А^PxΞ[vkDwBgTlꂊU\n!3"QHJ*nMeko[2G)3m@Eg6x58њs]v'y*$CG&=8_$bèxunBb*2COti(HPx)FfeBYOg~j@skaۈ嬷O#rJ;QIٙe5i<X~.%`*wj]_sOfcSn؂}}uxöwk>ĐҰ= Da܁t!pq]>3I7T+.4pjŅRB <^}SmO S^#-;6FRu/'ֺKmU2Qtn2CbYJ( 8 0fJBJ04D?fQ2\}cHyp\JhauWJJpkEШy=B9_aWڪOm6b4ڸ8+Oj {ǖ܇4xnܡiҭQIcruvPmoxt[ WAsg:B jxA) n(*Uʉeߥ6}aVHYʞO=i5e;5$"1pV8| 1v|rii_auv[y)uI&'N" nqhP"Q{>R~kȘ^U'46#hLLq\xFF,]@UyhGV9֐P:erޙ`dYk+^P7Z3:%XebHj骱p۬nx$BӦ$B[㉁|^-L7?哑3@+,_] ͳE2M;Eq#xKjxky:1.=8bW+]SN@QDpٺ6hSϭw264+ֲ|VNdwS.9D'0E<GmSP ۥ",_ѫ yN( lVgNͱ}Ng|1JNxqL-S>䳘)=$->\r),C--҃ev̞ʌ}Y}PB(EPORTzVV5#E\aJaaJ!LN͠RDiJqb0M)iAR@F5.쨡;`v̺x)'w&ɫ(u+Dê;WIh)jM;OM%lG xtA9`u,[X%4UpB5F)Jb^ q'/U *͓Q),EG}bw>P ]Z[lJK%%EMtRJ^tc)\W&20-TQAeTGγ8x4`Eu< /Zn/x~6b!@eKw'M6ygǍk؊6Qeu 44Pjg*b*Ӱ&ξ| yx WZ4;~.U| jy߲8(ضmn{D`*GRE7xƠR/r1ʫ8TNz 2h~(epⷬNSܻ]/Jw i@D҂k2QXh^ևxn-L''f;>&"bǕp $'aN}>`Hn BV\&.=^W5$1zV2̺%u9Wo€?Gȇ(L{t ( j.DCPPAbފZyQ. L0g uKuW9J* Z&$o.93皦3ԔҨ$.?'r-;s)sA?o|~5ۊ/a' V (T}8qx?etҴE3UpjHlq#xx}#Û_6 UA@ |fN*0Ӧ<͎ĥ7a=xKh|\~ Hd&(묂Ҁ6W7C"dvІ(O[ܔ?`FlR |7+րN'Fq"1:%T` t0WZTpڗ]ڋǟK[죠7ϴ0'8/|л񶗎m'a/cE8CoMI;8lx͑Cxs1"MQU"*onܫ᾵=xeXX?G0<9H\/MI3EkNم$V\T|. XVc~m[/SH3bCM^)(ĭ4fgUWf4Z}yw) /!ݞk)'VA0˚mN$>FQt%U;WxKj=/QJMF\i뮔 w><y9Z]g)i]j@VJ5ѕ۰m\ .OXJ~h``d?eήdf-)ITcaD؟́+9((==r-–Y+Q"ZjȐeɔ\ hgNg%[[^=YQOjs[tqF&o㈙I@!X ^(SMYGF,E 5KoǼAyǀ`2̒2*$\&G^/{\[& X80G-%\A'k ,/Bj(PxT\Hr)Z i.aSf(t&4 rIʪ?svSs?7>WWZZ:!n$IL枥DTh}/NabZRBN/QI_?}W/ʥT%ĢS7h v+ow7lQ8xU#V#$RlG4]^Y4< F`\7Gxasc`Z 9_I^&9gvpȪ>|I= }ef4u1@nUԲl|,e_9e\Q+<ϠKQr Ċ:M"=-hA4lR M7WR@qM\r8'^} ^u\p{ZCZ+0+a)jcףӌ7F:&48SMw?n6R hAʹr\V9mUHqAF5$Ꞃi8)IT SÍO#.^=?1a5Lfݔ T08{?*w kG%'źfFw›G0Wrؿr+N(3\[-V\இ'F(7?'6jA"]&&Olho--H[ p]"%ୀ'ύ3ѩ/5fV]T}BЕ1[Nt̻ڴFai ШHT<մFH뾪|on^֪:缳gu럈p`yiVP"Iki8J5[8v V-v.AHL~q(~yهwj^V%E Nh63B \{(.s|sq50%yq@ZBr^A''/kcټ1\o'3l|7Ѝ[X^ܧ v5Ewy$`-g 9̗#ڈ$C8qH3H7( Uu_|hd)Ou)}n:> E D?9b ?f麤9Ad-Щظ-E7aN_2'5}̌U*LTYS_@kǸŴsפ vf@Ip]#6ϭm'Á{Ak 8r•I404Џ)'Qb!" $>uB 2F{&qd\u):)*T< 1!`%(?yQ#NͳzJ|cmn b'8<7_fg 9`#=7o:v;tA10dZJs] m_1Nz^s\4,geBH!%!1hM)16qqcmd!X$A(8b}PJGĸn`M iM=*"s9O$ -xPƜ~5h@%Κni{Hi}Y5*Ӎh1 WNZӐ IJ>R8 r_$ S͔I8 n{km-'` B i,ט7$x~qXm'.q/_Rw_e&jPL7R`ö.q'oxpʱs1祊A@?V<#Տ aƧ$@f~4IGHZAYOi>}"b'!ۀ@g5_ORtJ4jny䖈;gwiO<o$V,a PTb!&}h&`BZHqS/7͎7Zkq8q{/F9sL4o &qpݣq7*x8&Nkfª)Qf\x| \S![_6:r -ນ11 %21IpD@j!8$BqRR!hܢ=B!⤃$nJn@0#Ѩ(1DP>"8ϧG?Ĕ:'g3 O[_ڏ[?ئ^= !EAo10n@(JDSVM0<p/ݯ7;CȸQL8.u u{/^1.3FiSMJB)D(|$.i UŻ^/=h B^)eC12O̻H)˕T#=Kri [# qqQCw~s*-I @dkjc쵸7?{.g:ug6 =>;WoTg:at܊ @8`@uhjPR@kC̟ydBtB7 8<*QTCЄ@hm. >GBe|i{򼔧mo -琖ൌ\:(xhE<;6cBXvpn[& ^}x|7[m 0crB2vmkwbdJG5GCNҖԢ},O}kcu@?z :ଡ:`έe.(B+o;Va 2XD2Ԫ>(!huɔE5K5%%ygXɬm(Ojr ^sDiA驊7vYN$8?r Z@WA`覅dQq8 :DpV8FBGWc N\hGsD GEHR*+T}x޺qҀ Ť5'\tjPSJӚJ#2՛_?^w 0'U{ Ag@ڻq}SX?z1@I)dA5I'TQPt 2^]e0jQUzŸ[QePTkma[ÿ>~UXy{i 8X`s-56K} JqQewr:W_^=us7οo~J )2BAf%SZ[1@yGF0a ّxrsnĎ) 0p.;#\x(z4E=1°e]$jw@:T71൭ӯ߷r3nWz⓯8lj9J9S.% pC9TB@'h>C~ӟ"xn;ңވs~vvNӛ NfiP]¤2>X_ ꄨ{& ܃@pׄ&\kċuY_"IDAT8ڳ(^3}OnlG1xaC8%}WR{(%(HRɶw;e萃T5k87rH(&q:2L9fQ1c&q%?o~N|̃Ssf3P+. RF2!@t &2:Zm9g.gr [/?杓;-lE :D6SJ(T PaYcN9w>>ՇqXEqt&!Ԕ[=o ?zGЀ9(%@{ ʠhbnqqcʅйNm6.DQ8 yD`s.Aգ怊(ӡ7f+gޏС'Xj鍿ڊOXtG&;rhheoO6`j! kP:8% 2㐳Y1BIA(q}c& x1{g2iZVXmQk5[$~~\< JTu5Yo0Y;dD+owp:p/eYܟ?s.qj;B龔&o5L G3R&UITSu,җ\|d.QXq~uwvNIvGl5HStFޏnǛF"\vm#0p,$#PYiA{\"#@^jR)Q(jgSiT|D%!3zۄGГ]+Ҍx믆|hm&?6nbvQ9nч۰Qh^vp҇OSi3ÂM %3D㪻)~f%Zj_h]F:Uq ;"V|GkT<J$ !KH4AohOvZw c{ýᇷ/MvtcǸFi;-t:-%rF/ըGPw,ՇVqJ/o34Wi8EwiqM Z)p! C@%`w$j @ S%K/{g^o/=rF.!sZ @hu c.TCB] =BSkR?.EA?}kB`>J%y('mh娺:P f?N])yOf[fMe/[nNؿ{VU5(]vZ9{1!% nS+^bP6屼V*uiiBP(1K_Ah^6q";I-#SU_SLAXQ$0}GŽzO cG%k ΁NViNfc XX{o8t+?zY 1R]JTPd{[/&ަ>v#!qI9<&Qqu Z1TG_>O.9!j3y+]= M?G&9T5N+N1x*5_C)3wdU ]-T:ő:;'.ⶍ#T{B댈@Zx<;);aeu|z; Zh>HrCU:ۏ'=)ɳ2w&BRA@%Mq*1528LY-:d=ܻzkI:4$qR :,֫@xCO U?p~({ғiQt8c{8qむPJfl 2Ncx| T<kN-9s\H X2OL@i" ^]It8UOQ\ I>m?$9F]o#IOfD-\ Fo[vvitBN{ A.8ۏ]UZ{}nsҎJi6ƒbxoF&F}AcM|JLHq1PCb!F30\z9>sF^0(33~V;sZJe^mq*l,=17S/]EPG gNQ]8>//k@$=7V.l͋xGmDoh]ew|+1|"Qcz@ F0-R-9ԍhۛB,-}k $"|ٝ4ZYy&*W#sw@2ob9:-#eF;~r{|~z%sbaI /صm׏.Z+H )M W*V>RQ[f5Sa9m<: рqֹkޡn![46^v|;ن}bSO/abK|yrcx-Eʁkko[si佹g@Pf&7tJ;e'';%O}|{zDFc26fcRƀ(/ 8FuatvP ,jFM`=YU殻>E MaCeqdyeŖG' 頛Z:1  $E4jRxc4Ǖ __TOὃ^*bCew#ڢ=u#ꅭun!r8Q@-u$l'QF~. :/1iSِoz;`k=gΦv=fs! 9Ԩ&C ̌@=֓E/?e6ts+8n73_?}QpePda֔"O!FUyNB?Dk/~vCtEl@W#'.;_=.; myNeuCIw)~@z1?=A/!s3ٝYn>cޣm1l*sb.QY%CCxiA?:i߾I:;/6 g`v7BkЏKDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD Sϛ[3%tEXtdate:create2019-01-03T14:35:53+01:00|%tEXtdate:modify2019-01-03T14:35:38+01:00|ę]7tEXticc:copyrightCopyright 1999 Adobe Systems Incorporated1lm tEXticc:descriptionAdobe RGB (1998)!tEXticc:manufacturerAdobe RGB (1998)tEXticc:modelAdobe RGB (1998)tlIENDB`yubioath-desktop/images/sky3@2x.png000066400000000000000000003547601412677075700176260ustar00rootroot00000000000000PNG  IHDRߊiCCPicc(c``2ptqre``+) rwRR`?> v^~^*vD_)p%?@lZhdg"I`($>dCW@$ ]>faˀ% { *23J ---SR+KRs< KRSj!ABPi5Zho@p2A!@riQdL0cR?1^: Sbj  OE cHRMz&u0`:pQ<bKGD pHYs.#.#x?vtIME#&DIDATxyeGU/Lwӝy& $aT)( p}sFdz>E * *Cg$ܷ=g]UGMAts޵Sw}Z@FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF]qq "'uBwiJnU4O?c=̌{Aȸpzwtzp= q}BU7Fڐ>d:@n1GG0pg#dq/«v3vЗ7]PZasxu@kC(Z0W0-HC7* >XJ=l3222 "+έC Õ F#%1? $ AחA{ZFz㳎eC(2222x;nqzۆ:ҼXFkkd Hc#c`8~CWV4JcNdyt^sF[H!aA5@FU!5mQZ?fiTܲvK=֗%.D6w3>oG{og=u+զB(hmuỏBXl}t?A&❜g{7oԁF1Jmלg}}dE=###n?|p/QǗ=8#U+(eEo1%b89`7W1>ј#*@h4lhGk%Mӹ.yE=###.޿[73vi;*I.W e3 avoL0G!1Z{ *y ."C4N)8gU}-A܃n)gn5=kg*4b1tk$v.&# vMOi"LMs.dt>p/m@6w{niqq`o<\m T튾P@czKcܨ6v}}oD hpI4]O>?x c}3 ,w82{;jvP7*-n$w#\!xWnzqv=X=9D.zñx̌8?}<֗;@3222 xC_ 7OqȐ\t^Mj b4oOTdTh )S[oS CF*wF6w}^z}FF4Q!-Uc)"͝XU8M3 yV]HӞRe<,yLrZjMpon4Zdm5^amkvPGF5ض D;>p ^5<8c]\DB2J=db `:m_n߁7.˞٠gdddϣ9pqC8PmU6\\3xSly{m z]wG='K[ՄMk0q: .zg6gOQ\}mh!􌌌ow?p˭Յկ9px_5 ʩح1n+Q}ʄX:#ezڌ%|յ;' VI5dkNry&] ;EFFF}8鄩kxx~ա#V Tckciv_p#Q]qHçx^fu{: BdRߌ@ Aoj>*c}2mavZq^=7_=xs)Mb11%BVo-Jn[~ ^_"2N=|d9@kl5j%ڳz>W 􌌌 "R'ycuׁwHXA)_mEjLhc({B23re\EAOBWx(jKޚ}~"흥yE>I2b1xmtzЅ4߼2 5Apx~fg?7?Wpt+)M+ oztz&&tT<,(\S ojB:4=[LV'K(Be0M6^__ /> zFFF7>|w sHڃg,-7ֱ))^e_w灇mj0wolZPwvɋV ZU>%vxt||cqgD(cУhߣ+3>k_|@"222mmss㞥>Rᨱ\ۘm{hvDHD>kV͹ ,u[Bڠ۬P0.Ic>CX(à j@Ni.ӆc}[pzFFwaf׾_:4W|uqJv&3X.9`wǘ3OMcڡ@/ :ޝ1!DM3k}䙗/XAx@ⓟ? sOcT/9tzbrrcF'\&p X/nX샾Z܇ `Y8aۦR2j!.Dv^0DR:0WM93|\*B68}{? xO>CWziTr)iqpFUU{P5|dD /3F5CId5!a7b{ % $Pg>7n6}+?to٠gdd<E}u`f-Om 9Mt9ߎQG6RO|*ĶkHDWN龙΅o~?OO)e2pL,$5M'Qݻc< zFF뗽ˮZxܡ5 kJ4Xm A閈{ 均Rk13| <]GJX\@Zq}VQa>-^̅/[px/yCiimw+Aȸ߃`<ܼ{7b}h( O0sK֊1$;'ʮ(r^a^Hi4-]N$K'JyXڝ`/Sᅘ֦5m$kH/nϹ?x-Aȸ_ۏ?~8W>Rq\7J( D}nyQo׭FbnKhh'<|$k`MX[YwB(;KPVJ =s.|fdqk޹?q-G>\]zH++[+e c5wԖ f|{K.F\;bNzbգӔ7v҆.H,]߅ xcP(c7dN8+.a_C?| rU3=##>?|ݭu_[Xl^Ԝ:hT[0`Һ-yYvxWP| WHzo1`m ג']&FΎ u&ZO5'_E Y1R:9ӧ+G\#􌌌_bꔟmG=Zhy\Uΐ3{I`0 N(ė59;\l  !i '9cEoʽ=u!#ȈsfkW|?Kk.1y=##> x.3/496nrST[ D(2bf8xwA1q.wh u[J{b>>NPN3!^5F3QƒXO]@B~hhmN ϿhӵGjcͯ}XILDDpF+DX=/@rhlt=w;ƻ?\S zFFƽOSU<ͧ_~tAhiIm+ x 7s&X4^iǟf' ?^Ukݫ`yIZR=].jooNcGE> ^\Σ$eO["􌌌{-^}x腛dO;zT]ztyʊ55i $Cܘ,E:OsScϽ J=Tp}[~)A ZevdA@$Ƽ*` vI]uV^/Zc|-/$ g ^^57gPo٠gdd+7݊~˾_,.֏l|a`t/n+rZ+5!yEq MEơ!Kۭ{m/LEM:nzmąLcb%d8B/VK/6 Kϒ -DSt<~_٠gddܫ,l}6vll{`G.-' Ji(+7Fx7{T0A27QGU;OWҿj<,$y#PZpGb=V?wTTsÎL 6CiלqAȸ:>i~yT+lSk[(Үk‘ovg5/= m7x90w$t|;B7$dǜh"o0QYS%_a5Ä|:+ֻ`1OD@U+nw?#􌌌{.~\=qnz푅UU6ʸ4_<:~AsfE+h`Gr{ȭse77Mb+T=?'ϓ4uքʻ2FRR\^ ֔]SȩƘicc Q5g^ƫ zFF1+߼ EOLr?;P?d8RB5Ɨo5:ƿ ܞH=Y88Jn4s+nE\V|?n[xc6sӢ7F.||<~Gg@wo}K)!eƥΨ D7¬èxc'!_x֠AWyl-A8f@sq xx݅fǨЍ㏣ǐW=]g# ļIZiYSFϷOO.=p|I.6ێ_uRV'EW8g}%=]UgRŦɘМFeԪ?4^zL6k=z](t$/@Y%Q_qg&Z "z23,@.\h1;?vcl322Gg}?]`G__\l*ȗq 4;IV=K B'0Lo9ⶩZYbCd7MPw &ϊƥ4<c={4ЪV5`TkGk];RҞ@Ц5rAkPvDY:;Xb&kj2sKֶKNc0qr11\sX"􌌌oy><ܱy_zH̥W5*⺞fo ?ii r̼rwpz|}h]qkfp '*p>jlH僼ioy#[ϒm*3^R5@kBY3']Qc@SAR~ƐTA50(@! %)aG3}A7M+ Akrtagi ؾA``,uZ`o/Bw &M yE. E&w=\.zN YPڠQ k!,(f;Bxś>ƥyqc;51dD 5SC nIWx/P+r!􌌌 L ٽ~mNj?yj-o+̥m,р)/%n>'!X=Q{$`pyiadhrj@z^nVATA W!LjG۸/e9/{Fd y)- Hݮ@ׁ,;0@m:X82JU3 )Z`-H^=t;]t%N.V0! s$&(tkn'ט0c蕸z+r׾?_r/c~g=u}?whGF#Fd<Jo iS/dY1?30^E4?&+1+&Qێ4,LB3 N:Pct3Vkjd Ps3ƠpO"w™;4:@uՀBU7*MA! i l8u{SWM E(0=(0F61hk# ^r)]akqOxʹOo^yg.&G=0= J#FQr"h?uԕ%~y𺹀¼N{9 B=siԸ1׸ lqCD}( j4BӬnVѨ5h aej=sTz RغpI2;doҎn˫ V &5hC`mDX^XXRXjԍA#p.N)p6nwպZUۑJ xI4I>{Ș8PO[s|=.e\LA`j333=_٠gddi03[>#?`uCVT&қKӲ^Q.ʄg"6PpfpC0m${;.Y0Gs0Өb/Ήɯdz1".tksV5f uZB!Hz R!שqgK\tz;7mPtP#te!2UB$`ژptERKo;KP_ JbXs.}M !t}#/D_P ^LjJBتr$l\͆cF4۹ jn AȸhBpq7Z}/;tx|hMʕأ ޠ7!C^r}! wJsԨƄ7޼%1$&LP6QiXߜmf M3jP HA|r3!{ $uXcl~B  )#Rs)nitq͸)7kꦼi:jݙWi(%P|ťE!cs7W.WP5P׀1AB"Qn_=>&a! [ChS|CCl #Yȫϼibc=s.^ܸkC[XjMbW/[)p'Oʹ/b)q&KYB%7D}_UqkCTv:Z,h_x>KK:L]J`FB!6 ?Iۺm)mZ)55\Sknj7(sUuInG(:z)~GY81Ӛ,cN^⬭3E)4F i:X˟/CfpF_ bx/ (DrQ@Ȟ}LFJLћSo}䝿tzd{FFƷ!}l\1˫T)bCf`Ӭ2c͉g4cWˋW͡=GK6]qM,Ec3YG;3t)bDpvc\B+PE2TR4F %LuGxؙk'm38G{(>:.lm 'ɦّkcYLċ ,l 0#(R/xizC`#[s!S-ܾ?;x`աVŮYW"EJ"8.VOPN^ֺ/6^Q9c3t,;. $q|.8KLWFNJz ݬAիZh(^9u=ƹ ʈ ]gQ<ޱb^2l]kˮ(]sMsP[>g,]ԯmW iJv )c~T#1 n)EN11?. Ԥw"-JA`j=(Ϻi ߸߳AeC=;Oܵ{{XCf:VAj0پuǰ2ۃH\ϕi1K̃^jU28V0*=Qs0M/ArFA5>{]@)Ff !Y.yO qA*,j~YݹCm7ߊ/~ruƕ[M.bDy)7̓16N)>ֺ ZN'dKO@^> "ސ!E/$ Ҧg4D^\~C6͆.rȸ]##rOMg-,?/YX&pubU~::ۓߎ5+6k\2UZx5^AzCl9]0 Qv0l:2_UxC_V??Sw?A{Tw B߽cS%o ܼ |s / `GSy:߫hxSogÆ@l6W_PT޺yxHK΀x-B322_<츭rmz#O^\6:-n\lJ]DX6p O}",,ͽ5`/#g0YuaCE-Ub8@5(Y5V^FOV5q]8=9bp(Pܴf~мX7W]QwĿǟCZ,$Nuuy0F8p\b GWcVA^W/SL;3"Zz 61D7 7}?g|vjd1?y.\vO_sHPz<^n 4gXC7o궚H!-\mkGNm#$ܐC4"?t?5EqőH0[R-];oHk(^5H3@!Dq/nد:2F/ݨ>|lwW>I<GEgBȭ$ЍZt =, XwGNXx9!\}Z^ 6e lZ. c8qà웻KOim;EFFנccm?:px|#YV0m bl87v)Y7 'ťiךIzcϭ,"Mڭ͢eg@|8wX75@뚸.oNsa4FARhtFC8.:i]]l._Zӿ|S;?{9z8N<Ew%$UO;6Mk̄ۼ~U<D2#Gl+1)ٵ gEE2. [Y_~=z,A{e-8bpqsY]~=(.~)zf{Q_>փpee 72V\ ^'). (!>D9Dp,.>~+?xG zFF^7cz._`snUo^fnSlt2O[Ob- {He1'!553_ۨ`Rc<Sڝwb⢑ %]A) : [JyBwTa~YY?XZ/>ߏߎţ|L]mzM3oiA! S#]߸\h^JLǚݗ;tPc+UGGc4VЪ:^T9rn](|yc abp);!6o"@HNP$*\".B֋‡ @6 4 ؘr M"3 p@]Lw2"]1ʼkÌTcCd$6M)L4Jk\XH|Vph^7gcQp -;$]jS`e\<~yz}|S=#y&O}s[paU.^Ftl}j\',.SRԲ M1ϔ e2Yj?I[#nydF bUF01 )~)//j_G4s{ ^?p~H3E_`Xi貹D?z~LM[̈@_,x-?rbqAp"!d4 z\]O'^tb)~o>֗u٠gd<7 MwP'--7EUowII rodrϠQ͍@C!,cE<=BhާMӘ?Zq!Nt2>OzBVbƽG28eh~L((!e^TÚI/̍RƊߴR0Z8{Pn Hy+rV5UMElb(^<&Ώɏ7͙hXdr ʹjGT ! d Y 5,Z F῿tk,- Xzc!5*,K*R#͘ 1/.MfW!_xŧ# ) Hه@jEsgtިgq?&Piv-T]]kl WeksKM3cm(YJ!YziL"5a3 dZZs&K붧slۥVyla(tXl̃ n49n5&%dс,z-ĸlXߕE{@VqFD]aZ܂uFgNj}䅆ڲ/${!aBaerBHqʐda~qSczAȸkPsկHC5Jxy^9$^ߨx5 #Vc`T.[EL0b;,IS?.΋F"ݧSjQ3!Q֩Li,EJ,uMA9g=i?#ȹR6+X]:9 -5? 6g>] kϐ@)~5bT`9/8vz63oow=z#9կ-- M4I~y)lo pGjR'jZH-8hHy 'M<~?>MZ)x~2ɝzUIX/_4Ej2-lz&Z_2axL.u6#0vC9\i+ú(庤);Q9;1A j[&|zF ¼W߈<])Ry}ΒyVmg׮:7O-Ytg;L Χ$\4X´@QtQ})ú[$Fum[J3gnw3X*)q`aW;8/*h^-µJyd;nF~B-u jaiD2+Kl|=~} wDB/7=TR󪥕h6ј(9JFL-wB{6N~ۖCT/m%|$ xBKYmmQ=jd T;-35JZ:)iߨHS%NY`Ցϭ[>konF)V/f;xfBu ߾n+-"RL,&<}v#\vS]m1wSG^yωqq=u??:~jhиX5Jڴ`]Y ;(V;a?P+`&?5ܻa(XglүJtM7cT BCǸkX_wm& 0BKFX&o^yt1ΆJ Y^ZLѯ.4(K:G~/A4\gd܇񊿻g'Lww/4]96PzQ!- x)UK!C. 9O!1PYځSzH)8TVWQL*ya9FtT$5ݶ?P?~bQ·-&B]# c~u@+vLP56mMS>cl?P|_ѥo .ֈ@`u' ) F;)$s>=cu2b +jhmJCt l<սm?zͳAȸ&ˢգ]h^R?r)Y,oDjNpDH=5a5&L>&a0H{Q_TI7l7Lg˙pNpHT! 565<^J6{_>ٯݥܷ[/liA)ǣqUP> Q.6}&>I?‰8\z8l=^G 0UߎH"u%Th6ˮwd?җ{]l32ckP`˦Cs,JAk(v`ifie.[xBX̺bT" OrEQ|S%ZGbB4$p2q+{CiR1 _8"vv|&A L<^8W{>U'|LqׯFs=b=TWKuwbqm)17DcX^%gɣ+֡9Z&_2^7f2h|!)g>'(.҇k zF}/_O~Y?慫C54J.Vv@lǏ&R-9Nl=fO)59a1͖iO?i{/l-O }[ &ׁ" h=0^+@ʄˍ-F%ۆ.#"kc#I[ӏ@Js[q_~좛_KgC{kW8TᔮXf/^7-՝8⑱gstƸN5%b AkƘs̍T?g/}.٠gdGGo؅m[svku(h X%Z6QR08:sɋdoԚr˗끳-\"|5'h{eqrr텰-mYF]˰@ c~yxK8(}XW!a))R#/8mЁ{#G>ջ=W|{ҫõK>w|i cZGE;# Dޅ `fאD1´,] ˻;)(a4d@g̖_9P}"KA657B4wg-k%-Om Xdo?+ń"թ~" clʁF/s>&QBq KDĤLcoiu G@.H(`np=VhWINȊ4NfN{]LV~.}6߾Lۯ'R}슍'~PZv ,}I 3^xۧ^5S{ =|al.4 CJ1$3^_g.٠gd܋;wvO?²ݕajl4MU"*T¼eZTd< l&h9l,!1L̋t}yx![iN3E<0u Ɨ>Kȕo0O(^ZY+o)eėoނaG!m8c1޹ͧ ̰EjrL4E*|6~1?Uad>Y9O :e}jI?L\wMwqwo?xk/ZXT/[YOUh[hi[}rlJ0X{&ГVq̦Fc-HDOIo#x2gP,O$^V;a8~1HЇ}_e FJaZI[سxȩ ֔ѨM?VΔcL~kU{CՉT]ҌvHoM=|cf,!diEbnvqǦUL !9b˼xY֘/ ~HUgb=ud`j3QNI4҇?ށs.~η}n٠gd s+e+X9܄b1<.*yO^!#ݙFK6'm11RZ<AmNމ&e xYzM動!8F689/c Pʶ]?()o^N󿖌+z]i=UHq|YB VVo;7p) *r=ȵ-">c\7{Oa[f'h'9cxH  .]C= :1^wkN zFƽ / 症ūCubSۼrelS;qs ?{SD$Ihy&F&)Mmc=ZT|DIqj 0ܞۑht\:oS^Tyو}| d0Qh%gBDW~F =Bp܆NVd@,Ƣ߀߄{RtK5 CJy:Dy&y'/s4U֐x]xc'p56Pw E_J#Z[x&9үr bvli)}i@zRa/ټoX]̻_٠gdKڷǻ>}SW]YUL(b1Te=h,چا1ui{ι̠Q\6pڐv ,?~:+1QJw~!>%$@rmjT/1V:@B#'5?[jE  嗢C5xӀ1ze6l۠q@늪) 4dQVJk;8Wt Ž^F/pG6>ra~P=q4VW[ea%K[1]a!4*Oz<"~xG7 -XQ||nR @PKTxsUXx4Q0j5x{HBdXU4Had?~ 13-l4lD=w4j2i̭)ȃPe4 h*AM+!dBXX8WO=%\[ ~~bD/4ϽujS!{ĥӦ h tAhM}6귤kG 321/nLQt| +ͥK+Fc%kwrk-٦`w`eʌ- |XJa@1Ṅ2LN `5O{qXxHo]lә8h&($8D>54=vA=T"gy0v[.A!p?Ȣ !E=4*3QSYv!d'̄ELsaOn @Xg-3+Z1 =I)/iP_RaS@fe8w|"A6 Dyl>tyJ}zUX{2kWn8"(Io}.哺Cz7'¢tD .-l7<!(n{̰m}bq<;Xٝ$=z0?Rʥ>݇<da tKYLyo{[X2.m _/-m @8/qu}m5AS2>$}g\őy ;4ǽ32,33S32݂m[3m^hyEWձPmZ P۩Ay&5+I 9#)Lz"ۣ{7oQ ~8'/mR5|֧ ĉ4'nFsakÍk-KnћTqa4x<?/2aƽ=EmP?= 01#^/HF@ROj'+Z $ P~3fgZdBh)tsLI|N$ J]? {0^7qr4tIvqypZYrݧ|*zC=c/!CiK'ĄBxpI.<,bܛ= +%QX)w4\-M̞Zx6DO,BD'QՇcEl(bM gw'\D"8AyZ0z 2u!aO;co(Aȸq %W0|~ҊzxV(p] H9OER"{)xp;F{/EhӢ<  &Q;K( ׹ו,(jySk`P51Iɭѻc>_/' BHF* "Þϡ` `i/y&cNhbq> /vN2B g̍ TzKYWox?,=#G%l;0^~eeֵ3|k( zqzZ}M&<Z@Z7=Lƭb ʖIb.l=ollR-][$d^' oU /vGMr*z& -&ëpaوiipܢ*ci%/=k.]H &e"b?d3y3ݥᕴ˲H 36/ װP?n&h 2pOڹxpcw3MxJܹ#K,6[u lMNL!Lg<o=:E0o{Cj=h'<{F'd@'/ɵl3QxS-+2<}/t^?cLdx5l$4FX lJT{={F?9Sr,$1:R1$I|l{-Ht]㍱_pr8\g?ıcat[((o[PpaeX|uv[{BB2 {X>z!Nv)8i[8aOe䵑*eTzsĺF3g~٤z“%~0J02~&lEM ?s ՄMg'wbʉO,(֧ێw1آq=dztv0" ո!oH=LC4p'q 3#ӡЯ]* ajun]$θc y{'dJdHlQrk~Ab jd*4`Eב]7q7 ?wdۅqa#yΨ{w"!ZT ps-P|~_g{bv3&B"6ALX1).eʧlE0pLMxnSK/Xݟ_)i~ho: e8ZZ|$3ަa^&<kⵆgngVj$NC<#]q2f!<}ϰe,x.ïy̓c]J85XR6#-K)6Z?'#=#.ƻ>7jtΎ +J4hݸzŽ5@)\tZѵ u 獰4)?7 3|wN ̛:cߏ4~|MZʸ] ,&\a v<}eͥiR҈7p+)'.J< #qy-ܧq>ҿ$+@tp[REb^LgžC; 9׹Q?HǓHH0눛osmP-f.uo p*mFgg{vqfԶ𬤋$$O {==!EƉLhsod Pɉ?!ƞݤcc:|F5hTkV t@(b ~jp zF]fl6ꛟd^:RQ(hc)6D_q>Da{ČNΌX8 q\0ɾ@acT oVd&xO=X6Dbiv- \`L @ it [t$PD!6Vu]eq%}:9} ﭬSZC)*iJi{/D@t 0jߞ+z1bfcs.7?zcV ~&~2FُiaLzmM2)t'o N/)Bvf`Ϲck :ˉmw}pB#.<++*A׫3!Iϯ M}nbwOa[RX8XOEZ w΍^cM JhT kcRL^w;K":l32c{-$yՋ.7kulk \7- dZƂ~s#[ԡ BY"qGJ(nFFO@*eo턒EHL{{q,߃?^:hIud,\ ߞ3^Pѱ~a)\_?4ӷrS!k)9Qح0P|a1`<)\lF5iQ&||&DXX`O-PJCnu km4 4jA!N)(:Bt ; zFƝk~/~'_6~duMwTc/Z7`L-,nZEbk02))*duyetJiP#(!5z6rE|cs:9fW`"7mspc8|N؉ ޮ=U7xBPWDOքgv2YI["A!Bxf)_ Qmc5g V #┿ _N^OXZ+hU۴4Sѕ00(%+^!0Ieꋐ&Y垑q'B8sO=tyB4N̙֨J8O'R>.h'}Xy^WR'p8Oy$r0#ʽ}~ظ**9Z%Pli&<GL ~~o۷-E4x[݇$MExC-8`Mb]y0#XVЄDGDB% wϟ?lۯCI]S" ύ_ܑD"tg+§X1 TӠ+MJ4HՀ! )4:HB^:Y!w3.q7шZE;+ꤑf-h`0bJ&i4%Cbl$ Ŧb{Шt#KT5xJɴI";٦-~`by΋){ћOipE"ak4HM2Qi\;3ZC&x3 AJ`S˂=< $mL;lJ|Kh! tMΉ/}^?G[Lc1Wv= _pf)FkhT캂;ΘA(,1z]R=b[ o'%Nlsd>o:b.U/d= V`DocL=p)-5y.LPG"츈Sq% P##nLʐ}so/ xŻh^|!7v/DbOωArNS=Zkh_jL0@ $ea Y$;@Y (7 |.A6܌~P7.:4׼|qQ=y8TgNV}1o01x H6lT45 G?G"6^6HqȇlӈhȅEddx@!-ia1KK2S#VjӄzČ o'qI }s>=EH{鱧r}`-"2oE< @yc3"Uv4Ej9p]@\nXD=`4!ܢxq c҆/`g.([,FA7ݸrװrE?j%Z4ύ߆&X v~~(bٿ$>q5#ma[8Gq{v];"k1BOnr h]4 j Ҋz%a.#w [7v/uF뭿;l32Zöe³ݥWTihg$&nR=TzX8˶t%S:&Q5MeaNж+wAv\y1* HBzC[iC4daR,Pʢpb' !B_uqչIaH2ώ f&# j{YA{zMWD辗f-? K的nBcn|^L&4+-GX@$D0PF2G"Kh_ϸ E+Jkieb5v!(\Ix1&-bY7p"VrX+ߡ묖e Ӹ3=#e?P_jտ57ߜ:Yoh}YKY4m<,W5 IGaj&?eq!NK>opT\W`tn&mI0ّ^ P*,)%BCR0$@$ ADza HY@i .# ֒_ 5X15~'̈^H~s#e )s›NwN>74~Uus4{й 8vO#x"LHDm$Rz>{ƵnTPЪ!RlvD2 ֘ /TW.a %A؅&R(JI EG@J~,!dBN$Q !@Ac$0ΰ a@$ArץeAhJ -¬#-J9ڮrAA|?E/ڋo>ÍNЎ{.k#,hUǧrgb1Ma1+Y&r< #@qi 3@*aUNصa@ʥ)!HS Nieɢk~D48BX Gy4E6x f>qo3zٞC-,eӸXVv5 1ԜCcϝ ;ݛsuJ:~҉ۇc:!j [!م󂵍3 QP8NKvt&h=O*vJ-A),\. Yω,QMV6n$jS6JQ)# }YHD P@y%Hk,=d#`Y Ć4FF4pK*K*ܻ_b)S&Eh09uQa({>0Y̋ J~2(GKO3ЗLS|ΐ+WZV5]lMv-B7cS O[SHtJ%C]BOepg z#ز};>uƯ۵ʍO5HO2HuL1&>DqD Js. OUk~Y^#oJ7JA b/PJؔ؅'n[!Weu5Q0Slܵs:t9j4JbdJ-ю&GK+g$F^ЍTsFX5H+h5Fӌ]oaBJtB/eAw ƾA~T0ItJ^GW4(dBm9e ) ztkM ezhhf`H .쁨@ kXbH40ƑRBCi֨m\nc&R~{̠x^iIW Sc؅@d;!\yo?kE  ?XX?_ޥ 9v~0s)@)ݢC:7W+u aqxT75WѾk WEA) %ٞ5B\FaHE!W}{;ײAx׏C?Y.>m=Pb=UUΐ+,lZ6&l4l'B0i&KB${s2 uiyWaвQ5AUQ.g͒CR kԥyB !l+l(lV4Et {Tׁ@Y te! v5470FQ@JP2ӨhZ@m ̠,@)Q7cXQQB t:U ޸:4 gز727EY\ՖSLaCDM'A@ ƏBMDr'g$js`tM S~~'05(05(0=( iﲈ67H5]kmRJ T Ak`%>zc @1 #P7(]R +F׫(.!hmrʄ:)Rm1< ] W`mQ)<~OĔ6\.Z nB#v&ܠDZ-ʆa6À/X]%JCG4~o ')0=.tA'<~ 5UA}_jR(\~Rd)[ф lWˆiNW}?} d~zm~Y{hWjIUk9abцdvBb4a\gG[ t*K_Fߗpt=bQ10tV 4C(51?]j 2Hmάz P [ N9ncۆ.6N0_/EG:%31_c*Q4֘j"D z=[pk ꚰVƦ0,a 't7% fVKZ*<jWF,D}qOJqÄ_{Z=B֫=g=c<-MKuv'Z?4q w!#fNԺ=m"n O n79pNX4%< 1N?QjWpIȆ$L-OΘ 7.v4FCdZ^Fu o^vڦ/O{ wd* zQ<= ߼yՏ_\ld17Z%TqSH+9vrUb =lCJ ݓp:WތC5Ch ݀k =kf A 睠q %vnaǖ>fg*15(PH/$ )PVA"4Q{jYj:Rhf`K);qʎ>,1zfȚ ]ߓhB]UcLbz0tӽ>ʂPrªZMd7RZk6!(1Vq?(CTbjPsQz!x>r H9{Tgj|W9;CH?X؉+D'2MrX''ԓF!Unh!o13C@B(6M+]㼓%:awNaLS%nN@YNҥf,cg'{6ĸҘwuc6v1=()zV2XXm`\3>Nӧ0=u*#Nc70zhTafV`nuKIҩ،X[,qt@8'eg>f䣙n̪^Ue)IqL?]gBΖ,D'ӫ1 Bď/DX<}Hťr<[zF[Ѩno֐k/JnK^HXIՐdБ^^MB~}w!z DVۯv7n3-myU4(*=[m޶rRALz`=Jf-@6Bӌg*=D`<;{8>vn`L~ixG@eQw,9dm*EMeg8:;ز~uHրg`aYa7pm+=7DKXԫ=!Ա~_`j`0.sk+XlNvLwp&8,P5˻.`dqep=nX/*j3A|p\) W^ \ H>/Ju bUpVl+S]g7b/qA?E_'wf,D3&mPT9[j/㔒БN^Z=⸵кeK+3ZC E|W6OB=};go+7}t[]ǗizUōr-O']b1rF".C|7$7; &yr[ۄxl6(Jӥ>4.hyuIC~-JX\I1s&kb3hUècˉ Bp1^i zY7BX҆B[W~gد=vdqϚ->C?k{܈6P1INdcS4Si &FpBF'yVnS› I|1fBZj#Pa Adpѩǩ'sfg(KYt;-]W+BJYʴ +|ܰg"Ȳ@YNgwJNzؾ2ox3 _q݁! , oxaFh]Pbn䪱QRdkGqČgfOP3̈Ug- U~2<'ҎWzKǯgZlz7{mL|BP%Y _kpct,ѨQ5EZn{X\;ћI#N0N>@ =_J7>m1@3x'FOԮ{:meU< Q OWcJv,I&*C.׽)z[Dl=VO'%R#(5VCf-Z!B@U];.:S!MጓgmK:]i+J |p*&-1g A8{ضN)i5Ck>87o[ÎM,RوBMjMhyC0dq]ހSM0uv16D+6J(.yG=dms F'Ͼk3~ ̈ih*cW+QZZ^XƵ,uI~adA@8]@RHziW/6Z~AϸO-av##vx׾SםbV}@cזRF׋2 ق X 'n@֘,&(c''݌Ѩj5k!ffY4TW G=٧p3ش^vPB eZ@0ox7@XXnpխ#9Xa~6fKi;ؾv(Bہ@T[F!{,`H}Q'ex_e^ ġу!Fl7ŇoyiHB83]9#N_:O#Oikom}G"p5Ƹ܊:!\[3н`^uOmx0נt3nVUf8+.f>;MOx4?kN:{^^y! vճ,sUÑ"ƽw*~$BnR`CUsHj cG+\k :²ŽMĪ",M(Р~&]̓'gd! KYj]`ـBv P+poPxEgqcyxG;Cp-,CQg`m"Օ ;dÈz&1G=e7үH>$CZkec>5ͨl/r+z5a31^<;bs=ڦK/+G CϸOß=RחMǿg_}ꪂѶ t(8!Yڋq1\=JTa8XgKBvZn0j5fY`0;0,?d 矵;`0(%nb6+vza*5NEgO-]lv`\iopͮ5-VX]ƦY`B:?m9R%!]I[վ qD %on@m:@䲬&qe!A.rB5\nb6rEFbIbW/A}#ήYtq_c[r>R.gQ᪄/ ?Yޭ7VPM RӴQi`Ȫ]@G:KI ߝpS|z݀A)݂^)X>Gq̑ z}F(3ٽ_k)F@s'"4s l5Z!Ҧ`ΐH<],!6]17_s Z`zFp ۶05n)O6hC}k[qoØcQ&p -!%iz}wvE}8>YؚbQ-0 ITJBS.l\n8.6#桷SAg2 \j_ig'Xnz=6vcB(JBq&%W2\2n;nQ<muCM)owرA,lc&l*!;>joEw1nw\trٛC,dJǵFVf7aUF KrUl~ h؅#`ljB])/OȔ{ƽ ؼqq72]g8\ƵVgEdt/^d^`tCF'T#O4~^Æ1F#(01 5V[ Zeaӻx#fqIlcjzNDY099ΠكErdXwNLJk((DM~F &\4%xXL tEKD\,PG$i‚-p tefVˌnb&NzNbD ys3.=3<{]&/LNJJF-s *|e@k;7B8qO2Qxky)vb*Bii,]A TSJNaEX%orϸ_8[[߽Yteehm ak:I݌{1:1٩+vEFA+#RܾB c\K15#H+NX'kBȆ` *5j ej_R0 pb)iiL޳z-:E\Zcެ)Ϗ.}g =^"߾[_uE Gko:1@(?'ί7>8>~kg-a6WvMޞS'p–%m/ǛoJE mX,<*B#VmObtxf<^Ŀ'"oVwK}!@H cogl6Y" X`v !ZM [[oVo_~ݪ*3#D'@Rky }Z[UYqɽ7.Qkw;T֢.TO*k*EԦ0$|>7Ħ/ ~`^BЇě{ =bXGd1*>!9Q5$8P\a݃C;?v9j|N-A8[>ҏ~l݀O^yCبjH yo!mbzXbh`x%LATu$$3>a#98́8 pĸ_ \x |;IV\L([3Q![fQ &r0oĕuMΨu1*o0 |Y݂*)P}Ѡ5rEQX8?'^㤺!lxʅ)L&50(F-+v#h9#:GNz2& T\8$:aQAbuSfް=4KRyIB1a/ R_C*OB|5iޥDWl-OCnqK_i[lxgc=V978}=y|z}Qk\W1&g=S[t1db5N(J!*w\VY|@~QJո[v`ӈ~:85֧@0g,jI( *[Xה@'46Iʊ=ffvtIArwg)ɠf\dS:w8}ǶȦIP? oUJDP-d?Te%%ENsg^G۪yZ)Bn͡cv5bOb1CЇ!Ȝ2טp`x8ƬMIec 2νSIDOˡu k.gc=Vj|N+~h<]._v)05J01⩗_*S_MkmdwP+GLʝGc=(d8R E\qӟ1[a2'3F-]bmCNKJ&aVv5)m Ӹ)Kr4:V|slr\5)Xornh D <1[L#<~SӘ >yUc,9U7U!SV?̖TE*cs,R19_$:s_!], 9rcɆ׆3| v%q^]9ض*10Sݸfs>pMU gXKnGnwsx]Gv!I/c!pqmY62kjìӵ9٩A.C96'FuDSV }ZQǘ"%8t8ڈIqS9 SS ˵:\B|2<V򖨀q9Mtkkolk[*95Z!Ri_O.jjE}F}(2@ ]\zq{rL<' Pv}0yP:!aޓ T odRDI;!mUWk<91^KT'␎R7`q>X?ƀaB_v1巓kps@CSLv/4D0g U}KN<n=Z ʠgemqMx?K6O! 2 I*2F紸-eBu.nJC,6q~eBϔB&ť2\% Kx5ϦpY2tr8pY3{ic$ԡyj\h͉=e5@PC`]͈&՗xއ{~s4JM]M.nd4qLs;54ԠS}^Xe} cw|)%l"/pD%`CY$|V_2aPq:䕊q,©c)1k岴t G(IqA$}LB(w{wx+G7A-C,0 !ט̀Xc!;Q]͔%sRu M&fZ, 6@|LTJs܇,=< .}g_CNx@1znɊBaxtbt#QY;kˏ2RΥXh*pn}`'';3ZLgv' zOmi#K=R.ʟ78oi<.GRNa<ٶf51_a|uHu>2>dúC36R sTEsUjkOzHķ!!C)_6(U&>8g%n!U&I+/v~}6x2ʠgpqno=<ΣGejyb@AM!F0Ff̯jMmLk<$jH*j7R2'Rr}-xe<X[o+Ҡf+Kb"GsDYARnWUZ4B?̽#8 {^n=v: O8Cats.xSgxS\qʩܙ(B71taHo:E!\*IkaƜ}8,)<(tB雮9<ʠgd Otz~pw b!%+(`فn*0\lUn\E*d>VBu0Jpg.ѣFakz9R0 $mW]6O1yNtrA)bn2%NVTS}}31չ!ɥzo%џYP9"a}ldsƻ[?\ a2uh¢'8ߢi C(8#{Nk'u 픢|MZNavn86hD!{mO*30ޠQ*8ZQhMSָ:3(#֚ ^PH!  $礻gLs\{rO䃝#x߀sǵ>ل^;t׽euceW1~ӣ8g&/~:9)2!,vɭ<"yU$@m9\rH7|T5}&-DMb,6<`]1Rd7f/]i@џmLͯYr.h𔉀IstIaC،knwvSL9wpam6!.k'R05ڟvryMM=wE8|9;]E"ɇgks78~XψC*Bz8=Gvm9 JolWj~I!C1ERZgN Vڔ/.cI"UE$]|@CxsGp)G_>+`f+!GRmy zKNԌzbDoy؈l| 7 zYhZr,u sppy-KJGa3яtE9I*i\Cv£MhBv|e;Z"6kX4ڣ6phpAk/8|/ݏD!;>)rcc~TP%D\PzΜ#vX,\fۋU(-)a[<(,n3[^eé<DDOi_VH{E8o=s!)6r֍L~TȫY0)ks,ysI:L1ߋċPsu1cs,BɤEӨE/㚋Mflp-.:ɗw% 0ƻ+\p)/HI4gCOIā2n'_|z,FH .u^C)Lk{s*S* =ؙ꫘,5s^$Z(UѲ8-E Db\#GL=a y{`pE•RUHáqOOk@7xҍnvvA_Ok-DZv,Io~׀~?.sTQT5M2׃Q' U!f\jn6֨§,Ίu:0gKj A pɅ-MnbRDm>,{?\j#ȄS[E4 ~LJS7)o?,Oq$U&"h,-K6ĉgPEl@rC*ECSsDhj=i3I|~ibIнqG֚w.5~u/2) fƏby{n>Gt.DbĠr5(X  9K5Iދ9'.CM>̩O8P3-cΞwI#oC֬5xUn 9V<1Es&%"_yF_1mqE[PVaTڣ*s AcH0\!W%d^V7LuSf8ס+5(}7z̝kRAfM*Ͻm2,魯J=ᏼ ?}ݗ_/+x[gOU*(ձS竺CPdǶ Fyd #ߗ\#Z\U!ϕ״Q* 3"!̒ԗ}j0/&ڄIZ?WxCJpŝw?1UC^?q7V}5㦷lc=,~WiWeXx L#"*LcI jg[81{({` okP6=F΃ sNsNϋeMgHVKXjf*La۶!V VMӠNa& ơi \.fF{kAw &n#5p$ɨ;'%dZ>b"`2qMUwi'H<Q20r&*:ji>]h}_7>L-hP}HH!E,E5eHOj˓iwecGW"\E|2]RǢzJIo¶4,[O!^_ݐǭwLt%ا%'k#G7ti=\_ F#fmD녩O3=ҳ PXx_8ּ[,+]4{۩;rr.1B0!1'U]WWn,`2eV@.MFY;sns?Iv9|!-fyO8%  |W6/6\;R`d¹XJ9>݊U j@p)wl1߿o_n0h=ox< Hb0 =(2JuKpoC?$+qc`lQhDz~"8Č~`|%ND{[Rg3@92$tIӄrh%t.T+b7g+g7„G~..IC[R&(aNA!HSaKo2TO0u\EPΜJUpQlvGv:X\:Sx9&NMmaS.6)hsDL?pa  CD @@ f`ޥ12im0@H%_#-/p`đ߶kw8͸_tb"*#({oowߵ[\c T\QJu@_#znbE v!uc"Z;Ntclh<C׀prk^9 yRM']IP93_MY(&bc0t&;z4FCI(Qy< ^a0-M:+'eCW8zG{եx槸}aA_26@/ݱww웾r 1b|poP##I*+%ƃV9S)5{e"K"]lͰ%` %teTHs:Us O\ c$Γ&~6撄OnL*rUkˮG4C""M Ͻ[ H`rB8@O-+ϸb w<ᑝQ;᭷Gl.=ٗΩ>Ax] %6 6[%sϻ'Azѡy+RY[=^EҜ?;˦%>~d"N- h(GZObkRqͤCV'd01DG6c{R?Sk`9ge=J|%(~vR4_7,F%/U ȈG+Ğ3=bXcBf"<4h(= {>9!Iuй[ఄݞn[7@ʠ{qt= G=|//iI;:sJZ?gȱA f]ѺK(,^ST6@Qn6Nh0a񼙡C9P7Ĵ5W) ɤ$Qòw؝ؒ1j 9ɵ&g49i$1 mj0;"9Y ӟ:yë0\qNnEŝ ՛w.&qr%f/7~OTSk>:|SZL&NB%p MLGQLHB w\뜯>21brUϦJV] 8#^R\ J< t)=߭l=u Ř! ]Η/u)"&>E&u \<RBMS5 D~Â=(l:{K? -O˱2_=ZK?p|ho $rPb0D4-T"$pl FٚBn;fQ}(e:ɕDP%*W PF7y8jM-}ً\G d^+fu(,$M/84ŗ^G7c8D4$bDzU:i!^O[ G;:,\|bJq|9isps7/uN,Y,9Ɂ!VY~<| rcTǖ5ɽ_>0,( e˳: QͷCə-$5TJ|zِ#9qFH~2䌶Iej§TVnS1y.4>onȸU+:-oom?u돞e1 C W&@&P &c%b֘B.'3ڔ/)$/u//X_4 Wp=[T~p(y8j45/A 8cXIZ8U]Dz 90=07~ŹT%$ԩF֠Yڴ>zm7|6PN>c pxm >۔S֦I\deB璯L}ē'|&WЂBP䤈FdA85::\ا>Qq幰eyONGC-}nP r:(YpB."F!7x1/}2} pIb&M[1N%gsx0 bԁxT_m<ⲏG[W>2_=ShG]=y:버kȅ't]j7dUEXg8fS RJn䈭*L×r3MJ I[j眑 GGW-/qeHH%\ ȷf ׬y}\==>` k:JU|(…ڗ6+ܤ zW!*U|!<8m{~xѭ {80>Chg_IR}뾐RkPI@ Ekb%k"G;EkO#*ϏZEyr.|,%DSbLβ摌m<$(-pz~+C .y\EW#jߠi|wps%ta5>2_`8`+ozu[R/jGsCyE'pPs|ywKe bο[ k.-K-^ߢ+!ǕHڔĩ#C1u ɔQ 5 %X<\3 kfq ~p+/ zN(ghSFYOI*RQW=]IF G`\e|Ȇ\%%1S]Dݏ6&ae?2_ x?p;?wݻY[t!img[BΑ1gHPqpK~isF\B'Rbѹ F|&BeH,/3ϗ]D8\oa֣&\Mc;I:81ݝk\@yD|s81Aqd]Quk{#\< u+EMơ5ur?q5ɳT#1 ͽoyly\y!#yg_g]Yj H+#s{ yȝߕ8q8/'j+]%#%Q6kX|>Xd*gq 8ϤjRˣ)B~Ho1,xpG *mJK̝HٞKxyZoxݡ[O?Ýl5>CxN.^[_w/. @yÊ!wQzڪlښK Yҗ>sfF?,#j9ΪdLX01#PR%Nu-H 9A-Jٔk} jf vStq?H8vS,;ODߓrdNs Jbц3Dpd z׺2MH.\E'r?vn9| ͬlC&ɮ U"4e22i͙ȗQzR|>|kjyc:t]?O=!&C>G歋5kmlpR @bi<1v -~^,oSӕ1*BvzE/?yNnn1R&5rLܴ,9="`չkZIi&mΠ`vr\ʼ_kw9ggP4J$56eo+YEZ$ 5(*OGnfp.Qҝ*8 \W"H_8'u(*u.J\5ȡ$6hsT6;FS guqi+lr,&M c{± 9{Dx)R=y.%ioT(*[}L>/ /k7(sg;ĔV 9_K SbOzIn$G4;r+89B=Bá} /㤥 j<'? 5o9mw=x}-xs{!ȈC qPXUU5VymBT&'(nr BQrٺF2д8yKdgLsn:] Gp$\u`c@7sb}jy zb)Hf_L:AzY&{{umLBWGm+i\!g#,RkEA$;<>| |>}),z- +ŁҔϟ,#qE44LB1G@csIw&uJk}j^1;'x;,oJW u7X~ t5bËzʝ!JȸJIݔ%n_MFI7Fv##kXk" qeX 6Z!%ϙ aBja6M'.k "0kgTiOI7P2J~ӯtB_ZW H+. z캚TAuQRhU:GNWݳ1/eJHg\4-Q30z8=M:ۍr.7bI܏;=9~1y`Đj_6|&ڧ<7Lt~kGτ0a%°U =lȧ c 9JVw;8^4|Կ=ߴ2柱2菳(A~9s?ǻsK5`@ST{&Rr4jГaFUZޒ]BØ=h;"5=9WLJJsuq]cƍ桰l 候xΓ=pp⼠Ua'`eb`QE1A5mT\pRDž*FJK$Qs6xygB>" D w^7~ݎ=qB1XőԸDVdHo1|6X>&W)yN/.W3R7oY$&嶧KN#J}DL|ONR.\ p` }8ׯ`XGo|q#0$EjW9r~ejoͪ ÑDJdM(D."eJg\^Ad6}6t9G ,|ʺ5ۜhvqeFE%ih>8#ssP;%y+i+Ƃpqe왢A Gޑ+"L$ڮE v9f^hEzu2ogola9V>r r5؜VC6v8r)|\Y5UaAbORvgKf4Z6J 2_#J429a Dsg _730il{pOfΟݴ2䟍'Wav>]RXZ\*FVMZX\G(<-9A5d 9(mIc!l ؘ_j{c]+34ZT֟(+E,rsX׼MGTp@f\j':voLDJ&ĿTx^p`Yb18?cU;,1ם9;3J7x}|k?^C/D]Λ(i\ }L璦!ϋ>UE zQx8uJHeq$aX"CX 98t&/|٧t3܈CL x켯&x7]?[ceg7#/=?gHK< ˊA7q16WdDs%4PAJ)a1vM1K>F.ZKN-r+l"1kd uQCmNc9k١+3a7'\6(ǒ"LIhS/ڸ'/0AF:u}R;5q9icmy?z:|U"؈!L:oKuyYё1}uJl.t}_ !,Rd.yn3Θ ]cB h x{l_o~+~k޴=K'O/[,sʕ-O%GW60` s,@JI4j |@ %zD2Bymd9t^%MSr|Hٓh*JXґރnT׆B&,Qm>"Ñc+΋|X˒ 5(!~VyHhIQAjߝce1.lLۍSNoo].#Ɯc(JՔxgҚ6`GDc[9gmcaKr"} f *c3\<<2w:$cJֺ"HTڪԂ4@豻8+w!eid9,շqjd|l@џa튳b KZzK8sֹ!mHntgսLKC4Uy<,Fzr/ur=ƉT klq8|UBצS0t0G%iY, aLD~s &m"k̷;xx)?vg YG|4C&zCmm6-Qc \+^ilj&nMQ×*[{Xk0&}߮dG䲾E*R6r2I8f<)36fllaOENT;;(A11d (B9ulypwp}%jw)OtgkpC|x Q!ǻyr]̲Mlc׵#F!r6 I(f0`qs/x1J9:[̪r9L@^#xG~ X5W܎A?dz^8y/O5ըECi# cF1]f79KSs5CIUH1Z j AeQ]CͽfƿcՖ*m]x5:stfk ;?c4`J+Ix ; ) 0MǏ^?|ƹ2hUA4+O*IW; "}fw֔89y 3!,[+C60A݇/T2}YǕM7t|KGc]_8QKl$u _TkGd0-A)w%)zx_܊q ضW$9dD>Wr<$lbXG?zć_>$G"rnqkgPބfjS'![AJFoc^gpU -FG| *,J@0ZϘM|Y%j,C6 sX'޷x1n՟2g臈.ٿvdM݀o%8ԼR :b|E=^ёO~/81a}ךdu"012(rU@k)s_nb%+J7c5+D]2fr/KM OZ$B).$HDZ0Hla01rtK3Q_>o@C$ BX_4d/b/9u$&֦ @ԉ#_6[,"_>?}8pӻ}hF Ι-+Nʳ85NJ}YF99 sTnROÝGE]Y5Syr>([}'&ovC(`]8̽r\S$g4XCX }r@-OS),s-Jޑ_BDmOl}̻OxW˛^;V1Y8?=[KeT6&vg{bX$E @[]&# !*8|"!LϖҊvZWZȔ99pV}pDUÕBQL|uUd(IpX ;/{1v/f[ӲR%&+rRfKcWߏ3g4 .:o+.⊋o1_2; ֦H6dmAd kYT9Ie,xWz:>z}VCn p eA18KB-KJ_&_W|6Nq2b61 r<1ty$MƥȼIt:(59R@q޵BÍh7[r"q×?e}FY D([0yZea% m @sw\i1MY%\fG0,4cd.#P E`J@d9r~>:}nrHlGz#L8<0L{\Nljk.KI$;3!$Egr̸.1SA0Odg^;Zpѡ)=Рe'8!Ӟ0C7$Cs)Y~%7n[ow(8GNM|2r8 l1֡1d)\!cW7x6(jҡ2!ڧFıJC|؁c'ZȚ>uK@ Bɹqxoċk=~m/]]+~IC8GO_HLB1o%YJu"6rä&J9X9h4lJ9&Q5 lS{_rtV`v h%% VDZVe v` %QF*qL\L!`15k78r㛾b_}3cHt ZA҄#i ^x޷;/ptba}q}xxp)naR .E(" o+KF#ˡG_oy">xwbKcL9uUćĬdꭱytuzM9Kּ[^N Q1 C;g;sM$EAywMK9awc7<-~ّ'{gto[Oo Y8|yum<"5^ (g Yvk@IVkLn|Q FP:gG{,Kbye3r(]~.&=+ 4Q}/  K7ٴAʐ4wsA4J< Xra!)k4p w_'\KZ"rO2Mqન͈7Q|;xS.=p;`gG`ڬ mL6`>|6ƕ%7KDx/ȅԚsDdSۮ[nއG9s"sm|)3ͬW4U&C {P)K(3); !$\ }6.)sc&Nhjzkm"knֳ"'yV;3tr@v3aGxߝ/3\bm&KDٗDMb%E_pwl-mݷmb:!C= ŀŀeФC_gin/s}ksս]NpC᭷]{1NNQ }ֽ]DZ]|>q4!% Q?؂g b$9U̝Ҙ9}c"bS1m*dEr8jCepqM?r7ܸ2gXpkS)I_!DL'M.e4ֺ(P&U#'jXT²6JbrS`\n9ڀeH7k(zU{,P1*Gղ2Is)muNNbkCL(r%z6Z<5nx˭k3|w7K Qeai܇/߇phNnl-"D%~3\tOp ]8ù&ϠԚKZNps;.-]GN#rS֣s4[+.φ%2&eYpZ$*1ήeaTc)q@1mbW%B.k|V~!ɸxܸ{^?s>{oy,A? ǁ zB6SshZf#L@jT&_3J0j*6(8:ƛe:/EG>ӨQKWF9 HѓlZg!m(s1):*@iAYH-!_4ZR%FBh˯e; '[wwt!D\Y(ȼxlIOr1`{Oz,^_yl7A? G|:GgIz`eb6 ac};OO92q.R KKDꙹ:ӨQ2 3Ȇ=볉rJ'vJ2%C55.Ί#mZbЛeuf\WMO* +dt\u!q&Sc zK|]\x=aOd1/}HuJwÙ3ߠ%bM~'qpC±5A2r+FwQTt4LFer+tiTX+5R\( dе >E5i.灉ƜOr LoNRn> wx]v?ݹ7V+~"³,om Xb$D&tCIJg1bm&@C!2bHѺ"YuF.c9@IcI2\!DZ &Ӫ e.p 9/K@励҅ 7R3ۍY!ٚ@R F弹N }ZRv(#JÒDoՃM1 vN8|_~ù \rO`'^8@}I]Q! +ʹ Z"ack1#'gxߏO8Ѐ@XR!kEqȜMeYTtxC|o QdgMO)]bF!ԙ'7@ԗaL91O `ڴHa:G{Áq+cx+~~ҝm~m6FCt}6M#vp˪$ cӰLk CV&,L.QzGU<)1-\"cMYQ;kmnVb8!51(%PZ;_F:h/ETE"Ag6Yc szUN3~f<%břAR 8ɀη{<f̀kKHF X&IJpYhnpznX-Nm{ܙoOq|g vְӵct Ăg.A0UFg9#D֐To/d(ǪNGTGtǠLH0 D}1G@bxνGw$f! rYr;?7׿ښVs<`Gl/" 9Yi#v=GuX.Tʉ, K*Fy1y2P % w)6Q.~dl8X]~IDAT0̆~1l-{PջLPz^Q`k$_,rWQSN4=DlA.d5d,R!8O)G$2)+b>u>)Ԉ%Cܠ !Z0Rt3N/d"#Il\?BH!6BmiMp7H !ɷc@gC=.1i$g1ƈ޹n>O1ݺ{ v|,#ZzOMY93v"!ua# !bL[ٴLic`lp˟[iZW!<RwcC.{2ybCBc<4eUv;KXT.ZbbB+lUVȕԞBDSʐ$\( RbFu~mŸ1H+MnSh_"œ`y!݁`@r2:# cDҹS"1TI$_ R!JQ0UO:SDma9.-CueMQ*}RtADJw:C+EfȜx!Q2&s累!so|akq@kM7q Y:b ~W{ Lhc :pvC3wiۦAҬIKnX7k2}c mܒ^s|F X޲uE9Q}Ѱ ׫k: : 1^q8X A^#Qh_ VZ%09X\^#*;!ǶаLdWH0`֌md[gp/)rOϦ_dXTyCBSTK J~w:o"#p0aWI[㤟f(Ogl8aOՀ bͤXҲae4wzIZ cRejH^~^:%åQSu^5hz0'$dTFǂZC]#:i_!M{4sB3N3kP# ڷa,wפ7NE(z@ztaaX b %[cq$"4CS]~vRY=w?_kx| cߺD[K03&咱;s|%:0x3>`XbXs-BJEmu/O*kf.?9h%7d:rz–Wt̞{S jrg8x*TLgYyO9~*Yҽpb"*5%NX^gQSMxml@tcFYBi(ǭkMjy*3RwȨLT1\.#nb)ku^+7_sTZc C_|X"KpXfynyT7mXLoD0"BHvD@nx͠}+c8V`n{,\=bX&RmM& OxL6uJ-~ܠ7Vq2^qØMpɑcw;<<}Xt; `gB|am`Ҥ v C@?y#TQ%^Tz"V 4›^b y/eMf-~| LjED1I 1Bzu5`onTteR1bHlTZ ( n} .MS) ST6䳪e[^x+{k81ģe*[ >""3P% ` Վ;NL?Ik4 !;B~؃89aȪo)2o<9uDNenyMv#kx7|XXA%Oއ?un[&;m[ʐ{D !!`;iMߘa:i5p|MaWN$S&,#zA5ת$9|%GB8bZЮOE%HKAӵ:D"0 )%Q8k8ڜ+Ls9W"߲v-Qʷ$`!|X+yYثPHЀʰjM&kT[,%bzO\{pg'ze S/˸m  jXqS㞏o5v\>[ ZzԀyZX8qz >`hӉǬm&0:\L#r" j0g7 Rc,)W:v.j[Ѥ"w%V Zckr: =_C X4%YFFGb&޸&(ŞF$PA[R7ﱣ|tr <e=@M0_0\&L'Inm] CLF䱫aIX aW59稭[ [ry1xLAX[k04aOgyJVreQ1"^ oyز-OCyfQkܮ2*2Y:SFF,y)j25-TC;eoW> "TF nYQCND1Vt'-?HRXCN*e!)*>,m2mk" YmU) ': mf Q]/n c~ Y0]-Xo1e[6<%TkY.GNu :v~xjA/ݏ߱g^tw9#GgqHT#`s= Z7IKNZ,~ 2+C+YAc 2{ كpK.6*hJIb 2Ioo #5;n-^_|]X_|VAml Ϊ'F,moo9Q{O.;4$hX ɲFqbv&'UY33qJBdw,u3I񩝌 saNiy,^cLvxK`5\O`5woᒋ'7#sσ˖]RE@CA5sGD&@rzmxd&$(+; M#oKusGKċF ʤE1踔s a1(*lQ:jF%.o{Yy&]zFs%"M}KyhCB T\%)ѐ Q}z{x(@I.|~J)"GΤ!) KzCɐ6{#ZϘz`'xJ̢FpAPp5)iiE~[O0Vq4OZtJIML.19ǩqJ{2 hO'MYowr-}ɒFn,,'Lbs6k˕Sjm %׌#2Tl>KX>X ֵ0|;P]C}N-)<7*籴8i($rzY} ac`y4dQcݟ^oKiS0C,ӵ.Z8\y1C0%b2܁8i{0&>65XpN5r4wg_ybx÷o{wݴC6 ":1Y/kZZTti  12BW#H֩(HM6okbd[#5{mЄbTx+JDo?䈁B"ӆ'g%ήkwvscW?rgBƚA:Tg hIb9vek!uqsUѮzA> ) ! aH|'Cxu3&MĴeLZe9R9Fxx ߀Qx&wͯ)6jucel˦u7z}99F !Cxml8i;kBe '/= C5nY"UFUj~/1*cct{"wشEQ9!&mguyI ¯by0ʸ?ڤ1unO:8щ%lr7j_uATYNPz C%/+mtw8o2oeXA?o߭_sz{@߇bcBbHandiF`szO8|+X"JDU4r*c~-#ܞ[@aQ`E3Ƣ~7sktEmQ5%,k'j3Q թz6zח45tMP}*P]Km3c ! c>t`%aU4..OIh|d֕{j{ZoxvY￞qNU|5>2g`f?SZoÏ. CLo/;c 5_~/:H^b$Oẅi%Y*5kUøX}[^DBZ10APl@q^HFZqG aYe~Շ{DF}|0^-kZY#(㨾JTꙐ*)O/;ȹ(6q 2S|0mOKߧYbo"iØMޓJ/CMuCG|[gi/_Oaϲq۝ _}'~pe7`9W(b0ґTX+IwM&qEUJ"9EdKZw1F{#GT+.ѝ|"ߊX(nQ5"S7Qf;G1\vSZRYU1(Ӷ#ZKy)mB\kq@=d_Λmd l)|);sv,;kȸW>(S#TGTb%-զR0e#NiX"~94or2Ud5s(RΥ-`B^4u<,osVHg#L7Ҿ!ceϒ̸[eg~(|ӌ͌917i \5 D΍H>%8hvQz_DS88,3\=pb̫>"GW9=yn5"\&-l/ö|zNYwph{64l- P^Lu1jd J*VT[%< L0'(sDZ3O\0X߾4j1k-=#<{ fp 0t9W'x Wr80hr4P\r8I%i)_సGx@7nqjzGOwN#;#s13IliT.Ѵ ;,dk&-&M/DUc|bVzk6JBDγhkr|sY&uD{/'n8"L|ea%-ֿW+$Lϫ+C[oӑ^KbC%UNBaޏJy~ӝI%{gx2}K00l.@a4.6bB1m9JPG`e5#0ϒ6ZXoS䃄"y@@isZpIW.UێbbM鰥w*rS^:^\Yr&Η5wCyY1Tl4L\l/C&fl+FŮŬ' YC^w]L,sz!fK EFuԔ1[C6GjSs%iҿ\c&Q"0d&{a 9fi7+~?!`BoxrCys w2Hk 3A 0$#r&2"D Iymڀ,H*t)$ 6/, APF(sOh9F2% _GT29YYu2~szMdu 4WϬD*B+ž-svir@/!d\֙$tq%||yf Ϩ NC6/AXQB+a8. 1iBaNhL Ix3s?©WF-po|Ztƪx0po8ZǖA'f-\Pڣ2TIly,fcu. 2y !Iłk-fj\9yO{|>e7or(L3[S'@͸0bP#^Su=}ujpq0VFD\Jqvu_^<]cL s*ڮbٴw=PVj-PMpR|KC#rsPExJIQ%4^AyH+D83;>:n}j|ʠ7Q\w;׋|N}]3yg!D86F=*Xiz#2h!+ f20c# )%IX'4/iß!F̬/TV|v:4ʦ{[%1~20f/k"jڵ"DB;rOijS&ReTA]&yF@rfMuH];zKɉSzU*VoAN|.i}jsd=Tc -bNViIf K8l~|{xi?jgr xM㋞]=SC; ÑST1t`&HtFYJl [v2 wj#&K5@ #0i}4%fk@L~Q^5G6h>EfOn-*ݭ[NmvSkϹ:lzzcG!AȔ m{j.րJ/kE ,^y5R Q9;WAy#GcM! *2IrO\1i#&˳^!)9q@ qW }B:\?`5Vo:Vlݏfo{?yh韷3P?LrS}YI/JdcuF+)#`FXrr0֡m=wy ^ LG$z5ZZ+GBxOX Kqn T_r&n),#>׹iOZfY! ƒ/w[7+9|xsu\@/:H }\Af{Ys)ϖvt a-{ BKR9@H'"!uE6Ia dreC;H$p7=Gnj|.ʠǯ޽54}N6wJJ!@VJ"! cڶ r!*jv:CQ6YFck ɀȄ!08ЧifmScL]1ȩKy@­#n^X^, eGkM%_-%)ߦȗ*XD Yjl'1ȹs{teܞq!Dk`ɍIWqP!ח*2e2@hr|0-c8s"tHXNc. 'yƛ~܆XXmG!ι#O=|'Nِg[E" sÑvⴡp]p}_]3{,:iI*@ %( |LbY~!D`-!uK&i Z==YB%5z@5`j}p;rFĴ{@c3w%]2Ɔ `y-uS5Y$UF0F3ce?7_~^/x G |0TZŘ CE`JC[wCK|7M_7AXtil}Q {M- gDdӭ"1Kr! 'm<: 8R]˶zo9\Ohc/y-sgq").( /9԰;UŦprC }8 8ѲRM<Db 6t<ڧ±R[1kTb,i|K  ^.n|5{=߸bX8֧nGpXe۽뇀RCeXbL>&5D8Lg=xp3W>wٚCo S,>.}2NIHm[6= yz9 #Cߧ&#1-w!=,V[H* 9Uas Fx mJV#uKr1NIlH3d#1gg J܋\_" 99Uo.s@b1}HNR.IIQ2MpdwNj#|ǒLmx!Ļ[~?? ßXX_Ïȱ'ڙ!>!3ٵY J$% b\mw?k|3jLsce?pɷ㚋מ9ݡe7`͝N'[FӜ wo=ŷ~AME~T7U"[[^G"L1jͶ: *3#38mbm%נYzkr/;Xf*"3aWy.y5!@=m#ӷw}8?CA St"'7Bx(%ig;J>Ťs!9iSj(0/x6h߉o^5WY2蟡+{/>#'NmŘ\_,Re}&ApQ| M_ujAsMڶáSp1 , ;K#_s@ICҚݜ0fK,F0ж7]art ?;=m^ c%q-J΍S U9͝2%WKSR͕kRU`4( ٰ5Ѣ}{R|  5˼ySc:ڈ \ACs3NhH[/0)ŐR^Nس 玷w^m2蟁/k'_8rޅ!"b(]Րdԝc4K\u&k65_8?󍉨jyI;Әx6w=vɑLd4c,t$]8-*-.23֌-1s8 N$Ym=bB1cգse cenLְ#;?ygCȪo&luK"/"<9~4W _9xc:6Gjl\b03fMx8p;2Ds~& ՐvqL9^1l Vr!f.M@EQN \mz[gƵ"PN52n>LqZ7);g7>nkgX`݋oG{}TV%-5VWX^,L"A[,ޏCQM?C)7q!(ƅR.;999̀s7]e8͹"q":<ńrMȕ?f1PHL>I0mmGͽ+^v[%`XI͋^;XݖiYѼa)rI?Gʵ 1E^Tre˔mZs' rzX߬Ѝ)j~rccO҆a0t,irևT*O8,I}wypLd̷n&nvq㍫|j}ce?_~\vqG'/;E-rȍ,b'qFi:}.<|>?Iƚ4(Aꀙ /s0~ YM'𔻴h6~kMnԻ2L:%jԨ5]Kv `d&Evkk ډOd|F8~fW>-zlFFqVGյy;?9 їWGDƞXF1d]8T=ZRfJ},wʄyB{` V(SL>a^܃sIZ*K&5g Lj$[c}4<Wb1qvA40iϜ Oχ-G%k 'Q[s k8g=}x16O%ds<7y&m9kAa{N 8&R;E`)fIhstm.))1bRp@^_*(Jۖ(-lˣk7ug ޫTk`2eq]x$: S1aJ3LY;]#{s#ƤFɗ11I=<[#&-|'1S=L@ĹLty֫vs 7ڞ;VSo}_8@{st'OdĻC sKT҈+E,x.lxm_sOrm̱\! 9reehObЗMPj\bQf̘OK#pl KkwSPm*րY치VBDD9GqwGp~!a6X"20 @Q0V 3Q Cds>=m𞰱b:A]ׁ_T8ЕyyVhWx#4r{RbrMsn5Nk#+e\<;%ɝ@ QǎY!s/ig®<6I,&沴CX"! wc>i56M Sc3oFoyʐc"Ob߽okK} .rҢD،+0Q:~ß0nz} D>ZJ*rCHt{ Sԃk.im f `"ڈVipFALCr`iSUsJf5xFLK՜F%ItQ#%{ߺ042b<2w.Wvk@VQyn͙ڟ3Rj,N<36tSd92'pH6KNiep o@޹d9<6^ʗg po|k->w=죧gc&uaG1)1?k/|ei.ݒ1OVK.Dec,Ĉ~um8.z`z>{..#X$ry~-`zI͎79ZLl>0ډkoְI1uyX^jnTYE3]|6*q=+!&߂k5pkli\r(#iO0P0SSG!uJM4˽S;DƤm Y}ͷzZ~zk_q]XfnssTՂoltmU[PYhm7Z;WeƣWׅ [ZE.D*"MU=Ki! *a8,A1cr|S%T̡ˤS5ʉ[~Cg~X,A+o^|7`GN/y/X viyզ/(Aݝw$9M&Ι1o%NPD⹶װd.E#ÛǗpcc/:w/.tpi7;ޒD;T9禎9(-~ggg,+xƦ,ʒH#(FDΩcs'U{WչIWLQ߃MWMgj7[8cV!}#CG${'sd T ɞ*9$-%x)iүjI3^ر=&i2c?{ϘCKCKUVح l#RKCp˜}S^׿m`Zs¶yѼኣu G9Ibq'VБgN'h}tN'ؓe#]터1XcVA&uK-ߴߛ.ʲ,*wA}mmǹ,yK䔧 ki+}ՠik-Kmꃝ04ɺٌZ"yRBo^q0A-QtGH "'p2C>;ʧʏiBo埡3i!,U?bN ֙@IUla[쭇}jzG ˈt\z*[77r<ےZ6^o'i#ِ"EJ=G/yA8u\Mwjs]w1Jce:=m8UH)4] Tv`Hj ryk 7([רH1ꟊgZ׮sL&T&9PZjoӚKnNt.⹒L۟ӆ14TqO.&t3CG5&x*ߜ mvz^Td"c"gļ\5M0?zQ/˧jiB~sS-_ؿdʪY(%z=3n?DmL8IvOsnioat,qKRʺFonDsyF5U6˃iP}JA`2ʣce:p킹V) 2]|j~E}q;Zs ]~-Gsٛ2k:WW>ٖ;QWž3bSg-0O$YXN/ىno&Tוltq|=i*7Z},X{2൤nMpb2i Su5op̓Mӽ,܉.B݃ kŸY b1UI߼+~\E9 ˋ,2A@4u2Yp0;W|~OӘƫ5^ aMQ̻WO.UeEe*O`~mPJCPûW/pMpLR),̻')B==P&eZ=G4o !%q˽ {ؽQyA\q zќr,JiRBF kl^j>T+s"X,8A؟nƺ(qV5LojR"n*Vui7Dl6Ben[:(YQ9ml%tp" >تRLMi+r|w9#bE5֫u8q[ @;@|Q\l=>2 B2 ֬e>۫7|yI7;8 kcDpFҨXt!lA"Ӗa|3xvOmOeF$gWofЙ *e^hUIyyN)1fʞcf'COZ EX2`lwچX-YMb Eqr6Av7OݹF=Xl@§DG%!U }: 7'"R5VO]Zk<`{ mbNR>'iq\-X2Hv-JJ2ړ$#bKY%ޒ,,gL9ܟ[Woo#cWEB_~sg}`r_]ĭ11y峈Ce^{aw^=˱u=ǩPµSo=2{ZîUGDZ{]bG2)8Čw^c:.ȿ`BmVhv]භ2}рʞ{qu7;3á@urt܆/#_ՑV6Xi纚OpN$z 80Tt2\;uxD \'P`%[uIN)qjPZ:@DZ@4`;9Dm4V-ج%=x״+3Fנ\%5+Nڞ\瑁`Y2hP޺P|n0rosdx+:_>ɻvҊWU)D@졞$NzsAalɛ.Mϰi.ɦFzRkDw9kZtPA{gk0ȕ>M00Yj<Û.g|"1js[D+D]zjRxyE>yjaiZ GZ)n<Р[xzVW O}Av+W`^AnT Ul%Džh*ٴVXLΡӸI齢.rպo v3-[smlGL"u!j[] T_AQ*w`yZŪܻ oA z;o?sW{ևXTݪ bAUՠڷe*AÇ㝜050Kn`'GaP=AݪSK[/?=C1xE&;9jʳw꺽vok0Ke״[H熾uEV>y'y[6sZ-C qIlx2`w.VBSč{xNh8y{v3Gؖb<ԥ  bd;157EԿ}ݴݲDI9v;sQsl.y0t)k}<ׁ/o@['/}oYӻ^)$*dYH$hƆtt>n@ST7U [=.f ڽIjY39q<_b^2&QKp.S2J@ȢDȸpEIJ2~OΟ`6ir_|}Vv"w- WO|pM]-kѳsމWj'TIJFoU-Az~\&LǕطjY-259^td*j)#M-ZitK7\yz]Q)#;lKʈD6!ISkJO.vF2x>pOfHrvU8|_uNVZ!(o+H0Wo3^p#бIzFw3߰Nom-޾ҿ7b[ ׸ =Sg87-*$s¡dhgґ0/e\cʆNA EL hGm>6>'߆'4ʈWDB>Sx%]?jX\5i&v ŌCGϐUs!s,9GQKR AJֆʿřn8|`f)Kt!|b #rNY/u=wHg+lUF@3eI@lK2Y|d}k%RΫs135".Gȴ%Ssw#NB V -Lݒd_ιTSII-@f@UJAk@ivs|T;4>MT$jO۾Y5&ZUp7"7 l#}k5ȧ9aKsdh sQTfmO`wW B8t((C+aYyba)BIs Fy9zűG|w u';K {#/ƥT`L5bޠ-w!^皗cT-@b䒌hQw5RH W9l;Ēh!45MZi4K:؜6-'ykNaڊ Δx;3L; md_G-m{~ 1+ߠ^[jr@hxޓr=.giMѴ$faO<7Fxeӏ7ls(RoGKH:FWdKhQ,dtNA }r7@c״֠J8#sa+4+jxf{1x^2Znus]2_,#9c0n/՛ fϓhoK|籛Қs7:wa1-`.0Mi>2\u~ >MLf6%~k۩4ѷhED/Z\L*Aؘhyuٝbe}HRDsiIU yM+z‚@u 5|'f;-+7G-iL7@qpS|v:'/;6i~=OTEv4U0^Ihkx =7%{Wr_}`Js=UgtMlT4hk-ֱHl{<ͬs1O=ª)0.+JU)Mvݦ{AabiW1ygٹkP9ݢ|k7shDZA6I"]YPH؃N^-ib߿X[r󃫌\F؜֋ݦ58Wՙ{xj}gEVJ +fYHG4nJt횎B(͵iRgHlO9T䙎`._oP&x`o-mc8 JwD k0YJsC2*fBe.| o[;y0BDsغ&GJF$8gd:Yf{SiL u_3k{(c ]2Z{5ǀ^2TBX(bsv^2û8ϱ5JZ*8M:uFh,@6j|h%>y>^\H1~ 'Ňd 6؃ UQ_\_9 pBm9|KϞ+`H"+iq$zVJnN6i/D^#|s, hh)1Q;mކݣx,BڨzM{4LHLk?.q.&X3Ʒo" -=yʋboἅOrCk2wrmk{EK=ͯg߆4ꉗ}Bw6oՕeU k::O#e??ȱ }~ BE!lxCklzM^8D`u;;< 05meۦ"~jݚI )5ffAc"oo%a)*<'o3*dZpM} y>ݜkk\q갇s(UB묬kܗ2pTzEL7ǘw: Ywn!')_,:%vu%O< B&wqDDv@'m#ْd {3itk.~{SWga^n]&0ehy[0¡P\<2[sT !BW,7(B7?3)~8 4* 'PBthToMquůNh_p#F"GOrʱx.9K$you&Za;spn=}O1dBmNKgMt;Y܌M6317)œ.;ǎ;\{XN+6sNX@ٻ:IFBz 58A>.x rC/Ռ˰0ۣ+ LYC 6l͎jd]F[=we[(K:!m) dЄP@/m$Ю7ʺmPSLo{>Z[ጡ2wIµ p"25/ϔ,|ZJ^)?#у zǦiL[/ۄ4L.X+l2fi6=De`ߖ(3\t_SQժp Ȗ>Ұ$H)J=jy5>A_"\+Nܦye{JL+bD7&Ab'u{[71:MJUW|& Knw;[șqydE:jcksB}dLS&r־cye>y^U'/6):xQ`X07L' = %DbMc`wBJpJR~T t$BK:!A WI#>Hvū鐵kO7QH{~76 ثpvhiQBG Ȥ4Pך첵!(p#Lm77_⧮~ww>?ҏiL/˄ ݎؼ}w`LXB(aD4k!@ؽ}e˼wf2jU]?=j ! 5#,w?gnϡ5AVt3y'9ADJ>oSڂ6L_ʦ/Bys{G|عk-9oE0I'ͱ[VGjRPi!u9C,{ܼelOpՙG3NhDGvSco:43Y~< Xi3vx>s⟋r6 "̤a~sLMݍ'h`<9ufKJ3*e]tJ#%-~yŸ$^S;YH?"Q)?_xgţ1ou}y;Jw|x7"-%ZZ a w!.!V+fy]fói6ʎ9?5I5M`m]ރUifsϛፗγi^IQqKly&Bb jcHGS$?9>Tuag_u$lS6# Hs2ʹ<cNѽ+N':sLKsH<׼bgZeWu#-Ù W)EO`<_҂5'Ҹ!8c&Uc3 <"ٵ(Z4!?}.yyZbHm/ޑ~LcxY%}K}{e{KQyM1~y]=L.oMːAdA׺q]KOkllˉ~ YWJQٻbyAGK<6㻯"fvNh]ĹiX(pTeK/J䰕ug ?3ɜN8jNfY:]ݪjMEKLvi?D_Okx;L=5xٹܱe:KN+q쎙@URifw<?tF.NԵ[']o$-yilan,<bRBXd4d7NiKG< ͮ]ǫ)~6ʷSblj.ks,Jzd:z S_ jrODq#bv3NλNȩ1#/2?;{⚛56SڪRڐey>͍xE]|QYA@CꏧTn1ю4!#Vo4;Bnu,PZ3[H.?/Y`AJ̱}Njw9 ޘ49X+s L Y>t NԕzaJD2oq hobȑ01۰ [o1U .qf\'siR}`E=v-#MqX B1Pswߵ?i24Tl}7k:GKTkTHf 9T qr4'm MP,UJi֚詥)v 5~;]eRJJ| W?L^ QhEsQ` .`d>~+) .>[XรzA3C"fC"&8KvҚ`G{ů֝+"8nK/]svU6"z_\osy!=Sxr_AE"8O*6Vi_׭lZ4멬k5Av8OgVe=@0W%SHLb8 7B4ާm -u~"7l.qMo[P\A5g""2>!ٽE!,u;3o\vcdcVIDATxU&_~t~l1.( %d)=1_3Y' n2i3*: i'j$Q!"?go9#ύpR-w^g"ZλT5/$"[2)#x*9}#G޻-:HY)^w,d3ЎOj~~A]&uXk# !U-Yu%O}̙)2QW-p)乢HᜫX,̬rlj<7?3]`\F|\of5vV{;lpapS 83F.N}g0udFZKY$V!Q:l@Qkw@Z3\jGtlWdŌquEDBC}=鑦F9aUdzS_YvO~Lcx$C} V{-6.5': r3q"Ӯio&Q~gݎ`5H<n;̋2/(c3z< *a.RB4-u8ڝNyAvӳЈ<=O (Fg^2 3ߔDTyd*1߹{+ɕĭ]̠UR?kK&+HG"Z$#rٓy%]w;,>x^aq]u:li>.֭$ML.‡6LJ(6V9wH xb?t*aRM{DgX' YJb]uc( ~THT8^ xMQRyyO(- Hک ˧B{ ֎#ē*Z-d$-[emJh{tQ3H_ZAfëC7|~dLc/_6e)%w'dzM0Ȍ=#t.e}|>LA+vVkd1c%n{DIf;qc}Ve[f5;o2m)\D-ZUm#MJ'1&yF#O;Un97]2lj;bQLNR"yrk^f筋scˁcn0?^Ύo8eL4/ W',aę -7cW-s'<4mx7]l[c=V`'mpzE*_r (%B lf&ݷ =gp7A-VEtٕ(Am2.3Axc21;ջ7/Ca?ɩ4r@e"q鿧?:)؞j!vUPpc}*/Jqւ_6%gv-LhWj2̽+ Ny ޘkYHzMw w,rxRu59gb;wPJ1nXgItiѐ^gޟd\3|뇸>MrT;Zs) U%g J DK4t >"s5`XR063$ñ0׶ji(x>#ZSXkYueCW5K Ѻ =,^~iSW듲 K: TTuBcmd,ȳ䔖\z X!E ^xC绅?#o##4&GÛGmG(%ZEWݦAӔvtcHT=>nѪK +@3L;S7dèb&8w\3O,PʣAD lt"Jfۼ-p%4Gq<^q*kl]'IOW %>)Uy5~Sd O}YFSbFߘIE]zBw b?ǁAYA8R}g>K cVEtx^,`ޡqAQ,B桅!zUR* 5Rܳ FR|ok!7Q" Lֶu.8nN4[A?ɴ+O<$/H?&1i7ervāٞ4.c `LB qc1T سt'}2r2*Z :zƞ[{V9 KغIlPF$Hv0uUN;ncUsܞ_cɵmobNSYlR뉺0>̩,N(*z]8R)\*A\s k^;8fQ*c\~F7]ۋ"Vk7!qijoUYjtHrCTc`x(`alA o8L7Գ/wwa]|HaΗ>9cmm qG zh\hr R`"s!9t\ y"e-!K<;:ihgA$I_F/gXᆿ<ҏiLcxY%t<ty\y`H1`Ч4⥡o̝ëw[-\}VN[Vk;%Di`0#YYn߹)tkqystCӜwנG&Z0[\ľ fi@wcgF|Ch@j\rq9u&N:nq}H BƇ:rz"1] 1[ijbKܶϠdy=x3\}&g@N ثUDžO؏F4iȉ=/ U|ytC $æ.N^W1TD?puν cZdwh J56,|wcY c-ñX071ȴ`B{\J*S )G cen"--ߒ!cc(T,Ԫzgb1ڬERJ9'JcƟ41c}ڎC^#Wa8U@e8omi,잎Z(Y?̗%gfCk۽>;띈x!Ød\n7$umDqS7X3ƙ_$8%xTPpk[L4/:le@B|R~NkPZǤmmV"z "<{"W53<l&xMQƫG-wNzxnn:C2)8rsNAkz$B .Ѵ0`SE*_[: ǎ;Z7T\ܕXLZ|X3Ix2fLeơn8LKz^Dh[+邪" >cEǔ}.Y[Zȵmmkx"פL̿8ֻf]lAol?z^̋h")j4BjbA3.31d>aKH?1i=e?_w˥"+ Y&2σgr5ెRk%^oF^^ۧMpvFpk|Ev-yҤl Na|4+ ,Q $(%u4GHkZOݶo{|kU()9~K;\j ׌or#HC"<l-; w\_;sKΙ\rj/v52>TzBVMpkQB\U×o[[,%Kq~k$  dZTxPoFQ4ٕn½dyO'Pҁ-C[[qb;jS8KIJ ۸!ojԽ h}HB؈b" *E&PIdc]I?7erZu23kC{?G41@Z,NG⻑rS7wl"8) z0O|v/ (PJdTdw#p:yNCXV*T"`-ǕNೖn[LY,*M(wgCzmUY{v8s+k/a؀DeKSk5`iŎk Egٽ;- zc : `gbi?Ls'ݵ{L^8ɴGk5@ /DlOҟj R#&u=Nm!ؿhmKXH9/@#am8b:'F6Ҭ9 Ńe3Vg_ڰmhdU>{=J ͥxkpq6)*Xj68j9W %ƦV/z[v3ys]2k.aa.pk;h0fh|h:ρT @ 0C>~!z~ju9X]oC}RL8Bbb5J-tdqD_3$˻t{HWBD+L)v~3.p/}jk(hChX$pgX|翾S+UXԖU .aBFD9L1U1`l6a0o/Z8jsŒhfojZ,iz6νZ%_0=gyqւ]:0ە5O 6($ZX P.mC4r\C?Zqԅ9NZϔ@*O!##^ riɔo'_,.8% U~[J K|胿sݧ1i|Bo[}yf;rVϼT2 W;> " WP:9W;[Bއ@ fڡ)0|~/ߵS/JgS+8"E򫉗*0Ρ>MZ*s=W]P#u晌+ {lۜ6* hؤWM*qK-rӃ#%X[|Y/聄wXc(cKPH)v3}[CT+WiZP:@F4.Pb_㟞_gu|kV~}u^_IdJ d*ݹ(=kc=P蜫Bl )LW)\XPWJ zk -s9~7_xVKGW|Ә71^ S=O_=WXHVƅ?b0Xe+m.CHȋЦFAhd dû3+x?0jxrZGMI?/dTZL]z-rt'o4SDz_iZ**2$7]8β0 AӘ-UF/hcgT|}0;:am/t]|Aקq;odtۘq(j oyޣ[U[CU{nYG$MsEX$c*~yy͛Wg&MJ>7<̩{M.ѝA)-R(:kϱ6k'\zRo|P*3#ML.tYf>}CS iL/S=Ǧ}C7.^gqγ6P,6 Xc Y0F`%wqcڠBJ.:6E5ۄBYOٯɘT~ *2̛'U51E[k)U5F]!ptnK$#`Gq@GyW+Y[_RZkP+'͟?3S'/WU>S@xlD$n=b8:O+ML}U IߒgN>sӡٟ4-%(B|fߋ'[G!lwa^QY0gB21 "Rj+ju2_EIU>,nG_o mhwc* YkΙᒳguU#}VDJ+v+N-Rv+c ҝ< uL8؜7^c;hD}HI\-#je8ޠWҧx㮇+NG,[aM|}&[35wT Wъw%hZb}5%JI2noR)CᗾVO{_y܉G˟ܻX:r/xx$G䧞IkHȳH?Ka2¾\H_ie/xR>>)}x%˾BOrx?h]<;g4v %kpTCC*3+Xl"[DS\6-F2jd#(rssOxE*Rc|nZ'%y9q[58㤜5*zҕhIƦ9l7mޚ+h#{m䮇W9NٌKO fؾ9ې[z+lDM{RLW U wr+ ̥71B7&{H@+qu5clTT R,!iFwbu:7ee?s__޴©;,q. ,@ [k s6P|jz腪ْL 2-΄l gb,_ŷnˑ4-³+|ܹwwxWij4r $*Bn:YzG޶4IcBRϲ~s1uY[De <YeAIM%gK9N BZ##wz7 y&Z6RB^sK|UPtrvlyݹ3\~sY^SO# f-T9lnG/<q׳Y'c3 =!=c-eUNdVx|+O\s.ƒZ5Bs\4:UJ:>k >n{>9seKRʹ5rTmvWkC`\ a"[ W˪UV>k41oS|G%t;ȇ>k.靿y8Fc/AZ`0`8`L@]BBx7&Ӊu7"'Y9rFaDȵsy G/ܶ $\r:[2J2M{iQOV$yjŧyXh.i":ˋ{|EzrI:yƉGe9?GۢеdeS_ZJ64" *'xu3ϧ4MT~K۬q |Hb*K*[֢12&-5M N3|HU%KYhޭ5k?_kؿ,~ЊޱE $ns ;áG䜍VV3)ß!Ә4s;.yv'q .743$(*`}O0I677 (hRR".'ӫr"sNrIY]C&$sY=8K*R݁~eBT9|>\X B+l %-wgeUb8-ΎC (d.k -Cbկv Z֯)mw(±>d03ԬIM1謧Ğj.Va]!trLWb"?[ 8j^2= ht#(}+QĚ:ۢ} -tLÑWEXX(.8/m:gqfU8nmLWS.iu`˺><{Qu.1"d뚤\֕6ح0f.Κce.'%ljXdM9(i+i~)Pko|SW?k37+->t봋`6G zZ8Lڥ2_qoB>?}d11iMOͲyNjb_;:q Z6&n`g%oɧ} EÍw )p H K|q9PcbJB]Os% <"f%-ʟ>zv׽~[vE'(W+ƞm-\AH5K +3^̔P3^+O2w_iLc/N=ewsu|e{x40+V=^Y[g8tv]I)mIҖ4|^ϵ`#%d.ۧ$$ל?[-mC$͔ kV-[)k={5Nec1L'yըEnA>|ߘ*jΑOUv~ob9:XzU$P럻 ^OG_/x$..B]KAQdy'a9_(e0/l|cߜ6SʯK7j9idƼ2b܎T]c)fMawfݖ+w{>G-7ߴ/E{cgTZ0GI`AG!;\jowUhU l%KCrf˜o8-^Ċ]kj1D4t1Ph}<7޵Bi:ZpI9otvJP*p71o qdbM\uM6p:7sg5%S/[1&[SbahEqL6$sXr\Ӕ "CiJlUk', Nv>/?ا1iL;9^nk5xlK/ eñ;ʺz1"B+7%&J/Ek>ܦ%Ȕ=AW* G#\$~OMњW*޷w-qpբM39=Ǜ\`Q ShS'\}kD\K~ps|J>c ALjӪSWun-0U4mi\eY(Zzrɔ'N70%*F-u^_uiLcv+BOأ+u<_꾷?|cJA}FA{C̣Ko&>zRғe:>T,].}e,RPF?Ì[ov`q̍Nlx͹3\z,1/IxUߖdMmVHwQ6-xĨw1V5%]xbbV}5!'^ɼ"؋eh BɃ9[kYR?1T uӘ+'^q ǖ9xsFY4gK 0.?XdJ>Hi4IMol7Jm.'}r]=MG\rVﺼVaI.rc x®usv HEΩG\s*>3;ʗgx*vb{l7ˁT;b2T`Q2T{$h Ryt:L \9G`1:xBw >v푾51iL[5~-W_:Ҋej0"rС(rcے U$4nfIJZ bo,yJ8zF=|5&${;YKwfCe9-/p1=R$-D?)T3Zɝ--kz\Z|\|枊|\R x'.$|kt}zc)̈ʎQ NG&X2BG2?xd묯=}[=*8\qk lQ\yVKi|PQ,& A[9T{{s; :cp6+$Ck1-ZyNUbLEeǡK,—'P'!K "DzNTc-ˏIQ'm#}+NcӘƷ4^ ss+Vv`olǕgy!qVSK5%zJul'jRNv-ؾ ^s`lB*cٵwW]]#9yqVq]:uN3}Yc \R=U_Vgv;Vyh&L>cu*ȸ^H6wmXCe U5UΔA)-i YJZ]g*ypġ?o41iCvo7\c%~yq-=s3`=Y*HzTjZ{a[=\,_< ->+\}&l"3<nw\qq7\4˩vɴ9Oݓ3Z w ׷OS~}>7޵ʳGaq6ck%NVUU4WbD7T߰h#=߂nc΀5Q=DKZ;/o41iUQx{VW}k}=wXcz祥5~f' pm5]Tz( .:蔜םm>}q+ZR2S(.:i7\21G -]% YA#Zg'ईwq%9X71 ?퉉4SVTĺ|1V\{LCKqV[WCRle\IM[Ә4^]}9Z2~E!ƥGJR:T BFF{5c8r!2Ugq0.aӼfu`5nydGk晌ם6xݵktO?5-Z3V{=l+ʃEuw!-xd\zcI 1U5bOr*ն\Z,&E!Qz/E2*5OiQا?;TؘН ni'A`*Dsd)TqV䫤ZQ 0S1=?G41#ʄcqꌾk{_>.MHdZvJȴC ა\J[hI9ztdv/E,V)Њj>+ rft)dqm zJDE:yBz߃*;xv>;o\afXއGjFjZ{`4Uop&$` 3\{2ZA(; &~կdJOHRӘ4qDUFq[xEsU?Xʜ/aq]n/'`aVePZћ{hb-Oݲ:ܵsMalUEF$?}2 c *j oPǙy8 \~+rଉ+{0?KeӟHNӘ4qU8g JI%`sGqi.?YVP[nkO$פ3|wI.$ck޳WwjVEΙ B1AJ ?76XM1H:w[J3x䤃CHkY'{f̧1iL#ī:\tV`y3\L(3k~מ.`i32,Sϰʱ%ǚx.[o&-w)@5(ZSh1 N˙iwH2*@ўzgC% 4 z%7޹=-_;0V4vR"oiٻdZAµkQDAxJ:r*Hv;Xc6ʀC1^Wb'—62joSH>Ә4W}B<ikw/)Sn1371wg{>Q6hf@FkE.HH`8u5uDŮZGmtħ6{#c^scL=oRTxq̍wٹ(݋lI0Sk˸{k TX[Rf;y\tJ iNFQ "A G2zOu.[릔iLcӄ r}G[量\Lrp2*-J)fz=h16hLf{6 a*YGE;Oθ,ͱ:mLfVj8u\(ss ìyyAdy>7>5Řc!`y*>k\P+idt;:P حd|Oڿ*'?1̧1iLoi!.(P~C͌pf/Y]Xb1;ŤfH[JI_$+ĭyN˙FʛkmBD0y F{j-J)*;u=-_mb hlp.jyLA=؝ nmcLJdN4V£T0XQ2p͕么 :Dޠ*Q~X/X-]'2Ә4ߊiBq%۸6Nx>WZlWѩ>"2z=,r<ƴOx!Q>Ivsq.8E+RJBwPyK!YDxyɥSgc|umۄUyr%]eJlc5{Օ-JQ( ̕zN>_=ҷ41i|īJ_=Yc%k=Z 2QVc!2V2vIE1C]ڈq,fl$o/z,b^J*Zʺ~+rO=};GJZP1U5 r,L0;ESmOȡSH ؃Ҍ>-Ec}O=sGiLcw;LWnf_WK`l!+t=J=V60kOr~m=s_}tJK41HL+c\l_nBjT$,:C %4[CTՈCKkl_m-̥T(`ر>mE? #Zd\c2 ~M+ r2V.Zƪ\ O&ElgB2T9ܫe~<ȝG2OcӘwlLAqHz_'Te>W^)) ^.Y^0a0ʻܪo UcpyC|1Vs3΅t44'/%xϘN.8/Nԋ B$3Y5TfDU1 l.Xzoy- b<2pQ#g2m>㬪>)%mӘ4{cM{)3ɘ6͏PX RmJ@_xLsL)rx[y\5s=ũeVA5Ҽ2<=Mip[5;mjw1S$Ni*%EhkPh%q;v%|E Sc_7MӘ4MiB{FH3K/Gc]A( 3݀r?N- {8bX-We^oR2W Ąɺ"5/V|>wjQڣ"EGqYsR QCܘ/Wq9T~g$MUr߷a`MEYu2RB&pqȤ'J2Z) U凼SÏ׎e41WdLgzjOs˟W֋k(g}]D^ #kmZ#-JyX0;ٖm\uNLUȐ[1+0[.V"'Н8c0՘*Άy-c %sc'מ,!Kp.iZwٿ{41WlL7!Zcy/^a{8sXWB;XQV㠘\hKH!C!x';f_.pEs`X%T\~6`MrOMhTFYŘ *[@6|yzs \e !}dg^ăw T,fӘ41Mߤx%N>7_a{ɨ I}0uRxWtjTzh#Bbljy%3;<ăr|: k MI-S!r׽:Ce*L5 *b<ɸVB;Z Lw6أ Ev.wpGLcӘ+> ?‰[=o[4M@5X H zYO>j;8-1]X2b[mǴ;8^FA5مpxox2IўL "C l=E~kQG~41i|bпԓ˜v_y[wwpŞW(+`YZ =iLc&oQ;c\9ƥ4!;|BC&=:3umxE0e7W+=/?8ҧ|Ә4^1MxCww=|z`eE0y ^ၧާ2Vh"C#6i>[aLZ, 2!+5Bʰ]J:reײe)z/>iLcG: ;\✳Wn=O7~ρs¨rJ+n)r:U5jSפwk1_nʐmEy-`/ݮ#SB۟1_T6iLc/Gz^ qy|?I)2V"2x3s3ffY!3P&iLcxŴB6#V]ƿw=*=Ue*V%RSg?d0S2\(cC*-C2(ucU)on~89ޙk;uD /j"hl XEa`RJUAh P Q@4!ixIiJN XT~gy9pFȹoi44pyÝ2)ʤdVBA8;vvʧ9}~da9쨛7+FMcZWZ!y)KiTp9Q8obPRjRs̼eU)^6`SZUŨurjw慍eVLdV:%O}޽]Ǟ]{>j/&XMRVQeQjfzBe_h((BҨ>Z1oS6M-k 9(٨¦ Oχ6G yv;z9VYzhq9ܘ4 FZUTN^W5Qx~O1Ǡ䯆lm[+9`/]r(F)YWTExp`S`+ɞ:vR*%=prTNִW|0z 6ڐی65FRJm<')mϴۜiߜʢ) Y$g$ҰNi2­n-豃\~31%Δ'N{_ꧩI1!vJ픴x<8z+UQ3QִT"SJUѾ{oDE9/USﮮݽ9\([MO7:=ޥ4a ^zi eYW4޷-FKCŞ9FA69dL1QU-vrjw9ʙƓMOt|pЗǽ,Wo͚;JLFMMVhyQFZU•j\VBȊ!*'+t5,f+kn!jeM;~]֙;y^+} 梦&ܶ|b?N]FuPqR<.=6<ƪMS*neLV%II˕kZx{ۉ:#vp=b{ㅕ]t&ƔoTWNEgR!& ׆MPhqJRV^pO22rV$%9krt0MO\n<~|} kl9GӃgVIQ{ AMP +FJM}+B3PCd8esTaӺ3o-c>W,-Mgφ줽 dצ QjPqH!3b |]+(#g*gDMOO7qٙ;-'{Og.]Yh;Oeu>b};|tݙHWsO6]>5QЯvm/_w M?T aևPG0^F1&ΆN٩;U3!C^/7igd۠ w6MSxk~{j`睋MӷLwV>ŏ:~ʎ3`͚QyP~˛xCp=Wf%tEXtdate:create2019-01-03T14:35:53+01:00|%tEXtdate:modify2019-01-03T14:35:38+01:00|ę]7tEXticc:copyrightCopyright 1999 Adobe Systems Incorporated1lm tEXticc:descriptionAdobe RGB (1998)!tEXticc:manufacturerAdobe RGB (1998)tEXticc:modelAdobe RGB (1998)tlIENDB`yubioath-desktop/images/standard.png000066400000000000000000001360001412677075700201440ustar00rootroot00000000000000PNG  IHDRpgAMA a cHRMz&u0`:pQ<bKGDtIME6?IDATx}w]Uwsν$$@(IФ (M*el3]Ggc (R^SH#n;97R~0+[k}]cklmv|wuf,ϷVC8yw3v-w؞{a]_)Kl[cŬןl=}~y}iYF\cL(\OKYH*tV|x{N>P)[˺}lm-ge+VjC߆#Bprk,<\2uď>У\sS?mM}ckl̓_[oYb}^we֮lőJJH RR"bI(YÆၯ7{:jS?mڢ-z;Pb\g~8cGZCk-R<J*$I4ϦxWto+ī: '7|ɗ70_>O"6JŒYjõ 8!eqn@Jg- )$Rjzo~>=6X7|3n^v~/ ٯFWW'~qo0oǝZ۷ylE2b8:h}0"R@Q {6? kB\t6nM_5z}˗΃P swޥ`iSTE@ Z?',s֘6^* EȜy^p҉)4>m%Yc'l'?o<<裘ݬiy?ꄘV78!m7@H)%1%Ui?'DfLj§FN{ixv}W^{~9^ ٭[nqPVq.#??}gK%#5ҐBY(iA܂:B?$gpRpBHy/~fQO5SMk,fw7&Mխ7uO/^F}(ZBZ)%ҰZ 񵹳Y zc}FgB@@),Mz+N>5߰8Nsv9#>"$50To[Bs ':]w0B FZg?_\#<,:'kSL;&_9tSn?Λ}M7|ig/ʭ$jkXHAPJ'4(孵kR:[kxrG.]lk߻5vj\woY'؉>6z챇F3Mw}.v7B@'I[c$J˝sБ -!YFt ݺR.sXcF5ZYV]zpo}+_7^~5vMw8^'&]}KFEq( sL(sJ)YQcV_JZBRZ#zdtϮP]<^\__ƿh$맗]מZsX`|ﻟxj5ZqC+iR҃i(@}/\'bCH4B(%tk^7 HChEQ4KCǜp`_ou˗\~Mrk,+b6Սy{1Gۍ7t鲕L'qB"mBxs>|J3{T݃xBXcB0 Dq]!3oUCz-k_olϮ@[Zd)>OcI*W.Zz5,QSJA* ˁCBy VRy ~)w:c2kE\  j݆ގ7 uoܹ`;`vxg8ֶ@* NO,˼HE@"rHjL$,HGhe-D ]qsz B h`H@)_;Giy(ꍆ\l[_S^:=7EK6`F[/ڰ7W ƍSaw_;wuGj#j(6 ,¾F`Ÿw+z"qV4mAQ?@{R)(jsj1E4~*IB,^k{qW~-Zcz GwXj]w7-^tZG-.&H%CZ 1RVszc |1A*|.^"ޑ4:IhfVBR'7YV k&MS[n^oc;yE⒯^Iާ@[Z| g$qy瞷ϯ~gY5@]RʟӟABZ\@ā8}*Ү\v edhim6!RJQݳt?IboÁuia5s7n'ܾO?T,^ ~+5c^ ^|S:m+7mђ{CQ@H&[UJ{ګ4:9f&Zfw""ܗRP5 y<9M[ߝ"/ CfJD0@IEFׯߥwGsf y^ٚ}6CcNsV[aw3~=qvGZo)̤,4In-PNHtQz[X5g%R@|TG$. @$H&ϽD%5'8̍MYF(Zlrg+Qh6p=w:̳ww鎻ƲgV`۽b77 'N« ;Ü/}?y]w|l`p`\RI<*PDK?9BAȲgJ:3dYD)ZѨ# ~aZl!叢 s:zcYokas"4Oqxc}^;;3goE @76dqlkժa\O1}68Q_xHTO@1upAB`@bXRhpLQG/t˙BNY?~NT*&|A$3f3Գn xNM7qя~v9>;cϮ˖a{022_}|=«{'JzC]΍Qdhzm+)!ࠈb4֜m!gȻHH_ &"EHI#cT*UI%hE1sGFq |˿~לvEO/zDZ}lOa33ٳs>z}}px$I8ԾNOq, _(,ufrHXiRѰD+d&XPL"m 4|RZ` h)Qk.ݍnT*U!I$6Z* c 4%':1=ƚo.<c~˱}l=g)A>=o?ǧiE>(.z40q-@V0Z3*.BEei{*` gi YήN!022ʘC=}%%* :;:QQ@i M)<⟦),.;rI>邫nwt':= ն֭]Ke}wSoϮ|v.Jkq0HH-4g8s(F_yֶ.!j8Nс4˰fjaD@ىnA=a fZ)7yPeva9 ~w5~ݸ7^9c kS 1uىu㼷\tϽ|`}_D?X(sI!ao DQ@ڕ80#Js`IF*-`2x)!u)~Co@XX8RORTR*6Zs7bP_\ZTs ,?}Q:{\?8؉>m ΝO~ .xfW~:ި(=0F82SڂR*BJNsM! !̗H=P]tgR$LEC^,#Q*;J9Zs֘!&'\q==Z{:2@xH@viB嘵< 5q^c?Zdw12Q`…pkn{쁳|Nܻvy7tåV,'BB0>N(=b+gQa%Gi sPk٘˜0#}dd}}}8j^RV{.P` 6;*[T@J"Q3@?  w=  7^{=v;sWxv3gʛ>;z} 5Ma괭p鯓i#=wO/Zxq[ra#3WF?ԀgZԶ_yjj$AƵ%buq=/޽w 'If'ȳ QC YZݚ3V֘gkG{& SJݱ^tr]圻MBvV;:`鱙Ǐ[j\;pq4OB`xtd'-=qОn@Y<0vqq}_nϯYfM8gs>e8mRtv}SS:LϾlJRU?Y."l*f%%R FZj5$U~kͿ3qT.[% ٌ0y5HQrϼfIIRI+Z$ZB(n2֎ZAJ!w792cj<ϑv8k+}FFq쥙T[;.Isvy! #g'>$c^K\嚟3& fGޕutt\k.juh֗H!pk{QTn::NDRlwo;cg[QʹUq+\4' !Go5ZHPo4zFkj}V~=qоa{} u;]= m=z|p-~.Y̾Jk$ItJko(%(KjKO0]Ƚ;5ÇPDJfY{ʫ:Vi8뒤z34Z϶+;Xg}q,7m_ͲY+#ĺuk׶6u!b6ow7ц0yY7\E#T;:0pK=3? …/1 awk>m?§^oԫQA ^^GΤFk=Z-A`) ɂbJ:x_p-LC>eBQyΜհqTL9 n6SyZm?R yUmI;VŴq24Om% h 6ܹRz/wN[¯yo]oȽcmV\/Nxb'?0{{'?#=zQ٨(b4ܢd.*QS6Zw X;n;͟ɓ&aΜ9=}߽^׻a#Y砩`!d>JdK> (݃'cqQΠ@Q Yk'QE@)T~?2OK>ĜwQ&RJW+hZ+l)(@zADƤg/_sʎN|ga+~P-x9ͤ0Gt;˫ŋJ.IL8BTAVgvaA`z3֬Sﴢ.RM(FC)햼PKgnL&0HG|(| oSf/]Z{7~6w^6?؉Gz}'c?kwe>&+ŕ^f;5>v{[kO=$уuzؖR0,MF9s̋LrJ-UXaɆ_(t؋]l.X ;o.Nc/X?L9>YVD `sS(p\"Y2!yS2zD:`~#DHS ֮» =XE1nf\ë{DU?}$vN;wxlWi+QH }Cka"qǰ'ۦ'# gAX;{s Fa:Z乧R0}{/mj6G{׮rgX {ΛM{C< ~I2ѬYIub^sd@˙BY+%M: <>`<Zm'zv'޿{g^?^nex~/ZG)IRij/ϧL$NOfky% .1Cؿ]<'S"eǪ8 Z\)7ҰhyMYMj$PB4}w88F/>uSO Dnzt۱l|EJuZRS$"*ov 0͆&7άC`Б=&IfJjA+V.k ek7_on,зU1}TtuuaÏoٵuB$'- %E)rEԻe%WAH"ߟ&mYemd)3?T0|,Q+Qklി^`! . bov Zkhf4MgVxځ.{?99眃(Ͱw>"KSL1=2sB_ZUViM A;v}a3#k ܔqaGB gJ)fiRkZ~MvA[oM}x>Xo '?==x.{̗vp M"J$BJ䤸Sd yF+ ,6gҍsz/(LUD&u'=`D-(FnMHy,$IRkvK]=jl )12:iSvl] 0aDXC>N=?֚Uʎ*dWBބf4Z4C:<]<˭cMh6\ag?_>I7c@ם݁={8࠮|C=#_"O=_VA7^ߖK/Ji?#Np[bJy1Yt9#3j6Ԛ%{oNل4od!X #lt-EvT)CJDѠYn9>jThZkc8STڳ #Nc?`7[sE 7'"d "l\{:Tɶ *0C@PZ Ut)NRR}ĞB]&qҝ$Zkq=񥏥ͅ_;zRՀbVZ?ٺ;γ_-~7>n] Mή"xs9bsbpq/PJQ~J8^^Yיf!{bFٔ{Q8 " Z#=H?S5aXt5Iv&$8<*D54qBKkZEӅkT`| ;6! =e5u-chW.saƌx9zG:044U$4/!$fXq:+K,s`zRzAQ.cJ~ QoGf db1(P{ 2|M E^e`H:g d+he̽(R 翳\!4P".Ga# =BеGm&Y͕6rߌYGScmN`a)S&{d钷kIB-dd[]NYE2:+)Jx>kQ|dޏQR@bs)p4 ,@AN+>lSD ,TS<(w*;̃A4BX篣oS_g ωk}KN^w_ LG?][)O7H :;GGn MV= RyXpwuWY}JTDd%L, ,|SvO;9R~J(GFEcHOT\vO1mRL,!@HyS$[mBIl3O=PGrM M հ$a-i)46meけsd7ȒJ#>K ^QYj'RQK7z6[jUzUǩ>;z4UD҇^K(N+KFFYhx*Mp^-Na탍9%d2 L6} Q,+MVȲ<8uRۏQNGI '7$]J eND0֐^^800!J'b¸qK^B#҉85O?WxBIdI$&/R"IJ9%h@KwPXbТ{3ЄR|mN)UIR6' pAk&^vNHB@k4Ёui0AgYegir044$Y-%:c m2u*׏Ya>jY"~r?YG N[*4B?ۧO+#4Ȼ&I$ J8C%m. e k}'X ;A:v8v7sx3֋H|+@OwE{~K @.\*6 8Pe64)((ϐ 6CB{j/z?>n%ZeY+eY@4o?rH+qN?,0MQ.] Rc 4"diZF%`aU JeF7>ϲ(!,H3 ,-MA+VIx,mx-/YI%zo_{x1{ANJr"pZi_IG.ESVY" !,ch;9~SB@ELcYVڲc2/˗Ѭcʸ8 \_|zgORJ>N@}ݜ@- ns8^}kS B@I!Ew122 * 䬍1H[ge\kX^nL>'SǺ2ʟ[ɸ$ں<ۀ0k Ӎj$FjADz$zϜ1SJ88F$$>7Ҕ~)PW~ֺ. >Yf.|?y{Y-OIB:iI cA$2 ky1GFF5.Q:YZi`{ydm!\D/G{1F*Yh hCQ'[*Y|uWc2|Nǻv>ʩ>.ZoZm8JIe>/3|iBsa֊,+!;;:`%˰~uuw3h1r s4-(UUT*Uq{Cآږ;RN8& /f$=0c@àHmJ@B@H[<-\e&%cGoCKP&k ٛߌM^0B>5aszCHRiKx.=:XΊߍ˰2ls1}i'?l&:fJ%[D Dɂ9sp;@+JJc GF0<<diJ Zֵ-g!x!܆ j!I$T_<"Bԁ4#UQrpX.T,5կ+,cJ_Xk}_T{^=)չƅ %VJ\E0y2jI)Ȕ =ru@XR100HM[w5|8>/==Fqwg^? =Q \t bRN_2H ==Z^o=î)s]S%2>{b&3ob` }#)GR4Z6,eh4hCdI#ϺwOTГ}|WP͟S[lrX(,L14эis &ʲ?{ 7c d =]5 22dsFER4ӣTk#C(Λ9Ǟx3j盥f10TJY@gf5 a&sh D&cޮ<ݶw+(đM"mC+,S,_WSˆȒA N ;fO{lNUtjhŽY WjB]gv}bh4ǣK{z:r92twu(RpX#©ɵuߓN灁X&1s) γC X~RJҬ ׳JIc}L 6 .oA]v>U-OLecl9-}r8!0<24f%bsMp_Y,ϻ؂XсuQGRm3B튓C{\ ֮[ucxx8Ԟ!Н}NCmƨ& B/?403H̚։M¾LĔ4r E`ԩ' Cyw K&E)+=Vu"9Ry@9Oή.[k֮CeIܩ8Y8`dj7s(+"|@ $. H;(uaTh6ΎNvDV|;u=avĂ{׽>ްny=%}}R+5ئ$<^)(&H͐"mMߗ@o_6l%W$3crrNQIVϳ=-n RIl5w55fz.8 P(TkvJІ,y,1;Hby8Xf\I2rPN@ǥ>̀/iag{+R(큐V4M;4-n9w{' uZ^cWo}8q‚ |[ X٘W0lv*;)l2H;|L1*J"#tvv9}}}g>l3: XYU](E)5.'@k(',@%VxLTŲ5Naysˁ` olBZh{B^ x(#9(Mj3jpAAS,veLyvm@oG*Q!cj5 =TV#X8FܗQLBC$/\?rl7c&"qأodeB$I**I ͏(o|znH6;_@)̭:Qlhz, C)ce>%LA90ue>xW(ka' g/PmE ~~/X>/CwwCnRE}T&ĩƿ3vغ{ ? 7_"E_iOCv}¶[u`ʸ=3Ѭ$⡉*r:kܵ`wcv>+I[Vc {sp u5m/#$ @__FGGc̱;)*un`O޾? c+pıGcs`=>]%9RTmLaiSZmEdgNyX"IFސA5V8툭sNibqm[|"=Ncbݟn)$}f ?MH5&!Y3$\1qOtM{HϪ 1Axxz=::;0::V JzNL(ι98w JQo4022~s:&Lz{.s?XzrT;:=L[ Nmr7:@*gYS\X!SDkjZ ި $k#FaT}%y2ϩ_ZrZ]Lah8):'kisdr h9 (vaB m~7Yfq (ݧ u lLAB ^~80Gk:+n# ιtpѨ@=|k,Пg[{{?_pxCm]SuUq\ij#r%A15 [I% ,\Wbo&?DLkJ%Lް fNKJ6?3ჰ&㓜/ŁQB$ypՊV*xp%Y50S8pvȓ[*)d$?et= (ה#bAiywm`!oБ `\ib@kZ<ܿ8c)h0h4Xo~㼷 S&M?#Zl9 ,pmtAąF/\R)5='$a08`E^3>8r8:k>p\̛UJ7:뤷.ް?(hkq}|F(&t'NТAd#J\L6*Jb+mDJ1<'=}dj5F3]IC/WYTx%8f]Y4HaxxRHD:"'O_rsB;aѬ,Yc^Zx/ϯ;^]j'[y:T‡#лP_^g> 4PROX=!т/:ȁ?N=$ Xbfat8dMaf>m&\Peik j6g9j4W8h)}}R-WN<ڈ\2mt s]A!c_QCGLeJBSvXhl .fyD(l͙xsJ)~0F?j:RaWi/V*m3wΝ#$zzW1DwA[Mf?g׬`nJZ2Ӌ&`"||ZA|(A\X+7."[&zb̞PNP=E MWgI9K_O@ . ҉]AnQi֚s@nr Nh;[@ϡؼ@`q&@tXc KZ }R?2$g^s6s~@,!.Po4D_d)N8h,Y N9e׹>#?\߷BHTR498QDoVaءș> ds# egaqU~ `~IrNvڶfoyZ:1b\n;|Kb"hD&]2 $fND$#ݒKxaR6Zdkνn$(Tv-N0m|@))bM{5#'e nv@耔/pCe9(21jYo\x& oZBe:8YǾesG#%h2 ;}1g/? O*ItN*pq7V 8|(|[QJR@ 2(!ZnTbF—KpW|[sT8~N➇?3k꨷ :+ O'm1\loT۷$=%'ҡb)BJFQp/4O="v_oRvlgS;{htg!Oiz@< ̳9m@ю9Rr㕉ps>qYxhz˫1ss\ittMZsv(o d@ڭTCYW6*RHO1XEsi:"l=ZB s-Q>}і )qϣCa@* }qPjc$]ͮk(+`1z'&/^8?%M$RU̲Ydnr"NAs؅S I5yt;D)JmR7Nh5_8/B〓7cGYFyfiQȘγtXiZFBH% Zag̾ ㆁ0[qB1N]k@OƄwR.b֗﵏6rX?b`Р"Z|mg[X(+9!n;)6،HRE,H%v t\3ZLDM:Oo&U<)~1KOcWr?PBcg#>Q˔WmKz;n @И61ƪVE 9Xc&boL _UB Y{Z5(7-):O=dH~+ѽ`Uo(:6H4F È 7@e.GQ{63t+\cV. INqpa0[&70Y-K'^6Qi.z$'ЯzSn߽@0Z+=8R4'0S\,?ݤiJzKGiMpZiT+Uj5lذYa.ZLQsι,o@8CŃ?r}S?kvhS1 sgFUq2@:6S_Bp>|mYL !8!PTJNHk)AiJU+C`J8`=&Cz;{N ] _<Ϧ15r,[Wn! I) K(>dݔiෳSٖG3AVÆt+I7'c\Y׵hTg˝XBdp~zZY_w?aو\FbR%a&g5cjsRX9!YZ%uuw(Oac )qxPx'ZӠXkNq|{ vs& M #F%aϕ3 J][ҵ5%pZRxPe̱mu$:׻!G%}}@Rjb``л2BvtGtoZ}z1jmс~!!3L0[Mj ̲,Uf5yh,3TS6G$%aD,-V諳',zݛ#j:%l6 ."Q?lζŵWSqy3,mLjK V`V[~%YhI ,#HPa0@D(!F+hm[RѡJ?4K=Y^*L@VOWCY3'*r` /:"4Gm݃&:84xYoZGXOo H5A4K KtHGi8pY0xP dMs:],JǢ7A|1Ȱhe9vDx \TYD +6=Q* <"W4uu\:d]Sk x Z{H$ċS?Yy4Sy!˳R{oNxtg)[YєXqVeRO B,) zkr` sQW[ϘJByʣƶ]Ǖ~CoW߽*Ct/r @*@ NNE $lzօ,O l='+jF} r` RH溫9x4tWLDj( &:#O[c `?Sۄ[чǖ2QI ExA @\H)Y˧ۅ(z^X\0 oC)l"ϹzWvNو k5X2w"x|,?QHHKc8Sc&]aNcVV^XQMkliBmޙ uZk9f!=FYa`ppS -"u?=oPsN*G;5`gy[o Dŗs$Iv|^җ9*Al,WZMEg]]VwM:>WEf//:qÜ1~6\ !(iR%I]L3jotEB[^i1ike)pT{a_lS%5IDJ8suucUQ[÷-!m ZywqO Ӆ/OA(#>۞jIBlZJM6s jS1e;+s&=)U;40Y4`rtkMRX)%FL322FvmM6YucOsc)$m׮_wI+O?/",t&Z0 (z/gκޒٗk`gi5`#@6 vKfȇ,&v){Dɲ 4'! P(#]+֌B@iI t%>MHˀ[`2WX)Ԁo&hgsj\Y 'd [0 G!h6~C/j&֥{YNыlZ{l)O`{qVJC<6uͱ'C."ofy80TCo&E80t5a(ձLԺ x{Y`RwLq ֬_ͬO>'Dq%YJ!+zr`LAD̖溟%jO.dc$XRQRIvtI,Шl5},h%Q(7zE97ǟ (% Aۮrr~]_q\yjdNZIPI7]8WvL`imi2LF "~COa 4ksT 4/_sϻ6K ~c>j'Ucu-@LĠ s>:IXͤf Vigs%{QNܫ&%%s(ܓo,ҴEFO{0+ jsh4X7KW< N>t[h-/9}(7>!,}SkbbT;:HEi9Λs N%]NG{qja``I(ꬰ]WpuWW׿Y⡇rƍkSM<W^y%^ouyym~<#[k(S %I@`QD{xj%)h{]̼iޚMRyT{wpISB oq"\lfwES;!bAgX/#pLtwư ,0.T򐦂|g>U+ayoQ[h*mвR*m]1Д-EZMz4j:+&I^SN9i1n84M̘1cfyǯ}oHfXdwttBjW&tVhqI5g=EH}$Il1q +y}d]-j /Q']0 PI%8)퉘h4¸Dmo9zYq:e{Oϥɶ9x=~%~`q !|y7b6]eN-a.0ǯ\idtZ]S\pj?-UF֝}9陳f'OXxm'upbu-,(@x\ oHqkM<ː9&^s㤃f=`DZycO~+O 174pýkp~DĈ؏K%,@ 6zp:g;Xg9>Oҙf".2;bѢE:^YzGvxꙅ;:04JeRɲ A'6`%?v,!{ @8QA.hb (/)̞yM[nB]gσ,1e##&&SIYdfglyZ;`{Trި#s>{Z,[ B93::=cSŋZ%vatOӒJJRivvt!I*ȳ Z斳 & ,TaEq6P>!zܺ;LR1w6ԏ?4iM괲O8OZ=ς'+7N*Rj/BCPJ[G,G>Z_(% ::{14Eu]+IU`RʋP8hbcfoci\54Ro^Q=}0F!#׻&. c n:&#fd<-,L1?+8fmZ~A)?m9 )F )8 TGkM`I ٛyu~̘}Bg; jduވZhpM/jm`\yPBA+=X4Bjy8QV$q N! KI2tb+lA]& AaAQ(m6VxE-F:qp[ra6_yV&_ &ӀЦF(8 ZXz,?/^E%\\jw.ZC+FxC($NK'sZo[IڵxbRJUT<ϱ%6Zy4P ~ߟ(:fyRҔz%ő0A0-A2Z}Z48ڔJɽyPe"M oY|i0'CW&ϽCN9yRV,qlM!0Wo`őhH!h6188N@e-u=8笵;g? )$ 6ۿ)0| MS!ܢlw~4hcoYk+,iT*ZӕZPa t,T) 9p R2@ۨsq֜)悕3eTـ[K@amŚo,ȿ)N0o9MP3}U{Q QoI8Y$J鸾 toDu4R xЀ, #,|l閲hViZPqikȭҽ%:o_^F 8"!D! C(ƊuBvda3*;8U,8IGː6ldRLYzuR!Q4/̍%9g6֝]'h4mbmV7n3`ttTߋ-mmv5k^:暫٘ͬǟzZQS՜ Ǒf8X͏#sՎtP?<2':›]˩`l]H/]KJQ $ e)5 vTJJXQlG%(^ 3YߟeBy;Ro4?0crǡ Q=9skݿ+%-ZB4Wn,qV6}a"4Џ:pץYli[M—?Hm#ιɬ^li#"~9Rpk:IDATC@}e6BJyg1gtFpaY%@*<(YG٬d-,ؚ9,]]}A]s#3i) RZ>ZWEqlUu]b VI!}6mUes|L?uvy=׬YV:V-:+1H:V] dĆॻOZi)a'z<7f3?^ىR!}tޜ5 :>{)ZEEjN!#A5Rt% nΧ8kY8-'Ȉ,c-?ZkyCaDxqjf+<m(( ڏ87kF;^߲6lkp)Tĉ7meKݏ8L: i;N_zZiDʟ.Dv ;Κ@bѻ ^A ڏmG+}1o 8iت#yadtp'[-q-} +̂393yF(0Gvʲ̟$uMɓ_ꌱ5Yr$L$rL\|$d!022 zZAx#K [Ds߶֞+77 C+mnAJE^ԷW-/u̡ &`IW fV,$FE +xϙ✓wFgg DaX~kD3+=+ ̛O3vbJVK40Xr i?ν`|\-Ƶwӗ v]x ֕#hJumpyelдuUh!#[,ce3#Np]Xv̑Jc`pCÞo.৤ 8g78>mFK:{և>!L6 qέ\rľчglkL4e I@$,4Gp.;m׍q>m.]A=GtlAK䃷{ΞS;P502Xpxx=uj4F' k£>e{@am6Yy|}#*䴄c@\*t4<{ʗ*Q3?4FSBz|))] ~s[kj^]I*V V+q[e@y.'LO8q!μd`sw3O~gukeٱ楤BW59LBI}3bv%]SZƥϟšVɫa\UWosO=1qTpw ~x:ȲCCĈJ,hCyTM`y/sz2fն.iAfr%0ZgV\.HY# gIŒ8@y$IhJJ?ZiRHjuE;kוּՑ~8ZorT֗bfguaÆM}KzIo{v9 'L¥y:GPlzo"XNd}/!Rҵa eO減#XRy Il6@V z++Z>l5OhMkʔ)Xns62%IV9}`;fy4 &r"$:+3Ȳg.|\ںXnhpe`|LR|몧n0%$vg7o{v#fF0Vk5:;}j 8U2w%eV)Sg;DtwVLi?5ق1):+B n1|prޖj:C)R(A6:)%&<_ZglDZkgIfr{kZJk1a„M}[O?0{62m:|yre]a,EmTZ#6 U3sOz*!H]B"ՖRw)\y22+pʑǺ.Fxl {G6 =h:; Yz7EtR(Xq.x֜ OInkpQp6ZPI>mF|OHxRLXfxM{޾ޢ'#NNˮ܇@u~Y_R޴Q"4N.]Yhl1~Չ_1o.=;>lTr H?h*y.8%UԇnC֩?hrc(ik-vٍ;1 FHL 1k5. i݋I))ư " : *?m=V̢/sHZ<NRhZ/+-ZĮ7^;󦾵?_J\I0aĭxO 뜋 $J`L ,̙5{6C)Qx`pkˇC o ;&>wJ)Fj~tb|7;bN]Cy$_7@Ä]==TXPmAO\6(_gU?X]'ҌoW Yd,lNq"׋70)+q!s@G3w !>>|=>~9̙3-FQZW9b>,Z #ȲgOIt$AokvFʧ8!Uh4 ~/bP AC58Yxw Uo)V+5=Vf.sw^s}sPFG GPk `##p&z dK=nţ s8!Yi&s'TztQAZI2oTgi֚~SR`tt}}sSXaWx9zՓZﱎyMBw?" c[-Ago'vn&LO:I\%K|lU,J X6Sg'$ / P@loW>߸`~c1u\ O;z6* JD{_c~(%p7ێCpG T$IuiYcm:k!NíxTó!)h\{)U $=|YCقy \A@?Kz(C97䜽{rp>JVOAoqgZ$Is65;;ޱ뱧sO*OJQLB9:c.>hb^n#=\ǜs e.y8d!o[ύn_q,][3NXNBFЪ5?C=jή0YVvPoKV72b+>ˡJJ-Xe֟"LэgEo_/jzPCKϲ \ ZHӗvnV̜9BEޟD?1ydL:::y豇?9RyK6DR#ֈW2 9g>vu`r):r\'a@;rxaYa+R ]wnj9sW|Lϔp)ŗ/:SQV4zZ4M:)Dc%(8z,ȓ/&.?~ Q!sfJqcttC#[gUp6PVGz%9#CO? x h;ѝs8lщ{Ü}7~lLv?zf7Ōi%ƨ:NP)f7.$]돚ngLX%'գ'O;W!y>ƹx;L)7wQ<b T(gz]T^?bkCt9̮:dtfJ@|ϛ?n#Sa,Yq_,'$x'ck'R˳<"U5::Tj '].MoS.>u݆kZ;3 GJ,Ťo>qGqtuPr\iOZUO(6!ƻN5q|=]x{ۀ/1<8x90sF$BN/R 9.f ˧7 H3VnXp}h@gG')&]zs8A,RD㌭Ȳ4+mc8_L6Q ?+@p1Z?;F8 GRگ*)F>w7ނ rc4[p‘'੅ LߺP~\d)Ziw]oG.|q^ " ^/Z6K.{ 7<.a?y8`4U[W$a\gfGӕ+➧.R`mo_ h-ucqx;a [e|Յ΀vk'^DvRJT+UqQP(f chhpM`,ȷtttv.Y3z]B~_D#AfHInϘ&wa wmV)/746 y:`COEg*a)-gV?߽qw72 wŗ=%F&V#xCr~9{!F_֏/ݱ !8N?ifoQE+ZSaPS<< ~JRloƒ5v.V R TJ&'U݊K/Kv[>1BQWxn̽5.Mfb,X)=lt\Ƒfj5CT.)#4$q^,r]p FFF^8KVf#-H` YV:3'PXۖ኿gt+r ߌ^51U7MŇΜ)sv?Tq}1i&8`N|]?RBJ WɕEճ3gL Erهߵ/lk`(VdFKTBAXd1IAcȱ而j2QmHσ#@E~OLr2}"b',kRpv9ϡ6`\aզe;Ou&dTZ;Zoܿuc|8ϧ5Eat{_~7}k~hC8ᰉعp3&k/p  +]ݼ8>|kRgO/ FBr0Xq`ш : l,.4ADYn4 ?pU+NZJ}Ӑ+mި۔mJ Vǐ)QY+k9f x;طn~΁qZkTUIiqxR <̙ځ?8ӧB@p`:s)~` TV2O7:1R_b >޹ +7p;g`ҸMXFCC=mӝ]zy|*nw5\{䩭C(Qo`Yjج4ðMN~,\2!8TR*tN3Y= # 9:媧y<˺1KE |_K+U񺾙èGAkl `g`A6},xg~A0ӎϞ8nK`s"\51iL=9czKe,{D^8LoY{}YS{p_`CYǿH+v!P"c !"ǧ3y,&!z0G}īvP4t 7Giԏ` PZ#,81zlXaVkg/.{%VaAa`ݻd=Zi=83_G gǂeXv88d1©GM%;h_F>i|+A%!JTݟkfkp.,@;RZgYٯ9kh!\%6}HC0 \?neqD4Y(/W=r ^FׇF' 0DZ$QHׇ8&ϬKv8/p=jfUkt 3X7/޾-8)ݳ1c1B`p؝@?x|#ؼU7Og he]aV900bwW=DjD= lae_3h4DGúd[vZR122v 2ڦ%6_7Ǝm;EB 3/p+/_Gp93c[}p1[O-n[g !m%@)],J`~..\1Y*Z1H8gc/"6ڮN*Slts"V!s/g8c| 4,B@7F"ދQ/<`l6&5T,3ӆ t Q Èb#fp w.Vc01O*49W=|',vd NpYGLv}I%llpM^AG0Q&ls(TV\]aDD4DJqqzDt5"l*^r9m#˕R_\ U g]0J&6iDpᡫ¡cf1lBk 0MaA\K1ȚiUc5,Z=J p֩gq#f;Í9zikb8~ ~-vJMd@s`c) T+J#J/zjvˉR css.,iZk5Y̷_ebw)*؊饣|O6[~@1DIKFA?6; ȄV+1=DQw `M6yMkЛ8 :9i9m$۱ްZqƐ`>w&N8b2 ;z~ު>srϧWy|ĥE.8)4rȨ"_i ]'Rc;1Uؑ7r.+0x#syˣ8+%^bFjCO?/nXމhc\C:h#jcyv3dJacf#pɧڈ10j߿}v3YN9b>q k.HD?ߌXa'@h(瑞2N!șGH)]0RO1H=JMڑ`!fO1Əhc/$*K@@719l5m䫗xH}czzكËz:Jp_% Z)0nɷXQz$c<̜֛i@47ʯ/ upᶯDxy*>9۫;Eނ׬yEV?YA`d"<$E6c-sOm H ی1qƟRMKT .[ 0o[1j1柔71jR E9/A7F#FWBfLPUc<5|=vLk,wCi,\{|:` sm ԚsgEn{}|q3/Igs963l5\^H3!BM{:)wV>*;X[{yՕNDI $FPZvcDf'@@D"wa p;AJ}\6JZ0 j%btuql6m\%ZKj 0:1#,C6|b}m2ش^lCFaF_.}l|;G.Rm[ 򔁷pO跩B V ZVUODp~ʘç8y!VI[S0n8GPQES8C~f<Nj4LDiӐD&saj r$*c `$` OmeX&26(N{> W yK~e='ic,;YC/8E#_uwڰE[ŭKm$gYjm>n ό1Aeo^ h^r\r g/ ۜucwH# )n%~sB>0cUV5j 0 -﷭3)w&;oAߤ*>Rذi3a 8>| |vB,^3 Ϸ9*kv7KI0R`zTb_κ1DtAGGJ)Ø%%lBFu]+=󼙌D+]g̯HgjkKOOawwνЌ =_c) D"Q:N֤sN.&Vw]ɘ{1B,jl`.:uTn` q~bFkK<祖rIɩ 2 }|30|h"/Tm8onj <(:3Y}m5OrM|X,\'џ⌿FGecWtFI a"ZmIXC;"*D %T۷k6N\$ @E9 (o'"u)%v3V+zFAxU_I9E)6 NI!x}nM$$Ǎ臨37/3 8Ynu5uX{|CYc i"~U c :PK "^ l!c !}b[dE &" qxe6Qg@?شJ<>jݶ9hCzljWGDrUlRM˾zs;Dm"BlR%Rdj)==um– =k:^!53q]0{ϡ|.8w~ʥx)KII jэo rL xU "caub6f'ĉM,$M68TCxH /li ύ8愰2YpՍj!n_\xKr(0%^k)kH3`L !ih`.D ֥ƀai™D$ƴx<$UJH!QV9GVC8DG8] pQ<+`괩h5Z` F)+ΙBGdDڍ{PS)H%.yg<;ah5?& sx{~cT:*LB {=mv[tRjLa,nI(8:CJd[1ZkoD=Bf*Z+CKCь1ry[NFeE#آwcCiUKQ:4 Lk20kk&{8J6? `:)$FF9bR*Ji: @z>0Daa?)2VY6vGZP ̓Ks BD|?h@$ ~%k`(A.,OSEх-9R,ʀm2Ť?xGPAum|L!AY +wcXAF sγ[a> j"\vvveӭ?J@/yWwZ8ӄ.``BbڊyOYp2Pk6\V\{6h):S :@Z:qr,} HJCTK%rQ bY-{bh}1f҉ |?nE0aK|Dt#!1ӈ K u5A lk;r>^.Z^)z{zThX2ɏéz 4+jH!`$,CJx/RnH%tEXtdate:create2018-06-21T12:56:21+02:00?%tEXtdate:modify2018-06-21T12:54:16+02:00snIENDB`yubioath-desktop/images/standard@2x.png000066400000000000000000005153251412677075700205310ustar00rootroot00000000000000PNG  IHDR+ UgAMA a cHRMz&u0`:pQ<bKGDtIME6?IDATxw,U6TU{/9GI,i0:9eLsrN"*rs:twUcq>yxNwWWk7tСC76^r lb\rUx+4`#ԃ [8kׯ][I!zGLTc7z+{E~ ~_^Ě~:ta#}wyp'qq·?h m|EA!"H!]ąWNN1_^W;'^'?2\/_]AСC;8\vx>{ǿ< Y0镯 w5)%uG Uov75o=wꔥKͮ=9zfMA5:tС׽gpŗoZ{?|hEZ13CmRH,P%@YR@ 5w`Q?=;(E]8[b-~M!tz:a5m<%˗h z=gwZk!!Dk-sޣWZSg7oO_~{ XS.:{M_tz:!qŗcZks6c w?C\r!EcЮ<B?+%!R 1( !itkR;{Owf;lCτ\OCxǫ_ !Y{m|>m{~sx]W(BQPFb^) ޣR (R ޹\kbʥFDI֦P*)z+Т_8} 9^l&w8CrСC"կVO `M}h]b3ZdYRRBH )D^J)җ+Ĉ\ĝG!DJIhA~@aڶSaRa}{ G!@ )%Aviֶȧ{oK7_pEW z:q܇>׽_m?KQs>KTed~J*fHݸ JJeI#v%lEheZk'y*!uιL!@@$S.{zֶ{]{ݏ=&x%/~+1wС_'|ct|{ל .zSW|Jԙ뢀 ֶm !$La|$ʢ"/xk*G;B>p!";! lHc ^i V.]􊗼7K}38gxM_ޡC&nF|h!6w rfW_w,_r#zqQXk3 Lam,w! F@K6<1,KC H(H.Xi. `à )~tѣ'{k?t ޡCN;4@ɤIBi<<ڕ"z4i/Yz]k T|vޡC4Q)p0{GWwn&'|gp%鷤ޡC+,\8u$|q쿼k+yU+֒J@Jm'cM!DžR@D>!pkc`] $cheiw#^JfRB>׫yhE6Ixd4{~ޡݹ> |9ߚ'<ޡC"N=,hwjE^w }`P JTeIg C1N8^uGwEYp%ov@Eɀ, HE[k"iȥ.Fҩdc۽]xv~֛n>N)gߢ'4ޡCN/[+$}aĉ?QRR!F!Fai[eiXBx|s!jRJJYIqrc^EBe)inAk-D<R:%y f'ں{zwofu}^q~ z:71œq0^Ooޛn.Ͳ4Io׎Tl5!D6>@ ?8爅B˜eQp#x"H9,IfkmskYU@[ ,#;Y {{f0[?{ܶƛ؏|S¥^߶'$ޡC\yyr/z 70=ʫ-zeK&#?CPdJ]cY"_O~?DrpJAH G<Z+!/wy/J(McVJ, mk!. $,hE =?)0GpגeKxfnnoqz5=:t/_ QG]xǏ>oyRFS>yY(K*>@HEAnJ2<%LdFC+ k[hm`%BpEQ(L&3s$W5e mTyY*' GMB RRoچ-hVp{k]Bkgp4kf0wq[I헾%'\o ]AСCc6ooXS~7||ZgaLAoZ#2MbWҀ,֚ 1M*;<-ӟu1DYШ^),|fpL3J߳!4٬k!P9ɮs׽#:Q=FuW=ŧ-lu?uK_o]AСCƣ>{}ak_OO?z]wmEBJb:m&-Zkr]:4MK]7)޶-Rz{]whR*#G*H{k@N-mk % ֣{N5mKu3a>]: +EV GX̔J'3+3ws>z$wTZH1DtQyfцfzu[@H Z(M]eQqBc9! u!FSBp4M"zhn"ggsz!M|=pcv0[ ўy[>sS65V]+:tx"ƈJV[O;mxg{hc` ŗ !dPDDM22QJOss1=x E)EUm[ayXbZE4CB} /@4P~!fɜ\GYV̓)(ίf)K90h8#xpMFvO/OZ z꫱^ysw?q7vGDEY*r'Թ&›auF23~}[o=l]hTU.nOʮnΓGz3W(;1GDYٶeU* GC7']۴c9Zœx&3QڦE=UR&?wLv2Iw$l~B},#'= fzvvv>{'on^OCk[㭯{^}7|ӻ{-,)EŚlX#fH-o(h45Ĉ|F@ke˖S:gN:1NJZ m4;rnt xsܪ@DYGp֣i*eD>YF#T:b|r(F@Qh#`Ţ% %<~1/|škvBסw #Ów->oug|ꫯz}=~iµyDm*֬#م- `6E)%fm )d"OopWXl0 I()ե'8f"Xc:3!q؋b+Yr hM7͏p8GiN*%Q%"〛G>< ;{k@W;tw7vۭƛxکs 1biWO~@9ؤ]y/|2T܃;!8M$#ۓ}$KY5 vuuayMw=8`M*{5:tᯁǟSGa {W{9_֛v S1Ol$"QZR5m"\+C) .WB |ffR[!Os`7Cc^p"xi" !غa1!HM^%DDFCi"PDC@]79)/mKQXt7w{ůsf};Y-GGСb8tS?'m$\p;|寯|C<\)Lgrr}2 r]܉SgG5\ٶҖBU^$`I;i2M:dZӶ#d Cʘؓ^}EiѶ-(uz8`tp K!F%]hmJ( DL wnmӲ\xf|wڶł u7_6G?˯_q=>`5}zLқm}.eG.ZhQ%ig UaE($uHlĒ:M" Es%#u$֕q!x"[Y!rʝ:x<ԍWi kuMlzZ"fps/ dS}`43;Q+_ʛxމs8qnޡC=b8'`T_W_wկ1˵14*-FYhiT!!;I=ۖZ$,a@Jɉ DuPw!ଥu@z^6h! $9ݳؙN @k>1m~C4V\A/KTx7>vSk{T>#ږW6cļyBuMkY&k3k-YJ"kٕ."+GQDJ+Kԣ}tCUHm0Gpl%[5\D)ʲD:0D"ц&RB) k[[TOR5)%FuW uwJ*4ut*Re䍷B:ßxl}Mގ Ϻu7 zǺ뮋 9{y~/C^wS\AQHAálp%$uQ̛7+WD]'!6.;y"ih8kRI[MqH~FF1^/2gnq'KI]dt#h4>$[k҆mmevu4jK;i1k P،-Zs^hKW,qR)o\pٙ?{Mj 5:t#nlՖ?cu=_xo6eYrV7uZiX砵&1`}mEI&{#qTTXX=$u !=h4!B '=zQh[wkm6 w*$&&' y|ՓntHh_m-ш;M,ʢ@k-ںAߣIK^* gi`"ƶia xvJLm)uݠ)uu֋|A}o {>#mGסwq#5{ ^wOs% eYR-{MNp@2BЈ i;Znrֶ3g*.NJid4QԆ ei̕ZA@ D4ҫkC.Bpl9q-=V '/iG"QVDe=!HSϤ9$h82!ě(Fr =3YeUm--[$n#bW}v{w nVSFW;t]wgbS&u:txL#ƈ =}W׾W{݆"ǣILOPwɎCL kiM1j\ %B4!YveYwN>[kIXPɩ9XrKk']7s:g`'Bc-r.H .TW4ZG6)G@m!D 7 ,PHֵmtlOu zܲ(0˓ϙ;M]l۴-X__}Axi놛np⅋q-cv]ӷc]ޡC,-wY]xv}θKv;>xW#$Rl"8e tM.EAmSóԝK)Q%%˂FU8S֋@ g1Ц@[JD#nA.F9/J*}8:4ڶuPR\"|ZJZ5)XƎvFVUZ^6A<,RavfeY@ps5%QVjku?~pW\v}կ\b9y[%FJIE[*s!;Gp;1"LC'G8!$XQ)m %™hR)DfH_b,Z?u#^kZkCUU<2([c^GkSEpUYQZՃ1F*&ֳN^)Y Ea '|@ZUI|DD,,3#Bk!]_=ER ֈ.] ^q3! :cih!xֺ8{^s ]eKb]w\ӷc]|j31G'IT N?kzQS:Pu6S ALa 9\( ֒zr,#"#NY %&&ZKikI g?'0;;hTS^&yΪ4lK w2Ȱr*=6X#Nn c Sиܺr28uzfٴޅG fm>DE.=O4x㎢,Oi=ieKps/+.l6^s7޶o{Xx1`'6Xy8#=Ȃ(LPBA`k[gʲB]"ViţzJaBb8{ffETE'YwsG#M;(rO#Y*{_c49bvMM{nk#Vp/W^ԻCsw}l >mv~8]xʲ>FhCM3[<8V$RZ L|c•* UJOkY !DR7/cѥ%=֚Hٶe&k1JI !u@_ d=+&kU5dkO_fS:( B^CY'%]G?j2mNxUI5)=-un"*EݻźJPzAV(h]k-8ka:X GC(M 5G$}P%"赐cX;vQ޷׾{!o'{ON;t7<ͷƷqa/w_u[({U'LNYZHIcg=@pa4B& I=&5dnV;v ( +W!B6+O*2=u}F#ԣmCm`v,L--ƹ石p8bZ}wn1%ON+:t ƈO:`7޺I.WN9&}!u6ǃgBWDd`ڠk&qIQd&}dJ,jJWC.ZH ωg)ąֈgDک1F6j!Yҵ h nf)υ nj)γYkzD3į^)d;Yz=Ealt )P\S7D3'k 4yDrJ4uk  ƱmWh#8$5"\˯t|^k?O>|E>k@N5IV !ū4t 8$)d:ԝs{Lڐ 35ʹ0,|܉:!Â#9\+!=FDe\D$#XkQ$4M!zW;tW?M7 mz?)Gykv^|i.`sOgy使LNNA N)^ƦM4Fgc49:xEiϣXɊҚdh1z RZC@uc׷=#Æ@Ѩp\i4OvTPv>)D6HwFydV`Y |(I)(0%uBi۶M" &صYu= 0ﳷѴH+ !%2X{119.w~=RR]ۢК%xV3и]rĬgӞk.1@( GC<ѹ3{ ßwSs:7vߝ;tGFs> G©_qEkzPJ&3)hXQ䠎6jS9&9@i2 !. 3 CU=42s>xB#$mҊD䓑z$$c]bK*yxvӆ wRHINiu݌cH ֲMk=E2pbOӏ@Y33h,$[6uMR7-eIzzS`40jUgд O@YJj++ydA4"q1DSSS P+fqWnֶζozb^N+:tc_S~pl=zۭs9B43\BGHGHO]8bqRĀ4z,(^E";t47ѹ~?{KeQ(瓩 G4mKtvBBjbG<@$iVmOApg⠔ RZ\ޗ+Ы*e&'&asK-E۶h[ kI3lw]惙~(k6U)[ yaa;]`HGOvx Nfd/~:pϰ!/90k\{5;>WoxNy^wUԻޡC? ˗/t [o=s?tɥ?wZ9s8̒ZQ{Zڡ6.;5u,F+E&+cg(TNM+UE|ru!p!,N(PMah|3\ ,Ϗh89Gli.ڋ'炏(4FI099zTijx !N(B;=1bAQv:t= 7{>eO8]tх<<ED%{$e meҞ[L1iyR*rcw4k]&MOG%Um-Š3؁pHcqޥ'YrKәuoҕ~~UM%UUE) EMTII><핋- &'&xŧe0EUXd /YUF|7BDBf"P-94f8`fvMC)mN^:#EjaL:I&YOvL6d!"3@DDmMZ5pf8sԋfOڽYG{n5u:t_#ƈn֚?|^W/_vn!B" y֢ B8&V+2+]8%,Mbjj u]mC2À%$=C yؖ=Յs>ۧfw 9"YHLtHE^Ѻ\l"Q*Mma udڐF,r*g[!21DhCNlR)ecffYV?#'qzNoGd =[0 aL TeIJk t&0Z(OyMw'}"߅=mB>p(W}Rb4q ׮X6-o{?={Cl͚x?;tŠ+pcn|۝zώ;|mX@15d4hK/l o 6.DvpK6zDNj )%E*)9;0ϭޡC?<_}^wQ=e]83?w}Q  fIWcf;vR ƶTɖS5ʞ_phgz Px+DJdøgVJ9-uT$4{Mۢ?чw\s7:tgYǞ%džК&s*su=.`9!rbVZk̝;Ji,_<V8k `.JA mRA@2`ܹ'Y$}y=$udfko ;Čq"!A3s1'ȶi ؙ( 7M h`̗|h˖-\r%4qm{ល׾5q_+:tÏ`M7YcSOys⥗^e˄2jAQ$lB,Ӗd4u+ mH_iA@)ƌmlٲeZd}/u=g;75_+:tocđ7yKq̫^?{8\wuΌ(2hmr,db6ym6o1s!Ky扩t`L۶cm].x(MH#m{M(M4 |!;b mJ50(VqKErzz+WBkMAM>Wi5=7Ƥ5@QT '{ij k%dn.h<e;(!./AvYqq6mAt.|V,+W\תUgݲSwo5Q:z}݊:3O?{$uXby|=/[&~7wʹ^r~w?#ޡC?BǾb-|_7u'\z%;,_JkTq.ͭA+ޣm['V(Sq dm}w,sH6UUf#J(v>K01DئFQ(J2I#dzqFcrrm=&"$W7;d2\)5ex4XV%Ѩطl2LOOR2iL<ɄQtLr֙g[o^w6J_M,]Y6fmwQӎT;K=9Ԝ)xG''!H&C%16bDs,J8]J;1>Fh%i ж^]ۖ2׵)8>]%dUDZ2I>IyLrޓ1Wafv&i2٠K!&} ALduyEW=V(r5\4ʲȻmDD3M6!s؏RzUYhlke:[LL+W1Nx18?v;wpoZ"Sv{~yg;?.p*`%4cfdb>91]@;]҈~d' wǿHӘmc ;Rr(٬F#-KٶU1}|ܦTwy6n>J6SSS0mm[+EB$l*Ҿ<= 9xr=y9SS7w횭x9,oym14dpޱļsa y#k6I^դ|x)j) Դ!#>u%_@4P|M&2.j 3jzwtҷNu8'5q/:`lMp%b'N̥]ϢeY'\4җ`Ϟhޙ *:*4.*Idq/d!q1/*elè BJ CP׫P%f:IڶtuBlU;Q]c9i.2ta2X5g.|゜sin 4-9(1`ɩvg% ^BB牑T `&}zyeU'CD)@UVe˖>r_&ρ?ޡ1F<9mw-8Gogyև-fChcT=i7x#8D"6<ˮћm>=[kjڱ62n}:} [kѲ 1K\\b{՗U6j|YVQui0kCķBLLL0tTۧ04򟘘$I\ו< ̝;˗/bNKk m ̑y"bEn?1ml:^9rLﯴ~0Db1xQE֍ 6 J~p!+E()[KƎq}@4U)+4̴^jhrߧ?kmxOǏ~5#tC'(-ZO`6zl˙':qsT  ^C45d,Xa@sk-!ʢb+۴0E׃mIMP(Z>!@x#suPR(z/0kLLLB#VHJ+umM? -(ujgQ+?5P1܋ ȧ/wtӍ[ ,*yXr]^%huPl9j9zI hΑ>[kn; #ʂ<'Qr*DJ)x $յA"[&&'0PȺlkm{O4hȫrnxKֶѐeT;``t*,JFd4PJazf&˰O#4|R0N4R6Yâ#pxq!"b:8#"b k !B~k&2mj7¶̓bvv~z_' lk FBHʝd;rG@c|2OSJ^& ?ٶ>i^_?</:%k(1'?8˷O~%_~sהGD׃1:X2.¢'y&)lufJq5 Apy 4J-gu A_T$S+@`z4i˅@&}(]YvI^F ""ꚒX#д ЕvsD,o߫zavv>6XVDLMMACINuY ƻK} ׄGӵd2z.|\:,J,r%5l;B)Av!>/Ȱ_ach$>0o<0(Ey*mQU=4u DJ1Ɉ5CӐ( LMMavfmȈH 3} %}W,1}۫# 7-k3;txĜs13=]wU۞}9s^)Q"9)S|(u{X">f z4d0=D&whHM4 6|NF㝭bW1ώo1hLL+8QpՑmBkH_[GZ\ Z{-C@G]f̦6J!i 䟙!9We _Mb0Q&KR, Z>88v#X]=p8߲u}y|q4nO˙֑_c[B.U;11`i'f' EY!'Q355%%,+Z; mw9ǜġМyo&Iz]fgfiϼ_Ǿk?~ksa-67 @&Y̛ SAql)871뼷UR}()BW}zf*u(TxH--ăkBgX"}eQ0&ԑf{'4k䄵ĈO0J1[?$o$ؤZHδI;Up!`0U;MO䩻qƥo|p>K^#ww#mlXky?)?/p 4{s&@Q@Y41;Јճܔɶ(0à*+b)@%a53q.wN+X J:d&5u.}!";Q8'3(ܕ[k)MJ4M!pv@/t pUIwzi{59=q&z}lFu@ XȝoJ!>dҳZkaf8e˖a8Eֵphz>Sbs )pb(D555i$|=@ m '`'rV} I,pi/8/ >tJ#' ymp8)XK:7~͋^Wb߽Ņ_7wCC̠,Ko.,cu韺!RFJD3ZsJd"'{'9Cy2L,{1*ۦݸRA(;L )K|C) ^4wINm;(%z$N25a2¤,玝I uu }tb2RֺY@Ѧ@իrwգQ.T1 33A*dY-0PJz@X6Ce^t ,_/S50g,_~U<죿Rb')՜,l Z T":OYVTLfc[w|ZPZ'9{0&$L4BtZ 'գѶ/>Eww/|_>g]Իޡp`=}%guW^g.ZXCZ=,q- ʢ 6w GW`rb'3{!Fԣa"[mږMR5\Bk"w%m,iyjxJX+M_|p^<|jD/-h8SڒVzu;ljfٸe17=x^2o vb EaT>OuN1(ӳpT-{oR˗` 7… fe:0TUd DH!455^!@&>s+&"')-֕2{ޯGɏZcP%?_7#1;z4mwsߣ/~ދOWovޡ bxɋFm8#᷾ ?C7tfCe{4N,x'mˎn)44)B1=^mN|h"7 P(Gq1n\hI6?N .*ʽ^tRafvg-1u=DHOݽ^XSZ=y w1Y2њBb t'3]6^^z:mrwJl&pi@"opAJڮ? !~Dhѯ465ifaժU(ʷӃ{TUYŖiX4QO'w>?; .x=v-QeQUYRRGkr^?NT@t*wN 1Ak~?wm_PBHpмSuv1{ ;0i-]II:}]_ͅ7Hp,*WMR2ŷ,|`9?ʂLQOi,[ 8ۢ?1- , ])=bFM ?}dkvamsa2.VUumCf9Y.٦7i Ѵ V8Ml-K:8I/ FdcpH8&R'UnsB4m_2lѶ퓏9e>r/z&.₿u zszl t2gm73Ng.#?(*NJS'c+bʅV:媪SE$w)n TUV=v_'*RRMRb?1Ar/",,JiE1 39ɒh:~O11, "w&K[[{C? ^)o&"^#~Cy8K_+$tZ&%I_ɸx84u AbDZ0 033ɂmBXk?-Kx7xG`kJbk/^rٙК2$&On$OtLj#4RO!0>nF#6 jlqXeY$16ofǣ{{~aGc%W]W]Aq{svu'|+_3}М~ۯsOkw[1JLicb#.pEYbH_ Z}Ad([rw)8[W7 e;h1lj`Y`1}L\"-F2\0K$3+cJ8nLOڬmꝞ g?-ߎ|:.R*ײ+:<c7묽o}_|ѻMmxf8(NMgbN;fT{sg$i5!U%,SԌA!r̹\Š%0'C(ٖh9%fJ![ݶmcaSFv0dvSR!p {=o`h8'%ٟBYl>;PgGڰyZkYb7#ئU B重P`kow’K[kT_. & SُW a AsC H.IID>ވ垼~Y}RԜr"[Q9YYlZף]?|⁛{1.u z3Tţ[ eԍ#v䥨*P #Oѱ窍m-1x',i958r6{#耵Zuݠ-ڶm)xj1(0h5}IpÍtbEqTyJkiҊt hB\Z&Τw֢HR$w Ⓥ_H>EzҮ]ʔOIQ1ER `8QOKoy )g[u:ψ1+~6}vX}gqV@^r,XѨN0ʲ.H Mo!)?#1&6) .Bmhڶr-zkl%3iQ]cvvZ8Pk"y %2]Y3u3۶f;mh.CYږNgZk>$yZJ+#VR+ fҀLjB '+(/ĨO{x[c-# #ԉ691U&gZgs9s%'&01 Oao Ra0;Z̝ qRDKAXQbY]"kPFc8ʽ^/Blfx=1}o'-<} 9?QMJbXpт]{ëruGLQF:ܜudk[;9#$S胇KW&:&BeUe۶4mۖ+v6K wmzLk[LMM"D =rJ?mR.Guxk^-n;gƈ+wSV=^a+ߥq<+HAf?d[%g޷y"rFVa(^|pd{(VshN`EGtpە\З?p-~p{W;tx[nSs{8'%\[m@H-Bʲ] 10T, N( *j󞼰nijfTD?Ä`-wi:N",z7r1#`fm6W]xgQ%^MU_"Ͳ^[{2ת"+j|8b0 (EcXf)tZ)rXijxPzHda7uOה0U eLGV;XצQfh4"&u韻'v]!m-%n]@Ui$1`vfM] oޱ'9N6-F!4OZSר\Ѹf!Nwߺo?z(v|Gԣ!$Y\v&y5v 'KW {>H3De|%$/ Σ]-)E& |<)M!3Jk4En쿼%/8c^< ~?ku:yOS۶"ZK)c^vVU"@׃ Zb?<z4 )utҡ8 ,Ru-boW=%jַ|.k$$I *L`,Ikג&+(T %k֍1Ρ*+h㔾VS)&y"Pw/H.)78@}ĉOS~ !hivyo~og.'~SKկ~}]~c;t@k`]A\~8׿o\5#%uF)G\Nm-$vp8ҫzZ ҄gV[Qhd [ѬVsh^o*%5WJCc[cYy=;3_д-چgQV%lےd $詨H듓#YTf`331bzh2(.xmݤ7u 'Zn)·211zM1gjyƙ|ͧ.\Zie*y !TwwdSjtyHbD: %h&&&Ғ;6%qG@&Jl>[kr *H)!ct0i% 87KRxs=W׶wW'v;ebm[}[.rǭ{BgtYY:Fa%MS3떺 Ƃ]La]f;yb XKw*f DfW$2ZfH`_<@O_Dc<*j($yx ڶm3JVz!fOPdy4d/}.ڬkN 8q,l~~@ C4M ϫcŌ:|yo&Uxl8m'a[l+Z'BM8[SBISl}'0C0!8vl͋RLp8#OFu"&{}DD,i H vXMDYSUǮaâ|C~mm{k+ l6[nm=nsg+|.}ON[DG=h"."w#Ogx kIcH2w*弇) y{=bi-"%)X=/&v$!R+ߒX*^_pȋ) L4u 5ywCYVDh<_LQRv!;Rr5K|o2{ç|tu&dEf'20v";6t3-\n5}Ka'cjj v zwOA^AfmӰ@ lRe6YLL)[R+ԍlRILԼ0lH{l+9/pLl1e'$]ph{~wңwݭ_?n|/KoW;tXC8);Wex T̋.nŋ,O4Puv24EYdO2.Ice%l -U%R"HbmsJ!WSs-M2*g[hc+yЬmiO:D*==^Y)Aq|IQYEQtSDVFz1JS*x[$Ÿ̩ߟu}3A+$`o/{UNf#:H^xƣ ^.^o;)p-7a-w0;NJ_mLzOTǤԡ;<&$7Sm\&@vUUﻤm+%wm|XJAtheE]ڶG]~~=w<3~/~ 83k.bB4>]OMj=qNZcbV{6&'!6{JR"r3@*-Sи(AF ymra&%A``|<}jŬs:'%dҬV%KD@609er^SqHtm>i[H 1Y& dK0U)s>w{DXAD<4w>hR(!qwE Sއ;ҵX|9&&'p7bͷgfz!v (xQp[@%0̋1]|%* FlkMӰi%Ow):\:l auu=6͞}dA:J}ZwC!b;9u7Zuo6:'?}u]-[&۔e~BH"}YKsGev1#,I^gyU$Hl\Ʊ1,e4]lߧO݌e:"EIYTX?x= ME`/(BK"`9٦*)w*Q !<4"h"(UU6 j5YS—IM} RZJI>i/ʏoaڹuSϙ۟_BEKp~cuǛFqmw4Ig+O4a,y1~;O ik ~/[}yd@DU=QI)6D%GXaA<w%$ZzvUU?9huvK:Ϲsj?uƫ׻+:0񒣏/xы0+-Kύ\٪R&HZ)E$;h (.xփS!\`˴8Z.&N"p/>:XP~iΗۻZ>$ESg~Α)S' m\=kɛvc3H%@{T EsW,?GIDATDOaw3*BHǯhr>]&m>tunF߶|M7y8hmq##.RlVoPwyG|GY&%J,W3=B^ !kZ}NB,XN#ФIIJ'FlM}?c!xMiJ7cu3(h|O⚤uPի9&w>s[hr$̇H?KJenszZ磋nͶwT)wҏq8wC.>bv~q,hS4u!(LbӁ̐P*d2OH">߳P$9ƶ/.͓u?4Ӛlz!g6kr$4*)?[PgFh=gW w᩷įO~ח^OoNM[$pnu.n[nɹ=4vG=P j><B wn僿{`#=I;OĿ{pZux$;06XK{ꪢOa(n4W+5NK]qQhGhc ͡7SXQ">qB1EP0x:#x:)5oݖIuZ9)8i-sXw:Kj泾uo~3<0}2wz%aM7[l׽[~i#oCz'cf` }ٗXcC_zyɒ3uESq4-1AHJ3@Ƀ=iBIF#Txݘ@UV lSOȹ1B㝃ULW'hiZ2 i#(#sEf/Tilٰq<D'9Ҷi%oɤ.Jc•ΝK?Irra9`03ojꑷ-+nXMTplXoUynWnİaaߧ=K\t=}1ڔUEG1!)'yٽ-i2p;B1 29.FJt"'pޑ!Qrv&N1.Њ}VКȘF^{A#]Xh Zۢi +Wno|M.)?S zK<x;pu NYdq?(h7d З_ˤk[>eRŌd 1lA5Ѩpgwrmr#V2ډu5|@p"kM ` $f,iJ+4-_|]Nbw4jy-hrc2!~=MCRu\l[V%۔R1IH!/M"PʒRV;O$41h٪2r:?NYgiv+o35gW\1>an; * \uU}cM71NixᇱzU?\CmӾXk>MQcN+&ԤxDul|񋒌 AB/YNXVU&mD|`UTd[;+1>4n(ֶy%Moj Ҥ̓r2jҔPHRfQ9#ӻxYwknޡ_7}/k~]wߵ mt(OIF c|Dk[}eC֒:YYFW/L.ӆzd!@+e(-|$pEe8{@6L>2G_l^n4qhr9 (\چN]ה6xeYúNHei`m[ʖ.J)uFaʫZk?q!qͷk Sh4uMZ`kZ bܹAp>(.Y;7~1U׃ 4uѫ zy (EűmCgC9ibEY.lbwi]UZۢTx|?)}&d4:&Ct` 9u/>@UEt>h&JI- {.NKJۓ8iۖuhBr}^x>op*|+:py3?Ɩl9%x>%^nM@];rrI-Y&<R6חEqԜG֚β 6XvO<1[ݮ'|[n6h`vpG۶Ow`=)@~j> q8;qD$ș^(";զ'3w.FHOJA-qGچxcYb h'g,$'sŧȲ( Z@+`6!bJ8k1gr Orhق qӻޡ__ȗ<v NI;s׿xEx7Gd3$ k QUrTO81yP(myEO Ȧ$}I)M]aC4h@6u~kc1"%8.o;Ԏˌ04"!T, Iliİ/nJ9kP"o˲p8u)<h"BLh: 5f'qf.41mzIYm2`HY="h|X޳O: )R/xT+hT*R)Մd !qvzyMa} NuUc~ #k[UzTpo9wUs\T:񎭐IZZZDUjr~"o8'YǞ*CgY4 TB,@ޫ`\0?k'Npo`8q|9.q LoU"@v.2cε>7ߑ{s)?O}I;]MN]If&mr*tc B`f=jrMN"+gyL'5qi{=W,f]wAs H%7 +Ki= hX,O4)E--0wgg43N8H=ğOYp\96Y[3_KI s!UD*@׶px;F uN#?vz2B hBxQ cfh'k͎c2eD)=_IJ騔FJP)%R2tJɦR @+@)f46lD(KBx3 pePB!Q2_!9paWJ4S,UddI[{.8=ޕ6c,+k$T+Uqh-YTU5S\R;a1(1FNDodL%+12w@<.J,S"b5DkGFF=Kj^H@(HT5)e2ftOƘQuԵCRzymEy͟`R眏󎟋/?#?zҷ??waŘ5i}m֨xy-yj+L Bǂ|@c #S#$DY+w 33{`$Ym%$ W " zQP͝ 4(Dy"^ft3X|ZKH \XL+ʂlc!$v#gɔYL z}%mV'aIdlDnv:3 NU<L!DI+m}sF8,#b4X^(:EYpR`NRPLX_ib6>G4kYs!,cǏ׿zw7unw~O} g#c_}{oh8hj ˪Te Y<`ѫȺn< `( vdV06KYY$h|E:5naзILQI{3W," %g-٭r' N|˲E׶TkM)CJZTv}̀t#kU)lzD';Ұzdq#8&u ڮB]LPtJ׹[td&?AXhF I( SzhƔ߬y9q YDGT > 3h:)K : 0Zkw le+T$A@o|˲̳Ȇ#1tm=3yc ɔ91z`GmEQ( >@$ 5K~'㒪$"?pklik ѵÝsc@0'5S O@LUe;Eb+1:wD&k:*m a9\Qm4hCZig۬Z(b}Y}Bda(p2,c9J6TCQx뺖tyΎ4A*}Iw{z_䩡i] C]KI/ssزdO΍FY8r(z };:Xww+.Ƿ|(&|+ȇ鮓'Jm4ʲ-fdiDg(j"^RbdFf]堙M%$T'Ai.'vfYZ|A2r0K uUe-WHRJn%ey, C5=r+?#y#UCa攠I.y$lq$.(U,+mNpp[^ .{̍90ϕ.kj3Yv&E^y$#߽="(/VXMw p]ʣ z2YNXD~l< (XT ߼[P%$TX_}OJ˲465?o,l( ;DVV!FU;yYG/xvmMq]Op17UQ} unUx8ēx^>b WkʋD~0zWP}GN_!FrW]ǰZU2#!&(&@' WgU521Y-5ӕR(ٰ"m7d(Nneʨei󊛙E6JO'LJH\S^Z] 6"1@ʼnMxXW0^.neS<%Q@"X1+yuC3wB -ox$ttVLw){3Z*N\JWBt'/Ukksvz/e_ $uSIcT׵-0f$>+yj{V,*AKןPќ=/bb<>ov!FFS'Sh [b [\]% Fn˳Ј 'k6bF6a&\b*9^kP `GގzmH>s˒ڤH\ R+3sssC [Zl:cXPNs•gQP^kepR> f2)`Yc]>7va&4%HJCG; jP9;S1 b,yYhRO2QPHhV$[O'ϝ0͸6ͲіE#@Q 1xO L]f1Eb xN|5Մ1 =Ǧ}惀~hϽeWQOx+|mwܾXBvfRe9jQ$RF**mY])LSs`Yg:C[t%T)ZϚ8$ZR?G-gs``āGKEcl;W+ S(RsC"5~JH/:QФINiUi6tc",4'$_ %O"KV)4q3lŠEĄ YuODUGHEi /YST mv*7b|ZWg<]),,U+ms}tcI2S `){ЅK-a* JDLx1pV%h4 V+2^) .3KdPSJMM1A#9ߺ{Mn%-@Bnl&":''^vEQ`cg!WԊ̋o6+FGW(Uz (\P6ً>k28M+%uFw MVD$y ,E|F6E“-vr3 &p \yNj*_(,\ b`EA-a`aSG*u]89Y>0RA 8MCbs;'/ڣ0W.52ScZHLq!mJ9Y1TJ cnσ~WJ _ܯC*aW|RORoER¡,UV~ϘųiVڮW(%1c8 ]p$) $Ԋҥ1pܑ 7CϦ8?N:LnuL>.˪ʨ{iKK@ <6ʂ*^МKeU־ȮRlX=L#6773 ^1-ޏ %۸$yB6V ܙMdxa$󸆿;lmoa>_dJ"!  ۮpW\qRJ_‹. ?O~?SooyTVpE--D&iNֺl\Ur-SUw\bgR8Ȉ$Yn]C"47^Ah\4ґ[axO)]噷'FQGDj],Q4&y|]8x[}sdU_ỲCuLMr0$k[6,g|V.FY9 ?Z]UY4w<n[29JX:( ML@21ܖv#]x,w2(lc:̀Ȃ%eQv&#'N~i"4X{\0#"B%}v}qh2*ʴDm+AhZP%w0 4F뺎X0M , lB*)w{ 4ȣ&J GWV@UUNNvPUNj%=28+woħ>gCox `Ob{%}k)S":ߓ7o4⠖7QVmYVepe0&9@p7x@ޘ I4D2֓diJyDF  ;XYhXVtlT!\tላ) ",•PXcZ`w9KFy#A.G%YTl*3f'`ch+:Em>舫ͷV賌>(2r ^2v0\yO{~g_lEYL2FQmTE>6z{D2J3@pU{@:Wф\(@ Œ*oHpSpl^"R'wg<#k֠&yJ=fc4ʈ7kV` 8NwY/:6& BF}inͮXy!MI3rٲ1Fb5Q'A( ? a\FKrG(vb62p وb2Y83PJ#>Bec:Ewdst*bȆAZs$ss0C0n@XZ4_ֱ9 *,۬] uX-oy#64V Qހ zth}Q% !j)ᣈ]sW̺/xЕ3 o~/~ͷr6*Bm3re躞]ޓTg8t0+HL*GCk9F + iJy2X{u 40[|eW%ʂ( \l+fTizOǟ˳/e1YV(]#H+='IdJ'P8%Cb&F]Gm}6m+\Q4 V=8u'L9DʀF Õ|(xj㓎F@o`F<ʲHx{26&6,KFSOV`y <*0"SHAdm#f DɣQ2z#}zLh&KDn], l>I4I<zpk%&RXփXxp+.7O˞kOfmv,4l%41/P5kʏVRXj-rk l6s%ٺT9y(ج=ؓ\uQPE\ixSpEdBs@2D9 ,6Za :拗E(m),W,aвFvQRUN*CLЖ}bװKmٮYehF}@9)3ه%O-ds o4>K!R ^rxQJUVb j"c yv/~hpe+: c yVx UGb ̧O~NYPU5e@EYX )UQu]FeT*8C :V,f!?pKXR0k8Ctt ( I]7s9eIT"9rWL+\Mv{!@SFlr-n <J{g69EbnU吴1o;v+.."K~ϻ7}1ETU"W"Țގ%,T2Ȥl)(프/k%qp 3؆z* 'sndRsKzY1DKʲ0() MCؘnmPʪ"UE`b6X1="b>w.q wHdsȖ&xPʺ&EWcvR}KE6w.s,QB($;Cw,k*IbUSHjtrrϝ8̅dOgm(|guYu\W d*/6lBA(( |qO(GuƢ*+(FQJXgm)eY?։(،NCdYB߯;Y@h}/22W<֐$s +}c6c6%1 BkX "'bsENm^{֗W~xîS4}l^?oĝc 666ʒ)YDY t(tiK"h9 r_9zeY4` T,-#jPnE>^o +dP8,h@Zk=zJ$jbA))ԩS:bݝbwwbӧNc{{ vTygs:}mے|egQcsBmekihI-P9Q  f( eYV yp2f` @P@"/eP@U׵6ei:U >x,@,'0)yFVyч⓳u;2=Ρ@ K¦mjK<͚:#Iq/5o.3F#hʋ) Wo .Be Wy@>E4s8[lll 6Ϡ:ENGYU9j䱖"xy,QIHG< u]3ӽ1s+5r;ig S52J `}٭>i\O~W/};^Z AK7)ZnuӴyeNЭeH$%d# k 6uٗ5:%KtuE%Ic38L8Ƥ fxw]˪e)iŒ&djʢ7:ePMj'! %FI iƠcgwbB\dX?5| S )2S!bl$ mރXc4/#=+YKsy5#&U$$)‡$,IvVHFs]( =]˻bڶ>gs, q 8Y3,,5x "VwE>q֗xJk_[x3?S?}/O{썟oLY8XU/ sK8oE=*jِ1x+DJe O9CK2cd& 8[ގ4AlE\2[UUi21V @/\C+3IB廐`nzѵ-,yv΢i\ .j@s>D& Uh:7U HZA`}YSNᵿop/u5^=G1L7HoiB yV, Ek29G&8Hm=<*XoQ&v|F%2d]n9X$E96##=X,p׉lma\aZiZ]iT" i<W1T<䩓EYUjM٬:KSb/kE*`}1EJv$s8E6+tMCFm+:ʺ2Xj 窱yU1b:=N8SOS0agwrmr+Z:q4fe :p#±S~xN>/iPZ")-sV.;kUV"%-CWUeԻ1D3<ߔROS/|bދjuc"R%#T:FWeO֣9i!I$EYdO\QາB@cCl:Z;[ ICkrd ,,_ǕYeJ((V4$HGDk'ɉ'Zreїf`ɕ8I.6$ALʬi;as>\?Dw~@zo+m~ק>I<xSvwo_[~㟸]ת(1:6i>@ e"#8ĨG,CUԢѰ16ӔR'6e0<;nlz6Z&3dJ1֢,KԓeY|jm |^ϢYHc bGK3FBK}ҞG|a\Gr }O<=k_%v(n۴fWL! 4Mh3UAJ3zP#69.?S 0U:93"ӳa'FȟN"QUWk"#BCz ц+^ 4_-WYO⯙Ala۬VYJUh}O4ǰĭ|.dzӵme8Rv&=8}Y$|I \8Śһe:cF Lj,mYX;OkC`wڮlՊ6CtI&e]` p$)Ŕn.`}I+q?OO^w>/L3 1(˒I6{HjW4#,f. p+Ȯ(QV% L]AEE1& ܣ,ɒbL76r豣p)`EۢiIep%Z -Ks9jkSo!YEQp2)q9U-zc Iy,ڦC۴t2d'JI\c8<|(6A Z4( 5JWV%wrQ0g@QDL\,q ֒ : zULq{>[Y`}q ?t=pn^| Kw|vYa5R *X̗(JǞ,#iFl  D=ڶuEF;ێڑ:=)ƹy(hE1IsY-4].vvv1aC hԨ'B ñC%;R#oب-n8iqhbqhPU&ĕ2mM5pbÉ'wpzbgawt!&+\D]蚻Da֠gIVU ҌO\yJ%fDYfSO}ڥ `9BuLHCB)J\-(WmrGi,&#cc(SvcYvMΜαZ`ݔ! U{+l p!<+7m;g#ǪxSQrpW"t}C!y,-ĺ늁Zi9z}a#%Sd1Gß? 嚖\M1h:s5yJiHVHoՕ'N `}ӿ}̣a*;_cG 6Pd>(qB閈)a9_]feX,`-P{j#f,pQ`5+ꄥ,Q8t(yO>۪*UUb\a:b!xq]wagw!0Эm@b8'W` f .:+.SpVpRKlh p>"mlj7ݱp qּê Hm\Ԩj0chγȢ)4U#ĻuZ)[QRM)-r7DUunKȈд&)GݷN&HI/pnFl$^^d3j3'eHi:޶%p (h²dk`=iF t<:@|N'Vl;'QZed'ZQ٣DG3EShsӍ mrŲoa `1@S\VKLaSH(NW(rI#-dA){8M1_̱X,h4EMdS(QUNVÁMM@{1b@^l /[-H1gW,dc$*\[YLC(@՚Ǚ7Lo;(CRm#B\kChUJm8Fv 0ޔyv,ncaQ84 xP^9 rG)LqY0< ҺJ^P{OlCdOid,Y(KN<s5Fki0N>٘2mmۢY5Y=%z;(1P%aUڶAQ8W 3-1b/9L/,YX)CGe 7Ii3cE4*b >"]+TXq:ڽwA_Uhzq~Ǿx}3ypד=g]Oܮ֖.*5by>9p5R XJf?f0b"){vJ|o4fwlBɂQ#4]N XbLq4biE ĕ??(|.<ȆAYh̶VY \@j<}a p~Qؾ>]|n 'Yh3 cr.k.祉JdUÛ0,bYxh E.LCLH0ݭ3LixFl㈟AvԾ}) 0 ʢ41N<6 \!uΕB u `WyZbr֒@KQPL!^u;~I5#KVeI`F&~y/:GEYd_jtbZnǘ`{i`O)BQaLb:0 k,qZQmh -%\-ʞV *TFK 0eA&Y$c )k+xc|/nmmy}o`])%|]ŗ^'?IxMo'^{Kn!FL*ir[-Rq:G9ۚi2_f%mu(=V"-wb#>xD2G+2XO&yjKR ]c6m\]}tְ?V8zƒw{NiAwZ)@ Rz8amāV*ą: DX@tKnSeiJב ,cBt~= DjGF[1il)J!seF9x\@]3}ͨ޴ 2aY@+ j)*{` y*_lD=y@[;X_TkOs;!*Gk/;ikɶ`؀]5|hf!o+2hf! Kmj &LGF)XU$K$nIV=2T G|6GXVX,& x =j\t §_ozxCK(%s彛iSYuVU;+wpt[xY,UuUYRe߃2?ؐ2Rl<, ?X%QY7_fW6;bw0^5s}(2 ui- HIFq2ج9z/TB#䖻gm&-YXZTU9|ز],LMcd L&lF43HT@it.a>S'qZ/}:b2b1_`gݬ&Z,mX%IĘR0Y DF4nK)2Ɯ,f`}Ѭ~xC>|7x+_7ś_|ۻU&fH&OV3EEt ;rU6]""ʇUfhQ"i˔2q{ Bۣkzl .8[5i$$d.`dv@Ҹ}"^d<rIvu5ٵIБ3,k3h2b>-f Лa6ꜽef|,CpS]^fc?JGpztvuJ) :}wx7o{_u{Uͦf4ef#XL]ע*K(0b ~07Ј]#ɏv]JF|QZ=! L=B/,nañcp9ǐbwޅݝ]s?Gj*U鏾O>_uI G5Z;K2C.q8ՙg_FU8 7CE>N38m,#B"R%eEt,3"+ʀ($'}NoǠ0 2 OY@dH_ E.D)tY{zb,|V\ErO&ƛ9M)\dsi'fwCB6WO,ddtr-e޲+D"25K2,Ty gvckaIWBœ5izPmnld[qnπI y C w=ehJ'O 5'O_p>~_zOo6f0q# HG;|@Ld#%=ʒ4ec2lb%_P5kB,)  gJPQW(Gjak{;;hUmKYC:asR1Woϸ75SC%725Xߋߏiǫÿ'M/ENCgO'؄-]EA=%(,ɌП&5ڶs"W4`犬Cjp,^s6e=S 6+DJԠENDdҢPU%u Xڵ:2v7X:Iinv5%5.Ze9Ǐ{x]kٞ]LM1b\a6 P_nzM4FM _k錋[H U)H_*~G><<׿up5x-zZc21X9V9Vb>̽E:"vl]lVQD碑0ABBYU9 %(M~QD+8Y c{{mב3xU^?Zk>徸zr;2':dWmF>޾:K4Vg>=~9ϛ5v=vLM|~jW@W)2 l-A^3B3JpbXahq̓.q#*تY*w@9(5ڲYP#]$lPdu-Nf']Z&f+Vю{[/\Qk"Xٽt5yCY0Ʋ+!8c֚i,ڮG`\ȸMZ:u "'I/1|r9[DZcMx_SJ*t389XvoA@?X'{Ux~g~k7~=]eEHp렌έGk ;6 Z!vbLL\р;2˖Vb=F h.#Ujv5)@AiAL]ji^I#5N'9qXX6 V\qgX+Dpeqg#|A!ू\<9Z(Ln8BRK% M0VU5Dw'-α9 yV4I޻c9a_=]Y' `jJv{)YA\$T8N4'8bߧ8@=[_J).ɩ3RV>p), (9dѬ@N g3G{nf>~ZX,jෳ~VWJ Ozq#Ɲ}?_]|/|ӟ|زY {z1ư쪵Dq+Af'-PʪB4</rQ񇥲*h m &UفKoS'6_=aBU!iVX,W؝w]3瓅xU%_ I8tҹ2*2S:=)ގbѓȾd:v]5ͭgArN rp&P, ByC*GZH 쬆)@$,JQ"A%0K/-0"/wk'~D1F]HHz8'`L5c"E0AZ{8yag|k!A?Ҭ׬?\ ORz#oe&;k&A@?Xk[o9}׿~GnFQw:1 վ5XU3B0!T6.*5 ϛt ,۝wI1Mռ$0 N@Ẵxex'ܰ0FgJ/{qC>t PoͰwK(ƗM5H+,p[ijǗNoJJ.?6vl)mxGL>@XX'@ˢ,2Z^*Pk+jkWeEt5X5( i-t*k3:G֦$ER[YxR# ](DvL:lF 8Zq*E>=kJ&gjTCG_\y ^n}ZkfsliNbDMNDFι {w!KP?mhB ˿~}:oeWHYwݿ>O>91FQP=i&`7yȕIX>+I0 H@1ÍO L;B 5,~_ɰDbNmQsH掞ӪUfeUb:@ O|>'Z[pjǦ3} ^KKkL1Ȳìn9I=W _{WvFޓ0MIN~> 9 L*Opz֢9gdbhs`,KQy'q#^~jalQuQqCЏ-QGNR&˨jH-z1@>eE3$|Ucx3peAZfT5o h6-s֨ˊY,fFv'?ó{?|׳.Ń..QO sui%`ǠpLf̱ ϖ2~|!n7RJxcs38|=??M0䦯*Woz n)'>E-tBs$$kbiβ,eN ''˭txO62.Kb)U]qҢZúO;='?Mo8u6%[Y<EgF <0YKU9]MK^eO&HsC:RQ jݑhF۴q- #ѵ{h@c k,xmbb4ȳn994qx֣/7?\zC3sko5Ӭy`b#3򎿛j}Vks=o$# ءw:n1[!]4eN]0pl`GyjM@ud$֍-$$I;7q)Fmr kLSXʕ:GdX4Xp sba]bfi^ )AfJ`#[g}u6 EA=ϭ@XJ-ڶ#0-W=iX[.6tX(i|ܓ=X6R](,N A@?Xu'?<Ƌ%v~jY~;^ubVf\&S\ A gE.B \]l-7--Kj F֕ KcOZUJs.É[djTťH4KsGF5b$yŒ۶`Qa6xC>R<ǎ8v~G}ʪ"eΆKVO,cH_Zc8*D?ߕ18|'PdyܚI*)^ڦeSi:n Gn{h0NٵdN Tȟ4k}[[X.WT -hD7S** z9y zG;%6#yw575 C0?s&`Ϡ? ~mV3+n}g-(ys%˕ǭ'8=@F=q"4/G]m.{Z%J|bd0#fTJRP5&˖V3#@5ye k ڶA!S.sE#ITRW. لFTZkEYt}yb7$ CRs< `Jj2Gj}m6 ; xKN iRXCɸP`cN+9%\k6Lb0${MG$sRzjլplmmobRJ_e9vzWE_}?;paHDI+8XE#3gin"ʪDUdc$e xkQꊜsR%^ AKH#6BߑXjܚ@l UUasc8l}b]tHrU>. PX.?xexC!;G?(igHp^k=zCq?{} ?[IUR(F]Zr lڻK)F,IsFQ8(UMDIM6 lD+XڹM+EӶHÐj͟<ﻞ}Rf]FuSa"YirVAb8_{/sс$#'6(`B| g (S;W#3s# 6ykPfKo߉C7&WY`ןǯU8>;O>=y+? ceY𼏪úֳ 6ݴP8֊9ÜN\Q`\A" Da*9$S)[|;MpAGDRd$rZ-=B8rZM۰FudqLF5 k>^GS` "RZ ˯gY{ڥ3g}}Z{wg=]]xtf cacȠ6tÆ:dCL;M, YAiE[KUn40L!C%s@%TvE:瑼Em濾=4NGYpV5u%o }I`&Joq-NI2д<39),֚*+˺s\#Q%vf8} F&NMF'F4`vWiQ4J/Fn.UCI7_`}%/\pk~f%G?[omTq h Ĉh[Rx7)uEY׬LWZk4m J)ojZkXBǢ,E'ʲd&ot>Fn4CQX [Fz hxQmrkJR S$򄇞jWGUfmqG]\RTk̼=V4lGSyOpK{x_{|}p7 g_sZ9zt'w:Q2-13xȳpml/CUFZiF|0d2QC,g9X K L3Z; {қ2 Y~YF1WˁOcct~a[$]"( ܉ Ե!agkd;ɔ)dgh` %2K 2lmma63Pɮ2].711Cb"y1ˢŸh )ifu5s<9G/Gzg>Љǭu卋@gMXoUYE”8K"s.W8C"u!nIDATp܆=:Sfoakd8*,Rm`D`"B. v0vV7OO\lzЊ3s`}_sk83ncw;sAqꞢxv.X菵 Ӹpb+b),K€AL`Ȯ\rdЈ W}37||4֢Lx&ao.R]\+\@C$1dR 8G =KCc od`Ivz+'NG.U=˲@]װJ)Fzl͗+ ~hՏ0?\)W}Eyy@2Gދ#[:k SgACi{~κn\~qn_~׾C+niNkYg3:mn9s;)@1h;WUE'| VMV>WWU'#Gȓ:Fh7x}%׼oSv\']R .s- (օCExeQ8pWاd#"=ծ}?y/ͯ;zt89ߋ|tO߼N]1EP@n"Iˠ`4"qIWA@!0|lwQR##eޏXV Z]KҮO9Ťķ,Kw<_ b;vAfH@έnUUk ;I EnQ%Jmmma6% 9NMK9;FӔM#}Fm1V)!swe%)L&Gw:uC0* XY⛖j4= c]\.l2cjrTe'Xg<< p4/Yj s%I)0XNѼAz@< (j|M)Rz+1NYf\׳"Z`7wpaEߊn{wO|E[;ۛ,h#7?EtEƊKK9cŜ@YQ+4camp E6[W,Ss ԓ:{דɰA1 lB\c UC[WpZ" ky NVOܴӳ YOc áCP,*b/*+-x^RaP*F~y!_¹ 7z\V:(G\˴, iDFBF/K21smے=)#bb1% }RJ0`Qef 5ֹ*%M 1J2' lXhqRc'2SJ _ .\~6 \W}O={\X̶!tv8Eh ޣQƌ}V]YUNT4(YvDX"5,!q;3bd[FP7Բ|) U!FD|JEݬVb3Fc\i<:pޑ_8·HB[aGfؑ:WP}jO>,6o20ml85-1|,!B#!JfF]Ӣl#W`•?\~&#ϑ2պF"s,2k/.^ƇYW1j[#!VuhA(?J9>}Mcl5Omr'R>xLꚀs\l̡N,*dx>'Y\ϔ1HKb6hLji3kY1>$hR eQEny[F+ES!'P+'lZdFŝ4,1'rP|^~w'm3a6Q6ubI 0]q"0a{B3u@}ߣJ %,KB[_[ uT(UȃB"5{hcY? EYMy4LWn8XEߝVM3l4$EZEYe(X<ĈrجVYTUiѶ-(UA=pKxwL(lB>1dؤjg)d{Y=qXU:o'`L30V dEv*k 666 3,˜jݰl  Ô۲_7ct{JFRFJawQ_" W|3}#.x#c/q}'>ÿrgoxbVk(,}/Hg<$2mMP M7HU2`Sz#  UezJ?iaVkS8G](M& EERseFď,Ejt]Ot%ḏ\|^{pNsG A15n-ߋ9áVQƏ[C]{owX^{lg=b1kj ;qj֐3Nsde2gkQ0@{i 9rtd3J6< S+V -{Or{ޓ '6PamқAyl A='*BpBGIyu4Ҥ0FQGIX!B #]tmȾcsI k N|>C+:5aZR/7SJ`P< $$`Gq_"UxH~Oz<z&zՓ-u/ĝuα3B׶#јL)b1e*j =(}'(4?"7]1m4#!;DΪ HxH5 @)TuI_&)m IhHJGC ]`<@ʪ=$W9^hJgj@;CB2hEmqބ2E(^q~!m>zPjFϧ{{<fi1Z* 5J4,K|8EQfU5DTFóf,9)f?XkfiWEu-ʲR5%E7"6GA6f{׊"<3L]EI]TIT![je ?qƢK |D%3j?kM)m⮝v>.nFɾ|"b"%4mR-4RJ >/`T_q'>q}}_>]O L&Y\8j)Fz HL+Û9p'*i?J'6Ap,mDkˌfE9i{2( tmb1q1`2>r" JԕdXQA Cg?>xܕ1i`}58Ȏ{|y-j{x:}Fwgo=bg\{3u~FO*`;3ь*K~ٝ,mtv\9(X#Gp瑓л$p,d-ͣ۶߱t"?)u@.ҙ{ hw2 U]qOpm#6,S'-mwBev7XamPqebvwk=sX|>\4[\1="XϸpM~R+_bծphvvv*?_qmx_7u/曾yg[ j4ZUU $Nwvsmױ!X"P⛲mס]5PBr)fˮ*]Y@4HO J@`2}>H]r(#3bάNǘQ?Lxy T<3p#FugB=Kh@i3 81^Dݛ+TNc40J!*7{ .BH< v#<<(!fVY}2fABP ؘN)I)FNXjE]3u=!Yx3#Eεm\6@lk]F#Q^1"m< ZieݻE]'\M] b6@ ߗrwH'yNywHu x嗝sn< ż“'OKyuͷK.~򐇹=9Ͼ?ulj;^̘hhD XQkrImż/4*[a\YCJ*PJDZLYj֦AӶFdGhsߨu\d !`\G{u͛`c*sLw&f]rbm͞4 ׸ Gs=a%|e9_z"U?㧦\w_{ڧNiV>ji6S9&|Pתq' sb>?Y(|mdʈ5֠4Vd$tFq 1/p xrcajkӁff3UPdR\.fPVD N7Em~v]gMp'CDcv@FFc`mK㣇edRH08Y, Kxs$A{ |#:$O%|mn#W'߀-nZaw9:_+o?~(?ehKe >蒵@pR#EnU+ ,Kcu7%C,4VUA K6u6*}i߾ = BcZ e*rTY$?qP%%; ΩqQ|NIq5=jK8W(PP*έg>=L!*O#'qO;#Sů*jgGw^l}=oVpF3#9P.S1F4m3Oyed,y<ږ)Nٜ>[,"Huխ+ҔttcJ_ۑMOIDYVX(tW86Q%jEBN&V"_w(EQ•)jTײH*L+:'MZ |pRo3+8|Ss?o+$eOXp[v_?\UG= 8G&@~?K G~54&yBdPj\,WH(U]YhF]W ]#>WP $@8WsG1T>(Bu!1C˄]ϬcO1` U>'FΔROg-%{uto_U4ǟ/f("K|nbV)E꾇g鰌HdRz/~)&T|r7nl_ o k>so/|?~rkwk:9Z!Yd))!E* 8&2X"b(K^X4K1"*dsj RuTlKH&zE"L4h+N2HEkA\ד̹=z(b$\YBX\tm_tơjh!'.<%\ׄIip = k?)6.\#})Rş9VS3>}A88y/Q#7Π^w9R ^sk0,4px}gnH{4`N NzeрlBɦ,)Zk4UF=uD[bRO6I#E8rEc[Jz .AqwɹMJ C`oY,i$"VYK2,b:['$RKlVb3F5ϱZŲpIvbW:mBmAd< MB_~y۟_""S7q/=?h=vxɗfO (ʊMU7h\dBceMQ!F69 ­wBLMC7%ecLHSڒg+XL)YB.X4Ju{X.EO}aIXE`8 ZumKo,şo띍w:g~'IJqMyWRXEUC ]f7o]1, h ؇]`M#fEOkKGJ|HD׭&x%>m) gR{pq`Y͹ZsD`,]Ds>*ځuE ΙAYhNjf0y OC!)J%q^g@BJp4ҿзܸƪsIZeo&)Opȹ}?;oÓ"SUU EB/UUaZA1j ںT5i4sN6]בhL IM1l!}̭>xi?ݘBkji4WEQ`*CòTbP%s/o<n =6)aspx*cz0_x)kwyV^|c[3<Q]66Rb  ttAOnaw֝cZԣ^ ~28S"a~D,w646;KFbMxORm@Cm&Ix^Yָ޲,ץݬl s,s!2-yJNd06 }_+VU,Qʲsͪb.b7l2sFs`|#;!-$| /CJHPu49pP٬o?A]U7O{嶛|gmM%NeKJ67QiʪDY}*Fhkےf(czwj kO:rCT,/ R).D2DJXV&ńiб)qn94Y0 &S[+\u+$)%,K()Q/*f.L H K)`ب-ֳ@D,>3l*%f+(U|}םS\%iŔhDs;vf=f80pYY[`~oZ)!cNR 'MIZ:+y8kYX9(0\1&zbI,jP+)lʒU(tK],GG>xU ,uƒ Hw.ng|JBJ!t^vJRvn. ,ƅ'[qC6f;e:%ӐƔ;jߛKzT_k𿡭#Hث;w?q2W,[1臀4)Y#%h8șT۞M'ͫM-:B@hh`aacU)irY=GQZ-V[1y␡UiuQBbzZ.Xf负B4JgA]'lB@f܈/;߽kdT_+|n?Ӻ|ݛNb| " hΓ囿m[W|Zk;LZؐ&]k"pxZiDI67ﲨE6DC1 =׽{ eon' , o>h|6( >da@h^wu[cxLȀBJ,snu20g?#P믃44~z)3h99ZVEzޑ7:vm ǿ!Uިy$`m1_QBc&`);%@c &Z*NkD~(ީUN#(Rfa{M؝ Vc䶸˓AZN}aw0eo:Y|rfMofVb 0[,s$&. XUQ dȇPiZ@C Wv@IaA_) 7?pQЏ g^}wf;/nf{F0RT1iDB$*1}"k*R!x6uuy1.F Bwm Z-}L @TmaLm6l6pnn֬󍏾 7|wwBaE7-c DuE*x|sFRtrNau3ⓒ Y8؋T/8t{SQ"v:Ϥ "{=U(vѵcd.D6؝`):CZAO_1UQ{Rzܺ9vD*؃_AQY)MU.e~"~hcذx㣟gzU7j]:ugŃ1Nj(n[Il[a IZU!йFYI*i)}+5:'hԐUėnl9M{e}zb+S+KܱTmb7(WT=1o"3ώt ˈiUUzK-4F <ЄkaPg SqVc&zK߹>,?cp5IO>S)ǙZX{Ub~ַỰ"_xVB[3ly$b̠OkIL\ Q%rBdS%c { $bمMKȜ$K%]L3x1 rدWNc{{?X cpb':݃yD667S2\@J鶔ү%n}?՗:_/( +tǝj+l9CFť2> eڌ1:ux$'ḛ:U EI&,Fkx4i4{+HbR͎7/@>أn{?\fbgJB677yU׋f4޻Rt$`$tFApb. G|Dl\PNP$H@ "iHITTifwc]k]IۑZOصZ]o9?ެKTLd2YL׶m :sX7k G3J(1#Ukr$Ħb|pXӥCCo]Fu_SUo wN_1IwpMsԵU~<\쳿t}±Ct CaR=X1ɕPX⠠ d]3ȰRhg3v+ ,T4-BLԙ *Nӎt&P1& 5vWag>jb*mޓеh l62Vp_Q0(W:J_i  T`l#n6댜wkZSy ~_$nZ̫vo}۷^='TAxUuU򵓦<{+nkFDjlѶ3u"deެ'o*2`Z&V5_T<3T+YI|6Ҙ4sgǝNbQfw8RXTBܗ+Xkжmm0v#}ZӧGHNTF t!g=sb AbJ)!ϳ32[WJ3<_< %( Hk0#[rq$t݆HwlhL`yEnrzƆI,iJCVzUtq [Щ$[?M.;tZyWI]?e7='}zm,MS3A(d#{1SJtQiǁZyJrLlO7\ꃧ6w. [)"udV*mio+Mc0چSLWDx^9m[TU3gPEՃ4 .Z,»\.Ņ咅~q|66Z{{T)]t ~ܾEȳx,֜աzr>(1CV6~4K$`-8*jtL׶gE~scUSQ.ݗ|q3o{3GFz`v,ⴠ6>c"b*xh+x)Vǵfؑ+JF reXRPp|>*HVbz%*V!&8>$\Ft&9(Zk\pqJ.չ*_^̇ o'*rYg{s=x3?jog/J<8jW~?E̅sߵZ)'sD &|gFB$$x:Uųwfy.Mې 'f 8 Ꚕ@y~qbE팹fn2cDjgpbj nJ8@Y앶r|pH !2m[@HS=k2%1\ezɆ6EH(wVbp6 扌LqYGzײ7q$D'?(Oާ//q~'i%`;/`(Q*tWUHhDP$pFoϾYޖ9u|oQQœM w"WO6}߱xM)cp~Ӵ7>*q #Z\|'zg>aױmh}ko};\__gϝzgRNMSUp΢r|02W9FHrhk`mUqv[=n<ɷ>3߳[#L!?)WbI*s2RH>=ڲizXhM<jaD񤎄, [oJ%,7z.8@6?]1wB"[[D c1"J>[/Β.6ź*)LjBqxb9 RX1QO,gYhЭTٻ<\wUs`[]3~Mڦ9rrKw^r~C:Um'Gt&}pǽ݇GK u4M0-@B53yXfX~? AF7MP#E3Ta6vUyߓ*_XӌlH[@xeL e4d%[e@ z>%!0* UNorQⱜތtQ9wQِ'|Տ\C?9O&g=UO?tWma(P ctAm$`{0wkcjC{N4Z3 RcGdwASѬS(nOƔ8f}YU]$YTZsNK1Q@/o NvJr6#RՌ1ؙC2b0 p֑Ռ[+˜(a!!Le櫦j(3:Gxέ'V8^":,5..w{[26]F6`ݙK~rmI/܇_VőxGҖ A؄m6e$k%} >Y۶8 0a=TT\}ʑxUq<o*C|oux*BBpqI78hm^(m#iEPt:LcJaItϳD:Tΐ`.(ZЧH!mjMM!F7-gfK[RN7[(9 Ƿ9F#Wi&.U ycdoA\$2ȴ<k"Ǟ}5\eT% ՏW_~fz-bR({(}:l 9pde }|pu#֜#**ddB*Pt2R%Sbp׉. IC#-QoRZs[)P;]pϲbL :1Ѱ⃇Ra=b]T^E.Jc8=|hksXU/;} r9@ckM$5ǠOeoMM81soG}uq]=M)v4kɉ72 6 Xf@9#Ҙf~D}ףdbJx.DR[>KB5٤9_٭fD`<` BM}=^7M8 j6Ì1;|p\yP !tRBTTÃcR+9!$b)c];b;j=„C:.Mտ:/_WS|j~:];J#Շ?zھ]oo(sɇ2V#{-wU箵A6UdWr@JYeVm qPa@*v0q_W=jU$og˭o:d 9XӤE )F/XW*:PL ț9ip<7?s1E*w7@~%PF?Rd/8X)ڒ@YS9g=Q$>2S⎑-w_]lϜslʌ\f3@8kuX,ŒȥJ/,^no /[PyQV?7Ygy}}6/))S'OB)*GWQ"㓲n"rIy F3S-shod(T5˩H& o}l_0s`>q^.t [eѲD};aʷ)e۷7ݖ2%:G|so88ەQfe\Ik1m}p5>8C6]%{-c=HTFaATxcI:w@[9hu 3=}fu ?z,WKc"\vUNrlgg1,O*~29w;ߓZQ̬ 'qkѳko?H&ڠ@f߶aG8*x ZaUDⵃHE @-@q}ЁBq +3PfQ@mY|Fǜa= S,_+EoWg PxBhq)>}QsC[p$cJVKbX,tDpy11RVV~x -}ˉ"p:8:x3·G{˕xK{'|h̷/+cڷ :}C#sosb`Y\U:OBJ^7?zv҅Qh=ڶ-] K* ϸen)i-z%kk\ZrE/ъ*)'9kljFqT1(h>#/`o,iy2>⶘liF_,u8=ĩ*gi/He}9?YZ_:5GϜC8I-v[.&+ŤX3^21B.Flc\]TMۢmBW9]s/g|gN# Νb D(1aE"DdoSEzefrHK*cufvqe_ga}˷| f[ߎSj~מx6WdVl%&D"Ҋ#Jq* %J6%m2bKٷe-3VhK?B-~ &/]Zr8}[m&G9Z{{ƻƿqzĴљҚ6,85)ZiXt )Fm5g} Xlg9[!D~<.U:LQ #_3JO}J!Lj<t}.`^3@-v!I]M5ƴֈ[*JA9_O)~5C),sr>xC Q ~ހo}o-goImz!zaHci1GQg?92W)+/iR".f3m0Dfd+٬^x L$qt]\~r.@F~u rCD4I|MSc`Ntxy(eVI ),nMI0qU 4焝 R(e6Ӆ5 ҁ*[6aL/xI\sU}HYv6a:ӗn]v~_PDw`ojRU_~ [tz_ѯ"~_w=Ad2u]rLO0e iSA^UuUۛ!ħHrQ=̞xH1$NMPlEUс<Sđ05Ibj*VȘxKv7j jt~ik$ϥ舘@)ouL /{&?;[, )7cvls\d(Z)xƋp,1䥛EY# RW59L"X@3<ר tjqR{iFHվ)f5\ -vR 0%T~&+=^Ul60ʠY4*j_k&%q]ׅ= #CӶ !|r#֛M`5]0ŇKjEPqmsɃ{+zOnnkݶQ-_"r?j? `tUO|֖8߫9\07;>7~+D]+n;xCfwlX!mqkB 9<3`\!TX- }L~ȨjWr%=3#d}NEីCuq@ӶtPJCŐY{',Zٲ}X J0uC]69Gssa5l`mҁqI|W}'g蟡%/x1O}}ss/BY6 1\&<+D%ˉ=)^NUjF+8W?7mDkږn?MUE*5W1*T"IlKwMCIM`޹s488=%YtFc:6Y[Jc^$N!Z+4uq$V58R#]) &jkԒ@cXi?ϋr>xNBiZ>Mig>ws[)l+yHm{]v(e~Myб"ȟ>א(AE+խ P0sBv#9pYUժд-kèV(tr 3~Uy(&ГK7UxcX8w,+Wcl3!\ωv+ eI63/\S!^b} ~f+I;^kO&+gT[pU״_8sݳ!߶|`Rx3&! 125Fq_mz]T@jiGN 8jua WUWZbz /4#H,s%DPYR;Ęx)mѲMf% P NdmܪrȣRiMsr -Nܾ\C9u(WhbXT>*T<^ᶧ(JaQܶ vt}^sxmU՗q:z%vl[叼ezň;>|[?|cmm`Rd,kHvȎV6Lbl>E*J3᣸)GAPRX} u F~{[kYRI6ȉM8bVKVl#\9w@Orb(4 }k^dsCnV TOmqM7ٳAJ)m1Fu]sƺsUU!Ƙ?mg=k^җ~2ouhoz͉9nI^w~.hF}Vk \U,)Vb&G92:U2PBDY.!? CE%.o2̱ᖾ5|qu 1p@s޴-dK6f1L=pTzKP$9"K5SU5` 2zMa`b90yVJҊ7iznu]?ZkxtP%P:! Ft*ހ_eOFU IdC.Ց?M]L~rM?znun渴|* }w/~>#6sV;gac%7LW%ihc0eDR gD]~ }qEŮ?}V{hW"0=@8 Ce.p0 ŧ0n;FimRY9K17^i%z2Syˆ'd[Ԋ@ Go`|۶ȠRBJ8t!52Y/i2w[nveA,6C?*~t,hœk wݵ7xڧ"s֖ԚiFdC!*fP˽iC br,y㊟Ϧm E0Mq_k5)p$sjE)SG$d+t]O51M)zWie1K}Nϲ͊\~f_c?~'WN>1FţN83gͿcww]Qn|[o߇)/|󱳳s˙sg~WdOSk@Ɓ Zy.\i&1m"lr"3OBS7%yZj(VCT* ȂR+Uu_5R EgQ7uJUau1`l{Xip@Խ{l6v6 ΁ ^? lmlrcn(u%pn2N_y%KK€~x|YE]a-1fUA&*cBo6]IK\Fģ2t )w@F.Y^c1$:+]GuEn 9`r'VU@躮@$ M*sЧ4^NS*\7UI6Jwx"q1&:u*_x1w}^4ꪫ={^-Oa}ëo{ eټ,i6 2P_)wkDL5Egk*su`:Wu\TFudQC?0ݍcY(|sHS. La0la(Y5F'0}]7qVK;:ke,4 fS7QPW%i3蹺GK~<>_S.kC{L/I8szAo?<˜h͜FAEX *(C.(`k->/KZx"PC,^k2J"s#5TQPfS@M8mbzzf9 \~+p͝I@XP^| uzW//u]9篾 Z4MimvFgqWX=nox#oկu]~l>`kK*nE&-DAOڢ MMȂR{K2w:&8g<]pQL) ϕz(%RSH(^#T8̒'BUWHg4W=b"o|吣Hi9U*:S5V%5(Xml@mf&AL M r3o]?ƙ+n ]xDֲ;fSf dʼnԶ>3ۏ^ ?+3~=;_ ~sDvpd $"M J$A gBh$+h JHMߏ VP>38a*B/Kڠȉ UwLV3?UBKQ Adn @uCmIN&s){9_|CT߿ۿ^>gyEzK;;7s]|ٗY-.)&Ec0ZXc98qIHmi&.^X@$8iWJߜL39VU]BS@X|ڦުW'UuUi! ~)U!`_:Rf:\1|6+_9n)H#yX0dQZxqXi*|g @V H|M?Q$ l[r* W-^E[xOZ}\+K]ȿfΌoiіWohغ:m)f{tw4~w_` צube1`bdču iMTGdrT!D|5MG)G} hZR ?^Eȧ XuUa^{XVmU2va 2 O96̬Hyk3g5|!9BG}z9kst=^wWsxCɒrPh"oľT`9m,dʜ< nb&?jR!*MrA(0T޴-lhs >MTΜ7LxYTx•R|>/xJS Ku@~І(يy)!"ͱ(ΡRXViQ_1)FdC)ldM8'[s (o6GDv(ޣid6q1Xg^|6t:E7猤5T -pa?Ʒ}-xŋo14i[)Ac[c P*<UpVա[0.ObRq.Wxx1+_hnR{}AgO9e,sRR6rݢ0f`ē.KBe%R@ێ!xUGu0zcL18dA,k9JVj ᫊1̄G[p`EcGXsuw;XϯxV#Pmy *$@f8 0|3/7v  bJ :$)hZx窘Bw %qi¨[K s~JAF3#Cr L 4 `fΌ`JI3ڰEq6zmraPJs=muQmRN>;{}+kbY\.\c q>){t4,YaV;4I??L $ФD/Qi^7)$q%iw'qJț;"Oڶ.xR@A\;s'l47DTUU~܆miH @WmF{zd+Ydێ5S} xX+If 1(PŶ6e^/3O % "!fP$P7 _Cܱ{:!,`1,~|ܳMpjn;w0v}dhoo,?:?t@]mk.IOKXFsEw^>~V9Ltw&Yw(I~y`G<jSJ>/ιkeHiȖCc,sx5shC~ ,箇ѓ^"mCﱷG#\ZIʷpSKJA9$x%N)?2ܿWPJ[[U_U3O}jk3?3WR|X3ǹ9ڦ}ͽg/=@:j$"a`dʨ}QGʜqx㊅}R0 FHZӶ{$x ֡1|U]q 0c"8@ѰL6H=Z 9c>JQf8P*rV*Wa(L*ryLڌ)f"B n>#gE?m@"vf6H;7mg9r1tR|UZX]w0shJ !HoDSCJ9e MȦ}b_t# -7ihvp ;oTea2<9q8wn|4>t>=a5$qB`S(0l$)u"Vi| ,H b/SZ;(7] -;Xuu]3almtf'z)Q9ghh=gE!e(W%n+b9|8PD%z衇1*0(1s5-fX9D131r^vbq@4viKWs/uI䝳&rÂ1͆m]aCQkb@ut7TbIEڧb<z6:FHh&d)}@ŌynbPpg>rnca+RgLc( Xg̵ۣ֪֧HFG0SYZִ-UU*(U  .E oVGaJM-e \w?xvG=Ƙ]JϻDHKK)3-ǀn#FPκOX&m!;H%[$Ǣٽ ;7Cf)eS19aelu0L9xZ9g2Z(-oלiIᇝsu} ךK_g?b]5??_WxZGǹ7}Cw|foq8ڦ) k-t&d!s蹊9"Zui*p\Uq`B.a$r!PTуdC&*^ki65+uE-D̔*Nw}66㈓'O!Pl9]Sv|΍!YDrM]1"s³Jtuҭ70&N.p@ 4O)Çm;+ɼRDX\0T8(5FO󺮩ݛ aqZڲbČ-9%Ex׈[[(0WW:<Oi4Snᆫ[u *i%v5]n7A aXm<;<|Oq#+|t,ϼu0X `5;oTgZ ?H X&-$> fk~N:HgFPD(,oQ@ZvI: "b|h!bDlU[-%! Sh1z|>s/+/z𮷿^>я"cOzғxZ-ǹzG83jvd6x@ԩYcRJT!x:4F)CPj10**(Al:Jkd$(&0$@ )LhW۟hz5g]E*8E>zhJXz$]c<ͥXxH(%P9[ hIDAT ϛlFkʥ: ^t(hڶɻ+[)ǟ7rCm{$dt]ZOVLbDkVXWXdP55L 7AxIA3|ycf% ,儐#?=w죱nSawfT֢m Q0 Ƅ~}D?F,6g/8?bo9b"6c/;suzz%BqBkxD+@m2wК{79~P/x^mQdy?吅M B6Fab'Ijube*Iub,1сQ)>M`"9%}߿mڬOg= Z} =6+}->^ qj?mmg]}ic4CpҚssNEKz4 MdVfZ]w݅sf:ַկ~$u?uЍU]u4%$1uUhba \M7SP92S*WɓXTe?mK#]W.D6dhv.Շ6[ƀR0Ζ "Tv4Ub0lIc/ba u1 as’RB MVDtfwLBV-F?]KZ16`6cGR%H+鰠Q!1"<@37:k.Fö7L.?RNh FÏԩ|9nvQLFh\#~M ԽŞ$S+T岧Lr/2jwSbAF3[]ih}Xb]U!2J"DѠx Gքfr~#:4DaOe*쉐<c("ȑu]a@14/Ni:h&m0@23 7kgyLg=.=Rp#= wy畾CxCO}.~#g܃u4y7ݦ|Zt%Ddll~(E,8EЋF 1`bIIdw VxɠțݲA|Ȕt5X" V4:06!aF7i~hJnID}`&%mozBݕWW Dޟ谄V52[HLёt*FшS(=>3gdYe8ϖ"hʆ^,\v^L9~ eVz\M V~hSY{J|Y\oWBGu_}fo4-]\!:ݶ4뒋t2E/qh CO.D8_ѪR q3%tZr۳*#Y= Dr3_4 Zť2ʧMCG) |W97:l `z+gkGZVKJHP*<+ng{&Y /[qcmdA7Hįs`,Lkg-6ʀr0 18KkLdiJF(;뭠 Ba}i(t`ʲy[Sh{sQ7gc4+]gIo)Et}}j,6MI+\/W$HG0 dST)rz846?U5Y(DT m>Yc^8$YPXC,Cьd!_rN?nux0 xG7ߌuYǶOa=1$1r+j"/ - kٯʀr娄T!ߩD MqnɊƭ1 T4żfO1Dnc;nV-HY`hSϔ&W_I,aN c5E="\:IB#jI/bkjo޳s^֑𩪪Jb?LV+Ank1k[Ҧ" ۦ|^;!IS apKo,t9/@x32 '\'OI`>&΁̻..g en+Zk8md. -wwwJ_MX@9M`gw*cVNxa8u 8(#g&qbD79јEI⃍V)(|J^2_]9z|uUY"w(SȯhMy)~O¥7#A~CS7o'>zmM,P0ِ4t8Vd6ې` 0Giߋ_T/ Iț91 ꦦnk+ cXB]2:<6M 9@ˆS4XcdjtdIL<1LV!Mb)+9ڜ:$.|Zb !ا=ia>G~G%xҟM<֯x_?ݓ~껝`,S J6G2vL^Yyc,՚"Ňk) O)eʁf1 4RA4!`cHb%=go0XTzFdPP~ (3RX, MW*m4mUC923}P>Ju(XRD-Q׫\3X`J{_fcYcly=ϸٓP ˭Ո\.!ejPp%Y1p\ XQ{TN1@&P 6)(k(*BZ΄eq8l\ԣmfY6+F2jN\#G c]CSzzȦIE(D20=إBUWo6J;8Pd@\@Y99Eg徯V+3TQjN7ӡ At2t?[X;^t 졮"܍ }IJ{~ج7CĄCiXG@{cIo1 38I{2P ;%]I@$Y8UUM;k0K$jbz͂:Ōzzl1 ~_RoYALRwp j IeDO~Ժ;p-zWl6WR|1)S]9^Ǒsj8#eq`.z*m|^lf̼YѣVU59j2Ɩṿ$'LL ;ZXE"WM"Ȫ^UN5;]$9gNM#6`fu)b}AJlƘ"9- TmJ;1xbȋ}HTݦ+PWoX_8fK69PWuA&~N]u1a [R4 RfmC,-o|ș#^ ql"7N<Ƒ;T~u"[tIBեRmEf>@Lfӊ.!ڌR r',T#D5#WqD TZӌ7:ѓxP:;=, Qe\eq h$`=ѳQSBȯ\vwwH: 8{,5}^3/؁i3}v K;2GC#\?3|}; !k׿W|p\K)|7Y;ysSUCDs JiN( tŬ@'"ɜ (E Ő `!%)L6Ն+RiS9P:MS3DLY澛)8m[hCQt \%ML$K/,@]Yw=.\PMsW5Y'Zq0FrBY M۲{(\ibǾe''ncX:*"l$|tR;{IH .HoQˌʡkT1pStiXdfio ٌg"S9WUЖZ2y3E#i= ]ϟHp:g'PWY\1p"N>j\f"uI3X s/zYE[S9BxRxt!⳹eOHJ)xu,4\3 fs0ɁmCdcJtL{" ̛ y&(iVNwpUs9}o'22PU58Uc0٬ VHR|!| gxHfS*o#@1)EC\JO3d`X‡I+qBˠvd \ b]$q \47mynJ?4-Xﱢ6lhj;[iJ.QX sC5#/ИiYdֳX)%RL ثE@m]9CC{UD{ S<!@7MM< hlU Àq؞2lGhRJENO(uxLGrXc\Sq!)ew_LQ5)aBJ@0|XhΊ'RB[ר[X ~m(mgg!/<P}G"`C1thihr֦he#-` (4q@<*0I$:9jJmJDQ{ѝ-|k |ig`Ng*cOm9t4; CݝږBqΞ;f% y-;#T΅~`3i[yPZ[n&w%6sʯJ6Fc~衇~ܗupW蟡xtzoy滻n6kl,>9b-Zs +=jRվ\.)|{N afC@my-UEӴ ۈ|#͊a3%E3eNeS(1P&O[LicF[Yn>1Xm[ `NiJ(Rp:!c"F3r9T2V@<7.h1F:u )e, n4R g]( #!ݧ#vi|kq¼Fbc(,I-[`XUfa].ЗޣiZ8R;nґCf pRݦpf=D{ꀞBг~kնtWE!B/m42,b_(ف"蓮2|h`rn1q_awJk][kǔRz3qE:?c+#U]a>Ϝ3F׫FSc;=+TUq[d_F4Plf,񜸅kaxsU@f1@M8C𨛖6 ވdLyS do⒲ 3Tm%*W"(Jz(PeFU[H,uEq .7ƈbt⮑3S.P$Ux]BI"s,̳_,Ԧw;46|ǒ.>@L9(Y{i񀵤X~l`Nϴ*?%dA`dj 94Df*Ug/\3F&j";/B\uϰt{ Xkkѡ2 A1Cޔn5#g[ X$d!QYGHDz =˭~:oWxGf.]AuŪGzֆsh~?CKA/z.B xᇻa|\E,uя)N']V -֕Rh6en<RW$,jnG\ڪUU9m $Y/Wl6&~cQZkrynOPZ`X~  (&\swCF y䍻n[J\.pBĚm(rT)9Zr!0l*ϻe$m6S 3zkT5•B᱋³-摅XrIxZ#s荵Yh 3ݍ5K7c0ؖp)4gi'?LͦtRw.1~'ձO@leOXa;7 0ŋXmy3W|ȧX(H99ZY`e*/ wy)Cw ӕ_n]{(Vx╾K gtMo3?~jO{{{ÀfRbR=T~5,Xdw|Blrq BGVbkn{6MiU~f1X0Cf8Wa>m[gsv@f"2֐wFN)b6agwAcf1|1Nw sػx17 zNkJԮ͉| <4ES0#gU.mꙫ|dj']Va%DLʬ\|D\68-Hv7?ȊT XƑa6{[n"Pr[Cd{tϋ(mC]s|bG!ŠoY(0 ph熢UUё0:K /^$"NtQ[0&Ύ'jƹ ʇgyΓ)]9tCݵ2 Vu HsPPo}Np/o`뺎L?[Ou,woD6jXXB_."a ɼl ۳-'{cn RsSXbNEI,ոld1˼ϔljy;Lf|!rNe~4 U\P|d+џM[z.vMm9f6Cߡi[VkTb( I}QHpQ* {ow=A>4qXjC?)gzWRU#fN%f:s % ZӜ6FTMy']E=ׄP7 6YƑ#LSH=44$*UB_2r _q|ۚ)׌FnIkꪁrxU|HJhq(XpQĤ g,͆:R)fD׶bn}V+f+UR|v%\E6liw<>ckLY|G1Fm6:0H|3zB a|q!5Q)K1N,XUUOќ$2 +'ʜPZh(a.#52죪j4Sg Ҷm;zR,H8fl6MB2,0&9Nijg #<ϙ2fYˆL1""HfXM >iiP--UhMu''5*$542 Dc|&UJc6p #@"Yۖ/!9he гp4 3X''](/R0 DuRM=ͻnZ eXÁGfCQ^Te;E XڢVH9GOc/!0J;]Uɉo z9-B~O9ϐ}e1W~;Nj;(JogSI0";;;:jG>PuO8b(Pb@fy!&jK nk6#a[~ 3Ɣ32SNV@BiyHa# ͦid;豿("@IY9 y+(@Q!nBiߗrg9kuśkVض|$< 3rΨ?MҾe(j[I0:Eյ xV1VbR4eleޗBuFz0E(i[ /_1zaggŒ7I%?} 3)ddzGz 1#_Ņ@VkL/ZFNJ{7iL*FnK{S~,[49]\ P*κi0ĚQcsw`?܁0FcGa@1z>\2]EȪ!fA) 1Qdm]U Ú``m]* r3pFb[,pqo /Ϧy"ROtPt 5:9_9PoTVj.^a7ވSN,3uEX ߂r =y5{?L[JN8*6 DjE.=o54%_qA9O31Tْa*WlsJ) h J=ڶ=*7%{YGymUK4ta6#2*ryɍPRŋjNJࡴ*~zF kޘCŭSI?9!&yzMyn[mʼnx0n`Wg8h/a9b(G2e(9 ƑP!C F~ rN躾xb329b䖶n%-D0: d#@~֛ 6ka@S#ezB.r( DuK"?ekXH<Ɓ#\y/m=`d\,Dcz};/~bo F+>QNO~RH?9[n^R*{x}i| pa~_^=G;/w1:D@-Cޤ2Tpc,lsf%kde̲rDb$*_Ak-GR8 >+W*{(hYRPRƑf5<{/xURLԚPQ( ZZ3jHuA`Eh!Ys&\l(?½Jm- H46bìz.rECJfѝ*c)~ΞA_U59֛5s<6pN;:?CI­9nQ>k4Rb\ݓ%NFBNl>P GZjO KQz7)3 QMJo_(c--xC! :u.ﻭH)0б!3 !-ju 2rC6'jҥR iʱ$Cp`Q;;d}Z:l(iCРp*P5usJ0PʦG"0M!U2%̐ϻ}@U5sM*9c X!Gŕw# ߄U)bݳlR*O Vd DF2X,0*` 9MCqbDI!s+׼Uۇ!F[o3vv躎އ5h MOяgud!x+\(ab QlT`{mo7cÛ40u%I"!mvєrN)?7g32+X̧vvvJd7x#N>}vo!uW_'|K?wu}""in|I)Xkԇ[sxsnMmđ0`ڦ6Tlۖ7H+pX]P޺֪<re5M{. +A]HFp3k uVEM0ܞ09*6B"W}da#섮/s:JԹm7JIn: rI~O]D}bwD6da U`fȼIbeRs'0tr8D)٬IO&SC}ZU::dCXTk1 6pۜ1v{ﻎ\Zc#ۤ^aEBClg9ezF&0=*<6]ccW;"zqڞ'&YK}ҲnW@ʩ9ǔ}M>)c6>mib{i q?u߈Ͱ_导ݿvќ"ޑsBDi)2F?b^kO_d3O$)bbzEA8GK7 Iڑrj)0k8Aٔ#xڶ-c@LrPD)@0Uq1%.L!1}`U5-VUk1 =Yf >d2ۦzU0Q,z ѮH5`$VZggخYooxC:%ޮ$JAez2jCh9Gˤ##gu!Яpj3ON94zp{/۬!Jr֠Jޏ#̜Q[!DE?4|>`Zѯ:z}% ~/=Cw|pqц(?j;uļFr1o@ָ:ۿzxX^.W, u&sDl@&E$O,06ݦS Uܻ臁lAlqq{d+ vfQU$Vڬ7bEՆNy4&x3%&8Hl&}qrm Tjb$N! zkh35Z2/ x!KS>=N\se30Nuh}/\THgQ59'53iE%ۍݗj3Z|TzF#2гζrX.|ʜ+cQU}K7Fq=1PR w_br\fm);Z1pnr)L|xI@{QrڅSJ8&mzYoGg#]wu֚zn+}xC$VCY'?>}xUuI.u)ҨkQ߀ O?8>g5r=_yO@!.U|Z&4[ȔpN lD"|@Rih5}DimZ̒luD#u߬7u.mRLl>s}?2c>ߡ)cXNe{( F1t(m1R[)o2)L)0UUçzHiO]'XnnO[Ξ= Enx.1(0b=g(4CÛjWSϽkEFq+g70\qep cX!⚫6m) $>D lZ>qZNFəF0AR-DRX{&Mq2Z)Y-tS,q`J|ٔj-em<@S)ҜmZд 69s.9ALoO^9KltxctK6DȸXPįD+n`avt$OxP.?HJPUݺc*OvuC=xz+^7MW=~uM?O3xーwuC?\#IUoHVpNFbg3kIxm!7533N\VJIaEGr}Ϣ|&K/[fe ׮9l`dF,+ Z0RH@Hj  C0/t)MtlLl3g cB4YF3:dH^'2=QUW*:؜! RrJ0Aa+%Y@/ֻȯoIŰkl|*誊1z箁†qeT)%BVLҬuq9EUI3F_kB詚jk'ɇ1F]Ħ&P񖓭M?9gD2Bڎ;Y )_PPCXgѤ}BoW_%_rnз}^曞|w}:s?t\"%T*bT U/r-7WxEYnU4 a jx֓wmH7~!;1CXVhU,%a,%hIyj6%54qj./[%UBa"LUW_U,]J)D)̸ijRb6-ֹOrU@田{aUϤ$cI8B0u=}1F \mڢCcXpUiIV{)fڲrsu3_'Kt@Ϥ1%Tp%Q/D7GK0JkVub(m46='ѡq E*χYKs9tء3_\`Z]zr 9iYH0}V'\.w-SNgUȑxO婃N<]c|bj>[['կkgϼhUY kkyC֡[C#AC >j?7X:!,C)sf <]ůoݧ“3B:qkYj*&2 #,WoT1C,bGdRnjC>)2j"d !YxJHaYrbYI-3rњ!hZJjo6 eƐ|*NmFTU*EUl`S2dO耤F8~$FRŗ^+i `7UJ)Xm!9Z"hE(XaL`!⢻)^ J؏Zq=B0~:xK^3?3/ym{j- RHCAF#F-g@猗:"9hїU ~2=aI(w.bYn@/B C 1TUsdl#ζhbe[ c*qMݠeP 4lC(PyQ5iJ&@l+YKV18s, S+U1-Q+<$sҚf&6X({]#c將 [Qr dD6m+I(r*,V(c$}`z>K2""l0p:YET!'Kymg)BDtr=qٵ"hR!يŊN뺼'bz.+s%C9 8asE|㿓"?އ7jWOX9g,Ko/>_YO =C?_^|著};wo!#IUx5Љ` y"֩׼&ٯ}&ԫxsRʀ33,]=);_wQ 7y,n`|r2sLQ{:OqQlƲ Lkb1&9ͳ}\C;rF? D.14_V62V@sH,"(UyjŚK r>xQSӑ8(vEbl6+m`-<Αs4Mh[0t]zq͵bZMx^}=ky{b @cÉRbdP %M1I 1֮zIH$#te<%h }?3j Ftglpy,K2]7{@TXF4vɗl(˔s ʹ닅D_J)u]c9yۏ_[V[qk E1UfŲّI[%lňM?@ +¨Z|?_[074//m|ߤl6VĊx|H_? @9܊{t\IqFbc,*GߑXۥ/0N34ǎ~cf1.܍^si)ʛ23u߫2?쇟x`V))a^SgE:9^қQW b ?d.j'0-bu'jp]oQ8qYb k WjB Y1 [dYrD˓&J -8Uuml] L]SDO.V+]<1qZzx>g49ޫ,9Id9b060m2!v`gwoefvYvC2`28bL3l%ے,+:T:|9U` ?{VWUWכP2:%9D,tw#$ fCTA_ei (豥k@p[eIӑ-%~L#d}̌(Y_H$t} H&IX N$ r^TjQ@4.j/%fk-[S0g\88LMMarrN]P Vs6DGSCQgSjo'R4n̜9Z)Z{sܓk.wy,;v]wTM/&F SP!jZ=H+N 9>V%5Wʉp婐" ͍1kDb ݁x2@Iof>=Gף)xSPQRqpcN|0mU0sLt#O5 ]gJG1LigF,#oA`ַ|7a-sMuKR/B;kEPI-_)I(\y^,Py$fź<˨rV.v$$ 9E_!G:n|T3 FGv N<ƣH##Lؿ?)ە&>Ec<ݣQ\uιwyq%'5Բeˌ1{]X7Ûn ^yƳ}Z^ڱs;۝Zqd϶}E[]I W0eLl)\~bEpJ\m~hilQ0=DY'EI98>7U©DFB#iDȷ܏Dq<@7(bX,\%P.Ef)1 ٲr{?;|r΢̷׃WW%FFHT8rAlz`h4PtD;W kG!}قs6"/ YF.VţV>?D!9/R)iF#34** b)49!ȋGQVwAYiqr@JsHdk T)+zQn p"5 5(rrSR4Lo)' u+m c4?W_Pn˜s_p]:P?!(2)2B˗?ٻ{~/f/88yӰإ3g~/~UyG>WIҷøb%%F1-sjsP6MUx5Ƀ:a~'3Qy^gYFxN->}HK֙f8an @%Z¬:èh^sw sT8{_І'yl@2xyW/)KaYGeFSrBZ Q'k+_A=g܍F^\|0PқvVtzY0'c@(Hn uL0%0A$F{U9z A5[FQYA0e + pz^Q% Z"XB2ga5D?a*#!Qv{_<+vze Y p 5x4S ],֮jI3liS>{ֹ9w&θXd8#ÄS$f@2jE=(Y=v or5yR` ޹YɠH9@k?ك{ڸNa WK%(@9W$A'&3R$h.x(eNV)9y:s&$I)a $i͎`o@t$dch4EY`br2T';NR*wE#|_ UN]},u[ZH$c~?]kƍXlʲteYJ3)Пg"i%쭟ڕkV>;헖e1O2Ue W$Hc{-@H ѸXy,ӹW!s} > ^ -%#?[c{{hD⨙zE'3AYO+s(0RKRMZqmEUL#/h$ah4 ~eQL`\N -WWH{YUyfɭT8Їfê @<02pJvsc,lI0T'= G0ף ffב( $1&|W )066*u)d%&Ilk)ɬF0'4Ei(eK̘9yQn#x_,$ v*>$! XV(fEA)qh u6v w[ku#˳o(."Da0]{}v(LҥKOn^d@̑x߼Glrՙ{}g۽:uY4O"8R(YAAYGY6%.9{^}q?\@sp@EQ ϻ [UUi|䖇oGY xQ\9Xx_Aa9Z@[TL|CB-3aeIR?Oz!\iCB!{#cEA] 'I@{aY|y%fEU )Cɍ^F5aO(x'p|]{Ş}{uO=tnZsk$f4Dۅ%i^p~x \|b$A W%] E _F ݳ x6r'! 29$Zg3VaőMBf\yX@ѱx3, Z)j>Z(I]iL%%[z52[# WFTRdA_E!lQɳbHV,;9a*!Eۅ4RIv{Yk3߼dM S>) {nJ# _:낓Y kn7x~[kxn12҂y1=,K$ +?Qz.kkINVB sk  kZlZ<"*V)Z {$W:iLMMq7DmEG,0 ¹฾o>Z>`}J=vu DVd(:ꨣ tvr###,7R<3f+^2w]{vI= `+x]:2A RFH .{ VXO\}ERoJmZkj(u$^ǹ:noZ OCF1WHKigsJFa]تUi%]$f !L,lI*802:,MD~;),r(Mccʀ@/"o)5m]di9"2xtOOMS oZ IFcd{|W, Y*7EÖZ(˒Gd ;'NnTj)i>$M2\Q@9cEju:S )MkYM 4צ 4eP˙u,K-c꒘8}$).'fi{[Wа s/![Y f_o{kRn݁]YnCkmsRa~ӟbĮL@@3-;޷bϾ=/lS[!(R@(i$ev훹;]}<-՝ЛIMʗROS_~;'2@r;/E12(-Ŝ>sf6qY 05wK9nE/䪔$&5#shbqt1`P4q!ͬ ⶰBg>FJr\ٖ%IUy-t_zt?+Wl.cH, '(n9rruL:ҁ'vWjЖ%S ` yF j#YpRcJRtBh  B>p2At5@DH@)4(XtAL|H`k%!X<)"@JLOOajz^@M *JyRH5+(kݷ컍a(AjYfBXcN-zw)~'I ǏK_zoz &[K)i"`"=m0Fk W^ 4!Q53j%jżM [O㣷Ǘ)̓}En+jKnF*4G 4q uMY!Nmʒ`kT8NP4vΡjr%Med-K>`piTM+[ YĔ&йƨ%KɈO&}(T1ZN={d4Zp,'4 o^aVü_%Itp8>g}wcNcKs}{-?GME+WYK/,_+ls.߻o;ɞ9j(^JR}K):W0Zvd r s" {:J)lMCuǩp?hC-zGnZ,s5,‹H"RYq(^r6٣0> =8I#Ur5n2XpƔlO1Ec֚ M2+ Bn{0ī9`jWDGhOwژ"(>/ wd ZϋT 4xH' )n nGQؖn'&< dy[X<x h zVz8njK4coBnnnaA4dhh$ 8AQU$_[D f]wB-Ot͖#eU`YȲ$N=#} l#cP]Mދ16Ap&i$:BӆɎ\t9VaXM5#R@\YNub-<ךҒ_EQ(ez.J>OQkO{$M u$%=u;Kx(q Z & Α#չ(iv6djA bv.[0?gu=:t;R#n )MT qOLg`ٸwN\{hw//r4:{s|;. l%1`JX ̝5xGW g)^Om ^QuP~H%`&7]+8VzNY>xqb$۝NvRy=zwv'o##Fn7PrYD&{]9fy9Ң,[ !lBD_P\H(sRJ hr2B s 2H XN':K*B֤ P䯝(ZสOTy a(p6 kըwK ϝHVYZ+H8帍O-XE_Ot7f,/*3\{u&ɽvBIz`AHMZu;]YFUqs÷3E1ɽV q͋5f/X4b.29Yf$Is'pǭXZ+NsXR|TmHIB0e1XBή8z/ \t"4Q-󿇬bJ|V ݸug8 *`>q9 +Vf[8û+8XB: biNh4Q,@@%ST5[ dmkkmxTҭ Zӈ*@niWUIdYJsp/@ɣ N3/tζC9UmuQq.1>,it( W^ D1I:kѱvg,>>yQ BPL?s›KAE&D% ,D{l1:N_d P#}S~DK5>՛ *[ .ħ>)w8P ^_c-͙sg)XئKA*umhnK.}\|xxOuYct:dJ$D2XјMVވfeEhyzot)_Վ'%,xͪl!G(nY>(S[POk5+9Q˺Der"s1%G{"'Hp)eHlLiBˣ[ٮ2r[ysׂ4kB/ =03`*XcLAw..4@h!MSH!166FIT,|4:64#wTrY5[r+F{9e.w=ڿ)+*RY/O8a~9 .B;::,џ[&=`挙[q3\{Ϯ?N7*fj|Vٵz=xsf$3+/[cάuOၟ<:X_9!Rac#nl ]Kuacxg.D>s?oZ, g N<+OFahsxFFGYFJ-dO7v`Thiڃe Asx*1DMd5Ns&HhMQ~e,51k-y4ac~PwH력"]CK7ׅ 9 t$VJG3:8(QÂ??M695?9~k_J,9U8ްwߞ?t:GZ @"fMH#C`6%/^ ze@UZkׂ _{ >v&}&rw WR.Tlpˏj^眵x`^7:;k߫,QyQ"JTq|o}hy|J+ƣfꪒwpAMfziL5i0o,K;Q6̅,ː$RI R܆&p$.xg fawYs_zC4B^ (8i!qǩNƐP!!i $B.F]&&&1>~5h0+c-ߕ_gQ\f:?)Z5 گj3vW }VQGۿ؃q=탹37]x$ծթhak# xf9RB@h߇߱eHb_<2$x)3`=2.bz2I,@-V0th6[:Tkֈ)[l'Mk!"EICh40ưf D(HG9f-ѹ,UR1DL4/?n4Ip󯍡I ' ^LǏ H:YQ {^O=cHeY;biPugwqC ^dAiCbHCf {t{:$;^N9 oH{:GI3Ծ5^p~Z/fsPuJaD;sgV3^ q /k4!HrQ~3?߉o^L0ҷZ꜃H3Zgg1C3Q%XSЪo߇F -qY Sfa xq~y^Wc9fH7ͼV8%HLiV~|"}~O߸o?ꦽ#|[.G=yH3@ӆK g8b5NZ3o"eUkׂR)q7_܄mS ӘXxEK9~|LF߿wǦk!`FSճ1:cxsq{LURޒ)K&ٰPJ1):@&fEg|NY}ddy#24[-D:B>9 ʹ0kͯӝ)GyVE//R,]jQERU"'RFWZAXst <#muil%PT9wtꛟ;$⤁CG,@}yNGhH%fS%9zadq[M2VtHm N8Iuf,ƹ5 iy|Yqʊ웍81c3k޼y!џϻ.+g޶k,0#v^!c$Ry:.u/Z#Y/֧CC3ʓ@%h*(.8F5hl*IZ#HӔ&+90 Q>);eN7WBLCH,-Q@m+GJ!h3ALE)AySH@|uDwXqJPgJ>q#$P%s@Nm(aUνRJHȥ^y[Z]vBBrI/tz=t;]vVɷV`79s v98Su(˱YEYޢ۝W0\ ox~7:kB  ~+1b-]s,κyioiwGMM(j8ߢ$,Rh% `Kt=8c\8yxa특Z잒6`G:(z<(f;_fHFusW_] 綂Ya{>|>sGB6=}tMapJ\~i*y8ܲJۡUc-m^qZz]D¶ N˻, %Q렙&Y H9ph5ta.BB' Y(q=AQ*Z-2ʒ4 S0%yVJLv'! u5+HDv~n-RAܔ A@*EߙH#Yulh]7|瘚t}=YJUJgE)9cs]ɾtl#FCjqF!LTnw5Hjt%WbΜ9?>5E#SQaƌ(8p ʢdx%Dm}QŅѹ<Ý*׮b)[0i7KL{]1i8~-o޺uON,JNZifB@i8G8#KVbʹN> 7TsrB`(y)nV|Kc_1/2ͲTExeqa8qߥ(÷y=2IP73\/yrDɨH@ (W<spQH%pۏ=(GYN/lЌ[dM} +I*?CHm`dt,$yzYRH4<ֱ$kd7}2Ah=SКS|B{iqc-V( g \EHc9|k[1`td4c F(JkD[ت'18!_#PXA_v^])|rFᚍ *_$!Cx`x!YC{!׹%\by{cnIcȖ"oqCշڰah ,Ȳ,ss}w)~m 7܀׼5"³sڽg7?7/r \7LYJ48b)Mdrkx~ >w).=X̜ժc={^Us=PAQ&fx`A\:|L0 P8S^gzV5xq*~RH<n߀/|{z%u+H-g0orqґdn?q@RB鈓Qx?}þ,%=uE.# Pi H}N(րwD8=M7~58Q ȃ#<lvhmu7H%lB ˚1cֶbB1ox^Ox6[W/l˲ޤ›@HQU<%]9jG( yA*KpҲYO/??w Ղb]/|{ssPWFN'6$U"U#w|O'7 m /oG/wÌ.[_y_5q@xs%$Q5fDض7C'zՆcw# y7]/+EjZ) Y$LSZ'0bVS3:(5ї$Iœ[0xѿד*$UbF04!`= UeO4h+ ~@8c FZ-BJnIt{h\ WvT}yg/姥(EL/,K~ZKBSO=~k?r/đG;%3xMo޳oNw7$`7l)+f! iڅcMjpGuWsp@ԪzzrZݳ;pmuG6{8X0pKVkoO j;/)߻w/>p0ڞGmNXRP{>E~Ox@YeDQZLMشys[Jdio;`&SROs!YH 4nyIBI&г،akRI-#,Max9HӔ5i'1^t:2Nq qBsMPTNeJS@J/yBT§D[0'߻q,%]u@qI 6J0oWJlyc-111麒dEq1%W;l0) pfϝ_]?v;Z9ܹV/\0{qꩧ>ٻ;C-~Gp]qn*ZPUVB)4 1u;rUN]hX08A! OU9=8]R|Mۏ@֏V]  %x%+pK15[_0g%PTkKJ}۾/nk,;?z .|1/p\ +sRBj n6|GpəG๧C Z@1U< ,Xzհ )7q8aXV^|tRsZQ寔Bg ,V%;!Qa8JN|Qr>F&Y c"IQ%,a4(gP}nqu֭ˢDYZ=P'LZ]Q}CQtEs-v<- 8cLp8Y3%m9w+xs~|^˧'`EeSkqC upҚl_ ~+qxB6~I$^t1xU許o<$3BCΙ;o:~=O; F4.=ms;7<"MSG"iR~Fl٭s(sA[kExE/ǂy#k|vjaw,Y|g;q-n$3% psb֌%Su*!OO؋~!l@An;xESf,Jyn~Lr -0G=/seG+VsE3JY}`.&K)q!ZpӏBk } Z0U|K)d6`=M0B@0{4b()p3Q;~~i۲uldd$$5%GȃxY\ @KipBePۥr;Y[يLYJt2CB^Db[fAƒR56$:yJ^Q WdbAhpȳ< YKz\)MKHrNe NV YId[(pe}f t{]mnQ,;@-2S@~,>uSW9d@~Ɣڈ.k"Ha0 #m?߉cSO9 /m[/ܺm;EiߙT7Q&nUz.+1mW5/XٳZn Рa7vA<@a#O=;834ϫѴ$,j6'3!TRp+;l=R loZOu3=0H眼pӎ$S߶EuNA` K|?oćnۈ$OC_d)N_3sf6 ñb[(P{'@ 3utW$ǩ1hЊ],j(! !l8d^ijmf-MwA6c}Eeʂ|޽b*?Dj}$1$(E W۴9]@'vi-jNx$R_fo*7Yk-{Y ]҆k~߭Я:vQXh1X57/y|Ƕ<01\:چZJÔ%aF WӎҲF#̆1nCny1?g7qIj!ԃywq \|xkbɬn@^K.jKp5G ᇿ܋T;eÜ1.?g!^8tNǯZRǧppw;6y.'1GTN[?m6 p}憠<8ki,ULf$S R YgT#A€:hz2vα)A[fi(X84$!T`P'u%,#8R;cu+?ٕEI֫^N@Mh5[0}F{YdmV.Bb`?r/MA< 9}ܻVCfns.=Cp opʀ~s.%˱vjYuo}?y|ǎ?V1!(Js Y;44g\τ z*Ɓ[&uDxtT `]ކ߱u39^d%*/;z׀~m" ]<Ǧ1j:5'X+/<#p\ ?.XH}GZc%x #yV`tfuj.y\8|@A>龢Nn!-5/ 8k ڵh4N,G)KDqBjpi8%w~Ba U$%iZu)I[ <]"Xҙ+rj(i\aEa @:w{y$iu:(L}a=M v*shAZԼ xdGV] :ӓ^JJ x:|=ȍŠVI0ppxq/Yӎ_@Uߠ`ضܶ_63[&=N7^OP?eu[xOџ'|30ny0n**SxfӖzZq򑐒Y1DZ]̙pB GZ@iKh'(ʜ+chh4iCDG1,E$^$*#ZRHXA2ȍ*1_ܻQNpyQ@)fAI\(cVţRy%v:/7\w6aHuOk/[研h3ACKy+?^vNX=CZB˸@)V@ؤ ߺLn{}N[Z:&}Qxk|L[}j[U\qr?e=~}(,sM+Y^ I18:@x߼whE 8qT<~.e5,d!," H.?#g \y\X88pAcI [VET:<]IhQ;@G0eAպȹjFc ZGȲu+dU*s1,"n/p h)1l@K׆C8t-Q>XU+C%_ɤ[p@Fo5~8!Gpp ^¥=Qb@rɁ~m\$8k?؁oۀwkt mK bXz?ӭS?|n~~qo-j m!q KWaYL5REV KyNQd9Nf&Qj;QUq`9u+aZkETPZ!`ll n^ uA+&'HUS,KH!99t݀xTKW*68I!)r^uY+Ǖeq}YÓ6$ p p=+T'=ea1sƬ[OӝWeIc`=!D$f q?,U_9w~(p}lTe>SukO۱Oܱݽ]vͥ+^,[4?z5.8cXUzmdB%ܱ?Y3_}k3MU/.?f { ',D0G:@/wG>wvs!@ow[˝\0cFRuYe&'%ZK@$ xtpJdlgCia*u"qAHh4h eidVvfeMGFs) }XEpˋSSS8B\}d$CrD *V^J\A7OISp t51!@EY/C»{~U Σ;fVxgRa0-Z.{e8xp{^X2JB+&DO`BJVVE!R8NJ`[~(^xً4z@(lۿ~y ܿ >t3鱧!]_ T Y]O;jz}2W~;\#ۧq-p׏w0?A8D~8>@bTg)Lٯ<ڂSE\, |W/[^ 8Q 3gN3uskΚtDri YWf;%UBkŜrz0%i;j ٜSE[8Kv `SIϋRQTYXɂog,ByZBII5\[4\~x'~)N/o=F+6UyH#38S@I#z.8l5d lP <&@VX|G÷mǦaQ!|\u~YG._% gqbk'kIG9W g> ~S}EXSӎk.[V̩͋@e^Gvݰu߼.= U"jE/78#X; ypq -Svdh|@YNuD`giR]jT /*JKD2B75'PK!Qp( D*+-#cXkYyv"j }{1nqO%\EkwDp(swQ;8p o/*޿ f{`ӃW[,=09$L4")`R:h)Q^c$x KWaɱW! v >x %n|ˏ`xPڀ קTX`f^^3Y ]8G/uz~矨Udz]?܁ܶo@Xkh~d9^t"̚٬[|08|3zH{އaS* ^;k,ċ< |.Ego6RAqq(Y!O3dv<ͱew^a}O>Ep o Z[~+N\qE夑-k=|}Z IDig;gP fx V򋖑Q[m\) !uW|{c:s@ x2v(pJ\t"$ q_EP寄}x803_~s3OAG'-?f 9Hjυ|Qu oH[Kކx[tYFo&܊5gDExe0{v$y]bwh" a .j}G/y>lX`?\=x' i{& vqN9O?ZN,6o}7c &ze(/8xu''QI$-#y9 ?˥)>|| k"'7>/!;BPtekqE0:1ak}|X x)-j5+¶}ƻO-6quEqLei,+~>ёlĒ想.̵8"V\;HF{f5!eS1?>I4Vkj'BJLLcz|i={4W"R\pJകs3v4U=q#m-8Щ?S¡;mmvZk"kḥpFH D0AEh~/TYO6-uҸEx%+_>x>n~>otnYo|7';Nr "tnX3 o}8aܾ)x3 :GEƢ7mx]{25v\r͜Ce'dcJ@C(C]J(Ixc b#i-yy[kp%W%*88)bW+L5Rq#28eteYH4S;Ȳ4JJ@h:T:^M1Jk/Yk./{(rZӬ,p p>c3?r40 kA(CSg/ƫ.Y#EIH_Jwhc?h_2q8fn?t.= fHlW1 \I^nqw÷ǣ;;k+qمK066xsbGI!Pܻ i=tgG}IdK\̣+Vc3{}CrئEwY i et{iK0AGN*h4U:t:h4–$NkģyB"U6XXlƢ`iV!%WrHmN*y4ʵMGRNBfn:NFQ@f$v.G:<}>E3qj_!v:Qc?4۽Tny;5\,(~zŇposY4![q"/ksN; CQ@P Hq t{c}_;>,j )6>|z|1\oWN\6oj5{l_f )>::mS2PYf2e)Cp ҈ԱZEJ*B:*q(s@VZW`tD!Jt wp'V/â1]-0+7w@DE =Cɺ$'iڮH༧7x [17<^ߟ>[=^]oQ۬6[@7!)!$._؈[ފa8L1kW…g,D {*lSԻ`ο;pO\H c߻`cS8~~ #9,uΡs@AˣIOkP(k+ug֊t%܅9x, )ۮ C]ҔA~~$cװ ڿϋ~J)0*Ogk,tQ[9Z$q #4nx'bת ?}sG%w`2Íwng(vOd]UExpљ LtW; qBwS;8>rxdG;Ye 7KV,HSL#:C~k|مܲ<:Uܭ6E7f,g] ˗̪(iuy=31}mbO]p[1.EgEt=Y3liC )PA3Ji&?`D: (q/jQԬ%!]@, EQr͠$9C6A ntt%&«@ޯ^w7 -S' RZw1_uwI`,NT7mfa!e ) Q*@$jp׷cKWS5p8z<6=6ܶwx:Uu unFI#rN>ס V,RAB1 8A=Eр1B(JS"V1kGmR iw\֔e.ե% NnQCj2 -e8"σN7ڝ6LY?K^ HP?Gκwey9u*̐_>\TX:QQVI_nq)%"ZDS?,=Y%h6R}i H/\$V[ r( Xo^_lGIO[^sT윅xed7+e|믉z7/!%colvxGMW%x/>< %v/n-woOJrMReʕx,SsԒ.~j}$bۍ܃x @(T'&XsmH)f3) ,;V8*q@#qкULSBAj <\~.@(@!4GAx}U$hd3/!¿uQ'uy4y4>.rq}X7y}+b3k,O-OkBK;Z(% 2#sƱh&1l/<(xV u ? ؉L;|{[]]BiY%,ŌZR>z5W" Jo-`,7Ï܇qc0k|r1H  R>u'BqIx{UltPpx9xkp k~y]Z&L b`.+x CgpǷ#߈v@.~h4a-f@51:?R Y,\۷oG/M 3ʲ@n\WJ!K3XcQ (&uɖZi p0!wx#0e/X$RL}nHTm'0DZ]YUVsz6xju"~jw@WH&l#dm؊ݵ[v Y=v^sJ\c0Ҋ9̱X`U5jp}{ç"R d~ aGwbhiZ;_V\}>8Y}z0`"UrR$A΍?[rj &h$40xqEvj2TҊϟqk30MH@HRHdyNR!Ib^)Xkne) Z>`˶ LǀCž6* gCc7ϳ8){Y6\^j{E>V4ƆGJ$IPeEvN,Jll&JY0%-w`YՌnXkg`f7\o8ssy_0w~|;|ۮWjɬ'&y__Im\Es֝3s_ۂPڱ.s8u,U'yg/yy=hd És~H -6G'asf3؎yX".-Y:I^*њSяv,*) V(,U)kK`AQϹWnEYBJP:.(e.3H@7bk_Qgbw8i~ G;}kK{r$#c^o1q3!k $ ǔemTZ8/ kYH t37HCbلjr Ooހ$ԁFTW7:k,V3| xEK1bJ!|p(@ >Rڏvnxxxܡrt8bV7] r5mzOP3 ;/?~~|J=!h!8oDv~V?-6']z_7 ՞RbD~>x<UMJ4qB"2dEIo|}Vd&ɭ+>입$Z(7cWEQP\ 'Bk 8F*>K)ٞXA UwQ%3a4]zC렱_76?.!U߆k~/z=[YxvLvDY /UO:҈,r\Zc[EȌ/7QKgA|p7@>.;;~4Mz1BZȃϡ b񁎳RS|n:C{͢x+e/ApUE*'jЍ?/,mǏ?L²rνZx㗮cfP7  0>go)o>vJ2׊1.tT|dz,zA|jnF?.<%rfs7*'3|K3wnƾ<;մ ]y(xJ<4/ve^Ѻ9?a]Mvu>?uoAX,h4pp0֢( W0/0>BT2&@ɸ:ْ*jy5 Il4TkW2Q6l EOIUqAGit{0/BIH'QaƤ"y:w=FQd@w p>-!ȳoM]n'2!<Jlh9^G<^TqA ,5DְbV3abSQVtssxqsvC#6JeW?a_><ܴ߾wrbm(+V^FB^`.*6R@m_i-{E5@mSğt-8^Z*]ⰉNDqtZ0R|ۏCn]i\ @(JKcPC# /bJ, | $&<Ȥ`ЫF6+7G/-W%”R7~+sKoyj\w* Nd'޼?fM7܏x'2n[`^ DJ๧/^}N=~@޿רpYJ9>r|趍3A) JkIXln،~DŽ*^Hu-*Q~<,"`X}+u4 'QC)Y%pMa轌5di4M4 E)]E$}T:YG1L?U0wu/cqm}B0tk~{KGc2ۚ#gN"-I!iVh\dCIÔE&AJ1!RJJ.yڣ7v-ۧf 9yhE_Ģv5:=@tƯn?!u{ Շ5ϋHOz7\5\Kt:Xu*LkyRAՑc 2pt#Sj,+ ))!YM4TUL;b)ti*~t?K $~!|+`?˧C$pӎ_D<,#/*19? -opJ{<(NInO}x|_]Qj`Âr*\w*̚:0}o/|VPwRC9X(聽߻o/ FKI#1Y^8@ڴC},Y]M)c-26=/[CJ?+0H<ͣ-WqNIQ pl4fLH,011#P}0oWWזc9zxȧ't:{/<3Qp>ϥ꿈Hc K۷9kJ6+9\QҚ95xJl-\|Ԃ55EM)v`Y;?+eᗪ@uݏ;SXCe-,[8w@3y)KS_y2/q_Qp08n(h4t ?ÈD=B //|1ǺǦ*m}!'1H4i^ӵ\-ܠO/,Kdyr@քWON\^ʝd 6eY5o"@di,ppb@{z,VO-sn3%"Zjcƚ:r;ݞ{5k며)a] )H)L)zVd؉M)F4ME+H!ւfH{)+'j6'Pg9h xkN’FaչRYnnY۵L#fx,HD3z&<@m Vyxy=~x>6ȝuˎIU uE7%!A2 "%1./=O~a3b~P Hvo+,Bpϝ$ svS.65̞S%-µ1x(]8>TWLm6Ju+"} Po{\ȴȣ}Bs:zxrG5\[j'-îGwBD/̰>-"%)(I@*u* ۭ[`VE`ϾN^=3C6>~&Ӳ*Ջ/[/XZ P勪^=vͰ=]yŦqc˟k,f^rbKesv &ɞ 3(4P"Ho *XeYV-kМ82tTXUǨ! Gɗs +Q@Qs^?_Bn HQɺqkkT8 ~:|Q@i$yiQZ͈L/0BT]!/ Rpe`3ǻUrp; p!TJ U=?/j>1m'fՃD}4#j$lbB2^v)_ewkљHp^>\5\]pN'1s 9sfEyuvrZ8ղ7rg43}~눟,h)  BY 8FHie4&2zFZ[Vnغ}ýgja/z Xx|kg&8!W{oZގT⽟]Ou35'9wF__s.~B$ gP[!HՐ@_Et(ĝߎw.1H,-0uiݧ_VRIS EI. V}\Q!ď Z!϶RPJn  AYIVU꣡yD]W80AHܴsCƙw.2H)iwp p/z=: q̞1*-tZp2،f3$I~|U 2HNv`8*:y4'VS3b< s==՗Ĝ BHP1`Wp /]Hǻ?d%7}svҲO=JWs\i/gPoU~m&#x{dV㈜҄RȍAQ?Q 5LeY%mъ.Och&?(e;sYs('Ϥs!pP|*̟RܔPU jt4Tfj|k?>snuo˲'Ԟ4Q̰>\5\Rޓib5c h2.*% -%X˷=G)8NfdC뽯9I %c\kT<'J)dYG#+66Ь:PʜÉKg>/:g1zP*4x=1NYT岰Hi.pE%OI4piG:<*ߕ68bw(]FZc۞__ybD@#n A*ơ y5ZkV~s )蚃(X$00ι:kkl>Xr`JFO9J!g$!H[N !`A+U&9u]‡(n0@TgwdyYnl 3 5\^40sl6шw9T8)3 dBZ!NXc>2ې2*ZJ2)BDr ִ.lsqƯ>ݺ[v&[S^sy`Z*tx@_kR̫h7޵IFȾpH$i/Xˏ3BU r6R3`䪚R@Rލ<^<9sV-b c_$Mt4m_۴NҤi57qcqRupm1^ $B @;:gfgy9ls;Yfyg}ׂ7v7a8%%z(u`XV,O{/ڏ5pakF O )n_ZSorhb2226ӽ\ `D&;&:e8aie eUyun )%FI} u-(B%@,QU lS^!18T 'pOڊ 6M 82ǘdR cIL %q}a|KO`yhNJCk$Қ03@.ſp˵ћ}ܸPx9)aBNۗxv}D0A]7hyd& rcLz5>~4ڀ簏Nh~~~ZHU͉bZw4%{Sh6h^'׀"ovIgHac-оw1V5oy] b^dny˪,{vMc===^Wj˃fLF8l/VlX2L>c-x`"z`PQpHǮx%c7nkɵxau-!tѕ<*xv헹%"9ƞ`}^4͟H 1r^7[B !d5WxO HJs8r瞃mO¾Ûȟ9TN|Woى?n]n#Z 1ٛ(F*OO>H?^7Ӑ&}RY6ǎC&1nno'\|"HDv:#K>FŘ L.ݻLmOiw_'WeqͨJ@Y?Ɍ猪"&{XY:K_pǟ*6j\v DҒ /}?zʛ @Q,l!%hLq`*Z7Uuk+p]!x rr|4.W嘛x̀Tkn+]ycOZ7p'Ïرg o>|k0Vv 41j?bG[׵B =d+/O1f9-kL|j/ʘ= "B;yR4I6Ѕ#Dy/kЭ;&|سp⚾ijP+%G-ܰ^}:<##w]`u`*%kn:S@*ݒqm4}:IN#ٱ; 6(%aʰeKI"m-(pt]{toV:klɧxc_/'ڍٯxk7` Bp.v2=KA((Q[>z۠ )a!q7wl7}L,B6DjOZ\UUv)7JZz<0h1Z>%r]UPwa4%?z_x%VK3RM ^##ȿOhe͸ݟewJɽ@(`4~/ 3222=tX\^#nf-LS@̧:]0ƹ%R`8K`KaIZF_8ꆰ%lZ͎DKQWyҹCunv/w܏/| 5b7~p -~E_7_.`^yIi"YUX9ڇL'Gɣxw`Uw"%1umagd8UFhsYLuCڟYR֜MZ+Di>y~)o4 V8ov &}q^*L;X2j)7􆺪nF/Vڟd[FF3﹠4c .HFtR K(R{S^-uM}a4q.\d5<y*=L+ǖkH劭1LbB9+jlN5Vd1Ő2%3Kbf{K)qM_5*an<4ͰaTb LZKd D "B@[,mLQY~Ц~/Di<##U`alAJWpDÕ֑|Lk4LI7f>O]Òum:+AvܯylZ[ML$k*՘ _tX܉Vy 8"uWb #f$Fk;S@ޒJǖ;gl?5C*dC[JU(fr$"ܶ-!ldKg B{NϏd2<)7}PUHT$i!@puJ'O;m{7m])L^Q`E6xf}t(&gfPv eRXjJ)RR2][P&3P$-yc7keL[\ A E5jj. q {]9=JCxgrQ̄k.ƭ?w5^W/Fw€[-vR]9n_0z}{1Ϻw#r\Jc %H`g,{ͻ6iQ75Ib~.Ϣ?B0 /ɯA{WRj*̒ƪi`Ņ.X0wFk?_y>ƻwW S {FFƳg8_~WB7!k﷖XJysQTGW10uĸ'8ɒZjP|S[1qX ,Txd2.2-z[d_=~|+ObX5]y fzW[;?Tȃ{LRӸ՟I{VK^~KJ+yʭ$m[}y "n|] ח;v'X91lωum?~u|׳06049-S /C.0̘#`1x`O3NK.شa9\ \jNIxV!he[04ؾ-~PrbTQ}|DӁ6ֻMVcw $le45J ?+4KgW^_xܭB}?vؾgT-Aؗ_S/NEV44]!8bG[[m|`ܳO;2_OǾcb$O#q! ot1JTesD|:N@)ebOonEpLEEZҢLlfUB.G3X}ɫ:l&F]gddxF :lt)ΟZ|9m7BraLJ,--0C9zyw:vo&3 -.8.0ۖ 1@,e) fܰuqePXtTO|q/n._AM˂WZ[0ee`g1@Ek1a xØKd-}4;S'wB*< c4Ԡ;Rczr^]q1 j. ="To FuSk-j_Rcݹ,BxO MN$v(r|rx R+uشnrUK'vO=#O,Ppx5bLt,hԣk[G' ky%`@?vo>|큣hq%Pt:No$qt[6N_Na>$ "#_1^b-GF< g۠j*},,-`yr+c0VqtXYF+kh.9J ]ytrh(ø= h-![oȌ3}-6;R2L1kz;M]`++ 7ᚎ3*MS'`"]uDQ jSj- Ŝ:M _.N~jhNhߊ 7O{!}-Sr|_ui7~d~boB1K2S0jk\F. M]JboþŞz{HAAQOZ ef~0ft)ܗgddd x :m@ՔWMMON1,G XƮzʏz5ʲ#X`lQ 9X66:V63^x4˯|fOjM ym܏}&y= 8wy?}xK/ oq!CXJH$cLF%}$m[:>b~+5aIJ--:䷌3= fffP[̴963N PiviB1ېdW_7SRzPR5b5]E`b( K7[ؙGbm#S=dg1;`90O nǗAPDobJkuS!c 'Aj^huMCqĮ[wT ici$bGķ)UUACg-###lsRc7&zTTZ]B~v*.xY"2ނ5wgU^h-Dz#zq|*1 kW~\q؝I-S'X])ivs';;RO=~!8>.:F+:@G'nD8T .,YTUscRdP>tAxb 7D9gShәsV`uYpeaz`5v1֛ c `BpcrFX#q+X r^ d/)%ϺO7?o/Vbv D4R/7.;x[zJ}}q/6SbpL_w^efD,cqNV7> ڵ*3q{ XY]y.vgӂ+e̡e7NŦ6oF4=yV84;5m_ZK`t:DX:΅HϴCѾj?cƔcy[E 㾧ӖWPx92 ݄֢n5ޟ'y!ؓ\@NY )~1JrA>D!zȠ@񌅫ddddd9/_49_zǿ8^ u]&vᜌ75D6[s]Ks2b hK xqpS]<(%b8LJ.d,fc|W"UzL'6 e0ڮ3h7[/Ư*_ S8FB|Vq{rJZ!H{<7ݶ C(-_D8]~C往9Z|qȂ^V?_$wfF716OvBy`1NyAccLimӇ7+!{E)r)`Q 3VcQatWwV R&&E9fh)Cok~E7Cʓ|ُ#?]&/iwؓ a,RIT ?ۇ7߱,zW?y .\%5 I.}Jߐ IuBU GGU!xmJ 3222S8h= `QqRkZ4u )]ԥ3p`R hrw_\']ŕ̶zP9Eqm?#AFdXZƻ? |j` g}c'T&- 7Tu=a5O~CJa9Odp_bWW5>^O{*eddd&X^^FQ=h(:[_NFvnmAm۟1sɳ-Yhj,~]3/Ć4˰V4I-D.I:Hє#C;?Axɞ13)X1~rV FUϘ&C3S(>ʪBZOmwTFg-N6L0 b!^*JKB)_ԙ"aKiG!^%6\plg) (d|x9^pS~/vmY1:7߾ _ꖠ rox%79ѕ5tZIt]X"Vw+dNq,rҒ'/퓑qV* .O03K)=\8 WgzW7|MmýÆ2!tF4> 8 a;7Ơje}޺U)%%wnaO}73j45Z/txM}6g=N زeo|]!9ŅVU] t)I\A 9 %qZ-e_K#<<.p70DfMX͑@~Խ:"GGn_W qO8Rϣ>}%rp}.}d-%qzLL_cWUuiL{9v>32222Np;1k&1znsNk-Cau;uNݘX聶^kJx|qO.=ߵb5LЙ'+>T}cC;qJ,\hm\$ֿ>B筕uM]IA?WJz:9k\OC IvH,]W"z5]cKǸv" NۂǗӛ@9蓵@\]#&&&0A>1w=vj" kRZȱ[՗æ =ϧKСm joY“vY[؎~u5EGn c{vgGV{8!1ZpD_Z)#AiDǝ93˲ %C򌌌 uAf^B⾦ Z=ە/mwQt\cjboYNQ@kx|=6͹i#WbXøb/%KSJVk oT@RA*YEQ[hosÀO0knzㇾv+Dgddd<)_448adESS[0Z(QN٧~!b4^[HW6ػWq 6`gЕʶ !;wlu?%b^xͻ%BXX |\21\E"B3=01Á#RXfLVbϓAH!:_{FFFF@us`Z \p8h 53bPN<>~Rƽz~5@Aa- p 1m-}mw\ ')-W亇cR:zPUO@{{!|k0=5ɩ)] S'_"`ߴDJB+Ty_J S3CN e&mM>6ݿie&TA_o.033Njߙpr3`ZU嗅64ћ@Yf17\.'B9]W[P]aSJ5[Z$v]İqU/=Үو[gOCVdg2FUUo^Ә[7l0*]g5S>DotwB+fdddd|]z\~ᕨj;TBB(قX^^bʾLv~dk ^($ 0MUTƫc~ă{]~Zu hXcT$ MYL}ڍggf0=3CcuuO#k8mBZH!<###yu<ԮrT.[)1>p)]Q./bd6<##&ưnP76ư@EK}}TFi|p}s=5z _n`0 ogkwjeUr1x((!I;зD7S TU銡}G9cνK.e,% BIH)Zכ3cu8%T4|, MSt7PQ c051NсPʍGhu;6 `X 3?5Z͛6cqy1dddd!8c :s FmMw4uSJRn0Ĭo@ =t^j3BQ0@JZ_ Btv^[n|\VlcsQt;0Ơ?X2{}`2pכamh_WFFFF33cznv6J` @!I{ZFR9ovf;n=țp]HG#{&% 񤁑&U 9olQY0yj.3[F*$:K22224QVWWqoqLNJmLdX@=}"eœ}Zۚx' qS`2&4neY%>nU:zr^Ԟ6Lx;.Ag$θ 8spZ.$3n LY)1M,ܧݷUPV[έ,\^V.޵kl?bBnxMjF63222SSBek6vBLLL*ɧ &F3^M.ڄ'|*ISܪFUW1\E x1M{pM? _n>+_ǷߛgΊ~Si^ mZA\NSnkE("Ʌ/Qs.ךʲD6!o]Jg%rȇ>מo \}88k :W):X177slX \"XCA E2=X G|aE&sP sWJ{ӿ[XU]Io;!OB'V, ####YU+t;] WXw#e E( gq/O,n\̭5q喸=ւQL:WR45y¨O3Qf~O1kh)c\FFFFىwF+#,GnBlRtr:7"{XX"ށZ'1#H?bwݹT J8:$Ln_gI)UY(p#aGSfddddbDw?~ݏ>pbR]K!(Uc㣆3cN$iᒙѐwex͋2_?|S@fgdddd C~035]ƜR\ fu6Qvctlb]r!<xc =%Z8 ̿#>T h/hqveUbbBt2jReBuJiɆ{,qw{Z)heFKق\я[%8[+W# -j[-####4Y_,KLtz(@F<@`* "iŅ&[ysmb(`cyY̷VIFUUQr32222ND.e5Tg \Qj̷1' )1j`$7 OKq#5XY.¨.mmZ ,njy-e>XQDU xL- ұ3222222~[:݀OVvff&4%ںErՑǮܗm椐LJaYUZg\п!~b,>XѽB0 ׉;>u!d@[gUUݥ֞ ####y\пbpxsgZ*{Iiv]\X~ 0# U!=####{Ytq-nƽŗ`6 q!p/ gRK  |R^ǃr  XӅQVˁRApnW X ~Z4dlFFFFFuf+%tEXtdate:create2018-06-21T12:56:21+02:00?%tEXtdate:modify2018-06-21T12:54:16+02:00snIENDB`yubioath-desktop/images/star.svg000066400000000000000000000004071412677075700173310ustar00rootroot00000000000000yubioath-desktop/images/star_border.svg000066400000000000000000000005121412677075700206630ustar00rootroot00000000000000yubioath-desktop/images/swap.svg000066400000000000000000000003201412677075700173240ustar00rootroot00000000000000yubioath-desktop/images/touch.png000066400000000000000000000005641412677075700174730ustar00rootroot00000000000000PNG  IHDR gAMA a+IDAT(m=KPs-⬸\Td@I\:_tNfstAK"tX}=h s>^r"H((u-^`}uVO5y0LXGYd=@!Z`y(bAUXR}$7'#iϊ{YfSN2yJa^؍fzP>grED$8kT`ѯ^ΎO C%{pfDk:c9,ڎ[`(Y=O歜'9&l,x5bssn.IENDB`yubioath-desktop/images/touch.svg000066400000000000000000000012251412677075700175010ustar00rootroot00000000000000 yubioath-desktop/images/up.svg000066400000000000000000000002701412677075700170020ustar00rootroot00000000000000yubioath-desktop/images/usb.svg000066400000000000000000000006461412677075700171560ustar00rootroot00000000000000yubioath-desktop/images/warning.svg000066400000000000000000000003101412677075700200160ustar00rootroot00000000000000 yubioath-desktop/images/windowicon.png000066400000000000000000000147461412677075700205400ustar00rootroot00000000000000PNG  IHDR>atiCCPicc(u+DQ?bbXQb$4Q~mffx7l%6~- *k, s۽sӹ+RvE7+<yTYO[TPh2eo*WiG͢nkPV%9[; uCA#\0.zgE-`Fh^*2 x=YhB~9Ⱥ|A{gvRy cHRMz&u0`:pQ<bKGD pHYs  tIME0\tzTXtRaw profile type icc8SY#! sE_`lLg(# .(W_\%e_$MPb&\tJ '䬃,̶ua0ITL-J-bM t`J__BŠJ>ƑaYA)TM|5NK0ɱsCK&1|\n M&-d!?9U}k dh.} `bb3I նyضBXo`sG2 4'@fH):{۬Q ;1}z"W9 )yWxZf\ #1(cBua~e}w¾߲̰ 3 ]cAz)f@pju]İW>z]#&Vbu v<jNgV<'FIDATxYpy=b/삸A$R"AJ(nrq\I*qIT%I9UySSTR\IdI%Y" b,@v O$;=4hРA 4hC_SJf)Úʷ'#jP , mJ+ | v lYbPlxjhT}?rK`|eVFl&wKР,T6y7@]fF`M!DH] + $oڹj^BH@Iģva'dF. @U%vW/?LPT)1:nPP$ZN!wQ_@Ef&L4!f8xtlݻx"Ǜ+=NX60+KfTF=̌wifwL7蜃7_̄{yF`j3^"Vwt[OaW#ɝܼ܍oD]U e׵& S.R]J(蜃ݷjTH0V1t.ud@ rYu[vgLޯR%*E\qSHmҰ5<,` 3O&mMl˿7u%)3dQT#bfB2JR74ں{E d8qf$_pI{Ԟ;VON7rρ(=1j}u% H]3Aw }!Dw8¾ĮM]m= M߃#O]7kW B"2[O4yn֮ԅ`C|E}MJ]@׍[}u] ;L 'i+eԅ #7>NX\1y[GRJ@B ܦKIHRF}'7B[=-)*_.UN!C|<5B_JބP ko_grrDP7A˘-J ,#ВZUGB/C^_I(:]̦`FUɱt.u4?v t""s?{I6σ=ܶP!vEPwIlCH ΦCNcshF0 $n[+I!| ɖ35M0| 1/_q\^ ?2Ͼ{ :@jmS~E.MK(@^ _z'P!da]FCmuui%6ojk2G2;_YYbi +Xm"1SFu'R} "Ī8[MOjI~tk.@9%?wj4n_Sp<ӧKcm剞/mOFʔ[Y6Fyx.u}'fg/7¯G/m(M>#R#(YU힣[.ˑO^Yv+PwFN %~bXg= B QP@1\,g]^.9:o~re :=/`j-,&o_0 gEu?zwvm3YwN8yu۟P+֘ $NwI 4g}LcGu`GyX lu܎dn~M/[< αSG[Ӄc-@sK vO JF$)CqXGGYiZUϣ[+H97#?%7߻O:~G}OEX8K %:6jHc[cc2<сd1`$r|`*h~l!9YKElve)n#ಮ cGVKbXl:KOe9?Ba>yE'o%N`]m*1T`)sqG;#<"kxXu|,ϒ/=4r;Z늾ЦɗjVtE)@yZu἞zl\UR{Vk,5&)ԶHmfh0r?7-fHV^ìE!Z3{wU%+BkutUX ê8L啥ΠрP$ J օiS[< >xu1 ?Vivؚj+ԽmԖ/@V]jr1Ӳ|IlEb6Jco5|v.56mf~OoK$NkYӮ-Bf "ѲhK2:[YJ.Ck:lZ9rzXzr=' &mb7}A,ʢl$fuY♉B{OBKM5-MP" 㯏&/<]A2)ka_45վ/CdlYiA1Ñ7ș4#H1CP"qٚ9z2,d}-{RB(L-\f6qݴ4_^}2!.iT.ƕ1e4Irs'EqbpeגR)أ@>Jx㲓5:ĺR?bjD/0{gg ,dyoknt>GLc )%2ޛgZ3k"X-Hl- >gj7wboY3Dis~;)9l>.=GB~;b=5B(/|osWP1Sΐ3tZC +Cm3-X2&35-Ѯco3rX+i)~z[܎  ,?.g+",YΏ~S?`bEC䵑oiNjI[^dV ^\GX' o Ie*X@lod4ђ cwy7`\VnMCE$ᗙM~̩/@˧[*$\W>F! XZ~ퟧt!,f9c.NSF d4 B(Rc$rg0t^M|a.9pMn_ff7"w4EeGǾtxhkzŇEu1$.4\HjɅˌ/\b:qdn~y~'`0&+X.-6-( |T.bvT>J^yJ7R7C?b)b$xau,v\Bjf|8K\7lN667 `lPy  ="g&PT_~?/TR4:Fmffiׁ{|Qa<[?YРR,0| Zul8jyjAlT 4hРA 4؋? =4%tEXtdate:create2020-05-08T07:42:01+00:00.-T%tEXtdate:modify2020-05-08T07:41:18+00:00u&tEXticc:copyrightNo copyright, use freely!tEXticc:descriptionsRGB IEC61966-2.1WGIENDB`yubioath-desktop/images/yk4.png000066400000000000000000001167531412677075700170700ustar00rootroot00000000000000PNG  IHDRZ=gAMA a cHRMz&u0`:pQ<bKGDtIME0 JҰIDATx]w\Usn_zo$$@hWA b+"XQAEQ+b {Iﯗ{S CZݽ{93MiJSҔ4)MiJSҔ4)MiJSҔ4)MiJSҔ4)MiJSҔ4)MiJSҔ4)MiJSҔ4)MiJSҔ4)MiJSҔ4)MiJSҔ4)MiJSҔ4)MyB 4)V7ai PVfO FF>O)Mi3mBՇ-X ?Bg8ưnWiZ#F6ſo޾+꾔b!R`u6]h;oyޞ/B^oo~{vO)M_C0q Ab}6nt-982bthheT8X)whΖ>~seҴMaoz~k}0wǟ|쬡QxJ).GF@{k脮_kZ۱dnaZ@_*<2!(2%D=!Q$#j4({_wd(5ymݴ/y7E)'$|3 Ox}+884zgBB5 'B)(eHQqȠ?w;J/y7E#7Flٲ~yoǐe<J)(z,@TwL0>t)Ep4:xJ:}kQzq}l[ 'Дw>^u x9d}3lb dYIKM>+% 8iɕbC3ƐɄ \){C#Yeutg n.z۷xΥiћsVu;fϘ5{V\ZahpB&Tf[kfSBesFTqSkDLr[k6m||{ߚLޔ*z{A}/m\ł0EB pM%kC s Bc\5H{գ]] .+7m[_C='Tludi݆u݃00<w+?Q&-ʠM8:כx2!qӦvOUPRyp:இ޷YK3Fo .|ͯE& 1mԶ}u~wP2|ߗH9BB(@5B@΍ʢ+MʯcՃ0}k'i*zS7{NG6ê+` x+z{׈ fxuL* 718%Wa'B$YL'.FTD5jjSSg >㮇޷iKSћ7܁R ]yc#W^y d[r`,.+%\894dq;^8_8"WY΅@^G^[w1eLvϷ 9X؎o*zSSWϞ9uC F߿a㺯 ,eU~8Z \@✨wg Ji܀^2&4z/2aa63Avl%ՔL>3o\ veg'ׯ>)|KmhKCN}{ u  LK'5a3Xb )2F#rE@íozb]]لYpa TI@' ѠFC#ίiS[ckVbx'?(M׽)JQ-@@pr֬Y}ljHT[-/16oiU07R1v@ZxoSi;Ρ;1tYhcTF#B#O7{/ள?uVߏ~{rl&W5^_o;6oxH~d1<jJ洵iscKKcHqNz?~}E1; (B^C`ʞ[yFh8k#y|™0glܰzMޔm:Ww}Ӽ]=>\ZLa:Ug\K\4͉+PLW@Dd(jkщ:ExA1Gq4$vCq,dm Xն8DԈP35N]i?_֫-7iӢ7%%'hmii3\'z\(y*wETtT8@t煄Ս2uf0o:]\a]x眅 "dlMSpF"M ;%ı\t>Ϥ028z7Ci̟ڂ]Lܙ"}$QZTpOĽOcP5M{xABqS(d^VEG[O7A_})ҫp)]Zv_+X ۢJu,.c(:")#m!ѵc`(굪d;AK p>SwP,Lh12LЉLk9S/.cv O.$Eѥ2DQz#ɡgqQ?p㛊2<1c;K=gW뵎 ȺuF5X][Ksn|h]w*S.ЧCM.JUn025}{!h_׭CidIrzBZ2E]jM}D Us jУ<{})b%"#8Y.ko7-LqEKvosDZ2\;{AAD r9";]ZQ;SL'g׾6¡v$\Tȃ'>pFRؼz5Vf8+GDx;$zQU:'bJ[oݯ3tvѿq"@0\kM.Hgoʤ)׽!?͵޴/#9#Dww76_Y3̹{.z#fZr([BJU5.7rӅpsO(7]זTg'}$K%FQ3go]ia뱶;|J#>ӖďA Jiп5[~ ݖ z8b2^NH!4Fh_7<ݰۂ]Ͻeo*@~_"$n{j JB3-9~ܜ3V Y*V]i97?/KMPUV^DZB{Ԏw ܳb~q9/H1E   u2+nH)ݏ{.;6PI<?"0l׷-e08hZQt.vM7>p̝1+? f|CTIJXv)k֮>k[iE"Bp B5rƭwV\(=U6Vjb$r 1q_F#ǶG%Uj5$P*P*!?=8~td ~tӽтIY+嶽tB+0;<0ATk{];PFq̑G?AS_򩏜>qtusw՗7l\B45f͵R6 ʍI(":n6tVaX#9&NQ!"د$q˵ky=a䋅r" }Qd|/:BqG¹`$ Qc}f6fz"f @P, _ Yh*KTN9]I;0{{燛{6֨; koSj O)6!Let5 yY1vF:PZDŽq`Mok{h͵% (V*}|"ZgB&FՙŎ3yl R{`hಽ?ģo8QO?^sQ,q.ǮwO]ݸu}L}\t xX~'Mھ+GCV f[MQF4psڛy#~G ,)`O!OkhǞ ' p![{\2<2Ll6#K'D]ZU-R:ڕvU~8L)eY^_G~J~Gٙ[Cm Ua@sk5D8t8s{'}=gG`sA d? y`nGN)' 5X*ISwX41ސλ 11p!$2q벋{{EAgW O}]pC޼e7G ] H\pZ},%F& B6Wm57'5׼u]f]ic\p=>PSv8r;Bݷl*UlF87^#,Gw{\'8㎛Ӵ;|o;te,?`r -muqQ`"}~jJZ0S}TA|?UTof1qK)ͦ-S媄 D(BL'Cq'<s>.bhM;)i_3?\._usEw7{z{%SX*&eI,|A{~884CZZF*H ,TK%50@{nB9HY{J%րʿ3FS1|腚mzmZO toV}p{Q@ ;%˧ t8Z]Sc ~Py5+\s?v*=Rt&V0fjHx2=!GZ=4E%_B,u7RL0a~zz{]׃L. H{E."L C)ĉa,Njzzޘ&}lZOt# cT_*_W`WnOj6C܎t9r"su:83`ǕԨ)LouBts$jӸ@,[S=Nd2U/~^k "sGxI=C'+"M"6nފwٳutM#Ie}߉lC:\Z0ah3.lr^*VglF@8E8JnETRCpB:eI%?ktq)S  n2#g@-IF\3n,X{gydh4(JjM7 J?nj/_B\e |[q+ڋz٬iQ7vz[:ƅU6;lN,7&}n|er`L[. a0`9 xM2؂;qS&Hy! Jr$w @A{> yz}pKVErY!Ə߶{nZZZ  桴 p84̕'j559%UːyԜ5ׄ]P݄ 0K39&}质8}KR3i]Htc:*,y̢ER_kWcCM)(Bɘ$rHN?u6hUt2e* 흳gŗ\ckǵE+SEfbV.d=KE¹|D*zq $H8Ϩ!8niZ!,jm8q.q@@XѹyThؼ6`}2 tf9I>p̱GN>qX1(PG ǧQAł )7Iۋs.88WyB~_PViʼnxURa%4qYC~!2,BruspGIʂ|.G$U#6f0VIKŌ 7tc!-O#E4l?'!8H*N;[cb,t..vq/<σUʈdQ9*?Gj=j筩/\o߹j=5k\P,3?@ < Į4cbJtq] A&DgW'!PVQ,1<4jF$&&'MTZJZ}IF dC,OQL) "Emu"=\\hoE8M1Ҍ;ݴݴuvvC.ng4}Tqt02 0) eB J'IA$W*'r<^stw%j 25I=${o29.Bz.;wb¤e(ټ#ãj6lPTuZ[i[:Prcg*Mg,aFb\CL)9BE>y+ٖ5kϳL]ǪkӇZfJ&*SSrr~h4Ш ?A5ai*t@Ygjۘߘe*}o=!y.\ESnHʊ[Џn=UtjRX9Vܳp΢u]"18æ?򵋯q'gFGO_a壅\/ f`utZݜF2F餔1ydT%^}4 (Ɣ`)OF-BObf*iQ@Toy$T\k]8zXjE/۱ϩ:u ˽.'9]s&?] !cy( *>E yD߃L69F|ү`ڴiOD;7npaT< TQU ihsDSWnmm{qJغetg ݻq>hqIc#,cENn# `C7ů.B$2)uF^[6CKk܍`A8H]K015ҍ.]uOlXˢsuxO\tbϵ;7ُLldQ*Q*$_y&(9!_ 研`dti?MEÎ~7o>Rtg)'`QJM u*P2:'硽r"K T 0{k;G[{ f?R貋PjdN Ie޸?@DBeKes*n\wr;!wH'*=7J8Ƣ;)8|8;Fm\n)ʭ;R0B(j:2Tǥ >!q1l{ A3٬lhuL8 @l*@"ˡQax`:ITM/\z US)Qh%¹Flm#3& \UnP@N}=O!0j/vҋ5YRWJt}8b?tG>'A0ATFatTe<. OM:U9v0z͒k*3.}r8m'{k֬:yͺS&qWdQbH#:;VfA69E`D`,~N8ȝ0qr7PMP6ֵ0Jn[Dmfhl~_8JAl/ Dm>!L*_YQ)PN3TfvgCq׺&Yh=1b#R0c |bIKFUqsVEUuIBȦdt,HaY=ME .'~aY]?5nڲr2CLMI1ǁv]c* [I# D}IR߂sNZC\{+rӅj?,]q'(. &SV2x Јk<*'Ҳ O#unN˵:M4m4a"TRC7HDŽJ86]?(j*Ȕ( U錒tշ !J2Jh@FME壧}\ozX`?p7z%IfᇡV1.y .Rj.G_C"JŢ۾;ٓ`3ds\2\s^܆ 6frL,(eX[xlM @ B{*snLB1VYNR`az o= ] =d24 GFM<(:ev"pQ/[#n쳖?MYwpb}U+>LPB2fesDjX[EXM, G~dDZ @Aa8g2Yy\fe%6Vk mUv;F c zR1(C`6.*8Zl yMh؂J g'O*gmJNW-+2 y -HcHd e؅pF;u{Tu V"Nd8UJn%987sB<c$ޞ妢?F\ŗ]B?{m:u]Ԡ …]`KIIF,6f&Mgw86uF uPʺ t n{hȤ)"F ?XBbJNj'-[q!XʯnugLSRf 5Uyz"+0:szʨ}EYZZ.%֐l<| fQwo!wZn*+p i3ZY٫׮&_,,BMlHVlu2-& Hkި71pXڅ}w 3)%΃mX_'D6d r F4 *(G^e)A63} !b-8tq|5Y>tp#奌1\eNk[po`~3 ܹ8T)PX("V]yΘ$N 6(.EQ[%aYqW?I,͙qgҳj֙fd$"D@sHͰR6[i] @T<ɭƵQhiԜW.<nɑk%9Pop=X[' o=r222TZN@P{LfR$GYw\qa, g1I0㠀[0Fw1tyyL$ &Z<JeeRgɣBws}*$3>Si* y|ç`֌Y<se[s?E,1Uj ]H8pV5C9qܿ s$֜@`YY쾠 yi%:}|DlJH-V}W 6$[93:Ay,]|~1{{ڵ>0l.']uaƌJIf65#[Wu9T.7| bc@ U z1Rq7P*U(ډ# *$b$p#E<:Rc MVY]!&\h0m)F:v; pթWSgRd2!lb((2TVF9<4j!0pn2ԗcBn$kYM)~Y !D6ZT(2БgQ7h& AԸ_{,"$e}cA}UT Ǥo9z:Z[ + G XP?l.-G='{ !s!d:;|ymXAF{d[ǿNLpZu[c68n)l6s Rove \f*?яG ae)92V I'bܸ FKDBL֒8R⸀p |]Pӫ܉Ca"u4kw|̝ Tĭ0 X1- Ȧ{jտ O76sfOapxl}#D5@$(&׀P@46NO\x)]wn^lsw3L¹^?0 $5j40KKulSeA1 jcdtt{?F^6s>Cq~zA0t=ZL\ =1VӶ6!Ş$Wmŝy.= lc][KjQu]*(' `æ~q&c6G(Oڹ >iGg{y?@ԙj7.UZ3gR7Kޠc)&R#&2,DR58T\zrKb 8 T0uteQ*A(_kWFF_lV) 0+MX> RRx~p<1a Y  r Fs"M^5ƣkG1PlHP5"$Oft{X:â]ߝQ[BlwL)*ەzQF-D#YnB(Qt^Kzfr  L80:KKo]yfXnY3!7S{.^SKZ?+.C?ܱ74yC#灠#*y*.oy18d1}̖}v}T+]~Hzq4"lnK Tgm:"[rE5PfB;' )Hq+ jBlb`ݦ^뾭H,ԦO$ S:=,߅e:xn+&tfk0Jp0akЁ4` iE/ A({6mBs7ׄM1 :Y'oC Rt* I@q{Aqۄ<믾%g~Lr7sg|ahhQ{A& ?3B,‹mA=u,H/"6k6/]}R`4S>fc_ Zm-9e=ۀ5S-q8^ux,p_b(\(| 9tvd>JjCsOyl=ʦte^RQ0  \t=i22 p%[lY%ؚ1L&yȏT(ʪR3BlB\F)0ȎKva`6twv_OxB2-r8C4 `77]K; Ա=Th#pE:u0q:NJA!+0D܈㎇G}i\N\7P 7ʳHW扶.**dڤ'(*",~# @&5Ƚ(NMv8o`Z2,(p?5:Ձ2 H 0]>Ɉrhbڢm`Y~ú BH6F )=hbipfqs I> #y;[nhJ=AMgLW&[NT^8;Q( `q˹Ceeۺ"3j<இ` AFCo8Rbf0Ͼ#X,-թ1Jdy hj&rpί9#;Nfq %e(7FҹmJ *n,Ka̖ %F<>2Q*; [>9nL8ML' E[rQ|_UZz ޘ E='ލ'WڊPQ@ܘ=MёL>"fab(I0LeRNr / C(#]*'LӧΘw5b~7eee)Ǫ.0E*zL4"~;hsωUD ; 9{SgH/M IsZrgP>|qcZېfS0-OC%V黢kC6A'W%xHA,($$c^_,g";L;T-[q]Uo4" P ,i2 UE\eK7ݳpEmt,JwauB:Mg ̄9μ^~>aLt"?MbxQdYf֑3 ņ> T:ɸk #&? Z*#IkdWc!#/^G] I"@g#x<;p՚'n0@+tjYF5SwΗwMmr֙P2Ud`n(;c"xgZQ"8\ԁ0G? ms.Z4FK #:n{ ~U!4lKN8ق.V| O`spr&Ɂq#?2Z4~E).)%lJcIƢ (kKQu]tmࠋ#Zf:p]pQt+eCTMl.t-vT^<>'zF-aEkfcv0bZ/t!@ @cæb Wo) )IDž: j]T\BRlA5cTL8 7T{jq)2#'"jwL0w:VC~KN9xDmbL]NnWe'HXaF"ECT#><]"˸Yoɞ w7bŸ}_䔔 Qo0Wt;AS PY!lrrqwV?d[w\7uBfR%P 7l(e3SChZ;8El+gde,E?)38zӓ\)i'nbBݡhU#(Mz\] *ݬYDZ.ͥy7u /(U &^\$ṋF)˚;^\%c. F%WP0ܜ))g6B OD)%'#/Q*3^џx!L?oWbuw@JV+oC剬b;e zjrL ym-ĺpCT.mrӘBJeNX*!6;fBx*>]B EnUթb1!sOb p`t;N-}y=QBH\Y0!dJ)II*yK 5oG`S@mu->4q='5sWO}fBg6H}4i}Q(CHQT+է=ǒSSOPFVFjxdWW*AzL4b1UZޛy #$1 _ZvrA;L-deToUe? XzaZsz c7uWJ50frj gjaYbȜc Ѩ/ 7Ti/VOd,@BOB6 EA$/*_{|f9üGFUU{OdT|9g<dACCI}Cqr;&g0w]^c*Y}\,\*"bc)ؘxcH^pqF#W1J%/kB{p?o oX(Ϩkmo5<n!@=A j?Y?5[VLR1\kHr҄6&X uNZ5`2mRrj8In~j!'c}:#C6SgX^]`O|ɸˑp'_+婀D+q ӟB'Vrmf I^Q/8ś+Vvhxs[ =sW,X}sk5 ac45lpqFO6wnFO^ c a&!yY?'ucޘ: 8卆ݚESP@W֮ddt8[ HICpn笙8V5|Qa!l.tښnĭDcSgRBNL]6F͜DD+m  1>˄+ĢQ{Y( A23^`Qpe.g !gHυh_s촬wGo4ȄRKCGHBpxg*2R5#jԍRf1j ʼnMS٘?qkqRt1.ܻpN @cM*s(TnpbOVKE4($ߴ{TohDW1j hps%/:E?4<iO7]U,R!f(S̓굆i,8&y𘇨0),ӂi3ۼF<L*OƢ3SR iuu!}RS#.`=g,ΜTN61nA֐ qQ0^~zS!t<^jbĢېv`.-BʨW2`xtYZvSWu n1edtwu>p\PaPqQqm8=`qD`6̟1\ޙj!5&dVT֔TB(% SZ"y<ݺ"a:E"f wY~ny)Uu!?x[8S7:^*h0!ykgI .~!?>yg%EяqXb.̚`ȗd1OR)Nnq-_JoFa z-ڥ$HnDatXX5Q\.`%ԨBlj6T( 2W %DꞝwfSG^B\ }}$ywe}Uw]@os_18|1!LF)u}!Y{\x~FֳeRQmT1/n,YCqjባzRoTY1u}LKL;̀mU`,>?z_I6nv;>BbRYܸ0ލnLV1.6 ?'(qD M%S׿x{!f̚$Q}CC_ @&d@`)(" ߻,gGMIt3!H g/o@&cD"ڧxkKUeX=evM-^0tͼFcG-x'O܂vIJҨSDCFD(VU8ѽߙ'AN8i+RB:֛!/vQ8 W=#C]A&05(ƘxЁϾs!Nu Kb8@ VW`5#!1 M͠s[e@^)1_98;2#{д]uBMOrBuzdI hD(QHt()9  !:'jHU߮B.vȄ<]4i k93 jc8>pT3 3xjb& A+n^}+ӧ,k8νqր0E&- PUVQ-W]ur`@1r0@: c 0sDPmjy"iCRE\s 1 " $ ~)!@=Ia]7я~ TP1g ]],"(%u߲301k3o8d]ǿݍ?a"Q0 ^C΋!T1%h%A]KW}-Ey9O$1!ym[* 'ng )L3ŅP(WK( OP*QVe'R0$p.q*(3.͏֨)/y{w(tuG.<ިa0 AȘ0 8|] 1{r'8TNR_˃PY<%ė+W?ϼo^w,xSCHݕSP,]ԍ,Ka z¥Bh}I \8ViQr`1S840UcgH/* ιz!t e :do<ߗ|Rz$5%S3Y!B79U8 2´n޼7'B)&}c|档5 x QI/!)&u].iŃ(.6l޼|lWlAvp>9zAbUX'P1r5S$TLd7 N\1>kogy,:jˈ--%e`ԷJtJ_Q_\M G>TEgEY_@TBx>FW?ț\U*R!TV" 1|߃1O"8fQ_*#fr̊ͼJF\;Cw/ƔؚB\.n`ǐ*.2?ϟnAؒŲZGPcKγ-} TkKfI(. ^Ub_q-<#cM˵*+Pjj8NRJ{ԙ^j) !>*7-%3g|_g0s}OTk ᇾCP%QY'-i](K,E({)ko^1cݛ8q=w(1GY㧿ۀ_v9>}1;U{cDZ_¿߮< 9ݖ]bcd6@1?zf\tB)2,2zS#ruؠ;)~ G׹3&@r` q ru<= u#́;` >TrgW$ e4|~M3%j c=<,[6 }<0I:θM^9Tq8 덧x;Zr]Dݐ>ax. EKe~\#^j>gGɹBBHoRYw\yZ^J(~`.q cqS@ ЕicL JZɩUoō+7cJw,i"DBT>]nI&V\v;z7>x. Lʎ0xJe A8G&`'1R+%@Gǐj2ҙ1JTHeO8$FݴSqy,`pցԢ#L$PkuTeq]sF -=lBHO6;QTn;19I7,m\\*{L&c!:y Oa8sp brDY7k)o/I4,r?ʒS䞇/7,|"̝9\wJB9WH؊wg+\-DQOܺnjI1`3,a&5 3A/^ -I6a\AzR|uTlsU!>sFILA$JU/}ظeװt^rYZa , B&5ri|̙1Nl!o*J$j4$[leW?|y6^wl4a-Z(TtVw?Btw `yt Te (7Qą݈bq;:Ciqճ 9㳧gNyh 8[ Wk<#?28N ϨRvg6N;'6uԪ5q,*0J  ~1@G;v Fo?*^<7&,6b. :v<ю_ nyzX~;uP~cH2iy _yl ]0D\FPJiUɟk}Nz([F ǘ䫗f =%׍*]Wq;q6!tUWfQ@`ܸC <.*eшqnPsbdY&m =i~oĻ\ y.4\P1p"ÉtcP 匶z -mmmcJYrgC 5ITܝp9&IDTT—Bs? AX_S^ a,(M']*qMZ ]`^~_)OL:ƕ1F=1ՇЪ2vI˟kÛBO Rxr:t^w:n3!,ŖB\ pڛg7VM'R&B"a  ]/dy8¬) 1zdP  ۊ;_߉LwZF=DQq\,"?GTViQJ=Ɲ7g?i@u #࿇i{X*yUyU3>~1ha)=ji$vn8"(' 6,y*n~nkG,brWVvq+ظ{ ȶ'8ο6lĹ-HRQ(YE(dåW?j9K5`TS` "ׅx P #dlm J<_ڙ߬@[$9͘7O0 rS3u%բJSd 0ZiRY_Tj,G!(E&^=p<8yLܭzXd]}k=(n+y T1l5B%;\*Z:}T?t 7N qC@6_A;*l!Ikmy:xaU.zqOJ#AD\wc1{ 'ebjVM @Ywo$A.J0C(HA#XK+ƷN\szgu33y2.׽5\p?~V|I!ݞylj$Po]*@M$4CxS251REAqQ )e73M#*I_'&'kfDBqeẺJ/wc]ѻa5ں&DIX|ƫl!ۿegP $xr^Ԋ@=L6\zC{qspwA[[TN  McDy]/=CEY0b@ƹ)_l,+\N|{y;;@а| UM]T<}9ˬDPM]J jGp{BxSigȵfz9Ax PU$cw2A%[+7b:5a܋o-Sw ,(72 4̠ځgcL/ BۏN\Nx8+˟BwEɠk8k5V)aq; QX.Ѩ%B=PB !Q 0v p T_B|l f<ޔ<3C}4e*"2f!cA6{༣^sNo3v=MRF7ƪͣ(|R?+Y2h*t _]Wq9(&]r n1n{n fSZ=>uY'8;5/+X?d5F_7QOPvF s$XRrJ\gdYw ʕ iDE|F LTF7"̏7e<-0Εy ""z6$WG;ʥ"X!Ң\V:P!cϛJ^o 1~\y"P[S3.{w-$(tAJb}( ?azU:JkiA&PFGF%'{txypոѸy^CCɓ&BrBt !@X '/zh}c inM?+:i##}RwE @%InC%Rp쿄O,Ť.$0J:N\_'N :h./Wu IHw7=1DB׃x[GVo4zbtvE4!L x߬Wʏ?Zц> Ia`KP9r7auZRl߸)MyTG9"R:½ 8U;PY":{&2ZSFpv@. @| q]7 )'zlrf sZW?6#@5i]6lD~d4U("-Z oQ,\!*O#oJS^yN& s%ޭRمQv}- |F)V-Ԩa^SQ&pw~o4 Z X3t\Od%u ʿpíi`Iq] lڰr{nN*U+ ЕbMiʋAUʼ[6raJA6l&ꖪewB6TYzhuJ˟')ǩ/Pe)SIՀ1vKڞP?TY{=ˢ##CEfQ3=2O\~OO3m`CҌǛL`Y 0`>!Te,2ٌSez8AZ᥅ IptdS 6vO#qn Ct?mĕ? CLhR2PJކֶVnOR]fDI8(+twoxJ3oʋSSEsv& IrH)?Zbݡu~!,S xc$gs$9L1 J$IJY_[RMqyStFWxpR^dea~zc`%qp00`Lsߋg<3g#]kӚbM_%*H)yῑVEAބV "E "BbKS$ds~1sfsf&}^|>&؞^:0\OX7c6ߧwe,#l^ "ӳtr6pC22!Ww[:vDpAxXհ5yFΰA=^ n#=Z+Ґ)r-^n3mq2C{$I>^.2_QEQAy-U;-t&v_/vֺ8g)Y6ú, Hg挝(.[bdQuwxO!a10c=шo_Tneœιc dtпR2P{!Z& a[<a8OS,+UkÐw6Sn1EN\sWys}y>^e],w}<:~^<E"L߱n{ a4n)uܶA xEapl< Uc\o vK)@]vP6e ҃1"E5v{x萫ҁ :@AE>¿hDԌ?E!dٌyQE,uY}ܔ )kkDq5{{u%R,v-oSc,d@n.u9 /ky1ZH#Ҕ UU3WK%l4hwΕ(t^}WDNA"<;B[@qIE <k(Y9aXaJEB$\]!Unκ%yD0ƽ3tI5Vh6/k͏J^e)YRBd W+]<OcvǙN :"lA|>/s| l_|r(`~S/Xs mD {żu.7Ɛ#=CDFڝFXҡt $/Z/{ v[d<@yDv8J)7*wĠ/uzY" IJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJ)RJl& %tEXtdate:create2018-06-21T12:56:21+02:00?%tEXtdate:modify2018-06-21T12:48:10+02:00mdhIENDB`yubioath-desktop/images/yk4@2x.png000066400000000000000000004165621412677075700174430ustar00rootroot00000000000000PNG  IHDRߊgAMA a cHRMz&u0`:pQ<bKGDtIME0 JҰIDATxweE=s{:MlBs2 "*cČ3b<1`Ø2 4t7s߻SU?U1 j~sOg{jw !!!!a,>{4[`8sfEe+<]Lx"􄄄+0idY[vmúukqw~l65RIg>]'T]ѝ=g.FGGoxzC)'$$$#^O/ĞIXv5ޱytd]^)7s o߲Cf_u)]]X} }( ?|̝/~z}{ё#;~3y0Z!7yY46]g]zҒ[~ľ鬋pխƿ>qB 2%4q OX0w/޻wsڣZ8=O)c I޴uwØyQ@gLQPkc {xEY]vxğC/=VlYׯNxzBBB>Ř4q";p|m7}dͯ)K( <o Zi@~n4Rpy(Vyԝn=8Xvk͊>5 GE}N/|c8X~ϲOl߾ŃCͪZ#o< bř9ὂsᕇءsAexl*Ӷc8[#?֦)'$$$<@{ ~kϾw=ݹkGGGuE{((R (( #L~4e~pΡU*Swݭ\}#Ca])?,t Gz⣟5kV~m]'Fas4MdEN%vKZqEF+x89+wRJ-˩Șicp{moq&\%2􄄄.-%/Wnܲ-}}lY+ + E&3N}+Esxd^!nN:u(x*[e#{{{Ι{H9h"ܴnO_FK1q$| ǟ~5+?mǶKF ,ыYѠf=ֽ4V9+w":gKԹl3zrhaotp۲aOcJ| _3|̍_Vfg*,`ߴ=pE=sp1c4•RP!h{  ]'ֻwPFlԽs5^2tM?/z{vnymrr~+ , f13W}Q2o"yGo/8]Юo )COHHHk_:̜9Ϲbd?^m޺ W [WyJAsu T5W?c'8%x.l]!#V 5|ub8uBӤUSΎrV]UǶf]?y򴡯Gذ7.eO}_lw !!!ᡊ/|383-׽u7oJYpCg1Mc42k :qQ])κ=Q#aN91+ݳm,eV vYTޫ]υs_~'l޿} >ݯ%H+2􄄄7M9sqɧk~ 6oBY,B ݳl JrGY1 砕6@sUJ첵z]ZJ>JOUmkλ?v; S&M+K_q9&M7r\xϼ[>e VP ɏ=h~HmJ7WZCCyK3nCvf+8.1;etz?uu`G\x75Xj{xgQZ{Xt7{u̞W.H=!!!얕/}rwѥŎlc׎G[-سfy6A fT<;#ӔZ ߽wH,v axdX[؋Fn yF~G*ZY۝`hTGp~⡪ιNr6=.A}xDԣ7M*dlsp֢cݢNY}؂EK};u 8Ÿ%$ׄG$~ཇ9g]nm޼Qr*K0ό6d{XW3y ņ0;;Dʛ [a3KLwxqeëZGsxc6Abˌv{Uёaw̜؃W=9}R?,9H\%̺[_|=+~۾޽;eIra9lMiߔW>YePFU2epgkՈ[=SE8h[Ku&I=èU)3U,_2xUKf/[-,;n-˶{AX|!}})jH=!!y1m \gO_O^FY!L(c}ց1CTN'v,9&˸I. 8Q-c4ufW:+ޏ6$:C<->Jkw#.˖nY@߁kMb?TzBB#z+:mL2}kV=̆QΑ,o4h6Uh[ nnb*Z+D& B'B^ZPMYtoL[_rT+Zw7@|=l5U'4KW߽y~U& 7N8==qGOg]~қi[QTk yQ F+dfZfꈼPYzeo[<#F,FHuZ"q6n+ oɈ*鬳p.r7ٴZG:} u4']$nawdAh .9t022}ݸsZpn&' e s> 3/z:N>w{.ۻorӁ`E(jf^s 3;e$iv Aq0<Ps[{O㔃ꕷo8j8q}H=!!a~1id<%xI>~úgdL#O}g"GZ  މ[moKsiH_.8D1Q5=إhMRK0m{XgQjfiΚoc; K:MA}zBB?qˊpТp;ߙw3nOm޲餑QTR\o& NUg0Zr%T (Dz|Fؐ~z򱌏N{Ww΢ttdyԱȃ@@ +|K3^pnMX|߸|]صkVM5˨GglJ.X>VyJF }ka *ʰC;kC}+m4iFdZ3wsXxZ2y֘EAk_Zaw[qQG?3moGR@OHHx=oyfΜ<\qڣ5w߾PEIS 6y=pʟ!rԸ}m(ii2݌{9yFr:UidDrX]pKd>S >p*ـFgg݉\YMi噧-9vgp*^tL)'$$<,ߌS{.omܼAS*Hh䩁1:K Z(NnAΥx *W*fA_nmE81^K\iџ+&ѩ'Wl Ѡs kϦ7Kބ`bwc2v)haUV=SUg~I߾?߈ӏ;^zx$ZBB?4@YVY\rWmܼጡ!8k5ɰF&qKm]3<T(a;dˢVU}9O-u֪zU4->4\)l-_=srzgX sdYtر{{ׯwγ)WYS.['$$0>(lڰK\2_[s{v9n{,Qt59, &p=6"5 ypw![=ڙМY5-Bxj} ڃ,3v;KP q\2vǔ@>V2u,v9/~wgƒa!7 fƛx8Q]k>f%hh6( CSF_:ixk=jcTQMts:/0_GV: e9ˌu(6GJsln!SXUS(k#X=8YNE v34:|ϾÝ~X[=޷)'$$ ={𦷽=񩏻eMݲeH p5f7ˆy 5ɽ%NyfU͠YQaNFXt)kET)Spnv5*ܢ;o_ ^(m8G!K`,.g T`k+ 9JtqGUU:UuO=o}Kݹz?|kMҩzBB? _O:?́޵ΏرVkQn4ȊGWe8}tJCd2o[=. H. g&љ, VPƥb#R/sʃZ.(Zyѯ=f*Nb pZ)0ڕ?, 35_xs[u^K_{ wVl\;޷)'$$CC:0p:Y_UWZ{.YՍ9婗A)J{!(RAg4YZs,ꜥf|HiJn0`C+,@-Ywo.,v"lcCcxzU/Z\vu*{ ww߱c->,_joR@OHHx_&L< Kq;?_u<(ф1ѶH뱨L$CMx90<˲j}o"Y-~(w&ǠN`.cnGr Mymf a1Üଃ1Dy NgDt`Yvk*{Gg8xedҫ0&!2il2ut (˪1=ˇ_-ݱc;%qY} zBBC{0w\KV]}E,R;P+BW}l"@Z [^䝋6sUwU,>7ܾtoX0Wi{58#{/{ÊU?sF[-XEWd05a)#)P@Ԇ&9g!k-&)8)k0b2Ҧ./ؼsa?3qA(I}XHZ(X^#եz0y RVO R!i(Zux̫weYCCysϻea$߂|1c4\|ѳqq'p{z';ޅFHqAi4(lȘuf`) 1֥ }l,dѠ5plZ)NcT5ҩZ+cRR~;ju̎X9gHwcdkI}-?fWۊ4o[ȶ0YƴFyXƾ,RL>jNlNk=8ݼjjޜ9XaxߚpH=!!a{ڷϼnϭߴiYYUPJh47scwmHU-Q\r8ƾw>2W*N/s֢jG%sm=nk/*kZx^?d]SC#ç޻qZ0wC#ÚMB :>o!=\}}s=w}r˶ /YNjG!9KV)v,Ka8y,s&IZ?;2{}FFX2Djj4g;Y+.Xj3*c z>+ICRH@`xJ ʺ|S2<2͞wSH`lغqo⊷~ zwaNk֮z]FG)24 L#3&(PP.fZ%g_/{oُ{cVX[<+Nv( g@.?2 =A.25p2 x&g4u98Sa LSl#޹yX2I#e5wڶ7o!6"􄄄+oG~_G?Y%];1<<:,Ghh\=׊p;]jܐ mboI eoqΆl^FL :2Ci=|&<۸*N\+ }NY,Kjƪ{]R&U{!,Xi&a=XmW?ZSG.dڀ* *0V"->-~_,zضU)Sت߼ؘ u7η.9§pIgXzҷlش}{'ZpEȠ 搓K X[EÖ@y'}q{kypij16Tf3Enq5v{mjY9./x)bF~*YXc24„.)op֡씰:G- OAzS*tF۰eZf`u؅`s>^ݼ0X׉xޣS;p (&L*O9gkhxx9knxIw_Ϙ5k?'ٺm˓M*(Kl4qy[҈@E6u/ }1g1<(%LS.d,RQRW01)SzV.,R>LOS FC6xK\y@ĉ:uz&t# 6NC#hJteUU{KB7&Gg0Ue-;N k+UNd#vCwY* UUer#7&L試Og|HQ8|q6H!􄄄{a挙'?/~泟nرؑaTU5"|aKϖb d&EtC!QQ i1ҳFKZHX}lGk:wjcƄ >czcoCC#ABUVuqq8Q94]P-K8kQUS E:E 6(1q¤j_5uۇ#}{GqGxd |4}yb5o޳gv yuz.lhB: ޹w$Um2P`!3.A2n1/kwm^$g! N,qRFHr2H][8y#t1{,L؍l߲ }hu:+ˋϳ]hQCy_fsJn; mef7"8Jc$޺]s#s4Fgtz``x /foN~;<_}?$Hq ^aԙyƉ?\uVi=S6hɈ&76 J:"{W4gaٜ$dDwсcJF=j(l,@[ GED1_0T WJ]YANԻp6m*v 7nѻ#hZ(Y8xt(0JBݬEFi;,Ϡ,@CM' E?'Hx IϺXQpyñcSet.9,[r7^aҤIO; '~mٴyyYR 4]ȋ>#B) XfyŽy :ha]|s%e` .8)ocy !aRc;Τ1f{И|;_v~Yc1s:*lۼ;Z-TU*cc6=N>cOq*.HuOw"2dya#BS>}J@yϦjsV͙3)#?xمbUW7{_x X|!x_ww姶mzȐ̼.$I˳ + iYЙa *ΈŨrg\rkm28Oa혈g+ 2z.I/ܳݩ΃t,=e$k`tm.yK;+z0)NV9&CČ9`۱m6J^F=k?j/Td὇Y/0e!Vɹ]j# =}8[)c,Լi^?sWx/kŸ!􄄄 '= 7z_W._aw޵_݂~hAgcؼ$bHnL)O|o@YuuyPzBB?N:,9"t5s%CC9.4dP?9e^\Z*hrwn=˪jF/j>JDNX.F%]mY|qW#Ytt@S؄)F%XƯ)AȎ+%OV7&ÄPZc]DUU!h*_Ol=͈煋V7F2rnܳvܻYG@e/i^ Hؖ@=VÁ=S x}=^)ԝrd1֮Grظq{j:(xJsMȼYVFYBgi4RÀ5kٽj8h`P#k-"xñWՌdV ύHsQVojÊFs9ك!Ù+? v6Yf`BD,fMdASOGNƙ)'Qs%M 颅h` e! 9h(dEcb>V}ڞ;ϖX]\Zsn;'`s#O3g_4س\};vl{Р 3&`tgkn%@kd9e0=1w` "KQA@J1ۏm"5ǮCۚyV=cZ^k$+PZՅ(ۋ!UפrZ)-&.V<+MQaKy왊5=^^dY`M]+yw\NfTԂ g9Gii&YV2تIeڠ괁>ؚ\RDN{r,ԌxS*/3a;/DS ۛ uabU9040g-sQD8b^ϭ-1[SgđG @ύпkvBkxmt* 98i"&̘31{Gݸmv-ny?vZbk0| Bht5`Tx EdE@ qM˳髲BՁ%dfL0a"M\Xv^/o)'$$|3^bO~Mֿwߞ٭6,Ch( *2T(ѝd Ar0g=L!NZdj%K3Ƅ a1#`AUUa=jBo+n_:j>vșcIݺ/d !Y{%L/h*;.Q4Zw„L8Us窫}?_7_R@OHH8Co9yr㛶mPF(&ϠJUJ@(RfxxrG˄hX>n j*Qg,g399D 0)﹒ŏ&a$2U@oe>2MFh4QUi_O*[m#7:>T֍;mнQ mos ~w2C-ލMʣ'aCm 4;iU9w;`2:7?LU(䚴Mi+xCs8Wr{mb[O5[m0r?r4]9m5'}e|k7x.H=!!!7 S'O~ ^򢗟|w~p-RVh 3e϶ȲpB>6I*cq:.LZ'܅,Dicf֪fJ-7&ќaBKЙ E,ZVZ^_hLG9]5fkʑ۷ёB t NY'xӞu[56݂7s"h(D. 2߲hW-tǖC;yLiUAy" aKu&q=pOƯhԵ6h4뚃U4|NQ;FE `}dXdžP8 œSO'˯9{xp${BB~x?_%sbϹ{ܾ}#êlD27bv2HG }MT_u7(D3M l:=M!&E N%nBə1"&),cZɼ;@ I 0  x%O==f9Տ,5#V6%J4ظk{,#شsCUtY ωPV= FSXe߾3fq-ܽhT+(D9ELhSI=%OAvV!4rW;ч2\?p9yo+weIGW{@2G8>O'=o8'_^~k=l+Q4Wտ\n_?_ )COHx]ɓ&/y>N?C|?~ÚUx&]ȋ')d憦TZdJY&Vav9>LS,BX,my"٪: pz;Ȥ*D9a\ph_<uj=ޚ{ꃫH.|ðK"tmsFs yK a -y`jxӍw/ۋM{G߮0Z9T'Ǹh^WAat;RbQ,<[hb֤.4zuׯǜI [vc@?VT&К1Z}"sP3푞Rdd{k s{a^?٧vxL=G(^עz;p|]w[6;4Я+[A E EWK9efmBċݾЕAR2'f/lUUEG8`,Lۍ13C ![y'W@'Au׶ZݒycI]b7<ZI]&EC\ӶFGF`˲֟1U52M7s$3 7~ػgZM+w˷E󱽷Up^ ! a{_ソ)FZAeKgWnkX8c"Q(o݄ &bspĂ {lBKa`V ԊrqDL\:ӿ6"ʈ28&3"8 z=nG?_koa)'$<~׿5<]ѡ\c;vl;5: =L݅FI&j4e'MExKal|[Gd_sVsY%{UPΏLtJuٜXFV.SkYw}}c2!ƽ-vG@_%:6O<]YE]l,&&Nl`tزgwۍ \lE;+w/{K9ᑫ;ίJ~jh /3mԍ#_g{΁=]ĦA;k[7gcִI65ßnق6u=E/6, QEr<ۏEW<| yIZ9vY.>qgqgmO:t,Y-u )'$<+>- _ss~k͚{߾oߞV BV("fl2c8q1Lq`%.8;oP<.r^J}491q5>)&) |$c&xKR+Ѣ^,b%s@)NE>3?_qo[_r:o=ĮGe wo7#6n#=eٵ^PJR"Q9,󍢀*FT/6knBg;w>`9xCa70W F2܅<4H:eF@U׃:B(2?%˾߿zIKnS@OHxͯ} &OWkp9O= k/+2@hdY K47SHl&˂ ,s.SHh^hdj,q*:BUzm8 ,x65oq2 4mOcLV/ k!sICZ,+qWvMnsqKkܙ񁗟80k7&MF_n\SLuk;y l_] /(0[9F]huvY;::m4.`VuwhzN4awnG2 fNĤ9pf x=etfB-o: UkJZk4'A#{U=䣗-yҝaͶXn:  Q0\(UrT S|z`B(5:⽃;42rGwUG~:<0ܴlxuj0W>5i˲-KZ(v̵~S|Y\k1r>1aa]?Vn1X鼻9~:7ڠohS< HQM;%7E%'-IS&J-h[L%/#.gX2F!CQ( 9s.F՟NYjtq^ǟ8 U E-W@< \j{w1iȊ.v}3'd7Bv8̆(S'\\.Js:,1:0!T*-yQLF$`GҚ ha{g)+O`U&ik^{$>1$拆QpQVc}n"svXsi|9w_RJaC`rgܺmڸ~SV gTbD'3L E}&LL>r='Q g4*#7){6bByUwYh)H?;xޫcyb։Ď#B8aԫ(0Fo!s p~زs6݆I=ݘ]wmdžýFJWPZ S`phAnڵ ==]* 9]}嶎b^&q H3Чd|?uڴWuםڶ}ہ##D2]]hv7iJŁUiHn;TUIj;ئ5K-REHs"_vId:.vy1ZnpIj3x~96IU@g Mu7&CWgu>_([}’=ϤϮeQٵ^ hų0iTܹr+F;2X}77βR F+_oĆA۶Za!ͩڿfdJ:pIu"g`l2!4dOIdfESԄ.,3^ԗm(c ʼny%9g]]]UPc]Mu2 ([]Sf8:^?FYV= z$Gzr9',V=\CZ 0{Й7Zh4elvk}ٲcsi|_I3g>{)'$/{-<ǫ.z™O8o .:Uh@{ށaȴEVq{FZpOF*TxνwV%g*@/;ZvV#iGkc!o.H{\ԟDywFC4"LOqg- P>A#ՍBch{ 5Vlڃ[1ڪ>=4b+h}} L$h+t[ؽ{Ȍa:eP/<8!D)1KqGE^!jF>r&Az{Zi}9OW?xS@OHO@:ēgf]˾y`]m4fE@g1!O–ᶊD$Mk2n=Z@Z=` Auy.]5`)y`s:e&Ƀ;W/YCm<+gP[^'&3ǫ:O#g_wEʘ)lPZ0y958W[' :drLxSJd5?E yy WU:-٘@,ִ!}Jd0.-˚SEWcQ19yFپdtc״S' c;޷tv`V{bnulF36].}&i8䩱]pE<0B#דnZ0dN;:7*cj"k4Ge?o۷|3xчIL4 /~e)'$'? }Yvw,j OWUUAiDWw7e(Z42S҆A.#+#UǙQURT[UO\\a+ 稿Ly6-_aڛ9.)EGZ %Y!)m @QJ06l?ϱ׺T d47'.4 ϥ $g/x@BB7Ѯ<Ϟs'Z{L%}yV4Pb*I^hr)SQKXby ًLř:׹4_U+[[U,c;S.ZV Adgq0Zv^4.c&h"Ug-\eC/v4NV^Ns!ECnw0Ƴvc݃zGm+,ݍݽ=3lu-9so{0u\un6G/ע֚pCfSF^C8@FL 7uy|km"]PGVy"M^ț "dufoܶO< ?{.KzBC~٫ѥ3OSϾCمq)'$<ړ;7988ڠՅfǝ <震eF3?HtAhf[~Jxk)Ubt\0vu @ܳWGj #ٱR1*23]˨U<,afK.hϪHZ=ɂ7t uyp R5__Hd&>9QLbx UB>d>-ug=$۱;xʡًI=_2ΣLb.DnCŶW-tHF)JWl[^#=5vkbeyXlUA)( 5y;N[vm^zK_gɓO?G4%!!8dXz%,9v귿ͷ^{ipf24H̐1"CՁ%+$#Wv T)Vw2, h8W:Ne2ЃUeL\DTyaa;ѿ] Z<>dWary*@o-bfUJ !}_Ui ׭Ke32NiQxaӎ~`Ϯ'7 Zo\Ӌ.w%sg~c{^鎝ft`iE<|tYrB<Ek+%|odweᆪ-Uux(\u~MR@OHx}|?f͚M8Gqĺuk/)H++o (dYӔ/Wl!ZJѵ2%`Y-AIZki \~7!KNZ`3z 9{٪4KЎc2;y'bb`-= y z!iYSy,>^YhCbI6su{Z#L# Te0I'.fn3us څV5np72q}|Α_*j<ϑ7z'IwU *F{$W:Y=8E ó{ɲf[ ׯ,KX֢.gݺ7Mw;lClS@OHxಗ^&.m.;[n속?84%{FW&< h<1%dzbb '05ȥ0ƒ XjƩa\2tpek=`Tr8?n #u?xуWb|/`Ĭղ6&D9" ;9e$C'zʆ]d(j1Ƒ;hX-}8㈙|ROcpo3x{3.YL-䋎vO1FyS\@= \;%rCYt)x$WYέ!k6cxY9"'FӽM6qOF7虷qk.zm׭p-<׮|ЮK |߿~S]W|]l-GFGefVbU9OAEǒ0jpuJ3<9'\]g/wT|'+)<^g4=q(P;`zJ^`]]^Ŏ;QEe@>ɕ \k[U[ p q(q_P{;c"'yq [\cxtW1rλmvj{H=!aq߆s5 .>l/~+YmwEFF.@v,e*[\ւf,zlu<ltQhxHERkZH5Nd\9pY$ֵf U-:4[("Lx4.\afbKVowQD.V?kD`= 9R!qaYXhnvV u36,j\wW;ė%L=gf ;:kh􎔁X4ȋ&,]8DN*C%{xO8[sfk[mp҂BDdԣ<`<2/(Huƽ״<[ ۃVP ׿u2y xس{[o k/˲R4ڱl2 FS7 D 2n:){R.3 -HƴҷjG=NQXdV -}Q!Q੟-?f[vU^ P;vCh?Hy^̈W6M&3#u巆DzzV9 worA٩/{!_wO07ᙏ=p^}ĞIxk^)SgZ1Z:^Pe"H4NcLB83|ޑb&tAX]˗Rlͼd V>}噧<޽Ǫk.GzBƒgزj#f̜~[o9w}z-*k+hCN٠_-Ǡɵ͌-{vOb,Յ!yg10@V%g2g(,DSRJCZr St)gJIf2P%-[FF3-c^y!2Gǒ> "?_𩗊WԦ G9wBhjwԉuZcٚظz'9f΄s>fѴ7n}9矱W_vE{ vlڎo=w~r޶{ Xkd9]dj$|i5!J^xaڄ{lp@'fVI"O@yrŘ).e1QJ#zXv9m-G72\X x`_vwڹhddB(ALCcݬ&3օ޷_fJAl.#iM 35v%[4q ZbFrF+!!#Ws6#1l,C aNop5d\RE;2yϣ[yjAu}&w, S[H|4Nq&C.J@ d6Xe7/݄i}SLk~7m9|݁Ss8޲oOxk[_>9G.۾}{8(yEEA沷mv(-U#8)gvO8ɞz2F"ֻ,B"d6!,˰w^lںVϝu犕O޵޾SG۝̉jyyda4/g>&sQ~ad*ХVb0bk_zmn$1C!;>k-r%s<QqFvY7qđ93}'-;m|W?x1)'$<xBϤI'>g_֭];w5<2Q4( dLz%"r?+pU :<Dg0\bWSi{,_4 ohJ`C4߼|1+ WGqqTpR?3!JJ  e[>Lӄ>dnч ,[٪8L3YNYv:l_kbVfM1GNS֎VGߣz+Xik]}muz&cʄ.T%`Fp_5ew۵ jw65"GQi1pn| 2NUS1@5~x<šdO <%+^qZ)\෶% j^*r;GjQtgy&Ν9_;޸sHlW}}Τw[cM5Z8ck Ԧ; ڇF;F .5,GV,&ɹP?|Y#ؐ6gc2{ #CbhZ}BdHfD,#Cܮ|Pu:UIm&sLl-^t?|?fu1K>{ޤwwy/G{oM7nooߤVe.y.Oxg+QGs>l!BhfLSZ45-+ >fDs<͌Vp(82:gC>ҡ#BS*n(¾4"{=ŴⲬ **քB1: cs0nkkGmxp 1d)SZPqTe*i쬋Gݹƴ MBw\3̴j{u,թN)+c9B0Yȑey\6j*w pӚ?S E #EE%ȅ,dtj:..zdyJk ufpZNNk(F)3vg߰O7.%J-d >q=/y߾g˖M e0@hҤ1J;h@hJޑٰH uM̙H}j 1sҤZOAYKXǙ6Jq38c^9@*v^Hr`OVGϥ6'+=W,2^UW,P+IUT :@MnDF Tep-DWleȌAesتҔ2(xumցQJM ¢z@Q yNFj|(1p4U<(C+a[OJgUø*Ĕ$,两2fj_f)iurbC?Esepɳf#s]pXGFh! EFy#˽>A T~e$ f?MFY.)EuC?R"_8\kx}"tMJ g+N?@Xdi ZX! xl x\~W}]eۖM's~ nm,soy/_ם4<2,B٠2IAUf"P/K`Exhe-L ,rxQӟ.8fɂ† T Lړa"o2P%#сG?mkc;wWxme#6EOc.pjVr8x jgXLe]`#+Ev'˳|l!J?U:Z0WOZ'mx./kcCyQ T ; vuw===ЃՍyW/(F]]ЍFWES\EZYu< p/}n_];wNt:Thi!S hۤ, Uao fbE?5gx,xǰR^r=#{[yWTuzvrmpB2ZөFG3fE93Osjе#EP3]&,<3$Lgsc4"c8gpn,y4Nk"6fYٻs9Lft!utLr3 T_=y2FS q\6F&1ЋW 8;zbO2Z"lYQe rzLYT}X.tj,K0"ltu=?_w92i9>~ۖn=eفP40a܄ջsxiͱ奷O Ob4I\*咥cnhbi.8Rb0m׊fX=t 8%eZKA-U= 3eò'Iw2DMdd!ʲ5YqLSM`a@YsIlN:ZSHp~$Hxr|^bWj8i#aM{redY[o2<@w,x?s`Bt2|g\-q|9'ifSKZ իL1{[SxnL _'ׂrhV>HAD$0".N:(;b5rJy =!oIJe˰u,XxK̆5uמ124,[vuuh6L&d*HmV{+&p,^h!2=nb+e0,X!!qDYn7Ȃd&PuR>}\;Y f%Ȃ"cٚ廈}WI='Mٺ}w']]䞐W1Gon߾mF&}y@ (d- 2EY19PRfih\'7ͲV.,>%~p\c2<e9[ `rR)78h~=Yu=8?eq+S]d3B)v !,b5@VP٢qh&+ӧ Pg@T! tɜ^ѵEX9ZPacm|kzmx1'ug-۝mE}s^qrٟUفe%O(_[Zih1QV<-TYi0/*1'#/uoIDAT eInN{F {bYٔzB_~%cܴlN9Z-<-?\\}[mdcP44%'d yJ 9m*TUU^0v_Yc͵2}ଃU8\h5gxM~3u{~]'UUgfÓRLù J' YfBZ1E%_,NGUŊڇbp'2KRJr3oK;d.ćy\ vеs쟧*I#WȸdBY^-L4뙉Հ f)JljgZK.٦!yx{XCyEJQEDi(HH ,2 3BKo-GcUzȸ&'4Ic %6#?cځ<)K~qoϦaRh2)KaG6,螦k V[L:hC T)jJXSTbd ݨ dcv.6:푿p=mGoNٹ=oy;/9r~~˭7mΝ! Ef*́,c2BC׆C$hMjn98,SbgG7XMyes jm ֱQf樥.Ls_@Z+Fu<-У,߳d"W(Jē[DBй- J-^J}ͷH,h6maQeɽ8q%T,]#9,!cұ arX%g{Bb=\=9όZ%sx\15UNA3PS k2(F_I0OJLSp"R|[憒Ҳе2"i>e~!~Ʉ;-ll· 6>*(r8T"M-X<@)t?})L,q)۵0[>~*(9HPP}^BGR(x%|nz%y#>ntuA)a LhP#[BjQYU52gZ~f =!>|Du|>w- 7<<29&&L@O.Fi@ sA /!*BXR/<d+ձ}e,ټ װB] M5a-,ZP11PHC:hR8U 8˵Q%#1aez#oYD:gm0yQcfyC%ѻ݋L/lJ8XAm TFnqIJ;oAD.'HL}@yǒxd w+ؤn~ALLDV&ŕ,S=FLHۀ3sN":.T 020HcGS*uHת^QݐOD>xX+ޖRЊg 8>Nʲ5&SFY4oq<<avzE2h'J Q\xk#1@Qyڰkw5lEr&˂ڃnϜ D̛ΐ@sc ]h020Nf; _(Y 9 3svh2ƥ\\iozM7׿a__owUPȋ&6T9jnuc96T$`J}X$I @ሃ8vQU](Bَ5c gbY<0&m:w=%᯹D*|AmF pxiX K05NG.1O,s.;(S\-cYd!듿˶ D!ȈK[cE/zR f`"PkuX*m{xA 乚O\#z@^`ӱN0DX'lp%kCpk2@q-@$p"!dB$}Z@G'f.`p`\*@8iCsU,˜Vs7n݁ufz%G<ܲsQsןٱsYC##JcE f$PLB"3uBYWLQhDʢ|NTx>^bBZ%XnDwG2RhJ#mbT,D@h SШͬ(g9L^8R{PDԢmfOws49٘%3֡!tW;d1]!YpŬ vHBs.~2NL*jE=YWŁ &q|\Nѱ DxDř q~ h-4[5fsu7fB* * b#+UO+2^J=W di##FogF >V߂@I.Uصo㎛gY*'j_epD1pC*w# vPʳ.d=9`=z(Fc4FGFQz&tcFSrY֡l؃vv<mrJDdC+ڄx:l+rH[K~5vlB zNJ>dqhBs\ea&r6``ZԃyAEFjϭ8 ;ޘL2Y2eOܘ )pa8w6!6>,Ulx(HÐp&k7Ԫ"&<\IsA`mv"d~KEwP`.^4 Xg188NM7uAR1r(Ci"-v[l׮~=R@OxW\.XW} ֿ`pxId,/j! 2B 䍜{wc$zbY;GY3[Y.7athmX(m*,XJ>f&Nfw ãCЀCU(%lYBedw{ 1˹e 4 bWeblf-2˭z|^,_C&/Cc/b;#YN"/쉯HO{ak*D%xxN֟a,cEGV *& "%3)'2*. Vr6@} K9b&k=d4h)agU.׭2Yu~V@3/1u~d=CWưsbnu#2wFFC#oQf,/i0:2Br_q1}Oiqh~5(R@OxD7 S&< {իO/[6?ztd] -z8Ao/-hp9@( +@x%@ hpy zRrc,)%~=C[<1e4L:FIzmvF[-:euQC m,BF:3Y# FxʎCYr*g|h5HVZ\2ah8F+ Dwlrr(- j#cH֩ф:&,Rlvvd&Lښ958=#0ŏ%9q[Da#o-UY}-dJ,Z<=%rMɞbwvst|}K\(Y } . dA^ح,zZ28ȬqAajO6o܄vw_ڭ6CʇZ_k|l0緄${||Aq>Bjip9fW28Q%2UA?粋{q5OVb܎ J'HXl67Jљ[HHx]oy'LFҗ?e>ySZ83-yQPi9jV!xHr>% I) b"@ kZZO<> aB)3Q~|܎}5gޞM_P{P/1׈/֦pB侲xr32U7)X%{]$ETmqѼ2?/r|m YֆIZCG.v6T9"i-;t7P" HqE@&#sDPh3&fa p;mUˣEjLA}1檼r[֦ .—\kpܷo7zǷmvdݢ6ht5Q4$̈"6\0ZV#C(U4&kQ5~dʭŠ&P1u |Ё< ;W`Ū5س{/)+w6}6LF(!̹Ͽ}~󗃺1nJJZTeCz*̈́#~o4CSP|b^K/Rw YC\ >Z hCמ[ Y 9NHrND7/e{n+^?>W:'/M_]H2w8ͩ}kigyd/DAU~!V(] IfWP#d#J;)C=rx&,(z;Efǔp|w=Up?&\ʤڋTh#ʫ p,:$|"0ށfU|_{ofҀ"IDLT0*"̨<`@xFP$&09OOOt͡sΩۣ?0 h3V}{:n0jP#ksּD)%Tؙ?2͌\jȚ+@tT 4lSa|\YXEMOQ*_rHLQ֮ayRY 5H;n}Nu |A/ߞ`sey.+d71n<ƤΟw2$؃H@q % &wS߇D/>3}3c_˯zG>7\wf8.*3AVʼlp gE"LU: ؅S~6{lp8{ckpѣX__T FϨ9B%}̑aiUu +Erϰ^pOfŋ\@..}7ϩsWǧ2 Y3f? aJY܆]`nm"M&m~M>jiڮӘi1dB V PM:[nssXUT@E ab+ID6$*lu@j_`d$A:kN!xmߺrzpR3(-TDۥlƱܪQCHu/{~ -0O0TlFQt{g@2S#i߾mZ9#q~ llh")K6'k#Ƒ16;;FenQWN'q հI[G|!6 :7C%Lw d&5:@Įekk4l <A!` 1"w%I`5cnbAzn⠉=sfHUMTrH!6Vx""[O IWZy"ו,0yuZ>ezm㔄<cTX#-,Z|=0NjI3X7-zsOxu6UDR#&o;-`f%[EY/~BA۾{,=z_;<9OŋK曞ф`ض!Q5k`hfFPLB6"bUz+JIT VEc|1k_ILmj"vI'mnΒVv{d7c֋ z& I0sq;Z98a0hѴ-v ڀA/i&2O5ΘI82F6p \s޺G'"H*B&"a\p' ߷n2b^ر eoG lgF_&5zMvU9t}14Smm#Yr"j6&\ SrXmLh,r!'w$%R0]ahMphY4x&J3&*e5aa+Wr"buVz!4_` h[X_]HZgF`Ut Md\VA镨Ư̈ #斮 G!,=r_=C xs.[?C'UTH~^q՗nmS| <˕/=VjfHe#>ofi?ň{{bzllc2Ac"Yz<)#cǙ'{CSs DH7Πlen;V+P`PNH1/n 7,㒫W+p-#Z3Ћ󌨥q6ABV&|;RשnC\\k&l֧~f)U~@e=gz0uг=?ơWdY hQյ\lu==s{+=n*8 'TLHlwm1<sO*Z񨉠fYcIgZzύ]-9 A(́kX/9OYRc4 WmUy.?ظmv/5[wG|Ӌ5X[ B-t_rG k{[X@﹞ʂ\PFK O{>*mk'֖jk75ơCy3b0̽`q7lݣ֯xoKs7|s76zbC/#i140!{!;XPf`Ҩ6pI;ws}Ķq1Pq)Agmc*O{lT`y0(2mS;>|p n! .)QLʉ0Μ#cQ,II2n&b{6h>{Z^E@*vm{N2ѡjawܨg:0襫9; b^kKbb;9=:bGJ$5؜;GDVlEA lc#SwMTq*R94%YDȳcŚWܚdTJPD]"tϭ+Ixvxw:42|푳9ٺۯK>{ ~Cx _?rO-xj; e'amec+Tnr]8=m z\hg\W!+L{m_zNT^q*@;9:vMyUL ynRge?ڬL4KYK,[05]j1?7h2Ǫ0{G%; !K-p!VUSAvE_SvAzDZ>ݟ؏k+ъ'::M_X޷Hr*FxL&$n0Ѥcb7*)o Ϩ@@Yoy#8xkhZ3>+]gɶe6.9uSBm(S ϻ\yTEl;Gu7w6s>eITsk10O.TXxЭ242@.d j\|B`q#gkVv/*w"'۟mw㷯YYYwGݴ-Ŕ=x@ O3iV\>t!^qGHaȘƖ' ]QDaan#bme!tVsĄH|q}Oz>|ן9oN?uv^@o8@kyPq^8PN>iX5%V`[0gLm%{nDE D0G49O|^cnXX6f NfM1~!C•ȈpMWݘͤf,Q{"xJ&ioZ/͞s ?PG˗?z1@uF֓ !jCvd i'"C&8(Zߛ=09@~-y60zdncY1`~aWװ,.i)h\yWNT'mE_4 A~993bD{@ح�f}?Ë^?õW\|#o4o~}4Fzr(14(YڵjZt]tUVPTB8զ(08^IaN1maueXT> H!v{1cǞ)߽`q;Л鵈M#s[ _XtrVo__) R|s-(AfdF~$fkrj=$5IFCML (3vz6m+ǕL`HϠLWvހۨ̉JoZbӂ&yC("p2-ؔJp-#X[HF9)&b~aMbyq kIN,>kZ,Th1~ݷ ѤXZ巷f}Vc0'|+_\ ~'cubhz6FUgǭg^ŽQ\ʩK6kjP*B gZCD xK˘LfdCl*Ժ2>>$|N#ۇN؅p8(=rJ혉> z _o˷Z/{~)dgLk̹81.\ w!t:a=hFy53_cT#֭^ˋK@N]?JJ=%:9g*$3季=cүY@z"݋g>=~󆫯6֛.% MW%Q m^d>g"!{Vp\z,nA@k?dZM8T1hpn5.`%L}*XMzsc,'=|)ه}'F;7D$7Q|mMQs{ {uJ0{L:{FdG]r`Zp RVtU YӐM7wXeO6= F > s;'7&JGҷakc+K8+UlT؛I:⠟V_`_J.\\;xCLuu'.ƃ L:||a}[Gc0QamDq'T3zF0 vA rruj'WT6X28IҒ2ɈI5F% [w'__]>[wz/2N<$<Sso/\2T?:->ڦAMXvYɂUVD VL`NT6=ۭLJ"*RuP6iCakmk+'U%\Rmݣƙ7'>Dy^b7[y:vMm;f:/`~ n:W8>{? !3r.vpvpA.U۶sn'QEaiA]c{Y.[`w&͆ {зk]r]|ܿ[wzՏ v- ^B| ^؏|# }F9#624+UCz)c;+&/# TfD%@X:$=#&mpfq K{!!X[Yhk@@̩s`~ވ?$|#OC;Ia*0omRL jfn |_oN`qW2A`F0%k(S$ hP=sGe =Nf-"FMhBe{ڛv],Jlg%f@C)wAQ(!)]K{iLjVT8y'yP u&j v\.@B ϣ%Yʚȭﮓ`7ol$IKmϞm5foe"ȳx75 uK<v^p~d<'"MO+*1up],=;܃*^y n]c͏ ^i<zȫoew,ąG3"K"eOW mϑ=KvfJb+\y$ jK(LercRKbD$JZ2FgMWxpq{X`rك=",GVYK#XoK 67?4X]Zʚr" x,vҩ f*d0;ؿWGu5 :[If ٺp޹{yŗ^ێ9sF,O{X}qy:)\u> a´tȽ ͛fTD13W AE z^iP^֖LeFAyƷ?Dg,-aUFle7_3y?p^񜕾 .|t+~ ^,\IMhb z:5PMڪ_T)S> 6:}KkewޕX'&+L'wŒA[HPbKUȉƻ!ROV{C@(>0\w1{-F[X^\hR.3C~o?U{~Nv{5ef=plg]^\]s׻k,^;}1]tO|nƯ[2# ~M*ZU,HCT6oϝ$#'1^;Gd7 t֒X6|ceB`ulK'u md<;O:9x4 ̷N:Pr-MG@D]7 e Q.'}}nUN˷AαP4<>كp>yH[)Tӂ)pE&W}NST(c Ozk]mh5Mr\9y,J/UVzvI b Ֆ7!ϛ9NO~aPok0ׄZj bן'2#orpeLV5[Ǯ{*{c?gK?}[n>sk` !M?"/ 7)t;Hq G*>,TBY{2\frzGC@nU7qT\9w=ǡHZSITyntkƸ- rӤ?R~T+A=)3/z49\uU%t)e:՟2%q ޯbUl] NB!ʼnvO;SDg[mCv Ief8߰.OsYaݦJw2t.\̡$c~ J~[ce8s7^w8A?@jt*8뱻H#a.%i_BmMafw0 wgF2&6M2WQ%ɑP1\qϐ v ;@5L :m/ԓrґ4*١6dIO֒UOS7=b߾f=?x#{ʓO/gC? ~vT.`vr٬b#䄡¿!xyAce]822I" DGmC-Ey8޻!m&3׶ 81ױѫcL=zDB?qhy"*`Ѭ-F/ܿk>AUYYQ)FcIb',9ۻ54  9Eq#B5(t6焬LmGXϺC*8Dy<Xn24͐!ii|Pb`=,\@7鰶Uct &]Z+s'њݩ%g<\U4y ̟;pg,^3F3O9g眳'w?~Ҟd"c=̗z='wTo͕( U9mkU\-kO!}3Uߴ"qNjhNfFO\^/sɘ3] Z-2]kIhirڴjj'#[>w+~ +kQih#^f k R%|Lco왂kv=w VUTi2=\}SڪSm{tJNvg$9,<[.ѵ;hW,{=j]>|WjD<\bKcě^+Aj9w'ꦛN6 g.UL)}J+IX)bOix4 VXu owgboS[*\nR LO@aZGIM^0`>E~~tLg BcY ۰zUE(B:"2f4 ҟVV?2!`*ؔJSBhGWQP!MDXIei[2;6ԚE.SxP''1H`nkX:-LTkS:Fr- hkEgIA1?eNM>Nkx2ޚ^~x7-okrޠ^_A%ι@P RC\6H\VbJۥYH}M*B\Υz^)zԙ͚2y PiEb dGXa|C!F\\0y۽@cz?`Sw3?!͘XH]3瞹CuۃڌX` I$~=s@|cN\+)#6&Nirqm9<H>BPG7\,%pwI`oߥN?cwƚvQM:I'>?eRG9 a`2[\9 `! ׶;X>rk++Х)e$V'@'<жKM!9ţ]a̯I9 8/;}?o#uν'>~q??W]s-\kh"cם6_Y},+nYUgھV*I:::c,$ MJ ."Ow1WX$1Y`hUZ E9 Ѭp3O_ ;@l0Ip mcbvLexoI[AxeVs;GW[cͳ,0;#ahElq5ƨ'Qc{nŷMXI&=.ؼC 6lOiTx<\yn-zG00L0=3m PGSL>qno?5Ό pN:$$ /|Oa2!>?/>mxM7}"~#suxC!"WWF8&éP*7a6 ͡i(ժn|_ʅ|$uN+zADgLQ"t \ǝPs2&t[kR',}8AZ@d+42+LIt6^Zq'C]{k2p-#=7M+<(B*˜{ '^6Ҧ&+)CMȫ:e;^A߳'d/Kr\qF13"|7`-eCc5Z!h&e*\}5V",SHkS #ňPέS*ZDUOShs mՕUa<!(d!!itrd*7!"Me⣽r}na4;x z,^Eo?{=7~/{@)F  }Tl2TR9#6JPUp!6nH+,ue Q2* K \SQ͜jݒA+ 荡l}=~D%s.DVw Z jl>&U7bپ:[%Λp&ԛ+I5"۞xN=i%9aa= B:IR֊)냖S+Fz0#x1/ 8=3CY.:? y[g.j\ŒEf8) ȥ"cjn͜P]q>FJ(ɠ{M )m-Pf8`n~ `QlHZJԍ!'ѩ,i7lQo!v|!s~auo!lW&8́>[;=^wˁ[A)O[ d`S*";4 +&#E;IvJzM@aK0zf$dؘ86婨A%XkJ#T_du&͉W6N@:?~Wa8+TAT`΁m=P%*۫an%vTx0> z$ wH?ѧmK0CcQC@(矃]C9vvl.yu~N};ػÍ"jUJQTZJA%s1z%ҬHH Y%ZMRF.)lOrNH]BtW37(Nd5 1z6ְc#!EAdJQoehi Mf:f'5xt˟Y@ַ_F׍WdsE> >n;x(ME?@l8V/nbVh_$AG,'d4BȩI#gqJI*#V28`8&3̬q+H%'Ռ% mKOkGl [̞3x=si`N~l ^穈_M᧢xyBrNXzl%iZ"*A$|};AM 6Bc8kn^xgcς(1jK6`~mg:[猹nMF;@:V@YI1J4I]R]BK]1MV6}Q4Y{U"Q`CMWdўm ) FySR;.26z>~_TVW1?=ZW:?aVJs B8j7s+<>[_=(`oucM uFzyc̛=g0%h 0H(/h\ޘ(i|htben0Do%]x$#if<=B)+ovKFB*LwJ(3@G2f,^?B;^^Э_)#4`4dW¦HW0͍iq Rv 3¨l_ccZgfP`kɀ8_rG@TG`lyu˪=C3N(*r{] ٤Xӎ!gDS]u0ꆱ_U#;&(xb5rZhRU:$cg/yx*rh%0q^&\|"0Q#g4 7h{| _+_oV^NU距kݹ;cZ m. %&׸YY"F 2`6xWFBkϡ<_K0`%ᴎS*UעNA Y/vA̮صt{k!s s/_]ҲJwE۽7X$w̽%X.r0x9_!^G? c,/z`f|O;? ^}mgc j`ʒoB͈qE,N ȓY\*k8DUn>!3z6k_5J5RvA!ֶl5B{wR@{#BReZUsBuo<_jk*h)3@ Aǟ8L0a$W\||qƬ~茛yux7?xo"1B* 6*rx2&zj 0hp7wQ%'`.!nٶfSyQ,cF S3W\"ARC#{%:Vd\O5i{ #KX_]ʻܮÒ+}7BByG21WX˚W7Y“u8臾'^^^u@jTku*nR r 8NG꒨f.nY+(a&L٪순:* Nj& {ig+ 8鬯XJzd O'@2G@CY' ПW\v'M՘Ǯ|4d?WCI<3n[d;j Ci4H2>ԘQ~ֿYU;`\7xt6Ws4a g6%,>|#0XՔs C8IWFKhpCmɓϢI$mcA[V7Qr]Cp5ā)i%Dq(c?o w\ܺd~: Œm6^χuR]t>x3 +[ 0}21;[GQN $ⴡ D Q"PUN>"#+5bյk]!6 ʾWќB:iERyEPQ 97fР'X\Zxsd-69Zv%\!*])B=Ǧ5:$3ꊄ+_[ O$+Y^]{bhzwFcd%4M`Pd Kh`U{&ŕ6RaYhnXYF8l޷1" I]ٯNN9K"IYA +'6[E~8r)Sш~bA5S1MPxL^:8*Ml;c*R6 #fG\E&m1 XzZ֍*Mdƒ&KJJ|Qlfg,3L,H뵪S\恦m4<@ ص\P:JpNv{S|q_c,eho*,m2~ΩFLXh! nMAi[m@}LZF"Xٍ=x{N1JͨOvX{M mZA@l֑/VN"153-sM-v5?:.$=c89Heg ʼnҟ,W,_{ok{w}˯_Y[vbӠm{hV$\dJch-ɉpP8Wa 'O}o 4h8ZWԾɉIl-Flt)sǒcӧ\Xuڱ @ FuB #WS u5Ϩ+t#Jz'A? 8YrBFnJC2c҉umD™sۃl5Rd0sTvr0q-B 1Jd=MP(] YJ/S.GPt, 4(SHHK8\:3Jք>ֻ7> pb5`~pa<䐫Y{C(_N!'@-fHJ~ϫ-. ^?~;NxtGX,WU1q^#?wI]1m_n_|\9'3X$lШx,'jJuY j3 }%+#4S!6-]TCarӏYnKHOIQ^i:QOfHZ:qH|(A ƈT* Sb4N^Sy*KXHzd0 ǥW,x &*!s;Z! q1(BB*-EEɻ|n<{h) 6PC(f[K894$&:숏$'C~(\ڛjҔx(ڮ+*ْBtMDL$U%dHeBm 1h<ʑElmnHZm$OCmϗ3鷢jDZ}n(Ndu= ,Έo5 _O\|P}zx<bۢժ\nٍٜ&̿SkˉQR#rJlDF!zปơgpgłJen*;jנWV͠> b5y!tȠECؓ*A6CX| 7QLtJ~z[ ZB2搁bsX^a|̥q5lATLD%O*o+ h0:q{c?n;n^D&N`l-jNJ:gPH>bARURqL6p&+ n}6A37%e $(S e˜]r9'6J'|l֖T*<.6 ں&%ss\[2F["lF3>cnyQz^#'c4$ X%o̿A!,F&,w,q#p>p,~>s!rd [z B=eKoM}NTnBJO(g Aq|g'?^c =P׭R8D{Wwʅm 6qb'%5MTs*HRrX2"6's ^eYΡ%ϋ(*g RD Qԉ^ 'hUM&^MhoxFa|tgu{$®?O]vofEleB(ս/ vMM3(I lpC|g'/ߋj@k$+KZ|&.L٤4Ty|Qu) 0!|Xʠ&8,ĦxhBj L%X䊸 Ma;̰G ʂbTL6 l[h*D88o~A]RʞmA?@VW㣹b8e}z]Q2!+/^_ [R@Yi, ?~!#6xsz3я~Շn;tΤ&0 djHm>U;:U i6JR :;%A&"q#AEvuMM6#8ee\f11G ,(^ Nz9n[IDATuHoFa*I(ppn/ҞEc2Ra5^q8tx 9@dhM(1&cXdu1w1Z cUZ#°;5/A}8jeC3:'9qo;o_?5A>m$9*羽n#i>[q+lVLcDB&9E$ԴC&J.Uɚ|͘334i-$+sd"ش s9cei MFcnOTr#͹-vP۸n#%}B Lhco&zY@DokAxsܿǷ7-MwlZ}4:&f'cncĦTW) DkwۤZnR OKY~xidܚesI /Bˆ$`3FFDuc$X^AݰvƳCIAC%[70 ѡTm[U?R:d³|/'[q+ΎqFJcw v s<z]xypv`n@r+t\_j0fup ͺȷ (as;VFhD_`NDY)SyK]N\HeC% 5QϜK6a./U|QM~ۢ77@VMyjA&y%"s,-W*σA»鳭~GY@AA|SཿrOF co{=4Z9w͈<\L3ħ<#3%0  YUɍMHSb((]惮! V`.Uj f*B#.e͋~ԓiܰ.?`TT t]?|A$#ͬnъ1uصpi|ȇ{4B egngW ?)1ܲ\:.G|cd(6ҽǸ3O*չVV2z;q>V޿.`<%16&DT鉧N1\x*\(B /zX &;7BJUINzW?36Cd~=:~8ߡkamo~_G|qUҩݤS^ Fh4۞LF0"ϡ&@HHިoZJѭD1/smFI)Uq^r#9Wa[ߙ}f$rV0YeP t@ge<CŠ7 #ud =2n|-hiu*߲[{!%V+Yɒ`ƀjY" p832'uc$?kUb9 薟"leHnl@Y+\1Z$ΡAˆy{֫"LLJPV%ns*0Sw!33\mNtrk7*W^9iUgfѴ=9s٪Kc\y {T.F=&HL@ 7c4` }_sx3vanZmTDf IVڱ'E3m ~-8Yב >~-gJדv-92a6t,MY*B7s @5EN$X{F29 iA ''CXǠG$Qc_Aq=g/ĔŸz֓J5b姮߾O2$ycI/*/3A] (uӴXVV3]{8SN'G eh80#uJΈow>׾:~=k,~xP$6Q .AY7ka="BF ,f,`x OxpYgoiO~Kڟ\ZYu+ RX!TL悋rݷH AXV!1%5դfyKD8H![9K0, ]\Ü4{SNn C g w޺0I4(:QgmlmI b4iQpٍGo؅nt@ W A7ׁ;"|(A{zvM f[ }g?{dž3VdDΈp@l_ɥd>hz FKX-Bj^q%k~WeVg;yX .Ȥv: 'vu>286,ډ4X^\ƪZZUn)AA'&s2FJ..k/$),pGWnBl?g~_W\{'C۠7]c8'y/Ԫ2V6$}$aeW1\)ve FJ1岙 $ 7fmcD y@ood OT`fC{鎽]2mcTH)!4a"xc4 v `eAu"K*DSoQPjcH[o*`OAި۳dو2K0 sEJN[ ?\ mۢ?K2PHC:f;f:%Y vgZ+rI~ G1➍E^`arf,>ե%2WU.im"L~ؿ+NP|)́˜\yVf.[~7\?#?s<=I_M\w͋VWn,sC=eM0m̶I)sWQFWX˺9My93#θEqR}uSpjʟi@0&ۆm%g-k/P~flFzV6/;/#牊T;jc}m>%\~QĦ+ W|Lu^mjH^ɋF4)SNvq(|{B7Y@uP֗*B۶NQU>@2Ow^y B`A}z6CNR}_1'cQs}7& TZ=jh(/E qMӠi{ ߵDWэ'N~3WC>ab@W '#/o4!<:I,ߍ?9;xw7=vssE\!ÁJPjmNkg?A!焜: OYS0wbMt29\lΝ9u6k{*䅰$s}lu kgB+Et Y /tqf5s1JUKY]@Z ^OUcgS^>_:2"b@Fck5X }:sߥpA$@%Yd: aE]A@Y«pV= 簺K\d,s>,kB!mjjƤ76'9 Q׏q,,M _B<C{?+/7vۡsFS~0a^r5dRiXTٲ)u7gIiVa#a6nFYl5VSf-.ѶPR1 ˾^mOoqx\]eaM ;/+͉ZץE|93 6B8eŇZFZ4.78"p{B򱣒dzlI!gw JV?]GW/Wo\' U"@ێnݶD>!#Č#+x?op޶CsnׇS7ԩ*8Y~SIT]k1xbȢ$݁OUжR=`]%lnnz"ݸEˎ~N2`[aJ t s~Ѩwμ`, {X͗mVb?iO&t{> ~kx2hXҏlƉdb"0J Rr܃3v Z\,S"mo#:kJ!,Nh5dDTq M FcƱqKO2wՀdUt&K?#CTD/^>+xX@~M+cbPH[s (6`ڶpMltZNjτAl]ǤD== +^uMӠm#3VK`R]ȁCQ'vɱv8ʳf`řA13ciy_p5 wsSN;++kDٮmE8@cvV8MUg4'(cM,lW UpErQGҊ CB K{޿CyO{%+);b*'"Y$mC+s䳊@\JXg!vΤIqHP GA+p 4;yҾ8TpuJa%fKf.^Oy,Gɥ<cc=t&˕X6dU 53 2<(BeXmhKE`̪37ʖ A <+Jڪ`fc>SwJ3\hJ g Ԫ発T6bu풿:k Cp2pUKxCU7l SQ=nĶV xWLP_J{}9ԯϠ3+ޞ5dpo0J mT} B'_pb_~lD͵ dA*jc;*_^hk Xͪ{QU0.y+k18~@KGiE,,otuY@ qao/7dm} }.@+`еHKiN 7fyl5YuEg01ѻ9M egY["?TF}\ZU?ONBьbH}Ť%B+'9~.2U0]oc I6f}k8AP9Q ,v8p 1oD0R_jx*X6cf?n{p=xq=u<[]){Ó陸Q`͋:`sjJdDͷJ.J;z(岠9y╈&AM*CΕ`łY8 (Ϊ21cşT@6mtk-hh$F"ŢC+dhf?wDK: z\ }JPE LϞfEq0w_+vJz?O !W⵿}14 9CDg֫LE/狢f/Jj b3amrf ߱:]^v;`ߓ7h`zXX1p_gί oF~Y~_~pٕ_ѥMCl9-VֱM.Ɉf6ZD>&a|m{=Rs?;h}f]3-;pPo|ێ O|yskn|Gz%{6kD׹ʛX*,dߗ f&Q3RsX/sA2\meLΒBJRG=!F A?|15͡ҞdqJٯc%uŔWgR1FFlg.p0rp\3aks[tb<M"܀Fޥj.onV}uGc mGqcۇCmF 8_g:u16 *muRߗ,cfP y")\c;U*<2OLIp0pgZQW#KF.beeX{pGTI|\*LW_z^g~95,=%g\ Žfr`_i'}'^yY\)]+R3k.[!+y=Tm |s:KB&ك6㚕Jճ?i%b/L=K[8;,_;;P~YﯟzԦv3g% '_{# RMb07`~d'Qh" kM!ȊM##mjndJ"mUMc+H nBb|D>ؤ+>5'64?7DzP\d@:*qta}'I0?qukx<9xU*J.;ocJ?* km@ԁO]zǗ:.b} Ķ`~%&%):CYJRjU (.\D2[س eV b*61R{!ϏO]OJ@h&=`O9ҤmRN9_1f^ƕoWM} bhN̉bP{c.(j@K/i*C@: 4!O g.@\ eL$Tw:L5lQWm j k P`(=YRZ.D9f͵sg #DZ%Joޘv }:u?_`?D;[ h`L81UatzV׏$9?-:!9܉͇濿 ֣Ib+U - pf-))N{:jTȡ<$%Z攐 arf1FI$b@,G"!6 .bc}i,#iƿ?`O6a> %G!!֐3g.3F,ܹl!kEYu )I%)sZamgn1$e~+d-2p7ZU$ Ym X Mhy$qMpp(C_g>s5ierV";hRv * չ@ÔR%H !$. %fagHd5zICӴ V2l x"Bk[yV@7{b :7_x/֢1D8@Ƙ>VU۶ SJm }A"a`ZV)@Ȉy {-.jUT7 4FJZbRr 1kȬ* 3J@.e  Ej՜%YLyz-v܉d#&&xs`rkM XLZ]T:)+2Te !p91!܍@!lj])́H_F41 hl"+Z{qI@"ڵ9vęj}FXUU{ZEZs..Nr(!ZŪ`=:.FM60 դdq(Dо:{ *A+3'H %6 O1]Vt)k֙6gn@Cʽ^nbD0vDbCħ/>~x3/'sƗלK_񙦃9~*`)ݹBRިl [`yexۮ¿~ ㎴*;^ޠ_c\ : d*47Kh"*]0 @AɳP}?KH u~[[[X^\&1R2J<mp#}F?3*UAnuЭc9hX=]8l-M i//R1 "1Ytr_]_~ AʺYO+L(A?.hm(F?KPgrpA|Sb}sZ>ت{3s6^꠾j6K c ׇ ^S^Fpo<᪛UA7`8`rEeuɥpn \ZۥNP&cf%MKlABB 1ص|(60 8=:C< e_To</E LťŻz뛭;pYO|S μ9tsƣML$8 i}4V6/KJ3II*R`zfsa̶0uK:Ln9HUg<Wuv)4Ma[_"ҴK.pVC Ho;Blf6J*JG"3P4{{hETXݖF$.X NA&%@,HYj29'bdA "qdDgjόA{8!N;i>y'Ǯ}\?G Hrƨ6&GX9[m[7M<ۖ;m&tr ɫimiB$]yBu}rYEzKkGHIp `**vʊ5TQ0fuƮV$T_mj۫r8ÙG/8/s 7 wf,5.U[VWW̛!YL )K0zȀoƞfD +H)$Ma-W8S O|Y\o u0ˈ1ɥ 3B?H*@a}iy:¬ B(qm6 Y0+.=z9*mkVūv3_oygcm "kj8:&kwғר6\۪8*͢nU-"M J+|FЪ^&[yz;Wʫ=C Hs˜ϳ ؙ~6O ՏHN**$$D=E5=jD]&K\%S۾g_u&@vLP%hB'"4A<~݀ϊU2y{ЮȒPa̮W6Xڹ2ֱnvjF0-fl,@8 9bR!gaA)Hȡhs6+Sy pd.V$9(1F1Īr =nHٴP~X) Qէ ?VOEM ϱ|2s66.e$`n}$:ed $lbyȿ̯"<@X\Auks4'/{ߺkz>I1n5ZTGJo%ZbQ ,jlńTV{֐T9F zkU~f4X wgs#+dl:f+TIPUWC UU܀)iM!J`K v(sC(ղV O~(ZP QҲ.:P6,BZC=>ӵTۂ=BvD X8zb=(kdҵ fT^7ړ~o<n3axXb<s0^1do/1-Gc]w%7=dY]"۱*骜RNo@(ciiNޝf랴fnF&^5F1޻i[77Uͥkv]~S rڝ2j]uuުm\HCm'V40m =2ENsHY,;LUTØo6$"VP[RF֞›S4ё'etRC3!֖(}d}i-3Ѱ{`_;ndwE6hDBgI3k'\:NY '>Jr\R'qz&9;eϺ!676H,v4#j[~%;cdUe߲plm,Og?_~7Y_|!o%_/G_n<mdQb'jU-ٲJk*1XP7Ji @ٌ ב">d"Zg-&3;vٹHc-+UU'BgM79 bsƬcss s"((Q2^ 'Q{`~A姥{S缳^{4&LS ?uE7ltȅI*7FGQfm[FfYIڋt|,c5Nm0iu:)5VMG ϓҝW,'tx④)B*mR( maNؾCṕ4IR)&'90bJdHe AIkujp`zj :,..mӌxAĪ:o\􅌠 F$ېDo@@σ!`0X|;ܶo\k]{D ZH$@6x˱%cc`70]Ld>U3BZњD\R9LS#.ʵV;ʣaY@ 3I!muK!A8#+Cy :NVba+V2}Ld:^l*J]PCB%CHk-Ok_#ؘ$b еXךG\dTA@ɶ&F\B.#(c`2 sk9^2]ȡ_@6NxI E򴓈^_cYȲl>^Wko@7_=pGZ#Y3]be0϶)W0J'{vRw4m)M/.dH5A{A/BHKӌ"Z K*K JD*kh@LхXyG΃*L"3K+O8@"'RƸ  %T0#TfVIb;$NurFjx(Bm +FhSB0)l"?M:EQ /-zif=r'-# SB# Q_": nֺa9-a0CRZd ƚkdn\TC zQH*U_@0q*/jaD`g#\g G1gCgH`Qr9dCN!aLg툀[%\uyK$u0T1\YRuZ#3S+3@:C6VdK_& D./@ǣ?ֱщF>; ! lǑ H(qS'heDT0phqMH 9Dy0X롪GR$6%N$YpS0<8td Ҽ]3oG\~\vlú=6 +,zWkno-Σ[_xV|o# Ŀ he3kOGv@g6+b>JE,_p5j ljkeCHo7> P˲#.ն5aK'+U߆j1-3gk1mPYꖉ!&%V0^ {[y3q!:AMt✀[\"u[:ċb1s;zi=y$G'?c J3!8D&m9cP9:ڦz>[F=+Aڧ,vh6V:pE e,ϑ̅`"h*!o) }P%m?>Ԅ{mF6H*S(\$?!Њ)Qԟ(U,L|dZWcr6YT`xiRdzN M<ѬK◍p m( DiG@"H;2Go~pu2[:^*sĉr57u}q;9qџ}zoi~wPY!(Ћv.h_j}[s 'l yH`$d%)^D7{` /䷨Qv!UI0#>g0݊7<1' tʙ~WbGJ!p0QrcH%h , PjW$o,D§p|ѽH VqEIƐ.[p= LlC"U.~vIaƲqqt.TgC<"})i6V! w]  no1X 91 #Țg=CcH&^[`$&a9;v`vl:^к׿UV=k /V7Mfy(eD-Qp.G5}Mz)&px"(N씼t~bcHX}# Zk <}\#ۤj{"YkCSz& +y<m7kl58k#AGfIoA[iR\K- v>WhF{r~V[<>$4'8QM(Z>M>{ʨ W¦e(m``0*q2<^H 2c-j3u}q&6];|C{mkk%ʲdRMpgj8~+L),kԥ} $MK&m- :q>!P421_ j>_"O;1GQfEg4>ĆXVWrzfJSI'=-3r6Fy+հؗ&f&M{o7L$gf"τFrM!kQuQR%b(I gaҶ<\P<݃dsa<,v}^HD }oe&Nf1X~=9BZރD ?2#U1E  `B,??֤{r?/ cgxm8_Ow'ʢğZ.M;_ sê Us&{3l#D)d.*P׵2vGrt2Lz<ዓK)34쇮Э$$&(191΅.yǡ3[߆LYb{f'I-[ۜvVP (Y0&wM0c@ KA0Rn]ˡ9G&_Fk$ [RYaC/~gB\ q x b~ sޅ޲k&D얘@SXߍ`>#!7T-\y1QQ5gHX,Ż<^ɿ+0;?&~yӝ׿%rMcǶwEA^^\IZOL.6&{YPWѸ'`L]ŌV$/;M2Dǿ&8G m"&{<|e65 lHP&zv5@*o4%1gzrd"S]1Eh0L3R؜83}jXDp7w>a̋Iu_W=4y# >S:Y211G@^-,C5PM @IV2w.c@q*ANy8:@ϘYi pػ_9OGabb ٻ9Qqbt']Xaii %4Uiжg$n.V#!D$@D4upcIx8pLLMaO?~W\u$;1<ϴryA" oȊUUޤ@:/cH\&/0ndF+2S")[;B։5M DAbZ"3sp6M$P#4&KyuXJlTfKnmzy>M!qr25y\4-'5%v,w%MQmgΌyI$T~p$pY{F8^ڗN`yֵ ؓe9\Йm[,..ʜ-\2kܺQsDYC3#" 5>u}q@;6g>.Wu1&"3Ա|,Q,uyxKj(J}6aêV01/BaGJeTѣߋO<þԤeU; $GHs6,aK['>q<{o9OpeEdqcomdGx@ φ&"#hHGVKLd Czh: aļ=1/GX5=J"zEKDc57d KzZb79O}1.\[᨟/yx;ˑ,\dGzA{ZGUT]x۽A?t8'/d Ymt*#;{ÓDZFL#-ا"ڲeE;Wnx/<HdhoaAX߰;x%I:xd(tƲ|m% $A V&W[膖n< >~n}U\dŤF-6OZ3&<$UI]LrQ-k+?>Vi[V>Z~Ff y3E 55I_<俷jҒUx]^CzړnvK\qեn_4py,/hnPZRWB嗐)``r tb#6}BUըoXmCd=5\;%Ny`'^75 }tg>oy]pk۶ B h9Ģ<'5 L$Zs&;Z`· 꺎#@bkVn9ͼy1M8 W 'qq񒗊9!h@j aKB- B*W6 T&GlXU懘4XNXh& (90!I^Z+L|2BV_RlH!ntƍ@ANF؏6UȉH"yMZX,Q9u-.%,+1SaX27:]瘸%? /%fc٧͠Io^7?>=0w)K ҋ1{4u M 4ԹLnKATIP^lm~; oا_L*L %\F==7ש\ k|NNJKNo.%Ġ՗S C旮 bpǡ۝>!l=?O'ؾ)D#mYeFtG$™0, DBU> жf}9owH$U)2|IӴC_``.B1mnkЯu{EY}G}/ڵ^~5,)ʋ"f簢,mFh0 'Zل,BGR |.b@ =0O\$fEy QqsrI`XrʈH2YMZE!(y~k/;(&&0q2W6HK[aWqnTܤ8W>.Zvk|^) {x>pF&f ,tr'|s[Bg,C!NHk8O| rh<3/gTA稛: VQ `>B~ѧ!uId/&AaHt^Ihl_>q0k_[Iۮs3>TyQ)\^bh-<|R k#}R Nk\t )&o )Q(|nmTʀAAeFN眸3 }T#d u$ȩE-{yAK`p5ܯOsBjM=Yx CqГ쿜G^75bۿ=k׭G{{qܱgyy0)yHc>xh6 ɏ ;2L(a06d:UL9XUzEYmj,0Х6-V!8ũl޺˂܈l.H L:#\M鎐 N7BL"MRҁ`[sp9kj7-fCm, B *!vtY$B i[ ƭUed& !g'7Nz?( I,C9 a?M*1қ {gna9[IZ"dp~9mٍ9a2'ogXcA!1>^75^w?N?7 ߾sǎ=ߩY^E1Pef+b*Ҷ-l4q֨@Wrbi%f*JrKiZ%}D,6Í +pTK.=Xȁ觹k1P,_|zo%(F0m%@{LDD);E!gh) ʦ$~$E>WLhK\IЉ^H i$%,9/J~m; '{鳧~JxTI QT (O+qRFs,ж >myGi<J|ceQN9 a$Ъ;O9@&2㑜W`pCaZa؛\ SbS\%iq\0P@'" pyo81qE$'/-cT`b$W&V88ED%U5gN'I_{ufΕ!6":S&37jas`>^75vX}3Xknug\ye߹s{K\,PȌ/FDT+f~AOZ&g3׾Gyv&M?e-M<'Ė%5<(,tIb0NJ|ݣC(BCYabb F1FS gC R7qLt1 y&3:2ƽp;9;ؼ^rܹk#cQ%`.XԘZ,x4aU׭Xnn}uXܱ3/Zxju%A\Aם#|MJ_&^hRS^vTUa" u0xVҔ`& rqKad&G^uqY}:͜UR.l]0RN9JW651ԆI͒Y:Vn<'ajHn8,81`B5*/;Ru#O_I~J]EbL_61n1ijK_N Zca.Dd۳}/wRɈ$(KEsC`Y˒eg =^c6#˧]D9zv_u7RBpTMRpiɨ .e-f=`&9Yru`J G㪙r3!.=1 $aCvFdNz*}⯆j5NGSVu\S5FdX A+½VN:*ݱTA.A  5#0G=L0F S `p0 AB҇֍E'V H*bD$z)9TC_^UA$ ^Ҭ5, FB(!sN@ۼͬAwY?G=ixSظ^?c~Օo۵y0*C)Q%g0K+^zM~m-g;<:,2Pt Xj7μp+0,c9]s9pѕ0g(-8ѥE,Ce*LtO i #:z. 2@5#UL7ecEw{}[Cj,A$GdV9|($,wVW9/J#\'CڟcdyFzR;!;<=NZֺ(!35+Г5=q97 Y011c-6 ?N!Fm>{Dt=va U3^uq@uϻ?)C/sy~W=o~ʺb,,Bi-'h,&M K!/kڧ֯Ef6Gܥs݅ Z6TgYdF`HEtKS\^B+uۂYfT=ao#19fSy ; 31cxCq@_};OelzW^y{vYӶp!/ dE9Qs&:iXjpq{?vVvsXBUIdQv\v tO2y>şHF`ZҷLie6"f߆Deh*Fd|2 Ku/>1MfPtrl>8n,oYva!9:w㑸mWU.^jsk><{7AV7}Y]snwڵVZ",9,ХzI)YQB[Di=Wԭx@NqZqO&nuUY办V#V֒d$-hVB\^5YC%""G^PUp H2.gQSL|$y/y'I#!{|M9:yvˋH,(GF3W`dtN8WLPgk5ixդ:SG{EUz<2% ;]!Fe^Ɨ9*Y֦h|`x..5KK0iY&LvE&!3x{0;m'ohϠu077w}jkfk<K.o>?ۮxܮ}3e<ϑeD7JhGP :w9joD7+ sŌFj rqمs_,N;S߂){8xd$`(:)q3su5Sv'D8UL2lb bX.˔1 !8R:B`|x.Jx!P2Î.J Xu eR7R SXԵ.fm7l̷l"㬢4LdO 2gQI`0 o\1, LvCRǶ (+sO=T44?ȋ/c^{pa17?;U7"2ĤՑD ghzKǽo50w&Amt&M `zU7j]pWs%.E?n#4vj#+!CTsARR\CHuD{ z~ x~;yQ'">v{vť2,92G;qړ_ e,s,mKs^g:J&ge[X|kb*;p! VR FԠ=7:+;팒FȞ*u! T!`#\-ժ I {@gR<laݸuBJcB^f01I@^7lBI.B5[UÔh"#=m<8. l2o[, _CwIDATvhD ҏ< 6k j"m`+\pEY;AݴXZZBoau* |(\kė<?D?@χy0az8? {Sq٧c‭0w^7zJsE;L}r\X(Kpcϵ/}x̽6&@H9í #)餂[٣gt/T:V_qInZ)Q2FJaK娆Cec߷pTX’fƖ`n Luk804..Hab"xկ  8G:ygZÌ1p _KG T Sr ~i#Hxτ//x/Y!@RЀTnh mD2&ʑ7e^weȊA[˅FD`(u!Yr?G,'AD7cf;I[t!{4|ں5k֯<^sǶW9*yUʥaDA- 8wqB#T+r^2", e:S챡[ gWVJt#aF;aǾ|y ѷ/!yITmE^֢Qe;";خƻe2Vb`M]GP9JĪ+Ք /IÄ.Nk凇D{(BXV?Є DnMaDRh&&(aTibeȆgDxtSdb H? 1 A\.nIH@Dl[O™Xچp<|?U@=rIg쒋޲k'=?QMK92BW,7Yy;%&, zCw5xSA{E\e$ّ-ՆaXGJ_+< TuX*qV`~RJXI{a%u5NmN9DpS*ygΡJJ%TeD2 =:\nRTIpڤGk0/,v 2ڽ%#7~ա7j;z@&w !/ۦjV_^s5/p?2Ehlt3Y'|c,ʢ@Qh01Q +~I"*VMO8.aO v''2ov~6^+Or=-3' w]t%ivfֽ^KθmxY g "sfF[5xC“EqfRNՏ@&ka'1ϰP\Iz86G &8lxw2LCMbmj͐G`q| YvB|]{YOȂ Ngǵ Mm:ō̸q'cMTx>&4Ov3W. tѹK076Z@S'} *o O#.e|w&{4jzū[+BFc}{{ 1%cskf!owWd.[U/~ۮ=3;YZZ-$c0ԓJ,d-*+kʉ..`CxCƳۊSb0?7h:/N&ˀ9 ; η}̷pUo k^qAx}"3 i!io+|݊=cMɸO6v4Gz@ l$6_ 3^Y*@ hW6Zu T.B_C@x^,4yV xT%c 89mCfh+~Zi*ֲdm@$M^Ɋ<+n}7=O#6af,gLy, UAa5D5жޫ䖎x\ %DH {KJ~/'|kܹokf̵? g=>..=^x9Oٵ%s{VՀmA3eYA&eAziub^^p6az#sgcߢ,?>DLO ,쪽 :x[Sg :xSmo'<Zu>-g>xX8 #_36eCU$}.A,OT},.,$6Z ;eE5Zc(RiZ.~`KZڽAu 봛]@hF !Lh?M"G&ɈQ֨} kJf`j[6Y{[ל{tu~fXG@H&Hap' B0IcHpvћ@20Yݻw_߯ {ða>8m _{~) u]s=.HMAF Bsk_X`PGMي[uk8s\ɱ!haQO|o;>msh=p[z(nX`'C=|TM>9j‰!L ql@|AX&2F4t}bЧ;FHpɭueYf+`"Z*9'$&8rń;"IQ}`.-em;z-`0;&x?~+&''|r˯fvxB6/`ш7u :dff0D=Y|(_*R)7} U/@a7mZ30X~|\xS^+Wm3S?$:r3mlCLq3@OrޒͧQ@m [!hY%Dp 4`;2I d ԉ2$DnqMÄ7Y6&Hi\wf/tg^p"j.D3QIhb_zbd#:o͇؆{{NX]HPűNtɞVL u&h%  }u}F5D_΃wb0eR4#h F}Ff#BFanu@?M%gٳ~^uť޵s{% e,hk)*b膞gRxֿg? L_JO!iU99Lx;~|X+' d>,#ટMlAGgl@ڈ8ˈҞl%$ ryT9borCr"U5~%qرM*v9$~8HWqsWUÜ8# jeˮsnYwe1 Yaɚ]&Am<`]lxOm TYPv:{,5a~!64)*E;w%x y|_:<`>^Z7ڀ'='#?}2~YۯM6fy=9YB΢@ԨK-[ocG2l>OKjOXʜ@/7p¹W!YoW<@Bo!)m!0-pؑ.vbcݲm˳gVV.C[7ѡNb#UDePK ѳ s? iYkFx:F՘A† YZ.!A|kڏs%!yN ?/@B,N j՟:s`cDzi8geYQ`VZ%iS0&'\- ,_I$"r] z-ƺ]!a~a xo׍2?GbzZ†眳W]ٕU]PbiYےTg;M mq;xóm߆@neg~0%4@ʘg r -O /AEw4^pUAi|F |G ki^m"+hFd}X Ú*qaͧx6ϹwMR i?M߁p˵Eк͜2Q-CRvZcPXD' n%`h-d@Fm&MW ߪ.=h%AȸTm{"8G,/`f._ap\@[EW/{Y"m~;̜|j<|f—>Aqny{mY\ܝ5mJC' AL)Uo` *IBi2kY˻XrSᢝsp#/z!ظfZ_ڕ>| ك[p8f9k' hL|,rΩO9 dNI &ڻtM]GnAua.N$[o|狩 ea*o1hn]B6ǟ 6rB?N 7H[' q{2FLu䜅Sv} xdE$A7@5`82N@#Lv֗&rU2%!=цlr؏}eh _F잻WK./;wqޒ<͋y:__J Ơ shWd ⏭UrY¾ٓI 5ߊw|\CX9iG'=@L deh|,~=֍pa#w;Аet4<KG,iRaI?{epGœOAAZ / ՠhP.c$F#+?=X-% ku.p4p57Edu&$ mD]e&6-˼w7m$he94=q s uUa룩+օϏHфҡ?3J$Dj4<쟛Aq|y(# =)_zUW^]V^ȋ\5R0qZ ݨ[*l/-A&S2TO~9y&4+ÿo1>w0+9L}o1 {q?LΧm%1;һl2Z2g067]li_ 10$_֚&5`]h6Lm6R#"ЭTqp[%=f^*] 4m=_!i`r&mB|pZ.@phAr:2~lF~ty.ϴnpm0 ]2u<{yr>`a +,rcMMLZe/NG 85]"Q|@_0s뮺gMu_^vuBS/&Xd.qƒ} t)i[q}ٹ#r f"a”> xXiCpA}fѪ ̞jO{qJ?ovZ'TZ [Uh|m,^|@p}r ,}}klNa{ {0֯] %] fG(S5 /Zgo2+Vw~x.v[0GZ% +v*Z lMӎ@HxzwQDFK*>T{\i X& 5FD0Yh;K<[I첀CP2e 01 PÔ4_O (dl2F[I,'Ѵя|럖< gf15^ٺAg/~nrW^q;fgw޴['2ĞqIň/'˕F)@ %TC%G?LuC\Hf< hb%MzV_w7wNB2G>p bdr&-Q(HFz@G\|#'6?؅7'hndUVz8.h"\D꟞hpHl65F ڶC^#zpD9 )RU}O7D/I%3J[Q0|l:U탠DDW-6&"FبSxG/*sjXEYk} UF}Ei؝XSُ}ұ;oC'csb~al:^u]\@䣟-;w`Þ<_h綫^=??l^p-'t{))H_EDSWh=c yv{â?5H'Lקf1  wS{g'8 ,'ǫ~~}@ Xvؒ,f *GJ$rƘ v1_<o}pزo<~+wR]yKMIj>jiC(Z6ܳɩ)4U}0[7Vhtk}b$^cpeh"iI"mF ?2^W5V{0`E_A_8˝e xV s׵mgݎ~ yVb[}z<7 Ggkc+< F1Z5'}!,NfZ;l/{ҁغa%){5T٤@*WLj%v%&g` ug>O}3 ]o1=z { acɹp!8PFV(a/ tvr-}GwN΅!ny$^ȃV^w_h?e(<T6Hv?$g}5H!-oM , -RZsva0Ĥ!["d<5y>F ޖGZ䩓5}exed Bp #O2ȁ! wJPe\ibHXl&%| B[³yP]tYI\؈vD[lsQ[ڼbX_55^\C\7~&'p>;_cUou>C2#/p%*G݌6"pY`W% xǍظzS7)H剂\7>Sq)zt2O:v3'z&IW?IO!褰c;3 ;go~yn/zҡش4>-s3q«r(wJ("TyK2$=8$ЊlDœpαt*!s%oYAn5i=o!0LrCpS赧 be+wlӶ'CxnV0o}F<\OoL>㜃aZ4ȫ#OvLRT7=@~E&dBD?:~ӴOf<|ow^VGu:3.CQ(BuvtD)QƄ{TTᄶi#i{o!/B|CVM|"I I.A%v)Sdǿ AX\fϩ_55^z OxӰ>`f浿9'/k~~n/ϲyY\5 \\F7O݂~?Hzg@=\3׏ho g~r#~|? ۔8JaY)BbHӌ@KyG.&WbW7>vQd3 xL LaXYV\<._޼>蝝CfR4|I”,h 61q{4( w24R{on% "q2}H ! !4 X@^ ;!8+Wө" pXaj/*rRV03kE!%ϞCIpB24K殻}sfl0_Ǻ {,֬]o}˸ow;_҂kXdy,l )9dY|w9?f M1F渰SD lS;ӟ=w0_pߝ܊M{ 35O~u&;%r$I|-Nkᝅ^s/[7+ՙg"=Wexc:bi˯ /;_:J4ZynaQ}<:UQ =a[xNTUezߌ܀(;tʂlEW7ox{mYf^ٸ&*Mhz}lz\+* yjE$xJB`]YЂ~av9%\f`Ԗ'ϡRkL~^b@џAxy4_Μk+\v}bkxНg?s{=nW\zvv~^Tvn!ˢTjTaeH60x} +&%!P H2pYLL`Wo#>_+ SqL] 䔄B3+vhj|6;}۳ N|p%ŋ?7?b/6L xoLX›^3|;E2nE4`#pI5!s'7``e~<$:hCBjE**sȳ yY,J=TyGIHVSroC/lgeNfs. ?' BLKj=:@mQ+_.sx*IU4Aϟވ9N?j dMݳǫez]!DG'zDU|S/w~PoG{( PPZ^NP1c -n[Oa Xe+ᒹןot <:yz- WK%-;e.s-H. `:%&|W7}^ ^[s$ٴ>L"l-\B {a/33uVԗ;79jK`mjcD6֢,;h`"m"}]%m V2{q.] cPI ;hz66k]D̆InHXsPU>a[6qn<{ rm4ϒkQyOovkwП` }?7g+/{DU‹ 7B g,7 #3!Vr0dCܬ=]~_QQu[ ڄȄbU P"1YNKӘMc,4- GnSv0'Mɬn Ύ62݂twn-rp݉M#eNmX@5iIܲK$hooylpcY9{^ed.WRaU.:35@B%!x)/~}6)๏ۂe?d\ H ~$7\H _8>Y30Cӆϋe,a f#KmUaI(&Yu!VVX>FQ(@n8k%m#Y-@}tMYO$c}>uo9Y,K4mP+4u\Ix3vZY%t%SNOJN_ /5D-ffcOk7HX }\ ^s#A_)O'F 68Wȍ#}V.BDzӂ8Ga\-KLLb~4|K?BbCxCwEDy(1-a.M$9xFE\9Sp[AC/'[fcdGZ (9r! _ jq/sNPk8EN޲V{$I5.p&"c ρs۶- n8?CM[`}v| "%^arL~Ɉ3#yj<zuu1M$$5iLq '`8nTA aښ$E;<=*Jk8 @ע?^(~U㑧5^77?G~ _5W]xޛw~`8sQrr6t釒QV0\Z@]sxʽނ$zZJfBֺrV3o&_`!?m7!]3=M2dI΅Ҫ<9w#R;$iug}.+q³ol S 4Z9 mu X7;z=v xƹ -2ͥwΞq}5nfƅo[7ͅ`zU#< 63XgC"%(薦$)M_z H qA1⫐gaB`ЇP7UҟIftJ@#P NԻ_"'sP`n/I> 7k8⦷s. ;ϻ5@AVjO.-U|8lUpEA_(T*q! ͘>~}ǻ uhfNO؊Z_X4-I#Mi_]^!)8c!݈< Lw'd"9*%M>8{{y_ z/_@mdxHQ7e ):$Q`RQr$HǠF&,Gw&-9KԶA52n6ēX'n`Tf҄_tvn^ ÒbՉhO@ _w^-غ~%&mBr]VIɉWs '|`Wo2}}VjBՖJɹ=s`g杓0Ox׻S852_il})6uFb`[\ND!d ,Z@bO8ٹ;R"+ 2WLE[ʄ+Uk01 QkL*7=a~NM2dyȃ1BB(&n h-D(^h|d!\sgbP h&eJZ\k-'f [BM5z+B fgLںN<nwpc/wqա~-kyᤂ󭒄%&,_c뛱i{h5Jx܃6otgpyZ e 5L&S1 |-1bn5;?; COx̃cݢ+WNRȀ /7@&~oɸdZr8bs= >9HNNJJSV)e:$}_id̅/ h*nΚPK_Dc#sژe7:%Bֆ>pM2bVwH镫{~0I>a~+CB%`#+={!0Ɔ޵w׽wڵ}`gryClTBpfE PjCS8pO=xoȺ&c;B%2 d%} k܏\_./^ \׽K87{3xɓoQtk@L`π4%HL 9tѷ#>젆!nZ>lZϣaH0O/|rWֻ${:\}5y^k0[yQv(Vńl.B-=ۺAY3QX\X@G֎k upySYǁ kH,d l"Cv~:Zu-/ԯAcؗ9mjXA[~ @+}FZ4U4!,3Yѫmx"X_>^u^Y#qIл7k0 oJSL4 0~TvhUoԶ8zk=fnq؞h|"e= cHrgVyfaoqxۉλdn{ <쁺P䜔Īw:b->_nV]kw~?zpcOzVLNLɹ,#יԫ^v r9>9[^ sиD 9lF|,)^WCkPv:A_[U⥐&4MXB / Fyk M wk07MM/y;,s PNu]+*#L{󖄀&֯H8z0 7OWy [*-g iDxY-úN*Gx,,Dm;M߃௞\f,T FYqH]`;Ly߂Xf 2䨎n&) X$cMw|| ,8cߊu+ =hy1j)e$7B Aw6 " gnz->[-úig?j<.. rGu˹~&>bf`&E7x D@qV2M*`+ HЏ^w~,C+'nŭ|$'ijìw_fb '?M 40p-MxFѝ'>2^uZ:wV=LO9}ٝ붆ʉ.[ׇJTL$2g0\ZB` /~>-BVLlqzHU*OTˁ+dL~rkM{fx6.7Ɣ!JB&!ITZIMI pYf{s'_}]5[N;Zd|粞(k?E&/}Bg\m⇧6Q5%Oڂw CBBhpƩY'svT֡Ae,\P҅<%EiK 0x`Ӗuh3v :j$$0t&2̩sљ˽&7$ ʐBBt Kkд apFr?ڏ52<'=x.PrV"rƓEhk5^7ue{LJvvޡ*f І_gŸ"|m+ ozV˭'dHf2`4_]|А?;uWdaHчO589lOx@'@H0wvz%.]|K??' V~y B&0 ;zeWz:fž^{ߟ*JU-{xs}~@6dWt3cGU8Br:7*hf4a0v;CD'<Y^Pl7U )QO@ ҾgJMFt" zs,P%Zߢ0mZfkO;U2B. rB듟٪O]`ض+aZ-5^7u*׿t瞲svm Y}.! 5L eY:`Al\o (bU>Jt۴Q'_~Wp;} 6FKfHAf!kir7<ě| N ~3?x~prb_N~S@r{@%l`hz ~+p?+0.CS5x7<$9J, [6/.Ƴ_e&[ʻ(B!]R ӵȊ,Xj4cn=T5 t[j8f,Uj8 [B$y0=r$jzCXy<B^]j`8ԍ<%2L%vyJ1r_GD'7|ƺ}~㮷={ަmUv#n=f98[ZD3-<Z<[01-@2H[܀؟V,Ff9`ޝ݊~^K,'/}M] :$Rz(;=msD_KußO%&x-O-KD?zz_]ۂ>[|c_L hj<=VDl8A:}xp!uh: efݪuM{MҙaJ0nPh[&! ߧ =߶h8i46*1M"2p0 qYP9F5aȊLIzm&B_syƆD/ ʼsg56^uc_*wg;m?u]9Oe3q Oܸ݀'l\Ix޿nqWrq\-n- 2`Lc^|ǿR 컇 {v}aQ oTR=pM\'od$=$蒳@DSϟt!>aGon1<@l{ b;Y+aٹ($:xV9CKy'?x?<؃Q3qM(aDi VO/pc5MyY"wN5ؒi\~İ;moamN^Ρv"mIG!f>KC 8@q"YB0gQ$F#409`AU2+~[r JޓEa|">qclce<=c07?w]Okz\*_u%W?].Ԟ =dL7ҳ,C3ӄ?vO JeV6F9ۤ5k#+igO7!'#7CsF3Ndj*wBĂe4fw/|g~qq[bjj\\dx>z.~C& cĶ v87ݟ [ #Ëva1I[ph[PUCǛ,N:FHn&8Hxкq9n x 1 PUںP)=$yItGEΉ[88Ysˆ=7`rQiBjjɎ&HDSQnQy<֒vp0Dekaֵ <Kk \9+R%qEk)<:i6ahm)dgܕktJ()W=<y胱Ε^2g'v"G‚2lӅ%/g,NO{& -ZZ¿Axe4';f]q0GZ*ocOYv)7/EMn(]`ێ%㧰yMW̓SJZ;SLw|5֬px{a؄NECY\fBc_N9i: wԞokpeP{'[ؽe@oɦ'ȠPM~.&@fb%zf >ⓟDhJǓ>$.tE'4I8X~0 O%88@ tNzg\n>wc0 N˂Y1j$ w-iY'N߂djE]7h~ֶzmeE!Y4OUDYg;fv\wok;^r6 %KFs;jaM gp.Ëp.CUa'W|G;5DI JQA_>\}W_>7xஷ-@4:fɁmXF\Rlσh:K_?_năe5!PI1Ҟ2MTh ?Mr8wq%]|}'?-jP7oa˖:#M0$h07Ia<#EAf <ٷFo_<C(o `ۗ#GE+W3잝à?G4avPܹ ŦkbeCLdߑOc9zGpC)A z}huU;-ggG$il~D~ by>}Γ?!k,fx]+n7}lq+̧@6M< )"YW%~97~{. T=:2LBV eP%s51% B^ c-V^ &I6нCP 0<Z('(.Nf;~/T0̃c$U1q܊+BA) n^݇u*2-rWVfEoD[uej.?1|;w.f<bi7=mKgKL vي8I_Ưp.jc6ػoBf;hM>ȗTc` /El_)n]c0w.ZEs>_}o'BC}, @$"v͠+eke^%;|9% t]%523ZLQ WYWƣQǮŋv&!ˁevz-.ۈw|gg2opxc7[ kmDMw![aǒMmAҊ) 4MW/X[p06 XfMi{Wr\\2~ηvNoO}:~fPX=pOˁ$|+[Q\SvQNo,͡evyʵkЙƍ) \qٕصc>aJ?A 1j夭$;_+D(ﵵF"D?^7IUnږ7E>AQHUG N֞OMT3;xSk徱KvF4^k}?gGpߝ=v J@>@C5LyڌΟkO8 ?9L-xsoDKD_n@~-Lr9q J<-4p>_C&f Gxċp(6]"nb؇$;3av|sȻSȊn86b^+kX+:s;w8ă>kyhJ`#xOh}<.Ixuau\j;4$sd |LeV>wyx g]:~56rfua@u=ۅvl]&2SO§^CС ʓ`n-,Ll׿~>/Eآ52rxXP`,͌׎v$`K#%@Mƻe?`5zfw/W .K,i\LQ}"_ Kx>r#< #e}{Mv2xHO +_.*Y9ixbjj,ϡ+N_} *,Гk7 nsM"\n{~Tn ɹ*)i(sᗧ8ᕟo|8h{!ϝi/_S0AV`Vb|t|jGi0(@e4}0~Yeï~ڼDޝ egr(а}QUzX .JȬ\C*#>vTSiƘ0% QM<̲*~TlB<#cْ﹦^T-_۶505 u]_W񺑭k`ƕX^|Anpmꤏu.q֤ 03Z1_ `WnO&>g,<8guQV@mzblדs31;"%3pk{P %:b`c.OJ8#U6nZ\sƯ+_jcxҵ8}uV£9VaT%BpC#LօspLwĉo8.ݱ%<uƢM9I|GQ'/>aw"wG=`OG`=Vϭ 5Tq`dKһ Svozx?B /P /}V<~[Pd rTR4;Juғ =0n{m|_ ̅8&BMȲnm]Qic$(Ks.9XRr\> 4.޿]ê:-ϲڹl?8^@~ZV=`gb 7hnI y@'eim//: p[_i40բɋf.U!$9}*K-9TAUNvU Nn}E=4 vgeF YS[3t_U990N=m׽+砆.oSz0&)25Q0:Y+V> ڹmt:h&WOo>d\s.8x}!PpytK9]k9Jē`^+7ퟣAQxHhV=4QZ 86D۹ YǠ*â׆ @#=o ϲͳn'g:V=H TR͈[L2sAza@b_{3=?s-}5^u_"[h|jq?[ު 5jnE_x[e+oP{g-IcP *)3b,%r =~{-u0c1H+.r܅GOpSO9wހeq!%MG"VڿwNao>k|ۺ]o{!غZ[D˓kbd$8KFE4??mo{ӧ狮r+`]iSZ>xqk b8j͈1py8y83LѨ%jx2ku38~lÂl{sّ,sG6#3^".Δ J9Zӈݩ^Z1u.*tKfQ]UgӹC7m2߶@bN r4mEwyaT7D=6ȋ58L580$@4=jazMh''>G#bۂ_p=A>Ls`6ʯVX+M6'd/|aذn˅AYԠg| !$;s(N:wm;*( ̴PES*zy҄cF,ew|6չdzyQ_ Y CMnY`b i9X1$)Q515,37m ш>$5@'ϲW~xx]ӺN:~%mY߶ֹ&딷rYVoў: /D^2SmƽֺFS5pTFrej6e`-𫘘339ڌ?@,OF艇c % |x Ir|Vߝ[5~˳,Gմclƣp %o GB[FB3o/_Mx;N>5[4#sW %r-\>55AFӶQ% .sep.2b0$D\}y]Wo>Wl' >úDˍ6n?%+6H_dH"2G^ 'RsE֌5^?<Wa="mn_E.A]:L*.! A6=We {PӢm<<)OeFm91zw; jB4iAsb-.۹%z-q˟~NLeH<4|$Ɔe >?<^O܋9[<w0N,e]$(mD{x>èޝ!]/λl^Oqh 3ӳL{4.+U $n5k׀cnvT&DَU׀GU>*7zي."Fg,,-|,K]j)X@ی1knI ɦHt-e#dN %=5.3W5^?I@ۮ1,ϰyvz{{Nơx+xhZsvׇfߴ=j?@}1 O77|'YCc2?SJRz͕4uV*}~gR$l7ོ5|t2i WyK#LNM25=G+E_*#pYkg2yOU_/7yF'{Ziֻ?vJ%(JyJ)[\{/+k\xL%ZV/˫ t33ҪVs&M*I2eg-+8EXАkd8|VFRkrMkLZoἝ)?#qz/?ʙ~NbYv ˎ//y6?B,!sRy'?M23;/Fx݊wPB#2;4L>g/o~w\&C%Ilz0ZqE52?zG? wW m/O瞥}lt7~SLπDSJKR{xVW } @*o <`)fP_2i#m0&ŕA݇&ڑ1vEub9:=ܟO]O-$ijn;ŮR.ٽK ұ05/Ot cq<$!x"~ PdA\85,R%!Fl^s钦~y?y32آz1G%\%ƍh XY&/_YWgpTI!{ @WAllbY>'Ja-xW{*(I0PX1g4 9kxq5r{wֆSlr^:Ϩǿ{3^"uFX+ϞZ]B.O6_tK++v~̠c}e^%Z[2h4*]O/V9omץ LfPn[1&:aYq*z,C9Š\gxU\a+gR9oJ d->YZk7 fƄ*I~? /H[Ax08g /B{%!/o:nXNݦ&U|! Y!LKwQͬ>!(@'a pËY5ِI_*#Rg88ˍ7ʭ:9k=3[/*׶*0 }<4tJS#c Z;Üqڠ&ɰE(χ9!%4NRffԙEN;Ac# QNWO]W8az߯WZ[(MjN}LbvM0Ax(Y[~,-1?=E3{cZyƒ,8~]u\ ]V˞R`b X5ID] P}iR$M9xp/SOb~rj)ڔXugMW+i1#NV?+^A>oC[򫿸,zd T7<씇*ryMm7-+ : ;hLmC)&iiI?#tUIzRB5,Z' 9w(cs3}% 9K.~>*䨑ֳp.ϧЊ:kFުz@T4gQq(N!eKDe{l7+IbiWiBlA㧞0J;?GQ$(S`gI]O{i?~q^?N_~Rl+igKʖ!cʃ{PLK292s>)LEL$x~: ^ÝlŦ- iƁX]Zb0ȩS½3Tf-eۤ' u~uW(6~07AG 4C/Y0i3iKcw/=u6MeQ B@SZ'ÚVCֲhr7it@b|X~?zϷ=xL<*TeFܰ%-僑=[W>K~1\|ַc0,zP>PS;7xKnߋMiPB5&RG319ζ[{ܳեeokrp^|135Wu*VzFv\+c|WcK$d& |4K $o5s3l?o;,YQDÝj^2{41!o*s]E~bZi668AGt433x Rj\)/1:Mx(cD ef{U|(M+Upֻ!*+1@žqeh8zif\(㇤^6$Lm徣n2$ Ǧ xo^į=s7Y:7w]]w9PW*4%br)i<>H96Km_M7~Śg2ISCQ])R%IRlgjz#Gq!.*EFF:~]W@YOޝ(,w:dY&o ty&G/+إ "kLyPwZ[h.Shȡ6tX1YJbo}\u8STG+ m9x;Ɲ  , HhY6/yUaԡ*7*=3us$r^%qj? Mǐڄ᷑Q.8&5۳'N1J?z5j͘V@u;mFr|@Q)!0;t_iMEx @jAaɋd+s4>ݔYsBihcUX)֢sUt SiIŵv"#50 6<)Ӽ⹏1`iAbʞc{쥹_,GMxPoKn|mhL$X~TSZW&9Ji'ٲ} yQ޽tVVA受RyMW> e (w}bpϼ(N۟:F C2L%QJ_PYo#<IE)q`%&>W՞Z0/= ){tx5 e-I&EMlwgo"7Yhof^.gafG (=J.apU=SZGƱcu|;{ ק(4Ɛ[II .=/ϻ;QXLo`Pkzq-MNo14COn6{_=)MZa8(`2v{m6cҔ >(;yh$i2v һyoA~2v]4ݕ:oQ[CptOt&d6vK%f!nZkܝђ4dlqy(rE Ys~)k}|0WId rU o`7n/xumwݏM&jMŽu]\`-osrWyU]V4j<8*{jpZZYn֊u <,:.FI{KI??$zjjR~ã|YwwUz'Fi.zAX c8\aF,d[266ؓaל82FIDAT/.7bCz jcvOɾS8bL ƣ656a053Ŷ9y GoKQJ]/G4hApKٻu&[י$=6w&AM@u(1۵As0X]ʙSɂ<+E0 ٶ1aM 63>1Ήc'9v(nM_jVTT3&_rܩ oItaf'rAtlLz(oji\J بXfm蝛Xg 5r*Q:s11s'\yaWqSG6*r}V7~pYZo(5䆵l wVV-X̽/R6b I2vؑ ̇{Z7+վqsvkne~y.rAU^sŠtoM=❛x|QB?;1VV'\jU%ShҌY6/pQ?Ha 6Н<! *) wy{}?ijc~ <"yXf%++Ku_w5JDkC]aX73mj9G\Ɛf)yw\5UϽv$xytY{;ońJz%fzb+GW}t=2$h v619=ɽ# z} s~Y4^eY}Zw]5(s[ ,A}fjwJq!·93P~ܮ,j1m I;Gy},,255B _$dvPv[jj[$YIsӚ7%~T Fcǟ' .*opTI22xx9~hC,/00Ǒ#8|0n7B{c|V6 Q['RڭWyFŕU%o ?A1`z}wZhNRRR xB1qwZxJ[KQx=•Wϲc~McVD_tSS΅2KO^aźS\EA;\IMne9u8~/H:_ )~+?91mhCkp;ιu+@)E0 svAxT g:g_g cՒ(xN$A}\Bz"24 AHgu)[ʫf2ƹ^f^k|sjqO2ye>詄BI jJ*=Z11;oEQ=,/.2{JRߪVBSw^ys(l+I]\ JS3Xޝq~C)uRz$Ɛ@QaKԲ]n9@+4Ǐnp}xU,d!ZR ؂& ;=WLyrgi:M#S#ۿk_u3Ϭ`L=x^uG%Avդ)sfw^j]z!8aoLY鬐2ֻ.VV9zdV?biF[GQ ߥYI)r6F$8r˝Oq͓o0RRMͳR7Nlq\V!͵1dYƦ-Os`!N=Πp]A1ŮuVUiimwYoI\!#6t:+L͠θ;#x~Zi="meR<uJTkMc;+VJkts4[#mgyғHJI|p+݇IU&ث5@[C7mbN:nlPآrsSՁB}wfM!zysUE1x1 Y&rA" ʵ'}!2\^4ԃ6o.&_ZO^`4kt I 52ϺM7=7Nv II)\^^|^l޺щ ?#GsխR~S*iuo}Ͻ{_EĤ}5^_ Q5J\woSڌieRZe$E$E& ,. #kZmwy2]'mfll Fp<7Ň?: Ilu>Pk9W&֌pQưᄑ,9CU4[ʼnC]N.4C$ݕNgP;i Sajvy;'u.i>쪴Q5/_tξ0:Y_][eddn{U .C/YY]f|rD'}f+ & jr.`c,{&Qf͉v< nZ ZTiUl@X}B+2veCg%:Ew4Xز(g ˕4ucJ:W_9o?}v+i}+RJ\aǣ:llLNwR_q~+k{ahuMmRC\3JtR;UnLc /ezzAQp!Vɋ{3J4|7)(;n^k`4k_.Qtΐ<.i漻R#mHLt:Pvw9u 6ɵ &.@h|,kc`n=Μ,.251 ?u5i3(ոf e攼>:y0;;$'ԉlWpu=5JZ8 _縻/Xߜ%Y/1 ~AH@t:KLcmAn9d|Akxs.(]eM9ЪVҷ\Ԧ v[7fGbeqA+hdB3LR ~ Rn)X鬜[/ <H@oY_el|Js?Mk5e-8[ӽsXgQZwGC'hG3J8 cm8r0Nun(tfҵZן>޿y{myw5/Ax , &'{Cz;Ze<9[Ssr@F5Nk6VbvnM,/-r67PyWϏI/|Qf{w-˔d"#HC`}$^wE*T;mghTu.Ą )jeihCLNL2yr1N;A^Q•^*5cj-MU{i܃s׺{6iϥ0/W4qM5Ůy5Vi+{Jg+ґ~ £ ?*S(T">4kʷwy%/h ijr--$IF ]F(r5YIAx!drrAנR֕R__B IJ!{Q}*V mJ"4ᯀpkN J$t:&1fZozq4JirL&Uk;Zy Y/6֦clҹ= 9B*ccS{{h}wI{4!)abvsC%ڿ\gIq k6)MQNgI2.?K꽟!JRn|^؛6?C<Jn/l cYarrc~wI} 6҆!;qrj\ b^k{VDhYY[=׷@Ax d$X;أ~{(?icJQwA1bLJPvdMAmG)(X5x+gxﷇco鷳 |_9o?P5<A  ۶m5bhZ X?y0^W[ZbfM } @qy~gͣJ՜_ ).?mҹPWt. 3H@zO^ c ^j~uUA ?aA)s8 ԍ                                                                                              ¹;D-Z%tEXtdate:create2018-06-21T12:56:21+02:00?%tEXtdate:modify2018-06-21T12:48:10+02:00mdhIENDB`yubioath-desktop/images/yk4series.png000066400000000000000000002355621412677075700203030ustar00rootroot00000000000000PNG  IHDRZ=gAMA a cHRMz&u0`:pQ< pHYs+YiTXtXML:com.adobe.xmp 1 L'Y@IDATx}E|}7ٴM#F'f+ y"OgABP@ l $$'[7ߝeq$w9S̙3g3~GkBHHS5 W6'FۊWVtXUqztXiT*5VˠH84ЈzVwq(_0V C鰺 B/DX"O‰G╟q*L~)3~(L pf~,+7>U 3ᕛG0ep*\*^8K[a:X*ˠ"qG2ۭ:o2xUCL&GǷ>>(٤x:3f8#Ng" $G$zرuDsV*MrXí~=}8ͶU:lV-\ӎc Ga[~ S[gì(8ݭB)_#[W8 fu+ݞH|ּGSn+P .R*l:1¥i+Ҫ4) ^gzt%c]U;FaVh-x}gq"GP8=CELz tf9D<#M,)l,G6V|QΏ$1X<3V^*^.WtֶqHia'qDTeP~O$Xk"SalxMzY\1SUhP<$eꙶ2V.(((`$2Xat{d S6#Qat7áne+8SgƂ/V<ִzR*LcVqzt_0e+V?UPa:5N9$r(%~p7"b=7`^O`___p֌ӧΙ1+wwwO0:hp\6},߽uEsK}=zEpdX2BAe(6?O$pQ%d .IOHٚ3_7p#8 X8E!q".>TyzWc_Y&Lq/9}wﮭMt$%>O AcS8N94'o֗sC@>[D cx&ZHh"G SyqHcIjrQcu7[:<1^?~}DIzDϑ=d، aaO!#cDBj$&OXU˗cu=:pl%2pimH V\*kq˃P Je US5ѯʡpyK;;746ʾs TR^MՅxT$NU.ʧK?+FADWpQm3>idbv-424l:3F8y Z<+9z0+>X vÃظ)2_˜:W7L`ew`ePUm2^Un_+FّCѦQf ;ֿ璟Koݺ=JfL3XND,{@H`UC vس\oog~awُ<ُ`՝U޿tViEObʴ~%;Fo$^!\NJ8]N4&P?W`ɾse#]?}CNY9«暵h瑍gy?74dxg j\e[Õ_G!^x!oO}O`U\|\ᢢ@VV#5%I0p8Ci;W9x + V +K[{{Yx/AMMM,GD߹?4\ X^[Si]npRI"11AybڥD\+$znLro<}em6 z:bA/ʻ_ںj7Φn-`%t+!+t*\pm+guN 8U1ˋČrغ:;DllAJc&,#9`ROblmm7.>🇸)F,ͬ4mQp*C@af_qo^f$f̞E--"1!Qʼnx቉oDn+{{z H] I C9=1O z7hc?yo`_z^uuj3e[ێm;8эC+NXkT|81LӭpDccՌ*Bg ˭0*L.=l,76C_Ţwln CCÄX +"Wz!fjk`+ׁw3wԯe2ִ*\uipʯK u-lQ;b 跿ÃPSƘg3w*Je;$Haأ^ [s6r\Y9z I㝬~vns.«/O$:Ҩ*nΊGOTM6QM鷺L${6ӕB>lZ#M> e'4} UVfFhܹ!trQCb8اKj `\'FĻDB WƆxx]\b㘪11,tw4xKce]oqwvQ7zV?am Fg U G$XqgiS?޸f&$lepڑ O}myP_- =7 { qуA%BIE ؿCyX9. ܣ+^}}Xуd.w%ܐG҄/rA%֔=\[؆6#mଭm-"'bwՎqgeb#Y% 'Wq/.e%dU!MܗrJ5 P -!= 'm` ηIK:* =(cQP a'HU&~T <8њY($cs> J{FFr~]E-,n'Npo%zH¶rKQGgpu} "~'~C*u`;{d{]MUuUɩ)if`!p^pŀJ#sYTVU!J1sGiz7&]@ ?'vZ{ѺހabC ǡ ,fGV 9I>rYg(9tj 7m QѰ&c&Ү wDzeT([!ϯR]{AgkKJuȃ#6>Xy3ZA*܍aqg=q& ۂbfa{zjw;$GbW ?xyxtvw?E6>P_Uq]g[-w oXήN[}} H6#LWRawH>s(.JJEueԈCbqv v˟9( Nɠ =G_aRFx唅c;H"'o?۰/-λg{b-R}L*ցP+hm&zĀ=x9g 0808hP"o>,dhkVs%i)^恠 $w?Bg;sl{p/J#X"3h xiwdC_[Ϋ)-y|M9'j댶frqHa N!M&WrQWQ%g r7V9n`qL^30":M#+}vKNy좹7 r)_!F ::Qndz)OSR9e;]~FEz#zqǃN "3kl[7o` X][g{卷ĢsEfFhonO}֧-uϦwm;A"o< Fb=9@\4 SGX xģGt:$rИxi&nq)bE^b`ԸPbb'6en1j3Fx<㶥$lI1ƴDƒi-"|V ŝ^s> Hp;N9'Az#[OB;ZRTT#lm/qchiT«ǩtʎGrK:+ /(ms\lxhmCw}w?u؇b^FH8ES%SbCTG]c To`K[}[ +]y_ xC#2zx?/cۆ :!ZFd8Ӡ:*tO-Ӑ#FJ&6XWFoo=\aLGǛ!)!tUhucmٲeȟy[;JM`#6X]]怆JwGjə?33Kj] J)rmmQKb`+vU 6qAtؼpn 7HbYv=c3T[DxkDK !h֮[g{(sMMSKZkO_1GmMhil܏[rY!6+?Ybg&{]'Oqϝ6%0IYꞘC% o{F]-'iuaB6l/ydQ'NFNfۖo{pv1&ph8UD % rSD 7rn¡ ;N Cï߿-̾37jT'OUaV[VŽ&+.>=NM8z3D2*NG °]vY([]vUk˵S20`իlvO\,{xzXH(CEC}V6c +>u'm"p<'̝ias;y| ݁ښgҏ{/>svr?ǹYuww}ɍČ)S}yVUV$b=Xp%7@=TgE(Kd&DXj<#, &xhqFp얍_XqP+oXԖ,[(tiamQ[3Ou[?t 9:󳝎]C"5~( cVveAbx)dYVV^j+B1'XUcvq] 06lxaYG~g)dѪjKg r;JR :ZO>MTUT`W,(3DJr\yW#plimjy7x^j[@UVD0ЁMOko>ۻ>FqکK|fttvuj 1+F"*al;;,{EW1` zs(+ӗڛRb_/*j @'` OzywS"Y^z"3End͒a(A]e⠿a9'؎b>V-B88x+n~nKɶO`=_:z؅91APErjə+91WWq#RslaQd [O:Xnxu3[RwrGC2^|tz[38~{Kyy?niMfb|;>!.=q Vw1BŒ5sdH8ǔ9@8%fϞ-rvGqTAC3Wt585ކ~ڪ}~%meLt~َ_Bo;;pzrCGg`e%NB^ eL^v̕1<~$ś9T5ِҋuJ,0KK7?ӗ ʼ vse(xMpg;ixpN̟?G\+E{c\0Pb_6[`x ꚛ~ŗ~F$Di?&Gg 7abqG|ţUeZZdɁ\޹7*ˋŃ@@0\)c{Ѱ-, KHP^Xao{>+ tCp>8yHc$ߑqxpOD΍}$"O )@7"aEI(*JouG尤)\ ֍5X~+?mP4B7W!P?+0jeEwe\Rr'PRZPA#=#C$"!_,JNIs@Dn ' '  (k&C;}ƛs+/_*PQ(Wm =BzsAC;V~W\Z&*k&:©b b⅘a֠aIX%°<6ye84b Lnib4oUe+m'?Q0ソ*<*GK;5[FYw=B!&aTa<\ɫBg[+MplꚛCuuUvV ) YfJv]#SK#9 +g{yۍZISrsEs5A ;/`! g.d[kյX}xa7B ch~HTWp}62m֓ 'jt$gM`+>]r\2Ձ!l3t?LÓQ8ڴuov\WEUG#Văރ ) O~G{DKVFwhJ- FǫJ nRyee[*:b?p*XYr؏Kvu>+kkPY5l0GxU|c_ Doj3%WzHs55 DKÁMJNa?t]t|t+/ p&0f:8 ȄoC4ꂡL@|Ogue+5dc)q怇Gz92 V!|+QTYQ+aOÂ"xO: >S]Vz1gB?m-)9vȟ8e1eDaG4$'4=)ە,JΉ~|ꫯ+:S !r`'hC?yS$ͷA0nRDm?*ذwvq}(+D_(/;lx! Y^IpUWJX/' ( [Nqv:IxkS7xۮK/z #GʳP\*;o2n\4Sރ~ːߖ8'Vmt󨕊S<%qBDLm;1o޼D`T15m:Zx)~5 Yh[r`947Z{\$91%W66/T97C<^4 ٘\ɮSfP+YwpD&Y~7L҉L^9 nn!8,?ďwN)oO .pP8h:BOذY 'B7C)?vB\^Yh>BEYwm"Y#\'CM^(2B8P/zx]#HvPVaU+@ 騼QCΣ-Jpk.P,/цdF}\M$A32@X.R9Kql\'.?`[dqeS0j*VQSv$|(RC*[0et7 Gd#bf,Ita?4hYYe̼\,3=^2s~I,.sJERsv;DVrPx8HRbK Pr؀}{HƀV 4X}p%¸`e Fzzh̏2C!Ҥii!{{zgw9XEI/3O6օ(Ti&*yO"6gl'6,ۀDxzu`6Q3h KZIXmb V?qZk{D@|O΄~稑в? "_$\guh'vwR~۴D ގ˾rG# 4#?$ab`ab:|hNIT,zկh+8FS*La[([݌W~:\td[G>5W_- ln*hع'l_hB8HoQy\I$`ٹosP1cdٹfi)ӑ` ^]R |df&F:m<.<:f U4r}Ei+sҢ?rTmĭ$PEfw;컌4yX 0g⒓+ψ vCGܘx IŽ8G 態/DTQ L4^|ݕِ73N䑹,[a<:\KUW^oXhjh0j*J~< ͕Q#aٸ³;jFᑈa\IAtq" DNOFQ>*,!HdNĀY6p9Js\ "hw9xO|K\B!pm(6%8+yŵb7`nF0%fw%6H{>;ۻi3g Bu`51F 158!X!UGc0o,X' yq]sŮ^֛r~lUF,hzJ.}7+:GeZMD`*&ᩕ鈌'+WYsN,{"֋=[*-]7o>V*ьsFO߀Gɳy㴀$9I" { ;mľ*TeD[~%7>\^tp7tirbNx0&ʜD*G$b6%h*C"ec @bePπJcrF :[X)$B%hL6~%#@go \߻ Ez:Esq#m[UHK7nη<I_-^rИ7ߔd-sPC]XMsc89Ԥ<4?@3MΘ)v)vhu|Ο0]=AZkt<+Bp ÐhNP^yr?v>.vQQѾkϚ37s|{oWXɱGq(DBU˲0ܾ݌@$G x u#?!H$Q \,p*/cʣ7 e#(̓&_~F]L琑 ہo / jȃ5c˰(=T,x_< c2rn۟Xjp1TCGO|->e3QiW-<,3#mKkx7A;ݑ6#BZ0EPz̺Ȃs5_zGeUW9Ce\IL^*dצ JC%#3W"rUqڴ`g^֛??(2r2˼ii Ϫs =+{`i:kc@MCσmx[*h_V8pC~ɋ}9=}F]Xb2HTUf2 83$4vreAQFV]jM*::$ˏ/.JvYI=&"օs2B Uj@AAlC @V<샧)TyM8bч܃ ׃I`JN?-=AN/~gejZo̙*//->9%rk1wiHOuC˭_-d$T7shy,憍*p>zWp87S y"n(>teE邠ܞ8guYQIX/VBۊ(X_AĜQt$VLW*xrINn|k' ܏?b3j~5LwYY.B̌M"g(ci9Qsv]"+E@:$*GǕbBvCQ BaiDA J1 %(3 ?fy1=G#2@ Zo47$?^k rͦgV@g`٫Vn**x,[ax_:M JPV[㭰V(9gj9P뚯|ο?6suttJ5G)YƠdFRz@,N:R}f| $AxчDbrMbo?o'$[F( §b_srȭnԭ ` 腦Mox c{WLCҢ{1SNŗÄ"фO!% DY450Hq"Lʰ i8^\qoþ:#+a~[#%QعSo\$/Ic抿hkӄċ051ˉqLcNZC8ÐL{p``˳NUMU(//ǃD2RB rrY\)FeeM%裏*-7lmm}CX/e/(iN }=y#%kO=}ӡ=ʮ#Ld ry脮*dL+0^$|4|}J??#oɶO^b<[G F&dM9dǧU s_)y-mq?==IOccsqEeuw,` 3zoaC6(7R lXII |]љٿ޻ˋo+-Κ:=o;gYV.jqL ~@atkͮP-JPD%_1̎.mVlN*]8MRWx _92/sBQn*U~Y^rrn1Y&$l4Dn-(JλjRTSY x],'qOƓbq~r@=͍C Kͦm:A8zw]tjIQ;.{%bf_v /1ágl>Tq7[6,VWu:+$lf>O zM@a馭۷L:ulK,4ڨ= re@i-˵uuvw- B-Y8Y_PX_ ܬZzͥ:CNB1DH&Zx$Ѱ8v4_n*jo…K jil'r3U٩ΐBAʐ!PݲEeeo8iY VU=?=߮oؼ9q?8vYjA>;[fݕ9/9)1 cs<ǧxnx˗clfzqͷ\[VV@iEAhx \W3k| [ɪ pD$NZ" C*lI<̜2 = /,1573Й""\h($U4,SJie1 c9EdBJ1}<ŤKbA|ۏBLS#INIb_H]H4<׶ptrFq\w{cO~;Зp-B42: EEU@ػA^'g}+Vrsyuy'91QF'bެ{P0*$ 3udᯏ`;셧O}CcQUuw,iej-%w3>t՗<os8p;۵wMW66KOUUF u =8΀I\MV$InIpp5\BZ0; $NݝݘE<&w4C7zs}9PAd_G8xP!siDF{/n"I8䂊9q dOAaUyh 8!+HM<vڰ:LoևD>:nݲ?OW^UugkG)(ߏ/:mszeۦ DY}L3l"*a4z Ӎ`Ue=Bw3nx6{:P#0 7lu7}w6W[ߖb*hAjqq (~-wz|>xOEKŜK}vƖ;\ycOu'3ЏX6Pahw@aɮz`NO:VPzVv ^1mS ܠ&|`IL`ga$_xL;gT.Ʉ$YޔT.ڐfcmavౌ~) 4* gb?iXds1 /e[.&p]N񍌜-Vwg(:xHtrQ0@D އCL D}vMb SP?,sϿY`(Cx?NA9r $N&p8602# r= {^oT6\GĪW0sgsKtT VdtDz uJ83qq7$^ RN$~rBhaNpYV*;QDzz 58AbR.-9ɧOAh!~h nWo6][Y$Yc C?L=VG[wg,d>@86CӁQTQnXbQ$=3Hi`Ӗ|  SXq &mMgi88ecim%W Y~jfNdKL3)&hQ$g+0H4s}|/G Y=Ad^DjT3cԌ >HdI|?/+N  "U]7/րD93t-'Gh0e٤M^xU2IO` *N I"2ESG$ǀYbr>fiN^]MﳇW3N5_wHm}APBfDڱ)WuEM Y7UI!l/G@9}|檓m7 lՅD0$5b?U5HBoon{][_7'fok_^dEfUvyV/Q¤nΊnssX bl_e($Hx9ܻ`"l-# JD⑺ @6AzᘊNXar?r!vj3+1m M7LpsBzo˲Q( }%&@+1 ʊRwWKOOƄ3 '+N?5X=>;'h,"=a  HNlYrYvNRL3y;`KľrFCX٧@zK)l0i)TzT=nEH9"|~DGXVO" jq~mַ?i޷7ysĂSVRRҜ W~uGY2gOEY*\yg:Ⱥ`Q6.f\њYdzTBhh,+F$`"F̜Ĉaʁ'+r7w1bRaHR VFID$$F}Y.(8 BIq|?49&q^])*-^SQΆgLL .փ4xÏʕ\b= [D0LihtA"ObGفPUNYu]=@)ܕ?ZG2i`GtD*BV_!Lͧ݇v_ /0,<ɘdjJ ݿ[qێ4$؏Ou_s*@P~{q/€ s8",g7}(̊xÀŘt3qr ՕXA6+xuT?m4;ZrS 5;|u9Ӧ-^rs{ͷ?K/`vj =jj ne3ned7+O[O+.'}w),^S~j0 S*ƌbJr0b8=ɻtg&b%ak|ϴ$b8q0oҪ%td"ēGpPHC. ~J4q4e4(EX ).1/Ex783~Ȗ`z ^} uM.K0m.WK/XW_1/y Gxt&g99PẲBƗm n2LBr c%a fCs.=Ll@Mb| .03 cX!Jְo ˯lq7G}ͧVs憦k yx')M.[i3/ʥ⎀c\y(y+Jz=?U^"oS50 .A|PRKٙ&.Q~{b>AJq$J dդe2hh<MfY8u8 # *|L\3$rQ[[$cE*pOuIxiF`^65ݱ}ܔk4PW<ڏsɇytf^]n.؅RZ^sz|m{)$ ! !JEA4+ \X"?)!@Ho{yμe^SϜw̙3gFm]$!R?TLYVӛvŘ,?c_vnva-'M:n}IEY*|1CmU3n8탺M4?1o$r{:`Ϝeo^|wqoHhOτ3oCWyzkg`he[wq5$G0oňF"Al,DBY[`9$EfqnM!S .((B"* ƍj$M|cpfkx#'eS~7l+'Es\*#XΊs2czFqGe(vN_|w3/}4 Yg(*$9JJ 8-\L` |x4$srg,]~Ҍ4ufoE޽E5W^yQLr|Ԝ)C27;;4S&Vıpe1Kb$ЋDIbph)yujœx<x+ `xq'HK4n5unzb~ Swa"͎BXvӍFvFL8/tbhHtHT=ܶUT@Qs'"ZMRҕJĚ $yy#2"ӡ#;=y툆j+iuvYgOǢ#dp}'"CO?m,RGV{A MSxΓ@k[k:vcO~}E ;f$tSJmtX!aɗj_PYD>cȲ!EΎ| N:GsC#& d`1F^zH†f撴& O9qCH$0ncCdp5&NT&TB jLucd462Џ!Daŀ]+gH\9ñ,WX(tA:)5&9b'`DwsR"Byc{UEO{{h:+'¬طosU5qG8F]5)4 ԋJhԹ4'ˏ1nt fWN *=q x[؋ɟ}M;](u-/Wt!>0!v1vȪ vy+=҆"Iŗ@XyRO `эcVWUk8]OR2*)2cP ;#ҝʞuQ}'d>.\JdVՕW^7xj/kâ&PbHdIr m]Bu'`Lօɸav "Q Lz֪W$pUG%Yls9/W v%n&6o6q. ~&#Kz،hG a䛤h7͛!{!򗗽бѡPœAYgR( ~:G#<422J:tH`K2A|~ J D0"$l9J<>'>|ήT(<{qj U!E@#& tc |i75fu=2?Sn" g{'M ON;m`Ψ[>}Eߧb3T4,X1ǝ ^ f 9oj}#.X뜣ASZ9zV2qA|1&j!!k6nD&;G:x RlPɭ.Ukd+dU=*V 3*%JNNnQY)QwpXv%l[M< A޼;2UXUG.Ϙ_56$AQe0Rn7*e!ę` X 2`IX@S?Ҍ-_'G0Бo2ߑ2B ~An*|+;]SNojiwxMGٞ/p,]X jkFU\Ai)*eM--Ӈp+A "~w ,A;"Q-PHdMZZ*GtQ % ìzHcބ(iBN厺*J.lp!C]StCMm1n<*cn^tS\xR+ ݳ 4Qyȁ/RZ^Y=lQ`oU -$HbЍn;) 5l 7Y~#VLj):Zp' m&Dj'%-Wh5(~zjQX@]9mvtm/dt`L:Z m_WVUfʃ,Am:d܌:;B-7jك>Ԛ!izۺ#;5.Q4S iXt1 4oǷx0Pz*޳-N8T5S%_X7Bۜ h^6¨6SNB8{>m';G6 k -dy7b^V]+RdT2_ "n\7d4p#6E֧KyUOHNb]ZFLmbvxQ@!(U+ 'W ,]zSAe͟[ C V]*."@WXj4K8bbC`J詍7u^Ш Ȉ(9R3`5=T]kopzpI$ qUlrl(#;1wB+6uݵd;tnXiL!r/LP+ѽ˪lًGˈKv0Br$ P.z{gjtY7r@5u^*p;Fbg #K ')LiDn:8jdI>37ֻy)e!{ ]e VǓ!kS*vC ~u2*:;H0bDb-wy⚪_4zcq R:E7 38K4qX%TG!g_:&zIBj1oHE;Iwf_S1$8LRC<3ՈUo?R9i\11i;`;p=#Վ97?~Sb<f0jhGޖn5[g,O$ixdEd\ʱm{B\Gjj\bCU$#bK7(pN *~74vl";Um#.'\T<2, # |5fxJ<^%..j:uÇÕ?bu}uӟ7әMFk~g١ Mء8aR˖-b߮g;O8SCSO(_7BkJ*F(@pd`hF|,7(la@<.3'@ ]<*|q*"G8HȔҢhBٜ% ~$F-tD\[\'#={TrGJ1{Z<zt}24ɹ|r.ZS-m!7(59? "e N'R%UH`AAtg37!&a+1mVaB0 ǖC稜$/,RVu?o?FPK=nL~9~uSYTm˦ό82Ը;WsX :&~h#rA|=:,oz_ "$m%׆)3nf6&'{$cg$V?m'^j0DPEs7r9673qC[6ltz}%U@<IpGi3o!%yy03=ӣ:V!@Fz/j7c>sIփ9!TU I'r 5W9Q L~lԩrl߻o*ٷar0uI:|o젒K7SC}°ZMCU"PPPVބh(AےU ñ U6i7Ph*A?G0gQ"ש{hի^rEǵruQߟR`RG-+='O|ևiC͎@WU]0&@WX^!RX?% ;"19c2ٸio17c,΁q%t=X tZf} xs-LVGQaw[zVH h_ofj]˸;{= L]Xx?㯻!J7:118a;2=딳_nXIx%jBULƓq3mmMcCKj踈Ub^rc vNqE޸8pr|Rq99Yvv}HfΏE2rė'h!W8TAUMj1rpݑҡ*ip! ;n1 jÆmj˱<䙸-9%9}v} *v/V= IdHn'r~?梛v<^ ?tA؎LF]iVTC:~0t2?'0 th(MTDi2} 0l%o $\m %YNɕvDš=g2Po=q76*YY=<X-}3TO|4gISEaR(vJDfGFv;:(v2Ɠ%6m]@+ot'cG9C0_nnj{u7l?ѐ큍èރmĽe$Fِ9rM`Bs;~\jHD>fgg)pkAR#FTg̝N8 5qu`vuxCj 1m`6pCFQXUY急Hh HР !=nV 9Fjv"zC\xəm\VVQvu;$}GQԇo#IT*TilzG]-[jY>`c-+e$A4,\Eߤǧݘ!ocm' E\ >m-S|ܫpzmXDW~JȨXff[cܘDE lt _.+{Tj Q㎃޸ }痪FeecN8oi:T:~ 4P4_ db nT>a0x?2"w>\;lܸΪkw:˟â'jk`Ķ=NbyI d # . a᭹&fi}^!L/dɗO3EIgy q.U2:5wwcɺv9_UJhb:F,[Q*v}jȐ B2"t^ aBFNEXܩcVbˍ@A ;Ú!&FQc~GrnҘovq+9{kaQY3|sj{G0lOJhLۛ%rܟF$]\p2$p˂9/UѷvYy税/I1!p}u j⴩jq'hEL|iS&-q{8u3D۳Wm cOefTZB"˝UFp,ӢoyH0Z;-ʦj؁OX_~ llnAN_$p!r&r؄&jA n8Jg:xQ0p/`'i@!䌄HGq|'{.㬅49ϯk3|_R2tOE82:!OP&8:2# UT,ȥpleU\? j Iqs0u^~ɚ !;~CYulbnLSӮ8U.".>mo[iJVR6pZp ff<ń tWV3grQ|;p\PUc '#vED*7 dqΞv9u&oOۻ/lFh44Y7Jbѳccx•سx"Bݸ֮ۓږϷ*(l\%ptLh`S#fWZzcKG^Rb:|IcrՌcT#h'$ ($X?XpH Hķ?Vq#;=( V{:!+Y9j xaQ1 )r;P+>̝8EBΕkCS;NnQK,"Cˢy$B{M2$0ྈT9bw޷~@Lܚ&Oe=wֹ KKLwS·FE7txl2rsBɬFF<`73:#FC q2%|e&-H1 ڊLؑ`/#e1L+i,䷈>Ʈ`aQYsG~*m"@[[WRw@C̬@0=krs$'R`+K2I95Zĕr *Cw LzRZnXa-ueMlM@ bHv?F6wa(}vQIի-i~a|4j8:z̋c!=t=ul\\TcE9?-5YsvTKBǜGA`%wX5r$H g{CKJJo D p5( eHI׳@b 0zc[R  >eH:zi;) šRw ͌ubEx qt:cP`'$_ sQa"XE;$I70`iM\DnV,C9 5]ݝq,hvVsp[\Ml1C-2orQfms7UQegdӱHqWCr@5sܪc܁Sιã MMD'?ښ։: b#  EqZkt7}|cr~f lWb+goٲ干ҳ  ΜNX*eN 5^ɕT-1Bӎd"%Ik[Za JO+Ӹٙ!3a#0t0 qeLq;"] hOy[A|SzX_AE.yK.yAγ%9AA \gRvحi݅C.g_[jXߙ@ Wh }c1:Wm sb_QS۾9Ƽ+""Y bv罼#8(@ _,>e 8~qnOqH;r58!<OWUgR<tC[,!v׽zUPpysϭ 4w" @nSq~LC:!mgI}DZXu#p3L͟7=2[gx^KPIBh8nZ $Lx!L9™э6f}Ƀ0XkuGz+IQ&:o3HA010%OaL#/w$pq@eln;$L;Hf 0NtJTzZR˚ymXs4% +))%a})QWSSHX`o0{ A"'1rEe_?e\,/'Nu5欮mḐ*S# ?n "fdGo^9;/)={UZ5qcն[O!T];a{{kkuwwQ62{+!a4sB3@Xnٻ)9 7ߜƦhLh,h"X#e*mH,lڏYd&@^F=XD@+Q|P:p0] ƳN), !JGɭ<}_vt[abXR>7,XTj]h3wICTk}Ee. !]?ACp=l.X$rC݊ ft΀'gBb\ Que/ɶOZ,#FxY| m$zpQtIjXXt98:gkH={=5S^N]ozW;Xo?x҈Y&[qX7b8Ұv~drO/}wΏ3p0k/wm۶Z⊋;39I*[ N(# 4T6H6VO-:3N\,ڏԾEvjCm5Bb."g<.LNHÖ .ބ57i>`lJkiIQmfLѷmREu<S #+tc:UBLN9h*x^7~2FtneAL.Eحlh׺ׂguʞ`IϿ?4Pe~ CtK:}m/-Rpf$)F#]}ee?jU' SxшmY |1*zx(m@IH C1':0Lttkb҄BbOu]_T qD1@cD8H#'X0l8Z@ dHƁ[AS:2$p"iDa""/^ALU{N=`wy Jh w8ccp:1y~HH0Cc&aO/ZPݏAvc?R&FJqd!}nj^gfpv YXd\IOpt:SfpjX$V1cȉro<n}~/^8sܩ8!:[o{ۍt[Ǝ?"] ˔~Yشm﫪+/B朏sQ\hlǬE;0 y)d$G6^ My[rLi A#v@"n]ƈņŅuF޲t5Q'(QQJ&vCthEIjr|Lx"@KB%DV"s t}ҩГ&!8!f*ȹDDP'SLd~ v6ʈnʤ1@ Hdm 8ķMZ.+@Ԇ>=oZ贾>`d6t9dM䧷>\o+[ #=O|KǗy;W\mvǔ36Q(qMVvV=}H.2q1C ΖZ9)' T=Ppo~Nsĉ  fp;%==]p8+,v.ė2 +߷D>!X\ N@!.; p*HaTNVVըZ_š21SC0>lkAwdP556.Ұ#!!01-4@;#YvM:s+.Ѓ܌-7b96!| &?5E $ 0g^ (; `jbv@(Gs~[8Y]HtESVVVvoDҘj킛 ۄmV6\HpQλ>PhU[ONU^:we@ڎ J…{u8cgW?ʥյ-#!bKHww8ϘfLrUޘq ų"A,VoZN"؉9;ӟ|}Eߤͷ,!ՙsϻ8J#WjEBgl=Gd#!r6tα*3J1VN*JˡZqr"4ނM A4'Ø D\V+ +'p'"xB O:r6PdQ¦Z5e2 %qiv1(J?$$4V4>+I9 ]g& vh$v64Q 8Qۉdf]#_H܉\!h;xƵJ"#>ЊMS .)(ye{j[Z7* B r٥8wDA-^ok`{ϯ}ׂ?VힳV^G2`'pEWZSךKHMTWԨ9OUH0Yc {jjǖ'U$p+9Fp}ӛnW.Oʪpa]d[NbG~RXcK֢3ЄtCeC>l\< 0۠Z+ǡޓp!$8Ǻ&V1σɀ<~'O,\";XvjEh<"TFWF+@RPh!,DDtѠjp/}p^tŨ7ww]Ѕ rJ C̅E;^5qcCY)POW+9 owuϭbƛ[3H ^ftʖ3,~'>% Ğ)\Ru@N~80Yh;tvl=ס9p v8# R+u酗P\|SzA`9c|7>Tx#;dՓܒm]u 3( c4N W91*99FQ{!.&V/hQ6g>l2bDH4BK2PXɢ))!0R!Q X. 4oFph4cżIqH_!\smQ.8ąJ\ 7C4L 4]ͭXh J #6'nDԃq7ᚑ&8޼5uu)!8yt>'zbX$F[Zԝ\Jv%/' uea5+rhUu*5E-8O\Ԅ9smRG tKs{9ÁEH͌ >#o-{㳶i8L -"sch\8y{[{#/!vCNB##փ=zy3nzԬ,\Y'M.JJNuƽEO87d`z)DB`<kAq!8Cl\dIWWZRrgcSXx?H* bf?/tcf#ײdsrbQF/'!u꜓B%O&h$,0t Ѐh cq|WNb3ͥFQ^עJk1'1o“cV t. xK5KحG`P *Zp=4Gw~ 3>[ ^6jai qVHvG ;;A4je&8 3Y_f k*7hdohҳ՛BiPMTPZ !{{pDMvYS Kw仛9јr1'VX KϕUկ7";[CPIoyC}h<'NbUζ6܍@"|n_񐴬3K- #|GO@ \uTh)`iЧ3,PbpJ6]jHJl (46u)OVƎh ,i`M4CTpNq?;+QX5`M좻Onj>BJg[g%p {jo/kb\|<@79ZN3".v* #`ͫZ V]tN$#'Ӄ _[} ώ@F5FжrL`OdŒ`a&7}˂Wtt! .>뼿}{Hs7r%#qcdA xp XtF7x{ H1 FJItd:]}w'F"BRSVSqSTY+>`Zv_'tdeR8팛$pl9pt1X&?FXu,Q>_ /;v?_VVzjeɁG !a%%&H sD8Ify䵦ÆC${Ty 2Z4B|9v@i:,X.F9 3e'!5^Hk[dui Z7\{k{[0_"@%P\V_r0%LP\ ֚Zi9זF4 'ͩDL!>\wb{!ծ}GUkwuU>25f-EG 1U^#a hq"0$\oiO~Ll3/:/zC9u#Z8 kd8tB: \ow#y?+dyw(v_M! fj0{Zs|RF.?5Nr$ϝBx&5E}-Wc4gYFw\7PלcG/iw;KK a!s(sd?'' ד#_ocZP}YX',ҷE%[[uRya7&y#ϰ06foݰal]˻} "K 4@DRQG6*,m8d1Ţ6 uH n`Vm챸,wS˳a-\V9bErNK'#5,6mV7 wb[zSyIz8x&g+HGbY5! w2p _z3!KVA :cDY>]ve>eVN ɩ6dc %G5m:y9`}=jf[/?'¤4ҫr`bw_تfNUhtp\ŅF@u;خ2ҍ=nhVHgkzGy#B=hǁ2|eWY?꺂2=aT{l9-b7 to#L&e}9ea\$/s^b(l> q!F~TņJ#INV: \ ρqD9f0 ǡР|&xUe7ӓ?дSG#t+a&+EO980ol- r5FgF߭G1j֦ЖחW qW2,|>nJ<ıN3~Əms.|@AcNt:Ǐ|n^7_vxSgT& sν`g*ǀrPGv/ZfÕf Ö'ƠfxiY|Qȋ'IX|Z;}UWϟzZ\tvǑ?P͆Nb ]ڊJuۣUv/@J `^3:)z ;݁ /fgV;"b`ag%xD:j*=8L7nafN҃a"Yup֖7H </ 1Mm!J8H 1{wzwU&{(w9#ܹYNj72HI@ j\nUW?݇XB* tJ,mlJkڱu+j˪vzW6AyA[c0<;/~$zê q?H/e>5O5Pᒲ҇qW uAᎍ,L6Btl q٨?z;`uۋJYhR͈W?jM#? $$BPhbA6G/߰U=\[٣ոa*;w?̑(T! :N;%Ծ*/$ĝI$]p.g=Ħ?Gom$[uû 9@M~sC 9qz2"]v^~~C[ӟv;sds(9G<8g2(Rq5fX"SJOuDO2C}Ĉ?7FF #6%ֽՕ mPNMmCy|\ϸTW L>-FKeדqƸun:~Т+M^Ob * BrY_]q#2vkT4#H: [,3Oñ"r&d8<^q#J=VzVu)II\Gd93o'VpӉ_"ptqiڴ7bmX 1 /aF啺B\=ŊcE’AuBN4mB7:0IHͭ3ǩ> [46Gqr%30L 3 BU/{Ə*ڗl}iq-:qB&쀭o !|YY|dzt/v%|[00}"ìdA GukQNC}T^_ V5&٪)Ǎ똽hE~u. ժUn>NaϝVVWC\8@Ϊhc-(M2(Kp"ϗBHT^8o ta π,N1q3a/ϗUԢ3bԷX^a$Ȉ¾[F5bT78wVWcQ5\:`f!'DZ鋚j2'[?dD'p: ?AQ`loN킔9jd':nni>)aoux~հiX3a h BW7+U-}U/ |?hc҈dF_@ }0{xx<'Q=V}ܱFeM;qMӰdus#$ɡ}f/p5F z{9qCSA~ҥW7tFlINH n>ށndW;DS%Omwv#5kOϿk_ޗjGA˫Ph$hi-p&-#A z\@xb&tƃ xSLwbZ'87SҮZE6Gkzn GRC( m<@\F]t0YxQ(_P]RHz6Ua\: D\ S;8- qedOy9E9#*YtcDY}BK---,EhLcnъA(n=Ԧ"m~VlއX~$FVݺ_;xyO.`MCR\LuBÊ| |z*__D[WU 4Ew]0NT(},ܞ̉8CZ3ޒ"q .h/O`UKؼ#ghv۩R9yi+>m@(\ncr]#X2j=Iu ?+t 8X<àjn5pv ~hWaf8z3.9$Khj0"mhLPwD@gV<'S~QVlVVwP&C3qRԞ-F̓jAXDz[S1uklaEC,x0= ğ&e)KL$+" 0£_ n}ι;Us}*:- rqpX(?:V^g cNo掎݀T89~#H q,o)`vA 3n&[xcL^ry[}t;ѡ{?q$;ф|,;+~BxP;;>Ċz Ǫkl9bX@Q+%J cnܘL]sdGCv]ջK=uy-z{`ӓg-xs* ^[`pg7ߦn$L]; 7}qYuu՝1(+ԗ$cRH\ pfD/3>,!`6 !]MA(&P̗#0ц I82~7^Q'ac/NsB)=I z T_96{8iKa;8t 2e>iXDv&[nR X#X:v*ҍ\Y. 8yV#" PpX6ri.|y²k^)-;:{^y+o~1-{:'|T!Oː&*S4G\$aa{+[e3X2x,`\RPG3ewKBoE` uɪSzLU`^2J,vWOmm#NJ78 蘈-z8|wg0t֏r8uv1e{y^܄>S qa$QYuƟxl:RcX[tO| ͐n `Gb?`;DYJř7z:k-DcչTcvg 5F43V 1Ms=?n;Z9퐱EY~bkBV,; u>$ ,KXU'˖ˡs ٥51@Hq3Hn2wk'J+?0zp}׫#`ZAk'/:֯v<;T^^~":uV!r dmMfu)Ou:u6f_O#P>:t`:XQ\fZi,E2< KI]s kقkVj"Ӂ-.9鐾WwK}5n0/H9Mȗ,.(; ?3GyAD59`d1dD=<5ԁ)V apMIc Jz9Sgji :99a?*j=&57^V7_7xXN2 ^$]² y*9bq|ͤ@:fi:#_{R6^<]N8uc3|ޚ` Ƿ"TuT]+n'UU; 65b3}J'Mdî>zIy 'ZA Q.Yf˃7~^fL UNfQ3#+c=eq-ZeƄŪƹ͛I!?%U'[!Ӡ(SV &`( ƙ ;wm>sȨ"n*5f]`Q)fHL}g?7jl%I=PNgpN8}:x(#ofrm J<_L/yajcD#? ^l[3K/g\.dm< T+ܔ N#_t˶I^X$ %HV wIU]]:%S[^ xO7c7-%t2w<7q"fuu5T>|yܾ;q %;f Rit,H,z!èE𥵪Fh'7l"껉/zhxյ:8G։ȥ%@S~>LR?=k25;$EȜ ~`˧T%8 GF9#/@4tiAƁTZf~P4Bbi@W%A;XGzZϩ'  ô5 i`ȹ=Ƴv~9sB7*s`ɪm6 0Rh*o=n<7\8 s3þ6tF}oG/>yrllc̑V< *M[pfGGo|ocP{qb; j t CE:!uWonl>oxD˂TOHFA-rƄ>lIe7RQ $P::[WG;u`1}FLI3GH2p$tC㎕4W^3X3LZU>USWsxlk}~ rںDc!꜇} $¦}x`/4QO8}|rAʚv:r []>9>]2oKYGlRIK)h# Ӣ C.f_v#~3emU_5lg{'|\3>1ĜnքaˍV`? uL[gb~ISs e3M995v}u@~Ұ# 쩙`ǶRz6uR~zЙO@jEUGɩ`U OVV&;뱞ꑕbMrh̟90^`9h\pG[Tyiye`2MF)h2VfVnw4ʸPmB-P}tr 8;L!:,X+W&m|Swȼ_) Vt ̡zyyŶ?8tDpH5f@sŎ|'V>P0IҔ̮G`Cc3m@0_bf mԇeL\gatqZ2C؉D~ꩧHAryFzqi f dyBs`hMGL49쉵`!t aABh Zmʽl[S˾3FpyH4Q_ ;9Wnl9~A~FqPÇ m y#sKmv1GdXfː/]cu6B1e#:1w^,yWKq"CSksGؙɮ+W^IЖj#NNk;_9t"i&َ̫nqc:&5E]{{Z!Gg޺ɬ}lY*cd߽d UU(#\/MZH{\OqG?x[ 2kOn7gqA&8j2C/ $8 Y`6K>p| cJvNM'=+W*P{sQww( w7JsGJ9RkMQ\#)ۑ[gd?Y|bL"tPidM̛::Q7BxБrs{*vV|zX-%idg!C`DpKthW QlZg3q;>|8';3z{bu5h6LvX(r]^vx UQ+ND=S,h3Cq*\9NlG|:Ybo[nhiTG84AdT'Y bz16CZV DVnYu(ܢVoBj839$!f/)qs8?:DYeFgOo7G씧,ǕHUpP&4լ `|3rԁ` gwV6;(s϶NpWwkyrЀˢh"UZ[dh cMuD^R.'ϕ%Uoaq)HKl ((a MV AsJp[Lgjk u KƶjX$Yѣ8 kW?(Gk(hΈб#ΨqK7 8"$,Ee6; yb*wow[ک*0"q,\r%U#F툧JggW!KWUnёNYKW}vlNK#hlk;/Yi:nYvyrSeFJ^y96/&:Q@p|Z8F"AگLSeٚ Nj4 Fʔoqxah͕վ@,Z}jES;4@Vs=kCM2@yB*ptx*'Wv=OoOZ4R[Ǡ`XKBU*v4 T1ؾae܇K&ܿG֑';r-2C'~'͹;{I}Cy=Xdge#lB`%_) !g̀!;,@#t e 4_h V8Pz7wʄ19_/=dHmFgXzMmg\%hOW@˼/p3 ` 9ηf Hh5@- c=5 fYo{l{ǩKie6#fh4`s%|'=,Wu6p k ;[f;a c& ;Vһ&NNܦ ~Ž8J4Uuws%7&w]8l25Mr߳n-0]ƕA 5ca~JYv|2{b4__xTЃw\Ҥ鍇zA塗*dG[LƎLe^ *ikZ3!!,sK_JAk4܅:!G֙n9:A.,-oF:777TĆ,n3bLNsc^5 HeF2[|&#av;ʗ*l{m#Q~lo-pnzP!nYyQr |6aU`,05ާl}p2XPYLؠ`vnE<46,fIH-c*36`~ބK۱uزX Znѕ?eRS"g8qծ&iNcO K#scl %ۓ87gƬ23Niֆhq^PŠ'댝/(V,Ŵ//6[C m;㘑 "&Kؘc ꠙ(AjrN9ܢ3콎lhmli8xWx"cGNY ǂ0nQPex }nǎm !evyvM}ߛup/XGcF0x*kؔķboR1a 3QD*\V<Q)4fc@"Wg ijXߓy2etGcy`yxK7AQ݁e]'Xss) \L[kٞL1w2 ouM6Z }D5(9q6R:^c!H~ggg3m16Ӝk|K쥥{([x7-Nhkn6 r|Yz;$f"L!I3??R@=G1"hCL<\'q-cGN*66L,~'>;UOlGe@譝$(w |) Awx%C}CbL=31W̮$(vq'$.B0tfEUP8m*\ON2i:p; N##R`\ZmPsm>5%ũ]I+0-X9Z(K@jbܮQqSauNq͵OTT:^rlw6Ճس}YQ:SUgvm-r>iz*8I K'ˌ9y(@vDFcF2!f.8~aOH*/Mng@+ŕ9X f=<^9UZlB-ck?-~{{Чl{y8)`5>wjrғlsE %XdCB`:|Y:T2I`ɏѓpa}?p4fK)\DfG`տ`imi\Prs&O{min+-'H䶝/}U۷d|;g~ 7Nv k,8j}u크KS}ax%m--1qXlLpš\̛MW($𦋙jqo@'_\+\&768N\jӛDvUA$M]pu{?g}=ocHe_qNKΧrub{b=裮C0#L+XqodD9 v8+Άshk1/>'kI?- :Dna4?~蟌AHV&Ba.8ᡎڎ$z/gn^"s ޗ,8(Xl3pp2m@WHsię ؾn!Ζ| kw%Vx xf󅸂xUGZΚZe8L$Y4>܄iad r:h>M |k%~A1Pk4 ֤~E O3 L4qpt=|p=ΫyJq qL%p@Lm@PPV줪n86nXnL(^2TciXBOd2 3^,[1'ov:$3+j.\F- v>#dxP"۲*!y1^h`-"{OhAeT6{4ON}C b~mrɵoŠ m qt4ё8+0X-|JJlћeN.K/Č25kzSMu绻:&!𧂽 ,3;5 #[N)#QE!4W_lVZ!^Um'c`Q4~7#gukIۋ@ iKbe0+&C Am6:'ê[-72moy=c :ۙN? ~r|%8aw"w~qEakv@pe}QYVKKO/how';5fvDuZ6"B-zpT-ڥo!;՗.urk7#S`ewHECâ'~E0P<{~pGdL55l|[V:ͧu+ &g;wq0dĜfv,p#=vHrF(㩸['oa*j[%q(z_4i';)ԲnWa|'O +_IY?47Mcێ{$S&w, ήM-.\2Aw:Ie%A8ӹ5BkBXEos^[[ֶ|No_7faep%H< "3-(AA%t|y9cx "fnLl0O$+*C.Pn`Fbw^53*G`QTβ@$rj;c\ (YO L2^˂-7*ά0=uÍ;\1ܸ.* pvic1;?jd܀|LZa161+AMq [QՐ (f^ylf`#4.AuX]x '[hvujewzҲeR&.^8骆;: yp`)ۓYRDjfsgyYO>HXff" km*Y{JW\ Fo`ݱ4`X@pG[^|;rM#6[UU5 jN+0͵3@icLO fB:{܄L[<ܰ]uúo##B[A|w-\ 'fOZ/Mu5طbbhjD::KxAF Ď{>0Dv]/=ܣ"[a?@׺񍆭[230敕Hg~b=w .\7^0L+Ff`_>*;[¼Ug8jm)ZHƾEgvL]0@!5CV_r $2uEHut?xjX~D4&1*WAPP4ⱀ:9+x~2 ZN:nkI5^~i89^95|s_wߓAᡟ;@ųyNx,M7| ِoPan8;I 1’혵,voҸLz)Ώf@ ޴vo=m2N>az;x`ЯlضgMPrr4?w,`Cv V}TpO&2=^\izx%?V-cK09\Y68>oVT7u1îA)˷C3d± n3YϚ9덍utOÚ1x?:'àbkPnXYwNƍgbLas'[ώ͙ZbuKcQ4nߏ#))߉F};Dk%d|voLc\:dTV=&9 @JBˍ`c,Z=uv;HvL{(7\0 aI1 7P*>B4X`HSb_D^3Lcs{8Jp{ҁ +kL*zN}`Jq^'c?eүחoP׷g~w;N/hїsȵP5,da+ 7}E9)2'ɩ 'ԩd<LUq%ِ9PթD"Jb]%~NACꆖ(M jd"oΪ$Vm#n~͏!Rx:cf8(I@Q(9LSg$jNbԧJL wx4䂖:#F94n0Á,.@2.,۝E c?\9"6wŰ'Hݼ54? jH|fMe; Ap;kr?tcO`6J[Ce,eՙn9{Ξ,8|fmFzyxRacͦ9ɗ'3q"D)9 + /IV,Wvu,GB_ @:רFn#,Бࠇz;?p??F@l|b/pZ|JdD9V3AG_9{[+>S\Z< S9dCHCzuF-7=643 *(g Ez~yř6W>Y9l%Y8d}~(FyPTl]҉+ iF "6C`Ǚ> 1T> W?n͙5ÛWE`e8SH-:E/83`RDأ.zY-͚Z&WJ8Zvm qӿ6B8eHj0eYDkKkW<@QU$i=<46!G03 0I:~d]掊nG`K1 |>p4ޅ4~71IQΪ(c xtÁwC iAߒF0&d36XE0wwjYAx-XS<8ꃱpc[+ ,rg`Z pSg(;uMxu\V4{n \^Sg(3(nv`WW{9^V"?n3{8 cWxL?qxC*˃;~x,O)^4HS eWf nӳ3ao*^ܱ^M7sl(]w߽NO*LICFܰKX|e̙>J0C X^aGTʋ/+W6W`}^)]C'mfO+NY23ZN<S(3 {'qHo(BJmRP$LD P1sB\*Aɉ:q5&<ơUVXTeqgXt #f1`G9q|8 j&p6 @tCO7C잲f^\l,yb9,f[g^',+y`\f|\Sqz5OAW:W!W[ -(Krźj앜AJ|y}mH9^9sS/ycpśH6['mX&uLw! ֣xýe; )OIC11j8_qtic45:*cp !<2^';p\hl;silZPW66?DwΆo>v" s1O(x çPq- R؝]3+= 4>{葸c~O;TE0{'V8KE.袌זKwC^/<'[gʪox[9qX\ ETa⃆2pg,W^^XR.=mX :=f/hʒW)Wse;}q!JUb!XYd;-R,X_yWo>3[@w8}L|VDM Z  )!S|h1ȸFɚZ!ODe 㗻%bD {i*4L1wm w`겏;)1lpB?~ԡGM)qq%.8/2wbXt|nNfT93G L]i\_}{X 3'ιHi3| {pA8onKq3#2D7OiT~Uf3Dpro8&0MGAAuY79DVYAąHf D8Hmnm%@폣>c%~I7mCI =c,lcJв&(b1etQbΎW4ܦk"yNUra9h iq" 68c%z-?-7C{zre¸"Jv^L mtEX [TSggpJ+!"hGv|Q :0 XxJ|.iV/qsK Y=oikפϮ߇3P@~Je8a~`10rL89q@+${ms?w%qd]Bmii{p/+'k7aO/5AFezFs+^͡,{I,}M Pq~U'm# BM1ly6j]p4TJ$nqC1r|fAvp`{MzxEVPNV!r/SN;+ 8!6B7̶ [=``O⠳xaw0>6NÆg2JòFHc͌}&߻@~ !{gu=~W}[381ۦdt[zyqI;`r|zqo*lmH߻Y<_Gu'۪ݖ&`'5;RLRy|{!JQ:޽Q!>ضt=БG+DahYְ(_ q2 9.M4UۙP, gq4ғZ9\N0ozl+Dp`Mef;S><}Ntw{ۭ4,mbw3 Kg؞8#.7^;qZp|Ǫϟ9U>4j3 VEUY_Ȓo:Y&VYD.NV]X2qX%$7߷VN=0"'QH@;%ќ9Ifoe r$';Gk3_N~dۺq'5{;Qt!7eIvCЬb3u8|N5OPGK;;tM ~;^X/p lK1w; IZmamlK<݆YxvFOfsg%[=yڴp' Dq-GKa1+r:Xko[./O&cFa=(,7jĸ|yzywseѡS_;A\?Y\0$V |n{G>$$7g3!#.y-KaszRR-X-+h1$U|YBw~Oŭ1'3pvyl Xe5DףV0aί6h)TQGT„߾i~!(;> K&TQΓ8ݕn'8ew,_SrswU7IȈ$m$G g9j@tT!{;L'!=:{VVB`̝1c.Ѝ2f2:j:xb j<7s & S[`0G/1 dd\:W)%ř`VRgT~'0r[tękvlK58@FDnfuBҀ̙J;¸jQYu pF&cSSOo"7綶6 Yp'L"&@~ݍ˝0XƵ w`gd: d+߁uv8#5lJi>=]WșGN'55ڀtWZn PM&osN.#1R"f9'P?L)osxkgɘb fa#0 =Eک~iqZ#W COBsK[*1 VP7g{ 8ہD3>SG9. ۃ ((Y祔ALHyJa<loo~3?gUoih:w6uٰ+Ow;b綿657\f@(ꫯmBk%G;q+͇  ɺGc 'Rr5];ߑ/c s\47:Cqp`&7{W&g~dFjJ8RRɔ(6dȶ򠔔~>;hiE6TckomYo(&`VU:P$i03dɮe,妣fqNH;FL>si%7b9؉G-%e@ev`m9ҚeuL 0JJx<Yu^fi r$DыYimo}IDaǧS];ʻbX _`"?kOYR42g9;b8äO4 !'[亻6JJo̗J 7v@1-papBƞ\cU+o[D%??S{wHn!vy&:Q 0LĎu5 Ka3.;? ܈6jqpc|z8w&n%r~R~F Dj`XD~n s?çq=^D t RvA%9b7 Ԃ-(42YZ+(fq6z|nEҍu9:ĊΝJ;5GZ!'"_8`=F<*0Hd!}'Rsce̱@I~78B0*Y6H̓VZL6Ty\6Rl53muu]"E) #^Yua F"[99򁉇z, fg^~:*ƭdCM5ɮVU9riui&:}b  [cp^:8pjx:]}4!r=p1JP4p[)iqZGĉ)}zSVFH_/٫8.K,c56z9n] iUrURM 2g*^c6:@ 鹸+[YR3b0*dxq:C /'쒟]]2BYu*qűCñVCce܄QZhGq(#ԩ78>d?#rT4dw/Q`5n5A)0 qD~4{bg* \$kΎ^XXn\9Peh,g̑¢z$5J Ţ\Hz,ojVTˍ7?.O|v4v@%zMk?Xk*br;Tnޥ2iHbPȸILJi-'jzVS;@dӱn0܁A('ڣ3K#:%"[gH8Z(5:r=gPuNn oqSo>,8z[G{8^AQ'z=o3%S卍Q幗ߒSd<)5N٘**Z4}^}Z嫧ϓ\ip`vʊoY#Wtl|^q?wm:82AYp@[(KKT]:=n~Edvk75 .eZ&$.yevH h$iC l#B:2Ye0JχwXu:B }1$33k`4CB'0lD:  c ÿ$rdQWv2u+:X<DUğ ;zhƌJ7qegOw*ٴi8w,yK>}ʑB6s6Q7fIS([{V[G1 g;R5X&=K+;3_{-&DkP{b!,)7_yFͻJΞ^]Ӿ;YNqPGg_Md0y 󫻺;(D,Nj KG|\ӓU *{qg=@lѽ47[KIUgEl`?|vF2zgEy> (fvLt>{LƎ ҷ›k$ c%ӲY:"m-,)ɇ -<њ!SFVlkY2içFuTθP x"q]y;2Ԝ C%83?lCLNޙAӶ:1ci=^ٶc [;}50zn'ᆕ;Nn8LxezO]MՖ>Rq4='4ز"(tv}qGZ,{G;eIR2*W# 2=BsUR55b`49pĠ`]Ԝ5]nW>P;b;yšUyhz_޺\kJedKCC2;T9ؤ[`$NUC匌耖NbW/F<?Ee]։x!B\G $V 􂣹خí '?wSgk La BwZ$0`(ɳ`iz@1إzӨұ;!;> ;0W/H;1RDZqS엥tc@h)Kdc5KܶR:Ux<ɀGDXUzW9Sx)lX{?/sqlp\ @5X4F?C:=#w[kW-'sgMNXQkm钼<(c<$U NN#aƫ/ {E]Q;s2Sfi,.ž{cI$R:>K$H_% \"C~e":v]s=jz S.حpKŖmh^(6.&uYuc Sͼf~Ԉs,,7fpsV)q)&9X~)^uKzkq,ƠPK7f˃/ɕ?z^ˑ:`aMcL$:qyFʦMrß8lSX,RF#ݍr+ނ}114b= )^A>v zɄE.Zs&;Ӏ2]7r*ξ6Dg-AC4aH6 i 3!kݶ& R Ѧk8˳ޫ׻%om(N!T!QPTZW H(?TVJRJQV\46II|w|{sx~wv˹zZ{y3vffz g Ć\yhw/]9ouݘ+`2-x,sП \&nWGgJd8p c |]n wčϸ>tջ1&?wi708Z*ztbf)e?6 E>s:uu6> 8*떢-ndENJϞ6vUUe{;?es=~]wv~f1#%tN/a,e8Zwo>/>/XuKۣM0د~),D'Ҙ\K xC#.x {K^_Jtq6a&;C O BxB.Sr|!VTIDR)/%^={~W?>2tiaSkKndP]ftl9i~rbN x;ݧ>y;t{pKg}4g967W[p ߽{qG_zĖRc+vMa7:Bz]<0<8~RJǣBBfY̛㌖~IT*o|x"KT$$NHSi&MC艫(mXzkz C1pdR ;Q!C:{;܉+76x=pO]{/neeRxf9w sد[`u|ǏB)sS n gw.SOD=lcO1Z^:8HiƟzfv엄C*v-~2eIpƅ\LƳ苣\r)P\8pp+}#v 9L)~tw4瞓+˟rxDqKrMLAvF7wSG?}i:p#3+`c'8цmKqƹy]!,|1ξ Y\ G}EevGEkeDžkq,sz Ga„^q^dKtX//鄷a4T83 Z× /nYegw Kx_m/e8hJ ŤwkY>ԿGKs۹>XgR.^ΡކjS 7Ϊsi !o1I7Щ\|_8!ۄ`ַOGxC1@v,3aXx^VC@r)BK‹Oqظ:==ǰA4WDűzWGry}G~\ n@ۍ6AE9[p)_pŃXom&IU蚧3θ˘xsNC&ݚx[Yxy!,a9˫/:FkpeUxUt[Idb&1O,-`}К6OM|o<><&f;u;o8`F3e8Ҋ%B/^F~#܅c=U};vb}է;wb)^;= OmUOo=L{v 7cw`.h<ނQUo& ߈Wp oMLك$ljYf-cL] qL>ζq<[o?b2*ceeN+*;.T܎ӠM肣mv~t,v6Qw?ݵ&ewum]St9 kJIh2V^N*jgՑV"A2)&jYe\ gU}eyv=eɉ\\}n`N}c;yn=qFzC>އGp3 Yy>ʼn4+l_}Un;c_B'FK3WK=[ȳ6wN` O6vװyzc#3g~&\Hъ9uJٴq.c|FX:}B؊3]Iyzey'҄`N:Ӈ).hUiۺw߁@GC#/qsrwwo`A=ŁRTF꘸M0~A,Tt0ដVf,_(,N8euy 0`>/Z$V l8KXHpWo8,ΆxfmXrC:$#@ֲTh H'.T9x*W-{wnyܴ ;h*&ΣUgΗS򣢣:ýl 5o5\*ˍ}O7"]go%}4q8˿ i!o{ڞ{/JXkk{eOP,+C˽Un./5ø.i<WK2s# LagVsVyMT㾇98)6qy,vcqޡV]u@W8%O#x8}2^f$5-|诖% m~v2$6lK8t[^ ϐ"0m‰W) D<^>OVre?BrTVX!i‡p9,2?6KL~N4|htf K9݊&:;{Σrw;ZpSJ0?>.i+÷iTXZ:$[~HpHoOK8ڐVl4ԫ^sKNj8ˎ /Nx/@wGxl|LVV xO::ʏ6&Ღӗ-gepFbY􊓦Vg?U0e)NKa݃}a_B?qt&~?Dp>=i>8a:[/4Y[xYy?* N2AlPWi>,sēV@B<j _FZ>H+9 cN}@z(N:lM+җ$Dq:r(.rDtX\-rW>ato#?Z,Z//Dc OU\'ϰUjAf#&僴E:@'3<[ FJDr l PKRk…` ys ܚ-z0}حi<׹6X%oOං .WV6fБ5*?בZb+[y'e9e=d,x=L뚲"Mk#{s oZ+巿D`4jH8 鈓i¤N|ŷ^u(J͇S\y}ΆEGdx?.߷t61.z ^p-,.Lz%g¢/_WHaC' aKO/|񋎾> ./ɭɳ04~8%" BEcaNZ|ʯVҖ㵤FV}V<:[ҬUOq[/aVJJk5rMPI%e>OG>|~|^~!Vr  ڊ؂~"OInPݯL@WDG,4զu#آ#k^jGVv*շn!Zm ` 8KҡHom%4++ҥ#NOINXyt`J }T[\=iEW%2B6ﲏOǓ] IiOKO/'omk!ѾPp?. ʱrlt3N~ 1 L'Y@IDATx eiY߹ԩot &F.8$&FsQTň“Dy'0dd$#ZKuW;>UjU{o׷g4 06s)+/Ǩ#-_;ܮGk>J$.mԤȮ\Λ9KW l5Fg07njه5щ$ZTt'js\-7ZsY#`8ƵUw&q|Y kXKxo53.a 5ǮU|;:nsdwny]Rl˟RÐ_SLxp%o2L .b)s1=7:xژ3V853mRCRq97ǔ v88$ݥ^0yl.sx2^>c;+spd .s?|#~strxbjnKwy|Gy82eb'm=}Ĝ|I3%㈻"cV81pPy\`uu8}!mnLmBI^a ,Yr\. }/j$kpjIJ^'W«.x#˙UCzW닑1OؚWͷV^NjYyZWͷΌ_˹5˶s+qs?>)<>,ǭY t`/${sӷ|ۡ;Z\ƱOףtRzxȗ1#9uaP<>}ܺr_ՏqrT7V|֚S||௕ըƭW˭F5F%^˭_+YQ[[̙H}Gm) U1e.ptE?ؚ/{?s>xkGz)~ qO,8u^I5瑮-|L`\z9vvWmjxLlgl\]vƃIj9}<9cg;ㅩ5/6Z%>C5_>;;ujЯ.һrk~98NYO1pwɌz]=#ul=z__ʼn,7rN_|r<<\.[OﱬÅ>;dskoTѝZ˜e˟c=u9gl{n-V|SzZT.9*ɘ}>%>ppκ<#^hd{qIǸZ.#1a;w~wa.zc]\|O:XW^XWZ_bM~`k</|5 &WNb]>ոRn$u-A8Ð&d>ɱ>Z˧WMx8U}b$D׳M&U#Zպr~tqwj^i鵯9Fz5uF~_8u?FsxWwT}.εjx:uџmsSG^;*"ٮˮIz}/;Ȁdg|/}ǖs$}Q<󢫦.nz.>ӧgs{Z+_<|'?>쌓]k΋yq{ 8sneu#k̉}`ԑ݇$ι`]\ >x$y:qd-WʩWׇ ޹s.dsE)INYrj Il ^O.pS>x])תq|V9G8MKL60$G>܇ϧؚ$G1s,5Fp_擝strC]]!q1,ytƐC?%kw>|s_trC]]!q1,ytƐC?%kw>|s_trC]W=t'&i(>^>]G9.몇Ϲ嗝StlF N\se_m6rdM (đԥё΃Nyf)^򅧎|=8ak2F88޹\.)L_.'}=㱉;w~+Zc~IGz,ⅻ˾ت@-g<60+Zc~IGz,ⅻ˾ت@-g<6f̊N+$k ]>U'jqaIG KOu<.~$yP#>\i!3^8N$sbak͹gN3guI_j5̱l;_NJd׸b(Y˫ eex_~x4琯# K.c&K*_q[_??z ֹTmo!|){kp_ףeDgp`d{uǸlg4Oވv :,r3[9ÖdBA߉apG)_:}ՐF.p:JAߝ"¹dƂ̵QJᠮl7~4\#u9m[c]W V7s9mra_벻/m{S3O le. V7s9mra_벻/m{S3O le^K ɮCxU8\+O+伒q{Gz /jp}-S|y}uÏlώu?Ҩji]#IǺޗcSbgZպ_vSWЩ/ c 𯕃_WȜ58[vq$>`Ek ?U82g͆bk7  ]'^5ϕ.]}FKix#Y1ƌ8z-&mQyv֣kdX nu윓mij-B?jfo{^ۮ+>+1'Vn$F.;d~$lYv~➗O>JL>5G<9F`$Q^-3'`%?\nw8-eܜQ8(l-kop<5>trvǟe˸yOA7*w㠏]#ljp 8yN\e,ZZNqrKx :؎ GNɾ$Wfȱ>9WvξQy}x5<>ё[ӽtk\$:vɟ[ו.]ʡ7bpǖÙyK'_7xa ?;Gsy<&9C`;:9^?8-d;NnN.:p yc _}8ŅN~1tj8|q<:9릸< >Q:)N5l>qs }I/ʁݮaaU^x5]>?۵583A6>]zɾ:>k:Eq:#.N|$ MlNa8j\w}T- +#KvR䎒 ᇓ|uIr@◔AW8ɕM _$ ̥q%A^Kq@&# G%9G~|`Ï=JyO~7N KM9H5yP=trxkG$9g-NC3;F<\ñ΁N| /8a{Xc\gV>-?H|j5~Tt5Ǹ]'s?:\H윃OxbQs;l1K8F<\XrZxbs>@'O>#e;O-|_z1-y\2rCd0`Ouq=s[Z996s%VRܟ>ň{m&ypWÓ%9+5qr/ޏq}ܙ7۞u8j~8}[8v^"c9-Z^W׸{u]RZ2GWqNK [Oȶjy]u_"1׉wIak_-k\WcL\Nl:TsLz-\'zHp'L%ͽRQU޿q8ROOn?[oByge`.c#=|Yf0pg?6ռu58O84֯g8ֺ_Ul_ᮉ6YCz ۞'s=&r=A:t'^ /xsklǡ{ ^bؒ5\q?:Hs1g[2WWl0pM-dB'Auy']vW-Q}s]XjxZ Itb5 .cjd8yv!x"/[2s{|$y.k1IϵCb]P\ٮՀ f\rksۧx~ k?9:̸Ry9xk>%lut$`GIj8r<5ßmj9:̸Ry9xkFzn{slr<1]8l0<s,R1&( 9몫N̋9FW?rmQI>wSӕjZ91OwvIaG#\}̃e-ynGwQ}\nje\˹ٮaOg.=2W3&6:VI~rnr*ɿV|ps~Y$Z|9k_+Z}N?JF)ֱqrۅ%Ǻ8}> }LsFƒ_Ιg; 'L x8~jZ35 1`G-GaK_1ßmpH-ٕ dxtd#{ܖ?9vum'_Y*W !gx\]o4#qjoXW+|\Ɖ1۠MEj]}d{_ lפϯۮZ98OS-:AsWy徺:]C42ۮIT?;}u\ۮ7SdHt5g x%G3;K$805<>Snv1x^.|؞7NIڮ>Xk9slk8Vz:Ëyk9Tiԗ:u'L:t5gy}>Ɍt5^T c(I\b5_ ^u࡞l|%X8<^8rlSGu'+.pn+tO6>$ؾ`A<=.˯M|p:q$yHr_g?5%k>g]ZA 9'H0s8y[q壃/F(ǻ%B8OC'ץb59^z_ lȦCD'.?8.b2Fv!,8|W3ms_ TȮqD'.{LqQuȾXF9CF*yX}K|x%=ݓzBn1tTGk[~d;ͱ/תvjlmע..EbqzZZ_԰WuFZz{up6s27x$XI|ޝ0,]9-jN"Nᐿo]1_r`qGC:>^q}9wM!KCS,]9[?,#@N& IfC2V>5r[y-XT'}[_yԬqbXOW'ڵk)'kO89z> sjײƓhۮrk֗Oy#7~mtI18:e^<'ɵku1'Wxk3+5oi̘RXK~gV3:(4*gP;e\ku+w}ġC&w,s@>R O:noo|Sy#~a=k^_ٮթ<vOj\fmO;撾ęMozS7:TƳ%t u'~v:~ֳ}N~,oOҽSG`$F<Jx:|O8wϟqc4#g ~]jX?\ƒWb ޾N&5kr.߾?w0}z0LNmr/[n6 ]5.,1q;nnq5[ٷ< Z|j]gĉ{W1}>V?#"Vn}M۱+'^c9Έ-.+G~tKqZ|j]Gm5sNKqZ|j>gtqk>_-W>Q*+V0.1*n*|$x٣N8q SI~dsܳO};Ϟ;-s_7;7eBl͛_ Wg*LԪCpoqjp:.?qU?p7nL}^O^T}5%mk3Tg?;w[vL8=VosVNY[rLsr33S sSW6l0ef˹])x ˩gWJ>Yd8}g~uk\_kk9ckZZmjQY%(@@z]ԪF ?C{׻^3׾[b5?CzܹB0_yf֭-[w{n~ w_ *:V -<YIYu Zj?޲_<8YX'8ڞ՟}9Vgh]ۓ&nMoKM|Jmt82s95)^rsy\wR 6:[sK\>C}ºGu#&Kn;뎣_>a.ܟIjv i: O- g;+sŅfyn>v74q=&:)sbLMkf֭obBo&ׇ\qv03}|fƃ7l`nݰ?{0wE_jWT?/Ѹ֯}~'g-ζ\+c3cMN7_|r>y!w!w 8~וku\9?=^^v~qOk&&fg&K2g[`, Vw_kO}Zƽo~k_{6ԕq8Z$q{.^<G_LjmG 嬕:?5Y2nEV'sMn83I1 /?Ceܹ9wϞ= [ΟiΟ=d,\8jDU!>1k&z=㲲WM͆̆Mg6ٴem}d>3?W8DZjĉqI81lEIm~cu v8|Μ;'N>SϜ=7yBLN{iirrj9&ᘈgSq{h2ژWSC1+bHIm%t >D=wa~~e…8X^À ۮkllܰye_mˇng~3gY;}>q=ud}-8~V^D'7b{n 9urkX{rSy+qkn.~CԾ}#&N>8nfbLbUB3775/Ĥ~Xm^ܲeO{޷~kǞ1G>Sw;5Ζ,k]>宥I_S[ wqsmZЕO䥽aD"_g{Ug 6:Hs܅u' cڞI{rTj~Ercb_n峡HMXL:(rЇ07;nM;uܦ;?yu{ͷ?~3puSwUnT<ٮ*)ԩ9|9YUCxrܾ~z5Od-o>r}qUPA0HmW3.Ww+n~{ƷOO~՗@sܹoMض-VNKp2iwMsjj"Ӫ$Z4R[oZNZ񚕜+x>])we?jf3?jvg +(xԮ1N_ڪ9&s'7iy~i=ڳgNS>wGfb >.gfb<=5,, יxͨ Yg&b.R |lW1@Pç7Fq%>W1/737Mlfˎw}qݽwO*[=w10.G<ɜ[ƨFsX>|]\<>|9/^kI9#V뒫5D]zl EHO]K9nuqM_'+|?_ŸigJfuΘԷnݬ :;Z_,7i\NJJ=/nѤ~M͍7߼;vdpǡqONy\c5%jI"O_|93~0@ |ϫCq]xѩU|#q6kg?+u|ugO޳O|S'S'{|A+ɩ8lܴL5ourCg[zb5SpS5ѯę,ͭ:epl,W9<4׶@Ǽ}\^^[K[vlݵٲi;nn{ yͻ~kWlg86\Zcӆ[ 2忌` >? пbPc.k|'XHyq|)ssc2Ki?}}l},&u٩LMO57ob+)]+;7vRcBʎL;!M)[7;8 ڻg7_pTX6wt;mx|H*:JK\sT^w/#&k9S(+|ռ?p9㉁%M8KbU~m}{Gׅ Ǐ6ǎ֤7~NO[lUswg<}#ϝmfu6J{H-j[J_/l}&szRWrŽNAq{=U%\R|*ll}cد>㙿>2T^-q9J#G.XIO ][7˺3$}xq{2/[|xg=8Iv#O:-sG^=gRna ~Gޏ߿޷>1ڄ&XYM?ͺ7ms6j[|+m!];_STcLqP9XV2e$.utm?y~7#މ㏼&gϝ}9s͛&7AktuqIf3gwΞR'bŮqڽm*LX :V'?K 22J^xuy IS BLӛluc߾_{ś߾v0F +tv7|)7|_}/>?̃s3,^Z03ϟPs X4>dZ^-v9??\ypJUz`/gt@uuWh w '~][[|o(OT8fXZ:wi6=sym_oIQkh*vlcޱaWs+:XMn+1:Ȯ. ~rM#>ñ„~z4'N^Z`K{]\Dir]ҁ?iǡ u=v4}vqZRմQW혺z?sN1j叆-6~.tay=Olw?-]룷ϣ2ɗ._IXuB@W>11FL}feDϜ6.%/}5AO=.+p=4wֽ7~gEATqYmE/ݷ]+0 3*.q0]_W<םJ̗(̨8Gb]VCgbW3_}g{O|SsX6Ǯ=UtǯViGkߺG;!=`롕b:5TiTv~)u&NӇ{0Ցxɋ/NC=$ZG'Xw{hz .jyp3kzc}EҸģߵ8FzN 'Ʉ49IfLЈcKf~=lG&y+ӫ exܱ/LLN); qq&XRlzV-;5'_XڮJ' uP k0 ˑ5|K^G\+udڋ;dLW">krjEק.>q`FWNWO5|էAo޷u7!&rءж7Mm߾y=ƛl?Tvi/UVʷ56o_n۴={yAo3\:@tt5X1ۯxόVPuϚϊ&8."pZ_Ѵ0tI]+KϞ҉ǎË^>z(>g庺]˫,~ kq} 3ر}{sӍ8 + BN*v80xD$-]54v4ɲ',[$h4c3;a9vB;_y1?L_o?|".ulIk1;k.$&̭<z\\q8xKO>vx_}򑹖Ov9MKӕŷ>O=zX6503=uMc#k>7Gvͮ1l^:nֶ]bUUV1}?{!=#^nΝ=#MMχI^g. S|3$[۞ׁDqPV,A&~;upI9( uHɉxɉť;?繯P@IDAT|?0>o\Ȗe C弍|=zW~+͹T\'ʦyI:&=&,tŅEʧF1$6:y¨o191~IW\\Hjy$BomHmZƒI|#s(1n^&u3C-Eϟ8wK7߰yv]sk7qZyyN#vZUJ<;tçRơSwJAJ< >vRZѮ?|8+*|+E|`w"MꌵԴ'LaζĐbrK<>$LqlKٯb/9mʣxۉcȁt}1N=Onٴi=767~{qql+X`Lb5~Ce2~?}b-?23Wd|u3nD _E+uׯCih>lq]nH-6VzWN՗M-M">e Xo޷}ksMCZ_)19c1Ákyr|َ| N>oE 1<<>lܞG8|dbjz5/~q׾{Ξ9q9OM{o?я4{ĝחUF9ŧZkoMڻyҤ^eo'uD_RtO)r{b}?a#c1UGҷ=F({/rHFFq&֪!65Iϫ)]x%WgL>u7n#ǎ-J 8Q(7w-t8@.dL>lߦ*5howlnfc%`֪&xc2,k[bd.vnusL`Y+gbI]?87*_M9ЁNoK`uO}C$'_q!չX4J|7/k^_ K-,W{?/jR6SZiK^B _3Y:/Upy,/c)l_n-?ޗqj:2.ceU r96-,Ópُ^ y_;;>y{Ͽ%/xj*ĦMWny׏~c__nϼF7M]T@5Mje?ORF*^u4`aG߹sVƢϿ;_|p%nj݇\MLǥȞÖ1(e$1iHYx3[8Ǻ-1QG铺;˗o/;?rhñcGb,ץ'7wʿhќ:u9CуMXndӤ[뾑*iMk:aŊ…1@+昏cպ洘5k$[Nh)zQʟXդXd𺎾~L1S4Ut]rmr,p9-^}g. 疗_o~̛s[ksš^_M}ꌊrOO*>ˍJst6[K[Ò# gyن#v8<+XMHe/}DXylI}i-p늟inF5αb3HCҞ [z,tt;qPzN۝x[ؑhw-|[,/oq0:}j¨EOM+璇OR𻍞"c;Vh> CG]RM5x ~}{_w|'yőC'O-M[5O߶dȣǛ|sr޷:U͟)t}5r&I>8_C\M#3Z}+p,Њ;VyJn'uM!V&2[ei⧖us]D_}g]v9_\ʛV$1V՝[};3C:3zD=AھH=b/畮էXWN?^+]-%/畮Vg)jtT\ыqǒ ƥHL_Z0`kpGb{|%~5kΞp؈O˧NJ=~sM{Zr/|ٽkWv(;*:hGS ;6ޮ&4u@ h &b%[_川+˅2Ҽ de-^͹]'ޢg8R~qWA CsjX#^ss|Y9MշW~=tY?ܜ=?_;ٸ~g;Vn{}}(~rZQ Dog&>گwk2?o0zĹ v9~%b~nوeѮՁ@i_++7]CM:/y`ui@:_xTUJ⹜ Atlfqv.[X\;?cwk2 &k5*>\I$j'e9*~E:4sݥ⓭>@<]5!sq611Ɓ=+y{ϿE/i~nE#S'8qM==믻.n.Nq0OtG#F+bۺyKsc||Ν决z0n{~!^-7{&o?Ns?7{9ul|&dʵNu}-VZ]G^{Yt<_YʽuwDtc_H'Ч2KĤ~A]YX߿{;>|&%kGpt~i-wt=c*Ηj}9y 9ZWNvjr<}]}zO!,{",zud10Y:s]l|5 .UFT?2/{J|[efS 1:sX_W&_u)vΡyv4uZqMQn:#ģ`q}inv~"~ΞW>]wz^)svxB'3G-1]zẆ-}}ew~WҚy˯~|=ro9~- ]7[rG\/ٜ9}~2cLf:h&s}UKMqf݀/ן<,1i}yX(ϐ&rJ_if6~g^qJKÃɮLe^8DV(Jm^|%X_?\e&~a%gP6#t˹x ~wq'V|%|_qSLڗ0$v u|VaKՙ8rZxQ+W kgN|b̸'~ s&ԃ&2ZsǚC4ն_;zsvx>OŽ+&RJU˳bm>[13"x:yp!XWy\:ds1]:y]qH]K1!6R_O?~ /UKfR̄Dufo̡#GGO;c%7J4WZEhtYmb)KMB<׺C68b{jߢpGⶣԃ빏94?>ŵ׿>VW7._tK6>׵/m']-[.^D_wƊck'_ĝS:5k.>pPqh2 &+i[}r-dO}ӛ=qB\޿*7u=Ln4iu[5uۉT޶kGy֘$WqfCͱS VqL,ߣo:0m]u:\r"~RYkspnՈG R>Aqc=.q`t^b׍w:0(#GIPwutɿLL,M, 3җ~xMI?>pٖ$<]9y`K3^& \#ᐍIqAH87p.Cρq fL 5\y9Gb2_(מs8F/|4y'ݷ|48~|t$n'5y`jx ]R-s;i-3HnW?~˯z?|lI}&5Eh'{!~grz8W~aA$[۹H,/SƇ4א/c-L91g$q5ؚ l $mxO6>W2jdʫ:%)B*Q:qI#&V_9/sdlH_8X'=v/黿ߜVܱ(yt஋k_y+4c%ٸӷ=I1 h~JsHԴY7heyg74͙s뛕ua, Gqrph |'⇶n[yw'? M&uƆ,uxG:Uı=&}T#阾k8c3{5} '}5rc5ݹ;G-.\9Б5vS5l<7slr%sc5=%ܽ@-/Veۮ [!.iCsd:kux=E/zTHN+_N3\wysnlgΜ"o?ṵj[ p-?c~td68`Tp>[O5yuad|.\:cD#ϱ9ޕ?Z>}27Rבv^~ /{I=/v8{cX3cZ(;?pE6^S;Jh{#~}Gl6ݼ8ܰc)V(}Bff]=h#+ TƸ-/?~:+?+u嬥pa5q}嵋_}kbXz׻޵y;p?vΣG-=11r>ϩHaMއe2OV5현kUuq? N7ٳgbگ %8ƍ5;7EfMqsgzkjw5a/ul}LB<uoJY==X"Verpqst{˺fǦ'+k+cb:eŮM_g4Y d>~;`'ڐKb:CVD(j3Ñ/~Oj>g}ϫ|-ЦRk՜k&GkPO:u2ۮ%E-龚d[9]m;MG+>؋^x-/|KPĆ8$v xx4ʣ_Z t%)U#5JdC}Xs֙ͽ_<<]:ܸpݺf6NB3ߵNaslso|c8t2l4c'LͯVxc[:1|װ>h5?lqXSc_I[;o~SG?x`cj1;_>pw<#N7n|0~Sl3YpcR?)Zwku޾/'v ]ǚq>c"kX4I2&wljn6ުo @gӯ {6~?L-+q KYf85fV~8Tз [77nj6ıj.Y5/C9 ̊gVrl] 4zU'񕯴YXB15O J/hyIWKׇy|f3W=O1l]}s^|s|Xlxe nrQ1+^`$_\s,\bH8M|'կ|e~s c_&5qt{\,wǯɕ]7ŗV|/JF4j(74_u9z~Y? /yp#jG??3 ;wUd d[_l+ykxB9sl.lϼqοb| Ǐ|}6g.6X^ܰwo̯Ͷ;R/~& 4&_Mfzhɻ\ߴФ^V1oָ=c>t9}t9ZD5{Y&Um;]bŸCrLcŽ3qlb>~n9~v9}a9oD=(pqEn* f]wS| 1 v73Zٹl4JXPNk8)_mӮ}~h[n]@ 7ظ~ݶ/~KY3oq,/_18xx^Mg=:ʻe]mQ_UnlSlSP`0b8 %^b.r#!UmUh{{w>٣sW+ y}#ݝ͜š?^8Ӳ] ܰ]nӰtr LҸaN:7{?A]x0战Ĺ0PS}MCvi54a{}(7xc'~׺g2 %~끵{}{sy ygs65?7w)=6QOc( Hվ%s Ψٳ,cT)E:c}%NLfC el`>ĻKn'~F*uzsaVߥ!M[wW?_:<ʣ S>*τT|' n޸1⋃;a v7/mk8C1F-XT׬@N#𡃦dg-. [(pw04#qmɆR2o2ǡ6E(l`!Boh#V~؛kaac3@0k?lP$"Salɫ}}Q >(ic/i%,<n!$L= T A~3|Ž ;6;=Gbh ˓`C9R۷gO % VdM\VZKiiƏWƍ{aGI%|W߅kX}?ˆS:0ǥWYQ”Jްr0 ++>l ^G :Mȅ93?͓>4. WZ]:y}Cew_]tG: #L?io:}.-3_>Ul?򡿩Y0o%Es{L'{#CO\̚3ϜwfJQ5KcJ3[5]"ǥk2fRSUNA)(bd59rSc$k".900\ x|]PAkWɢzg¦|. s0kzwq-ww1`G8'Nqհ\07]GäS+NiN'_q{e0k^)Ca*Oqqݸxu{t~07] eS*\3q?Ysi5GO0ipץy*r8S-[.jY|^Uv69syㄭYz5kd3b9 pL0˖T>KLIF0Xlytk!za1}&?5 8QyY|$iO^-7=;5:K- k9ht|oYk\}^W&K<^45| Sna_Z&LϹ y}ʝ{k?viMg+[ĩA8gNYYh Aol4<fn6]**kGS`[Z4Bl0~kio34eϑ(c2_UiG0e0#} a{и4t梥%eE欥Efd;ɆU}yxL60_#|#ϣq)3!c1:gWd%y~) 21ƴ={A;t\9he$.;P0kA?AJ~T&2e̜ ŔaMSQ_wō2?M:yO*V:ͷ*t]y=?7V9.Ly)Krg'~WF!+#+^}/\㮯h]_؏_aϭ0?;6EO| _7jYEfs8زVYUapZg]/^l++1M9jvÔ1a 0;ͪpL:Q< yƕB91F5]=F_#fe,4SYix'(mxH/7?NeOŹ J W72WzϋWҹҪOKҸd!B#΋⽽=AtG 7ݴi#N!<0/^6ͩ/}8X08׸Rk\3W]t0ָi./\c'hѢ=I{?jYO?eƸ3V -yEef՚ޞ.Xr ]@'_ w>[F` ׁ5!yJ!@(5UYf^ wKBmj6;w3g+6s1tƒ"4w^V$̀ r@3qt^d<ND(#I9"6+ȅ׸/{rLE;Xja]mc4ap,>°OA.g!twyָVZs s}W gX婯x?t4ʣx|*Nyx^z .S~=~wC͡XiV0W,Pڲqy/M; (;zH ^)Adh+*x:VX5X7C Ɲ0j]%eYX%H´0Lw8kufyrSK }m`C@zY )D2c]X? B8!8F@b*"!@$3A"rp /F : ߊ 1kCֵ̀LVӊ%e20E>50F} c. 2a!p>{9lg0@"8S::l4pvlaSjafY`Rxf/qKix:N<]OeG&xҹ)}uyu\uaLGᚦwJw4O]  ː2q.}87r{4,|Pfo:#eu.`@ DGb5׆- b4o`#!y8G XcTCr\YV{͢%51==>i\yAƖMhhˡ@)6ЀL% ͝k ѐU-j4ylG)E4F`#7/6<4ľٍu[=O)uNl,+o܅Չ0]:~_7-WqWWJ|g×]v-"7G^{;/r`/|69L`3CɁ* kj2RiijK5_|:/mPPI jk/3JivqR’iz<[*GnsنF1qXRT,`x֣zfw}il28̼qUYȔcds&0={NFd':>=>Ė@S0#gx_A?V]8p< l #b8 5c7L`k8 #jgKʲ8< nC>[9б#A)t 2' REXƅ{'RsO̬PVFFo}c/Hj @u)}'xoţpa|Sѹ?5- 'g07? L/<]tEN:¼g\5.+:#SKu j=:oE .4ny, l>dvZv>&u=(*ʊaV>x0%1sgGvqEE>eIeyJޖ=t#,Q=JǏǙN>Cڳ&@x}_N:񍑞OŜ7+/G?TN qݰ//+ޕro&ϡ<4qsҤk~xWʟQ&x4^9޸s& fOGizW̋ M94=< Y ^5o)(28}Ȗ4**m}(*]_t8 dG#{Yaq-qF~Jl3ƔuFbu+VU zHUD`(63ؽ-Olef7]48ys |U$7%LGLsK?&-`?;όBa"!U Xr?3aco P&99,'Iy{2GA.XfT<>U/ 8w)U{}|FPXITp}OG=մg;S:M˥wÊw}ū҅IKztip7lSWOHK$%8lM0y~ix?tt*G}{vuKqT1TT(McC=>hjk 2a•;p͝7lv/&ƞ+y /:EXyEҕ%fyu A#]+>91/ÒV'WZq[)\2(~cu⪫юP}w*.7H8WmtEYΖPY6ԄqqRKy|C=, C97lza46g'Le2 !3lҹ6JY"'REs9VY__7g>э7r+ݷ^LR?h t|)o*ɴy)}:駣q~-t,4tyI3^y-ϑU8}7h|^˫8ts.vi&IE_l=-e D2b+8#[pS,5[j?|cx:%!慣-mˮ <3QՋ-^7ݴi#I k%H*"s:ɝ_En[l ]{/$zvϯ;x{5?ɬX"BPPɆ\e(NA4)us^9R`RIa;X|w!nmp"Z- { jvv V+Ϯ4g,G.l%+2UKbGے|a L7ݍѺۯYz(?y3NK ̦:$1H; qk  %LpbfG 0Naധ4 h yT&#ea< =*Jm(d٘a[8/ {!{s MC[C/bĜa FWAsw)(qf2ԁDZa΁W#Omv[ټA|B >twʫ0KyVQ5}7+W/\齲ݸ*Ly(K`\X}ufڊ][{|vo}iw<D,0 ^U5X֩?zl/`N.>g4U!5yP|'gbH ~AQ :3+GTחLYa\̼pJц.e΋u X(?;{9k2_c[|fsհ7r pN{5f~#֭y2'#Y1hdX4 ]T➗en#@9HlXKx$ˆ$:bv` db#sݻ״ٳ>('OG4n02G*ύ<^4MW\YWU. N*[y4{yw4>eyS>i8:F?½<WH:xzy5`XĻ8o\q t5U养x?tnIGwT}a_Êsy]~W]:!SR/wsq_`gBһaMDžiXqèP w5=舭\6T:0ƴ;j`i849戈#vT?O?U YZݪ|w_cO/vv,*ulQQp  ԰uvol:AdE`)~p%P[ hw3r%ϬG{⽻_=_޷=g{b8Z57-79}X^ EwV$1HcIYy$((n2T8t̘(!N|7%9édBg5ns߬[m.)p?ޑ\bn/E.X&d3P.۟ZtڹVf:0vJC]3tybT܇TB;*!LRj ] ^೮x;ڶ <8ROIL?\t.Iu"_C//~)I@nC7pϾ˯~/wBobY9N@| YcXliB-%Ae\6IdF, 6{󟅳ȠXx/pt. 㽰S8%dcͫg5Mq`fbpk,1- zuٙΝ O^?A'8)K`2!1?;Ic--}P q W.|{1JfN^.9ʉ̎\'L=x<7'ItG:p#O;4s7ڙxS$ϟ' $v:NVǸs.tp?JOMÅ4SY'cgemm[nc^/ƾ]t@b.˗Y`W>v:05:NH&{ FeL6v ϔѻn f8fø&)T% 8uOC1~`|7;?0.L"l"3hXaK'?i|S!(K&(Ӱ@RFTڰr<*x8 {u6\H^w{oƻC(W3'~.܏ta dK1}@$ ;>~ꡧwdn޳?6;g!ܰi rྞ>sAT`žSZ|_j Fkl|u:bG@SVu9qvڝuPFzֽGB~b %-Y ||8~(>|S_fY80'ov9n}aL_2O<4%Tyw4OK*t2ʱs!<>_({{d+Boa["˖, ̯YaxqS0 P@q#4p]Sy2LasNŎ6FrQCNkb򒇍,uaQ kȉ]7fA2sRy{.3Ɯ 8GZ[.Yvq?.9Cɦ}O&1%*}yɭ[ʶkkzdnpR:/霦:LT<e.]O]kzϘMm9P(#\9[.fMGs?|a)nchJʑ8;񉋱%Ѥ'Iu< TÉ$,=n޾ƻ p:1(!<ˬ.6s+ ыsqJaEh͟·`w}ɒ\q+X|2` GZ¶'@7䄓~_(noþsb ]n7)Q&)Lt4e̐QKg9uH@2;33XX;Q\/4c[0>˔@™S1aS++Dž{q*Ci+CʫqWTzyǕas(7 B: H )NquV^f@ʧtqKK =5+,:=pa7w yU>am8*x߁#?~5?zx;`0*Kϝ KbL%\,#aB({v c}2qΘe$:0{v ^v:pavFYʁ(@| חv1sb^:dH<0*h'vdp÷,1[ֹq?Ryawq 4tԯpe =sy١PŇGPip6&}q߸=ĉRp([vݲ$9TbXOΎ2+ Ň2S8_X,(*yg;sVu0})\>tn>yݸvqn w}0e)\C㚎sh)^MTq 3 W> Dzr iXxitݰKðӴs^SO82_ #{?M۷Ɋ׬Y޾sal:)u~ʕOF[zq s*O6y(]~@ϟ9bLPs9߳ј>f3p!@?ۜv#eq` w  z(rZN#1k"ՠN!2">U'y"t<|CoؼysvuE)5xG\Z {#_:½xh2c`n+_sn[G&0,CnVAݣ~`ǐow*Ob06w2:O_X|gZ01WSySuq?'ƕe8% 1S*ݟ_0 /5wպ/wL6Mw}yePe0qeT|Ob}(jg{(,/#^9GDmlN:rla~~0gLr\ws gT5"N>g hn0h͂uiaM+KGi\W7mB\N¼8/{F4*#)+7Ƀ04~G>Dt䶞ΎukUE%ֆBjvx99•gd77GTTQlEk1lUtxlP><ַ=XmCIs͵ך{{)+-116҈bab0)Tmr|l8DP&}p}We02/,It WߋO'G'˫qO߸qc=h?Mg߳}_|9ƅ8D&{|Wb/̯c LqQt :eQa#M 8Ƈ{{ >,v.9V3[̎g_J6,4ԍrOy'Gi]'CWYqc*sh{=&3 {d28e5K͆saSKmOa/tT>8+3;.b9ӱepf`G0*Yr>D){Ac>-;^bƔ@o aZYg> _ c!+)NH43q q&ۄGbZy[.axdg;/$LYn\w\7,\ 9R$Ƒ::+ 5S42f`&2H9uef'g"9& "L&ILd=d> $H%E8aw.\΋S 4)y!/=X9 ri`yw%F7 qg[`>lXΐsyVsSIGQGP{ƖE[ 爇T0*b#0>nQ-7[Ar͵w٧t)-+ÔzøG,Z̼9̛N.+/`p9blQt 0m[YJ?N!2BW\e+l * ԡcG^}$FpgqHgsg!u6I[n(t ʹ.m:qMGK㆕΅1;7c?pO>yCwtv$c(xMyיkx5-GLBӽ,L*QDz&8\"NZj<,WLqNN|By+=f_miok‰\acT~{å JKTTTB4~`9bLQ9G|ʱ[8B0ʦ!ZKp6w iz!d*Ye `S__Y~ ]`t<8r2Aaæm -<b㔋-qZA:**(a\;zoj B|J8SNH#]vd N+ۋW껴ްݸqcS@&|7??ljx]nsKS`x-]:21?,nrѸX{ZwÎSuc]$aXPPvdo>e=; R!cHǴ ?5;@^tM Ow3MFp~3i6JVcXA\軲\_MG7R]\roLEYASW򧳣sYwPu˙T=m\k Y](.qS9\{hxa O:M~|t8 KW8}Թr]p.\.pXț1Nx-ޥ!KTʧ]zS~Nq~䏧AoA1lom.eūWXohl2t8N}h8uq^itZr} %!(Ѩqed 3؅FlGǴ6g :ԩi΋ZMSTCP꽸pLlysEbͿ<øk_n`l)W9IƙӮv#&]fJ^:Qٳca,H4o܍_ pNuNlCr3hq# 3NGq/-&qP<,Q9=Yɱ |xь#+W,z(8h:({} rS9°|p. +GF#hOeG#2~R_4טatwkNB,iPǭq\gDZ5-+ť0\SgZ7Cy K.\<ēmǿ1N6S>Lq%Y݁gF2qZgX>|Fmg 6Acpo`cK_:يedOҒ}?+ 憕'oA4ގm ĵ-MGjoi8x}]rpp$,YZcn8p4s#**w*X>&5{ <:0(oYt7C_ lаi䓼M*-vH5L7;הgNHÃָĊu+?NԓMn2CNz }wa}03a!GOY(q(G);T,/& }v l Dc (O.I4N<?Apa~a-S'5>czr:O,Iw$KDP::;l\./)%A.'}xtg8o5քJzFpԀQ q tpw6~\9 æ2-g]K XC s$M͏2ur;ij*C§戜>/A1iEod>*Bġ.v~xIҷC;>gV^gngf/#r<O[Xx$i9*1F8Fآn|SAq0@:d+xnu֯7N~^ӥG=ce?;ZokojG' k!R%B}Gzqx+˙(Q &qV'և(Tnl 3+'B@Q!a:<10)d gԄ|^e ܟ"ZUgJpB 6~ M26>HG);u9s?]L 0w}ϰNi9L[UGƓP"xv9Y0||xX3RTSa;ga`¥>,eE29y 0&>:7ӟ_L:ͧO9pݰ$O?SNN~fҏץ\ZE_fQ;zv*-U}hs[ :> Դ{t$ia䛡IxqW*<z8;҅R$+"YY#9ʣa.q:T5./Brbꩧģ_ۮ`DZ#KLԌSXS5n\clQyrՔF "ޡDhH wO9]VJ. ʌ|#0cGlX͍;{'6; Oy~ mKcmwSvq1ѳMo)2+לi󅭘!3_rn3歗ӔC-#rETTRü1RY cƑA|8QJ(ZTnk*YTWÇҥK0) I&8{ W: '~:W)rY>N賟8A_38E0++PR1۔U΁ F|D=I% #dIcu"ue(sQTGAX3<$:x9gERst= *uQn/-{a.Wީpӥki*N}7m7L7S>'L#W7OAa8 7%-Z.AdӸ+b` +(^? sO>y V^,80Muu pG訄39Fş<LNsݎqzwp2t*Ң)64آB:mmLoP~L_Qt7;q6Zg#(0]A;T{IHb &.f!>ffBjiGd'%gAKt: oل'd9JOdeQ(a(Q\3;:5g) <O0I%3}c@*tt<]>_Y3*h7"Je ev㣝Y!;RDF;SYF}x)[٬7''KF蕕g&-+2IO5ˋO'i?M>7o*QOx|̘S +>%)8$"c~ow۲/ %aSViZ;{l쾾{a ʛ]Jkl1y3.@;)1kFi6TsʜPRsq,u^;eqח'.p@C9~lhPpJI#:nW'ehj1%ALȺzi^NRv1_ߛ{xTF`yq/.J4Q|M8CL g=~3Yᑨ(206كelgg[n788ΟOHް7n s_#TFܼO2<0v55+M͊u(\sl~,u)#5BE +?([:Q62*G0+e* dI#?'dqK$;jSAGlÐMɢfG,arwQaDv|@82D<"i,8ə' ,̅a/#v4Vٙyf%&@j)fDF Fٱ&0|<5[eAE5cMў$#;Qᶳ پ`p([c!7= |LޕG”0/Rn©L͛7*VigR.L^*GS(}MDž)g؋S/nJ}x?4eriXqބ5tn\yW? 03%^zRlP7ۚρF^`uP#rF18Z#GKh׆=#2O*mҲ񳍷9i0%F E:ÆV.F>X*{ap5@V94`:%]*~]`>#FgA^\я>zcH*.\f, O:%r6R؃rdY9h@e> vVdtFy (e}La^a07LNjW~|a@۩|;gN?ţQ܎Q5ɨpZa#ϑ2;Amo</sYPԬ? fxn;̧>YufRD`^lzjk<4>HPidGK6]*&4`P1L10f\ڱLI9ɘB{5dscw~8ݶhj+imnţrVLӲ W2a4q8Q=(QTx\+*G #5@P WgYީ^:@lN/qΤHPHMKy.)_h(PI[+ֲ-,*o ͝![Y;{A_ y3Y9.幱+( m:i ٿZ^0)t8dez]/q 7[F` bLadeeo?!G,'xȮ*}Ə1)@IDATMI[y;O^nf $a]1 jM3Wgp$Gc\FxpU{iDPDaA~pv쌁ށ'csR̅W:Iݸ9f׾}~Cko>cf/6 ⌀ʥKMx9큃8 ! vĤRIN%̰Ⱥ PZ+G<|W P~ȕ)^ Ky;MthGIgB|)20QunXaOװ+Ka.8Nrl i]}ݱۇ;qSl˘Is11bs$aiF8q.;GT.J CEJbV#yƥEƑyur戞#R:n%4qx GV ˑt!!!8>ksL?63>'omz2zа%ò4Ė=]Јy s}4W9W_bn6n 2M|w?vQI,ı+OfWU+W9\==QV,C*I *km3;@,+ߤ8ˋ0v&Sq*VQxOJvT8P(21"7pO'xe8x G ݕ4wi^' S^=g^l1}dr〩kjB(!'{c'8RrbCbbb1nز-VdoJvmyޕg3gΔ3gڀL\3vԑkAtF?@eO #ޝ;dlŧw1 5ߋ@&GygSaI?,o*s ~iJU Kuwon{/g!?Xݴx6ֳj],>/Ce}ܟ 3} CO{7sXޓ~O>cş;7?=;d~w>3GR;AdO/DnxOLO.[}$z‚XŁ#<ݣElUҽo Wp\Gr'yiq:c@v&;I R<4Ơ6N Xז2fqQi4 FL0Qd]vp`c 7)Gqp*13+=P#x:+9Ya!0 1`%^M ζaEy`W+V?kdM흺SyEr++*@#L1.z(F!C;@,=874:*Ʉ#}-"'<< d\ZŞV1yw:?v57ѼEg{bSNUWV՗D}B˖ Ev$ڂ8QQ8Ǖ^̂\hwmTxu[ 5` &??wVw8%^b3-*|?ֆ4J1k MM¦B%Tӛonw$K !Fy~Hf O'WvY`zg>U#C.+ȬסvyMGGCiL1iL¹R_nI3J/}:*w[Û'm%4H^RT4ZA7416qx5~`S=Ap\={2drÓqgˑ|4ɧ{I9y:O \p^xǟo6\& 1pILuʿ>#L<LgC~7̟?:eJׂOMVax^{uڑptWRagB#u@uF2]K/bcqa622&\%4al|0= c p7AQ-#iH_0K=.pfe"NS蔁3ZT}@;v6g^'(sd4IT ?3xwM>Iak4i?ϼ}Wu55!1ǎͫ /{WjDkklmL&n4:1}. R#CڃpjwE)=`Wí o X\dcx偣M/jc_.PIaf Q."|CSP]*Z?9'oɰzKv}XГdu [n6/vך$5%}ESy߻} ˫eRH[[;OV-z ~P,`u"*f):pG qvO-# .^`A:z=|}~Ζw2 ?n.qI\N͕2. 7>[08?NҞrܧ8g2L8oٲu(?{֖7Os9'̟_g ]'tI-- m Iiˌ"X(`bA#"a&4F;0@d%̘pvUh=t9Eӹ&'ˆ ]fPqN=GQv8EdȢԄ| ߯`cpMgg]SnhfId{N9Hsl&*#XwٹWMp{OKJUTV<#G,7l';"4cǎwv4ѾeJʋL3+yW[Z};7X_fN 8vѸ0E**IԴOl#,36Z7 4#_3 hg?UWl@V0 ( 8x FG_HGtCh8ԦYErch%#xYI<- IEm73-l6bR謁3ftpe5;KqHyk0]U@cWI`=1 J ڶj]]බ8@@>l :.:Ƀ)3?VG*#}z`!2CNIҙW=z} T..ٿP5W*3) Ц1E)<.88 /.\"5aV#I!j#101^FGN<ˈC0F]NqR2kqg>t!%p 81Ð #w.m"R.t Mh.aXHw]$\xɛemh' (]XO:.+Qc@hħAL^^V-5k֤x&K2qGX4> O;OZ>]?y}Ӿ]_jFak^j^]]X,-Gu;ݮC{N18VBMpJ;#Ja#aEJ6#=}G_/Z&%0qDK )W`'mB:hJ4^4(q:#c0qǢm۔Hο}9{g-OMGMk Vg^^ڸ_[٦u#  ~b^;J|UK_tG/pO=z#oܛJi=9u:ʹxļya95i wȾ{ڊwQu_0Po_!Y!x--dżF皂XhTyEeZ}_M{xz)Wn,ٖ%&l񳅁`\IN& #Tx-~0gSI}?f- s橅fps8NsUD2Mҟ@;u)LS|7t?~9W-]h[Z:R\:%0PeE016 C9%d wr6`Dm'x+ u`3 Eg 7wL{ٗ`G` PCh#@1inRn@3/;(.|eE@@)Ƽ;(MCtb`9 Z@C~D,8D|V2A{V,mp_mͅg5%:O\&PVQbdqj}J5=PG.OmGǦT.{^qwU~XJM-U(4x& RyjUޟu r»kwW;=zorC[{pgojitЕZW,P^J2m<šV_\Cwnd}.Sj*}' R c`GX>ˊ`ޜsa<9<8 KÝ $ԝ,=h6s&0b")6̙Ǐ[<ۿ_<97!]8eA'|=>.B=#8&qnq}|^8m\ Xo)\a07S ƜG>haG0nM`ٖ":>0fqTLܔܔyuͼPSJ$Y:G ?'l߾NSȑcVmF u,#N懤v@1#?@PMZ]qTGhnfŲe%˖}7WbT9_? GvȌ8=̶i^3} ynv//A1imXP;_pc<=|(tw4kBMO8ߨiSF?8sބO~J@@ QxGanNi;Ap=,_ሹǼ,z,,i#YFj2Ogkc2KC\~Kf݉2TّQiL:D4OBͯcL/[Q7Uu˴E 綗W|e}sMluҪԒ%Kbf "߿Oxb/Clm_agKEdt~*)RJXʫj4Pa;E%V0m C&kXXִP+}E)-l me\6 Y)R*Ê2UU:@Ly/t)κWhc)'ԇ)cǗߓ pI;ir8<==~\xԟ\pMg =GF= Kxwt`w ylO$;lnx;ram%O\>7΃տxɿk{o *7l|frJe1/r YdZsa$LތzAΨ g-cfjNEӽ2A83"3Г7&9I F£P4N9Q+XJDz dFҼ^/(LGQJpth4A4(3uU+vVT8mvBL'zsUL Ӫ8"/\xgu;gњF&U 6֊8{.TOiqe%?Yѿ_&CKyk6{XHc#v7lo.,O̢FJ9xDg LIn!}QVb{Zolђ%R J7tP674u5A{qZ$k M,BI}}KK`(.wPeºEO:޳[I9ϕݩHƑW#p.>+OK7d0[&8'3;lq-y'zkᦏW6|A44N^}~?xCա=<*QA8%tIݘ>D)Qy1ŠLab:fVs.+#c)NbǵGX(-+"A$~oL6S6SZh2 'Z1*q1M9,9HwZu<۲.IkpWzq. _ę ݇l 0%7#xDqF=01~Fp@;ꉺ^02-^ܻ?k֬ j֧ҥ4S>z-ik;Z8<rr<[0?*x`ؿGs⭜f!}nC]Qq<YxӲ,)ԎfQ:,Eq: `LԤzMP<} յ ܘFM\u%9"!YPQLꈎ/ d3CQl(QOő? *P(PgLO ML/]:?Ś*/*(*ۡr_QUUV\Vѻf&S\\5>kXmP㣃NN_Ό^>>ڿpɣ d=yyU)?.@p2}¸"`!-DaⅦ55 ʚqꆛ{UL=W-s hN diZS^wgoI lX=ky.g]gg.GIn6:OGߙW{|O,>JOO tv.'wXdLbk'5V-_ju8yKuֹaY+՞=,_'枵u/eK:Y1%3(@f^:1aKE-3M8/N]K X  a7ѣ4L u_̇e6d^/+jRZJUFšH6 {6<juyaYQR+9&BjxDN:`͘L<^LYŃ̉GX^/,=u#\,->6Dਭq'fIGĮ]=H[{;z;;uarf>1\]whl(zͥ I !eۄF̱:vKd;5H֋.*'^e2q#A)”>w(x?`NڂFJ.#::WWj~"52ԬEF) C扏>-Wly -(weBB@8Bkҡv:=044nKg([T[Y^y Y/(*hGt w\5~:L/aݧ`jrŊj-+̧MhcvXyT΢:Nk,|:xɆ^,lX1D_EƲRxTw7eU(KTUTRW`aN5a걀TsxqifM2AOo,iHy'aAUϕ_2=xy'𞎦dH9~gT'$OL憟ꝸ\I60>BW/fK%ŽRUSn[ӂ:mv+AŲq滝+~ns]tO6E?p%$dg*(6H899āpwϝ ʤ˫Ot:"yM#' ;a=? ; ֬xfK St<$R\\$TH2Ò%<<À?-S'x~/M҄W_}? 'Əw/M#{i)ghq涖/3Ƅa~1JD gcvP 9a0Dنfh҂QZDàw( 0Cm #y#rKFC(Mà(٭#?O vYaT؞Ù\$qpHp9|4kޔ 0G\-N`A +E 3ѯNk+.2bcBP!A7g.&wڴU¼r) HJOjjV' }*pP0.;tڂF1s榩{)-f1!\HCL bR6F}FF=Qn 0T̈́yU@ pj'X<ϘJi",>D:k@.-JF|PUSUҩʌN.B+j@®Ly2#S&F( 3*&Z űzqΨ_v+NQ>6mc ]k',8֕V^Y/[ՕNUYd=:E&5:4,;a L)#)8AE_>(a .}P{gTnV?P2Sب\;+/+YE|Sx2?W=Ǜ 7yT>UkIN޳~YU(76TPi v8Kw{C/K0$.aɼt0:?.KI=>Ⓢ-l0ydX9rxO' >z}}}\3[|hdtFWּW] M[ah|1)9 dB},J!jˍq1AgT e5aBpc^K`|QX}hR#0,[Q3z,q,… xƢ7if/V4 ǧ ?ݡy0>EռC<)2gZZT=$ٝjk2FfHXXΦ(TN`V4$BZIcJz'aDɤtihA9F0ˢϤ?߸w϶Զ7gF$4h܋V\vH}A\זvN覑RLVBPURDgxT(tr+8 Aeg /XiJO20n!.G}Һ۽Y 6Oے{Xi&a:Z&ߴ,UC{Oh#p֪D) VOߢ0E`BWSu*&@Nh/Gvk?I?&X")G-/F|rQC9Sܴ)-f(PT|he0;n L[BxJV SWє* .a tҟ?S9,in:p2f^^[׾it₢g'oF{z%=e>q8ʑt K5wq*d^<3 {~IvlRwd4+<f+T2xͅpnfw=o{Ff{;K+l3_ʕ+Jb2޵[ 3|G&t"UGY;wk k;^q}&#'~E89nFw^vM 뽮}WyI#WJϷxkC7/MmۻkCyr߽'s<$a=,0N;ύIq{9<'.;l3[ZKsp&&3p3}&q.Mv62,q3ُ%7~޺uUGM}aE=< dy`F+G ]$̃L +XJ13`Txqܭ&9Aȏ0Bp:R I#"3hL=ٹx&[eٱ$#l\6<;6є+Z[!T(3dtLBN744>q۞]kb\O0qɖ< % YIjaqB'Qzǿ|O|gs:3nVZ*.>om1ɩLZE:(ho]u^ {m  4a!Nc,BY;Gы ) ap30@ &A*ܔ%p!9!&Fb][8Ą RBM0-OH"8(^#(G5CMdi0ECtABҔ kJR⏐RDY կȇ{qw@?EzXԊǷ4BThLis`3׵XSLokjDJB}rؼ.8l\u*V|l{z/bV#Tcg uK$93 T.AԷ֬)[{gPɈf k'f*dlбs}]~W>l~JeZ򮟻${ag{:ɴI$$'p0O'f?]9rq$\RsbfTqk[uck7|^gxh5%euͭ-ӛؐʗ_u~'>9-/hnѳr1RAP3 1Ћ248`#,{}M`^uccHtyQ X Ar`_1p ׂ7ZgݼEZ\'&[KEdإ-i=ӰiC:~E+q+"-1,ͷ JL [w66 [>B hI!6vY1F,HØY |L\@>=__@ms O|sѸwW;W54*UuK/c:OjRe- R"ym)*+l!a"?ւ lBh3SWфOXw|Z}*K@pF9hWmh2mǛ'CSCӂGF,ΌS>Kk\,0sqvNXCUQ.~!);} [(M (>ꊲu2I^7aFB3jN:Г-|khi-eQ[‘}Ff}XtR8CL-.2]__ɎrwO@~gs)嗧eQ 2]{݅ox]FGN)Z}hrc2+)լTzZPO +F'^^wW^@Erir ={xs.d8~~^p$s~pNN>[Xn&qOvIBx.D'o IE榝ruwR8,+[[ۯk_X2БKSV,1t18Ђ;`CPCGpvL07$mT`+ڥ 0#\6W6.Ɖ)J]7ذ앚78 v4LIn[7n kQط{hASEX~ʰ`Rj.Œ.QQ -?[{"xtL2SDf01FBt&u֘0xKEDH|ے[^1? 4tKS*?f%nٿ5OWeIgF¹^<_йL:WϤ̮&T0xtG621GXPN.h *X=Q)sQo1_&_sڥoaі?N )? 4Izfؚ!دD L@azB 2j hD_Ζ5'] ĔUE?&LY/oBy>f NS# VF|~>5RR4 I <6XwV+sDgjd>"H=s\9Jmn7?^.ݻWs$8p <O,=I 6]x[s{WwvD:oR}@9A _ "W' ,O Tѡ.Q|U_kwf}I9=3yz/6w\s{.lx#L;i"%Ò~Oas tL>dG@IDAT0`In>wf# 3WGYq7^}A__`IO:|'’%$KðUШ†yH[% 0"aLQ"PMxfH:igNq-dB` }`kjKk-[7Ҹ[ q^o:%NEV)d\HfM,?/uV(y=|Dk-Wش;c ~v (X* '3‘H-[!d͐q_[n}55q[tߡ6)L^z|$\rU՗c:DgӛC5=Pp ޕ8vc#;H>@wV& V D'p( mMZ,LX*\! Kt*ka%FѣV}2{:db F4sL[EH׏-Fl mN)Q^z T fA[v,"d|6 +9^Hn!W%(qiYm+B67\VW9tڎ\<=עVJ1iX2ӌ5+5Kp5skM+/$3g/vv}thF'M&2Jud zuIUS I؈vN<{676!ԝ_I9)[{O^:朘 ŕLsa0|h[Wh{._ڧ&W^.]hѶuwjyimA4qHԴz1 9ńw#8&t5ra-m{\ FB#ka_hmMv%B@̆j ӝ O5ٻwGyެ s; hlx>U`M59q0x&߿"*$fWVZoЬDI*6Sיm2Kmokxyspdڑ+J¥/{YXrްybDZĨ\`6vSlVaVc( @1b],KaX6IȜEō{:G[)u-O]2|t(ιkhB B`0z~9e7؇A@*}KEXTb]l<" FiyGԱ&vu}8Q(E:-. E`ʴm6UvTW$z0GC[ ~PvbJg? i3iRm't,P)ƌG\lUl^;k\O->Q"^[m ]RLy!cՓ<:YTTQk'1?UW_u6؟䵞Vsx 2;s;l.7.=W-㛍% a$Ln' 8wX4pttܧ';ƭ;7^ꗧevPO#2'W_t.pR͗)40-bDc5.FŃaFeݸp !%DLs}9Xn7F+fUi:&QbX47Q_<OBF󗞥UK4F 2:/`ZԁVر7f6R;7W׋Q)~F?JhEyYR&ZsJGfA2Rcd.g~5qnےaJ6,^憽z`I{kcfp[)\PjmjO?c;c[T Eh"hBJRH8C_pa`.YT`-C |8:n9J" lO}:WAh0bI۩  Ėci񓇭za#uFJIn4ƎiYQXe4Va( }U"8U"rS(:"X;-=$b*4)1ȡTH3EB=AGn 8X򎎶pO>*_Yg}kXW!鉊)4Խע8 FͯNJ6GT*?|=nnסރjǂIg!"[:硘?5B EQu_jߦ''ˮ~eW4n:/k   {\'ݟ|'Wq'8= v*զm_Zc{_5&}O~6UYZ`:X ihmiVa]VR,ӷ)0'ͱUsAmnE@9Ba3B9C1LX5O>s;k\L?lLx~ݔ#m,,]̋)KĜ*id$u^dtfoz{6oreε μ.ҧGTrE>) CܨKg[72c8h/]eYIS˗,gU> hK~ی;t[M{CMijWtټuV!`\^`X ,D -\ښtdYR:X!G"R$d*$M*zXee2IVqM.j”4u/l<ޱq0 (c߈GgF?kK=z>ÓtN=X^@ FcTqGѕ7 ߃9(QamUߓr~bEEl. r6a0#k;tpԽZ6dܖ !h^Y2^ SF-S_ =ȷ&7=d?y9ylO=< [&v;ζtJ'pj6e|ZICևV⃼NLOVʊSK_ڼP'e">qxI|w?ELZOq'~ w3#ܝ ٞ4I .DPtI@s3K9no p'WnX;pxsxO3ןMj=P % ץOͯ>BMM]frVJA9ڔ0CFIdpѓ1 Rdf|6̈/'t1JgnTJk xu|*bVGppؼaCx{޽O+8,^LfsllYn(f%2yp_z]78ʇ[^}[V5=42lUu kD2%Fal[cMYgia(--ݣhIeMm!ܔv6ֆikˁ:Cl>3.9V^Gtn GkjqB&*B8yI;@)=`e{7baL0L)h %F-T_`QqYajjF'4 lA3f1K' %ۊu;G|Z2zCmjm0MeV/ԞY~l{¡KV6% RrBZ~wv8fx;t'ۯbS' iOtE{zT>N8 0$ehkPjomLU&vS]W&R5)M {Ol_9BVԜx0x9e|B)÷TNO44|cZ#.HS[UQX{+] {^/KfRӣ+'^Khr`B3ߟ{?sXˆ"<G6)|N\. ITOq&yA&pDOƻߟ$ O'g# C^v*“}3_k8RL% 秿N-Z(}eڻ,&g776mcT:u_*<&g$hqF6h:[``MŸi01~QA3peU;Cp<+#0=uqYDu繍Do~*3%&˙Ξ涏|JsnHըz?Ll\0VGqNB\B Q*7`>Z٨#h489^|VG}O,.`xR׷4rkk`q}s:U!fze0oػ/ݱN#!-zRBۘk7;Kc*} s ( 4%!%Xʇ0&'\S }zBȆ[:>`lD٨VOjaJ 9+̀cD},3oL&12Rf4TG!d\.}Mht%E>7 YKP>ctGqL!jX'PW@|^3H!?B/򰺷'#AAT"uX V J[P~UZ;љ]]Cc"xDݔXDu^:U/SzZ##Cv'Ún%k.[3H+}QS=j_nko.&ȧJKSg/RPDcDGo!l\!AgQo ̴i{#B.m_k.y}];_H! :kŗy&&H'zn#HNzs\-3Jvm47dx> _ț^b`nEohBQ䲲J9a'ZYeU2K@q )T&PсpAӫQǦ(muQnܲ ;қP' (\P¨wᥪ ꚵ'|ym|H֎;vMizBI%RJ}&PWm)AqS[wkiCJ\C_ԩ2n)ۄ7o{gWtnw+$-E_Ǒ[;CIѦ88ڄ > cF1E?)Ф)WK;:OußC7H,%3A'wtIX'JIs"} ;=$G:dB'30.6>sst7R^kG/޼|ǖ^λ<Μ"SN̂twhSVcAcRD327F"&( a·aE lV2O^_iN \ޥadz[Æ~Q- ϒ _$THI#S&譵[vk|r>(opfwykW0k~B0FL uue[_^R֮)cL>]MWl&{[SvQ)[a#aKٰ~aqU#QA% 󆆆3ʑUTA֝շgI=S(LQ@R8kw#zc;Pfztr\J՗qWSg΄Pb D@9x ptg.\p{xO|?7=qaM|@z#]OXTf~_BQ%# m7K=> ,'GFj<ݲF7?jk{ϴ42)SX (dV/8[*m$RA!Vt\kpav໐_;S:vWO{u7u8PNoqZ]Uhτvw4w;~x@w€cf;~H̜&oyk@eƮ<<}˳VVȼ?QVk.)0PHGQEJ|8m0Kt+4w>> {v=6}8lzpSC?{iӁ1((Eb:UH$n|yGWGYSf͝OUEnyÏɎifڅyX#E#nXbڛҴmzDGeJN8y^^Qhjl;7=SʹIѡ)b' (,hQlſqk" t0ui_c5SR``טykyt0>hE'҈_cZ`B:]L\ 5#nAivv\iƆ5Mp~ǖ-eaN-d͌G^w(Q:VHNNqO4CbT@! ("?U oyDy TdvGA1+-<#ýGd*ױҖNt/!n8 [6*[qE+Gs[~) @Q 1Nkā1:ޕss9 |::QgQFjV4 EC(B7fSJ>(o'ȅՕ6J#?d9?)3uF @P"<+= / 't^8UxLR*ꟑy,ѦtNf#sاMF?eӳ_G ß3Wbo|K&#XШb:]A:H>hmEE)@GB?\և;UUi*&`bJ HVͩR}GW_Է#Ե@sŐ OH6M!y?s<ܟRÏws=L93`.dx 93;L9z:]B}mWvA{Kv8uh .6;z{e- O|<P4j@F5uTŔiCc047uP7=|ڲW5?vš\w1kHSmGy1ڋ=`oȣ6r=&y2y]ŷ?OG8ôg?~ܣ5*ǟX,[L"_ݸg7[ddЙ71p8pAmX[kH(b)AуF #(D1hJ0&) FK1.+`hvEC:*AvDSe[ِ5bVf=q9Btcˢ*4q $9͍OX(OEr=LTؾr-ZsAmQb^a5ʤ:6O-0+hDa=t&Ar-( -\ȱڛȐU)78DR"JQ=uT:uӢh:Cmd;B*G 3ƞ(2~+:xer|"UxcӁ[珎N1VP\_iNʌ+{ Bs\Խ)K{ |GF˦Ͼ[R/I`IO? ?7.qY9@d8o'9?I⁛ 4de|Oa ׼|pxd5 ك'xDlVXw1DS'F%qXtjI-7VZ0m^h C? ۞~$vB} ,B(E=NMs2&uq~3zrv>|])'$}Y!KrܵY񓑱̽0FvbkoneF%XI‹¥W2k5r!*#&FLFl$`L 73Yp&ԄS1 LF##6E x-hI _2jC]Xk#eEJLsXvX7{K%FMMLjJLY.a0sLΝjUC zF;[&*!lTYx/A܁1֞蘎_`EL2&u}$Kc; !@ - l-!@lz H&(h(-a}.K˖mY#99tG:gfyg<ڳ#G:ƵZo[׎%/|6 u'T.U0)$8"1qm¬-')0ƒ..)Hg0q@ Lcځڅ (7Un)̼:пcUF$–y srw5 ?#Mc#9vnCDŽn @&"%tS᎛rwp᳹eEsupmnSW./|㿔uؽK:ֱO@mO-G&mAض(Zql9K {֟[cUzy[Xv M.# SĩN=S6]m{׿"l~[/^4m`yann]՚6F%̀ʍu=4cʕ?+'ǏF׺/Y<)1)0 Ҥ>?Z:zL#|Db2!ޜm䒂 Ac# R)Q9ũFYc'(f: /aDGL?hI'Gظx6qb8ܥǹO㌼iJ#hKcl Db9xR ѥDZL` D>}g\iP֞I?NGpJ9. 7S U%%*0^޸cX:VfstwxlXlԱYt̏;M7qZ'L`KSNz#0G&}(t3 v@qXE7T]MhjQ/9ںs}U͸c9N)Nv`4gt<~/o ~#4~M;ێ] ;w?gѮPizgX~ MKH~C]Ō~.MܫEn|9x#u+b ·UIP('Y YZK$<5]8ɐBث6<|f#&40״`-JM8H0G0<(X ulxxXK9Gz^;%2/vv-i3k\@.m pRHJG؛ʇ*KAPSѩpQ4(QpHT1.Cz=rFҺИW:D;C1>mگ%]:%0)Zmt M47qD]<}J91 DYƴ]?š cF75}O\UQ)!DI2xc fYL9?[xgo\1)uzvy[Q)v#刱HEI[ i.?*X)ay.W=3DyqX>14Eh k*)RꓥHهvnm8y ,1nG_<%'uS)j4sa܎yNi*wd8՞8!|s%D4n >{5㗿:pTm:o|x3~FU6u}R o\˭qM6r4reܨ]wp?C%K{4z[*Z;e߸vNks]__lƋk>8ZGtgv2+Άc+:ebb\ }MR{lQ'-Yb#57eza(h\f wA#)xDPDÈ/XF.bDȇVrϦ%oa!NpQars_:fV3IlЮ}vLf#lG"X]{|sȦ0%) yCu!6sI kgWx7>܎zo]Ae7> b4V8;iSfh4t:n0DN{pfUgx3",nY=c0G/ڕP87~v{IIg=U|{> 9&$8)$؜sq24pfymraΝӌxF/}ܹ۟hyBZо;g>brq)lټI*ޤM9ιU -F>h7nӑ4Z0Z[GkhmGBG|$:^]f}v/]+#}׻rO:p씇ݞ.\yTK7ަX[=Gb "\"hFQYMU B DHa ߔhm,])A_Ip٤tL)M21"xо6B׈EGDŽ6x{" jM E7FyI*53D:C;d^Jʅucߔi|/Gcy 6*Xv!J[8 !K 4' #yF>T3ltHG*E/vk$F9)26k\/G|FY\P|( ݄2(1Jї2F~Mzď8 eByH]l;GIJU3KܕOVؑoT&p;Xf!(H/2R;=#lPٍO5凛4H_3gɨ(sr6 IuӊXiK^ *4F澼%kC3ݰk[e7v[g1-7MչfU/agMV+C븩\Em<J[\AKgƸ+0˗Ep!q|TW$H۳]Au_db_)e$xْfl@IDATQ;~w<ay>&w5< WPv 0lsV|^awK| Gܯ-_z Mjk7Gʛ6o+,Yަ{kwF䏇7 n-;eaX\w]*!^=]V֙ZWڽgUUۻMiny~|dĎ缪w ǝw?n̓Vf ]k;u6F26 %L3ݧ;a:O%vpslQ։@Abv?@u$IX(pHTA&CR@&^~:BF;pp>)g g@I=ag G,(vٕtꄎdoOnqR#ygDN^,mJ'8a$R!x'y$,2ҫ2FFl9nL%n<@g? :wNR]ݶG:HzXWu29CV1Ůyg<Y-OLomO·2*;?K[$a124Fh?{>Wo},ӕtn*hObYX݀]86XNK@N~ C8rN~Iba:.3c?լCW5#HF~?ۮ)/}obRql2礊YӹISs{0pdh+8Tt% x%SM syڣ1DWҥx\8}ֻxl^?vd%Mm}[{JjӒFXSo6mؠM:}aP|ŲSt UF\L535{}o"寽Jv[.iO$iw#ΆS Vf ܳ>\X¢U#$V?5u^۽c]#v=,T6HawEfJIE)1e"ngSFĖjpq,3sccX0"7dmR"]"ĹhgmH]53\e1 Є5k<{(G\tuD%LAgbS$2n0V?Y&乤Mfd&ɿHA\Xo1*(m*r=|XtHl`XGTF'rk5*'!C{=)9zUJK>{06"NSkkzwp/S67&&ʭf]n֭}ⴽ{uBGt5'2)@)"rR͍Vq݂c%D gaU[6=̍_Bbz<խ! N3b1ֽX0R/lݴCȭW_}u)7ln>:7~l7yvJ<^ ݆6uanx14+3g?{5q+GQFs{ T4^4љ2Z)M1!%~.|2d2 ̈́ ә 8N(@Ɋ“.#P%A\ycH>9PQuxH%yLҸ|Mas= M:1K LgF2jW:CVV>'ɰf#]˫@q?oBX`(Y:\rgObgoTh [2hiJR Ӂi]Jh]`\4]̵ʕ! N.P!ܴke7 zψe'G|@un7)UȔ`?sgoYEPQ<)d56Ql -26d?`ʷ+|q4jqhH1WH,]yIE48 &juQ6D)%P劷eUT+llpƏq;qR;swc~ L4~Q=91j;GWcq9Q4UhQWwy6pLǐFGG6-]EK╺~.ijSSu%)Zv p'ξ벘t)RX5w|d|S\S\/y ڼ%3CzlWC(F!E@P!JOTꜦ[5E#m*RLS`U,0+J|ĉl5^o%%t%(J"58AXPd())d+u蚴)3zffehtϤ2m̥4l5m:զ- HMP*Y~P?SVBMã-qNXqȐ7 E@"9o񊔒=x ث,)ԫsCPXl(lTvַy0[3rpDv_>|xHtQ:mBц *ԇӻ-7(=B4ZCPRcCzֲ5Ȯs)^_bPȿH!{{weMoܴyCuJGTkmHq(+2h6n`MR*R ߪKktQX/8Nh+tmqpx%mЈhi"B*Smեw ^g\J!b*qU%؊/s RDܳ=8gy;nˇ;^jx1Nj'boY_J}5{O_s-٦3ՋBWu Z/^Z/.3x=ȶӢUJiOݞ4N0lLw\;i+N ;ƞNWGE:Uqٳ K%nܘrکB,ewk-@[) #A*JP3£Qx] 2vV\Y] T6)amܸ-.`&Mc:B<+;H7kZ=(O9NQR6`Sye҆KBD* XUfәHg8I\7eVe͇tb8rRDKޕrܳV06Stꍄv/g8[~.MOL/fOk +ڧCGTh/N 'îTW7ykk]qr|lZ/^VO_r-o)u5E擌ʉ2b#io㷾ѵ̟3cfX/Wv:h6s6H#@Z F*vfC;ͲtC,X°z{ء+uI=,cCŚڒC\=,MXmR oZ~hWZRR{oY:4rX#~ŕUW]5Jݵ~ 9kXK=^IKJS-9sx5Ip";sSwIs;(iNԮi9 ?^!ԣR]NO,WUK_q FSC}M]w7ΌovVzmwan6[9p!g:4GqJI'SuEz:hʵ]2E{M) l1lIt)WREXETFHa2 H)!H\*G`g׵b&a>mt:vY<%j`7RR@uz6jӛچFs!MxóKޅ+biJ*Hr`3J[ğBeHELO ȝ1tHb|cpg%aK)RT(wti* 6ll/˷%HgUDufl'! 噺OEUTxUЫ B.0w)<a|R{.SnKmܦY~k_[{6 )47-[Rd֮䲦X-HC۷_Η{sӒu86ãXɄ9/OsxZo0J6s~o>s KSzwC4h H3qGjݹc~]8(b"2B>);PAM#E 𨴎f?k1l3:))l GI1oROji^!rё# `&b.*)-mDb~#cJdiV~h9BSDŭ< /zTL@hS*og~`BQFGV#=梗&Epʜe;âe+l6e;C_oo/Mbcw:^\Ҟ]pjWm8{~YBxM9꒳M/,i;?k-x#c Y;c>} 7ou5h٦wJgb3bm3DLO(s;w/#N܄z엂 Mj@F:˷;JBwh~[{'hSw }xըj8`vs ,SF&i(i8] V-,8K?&4i<ustTNӗWM[H\0<SJo.ZHHnW}=ImfAJDBp=sAmxZ̶Ro KcM=GիB7)*u5o=ݲUtEt{n}ש'vTG$AgeJIb6QQ c抶 ~[,YC|d.oxbJ@VWF8LĖ 'z:tf&exh%xU֙7*tY}biH#u;w\9*dFY6*\#@Ǎ#{B(oai`'>32p#xx5=pR㦶5~Kߤ};o߻{ϲ#畴>dO'us'?tÏ ֔H0:p~a쐣gnd-Ιl6qS#`6HZQKHL(J}GH@C`L-!@GjbQ%h^f8vƦNMFmCӹᎥm}\Li0(^#x)G@E-2ubSf wT{#66m cCg&xcZb8)댽jkWhepDlڪ4vNyaz=[znɯ#'GOG~4r,ܳ3 m>,~ñX]ɝw0Ÿ}O;x,n8/JK.йgW,tY;5;<<7o߻>7!'>A =IT{Gkգ$Thk:'66GGjāB)F<2#*#Ax\GeykK ߳ugd1 ]qR)1(7-B'QaG+yG^HG*S0?bba?,M6.R?HF:0¶Z p<&+ SmD(F(8L  F-+7HG"vڜ8PT3*[?`>ih u;;yVĦ} 0tk-!Erۍ9cp ?JPk#i7Y{>cHV̤54]ʌ*kJ;;ww}W Oԓ jv6 *8>TsANüayjrQ;swA[an1u\fx+w\139]Kt'OY/N3&1&ty?pU6Vf/>[LݮWC6ҁç%_՟LSAUg{;tG/]z 1ͨ9艂((L(>$%Ě,C2RGTR>8lk:J6n葕q)hΖ hʴI6 k7;#Υsi{EdBю}.rA"b:1Rl-sQ,94! d1p|HHgVZ3 |%<::n6"tWlȭ蘺"svKnݴ9l"OCq3O=#E?k:Y5:()6ZǧüBXѥ5fSaJ]-pyNt.)kz7_ǵ쳺{-^]iǃBɦg.;ټeӛ6oޠfMIO'h߄NJ0I1pg%t2+4N38iq?myA2R/ 8V;#v!3ØaA2*Z/PJ^cxߛ޸~WYB<1s!$aWβM5eW 2NT4y&)ӥu6[zq|['€f8\4|qcn^/; ^e) yh}aݦ}fyiP6ͅ@ww̷ktc=MmÜQ=%CF0fko < #(bg'ܻ=8l94 nk tvzgjjMӡE oe:zR^scϴ;$R6Q6m*+aK 3e=npI;|fDhBFoYvO9kkc8(mga I)ՠf8oS-Gy 0{n wkbLG5H@Ftbh'>Шm24qKzG5ai10״{H8E[ۻO[\-ݣӍJ:![96`(F ~+l5eivkdxOlv޽VKMJ꘎)sQS/u³:52TK"TQ,Jmr2 ?*l՛:Ыe)7ZVg!`Ɠ0fȒf7tR4Pft%|Q MFAE8HW,6 )W.ܻ.vuK/ձCSRh,iLj?uC9q8yiLN3yFasѥaS?|q;]a3=N>S9_~MҊbְp1Hpjwێv5"#\߼C3KV.xwOL‹ ];MuB妝bʛo u$Mk"U1urd-Egaz2~Ұښ᱆¡#ΙOxV^Y[̻MQ)vb_׾V7S77mt_ƒhT>2=lTɎe 20VB}zSXn1C2Wč001VHBrYj0?(4ڸ@ Ɠh2r6mz"B(5u:x򙙙ҰΩ+m~xMkn߯G^\p%,? KpM)*'s|2dN*nXwg>g՗Xl+l/>煥+O#aBGᔥE, ;vOSlfԢ(LWþﵗ^~P_kMYs5Uo×}'n~~([up㛊' u2nbyVVQ D~6`X/aq a+FH|O%>3\@C0Rё o f& 'it셃86l< #~;F\ƥMlՌVjJ[wlU.)r-+^1*l˲mb< 脜1'zBH^~GDM(S|:.<^|p;Op\0?O1bF0oHy&`O Dp\ϗv LBEBEKÖktCC ;Ufy3 ;~Vi O<`cx{WX6nޭ)ҞeC9A{dL1fGBrMM&QMjڞKnPbPFXjF.d3:G'qvk}Zpx3AA(&҅@a X`H[A<9/-)F~q“ę(5wz1{,9'&eR7,;lnvM0x0ps4e]ؠ+sZ>]˶m2S;f^йT>jB;Qv6݂6Z$ݩټ6oX"ֶ5BmF((ģj\`Ӯchmn7{ԑ.'FN“:4F3dΕuȨs'2jyFK*fh"vLi 6FH)0%C(ZD: &a$]a"̄408Y1:lnhr.%, mسpqw t΁a'4K礝gm\)1'Ҭbz^uw=Y/N֢yayn]Ih3+=ezhf׾¾#] m{^J9W]t僌T>*v9ÎUd7boߦS ^I/dF:R[3hySNL#[((83DL2bPU]na Xdq4ư82Gg$z- ij#nNn`|fGDn¼`\ -NН  kJؙ y;޾G?+u/Q,8)9h$JQپ]{o54 ;òSiWMi;MKRQVQLԭu7O4'u!l߷wm$Ӝj拖-RRR$ #k:wQS(jZP jS&& ?Q`RpY2AI3 >>z\ ~2ҟ 50HP0#qӓ kl kL+d5+ x%HbG>-}:_`ruX% :V'PQDGQtrPWaOa#^ d|AYiάYj8omO41M8VF,"̈ D'rEk+rXC41/0P6P A}Rrf|)<}aNByq~ns8/yv|~lݕ GNm p{㦰{6Kx~xZ/v5|<8Ԯܝƙ0qp`KJ.2)/ qiQ'o{i󛊿+BފHxڍ᡻o4m[tI?^3e3*5$}D;ϵ˙IݤMT}DbG&Qt֞E9h$ψa\_`Tr^Z f:FX3?4xnyctsV x(^}%k%e(K&!v"c`Q6@Ra;\xA|g.bmab-[0Ѯljȉݱ\p:Gu$mm~+"et`ֆ79t:P•t] ӤQLG-l MG-ِp DmRpm~mozW'Hּ]?iDM {`̭ş-oӛ1斶"gPg2*0{BYJ\GC n"ډYL`F fq]ki+(oYVL񢜭c #?h #rQ=qcFj x1/AÀ˥Y!5NO,rR7w_5]lM6xd&, KNw"0ɧe.]afNĆf6>ym+wZtةqϝ|w;4E5}EG!7e4MԫaL:5*_孺urJyVk⦰E#S555ܰ]-=ݟ԰Ε)^񨐕>V4)1a {2/du׿vR55z`Ʈpl+֩QY WlY㦼mPsWgҺYRPY>em^UdQhO腞 2+EZNe0SzO( 6R%7ѐcy1<~z9hkrAd!XlvبkX;m8<6^[3cQ$4i8<?X`5w:M w\NnQc ^^l\'q>j4 =><}[LwS~Nayaϧn;gJSo}oWծ}E4{}綍Gf.z+k; ]+lvmز5<=w.d -^*юphڸ^2P(h}=_mc΁=z[J.Qz$a<<,b禎yԟO8^ګ wVGӜbt3sן;SJkklMOj* o*y8[ʱ6=%waGufY#^q-IHf6quַz(+YF5MP+u]zS7yF'^oGԤȚ< h: +J uċ qg5d TNEKRVxDf!B}i%h _p Ga#L,~n g \G`Zn>vS07PfV8[ަDإMlr`f97Շsz䩮p*x",n ;u$MT g6Qupvh!׵Lڇ&LKDiٗe?npժ*3z߇N~qՖ-֫Vnnk+hɥRAOR ;ʕn)"g)c/jYU63L4,ة8D`QzǍ#4][FhK,2'!ݲeE33³Md.~4wGci^|cj-I*ء·نJs~9LY;ŭ/@θת$9G7!`3; :KneREL^HE~/ l \t#m毣*H]#SJ}Ⴚ]aYCO֤4Vl09Z w\vNn(6x5a{8nl48py=0pr||Rܓy"`<q|5ɗÝgTq\ab/]{FHkJ]w}ѝNko7//~YsᒃZ/=n eU$a@IDATesQG!yNʅ+>v󤬭1M؞{ Z{k-}~^BSzdC6g!4 \=BBFEˆ [&_N5*>.a>Q07XG "K9dѷ')ZTF*,޳xnO|#TXTʗ/g3C2J:6=q -vdxtAΞnUæ L̠Un*3*uװ]nF iX7OϖOj[hn" SaF˗8õӿnըjZη׼7v9~{%퍯{ӥ[884oӺHW h_#TPլ2eYr 2qlI ¬C) frG(rկ >FZ[--XO0oc^0uť@oBVHEyMG;[GQPMvFN}׌~#Lb ~I9po~OOFTѮղGْO:={q|8m{nt=`7a lƢH$ȜOg#O_8Uw4NGݤ<òZ8 D씇Wyv>i84b zVS@f/ 3SҥL l:S\J|fjЪS:)# ]=ͷ)=6K+8+\נ ? \qBc>_,눛&uAli[ZTpDKoߠ}U/ZƖw,!1Gh?k[߿X+1z܎EI[oVZ 4:%kB61\\Խ)WM`.'ڊJ0DniU0/qG/D)\'e"!|[_ĵs[)ly.)<zI>Mo~oaە1mx4\)vrApIBQgƍb_i9X񅮸ދ(;255yDxQ(8m!1WTR\B3"!FaALRi}ҧi)@F #!Y x@G|ۅ=*tKڔ̘8`ܤ|-.ҋGpB @Ehr#Yrhh3Wg @k}Ӻu6L'- / a&ٵWglj|$tIk7kG"=]SA/tb:g;'kN6_(.׽J5v}kueN ϛªUj52Q;ykn-7jjJm57AOWT(Q`12:Njs m>1 S$18^t/'J lVEuƾۃdbGt@t"&vĉ(g|@K Kaݳ'DVujfjLňҊTtvEq6NZ)6f3WtuR:%;0봐Rګ1K.&G,OV̨t8 9olbjo[e%:d W,se*,\|x5?|0plLw ΐ0)=WX2f :uԝluzlO/4qfy;4,u;jǙ9pWk\Bz 7ӥo #7;?OC yS8oZC.8y+!6'YlDV+E:S6k8>:b?usO#T]>4j5Yfwu6m6y#|[Rpq:0\0x(u6v5+-bw7i`;6(Ma)R/2a߄RT،E|ݠc91š*xE ' D(1|K[ZcmM5:G! #z Eua|Cn:J|8VT]0m3e1B̥°kAg>{FWX h \X1-v"&$'ӶX2KmF6j9dacYg5k~ot6- ҋ{Gf,JAmvҤrQ9ʝ%qtO[eu~̩/+6CDN,&96ʍR|摩#zs0]M<&T3E.4㫼4e:-0O[:0' /+<㴮bg eAw<'k {jFBHM['^^5Ҩ,fRtYnҨn^R_,󽽛;VIvg9BY:>MmP'eiem+,;O"P_6; n S L @!E%掊6m)Z򐇌0 ȉy4{N]ٻA&RXF֯\X$$,6=;jeE>J~W1seҫ+ `Ȭqgi-&>1&]}Sx6Y7Ƕnk:zvdpۯ CmfnsQvt*B3:@'tMmIt0ХMl?ʝmIc|6ɘQ/GH=*#st^i?]5u k ѐcRSXZJq#{S <~'7i[5Ͳmd^er(زMhZ$5<&RNΝ~w/OMe˓DY2UwS\̜QTK:I-瞳~mm{ +7:|@b^hUG*vML2W8u3+:aU˴`ISypz8~^B#gdOBmr m)0+1(/aK'IRr'Z!dc4pِQ2wZ5U%ܲFMXZ테X7FI @cѨtI`#G, VmLY)_}f0pYbpN`kE59b>)e]< g_}57`[ xR)O|j|q'DaU]̊jr`I=`:K=-@Sx: NO?xXw`O8,矯#\ߑE>33qVhk[H]S^w[wѩo;z& VhkNLj9ANÕ<w1as֚2|ϘӴԍ2%^}4pL8C[{uzAFwg48>OȊ8i4qF-u`4Wm6:ꉭGЈ[,\N3: XWGe2Dwn?4>085hʑH5L)oNM}WYjYm5/ ??G7ov{ (RlN\v۶m%w;?{Ozzjjse=;mEVFOA\ɕ&8k`i+)XF";߀K0dtq#b &RPҟ`0t Paܞ6,f>64bZ4=Ib_:@D;2"F ؜ ]pMLe$ȥՊf3LQA6Ѭzϗ ԉ/-^H o!TK̕k?+tp?Q`9@`tq!>{aoő'0!x\Xx^8\H}bTW gg47iNEKȭ?X>cs3kn|]╯ɕ5$>z;d٭_HRی|Lo",`+$.Y#]L1[Vѥ+sDzԇYU`̥Lu|%caQMŌ>OYZLHDL}HՔVG Ԭ29֬Ymʸ&LbcO<L 5ct)Th2*Q "{H%s{X494^mTTL` qθVҋn5!N|r {RԸ|-wSCC-kHJӮ#{gD]r֞`bn:o{KnaS41eV0)I0a1QI:FkrʸhJqZo&h ̌Và/IZ*3`_ͤg"*X3ujq6+zh0e U~I-L3~~aHK8X323glCjI)vuz#+)hP.F΅wbOJ5O0ulZX sCڴԙ>,)=#f?8InICӾfZѤj4ƃy2(AAԂK(7GʅP~׬xyL1{POzƃ'gjm\*qlUVU܋۷k B@P0s 1.,S9*9IV>kI$uLj/=?:;g"u8ClͭUr-oN}3y,N'wI~I-oy{twǏVn^ki[=ڬ>L޴.wq|k+hs(c(<RѧvrcH4>ӦC{ة?hSL Eh42fKb&.Jh?Qf8̗鼀`t۝q+YM* G}&hc%>q"rRIN}!u[._1"xD!,A+^VgiJUˁ= LE,tlnOsߧ 8/y9;zBEBg< 0!}.L?v9T%kZH24^!11cE!%, TOSb1!`ԅ$|<Ѿ=B!҆>bkJi=-XU"_Sp:?Ɔ Z AJ+k@N0o96K6Q7|nw.YRFguWPA8JC\-_m8ɭj.1-OugO9EPMBjRXGg~( FXeȇ P[.g:fZ?imPV6-\~=Lkȱ|0k .I⸖z|]ϐ?Zq8\"?`  4;8 !8\_*BWS0ћz[nIƛ\E*KM};{31sG^1u4>*NQ+GY֬Ȫ-llS>6}8Թpa*gjte]ʋ5OkZiu,T3$$Asatܛuбg +o[k6@Rm `z_C_0Z"UUJA;"q{闱^9FWWRjbؔU#fqh5 1 u9t 0p PWj5PۑcTO'% <>)83k$-X[>|G/youvyςw4o$+4Ѯe;}uCpR~;GU/^ "ڙSN)+3UF"4Pu6fȧoT& ,n|;o}[GlْY( ]<=WfI?G Bb$,Kx# &R?!Xi,Fa7k898N C*/_;3.8|>/?n177sw:x֕=c~ccYwSGDE'ݾOĴ6,6럖χ59d|M?#Uz[I޲6kg/ilB7wQqBV%:eB᳓cFIs2rZ.oYZ;1 j\1#<촴*3SC%ꐫT@/jp(/-R+e0VE ~qQ$@6BoXyy@S82wc-BRs%R ˴%mٲRѝ==]JJf2CeJT^[]cD?OHE(r&'?S/t䤤>HHd󷤽7ν^kǵ==d]3[e 3–4Xo\툳MAp4H<S0fA6w RO|Ii}pCNj^< hg}l :ƘEd¦@;Sڠ*Aq@qW\ceyn}ĽAs}˕fvٲn*}*9k<8:΍NfM/N-.'ޯΕ5kͼDK;Cm]B7jݲ3\BW6FL]5䛤OjTG7IjxY3PɊnԫiӄZ]"rnݏ=bLҟ8@d;!db d!fC\a8ą ₟Ӆ;g9?T;?;p8 ߋX><nۘ;4$;;SwϞx\߶ {F\rilu}A3 <14D>ie*-sȗrL؋.̀κ0u%F1u U7C1f+*lAy]yt$ ʪke"'%7؇+% yR%LmQ:uξ_Lk:qOu=&MD˅p]wC7~Jo='Q/Lh8lA^nRlйO]|ώJ>x`NE&S BRSqgM_e ~V&>w>P[߸QdFTΘ7(&b'N=Z}5P݅.N|Bqذ8җD$d 'A*L9^NV9rEXa9-Iם~/_釴o+=W$/7s.pMj9YLhРN_әϜ<#5p)1(4mkRVhTi7)u8եڧMw%3bPH lJ&R/ysL$(P%OȈLx9un^տVHZR-.?ghd굦$:-u}WA:¶Hm\5 e&iA H/+/X2#NG_1πL6t" ƌ{^~+vцQatz㪕24vZ'n-J3B}Ǖ$Tzà;= HMh,l"tʤ9`B6O>6mT/bn-iMٻsQksJ*ʏQ#4L*3QC=晀F.Xwչ/ =Pu! i2fETqBbK=,M$[?MkIg@diOJ*&-vs S$wG(Rx[63g:]Gew-qʍM/L3=e2isdݮq2i8JZL%V:'R%/foh]z[OHڣo~X^5YG/1\ ѻJBzN"ZC|=R*' MD]̥Vjq֬-PB@l;'-Gb|X t▢#^X/xqzRK*}~g$#8׷}~UY.u'ιzW m]$k;olCǫ i?5xL߈YcD6V0AmnL|`V}Lgef RvOK 7;LKA(|I\,aúp%}I1H%YOg攑#2c_䙹zW}438 ٻbrpUgV̯ɩYYi)k,I^p?/XFqA[H/HE~ #zL :PW41M.Z騖ٙT#7?zw=&ޟ|Ky͸cͺڅg;r?zYNev):ifYҹe4i#U2e]s`RVU+9k;=?wӵkڏ|~kΝR㺏K'cNs}zJ .L;}/̧V ugwep?XI"beiBTDs<{?4_,r&T\!l_Y =Up#0m.|OX|ȯ֗Ӊ[[[SoMwֹ٩SܵG\]+׽ms5r}:b㏸}۵?G^),%+7oqk;S1҂]/h5v 4eKĀbXә][L*ԠV7[w Sa+WԿ32: aDgM5.a6ڔ|X$ii P+4Kd34 Ƹ1Z 1[W+&&&f A4~AU=uIp~`cgR`'-̷Ftr aг5s.iz9o.wLҳ I,%ͳ ^G}!XƐKKQ.UU_{~, [nHY}h_9uڒVU !Z]pM^k0=)m ա3 &Vw3b( |/ 6BmyOaRQ<<4wllM֮m}lWXиkW_5shaMS^ڃ̌Tv0®7( GXN \#- 4Cؘ rHw-7gEIg:XV#Wa!ހ^Ɵo$@2 Dx\ pq=ć{;t'R8C|d-7G6\2;ζW_|N7^|˦*u9C{~wsuS6+y7D Qc٤r>Ejό`b$͉j,a:,6e xY%@̍!+NGc:~R{CQ{jG툁-u_NAO_%YI  >| 4D&&Ã}^-; iO>&M8 }ũ&Ue0sב>7-i耙T0$J]xSr촙IyЬ5h)mWᵭ_?Nj}Z/ry2@PQؒgnӖl49Z _noxޫw<^3W֩i3 u7$WٙŰ JCYۀ#W﷖SwLD;}kL9X ~(S1s _RBJW?oǻ9`җK#6פ[wʦf}[]ɌNN2Aym ewoVpEMwhfII/ՙ9 mR<60313纤 Uk_Jϖ\x {:#nE}N|${?Fơ~k>mTW}?|omMݘhrn~+³bŬA'×zH aptK'#X &zR>8!XXC!~g pą, x/G.7/|Ǐ f&R'\oGe?cV˻JRWtk:U,zNط?[G'5. 2lmZ C]\jn/gHEY嫚ShuJ1YM u(MJѠO`ɛ\j2`ՀT ϥu5+ S&2M8e(դTPp`x5̅|zK7RNcFF#T6 ̒ZG@,."ăm6\)QZ'We7@ R˲j(8G*2~-vM-,|ܮc1~ AҹEDKDuV.!璩᧿~ֶ[ r: U%qG.Ǿ@m]]yh5nIS㡲*cv)P:k51xL֮hTOM-va8hhD̙:E!B3P<'y@Kު1-?Ql`SenD?v꺋vt5ul?naT` E .]ႵA[wMJ+NLN$)<'35u[pnh_@IDATӓOmPI=g =Pa2'!i% "iOaB|aBx6>.KCxx=. p` p.^*x['&с gWRox[L/)t];\OwyoWKcM)AZubٗhY;o%5+x>YjGt]Ď1MiQ fP$M"$13q`ەK H|R)^rrM0'~0Xca9QWK kCU+#FdQz/`tSϪ y&!h8"p`Vji)Q?JK UҜ˘AgE9:vp1ETNڅJiYU8˖O,_h4Q^g[YSbtjP>l_H‚%_$S4z=>݇4[接ZաGePVϘZTuj& >ě {X탣?C7 Ջ|>QmoQAKMT>&%ryixm;X 5"ͺ_[>>o6nYMe.W>/݃ L筮obuNjƭ9gz5Ĩ ~g>}뭛{ dw|?μ쒪 7KNK1Oё}yCt].;v%T/J+ѰA]&8g}(CR$B +ĸzɩ 7?+ G/+'On,$l)by{ <+|8Bx‡p!.v:^ ?Nc=ćhu`xH!!O!~$7 _=3>w:yN71g[+[]Q*nSO}/nyZbmZ 5:J*!\$qnlI咰"SߐeXR[67谩W7lݺbaP{V\xO.< z!p@,@\1'0m /.yxBP!]?Pxπ_,?/y@{]?K?۹oν{֗&ݍ_ouM^&c^G܁ϻ\ҴNKcp4ֽ̱r ؘWXr)LJ+xL,d*q1_.R1UQ%QW&1K}P#2z2FI0q -X-~rrTW)\՟|5$SYo`z6Noƺ}>K3Y=ΡO\k7-앛Z.Pijzs{y2p&V3Nj |=R0n,H}Xx`i2͎gƓs'.~u7<;@YNes6pZ^#͉YO<` g`b(OxCD8*qŋ:YӣE2G*mƢVCI \\W+1U97G6/mLip&G#mf BZO^· - ZՒRfTs4ˇF޼zЅ/|H+urUM!o2m]kYѬuǪ̂.&tZ.'9v hl` iMhp0u4h`:1mΜU.Faq_a5IAF6*T)^Cen_&&PQCnHCb}¼N`Gߏ^<\tqwջھ[9I] w wB_>g_OKg B8{aSX#.|nڥ`)8LX|ʁ1ۿm~z;uI\3K֭skůF)i֬|T͐V̢\\m^pdnҲNi2ǰJθTM` :] 5ȮUKjDqR 6;6(Z9(_{JrچIk|0b_ ÁtDRǔlcÃ2dx;3#N 0/+w4b^EZZ[׎ Rq3Z:v ͺv5QO5\k+224$N{LS:/m /8Z&45(RkVg*|ʨV9r)ۧKcC;D'Sbgfd LzǜdhC}}]*!fݩ^ aPUJr$+Zc3Ā1l`z5*e '+$jy;u"C׎:zm} \Nxަfcld"aTv5hDv^+>s96=MTu+q*f^FuCHO4,`|g)׏SCm_U8OmrDlpZ/9:?jnC3Ob%UʩgV={vu{ uo~& )&&jNaqo&G,oxkrxNm zLtlOba0 c+/1 2&Df U?i0zoxiHt_8ll1_^.^CXaT.WWCyWVi8뫺5,,"]_x+gLÝ>i0陕jJ)QeF5cy^[rII!sH GKFZG!z0n\CoG"J91$ IJio: 0#=6J^&g&jnZ۶D0hrwLL6d*w5I$p^V7m:Slw`n5K%՗Mh`JPYgM/(+&}0Uִ'ψHhd+2 M5fY/K%cs.Ib&yx *mIkiuvgS|3//IWr/n9%; x)xy/|ݷ]DRb^&I]$#VLt4_e4rH3]} ̇[iQ6*څ% Ɍm'GxV._Pâ4A(C & y V.!%^TUᤜ`YpM-RQ sl"P[ :7Rh@gt2wM嵫.ez6Q(3oS+5 O>K]v :WaF`m,d0K/jx 7 bt P窝[}7$ .#y#'A%/UBB7L8 ag 0}&xx Ãt! =!M {aSbp'+o6ug\޲jэIV-W^}qwi-<3*'ƀT<#i̧<֐f@E=-e ([ڌ̹u Gz;R/KMZ/cQ.K{B%))X7:1N%|v$VcndP77/H# Ze ;uzX\Ɩ h5lΐܔ1JRnzK^27<0hx֬Y."wx~7k%ȡF -vޡ%π}Nuq&2vD5!X&@+VçbTF?Si射/ӄmuíiZ6S:uDY4Q~:?#oPR$!.7 r߼]{~mkҘf^ycNeIs3$1񄓑 ;1!H>!TVvR_˶H20(1dBc 8iW) Jc$m/p,}I-hȓgfݾR]Nq,)ϝX(1w\v)3?߱"\Ha6 =9ټgsή[]!kV.f͌զAё+!ӰN, 4')gUkiCԽG=2f;Be#>sE[{W睿JeQF@eaX v8lx~2:'Aqq / _ p ӑ& O k ҝ,.?? |>NhU0:r'ŐtJZ6r2IիWxJkC:YŎc@2t^onI#6i/ulNgcx.7*ti4HK=QbvaHsbܬ#/פ&HvUn.3"ku;R=Z'uXNs+4υ'Rk#>"Fx\JO,ƫeQ_QSo 4쪔FYլ'NEQڰ]kݺĈu[qߣ[pMܥAo"AcpBA1 LHFH{!o L-[Rt]::;݌}yۣS8*U kD16vP])5~Un<1 ES]ԙ\xzKXckꟄ閴/׽M9/֌,T.TTU,yb~1!3媣G0<F %Ii*??04Nb`rF2:8a~`a ·٫R"@Op/@(IڔYtAfۧȧ1Y(D;2ȟ:u=2KO&r G,0̤; {΍ޭGB¬x!,.5Pk i݊e e]5oW/CGx턟2 r3)[巜O|Z  "O'~=W.yg(,ߖ2i{z !,/|IJeˌ;nwG{'ԩ9LT{J>X٫k)Vr?tN$r>ha1D>_/z&&唕ODSdJOO}͐@:c?w?OG[So:꼧F3z2i&t;'h9:$ J"0fP&>lip4ZQǖéW4wk  KR?|{^bcN&*\/Y t ec\]5Iao=52 yq?a%ttK/-+_ 3S615UݾN5k^bVYk:@{[vӚ$yYձ 59vJ1\ڤֆq22@Q4:`UHLYem:R˭lel*cROں9i΍*+{sl7rʄ"#o1G2<eB\ kbN-/hD3 |g$cF UpZ׬:`wlIfq-C00H)YCW <mISx_/~M>tڋsxTm%*SN7CE S0K)i*5xga靦J4t%ˆpiaH'µx꛶ٽK;;ӭWղJJK!:.0rՓBUa泤#9j7 0"p L i*Y; 5"̘ =8 ד~:2C:y%dMvY8hP i1ge -oF?c1;Uam833_{v&50{)N +\Da> '@OSK}߶2(|%<]{1wHr͊m:TbLP? |!Cf+~:?Qy|~GNn3JDt#3;?Z79^~=mQ}vcs%$񉮘X إ|Ä?+ {y>cQ 4_bdcA2ݒ—8`2Ƈ5(m^ha&jj|q3}#'v iI:Ab19:aZN)a-e(S9~̱An!;ul Jsr`1!ֿ):W;p˚ PNkq -CvjlZي?|_~t@h7PGK8y_N[~7mޱBua?RsSR{ÇkxY$`qWRnp6k/T` Ac"8K LiDGc8N7\0AIHcQ2{xo>sD C1J׋@"AFZBZWѯ$*Ӻkqvw$-$4qQ'Cɛ_>_|AL6U&撲Q_lQ5jKdÄVxWO: uXo7d*^[vTNgIS֧w{I=ԅ ?!+Ft8#B"3, !8 ~KW-/oeOx~>#;MzC`A\*%sKڅ^tH?( V Cbc^L8َ0ΣNsU~WWn}~A4iO=_C;nr5؏ήkkk+:F,$&80Xڎ?K*aCzEs:_Bcel!&dÊ"s00<}=Q_pa0/ xp'p= qqW/0Py,U;mh?sEۦf_7NMNY/砑1Mp]c* Ӧg)$̤ [ظ=-upc %2ʪ:07!ܤz1u1#n/Ij^[0h>*NC3`'Eΐio Hs+O^:ykKpr̬X4 3g]I"&s/p֝:+[{e^!Mv|bG$cn.Wq ҍ1g `0bkG#P/oYuZcO߹_WN*Ã` f.֌X{oԄJz0$y4)U˦5`%fX߻thir?&jw7pK\mw{?4WbPsK@, ܔb4Z[ ֓f!0++  F @%3g`0`8 `ëE1vX45" q=qM{8`@%24B=2^G:ƢNv ec9 5<6pͅ-K_|ctpaۗo/ʏkp iJĥ:1>c+`|tS>s(T|KSmz*Wjv>+R=Ynxkoڃ8iu˯0O/@ig B~kcbfJI52>_1s%sg紦>3si}f]LRWyi!g+_?|1bq.ucB\H3҄BHO`C\=/aB? 8qGBy;Evjƹ{_~ޙb:21=_L YG'j%HՎКvAWCdf<<"+Tt nE0`A͇ jib)t70v{$匩]Ţ=>#q>6}LWgNd9N}3)`U6,i{["Rn7ڜ6 U%38p=VЀ% _|^I(c0ٻ{`>`$~zpFex NFಿ0d58!ԒO`քinx0&Ln'u: S쵗/]xb 9$ s[Gzz}!ar`Άwo񚏍 #/921*MjoN|1Vu"QfMaQ,]}p0</h<BQzޯ0?5$TIsӓ9255}U\{{UIi':KV K! p/70T iC y0B+?|BOx+CXx 8 i Âߘ9J}4c|DfLw~gvK"U!~Yyu6ݯZNhm*:.je1H`x !Aq ȑ‘g%N vЫN5n> `|[&y1^ `;G|nc͹Ż]sHȉcҶΚ0ۤEl/wgb[{&ݤ&;I_JV&'tި{橭nc?suj da32p Fvm°lg I٪7FuR_׾vILjf;[*u}&a5*#pЏTO=B5IQlUE\q|sXU o;@}* q.-yM;=RWT ˴ 4l6 8}GB?Ԩ\yXC]*X EY:`կwQFOSh J0hКZg˶;S*x%Lި O;?!Mˁ 0p=w({{t!>8xVm}KU{lϏMh|UeEz2e(׮IFeճwṺLҭaHLӳTg9|O%%RŔ“52I(dܤ0VcJ!ݾ>#> Xg rn:c1jr$4+7U [MX틫LzqK0S`! :3:ӝ53UMn3tn/+Mj4L4`Cc>ѿAoH=XDɒ5X&#;1;cȜwGE? gW)oD%hDmcPQ$hK`f:WWQ{zKQGHK[}׋_N@?SC1,*[/S-`RϑڈZoS0ȪlX 3 ʪ(+8P'& p@o?C€l_tG)H%%!eydʏt0l7[wؤ=W?=w??V7Kؾۮ_nxb:WCOzvI}qE0yGa˖Jnd'9%/z%}}?<88xiqc+[k4oao 0<ާfjvp:'Ǎi!IҁCC£pꢔ0G{i_kZZ/+`Ra0/:(ăi->:is&GnlO/I$Ɍc;(8$gUC~{N%U:]*2{@pzGo*d+RJ!߉+7F}@$㊆E$& _ Pm?<&#@qӠ=:#5ޑ(a 2&v`hI:nn#i%I }K(QO']Q9E/3GXH. aC -CauQp вe\sYVǵzqy~OJsM2eYTHٱ#j ghz&pQ4v>hmzꦞp̿3{tٽ?YXBV׶KNm:޾k-haX%1X@IDAT2NV^= )c}7o t.[l UǼ9׫7FeTψtU=-J+?7=Ȯ"׸:;!L1CzUW^}u8f)soٌYN|)>I#$H\0alt͔c3 RVKJi;(`DDx&S"?@8,"x֫b+)Pr &:6nyr!_)'&eNA[8iziiȄ|ӜMo~yRw$Wܥ/Bi}]wٱxo}k'z 0:"׎J?SbLLɇӤ6b"0Lv+UD?*K^T$OϾ-#Zx!\vlUQ&{m'\}]cg-9 kYHqa`X6|c4hi3K?Q{F lWNċtO矦ڣ Oh8 4 fqX1FWVOx8M ~7V=5Pֳ˅o_'#oț06<(kK !! t(cq۪ʄ=͞[WQ96JTRVsp|tw}bbc 3}/H_sGǪS`zb$"na2)n$68 A-!lr2F#C'%nDO-ӴraQ4$yl HRovZk8 [+S]{/]Ot4h/ĉ4B{;&Dۡg.-Kٝ׏Vb1gkԴwҳ)4sk=t8/nRWo7|h7h9[P(XsdUW\c<9szZn^iĬ|>*@ nS|_gks\BOYm׼cp m/Ӊo괈͕۾p%twm^쥡EmibV+Noܸe}**\]^(u# }"NCF4)r>̗7,Syc gUe9Snij|ͫBXƙ6DVΐVSV?Ώ>O}b۶:ۼAU444ft2_[Ҽg!V|C^8'?^RDJ?.CsEڜJo(P:oGsio#5iɖu%uwTidW+M OeFG'*F'&T6g$ :gD]~̕hraJR2?5I]@p\"_K0lXztI01rU[*E;ܘDI<,@dɃyz|i #e2;0<9{-lU a8 <, #€/&(]"،)QG#Q0 ]*QӸqeI)g8DnKD޻5 <.)oMTN:&W?͎АŐצˣhfƐ`%& IPH`Ѐ0T{8}wN f%QW~aHߩi Kj*2s S_9FUUUTW6]]* osm I-aF^Q?6dIw:-q^5$q񼲼&UHz {92Ä$'RhYKZ|j" '2_ 7҈fL"o$%rFGGpl/A8#XODX}枧4q#ENj~ih{' a~Gw i74~y4 p/M/cF璗<̋m4ͫ'h[p#c==ǔ1l>5Gth]"Dg&X)P9g3(&a^9ZjoNVi.^-}9z|ml+ohvvMM2ml<ЪFE=]5ְcý̗ir]Tse55t>-n|Oo{EUlٵH˂ }/REZPST4Sr!v*)F ֩!Ӥt2^9gL/ß]WWuOow˥xg17y] eNyc?}"3-ƍk … ɩoIe Ud62ŽJOC@Aa{8]ʓЬU"]UM֘~/?6_GaBZ5Ouz\)Q/L ;O+DϾ=)?﫡\hܱC:ZR54jΥ3ja14hl1UǙ jWUNZP:?ԹOk߸O/wo.)mI͗+J{{?a/lٶÇ{s- JEL$HoTZ8V~P"蟞 '=r R!+%mB0x!3KŘJTj08+{@ q@ϡr./r*cNr.OhiasHdx!l=~8%iHcDi|Xڛ 8\СbXH7h?)P.xȒ4E) c%=y(GOsM#hdGG@GaZc<'.7#΁GޘVT7>¦BEvRMc\Fى(r̨:6.$hhάZ ۱ec;3&V qGqx[<?#|w2D^'%F8 8ma7"c3G?[-\2/ݲ7w;P_l m#V3,>x|@CURA^nѶ->[dlg[Uj-o:}ԷGA F4>6>8-[+,GY5ar{YM^s] uku. kKeKL߁=_~kظжD\56-IyVi9c?׳orIJ=Jb ~\/|lݾc6n%bWKV䖌aU hʗ+JQQȓ+ O`!Fޱ2 _n&D-$M5@.%)i" qM犔GvB1?=֨A&U^&I2M;HVX|i"٬EҀ aP;457i,.5Fy$ FN,t~8{bT هdO?:/jmF }{G\n̹1bn}D4 򛋙 Dt4~;E: ^!_`&~n:lw!-?>s:Z(y&abd8EhU֕Ǖ}ek{գ~&:ӰAʺLt)m"76pX~9߻C'qp 6e:ũs  Cc{ SB/>)' -VsLlؗ,=+,֯IidD ukz16o ~[[±]lꗱXO_Tkku?7XRkYݥ[Q= ޾|֒R)B.3[uRCw)Ueڧ[Z{}?-۸q.bHydC+[Ww-۶f>bqAb̗3.24*TISn"Vi J|XySiRo -"js|&CcJ (JCENzXP%yZ #l)SHzAIiȂqJ8>zh"{My;+.&+-ٕ ~l Q 0?G03c8y8G-<,m]/YԻ^$Ũfjw446I/2^j h†G ɱ|yvwzkUeFM~Cׯ1 ?gZ.WECl~]sgOLG >{rHl郞UOȐjO`z?0λb8z$ܳ˻zƁCCSCӌ*ښKD'UH^ OS|GpTQwBO*YBUѵH76A,I~YoFekt@tt ~co).C礡6òq&Z| =n?}')v"0&@ h9~O1H '3_pHYip|K4/:p\=PomJ /Q O(K,q%$7iK~GF`7$4b = vlr8 >(fAghWmqπr+<7.nR^'{l@S`,Eݚwa4]i3ƍ8i#by# w41|?|V>3]y8=c@ #ǝ'mab?n#lڞQ(sa]ܾX]j僺3gN8*i]w=!*t@S֒k*˴%mm_KnUE֍d˼B'1̵wǮ=?p{GѴ˗/ hg.W[]]615koS%WEm-}2-f ._ J2WoK~uĨ*VUTnW9QٌN @eMu?ٟ>7Rw9%hƼWi?`'g_/f̓_>uL}C#q5 IWbT],qh9_銻5x$TN'yl 6lUxrʗ0\zf%YF9dp[h*,*rD!1L@U`9?z6aAr %xP_؂%Q3$)/a$SL^!MTi 5+鋏Vdx‘ )l#*4xTi"$)\O&[ bAD> uaM`s$/dzlA*A' Y1s] "8:PF,$ ؊Qa1|^pr;ğ(p'r%yV7#<ʖrNۚ"ؙ e?c*3eu4,ztFCeͭ~vRoDnl IR#&mwș=H8јϿvi8|ةxN78;bt(~aϨ{W; Fg.m[VҢȉ!uSZ x^R+s^}=Lf4Df!vڞ%-DCOqVo{Kܝ/ׂmIӇ5(gmYE+:s(xmaaxXжwBad._$bL|Sa Fs'40\ܾ͕}AZBݒG`,))(yK#"/wLTn 8g r5O`XdMI$-iΐ9剻XJ|lD7E%Gz2`Nf+minlm[_ED SX<{?~@piHiIE=3tllKI -* wu*ޭ\5W:( | ݀$%$^^=ʗwVݲ4316R֦y)uRu:+Pׯ]^Z} C=Pr[8BH/I㽡ZttyjU:ݔ֤˞t~h8[ hibg^\}:eͽwuo8zP4%:U=ZmIT&,L}RLL$Maأa5yD?̗r9c{:4_tqϞ=ҕJ1mg=zR xJ[N|В|N+)RTlsv"4B32Lm qK\^Ά͵FC8Z#|A3(T^Q騎FkP١7a+F)).\y䭆⮡|hia2+C'lVvba<~Fzyǭ·a\ ē+N#/OhX z?䖁7qA&ĕ&=< Gx#Lܱd4隔[9 F }%ʤzŔCd)D&Wނٜ;|A晿ch@An"Y3:*vnOt?ilЂ ˠmɛ-eG4Oi}&CF9XtIy{lM;ZԚ&^%ʀ;헆G¥a<Şi4p8w^y-9Q%'k׊s=3!w4X<Ğ)eoڻ?:206>6#bu0`ozΜ619v>>\׆g>apOй庝M.ʻL~hٜmzZօź ,ǾL6k_yuC%€n|cq)h%jLLLggڲ׾LO[X+*ژn1]ixFw1#_JVJrtWnYt>Fpę/Q뮺o}{_s*!k43Q!]T(E$qB *LQbzTV9FCmcj]-zl.Z9H =tǀ- ,!PG'&ASb]L%$8*6NZOTN?nj^XYq_Yc͛<>Zhc=sB998,4OHXB~p?xi{ jIR;ѳ;ڗ|_~@4։)ߴDpTNkxFxT2*9ih{z_521Hٲ cxVˍ+^iOcÔ95Læ(pI9t:Tb]=,mͭ_'ULTW 5胿ppwȪaAXtCSN+4^A/n_: 7k[,qC>a"bSA #zۯض}{ǔ:F Z@OURI*3UtTZ TxIc: - i O*5_fS% OW̨(UaNӮ#ZP21rwX?'tm>VxZ*LDѶr$e&*f8쒞!(w*qJBNzdTE?ŌH{edA$kWd.mʣx])+F \#ԘE#a!e3q39/y)]0/8h:0QfI( =E 8Y8 a3E=BEdgծ @`烓 K[q*+B LFBXth$#Ql<^YPavgiEع{Æ܋%s/(}q.-_VQ,|t"NFЋy?;;yi1'- +zki[t^z饣ϫl8:6QXuu;uNgPmxxѐ?c\ +Z^̱%R꙲;\aA[ O^](kzlFge^J 6E+BtiRoNѪt: پ-U/'i_ѪczݒVQv0>W n|r y~4LqXD^4i:D<޿s~$,hfo-_||Ǯ]ܽ{Gdk5\;sT&ћ {T.U$^qIxqJݑTTeE0@C bG`6W(,Ҵ Ǐz^5xGaI;JS("J<2Ne݁"ڑ!O;hMGI IVqKz(=bH^’B1#&N0b%@L3S/; KLyLY* l+Η[<i*ouF$LEPu'c [yM7TH|>z1M@IDATo~OfF|领eU5Z^بVO~ovGP\xYeb;{"4,ȖMiBy5feJ/ý}w?OOͨYHla.ITcබڷ1,;gY;&5l* _jZCaj~<ͫ_޸N}##ãa;~Ga2WX|qhpͨPS]pf'4gʐ>$i{:Q _ N8ď~SX:p[f=G];^9C3f{%WzXj3V#bBeqDmҨM*1GWluժ A b6cx[tLb.њ ]$)E3 z061BP-Cdx2%@1<0FVėA# )?E:^'hΝiNGA )}.oC0iHbO1=Ĝw)0atLaI ? .=T9gL<νdwfGQ)V5QGD1ɈpC-){-  9oI'CNǸ!>R\#H' 2d9)y~KOϖ~֪`;iV!,,ۍ #4idp)ዅMËtoxG{!4~Bûf:1[yի}kЇ[vhCD}jveÉ1mǮ yy3j-ͪrT* MΌL'FK3T~߄j")ž岒oQ.& ƙn*LÌ6[n:8xCNKӦM,;z$4f~e|A?Уt)rma۵nezUZXSUe ]G¯ߨ!t~|}X~r8WZZ SZ$mLo{0%4jx$]q%]|t">S߅To;5'lǶnݻ.8tSeNaT4^kQ(`z{o-q+]9SQi&&rd֯,rSPOIUjrf8GͷGzýG?8) i%>'EnYigx&h]r |x$i_hQV,޼/qY#$7GzI<:: iȻzz{n'0Q9Cc p# "#^" p& O#N! ^|t"]H7&]xJ17fGwgz?eJngUdymvfҜxJOY㳣%*'JNh gJt >Uepzpxޱy5߹["JA)NTpq<G/T[x]jvV"sfzu]jC]c߯{eX9 ju񲳴2B +5}l :G!J NAx~ޖ'aOBP$( =ppbz^LŀPWdn~)bХ,Mcl`DILvba4PED[$nFq J8H M? ~ox'xMz\G2%>ra$Is"GܑL1/pGS/tGeyc8)GtG =>R*ο{{^72$ĜT^)qъZ5*JK[CcMy߯0 *a Vfg4]ͩKf*KUۨ<6u@ݷW anc=[$̟@<좋.*WL},xGu4RWje}5jhCe_Q[zG5m>r)J8&%iaYpb|D-纰AUG' *2HoNMg7ٻufkk%M#~>慒%ĩ0TT>Q@CǑ'4l SV*)p[Pg- KNy`w݅V³J[i- P){uAyxh  Ot. *j?V٪}6 脱)60y4-ȡB=rwmQ|v*wMH6-^zx":Z1|{ gr%H3է haլjE iUPzZx@=HQsT1w Fq4x1E#<}c !+q]dƌ!La n %n·ag]/kD(GA%Ʀ,1ג@4qU…p4P?) Q(Yݹ%M>-dҎrQ(gW]qMI{#\AAȪr%7{ݝ^<<2*v~Ws+TT9[FyAʄ!cL|J(ӍS5T[d$8_)V!+ea.ۙuZP{!S*R 3|5RaZ 8:Q, [B{sehVcj_X KDP~6$kk}PP&Box>:~}8luP Ra"͕XIHh{J, 5F:Zځƴx[-wp}pޭ/~0$.;SL/#IwY-g">%C/F0y'%i`JA"egKb< *ci7 rb<"[zeƠR'ahtcrlM3T8yS Bgr)s[P䡵 F%_irԩtp8,?}EYT\80L7alTUA芏#&Bhv~2JozQ:^uq$4yg|sǮxlEYDGZ;ٸUL»?|WNݒ5atFSKòeKC]C{DZU05 zF+N7^ţA3)w!v𡵿ܿ_YrW*6N9C$4cGA)* KEJin+hIx ^UR0]Ŋ:;_×C߽7XMX%,j.62Tk!pG/Dz5i75'uԆU_asu*N}#}'xMAUt!nvL{|4 [G#ao &#:P$,,IgKW4%_5N~!;pHSzF;t%适0q#nZѱy,sgb#8P,,/tQ޻5b ,11!i178x&hk[!B:Xk'tFCts YD m(%Jnf`SRt Girƺcį.¦ԣSя~oOl v?ʁlsxmָ X2()DrMK =w+3ak{q*IWffN/6ރ(Uezx^o\-$$;m!~JB.{v9G7cUelAsτpakXHhX9|̰ú kᮽUmIX>tըs^S+Zỏs ɩo6adP<8NۡDLaB?+s/yK'ܰa'w{! 13^yCVFRFUdh/*>()cpD`1Pe^QD((%+͍;&:>V_?/WꑏkN|`3U_vNc8wyCXԦkuTz# keNYim;!> RKu$qVFtQwx,ްdŠ6v_p_gXM te' ZM5YUqT!Q-xin⌤/oSoC´z̈ؼ[JF4mY:0#4OuRJƏVӪ]˴}+RCD?#l7mMF}˫VbC<)-%3Zh2s$xay=7 : XVMu hk{ZҍCԋ; (ŷ:gKrJKZ0~3MǞ{֜I=mݲ{~Ҁn2TOe2BRiQD\Q"ȲX(URy&N9'qC=9Nk[)ۣڊwQ=&s r lxy5忷0<)ᜎԤ YjW_[<&o(\vƔYso>)tU#bpbL<\mLwV Uh~}&*:m5J:M/1Ė'!5l5(q&磡iqQFMt,d=c#X"JGiћ4 zxQ~6q,28,ˌkQ$,O@$U)9B$ $1 lɭ b jBҀ8 J\?֖֔>a'Qp 8-pY ~`7œUʟz  4#(TNSL;b4~џ78aP]szgvuwfrv:P!vT0^XBI-xVNJڥUa؎pY+ngN4ܔ9Q4x(Z#ml _Qs쩯]߹}]Mݷ즛Ow|^/"N^o)ϰ{Ӯݿ'yLz\aa"Ls{vaDg/?=дh GډJ mP/G)\op1YGS(w;OñGx1i| + gpwyg(?yӦmٸad>wrQg1NUE r O Tqy2IZldh$ɒ9 i]>u&5wg|&}vo8L ɐhp<)J0"6*|kKesEEw_pR[w9}S ȐsOr:~Dĕ e*TkmY_UBL0VN i8^W['d3̵LYMg׿_د\CkyZqKeFYCRiOˉw~wN2[nbXp݇;{zs7[uJur]%'*HAi& MEĠѓy/pP1ϙGcLni/?b# 7hVEٱ#t0z34 \an٤mkK_xWL "oQE^Lxݐ^UB4*7IEMX*O2NqP7oJ դh Ψyhwә S'jv5B y(G{z$&;E_ƛ#u lb4a[L?o۱X~"XЇ fҩͯ8SzVɥtmϟ3OT?1XiGfCxHY‘.#k_wg ."QO0<첞7"7hUFEB CgYqH_@ys!~IKBsya&q`q;.cFVMGpPϏa6뮻޷mγN!4YLA] i &J H@Rc Ps886Qe r,C(~16<+ DjBw/56ih2f1B78,b'Ob/z:g@NGc$`DGf)9zUzF8pm;94$5!'֢GI@{w bn90e Fzfz_szShkGm g}a0UJ kS⌲ I3I#v V=*ݲ":y]))*9zf &Ϡ|ml$(9U/,QΨWSba $MpqO.fn,dv%,`^QZL I&8 A:+%:m\q3^,:;95b!.d4ĮwWO"9Ȥ;PAR;#[&@x=M㸧3aJ'iP=ehd믟söڑv4զ1zTVKUUɈlѲo<&Q^*ia6Yߥ9|g% ^3j S'kC) ~S !y֬{Kl67ȆS9?㛩N ?-NJ}Dx߇]~iq e,JXNwݜ; W1xxː3ɺouzV ޾s !W"bZȕ(?>&)=.M3Ia 8cU \FT\+ u`twh:&=7ZJ '!,f۳9(,V0,A+*ǡr'iKE(HHV%"O EQ@!=Cwq[);W,@)OX9Z |Ú'G)ƍa ?7pE9`۳$V )1hWBѼuF$vT6좞b6H{w/(5 CN H[1 X~'iĕeG@l]Ơ"!JU@={.'/m.*ӰA{e6v4GDkՒAb(l[ 8Q 3qKDMZr+T0Q`& KgN OQno8f$;'/-hA-F}xfUg\qʄ S|ag?R{y&^m _.ρIp)\Xxcs͢EloիWsՙ&}4zA `HOaJ[A[Dy-(ќ%FJ>qf6ȃ[ޯO<ùJ@.s<<SE"S¥7)4i›WEN\rWS|#@dyRi?" D<.1jƓ[9F 89&yPjꊲYCCmH;6^kеY5\J T|hR:7ʖʜgIT&,s _+4ݓJBe n"mt$𢦿yqv%b4z4ٕY"*&j I I|Zcy&c~-/X9TF[ǝREQGb Џ-G Ƃ1$ C'|JqAϜoK1q/Z`<X>TZ/~ z4JzbF2k\g6m֎#iĖܞ\eAUaZcoX.fֵrƮTbJ%n///Āuu`{>`ڢɖ"e97WhK߂}S` RD?f246v;?e%,~p#"~f6Jyw=GWUwr'46dtʩ3'}Sw\Us[3X^J<2\^ Q^nƫK-[W%nxzx3zmRGY <ɗ XȞYC'=H`"Xƒr9A&":) tftgS<Ϸpv$_)4+_B|,yʞ8a\kN!'nѺ[gUdB`t ԓ+XaZeN^50DxTN%ÀIuz$VT"/>)??%1_9OciϮod_Fu2` $s앫&@:Vp`2%t"@tS{gg&(]"{@d0$RI?4 %A— 1fLw~b?noܱ7"ώkn kڇO`rxÐ6!xamxèܱp!,F}7ҢJ ܀i/Y0czMX3li`6B  SZ3aTlc]eCey/{ǿcIJ|喭?JAz#~EJ{>  j=iԏ(TV|SO|ڥI0|ǿ}%idYݴrͪ[^|RoooN`4=G a`TҭhxHX_F3{ݫ Eȑg$.̓s]R )<7pȈn?ϗP5BF`hNI]3'=-V摧> ]_h0c8< h]/U]ZgI!E<c³8?NW^tiwX=dUVW΍˅ nU>zfoʏw?WL֑zRm~Q#:>iL걷pPHIר"0V-P|mJʬZ|W pԡ-0r\.]IF)hÜ5)023,#;*{6O^ftO~IEgP `,8r?򍭫xQG{:B}ٜ?2d^ }[ 8u1\bxq^ x{>>Cxϯ_uL]}CVߢً]K0 `F-V*qtčaHbͺ͐ FəW˦#s&Z zըetlc}Bh}\P3|uMgZCFzN%Q?b*k*"(tSi- ҳ-V1Z'eMxl`YYP^[/ohTU v$ܷ3>6<]n=Ψ*}^odB5jβ*Xm[ӣh%_"1A(9qjۘBd| wkoI,Fٺ436džM2S$b ʛaX4DLN`6:"XCt4ͮol7G <%$ ?c2S?JCz`t͝O$Cr'"L;R~MSS8fѝ4r:8-Kw^*RҜN4/v<=CC7{- Ӄ֘˗Ud{_^0^[Nwk HMj%=<_/: /}E"UuԥXY5dk۶]`R4ҵ;zЮ}\5Vuԟzrg ƫk难竧_٤=+ (oٵ#RÑ͜TvV R߶g[|}@Мyft.]^^a/4N:?#HV p,Hː]L8}dN:$;3"]}VYO:\儍bonn27<36XE5jpR0 ҐD,33h@3XTC$Z73ptx&6ekuH^إ!\ㇿM6͆-!YuN&kvScGUCC C~cEo>1 "5ZT\yJ1~J ⑅xͰlCWh$`VRePx|?VNwfop^}Nf*nO?M"k,+/#:f'*"YLyXI0ht'WdmHMk3ٍ4Ҳ$~AoQ.5>2rY|f7)I^thSNT'F\k4){MRYD8 ܁QhZ{Ԓv˄ogC_a7Nx)y8'8/+w\*iZ:jU@FSN_NGrp6O_&. Zt ?j;___uµo {cc]$1Ca&On h ҄Sל,|%3m/Z kF*s ޫʻCCݚ֥J|6<ћ?u\~gt1Y?iVC?L#75:hʶalE{XSeewInO=cZs4!_Y˪)w~ԓ]墘?K=~wx9ܱpF)oZaWoR4=>#O;_O' 7V@@DzV'F*w>w͊U+jʃw16>.KҬ1adYoLR`",8qJL%)pz ^ҹ6>[zX)ɝC,j$p%4k}8W0 SMבL ŀ=[C-ky(@^Pa-ՃUښ]2c|to"H Z%L?gll;bL Z3?<Mc4HDhpE8>^blSRRJ}g|IoMAPϪ £N? ?<T~A d"b0őzNo*y+V"a$#by{^sX-z:TG %*$GMLQR 2=sIT.*|gW&w;qy:=Vƪӄ:҉9r_ >W }|N~tols@>_1>ۨeB[;Θ6>xpS>Z{˨(*\wr'6g:ƒ+j09fYJ14o:[6rAikM649%F ʞ%2ow{{¡34r[1ydݿX:ig'N885yRn.W?'ˎ9ev6]eGK^;Ξr2EWN\:U'25@IDAT2&؆7 @)_N8L|1x8}*nm3/ߺ5YAmښ7w J7֌`L1蟉M0pAT\b4MWUIwʘ4-H掳H(H7f!MYѦwʈTN3>{ĩ30;xcX+yL,6#oń(qZpKeV OeHL2esH+i=NEb6bV++ڠ~R -P5Kx_qoԈ@H^MR:@&J$R#% F@"pTxA2D*GC0p></tY,OF7˛PLgqJ, NxyQ!>|~%-:2{7Rc! "\%,*G,+? i'Hh9gl,tˁM/.wm/:Kmyz:Ovu}b}{h :k&i?i9q;&RpDNha&-^aa/5kyam_i^ֱ=; Kc0 kNFXR5Z.e}:/ YcԡW UxS+;3xEgS:3y#Ӯ#PO'hGOLXu4kzh;~ָLq.u 8?*3No(ڃc{z1m4<@iX2Y\6ruןvڷ[3Ç5Ov7!A#UA77>ADK#9 g j8pC 3 ?Û<6c+d6Ьv}.ngMڇGq0sxEj )`i|!atBH` 9JJXatNk\on_r)ua\橀"XCD+sUBa?Kn.h؈pc**BkCyp Mg9A[|~3Ry#H Y.gea! #{^1'$. ASQ8XBE߆ۥAh|<g+t[Ϩ,}95giO*q;Zמ{#O$Mb~Q|wx_|/́ 4h,[Zx˗? ̏ٶckhimVUWk"{ڃ/| Œ"~ac"׬'%^ yG"c_uEaY̯3J$XxdD٠Gz ٠Bhcϟo%?C^z̢ν{>?+Y@/w\&<|xB 3S8Z\'RY|L9X^vKҒ!vFlސF,^i/<Ynx:RVA>TJ#=]&"SS+GD/,'c02Q*i@'oGG?QM[vnoh`v]M|W`p7\Sh:43hȼQbIAh@q$US>LjULe)Bl!lxPXN&x5hPVd[ՓRl ~} tUZu&s QkU 30T=0wĜikn߽q-{Vb(8L*sUж[Yz+/\1Vlno(nL8ŒT]~^X|a:i?|r[ 8ÕJ~ZgxJE=s|䭏/}[k]m;w-K)i^|B?D&GFҍP ˰*B;-Ι>ZѠGn"~bj }̑`M.%$|>MABj xlNc8рG#:F%JVB p¼0 WtTZM]ἓ[)کDx->h#?, 2Uq >=a:S誮`BBpV_Ѳ5M,|s LILwأBBgƳE}1@Ţk6/Q8ݩ0]D@,ψσ0:̌Qllz*H(Mki_1w+tjh>Bpw\f"C oLz/Z6dB2}Ǘ:7E lTo]-?I M'Cwc /7<.ϤXwbY*_Us׷5暫&t{oԄk~HBPq[Gw*s ؖWjE7 TsRl2S=Vv 5SDz1y''{5YפNuG?'N-_Q?h0QttڲpF_g5ڜD#_1kv(!\$\e>{XxhkVo2&aʪo?M?B&+sj%a( ?t8p}aNߋJy:؏3.,Ӭܳ>[g}뿬} ;li&LAgÙ"F !4hftM mW蒻E" r`񣇱ރAk}N$*+ m guy&,tˌIߑQ' "B8j#K@~4䗰VWo S2MhI}/JH“k9ubh1|/"Z= 8esTѣc ];9[!^'J ȋ9F6y13z:Jڥ7E2RC_լy?% eA{+7V|1Hh˓ă\rw:wc149-S2mPlT2r[EK鮎K+t䶦;-[Oo ]x|8刃@9OL{jZr&-OLH^nkÃܦ!>qɱ!Wo=61*aWG4L_F'i;ĩrcvliz!mRA'&}E|m ;Lюpz:w ' X1"@K3|pjZxqg}eùir_?rwyEMK?ϗC?W,Uqڋ 3R:r_5{jS_zzց\skHep$2N'GR xT ʝz(t q¸V˶xE;gP1n0IQF@-XYćGf>GANCgӎ4bJyܙ"i2b;"Ñ73ԒEK4jW.þΡp.ۣu:'d®>_p+'jN& F&ɬ0\.QrWHw#j`z!L^>Q3ŵo(y&g{tT:J~ Fm,E貛P肟dDu2K0 N"a+z o$xLD?4WxkD:5 Էo&?MZ?EH y}g=<ϾG$1Węx_chC_ _t̿_B14<~3_O;)a%KsX^zK!=w~tӶ-_Wm*'4f*z3׼mvCq>bjHKt%ÁĆI : \T { e;-:ϼ1w|~UA6Bv˵%+eDo(^ޥYݪ9mB]}KR& 'yU/&MAC J UGu66zYmj~\[ʉ^]U]^[S62uJ=oki.C'y~32VI ̂JL<0pii?piN#}Ou8iAѺ_GXg=sM:6ei嚸!!l%6y.QIۅJnb#Et>"dDM Mq*5Mg4Oh7]Ft7t𨬳]tt gFv>r]+*T(.A* XL0ɻj0o5#O n%d/Bzlbx퉓lGC'e,'o.?'2)>gǾ4jNN\\&ЖWH 9RyNpqJRtfɀ_rgq<{' L̴%:t@-$ D~މ}GYQj cҪIx{i;zm֜i|²ʜ#vJd 흝+`ܿ$qC3[*W axiq@8 N'BO8.Mhc!v\Iw쮯ؽ3ؚZr5aӮ9Sặyfh񢠱[厊nS[U [á:\HF#jhڜ?nѰ{F[i7Qeq9|gԔio᜾6L!/z&\xnfor6)8'iq~O =8/5 b%-45n/+^={^PssеQT2fD'o-IG/nj$ia*!4(È4 c+JFX[>fMk(ކO%@_Mڄ6ޫ^l &<$>_HƑ~ 7~< z!8 1JԦ;XVn sj]yz<+6 !zE<&cbXlʊE;.|3g#.FyOhTGۄq`eu:;hs( ]}uK'KJǥ&M[ww\qvMLݥN4qiFwi/^6|bN^Ÿn}ze:!-[W[vuSo?"v֠VAx&bHMhNkR-gFrbLgZz>ڡu!Zմ6ӎ}Pر[P][jTACXթC=-IcW [5 [ ߮!;;qD!4Qr&#jcwi^s$ˇ{bg` .)LQZ!:ALP}5)E^2` ׃_Y J#n,:Uw R,N)Xpe׿ }??|wV]5S3u`IyMjS?M* 1IҌQ]cHh'H1bfc5h+:qt Hv 0_`_ZŽp]G:.oqen82g$(G/8*;z&!ڭ.~`W8j,sz͆没pY쩚dJoN-h  ytYYC\+E*Ke28`˦DK|F+)(ve:bH 8;+ϗʎ!Q}85$BĜI^Sل7 >:xjo=}u)9MGHyDN%^j IPsiϳԳKTzq|qqi?up&VSahRVQ6T\>9-bypqAZrY${Nxl=Pk^E9Ҥ2x1~@jvL<񌹋X"+UYaCE(Šr *,| h>+ 4ٗ^voܴgY8aWKhBPN"dʜj|wubeN=BG"0aax8;8=.px$"gOXxs?w{ZTÕ]ikj;3oݺmw4V[kr;vvU47=)\raH&GyMx-gI/(i^^hE%̟S89G}Q1˞_pͭkEǗo}p; th\ ^JS>d4AMZ[z]}=SCO^O&N5T#ŀ*~*xJV3oh}6u a풷r4u>uLUWUn^ה$cYl|`PSϙV_yE31}ig4)x*zii)a!Xe*%V*xA~JXAK#ݮ/Sg-ZuOCڙQW sz-;1uڪ%)3*B4T&U,0{쥊.xf]<2tB E[@HׯRa|g:ԊODT 8XʷѢqaKxCS@f$)hV^Z mYY䄷AMkxv SBoTix%q(ohj4gxK6AmDxx>e1?{-p(+E<=Z4}$/ʫʯ~&Rav&a8-W)7V|6h~ic#{F#\|K: );;Fs~jB҇Z;2SڤaO :)|䭇jIUC8FEh[2!I' ,%@!Z7%x.)),'8%`1T_][!$~p[VD_tiaxz\4uA( p^]{ۖ\HxD^em.dQVQ"HJBqBoQ]8~MK43, U6WQ1t0*4z$ #g#fEUiR^`x&S:J԰=_™2q# 8hܼ+LqVvǨ+D. kGqڃ]N:QO|WuG3N }a9LO.jޣjm>S6l. ܷ^KE{¬)ůr+ v+a,KG8pbUEV'$t&5Ei=*5#wgvG䗽#1Q¯}Ky*6b=}]8n r|)@!dYMBV slNI1Yv*t].{/D8.6F7!U?ُ:56!~\IC% ytڋxi\M8S|W/cIDgVI_g04; a8;l^*zK^5_xmز[֨P,۶=N 9pKշ2*g *[sb1v3L1Ql 45Pn^;2UݹpÕ_k8㸦N;b\ޠזCfMs'7U.UrQdשa=ɮ^5[tL93^K3o?ϩ`OeG9.dʞO}pVh5Us6vK<7Қ\g0`Nq<>r{ᯧ;ql!=dI^F>ɛgmܲiCΫh*K(g{4*ӗHμ+S3M $ F0X$ $x0 ($gJ&z8 ~# #wMVŹBuuo>4I;?Ν: dA>x_pׅZ% o# * 4d"5x~n@O׆-Oc7}MX5z7kbSCz̛1X-w{ý5gÝ?ݧ])#aРs`;⦆3?γŝJ(χްhܦW.4_8ҨK|VZF2,9H5!G_j1ޞ.b3gj&o5Tz2풩Qi6|F=Zjݓ^yzܩZޤݔhvi]=kP+hGꫫFGO+dOf^͉M9:?z;de`b,t_%s:S'}/wok^t=(B0$xۋ(v+?|M6{N͍ԖVjUuf1SH0.jOy<(Q=B#"rE)t @!LIoq| .(.RݡY:$xc!oDH-sNS!S 0[xdq`s[>7,|gܙpC;o^qt6I`_#ߖo WL ۼ*[u՝ -DS6*L=:RS>o.]5\/Q]-|!trYˏ#<"󡁤y'8 z !wLb3whʉ iWXIF_on*Ig,G/& n@$.y^LF?#.\RVh׼;uwj0C&i=zSPccY#r•}g(;ޝ_KbO,9DpNiiʥpw1R;J;BN$ Q x;tiYQ=\q .^% Â̖\O?SÕo=^6%`ZFQxYAz&qrј 4E-_s|۳FZC I!|:'2MRU~(S*HРnv7 sfSO]FG-jV@?o n jJlG9vw4h؝2\ 5^[=2<<ټmַ#t{>Y_^'FZޣ8/TT LCz՚L{OMߋ_X/n#Sin^ K}ՒeKlذ~RO_ōbE/I+93G)*?olXT@FEoЉFRic&t%gV2жk8P4iQ*Cg(=w#!j|*8UMLAe!C6LaxS3VbF"8xZL3d^xChV'-{=|15[,EJfeo>,̝3M*M*v Ǘm l <#:U:N$TPS?![.>Тwٞd&(9V䞉EL&tVSCa+hyA*M)WOW(Y'((Ks/9mAݕ˛®Kq6g|M\|Q"l#5m8+vo j'X2Wv*Ƈ\!?XoMT /w߮d{' $T\:-2ދ/)-B/{̹+%9= x~4;~qY&bbpW?}s+5 65P'޷Lo}0kBFTСprBeDM,(EOQPL[/)b*sH<9|s seÿpQSm,c)Y"HI5$tmP&SLjzz<S!u*gf)o|F+5;NgՀ\z͒UCÕ_Dn}׽YFdre5#sfX6MQ=(#K)OP=衡Oʫ^0gj p< w0qiĥiB|Hz#w}箉\̪mX:Heƌk*F\^FܭG!@׌ 3r# UV*D$~aқM#ذg`(Z 0z ?2A62"boK"?wxigk 7ebTcVN蹁DkAD/ MvL0Bϑܾ{87*5jr>F\Rs6yvW'L2fgV<[‹״E-]zpQ Q-`rm<ړSNW<D*hT<_*eӍ٠EEGQtw^#wJXm#9ZCǐ(WœrNZW+ pH3|EnnPʑ{{@K o\f4MaѺC0vpȢ?<c0veMeMCآpm7=|O6a [$o ^@dQ!zUkta\k8mPԵd>4!` XehS띑)MlbizJd/:'5Td~ e㛪á+4u֍ z%?Wwm뾥K1dǃ_(s+}Hq W*8hn\̆pu75O_moφ5əWM Gm6j99Ub_̦ `Mn4-/˅}:xcs5_%4 *mF`Ld-Nrs,XˇxeGe! ?h[CSʆO#_tz}l{6b=wuhC! H#]FlLy+K`\ӮoF?UH{C,E.Q83@̕4c{}ʞԞ9pDŽd hUMc쁣`prӲ7&JT'8]͜($ jCReVO7_V]?~?Oۮ;}z- 2$.eǠ-qDUmC"+Bf_tM@ 7}1ժ]jlm@Ъz&*{CȑIq OTE3%6ڶA-F*cGشMk|RsCWnPû.8DSm5Dj2W`bHMim=Yw/X5qLQ9/AߕK /IGa#@!V}xGskfwtנf'd*0\n"FEgg%=d-େ!8<|3:E  =ls {z> Qvrby1' ܖ|=!DƶFϒFr"z+H{ 2MSyotA>-U.$J:E ôD%n@IDAT&jYүΎc˵6sH(tRS~PUxP[t~V}, mJyR8RILsiUVxY$R8.,hq.c4hf|Ǜ7nWwYBT*{~wWN giϬ#)qҏ(G@xICiA¯ׄ x8L}ƭ/<ny3mZʰ8ٌ7V>8ٯP^t\7{Z[h WD;_+ho&55 )`oFaMh]v^XVSY5~z}?n qCoP_ש&yzGYCUX&W;g+T _<{$u*p r8Ё<=f]PKHdn^[׬Y9AmʾC+ԨKzj ? '=%DkrE B6,x8y(W$㏾ +,4{0UtBЍ,ቕ$>{5e:lSH6eL2o.K -hDTTRsqwm՞ ~]&ِ͝jFtzګAiHOZ4W9Iz;QV<3!V o>!I=o4-uSkj?F#:+dPI*4>ynOX]. pJ#ٓ+Y$77`.)VaH 戋>A]U*H@*TˈFT{^h2vNȆ. +6Q'z ?;諭?w,!Rq RG ZuTkZWE{TEDld(Bw|<_|xs`qTZ]?fIá1j!W=i7EnW,/tsԴ3zlV!.H/Qu$P:X3\%}E'[t3Ys;X7]uݦßJ/эncI3 B?4b0il&Q?KZFՈkxtzu8/I/zI'ry/򊴐;GxR~i2G~8_WNۙ󳇅aJ˩imQU |UD "/Y폞jZ*t&3E$Icg ,qnȷ/o],U=4u;}w=@$z -7J@>E|OV S+赻[Tcna P)U zZ«^|v@¯^ĨȎ03!VªkA_h< OxB>=/OG>M_ڪaA:tMsl[zǥSNL#D,EME"QY Be+P,"מГB_FF*=._+ޒWC}_LTuBFq#Bц#DCF5BЁ--k{ȴNJ}iQ2nMOMumըZ߿ڟJܿ4/#h5WC] /궲M={<)<4bG#O;3i1t:9Gh{]NSw: 򴝎tҪ摑Ӌ^.|zsr"vn`3$&2c|u?f4{>4KDž*:!1ˆj݄1?NF/~+KXBVƪgRk@`~*OT]444~n~}󁑑'P=aM5|^4/9+QtE%\$( ” K7EmPЮ{ӍmNiצ[y~Z~nmӥܥNaѐk=0jRBk[ FG m}{pgJcmo:)m߱3};eGQѷQ,(3tԨ =5HFF>?YwkNa&}N j\G.ma}-ΤVD iMTDG[sܞ~ \húbf:L~xj]1i馗寽7x溩ٳU )? (BZt$@r'A:Tlwi lK!pA/ 3FaK!*DU/Y !ptG0Чam.ڎ?|M4Y+boGp@tpu,]:a:=_׋L7~{ 7zzf#ԪnuTiE3dYlQI+88Anno腍ܧj9 Jըŧ!/9uàrPWo|U:Ew+W70nٮddҢtN'GHf|Iqx;(f't'љ <%JY=cf '^#..{] ѐs);oBV]٘:4MԲXUa,ˮ?fMwg_ r|_!RBxׇ׻pt7<)27Jx z1H`/R]hU#P|2 ~/|5?ޱyӳ:[6o-{ӿQOXȵAr福7K*( 萕ZRI++)8+Hj6}jezG/N,?&gb1R=Mt#: 0fV"~ hyƻuU>^sN}p4ޫh.Nd{[u8wkH{I٫Ep]v3ݽ4#9Jv]%6ȫ0|?vtCzgck4ND-ӦzE""glzymw Fko8 mlLq8W*j{)nfV-f³^xֻZп&BehZqrOZ#+_eݐ>}=nuA.֨jF}#s}33*l ]h5*ir(,j5m%F{cZGMou(DSg.ě-=&תwH;nsڧOO{kV]Ě(cx`y0jVs=׾_^y֭y kjpք.Ш\Ss|*"QEFͮÐaXTt$mAn$X WenqtndQܸ 90xP)eCo&! ٢xGHFTFGFV}n )&ݨGFdq,Z ~ܶƧ<ʎQf}1;#.'SMP2⇮C>,Vi kƜKnp}>Dynv3o6hCHELo՘7Y4D"rcRXi?tXUW^uST&B]m׻MlՋu8%O>44}uȫ1XC:\#ӫ>xZOJuU"iMGL:qxp+&VXN$3i&S]F=Msν펛GNs&uDUj) èC"^©JeXtxS5W`GLmuo'M_B3#A Q<k&yPeBS9]:E ]ڢQ>a@ 9i&} i3=q7>*fH:uAV_.IaG⽓irtKz=D5Y<9Ɲ3Aݠ1Q;<8m,3:A": O>'nHf2k'P|֝9yt.!7($)Oa,*oاڿh\?UW |QuW4gLz$gS` H/߸iڒvn%9qP<<ǥV ^Xf%Vd-&{, kHeBVEF}toN/{4NO5}k|/"*c;GC 4_38>M_~tUbT\23t5∍ڒm!J }scS r]:5wI[HnwfE*'̕xAc wگ{֥[)~* ȨTפnhol;5]~폯cki{1JUscTa)] '/B'oϚjzC+C&ѕ-ryBVyȻuYr?#@rQ7!eZ \=0E d >QS\?܊p!C՞,scwCfg{c4 ~c 5#`$9^<_k}uӃ0P4U m'ҝMG1sOq ӹYxa^~u^E8T^^A#t/%mT+rĔDzg^uCt ܾN+Za?(~[tZ7}w5[G|+۵ =ƬI#{F1/錝(\1qLs8Ѵ@d7)=<$)Bnv0*18 8*'%-tŋzf\r'Ҙ28v}UnpFAX~7aR=BޕԟWiī d/xi곟lw{mz؜. mo:niJoO:"B3]ˈiԴ )CRudPLeRFkgZm,}?uizNM?籚/2F֕i ٤yC`aT TXע \6jUzOzџ&m}{5|^`u:4%͔VϟמV>Y+nٜܸ w':n_ j2ѡ yϼɚ%'6I@ ܖVoH~ߋ =b.NP)uqalnI۹S3u:N@F&.oWIU,"x_O+'yݮ]U/X%W%aH:nݛnj~זmߩcEt5=cO'S^mu"e$IT# Ql-"α BȦJs4Щoߛ>rC[OOtmku%+cF0W=ҸR-kJݝ:iNә^zVlwCVzي1ҕpMc:U#~zthצ3-SDOWKɶS 6_vA-{DXfw^@Lo`+y]օoyx36mܠ=Lu ; iDC^5?FZ-7rDy 9h:YW%iaɂptu! :|w<0JduId=J; :`{fJ}~֯gY1hc ;*B2MEvZvd:JO?3_O3N;$r҂tb5: YSj:b ~y[*a2鈁JonYv :n¿i}Ec.1?t>|/t/~#aU\.xN 0G~! n=[2Þ?U~llH{{WX{kS`Ë:7чVwsPY3 arA ;$,\Y *?ݩC oސzˏ!=o'j@+9b9\IJ.:&d+…? ,PwmKo/o+}Og>4Lr!3]q@Wt L4~g:\'ʍ/oߘY3XOg[kX)8FwJ ~Vs NESyHWZkW??3kJӃZ YPs:Smg^x+ 7 a~dH)3UPl|:r|n:# 1mL􆄟KN*JGT:DY59.ȿb_~1y)ձޛN=AN tK#:z_; m<%FKR='= OO=4X*.â&=MS4R+<| F#mH&")ē2ri9p9.**st[۴HU?{0}GcvNq м} 7vqXv ; 88nmYh E١Sɏ}:,ڎ֯o0`8=p*Pj$B53տFiZأWSƈ=+?%/33WgǫxG=> UUzQ;)VUh7XK:\,>w3*Q->T{CE'iP)jI \\@ƒE%cI6 S4&;Fq& ؚcO?8K?۬8 &o/bRˀ<1hRozٵ.I.lK}4} XlݘC9+<=EO[t=k5 Q%7ϫyۺ4gN,hH5v7UN-4$.G){=#Jugt%cuaKfuX/NTe[hhՍxw{Wcvņ xXd,ޤ0 DQĎF}n:uFz4RgQ` PtPᢙ9m=<rYvˏE`CaȯGt[&mwmL:$5 dƅ<A OAQ8ݶ I3bG7l4@G+0W;:Y;t {K*)l.Q^y6)t%@T-PѾk/Cˬ[Lf>#m?tM{ɯ W0ſV|+),SBv}dz -dA$6(W*^P BNaJJPӖn{`W7nI?7<-ϏMFs[hr"Rjy3vδrݟޙ>_ןt NY,,dVw5lsӥ8MoK?XUzSk0,3[pIiODSFu`|)lL` <ӑթeVK9AU 9l]v~ԼtT:ߥ|kKF{O<|Q)3/j5ĊZf/zUW_ꗽWoظi7W{SWbrWQ ^ D 1zP<](`))->{$N'ӕu9ٯLmVm\?>w{<[hHH҅-&nD A"9/K])ӯnܬY Y"{&Fݿ6Ɛz#;{󠳥݊Whq Ý[i7)x'4h\Y:&T2,UQ7z[\($9uLLMCN4ӛn,GEB#|_E86`+3[CQ] Ȕ#4 KG gh `qM'p_")]#A[ށ!'OqRK>Ɏ%!l~zGzJ]ZC_ISo# ^2ayfgךrjJpAtD\ة萧t/W/xΆv醺.-VQ@oTkq  x&1l/w!Cn*ѐ:mZ=aLڶ=MD?m:Ɨ4CD| D#\wH7!7mTFbß;B w *LnqZUwww1U{ 'w/*^o^X`p Haia [b|~q4+i }G)An<ሂ掝<'npXTeƪ)}?fYSoM_.S?곞N(`"2qm"('n, bwJyuz~Nޓ._kݖC Gc"{VNش!d`ix1i؎khN5݌hj[RgSG/ %ӚNZCeaQ%SѬ/FCӃoH'k1ԝ }ߜ~S3|*uK6elsTcĵ~+ >ҍ.~ nY6hz]y#D2(㜗 CPI4h1&Y?qԁ Dl(]Di%xX?sBdt|E׌O xɃΉWo^С#mnkY0#sc@]n$L"G>4\gᑽ!ޑ>ӵ Mh@: 2}!| f NGyXfp!*AUyAsA8d1M{09_@<EVApb='|P :z9'?KRY("C,򀎶I)6=}pϾ+& f9/`x^AqhTeQSVEBS0 h ̈wI'5r<+=|*+oiт;vh+H:0!UYWvV^/ Ũ)˂F F( QckWG ߧ~swKS+_|ѲxzQ/rdYj/0Qc黗ߗ˞stzhxoڜ.Gqt<̮hf~&eTp:NZەuܽiW.Iht[ ʞSZmkĭQH&mIN$8cF#|*w-˷?'qVo\s˞˿so-M ҏdrt z;|k%?#6lxʕ(sɷT~!`'0VR"~Se \y9o NOrڑѕtFMyaP8m7YEzq*"dpgp:IpoIu*xܣRJn˲)mP)䱱 \$A(#:g5=x); lZ#̴Lx\~Nڦt%.m,FwҨ+[B~BO*xb;t ބ`YBzҁdq OwDH}:ץoL;vf'1*&\Q:N'?*` |+B471[2 ϺmwJ8SHRuS7"u )UءQWiևyQ\]8>UzjhpGb,J eX0+}WAc ]Ϩk5LV$eE!['(@(t{]>=zSܻ^ֽlRR+ZrdPyMɅBLjNÔ6k`ܚ.u:myzř4,սBu2ksWpS!=AK6t 9qK:t|[:|>˻҆]twNMu5|:5&̆E˕{Pz<I*X8`hԗjv'4KZmh24g֡oKyqP5H7֍'>񉃮OZoZ)̮N}."<>=FݮHQɭ 1T$8ա;2!-O>Xkjv@Gn˔ã!?$QY\. 2YFKk2-wq'?nNr;ff# cqn䓎Z7O'? SsZI F5`K#l|"bLcxeZUp p(kZ>p3ku7^pG޴L;wbwODsxsZ2O=oh dze<0B/! 5͝XٙSk#Fo._yJCό"'zxAJ:-`š6KٸA]RP甐m{qׇWFV ~yW+$kz% Bw]+%V%# {"MXWv{_[n9[vztӗnZ4k7{: ޘOj#d*O?ST"/ ((Rnx\Tj_yOߐ~?rz,҂f!Ja-٭9`e*6vNaʌ ڴXJ%"nRH0eJF &s:h:qټy{v잞ljkhowsΎMi^1F=Z{vSSoٲuynRwNJmeʍy$/Ȕ0aTzDOe)(m}TD јWiUL 2JdѢ2 P[`u*CoYi Kx<;ƨ@4i0/Ӵ.ܪqҁi.}gFw9̨w! 1dUċ.COd'.z!yШwtl ٭wraJUjy4 aFm]-=:uJ|/WeGoM)>J%lBcp ޯ ;< ^yfoҌ@3ïU׿N:Q^Wm;0<2<:BңR ._esnܖYZ.g툷Y`Q24گUHvML\t{Z+y/9Uy~﨤!l$j頉XC*rP1٭EW=^'ؓ>g>~jѰF懻 p˜"~V1ӡ4wڝ>W|SH/yI2tJS{uf΋zuwm%1RGU#uVV\NNA-;3(ŎXK2KXtwɸmXM?5oeT(k:?BH"ZRUVyè1~lݺͭl.{.#0t .t\D/KC@Wxc2Vx3yf?0C# cfQ$\ Y>zX C dF!;e*ю7Wz `9ȎotCcA Jݻi\O>q鳐)#ld%xygƤL a6S N G!KaS[dF!1-ps@)KFs|8@IDATF]~W'5:#GS*cms6_FG%:>̲@C}!efɴMˁP0PР[72ƕWueu\G4wviQU$#aV ݘ7u9rPHgoDr2eoMd4"*c?‹CЩځ}$UZS>B q^.])%]}Ж 6h]S-̧zMYӠ$M;zm_z=jԵpMi~07Cgv+$sSȈSiBOSc: rpdljcqƒ:gAzKŵur|S 7 #˗7Iտ|gaIVUpJGWTn_rOq! 2,:U% @fI= + BOo2!ak.!o+S8cčl`})LDQi84{)KX$W! ֦ ,:LrpgFkb:'IJsEkL'k A&GzQ m3=!x*001܁T (ߦi52[*rף~3CʮeY Ok^Nې0@T-,60Ӽ΁YbO?p5|W , eD2.X6 hUN}h³=M鵿KW3Yj5N@/4 %,[tR(`mSk?;C]l ǡ40´?r u5۱jH]w=juwfIݏ xBuoՏ- ј386kk˨Gh`bNYl;䍟7x ?(^3 Ft+־Oذi7m^ЬPM:UiD^:QW \~H0DI% p:+ ^-*JCoe6\Tt jzE>D@ <)Q8 pV#I;|s|M3ɍkRD|NDiݜ؞~vVN'jǙ~t1%"x#s/p zi+7l#,øB~J82И8li;ǿ|WNh͋Mˠ~Gu 0k r;+ /h>٩la]k$\v:Bb>ˡS[$n/y0+?V5amIV^STlpثGƌ*LW`U<]^uGzWkvC.ԛapW[uN+Xޯ.Mh1hvFJܫĭ٧tZ-jSæF=ګUӮ_I/kz~۞|aR޸c4jSre QcJa  1Zުb߻re~B~/ӽZ 6G4"%o=Jwo9 ö]֓^3>k?wEԛ잒ӹL=q8]xzc*ׂӎL}1Ϗ>s "h zM6)߫ewhLKdۣq6|S=Y8h, y!y0=nFs9k14CF*'PI# }8y)MG᪭wKU5qڣJ~) }o`*\{x4[;|g+e4E ݩUiic%~QkTդΆ/LwNMJ:`(АbǍ=';;vF`ۗv$^(x}Ґbܒ!2TZf̌ o'ҍѹ V˾_8B DA]7"Nnв?G#%ǏY$ r0 A+ʴ >Ér)nJx4>++aHX@8C,g{ٝzuyr{ܞ O=iESٍD#MZ.ʻCc8Iko?:nGݓqʐ7_FhK6T[~xt?^~v.3?5RsƧ,%*yEڊqu[D ,  ':KS읺)-i uHNP}u?Xhr'픾e#BV?G,\;00pPi/1*oyd#sh/oW Z{UakWhKx"[ +< 7p3_L ]oP5p{] 3oު_b1y^]٬M51Цje:F$tkZz_tؼSju'JZru ҋytzVRC6&XcXs!qv $ +4WNxKA?okN}eѯ~>u޳?D $oRd9YDGo jXhfnpKҫ;Y;,}]Kje>໼ׄF)pcdF b41[rXgZrHw-#Kvp# yNx΁ۣ٘+R4j-!T,m=]E5m٢UF)^`\T}CC<];6)/pBZ \Fwk(WJpUT'R$W9y< K'ISW 0^}"*8=#z?m~ !6$-v,= >$#At\,@)C٣&v-$KXlbvUjNi}(J/jO XZ>C&2`uD UȐ^t<5}?IbM#HvEQiF/Fi=ʗwzJ:);mUYN]8dN7sM]xVD( $hM 4y0E֘W-۫"vWoh+(;ԙ9[sc޽DS_A]o/z8#>OCHOUf̈́SJG2*qveXJ?xWq ^Ɯ9|gko:T )7MvjvX:>B2Uc<5’^.{hzs|jKGO=57]~æ\_߷|?-\K@Y<0 FIN$~-!4}/jKpz/YMw>'=紥\ZШІlx`^`;zo65&[z߅wsUSz̖UqҨz!b^kNVE{aݺ|NZnwz`ǐYZXܥK\NH ;K=|>'Kh}:&:TQi@554]pvrvq5&!R>]ISpZ׆-^o:U4GT::Tx`YZ re$q7sb":0%5Ee!C \ ֪`Bp\4@41Ψt01ݰ8i4Y^:66:qWXЃ С YL(.OpQ8Qo_s;wVt}ӐQrkxn)1j'IH7! 4NYqixaxCi"m;vfmz~s3:1KztQvx5;V<;AFڛC'E8,>~s?0z W:Te>})v:fGM#\_B?A,kțgU:mrjĿw`eX"[`0ث]޵fZE.pN8| L=«~1U\3:gSµo}z?0QηԦ /pj1utldxK8E`PPM k>wv{:D=޸1-[ґ8mݙS*}b\d:{t 2"CY]7K|ۚ-{/+S?K|~jz RE!OS7xۛu&gޙ/w.1}kŋҋunPcAQLSz 2"jK9^T s\)KLkSMj G;;]㖴rwFD[iחT1ktb4D5V驎ƃfsPϼK.- 3_>7A>֭?(tAK 8S!m2).b!rd04)ά\Q8DCJAW?pjy":84m]j~Ky0 S cS% ~uD YȮpSWA3$rzg&3Sһڣެiu=kh:A`:s[݁T\a䆏tGn +W ??̔g(D@(~BbfDuFjK4tȒ7NNL=ZJs3ҋtۼY^Fǀ)*;(.t wrb T`-ݮ>;>~qsJ]sV+?Oʞ]QR=G&U@|& $.R>;pִJWΟaFlst[~u>y<2aU.%Lx)y"%GE)`犰01eMp|gw$=ƂQ9,ni MwNhp/qc oaK&Ug~#aNXk͐6Ŵ8Ak=ǶWi~ٚ]?.զ}sl']$ja&*ަN~NXʡ Bp^~CC(e=A-}QCoI}t w> NJG @.Jnҭ $ǒL*Ďx ,l!V iP#>dws +^'9NOqKK7w}LO`G/4l .v(n&?1T>.x zS+2⮇#U*b- zP ,zϻ>^_j7 r+"Zi}Mr* oQASE葡J׬]]=:6VWj6Ǣ_EDӿrIYۑ֬Nn٩Fr^:d^V ^H#)5#LFTZި3пҿGȣvΞ !G+hmqrxy:O -LЉ[";-b^hѐzYF tM$~"7RM?(էVߺQ# w;6ٝQ)a>=oZ]sG#V]QIKҎCHߩe)QZϩ.Y7pq==eڝƱs;O|˦]Hm;clM0<qtkTp!#^T9!*rY ` #~1T~*@0px<_kܰ"ap!Ut}Aaa &DN: f24Ҩي"}aX~^4o%(tfOʼntʾ7Nԧ]pžvczXUuA{8s#b)s\iՀ뫑LaIoK~}·N}jw UfAfJ3 ip>y~ 1Ee Nc e'(Wx9+nIZ 1]3J:MlL#>蓠AD&ht'mlxUS;U\+z[^# aU! nOڼ7?*LUFqW\xMO-\tWOZ87C4MJPs+ύiGQ5KuU2ionw _IY<anا;Yc{`UyGR2@R!hF>G#3kc-'x Z,3_AGCP!ϵ>,Yx9'?͟NҸVx1ԭـܰRM, WgQfa$ t9(HVpjS@澏C" ed$^5ܣШKҜ48ژ_7.fsڍigP򏽒A:*d,t,Id?y$,.7Cw5S@YލJFZҷ{Doۜ.legHxWT:ԐRC#4> +L]769 M[86]C˩o6`&<b?л Sx)~1]ف%aDUqv#gB^/6 PL!XOG _ɓN=d/kMNumqێ#ZV梡`ѱŸp)]yP*:5]#WH'ԙeOJ'>GSQ[%m5{'[ m[^6۞>UAZ;,Q0[ (ƥ^FitddI c?q-GGz^S`+>9ȗzɩ4gG-KnYݸ4%W5v/SrSWkT+ONώF+_ Wl3n}i774u*1h (Χ-sw|RުOQ6(Voš{Vv@mdKUuBKD8-4«Ssz}TӒ>{߿\t9(w{/Z]{ XΓ8 f<CnwG* 2΍Йyago޽s:belbq{ꞵ6Qv訲XjMD<*:  Nr*%v4(o:(*y9z<_UC:.Z+Az[ 9ÔH{D9}ܣs*_ЙKè_Cyiw28zru)z%Sõ(8E#u?WrieO+ iWY-rX_I;;"[\} eKꬤY`CЇya8C ][:]bHڲ4VqMk2xVnˆtץo^)I3-m[*g'=C#\iSwjF5r8t Kb)c#%#aw*:Bxthl>YvF>+_k~::^f ,r߆X@4)#ɹwY~.?'G=bd-HN LVQ^6ȍ;#GJ !P1J>ݱɈ{yc7օr@qa}heN&8=;"lPtǥfꊨ܁!Q s{*=P6o;JGoUk=@m:Gf{]:t3U3C:hNrW5FGVt9!#Iך{HEqs#(M9"&+#AML2Uա͵"t#/eCWЊ''HR$jk H:?qRy^"rב[r Z(񘂷MTq5j+c59tP9vtZh"aCc0YyϸߠEء% ~L7MNNUs - h-q 4xxN'O~SFoӉ_)OO`/'iN'N,6KsG!oqm:iwq,7}=jP8Gμ:fݓlqgZ 蕛4:٨ onż?rYVҝ/yfx|Y]ڜs<Q[KR[a.LS":MLKZbﹱ{?]~Z~_nxMv+*џYTh΁pTxFWձo|<~Ȍ=p`ٻoḜ7pt$_cO0dYbgePϣˆߞܶSZJ Cv:΁ڳ{P'X='…!:"bI;]'f\ Z ҈}(Ȅ9'Ö'^_o.!1HlGȲ]I[Hчzd8oNL?Ad._D? (:Cˠ2[De *$ēd:.E'VXqVt?j xeZoVf5a}ϖ$WxNe3kJm}u*Ri ^A]z@@R#ωr1&8s=FR#)t@;ُB5nl`F|~&/Avinu?ާQ+&#}^eXR HH _ҿb~Wbd˥+DguamBZX3_u6;pV' ݚgsQ7tX %">֭ס)3Y%gviF&-ֲGޭFH_tZ֎:/ceۗU,ΗC(>VV΄'מ2thD4O}mo|985\/u1-[sm{gZ0xkФvښ&ݘ?L8H5mɐ%|r䇮׳>{}k.JzJv;MϥcAE:UVsX@JT idĵG2VY`P+7ZWzh.`\<IzՔgi g~*!!E|n!t%GyL=t 'd/W&@yZbEZYMX2g;VnBQPFBx zs"l9I\c n;q p] p #L<d/r$:N~QYXW/c3ɧ!  uk@} /rjuZ3X&AҐ]D :ӈJvO/^G~Ӟxf צؚjXAdm& NFDƣ[!L :~hDað 嶝f>|Ky>Xcs7l\W.Sz69ͫ.`-<Ќ3\|NQo^vma%9,qWI{r8kmy\o?U'-Y>&/4q IHy%GOO ZܔuȔ 8:382im%'<2r_U|(2/B@oAuGr;u` POSvj Qn_s[ڦlid|7$r"9Ieb,=LaUYdiB4Q+ʈ%:y|5׼hrVSv5xvчi_12#陸z02,mTJf1N2?1O7}l߫'ZTED}E[J4fN'л *\S2::@u d}٪-?;]AHbJaA`\tH`+v˴t}UerYSDiRf$\@~54"-']dS!߃̬6Cikd(J ܄z|C`lOTitУzNl( Xp"Gfz_j8/8BX<|A ;<%TR[M^I;9y啕*}љDg DWiPm{eꕴMN3S==,T{xh _'BҥO:ISɷr2NL@yy"Za)4uߍk$"f|̅'vǦ.6?L534d:|^wlD"F܎I /} y86Nfgn(gũIp%7E&0rfcg-ϕʵS1.[- G֏FB&-m0lOxQW53ڱ/S~?/==sX}>uժl \_6nˆE x źn^]Cs:_WV+3N;ױĐtRȊx?5R_1{[br&lP<`V2|s!UX2)[I灥lHT۔2(/<^v*qvAసm N+ik El`Ą ў<^fW; )*Olz. 7D2B #3!&TJ9SaZSNuS YIpP"ڄr*_/p{`j ]T)@"̝/O)~BCޗ"|f~RNC>ڡH:m„&5%)+cHy7 '/0@IDAT;/!l5rskV(73:*Rtj+r ?5z=S?Q3|c)"d>DhaiY:"Po=Dg>x戀E4ɦPHoşN@ fqиyn-/>Rﹰ\5qѳdA-VgGv'VyqyFI'>}W߲Cԝ+="rt?տKP ,׎B\\/ך"xDN6 p0p"֖&51?#6yi>!#+@!-'H3f JR~`u2‰lSڎ\HJI:ETe##ycM^[N  !&5]_mH`L -k-%X恡}O!m8R=Vڃ/ك.xsM}P:-Sns#6gw;٭ BsJis/=xxP(̳=cMф'>f>i>+[\KHxK\)OxƉϸLg ]n]xqWpq$o!&nKq㮍|Z=-,i[|/򻞟g7oݺy::T(NG~ɺ1.lb4}ȃ{?~o9RP׎ m4^d2Y<ٱg:rKy_S~qg'?AY[4 FE1rܣ)18.7QH> ={Z۶k|cuv9v4)9CZ٬րdTa3s:!Pdj,S'Ķ `Yng6~eO YO"VKc<ȻXd.._}Z[.Ku8t';}G^7"&3|}ş܊+eR Aw0Y 6̯k<:p+M}US cu/`*HpZro]1 PD_ /^0\W<t)`gP1n՟t*r(vDWAX6aAR uYk3EſОlT?_!Wqq漆yXZ4MU(>%\/Kak8xe#ꯤ}>0wОJ,Z|v/p P.zA}`Yxm=]M*OgS' A:O}p)NhL1H7`][hoAz]L餰Bi @C9Ֆ0'=v0R(8 H՜ugU*U#ڎ l[UPO"Gg6 #Q :"8\=P܃+ h[pY QֲVOu=M^$_>^u#:3zu3fg!EI6t+=qEf%vQ{]WhOj'%`[XRZ6]▣?ϸӦfN%#Z]g9xLɘ1ϰ.oklZV_+ISs;/(<[ύWj|Dt/ʅk~vщEnjzN~?SP~乏WҴ1F嵘ndɫT(D$Tb3 *0,s:?OnUʔΙUmZk㚑̎N_–:TqiI&A&|=[WnEf5c4ēSv7o8N=7psVˬˏ;:ptºTunFԹYe F,5?m  |H\Kx ;<0b=3p\6%X٢pmSlKϸ*ǎe*r0#68),U1$/`` CUź['hSIo 'zSjZkRl 0 ړG(0ȋ5ꂄxeRF:tT:֞~;J| >8. gJMX}Mc|Lwe'A*yNyۏ [#릻[n̄e'8a',w'&t3q/i18<"@ ab[\p. Lt_:q;Mg]ڼ#!)T4O6E㯍I:s8u~?l)SC/Ѩ.G'x/`yƃO_ODKQpU^m44SO>25yZuPǀ3?rLǣ;1TNy?#ºzY )9OlTxΜEi̷q2>n%l\9{;SWy>8WY X^pT5f4a# k㌻{[\CeZT\wV?tʑAUȍ̰{"Q(b ηQ%}zɎT</LS,LZ_&=QsMą2 ,!Fs4;Vx!eܶzeH5]jI̔C5pvACeAgxnkp7xB#zmV8p*EE3A9' ?ڰl <iÒ7̉c8p]cZ}b#+tHĵtI|I*ֺVI\tjy'oK&q |OXҴrW%.SC}.LK܅1tHN%+ke&M/YS ?%ͺùgW^=H: K+;Dm A'A Kkч_|t9dU']~gyO>/|_y6~ЇlȪ.;27*&lf'vL`NP {8y4ItcV}1>Y.H7UN~uǴYpJjջp#Qw!g/&STrCrRU~gmQ+Əey/fQӣIYm@FNyoj3Xx##^9uУޮ< pǿO;v:)S|X?D\;]C-ЅV_;X;!1/%kI6&3rLm( x|EX9 Q#Bm >W`>"[$pdGٔr]apգ4WXyp+՟錓6eo~d&S0%Q-,V2.&~Oޖ@G!s)W=шoK3GC' |fi4"g-W݄2Ѳ>6>w^q-[/}}*:9w9n`UEG3 Etygrz5MϲᎭyͻʻß[` pfL%v 7=ٻucQ,/Ybka3G7 p9FtyG>gߓblavYu+e (R󏤳U|t jk6ߒ@狼A2{DgSm` FYЩƵ}!_z(Zgehy쬐9tDuuqOR h>2;?G%ll|f231WLR~UߚGf^b!|]<wq|wq+廸%\M[)Gk{{ioy5OiB7ߖhe l#ZE袌$,lzZGdthrzHq;466:CkhHS|T'buxPbQQ%Z-P8XT|v1R9 T\ʻh :(Ah3oڬ ޽&z[y+!P,Yv"{)[P`XM &i25JuNX@8>1-8ˉvVy?|OuI6ѢFIhʦ* 'ЍAȴ!G.aQ= ;Gb|׎g^+6LXIX ~#: =e JyNO7_u'&&=sq ! BCtiw2ONYVKb:><#CC/P'z\_f)3#j }Df։r}ZžF3`@v!SkF?ܘ]ŵxƋTNGo8G'.{q;Fyʣ/- y91uQm<rh 8 -+il׃٭:b&%9@'5N ,8ORҋz`Ć!J'6h}AUttat^>ۆ&ye9}4,Oxwl8%E׏^͓n nEGLstGzJwk:AH` eȫ^`+-1Zg.d4 JKVv_\ qM`zsS D#zʟL[(]11t)Ϡ z}}`|MQ뺔4‡SތM.P:W*MU*ti4T3icpɓqgޅπ ѵY#,}:-''S6k!q$Mg8rƶL_@%]:{/];ga+trѱy ^79 :Vg ޝqv\w`Y&% !-/t fE-}8 g`Q6l[r,.oWG!¡R`^8"")To琏m? N+8pDqAQ"L[וvO5BD@-tb?:tN0H3!Iכ1zkia3JzG Yj{0:eR2>}ET/ ,`Uį&kyt+#O'>qOXF:ɟrt]x7K%I ly D]-8#-[홝56u ("QsFNOpL s3 y\+6 IVmsG!kaJ+ >: LПhmśU ڤ~Ng{ٺkGn;ו %W<38ud|X^I;p}X9`OJES)4A;Zfg^1y߶[kEYbǨ i`旋 d>r񛰌[\N܏ .O}{^orϪUkV53ۻt])8&Y~@\/v3 MFr%a֛ oDg1}::K!;ۡ X搓vJv “~^KS:{Tr8:~$((LAo-H< ,3R2^ҐE;i *p}[`^Bn5ۃ`#:r~S0؎Tf@!x<uQMȀμzdWҘjxDgslnGF3b-$TdQ=pw7,)!-3_+$IT\+3yR,}2[;R~;hCr%=8I{ m+#T-i6?rMSrd,A9O^eRo(p97rq`B; sEʈSυu 2 e JlJ ҇-F}ZinqoY¹"v _H3IcS⥝D9 dm0 M /oaȥz8o[8LqLJ^Ѓ^LEy2|KhڪO8s kJ;tsugB蒴yQ9N]\ iK['[yI!we&}“.8-}`]Z#!2];J[ŭ ҭI{*X4(SGWNOq7L3uҦy~쌑K*U 5WFGO/Y!hjg-7.^p:,۝zi5@fN@.VC.΁9u#'nZ7|Zb׷Y5#zFsKsei&F1a׋b٘42(^IA=&aZ|9\?/eRܟ/z+7v7ٹٻrQ+*/!> t{ mMB`DpP3z2dAcqXz²#r:^>be+i[+D/Bf N|ٳ;%":xdO u"s6 ,2J<pj\'l&RoYyP9 P+eA` iy~X1VyۊHE:9gРR '=4}YGؑX-#$sڐn@2]XꖷpoI4iݠ&O~GޔNyYiۨ u-rt-zBWJ'r%š.YFM/Vgښ8.'&6U:6"`]ѵ~$< ixOڄu[r>&np _#bfs ?S 4=/0׺8Pfbx-o:Sи逢_W3QxodaU9#Q'_߻.Ԏu>i:ceOCuDYg,iCSgC00m|p=[o8|-[ZYӉth8W'¥]ܻ7߱ cYIf t|4E&8Ƴ1AӐEƩ^MHX.|)z@`҈3艗0R1I{ʕXq j: "ua+Ltщc`y\%rMC)QXpH">p͵zT8M:!??@# " 6LlP:n2:W<5Tsq 5QR-,[Uxk``ϿG_ٿ0UlȷR W˫"ꄤmYK_jz(Lgm ./DC68b-m@$V:uy>W.Ӳ#$vPKvʷ*vaހ!4S@Eٔ?h: VuXxMue ƙsEL̃ccs9?x~ϙʡ3￲<3C.XX9t#;pjVCCs#ȍI _Ic~׷7٧Y -˙~SfQ>}XHp#hWm瓓2L 8[5錩LC/ݥI:ɾyl޼y=yKڳǏ?fW yCÅ'#'#CFpk`8ig|K6)@xyxa vf' +]efn.}i 10tJ#{JiR,A"qc)7@@cRRe|#ö[ibvL@m lϱL<+X-͆)eX>c7 vȑvs}Ō!WNF_.TYJM2CF4KvOcU%S_}Ǩ(U᫇wҞ]3+GCgҶZr!$>o-]f9rNxomtWVd60+mҷ6uҶ2HwqϸM– i0q' |ք/Gxme?k7}:H>:dzCz.'DQN:79UeF4|岋(o\Ļ2T9KX:e}-zŸ>^]w·T9g<Au2 3llxxL+i,G<ҙ3'WwIt:&9gYbv=@dWUKT gtK .]*-|#G|׶#msM `lБCݥA Baâc7Cי]1?׊f꺾f` %yNV Z@ÎTdiȹTeleZsd);xS\*1宸SAOZ$7*grR$p >A42#zǰͨr-޸n֋ K`i *`K؁_͆džJ#WС=z^k3c`Lb ̜u"W\~>90|XQL{&r2,iɟ1t8y2M knc҄Ց錓k'Ғn$]KL# Kԟyw:6-t ?ICJ8L']<1Sק6~֟{@hZ8sq#jƩ9Ջ9nrr|{.>\|z=z>W0y:&RwN iL5?m_÷ʫrك֔ > /̜]'9yh=͝lcw;}Q?3,9o[=?ʝ['(ҠO Y]X]+in㖎4C>vz~3u8W}AO3570;y$Pe- 4RA"4H@7 pҖ!YأjGϳ ̒CMvJ2mN|DkGr׽}p@L:DùYq4ӆվm=GEAp%W˙"aS{.gcc%%DRȔuI+>(7[}1Ox1ПZ -$KSZלx|{,[0ت_O Z# a1EՑK(N6GOZ:0QC^-YzlN!m-t'OHC"}RtqSVڐ+M8Z[L K= YilN~1t hVzbpO]wdz.w1=肖XZI~<.{(_}Gygɩk91 qn*ꄹ}D++/׾)yP_Z# 3, P}Il.{y*E0k/yֻ|$Y9_~cݷJ//w޸k׎7ؽ^_׆y9s>wMkt̀!LCeq;ѹpU4 T݃?%BZ O: VKp]E~r=! $m@Ӄ4L?G`VJL^;8A?EDGioZ7Q* v@(G:0m4M#C,; x9DVBB, BN,2#=(&G?n$%tc7w8,F+hLj{;+7G߹ C~/N5-XtºN ߵk.4j'gazsH3# m_qMv\i}1=;kj'kgN\1V_^~u֯O+iCe긖G,(iiY9h_;:oSW90Dw:E_I*n]d^$KB tCLЅt'O[:FfpYG~~iBӎ>Q.,E z%Y֛DEoԱ=XpILV E/6yǴaǮʣ:f浚*j@?:GQ^ MZ.}^G =~&C\H9.a'o7< _)ʀЏ )'o..-JiiOx7ҡHF"ySxOX+&+i2ni3nxoډ]aMjKORg|fY c## r7/=oU淏ÓK6h7:q0YgsϠM#̎=K}Ot]Y;:P.ѷԧztg>g4+?O~9ۙ΍NAn\q =8ܻ~e]wo\SV,K -Ml&c !n}7?wm{'v?]G)-N0mŞZYFA1]8`&[$;{;ScNt ^ǁ«@bfFA‡AUq{d3d@9\\\t*WȳL%C_jSFƕ`;&DCFRb+7FڄRr ~cpaSpcc[$Ȁ,g\o5c{ci.ZmP|1#Z~blwW@JQD>_Iӊ ='O9X* ZIqa=.A!hTXdRl_‹J A虹Ýݓ~q'iҚ''.e-O:nH)'iZ\ºq˓MX&d ]KSFDZ6~ K9>)UȌ{]"Sp& 4'-d9n=;wܯ~o73Z]гv򜖏pV:ˆ|erg6e~.t׳4f,ܦs[*~M|\7g:ihw,_Ir;KʒNjQsu6n=?}e-[x%e}X>BB ɓy'B0w׎LN=wm]:rhA5`8\w6Rfk#:w\NuR}Zx%kSMdϴIV{Vzr@uOu?DJ1%VtU+wvWaLi!@cE60B0)j?f,5KijIZQ^DXy6 AAC!UF駖 <@ ۩ 7C„ tޠ.I*? < 6/5-Ud poS0À}Yy< vXtЩ;&W\ fUo[8zdvXIg i#Oҵ0'y#Cu8D!A",Dz r-C>@bQ8 h0J9|R@- k ` Q}E#uz+A#E2ӢBRf@y̆NH hôDo %ȯJD?+o Z"`?!n?^Q&ܯًG2LhM[. *ϴCJOmcp`Edxrw,8~l@IDATOUx2vO]']3n4n9N oqI18B_^6$e|[ho=P^lh=;w-rгܳՁk#iԨ ]'k˧gSAZ~?kz3w[oR3g-p|Jv5?סNoT{t'TqNLC uB4Xد ao\8r;-6."q_tҝN|Z],;gcY^חWePylW'ʙ`Nk>&l5E1BsI jCu0cyo`:4)b{_x) PQQ,^7/Y}P>;;oOk;{U<ﲘ4 ^J-^<6I< X1> J~spMYɾ%iZ,ߥN>|+qŭ_>qÞΥg/(Ǵ>\ߎkGJrF~A8}@`!oylWhm3MMe])@mM?)l{ͯ^I{=;Ι>6=%-gz+=2@q+'}7Rn׃&˛Ee?-3˺֔+zfJǾ#{US0jV׈„B(j[WS(96!+E{92XGV*KᰒN!W4}Hp:p3PO^),`(/J8łp9 NyfQI|OfN46H-+>|p̄p//mSL?8 v΋!WC>rt8E~\61r{ pnhΦY/|5=|!chy:Zxo%PZ#SƐo$\/IESה/wNY HF@&)' `@YΠaJr:KTlI~6 ?oj!3Ks_X]xC%\:ץ< 2`:LM>m5o)8-~t+=x[4{*~< ;r@z-З# ! he1;o;܍yXgsc~G]sY< sڭN4kҙszJ'82Z3(7"gCϚu|€fc~mz>=wçNNRVׅ6'?1xͭ@?{WNO^Gc9KOU@՝$F;4CY9z^r=?~Vy]QMr z)A>AgOl9|v}Xy6*o_|~U9w-ȩ>;r+"KrU,%Cc (r-}J?ȡFy8%ú/< n'$#`,ky[C4-[A,4:ᱤjy+`@ *ġyfotg9.n+o1"ARJ39ҠTV! I1<>dbP7`Gmr`,+iև-C| WXfG#AgΌ>C[/)\iPk'p >q#?HxAodLXlf=Zt\NG`L2ߏ/ O?- =ݸ5Mt ֦X'M-mºr]:/qmW B"s)֟sv:OOM/u$ Ǵ}xL_I_c3WOQ$JPnԣݶCxU I+z ,-SKM'S/qoCG~A_W2wk&Z5QتZbd6 4/htkVVozD/?|E矣:}|&:vءbtr1+/[Ww|涃WCNjJ|q PMO Ҁ܉74 r Isma,mY~xÎm'!f"h `(C^ GZҊ3iU a+G #K뇕_U A8gd8:n^Fh=`/D؇©ٵj?"v?/3GR.Š^̖y-L9#@fzz:?y*jibX/d霩yZ4ٍJk-=K.|rte.W Bu.M[J<&)'䗳;i9r ggShMwgz*q<|[Uma2pU''&D׀aW,v ((b@E]WŀaMk+*AT$ L3=}L-t$YDyܤƵC@D:8Fhi>R}OoG2QF,K (xrĈA2rpLH}'[=F7|tAb;*^7nq苐KF;_.Eɢ[ݦԉ@_2yQ~,88a9BW@#o ]3jTIwoI##a!9.`|1tAt[/d>b2/G>#f8/sy+,;^uM/nCX \tzrxsX3OU<_KȜuk>gVRGk\7 NoP#]NJCȭYYu$M;s4Z#X~L;^٘=ܣYwu֎~]ؖ' XV|$Q[NІVqڵϣ ]͛6wLoUZӨF,LFJ}̺v Mo<:ڥM4S9~F2 8M>prz=6k:S;D~k/p: 5Qq y>MQ5崴\*D]43ᱥpXT P\.v(`S=Q7o$ mtr؂MSE\8P(gJ{9  )2b=fH:DnRȆy. y^ĹHfb [\i{GK/o9WɲKLs1Sfb$QSU]Shkm6^<EXNK >D *eMU_O>d2jZ/81Z49sJ"D}3@kv-#`0+g&;LJ-Tfh+4 y5"V6w\ 5I :2>ϣ4-,2IygAN>\T;Еtx}ߟp="pYv)۩tA~/cQx !;<9]~ZW\Onz nwm崻wIT4,y!Q4ɥ(ϝz&PCl@D.%ɜ4xЏ;ἓN"CvB\K#pEYM(^L Ud3?SJ'Cx1yzly-=P Y1%[u/N+9s17.p oO̺Xyl[3Izz޵}h_iرO"OdP" !`A qM;WqM'DH2rtWÎ/`y\,;wI?i, Q%Lq٘rUeys8ij8p=]1}>ǎoT"\w/v1A|t63i$FDsA^FM66y M'!3,h;#h&JÓWɁrp:˰܆p!*!?<9}r9!| VOw.; x\Ot Ye=q<.8WQGeV/qS]·܈5pw~ 5ukY8Ism^4Qƛ[thnI^QʦLJ 5ʒOnk+[] 9jy/m\kko4XMx˶nZy'X/O3j+cS\I۲}nc]v ])6)jƈ\7F98BQ.8Bu ۖos/>__xB[&]zc^mm iW4.^c;v'Xt(T`j7MB/ꀗpTq6J"昜[_* ?~!~~EpܱU4< >ٚ`ɌjֆMJS,P6?mՅtCu8̭AOa,#^!0Gf3e@GL6v;;3vaP)vΗ{[-iÜY15w×ʩXQ˼gJϣ!\ʓ|=xTLrtO߳u8!aHG\1*8Ǹ6Qz*:4x"]Γ MٖO.rx:r<49Ot.;d.!Ԣ?h#tȏ|NףUptK/ooذ,}6Nћ +lޯݿf lTuEvە# 24q:. yz7=75 \S8so%fjUz6jyuvO;y"]کZU jD74iMS*K$8[biѦBklU{ݽþ?w٩G:Ҟr^~ϘVFw//Ӟq5¶AKl&?߮or睜gŒ¡O5rʂ=ouoM }Z]:Wk*;F/R#q%;X)v'˧4r@_22p٨1HrSՃAC8wxW b2 lw=^>2vtߩW W.V'i6 GHʝ +OFJ蹚btse*μ`&<V+,a˼O*ˡ,(_-|eXN D6,/Jfw"}t90 TqU!!' | 2|&E:' n<ѫqgrk^৪!}aԞƣS57iѦ+"fثunS=sz4vcውG>o޴=غϰi`Ɏn9-zz 6=&;SM9O^|Ηj?RC9{/EB摗eSkcO궷X;!sdixyyވ\v\rܩ*p"l1.s1J8h҈Ĩ_\ҿʧg5~kS:% ȗ '>M8v;Rn0T |xK6ʡ">\L^~lq@OKΏBGl8? cN1~G.bbID!uS?4{93*bg?:O:rijjNIA[-Uku_(K`/ܽqx9 HJ:#LS}|h9&Q}7 A[Cve|ѐC28awȟLJͨ+a{ X`2l/or5YdHKѮц፛WZiÙ3]NFP'y_bc&çoM7ا90ՠQ3I 3%iVZ|e6oFm_ggx/;gkԮERz‘Q**Mxmt]-vGt_,9FhrLsb9_r=86QlzkSap շ;;cHNA9 GTeJmH|.rNçq8i*uɢjnӪ7/b %s[0Wij<'|B@Kڝ&Hw";R#MBauВP@~H輸KkL?9~^[lymgOLD=p='R(Une-PbHj,(᫾1* #*ީ ˺<*ve[ '.e%n!$X@BY^yJd*`ed9QӍuXJGOO&,?{\KqP8=h׳=7!]3Z/$:Xh5v8Vbv5Ն߼=I{ۂtb|W6h0id [Dy~Z/km9ßf'y~g=qtM&;(eK.W9. rɎ[6 pO2ؕB˷ nrT5Z9#$p۷LK.eP鼴.?5AvrHDNN) aa*‰R@-ÎuWP%?/N}f/Oa z;6|CE "oRYlv'L@err)U^^vʙ{/'dɜ(?zꈮW#A׳3M:F9z*y5 By &x Br^!'_QU4e]27c/S]wS/s;<>g5yOM\SM)vFAh8q~j(wG];p}G/NBV?6O FHr. B!OQX\Z/ﶯ~{LJf[`oO|Nz Cσwpa382):0\jM8PL͉<ɩYRg}P:7z\8 #4KKDDGm,d}1 wfv@k>h"vd>OuSot۔bT.w(@-\\A4ŞhOW=#LQ$;f6e++OW}_*mW..<R.F:2HCr4#M/+}ȩ \r|rT:Έ6\I縲<aC+gp/v*z |. דxx UUD~8sم<'mش,p־Q9]W-Qhro/z2٣@8dF̽!9swZOmttˇ[27|'ϰ^;r pͺ+N Q;FƫFv_߽C˖v5Xπ3kiP:!3=l}'o-:KJ8E8rBq0L%CQWZ42g[i©Hpw\P:!R(hG/g4RODi4G7#qruo2GQvpn9̬ˆTV嫞RA4j$>\4Я i!(-1C.vtRPFQ`B\꘩O,z{{/RA] ˝>|aA;ދ0 SN? BW=9r<R_1''×*z0:!G:pwE9A6˴9=ryAn{[ߖ/?WFkO56oIKֿWڴfy겘#ϽszKhrP^<0 X' 7Kt>=+7kRV̗~go.:vcشhi|CW!ϝnܸnBWt6FNZGlfԋu?Li@fa|]RGBNU5tE$p4T>V rJPZtzK+qrqrG @vIb.CE8)#DV܏\x% ;[e1袞A8ZN/RI'ErmsbRG2:Wɑߡ_z}ʶ:ۀu@ `WYlY+瑏Уeȗzx|t-p!+v頭s\_<2tq@U)ޒF6|iu 5]}7]okTo7}]כmYIXܸumxx~;YW`y^ZЙo|xh'gk>b-mGBv.R;Y<?dtuڼujJ 8D׫4ӫ!=OZ߻ѶnefK^J8pI Jҝ w5,C~+ 9k˻䤰-L!EUSȫg4($nQOjpՐkXӈNkwα]NxD7j:{SוΗ.ѫ`;t֓9d-]lq]yỵ̂mi͞#dÚ>tF\1=H)M]a ZfV״n=H42%)r5N˔ !SN!K3&/a(Gcʑrg Z_TzL6{ VPqK<9x^F :.١ϐp g.74މPﰹ͎pueam 8f0]m߾%!AOEM`U'کAe!x.E>d[k*|;dqs7[BV`#d[HGTr<]E >鈃't<&rYy:sZ`\_紤2M|eZyП>̐S=1}gƹGQ٫ΗÞ$L"{ཁWbo?f|ht~.28~~Z{~(joٷ.vݥ;m#sպ;iͭ$0X('~i)7s}kyGr$P{X;.׉dG*ݑ2t lޕ~Vn3.o_n>t/kl+z>~:[ 9!ۥSK8u% Ve"Af9$= $->*MI U^M}Tr1ކ6M uEcE_mX!9@;r/ *9hp@aӚ3+3)Chϖ9oѣ_pFAxYdi 3:zo[̧؁$+dxBS)2O9_7Д_)s'O,7OEGN_s2wI/9#9n?Z`N=Gv7j]@{f/]:s鋪A#TJvs?н4Fyatf=_ifb^iM}PnB\\C \80*˱of3EF*)~OOS(bEi(i9V&d$#I1;DGĪsS:{i:#:1M(?r2-iPnFə)vX(SoIr>;}2Tz;F E'nzEĝo-*(UJQe5hJk,4et\F=h'…2MCW2]<|N$#h帐Q#pirUӭgȆSndY?+L(" I_Dzz.+F۶ne=;8,F!Z2m_`D:Hn E`L@: xn'dL ey98qS jՔZ`jc*}N :/}Yno8"s|Kmެ:bC>ߤyܱZkwnۺY&:NF/;,iJ #L<5䕠=un-TO8ѩʊCxcb<+ڸ|$t|^:;o#Mu'p1$eN |He88pU2 \ m,> >\GxBnrmU.'OspՋUhF.:-#g{Ņ޳x6]ڮ#iə )$*Ϛ촎&Ўn?`f522ҝ D3.HІ&uci}߯K?^u9t)qMAo zT=^sIΜUƻk;s_~WnH{Syuq{Ys9y{ϴC&~zl"Ƕ]K:]6ՃSR(=娴#mU.,IT-\LK"nuTUzFԩw6fGDW4* i\|YxKq0>8sq &'y1r/KawntT׆OqKt$o7>ي"YTw09>dՃMurz\F9~2;𹬐2W z/yПGnP@0'(РqAy|_p9m9̩ꛌA)4aO hxSŎp{|ӟ[v?oذ?7<#i8bũvia5:f+6X_Oeg-g˙hMWpv%f9UtaJOAyj(^y:6_SnC쟎]fַQ.gNh LɀGHej-E6iu]Oʾs5Oi/=`5yQܧrpxkQ8yt0J6P/xD7:/[^Vecɀ͖;t;S0={̽CBpLЧ#R#I~—5:6vv%c4Ʉ&] 9GMWs-4!2`!,3|+hWCW +`A〕#_%}qs\V] e.di|U8ax9Q8h䰠 YG|䉃6pUM,#*|l`xxVS >2_r9y:x;GM||#ϋ#\q֮~"^l"/A8U8N3&>2K~C /M_eo;GfXa9v-Itxi^QE9<+;p^5[F٘ަQ  WM3_yP;|ꩍMc Ƨ M炊_#`Ց s#8sTx.-b%D2s߮_!,(t3I=M6N %erk]_WL[qAS T29?2m9_ V ^/xV-烎8iGcW(k5Gg|M%e*zc#W㧒.Tɭ'L [㣌g=㹯XjykV߽O^>[4[h gNkWI4uHg|o2s=i={[vVc24%[$V5na@cmn[b_=;] ')v3*Gl*aFW_3O'`r]smmo}{7[-A>fQW!%Ce_sۛ.߳MP C62b􍣊e#~ϩR:W<|~gRxC=9uw;Y>#rN =^S8w,D<-pIdKSЦQolt|HOc]&h򧑹^ :)Ԭ3+OewFVW^P/,M?%i}ꕣ I|(VjrO?x҄|<@.z4TeCg# Cy>9s||^ޠr`zw\y{VcΎQ>I^RkSMe "5-)+O +6kf睸=9Nme]X<4Ά \QGZ7aR}RtΦv_b2{ݳٯ>܎Fl9&b+OmG( ?10CZ5HZ^;?>{Ϟh{ӊ 5t"!}L(Qox>9>cvam-5+m6uH_w($|t`CQ4-b}"đ}p6QB~s߂1' %遐S^e0BnwO\ H9LQJ|";Wy7:Ч/:C,-?p$MA:.`(*C}n;MOZq93O-6"qtAg;ۦ'^c'_"e|EO[bk#GTL{(SϒeNF{E̙UyGA21AӧaJh3@G $Ӎ;('ɂ**Sm_>[gȇun*k*[N]UrމDWw 3 !.&0B'FGΞQ`OnBT,<?ʀիsziBO6 .Or|FԾ'dһIgd?>o^wxk]%44}i,k sV^A7! u{{US$9, ŁqN55Uͷr亅sݱ>_Su^.0F[-z4T^(N\T 䥩sme?/g~z O>^^wq9 ZlW쎜:6} nn _]CI/ѕ۶uPBNYj:ũURq'kڙuKW5u8:jQ|r圽!>yJ293X~[$@&zIDuUnl]s[ kZQ?N  8$ׯE%\tSw˛*5*"/1qEm$tІA#OOWِ|+#+Ǒ9t<"3Qs7瘜>0rsO|+Q}=%mo}c4NqF23 a֭o[mqg=mv?ohMZ敧^gQU AlNYH/L;YGFMwڿ O/N~Aȃxհwp<|8ʀ>4 \mlkgk?l3Esc؏bT.X^/b?urR9\MuAeӨ|Lo_c<[vs[liG,h~6]&5E(yMvB+(֋'u\|ˮ;tOԡ,|M]-HB*N]u2@Cڎ<4 =SOn@22g{ؙbWGtI'li5sR} :tHR'slX\:o[߷Tߒ 7޸$s+@Uy*r4 wxTf*Qr{\cSS y_+Jp5AZ0 |&!]&i˴!3z*x,ʀ<H\o*c1|ڿ3? ֬֎vttkڷj GDw$(yK\aFm}ϳtLlj nJO%Fq/O5J6#iWu/췷쟞p +4θ wjX;UH'Y9iNG5‘yvݍ;G=M/9@spxwRX_ơ{'#w: k mk6u~p{"{K;νiw^?f]3tIx=a M-nO4Lgeޯ66D;-UD6p,g>w3r]):pN ]'6aH<yb\h^>.v/Ǚ^ l^ϖ>/Ж:fgxK6J%m~6!4,isS e7!da|!'#/烧^\E_'NU0\f<rU6 2,q>le|.tN8Ι^v~5+N^nsSZ`%S<$7]Me1߬!`}Kgo{/#{9/|!vģ}k>dw]}ölIm4hpD R©QΨw<x&ZqQ·gg|DLv ”B?jeVc c)G6U^kW࣎q~g6<ۨ{%ŷft'J#OlgB^ :-t8n}㕧iv!u\zTP1P0$[wsFLFa(Q'Lök2zHƔK*>H .iH>d>!7Uy`9|2v.v}TjQY9VVͷXdf؏/Ya>"q}Kcٜ93mPof'i$擏\j?p؎}vfakXN0Rj3sǮw0pG%%js;;yltԷNؤBwi'=r8diZxwn("q?<$s+7Gbyg mI#xIz9N)e۶n_y% )~5敏q Cj~783\~sXnPՓÃ/S#3Ó |exȪڟ]|늛kxHGG\3IMeݼI[z윗̵W>@w9w\#Ww*x+Ժ#Wc^sNWn6[SWW G/[fʑk9 {) -5*tZu$mW|O[~z쟏L<{k,+>wLx9iNfq~6vmz}qJ3KWcG=nkL;Ŏrzli]vi $e66Y;4=^8xXpvklbO+T]LsqKild0R./2s !EHi: .ػ˧uQ W"S2b] q&T69+TSU(>.a~ o<}9ȇ"T {jG.yla^|>B聆\!0*+D>_CUU*eX_,zۍ57};e8o܃C1N6aNۯuNb{?g44m}ФG`199hp"N]C˘tϳs^o'pg /+%4԰yy;)D*VOǁi:FתWnm^ׅٞdg {3Zf/9&,ƯȒu)wmEg-L.n^`6j_0a'3N~2;z-.ٵKS͚p9Q`Cv;2Iݳ~͙m-MmYrbv["gnuDtXDCHD"vqHߐN:%H7`Sͮ]F-Lc1y~} Aw*|$;Z}E: rͱk;G;{L?nHUfWqOt3ġ#\yV83٨{ܷ}l]~F߰_ߺRs^9^,[:_;,IItz!Cn;/ou10fmlFkk*muY yρM`Q6Mc~krúwDNmxUڴ3|KîYmHU/$^b]23@G61;ߒ؀*x/M)f&Jhty;knv5ÙF84&psBݾaVnuKW썫x U_5Stx'wFCp]Q׿7p{!f˙S@9w E_xhR%'zFm8N9즻_>_ccQGͷ.uQqS&.+0U/I+|ά7ᨴٮeR[a?٭v;>WP g,n}y oԱ9 MTǂA4l*~q )զyӇlgW"NIӳő X4cg9#}7{\TJ2;5$~LEyZ`|QaY 8^r)T3aaJ%KCAu}G:Lb&g ?q;L Cן04?" a,|GFs"#8x9ySg-WWv'O;bzb[}slS5r3:%/>v[f0fږ~]|tF!P|9]4Mg ߪ1*ݪKFʩ&ݬ%zq|)ԅ&Gtqq QT}8tӁCW.i \<9\wO>z}h"ʡoSo螣pUt&kVazQЃۏ~ú[nwd/] 2 {\wPLkXwfK}ǷکIg}clm^Zsr!SA-##N@>ye֝U=zwLKhǿ"Zky.eit&2[ꈸܚ=ɡ@EiϗBnmkZh2O}'_\%YgδWp_;ES:%;BX؏$Q6$9s8*Goj^UK42pwc`0Hi\&@) N;iPUurZt9ѐ`ضM#Aaح0ڒ#&o~S*S@ A%Myѕ͝}g'X$fM&O̽j ~TZ:HB <Oʸdž*YAO["'L;8*|.Qf˗/o\b-w޸O~];;0M|N*)MqJYR?.l]|}SX`]>Ŏcb ,wtٹc,ԠNB@(>QdrC}oמ}ٗu9͋tܒK_= C`]3"ta2JRu/}k켷}O/czCXh#Хp'=Ut= p%ʹisը|ľ?ێFb}5//q͚8gj}ٸz%^ n3fT4۱]GÊSM v$ {j?4^*X`jtN2|C!l˗^zj ƞs1[G5`> ˔?‰Q QNͼF[2Khw6%j1r;4y/憝O|W'`E3^.{8$/M`@^P+0fm;?p}滗S3O8w|εal$IN84 4igcIfVtط7Ul"; #2M婜ṵ̏]u3GE^FeOβ]`]ʾ]fl/MmөU}\-3TS#۰v6GA.l&7%R)#y'vyy!Kz.ҺÔO r@FDsIGr>82}Th*;G:tWT+!> 7lmK߹}͇ΰQ-:׬iQZw7\_@ɩh.9tNyHS!, 7ޡIѦ-Y߬B+~OZls\k2 fdЅ@J*Ljqr/lr}ʍjwwp16~{VG.K~^y^מ>N[:>vDQ7ytG2hyhzh+K|zod%v.MЇPg~>N/vʆcvN4O_Ͳ]r6]ktw^θQ/Nm<>5ϧ{6m5wgwG!}MH?/ftF(7@%wIgcD6^W!;|C^?EH_KܘvAdGr 0zOS5n!ARǔ{YD*~p9auC6Uېۖtӓt `!otro]cW_Ŗ;sǎ1ЯAyOúXMۛ4j\I4e|utoCv̮40MOXi_-vE.W=c=~)21N 4Aitwŏ$!chXhh֔y`䗺u_;KճAK7발SN!G.ُnkErQg&NAܚˮ sOUW,ҘNM'*d(}I_>H-J6Qw7v/i/^|aQkKxɈFLOs\Cdoz9seAE_fP1ɝFRH[ /^w781@Y+g)tsN6cwaw$Y#S7*Mm\YWIz!W5/ \-Vu ޛ[zUeNuy@&ck22(6"Ȭ͌ ( $$!bB%5%UI՝s;ォVs*UE?gW^]kw:{߷?`g9lNmp9rӗp9 C["Ϻy\񾨷d~w:thX2959/6^8ńj,?+KDeI(0*}+R\xG%9|]^HkkO:otcw.:?m9x4/_2g,}321X/xq% oI?:*}wb;n3>ӯ^#m܈'aZf1=Zdn@}q]x-uh6WH{ӍoN c߈x+/cx}mIHGΚ">]:vnOo}{i4ؾu f6~@ۏ ;pIgq+чN0; g?RHŹj3a祑ƑJ2i&{3GE2'KE,}Ia`"W2G"Ǐ; S0.Z>| &xC89he`PY\B.첤5G9*#|%'>߲ȳBT'=ۗKxaD%urak<颋.jqs^g2iD9ynvQ(;Q\e+ӳ I}_|8 " u1ߚ'ٯ3=lOJkӗoI]|=l3T~I 9n6r&A\>[6qKvzG~?tS>o9%VkE"1PcLvbݷ1w3}Sw#Tzߖ~TM[2Gb@ad|[chK:6>}=7~ze`<;ұIB_$^ 9szqs?GhHс=m8d4 %9I_l [noB gҵбvFjQ >?&^ʬZeϣ%-,~ GFFb ܮ j͌KO1I7is6w\z2N[s* \| /䢔vUIz^HS=\YoZ/o{dN^uO95;v>s3p - i"Sمǩn\ݕ>/`/x4=%꘡Z40]Us\۞ĊP9EJcKK_?^{Ou{zR}~⒍XE"ُ:Ba`2geMTiD9ftн%}Sョz<_ ٝ~;p sG{d{e3sdz  nj 1mpchwwt #'pQKի8-FXgcVKؔ X_N]qE<,_zwt fZgn:7#cZXҎkxQED_u -cbVd&oE4μy9f+/PK9^>[K^2RM9goVz<&~>P:q޹S4z]V[Ѩk oC1zyL}:BJjvSvk:zރ#Gp 0j*\1e*qȤ[hUoWv+Citi`@ڹq0M#qϢ{sGpzv}E8C2T-`~# plsF@<_0uƬ0[n+n0[qIٖ,{:z>4F6>CpH[ M5g1PQxJȿf茩p=a0|r ׫@mtAcqd:P), D9gvtUϫ^/-E& ê煡Lmʰ^} T .ڐp _X~݉o}—vvu_GWN3\,g!."el9nMWt4VGF.0y?;'Oa 3{O؈fsl$ȕ &>)l:M[!U,۬K7ɓ3h7 xBLo&a?~/Dalϑ0KQ/D+ 7d{c#KԳA,^y%Df9X$h{+f04ь2ֳja=.W6yL~ȗI/S"xRW]-6tW曏_M|A_ݽԑL[x.ɕ3uu__t/G"g H,b8ԗ9q,/=vl[La7lBxNI0cuilqSJ/~?ݙ{ %nQ=lIɩ-#vr9ƢAϖ+0.~ÏjX݉GV{.bYv~ /-.c-Qk,"WyQĀ ڇv}ݭEJ]r^8'HLv֋MkqQ"~wr 09,;/գ'v|gJ'J< i\U7@Uuug-\~㩘odRs9]wΜ9SD/Ezd _\.+f"1R,39I}j\I^aR?.8=?깾Ufz>|ak~&nSǸĎU`@KOJӰ3Xb=>cj~2 =t nLGm>>M)K۷hmSt: @rA\) im[曏7S_!]|ٽ.2`C`&`:#|}u7/lyq蘯^䮗%vPJea猏~I-g|V@pxwwW±}I4<63Ր0\< k9cC)pûX(:_ i{j*[ M פ8#ȱHLßxӐEN"oʒ7o#;ҜO}x/cRZ2}l?C-ZqKI) ]4\!w 92?91뗙p%v'cm_igs/mP8Ӽؗ7E(Oe-οpWKWiGŧ\@z{>o_K~ !ud.s~X1;b mXHjM+',voL?>>Fk{{q!LLv%>L\9{`{#bHUv|M?ߝ~ľ3i\M-Wczp-o8w?ΡcsvW]n/ D77\Ǯ{¾fdff5ÛRQМ:Κw555f4bvͣnHcCF~oE@@*IS,񋓳 /7_U{G92799ցXnY*&uX5u^$26n3rD_0]3ؑn!n6~驻=wwoz0 yj<̅KXh"xFreE*ڲy![P\ВŞ;O?ugҖ_ٞp&,[D'?&WEߘ\U}㢿#w}2%JKta_ek@<*оCBLJqr.w\ebg[YaV>?} lB'쏢I l+^Nޒ:hƍ[_&^ceƶ\  c#oNco;J(1kW)PrT}%i,xGfqZ8ԙ ہ+Ulɜn<쫹- ,Z:'v;ڇZ%K/Ni 6LJ]&,z,ΙY(Lv;T6`O(FR^nj ׅGx*/n8Kބ ~;:?55O!|0BR2+ "!/eĀE ԇ[p>;Fp|m?m c=Y&WĒmRU۔V&qf6d+p=<>p-/XړF<ݐ#f_-Wv,LsEv ouUr4 I{W-a3%ev ލ m\g>~t ?0|)$ްlǙ-r $.ߴ0;`pЕ{[Uj(ܸqlaJ0)^dvx_[~w?<ĸ(lD1b),8WF:6y oNӨcœȏtKuu⣎u`Q$=N:RSq+XE,Wޒzy.x]KGqG:۱݋s2xR.3vxgِYmxV5St{zk.hg©4;'1vxL~mL@ӝaU{&{ߙȋ$|>|qLKmǏv~gX_:7]V:<♌mj288mmbVx?;6'ŏǎ|AFlc+~yx迖Efi蘭u\ڇ zKAfpXϘHc"G+vb+:So9‹ߊrԧ''WuڳԋNwLQxGKX5鑧atǐ` tN3݆sL;gLl|ppL!2r?4ױ)}Z<-tw OI[ںYyqQR3рm2NvzWEz\ҷ35ؽ ەwQ蛡2sRښ֬_HO?b[ϙ9 6aӊp\8CҊ% 6y Ηx1 ѢR1X83)^HKOR(ػG*L78#@7rF9YCK@L_k:u.#^Fq9|6T~0#W+k ]uH!?%_6̱fZ1b\lCPKY# j B;?fuƞﻷ;~0P޴}c/n)y=&CK-_*?`z 6}λX弴koIF9zj`|qُ1[$sl;vTz[>M_%sIcǫqbڰyݖ766^UX8˦muH͖Ws.sL1⎾n8g21,GCS~,GLVۨR}ғ.K7cS\ ǫ6y-fԲ lJVӼDݒ]WܝVܦ1@# <;Z + /mOc ӗ;^ mCpKZ]A#0c+մi&uߝnr6S;֯_J"$܎<ҺGb+K:+ܮD'~SkH~9;HPjKE, ` պkkw @Enx8LK;.oذ+:ЙЍul:ү-~µW3^̔y\sVdθ0U2g·?30gʜiC«nt?>;ҳ_ttq 3ؿ1 31q@1-\7ml}?޳ C[,ARKH✙svo:۠r W毪hbnrsdv#®Xh{ܻW]TrRD[E2RґJx| CZK._K'L6GlMRsξ$L‰%2\Ne//]mGuRٗdS?g}y^|ゴc,3[o͹L܅βR0 ɼӷKI/ HU}xJ<|~d"{vۂY9/~{G߽[N̜wм8]dǸU8`XQ2Wy>/dlߒ)L~JeOW;O&Ħ9gt_Ni9Txk9&D,Qwl=2ʼM{|Φ6V1acܮp[fݭ_HZbԁ 8u; ʙ&eVV*Da3kKWx鉗 1Sa[7w_dz[;_+?Oۅ'y])oA!Q3AD^$Mm8lٮu nNp =Ms7y=W W ر~0sV-i•?ߙVaٞsV44 $s'猜)OX`y{؍Q.]e@X:ɉ:)އ9t6NϦ=B^g-j'Sh䢔忘#]zyԩ />'>g2f|kYzǩ Uq2~yP+9yN&[5 ꓉69^2QDk!yE՞(.mFlW ,'e=S`W;<ʼM/XXXrQzN2뵰FE{I1ݻ/C,e3yl69z}bb=ub3=y{ $\fiiann~I}|b̖:79mN+EcQC4[.nc2go2,3H>R_xޝ~rlڍ-\qmB;fM^r3_9i;v~4t lLfצ/}}_#OwSQ4$nO5><|-`{RƂ#oo< 4doii 338==}(aE/eMF}NVf2zs(uu,_t=edxG78#Pv8-+ʥ_$PRɽ{;Hū!/m..%GeQ:C2R_er(c {& ǎ>|5 egqV#+bG9<0YЗebZ|5Ň02\Zۚ>o8տsQ'nKmt ~./ܴSV+m`G?2Sw*(v},^}9~+-m f渪~v6{>% IjUI\9bovK9[GFG~{9g9TG\Q(U>b/Ge#]S^_NewS+ybXh'y6GlGj}$6z"ZSrv1G-uX$'_NzR_bLԩz|Zni=_9?;]mBJjs;mRTT72:b>.Il-դ8WFXu`: 2&RfG}Շ뼽oч|{2#l#6^QUG^~biޅouGtDglXN6uL*fVOLXBW`k;wܜZ:?鿄Y%&;A UON']%v9>7r1 #ar9'ƵE϶tCؘ{c}cOGMgmXpl5i!aǞc?~ KL{(PEwM+k*ޒFGEɜn!UyJ: $ǗahGEW&FeK'lԫcM9cL<3G#QzxRZ C,VTzI.WQCOg=⼭ptR|*& G|.>!-We۶.Ĭ87EyaH,*\::,A^4¥vnO?7f;Sm7k弿H0DΤșx2 ]Y9Vz|ǖt'>gvX4:6MłDzF2xq >Ƭ|O^JvIu;}>v~44XY##!K:_HLLVǑh'ǁJ*`ka.}QWۈxnoc=ϾFR~rNx(W]b]vҫN*deuozv^/;&1 #W uz:ϫmacFQXo+iۿ{o?XDRª.$c-XJ6KZ&uv_1b +X޴-=pg6eC̜LDn!g<玌0*L-/ߘ&7x0 L7߻ǶpmIcc3Ďm+ͥ a4N{rΟ̩x脒9-(q9x)^329y[>_nYdC&y!=.y\\b]rQIxXT/j(~[FG =K§Uf[Ź$>lmj_odҚ>w OXvmQE­^Dd 0])3gqzm[nMᑧ=7t\ry-!s| b_-pF:>n_ū#E7?}zd yKo{?ſdlr( NS+{ȇGG9~J LICYW2%2E>oq96| #yKۈ=eWiT._1z#NߜptCz?JcǦmΏë$ ?b֍i݆uijj:KLΖșđ'4?/!XfC/~@_6Ts pEQHUfI켬̇gcYW\| FzQċVL.}6G\}rHeU| uu c(+qNM{␍,Ҝψa_96m# dqd} \6{q8g21߹?gѴi\|[x9gfdm%j@VΣ e3a-^.jFO_'&9r~ٝ~DjeRR2[W,HxF۪y$Bl"?lKxV2N#dAy:)H{FF<4y}II`FLZ6is&N'ޓt~8=in0l2/H{u?rsz>lze` [klm2rͤlS&K}]XbrcXm+9Q[y{="r+ MljoeCu{xoyڨ%Zz<"yu^CNn܂v {[ [fc(I3] aW/4=7.h0mܶ-MT}pz+> Lx'|ucÓXbdNw,bzDm;ִJy 3/.:;/_| 7=wt|ېpfLP}xIƺ+ґ6䥓u/JP.{^Ϻ˿tQ&QK/Wo}4bkC14isֱȱn:(8:oJe}h L6^~'%֥\Q/W='N~Fz2pUX^K?]HꗶL1SgR5d3a-Y̖1]/54zgCמÇedYm) [[Dș 7m|=9cadΧr$-wWA+ϗc7 K$=_DTJsKu1Cꅡz%[=6b/ޯb/#y=? +e^kz2[a9X(e$g}Q"ha(XG*j|(N-۾3nݺͽC9d߱\o[vuB4;z7޲ֱ873{S&eRẙnP6ΎԇJiHS;1ǟ̑CeMm0 ==iu<_oIvŹrRn\+%s\MG$mQ."sVΫUpZȉ vҝVLM}W.oy[v޷K8=᥏:˷)|6G\c~>&oד`=/%.FY}uKv<ۋx' ^~rzѣlmxckox2ݷvvu&&uq.%elV ϩwtפ46·8 p6Fk֭MXR?t|U̿:Qm["Cޒf{9@`33-iY ?'ZbN/#W&̇h?ԞTW+t*L[χ{G1kRcW;o-cqishr2\4ud.cYw_yfz0y!K|9%~Z0[B^_v#OIXIl;`6N0 X+E`E:ɫDGmm$.LuIe+IFVS벗ɏfjV>Ie#Y{#U\qa~"^u}K'?ezd'tuv=|媮>l'-[qߑqE=E!D7Y:@µZkއG_{j\%yl%M^8O}=7G\xjY|Ne }Cx٨1vPF\ڒMlCrR(x7}ĺ)c$η)Y2XNUNC`# Ux Q"۩%1oIDATS,/LcbeBVdyH!]$c$a>[kp{Lߗ>=p6__ŬdnK!ەp«GF_ǪrLrb+ԫqX%꣎u|V69*QE^uQ/ɣ,[HwiºM-OLOSSssX궋x; (D΋zSG*,WґÇӾ bX,3fE/ΛC <s]eqVykrE |S.b#>=^<19\N&Qbz\ޗ{^%ة.=deck^1JVˎ:y'O}/Sycb^/ ^N=dLn@c2݊*e3Arܳlɩ412&FG%rnߊl{(.|o8t:>%;ۼ*/ŕg"gW2/- E*ȗN?^y#:_h"[ ^kɨӋ^=VxYz]^z٩.ߢҫޤ8WF"*^$@9N+!Vx!/2NZ4#lxƥ>D _+.'K1Gz1iv vtFKyH— yj H X:Y.l}oŌMT8 N= RUخfaŖW1cd,x1&BTt.AO`m˿09asvѮm|Ȏ4g'EGzsx4PBW (#Lry|ґֲ8a/TYm*&KG*4_mr2{;Q>==T'[d}_Y C:\~IG2s6*Q}J.J}"[bdeLq{|Ĩޤ8#cV-.35@qNV=_ULrQ]Qt#U{یZqx[XՅS]qԢlG +KGQܷG xڱ?Po-->m\oGR^eLUJܲf [mVdn9|9R§p獎ꑧdx|?PmG;o/2{{Vu-+1J?aH =rzc?<7Gl9-@u:}\(N<),yBESGK.?>vʤr'ottx5QVl!g&2;^0+g5z&i&v~0x_vȹ]eJR`(NzE>'HO?ȧC=e9|6ՆCޗG(z?>]NkOvg]>K.\6Gl@ٱ;q,A3cK8ِ{^QꄗQӷo[uRD)curoGޟ'rqғH&˷'v\}|y"!l <^y.sX@/|fd܋3@ ~[2; ۫U\l[2šzMP&dQ"{>֣z3exI)m=L6^v^>!\6G\njEǹd3b_/1|//'j$RԸ좟=}*>m#>}귷 ãh03-ꐉCFx2G;QF4:랗TqWQ̪Ӗ%bc@kԖލ[[Zv\%eew݋quCS h%M}?~Э\uY )K>dWX!|El {'_'"[QH罎*>F|zxR{8jRܵ4rJD jvr;/zX||(1seV}Qח(;tʽ@x/`e Cɧp7UZ|OW۵|>GZiT.OVrL.I_ԳΗ.n,\v\VzT.'2S0%^V\6I/H,0qliS&Ηxٔ8ml\'j.鏲(u׉WJ.*y_ {O:7Sb.e1Fmz娷6r~Lvy[ O΅+l=miGVwy{De19^x{;$S̏p^}JW1jS4,bb WO.}6G\㢵[%A/4.,U+ve1kXc˵װSjԏ)Ö}r۬_`c 9ۜ,=v>aEDžx[Oj<4Rh7VGk6NYOx9Jd%S K]Ǻ4bb]XAuʰx걞ϗa$MpK&*lv1 ue2 R~GS~E1{xXy^˯EY.Z4u8F@kl$;_r܀ aWl ! 8{;oSa?N~NW2iĘUasFoO:oWB&V]ΟlCZMG?׳}xu<^X#i\uoNY#p[$DZS#x+%l#{\Hz/ɼ~iҗޙ=UFS;+,͕2_9왐)Nŭ6U^rsK/Hh#׎o3ȸy|u:+mfi0\X4C^/^?օ<)2|?_^ ujhOڨe|y׫\?֒-9ɀ NFOG%Nܷ5(ڭqRGֲx^ƣ~ǝt{oʛ#pF'߶杗:턥9yL9|' ilK|jԲNvz;ʅUxzG dEwG|HN\u'b?Iu^F>WԦ-\Ա.\NG;O|P&t^F>W-1x\R7RFĜMM,+:t:s3uiyA>`#>Wj[Ux4d|8Jzηlr:r~9[dbM1:}9N=T2y-O@2=51{>VA+q/y;®TއCɈ/#J煕RQn|~Xes7]m(>Տս]G]z?ot#۠.#kx{^D|<Ԗ(XkbŋʾI#pF@bc&>KA-P E;E'O']ĨNbܱm|s~\F 繸:k@Fx9XH%'Ƣ\:^_ΏX-ㅍT>)ꈭ%'+4{NyOZ(g.&~ǜs2os6c'Lўfi2㱛y %w tWYNz%#U.'^X)PU;9]-?/,z 0j'r&+kyc '*{e/G?ҋ GJ{o#j:b}}Z4:m%審kQ](#Vz Gp90e'&om"6)OoVcԶtɩ\:Q46.bb=d۳.UVr}){ }t6օE\uLr3=!*|z]LrRKy1=˽oˇ0.?xl$+iTXaIŗsrx{|;@VFi.g;EtՆuӏNJyY_r2,ezţx#Nr Ni.ƙig6bg'(,~\ {>sls9R;Yj@z1LL'cs*=>NT8kO&FTw`;q:z}Yq?wƢwDxxaXN2!+yla[NUlc(V:_>)K^u*ާd#d'=e*6e>$Wmy6LrV?l|H.;Rɋ{ԫmLr4W³¶īNmj̠}ƾzGF~6%69SQ{G{ʼMNO qҋ5@C޷:)K%38O_Ծlxmc]2oɎ:zİ'xQT1}DZ23yn[C2x;6c>Gds 2ɬ dVžt/5/x͡O`~p2pKLUOKOI|gå6{w#̈́8^W|{;G^rͿoqⷞJY]zv9v&G>]s>8{v9v&G>]s>8{vÁT199ѝr>iW8옜zH5ʧG󘻊}~_ M+˓` = Zx뜛KNg`ژs<;g7q]O]R7~ށ;݃\gރ=W8D^xQ?xNywzgptЁQ?xNywzgptЁQ?v.}vcݣyljW3Xi='Իw+:u򀓘Ýn 3g2˳_jg;o^Əz=3g;wls[=P\C8S=ݣ/!ycccNJd&#'1kxv?=n"Sy";s nuCO89bxGƻnG=[OpzpuMxǮgzbn8j~ 5}⽞3ڳ;)>zjߋrF@Ѓ&Ek[?/N?>^t+Ӽ3^}طkn}" Kh#Ӏy>{΃<Ѯp|vpg9|qk4<{г98p>`=a{p{]YE`6MMY3{+ujm?wclۻk4xWFxտs5z0k|Wck >pkIͪ_cQqosNͱLpWgMwGv|t轧;0;g5; |g~==ѷ{xW$ #E$lť9zxSޮLcwԞ̵9{7у$2g7kx} N}ϰ_h{`sOX'̜h8{N {5܎]p=\ >Nuawϳv=1<4^Nî u+t=x|7pv oY\m{F.5ܾK9t੓Oc̞>OفZjpq`"O3/y=n_{W:ܩyg9i8ZL;4.ڧyHwqZ}W0oM\vE=Y#xn ht p_y+g?1襶:1kk4OΙz`p=C`{xu&h&%'os| #w^po=#o3{8}~t5j:g{ڡi}zo{i =low nl7|c^V{v̚"{]fC8񍏹rƯb;ldքs?3:]&?'~$b<G)Ĝjt7}۟#{{j}||yN/u"^И , њ9''#5D >pjp=xN g"\8nkt'Nm^c֛?hښ`+:m.S\yLZ#^Su8Zr4𻆗lCg~<ͅCz+I{5>/+iW/ZЦGǕx{摯~rf&g=`WΣ+=C>xL' ~G3q>ißьi}i=}=n{ ]q{sSџݟzy}> =8D]ODވq/yΪwjr`cΣI=zFiY̥w5^/<]9$\ps߫G?xוbkݪ|p& B9pEwnsL.k7^y`6p:r?>lvOȾ%gރ]M_yI/l K?z;?&X3 IwޕWϻ9tƓuf9ѥ'gl%";w͙oe .xc;|Zz]w1hMzpݧg =xxG n{\U>q jpS[ؔO=|5q7qᦷoXoss;&ƏؘyD͇G fu*o<Լ}17c5  ury9o9;Y}z]ׄM={G?sp {/sAny>puM?q'M}rdzO#5wIg֦v:snupH͝JIgc<~?Ff|<÷?&sL!7$A:N"|>={dS/e9y+~<Ǿ y4輻pwrƒ;ۚG9{p|=2C{1{9\z+uXh魸,<op2^jx  {Dnu?qvph <1N ռϺ̂3 ־zҴn<#o.ƨ9|>x/lnpNc]h^gv{g1~& oO̳'Xד=3H.I1nycGu  0׫<\Ĝ\)g-pN3sᝍgj-wNv9s87+k>ݮ;+w{i|}W7TK<krp/[k;OM\x|jg7떙ۘkLyƂs 4`O8Nj<}מa8{|th?}.>c݋9^jN5<>i4}1^p98Úp3n]r7An/p`|1~aPÙp5'ڜi~iS8ӎ{=)+ YDc`xvO 98`;_8+̆8y›0k=kC?zƇͱ;ӳ.у.}s=' =4go|+38= Ob=8Ǜz09sC?zƇͱ;,C4@4Ԏ֤OHã?s2Qvyfz6:kǘp\;o~`mz#<>u?\^'~˳ϧ7o߉]N!?=œ\Y +lk &n{w]ή| 7y67: 6y|4D|ۏ>OpRXN{OVx Fs'pq*.5]?>KcMj8~Nsotfsp&Ѓ[<]l}wyY.8JƯѧEnns›B ?>9xܪ;=k'.g>um=U)?{:Wu?8=8x6o=:=4=W^bhEZ0p;}3y8z|Z3[k軶狟1hq1jZѷ 7wO?oyN]ブؼ]mqw{~~0yÛ"ZDtǪ;]0^;_чC$4ŕ_twmN滞լu|?xYEu|y5= /+jc [|IENDB`yubioath-desktop/images/yk5c.png000066400000000000000000000705761412677075700172360ustar00rootroot00000000000000PNG  IHDRZ=gAMA a cHRMz&u0`:pQ< pHYs  iTXtXML:com.adobe.xmp xmp.iid:2399b6a6-dcea-43fb-a5e5-097995a8477f adobe:docid:photoshop:8dc2e0f8-1dd2-117a-9834-ddb339f7a8c7 xmp.did:466B41F4D56911E694FBF894D99B1C56 xmp.iid:466B41F3D56911E694FBF894D99B1C56 xmp.did:0c831759-8947-9d41-9b32-c406ffd0bc2e 1 Adobe Photoshop CC 2015 (Macintosh) i@IDATxUߙB ۍe *巖˺k]{Ei IB 1{s{/sf.*ܼ';3{S9ߧ\ (P @@ (P @@ (P @@ (P @@ (P @@ (P @@ (P @@ (P @@ (P @@ (P @@ (P @@ (P @@ (P @@ (P @@ (P @@ (P @@ (P @@ (P @@ (P @@ (P @@ (P @@ (P @@ (P @@ (P @@ (P @@ (P @@ (P @@ (P @@ (P @@ӕ'/x Jmذ!}Xxq/~ (?S$`/_2-`#<"  MYf Ҹvۣm~3%kfƫslwpIkF{g0/Z7Coz~[hB@? }Rg%KpJexpGNj;6=8k|nYk byKTp8"SʺH=KnN6>S;4c1P(h$[E_/F/};Y}_Jx$?uźi.1wΗ~5mmOo7?w j~ݻpN Kyzkݹmu֍ 䊅R ; c+KF'HJeiV ouTz$ G\TUջZHD踢rdWEuMa<8T$:u#oG>Ih XI77kNsrQSfEH,jN4\[&3n@~V*`u#ri \TLȣT?:tM%&11:z]Ggq55.!mD|7".əgZEtb޴ɻo]]*E+ O8_OU= VEb[{w.޷#?˅2l kT1/M PUUIy̥*Kr##qCoj7b}\ޑvOm*N9BLfA2Йqiã.0u2tO%rϚȶu7}]ģYf @A>@? uho;n}}L!-I |EmǩnVƾ.뀍22L l` z {)^jL%6V.*44!ƣkw.65Nirٌ7<LŅĭ2cp,zzݞo]w1=mJvW~ +xWlU762 ]P܉eET9TT%I6e&F@(rZ̘//|}'*{&)~]2jS3"iF 3фKW'Ն̅vQ^Waؘ{d;?.wQ%'d)4)`sph|yf_淞ݵsݲ3rTg%qMF@KXȌifQpo}dhH=THDK./Xե5'j,3' OH ':qU11!&۲Ox͜3W$\wZ7նXTuXiJcl!G]=8:L6:#b+GV~?{d*T8%jhtŷ˻va29- BBc&19ez@[Gܔt5tNroK;\"PvZM1{u !Do3\}):15#:inq}u ͮ`=üȖB;`ޡc:o|sNv/|I [zs55=d='shpa|VLX!J歅#UHˁ>9PkM8Y݌tȥc]-\8[4Mdzn`@|Q/H37rcE7 {]GRkLRb ^%#&eta~?+%?$aXS55хk֤/^$u3s0u fJ?wmw81:ɏe \$Td"iɻFK]v(IwQIBjJ%-6q!TpE6#>7kc"̌k[!hn\Z tV y>ufݝq-I2TG[cMRN>{}#tĦ: m!XJig;?W7V˚3ن\,H'9>ߦuk~,nhg |{c P`[*]7J17}Gk)v:ޚ7jK k%w!nA 5j+(w( f#ҤT & kRpm:I RǤ$d7MssNu'U[aԆ*7*>)溆snpF5fn5 e!_]j|H΍ zw9Wt8O@ IZ{bus/NnL2TU\O9- bS]ԥ uqe+zxS[; }zlj yx\R!U:’͡3#7fov縆MnԤM ^>'nyhe)/]b.c M T~5r*F2 zOyk{sbH{{-nKʕjwU*e;^D[ȸ Wc=aN\+M XfZ VعHuDdz7It5G E'/H7.>5}-ѽDzǻʯJ3s✡LukvErښҹ/S8iєȞBBZXw u=j4J.˻Zw4Ree_.8.?62<5k^le'I{'tO:mDž7ͬ;6mawDLdF% 5܂]k▐~ +I $0ő\ÛM k@_4#N9Rp]G|ﶧ\U=G:kw/ph4E-Meb5C㿱u՗>%歑;xlw`a{թNMw ?.@¬l tLA{w.^lv+Xr_~sU]t4*W.F\U~BL97<-,T^m9` DcU鞓Ug0Ttjw>:4A52V,ΎO[9gJxͺ>wݻ~{Ý{J ~ŸP#& 6yvuyT~;YZn{w].uMiq2Cmk kX[!|1v,q[̭=9 |F˗nk/f-.nr'ίvu)5 0}qyܙ%H)!v)i)o~#[bŤŤ?dOH ;/Nlb.v$]~wdh }ݒ#n\,, "Luwuweʌ¦DDǮu F@Js Js6Gs٭]֫^E-*?{gKd|6?g' G;{hLф܉R0+`F\C;yϲX$=%4chyJ_?\$ .d 7o4 o,㥲3N{ N *tMt^vハķ{ l0 ֢ Zxsc2%M{gnku[knd"_L귖%d[t{v O#']ܻh mJDv@RSq Cidۚ6&U "9Wn%tEȂڭodƲl>z`=6;ڻ @SG 3Lځէ4x]yE"UI·ildd,Yk/~^@ne?&ۖ/gڞL#Ydaڬz7cZ^GcsoZOvLcz<= /1>s0Cﶗ@\vE+5ؿ/ldu O>W%K"36XYCΪ3oj e\c-C0a 0qQit|z1Զj-_ʥǣ :Ug0'S D݀_fZ|&&BWko[eP_JU9ړ8'UzdgCߌ3Z=8AAT&>9 {6ƳSZ>6tm{y7N *Z&ZCpꦐ bv$@6+k9f3C3462@mJS3u†?vwч7&@e]IŒy _Igo7Psζ 9i l:]2uq)>"Zk-Iޭ;ܾv֠.-i1&;7#[uB+nؿ}AϑWX>O|zƵ_ٻHN "ۄ`6'J4&4A*}EE!k~Y'G:_9`lJ].Q[w%`C_MtZ5p1領4I:A7םsQ*".OCV(dK3u0/Y9oYm;ʍ;<<2l dLp`C;x51 <ӆ0@<^Jݭ7R/Voz'6mQ]98Ҙ kuz j pe1H*# e-4 ^57;_R۴5P>@k?rE>:fBbtWSщ]{^_ 2i+vj?ymɞHs$DxI]%FYWݰ׺_@+:a??нkVc# QŲe+pU$pT p"*SaH&}n*lW*A51"@gC ̳ҔFz XҵuxUUsoǻw5)GڼSKV"t/[oOtoϟΆ,Q!S;m*Qyah0#6b٘bXS ɘ5OQvKKKl|Oμ;!t{?Gz{۶>.LLd B{%6jlXVvm4/!ݜplWv:yyN :iJ=h4?do~N}\Ϋ瘤唵Hk&/t ~oީp(^+E3a 6m]ͷ6C=-ɡJ \`}ʕsRNIVgpaz}[;eߎP43_Prd1I[cr!ۤ@[q1qA1fy"e !6r^2(dӦHnxx Vf̜;K}T[Nj՗?ɓ = uGm>B$^.ǵߜTvQڇFG(v~TyUK%Sںȼs╧.HFIѓa'44.5&U{\z̝oiӦǧd{ƴgy $Q(w++6%:MPQ.g-iN@@>Bs $EN N=1l08إ/rVՍ65Ory>yLLc a"9@MH($ʀEw &Iu֐ʦ2rR;6TÆYH97px (bŤ5N@1n`*n<`ijV,Z[\粅lf<<>1ggלMoƪTx4+V_/mZNŦc8ܿl^6'γ>*ț%ʢV4ܩhu5n۷ޱy+;:(̜Tpŋ۲n/W|7j3Xc]^ak&9dHhEYEA *&`*8sB9$`Sʒ40DW~T~qi 34T2JM "uZVwZBEi(%BW:$&6tS;ENHs.zD>uhJ_ R&L f҉TazctمxJ&] $']d9ݾO=;iG 9苄DkAZ%P2V94L!ѹkT6#ɒd#5窟&+iA 9ŴSHSUGIh30d`U? $G˯kǺIa@e]i(OY:0kjPJ*y<؁)6`cqyi;EP *0RRZҗSm[[km ']vu!auCY[16k+NZ"}lɳ֫P35*]?ݰ۟HaM}bLU,iyg ,Πe'9-:jt i/sdj$v*겴1 1am`7OiqMMnhضU,:I94T(ި P1mM^Í`%~WVϼdg)@w2eVkB{.{j̆ 'UUUhhnpdB@,&[ e1oxǻ.ݷsz핀.h7&@ŤDئnjpbw"GFYN%%l#sxzwaz;ڏ gw` -}N79FGMd'4 mldt p+=ܨH|IYsM)418_h`ɞ땾vN6ۀʹi*e넗Cb ͞lLd4tzt{|ݺuuﻱs@O@ &c2p^ >oxxHY$}r>ff{'/ = O+oPfHv; $iSW>sΜsǷ R9/MHnO+]qBOs+CCPyƘ>;NH̅d3BNaUF{ "t.ʄ|~G'^[_mhӟ[$;N =@w,睼cˆ{zv7eǴyx(d2Jx'8iA2{WcNihjJL[0S_De )Ѽ*BvÃ/5Zc:S42i>k΁raiΜz`K":yqz]MTȫriLA`CLQIV{DP@Da漾JՄ7[jwfZdL?rc.Y w9m:6oidP狖J,HMiyqŨ8܆t7Qn R1$Y n)'zWX p{]FGVKEg\@yNɨckdMhWY1{N=gRo@U_&ӧtrQdtBʂT.`gE2Soc3"/;&(&d̘@֊Ry@`n0,_ok}{5%- Mr2$ 廽4 d㮻554ZYd g`{s X˨̓6նgnWS_/A9"÷G<_`ÃЋr5ֻ>9"G>+sH{}6ߩVTgbwʵgY2 Qݍ0Ԓ):`$; z))/ WH{aX%55DUܠJiLф3\^FgzN`cS_Tu:+*(5Wx7Ouy:?Lj?3$O~_]gvuFFƢgA P*v5iza94qu]@(ѐa*U`N4cu6y3dK' @0S}c=/p6.y0({u  J; u#uS)*:TqWy3g%!PuEe#ա1H*+NqKO~e`f/ С_& ߷{Ah(AS1bAӂgHczD^U&uDsU6 lXZƤN2^p8HjT"gbQ=t8Fi;s5fS׫>UG*0q @fN__}7+MQWAo6b"4h wF'"31]0ȞqLVWԝԛҮ#O8O}S /N@ƟW)jx?-7'\ӽo$ ldg# Z$$#kSQ p*jz xPVM 8>xgTfLtyU(CBjTIـG;`#5jզ&;Ph"?@̸ގ}|~F7 `‘ybaHbK3SaW&\Zi39^ gT#RwZJE ѣ5U?_vu]?s-ܢs;zWuE XA\t@4.e`R+R OriA' 8ɔ?+QY5W$!Re o`SmKOg)y3_t9I伞%uF^sOK`6PY^[v*aۛ /@pnH| yn_n~ MDZe=L6I-zUg#WTټȣĨ0(=L5wzM~*j:IS.:m~\!Kn޴x)] MM 5\{ݭ5 *z{\b)Pp@g^Ou͌ث`A?4ݾ{OpThʠ7K=_$)yҠklㄔ&s;J+zZΨD(!@PM9įMj[>ϩxooK;ȫ*FF;Ia,T@_Zlȋ$;Y?X+,dJm}LØSK-&/~N֦3قd5xa5!ـW|6<hVڴ<܃+XPT}@;RLj`DULjoƼHx'Uiݘ$=7*pc^0^-9HZȬ;z:If tXCrF]n<]0u[|&>A@^6!Nel3B&C{B{/Rv[H+'\ { Wk.IՄ9gQPT۰lowSH^١:_ڦ +HgSc\ t0TI6R0E7q^:!%}F=Lyz5*IysrYg2Z^8 }9*Wi5LIV1߫OO)gGUk0h/10C{ 3H:'(FC?4W'S8p)>[25LORMn'˓R潟P B%a?ޣsb&-2Xb GJ2@ 0;؀ }5+25#aqJ!}m(ͧg&Qf=-2a0 @T%kk$֛C{Y^м` w VĈ4uThg#,ױɽ;j(s7-i7>XHf!yY[vDv`K65瓉lJ} q @㴱;kDy L5%jƴh' {-Klr[8T“/@s`I 746Ύ=,ͣ.Hd 7@!s2)<*8mD]FG56X# *BS`uhN/l3TTYGۨ,"6ww<;5);=rYEnɢFW7jP>ޛckm O ֬YcSN/Rɚv6t"!섶[Hg*Y`Ih`vN)F@36i_B=J]%޵sȀ2>4T j29 m|sj?ݕvRY}̙Rcr8[iկc ڠ #&*H I'&ܛ s_S\6-g1:>4>I6v+~Xi%k݈gx̟ɴnmu /a/]&pȸe0N-R{=:CdcCKݫL9m$-,eA%L,D]IP#G8fBY\Erܣ<šg>WP{4#v@@q[χ]HxQH}L4óWќfO>t˗MwS[~'B}Y'{Տ)n[wQO4cwWHT:7mJOn u?`9*Isݿ|nfj݁Δr{w Oi,DIDAT)h I^.H_^^wtXWli9^oDWqQ ƵkωC*UMt|_Gj:M~[^[޲yk?#ܙg[|~ٱפl@^WW-j~Iz/ 6zYL&: K:N~Vc 3ܳ,0bk4CH (/"sP0yH01SWB!(HLKɇOq-B"3߶7.{K?=sbK_ ͨ ҟի˖-`o wpsKʝvSKz=oLswy4=RtbcV 7'pħ/+'/ y GhґJQ ћ{z\pr?:i/9-X^FvjuƷkon.YOVWⷭv>wdk eIEPk M sN}icUu2zqRI^OV'%A5cV+'}/3xy;bRȟV4o6Uj% ;ۻy^RΤ@1A ,4v=>eIwͮFq:&\הO䋡tk҂R PN p=__^uo?r]egJU?D7c tMO xpHJwt?敱no7k1;-$.@ ʹv=m}dhL!$p0@J@xv$$a0~8Teo 8aKx 'O:y^0BcR b>BۊA6L) af$><|>VtSU ۞-ek+&vta*ޱW]{sQ'OMqӆ+ mEv>Y~;] #IRݾX ]~]_hG}مthHo\` -!Q9v=~pdH=lN\+0mW_0 gt4,+!)i*^ľNpaV-UɈ0nnPGWk/=9pw.[ n0b*B *Ɋ4NM=Hv6N47'r9m/}{ p1}<>{cS`tHtʣ%xǛԗL@L12>1K%#Hτ-zu߅n+e@5yZ拪0IК5k"Lmݺ饙5;ww۹wSl/?ルt<qYJJBWC jےNg@W߷g̓n'7i};õ+Lyu׼OIZ<: jaDЕ"yF#yvSIord(/Q}}^)pcVU4Bp1V+^Ib͔b5xaќoW*xt[Ղ?߅X[YZYZaS۟Pڇs?w zR)E ܬYdE2G \ch6xDA!ھu)MO;?] [+ XU=qwsT@ ?bE. v1 -C!H5òܚ|Y{ Y0 gt5h{'&uHe9S<+,q >Z[!gUIˤ [6]X {uו.W9D4mTkII$7(W @x3H@q= y4&~|-G]kђ1MǍ h(&T`UjDz9yZq}C v 6ytʵ5`GKkG|!DwiYS眳$thLN]wnF9g?( E9Щg|BW_߬ckGbu}4g xqqWIv ! 2䘻]db [I+V-9hsYe5JyRz-\%hOpna@gd G /&A}.n h SW"ۂ힠>1N$k4},e˖%B}ӱر'w lQ F{ pOcd5Mu Xc:-Myɂ6ѝ{y ;cR=#nu.5IK^}^czL'@ @/ЅxkxG?G{Nwvkt4@-&8T G騛y]tUdcO`'EMjL6olvOmtty씓w'd{|-=M,?7SD6dR`$,hILACK>eyErZTrW{ݶm[\uڳ봋L;Co7nvW_s;Fj|DZ="1! yۼ*ƠklhSf5x$/LQ 6F2cOalj'`eK`Z&BYpvP%@D]U=G" ̔g> GD+Q&j mRKb 9{ြz>G?N{|9W}lW]q >I'YzcA.,dHa{%h"!B<^N6 D0T|` l}S1mnrP-{|= n޼CmoT P&3ǜI]oKS lN˘iljtu'%^i7[:jI|Y@A ? Mꀙ . W:sgA=c']n򧑳3_;j- ՀF"ᐚH_Vb~4ba=|HEű lu$tI@B9ݰpoIS4vhnfռ۱m׶J*@ϼLb UZGgTFc1=]$25^ a>qY].FtK+V`lA FȟI vo-90y瞎ӿ_˭{ǝZz nμ@ ҜR h-2gYHdn?$m{HU@ew'i.Ԕ鎊/`ӮNDr\vxmCoq{]{GZ鉍v" `c *YfUfmƄmچMSDD7x̍rfry4YNٳZv7| b@/8 t1 Umo]p4}{l]=%qXh"sX"نMD xi = -RL_<)FeZ~XB/Eukymܯ:>&.wםڶ' (ov W9(=moL:Y`FT6m'08^@^^ >냀+p3QmPp-Kr0D$q*TݲW]{nN^DeS"kJR9W*mܢt cM FJ:9R8+VA0=^iIt@&{(4{|;hK,4ָ_vN"yun®>8f"N4 )|w]QA" 9tO203&FRgAR*5@x͘>ˀԖSG;YSN?㭜xndLz2e6Պc(~a^ ѩ 0-v?CKa(5_.'vMw FH7(LF5k_ z#cKKd6TW-Y|-sf5ŋᅅ O!3mwA$:EmIXd#MR%"ʴm@!֭wKV˦ /z5IwWD_757Mitd r9aeL[ w$wy0h bH)|sg++T4|+H/r LJսH/\ Jw+V.loUW"sf4hz@zINinFm˜ #\FC +ST|F(#wH71S LYfSaS*m~ؑ9ԙun7>:ɸ뷃3: L=ן8m=`SڸQPYJd"Jǯ'Ny?݁`YeMI t~&@«V=Y.^q\nbbѶ99"THrBJ?Ac,ܵvu h˞t6 xa;Uwo\0?UvKTMUGYEwspZvKn[V$QgB {Uu*2a(7xb$Y/xw%kr+&W@wox+`viAm5ucQqxdx mwؑ0UB:ngNSLIf*e4gjy~]i:3~kxg,?Gj|ud#ݴ7uta&W#/R ʀ.EUr9溏gnT )Ks7|ڇԆjYhmW"jݢsǺ7fH@ ) F}GۋZ=Oir[s>[ ?Ѝi*εdBH)%sΝ=.UyU4 4`4ʽ9ʜ*\fz!xuY}tsO7+*~߯O +`_:%&Jgƺ&<nԩV]v}#s]8WVRb-6Im GZ\`&!fV&+)fXߨM$&mNyO~?-=f;w>G UG]jhh.$ݻw;tyܺ-ttlxdd&ؐQv+U(&3&sowp '&eΪ5SXƥ1]]RjfصFvkZuɦU[ x)o9Se?!rwxޟ_+yT/jZ΁*JfϞwn"G_C2D>lǔå6ѣlRF5:'+k p\m<*yq2ꔧJ),AzKKwpz+W)y^JyYSLMC=L_(7';M2vp'\,ז3D\\WZqi >m~u> <zWS!?u`?bҨ"!r}ӬTNwwfUI&N["up&@PGdfh$vI-_$%KjKLwbTpprz{()ɩ]Nlnhnm%ߖt NuƿO/8k&Y+peѠiÛI%;_OQfs8BH@!HW0JW=:VySSM*c|&{2T8Zd>uvJ|($n)RK;^TTLWf9U=~InPSNb q^)hN9Yџz$On^ڲ gOH ȑ)Ͽ«-h""O#o]nӛԭsAwKU+${yEE~Rj;pJ.>s3[j骋nee9ЈdHI˼Ԃx\" "[{w>HYcxĨ`]7od' ^iminȃ} .CMN!pWa쥿}fͅj7]+M֖b#[Z:9Q(*L-jG xmp.iid:2399b6a6-dcea-43fb-a5e5-097995a8477f adobe:docid:photoshop:8dc2e0f8-1dd2-117a-9834-ddb339f7a8c7 xmp.did:466B41F4D56911E694FBF894D99B1C56 xmp.iid:466B41F3D56911E694FBF894D99B1C56 xmp.did:0c831759-8947-9d41-9b32-c406ffd0bc2e 1 Adobe Photoshop CC 2015 (Macintosh) i@IDATx gUy:ciC:@Z&EH@z WxATQ_Q2I2 9-!mڦm M3g>g]mυFI֛~}߻o'_GpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpGpPbgue;@k6claxx3{ټw??31֮]6,vw%;\sM']~ԱOm?;#8;aÆ8c??7\nC{ C>ނ##b`&ǎ/?tC3Kjt0Zb%rf#Y x6KfٮdtNNLNLdSΘ-8XhW]w.9vh(6GUG? '0haG8$nmGvxe'(Mά^hL/|NV[lC^ ZV-cVH$RiKbwlLzB[ǥuBlҩ|輅ٽrsٵz%ǸxXaCظ~=sr*2#~!Gd"ڎ]}uB'Hu_ן^2Rxmd:z"LLP=Emyډb?'FzTHҡQeVLL\O$b7bxH !ﵶO抅 v{{zޥϼw^ EO%]/G#~!Gd nݺƍi OY;v?G^,.'FrH%C+KqqxlIY%R!T*)njls;$EVS2R?u:L{\dJ|;"X<)}ɆT6t( 5XȲE]p-c,.16k?yg0NgKwNEfekJY#{^]~^\OJbP,7uk!\-i-9OEu~Im:ts:a@Λe';%)CYT#Vۯ23P*HE7"ϷQ|Neo"rE6kT4\&g^Vd%fӰMc*Db|]jRuq>޳"@^ j'tntOt.|XhKf_鷼y qa\\|G8)H3bo?r`xq<ZJhWĸd".m4kިSUiCI! :7D"b'i&N7@4yGuinDRlJGC8f沊WM+ny B6P;=|ݨKBrp+V]y_Ňw&w/?N?X# ٬?ھkШPhNZO2l4.$[drEކQ"uHb听> w:ěbn;B!wvQ}&-Q 6q,>k5!<帞+zO$mzdمgyK }?e/Qu'Y#!!G#0rسnZt-޿MScfJD+M {6yDؐekKV)Fd[ͪb}Qb܈rΤ2RM#<1rƜ _msn'D&ňgR31yj_iqC1uc*^sh3ci'cJg-|27z.;~W;~]bqzdX8P|# |[[ȱ"D$"f;"MBreC$;\J8Hƕfd">Lڈ%뛱CԶ=Ma17g t"<r\c"k(({JPg0t]Y)ㄾp}!@V},ȋJec¼¼j֯_j,|_o#>%Vyh}zUjxGE1qT-qP]"FS;"Y%(ŌV6Vf"xchIzm((.u/ T@Or jZQ"AB}Zd hX(ÃU1`~--;B.{+|~HRl}cϗ 0#Ll?4xg>wfr\٩f\I&M)tThěcruTy/77m%CP5Cn$*:^/H\뻙l9 *v漨jکW5$Mnl__L?ԻjVMGlf4zBp]8;Iv|$Us_]Ow _" 8IC@$#Éy;xc*˚P]FԸ!V "g( ^&ArRv7P\ !h:yu3ƹ cײR!SC pqm;ۛ Ւ(8卻ڌW/eu&`xn}ÅEuG&zL_m$lˮwDCRߗ3~=8#pR-cدwq׎?;y5N%-krM3x_$JۘrC)GeNIf(2!sJb#vIU]!nQ?d{HIL!hMN;7>爨1D;@dt7n4n<K1c69\_NJZGԓX ]wO% u4_p}9#8O~Cwobђ';ّ&%W3`C0ZGp% ? 7:$g:66d",U !(tNK?"GD"Kމɍ*g]+3 7a< i+ ?ODF>kǨ?QΥ>2`]; GO_C!5길 ԴGGvϾW^s }xڎiMl߸C|9CpB?Co_#p2XKg?M Wk4ij + 8Q%MΒ3dhHBCNgMْr,nxH4!E5Ha!݈R*Ds,mgۍ)^MJv\nQa<9g'NQG—U6E!؟>>!`S`d 3S'ڊ_\_^?xFI% 2fF7 7k8K@y  O2X\ y3oӗ]u)H}k?B?n_#p򫯾oz7#ʕfVID‘KY,&Bb'3& 2ŸUYyD` S(Y9h uYϱ8@I!xc0YU&A[SmDBxwo4L%"6tcr=\/S׍Y0@0.PQ@_-@Sș5Yށ7<3lS/5Ʀںџ{/ox ^Pqnqq8?9OM~{nد?@rVi$ >Ƈ[*f'2e* Nʚ&01bܐ.mdM BDqwҥ]d}R:v?7]:d(1˱$=`i$9?W4&ju]gP!@QҨuΗ|65e 4eШb"c6{^J܆hBL5Z[Q?l2PԐ_E}xZxem~ .\8{ur# ~IE`lsc橱;3ULݖ^қcjE|6Y[B-Ď2h4$zl7Cre.CfH5^ؿ\,T,MmL*aT) >28f͵sW*ekGm]\6_~73=r&9Nyɒ1?Fkĸ k! @y# o.z0 ,@x#L'҉w> /\cH^aї3 8'%s(^~cjVV5o0$]x@P0 ub!hwH $Umڗ kA |]k*ҧ\[mh'sɊؘq-J:*ãN^mKʃ;%=grQ+yageNv1Z?dޑ gC 8B*SW^/\W7H]/:Os7?}Gmу fL6!Z)ȠhX. KB-6\نFۉ([*e(YWi}* >JKnnj1,F>f uϹ9g=$J{w, e.w.72j`pڡSw\+s4$R\YkP\N\㍟x;puO6|qGEੱЮuhiR|SKU "%3Aa&4r{Y!.E4~ŌbǽBg8+gƙlD(E~QR)Sɐ5*f.xiMv#zu: 8hV;*.}4ȨI)+}7KTSnT Jc~P?r1cC[022xt 2YebI,[v5ޣqDV>rz"1U9'kU,Xk~?rOrII񈑐ũE<(a!%>ލ2&DdEIG1qbdSrLuqu-.cd2*㮈10,͔6D#nmGDA0:OD$}QtUƚ۵Hf^d@#@=@MG(|0zs0~O/\l^%]3tno61<8w/?k.ٷo޹~X,Gi# n]Yξ>zxgXHNeq9qjK*Y!ۈn.!kZrHȔxDz+3lbQzGmU޴}71韚wG#~Y>i} |1ӈ3]usJ >,zH!xmmD=Cr5C*!mT !vC`߀ޭ20աEЩZ1~_?}'UBa'Y~NX0쮠jt=A.Hv>g<.ei_DZՉwT^]X/!NMKr~H~>fx[ݻcZ%KA{]5d: 1AӢRVdyCTiKl.oޭN8DD̚8 @ {ҴggBB(RS"QuځQצ!V-k?N\$É_JyFdE\'lx\T+CQYgҚNNjd WEĪvx! Y]5N^L T;z!-^-5~v v^8hR1BR!։ǫi>㕯wݾpJxztKONKq~R*Li[u щ/}|5F;RS.%E"WAtSuK,;JUP(u#XQ--r[X60KĎz7%+K1$ӧԹ[j7+{D}^QbrT8Y>&vEdN81 ڡ'^uƘڻ^ )NGPRU3:lpb:J<(`HECGFufwW}1oΡ&8&7/x(|uםO_ƎzfbYr9^GV5r:5SDžpઔFCШqrѦ~ġ!- 0 c>t>{U5bjUm.f?}|>nl(ae&$ٟ ҸLjW!uU'@ pŷeDz.i _J6SRHtBH=ʛx<\ Lw5ɸؚ2!h|1Dgu+rbDRe{Qd|9pB?_#c @\Txk }-'_535laf 2eOQ"Ȏ.$PPYŁ!e |#Xčka?bě[<}hjqjڀҦ:K䎧-4kk[Ee٧r/׸ѫ=%_UaIG'T>sL!rT8jb:)y!'b%^zD_Q{1WkE,:]S>/'$Rc.CBlbso ;k ytH,cA\ގV]?2]'ۧÕ58OQǓ Vy-w#GCjz٤2IYw,z0qqҨ*:fWTz"´TgJuL3%N3%`XȱՊٔ=,Sv$\];og:țLs,l\!ϬV/ډvX [,*_T&H:k\}jR"BF!bl!Uvk>#C.E^t^RźVG E8Ԟ 6qr}fzhK삾pBŌ  \)| y %ppLP:aچS؁ޯ^}92:˜G@/#p!ah-_ܪްa]bÆmoW%F;ǶklHEQi4 Q@\:l$aL`ypC.F<Ѽrppǝ1S.2Q"#T=axMY욭Q({sٗ@&DBxlNїF|,r¼T%Лigӧxv#,d/:c]n6.|CkZoh2(4CA*2hTѹr|]okw$ˊ' g< Ź-Wujϼ(w34d*tf&1xБ;Zt43je8@7_ԷX>ů-_>wϋE9{CZiPq$̆+1Ɖ#eLRt1rk+*F.ڗgq^1p5Hf=n|59g.f6ne rV4 ̋DZ|zZt[/"崡KFozNu٧4_0 KQS01]a 0Uk) 'fp9@54qT|>R{TX&8iʬWh5̆|O_*WX3|Ό `0YC?nz3 Ɨ # '' r.NuzbK_<~|l:98[DDկŋ;~-֮=; bi{ZǷѳ[R4=[*W؁,vH!f(Bf`mUZ!9lv@M!LșLZS ," !겪v2),^=وسrCCHrq61c>%?%޸ JE {CQ~qt7i`tR҉W+qM]J9ˊIn3ec1SnQbɰx1:V%a=2R:v0tͭ0], =`4u (h\>2\D =J>}mk ^:Yk.k~eϐtQ8E rb/|+}/J=5?b\ YλluXtdb(NC6%U yfu;͆WH+-MaP6Ñ% i"n #R9jSH:/ ,,?zǦ΅"JBEsUC_75ۡ͠a@$n;5(6I^yovwn?];g,MںSo |ꬁe7[NS;?xnd88d֩j0X0 HhHZb'"Te3z4/ȗRLW`.|5oE.x*zD6{E"zJ8ypśy=J$8g侗*WS>C˵={՟Ho,p0\p3BKQ SS2 W"7~O!ryI1Rš_BCt ]5_\ u.ռDVPyOFa׾|^Oqx2JM(ːcPi*wS xJ. G+v-:XLD^⪯'"VX`VCҸW&!- QL5Zu;bXZG6l׮_xU,vs GclJGӚ~O>}!+b"MW ѱJP%)[o cSRp<ߒ ;T. RΊķeEv#B" qG}Gj?pn}Tu tF 5?MK5/IJ)Q>j)# w]۹GS '!u3 ^]q|fr<?[eKDj!5\ϵ;=cV^7uӍxAnbޱu%1:I™O'gﮆlA!{+lf"sD*FRШiAA$Q ϊ!Kh߸Q `! stфG䈢$βy0<Ɔ+NJfy;Pe2.-Ʉ_K4L j./UkW]۸0XkX-oGL폎?1~s$lyl"#uݒ۟U.3iR.k>v ^znXq΢¢-Ki%Na)rqĘDYиx.jh]\+!|kȐ* 7 yc&`͈Bw ΄g@IV.`Gn}Bf..Q_GG`Æ ^{isLJ,RUt ccp=X)>|Se+ R ywbzJs溅"o BQոztFx un`>n`(nvV:kմՁ[k0"$Q%r#.]iUR>Y+K1kU+ ${áEv_\͛nKh#z/i40?.RKkz¥+"y0#pJp#oJR- s_8g2N{Ï=UClV"\M+HI;τm/CT2 @r\\C2 026 O}) H]qxRe=d<%IJ\g/_߿T"Dw;up~ ##ߺɼfiKzcAzDݔ-إDwn/d䙡8]  C~̛)%:6e:OF?< JDSX^L;t]&y}!H㱲m{l2pc2W Q_5.c*>._=r[/K4-ޞؑ)lGͰ7Uj/xpBF~yAE=@ĖS#*cJB);DC{+/Cpx#U]\Lc̊|WzbHޠan/s'9tg(^Wձ>rE_֗:q$7==r;[;&CRm=kU9(Zuy7.VDRITT3Rݨm&KaUӾݘ:uo׾$g DGa\3g;mrGY 3e^+q8h9ӉNWի@"2։UjU]jL<_o}`*?󉘆Q-O6H21OF@B^4pMK$*1M}뱖t'K֛-u= rgU<'!̦GKሒκܰs£7)A°zМ +. [Qx%p4E:y ?Um$ȂB`B200F^ggwKB &# o@t$ 8H|CS_GTC_tԣ_<<u%ե:öffc"o1/*y ⢴>)'N3eDak%sH⸐gD(haQ.V T+nbD,dc hjV%i̷Jw "8aQ?ҤFp dp ϕ"-.^aAym,jgGZo>d UG}PuN%W|H3w❢"xݨ@W(qӝ>&;'|2x+KX'&4nϽrqxU+Å+5NJP8@L^hl|*|û~Unvnyl&HQN ʨD sؾ_UF!a<&2>eSֿ+w$^T I3Pf$j[/ݐg'\lIe=>[ dѮ#='tZ/}\*=Ei ? 2"TH@]&+1LpAςA{ßqۜ6vAUT$R #hL̕9t>< K-j~;%R!:{`PᘠsN>\ U4k6y.8ߡޕ/g3w["cɼ6=vX}+L5gj,WkϗFY",*TX]xx/ ٫2 ] o{okX?xK wxmj逍g~I­L>բmo_* hBW4O [ 6 %+NI ł̳Kb W/9zߐJ\ ѹȾpN_~a['?Ԓ&zxD-+ x"|0*;c]QYP*233cnnsʮփ-$n2Q,vBDξFu\λd,AUL~GR"Rj8Ū5%jEodgi߱XE/8vy_Ne_~[ܭiC0{)k[~:@IDATw [l;}}.z5R_P$*3؟h*>o9P {¥Яa?srg^vw_Xju%/#Gs,7C~vfdHpp K80 fNڅa%~ ~Cdȃ?bJ4[rGIohx\Y0}qSn#_ʋ~NVaz(ې&NfHQ3ܞV54\]{zpD"xܶZhPq@8! ⫐2RxnDT ːWc8-$d8Hӱt$-sNkٳW =a1Bi?{iW ܻ'=TjÞ}#?¥^rɛn}Mڸq;Ju"p=Vefb}w>1]#X}trvt3Z@\nur*[Зn86XC$4  7OnW#jpo]v(*7Of&ԮC|#p_}q"׋4nްr33ZW>XcD)@%d 'C,zDRZ"kXyz1ekglUp' 3SbY^3x7e{AkK=! )>H_GBĶ @AENPU8ΰ u0֢QYyh>[B]u9a\K4JnpuR/D3/߲m>v,km|/< C;{tm}g/Te$g$ڎmm:~Ֆ?.ܟzy;]$ f4. g-ֻSĻLS׸z Iv28M-#y3]-C֨ad.x>KvՔXD%c,"oUhJއ25Sif {n_Лspe  G>.iha=}EF}|0\pVtkhYߩ3šx:{ Ɉe {|-S|TT[O1Rr*ˤ[3o߹_f e GOFozwzus:Ǖk3O<&[+aסmIq+>F'E&&&` Ѣ.u>C޸Q)d1iu"xE2]U!l9n%2*w$1x \unH]tbӊݾ|a^3i^ZiCwn=/l[q{>o[.1$"6_M6CTY2K~6#T_q*׻JV2{K/BF *cY E3kB1P8˞W" a ]S;K: ՝gC $0a;2,w qZRb4I~87ǻvz"-z}~;Ӕ03% Gv&h,e5aY$GABA)(*|!XT2yZ@v&}YC(lTj?C ?"{ )MB16Uѭ8S>G/fUU':MmuVU=/_i2~_v oxÕ)ПZt=ӻnxlMW:aaϖ2ܒA Ő|=oyاWKYyeV죸eʞTٚpMk9p2Ŏ'e\1ټ}k>65ckv9ߗ9INg(NMձ/ǫV, za_V=U}T+MxJ;Sjo WxQey03 J}sFGqDi,fJP,A)A\W-^^Z2 c Sw@3 W?.~Ëx>LPU:\(,RJOQca@>EU&hʙf} O}ʆq 2Zoy'/ًV/wl=9\bPT9ʹ.COs_j opARS ^sM%Rg_j70jfJiɡG=vZ'tIN,6$oi'觇q~z2JXl$UL{Zذu:#nQAc\b &{``P MD.xA)b.行Y hȕOvjzA%wHAB -Ѿ$h%i.mphV9d1 OrA\ MТڱD'^*l:4~6+nB_O^v>lg.]3ڕܯBwZCsT`-wG1tݯ*iy]lJW#$[rGFمF7nW< 9vc]Ûz\*Z_|k{JߜПt#ظ^L۟ fU#U/Ok֖®#0/Q #r]3QǧDG5|˥&v%\g=Q쯧:!sƑcqk= Yt]Gyy2R˜x:ʙ{1Co{{%R+A{FT@Zȕx¥ >Cft<#-Tͅ|e@ }n'G`*)jgcjBgd.+ø$,ę4"TgAL dKqIYDkU!L끏kuK0++^TLq~ڱao:'xgMGC݅cP -UWpϾ0~pWNGhcnKs RB7wJM*O$(^.2Ms4"Vft;eI@KjZԢ-fIuDŽ{G2 ͐G=ҏr%2v Mө27pB{9#;7}LlMj)f~ R =xQk6HRú0p2 yZ.<nm;؉ggrɊQ(4#^'fL]΅+U>FJ̹4HCuCkvܳH\' nc$Iu5E}3g.GYrUbCvx-@Ck&wM{ǪԕZuXF{<+Q9Og7n/^~ ̅(B)}&mKKC{ziF%<-$AR >e`0@^F],30ޮ ~h:?;ܥ.#gv\ [id+ilִƗwE 2 D Cd?ɾ-AcqEY2vqcƁشmZeFK݋ ǃT$A(}% )H Bs4bQ}NeZ;T&j5Z%F[v:SPTCYg9@?&l'AH{M{`K9E 27DJިߊ5C}yaFwfV@\B }.-DY厑D8R_JaXԘʸjH튔8jwYgSOz`m,&=),77%aB0ንtxżu^ٮW4,Β> ,iC(Q;CF@:t]=^s'DF>ٰedTn2$ Ԛm&[<+sj3^ؼY{1^'KX)Maҥ+nP{3F]BK8 32SHHYRG`7ś:7 uK/1)N˜Bo؜]ٹZlK6rKhQfUYeOF]״%)ՋmFdQ Զij a8 1XsV- n w'͹6eL[4)Py>aԈ;}g=m@`sB}jkvhUm4BMN+ L+qsxQSfn)|L2l.PEs'4Ӛ qOto0j0V$HGuED%e䞷s w'c k(Ө j`ܹW9TYR/KE󞽯x#a}O`LIIpeSJ01dꍚ=!E2Pf<ԻYF]%ɉ7JRx5mUupmàQqɤgXh~ОE0mP`Ԟ!Ȉ,ҝk1%gq OM0{&'֭`mјX4)QJ4Tѣ'TY Y M-}B"J~XQcDKfn3 w-p8z#ِSոzKV/s '9us k w^[vnF;=L"ҞÙ,C nHC9Ʈ.t.REUTopC:mCg t-w1E4>c5{E`(AFvoj g7(й"ȂtMϵ_YqW7^jH*.olsy+WШdΎh0c向y!mfň}v`[`!fCafLQ{֔{{c!+R4c͖Ol8w5gC`bxx7\OH3je7QE5rkvexEd*&FarNȸ[PL&q[O g+!7쉇7R " qyEw_R'^ɚw#5͟sͻoо*ӓjijP}gv옜wKkKWS7B@058=2`0da p󻀰p?P_⥋Z7~C?Դ˰]@eLba4k^V\,æͣ&D6B*)Uo]i1/ .u0)E>*h~ 19)bl`p^Xl]8Njgȟ=C_) m}#bc;rLxLISA!j,Rad1CE)t=EуX3)m`DK;+mÔP?܈vE%[)im>v Hmu|y w4,Z!T DJ2D/J7Fמ*nguKþc3ϻuHcڵs^lu26ev+ _;O r GIq(0) >kr?2J *2 Y0*RG;$=X˩}w0Ra~GزġM5OF&FèfM#D'i)d!Bڼp%l d- c@-n%]6 r5.-qb=4,d4y 骲1"@y ҅QFBUY,8.8P?0`gxIy\.,:MDhj6ٞI::u^dxxn:Kl& CdO:LN[:yh*y 6tOPG ^fiyZfsT; Q2H~KűxYL+#S8~,VZz|58ϑ_QS 6$DL?лn7g}bUo )7ˈeRMdJQ!jc'&NJM)]-d⦌%gTަ4qk_9fEWgZ'>j*(MJqiMb.7<}!Eo) Cs H>ˢ!kʦc rw`_5IGE|%**r͉;w<~u׽9#{kfݳg?ygTڶ?bVyOD2V1 {=38VoY,]7F̬l'zO74vZt&/͉u ~]>RȓׯhN m{~vڨ$*_z@D>MBt^A!y  kj6U,Zl/eH$lLjKr߳!QDq,/3pI٣zSr9D嫝ΆĜ%0dcQHM+g!޺փ[sdl~1JBqsOxx*{ w|#~/)htA*d"\^qL[$v0;׽N֢/s 'tk-^[9w>_+NUtGZęA 25]*PU.ƍC1?zfn9DHb3F1ٻx_>=H 2(ZK~ڊUvRjg\=BAyR,*UǖS0  T3Lg}$O[4$dzֳV3ҋ 6咎0gWUoHt@S\VΒy)kl暀%yg1˙bG,uh]=$H9Csr[)AȋNd3(9gΑ;?yO= 70\9{=;{~WVsflb*qX= +g?mL(]\ȹ7$2fn[CCcqi;Qjܿ 'Oa8xޏ_oG.duro08tDl_d)ˊ C irIc˱=rGW,;(nN5¹kп_qGܒ\s^42KGn.Bf;ya-先W^@tkK\h4ړ3{[;Cx;?YvTS;w% =㝽CC]<`>hm7g)ga`ܬϥXkeA+o ZNQUyuZ0лq&>9[&m9 Ht=oÏ#6| F[ x32zYBX| l ^wdXf9p]M|57:a>z']a]mz qȪ!N^Vy/ GHl֣Ӷ)bhЗH?0; -bY Uj\{;w|Nڿt3c;yr8hasowKcG^ݽXgQp<0cZ vy󶲀2d<̍0nV}~GOMUV~"'&Sn {$?˞T~m2j_&<(ɓOg?[nʟ}ϼ㣷~/~@@Bށ$ɕK@J6#/`i7 oYyI׾IX; ﷶij vBPg쀥:mt7`OR\a/}c1%gŪO~ gEX{}V)ifWhxo(;u3ʶF/v6w_'ߩӧg@ '?zos?^s|a(RFcY'Ɓ<<6Q@m c/C d^KAYQJ 7ϦfFF/[_S_syh8ȁr>  EŤLϾ뷾|'}W/lm Qwq4A_]Xx-=#YXT޲Y]F|'UqBncHE:0jm`^K]pW2S/!}eC;:%^y]*-N[7q꫺-KK ہ.°CvV֧(K6wvOzڋW6|ā)ւenLE Ax\ V6 .Ϙ\bT'0 V|4)CYQ!iχw秇oߑ?P_ Xsρ4/%w__wI|Y[^[IX\\P¬ո]>]=XQSV.W\ f[ow^m֒[}];}-4 l!gaK7;ôJ!S;%\Vm(0_@RSqڜ,L Tt߶7װܷ[ϚɊG IdCc;{o+OWny-)pz`<]O_*#f`m|\?ssY{ /zO/}96lcIt ߷%Ƌ)<p1WO2f)6Sv=B+iQ(B=KNN Mޢ'O#.?``Ir@[Y$?ػ~꣟Zv~cSs0\ JNbŶ -PgҶN6{`V]O݉ge&/׳ 06EiXz0@cme5Y-aN{lxݙ>Hx14tc矱G# >RBC j (lB#8 kKn\(~ʐ鮹Dsse2w"_F]΁Z_?-{<ߝ{[d֖.$81|][)wtlpa0T{D,P% b*M{ye K+Ip$*]%г\,/=l.mmRP~ExlDF,i\B /FiXuKjb{bGc>)@b)*쀪),Xz=UUȽ* Uaޱ+;+ǯ/Б_:󘭥9pf-<pW`>E͗yJJx+u@ e<7>\9:{j8 !`q_{mg^L<(v=SB}\8Z,ӿ>?|҅ ?v]:8cȝ8,UBU;(_U:r.x\KUns.Q5kp'mYdWR]BbuB[VGs*=ϭ-VGÍ H~BEY2]K螮f[|ͻkyWhbPt?x l{ν$R!'+zs =~}cӿ{u<7{.^dw4{|?]zw gn-%2#sF'Ɲg Ǽȸ7 -zy(Um_c"wፎ룲xnUX=xSh)oQ~+#Jvp ?ztO}MyO:ݮl8`WJ4?sz;?qF`p~TX0@Eɼy9pZԬr w6eIkX x%ޑʸEB[[ P]r Ȼ-Vj72;l!6hfy;t'xJ9I] Ql$ыFW<@z-z#] ]Wx[^m;<(rCWSxMطh7R?(<2w䴩+??{tcý{779?740;[[;cf_(hamx߲3E&:v1ݶFYù]. ӇrGE9oג;7`]ǚz%Ł!<ᓋr,R{,tu1 ^Fy7<3;O2%f`h7\wF~bocRO>|ð 'oЕ q&r}{͍ʥN.fFoxTJX~)m~cM飈YVRM?~js1[c>H3mQxRw^Q8Rjr()PJӝѡљN1?oQ>_.#էƁSe!=/|˭;c큽H8k˳9 .qV>B}'l>?۵ڑ-4ڊNe<)@@,`\Xu,<աl gkcԧ @?-V[bTz$ZQ>XvYr΁D7H TЈw-/8,x`;Pെ=5Ն4)y :tp6Y-@4𯹛h5X{2z3@e?(=xq[_8qξird$rL;wlxɕ|H5<^ Oǥ)1kke)+C+y@5Wh~ZC^y'46o< E##۟R'=++!Gҿx4qsͷ=zå3 .lg_quXƝKsE=Bʢ]VL@ݒuҀ-X$+z,c=ĸv6zT4%˽pa&vw:b6Yt6 C8PUx4Yh֯N96Ko Y@ЈR ?Py\(@%=ny _:% 0zpbř+- N[]ϱ@kݗa rY7ĸ%y6(*K0/r- qoRh? wH/.O7s,F7l$(ʕ2^oi,Wd>Ϗ?t|٣o~^=ؙ=C|8з/S8aW"no}׍o|o=sqcuxd6˂Xs¼Y}bqF.!=5dCQ̔r=nsHnNGü Evc^j V_&gx%}~;{g_~Y?&Z_Ne_zͽw*VN,5Ҹ_%@v"ZYA& d M·߸dYdc0K0G>0bm,ł\덤Mt]suزM4jgQ///7` ubww3,//l6 I9nlr@F9vn;U`8Ţ/Cet 5J@/Z>k9@=,KVa^vթ|1_G ;BjӚ\_&8T ?~`F:-zqŞ=>5K^ Ю;Y ߁t 3B~ W(3z^J#h&%Ե+ގh@7!GAZ8y7r1Y{ҽ'ן|<`N_!~Z/j}iO|Ϳ |bwfB{{o%$,.)k#I" ,F@i˹g]b+SYtHk7jVJUbw`d2/_X5陜Ϟ;%m FZd1zSSiZU = 0&ʼ ,\X'Lr+вtlgAL4Og>_= hPXkӞd[xYמ% ϴ ^zҞ:dy%|j1{ i-㘍dL N3g?7Μ^]vhˎ>}9p2`Svnz>04@IDATX5C*k𱨈p&]p Fx{3VgRf2()bS|B, ..9WjOt\@P̸k+]@ɷ 𚋿mC;Лs]{_x.+᠐%./|/`8j4`c7;hp!NJTGT\8,VYg(v!>!ocM <hH7 {TҼMY@S)yf(i;Gj=t\JfrR`̴{.ԯ쭏5] s>׸<0wᵑ 1ѧxt޾|s~Wn:~jXٿ.Cs'ρ"" v_+hU6.]-p洳W]UoS:Q nW~P2kŪ k?nk@9_l\ܹgb/.E;7g#CChj IY~<,F]toN=Ӽٔ@z*QbHfգD;1d76&zsZ..oŠ(z^zP!( @Qpy/]?%AyẍorUX %¹'~>ҢZB6)M!pt|7{h`djx OW粷`be͔˖>}<mE/'>hl!+!@o9rk%4{ܥ0' @2D&6(WszaS@$XJϝf1Y66Sm䮀~4~,dg =͵hSp~w8@L?95^q^ز'RP(%5Lz,#zǯ8ޛ_8\ FSO{SvzzЎٕ Eo.0VKX!K@|u2e#ʛ2F DՏg@"Li)hS{ Gj$ܕy~jhEȔ=iS]6A0Zy#Cԧ׸A`{<ޗd<)sӻCSc7U0ˁ~]qS7ݏ93o>f!C-kIHw`az:Y'%*.7isfiY兩/\[]ZXU]mhk,'2! $QXXpc .lSY6Z D;ݯ(KnV͋aW7\҅g.D*>J ~(^^nx{>h\) YRYIUQV.gaeoO[oww}OYtqgws7opp@%`z!@ ] z*aY.R @ ,="4;w'КJ8PS~}s1mmlΟ;t}ۿv(h@e2ָ]Paٜ6gV+ elIZs[bSl XFܵ%gi%sY.emb"} pmkp=1co9;vxYx D Ȓ/^<+ 87~/Xwfh-7|moUeh61cΦ*ü|Y erd,o ؔ ;ZSy̓K"%K+|Ϋu:=u(3ܸd^Z//)/p8 ݒDN9<1?"=43[CSsSƷX/ʧuYso_&T%wſx_~}ә|p`6{osKF8:̢#$ t{ʶU $=s+$ڻx\o%Io.IJMs= T`e)ڡ#G s' ͒&}滋Af%63w;72nJs>-'"--,uԼ<oС.%paء,2>c(6;I\@6tu⯾qg}I7곦 h<gvxgI,}njQ4OPʚB?`OȲYʫh_})/92ksM +2 ;ߵ[m:4ym4dH}< m ]Y/a܉xʛ224p[>ݷäGG@>ںAe ?cҹO.Nwqcsg6+Y,nB - W,YԀ"=ӽHupȥ\vg#'FƳ# 4a.@Er 8RYtKsB@1Jwuts{Y4~oei;Og9`z65NLj7JCK0`pGI X'Ze n{_Oj7q5!FKI xOfꧼx+;jIpP|y?4%E0R(e=uPXWw]b ؍)Dx֔@_!Kwe]~*)y1x3s]=~ů¼"GI t~oO>Ż{{[*k6t)aMG$&EyRtJE |&" *%p#8Y)ZI:+6ÂnYB1[jmwh,p1sSADjGPSƃ=Yuǒ\ʴ4Š&)@ѶvYIxplʶ 4h..ıńGkvhπx pHQ }x5unԘ)@ri627(8?ϻK;hX{myڍVoe5?km:.J<oa^/>R2Wq AgI_]&ig(igpdjd_={3ۻ}5WNzz?_z;/|go&kpo{;gf47s\ Ѷ71Ԁ$aX. L5A r a 4&M/!˩IKP[YW~@e^,,a3Xn3`'E iqc=x Ik~[ں5GRdsr+) ڔ_qW|Ч dEKl VXbq]Qzk{BoxMrhZ XQ@|Zy7󎠋Kx 54\.D-Ƣ8aN>`[+fPԴѹ%/ kEcTTJpHS ruq1Nߖ6vҝ\S\hJ"w|ʃy`*{c(S-:\S)uisDVUȹ$m+N̿?+t4̉ÞVl/Άi[Ck|rj:`լ-1w$=,jIb 0~' <ͼ`U`y3已R@30wH h&%i;#`]@MZx Шd/-;wn![fq8)YMa o2 r,'`}:&~v6GBe7 :ivbi?8?2%`fVWB!`_PDH>\0JS\稧<5iæ5KKM\o^`^u3jo.r*`]u:uuƗпxXs b?{swoF &Yp@Ra\X~ՖmR&,Y@SQ5+ҝϺ\Y^ҴޱcGKďCdĶ |j \y- ٹVU,@rê8p辘  y>g+ex\@UJK,Aܽԏ(,ZV?RυK+لRx** T;,dVl}5,O( I)X sbRTuS(u]g>"@z$!a- E=x"hľzH#gUS*"n L-ނԗvk@>^hk>gYeѹ[kK'Ls"O=+w?ɓo{y#W9cɃwS]Vj) 1Xv:a@a$E&ߖ LSTf DpOxK!h|ߧ3.Fmֲёd_qѷů~i`F<Ү>?F`~wz=s{yf:dو߲vG#Y%#' X1eEӽ}J R ZqO9IkϋqN&Nyda|<-Y lX276#k侾Um}sp d*|0tvE>=˽?[mgΜԩ?" 0 є 5Q6Bw@-;6 ʳFm?>O,Ё,g+)v{@W/pw>%*ꓫ,6(V.k%Ѐw쳏?? ~܋y)6smqB\e_>ҿUN?̍bhfWݩC {*E%兡onxM9Jzv3ζ6ٱ9A ;vFYxś)>/x G2W/DpW>U/yo|iLpp%Yn,mPXU XteFL?ZgMA|^0啜ENґ,ߥ  ȱ <8Q;azj6@k0->CҒ@&#~(jQ۱8/y %Q/!9 >?%/w5bi_l=UT) )CV;@\O xLfٻ'Fo~eHfL(K;iKZ0ۢNk2 4i" &˾Y~sVԭ %JB)\ʱqgB,ssAָSs-v0Wn} (h\ЁpƸ>D:ԧf|%D s=efv3sů'N|垡@_ -G`>rue}_4n{8q m9u XV HFT+vYV`~  ZnL-IbLt|kٟ}%{Nϔ $9ۤ$ 5Zd( J³':k+P<S#2ځ^ʮ:#Qƣ%k5t?ww$;˺f p4G埿)[-+?2"㝕B5&BhywZ>B>B)f8oH+XGe<0@0cl/1eo!s ]'nU1PxY½(E9-:1ywKH_8)M޹_gf)+S[Z(  6C GܡL#xw帀SO{ o9u^wSn?Brփ6}G'>ճܱ,׷sr/ˇi^²@ā)a(~ZIgss qFX%aU%Sʖ]O"KLi7 ]" Ç]hlֶeiUz2W(kUho*acH+^<F[b뛱mp Tv[YM;Ym( }nB~HR.]8_>|O\d$eM~hOW@$i x^/")2)ifNW@2%I"kcYŔ~LX)Ufо ?Xy*}cUkw )E-%L~F9xS37e xK4VBF5oj.`= }3_5x_`)ʪ$L'j#œ+YJ;\ԝoB-sMiWXKRvP愷oŁpn/PN>WBU:0yG_Xbշa:뒕Kѐxgł g1Jz^XqPٻ;qXm.0]}j#uJ+` G?Kt)+QXsط>Rc|R,i*~(cFq>^}.ttVRv֋焹 B6Ѷ~YC]rZ_]AOeg~edˢ,DثO(8!`nQ2(ʣE9n ̥{ocsk`b|t׿M/OE20Gzzpo? ?g]10ٲ 9nGpBR.% @IA:kSKj[Zμ}8 -7jY;mrmKUq@׶AKC.oF |(EN]Z;@1+(6m>=k}NdWWS). k.FI=赋)bx̩&REh˞׾R,`"/?Hzp菒~8uG ;|=g7uV /hC}+a#T1N8v+geߊ0vIs2#zv Ě 6mt,fk<ִAoZs *@@0 Iz @z\R@s/a=<(J[P > O{x|\ ٭xX u`VgTπ9, 1*e w 8| qY.L4skh} ϻ::'!}Ԗ .Sנ@<-!O<,V1H2k\Jm5ʤqN B}vȠnm_c<Go<,̓ Tє1x!t6 Ջ~KX QIm,3[ I@ĸ\Ϛ] [z Ɋw.% ^(@ڪS%ȸ}f B& CG=3;xּ -eS#U=iW)p|\\e -xt~5CT'Otwmo C=yËGe> c҈s?֯sw_عt|rFK2\ԑh]rͅ}$]yYlܒH5I ;VrFHZL{Ht'<+uJaXM^ޭuy}}>w%̀NxE Lu@wJ:w{JML<. uC,~)³Hvs.+8 DhS7S0#Ӯw3i tC}d-~<یsg+]Ȓ.KXM7?t@),i[@}Z$JMv+#4;RV:mFF?EL]Z q(+[[uB8:ZHWEy٬0N7-f(z4"(\ZhY$HMfv'7m?M̽> ҫҁNwN>{'܉P`Q9J4.;ׁ)Zہ!-jW`/@|& tX?Ě Y˜&KnT9z$T7l8!2u*WkQ Z& %A]}Rr7X eee&GEDzt-q,fl8[d;c\Y'6ӡ04vCj2?َ)\7<2mna:Ū+g1hJBe7p:S{\ơ7=3ʇ({ƷjH6$R\~J{MakcY 9ۻsYU6I_w³ቱŧ}S«^w:Z@vۭ?rS|7nյJv@O`.j9d,.Gqŋ}o27̊/ww.D<`֞sH؁,f &u+ؕW^hNBJJʹV 0'~G? 55ە7ԑRcC=0@#`|v:@iwx]_/!,X9J6V"fQҿ*,m-Z{aU`ԯc#gzy9,'ZB2΀U\uS͕ pb]nܢ8V]QAƻ[ޔ:7$T1c(}㎧<ܕpx0 +qXWs;m_ߍ` ' ;2ҥo|`h;_ozɏӎݿ/iOvob>Ȧ*{Cˋ;)=LJ"I>I`K~ONt^Yte|μs?iՓ,xԡf=ꃶ HZRS6K5mM,+- ˫-rxv+ pJzIoh_ܛU_V} Ӡ8sP ,>6P%}Qzx3.e+݁.9 ַ'۪њ:W*y,aПwwRT˳µ~3X:gLqRD A&RSo7o(aM9yu)M-Q|5]J7]Mh7&(/P6?F煘?WmR,=nvQ;6_~y/?v_s鳡ρ/}p]O_Y^YX$.,V^eFQ.GhؤµKU[bZ\Qc$bcYrUINy<#R=t%[s9^hpKfrUW{Mi7{z5kYx@c 0:r)}D>{<ծp S gG+qOӹwo\[9hehC 4wy,M.4tbr¥Kq// ;.Q>ޟ_ W͟t$$kxsCj q"'ug8'07:e,8 \aGj{aHe%i͔!0nS;AMǕ?~ȗ T,bWYQ[Y (pm5:Z >< bu$?c )+k¥W_ }>B VxR.f|A/G|Gch4}F,3^%m,x6JQƶ hS":K٦1ߜ3ƥ3s$QJ$&_]t*/N=4R'm5壭zȞ%KCcnm xW?}ś޴-/妃PVρpiEAsm~ɯ3XC#muc}Xz+}pD L LY?'DYܜ<&Y1~Ļ-jQ6c Z A!b. jyݔGq;xÉ/,fRY*Ķ?YmS De&>Pe%jIz{hB?iJͭT@Z*uzsOqQkcHtФ}n}uOXMVrEA8T{]mWKh,Q̜5l Ɍ,Q z%CR$Cc/V{>7Ť)Cy,droxAԭNwJ^s@OiЮv(P 5Ӏ`Gc'm(%WjS}A Z@-/oNV<#Y,N@jɑ;3ӣ{O~畯zzN|^vhz&|1900{ӟ~tqo &AZ%iڈ ?X\pn|fM~`Er.砋'MV?&xo9YKtkJ`{Vy4ŋ#ԭӎOqg8#ܪfe7pF[`e [w$T>J %ew0Ii2~hn|഼T wboyR|*G+׺ `EoW:\ɸ/^87o@ƀ}k~/w׻c! Dˢ4vf7}2֬ϚXΏ~k>6 Id~_'lɕV>gf% ̑#,aץMSECwߔ1^Ж^t֨sMc:9"Ztx?wBę|ړGտ֘nDn>́&!|ρ?!bEَrG`܎`.:bdI!8\eQG$5YPu`$0# ƖҴ a=eDJ{`nJCq%PCB)l-kbQhͰu,X"Q-@ +X dAgpfxSp"QHKR48qU qd##'yu X `,Pp${i2Ăfm/,VyGwiyJY @cRɡ4\\/it%sୌxM 'Q(.w>tcD4wk[eL!rTN^(G|sJ B$dQC>+:KM}cSl,0a.ey~'ӶeiW_o9{aX`(r0ee`ryYR@V|,`(@b>oK|ge6"oX rR\Y) = kO$.ZK@;TyQ(v.6+Ӳ)Zꢳc'?RA x 'qOMV}ƍ͏RZҡMڕ֍G#|NErh#K`ħ:"t"&7qT,7X#V 8$B+(0-wk" ' N/@޲"L J߁4n6+HUGB'pu.tե»y (ͥpOsh2Ӎ' {N$nԁ:X-Y 4jLR:R߶- v(e E+10@谙* @!mɆxg)p{K_ * d?}(}m ߔ׫w1*tǼʰv^&>y/U6f>#qy&o u<WKg/#拾RJ(a >~B#5C-qD~/څzxƇ堡s9㰚Kw9̿'N|Lv\__+}~%%?r*R؂HdmeZe Fܤ@/Н==įrgF`{giRY8.*>z mU\5nHYf*`&)$} |_ 6{e86-{ҨQ,Y)]<-WgIl^/ - pʤFc)!ym)՞>3φ-Q3ﳾ+;Az g6yelw;+9 gP,y 3ŵ}es%fj{ οfmng}r-k?V``U ` %'\tfm$ J TYʠM}jRa] n6!<ȸd7ƣ ҧ}c;630nQ/tcwxjvާfO57od>` fU0;}̀\y7\d\Vŋr5;.. X))p.eǪu^^r7/ !#B{;ܮa^b@IDATZ+JvģeۥlKc3Rh*jAi@Lm _Yէܗ-rGeVgOMH (nca絢!Z O@2'bͲxVPx{R/ݱkc-˽PDx)4h͢Ae*g;r|܄͜ΣBrS}Nh3sC+Ku(|P~~#%w9@x{I;6-Xo5!Jػ x#t" ;:\@L$fp;Ll=k,8³䔭x}@4k@%ָ z bqh N8zndZZY]b(۹d/w"ۦl+~*dSuL0@6h<>jUe`SRҶAu%fԦ@ZWldv@/XrN=~\.#ЇƸC{.uS*QqNLP O=.H.ʈv)Ƥ,Ї 5 \ -#w~cc&mFHF,ަ}N}*J"M7ɱљ,grO=ý}^v)gAV$_-OjLhwK9;{6R,Wfc@D E \`ʽ* Pqx"T|{ZrU (XiPeN@Oh.!L@Kb0R֪G87xo8rT۬j%Zqqd al_`$*qˀ o ĺ?#WX FkJ U 0*s_ˈO 햾Ʉgeƒ PJ;e!9Sp܊u+ ΙeE6MqQ||\<1B~-K ˽% ߼)zܬ6|^ַP%y)-u}ۭw@r3T}MN]hk+$9eԍv(G髄C9 H]ť^s0o џٽ[ z)r瞰Cinxt /z/w\{0=d!_Aw9{YV.DuQ,AY@ٷe;,1֡܇+ߗR65!i SE ,k.Y49 46% I.v4@b@+ ,suhD6aLWC D( (&si4=H6PpZ|->,k9MPVVR}ќC~7˥V)vFa|4,n<$P do5KlƗ gaD5Jnթ,_bh!̅GxP^dkR$˫U(y <^QM;4NYq{'8^z֟?=62{+x4sѣp&,B!jcEr4•F/-/h ܡl<3[KZ_v9z:p neV=V̛5wxeLh~x<ˍ?|}/^hw`8sM ڠxiGфn4eJKU@:eR+e2Pjz?u)::SGڍulyt%?5(8緧;ako4 1٣ c*z[;;99~^O~r ׾cG${8E $g;d,ۅft]&s8)~Z5骣ܤy.6krMg ײebEV苾>4S7+Bᝥ{T2V 1zi: f%,f[4R|}^Gf個<}Ihok߭so-yơkw1GܡټӲX۟f\x;Z{⣵uх~QRQ(PQjQ;_y?>jﻞ1{Ɨ9<һ"|v&|߉b{L[VOx|i~ Z:ukg"AhG3p,':ۏY2xK(rGeЛ,r!@-fca\XW ֐厏@G 8.XT9 X6t#;q^@k"Îdee${ݽXRc=$_V-G˞lC]*iN=QD* ٗ}a0 X|P\٫9-NoSw),X<"g.|>WNJ]@s^SK<@=e-MX[M,jW4lcq/K XQM|WaNq5@m M;9XoXNțѺtS 'Wя9@п\˲¡c" 9XyLM_!+n=IG,r \<{L\&b@5I;aZ@ːgv_]8+;]bs2'f]kp\*{kD3ts'Xh (){|NIV\ń"6bUpu=t㧫-Rn9`kWK37așݹ`8E!w2=Kj@Q!w7o)^syC hC/ ?FFl0{triWCPy`A4( xJ+K|2HB c?xlo!s֮kw?}6pPo.7;~vkZ/FM:۪/yX^]͂災 h4hK-7b\͕@䫀k~&IEqsv,kZʺQ$KRK<"Uvz$5--^ {ֲT0m^ hP/?-T=1]ђYN?<4vTXv }QXN@|1<~"-4晄:4+uf<$}%h9q⚢RONan܅ ?JgX2HL gĴPPb!_=vi~/^v^A3BknΊxΙ]! Eeo;cZ6_^,S3~jrČx~]C&3 =i{ҩ@Vєq^jU_s*HZpbxo\ ^)8r'źtɁiiX".B]-. f,,gt5H@ 0V\ ں Sn@$0e01ۗ5chaPZƱT]eAμFIr ͻ@eKnx,A|Qm :jU#t9AҚQ ]ZuAɪp 9e!p_#<_XbCѶg,AJBUA+|1зZAQݏg'ymϬsw|US|~EPynj)sШ H})輝cL8 +kc}Y>:781 XsuLνjx=TW=߱7jWLll#kUG)RCw?=Nl>P?[‡?}?Cgmݠp}YZM`yZVڴ?υ=opd<:#3-|uL|!hyx׵dAĬt֔^BM[R@b75_M7"ugG ݕ3+g_׿uzkJn\'΋ȁП@f]%ب8yD~T` 2+P",~vQL:Z' .+,jY࣬(;Ai.j5k6 }w1Wa8gڨe]"MlI.T.?Z:Ϛ\/!ҁ @lr 2i 4ǠPTB``Z/󓖑Qj(p-4G)0XtGLy0ry |e/W nZ-TK$6@GZ.Y]of~hyk';x)h;7:&pyEw)D%9'ܗU l㻟C羸MӇ ҬVkHB`HBQ1n-%l9y (aǴӦԳ7@kH+f Q ~bbgXnmk(Y}?g@T}8Pgn%+_tvrh䍕*fӕ%Q%YcS{:iSbg0NZh|mhc]n9lLE0j'rgl6¯6*)4G47 ڝ SzN.pGq,j] DA[le!4OMꚁt-OK-6+Ymnȁweus04 ~-\qRC\悞ɇ jy,ßlz6@yRsь-P`; zMh k[Sֲpy8^-OyTY1'^M>{=MЗ^~k c_ rfK8G5|fQ(|%]i(V' 47c:]KSN657շt#kr?[hpp|<(8$q狣VWǏ|c] 9. yLBQ7>EOwDhc,VKsU:6 t k!ncڜN_Q)?G?}תC.Q0 P6*[ho# P} 8 yVIEif1N̛5+8ا@f@@2ގ+jGd>B#MRPwnuhAA@|D792q]== Zv-Mb~oaRS]/?[Oa~QuL#}˔8]: z\C@yY[ݔZ@9'F0%qp}hz.yV\w UlB܆wj]ӣindxZ(M7]#y;`ti@O ۿ;EC+<ȢGԩßlj{_G-N?0HSHTמv ݽ;*zp7|Rf؞fFfO]P:s.ͱKִWW&hiMx~MQOhk DB;DTK$g]MslՊI=Q`#J$35GZZ{hӼzFQHI.HA1#h‘|G?#]ޛ7c/4l'0+iMqN +9{]$.ٲ#e"6 i/{,k\֜mnN}]T"l&VCЊtpZZmkokln+^+~}6+W-AQp@O׿ \Ν;zWORZ25=G*lRǢo4viދҎm0_,f'Yo4p_JΎَ)=vC_ e_j5Z7ͬ0sO.Ҹ﵅k1 jk{e+XF &kӗ!g! X LqFW3h7"_-YnZ{ٟ1b-24M:ز&n_!8.|\"mj@(~6Vx~ < px-{MTz]]t>l,S-3C8ӷy~_E^[ǎg,x"]1hO:}YKi!xwC:#Ԗz;(ŋ E\j*i+4vj(M5Té秞˿ExşeQpKxIx޺8; SWjn5 cp+EdI{؝ 4.RӶܬfEЛ[si>>{x:}zU Iɰ9`w4=qԷԱVgcѳ5-)mvCmO$yFY8\  @ssփ."ƚ9*-~=+MҮl{w/0ĦcYhpQ`8VtJaDAZ3#|PEL މ ĜCH"o @m?g 9.RK4h|dB~e_vZ?7tY:G6(Iv~0(@ug3qM?Tb_^Mavtiww=bSo7A<kWTx𗳯$VֺՕ Uϝmx͵ݟތ\Zj(8 |  6)gg־ʟĭiyt,ּ@+m#?pehF$6S-9[5uS\:4G{_-}m/f:\0uLLhAi{pentiv l ]s} @g#hcvnjv ,:avr)yMDs_G\9"i`Ҫm[ͣ{vcc+c87VqӬ]+luj Skv>  5 ;;*ޢ lS|.>o@mj|aqʾxKВ+ɟ\:VQGPPjo]fW[ڷZ [׸F\6ݝf)m 0/;;17{"=~şY= +H:95ȑ#&RW]9zpdgQ )[Tۑ.ۋVq!]M3ϭڞհjeJvNlD=F.gF0'<;5FKwU(׋6Įl&R̦5}Ϧ1r `10/ ;9ހцK@h*Db4w~3Э; m{%p뷖VycИ,j1jXw.cS"›O0uuB{ ABK5fRй IG^_]gߊC -O?4vzuFkk真kV钰vJ C~uZ,2@ߎsnE=&QK7]^楴%ϭ^imJ =jWWgj)9;_:M[Z(~>󙤛ok7pCGss].MLN*=`/&*]a6ʆ6Dv/4 $}] Ds!0YRK,jі5z㋳%d*t,'֣Ns%H5fYyӖ&usc'} lLRХ-,z˞lpUhv-@i_/٘b18LRi> aK+ZaJ@CJڦtٕI{=99'0XmV3G]@S0:`-+;)v >Rl}Y]'bAopE,s{c6٤a?{,4Ԁm}ʹ )H <'G0h],/x oOs\_~T ҨX-T࣍fA]-KZ?^\x9I Vvi}⽮FN{Na@sM;A 칞ϏBRgnv,`u{#Q?>uazG ݵNM=83.OntUE iHZv*g<<}ӟ~LLPT)8pq8 `XLi0:1Wku׏Q#%綞}ц-7P/z{#@+U|& 1(y,O@~vhqi =9>Ozxn8bjCїΜ9ˢ_gO@gpl4 ;_/p AՒ_?x e*Aru#H y 8G80eR9-6 6<[j^^X@*,e\gZsք27+fD5ۧc-)WgzkB4+ H)dhMPp #4smttx1ڨk@KV9Q` h:LX0e0! z9}M:C w>.r0bk]MŕUԍXOXCVVW߼rdt? x)7 @?N+8VZyѫF'E񱉕sG*c鮯}3%;mcފK/N[/Ǭ>=xk=5?C&qT5J5 V`z;74lQmYZnLW\~i:~T:} ;JǎmE~U{Hy;Ɔ'1]!eg-"B4 Nm_՘ m o: 'E/rGe窅BR;U+\86B VUk?V,8?y|Ѥ9Hfx[ag5۫mwDs1xр@ޗX5P#>4K}91 )ZBs` #4cOj955Vu ՝[LIu$+]_DS|<9P'4b+W?v/̎C* yʧ>vK}_fA4JMӾKveڸy,ihդB{0]D] di`mE E݅J}4#̦s+QU Īrwcf?qޣ^'}b}˛؞q@ul@6hwtvfZ<de?h-H i"vc]5r&0B~6Y{ JN5@ig͸䙂 &sl4Y;]Bi?^Ca3Pү|fuiz N@ w;_CࠍZԕ1 U,_rHc׾70iwٶ!Zl,=¶{vmmIZ{w,ZlRKsylj}ˇ\)j/ (<@Oy,QL~U62x%[7c~tyh@Zf`.p :gί&؇Fsвٚ`UWݴH17 B:cѷcle^`Fu- ٚmyA״.?v p]+ 3AlVإM7#yOTՠh{y%![|7?=B38nYTlI/|?}˶}vpz~zbrfjcS?wrW_ (_~G(_wO6X_^=:Mس_3?)~ jOO?ޝ.@DJۉ,\ XՅϗ_@e1sf>,Yx<9D- p#X P}0{bxTF M' -mۺ2Pc~FM}CHC3S- ey "&W3 j%6z:b~߽4vt^ɛrj5{w'Maxj !qjW@0CAY0X|Flyvj TdHϾ;/=W3;xYP׫gi9n&c/zs_˿+A:7g  @<4OֺɾzkǧF?xʣ?Z?R_bJG>S {$n[m RTSl#vAn;}lN1@Lco>ʣB;u'ӉçS T;Χ3ޝH_3lj`F-p̥I@P Е6 @Pt0V&\@us2}x\W]h&B$1hB&sҎW^ρl'UKӴ$^o ~5/H|[fqnλ*h*Gt^T೭9NX6q"@=߇sE,|Uk^ƣ=zt XY(]0Y KǏ߲w|+~CG`5j1uNiEnJ;w]fVA2&Y.d5:s#şsp)KN0py9v4h'vp*@sQ<~=,b? ܠ74@@KO쫾BdJ:s4NI[B9=lN|}Gv))oX8F95@uI݂8kھmdɓxskn& kGp~0BLUUPW)89u U;.>CMX,ԜGZ#[FJ0̒Vmy_sa/7wݽY3+7Txfrgsws;wf?(W~vi<2:zZ9DsioSS;[&L}6Rl+g3Mه g  WH]PPUj ʠ$i , z-76mcWU }O ϳ7z__w|[}ٝזӝw?`nHic;f-ZPh dVH+5j* *|MSku#U|/w\Xg$0 o|ςڱT{n:g&N:}=]2GMp|kvT,B {. 2UzW?wqn~\yrgȣgWxzÛ`SkF_3ucic|˶vJcS l evo%"]`+>[ĈmA@._*R"E^լ+H-h`,+@{]Mp/q"-XXԆ= Ϊ1 Q#6`r#!*Q6uWϱ۱hDO mL_3 ZQw1hGpe{;xܜs j[4eFV`(g .],$fps6aߑyGX#x;!-keҕ y%? ycznw 9.d: {W:Ư~eEyppT;?p]J+Ϝ9sg?Y[v|rxܙg>}m.#+doN]qEؾPߝ컂2aV_݈\T%jkUiUIS:`.g["ڷZ@6]A;5NM"!0@ (`ٞWͷ P VHSX5쳋tzR1GI s_411&FŴkJW ebMW04:%_z%Rp.A&kb,>v@0Кv9]xeƖ>( uA@9֏w7PeOB \'"K!*sD#pfx#L8\R3_p3)wI@պri;xʯޗd H8 <9PwO0wML;w\;~f&>R.oX9zHЭ,ϫ\z ]gsݞiǎ=^6KDNDY,^R=\CsY]kZ\)3* f ڵ/Z)k 5+ 5Apiol^R "mOOPXjoBo\ u颋vJ~WPA4+3BGpq d_pyC~秠$ݞQ`ڷz_ P5Q˻+lG~=ٙ? o8` 5xQA!pAn/h3@<0 IAB~k7F[~XV+h^7ȯX wQ#2 fz?Wi]ج8 (7"_zⳕ@,l1KAqj{USS(rօW0|pε( B윜/3gm]; {M+2Is|{`}߫m۴5ˉc'#7өtHo6`wK(XxqtWw.m[a{MUr,|9xm}W5l`I^#,j炼Gy (\[qikܙ_FU^{, ,q^[*0H+XB^z??Pb18 S(w9)mnnn#?V__ѡՓO>{g_E5 =cߗ|,55db|,̱W\l0= 0 Vwi'ͷJESA`K@\?z㴋9dG`&@J; S59[@&`n^̥A{UL j!maKDW4X1nlO=&S]/cUp?vsX';g'# luSvٿmYZ3W7\q__kY9yMY-cYք=j4e5ϫyVσZrBൖO;GiR  5 o eTQp@4_β=^,fhl'xovjj0[?G5EЎ*=]wwھi{jn!}G,S (Q] %MMd0ZHf+ WޚC ܣVxE@J eM-9} @}P 0Kijj/0ENuL-;'zW|2pX*uw?~9Ξ412MώmӳӀT?+uY:z $\Kz9{!o`a/\-Ouq..^5P @j Uٯh` 3_/˻CyF.:4DM/>B LΗmO7"9pa*>z106;9j#;{5d`rx8-D-z;Ex:|3@)m((4Qb`&Z,4k1pހo;¨{#0OC_D>>;p۱txa=] )Z 5LTn/7m{ɳ& ~~G,:b1?X x{Ӟ%-[/`W xZڤ~m@Qs` @.5ҬN 2\ZpTE]-5@C`аk:&K ޥ&ښk~={BprM;5M(:2t4045jv DO/ ;AVM:dOm>#V+hmGZQ@IB~ٿt)8o; +6ٗ~}a\ж^;5ZߎԞl/u]A{#utPx϶/khkE[ro3DĄX@0_$/> JKK}ŏpp~Qp[@Γ``i?y 'O$:sgfVG'˷|;?4ۂo6@h{,a`SڼeG%K EڅCJmR\]:}肆XXL#˂F&0`k|w#4u-c@>7Q3\&%NrSA{o]F:  NZ9M< QZ377,g_yu& D9YL?غ2!,8 l@~+%4;{ZzR`d|p.VW} &Y`5vRҌ sk¬ia;CKfm^C?ا<>ȫblmϺ~\C8 V8P­-g oo<CgnAsLʉ'+譥t;@$堯Mi3`7RӨ>GdSTjj`,ւL-h*4kl!YڟG$+p?GXioC6;vs,C [Z@#lSQ@Ț+ 5iд_xhZ(s"}nK>@#5ac- _k4 >z@# M.nX JLCLkLk~~L#T,daJyҀ)!&<| p-=-u8^k)*xE:׬/'!@B}X^d^@6z}2ijPq| k[o<;eB̪Spof]EۧF{9|ϰHR]鬛8Ν9f([6oۘvmAMmϞ4Vnu6599vj[MDtή9՚z?yAZn! J/ ~x̤I{h۷*5XYTE;A0>iZ6k&KC#C& $02?k.`I`g@fmp0<`B!ovr*:w^e.X,љj [ؽ o v萏ʯ9.a6_@3x ^5[Vfwe >s?"0NQϨ /c 78w,kro'̾W>6WBJ+N;ɋ(8r o⾧"ڻ?xŅ鲠cV۝nb|֟oK p熆$(Ф6Z`W{s.;I`R7hp9czc5PXxjsIgOawtujvNFv3xBc @>GxtYBKwךc>9,Ԝ|bH__L g|礆mq'CkNs~Du7׵t8&D_nl/t4U[n7_4W=Q |[py.~W};rCsέg-3'^ba߱ek}&lښ; 5 f{=C<gϋHq<kM1 "t~Ԏ=B3l82ٝg Hk Ak.l"hoj ZL͔AAh+U;R((WMugrb1k>~ ѸSṕ‡mE{OML3RQn"ܞ{7Pl6_/':-6 k2i,DpO- Mgs16 57T @Z:jn#ʚkӷ$Hۗ@~]D`ȽD2 #E1 zzGЃaf v眇s̾d4S Ųh-5D1. LO&7iiP'H_pGU:R Wby"] , jZ(G@ aHu)? I|ې~ڻuxU 0SK{n.2曫mOM&͢} PU_kjtwK~ ~+(8Dq'Or?#T_c?OTa/7bد{vЦ:_ ٘\k%(2s𥷰 Bg͸hJmZ j-R/5 uѪ-R C_50`*  3d PB`Q#xD AlM| Y(M5Ј=<@0is݈ d&}m8f ?^q5ReM3$\µa:5|W|X'@pRgt;/+5unЭaG~SБH~kU~ɫMDܜҧCMA =@Lf 0a~߇;fCEWqxB9P'W߈*Lv=, l iӦջf?t5N8E޹hа-iA [c`֫.hibch&jAR@RJȣC3M@EbH53JK|/4;Cz 08Owy3iCw ?1;Zzx!/~> x_yV&bqhRK67(y+d7܁Fi$+xPpOxoGJvcyբs ,ٺû qA3ƤCñ'GW׊IMoݯR,f(*xR8P'Spl| *fekONN[`v:)MmZweԶt\ih iQXlD .]#a-iEd\죘L_6Q|]bo>r6<ڧ4f@-<aOD$QT`.`EjeR9/]Z} D9f;IJjA$ܣ&vXN#g'bNQVS_ª}A ;y>BNּs[^*z;/wZg>얐>]χKʍ!mmx>KE)Eg@\ m`66놁SKIM[a:ɫ\`Q,foR:/:}8pG}K_|u k)>u]Ģ=is!T4Ď//k{U؟{v"5Ff52Bv`aժ[PmY0h)\T0<up H pFǞXwG:4}k涝u?{^@ :3gSsh¼ lNpaZ|sb3iPxP<&{MtFmbb{3޻Ns%m@S75̩sm+DɛvzrgXd ֚|s؃[-!i<2u,s9/-#>3\S*9kOͅaU?^5ޢ8*OӯTgt^U=tM@'?I}}\fA\y_=:6Q+ɍ>u쑇RKGGhc#|DP78@u_&B{)]us066r)8Y]]~tA/ZaD F'{~DsMUm5H0ws/A/6] DVIT-},ҟқBszl޺j2hh z+68yg{9RްDT=snKOkLUj ؛yN [T4&&vя`I%23G:‘fx ȳzMm9@7sUo]!ۗFMZW<.֚CX+545ozO>}`Q,&U)8p RO@f˯~\eFt[?̾G1 O*-7|oӻT9O6k'N0"2:9UkE:@ĉh(kAp$x r"|s=u움,ZƶMa@{#Jz.V5@.ι!BiepX3E[A2A_!Cvrz+S+>gssG5Ba$9)pMi U~Nؕoc;~^Є 8K޾Dy4W{ DCTH:2M5ʹxw6cU`,,'3O59&ǰM>B(k-,#9]~͒)6VlVS?|u?8!TFq(8pП&?C0w?7tiĺRwP)69(2ҡO vN_idx:]>1ʭ3#S0 ZrjB9%k=4S99ɠ} Xh^VsWl O?Z&Pw yL=)`K^l_?~h݌0ׂj%M&ǵ-hSf%a^6޼.oko rã̹si8dZܹ4/~Re'[C!ȗ*;[O֭)ag4Zs}l!1Јv5QJj ]3=/mپ e#ZYjܦ4MW w\z o(qMOŻIԈE>9*qŽf†Z{Dӿ !phP V c SBQ킞^APw~'Z.FP4#ژq?%{oJc; ߸|8Z&knV6ci!M~twhEPmH-2%{3\ǵ2* FkBa+vvEF؅%$Is*9gZVR_JgoLb1wzQpSȁ=C}(c޷75U/,v?(ٖ>鏦N׏>Fwtua/.ڟ<|_?u^vΖ k8X : +yT j.dՖ#j[pfjPH/c( 'xE\{ h9>|5{AZZ蜫iAB# ˹e/H:~%HK9OM !]@s7BRWg;!8@_ H{{wڵk{zֳ. i!"59wZťq٠>!M1Dh%Ӓ /sfǩ/퀯W8 \~3󌳸ٌ< d(Ej9jcc<Ǩ֯E/zΟɻ>Va08 <(4D>owÏyhJumq~,M뛠uT#T, /~&MMkZFOSB5 :^X`QP` S8׽WW=Ls ]ڦ-J $zF_ #{{i5QDYM y5mכ4a3G|ք /)~!̝o݌K~M;Lw{?t@n?h.ӧ2a+g=)g:av.ˣ7ߝG|+f[@˄Tb1ޭw〗/On; ZKc:zg <-(4,Jg+<ߕ>{.$Ҵ֞j]]iƁ;sT_Cikirj:{tOv_?_U[L@(hg|́QT.bn -BuEE Z@ekǾk@f_LaPiJ@ ڼ#p* _̥8lvSD3oiuN{>Nخ銫/K[ً~+/|,۰RVJC ̵h&L-ćm&&&b9+X^ ֶdx~6 g d!yvz5u lSں>Rib?O?oCCO3lh{O,wWC=JOnSy40ПFz7 ?z{C>N9u);7VV}jڂZ& dr-ۀJhрGhCNS +`|% nS|}h|?їtDzTZ>nCǗZ/e>t\0Ci+@3fZttnK_mh i ~JK缲Lʿ$1qxHBls{LsV iSpyLyy+ɯ%3w}Zg<c)&SsJyX^ڹc}_PRB,x@?W?pG>1t汗Mύm ,t_ v3C?s=ifi~}S}'=~h=g?u&|Ot.AE?&_5iMӹajS\\ /`U; "qvk&a@Cɠ/Njp餌๚;![4+g@ѭm]hKà֦v,!豣ӧ>tW"0@^@mǁc4>9pC48?Nu5t,B?X_VfnM`A. ұ~?惼U1s\+ ¹zyYZg>ez ,MQ0( @4AY| !E{/lٙٙ{9%=J*ۙ9y0s]hGH.y?.~ QUu壏+xo^rMD% AS̟~iߜ9sƿGc`؉ʧUxQFхm.۝fGeJSE۹vnn-|C+TM\d9эqGtQ)(HŃ-?9(\׆}(,<sN0Э#m,9Q!Q"㥥T1#u+b(HŽpy-qm>  LCbm}Vw(RbC9̴@ c "t !=? n|8`pxȒ\\{X?R[ G#bN*pǚ(z=+iȏm.^z׿+̏rv3 ye<[O[ȗ.6&/fM΀e8?1G)ңvXRj: @Ql~zn"PUn]v.D(Qr d3SԘ:b& 7vq R#qRt;(q78"Ds . Btkt;A\{f·a'E焬;sGxMQ~DΏϢq"k5yF'Ƣi !;~VY#ډɃ)V9} 11 Y ZX=D-\`9?)E::s`酈Xqr?$"po> <8LY|x}>90aLKOڵ˗_һoꔆ0m"p,'z*ʕ6t-kvWs@EeLҰ5V|[[F^%gg?'̵KNˀU$o}@hµ6nIDATXmf'ts$NK1R~)GB G0#hqΜSP.^ VK@~>w=2'Q?_|atlp{KKK+YnuGYKKpNbݨ8wqmۼ.p@3ERPvUYa=@9~D"\>5BF@\<˛V,9rH0t^D05Ⱥ4D儃.gW M0(tG<ɴ^񝖖}뜮vkV{mk':&:w^ZUūZۉFk10m4ݍ2AP?FP`fwd{ru}Sy8A8ѸeV7p_N~!&Ym.nw Sx=65A?+3ie]t׾aL}a|&"p_3)x 9 }=_/ ]ހs򬳫ƏB|,??êwmMZ_(;֍[:h |W,Q1C PPHPZ85hJgu4xˉܹ)D؏"-jsD<2bk[JݍFoB˕ᄂEŞniZܜ0ps1h{br!=Vcm~kL^84e96hBQ(fp!\pc[w}4cDiU;;F. 3y=0Ռgɔ^Јv' Xm0fd&?s\xʾ+EMIF_}] e+JJ ]y%CtWL:z^m#k/Xf׾jPfQHFYt C j%!H nhx= QtE_ O0=Ϊs.Y͘8K=N*Aܣ;EnyOQ.R(ӦE{ C:E\l@8NAx'p'%"<ō{G~Ƶvƚ!Ɯ3 3fF;{`n[ W2Q0!' @ 3fFGƜ8yp? Lwbx-%Wօ:hsF:pka_ ʲ8?{W$'oYG@YNmkNZ|7>o?.(޵}gk¢\ (`}gY2P&:kW:K<غ`oYG\nAvyS)DΪJ 9qe tGE>Xu9e=(><~@x"2b:SvTx+w~szqQ;&R}eumܰٹ`ٵuh+Dd{}m]]^o-[.yf:7v?C}i;e7]zD(b>nMyNלХN+YZȆY>g Q6nx6# AlVf7ahRsQ>CAMNeyu"M(3$Zb0H۵(փh݈k'q"w~<aY )-wwǾdUb>!Iq e}&._$gC{7C'^󘈐#~ נ=*ܟ(= 6X,MSi"?Ds^Uo`@,E S" h2df϶Ҋ| ɤ:1g@Oooh5c<ϨȪ8 `W;yO$."5ѺApwrr >oɱr92+7s+VP7GN_D'Mw; :(w=_m).L_r˗ Nt[Qy{҅]kHqA߀ߥuգ+ۣ/Jl#Nh(N1*grmsCh=RScv%-n_ 5 ,_k>89cPK27!b|a{ovEcZБnzZjX'ދq9{F+ WH$>m /)Nx߰ԃ!|'N *=}IC@yF_^?oެG+˦vO r8 \H޿S!CԌt~uX`t!C[u@"!J/TY^rT3gmB)8rgBĸ8Y`Q1勂5n禆q+;~<7 $-)hF3-6olQ,ڻ۝ +|neS\[ۉ60|1c:s]9=D{p<􍏍x{{y|wcs/^>6@?rAI?_$ڟbM [T1Gqk^Dsck<Z:72"7)TógM'~Mo" A\7MDW(.x&'?򂒼¦扑!_(L)\F?t)r.Ntw~ys~+/|7AHV02faWנy+L7:ONqh8qhosMEsy>p 1۴r}; c Ez۾m3Z;i`3l+*X^aEhI`Y3mʴrE8Z)qwwG`|,pp767u%]?Cˈv!B𜜐Ѕ/ 5;S9AbuD%b1}p>͘v鷾 ~m"00nKZ¿j՚}̶;&nݱ>PLAy76[-j*OwtۢE\ud(51H[ۻ-69baeL|bng)T5kh1J_ 2f&Yx-1 Fca֘ȹi!emw؀X2BZee˯ciy8ى6ti3*рhX[DסboLMNyɒ˷-h?7whZE]Krrec)9߰*sq8.h{۾Ą5_{W m<GI_D@&f2ݐ DEoZuc=o޺i:-͈y0~9\#]V\q-r0Ķ?a^o2e"2])\ sI!v Gh47q -t >7~Dz)Mc`'c_4X貧888vn"[t_ibOˆס5pAQd4:kefXRlKesX(G|=}R3>hѲիWw'ιK;>t-vv`{ ᶧau"gu_|u$ $2< M~/s?g0)pok9 Ed">~f-<|≿IiniN%s>;>'<͡ }b޺ZZlAjCZZմ S>1iZ5}&\ףve\ e!HMz5&pU0Q#GG|5S<7yncK zbb1A f\Gg 8MX =qpByXvEE?عL^ZCg{F?uM-ɪh ysjc^VPh^6S,;?B>Ẹ%!-}h:B*cE9X s4"L>5_x9?]8^PF`:u]>I +B*<K&-Ͷ~Y국֯YgPⶵ`R^VZu\i ;A > QX/G0 XV^~kD'Zk'?i?=;X1?ot|܃u 6pwz z5wA~x۟=a,5#OUVy{HH$dOFRߴ^YrO=k=ݽip]c_y͟]a\g+.AlƜΧ<1xh}VR5C8qsbx>UJ.bbn.} M3R p"@ƹ5㱶˝VgPƵA, Rp@jF"݂Vt?zzm P|Y!O`<8ookGeˮ|Iw);o uuȆP47H=!w#.k9iSf\7 =XDm" ?&uwF */{ɡC:?h-xnK`}۶-c(i:`u5Xc_*iq68Ћq;>}Oɷƺ#[DE9˞&jHe4 8B9Vj}zN}<"Ye \p^ѵϠ1|A5ءql~de``_C펵!Dϱ|KJdVØa4 ML}-moXdeop9 ?7G/ڽ:Z=u$xnc9n/))! -y[nnZ>L@>{{X_{ ˊ+̥6oa7pMf-[m[-Yq1DZ~ kAhѵ.j/F޻HYc!tzqb̵t C(PN5]Rj8D^G "!9QHڞbB}{w.,fZU -t0K^a[n#1S̵A9 BzlA\<15՗G|?9%BV/ED@zاzQwիk_iqj=^>Ҹm-v7YQI'?Bq*;sP)nښ+oFjkW={ְЅt7XF_ělrM+jڹ^9G2:UY?͛VmKi蒖ʪ)j-:w2ms]7Fm '|}h2q!^~-O픶(s#L9m}M2{Ѕ,D|@'&TZ\oq<_k`)mT`5z>?pvzzEF[nBp\}g3Vڢ ̹砧zvtk>\AQ=>NK<O!ԋNB1xkX/gu'aKwm7acStN<' Td](gg*^&zG\xPboh ?l/b,)*t$g/XiÇ'fch48K $FF.d鋷rW7G,;{m" P?~f=|OC o~k@GμyvڴE`\5oiSfع:چg_z53ٚmO岬ʦfB쑗i vT(G)65t% cp]M uTdݭ.,ArEY)`2@]3,-HJwE[\D[ioXyb[PO:t.E@&% |܂),|?8m{{kzk monEtL;G킕+-%+ێKnvᮿզ*co#OM/ :nc*ZhÊs)(~Q,fmߴَo}}q(nяt׸4\p,+*.gT} >ŒŒOzAiZ/?ZD'^L*<tbj8{HϞgD}'?q`gO7و&MPTZA:Y[KUMn.>8`.\DudxQX-{mJU5׫e[iӚ j4eN=!>0jWXF4Waת5(S\T㤢}fF"ނ ̞3߲rOAM@[7=}_+qO<ӳ^iM WtUT֬YC}oZ;B흞2 tcm˺[6]\bHqu^'L[efNEw3"dH z"D9{lּu)Cwz%(t6*aS{;kB-Xgz`,w  yɊ2 ͤzIE@>f)/g7윴}Cj<Ue]:;MgkY:cS[z&ڬBYuu6wZeݮ;)lWX eWY~vm[mm2#>BɱruX7d̙Uw?Ç!&As[K/b^a7~3oI@[ _E}7_iFrfT@ԇv]jn==l%e̖{P=ْRQO ic%%H#ÙRz< Ű{;MZ}MmZ\:m7g9X+Cvˆp%y ((NoJ]LzO¹C7a_SsQ+˹jlxJg)꯼ի[{QGcK =6CÃ(jopuUV:OG:[=22hGTDOu \%{|< mhtl-6kpKF:zh 324~WD79Ko]ʏ<?}AWC8 H~ k^ᆫ㳲v ێXN~z!-59Ĥ1TcK#{v[.RoQ۳Y.AjiY.ﵗ~5ۆЧ<yL| Ͽe'n֯FX򃈔C*ʊQ`&Q6c ྽Rܲ 3jTD@:VCC$yͻFFSbǽ=" 3,31݃C zo`kW_o}0|`xGGlm%vqm':d\sXCV9`5VTu. $cG,)dh{m1X#G99ІЎD%Q#+Jto˴cu̇5sfZbV5yqhboZ{Zҿ"1*D@>A 8M.ҫ6|rrR<BeLDoc-yQbQK=eWSXoH5?Vz[Fʦ*,it8F']jO{B͙c%SGd<0 m}CON>Ŝӈd`R *?=-]uxGFluhv5?y #6[:rYeyufs䔇]3\EE|6,|x? >usKKKa~娃N7#"@ i%2|}wds¹6gLޝ{m,n<%[ie啮s8L1)iVx6}9Ğ瘇%c6{FFt{z^Š+!%-<ysKk⨘\21֛D@D xquɹ?|oil;CEE^XDt[pjϞ{Ö]}[G9t.- Zb9v}D1{f;תfNG=\,Qt=1Ȳ?eN1uO" "@ZC@b7/;Hfj!y,7?dhR5cutt#V9 "jo#- X-xulf6zDŽmԙ6s9~q2 `w{{z[vo.oEED@D`OG{fƚGO}|eަ`jVmN\n+.->wAI {s"obV^X~XWwt _˞Us3w@*(Xj?eU\p9GXGid-) Wy[oH5;V3Ţ2\ws/a3uI0bbc^{ /[K;SҴ^͋,~nv͚ЪU3ۜ zb6Vgho !GJ,SMJJF^dKV,cI~.k)iid{|-mO|Z/,"`#hm"{!AG>ƳƂ< #ܼ<j'f+(k@3||̺{Ў$}%>ě]oǩa$gߵɐgUThn Zl}ǝ'&KKID53PxۍFZzJn ~]oH'"k h bћKQQwmJY>kFEkں8+Dn: qX;|p{wwu/*?YF~N8 B?\T?{'ŽΦS4ҲRmr^❠c-=zI)Wpy'LDPPܻ㥽O#D@>{s g1/;<{o)f,xъx<榋nRLt**ŝnҌ]Ϟx>P[82!#(.Q3+ Om}c瞉IA7"" % o Pp{5[Z݃W{<1$D\yE ezvyҺuu]D@D@D #uZ2,_" " "pVY1X RD@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@D@: ,IENDB`yubioath-desktop/images/yk5ci.png000066400000000000000000003401541412677075700173770ustar00rootroot00000000000000PNG  IHDRcNiCCPicc(c``2ptqre``+) rwRR`?> v^~^*vD_)p%?@lZhdg"I`($>dCW@$ ]>faˀ% { *23J ---SR+KRs< KRSj!ABPi5Zho@p2A!@riQdL0cR?1^: Sbj  OE cHRMz&u0`:pQ<bKGD X pHYs$$P$tIME $$^IDATx{UgZd@ޛ4)* bEQEiґ" UzI@hIi{599{~z̚z9kfm "s;0iǥ-ॼ3&XnǿCȰ4(WJϲˡGvu%s9/["Fzǵ5ܪ_soVxz ]1ҠZOw ((((r{wӦ&EWX4ǤΘ)I1݆;u۰[k w:|Q,&3kMß֙^0tt[AAAA@ٝǮ*Gέ:yG]<}8nW[^_{2!c=y_S(5fSj!):ʙ?ekůԿ;&.^>X]i}܃Wyר͗Ϋ>WJ^XVS; .ۣ||^=x|gcJT?!25(: 7F|9]϶uN>.8]lsR^ 7c; >WDEO>41oﹳ:eϟ>yiEim@iƏ^ W Y6d:m~]}C: nGtKO'K<)q,2}u?mVs'Lv(vs:ˎ{@jmr 7u@wj:^ &ݣgKx9#Z3C> ag~h%@袰6 ё7[6yH]*N+{b/8O_JY2ʩYGHtPoX;}^?v&"7XpXr؁ 3_up`,x> wz`.ui[|fGݙ7PުFQ䥈O bA䁈u>;.X*jo3([/e-Q7ȓ~{廏sv$tGoݳ/ء;U/5}EQ[e?y/g۟3Uo~;WF_ @`{`K`['WH/6+1<-BNCfxyڇ,kk #{`35 0ۿ=h.k&KM<QOARwu*j&V{-׬52>ݮ%''l{ɕ%ήmIS|Ѩ{y;1^>Q񄆌'~~-)oy]v?77߽B7nyoWdnDL XߎPbBO1FQֻmV!kE 9xO &K hg3 Ļr"ƂuUVUPVwZ뭐?c[}s^4w{qn}P5bAъMO-xjpwZac6 VGC qfm?-MsU53?唳ɧ;|V[uWOsWNU,t֒w7d|Ř M5?@hoxCXlإ*]= xCW$Lr3ҊF֨Vu~ S*Ie_Yv40Qݡ]ofk못3-nz24y:慺W.N_ADE]x?wAR5?@PPPPy*2=\?y{?Y2:YI+;53oy#5ҽ3B+n m7B7aS!KȲ~} xQD;pst,'YmuԙT5Q I=e y QGt:X*ֈ/% 3);+ujC2W9x(er}k$$b9{Pi'+]>pc=皕!{޾ߖO|J>ء:<]wi3+^pFی~vJWg+qSNퟸ26gDʻoς^O+ ΡkB|Olke1pe 0͞XjlQLA..I6`\4|%W\n-D_>>WO)7^cQ W=u`놐yΌ닓z=^Z1|餟ulvFBr_|ZM {WY~ 2?~\I&dDV j B"{" z:귪 (Iqw. _XՕ ČO2z\_AE@w{)1- OH?`jv<%}YYУTCUl\D ݲ􂚦2 i0ve(%$;#6WŌVEo;/T1:]fAhۨ{ vAAA> L_9s1/TfWu:a6gg~L[ \խqŋ:l?FɅT;c_z۱#˶*bef=ؚVg;ɗ|]I n!{StM ̓a!dxȯ!F몫:cA}@'d"g8 52Uy5 ćQ< ^h=<mk?5_'@7~K,p!P_QQ _!SB6%P^z22{IK/?]~1/a_=r!_d{ [6l!`zץf`o{>>׹)rž]Ό\#%N[gN|kڮkl[yrl+RE gw_Rj'D:?C ߥ-_lŀ>첕s͓ʝwr?uƂy>Am n KQ"GBT˘bVQHs54f1!0D/`:`~f2:,7E9$"@-+wV8-dwAx]yE"Os #J^x&*)dbՌkuuW#w3puvws+Gg繜 OԤOŬRfAq[RyZp˒U'XЃl,׶I0xYJ7K=w.&w-Zs.>s\{y|q7N&}5O>wq_ؑg/y /5iJ3O.:Χ[$Nnx6\3\wÖ<윾 II;1.zCb˛o@qJ*d㰃^hIE ""gAh:k[{߇@@2 [azcb8>4~qdEY\V~N7Să4Vw7w2G=~oħ rFc;}~<Է muLo7| |BĒ f`L 8X\?{YXam4sߩā/|SZQT@'1@Ksx \m\\ ȋb:] x\caT$0SX9 &8S X,`L _F 0zI-e y-,pNWV'0y"_1YPy>H}wҟ1{ڗW;웤;5k#jj֐y.x(.((_nPW6]օ_2 wGwΦn={5F 2WF,dKCq8#w!P70`-p@Ða缟W4ښM(uPO/_H>h} JX}is_/S vf6QEMqyxIəR}y" x;}٬g>X:49(dTW릫X\ ƫ$P:qX\W!} >IG(VvBO/9s~pV9 Q~'ܹ΅\mg? WC'B.!dw!`>2KA` (-F?c^&Q \ Hfw-"NzNAU%\j3΀JTBLen5oh+1 3D1I(_A5NcAХt9B6 d, *7Aڨ`N3OxS {W䃮~7X^e 0%5ʪ:?οN_fyf-j>ܱzݼPV?>ֳ:Ǚy>^zPPпʰ %`]:{*YbgwySz79HHqÚ9@1_sj47{>7x3[@!rpZڟڻY8KA~.'OA֗eMlnr9uIdi]t|]˚s+ړͬqw1EC8Q#>Iۚٗ/Yio]0{2g *lJL儵Y :4l xxcmx&Gsrʃz֪5 |[`oXmdA| 'oA 9ͿOb2Eosv;γ}dm8y{}H"S9d<ғrDw;5P~$(.w` 0]?s/ 0/p qS,`{#^Εaշ>BЫ@^ [E&b*I-sÞVP!}5.sxv[Lnmz/zW.6=-kxQx;߂zPP?ηv;5dT5 S-߭ )UB\R[zIB\"Qrst:QΓCxg7d=X ri,.^*pxě4@6_: IfPoW}+(u2(=rj]{ t!WΞ?W?$LJJ H*,'f@xѨ+S!bn;|g07'}̆isZN(XЃim|C5g5/ќ-zAۛ$~n7% <{*7&wN^+Pmu 2N.53tǹ_(wG`~oXŀ `莺n b0"P>UDW,se-u\QHD?3D{䇏|\4'!Ϯy _XïB ѧ!gGJU5̪VS׺GYlbF9la@@ 0ɷAю.bX/N81di.":`47A =J=ǵ NmUbD tS]-z-AT-t0-eol+Y@OPٸezvW4=`2O@G`\1B ΈpZ9ݸ!ujO= P# E^۠(9*3'f=sϩh?Gy.۸il~ڥ`)̿{AAAAok]9xt֋zY)v|kfrέeS^H*QPU3e,C"1H)򞌔^p&fsjNKXr^~6`}  (XDeFBg-dqWf$8t^B~قn$gC"1pj ǢD1cփk(%OYCΒOv8?x Fg&@hg߯P cmTP7} b + &vy'OWpwu@uZ9 5]u= rBP LAU0% `DRMic¿_Nb)@5Rg0G0~2?;>b QdKt=E^%LqJoT5RԹfu9ԋ;)(c䔤y' o>*QzFc"ckQk۝ul3ݩ C '6wv@&e+w\rJ]fэoܻo|(dy?} _1p:pZJ6vxg"ͩ{ 09`<3.Ag S;Sx_77"Jc]"DP)S+M"jŬk5;~_`A*i *msռ\rA`D߂ *N"2EZ_%'@O>?m7?e\&=^oXXLcq ́7ܴ?޽GxNUtv&B~܂bN&誔Ա RY ~2E^_>&Pr80J-Ϫ0׍_?T'J k i|RXv3]-QAT> W[0 4 ҍ5|ߋhCQM6}-hŇ::T|y_=((o-aɥ{ zDžwMrӷ߹s{'Ǯ7HX0['Ԑ{ Q9y9I:C`] K,Y*G{k i\S]U`fOrV=η9 1W8,Ƭ=SgT`@0BAյA֑j,FQP BeGQeD֩kh!- C+<,U Lj\Q>俓+d\N UMOg5ZG`B d,p`:J#X,?@C{ X!RA}Z`3i =C@@v;okk*,$jz4 2RF5SmU@7r8) ˃;ѝw$98݊~D*ɦ=}7P<].+7ބ•c&G[>xwC:mYsk<p݂ޙ_\ا65u1^x;㭏8G <"˿UV3.~V{~4wΩ=Ys2(uq t5|[BJUo`%ZA=TO`P)c80F;,qm`߶FIoz9,@}1n+_qЖAӉʴ|Wr8.@Ai3nAF)!:>jb'-T{kuOv}Oҧx/\oE}ھ}]ǫY Yb#M9̒#j˱~s %v}tE}Q?9[]U:gz!ըJSb"ƁW{@[N'cfy-No8ܡ4W1emNЯZ2tT +U׿\O }}w([r x)_  c'\Pny5h߆hs%S5 M!`N/B@(2xd8Q:>0F#851"CtYʬ 5$MZg.Db"v7 Hm+ R#ݼk^E!a?6qRUҩ4]CHj^Vne]i|S6ow7:5e:WMOQ]|ߋ1Xt5bl+!t@MT8j]$x[O5O'߽9+YFn+ƿ3m]R;u9'7|=((?ܖ= gtJ4{VVvjv%N7eB#u~.*wfn<=BK v?! Cjc EI Pw@|%~bXf[Ieng7p;XoΪLujuE :OhqS4ŨKSi{sb*?tbFN懔kܨi9G^}`p@J_5zzܿzhXBX#]:`1G7@DC=A,5˩b߰+g6k{$< m v5?]n(N;0[Ǭ`t1Ȁ\@rth}/j?.sPcc !t.˄lhr|,*CQGo7R_E'|~RbA=-1 ?:g+Ư45dz_>}@I˒o}4j7~Qo nkG<Eۓ'R%ʳByț` ?n($qpZZUA=P> f5<~QGu8y!IC3P_f(JLwR<.(=_KQG2C^@<OSt~z~Nqs /ʝ"QFE; ½ㆧ'ONo4=>pd\x p:;2UN}M)W@ޣno@w!o)le|ZzX'[pVқF28uVw EM @R)Fl"GdK8Mf`p؃LA_d]@psrj_?FǁZ$Ao* z@Hg D6X ?лPJ w-PXX=p/>{ "N2fgݿ]]z g=gZ9 tw;=Z=gy C zU*+/RX'w^{xnh[ΧOZ}=$֍E$Ǥp=x 6εk9i!N+(m @;AS5XՁFwL{ %g{'MmN3%@X 40RF$8 # ,赬YU`5ך<$˙ v5*9Jogw:D)E(R1PBr tGČB`V7+fI< + I%Gc}/w.|px{J0jٯ (]T}ѵڻ;j&ew` 3{PPKko~&>?4aZy^or[\^mI}/2>-&}ь 0osSBJ 0O=0Wd(8`#Aˋz"Tto 0^Gٱp:Oʪ+⢲mPA; '>r"yH֪D`y=W-{=n Ns!5g@0o=+ #D1TOd"GGj~.\Ӯp(gpكOJڝdINFM5݉/ C#`=gUT ɹM$Ƃo|k,"% <'\w'\]\g@|I9N%0r_ݨ-'W@tNSJ_6 A{0_F rK{V r Fԏa nrPDA{U>+0xH旀c{{t 87Lc"^ *C7Ů^*Hl{[o{R`l;m 3]Zk]g{))fD%- ^y.*Hރ]:030_ NXw@$lD ~ӟN҉ m[@mj `1wS@ɑ>z*i|u> ` 6C"p7~}Mo'@R}utQ(_HS^0Ҥ=̩ #`8o sԗ*jNZP_sR;A>Q2L/mWUg]YugՁFݼ !/`g@7mp}jTkT_d[/B@B[9C,Xͪ`ϴ8-@)j@1{`2:wi q/;D'9ZQc+SJ^ɠZ:A_H<#]} :3 60طyzDX#A֔xNI[rX$;uc=9\<1I_-!`|$Í.4CQw@rz\a"uwگilVUsUF?w0ǘ}/mz1_Y0NG #8x_z.HOGAޔc070W <xUo;\0=z#nZE)2F9{ ^7@na0gp@k{`7 `-=T+UQY|T;JPЬ~~O482=Av% ̀T:VqL,zkfm}# j!&փ' )*ի(>Dj)g"+tdYJ8| OL޽RJ%]Vh(U=r;(>6!w{{wr-3uCa?/B̾56>Xࡸأ=tE9 . T ۫z~땲ʞu]LuqV uㆿ|I1=nHM - `UZ`.+򸶀 `4uz n{Od#ecv/ rz A*S@? N%"Oxx'EuqD8(*,颾9N-#l:Ns 5qT$! ;5Ў-]V Pn V {C{#Frl $shrAUY)xg0S_ɞ2r عvW;F?#vnKtGq7E{5Љ!ȳ :R)[P]*% DYZü\`N)h% ||{!bOUwPuɟK̆JWQQgi7 w*)z7d|94̢sB+w%SA%jjWoTD*t6O7̳֖u;h":t1/sƙmӯAAA6Gn\9g2k=* EۗK_ѐjOyn̸9"⃔n[ qV=.@֗ee1x_o (.^Y"߃3ɮm ]+]@}>߁]OPA6ݍkYnsƀ6lc#p12p:81ܡR??nkqV:m9$7hk2;Y`ƛ> h|ibVKv5t(-/sұb>m`| >w>S=A.vqTgҚo{p`=*9],(d @(#MiOc>a_7@6Z.ʓ.xy'mn,tP>g&3F89=0_070IU VSUWÁLcKR(h "M;<Vj.SpN 57KFz{Ba_lȊPb[[Ju/S9\#pw8sva{8<ңOt#'gs4Y.;M.][?RdE-w/b#d36qS;}MPgG4j]p=((8;kpT dts]ȚJXvB\\sIF|T֨O?O+ZtNnwC,W;jq:]PM>ex8ۨb5SRN}Oe@2Kڅ썠s'X%X-@Ǫ+0ZAR0_uu^,_kύpT']Eg-4D7b>괱Wji6k\/;osHp+%2_=gsYqD\#nTq N?RF Vߍ&0Vr[Va2?&Ӭ_],morq@SZ >]]T$Tk*uχ ؿ q* z^n;@!/UK̛w d?q:PtyPh\qz{ع2B64ڀ%s:ЃUSI_u@+dG:AXrM Z>en}ogwN!aC"',4&RBKbR'qf!@D:gpٍ߄c8<{(tܵJJ;P4ÐGHqMoc~fj_t7xԿkւxÝu͡kK%_>kOn٭IC:̸p]%D$Ymbrf(^T PcZ\ o^Dzy@Ro̷:?NUaYBV,d5@/nM| r$π+ ` Y V3#u3[A^FFB~kη:`6ŗK舨Ց!r[dAX$YeKPdf m3jS'2]<AP8c@^9]U\elԑ@<Da^h,]*G< k/=T]agy/[4D6fq|fޯB¬٣+{#!rR>ع1Ajŋ/ X}\<ˑigCpm>mc䱉?9vܴޭߝywAANyHmktÞ2{;TkW .'I_̺{޵~W[l?1/qQGO>F˫UuFm@)`5Zu縷;Λ nAK3!e/n"+ @k G d#0fYK90 Ij:zNS-i u#[K?X;jC=<4pHԃ*PUUe#&`!hO^)z8a3CL`} BTٯ'QI+@ΰaY>vL[pث ܢ;A6ɏ!lk'B@y旘a=E ej4Ǜ@v%D}H_U0>523yF7U/%bN4o^?(/.%NqFL*CtL5#mNEt=PەtVO;]D7Qt_Sw#\K{F [/.y(w9o z\DN]V#}NTmVs/*lpp^%?'l@o zP=tzڢ"q༦vڳ~ߐr1Clmǯg }gv̸  Y%`}Loh m]jgoܼrʧABGd{o1F)c8ƪ9<`W3Oί3ojq4 rҲ>6 eJw{D5R7_sz[ GSz= FP{Jznߝ}o+OUC>Z;%j蛅 }S|7Z[n{̺,ّ8՗ }-YoZ+ﰯ ^3Ad2PO0rlㄑl$=J:@wUus0FaXjc)Tr)9P^' /*Q0kGT ATa(r\*JR@tmU "[~(F3GvaGUxkκ3E ꠧ=h}Z@7Vw+ҕ #DtkiS,CE nAAdA*d,8.y\:wo#e=z9 55k@$F<-⦸Zjl$G/qMoZT0D&P4zb=۹_qx!YVz4vs_0AޘI1(b&5A/[QmEՆRK)ʼ_P6il$XuwATepc;} 5>{edKgf ={LRw| e>.STFZ)\'kc1ۭ9KRNwMn.x(.(=Ͷl994s7oXoܜ6|ҁ[+S*huX57ʨ9C{!=)@<D b;Aℰ@T+j$ ةd,tgW/*A#2D(u~fz4m*v3EeQvY\u]=Ug1{xxD!q]V=P_Z9 s (IJ| ]7h\"N~K .}x8a~ă!`u3%B i;m_TaoJ_x0lSP(OkCߡ`- /jY! R+R /)@V3* 7rصvU3pFS ?0>5@yAF&XHap&D0sݸ Mu ˪:\;*ot~٤ 6/YӭI--}<=<) ʷ(M@r.+c(COg? ]8 Ngg{,MOρyjX仠VE0b)`7ڹ`t4zAL5O-Q!ඛ!7e9Dm[4S)σL;UU:A8}/d/#nH2>&towC8b3c!t~N3". }#2O$dIP'E6@.6g*S>W-,r)&- 7ؗ-3LAL`xĻ"\ r'K #H PEowVTPwj8htWt*Zsq7쩎nŮP/V ͩEZϪjf@)%;΁ЯD=9JQD?< 92hICW]|&m]tw\ .LCZ]c=@L#/A:?9./ٴlOf?|4pYsN}-!]g݇./wx^޸:%+z7?Hnw+ؙ~/% K=x4%(@Kd{;=yFoC9_D%/L \ 3J|:O  9^Ws:^k_A4.PM6_9| n.}/`!KQ _jZ'ʹ8d@z.tC] xED7D yF@;&uΏA[\Z 0r)X%߇@z@#_.}|t0at*w\;Z.|V`~qŀ3yy|!}p-uuLQs " <Ս'.=mZ:]\bFpS{W|&gU1cQ }) sP >/oW D }Xև@xEufYd $+@.xQ̪ O M] +fUs FA 9rVͅnO'y,2+_}XMb#J?f !C}  JkpɧUtAtOT?0ь?N9͏>ߝ8/@kb}T*R:6—y(БCGL<0q3k]s}H^Jv<?_4&T*Z[w*xܞ WtuDQ! d(Ku V\p2ź"1M"~Y # QG Nn,)-TPG-$@ XWD'yt}> ТLޑ޷)qev^&O$XM[c'olS(Yܲni@k ׸k $0x?5[ N ') ~<`,0*{~62|rl-̰$b4@Ɖeu`8!R>+'E;v`#?`f[ QZ^V0Ogb,)H*x"28 \ MI\S4k\ NM=x6yP!\Xm90x) p5J?# l;T #[]2 ,fl#rҜaex^=?U7U+A_J1k㤿;[AAĮR!86!WKqo Kvkq$e'$ѩUҚft%G? ։ zF0?[ 8p]qv{k_EO4P=`-\@ׅuM_ɹb^W' = w)i0j+Arir!1N@ p>X<ЇKqW*JަA,?e n|q4EX^0wݰ1+cxH~&a ƅ _PdM%ڀ9z. dlŻx1s]Ⱦg&P`W 6Qwzbe}uނ{{i qшWa묻 Xp,Q@@zbrlhTUSxh2#)n_ypz\fU\a {@8j*kkl2烊qn8Rg`3f@Fi#y6Ae*Ky4TSuyɾp/g[|-^ry Aq1^(_좒 PdpO {`:xzsǵufg4ls zP?39E ?/Yܩ9wJyr&N|W "{K)]pҜ,*Jڧ_sY{}G[o2VlA`̕S=NU0QWZDzw8n\o?xu,b+tVpmsusk4vXˏ} /&DtpG>"F#8g]VUzsLpBwD8ZUuxEFaǠf9~SQk^2`m45_> s1vsx īb ƛKP b-55˺ UÁhQwDRިsb 6X6b݋qMbˡd㒍ކn5"l쫇;Y}Aѭ;t M.gs-uuڴS<Od{Օ{i- b@|% bKoͻggY"!Fxz/zAtkxE:Cޤ6BX۰ 5PJ!W',EqZ|"+x,ʈSLC-%e" /Zb5: 5_yN5j:93=9S*Ij'瀜)SS@TO Ʋ QJ6:y 9<[;5]#j>#OfQNtѠ֏U#(.^Kx<)QUڪBϡڄBԭȩQsjHfܴ|5C2a)Tw?VdG]|~F}zP?_7׾/|R½(~s^u{o62UIkj|r~ u0F2=03[YkA3 _"t(9 xN4Z|j) "V\͌{@v`T12=@^ -!0uEr}@W]ty[]oٗA2_z-LfqAr:f`ZJOs;M{3"4}FBدf@n&ýGL Y>D.!'E V2d ~?KmH@p0oYC!<>J@%EQqxBeWޗ{?O JVS8 ʃG{2U3r` p8׀ `33@N>X ` auJ/# >2o(* Q ^6l~os$YD@@2"Ir$HP(( *I$g$G$ Hf33cTkvX{^ I."VnDPqʫ5) L AWmS.9Co>.ZޞI˲< \-~>JQ^&묐%[&,NϛȚohmU^se{_R=ٳŝ)w.m21={HH݄< M:I(Y]w7DFGu_%8wqΨ*Cx^txy\>2bBYwCUYUEO홻eݧݟ9œlMDd9!'Awn6>Uh3yt=[k5: ,8rQ笽)A z*9Za=|Ċ$S:AL0( k5#pJhhy@P r1LNqج:hj:b8e ܅9!#64e#}"YۍscUUoNieFe5ȬMқmUϷܟ{_=vT][yհVkCPRmݿ_=][߬}#t T2?`ZutXt}6P7[fms fX߹S S.,F|,s57Fy_;W@%cj0kP1hG`7(, c}w~Wb⚈QO@ߤ~Fi$7m[٧7.nB3 RgըH-ln<0>`7Z-@Y+-)FqbJ1iTu҆SANG`hWV|1y!Ip9DDwٹzBHp~pX\[!;$.*| ^Fe GGz3ba.XfFS+tCqKx{ϴG=Ie7CDŽ*XY\kNF5Qt!=_ol+O5Lqd YDHHHI` pq%+o @lOt^}T7jmKT3@`j І yV$Й`;f8qaѭM>~vpeJ޲_Ϊѩ mo<gyhV)F|ZK.z[|~ƥWWjwZ)WSbБгD8&,pOu!Y= 8(J@ԉʁ5` w sݹP{g(8Kbp^isN6O!2^ jگxv'▸gDB ) ?GEE3Q _F0A  :Vm 1ZŞhc1ӸkCUaĻbL`1=۳ջ‡ ]vrʭ VWK X]gwF#y{?W%gxg2HyI33W1X nlw ӬF<74rh F3鋈HWT VF1eF g/ZOEk"XAUC^"?^ bܻ]`0@Ҧ>2W"gY ␼&ޯ3*g-A9_o!'S<{0%2v~{:.$\d^csi:: [ޥucv+Ė-:䖍eft|"/{8"zO|':PaB#5kK:V黍Z?fK?)̓TT5$k>"j(H\~y^  VmZBtZiYxo 3Ѿ @Y݃ Ƚ *F2CdGԎ_s1\$@=P 5G*1VnV؍u)BoGnP#o{12^m7O֖yYeO:h3hVdܸ|ِ=z7Y玧8Y1bV_͒BnK8#^!;]b']3l5p'SUȰ3YY2ce<%7AT[)&I 2*ox_L}@%>1Y Q;A|+vPFYu ib PTuSڹ|S4RS(& @*?C"#+i1(~߀1X lc3FS6:3yzN*9\L@('ogPTyU﹚Z@ĸ%ހ1+? `d߷z65)sH9 ΄"1_)ykdkѲL>POП{om?k ?!yx:Wq䃮3}sezYgEͽ3TDyT`8*qwxx\+*'ulg3E2Xo)\`1 l$Bǹ:| " ZwDR"+"g96K "(0a1.G[1>r Geek80^+u R\H ct1b^b&3YYZ rԆVᲹ jFg8DJ^3Cqׇ]߃`ʹ>NAJjʠې>cK **WBz`w]`낫ؿc@S.)RbzN"Oqal+>/ZF[\CGhcPʪ#I<)OQhf y0n U">G}`7O@0i05G ;2v˵r}J[@62V0O;̛`ؗ@]Ra46<e=ͼs,]V] \&| |oe̬ S&9*?FsTオb@̸3 *(QeQ%;:.ʨٛe3XJgHRO$+w; ;S*VbiKtp~R!}vF|ks;'KZF櫜X|\=}~)evW|qNDs@ЖH1ZTf {(p9u ˹r"JL%A ȕbp]M/DU:j`OsChl=8RYX:Gl+ߔs9juFr%}7`n0FIT^1Pҳ N=O߀1BAbhYLwwW^WOh_s3361wd1$Il+HM NaOISW"d-˙?N&KͿ'1yL Ԣm`쐿xA eP[TwgPFd!tB&;AT/g}.tLw9Wn1s S]|J*=XD4=O3+WFP,fiRNCf̯3CLq!Z&r62R;H -RwahnhDۓ/@%HV&dz5K_wrQݓ@,*%v=͓Vc-ězz tGqΠ3t)&Wnc_1TqG6zG`$/Wf/7Z֍v C,8vSߞϠ+hKMt.Ku;P u,5=N=QvY b,9ZIC3ͥ wESG. {.,>=%6x"h@ЕI gJ)һ R"'D^Ε @3&H79bǫT=z->jO+^_)佘oqjܻ?<ƭ=VnF_J9uWZ2:7IB r\ 6"P6ƻjf[b"bCA_ [bM1h6@8Ⲡ VO5eSAQd YXAU"CAʯ#,MLD3ܪ@6 >/~1K DQC]I+zOŪ*]S<$D;QRtјJ+b* bWn w x9Xg2$K6uxZXoJhRV]Ip@|ӿ~;z8 ^ ACi}E1͍j9v4zѣ^f'1Ҙb|h.?A3 R g >e8oAP3g!y$9fۺ a͍)PŔWłqD2|(/Dd# =]m:|OQY,W#4UKbꑞm7ȗGPbzGntu{3f˓% izTVi=S@PtLxύ󂧤$Z߆1)Qi-swȹӣw(|ƭ22>qF%g_"G;} UFqc lzj6.uWӜbd~98uCNuP[-0Vk7=Yؘ x"@]Es`6֚灿nxX zjׁ۬/ħ fL]PEќbV+6ؿGߵ<&ʋ :bx{xFlظk@<^vBJXMŸ?- 1Ŕk@pdZe/c"|nr4Fx>#GS@^2Ω,6h*kgɠY[0o%TefVk0j",ǢU]A-SwտxYlEYAc /Ne̪Q1IDAT|]W*"CV{_ͫr X -Z72 dXz@7 aGt=_g,.n2Ĩ <-!|6ސW0~46!(9H_)R%4+͕;dH3pw>[)3%*8/5}|+@;wYa Se,~5 TUJЋޠ;Yj ĉHUO deFI#XntBͯ@/70ni~e,Q,`<5A7%3YzTw5TE LV`Էˀ8לd6O i7 sO  {A4Dߋٍγ b4jjvb$l ~\\9ccZ@q-qܼbEDYlr:7@%xzDYqGT+ Iq.9O%aQPz( jNmq^,\s΀s9O ˲ ć4! Ѕ`4BC Aq2J>V+ 7Ԋ)S-H,jR~xZO @*Bh4:-@@@A^ n`ZhmFU osc埥7^>|}C໿>k0]nexV|*ziw aURڨz~3 `+_˫g0\UD?V^9fz n]}T{P sdN^ O=< Yg #KE?nn=9srB`bpxhJH~%z Sӆׁ=3ooڝ=3DioowtqYѭud/R@#c;4_GPK2=pQ/-0E`v2_1_Aѷ@D>0'5ͭ o[\c_z$@r(xt3l*s 8GΛv9Agl1X\]]^ wO_~A_W\Ck?Ŀ.Pc en Y#2wgS֥ԟ%P|b.XZWދ\<BFMh!gyf]q3?;<П{ME6\UmzUÊNnƏ\ʕ_\Kop O >K{D)z75uN`+J7p;5@ Dym= z$7 ,#=͵\9D&Ҁ,(!b+ : hkdHf?t6U.m`5Av`27X#2-e3(MCAăw-tFWSkA 8 VeW5kv' ,`V0_5c 0<f=Bb|gw|ff'/$uW+V \]ܭg:xzT?`V1+ CRȲ]Zh?8M/I*9Lɬ N%8Np@@6f8XPA*Z([""3Lu6ѓ6uK΂&ʭ`1g@/?dݟy`Y u* E+eEko <^_ݚo,xy{3V@GC!şZ}\\\ 89P|BeBgC !~LEC1{;RVE՝>7z^=dK ~򿜿[;lWm?~N9k..6w3$VL:0y*cj{ oS? ]w{;6j@eu 8WU9|'V3"Y`}Jև@a?{ALctaq\羓5VH P[@pTQOF*6`,4.o4G/zXN>dUcj UtypJsBh{= ?*am>ˡ`F0WRs:@>n*@f!s% smg n?.yջ{"vj roѢŲ/@^>׻{śJbsYN>'@5AOoz'BGf(jXo\©*] 7#yƏr5YrQ\3 / "[TDn .4`p`~cYOA T끾H!QB t>|Lڀ,ln@_ςؙbVC̉C1s=vSFp/^b\.&@潬 qGҚ퐰 +!ygJ:'+[!pwz9&m^ g/ewiWu.NM?7ΉT:WpY t76+Tw/~y 7ſp7_~?{ QM_LFGFF]D?$?ӌ.ʷByBb;0`sUY$ҖPY:QQ' Wɝr- I w;q)etQ?~E`l٠_B MǨ-ф 8tgʯ,˽V+6;ՠj#س]_CЍجk!<-=9Ӑg uʔx{9Qg̞-XV\HZ s䮆,foe*8vgPyum 茏e`6A2):@MS;|"-@-Tyv69 h@Aq/ZV_ ^XQwGՏ\A!Q8_ocƟ: |Q_) t&@ p^/u,EE%S@RE@ГG1b ȆXӭfA/v~gz7?4|`t0C@93ovHߒ'_3RA~xn(\qu:sz8O1VyXl9g&oBѹ ̒F6ڢ^W]U ;aq}6#T _\pvsMM41(f~ہWUgڠE][m@]q!5Ww`42~? ol>')2X&:}0]*N.#^(Z<{39 3%EZ$,gT , s ^%Ѡ:o{D}yr\ eiYXVf;N덤"G>\^XAc%@&D9E!Qr N' ^ ?=`1bzOFs9B%g?0*p:8u ߒ]- z>UlvاB`K aXml3ˀX̝͂[!z;}5$7Lz?M3@ai+́/.9~-(+ Pż; d9TEi ީG"/{{l5+F?n[ 3+ OП_ʾOvg[2yf]3w։5pw~g>y *{WΚf>ccjm_ϋ4wOO;0oFV?][S':y _|h,ZGG?Ѕ7A1cJ /ʫfw+& `2Eֳt?)/+Lsg(X UPU@*Mk 1OXzzIW/5yY4&;@.1f9 oȖ:aNa- @Pu#HF$`2^7mU:vWρ"dĔ }w-vw04#W:x{*x{y,(:*~/|8{q|+꼚+}|qF$9z^ 1Y BOC r,hIj[>SM4ʘA^e2>}egrcz:@):,cpu@PG:.qVLde~@f YoY`ݜw@z+l jaJ'}XAצ. <*^ރ&yocwc!c_.BL$~)N I_$=) 7AƎi3څ⊸7{|=}< fxX 䉽{ bbq3g92V\c4qmM6@zyV{MK~bM<٩_ɿ&OP|mHV^ػwtww|ϾXh2JIצ<@S"g"@S#SzrS 0?&Pw)Iā~[]@)=`^0ƙ٧8kAkuMٷr2m1vh4p\]/,?@wTwA%/ @fC^'Fݣ 32- "?sOZ>0)Z/袠Kt+Pj K9X&FOyFd酌j`@b9 42= /<;Ʊ%wdNIk'6Npv!cJdH-)SldO [{3>Z.ڤjB? X LT3j^MnyQ=V5Dc*ڌ03߃zGW@tl%;r`dO b ۹RiriFq{"St)V' |.P'1Ǽ;bo{"WA9@ש34J${R@[yzx yx7yOxzo*=Bc} n Z>3u? FqΘZuSB%89/R[njG)<3? VJg V) y_Zާ.woֿ=1k_*>SIIL=Eb" #M Y1= 0`.Zpn8퓠Gn0jU ,CwVP0r:8;@O+e!JhMLUwO=RX0eu3g$|8!O\2Rצ +9yk ֧]xK{{o/ա42bNWy}Wh"yM:3 +_GvZ_G/˫s#_4vzw3Xo \}DXsumdL( ʟT.-4eܕxָ]}7J{;R:Dۢ[&N~w@0]0 @0ښ;A Qd SU8K]P8%O ߗ _=PIzznyD|%o| +詷9QИ UzAqd'iH2Q`2jۀ @3t= 1 t !`ֱm!!|1U9W9Qlߗڧ!H="ZCv'|fLLۓ '5)FBWJlA"` ϛ  ث1!6(Ӄ'b~W5gLU5 V,FցHzw36moL ,MNߤφmty?_2omؒ )8q7]7= zSK>GQ?f6hiS5o-6J~ pr?iqo@*b 8aq,m.0k1R~bRQ 2^-S@|$ډ.`3ט@&>@T5j?oRuXMZՃ!Z X n뀸,wqBx:Pu뢬xdPpd'F'cMF#0-s-8 /$}82f8" j5hh\d2,2#;{T9F`-7߶u5*a5]3;imw5T` bFFViHK؛]|ړ4!gBМ ֋9 x {x'o3ou{;@{q } X:x8-Zп)z&.<x~toY޼Hkl#nx` 7>T}wzno=?,I{ܰcSm+|7}yˇ/o5W˵3$<<TVYK,h+ځku}!`*+r@|21:?8&e/8} t\%J H]Ů2x(hFg} CqZd,-&3EO02$(^v/S ;^] x[Hs@Ũ{*jjnJ+] F-2X+&5%Z~`n16Q Xbh3kL7/Qi䇻<,dB&}|(2qr碌@K]onVy.Ygdc1̝VAB`$Zݭe|*nVP؃(O[F2lX=TUMV@g+@ΔAdCP ,d:g43>GGٟFu6ZZAsATi.&hjzqD!QR5RW߃s1?'_C1З, 215]z @¤zxϓgA4'dͩ]>%Nww k>ׇ@~߯7>fHlS;.w7 F9=NOx{(o@1e3o()oht3TuXko]=57=bu$.9WZrfO \{֍ܹn fIWPawdY7辺~>Hu: @Ap%nzUުϝ g0S%V=POUs =Fg>F#c>I@UqtW:Av(_1]!vPF*Z`_%z@ iĂ:f`|b4>6wA| 0W b)Ag бگ[#Yn=R̞Y=c"_FÑ\@T%x!\//hITOX |jq%h8/?s1 \a|wfHVCH% Dۭ&Y]%#bj&+ȧ FNb3\Oe@su+F3C`|i,6:sLr(hS`L044VLgV[L/p8jݺ~ܛw!Ww-p99[ VqP95HG#yntESd;#?>e( [Z7@P_>uVy@gs+2;oA47@Q]UC`˙ϩ餃,{@Gy -K~G b( 1 zqS??@3>1&W` :+-DEGCxBBnѱ`}j6@`]v? r*jbM?rU ϗyT ̣@i߳*%Ze6XE,Dk|Co5rwtOF-)D{ h5\fk~NعlQxK}꤂fwluv@OH70r D'F8( 51 N!W-d: fj[+6!<B;X8|'"b( ;hx5c_5H\1i8F&NAhi eo2xzx@`?)p bdĔqbۀ;3x9. ׀{By{[+dD.#ؑQ*`^+3L9>l 忏{^{?˟ekw:z^;R[?*}EZ% ߊJ 3lhOipn-U.GU.pN:X9Mj8؏m~NCGs0o7A@Oq̲fEfy6nk<4q(n1F,]0z̅@- o8yUguTj3Z89u Dѵy!'չ䤁u-+YN-gSCk(GyU(yW9B7NxS6u@}W7i\6Atetdt9(r`0n~`5Oe:^c7'A}lg3i l*E"ad42SP9rf#lf? >|Hޒ@T=zȡ=+9bN~%ZU)f tP}0dԨ%׬TjCы橛7|yD#2#?`0J_^G頟;0=ܥOAOt(%oGLO)9'1QFt 0ޑ_#ٿWb/={ ⷂoo9@ȸmFy!;#{$II$br]~N UYfiyh+| ?{|=ޅs>&-nC7b S#{NqtE\W#xfoso5`̄)Vo)H_%3&daT5C?9 \;lq3.5>E7{1n/ğ>ȓ 㳼 p40k[!_$ o{wE[1 8!k@Ot=pYx(`h]{%DܦϹ'E\\Vpl\Qڈ7sA6ePǪ&h[Aw<=vE%G>$9WNۢc!KU3п-"_L]9Ss\-k؇R9 Z"- t}[AU+% J=fsDoN4HP ewܕ\"c"8[J%fï{KEhp}{gY>< J "^1RA|9 zn݆]Et5CU3r/Myvh#,3C]HAЕUEn_Qz`7ϚN+[el`7+uoPߨOԫ d/*$]@Թz9DTBZdHI iHpsuq NVo܀P|qoվlZcYCY!qbgKi?AM'u$4gPG2gKQf]$Or?k7m4P-VPhPTibH@U>ר'#x?0"Xwg9x|U^69d|Ϙ f3+1<] p* omBh7B7rx$p::MTMPj D !EAzKj'뺱"7#6e`op&:!";)=Ccl/Iu>e;7:?51"u<9cyYjDm aCk"A5W/G1Tu"N4^7# :r3oI{u͗??0"Ma qDv _o ߑ~9 mJ3mVJXA rfڽATT^%t,8 .NKPS 'F{P+TQo1[O5_! QE'ކe}  Swq:@:@ ' vLож7=ϻbx(<1 nyie˨_<ۙdH,%r|ٻ U3awo5~/ _.5f'θX?uY>s9|彛}Fq0Nfb#ޞ?>;ηhxL7˗۩ 8Xpo=־6[څ`Y%~OYWɵ gV|w˓r}TS Dc`]d{_=Z TY'l0/-kc| r?!aYe7}/x-z=w}Uv CmV_W>d(3#!<8cx>8a"D^ 7HpDDD 9 NhM}v<#Ȯ@gV ˼6X\Ϭ ʏGuď܄܁9ruY8?s$#Sك@ʧ.+?2Czz*K nGusQxWX)?y3\O}GGU$eEEoEo3tg=P]GkCW rE빺N$[H!%e PC:9X,|g%7i!}ӹn_A^@TT%pp' +!.w5 @$`{:dCpIYqy `|$P!i =r@n\;uH[ WLX }t1(3ÛϼCOh`)@L(0T+]0<NZE3Fa; em6揶v3`Ì`6`7vgw3lLputU[]E5Ay5:35sfj˲)75`W7/yAYTQ@@&Mt]K f)1 >g ^j2Dz ۼas)kV%b8{SV'k mfh5Y?7\l~i~Yo6V-@o.=Yr1TwuCvh?zf r L@[GO[b}N-x|)s+fzLB:*27?߷6e$zG siv!r&r5H;r07H$)#\-f{3լ ^;6x}7= X1/6Ę1 8<'8fT} R`[]o=Sl]嬵Uxe[oHs^yflV}Nַ͏ܸ7wswCN:}^m#h;ܹtwgvmAQ*_"oEoD^k5ךw]S{s4TvX cDa!b8zOTLnf] ܢxVj/.00b7kc&B'a\݂UUϓqQ32ҋd=d#G=Hng{6A0݌Z[=^/| |Y0!y}ƾ޾Av7_ /z{9."v^}c6_.X.8A;qv/}JCh݋]iTG]9z|c@0}Wo=Y k@d%0oߛ> (6Ɓ}N.YGf*;A86h CpN>")"xjZFB]VРw o|gu qQYo#\zFOWcW.XSk <bVmKw=qYEr͊nAȬ5% HxS Y 7 NqKl_ >TPнP~ ~$^h)^o}OZ?X#musU=8C3,%9 DE_=rrz,QN@K1ӌ9LĉzKCLD ?oׂe׹˹vo#'/3/I=3 oMM37f~roQ!Inzv~߉fʣ>rZ*9,sg؇ȮZ@S-;s( DP@ogBd"/Eދnw3rbփ'g"239w P: :Fj 쀽4 8.xL1Wq 1r*F& + 2Ut^-CP]7 #/w93@$SDi3]Qo G!r`qfG6u8'<0i_mNLm n}msH W?_,au 1c3!KLIH C;ܜ2wg xJʹi'] woNZ0M||??ڗ~×BwCvLy o+e_)y ݙ@&P<_yZ{k:Һl6e}e2ځ|;&<4˻:]^p< N':P3aV~b|W{V+W߼v֯unս"$%I8zu<zZox^}V> Wk 4l=]"GCL$vfl aL'A 5O^|Qvy ow{$-R\`wq}~h_Hzt\6)jjqMă0u ')r68=W0$c[A*OXנֿ}ZX~/1ab6A/ED} moLtfz 4q`n3 P1#:.`oy_Gdʀq@}%Oe/8cMr 4)5Y<q#bfZ;̅&TYu3 HUjcH8ig>X`gQ | e%zCL46xǖ+ Ƀ:8"ʁ+w{a*Z;<z?.RAI9(|y!y_ZkؙgGmOZ%w5}򻃦V=Or;6ur@" Z3EV/kDDoGNBt@` Kb=?b$d]nh+r 2fLYeefu̗2ZgHF6#!26?RD[F Tw,P=UYT/JtC#@ۺ^; ]F-l@ap@W.h Cpt#١gh$ZGBls ~ PPP#RtU\>bn]3irxjx @5Dg v7g6br΋vSc*4xl>bcepM"tX֓x*5!&}z9Ovt8L.) PT ԣU@..Ѯg N?g==}c;k*kAdnDdF,4铯 ͋b]XLk IO=2H<8&u槮Y3ހgSRgsBgS-I?;,qLk*A>Q)ƫitqy̒',.kU|\gn,CB)ݫŵoi7 K.ϓ6ܟ|KPzy֕[bFξ;{'l덌[\ƃ  H[J5TO@ֳTFOQwΪs3" d%A% (9H$Ksԡjb={gu\~գ3f3k^gr-w뮙fV9W >K 8#Nwǃ݁d{^LOc "'|bbxDG^#o9o?%!?rpV?;A_۝lX?p:`7NO/~,vr.(+@}z6WAYTy5' vmg#E7*@LnE_#Xb=__T߂}+lJ'TQ~kJ*F FZr<̩f:8YN{>    F!\BĹy;<&Z ~?)H7-<Ӑ64[I9؏g5V]y\;»7W` ˶\`n\7^ g][/*z6Ii +|{{էgc0o-gj+-w7!JơW guN(E"};TUM:X* ^`6z<+<ݝ]7͓ pr=^awapWwrӌ,(+i` CP?1x {JݚT;`.q3;zv@^ah/O z]M`zjxUܢ*E7[nE Ta"QB$Z"zyT^tUP/&k'AQ0/`Ed 'N񷘉"U<AUgQd!Yh RDRMh1KAQ Gy>:^I'M-r<m\(ZnBJq0 rɣ΄@ ڞ-[,?ŽOmg}4_L>9uTTq.g} 0(x?M I vXr(E/k|_x7#U3\\YYpI0#^_yZ+WU3Ss8/@@K6V.yim>b]wu߾Q;Hk 0Hl@7}TilXT0GAzDPRsfzn 1_WWY/skx@Vow9!RJjNm2ȸQ""})>1zqƀ8iq|=j*>0.*~6Ľ }+]+=ܳ{= ˡ~s gouʂh&vWAe2nkx{OzHD~p;ҹ Y'\b'z~ "~nweHzAUOr&˂l-;D_95&pBdfx/dQ&19St&ۥ '.uI%;` 7\ 1ZHsM Sb>-ugj,g6h7OT@vvۮ +P_6" ]ieiùExE?T^*'!6,6?9_x}Q! fiCb@Wg2j *&nx%?z2ȦAN :WeQc45z*=D7b̑A%r.DӏA=hl}NMk$1Z2tI7-diQ[;ў[ L1\]\! ޸. -VG d~9<+ӓVr鋐M[RFRK_W75!8&;:Atvc5ax z+kk x:˺W#G¬呉k|wFu2 ͓0*oN0נ]O3=Cph9G':/.u~O|Mv[{}xmNתUw[_l O|Qم9AU[+z\G{osnYJe v@Y}@3:Y#L=[ ]*j9|]mjUCV,kQ25ÔJ>N_Kpp ;3YܵR< LIև5s Є}0r ߁7@UsF9@WTk]8"Wc˝n!<-~}ˬ.YvN!Z&v3zjHρ~݋ Ư}cXM.Bfw96Jxpvvmn>5\S@SYwS}8 lb/YO oMo_c]Np4\({v*mZ%\Y#݆2 c+%pgB+Fi f;KWyhɫ,O9EOx?$!͵#tZ't;LLgTx}<9O . ׿Yt<-g/W{fNxf[$܉V7ޛ0«zzo܀mL* 7 ՍtcudO.x<~vDGeT~;A{֘XUC&E$d@n@pof pz:ݠNjhAeƃ^##Эy /LDoTAKdYf#=0&@*Aڨ@9{2Bu{LY|CgUx9BTz z> Οkk5b1-@W #+1 bNT.XMyFޔw& tyQ<S)e6;# fa+ӵr>qH0|~W3Eyİ <*$r2{g^OOM}]MwN/iS'M> &/a@Ng=kmgWQf-S|o+%v7n/tϷ|NIz9~+@_@0 sz!+|5}z|{0 bŲcہ AAMU?`2@}^EPu۪b*c1H6ʂɺ`xSbF8;DSoGB,=2Sˠ68b@zyʽP<)7(ߣx\Q71QzAVv;s2:pٖ7|E>M:˿y z.T^S3I;^U2^wڽc2V0j] x]AFqAlWm,x߃ &n4Һt}Q{~3 $Ț2%JUpA5d=5o&8B5qdy9_EP^,9БJ0&27::[&֋tt}U E5r4063%u v1dYc L.qsy pLOz$ yG!qRBĭ_+aP|}5-a9; hO~2HH/H!W!v. &W3k5sCpv@}&.#[kW&}zy6 jYI7AJQ^_-G㵑e:[Sy&܍OvDﱭa6~O3Vr/\sOu?pS.0JM/=xo:qWN]|ރ?Ae175"3:`H=0/T==^u h~~F )r(8}<Q^Q&95HYPP^xy;Zurs0 F gn eﰫ@l`P8ӝv{𦻷l"ʚ2; |n ƻ2EH5S!> pg ۹Qy(woY-nWHط]:( ?ϲ!MH|2DAfZΰ p9u( xzo?xsc.BnCg$e5}a9<;oxpr:@I Y`3;;ڻIsƁ ʵC4yR>@wV떺8םW;kº 9 ' ˹rWDY :mT }jo gGs|9Cd|U7ʫ^uY,=MO+aڐoxbOχPAH(*p7ݵU#!>xzZ3S*ASuUPa=sc`m;cׅ Ɛ5,2e OM΁EeF gڸhOjhVD8wkj8h#q\90BA4= )o~+ tyGy.uF-.+zEsȩyXCA֒ˠ< b9b+D:Z4clte8wcift\ \%ǀ^[k .Aϥ/Ѩ-$mӾ @{@X:W7 Cф7?y2Y#YCOp5ض}M*QλY coiu-zk'\{J\{'P9UrN夀SNT"T20BϽr끺 ~e.LĉsZY]>KTF2SxqNݍEv0ʯA^G:%lqde N/ǰ<([nz"Zb5ncmPN3a*K%(yPcPp1k+F@Ǽo=VYU@/7biNwiw!; 7ʗD<U2eLb!]=vw}!쇘UAϏ|m3 I&w IS*ḟ5^^;W%x'۬~F9ã(!n f}Lnc\2>Ţ}O!T|/M4gOUG'2F,1FLmok!ye,yA<W =ٽJ,'Jyyke/[VGGۺ^Cl+s TADEu;fA$%. QѨd3 ?$dU޹z6upZAy T/4*<}f1LʑDVF?I%RzCJ锪I!}lz3md ]N}_;oI???W9/ |F{s:GOAѽpu3Úe@Z#f!pZuck zm>wҎy8&O3g ?ͩ hS/[lvLV/jђn_n ON>fTH82IAq8VYU U>I@JW`Wx{kkMӜ {挍LWSZ偧U< iҲ^HG  6>|{|}ijq!41dFVs5,VC K02ww߯ޭ>+@oYޮOe@{j56[*ެϬE7:?].ۇﮆX5HXh~)%n*g =Sг:pfDx4ePoXPF8'U}8B|ZMhcqX FsQbXup5v t=9Xm*)eLޭ6/0wt/.z.YV7_< >λʷ[iPYH =oU*:fwH=r'Zy;߭d٭oAُcȦX)㳸'},ӽa}+n$ޮPݿ^?>;=y"GO$K;PuWSq|ː-= y垆 GO2~[{ӳe \xβn7@;tRƤ>c1_VS"?YzV:#}H Qfa͊OtXGATiAD^0>4IlP=1^ #3n9@`9أ 8ҩ&?_U[[[% Á'wݟyQߜc4gP%C9!)'C H mCPʓ:݀H,\"w3;AhP!OC{;o._A'^tqm3KP_7cú*WF}nWɬXl/5$뾽l!Wqt]5n>͍.⓫Bݭ|ctҴ=m!J!k2xyV+ wyEќl^.'ր!&@v?BMULA\gc"f!3AEˁU߹|:M:8Np:;;Qуev|i0ɆFY<_àxB%B+ ܇=@hm)\S({ <8338UnRᎹnl@^<*}|aVbu_~92/ZxԻ#?LMb.ңknwJjy,NjEdϰ%0u).jtoj 9}pҡ. {}@Q% #AN_IQo#c1{͋t|R/sD{]Dxel:Y#g:K&Sm[ZlfEW:_my}_W6l|=z[G},#8uI`7\amW}T<߸/yۃ;ut- rcAE˹ f,ju]:WuK9jର9@u6@Zq Y{ >][ഴk/ ZFG]-],b1D'n0`M!gl+;DgR(' Uڪzq`0Ol<5!v|$6⏵=s W7k訙8K+U3|32 u&nK/_߾v\$(뉇 8 +0~a谠kN\eDߺ.Jwn]խC*L8H3 I?\,uDp-ypkM`wPG@\oɛ l1H=W)wI-k1$x^l~G(c6kV4Jǫ G7^/׿@1ʈz@앶kfk3|W|/+JrE{7!=""c vꤌRsi!niGc;`m4Z@G^Phv`W /Wk:EdkC ` I0sysE{;F㮆 6Mq >*Ӧ:u-`v-]h_Oזۿyc.<\ucxFeU>92A~0|w<wȏŷr-&V_vAZq,cY.jv@OݑhqUdϨ+Ѫ z|(to 81ApnGs^b#FC DK)?DzN=űS$/Wb$@Q-Tb @$H/#,eIi;o"*~WNysOo8>9z6Ebx3vsZ_A֞[ss^fev*]dff]>ǡ9yH;oo{zW!^0킧? !kh#:jkf601WDJIANosR@,+r09U}N-yEDkEWDollI.D^pFݝ &E'prwG shWh37rxzz*[#w": :;Rt{ΦgBZ͔) v;mDjd= !t[U <{U]w;ȷ9,Z6^ 4 oP&$=n9Tyog<4 =m=@-/S>pHK.$]X;Gv}kkOg3q<[;upA6*Wlf^x^\Ǒ[oOYfs/X;=n-rKI@A*6`=o5t]po/<g(AA: %NMECK,A}~s&~[O}!Xz+BWip"d.c$B2UzA5C 1N|&&s'Zkv1z r;ȃ-#KNp9ګM+-? E/GRN B>O|Uj?  y|'u̷̫O?sܹN&A}Aݹ5!lU.楖ҊꢨԔ3i{ӗwN} k [HzblPp7uwwΞ[H x)md&S m| y{}CUT=.IDATFuKƃSIvڀ3\{]@"CHPU%ó ozF$dWyselR'8d3f#2sgBzͪj_, ;!-x.0&%-xl2h!tˋ%`lM>/[on/LZ~yڃCn]꟫gc{ ,.); :o3 ]Gn9w+FͿu/piF޿ocɓS29D‘ՠWj"F:X]{\[)xyy+iz&)%.&N!=(Ku}tg⊸ (A}g; !Z E1Q&\9 ު~]iS-~BAnzTd;U@C< rz;[@VQUeu豬F? LU]UVA7~K~uA,T<#(~7CYNLOhzƥūgksXkoJ>5"ۇWgB}1Gk Bc~p5xBO%HzES0j/5@-jPZUSr8 įbI bhsQ̜Vu%ɾb-tc̿ oR|C1AnkA`7[A~*h#ƊvmA焳d~,`Z@*Pb'7Ěw틤Ր={y#yZc?vc|pOWem 7@F3jrj{kNfs B戕ut>UYJ?v9O)Eib:AdXB2/, E=dEI% +`|xs:z~CuP9(P@0 dg4O@Yxl8/G{`Q7!O͸J<|#}q`3 "Z$0 \.ksdo c־ ݝ8S(r;N*8}vjy?gCqoowLZUj އn~ev]~a ߸zFڵ׶*=v=.ʩ4 W!߈N X']V*`l-j *ʩx2]FA5w:-!2AV(kT0*~O}ǀZT@2 }Z RmxG$`, j^x^-[dT ֋( f0:7U!Q@9YŨ'ۀO~&rS'V& 62Z<;Nyϱ]T 3.W_<{r>ޖ/ jTb Y;ceN9G@{-F~"ygVw˂N#ƃx bNCQdMYCkuںޗ<u-rwFw d]0&@/ғ)"S<~D q7C`3nG\quvȂhHz$>/5$HT2g&g܅ gNhzTD,,o"ൽ/CW2`!}v$t}\aez9C[@3\_Yאw<[{lT@֏~=.a ҷKW7UVV{6%|r/xӾ]}!ϒC*xLХꗊ]]x}=;=g3~OQpopT_aepp-pkz?P5HUx^ _M18+z X D"*ˢb/>N]M*ث\ЧtH]Xqy\ 4jGk5ՋX-A_΃*0ؿ;@5Qj WPEd95A~+@edQ0j ""?x8aFA|"Kz~^|uaУKWz7yhџ+?]50ϯv-]z Ie.i˂;o#9+MТ6 ’~̱F%7;&[ ]}Uϝ:Ѓ f=@b'hhh'PUu<ܓ<#~HB' zB߂'ɻس{y9\a$B4OV4 RJ{O>m~<dtܕ&cIUy|- ;x9ހ6߃<_& M+O5B>P!V0:%|"'sf9׼iFz5$:w= 0~R_ $%@e1 \.pN4e4@EQwU}/7`lu JڢȈ8,^w+b2- Ce[y B]oPb=L#2A_T'M(JEй5r#bX!6+H#>灓\ }'P78PW?,I0r`ʖjAl;"8IN%{xjx{;ޯ}}' x+!>>"\/s 2z9jUH7Uw(.AʷYTt3swL*wN|Pio'N|'糑|?} o?t_8vn;PZk}qML}77J,N덊|NSAz#= y6x@EvX lHۂ}l|;O_[Lo-'. `oxi %~uY= d/)b"Kd @ї>`3Gj^>p:\s*:O@Gu^@4Nc 5{7y$:9`Xg稳¦(T 5-b7=; '˲,xvmM`~ln6zb=E`K U+֣rÛEOO?;_6ORGUMD'VuPt1%O$w~Ǫ¢|_u 'nPGm< ?Ѐ٢*l9 FsYLo%1\{]{JD ^O4![o{}{g֗$>' jBkXŮ[z-e7H>16<-q2}e^(9<Pt \U$x>Zj ܆\}>ܕ]׏P_SW5ʘriPtq2ѳzٕͪwIF#7ž}?zB7QւMֺ秤^s]_͹yT|QG5Q3e<{]\b38kl1ʃk_ u-OJ~b6s2Mh_+5[?9v&.̮Vyc3!BHy9{z_Hnٓ*'wO\iY}L||}Ow'N?4mO4se';S.'\ˮ9GKe=LͬfA5'b\ ] '7̇F gq@IwV[[pV#8߫*?IayҼNWm``1@fPj68T)"*BY F+qdKT=A6:ޢxQb8_ߠkЋx98fy ZFtuB /?5G֪ #r| 'ޣAӽuPT)U >mϡpU)txUzk9і|u+HH` GӫݱqgO,e p#йfo]w,_>^3 __s2j^(sUʚYW72ڍ<ԥXHN38(NQ K3Wk嵼Uį0)cA%ޒ3;$sJWwucw]}ŷ{Nğ_*]]A"S)%QVz:`uH鐼8Oh9$-~q{7p5W^tނ.[]{oBs&X/N#QTV=bor>rJP|`Bip=qk[#z-mJׯ7?dԝ[qy3loF^}h3ƾ=Ni۹[ne])ԥ({};v%N`&d:f= <:8Th d0 Z%:W@"G`42/ZrlUM`2vE!Z |8U1/ߋrpQg-豺 F %5z8P)jIw8#꡺B_H/Q?QL1ZH2t yus;Nl D[p8EG6GT]ڂb52x׸ Cs`W_''6 x&*z-tD`gLmp/j6uOl4/\"'N*7)8ڝR};w2g-{f{z?KY!К@cH4}0?$ qJ~1iN{5tsy*3bfɈy |Phm\Q0wu{gB3&~&<@F!֫WvMt<̿xۿ#~Ij< ==vK>Q~ǣ9OUNp9T#YDptX7PAdPyU^q".d9QC]Mw5AUVq,F *K;нHN U9 =}H S40Sf^?,03͈u' &$O_@ |lwR%M@*QAXa.C8PI0G rZ~|ͨ"5@Kn zq0klRؕAyOުHc2 Z[grدXK6y]7HHw NJn~. ;h+^n"ܷ܃6؋ X wwȵ C=X;ↇށ_~UL 2A~&ZodBq^ք,Gz̍k;p"s_\#LUfB]Wn^zwg_:oyӳ}ʚ5m:6ٮvkZU/g@N7g#K٪f(CjjuN`V^\>]gُg{ 0.!q{o/=^ALZ.9^"O^fW}mZ i@cak5J^>uxGЃy[jzO)B><h$?^Ab'B"rR6^-,eS>kc :@臱ZL;+@1OAm`7We`M[AYk_AϮ\D:#U#GiHPH,ԳA (US,J?}=s3<Pd>YDFXd0>H|Ak%0sE AxgvݐY3KfSO~2@Υ !:%%:f3?x=Aw= B!x-nh $NB/ HDE ̀H$ %TQ* ru[-nfo3?t١v`';{G#?[oru?6vUMV@mw8sAwb UO5k}Ww>9[!cC5"GB=]% T NF8Oesn|O|0bhDq*΀ڣ:SHSz *5{\d#Jk5ߋ8 l}yz59=[kDurDoLEob,(Beo7[nﮯ x?uɚ 9!9-!3%cjZȬA:u+kjF-pgK jr*0[=3}Vpho + B\f<# {`E]'d]<ѕxTR Oǟȷ*oxR_6n^4mýl_?5<ٶeivxƵ(:}䭀> ]﫞RV0\<8+2>eNREx!#z*z[rpsoЅth.^ݝ렞.qv'S E4x1]w}@p&8e@'yQցnF;3z8骠A}R*f<8b};1W|  bi$PTEU z*^ Cr:: [0Fh 2&oJ QxV_k<򢐨 *^%  JRiȨq&rx[`pҜN:(C=Ra )suB-yqeOnXp?q|fYloT2uQ<.vsʯ$|lAwN.Sew6ؗQNA <@(ǜ25v` XM=|!N5}?C-cV "e=c2A~]wIRZ c]|߄8 kkfctPYÐR(@JHr.>RBތkŀ^NwA\%a^h$f3!xsHYMȖ T@H}(78Z\Vݜ`Oĭh+ʓ{-@*S $ֈɠN޺3jKuMW݀pm K z)\ rS r<.S)K:ZsDA(%5^ b\,Bf:* WʯZua] tI]Xњ^a^dh [u^gk;8N<$:(/85U =Ax_4QXT@~%ګj8 8 YW dxIB5FW Au"""614c\dҧ $uPзs9?Mѡ{mUߪG30ssɈ JV2Jsd$fN#}i{rw~nո|iUVU .W~~\f$ѥ<27ZU%[9Ȳj#[OL8u^ѺXuп_AF i ~F( ϤO q@Z7m熚[Am-puwk1͇kL^o=L!2@=VI*wg÷,O0n@6Zh%?mh1{Z=g }Vwu:x6x_|-jǩ@I Q @_ )r1,ի>}2Zڮ@|r(.3b]Pa*q`x#kꢺ fqX,Z@Vj?Z|>VP7VAN Aר_^ȾQ t>=H xw'k}b.,UT_#xhV3kcYTr``?ko_4^`9Z`04 Ah}8# d}WVEq0L}I_7A93QT&Bփ3{|;˻=8G9+9URO!P*P(XR6L $ {SRǦ>N^eemP ER\%xvg'&D,j'~vG8k#lU~/W(Ssw](! `4r9lfԍZdsH<'9!|ڹkf+0""4/zF T_Co*PܿUѪ.#Ch뢵 ,Uժn;htVo@?9uA0f;pwqֆ)9Zx Nܱ6 d}J΀`B`l*Z|_#:j d9CNgyeYY1M1[@q X ;0G#mA攑27Ȇh 'C-iA]Et%"(rFN嶊C7& NjYr ]}ùAS`zV ڥBH`p  NNz^uيU< z YzYd, SpkX Z'B[-8:ʀ+ȫ L. JC6}CA'J\`%PjbAg6pc~f T5Q9@V_@;*}Mk5ʥ2}a:(' 'xxzȷ|}/#N<"{ I>m_y^~'$BV|֊#(z:Y..ƞM+MD5XU;:!PKAaeS gX` ݟ E\o*g?v2+*b[r~u8ɯWbqTNj5VYvg!Ed->fv)_˿POR)׫sXOj3lk)Xկj (z[UOΖ?cS:"Gei?N Ȃrwboξ S{Cz ~ewAE0AĊ([]uMQAv%? tKOZAtm"Q* `-~V1GsΫko0VˍbK9~ɾǞg1Yf^㉑yӠk&)+ /Îppv<X'7u 4@vdw0F>*4;$@Z ʋ( ڭ3֧fji *wEY8z^*Rn8EꩺAAho19%u. ld;@?FA [?əܧ%X5fVM6 ~-'`Cɠ~6[+JZ DX >C|@BL-AnF!YӬXwN˩f_1XfU*\tz?^:R9R$Fqpp[a퀢tAh 3,zAoRe+|K`T12UT:jXV0~OxaJn`e[)- >io0cmߘjbu cz݀%7Arz N͗+vf xJ`ikh \\.e;ûG|A~#/3i`=~ +2:X 1iyj@q3(߆`IuH97ַU{Y>;PZ%ӫEl1'}]!8?JR ņV)gX]T[Tg][@QTwPASQ`-EW`L2/MD#"F=w!g-0ĸ Zt2qy>{\Q5H3(-b@ry jF:m.W.V$Xc@e * '4.i SpQFOsG/qˬr$RE $qtZK`] _5 X,;N +*Yvll@4 *m! D(K^b] p3 5&L3Z_=iy\#=5%A2+-5YɁ|u^HV=AFi+!<6q6-89*:{s?[gx&/ś Nz9=P-v+@>k9 <.G ź.B_g3l!ܵH+f_[[+bb{κAF-w~[t{4v:ތ_? wR}x:(T[~à"ʦRd1Zv4/=to0YJe>,.?l93x+sF8j~#s[:∼Vi* ᕠT![: ^;k=h,{8**jx`'@ Ѫf{vqs&e-c2N*e\h|a.H=8E}b`,7~@twH1OH1#Mt $#FoנnYPYqP/ u֟xP)ʭn'l"1^ZRA]1Z ĪOCevn7gzۆk=cyʸ@ԦbQ b\( <-/\\ǜAxY@j5)'EƋϝ,9GRoClU#?ی,<n;U|[}|!bGD,& ʀ}t.r *#ت"mocHo}lSi08~pqZPcGϲnY>g&2#ё3VT9[}FZӫBlke)_ꂿ Bf+i^h|fXKu)jv44Ϙ h2xq`1GD}\Wm!=:Y?7p<\ >t-jkUT9BM}ZUQ@v i Kuj 3+Gx zT*pVs 6)W`[]AuPb@׳Tw~!2r("B$.fM搾0uF?q@vA7zDG.ey_nWU 7:` Dc1>/lP]-A} Yk`屮Yz"#AUSZU~b!,lx $?z>z^Ъ~? =Ns ` V%@lk.))2@ҝtS~U~>RΊ^}K騭`ue]o]!%jOSΤ7^/|X*kw5 |Htggx.zF{7/g(? >w#Xm=9F|%Ϋ E0ys ]}[=o~VF5Z,II)"wtI+F1,;|X4Ӡaj-?#Xٖ3J߀ݙ{2k:+n_-4]]QRM9>Z_tީ.BN}֗ '.MZķ2tM !<=3« ^p{J lla3w~0"2 /*0.Ynw3eDyKT9D~ FP6eylW'`yg3]k8W:;ʭ)?Թtj?;v^r>EGRiҞPsE7!Y$\8pw6vQuH}/_zk:EV@KP35*G5gʡjB{V?v }.grk-QoE',h/'ʯ \;-< lY$0+ւ^SD*r<VqkXvoEۥDb ?ˍmPU Nm@yTXAve:<m Z91?GNcTCQFu"2.K -3)Rtdpqto7k|"k{' E7+5F 1"eǛy7!y_51 49¨gr~ .{)~}:u x&< O2Xkg%0w 8'99v =<]yx;`eg9"sL g={]\SСk.O7[/٧gdH+I1OeIxc=ʭ;>>5=saevA ̀|ҔZc 9vǼ}Z?G#"쥦W̥Yׂ,YT2G' =F֓ꔶupjxUT>u_u6&hz9b.DO#xj6o8 ]A4mjTh[3{#v xF>^|! cz/' M ;<&|R/@OPsE P/q`2e). !>Xy8k$Si7X˭5@*ux -.x{u9]d#96K5H@-o@Lb5XUD)ʂe6 ,$NQM {@b+O~YĹ|Mm 8Wk0z fE'AVbOup3DHwq(|aȺ5 aoAzWSpwtu(ws4~Ϲ6*Udg\tVؘjέ>޵-r予96:o#vd4Ok|ٯFZ+uF{o]ٲ%돡jÖ́3N=?UT|Ɣz>W˿FvvH,qB3o\UiŁkTQafSWE_~y ȸy9ti/%Aᖾlg[ T(,kenI] ϳvC bƻ!zV$~=3z/+_W``f[BvmWou7*ZW"tBS=P1*:_qܾJUqJ0) Ή Qr b 9j:v@pK(5tRgr#1AK9Oă"@mQ@U?@\H׀!]EkЍ`B6 z0P\0bXκλo1||w>; ޢ`2;a]W |fTVgxS7 )-qYBdJߐ'ڃ/Rs * kΗ?馀S$02/^*.Hj?sH1NZ@7oӦd%~?leOǞR([|b&1vy*es(Obr/{7 CQ3&Χ:*^% *V:2˕1>a?:_ԫ!􈬟h*_۫[wb _Nu.r"6E_}6p6ty^^ t[ 6 +cFH<0iKi2ƥ΅)ج1@" Q>tSqoAG^i?G@tj Hi}g;rto%Ǽ#2ި2Kًv$l]oVpfC ߴ]f6$CtgwG&|?׵ow( !;0atF3@ $ZO5`-Qw!`RwAUzJq?_iXy0V9ہWcm-863/mu&`[mc^شwt` [V&؋oYNi8ê "ٻ̻¦ La0ϛA KP>)*;5.H0c8>2ݶnd~}f  X<b Cyui] t=n:M%D~Q̊f%rQ\}G?Q@yD1нT9kz~ :V8pXo,qkZSD%FIS-pv} їs\1D䌨9\?{zss3la[%[kv f6W_^H\#L.'ԜiLg3 /<ŀp3=05^/PA<%Qc]y}3#b7bFD={Mk //z͢:ٲ}_nlզDCHژ2(ya9Tyw-\n߽sQ66J?@:d|kMQOЂ^vh]談1($ Q\[cjU*,mjH_z=q,4I}>brDHHa] ƊiA,D6}W_^r p B$luy.7XpX AMWsv=]o ),REÓmfT51wzY fyrKPa=Qgg4 /{A 7Myo[K-HnP"^"U^ n#Vkګsh(<,o)1@M@&Ȗ blUm=;,vwȻEpo3`dug>"[CMHXBͤI_o$쁴RBf%}!?X%k9`xp>v~\;=}e}ü%+ecXŏkZP]չ@WD)o/mDKxz CDS+"'9~qfYԴ {wx\IťcΝ=NgleKO ~ KpVqTHgd'_EFn0yQqHwes,GV21x(| r:| bX/~O`,G|AB)!b S b눸bP͐%i ʉ9s8E `*+YЇXkX l+x<8ud+(/!T'!4 t t_QG[ De\TW4PeutY`N0.+I<\1ID@< j^ʣ+7Ƚr~5Y55[}Ҍ@UK}X]]E }S!.iJ=N ?ʕ &Vo| a|CTߨQ- VD89;ڂ+O 0*u nӐ(%)@Zݔ|!-ZLSU o m| ޮQ<7&x6m8"~>!.1 8|d_Q~bG9A^<}w쓡'ӡzC;j?lk.Fn囙pmτd̺Umg}-?Wa0sNJzd4e4P o&M["N|K_`79,SE PbN"ϹP׿A<DslM-so])S. C@*icЏu!=XIqʁ.cփuQV/!8[Kܝ9%/]1)fOUߚ :7t>elQ? [EpP#(5A6 |"#:V;S9f0A?ez>=:v*I]Bi1'AĊ""Fm4yL'|>?[\[#h9D%Fo> #b#kg<;jj;M9^Il&]NC}Ӛ@( ~s 8;iݍg!EDӛ7]4=TA*-DpvvtSXW||?wLX%caZ5*-Oj}?lkɾ?igS|i͒e9>{׷3zLMg}vm- 9e| t~>ן"1qG\1YM@[zj8-N?@EVG'AJ &}  -iv9zd ۭnQ}nrVKLJA02W5d5 ^ +7Yq`=J[ATyU]h#Jcs8%h%/ kd _/} `hXGUП+j:FgYCv[?o 5&x("k@x@wA?)ڭ^t1QD'&^jdoK*!&Oڣ  uSV@ d!s,Ñ" HĞ ?;;} SYY7ϓ›׋_T L*V} ؆Κ*wMptmt_w+O4M=RAo?$WQ`oj;¶Hfr;"㽎e[!wSd |SJrNٷ~TNil5eOvv>OV~+*0/8s1d1Jy^!>U^͂PRD[y%8*uZ @9h)qod}Hz `0~P1 pbbrE_EA hE_xK*tU /8ϻt eDMHEE,rOoopsrYPz=HvdAR0Ր8Ji`3t ]l=g3]ѽ ]|7|;O+~^QT5]o]߂.b 88p\ M ,e;ntى^-R`R$LyRGq,O4[ڲ?XyqʠK/SӏD; 0]-N(qF<)`44"=4V !XSUG|AWӿP%+R$B\d[YHCg"jVu=>QM.ek,`,p(&X(F)tQTI<']傂Q‰ww<_d􋙯&lnjr*G\y =(-z`E[Ovzó=Y?m!slE/ < f7 SjzMF;PyUWe Yas $=Jy]Tx$AMgOGeŁG5&Fg= Sū(P1~ :vsn(-0 yN+,F/QqN9+f2r π-00V~PO!psx-%7JĽi~,% RN Y 3G;4xO/|yssSlml%l#a}TG@ ZQÏt6_S3g 3뺛ߩLX4}I8WS ә-[+[_Xgvڸzܻg߭ݰ}[Ozy!(qe,s [0\ NJ\Q_4(& M\1BSBba5A)UOUBwOB |Lc8&`1.ʯC`+Ebj @Xo`& 2lb;&2yd!&vjQH1R~O?^+*ɕ SK\Ae@oG]tqD ^ . TGk `\2;6BÝA=L].%c,2 A;D= ba"b_3A%f5=Z\9_+vk5=8 mA_99+˜@k!p;N`$$Oo' @F!-D -^pjg!Tro.On$/{Qب<5M-KQJ[Q'VlKB9be/ԈIFwoޙ@Ϥtn폁}tf˖CqZk52+I 㯇}zrr8&NxShL5E&-ZI d@&x()Mґ 4`Pdufs 覺tέ˂0Dh PFB4Y@~uMǀ`0!ͯ5E=-|fꕠKR:xEn\"٠wXm8(TP0LF3 3qqZ<RxJVX0s?lٲ/[P" ͸5m#8wr]XV"vqh1ˮYr\X:Ywh%QNKA#@.e`;!t~ qk&WYu-q'A<Ql9m(>/j ]U/S@XZЍh#e ڊ h JrXQ_렎hrNpM ikdʲ2 Փ R/7@'UN=u"[[>5 BÅÑ*57(Xw<(,Z4 C+k+{4V?km8 sʠ׫z=žp}߉rn1 FMb&RgY,d=j|J\(Q.oQ ܃\O=^U=۬Sѐ;C׃?ħ 3l+uWBq,#}V#EQy.rr_(*w^prEn|`0jly<F_>E64#m='b醃c9 *BmS4sf˖Cq{~ݑ 敚1s0?uf%N2#~r=b-R5A ]U EExNmYToX>b 좲0I T0{ѭt x "Ϋ#t.u]%*Q]QG@^Fmq b?=Goq =$/6A}H4 `Z]A/y}Ƈ~+i!b 2^"~ < 7 (s@W@W,oͺ /<Y T\AzKЫ`83Du}d C9`~c|a>psw՞nykY⮭s;? \ղCJ/-HڐnB*$;u `)#̙jU \ 76f59lF,Sx1 S-ځ0AjUֹƶ5_d!7іۛ2fniٱUBEKNilO(nݹճ~tǪm _PxkVydNݎ[帛#-a.~yQwb#  "QKߙeJYC!!6<F )f-F-I" l pX[4REA7UEi-1TF\7keL>+AGZkw zr SJG!3)3n>ASO8EiпzBLXj r_v x% AGlB˹!5$yϾN)7N*`2`d#C葼 t$KTQ@l;{x`2AE,yRaqFǬ F>#QOؾ<4?1-Ws-rX} 2JkIc n-#Y&nPVa0 a<ng'xւ /(l/Xs? )`M3`4Fv>B8&M=.8hڅ/+O};ssUf˖_?3y斘z>}_}=6jܜ>5ԽՠˆѕcVAO ];G% {@TeuaHBu~z=I?{/=Ny%WH P%] u=){DaQE4UUZuO`XKZ,V=FmY4A`3ʢkT~]Ki>Dg`!?r D(aDhFUKgW8>l^;!{j=U@QsB"r '<]>WѷJ< au]]OЇ\W!8<2S@y==XieX9Rn2ڀsqsN+s9 "T-P2d8 a rQ.]]Uv>þ^<=ϛ<}!ps:@}EβBGY 1M׹!`걔琶0uIȺ\ F7pvtpwWs-q `[b !E]0f-0Lclfa0ؘ4Rb!6:oo}Ispv/<9Cbxϗ&̖-tWG쵝prFqw&9/%g?],߯Q3PQ_Ǵ{ 3 ڈ0_!9FT] ׮!pUXӳB\5* (>"ɳb &1+5.D%[ā!扥 /dz6 bY}StП3Z:2 :ɞb*|m|Ǹb tX .Xg#xH"@5XsJ)V U5`'kRP@!AV%+\'quNpi2 z!u`1KA+3yc<^Bs:$p Dp߃cݴA4 Edp|h7Cg{ݻw ?zzcscp?E7 L !yz8#I{&݃){Aj))2H 0#l08g;9wIׯ{=w''N ,ȋr| ˰XnH)撢g{نQ#vt+~ґON(H{蹺Ϝatf˖? E:PuTNB,5JU %V/@щ::A{Aeu,lyE4oL O9KEչRMx(Ӡj2? mP:èZ`MPTP!ʚ`Or>QYsHA`,%Dndžn"wˀ}cc~w]pF> | c֦}ɻ7&ׂԙK;@ֆZ!y]v+ηv6Cħ[FΩ ȟ1Pˬv6X_-Rl.0'%H+i7ڶ{ }ߜd35:QiiZBߎә-['׆Pul¸\[s^ ˣE=$"cT)t? ~W }Grŗz= :uf5[s$K1-PQ|0F>s+q60R)dL?Qt>=#cX/#cqPUnq h@#:<)bT}UERd>S^c(xDJnqMέk9?r2ElB y/&7b z>W@($gᯌF yKgн@dY~ V7=Uw碻uj>B7x>td|` q#]ik Vrp ĂU_ *eͰ 878V\}#O{JuuGK653u̪kBV@`=H[Z/{H:-$$̿2SҟU2cgq.zo;xq7 |G[F .YSs)Iu=輻tf{dpUqĚg~0+gN _D[GBۙ?lٲo׎i-]u98Plk|"nl\ffu /-)ygE{x'bXa+:\xz ȱ* GRhT8TaO?ctˑ J Uw8= Od=PMTU]t~oapxkЗ}X?I "K@?udW$#Q&L *( XV~ =(AQ(1BԖѤrc@),$" N"誺n ^0 `07@]d'SNgmǾPw\\DN5t6h :UJ`5F pwquGpw1 \Q炣!15aG/ S[=mm8ֺubƪ~"sjV/H*\8$֐(eDrM kL{88ptvOoO3ONE{ ~V#Ox9Ý9x%4| 2F!Vv ҵu~s91EhD{cxQ2[u:ٲe'NO gz2-=^wb0~YE+引;:&VB'o^ߞڱ!ra߲Pr|ηx\ Gp*Yû"E_ mglA[f)3\\Fw#PHUV+{_yoSb[;iVG RYHŶ@[O2[l{iS:&ٝ>˷">>D[~R `q7Xc^!3PB \{n琵7ub Rfw-/u >)jRՃWW=7#P9ުX?h1 z `6AM'61*+Ip Ubxh%%Кr ʥ,45tU{sP'ȗ<]Aawt2(cl&G)t.L X{M/)7ElGCd= _ĉ&bC.C]fЊ>#䗠73j)Om>C_9t| #@%_H6@hGSl6c12FOARxJXխ#V?uH-xqW`h&?Q' SΦ>4pJRH i%`~l 3 j2V=x2=~ m F, |;Ơg&8awÃov٧<}.x8tIE架ӭO'OWz0v0Nclwosa bת;;_ޑ-Nc yw/Wk{ YmA?|Oj|\~k;ъL /͆r~M!עz@u~XbƵ^N/pBi'DG=Mj~eQK }_b$ ΀&z ' NT9AQTv0{jv7;Fp'dS@b<";Mz_IPZ9TX=M'Ɗ4ce_0E>`,u@эcDaQCD:;6Uj"~qNʽR k@ָiYЯ#z?ax>ֶL{k06A&j+0ۚ̎`{m+l/). xb}wsWlm4WAy*)S7gG |l)tHq>[iRAxHhXx[- 9 Wcpy_Y;_RݞF[m@\UFgpp [H3|ctw]Kø)=f!׼~1Ĥ*_=Nalwobuo*N)m׹^q`^xUD~KlZn^W ֆP`?(nxQq1Z-h/<<7_4T\Is?+xYhҍpW/{Nx_N)<|y"M3R܉DPu'spzPvT8y. d^d/9QqEyL@$@@/tuR8D4H# d Y\^qW>hNN|&7A@{fsSj`3[Z1 "X A! R| :>Ƣ9 ]i~if+&gwq"Mvsk^q4w#d>]OǍn]z}:k/'?u+|xloM莫x'eXSƈ~Qe5vKuj"@? 件fPB %T^:@C?/4xpiɊ›l E-^Eup7RRt^e_(,9H> t5@)CvUz$H(k$s'"0/_MU(Ϝ]:uٲewGS(V{Cĥ?`acFsu>Oܐ> S]Mc2靿~Z_3&W{]c*ӋFPJu@QmGAF=eF3vQSejMbˮ' 4Mdk0c M!: yQ>Hܒ@Fʷ bEAQD( jh/F3t=D1Avb%8jDA>ydiuU@=Ϋh^kUE WsAD]XSoMGRоdI3U{Ջl%Kh-&),NvD'`ki &3krh* ȳr1FQl5/yr{78'9pFmm DQAk}D_cYx 󎻎#@D_^01 Ce?0758v_D:VhfǗ+tS<t-t|l/,-ձk*ٲewO8D:Ex[T'?j=$o٫7=<a3Mdg8iL010z`ss%?#@Pwڛ$hI/f!,Qh1;% "&rzdDa93V35pu/| BWp90G`R-^ MDv!jf q@\gF .d,e9M|&Ay9 AA}=`x@+-5[Tl>}> Aa \ȏA{E 7XyW~'*%jd=3Tb49/AEs1(66l^2?T$0cihƃyϿĸb]wD bpQN wUH_==D+'7/u6w6xzJ{cZX rIpr!kJ pr ~eux q 8ODZmm9 3u 0IFMPǪu ŃS䪽L1OOAS?%B`ε ȧJKF1\~ l3mOˉ`ҴO8oҗK]ssRj>ˊ>nn!58P0댋p$o/ߕ\-!W Wix4aͽp[IC"ƮR[B̕P}ɸ*P^b3Tˁ Ilԍ#\p}&~<M0j+1U;PX܊?:xr^ʉ!:jXTRtPW|2lw+@:)9UPwV9P,7@W*j\,/6ʧdw^3,c6Bcff-5o47шqSW|b&w 6@(G/դ>)6C(i%9@$w]Oʊ/3cXV)w\3ٸ0EQ5|`|g5Oqʹ1I ʫX%,R~qV$,9BEAS[t[tp `V6PvpN2 N[?U8oFŵGʫ`vWgt`o[7W`Mؔz}c[ߵbxi\xbs)M69_ҡ .pm5Ӭj&T^i$'(1|7.}Q&>Kj o  A2|X#ϔ L+8GS1]!\srK j Pf]jB[Uk@^psރUCܖR߃kF_ A3}+`6"[:@3Zf˺Yu2K]qI|/PGf~}#[dO鞓NaۂV!y7=+|˵e{< cce>OLkof,2/!JjmJVk;}VSPP(r [pV"~M @9Lh30l%B -[_/Ǐ{ <. 8 A?=!VJrV喂!ѳZz/>.\z{qH^vX, -YNMm3JdU jک\-YO$x½'0?ٛk&=94 *cQh뢫YQ\H cN1냘hW{̪ RV'N>\_{ܞٖʟ|(>&ا, 7sou:Zf@klとq 9 6B1)@C[&kqkA-vQ2Nk3G'P)4]rP*@%!װ°^!|Nx uH}VeXͿ\ -v"X;׬ #T/_4tt7pˎnh_Gv}Za>gY&ج2#Fʚ~ǖCxRpj:pgd.N}tng4-(xFa9ӞaYa9ټf,(>c9:"L^72(kdY OA۫AAޔ@ڢhau!88n:@HhHЙ`0;?Qǘ*s5"1&TI;.cv,lkidzQaXWтܳ@HB;VoXX_]"{Fs{}+zc٬PyɏWbOU7(P`XD$ a@4jf 0>9 TWYެڀCY_" QJq0$2..?xyr^<+ :|zWSw(Ueq ^KClTjie FEs>~<$kske\7w%XP~eRYbTnaF7VgvLA_33:3ғ%;Woem6wUwoz'3?dzA;k;y~u\[Xa^Wb&أVm=d_;=vC۩kAsj95=[{Z_-r ΋Aـ/"R`Oǎ?GhCEWF e)=YcXVu|и~WZY;Y,nʴހi-@i/s7+X?לn+~C>Sl1R/Fpɑ^VF{;ϝdIߐ<^1(-آ-5xpk80E dz\ RʕVjx4H-G~|q\z̎/UlվݷugWim`5spkåctCei)ŒId!5Ջ;~]{ySt*oԘb a=F̍LO=!CΆ`)1#Ҽ%#<$OVS# ]mguszsWKD::S4/=h i??=a{fYo" |F8"D$rdKYOC*{qRE @ߨ1oPo>(giqCo_P$Rg7=oye+[,9^*wۉ-&PT'l׻ϔz㏎~N\υz hlOt8024}ƅ'!,3rAlI,u#50>#C].Z]NQ) Κ$֍}%t%h`\6? , |rfUnT8!f9-@Qol: ϝfu`::uW9hO4[⋠Ǝ@DZ"!{nYo]̭urT7 b SxA 63T(GYǗ͗]Fz%unz@i#|>oekޕ99*R!*>BO5^| #UGM`4+k 0;MPv&Ҿ(<G$$S@DP񯶀?z+d4Kۙ 9lGxgfC\|nF2$r_BG!L_3*j[! !kCd_:9 j(x.1"ƠVk=S۩{=eđFo޼CWȅJ5 Vg3emWWHԇ=TB;:^mKr$ >iivTJ]}~f΋"S ]\{鑷vfl4-\/BdJ q 1'r!{YFrh˾6L ;}6%F:_0::,j[A݀+.{f= j火!Vb 7V@uw;ѷk?-t ^z|Oa[Mn;Q7)vffcy5ةbɐ:}}Y('odOg\.2 Ox>W׺ 3ebX+;\qu j[xPE59;K~7^YIZPdZӶbmZCmz,4cFpq  0k w+I3> sXmF}3kz0ӻ' b*5`  k4 cH6v`D=-s7FfK 8񱼯~m6xԹЭ^؜atۗeQX,˟˪LVV9^Jq2< /Cr i#?L c Ղ&ACƤ@UWNO@ o6$mghD=xTΩ凔UOɜ_ ~E i yE^_ik.٪rV,#1x0mLm.պ|ٽmX,URS9'U| S?5NYF}W?UU6(؟?kfƍ̱.v B_ lz 8qyy෻{daAj{X$p Cgr޵ʹ l%۾'o\_M?ܮi[jbeUMkN04t59uYjnVPBiEt<5Ss;h /C<"F+Je9zu"0RR7]9>yz%]ݪ@bȟWp8<5~x}/9z`EңIw\=xE{@hÂ.e^vY,Ū??d LժS~]܂RKMϪ1Y<{*TPKUeR#e !3tAzQHxV2G4J yrƤ (_+7.]h|*]HR# %RّwZQv9Le|o$y{o/6(*׾g/,fUe\` t"u.gFnҗc|׿VJ)"+C,'@frb;(J7+DHAiiQ)v^n[/w,Ow6Ƽ P~PVj̷{|Q_vW. PkǘoHm)RGo r][ R=Ԏ"3/jg! z[zRϿ[URRZV"X,V7`\܏!xLkPRv'L$?+WIK*iMV*2]+gq|< Y'TgW7遏 5ZL+ֹ/2?n Qti6SٗjbY lK.:6 cl/e-hR\4zWSHO`H:qIb/ N X[gX,J/ɢO⭢?/vdG#z Ae \{Y{#PnoAH[W<#+5:bX,gov&t:D4bX,bX,bX,bX,bX,bX,bX,bX,bX,bX,bX,bX,bX,bX,bX,bX,+Ky%tEXtdate:create2019-08-14T09:17:36+02:00mM%tEXtdate:modify2019-08-14T09:17:36+02:00 7tEXticc:copyrightCopyright 1999 Adobe Systems Incorporated1lm tEXticc:descriptionAdobe RGB (1998)IENDB`yubioath-desktop/images/yk5ci@2x.png000066400000000000000000014677331412677075700177670ustar00rootroot00000000000000PNG  IHDR6S(XiCCPicc(c``2ptqre``+) rwRR`?> v^~^*vD_)p%?@lZhdg"I`($>dCW@$ ]>faˀ% { *23J ---SR+KRs< KRSj!ABPi5Zho@p2A!@riQdL0cR?1^: Sbj  OE cHRMz&u0`:pQ<bKGD X pHYs$$P$tIME $$^IDATxTշڡ:s9gA*`@( QDE$,H9Ωvz~8w<{=p>zk=5Ǭ6(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((?ChLw6"?g\Bsĭ³F \[-TǽzEA>(((p;7îr'ӣ֘eGYXld3mcw|;oPM*n u,sw߇{/t6q?<^j(((dzpݎwCK%)mU HQu"t:vo^'I/NrH B/Ž7&`^b^uE[烖_nv~MT5T49xO(T(((ԾBgl_A9XO <×LVu`pw~ ofedh`eXխ k֘Ud"UbA+*Y΢oUv5Tyy=XarӚ<㎂R (((Hv;P2XLȳsQ C欝CFcJݰon߻7NEܦy}<9>[ffEdLl}ӄʘ;ڦO2o]{+㎊EQEQEĮc '3>LH]ٹssg~uw{&^7J\|ޝ +nN9Us`[v7*h79E8kݳ[;p{N>R3̯f9M:zDQͣ6|CK b fm+r^Akk3se~*$H+aj;m? F=\V2OnyQU=AWEQEQA (ި*9~oW<g|S.sG̛u*ܽsܝwA{>jz`?e}Y h'6d+]0:>Q< ~s=Ъ;3&hco(X)<80o)@q²8xBu|9nje*(qg˵Jѕf/4n~N^M4Y ғ|QVu]QEQEQ읿3~G(pg[ޮ /Ξq$r֓EGOwn=ܔS7YorFrht]@@n f/_3hF.)Is@-~D^AxɸϦ݉\'dQB7+KJEEO*^o?ữBɖv(k]QEQEQ콾п/^̹}wL\+=CG'w5CY^jl 2Xm.7_0!66vlFt@ 3_!ZM{(_ߑRGZ}W挲s?u.nq@k=+9},x8[J1o\J[J7zQ;xϯo;{nR' ߂tEQEQE'Bs6 -4?6lg$wI­7 Q橬96qFρC[*}ףW\mT 5<@R}8 4|1b~V-ۄ촬/2;Z"cyƜ KsWVf$dyFI 02vEȅJb/ft+wHW_K$w7?ʍԛ:evPݐߌJIEQEQE'rxz{fAVs-(UB%ffE2gf{~yҬvbvg֝OM%y d]+p_qzIE\c:>|]Q͒!{5m0o  L3:1| c!D5_>CpL7@n9k^׆m1b[ɶ kAvAhZi9E~C X)"g+wTxU*}Un3}7Ż_Zo`RPFzoMQjEQEQ'w4ml`āڢk^jxʒyoiOz77^_t5qv._!\"xR82s >_QkG40~+Z}\QS+ sDd6R;fAΒ$Yyrr?=("U"KMj-y9i%C Ng?l WI@lC(n9Tz¢;+3|NCvݤ[[moz3ҁv?EQEQEW;;,8xi׶/ROkޘ Nr?NJVL|37nM< Ow G8K)joVA+5=cԁ}|_}!)X'X |/ƀl-!x(}|׀]W X]-۾7;N'\-iI cx0z#?@Eu~go^J/Mm64J ΀Y<y}>G䏫e] neR/_o}޻g_6[UUǽEQEQEQ'@597FM/:{̤_*1fv :ƈ%q&/|BJ\Ԋ[_X2Pb'w rK[r  7休s5w7HW9oA~퐳A[7A-cLğ ;fρݓ@v{?+ 2O@1QQVP ^ϥ>zB { =A ->vG[ #? 1o[988W i>O vQkm]| Foc~ 7!!ՔQE#?ZOٳ&d[߄ G*?UaGՄ=G6&?_nl] JjUtJ~YR ((7t}'w ? 1o;+k=(k쓵fIU)&OS1W4G[ v״y?XFcls܉!E 1bjŶ{5Z&NI~J1D. .hvpBSNIkb:Y.r"jz~8,B+e{7u"+D{ ϩAM@v= w+w'yTwتb柜55y7 s.뽏;Tj(((_mFr`T65:VzA #azHZwݍ>wՔMt==ȫw7i r&M׊A,kQKSn3VAb4{CTs $P||S|3Ak1Q/J:>0Xڟ9y'D:DX@aN51'bԤO? neUj`-yMޑ@mD0u\{=  2R6y,`s QQ?!ؾq_} bX5&J x -p:'.n-ĽS?ټ\ '4y+/qS1ch5:8oW?ãqgJAWEQEQB~e>Beg_ݞ譑u/i}Y2wwc!ff}`]GY-9$Ei ЖjU`,7 7WƏFk n0“!kv|'? #;QOk>hlw'ӭ_W_h)n)w3hw2 vS3vC/8%n]`ׇ`hFcv, ۝ *vZ 'b_u⠵зc!/j`Ћ ^ef[g=@tI1o6BVwe˾Q@$yJ>M؝?\DEJ9R2p;2ij1iyoWn{K{o?v͏;j(((N;~쓐7+ }~b2>Y1mWz63&zpAfW㯮 7C@FB̲`wu"v12|߃bi|-\on87z5&h}~B/ Z?1& `s'7Q "9U:yPK jmAoUmQ{OC+'J%{pIp[q{fȫgS[}1@E0?6?)7r0FꖑZy} Qc.Atbt2r}p(@H7"byW?;_M6J ]gO;֝H/up=== w}}xJ^I/G~xRnYoMzmG݋n<2vN >\[­,$@s!(RӢ@TpJo,c.h)ڟqDO,)[36^7?_ s9veV 4ǥ%' z8=TbN3-xxO{}s9Q3^u*yzTB0`,dB?6-9I԰kw>lV/[1,ǝAWEQEQ@}ώ/H)h]3wɟi]HUfoSI\>VʽKHh/cBƃ?mwjgq,+=#|*mZyQ|Eoo@2aŁ3Q =q-\q# `Ei_@;i) 6-Ⲽk ~o`zD $^k۵K;@^⺸#=nn7=3U+1$(DF>l'8b^5k`$zOp;ם>c~LoZ-}vN)w)`ײ( GvZ7?&z^1=-E92XenVuio>>U Y>,R!g;O⳨#{_dB%Ꝙ ^Φ |G]*/KMEQEQy{Q=ƃ/L ΍tևR };Í-7U7mjƩnN  􃞡σw@ݨx0׌8uWě ړF9۠?G0;&`6-zz(% ̍ 7 pN HMރBCr9esJC-k`i0=~iZiA LψgANնk@( `g͂BkO?V9bN ɂ"ggzx~p*:740vx87 0^wLђ9ۘ[b,&gwJ;'@!~'c$/ xV\gw*ЊDYD|ޗPZ=g%f/Y5+UN{=h}벯\tEQEQEw8@V(e` /5c܄fcowN5x~%Hߙff:Xd'pGYf1_9_4!]FhS(ʋ*QςSQB@i(Z0GƸ-/ʷ`\3Lcz8uXg7蕍F:@\|U.MZ of-BahM0 XmD>Nѩ V3 mIg5o;/;_BdX$3RD99Iv~C@Mer/:{ֻپgќN<8T'ύv gs].Ip2~{28jv+I Zx*ݝOm;Og@Кk]n {=I~\`Jd x%@D7[hk˹+,۬S+ «%M;u)\֚lQޯPhv͖=W+(80e׹!@zjfwueҚ =ϷwI/N Y;9kBɼKq }XqҢvJ{BѡWBe@G%{wAx"Z.s_h Y A~*U:k |') BBKBw87b/gZ'tUtnl^ސRUܷec_]E43BͷWuwEMEQEQI[WB]A]w>9N-}hsj&/τ3Zr93!bQZݲc6^~~PrU*$_2̜u4Ҽ+fT|O`LT%Xrfꯟ[,b伻 ٝ24)ڤ57N$B? q[&&k0׃Q瀳ʩ[΃V?lѭbjuxO_S /{üW^,vVy91[fo|0` jʉ8  LXAk6PZmx.y}6h; L,Nxu@m+蓵aZ= 5] /"u${ iYU:^CUFk@h B^ X`ݍ)Sk_S0ؖ~| kw\ b%ɭ.oS  wPMmПoѢn[n-?UqHSȂODN@/}}Jem֖;LM S+N37P]QEQ~3օG;':̈́r~QuoY.Kt5kVReknޯF9'J&{ř =1M/S(@N" u;^jSԢ_+֮u6OTwS{uu+Y/!:kh(Ku.&^T֖<3緲0+oN4ÍM^rB[rWvH?e<&@0A{άjTy_6r"91p &^[ >/0;9 FI xo9Yi⨸,BqMy>';!̴) "zd.R4Kₘ+~ٰvowĽ Gxnq!<n kpn8:)ଷۂ,'  g" )O˯DEȿ*'`7Dj9i@3:SUFw}O 6P>)SDEnBi ܾ̓gr-鲌 =!ޗ?iu;;y{xkVnH@*HB{tp5sxY@$w tRAا+.X@^ו,Ɍ쭚hkRuRe72Ɨի?QOJEQEQە3 ˝/B؊1oW=e˕ҋ^,9T-ŷR -*"~S}t/jJ)qt9Xm"3Cp^b'H|Vϟ{{p7Ej\@.A, E_f)_mIy ڧ2~%0@m7_Iu8Uݢ ^W Im6m^| 8Aq4]8) pI` 8iN-ے=k/ i+~O-Kw87?tBYZXa w?uș@L?#Vz\#kSB-$zЮk  omvYmO7"#[c!_YC~ }M6Tb$%];`>a2B`?g\3!zZXOZ[G r\Tgo@~l~`h3΃( —^3ezM oXo~`!}m@~#>rlj[xdE,;7r+5)I:onP&uǽ] ((?JΦv(F'cg<?gD%?x88iɨ_6$yXUV.L_CSg>%}-6ŀfou>MA)jY\E ̸w4yX*dԆu(;>m[ru\VrʶѲWΏ{xu4t+qb G@}(A3ߜ\Nȣe )QٟwLO+qwn5uow7dڕ`M c/qX!ޒAU_eDn/@_qw̳EF"N悶`1c tk{$ D(K+e ZRo 8y-3΁y+to3Dsu7#6@`H(B ?mN2x^yqB[3G݁^;h;NO- ^ops'_r1_E poD!q]tD|#n,>B{kz'Cċ'@$="#FEk.h<8 Vmx^w eDVY"z244xͽd+HWaFx'4v;&׀^t'3gsBO^k`ڜ-_"'1քJi廕Xv;3ι0h{1(NJ~ܻKRtEQEQ0W ne:P46CJ-$Ih▇=̓S|f}/4Jݓ&uPdn[ rh 5mAuҞyYn'gZ+\o n^tFkdjeyZ܋+/rC|sDϭq؁U{6iOOW8 _Å]?|g/IySuk@蝼No74 ʍ6|JBBMni7o&nΙetuek%&p!QE}a9fg= 1c6ƕyVƂD?W^W_]חB wo«C`[)qJy Q`wvBHsm?OUpn9` EAO2#~ R{8[{"O4 Ѳ>tqk{}rEΩj^3!Vz9Wȫwhme6ߍFr(((kdU`F\W}a?ش|ݿM.ַzw'֐o%uX?3k0gDJ [X+8[]%p:/8SS Yҕ%b[v \/}B1K?hW*{arW,Ziů4fqcpi'ĝ>uq?݄aϥX* /]eŲMpA ;. T j7'fgɾz)0nW1ShA#7Lqף/At^tؿAK׆迀VBjV71\)i 2JCJ{@/KL2bAZ_k9Y}U7aO58mB%e5yOۺgSa@>)iO|]ku/8kkN:h-I+%`n~h惾جJADC +3Ȟ fl@pCm@ 3owĻ"hYZ })liՌ@w U5NppK8 olvl0o)e`ts%Dm? N:8 co x S.`ƙOg}~V{{߶?lL"1CǂvWΗ m&yZ V?}sn>>Mݛs>7ޠzn_<>a^' W#߬.owSg]QEQ忹vc~i]k㚎[Jjd?ܹBºIIy%sZoH.Z}Ƒ=%vwKDz@UjNE]]b D;6J]e<f} +\ ((  zs cZ\\A5 WRn{NZW/\߽€_V7'޺suƭJ 7n]j_n88˝b=vk_Vodz_T)tH>pQBz;oxa!/v5m!>q('E0{OルWˑ!fq;k@v v7+ 5>YڷɗjU{+8ŝ ?׶BwbdA oPw`|0f"ϠOjˀ=(aA(9Yp;ݲk4BЩ^vm1!؃1CMAThp+h}ܪq n/m@k*`I!  2C< ƛz3= g " bxQ^su,5 h-:K`0{Y vZ;m@Δiwիb fӭ鬇rf4PjqB }{/{%0֧Bvya0ژ}x zug}~ bS0}F`loh@;!\]%n(tJߧV!G3ӿHs骹.6\[=i{((^:uIóOJK^ꃥ '^ÆAJɔGqNrf\X`GVJ?@>ߋ c?}`x^is>K_r. {iToxANN;F=w3 )+ bxs渣:/xw kG@ܔYU1U\^Ecwex"< O<8~B/ tʗscqXB)XjAZwă0/jZKXptɅw?jj((恛Fne~*]D?\Y}1I]LlɄ)\ڳ 3j>*hVjH>2d0OvZncWH&xze ɚZwh.@Y"UސY (=m O٠_ 4"Nm3D1 zvCqH 2YԪ@~SrMʾ^t }NgTT~thWm/}Lߜ.`ou'k;/{o~{Ҝcʿz~yeKK(f[n> ׇq{0nFz`-l\1r|F9< TF?mp >ߨ@mYs"!DU ~⊜&NQA Cc%b3@#]Se1v[oO׮/+j/ۢg#iZ)A[̋3SK$?%˫ Z\+z^F,f!BX( FІj3i9) TxØ $CxC(;hM,w=XYoVinR|)sfiI짬A5փvO'oH=xJ_>J: uzl/]*$?h@M:p{nv]hp 'A⠯jA#YJ! F=ѯE_~YF^Co;Yp^w tmv"„6۫qT֔!\8,B/Gb _x[@x,qԘE^[*t+u eהYvK_u Vz+-~jEQEQq6t׎6q#&[Oܝ^Ϥ|Z*&mzIH*|u07;ƶag@xKdAdxK)uWGN* ՗d[ZiuZqQ$>M_z ^D|R!\u,tf6JpgwǠ/!pBNz3m<ļ}ۿY{Jcf9N>ߋTeY>pLRҊVSI\_C*q;LZ"htpm h[ZB\RܲnoкɁ0F:3߃@ 3Ѯ`8A3EvG'@y ^^zQc6XJж?AhDNZk>5)0$r^ȝ)ßyhalCc""77f0A[+Ѫ ##><'+۝ j{ǭ0ʁ7S/[C/>" ??'+M7Χ6&kzuD8y[؅zngbh^[} $8՜>s }"Afda-e=}QJt12M  cBxfx0K} 8筜 b xܕUuz_̞bρ꠯ 99rac܈{Ю Z) )cqS9 ""Zf,%>8Ŝ? "p4 dW_SJPn@Fcu*7DOUTPw~zame@>juI((crpba}Y+VA@@" ޝqI:Q&Fa")}@δi} o|ټn#r2$o]Zn5Cb#x |xZ]7:}˸i߳⾑XH}>XZ?W;U=7k8$@dWeBF?'މ10wO68,O'}o.|uq+J<)ј_z=t.$3h.kk/D&D>i ȟ)qSգW/_ދw#t/!CzBș 'Mc|}G!P, bH.Pz4y fF v OSF옣1 k eEQܲ^/9/w;!}=jwi 0?5w9Z^*{Aa64wes,b'?(&8,x^:ů-kWWd!iHX:6A/7m '玃*y-*t"\c.t瀬 z\߫ogIn x:(r)-VboRXo^B/dQ=~vi xkU^ik*CZ,fZ!t.|:N0{2bh*C;+wBnMx[xp:3ݱ kh=jr`wN[خ pQ7\06{n.sni@߫-(-j=03MG )rp83 ?Ѿjq ܯ^,0vUeiY H T,u7ܢ{c\ڬ^λ^ߺwa`drů?_!W>~U_+(KxpTؙmO@!%^e>;t*{='yY|R2أ/qO+~2e|""]Ð>~ynXXsřMiēDh]턦iOW{ Uy=!t@@ ~g::*| .8 ֠5G3A>vb)DIZi-+r& "L-o5;iۡP'J3*|V442]Ǽ2˝7}_;>t~Ћu&F&?%/>oXfVܟueԉnn{7O&BƩٷ]sъlogDq|P`j=0/=M3lk zE=y/+n1w~@JU䋢 ا1yȭ{)7D vͯ{AЖP*F_[pۺU`20;w+ G)Ezцy ϛE vg0N?Ӂg~c=1 pSIrQ:<<?Zep@mi4΁EHIHx̉>(y_;]_d f53 br'[ڻO&@[CL""VM hD3Z֢58/>^>91W52[AGdok+=3{unYp;> Җ˅S%k^v @@U04tw%8C 0AҾ-E+b\-Aȷyw/9{ia-6uovo0⌃]"j/u2 Y~xٕE;ZrFE|Ym|Oڽ8ɾprJUu??ՠ+(9Ppo?7$ԺY@ݽS'KyROhvɽ2ht-%B{zk}I6N{Y9&=zzXE#?G'Y3YW]y|s}f=í#(o2 _ŵ& n; W# wdq0^1o=[ڛ5`] s_6~h6hq_TcYQݰ: w x2k{g@Td][t2;=w'Uݭ^+pKww۝ꊡԇh02<8wZd@۔P/f}3xW 8BjW FswU((l߿8ڤw8uT=XujU3ޘ }fLz5y $M.hɕRGBVT֗9Z^ VH ֻ[6pmw07Kp/WͫEMЋ_o ?y S2p:N1ȱs͹^ gW w{bF/||}gbAM{_[L ڨm5Ap@uՆ/{uv˩+s^nqsxN K}yb|w- u ˬ2Mo>赃kE6+{½쁓I2OM :D]B ߬ _ԧ57`R33[A_#i veL>`ؚ=, C]|]:dFzý^BL.`\7  OsUת`t|xƨTm IV >W>;`%`6[@,BC@ۣ*^Yu@@WA70/U $b';>`o] F/^s#[r6;@frA`Gnj,U= |#}_FT Ni'ir_țS(҃_?;0̞/|A\: Y dEYp}].?y;ѳ\L\/_{w*G (],yj!'p^((?lް7s զCe (}w̽[:쇋VJ!HY]7mNZ\ 99ɹ DjG>ȹȹp Nnyp'}ݪxebo,o}.![eo;֫az50=qgl *C__7ǝ< V/YY^Nzs2*T^G.z$hU@V"qVVKzű!'%oPŻ=&xYs=5-ZW$U^yd.>7&,xnڴ叾- ZyFf7h`h,Կ/@k7;?,bݔdsz ЌF6xS^,9퀖 Hp%pj:`2\+#xl<+frmkmSX?ZH~Q>2_F .r/ևif1!P}c3πqOow}ݯ+[mʷ"L|^WAA^t87 nq v x X:h@mE-p9XpnY03&  <+jN44pz:`~`9Iܓwwٿ"?GV,=빬wy.s:B@25YU4>ZްZYk fg"[~,w>qPĊ_Ek~Y]`T3S |Ts'`-Q[ޗ.>O?PVp5Y vA.tt gg|n[y ē"Ud&a|; N* m~ϴx-8M eĻ ZC\k=8^J(`^3.[C7reX(»+qW|AWEQEvjoe(c3E/p*):rRO )sE?Y?t[(XX,"##/G~-w;KHQV ޓ7"ufg {-+YKźQn4裵X8 -ws"Dڂ `a7#Aȸ^QDkhR wxЫe!giAOu`_~7jS S%BkȚ2w l-6(3cz5 .& d~=!+ۑO 0r-+Xa2&/\e6[`. 0)/}0a/@~pM0Zy Ӵ1w/f'ȫrlN_3ZgDݏnO7׹Bs=F3cQ{5@飵w0jN=~=Wouu _hq8 ni !E{\<]w %IG}";&;Zm~7ۯȩbyDgZ-vo =XIs0ȯeq%F#I#,/KUwL!<ob)8>'/֝I`?r .XK! P<Yxb)Ћ_m@ k{30fAž!EQ|||$X7Ns(kS 4>yiFu4x2 2E9bSt褨]Η[?YW &eP0![/ xCl osL`9ts΀\+^oxeL/lX%zG$p{C@Eȯn4OD5q]Ĉ!A_F J ?~dQiS_oʾ):] bPz_z[vM_c_#_p8`1ls22M'9,1X%>\}\DТ5Z2PTJP@Qy<h~-B;.'ˮhy[;nuADm{}>NDȋqpf+]"V_{6'ީ7&<&oZളkۣw[7yxߘ #G`!8/;/T#0 e;GU c82`җS \,6 x~/ b)h=5!vjNUx֨ ZI|+#8g՞ԣEqdڧZEp:w{;0^άPID֖uSVPкN ~{ Zr՝7n.'L!賴=zqO9L-S^ւw; [B`r`(8#x: B~9iur n^e;i1 kwsN8g.b1iGb VcIve{8ۿٯikvM*A9Q< x [`4{A6Cނl"ZamjZeYX>O=n[`+`$F6xWT4xͼ^G#G3>o_aze9 Ҧh?@xKL8#@d85^ Ew\ċ߁W9GZ@+ ΟOYkN o;AvȾZ6J <[]o#5]k FAU5@$_ ib_&]g6N9>s#@Q\&+N EXW=^пc/k{ r-z7lWm&_.<2wqfo|]YCKA&AVjIAʩnisN5{:38NطNo`7ɀEOo9[o/7fos:0UѼxD+n7Ȼ7*cԷ :fN{ٓ쎐-$w KL5e O@hMZ8kHR!՜^EDU"LC~ }>fy5nχs B䇛BXzx{ Py`f@fE/&D K)Q/15^ 2hb@;? Y|%ʈN_׿UE~zaFr$A1DQD* %Q@%Isd1Fェz>yɺ]ϳ}ZZ=F%{%< _oa׋V>T۝N'}AAYrq; "]G@`0O_!xH&ȓb { %g uj ^8=b'@sx02:[ =DpM{EI8-n&sp;,зz̐!:Y}]n|:{`_A0U-Sr[t,-7߻m2 *nChm (Ղ`} >}B64g$Ȏ3"1@P5hԂĦ{z):8C+k_AS]@t/A ²CtOn^7@{Vu0 o( b+BdNUDCh`=a.A܉GwKW >d`p!hy}>Rfط M#3G ,tD3YKu dQ\Lկ~vѤj:7ߺdgG)}kGÐ]* x 1{ς'b}k3:^y@5}HK>irDӬ3׹iRH!qcUci`(_^DO ^t1@XhK(tjC^ywvt7WcZ[APFO 7QBwV %Pwrk˶*A^vK;!*{r#17n7w,B(kɗѦe:C 7ڟ5LoZ^>oei?Y BNX+pWXFN D㰞SMkw߇䗒&}ʉ9^^uN PwDk9[\xe0n=cE'+\=CV:EA^{44S`fEoJ@:hJS%] V-{}');"#3(mA*ٗ&_u;`7nٵ q5^"Q LfEuyj r\,V_ӿ/ b_ּ )@jk>8v%vyy!en{ǭV1p98gy5{=! ބ"Kd# 衖K W); W[<Yr;T0;t Dq+zS' z~\_T0 _ki]0}N:F]MO@<^5C9ׂUΫ R꧔ {m* ;Pm^K<VO5wYb=A-QT90o݋bZ!.Kc^Pk@Qi0ú^~\Rgg^ vZ#ߐ ! << Ƞ&JȷAdU0S& k P[uU%ze!1ۑ( wnH1i%P$ j|&Bp.fYeVmj3_\$`;k4ؗvxm> /ȃΑ ;ώ})uuGL9}@V7 GMES n6CʈAn?axa dϮ 3l?yzh EإꭒMQ0'͟u0L3t; ig &B^ӼɊy'ǐ7;o@s0~=^;A#k8 NS&0Ol9dWkk<˜fو馬qY^ HkoᲫ #I!P|SyCVjS2|T;pwFߘM`/Zۻ 8v߀y%%zZw<qk`_Zk bߊ},d[ޭO( X[s(Xclȟy^Ln蔳9]c13!I9a̕ZnWF;[< P7Wk3Qy%Yx2d_3 Qda~G 2 sn}byb!T&9%ARhH)p۝|o|B9vd4OYY=$tMN7"F&wxM@K~>˩rՌH7Lʽ@ғogZ WzΌ3ߗ_˗/_|?>uHXXCa\'oֽе7tk]r2R7ҝ"Y!t_Y1픛; wMŃ͠G0+0#0MM3?2,uqܙO9g 2H| )Ϧ$R'}\AŸ͇zj =H,è f9aC<-6w{$1׼a^k_5P_0]2Yn62fm恚O*!g(wU%uY~Y4X]nbF~ ;b"C@>( ȆKo@.tP58TS45E@z 2k N& V#+Iإ^7PW@285ݦɫ \ivwAD? y-FLUz4QJ&<#ڲ cPL{3]xwJC!ɹ0x;cE NEps ;@p3ey/ 6,1$~46dm1S!3Z,z^MKN%'͙Bk 1;Ydʃkwr*% ~ʙҪQSى `.36 ۢ&GS}@2O^hȎhA*`Z.jwڅeyW g$'Cv(}FwSWS3 w2:݃Tu:@T" `T3*y!9g~vvfNI@uD[$0yiyrG.]ѼCvv@Z]  ׅ !,CsC '7g[~p8!5VuQ}Z ^!/GNP wsL'c^jvkpEwX;"Hw/&B tHEF)X4R*0GBJ#f)YGΠr#o|p1hV6& DdwŅz~/_|_o?mnki(vTAuW]izG<|kU2Jݮ"޼O2woL]kr\7Hηo&3A T;:spˏ@c@Δe 8ܹv-  MXm(f@b]DbX)V5,/05LAs{@\w4^;$8j EZFʀu^cI~Q=%Tn/4 ].b\ѫz`},?fG*Ykؿ_R@tų >[ꙺQ.Le2 䀻Y^g9֚s@-ek8yI8@0>T!HuoW@ۜ >ɜ5P穏zD֓k 孔щڿC[uIE ~ 9<jV\!b*=f4׃;ppvُuzD UB46_2j<'H)k6>%@,̄sy灬 y `qt @E@V fVa{(ut7WCF f^jS}?]ʾ bZcL: zƚ&imwΛi;sn[; #~{J^ͦIDAT^w^ 3b?DDGG_6?ާ`?j b^e>0c Ϡ^/z `Ub-5|HTIļ^ E?dEElՏ=^y DKEjׂ+ we] 2's DzJT `P:xtr^ xu"ّ_!湻:̡1GcxY@1㙖1LԈt ?/ɐ^isBf%yi.t]*@WSF[#\} ,HIb>S$]hII[І0 X8CWKOރxUrV>;?:{\752]Sߓ_˗/_|c¦~wڠʕOְ[7o>rƚnlo/]ˆneDg<;${֝!ϙ{]V:T}@8x *y[NU)Zz6>E]`#Y CBW@S.Y{<2HO^Q .:O(>gA_:u{6zU=ЧUCS$>UI(# !^"IC=v'3!H rLG2OIb&9`m̰X`{GUw0IњEL\є2mAIr {fV% 2E'ڂ^?һxPXUH*;P~^.@ “K4?)Hn((ONw%XS /&s{O"r0ԫA6^Snǿ^"G{LwKC~t+Bk|gBßBky ADW8&w;LCtϳ/dڋx %lu o RX3!ռyOBbPoXVDVGvBp5[Ur (R6r'.A~oP +ƋUA}*|:z%8[V`FmpRǜ`M'v$=mU\-yW(!=W ^d}FPl=.Azȋ R˃U V.-UNb#04N @˽TGk:fcJN^)<4=qz)񟗿=_|Κ 4׬}K[*)tۆWs/ߗʢ[Gn}t6duʚ|]těnoV*^DMLu^9wF> )`ƀ,*ʾ wc)X\g($=T.Y+ae ádp;c+ bbxSTo8kgjz_>.AOs~u/+:ml0g`/pB̋GcbKcwcS\prp'@S5x2v5' A3>>jUO+'hz Էs= d`^!d}2g; /c_8 k}jvq -?V*2~I-[q33X;L!ZVXEP0uMEQm p4D>l?Afp#8ݱwȐ脤1^N)c@ƾJ(AVc!{{v8{`]: *[5Piʙ@'эt" dcF~xү FO;WL?-\Hz)a+;7;>=Iw Tegĺ{忖]s0o!XXˬ և-8\1u]^/x PpП'/!A`2g @3f7]LwS?z1H4MZAhup!1(ML sشS 4zӪcMi99Ve61F+9= \R` JT2:6{`7AUe5zG)v|?Fb⏂u^g~PU~'y962`MvZ u]w }Ije(OB3i/BD)S)݁ cvk#4+b PO(pF0ׇn"nο+S] I)/ݲK>GrSv^oqϗ/_|NJBʔ)Ǻ{ u tcVL{Wd)Af̹eз&np+w)9'{!1+l|4S3> <+EI!@TE]p 8lYRvĝ*:Tzs 6AT!C<;^R],QS]lԠ,AxTu0 L'0M!^%@A`3hYW>X=׬)}1TZZ4գ c_ W7~X/ٽ c.nw/!04YZ-;:e{`W m@ !ہg֘_'Ӡ E Bo>cI?A-v >$Z&kFkedEP M*qP_z@ӕ lk5 psQYE~*;m"fw H( D-3`Y|uA;mb6ڀΞ|v Џz_^DD:evkڣ`j&<9L>c)xGk~oG!art3 ,QiClOm *Q>E:@֒o@?~!/ ou^󙹏`b״HW!=^wWdayCfAxGxN5!A@ ڵmcOG@SUopm0bzkf6~&!֓;v=1LA ]4)`&8C_r2"[uz:lsBֿ@P'H @$'Y-xޏ`.-0B7G.@ ;`wYU 3"2 dak<ض/BviR_UII/BN7ʮ"R?w)4` KX:XiQQ7C 1(2EM}v>HεXKRv3Ck/soG"geG}S>\N|˗/6?)u\3<#Ŕ×?".rڅo=6ڥJ{_Zw3'̊w,[" 6+Z7 N>.B-w7Ž`jz vGWPpwS'!`R䥠6jM1 YZM1,,:nm`+ "z#zA# [}X"2ȫ[WDP1Ȅ`OP9Nk P%t9zkgO:"(AA TLS'@?>VH1}@k(n%`yPtϬEDtBxv8O@|$` ʯV<(d&WVST2@YPx`]m/h](8O9q5D -W7*@O*y?.еp[{ f) ~U#Ir >[dl d|UA$w j8igj)le_C{5KSR_`ouEeIyTR0DQ8٣[}pP{8 vC_?oks\4 \/9RL_V ʨ*EAP(+n5w!9Kې{3s.$F&Ɨ@ݴi;`y\N1_.c'GX ~2^'>GvAOO w e5J)gҋ&|QN<~'@f@a v"(uJ]٪9 ˮ,R*S F%st!]4{5pF*xN@!63>5>2W:f:_>o-x Q6vp+:57" xxD/eM~T':c߀RRR|oMPhjዅ[C3 `R>`w@>htlsP{I&L?xTS5g ﱼp~ܥϯׂk>xnAټLKWU-Wo2=.% +Lʱ~v䷸˗/_|aqk߆:H'6}гAB)c`xxXZ(9{7E<'.j@|0c<AVS6-~`v'Uց;\K/֟?{R@N5r v/s\vGW1+c'"o|˗/5uܮGznpnu;#O\~Rf/:pnD=sLfܜ`vX9s![6K~MЃT \ !eAF,("Z3vВ0`ͳN[cuݻ WlXn;" k7fw`4]T]ж{Nhhw 6M:cT" S=׌w[ݝ35]HHDk $R!8xsz2ޏ`uZ3̇ļ7-ƃ]ve1l0yJ埂AP9 pw 2t7u` Y8I5-|nH]H&MI!6R+ TEV I {sd?bA.^i&5fM ((z-_ox|n0<7|E(:{="QyJ(VPsC5v@Oʍ$|Ú;M=w xR45r|]< h[&~O@ ? ^ ^gĞ :˙Oj %``4s΃ZAխ堆 -uOҬYe@;og* :2Z0ZJdlD*Uk}䝆HHH:4f)gGO~I9RvM.+>3S={ "E@4P+tZVSUZ b?|mr//_|?ަ7@YMlEhIΝKv _wozm;p{p:tfwoֆrA^ü_Bw+~`ls]=[ѳ@N{`=jwg=nж$p;28NA+ЖhwuXs2'L6V<&Zg@_`GT; z:!)85=Z":<)'Q BmBBhd} ݄xwqt=K?l~ǀ؋A _o\6WV*ѓ;/Wk 8.^4AYp~s8K.h;0#Ќȇᆑ!~WT*8YrGB7 ̻ P\h z(kk^C6bx"e Xf:r<'?kf1_5o\/ ;|ҡ|JV ;iw}G/k}z Dk^p:y tKm?eK qr{/zґe+wu'Cǹr_?oy:cM12.z:89C?{O|e 1U=DKḠpH"ɑO!Xܵ3}nGu0~׼zY`>{q1P< ARp?>Y^ʁڬ6K2s PԳjm$'s;)бa01\[$P8᲻ox\D# : :按Ӿ뱃ݟt Z,oQ\t%) Pu)aJ@nܪy!z0=r "# |)I^w5wgH3 sm¯Bx'(ĉߓ(^D(.D&e% (6T3 e'jKx@$ ͆" J/rKZ2!5ibr p*Yj4S0rXfИ@"HI< k<\t-*\2_is~;伓(3X>%ŋqV7v㊭O43_˗/_|_,fo,ݺpl;î6͘:.׾gnz}=tз|Ai~mw~oƛ u2 (%ADqSh9.xL[mґ4eb&B.`'gWQ<e{*ӟU_ VU* q ¦)bĚ.bh=k&( g ^ ]tU< 63 l vAn2 t+t58qg,N1StI!gYPt]W=.ꖮ.Xq>[{ߚf)lvs~e`6of"GcT4jzj a Lg4SA'|8xxpt :{\bQƔso E xV֜Q?a9bVF{$wvnE(…JOCY`=Km^uD#=0E0&6XY,/ @y⵽{5`Nz&UMA&'S/|0c`uUW̧z:^Y#xʦBE&N`fevi,05@)O-`?#2kl}VC*xs-ho=G]CP^U-5{f?~N "C m$?=H}X&t?Vw{ /c|X׭ppt8{Au'Wy`WW3/lx-d0g3=)u{D^jV;,+ _cK5z9ɽX9J_mEp$wj{ʽf)7 N{} ~q?O]=Amv6м?/W}dw_5O%l"dMYê&?-߀ś"HUMЃ"G$t&ZDKqV B? %C2i@m"TALmL?dk*:m= ΫT0L%Sxo2D~rEt7}LE{%!ђ%bxi]zR^mP[j9J T4s\70g) ^wG l vA]` Ƚrt]q/BU|v)SD[oʅ~H'G|Ͽz_Sѝnռ{ͽ4xq?'nul|oZR˽.{e5;W9其 @`$y>t,DE'=Q RAUU A<D> ~`y+nnyHWڀ*j?* 6ǃs`Y!|^]Ϊ r|@v'm%Z;]v9XjV3 2\ޡq)`JkSME^RmpHߟx7\4ApR,7!u^3c~ZOjP?B}>R"H;~9O`$09mCHjg}/wC @5RLPK9\*BNi{4X//@V2Ws3 LU BZ*sׄNzNzJ o:pҝLH%B d)͠[oᶐ~@Fѥ DUXEp*s\05fҺ. \.g\,yi\X{\Xz^9 (x4u(:Uz\PrD{ _jUx*8W^c W5B?~~?A/_|f뙭* ?Ԃa^EB}7B .\ӥjs3\}[Zu+1z kꝶK!>3. :^ /x5G>)H{e=ةW<_ʯ T<"X_[+ n="t-5$SBCBCs!z8*STA4e}KAޒ7d' yr55yPab&d)o>?A" `Qr,Q٣Bhơd)x1qS@GqUzyE@M;TPQe$`MwA=k7iop,$r^ ݑRѵ`g[WUV[xusB_4-U9 kX-΅O@lgG 6oW!^54n1>R",sۜ_Am[UDU_L^+m cpڅY~=ڻ 2ݹv@3_N=OpF Ί#| 73 yC'c`Λ&'3(χn[j Q,ёIA'/!6?$< '@]V 0LSԆ ofoހDĮDEP#uJɆXjޢGA?۫v os7̠$xYh&2y-$Jz$Ztnx >b#@؛ F> l-S6 ".뀞nvy8 5##SAg-z7ȞH^foA]<փ~ש k@|L*0OM X#]EK:db.K'~>h%&x]BV(9| L V"u)P::jKsPLϊL2 ȾhIqυ|ٞUŪ &Fw09fY 9s']=88wΖ9WpSpÅ *4+i*e` U8^ i*YjoA ΀Іȯ WȵsУt q:3T-Xm["AN**kkYB3i ~J k <$VMzn z{%ػNA0c%Aՠ5bXNWX O j2#`ڃ؃ .;u^e] ^|P?%y[쀘 ޾]_Ǜ ާB{ 0OoAk ^!"y!fuiޮ{s9\5SA53l=uoeKg g`tkxZҪt07A9b&\s8@6_T&A|e|sӃO`>z&V{Uܰ;ԭ Z_;dV `ZndouIuQ5ź6碽DHu'J'",!a,*aW+䂝aշb7]H5 {IΜp&7o/mό88p{KA!+TOy<>R:P("+ mx}-2XvGIv_u#kh^6g-yߟ;\/_|gה?n~D7>i_a tW-~~>ܾ.n{#$n ?s3das"1z LUS1LQN@EE&s.4:ܗTw2]" 搀Hň> _@632_lYti- N[;e75 -N,sOl΂]Yw@WՕuȗH(\}KxFlZ|7U* d[h^AxPuu&@R/`gd0fm+yS7MYLt*BN Vi > ]ޓ)5Xy0Me< r AN[Hnr5vlѤbpr^pA^fCɖvn.y4(T/,oNwo.I8+ZCC=L@pD=Ywb .΁s ?|ipGR\B\XhZK LʭHQ(;TRgJJH]^HI#Rv1g{gEy9 )Jũ;(-̫b[۹?/_|cu݁Ewx8+K+.zrl߯Zo^*v+_BWw;:YK3KBnżyn~`T d4457LGI"IHA90*cZ`-P`-~^qB1(& O @=NO'b~@7U(G3JCDP {/BC{;NqF|8ܺNKe"AmR7!ସ(5TL߃n NSQ]21:siFa]D#"H#_I-y [ ;@Q7fb l3U lڿZ1H{*_<S&]>Ne3OW=.2r`_*~~-\yAv @eLg(ںH=E.]:=tˀRur@Xg5D#ډ|-Xn3oioJ;˗/_W~~5)߻g߳w{?CҮN-d~yvܽvll|k␓w OX) 1j9QA|jq6c 7qM4C nwx'$J*:O,GnA~.mi^=PueU@E9J_/yI?:C}!C[3,p|rWBf<9V >P U5AƤw`yhcާ;Va,RV:+> vga#xӼʼn;b<#< mv߬Iv8`n6 |,։ ˟|0/C"-v5b xOy?xZ*?(SMw `Kڽ!PyWĻd7$HpY>RIV' )bDn)5tb8(~AE⤌X/u tI]‹?3۹ߙPkPAu^mPFSeBЎ.#^Tcw͗r REHxхu30mLUD:lu:[!y4# J}[⯂z܁Kea5(+A oW| Uʺ Qeg̷`sF/ Vn+~,#<ngiuU}/EݳN rS`u[ %1|/=W>Qh0;@ϗ/_|}u {ask{)r R*i.]7_?v֗K^p۔Cffd`fsjVNÐ] {bn)u{=(U*t}#3T='L @#C VHޗ\3&ƻ#@_Vi&x%22M 7|f'ګ򠴊S_Ao6`{AuMueqDEQRsds ~ k5[~) I.A;` C< Le&\U@T:ث`WإATC&g j^QJ "QNy㿖թ:lT@}~R@ԝuOZ꠿4O!NMX3 #0atH+`ݴvXWb&2$jy%A~hG7 XPӺ0>\m"`;#!g p2i:N`Fw[Ms/U_E=lDQ"~UQ\ " BUB+i !8{ լ3+@ RϨଷK ;WY$ ukԜe'\m]A`6ؚDVX ䷢*X8j,Y,!??? B+ bt1yg:܍Uz'惙azD^ ` ^coڀSM>sKC[~$x5*`}h-#!L6zg% Iy Dž\&kU`,S\ѻ+'Y/Qq[l (~56 >6-BBIkW}Y-TYؘ8no [^KIdX7x;I7չc3\7A &AzjZPiB^- S0`}H '%AtTRs)r,r\bȓgy17L3:Yojn7;V8?.ťVpvgk32Q "FPrJمPbY< E:9^3y$v3c^c=؛&h{d٨0yI4k5"N|˗/WɰbIJyA;֭SK7.䞟6JKߎ{΋r걫?_]U3s͍[{2yc!W0)HTPYZ ¢XxLլ1I}pgrBeyCN-X[WW.M  SBhyh;t7=P?'A/;a{v2"]%P!BDHyЭtM袺. lM`{j`նH]ھuDW 99OT/=e)XyDG$m6MIӢy̖EɥB69[N _@Ȅ"w#^A<œzn#MUs!Z-RPUDd#U DwQCvLpOPm# s.v4.S0 C̣y50$3 Ts#8'|w% wD5gw/2Y-F6O,?#!18171 ~_ -f2d7 GjS_4RH! z>ꂺ+,#+WbX NA;ͩa}kM1.ūfۉzػc߆MH`ڞ4P5~VuHW I@&YӁicNC2CgCKGm> vi;> ng̓nuڎ`WpU*ӮN-mhc>??׆#^_%w:T%媾`/'9}ގ;m"8.]z('JsT5(T3o@|)1LWt_{GN[&FP3&xpB[u ј /ɟDPA+]0[g,#AfBN,D'%M<+ً !\9D Ru7)˅?( -dH+yhJHNKpd'7Axr sYk7s6BP H HJ|2e_}8j'?6^&ydL19ls:Ȳ[NvZ{5 ˗/_|-gz:yԦ66Xx3W \w5cZ^z:W_R{[o5Y΂ƐTf=vB|7'o]P L3lqK=@|%s`MD_QSˡ5#J;E?I@e/m% Hc>=S-x ko3YfI7y Xۭ7 Vlz4t Fh|-Y[:n5幇t0bS T( O7띘k|zvk1\kunnr JA HPTP@I**bE$IRr$眡#Zs1΋]UUϩswo1R@ObJ2XT?0p@Cበ 94Cr8O|wf<vUo"DsXA*+aFL5\CО-AK“Ug= z_]SUA,=b , vzXVKt >6btؠ֨%jU%&3j b00 0ĤQ˜`fx=An?}MZu`2')r`h3)sd;t//N]9E߀+m_>54`V]?>rsW7'$4yXޑAAP`m׀Uʳ Xz~1O]_w0{t;lyF>j~]?6i"WJoi߃z/V=!f殹2UVk\2|~ @j+{ K?ᝅ 'RkTr8kUPd u!/b dg V.t?vCCDꮎc +ʯd{q;A:!tvu1IVU() b'.* \BЗ1)H~ʞ(tWH.]f5(tC5@S ]ecU,9D5RP(\x[6=\vKwJWNU<7ހCy!.)~z\!0%'R?Y$sU,6 g&G7O'`m^@Z/Uo _N(I3Eoyd _GMoZ9EH"E)7gަ h(%/ѥ7?͸R:w3R` a?aߴ{#P }@]!DYuD?_VT~ {LC ? Rg o]y.|q52tt;|ƃvʗ@ .aҁB}G3-D/sPe-y?d7>[% ꬚"ODuSH8S`_>鶋6 7@uW#}#:^ "x$0M z'Lƀ67=Q{o2~S ^w7;tY3~· >)^]*8fwќhi/O@^= ca@̕GKzf97M/PZ-zbCUW" 4UIũ!}0 e ,ue|a'<'|Qy l˷wP!  TDSQ􉴎 k5BC@ղfZc `N=wwt*Y]͏_\ws-.GdAOmAPJ Q%A|$ڊ}]QP$t+cc:BI$8PJɜԧxR[BLe u'񿃝 Ⲹ+YtWg?7 q^ TF,s*\|Τ}|1d{w . *} %TA(YzRH/M=خ]A<(۪eWAZZV NO*ֻU֭M#6Aj?]W܋)RH"mgMhXɨv1z׺|Ǯ6ݫoxdڽ{ !әљ*e ~P0Va/] Q/ #T3| rZ<hχ mXv53*(n&wpEe,ou*wXSL1yƳ!-3[{\ASnOZ3Yԟ@Jl( U"K,?M!/d=8["Ǭ&*Y{Ogn]AhHg{d[y k] TCKrdx "8 ǃcC@Q}wݿ7*4 UZ ߑs MU b5z*ia+]8JOF7͉ f`mWíC@_ARoDFE6O['w:" hh|L:G}g5' r\3u oK{ )mzyOOS2ݠKijQ:a>X6TgD> ]pwG;C=Yv=;֮IUZ6hi.CdT0wu3̿TN d_ɭ*T˯qa*}ΞD!GD:mbXj}Ȯi^cpdrM}LGS!- 5 OzSC|0q%Hz=뫺'$ߏ/v-)1%$=1jSσ(v%rLyhL-nnj_ Wo\8J@fݿb_'pJ](uXyH+ E(Sb $celiTí[ 2D B*g}cqT|/oxUϙA},`ʾ&Novw+RH"E/G`-%(ʺu޴;5Mڋ_~Ը{Ծd^}l֘pg@ᓅva"]#^=6c`yf6lic *xQv9E,{ 874 [OÞkREy0_ VO/!3)5/־?ҾK؏Y7?qY[@>aNܝ xL~ ,~@n '>]:@]6w ZA".d^‡ˁi঺\vxYOغ1?ƭoW~[pk\g1}j:͠0u1`9:Ɍl35/+P1 bPWWz~ms y5պ`.L:Z| m 0T,\t`?"qM~t`/7=Eґ_{d= zޥW=خom11wz#F @~S 9_TsA>-@e{YyAɊL'd;, ~I-_@| +Zpv8{Na P';/؃{kkΚ)y9k2YU7;P|mJгPe<W~)HZ) ek 1N^c~i/ 2ZڝB0:z,T! 0κU~"l{;e˦= 5Yr~X2+L75p\m5A _/4VU$$9 2׸߃5^o\săźD7DjG7Ƌ.Apqpq Twz B]ӂ!(Z~A[i?Z/s̹j1c nmSUjJPr 8םC P9?TNa2IlOc)mna:W 2:zO{ze}S.L=r8쪓]_y"% s ;L9OvfAɤ)gg!Lc>kgb><8!PgH;*Dȗg6Zgz_Tv 'Z~)RH"E_#k7XvQ~l[\te|(S|{߾qj竛up4}:#-VfLfV槙A9 rCDF#' 1Qy5W+6h"MA'T=zI BĔ-Pfpi&8qNy/$X7ymDC~o&iLr#vl5@LtKdiid̯r!_ջA7m^Fs`b7@sX.׃xSoWlA}:YX+f|fr)NQy,ܜ_~ Bs؋P?*ɵ48P~U @̧8_#uqv!0;~O 2 #i/{jGˆ Av $IY߀KW _S|)Xl [ ;9Oy ;= |k 憹`.$7O@uG2]3dX0CLyu2?9k̵?ufCw''/A~/ʋ:+4fv XMnVk5A Dw S4G!Wz X+~im}BΙ@ M:dϴ@T pFNm'3U 8AScs ;tYBqM EY+ U7v-196e0Έ c5&X7\ "YR7@W|_S =D?G@TEU!{{p'^ zS89d_ 3ޝ{P,0Q? K)1ikJH-)Vayv{8}}AeȐ P+o_veAW _'88έиiwOW_EW܋)RH"u=qO?y^VyÕK%Gv][z\y^|?Eg}3g +<}W1/ s ӓtx{˼_@_WE%: j N* .֋C`0y-嘩_*8ޅף!9^ k5( 'D+@D-l(F^Wa#J{eV>aU}q 3E a~.1\p*ڎSODT xƼJG0L ,g8 '}D臠{z#dY$KɁg^yc#a^: !|d~n:@xH' 9G7Sw[ bxDn@?1AM@z0Lj.$TVz?ƞfWf `z?@䝈 csѓe ;7Ȼr_ ȇdIi *Z~%0#7:j6޵>@ ;Yڛ7TqW_~22Zes-'}'cmpnكoX b߃KlN!uxj^ -vy@Z[ vkB0X-!O75ꦘyY.Ŝqps譟nnK򛗿<;2wy  KNj/OJ뒻_N3LY E{Yõf]ytFWoͿ]tMJ{]wܽΌ|,.dOSr}2eFu+A_|$@7(E) XdL0o f'r2 0IrA̹И \`$8w\qNs }/C7ԟY/CkyN c: sfZ4wn: |/<9|?`'X3@*<1pC׀y3e;#/[A5N!8),n/; n}j̇{L4:D@W([πT>pkճ_??ǀU"?Qee+,x `T}@j5 - ^-y;7fMLw5 ! rxMtxL|4kU ; /'Yg0l)5W y6F蓠&7y^:xżr`׳{eNb^}o;_ X%>[ "M@"sG٨j*P*5i~/5jzPE@S\{6.tbj!%wBwtl`lTAZ_:Clf̈́ E蟸`;@}dʂX'^Aˍ`'Zȯ:dW:gw3/r9\y- {CP.$X> xDª J i ~/Nv1G Oϫ C^ԗVڹUCtF ct̹!ΕTq5/O뿎"E)RO;xu0͌''Wn}}Ǐqc_3+_λ89NGg.~9z"ka׈څτ@o4` w" Ŀ✸"ocbX,ˁe j8+LgËOA`o%gUq H3L7-p\+AVRY`Nori9xR+|poãσD=y L03gjG=]X[Y/?S (|?,'.Fѝ@cNST5잶'@̹]1mVvﺷ\׍@#w. 8Ja0 ~˯mY= wY+cT@Q3U Y(=GԟW ^j׶&gxSq uQ]=SQNF.Kx<+$)~ew9PcdAᨂ?jzӠS|6颡x89J́pp,X۝ 4pdԷ*:9Ÿ-Y>CXn{vvGjKc넶BRfI uTj!>+n2p | )E:1V,z/wYf26!vG Zz\2Zε^\7 =A xY -1نrJ{K')݂BO|Qz'U@`- bjɿh)RH"E>ƞ'Ʌ&e[3vlF-ߗz;=gXU5L_ %2duAg5=#n pjBxN:o>:^SX!Vb.CT;.SޱAWuStr:5nmU5w增8D@@Npfρq @ n NqR vb3N)Q8S 6x˼1޿"{Ovop:#s!K& %C+#4'  fy< OyPȋR {Dbkς&ڋ6c!4w 3s=Ty @U-ӲDD_L0 6ʝbz o^Nxhro7DR 7wu<ƛ-:qNрx:hh78wSż)pbW\pwy:G// p-' E%!~LģS');@ն7Z !-@Яx)apnVw'dCq3Q}I{s=Ń%$_)7D[ g,%P~$ 2GvO! ')uRn[^|)W; 5XivȽbv '~ \nN>Z/Uނoܻ3o>>:M(X (?bjM vlB0U`WGf !0y"u#u@R#UP kI#`g buu=mF/o }?ms(Yx51D`C$qWmV˱PОPNT^6QV3!ȫ/WڡvAGjwj`]Uc~& :(d?$w (n5+^_Maqi|+ :ʾdEuAme`N_Ut6yאdW^x!\~y0ys>=F7Cwqc@ie~)L=)]%8|ꔪk= J|YyP0}(@xj st4/D'1Ku7,hb^H"Eaχ{ZzثO?se82uV 2{gzz22K#;d3dHs.AA`Cmz'=} ϿfmFRΗAk *QZ@Xdx@L@11D4wmvYg>B9VM( 468uZN#zCMVcvY x lwXU(&ę8=rY@V'x NZt4ꦬ\)e([PGxK,_st+~oy, ӝMwԣ/h_;Zb[`&LJ: ]QOTA4??zu'ї!`Wm1`1==Wr DEFӳ4U e$,03A^?iCɘcS_Jh f/VS8GCc4**dU'6ZyF"Fֲ-ߌ)!]  >m\Ut+:A/RH"EuVa/Mj:kow~7L[&5J?s$Cs,*3<+~$ ~Gm_ޟ? !3@e*,%Aie3NWYXŬIxNSgI~Ez;qq5DFEw{jPku \ X[l~tHyKtb.X0sg"n[}tn@\r bH*r==Bug=߹ "S;h$c`7f_+7ؿꥁQ+ Y1j˲Waz^uo{d.v;jqWz>?*_MQ; 'yb -z=XÃ]< r/\rɋBּyyNa+A} ~4c%BP J4+Ei3'6)f7>v`^i*CA(#9] ѭhWWk G[4t2`=nݷ"&J_ D#OG#_#kX!AyҠ:2iuUDZz*կ]}տkB L W]nYwjYÿ<-E;y7he ,4a?d*+?oԻst3ЫL}v~|n@IDATyG< S;~nbǬhA-< ^?B9!aj‚ĶPkV@(.gs׉z=R*zy%nlAy+e0nYveEa^o.)#jzPXz&q~΅T]=z_]b~k?ρu pľ Mǂ+奀: zxGy񀃼  =D/7+ ^wBkBv+t+ފZ.L{ e? Q jnc@~`vDbk=5 RW[>_SO%*ꎪ}O/IHk8ƺc`7vGF}Y@MQ8.R5e*0dy[VMܢ?!tq3rnM1Sѻm%X7sptkM,~K ]L3A@r&V9/mii~o`N8=cȦ!8K<n?u*5XKퟬx=AVU9~#``)f}Eod[zA\g*mA>:02ܒn1A,1]#QϪr* ~ #B₞\}S`PpP󭇯րl(?V`Ǹॺ[]>^@~>o^znA`de3Լ(1Z30MM>U.OgAmT 8qNq6 NnS[b[&%%B1]Lʟ-e18W1i>RZZj)'#&X7;@YDr#sPЯB WSַֿ /PX,yvSPyR:X*_<NK] I$`( 7~YQU =jA]H]ԟ{Q[u;Yz{n^ȪdjSnGE)RH"\sv G_>bJ\鍴ko7n~y]od(17?:냌Gү@Y ˄pw;ڠz. m.䚩uIfπLҹ!T6}(B^?c Kl9"͢G"M3 G|GfЂu< ~ﲷWG9p_}Q;}˅Q ne2j Y6ǠX37` RGy^Ydy9N11;A5FYA }-_j XV'8ꮪGǁ{ 3(U5z5n9FOESj9`. -ē_ǀ{6\/]Pԃ__- \z?>"[.t#UHxQC0q}xXt-&l "HhѼh\ cro=,biM{D8W%܄ ^\ ߹y1 _Xdcwޛz>nQ=L+Xn`Zy ,J|H^ {0o}`OWek?T Ƃ7̛V U^(XO[xOND0;u[  &2-j@k=:CnSAɣbx JoZs k\@q1`y zcR+ПA3] k@V̯An" iFb/bOnB@R/ 8]ё`UsO/T:_ fnjKq9 kbl1o8=@˕P*}0 Z8s^{Q*BtWtr8۝ΣL <1^q>ɁE1c^bE? / .qԻܤXz#atTZ`U_T@Ċrd d9fv5!-} ==q&\sr'LsARgTo)r58\*7#Gf56eA&间r^kַ/ϴO뿿^H"E}g^:}N³_|_5zֵbk\q?o?{{ؚy/茦d2'A} ,inio{sS:xW@Yb&E"e vwM('ɱjm A;ny^j0L3<=hi%Q*G=~ doyNJ74ũ"Zi=~yw<П`(h:"7~Ip/^{5@+[˃v{}A7}`7Kz &9I, ,=AJm5sk3⬁qA*:GgS KZ@:`r}s#hd=Ah+YhO_+gf&d⠺5,:v̷|o:B(%vPh<^S/p6/x r4R;;AHHD=g>q D_`^pf]m6 ZWO@֎܌ wwE}g=0L1CcIv*8 nkԸ*5FV45 ާ?ԇAw{f OÁG~oȉpn!ZE~QAk9~<`DE4/{aځ[[&V4!@\;8 ,zϲf[k= fiC܂wdMjnEzˊTċ` 'ZU< B2: ]5AhmD З9Hj-CcQ]hh:`4: V_}{"6mto3r~tp]Fg^,e%$%WқIN4=V%q x1{$g$K,qc)%:x.$O,V-e VNB0)fmփv!Z9 U_Cw a)44˚)-7HUHҟw/=3\s?Sg:w%l_ntʔ*y#([gރIuM5tFZȖ`ڱV}xT]/)_Ժt%Nۓf!=Gb󦙛?Ϳh^s "E)Rn{24v{Ť_TRr7\7W/{#ffzo|T(:37c]-뇌P0`Nay\GG{%=,?CO& # @-#U j|Le/C=E]Z*ݺzg`}Jz_TuR= ǽn]0.8qK ukU9 m8+swxŽ*@: TY*Pw3 / - 'k >\{!9U@,UQGag7*v;x\ ? "DDGGH$Yp{;yc:5fL^[' =u/}lO5IW4?޿zAe !?́Sf(+/99樞{v7g=-0uM+S \:ppqvz;Eu27CrP>P~OkXH3,ֽ:Y!87p1xԅ@`r`p/_֚rGX#vyLe#DTY^ݒ ѵ@{w ~g nkurx涙 I.`ƙ}0uJi )Z=ڏz*ciw]]`aƃ!Pru`umg?O@/RH"E=s}x]"+fߐmwᏚ];v|wd9lY'{8:^ΞLYf-‚Ƒm 5!nwLRZ/0נQͭ@6P`jm&@{Hr,ځb&bIѐZ 8Y# .>qs RD)QUlWop,ak)0I&$7{nW.@ U]Xp#V"[ =KP@Łl.V6v;-ˢ@gM1OVYcգ`mUkz$)pŽBT+eu) j(ZT6A<(ր,/kȖ@6#9|,=E;ȑb|CYӀnY#|Ҁ4P ̯aЮb?jj)7ex<<{7kDEH:D}(-y / dww:.poM4@KTv $lKM(7;ݪ|# gɸj)}Kg faRA;2nض}> qv\f|Ğ8!:ɗ_W[]TVi5}p.8M*JR#₸ ^:emfY 9C;"wn?u9]!Za\˄}~9 cD,y@ $^,| j`} UuEN`EU':á`_` Ikdx z (zާ ;oԟB|?,!9G P}bNɤ"  Fs?1j ηZ0a~{_{=ß[٭*`'Ls 5ёߙNYpZ: nJΘdXA7~,$OOAiCRbw!aUbdLް^4ݪfCS@ZY //参{d|S .< 8|4>jK!+wڀ{!Z bǮ )7'zPO ^'6X{f ^a-moBT)bD+q+s]͑q~-j*[5:kZ?O"E)R:c O]]uuH|6z`ljg>;c+u]ͮݼ~ŒvGw:_˪vd^c`hR܎΍v[7߮krU $xXx^:g]N/@j`t Hܙp 9Zf1qN܇lPoP,3M:2E>Wu/[ʫ7~{ `MoQyTIT*bL6 $ (T_ ha4>䦺/@tIt~tC&l}RA" 2yɩ8 q^'q-):@ѥt&DF@,vAaГP=t;]ڴ͚66Ok ~|/Za!춍怗r|U|$ʂZdݴ:AldMx)xdc+XI^Jwѻ7"Ë"]!uwzT=bU7C:xCt%PԳnA*: Ф@t4U0ɴ6 OV;18<4nMmn_rf7@@^w o\-sŒeyrB^wt eMeeDً;!߸ vh a y* y-u6ں7oz/{ם鍆oџ)\ N㲾z& j A/Us9}=b^/\ Fs`S_0&sOo]}JV FH0q@7/p*:U!p5wp\o uѣBȭY@eRx}H88#pKϞUJ@; JLGp_cA~,`7@>#KS  o;\zWӗc@ |zYS  qCb;VYZ6eK(fեCʌAB\r}I?J\2GA M5-Ќt}[7=@vyR3sJ{nVV5ꓡ=fyW ϸAq uVjb(yJn ];)Vm 5ǪK_ ?Z V B<)sU7bܝG'|Cދ~?[OكFoԲ^H"E7[._l!^ , ?rfg1냮 |/]^ڢ3: YgZ9m!s|ĜP 3NL3 a]4x !yB\іnb'@he]8;ZZ@Գ ~8w-ϼP#w0. N+2G} wzqė3q3 %V8=J;5VEK/~MW3ufRv;ԎDJ=~v<ã9Q [}TO@>"F;CAVsX-׉-`=Z!wu7',gVyӿo0!}&;Z"âDʃ'j #19ίIwD.؅]@J$+oG;(0<z ʝ/P 7~LN{ڟfo3z3 9@k 1}BCCِ=/T( n'+pyRRo2{`Zkg,o?[~6NsK26g/:c@Y*S T5B~8.l/wҬ?G/Ӌ&YC` 0eHTApDN]Mdj>7^`0cmu}+ )x"?Dʄ{9ys '!#D;إrvqy D΅΅9.|' h3ܛ ysb(o)7g VG7Cm!حs / 00( z)S+IKd\ R%N e/WsH)R4 Nm }<|X 2QAJF`ܐy%_o{.]p%4pս~6ك*fҐBbF_PzT٩;ԄaPb|JbBlṇy-- X_Iյ/ſb'B-xī5oC'F}nI}L<.-A4?XS@/RH"E 1߂.p1 ҕ[_ں}^:bW]?*˽9wiyn74YwxaХLsǜ5/:q8mXFq k5q)=*YiVWr~k5}К 1B%bC_7RB6լ ʥrН~]UeUOg'@t OϟBΆYBgpO[b6O@o56(\>S-2=l3ti9w8Y-ўѪ`͵߰HTOiHܯw2+ y tE_""5#AflTIy tuz"VIDUb\T' m2٠t@S#NOWܚ~/W!z`暉1!hp.xo&h ~|`tLǘ-5,`0UyO<uR ʊ\Q[},U@-@bKR:.2bNĤdkgM7Mgy9RLʔ⿂3' ) £ K x!IxCx.JYS+v#8 7K PAj2~ 1J%1qQ h+ׇz/gAQ`_Hi`J.^43ܱ-ފ\q,0&ޜ^OosAΓ΃| m w V\r Zu ^Kb;^纇 2#'8z!LftԽMg>i zh6[*&A{*zD * yLf(l&6v@z|v}/wסTȚ#'XkT̆wB \3>\S8םʁ fiWDJ^h'5V}j5PbR,.ۗtV Nj V(3"KO-K<L u0X&ؿ[f4믷u .r.;pkm.e/P߇sPjߋWRKn*nCBvr,pj&8?*PnWl }pR>f C|yv.N"b2*>Zldx'MlbEA/RH"E =f/sܽ栛,ڵko^svcz2Zeޥ{w32e|uwm6v7s?OX|$W#_h- Em}@{, = ;[.v:7$_TK<ܒ4 ]\_+êfMЩPP D`9A1+ p'z%B(|/L{d/j]-ÚG{SsBg,7F!{2o]~އ*Gxς[-ƺVvzMO vۀnl0'jPԷ*@w_EZ+E..x=󠥮+`| /ZVzJ18(@[AWП5aQbuSBpbplD Ye$e_'T7T6MBtq4%DKGDà+nz&ގ +z$DLYV7='k 6i j&OZb 7 wi= Inj%?'&zx-g[8 \ȱp6S ;t?W;q[[FUC.NO筷^s+0(':;~ tb/!`/ؿ8)/x/p)Ld2x7L,x?ziI}߅'~ N!Ђ2???@_{}v+?VY3WPP?Qm+ak@;g, L#oHء l_Cb}?-c^PrLdg<WQkV"Adp,٠BTF ܡ?QYu^pإkµW^|t;Z](,%]JJH]xR'oJ~W&INapN28a<jDMxGo\YmF͸+"Nٺw^=4}tŊ)E)R![m_W?Ȼ;knY/+B>tw\doyŀ^7џ~/U0?FTb.+B̢ؽD)@̝ЩǭVwPy{=>~ᾑk`ʹ#==·å~ws!R1|2R T kz-`dF\,+_Ave3`` `װ⭇d,f Vvi kuel 5DFsū{fm-pٌotP> 452:AF-D0Zx3Ms,AʂHTk~Pflf^A5VOrDK=]^!=o+ydKK>738jګ: Fbb b7+z5߂W6Tl/+˦ Z-$J({ HR.^Ih9":oq?{ g c 3y: `_p9[A]p 8G.Gw |\fO!bbr -`E >ź _-y6V ;r*b o+|LUa¬*]UsεΉ3H$$(Q0`"  `($#$٤^kPg>_w.ߚUMK_`@=n{uQNw[? jDxNҟJ\|η>&. AY X +fMq/D!y0 3 3d:xFx1۝`Vx (bVrBC(dk/딵B=Z62`;}'> E/[ɡ F66mdeWA#q:j$ T3nV }R8O%%%)Sv-Y3[BiJH#mxF<XB#}#ʶj:O,Vߪ 5 bh's@w@/u=nɐN^Zpz.솳]媗ϟ=5.Bš16"TR>;c3.GV 5 Q=s` f"6t 'D;Y{-M)z~$xbPЮۿm:SV˔)SL:zO)ܩZ[mL8aȇo\pY_]jR]qWnFn, (%gKA|7޻ Tvy lST[rh)?.s Ss (GeAڛSvh(oMA 8{.P@M.[zQ0 =u?}A?64 CM%S +L/q ,8T3m5A R@WF ɰj|MwVĪEp5ʮδҭ կgEb@=!s\T׎H/ϻϫb #8$Rr@)J@/@D[ П8:pY`Yԓ5D991z-&Z^}NwXsV-kiv] ;`/K@֒ɲWdC*, M*T%O+珜y+~/7r>(e6ݛ^u$'-q8B ։lsdfQ~~ ԫqz'!)iIʝ`YVCI sw@DE7FtuCKm'TG!$>DhdDkJ ?Gw,N4Uлz'F/]#& R~%m9`=v:_O*|~*V[/SdRRY+XMT1PI"S~ V%+D/JN,|%VrhAj0+i#,1($k.}} + H9r#!um)AW8s!`uZശ㐜N2R2F+H}lHgH`wrC ea*(>b0O}lv}BxI|g]ysO<$v!w9 v zrYO@ZqƦCt֚P{Ĵ1Qg%88o!Xm!eHc_ -¢Q+ge-F&j$7A}tO/L2eʔ)OeO*ƙM1+#.ޖm\j3=?Šܼ y+ oʍFBс©Om?b=ݓ`[t{`8+,'d):UG@ur<[vSr|ҦMN ~Wv5X_[/q[P'/,87֟ +K oVd!E&Ѕt+[5Dn`~5?'L E : Q C|)>@zHRia͠t} = s+[Zjrq.OZ|&6%)qN9q:`5{[̀L6fلRmAMI'L*MG ^lPP!Gu?x @n/ ar"dS(Eh~?Yt~|GJ i#ꃒJ+ azcT## Af+Wopּ¯p{¸!`?eͷ?f=\{(,\z{;`S0Cz DmOVd|{F"TxB @As; Z-w+ ]!M윲z#"~St`.ptSOUs@.]VtăI+Ȥ瑃3cˡ⒒:9y3r;XYQg0Qj\BO 7fe@ғs/%;'O">{ڬ6[AuZf[d;[^ggF{OEYJW]!aQ}B;#t=:xn!1EmA_.ǭ!W (iYҰxИyL'oہ8"C) ?c'8s7u(ȅr\ K N9sz"D.4YH+epH8 ɤFPCsՇ/ j Y8X<2R(_垂@)Rpș=UP^r h @9(|se{MN (fvo}[t)SL27\zs!diƴ=3` juL L!X-ے`.ZX;k~:4V] IA Jh"'Hu(I.i^>[7zD>`>ls~ 9[=!?u3QkU;^;ý#-? %^ f^n~>60DH`i_gɹŽK>+v ,G#Ӫm ^=XjArP/w{%^f82$O:L2v% >O`2Mq=5qޠ(8fuE("4Нa2# d5rP Q08 A(]W7Е5h5>eNs Pf4g>&$b/A~'߃l*oM,6oA|,N@/&@bϤ߻FA_\?{C-3Rֿ ,u 2B Х:/ƐjG !Sޝv7ˀ % SxN| !39'I2A}bMJGbKXs-?ɿ8l&BBBI a ׀T(5`ƚL,b9榓i b(46wF`{{h,$[Ar:AqBwgAU]8ࢸE( `]kgn#"O'<jF:8+: _JW@EfO6>[qa/Sm nT:k`U\xU{P:$Yz')yd `ﵳT ]sk9dtA%'1 r!"ڨ4~O-:h_Nja`Op aՒfA'gf(&I·`g)x>^y-9A֕e;] $L Y]^]# fnhiB/)~7;`O®{\ퟝu*6G黠嚧:d} Eu>D^h/X vkɨ5:bܥVM fM :CAG}Ӯ\ЗQ'? #.8 L|3`j7q97MoZ*fϘ [#ml`EY} por^bjZȯb(~( ?2eʔ)Sg.ݲ޿.m%wn׹o\|R]_띿/-:Otg A|uSu3wMbt1zYGX{Tw =l CP i 9]R.k*5Ci2ed_Z(dgI3dT>rW>UE?~L^=?42q?GEHNhP1o8ȑ 5sc ynηKѵзGupwz@V=pO<B+=xzӽ`[e@0A?F 8| }Z2.4ok L'Aߤ; _S`a@6꞊/5WnQAݪ>GPlW-Z'h_$ J~+3Ȏg fd1Pt]jNӠ.[}!4 t Yq Y-Sũ VĚoOYS. |VyUdJARWAkpjFj*T\EV_Z]{5(% .CpLSv@d 4H&KEv3;*^|30R"B著CdldJdЕ-b7TW܋p""jCp!h{}aR2d;#V_ zU5BNEЃ[}ѭl*+=~(ǂ3 }M?;bD _UzI{x.DF@&&g`~=o {]:wd8$OQoAƯUjVD6'%oA"zh(XT݋mr-niGV M4]/g&;!Nd6Nm)uHn>a"Ok^7@|{ )C^'\@ιxv,'n($EW] "ӡ\̗SnQɿ$ ?e΂CA):Xak5 ZYG= 0|Пt&?sbOm!kcj;r%CGNAwOYVʶ)SL2l۸ڶuб[{6t]7ncs7Ϳ\eCm]nwϺpη7~:yyw7D|S)]ܨ{%8o `|sLQj4Q1G;N}p::r^}ԮB+gApsXPFB?_B[uh F66 ku@{5EyxzgW챠+p7z {U˞Л~`8w;@Օ^ ¢pÒ^?,{=xr-sܾ) %4(Pg<ˤ۠tL?!_Lʃ~v ;s`szؽZ=#~W@ˠh &T1j2jn5{/O..-ր;o萾%9Eި?uJ.\$>+@}j>j_Z-?VZn77[NJSVqI/..z fy DX'!}[̊}r.vscg׷@ŠnSVEyquy-^`O1K|/*7z#+i( [ BҏVJk5ďģϡƒˡ)8G ax-@S6j (:||Cb*OBb:> Vn=TCA73uy%9GCmi\wznEz ڪުxO7zد;/-{AtCD Pz/I10_= oX}I7&up{߀Z-Pj. @+wA? V%If רa( &W۠ѓt"*X* O{Wƾ|8%BhΩ%T<ӽKzmM{|?JBr@Z@nP]T1=\&L>'s, I87|"R5sp>d^߲wڿBri҆DRN^'# SY ޒ'TE֪ Ϋz9T5 YSU Y[Oy2k9VLz='\4maǭ^OZ^ z2eʔ)?Q,`⍷Y~:kE͡:u\y7G眘I_>R:WW]&Q7o3W4d cG3!|glWso6{ |6yBTxA*i$eSUx;h2W8NvkQp~v9[za=zDPSԙ!z[z; 7 ȋr5z/vw; ·v?g9 xuT$ʉ ?P/9aN kʵ"8;ο;ЎPU)E38,zZkMPn`]@N+ [笶gv /zonS ~-*>`V+S`u[mbX(V#/M@)i .yD{ A uj]FPx5U=oXwA2 2=v5Zs80%&: _l.2dKP㬮j|"b`XM`[qvkAhM>5*\/RTF:U 4/dOXLwl%&%-k @'S,XtqQC7B#$R:$Dpe T9SZAU?wۯ|;cu0ȯ 2.'p5 A?;@|#g}#.Aԏ{8[GCCHowQuFYN֕@7Й2ުjfꊆ7@'@pXp/G}uUtsPXTyH_t uvW {­B{߫4{@<'3:Mg@41Ms?͟ &l ^xƙjpϬ¼eEg;2nN2OII3A=Y!<Y 6`m g8L5cM.d/u10էǟ3 ̝?5Lsʕkך][x8:PT3Wv>^ھDCMtۀjE(rk\A`7JPTMu #Vu.9Y`.q_wW})2WtXZW0VzZ- H/AlmJl9=\Չk񥱑@(yB k;dcusuj{7B!# .PskWpWIjj ԡ ;߁S42[ϋMx&{ŷb'Xijݘ4H# ?\QgC4T/u/~ouuk-δ]b87["A5wZuA樓:zN>U1ȯpL5v;nlf];m@!Q–HQ$c` X[@u} 7y~e G$/ħ?|(^2)v.m[zJ* 81Ioku siPMn!%oϭ񵼝|PT(N(.Peh:EjZ'C _IW&:UPu?WksڀڮE1+T`j7x+vtJN ! fT MiKKau+dX`&K@ghM,W+ ?x:U8=*9@;q+] aD܄:ng-5D+|HÔ}aa`mp4]!8-ng3NT>dI9 @>ls*\&!^/8%Nd?8).ُ>f/ѿo;Y@].tCB1W׈W3 2u~f6/ocgf)X}FtȊ.45?9D x[0àגl>ZGRr95 K.<܈8z]pWCVIPw@V[Һnlo؅pO AdkdIr]3M$٪EH,C Kr|cl['O;5l^L2ew;igƮ. @kT}?(w?f}HK_:(ﻲy/\w N4/+ Gb~UcT4yx[ydW]ƛH0%`UTw ++Sv:NRs>@lZLU`ow;+,x#pPknDvtZnjQI"BY4xN)ov07)]c-D-1]%nӊަ'D·S"Ӆ`g1"lShNBXg0 t; ,᪓XW=V&{UiV9+\s%"ljLwM@ %*X->[@&?/X(,3K0=~ƹs۹Y ^ ]A~9# -&ƙoCiy>L ɰ,~c&F%Lw넵@~JDgµصk QsT;RuwҠǫ7^Fn!]!R!ǠRY'D7kF O *D@Nw($,Mփ6R<uACy2If~]?G``om8cZavUM]Ȥg_XuS@/2/.~ _X/l)}Yd]y Wz٢eTyU bbS3g!-o |_81<>533uyY S5qq ">JȀԳ~] LUKVY<*o9N0/g00y &y'rT5USҽc٦ƞjk~/ g$=O,QA8]tΩʐ;!v{ሺ -D>czvd UyHd@z%V^=Wx{ ~.k_uOTzg(=Ky/ {2'NN| J/),!<8|wx~v?5L=}pp|8?sBђ%AqYVCxZ:tx.hWXC fb NU"UÂJ1x{#Z7EKƚc^oJY vAzN`D:K /#'en#pBNJ ,x=W^HE~O- \pBd}Ae}]b#!8,m LeBٔd/ψ? uRu)pRC C_{S"pnE1km!~jg?cqyY4V j]zަׂY7Z_`oJЎN/` J= V:H71= Mn]?]!0'=^3lNaW~"g׵BWOVѭYRO72$Y 3˧ҞYUkKk=Vp'@%Ff9]h<{bc]^,6QztO)+eʔ)S/ao*^:9{Ko.^?7d̾^O~CW,0 ,Ȃln@0{jS٢ghX*L}3,uZcuZ {}Dh)P.Gv%P^ NT,~n]' y'T]^};Ȩ̐%`c[Al^Rl1"W\H je%X81ap?wgih# mnX$ knXr,)V !]YWFӚ@OOKciqyw[ r%V}0i¬,8Gb@]?jځשd JL̔ӥ@""kkv`u:aԿCj`ҁ(P@(yeڄ0D[GFC.^ӊs[Y'5`rM{CVg$LHR&)AQ]G\emf(xޟ]0^gv0cz׮τx^\BKE)EC>j OrK-Xg(j]xcwD@'p;YI~3!Yǡ-h .*D//pc' wu|Z^s ~Iy;5 }%+*Wk%",JRrS/;U@ˡ 3}No' -x#X Y$uˆ 7|ʼn%?@=~owڛ ^o/YdVy Kk~K_7r7j!X׭b9G=`m-VCڥu5^P݁Deg2֋V:ýo:9zV/)2|W&C{b lY]7}R>f1}mib#NR&(8yN} cb_@-AWӐ`d= ʉo?5V͚ 5b2޽q5]PrRfAM(-e*ONX:ʵ#Tb WhkءVE_ uiV?욵2eʔ)S뫬F0_?{3 WX|1F7SW͝.l?3 :O-%-J(}JOǫCpoY/ J">뙇9B/22Җ-@Z=e0Ėk>mѿJ_uTd;A j8jBO|{6j%ۨA>FdA" J`Rpv7 lցbn+PT葢S.;D8'p6qk~Nmtk AWP!B~'@Ԕ=D= Vn?iH3 &ȓT%k, J zz% w1 o#= uj^YP%5Q)"YsL2;\~mծpc &ozCZOէ2 ȋ,ˆc ~ZVfHq ?*_gB4Xy"~I~9U~ |^+=xc%x\d;ēӮmJ+|ʿVZt('Zkg;S SWCs-A@0M Z *QbxOqN>'`dj A`KL[Ĥ/:Md'g_yASYI&cQ,p?u_vW8%ڈMPe~/A~/ 40<%6@n8":Cxpȣ2UQ"N2(6sŗ<dJeP׬CV g? 5^TBPQ'm sll!>w-?rR}N F X5z jT=n)emYf~ ;v}DFʁ&z7Tx/zA6jlnyfqг6 n`=hn=^ԭ7[(Žr3_><2ȨYg[Hy3v|8<%~ȨO ɻqΆ]/!%XZYT{jZ~jz/7@pJn>;ቘ&:()>t{>Ӭ,6O)SL2mMVҖ*N:ko7^JJ8’?q!=|c(ȷAſ?z޷ uMຘJ7D},;D q"QQAL%b. |!Io C9A}QYU:g.~P?yPG+PPPwP腺^ Lk5);@_q;A &[5pyHjf¿ xjş38PGDC1 /+z'\2gͿ woߠ-`nL6xL9eB A֕!+A7i|{֠d P[=%qBB#ڊ_.SfE#/A|"~'XL{|`g8 [ n+ysClTZik}FOq `wFXuAl}d%' 'L 5ޭ9zlH_!'Xz6q  /PIPTEWEv  A0ȟ ,ɢ. ߺ1f7W:Ey/?ڡ  n)=YN6=P:0:gT3UXЏiG>5A\' ν wB!r*7r;~nkO!aC6 qNl ='Ռ`>j:A.ahXɖ#37^dy3!)!`O`S /dd0g++ůB!f;46 $sjיCf.d=9PJWoWk>|OnzS= fAp;:Aln>D5A q]W9cP!qzBCC=E}D0۹,o.c~^O(g!]lO|1: I_'H`ϴJ-E}*W{VįL# I7Yo&Dmx42IYjkS2vL'ꄖ&5׭OɠBjtA,T2ޡHw 3뙕oO/B/ӃW!tkO zZ @89I`m XX- k nv-Dxl z0/Аy0asѤWU`ꚻyl –;WA"OWzp+upmLgf1bXcVj=9z:?qxyCy j;rU5E4:Ye{}mkL{{@Rʩe=`=h?nVUx74qt(9YBw9' >Iژ;-^tI+^e4$~LN9y5p}kY˙ĎŚPap*L-~6Pܠ((A?Vs`:AINɵ`9k@!Aұ ~<_:pf *ɉ`z@y[oԂҗKρkCpΝ[-Xϱ ޡA dkH-DH$oN b2gV)'A\&;6 /{\G]zVl*G-sbP2x}޷k˄-^:qBrBdG9kM9=ԫz/Gbb/@uK?_?`? !/x8? ~ES?}j.APo\#jnf@;1ha'n;x *t8Mi ($04c9r sVWMЯQyC3!p$"GW<`Z~@yHਾ) A.{@vWudg0Sỳh%Zu^w(#e5@ 9([T; Cl~,W.ts dHk59}6gOʫջ Wf ~a]~I[?$~瞓0^ xZnO[Y2eʔ)S^ѩ 6q1殆+p\sfnc[,y,7m1 3Sƈ:A}A%** VE."W;Vn⩴f8APve_y'$H lUg뭆,w!WԲ0H0˿[1U}.e@'2B?EՋ$C?zw09x6?Od/#*dNiupp% `Rsħ[:^S'7 I I%mK"FEo{{B P9H%|Y =܄ Tg(N/Z] o_5ͲրUjOIrnxx)  SPʃj' ig  `2o_{Rq|a>SBG0muU}q@VZ NqAzwx@wsOTW 5XhՁxCwJ69zJ{^՛et~ QUo `7yx6AoTOU6Mx_|7 H!ަہT#ak@ꊮ #{/#vYk~3%: V47uqր{L\o?HTɠt2qdUtJW)0u6wyOk4íڃzXHc PH>?R(~򠬯R۞H`k? {u=~OZٕWL2e?sw0mǺ} %yvݜZ{^J8gScbV7(8m8ȵo<w{ ^96 ^O :9` 6ˆS,)E_AoM/I02a+?td' &_;?׀dHXPvtmà gexxx r-?wD" 7Xo=n9zi V/Ip9h 14 Jwl+]pn.gfv'_E DS.zg>YN"ˁd^GDXT3"P`5d?FPН砫譺 XB+b W,^5APc0fў+O ( "8FTtSn1sD}^j`< k5ڄRͩ] O 7-o4XOX/7gͧ\ռo*T5" v;/77v4Zpj9ie~z1P>z J!6>ֻ4 F1D)?ddQV/k}pyDsRkZ`BDGy;D+8}ݛ`Zy_C߁o&t| 'T4YF;kb8rpMJt2M'#1? p^*Wn3_`65A,XA +h\kZbxK߼@v [ h0}~v z5hjktwKWۻ RF&oNY-UT:`׵,2G4zBl)ѻM(;?Dz b: R2.=]Omc )@.!ahxWcQbРzY - gEr. y] &0Ҍ=[axq$ԥ$N$_jl[0;`F1˼VZh+dmPQ4D[n F{b4rxIfB0]/ ʃHD;kɴ&6ub*`7o}P:@7 u!DX ʬ^DEFS }bE)x*l$kt'ȵ2U'vZb+CelE U|'p!fKyN5B¯)(療m4c9eނ  JAuR{c= O`ww#NV8ǜY03eboQG!>j{쯜 TB<9'`'A I/2>߂l'/@_F`E`=Wo,W|I-@⇉B/%Kw_Uߺ 7H .^JY:*@GJKL;!?bEw{q娧 :#4"o1V2~^yI'@D7ufGʛAɻߕ|EyJC @  {}ޙ=κG>jUEؽm]HXk—wq)2w~OB?re0Dߦ_ b*XhC%ov?jeWSvH\2eʔ);nknc{t%\K_\zqfs|\ιr>'`W;u/(VҪ>ĿuSd>:{/gM]mS7_A[c T@-UԻ`u7!2<2"]pНY^So A @'ޥ;{>AQ-d@4_f[`ftBCoCP_3p⠆!jFE֣Vt.|C~ :[ݻխj,}[so{ TAg@ ?CbS䃸M>#ny>p7 ";egwL6dtP9P 7 /"y>A?kxRt#39"S} N}*SAI?%j~B7ǝWne ϙ>W5B#_>ֺn0m0;t] |i vx@|)b1OO:q,34g7'~b7b3X%1xRF<<DHNmA(=঺ >/~{J2_XUr)eH;Hʓy[cӠzNfwB4R/^⇋->BR~2ABA풃T1oAL3 lo)g3p[lЧ:ĽH"QDxã,QL9S|9޻~w ?;)p8U@$ #ʃ,0)[|N!Ho;xg@ķw;@\]Y`] 6b8ǝ Rdcub5c/Ū_'Bjy^ lgn^ iR5ɚNE{67;@'Hڲ^Z+ھ舙˃[}YTyX>w#G~ >dYϤ̺տ;RčSQX>tuuϿөVU?2eʔ)SnݾOԏAj)?%.MXtnŽ gu;qsk^ޫIP8=MA2:8ލ,nP\P|u+w =~=0 3w!`lSTM7AU\ Xnֱ#"`Aa` 93a3NInkeYPA<ЁH \i?$/J< Lښ4t v 'n&T/!8 C|R|\| l!?q Z|J>)RK`\d $}$i9w>́jpuo_ %bEijRL[ŋ PQ<S1T=>O,ox AQpgq'w/ dYtr|X jVO>)u:jg#X@2se*}1 Gk X1X~|o+fX}_0m2]b\ ;7(QC$ "doYS>/G ] ?]~O|'~~2͘_L&XƖM1E@Javm~7(WڪwrJˡ((\L]SkfzIݒQm/@ׯ?1;cP.(7|Z-F:TP9gG_pAןsqk A#8E?mCpsyNVv~wsւ [m@,ˉ&cdHRKd*N`Ʀ3~zB>ɯ8tu:U2`5jO@xRhPx+N N}4;ِ8c3@?Lw*H҆}o`XO2*h|^m$ߝ$ Hx&UHꖔ8mm%6Ny_f5MXpVsCn -~}PQu2_ʬkK^QkuDcF4""it?~ux X:3LsL}?Z :bB6(-9.c H4mE',W#O]Ů,gRH[9 gQt NH׳]s~Ɋݷ]ա^xwS z2eʔ?n ၑ)}zvGOOrǹ[TX|sUAfޘr} /C~)pWʫ fw&hPuT5sD ֩ ʀ*CuIA'.v{U`-V3UD6FJHbeȇg4/H<6A0_o ڈܬvy9AlIF3_B| J֗  b,@vB0^u:jbbb?C|C|u7zzmA =1D堰P8p]`&#.sQ]$8ޮHw4EC=("="Cܙf BIāb!E(9CUm: zD_ ge'(PFԂqH7sZPTŰl1_&Ĭss`*QTyެ1::B) ăI)7`c/{턺~NI=SA㰈4*XK:*sj\2\HqOM>0KJf9"r~r-p#7rA}dC´i,siBn҅Vɳ#e,nNw[8(>VT ?M ~ xCte4#:(_J]@"_FXY; ! 2d"0|"|&uB0ɦ |/\0O*m%JW T ʁf`5!3"@/: ]~|ۂZMP L5դB춪ھHsH9 *dEI`$HDP$) *(PA%$ Ar+U_\W_`?9 ƻUyw/{3k0nO6iV%0/0<ȅĄĸgoS?[~'`nձ[I i^Hȭ<{ @dg 3f8ĺƆe@ѫ!DYQo6rr}>#-{ RIUuI<QQR5sd)DTD{k!w8":_^| ?Bߩi!maZVn=}FȬ9 N.^=8hs"q?Ue5~:+jq/RH"aC{.Vp&\^~ͻWi|v̴).,4+7\z w37dq#+9}+kLmUMA,쬚V/ѯn>1F+\Ps }W ș@?wSݐq2cMf_WXoXBlW|Hޗ Iog`B-7z=1 ]k>уD' d.Akw9U-PO`![]ͺdׁؗ7bu`Q\oB02C3OAQ;i?3b Ȅ<,! /F͊Ģy GAwTUsP٭Ano] WsX1E*A4EW0H\$`ajoTR:V`5ZmkUR.Q m@5J[AeM=X8xV7˭w}n1 =ՃHȦ JQ-vrvPGukHB|޻XdL@83|>NCg"Ჵ :K늠Ѻ):7τ5} ֋,1ۂۂz`ﴦYc J OcNfX7lm5401SqJ^azB[1)hz^wƼgC(ՐЇ`c+kõNv[g\r5U|!ւ> /ZڷBڧi ΃g{y:k<qm Un dRgNg@0? j37"?6̂jlY\Rƈ_Դ-i3^o|n|Z:w**+RH"WVsm-b&D7LǬ76ZL{E{?sԵ*'瞻ʽOtʐ;"w :_V P88›9?aVsz9`a?{A\``ʀ|Z, zʭ 8Z2e, VICA %@rCrYP"g2*mYTwFov`_IyY07{!2{LisOPߨSp1n%o$gۓ@򯤟iWSWx2\Am:`=*D)Rtw:4'gAV/o?LCn7 V L?TD;d5ÙEO>-@'x(ɣԁ{Ybk fsA{jP':N/k= QW/2N=թ^[0)uR@TubluAg_f++zHVd>Xdoy0_>fDjD:F_r7T,l}O]vw*dܔ< ޢw@x]r яR>Mn۽DL \ `ʛH @ rʔrR79ސC!|RT٦n@$4:!RPrI%5Xe*;x(m/$~ 2Z~mM3LgާK`Sqla%AG궺b'>YTZ!o{]ڞ]^ D @ σu ˇ1[uwy4`h'hNHy#Nw[ī䃿_ V"ѷ-YryY+ ^p9jE: Z,,l>;RGOWIx5L3qZ[]j}gxRdP7@V[E/zxg\o/x_yA71 + ~5 l v_{43#`doU5'U˲΂( +_okeQ)aC]l%HYZ"m{;`OZM{1];znqRԟ?uD6I 3ǐ}0kqnξƓ)y)ȰBPRiRytʋ[HA\9"–4qvAF̩k u\T~lx 0 OCH-Gj{މ$:nX(N`b Q]D'qR<Vz63AP!Tsd@fdnTX H<ԉ`cUzjaBX /qw>埔A:B9G#Q5j'"Z7ALYƁZR@g}+;!ۃ*Ac8'gsp,j: ͅ@׮Ά  2jX;tx4?SY Ta& լPlc%B%JH: 09.a=-n} v- ?Wq{zb^09z3$?227~KP'"s u x#w* »C7</)q~YUA-ߪ|4k*-^޵[XC"q?Pb2xMAkȹY#;DB6[1DEVE[Z:!Y暹lA+ S@`Zt4?;!|vo]t\WQ[.#!1Q5 DyE}`2,I9Z W/(d Y oSǹB}\ @Q h}imLw Ub |y9B~x3 xEr},$'HYߣAkd5HH\5):=;m58Ü esnN?0Kl1?34_%k%*;xAXqe 92? D#9 t[¯J*$~B^赌,Fp0x M=^G6{9^oX=߬fߨ٠6GO}}< gؙR>'EQ.0د;AVCG)wS-oe HO}o7X_7A,3֭io0:u> gςo2 D QŃY s-+cxsjg6˹|Ob.E"E)MGە35֯x)`֫w\wuvU\zjƵYosf|9ˍ@䙤78+\ >p dLz /SNj< [QS N9gsVO˂_Rj[?N6nq`6_*n݁s4_PU5!$&%>gӉS#vj9G_1PJ]T)zcAN^XSzʰ#6v9X `,5CkD-R'L;{O\6gt0f0f;xyFyp79w cĭ>S h-@XYo%@g~PUIiRZ~r!g+Ȗ }r?P(VܒM`K.PWBuK[L9R>d]k\-B6ңu2A{K* g׎];rvMPпAtf,e #.[`:J/Qju lH-Pż<0+ap5՟0 LLuPPdpk08\ W-{5"U'#u=\Y!%=mff$d\ RzD˦>wHyiky{$27vr:'@}D/%P!şS=xn9Ȼ?VnOAD, wLڃ~hzoUy9++m(g:w)A/RH"v%w$\p˃؎c˛Ũ7\zK.w7]ʤC!D~yt=9rMu!19# *Aacq 5E5ZlsgU eDX?YRW4ؑXàNz87۝dm`5RV]=Ġe0ȯ3r%c`]&V]WEp>uD$1NR#:k5u D5 _UEJl@:T"єVlĪ2 U(_B{IO5ys3o]Jq`f(GQzs¬=V ɮr h۔)EwȋAdo"#/GB05d9^L$ #I9 evͨ6]sy:\ɸrROwsg*Tg@oQ-fM7_Ӈ=PNNJB~.B0U.L d3+^LGARMe=Br#_E]r8&u1>Wbkl(}Uփai[@,#E;HtNLK غ-(ѷħA8.ېj'>H>x-Q:z%vVǶBތ1No{B{? 1yA߇A` }j/#Yeo~ 솶mu1[nAKy9ʁ5LHvO'q Te0V6.]snU/ 9A.W77=\ +V__ eui۩~_Ճ AߪNmvC4H ??X(@voe4W"9{iOuV,jcn;pd]ӹNxS!)Op ⺬ @R#ԫ/7 @N[r+DdvxK/}Aj4XU[Ӳ"E)_iW;~~ .zuNy)!mƧo..t駻yLa\YxwtNyakm!L֌!^MpH93a_c0wàϛ$p8hKb@Q?i1Hmpqx/"K- ^#w8ҹ-8;`ZZ@Ε r9x~#w,e_j#E!O$v] 4EW{3,0-46p~uwQ>ȿ=W[a)8Q3 +f:D?O3.XQ6$8uƯ5"+"+ol!-roE5[F {`ʚr$Q=Dgqh "} suz`9fUD]QTgA7i j rh$st3G@g1VŠae@~iMj+WTsrB r X!|_pJS+Ip5Ԫ{gx82"Y 4HXsPB%%_-SJ|ROR{] I~L)4"]Ap]r-Z׾A ܹPw-%Zn5ewu@U B U/~`RkjAOKnĎD&0TylA,? E@dof/ȩ<;,2.D O_÷l?TW50};psv[{лNya*$'IL_<. M&Yd)6;.(u(>ؤb!xꈴƐ62ݴ8dpr di 0ou @?:8 U (py H\H􊏆9J@bzb,j8.nuaJތ73:dw(6l^t^RTWH"Et}pݪup~l޴ޣW*^{[[.|)Hqsa蜔r},j]_*zawHvp^&٥?3M0 ΩdyQ GHY.FS]ЧE}^G ާnor?l P{9ɄظجPvAp&{y82L$A5WT-`Ou 5x< la=ab(#&Ӭ:er!a0 :Aq= fDFZS@)* 3t6^f ?HAs~}BY+9|3DePf9b*;A5Oʠі s=Aǁ-v&K+]UIejc8N a;m5LG땺7ȯ7U꣠TOfک"^RA E|JeV5Ъd+o[ʤUn,[2]mį ]Nm(?B˗\ ,> fA5DAM!_< ?̝ m'b8# aEd,gAސh(YV 3n4ESڦ@`֗p D/4I)^i{-y=.#7"!=5HF> ^{ ֛ Va0 zXeWBnD'n] !GW`[Ov%p;17\U^l4}ͿQU&a=зr:NS +l w&g$+Ya0j5Eṫd7JVH̋KŐR9ԧ!Sn뜕 q(a)QcrMU/D+ql&πxL (2,-8!TUu'~xF#ALP[v'{%N x'^TA8Hu=k< jEZ +A@5TjbDHbccb5˺b-ȱh%+adP+zZ +Z `G 3n>n''7MBػ)K cN=9DFjF{5o7wGDtU];ăۂ^{먾vq{$&nġdnr*n*%.LpQvaa̫i B>]J )ӴxqUϔAMI2eVm#'"E)_am^tg4=Ssn˱K_|j!d=s?='ʙ;ɟWb'BpS8J6  N(Vqhk֛mqKjfg ?5kX k rh*jf:33Ža:&")BAaI 4^Ns!MkoQ N| B.^v!hr\YG?C R,r"RA> [ɞ<qF=ZdODfE/P?wU?Ec(( aU; {Nq'|_(JU3Ȕ3YW0S$|<6@NFp:CV ^ѷ^<fWs7]| JJca0JQ=AAdfd*+DqbB LH>&S#u $$$ 4#*}m2Ҡ\waNuӼ}5j̀ ~ŏ<ůD5҂!kAjP*Sry b| moڗi2#Iٓn~STy:54}X/70d|YH:DwPty7=%M_ rY عF+]=gSRdR Gڋ~Ӿ)$A]:nr~`|Mbf7 vK٧!5Q{ڷ1%)O# cA 0A`}nֻ`}dIkF3%tO0j<]E?jaFp|">uN 98\*ȷfr/U-%:GkfPqu P)t;/{yA"AE^nw+[XCVwпUK;vc:U7qT?|\ng@\EޠC0LZvUy 8|ޞ]Ric@dNH$&%hprC.x".xKyE`bg2`i[ګA|%gL0MgvBo= y+=Px cc LX a کN8/vȪDA7&#*L<;d#9.Yfr`#`Wڗ~ ­w n-ztoz9,-rT1 L%^Q*`Fq.'u}\(dKTe@1>f ? D{h$Z8#d[YWFF)dX%(w5HvIs0sA }lfv#o.X kMP$rU%;Px:~ dc(R!6%'_7= T ϟ cɁZˋS:*q VSX\]r8=fvdF{/Cєǽ(qX.NjVCJUb[[vӹZC"E)^|:][k7D$]ڻgƜ?svo٪YoțG!\93ʛieCރAr5\3;A;f0ug B4dCP1Cԃ~xwFvte٤ڣ(8+NyTDM{K:=.wOa~27!l eŠBd K=L}a5hXhlZ"]ʺ4g͇ zVcN.q D\d 9/ۂg}%͙`1MЇ`PUWa..OςKdi5E> A>qOhbZ5LJ)YC,-̞nGnOA Q3>6Z+ li$)VTv;;Vc>  ̚d} ?OP#%K* *|Ze1cVѣ\? 1 g <`Օ*^7G{'gl1;ɖd&3>;u"5QGYKc +VPckUҎ}\l V:rV{GBbj|e60̷(@A߁iߥ57Z _?E,  ћ N{w aa8 4+PX,6pXdI He,sc3ؽvߘ)fnS!,Usl5S}rxRShjbJ#<tM bH=fS Ua Aqpu׺`Ԫ r"he0'| \XA}T-!<l{=Ӿ<7H]٩bWSۼajinꛖ`?팵ǂEl1)lN׎nΏN?wm.89N>y /yIM/U[~a=V}XҬ2Bqֹ]AUYd vg+H%.rҲb"V-Ѧ]y% ~o/of"?G.pzm`g/dL4yҖ*n'=Z1R~&ZƩnq̣F_@-,^8łt(.H|$Oԋ~/ϟA\r Ħ^(xz ux@<+7S`~߳k]V;k/u+k)47h), ǦO3"E)OhrX—bs _Ex$'%ڃ5^^ $DGG&FOC(*Zj` cc 묭 I?XT TP.Ej?B,$!j"DS)T_]kPx ֲG`fTQ't1`q| Ciʃzve1k 8©/vg45zsy./Z8֟ȹtR4^H"E#m?m,[Yr`ߺ Vxвspgf9gOv %. J_ S&{j{{^ǬW>doHWC0;| p'ꪼjbX/ւo>3u:atQ-~~y"[ّꐒL4)N*)]֙*ziH%@e % x' Z]^R]<~bX!~]53Yanc 19XvSm*l3#Kcsl_Ľ j5)f˂*$$V$Ϊf=2_) ZC0ꫲ0q3`2 gRr"= zeD ސ746M) k/M? φ^&JyДb=R$Xu\˽J6d~&! rBƜ79U6?@ʗ<iKSK+(A`v'B_:WAXۭ5fE/%A͠.~c R%,Ltrbmeny;zR!ڙm׷A/3ۭfVC K }z>E Oꮺ;g$*CǐOzGT ~Qpz[e`askTb)"[ 0 M}>%Ȣ 8Ice.Ϊ8ݲ^{}DKbۇ?Cڒ;~~N6.7 \ G@U0" NVw'9rZ dkdT7E=?H̆dK/ !XJ",DK)1Dwk)HYR14DeBXZe9^7^ 8i5eoj =|-X {k gzn^U!y !8) _*|.Vx»`p;ƇL)6x;`Y5 8AGdD[zKPbAfV,d QEpae3q`̏, smLP-j^]}7[Agv{6|`~E[ ?x^H~ AՠMOb'"#24k$xP5e w_<quܟ03"kwB@0oo`*|2"KӬ1@w'@,+ss DJDFj8/ӖzOr@;3 ȏF0oJ5EsA=u}^_'pwW]R;@]*ƽj4Mr?1A`'r悩 <Hy"lʧ`vbL‸!lHy]vo0Cæ2"h覔2 ?'? /9pgSvX2ēx](| QI1jAj!o3_BSy@#FrxJ^MU7==>4$*ݭrWtY C[T)8zޥ>V5nwHosd4#<jr8WM_ hyvkp˹{`ճN[mtq@xg'*{#JߟqPONGw4_`>s(ӎG >f@8x+OjO5x/SN`8C0A`0 Y «,8;JSyS M{ू@WP.`@֕d [Ɉ{ԭj*^w{;j^OV*L<Sq[ ^{@1Avj͞g!}Sg`%0g qY נ7Ez+.x)ȟ* \%{en*hVdՅRפ)US3 Ԫ W+ WpFgƕ ;޼"G!)?t] 3nAod~)+acU pEH,IO#U\׽Ӎlob2I_v>qf `͵XqpG;k׳s;^o2Ǭ{OK4;y[KH"EjK__\_Ti&J*(G;zng{uFuΏ/?uAƍ۳D_q㇬pe5q= nVٟ[ g%SȯG_zz5WmU$G)ʱRoȇhh)fjcʀH~[}N} ~?8ď׀X%a(e_t)GFe[ʥb'd uuU傪[ ҽ 09;Ap8qn{ԞA+bVUpw;O%@i=B? t&l'NSȧ'I*9. J 7H 8QuʊK ďfNV9fr@5uMz$–a } T=R%RJ8{x cWG;>yxH/^>cDk s :SND\P zA,3r%9( ~T@hC9 oNs"xOD@ciӺ@,1S!0iK߀1- 2f B}K`o:Aʏΰ8!cnzA eSY{6R|~< aI5)sd q)qGRt7VYZ!h rKq"n$0tX_`X7:V7Njpmlz[hLbh[Vߩ8?:k`[OMNYR-+T_i@ԓg!8T 344naw;v] aӜ7@R冀 6r8-N?p:WNORBhŔI 7Z叠{SrZmrbX</g!?l:w͛́]0 aACp3tg{?Cڌ;6AŃ/B=vnH>8}S sn g1DSRFsWp&E~t#R_Hy82ZOn.E"E)_i=rV}A.]^>+ݯ?<?3L/|r)9:o 7|t( b!7hXPTcL2U o0k\q[`cGnD\HGZq YVsz!홍 Dv|~M=ټ3G/}s?)SVAȯK$$f&J̀`^0 Iz1:Ȥ,mJJpmYf13 }H(8'vxkNrnUK* c'Lq8X\G2o AtŃ vb+P ^m[2.gWt '!X |JV#BN50fXkg >V;әn{kN?߁`f0'x8fp>^Xm""A\jʋ'1N{̽k\-YY&a۰K R.AN7 ( 1v٠/y$k$O%jii:7,1I)r7]P+,,X~%9>? e D1 tY [`9"kq=>->&_}3̏su}ԋzr pX|'Cp>?#r-xE܂J`DDH4͠Xcp9 v'-M<`nmʚhoeSJBdU x׽8DFO-q˂:Ψg!961: Gnp"oDFAW >|HnHN~ 0H>Li`XC!7h4')I{ s -&?YN>$ %61NshD)1OD44H/^Mϐ:7t溏FKq:x#xxýݩP¾am0f a_(o~TK-,= D~}5[rn`}&,~&0 ,Ӂd8띭?p;>ho n1pW{߁KF΁\fWu}ڙO[9®TOo.E-E)RQ;Jس;m]y*FDO9[3O.W.͸{b)W_|Yٛ{1g3pr=!J ;6?#v n7LXV-2Ћ h&ڀ%SwxmKViۀS$ DK1<=C:,֢X5dYD}>"* f@7A`X\#SA+]C Ç~kUpb ,V[XB_GUu 5NXw@_-gJjNry v{rAWPTULKc*R, 7  :hU{<*1TW= xg;BCS޷yБ#ڨ^ڇ`ty0 Q_֭VvpV98 ^jCmRO)剙w1hLWyPɉ ɞ|O7{VVx'#ż`~52e/9R~N]Vn!şX^SpNCܪ =JxeVxJZh> d&~S+>E l͊]OdJ,Y!(bae_%6 Bon>j r\-Dp6䛉}#Q ;$ÞiWk Q0+wڷNZ9;ឍpN 5_ԥUʴB&- L%S֤(扣=s.ጲ+ΫS݃(;& c _vW sXyݾ%V5.=γ.3@ocf-8jYo],,YUZW@ bC)PEpҜ aǰ% rzH#a{S0XF5_砻u/myS`jncl^n} cY\#9'u,$9XRpv:Ŝ%됈$r`q k8sjWlÞyRLٝg}ji КLsy2=Kzpr V)ɈL""`3qC|JL6#&İ:%~!hK`"$O%(E- *Q VC*S'yH)R.}nN%7{ۜG+Vq/@+w Xd='gte@+aiOK}\促"E)o ;#+7gg㶎m8S__LMJߟ?rO{&kaAYs]Ly?B܌܅ߡ V0;?utC ]7K#`Xvkn.2CVyC6ŲyL?r^gE+ XKYuXmĦHoB8D 9Ml%]?OsI7D9 1 iLgVM{YsC<` ?1 M+bh+B"Hm-zZ$ `4-" Nl4 :QڐGٷ=02)K#AwӏeV]p~;C0+G61{N`^'Bڭ7]9qk(8WA;ʨBPs.HO)&5Ɏ,soʠ׫"/J̉/؇ :!ESoCX=S)HnNK>5C<-) Rbtj?k >^;`Λ:f*ccr9)z rᐰwer\[ a[< L5rh*U`2N/^zz]eoWk`=_ b#c3«`n55X'Wۛ{s)# c6UNG;S&m^_Xz͓|.ߡŽH"E?b_=vGn;7n f4[nݥ%G]\ы]viZo=y~qrTEtIG4k/l[{?AV@9*6 i5z_ry3 Cww ū[Qr<2#,<Ϙ*:rlk kw|  ?oMr :A: }^bK;Lf!X,=,ѣhU/: r!W$|˯k0t]SҵG6G5_3}ܫɗ` I1WbdB|A;D|ala/" :X&Ȥl)U~Ϊe1WNW * Ns'E`Yvd70)oͳYF>,@+ԧ Qr x^?c!PիjX۬Sj0qc+`:Φ؃@ ^ľ/lۈVJTA%U9 GXi~´*pO%Oy tRCP"(_ѳ`ŭMF% 9r7~#_C0:< pHZ̔eUu "~A~Ta:)@A P;N|MuzY]Jэ(YL)n17psͿo ~A_ ߉ti+Z\m=+߆kJ/] /sV }H(5g7@- NN2N' 0Ma,xU< ^3/%9㜄AHMO05 ƋUNBP7ցsρwX#lk&<:HZLN3<+epwx/8`/AVapYu Ӣ|I\!*Z;. yl8YLx99НA.ǒskr>s΀yt2W;uĈω7AO4`+%+F$^sAh ۿzMYMjX@/PFl/,?0LMCbX(X5N03+3POvj,xwzy^* Ov_wBZɴ Ar<ѡ)S/UuLّ`m[ ljG`j'+G՟tB_pgB 9&>pp_npDYQAYZ Z۬d:s3"y@4DF;Dgә>H4p_:{ {";i`LFBo#MxWy^M?c os"E)ogN*qsW?N\Xrv\\}[̚ezs˚UwHσS@T N32]W!56`X^Dّ 'E4`Jp؟;ޠO7`ƺ A +!Ng%]XZ[ x8AkEePg>>@38{SydY9V7r" YSt\X녀ެzm b!&! >\1)QQ)h&+[ӭ`@XR4/3,ߪge[~C@VK ; -@Qx;488'^Uw DnD^Ȩ܈DpJ+js"G(pwY [29ݠ ;@?/!x+5DÉmJ~BZ5?H r /q'')RՀ/E Z8&K`LquoG8Οr<6w).dװHp9=5SW8۽WcG?|i$@~ ։N.`x|@^'yzˇBHx0m+ L}9Y}$@l?l `iX|YF H9r>x HO^p?t?c9A6d!X]IHX5`jr 3KjnB2x җ~ό(ۭ!,:&;I l:g" a5UsU`p.0]|/V<8\WAAiU9 pCpzU썐*PV #<+uպ +@?@cM{p^p9AVoJNo'o8;^MP*↨F2e\lgo7m 7#Q %Oֱ7 w|r!Ěn=AWO_Ac_]Pczz vQnSQPuTk0+`U>Vby8p6yNeI`׷^:0M.@Ӟt%uÃN r?3?y[yɓ6ʯ7;K>|N-g⒫Yכ\Wj]ZuyM[nz~Vͻ%d-ӆj18 ~.[A+̧f*%r\ n+{ܳn  V+"bO@(ytQU +UNIDATԣzTLb 2!s@E?PUU .OYpМB7f0E_q%?[E0n@p,=6}ZX3/tc5$NNKTvӃ=`~. ?LS1U~'٩7M ,9KIBp\pBd D~÷@UUsx" Q9Y'a~AVE'N'9`-A#,LddFgAj|Q + 77d{FvTWx ___HZҭk}uĘytT?oAS878ɓre dT1WS }Ꭰ+KtՃ` ?$dy"w"A$5xw=S겺B WF6w`k6GXG_]C3&7qMmKe5]u!q;=MΕ!=)}!;^, nzcvvA{=\ d\ȃzp9@Av2gv3nj >U?!x)|!xS7&7BIn VjxJV63~*fo-RPu=@1ҩ8D!~%9/9l#;j*pZ H,x=Xͤ'pT0\&? /AbqbBw+Jt6PyZ>;@{?F$IK%b+O'k;}KHu@! Xmq0|SudE? r#۠: Y|nwV3K%%o?\A {ɠsLPT*C[@Ri>~@֬;lu^4# Q>"R^O`Rs"#EJ@ZX-Fj3 N9GBSШ6]T} /gkf; X;/XAHd_/C79sB?٥2'g'3z0$2ϚN[-Mq|N[Ğo uA/دZŎگr. f;-v=ny5*ovwrC"ԳxyÕr6t ﮘQ&k3% <=Y˓'O<_سkΞev,ްx{3g.ya=^-/5UFW@Awfii vGzҼ\HJF;Ah 58{@Ƈ2 99,1DkuÑ;`jzp0|7Ǜz yrZ 9U_S=Œ`Jc0 k&7 4]n .&ʯ!)GYܧc˲nZ!=r rE#1?h-o+n Wg7@B`մRAe~`7`TDD+WgylҠjj1g5q ?A"HH$ѱ~!NN ~'C^,!fie"x:eY% NE*|`VhʠBiEY`ݴ.ZA1 kƲ6𰸏)nWƋ9|Vdv(9S DRK_hi73DfY:7Ofq NGN|* eͬ V+IyLdi[Vm)SlFz>Ge ᓺl8)z`қzz0z~<9r|CyEH@͕&@4N&I9HOf| Ut3/Ntx2O< m`dpտ2z }9,$- fz_(AAA`ZW{ TWWLcon&)u[{e TO>%BX9a#'͟/Ӂ.'y.9 X.N>z&. {#@ !L&byrof-8 x'!( Wd#fYUwp8sB^=kd)17Mwyps[UP1uUidYyҾN  @2I5M-OBKwHmws,ފ 3>H'JQOs@Qi0=:X+:fbɜDD4)7E\b$J3 bYf9!4c!,1# L6m}m}u:^XWt5i_~ DDThO EE˧)Sjfȃ`eX#4׍t!eyla|@J _H\ 7vjهS<-yɓ?>M\sz M)зHX0vڹ&}P۟7a<$nNpg/?9^ G"\q\ׄ_86 Y #x/ ""9"e"!-"zO]ۮf?o$~JTNTqDl /g@P8H.?K`X0l rZ(䘝 op8^edK'b(#? UV;kՃ~E[zȹj)bRAޖ-KRjAapa?0fXV?+ L=?SLKN~((!*;GX r%|L15Y bcOWt ib.AvPdτ7g@ ,K kz: fni`ey]coA4`4{D8!"Z*!K : _ΆԦ)]"mY RpnYy\_|Е`2C_ Ղ6Amtp@Kz@.<+i #!q2Q(i)+7|BCȈb++AΕċfx"K$Dk4,JޣFo0G?dA P[;quM].ߊg7@UYr.)ܠ.Y5/١1`9 f9Bp=?g@nxtK~ gNI1 x%l5>CX1g8Lj5@m 0V5S#;Kv`l!ꔒ`ƙu!JcM&T ~П EnZ@M+Lvs8؋헜>LN9O Qm[;! B8+):Gk"]d@|-ޕ?_opR ',|,&1L}_nruh'ASCA 7sbU#O@LN^Od#yld7/ x9/z|}Ta09,\3w ^*^.^Qm~IunxDx4>:h fl>p`x؝!jI%k2ւD9ur0ͨmjL_>p`f p9iBZ&1(/^Ԫ+q1Cv'n0IsܜApZ(tp"աȫE(6.չs+.t1. ϊ gVFO_ZY(һ!6Axzjdwu˂ ON__/֣y~sW]ۣ,LmFQ@C">*~RdQ!g2Q jԦ"U@K 渙es rBD "1' XS`9`>A9R]Wi;ꈬb  zK zy^UY ߂V0 rnG3\j=Ɯ5L=Lw[f7 S5ψ/d?gإ vWe`O߷g-; q@| Ήm1AHy6m l6G+B(9Z 3eCYtGKг ?@< ,2_տa3;^po5 ^'D@x_}ap az=ڙ|&Ч 67K>azV$-.8v/;j 'vW%x%j;ww;DViyi\ |\yJ֗@Vאh;ɵdWΚ[;'#!%ķ@s|Z/QnG9i"_«KA?AbL?s) oo@Tc9_vH Sw3t[><)8 Mqxo;tk܅v~rGQL,8(@,u,&D[{ur|ۿ0yklN )hT?_q6AtJe \uJ*rE RoNN 7#)U.ZI|@i n'A*g\du붵&F=H)<!\.=+حAcO-MBx\ӷ v<#>`Yf`/ǻE@/  A+ G9Y-Tny8yc浏 呯!23Lp2^9muXz: XA>^RAΐs9D_ƃ+!.Q!wblt+{cf26:Q gg B4q_t:Nρ:]FNqV{ih= cߜ Z+u(DG4Sɍ[é^ k*g?qPWӀu82*{@EyQLGٴNWar!hWF.mL…[у4'\eƭ-.N<:y7\_ScWգn麱IǯֽS:z!1恻6d-3Fg6K~zf? >~,tQV:@<:|ۅ@tO> a9JXsuyA+A'`U@ӗP[3j`6 X = 'At]d7B>" ]n~ο|Bv PI4j?b&o"W/.Ao߁~X߫= tGVm1/D]ሚ ESG]=?-㦸/|O&#/4E7fL6Gu#]Ap!'N):?]Kktq^yU^B\p98=' ?'ts ֫ lp[+gvU!@ܣzF`{Ub _~! Ļ DNF"iE?*7G Dzj w@bQ[b3%e9E-+)k_^{JR`1axDyEQb!Whh苐ok ˆ*檩 W1v_.hTх!b{#<$ߗ  \K߀un]v-lA֑ߋ啎4DCmc5n$.`O9 yU mGr5®a*Ew5tUN:CФ Oku:^!7a>_r+țLt7@lo`o~3fl[X>#@pP6ȂpQVWev{0#LE ZwA*LLgg;~Kg<8hsq}@n_m`1`*cͷ ZFЯG S?!Ք)W!ewYJk;w%ӊ\\{zb|)'Oh*]{6YM+jMG.yA.v<6*Bs|^@6@?An_ ʚ$mA}Щ!燓 k[b&$[&$n6ЏA'У#^S g|W|$Z{$;_JX%{=r"O{G^VBior;RG3Ѿn@܋׍-jpۯ;7Zjʹ &^<"DAcŷ@M qPjJ|b;s?q (("ұpdߗs%{-"}FA7LS_zɉAcx0L9yD()}{>.2M~H(f|r]K#>f@,AnpO'O&3ĚDe0Gr>0 YNz6x#G~!CS0MS6Έ̻ : %y n=+X4F\) r/WyLtUVTQƒȡ%+o>i ص6NIBډ[ 埔{{!<O酐뷆[yrK%ZAF9K ;_pn4xX̗ [A\pp|M}Vsc'nW5U}>zv+8vnӝ#uqp^V2i vUg^'xl:@ 8 "G._/ AHfQ)Ďv}jBr𷙝WOޒ_˂ `N b!5EEts~̧z);S) _=)㣿|^g5`7? =`H/q/:y~]}I_} [.tD[:~d\A)^-4ukD)O{=ܞ*>҅1`蕦δ 5o}:l*#Vu3 HGc7pN]G ʰe(r9Ap{Ñ^_Kςl [ ;E0/;-<,3=X'$ةEɲNp^YYRfh^eQDCpsPtI"%?|{, 2q4e8co9jAʂf)mlw?qOJ@?nC @ 0/ځ32ɹ >3+}=!wB|2!lF1\ W!Я@ش#C*dȿ j:-`B/\&_ՙn{ T?No^{/){zcIxbcr߅Bs)fʂtXNς|]-?PM-s@#Zw@*&2LM36ŀVt#(EI0L+/膺PC/ aB.8Lz=Ǚo_cQspu5PRFT9K(Vw>{)CY - 0+fXe ڲ>ijO7,P~CdwOW 23Y<4'?=9ïA3iȖqx~0sd>5Wy}5@S[/Ȟa ѶՑr!Xr>}$ux"N;˺j7ў`[ /ڇ`Y![B$@QKxdI$Vddj2b> V΢x<d6c)zO əI'4;#α^'ϭc5TdO?[[pk Ny6Dx Dθ @̔ccjRolGst ; tA rV1@vSW ɃChyد{VUB0 6@:hւ|Asrv*f 8ٽsNdO/PԔ@6?b[bVۦ_kOBڷ ɗX%G9(>5e\o7]Dɋ0utWAR]N Spfgp!Iy.e+  @"`*#W6_Z{ 2,8}^ HNd&xWN#Au!wq}=lkVl*`j_O.\KDyy v/k.ɮ =DpC / K%Zg@'#z1U+fuLUL!)\;E':Cx%<۴ utv;o d3Fmܠ?LCӆ!26r>X_;U@'3^n;@ej$SM@8 zBM;o Yl惘+FM [[r*$  >яc,e:2<+aR@DQa} WAa؏ZMB Jdwݐ5m_p>s'Ϲv7{hh} Zo[uE@IR&E?Wsm a2nCzNެ5#kb ГaT%dȜ>¡p$&3 Y)6Yt V%+ 7ǜ}i9NG@BN&8)`pscPΉ[[yT^Af8- es0?zV +y$VTo΃;ib.@ڏ*m-!,6VG]'ө]^=OOMOK}3~+ ."%dBr8؞m/ɂpc+ 'y-vz~ EAu. vT'{΃D2s`w]A/ `Vi+ tk=Œ|ߟlM pE3R`]sA qyzl=j jl`ItO V3-zȽS''N]nˆ> 7vwْ7Gfm@dw7RQ}*<Кݴ;ƭi(ک>=,zJX@֑06o7lQT}վ )j^1CNj`*ʡ:gB$wi1 A6`{ÓAi7ai$:ksK8'N ^DT߃kFy`-Rc * O<ztX$%&:BxD3VOi*q"cܝ6 hOK` wN-{M@S¦`=r!R(:4As}/ꪦj -Y@>p[Jp181g K' 8 碳oZOHy%5%u3xsˮA5ւZd簓 {{T[+UQBg!^$~<Q,j:&!`F̽J> fIusnB>Ĕ7mu#p>u.:.d˃=mqF'?xIؾ`}4H p:/:w;]6CDt{4/UN7Tۆt#0,YHx 8"V<|mhip;S ZI-c۫lu[tg_N 誺 d YA6I,D[ 1LVS: ȮH优2y0 ޭ`6Ϻ;ĆuP=\>{}'#_DFY0Gn`vdW σprAoADUp_u_qUCpݿ/T!Aʄ踔y/$Q kHp 9VOk&TI߁_2h;7yit?(9EwX-Y"K޶ۃVZoW: oCMf&`5Z ƂbB6v=;g@ꧩm^@Ap !~J7iSqN1_它kc_r=LH _{ 1:C0oUZ2,"HZ42]3ݬ`< lGfyV-In [ɝ!ֺ^ xGw=5$+AWrB ?]Px|ڱ7!Y:/: ! "Wpu(XA_2E]N}Nڿ*.UO5گ/{{"'nd8AR7 Ռk{/i~@u0?i0o?OKXX6ȩ=jυo-A 6?3_@`GA"n`j`7eA]Pco*GZ{+=vs+ xO{Um vowWDErG { "ωT%9΋g`JkVRyӾמ @s{mqhژ=SEz.:93r?yqϓ'O!6WۚlcgwhHǟ޸xbKվvF[+!ՙљ3wdG+@9Us:C*Pw@l7@|HT$E(PJ-pL+ 5&5>j5.A%pMq `:7< jP*j@;9MkH/3_h}fۂ fk|VO(*y1/p{Ȥ-KC<@vM{ dHNNEqZ~QJ.!b2,/ A87NRj:ï@9*NR9s1wԓ'șrj>6!l>a@P=A}S 3} 7+Am`ݰr, )]89U>a'j\pyX'^]ԌNĶj&Ճ`-U?X[@̔@~IZCfDOSS S@p*xӿaesQf3PpC`jet%ʆ.y lbu< f{O/C|lR"$'߄n,8íevbB֥%k@E-(YlW~#/ief _Z]U Q(H7[$Nډ/ʾ d[t3doudKX$d?Bސdk L1l F A?HTJ,tXLH$#}s2؁}Ž*U r˩p5q6`M?ex jY\$ςU?f $\ycveC4|#lrF}jST7t^7̳|6}"8!_a0Ms(Hwn$'I> I۲-@AG&xӽ `vfW~.R@FPE0M]sYZ$^NKF9۫ |Q!u@jGBčvuHv~ȠrޟfXmI͊ztp|fWUʁKHM$lQ [ėūB{nv)}"&5@cC@6dkrSl^7Z$O`]]g)IU"碙JTM{vWw"X߭ GOA+qtqmtq ªAoԷ QG)-L2`RU[SÐr/sD(7X+~?<*b~#?Mވ{`{#axQfQr9 w@k@0~A(KWEu΂5:z?1zW w"~@^, l!ۀ,!7*gs=T74?ęl_:DSuwCȩhc\2%'.'A9 F23>rh<;x0=Әqp^X3l{F]Wo` `w@$ AJ8Xe^q3̼ϛND-Vn3Q~+N5;Ԗ)^n7W^?ԛ@]VPrr . ̒`KAxIgCbIC|;t NX P& ѧxx4Ά&ͫ͠yPV{PT)9ie+DF3 ^)W( vcSRO{w4D7 nK_B9 TzG= 5[K!{EWdJO-0󏌯 Q"L^ Ӄ'~.-H~h#~`&jVu!. T;5G-jڃS3ks6^<"F Z>eDR}[I j]zRB[(DTP,u5X 6xq]wUAtD7RdRVed) fg gea}?U^'OdS0RK?8tv/7fKo=N?{gRQLz C&_*rY`^yDP l=F?-0LSK; J )Jڢ~P;JXY@ U{sǛ2& ¬PW5zzެPN,?ǂk>e%Xb _a7-ApQ+Ug 'w\y`Z_wAvU LСXL4LHOM6HX5,ẰHdX Y=D=|?b=ȧv]!nC-x)[#XRt@WjXyowYYVU~ Რ^P>Tv1_L{{OA9rĆL`'Vk!| n5\> v~=Dۦ,I9 nWdzb.}ћa @= * }NuS;o-ĺޛ[t37'@ ^gRw B; @pdSONrq_- +\J-H$6ǐv}=YAwYa#i>gSdu@VJRvjȍ8A>|,>@f3$ep0Xb!gg⸘ ;3 u (kω0-h/)K =j#SZKPqٔeRZVS{blMpT ?}A/#L0M=`qL[?pcHE  h'zlcugc"! ^H3pF8;ѐ69j|H>ěGφ>E~~sT\W,ČĞDPa}2 wUZ NxEn;,5=ir.{ oM,p ;܊ kk- ll=E W[M!,GAe)( \3U 6;܁ ]0k@dyZXSzvܝ^^g8I9l*l+Wځ^Q3,1KX(߱/bXnߛ ȋ"/G{x~ie ҕ2ȟVVQ߂!&m_U: zjvq~ȏG-OO7'O<%6 <Jg˓(-Rȧ%W^~)󯕷޸9fFt􍷧߅HN !Ɵ A45L]08E"9[Ng'foJW{Iu489NSV~HHF(l'Z3Ao'j!x,!A.To챗8A\7% rjBz_=iM_-:<Eyj`oՄnV*K~ +%X7oBh .y Ų&`r6; >dDlN{`y ߓ D!Yo%%^3 T}k-A6 Stk@0$Xl7@Mc vbȩj'U3r{s]5D Uao/X;4~ boLo4 vs{q] Y"S,oI z d0'nN5wS#sd2π.S>4' gא4})(XW YJ^S@̔߉ʫiçÙd1_lddy7|lb{QP roRc!"~}ܴw:=!hvΑenxX38Nam vҺ i:@)}^7r5uA60b;aðKX"P.`|. im㜚 geP )oU^X< uV`m~r@ Ł/ HL[ma~])̀ՠGPd|YT@ -/0yL]<7 6*1Ot_. `XAe'U kND2#  cXSv`g_srgZ>~`3%r: G&>vN!q ;a>}-'h{)@'!P ǩu~v_BYn5/A5d D>9r)j ?)A`J\2_oȹ2gdaDeH Y gɢ5'vް;#3ʝ^ё ?03̧f>ʦy T9Uƪ aۃ9on AʙhP?x)@>*ʉH3j\T}rՂѿro> .'O@0/ϰu7 AQG^qG4ojj`}j-i6? _Eȅp![ e2?+aXw@/ziTwk`͉GA SX`S@tQDtȲy r_햛 N{;TC0e̽4f9Ae*gg]LW_/W@YmE-.سo J "<%@ɷ]븕m<n G]8.ֳ  V^sf-: +b-C=5;v`mQjM & 纘/j76k=Zx3fFԗ?x@>E__/j* 0rOIfRuo 5_ڝ| NsĝBdbF" s v=JȹD;ɽ=֋v2!?o]AUj /Ik 8.k9~5S"a:2_ؽ ˻ ZxLԃȋ'!9=9>9XH+PKeUDyqB [ȧe{`i}⺌6M2 {uEߪ09HT"(  (HPD$H((QE%HA2$ H0SwWcc^?g}V}p]]j|;Чp] ( ty_'gޙz^BdfdX#EK&d=U-{sUc jEu~ HMNxV4U@Q큪hs&y  ?Yn[ $%&EAO~i CS_ dpҝBi Bꨔ)!{"R-74K _E>VlKI)] I?qٛ!VG"H܎b!9q' c9~ bt$j5 ޡMTp[;z.E#"/Daw^* 0" ue#J =_)6Oy^M `z_`9Jm@}*oySA Y[cOv1X]r8c bDcP4W@0L S #3 L;ژ@T!/u+7DڦtsS+^7 @k=rtX!sQ֖(±D,̛uZj bYyW92{!.1DgLa-=6@*dBhS(YXVEAtD/ed~;$g5:׋jSK`*Gwp?;Fk^gLWyJޒg"L);SCDGFڃWyeQ ED_sʬ07@%t{H yՉlR7@! (T n ש-j3G~p?v^vAbnr*DF?.ޥ["n׸E`,r,+KFnJe[@6dWp78W@7Z /v ;kuA-Ӝ 4Y vw{6$'$wջ靆ؗc X| R52~pW ]ze-]υr^#T#!TX$$:$΁>Os@F'$[vtg8>;xi|pgAMq-NPY'T]$sĚ<}#Ȧ$>iV}PU%5v9L()_,|;f%m $^o28s/ Ydm .Ab!FN: &g=G9<֭}wĜo矹fi]Jk~*${\,%[;aCAhQIIoE~QdQHq_^@uÐ65}dz 牼ߓ/@08 ou2g{)W6=)ZoxW{{ &y)yܥDw0r{YqKtN +Q6qT *C~+7&{);Gu5馀x&".wN[NT~yC bޛɲ?vV ܢ5͚o[̢2C c5?#kC@w^ |N .K'}:A[`כ4 I`E6-|Yg8E&CsS'xY`YV^ʮ?^g ^ԛ+e{J*|ưA֐eYm3Ϙ =En|,0vBke:LM@E D5%BM"k@Nj'(jpK!?AVW&bp/*` $aȃoy0թc*M-snb\ d> {,nNUSy7!/=ôuYZPNȩ/І'yP;~78/g:/gؙg!94^3:*2V&j@DrO2 ;]ż d]mvz.i; < |GV[9> ] ՆppH+ _ eSj nmg8\P=`5LMC0syf bX#\'NCFtoduZQL@&U2wi'R }ѻg]sN|( }GO]9rٹo|J*:p`{B礏 k{~ͥG{9vōsE&ywp7ycȭo{2e~fd?bKe.ʿGUno"Vbrk_]_Po)[Ug-Ms&|@K2MA\K-HJvKHYd3Q@yp?d ~(n `ژ r޿ CBs@IJEio&AUD183A\e5\5 t|9M,/%T ڋ` Z@EPqs_/gsTP@P(<vv{#ީ@_0V%@ZTq٠s&e *'Da, j\ VϞh冫˯r 3v:$ND'l)c6E,Ag y۩>M =eBʚAgU7 ]t1O>x'xVom[{`F½# |tn]Ng%z[u^-=*0.A`;명~_u`\~S= Op?/_Ax7l~7shۂ^AT;pw?l2)@abdWa0PdL!ylny } bx]0J1]n.ɾ^cF"M< B 9w[cZ`)=i- YqȯV bAX`y ,o7t 끎)+Dp tW=Lbh'>X7/)>VsYNzaqI^/gՇZ|iRG &* TkK6#\:X~`;ۮa_wBh;q·YZs ?H{zB}m?nܝU_ 2o"G8҂n{DĮ@W9$>*BN捌~x%:%'HJ Ɋ4]LgT'Fnp!Ep8B#`?tUVqò,SN> 'BUm>b~CWmd9HcxG@\yE j1}!_} ˠ:r"f!7}fޚd;M彖jyڦQ>xt㿻#G!;7rj^{JWۂNj|E.8uȡk㮴M3/_.ޠ{7{+Gg Y2ȴ!6-y2g'$̿wvWue`9SΒ@w!}JZs`eYE" ^ AJ<#GC"ڲlxN4/)PW4 `kV@`|jt 'OtPij*^1BV^5Дt9I%d GTz=u V4sz >%> 1ԫ59pZb& .@~̏UN}JkEf`}c}63 Loy3 o`@Q$*$D"G`wt]S42%@~:Q :\t1[Joy}&:{XU%Ȳ2&+9XYSt6}LOW?/bG%3ZVS!<0 Rܹpލĵu1&sh'G$oB VmAn~f$9B*|x`>fy- qiJJ KXwd(q]## R7R8e;nuk 8+~>bM="<@syr%o4O*| c$j&$Y Хz/g Bw3=AnPw <ئ;!L}]R?0`jOr 7(ik\#4l20ɦpӜk5Ά`K/y]&)e-A݂89=^߀+&Ut[P)z""#6n,]\/Wc׽G X#O;w@bby/9+yT>^UX B/AtO).*]al,A 8{@U˯!Y32v#ci!y+L loMNZKwք+Skw  WbfACɠ&XںaU")&Fg3 'Vpo;s)vwe)7 7挋Įbh3vo!h.`}u<׳weuvw+@lGlLJ@h|FX82UDnۓ "Lhyi%6vjfnvnUug qg D[q ! jpDHd~I7Қ'@lsķbDFE@xTxJk ?p]QxH6܉rڧ3VhEne,|jOUT9ڻ:_r z9rɇZ;G]-}e<^{a]] wq޶{_~9Ng=~-Etiz[Co91P|jՠxP QyEނЊHk^-;Wo<;r )gP!sDoYFUN^4J /?d*x]s` ȋuӺ No3p:܉uΆd.m2C`p_skπl46Wy'z :ZtUz=җ{ݛYh1z;/ֶ3kZA `^T2<a۷΁2W @ `[hp:%$DG }^k_:i} Jz`p:B~'hf"rX:5jNp!jnq:ks7\~ iubmk!+OEJrOC~NT5C0|z8/R9Ⓖ,oUT0zkat`VZf\ \uR`U,eyay`g |p;vH ?A3w0pNPlK5[_0HP; i utO>Jl gB] PV!:*QHE(.Yk7y+$%At~B1NvyS۫KxWt 3 'Yt<|{ U٪c=6M> \*O`ZLwjeAg8I$扦QTx󼟼M {@נs\!" :@hn xcO@R:Z[-!'+qx|vU]]u ^һ { !Ϯ 0dUYYg]BS1X!ɓr?Ļƾ[Avp0r.OLbP梉a7WA|#Jʟ\qV++uZ^!Np7goYm7ex`z\wـ:Yӳ!4!/2eGc<k5=޹`l#=&,y}TM6x{@w ;IM7@Q_9/Ȅ,$`wدB`1$F6e )c""XB*nvZ`116Nx1ps bQ<IO2A04m]2XV96ݵ J2ooۙ^`^2]M] -s1WڟWk5PZ _=egPg1u #J@Q< %yX Tc3dI"xxozLf5+@** E U~Q'k8/ vDvDYƠ,zn)[_]hHߙ/8n[pV;ꎁW Yp8:[嬁`w/ b*b+ ׉7APt=WCEeƔ.iSжDd:OA\CO99r_lîֻ]yWd^׋\xN\J|WZ,y"{+dXݷ2E!cboyAWmЃL/:Ȧe ܮf@6) j\&7=^u[=Re?[Aޑ5p9;.mqӯ U`uZZ}AySa-ߏ_į駁g6Y`8s@'_YfV-@1rSt3Cj<ΣCڿLY@nX%7mZz^G&  ='zdEA2(W9`}l f?{(|؅*r{t!=ZG2S ʊ2 ~S?)Uck2؎zMσ +h [HM37!T;F-DD/Ei_,3 dQU_{61#E;Z*[ VUaT5ŒE\73@BH̔Ix߀&;}\r(&z!>0ll1IDATfy1U}Z't>i^a e+ R |uU= !<r|M^;}N.%C g|f{xyEA@wFp)Sʀ;-+j{If3~ DK9U 2 N76y>,iXE  LAdT$-^Brfr}=~ I|L"( iҌʳ>Aֻjؓf҂Wې@'u*X6b_i~؝X <L3c}gl W9OW{*N1='E5Q/&LzN^QGO'h}h}CbBtpjGvjZ{oo Iu 2'i6`v iQtt *]yA~!Υ07MﬧB]W MS K* nA7 ns7*vW+dQYTe@vʐ7b S]:f4?Rzp=A ə {ɉ"<؜:EŞĝXa?M쎙3;xrc:K2!x[ :it:j na7{ܩ87PmԳjJ( < f8_T;8 ǭY>ϤHBݶas/ VŋY* Fo0][@(GzΪAN`b_OW̛ DL!*&g =k/ ] ?5yԊxoY܃O9?9r?؎*;ܱКc7xJ[صl^,~q?WBWܬrc :qGԽ {ې?럌;v8xߓd@G: m>sTM5D}J]pw[ _ICskjBjV3k 7?<v۽M>:& ؛^F1yPނDg,,@|$1.v#8Uuvy;%~3WAWzy/*KdCX?N3"&.BP/&qK{`֚9f>X[6vJAAS[[ T8πЙ4[/3R|ZvI([)`6cf#ЍB=|8$O3S!$:$_Hx".%~09ُgd%- AO/ik?|Sy7|l3a͜33y4N mse+m6{?7{ R'DDvK!j4 ,dSY RI[_/Us ޡYvA| u@zLҿhfj w GECtY)5dʌ!{C/A vuy` UP+pj;N)p-Q>o 嶄'.`[v.!enJ.WQVC{82 @֐5dM M6DQ-!gD;ђV~0 wEHxdՒonp7*"ϐ_L,usykRȑ#l?wk\V>տ41T粯* zz TV.bgؾzZm |2BB}C-UUY5R~`qU!+lA8-49|BcCp~rp8@/O@ ʟf5o[Vºbq*UTqZ*N|o|IMIn`-pKdUV%G#/f LUZՑj-Jg<TYW)@]g +> AyM*@Y O6j~j4GxCn=Rʄ=[Ak. 奔 );6434&68/WATk+ [ɘ: ["~ BXUFΕ+!#-]_ ʁ#ʣ[ %=iJϮ>;>"{t|=NK5pe, {A#Y Iڊ"ř;֓Mxj@ڈ@mkxǽ*`2M0 ˦.^|#&0TGuCSҔ5~`?dJz]U UQ=mQ?K0'!Ç/GR`ڙV$M1PGik if~.GaJҠOz,NVEЛ Y- [}-i>k5ʺ9`z\$]`nO ׊|%5l5O᠏BY DQ}:L7Ӗ@W1AA|Pr w&CZ ŋKɀs{f *-~_Џnw8BB֋ YE,>(^^~&f2:=?_?{{< A@f)`/σ>pˁ[m4=Ԟ{znwp@ʽȅ*z: OssA~/2u` X 搹n9bNˀgZ*kuAϗ8BvMp^wAAyY~E؛`z1ۼ I \`UR{?Ć%Z~Tmڀdvaཟ\lKNɄȿۑ`Z !HǴ D/D,3 cƽrx\|ϦN+Wh~sZݬ&8)j  $@Syd_'q!f_,Z9?&Ljŏb(F~+_7ͯ`jv$'e>Y(3<gA/Xc jDs BKCC A'H nU|}CDHr&s&d7{iyԅвםu% > ƀ}ݾ fYn*ʵ z@d %΂sLؤ(kŋTp:`wr9Ztc@!]wܕN;b y5 M NS,M5A= \ W!Z0"ZV#b8^ y@E\oD+M S~M ;'Bn;68:`}ig8CЄX$s n.[x?=$s%;%z+O~ 3fԄ̵ !18^9:ۓ-k 7;!pny@89Njb`Q{^ ꀝ-pHa}R\m.]RGj(Cn(ȼzT,^3LFG}uI]̬хAHV*7<mvsOlxGӲN,춮Wt:ȑ79=G9'yɮu߷^u|W87j^pg.ϼȍ~\Z+Ԋ0~{C2r?1Vt4Z'@P6x3h G&t"Tz< vɿ"v{8V/AЍPSEyL)sϴUڢ~'}JOk:`=栶@U* Agb6$'+&~9 Bp9yF^ƚ)Lطbc@QUu*ꇃ0My5Sg ȇT/Z7@<+tpz9w9L4Fʪd1\tg!g+b]9I4Q0Lg[2 b1_`f=7Ct_siGZُҟ\ b?dYK L?'+'J'߀`w.bx5N^-}]?=7g(+.g@WXoqR|C!h>-|f هg^-Ms2`,A "E Ϊ2.䝗|"(~_n`o؇cZ:*Ƌ-63:A(%'ωN`3,qQ[<&\'|8_@P:x >kzj"3`=fw+9[ |p8~wbfiVasAhL_p; }q}/]~~ n+<-2 b=KONѝ4"I+V5/ BPXk@r\>^Y4辺 v#}^W{o=@c]qD{YlN`&Y[i* BUQnC Y<\uN1="=ݥjΒPj7كO,6xg?N9r# z9rigﭫg6}~гN\?'҅/Vͱ7ޱ} @ Z3AY Lkҁl`-텶M9N]Y[tzzBC!t9!Uj vw%8-ރs(9R3 N`2 ' ;z{ E ϟ?=0TKy9H2='eH=vRI M?n{BCECAz\!O$o<@J-fGy*hׂ~z>j/̝f;syg-zҺ!14v֣.#j X):nЛ`O[= [3(=?j dq T'YRnQ;3;T)83 `W9@rA)ցi ҪCU`t sCH~F\  7ȫ/22u  Q=RTxH[V?s"(qB|} ?AMc`v/ޜ3씲XLho`gY~;}w}X8 n},U1lcw'@?) nAFs0YFWdEcNI`R'=3GA UHۗ>*W~0Ns Рɪ I<*/#{KBȚAV'6BwgAeKuf "FtIĶN`Q NY:dݷk}w;7L檥YJ:WMw ?  A05ROGo;!)| $Vė&~k}jn~=@p(f`Y/~!y- |&{`ŚF;Ch8k:d|AoȞnvA3l - izd_V]JG%e;d8$ɹ " +/ KYq#OAywId*8[n6eSU qC8 ]`aʹV"^oCr69dGyEUi7F~ 6t08@AR'=$5kvfo%K>J)9O/ G9b{-o)%_{{ѝ)w.7{߹zO^uup ޞyOB%!(<YUyAQB)(1B_֕]:Z֫y W دtu?!A`#\&砳L/Û=}!x 7K@W%@kPnxxOtP UNI 3AXudTgjv6fzWnaċbx T^Ͼ b9 b ՟4Gjī%,˗I9 Z <)C ] ap81~O t5Ωj N~_dB4e@d+["KfȈ-1[#sMqV=:(3!<{^\^l*3gySkf=|jዑN ^ z@p֌3 B5XmzgP j4znv6$2AubX,&=PXv.9 FN;MP["+y'A(`-X)~u &^2^Ym JW~3M&{B x~1ZVgk&_O *!72FYUD/5!9:}(_m$ kE# ʋh!`/]VTG.]q`N9A@%X3\th \#K = 9 CrJ-Ã`&3x(")E`pk8w.9z Lyvڊ vEg;j 6S@@UTU50ŢsAOf :@Orn",[c v*8+. upiK0=sczTyeqFg2n{'9Z"/}wSAk\#Goc1j_(8йyw]ɼrI:7ܒeoͻ57p;v{#2R2f~ٯew? A`_~3"@>$NU AD=Do60O4Uo5;¿sCf9f^\C8cܤ[‡Y|:1Y3SUzNAIuPAp=(nnFAwu-HMf%crj^l͂K)SCdvS Uv>N-uB!t-xD:FkUS`Y',sN{hX{d9{C`ղ%C Uzɫ$A `k ASPO$Cw  _@oV~ Eb˪ko CtC4g1J%r e9yqiξosg 2C͖{5nIG:>*АLp'XZAibm\Vbb 7rꮊIUS)e{{HD1Мݼ\zə|gey EL3k5|A  CO/z^3`m/q~`pp wᤀ,/+:{,NV~:;X|ơw.97@=R5 sA=z<19~{|I>v@B'σjzOA<+<vu xϿJl}Xp?#nzPAw^#PKUit^`Y! q(1haY +cy '1 jJ@O6Bß`IUCTg!h ׳@EMPF?@cXw5^RAuM]PwT.yWCP)d;YoonW  2zċŋA!8$?xE HL,wmr{x$'ACql R ݪ {=h'"~1[nYpǻŝO\;ƭ6)![yu,IОz˺ b(/r" 0̟`Y45Ns eBe?l/L(M`V ^>96=Ś25OzHA]v6׎t#Z9=G9_x bc>\2C=y_.׆} Kr7qf֍ܝr/~1#\ ='A[V f.KY~,fy7!Y 8{FrhSͅpF#]$/'Ur r\`f1I̧dezTaoCarM1LsP*侕L22e,j¡ppiLy(n}=n?pvO;nfgۅ  |PZn5V~<8yK0 _# h [E 38kӉU.m@*!WAdbc[c;o V6V>(3Z_DDn$'CuePˆxo-g&j*٫ A WM#ɯ~noї!T z~Bo:Npqʃ˚gv#]འ 0%IPT5 wɟa`ifjb>ed D%P5UV@0HC ̧8ܝ^LF~uKI"] >ZКVq aHw Vv09bV[M`ϴgYA3 mX[vKڗ@SbMs=a7,֟Z{"VThP^3M;T)+ R #n 7ض]ľq*HxWSY"n̻f V_k5duY_}QѷxAk5k/8۝;N*$$xXX:Ol6<.{?i>2@ԯKn`MUB2uy`B;P% */ڦy<ϻUjF"}/A]UKT6f)jLOvAVrF˂`إB:fC?FxHL̍gA\b[:wN zȉ{YܶΩ:@YpN8/)(UY଴- OWgAPX8Bp p깉PGfXc^7=Z<1Y~)UI]]?S4BdRi5b&*Iƈl-HsCoZ4螑iJl҃2;~=kAȹ$.GmmωNr]>s}xP J,̵W^I ~W%/o}Zݏ4e\o*x_X yWzE!$k VKS/ ,2=0OC@6LG# h . We0M!XV% @>+'}۹a瀥ZX[A=j& _O˯!q(;BυgƃlFA䒛2Vx+=X']sׁ*X@Txpf9%+$yü-'A8o[_| TCiAFj:N@0@_APB~x3-6[bc?E '^&=:+X rZyJofW, :=:6+Ԏ I}zqP< T1y ƃn 3r[y΁?/p@IQ`2LnSD[y@w  :A VK 8O ƃ[cV|<ėzOC2%Y~K5ANruH2]Vm4'㳁|LepׇrQZvuPU'Ng3Y5X I*?H}t@든\ Epq_\#f? C"=q;(rxJSƚ`+HM\I΄z:;7?~s,*pgwʂ(O!ek }#˭'C E1+QqWA7q(WE E>4[s\rGS>+ہ9b4kAFY^f *^geQ7XVapk!z8#&AX( AՠzP `5XO?'4q_ 9+}b+Qe^Y+KA(dfHSp~vg;2B0$[̢/#3 HyB!oOe BN_; ߃ >rZ~ݠ_L`l7 5SHmR6D@Y! p8)ltb`v<lϙvSd#Z Yy XT#*6`G@bjP ijC|NR$~YGuYkS_&ӌvb={Իvi~nuA?vO]R)fXQ+yw;ŝaWiЇ _-0 yr;h[?{!( vsAH S~?r9#G ``9Gޘrxʼ9+>*S|Ϟ1yײn|;]/;֥;ީAVI%=ݒ}b3UACUg:?MS ׬V;GTR4ʨ IK(P3ud.1NxXc A$ꉥ`V703M W{!梶lBUyF7@ RDv"'ciFO";4vw%vd3;Vi Y-|~V;` :ʶQfNf(7!^(qURH,Y{kֳum͏A@$|g_^%VU bƫǾ󮮨^sGBgC V)$6 rI+D7ţ+ *'0<;&&ij r-8_c.$7'K~?> ,@l.9 geA0xTv# `YޡC@>'6kk[|{gpr9A?xmYq gouS/^+}e5h`nŒ-@Ѝu#xczoV>ǘuk-ZTZ)iQ)FRA%ˠf37}w}^z7z>^CPYD9!?apb;;u[iBu>~P\$3J *΂o_ү<dS2iKxx:`32AlOx_0&0#L9B^dNB^ 2D>J B¿/g rqT1D*~*" b*~qw¿#\;V F%YEE ds]6YoUR}sh 7ƃ^C$[߃ npFL37*k`<1C@.M7du}QϬ ?'<_D9|ANԃJ 3oq!Cu&xvzLWM^rYeU?{ |^{5^S~]}J_U|JSgȰ_]q AMNs_'_=J#d/8?`EH0ߴ0C`xo86U `.zX FQReK+AYXE!t;0}1MvS&vp9?A6{e?z'vPQGT'H`\ujOcF~g/TנRwbB0$hO3/W{|,b-?@4o,S45a=nx%X}VF?% 䔧; R яcDDVp\\XXH<851?OFPU5}H>\g0Lyd6`)`WoW񳃘OOƂ1\hN"hĢG~`?Cb~][ h*`5j ď\}SW{o{i/_&j~@oyA5& K0}`fa=^'pSݣusL#X'oB A"ʂ?3Vv lo0~~C?fkrn-hr { o  "}]g{OAkx8@qpx+tP6G|zNYsfyu-9&SLCkx+1@Nk[gE;: &^cqXv;E!xDdO~A݃*AG4dCyd @e`9AoT;u6f`m~7CP.hT`L>XխUƯ2AApM`a0o}]P[T̍֌GAnQN9*`M;7ݬӏ*5h<`7?3PiEJ{UAM_Psv;@v ey  v3vC沙zdj$> }ssQa p:BSɟIB=O:=ZfBA6I-b۱oF;K47m{j~{/sv o+/`&`'X#z`a2,QpmV~Ah315Ý*` } Tq\[<UCuKZX$`H)0[. x3Bx )`^*aBx5p/_z?:?2d!c@ϐ!:Lܹj\5rF GXw9c޻|ù~gM}UTc @jq eD@Lot;'{͆PPP5ߺMY̐y:c'N] L6888 Bt$P'fp&޵H)⎐b2' e<&QqFV5@UM@4).s;8B0I5U 26TMcc@&KIV3Ud;2YNm P8AOR%wAYUrM4'r݀{]Z%\ *s9dYX،د ,9ko`|n2>_q4wScؼhV=Й! v+՜FksfoUiipZ t;0OXmFzr~0'm- F+yʨJU28d`gz>YY/gECPMjT! ik/s"MdM,K |$/QΘd$@؀0?4nB0.t=Awcl`&1&NgO;xba|9_rwA(seu7ߺgi&WnxA*DK0=A7' zZ_=h#j6j5^deEȧR`?o jS t1Ys\b$Wl ^Ѷi_@_?pAE gZDjo[WA&چF[6s ++Y47?~ekw:SUW_sGA*i2 )m!X, ր1a[T={5uB BC@geb%mJ, uy;pv8B*\&8B۞e ?`2KZx)Մ`mx`cr΁nYH6󖁿דA"D󧷈oz'8ϿJOLu+^Y4{ nIw^I,?DD- ڈ4.,`v>VW]+ Nv9?-|`MVNp>_ՕJ )Zۧo1ςUjZN0R9OOZ mx /WJ-M`^2mc1WHk3Уd.AcqcɭGwo_܋=F? 2d%c=C c~pKʷsQ*m'emnxcUΚ>Y HYgR7?;3M;zkGE uWAP:ytkWԤ.4/͉`0J lL~-+bj%} FA,~`5q" Чu~܍M}0qw_tLo)D}2jaV[w? I)IG2uPg0ϘZlڍA4(?2Il}Z?9! 7ޫ}^WtE5A?ˈ{~k^ jQ_ GFKAdī[cjZn#i** puA`e4A|e<?~?/rT(/CNV!O A{0+9Lԋ 0ڙuZ鮪3^M#*mC@}Q 5ѱ`ݳ!L,~Y8. %O3^ Te @21k%UmI_f^K{ "~,>"$ H8x׽{ p\0C >RkSHwם>O`16БL/bL+!ȥ~7gaPLU0j $P1f įL s㉗AeU2xbLs_wGBh8~Tʦjj|qcqxlMDߍ.yJ `/qtP14CPCyk7C05Ȯ>ECRD@dqQpZ7v@-/uͺ`mTHhtTc<0-) Kg"0r_=bŬuj8Yw(WQIU I;| Ȼ5bZx]AcGj Nk^s `z6rV lj7U9o<-ʍ6,2UQEc85B_:!fp7vw0YKvAYXW`L4b!*:3NJ ~cGC[vπ‘"UJw# )}{w&_7/f]}-D?=]|%w8B'< ek DE+SdY~ nYE?D^?s?!R'v?՟z ;Hv2}?&nK`#A肨kS[!;MP{AV=H^"TwtL ;9^VY{U *UeR!8_ ٿu}LBP0W5&QA6sm3AROL-:@'pH*Rџ=RG|b"[T }~gaD}[O߁B*?ү @ODnXIgj=EM\FYHl`3*<{h!ڈv&꯴jH ⹸%@BĶ@^D3kgz20<,A/_dc@ niۜn1\<10Z[@mReՋ$UAd\+Woӌ G1P'quZ4~( jv0U9b:/b h\o[P AcP:Q[ B|N-u Vi,1ש"9 DePՁ7~ ?կ^ 1H-y4;PU,ek]NsCv @d!0   \xxRPYF?w_ U@TK? NjE:u5v+?K,I|+d_??^'ZAhsY Pfsݍ4LbބОN0  `l0AKH^Im3=NzC$;BUJ_7j`Uޢ us6u⛽O!u\s`2Λ {,O&O[60)/Ejm{&w{ tnfe&}.`6ͭ,g[8w>`gBhBf84HX B$K}g{SF`)&B9 `l-( Yi`e_Пh]8SWΌ4~*m%%eYeY:iW˗YfoirhFSB e 2d] P9.lu.T:Jվzʍ33Snd}_}7趼:ۏ=z=[\ <2nH}n g ȫ`dWgE*L%`2jk`7ӝ N¡ -n@FDV?aRXF E`eeHrpz5Pu% M,ɉ/&> ?$} cQ/vip&;UBA>eG&;۵mAnyM)AI_b_؝J/C,&VD[3fp "Lp7 c-cw %%A(- Fw,oBڠ!6,v.2x;=} >Lw-yw|P5H"3PJ}|PcP)r$PgR P%T $qqV(Ёt2"FU>cx)&eoVY@ӋD>P:<ߐLu`.\PVlpq ym@%*TzIN+hqxӸ zK]ć ,[dY7c?7H0.2FD\!L#|ld>]^e!abՄ Nkb ; * %=N3YO40.b']bmOUY{^(\-1i>s}0/'SM;n\`[@^W/,g<1烵j6 2oT ӧ`5Y L>ޡk8pcaP VY3RVaH,P- UAY0[!\0w8pz9DvF9[>Lʮ?I2;U c1Kt /3?o,FC~b#>*b}.9\a<ڊCF7n2%b%lc T[Ye4gCu1KpN 3Ԭ ÓE!ѤYS׹ K1f`n0֛cI!0 ̷]~/7^f}~! <{!jB|Ztgz?P? zv#Ux @O@5v[e`;)h7sI/5yXMRIiikZBiuAmwAcq~/8-7{`v0Ǜh"ZY`r1ب ^pſڏJCJ&+@ $A(։M[[=#Yt,]A^EBPpIH3$$Kp |$2Sv5H1m "3y ύWG]Y03Y!mS궴gJ*ķxO:z>=!sat;DI; ,b1r^E/_o؊Xx 30j>0;Bjp Vxo-Ex {pGG6ReP#P@'wSuZo+ }J]Xo^ &NP@V A' %H=Pڃ@` 6Rl`" `$*20lz.P/ ~fl:.AЗyzD^F{p;JS[Vw3l~N1^ bKQFnM@3D4H_>0mpǻ_=^go7>O{}s5\jڡ~xui(%l#yAYV~0n%҃AERpq Ve+frs-ꊆ`4/@nMt @/#zP1+FAܔc0FY*]WTUPL)ejf1co7Vn+@,Eg ʨR>aN`ZOQX Vvx< cI}]K^. 4i/< g׿I/%ߢ j) bs 2$<$?=H{us %_0"^C}- O{>-^7i|J7@"G <g. HZJn`UNYk= T13<ƁL~!s\W3gx/7{r{TpGxMZ/R~RtJ 2-z:^=z:UC_UNT)bXz>C @/Q 7&m`fgK`<1z'4 lk'1͘ mq8 {$.Qx?Lo 1#v1v@q`}m~e SsYm΅b rF`Z )4|ј*;CHW@D|{zn>H͝#x ^Yp]ollT6*w-BR41ҖHO7|Kyg"#} $]\?3bClJt|HH0>6D'˱=oKUA+4Aw֝tAP]UuKI^x e8 u+^*ԯ tX b0C@zP1uſZ߁n.]p;Rh.RqNzMjZ)+= b5!*z% "ndwgŎΤ:09&A^m?cyd7Xg-PV'31s>4\p+l?m M_3ݘo;o7p# ,M@}Rb?f̜Vy3 d&YTfxxx"# ó1C` X)`e47[8& 4qYqVyM^Xb76Ap7- ^r{c >ҝX۠Wn~w?}A;5 Aiy}z+h_.>~ԗ고7D6GEBjBΔK;t;{9 *%Pろj"Z*%r\ E E0kXMnb5 Eb#1.k 5ԌBt8G_0Y e+WүYT!!XftP/ T=L !(@}׫Qt fmև;: $M hƧfqc8oJ82$EG[ biWߙd} wYO2+P$Jwj>aDG[G@4Kthz?HN} x4WǍxy9[ KWUnj7Pbhgh$p?;6]׬Oc Z`W_+}ݾd P$<1"%NO:06ٍz{'s J2;| 9 e v>g w_J FXex`<1*) _$F/QyL;+lfL~#?DR ;PoPtCn1;<݆O*8^1A;k7z o0ȆF}x ~G0q` PE=Q G2(_ !^:2^Nk Ufk iӉ!Ӵ̇3+j:Y35|r,b$_Qmj4!:,QlPHKp^$-)}0^hȟ0$xviPHL9{ =[T_P;+j+<^3i!4l!s7 hF/>ak1V\ e.qtq6ld>*(k3t-[S;@U[&E r't݇ZfJ{ 7d~Z,.*o+t#b ިg9U Sd!9o{??jQwZ^ή 5눕Ґ{ tm@}[wca{AT;kT.`̓oWT&qK%S 2N| :ΡY\X;]̼ zjAs1ƻ'`u2[mAUSEt.PM VW60!-nlj*R@ z o3i s˪,0z,2f~3yp"0AՀbX ^H|,ۍ+l68m ""N97@Ta9p/VRX|C`1/Cp%9'squ"zXmVO?+x4w`}a߀hh>{t'm{ rr!⎈q *pn2 Jwŋ***1@.韃X%ڱm9Y,? Db?PԾַh# Ctk{>c3;@ͅ؄XnЃ  CH`BtsQ{ijŗ(6":y7Pp+`<6FA4(趺AVoAzi۱؋@3XV^OL ;!HY,NIm`/6Y+APUmPqE<#OaLU@趠'zpVG}D H ƗgA.NLt5Зx= dLC>l~~ ݌L@Q*˃+@/FO<dW♰=z$ WKp~7ӖL1pJ;ǜF`X@~d,1&7}^I0vI;_ݲ߰^F`17ΛՃqP/{{`~m~e OgMkz'rځ/B``5S:t? ?Sg3sٹ H /+ߓYsZ ~oWuPǸmv}? wQ|Ag)Ȣju05h*măiE58 na~=,g7_2q9.$8 8pC89ėց!ˈ>7[sZ:C@,b'޷A:襪5oR0 zȑ9ȏ(9"#"jb%ZA=Vu V  ?tX.wݝ5Tԩ`汪A F=QTVUM噞QOm϶ބ .|.ӥ9O}!B?1$V{=)l$5X 2_5zUSG5CoA{?!3z9 \\ gz1/ r$92^C7VA<5jA8%rYÌm8`״G;^`cYLdmsY^M>!3" ==Xi`03@/Ɓ(" 2M=Fosp8)N+'V%?X ҍοkwY"YI .o'wwj5*:d?KFI\ ;?=\ ɲhtc7v{yd9-~Wkb^__$n{ fʊW@iLQxgV=gN"$-M잴R+A"M@X6v6;pE/?;C韦UA>h ^sv8=σ;. rZ@hohqe00 ޯG(c W¥`(!\1F|A෠3̑(P)jDF'DvAzi3|b!~ĎAd[J@lm`+D^\ 9wr:- l$4 R7?]Q*p7iz^ZFہ~ Vz'D`}Y S5Ay8%v0X|L`?S[Wq^9`EPb4"j \̀bC"TW1~,XU8=X/1حΠOt=tΣ_Yֺ fܘl} ƯYc%oxw_pSA"*Z0㌇*+BfPҏ5^U@di@j% ()ghP"ہަwB\=5z,1W$AQTv(Y/ @&a \(ՃAa{ǽE}]Xs޺A]ow} deLz Ŷb~fc1њxE7R`)+ӅN TUM%BOZL+?sy'2d??a_@V+/3ols\';@75rTPժxؽ< $cyÐmAE 3c Z)V֙BEIs2_Cf83>k Id)dQDc`>0M ^4m;q bnFAd|=O ߦQ' =; =h~mѸB;+oV[`v;d tk:N'$lĤWjFGdL7@ #x?@|-  >/+ϋ<{S) ~c'oz%>Dudc!$t3<|=9uۚW:ޛ^#M?2d)c@ϐ![g[rހ5Kl} .c_ub_U?㦺5n>9[:if&@@엨 ;Q"g{ "263,f^9x˼jPÃA;П0Iz:* =T} )#pSA$ЇU Rǯ7WtQooEYE X /u nZC ` k9tqK'έ铠UU-X D}!@Ln9)R10۹ܣt wX4uc4P,꺬* t-`X@9ڀNX}RMAפ^!PA!Z٪ 1s"묂Nf1v1m򪾪qzh#na J",/\ ib nuXKYʁHlx.+2wA฿26ʭ]ށB'1t`Q\YH.-@RS?ܿ`LQ K%C~R8r&^uRBAf9@~'˃|,ڃml!h` 괺VC] 9z qXx`4n `7Y&([%$ V?V/z BG43/ nIwx!RV xt%^tf4WIߖ^#eƞK鷁c1!2 i/ βFc\cGOQ Hr7A>M0:a4b8 o,˭p"(AA⇉{@(\/sc zZ DqqA~#m!+>j؜ <">"},% q_}h9>ͺ"ijރ?N9Oen܅^?2d-c=C pӠaf ZӉso[8RͿ?nӆϮ19v9fiU~WqpݳJDqV뒺0ؖ=ڙA[`ܕU`m5V=;RFe[s@m ^/o= ʉeϏ e*m0&Czx~ Mmz̾dc߬gݑm8?`rM!Fhnx2/5osN^XY"У+"NH="ĦŒ@=R+ %!xHUnAee {p* X?{b=|Ԃ`J0pYm]Y7]Kg ()w)`zۃDSn<*C : ~AUДT~sʼAet6I8iN)~Yg=| W@ >V'k@$y^2̲w)S  @=Voqm  : ŠIc^yP 0LIDAT6V'1*TeDV*F67W>$OȜT}j-O# L=t7갶$nv]»Bm߃)v O/<`1~7.8%ZQbAWMTuhK ֩bQm9.o%d|"kMXN1.?GAR"T/N1sڃC~^Oܗ)t#Anq7~ ]dVPJQo:~wRA}Nֿu k,2d=Cnst@'3AI:3׸: twLtD+UGeU7@DKz'|rh':sNz>'%Y@kuV; ”%I" H-@ A_0DT{ ^K 1ib-}@ݘB> c\a\phQz}u~ 0?@]@WQ^!(/ob1|F#_E*pyKY$c;xCaM0zeW/ ~P]C@]2%h9 ~}4Bš = oA nBE 2πDEQDyAh_j'x{彝`|k4QZf,=QTg ><>;@ 2L=P'ݞ$fb MMtۻ}i1@8WH@MW=|G._\ XUÊ:m/n_]b$'3/A/"`Jr4_ dy&\ Fx3\p+royM[Mm̂B?L T-T5*;%DCA’ā j`uCB愎co2!|Mԑ@s׶}>tBoޜzD9OJeĻd}UW>VP: t~F7kZ!s8^F]3+*tnonPĻb@<DYi^^?QDE`>7E eE.KRtLQS@G ʈt zV ^Cde#2,(`mkؿA落4T$xji\7?;@fe SHw:E;qo=mYR6unu/A #6v?>87ʒʚ pgxCA rK|$+ V(sAg2@%ml{/X.VA5yx>=_5ҫ*k:cy"F)ό;g{ xo;ݩBC8Țr\Pk""{}!: ;.4G8?/׼} %@5G}У&VWMw{yVs/܀xxZpx ZgeS'΢sd @?ѥ9dnyYS{4uO`L?ɫr"iLV7\ʛ{fk9()׌8| gF r{G`5O 9A?` :nܛϦ=܃;!bQK{']^ `$}bY ʸ":'$K88 `E9jx-ae3Å 4/:}>\bH:oUnAxP D!"*> 7nE&R=iL5SۯZ' (րE~+DVnq-7X艳oք7L;mzly{BK^)锐!Nz /"%(AC;3n}`^fz]!',Zb(@*ՠk떺3:4À}1_,e.)fw0V rn:!84alPgc>i1xr&WQetuS}Q7AЙ~ycv ̲fV] щ%}'lQk4G06hr[Bj't[fFw5RoAW#]ď fB!| 㨱6~e>:VĊI;iմ!~@Γ`4[A`6t'BSmp8@"JB^qOG!bNx+KjvFp>sV;k5ԟ 3] VK@|OVl0\/erX ,s9?AK ^*^] Ac7 PkU@tSjn`mer"aPUTAcFl#Ɗ0_ @׬^v$x_`o r!?㌈`ߴ[ "\$hc!aңGρ<*'A n@lHlYXi]#9ɒ'fX؁ȇ1>/! :|ϏDy}ԛrqXN{S[›ŸjC!t٩i!:e(7ڭm?8$\ 7^V/7 +PL, d}Y@ \@=Sl-3qkn;j{]ř47uM-2rq iLo)8iҴCYg8`vױ} Y>|:dȐ2V3d)3h/OXryFzgw|'Un =F7 =yفQݟ_Ii 齒/47مX6T]0A>IC>G;\E"XMYL7s@D-?ǫ68NBg !#(l.6 iVo$M)ZW Fq>t-o5k]2O&#JvPG5*( 1~ ~jZ/|46.`.6Fn`2Ȓ Uƻ`%US`3G0_֛Abe0fnZ`v>tQ0O ;A#F`<0W@wS5ds }ƫy<dn8*dEM hu D=Ut?/|s"@9Fh`m7|_}Yk޸ :~]ggIcq,AB̈3`\P/iS秙 Eu Q /ěŏB8@\wda0U|}qQ& 61ϬfE*Vc PTau\ڮqD*.FG>U1@VU=J+Bf1xͼ׼`ϳRSJ Оwgl7엁`EF&ΞFi!N;&<22U|{MKv%+G10 e .#=UYR_g H^r&#H\IpBtEzZP[} j Y|[@&s EvO#ͭ֫|z55X_nl 3ɞ i XJv?p:j 3fu7 b s04 Pwc -!T9*TKk a%DTQPՐvuuj$cob7ͱ?{##ӿItHg C 2 2}:TTp]椊}N[vWfKuߛzoәOgJ>/==<D~Hbb{8hʢqx %JAmD(թf1Hk8ͪfIpvN8;_[s$Zu#[A;]pu:l^1GȪ' m; RE^&]0׍A{=R[PVuc-`m~63Yc177@mQ ZnhVUc99g$KAQ$ P,  D(A QHLy{Ujܜv:k5?w.U8 B5k6$d|N-uɩcųB|\|ģ ؕ,Ҝ_rqZ;+_ǓyUyVUVu@KXSO62 g=~ @b k1 # bld=f7m6}D9Џ0M)&؎I{tY bRdÿ@Oau輦tq-Gmk{m} L>gBvy2y]خ v>-g3)bf]<$+B A0o>Cp1hsN0w/l!?Mg ; l{S81pX0ti/B/=>ap8; %qP-6$4D8PO bmZ6ؕlcAjζqsa ^~>n}Bt)Ѓuo=r\̰m ζi ?ڤVR59,lJ{pG8:ImK+yřEƀxI\+&dž<, ,"9r) N)sijb4}l  v 83@4! )Ίf3D)qQYN>h~bz6 U$A: +DGAҋw@R4d௉4G:`^rPW>xT[E> #@mpf;0Sc!x?q$(9_:$AƯi3B攬iwA ^M Y }:K!8>tT^P6Gm}VzI4p :_T?M= ˪ fہqBcs9cBvI5.pgMi} lZOE1 R~@'>@׷_گS\6O\8~oɅrۉ+w#A-z`FyD)1_TX+p샜xlsj=rpquG@%dI>O6KBnp0|"|惚|櫇@tu9YX= ρ:*`s~$x@LeCbiby\Czw!eH< f1ەUV [xyv5L#0=M氾fT@l X &DN{-e8qp8 nUg|F+~j7X5mO(pmUoO ?{EQC^3?Vm VySm@EP/q!`bxtn+[X!s"ߝS6Fbx'fma =\&gϙ ¬`q@+=< aZxC A0_#yk;'|p gU; S\b/PTԡ }\{" DxZ TyƊox`4 &1`;b+Rv9 >-YYV/YTgu\QTd3@%'!V'V.VD8 OɏAM{ ꊗ`pb>ߊ < vn^e@$|\޴AWE2A8iϰON1%{|9XUdP+vTEVuH^P'@/C\\//?N-0-ǝ'tWςC|+/zQu!\P0)6p*yP5O@4X{ 8In(6U2ӏ}پa@8<4]RA}^?fB?H. x Cy R%D@RrE|8Ơ&,YT=3D7]~Kn=g2W. mA<  jd[G@zOe\&۬1] doĪE0攮᪰}P !D &x="#]Ew=q?};y&y8܏Z̎ρ7oqo8֩ (+fa:m^4[ATEY[F Vaɰ+W{'NGHGNCdE4x46g5NF){y% W\\r?fGӎT[Ϻ 2o9Ȫ+җ1+77 .n)1FowOLO6Z^"+‹`f6>d ۅO[^AM5y\'/9w[~DP-au~g*,#Q@?'uwHL< @D5Ѓ`] TD%H I`/#5~'^ndgde3B/K]E[xXLI6]mK/zg`Mg&װ _k?^Dz'55@WԝZL/ۚ0'L#},Nn5S 6 L[߶"09=1d&Vj&OAߜE9{oTHW 8՜Up:C lI `|v#*rx9.omfbJD2TU> bKAM UdIs? ְMG0z#rxG ^⨜%fd0`.pP8.sI]#k@N5[!H t:Q ʯmVH]! \!d YM nQxILЋ+t~` !Z.f`mH J I<~Zi~2@֗-eYmUyW7w@W'U# #@LKK7Sw'PU!^=G-lWv]&< "&\HJ4OYA6@VTe2f+k;JD'?N^g;gx N}[1yBx-$AVˬi9 r^W?O6}*j wQl9#y)NSHHN\qIRC4OOJȦhWyzng@֑r0EM) ~Z:w;Mځhb'u_ {!CZCV8Xz*&,Hd>OB4X"sd;, jڥRO'@Nd~d 8 ]CE9ӼϋDMT*y_zc܂ ˰AS[1@@ni0E3D[q]=٬Ӌ h<TjHzU8;NG:x;nL>]^C:T] "ʺW[Z̊.[%@_:?tJȕ+Kr?췍}Ppُ*lWzA j.&V'La=UI16 fBs 1sLǎ7@DbQܯ@-;@>^V!ys ˼q?' jZ-WAn{_@0u#Wl܎L]ܳe |U3>gttAt> A`kpy[6Z з-p,Xa@BT!( zAo@Ҝhb!ew2RO5L.L&oXpJ#gW*)k?r܂+Wa۾*iڵӷP|Պ嚖|^c].tp.~婏ߘiAz[u }´li#v\p] `;*]"["]5D}j(ܥn@2Y:FDW}@yX$.[itS|)@Ni QPE{Z5=MJtT g2qDue>bsd aD`k8b;cb_AvY '0٦>$~JtH\1;(cӠ'cAK`e~_ ֲ`^xY9TFt~cIMt>(`R7!s$F-7Lw{`m6r :I/׭/979/&?<voKA8QW6;A47mUg]f1›9{,[ ,ߛ&zgD8Bb=ʪ ̯z X|d@RJIrx9Ӏl3jFz&'5wދG R_] x1x=^'[Si5gM7dY]vDD0~2m>Q ?p{Hֆ N{w?^ҕ ܕX&CJp.fmh >%-")A6TE{tVU!Z0Z=/ˆu$ȴȦyGO@Ҥ$ ~{ݎH/kl+@bVw0/$prΪLXDkU PWoBRAMgI1Gܦ28J)ROF.,epocgW_zJ*q=mZ锐+W=W\vy$]3O?s-YKnt%2]~}ؒnjjLFi!aәW #;keqH(8 ։@eu%3.3Q8"K&p_k?{{/OƠUytԼ/םAROɶ ڋAλͼ`3<z7|HΔU! ޙlxxx"Ar }a'7`V?̏ 1Y޿~'_FyS@j e/w܍_!\p6:Ü? q"a+HKJԄS _YZW<Ȼ |5 vQ ;A )`+x`GoP{U  n?/}7-P_bDQȉǚA|@uu}Gcۆw`ۖSLcVg]"Nb#Ȩ.c%~V#@nV{U7W+ւ(-jR午v[N< ]^"ږoA>$Q ?JЅu9]x{b m>*tPv1R/#G|Uz(VsMpD BbX0س:KWީ3Z {NNG+\&N9nۉ$jV!!H3 qް {O$^95"DE&-%mkEHȠU̩V{Ş>Z|ᄰV8+A02d3?Nv04Ȕ;\t~ć%ǟ>f]/b=UnUDEGGu\ݐ44y{=9-7i HSJy#m}7RI]S SB)Uj^^瘚<jTUJ5V}@Saq`X^ Ă̜\-Q#ևN)tZWǞN r#w=W\VbVB ;sK/jubKn+Ue+MwRSݮɌf:^Ż GƮAB`= [Cx/< b*_@ud?ਘ*$π!FwmƃKrLo3ɾďA g 0'}9uXTqUl27&fNsCH 5'ݪR[y 9ie߆=:uAl[ać4Vb6ȶˆzv 4sɯgď #a>~t5Aav%kLߠ>*'&qF2ؓ'0|̟o9m;3B2D#>;]x穤2]l ٤4ȻN 9} 5xDo-X)j tJ7kIYT m<-61Il7@lB|p'[)e+{&Vޮgk3%à!7 `j f/EED => f, }t1ğO@oR? ˿1p8`&//LIg׎) +Wq w ('s .qP3;$Fm >ml;~iǂl"z`J)v"`>VKE]qD8- }쇼 vle0٩zi䄱93 ;25R]E`J" /nL _@uP(Ϫ&}R(,#aZ²`[wAW2ߠ!r sDY *+RҥU:K#@X6<Ή`:C}uMS[,{G0vv9fpURX^?BN3ʝepMeUC`{Hp9R*%O~ceɱ AMe7B7~[chs@s)vޅhHN~4FEG=\ryq~W ;)iuoARNg0  AdOhAsqbcb- sv#]@ LN ؖx%VҾe(zQ=缛 " Doʫ y(zЯ"usg@RϤ/'`_ l7öغv 8;^- =mIȉYSC4v*Z+& SEutsI] kE[;~[䨗\qLt8ȕ+r_G~Y})TW}^rw|7_uϞ;jԍcߥOV0ro 7K%$k"[&A,lZWյ2F& JR-b+@~:>.wkI%P'9uD3NJR!x&$h׃HRst7AΔd0qsYN ') J~ \AӠfPaRXae{%v\$72$E(mz=8Ui?Er3ӽ?;C&x? vawG ^%A< ɏV[(1FE們_IӘ&F" xEg:m@+oӠ75p:8ZEvi Ns]bb`f[[틶Duي{qA- APds b]PUO DU9S4$#؁E CSrNϾjjrA_Ћ]jOG   Er5^wmۂ Ar}z??@9O~tg3ܑ's $')AIsNcw 6 gΙ4Ѷ|R2y^ @oP2lco)N1 85"_G ߍ<>)uS Mxd D>=cy\;2[+3 'v b[b.l1% {R!uGH\W9sz1izqȪ5$Kڵ&)g8&&RaUhw!; "sT~HJN:tb~c>GR4!<y<983U1Wɤ"d1ELJ'_ZmC(1΃ѻǑSiIjksTmRː|a㷗"5>Q'Nxㆴy:ʕ\r[=K }ƀ|c`L||PW񯎫#g]u]^ᗊ]n^ҝ@{O5jZ>d ^]?ސ^P!.A 9k] b D]Zy0A2ꀲ RAi)]7a]=#@g3~{ppq;gRNzKG| A;DJz1 b26Kd]kڧ<%vig;̒ŀ9) }9 q$Mqan)i+G@h#`S>+A]W10?fKW"룓ŜÑwsƬq‚0 IP Jc2`.Ěκu,|( -`ڳiap?r75ygO݂ 4w[T0 (<t`ځ6LZ]dDq .냝g?1A >Řo.mo߶@t`,{l1[і[ֵ42mm $F/AҋM!>[O`ۑf$H41! @ڃiSρDd>̇2XFiN ~F? b*g d NsD#;wBA$[i w82 [M)3\k~OOk$Ye!?=+Q`)f' _z >HuXUm!%+JK{,ZJ1E>^/Tө!W\3厸ʕ R̬3uXXߧ+~:|VW^z_x vv3Nl>!}?Q)9$Yt Z~)nFo3!y [6 tn0F j{)iV_şhkK x< Y;0 b6?Kz$y /f c؋ȡ|$~ }8]Z=e),a`"Kf9jZ拻`[m0 =NM/~8o`AIķƷW@ Đޖ{{uSO!7.v~6a6/1nxxQ0 3^WQXDD>rdHn R%OpB8"oCѩ {`>Mg(䜎Z5m!l96b|dy1z L0!gyAȾ{> 9tY^ z4Dr> " G "\5؂vH'j&I R"jB%%`?su1YnKe ϣm0DCb0)s[|!#tZGKxGA<,XH,iR}D5QZ[ְ{[C&y7-|1l]~ $^G0[lQSDQb ֈ>t [ؽMs>zb_!aB!VJ j+ԖO;` rչzLAت$&V@"ɮ`l&:i?ÆfVޏZp?u8 OgF OKJI| Ffu`0M3Ryl-`% FP_T1M^wvJ5q~xx*`K&/צBFAQeH5uщy'x'E"C?ǯ IuszD"ց }9b[_KSЉ:) Qcb].!̝鐓;VbcbBκXɜLH4̜9M5trX,_)@^&xüwu+ FPTBVx7U@_&nS*#N 2 :U~a7yLR ȸ fg_x[Mn)p_ts6CMF$8hHn<ίCIs/]8}ma7Y̬/`P^{tXȕ+rϳ7j^'VtKQ廗_;ys>%+ݮv wcЍJ۷R1powB/{ mN^ !^gD O d5@ $O#Zn8UT;yH=疻TY^NI[s jW<6ͬ@_57AC-JuAop&9 c2/^~쳦l{(RTu1>@v @|pO 4ߊ `j&D G'[B1e`j2-i9}}c+\xw bwzn lC 1a"lSj #3d W%ϵH(FQށ<滛Tגn8Ks?H.x Ip] rm (gZC 7j 5R ՆTW(V*5((w5Hy)s YN]ԈCCNmH.\d ,>OUOuCyFJCO |4,,jPDCEv',\2EAsE4"5 }ׇr_ژ_QP^ӠЏyKBC@~P.o&0yMC x7V${'/ֵӺo|=0\ϒ+v2P2V+ǟ3'_j:ږK./?kZ׼Մqgm{^{oCƢ̓!(>>2;`¶=u I gȄ49ݜ1f޲8݇zmoW-jj|TS`feM]\bq , KmoN 5(Pk@UW-!SDdgw;ö RWq= ߁ilnm淥T5{mw^ ЕtQ/T.V!H Kϐs(ٜ5S8g $FOib y~͠n61߱\׀DMOe3HJ`˽JPjm$Xd䟖W b O U餅-HY떆Ѧ1H6o/N6l=>‚ *KӦ53u@jKjp5JJWc@+?})"'8*|=ngG40oQzMo@6`l_lЛV NRF; Ev`:REl{vZ΁sYjUQD%MqOUN8܇sW@-5x֢'0|hٯf٧QLDEa+h#`v*0X\)suz`9 2|}gsHd}.f%fE,A)ES1^pQ0a6b#}5'sЩ~ۼam9L}( |C6cSkg3Q9 }L)\Qkg@/5/X l'B`dT$ǢeA)?'r U+\>io7h*%3 a%KÉ g 鑌 T Q#2qz֡Ix>^"V[D0x)⎸vi[~PK.yi&om ΌNȫ B?ۿ>ѹї_4$8i@ۨaP1[lb1:hI%UuRW@Y epSyM?R -k9RiJճ@=?r+~z_:C<= ܜqr?{bכ曷Feܶ]S@怌E EĜVU"6]W73O("L=DEb /K7ͭ^cR""0K4[^6`lG6JP$GndB[1\ 5QqM<%;tQ^la; {l4?_5z$[xW! w;j i|w !fS35 ikRqt=;)G1^˚qŠW7V,w'[žS9;!.?'J^9/a 3NGP'rGC~gvnI+uI/-rdo{E$Uco@WխuS(~!eDg+ZW߫ W#E"oijxX;z69%y5 󙖗U~/cP)!W\I;rol{9^7.BSiV?SIJ:ʼuWzyV[7C `n5nһfΨ #+ !:Z&\;Ѿiֈb0PWAa߃H9,@.-"u>*hAN1YR٪uV8rV9vEKTT.Dl$U}vK93ݝ|A*#c Fe 1R;̵3W!l \$@?;ꡠ]+lq@"x-Gk$`ׁ'k5? "S&m`AQUA0Z_ ?1J]}Ɯ1pjrDl[YxpP,(&u}S*QSĻA xZ= B_ϔr~Ow+o"ؼy X(.G^[mc5 ,:"ʉŠ>{A.m{`h)^s gb1B8`5`'vl@r|p|#'Aߜ8g{h ɉo_M!*lWό;B4IX?";+T} {MNې6iނ|nʑPՒCS=F;f2! /m@|a.:U_dy<le}J<A{AXqHm @0IsƁ8$~`p.0]>^bI)צ"g>mc@I2 'v8A P :rȊ2E3L3!N _/ B=;DvYTaYN^Y_֒]b]SÊ81A8'd@&eȳ*q8ޯSpY`~5c@;'Չn=PtW}8Ozb zo @=1hʀU<&VԮ4wL;&9@vQSAo27 F1$vȮ{ASc`ۊ|Mȗ ޑgHe~\,0_ 1$8 8Sݝn+HZ)i)D"AW1`b3Et/]mGugH ?{{f9D9*$B(|=Of' ^37=8/-5ۙ4UNepJʟU+z~oyż;I?ρ2g*cR`ϰoSAWO +tqdKQZ~ N5_;U_%܏v#ݽnFs|!I<[s䎸nO$rIW$a j]#]|tWStihi>ILԚݰw^nHm}ѽ!'pwHK< Yoֵtb ^nE`,n]Oxkd{o%_ˢˣ{|j %R~Kp9'ՠ֦86f3flpp>tRUsnY;gYSA$ jxM"S.kmM{ n[pzܼ z} Q%X SՕ_sc!::- &MI^ b9A^h Z =9o`+kf6+&>QapxlͲi Fы`l/luEXlyޔ,f2 Iրb~)ܲ ևw^tUEvg\cxowZHRR-?B^+٫JPSA ďynmܡmwwHHW? 9y&_ȳ =2U:í .a/eiڏ7^W~6.c-K |I,nL}*4 6Y ORs gDָy!~m *SAvCA 2g@b'd_2}Kz'/C֚+!tvmHHN$ClhS` Ɉ\ NsD{;MsT *9&EG{A-2+%K~>#&xֻ "FW=zK $Xp ^.Y|Y2@tsͮ׻ 7[W[9n}s݊{e4ԴBAiOAc-8$taK`ڵv%R-b/_,_H!"P9H@zrZ@ry47)-ChGwXk} σC?٦އp87Poj 9vY#(%s 8u2SXYDr\.ew,fA ~G %ؙ]Mw;J: |ٳ7+aPoP?Z=hMJUqX'ޖ[@pN~зt#}b f ;ˊ op%ObgmC[m#A;Nk?AL=sj*Rz.@o,+1$E΃ 7G' ?;PDIBEF?yC9 ZĻWc oOS`7%uSwH ُ, [77{:}%ȉ<=8 96Ȇ`\p-Ggzf8]Lp;5f#b/s@@ _-N* o@}{= "I)Q~EKė&!OX2M${ T8r2c=H[B|'MqSfl#;Cnܺ?:Oݔud,)n_"R˛ j]aC٧lY rX&o@xt77 cS`*p{]Lbc ?7 |Q)ˆUNV Mk✨ )iBcP9Γsj+PJLA#jܦ)j32jE|I=Bw/3 omcF`{چMr\6mjuVW1_OLu^nP_i` }]9@v0#zB7uvCY DqH ԇ`i0/ 0:xoz5 ^p8: s&fRkΩ?_I ǐ8MLQMC*ɫ@lRͤ"Wvw=ʨ<>7S-%>1TKq|N>/Au<ˆ@֋!{X̜q>>H}3BNqc {Ἀ a s3At=D# 2{2T 7'7{;6C~"#z z&tR;_N* G9p/@SU7F>]GLIiv~ ~ #r!a>PU)$]oWp*H{G#ɮvuN\KfߌDf :5ʕe=W ޜf4b|w^cWR/0WzҺ2.Fmw` 5;-{N 9ccԳO@cvWK`-ɓ1r<]rEPh #)<>cڢ+:H 4U\]Pa?1O3A q^LMK@oW;NAԑm@D)hЗt>fO[ + r@U \{u@aoW+vpOx3bxD? 6|sV#:I@>*Slsm 'Bih0) C<AΤY9!x3t.g!V+yp"5#7ohaѓ@LD$/5@\z: **&+7U%Z 8)&E;^%AT'elfca^#xj=Ps/-0?@ *+N-еVHR .2`J>ŽM? g<3);gBҢh$ 3wCX".]ZU x9(̇Bbe *[%TN=+ yUJ$}}-UT]Nw7^&ٽltJA 6ī`w_m{[O쵐} vJSY{eUߪsM79I$Hh@Q@HP"AQ(Q%# J$HSC^aYu_=ƽ1=wy[o֘/?7j!9}gHS9/^B b\@$xuo3~T5]?BK(g@48 TNuU}h(Vת`wӋ&'t ]xe`H_0to3 >v[[3߀j!#?qMH3t yL1Av̈́BׂjGU]r}s׭SꖯAB\#Ƚf-Wt׀+ϲG.Sl7߸Fů_pղ2/-\ySD?i'3ZAV2YoB#9sC<}x\4}xD5QMT?9bI.,fku Bà azxMxVQD31K< M}P#A(ɉw z4r_?›}b\%g^0dd#t.gJ+LCHW&$!B$_?|b:=NAhF(3%QVlBPe"OSM7ѿ@dY~d[#%@I5v8&Nbƚ_/`u!3D1Lg=UV+ WgDbw=yakZ=e?P 9G.ؓE*&v{5u}N>;}YvA~H$4眝cJU@} +P6lUB%OZσk` * O|&g q Dy(j&8!. Jr"Q=T. Z}@uj4e0`|S$ΫK ڦ& DD)l p9gvʀLe݉IfES`澩 V3u,Zb僚ݻ ^%P^juBOFȧ0ݎnӆWL#.83wqoBx/&XرX9snj 1t/_ρإ5pLJ@TZVe$* 8:}l`X'n%ۅ ypX9 dgO`|p$X yEI$ޠ.ZrOgr Z cbzzF5v< 5фHX2߽n!`֫UX.jϷ7C(OP68!ѹɄPpBf',PS!t24+ ^~J'չTfţT`J-M Sh>@\g%uI̓/{|'WH9V:$UN|B7mCSr٭6' } #^Es'>y)d^AmHrj]!7\& mdH}Q6s㯁w[u::gsT~j_+ktmُe zwAnL10F*%=y7)[_ T TuKlBePzGAc;9 ;<kPҀӞe P69ғ`ǜJS{&¥"xi^Iu7RQk Iq&stldZFr>W,IY/ ܽT֏3-@}7(*],yioP*vCY3|޺)KYEy_rZ)N3d ̷͚jY7eHW>GMȷ5_Z|=8:THz m%8r;ĪVyK bYK v/O7{{^p_ǁ+pRA V+ˮ&[ڨѺ0[$ Xv/n/5x}zVk}7R ˺>RF!X)n/v$`,]K~YH%|qH)H5 kA+@]ںdyTvUG!HyI%EuzBi3~WgAe*Ȟ .YEA7[uep::d_{5"x*ti>X؟nuU}q2\Q}!{v]@< 7OB 7$uLkZ W̓-:J`ϰ[7 X?P9 G 3³bpf'5>h/N=Yn2V |^}Tfֳt@/лuLgO2XOUcP'b8_%eOH1 .x)a)`"z릐Br+PPA#AP?`M{[ AdY Z9X͜!bRd¥W] d.(/ vY@Eș))ׯe8tfSuz QG. ީ[-qy\gt양EW]ui`omQH@[GZ(NWyJdh3ζş)  Z%!^7p[TZΙjTB&ةH9_q2XNMdФIM!,/IG0n7o7[S!k yk);8d)#n]]u'AH3\ശBE Nr EI6{L>pΐ|Jur~3~ N2πWM qaX! 9 5\M0fo9YEOā{b8 2,'&WAVA7/'AEfA-Vm){m,f2 6vK0ɦY84\* Gw D Gz\{Zo{t2{m]t}S V~!kLo0[C-Be/F$r٩UA9\O< ;'LSڙ&^GaqFZ;Zc3 >y}]ϫ"!tu܈a<[%|;^3VT,4@s`G$[ȗ!T97؃dدZo,$C`:B5΁iΊ@A@QUWMAJmf?y1OGNw+`lGA YHn|خϮ}e:X!EkI9y'\=Yt =vQҪUC\#Aϕ?ç& ^Gʯ4*qcF#'ݫvgp7Mms='1'Pll䢅jOұ<{dXz%39 '/L~%=hj#^ꯎ/s p) ^ֳ9 uli"cϺ+BB,!#xnbßuμ~ Ve2LNr %]Lo_Jy>d/@w^to=\'|U)bpќg6j5ys yH Val oyA֖aD;b) b*׃'*L }VQgin "j8 C[$~MLr9}sD $JYZp 9BhS # @|AbP֧Wk b'S@=?o~1O R|`uX]@m]$~_~2aqB'||$&km7yTVA~N * %m,qZ1)z9x<΂Xj,"b!c1cxO~*䌎rȆ/As@cyfbL7!0X72kuؚ }^k;pZ!8+X-2'9L`,rfaM*bood@>)hOW/!/{#`絢jduQA7a`uyv-{5t1QMrPr^BYvW r }rZE#1w9`XY';/\qzt;xw0io_S}c1uD^fr. zqK B 8`1kXOدM%0M7꺟.~ _qTu "  D~)-~Ȉ<.o"zɁW J&15zך=z X7Pԇrw׹].rOPs68AWU+^g=nyt4!v1("5?DJw;d[A.-mALEfj@7 vt7L+kA>. bB (X@ )9Y K2 ?y]6*`!d26e&!R^Dx1?k?VX, ܗǷ3k|TnEYծtxl > s Ot=ӦbmxZB6`&:InW;l긏euj4{}W{2^Le[N?JzSOÓyW4:Z}H,r Axu"{ 휏#% Rlal.D>Uu.X1$& {S dkognsKy9kyf;{,ވ!eN2"{[y3f~8&Й ?@eEwBȯ@|'b2ԗ+ :C7' .v _$V+{3rV 87',5g3& }``rl nRzszniz^?U|G5@mT%tdGʁ-ʉFuj9t27/  ~_ >vw@: b9AaU#Z[i`K !y1遟iv΂L0͓-Y AxU^p->^BlM ĶFC]d|NDJdgg p{COBdBɜ:qa+z*̖!%t=4O9ڀoC`=8ÅBBΗds`WsAxYR$(cb|{@\D9TyytY]ZuG%)q_q wb(ǝ`XXq+385Z>y^Ki\w_?^wv~ʕ+F=W ]pdҝx1OE9)=q_w>vlR:SMΜeVH?8}d6! 3vi4Q]]? }PSqP/^HnΰvB6`7sy=4]M5s, ޗa o-2d0G5¤|C!sSLDK tKnn3QBQT>"Wܫ*k hqN ??|JU%!l&/=@4tY1I5EMCuA/?e{z A%"ۣ#)D`϶Wt6@-~e#D-{UT~NMƚr*G ) gCv܅4XaTU~or+(,GE9=c* &j$6 U},Į- 8z<}iwzkoۘ?U*ZԷx7oMj|Pw0qS?>l w$U:w?]6ip|}dsg_t~uY]oX2q>y|S JlvۺЋACLJW2?W# V"V}reTWfpzڿù_N4(BpKM n?R<+: fsۂ_D336 NgQ0 ku"B)Cj\m[g>TW5:jUė\ o>ίN0~bb`װ'Y\rh!9)yL^0C4M `]g(yr +w fYo6K^+?֏yMmG^vׁgI^ rdYV&?ԟ]ڮݡB@Nr.Xc&oA03|)iyr1nckB`- +[؝^[?>Y}#s Z=}b5rF7- MűMtXX|[EYVXkvo8-K(dBC&4.'svZƩTyAw+Ūn%ȧԬ7Aջ V@Ac br8vV[[/Y68L2řo0T}a E.O7ܼ3#h_qߞ.r /݊b%~u!\!qLYy9s[ sȨg/c|jslćOBFE*3d@![+9?C|Uo;; ~~dSlbKuY-@gs֪bS2輺64eţiZ9az3;[(:y߼:!LS} 4fjV& ~/+@3V @[iZK # GgU+ r0(D:Dۀ|TZI QT4aUhVz F~)S߁ie~hCDGUޓW净+qyYo0y ܀1%x妐n\;sD:s4ij% CkE"ƺ\zbO@aД?AOwzPGL5/bxOj\ tAK,UJ?rfe_eΘ9;O7jқkn #,῝u&{`y7Pwc7zx?iw7_:!&ʆ@<?xInz| /os e~r);99 bJ z>P߁^x3*ƗA}.M +qN> \t{itH4xpWzfG)L3qDTO l 8i DE1YdPQ.oہ#Sj j5PMS#A&ʝ"j* VWDOK1U}@fjw^| zugEЏGtupƿ``Wp9 jX"D7EF׀y b"&BxTE`20aTj'WpD B|^Go* aeO {9doWP`vp-X9~|"xT5Z :c&'Y\%*C_ >@NظxX bž3Q7% V+v)_6eH?њY/Ciٜb鉺!wP*论)q\\Q!3߾ G;X!X. &*X _BzD(TdmUjuQV@>!f!〾L0=AddV@"|)z+8v[z)!G2dk=!-t΅xEOe6eKH\+==WAڂakC!/`Z27VpDJ+~W_9lsguJԯ>Ϛ2^IY2dvXVRN Ŀvr^?%3҄4Mm8!΂xNR@~%%PU*}*?ChpL%#3G[ƩBj?tu/ɭrȗ325űe]n8$Cx ^4eQ5@$GnXG\jVc>zkzO5_A$WE8uwA`>5 ri.hKZIV"t}rj!Գ`EV"na7L}DCцF}Ow؝X0(hnʂ*t`[@-VQЯg<X%3<^o_1q<x 4FXHgP6$X GC[D&zj!]'UH>!z.չ+ڞ,.$FwgQM:.$|]>Utq߿o?]bz^Qŗy\+ٍN [u2RNxd^iNI\P qr@ĵ#7O?0L5!8$y%n}tG ތ܊T@@H#_^4e[栩 YT~yKrH|I 46D d)i;@:f(Tt9Jw' X*vxp`=mZyy$Xyʀż y? h'س쳎 Ύ`F̃s^lzl#|EqZDamD )Q>6〷;"[dtpsީ_eprAAqڛ 1yQ}@:.J *=`m?T_9;m@ ;(ڦGݝމ߅rW>^%xVv! nxX/GJF>b.-e ~So=j:(GMw@Rx`8<|ⴂ@!sHer#gwhY%F>C 99leh ~O Gr9%sr|  | bT([V;._HXzҞ2FR<6r;l<|S-rWr`_i8䇝U_ $L4Y֜;nyyݒϽ`"":}i'W 5A clfB&OvzХt9]nI(\NzzZDP`Вɠɯ{#~,ιS^wuUT:;衺 R &?M^`cyTyz yTsT{ڡ6_0~]u~S`K檹l._W&;AE)p;8!i`p|8U2~%dsYU> C 1;w_g>K^xU^ ɖ]_ =oO4PD<f wH$ӆ3,asf;A# tc@fI_֟Omy&`h΀LS<+`rL\,s9#e==PTzn(z'ћ9]?(tpWӟ^۩L}pgX@ke[cK$Di+%^ N[GZ&h!ylf߷ ApۯuL9VAO XԶ> A&b Yg1Rb ia^ST5iaʀX#,]ҸxA~ b'~5RMSf :]gj7ު+`uJ|b bes}{D3xzP\u#|z>9w̓5 @ ʧe[PUIU]yUj۶QYP哲!؟8A/svUߠ@!c p@д`L}–I9Gs:KW{Ra }CTv wuKH+GAk]IAgW Lyhnx{zj1G$l,ɧ@E`X&7j$~wgR:qڃM0<tYRV#lAƯODi&{_enLk|v[OW<_ܶ߷^>\k XZo {x1<)kϏ+?4kVNFvˁr3Ncg=Bǝ2SC iz`&p5=)p@  G ֋6=h(:CD?1D>QRb>+D ЁbpHtRI1w'[x R^dϱX )CM).(* A;X.X?Lm;~W.Y(KT3.!]WO!wb@n+'C Gb8vxJO$_g3՛HHb$܎nC-XV+ ˕m|~)'AvS)X6pC`S!XB 2?;"*/g. Zݟݦ~!u^1clN֏G3 ^#!MA(p/@Ot|OKƃz꠆jm`[VCPo.Ȟf 1$4BBNž`' @`PE 1]Ae2DY-;j?-A+F0Lo(Oa@=nX9>PEUiEr Y}Ws34g+?]y֨ߪUyG-oOB\r+G~s/DGgF~&4l`xmۼ_m;Moտ1wngjpx/ۃ3iЩӟ{X ɬ"w2{D:C'~Yd`X Du1DWBɠ*VW4: HU;:a0#^%߄suY_U@+mමC_3ޠC~^4kϴ@r֊%3e51g% YϘoyf ,3L3(3 z~].yq[Ze-?t~\PWOz &Ɉ0o3J k1~&~a=9}!0#90L{bڤf['5;$pswKO\\Ṣ k"!uʺc?k灜&9r>w\7d~=M 3Hc8@˿/EzV*Wm0t/Hْ"1u@}4&?F+ڃ3gU]ؿL_?y/KIA)#sΰ?;G^^x_pߙo!/5;?24`!|-j>kFEJvf3^Aw(7\怜քnީ"ܕRKg,+//A6ĻK> ~nKfYBZBN'ji T38lV@/>gpL4' GDFd^[$*@ +-朹iR-PS@|3ةu* Oƒi3ixB8Xk~1ȹ3'Ø(>kǺ>~%,8jxI)l6(0+]qGx?o?b&[8>^[wAOB`b0!.$q$ kHXD}Q]4i`(3t;&&1J& w_W{Ԁ Π:4Ȯ#cGr7ݴx `#aʘ7f5_lXb cy`=avpؕt>`k0``YX)D='̖iIo)tsseW]t9~ 1\q 苴 Z >t;6LZ~x;e3 /6ZRS W\r z\s U}"jQlϾ`Wҫ镃HrH1P7yeM:K/hhyQ [)`(TTwT2~M뺺j^SLǀ mHs]r pK]e23~G z4QX:Bܓ@4H]&bWwGnWkÝ}uQu=&,uk;s.1T{"NFvzQwg~p(!˙f,~Y%G܂BI_&.K~IGwg}j 9oLNO& w7nZ7߃>gx4AD%`)aj.y{,㛕#u@UuXI*q̷x:QqNācuWs"sFr^w|P-U4O 3 ^~k:egy@.y1YtHя+;m\ˀ}{~}gw xN s19 ^!W5 r u~:(1 Z 'Z* |]uBmWATU) fΛ|`͔7݌ i"Dߏ]ۢA9fFa4'}_/#O _)k B@qƉ~ bHTNsEoQ!й(r\/7Bh`L?^wB b^ rr ݙ.ƃ9> ,!xd'Z?C PM0Mo`ʘ*@C3A4/}5 g8dY_h~Aۙ2{W:?,k4+ate>p;zOn?TV&vsʕ(?`o׽ {Vfػ7R;vosޯ.y͝73{UW''>X`<\z HL28rJ|bWs@w'꒠[Wu=cYh-vS$RToz 7JҠ~yd ~ vppp+/jxEP[czaw_("eI{%흠U!!pm!+d1[A ~M_x4?r58N#'dRtOnj>"TPsB5I1# Q@5Iڙo~W?UKWu@Wi}; N N`ϲZ[W2wLULd+>3̟`Jәo|@ #k2)zdV_x$-%Ax|0H$)l~5vV|?xegikjiSطĄgYN\+ܺ׼pֵ? ^رft5n[&o"Ǧ͊~ȷ%*:2UskXiiBBͬ +ɶ\[ p=Y1DLwy@݅ U9\]tTsהij@ʊ@T\+ߐA.3TY $К#"M-nOh.ޡ3X-ֳzŁfE^z 灅:nWg3)  042<W p"p;g!048$0cT5%Oiځg&o{@('" HZz*fͧ`߱{ث:nyE+ }=A 1{DAxp/KD_]H_CaH9i3P|yHA.  :7U)G( ?x,X qQ6*Bn('NAbLh VY )r|̓#p[xL?: | q3>jzY=%˷/[~ڦ %üXo7bj vM ߖ]`Wy??[v!;./2 u!z5*#@qx0ďܿ *7HEħ^a%'AnGd~.v/eKoH?@ms"2gmK3\#!;nQ[鱅;s<{ pIױjspYemώ]:ٖy8{9ˬO83 ?Q!68 \Ҽ&Ћ5ng>3U1K DiY_4QlYc>S$,`/ߋ 2D +3y RL'&WUDLdl07CsL/3A-z^>b~= {c;r{n`7L# eld&L"Ur`?geB|D,eW|,< o$H~ T?EHx5JbiP"+z^'v@( {qN.[}̟ jC!!dT:*\ٙ92@,F@9{F*EKB' ։POڪ.0_in`jVNS`*XU5 88ǜ0515a>$ NP+POد@ y}G?/O0?f)ȥS9f:%?APmVu7yY&> ?}?^ hߪ7۩Ε+Wr z\=/]ػr/VD,8*P,i艧G^kL>^Oo~eU8?ߝ;K<>˸ "3C]Tg?/_t_3LW^ho8l mꢺ {-].lWg]Av߀T<L/0LG=C/miKO~ofo>`N _MA?9@@|1g.^3t:n-*ПyN@7om6zgoB @TUek7-.q/^ t+pw?;0?c晥PT@9D@gkGgCDPKԻj?ۋʠ (c',yC-/]NUҪfZҌͬg;zIX'o7Rz3gƚl%jA*BUBo٪9ƄK: fh6ei'NS d!O\[֐od|WhBģD}=LS ab&+n Q z2o([1@]צ+F:/ȷd+9TauQ٬5A,sw~֬σ&ɏ+5TTPdkXUPUQm@WEM)X#PN H읐%{P"p/e+`j{^kΚCdomM?s9V%2!vZh=MST fs\s Zhײw~9 D x]͎uN=s@b?B,/d9 =?wDSy{6$]ַ'dk5DoGuQw:; 3U Baqނ gm`+kC -ST@Eu#~wA ˜GΖ@,\Pvum3`=k4:OAk]Q-B8R' .^ ^Bl^<3J}z,.X},w(> B`뻺-Xxk%QvUwy}Ii@+(Y t-]U:pWx ռG*&L7+A)>ZlfL;>%Y<~k !qVqG{'4 Y"Ud_e3c>uAʻE֭N~'C{`gw,pn p dE X [ԷO_D!]X(.)N.)~0o/Kl~6y{ϛwJ 2IsP@|"߃W|j QKqG4k׬a,\l VM "E?)Щv+p}dfsBޙTGsqɩogO!ʕ+\Ox; ֹe]LxqqŮ߼\ʟy|Ņ?f{n=S4Rʧ=/FAtHlKo@; O!lS>o? G!t t>RC[jײ+n ЅӺx!C~uqzVNcܽ5wU,"R@~.Fπ^%@P?]`}o}ޫ;?Ooo zIV@N=`fZi5>1Pw@9fO{Li8!NA@@ p޵8_ m N .K5g? ~~r#"__TWӫ x kJ[8*Q O|[  e~ 8\ν 9" ;':h/)}`RycG/kE~_YNww1qiP}k2 P\ T%k\=C)۫Q-00/7AEyw(P\A(# )-,KATE7 tqB~ڮ71l &%'#DpEM8f&i j/AhqHYV YL16|VVπin=0 'Cg!(iax}b:$Te$tk|BLB?$^ 6 J2Vwu ;ݲ@&C`Q uz^E!*z:gf'DgD[BH霂C {rD=w&d_Ojo a AQ~ s9 UxWBSڞ]V[+"V΋N-?qs|< C`LSZQ Π 0#0.ʦ)]UfN ªBas=S:L7 %ϮO6PAowrwVvw2L7TNi\rߗ+}Wu>PzwCDI =}@;;n46~XV4vի]ɓt{۾ooVZ+mr8HNry2~= w z ?uz5:s`{38 yp.8;>S@J#S@_ԭyf6c{y&QC ^uhO[: {=7 /<큟_-7z`uX,UiƸ_x1N_IoT}CSNGAt5]4=)Q_t3 j?o-/4=ǜaPK] ȗՇojz~ğ :[_ZU{or9KFDIJF %JF@ b,H 9g%g{CwWZ9c܏ϸ/_P3ǚ=k .$pV{cMe;XcV2IB#+S&G̯7MPEUUL& z:=zӟ 9yi]^fyaƀmV}oKr`5_%st 䛠ެy* 2r 0E@lȵ+*YaY3"2W8<KESz;vȲ/s?kd!ѲһcݺS+/yV52 p7+;R/&L wbՋ//$ˀ;;evz9 wљѠd"Ip 2+X!5| n[#&j$V6Mn+ؚb;ŽVWUR&MIqZ~*c}P?~bn b(f@\\b@ |b|8{%o?A XX unc"`/YeA%{`5Z>`m7XUުks"&xq ~3@pҩC;I@R|#R CdvAQ80 漹&c2 Z@): Vg{5'9Mbck)rBv(ٞ !c!fBq@@>G;`Yl7_38&L19 r/7%Pd)D[.ћʇpǞ<>вo> Իۀ~[TI&9i[ӤQ[yqN ~ }r']Ǯ7ζ{:?r;G\}#t|~xH~R=xMBfR4uAno<  Ef0mi/냸.1؏vKXҮ X] kۀ BF*kU,c_3ZA+z[AxgA,k"yU&o51X1CAu~b(ߋ/&;R$Q(I#g/b0>o[>s ܿ~Q09V5 x p޷9]o} _;@b 5o L!k1B" j*01GB+tM=^a\xC NbF 󖮬Hd#ܻ蝁\M(F&Yk4Ќ骇= 0u_zdoh+ .Ѧoug}++K-QWcX+}fiyF ;*&9U`Z2((9XU3ZrpA<`WU)8upps~`Mo} ubԟݼ`DGD7ߡ?٫ `Mfu>vln`wQ 8"#xb?* X?vLWl3_'CeX`6/Ax!wʪԩ v>bɫSIM/Ѳbg}Iћ= '-ƀ7ӛ_ f^w* 3eUo Bہƨe p28 d@lØk` mvNwPsJ5 *7_. D(@x"Aċ'uŝlw㜴fʣHу3&&!FMd̑nGON&,}.q+(תdQh=CEI&yiI|;PcU2զXcۙ4|m]8k7j__۷Spgq_=ωdO}eϼ Cp3y q?ީ/`N>ebi^Tتe=kglU՚ Xs W5r5X5V}P&u" Gyx>O&eЙts_NF'H)L- y+JԢ Nf(#3"=܈. 8i<:!/8" @ ! X7H +u'C0M)S'/Kr7X+#`\ȞH8L io R_K] ^XN9d/ w{ D6DEWūn6lUYP 5?+j^[IY(?``Pp9ם:wէ<|zAgxXx{ J{=r1O.PoIqKY^61E\ d Jq6y#:{O+܏SOw]gVu8V);{eKX$-WT"0bx{'FNUbW!CʦY^ROhYVx뽿tjmXX*`Kk] [F V@`*B?9C#\x/PCCl/ ݏ1^-rƨ )/ہ/FN9sD&Z`VJz =ܻEwD'sb9y_@bg;vuZޖ{ {لt}sG^Ju)rZIkӤI? M~9TRo_bGUzYx}^ ^É)E%~}c;BBrmJwݥn^wLIƱ1sޠ3}|DO:ZN`շb`+ujgکS0>sdT 瞓@ZfDEG~A}+WCdYZY'bh?oW?.&h2Gb WVm`, [99`n7] 5v%g':W;*YmU/Ah4m>Sߴ0#r)Lq/z}.pfk#pfDI| khhL4Tp[@F2 g=W@DwB(-| tNǃ6`}?v{.aˀ$Y@f,rXdt.FR;s\/W A)iUgӚv^w_FCB$w$'lCSA|-5 z)299hWӫA&9gS LQ\[X/?͖-GjdIM*C$ϩ{5?ӸF~v4fJ m7\p`^hprLB8-IZ2Jwg~dWi%ys b'0YL2cҒ7AQ[r`vY%@?{`&S`"E6v ECA0\ . /*1bQ~&8!  Oq.Z~F?I2MAwѿ rEDFECԙS4fUL=.!p?`P5kC 6+Ψ`?8wA.T 2vgU L5o2ic~Kt,Pok񁗛!e^1=e{$ )^f!і> o~7<8\ 2|*e^w髠/i8 vYv l 3  \ts/p=0܂,yr ļ\? oAeum!NiH~ѣтn7Hv C? ʭ>QIHdp3Sz}QP_G]I)]Y#}Glui򿝶4iҤ= CoZշר߱}W_ugZkZzGT{s,YOÖ{<΂NP"1/,x>i$' Nu ;z +>6@gֽ0L3?ϭ'N&Pc=ZVz%:L5]VljZlg@A҃Xf[k{QUrXf| {>+dlUeUYm}o {" {U13d7eL.y{~wwt]6;HS X83Xh' tE@U T%`nOprFׁww@Ĉs"N;zh9R}**vn LhDv,~=@/4 lBy LzFt+ڏ v7F`+Yi]YWo@BA2dE,1?d5YL~6 |/~'0f(f }{ ^wLSՄvrW+ëAnGXsq$2=$[ t7-ol2AD7dFxfduk}3>^%J9)j6{68ni e~/ krY*:xTn_C_{/Ocnm߉r>^3 b2i,`R`Қ1 ׋q%5_ũ L]M}e !֛q|onh}j'ц ,Ȭ2ޏ u>;%y !2$Z&o VE+Uۃ:$_!nqLخdv9vNp*oy_R> | "QHYr `6|IUsHl*K}=U;?dH?uhLTG_dł=zמ zEg"`: ڪuػ P!0#>W b$!B٣!7g)I[5h ڲ qp%1Dv_`Mr\ͽPJ[ cǩ)3.K,e,_Ʒ2N 6;~<픥I&=iG4+ҩl9滐=&k0'~աWG~vدڽsg{j=?0~+:~/Aʣ䵯@2Qͣ@̀oLs$Dv Aƫ߀bib Z$j-<٩MF^Y51Ym2w@֖em#sjASVO#nxe)YQ$a{y^*v3LmN ~Y5<R)^ 8`jT6SGAЕqVW=(0[ǀBσ]C)z7+G .B*p/;CpRw6ꤶ[, ;ˮCU?onl@EP P U@R0L6z +.*a5/=. l&:ί3CtGtUd%Y +"?/$dayMu G_8^Io-趦)&\Y~.O2C6AvdLSSЃtYLᱩ_{!ZL=0nH58 ϲ ]n50\a&dQ^<|B?'j 'J8F@+ꠊ3vUDh^`>~ ?X_Cp d^?xOA _-UurzuD'?x9@6o`LA2oOu0C{NsLNF`o@H_.v t n@ (!9@fYlq]^e߲__nuw[doqSNh>$ $=IڞZb7G_HH)ޜx{fT0@<*AtC` *Vf5 NF1؅[c!X.0Y Q{:d 5`@I{ NV4i;4۰/O;o|?̞)_ju}xyBܻ׿wM˖0yݗ0W7I?FHZ*ϫ}~::Ko/ode9D1N4+(( B`s-L :LQye*!sSJ{%3C\pF7^Fؗ [Ɇ_EG1nzKs/K[2X' nꘪ`j0; ~\]0 H)d4L@N+uJH(2*j$K;u@P pXl/0{3 fjbHKj郝V- ""-"@\)+HYJ&^ -fj S fA3'= ֊bЀ|UvW/| ~9&&`JB̺b)XY צ3Aސ-!Px ϊ~9'1Bybr5 $xxzsan B `yb;|F}/-kVD9H,B,NY\P}>mNEﱿ8\at=7k>wGL:;ˆ?o\)yn\1|ԅ5cLyp}![H9j.&l}DV`VHǷ` V[IDATN7{2+z >}P#|˟'O&Љyj'(P(lkV╸$CdBd]d%G+xDqBc6ȁ+Y> '& 2V) fj5Z7@5Xk>k7??3`FoIХ{&aSW΅H`wdWR:uT}>~V!-QNfkXU.!{?9qO8#ni]CLV1x>'nfgDU| ^ULu^\'kt3/띁RۊlN/ gB};!z+' ^6OغppSH:w?.yd.dMӄzRs}9vҤIߗ$.H'q  y.wu3t5L>]T@J xsMFx?IuP]Vg@n x=^uOO\"6u fȷ[S: ~ǃTЃ~)uE]Fw@DE\]?䧀w{ ~7/Eus5 6;m@W* \_0A9n #8y:u*9SX?2;Ѐab,v1e -ѯ+'O;ZCnvY7Nl}y|ȝoWZzl+XP`|_]MK86{R^dϒ7d(A5t0m*X."Ks1L2Dyj @HWyK^A}. M{.i9IUpFm R==@{}; =Xa LvLTs!]hltlt@]pr9ARl;e-1ckCg A/w>5zC7!mqaW{S3=Aѿ*Z`bMiArޤJ!J.*=Г,pGE>ȦȞ]nxyjvo0 ˧2v 9p.pKG{in5cv. H74ߨ$~rݠSiy4iAO?;;xfؘ/T{ex V?8:iRkx.qH*U@r\QxSsBO,яACP[=I8([NBpk[2v%8NnL)kf5T_`x{smx^kPTMU|}B/27@c򉷀ԡ y˔pu摹o`=e{&Saci+>?շ'#@!RSMPA핳DT,=To]@0{'`1[]EQ@ޮׂ,(+-8R]<-&Xuz( . zb8%Vn]A֑E[ c` 1Z&O~vcjy;߂ӟ>r⑸rU}"" #?A2'QyTyY^# 6 {C蓼al':vƪo`dl]@9te7T={~4۾[;=>zjݺl%_J|0GPU{ɥs{Yrk./wqM=osMO3 b3ϬR 8 4X4E.UybIU q?عlApePݎ+f*?$@u@P5U ~HHUI}W?YTAe)Irj:/@0f t)Ksi V; d=Yƀ3ľd-_:>^Hnf g,wH߁/%« _%76Mw 1Z2 b~EPNQ4iד֠7kA5o9FV ~=MA{?MzR(r>:aX5;ʫҐ<:upnxܮmtQ,|_AecUqDjdMuz I1#B :SO~ SHZ;5G*z^Wo8kc,,Q:Ab$m~ iwkMF YE~ H/A8?'Y@Wջ || Aw-@mWB&HD ' Yle`Zx={wց\%eF e :j1<  o[2@Ău-;:!7L#4*R*`_ٗ_gyT3Ě$l}m/ @hZݠIr*W{~L'@^h@7e,-on鶠K\86'`k˴ x<΃ϯe]; *DMPT5U- =]Տ恹 ~`-ր/~ 18rTEyM?7~. qg]\/EX ] ݀d~Od}f볿( ~ps`^@(35v/ĔT[L\lp~`5`m} lΙ~?ƿ`xH|%t f)R U5%nB .P ZA5gtcp:/,w=.bg/ ro8'!&/T/sBk|1v,d5$@Y &lkBwJ] n2ޅ ɒBb|c@%Le^jGlhܫO\' x?1NS4iץH5'|G!Ͼ2o0)Uw?[ ><]v'>Y'Cԫ)]!} 2k"SQd^5Vr0A ev,44f뜁jPͬj h*׉wAf΀a14cگZApN`r ~/0/E#H<ȈȫhXЛ^]((&:_q#k rB>>SA|$1X`bLF jb%tqD" TGuRuCU=@ސuStN3Zgf g&``y-iz:+uHC p97عtvnp;%+ V1+U|oYARҠ²"$@ %/ o0H2gvt9%*zZ@,Sf{`>jz1:DA=Ng b$R0jb(N 'SM9`| 9o&F@ԾNH}b/@YўS 'qb2PY,s@?+.ҋX0{=dz3,ĚL W-r?2yqwf8Sl/.:12᭵hEwXͯ.%J,3_u#ղ<掃vUSَ}/-r϶!Vgܔ;<;<{Gʔ<n~"M*D1I -\yE,@tYs , ,/T3b ~yag3ҭL2]<紆`)S꥖I ԫI+7ȪҔU ^ 0!0l0 ;̚e uH]gkF{6{)-n̅\ttgC &k. <`E. lO]a'U&p>|* 扨PhUH&zYe΁zL&3]9d2z[o_< ޹+s۩J&MҖĥomLQ FԄL$eߘ썯nTlg#4}vǗtxu8N퓚#+xs۠c4ZA",$xWZz j5N`Qlv}Xf:jgPAu|t繞M@4Ļ`3&/{C^syl;۫楂mv %zB~# x[-/\s~ww?oD{2y߁. @<Źh)怹 [Vnm` 3 fɇ)RzJRWo%㋤ nꑩfY A}0Ñ/֢\Z_~cZoW{Z6kVErTƮ{e˯z$v;6<DގlL>tI YUS݄?A+˂!6]~ଵvz5>M:x׼ sr/7w >ќ", ,f~~ț~9-?O]N䷓'%w6o1d]S$ Nv5^֗ed7f:%G`]dW'UO`(%cT6X'*=ا3`R:)B+Ys5[=~g>~7TQ2hϯ`v\pQ]o<*uqz/uY=*JVyAv~+(*~+{[n 2T#0^+"XK'n##q-.k H!sl)@fgjY搙ʭZ@=S0x?+ogp8-S`p. A $@J8#΂^j9FLAm\Ч9`):x Aقl ,p^1_l@_^d._oI- fmƘO[=D5ujb<$.'}_Do Z:w-&8ŻUlvC- 8eNu: #Ȉ-X,& !=Ldꀸ.6 H%c@d{F*i ^ b8#LȦYoSլr8S0)f"ksŤ$$-?TH llɕ&E:eGCG/ӀW`f=T#55Zu9tq][_ f F8%@An2f_S$bw fHLtm@U$ @B!wщDCQբuaX9^{/g݌5~ H4(]lBʢT+ه;o4hPOc ,J)`E N;d'@`qଓbsF;NUdž@pf8K t NC9fO9ɝ :fW&Q˨UHGl1π̟dw&n^dN-!O|f r`s>M{DW@JY9*dЩg֑ks{ܥI&ui4-9|gC!-s$sWxy¾\ҿlP4~~Lra!uX@d3$pDzdT*!\%JZeAve^ ڽ:nXT5@SHTs0z3DZ* Vb mh#MhN ʧ0b g4y\u:T7'yA/=b`/dtvTOqsL-T6A<-ǽXsÝ~aL3ՃΏICoW);@ñ6nwzm0Ӄγֳkz@uJzɠ{[5z3i@mT+!%+hhuQPf=p{x`յ[dľ8IBZCR X'd1ZA8⪼ -'M+}•#3#l6MCH1zpy[H no&_hpԾ~rAx[0 JޔTX`g@W3uGV 85%H .oX=SbB1k5w6y +CHo-ʫ(2UtOsI^7`%ꛭ`~Y稸Y 3) +.ɑ P>??Ļ1Gc @dQү t2@>u>^عR:Y1M.۩L&MҖĥoeS>wݛ|lϞn|>F){BBZIOщU_RSD6ڃo# +:!c*ί`~GnjP,#sܣlLqp+'z xg/o  2F ԢA pL's͠fUjyRE;DwFGMf\9I-=Jǂ"^sogr~1 [+ t +@oZu`5rX*}-xC4# C1cb@dDdMZ*50ߙO QezzW[ARU/e| %uセW`ؔѐ_{~/S@3>O^Y)V U2~ED}IUoƛvm ?o@@@a~*nWȽfpD O2/@'d0- `zK' 7`1ͷk,p/M '"4h8*~oO7@Sӑ`m7X;}:_ ~ZmY`ޥ)tz~6A,g"ofYn.oާ^/o0@3O@X`rds /LBC:{bF] gږ͊\N,Bjge̘Ygq5Fd<vf쀩 \nۿWa*f}a7#.9NB̌lji>,ZAŸ6`ݲ&YATO2O&0P>7 y^{U?>^֣gWm'Aד5|Ɨ-|Fl=?RM+Q–/+N $,{9)ٓCxBH$uVmfTMf L=S)-gKGa9H!v`[@Ũjl0+A}gS'.!&_C W|/+p?R!(<`Φ J *Mz_2M/s<PqjzNނPPC0&@Lϱ= gê7Xc4Sbv!*I, MG q:I=Bq:d1V|M4uCEΔ#n2Szk^_oY@4A)S-3DIUc&eMv~HrU,]o9"M4iKk2zg} RWJ~U (fB#үb^%:r-f W 7; Ԧ @Fd <$ @t'7`E Vܥ-xΪ8{8$>koU3k Ă*%r7d>0z)y@gQ Ta+*1<`5@`X[zI~-#36d1YFvᘝ o60U3]QS45U d1yE2eF00@WYP3zR€~KUAZ? ЃuQ ׊ r%;9z9ϸjF`6@m0qM<}n:7#[mZsOfć fӔ2*'Ȯj ^zOzg##@d@Ƃ@,eYb Ōi#Ґ-rj weRbh(w/6&3Z'282z Π p>X'50͛y2E&J/2Bj([h88uABzf4 +ڢ fH} px/[ |^0ӏ`>11rX"ARAwKĘ9 b'ր%xok@ j#&@(gEs-]I1%i~+d!C鋗#W{Ιg,}dz\K`r%=)_ݣ5(^AZ !40b7C9-Z)_&eyu[e[8s9mjpg?ݖ'&}Ms/}w|eɭoy61u2DpFs6c`zs*`0 <wɦ ,_6YIERVoЈ0_fuj%-`{UdbV[fG?πý#Ս QL]8/DKEE:iRG@tG ,.;: tu J > ?^+lvqSl s_dw!,lߙK2_ApdHXR=:-W8P]tn? ~ƜW6,z!L;巗zaęLKwL5&@tJwS@/d~Sr9HW RPkN1sLf0CU1Wegp⎓]*xySD4iח{VL͸/fuOǿlr5~I4C"ףO'vs{b}Viҙ @]Lut&1ޠrƻݭ2l36˸jf#÷ "/<6n?v~E- @~`C`<1c0=ig ^:./K RlYS5AKE2[94wP9d$'/v΁#+`FWc?5q ECpy@=.y@uo`Ǩr&ZLb=>^75HHHq0kX+fuEkRW^M /p;~|iFZl=B+vDQ3L(:9p@>Okm1Iit_`>з#EXL;v7zA1~0MO3< _/fԗ .2ទ7".Cf*2kle[y ԛfz7?DXA#Xm6 nD  Dz`gpnf^)$1PfRn wXT#2!'k "ˢ?#(W 9c4g~G=K+{d4w\[AVE K$~(}i06`*T1ToXgn3WHZ)5R|Y\sgyjL`yLjD05|CSb/B7/YIjX;VY%&~ဘG~ON=*w_Dcマƥu-nJS?ʜӸzc iB$alI|ґ3B_.LޙwBpݬȵpΞ7b5%.<, ]z;^m935t;0y`pD@нXەzBnQn]Hю0wD8-@,NXvz}9VƝV^Y{ᓵJUvEiҤIA= {o|׽cW苻E<|6_OJ~ԤI!Z))S*gBxYRD;qt{l3w/` /o}1Ǽ5KW i[l-3w3m=s_5/\T.:_*J )bx iA;6 7r"3PJ)/ N]s;Npk6mU:`jow[#:kNZ[I`UCq_'nBEHBt;]|zy'!@@˓ ^/Le]TD>ׁX%? >lCxf\x2b( [?}JGA`d1f AqB똽:щ`2T8,p d6YJfO)ʨ ]n~/0m%X-eUYCtujE D6`楉iZh9GuGA{9_b3: f9`փػ?{kelU9 @w3x={k5;;AE^p28bI)'uOAO=z5Bʬ-!8>{@>dk&d 2: g2ⅸ#>w0QlQeAD , L2̧ u=+ nY )j j{m@~Ps+:2pd 3@SʐQ桙dw}?DNE1kWhz΢ޜ0h\cʂ,2'߫oDc$3`xGlְ4H1@ɢ$*Yo΃Yh9Fv.2k678\Dz~PsNeF⠪˧=-Pj,DDZF-~%A`WCN EL->53Yo5 o{H3ݜ1cz5^f]kYqph Е̼, ķ`ͷ[>zm zҠ{r7GШY :UZ.Z<YWBEUx8:ї7]&Gg?πJUT&d!؛ڄ ?Kuc[g0P]^L;sm45Akj9v7dT|ljwMs=7 ۲rȪkjUq(-t!IeK5;48YfAۙ 1{J`yLB,搘LUbw?!Z}343?nP\L9Qѿ}H&M>&i[(sJu=ۏ|U튷K6CKOUSDTTr%5 ꥪ'eԻ*tɜ?{ Ȭ{/賠O?L^0 >QqwP2&@) W%QH2/*ٺ fb6("ADspu03.[W ˥09f|ό]ĈLEf&Orv^t^}}$z:5@dD30MgS L~&X/J'7/ r:~l7_`2ELs,9_nn`$kUҞ ff`.ȓj< ~s/NxM)&(9CY\f {- 6xK5=v+geS1%/ˀ9j=`c7$_:'oA~Nle:jzQ~!~]Ȯ 2|$seL, 255Ll@q] uC hY?bpAq  k^f=* 2?9& : *J7 ] n7[&m]P#B5ed/9bs@eR!UUh'pW -:fձstl*7\2>^+oȎ *,(%rX`'L;μfv<"bL8b<$:_T749JܔAE^пf&'3C"  =[HO@b`~2a#I2;|fT!<ʃcJXFA~y_fAđ@]ęA}DI0=zXMK1hSO5Dmƃ(J>j598E~/j|M#SO{Ggx&0&&`@%@mk {!n [!yS,`mA54k|7AU[9 FyV!P0ysH,QSLǭ zT/-r"N8Vcs¿GB%:89]SéeqK@&ʼ28Y' d Tv dPU7U/k`2 4(t-K+U@v_ ,]tAOgʂIF-X۪>{,9ArV@@DQb%H (TP( Q%IP"(  {\G=F{}^A=jNR=Yk!qClR ʭ(W| SvEqH)ɽ-!kz"S E(ۘnG6*!5饮V[0GM{xg蕛ŏ\sh!W\>@\G,YӎEQ.㞓vim׈4@\ZGU@Q RQwۤjv˻O,^!Q ̥hST QA{FWoZ뀽6A)u\LA~Vۦ`Jʦ8)okN;w?}c@ Aah4%Fw@r1ib"v^ZxT] /nZMR63A<+{< \pYh_dZ'gí{\ 97NͣeFAR@Q!l G4<"Iydd';b' :eGl 3݋v"K`Ex1d(M1厁[湏@N{L`4yܝpCTT kWi${k趺 n@%jupPX7|bmbbAV|_,H)/tv-@ W@o򺠮 vnhj~45^OU)'&WޫRʤ3,x4gy@UW%T#ůOP~tq]A>˃la*<=DvCy}dy!LQMedls2$'z ;煈M䗵@?}qY Έ" h b!Y9YΗK a/xFO/W/@DB` [C9!DɨUvgYb;N٧ *.@)zӄ`w؋Q0f('ǶQYXu0hrs֝Q]<."ς|\<){dz !@,KԠ.;@-Z=uܠ}%)[x ~xo/~H ItIo5h ғT |dW;UT'65ܓ1vT~B* N ;qH|/]`qlU}kx{MfQZ6[DVŸ!Z9NIO QDh0Mcs;DUf+|7VTf6d|/'HN5ULWr>Mɞ9K!;>)bx[]p5]mW; r\$W_/W]T? g ck!^%Շxz|s$2 tH{=Vabρ[* c~F~e_ox6n@&=T){ 3"ɗA9Qj{m@t., ~ ! fkiU7%f%%?3|j}֥E2^$&Ƨ&FzU?@pR0©DD"ӎV`6~n&@7D<bY\z]iG`2w)?s@ԣ!E)9TEUO6bJh*bd vk c_I1梄71Z&=BWܯ;6n6U5ukp\8L5S. 8'+#O$ "ZBYID wxIZu]qb=53-N~O+n4w} σ~Tw@eCꪖ xEv^iRpaz@)ќ &;| juyFJ A^Wgd6Wjd^|(KUʀTRF0!mG6dzTݧzڳ`5]1R>yP=UE4b(]_/5bHNh70Lf& yճs"EIPvt{E\n *mĝ*m;+~e1Pn2; )F`r"bD!]g7FDyx7i.v-. oUTr|.>@=- n=+AU^Ӣr:B^7^ЍtE{B {DS0Ṃ0"b'wM9 >3*{ ۄAĻd\P_z DE ~ ~!LOp/ /SIEPOT!HDp=z˿ K*:j#G3n];j[ 'Imt yorZ@d>KfAp 9fBH'7` ՍNJw~kyĤUw{:? Kwˠ2uu_ڂEu_A˖ уK06*S}[\JaQ ȫnR8 U]󌂢]XܒUupK\c@T!l킴7.$~ *>U]Lj6u74>*q6GO 'm&hq?}gȕ+W\ JVT Z\i7̍-wӎqˁ7MũUc}L5, ED3ú;^FݔhhxA-QѰ 0cnh/aY>Hޛ|kgߑ]/HKzʠ^/!-fx |?JFe@Ӝ/ 6^+pudbLqMdE-pMw(̓^{=&։Mn [m FJz1#4%xzF=>`hLʼ ^?_%\ Eg<md 3r9T#uueuP坪$6ڽ >0F+ p? ]# +Ϊ/xtU}J?QvWJ^!/'#S@ǩ ^)oWL33Ҵ~a @JIʂ8!A֐dM PLuV [#4&n fgd.]6B$~x +%Dg];mߪ:f}|/qEuPOU7p#]5DEv 3#)kzޝ~̻ R SAY 1AW'~NO㎺3Ë  pkf=au # jp,7\^wi'6)vBv"M$@,  h8EUp\C7 AGwSxpm[ K1ZTAEip.3 k⺺zw >ˠRv z  O{{>r!q9>41NQBYXNUVwWmE_גK@7 p=(J!WGATWD6 q{\cJڐ\$9uѰh=bkY̿/,!v7^dCЙ7JBKx#&u_d_gb#rU]Г. Nc z0`@p4x@rt<ɦ9=CT<v7νރW!v {~aD#auUT%uLe vݯρms w% WU׀];H+v~GOFə r8^+m :vf7.۔uOM;0on{J\+ b(QHMV05f(7^ZX\RDuȚ &ɞU#xF 9^2L\D OzU_:s*=VNb;(W\/sW[gHa:ߘ.RJ7T/2Rc-k@ӛU_HLDH<$DL~]SO 4_;Q'Em6`~0!9| B/n+kPy/[Ϡ5P@@S{ooD!Z UeƘ@V}3.=E^y{|b*x 'L^WqA5Sf ݊ 3PRx^hp8&}YjzDM8"^jD'M}pqڹ ~F@4)Na41KL;|ig@N-_{j ({]`?1PuS^pYgAE9pq'r'@_^7.+⯉-tT*rZ/]wiq _k;@lc ck+~@S=@w2h9M]|9 T r(@|02 1u}v][k̔ץpm lkmqA<%݀Mi0YR)# >S-/Vz tei1c@KY=ó -Efj rC\/}\;̱@1- iͩ ua 4( bS`K:KrnS-BnڋAEp]'[l= 4QxIT@b((|_*AYSDYE IS/D!ȼ*<wh,J`Kl%ў dxDJClvlol8!( nuK5Sc~ ^XMN =@+]tyn%]c5ldAA3?! a˰i$DA& 9 JJ`~3z>U" ahIr;ʤQ@iJNsEzu|/puv>~ZwFWU3տX?} bur $"_. /$Zߊ{I6 b"!nL]xbY4HV+X:GX'.ʭlt;3!|2FA>Y(UH ^᪁xM  ,Z|{=@lS$nί,'?o>7zwsʕz=d&Ϧ^7,n:ɊKb}FLkr03]K}\=>љ_@]z/EbZ \WwHl= Aa[`g(ϛyŐh*Qp<}2:AƷf>/ǯCDk) @hrAE ȶ:r&ôO )AO1=I~A|"ljX,Į wrW vmfoڋW{kS޼5?If+Dţːy6sn puy5pDDx= E_9 L>S2 T=7kuC:QKDbvAW_@T`q; ^!DKG󮃾lp{yko5 #4e ĚLJwK!'=4;?cn2ɠ~r7Brd߄@?3 n窀%g Ix^fYVb' v6~"v̳&qw5x _eU5D~V+>u Qa8s55ve??tbϕٺ[rNEor܀ZΰdT M;huTBhk\=w5s;<$Y>9N^/_g1N]0[m1n =ݞ_υ `M D+h,;4g!:o&E {I[`A&vMx`jf/JvRjX#:.#|̦ܤ O0g*l25v@+'2Ax3l<)j j\[ c^7] ;}ohp  k7}Atꃝn ` ix@嗍T + yod Ћ2=<M2`&0D*mXq VQRlDT=*|vJg&\=o b bc/{#s?<:`)n릁~QmA `#3f` Gwc  o P nFXltO&^#~8.~9XNwuX~@Ϫ׀by/}b XQM# D}A O7]Z&oI@t6:]Ł<4W '3/V-hgQn|4r9=d?ڢ+((< lM͠3F:ӣ5ϨE2e_dopuwPk۞ r3SsW Y#|S:^@ ߃_~oQGK b{drLrY >[!-1lKߚg䝓g])ćch+1APq$hF0B|,IkBWz]5\imŗ['b!abLZЏU{?0T7@:ΠIg0LEjqA)eU>p+VQSܴ3%AmVPkj PrDUOwS bGc|!Fƞ2[N.AJ X'F-ecN*_BT;lքprA0 iN6 6ZH]JN~a"* o ߈ >`O,{ͯKs 7 x񺐷fy7@\-Y&47!\ AT/}NU)Tm*me;Bt:Z[VՁQFО>`% XazXdDt d}QY6W~k%އ =LW v5y^8RF`ڗ͇ Ί?? {+gO-= [~NW{»{.b,ڃP窸8dNnaF4pyr*RT>xJHIrd֩R/AV"Y!Y'y%YlsG@T˶<́xXxO%E>y7p]dClJ)-}2Hۗ~oz>J\XX/3͇Si/? I? !^/?3GL7kGv_z<πkI;ؔަSlt'=Z X.>ԩԵ/k겺sTmUL;}#b=@ד!D7t5x/ClחWhv.'~.^"4:[uxOwWʫnd|@bi_+8N~ғB? uXߥ_v{^1gLYfFYiN#ѐ 7,|3ɍ< +Bj\<2e L~mN% ]=n<#z:3gt7v='KƳ{b_~b*#0ҿKVt33 (iM'HᏠΈGCˠjki->Eϴk n2A/xȼ7g,FA?\ WIT_-@.3{:`ouu=ɚӷ\rC o=nM?TNٷgͺ\t͑aKv{Nڻ' uMe{ֶ%>g{۞v2  FOG_CN丬4H.^>.zeSY_ omoYlgؽ m~S@WA&*OzK%_ ki??ωK4xv3S!. ֈb;zz* ըl _tA Z3d-YVҵt! _ѻTWmO`k ̖ uGeA45euQT2ŌQnp?Ľp++ɑGay>bN;pkp8ʯ m\٠T3A:|mW]@VV`YQ2*YDvP .~Yu/:~V߃+8]9[5DA.<ֳ:%po5f\_{0DvxxJ̆}a̳v Qz1)kż^ B<3'Z<+w 3JEl*( FAP=Eߢ2N䝢rr,X!$5 qDG!5~OQzn5D-辨b(|+]IuSwQ@HQGdC>vc2Sހ| ^ \ӥWI+HrN&,7U^hD]MD+a_PtW@NuyVn4u媹VZoT/*M4<wڀͲF`[\%@D|t'f_z5ȚꄼN?wAnliDb'I}!~9~>a7:-џfЄxA2#U!|!': =gm̎{˃jD Zǃ!l*pwJ62|N[zn_ oMؔQJz[/AB!=8h vAQ욮= מV2-4q\ zJ/5v69 O5Cʔ;'Lkn ET ~^ Y t(ܤX;-_ }Yrjة`Nb>#LqR'Mkyd[؏O}aO3C{+W\A_usLZᗢũ/)iU?7Dd'%ƻ! elE8(2J b~C^: ~G >/-Mȳ=< ;g8*7 oy <1][^ ?`VRVOo^ksν\y@U!D!iU!46~Pl}^~У[ 9`3v=n7()nes\ ~̿Nmv+رE:ؾf}sySt7!3c@ŨDIB3 ] +kC_9AŠv%q+#\_ә .+PR|L> RS%9F 5`%$s͒LGlڀ_5U.E)eE!QDa+jO+]w]vꮭ,uu==j9s@p$(|"QN;@=nS}3ܼj:~U_ b'ћ<.BP*= 6~g-+=[s+h5DFQIqS<Е`B"κXBJ*BGʸ.qJ\ *|t=: vd_-jNwjSngAD5?GuAy |7 UX< =q)/)rӳ4>_AjN`CN9!Lqw&nзj5c缤Wr@wy Dg0E 2~5%xzx_wy=@?У@{'V3ʖ)P*GS Gr"PY4*mد |':O?q+}{O׿{t/ϤNk ȷ)[9寮ҞK˟!^!^?mc_`X*)~`6MY ahIA,\9Cօ7o]3U d)3pV .R3x%~)tރ+AXWW{X7eY3<{|m . ZV=gNCGp ;o_Wԗ7}^;Ѧ3yYjVkr6 o [('RRA0DUuWz@>*ȇ ¯T=N_~mW z!!?^[])!> W;¼e7_f[&1Q տ#~ & ޕ:/?:2Kl C3Yxޢ B*]Հpm9xD >vdkuD6Q]Yl-PAl[*ُmc  oˏ_W" bo0)@EPQ/Pjz F3͜eOPzڦ[/C|Zx+jAyg ~ ߫R KkJUoQsڔ-kC^ T2ٯdwynV!n 0+TV*wԇ`t J7[x*~~=?W{;EڱU!#iAgKN^Qu7m7D:ȭš ˉ51>PDO0~YBy[jM@p[MX:Ym2m 3(x6(0CE'yUS* 怞 ErVd¾ݛU"5z[5j+W\߬}NB/Dǣ.Up)&?wCQ/3(J1X ep Nv) ^2@D<I>'WV򦻚H8*ށ 0DXiKl/WI ߸-nA'\n h+ѻ"dw,NHV>/x}DlXX ebSa=d<IsD_G+@)K;Mqpڮ3tSФA-<mYE%OG⨘$N7>^xkb+U@t@X:j6 Am*//:Og 8!>~u[Yq78Ejz';ͲS@4O{bOqA3 4r]SNTwΨ8اlvL2{SaStA t+n aVxDaհeXsD-hc;ZgsMpwA<( a2JIGt C ޫ^=o8}@s5.q4 ֊ *Ksپbe\ n o2Yz6 J{C  A&W>-aǰs.]N(.ˉ =>5o w@3eiP'a֙/ UnOЯPt Ut+ $BNdZr1QrPIDAT}@-)PT{p| `h.}nj2J)>-Ë-|.[ewIa`ZӲ' NIШ HLJ^[ bAjw7!DQ Z-@PoN'z!=`| zmp&w`뚒0Oͯ&4]FKpfGn!?ut!.WW@B;N{>q7g֋_B"i\p[) /?tl?doG8nA 0WdefLUR9ղCNY!*o)7?e!TgAnkb[bv E33_ WA'uCua}z>f 5-1R~Л ʃvщV5\/jۑ 4FApRG0SAa34X E#jJLi ߖ >v=ր_ftͷTbG ,Ч!Ke @Vb4HVx_~9><y#IWM^{Qe8}tyϕ+W\>q_ S~&{:-hyv=cGsʜp46 }iUk-" v}b/" s>P F oK2!&BpIZwHGY_XY_zC@]4P/{b+{8%0r iAeׇܘ{¥/_3/D̺b/ CyzOI(IٴVD@҉ꮻK kz*ҁt;J"*鮁@-sAէqP3whC1vP4C&x('pxC0eHK%+q~yH=[Vo7zt^ތF>vo`3M;;EDEQ\u&g &2`2Uj 4 MA,bXATYpy= b+ 9B pl*p?~vA\U-e3YJ>%0+q9E^@39 !'Ȝ6 獜[w2S 8~`t1x̑l=de'A"+ 06lk`6f%DMMBVQ>c߳*yk-!X憹f.m瞷- =:Z%pcyލWÕr%|羄Xn oD[UegeNp /Bدw韴Pכա5Dq ºъ(ږ2,MYѥJdU !:ufAlP }uMm[priu3~qOp?/ܷ@;5ؒ-nFHQ;~Nܢ~;0`֚fD(]uvOWŻk ,%h4*AXZķv5QRޫ[^55oįigCBR8{v &A[nnG|3EHNlH9s[U2 f^Ϲn³}k ʀ>u@ d_OGECP2ab**KB~{^~[~Aijc #>(#C|Sbfuy _+)peX6.DϘFO]if8e['IV(Q@uSjeW_^g(|;~'PCoͨ:W y͓!f\oq˃]Mr*FMcߝ͒xd,UcSMӼ{+W\ +t%$l ٨ʫ ]7j*%N/{溃+*઺L`xi@Wc&`>?`#[ʖS$5]@Jϴ|BZ<7@ڽi# -徭|t3l$k-ˈnAQN|2ߺ\_|Fx!<*^ Ce@s^a?ʭrȹrxtqk&К8gAR= G.s v%KfKւ06̟E] 5N}yZ6!jڣi V|gCf S0dFΣxylfw}v{퀨y֏ʆ߃i8~3p[o 9sn油~_S7 g@C9ECQ5w^-w@P[u۠O{!V"V'-~HIρĀxPMkb 3bxT,^BNTp?` ا]Gcoo'sRq_n@57P諌FſҊi^ J: &c =wɁidg7h*AO4U';#׽gwzyؓzͤ{z>ʕ+Wrt.׽Η brB,!03firxE|n,3|Wso\//Ȳ`?$27 #^eխf7ogb%Yt`[2[vYEڃ/h"&~jrc&?Ղ^ϮQL_޾n q`GYp] Q2}E9%]WTlҮKo6iONp[nQYTՀ -#%,r'7h)q\WD&Bv-0G :f#p9>YBv'/@|,_]U40W ^//aķruD۽-]dqmp}n췲஻mn'x{@=@_i⊨ S@I֔@|Wm ?R|f0 d39N36ƬUQޭ'~s Qnpb8,\\*"r@{r<b-u.ޡ|gn cArPaeN =wy dp=35qI`'ئvk `OPoGA~'঻n&Q/ AVdp߻C3p5tw~YWޕOLˁ(3,b)b[j7= Xaΰ2INo)dv[E@4-D} ܓ6hD~QOdoz~ZXX[7 vڂ~5ٻkb* !`^LP+mGf1]NXJ9Zϲ= OU?OƛzA΃Ԉiɻn>V@q$ukboJb9Kzb\l|o]WZVl{y\rT\پ?uypoY+L•S=_=ucz֯;X@c@sƶvmAB&sEι%ځo߳~ֻy KT~z60^s vA~=+dsE$xnY,sxL);¾iu۽z AQXn]4b篙q ɿ=0xck]7rr.Bd7d|?o{ Wj^ Kd١` &  PX*N$ڈ>k[;bog>n n]HOUDMROmj/ۆ MfQ**֨r%Ү@.J^p]D >mEyQ~,xln}Nf[l7ܓkU~h \u;Af7!z| QB<,. {o\..Ӑ;8UZ=[c.n 6@ /o6Sče>DS͜h'Խz+߳dSe Cm_&8"єhN,ηO8Dݢֳؓ'AlW W"q| h^5zZڃ' HHMvhDl4 Ľt@fC`s<{NŠ|cZ׫u^Uԛ`Dߚ`L9_OOS\\!߄ʹ-U" p.5\mP}@~$/e6lk[~Ơ''bcrgj \&ulSSϔY_*:b"G**+\'>eo@D:艺%H=ʁpyP~!vy6z]O]b`?uf}1Q5~¯c/CstWm!{%j 8(^^Oo3]wCη+r>/TQv呄,/)d܊edT)[QQR7!;DJfɛn K[}نkd yvwFFSQ~A簩{uX( s0z?]sʕ+Y\~m'KK;ҞipњG:FݾJPADBGSvK;NgʮfS$>Vڀty\s'WJz2x*úr̂_8~J]]!v_[.fFAZtjo{wvA 9LPdƭq!k|Ld>{- L!Z9]_CTYͷ4.2^=[c2K`_(yC7m?گ u6 7+-]lW4D]72 J˶"T_UOYdW >Y7P1*ymfSپn*:iq7Y-qU$vBj@D= +GP'eޯk.`#yL'L7y x E+o@G@x Q0EDA0ȇUW { ѝ`Gm?Ўi *K]U@%1E,ރԭTpe\ 2M~&ܨ`G~,Wt AMPo`Z{L+p]5]L rnf~J=,0 U8ZWe*Z>xEt>}XP/( rVYI]U!Χ<"?[=hC8<1M<,Bj_se"uiU.Ȧl bX%35J-?i>qy^3ٌw=o\ ]8wb-oe{9w9s櫜1i%O:e@gn qDzTOoD5 ۾,d)v[S< ciMj]{!aO{_[Y.ٜW;,hn?]sʕ+rzJ񆉷m vz۽u?*K;*RRӂ65W<PM (N)*(OjVӝttA_ˍ?Hҁ| t7+f')q %-`0 UEȎ b"Gy LnnZd  rC|gI{s,CYѭǢ Q^ ~ jCs& gxgS${C۲C؄ic3Ѭ/hx§@`F No)XQY"WA86f]Uu5ZT_1abA@jqxukGwЊIHןˮ0˱WBPT*n;b펀(FBw 4Z 5=:M= Kڠ;;|1tS Gȉr&x)[y矖 HdwToFQ(G$'d4~ve )EI/cԲ2i 8-rCʕ+6rzJy{lk٭SoRDs4O?3A 0Ep n`ᅡ޶o7ƸCdP"(&$dE$ ArQ@$J9 =XϳVZ>ؓZ΂3ywkɭvyOi N;2x  j-f{Wflm/S]5 4G!m 뙷d $KՋHȯJÓOW? kɬ[ ׁ}M{g 4S};2JFlppe! F3J`րH=9o9,'| j I7.qWCX8a~)rx - 0 vdWUx*lSvPn%21 g"j ps.a3zz Bo0gb3jAp +@$c$) (Bik@7fqvg[ŭp H-Sg޵x5XW@.R:PS\C\Dq=zo{a{JY^:*< v`g3;Xa!x%>^lG>b\)>E$PU5'ȇw)#нL?; [v,?@8-\&{߇ AE+5GpMj3ʻ#nAR9a)M& Ga{xc@EUu?wAv%eet ZCjג_-`+_^,Q4%{:aj ~3o[ތ{f3*ʼn9+5FA/UPePo޻ї"c7lxU5M~{lo&@-n e6)RT7v-Ru!ɣ!TJi/L[ iϦ5L- "< ߰-7ԫW=Yl[ζ;Λ9ZڀZ엳-Z?"/DDgĭ^ ?+(&A|Gd|v&Y lg 2OT; FJ `y8?q1dퟬAv_r#t <`$M[9,5'9#Qs?Dv(bҴWbХNyy%m||=נ]z1O.]qҷ_RtKïQ^[%L+O gy~oB8|_ i;_p_(=m/?_vhcrn',: lg7@۴3~ `+=kNc`ͳVa{} Nkg UW@hH9H "_?Ϡ;Tl.*(|x1~`J O$M>|\^z8 ߁Ȝh6Ȑa|Hrk^{u},ʍy݁%b\d "?yxx qKlw33@ԗe{%Q*> r%F +>߀y42MAA(g 0AJPAD.P*gVY`k|{J ȍb:vu(3хN`/ 3dyUA+6vmQDEfJPB`L]у!Ptm)ED3R  sVw{ "/AeVT>Ys" |uRWWuh$jB I?D%Gc !aNHmIN%H+Jgs{a =wa'p9($CZ{i@liK! Ow@j'o@ĔC) mi`y'X!Qspz_/#D' XoدxϾ⎸Y‘Mm[bƨ'P/%0S%s Y;˔y "2aJ-5ȓB H~$KU>R?6luO sJ~YRkg7y3A0+ȋ{:eOstҥ[zAO\r9&>+OO'gJ<,F|[榹ⴸuæa_/p81lƬl`Cao fX1,8(w- [d 9Da{{D$1D~)Gio޲k`.eQ@@n{Czy(R.Lo~{\TOE?W `v tCs0-X O >y<_EdgZ $=dYKB3-!]"> l{v4sagؿ!T (' xLP}kS9Y’ᥰCv9 >A{`f*8Ϩª "(_gd]~m;$N| 5u[\iPdk*kSIuʃdZڏ!X(bQyV./AO@Her"-ECPa+6*`a0:l_/NAS%y]^05$pH_o mVӴ6 A#3w7T!UIbHbbBC!aib/l _u}rb)?opQvl`]~on yt\x)M2>W\ $ >vl''hD2"IuCzH+3~nц@VZ.tA SCԷuwx{ z8Hj>wïAUz`ǘfwyГ\=R*@d 54 Eb!BlSX7@$Ķ9'ho7Oc5lb%@ڦ͂؇?boBp:H۠{㼬fBo |^GG9߸ޕW@W=87ǣ#k@}ol ⁸ zlBTv4$<H혲MH+*E@),s.#@ b?7=@TψlޒudVP%*#8X0-D#?7+%C$o;n7JG%C K;wCdv7벑vetN~<2 |g'ֱ@u/ U@= nK"#{ͫ!3z+Exi}SkDgPdF\D웲n86'#,R7;\|wKFy+V˗:ӥK.SG_Z n*W3,>dٓ2 Kh횰9zh!:6|#Q 0i涹fmeۂ()Z SR`7ѝ7rTȲEQ (eS3WA%1 Cr\4X|i`o~6?b5w `Hއˑ} )!ς;-ӃYMЭm)įu*/'o ٧Iwk@p'b \(+'Atm܄uP#qRϥS@jS.{*`"yvSV7mEB*| .a&HhX! Ks`v/ćſAx#pNO5t=]dM,}|c>-{3gA _;45 Dtp^8ܸ*CkHĎP)oꂠz1o$0/xCcb@j|A.v*5ֳ+7IU#qpw [xG,v+8G~dnq!< Cm '>ffo&'KL_zy G%ß@O`K0QE,Iq9`ΛY< Y -v )e(  A}z!`څ8Ղ`٦< L}/O@f2f;"UNfsX.:9mʁmh2`Kz([i`7N+qsw!ql?= { %#7zl-]$쵠~g==j ++ z!z$z? DD&]g} ub 1$%br ,S/K~p.&9g`uH9z16<>N6SҠп+ '@+{ *JA|#@^P+e*8' 5>pp ՛㞁Hp{WL;DFeg2ȁ `Bx ˌ5IW@l#{aر@ї %r5涡nf3T _ I.؋vyNQ/ˣddLX=&㑖z<*RӸ򴜖l䔘vڃ%QixazWy8~کIн9a{iG2@Ŕ).]tS KMxqoy>>[=Hoһ$fˢbC{Xy\,-zH@ԓ}`gL>`4 ytS=ssl @{mq@zp`^14E^3,l!'/l_7Lo\{n3k!,fOl#[j& Dh(.}')*m b!0J d\aYdZ\0dUۚ؝mQN &f !|9l6Ed*Ȝ, ^/2wj}dw$gh%C|`l|0WAE;(yk(Iipg?@v{00j>Me>8~iS׍`k.r b Q"#)ggAw׽y yGsXsLmT; F9\ vjG@5T?oyA 6+intB,Mo,Ȓ2E^u@4X&E6Q{waV5l^)Kb@2DL o0T=DW9@j^Y[} DC6AW\O H_&F`08ЍFt 1}AvTR]G bxda,&44) K*6C0?%FwIg_2=D]Bja3: T+ŗzN:4[–A' `ڜ68G)0/Z hW: "/Nq礼l *ۀmR [=A}Woo_ n@դ:7OqNP?.^uR!Z<Y1H&bC/,X)d CERnG>ⱜD01SA? v&6%0cA)֋F  ;VNp8𳂷[wSS5Ȗ:pyO7-{ =Oo:8b ;1T^3D$^;d_@+Eues UPeF7@]PeqGO"@Fn1$j̣3>^ڠju^wZԶR#:=RFCOH,zӦ9;;7Ok[sO~hyL+ɳ~~tK.]'wJk~RɖV*Bu­[%уht&ANR`؟ A5l 췫jq^ sS/2?$  8汹RJl05INeiooPL1sS414E>a.ؖm`27(u o`Ufn%Zl-[!*r9sn ^dht:d\d2h|)ՌA r ^NmB)CjAoOAPQ/Ųb5@[M?)T@zn ?`>5]'`>4ugJyu@!Q L#[1Mb:N#![rz3Eؖ[i@DU{|rZ ^;ععDjfgI3uL:s)Y Pe'7NopsձTWTU迵ї@E-p֨w@MrP5frZ&߱!_$& %xWvxDn6+zW /3kNٺqWs_hQZtπicٮ=z8cad}aUWٌ  fv{; 9S@v$9: & 8f}fh݄Isvǁ;ݝ[qA{&eB eK)[ )4(<)40)lb)od<[ xK|i'ky9לϏ L_=y^GM ׿7?mo+81gw(܏Av~tzFS.ʾasB^N#X-v Y^VcrS, 3xyݻn)%AL)L׆ Do/){fa34ndV`:nPJsz!a?Z ;/x:VӥK.j z-LҟCp.:r뷼j{F+ ,7+HH6iROI bOA& ìd_5f HȨ|Yv=_`/ Dm:?7?`!LX!o Rt lA`zALf:=l 5uc@A7)L`F[5{nG>`>7mm" ꡲjpW3'X 2okj`?O@VMHKeF[]Q"-}B/H"A 8ۜ_M`u l 4uO:r7GS7ATEqM;2<(#)trڂmd">HWma`vX DnGJD-wZU>+x,ʈ }Hfxj<3;A .CdVFZH DzFFhΙ Oпz GkAMU."PU;xg߽aq* 688(E:&Hܜ8.*p^@XI!**%1c$# 2[.)b@Z؏`c'b x>z1H[+uY43Npd056he>q/#,&{Ƚn ܝ^w8I{7{ݽ~U?;x'^x'@T18GIb\;LKOwP;oE\.Ȃ2U-@U5U5s9xCj/*to Ç?%=D'<l]<L=E'e ޲F@3ۂ:Tv=?@xvVP(x#7}sv{ &o@=|ïfYuSʔfќAWRLy N?+ @'Zؗ@OOu-g0L_Ƕ1J0py) @I3l;^sr.unIVeNaoH{LS_Ax+ܪ;i@J G&oATe}l;AQd\}[OWA̐ P CڏvIʯ |@NU&/w7No3 A<'2a85w lhX[T_AWUT/*ƓJSs#p˸_U ȟ&Dт&nʭ%bb.yc=Tos?@՗]g5G`<5XDs!l/ʥT]/@s{`mur,ΫjnYO"& G]j<΋b2 j*CJ:-P8f}`zWn>`(>(`Xb'~7b +‘ʁ.ӠF;wLpj8 iNl$ˆy5;0 fifT+)\`fyd6YHf=@6 ,$(, 9&}tTmVDkCd__el?ý~OppA&W}|&0{xz,Bkx\:]N^ԅ`j89v=NxR짴j`Q{DF^VGI0]PsU;n[o"8$pvuH%?ɏݺn*xor=NpsBU6Нw$*$h?OAV{9UD)Qt>}X`ٶt#K, oP uN^([PTw "{v+f񽤱}~:5ʅ;Qxb.]t/>+wpȑ=G_bHi|" x&;+Uֲ=茕 E-$SVGLw?@v.s2S1:"9g r W{@BSy~Ȟ*Uf9GiOw'K aʼ$X ,aa wB75 DgQr\l}0S[xg bAT {A8 j?c(61kLsMG [A8_j=DG>RdDdP"W5 w|o)۶ Oa!Cn9^̖cE∨.V%aAm9 6Pٔ\P|jZ6NHqWq XBApu;M#s!ʎ$TwNR 1ˍfqasqzxЏ46s:\+^[ڔ:vivAUꁌ^҂ʩ ~o`n1Sw )r. +&HiB.=yT UImJ @uVo.n i*4($A$Gdh$x}ݏ Y|kM55551p;흓w`Q DGEm6Bv4t.AP+h< v}.2S, + 6@<^k5M{ELi]8D}_#qB>Q`{QH.w{e7;G]p9^| 5U)PETMUڪ&D{%4%ҩRAp5X?W8?( \vx z8NN dYUw3ܝ .g 8YN ϸ%7{A2~%:_x+奂/g[;LI uD}ʃ\, Iv}snX*2ϝ+|*rщO4/;2rKÜÌG3ԝq*C'nA%%w8c~q' @W^ D1J C9F<et{3QwNTAL`v9€deDQN 22ʂ|enW \E<5UJ½Pi*J?k @EPAUB`Pγdd̠j.8Tyb[t]I[mmP Ta5ZM.. X\ ʠzFu/`b&Uz^8tus_MZ5gAR;APMUZSwS{:3@lflBl0Vr#`OٳyfbX!Fy汉9X"'\ADeu:#ZB7 l_>=` %n)PKe ^Te(5}K!qqb]TpC$%&Z a~m0E93"m"%g[=v$[Y ziW@p+Ǫ] A?D=C|-m|V ݁ V"buW^PH]kLkrL QID[)S !$2ěŎ"tع`o3vm K~d/ S~b+F/_0LW!bZl(j꠺Tf 7OMI92>3v'L}? m0gg OA56W:8jN{[ z>(4`-BmVyW R `[ ~x::8ݟ ;PU 2&S A-UC<OuNMYlӀriLV;ڎUHEUAdM"?v0o3k_s<6?IW=,SA~ Kp)8(vB\ +nl U{ .g"B`ٝ6 r"W$|OE>kyuײrL)SȔpR8/&țvј`0oA:nׂީ _bz4A\fH] cXx(c?D LMs< jƂ(-^v"4r2:$ L*nS)l|"1i|-m&Zl.> ]I}ljO6%L iÒW<i3S#m'=s: N3_`ݶ0~mǁj⼡ʀ:vr'^>y; ˑ>~9+hpʺWF b52b#fn41&,րIA\Wl B,,?:Ýrp/z!D.o"~=)zA֙uӃ\Y4uf6^Lp?vҥK4KP<خbsyٺils-^[{yK39'֙\pzYL^ap9?:7q3rdA *ܠr(X`ITқ5KR1UDIwtm0wmStWs뭯{qx7 x:vl5KH` 昉SW@)`&υ/i~߃5fhEfY i:U? R)i:Cxl;f"Zt,Mp~1T41[nE?3p:!ywا@Zʹ?tpn# ay[xX{ oʹ*2*>fy{3@Td}m{)nT&x/|S%;6 =n, ɉ5px8X0EL#SCC#A?4AŴr7tM틶!™*EeLqSg@$ɦhpn>qW!F?%`V20UcEҖo{#Jqa<Y]י/[o ږ 4q J*zі@fWПc0enSi .@g{ ˞=P]L{^%_`2-0{A>d.gbih.J@V*Pd;,@gQ3upjN=KVaV#D1`_=v)`&~A [OL3 SmMjkPijѶ"S@EU;PeC2AHmwW@TKRp`p2x YWJx26e]nxUOAZ,H0X9u8$I~Nf+.GirMQXu@L;Qg'D~dKw;w޿8o6x|U8N}BAڼd^unJ y`b [ BPLd UFs*9CAfjB-v1L\r3htʧVח> ٢rө.]tO^Rg r:Cڪ/ٳk_:=k9? GH&-28d-yQQV4dIw"nCeJ/amr9fKAd 3bwrNSdW9\qLψoԛW_z{DžnW7]S;oB``@/`CMQGGL0H;RJ858)u@/UO _S4AB1vhw} ELv9^CauH(S?O Y T Rӯ A`{RK-59i!4 &6boZ Niڂ!ߐs;]ks@:N{n1@g3׬?#gq@Wu](E Ӕ²u9ij!)戝mf)MQUZ`&U_0MuC@JV ai#&>R6+ k+dPQ`o4{dE*V2*3x"omh= ( *v"AVgS}rCBuE N4_hjLE>3|`wBJ͔-[~ )SR*3{p_04;^H<9  3SVUsK RA {ߛO*U~r.:!/-x^?x/{Mp9@&iMYG@Tl6|`P?NUGwZ C ]с7!kL38v8[,3mgYݠ:ցw).]tO^T$S!E%d}%夢9<Ɍ/ Sd6RLs#"2bD A$[T-SUu^B WQyJ!eD88=y1s ;P ^RNaDTg:j[f0[x׽N8zd+ߋg\= Ҧ9c* #h a=KS̳9!m؋`fFKPw2 (K泮-N[ t7؄ LI c*+ F} #ƽ &-p 2qfg kL3kѢS,1g)> [;`0 tq.$"_"ְؒ[7m-gFm"6!v$5B&J%AUyUanh3G2P,`O_i{,aaA[y^./.qr]4A0<`Ι4=@s`$ЍuAt3 d\>vk&Ғ9ܪ.T TI*USI`Gv b p3 6܎`n6y梞 |_uݭ e_@lA|yeI1b05vpS,)`Ws`붦'RTkQЉA⫂~Wz2!3f۷A֒yd# @L#Sݼ ,Ɓ}25]V' j] 0`L|]0 <3fm9s&&45NNw^ynS2 1>Hx'!ObSEpnnAU`F$Pl37l5`gddr %kԌzc:1NB+ 59yJQ?k@?fb;/,'`5OTzc LJȩU$tWmqij Š5Ţ0M 2" L_| b!] rj";蘾Ӏ3`Z5)Иd^7Y(^`* VWdNY L_yx"`ه(ñ`35M D;15` f.c<20Xk+u 0Wii6]ezUVV/isir"Gl;.KSΎ&l݌3Y,# -fؼ`1ɦ 3:lyF!(O߽6nsS תr:(iPC"E@dԯ Q7aۜqnp&:_lr+o%T;wY  %+ zrt4RNlV Z1fĴ  i xN1O?j+KWk^[""C9}qCdFdldDD>ywϝ : D1D܁pi%8ePt ħ n- *ʭA4{H2[Up˺ݫfwڋzȬ30O,\Z7Lo&Oϧ]9=rgU u;J.]tߥt#]tiصm/d.~}s(^"\NaL #ySr%PlKEnU-<y>M@@Yrl$ߕ=@ԗ ~Dyi50tf1&aM k.Rt"C 2/69)Gv79(g3,˖V< 2Tb5Ab>X=_JWjpe@n*0v,!?M]W OP~oCI4DA)G NWE* EFoɡπsFuwNBmtPM=`_"NKH}h1o@E%$Js@3b!/` 6\꼊sRPoBkBzy#5"#"ySC+/DNws[^ֹK`O;Bem =9~VaVJ=ãBRքM>a5Xi?B?8aݠ0\ dApP)pkzrez=D%G?䱟܏?k_ 8a]@oִ%AO' 8%Ї ^S {{Ю4G@4d=_lp>/Aφ uvoYWM rE.|| ዺ@X hbh .?\&?r>N+$~;j(J9йS b8[<9F,AR!N{ a@BsGHhpΫ#eCyQ?6}7l O\5^qy ?'å9E4Ԋ)SӁO{#+[\ !D-&A r"A (89ҹO'ݘW"#_!r'zعq&ѕOd_uiq6{ɬO|у9S=S(]tҥMzAO?Zma8;S*¾N.[_qR~:X"ߖ\jssQ ?@RRdME;{sBV2}V |IX#722@'8#pDU@74#t[mś-0ctWb֤݆U{mޕbϮ=p;-}ny>$=A7wd ƄBXɼ`No 4zLVm,߃oTج5 L [藀['Y-,]*sT9{% iaRƌ!7>8.&~@UyҦ@Q\Ղxx~H6,u\WB N%hf g5a_ Pܩ1_3H5AV{N)]3ʹ5]$qt5TG)3\| g *ag+dNtp*Mw=7IDATAtj¥r_}σk${kbxIm7#R^Ե bZմ`BQ9DWɍ}ã_{Xt SDgTR{iC y|_ǾLrN5Gu@G ^DG{qDG|Jv7DHr-Sj r~Z3p 3Q?0@`,=:<^* ݏ-WyPPy끌<${!w[fYE|;(2>UA]W =F/S(]tҥOZt#]QZsV}W'l]{9)eR=y_{· .b+)،2@+ ='&+bW 7&-C1[bqd9F Q]! 'CX5~ Z;*[2m7~ Do$úMiwz:>~gݐv,sŤ.}Y0c?ŷYmدMuz:kA%TeX;ly`π^UR:9 Nѧ.3' fyž>0 f;YCA7ѽ| L[ey DԌ oѧW,N=ROA8~lI2j➨aoYY[|a.KEE!Ro r$;i-c}@T7.pVu/z@WC:oKF b ~o9g$+bD# H2T@ TIJ"94gY{]{:֮vՇ7şhnu[@W.R\!Z~VCtg7z2NcIS/{ M{nR\ǹCVED7 Wd:--z ?do؋Np.eBs/1xQ0cn/$&A8'1\&X9 +=vC798|䲬kxLvC2%$|pC7z='  55tqn]^qk>OƹR;eD 3A ?OA٩ Աo ~Yp/R0LS ^+o,x'S~OZtΎ&GՁ?𢙐 wutQy"JN3Hn ;%Ge> 9I}H.Nȍ 4n(*Ml3lg 7 (׊oW6ئXXwG? 0`n6Q~6fCtKxGt7m 8Hsi- pܻ-JiM1 `rMiMJC~I,8;~m@6JY/B pW )z kx^)UѼb'OJ \y lOud; Qhs .p,IU d,pt'Hq"偫rwmcv))10qG2,_`fx-HDOZ70c\tvKY\ًr[!p07/0# V-Ϋz 5JNHQRGRc "OKLRna׹*CA{ rC"6rX.ʻݠ_wbMu\IpI7H1%=d 3 h4އH})%$KA[ N ig7ςv?hmi73|އv*fy r^))S p6rC%O%-˵3vu KiQn46: 60YFDW!5r_^;0{9a0! wx|7S_f)%. tAk{}w'k0H#!< ѿBFϸzMhBn5K  =bxL>Z@W;q Q'D 4€?8ŷ 41\1u0{ͣf73vɑd+~vi ci2*@WaKż^1 W($7@oUzx-AvIo?Sos!ER{AXxm+޻IRE}7 A018V7͓@~Tc!hA/d{s9Y9ᆟYFz#HpG8ܠ}$&^pg"PHzU~ /l{{d/ëo·b=c7@Jm) mꂔo*؇/ziuЉD0Bssah} vю3 ChDx866C)!Zzzz0>fdP/u *ts\dncx50-3u£_>UMt ɓ'Ofˉ`~cv 2O.rПtN}˾'oBe9B+`x@L@J%) |õwf h@ubRZ@T(G|k>2 ]  j6A6uY'3un;oAlPld$'.%rA|Ϸc` WDl[Mt..iCRCzAjiUM n=: ܬhKm,12-?nNvxFܜPN\׏C2')Qsy9AHLI0z*Z s&9r'̺Rta4S@/pu&M{ݫ/] Led~6z ڜ`e2(^;Ѧv`L6L!4A|R4殥{EcI;33S6a+mK4 9G5H1>/ H;jjQo}R_ۘ/n/Dao*0=3o~4e'{Ifp3nR?Fyɓ'XyKOeQo.?{,XD8'73gxwI>js/>M|31{9=6i{ cL@+y}Z+X''@,6SʂѾY2N崊.WfK:H>2A@Aks ^CW/.05]eЄv/vؑ&gXrmVG* ݗzաp9W%9oLYsP@nDOFStha`Nfh;mfɞ=]v#q(Zgsu\.#\;ݠ}=`VLI6/_ *|kG ҫCP߯\My%F%~<@n9uAu`uvD¡0,9A"d-a66Q9p3\:N{`cfB溽tkͯj&=; b}oe{{ Y8Y"YL{yf]7{M:$&$%6p?ER`:I{d`I_{ 五VmL2W-w3Aݛӈ;j ėd^`N!ⶹk:`웠2:''͔2A/k*Hx2B`{+ҦIpu$8vdpdLO } =y<{z΃yYЪZ!|=. %MV **tV$(?= Y3R78j HGz[>dRr&E7p더 לAvvND*y.'t@3ܜmfVtYQ@lQ 80/lEަhYqZnEn%˖|H\{~敽ێCھtɓ'O<0ȓo`k9DS;0qC{()<[ͨ~#ϼF8ky[ve>yļ UwE]NkP3LQ9-c@@Jnv`D 8McH hfPAn U2HW:t}zJ+iL0\3 UW~ &pT74KwiKxl!cTG&\%['zp3H5~o4$'߇ !]q v9hp/M];@āi}z&v9i2'hvgovS,1gL5d{Vր ь=[t1Q#upisW]Y;dsBeŎśAjF7 :X(TpEs7؇My$GnH.z pIdNx@G\ !Y"z0LdnqD3H Z[ˁ鍷s!!gfv^;A6fgBDf/dy׃@6N 4v0뮼; j ' g^9A{|^r@lc{kғ@|Epe0wLm! (G5^m[-%(Q5z µp |-4?S`vOچR0uzf@X7, t=](%uk֙nD Y4#PB)bjr| M5O-m6 Jݑ:bÂk3 7R5'!eNꄔO}w'-zMhuU r侙]7,?SD R[ u<Yff>pwO%^=~Y8bE`/6&{m Ql2MxUn 6)7Y/{w"ط;L5ST^//A4խ!1wj`{tEiQ" WL`쵴BK,U8cw96/]u5yRw]K] :EH_lp0[rU {gq1CG[yMN `6) fL50LҌ]$'ԃͮվ-\w-¿_)x09lAړ@2@ZԻSO@ޅpM3Z rPqbEAai{ГzMux;@y`&fHQi)e jnF%Gٔ&t^Ѝ@B|| vg'@wZhumw;㎃Vt _-Ѵn賮e&Uv!zf`=vx/z @eQ'O&Nׂ : h'3¿  7[o/>)),4A>+ Ԗv+*W^pn2(e">,0ex4:ԭ}i9% <O@07(]f.4-{EW'd  Cj^)@gwfu;A +3BJdx ES7Nӎ)@0JazVi7[\W<|Ɖ7C4lE+lD^P{ g YItV'F%~w ?Ao66jAZP^)~bbDHk16b 6;v<nw;vy(E)C8/\.|u9 T}}2h,wR1f̻_IoR~]d{2g*hKU{UfskNm6pۯ ""y~yɓyKAz+!vڗNe  }+B,֣t~?}-^p2h2Դ5CpDn3|dz2/n;y[ػ %w]B6ЇA~Ų"L sQ:^Zv .fZPہ k~II! k=]i.+Y) }e~?Kim3#'SXQLNd牵[&/%,?/ݳv;Dף7ܣ`.fЄ̯`zuS&!5=nIC/I1ig$wxy7}4W>'Y;9l ދox{2_1u`61CTֽ} 4erG=y}aUPќ5߂ɖ&sͨ#p4W.Foػl[] -F@qxSahDm•Y:  f gJxR bEA3h:k`*LT`)|@n[UYG^z'! ҁO;ǫ; }5 د}߾kCX7 :gր|fd2MAjJQ + b*pK -)Hݧus{bc@I\Z42wCzz|9pV5zRT?i[{c&X A#[d{yة эv w`N H#%ȶ9sDVOȬ;{\Cќ9VU 3,^d03YD%&1NxyA3%~M;cCAo\/xiu g $VDH9R;]V)O2RZV<*ЃoP:Nsݯ!  %@JyRKnӴGk&㉴KPlnV }WyuB{gg }y-?Byɓ'F7<|:y|Hْ/Vb=_Z{n%z~/ݖ&>P#_ d])Δ1%G)mM L9vK퍄Ow ZEʒ!v%mf)4.Vš Qr(P<:_qr C t)qk@v]˻ X6L帏JN0`y1 my\g78L9ʔsڜ77 (~ ɯske/}lw0}{gfaH~ nQ.˗uohOH,  ˂ .ʺLAMpz4:*]Qѯ55oAs5E#Ч|> FLqL\y7)K .~! @1>|Jg nQfG$c@>pcϨM1|zI{)z$znM 2-)/@ZՇ`plD5:QE:1`ړD܋ѓފ^uC\5:\0M<6is!Y2&Yns=~a 䴜Uʠ߸|3A恮ӵÿUҶ1OCplVop?[ED>ty%k=>sv%JE ֠ D;`^-{?{~BlnP?f1fvBOf=mwǢQpj wد8z'/=avef)ik@dl}y0Ao[Mkl`)N;7*p豻Vm|w{U:jQEʓ'OgAڛK`ޑA#ZU!JF" Z5v#f9ұ= $ l>+s҉@&5`Nh)x}BN9t,~F5DNi/K;G!Y)q#Qr9Sr CQ |;.r LJ]1=)Rx0mȨ1!_7mIb&/>쭦 ]&mt3xmq/74`./M&:[n ;%?Čdknq#ߍZp1WA"5b֧5̿ 7r z4lLpv83>Wa2OL3 lHJHm)rP6W³^QHNɪྏbnG'_πa/yO?^ Sl Q{rCJ~:R&YhvY eT+傥~>+%zuMگ~_o7]*d %%^ 5 {:w[;'Jxv덏WArN쮐ZN5 {BxK`*< P. W-]]so b.v4vs)~o:{? Ե);k{0э?' Mm8RX0on~Y`,H; ~/t׾b ^ԩ@??6"E .X_X֬§OOQ9;psPk/K[”+)]η:#FbxDMři d̗;Abi:m ?)HX3 d>,*54 f|lƃb]e!n  x 3T:k䚸( ~?H`;GtS"HM3||"8yY>Y 4f f"[-es8`)]0@I|r(O9ZmIS  _E 9gOkoGՐ1HA[75B<=|D'2[@ 6 R^[8D´Dt^ UQX y0UA1LvC1M/@> ZN' \b>c0;/Ui&AU a7wKZ g\-:ޞ4@/ bbw}[`2MHM<2fvH4)*__sJidoAd9e9"I/,&kJyH+9&Ot ؑ̽Qwĵ (>y"2W xY^7ԥafu; 7 r/涽WY$G@zr=k g{ʬYwZSTi{dFM,ٮԮR ȼqc6xIJRMytɓ'O<=y󿇙g&Θ`OV,+kav_+]Џ q|"1n]d?@jUV-o}ոv$JsQ9 t9 Py4]*m69ZdlBL=^vQ:p%u'mi3L>̭JQϷ=5`Z 6EZ\i)`6)f%HQ2DWٽ^=EЇ :Ao@h\/6q  A^5i<(8G$ fR&BKV\Ėߥ.o4C}eWoCĝZl#} QWPי7k-`JCF<M20&sLY#&(;|ꝺ8ACĥpq勗Bp_r3,_BBʵTbC Cp*<vcBBd]%7n@eiF%`^mdIpAJVu@Th%㍰̕fq#nABhv/=<vn[hs̀I~!"z3Ӓ/CLx$EK{Q= fD &_`c aٰ 9Ious\3 0oFGg,X\VUƔ0A V3, !eHJW N)M  NǒAy|?o}? ;,A1H;td׎zÓY39˜7/K {CΖH$*%o@wBj4)jrI$R`2ipuWc'c%)%U13{?bO_ \ό ew﹏AsI^NtӚ Ҙm=Ly:0z)b00_ }`mbzM uEl/֣! \lt[~*y,}#< -i'Oswt0ڭ_yqoKiը6ؚ]Q`z k9ڻ # ?dzQRѼ2 ,7FV9\\.e~?d>%GPo;/Kb/ƟH RoMe;؋s*-^tb>aICzEπ9kzFρw%{cs8Pr{&>^{i{Xsrg$~ILmjh?$OVK~ %ش1mg©c0OwAr]OMfy?}&jS$|h4d45 <&‹l,V= 2Ҽm΃7-Wʕqu1E=x! {wJ`"S(y{r j!mg} ^;>)8> Ǯ@}J!{AK USj0l5ЇDknr4۵VH,J\3eW9r^߳rWJ49Ր<m.6C PjJZxW8e.5!h 7{ 3x3l%{u@_$ 4x [ `:c9x7V 2BnN `g ^k/`/x]6C`_O3<m4EE(uZ'PۏYY-Mw=tt zuN CWó ZA55emj崽q]k+\h|'brE0C'`x?y?l2mAlca=pϸZnyQ~Ge̐({,]$Z%'Z!rl:5Mm4|-X |6ΣQhkH-١l < z7+9vD \QWy߸*STh-AJRr8 >A&XA ^u6UzMIl6"פ4pJV$P!8פ^i) _ݑkH,=>nܞ+;v1,7,Ef*mg>DUAQڃܳ~w\Vum"L=S ulZѐ w~dֹ嵦՟!96Q:| ҇ ) cg%|' L1d"$'MI1%-kqӘB %}f=dփ:T@[Ae, ژf`++詨C n :eZ}0'ZaZ8 pinw/` zx4wa*f4 ݩV `ߴ}uϹ!cStW+ѫ+3L`fȿkq^-'2Mogv݃AG aY؍C* R)Cڄi pp`+S3 kw@#yy>[ܙ\\h4!D춐fy}.$;~[{Gɪaݔ3ȠAQF M]s3]`f&' 1"S^*[bc' BS=?k9hG^җ@-z6Il!rE35]NoW.e B{0)S6 4w)} WW0׮C{#?Gt?Fyɓ'A?oI.-~1(H僭u [f$Ssl说o>OUԻRۦf>Sp<io'< JoGҀ^2@ݬݡcmv%rڮͿf ݬA6|ZRjEWtw\0ȝR,DF:!b03S rMH@&V_G7lj R~SD~>-dh{=Ԓ[@зkp?8hSY[ޭ=4f09/{Avf ēEԗU0L{쓣@AB< \l y)Mv 49`T[cqHY3z.sCܶ!v@#`\S0SL&dԕ`fK˧z/H\b#*@6si u6)i(X~6Ҍ dY׹ (^t>tݢ!'ⶸ`yo`ڻ/\Ef0d'~oo}jQpFo@3QG7gnM`N6qJ{۽λnң!|.8|xV`GٷO,,7pMAfG vWh[0-$#O X&Ya0c%@}LGy#}5n{n^2Pzרy43Aꓟ<B]ҎBk)S3΁_ދ.7M`Kz/z1<_ > LLe!JKևܬD\Vd9e= KedZH|{i:RGBh9!y!σ4=^pOVc3kڏί Xx[} /G{?ீXؙXg=W_5{_l+wp*t1dG*]0$`&JCso[Y->^_ص y[?¤M? E~8ckkexuȱ .+Ϧ,ō}.Ci'Od&=(@iPս ;.fo yM>Г{d$Dţ|#b+ /WyLTDx !^[Vc+k^s_")D7 UwtmzmJQtPԀ,={~Oh-rV 0_uhz2L>) 3S ~JaȆ_Q RKv* ܯsJ懫宝rr&5{AQG9Fp^^o;Xj5)J5H>zPW6|[^?o 0[D{]pk: "`'a[OU0e=p_nl[ Qw+xp\7H.J^K9r- /CΫ95@9~.0=M?\`Z8Svc΂һ_S;!6,/( W}1r>0`H1 ͟\U;s'fd 3@(B]M΂=n7 I&% =}gi'OUg{ή&-=Xƀ"+Vv;pZly3lRkj6,[*8_汕leK@E;'Y&ظmVmi+U?Dq07f(=­~vf4T&\%>qqm1evE}g]\2\Y43\B1Ja&~0dLGPO^9d2cN&,D룙n$j" ЕSW}Gg&aM|A`oVF '[Us1&j@Ŗ 72'A2MH#cCpn݉aDCՏ羽8ih-3 6[ AHQAI~]0.^vЮ* ;"I-St3@#f1M~ޮcFD2nCYet=[jWЗ7怟5g`N k_ȩA腭 M,p!Y*yG0 r40OL3f-h ^n+:o7^UnoܔqҙO Z%O"@y6m]rAB%Y$$@"7έv3u^??gC4< }\#=l;a79aJUyπCʂ?o4( A?ظ]f=l/Q`knb[7O _›gAryxoxŸ ;3s G{d&~(r-.9=b C86y1/c{yzNU~~ 5U{2^+Vn.zCw)vy΀ȋ\LLWczs;pG:+7!΀<,_ TZLƍ=[,@Fwo^xwj7]Ks,/xOQ(zE7xcO }69)Q. TJḑ< f\!2a-ph0WZ,1ePu\!L`4ވޣ?OW$ ) rZI6z zޡ+@LJ{T*mnp5:ZWE -V3% ZPFu$m)739Li*)` lIyd*454?#<(M@V* ti J' $Β&B#'SnJN-:\]1 Gt(6W'}G[8bہ֣,;i!0t67ŝ`~0M2t d Dӣ#/Kc~a;D?OKA䜿Qt H4JqAiic!2qM[p⍧? 4ЙW%O&;/H7:,}onwVԐn{w.F^@ANf*υ/m=f!?eXG9${D[Ba`=ңlWJ6k&dCnN(o_ `[y:QB8Zop4w`Mp̓f}M~}/ c킟W ̻v-mTo,E1d8M]`6֕κwO^Dɂ~l 2J9Ei5u!뾬YK jmOVDd"&zyZ%l1- 5h ovn>RTj>A ۼJpX03[s8}M7uk!:[fq@hj\e'ԑx*Z-Gk^-5vh}{c ]njJY-J2rDEj+6nηW\w}O/zM?Byɓ'F_޼gɖq[ǖb/p  4Ϸ'g_A={w3+r^,äϔ6KAL[۞o@V4 }״ag3,9+" <zTC(N y.:BR'La,Ig0̣9(J3:u\}~FtYJp_'` 9kkvۋvFcj5bGY]_6յ6y]^luf pJRP©V2G^Fm JsAt,*ՁhTT4ڙr/\6HVO^H廓Ȧq uI,=3s`N#0RRdj6C?)|9_c(Qr@WBm|p,-g5d~xq3싐v Cs-\岁{iʽ+w7jW@~LA42䆀x.0 vn MI6Ajr0%{^`n55m|8(Y_&b,XY aU[ .ʁ(C4p# ]=`sTN9]Rk~ z!0^=~`ďwXR0] }U hiJe+ !|$.|)dܞ 8zk!h%Bn9 H|Q\Lԇdd?¯>dz;2vif9iʌ{+)So7~{fƃ@?dyIޗ1N\*z'hx\; ď\Qa0ws*WR1hz[Վ?9/~qkEZ_QK0’S3.k;Բʓ'OK<`0_>e&B(( ^'}F{̓g RoIOe-g[AT*]vei7m[2>lc=Y|6n߂W;Mi+ϙ`6?dxw72G,B3+W@Yji묯Q?ρxPS{i'O>RMIUd,t6 Hy]4$⠃}= 8PZ0٠L9,Sz ^ Rݵ5``/+xL/صzg>8U/CA{:z51l&Ղ-rBe3M(- CX! , )mb`FS>\0eGY հ)$DDE2!> NKNL#"+A3&YA;q_#=BI!*HcU`;1얃d)f{x3 Y)J,H.9;$+$O"9?AOyX~z=jm4p07Ps/ E8/L@X$@= Ιˀ[WnMZr最ًo}XZoss&7‰`=ż^91.G!x̯Ն  ! yM`V؃=ޗn{#pt.|v=kOw; ^/gAKZ OxM^uBWE0=oa~H]#~g݂ _mFYOnXY=Ro|Q+v!))7uФcџ"gꏣ}Kz9#Ӥ+Z7SǸgY[\9|'L/}S_& ȗrBNJ.#n]+p\L,>ca_ @s |&3̗.+n&a-ps݄gahLCsllv*wHw)Cu-aJJaX'ۤ ^A5r朴^o[} Zj|/Ke7PBJq7wKW,p6ܧn[ZD+ikN[; X䠬'л-HmQiNwh#m u79R:MsvռdwOH;,*c?$/+vq,0;BY )`,2K~i_yl%λEUL3 iS_ )h13o7NQ :=n_˹{o{%\pqە?'\yn}@^H*%IIo 2= _,賑kQ:yӽ ~ǎC!|3|)1 `[{mgp9nH U;zp++ _kyˌ1ct2L{Cz@g9Y`gk߃@jIGS% ?gBpwnLɓ'O<{˻YO,-;=cNW9ugHTwD/04-YF>y -$&'_Tc/A_Յ/БoVݥ]?0ߙS-FzՁi+ ]^i aZ"ΰjL>u+-;@K]RRX\5' DoG@ɒ LєeBkW6Vrg>HMKR0-,`HDڃ{v#꽄h/ڛ }ލv/\\9yL)d 1m6y LMɐ9@ ݥE@"Ip6jKښ #d+[|įx!஺k GT%.ӵ&ς&i_D/)cCY\qJ~*T#rյ zocƇB|R"{ ڸ!'=iʹ[3GAb9Alk2_USvsBDB|#i**\>3_uhH؟b[My[ς_ѡI%k-[C42l {ow[EH/0s >`IBOҦ /g`OL;Њ[ Ź W^a[H1IIAA+N-[/>SV}G=?];RRïd@Vf??]#ѧRW}VLd%e й:J{~1hŵ$XеZM=YzH?9Dwo njhFn*1`Sl)["ͮSB Ihpu{OoޟI"bK~tkeGEfg=aRw W d@.7^@e*̕/6yBѵl Op@qg%J!sl@LpFJ [Rdc$>KA^\\o]Kw|h9"+mgGSh5 .mAkQ2A>Y dO4/hKk1~=z)2.i^?nAҳu@\ĖAܻrooc+(#GK?~mZͻ ZŜ) Mmy< b;Z҂BA6F +h݀gd_"DD.@tLt\!{jU/B #smU l;> lajlmomDbwAX} 'g&x+WLeS#!qLC2f)0=?R`z'O*J6/=ɓ'OK:`ʙb hC @縷tM$WmMn}_#}Fd ZR?ku-k̓)d]@p]]`*s v])*ALqOK$.9S=nꃦ5}R h#rL~7A7^p$ShyL3d!HkQ(Ƈ9f:n0Nr@M*JG[YБ #7-(:D_s\4C 23t$$M ~&1$(=,ѬICgYrc(/-csHF(R 3mM/OlLIM76~zd>7O6#'c<32 Ձ xU߂Ȅx' gp/0Z3s%{^?m} !Dp1n>61f^4 Hn pP\ -xo>7Ga FLiD=x0Q+ ]{~bS"H| z=d*5`?\?_/I n@dThOJF~r0_ ~_?'SzxOBX7ָL2uAΣWNBa_z ٳd>bzlC3̐`ZNf;xG.{- ? U3D&/?o<;}͵zo_V.0WOlKvr}ujk0 A`k y^aHF`HSξ^ 3$c S`h[:j .Щo~S,vnP[ O(O{i=mkd=?h)0 S͜D[Ex !G4ͫwqfҮv~';\AWG\N^OG)O]W@ϫhTAzJ@v8н/p. zX7j*Y%gAׁZ H d|gMn,W? $$q]_? r߶tk{A/yuͿ@}(G4k:۽tY\WW֝Y*{E}:I CWYcs2b8t1o=΁fu@iz.u+9 9sRCrd@wF;%XaO\uRCnGsOB</?ȷ&Ռz!n>n`v9Z݄xXǕw\]y1q(]%!V0w!AƂ!UJ4! vDPLiYdnOTg35A+jKzn{Yx=H<6ݘ9ќ)Y lnìF5!$$Hijk{zxOf@I,NIDATK%{ච'$-,N l+{ N۶?L"O;"@A fh/!g(vP(Y= #?@> }vP)kkѾHjƯPc[ NBρC/M슅 M/`>@N%] nN8gO Ғ.ը 2asۍ?!Ev~v Z@ lq3N9`BYpؠ?|0Cm'Q*{Wӫ]'H<|8ހpWҭFg4p1]ur7%JUNr\ I4.Q>'P-UpZA2i&N@ۀZ)Уzv G^@eS 67̷ 3HOHw)OD"7P~6d y+]qp߆KÝNSKrtD@œׯ~rg;7W_ ^.T=U0e]Ar L VeΘuܯ1NCdW$;i>tfpRLfZTJAI|R8to[S2̬~k\kp=abL̙YrAk7*ooH֤uXsd 6>S 5i鰟Lx+Pnt;3o5 ?xBJV$GWBtGҙہo,ϳx4Aۻp䆜f F?ܵcq.]3%dkV$pߺ{>^| Fṡzdz>ٚ}_W%~yQF `xw6̷2 S;"}S=)~U o5~M>Y~<2_ܿ & D#flM5L3_/!< Tޔ:zS) A ZRLҦ6)(bF[8p'|y݋_w|7ɓ'O<坠/bjvzwނwt%j\3?;2_Ѵ/CJJH(3q5v/mWH\ SAdLtt>vVT1_'A`(4 j4-Q!y,%>uFbҝW>z5@?X67RIcnp\/x^~&2|*] sORR\<|eY ]/v]bp:ܸ p j[cܛN&_ w&DuɕFG ZPl.n~WjKVn[-@UG]/i ݸ_ #bB=R@ziCӿLޠď%CB{>}(诚nR8C{toO&&Ȇ | ly$L``x(xOx/#Xi)M D2A7H#zF7@XĽ_dun-]g@٬'2B<9 _̈́Xٚ]"$'&)3Le0:v6_ huւ+oe"^, F#O`+yO]4&lޗ G=`ok\3)8H+:@&K>H5. R%rG0La%@A[qHә1"ɗh>ږ -?e<;tɓ'O{GFl7B^SSO'r6mWKz+pߝ?EPj(pHHʟv)߀7{'h oSĜ1²I6 fU2ï $IJGΧ$w,xq81:5= 5s]ri#=f)_ -(N/9.@Kk 6V@n 9=`惭aثSdy$*zQk񣉯'32{iC;lE1kaWIiA&Dz(OyR=vUrHjd|/L]K9 nn/-&w+6 mof2s\&q.z[ `W2ɈM)*5eWxS$"[eL 5끽\:h;ms: R[K %`F 4>Gւd u9'YrL+siy6bg E F”wnr}'u#4%nX+Jra:B\M#La;!طm ;`j6BWNt'zzx}?,uFN%-AYvx˽?lq[6INH< rbeck,8_J I| ^|=dN|VAߌ g#qτxh Em@B3Ӽf<4'U@Hvx96 DN96+""g '5ooӫ7) -{V>1lWMޫ1n5v{s%ܐf؝MaG+nBƌN)ׁ9O'li6Ha+ DrgfZZojp'>w@Cꂼ,/pyL>SY. ù 5/4h-c9 ځŜľއޯQ+fl65w@k,P \ EKv0oNT^p,w,%u0W1ԗߥ jwjJIKQ/T )-\-N/h&?:=( i$WHQH ;A~=r lC;mMځfYb,:Y/@4^d$@V~`JRd̖ ﵮ+dq XHZ"$^94>]!htY =5+dR)V |RS;|mu70U-t*AJuACz%U!QҟZIz=JtZ:HdG4 Y~~70D~k#g}ڻmI69:vz@F3WrARQnft12AAxxwH4)%",#{̿} ahWY#:)TF=B,_Q)fAoeo:޺0jn&CvoYf6H|? ĀwO#,/W}o/Dԉ[{AdNdU"#Y? gL. !g/m@^:{«n,}ƍo̴nL4.P#ߓɉ' u(t)o/*XNJ|WЛQ2tven6Oi`X c\s{@r7Aج7/J5d B:GGApoPӯ ~o?bNo3 g)4do'xC[A6Y " T"Z\`+!n#iI u4gw]-O#_WC]9QՐ=*[e 3)\$pp"m}oAbPN5$rŠ?6j@bRHroFEVK~\ʵRW,Ux$LkP14 Pʿ!X$?)ff-BZXk&kL]7b}bi_;| _]iF-B/Sb<*T{(|8CAդmfHI{A/:];[36as՜34R(F:@|.DgD'/}in}2@6Ϻ<"k+jKi9ni89nt8-Եs=A.JD <n;Ujim_3@?S6u]\_wUpWyYvӁtY!w 9G*愹jl5J0f)[d6# \iNm` V{Tr}reh>Y#R0Wefm՞fsd6`ƚ" d9,EAN)lw;!s0.e)oA4)sSmc!ߙqOM[͆`c-N*`>݁.z6&Ҏ Je]{+ ~yB,߃ټ#+ͽ`zf# t?M y*5 v lHLʱ/oW\{\q-q&dVJ5w4ŞŠx3x}`כvTG.hC!%'9Bdjh"#GKm]Ӄ:Dߍ6._6!Q6Zy};V%rjʝ =@܊1rk伒܌u=bCs7LxZH#`NbHT ub$&ܬsfw~y.4:\%x,?]jR oݤp`Ь}AS >h}Xh. D&[@QusA`~Nj@+~ {ۚ?˿g 1ᲁ] <6IT Z~u<&mi#ca#y@?сp$|`\2;fvUبO?G[MA0`Y AF ս $%b e4o-F(UF "@Kyd'Aʛ|! Չe^ru6xĘDe ĒĹU-9^[r_mcK!~ODq5) rNnqRHn,i_A`&Ԯ7ѿ,[)A5HYF{Is֮ĿaAyHyEژq`ۚj~6j!,t] Dtpp8 Z_w"=kaU史k!`EIF<u_5a=^?]ҵ}gc۞ 'j@16SJY4Y3u;@ K9̥9{%I+S64 ޅԂ6"*z3Ϸui]YKqأ')y AKOi v۳OM#^j4 /=R `A GUWtT5t.jajVm຺~=\ZuxO͠wf$A,rACآ k5n/0U5{̏&Z!pCZE{. 1 )`ʢpJbֲ6CNW|@n3r8Qe@i09|(056 [eAĴt&ze`J:fH#i,zQge|&}5];뮺yFP4z abf !Z}+PhhFێ!Ho@t1$޳/]tas;i>rzN7o~уnUd!Á.0&5pl2K~O.X[B*ͼ`;{(48=uivf+ ^*-GO$5]=fK宺ˠm) dY!z(E> >o>*8ˍo]ZR(\ ]n+@M0' .+.7ܥ2gb-4:*$oy,ӹli36w`0b%%z~U@^Aw[zA屧 97![!h<%VrSrfWs.,$z' K})oӒT`, =mgFBA0&m{ NDYe&/lH5I_&R!&ӌ6de43~m߶J ԕ:;ueA!`[{ͽv[;O+&'}K%zrsڤ|Gՙl o"lCn&qoLM;7Bσ['BF3ħ _>ypl7]zrjf'Lgҟ+4TtG{A*"3" (LlL@<\׀ ZLo=; 9n{8pn= 9Fmmd0H:&UR-@:KSn" |)c Ěp9H4m E$+48AӨE_Ӽ3W@017Uͬ`EfLԶZ>`.'LCH_fz} CpH6VJIsOU@ܣ6B2 Ԗ@]*d xqoۮ3bVr E yVJpփNg3d%Rxl42@ޒ'w=g@ q?Bȝt?' <s;5qo絵fC\8)zCk#o{Mw )#M@3 ^M;ɿ~qltM>3nH~:M6^/}\tF=xfv"`^&#;q2Rq/ N4 rߏ!0>!&ijs:AΕMAv˜Q <,N79 rf>y_F1tdIW+2L>n*x4LUN} S$+!z$%t?*'gn_wiy ,y@GP;n0,Y @v YjHW~ zA.HLs} ^4L+r5xc^''QѢzh3wOW(OBp~bdpʉv}G+^r3ނDx @D3 hPU:{C~eQ"EꃾF,n5V?4 ŗAҖ+ iR~ޠ+#AN69MS6oF a#g~'84<a!p, EWLP$!'93Qr^aЯٮp_ %$[ Lb C_) @h<\ v_yy%'$&6S_%X),yX:zݏ6v C q:7q rKĶ$B 9 CIo܀ 9 Ch^ k'"a$=AJJ>44 Q`S&wv.xx~n~[/" 2呌m̌,l+I@p:r!0%A68[VQGZ0I2lWSڶy\J.P2/xI.o׳`_}82Q/޾I;Z%\NiRL~`Ѵ^QsY/+WנO}t}ɓ'O<6ƨ :N>  wGs "II+vwpE+WJ!Z6euZK }8DF{FWw\[ό4qq[Fq4^!_ مn{*~tpMC׀pgRn`|bJ(T_ceIPbTZ USt>O:Ko/t@(Zbnуuwh$ffvf`ه]Ioj`x͗*vͫit`Ne,ʦRR ;ŨΝ dlNPH"ߘnnL6*ZL= Cf2HDfU`K20@hGhZK+j Inm,\JjHAe,RI)$Q}> RrF/@|pRx/0Cf`2P#<YmVS Tb;.pF:HsS”@vdT *^w*ܣ}A'^aҕ&`/~po0 ߥih#lW]&,$Ws@vHe vW Q)qwn.<^™p9]{v[j?!TH^eV7;kqK[!gElܧzI/o~7@f]Ɓ5|@.RL7SN˯$5"@N% e UvUu4߇ #'z .N 4^.-rC=q$, n8xÂf5pKJӍH$2ΐ([ΛXHw!~H6 s~r;ȩljg7!>210 ďkĿ)_0wR)[hʣt[>xC`75l y=2~[;DVD  agI!; I73URYɐ8WuYàpϣςmh?sA_"Ph.͕p1vi|=pҿ6 Kd|/?cbd~Sµ_&4(sϋ'O7<+~ec!!kxO!XS[.9gƋ@FxLݢ1Y{n^0j:47^CulSN{_x/ &A0*op ~C D6EvF,DΉv`I0 M6bvvB?b>L0//AZ$ |S8>i#;#ewO#s3RQh8H:"L۴i)%c&unWY#OW'O;9\owil8|no?Bgr甾;7ƕHشFPrNVB{Heg|e'E:@8-3n%_ˁ3ˎ]_9(\K_q:U.w}RDŽAf 24SY@/^x*cI3Sc:owR H,/MpgBln[!iCtnp+=nNQ d<ZXoqv|4$$''.oA=+a/|V; Z8f>HK9,;eGh#0y8砏i)L<압 H%d4YWRrAnJL}ޔ;Ҿm)wJ"ҍ?A9$QWUpA`2#' _k8<w w"~q+xx]ls|o#DFFCqH6/np-Os@6i ǃ,5M]>i]F{wj`' ,p}K73tz0HHۘ|W^;gl?/gɓ'OqEO+g3+UO߬5D,QIÑF.>`]`~|}j`qz ]F^!ѿb&/ `@WO]7Hִ@m(UiSP iCu3z+; 7Ł[޵ #mhL4G;v ? (/qpO.)(eC:7CNi yMvncfH ++'<}MP_ Hڢ>{.ۄ(׀ 8vH1I"n $ *p] jUYܮc$7`^LuڽY37|(`C* /-!< d@YM;} 40.BB1`ٳUuO~d;(LP=)丠 T>xTڠgzx._?oX ެ7* M 0'LIS*]A7|y 6=2>~ 5Ǥ5'!nrlLwWĥEՍ>`幗ԻxVZ89zi]3Y[sT*WD^&nq\S5Ћ|5.3'}ww4vP' =`_`S“w6\{rpwW@Fn hļW.gu(Z;!U*ޯ#Jh >UWz8 d-7_j~[3S+!ˌ9({L>(0eAKխ__R,S"w`Ў))Dgg z^m)3v>qhhmQ_f!߻_g&YU| s=MyҫȊS?TՌfbo`( #ޠ76vJQlgςԐRp5OSv 0SR`v& H0~M 9}`?|y lQ&@H7 n!L6Ow ; 7'n煞^G^I%+Dܜ ]J Yco@eO041L{-w@ޗas`Nl9 R&Yws jSoʘ &q`_@7Z'tf"C(+{d'؆6dۂn6Bf\Ϩ 뺡BE3?[nR})ϟׇ物5d˪xλ2JuRǀ&9Uq tR(X ~ILݭ vj43404 @Xue.1&c/@沈gM@y)f@ԡޅ?uGunKܛ\@*Ngr\rn}p]HWAw*Z(9{o.8Wc{W;+ e% seJ`۝*fY OV/>ߏ^LD.mTc4*J-(cfkQ~FܞO^Of:!)6V?S&,,,,,,{RMڦ8b|#qQ^S(jg&VHi.P1"e-Ak` e AFq 6&X$}6`-c+CYw6;gv7vo=InvjgVuYORPUg&V$'dg3l{Ʃb4^tT9@J?eA::i끴<2z^< 2@i iEEYjˁ}ԤLqm3HI`*ö7}StE T7T#ܗ 4$lNR;Ẓ3-s;j سx{? K_x6y{ƀ'{ûgN^)@VGb=:3\7o)YRQm8r=4bS"t5ftPoEs&>m[wX›:6N'oܜym^uu/ w-(+4G<%?.<3վ`{f&ִ6{iE%POĨ  J }o y nfOKztm~q#<6_boA  Cew3+j*2$3M{'o\yp{|$O!$|ޟ\ Qz@>U{;$: uH_(6R*?)pO}4H{ yi+un墿i% dfPFr H'Hp#,PUߓ=3MWp빓_%v6yS0&dQ &*}Dd"s@Te;%RJm, PsR|0c2H/@.9Y $s`rہ*T"^}b$&=sv'Ivf䗜`ڦ"o)ByWz czSIS+!]vP|`Nf)А2mb4FRX&`ۭPJGdtSw@vU Ld'ޤYgu1j[=C9*&/5G,Гs`Jnkp ܏XSYlwoE_<~*\-z-7!k@vRF6Г)6? s =vToB=g(,J9Pj7jjZvLW߀! t ][Y"/ U=}xKRdN<nS d<+5bꔢ15  OukQ+#k.moKXXXXXXS oήJ>(y0\?t ;%Lvا N{ ]Č40Z^%,6N%߃f;H+Gf3ܕlPͥ5= xՎ o=&>.8r0=a*DΊ\+ NU/L[ˎT0}:E3v/ *4=rPv{],c1K3_ر/N l#C_>io^z>JU |a?jS5P[n9~˙z|`.TuUPwxt^[AU{`ڗmU]v=JE[ 6H7AfWX*I9,ɶ->BEDҤEٮJc0c FRsXOggVw4 @/@Amk3氩8p[3.#Aȇ!0!v8; 桖l5ܾnƎml\עA|? n/\;!{l`r`cv;0ZlGw9Hu8Y$ե4ULUr@ɸf$S5Z1}\ 2Ug]mG?П[YώȆ#Cdcb]8O72L=yN 'R;nv( k~*aY]œ]7{jF+u tЖЇOA:JW5|yk< q,ec3i+bv{[W yN PdhAO6^57iv &ISTzw**K%bz6 /D?6x)_|WQ;Јy=w4 p!,Y#uΐeR](w=w\P nN (m9!X+ks2 TM5EOs@),EA؋ e)HeOO n[ޒU翐97Bc~;8#^0!lsIߞ_`.H2ߚKy"Ag)QJL, }ܛdI*M'C$=퓒->sy.2iAGOћc+@ e.G$v_R^4;üj[)mwTΠj8 v̑?@~g*2׀I= 8="CdMz+z*U)zYH>OE,`Y@@5zѲCn+e'0Z?aWK`M0 yNCv&p>@/ {dgPrDk@-rn 69.@s˖l0EQt;~D1 w8@u]Lhm/6Y,kzb2xlI(;yrZs \ԋq+t.j7}ր\,o.A.S^_US`߲9ak_`U@N@9!biTp:'gÕ䫳 @ &]nr3!>ֲ͜34vRNK3@M~f-AP z(͔nf ?=ƻ'8+) R] `*ZʛYʁrd["g H~t)Vtoߕ%1п"aaaaaaa !isҚfm%!F*Xn'N=Lg*^z7Bzu2/B*N7g2'v=ofگW>SSOfb*Vy0TwY۸Ի{Y tR=O+9 'E^_~^e Wf@J6gwCTbC9)NΔ+MeA;݃3RփfprH<>T]yp b e  y!hא55_` geǸ3{1`}/5jkgFx>AAy9j#xfyR @Շe4o_R t3C#ͥ+'8z>r9~ր``Fƀ֨NttK0 N#]Tn_LiJ`<1L iJ#U>ZgA.eyY]gcm0͗KZ 9%׹OvS.w ,_h Ł!Y~f:lmL~gwBB&T #[ ޤ$VK/A,9*Je=X9.W,mj%ha')֛ ȗ/ϺS z`lpn|lڬYw@}%5ƾ`Y:m2 w;d])'~SZ~ %$`k"6TI | -0,KM.ρ?P/Xx% X) ,Srtyޖ>wWx;w8 Ηq|kY( ̐537%MpkQnn0 L)[$$H4:'Ae<8(]tg:qg: 5_}ԿvG΋| >8g ʫͲC'*'T}OG[mPA2T,WrzG@d&?7z '0tNFy ;!dLy5q11t˞[6L{x'ߚnmG>vz' oˆ;"k7y֨mܹ u( xmj#xJ=ͬߘ>s(ZP $dմ)z>0F ˗YM.?W nn\xH{@Pu3g$|#+YZ7J9_ 9 yqP{HMyd$tÅz3vՅ'ï@ryttV.J^*m_&2X]W) x8_qpɱgv[OBv0kh8؊#E miH]y [_"ܑ0^]EB)|y?Z,@QTUIrh?{uMI0i{ X)+Y( .Kd+[B]NZlNRM!T B)!ե"DD"䴕LI>iC*2*Tz̑_d%ufj$FQH2 j =1ܪ"U%c[ 1 g^,bsö03bF.5I S7%EƚNn[k_%l"9̑nXaV`Za8P(lpK/!qCSLq:]s{VsUl~:``GieT;US[e,Y+߫>PTAxʯ,[6IL`J4hs$rՇ!8D@/g6xy#^oFI/; zsRgi ρl5?I26vfA5P}3Ky5B䈍]Z>\m?i9jQбHVS#,,,,,,?QIFVr ] ~Dwh;GYκy¹b9<}tUeCvN8mHUF$F ) b$Apy2$Z}dWY Fp sGxXV!eDg] ](޺̧;AJ} |F= 6)JUA |!+2<;^-S3s&:əA!P|YZB|eBDo@WTS_fO.}:pm'ã[7]=od_ }Ig D Z>W߃̕1Uf #-ԗ@S)"@.H5|]+,]wq-0UHwR}E@F|vd=6s;KOQ\y馎dΚ{WAũl5d,V <bkf3@W hGK4AFY R^jHHA 5L23 V|R5TӗsX,SB@KۋGv e1 >5٧`Oq+ F΀< BnVy|`5PpP 6OQip/I^Y 2Ǥ(S3nn).z:@`l\(ٞk(\m-di!!-Gg~KOɫv s&xHPU[UH'-J8u:A:HY*U@I?5ZJ/iʫn $os:Mg:v'(Qg (oT *k.& t9iD8۝{<%<<;{.b|7w0c#6;v d*V׵rTEbA/U I 6 &J eg>*K* oxՊݛ}'I [vZN;>Ndgen -̋v1fYgL/D`Vޛ G; ZO8HN4:-d- *x%~D0>:}@]ЅU=RzT~aG cMiM Szg.v|^(ޣeeUͰS!1Z4ek=9zuBBzr̈́K;͒"O@is7 xyz ˼ W@ڄBo7 9oAv]ɊWwz?p;0cܫuP/z'x[!:Ͱ+K@V~-/ d W`5_ ?Wj[)Q|rU9N)>-h1dV#{1> y,7R@*T9J} ,.5 Х՛m}83J}\v2YV<' WfcSs ]8=<߂ԧ.e!8"94=<.Kb ~Ks릴DjylҀxjISRyW/ڝ RY"Dʙsc1 , lU({Vv l #1|Lwk0MֳU3_!:7 .|3pj뉳7k%5`Ar 4Y U' ]&Z- |Ŭ  5N'vSA-W\ Еv!6y$}AQ_`;l>kA7Tu6 R/3f4P_iKq?feAN278?N4Hȷ_)LP-% W`\ve$AZҿ3NP@Pӥ>D}}M癧D gw!>}+YANI\`m Ebr_79bEme`|m DO7ymS-IρRU(u-"hwto}2spgpPr_?1hW#),,,,,,, `47[7E! HDUN}>E*k`2ݞgtn ^ U@DSXp2>iRSwBֺ`=26`cm/U T,{S  _c?^҃hQ}U]IU?'\܏ U9 /ܹ ^x&ٗ;sX :V֥ fttטuPt|B)Z)@^<,틐%Qj_g{g g_#ߔn "=RPBP=P:쭒  L;v2;4`4X <@M^@JJ.˟˧N._T_u$J+^ [\pV9m.PUT%yr"5eu2[dCqΰ>!4;N:0/v x1x.``\  _@*IF`eū|G.f&Af`70ݝ 'S 6p;sK.%S9> SPwJjg5'208`U =++{l'Yd'=>pelide[fPtJa^h$$>rLN<ߖ;!h`t̨ ɿ2z؏@ϨA j@! >$z 3y{`wّ]@GUx6w(0r2A9jd'g}}ӱǂmh|k\uf؄IP䷒ BB+Eit<,U4~vHmi/zpkSBoYg߀Iݲu%(.ηUEJ:S9I,_*1,GTRAL7[j3U$gbh!<lʺU!Y!3OfR&`ۃ6;*ZE-eF'Q rLEI5sЀÜ{V/1@W@v[oN s-ŁvODP[hE.@v7].@}z`rO^ = :C_C Rꂴ3#MY;;AsF9A*mLa}jjhE_uPѺ:1@QcAUbQT z=cEϹ(>_>J_L𭾕GiZA')S6cr3i5Q&'/1n/0(G+}AB7''_h>&{-=S=ѯٮl<2 ?RNPgY =[T>l汯/դ9#cT:0LzKDA}k@]lw{$T2N$wK~/}.܅ *}`(\|qPjuB E<чTyL Ϛ ׮Oa{Q?͇Fq[rVUxtKY*T;`Yf+xVi5|pЁnݎeO,/oN|b,gB2y$j8_.$D&9:qs"##qvz 2 v$w.}T05#Gyt3]s7Q f4eFn`0Q@(I:e: n怹d2AJ22 HE*8G $H]iUO}[xB."fO;C>>}IT'S_e`TNc:CUg'[t.!am½SgxcHi._Ypu#J-rBݠjzMopuAZь2PM3wˣw`N)Gm^\s +o#u1P\ ] md{<;[<=W}SڟE>vZp;{<jFs<5>p\t&ܕ3" O9 *MVv:K"涑& HCUjgyJW(J~l2l+xƶ`zT4ߎst?/+4# `>7C>0w%DsNN CŤCA*&W<T|\[SC`3|":Gr5iP$Ț|1y3d\N; 3y=._c3DcZ"YT* -s bΈOx#xQ^bу o!w3nnP,zy ו׫{ggg\>޾;pg5GCZTGM[ 6+BPxIف c5.{ T+ok _>_/xR5ҐS6u[.n ʟy܎2|"FĮ8mfP 庼Zz:z/Ǣl!>oKA\se@G}P;3U r_]T L4_}u ԗnOg gmv=hNۜ7G69M { tS3řNgg0M*SYPT=UQuL=0w@5Ϋ 2n׀4lHDҝWhjꬊ[uʁsyxO'zz"zB'DrgT(xd{8nUL.)R% LSl\W} +|EY2ջ582Υdq -dPjbHUJrKImPJge/Ex+NNW+@.4(L^sG@J\Ǩu=O}%!=-Aj%Q|2theVAv̄?޾{/ X,J`^ k47=:\cFlB&if< =`$[- 7lPxcR!vިxU]z HNW7}79jI/r+b<#TspJ)%ީk`6E Hke#s )!T)că ÜΠB)6;ǀI2m6dL~w;j^.?IPIAuu! z^Qėϻ\dJBhYП=|pvnտ*G_G/;<ʋq=ƅE -]g)WǞ7 =g1Hq\.+k 2PX Ld+>]&b>yhN'x!"dNI=yx$|?-})M;K*e ްq`l y.2w90n*Ps\71Pկ*d{}t.]s{ 6'8k ]^ rKQχzK[P~nܒ\r\3c{;`g6{zO@ATjކѓ#C s-߻;p{YۏOB잙t7f$s9$_KK6JR$oImTHM;龟#vF2nM{2g./{J~gH< !ES Ti"U@M ( v]i @fhp;H1@S;zUJ)Gb }S0 "7@ّAv9U;~2K0C(>8Nw m_;=ap^/SsPgWEn ;lFڀ}dIܧ4@>fdBu<0t&M-e+~㢝 xHK@2$WFPij׹&m(0@ނ,1ٶ.4\f=4?gLjI,) m dC֗=sr!|2]806 bv&={~ m>>=2L‹'׸@}2}H˪Iˮa|blI ͼgl{^Rna֙u`gb=U/F `d\` 7U?l~[T I$hjK}j; 3\= 2ZՖ۩7uNP9SCsTyg;meNj>:Z STֶJvp߶o)QGfF<\Mp]PDʀ<>bN{UWRTg\"$6&ÜG2c0L.s;hAwu%i >j LZI8)*VKi09M) 2RMV3As8@ ՛ Y,W`Y j:dl3 H}'u4}q6&NI[$KNsx y8 BzBqm>i`ڃ"H[+AU*tqEJʂNdjLek FD{6tP)Ŋ_غL辡~U=,,,,,,, MG7dsyCu!S? L=>^7OE{A\bYe@:1H^Yެ.ᣯ.;߫xŁه{.YѺ;%v;DjQ14u@4*C~H/>$ E5 rI,۱ppf@vlgwd,TE{*6A0Kw34n>Pɠ&~o& IJk_{wyWx֫kr~uި1S@v7WW~l߆~2W蚽%_)Qgc [5t'(&xP6 ˪zb '|,OD; dlm:9/>0؞;f4;CZ.ju)O+{Tq!e A+`dV zy DꎺN󱞨+>Q›z>4"H*\{٩K|tNI8hlÒ*ycsn~KGOoaaaaaaaa=~;qҦSؗl=>g fE@!Y]M}yUu5dkK#Z|*>؛2 }DVإS2j+x/yv$Kv?YdJ1,Sɾʠ1*HPKt g<)$ $HwnSA- ʓ>B\׸1P+o{nC@! ]Țz  r Z# cJ!(3ۀ@"PZ)e_ v_ kJ7*' k_Vӌm Km7vd63NPȗX`C ]1PC#0W~ H_&ث\d/ H\?)3\uN_?Hps 8gR ()r?i (O/@ޑOAƐE%v77䡿r&{r:UB~h4Mo\@xrYrI@V!m[N}w%-<#M- #6^cq|$N(jbPpz&5C+0H~? L#2%!k\樴Fp]N;c!3ցYhru.NHź rmw@tд~o< %d|f>A a| rBQXTS8H1gkDklxT|F# Weij-~ߙumd L: e)nsbҕUn s٤6Nй IWZ e:pf2TC:~"iZ81ܭ K#ّ.8<lvҳ 4Tؼv ,,O(wlNֲ$'r~3),XBʤgd]:r<3OG^LWɤ_='g)# ,\{rHa|n_٬(zM0on6~h/VujUfسB*oIk"p@R#!$/x l"ߐўfs`WV_)s8cY<"kz9 *^Z' AI=K5S~QYvJSʹ_s_fЭ· ,"Or8DIj8r؜ A/{ ~@rdл7؏X.Rg'ZY ~v1`(n|s9*E&ܠs:`v( gq1#_=/n\?mnܯIw594m팷O~^775y_{~6UbWVj,}ǹ>Ѷ/'R⫠(=@5W+E e*Ӹ`١.+]ure\(S Ȍ@4dg e\orցzq5򃿒n]H)ur)(w9 ؾjSvMNu!ŭNpe]N̍ޅm hzHܛ["Dߪ?d^IhG4#RhR=>{vH\7k |fv[ٴrg]-@clyiu޶@|M9Nd 2 +̼93^d-Ⱥ8NrL)lm[cܤ^fq祝Mˑ-ս im??߸%۝zO,Kٽv&NL.$^֭tAg5K*Y5ݺ򃺡A8Aw:9s@r+_'x,: 1* *3C Y [U`Kr`#e"38=Mw;WZ:TQU Zh"vG"quDe}wb 8!=\`^n|rT=ËWN:NRʉK̥ێioaaaaaaaa*4z<ǫ!cά\E4~D7_;O*RjEWwz>ɐSRc__ =''7 ] PvC/NPIBEM-zCg!3!PFПFD cD6٫OPqG=. +2`Z٥ [ʮ pmUn__DBAAޚE!G Z罝㿮g@ʺSI?^j} ܟ{٩IjE"'}s;#+ZNAWkm" +3"0\j3<|>:kM)$ȫ+jk}$gd p^v.jittyj4=ElS NWvEΟy;vMH?{)Vhپ3;ȃC"xBN.@_Gd߀3rVq q?KV15bZBή-_“m=+2׆/R{u}Xl5}4/UEoA qwuИzw[ҍ#xƍ4o7ٷe.[kNx6bȇѫC3ݏ͔+B#C}hwRU*4\jKm+0,M}椂Q7sx> }EKU>F9k$稠 HAPTDE2( *JP("JD$0 3csik_笵쿛juS}^a<`dYlr"a|`iBY{H,A$뀏(-YPP)J$k@ݧ23K5β`|$5^>6pX*.R!Ao c3A/ xD B70~Dq0K.5JR&Xs3DBol7G!#EVMuY,n#gbZ(iѫb`nI bZk\>jKow۟g=+1'@L}59}ۘ{q@V[\]pսhُ%_K\PI% '@)]Udc$8(. l1 J|e4Ds"5'@~&@&n>043v0V9uOFzW G/{R1yȠl(h/K uowS&ǂIUL)MXam?])<`T[^뫬iiڿ}73~I`FFB]uhsus1|s4˚򥈷s˕TX "a,'߉ԃȱHX fw_PjBzQ+[7B J{<t^wdpe  ω.; с?uֳ@7ƅ@mr!R)"і@&O&D@gqdPbn9pk՚G{í{|٥K QA53!x+لjm*Tx84J< "ƐksK{Yǖ@@àvvOyA5z]-s_Ze6-m q D "M W@KEȤ`S;y(/ ~qg dl([Ե10O GE l9M&%ȉsjzF[|,;`4YruzOwb*Ay9V~*oKn}Ğ@{I!XzjaCF&Dم jxl].(:њ~)RKVLK^wkҘW =^봷!͎ Dv F.tMgL1K2&ς,0~c̡ >hF{9@QOTu,16,cY]%˃j&tՉA"~ہ\TA*`g 4&3q<8_qMw $WYgrz7pmkL$^Ob f4)۽Rj}Og%]ݷ|gz4M4M_q"_k<`3 +`iO\}{ȵKc|nmh[sAuр .kLC\ǞÑKXRv9BӰ.UUA􄻞3M63:PqIi#P+`;&lZand7@^#M ⬸C0p~D gbLsJ=,FbZoﶟQW2 2fԸ4}?] C6_cy>ZJj0b,tgJ\>0&r^wGeԥGgB/s/$^{!nIlB|TU\̌ ?"B n+kj:hqΑA%7ɭ鎀 ,@ H~Q ćb.1 [%%ATv&cPR'. ~c+yM-U_*5UI˓C[`U.8# zX%kTqwNsqS[1+/ U*_3'o׻?lys{=~aTbp+6\RDQ*UۀzB> EU-lQ۬mTu'T+ -yV_=(Id?b\d2D4ΉѬhUY /RH3ct*ґɛ?YĬ_r^|lo5q;>gnIz4M4Mu鏸M кK▨.E ?u] Ev^5~01M4<ZnUF"țHuL4cd3$ !J+yrs/pG:Du󭏮QG6OQ*s!2%z{Ǘ|b׻`|ov@|'pDI*IgJ%?2P /6^B6TO_C]tε'j峯9K>u1 573;zoD g*RqcRԮO[!NqMf@vpɻR2ƃax.x_`5҆瓶dA7d_C]PTO Ⱈx DRܨY3@>d#X|Eu߈HHrk`h!v1O5A`!H:S (=[Q>%ϧfwSXr,5>0>=l//׻ІpeK߄re6MP]Q]VkGeɊzC|jՌ鋬 I瘇W;O9~vG]l1GA,8>Y p{#I~PCz}_ R w-f|3b#m!c" :#[qX\DP"D(njZ޳f3S#>U i[UAٴjJ\MfcmPGUqFqp qa&\ \:pA(|)cXW-3~2LCf&@B2yc"B{]vbEJ͓}Kw̜]<=8$KKf XIuL ,cX G @XjF&'0NAxjڨ 7fcF b:@i> B; !-XʱNh58&,Q5'6{`@DqC(Tm U9Z$7ji d4㴜/3"JNX" ;}7` Czwzxn׼-յ=/88O}ܰ]D>6<>|v @MA(LJϝQ rf6T. \U_W]@ }b , yޒ/;e1 DK1\,l9)4A7R0}f'y_%zRS{m[-GSSY\hac:ڕkyd½ii߇ָFŦWQ+z72Zf!o7KAΖ;ƏFl0(8q` 3f@,dch߉FwciCggrQTFTSkd@\ WF>5zD5gׯ"/ԮжZehRN.kij /i:&ԙآLOeWRg{rLKLϙgcQ]};eȞr`L{U`X/<% mvfAظ~uB̒f 4n%vɉ5:0x|mrdw5$0R^P drR_EvZm%`IRp?w=_gH3\/BMg睂/xvH>2 _{v>O[s::Tj+ jɸ)cAh VQL Yr]WF82?sPZ.z xc9z& Ol;~jPC ;!Z9 ƧLp5 wW1DzDX%vS?CֻGO= r E98s%x_pAI;go>)@񺢛u׎  5V g % @Fg^BĊE+Ϛf ݍjBeo^a=٢[ 뤴|S;_UaN<#W3v0#/'Orzdpܰ"՚weRIh̠Ԉ2J m 227(uf~b8?`f5vxC# e#7OEliTk>[15^mjVQٟn̺xµ^]{v?^wS4M4p ߳kDI7[n?s?|ʦWz*W?˘|Wy#:F s%Vp2V)`S1 ̀LuA^ãC` .EKѕR?J)U>R_K›ܧA>!jGwE|5!k]EmB5n|>*VP*_4^.iEX`nP:Ap5..[QCG[BC(: Ø eOjBͷj Iʍo|qm4vb<#oꨆT+5jJٖ=:Zt |N6Z S@ purq.iI)?#!;g$Bǥ_9E F΃J`ddwA-ς< vMu~S (gSeMXؼ1 k(9ނ!?{[=}nW OeՃ 2J韥ߵWzZ\MRe[(+~5rb&y(WuQq!b*3FA1&b.Q̳7_4ӌѵ!={ܫ}̋.8>֧Y{Fw(3=\Wg]ݪЩWv;ii2ػv%ʋT-[vlݙ{]ၧ q|_2uZXpLڰї<^j~PrS],05J|lkr1XTu" l R#\kcP g+m2SBQcq|.kzd AZhTw1㧀'p v4?, 4V"nT&TOzhI"9Y5OrV׆/=\ ]m/WJrjTRB~\* Dv+)wn=zӱpgUylP(n\@-A~iqNFEvzi `8DyDUR@+^A]or`+ ֓OPZ7n_}>ȩyD@Wkk$%% F eg_qLo+'!x&Mc9pQȟ^-9V4߂=yjx{; &,#zTٕS=5c8;n d]e*f˫exdȱ̫%cY\%KyxX#JKd25VEqI[ e\G4. Ml)y''V$H ~%^wI4M4?6﹯tҹyuH> 7![8ֲN*s?4ʁcW1'?[77Swv:3k>=خIj?A\}MEAՒ%3 ~+ 8Ŏ6T~ʝN.fxnVy3RU݁`@N{\ż Q9Wt9[A: [| b/2 `x&Gr ?u2swZ ߟsWCU7TJ_ 1fRCiǎ \9; ȋ|sz~xz1F#;;X"T֣ 1ɗ#1ˎWv<$jKlM%u`/W1v_;g %p;ƖA&.V8:Wf|&B+j{$M6Uz@vY6CCӁŌ&c׎ ??ZP:bBC\e+>I#RVvE>j1?R+TxwK,7MU`g2^= MA#G`ݶA;#*G?~c𓖴7Z:8;'3$,}RTlNɵwv7ZZ:d{ ܎z5{3Ǘi8^(3{nhiss}t MH"/aW׵-Yqg 5C^Yͭ-5Mt>j_2ƩG@LqzKgc X 7E~54K 'E݂*?7;\ <=R~@gxOKI9 r& 7I>~eИT>UAPFas }օЗ&fT >x`lMJy9r;TfwͼWjjٽf5KgM`K$<;\G;_dqq?|(6=g[wK0sc NcA$iɖ;yC>=kDWz¹T k7^G?7c`O/MzPU"eYCg4O{ .Y1IV̄*4/cA~Zu nB<' :3vMltm79S[b ̀K0/8P!@:]rWaPmz|2j *fw_B^Gou?!ۃ̄ЩP݂`yQxVZ{S?vez+<wVclC@IUyuiۯ~pi J ʷr}x+׍pul6 AܥICag@! BNyXQ(^ )/. < rw7R6fj\)k5U'T#3cL">i{=횦iio[}my7_h^Wu=_*ê'^2 9u܊FLˍȷӝӧMSΡxضK5Tj0H}X_S/Tl ؚ*HM ip/aP EN3rn X_LWpWs)9>,Gk` E72>F[Y'1{" !T {:@[SN[=:: 9O\+9DZ٫!varP\izS`>4 !s K@7ySګ~M=*$(VC es6(: hj~Q|ݢW@dm81-=x޽J1cϻ#c ߧZeT^+{=͚iiްK j֯Դ͸vB)O{^xyK\ΓyQ|o9] p*[N[`lt ;;A8-x'ǵ* UU}|(QJfx(⋪/@:WOW_jL]l\s» Eh$ h@g`:~H55ΞzJȀ[N?i;!yjR j.!eAճ> IoS= ]dg%-@W*瀏2~KMn̓#w'@=-itgx:֐{sc{BY/y 'oÙ)UC B/X#ڳ v1Ge,M+[= cWQw' #ߨyS3:UШNU=s_t};ӫiii/ƽ.@vOC̲oކ)5+X\F%?'D A|C]K##ʚGN%B*JFu qM5U s% ~ZBA:C7aqn;O@xYd3pTvvTcQ^YK$ yT||.Aq?'0e PsTO{^"KCͳ.@7(v]pohu'T U,S ;e5A%9PPJ "ܞrNPp:gӵB[U`<(GIK8dJs-dͬv7 o Cw`x781MfCS),(ӶLbN:|)1bM0n=dMEF31.dSiiiO]?/ZU>dz ~ɭTp:R}FW]fU=iꨆ-=W#:zBB;@pzѣӋ\Ê+'B:,GO+B{ՠs9 (0=?ewyk9㘣h WAl7x6)]{hx =c>Q95olbv'8nWZ r2Z<#:;ćb(jʠҕSyamT(ro6)>Qj& t xnz;ʂoۨT/).<s~NRVFN˂Z~&75>.LOMHN IyPLC߂SIE`m O0۰$w ~{!ukxV2Xj~]uה{=iiI:Bٺܾ%}~7^jOg}twv.{k,6F`CHpc\u;iܭf|DZ&+S)RtSYΥP EC7;J<|l ָgO |=~YY/)ߺp(?/}Yy$j*юQCiZi DyxM\^ζr6Cl,\wMj=nP#7 ΋sl65< ;3TG TzB=vWy9i@ Ωo@۝.m=/f.ِv,b8}/k *lSr>sҫN| VNQOO3CWօ.~ yWd[(ʉ-iqinh\(6sfk>tuxz4M4M4ߛQ{^J%/MwsW){]=7#LlY,6e' ^ \@yÌ)5*J%ʧC6 cدڳnZ&nCcx+b6{ktK8!e MVy8更1I߱U=(P}q>5 OT(r-9wGetQ 2sZ_)CQ3>&,HLZqp}g%׋*·pJ(.Sz_Jc:Ar*݅CEA`],z "ȗ8AH{gojNw1V3UDb<%WD~k}jNگpӑ{=MiiϠ_jlQ/|=S9 E_;WO+;F^|;Zf5'UJpn24>6ZVK,}UBZ^i?>F=am ?AjĐ{08T2a+_l 0,ƂCk&:`HAX %8"㭐%Yg|p)jq{(Ȫre c:F˾S~=Ț2Nz P/w E;[ujR(0w3*eϱ6Bpc%}; [`9&ʣlG3T~%u;чm[7؟G>+K5{ӣiii,:k-F{vSu!yC_.L/nNθ×G-dQ7鎦Fwl ^zkpE=@xbB0{eYĬH/7kjcxN3Iv=kW\?:#S@> ]=]lo@˥-!5PRD*ߋJzB9Af_"_bG {5$?:%H sBhXpW`f=j͂ЈPȽSwlۘ bJ`(؟ ԣxqpnjm]'WHeسvJQk\/x&FvvuuD4M4Mt@[=[OO<$o{HO7ޫD_\ԷFy] 5x %W 匄Pi0 )9sF1fzBڬe F5@)y7 &`wP@._By'W@Gw ?U1B(Sq` 燎 =ft ?:Kܟz{KGO<)Y;,!0/pu:߹k5z*4M4M4M0u?˟o[}Tm+x~vv1>g]sAx48dth;P*FD@-|*Z.Q?p]Te GVo[(dڇ !Nj#S< fffB+mn%أ@$CbD}FϞhxw'. 6DpWEF>o 92Q"k\-=ýMw5pNsZٸu㛷Y`ۏ;Gv{= ii /aF( ʟU,eUmkoGOcEphY FQbڊ"X(=`;VDNEA}H̛1# ֙0(T|zoHkpL$d#2`?^Tku@ P= .=J{&Wͮ>[0:]ǝs ̦wk?EkE m q(.)ƹg }6.}n%ȨN/TL)Z"Ɔ9Rۧ\r'?qa͉L밬[WBwiiKҷڿ/8.y?HƼQu{3<{x Q}ΊEb\/"VN*Amk.[GnU&@i Ff#%l u}d?ٓѹɎ6:Xz`1X`uVY @1t.@ Pri,( ͬv(0'?+yTrPLo!h+!$wMnYy#b:+9,"U½?X<̊ݍ=2S{ii/iulЪUOq*'8?v%jMIq *Q"n,(V@l[^e_ U^jU^ۑg!x>]-D:xı'qo]lոu 1φ:2 <<*X vc1"p~h,yW>f-`}+ 9`"7nSyq  bψEEVYEG,G}|?7qVb-lNJyWםs֗B`ҙRЏMW}WQ4M4MӴ:kƖ<ݡdkAJno{\#:9cv;븒.#xTj_Vqg N=hՆ - I`cd+=XԈO,x='r;GdopP?65 ph gu$ˀ4bpj;*GST/_ 3cyyܹӜ5Q1QXab .R`z+_KN)O(ZxsG.O@E`ֽ̾׫iii:k+5k9g/p*!RO]9RuyXhckoY ;ȣ;A.gw1 b!,4A5*Zs",)`w 0%Ix1|̟9|<UQS6s@N"E0fZohy(\nk꨽n~ocDMg0~tΞ{iig][4썾 k9!3/ğHX膳3Ѹ=} mczkgޯq9LVQb f׈|b 7 /΂QΈ'@T ~Aq,dbc1 Ub,e J.EF;00ް5Ftgc;w}iʹ2u'Qb|!'㍓8C rH (c"[PϪT ޸+SfO0_8f㣻Zs9tO ;f)mn;:|ڥǽiii?Ҹ,8 ] 558oDc,9usEC\.q(G~5IyJMHZ*w^!bY2MFFr#ܒ{F9v;u$Ey}Q\tDIJV 2 1 1000 65535 1000 image/png xmp.did:0c831759-8947-9d41-9b32-c406ffd0bc2e Adobe Photoshop CC 2017 (Macintosh) / 2017-09-07T15:47:16-07:00 xmp.iid:8474282e-a297-4090-9ec4-67a5ce2c2642 saved Adobe Photoshop CC 2017 (Macintosh) / 2017-09-20T10:43:59-07:00 xmp.iid:0a346c27-b61f-4894-a372-6eba64f7704e saved xmp.iid:0a346c27-b61f-4894-a372-6eba64f7704e xmp.did:D7421E841C9C11E7AE80C06428B650EC xmp.iid:87ef6569-9cab-469c-90ad-466483c9673a adobe:docid:photoshop:17aab831-6506-117a-86b5-dcb1c549562e 2017-09-07T15:41:47-07:00 2017-09-20T10:43:59-07:00 Adobe Photoshop CC 2017 (Macintosh) 2017-09-20T10:43:59-07:00 xmp.did:75caf17e-f0ba-43a2-b26d-f7062b8a57b5 xmp.did:D7421E841C9C11E7AE80C06428B650EC 3 ˻2PIDATx `չYd! K AVmh-Z+j T+RjE@ ,dd>ϙ k-陸 o7w99GD7%PJ@ (%PJ@ (%PJ@ (%PJ@ (%PJ@ (%PJ@ (%PJ@ (%PJ@ (%PJ@ (%PJ@ (%PJ@ (%PJ@ (%PJ@ (%PJ@ (%PJ@ (%PJ@ (%PJ@ (%PJ@ (%PJ@ (%PJ@ (%PJ@ (%PJ@ (%PJ@ (%PJ@ (%PJ@ (%PJ@ (%PJ@ (%PJ@ (%PJ@ (%PJ@ (%PJ@ (%PJ@ (%PJ@ (%PJ@ (%PJ@ (%PJ@ (%PJ@ (%PJ@ (%PJ@ (%PJ@ (%}Unt~߂͚h>}e*3@NN/lgΜi,g49%p&?>;>={_;W|M3__Ÿ2-5ofw564ڒdp8ѱ1zC?{/?O A,&M!̛z;TQ^~iUU֊"-&[[%.!Qʒ>ۆgwY|=8ΝT]IWO^]Pp`AqfHY>q{;˙5dرQc?~󠊽?s|z,NJpC&˝Я~~` u;O[ZZ[a͛M^|~ZQ[ܽz%: vtȱ~BO0C{z=#=0cA=?ڲi/=**R lmj֝[[k)~瞷~ӟ6|g(6-P&_Y$1!6n;/߽c'$,97ZBNa<7/ vgk56-\LU6`.2޼y-myuuuo%))QZYgVu >M&vXuf19*nd񻭵ŸUAg șo(v<4A׃'sir nؗlR+P2!q^jh\#\-;D7uG̻!=|/(ؿ]RT8;߽o"GÌngi)"f6 }FBB,z9rv)fx 6w2X#v6Ng8!xA}ّ7Sr߻ xxz4+99e Rp-/~I-^]x@LYlF⣥#nxՠo?l{_³ϙZ^ _I/òl]ӧW9"# ] 9p@uGRq;x>vfy,.D2/ϝhk;\vcgOvv62Tɧ7l0}!vKee%dʔKHcLފ7fώg͸(|](ݻwJEE]8b0X{\qIs[nξGn?T_ڔc z(v &HQqǢqִ }g.$$LB0m#$R;.vߛGz?q֭ss?THO'wdSNm;[{_||.+(=VJKL:-8-?c+3]G"xgXKnǔ5#.Cb#H^ݗW 3&pX~CT_ΧGuС&xM&v+jGR q&L;73ȥP׽Kye#;%B5B"CvkpI̳U=+q%'wD՚+VSTŠ oe2Pi G KSS9tn^Ćd 7D6K}'vOHbZ[[Zz]IMjT54mN+DjkEߺ_|NgJ}C;B/\xZ0yrг"d@R-KU+ގi 766[\Ć6lՋ.%ށ-T݂OsU3%33ӷr͚+[[ޯ<7!*7ltՏbx5Z&N`*7HsSt#!֌^Ϙ!aN8(FɈ2<3T>,./lښPˈjݘ"5 >]n>Ex69;}GW wigδ`Q+>^PmMƦ%'y3k*hWȹ'If:SrRRrDMcuv"1EifCGm/Lf\G!qX£>2[7ooqBOyw!QQGc3g{uC쑭mu5U8o 'U16ݎ>pFJLL.}Re媏 fw ihJxS*+L&CU\xCv.>vټLν !!>{3\MQ8/qY6j m*a|R fC Y'#ޮ,oi yjٹcf|mD=o@衦؅uЂ/K,s2lHvۭ+){Ɣ2P\s{(Ǩ/=>7Aطϑo*\]n '||GzSف}CbB#Ɯg/lٲ. qf9 c8 s&AI. 8z>,Kkuw&ָ֎iYI׶SlWKofJш"sXyNJ;<{voq? 1R#En7ɸnNx<33T,[,ϖ؇ Iۻ_0c֮dvRT=C^EN+knm⺚cwUFgga;wɡ"iיHÅs" Z(Ѝ "Z "k׮{ [KjkfFRvَ6X%IvV&c݂~yˑÇwuNXvI&ًUл~PmW]u5kiq}\q:!onټE.4NHaSt͸f.w&bh8}mҫWL??n50+ ,;k1;jGĒaᡁ9og 97@@x?r 뮽wjA?4F揀&,-]ܟt9'qPeM=9&s_937Bt^$q3tl=/.)žV7?ZAFHx[(P P7H"v`0j<68C '[dW^` n?⼄W|L}] C{c{wɇ^(qQvqR(Xoq` EJqXu8?*_rEȣ>Bp=L#qzN'MOsӲUT[t =SԲtozp`G)Ʀڏ*CG9Voݵc-"s>8 M2fX>Ćm6 LQNx2>p$;w$dhyr|~.`vjӋfƸC4Ïcs3־7[qxw7}BnP*S} h0 Ԣi 񞴁K,{vKRn(i.9z="Ef#2^ӎZhY+$9>T}fñKv+p =c 68Az1KM@p#oAD 9X\_ >+Ѿ;7OʊȪGB\l/XML1Fce6n6馛Z L$w7575xxO~n77bv[)b>hMH;OiVoؐuXуenu3f<~f*Gm|ź-}mT)ƱOLmnQǎ3؄$_I,Zer7KiI,:"Sb~8xbftoK")?Z%ӧMMCWƟy|cѯ?S˦g#hqxVW[ӎ&͛6 ? 5P-֪ObAqޱQ>YC˕^JjHS(33V<{MgaIkm(ZLaNy1;CqYˎ$tZcVtqoL1QG؟Ç _EnFݿb c߂3ia๡e¦`3FgCF n8ꎊʺ VZ{] nL urGmCӟ0%H >k݋jǚ:tZHf:Cljrc)\V1O؛u%1uR A1 EL{ V7Yv3@$6&eqX!N=biq5yƲ[9zܝG{;#V'1Fa&~ӲR@ZPèOXb1n:eR-ut.C@ptipP=ܗn>kܙqeZjMM-rSe`휿9 u2BOpulhp8Seǘ1]ͦecs06mz'E;U' vYʺaE m߰b/|X)TEa8d7UŌg:-3"sƾfJG`tȊ3F̣]&blL3I* +KTt|cY;9}6"og vߚͱ{yy_55u\!-i'qEieL=p醢^KnqpbKu('-.B+:Vf j +Lb˜0YGo~j lEhsX\Y X[rs%{X2Bydl;ZC ihr xCྜྷ~ f͈YjWfAt*j;,eX̖_/IM UP9eSd@Ǎؐ-gƜE) #aܗf)0\*#DMֆqfpiqu6#pf0x<L̙1RkvkűKTLJeϒ6Kvhye-/C2pmfREPƆ\|^cߑ;xC]$.n'E? Qa̩NM܂ϓ}:j\I4 q5LQ6y hM ʌ <%PLlL(l6&h)n [KsظA`1U_b#شy+n2))FL2RczIظp*^D/:Vy%#///pAnN@]ND e˖or/=Ռ8q^Fʌ9GJH]hv< ]W-18EÑlt p\"7oK[ {*c<&{T3 ,5n<4@--‰c.zcQ _ /%u-6"wذ<?[ѭG_3?:ZEgB߯Ϸ'_|nܕoHJr޽۬FKJQn. qڲ[Fs"OAѲU+\8iP0`bdXx64ؚϘŇ; T\ډI {wzWsK.z e >xM|d =N^qmVk0%K¥pX>O(Nfʬ;Gh};Hꫯ믻՗\}5ֻW& Xrbr=p)bTc@#єB9,'`.4cjvR{>v1x/O:V_櫧^>n_q_l# HT ̌'uPU֙n4v$h7voт!t#0/= x98ż.淚cb TLKK.s0;n[) CWUVkq; z <'lFχ{hʼnlCtdڂv27'|R:u*33h` BrcUMך6Vuf1/b\cXS6|/71^3F7.7Z%{mDdz \233oI$$Ep:xà^CHYaF (tL*ΤcAc{qkFg:]nkɥN%R^^ 1 kDHuXcv&)x֡Gˏegnq: |rG*j孷sg0IJKsd~1.^7&`\6{,acl`Xx_X9L?Rv u;dw}//drvW'% 3 Vn:JXGPX;%@QFEn{7EMީi"QȤGFȎy/ȎO#%9#> 9>_QQiۻS`U8sXHCE}q~x| I?+ ^s͋f'%Ԣw L#I4p_q6s̞=Ǔ8.n6b#kN#F8]Hq~v#UFqi 0Z~bl<3X<g'Gw-,)XybnݺWeCK! 3Ғ3s16E@%] 1yEl_p(d&'>!g'Y#@_$/ι޼`TikLlJ2{O 9,s d‘a)9N+*+>^)yiRóHbzD AWϾuێckրg*c!3s܋$֊ jۓlź?NT蝎L|@O+''|_eLl6;̔0t}cPL՛l3,!&Mg|15ոz}%:9)4.%˒w^Ak 3^zK807V}矿<3-e%f+ 5a3$(pGOAh%X4a{.]ȃmy<*cos.ɹ2Og䬁Y2~8*E0:j GW:h9t 8{rRXtug7xNJ.! ^CƜ'&$Wݏ=X"Ëkq3c!r'.*^Yu̲mǮ_y s Fu/ *8Vq-x=:V,Xfx:&M .A_JSL ;;ѻ.?Z9{E/NeӦMr4I0ژC=iSHh8 \: >HUe>xuwy,|s+/!猖LǸGIIYÆ-oysXoVJ Ѿ^kÓh3'̠NKN.4gIoE&"r:IӯoڴyK&[/o0qurHTU@p+ 5]ӥhF3"Ӓ ʚydܧ%,+$a9,^Lg؛`/~񋉹wm3gc̘1)7^>Ds9TXnXK dfC Ϣ|.^g\ۮ=o/[x9a+3^_;f$ F~#$Y+%xg"78?ݺ0zVΡCӶ8^#-5/CZ,q؜]Y,fn8btYî8LaK[ېߵ+OڟIG aaN'oZuaaF%7+mZ\Bի{K,Qwĸv^*NC% Q}ぃE [쏹ַO0iu~i{ŠHHX$/o@6@{'I߬,КPY]Lbc3{p BKi?c{KK,_0;KhL1;dO3e7e\)1h$ΐp,ay~Wal|ь^xḵxD>}|SW8n{aMO[SzR=ٗ`L\^^_Tne,YL0e  +1F!Ȟ{XlaŻwF 9Xim(HCt>\>u̙s{OUп8j{G"V ?s.{3eN{wرٖ(̚oOZ͓͗ퟮF ~Y$"GqiƑmÏ\q6?"_N$z#RkY&Wr֬Yѣ-cd[` 4H<~۸U2xPI?D&j9l-g<>k \/X@N;GQ(X*~_>E2qw9c}SeV=mhj|~K]E 9LRQ#a;*2q!@>kH`|zi#1`ħT(\O}pOjvkhhԫx -;BNoXHPّ]7Zz{dz"$B?I`ݱKe,+ %aX/GӱcܲFĎulo=OX &O@^zO4ӳoNMI\NLMCFb4Xo DY?1T8>P%PJ@ (%PJ@ (%PJ@ (%PJ@ (%PJ@ (%PJ@ (%PJ@ (%PJ@ (%PJ@ (%PJ@ (%PJ@ (%PJ@ (%PJ@ (%PJ@ (%PJ@ (%PJ@ (%PJ@ (%PJ@ (%PJ@ (%PJ@ (%PJ@ (%PJ@ (%PJ@ (%PJ@ (%PJ@ (%PJ@ (%PJ@ (%PJ@ (%PJ@ (%PJ@ (%PJ@ (%PJ@ (%PJ@ (%PJ@ (%PJ@ (%PJ@ (%PJ@ (%PJ@ (%PJ@ (%PJ@ (%PJ@ (%MIENDB`yubioath-desktop/images/yk5cnano@2x.png000066400000000000000000001323121412677075700204470ustar00rootroot00000000000000PNG  IHDRߊgAMA a cHRMz&u0`:pQ< pHYs   iTXtXML:com.adobe.xmp 2 1 1000 65535 1000 image/png xmp.did:0c831759-8947-9d41-9b32-c406ffd0bc2e Adobe Photoshop CC 2017 (Macintosh) / 2017-09-07T15:47:16-07:00 xmp.iid:8474282e-a297-4090-9ec4-67a5ce2c2642 saved Adobe Photoshop CC 2017 (Macintosh) / 2017-09-20T10:43:59-07:00 xmp.iid:0a346c27-b61f-4894-a372-6eba64f7704e saved xmp.iid:0a346c27-b61f-4894-a372-6eba64f7704e xmp.did:D7421E841C9C11E7AE80C06428B650EC xmp.iid:87ef6569-9cab-469c-90ad-466483c9673a adobe:docid:photoshop:17aab831-6506-117a-86b5-dcb1c549562e 2017-09-07T15:41:47-07:00 2017-09-20T10:43:59-07:00 Adobe Photoshop CC 2017 (Macintosh) 2017-09-20T10:43:59-07:00 xmp.did:75caf17e-f0ba-43a2-b26d-f7062b8a57b5 xmp.did:D7421E841C9C11E7AE80C06428B650EC 3 ˻@IDATx\W}lMՖd˸ac1&/$ @0% 2-J  nltn+iMl'C|מv;zBb&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`+LE yԃ>pEk/R|>fCN>3=U(-++++JV^-\ܿb势zUN=wa&p7ŧtxyߕh߽Po.SIMfT(B>_333rZL&TTTҲB:mlj*=a钥׿ cQ8z XЏ{+; ~7ӟ]m 㹐JgzW ɉ <(*QK?W;®G:~czEؙE0ϛB@«v{ιk`nhp =55r *gE>+7,t;Er34Q/++UUUʪڵk3K[װE=a&pmwsXx~Opܻ֭oOfbrl673[-5`? J>3=`) 9.k K+ U5UW/^o{[ /&`G,_8b/'nGy#oCoپmkNg3dUPr4Yd&<I=\<_󞥼\zyYP\ztے%}U%[ԡ^JcE1С>Cغ0=3]Hc"464 ª1/ t:,w\SSJKcl6+1O(l_.+=) ښlT[vRc~L?RR^~'՗_˿olλ>m냧߷/755&:M\P'+aJnY39<":%lyE{Ty_&{I/ߥ+VVZ?h[ԋlG( z|ڇ? ^}۶޽\v*! AZoYg*; 塺2Z(rOg:]O;G~|^|R^RRF\:t`a+>w}\$_>C0_C^L~bg?+G>rqwyAXԥDnrXfZGquN6{ZV=p2ȣe#m) Hszbb<`񱷿=!Ń K[?\ zD]~{o{]m} ?0g%ԓGt1yD89%!8Md u,u; > Wm1{^+ >Ǧ<マ|t%~-H?L#`A?0&Ps[^ϻv|Ŷm ԘGk1Gȣe.Q&y ;<,Lb+JK`OVLz3Z`8|b,Yguz9%hK/?߾{-I~D6H۾gwnL+]b^l&yf0RI`숰n?I,AymEwzD$5TZ&TO{ ^t˛Ns2Ly xDnݚѣtʿ޵{ڙ b.qeEN `JGL\DDaaj,|OеD}#:Ĝhؽkbj?}-o|tY#.0#@:e ԗ=Ɵ%gSrV_W: EWLpW!aFW,V9jX1rkez&֦<~x#rd'$ȱ̴ԁ.;5=u_ǫ^.AEO>+0_G3HN5Y8QӳSQ)GCL R9b%9KV"K^1)ľS }LMg40 Qn|b\BLw=(d!ϱxWh1>O1ͬtwuvX{Λ?O/Bԙ ,=!֯_]}D1s9{aTp3CSsSq#lXtc#漟Qw8ɰhU5uZN&ed3@Pd\k,EKfrN[m7|3λ+r?L'`A?oOH!Zr?ne2{HS[LYOI`w)Ij4)tUee蜄G{'u.;kD w9%%q$s=2R!K֏mz ,"K[bj*U^)K঻_s}:?L&`A?oOH" ,\.ҲL%RDxJVqj*475I/W9Iqd#lgA܋ pԩE-_ȑ>c 汶Ivjt-2gpC=^y.zxV+ZYꓲ'Km>;pmV¼U_yy18< y_|VG( r*n% d~s^8]wFFƢ*q.*xO1/sdeabr ZܸYpG^DؔFc$ž̽>Y$%:v^%}-aI /mId͆*lzfU(=,p/[TCccc.% ƺd5DŽ:cn5V=3F}1Y.׊I9^3P> 0nH2鱉Y7g?[;:u{6-(xg}j̯D04<Cm]]‹y~T !/bb}#”!Ι gp!NJ([KjձȱYu?gphݒ+S2.FGGG}rW>i%hX:V8{mMMpJΊq(겅abꔷ!QŐeIR8E:a'=ӵ xĪkg,E7O؅31M<90xTBT"aÆ骊$!XKTb{Ʀpe,߹kw^Uzָk.2(`ahcmS:Zu9.JkŤ\ o%1},n~Wb'I҆VIra2;8Pձ8c'sGz Ga^ e*).I #\(҃a0u~xӟGo5R,qZ׬Hlk,{fTnxVgp/QyaEѕ]:8Kg0͏fs]]ut|͚< <r4bn%%y]nF)籄<;[~/n[$mws⊱WFKD8ZF _VtckAhyw+I]b$4,ns=3t$4W(&TPVLDGv ^9~ݓ=Ff/zsϾ}_~[~w?LGt ;]UUu 岋NjDL8tP.m\٩Gwe +uqm, 'qf.qu؉S>gcgk:acThm'n+kzCLt\c~7e@x`llwkUǞ_s5-[0]D/&G%` ;\aC K_t  X,9|>u/^PHkY}:<:~_׽}1D?LFGCsŖӯyG.S3'K]Q4G:a^MaS\…=d$pDAdǂG+++:LB6<C⋖aeۼж1,ka9'6ܷ8t}I=G?Z:11g}_>˵àMprñM X~:(2fOOϤInԅ#Ù!F`aw{``(SIۉ'n (-Z~GM:Nan,K? Yͯ>X=F+Bk(*ºUKùǫ5mK1B(+=/V\эOL>&|9. N>:Rq`C=^}ͧwt/&G `A#@!mr=aeWU#:55=[QNF:H!{r6\k|m; kj4Kĕ}Dq׶h-,n , -[s5ln{W+LN[lˌpsqU=s8.;~Bj>So߾\zk_gQ8n=iJ<|fz0d8Wvym)ZDA }Po_{(FL FqŢFhc["MVe5ēG½;suad`(QUO- mu%a-u⠀}:{yb|,ѱ?+1}E5_H+Frh?kUՕ2q3S ruUUtq]OL0%)-Ow ccq|X6)f'-;L"֗в0KZpcև=}aP04Om yTP'A5+z?3XY}Hٵ3W-b? WN@˞w{?VW_/wT.25rV7/&1aˤĝFY+W.Ά~ ʦYBk<}#>'.v5Kpa^8eW^** eᔍgOdGf4#LLOݻihE^LOg=#ַuNfC$) n%%CKIbcF~եOktbtSpwMvk[6 j4B.WW8b-Id3) JJ$uBkó.p`fc(kXҥMaT)ʬj]pAhiiI\ ,EK}||,56:vv|Cq6i _oޓ !a1U/yK3²+-.460Z.ׇt+m6&-\@Xp‰ᝡ)1F5D:c\^94ޣuLc#33Z_wsmCY2Ջ>zT '^ֲJ Jʫ/ pKiW۶>yau)  wcy睗߳gz% 'o4ujRF# }Jx#]^^ɕ^f2)y*_O~VZԕ-;֭;UL7&eSoNyp1N=q'Y|WvPxs6yh8{ӦÄ,ub d%ǒ^3$Y&")ictMLy Ⴇ?-d&Mu!7 G˵$}J. 88Mr81ǩGFU׾o^3/&`3 #"@B٩_wʿ/?&KFFS-L[.Z6,>PFFh SieVEe\JX!%Q?û~u+. {>R%bjG̣U.Gv>TR)_ ZWXhxEgTT^}yX:?¶C5B\L{8d;] Q/FFFJJʞ|U/x^wWL"`Apyex$bU՟ׄ'tv,߿/ԔR'nag7dhjn 4ZMMmLknj͋V8lԜ?Vd*<LJsz>,{fgWYb7?뢫]ޕ D,ҰdasTxeP^)WO_Fz;þMdXb@ܱs1rc#՚]ҷݷ\zɅ=̯Lw%`A]y;HpG7O+{{rbNͤN8P)!G'֌k}|hnnQ Ye֣B$ExX֯j.wM )'{߇{o ʊv)t;:ݣ+<1&cuFS*>fzǍ? s wBP ʖOɫ0.;ZJqu!g@K+/71>0;=};~ן R~ <GɫoC@iokUyR5=۞iȤNT7yuZvhaI7:sϊM<险YZ&g?'5pp *懕 kFÞPNla@qbzqzWU?&ёמviYzD&[ȼ wEk7~+؞}:7]2rOC`&`X*o C#q(Ss"+A;V5m`)Qkik׳󟅅 .8?Vҥ@N1X3cISyx"6~OZÇ?p 3/ ?UֆÒpSτrݵ}*/ZuQfvvqFO F߈+L1׃4׿uKSBg2 6+B^<2:*{O CꓮYT=d8un;--Mf3Ci㉗ۜ6_ӫfeR'?îg}{6|s_KYt1 L-d4G+]KV|.+Ag^uay}W51aQXYr+sTxYbUJWP-)O:',_(̎ . ;+j΄m3;W<;yvĭA¬ͪDfe<23>VyRFCeyUdUhj[3 +E2 (Z9qξs &4J.?n֝O>u∠MX`_M gKJ./to/Ld6YVߠxȭ=84,˼_=j:Z[B&Zc167FK}zj&&EWVAW ;d!h*/QVįR]FGbǹeK|[җ2džgh•O}ca6]EN ",M;y1/l ~kE^{moTjG3wdZJRO:94( mA 4 }%rW'錬r&Bҥkk5 Ft48T}"׼,SZrc9_O"!o ė$<; wXFlɲg0U]XlSxGHƍ:qOĄ8N-b[P }*&ѐfVz߶hq,Czɿ5o OeaI'M'>3Uhfp<~/Eԣ@$גc;~WX8ghm#9of~JǪ'x zҒxxDص8L:]׿ULmcF@@IJg^Q}F~޵]]{R!tкlE((kHYvzdqŏRǕ=Lt++ 9ku1,N6A9h[}E1`c5c!#<#tX8S)]zN,)))OgC<,f |/<dž և5P3` D׷΅kaB С}97`=$sIY\p[z,\{q`kGO}.3/y+׾ߢ   L@ 7goPj}sU_&a u:RWC@Ҕ5iNeIU+W\8nl r^S?W[ԸW5B.ؑQΊcԩ, h&)zԔ'$ihWk<* 3DTX ֭ rrXlDSah=Жi`0}KWzPcؾzYjENI̯֕uU LۓɬY(I1L¤[GGJJutӔPƒFqY777z70Ѻn!Q%^"K~hX-b 6jɒ~T9bR-jlȽ-븱Iz >j÷o! 6n%m-5lXbyo,Η2ȠCAOxp$8Zqk B q0XBaZyq|(; f7~"!7>5~˖W%cvH* z}C*_I@rϖ_~A__o}P>3>~ʰtq/(G^ S"nĻYg+Bqcڜ2u)(3a!UȈ*po+f- K}N'F{79 g[%͒$6x>Ic*y\i**4; _79r§?a͚56kw> DQGpI#!1F _p,ANq}Jg۲Lx.KܗY/on?\hI?C,85y+lҢ/* z떋67+TnV׷}vfc'. 95o!^>80:v)^59JttWMKq} "Ym?FelIX++)d#rOIڛd&oT]mpKc` NDJi5 ,bJ9]ߘx}j<0\BO+iWTg-X"z9 ͌nX/-i̹2gpq|mdBXO;>@pfq;FkIOMgTZ:99|w|KK=bcekNN7V.iウ3Su۟Yuքm!+aewuT{8 踯cֶ,sZ"ijlNɂƒFXBaDaei]j*}4ع? JX|*f?!w{PITn=4O?x(A[Mk&tɲMt8io-KD}LS|9]Vd>( p㣭 . aaǸ<E>' z#jh7>A  Қ^m;qϺ;~*1Yvy^NcF2>R&7~w]M*"1::ўEaա5vw{v+!mT<Z5GAGIZCyݨ93\jtC媁AF.x1pS ;0̵ֱYtc!_#=-'2yLoaȄ SJǃ7`2iVy1[o8==Au@IDATLA{V. rEwQ ię{4iQ{eI_M c|GIcӈAR,tǐ6+u&cJr# k 21S7z{M w>)B ãъE4q+捕\4 (נiYqWk|zv:4$0+Ø}g<uuѫ@) .lA`ɉ;}w#ZVN6O8Z h.\S%7MOLrvv:ݙӞYbIXP!KwR\(ITIZe%MZJire]ˢ9L#BIZіUL\~VVʶdqԌ怲q7"D B',W9)IcX,X, ڞ3\q5\+ Z͋$ehiJ/hJJ{v'xRgݻ Ϲ yC8 ;#쀷7a 6^3k< 0;5YBɝy4=-+_sWW>-`Kdq?y5uʲzͺox˛wN8z XЏ{{L_{džGTWuAo_o9ؕ؟>~XbUʄ&zbiĈDDFZY۸HKeSF,kRY-8kЈ(Zĭ+',*DwfMO՜ᖧD׸ǰj9O'IKcQL| w+/edr^Q'I@fŲeW>o.|%ҧ^~t . guNhkKZ?/a&MD. *TAE `iù51yNs&/O>}QDsXjS`:o׽G_%ļQJ_r/&pT,;B~ig.PaPl?ASE1ۿʾz4\r39"Jw6b'X6nrėl(^hW\O &-XI|b\$ƍJ >bE=:Y꼦 \ڽ'+8<,l۶-l߱'^zAz1܏ƻz _o_zv*ejMW y`,I ]rN,(a\ kѦaUf֢\Ų1y 3(`=Ƹ)"' &F(38@q#rǥ{jP=p h¹rd3+c@'9{v$`A?*o1yQX_.1;i[PRlɉڝYXY6xb`ɲ&{$Zߔ}-QH㉅qŭ/j%O3ėQ%N'5X5!Jd#T)Yߨ!$3%Sh9!9&}}]}@`IsO uYh1ISdmpw"ze[?"{[0!f<$XIsΏGPȃ3\cOeS "t< zR凇S_7 /鋻M;h$ԚWk:f<,^;?9P>? 1ϏdkFEK^(ݯ;ԩlTjUř W|>+ )\֪g$itjD@.Ӝe$z "LC}}+.2Ōw\ѸleVL6ZXtK4+q 8aNxpēct˼uAk⵹YGi㑱NܾD&P2K]{vztj~BY7MY0#/p%OeNN @ZXҔaOjcQ&VYpdMKL!$PE#98AAqeK2;?Ԡv;N 5l5ؼPc ׫*|S'vwwC}6-Y.Oa]=a [\☒$Fbm]Mt 9qj(2ڶ&kL=1葑aJZѕ+kF1lmJb!ryF , `TqrIŭBn(.oLf`#hIY2vS|OWWhQ[[LQK.h@-auk^6>o=&bJPތ>,Y$6!1oJ ~ G^@,@xxb@)%]Gpqc`?/SEKOx>V R5յk>}u_<@Ћ -,G˝<Ʈ(_E‡sS׌8jo,kV/U-t!->5QykE 28Ķ,2ƙʦNO,=.ŎI]6fHFFMjf=$1-Ɏ@Ž0 <8Vd ~O|/@aR5O{"tgXt 缢ILF7 rdWQQ׮Bߡ^5yj@sBګrW2xj +π%&!,bw"t- X`#5w Hڢ[]-S@a,ڜ>,T0 3~g.7|W\q1.ы ,Gm<6.!?_rg'7vv̩kl| Qb-_ŐF{wWɒkXnyMѕ>hD8xzJ]#N$Eawn4 !KmI#j%%^_b| {_tt#TXQ5%݋27!K[]ԱzOf^KnMB<ʀ&bUK4Ww w\xEU@Qի 'tf{0|wߦQi2`;ĺeDɵ1BgQAדe5F _q˝a{J!c@חR󝖱\wݖx(!`A?Jn~rbwhkǁwdfR6l5.˼' 5u*uG Q%c">'3:^,;bRĂD1>āl~keA#$!JLBlỘmȾNڲ&3d5YLj= YL˸e+5,J_gGxX`21(Nmpc"ވWsŒ:`u{&'L1Љl>][CXa2y$z{{~C8DŽm=om## % d'ɀs+ $qk4ϭgV\7 vM^ (-M-XK_gbtɿ#*|G-j)} }_CΎžݻ Ps˼P%uD]fU&\1Z՟3m^#*t^ Ǣ+nb"Ĺ,ݡA*F\Z\@/ױHZ#ljhѭ,A$ 2]sSRYՅNDw9Vl2Ƈ__Zrx}/Z&gZTeI~cF5b0B(P6kgס6ΦNP1r< $╈sؕVIej"V1N+V-;?^fz RJpcY׽"W>Ihu鯒zDqkQˀ$1OHHfp~OKāZɨ+h:g<>k8`3Ali^&X 0Id V4Sc"LʺqvRJ&4@`p"Y.4.HxCHC>`SbCM;рFU۰XEpx'\سwoXbyPAxc^uc<훾t񳣻|L얄7'Ԓ iDE|taqtEc0>guɓ" 0-EObG*~˽aI@MJ)jx/;=>ݸx3a߾QC}1K‡uI{ht(K.F+Q%iHe3T"Xmjn̰\帺(GYc6 Im3SLʮB__2hjJ|Dk_F) gbވ"1U`DnZbRsU078.: =z4]J#*9p@XtUXfMݻr;>~kxG!Of}ΓPI@}97WL:Wg?׋ϭu.hmw8;c+y ,G;N΋xg~gɒE?*Kkȕmpig?YO8K='bb#' vZEmYò#\X5-nElyu<<)xLFC\W.uQDfbqgQ':"0b2{hX̜VԳj宎˪ы= %x> j_͕jG$Ҝ<I,:g5KtriwT?zX j:T}wXf2B,ƦXN:%oҴwm u <'ٍF )H03 8CM V`Ğ/8'kNd8<"7\\VeC#C-rDp }GɓyLƍs/~_ᑑVVU,mIhmm  Y]r26V%s'1lw#c-ZCF @tlÒD 4c9YlKSD>Z.A?sPs'iMFu>,~``}s܌Wp,\!ۑX,:sO9 .^xȐG$Y8:,SDa`csj9G2eA/_,-uKBggZv`"=lPsωca]ÝxQ%BGu^=87ȕ-"WL* .rhk[^^Y#W7wL;G* z玑V?/|g*|?]U]֭[=I3?+&.q`͍N&Y=1ުzi ,zGģVI]Q$4cY[4/ b'7Y4oXNBe1Šmҹ#Hc#+իzX62c\Ahqmz-@c  +,畴je5usZ.&}Jwd"LCX)xҥa՚Gw!4 w,x=j;o^kLi˵"'Lj bHޯDv[S%}}z{'G{-ʕD˖,uTC]]b>&E^^Z;bRMT~ :+UBIĤ7z^IPq#6JtXZD(J# A3)Kj䢅2@FwkL1"sO=#VZpq7Ch# LܟD.t*zg1dJ9Hy J15# %$) ]jSnjΏ*9 ϴ< y8ENqL @gs-+Rs׽Caes,`p]z!f8ꧪKfe2۾w;vر$Gd(eJ'!N(:nlIM,ֵ:Vi#[Y"QB $+\zvs0L3ݩf"%/ Xx,;Mp sy\, ;XޥI*׍k257)j'|QT4[ɅJ~j- Kjjy+t :G"6 ) dU}ᗅ<3+>.^+g6v=T͠,q%HJ 7_B1p@xFd&D+U{QMvLc5 lw|9`?s`h 9UXض.n{ڣ[:a,28&zL'yn%[qXp׺AQEwx'Q$PCpNշ>;3S.a@3' w93Wݾlʸ&̝vO~ᰬJW6[sEpF5әU (rw }FdQ*, #:IJcJګQd(ZƒWڗ"X=!w "Kgs6tY,DKSBӥ~d}HB${)g ga+xg˱^cqJ Ո%^ .˖Ggǯb(tZLݱ-mmudO]^41T Bxs\gg-qF1-f˝gIIld!ƾXql|.ΓpƩ}bjt|tVOolL  BSu%@ Fnl%TdW?+O;MN6J8S,7/Zr[#qcբ%Y/0(A-Ǻ,P/xP E8qpbՓ.gRv]s,vʳ8~ڔ"$Nx"z}\eiĪ+dc$;#K\J^!TxȨ'>uξ`c *Kdb#,i)K:s DwQ^R?|qsj{hG[[=@hغ!Kaw2qϳ`@L!f!1St'ˊx^YA>XgLl#a[g|1y_Z0ϼ2%oEZou'+icAgk?$׽n?>_ ih#.Xr?kaΝ\ ,z'g\XiQ-.J:AթI:16DFHfciQxb1hgtg cIV<=|8ΐBqЊa˚ִ3‰sx%4u5"pQƢ:8֯]L]+ GkU= )-ދY03Ʉ<``3iLI˺uko&[,u|@VԯO:/Mj>_HĔ6޸qstss%hk3j_Z|`b_qUuXn !A$#r=I4ՉMCbe\ͱt ]l> TOwbE+:mʶ3J/qD\GLB^`ՎuI\|XԳbxHf =.wш=jE^@͖s=XX|yYE<m^9ﴄ0n| Z BK˵8W˜#@86h}uutt~y1z>kt}X,{Ô$)5`# zIuIR#?OCYȽb㚣BO6?ï[#,9x|ʿJQWL=CrEo":N{P-9Ii@˴LŠ%kiQa#.I̢JPhPV?'!&eIBImy.>imZZx}^&#,9r|bSԨӟw˲{ MpMAq熗%J >;_~6WS3"\xiiJ18,D?F閆H3gbX옥R'5b10”d;D k% lu^ț@:8"ƹOJ,C:"~G#ؼF,KAJfVa(fcXkw;XtlMLg w}PpЮ&1/ *C9T꣕/6, ^y8xv͔o{q4sky=xa#\#BKf',@6AyTjCb>ǹ{<,BTzJ};H>r=nO7QO[~k^jiGG'tj2y6M9[^f-sx67ܿ~䜘F+Xdv3[!ѐ]V+%`/$3E9*TXsqj*4-ȪO ($ab"JXI3 ~6juP?p\\$d6XɆ9O~NO>BuSzZGN  zn' (zh7¹_^S#ÃNk7ܘޮ3 ,Xmx^D+ lĐq+G. a jhBn^2VъTrs,G,~HI#"slJL@V(1YJxN%]ްa{=ַk_d>>GKr :Y -V(g`$ԩ)Ϛ44n+O^~QXz*-2bp=t]Vb$iyIRLoݲ5e΂%WP&֖\X@E 2'5L O\ Rs1nɂ@>BYi}уF]x3"ʛ Pxz9e_]\2YXar '>N94YCY~N8ub]},16,w8T]׸&vl++}~hokHteV]M;ef2GI8]1V?11 EDײd /Sx3 1%pѪoSi, Pz6l(€&8&K+UoYsWh`ϙԤ>?$[R4JegZL{СVw9+# 6j`$gXG"ܬ d_,yG6="b?]&dy:6==SO]mL* ;vnh5QpR?P$V!΋T&Azsy +t`Kכ.u: Rb7'D9L3ò'@8Qק?[CEй<}f{էdZoH]n?u+=A6SaኅaiZըFSgؔ8Z-:hX31ixƆ#oڳ}{j3s*3qEp?Te7}O4.u^b^`(@u}`]$O'ů0{V[>я@/7sA{,w|ObN]w3pz/NxG^z^XF屰dْЦVG4ϻZ-Uu,利:VsҀ ZECZ& F0+V2p6~KXe05cΧ\ z=K\Lx37,z,aĚ$8>EN<ٱOƧ:nv"t~e,Ȍg9[ 5l𑮰G¦;=z:;Ba٪aSBJ[ 9V[lz6n\KypPd\KfQ#tɂI +2ul4H?ϖ瞰o}tKkjٰaCv[NmI?Q$7x:?=61>PRX^yXqdzq۷=.+.o5 Y~ V$؆XfG0^-[e3yX&!Ԍ+ q&>O6T*$,kZfOul\,:`aLk~;H$Պ}#uMp(l޼%44j0 ː K Ev> un))/|oT̼k'?9:;zB@'tGsg,f]/aw@h](6^' I6x&y?,~gr>g?k|r=IH\y+x.VID>%{M$CIS Ō.Y"+}$?'},qy#)g2 hľiK%R@1SXVjJqZֵȓۿJ  T4 <8XD52_0GBZb7l|}? kwi-:R:iZ_T*3$<P%/A1ɁLaν׾zNc .Ȼp9fB~?YgG8&q#ź8 /@ZuX}I/\"|Bө٥%ugy޽;&ScAGNx/P㙯y[|\tywOo٦JgFekW(}b2^gjN N!Z\c7F%jz)߯4J䰀9uO:q_ =eĜ7#H վyI_ǮcSkWɴj地eGKZ4^MzAeΰcǞ}wˑ8=OB=g0GBE'IDATB^YPp'1Nq|dOW۾trn0 (w^]ץ#IyxX ,H JaOv?ڢD|3`#PB4Q(e+q&4c|drJl18 $"X$e`K1|x B^u7ރˋ]x$&,9x|ʿ=L&w㍟sAx˔9UzL-b\iZl~<,qZ w7iX'1mӰq'sU[`c&: er#ޔQ玅//x)N8D:I8X%N:f:E+nvyJ¾B7s:v /lݸ> *IpZ]nzs*KCF+N/5K>s%/ M)VOm;xyWWCc (AoWHgqI1OK=YDOWb ;UoAjOby\(,s?3_!*n~^-: zA&?|&~-]q#MiQ5Wg#\DV\+Æ7°X=GKQ 'I(ic:Z,X;D6U-EV Dv.ujlZc8#uT72yv>¢J'1pY24+>ON`جG4X~[(EN֘إ+Ջ4O tKarrxdDZ!O͊~~y6.U-=PzvVIv:n\G\4{~Fo1ձ׳.xB+WL-zmƆ]L Xs ~ ɥƋ ZvvtO-*(ʤV駟BjӋTEGU*Y?]4 ilL> =q2NJ$%Ib=q.jj:d\g 5Ұ(dXX:[Rz܆ qgjQ3.,l|La ˟mzZ?0C\0%pl}/o&pBNE"@kQ /z"%P}ܧ<6oݭNr+O }jd0wn27kNʩXZENi hѣQ``Ӝ }-aƪǺ9V9b;Fgk=,Ms^Q>dP[^s_߾5 1#i]\yVEXؽ)\|ZRu@^C};~5[6?!˟}Л2V)a/קEK*IXّq<9^ Lnesghx _Ǯ=zHs)m.]XDzI#ٌE%L90W]=dpwS626>g8b┣ay"5b(%9~Eg!)/[]XwP0Nu:9rԜ*. iMM hrYspԐ'ݛ[/} u4] aLmPҡDy/xO+Q΢&.dt:X:1#xg\eMK;io/^28'7AtP1d]*/ ^ zԇ|oxQ7%;. {eKMbHF=>믗Jejj<=ϗpJ0GÙgo},t ($&1 U61IbCbԜ+h9 V=I`,FT^*7:y 8ѧhB2DJ\=r1fDh8p044{wnˏ9 熹5 Ca:s:_tqTy@^u]|=?Y͢G}Y{3Oy:W׷R. -4d0\f&1娺U#܂{+}mݹk&^~8`.M'`A'uyy_w]u՛+zzUV<޵=t"_$+9_T83Þ][C[[oXzI2%XdSnETqnQrF̗hXԵ#*$:1y:ƕ( v:^.ac߸+.O= `W~Wnwoaav-c=yx QKM7.ڿxd=%:%\M;_׺B ]6x=b 48 z@SK@ɽ}ho`KK~O=n\ERj":;o ãSqzފ2Gi[JqH:,vy(aC̫Vhg yw*aG9wNBް6<вNp>?TW7eKiCVӖV"N r-_ʟ)xJ8M74W{bqJN>eRaNQ|Yv͚Yw zn'H +~:VWNn0zAxvIdg?+%!,^,MG˜/tbdgIc[,uLl%%Z5t1p/\8&hS 56gްeGBX7@V,/W]n~Jy45Zӓ}y=~w>1+rdž֢L$-)y6Ҹ:=ft=i> <,O-O!3QW#.E[p.Xz1E2)yVB4WM^oꕨ1Ik0S-{SSK[/6̑#mm^O~rZF-mxoIVԿ/ؾ":H{jv7Kz M Ϳp=MIZχc &phw@Ե=׽fxdh蕝={ӽ0vbũ9~o?z8<0oޜpۭ >ELwZ܆IΗ<}j'C vqŢ |3o;=]44 k \auǾ&wL}W/~y|ܐɧPb2e<+n?ןV{}ss!Yy~Ғ xXT<ݓcSwcuo5 foٟ9?ko&`?}۷MNuzçc/zN8tU}{w?,XLcW°D22ӛeή{HXS҈#+S=' xLs2*saڰGCO0Nv9WTu,rr L>22xyGh;yWr?I\ (^gҖ`/L|?( ?U'M ,L}u~sBJ5%{VPYGpn $:>9p5yΝA+[G7c=jq\D]kzٱcǖckK{رkOx9/Pr"եLIouk>1^kvh,RHLfcWJt1 ? g${.pݼvYqwMz?G:hHd3՗|CH~SO{ܿf&`; {8I t{544íΙ (ppWxH^zzzd Ua*[ *!R&{ /,*5ᔒHWW=F21VIZصuG5w.tD;-ҵ#a϶]kÁ=aZ<~>fnt旫{J%oYrͧTMY(fzr۠_I2{8y?&`O? Gq7??[;zlM]%JrS]nee k|"s,u5kϨ :۰i vhh476>6?.lmNrʖ/.KOY/P 1g~sWq o-[6;n[K\`oC /hO1}{{mx˦+5hiԊR?NJMT0OܯrZjN\D,յKUT&k)l۹%&hޯ9,U:ӖJ+b4ո*8M1Mzxx,;ES={LrȊ]Я8z$=`TqQa+_}γeuKeySG. yYA)`朹pZ:ŽڽN [!?W8,?mqXe"^rZ 8yXO{+=轮OYW^Zf ,ENQV\òKjo-rtP %, 14hkȨ$-*_Rzz|b*ݸ֏|Km ^L~{&`DKL3-b5_ߵM&ggz{-nE ^J4%MMnlX3grk\x,Lb5I+=/Ot(Ue248,!oխR3.QP)m!O3ϙF"îr9nkjj޹sǎYH|&`3gށ *.5kn~}_씉[5sϑe?NBWYaP ifWb niJ / jҠ4˧Áwp'a3{_= ?c&p2Lw wܱhƇڵ~@^gT͟ C7GWıd錙&dBccĿ\d^f&$@Ho&`ǁ\y<}八VhMɼҲQMJˤտ:b"էWLYZxbguƴ ֬kiqNݻ4Ass~ϫ '5u-SZ!+jzf3ePbN7eOqjbb:|`Ӯo{tz&xn"lM8~{۞מ&{{T^o1XU'YJ c&2u~(,$7j r/8 >\mj殞tIqdjũ+BeL`Ӥ4c/ M x ~ggg0r79>{5-.r@R暿f+-XըLNhyС]vG>zuq>Ip >Y \py'IoWMM͇Yg9'?{i߶/׿Kny/?YW|&dB2^x H' _^򴷬 v^~^*vD_)p%?@lZhdg"I`($>dCW@$ ]>faˀ% { *23J ---SR+KRs< KRSj!ABPi5Zho@p2A!@riQdL0cR?1^: Sbj  OE cHRMz&u0`:pQ<bKGD X pHYs$$P$bzTXtRaw profile type icc8T[0 )~"/$VT 4v#Mߥ5H@ "B@Q$.Df KmxNH VUjdmp r(C9K+`J&ζ׋l{G0hhTz&X/@ z lPH>ٔ PHSA[[??6 zu`+(q*F8ktucF͇[ҷ|J<#h0|~__BҪL W_ Фu^~wxdnp>_j_\|f_뽼i١l@8u=2K(=kb:'F<[|HBOꄎkk<* Q@rQl_& $!{I 䞞|;μӋ6V0[zo|Q*[ idTE(ۮ2,nћB^>.uY9?6UJ53ݣ9,[s.Ɲ5ld#+y{NKlBV)&* qeu+x}+ބoTwa vAH$ nO+Wv-***E/oO}H6t}u4$IȕP'_1!ݬt3.2"Ot^ӣIP\E'}M^^^^mkǗʳgBH$M+rٺDiY3t{fM[ʛн:Tx3Wyс=>+삣1bQ~w`v}dk$p}6ƃ mu @ƚ2d3e;hem5@V;9nյ z_O}rA1|WB}}} dd5- jR58C'!ytGk >娿uox&t//XXQܝ I|Ÿ> b}BoG~ 87@,`߃Fie:'ƓHd et脨QK~;MwW&Ov>w8hW`[ux]CEymiuM4+dwu"G%K\?aV*o&c`FKU3ai7!#PPe<@AX?YštNq@ТZVKrLbe!ڞ`\M Srݪ\oI l3wA/@q 7u;}lMٔhG'|**Վna}{wY*Z+?=xok^;ބ~FOn'ot &f\K#Dԟs &:&m}'_i~ev3 j;`Kf3+@IςN+MOEM7vnn[VPԭ\ .uy@Gvf@ejQ~+`f \R I&Ih*Ym~3@1UNgvl&}//tm%mWӗ.3a 3~^xܽk:ITѰOm2̰OĂ;1 zlg^ֆr ֢̤ s* v6E))|0-$HIR| t~ 垼uk ? 9c΃=nj+mfL6c@+j <&g@'JЩA@ژ:ܡZS&R\qn늚5~3F%Xkpߺ75o^^^^+<{򝊐ai+n7c*m )_|>w=)ir>&O ʜk[--@?k8΀\-E rXq=6-hsLoKt@H -uI,4`L8D,d -qp@hrH-M.Қd% ~oI'TNJHR.[_(F{'}^{^X{_x+t//1vcS5a|ZaԻ9cw~T%M4 e2@B/ .ry`6x9=n'9S\7\U]]\@)/@E}58xǀ,y${&fռ}'hF te[Nʠx]4c>LNЌ6fYj 2x-^o$)ډ9`{;m [ܥ OٙLaf-YYwA m̍ `{_x+t//:we2[y?!`J`)+}ac{H~z@eIY00 &")&gE~RtԼ`[s IZR!Еle #ANI#f<]#AH,3`֛? ?(H0ٲtu(A_ 1.ԕVR;3ʼiIo)ekgMT˳3=aMGYvs7*o6N^7͚|EW.}hн۪/.Mdӕw}džkX)F{^d ~Ȁe'٥ii;iC$Hw3Hzse X>LMH X 22tt(H&I)YAG_Gk TD v[t)o*JeС:V"hqme@Zt>X262$K)Njd4Ti0U3<=GbHxs Y\Y\+_~L,YxIsu(rN2:!kWsv;-Q˛н۩3zZK܀$NYfx§\ 'F%|Y)>}|swocX(_AC5FY N2W&"W; .ô'fVeI'5x:yzgn =zˆ [3E'Ӭ俦ⴻ@y}.QǛнۨuK]Y{Ñ"死$z`bo xE]#75p:͵6Ǻ45l5V@$ @G:4\ #,g>A J))D! 4f$"t\Wɵ-)fsֹ\ўAKI]j>0 ݨ/]w-1Iv=i/C`Mjҟ2G/HC$B1= yEoNz[ 榉7nGNp-v p  6mhsCt$A \RX7Іڂt͢)5/ `?(0NV LUΔM59y]`?WT`/NKvrUk_ށb~}JbI>OޖdK~-G/jnp6].o_Nz%6ۀ!-^xiŽ|ظUO^e '`}v$T&t lbZ~Wj50r`6ppr6I! 7/b1hڵ.~E\ ?{ޱ7t=@"@Dϕtmvn#e/ܮ.7 ZCQ M rΜk`JIȗW;7 ib?k[G\ބ_F^J^ O?x>m;v2B6,EX?y%Ihr W}PY Q34&Ya%a!H*95f7Y֋ C0 iHClq@^)EQf,ׅ Yrx }油%Ե̵6Ԗ@0>d!9A&3IdqJ9AWzCؼiF}iZ϶v t[tQ 4ttTRSiښ :jmPk-l4VЬ$]$? {3xy{;u?{w{EQip癞|\eqla@UU[Gބ5bk!p3w.~|Qާ?jWK 5&BPDi@ p 3 Ok0@/ 3 f"Ͳl6Aw1V >|K(D#0osd#<7GG+Ѝ.48b8Zށ % Jx{ނ(!)T _qR)@+SB;Yڑ`,68Nq  6Ռ5~OGzSOX} !J'4[W cÞlM K*I MTț'%aS*w:q:+k~IԲj: {yy}3Q!ؑyGWү TBÑ4T?/SKB .$菶vMi5Grl'Ė;E@ j$F`8@a3.׿:`X  }U-жvv{՞O<7ּ4rc,C@+'5DS o9h1 4mʹPe|+eK+A$ABM ZPzT%:H~K!ӪOm 剼-PZ)D6J6ҴJ@MS \\]]7MVkKDI] >biIGQC%K7.ÅSR[G? ?]zu^M Y>g;3ܖ+8)S!kE]Z|&ߗIao]?U@ MNm. kd'\t1Aj'lYS􎽪wd"$}ky ʐ@k- `d2Ї^ Y$kd5\#AjҚn`N.gjf My5%C UinRH2u.SAH/dQb`f9vpy)o5T4 24 wdsl2@Wv]zG+08 ђZtgVƟI8$dMlMiF?Jװq|?w4{) \~y۹JУ΀([{yyu眮sWákG'I̿/"bjDf#OƝ'ɂk)h\&igs*c\]t!%z.ICV2QzG?0= Oa\"J`8\:`RnM IG1$3hm9(ˆ,#d PT˓$ 2>W|;NU DK0}M=TJb)ЄV4.q:z: AhQ䡆&@k W,6ARId P4A2!Lq`ƻ~v9g4|x2RP/O;ynY{;vj~F:&t//0C 0.)vя$,醤B/~޼1Gċ؈?眹ߜŁdLcG؟Ae1kAJ} zS} v;祓34r"~(ȏKW*g~4@Zj@K7a~g-6PYP/6 "3\d~@i)];h7pmt-rm{>iw +`ʛʦ"r- N@!RLymL2s$+cOhU*//sX=X&W$l}64hi N}8%` $ 8 Iڀ`BDo >|>YY<$uHT)ӮIJ'ٕl]_#<\RnmB߷j.׿&}js>ju~72 zwu׋X>=Io@`s؜Z {^mHkZ|&LlY 1 m 47 cLJP0*䒜2TiSh};\nJ! `mgж4S}CЬ[Ӄdb|G@3 d̖z]ROKDE MF*dHI:L b*:8g34f5MI"IM đ 8*AiXGr\ރMnlfks5"rWϯ)En -@+t6f4;]ѯ.Xcw>Ud-5bM҃0߰ #xyypB2pݷ@QhDȰXeu:Bӂtdڀ9D )TTD=TuM0AZ-h 䋼01 )ˁd&#\Y.3f6#I)lc@O2@kmF 5ZXkQ) &54@2>4c 27`RTau=h ͪN,6P3S2@"-ZF~ނd` 00ਜ,%c[tRPҀ\3eϓ v  韸Jճ~vIkl:ӓur7kP~a_m:Wt#FS!:*  s-v>TFh*, %$1v^ g@؜d4` .m]g&e)>%Ahm4Zl ^ Ewppue2` 6̞Q o%R>W'f65pTOp \=?~r-`~ O9//D6n9!o^ݢ{D&HA|殼ݯnpw HW!}@&Ag3^k&~ W*tm`kNe>EhI- \&== ,,Y(e(~[@K&IzN>>ݩC@<`^&$dprow6wFX<(m`3/J2Y72n֍ UTuLЉ4֣&t//k]k;O}#y~Ʒ9*HDIc|^}beO'Cgir`G8l = f`h[<==? ,$tW/`74* w<H_Fao@-rHPL@Fr|8v^c$ PTy$rԨ&)M22 (95Q3t|5rW^mpۍ ]i)]<;>[ M{(C 43hMA5Z0:3pގְM _%ZAU/4gv;_3L&sƔWKS52Ě&. sI1tV_@[S6'"L:$`2&;馧 !Ai~E3 % 8$g\B$uwx󑏗^Q~YsU£sGŷr?6m3kgz(O+Ob n1/xxcmZĠ5A >[K}<\0D@_k}ܧ+r} !Xl|MඖPL 4TiPnхTQNe '!`VrYU-i m̀:qSJd.@4 9JibENqRUr:: <%B~a=+Rϵu@([@Yhi'Su`2PWGظiF%L/T\ڜiquڕƧ*rJ֭痝uf-⼼:OM`o;g>yo"E< 3tw5Wɯ;J9l{[`7-.-O]U> մVnrK`PR u>a1X z :N(pz9?:][AHK]{mi.t-q,'X[_Ye%A6d50JF0X#se dkО] zR7' $dB!@(B PM!kvNW W4 8NQ''$NxLs87A'4sy<s9 ߞ6_)~7Wb| >sV(90?|*ǿ ~툅s/Ù c$P"#d H3 u”P25 O|/**kĶ:k\oBW5 i2YڋKIb,愯0e->VÞut]h_ m(bg2l|hjuNb'lQ'-t՚Μ1@ZPVW8e!6M OA09&Vx$tAQR:@LG_\$jZ=ОVt(!R> TY&3d9ϟ>}=}oL?g'x& hRiO9:;WWt~lxz{xz%0F9 H[O4WZ #!B\ T܈34a} ~WNR/[vZ b}D?G։x_c7.'S)ݷ|J߁`.4"0Gd)hZ=U ^FEIlcd)2,-A+ {#A3"ctR4]$0LfI0SARBjRz`= - $/@K&9POsG3؄ g9 e'!/u8<3S0 i'@|Jᤳi|pC ~Jܮ[ 8@Pp;pOO/>czkk6y*$/2e::7J]mA^Pk3ă8A>}cM! '1'Bnݪǁ4g AVm|BJ+t: \}qV'02τy~۶gw;>cC¦cիW\|Gۿ?oBRJS*wD%CL͍W?rTėr^Zk/|;m{>} [f@i#U -1N~!!c<5OAimHvU0eyBCP6_p2L19./' lL"7NY.7;RҜsiؿls*2dyjخMr`JLF$$Ox$T/Tq^fnګT?޵B,r'7 R )$0NTw .7@/ A2X0?,A`D6ZM`CmY$DY@33|nSLR<7" E$ZPAƂH9 !2Y+@Wv=2PFAmBi3\F %=$ N~؇RY˟!L3lg#f\tPwP݆wO20FxUa׆:5"m}tW PWę84gwN҃}$1MN -h 0˥ p ?n`ڷ`.oNfa|-hf$6rt'u/P^,H[K:Mkt}kLRk}!d.@)&.l|c7[N7;)%2 lcSۑE.3ex/ҽNJE\K܊[ ;Sv#,N]>(N2*;9j}@~ Elܼ2@$Aȍ6uμ5sq 3ct*8Y_̀ao.L:ӡJ)U÷hs'ݺkSG忝7{y鰻}QȠ$iD/#@mb-tPe}{ƙim 7#xЏZ\?nr5t;@6LF$MWԀ].] DP8vh+zk+0yRJqGA6Z92Lo:Jۙ`g*]tIO~X?jІnvNk~5@R^+6 NqLd, e:Sׁh6ߠz8AR`iD_ qqOc{ ggN}7wI>>TP|cOAЖU"GiQCcJOd`8'}$&g3mxykoxݎp˶G ˝|ON7[Jsr S>!i >S M3dAI;K eMez_#9Lh[0c΁{/ICSVl\oBڹCj]v-7 =,KaGY>u&/Ayꁼ0q;@Yth!붥w6]qz4FxM3pRr"@0QqXc@ZOٵ*:P QYat޺m8hYK˂$2䞸$< R<<<`HH.r=.] H/RH#XR4f cI@av^9$K@[ajP?MZ`iY[4Nk4iN9' H#I" IܧI0#a 8I<~>cE>:nv>$Â3ݟp䃫oB>{}p\x%Wۯ~,;n'aZFerɊͣ<|Z*Uss*WV#n`Uףǵ4$zcc>5rE~W4 9(7&CH/Wߗ>JCTv$'2.~]ďJH(a)@:p)b%D>y"mU]@/{BX=78ϝv;8<[DjcƃZӄ#ӽ)8(S 2~mݶCo=znJ|U 3-\ؔowgJ"Qs#E^X/)b\\0ѥuWȷ]mt&@j= ѣ~qkm92*i `]ZѺA`fh>j>6*0Id'G &3d7JA dRγuRְ X1$%%}  '/;@Nw`1 %aSY+h'i&aB@0 s8 ?P dYh&' L*`g:2,y,hRkR_$'b:Fq\gY(SOA7CSV;c^?S4b['L6Z _ݝ_RpY_\6<ڗfƿv51']y$L KJ>XV3֓<ާłTG ]o˙ޕ`h&owF"Xdj9D=_$+%7P_j FNP-KHI&2ߵ9L#?kP8PI~p5%LpێF e.}?Zo%2^澑`_˷{'w\!g?]ݷ^*zD ;Ƈj2%}`Sګ elM NzOc@*Il[N"H).AbĂN.hS@ `.?5ZmcmB;LSȔI+ |@Ch!:PwOY-kЯF߃r _4%PGH &϶RTrI>G 4\-\j9ˆ$ J#pX"epL;tGKhuDUKz^S|*1GbE#%89C !;\S&C6Ͷ6%f|/c{y|nQE7M1 5=^zSsF*GS.SO4+8C}$M$uZ xJCAe{F'[n \)De/~#$쵗]!9$}d]+'o@iM}0դ)T]A^{Q =5e:Nъ`Wj :6sQ&H#pu2u_uE;&ؗ i( ӄM:|^s2?/bc̺5|&t/~*SKF̍ 8iPS}1Q#m'_OW> NuzBGmZ_vPM! 'e1r[|410M[6@z(Hj:G v`0D6lZ׺298 a(Ƃk $ N- e$s\3}ɸ :~:h9 ܐgr5"! 2L2kZBb@s'̗e>0B&`2u<02"E  8("4š[v( w?m緅?کo{VG gIEg~˫pӹix 9,˛9}1LC-ZzU(k1M;.w'MYALi%/9RKS񩄭_ ;%I{H;.6jR@B1ОL@nfо\:sT`_KC_~rElgq#]>u:VOM0MacC'gƴ92˒t"ʄ͈x)p5_yнj8wM=>7|8c;ޏ^2"O/*hu)"{} \S\1'1pӎ t߁Gz`W]zFOIpq\s h#I$B0G6s@"`yhJ2؊NV[ x== `@rJ.f4{62R2Fru >u HySYJ&?3 2*J f1׀Hy( Ju?hL)2Xu='I$8f=\(AO 'hYms@AojVU$3t\y\\QhNk9ms  z.IfjV _|ԌkR6JֳEVq}AUU[x+t/FjyN7xu' }Oɚ]-sT^oFVk;2^ JRt3=@CM)FR`?ؗ6Ye׼{]k`JUSx5>=I`K W'$G О`*I"S #vs(i|"oA/pSjOըIpUqtSKHUwzCEs"в`n6?Sd`:!4]j`:3>8Y.6aH\$fڮ 侼n5pPMτf!Jj<,5gR4/DqR }\"Druk#gol3"hk-_SL}']\Qz]ﻊSM;}aOOŇeүp1zem>: T_vнqZ㚇`߭%w-& tF)^Wk.bJb1F+_WTAՂg\3wL`kPA>mylsCtNH 2\:4pxp c\RStF;UXN WĂcDäp).٤ &Ud0 IېFAU!dlȆx_~֗{杚dO}"'nR8bČNEu&MP`^nW^ dҀ|'$#'$I^iڸkI7&AS-i[TclǪ֞*%ԭ*O8 HSh}pp:]|d`BAr2.d  \./|VЮoބ_XžC u)?n4,ӧV7vsEߗiʂUgCg<]vmo[k #\п@%PAy=vn@lYc AJ}f`O?s` UNt.kLbGIh)f_5HC& 4YfSPc@2_A4^V%q3,4A6lFI`Ι{ Fe;\#(R_:R>A%(MHJ,45Mgp-tvJKi \zmLiw&Dn.yisOk/B08gp5s{%<@W ԑ?>0}iI.1 La{]om6պ #e3RVc@(Y8l'N{ؒ`ޛϦ$0 IsZ5Oo/IH.q$2ce`ooB/^F! 7 -|2BO>2$]M .׀e_i@-)BqH.:BN&'ؾ+u Ha.yAڱ)k V )}Yfw8@<# S,@ [Ms:d8/SAQRt.$ 椞 w l}c$O :t-AVQ@}iAI`&t<l}[ Xk#sfyc;`)} ێ AqNH8?/ZPhMH 2LAZkY^/.Y d$\`>liQ˺wqp3\ !g3?Gfn}%:']IsO|۹O0KYWk2{/ L~#-Mkp}^rC*c^p2jڕU y=d` ::,|-% ОLHO 6^@\9 |Q q8WN&pM5ev0Mw^:~'ڿβ&M)χh8e3; [;&Cj 3Ǐ>f{;m|oJ;p>|$!78UlNIkzLT3?H- V}GK*J 9ZS+jM0 lmI[L N% aX@jH~`MۀS'z'i'A$XflnНzE'YI4䠓e\2NLn@hn`̓@!nT|+:1v>MYK6~/3m>5!f5[ rj-ږ24uЕ`eAyM5vs!/=Uܛ}섨^1UCt/"I% L|swѳ ᥡ㭤~;ni_0oJ!3-z>iN,1\VYf.H+WGwYd'0?=^+d;\<(y$g\@9A^] .v!aLT{{bҟy6"wU.KSJ,}vOڲt;mf^rsU=_[;[{y}C ^V|}Jg3Rݟ-1hLKFc 3|y05L1]j @'f?OZO[&` J`7832`#+tA9(@ЁNhVζ PLi D2C《`v48#r/X~I`Qރ|4@?R/)Hra(0\&_kyvl{7wQp"8Im&dr$P$7H, ERHGJ,QIk7? HF !@5*$ ˟HSHK2\H D@m LsS |2?OHn3e~`|p`!SL6M c.Ndqe >'^ACQO{3o@] f\W 4YrLa43=AZIY>g@!^:p e)* :WJUaW *}Q{Նxu{~!^y%9)6+__7T!)GauMW61'6?ݽ 6ʞCʥ/(X̺GF>UOOz!t@` k 6mb 0JG2 qPIo mijN,E 22TN%:8 b%HA_4H?(~ a@&y&A3jM^qKbq)An![P`?u5uLsМ3Kw|`m~u3 TTL0~&Ƅ=kPu Y9/@*hp3r`sd6-PZ UGBou؎vցu4ME! :~s炀/#sVp5ݟ_DNz*Wʍ3dzuϺG4%_U0qQ\sn}ppj~pwS6mO jZTSVS:ZߙN'{6T"U4hZtpvٲv&G[I-}A~bD U=uL;Q]^YHMX u{7}<uj5m^g5cvD$=i$mg/Ill}D>S|ztSz(Y :: x<`30(pX'fYRS $gr5Y'@װ^7ZL{k6-$e o@<ݮ MZK l[LUsT;YkGC0BRY vd"2z^oYEʃ]0?g OUm ={М-@_H{<yd9̂E͞]`ڽ:jTئ HE+/|$3Йf~H~o]褻L 7P9FSC`v{7ܯ*n;}ͬDvg^V_o|< ?n!|\eҞ~1G̯?~TE}wWe>@ `@T ڇlST898 \6t,R V5@92#2s.s< %Nf٤&]_A/M>-A{TBM(\T%)xs>]@0R ܓY\Vil~Яv[,LsvZ{ҝ1ĊSl#ooohoԽB;vц wtGN^GH%Iu`gr K^&d L)҈nmN: HM:>Ie?@@ٌw'WuWur{W> yfAJ#3q@^S$TK6`';OxQyfKV\$6EK"hUSfW ʒ1$uI>+qW?ꬬݾ|e[jh,pu-]XZ:GƜtW*Cv;gn[7{_e>lˀM.C; O!pw>k;%07dmIg$& R^h(|$#L c+9󺺀0S֒Y3ئʠ4*`o h%V ̒;h4ҤZ (A''?m9p,0{!\ⰚyN tA.Rxb,ȇ'g{?x!SL7_s {֧߇9D!rCzƯMMw@ U/ddH`D+ 3 v89PTY"Y 'ڃ&Қl[{ɾ7@3(4jfu3i ži=g\(_yzz䬜Hw2lAZR`\]ΕUd"sxE8o@K)22 '5YRY]K7\ibښ`2&9쟯gݦ\xǠ1E̔ҺI@p@IhIl:KDZ x נ4t@&#p˜ (B.n:^h77n|&:ijX1- pѲc}>0:z]qtoˣ}riFpmtqLAA- }e[Nb4`I9d1$my>zV׀ԡL35HV,̒C9K K[~Wk=)YQ%XcCQY4rl.;Qi pBJp6%]=89%:$GI^|qُ6٢|$?;4 K5l=)Q׌/&bYXV\<.MI O:1B?rT2M4M@&SAj0q.9CϒXEz#h %xKVF#c ?*2n/d 'IG[-oAGWG4~)c};X.h&_5l3vRI6rⰼy.!ErT"s c38'g/PRf)*&{oGli>qKefvl eff]f&YdKz|_5~;O$K v{؝ N" &|Vrӻ]@7= &̹ w|ZJsh=%m`Ι cմ8.Y yRUP r wDU,AH^FV=iJܖQcv[bL_.{~^ݰ!цcxc铦)5rݩ{{ }@=dD6ɗ;quNk{v\`)~Hnt!,Iffi27x;7Ow{t3! 0IMR۾Zf H2&@2Mum--Q;й 㒮NG^*$? 4YӁIdci4%?HrsL(@7 <ν5Mpe ˘ej&Ȳğ-&:pϰ ~j2rjccف3fI/f4~ć*K_?0`{y#]LhW-9E;=DUUM= v^ Q_M: @4&ѴLrn*( Zyɮy@.sM2l!oEHI0 Gh~V~7rAcu:Sz&t K.+,OU$n:t \^gְm@I 憼"ĂE? !d N 8@#mAg<@ZҒ6N΀m(FmAW&K挣 Bg\iHCMpxo)#I _HO"ͤ,PZ$$c dÏ~C̵o~.>lNzTd,ղl>/s,!½ G{k>ڋ޳i>{ OLh\sڇ~cd?יmO}~OZB.43`xЁzJ_(FAOjMH$Ӎ ^ 2$Hޙ@]7]@j(I Ц Ѐ8̓} ߸ OH9 0ՄjAGk TgB p!h0 MQ$Wݦ)pI7eH:!Yd&C9(.>Zc\ѥ맡'Te#x(ٷRKϹfQkm,9 kG|怹o; &Àļ$޶RvH.УMׂ!2lZ$ CJ x :wLz&)XQlCw$7E@1RY#CN߉s׈ \ţWvlkжL~0;b 27:5L~Q΃KE/r8I䄜KVoJH-`e$ú[-l_hs jUJ+7M\j% R #}HП0ܕ8H zJ%tBf̗524fB G䀜a7Aj@| sl0O}3&K&';.vVlE^]sc~>DHѕ (`ﯲ6O0M n ^_ρIB7zRA8ǿ*ޚ"õ䣶#}}+kInyYl9~NO#Gie|bE$76 `.@IvUjI^mqZIMsZ&) :̞A2 xV 0yM޺_Հ5@?ֲ)km~)zS_/0&R- h'jhQJM'βd:tqFp H(l_{ ccBH8=|?ɑS^›'^g ?Vl2{AϦeBoaeO8uL7W/2Y @:=f6A)Ԁt la l8q=흄 h$mA_AHBIn 7hL>8mVlf$3A%Hi)Bz0&pzx"ؾn =&̜ 'd?[rӴ/Z,PT⟌t B(@H0-z `7`Y=A$Z E5#0WKW0&DnG$D"3^tק/ADykbM4!NN:>N2`V %| L nzoOJ=)нN2ss/Nҭ;=Vܕ`J Tf$ d=H%)$檛j^p>9/ ٥S.AS-gy3 j59pi(RR|(\%)YhnƳ5>M'D2WVVi@#xdL9i9*!|b8J[Rotm#&|6 K-AȟR4& jmLq6X_Z0$BAjԫ]@_jm \JEiHYG Ai2b= uЄ4$2Ai2f)ghZ>$ҳW€҉X"<%.U/O!#y@9:M НH+mHt''@r'r>*Dt E,<QQپF|޴|ۇ2iԧԗ_U$m"*}li'_c7_Ӂó' ĚмQ6JN`&`[zR_iK?yD wAZIi 2Caй߮Π!G"pW/[ss3 yT tԓU@ rXV-{( Qy@;}LT!U4nՍ=vi~RZʁ+y J|ب( թ ܓ 7,Y8!?rV_b</M!&3H'@!m?8D?f< ) 1P@ڲd2uA{R{4GJ!4c*y`6qx#ci ꦿZ_&4 q}`;"7P{7l];ݾnH$qaPFFopv8g@*jCtb Z  #..#Ae{3l7Kkh>0];5_Pw NOcY-jۂ {9/,huAܖrćH )d1|%UjD#AQGLwf7CvVcbź г sÜ7w@VB9}d3 mIe%`LF)20*2P0%.rv`#m![8@>i- %AJ&\LM~9E s. /& -pK[S`d} -i7ޝaCa_&r{X?VoJw;M`GN`ۢ:ܥ6`|`K S@-AqFo- Z=8Oi^l'ЉK l1&t梆Ec@Jyp9N~Z6]Bw -pK/~`  v; MV3D$=A|$PIiMJnζ3PO|SxL ia]JA ?OAIƃecmyku}x`GIpQlC[Q{A 19bʤ.{D9;%(ߵ =hŬ"nV3D|3^m /}7G| ߁$ 3AhC̕ $q٪AitvLf343@/Bρsp:`q@'22`YV It &b2ܵ5lb0e@Rc.c@n=<9Ih'.H' gd\I+%#PTbzz,Hy0@je Ϟsw,M+#ƀi&%*M%CuF%)K1wy Lq2dؕ|pHCNf4WzNSt%@Kh|6jtI*nc=t`3A{B$@<$ 餮g3?SK&.@o+1 ACZrYM>`%:Pۂ|4 |ie`# ͠4HRt`\&J_e8;Ht4 [ lW`QY |7ztFKtN )(L+ LnTKmi2%9I_z@,U8 Fc,KUNCN:]׳䬴';R[][$J"44%I4]\0ULUZ~;& [ ToSM]-dt l֔^A~V[o*q~op_LBuWhp?-lrO*u6MHԏ \) {/YTI &@Na9җ,`PJm$NkS]#r̐J,I ye6hͫɀ%Z'.T5HStt7E;ma%%AF&RP` c h2`NIis (FrK Y%fY 46@_?1ki '~f10,VaÀhR)e@Lq<>@] @p%@-L0&DV/DY+Ya֊D@6[怜ox=Z LK,pƃ-aS Dd@|(}AN0 dGzyf2+@J(Qژ@>)=`q $ s8,W@Wr $\ehKf>E֒ 2 D%.; rNH(3}IDAT0c<X0ϴ>l&Ha4\8}(Н+<J*%d!4Jjh6h3!p^dw2d92Yäpu؎v LI V>c^@ Ex & O60ŜnR3b=:;bB@~ip{B?ι;3CV4Tk]d/_N}Kޭ"G6|pq(N?#kܗL$@̐I5ͩ)5=HULC9 ^h&%y{ƎS 3dR %HNK>Ad$-C)Q@/2nQ$h49+#Y#AqZVrWno`T6xژ@t2cuK &$x޳ $AR,x?7AӓL$H?#?PgdSXmrfNG`sbd+pIR ::䞬<%99kh @SikR@&n"Lf<` 6%,%r΂>; #46Y#IQ?d(u@IInςrd?%9-E37Yp+ 2y_e2@֐J y@yA't RH҂1`)%$)I,2Av>Е<-PC{_׃kFH-%Rk0 H@EN$Ч|"?h&P0uߵ6I%㢦5of\=\c>d'pH/s6h|^߾F{`L&] \4[0>`js$=g "G W~eG[eM-c ٱKC4:Yx!l|؄ }y7S}m!j3?YzEh^ f{\!W@8_,6 䔜iJ..K~Qї uM7S bz-m;ۼ`=xϹ1!Ч/@ {t`9Q$1Mp9[sdܔR:0v +1lr~c6 ;m0v~: 4 )Mw35v UAJ LyNiRRd b$#pTl+;ni1>}wTAj c1@dU@N  $Z 0h1, ZU[lk`ʙ(htmgۀ\e@]%Nݧb?o@D d~7W@Ql2\fjbQ1H"X3ZZ,2$IzRuۚ^Ӂ\;RV1 @&$T(W^F1V%h-+c^~ǁo8v`#Jޤ;2YZ *7SY(RZHkx9HPXKu.<ܗ`ti'%< \ $2A v0 m^4AҌl`كCPi)lQ#C:1oG!ۡB|ӹw?_+,rn5.Y+_C>GN/=&jHTύkRob3᚝`Ki} @8)cr1M@QSunH5lj f'?3t+d/f,d34Ж+ 4GIځr95@߳ ]kأ =]N]nA^Cp[ݖ@I)J>Ӛ]OtI D;鯠36 h) RUHVp8itɶ-2q,J jl+wO4F$@GJ<7"₦T ^j4 H),q@ʙҒpfI #hݣ@jr=rX&;`諵u(9, Lj'lwbAzzM0JRM2)N.െ`$ "@i:Z@-+A{N!ѕjY}vѸ eNj$(:tAt:]AEr5 ihJ׎/"#62EbhҀTrDy/EAK^if)#yfuUMa`ۓv+EY0i:]zmS"(RPjHUJ1tv4>1(4L H,SK0=%:LƘ :pk7$ H Q/IrB6U-{'?E 4/05g6@@Jy/r붢'g_/NP!Iq.E7;%o,I$/ըl+xIG ŮmRD̈mOq?jkdq{:'A8T9tDj@pCY=YR&vaT`2Jd2_O~ 1HZCSi-0hD$P%~7A"PRW3[tAh'&7A<A7 @:^2Vt>a [r s`p 97 ?\ர;KpV;۝j`NK0y9gd L綩,{ IdU4f2F" 15"Tz']_A?=u@B$9!u9i@&fؓ#w!ȯbLZv{Žjo2w0M =$ *H7z|7`?9!}@rJiMNՁd 1@8T2Sb`ښ䇙o^e /I$8ANw U ~@MYyMA@av)0Ls3(9 ԒY@F|/Еֱ %V>@mOCރZʐᆁnPUQ9U)4 I*a4fd4 1M8iA%Ah  f96h ծxLHb{Jh\ ,?c%1 0,b5݅1B}oAF2 NiZѝ{ dYf΀n&;^.C1sb[{*)n}['9$Ι藄 cՌKҞ" ֫%S#_,)'KQpɖe@bU;)_{9٧m1ߣl^'\>}; i$ XIDIft #ʹ }LdSP I1` ڎg<762 SK72x RSjpڍ|`3ew+r`z3fQ#wq;jj; Ʒ#wYt}nMbpü;bؤ1.x6 1bBoJe4T#4F-m{ bƬ|1={b Oя ?RFbgދ0]mM+iSbN6J҃3ruR$$x`vf=HN&dYg3H8ԡ%5ANf`2Y9k h/`J}31u^ko&<\Tރj- d;qp&Rt3̐@ l+pB# 4ΠUzQ e47M`' < t &3 Z#\ EuhҘ@&rl- :L$ 7@I8(ڃ Zl!AI]RK:%tSlR @*@:2t=y Rr$T-5i/A3F&)f@;y/崛m\I U m [d, a40H#^>^& 1+b*O5к\ҭ+~)}B艸+B= &̚Csgqhy܍[̆?K?͔*Μm|9v '#'YiȁIyӸQ޶w_0|Td m81׍?S_@A|^]rXrU$!Hy M'YrVO@Ift3@f,w t6M h +eZRK4!o;A?MuM@!vwl/%vm n wl; :-N<-@e`7W _πmoA`_cAjg ~[޵@fKioٙ@sN&{ҭ 1㤺8=IAFfiw/|OW$;}l׃!ɤ <{IdK`M>BRxӛ eM/,0R4BL.V4`^W6Ot0YH' R *kABhff@%+Д2%e\d>3}Io M0hMMuo”4H;x+}䰞V@_}c`5@Ӏ VCv5~X4 H*񀸔%haږ18=T^p[(6 x{V-ZMinG@qVm3,z ľ9}|ZEcDm/#wwDɨI`_x Xս Cո@j;moG\[[{8Mx_R})^2*-AsPJ3[}u@S? Pxs^2`(k:SOkhi]AHwA+@!ZږY KmnnG @n V3 `7vh|c/e)Ob``[" {@zdԕf @0MJygr-ѭGu UGk #oAGV)O$k02NrFqb"KMA[v] bށ_4H)#Ehp68#S3g2へpc,x\r.kC#Ftہ& l |8 ڊ:>7$ ]ylc:.l5^0+-yA2G恵_ p!K`ڧh' NGI A$COy>Vi7o^:UNogmOޡ? տ`=<^? [Ik hJe7sT>8+*Z]mւMC@jW =j/ӠGӠl'%qAĕx4)\5(+M6-&Iv޴K@3 a9#'@JvI<|p@ySZlm9R2_ֵ)v @$xg&>V2o)EޔK;W1W=n= C${H7l<}:2m!;>oqʠ4j1[[ٻf7ʖ[ܞTBv(!g R oA_6w>ީ_3GAQNV:Z\$r8j dRG+~DzCc֘ q=kw{d<act6clTPtݤ{ (@i:H_/Z@nI! 0(\c -^0L;I@4ڳŴSԤ6@edyHD0yZWK )AzNpܤͬ@恙.=AoGz 3\[@[ɠ'xPY&e8E!6 )u&wͦOAWjtrIs^\6t:%=l;F1 yymN>yFalZ@S*;Nl - ww7 x縟 )Wpkv8LQ T%(xxyԺ||·xCmvx6;:$y\DD/ '!(| ?͛zM[7{ _엝^,[Q=ڷ|m[;=q=S!`O` p`2 ɽoVAJ;q  @;z,ò$>_%)"z#d/vTZtk ZΠAWAzI!Rto;]lC؋1iۻ-HsFK{5zvx̑Awڲ13JjzC@fzl 2'4g(HnC7.LRߏSNK3tavB}FO=ssLCM)+l@߆ l~%>>1'9s N9 f LEp_.#!v]Lo9=:Et:~k 뺯~]T:lN #(`90M1u|kp68eL&2RzRT@ ILB %Wʁ̓tG})&4jJ`{pm-zAOSfm$yH^ :COؓ1I2 Mj宄YtKxWP-@N =Ѽ$L.p~8AƘ@+/^im 6Ti=M`Ng:HxPE,@Hu)R@~!Hy&-$6X[yE(Pv\f0!>}rHFJ8&yUf`Dg)gSOB//M>w RI3um D*Z]KdRX?Qq ̒uK{Io@]%`Ngrta0ad6Ov0j9SdwR|yHiڃb+Cj<`.N34vҬKde#8LN0s"++e16.~c뀴`b4&$ z,oB'.$7 6t.l'J=^*L()W׼ݒ"idL ̷;(|-wPB)C'5sL)Mn+w{DL^:,]k0L4& u`Kv| ;Ā$Ԓ޴Xʂ rd';d70X* <?u vmlz/Ʒk@-􇶲ךKDr"s / ikVBډ)FS B Z A/~=gg$8<=0H05Ck9L9܁npUcClyM~\{$o= ^~ISA+/}Ǐ 4m,^yZ^s"ڇ7z ަ z5tDp3]vt9DқC=]e\!Dr5^64Vb`M-nOH#VB%Ёdt%sx7&)hYwg  !4QntpWP@iatރF}zxZ .bBŦ-a]t[u ` G# 4 rd]J6!- rhl7&{4ڴE?VϯBVn RI$enQ~$ kgHwO7gF1^=Mx`'xs_͟(J应~KEjOґ}/l][-.Ayc3ѧxg NI"9OfDNA*ndz[Q:Ch`1hRk*~K`b%H %HfHv麙E |vf&@>ccd\V~-S$f0*fH|He;MxO.'?!tUp Z%(_$L987䘙]9~ @IǽzB_qƁ \7J`_޾5)oy-gK_Ɨ`;ؤv!4x~xd- k Q_2C?VCR^7 |k{a}^35$`+۩,Ymfg?5@Є ip,0oMcv*מG'99p3,rBN8ߠ]=w`V i WVfRJ։&2@^f+bS` N3t3$I2e͆@1搹xF6:;hqI"uAe>kz(CZ>,f [zCSXRKZ uXJ! lAden p07OA0FuQHY"A[jnБt ufY I뀭49 ѬZ9 Y ^i7奜N^?Įuy{TkL|mW0$>w& 8Ct]cO͢}lB|ggB˙ߣ8<ȷt*w?]cT7_q_SOe?DîC43M ?X?NzRM^vylv19zPē@4f" &HXeFk"F{m=l]* 2IL-i)u63Tj>k}@s F*8!W)τ(4ޠ>s q@\j{dɽ% xoR\ӟ;D+Yқ>+?/%2 MTҿ N&7.`tpzxb`f(HZE n潙bY"@2^:TXH O:Ďaz;/!Λk㷀&B?KxI[rvLI1c!jaTHSS8"Md;r h'΁'vxxx\1W=xjn % R)#ˀ2D>ү"ic@g-v~]{X R^3xMpdVv~Y!GJ2M^>GJ;;Ga:=H!I%E 8'qEUT$ $,ͤ Њj]lwv%pLt-A\9#WjP sdy$i$hAFi9 ܕӚX09 2TD^f/Hܡ6hU@Iځ )7 ilZܒ dRul *r4?=' d3 MV B" e I& -dww|l^-cص.P/o4Z4 z_{hpn.0yM ͞i?{-YqrtySot]p_~};4FTWO|3l 8WZňk"t -%HN\ ("h8i< K R%U4$,-@z%B:|@7+PF-*FMv1ϸ feP`HQ{Ӟ*SvQJ `OtM2I`x@_0csžKviox-iCsD/"x'S B K:^,4(0,%!ņsR8)zdv%'-|e3iCKSĀ5O<%AtQ̳3@.QLaO)Uܣt/Il &,S iAw0S.LZ)n.ȴ>e! Ϲ“EߟF{mCM#X뱃!dl_YwgO: S.tҾ %q:N61il0 }wƷ> %7s*{`.^kV R2 Dz.IsÜ1@i:&e?+@.irURWͤu qel[ʶtu6ES™Qi%=@{O9(g@6M@& f$14!MIRH'4 N4RH %1`kn[_ ?0did"lb&JP_24U0WqHwf 6!p\$=pG`rz߽ҍ.}#6~$d>oB>IG|`% ʹ=Nݝxykm;зyw]WORm`UBjZ_$`Z%[E#DG|53sU: j % lW*zU'nӮv3vMtHVC26&.@i=Ed/Ёb`/p\\2RFrr@d"' h,_i EsXfF!ޅscCLSݛ*1v; )!ɕ=# ߰,⥁JkKLʭ- C p3S4g (kIW^L'}e!M2X9-8q3*۝ 3&@3LF> y~ ݥ9 !9 lL)/M"kFЁͶHm"¾*Ɏ #$O8dKNH3>R/"|}mLt*J>$-ݖT>FOy->UAAqYB0yL*v!`Nf*ЎFLWLdK^&tF&>8F;.rR>ҖZ$QO_k[K`30_QhV``$az)$P4io~@8 Snatm7啼iQNM0 J2 ®o (ܤU`VCy:'Z$# %sҴ0iAƚ+%${Ӯyy?K@MD Jr@T LEFku!vWLYpoxjgh7Pf37`6Ip.p2;ciu4{POI':al??M6 szڃ ꔝZa5к3!tg3ݬp[oq³. Dv/2wo:+ i@"`9v} hQ 7Y$AC4(w;8h%t." gH_-@.K3I$`GHzD[jY-eAk9 d-NZR4Sl1[t5ngZ9 nb3+dunC%,ՒKx$4I'>6}gs7'dzy`C -̀:kf/ Y-Wl@$(=PYCQ\#@g\ d3d)b44@ 9nKQ0Ѧi楉v2eY i9>8#C 92,4>$閠}˰熑q zwE|` k-~G>^|5u@G IsAQee1:hm~4;,8 |h*=@G ԥ3A'ZrzA} H|A3hi"q%02d(M ]ܤ.q$5hk)Ha3-  7>ym<=`~c,@$Øt|u.[_k @dlV*1H1M P;85AN:l @_^@e& X2D!k L!! XNs))0J`_ZbvMw7(]_h瀳t NCHLGasgqvlxLc۞{ǴsSLc!tW)H(d\h>;sگ݋.=쌃g;w9 jtkݯL31`'t' <[#4t^@QP+Ma 4v$h1HCi!쒢Ro,uܕ.@1@[i,Ou? p\qr_#BlU?ĻL]s[\?L($*BtyqJi>́ f'\zL$tnC? C; d H*SdKnGA]# -ؠ#O|!rR9f@<|З #wIJN;H 0y 5cMa`;wt,&[oGỢCpHw)qdƞ?_O@'LpcH^9q|gŏI$V$t'IA1(،Xef9O`҈\NxI5лLoZ@nSZ9c* #=` @6m1<uj)+o]^Z䒬 Hi0ICTrO2]j@jA)ܒ@z-PV: ow8uHc$/hCB̉|kodٖcf!13 1Ĝ1333332ɒ_wV{9__=^k5f̾P`@˓߳B| . !LognIhJ ]W_&{tR"d{_v`9\|vy1y)j^J;oT~5iqgحSS}} Kx':@WWp=u(2J|OV_&~ Co@ Ihvjj8)fN!Φf;zVl*rb ڄIek] v6I@iQd -K 79p>;<m9n*#Vy+[qs@3P7AU!ÜRPyډKAFe=e6= fsZ!|St.[AJo'\/AUs@ڐ, ic?I.@n<Üh9;hJ6 LQGx){A[W6-`٦< Hwu^Ķ8&|/=._|p,WA) Ox!'dYI,!!;BRBElD{ľG> /q"_D ~@вo@:#db%)=2M%APMW]U@G2LcQФH[ $ xY#I4 $> 6PGkK4'|2nq}+FЂEvHh wI;ЎO@*yP%B đL[ A3Uy#Uh+ x5Iap8xɁ/Fނ)FJIpcmQGH60 = :hMn9$SB$Tf9@}u@ `I%i з\V#2L 03Ka)}ek]ֆ kcǂ`,p_Oo.NsH1"RHmm>Hf9#mAv"w'o'/k滮&I}Gtp隸hEVGӅ.>?D zuqO>EF58a_Q_%_oA~ ~'kSAG,2K24 i%X]h{٭ m_v.ྴݯ`e;䂨<@@f8%`cR 4! 9foF#? L)2 $ Q&&-`SG|:ſqͦJtDͶu9+_Rex5xw޺'5OȭNRSOL~gtP!sD8\mKg&4yQ^{GuDFek/:Svk$y<rFqAn? PY@bŬ+@GI:" llfHƀ, ,$"`)aN.==vD'yؓvQ ie@}i* 6~m {777:hsߌ;=mAOCH,r=xakox @fڙ@#Y'"@b~ %Y ~xV?y~|LtB!,$l|MA~1 䵌JqS惬 mv[ &;Fo؛HAΘ(U4Eƒ^%Q82ȇ]͕y@i/wO!g$,\nח`óGи`k cƂ6Ғ,OrP] 'Y%/s4tێ`*+i%@ne9 #;?ԕg`! RVʙz4c!VevMYXSJ$d<0{v3HG/d ?:l!yv8/+e hfv~@ sRIH@e2l’l^p݀(ѝ|?L Ht\,{TjV>?ITN2eݵ'@5fr3,2{~]}nW@@; ^!G! ]Nos '{`M]g#4_+hmpU&햽W=E$:&/,or}*2=5*ѭs %jNW|.Oi+u"={SM2g;pi+.HhZSYucqd:bY,KAJȮ@3S#Lf4洔H 12J0".D5Kq#y d o s A͌ڤ~?c$wqzOe[ȡҀd&H"y'՜@zJHQm&2W i^ \<ա c'-%e?H? 5H||?l^})`_[nGޭTVKxxہ\ l5xWrb*ŜD/&+ 2]b\^z=鋻UnC_#ONy0bF2P2q!pn:_&?IX7h9|-YL.wqwZ# < #BX)fIdǁ&4 &9̐]uVF2Z6FR //_e,@d)Ag 2L0%MM`YYjZK*R{yIyri vlf:^|@WI$>rCL6RuHV$ 84D iBe},7!h_K0uMxMo)WͽC* a3 Ğ|NP?^xrY#pi'/stCL4¾ ;HNgH 5y$'DKwJ(I  ^FYk6-`h~-@9H;!=D`N2lnV@/9)3k&r@nb&2o '#*T`HKt1j M޶Ա &m@$M/)_2d0P %МCTA ]Mqcnf~#dF;rF@@5~}Ɨj)H8twP}/eB'9ޔ¿ m7>HT G_^)]Y@VK@BH'ʠt`QH@*:eLP`Z9 V #t3DAҊE%@ .A`R]6 nڌNJ{i Aȟ2,Ji-7Zhl5)_r[th氹qU}C78y| =Ch4C }7R''s@bֺ+i;d3A[k{B= J2d6A&ʓ5#-j9 :WP Қ}&+|jm lA…ף^Uѹ<%px47}LrJfw- .  QbNȑ$!  ~]zr՝2 tSgJv'9 2Ħ?"2EHp鲏3o^40{I<D |/'X+ZS;<&bN\3k$QST5 E%;i2`rX(y A|RYւ>q4Ij0eY R( $2dI.I8?t6I+'d6p I%0^3d[ VL' Zv1l]l M;SC] ̒ f6ȏgi2F)0@VX>v? 1PV@WF 2l~ic|qD8l#=t7VpӁ>zuIw.x8WLY>`Dh fq-Ppޢ.݆%*xQ=ᬇl貍+ __ +2<Ѱ0tC~jΆ|UՃOQϢڎ8[6P +Wt0t:Uu a}DU:Rs8FKNO LYl`EFjIQ/ڞ>%etM rr ,s`*_M u|@I!@m6-y!%d|e8h;nrV3(0ݥ G|1c}- =khPZ?@R'eqdOh([XЌoKlu4YJC5],n=@'j]35ACϝ ڎBw1G*2 xj]mfޜuv3d*8eM(|;U7[@BL] !Bvs/OI9>raӡ37P%2.| {<dޚay2pՅ:B֬%܁y CR)9 b) I "| ~sckA I,g'3M^&%ت$f 0P" $Г2 4R_h3`$/]j^%ޠ0'Mv Ki'KE~`'$ l [O# (z4^Fރ !%ЉĄrõ3]N`vGF2\`&4&f6Kv a5I C<$̓nq'`VI=3ᆖ~gizYOiUL2ne75kwbmmAK۲6Nb#xxB{>rN>vDצh*;Tc?r\\f8 9e&$3x%3Fbdhj`hv'`SNd*DlCl4WͣD @ :̓)2 n@y~PGX=dmLБ,a4I$̑@r`W M['Hc$^ dwݾƤ8_mqՆm_= ؿ/j>F5x:ۓ!xYJ~(L :98u*NCfV ܒh]lJ4Y:'if[ۖzsu=@>)hkGoOYWټd}0oMse!6 (ե (46k檹Uh&(Kj`'G $$ɁMR$|Hm-'\>#uœZ7/pL rTjTH2"Oށ+qI_"N=1U4zr# RXNdU"Hgih'}&仼U 7Ј)zt& $EH+79G@i pWqq,dtyI45M1BE{-t֗`Sڦ<'g,HF[߃C!GD9_@{܆Gߎz`bAWF ?UA6 N>QI'$>i3|@KC]ܗN3Mh'B"@k]@K$d0Cjnz#tHRY!oAi%[^EH/ Թ^9J2_i`;u#&´B J'n  ܗr@JR*!0}d<\滤;Agx#dv q}AQ` ؒ6l+mg(uxM3/!+ss3 tްO`{l'iid3gg=.*v.??_ʇj(:1d }@sJ8`1A*G6dJG? `cHKWb1`~Mtހ4L\,fpVs6WA^HKȤV8N pm_ I,T:nv-2_^RHw= 曹m^֣d,@RB{l2EpswW}`@4[II$ w!}h߻7ASO7D}y i9c}smN&oP?TbRWB-9J (`>Ύ,5mY/1_.zx; AWxA; >+$qd%@Kv`t`8hm@o0-N]0=dܔ & T.z9 ҅J H|,h,;NyWy #^X ) FIv@aP[^DK|Q9:qL ?PM*lAQH?ՈKJFriZzWXli)W 䣯loОf8ѣfC -DI"$rVFv"-W61PKS 餁 e]]NO~ W=9j xz{Z_ނ@#YO/ /8IeGC]yҝ$m@#  c"qv[ H^d<`*8;`- Rqe;h>A h:"RfJb ՒKҬsIs5,=_<@pHsNl&xR@ISdI@9 03@I'w@hi6M:[װMU)o`9Q0I!9 U@siJ'^ v`gv/n?KEZ#@؜ \Y)A*j⛔ (BUͲIa1P7pcRTi( Ai% 6?ŷٗ܄ zjV}` mViɃ@X&!?_`{ܟ@/ؿtpBuv7&qCvo&ݗdiE}m>=٩ [):=߅;vn{~].DJfjo?cϸAG :4V5PU. '5hm*P:aL10LAIނW gT6F&H_&)KfhKv[T%liv=~9LVH6D}]À `66H\V @m%H k~7I04@m^ rTׂLNW%W0NKYw>鉐?&ԁ?]+;o/grC"[ݤ!xz o@DI2 v<"#H&P#ͫ!xMw{ I&*4( % )- a6N; (@"MJ ?.3vr] 19!g!떌SlEzAȩ߷et]Z7&灓إ[^_A4̒$\[P g>flDlװ\AÂ[7ț{䳜@E@3ŠI``K#ց|-G >`V&$$0qx ~}&ASk-RU>J hZH/ pR:=Rd 1 Q@Z&uXEq)q;HNR`&Tp dė00I!+79v7ĥBG4jGԃtE34O$2cPiC@ӑ.@R2q -:# ekw]ߵ0X t!S&!LN&@=jІZ䆹[N݄{Ş8?~7U,NYfYA:v2.c'7W(~4KaI}"~{,owν?D[e…^\}{&9+dk~>z8G䛤 ;YR`/k%-f;Sr%͗ oN~m=h*!S/h8Lsx@jIRi j5l ݚM9ւf\L8B1ŕ&/@k9='F3X%8`V&da.PUN'  6ڄqԫl52%ߖ]r/I3 RO7hviAF5 4#w$$\,@ hj=;0v= mCF&OxD"8v+VEqޱN){-u^ dϳb|nו}t S5zW1I!bXG?L}LO?&xZ]f/:A+C?;}*pֳM@ i>JQ9$3,rܠ&Ґ{{|&IBB%5h>Aw,[AY P五͠o^\i*e@jK@E^&Է aXA',,3LjWQ5y,WJ8L&04RLrH&0_Ď[1|<*]]H73=W ;=$h0Ck3]h+ ERPO>^rqX&6?P]SنQ)$NXJBJWzn}J]y_fFflopq/ )YvnVm Nzi 2PrJ8*@H 4Type_w­< ?v,k{9 6u!E-!1QvuP!{WNzߘa -a -e9 }69}( < ym8 ){-?gv=I6)} %IՎp 8 ǀIkzD\{$#.?v`[ZTD0d@0 h{IJq cWaB#2g0Q62]0є _ E熳H:~&#&\ O* \@ ~-z)4v3D`F} @NB JY6mno!}ضnM]Vs>nQ\V l{ԭfkրswaB/obBv&\leW: 3kTZs < ͣ3hXЌ\?m!RWD^hv\,mZa'ɹ.]-mRM6-m olد6&^lMuD{ Aj7[|Qn5!P|<>djc:RGڀҮZ )i )mʃdTM-r;Y7-w;{Iwm fԠ6P [?СAK6I r&d(RӌijItKy%@ަHDW/@ej1OAi`6 -ZTߺ7vY MePN6`=w YVzvi+0*6H';p3HW9$}fծGg~|t7 *uv`BZmޝT[:>kU`͋=. />Oy!ą</_;=_7˹yn&QG?[Ĥp] "4[7 6[!)'_f)H?o@AK[B.>++āY)4D^=@XRi-yMUKN0LfS s| \>6޶_zO׃"@$yo`~" McqAI&@&/2ܚ;2 ~z-@2#AR# jFC(+I50yL/3 J҂բHt Y-kS{Ww|ņ=ivpʂ@~UC臠A_v`![l>ΞY#Ǥ4J*w ~3,։vbBķ/ ?ܫY#ZZBk%?T~ԇ9yRrM<6 "`:Fh֦,@{H2-iq -˄eHi+iWzsĬ>~YRԏuCY>9% /6!9(@Ԓ' q}o̯Mյ-5M25j^=.M:0K\e9}7  /s߉e(pUrh"Iif<53@),a`'_XM+p/`ANzKlr+d>U0;e&>7M $!`X% QҎI`~dغJ| FZ=Tg}F!Hvu U6ƾpAp;T@B=8x 9W{i  ēuWeﯣs-zq>Duy7fݚN:pVZ)H~+2_]ſ7i?Ș,R%" %WǯQtͩ- D?ٮ` ڜ6Ҷ<\}%86/Ȣ&y_s@!< B|c zk'&r^CN[`)c}hvr :e))CzIR`0Hp'ؽ$dP 9fqa )\bwۜ6$BKZ:Ni-v>ۜ<I!;wН!fmX 1#'Q[~vJ:@siwlzvK L) \d́zf.ŠPNhpy]!@_m: {By#f=8 2S^੮`s<0NG-\?-aV_[csm;wf)]!PPrs~tӷO V)&}Lx  ž`[%H,)Ah%o;/I L7[&+H:l2D=fO9 t&ͥxA?SJlK7Aڎ ` Ge(hBRf-AE+=Im V?a0+xЫIoyl'ϾdGPlqd0р%yApLց}4&"PR;UT0$T*I$<[`r-^pq ڍkM~`(9i 楉1?3ZBz g&#AI{Bk,w'hmZ&$ЅZNyw=!Â9b.K<3b%̥'3Fdž~&άIbys`_ܾ[.%tF=?Ā*}慣O,?B 2}mh@d=2u,~t=^48d5CtФzÞrCP$J 5>!UM#`$3t*:Lr>IpNn 'v& 1hͪ>_]` Hz @]H=0cLb2T]Oao)@/r`jHA):I1ܓg U'TU_IDATSm?Nc nK0ғ4|@Vr)q qւLA_,0;L 7- r@*,iGVz[w> 2AШlpJyɘXdY2@8}ANOКz-Ů' $@|sc;ڛNM^ģ2;l>~YND>[%`7ijM\ä 9'?}\;x%-0AwߜzSgOQ~lS/F<|Է``D&N $!"?BUa@i$*F|KJ|40LI.$?0vHihZltG99LZ sCzF[ta-Ϡ ѭvD&>~}PS9~BQ K~} rNFK4 :Y(Ymw\6a s8ОD '#W;rMΉ f'=hR s[ 5^%-{:$pYVO d3o@+i8D+ 9t=CQ3m;3&v+@ܥԱ[Uz^k {~򬇐!3Pͭ7Z@s|N~y_[ާ{k1!Uv=tBo^ꏁ~6R ϴ(ժ?V|My?n4+2I,s\~<8'{ ݧ2&}A| 6P|6h$ֶՀu,hIaʀ,zh'hIɯg`{Z2$`/$]u ] &S |s`A-l3 <ē`v%pEidaG[зv~40 ;ގ_ACmNrH9f'SAqR`d$I_ v5@8)A]mdWW ^bj|9wg<*-|HZ xb`uL>\ -jr( .`4MѮʳuԌC/{II|Y8IOM֗}@i_}0)=h*[܋g` }C34tli!Ո B{i_e A#3`8Hno|$;]ц0Hf 0P2$3n259VSMU %y dęRl[fuOҽ*QbBAowZԦD JHC*A㘭^JG*j/=ع6b^ ќZ&JX v >`cl_N!qҩm)@[:}ZAU#MJ4"Y~|s仸 H҂8ͩ! /$D_Pp] 7u3P\Ԋow, Z/t4h}ғ)t{`yϾˉj0VTu譣tBoj5 6\ߟe{\iՑʼv_Fy>riI \;$;Oն6Z @i>mgپgdZTS$t HxMM \z8K_X(-AKWfQHPh-ae+oT;?R?H1rF4Aՠ}lUxN+W]LtPrQ ߁Pn@J@;-m./ 図-5`: b*0R߀_ W'C)L&Hr:Ȳ"]+!fA=s_ qσ\e[$ܔub4TUa_jC_ MF3Hb:->}}s@[iRIrERt0[ hNzn@3Z p ӾlVzeW翂[!p;-_>|.x{= hJ K2Q~ZBֳ Ť]t'%!'e @b$0 TR)HZ ,; B6l5|> a<&3 h-4hj{$DVtTrK{%nU\p3 $0MIIA+.!Cπgv~RXr;.w_oyBC*n{l{?VdREfèQN9-H!u5j ɢ/|~~mCxdŷT/rYSOF 0:hq`10.OC!4`#m*dxe1pWa 3%'@2Z=;@S`֚f)hk0HGkдZ[!8Z4Ksh@VJk;=0FD߉wum ̑[qS%/yAMf$J`.cXlM#@jߥЛ] SePZA䑂^iգz s\btm@RY3f禓¼j#lq;+@G}A Uz5R-Hs:5m.7#H.Ĕ1 AHIg% ֩,oچZ6>0X+h`:I&Ëb/6 6/UT3ULHX6~Ɛ>kCڄ)SwHp6yxf HOQVZX$w4X@On|@eщP4dA$d0VS]ځFM,0@.v1D vHp!€CsOA)tAݞ}&Tљ~W ^Ih {[沝`OXx.:= q~0maP] :ZL=3 F*IЫ:^' |?R~uӶuYQnAp=!Jȥ]3Shw܃.8Q7sΎaАK^~۽YkfMO?X:ok/dI?W_|z`Ԩ/?׉zj-$F`cm놁v Z6 @i{NNd 4@p3NFZnu`UV5d.$2?:?֒teS((GA62A)d4Y~вSp#F&>V ;%PQ4mJ-V&qu@} 47tc7H}ܒDL1imJ}eɬҡ@: J 9:Wܓ=rr,] 4߸l6'AP;C0]f<8wA0L !dYѕ?etB݃~\p(а^с`6fM]i %<HK ԡRr5TQ L@+Yj4exuw;>knxLK 2DTHL#t'UG~s}  L(d-_]Ÿ@~)&@rH^hDؑ@a~E-/urD- $) NmvjAHFnpNЫch-~/a;1cœzK\qGNVMfxE?tݡv{ <~e54`ns7]Ai|M5Ҥ U(Dd\3@Z~` s4 \nNұxcʂbp;nft'f\ Z],;-~sqG_el= !g Z/Y[wlظ;- a#9_tUWwuuޜs^>Ѐ];?9` ^3<Γ׫N\'tYR$_wޝ:qG&vtqEZoݻ}~= Yj~.bF|bf 7('H%3} Tu n3{F9ɯsuODcd'-rr8_.08fH~&AiN4 oԋ2@Қvoci-NI'SKvqfp=Y@n2(&E(&d5D` Te5@oi SjPُ $7( !)#8ݬiDrBil {ZS`_پ-HoiA_5l-dd"_{l_ &mʁIrCdѕk/? Zf< M5PZ=K|I!i,wdLa@EAqB+4pT 9DJv9 |4B&lM!M+G %ZV,dϻ@>JKN wtrtB" D K H*`$Q: l 泌D](/ dl S@YI>{ ܖ>` !PaR,6G$*8lY*@&t~#`2asxxF (CG; )q[}~t~P+ S'SB_5/I +%lzަ)- -~T`d`]2.3ko.ev[m'?Bs..KٕHw}}?_TGq:<+h0Pw2 -ރ`u8П ! ҌrxEn9XI 1!S5@kQN{Wom "))A2_0~zF thz_8T f/r'Su'i vLJQ`;W2,dsk7`gyOjH)t- %@~^~bKjy2@J7"hMs(@M@#-ux\ I $@r<[ C(pR{TJ o9iWr0EAS /\!Ƃtq@ZnoM`^ :so `৕m%4yb)BvбT-QZyHr-2CJAr1eK@Y/LIyKN^nj`=>f&ݢ@Ttm $㕦S`"K ͥ&-P-@/jM4C5M מ Jr duQd_iCeX͟$g%'Z&h;d)2 R.<` l4\ S@|ް\۠hF[{NL=]^_dFJp,89x~x|bn7@ZҒ t*d!%3`1 TPDs$P2 NEFFArIVSWg8@V_? 6A ׍zWj?&j$2ץ(8?]NpK'K\P`rv;/6]ԓ;Xo?!i_a = ZSJUk3xǩЃAϚ/A/rgyUCnWV! =#mlv:P4 g?]\Yj3@r L"EA]6\j0@I6ה`[ 鴦f~bO02"5slāX//e1\d" m`˂n`A:r`K D3pa&@1{U}A/m0k Fv [@RAo>s(A kWڝߵ+HqY#Pm$^xBd9){A磌A Hq) NڀR>A gJ-оT 5ݫ&$GAzJ_)NcQsѨ*RAViIIj$bd)_nRwxR 4&DYHfi @gsXC?=4&/G> - Op;(OFܑ@2(HRh.z3ѠE Lb%ek<򑀞2yUY%U!$/\fPzd,Cd'S鯠~yV{-ٵ}ʱ;_/7;YL~*3U 8h"{%mmaMfЕZP E'0W-ö-2Ct4Vۗ. 4y,5Lrͥ@V1^ (-A# ;JcJrЖt=kIcy-@^]& 5A`S :bOƤ[v'0eiF!BRRr GAu&rkkhu=m̈T-\i`J)fw|ߛ!ovv)rg zssv8 ?}T.Iвm;[ ;nv'4`p5 A>;`' #/KY:}';)z y l^iPHBq ')Ns1 1@k'ۗ[ueu.jHʂеv p[rx5inN/`Su_cJj''[`RLJJI $HRM4):dYi&̒L5)''#Tܓ)Ā;)njlp<Vʙ5l=<]ג fg)' %T 2R. Kb;hr}e I tur?kO zw?:D[`S *٠U5~sMv;0% tvƀC`˨q@Q W䫤^I"Ԟn.evMR<,j+3?$xNƇbӠmE :U{kG` =@_#!BCiY ne;̭Y)4ӖYeFxQY|m" tZY ,0'A5F[un)d HB @Q-qCܑyq@H MM  <?d lmjvGL5 cLȹQe?ʫʏޮy/>CO{u&H:A}~J|hK~u)q5/ "ܠ6qI8[ZSk%`B{Ak+ !;H^d6i"W!hZMz0dcAK?nځAdL] D65mC 9md3Ur&Ҽ 9MM0!8BY/ QˀDɯ2hJi/l׌`۪W#7D&8u=#Z6Ғ5s\mGm MIԒY+wL$f:h>`ЄD%o:@wKtu0\g3(QJYi*zCo>$T@(ͭtkigk)?ݹE>|jT0mL]x1͘OQZ^NxlM3V'S*@F ӟm-r-*i9 @[YofMwp2mSy@BeH| 4nW< K) iT!ƂN %)gPH)Cz> B% $ ŵ ل@fovc@ ;mnn|:ە®=Z[ZTsΩ d0&A61Gm@-9 P? FL"-iOiM`'uHF {RXB8>`\+pux=#AW&me/%?HZD=0OLAՎ ycOtqնtΰ9ii"!A xA`|jZXjym&{|g4}T2@!J"I?w=~ '*/=Ov+?h}S?{3z$<:} }-5f~ nVocpon$DfVݨ8A[-%Hf$淢hi`30hHh.0f),9lJY] d2^f+9@Sּa5arV$ĠslqwO$'L!pھ붙STR0 6V/Y_.5tv ]9zŽ;A/A߃ėl7} @,d.T\~ fpU0YMbzݞiu^V@|~ӜZ UGP1 *h5]eK77FU@.k߀] }3w{h[-'^5u,o49P|7diUJ$lm;lZ֓@NA ϥV8s8 } zšoges5nIU2[| Agj@}v S8SđdtO 2T73&%$4wvlv)HI4Ԁ7 ZX;Q,mѠo ƿ{,za@x^ DC@kE-Hi!-vl@0 :x!) h+JZ N]$d`vf7h|L@gQLJ,#A_r.y4`N 3t^* ޱ,9zBgqIe[?ளmZhŧ'Ą YAǃvJ;}NO_׷Ӄf7*m8ˑmؖm< :^7^Vx}zn oNt <-=/M %=1r (t ЂM,hk; XM$IRMrhO]~R, 落2O.53- AjN]A1Vn@iY;Ht k MKz_5 >@ߩ?qun;HFLKGv‚3=;<( j?0? 8}i.|uS@ F<r^$-6ET7AVpNr`<]Th:G2LlY* d"2  pq}Lg+:fj zC l\6AKh<-(񀄙 {:sSoOHpOڔ&L6) mt.c~{ҭ ڌ.Xˉlrϙ4U@FHՎ5> {4x@K/S MBc Uǂ)"?IaФT3q31 "Ӏ*]A WjJpYc?cO{سŧ8r?%L)ԱtP')rsxaۂ2=tOA[k9%Yy w>PhM.xE- LKf7f~";ȮbLr/?o+aD!h]hnr{sfB&9FQ >57hfl7 N5Ďmm=;Y X^vS;cM7=Cf3K[ɖ i!- D!N?t/&F%`H"Lp) 5Tԝ d Di;=q`l"܉`p7xxLU|=5|=cF}%Qn;K7RIfz+c6"ADϻ 6KazCwWHe0d _7FQpsw`db0w=JH@Q^ym>4Z?`2 `1l {ڽ Bz3*h͡?`Ro$j - dO ^50yL:LC4-f5L2189" $bUtH~AclJI @gS{IkNVi)H1C.ฌ1Ze,34pW l36ha@ʘHY&$0.h/`^sK?!2M3Wd~y,KB?hCmB}hI 9t lW˦+Sd.=lb9x7 w1L㥆W> 2v8|^x|9R Ϯ\z'T5$Ctq$<(0 4Ҽ hz{]TmN=瞊=ܖ2 DIa3t;h[@= fіR4ͥ[AN|`r H@~oǸC1'?ݞ޻+p? ,f0:(9M00p'<љ ?]Z0b,l92Lbb2|"@J0FJb]- zSE8h3M~fhUARK2I KyT:WN֦;юurI[m Vg؋ٟl>|f$~C_~q.=]ޯ5UuItxJ~la[?u}CxwsQ~{M|ly f x<:[_`IMC,JZ"@ Ruԥ^ݣ+xr#%C5ڒ4gbHxzO`M=<'?m9>m@px_ݠҁ%pnch+<h_F;M}A%y 3؇ Q T~kvi/e0LImAcf M!ҁy.kx#?U@*SYv ZP/.(n5xͼ-g|KK ?BDŽ cm`<`ڇv=R1m6Hbw KΛY s_5fmk;~?ēs7O#'с;Gu݃&Euw{Zw""Dlnd ^@@Av$=Îr}, IJm_uJ$ (3П5+@I]yb UN`Cv ,cAo2PA[hA[Rv#t&ͭ LwLIꛚ@'lz@;ќ9u:@)}E5fw=wm͠sm A.!nO$M^9چi$Ax8 1/$hE-́Q> ?I 8J$}d6l 'd #{@A$DئZZV{<}^ӯ`5@U7-lӬt=oo"x?-SGl'%Xs=^ćrKz<d;=U {- { gN,R ?h[3l:4@u;M^n<Ӵ2@V I/ Ah$1 f6y2_^?|ph8wp?O1e]Ld?=?6Fj`v5-HBNs U_ , $ vgM0|nImgMoy& D ye/df nl󃜗<2t%wYғ @O;PM IOZeY쬃AIKC3ʧOsy){n')`*~o$Ihw?~)U2I&tYߎ}iU}ﵿV}RK>4= |Y솨_G17b_|[_ ,4DG `w R,VrM/O |5uG %Hz&89ğ@/9+ \3I&#عz֎b.} l >eC ehOi{$غ˖Sml}$dRjK`8(v-A4;˝z[ e|C)Ѽpꃎi(A!%f A3k)^s4 $(9ԗ,4>N,Wf}dZ tsx{ %Mbxd064J]qkz`fЊ V)f]R%<=+l3tZ^{1 0o ih|Ow:,5dkeE!- A|A/`^ zd,7A Y ėa4Ěv9-_-}".} ϒH>}µƼ: ~{C<lHpSf68C|}OEOA@:ĂuF:MgR w;P~mU>HnaPW\ס*`H 4V|tV9õY!e& Rҋ`YG= m L o:֢!~kx#`;3"\LwWE{o[Hs`: ZpǠ9\2\PBDn?ڦLog|q70i`]W+;#6goGC:40ݳ4eoxcɍcKK=>U1:QLsO!r_{߮A<MK?? zT2x x[ӫ9fb6A.{aUt\\Jk_umvANpJq)$]c-,A. amV&g'ЈPF)67e4'D Xۀ#,@-z2(Lvd#)pO<S`&T PӨR0wH4cH|9aRNj4+A)/@%==rr [ csm`]df6Њ&(dm R5!:NGf4=ܐ)2[5 FGg&8H:zjrЁno6[qo*/Y ۄ< IÎdS r -A,ľKeN[kNqiSOӢw"/E}u}?6%kA9<3s&LnW`n'3F؂_UwN - r ($ՁҖ`g6)0Rs1dT-@A,؜[w@7OG!4Ӊ e8tڱ@"ɇo9i9A~[ 4V"$7PMSP䭼`m;zKԐV?H $@`68q5d3VТLK`4t"Ɋ rY.56pG<=j[f8oAS8%{ț I.3OjIepz[H_'we7‹EnMıoA/==LB8MB6Xk l7nC@kS3 t1d21AP2; AiM |Kh|OЇZYһz4ͥE2 e=fGD-hz=eo& /}RIr % 4 M]j9aԣHNzJ9y/))e0}v?w{{4&$m`m |v·!! w`t ;Ʈrw'g؉D -J|>if;t7_#%QKH<|aL$>Ŕ<D6.ZvF!H B`A_g'%ؓn+ REJ@uБڋ @^k8V+Dx K7̑%5S+=п]IQy T}@7I~`J*H! mj'll*)P@_R MzOq rULImbӸs@zKONS=wgHji%فd)-69l):Q6^I(hҍ 6XRZҀsƹͣ-4'ny-[\2hGG{`fӴM5=T1d39c7A^@ЎOؤMx9`$]Q@*'g;D.WzRAJW J?jYUtN@( 2h-I2Tނd߃hO v81N'4Zing/lIP Nc +X2"@.Oy2Yn:d$}qf=BA]  )@3[ah/{ni2|o>;6U9)ImSٯv[KѓK%ߩϭ?.c'~FLl1g÷^o8cĞ'I,?Fxen?fQI^68s/]7o@Jпu3i@щzhAi ZB+iV8͡wRF >i .hͫFۂ&)22 JB "7K2I^s@J^0LsL$@ќv@:ғ,Rz\iD1ZwR+O&ЈRtTfWkodKo]6nV` HAYjܖ}r."{\7s#0y'% /y&џ8y`"A*Hi6MA֍mi4v;ю)G4j&д@olp7omu@KPR^lܠu>=eˀ V>M- nf7 qKB\oiB̾xnL;^؉SpϹ-s/zpO@'o= J{:<*258 nmi@q@p\8l)WA>J< F",# qF"Ylu͙wv7XMa/e{ډ`Y_$84F\| x)xJxy2&S.l;La}m=p_QB=u;0vq7C3Y:ߎӾaYe3w,7Iyg ^-4e IlWl1 |Ss@sNCvqc^Y_R| }O43[MxTn\5{ 4QD j9!c0q,-&.׀&>:g2]Y [ =dt$hzͮA$րp(pCl|iͶpJ ФHʹV>)ܠ?4M3Kd b-p]"e;@ /خK45$?HwYVPm ;@Gb Li! $`C(H[1@:(MjfoShA@ =ܠKt 9ATׁ]4- R2] a끭t pRIC]ඵum iF&INSDYFJ`! 㥷t[ֵM@6=\IоU r@B%6Ү@+"[6]Dv ݁bd8PM_#jvj>ԟAHM\Gn#SYhy)|Zh/Ӥh-Zl-C%'ʐ@" 4Z Q mB ^Gy nw}qbĥE7whi]m [DAAA {Ș`/R]~f@WiCmQN};7|e߷OcakxKf [lKe; ~"Ye-9xvwbט뾌\۵T/cwC&wݝu`z;4|qz NŦ; ;*G^7̍R@B~jfHiNJS(?QBAr 3 l7h)I| @fе\A e9d&%٢À:' I ̓{`K=z[R]z f*huKEQ eؼ6]Yf#44LY1 ;- Agq3N$xH%^פvdeCd&oMv(*#H4 xI0@\? -mЫ< H| oMTr+r L[Z%HB _W| &^Ę=h<,&l /_ ВNƵNSE K0'16Բ@ .`7"]Zv'BހTAShF2l%=Lw(B5>W p]z(A!)rHs zhӌ xM=PG߫rCDyr4}4H9~@ "lg]`lm]gdΚ`J)XJz\{JPvU 7ބ޷ 6t"u8euJj߃e'SAdWUnioSv.w)EnWKMFN.[J_ɸ&#Jq[!xŅ,5s/ֿ_H*0PyoeW>?9p5@O=sEm: ,@j8=l=<)R 3E/U6^4 g;ANЂRXڊvAI}yHszIe%4MОN'PzȁRtvgH< %J [4 fR!M hFLz``8%MU}mG; (C!j$T7AIYn3w[ ŵNw4PTQ|~/W Nf1;HWg!;CVmˉrW}7?IIQ"UgޤHv0vdƳ2fF?-RM玳O7kW/spٯvDXݍmw%$-|I HeRlz-@ N}ج AU4u lELg$Cl'3 C ^) T#;-5zRWnG LWķU=AIYD=v/PCJil^٤@Iv)O~2@uFsHeNU`ns4Z?gXM!%5VfYOR?Lq g䦜^r䲜S/AR w]g,(L*2u(iLvЍ:ͮFB&2LA@~ͬ@4L24ҮUG*2$$ sY(〇HeGfԾca^d6zYJм6f]@Kd \h \4>6c!m7dF^2Bf>{:hn6H3Jڃܕr g%7p;t? Y- Fjz΢S ܢnG77p\Seꀤ$/d h)6Hz. *ж:@;<GGft h. -Evn'.hWm&MfNS^*[d;}_@F0M;HK rrzJ6^ג@V^`\GKww_'3IUxE,,߼2(2:$DICgt89 x[Pf]Li- 0~@u< ]p۷+h @ZFirf婱B;7y̸S1i_fO!49a%Vw|OrU67ZN~##}l9|1V4Ixp|3 GAhZ}ksl CI:JWk_;];xm[XB#ga3@.!Qdmw{/n* GOjFllNm)h- A* `<1q׿Ah.ma 䁼[ $9i:T`@Ӓ)}<5 %RNV}HBFRA' +;ł4(FqJatyi5i\b h*j7K'iUIlǷBгv^鞳Qt:3h @pY r&T)Aʘ 8s*g0B$ce[M zT5st_1Qia嵢SZjJQ改zFPW//*Siݧ@B䍄QV`f6h-5-y :/ de 0:O3 )'gA_$Л 2 BIz x}d)Y ҎA()IIsh(P$K~՗u<@Rt] wY$ґ6 9-?l0%d>7&„Fh fԠ%2߀Gho2*)Af3EfR6d %YASjv,WYZRCW^J0T&S@~R: v~5]m 1@H^yHHg'A'sBɩejHqb{]x8 O~?(qPwymzt#s<ȷhezdN•f||Ǝ-ߎJw_Lop/eO>g<6{'v^\F<nsw><˝NIy=Y(sM j{ZLK]Tw1 'f'w$dvKqSW"H+b -bSOWu9B %%%H @ 4 Bh+I,PY$$@[Ƴl D\ SGs l`6fP+h At4ߺ%̓ @kj{ a0U!7 $-=)j ]e 9cT9AFt9Հl /G@Y9^j-y6> 4XJy)Z*hB[XSi%9M J$(ր@IYgs+k=o 2B~3;/4 gμҎ';@Aւ[rgko0唙^ lQ^gacHJеL \Wt e!]N34 -5i"AkQ&aq`s٪63N~SLCm~w!6WlymnK׵x}3T~^X8' )dt@ d@J Dг4DӀ\wr8YvlЁ|їu^CU+ImVSqR3B(EafY(oIkGu3OAH%g2@K. H.It~g h'[vuE߃:T} G@70 /e'd"7AT)F]{@K} $'d"hJrGyj`8MJgm/_D]W]33G)%RLUI,An: b&r4HӃ&RQ?*%"|nA&J/~¹;`rMT%6h$^v}tԮՕw( W{G?1\# $P B7 lnw TRJ I@]ovZyT ő F%o8 {S{}`;t;|VBu j&Mnk Hs}s=xf <C뷄qVOP!mM&, fi-m{?zjhD_ǽ+&cG/ k|')}=~o@YvN+c PTRR? ӎ&S0A- 'U &@zL<51/y,G%t]o< RZMO`.+!2Ymk`3i7d)u-Ah)MRGJQ9k恆Kn= rrxKz#P:P I2' >2ͩMl1e; LSμokA$xԦ Ч:u8MR UZViAD@2D6naY#$5L2p4U&"fh 8g @#O@"]d,堣d0L`pȄ&)41H_%#z xi  d]@V\c*P*`;u2+B3IMj<@wl& I џ]0X+IuVZjzDe5V`ҘxлZD,1Lw{g ^v)7;gAO~!'86| d$CZ?O L iHo bfx1CtSGʬkN( /O?7& cc Z`蠉oWM_}Ov{C?dc;i;Tp.gm=۫Y023_ sM :^ۼp/ cY"A@' Gz7]^Jk2CH3U>> p9-Gd?: LK&C@nFAے6L .$+0G&T ch P/ @2Fqētf*8]F.g\`\38 {>uZ_Z8`+"n5hms v:J ia7= t`4&WmROY!ԑSd/d>`z@^>t{Usә`INh6T@^Y,ɁH[\V[byDH$(ho@jZH"1HN@1вڜJ w @JIQSxq$#L]\w# t鵁9(޲!XMcAҏ Qx;m - nFi`]@)RH2KVZ t״-p^Ȍ7-<3LfR`n]I` ݸ3wkk?? |~^ @[$ɧw݅ =rkN^'|aYg(7 E[6[y{cwxW>`#~ ål;`kS FI@;d$ڗ2DF}Ay ^E-]@fz Ko7 ! M3)z~##.(3x:yzR}i~_4-I6€!r [6@Qq^Rm=p!aڈؠev=?pSM$a ?ؔSV_uH%qD}+,әoHow?ntlLppsL Orww}8= ; qrin! 3$+فTx̖rr3\NRaoҠh/(iRR@6ʑ,lmG[tnс@ Js 6 l*z;n}|=@Ӈ Њf k #@ڋ+y@z@( 4`s۷X(N^|rCDI! \)wL@ *OeTyM#ЕeJ x7y,KrcZJ#?! 咼 $>9l3g@~2 *HZ @恈| 4470:l};GۀS~\"Qx- RN;pR9o S{I`_.}ZOFyhFsMg][bW}h:դ`ۯ6) -&%η3t1f)h+zjBjЮ:F[쒫lDjff^ 7\q/m >0N\qw@lG6!Ԡ89k7HZI.1VqӀP}[֙n_LӯI3z~q2tYB!OF#doc~9!zQ?N*W^U2S揞,"DEhL1rm?^yyECp!pol2 alIDATlV;VGYu 95H24P]M$683AV{fT5rRRkIS@;JG~ޠ/{eHm(}/]CFХ =4NGt@ _rHwMg kA+( hI: !@~5d2n-{t :uvbژns+$&F2Fv>iŵ-0'r@4otx`g01 E7@ki d1󺖓 d @K(B= .mOu{XNK6wP@)g<|P_,2]`@+)`{lP mt3?fѯZ.00 t{zGw90&r\0 N`s_[vC7'qG`A hn:iv w.ft[ڝnƳ]ACW{3*~ L_HRY'z %\vW]V懇^;bo߻QT#+t{{.)ck|dء`BcF fc{W:o̔a?m8"ȃ"C\ݱmۖ L _xZU_>~yAߩՆG2<~U !`RJiee => y2fDּ  ^e? H,ge`s3l:[ҕd#9"@H2';]zd2:Mo)(I%%POܖ; d)L3`rEc 81rD-Lf,l d<6rM|KܠVT"dPHVPVh]0MA4DZJki 6ޮ %ZW&"P?h RYfP Ci! e3o%V`pЦo<RO3tP^Zd,3JRq %āY=)5Js憁ii'!%e~]g@IS_ e&s@r\)g RT/4F9ڇz W;fKSЌM|Tq3h^a`BIMm[ԍt<< R[`ۇ6fv~ ?-))En"7Ɲi&[n[梹%g@q&6*8,orOfs\E#:@m A:^^R`JZ\[ Da_"ԐRgAxK MFQ/h9=a36g=ArHId$/@!;hGS&<3f%]he`^%hj]K<0gй:1,})}]'Y G ;j/<{V`1Wq{ޭ 6"0LT71P|4 $Y, C u)T яt-PE < I$q eubQr$ XV’$DIz 3.y@^wy[jap+ipyB=NtS˓NE=O|z:G/i6Tf9-7wϻ+|n(EBXsf~*?F K7}ל)Kw!Ցa'yG>)5""s~ܗ4[o[ؕqC΂Td3 ާxL߽/>}CTJ-@Fv&4SI_k(pvbf$͢( 5 <,GOFIdA=rK[>z)$s@ he-THX;jMA(>\fS@2V߁9(m6rS||-Q"o,"-N{Hz4J4i($-p_zrZ/9.@x aͥQɖ]3!- @/د`pI6E+(ILPow'h:'%p}4fw@;j 〷Rvtp3H ;NJKa*e(@KVyl.z$i.A@GM̀bҊ@RZH&GAj a3a9~ֶ`LכJI-*9/ =t b)`I<C )dB %HNTNyă 1ݭ#R3ER<=}=h.je2 ۡMwM>=dk٦!Jpzry4q KjRjvr+8;i\N)0$'hu@s0A(ـ%ȭ4 ) ʴBނ5'ef H mZ[˽2A`I l Dk;<`ozDst=Pc2{s)J&&)йS;ļJja $`W0jv-PԡE@FI3Yrü@]mOUPo} yY#@"mn;uZ@3ԑ[Yl,~ t?)u9Пz Y(eI&O@NrJ;N׀9i+iePR8/l 7MO{ }i]pZWį . 8'; rL,) Sk';$bһ2Q߲}K[O~ #a:$0Ѽ֋bֵXxUeHQ/ŏ4]5~0oa?}dȜ౞'5MM)s~|*<N}3״h likO 0bN%3Y`˘rSZFR asLly[&.A00=cAhJM /fA&JIaN:gP <t3]yHi[Lґ7@~ 4 &6SL@4}x58|@v +0^j#UH {@(~$MUfd/Hi,@Y (O3 u>\! ^s䵴+;d jb@Rddo*|/4.id$ĕf4О;>Ԥz8:.͜1@J~9 "ற I'|'T9/`Gص:8V΁6f6zk% "3TD@)!O@(;<z\`fs'@k > }. AgfImsɖts-㤼9_Ҿ/g>ߩU\zlK=t %HLBAwV(ĥjL>a=u{? &ُ}u\N+֥#G'7oBs}{@Ac5^fZ; (-M c6;N İYٶ ,gp_\33 6j%J$PQguӀS,hL ⤧n5<09(t`6;H2,]n,y'7%$FVQt=9x"V}`ۃ5 Q +uAkbM<'7c#k@Ԫ?0 }nOh>A*6R46* Sf9 :ɠ43_˾Lm3iAfY e. X= h+P\%s@aiK)09#G4Pæ[FimW{g;.pS ~+ynKW%4a oyOP{ 7W{F},a>^L4T)g]r0I 4/6MQ+pC꛻@C*t̾SDV:MgODGA6/F]@-rծ0`wi} Ji #|a-ɿg{T: G_j2iAͺ d MNT{ЮC{(`?hz= Я@^qGjq:|O^ki%H)֚`Y{^֔r`70 sl9[Vm6Y,@io-Ҩ\q]t!5_@o[zX?fJE /%ZҀZ*Ѐ0^WeмR$"@ou ZXkV0^I Zf,?џnuVs3'A'Ni#gh @h? Y+K0?1rܖ@?nt> H@JN1_S,Xf[u*h#u@H qM%_O1O.Oz?Kmqp=gAۦo+ N^ ;e<F1Mlx=J|Z(LMq_J*a9S'AwF;?tK٩Fȯ_>}!c9fNb M#%)ܓ| LG.*AJe dt^J )Iv?mkWPpeKu^^ o @II $'ρe#qrnq= JkND-ҙNW!9l1_R7aQ3 yP. +%2Nicz5M t~Ԯ3~g0ݿF`5- v^|tx<0o|R0d/y\[϶5@~2:=S ׁqzNBI['$rwҤM ,cEg+>& <=2.sF?XFumrE&/Y{2~`~8gX0iMrF zDSY9A~@zL/i`0۽~ݦ LG qE6^*`['$"-W! @s2Gs>v t7Jٌ-5_@r@oY=`g?T1 +R08+ЂZT^X|AI1y|3̓q)j?l* 荥!i9'a$g# yF#DF'e!AښRXM<ف e.iNdf+lJ6iYG*x%k qZבjL4g5p/Z4&@m*HE0I2E >f&^Fbg6K4fSk  A qTBom+AONtzu*J)rrB򁜗 e t{T :ְ[sۄ螵[vA5^x' |[s~m"5ǫ4'E0d' 8q'W}Zdj8gt$Hn-f)8*9 `x t z:~on9>˗۵{'`d,d-@ic  M430!}u8x{z{=NM!:f==A1B9D8@ɦ+Y d"yeud0S kŒ5^ӽ2%_/EnA2[e'hQ@O3a$l7LD$_%.0}L E2 )( ҜO TNLcs&L~7 [Ov9pP=Q@r2 t@Ԟ,!tzcZDE@Kgsp x%Md!w%dpY䂜6dz8hlcֲ-mfq#@I*dAb%XwrC>IkVԕ8#uU4;Ya< "@y67@gOyW~#+,A,.pDMiSؤl/ 6֟m)sx- f/B|lu;&`npsܗZ锅AB@Ky WJ=N7 哬w{g45m3nCp5)S&A kC+ܒcgO2)βYp!:6Qpi{#$tS ],Ce"% ln'?Pc:M7~gv;灇tb(-? jZ FcV7]p8e@v䧸FԾz  ;pptƘ `kؾ6'PC0C4T5ĠY4}vd72B1#ez $$D@nK6Y 9bށi=r 䥙̦@> FJp:vY:[t9[ON(|9e H*%1ɵF,%%e^nr0w ,sV&ǀE+`\sX&@73 [nѝ&k)c֚\zx!44B."S;\RF:U=vɌC&0bVi nG٥1@4& ;~3iLB:c +Y &Q 7݉7Aps0Ѝ:GW'pH+!dr GM̓o| {*{o>+>hc#F5xfzpk!t$HFB|e r7eаQc!0(pR;?XwS!}䂈9t] d"t'g朹.( ^eNZpڙ<0P|i= -e ` a_v|H0b7$HCRz__%pjkMY}#g-e18`l`Λ7`v?ضSF~mt9.%88-N:d⠩4BI/%$;//_*RZXu @5?ݺWDNѪh$_n〒@(N3hj@XFY/<OH$%XYC;h5r3L9"ge;;ˮ1Z^#?ܠU6-g3즻4f"fy 2WAʐId,2PԐ*3Hn+Ki "=OA Ӂ@$:N/۾/ȧWA2`2XRRMRR`ʚ0lNo'Jk}&AI<^fjs&YЃQM4ׄBovw(쇊àjj)kx޶*+f|S~wy-ȕ}LqjtIwB,IfA6"[ow}:1ldϹH8].䓼HF AcU@ӆ>+xl q^s <s5E# h@kiF<$@BvT  }tR ̔#t*8M0L2 tt9}k()xJU $FHr0Ü5&HZ"l CeڎнK[h |MhjkssKxLRB2K`)/ZV2y#3H(w6>D%B@VCmuKc:׆eJzк:R(Nr82j8DA*@rJZw +W v&8ts Fj'pBW}PjHt 4`05p:R`>8Ys)#-65@K8`|k\]y#\ҝ`veH1+3SS]wֱs;l=oy\?\??~{R@&8/L9C^Ќ#1ǯN_,DwasM$AW۲nY;| USz0A1o6EnmBd݈oFV%vڤ) AТjb+ ';_|JR(z,WT4AT"h(٨X2]VG6Sjot2S _A/h+"@ʀL./h$wp@XC?m)) 杜u@yx %W%ڎ 9U@aRT5Dgn'{} v%h0rN΂=H9Lg,rI&4[I  WH7棌JYǼ[>5=Hz)Avs\0R< ЃzVςܓ3rt 4AO)0A !֣1Ђ2';AUw7&y-rC΃n < AAU%JM4P`u1HJ]9Kh tcv,v)ȪiζCu.pLfzӞޠmO[ -d,H~i!A2Z(@> [Mo3} :TWt1|ڀ{du8IMsgMn5WK&OrTט'q}c|y]dK^ $A];WHc3|Ybx~4qcVD(2q֯[O;7^9_Q^PɯJ* d)lTA[ߣ|"K> 15D_ZJ%S|*6O@k] r]a.K@1?kXI _Kr[dl$ ey6.5pl Ny&0tSԕqF+r]O8ZF[wy@' EDI`2Hww qsa$Dl5l! ^c2DTto/k@A^d=YT$n&eA^lvD(.OHETc43@hfK0'YT?R 'd|2@JNU>]>P tրV\yN]yڙ_%R dl jM l;%A&Lm;/$ HN8iӲHFEo :Ht 3J0N6P2RY)so^. c``pC=`Kز1hZ7]n-^Cȯ@s"/x<<zY7o_}70kdqGK{k3dK{+8n4I?qO.\GT>}%^g>#| Ao;|~A CzVSfK"!i ?|m(8MSvAkF aOwrbI@,3UV v0MG8| FPXut6H?lz#0, vw;&^y^@PAwM}X,p~kl=$Va>W+{:9e7V|rdOwԬ̛Հ'ܸrK v:ZDF׀c Eod,>qN&@Uv$n$ z->[|=};н%{>ql[H+Yy0elL;NSe,3eH$D4ҲkxV!@ki [4m2J|0@|(Rܕr9 2K,:[i 14-KIU0&'IkX7pP+4ZKMOAkP ' gwXi=8ho~@NҐ L]ŴYi& @r2S X 0 H :P;r5v]ĐZ50t].O"YC >G~ @s Ŵf޳S߁U/T_- DYu0D,- As_6 hH4H]`,1`ޙ d3PWB*8 H^=w o'+P*9%msNpG[Mb3ƻgoV/\heO?ln3{rPҊ? XxIIN'z?HTGL( oߡo򚺐mc$nX5/&ww&ɇuޯn$/Db]~Y W-Nw <Z5I⤅ BЖ`Ě97?) PK!%'eY:O0 w'mcGkKKC>V=:ڥtMlwܐs,--@4F$0I?TxHAl?hGI e6@Jr &;ns䗜~@=fk]fis|RHIRe<3,,"plMՂGZLe45YjRk8^۱AIs2Xi24=# cVSٴ6eBHG6Id"7D6#0v:x J|`֑KJ?G) Aka~E|gB'$ 5 7m4%zyMծ=7$хaJ?79N koۡo-?(wF(ͭ D;`~RG/Հ4h} l62\vdNYSC`b qp@||Ě?oz4`F2O[zN{d\ Kc} v =jMe@:Q d<Y  cb`) 0A27Isl3Bt_eHiXئ[>]e ޒC3iwb0csHN2A&_+HQfLb2hBz TS-,ڃ$_4~>΃Tcd@#i#hq8hb}imF!\$iHY.' ܔ09 a[I Y2} rEr <I /|f מY7-n؟lV n$2%C@fĵ;kۺUt2/ [>)o7GhtP1 -OO& w g~m߳"_J<qm޼xfDo![l[a_uJ ]ǗGӭ X/ЯzK=3 r2LY*TT]SIuⶸ;coQWT[d5 {OefJ> s jl] 9 f6c&3$@v(M0PXJz}Վ ArK3 rHHI]ҔB@Z20!Vƙf vT H! =,HQ  e*ǀ $0]Gd@ `RDa [H0%|Y,pP侩!@bY2W~ Ot#HDam2T~X Hsցܐe.@¸ - ̣'2BZ6<+dܕX0K*(L3BrDրܔgR ђ@2b3|!%#K%sI&dr DVԪC @OZH8PM^6n׭~]V$!81 we`:8ܙZ>hq}v{ٌloZY}ɡ:M$|A?|',]S;M+#:Fd<צ_?xϯWOŜ %T\^qps#@Ti@ĝm&o:Cp/@=,mdH4pbr =i 4'洙-׀Z&Su^,#@PXjf yUT ;Y)hDI~`1#@FoE94v 䩬Q#t&KL5 etY$$d!9QJq ,4E6)N*۠y51@3iNfT3+AsH 2J>X&̗`Qm@`@ôMz~"$\r䓜 G2@EmhĂIbLZ+\=a7Nͦ4Wx*AW,KmTĭy/5yM&}APտ_(W۲!W]΁WM N/y"AgtCƂXs$TKqP/@[._+?ҍ@s Cۧ@9B0S\]c۬\"|7 x$t HӅQa/[6AR !Y u}}2ܤikK0ͥ9+H.Ɏ7J)U4(4&d򒝊 kh"災ZPs )D[cY %;VlC0O^$%zf!!dԀqbC|xEcs ş1bj@쮘1 .]L︛_2xz{^Y(e) #Ihƚl`V2tO@:yHpn&v|TR 9nbt0)g9L4ow|L?` 5ł&PDa5v20˲i`I{lv;AoЦv' ^EtsMb3V4os%=z;$ U{mPWiZ/\S4S^/{ *|漿lݧ?>3c=S$A]v۱ I  P,ӷzFY4aFT\ENcd.s@Ά_}1W⪛Ԫ9lK )9 KmJw=qcр/YyrGSlɭ r HC`ICS2]&Ef \I&ϟ-him!lLnD;1 c}A1Dw%>LKcNOd3t1+@yyz.W_2X^T² 7 ;>ժ@R=@5m`Ԓ`IU3$றMlV0RHIVtn`꫿4Ts;AJK A[i0>D >y` R p?%gĕ&Ş?n@S_ #Hm]t:@jM44c` FH/;d.Y'Mc(Y&%+\%aT .xrXHU0)MY22GN )9&.=3ݩt /~u˹eWizZwΝ2kY~[ AՃ ~>]}ăІkjf m7w ￸ۓ~5`PJM{7t I<[@H{O6\F3,;:c RL"SMcl!`/`=Y tm7, $ lDh<8@?6iU(ȣ&aʙ- ^R\Rl1":w{>9AjߗALȿ#@ܡ~q%l*_5~,kzK;Dц` p8pR=(0u{_RL|V kv=n7<}rHGbmf?J /<]f 0ANMHuFRH,GZyeB30#=fMVV$/48YNFpz=9M^ʦ}r;JCAym"m-Wқ7Ooυ~##3ȐVY7`˔:E$?n4)M,fu?o||#}io/דn{68Sa, ;I^w-|{[(vܿܒʹVWEv՞қ 7x O G[ 4"U@V΀]`hu %?%} ח'b/`lxwԄSJ֨2r 釔UN7|T"ˊksV-i說qww $8!x ` $`]ڽ{Us?}6g^@ikԺrBA9btΣ;08+9/ Jzɳ5C&+ 7A7V#d,mi'~N\hLmI/AE[!<@ gqɆ6#PV%Z}N}P?WgNzj:έG"TqJX17c5˸ݝA 1ml1` ؄*8;:}W  c2AIK ~G\pprO!Qё &)b<0Tw߀΢Lӭ :S֠CǁΤ , v+b+W;@#-X,EU\ ʲMR6pROuYg*#{ț VXU1ud4es ~͇GA[yTJS `FO#sɧ֋Nrws" +o{y} J{GloQ1gmޯlXߘڳV?(#h 4BFo @la@i yrb[9qZy:i=Y@4 Dю vb=#O6\ ;h%K_/I/@csqGD~@ĉ̢0_b<5A5P<9F9$Yd\T㜏AʶJʸ d]Gd9Vį"J,Z h-~QTA?R>: +UEDvPU Uyfdl#X$1 tU]?@\aN9 jz. ذ2XU߃hmּ1E/npi3JDQFZ~oAYH\m4F1 O٪Nj>s=}tӃ6Hv055?@b1O%`ܐ}es-An% + ի[ Frb2 !G҅`06~ *xy{"mݶ고gn0͆#kL'@ct,:lo[xAp&AgFuw](JyR]5#3}c);S;zg#yt}KiӆC=5rW- UTX2 Ĉ !nڱXPyj[AEYd9 .nʠΪ9z--z~b//,,EuNX r".:R ;|$3I8j\ ]JQz.pH"tY9DE1(QQD \S]:uǗg枫'nx*>^p0_B^<f7?b4葺 A:{uv?V1BAo}Dk Hz>uHla bRoA?>hhvk2Z EKgj졲\WC.Q ,T%w aduJUU%VsڭS@)b}Vw+H$- \=`-1>| ~}?2e>*"C" 8 C9a5<` SVZnuAEV .{БNR]@GgZ'y + jzn^/9`ki>5-pLrqV}^RAR}ug_. %$pti3RBV-ݳe߂BO~xy{d%uN.;]#afxĤ)SmMd5i7zuwgk|~ ~NiGZ'[`)Xml+ 3wDrJ)V#+ (3idH=z@F?KWUG橕`6#)jQUQ%=[i=PJqh×'Pt7UK<zBAry|fv\}rvm F]jY+ek :ZJ>@R )E `*fYrp{"W bh%U.?!'5DQXv,~1Z@"'ρF9Zv)@Lc/⬾i&R@ԥ@\ujPM YڌS{F8xG˂5ÚYVN+ :/(0 `igGGxǷ`sͭ`"y}[BnI!~^Ԙɐ^<^z)@_h Z+pQdQVO!`NZI`Z ӗ4(Al Y3QPT$X;؝LUTڤo'J:Qk5De5E1g<ٗk\=!iKn=Pw :l|H|6 c|cKM;q;[&&>Y0Wb, P;OBeە;F¶3+!x>qu TCUYNٵ"ʘ!˃n|UPȂ?a2#%u; iBј$u7ГtK7"Lz^ׁ(=(Kxc!f}E?U:g6>dU +_+Y b2? 拙 ҏBxw#Ùg& *sDuLz(l.db&8:$M4V:i_Ei4'qqDw1a"~0jM[`;=9J:PUwR7?2z9 M,7W@A߫`P9 $uz 5_m9Y#Aʧ!ڇѠn*\uܡ`4Tut3}N} :^Wֱ\q`1@5ATQA8 VUWłgpO蓑u B.S loe5# |Մ*N3YܹzyXv!@tyKW` `P YExb)st 0 pLNajjUW_97Z]@Q%)f-/풙I-&>o~c ;9mVԮ{X^^^f'bG%DGE"?$_J,۬9SV m-7oe˗KoS$ޞE2ȑ,*ezh dMv`CE( X$NKQQRUOU W%S#/vp xKRAٕUY=f~@ T]zu@MW],GdZ~lтnzK=T՞=/i]]g4z,_6'{,@O68  փgUL*wx'Nt=.H0_5-,D_yQEAt Kx {kuZ._-U[n;Obe5@Rf^VGw+Tj90w@Kv yI*X\f:߁f}:{+; (b\|Ws3M4At'R*R$Ib; i321+I4"nhDYADH ^ % 4wq;޽j5 }0L匂Vu]s4{y7s4ׯ2k.Om;8{o{y3?cvVE+wc8g;ljL0q]gO?ZSG}BG ,h.(Hs@T-t&H)17d4sma b0-rh.:}h$ ʫQ @k1Z|zW @䐣D3 &n@oݖ5} <$BΪ:bA  _%JPEPUTUIzg]^DmJ4)EZPz"XӬV ?e;n}wk}^KCIM՟ arN:FǪ+0'vxt;=V9+301b'Gsk<h$րP@0ib溭n g^\:@j x |Qbk\{4o61,7̂`-W[Msĵ}D!(·S0+#2TAWnH=:ǯ+ inft}M5A/@P U R{tVs=X I@4a3_{>zʩJ|AKC#[PzT,@ޖK(:؆؇"utv.#s=\װǔ-wT/Sn쌊$zz'lo,tgK|lnA 9myvCz״Gi 9&UoʯV_A|#ZK_B$ GУu.R@V]QK]XgE@!r%D* _JD`X**8ƓL T!ׁdNЏ|}jT9~r'dt /@e6ÙП|.NXPG"h.RA~%4ރ!3EDma@ϢCbɾ麐dfHF] Q4bbu5 j"dxL)|@ސ'9C˲-+3R{* Z ~"/r gbOfO)Xk #A(0[ ' د򎝎+vnWg:s|7K7 %zIwV~Ӫ#>^xxmnsm-ȖLWA')hjR]ӵt 뵵|cQdD8#^Lb(2<\ȗ!SU⬘d뮧+^ AW`ʉF Cdy_3SSt9uτ)y8?F WFM%Ǖ:_4/,?{p |̀AYgޟqd|byӸǗͺ7mbU~⩘ϫUR])FZHޑ X=&1:^ άhb).N): C8 z%U$OAoD$tRy1 D lCzFKA[(;`R@:E ⸈mAR{e`? #/xہn߃uRϴnl/?ꮺ;Puu 2 stx&򀭺4!ۜanZ_ff785D^3*o&4kΣH sl8ڋ ˈ "O-]f<O,Xz`}O]냧$>-*\_޺2lѯ@Wu?P*TU3=lbW`N+ؖLhꬸ&w? &MfyuEQ '6j aɜ_ʡ*MH4~vg;O~}h 8':|>6LiG:@Z+kL8 'ӒZeXsV1 1M]Cg )"vBj*Bsq~~h'Dp?vr^õ8:y;r_9|)ySK^^^_?[gmC3[ilǣE"|Sm75ތf)^@u՚ u_57?ʼR&&LRG>ur{x&-g`M;Ҳ\ `[AqXa}=ނnL nMQ%TqK$Ћj ('ެfp }AW_~ J- t" djy@>;+A7 !cAQD ρ@< dU75Wނ} a39g*MoPy1 P>+$[:& k o<@o#Qtos5T}V;@Uyy9 \]ҳHDiQҠ *p%Tf+Vn PXUhG!x*`T2̙<ؒkvp:ٯ&._oe}'tlRf$_\URi7+[!P,ܔBm3*gubv69}f'==AY^O}ƕO}yyywrܿlۗz)?R0pDJ_㿛1cL仡;~T[GCxuQ*{Rf`fv̇Ԕ Ԏ>`R}a;{@Tu. %YE.`=X6LR@F º %(ߪ* M=KAڨvHb.3$O }wz+bh`)@ bz`DeWeYYz睾']MHTmu,bQTsך15"^8Wbăk.Dn^a.p.8:pȏAw_6 Oʔd-M~VTsd4WLW򺸲^ hT S-nW;낺,_P"_C ɛ%b\ 3ވ2b`l.T882{%k]Ҋ5sオwǠ~*|s]ilqG8Hʱ?Gsb7%d &[CRӦmRdU|r T+딵M?vg~: m9TN Wp_A '&1(빕TPgA$˗@}=ϐYNYjS:LӳtOktIרs0;E`4p޷u4O޸y^zi7D*yzn >_9mSn%M++YuV>Y3<+-~V]O>7s{.hC;zAp;gе9]CZB$l``VRSn4'5~{7)UE_-ͫ{sЂ/?{X\hg<|XO}xyyOK<2$KUn6j Jl<#~>{ =)wͳFLOBZ&/mnR o)Q.D^įӾU3z~ (&~CA$8ex  :ά?ڦn^PU5Tq./MizAQ`xO4\U]G{t( h\'_X"cÍC"=qQFխ@Q:/U^DVK ↸͸o u "R @x/#|/s^'1D({Ĉ6#@7Ef5Ib J*+ChL >KV=܁TqDX+AṞ!u#><=܍jYg^Ar=X_:]Tcڥ;i0@o#@~y Eg]2M3Q(l7n'{;V;{||{㣃s>yj WWެy2fddTv? ~ݯeF?׎R]C@2|]-~A+@ސ!/&b`Op_ lYAN7 c{[[< r~6.;k%ɔ%mMsrsdjkꕴ7%BK.7ȽolӢ.9DMKZW=`Tb:#%ALžbGKO hm+{9X[A<pW)Vz,趠 ,* q}__NUiNuQ@D0YWQ@N}Gі F!t-A:l;˲QoH⢸+5sSt[&8%|B1Ff h2M rKN1Y8c|FQYIv1\ޓS@DMQP(78R.]f1|AlVǪ8w OAWTN0WdU7̚ EmEz2Mm #W~.'2rL+|r??'o@9݋l l"RbA0=Hh#˯aykm`~mϭF-ث;.:)eRaj*/:ܿƈۓ1"|0E <+`ŝ7{?d0=jRA>Q``{jRlE^Q38s8;{>5}V~/+3G}kY 7b<D ή[naUih[C֧e{+;{PdQdςë>7܏V>zI|>l2gG>Xj_8xY:kP'OfW_*;$_ITi]QT{A}A*YZ1HCAuS:W z rRhPcU'*E%@1 X 7?ў%Kz3pzpj>4\q`X?@/w}I@$rF<1\vjcMrAPo⴨ "NA.7 LnwG-~5 ! Pc`V%5 +5׺Zy[ވ7F@\31jvTUxsm͗˕}{|?|oG.GbT?L|V2aN%//Oo.2)VfaJ)?;oD]ߪ>@ji.pWqS ]y!}';R~fꆵ%z> .'Xnx~փnZVh`Tj1 ;S6.P=O_ +: muu>zU`MzZ ݽ= Ÿ  h4@j2,",c Hyd'W2~]@E2Z!D}S\ox2F 51NB{_'Lc +j~RAT 0*dfJ *5JAGSUJuSRCAͲ.XAE |' 3]#XE`{j^6=|\ (#/8R/cK< PiOzꝫ(yΗ!2(eJ?,kZoY m R:l-*J^QYk]ނz.Zƪ k+3t~H5 dU/ʹ!ClUprJd r/geQ}{o,aY-vҷN z0mt"ߕ|PG5Q`_z4P SMPGLIX3]VVy\o@=߫ b)YV @7Έl֒O$JD'"d]ޑA j_.βDb3Z+zA#e0Ka x.򃺩 ɬCq^][71[tQ\@"A(9]Эz]e?"ZT HQ]d5A<]Eqwz-K xG;8=."6<6yPtTqn5W'!HB^^Aخ !="TZyptTFy}(Z l9L1¶66+9rڛia/hi+;yY|6rN+닰 c ?vG[9jv.s蘊q2Fz  @USAW ⒈/@S!(XUNuζ0`x) bz1GSz ׿RX91Ló8;ŽHnG;Ȑ ^ǿ[?o7W*MLK! VD!!ageW^Fl*j5׺ z/E 1Ek@UTkЗ-5Dt榞x&N*t%mc@ x % yR:D;A 0W=@=.3t~"HTE y5I? z ".Q pӌ> r#pA3x)O,_Ve. ӵ z%9ޡAlmEh_T=ѪaLgS>-Z3f->cڧvg`{d2=HĘ%yJE7"#$ ;8v*ʰ&@2N C \e(b lElS^{[zkfb׹A_]ܳ;M=CQbBY#td\tV7ȹ*{lU})&N5}U5WӞ.&2P%d5P1/,"<YL3ɑh_w?Ƣ?ǚG>uK!qf|tvIUĜ{g'tM;:17= {vx~ ogxG력ѳ@S"xIDATMS~PY@ lWz/xuL]zz`(?A8zf*HSA]a@f fRdBEPψɌjQDdJR8{=a2 2//5t2PXyJ9 #F>`,RҢ(| . 2@ D7xzzղYm.rJhGE%KdX/ 9'fOT,~,<(g ~*C܁؅1gUFPZ>^9, ˆ,B{lf c,,A!-MpxVpvVv;& ʯ^y]啣!{NЧՑ'ƒknMjz8ϣyϋM/荪tO+L@WTzc{6$Q :y^V,P," GG!=2D#yAou D;Z [2Dq#]@[]/oR:7fEx ov볜+ɚ+=ֳUޖڡm>Ӄz'$O (|K[ @!NDpp tI "5RIç:^sm0O 0Ս3V;89ܧO 8ٻ '{ߞ #oDΈhy;;;?FUvIV#W) HMC>x?0wn;.\Z+=4d i}R_||]3EW KS@s=fW?<+d7[vo3߀8 b iNgXɯ@mz1 )~jCTQHv Avnj߀G'i.@T;TI0ќ֊)@ n {#+*'#"NAoyK#8#hOK6^kQYr jj_:]%@USӔk &`5; ! !iNx$vNJAσ#ȼkTOj$fN( fW}W usm5mOs߳—bzN=^>6+ORyFJ3|G? llm;;beoȔ ,P?w/Xum^/ׇtGnQ6 6)Y@Xyqj:wC!3~>Eouq\}S.5aB|a϶bsǖn wG#Ca= C‚Ab!_ȿtD֋C;3g^"T Ar"tO7cL2nhD)Dw9Z=tb@⣨ \)Vtvx) rF G r|k rh$뱼q]@^rSC̖w@db8Zj4ԣNuULLUSų *T@ g*2s%fN1{Ӣ67/Nk~? "" GAeGc!=fd\;/rԦ{#.Y~'NݫUO-EѢ`8* Gڳ󃣩ȸ͎ arszubBa-aO_^/G_{{z1+/_NWԨ11!p[~>ʽ*yhꄴѵ&Lb ېK 6nX\ ) 7d(D"QPA -)`E]B2OhAEaQبu9ieqN!Dy)<HfA%GEY D^k8Iqj1_?d$Hd6Іnbxukt4uyLsЭnt2t,u'QiT}}p *zQn}p('b~ټA3?eS谸!Ia Ǝ:ԥՊ\/=Oߝ)ag}WƿOs_8n K-P|;Xl]!;d\N<fmZly -)o;0e $[iCe_T5#8 :D ʏr"pZa Kz:0DLGle;IBܖFqA|5T*?E("NT_HeoC⊸ z'z,d]e'P1j 1T6Pk5 V}+ V ˠ]Wb-=ܳ\2 tB̓7#ZAl:gfos ~馻+$%0erFIeSݶ8`jpؓ Ǖ1͠+Jy<;y{b=fzn^Xg`w}s>2wʧs[ll%MjcV4}jO1.yjؗ-*]hqM!gF`ma #| d h/l) GC.aё\]In(>U[}F4"pHRI;Mԥ}C"E 5%=g\lzaU%z#܂VMy߼< M^7SL_<\=pvӫFBPGcAᰵˮ_XUCr{3[RpBc~KϒL'~:2)H/,Nt~͗B>+S `9 ;N-h///WWr͝{/9N^O)6q|i'p']|A<=K]!sf3[!x&1>1I߀1b@7_T-8w8WGE/˥or K[ G֯+۴HsoC󩗣U\RBb&cç_AV-޶,G߫ w y|aK!ioBh\Y x(zd>M | "1H,5I *\O`` #S h\ dfa] n 8hB@8zb r^,Mfm@A @W 1>bMRq /șb !1 ,4ҍWi7!Q+1; `W@ΐJ&A'vV8x^rm1 9A_쪦k rwi=MoH{o,R_?psQ8tٟzzyyyyw͝^^7}gDkQSŹվ_]6d&.SU3%vy! ^{Mp:VVt3@Or$)4AE-`xlB,~A$ hEdWF1NvÀ@ K*ĺ^3j8;r_AǙ2Cjd𜲤 뙵){ύ4/vTWk Bz;tNOazVku`@_B.ys7u6r^~^^^^^/ܗr4ƶ^vZ_._RV ,l/iWqdNCnXG4s7Zfz8cS^z ;i00@շ=SDu:VD/28* FcytEGui)NGjSmZWf*-텭z?.,DL/ RD  w﾿f>㉞vkfu]-5'Z|Z759&:]C}hDO=^^^^^o&vg⊤T'^R^[;bܥ[/O"YŌGlٳI'4G$CطYw|gk+ \m;eOYh,Q8MO|u1 vzRE^ D)x'ui]\GަV3N99q Y*gi|}qc{sMpsV <cN˾mvDU* ٫i~4AR.}vu?Z֖6Z.qɉW*~3lg'Blι.O>D HI{Iwk&rH%\5Ճ7[M4^ol/@7 EqDĀjڨ@|+Ɗ *'o =(ZDƉGҶttΣ;h!:|C|VLљJ*_G:٫VQfW'3ȋ8>`[cOSyIPY򴳨TLWhg6s8gдeSfP} y+|gz`1=n3 !uX!18(Ep>qS( ?ZP ~C3FCpِUr9i^(Hr5 3<IijYDB¨8w[^fܽ]{+y}SMkVYk,(V.gO=VgS_,wY` .e]b@ RK);;gs12qbMwD*:{YZ?%BNid/ ra 6  lc2!;&qdЩ 4Cm600d$$Pl2gP PDon(ַ`5@YiqʦKS+{J:t}PfdT0$%~'zv>@qxɬ$KhHҳS(bMRTb5c-xPx 5>l7 U=k -%4惽B7Ľ s;nV3ZB-`EY+#iy^GiDw_*T0o/@mV筏1uRǦ? [мK}9O= ^^^^^5 ?`מm^-(1M` G@2ʻ <C>|v'+z| 0>sx,N]hJ:gڒÐebXr+XoW|{ !{3tyie݂wߵx#r5 1IV]UP}}uG)=-@Y}r8oA ~;ZxE!<["따ie͓TBĹ-~sg^QrtV>YG, mh?d0c0뚧N`g_l{D\:tg2MrqZBȍ瀙lnkex~)R롯4!v`5Lly^}b*YQ)7ax;~[+]z }ژ2}!+NK39Y$uIq.\>KM z(\N9@jCȷ8O|&_69 r}m 4 ">#G\~֞?;.KLdn7F+p7s q[}7!I`k{ :U)՗jv.fmS;t_OMw 5C4ԣ>j\ĠfŽ.Ž[.0WNu'ɨ{15Xwη9[Yd=Oie lg*+,w͒/d,g ζm8ਰS>t6oiryʀ-8bX$<ĵ6_ӧM////62W", ;ڿLLI&$]ÿ́^ EoVt$g$% PHv5@CM5y67 Q9.Q?|9DT}_m{KtlӇZߎ9S^-Y^*,mw)5////vrWv\Sxj8on+9)2ה+s/MgbEH$*=oLj6珡0뒬H)9xl?qҔ]{(gX٭ƪȜ2B^ybкX|QW{Oyɾ `˲9rn)5cRFu~v)y3F.G괔 )1jy.269{p_タ/ kx>mWl,Ik Z1;Xm:aH-,&#-}%bh˹}.W/G7g+/s>{>**(-Sx`+⎈6W~0aT*iiu _P~gvY `J\ zfMz28~ZGniRW~g1;߿^:v鶥O=^^^^^eK:K*^cbAaUݎ&aْj$8ˇ/VfN+PK헟 ߄ /gRb`~}kX={rnRiə27>Я J5:|w@u9$TU6w YBa?gKvZ|BČXHR0=3E^Ÿj|Y=V=twӫxLXMv>Aokt߼VPve=۩*~{ڦZZk-h`p{{WmN&Z㧾////WW=Z~ݿk%xrP]U]X.]:$S薘)UWH,>XMt@>{yyyy9>>:^yF\B)C O E-kإZ////////////////////////////?&%tEXtdate:create2020-03-16T08:07:01+00:00eU\%tEXtdate:modify2020-03-16T08:06:56+00:00vb47tEXticc:copyrightCopyright 1999 Adobe Systems Incorporated1lm tEXticc:descriptionAdobe RGB (1998)IENDB`yubioath-desktop/images/yk5cnfc@2x.png000066400000000000000000020133671412677075700202740ustar00rootroot00000000000000PNG  IHDRFriCCPicc(c``2ptqre``+) rwRR`?> v^~^*vD_)p%?@lZhdg"I`($>dCW@$ ]>faˀ% { *23J ---SR+KRs< KRSj!ABPi5Zho@p2A!@riQdL0cR?1^: Sbj  OE cHRMz&u0`:pQ<bKGD X pHYs$$P$bzTXtRaw profile type icc8T[0 )~"/$VT 4v#Mߥ5H@ "B@Q$.Df KmxNH VUjdmp r(C9K+`J&ζ׋l{G0hhTz&X/@|>|>|>|>|>|>|>|>|>|>|>G:  ӒT Ӓ2CjɴCp7{$OdκYbSc_ .| Ol|O:x9l2Տ|>|>O=k66)//uؾKs-7 T{o-[|+UMVSPUF/-ys È]sֿoe7c5/My+!d..8[G?>ESٝ25J ?HafL{!bW=mr,_ʨ@`DVt@{i'}rife['X.f!¢r7|f~@|>;|+.S̩e:~3rԿtO=wOܛsgɳqԳ-sʹC݁zgy~{$)cfϝU 0Vp{p`ǜ}’V sٗٶ 65jk>_na^ނ! |/%|>_}0+zPRFFʘcR!iķJ?qEzR&Bo SŚ\xə2H0Ktc]\Oo&6Y^[!b```\z@e_!<ּoLϬ6ߗ\4mGWj87r_ ų)㾚>}>|\U}9oQOR)OoDʖ"M¦e^ͼSĴ'5xs(1yLy0kt;@~ݲ= :oY Ҟ$w 4/{dS`Kt*`}y._Fu=ʻ,Vr+6ps׭4_}e+-w㾺>q <|>|3ފpَBD˾r\AH(e^3_iP& {"gEMr k Ƃc Ar0:+VJCJvvv9/@팗zOf|'|;ӝ 6$gOy{*˫6^`[̻:w_>|j {3lmkF6V_%M33%ah|u$HLzkk?"D}^6@8qD CA'/&={`@y igsnFL5i_4Bsk̷fOw d,!IfП{v[:fʃ޽?kQwu_|>twaWWK6:)+5ŝx𙪗%0 A^Q]  Ql'9t-A3M $0H38l-`g}KzR_ҿ.*xs0+pZ:UE>t dnڟu5u36NKssf-~Qb.z~ }c=>?|>J=roE{^SN9| )p,pԽ:nJ,w;#x!BT:"@~rp #nպxH@CMg@.:Iځ7[~:P5ʹ%8bg њ`6i@۰l(h n[] d~Q%b,yk౑o7{=Qa `Iǵ}ܳ#ob|>=VS ι]x嫮_"D z.zwg^>;viC㇍|onc>J& '!o=sX: %{)^x^v^ z9AO#z ;˾ ^9df6H'i`ځ=r Da)Rf2iFK4#!v$E='.ܕ!C-ɐ\"%,鮳+~Eܼ^k}?v%E5^ɍCW^O~i=[>?|>{,fƛpoЭPt| E/ %[1\wRQ5g,I4lzQ3bfCdQ7ǽoUyT Cx^-095@Qv8G >~{4:Z>yRM å/rZ g` hMU cx)2 _-=&O箒gKۊ^4?CGVLb"0qޘO5['򽳅O/}*9p/fnK~bI'-gHcRl:'lT.T 4m!u@Iܕ`%)-R RW.8a ɜtۊ^]`^f88j5`mm0KWs-=3~ e }A_ӏym@pZrC} 1blLaS:_ _P"J}΍=վb*Ȅ9[\Ź=>߃}>|)^;ؿ,,mg:}nD: g.N(1.q\iڧ6;/r-9 6vb> rCn5-=@ɾ/ԏ,` e vncف(zOAٓ2G`~4fЇz varF.If{re~ n=|P/7k1Vo)xۿp'I,?~Z _ǔZ&IZx rHă^=@v<'f@km]cI*ؒ3޳9 @R%KLza0q2 l ]ڥ`ί /T^yS!`oْ>x} 0If sX)4!u8s,0bBvBj OR"#jnEg~ܹPYs0fYa/N/_[p m{o^EaL7?Y|;|>6߿辱eקH]2iԌ䴤q&d'\n:v.^^EGDGBNMХz 2 %@ vjtS(@wjWvomp:' %-$H.@Y)^}!hVTpK*0L)n me8132LOpvN6-e#mnu9BmBC!0#i1bBLӜcrlX'4aW[e' ^8GKw|)>|SbJAoo3rJwIo'/哮q?=z#ݴVc'"GF5l _E$[$.':6Vcm5\/z_ohh;m/53S^75..19 \LI3!p::- /#rKF@D@ _ #{3,=%NBL.6Mz6źPP c\;fp{M>Bȁɟ'7i _`$u}VP|sbr;vĮ*|> ?|>hڡUϷm8՝E$UNpNI{s.qmG_GJL_#hEmn_g@Do۹ԴN^ 57:- uUiup#ۮׯ}{sę4MρvmM.qC`4{T2NNpjr6C.Up 5.:k8HJ -4;wܻ]]ʏv4VЪ ̟8@l H,EiݯX*GOc;ݿZWn|1++qWt|>N;\5|hg!}xU%oOӤ.$v8^bNxƦʔ#DՌblR26SU-J^Ҍ`Wu#HnS5)m*'[tN_Rp#`6GL'I)$U67؟ZaH7sWL/f~`y#8Iā|)s^vO5dKIOkڀ^,bCr`39/% | d,3ABE0QƜ^}ދ_Yj$Ɓ뇍~]5>?|>t.`kKHJ4(lnѸ>Je&SN[d_LW`wD䎨1AY.JT[> '+eS/,x{` յ:njv纓$ x^ˁ=g׃ @'|<3< 1F^~3YkƃͻnHՅ )ރ샡Gw{tS 0ЋzB/G"896ᅥVv-wnߜŅ,~6{YSҜrN'_HzBoʅjB`Ѱ_!*: 6'qW|>ߏ8a"zBDȜQErF}6ZC(}ঀ;>4R 5:PO5t:z@] W[$rl=o@ ٛ HNFx3Y1ԥBpf8=S@3e`h;^q8̛{6 ;} 2j||>?tuƫwATddlLJ ſ2ižG??2~d)3eBD|y"c"F 2]9 f)giA]оڅ|%|>hܧpsB+ʬIZwYՓӒ%My?RRd] sU+ʁg"E-T{Ҳb`4#0O xY$^I& 2^>(0Y#| ,0=M7'L{6$ V0]7M/p89Pv;zxNԕ+ {l+vMXMJr%Y7<Ojɟ x @ $12];hujmi 8s 1Zz`0ͥ/pÇ2; ;;dL:i ڮ`꛱Ng*[E̙ua%w[>Xl%_avJ+ܵL:xdJ_}>Žmf[[CK,* %aS '05@'ɑޭp#!x)8+h zo1?Bka݁3ڐ d_ ] 7͛ԡ:.{+?e.:ȋr - XcA_'|fϠ5ρdL9'*p8lgi`5 i/i ݥt/h#o,L7yL]'3Ϭ%w2Vy<0`k_t=y(MaJm`0[&x_P_6QLmml"H.0m.pĒ6mlnv9:&Y7C=d-jU.0ʆZ6W1Nڃ"9rhŰݫ~g?w|g}>EJCŞ fҢq,)x|GVN;rܻQ>,u-;*vixr@6Q ?:~mςw>c36ڋ^wvM[ɫV/f*6@^񺺍A08u}eɚ^EfhfR%?9納6!$T>OAl:2 rVRJ8mlOl [Ӗ9m.8>A3H-&)Ԡ5i`m\3`:Jw [{J7Ah](owpxܡꦅ m7MQ0::!,<,~ yܐ-,Q zٗMv*FUΰ^o,qWA|>f˷:/<[1iGkS1e{rdwGV$-Gn`#۹ ѱ1 jGި\2;`6rܛޫBH}H= 0H&l|ߴ?+<\K<ݩȊog=M?*{=|>k7+mTX:fnRLyexvz"k(Oʜ3gafԅr1օ}MfvV[-Fs TT>`|#xy 7N]p"\^sL2cSY̒-{ # 3&/" _Y_@й~ nK Hܠ-x u3uv`>8KeWVo Ηl=copC ;`sLq;N9%78a `0\X `(Àgh`vf0|20kvI:q\<[I'|ā՞䦺Bu)jH ;+߱| tpk:4beZԘ-% "" ߅|>S}>;|kfé@@B'MHh7`FIs 4:FҙKg2ʬ4E 6ca`+g틶3<Hy2@yG*Qf8=n"R W?Cx:!|\~ɮ0zםn=?Qdtꈕr{:=j{|>3~o7>qbqӢz2=IH:=ݾoO]Z"Gֱ`:%Ďɱ6ZO on!-`Ev%h-A yAj560K1BoBku-i1_s-s8 ΃j'u@Sҩ RNH֥ @!9H#0M9I~ =u+3vg'<+Y( fYfց]M'ђQQ.c9眄8 GmwPP#4?S1{t]]m^+ l`1s\p;g >wT'@-74Yo}C+Jo 2`3 UЃP0#g#k*t,$e%KW~h-{N;3(|mſxo֯4́Ww,{t|&^g?k*?>77O&\(ij%Lʕ'fͼ9 n9|*@? #un6Z:NyfO2R&io`>}3Q>2Slb+HO `@sj]q|^)-';&ꩧ8"9 E ={ͻbok6 !0-2&s7@ߵ=tvm̒ DrE)@1^xK2Tfl&= HQ%AVJV}lo`exϼ`2)k*t0C[zg-o`w۝v[Om|umu_D,Z*iK$}Y,Gbস!7G7r, ݌ِ7{n Aq!6Zݾf 5osǹ<eNy֩nA4Ҧ3m/hkjT$&y{LIf-fh&2E@J[B5FKw JVBX``c0'v9Da9"ACPSc}_?sӜK`/ڃ aN4 4EC EyIZdlв-d t^  #`ʘ\8N0f V]U-3!fyL1& pQ@q9&dl0}Md חzz BQB @U.2e,}|#l e]Bq!qMZOQy͗y|ۗ>ʬ|;|Z|>_̠Eoa}V ]}*zCg?uC%l}z儸'^r"yE o{ylq8ľbޱ쟐juHɠyEmsIP| {A >T n^[o+xFίf8 Nn'CtpS)sѹ7OYxA{.ߜÁSUOzOTT; /i 4 ! چ=zZ@3jmV &6+o"P'xl_߽QC.s_7Ɏ>o0Gqrdlg:N?=ݦt !s߃}oQ;,Tұo1Sw|5Y|>/G^T;Z7bLx0A;"%612cXJ`LSb>= ?n-F687-mMgGk27ƝFZk`~`,[07s 88.sUe=1m\`z֫@gi)Р@5YGM't!+=q.)6ś98h}@gr9Ё3qv`fL3lІ H B3c&hqͥs%^/p-줱'"9 f3뀧("@;;l1[LC1O~Y[)$w@-,8iN $g3lFjU(&h4H-@*KEv|2dyK.+ PZvQ%@0M+2LUsq 80>d~<pׅJgWST2=sۏU;_{www:%G7w{0M>?'?|>}U<b{嚖sm ĝ1>c}j'^I }/A@p:!zfLTu|>jVT :pr׸Ui%po98ߩѢ`M d}N4]n+ARu~Yb`x+E+Vc'9/X^[s_;omk7c}Gqwc|>?_Kr_4җ| T^93pz`Fw7m0e^r vW!rs䫑0:2& M\ؼV^fkvAot L;y7kq-Ui՝oxs3(' :Ǯљq ڍLnS{u!1_2 x_{6x'eap]MK@h~-Rה: < tъ[ݶ@z P4\LO4p"jОz U< [0 AI<ギv-˽}JpҝL'Is xA āfi&3YWڻ07 м/AINAI|@ V=&6-ls| ގﲞ}l2 m||#Aab&R]d4, .r FDOO\QjOw;`_mUqw|>L>֬Z 1wvLk'/~`cf)$]-w{i+GQ}3O7+_c;T(d=={(8n9n\ ܗx#e(Nr\B`kx&WͫOh>`>YA>}VॹJ =C^frFy4?L2N9ix mݵ Sf-agz3AwRwmi_{u[- 7\5M0ߙ {NS}B#!lFְE oʧ2q.3 hC}'Ty ,e!?Yff`fhC}Ơ949@ۿ6kw `MV{ <ffdCOs_@֣Vv˸%]v n_lQ/E6]'70g],Q8)$vJxw%VZVuuEMw0-?t|^jݣm-w4Ej64ƴ3&M!{siGӲR&wVt߆cB>9xl)oW2*BBCS@\ɖ,pB:0K1Lab oOy F;`~7W`ƛϜ)W^xolg?S7i8!'L)-9r.'mkh@G:t]k@ZP_^$*RvA:O6n0}@p@P9#"A6eh6j$ډF@]i@}`lqpgA) n{W^ޟO!Ur fYݴ k* w~b6`sLyA0賔4v~eWWK"@E5RD J!"N?g08/:AfBŸ ,77O‹q=|%{mL6yۤ)ݩy]=^=|U}f s2\~.UǗ^uP6=mGZ)ǒ%y7#hek%< !9.t.bhG{L2yY5 Ke1߁az82X˃}_?74Kς>h>&Bx r`{jE- aҤ+h=[K䠙`O"^8[&l Ϝz#[WCeDJ@v 𲽻@dilo[xCg5iNaTmOs=m铀GmA۲Z {K/)׃a@xd0b'l(_HG@.s;>|z]}ʐpk̭{q]wᦇ>ݔ,93 ՒI_&E漛Q0crFcb? QWDugPS=w9F36g3Z`[NVt& ޼J0 $[I6HdH*IRC:7} ^IWLki &)b ,a2'@6]XcZֲ/=Q,}1Ϙ gY ZSӪ&vϏ9%8Q'XXdM$MlxxE@qmHYp9-f -\s+p۹ M-3uv&eRK %Avf@k&OSD L`ҁ:n#)@uC-B =7)G OJE$\ g9U0[fh3mE3]^{4T<2I&dR"A$KRystq^ri{j6`cA6<i} jgq`+kefL4 }Ȱ|#Ͱ$Y2Hړp:afnq Lǜ4Q<ox|>O!WC|G6<"J#núfL}99_)q%ӽz343?@;-!șQݼ-MG?v@j -i2\:[`{_ <"OtN-W4V) 38zpg@sh>r041`8{'M.xjo'4Rrf Tj`**N-:L{jz(I$> -)ie^otAץ)_{.Bgl1-,kw&PԆRu> hm s9iECڻmXjs OKSlm[ڒEsQvX[:RK\?y7c`4s䀹"{@T4t5b&$ͤD(}]߃-:&ݫ} Yr'e^Wk`_`~ i[1NV! T>Tm<; \ <_sYq r=gXFfUzvy:W糽{V|ܯw||>]TG%7_K(fi3*؝k $I' |gDos"7R p;{nC`7v_GHK2ē% F] a. ~ݨt`43`b=8mrK`   6Ik }ޛ^o0][5-^ׁ4FRm0PIH$R&.0i28I;%|d@K+Z$9=fڣ F\Qec##п4MOҥ dL S^л=mY]50-+5yW;lt; xlJy5L1~CtA=KrBns9\[a׃-j#`c')X0LH\`/ vbW+l<L#ϼ_][ g@=g {(A=}>8gs ߝg}] q:U9d8g a$|VV27:_yoђqwÿ|>?Hwum֗o=@VR&e$W[v)A $edĒyu!bpq"櫘i|u~;ۆXU5[]FO˂3ߙ,綹`n DޕfhׇGu.Y}hyn[*rVo kݴV[:F?( &T3_dyn?w1gC?0@BB!9"}\=hqsq1sU+cxV}=c;>|^kΣ mr  ȑ*VʫW+yrN3'g ]]!2+zRq=v&Ou9u:XV.0i根_:Hox,`8暹`n;u'Mncd]W+商@@xH#yEZFh jh% 3XҞi/ Ҝp4p< ҼK^Uoݤ:zR내3 s`.޶{xϼ_@Ig Nd9c3੗eI3}FP : 8[ЪZAḃJwCh " Y$?26ƃco 'e r\`) Ӊ@g4Ec5wv @2V[̭mM 8K/2*Z`7mЂb RSv֮,żaN4~5\U~cH^)jb&o8ВV427@NpRmJk}(B5QibJF`D (M!J_-2̐OԔ>a9+d^4!u`BGd|^/j3;xbVƜ=^+o4a;V|KϽ?ҟ |͘w|>|>HUUZ_h[H{'Ծ[;xrԝ;&?'O3*eSQBDH|b~;9)cFf$ؗv&@JRcߵ$Jd']l4@߱Ct {fɷg,W")9mf[Tv\xm'O-J.pF'taؚ^ *hI禓i6*9LqL9R'y"S/*HmVꁩ&2PjRl-dcwA2%Ar& Ns?MvPXX]{%\Ͱ%A0Zj'$f)*L!oPܶnG-v~-`%i{h4[Q;L3x`3L @Cd*o9])Ղl䑼6qۻMYw`v188 W{~'3A^%r^.EC^axx;=`"M lf {@:'丄 'n^2 0)L@)ܗ^ 0L ,S׹H>`I{7g7"ޢ^q>?|>oԛņpՄ˽ p'Nڂc%%w'Bb7^IJL8$LZzv'IddLrApmXH x`~sulް$V:3w; gج߲PMH9p@KF7KesqxŽ@&w47L(JA 6'p ,@)IM0'sSҤ{=vA!ÀEU}fn+ M_@j[}ݠsHc %Z I0xCE9)g@5!VeH5.oZ$M$>]`Nvs u瀹|ŀGpvR'f@>*>㉔Ļ&"qZJ~?9<̂gcKC]`k"I,RVfd|(WAsgE焳9恹jUFw LW!Akhkv>M9#7@i:xCf(\]@sP 'ڸyT4RB w2O/+^O<V `LsXYvcg:oX&sK HK,H)I2d; W+ \">v`N h]+Aoki+ 9:Vh0J}*f 9)N]k5򪂹h I=) rЌ `gM+mQ[(H--uAcFdH kel'͉t!JvA"`l3A{gM`x7`+Y _i?0Iy db&9M`gJ'y] 0; zCܕrA5g|(ˠ5Z .t5c RZZKqpԱNC^dz/{J6lCb\ܶy=Gw!@1eO)ce/-9W }>'u٩s۰Ŧ&C/ti~~LƠif$%F'Nx$Jj2dGJgozG@dDD`:h0 J1eM C9+ڡ6 U)S􊞴/$[AJn) r\vq ))n:i,SLsЫ^m ^1{#R4 2ДRh+/ (G.*nkt W ܮݮ stՁ`t; X X`*s9&0As] i| Ԓz6zu\3(v!S`#mԻ`K3 x˼A2% ) d5ckB ݥMT,5QЂP]?ڕZS+H& $ 1 \pNфiٷsӜ0qf V~mD&¸&'PZ*Q G/~ɒăS *_8N'# n`;Sw d LpzA`M70̛f<$I[l=d[D@IP<ю@yk/ ~TjqA;ybV 3g?8{YG3%&Ɉy1mso4nzT ;0>-zW}>p敕]^B HcW߹s>4yhyGB:I }L&gݠ=jpZ V.֟;Lbxyc WL f6TRh~0iɄ,gr[di[bn-0G~d>p_82ݥA_ Wt1 5㝾@_L/<: YH*ZVi k$Mpoy׽Q=<_Du]v7NJ}13ln@Op4i8N ZVz`ZަPX=Aϲl-cY,"m_YÎ 3yh{TBL1e쩜"x8lzRZŸo]lX'LWy|>ggϐo'C .r ˳6碰ןbAWR"[$Ϟ>3w^EN]|J5`|N5=l`A&Y:t2d87>oM@k^ ^ hkA.؉so&H~N)4Ak]kL|%\pv%2E>Vπmoؿ@ޓ2 lA[)nEEjFÁB1sV;mH3 "k9&o!]~r(Ќi_{uef_Wᄑkg#;@IzE5qƁҗ@2 $xY^@.HQY E`A>f]9j/"/_HĂ3p>gy Xo,eЂ1oր-oR d Tͧ`+ ]",b`M1%t1`![Ɠ@<pLǔK!f{]y_f0@h[h{/s@l'o}t zۣ_Q@'9^`p6@~M4  ~tAF-yݴVUl 0/K- &L0߀tnlS@gahS֫g7.euiťQF4}`c=t|Z?8߹7Lԁ/{;0sZŴ}'G'%%9gL͈8 ҍ/q=Q:rH+~b?֏@I| >r`-A˻)3f:J= 'AJJ)ɚH0 ƘDБ:IG#@> (oqd5 ť))8?u2`7; p8u˩A,HI0g0{7glSfiNOм 7=s^ *lPxYQ^1\Rä#N0xܳQa2PS*6o G!`i 9{QpP*@#L] Ipvn8g&Қ@_zȯE5hFj}-!`#l N}{{~^1u Kw89ysg ! Aླ=p$ Y6Ӗ`2 Bsb+vw4Fj.pjNK0[& H:IIМHgo@gI58לC}pJ9Hui$9\q.)5ŀ 2A/i^l1Lu>4ekz@1)!Ť 8kN_mDm$A DuzȮL_M@~#+h>9f6\2GA2DEm}-ep*HY**=+hĂu4'5H]i-5\ 4ܠjono5EMl-*z@6v ?'޹lm&I#&{#߂9bv esSTyd(e l8\#󎻗@պϼާMs@?_TѯKt3tj{K%S``0&~hi[R+q_p䃅s'҉~w죤O>[mqB>?Ϡ|>~KN]No ﰢ] 7t-tig\Hz8;fSƥ><(7OȺy 7𨈅 cI2IXs ޫ l [VsÜ44 OIy$ND]:v-vAemlٶVKE&|A7}9xGkޟ Q DVb8ߙUlj`sK6bXcfeւbY7=RKɋ \VAHPnk T5Aos2s nx0Ӳs Gysl'c3^_AztSʔ1*IпLK+z@׀"Kg iXb_'| 7ē 8לuiMn6oMZ[ F8@I6&6]|LS3oA4`̔>%my#Vx =5M[.4G|5B+{Zk HF5hS΋@KuA:J #%'xwYE3`izs 3ޙNNlmfs% y$]AZ -Xus^7`J:Od=lVmzHBdrSQ\~c{F R6;7ɽ՟SOW'߿*w|r:^|VX[{MFC>޴;}S9 KY2y>R7wUH?Y "D->BUgpnxӼ @}}NT6\ œ@Vb' lA;H.Y ZW{of] 6H%9~:AS5]FZFYc&`֠v:F iίڅvL@j,-cpL?'N;Fζkldl yR-e7٢@y+: ֞%A$9j ُ=n]itFC)ZR}rEeJ@م%Cg<M, lvgb%tR}% 3/k  }_y 4tU}+2 3Af\\Q1Ы^('@2]ա_~X v y #āD9`K>iy6f0S s v=xfA`{uاPƼ*k@pz Dr՜Z lQ {e߳DsJN HI 9@E$9gIA"Y JQb7/~oXc\yQ|v)Lg favS9t7qd2`ͲfKLp`C®O=KmS| c3RKouFw듺??=*7#h~eCLn4NJۯ%yۣ"eZO=5Nx[*> RpI@Tפ0~ Y/eG~Z2ЊִÔ4yN03T`.f-.+/.?OF] AJ(nֆ'AM'R@~1lܔ-' 3Ӛ.^sl=[yk;vV~?w] ~Jӿ!u9%w@ JN)zzBUBfYdfokFY L[3$H>2qZւjژG9#Ϋ2iA^Rlm]u + l ߛGnljHK*I>mS5.5@zIO AA+JU߄Q:h*MX?!=[~(p}]'4L \-%<Ӆsſ쫀Ӿ:\'uvml Eg2yA2Kj Rռ 5ā)myleV닺4׸[Hޓ!cyfc30ؖmuݶd+eRt3Yf@#}@ILy9 _$<+<$/e ^fL9H.Q HQGUytw-y1y2Ptk.+f;ԊM{DDDDDD}tN7b|LTGc&<h̀+%Jx{K ɏV<%yhRS9!&>JjgTm9kR ?y-0sd<5wLf9 @>2|OWl^wuCALu!_z}ؾvWkE5 Aޤ= oK4&;M I0L L/cz_Wy5`1J t.uf]!!\2eO}zLz]+t1;h^i)=\2 L.WHns]jy ;̬=u`ۀ$\6@QETR\ 4A_wp. 슀hI,Vv%}qWg*I| z(7B3l_; 4dNT2ͫ{ '(ZGkUlQpg_/2Ǭ''O:3G5`..kr0$I0GL]~ǂ\r] == =Tp- 8{9 ~ve+`A C 4& ꯨQ@ |Sȋԥ@3Hy 8A= 5-9)h`6vHG)j^6Ev}-p5]W+ƼMJ9}?dؖ^]}ʜu5s1'T_]d{V]kJ1bx7G2nO '<:ˣK#Icn] ݄tS%/iץ=5戹 :GrRr,Aޗ>hMy=|_~'./A K/Tw H #Rʅ+sc] m.IjILo _uc]gK*F5|} KRIʁ43Muy U( /CԙQh70z_ox`4|5mK~>]#3Ҏ+cdOkX͢_@Z4iEsi &5aPEq >pǼg棌6lݽZnY:搜7}FB#+ @:Ҁd2Sl R]*п5Ael24 -`r l ̶Md`]0X:1 +}?$M^ ~?f@Ԯt~<{T6%L ``>u7juM* rN.Y0@; o6oAĈiNi>OO|2K漹 % RŔ@Q $Iг5ZV_?!(9$Wmnd#GiHw?z5)lbj,?ܯѿnL#""""""ѫE{+/D]i:['=z [&U㪉;ɚYJ<=.ji1_H&pTnWvv7uy.1Z3Ic 2@G Y,L@ib5{ p11 AJEB |y$<@iPi'MAZA[Ϻ堓|} f9mvFk>@wE`Sf;EL/Yf`z7M7뚠WAV ZMVv9uSM'߀7CiqW}YRJJl^0ylsJ৻~v:wLVξ9ڮ~H %%A~rTY`fB0M >i i2,قXԛ ):nN~/atmyt9SKOv)涳Q9^ f3# 'hCt&a~3]~> tpy(̵k"9on/_7 ( Kj7L+w Z3kg|&c xЕ._P| %Q Lvd)CYJ׹U(e(hn}A4$#ضƘPj#њnp`r&PF}C@~rL?3 223r}w1>C, {m[܏(OSS |)@{Nh3Ћ $dST35n?A[&T"#f= rS.]L/94$|sԤ4ws"Wf6|osl12@ƂLc[ټdj$1ݴv{7.@(aDKGrWI?zmi)-{Јz4'AgQ BMzA̞1!434; 99-)4Anزq7}Q2}?o_j"􈈈ZNk67'ݽӗ aZzI/&JhGLO>y"Bx[)ğ:F 4`SېpppM7;i2Lt r]Mg`{ڷlO`6tS!x͵joVfۄF.gr}04L4 eGX)"QoC/}-Gsk>fqZQ@!lEy7c𽵵>䳃*ELy3fwy72{~.>`,`as7f k^;Af~o]!f,yRtui1>$թ┦8ddtC2iNU֣hri6w rS`ט{/G@Z)E Xg6Z!)̒ F3!l " *HSЖ6vɟl ( v(vrE_ Ec_{I[B#h^Z{\JN _fXiB} 94ۺ2z͙4W§v*FwGDDDDDDӰGbJ3-4siYgi MOlÁ_ezV3ktgcKƏWb v}h=&<1|?uh?MnC.qt ,P}GP~g΁BZmsZCkUm~~~}OInZ0-k@ȇRb jBਥ`r)8ă,2e1D*U̧ Z" E6~ !5 QvG]sJo#tU%KTcCh{`f`#EE|:98DQIia:3NG% %2 /AlLZ·-zàWƕstE\qM;懺7|}&,i_VK]6pS\-~Z.]s5p0_tN@>|,,|ayd`ڍfe[wDO!;)s>h!q GtWqՀA$RU[ߡ' X^A 5H2 /n>6+BRsC3tB#ydY+_&?nDǽ/@Ь2䆉 hu-A2hEm`:7L_0M~K0L?ۏcAl7U.q 4φ G,(nq0}.{!5EՆPP Nٮg vɎ'̼9֗&ݱy(~ݤrv:Fw!oaFw vLԄ?*q\x' _+`Ϸ@ԾІ*UTw Q'ѷ*.g9ڔ\yYsx Fi jƂZ^U=D -(MQн_Q7yнc' 2&lah aLYpO]sw \u C_{ I ?R{} 1RHAozȍݠ3u+y+಺. jY-_>ͳAOm=q6gE!v uI'$oLГ},@^tt^r5\a2Owm  &fc9-9 Ǡ=b/5yl[NŴۃ7Sв[KCZp> :c@jP]j*Ť "03t~CAFЋ`J^|O6cOOе~ M "&H#6KS0,3 gsp {R$`ڞr?xΗ`l*bS ̤_E෸)>̐7Uma`'A~CtZ^jE\Kԏ;5n8!s9 >cp>?" lRun"/ d/ <玮 +M%@Wb2 YMЁZC?N|f׾|+pςWPɨtQ9G:ғِ9nR>Z'}6u+JU-V-}hYn Οof7#suk9d_oXI2n_OIhFq}<(ף%ݤ/~{^poBl͸t Y?s-ZZ~_zCׁ"Q>T7iAPǠ?LS_ ~ƛv2HI'ARK^*%HGJ[2;y mf3`ЂS_.nō{|i\K\В~ku&NJև:$Hz>-Hq)"שJklicJk#Kj_|m0oIoB#&Ƃ<jV~^? L'3s9T@>&C` N'k:iBcA96bn z224 s4'O}E++`;3y8(S|` !Iv",r : !>~#oWv-s<_N@wiu `3J>5>j4@- 4AAz2Z 8V΁tA}4Nt qo5m:ۏ>4 S8.9T'7苬` ,6+h)`J1=Q2Ljf9'_-57w*?a%n&ac554P䈜m},>}ftt҂3]02s:vT݈i\Rb_ Ϗ<"֢AIDATɚs,=^ҫE9Ǯt;M#q>en|c>l=XBƅ$,}P穄N1c$HNdO z@'v2M7*`'Fִq>+;~r!,O}!|Vdl}`6`K*r<3MDb7Zfic~`؊+ ?U2K z`Ʀ=pG.$oIV|'?I4a /_S3E$&(-k^'~;ގV5 !7hȎ-/i^p1_Gl3.We ՏRT2I]z\SAhx8 nқn2MJ7hE-G%S}@I_:PԽPI*%W d*-w+ ZTK̖2 ~Mnq6v`3{rϺlw~nAg<~Áz?AGu7h)Y@ǟŻ4ydgH\';iGrO΁KZ3\-_4E.3%~.fɧ2 K_\d9T5Ѓv5v7A^ ZQi֦D9RB^zQ/)RZDKnk` {0c3h$u9.'5W%B, ( ߏ@} o֝!b*Ŏ)kS =ڕnF?;ՙW^=;rr0$zf]2w<R{DDDDDDctq{CêM7ׇ2^T@?u[b'#_711$EMgB!uԝR_*1b,L 0_r7/qA^a/[ 'M+ⲙg~&Oskv ]"n{쵋t2M7`%X6_p_}~Ђ`>f W$WVs5`RLfp>жY H@X!v\&ˁoΚ=uVݢst \L]T9/&Ke34_꧂;s`4\0YMN=HGcRy LHnu 9 ṋcI$yPFKVю s[T DK,C[tчtWwGA:F |S6 A-} IkRl.*=o%$yhAW S^f0/Ec!PG\#-ꁝk۹]< &gk6Lj>M<.Ij~? j=^~{^O%p[  l+/7]tPgZ?vqAv4{n05;1ğ =.i_An fe6hM63K=H`nhK)ZO}t)NdT@0/yǵlƂD] L P.Ս RI{<hwsC뀿6 u$ZjAh] |)Y$- ~r+  vS[ئYkgu9ZR僾bI;m#*2A5E7A/m0UfJ_&mnOx0;Bⲗ=I}w@z9jH>uF}$~RP6:CW 3F~D.oĸx} TkjK|. B7]ܓv $-мOAA<ǃASq +dYgfu`Κ~EVOog|fXoMW= d3Լi>IrGi:A7x50?mWi 4{6l 0O.ysB`cBimZ6Ʀ ;8+ MWim;,*ʾ!v?C?(yUtNÓCr䷒+B3!)GRܐ-yKې&9R&,KOI$MjA > &/oki:cr dL/k%:):@~1@e-  ΂[zq='@*QZ G*Q@Fғ &=dhO} E2_Vk_'ZES@pnQj,CuU?|oB㇟>(j^JIucJ_!եOz)?GDDDDDDOcvRAwy5ÑFVˤIIOG5*/Iu(./(d PrTqW)s䖹`Vm*F;|Т~igI+ZltjR|&ˇi5i--:XR^=eچ z$VKk`R sS| _ Ls?A +p\y*IӟVrՠ_CW~; [= 5?Էι`۳<ІVa\_AԚɨ~N _23 e]`MI?w(iM ^&0 x>ba~mK5 i_5i3lin0 ZE4Ѭ t[ܲ@F·2rpW3F~fql<) a. )9$&~`:H/0ť> YGK>Y/0n y&;>+0|?݋{q#R}7 LST?7~i5`rSЊZQ+#g Ԕz@y&#y˼.z{ u5I)\0C_h.MY|0)# d=?X.JSR @EI[ wHŇ򇺂-jBu|% Ft 东oNݏN.TѶZ ? 5? 6F(9l[˦Uus\ZVGA`;P7@RZtA&CC߂l4eDWY8BAQ(BCCh2A2|?H S_J`?$tV "@e= ZFhi0$I[vvyXSd(A^5>.Zb炍ym:W]]@QAˀ CPH~'yBron ll\Jr*z>XV;e2%O!|7|1| te\? RMi.ARp;X3g|}ZZHxzx<@RIiwܥͥ参O@jkm(WV ߚf?HO|àQ;k&ۛրc>1 D\^Y`RCh54|FӁȿC0<>2, _o`NBlI~)$K8: 1pε73]7nU/c>_śJ,otĿ-V;n,aH16glO&ϗ=Z($Yⓗ' dn\T 惘U1d224/`۵% /) oFJjp8H g kY u 2n׵y=P4V 0k i(Jk% St`2&В S@3Tj?ZdBe !t+5&+ʃ&  zYUOof 0Zf3|1^46r`_7-=L*;Ӥ**PWyBCC_q4 {Ԟ;gw@k}- >N\[33_2λ HXo:-дL`ئ`j؍Y |^~vzL:̇P2dk\Gg}FM3 SϞ`K| >A6JUdAi]=n