pax_global_header00006660000000000000000000000064136543446260014527gustar00rootroot0000000000000052 comment=186b1e4e8672b5b57b136eee7ac472e712a4553b helpdev-v0.7.1/000077500000000000000000000000001365434462600133515ustar00rootroot00000000000000helpdev-v0.7.1/.gitignore000066400000000000000000000033661365434462600153510ustar00rootroot00000000000000# Byte-compiled / optimized / DLL files __pycache__/ *.py[cod] *$py.class # C extensions *.so # Distribution / packaging .Python build/ develop-eggs/ dist/ downloads/ eggs/ .eggs/ lib/ lib64/ parts/ sdist/ var/ wheels/ pip-wheel-metadata/ share/python-wheels/ *.egg-info/ .installed.cfg *.egg *.doctree *.pickle MANIFEST # PyInstaller # Usually these files are written by a python script from a template # before PyInstaller builds the exe, so as to inject date/other infos into it. *.manifest *.spec # Installer logs pip-log.txt pip-delete-this-directory.txt # Unit test / coverage reports htmlcov/ .tox/ .nox/ .coverage .coverage.* .cache nosetests.xml coverage.xml *.cover .hypothesis/ .pytest_cache/ # Translations *.mo *.pot # Django stuff: *.log local_settings.py db.sqlite3 # Flask stuff: instance/ .webassets-cache # Scrapy stuff: .scrapy # Sphinx documentation docs/_build/ # PyBuilder target/ # Jupyter Notebook .ipynb_checkpoints # IPython profile_default/ ipython_config.py # pyenv .python-version # pipenv # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. # However, in case of collaboration, if having platform-specific dependencies or dependencies # having no cross-platform support, pipenv may install dependencies that don’t work, or not # install all needed dependencies. #Pipfile.lock # celery beat schedule file celerybeat-schedule # SageMath parsed files *.sage.py # Environments .env .venv env/ venv/ ENV/ env.bak/ venv.bak/ # Project files .project .pydevproject .pydevproject* .pydevproject.* .pydevproject.bak* .settings .vscode .spyproject* # Rope project settings .ropeproject # mkdocs documentation /site # mypy .mypy_cache/ .dmypy.json dmypy.json # Pyre type checker .pyre/ helpdev-v0.7.1/.gitlab-ci.yml000066400000000000000000000054731365434462600160160ustar00rootroot00000000000000# This file is a template, and might need editing before it works on your project. # Official language image. Look for the different tagged releases at: # https://hub.docker.com/r/library/python/tags/ stages: - test - build - deploy # Change pip's cache directory to be inside the project directory since we can # only cache local items. variables: PIP_CACHE_DIR: "$CI_PROJECT_DIR/.cache/pip" # Pip's cache doesn't store the python packages # https://pip.pypa.io/en/stable/reference/pip_install/#caching # # If you want to also cache the installed packages, you have to install # them in a virtualenv and cache it as well. cache: paths: - .cache/pip - venv/ before_script: # OUTSIDE VIRTUAL ENV ----------------------------------------------------- - python -V - python -m ensurepip - python -m pip install -U pip - python -m pip install -U setuptools - python -m pip install -U wheel - python -m pip install -U virtualenv - python -m pip install -U tox # Python 2.7 end of support 2020-01 # Python 3.4 end of support 2019-03 # Python 3.5 end of support 2020-09 # End of support 2021-12 py36-build: stage: build image: python:3.6 script: - export TOXENV=py36-build - tox -s true # End of support 2023-06 py37-build: stage: build image: python:3.7 script: - export TOXENV=py37-build - tox -s true # End of support 2024-10 py38-build: stage: build image: python:3.8 script: - export TOXENV=py38-build - tox -s true py38-test: stage: test image: python:3.8 script: - export TOXENV=py38-test - tox -s true py38-lint: stage: test image: python:3.8 allow_failure: false script: - export TOXENV=py38-lint - tox -r -s true py38-safety: stage: test image: python:3.8 script: - export TOXENV=py38-safety - tox -s true py38-metric: stage: test image: python:3.8 script: - export TOXENV=py38-metric - tox -s true include: - template: Code-Quality.gitlab-ci.yml # py36-test-pyqt: # stage: test # image: python:3.6 # script: # - export TOXENV=py36-test-pyqt # - tox -s true # py36-test-pyside: # stage: test # image: python:3.6 # script: # - export TOXENV=py36-test-pyside # - tox -s true py36-release-pypi: stage: deploy image: python:3.6 script: - pip install twine - python setup.py sdist bdist_wheel - echo $CI_COMMIT_TAG - twine check dist/* # try upload in test platform before the oficial - twine upload --repository-url https://test.pypi.org/legacy/ dist/* - pip install --no-deps --index-url https://test.pypi.org/simple/ helpdev - pip uninstall helpdev -y # upload to oficial - twine upload --repository-url https://upload.pypi.org/legacy/ dist/* - pip install helpdev - helpdev --version - pip uninstall helpdev -y only: - tags helpdev-v0.7.1/CHANGES.rst000066400000000000000000000047351365434462600151640ustar00rootroot00000000000000Changes ======= v0.7 ---- * Add ``customize`` function, part of #1 * Change _filter to filter_packages and make it public * Improve filter_package explanation * Improve docs * Add check_qt() function * Add check_numbers() function * Enhance help from command line parser * Enhance command line order * Correct mispelling errors * Remove importlib_metadata for Pytho 3.8+, incoporated into std lib, MR#2 * Add MANIFEST.in, part of #9 * Improve internal code and linting * Remove support for Python 2.7 and 3.4, closes #8 v0.6.10 -------- * Fix gitlab-ci, again * Whole pipeline working on gitlab, even upload to pypi v0.6.9 ------ * Fix gitlab-ci v0.6.8 ------ * Change stage names * Split test in more envs * Improve tutorial v0.6.7 ------ * Lint code and docs * Add more docs * Add pylint configuration * Improve tests and linters * Add docs generate with sphinx * Add tutorial for personalization - Spyder example * Add build, test and release on gitlab-ci * Add release requirements * Fix tox commands to build, test and release v0.6.6 ------ * Fix Python 2 compatibility of FileNotFoundError * Lint code * Add tox and gitlab CI - working, passing v0.6.5 ------ * Make it compatible with Python 2.7, no errors are issued * Remove shell=True to improve security * Improve command calls * Test url to check starts with http * Add tests using tox for py27, py34, py36, py37 * Add requirement files for develop, doc, stable, test and update envs * Fix packages-conda adding --no-pip option (seems not working, conda issue) v0.6.4 ------ * Remove print from code v0.6.3 ------ * Fix problems when none binding is installed for abstractions, fixes #5 v0.6.2 ------ * Add function to print output v0.6.1 ------ * Fix readme links v0.6 ---- * Add filter to target packages * Fix conda list not to not list packages installed with pip v0.5 ---- * Enhance internal docs * Add ``--distributions`` to list Python and Conda distributions * Remove ``--network`` from minimalist output * Enhance README including examples from files v0.4.2 ------ * Enhance readme and update changes v0.4.1 ------ * Fix network command v0.4 ---- * Add commands for bindings and abstractions * Add binding variable and import name v0.3 ---- * Fix readme format v0.2 ---- * Fix ``conda`` command not found error * Fix memory info and add swap info * Add thread information * Add more options and change some options names * Improve docs * Classifiers and year update v0.1 ---- * First working version helpdev-v0.7.1/LICENSE.rst000066400000000000000000000101141365434462600151620ustar00rootroot00000000000000 License ======= Code - The MIT License ---------------------- Copyright (c) 2019- Daniel Cosmo Pizetta Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Images - Creative Commons Attribution International 4.0 ------------------------------------------------------- Copyright (c) 2015-2018 Daniel Cosmo Pizetta Creative Commons Corporation (“Creative Commons”) is not a law firm and does not provide legal services or legal advice. Distribution of Creative Commons public licenses does not create a lawyer-client or other relationship. Creative Commons makes its licenses and related information available on an “as-is” basis. Creative Commons gives no warranties regarding its licenses, any material licensed under their terms and conditions, or any related information. Creative Commons disclaims all liability for damages resulting from their use to the fullest extent possible. Using Creative Commons Public Licenses ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Creative Commons public licenses provide a standard set of terms and conditions that creators and other rights holders may use to share original works of authorship and other material subject to copyright and certain other rights specified in the public license below. The following considerations are for informational purposes only, are not exhaustive, and do not form part of our licenses. * **Considerations for licensors:** Our public licenses are intended for use by those authorized to give the public permission to use material in ways otherwise restricted by copyright and certain other rights. Our licenses are irrevocable. Licensors should read and understand the terms and conditions of the license they choose before applying it. Licensors should also secure all rights necessary before applying our licenses so that the public can reuse the material as expected. Licensors should clearly mark any material not subject to the license. This includes other CC-licensed material, or material used under an exception or limitation to copyright. `More considerations for licensors `_. * **Considerations for the public:** By using one of our public licenses, a licensor grants the public permission to use the licensed material under specified terms and conditions. If the licensor’s permission is not necessary for any reason–for example, because of any applicable exception or limitation to copyright–then that use is not regulated by the license. Our licenses grant only permissions under copyright and certain other rights that a licensor has authority to grant. Use of the licensed material may still be restricted for other reasons, including because others have copyright or other rights in the material. A licensor may make special requests, such as asking that all changes be marked or described. Although not required by our licenses, you are encouraged to respect those requests where reasonable. `More considerations for the public `_. helpdev-v0.7.1/MANIFEST.in000066400000000000000000000002671365434462600151140ustar00rootroot00000000000000# # MANIFEST.in # include MANIFEST.in include setup.py include CHANGES.rst include LICENSE.rst include README.rst include helpdev/* include tests/* include docs/* include examples/* helpdev-v0.7.1/README.rst000066400000000000000000000152621365434462600150460ustar00rootroot00000000000000HelpDev ======= Helping users and developers to get information about the environment to report bugs or even test your system without spending a day on it. It can get information about hardware, OS, paths, Python distribution and packages, including Qt-things. Operates in Linux, Windows and Mac. Working on Python 2.7+ and Python 3.4+. If you want to get information at runtime of your application, you need to call using the same environment (and process) in which your application is running. This module can be imported and integrated into your application, providing a report about the current environment. Some information can be depedent or independent of your Python environment, and some others can be dependent your running application. So, there are some acronymn used to refer to them: - PEI: Python environment independent; - PED: Python environment DEPENDENT; - PEAD: Python environment and application DEPENDENT. **Caution:** - This script is not supposed to get personal information using the option ``--all``, but you must check the information before using the output. - Using the option ``--all-for-sure`` it is added information about paths and variables that can show personal information. So, be sure when using this option when publishing in the web. - I'm not responsible for bad use or problems with the information given by this script, but if pointed in the Issues, I can help fixing it. Installing, updating and uninstalling ##################################### To install and/or update, do :: $ pip install -U helpdev To remove :: $ pip uninstall helpdev Running ####### You just need to run in the terminal the line(s) below. To get a minimalist output :: $ helpdev To filter a set of packages to get info, which lists all that starts with sphinx, qtpy and pyqt5 :: $ helpdev --packages="sphinx.*,qtpy,PYQT5" To get a complete output without personal information :: $ helpdev --all To get a complete output WITH PERSONAL INFORMATION :: $ helpdev --all-for-sure To get some help information :: $ helpdev --help Examples from v0.6 ################## Help ---- .. code-block:: console $ helpdev --help .. code-block:: console usage: helpdev [--hardware] [--os] [--thread] [--network [NETWORK]] [--distributions] [--python] [--conda] [--qt] [--qt-bindings] [--qt-abstractions] [--packages [PACKAGES]] [--packages-pip] [--packages-pip-e] [--packages-conda] [--packages-conda-e] [--numbers] [--float] [--int] [--personal] [--path] [--scope] [--all] [--all-for-sure] [--version] [--help] HelpDev - Extracts information about the Python environment easily. optional arguments: --hardware CPU, memory and architecture (PEI) --os Operating system (PEI) --thread Threads specification in the system (PEI) --network [NETWORK] Network information, DNS and load for usual sites (PEI). NETWORK timeout defaults to 5s. 0 is disabled --distributions All options for distributions below (PED) --python Python distribution (PED) --conda Conda/Anaconda Python distribution (PED) --qt All options for Qt below (PEAD) --qt-bindings Available Qt bindings (PyQt/Pyside) (PEAD) --qt-abstractions Available Qt abstractions (QtPy/Qt.Py/PyQtGraph) (PEAD) --packages [PACKAGES] All options for packages below, except '-e' (PED) Filter PACKAGE(s) to report. Accepts regex, separator is ',' --packages-pip PIP installed packages + PIP check (PED) --packages-pip-e PIP locally installed packages + PIP check (PED) --packages-conda CONDA installed packages (PED) --packages-conda-e CONDA locally installed packages (PED) --numbers All options for numbers below (PEI) --float Float representation in the system (PEI) --int Integer representation in the system (PEI) --personal All options for personal information below (PEAD) --path Show Python current paths i.e. 'sys.path' (PEAD) --scope Show Python current scope i.e. 'dir()' (PEAD) --all Run all options above, except 'personal' (PEAD) --all-for-sure Run all options above, INCLUDING 'PERSONAL' (PEAD) --version, -v Show program's version number and exit --help, -h Show this help message and exit With --packages filter ---------------------- This filtering feature provides a clean list of packages to report. It accepts regular expressions. Each expression must be separated by comma. The basic regular expression checks the start until the end of the package name and they are case insenstitive. .. code-block:: sh # gets all that starts with 'sphinx', 'qtpy' and 'PYQT5' (not case sensitive) $ helpdev --packages="sphinx.*,qtpy,PYQT5" .. code-block:: sh * PYTHON PACKAGES--------------------------------------- - PyQt5......................... 5.12.1 - QtPy.......................... 1.7.0 - Sphinx........................ 2.0.1 - sphinx-rtd-theme.............. 0.4.3 - sphinxcontrib-applehelp....... 1.0.1 - sphinxcontrib-bibtex.......... 0.4.2 - sphinxcontrib-devhelp......... 1.0.1 - sphinxcontrib-excel........... 0.0.1 - sphinxcontrib-fulltoc......... 1.2.0 - sphinxcontrib-htmlhelp........ 1.0.2 - sphinxcontrib-jsmath.......... 1.0.1 - sphinxcontrib-plantuml........ 0.15 - sphinxcontrib-qthelp.......... 1.0.2 - sphinxcontrib-serializinghtml. 1.1.3 * CONDA PACKAGES----------------------------------------- - pyqt5......................... 5.12.1 - qtpy.......................... 1.7.0 - sphinx........................ 2.0.1 - sphinx-rtd-theme.............. 0.4.3 - sphinxcontrib-applehelp....... 1.0.1 - sphinxcontrib-bibtex.......... 0.4.2 - sphinxcontrib-devhelp......... 1.0.1 - sphinxcontrib-excel........... 0.0.1 - sphinxcontrib-fulltoc......... 1.2.0 - sphinxcontrib-htmlhelp........ 1.0.2 - sphinxcontrib-jsmath.......... 1.0.1 - sphinxcontrib-plantuml........ 0.15 - sphinxcontrib-qthelp.......... 1.0.2 - sphinxcontrib-serializinghtml. 1.1.3 This code is based on many other scripts from: - `zhreshold `_ - `QDarkStyle `_ - `QtPy `_ helpdev-v0.7.1/docs/000077500000000000000000000000001365434462600143015ustar00rootroot00000000000000helpdev-v0.7.1/docs/Makefile000066400000000000000000000011141365434462600157360ustar00rootroot00000000000000# Minimal makefile for Sphinx documentation # # You can set these variables from the command line. SPHINXOPTS = SPHINXBUILD = sphinx-build SOURCEDIR = . BUILDDIR = ../build/docs # Put it first so that "make" without argument is like "make help". help: @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) .PHONY: help Makefile # Catch-all target: route all unknown targets to Sphinx using the new # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). %: Makefile @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) helpdev-v0.7.1/docs/changes.rst000066400000000000000000000000341365434462600164400ustar00rootroot00000000000000.. include:: ../CHANGES.rst helpdev-v0.7.1/docs/conf.py000066400000000000000000000052401365434462600156010ustar00rootroot00000000000000# Configuration file for the Sphinx documentation builder. # # This file only contains a selection of the most common options. For a full # list see the documentation: # http://www.sphinx-doc.org/en/master/config # -- Path setup -------------------------------------------------------------- # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. # import os import sys sys.path.insert(0, os.path.abspath('..')) import helpdev # -- Project information ----------------------------------------------------- project = 'HelpDev' copyright = '2019, Daniel Cosmo Pizetta' author = 'Daniel Cosmo Pizetta' release = helpdev.__version__ version = helpdev.__version__ # -- General configuration --------------------------------------------------- # Add any Sphinx extension module names here, as strings. They can be # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom # ones. extensions = ['sphinx.ext.autodoc', 'sphinx.ext.doctest', 'sphinx.ext.todo', 'sphinx.ext.intersphinx', 'sphinx.ext.coverage', 'sphinx.ext.napoleon', # Google and NumPy styles 'sphinx.ext.imgconverter' # Load from SVG to PDF in Latex ] # Napoleon settings napoleon_google_docstring = True napoleon_numpy_docstring = True napoleon_include_private_with_doc = False napoleon_include_special_with_doc = False napoleon_use_admonition_for_examples = False napoleon_use_admonition_for_notes = False napoleon_use_admonition_for_references = False napoleon_use_ivar = True napoleon_use_param = True napoleon_use_rtype = True # Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] source_suffix = ['.rst'] master_doc = 'index' source_encoding = 'utf-8' # List of patterns, relative to source directory, that match files and # directories to ignore when looking for source files. # This pattern also affects html_static_path and html_extra_path. exclude_patterns = ['_build', 'build', 'dist'] # -- Options for HTML output ------------------------------------------------- # The theme to use for HTML and HTML Help pages. See the documentation for # a list of builtin themes. # html_theme = "sphinx_rtd_theme" # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". html_static_path = ['_static'] helpdev-v0.7.1/docs/images/000077500000000000000000000000001365434462600155465ustar00rootroot00000000000000helpdev-v0.7.1/docs/images/spyder-about.png000066400000000000000000004767221365434462600207140ustar00rootroot00000000000000PNG  IHDRYZsBIT|d IDATxwxEۇ=-'Bz JG@ADA EA?^AT4*X(E*5I u.){f7̳3RޏBe\. M@po"2iM0h٠`;v@ UUQUQ!ÅAeΗ@ "p0 Ώ@ "]k@  'ii6vEd6i`2ozk4M;0xX0ch.mN nG KT$<Ӻ:_=/_a嶫xgSɗC48*lūc5Jեmd1_sygW-iӟg[WBcذU˜"OkЅ+_|( bZ] ucX d?h7K!O1&}sSxMF!r.CDeVHO.y}U?s}CZN<1Rv>Iz/1.\aBTYwӺ_1r)+{)@p9IKѤU%dWYJ–li@AǞ KVP/M# b٩M<<l).̾Eu|5Β<0u=P$ۍx&OS1MεQbQeQvgѯ踎lFm1l;Y~ uZ];pY,7fتyZQ eb~MoG-T2WNṟвECשDVu;ģGQBOϖg4:͊QO?vs|@UÈ.fOY /-R(g>}҂ 5{;eo':loܲse<}5N~KS٫$_CDEvCYB;߮HU#(H ~>&ҜٷoYfy#@ps$4]wr=951Iup]9nQ%%q`e^ /S3{gW3>;bF.HQ%#G9ksROr [<@'8lH*͜DOABO;ÉZHK|1 Ig8G^5]E g9֧SN'6t ifcNS"OFkv-DYs h'e @O80zHz0}",:_XϟᬫѦ\GuMJ!_ `d1:7fܟǧrZD]]ڵXUoB!II0L´.e'5-H EG44ddYB5)ń5niKTP=3 88q#{l{IA& ˄L:7lb@e1u]6be֖nLAY+4݂O3g)>ߒXSn'3MЅ*G9/Cd /OL\{~WMxJ k?Ѡ}0VXv1w֌iL!SGv@̷,1.\pb4>Aa?0۬4fUQSkYc7J6 ~1+˕~,@p:ф OOOn')v}[}jhҹ} "[v8>`0y+*XB $!_?!pRS=J80ɠT.A'~za\?CqF@ B.}r@ c z@ ܳHbJ.}رX !@ !>F@ 1@;΂ 7EB@p73;;3@p f@ !>F@ 1j!$ Iv6@ Dž\$E`0`4ִ (#x[,t]t-iȲdrg'\;{_}M2@u]' m6w\BHWSc"Ύ@ 2weB%"& Yi9;_E3?0KBx*44oݯH h[ /GV}yuQD\/{@Ch>b&Ӻin5 hZ^.-ʲct4}o<ҕ7Б $Ɂl׸?>?OU9OU|Sbh38\ ܕyv!6<RfaTU  ] p*Wmk>f|$t⿟Nv AhpaeѲDVHF\0&8ʌx7JPlo]R(݁Y\yc;)[S2h} 2'΍Z8łC)՘1$Tvǹ?|GVп^T > !oH֜7%Vy\yE^@GD5'G[4&|d+wϠ<γ˹ (s:0DM)ԣ|y4@=m]Hjozp}zMf?I3~Sq9څMx:ƌwdCUhWEw-\t~Jږtv(6q#'19[Nv tھ;F?m^SqIΟ5[Ipݻ~t4\$]8V޶- ގ`1!vl6Ƴ4={ۋ=+,n!κV]ҹsqK~Z'i2k~鼁`8߼U#V+ "4dp?vI{wqՉݺP^w;q`VN.kh(oׅj^`Ɯ}Y]Pш4*#]T8w*yo`-jvpeLWo歡Cy=-ucj91z^NNa LȍF#ÍTUEQdYϏ3gvo#GX"p}r~[0\+#we|3bsrx /a62Lκ?Bx>_`CeQ8O}a/k_%<:xih6Oe VB*u^Y{, p^@T+* :{]Ǚױ8Ts jN.r@1N* ns%K%I⩧r{߿cr9wb"]`گu&}Et5l8Nŗ{q"aMP*XH7) , zҭ r(ժx1?9*UBPIQ(ƍy-Uxppkc=06…X8_`ä22 Q<{ݧ@g$qz2ePZ5"""n;zQn] L{ɓ3gNY& MaԣxyT9%$ŀARq4t$ӢstZTX?׹`Ciz< @x8c&|ԫ3a2zO>Gգ2@3qnelh\kI${tgy/Kzj-cnٗ@ WHi`,ţ ,*#m1ҨJ%޺YxIǓxc~>? Ζb"+zU䩍ĚQŋh?>#Ͻ.zj~Ξ=vgfaÆ8u*cٳ̚5y[ht|%J!h=hk>Cl$T-:S[g{)Pº2SRfK\5ڹv9g5ѲZ02_զLp*׌l+_Nֵ)篑p%4Sf h$PCJxRS[b BP+ēТ]@ y l6X߻w//2RBΝ y駋߾}ׯ<㤦3x`w[UUl6b8Nn|y*_kF}BKb_Ɲ=o Cr ӦMsaGDD IRe9̞=Ǐ {(U/_.Tק^z@>MgL<3gf͖>wCЂCXNf\@pOrDž.\X`\|2(QKlٲfY\.,YRmذJ*ѪU+ C̳f_BOb'٠tg|9D/C=%s?nD7mA$2]mw,ܛ1uԛ\^zuƌC2e(W4o;-[2eF1SҊwg]Ԑ'R.zj1=8/yG+GuJm@iwt/_12Ɛ! 0ݍ3pf:oV ?*ߵ#pc:?/?Vl˽ #h\_nȷO?9ٿm/6-_TJ>u&sTe!#"dҤI$$$PB6lH.]4hzr 7-[L2ȳޣG"n3y- YzVoqK1FֿãΩ/2uuʅZ ;3佝$ߢ㕬)I;ԡ$oz;WQ%,OWFJx|vBڍՇC1Z*Id` #$ԗ ۿ" "f瘩޳g2p@V+وE?u W_X=) 9$fM֭tOɓ%\߃ƕJZV;4>cL? ZPl8ajie }m?v6ԏ)KbNX~8! <^5ytUCU^^_*ca@pB2gm:IߌitIBCKPa^4ٍS_2_3#B +[#6ۏ:'hDB -Sv緄L+$#Q_uqٴhF,{73mm"RjA@h8~Y@(' Pܥo3M5JRJ+sqf(4NdD(!ᔯCgυH8ԝu(BPH1m1wy{* %d m-fuӼj^<]֤bPB h_yԯ_Ƨ^{xŲ OQ5݈YOXMP|p-WSnͨYb$k2~׭B9֫nW7piY2a(^ 3׳UG=q>0cJ^zDZhW[2&ws6M8k6uuҺ~#әWlfn/a!~IOV팙|yt+Vߏ*c m)i'͢} J++sY >E_}݃Dz.J4˓|(GHq_ڼܤ"*W\^ iS-O7MٳWdyi7rwNtbu$MC'۶E?VuN'wZ_O2W?>V]άhvIO3|6|ȋUOǙ,ww#R,>~kF9>х?M٘X7v :yi4vᵥf#62:|Y~wgѧkXQԺg{߲96K췯и`kFˇǎ^t{y .Xr ^B We+^2݆xKZG_K;崕gPvb 8\ъ>bwy*<5wKu zߦeJk?ɄŬZ)&Aj'~G Xae=:I?ǖ%}Ծ<d{tX~g~xekeÊɴJZư~3^t@cF_SFT-)j`JCfɧ),}Nk&wdqKh%l/u7V1!O{WtJerw =Qf/&xlV*V*İ~gK sV4vE2;NTUEuD9r+Wp`HOO$ѣt&d3+&AAy9rX6l$I@YlSe1E& 1ѐ} A224JwkʄުmL7Fe۸5E/{̫.Wf 8~@O GBB8e ar%Ϝ9͛iݺ5 `ܸq@z~Z||]n`0@U3:"]G|0K&I|# lJ8tuNgM$nzk`~ R2PJH,`@ACS;hPgbn„uieBAxd4 ]yLY#)Bmq7BTH~?gѪ9=Ie9daUl *!j}U$FTݿ^Ȍ<;QQQ7 'oKcfޝJxF͒ɰw#t|貨!E [w7:/yJ&ChC S٥Cp;U>x{^tTL>ѢFq?Ek1褉{&ߖX좒Į-, {N)L_N ӭ1J% ,<]Ąў\>ZG9Pfڅ 4MsuSߖ)$~pEM|)XT5_3Bݳyh:GH6j]L[2j l!<r r`%ӗRɯ8Q ނt H|)1|p݅52}~06(̘4ϯro<83= )Jy<7ez/ׁ :ݞcKo2S 9ISZާm 9ٜa4p-Gh;~6C.L`ݙm s=ҙ 3: Ti; NM*qzƷtɈ;h6c lGg֯!uʤ73$鞄Vl<)Hk_<ݪ)=ǰx܇k1z_eR?&LÓݯT6d$3y~}kغ(m [3wP=1Ǘ"Gn"vB@r\,fZr/.=;V0D'1e z%qv{:}Pu9{4_\.ͣ3ӾRHre2$L~Q F ̊ V_.^\γղE'4Oi4ʙc*#S´ϓ+:!%]9k7rsKd޳0cG3'3` q8@XXŋxǛLRW-"97nѣs\w-[FĴiwnX,Ic=x}[1 jk2{*bfKFʌ>qCuUU3< 8Nt[Hs"Pxq-ݓLU5ر#'rzv?e vy8U2tr.gH1O!٧-_' E0ZH!&xmg鶉Oi"wo?wK̙3qc><@N3g6T)Z,OVx饗@ wlcq]dc2[`{>"ЧO"РA{=&MDŊs\r`-HUgW` .Y&:Q }rɄڵ|\#ݺuqɕ+Wrh3gSL!**}_ (hJ:2\W|?Z@ Wg_c6Xk:k׎'|;8p C a˖-9N:̞=ӧg*P1mtI8t(͛yde{gjRlYM +wl\|, zjM4aܸqĉq8n,[D zE˖-'z5olϓs';xO턲 bS⌜;j2^<oc;%dM#y|L _FNGpkq Gr`Tc2/DNK fC96nS/[>̤Ir8y7Yt)={u}ܳxJJ c?aaEUr:I2pd̜9cZ`̘19dz}IpT '!.;m0lt*Fuaj*#jf@҉(}2.3CNutt4$Ä 02 Nb„ 7|… [ 4:G1~xNd;̦(Y,9D2|Mקo߾9BѨUE&.:3d?M+~ȾN(gS)^No tKX/{lE_B+3KSX3ѓ&Q xyw<@ Q!.mۖiӦa6gl2vX ߥK={6/v?sB)66?wn!%: nltMQo294Ǔn J瓕i\bPO3vv(}:Ka<TAYCK4~1USX4J%_.BqG-=ۜ~UƌC|!O#NlEҥDFFR~}uJ(XuB,&/K w\yJ5BLaӇo8𐍪蔨U. R%45\@qGg亮,?w/W^x}}oPot]gƌ {zF^N7Sز%YBN*Ӡ~t7SO*K,8{.Z7H>@ Q!ϏsqҥێƦ#䐱s+C8@oJxDX ,F (@l<@ =@prDŽ\$,KcD!cnݺn"""ݻw|{]Y]DžmDa(R[m lnUJ|oHKa{ά+lWy۷/˗/g˖-\E;ƦE]c/_<={qOe, 6D R%SغIJ_HK\:h`[.[G %%V?CN>ڜNS/'ßv O3\̫\UoR,M<cdֳVjY1CkQ@PDKdrP%p3j( -م<1&٨\2zN:yEutAڲ4ElK,ػnK4k-M؍[bK>[f3ܙ,g}P洫cJ+ȥ 50Tg JHldæyDo\=’ah4}|2/whMZ<}h K'er-CeVBRSS1LHF,KBLM IDATK8&&-[/$I!^zV$+F&M Ʉ`@e43+M&)vSxԽv}zkiE.I3 h4b0(Y!iiiF4 mWu:ݻwI&X͛7Ϗgs,$IҴiSϟFgu7!@e*~]lF OgA FkJϻNAAAA"7LL&T*+<+2zZZfff/X...tڕMb ~RS,zB7ZMxx87;`d$Izk98zC5:[*((((9y#;wQFZ7x"h4T\FBiٻ&^JqcOst(kVv|/h4Ljj 8C/(j=zhW~fڌuUA¤_o,yvZ<27fc$oyO1aYl:BgYlYgnrS{R\ ztؘ/#&IroMnw,=)4؞ie>{6}`sH8/K (KkL{2rkh'>7a-q̫$ă,Yb>nK80s<) y{Sr{&&n:nKwaʷŖEʥ W_w=!Hj쇛8eɭw#_pMz;Jv:S$a^ﺄ{JTlH;^:9͇B5ts`艟/z^ r(:*EO=.FA#կqyxywePx j4l*yǸ uw{/I>F0-:2/;UZkdp93ӊfDt>t[)L[ǤЩO ;|syd<&$Pf#\FOL[?~W `8=- ͵U#޲%[6ҳX6jH>f1bSa#{Q2rvjsM40{&2qbWoi(Eztoύ|퍭L5Oؿ*^5sb؂*؞aMl+[x2o<=g90myyo}4.5]Ų塼41A ON;j|jo0mqNMG.~JY%6M D"եٴ?]5ƆeFܥ콘x'=y+$&&#a0`III\7 Zsaes ֱDX>Gaan%\ U2$T~nFۺ{DbZ.<#vy:$녝0҉௶ثDussQc'D^|Y73K_=ZMRZ 7[ann-tUDEfegq":&P0/?A(ot̯z'#7fBjXs[Qu,ARYؘNċح{>qI9$:xjgDL6ecŎ^~BcUO,Džo k`1pFeuBwz'Ƌ3ϠEE DsۖL+: m`?76_bQ=G->D{N;DC[mk62Njs?ᅽMz;+- Y+ĦǷ0Uly_sj kH1\HLL ZZa/m?#/!,.?7f僄j̅gC1b³FtZQ_El7o*tjgbuḪ'&ND0t~mWW<4s sbbH_RErB{ . Q\_VxilDW;člXqv`Q?S؛ 0i;Yml!~ˊEъXNoϘUxEͥg$qv+~oH) r0A^s&(<*ҽWU<-rdpFwOZKߒf iq~d>_~|ӧ@Pi\Dyq|^S1xp NpP"e# XnaQ>7c {RaW=SO$ۘ~OLT3..juNhbdwb0rwyHLtY -YfDQג;$R*@GW8Ksd % i?OR9╉t$|*AHyW·:w vCun  񏰱^xOEZ:OsҾ~濒cg}Bx4cF\tYD#?o2u~Fn܇4hX|m2-o89!S:GSWwٟD!lɮ4T4rU^%Nok21# cF B v&ai9u&{?u&M^G@͏0E"[1 qs@hl2'*NdτKbA\~+e9~D ,WlO;DZSix hVErOsLWHPZ*|~& Fi1?N y8{3&`d#Ju kY|ƄS<"%UlĜ=Ke"7bT>GGg:Y^5d ~PK㘼f"tܝ@` ndQkV fe_ݩYS?^|d۔ #3\(BA}8N>YBE,;֧jg\]drLqud =h".&g *9Xhcz oAlMhKŒ1 sONON#unocJ -mbdSbcH\r82˭8,SIKQyƓ-S=K֣sy4ڏ96)"U*TBph.wm+Oג@rz 9z BM3Xѽ l-YƧLfꏥ NmKtf^8x1Lz;|unyc4h]æ6_V ]/`7~,${I/[&o.D}rm@qO ospb; uM4{sJ@SА\$ͩLM=Ůwq.li~0gupʃ[GNbMuBu%d(D^{$ 8Zuۉ׫Y`FPhqf >vE*I5S ^N$ά3n4jWL+DR.D•?Ir'A.KOV4f|A]uL ~o55/yYq(*@ ݴ+hBv8smzO>MϮA;{?hAYלϡczfziAFQ]\ؑ5^BCOիd.s"vᑕ3v <O}wHXG5C%FS+2;5Eymr/>;$);Aev%{\pY`,uȟKM h/٠ @U|ѳQ#$5B׊\16d l;+EZp.^¥Pe.E2|֑tn('xfiÜ) a-gƗyn֜bVpz4ƥ QsőlGʧqm@ ;g#K06Q6Ky,^hohXz>$OZ_2Wc&XݱYǂL..H _b^ "=[ȉ<C1nSc%6->lTV^9c9f-=嬋/C+3N4.#+LXò_1Z<)*k\|Qi|ե0f;Iœ_cUm ?CfZ»iWjOn*4)k!j2 /1e+ݡ7_gؘ h5$a޿ieG插yp}7QAy2KhJXmí:ƨɄ8Iܹ(2HAAAA!G(]Ќi4;>`MUܴ-MA.O5_0P4Sm SWKfˀ4$FCB#ΏS*eo# $D7Q!܄}k97Q;xE$Apӝ$AX /jNi9A-G8uF^5nO@A12didK] omI0 [h,\3 oE ī& jjY?dEw6z re̚iEdC`EV&θe ?¬}Iܴ#gC~L +Jyג(((F}0w+}č~:!G wא:'?'dxu>ӖF3?Md/HrM.27vc$Q!;6s̴iYOW^\6)X=u>;|ՌhO.fo)|p(= G焣#.zERH!sc艟/zWl˒v93ĸ\[g6|yM0pp|3ZI⿬_M7Vһiwo(/qw#ڍ|6,BV8_(5ϧ"/ +;7ߢ,v{'܏ߞc>Fg|Hٻ;XIJ>Y'{I.| k߼*ךX1@њ*^rP[-m,}e+q`%?Ă:VsէI2JtޜN5OIyTe~@*"Hv>(JrմQv''vdد0l:3ʀ \>ZWAJυ'毑"qqpAGI1DvoERxurSy1I+ilՃwUzqSWn׷d8mx MLR{ޜ[of>qaUO) ؜" /W)+S[k›sG2Iyu-_qj\ĩǿfYHmߏN888oA7Wѩ?yY(gaO =?`ŗs q1{Ц<<]ѹpDwΦ$eEwGGɺ_݉DJ2Ҏ0$9==m!gi4EU!(zw_B|sM[׶|C*TSDU#Q1gLV|U˘%^d" +OeÌ)$cNfkn,^-~=4O<;jr$HX!⦬[k={ȉ(; WP7b댛 5m沨?j$,u^-NoϘUxEͥ0פ_a(>U;i"TNoLYPӋ3M[vn_qnҟ `{'v3{9[As&R"`7 K"3E#F.Co¥3S(qɈa8Eoe\>4?2v^6"fz%PٸKVݷ#az5ѻepfMVgUڑ]C6""OZKߒf iq6{u: uohOcI].5zvsY^ͭLҹ״kMc?ߔ8Ę0mu:Q Ɲvfmz,L!tMd{G[q)Bei W,"G.=bXI$<޲9ėe^tǞVsǠfB\wOɧ]12A [ѭ-h@ 3Tn'H@'/*SE|#X%zG;Y`3Wf,[?9_!#@$$$TjFZvg7'BzF=kj=0 HYԑYAc 9hBM, +t.9|ęeD0 Oil/ե,cA:Rh͵`2a7 33 !c0me5-K2d ~N帼_Ni52 @ ܍g{g;Cs'p'ݓZ`#Eh*Kj0ʒUTJm68.J"ČsuI`S4 ?W;j3-h2ۜj0iFKe\suLsGRxb qG.!7u&ˇTUݨa)%pnR6 ^S;gE"h ge_N{f-&o r揻/Ggf 4ڮ\ʡb~,BKPnJf.ނ~i{Fn?ؿ"^,LF]B 3΢’d%e^nґS4N6.f.>³%BWqvȴ*0GN29ҟj K?O,IV`)*F- tnK+$f5}/+dB'ٵźqM_?~O~2z׈\&~ 3gjeM3\0  k6Nߨc OQ,wwC ϰg"O/0$2 5nGfƭgIG5h(h'2!LuU4| x~ߵ}Z\\/ԛӇڐ겔_dzWM|mM\>Tig'Ctn@haهO#ag->N>+zaFq4kcoxX<J^)KІtW*ݨUrCx@nTיMG=jxpy86E ah)Q .Pŭ; yA}әj䬡(XW9R=轢d] ]!@tZ%~.=pprx!XA^mpڅHDw! \ xZ%d/2_tn&Lm:V2 7q%휇%HWmd û|p)"S{48fr¨leB=64 fmTbUP@P]B ccL* Dg &:3h&~u12E $5Q`'[TϳbhS+H 5y 4E冋p }^ *l1._*oZ_z`|ՔŨCi ?K9*~%zY΀VH;/J !eRhd{v*"&?2h؆.Ma:=r%3b^X4F|&:.I7k$e6MY]ə4,cƀ;RƯiSɭ Q̙یdm4tחs͛FJLLT6SPPPPP@Q>`׺BppȉY!+k(\AAA!(H}Eq+(((((|(\AAAAAFQ 0"WPPPPPQ>`E(rE+(((((|(\AAAAAFQ 0"WPPPPPQ|;lo/4?@&f\FYdBVk`]_v(;IWiЌW~fڌu+^rgO)'$IfAƶL_uC2DszfzYGtYIVH$0bSVzWm}l2wO"%)>'wAKb1 ff_ܜqttYObߓI[$Pc;~ة߱aH_|MtS{-8ms <("p؇X5a{_sϛ0]Je?v>5) ,7Bu VNxq=\x]<2r~\$.884 2Oe ̓7R46#R5wW7|K6`ĶO}i118 OuL#h;:zubS*v15J?+.l]1<'z枟RcHdVT+^.?{-< \>ZWAJυ,*Ѓ]_}e\ѱQMUKnÙ9S _wVۿN}"xxȧQ[$ScEs?EHeL.0bsWɗdm|D77sFMQrbLc| ˜^4mbs#]Ԩh9`:]b3w0:}+Z¨y(dCjo}Dw^x/)Ra|7. Pc@;ʸH<DJ*ݘ LՍzq1:ׇ2xZ4IwAr5XvuyEu| KoRPE@E)6ĒcAc,1{DMlѨE%KQ)w?N_4_<<;wʙ3sf̝t?%H*+t_lEp7/ày3JƯ6-CV Th7%dU_v\IG]bC/̮/5RX 6onpWlY J*RR pD"P_M/w(ntwIyƗ*-Z)I4^IHt*|,II{)H>QX4S10ވiWd"!Nn&(ʔ$2-@M(b]Miݦ-1 a2 $e;^|q?Ne9$Rt8AmYs#Zqa m۵!*ș$!(mpp,)x`Y@(,Ֆ08,nsPq{Uo= C+^GdbP(P(h}L/a}> ]WRWΊ aкDbbiOQg[s2y 7eO/VļbUt q֗՛:ftc;8nQn y!IHB9P+~W Id7VU(Б񮶇^j3S =0xCe/jC B"Ad4_=z>ulНK.; TWd"2`dI)0w(P!v=Gf9Q3zr ZT63%]5N\dk1MɩGSd&C,;DkY.Ci!EUEiN ZR4#c#Dr+/)wNg:N{E>vNJPէ]á^)8\~[珟I.A]Q&xPT\ݏsf=/6(^WE{&5fS5븶{7U>+F[틗IN`u/2e6@2MkY._Tw]/ymc#x0wVf/ccT$0YIVL<Z]ݤ*^SKEA3z*Bl@6{y -(%A#Yg.  _9%՛zL^ڑJ=xcVeV$! 5+_rTeo(CY„Uc\913Se\6H6NOU?A%WOtC7 w/4$x._5$HJZy(ݢmD)+eE`_ `윲Qr;΂jQyīRQ* }]I݌ ZPy~1UOM*Y ӔO[Rg&Jhaj B^*Nwd~+>ːY3 Ѻ]NT#j/y,/>s2O:AiDGJg"co1IEۊZ fƋWZ>uJe錑mUҼZR{#l\l؁nA{4;SCD~5SOeU‹~* yvǜ'3)Xi<74憷ȳ=2~x1y܅דpn\/O eO&DG 火e+lPt8O(=Ob덣q#Kl_" 2 K?E$R\iU2+F\R;Qmx1yi2~A[,J;X+R>0d/F߈l ۺSXq=f< UaAQ%Nf4yW3h855vib">!`ʧMyIJ?5~ϐn27R*<:eۓo2PP+Fn&0JN}J:2O% 5oΪt\#53 t8!frC"J:7[3'܂jeSwQ/fz obNL1r4Rsȇ 3=M)_rd$_էՈ ?Ec5e6ڃN7`?weQTf|u޻5aW]9WC*1򌠉gVeH޵'RUFFFFPȮwr+9 ?8lEPߋ6zSI9K™KHuNqYD0^1 6S\G%)) ;&Сnx1p_:?%Mެ'###  7+|v)2)_J r{NHPP(_C֓ޑmf뺹t*!!*###ِ4|Ԩ()[3lKS!~;Eڳ/E"Dr'G2~^pfsÚkwsYCjtNpFKt6Dۧ<edddI5 }'v'LѠ+Vʧ]:ơPFAיΖh[ьۧ1'o5TD-ͻܻ<:tT"G^4YZDק'Y6j=;15,H]xjέC?buJJ)xFaINy>۳#`*;f5N~NFFF#¶n#`mGHUbCPT0%C|z~! ۋߤaGnfιRin'O+F<Y;QJ$V0 ~.cM`T4w1+οD]^yp?Nɞ)& mq *6ep!S 46ڬ{>47 ^xt,{co᷵K[w +\/sM߃J"fn 1;,ɼoMh9JIR.a*Ԗsl}vs[TY?×:VxTfr 3}2gTldw_Vظ<߿ѮΖaE*v0%V84gn5Z7 jwp%W& Gw 1ӗ#)Yk[ > $՚yU`J%Z'K*51f KBӘ:*u20χ>S-iΞ4ȃwZ`_#/L)5cQB Cz5Ni6^ͣst1+Y⤵ĵ9~,Wξrvt7a0v%NW2e%xwh}"ۗ6fozf~fF:Ya`gSnRlwzK",xKK*:#(O}. {-֭M [GƟ٠#Vllj0%wjbvk{.?oݻbՉTk>j,ܰY8:*fjfg^O!KXlM &0R_{_f"Vs׆_ѸNd-oo@w4gAkYƚehe<>6%/fX}ՔO^C.Mj$%CV*4 yp` WZb0s_Òu[zDe2JƤI٩ToH6F}7U?b*u6?'Bj.;~\%Th%*XK^3fq:^8H~,Q,zgЦ dd]!@g)3@㪣f5@?5ᗽJz4}Mu[h'2GԜVhl{|34Ξ@e4wӢjj<Op@aAT JQ4aNM%iSw۶&6$w7 jbie+ n0-2 1N\Bgĝ;}UL0?(,T ʿq!E`T97ز4@9 fqQג.(y ih$)O%PSg$m2 %ݶ)S8]7w eg!7wѡ9x3p!}d 7z«TOxESu]Ea˒dyS*1pλ܍2Upӛ [)Ń+: PptX;''q(UZA} Q PC& L>PXJqm@nwM2K}|:_gONpTKwa22NXPY,۬gT۸nM^$*[bUV.ٹE!G %*! yZz@$P(@SfQ,ڰIu}B,^"l@ BBH23  -ZRU $_оMS<\mMVA>%VȺ,H^y }uDb\c3Fw?2VJL՛g`cȆ+i|rLq *Ƚ爛$Ev/ Ǡj0Pdʽ(ʓQ=j 8TJ?I ؽWOLtT6"'e]3-ZU #zmV5,>rj̚W G HVp#>A'i{>Y-aT})CGrqx)*6Q{iVߺp/Iq½3eM 3YKeTRu`l]ccT$0YIRW-ӷEc *iD#qc0FARr{?=N{*hV++{*; MiLT⺎l q2*q%j IDAT44~U5&5P@PO쾓F[l"{G.TV׿2+r~W ,%M?RY[qm7$Zͬ:!+OIq}떰r#,gHxʤWLw"tahtwRzFQAM$hEPSOX8 BqLV:Ҥ[KGOM{AVA3N[kMV¬6F:ocA-Pa۫C?'.s4"`DҨ?Lu/Y5n G3,E>mX#'9wӠ $ kM6{Үf^c80xgiʭ9kLW=fd-l eb F-ť O'ܸQ3ɇL2z0b(C\K~t45?^à-|׮θˆmih>JC% [:qQ:5cO*Ɯ?rK24Ԁ 9*<[}Jޜm.VcX\˰q1)Zj$S1N2~(cǪO\ipკU4SSL(ЀkM| 3gUY Ù:+>" %뫂ŒRAܸNO)f8 …i}CaG[2,Cv?c-W KFuP y~d?TE)ƴ\%u|A'_nİq lcDh=u~;CLcT'LAJ`i+(P0;%}5XNcuy͐h0pc}e(OiM…ɋBQ46rSkuF$1]`2p !tVqW'Ƃѩu5:SMYcFːs}S6=m}LHD*xZez'$?ИO)BB4 ֿX@ ?H$B8Қf.%f5||y"11Q'S wvt|f|x T"n-*M͠@?KNJR)tq%^ɴ:欫/6* M1dDžP(aN grle ƭs*R .7bZ|?x]{j&7G 2/lap/5XOh,zYɆ*ᚹ׏@hjd׺̿`"######SXdC.D2ǖ gsVE2mBOgVʹU lJW-vN %2|\M8=B>H=w0W{|lok x|x6Ͼ񄚾s.N&.=d~}t%դ8ȭ^1J\}gE$ߍ[wܒcҫ/?Mdg܋)xpA{H.qG4=f=z-jSg;ݩبߝ3 8sPTۄEw 0!;kk1RVɿ tqڢxViM_ qqu+Pv)ޖ{➻tgҾnU)r%~MbJ+Zt;[l-*ozvYi gY3v=ۘ*G`^\S[qQtbJEvY ]PqbUF9x8t힟Uq» 溛c:YDt8͠΄E|&f&Hk|u[E3\06 !G9wi:{-cʓ{tMi6efg},YBC"&xˏtxI!T&a?1(TV}i]L\{6?Q,]3jT =Q;%4_ZmZ.Nݙ9.3]'~ʤv:gUPf>V 1 1 lFyNepyKnf愗z*#Y?UǑ\o9 gs6Ʊ?`yk5nFOk¥q٩'c{K7Wҹi_ȠpMwM1 L9Te;ry&~Dn?x@?FȽL%ђ"?zoFm\%}$j{d^o["ҧi<SE.$m΢跲EǛv+dv 0ɳʐk ]?N @cZDfg8 !ld.JwCqJl"nxy{P){c4 Ce{8z8TjԠ޳Loqu6p Y1)P&:.Jݵa$YbR{67FlGԀ{I3.N`DU+7+,CƑyLޥ yzX4ch3){A17/t$q#"\]%{u(@R<:Cw<[ޔ1Lu} oaQh&ȲE^i@jU zM^ʅF]ǃq qICj#9H@xKmc}1.M֕ ~VvЉwL؋\_P)3 KokR.HE>iŰҏfy&0VŽ~@p 5SК9r [6.7u*`^H0*b m9.=% Bg_ri~ZZB0BS9EV[91kHd'w6C wܚVUxV7G蹴|UѬK1@y&K k90&u2wIL+'-W:ګ\%q"13PYXbfU=8:{_aŌKb*,,-a"% n@Az}7)p?ABaUf޼%~#6cD%A@$dY^.nZ_TIԸLKn_f}MK;gUEfvݫV}%Nল LQ43Z-E#gp9.w.{ ҹp*lshVBIP"-5=zrjBH5ɤlj =k oD펣Yy/^+,KRy[O™KHu~Iĝ;}ULrSHnYu#?Ý"zfE#8c+ *GD2%j rvo&˕~t 3 SH~H9o=MG2yx%6c䖎Z I`AYdž+[T[n+HaA@ ;nK{|z٠;?]vx*0o@uj8ߪtni2K˹3i# ^uTQ0[(H+rQ Pbz}j_c@]١T)QBTSCJ=&SG%(r i2_q](0wB  򖍂/[ݓC/>a ZjviP}ySAՋ0GM9/L9Ѓ6QZϝ33MbҴpzr[WdCHHgO3!tV̏+L޽xWɫʱC\(lyF>IJcH=>gߊJK7%H@wgDiCD@}Sڱ`si6(~WeChCGb|?q(2(I:ރ^}rGSk1?rW(@^4?4 P,;$ؗ)tr~=њL%.~7;cf<Ok#ztR4Dsҩ|SGGfƞ;3e90x/ws|U}{DC?/8:D/QvI]o֣3ݛqs{B诲my[Ae3x̣ɳ )q}~åcm LLMQ!W{b OYgv4./;hݮs'`Dmvǜ'3)Xi<74#~3^$nLp57iOy^(#|,7Sv|[Ձ+ k9|# m9a۫C?'.s4">ܕV|އ^}yS`X/0oR\z΍}ґ&Z2=z2m z q*.¦^kµus]|B(h"o}QZW)8@gc>j  T&_5dd+F%ѷm0An= 1 uNI`U|A_& uJAxst)ؒ3{vݐ7v7fV%(-ևN,1uMJWsKpFf,S#ƺ 鍄t*4r/zhHkUIL7vdW|a&8$c_^m oߟ(Q>ep$nF]#51aŎ _CN26pM*b C3rjRn'D+ZT4G{=1=3_aU笠E_e^o[(*mm(9,s ws~}DDbmqpv{a+J֘""*q=!Q$5GDj4ϟ?6\hE۵p}h*9z&4j,.* n>8.FV?{m=JjW_D bPrP p)SW_$&&{?Ĉ"@1ăĵF@,(H#A\\L88Eġ)Q\*AXpNː(+FF n#&&ErOL65m}_/o(`" Wv4>o$&{"*UJm"&#߷RZsQp%.?ʆ3XTa(Z.&W}HQω9r*6N*vm>Bxk̈́@{?k "1!4z]sMz gkca2&DXqb/K6 ҆0R3G??EBI"(`* *ahb-%E٧^-k^:K96FjTikEǙ*"<텩R4ٿȷ^磭'&&'FՆUwK=Ⱦ>o zBR p/_S[wG]?ljcQ5@[pE}w/=" 'sP G܃ R2UtV'91FS]3=#!!a88 +"SĢLل$KEu#tȮob|xD)KHHc9~Y27%i+ 5Vpߺ a~2`!!"%$$$$$a$$$$$$a@.!!!!!#r w)KHHHHHH\BBBBBF o~F*87EYK'O%ϹХog|jvՇ>޷CgһQ<R8) ԛ:2ΡK(=j^!{KHHHHKHdۗ},crPsL&^2.P{)s8ؒ[ 2lqn8*M$$$$i@6"f~maNj'a slBU<#uZqhO|Tf@iīDZ)ALJP-#NwsjL8:!}J=*6CIHHHH&@&dd;6Pj2lfjR)NhO\FL=Ӈo޾sQzĜVowt %=%;Kz.[2G\E>KQqTBiBZb=ԾȊVՠCl'g3oK+n?tM sF|9|=i(ՏfVq>gˣr2"Bg3djgn=91 Lms-rMot;rTbέՓ-)Kosmܕʈ\b,7W IDATlMd1L_j13X2D 1U(f^OX0wrleP g<m3K(U)\xJja>(j??\ZmߋD+,Sv7-䍫ATi6'2 9l_0(͠=ÄJB8=5q.ڔ ?B叙OyY {N]wbail.{CхI#;ѸvM{9]}ͧyEG:uwh>3}tȝpɤOn.͠ҋ?e"ϧwH|]]p+CӸ8O2y5"|p-G^ 8CX!>:;[ MgԋCA`\6\QbprePՌCMrN ?#}qUۜgxX˥K.킳=H-yW' g'%< WytrBY.rz@ħ|}^d6%⯤Ne)=9V:O#+e WgH2ywAYw&IŢ&JmV k࿼{ СhIUI! -.!ZsD{q c ›|%*%Y bLkز_{󑯂s[͚_W(YnA~ܿcBy>@wy ' ΅#=J5ʡ/8sZHuރ"i*>AJqh:SARt8`ڶzzlC_|YE㉱pK[R\~ԂF҉| "-a2#:n3s"+T. }فH?(5dX@Ln|莓Y6~;}[A5LH~Z"v^c鍃0iޜxW>kІ5b #^F Ng[1Ngӽr:'/Fw/pŬ4Oe̅˿k4id]VeumD!.U/#ZxR:tzl2cqR> ڲ֥5f%}ţFҸ=V@y=CS ׃ i(2Lyz 1 4[[ǸpR&MAUBDلxX߄-*T0:7D$ubn՞e;+~v$V5-xW"R+&EҘXL<:Fc-z9wLm1}t1= D p(HS} s%ajxʠJ g7RuM P\ډgY:4KjM&U(X)s$zMz :5CNgN}&u3l∋Ըlew#h7hyE̢ɬ`^ěcmDM%mLTtjT.0yB 0ě,~AYq6E9^Up?6c߾+*x@p|u CG.:]?%~Dipd|P%oO|#]9ٹz^]jI*fЈ'u2ܨϬ$U -QDkz&,mYZdJ6G^c/H}[H}!+O t"rbGee6G..Dp'8, ,5'P GN "rܛMgYЂ`‧"G@ʙ3`zv+Ůj&Qͧvse+oӾ[!ʒEvDCOZBӰ)'s06K\& " CY#-l:W@'+bu9IG$)50$`Na+NC=RX\ WMf&]237CW,[yHz|)ªX>V9_Dt)@"N>N,@7cwsuYZXE녻ʷ3LL\hJg2LM 3c4gMYC՗^Y8W (]QR{_F.FVU$:d8;Ķ]O噳m6v!axس',HεcKJԧ}:]N}݇s *d,ýnC*dn$ur݋' Q7brlC=`bf fɍE0+tw9 z}ߊKsZץ~`Bpxf Ǹd[USOA8]J ِyϖA]v8ʣg:0Bl uO;t3fp1УS"BâBbĥ8k(jJP ~N7 ȟY|YB)_Ʊ.SrClacrY.}?57 (P?3QsfΔ/}{nA<. Wa 'EvW16^Jl/&D>g/ǘ d88;"^<"zCH+_Fmq֕NwH%݉bH*RU>d|Э9SZLu>-+aWۊJS @#!F}|;ׂ.B̭.Vo0m{ڏPNQ34'=;qLs)0jciVC֕0}ȱSwJԓ:s;1Y/xPGw/=ĻQTUa@reʹs6bc~cʄx`)ttfaؙbLŬL !${Fnof(X'RhXjwCM)WZ/Q(ƋՋ؋eo>۞_]pdNغy6ה @fPe78oÚ:ۈ̋VV"r`R9IIF[o05b"%cg`d('c*tX_c,k; Y^[N ]2&zqrKuc`^uYZa=q͗&2b\,,r"+]Nke7͊mOsdWfTQ\آܔ~[=)(=]̢66zLy!_eZ2>enMZ쳂Y2l܃yp}1%rV}IʂtZS'|>!u"%{~4J4wE> j?e͟R2+Zl0i]Td6 }IЎz7LWRodo+ÿAqGcҋ a8"CY-ЉLc4`Dڅr;'oid0u;N2Ф`o|&2K%l/Dn1x:%2(셀⋲[9~-/?[jUAt1vXtE*@qAc Jn/s}&W2\*9ˆw'*97Ⱦ|7%/ƎS]F8ySG#ܹs?qD ez L9&쓙܍ jysoh<|+FƼM\p7#%$Ec\Qw}fRx?ās|4R$$@ 4u3J~6xX'2pZ4TKGJKHHHHHHA w)-1er=P0^M}2lII[{b̙űF1o@:wa؟S:-Mǿ)Ҿ3eaw;O1KTov/6e*2+XUi[[cF?sKqc9~LҾxEHOP6|)~Uc"+=΂6_E)&]wLXVZj&Z:6סRfsdJ JjeL#K'{\K\U<o7>;0)n_YaF"}dS5䍊#u{u}s֋w|Hw񮌋'䜻ncMjk ]\+Ր9]*7 Nj/(C4}yL#R*k53%Clpu׊f9AXń'e҂Ԭ';3 e۞SVrt-;S/ q {|+ ]jY㭴EiMV&XoF\ J ,6ŵkruecnp0e)4(>ْQxRĬ⃫39^ө n^7\}Q=Ll@ o\PJ,=Y0,߄n(TT|w853K(U)\xJjiukeEE2ΡK(=j^i:..CrV줤tH5ڌZϫm:;v^tJcjO΢EtN8SaTp"]}P֝G2XDʼ^T Ҋm$WΖ IY,@`}X%A-g(S7X.%xY-=>fF> gIә"IY c ͙t33e3}Wqh-# =z)m*[3F}bL0]ݨl6KQ a+O7D8KYl`[S<%:K:XsQF$ Up$=ӗY[lCv6±y63Fi1I|)t?ҧj/rrJs͓'C ?D+];ĖjjG 2ϮaB@Z);9K3 gwCِqb ߌ-z0ybNA0qKZhT:aQ%W6LfD\mfncWd=mX .L3xWbvݙj&tMSiXieZ>{5?|DɃra`e-D<;ra=(d`lJ5ʡ/8sZHut6YO曱ttXܾ}u!m> ׯS)s8ؒ[ ~f&>ᆭ_~2-~: <-}}bo3xMktjCo,j#ct qlm5tUɑ)i5plncd:}˾ehր_R k)F'f)+!-]4ĪjT7a/9odL:>5y'U`s՚9:g/4bL'%)/Gfsx+Y@M|3 I30 T81aCYMFsoYDTbw]3ҐP-O*7<ڃ& ~@J+~]}F9 0:fq3:5rvՋ)N7tE-SR~Da}{OkH,?<N Tf._r60kyƌ^aybv CV0v; G#ЃLzkYTqX^o80_,U+yTiEY@<?Og:@%f%R~DRy3RiV;Pr75,ًx3rL豩IvעF%Oj^TjYHl&lRoRqV&Lٝ̉ TyUk '>s7EV_kRQWZEy}nYbqGLyrT*K IDAT\sNT©֌q(幾У^@QRjA!bX'5PY)pK%TES9/D@@kܔ((,Xr]3б)Tl`T9E(Xq[:6:|7KfUѰC=raV'rE8~Ra/)N7ʼnq_|DxzrjyoR ٝҁq~hGdLގɰb\{bÐ?{/OreG@ A5}o98zܫ iDTT=lY$ƑmD\H?|˲rTl-eʭ!ѱW SQAOƧ%y)MܺɽWjG9CHܔ}Ղ%75\z}f%ɭ쇧W uE_%/ׅ"),<2GFA>A+CS($dHl/6"FɾF0ߘ=45%k#E^OSTJr͋<M^EFzKKiAe s2n5 @$E_n"ن ̡N=ycR)@!-!jfu:t  Ȑ@7ҡ@aEPgIϨ<g'߅ʗ1O\}}gN^Ww3?̟Ɍ Lڃ%S߼}hWe"`M5 -Qx`>@JR'u 1ȹ-f?J__e2Ш)ِinA;HH~Wէ&E:d:Wu2l#i xϺBx?R@?v6Es# Tlߟfe |x4 Ͳb}MH+wUl>kVfh+[‘&alݼ4qZN|{sߌ%碂߶V S&Rf. ,EMlāwйS,vUuXkΞ*"g9aZ\ns{;CVTːkõ-0fL-BjHF%iVɡ}z2,xW*)-dDMljmg'+M+ tdp=$まX!h+Mha*pi}Z9)G~~JKN5w6bjsjxYſ(~,kҽ[uFu|RC"uXr8l&ʒ&3lZS($ff<4|=0IKi&uQ/M\V?Z(MHz(9};ǺU$< HN kѝ̞( I35_0j#->bn3DuW2n밮TuCڬ/NC:W q#Ã1Z3C"j58g~q5Ssu{gdV>S:紫ꋵ&gS]"~,W6;n#(%/U$(1)3+̦n]@A `SF1BG{,CYEVj@lg}QEGd9 '>Ȕk8!6m_1zeDd) TOT.!Ոdʂa2El<$ ɢ_, i!׸4}f|eA\7|Zz/B7Дe}-+&b"\O"2ULoB3fTCKZZe sY0塈wE5k[cW& jmRG2)Z7A0[8|. c~z bli_$= `Bh?E7ɑ[\,˗*A{~4J4wE> j^ԡ *8v#æt5.ehjI9Og1V_FIQj 9 n4|ɭfiGR2YҘ2&L_-gtdfY,6?>M,d$=M ռȿ-iGd}RRֿ'.MFn|ՆFxVEj!i ]ZG Cf/&0%rV}IʂtZS'|>!u"GwN w}C&anwD d¿aE#ݔL;NwYNrEgn$$ gQq~_1ըv "\ ZN~]jdzzp^F%?ТL)gY_kErk gزЈnZJ;)X2ʘ[a.2Kt"Z4%DvĦ'V"ft˱JIeHӓGx1#Ѭ"܁'h )qK'Ung XfW=%$IԺ;;%$Aҷ0lt+q/\N5=tW6MD-)߀%Jle_fOTC~w]"oe|b q~k.|㬷 dbih*70#U^LL/= loOY~ \>`c+u߄|K%y-^|76]~֜Wrvj߉%JuCin: ߁"X_i;L|)S/*?7ג6c6sm|QjS:oE`i[m qjbCҡi8 ڌQ]xw-*?]^ԂA?xsh')eC_{7 ~*^=c fĠz~~.^iKZx{4k-I^hBDYE%[rRur=.Sd'(u\6qoV!ۃ'_}K`GQKf1\zoZgx쳷 iE&m\kjGtݟ{χĆxVI=TKˡ}i\)'|XV秐'KfASVfSGp=<Ոqշz-U$7;.M`Ƨ6fYM{Րg'.};V# ή> oK3tE7uQGWUd.2Uύy[PK (S)ܴ~:ɩl[,r.ay(q)Gbi?[P*[xh-g&Drdn54gệ|DMb\Zwflj^?%ӟ:D=7͌P[lQ61~c:UҖ!V&$(I9fSZ1S:iDrk\mqSY cN[-d *b_Y+l QFScp˓չV`TsE[㡴!0΂Qd^'X' 8h{:&TR:FoǮʚ4'3Y͉ytSP_w\\p>swKW|9mEH_\6gh>*<Z(?w? +pSGNvvԜxչȽ]?_W4?g'?}N(?\]AM (RY95`88."V: bySg!}V길 _Z!h3nc(_h^$*w%^a t1&=mX .L3x\{ym>d؍DfIџ.SzP"Mr9>#ODDϙ6\C|e5H+ְ+"`Xo`lis#mrMAh>b`̈́>: FLL1Ms8?_4SFq,uYV? :杇n,i:S$)9aplښc9*ei<>L@ɑ|l.< UD%l[[A~3cᖶ4I'b~5G 2mahx6k~Krr}R J'1,ʆɌTKmʩXWsrJs\RdǺ#d\Â0s|n%tjܗ0x{x;gX6ڳk9FƓbV:\_,Ѐo&#|LS/|;0^̵Z2MLnBXE,ڴ.}:kbn@<8 |p1#jY&o84'>* 3 QEl{ۼ`rr2|t#Mt\CSZG ' _v=u6K.W1p Ġxb:;?l3zBs G2l$ Ƈ!;-C|;es!03hM-+RBvKI{Ő>d|!,/RyuX( )ϝ t_]!W LiE!" +r3" CV 2r4QQ,Dg'SEzBMY='зѸ}dh%9=q*0t2=U 0l,VALVmQmLm˘y-=]QIɐ؂_(lD \PNٲ>r)<ؐ‹W\&>V y03uw wS--ogMgS4F̟&Oc9{b_0&3z$0ijLek}urQ)@-~XT"(ǽt-`M|MoH+8Ns~Ci! !` LΞ`M Uc\}*;6 DIdϙ~;SvrNk 9xe!>v,.f,_r$ŒR-M&8AGZifqB|T!6v|rvv]3!$B0utFwS^" "ją2JMD v^Q&p+|.lVpVl LtD6fLIX;ø73wu+|YCJGKFZ@"BsS{vDI'sٛnL@'Pq;m?+g@7ˮG YsF:6!8<obsI6)]9! 1,ŚBٚO{lASO9 "BwAn&o?2'(2TW5^*C4nFCkm^iw' Xt`G5Ih6fN²zAa`VlU63Cmpݰ66'=Gߐ3n :S.6:_4z0F3_J I&߁-Oۣ.牵^_)Ƙ3;D֩4\<ʟd4ۚmҡඕK5hO@)pћ4s66 -3G|LmoL}GZ&۟O,` V|9w Y"ofSxd:̦Kvʙ>~>KoQ c2|1-yr f#sD= *wfԶ.wA#iY%Q*P"j~m3'g 2HMIE0 EIǕ%i߾:9^SGSĪdf˔iinCՁ7~=`و˘6z;$^llJfwSPG,bB5<u1r/V&kh3JUezml%A%bXRĩj.9V-RyJ) h.P5h _}΃oX9܀)"f"N3:|wZDv6$>M^MaI#䦂u3x( ip©i9_Ψd?ciC"u5tI& Il5cV IDATZ=-PjpOǻC(@Q|pàql`)<̃kX1$Bf.#{3S{Nn2%Iآ;rjNiGFy3:K[dWD0*EΨH?͉Եk:d[%X6$u8MŪ!mLD*a=̮%Kgu-5Fv7i"KdSeh7 jI9l֎C|crY mTgm~$ [KίyK4vW2~&":"Q4@^A_,|D:M3|9+?"CV5)L[C:R'}?P=(Wr 7jG#Gx'c967+;Isg8_"q.|(mബ<elDAH,MѶN KoXt>j&[bA\\ὡOi9Z̚WRc8?ih]BBBBB#=JHHHHHc@.aԧ y&!!!F  hm)!!!!3R wA /m JZgi@M>ͫdm1U >E뵝$$$$>KC<ܩOnyeD:>V"d\;)'A#/ki3"!Ә2TC ɉz"S $!!!H=+k-A˭. U3`[2N*STK~)L˕FoT|͈< JɌNƸ% r601Jc=[ZL^v&X;[co_sDaFX`4ÿ-g(x.GӰvJc< OyL9ӆglF/2h,RX3= 6^%#&X:3s^>ro2@4`[s#Ԙ X꺪 QO9n,(jL݇doHlDg'#!!!񯐆?\H4rϫmK3C} EL#y$AO-g^##*RĜsO&k\5!"O.ʹtN"U2**.ʐs悀C JHUˉ"QTt4`c,<|'pu/+c{9 &wN8R᪒sʻ!!!!QX@|Lry?!3 ϟȈ}sAɩ#B PQ Ę?(E|q2/y&b@L@J^:+@9eYgrA2!/ #(})["G.K1c\@Xoc$n^P賯_T hY3Kp>jl4rG>-`N.+ ƾ$㺂"޾j .py-dT/'PM? N9DD55$ⳅοk.bq¥脂5ޥ -;#?LJ=i<<7q;]Йr D50߼L4E>y^ޞ.4n@hl=ۨ\~mZ?յ6HqiX[wq*R MJFC5$T9&p=Y DHnK!0 6@"ff"OuU*zuQh>_9DJf4T뜁[{o|ĀM -/*i0 <<.CO ?ڬFA o=Pip&4h1w R+%XH$$$R (h=`[t2~ ZNMة2Ȩ$_]ÃoƲrx{T6&2(D?twa"m3-c 3hPI\L&~U zi$`ʶ:g#Xf9F2 e뤲ybzX6Ng0[nqP,AC4~y*¾oD[MVnԺ9 %UL%uYC>3k Tx}K PNJd0:L3QJ_t -#lb_,HHH+$/MJ0:+K2>3ώ7/z457$$$$>R$QŪT!p}D֪5v wCƘ|l⼄D"?c`"!!!#~&!!!!!QD1F )KHHHHHc@.!!!!!QD1F )KHHHHHc@.!!!!!QD1F )KHHHHHc@.!!!!!Q'?2nOزH|61ك+.زHH|@4x|${|lQ R $pJvZٕ5d9p R}jǡ_W Cysx6B@P{Ex.#_OPUReX[ZbވWK#.y}@#Ks)ב# bYei䗈`+E-"7W6-g{r6+㘛~rzHt _<*:k&bT ebj2)g)Va,|de䁽K[w|9]w2Ҏԫ䉃K[wBgʹ]uLkyaeak9gW:Roct:`RrY`yXvu"%%1{XgڠK_SNH#?xfgeİUf>u2#Gh͆~Mx/nvJ,,mpOȃb}mbڅSBIyoNŒR,]kk#rȥL*mH ;b4vyp&n}>6(+#9I`܀?EPY  vZ\߆Sc>t o>z6 +[#s)3GAVƑ6%_:iv޶}:Wovɟp7⣗̞ފ6ozƹYJé/P 67GusGLgHTUzLWg]IݙV$3t ^ߪ"FѬNLd;3rr;Xe]+[ɼ}2QGi3%3(ԚCMFz6Y^U'rtN9s@ 02S7CyPՉG*3}OɭcJ gO`A yMźԪnTf GҪ'rYfuMJU057"5&͠BKXKoV75̞M>-J᧘Ү2,ז9Й[C| f D(A)O< 45\zX)YWҊS pJ‚TsxqpT.c^g3߭aL=#zO`ޒ#t zXzY27&P*`wwfOW(ATE8=9AL 7Cf'1ɺB͍%o4kfR/K} B# Ir<<|!,\xe],]`? Wx$d9Yk{<=~@z7X0*M?66=lmNׯttoS*?[EkHE C:ȃ}, ިCz SXgǽ7l$8Z@5TNcfɵK9i&Ѵdf ϳ!-5_słG||8ժgs]}~%GiD *̱* q hޡ$/s/W,GN(k>ogz1)h*qS/\xJڟ.W9|rO,d,=yɎF^e3?]=]r[6szS>w9 H2 h4w  T2VQ /2,Jc:ѓɹ\gY7u;.fq?CK?rk&8qc9(>z$K9_ N/ҹ=A_I~UN9/9/mfoƛe-gKNH='G7=_gSī kk'&8f2ap ro帵D]>Ր8^`\woK.4ZГ9#U,79 v'#[ $5'(X>;Z:r;eJh ɫ4ګb@zZ?9/3~ -}ʠvӗ1FhZ1f >XqlgLjRf!e`fO~dUopZæ3ANi9q"Э։.ޛ=3VzQ*+[w*gѮa+{1M?4{WsnK+k$LJ=i<<7q;]9s:_fMYT[8cMGk<^_@ o¹N4`.N A[@~Ux RA;MfAt*2meRyt>f sL'_ti3cZ&qp **xvVE)hxr f#sD= *wfԶ0sEPmx?Xy6a+?j1Z,"QNkNۇAסa^rf2YlZdtV%0-ѲS8-cl-aTf~dT ۼ'9Ö3(,rz=yXVm :<}>fMr G/`&XfLUsc36aJ iWz7&kC"^ӄYҖDtMmp[|qqqs[$~OdC>t 幮k?=Lޫ{t9*ΎB_1%$@r"@3ܸ_`^E,}nڸaoO3l'PI2ćF E@2Gg!_hx;I ԏ{ a| {q}>Q ih]BBBBB#~&!!!!!Qg;u.NR_c䑬8YKșuJ;qIH̥2@H?6?Wk,-mpo`)Z?U'I94"1KHޙi!w?z 72R/ÂU3n:ħ߰ ') 1g! {+  [GTY>ůշV݃(eDq9zSNG}h4 0RYPއ>Yr@ZQPseadLgC2[77JÜ^2cl낛 Fr 2{co=Q֬N nMSBCAN ELdZSY)EdBEDY\5|0UbQSp!.ڛSDׂNn(,2wͦ_d;(HVjsy6,dɁ]8z 1i0yoRG-7[:ĞYs>FY}S@'<&NЭ㨭ۜپ9mqj~ֵ.UTp<ћnC:R۱'.[v +UCfjsFnhݭ>@Ņh|dɁ|>)$mjҬ) IDATSӒ O5qBO]z-?#)kDYʍfr2 Uƒs4Uqv|J8zݵY!XbjjIe䁽K[w|9]w2}b9 nF6 K %58PriTvKRηQeKcytx=Zs9jԜq+RV C1/ dҞ^v( 輦Ǚ*@ogl,Ω.9aqR逇mZgoڨ@i_gsn>NS"D4LÎh!0CKХtL B/蟦1<%}3)@1WȮf(fV"4`HO7w0kR;ldZ9ڽ 14!&m@mq,<_`hm}#|j.}]-nV62.e,% XfߙUu#uKvĚk@W锇T7AȞEmSŪ<}XG8 G7/a =VVYvͯӇ7.y~|MZ@S(3T*)Юܞ^𷰢dZx^BX+Za11wxVnw8;}waw-'V3KȨ7gj%64 W~vR@ jMqGV:uM=C| fK[^P.鄇g6'L}ŋO]3N+BG`~ }~G7o # )T1ҧpނF5 jhgWz~eb6O-`oDSLbifxڲ慪=&MϞZU)o)r2./1sV]v(,셛LY k69mD*t^=Iۅܘjǒ>db ?F"7Y׼ZjF >ktu~uan^iX6׾rA^<ݽ19'>ʿndfu: 6{_8l^Zim<>fQ~v}N󴐲k )Jhb9t7ʽ8TzJ#3FdV[u1M!#UyrPjx|ӯ1v)"_>#]C5ϙ#ڎ2qr* OziUNtz@ 5+ǥE?ԛ~Uku:tlI gq3ph̫]JeVNi^B3,iij]ɴ}<73r?KNm9玞$@BJ f`䄳%yc.{Ǵ݃޳Q5 !NbyRE/` ͔T>ݜ:ҮQy,@'\.Jy)\tP=%ACfqqhS |Zi1'OfoԺ֣n/խ?bJ@ԂԍnqrN8.C~4KCZv.:Y|E "1kʺ' S~Y\ia-3Loד]x>VrlLy'"h244ΞQ ՅZ>/OYA}3TWѳ!~m ' 6=Ygekʫ&8[Z2'Zt{zӪcq}=!2e\:x^z(R}0rE)h|"Tፗ~ŲȕjQ{K9N^^ W#=5Iy{_ٓ ʚˈSeKK)v9ٳR8]?eNܕ2Ok Ve8MzbRnwOfFmYL/yDŕt_7~kNfMYT[8cMGklQ̚&}[\:tܶ2vz<~ QQ[dԪ_ Jp/"On`{ΦW9y7FB%Xt`G5Ih6fN²zW':dR[&{ukS0D^h=8¦3R 'WQع`?dX[Ø23 "aF)}@f݌;daĤicQ:I5帶nauRgT$fiDe51lG-fXE$j7ɷ ћ4s66 -3G|LmoLl9Ö3(,rz= ԚƎJDDY$(k08+Bo^/ǭ2V<eh35<wG@ÓY7c#YV3 V&@àql`)<̃kX1$4- B՛MRf8l?sS}I ܱig1JJ+ZB_b}4!خc3<(G\q~0UcƑ|l,cM׍OqY.AE@N~呛tDٞ>T42((CV7e,'%$\xAsƩIA\vV]SE".bVak`ˏχ,%$IQiu+όJS V,-Udb1r'w Ij},KuMpÖOZ(H{KHHHHHc@. j&Mƍr;us/үmHVbK113&0n:C#χT+8gr<?ȋ%bϦCV(*0xoQ>t[wBWpӉI74<<#?M0Kpa+/"?,X?vx|>½3oO9a1NSd+_Xd;E C#pñ "wtk"TE[( ԷV݃-,R /:k__ٹq>]+*8>-g$yĿF}{φ *.OuiNT~nꀇ9fff+)Vȸlcl낛 FuPX?1a-MA'W7-b;ik1Du6#u^ݘƽ*DBSP_[EG ner.lA 0t8jg,6g/fNzuK}f=(|nbOߢNW(xۂ_|~2ؐmJ+֖VعŜ/NI_UNsz/kbj2)g{ cI֤Q-٫RXp/38ዲL(ߔ"pyTb{GK %N>u /Rϱ[#z;cmiK#f3Roct:`RrYnc)\A@wl8WlĨݏic8 +y`3SGh|K} _jQso+q켃D@L8ǚvڦ4GF^}">n>8*ؗEJ1}S{J'|judѯzZb,{7'֖[ڛ-dpjW&j.%9oY5a0pWbi޻g> aMSL0y.o_AAQ z2V%((dprz9[q?|&<;NupUX.n id :W<mPڸdߝO|eD % kK ^Tk.'e]#Je{U͍(=p..M%XںSq캓G1ó;P'JK,m y6"^)JU٠-Cco۷fe×^]y&ZQY6+$kĒڑ7z"{GeRY *-l'~.k١@K8 W3.Vؔc*Ύ@YiT_ҮUp\q 7;3K [(Qvr!{(j|tQDH=r s[׳G28:0jxR/adH`瞑T|‡F>V62NZ-P 3 ?NG,]A}Hqs"%ԷOq9A=Q J˴0[,Ri#Q8!f J bM"OB^0o=oz,ϛڜ`gR/aKk0SsMj{ec$  E_QB:6c0ByhMAﯴ?4vdx~|"ZDho`֤v4Y0u6X<#CU cND/=Jdb7p` 0/MɸQw7g #1ʠWV O/2^>T:28[Ye@VƑ6%jh9kl:Jvd,~"FѬNLd;3rr;Xe]+eBAtÆ. P>cbDZe){Ms :.a}9<ʮų*nQdJXD_cǧX1z<=vP}lޛC$K0)a} d lPs F'9q[_ qܑ#g逜hբszv_&/PyxOgPojtRtssG^/NVxFz6Y^U'rtN9W짹+\z;}15 ;N"i.V4&߳^#'ȧt.)4O1"8&>57akBMfA[+!-Z5ެn'/pԋxk<|{őkhS˓p A3c8f#r|K+N&)QQR}jU}Q쒷aҁT4kfR5c6b+gY'U6vϺ&i^SLi9Wk]LnL_cI<(15Jqr6l؜]MYӅ '1ei78Qy=d87nes"o O$#\k /}<ȋfɧǸfC KyXA+Y'\f/%Rh3 hGj" ?8#BkE`<(Nʅ[K$wZ ONB*ą{Tvb,'GUL]$ga<](Г]/u$f"kWnd \Ԩjjʌ:GjS:J@ ܻµ†A!ӹ%#5<{:x7hW!~9qlqj/<n89{SkҒHd}+~=Zځ(Qݠ!ޱ9,H⩳FH-,]p(tl?9#$=%sm d6ldؗ ;Wo}ʀ? iF9Pn*mc咅 7Y^|e%:5pcI:x!=is&$<&`,M}i1&!#&&Lk;4#'!DD(tgݲ5ݲ ,HKB'fdE IDAT><ҳ7ૢӘ$ %qDG)5(2?ϤN(q`Qdr z %Z4 (JݫeYVKTV.J[9:tZQSB6{۠)G1wtUF M3dBi9i1u7VYwb‚)yi-~@Q*2b0cG0ɤ GCLcLjL~̉@U0P*@!B0Q}[-( tWur 4iC缯|]օ'FK3υ`c֌\uCpv?W ׏s*MSIuό prelbC;L]g"v5ZhQlS:b[mHZ Υpӧ[(}(G!o?w#qwwW<s7J;MKos.#N/wI $Ȧ9lT6yaポﻡ6{5Љe UI:;rn֋^1:vJbx{Q#:++N MW&u:vþGԭc{Fe? 9_7oh8r;r_Q2C{)2|B]'Dtp 0sr:X+po՟;20492kgWն¨(AjWƓK*5*‹F_0c ,ԙŔj4(7~c^{1U@KT+v1oy ]cӤHWބ.Ψۈb Ak+x܂=}hAS8/.tMݹhc-B c=;N~[jʈ""(cС LM6ݩY$/B\O K#_Ȱgx(7Ʊg~|Ϙ͊ Nc|-MepcC]Myvl!vQ~bk*l*eY>_Y=o-k/)^-po*w`\X#,? {`n˙$2UY $׭nKZ\!kKu_&zbMؒ1.3p~x*eo+dz:THTmjخc873U;m :6Vu}%# h"{F܋$Yf;KP'e֎%L1RƯlۛR&YIo2z1aR{T b'SIkMēz(Kƕ19pzmc%bĄ<7 fpeMXɣx(#OꍨKw9`Qa4;g줕 o7htjyi۶ w݉ɸq,ѓU)(m h9V }丵LCY1l%5*LQl[gň s8ƋN+YM5l#ȍt0`Toel_mYs CY~Πm mNI H5]XUĎjFOvӈP{Vb@6+KʜivcF2绖̎7PɺL6=oGFO5O_V`Q'61V'ceDɠiacl//`PꔘZPۿ#viBNlsoS},<⮍eǹqV`#+u\LoZ16NrxZede@;#G.#oEdVƼL16}J'X=7fmKJKl Sxe[Oˬu鐲IH} d:ͮ|*nGwX13IiL>RNyDKHHHQL>{G 9r iG,=q+yHX⣐B_03 /ɑK|rt,m̾$H$|DFMqˆQ H8_3#S}x٣s$ zmcٿ6ڕ^};'H\ⓣdB%/?wI2pvl 5Є~Sw>y/bMmUi$o9"G[-V?DhobŸ12$/Cruy`ȕ&rlhi\G~{_vrV߸ߏ?7I "_I|;iL(n.sjX+cVU+ SHZtXty1` k+'МT\ʙ3h?EA$ҮkkO0g;Owi.`ퟛвn|ܜS0n9+Br䟙[#swG"*ᲷBsQ 3J[)4[/"Mٽ/QKfSj7EH;aX;^ط[D$MΊE uNdvC U5MV09y(`>+U߄ 724SjYQ [<1I7[MK\[jIJ^(p~)uK!:^~'GS%=˙1g[b._גpTqF$F,c kjtr)JQ[{G|B3X\N^-jjXoB[Bv¯Zo6300_])VƞMJ]T7ܒs5Yį9pa%2\\W.lp:'~f*7XwĮ 2VjFA9+f_^+P7QQncZRPm+>]}礽eFavV /CѴ2< `g_byMʸ?v3M0E Z *}Z oFՎxiŲqQGJ~lmnN kk;κVv,㍓TzMfZմڒ) Y}A/*y9ju[i=*jO͢ s<(xngE=X+isr S5?j7J 7^= K.3& {a=jࢶCTm{a~H sd-:“,KhY G-v<)tfSdT.即,׌Q?כ2KAھI8nĺ'uP5**V05(8wT !ZΖm'(:B'QVB#pd P|"pƄTj0 y52kl3MmkK<>`ĸnf<ų(p;,B+Jct1%߱xzOr3?ႌSk5S+ZCaZz9,aBZmJ彣厄tC)[{,4rdwL=E/$t.r|5;9zm.S su\-Q{lFC,fȵ/&vP5 TP%?Ш#;NxqEz@WPd(SE@)hS)g ed6KC-\9: J:}6r ı>'I{ˌ`G^L -I2vMbȰ?ø,u0?1#?кu)Fa@kߎKF|uӸI ?=b]I!jḶ s KNjk'9܇Kgọ == amsYׯ'rL윐O?kz0or5! 9w$ui(4u2'd, S]QC9} LmPzQx{J#KYTZ ܀t(.3Cat-Gѷ'h~czauŸ*}/=ەLy˰%37ILܜO6q`rN:v|z9Ax~e#Fm`amjxn>,R mVeJ; ܿؿ?Jtg Tڗ7bJTLMZb5T  ej-( tf`)g{ugoAhqTK2vyƳt&=Dǖtjdft,#g *iPlQS]F֥pu_\o~LRޫzdW525$^}'goi-!S9ɠbyl8BZ,Yu^Yԯhz‘ Exw=# TE@i ? np{K:UxF#+ GHjJW4$x`HO53U*[\#Y4`";OfV4)Z:f}r0I}ٶ\ίj_̖;]iwB:bzN#USNEg\rg ~She/!TpOJ+Y%/2ft:Ȕ-e'+HWҝUUȓ嘲4{G@/o7R[BCʽ9b6VOcPx4w JVlLŦY4x 1=Φ(M[ Q+G/_XEӹ~9d8rM[Hi%9[o7H[?RE1_k҃*SHUJ֢Y7z3ٛzSrUuKSRŌ~٢<0X*Vi6-=LGi(\tH_fKXVF
yprCrҒћ=I̚M\W'|[6CZ.nȢ#ҁ揫\OdWX⍌ 9[lP`f 6!jzN _)MFy[Wo9ÂVw$ {iLܐHC;44*[C"RE@&JFH,CÊx8Q8'^HINճCN&i0W8|/!/^C,LLTAW's­w鈸xG|V֫MT$1BB[ lSyGl<J:Čْ@F"wI#I0Tl{qM2c _9AɃg ~'R.XDo*683\}t.)fTHfiX_V.DWpRCҹ J@1~eF$bs_Z:Ui? kÕ%+Pc:ME@گ#@S}3ϝW( j_M?=Q\fȉZ d'8q)zUޏ ENOA@NO0D;^>OYߧjTlZ !DD}XQ wf\EF?7;$G9HV~ =L 踾QŜʸ|EUd4P[u:?:ETwPUr^-A;!G7GiD|upUr.?)1Z7?|% аM}gFÝK$:קOPJzQ$Bfߩ<2RS,ػh+FxtJڭ~fo;Xv  {7[Y0^~YZÜ4 `ώ<ܼkȓ+ëgŵyqswj3=<=ȰtB 9/.凣9_pW#:ù@lǡ4.%`ܟe^7+Ѩw*[Ӫ_Z/=5N1[$ڗ'ԘJQĂyN 3F63%v@*%wF:%X/a1[թxXA xyZ}` s29DwƼ*{Pkb'Z)ӥ;G ᯕf9Otޤ2sET3vEDd!㓡k K26YJ *k O"D*5ʁa5A} 9.E~ͨKᄿwdF"y$+I\HcG8"aN^#, M5Jզ:Vc:Yh{3M3T Ĉo[aѝE"D4},/~ɬ7͖s̥ Q.LhoӲz$'ǯ|]`q2v\8L;b8ϱQmAׅRƱ}xGZ`Q'61V'ceDɠ˳(C ݉ɸq,ѓU)(m h9V }y(KoַM-B5Y7z2$'\]Y5!/)Tj#2V/Ρ$Z8x.۾om?~!(A&r5ON-.U{˙K$$he̩iFh0~ÞS#WKERĿ5fNd:JN\BB"k$Ey3뢉Kn|ЏZIHHHHH|H\BBBBB Fr_0bOuN HHHHHHO&K$H3Oħ]IHHHH7;&Ҍ\BBBBB Fr_0#%$$$$$`$G.!!!!!#9r /ɑ>ˌs8)%Ύ#|+Y~/tV .)f IDAT̚i$H_ȿP/~/y;Yt'H|3pD肟[uf]"N-{5Xv'0IA4wfGú/1UsU﹛g!}(h_tĶq90"qY\H ίL8_85컹6[&qHΥ+-rir#bX+Q(+g<yմf#n 3[~?C i*=Q}~7e<Үkkz6K'CÔtDEUgWKy*ΣwҸGG!i:CF.ƾ'geLy'`m.֢è\ʍuD_Ę,Z]Ui3|5ghu{Һju^O1YNmlK̦7YjhHέD^Rq.Oa۸m(DE7T~psHh,舋|NggVLD_aϒtq'w Eڌ)1gڥ"u<-ђ61ХN[$b[FИRކfT z[Zψ4S-AZˠl z.1Lj/8:!m>¥~YU wOneX놏qHvIF X3kן'*γ33z&̠CO;¶w= (SQvcjogLnmXS4r,ϋ$Mf'Bb Ooa>xivB<чzݶߔuN /ڻ1gb9g7xbemSPE8eNYeyp4 w.bE콛ۗ57W3leK"O/c|m!~on(id/?L ɑNKJ.EA@0+_VoL"3)ߜG_έ{:'I8R~ck:e3ZDeM4/OIP)ڃ:SG\F_ɁPFF! FL7&|{HЪ)\M:Ψ{3JW<|'MN\ᾶ!6zZs`ĝ.͘y!a'|>k2sfWAy^U,FZnϪAl< #}k0 U6`r;(B"sJ]؉CO.bYF!>FXXa+k,C#Yq D3#*hpf,_5unٰ}cAk =K}$w2ݏn6]\ga,u1gm`8kD`AǓ陊+[@5:N?SX9~zxRy)Vhm;ǘ+Ya^ƆSim[`P϶StlF]re8G7.8 g7qqz' ;β6N8q@yd f=%5x: 4k88@2#b9- NliT%P3KJ33TLyc)\ ;ƻlE}1@Q+t,BⱵl&nuQDPH'پGEE%>&21Ƚ~ A$_)hy]r{'cl 6G3ߎ`15fp ?3:4 8߻/sK-kEe[Z2jaڷ$ʥt2L'A}8ɠb 6wQk>.V#H˹-'u]T {~R ]siU ٢<ԃ}mHMől zՋ`b7䟴u' O 7|8BM&낗Cc\q_ʭGCΣؿ2 |IrjuD4 ~YX&ZdOCmoX%& Mbd&ZW!fPMw}{F͙8T UјSC_ v7ӀKVLHAi-']=WU,sB1&DzMvhZ\ʐ-:e?Vcr ka֨`MxK{~/w/4#}G1{[\،vFƆ́ڍ!̡(4;EUpv΅EGnpJNpy-GFx¹pMb3!Oa ATD0~>-P~5p}U]$Ϟ!E)OPI|Ȃ[vpMϬ\'ߒjNJq:''0X Q]o;nx8;쌳vXgRŔv'9@QDE QL _׋܅kC+>5\7- ;cF&ȗeC ea6.1N;PEj9 mM`AUe4Ҩ9P_ kCH?dgBFSiWyO_ɨ,܌1ޯ ljK׹!ϢN5]-Fqb\cZ24/Ms{DNl{߱̔>zMU$GQf#;+nޅLn1ݔqyQ-H^(r~BQ 2 Y2Ti-Kw$߅o ؗľJ H^{lҏ#8Mf㱽 6ޞ6n~z͏ZFԁٵg{aϞ]|_S"'K* je/ ba?vR Up=GP!&`y{gt2K z\6|j#,Xwr\,c<yt.iK*7켫!A.ZVfic@+\OZ\J79S :ӮKdsNfJ_1jZg<5">FZk_"̶F@&ieD~?uH<ˎK_%G @Q uo޽\-P/ŌLL\ڕ*xp$^+OOC@+ks C@C>,ˇ-g𪿉~8NU ظaʺ&-GyVS8q"x0bۿ)q^wJH``i<1'8x6 [&ccr[Moj:}knHY?F+L01'=cf%M8v9~+ [~F$M;+{POWev4w9 UQ@F:2Ί;kSv3meTM/u+܎>ƍj 7X0`jz}YّGww DK[%zdFu3;©z=`dqT>x1W̉1hPD 4מu?c6+6;]4ue1+7@%M;1mpӧ;#=<<れ<8iIZ6R[@=Nz[2*FۯKdz&SceE^-Cs&C=umc+y0/xZLk mi^n/E(d<NɺtiP1{mS1Hz|s]=3$f0l,'Dv7Ua+6mbvK\?qL9+!TjSv+ű,ܽfpW ! c1A]8Ǖ5,{eюǼ,!udpD 2l9`^aY1b6@"J}S-}w.k;D`dDྫྷڛ*o Vc-CNMv~ `Nqg2#8*U^74˦v*'JWg\rk(워g^LԞF8g8r@fO{0+͆4 TT1lsE'#Xܵ182I$.1WoqMZ~NyUSbΛBu_J )4 a]j8^>y˸84ū3bP;npnًz[Ŷ -*f^p(I31r"SvjCyhn{W.eh4F68Ġu#UFϋ1[Ypw#)O., 5=υ d dtN)NcR0ym(Fpr˲Ϙ+wdPQnYmӶC+R~HC?gSV~!WɵV>Kav͊l ˉaَwP4]׳vh2cI Lj?˜lyXٟv1BY]pMVwe{xgHn_H+~Sk#: i.9q ;0gVcV}Oj_B2_}wD6aXG'ϩB)×H%i\Y5<Ĺ-geH=a{Y-Nl\esߺL"@FY?ٞ#`߉aM~'¤4!??.!!!!_A KHHHHHH%$$$$$`$G.!?VӋJ$$$H#}r4U4Lʃ ,H9QCrZ[cϖ/<265*BU,9>9.akL٠HͶM)Y{fꡧ*3?`j;v&J H?3gҪf2Mnt&!HvKM%'dtljձQ[(z{ʮMs^[ŎȰtŐY;eCڶ=&GWf_|bHHHHDFĈ= |߯OVNNdz3x{ f.{uŴ/~~狻mk"wc#?/@Uh8`)8:o%W>'sm^g^`RU Z ڍM2aHb ʁ4,ぃBM-*@ũoW^,Ftc*[xkƨZF4ǧfov hb7RՖ7RaB:QtDݩ?՟U3,'2mұ U'qcMP sI8eqwaUe_~oHǥ[@BTDTRDḵvlEFv&H{|Μyy}Ykgh?i멉RF{wcRlbʩS&NzTkƂ{t5˦ЫY TkFDDD[wd,_$H?UAawJ|؃ 12X|e!اH,265GOX5Jw$$ҝ͏f1Fw_}4u@v640xj!\MMB2 oޓC]C̜qfQ>0 k ԙ̋4Y]_1HF6@Q<:LQNZ~ $rʻ{,mH@DH)>f=Ϩ&u(L\DD$y <̰q74{ ~:|{̐9biZ)sthzoD#>vw/ũiҶ?Omꁬ5ƞzH/ {t{ kU#D#p!7|N9 ŤZ.>˅8=J'I\J9ZITǯ0(Nfp(jrl BA|?{װ#>HV}V&{{_o<@3.vӞۺ] ~XyӏUEZT,x) 3-v^Ŏɩs Ɨ.Pjh!%83, ?ƈsu8NhAV+hғs+p[Uo"N A 㨐!1 jjʅ0H, 9ժh# j""""S8Zݧ@\xɦ.՘ap5HI&NGoh=* ;ɀ78t]$eɋR!1tpySD..q 1/tpqlYn釟;Pj/}p^'efDU&:wnN!oucak&sGtyLgtNvhUYz]eG>t$[k1a peZwTôj"'eJ.O ڐLئ*ajiORA>L흰ЕfA?%gĵYxY>dVmSbA6ԞيOgVpԪ2u&bQ{Fvmך1^96~9sv\uvߍ]e"8ԬXFDD$O oryZO/Fn+Wd|x =`1Y1 hdBTqMU͢^Lhe i%hi `.%`Q-M RijOuUƸaә}O[yPuP FRZ*a쐩첆$ML Vcdh<,ė@DDDyg?X7iՎ7YD|-""gH%Ovw9x;L 5WHȣ[:{PjP "R\".!%Pi IDAT<""""""0#/EDDDDD~a]ć """"""$bD.""""" #F?ڙH^"F""""""0#/EDDDDD~aDG.""""" #:r_ё|*lLk׎a (+=2pW}uQ˴a8<|#g?%TVy a¶jbOiH!l͍12+nj[IL-w{5ONmf;$*rRqj4?7o`סk!Xܨ a[ˆD͙'j`=ԀfwY ȕ1*Cp\":$gtv' S,)VKÂm.N8%s3D`=6zvr+pvH?*&lA^aQ=XK.qDc f'-1W(VN8['-bf"bY=Bet/g y݋9;S?|ڟ eQN{Һg39aW뗈Լ2Wn2Fii5;R~ĈmJUY73U#ڀvf[ Tٞ%ܰQԈ1{=TpF qSL 144ՕDpVa+e.0IH<ɔ{:ben3ūd/);գfV8 gN)d±(fqG7! ^Ys+ct\d4!(EZWѮ+ 4tZdt2x)PXPN%(yZ^+rV2ݱ0L_6U$>wXmb0T@fvV'ı_ ;Ybfpy/8K\U8u,KkڡIQJD*4\vTw^{nDg/IjЃjA>(05ٷ"Qzsv?f0>.֘*+ܖ*N*RP Uw\aOʽǨl+u&73 GX (97EW&rfEq*$膫y bT(CSXy 6b, SoF0UMؼ%zE陝|B߹7TBe5 ñB~o fvAQ&fRɳ,4v=81/x^D\E֍Aצp9:_?]߇vP{Oƒۨ\S}՚˼)."+njv8O|9G]Ęt`p̈㽙32}Vo\iw#wv2PdqZ }I(}XCCf;'_: sW":($ յ@wt Rw[2$+#>֌ 3} x{ xwr/BRc##Q=v'a ܰ΂&$jT8N} ɭu ߗ~\x˵GaٙUra4&7̭yXPSTKav">HKjLQ&DRxʲ2}[415Ѣ;GPoUgp'OvO`ҸTBЗ|mwGQf"{B@lQN>bh|šV_zq%NnEkzI`Vb7N؛H8~e]}C7T%1gS0W)}ёk\.Ź7Y-ˬyW(4Y#|ކl~vR>"4ri쀛{K Sv?eecZ (/M|=&3m+M3)xMNōWI{\2sKjԩI@DH)>#RLb~uddy  ~’S3#6b|4296}E;r)QW (V7'=a/5F6߉2I!4Rin%¹>vF /wb\Rme zhQ/5Vbrv顒}ȥ>\5CgJZbY1yzqdf{\d@h^Tv UOlX MJQ$Q-PMܾ t9b-ʕ F)6eWL}`M~[X>Cڧ2 lpwO7c̑ݨӳ3@ݒ<;X3OU[mI&D ᡩ2)KqʆA8ڈԔ"~NݞgK_46fY$`o;GLb 3Lsb!QLP14'"̞wLy={cQ.oSV}eBB$@y1IBB@aɪJrsR c/*0hŤ|XYXaKp`jV!%)愆{#~KosNB@\pȖj.7Mj̭/U[p+2s+su[ay7n"Q%}%1bǶ<Ѐ+3A5tޱjP]ΛTQ \?R# l[\G #bvdXFo YngM9˸FݰgGk:.#C:{BjUKtrGS0y #!̬kIL!3kٜH߶)T d ,3[WAU92NlH,J$r 9j5 jx%^T?W( d֓,$I.+ij GK@Vg$HeR$ ]ەC2h C}Mq+];D"f9A""#9ZhjZ(~>vFBlvZ̼- ǐ k#Nnb۝Vn5(ܑ?ZԪf]3}]?;zR(;bk\9ePY|u|ExŻJG"yQIƢv/9Œw욻k*-<}K"N<9RL\Vvt@fs:w׈yhs:#W.u]HƓ`QO.Fd.zld-7=car;.)Gp]O,ߎ1 ᦫƅhѥ]~n&kMq߾VxGU9|fςrl+';Of4wd(4%5nYO9$1"t=f3f8Z=^? Ft/OTюڽh℞97ni"fr; {`Җ)LPS:sK}K&^Q2^~n.\c+k!+= ˆQcQK5g%/|teb%C$@gc`77HX58dfMt*#)з zvߚkԫ!FPɫCYjd#C;u6NԀShJ{Òh'C*5!D!F65] ʡ<# bC[d#3tҹǴFڄ*KO2qp^\ {J󢕧Gz,sRqQ;.U2{jVff̪=ѯ^!ף0fWPVuTUc7vɡ9ܜB1ˈ-T%[ȟh+&xY&lHU$In T\>tcΚupߣ;s"7jqfNqFQ3e TO-;)Hsas9n 7bAx+0E8#X<74_1uLj] DGGHL2~n|MeɖtDI~=)Y3w|[}$gBmlY 861mm泤pT+Hy=p6"^)>a=yq ewڦl1 fUi>cMdTE+*׋5#:SȍxBjձLpm؂i݉ڒj7EJ0yW^=;̪TוL _%熕<687D~~oFt""""""0Һ/ˆsq^j}`7g|&Kwɚ8w>vf/)Y(o`服Do!7πD 'gm :gpIp- $:88`oy d@`-#3G!k1s1qQ>vTu~2vwgY҇!+̱p*J9엺oF|3g@Dh`13ʦ&c教rm@$PqmVcOі=^3;\_׊$ZSSpZtk7G i )Ɔ~)kQaV.]*0 # Yx5wkieAJ@gs M[ajnkz vS)1\03¹H8*ZhSQ*wKox=Xa\j=T'R?OGM1px>C{m@mW8]UTRhFNhQ#,- 3 Q n u03uJ{:baff{ۉ_KBAud|o7c[m7e&6b|b6fL:J}w]S3FX.Tw^{nDg$ 0+6YǭoKdt5cYZCCC M2ԇS85ގ(,3dKrX)< >{UݚA•~TʩUftI[iie!Fv*J;L%;u&73 Ggk:ҧFvڀC'75_2f1* sSs\KPBNP3 ]XoU|q0Dz?u&M d jY*6Ff|;TgDFY٪suytGwY@uj1Y'-FCcMl W-OeW*KG0M[L}h7 ',$<%5WF:Uy>XӽLۋH%ǧ%1c3"ŤpmzLmqW3|@7:YewȒqϋ4˲xúq#ڴ.G)rgOjߎI~FgX;m3u )#9&^Yýٮ YTiuF3YQw<Wn]ڔ-u;} ކ*nD gxϧ_ %pS@3 CD/Q;e(>OaUtSuG>g$ޣLV0Mä́quQ",Շ9tCEqwgP%Ds NS}j4@FZ)-f[WY7fh?4ZMbqGljDWc,ȡβ° ]0MD~)7㢃d"ōSxr-&_$8(Vnc: B'L -7dфT;zU+iW7\0hq9ϱK5?!'ְ\U_ŗrn!S˨|%#g|b!OXq4Z{?|]c&6]쏯o DIwqOmXiIhZ*vY$ku#X(S(/S~I>0j׃yR0t (/M| Ųi^K c6JJcy;+2G}w Qg(%0s9mGq&/rxߺDEJgQ8GPMŭUXMp1 ,ŗ|< UWr9uMIDdNŻ9Pr: eũﯓ1r7L};)P`$Oc>,+AvoNȔ9yA8~0rH$nSb\*et@4.q\<5}%/*`πJbysғ^1_=oK t"M W#N Ou9NPwڝO(R&퓓>jQ"?jǨZXS"5i@lѥ&x)KPSBp9Վ!_U8Ĝe#i:Խ4 V\)(p0z W .t=Ңlgmv~;!}ĘR`B{zD+0l>X?L=e|0yǥ ׿D^nfa[T4J `۾ח'Qk*T"BB A mBeH(`Er4VRj8\[p8̟B[Xiy\(- fuPHucL]Lexv.\.GnJ@"2jnee+)Uo[FT\n y 豷G/+i~ALpf<Fe\CP# zW F|^(2IJ)g Ȱ?5]2[5HP6kSNQ0îU7%Aa rR\J@"{ٱWdtBȤ1)['v]PgSP.wk:,lN%txCJsX|SB26Y!FyDjuf-39k<49}{gaR[saF;v]5U>ܽ\v4tҵ킋_،+^ʛȞM ݳ(,;=5w7R&6]5R^^s%>N…W?r798sȇ=•ʭȪ\r^4q$c$VpJPIӬ ɻVNvJEWLtu*Ԕ10{wDlOtH:h@\7~&wŻ'7% Wjd-7=rs62ym:Q{Rd]N|' B߃2%-P߻{P<ɩXMK121D'Qjc1F?ٵZFGYِQʻx .:1gM:qsѝ9iKCEhҼ'uaDb>/ $f@RO,Y6s$k*bw$DXf`:ԀShJ{Òh'C*5!D[ ʡ<# bC[Q7Ʋ`2NVիe~|2'pè.$>΍ UYz]eG^1Kv XKɋ+;.:(*~ #1OšSbɰԵ,/`\҂:߽9y%r"F_ƻgY7u!w-27# $Tޓm]wZ e^Be99c۱ MJ mWlF{HMϓ0'r kxbՓyq ewڦl1 uUƸaә}O[yPuPt\1{#NN/IobWUKz9y#.e`IRj/3)rM[ncUu:ijj°QoL%5k3X}2Tn2,X3|:SZTb~}SuƼ5 9aɀIPC eC]tsAڷd+Q ,:#U! m̺x%8[RJ}d'Nk:64j{QG{].DnZ*Pk acٴBt"B~thL"gJ̩;e) aQ&x/Aeq3H̹%F4X#`ȿ/{"0^3c!=2@>CKKEj 5 8f3,ýJ:y/B~&˒rjUwSu1f*L%tu0[A<)5q'Q%H9EuXa/{{¿)=N{lQ"(I޸^wB)֮~A; ̤yװm8<:>=侻p貓v<*o)ĬuM\3kDY$EԶ'87/`g8  X"Bf#'s'&Q$B+&kVa%)Vj2|{1E>C#.ˆˆgB ]7WYT76agg@_K9:"F0YGbM7oyg?eF"٬O\X٦6x9c_`aäy캖Ieo@u{ ]hnT _0jwO?": %m1p_redINEc fߜ57^og@\u;ٺj:m{su174?|Kfw>\uU3὜>E 0e::0[+RKf3oعW 8vOYY:ա[8UMa,ٴ-+!jՍBemD sk U工ȐOx_3[iڃ|+DkLIAt+{G&pw vY 4?Լ2Wγ+cr2ޓ=QODmWG]|^5qj5)y2H8?-T;kiH0qo>Eq u4uq 8aZ;7uʬՒt_Zc ֺҫvyRy5igr<z6AxA5wțA8vMB`vp%uyzj-3M`G~qCn@Tj֐\<JN CC3N GP![ k\Kc;fE1A(>X8r߹&m*x))ሕ)fV5iX0XtI^} qYڽvXXDD]=pg6Ղp"cЧHemnFc3u\B>AW!v'}Z/dRyd30pIqxŖ1o?ALbwoV(BR?Jchn +ߔsywfoO{TxiMC7V.Iv緥2,=)Q)8ގ9Hqs": *&rˠљUrhnX):88#ԏN=9CK!3!@DN|u '6q&,s ' ՛U1o Y#.4psOP{YjG ~Is8.f\_1HF6@Q<:LQN.CP)]8:7Rm_17L19'HN*թL?aI}h)wt?~SX6O]->gy6N^-^?*ȂXO3U)i6>|9R xB5 aƤ<}i^K c6ibKcy;+5m̝q"S@NH |]̜yE,Q<5L/Kn.W7vi,A;|T8fk0sE۷,L݇zxK?^Ix2Mp[=tp XpnK a" ԕjrdbb &c,P%K]Q928e>!P3%)˧kB{`(xsR伬LS)IjÔ1Uq&923)x!p>v{K4P$٢fdj;G9ZYэH_D.RuS#wd,_$6~&ۘ6>ݖR!ܻ FiTzN\ +/E9Fqgy]o34ɴʆH峧< 0MW\AjTH44=-Ktꁹ>;[8Υ񯷾.:fp(jtG1sXGj%R-NJyGn1~5Ϣy|eQRx>QAv N)W8s!@?+]dPgR)pp*vlf 8H&hް<53iaJf5'}]~fY_'W۔8a)~Up"m<5vXS:xJ5NbD@7ҝ'Jf'dȵ '(oɸ/P2H*;e\o/t/;,;$wX׀߽ HUbh4Vb[ذklhbKQH~ Ey3gfg̜95&2&LǮ't.Մ)9!*x0MIDL.1 NDi_]\ xeG-gTZl0oSNCtIj9 8jrpϥcne3#Z@BBll%@|h˹(pk#>US"9Iw7F<Ѷk274o$: ޘe$ By".9K{s$t[395+%YSYs(ҔrCA|}GGM( Z@BAQ떶\eaH훸JJI*%IeCA}󜂚Lx^ȭPyB<e_r-BȬ@FmDR9 yy[+ riZz*v_;T\k[۸<˯䕙2̝4z?z\Lqs_`&9"7P"; :UdTx䮓Z^^sqA͜[ hXӓX,!SO -rec$Hԙ)̥w67b;3+j׫q`s?ٵF՗QmF0RS~zQxΑHS7*Ol9SG.><9Aty^]dzVMméM-xb ^&#aa]J%J)Lf爃LMtl"f_7/MďX!>^x+yxwrN7QR4'f鈫.lUi)e*p< #.Z?[ A@;ޒ`f9߼؉W\䷍z\Nj5Ql~jXkQ]OzYKCuFoH#=Iz0E+ؿP[2_o9ij n Z|K_pRXE.jn0?p*""NbrxUXƉϏp蚒 +fX7BfSC<~!Ҩ =;q bQxv+:N=[$VA|ΎL eJ@fHμٟ *Uj xc75w~hu+3>ަLiӃE*HO=(dzm_,о$oB[I'έ LQnĈAmEVq-ݗM?9dv4ʼЉ+_$0$#MSC[@v{;SƞZZ8 lKܱZII(dU轲tg@-|g}iP^cS֟ U׃c$&ĸ)$ MM' ;T țYIu4Arj霡iLdcz1gn5'=CVO X2N") 8|L6 ;kVWCՌݡdTHWK13KTZB X7`V˷Lq5sBh(uK^:U;E|$D9RL&$,y C[jV2eViTC.Z1a*+i܃ռ{*QnfOVb)kc;P =ZؔS^c>h)rU*2TJ#L6P씭 IDAToڌ-qq3"%ZReWoS_Zeԝ'׉|b(ЩWVBj:gęD:e[=_!L0ƺIl;nQa)jI#Xԣ3 2F2,-gRl FT s4рQp]ˢY i͇ XTεm'ZQ*[ߟپ΂gӣY4'dw52f)r%lgp$jѳtſd.~㕻aϘNYy2[B57O^EM6g2+ڷ/˛Opvmcĕ 08s JczxQ/@ i] o?[qxCrjh:/ /Ɣr4&(TT$ppx4yrjsUԘiXdF-jg|VMمiYj\k@d=u0 QPyh(X3Yɰ{tNHA}Ĉh&CRk~}%Z $&!Wm@- <61fNf[QSDZ/E߃kj:~h̰?Wb5i5m?ݪ:;K0 wTgs+8xj$er\;-a} [Ѓ/q* GRE `fƬ2 ;lPL=~C:"Kvu+OߘADhv:t,}/Oe9Fi]MB:!.._WލY^S! @gZסC:`t':tС F_# Ǝ.j2'0rHm#F~~`y]l":EE"fgwJyB-Ϗ-gsDnTίŲ_f/53\H".>gҗkl>iqA,S )+E+,--V9^2Mze݅Oշt&fw) Ǻ?KY61Amֽ,Z?i6 +Ӭ'*N^h>l;yD.p||1] "bcHƊ_cyMܾuW~ AB=|wtHW 큏Ĩ?y>9ּv]eVbp%>*J:5QW#-<ήl֕P:Vӯl'3Rw㬙9i/Bm߹_F8X6)QZ-և3c0CJgv™cEk  F|oy7ZˆVw+0+e]47W3lU:fqI3b,eœ^t2uؐRSY?Z rAX(;;qeJexr8qP r$#8_w0NS#*3jeӽUE*yb7 ʚETY)[:%h'޵ K񜋈D Ylؚޣqeya6hŊۙ/uҤPX6}Jl z c#pFLw%(v*<[3jmR˔7;S^,FG0SJ:bcFJsl?:E9!0{[>aǺ$2U9Ɵki^ۍ< ɓ?7N"*<(rw4p&}_)yE^; &Pn&޽PƁaݘr!cd_E5G`-,Yq0ڏ< scaMuźRrdV'5˧/ +kI$&uW!3"}nv4oa-A|Ow}xyp+bb́9dD-&EW .rnS8K bSAW'ϔ E /CYx93s}Qؘ714m5ߊd,W_2hͯL>c:`alàV~*9}4On߻1Y.yrx=>"/Gp6ƛ7ur~ljɅIc$H7 З$iU$ a],fqm9"}x'_2e:V9zloJC rq; h#&nfӒ)b;Lbz%!]ŴL6ƙwS~7cjSCS1j}e#ƬmӚ88Y>#[NC&̺#R8B:XMr"z6rk`*lcoY+"1p^[ϴ> .e激~^ 6߽S-/CYh{&约ՂPh@579xv5C|Eۉ-Ξ3CxVvvM-wưF)R .HҊ  fSfEJU qA X?J^C,^ub}0tFܿiWC%8pOxEqW MiNJU6}YƏO{2Ҫm:4Sq> [Á6*F~x˗rhͪfzsUr wWd?8I}ZJٻfES,nfΖTN:ҋhb"ӗq "]T 9aUnKTUJT (!cZcW^A^Y4? s=ќ:в;f#b*Q`Tf>ބgɯ/IQlppX _q^ül35ejԠbA|J<54 IO: JiPH aWdaSL.a?n[?(pfk(gNEɝ#eӢ0*eӓkPCF1)]3s\ԏbǴ;{Xm@F]c=?P:S^5bP _g9UY᪄Ҿϑ/o;o_pvkSSH@Fj&D=#n4{?..}zflA~qjP#21 Ѹ/O"iysA 4[J!<&XTIu"b9NߵrC ~Zu/lbXuMmI3fT+ X`A9;^ɬZRIηrD3B1?07t>:V }33 q|-w.]S\17F#+Q\ 5-,9)ߨ?ӷ_&#ýx2o\imns<+pVbH.p{+H_RڍT~ J΋>RF= "6*C[@ϰ K1/y)EyTѼ̺(% ƍk7Ii)7xOS+8WΡwy;, Tٽ\K=m}Ww,XQwJ\I 㿰͐F.;LjۓUс 0ulUN~3?-4-j@TBKQ)q-̒/b}HDoOѧh95{w䳩HT$" ͌-Qvw0ͪP;߹eU$t\~>w6W^EQw\y̕15H~Z=܊; N%(*C2e2x}'A"-% 1wv"Ʀ`ԓ^wX>{}A~VIH|7V62. Vӧ3A@9&"MG&{g>}%7c; !4loK$ǡfԙsZەbL&Ykʷ[72/(}U? rDD_WO_ZYU!(Q*$QHSE^;6͈Sg81&I*"I$xT#4sYr8=ܶE}aB07;kSRMbKq\$W2VY s4Uhj-7i]J; o%NV72oWzr.9QpJ$.׳ޞ-cAC  7M8E?pqHZ9`w `T|&TϿȽ')F%njF[գM-/`?3EU6" `deNVnS_04ƈW'[S'y}γJ3 3jtx} ˏ$q/Nߵ2^޻O\Ksg+x]< җ.!y]pq=}Yh;62pjzӱb|:ycW)wC9tw<𠔗'#Kn2k9p)q:*Ki?ȏʛ}5185HпapNr_G7رn-* =ٰb [U(n!'K$L&@POO;ʊLn{Xb&aXl*m:iܡ)Dތs׺̱-`7Ԉ=CЪ3B̍世(ފ,Avjn,eOnTo_NJt掙O"E2?eWX<cR "Úsh2ϤjQGzA5Hyog5}/ >(5BIj^6ex/*C^pPWD- q7G*W.foil >&uA/|W+gqxA#]hDC26}8 ׯ^#YVˏ߃,c`lq֊\IXG5B0,v=Mp^DvjcYH7SY=w,R8i㙭bRN2VA`,qr_]9e2w+:"{c"0Y߫joK2;i͜t*1My Sz*fN9ueT#22+}cݰzY?́϶}CԿ el$=86 ۲%S Hjm5O Sau4Arj\IܱZII(dU tEd.R6ZL UQJ5ex1zt<3<E%FָVMѦ3raMٵՎ1W244JU.V*ͻ3Уxuⶄ6hZ^(ͭ)Vz#ît``ʋ*E !)]1~-%MnS61ڇڲź;+f-%RSR [ކS)B1Ӟ.LU&6.2r?f%qpt3"хuG=Y1}6~gd̙џ->n` GÞ[ԙ싒,e^i*IMpYw F&Wj$x4Y0blz4Frו,HIO4V~HZcij\`= 9;пR%h16=ߞӗR f2c]P}F~] e yyl6= ԅfs>16o8V$`Qm";תa(vTV}h^tX܎*] b=zw2O"yEfߜL ͢ۈJaP#2?EE \kɫv"p=-_<0w-Oyܡ`f%lgp$jѳtſd.)F]3_ڻ̮]q bs7.\Qyu|)a_/cG ¿;52cz^tеK_<&I257cvlsv|x_]׻N ^-nV!Cgmes& ?@ulF9:̻R\ל:ZWj0[ڛ:Ӻ:t;~C:t|ċs+;~;LHDG,b;I)FY*d!tu;H Y4y+|!:Eop."'ѡr lQ9ewÓ/HwoS Gp#J}!$SeQսz% 5-Ȑӟ{tO33Z<UKdލ1}uJӣα:+*S:2lq}ytNǐ0Tnz}]ؽ~6]+OE:gyx]# ͱ) ?itOb5~gb"f`ϥD\H%=E[^C%0KiY7s#{na-5d[yrl.}`ʥUڏ3$ O@ 8nǤ#s)%E*.e\s-Kk,S [&Ye_]q.rw֢([;Oto F5oGT6{Y>ԜMB2BfB\mct|uchnl7ݾH͢3=mDnzyyH:>\HCJIciwN1{ ,5]|@O'o~lL9̏4._uώ̫yQFv[Ũ-s1Bu1Zrs7G|׿a9C1w1btm]qAzLڵKJQ,с[cCX %H1ЂA'<7y A)fHTK"l3Iө,ҮTuu#$lKiHQD{'c E-P|EAw 2?e=Z17Ro[g }Tp?B"WHMhP ;[=h8ߴ{ۮ%Uع78v-*U{꨼D: qbZjYe5\w oIgT*'<ʵa͌9p팝}q5o)6fA8تpkQy'dR_8c6k[4<3VpTamHɖ˸\\Fة nͨH=ˌV5(W [kl<8K~MU\lqHYg?h"O?=RV3lUȼW|=(R]ӎdd7F¾9z4e)4$ӌ] g6Ԙ"P6~\ȦkSDeŠ F+ɔNLF IDATؙS۟e/!,(TUs=^H]rf8,q0yw *! @Cp55Gfqw'[8Ÿ́ X`WԔG3C}%cۙR;73|I_ 7CU΀Y=F/gc&~Mv@UZP)Q~Kg#D=BUْM{e1Tx3fM $[ ib968yqmQnWؚS)#yw-=F6fګ"ߜju2U\+EQA'"7bc?6cn!\.;_僩Y5G ! beoc^4U]3ipM ̱EKtݩ[=gΦ->A _Su"5N#Y22aFH Gu>Cpdhz4N^13,i0 '׍slқMJ-$|՗X1&2?kax?X=/0)R7AJara%1vv>5nE/a[QC':߶zuѬy_A_?2?Wcw,NP! /N۬PLҠɬ7ɡٌـQ5C Ǯbu)F3N35t] x2Cvgy&^Y289*d&X8  X%'|FNmeon=k3, wܤ$CJnNe$ 6؈`A;qr4^|e-p1"Ռ_L.|+ˤq:|"T^BQt!=raS:&F(drVh"zKJHJ62fm*g5} 5|e -I OfD2dx'#̎&X%62fU:NTYKu} {Sa\H~?D뺚0nC  %gcXcO4f+ֶjHE2M{ͼɏh3z׆\Oc:5VQJ1"T8=[pUD䀡^< mIY?kɜ?q1u8*@HUYf{z̹(Nr@gQBeJgo*7gsT׳\Y1+Гuʔqdz9t6=seK|FD6sRۿ vyi'^IVP1Iۃ{ `WdyLPi<\Cݼr 1R.͸LGhVst_@|EhFHpU|(?ZnζL;46P`U]߰ys0(L_iӘk1Y~f),y+@|':;ycعh;3;N2 b^x O@0r1_gKzaɷB1yRWp( [|e`tyu)@3[C9s. mqț>1n2Up%xy&8CrQϧ~sF3 ^~K4ԩy${58pH/F2hp(TZhqUBiw'V> Hɞ kQp!DjzT~` -!cwDrjUx;=Ӏm jJmF] TϜih40IɼE2y"2T*Wca"5^ʹəi%L93~h5ckn~{i̴Th;ZbO1V" Q2 Ei(c~ր=t6-J!Od53ߍ6[pCb"/X!ݱ7`!/=RFbDFZޝR -Xf֕S )6hQh2ToC Z8w""hѯ3\Mxui9? mC[zIJ"-3F [~\.=IhyO(b$ JZgaˬQY GŐg_9k;>oאئ?!"pW{i/y$Rw7}EJh^HhTZVз)Fs^td?էkfYU =YƳ,dR0(2^ā5m|hxwL6rF8w|w׳)G]5@oBOdTSoɍLY\\\(Zm2ײUxh+cðrd}7ߏ!$+ޢhT6uFϝkRvV.^sv)?O od]eGבDrI\$P1ϱ0ϐH耒D&@=}=jf=,(Q*̲~\ZP*@͘[?9q)*"Os)QU[)V]whff\_ٿ^E eԶ$#9ImYU(S𱅧]"  f`E^ r{Ry"ԔחjO4Z9ٸ^} TRo2?LkC )QQ>)N廤Ҫ/O-~I@? |}x+7bW}K޾nZJ C7?W (Q479qDȦQǏ?OE+ؿP[Z R"ܗ${Y3k UA "<ᓬ&ǭuo*_SE~(NY'GJĆ8;cGJSS/OCߣxʂJ@IPqNp&k?O!r+lDrdp'sC(EF +5o織u4LJ⏛'EJ#(( 8b,pGlˡ3/_} .;CR3?ORپsa֠zfςyE|tUG(툉åш)d/ˆ|Wԫ7[=Z/#^@=jYcCqPbZތהԍ>73o(CzRژP%Ղ;h#2KX!t_7F)$ MM' ;T țƩIu4ArjLcGç$U똴]e<6J|˯~޹_đJ`Dh9[k(˸~F{ m~(C-;iX<͈1Vj2MqRD}9wUYGri O%ذ€t[@}mqċ3J{T/3fD{C4ߩqIf><ҘZ/sܦzu` S\YL#pT쬦<ڦQw?2"_: CC&j)0~bG\! W(w/>_xJ@G5?$ 42fu+fxpF;dCfiP`fLa+DJLeӘ9CVȐ 6_@k w5AfG0 iՌd43`!7A"G!}uc Y0шe/N 5ժ}⎂5 {. Og4d}: väp} T ZP2@B@d?5dQftIQUǙ_0k>2 6=?is<+ELxSa6hNBy,o\򚔨449}.ú& dtHIBSz|=sþgVDES4>3;k 3v5_"ؔ>>Ƶǥ2lQfn̪^qI3lAZP,I앪H#&g:t|he̮mʎI#̸_r:y[0?k47Pz6dJgD?O~MG1;VͰ.M%sYOFuJo(э-D֏ťA"סSſ-8qqM^c֜T &'y"סC:`tu:tС Fudϝ#:x3~<grgY)=42wQQ$]~zD% ( " YDbs€F5gÊbskƴ3q~ yΙs[u;~[>xZr&߷OcցQㆲVh['lԧyW]҆5ZOWZ`ս̎7.¡[o +Գ?g߻lH}#/*#\>?ɗ0k>jLs#hWU~7YS^XZ0[b^^qvퟎ֐FhY^w窋>4QUV +K.kfUcL_$9ɢ!+H~+ vE)]=Hz b//fyai퀫Om:\Fy`g+ʎ 'f;4NPǷx>΅KN.nAhg ".H~Y!4Tk+v.kĴwHp:BZa[ .숣djF߭'eMDq`>TIxY^ 7j +ޝc1s"'6oK.kxҐaG9ԻП-9gܿz%iA'x^%h:NoyvWNl3e&eE<ԅAc0:YrbS{~-sqvu'#RSSNukNP(p.Ӛ7˔B_$v ,-ع~a>B27#֖V:{v/>DbQaf/-kL f *,sȹ.s;@aacZ1儍52f3rWM:sncY =ǥ(A&(+h/KWV&X[blL@T<(yopHUEb! VŷRRk4'vV}ю(T*)ATGj0\}wԔv*9[9KѼDAĘbSƆ31VжS贙͊ޑUR;F:c(L2"wWѽ@9we88%~ Xpr [,Dh̡.Hlf64YŁ~.|2v)Lж8e7d9e< M1Nƺ2|t7 FT}l y2tl\޷==Kޒd47yMp{j.p31 f!0Y@C54* W2;&3BrdjAF} 4]O_7ddl*#%SB_BX}z;wk!(O O>?jQ` {'ĥ0R {uZ먹b&;X;/%eFqb?5PLmg 2t:*o-J};57V㠦(_Z-kxϤ"ư)l!8IJ>#H( IDATYKW[I{޽~~yJd8L?CeKQ3acrMq<dy{}j4U9P=H =,"o2mdZ[ @*8%W5Y;{)EoVitw5*;7FJ*%/ rZQ,b`&Z,JlkI `W]Ns †2#ϠL|Ƴ&]dfT-B^u2I)Y]̍+^?zsR)XR" +V2~K3k5\cII()Co=^^#1/ѐWUŧɝ+Q^̥sض5QDD@Ń=¸17ĺ >-DŽa4EOwaI5̿snRãzXcnnC屼Xssͭ(mF'&&~΂J^nH%4zKWy.څ^{Px-h9GT.7{˔^V2@i]]dz* |]nYVyS_!1K_S$zHغMJ$9y*kZQ%rz#Hx#ǎee)ϕRªP RoL@ז&$(׊rrbC&Hfod(i&&:f9*G yq̧!e)m|eRc\ $ iXDo>37~{uB2#:S$w"pI|OD$2ЀلYiw@ HZ3#G&hQ]ØKj+eJwj%&RKf9|*xHY@㛖Qd*lOn'bd{ЎViKcK_ުn:zw/а0NNN~1ɮ1R?⥗VAH򸻸YѠtq( Wkv_d.x1|kxv(W<}M:){ay& hs$Ég8r637wl{:"xϩ\7O?qkHb"#8cTd]"xz\qH>?޿ͩcʹ3yS(f˹1h1cd93-wR Yr\M^1C5d,=E4.J1w*5,,]T !8:La#Cvѧ$( 3|@ƤPZ5{h $J$"3ԭż[hf,ŹuG*j@'[}Dl2iLlE G 9F!GW&$ ͰtT8DXc)cYq=E?f{=3 srt #Zi3$1oQt^‚ɛeFt)u6g- BWY~KQ {-ڄtfmŌxl1>j$e{C~b{֜b9~#8|*/䍎vLoldRs̳iلُk K<zXںPF47ii<\B&0N1w5^H dU1SԎʦ|J|7&׿8m5c^y lS W<>~RУ2=/W=Od l:h6&5st Md &&4p*<(} Ж*o~i8ufǎ!bbwRa`J\rBss~/d! +;E= Jf,4UQj ߒi+U1vD1@DDᢢ_Wx*c%etG]ދ"V*ʣwDǪgL*NVmE]Fb7 aCv1h[#m 櫺KD`7agr0h  )~&xx_2hk0fRhR8ŲQ_ wRTӞy_kرs=w?r,#8,HEU(s)O(ng2*@WǹB[&|̣_GR;=d kmT[V)Џ}[|ǁ~X5fG|nΖx;RMy`g+ʎ!\Jf,!{^%V0 {KFE4 gal,-vpR:I87|"Cb]cV7aV@p׭t"`n,#4"$r"Ƶjd:_htin6{gHfFv̺I~x!u.~$#ΔeXB8{ c|RS(3/آI _і)Ks| ȔjxU]Ƅ_`wzw9g7/K3RLMB.Ɍ׏Ҿ veH(5j/75X5AHNǥ ^?jJQ}(\$>ŖFsYn[lx'z-Σn{γXx,[˱D')=Pbύ!>M[B֏P}K2)LoLfx_g;,-Lq(aȀyr4+ %!F/5Mq꫃R%e)=d$e`c*q]CQT6sK L&Fڙ3ƿˉx\M0ј?ɹ!:Loa L6>gnnB&X6nK츩V@=`F{΃9_r"nĢTw,@>:7e]nA-ڴ6^^pD͛9+=|&/0/Hڻ߲o| fԲ"yL؎Ѝ•_6QEcFëU dtC Ic-P([^ K(vٛ{W8O-laTg•B>:jnoe#b  %NCu/+wˬh4i)ϴY|7}nIFxH kդn [9'O)SˋPYoFKD#y^ {L5$!UܕУ?*WŠsVqߦc#6ȜdbD0n2gG'@ǥu ?bǶV;TL|fh-J_'5zFr6U=[( [\*a¾'ߥ5?iFNF@P.45߳eA .t_·U'/N`KTCgcj*~I`d<һf>:jjxw\sg%(ʩp搾(p;Z;[ϖUIP_g)L[Q*74[p{(],j}z͓W\ g`P/eY=7Rrq6=2z5g,1+8M|Be|.Y"oϝ榬^?XDNSjX^Ȇ P[Cf. R=GeRT\ڨby F<Up Eσ*eMxuwT`B݈Z;9TB5 `U4RuR*Rx`Q>'jDN93}EKހcS0:UյI2{mﲨ}cV8m=֌*zٯ ehpjj N-Lc!?=?|9[wmc^Lyʒc)Ёy6exj1ydu,K;E))Pj.jqS4S_`Hڽx;weR=]r&+rE Me۟R8%~;<ƁKy[i0l! gǵocT`99"Hx~ qWߛ*4JeBGKMNs%w a Հ{EKm]6ԩetӜzo9ҏI*Q.3їtPFnmJ# N8z[`ޚ,]qW(FOpaZ O[6m[@ߙݡnʯ m|.%g gJd jl1Y+*%t&HOe%tޭȫ)iTMD@Cp69JJr(N)7"],k駗];Uȁ):DuP@e5os\8QB=g ?xywPFSRQWXTWITՓro^󒩬Ou(3UƉɩjhU VwzBa1ψ3wZ/R7/_*{c&,zϤ~ҔԱ + Ze>ĸ55/3Zڸ+QԦ6u%+w#hRO6םL}5A;zP,^W/SBU|Jڕ·b9䔣DQ:=Bt@ewH㧈]j]Z5h'n g,_ žb#?C9Mi`]:~ Jջ́v+/8feY m*nݸWPnu޾]5v.sT@@kQzL=:▃@Ԡш YqPPnZlň^)| : O8;`oSQLrj5> WP}{ҟJ}2:%a|Hpa_k6G`oDkG?%5<\Oz ;oΐҮ&7vd>}`"bm(#|s[Z*7_W&zv퐒 ğᒮ w/`ؗXXoޤRw' :zT%dsO] @+$("WfD Ͼ$z|bb,kgY#|1̫Id'@/9: -oe-2x1̷Ϻ ƵoWϠW ٛUR!u棘uF'3"kZF~EyU; @J˗yAX(  j9Ϟg<nUc~bMSy*]jɞNe =eReIn ^P K#ķ>OҠ!.D"QJ>I_Ɉ>4艳CA {deb3N /}\=pN{ kzIBNd"b;Gt)͝챷ށTP)Bԑ=v;0;ԧkӪ ١\tԎ96up빊}{X4>ҖB&gI$ Du/\8^j@uWߥp" :oŪ8ϟ~bN"P1tSGs/Cb^':m!ZIm,s𰂧k h5kw@X@@2<,̐y&:F^迸#=yJfQaMhAa+ }jb^"[a-]g1\JP*XD;欼BPl*N<=$% JTR[#w"pI|OD$2ЀلYi1H"5Ubt*˚~0DQCOLK&hJdՂjߖ! r˦ɪ̣s$4ѥ{Ǟ;^rdQi>"4,Ni4ʌlɯG^֦*֒"}u}i9UO`y nvOh뇈(J"}g.#(OǾv.\CS&wNH,6. IDAT8o5gY[0PTk +%w˕7sG1uҮ[6_5 BMϢ0- Sܫ"ԣOtç rC|wrX|C2+"XސC li4X ^"w+߇AIjz^Ŵg积㤡 cMVj,t~=IBF2 o*%DKy]HI oFCj*Ӫ`Yi3^#^vi܍fKD[G1yS\Wp)'h*{\~\BPkg\7$'[F4ϣXĝɝ{/U{_1 oЫ^華r:԰XɒACWG#5woh5` El1c9w1;fzUozfi<c]q>ԡn*`.eAb^5']<+BHhՀQm{a{\)"bMJ[y`Y5,u֌ >k^-ֺKq(V^C7kU7xXӰWKfN`geOŭ'ӎ* )x.{1󳒤Fд`7JGt҄N 'x6a9GQ|{N$:w1svBӣcݜv;(R܁|)<9cR}&hs5\k㨔zgY`zIc7e6l>oaST S[_5W©7$ҕLWnۨ,9ՠG'N[tRcUwɩر}h Alhndϯ \ěa l;ܳH^uuy ?=}s sf ORsb.%6J"Q "L J/ 9HkSt_dWDo,;neYtݙo4pb@7iY{s܌lod?}z= Ja%FNx}l n]y7ϳfn05dF3~XyZςB]q ŷ9-JQx{Ɨ 7SO,5ԇ MeR<ˏk}U=džeF|r^ʡ}ps5,U˷;?hh$8'ySzqb2|mF@mˡt)Zr6zލC6&sbl7^V:qGvׁfm8hG?3/Zׯsrʃ^KEKvyo\Nc>ŰGZ-E\G*9ZZ]ZCE-ZW1hѢE*ZC?t(~^iU,4SEoO0on&| ƱoL+Z查ߥ叠5ZcbL!}N{{~Z!_^q (hH. q'G&wӋQ[|RH~ȯX<%=ҀWp&FkEyyH[-f ff_={zp8܀^ir ;cJ4WOXWT)aVIDQ7 oDfʲ1GǿdaJqyT4ݟyŗURk\6 |ɯ%\nɡ(S~+m73kIEh8(uF9L|ɩ]sEaD&r/ 63N.IFgXr0(`b:;S>_CqԈ3ѼE4 gal,-vpR:1QnD2^y޼䳴`Q/SyNt*sI%M 0s,\mh7!@dSX0)5D\>ʿ=ŀ$̌*I1 <{%ןqd*9{u̞4EG$ق\$>ŖFsn.X$;*M9prbm/U%~YeŎi"/t Ru<6N~QDC&eE<ԅAc0:YrbS ղ'kL:FW2rTKzbu[[$hx-ޥY uy)?ӭ%X:|yqmBK` -m/BѪQi_%6-j$ fR.c@jhe]ՓѼIC9Q=^way2{`P $EF#YRQTc0rUAЎ eT|\ץUcX7\3}vK al#<$jRYg-dxucܜͫL)ErUլ7SgvX%ǃԑc{R q!Y9'N pmf e+&2yA8xv%g$Հ_#wUDgSd*š!Ok5Iӳg3x uH8m5_&1YLwo/u1Pg1[L^JOO[ËPvpa\c#֖JE%MUN$ QVRaf<5[+̱y)8f] 2fA-UiQ*0|bL09W$ޭֵW=ᴻ{HּTAtӺ̌?.ni<'I8PKxH;&ϧק;ɷD*Ύ*OݙI{%?ȗS?y#?:k^; !JnłKqwR%xRKqw(PhqHse#@twwgvfvΜ3gtyݱ~&yLa猝'{/+p"{3tt @H D>AptNV-G OlsHk˧Qh9q4i>F.Gefhk[b769:cv{.Kah-%Q}FJ@zIx EkH}Fa"Ty gV(`Ch2@sdD#:`)]ܥ:$NkٳzK|J9s{Teŭ/ZNi7Vd)k)@A?:B)91?%ZLF Mi ;eSݍkiyl]#iIMD'(ͰL5 q H"(ҁhf 8sJ OMޭy/A}4sѕeAQHf4B"$P3q1;+y&KIB!4rq@E3@QBz(RkkmX5Ŝ9 ZOϢ3/E@901{NɹMpK1n(H*k@K G "ypHz:HKJj6J--Zk +.bD]VDdZEfQ+$[E7Pe{k̘҄Z~Y BWJL S4l,I9rȋg/QXZuT=vA=U$$>6tD<|hYMbG蹎]Z1]=$!! Xh @}D@Ug $|@ľL]NtE 6:Ro&`eAE eꔌln2dM{U΃?"eqC-&m Rjo3 ^}RۋC0G_6s/{VUH޿#ȿ0J.ݕ(6e 7P(9K|`n|q 񞒿rpAL#3-1̉F:*Ttc R1y]IQ%bnM Z/eH~1fG8pD<2Ѥzz@Kὃ" :twJ7\IպSQlM'}LqRcl }]q/ؐ[ox8¯TK#L; Sh c3/@M`HAțJE)@(Es9w$qW:{& @ wi/q:Unq(4Eb^3iׅ]+o՘53by#~M[@ I{PCe4Bc8ٚ Hq ܼxܵѩE@> |eY+bp+ٜd0~Y__>'ʡ,>x>EC !$Xg/ /`a6">,5aFK>xqG@wғv4㠥"9]U3ody[%Tl2;pGڍs ̉Iȕ.fF7p_fߜjc( 'NʹQ7FK2{qC1_qb}%wΌhڝa;{pyѸ%},;L>\XHQv)4[]jy{1,(Ruj/՛BJiӾ>%rN~Ɲ'x?s&6O"!;۾L(>֛Yi(CQF#Hÿa?ғm%l2aT/VBalLnŻܳit1U%61}^"B1ZIz'm*$yĈIF hnBJ£\A:SF.0xSoNCdG*1τaO. IDAT=6"1̟fƲhHPA:<2e~G MD MvyW\ٳS,Y/[cVz8eFE=+No:Ee0d<cQظZ!gyڒ .Ɠtae' nXe(gHhsRu*&|+hUq2# DS8 Ǽ#,hDF4X+cW`ؼDbi9*/ꏜ*3by+TF[KYYwG3fL>Bv}\8 ?1t{tM M1MowQI&Vi|(j4Eۦdșﳁ ]5&X`Ǽ MOYz/w֠MLB'dbQd00w6ˢ$_"R6ɐcl]ܱ=V5!)0ѐ? ѭM~&##YGLbUYseVI(2 MȼF#|3Ȫa3oneYH~-;gsgAF&S^xYҕbƬT /{H ĀD%ز0dA.######edddddbdA =?ˢI$pyx|1"yt>#&n}g'!>ewt~?dA-ٟ}Ne ,>|?1OħƋdFf3<-s$3$"7Ǵ=HL3מtӲzI Hh:Zȯ5JVDxV&ڧ\>sOݭ&dAYl*k1=Ӏ7RcCӂ 8A%5g#TifthB9`Vh ^V:`gg`K:"EAwJόGݥ,?Ud9qѤքuv;?ۉ);Y|dBfI?e{UaF~WG,6G6/Ӻ0RfpSHIҁǣ#]fY{8Q}VNJyݖM"g6y2^6kqPyDzzI(gcTVsjiSdo/ 2Il,s,dR k_ ekV):#p;G:OU0CRHMt%sMΆZtWu6Oz\O/&,Rz783aGTNpo1?p ֍fTA/_A=ְI@$ܵ;*Q(;oKz X)'6: w{N>pl UHĽ Hw(cu^wn8:퓷9*3lW[iS/{4i?H/W n*R7ߖz8 x;̠C#<ڳn<#fԫRm1eϝ,,}@R?7_נIqjW]ٛk֝aRBsu VL=iM7rzȴ#I}vkAY\h4TΚ%kO " Gʈ_`R{/::UyZҫ ԧqΙbF6$)Y LOs? V")^ZOͦL\"'1P.@=!iiP)L,ZjU:UTϽL*UZP)m7* BM.^7Uc(f{j&$0 xYR1TŽ=&l5-i?KEtj#iWݒ^hlxXQ1XoƂywߞ{zĘNUlCdBJV`IjV&%=#-(_Ċ9mppƻ9#%/F?7 (kǙ,#[PRG,aƉoHWFb;y?Ϣ[CTb,J٬' .9+ԠSL:_d#$"`GPp0`q'6-!t|A&o\@s; V*Bٴ'dsO7.NCi7|0u XC )J~Ǭ#V3g,%-\Y$$# 1NLRShWp!>3t#( 3ip ~`w,c5lX 99>M8=-g_ó V]¨nH ﷯{ N8i5ngiZfrJ4Tڴ XҪhh9uVB*|?sg,nm΀z7+k HD];Vm-^0d1`_5bY.IT(M %ZNIF{]ٽyT5uEB*xͷpBGO eμ[:όcFW Kcٷ+tgU^H$OႤl.qB9ݪs4µ0Y (\P)%Ӧ6JeDld$ ͕Ɲ??_Ip(tS@'μd(eIB[infݥ-~|]Q?g)!ŭ0r17ͧY!)EzC6<}o}_~^t,Wlbvqt1;ζc[7xle?yv!V۶gѿq7PNaN8c"r@:BȈ޻ec;Qu|0Wh(ZF `S-Z%+%X$X &>IB:exvǏS:RH1X>! f˸kH"19{xz+wJ-C TBܯ|'kLFAZm67Ox$y<5ׄ?['@,R˴Oo1ߞmd'R!6z*J\ޡ枘bf>qK$5DQ.g)=Bvs|mhl8[m" I" })GERzrg, ~p/#t)',B "yY(HTSʕ2g5W0K $`jjZ l,Ix9ӇKMAų(,1O%XE#t )&$;5Lɬu$cm֎PwN yJ%Ss Y9k"EnШ)d3%箂y^9 c'AS"ܮkF&MCIA"OsoM4^鰽dĖ[∊ VzMՠT7I4XOr|Er!Uj $!$׾U mȞn.qG3`wLR%%UHQ.:Y=i ^hI~q7^ IQ9'!3KkKiSg WȖq}SJ5(HF-(1)ђ G';J{ id` :SG׳#ʗz|?l*l>~O[ShTg 3MGE]c+M0vʗf>Ιx?UjpwƏ|Vy63 ?1zTHQIq) :rDժ;,>ypq%:÷,M8Ҏ/zA;kqLlCvg"Zv?kI6f2!}sN|xh n 3l*wOݒP (U[sdx'=&&H1aG??D<́^oO4Ssd쌧Nr(c ӌHHfz>eGKBpr 3Z,dă:Z7(X˔3AٜSz/S$MU*RaVQGI3 Oo骊3/ʌHēJm+&>y^V$G1ջNj  ߏH&'XLT\; +nxxћSlM'}LqRcl }]q/ؐ[ox8¯TK#,PbC<6LNF˼E̡cѩc(V T )bËG|Kç^b[^o$eJT̓]os,ٹ:i]o>S' ums-+;9rqhašVdP`UvrtkOr% *&1c =GU)_\AP%Win悹 ~AAmZ#Hl8k~ȟ_ |p|ʺv?KӇ O܃7"9Ϝ˟Z@gGmKCPs](|[B~o+^]mfTmϖc,*ҽ[Ƿz *xaˑ"d戄~d+xiE"L(=]C03";S7‹;\!}kiF۶";V'?ؤW Wq XuT _m;4T>{tY#ɩÇRgJBSꓗʂs¹$>DXIi~0j"Λɭ$.jZIgٶ; ߖIK$%&!;`aIы'jFZtjuFaRavE6cʮ4,옡 [+=;mIX/פ;fD>5ko,Vm}B\4~ raTK\TA@(J rJy~2I<^0{|3\NCuijA7YXc1g|6NłD01#ںE[97.gO|OAzF\E3',dU\^.{2_.3Zj{f&ru%~ѳt"EMW/c ,рoPߟ:0peR9ocC) +f괓ayxEIB b 3u6^XNu>GKx~YJܚ%_%5aI t/L:H~-F%Q'3OlM`ZmcPS۵|"o/X&>b뤟v^y+``PF;CY|ddddddbdA ;ۧ2kW>SFFFF]dA@ _c(;eQ.#:IDAT##-! ρsK$4'jǙz~3NnO\hrzQ0~Vi1ƿXZoa켋oC|Ȃs ~׮a*o-n!EԑcΑ,V.Jٗd '3*=Ҏua_B´oW+q0;aNedddd d/-Gh#vD:LjY]l9ggW0Ji8Ϻ L55҇<.vI|ٕe92222Fxr~>W =Eʕ2ң ݒ8{wGd©b9wO2 7 ####su&+ ؕκ~2 wgzJdC͍h^>B ۊR銛+<ʗ5ψź(dus9kgcKTbƍuȕwI^JտSM@m-^FFFFFV># 8@1J{R>0<p)]FFF[F6tY9~6w#Y;=q7gmSum2#:֝Knf et#Ũ vςEQ67 eddddDd3 8b K=vɲݩ`%HRꖪJ=ue3̷lZedddddbdA.###### rY|Ȃ\FFFFF+F222222_1 W,edddddbdA.###### rY|Ȃ\FFFFF+Fe/ňUW|KHܑn.cji7`-Qgץ5NRȂ?A"c礋Y+=ʹ9FpҟWž8:Ļ<ɈvuAca')3^G"%\c_#:ӑQ;Y??$[<)u`4 ,H]YÐFe˭1'ys9!9] ;6g SMqR%~7ɒiNJ׷Х%>n89[X֜>sUF*5y̅+;s@Ikرs T]<@|^X ?][bR۹"5UV߷`s^O^P6[R_i!#k֨y &+V#&sjH.Szw9g>Iiޞ \/ +~I2(ʵ)8bkHF"f`Ѹ]#EZDђ[1J֗0|A?ıgqmVSKq[ =Tb)RRORzJ0sw%K+/b/0cYbY71tTӰҿ4G1.>SJJ Qw ckkS5qhvco/)D4BckmzG HWX3ŽsEѺbjz%' :1:]UD>=]`gkf0ܞE%7} ݙԔdGߋ!;]§Ls}f@tVΎ8j_"&%k;SgG=Pj%f/yxj1M7rzEY$KsT2o+40GpM_Ɣ.vIz;g}1Mہ}U/I\hxQνm_2߂աt$q ׬jfXfnU=FDUcuft?PX"PFY2.q'p5ДieQ"`莒GsUG*Oߡ#wKdA}][k"طB#'-0}$V%Rc[VŊJ+%0AMJeV\UzC pʩ$O5̓BP#ͅZʶs)?,#'$@G/{v,T)v&T1XA oũi4_E-rypntRj4u,@W?VIxYxRi,7j^ kAvcc0IyЊ.X)ݼ[VR.nͯN-`$IX9~,bQȄ,B"2tAF1\^£ Gi(OэmpUSBYo_G|rCtT*n`!Pypff%,f # π¥9]C-0ahѲ)rg1dNA{P_m3/EqJUŞ!a @|Ğ}JnDgA⢂eY}8"f3Lq/ȥP_q#ϛĻuS(Ǵut9}8ʋJy}v$qSI_VnOcëL;fNJ)D*Ǭ]Xfr;u',R$*Ş0ؒ6"wsImp5{;[E[tflyʸ+tIDL?ύ,? jjʽw#֬W)Lj:렾|'kLJ{DtZO Iz.ok"c`AG8 '>`8Sݔ?-cQR!;$jNw^|ϛ}$H}D^EABKZ-3b1aoD$s}Har{}V 3)1/%޸<,|` WXbBOcOy%F'"|Qm3.CItv}Xl')Xl!gs$lP䀠8 ;jQŋhK[XdA91v$N}מn;S}o,8IuO;7X4$$IKysQRZ:|3BMf,'PxПWr9JgK .]R@.=y>&)( xa} 9 tGWw)%ztIB6qKWTֹPs(Tf-nΧ]QEi fSV%)u٧H ^Z$f㝳}bQU ED_J4eCSnέ(凣9UT&W˷ w^TM15ؗ1^\ L`>KMTthv1e"]ϓ?;h̜#0HKЧRcj\azuE1cV}l}e)nXTL9p#環 $\s^+bYQD;iA_x.%yǗP̋w^5OH,[&_@kI7}g5<2`xt'S |b*֚}G! π|z{sDǩ8lpEEHO"T2 ܻk<;W"ޝUUan *((jNלZ9k75rojyeief9eN9594KyLM|$9c{?ϳy8Zkkܑ zz }iF1?&E m ԧu67iPڇݱ\( +6vtr{B۟?<͈U6{(=b=߳-يiQcya;;>Ǚ-,ڙ3tPO]HhjKدE(engjs=B v:eS`[ V]vk!Y CcTc˴,[)rmsGFӵC{:8w9 h5gtnNbs5ǪQ"b^@(F̉KD|iߩD^D8y]rϺd[4ƽ cjV*!</?]zx3'qI*U2YUF@:&NO;g?b@w_:ua| WpfW}i#z[ΖJ[+ӶO+ƪt!P_i uQNS2K,};#50Au`!DV;˜d{=^<14)_&S;:άuGHm7m/'jf,n`Xp,}xgZ iԤ=Q%DrBFiMͯNQ(چff=D,$=9oL3=8D"`2^7лLQDԵ."+pwo3qkaZ̫D 0~y]KLxD v㶱zg9@͇kv2ϵGEZqa&""EDD\ S qa """.L\DDą)0r@.""EDD\ MSDDifl8Kl?~.j/FD7stqbQu*.եߓÍRzED)Ĝfj/fȎu,W {TωYP 1!O̵8zjm^[kރ61nY'~Kϓrqiai4 +VQDϑZI ~:|P*)֓\M7dmj6yh"1`ϥ#-=u;ߡAʤZOxr ܙ>9'NEJ)D``jb?t{;GPӯ,7:}<4_is8MNsj/iT.^$9:pgdJ@^x$dLw Y')h̘ǍH=Ƣ6 ] ߧSY\?@.""Ncu3#bpkvwJZ_OIJ9M>blwgGbxVTvO͸]w:F-x3V]i9&Ef㭌},Fe'j6]C<]ofoҺEDy= Zz23D2nY;NzϿ9EtOj)6kzg[YĀ0o8cY`ɦɍlIBkճLvS q,ig)k~`lƎc_pyv9)Jҵsv~8G~wpc nT[5|ɤjZ| %־,ÿ et,g""א1tȱלxҤF0[~ĕZ:; ;_{։H=r%_DŽcesVV͔,NlᓯS-7Y#³0gn d`6MǻYTnEDirU]Ճ[S=&D`=}+4MDD}{9~|U"BXv;a`;gacqsjV& (S<^0SePX,FWcvGR~fL[$ y]V& ƕ| ӆ0""".L\DDą)0r@.""EDD\ S qa """.kߗ,^IENDB`helpdev-v0.7.1/docs/images/spyder-dep-list.png000066400000000000000000005461341365434462600213160ustar00rootroot00000000000000PNG  IHDRSye"sBIT|d IDATxw|E BhW<Qi `AXPQQEA75 v?RH%wA}|nwgvfvܬ&4MCiogV\oY>(++ڵJܹߍ$Ib1T Q$I(~VTUߊKPe *J? Teljc+ݯ$IA4C^BwGLL̕N_馛X,nyfJZUVi=zQB`׮] :JG\]Hw`JUU4MCUU(R:QUqEفT~~>?}{vCs\d$I$I$Iҩ:<|kފd2J`Ν+L={}L :J$I$I$Ip8xxp +Lt:3gΈ'R/NFaA6b $I$I$I^_4hf䩥Ot:ʩSi̟-6^fS$I$I$I vEV`ϞJaJU$I$I$_Ў^̙ :pΟ?q5 Tc=I$I$Ip84}߿?:]O4E^8J$I$I$պBp )M&<=*hQpy|*%I˷Q2"VU|O=E$I vL2سvO9*U0<+ٹ7` Z 2zCf$I[6 u1 ;a{VJ@5 fI|1W%)EQ4M$I"d琝oEb0py%lң3c ylljm"FVV.ٹ6 ٌz'T˝ ij(FO¬]Gt8@F >tWcRh-;ƁoAf#-#kF?c|5]6z$Is4M#B&4}G%pkyymQ>BxbׯOvvLI$UFsI7t [='`1yTTŢZ6rE(5 4@^*[7/o;iZ{qxPyAVvİ hvs9/v[kOr6aB;٩9dڱ;4 :o|NڀXd0M:^=;Ae;ݾF; o~{*PC-?syy`,78:6)hL^ADѬK.'ZV*.84&@x{Y8.Ro.{8dML-v3,99gP`@aGYÜ-t;뭐NZ7,!`!-#PTtzA^XLf^8H(gh}o~=JaC!C_\O>$I*OP@Gqg{#&dexi#+ݗvgdXBNɺgt B2erקSyoñD!Ặ2pZ TO{Xhf#/˃ߘx62NBGрJg&`=o=4GۻxsbG|BB }1{V&p_048am\{xj1 KUvHw2yyS 3vT;¢g x UJNFyoB,7+J&AN6-W1jeE^fe詟؏',4rRmt;!&%7K?a" F9k;ߞ4n"#ׂΖك؞o˖#??҅|drz3#F9$骓WPO 9h?7 ! ]p&bncޡ^R^_~DɃ(Mӊ$I 9R}igTbGqGW>N# r3ʳC!3 = ;/ Kų #0QM)O KD {h($B>&[f\`>S&IL|`mΟlJ3W$Il68rAs~~SݰE*L?| 3/lm`%㣲)!D4$I7㙲mľ|Yצז,]lzq/Y:c2sS 憾Į˞;8d!6,?( q!(>-=QYsٓ|8et.a'܅u|AP59m{a5䔉//Nfa䉿C\ 4FDFq'a ,j.Fv'=8V kt#kU!#`] wκvH:<<;BA`,!XvV+]Qʹʸjg˓?}&=ϝq$mȧ_гyXGɴ 0֏_fT3^>*/`\^>X|p[iǽB 5*|, @˒$IWC#B|(~?@Nӝ;5ӝ;gB+̿ʎ4M+)9$I*ryhC[z^Ӊ.mҸ㵌kיv۲*HWȯk8xmͼ8Ha;8z$ qĘ%YćSO ?#6{jilTPHF:e &P*ſhqΰ&KzȄ݉l|V~s{-? c>۞pH¡aɏ¡7e@0л%*i(zIbɧB@M< q, NE @ OC9jGRoݏPPvPTt 6Qq4j׎nb_+tzʥO?$~99G1(NIݮ)tx%$oZ2<"f ̱x{PަEV( J|ܹLy /8jq^8y5l=-0*l~M$I*QAx2<ȉ|;}if ruNQ@pV4փ;ǩ0XnZ֛Տfdfsޑ-H~O0N3'8@c&.?M>w0j.8,A)z$¡(#zҪ"-ͳԑ3GK}7()8~⏠ƒZBPQUEhQ~V7 :dix{bU+0PY6}wc}5c= V>I=Ari~uOL;eY 3^zy"s.')-?ՍL#r3,4AۉU, ! șM/*:ۿĒ_`{69;`<3b\,mFXi|6DQCQay{94 ( Ino~:ѢǞ]C!0ByvYȜyG0y@px{0Q,6\F/?॔AԽ9 v$"_`'3~n 7uoNP/y?JfF%'d0XNQ@~)m_рn6EЩOSf5OWxZ(y(#lT ,VTd$_ 3,o#629s [V1:jKyWj ޗ)/e{ ^=? tNfjxXA9s ڷ% #$:' 9=C:uhd'_Y=ouigB$NdFKO~ΑVKё3fRqqFax)|$IR ᰑg  N`4i1NVvzYdr* /:襪YwÝ <&}OtQ4;v@(J+&K_,{6:ūNVZ.B녗y9 ɳcshhUhbĠ]Cgۄj <.dz&t./zyn.9UEa2t"]7ȍTr(F ކx]t(>NaqPTtF> /$Muz<2slBEHt4ANv#N:VZ ݂'z<٤;v 33ҦV>$I@ᩯp(_0{{YZjg9h~kTEb3)ʞl,p*ߦWI*U o9 @oXp f̥r{L^8 Ti#ՙ=2n2N^VŌT_o24Q|luEIp{`.~ŗ/ 1/’l<=( NFBv͐!C$Ijy%{*?ި٧Xh.塗u?UI$I¯:VjΣ1/8t*0BjӈT[Q!SLaaxf$9O$S T<.ZQOMZ4Ӭ"OrG$I͡a۱;4Dx# ^Tkz cWTrw7|}F+4""ĂDM}3 1\ 8|"AS&k8N߶œ?^ݿv&˜nL 36or䯟ΝO%䎷Y|΃tܵߺ2US@}"zj߫UV9Ncb}> kT.ۮ.4ŋƑDTK`+ď) >F+mX9ۘ5t/ ?w-?[{d7̟)qCx|S#n~ ؘ3}&w ƕ.K_dlH0+ Jr}vz 28+ޜzKe}7֮v[Y3/G׮\|8Z&&ZKsFۓ,v% Iek̨KU]M' 3!ArkljqRҶrx^ǀ!we̟Јg&'m;Y.^fù61k͔&W4$*JpH"s+9c;xCcW&>+&DU;88 ;DS7J6:XXoJ5nxqS8}C2V)>Ԓ=Z/nf-#O&DiBSXp8mD ˦ gB4[Ңm=Ǿ Z]JHqpk{;;nָ5&|ʮ,'iy=[0SJ DԼtiֈfhՖ%AmCk!uI|eyZmviXG-݉ ֨5ƽúdnq}ZA,oA'{0g#a &,=COBuBÈl7疟-w'(kӜFpo9U |>Ċ4D*[>u ֥ikv St]BB*v~,INX hx?pUx(h۶]z]mO}p,,;M IDAT΁W{_?T_'->Vk=; 㙟&*rͤ!tNn|;.$[Dc ڰ%}fKz%7D6$,$kX{/q&foCz֧Yx폤Ҽ.r͈Mo &n4>~{WOzZ8x*{'n%84f>/{ NL϶1D !8tU4̙vQԱѬ}wk< ҿz+ JQ88zo1$N|QnhIXH(m~'S'yy8Eb?y[` ;/` 6rg '!uC s?_mE0+u ;ۦYzn䫋ZQoiǻKpU !,B=Ome]q$k(\ }w% j~^2N$VemRvfuBXvLZY7E͊Qh6O>Ȟ-hJ讌~cCZ.hI|2(Z&Y^ۗKXA!%͹o3qpWշbG⸏]մEY hp/Kعsf2NobUփ1k%ߊݭ:}{ѹE""BMKZۯYPBѼ,8{&ޓ|A,}g3O7mȵμWdDbAT#?,%7㺆k\س qL=N^3߰N&d[a_:lؔ{g"u_ᦱ ys61v6a5]Kh>W|ī+l93xoie9‚'1#J!pwFI3oW +c4RaCr3`-]tCQj#ouox'eIr٣nictcy{3}?d:|;e& DGgy^ m% 954$QQΞ!@־d]_/;<:<<(Z>y"_}?ӻѡ` i3{C}oNg'_yw6gOƺ荇u>DK3Ë5m D.IlZ~A}Oίrgt1Ym?7&S..Ruu;W%y3>5{non4aMt/TzQ5ox⽙tsQzj6K֯pywFIl9fMOo̠t4>RIPZIngTki|{g``c G9mOe3Ԉ[{сb $B"PxͿ/hoL%9a&О9s/y(9*_]תSUUB[y'R~ncq1cN&͌n7iV\|W^ƬI/Όc9dlbF[}e@ d x#j ~DI7fv/0g^GGg'?vx~NnNͶur|oWV<:KǓ4zcp/|6Z_gnLU8w(+7S"0SUZpRa-hǃ9%Qu1L5;:.&6qFfX(|l4k5=z֣?]_~vcDDBƯltN0%mb/:=v/ 4Ϻ*@g]ϋwO'63}T=T 9X6 QE۩JLkValgOn4Vm6}ț0~o! wN&!h;Sgw@]NCrLjtuvJqEѹW4IʚNX1F\ەMFnhͬ3hHoّs~e] dӮ Dѽ1xfdqM|RsdtTec3ѓז`dKTz[?kS8";cZ8-@btSڇqd މzb:~X.5ކ|pۢ:ݞ{g~̞c9L>zuU +k?=B}yoB|コĒKv;WR+ ́V@~ig?܇tS>@ؐ11+= @ӛz`:籡C*qQa8~z$! ƻk=GQ%Ҭ{O5Pkg0nNRMzu :3jFLv][m-}~`A;ȿ}/? ?36~ J~HU)11%C>^wQmУO@;)ttmϦK>+*a'SthJ˳{%*Ҹ{yR4uI(ēPձ4lCLINP kzuѼn]SHhHYD*<%vz,NƪU8wg-Жݼsח3.^uV5RL$̏8QV=(pM7sOμ pw]MR׾?:_|E{+:%4+jUB[['/-ۿm8jm@;ߍ`ڿptiݾKeM)9{S~;Cᚮ0҉VYpq F߆*t'c|X ӹkCGu2]mH{quS;UփVmxUuV })W6Mǃ:lA7(ֆoYju'-rsc|C0δ7*]DO^=f>;.$,ލ ޸].$vOhЮu*9c],`ݔXXV#2ι3\=D#i>tJtݻ9WxcR.*Q (p<{^Dlw1vwM@[xÃ\$w=YkUNN)jX & ͽ(5a?~tbU Kx#ٕx ZasXq$i~tIд҅3\WIiI|:!V›$q_e p'tT}WӐF!p!I;vpJmMe{G[3vKMOԴ.9@Fb{I;vpFJ614jАrܑOB{ݚHf4]ȯkCocIOWC)jֹ]+SUZD#;|tkkaS5gˎBtJۥ5kkQ$ܩ۪k-s? صk(ٶFhXz_n4vmouʬn{n9^%%ԒIDh eu:Sy,]au &ҊكoDF*s's^N^T )_g`|2~KLXq~p<\Hi2WvZ{2D`ni\|ףl?oT%MBvnc~Ĩ>Opnl{UUE8S[ g2Vq*]})F{B  .;\ʠ:0Y (P u*ΛSQw} KoЃÁv>v,_|8M BfM5fJkf%Xs,r?ϬgQǜҧRTi.7׮d|):_JEF F ǎ] QZI ߍ2NUnsykQ1Q[3zg|<{}gȜ +LPPЪ,O{k&`',~e VǠM+ީw=늂(@oOb8C7 6Cض{ ;:|3T7buOOaQT79 vʳS. Wilbgf>.SG}O'ĝ ^͕zth%VN^lX.6W|en@h(ڗR)VUp5i8J0VTլRPpnTQtF 8iNz];}l{݈߬k)Wg Qw|@S .cn’/{wvL 5xQ{1,_MY6-o䧌 ;Θk##GIs!8q)5Zgůˊ<:_Hbhg+8\I#oGg{L^TQe9*i[XGZ%[%Y3B=Hd"zVr 6ۋ ^՝ciGws«qt F Յ_曯4[MG<#Mfĵ&6KckV̏mWQOT/L$|6;eTCrDߨ%ͽٰf4֭މOoq$ ~~][9,yK7jAW~Rk"EO`lGLd) 3dgV*!-ZPGΪY?̪-^[KogÎBbb#Ns37v&>&-QYҔiy\㝓޽1MӦIP5WsZ Q_뒻SGl W9JcŃG۴Vj6EA gnM۵֔MhcuDۣT}`ɏk>cy=}V1[-.no!<7;sM>EhzW/ɢs#.`󋣈׃έcSq1u4u?>3#'A Փ}j?iF2 RzíyzNPEt,FՌ&/|DhA}qGwԭS?r-;79}^8Ȣ`!b̪}Kmn '_?"z''4%{Xsdv'iаh +M?}֎7&7oArS֋3E:uz_}R8-dg|t7ג/aqXQAe2]g1FgN w17<=3i,sآC5{-{54b'/fL f]!M}H[6y+ 5J(~M WzMtME\F(՚WĻ7d1nGy,ԥ6˳ ODiט4N.4 K$mg% .^䁙:nkkŐSjTt#mctzwGWw tu]W ıYb0#Pu}vUF[s;tDzHzȣ p ~'4,^y~=!?gh}Oh/+JX^uΨAq4ܷgO2PfT_P~D ηY 0w,op9]^{h{PqnTU[F[Sƍ[#f1z`Ȏ[94JKۏ9І`Gq8[?E;˷cz辁Ҿe~zj*V;gySo>&0y&'n*'21~"q4Bg֦g{DZZmB0ċ"E AQ]"Rsrᤈ#;G A " HFUP{hYzT6k4TxtBou^X!K2KWNqۂ.ʮݟq] ?^|ve&KzbxkLdFshexmҲ|i~#LGI/v-Zy [m5H<~Rͅ?OJ1 ,!A⥵UEWĈ I'tѝK*GknZs / , E߮]Tql 1}g SNJC_R\ψ^!혏:ؼ=~_%i&Ғv/&! 3olK<]qso)[ yk$1(33D4ؘ$\Wףꪼ^ߩ_N䓫E=_ myWwfG~EoEX(Ѿ "--Inu=m2 x1/sUU{~sfwA}0 _5e$޵pH~$D Z;)R8j$~LĚK$UWOkSzB ! i:H%uUkuMU]5:kIbPB0'(fnHW||{g:U/,AQm?N &cSҩVZ%֯_/6o, F[M6/kz" I/2ӕ;ix^o$I]ܑ8F@dMȲC bݷw1qibW5>aV\>91ԁ%$$$H\Iv,3Y$Lg=>xGuk;&#RbA~DG$$T<;k$'+UwQ݃&+|_J%9QpYR?@n~ 0{K8[WFnBL>2f-pZ|}ú2dzoS6Prz y?>~˥?qfԷHHH~L0,)@4C7L.?n~yTC3l ûss3p_߃9,qvu?z^Y}hBus)(i47)U#cDcQ{%$$$?6?5O7d}y0kk7._kgC"CQq8a/C`l'';v ?b9tW J{gGMh⇓BOZOäJ%6i8r)~kC7lmp-ր?Mx7̓)hƥ0U;!*\g ǂlPrcrY,03[7F8*s'dyjmD36Vظvu܈ZߗE]޽(%fPNC[aՔJ ghrb05z. Xخ&]&1J@s` > tA+ؠ4^](Z6_MK;֜~dnzR_Siь>N(,qXFL8۵Q(Z[+OuI':i/9|L'SDɐة?F6Vv a؁w+OGB nLI룍٣DO 9i[{Q{=k0(̐ɺh}^$2~@~kl w4Em66s5k*ݬo9=.6(l])Zk=G& xɥbU[HP^Vv͇4i^}9̙٠gMjHĎKO=AF}/k.Ì(l[ħ}1!{ƶ = #>!Xk؀(l(V+.}ڊc/{_vƶ&{;&+yKHHHh㻯L?Oܺ_ĽJEveRqu@fbKd<^aБt읟3뛣H}O`tq1yTGClj㌜D.NiLz49jcH6[;P(ZZKC31p G/'R TvX'}<#)F3HyFGe[mbp&к{6@P.-uL Wɔ4;Ewl0P3Fox BV&nF5\<_,u]dM[Icg/1}9Ơ b2|,rjbuC1Ǎ~XvDsLi?î<6 ld2j1۹#G}jљB"x+WBN ޔ|f^Y˨=隯0{zۋs^'?o؁ƌ(V1G8r[E1O9W-tӅ mu yc򀾄mi-fYUqRT[&D1vdM٭w8Y(X޴DE;%42!zﱢU zqi ʋv?/ԝeA$~ ہ}X:֞w'2hL3zX`ecE"׻K, d8^gÌiKhjnԟ Q:xã2OdyG2y xw;i#Bϙ3C0QjY^L_1} 뤯IՏб~?λgJ8+fuD_4R4\98؞gGrJc@=WLoqzp #B !m 瓪hr=r"0596ŊbsĒ6HM~3V87qW#;9MЦ~6uɇ.×S Gӷ-n[~ /2lF G>z pd8_bS󖐐ЁL1l_uԲгlJ3m.GL:+7Oef~T? bi(0 60([OvJ. P>,Ng,2 .kʖh:t 2jVO%ӫl7T-8TDNml̙3QsNO=FcGP`Dn`ih_3* Bӣ!nz1lh 79P.)1l:z3,/rAqwdg5j(;-U7p⊒:ed^5ͱ噲o"M,nT(?YtfY<)v0E}1Wxxz~nx7r jR&~Y# uq7 9^?ڔˍ/_KU α3?r {M꩸j&P/IqΦ=9JDN JPWJ$*dXEaY|S3EofZq3b2K?#d G KK*\ZĴC2,ȴZ)[߲JX[ YC|Nռ2a&E )ozlFR{_O>R?ep^IĴ8Jc{7>?y{O$;PBi Ype~͇,/^ rAX=DM{8B,gZwvwƚTWgފKu%M.4ugT;jڥJMl^Spj7PL"{cxGfRO_"VKr2go eX26-#_S*2F_w3{y"XԻ(FA<.Nǩ˸RgX<׮}޽a$[Ĵz4X;ê"%yU3'l~+bf?&neAmaL -|שM8-1Pe`-'!rɓjS/OBf;+5nQF_j\"U(P((BYRɳ'3ܺ']be/≋3Ms_@|b_rj^wّ]VMbBR7 鹖e7FF<61}y1992A8aȰ+Lup;\B݋|az fV J db,7G'ӮZI|ݜpt+cIOaY״$ۏedADSzLcՠ]wQn H$=YI#3$}xnRK ^FߦcAoZ۱uB[T\Y!̳+&6xuOݥ&E Sg8eEu[j^DE,S+K|Ugs;Oe6_#~ϔHw\Rfg?TeIg[vb61!udY[Ν'{HS"jDQ0_mA'C{_Az]L5sұӁ Ѓ&#nPv8Vu$$[ $ZcՈ ٪:q9sc{_<'d )eX Jbʻ(@U EznLClXC1;kt]9Wu{m[L}LU [8 kOUs#l)Ey 5sJ5 M)נ ö^[mM*$!A`'V/n"XY d|ǰyّ=׀k`~fctuAoZ۱}2 QkEd3o 2 LǤ"(ǮR@.2La8{v. 䩾^29 $'1_)^=i *Q2!~E}~LCW%"`iȝ>\VB0&)!!!2p5q6GrA6ں5\Ƞ'126B%.Dq@6i\O<+ˈ=o |տޒ 4?VNAK_R'z-'~.0S%/F6;V}ro?WYm6k0[wE['sǏqK¿oOvi>D|'i0u@۱8Wp`6NYWy"WT Bޅ)hE8nư90.$Ib{6~|C`܍It͎Z6W$W%Y֎3I_u +//,U~^/_̈́>$Ɣr5!vxfBfA'\˶3{I :Xy_<~ŕ#8j,0^W57L:~)&^8"{B-.I-Sz1QAd™4$VW{rܚJ%mb0>qJ13ށT7ٱ,'5^s399睋)ۧ15PM/y( Qoo*zn^vnjC4LσP,?Ho{L3 BWâ4`/Ć.r! V5u!NfL%SS/FQccsaxd9} L,PFE]iwd' 2f+_,An |jb(c1o.C_ 3A̯ G}eSj7mM^\Ն֟s6`9FdA< #֤Qf5O3zHǩ00w&Dt)`UoZڱ9}]Z/=OZ0d$6e2J'G o+ƢV~sêm͂]X2}s'CѴ7yKj0UWk4g);EQpI199] h؁.J(n(Nb5]IҴ b{"Z{%$$$$DEEhDlǐj Lm4$tH+)"S B* AT 2r 6m~:"m󓐐F`JBBBBBBBBBBB"HD6) l>+!!!!!!!!!!!^#@'S2LOILIHHHHHHHHHHH\.G.#ɤ`JBBBBBBBBBBB";HD6) l S@ $$$$$$$$$$$$LIHHHHHHHHHHHd)R0%!!!!!!!!!!! `JBBBBBBBBBBB"HD6\;~]DmǰQ#e-.˿׹S#vI$$`T IDAT$bזĊZSf,8GS_a{Ǣ_[bkݤ5_'!VϛĨ9n3J.cƘQMSٴloWe纥r?l45yʫl7tL\ͳy~h?%bk{|\+1ʷO^ő?Nr/Iey%G$) ]ͫ,y51&kXfo".+m 120b2qPXbpƯBK&@yJXi79ɤLss`pZK hԅi\1w{x5ZM5P;kKl\)ZkȂ2W#S'N6VXXҙ+fӫ~( 鼌O٩y^XZaZ}q#bv1@oGll P`o}4v56vPaXY*p.G)GoQ{=k0(̐:1õP mR[lF\[L^zs'D~_4pν a3N鼕XE/seV( RR3ăiU) n_lք2)~՗Y{[$ xX@;TcNn=FnR|aff-?˫ɷeJ63k.I͒# ol1'!?'< jOy1 E ?(<{s4Yym}LKXYc^ZSϢcҁn*2QK>;hc?sǎNO3Z -r$&u c vqhZ\J.)evty13wӞD s[Ql6XY*pHsةE\XۺP~*=uplj "/,M{զ 5#7:-˙5|3/dVl)b =&q6IWeNvV,ذmkRYhge]f_M eXէlߵCJfmO.BF;,m CO+FQ!n OlbJ}^_=Ω^t[͛3AnNoɯև,/u!22Cڙ!?<Ĉuٷc:R-e>Y| ]t!B6) 0ݗK\uv6M% |cX~51?=Ӫs9a۱=fѷqlQ~Ț56~ ذu#K{!\?~_ ?Idd$G$Vٷe.LfRoQ4ȪKT6kySY f5oĘf4+'C>icTѭ&5&o[MF?5Qk>ey Eh(i 6EkLZZf|;bh|^mIIL׽+tAɽ]͋D# Ix|ICO #km&s!lPn5uOţP =PUeO%*+QCm*^xf kwY3g+1"eֶX+bRgzyq'?` z7VbXǩV_Mt ;7![ndҺ(=ldOO4ى;I/4k<̻8Vd:6gp 8g͆Ć$7tn3Pgjyr֪l-ϔ}ij-e tBy3&mR}s|Aw\JU|Fռ2a&E )ozlFͰ3eHYG@pyݑ%2u >}96nr\>DSbt6,G Mp Otb\J1V mI~QjVKr2QǜT ~,>iS'n8;V&U)rIAيeD  FQh7- 7UKCʕ)(x6 l؈*2%vf +P=5/nxGL3AV0?'mbOɁ[ziRZ`F ) tRLs됲AN<=?Ϥjb ؁JSJS֪DCY'('91*z+OP)(9.l"iV"z@1B9y@/ vT"yk\4e _PGa󋙺j/Z4fsZs֌`l'>B۰Fߦ,̞̇}E.60y\Sq Oggx̹r3jacܬLKj`?*7Z?R[?= Zh}L.ߋK21 *]B90N!)g$!Z[}Ws#|ƶ$ƞeA2;G@yP(]| Ӭ[xJD]X0@ϊ2p"oLًI8˶|W O ']ģz$[U =/B|q,'KaW&(_MFy (AfC\ QzIlf)A7Z[r [CD^Aғ4rNջ–#ΐ)Of$9 ;^,yX-mEѮg bfՠdL @։o uռx"T,kCϕofߖٌ2@S㯯ge+DȘ$ U[y)5->j.VF7qX" ePZ\IY7}r e+\ 5r\+D/fɵ.i|} ̲3~M?`Cy(o̭CGu$&~_ړ Tr~zgo{Z œi8p9n0z5;c)ֲ)ޟ#1DP#" (Ǯ<;Ʊԟ'ĪfgG! )yfVa!tԨ5FSN8ǎ'Iv 2)YH;f> A1;*1YG܍޽iM |㒩6}逡5:2f/̛տ2tLeâ4ă[ϟ#QDS!TEߠ54)RjAP~jtj5j@u{m[Lk{`tV-y%X9ԟGS0d@BM,2G6fsDq*A5wQ!"A`'VIyl,3- RP>ZEsPVΜXAWBʣ8v'uJ%zg2(HYئ|[VҞ"?!|/QOULӡ1p#l)NoD`bk%?Ui1|2; iBj* Yfdu2h{^m% 6ĤDt2He**@00L"{dz"ŪzjoJANuQH@yeK5z.5ퟅM˛852L֎29<ٶe4@e%OllgV{E򽘺h s:zDRգa@.`hh|V.Iu HJA,{SQQN }CDjUݫI: on"yqm\z,Om?zKSGT\GPbߚLc*C@ë׉u2ɪdy ӭ/ԫU o*)Xסmr?/'%-(YprK\mk_s1xx ['[Ǹ%x_P=?MbaTӻ0mTg4! +M>΋k:9ȩc 3΁1K;2i*ߗ{1+=oO7}vp]u.ԭmn_Y: QeX "'Ngd䵲@whӲb\lzȷ}M-_S7Dr,}}Qe7*,ȭÍ;J(:uN>&8nư90.$B P%| ۴ T=Wԉ^uK鉟 Ӛ u?S^cB.)dmܿũ=ҽ iHevu b|9#7Xgd%B#6V9e~CKbi]C9@$mjC'# 9)֋VKSIIinLe &jtb_D(E .;#.a8AO/9a"8# W\ް]/z͙~&S= G*$zv?Ȉt+TWɃ|ʮq/k˞e84m}!OM mnK}1HxIԘލ!Rlƻ2=N (-;MB1yC>')!S*OydB7 &kF 26 Ev}vRwIOu.rLnw`ru3Yu eNxOw[ **BݮM:"87c^e:ijl2 X']g\wedUslɜhӈ "Τ'j2*ҭ?Ƶ~WpTy5X摫2xRsVGu*_r;ڀ2_@NfGj8OӲx1ZOe6/>FrY^3dy.-+q˹'z&kpo]+8nM_2B_͙rt+Y}:tKug EHjD ˵x_6A@ <= &7qe^X{|͑"sa,J L$%vmzSkIF뾍)bG weq:d?)AOFXg˨˴=/߁N^ҷ#6#zP 6JCZpa)^Z ͺyr:\HG#H'X'/SS3-^k$Rl恒8pկ֜Ǎu-1M/ mQod@==cH;AKG'v"u(et0+`^)o;[.1޿+e .)NHeƳWqD51Ļ{`~CO1t^#Ng1O$wCCm ý c n9->ny$ʏ,|oTx{yÏΝKd][2~dƶ_+[`7H, [V0bJO9+·nٲږ1d"\غWrQ6 Qҽ;sgVA<_ k?"@ sKlrYɳ9`"ΆaamaEpY.Jߪ?C{c-f9Yȓy@=+v0i6ƓoPU*P#s|ք޸Jmޠ7#zCwHgot.; 9!!oo/R!PmI4Kh1v) i!khYb*֞`\kw]qRy:Klh*WѠQ*!d;=;i>lbbyevR ? %ǜfN7{f>ᛎ#ZO=أvޓaR#S_ ᯋ/{l3KG1H BirdېgX>?Q3?LFD2!kZQj%7/ 3~e;8}=I 8'Nj\Οb<7ϗΔ tGsU'7K |H{]C?zDOE_Ja4< F/.XRA/NoøH(C}squmQyQ+_/%   dUi~   BUr>1*ߑAAAL}ujҍcYf KqlY*  Δ& lBBZYٛ{2,K8=m%VU3wgZk2-a3k}x:agmE_*5ɄwJ}\_Sc~"  irn_&6kĤ˱H(t1W9`t|3={E1h^}wαQ&[Oc6cwv[y>>&HW<F,:Q  c#S+[t-YiG%WxJ8qxQ=l-ǒlPs^I .=VV:N)Ձ>ýt3~v3[wFySڰ?&q2ܪ<&MSgd +-lZ@P̳Z5ڒln?o$exc˜Q|)R@K-$\=˅72^YZtE+8wNɄ%y3%  ْÏFʷsڥDp;$v6šZt7nzhjI]1Y^/@R'5ei6\Jk"|Ѵ bضwv]_sF Ȳ R qcǒ_'8u뽗1lQࣜx^Ji%)i J֦1NM)63~EAA!}9י>Ħ]A Lcg5QDF(6]MsK6#Gѭ'O*M_3:ơṙS[?[Lv b2c7Y !3#_Zs#|u[lG}SY |#SmAl&eZȴUAnubdJgP?;IX$G"XeZMߊ_ LĮѠ.铛u;&gv芧aGB0s7cO#THu2aDWW\#dT)33P;o3yj V ef +fceh2:[RV,>ٔ&H<'jȼ3!24=X3(^;ϖSiUoӷ>0Ks/A/=9sB/'e>#*}lZIʟ&9l$qiۗp{9mjamB6thݷɩ{sEWN(@ۥhz![L*Ž5Tf&iAH7{6 yBW;_U['^LR$W,nh3vޙ6 AQGrǫw>%%3یb#/2NfԜfɯv@C9Zbfio~,$I~Jtn dAm2}_1i "'{.RdG_緡)f .ߘG"y f--: nN)s_>PغW)u^uKQ Sc3l=:ۋ /Y9Rƙ= /є~&|~ vOYgl-M06ɯ1C%%4 >1~N11MB?*%? siV$?6fƘv¯PONN'<`ר*`-n{SK —^إh²c{3#M֡~ Lp]gJaalE>j[õDȄVT)⌭ &xc3<*yޟJ eq5K0v+ms'Ğgnw̓ y}p0}`{Z@&|T. (r!Usm|i 000hwY m^_A) 3s4g5 dRnmQ&X5с'f1pDsz>˯vcTv^FĽԡ9S,ԟթM79Me} c/kr_}-{!Fލ{$7OY4<ƚ^2:n B~s|,6"4rKUtN(/HviB1E =͂!Džcx'o/M/ i@KgNĕjT5KQW yP/-qʧ@(r'wx[^3(iq-}:pÎ]ctqGU1&Df ^d7,AN`~S`*e}L'-Bp啣 bYl~Ӛ^yϳ>)Ø:Z4fԓ: +UeP8P8JX`~x^^rxڍ IDATDól3i,gj!R&y( ؔ>V˔MXkk ufuL%xFMM\ރ81;Jb9|kU[ާl;/Jb8(JcswҢQQA+Z25hYFVhWK$ˤ*^Z&H@VlYi;29BF2OuT9\׼3sQq\[6m~[؏J0~7pt?U/eAndzħĽd^%#qEh4jAZZz)+yQs$qJ ^(H {i&-(OYǤrZ9 j^MnYܿDb]'-BNcOo=y{u,Ųe}pv|Lg^>}N%+FZF \ȗYFcE,L{>>mU'_X?2q6_aTeٹrbLًkV\~Z;XUӝrDפ)Hؾ|'.j5he eQTʽ}ن'{'79´icjNV+ vn%?VeZd+QJ$^8"ըQ=ieÊ/aIJZ:r2>vhc~ZY˘&xHŌy4m*% <~IeS:TсRm<&GJyªh2+RDPb5)8u}< cNƌHx9NJ^])STc8޾)7q :g9~8f-dzj>v@ EZ醴TkH~8^OY۟bFrSu-x/KP>dVF(w/sϨo_.y0QHXyzbɳ;z04ydDOA%.'wbo*%Mm߻)rOoWɟk8q>x|m7i*uR2-Ś`c̪͞y7Gxj[ц]=;e_ zxQ*qgN^,VV2āD*Cq/z/g#4o _j\&E5>b(Yv,YN=H˼ߐkQӃB^JIQxȇ5G)G,og[z-0v + Yr8Y@"_EeLN*'ְ9_gsyct0D| {K*uu&m̔-'aa6l}LO^Dk bGprZ\ |FJOzNǁ& ]RUK^eM%H) nܸA% Fn ĦfcKDA$p4eGQsaTjǮ'¿Ι3g(t^T*ttteAAAF2r_.ח7}+r&D IRGHYAvg*>>>BT9_.̿wvS]y" |,M5~9ybvNoݿeA|?ڛµ?r{ʶ90O'ۦ=xN\S{ieuO};8佶$&g]WN9{'!E4wS6˱i^^cI`?,=G9ެ}C~kU_6/ ȑ)9ktu@<ȼR,#]<(\~ʶQhS}3?Ǜi oϗ)UVpMT/81%&䲦`͟cXC~2Kǐyf=M .oЄ_[G{~FFn}Oq_ct g|0;XKع iY[cr)INl:eWf|scaKLNm-w[T^>z )s󒬚0)'O2a059I"?nW%f8it 1MY3ɞ{k&M?yAު>94X%GuJ۵DmCѽszSiAZwigU;ۏbƾ6ZňYyV,痧%24B0%yo{xm&PNg/k죍v6ҠG8kcIVþ*_; גCټL-Vb%߰ KPI{uy \3ouGKhEݯӆMpt.Ϙs IsnzCv×ʭTNiXo75vaƊi[^*+܊*V%/<]%b}cG"&|0KsOf\=A]ydC`yg;7qB:M&W~Z 8yd ú4~ft"\BM齂iR?Ljٜg$ QiZג qE+DҔO݀X}4A,^}50+ěo37 ژ4}z#:.?<%.#di~.+{JD5P:?:]O )spM<.*=c2hL`u; [`+& u5T{&-BZ؛o@ Ψ+ ZP}}3K"`Έ40xw_Ζ0B'^i<,1SkVlM2JUe{\bLA2nX`TMs~CB °Eg O'9)C]#+/G!ڻ):B޶s ñXe{,Z^".ؚfcL !9{IzFR@\L<&+QTOH| pUt1H žط{ $ʯ-?\ Agr!>)3ia7wdeLVzQ"6;gۦ%fբ@9bI~,}K1 LnC:Dow ~>N>:{*JUI{J*TéH΍xOĪPt҆>煬&!љD9EjKzOU˛"7?sh|JS@ˣKQn!{Y:}a,eۂLutچ]DZws)(Z(}od`aV8pڧT#[TM{' ~M@=N8alܽ+R2d;@*'5(J2S"^UX+5'߯x~,)/l:Nl+&J'G9w1]m0oW¾ˉ;?14(́RtԪn͙ V`˼;=ZFp&gA%h9r5æ{زh_S&̻AP^jKK$'\bBy9Ӽjy|!> X{~gFG4i Yy1ju;~zgԚ^z2Lb_ ʝEdc}?j4lSmgJmCAUiCw?CGGr+4ܾ~ ?=ڕgXTGeY:" DEb7cޣ&j޻1vc`7v]@PPIPsI=ѐM,Zj5<,;a;[:/e!yxЉX?E[_?̾IJf,5g T[y={{'<_y*9˿I֠$QbϬK?T+P׷:@bg|d-wE ?< ߿'3y.=^]P6[ݣ IDATZ4pCRH'x!ܱ@g1Ux˂cZ$w4k|*سf85 ʱ8csҀxؔK@ *]d_x$ v.&.x ^_FЏ-+;6 }gbQN;^4\d VhDIb{Q2 5 'DgPLIMeE-x ztBMܚ> aX4V2jN)_ͭҘR`[>k5[hL{s+QAq&,ͱwMgǹMJU=dZ񺓙j횔9+vCsTS\0E]S[j2FV2%~ !N-osk WBAE\6u7t5 I‘a]GU.]K3 =ޠuT\S (8Slv_a,Hyf\p!1x+!*τE<ذ=ں^Dt}fpc^G(hM6P7_o(Qxϻ``cռQ;z{n7]f`|e/G9KcT5ݖbmiܪ26αWU+~2% /^k! g.P‘cW&59s9m,OQZ«pO⊽y,\t$EL:*Wa+J KKDkBsrY]ބ8, ׈}zyCOaAľ{“дstPn#Ck=ꧏ 4,_rEm0ϓsOMTtܖ-+!ok1%[6"gBn5fԠu\OPz0A <;wZ\5|ێb8{4rub#̓MY)VDW/IHHG)iuJxRC c | 9~M4i4;W ZSz1thҲ#Ҳ/JBF a`*CЦAGZ&#%\".G6,f캩gPC1F%_U,= [a2 vFI19֍37v>uCmG%!g:5J%:hįK_uPVz4Y8zRqIW]45P*i0.A Y ZqP(iyR2ћdIO!uX!:^~LV`ߠYib\:tܟr&ecݸ 5`/ij/3YDXX -MrpnI۲0>8p5]ka#'{eDYUGM/!!!LmhEq7W\g"}s?1$:5+_j%ŵ+xbLjRmqLdOnw8N:Nvv?>+$Yt_'ڿ]֯qƏA:*za.$ni9P=+rC{W 6m|E Tf/AN((z)GwtgWs^*찷2e(C2C*Ez45ʵݵK/P aYͧ,AY%/ɁZ7IŌP_=%u):;qQwDbY4Z{}\K:3.F?ȓɬW# O.8SU/v7ϑiƛ4irK~U)JEo#<Gfل 8f5klm.z)!r@zx)ͨ!o <;6]+ϝyUBBB?zĐJZ`翔ð"y % İata>1EkFA6,0T lnL;M&Khb#O3yr?3ůUeRfJnJSmlBJ9ŻV n6>ϲ1Ӹҟ8N-l/%rj>ugdj {dXƌ 8śRh݄L*}JBBBrb%yDD[UXΰ" jN:s?]N+Q+Xel z gb&\w_"R_ۿf2Au_55ӿ/32GDf8\ώ =u_(TWO7X+Nd'~ƭQýZ?6NЊJUz$[7w8ZɗA[1#{9u9t"[DР1`՜r)KX6tôٸPѝJ>UX5 74ϰz[w{ÄoY}](Ks~ȅە!UV`17ѱtݜ4p` զN}g|%F<~UP `' 4&^0$5MmMd&-4pFƢ.>)Pc䉣Yb93ԕkCḴH˘J=Vr!c#:Ыɇ2KZǸ?1ůѱT16E,Kuc&J'))F>|۝U#RuT+>8?gOV  [y⻈T/:usatm](W>D¤tэ}+ې,gnǂxy{__Wnik-Acx9^OO6@ʹ+;/UĜ} CKR\# W@Zl θ1?q⨄Dr 3T*eςȇxI+%CJB"=d4;91ڤ>rsv3jA 8F" ޽hƒfo^{K7xuk?;pr!%!!!{d.+zq|_J7ig"S/Kb@K5ťt -Džy-3i6y- ozoMMs{TBBB?G/z'ٜ S4_ipAvEO Z*9rE"Pq"Un !cRvم [u{ܖEBB[Li>M1< dֶ\h Ad'ls5{'0W8ž~SoF=ƙRh>φyے$"r]ۙ}"!!!|!)۠Eԛ_LCD%3ذ6 Ru^.GG6u`,ߠ%eǮ`ϋ4#"S`Y{8+#,cjcu>SȬ}~N:ILdu.ܖ~ȳ!eM61Ŀ\ʺ; mJlls[O`2oSz' io l.@ ":s8}.3x*L[0z&\V󔣫k̚0|-~6#dzcj^=ȌYx%es!ai9*I՟?ш:05ycŠTӥqO4&-vA>aX=fդ!#ho8ӷ m@a)4eCX~@"OAt?/XtWfʹy-gV;[8FO ΋w*1Buy?Sa 읺Or~ԎYtl_mZt' v J2vx,Ƶ({ug'+qQs#ۑ P筜Jo >aW뮣z!?c⡔k ھ(}beÎ?/5fN_>&q,ZG'u|[lfͳ4TLYF}!\Hԙ`ӆ}lL/C+i17Э˚yq^&8}Ą0ydJlo_Xu/^IS Vi2/ӜY< > e95̺,1~lZ0yjӴBEZ5ڹ0Xδ TC473oh)n)X #zG2kʹQ-犷 2}\KhSbë^3ZyDM͓֩&a} ?z&H Я 0l _O*3!z0Q"?>:j5\]zud} ZGbи=59DUdO޲!4wgS)a> f}qlT]?LRfȯl{2wiTGwզ${Ϙ=#2n{رdnM[mz3̇IPs~T\5ąגNU*аJ-tʺ6_n!Idw `[mo %~GժU̿TX;h3+M~*=pljo/&:*̰}KK 7YQLnLDF@7'S4OW*l>cԄlEoپ?\ xQr_5!Q ȭY5$&7^ƄX2Av_ֱl#bbΌ_лV9 3!\ET*O'Be2kx# RIZbxr+%ke?r3R{UeQW7JseʇX z* }˱m3!O>w #bx{u}ŗ#?+P^lcI~-gyُ8_Ʊ+RXY}+jԷ#R]{zuc=, MC?D~?!Y4}8l7#rsg,߱C^E+V:Pt0VO7c<ʎjȉ].=sA= G2OzP86+V,ΰHL3Oi =nӷHf<̅}uhXY8ɋ?v< ۠7T( s[JY0nC+2){e8FxjD3C}2m Qv|L <u^Nrx(ڲ{hMd 7ȏ  ҴcSyz7GOl3G#yv'!!5Vh9 366uq!i)VQ(4 ۲(*'~;{\ GUm%Rn{tʇ8Fifl/oW">R.HuT3Y+u˖BKPY9}9'qdaqzIw`' vN})ѯI]Z_G, Mmw~Z<!ϓ ߢz"QalJ&[e-S;ܟl&8%w}(h;~*"j0nHe*e_{Y8M{(A]W/ېy׾uȟT0?Ғ|idL2?~_XW,o*⌇b;?EC1_<ډًRRI=}3b/w :nZ YQgq '/eCd9OgsPjvє﹅i'q22v&VnO6LrO,QJYPicύkH.-n8?x_lJKE>ATa^73W%A=Z[>YZ3W~p]V:'B7,V%DRo=5Ͽ]'bKq_eIU@NGnAQ+]^"r=ϐh!iV"#)nAYVrZdhbJhŷȕzʑûXs/ו~c(3O1σBaZHֆV˼&o.S Vղ*Ee YJ#ІI ^vdAF BHvrLV9eypH* TIYi[GNrv(Z7 .kBA|..G1t5B0͓-bx+1U}A2} ܋9%UNU>R`jM`֨M!9@ i6w8.-:p j ږf_#5;_ ^\3O ޣ/t'PY7 hxyB^)iZ?:!e:jkܐJ_N]ʼAy6U>xU*ĻH5s 9{7q 4StGik c_LF{g歝ƨX]P WUJ/ۃQO#Z1dpbT^3 ?.RWl S"݆/yS6 )lj1-xݖT,ҮXcoޫ zSC VƵ͘T,k<76{Y`<*]0M@s|"8u K޺0YT^D->j=~u(×TԡK+q.֟$-gp/G qok6C1=iΉ J,Ch5G'778̀r.t"w 7ٵ0EORaVD7K/o@WuWY[Lazz UՌsVţ3Tqƭb7me {"`.  2( P!gRIAUP(\hSЁ^:EPr+4k: CNmwGHt (2NWZWOeT`h&5ϰM1Fyg蘘b*=u@?>\oGucK3mYLrqۖ;'0_QD[,[2q*Y׭ 2h(L:6^!cԡϠVZhb8Xb 7hbe}36\e5v[c`/1ӌMu1UwQXѻ:zΝ^TIfx&Ws1GtweESD7UOkcrr=ϐͨ(q {0f"Zm|o>%#GN-iq4 Xckc|䵭Dwz"1b /Ɲf7*C }v,3L9~۞ȐQ۫壳,[WQwouHUYOΝ,:‰Sڑ5JӇ*h(-XØyG)2ZaG 30X_VMp ePjbXiǎ-$(1'M2nߔ%U[̆ s^ Y7aXQv?:Ws,~<4mQ mMM +^̻:+Om{\elLL{.!!_A$pssKv#a^:u˗4˗v/M n`==8r$wF++Fx˖7Nc_տL F6\Q"W Px5z.Z\/9ԇH@K(:qܿ9Mxzzfp!!!(Jttt~(Gw! ZՍ>  ;fN =RM5sdJ5WʯY?'o"!)оpdlYzUju$$$}ry3 ;Lؗ:!$$it 6aIpğ{Ɣ6yᑐ@C$R}uCgsP ߈UBB"<<< 2?AZHKrIA- D"A!2t/!!!!!!mcql߾//G"9Cpp\BҽDntL TƐ/a碹'vILfx{w~՗0inD}nH_H\mx)kq☗±Y)2Kkq%!!񅓳)16Ŝ(fU}OQf`- >#".$ y 0[=s9χb^6GĖRMF^'^xʼnm)_}C kf_dSޘ{[^˜CKzƷs#LIoH40jvFQ(b=OIRkB7Lq+QPY`<2[Z 3 0˜_zKL_a~o@Eglkׄ%>}!wie ?ǮŋbmYrP R],SRv0_p !!!q4zƔ(]s$Jܪ 6%E`kzӅs8ƴ=m0O9Z>`yz ǴsҢ~ Lbq{`m[Əaq(T6ҙi. ,6&Ry0bl/9l :ƤYyY}b\.1y0B>Ȝ@ ڴSrgD*݋qnU~?Q6DмZQs2V ĐŻIm^a#DfŢ߉Fe텙0,!N9.^%F>PLn%ۘ }PߋU~#z[a)<('ۺ 1B?J!B# m̈́R+&j^%|HgSy j_NOsX΃ٽy7/QL6VՎqG6#9 g}l_2WkZ) nH/ö@ABH6tu@0jVUy]\?Lyi?wnKIH}VI47>=g?ER s?fBJWs&>LW.lW6c?ٷ-h^Px^53~)-ɞ1&:J I)6;wjHIjw AmaUƮC{8<'qY|{q)bQ4=K b\ۡ~؟$3e +q& _}~v狕to#fUGAVi4}P6zSOBHdƗ5[iF؞C:8٩xTσ[3ȇҲJ /z޾}g*ar?\8WwfpV9'bṂc<k$TL%&v/9 ]VYbp/[ʓ̌-1jq{o&6'u6DMtEYRrFltUù8!4KsE4g(cJpM}1kVv|qĘUT)["͉Y=1Э0C$xzL(L}żմOB_0nMDDHD?z b_)9)>/u8'h?b0q*QQ{EW ]1R|\i97;E'(=Suiy o(B#}y0 7\W" QDi-:Ly8$z+Mσ"Jȧ9R?ġ3;P vrRͩ^BeZ_,;GL,k$aݛ[]Wsk?Y Luȏ46sHCҜ󣅫I ;'Lt)H|G(&,H$xR/:r^&xņdϞTT4FhSXBBB">3{ŋ{IFz\>/*@]A$Lw ?iĂ[0yzǥ7ҜJx&>O-v7uyu\&PA*\ #f(DTzp3[g1mU+X2mugy㝬@jw&?En 0ԗ*p!@&K:p3*,̩S γ\Jհ(F9'u,oiM`jP.ϝ㱶f֥ONa䍜0L0T E# Ṣ4=Pٹs8|BdW4!2.OX'eɞp2m",Sc\šS ?(\]L8ԶYf ^(TJj|AM;MKFqfdyZ %jtPdV8NN\<LԠdUϊABBB"dۘ BPVbх41MrC&FeТ:δ*w9a1 `M=<;L߀:ʌ1*'XY< -pyޞR=BрnEK9[sUZ q '= 0 kdpʯe㹋DP<)L8aLk1l}O}l;I hAfry"8ir!@MV].h4h_)Q*eO6DNgm]:F4Y8zRqR"~jLC8.V :n߱c}eOfHV,I[&flZ 2l7YKs5^WFZO#sWҡő)PAbٌ%qRZ4Y9SlT uSuXA@BB"7L)NuBǩxq'am$CHi<8? <Ů8 'ƬN?e#hn,ݣke( p YE73 3X(`!Z-bڹawwww&]4"03Tgf=====޲)?GNoN̅ eS 'Saہ<0jC IDATQ{5hFw&,;c{h@ي.??# DLL:~;ij~ڷ)LIL9h lvU$عO4Տ#_}ʣ`.ٕFUMg*3'_@)\q>K:v]~W;aȋE Azl`hA! އqWB-s.K\ʸkWWri8p40%ɭȱDr7KgWғ\?M })cv,I>wuc|(EeQJ;+yx?/x~8w%(U\AMX\O w#߯* ż iZb(Y f)X ߾Bt<QdW'BJ5%JMRbn 5Υ b d@bOT\K |;gGxRnҤ6槑-iIZjZV*7tZu_"q'tOs`[4I!GEqCad{u [fPX:< _\э -fפp~=t%,нx;GM?o6'FIV:^v0-7.`=ܧ'D~zirK[;ԯO¡,erⅇhB2C1tF.ǝhZGl]mOp꿋}ډrroU?2wQe|qٝ?DVgڐSJc|]lTmSPoy73@ ~K3[^-΢%ҽ j ";Y=>-[@Ilk"lNJrt,Na.LZ/%R}/n{oXO.KX{?SuSbZzukFI}, tgUQCv^ vGՑ(SIؓC+p0m~xCNУoE]Q{,Mݦ8;;4m:dUy;7fTA'/qDh iʺfYĉQ 6D>Ʈ7: fhC}S+Z >!q$$$$R&(R @a 4EgMQD)<7P_S,S+B\.R^4q!@"YR @B.E+*2u;/W>Z>kfE~G„"Jj+ ^VqsV5aeYVwXF\e,TjKQboI[.o}#q{ugQxnazjsǵsXn]>ѽoxK|G rSĝ>{'u5jPE*EO3:r(6.C|DЊ =Uk=D|սBxYTT(d-B2~GϵBqzf{Q1P kZu3IV.'H1׾#jmV!!!!!ɴ3u vD"=oˬCҽĿL;S 6dǎ[#N|KVK"$KHHHHHHdԙ!/핐&ΔqKHHHHHHHHHH#LIHHHHHHHHHHHdʔ>^Я5tkOPYIHd-aƕ@Y*G4Oc`~|_#WNtN,<}xEBBB;ïLiCs5db}qgo?<5TϮ9M6OOL;Rg1DrqmVZ(2`!f,% kaq>>u/ѻ5"ٳf=bLȬyQeC==ָ-.c#e3]/ƛgyM0h1/d87IIuԪMz8>JWIC_۠{w pT&9~^Ϙuth͆ ՗9gυ nixzi Ūv 7}k> kWj50j#w"%ۡP88ZՑW'&ZRzt& 2=Ij3opz+YL0uȡ9h_K7G{.=nHfԲڶ4w 4t<3n۫?;Fvz> ]de[i6r3WkJݻc?˻6>Wd?wK3mЍգF}U}^ Jy^3VOϯw?e0ml@U^ x5K Awٱ|-}%{.0v'^f0EcyϙM}/[Qlry_bbߞ̜' =b;U@uu'Qܒ M:ݧsj4vN/W5GPDֿ6}/Ãy-)s9;{*[&7ҪD|[O@wʴƼV j%OILݻn;aWufOgyp𪅾'-znm>MUUDvQי4'E4Mp5>z^#B6hEIr*(Qw\~>?2{uAԧ 9jQ;<?$hn2c\|FX&\|-8vK[x;ܹqwɥâ-WP{fU*t-)b3τ&}A^\ޤ"|y(ָZ(oF|)WTh@VCbD#U451oރV6i*](2랱p|{yT5+м/;EY:}POX1=nf޴atS 'Oş(˶_} ^8Ȩ9L1Q Y۠/>Tmㅡgml;e'|yΥ)smk&Go{\2m_]w!_:<<1k1Mmx?S|bv0Iޘլ~Ƹ̤W[hkkת~zضN5WM-v42Q|ɀ6ՑUƯzP{MaK/lmXĨAs$.?*%9ۛn4x++ `%9S3a^QMɴ̓#AK*Lچ_:󚞘6N~ky6grv/Z^tSBBB"K{] ukq$Wgkkӎͬ=;̐sŶ(COfH ͘]!;%{L/MWY)szR[2 y/xzVBϵt! &#wR?Q[춬Ǹ]}+S{`8BY)DGcY9[[#{~I+P3XKê`wՈ(92(E[FYGrU̫bY2^+;-;E.W\{xB+Qgiw m a^rl_-@.4tCZ B~2:2. B./S7ք]? yZ&;hw*8Y+ohثutoɜ>{YӃ`p?*ih+a[un"ֶz=;% Y[0QkNdU:OO0n0<&p2'm"di-FD1H_\LP~& KIU/UfIEoHANdj2Dx41V尘问^'L}a@Ŏ! @2 -r-6eҝa^ʈZ:vt7-}Zf9Q p4T6Et->%(sMc^RF ʡdoV&'kU(8st07ߠ+3K!vy(;J%Y*';dkt%ѵ:_2,+XʀRTHn17[_zߪ.@Qmlz2t;]s.OTw:ԱIצX cxƯ "(sZIkL(a  ^#aؚ >wc fccnmgFbBy#d@▼0)Rq:5] W*́~|l޸wP P؞Ѐt9v5j#Ạ1&{2+M=o,dKUΊz-pvϊ^ԑ-yhɼ3>8L,(ߠ5McʁVllCf,Έ[c@ԛ@BX}<ͷm< h~7W00**q /]$dvsjvlR?}Wgر:WuuP۹РT⯍%@  al7mnS3w^}YЙ:9{zBbWvD#\{IcXAn=Ӓ%3D2T)Wg_Q.hܨb]-q]q9Eo`]R{ֳ! 'kEiʼndeK.v c|> aE`lF*hZ4=ܱLEZ^nØ>u~3mj(2Tf(b7Fe Fqt^; Y^4YOBBBL[aE?7D̙RSKr6G*m_2)ǫwyd @4 JH}T'8|ESP<D؞{gZ!`pb\YsyFjDǗ5 \XP?+2mRǯ:^ݽya<\̔ţ>oq [RԶvBx*@>=ۚ==Q>Qh޿UEG0TRMMO28OA3~N'S0#}1?f>$0<1&&nkh֭|g0ђ L <@wnLŒ_Y6*(X9/бc7Lo/|zA#zRiC{ӆ{DG1 jqn4R$緰ڇݍŕ|K-ΡX_ \wﰪ]NaƖ18cZڿp?mʭIX3֧K)K`uT>*6#OӺѢM6=xlo]% UJl -cOPfdK x.}r}f({ BWҍR}tht_RLt^Fŏ܋l1xq#7@ZYPک'T~#2dn#|Yk?ّe1b7?vi&̡hrԔSЧA*-"|J"W`noN)CfF^c0EJـ,zz!jB(ž4NI|Z*Je4s\)GUdĝǩPGۡ7SzS2"=SUWEA`9 oA37=.&FFi:r,_Z.2߶}fmf,5iARBγC3ڑDhtHsy&i#,'cRIKԘzNgul:ݾ+y.N@|*[ },di%iŗIZ:RӛE$)ten2؂cA85mK 1և[6pr@+ \Kj}sH+ݝhy!Rw9nҵۇ/p>eHrF'Ȍ\01&ǖ3᧙h96 [wcxc7,PT= ^lP8ϗM܌j"޼N>@H2C q5H^,Ys'f=[ ^l3&h6`!GZGo*Au:G|YuVo ?IdEo@N\p1 {_0N]ζqPZV-k/cyHvo=-]lK/TjOے[7{Ty.d<Jzjm7ӗ=.y ds3j3RBtO IDATfLB(Y m:RmiU4>z,{qON C} ϠsJHHH|FN|vdb.Cc^D}I[ Nb8x$e8v+S ~{V0[V&Y11R\dϑ6,A:hk F.@Ӻ"|&n&R9QZ9IcN^u O1vԞHߙ)xfCAKYmIdzbD^`ګX9Γwۃ^ua3ϥعj6u8X:nmO5:m.C uXG ? NTf&W&xqjR:1%3gIgYSO ݀XR8h^>yKuLPpu*|M.EyaJ&Ɍ<7=uhyxxMƞT3&]vf2 SʣQ1cl89g*At )+ L$ju\Уt. ǡ{\Fj'D ѯI!*@Ntu2&S\wW9ȚRL?U4zL1%_"d&ˮclL/BёrZ4Ĕq+`G>V J4fN浘1d kDne$O̩2"ͫf>o&Ϳ?lS}N)7}YMx3̒f-3cNgg>O3v5=&׀SxCԼ2.f2^Ejt֖&'w}K3KlA^\Eu%/.i,ДFq(l(Y'70EPYcmJ<}K$$$Mdď\5`90*QTFdtU Jnא]48,]+Q@xƚE 1' Ʈq(6b _seµ @Ev\˵eOfǍ0)(> !#{T4cҘE+0)Dجt9b R,eإOB46Wkf_;# Ub_kwEW߀r>,<'FLCtScr "?1sZ٧0/+Gega})2rl*hۮ|{jddT^XE7jDnlM ,ӂ6MRur5X>!-"Ts3(ZٸH04rL<#w #d#pn1} 6z+b0Ug0 9:>5yP[PDVH'LW#zOzBN *]uXĀiy0UN' e ʕLoezqdWU+L(P*:]G߻|x.k0DFÏ[ܟ62޾[aC}w3.kLh3 aGlle2ʳWg 9o`CVbm_)"RכyZ}Zu~.nTȐ JW>V/{D69Rc_z]ȜA)xI3IY啐/3ssGٲe9z(ٳ#&!0^!VS=dzVj5>oN_1-"6r3ڵhs+u=Yԯ%C[єt sVɿe/DՄ{P*eʔW!Fö-}WdsMAÍm XV%M~"?O\9PsO_F%I\~Cx sϑHg̔עK l"6ZXIEaL> i8D2x"6`t)wɌqO}{?Eصu{P#{j4YX xd&FGg 2_,KAdS1ΗY' :@_dI81Z}|cŁME\ol ++xbg \7UoD2s_GWsA?O:Kc.h1-gjPjՃ(`)3w[c2.=AXS+...y1Kdϙ,] mR^dc_gn߼o=V{1N,gX4hЄCrrlޫy vhvџRq?T»%WaOLS;NVX{*>,[w &5(M>K# J\ y)3L%*%9qm2%a, Ut{>>БJzEѧ~^;w G{GѴ|! 0[VN6P=l)מ˦ӭ vjԦy(~1WuQO|g|_RSl/ndnښ6YD0{/Cv#j,*ny%geJ̡ 2t6X<'XQGA-DDe;Er[`Dm}Xs- ΢ʈ+|UK -דq}Jɐq|-ixc aMR z -i-O%pʆZ"/( ~'u&Q *, Dy~$XKG"<סj#+ɲK)'-^ ^gBؙ7ľd'6%s*]B#iS4ǩm1cS<+Vaz_djw Pµ\ϧ hakfmRHH|m~";gNp7w'V8KU&Zan<mFZ]P\ϱ؟ Ƴ.uf}X5MMT/j;yl߻1!nS~*)Ƒ>"}p6څڞ9kﱰIM}=hx4~Qnh˲G8c ˳deIW"R ~.J6w?wB2IA[(2{-0HL9=RROdNQ"=sЕn޾Gi{^s>XTAIUwRxT2Y&Es m wxu9{C:5} Fp& <_7ѣ5&pp{/*JDp ?ء z1#ڗ[X;Lq ['^})GI%:|=cvb4=_@l޳ 9:5N~LQe@@@6\&9ڗM\maukDu/:lU{;gRO,ض&Ö_eA%[2t69 \ݕsnnE+alkf/w׎q3MLmazxqeB~rӧ2g9{dOG'v"#7rA6Fyo0!>.a|?qUf]-<*gt/qBn? +l">vqia~[cbN_$ZнahN̾C4ڝ}~b ~'McDRܳ)ޏ֘uX٢:Pҟ:јw03il9c!`wdɂ?lth j՟@@Xkpf#<~?HP*uYh5h4>Z57ָN[fVoK'%j* >RHHSNB@āDhh?E * QP%&BDvUE1m1cEIh^L}0yKˡӽdbtȠ},U5FuW:!GRMQ~yU%H/\,>gM_!4r*Po>>>Q|4A7ŞٿE̅~fϙbϭ:(:[|֝(!N[ !>n-k]h2DDʬ}$f/^Dw$.pKX(La"t+ ] id{D{ (1_īmP'$$J'bn0oG|B--Ğ)sRdE !JB_CV ңĥ}ȣ*%ФPoKR݇ B~Tx/\=(." ōq*Owq$=Z`FEh+v})UV4PǯBq "VyUGP4[?зj/05#%_n>"Y&$:\=(.~'S.P"P~;G+ (mE]_l\#RvXD~.g1q"0w6/mAF,3)*]ҽ ugVUĜGIZ!I/q(㽄2v8MM*el3\UOԍxK아wG8p Y'ϩSp(df)h ^K1jcEܭq]¡JU}!T^ϻdTpE~"WRFM <7 UD|ٹ.ͼ)ߟ7fZFVc\qw_z "u6{@{" ?z+W$\>:w%#e3.Mgӿ#!tZz\IeԵPǵUC !:9SN[;[do_ҳ"g N\$x{[l d2Þh^>U:RÊw, d8ZTVY(DT$Q)Y{;޼OoI(PӓB1\&#[D |0#{_cdTnWNy}^]3Ś4Xx҇2H~>B6]e^_˫Kx(Ge/fȸ<|ǟ\cr^it,;^}zSjJ;ץ\Jꋘ\Cj#Ǯju kp-2K;Dž >9<%:^ZQJn_y8IHH+Np.)t!Сdtf"i& ǶaK -s,} ITVdE42lT)+߸ W[md&u.;ػfޅ1С/8ܪq[_bQXJ/z#0/bM"7"WL#ef4jBT^"5|:ހ]˛WoY$N!!S(R0.RD !Z_B E kꊼ4 5{Р7U_-pE"10kkd?-jN.!fvYpt:+;;7t>dFXgLn}>hh?R%瀤@vmװs*S!=uG (tذw{-hjyrCӿ.RKSD er9rue rĤױZיo1a[=c4NAB.MLǞcEѪx&o:J ǹcMr]9>"R BNGcNȃgsNHש=,&qiYzL^+vZȜ-pΤ{ځXK!W[xJQ~tq%=mȌl L%G僜xcKBOOr]@)\q>o:v]~W7Y7c5׮aV@r@Mn4 SDZƩo`d ̊dWc|!x0G}.6!`e26]8O~ܼ~ 2ЧʄFFwg]P ܉:)\Dr?u+*te ҭ<:9țǐOո=Lnx'jna«VkO|LM8:Oko>ŽYc_flGRp-Qώ\?M }i S,"$ "]_8Ly-̠qWB-s.K\o<3ܓ9\D9<}'ay#04ܽOD& 坋R F_#5@acxp{)kKJE\¢hqry~Zu$zJ'%h/o+ .~'2^qDR'6%K[{cC1H,]eɡYnوv&p9;Ө"]/7gnE):8y J]h IDAT%5uXKǁwT7waQ-olt (v'v{zUkb-H.7эsy̙9CaI,νǵ8m#DZt<8tڎyдcvBiQ"ÿ?uC)I/=5lޣkU6'G~=O fz#[T?؄4q6/!b0K *NƚY'M䉓.,znb2s_MOh+!`k 0Ay)ĖvpvGC]*36  tuCȤ.cM =6Fb$=qT L%ɛR%߇6@)tUրc6z+xi pŘu!͓ \=]3Lvݵy~YK[xX(m‡,BrW!wwEǠX#qd Ė^? a_"DaJNj7:߶ 93вal(+M/`ش|̾ޕv8cU8}z_g!3m>w Ͷ%Y/ Ǝ= /,8! 8,kg{We19[x\C6 ][nU`d@&{;"S%" XgP:"WOB/>!rx]cɜƃIh=)&D04+<좍i#T(4-]펊X 8=\:@ͽ$Pq^0giCc3`uȶ:nǵpP'̮t]]ê3ó}CŸ>^(r?ě~mHR IĞZLg84Lm<,IO"$ 7[FdD$GgwV$i | ""ݢ*"؍\O{rqhUdE"4Ml_ѻB2L}ww*UiҵB'?g~GNlKn$^>!, Iky6BZgqn CIF%c4ךNO&N$I9&yN- h/!THDBu/FM-s|$p4Y5I[hE$._XNBn囎y%VX,t%$Jʓzo{FrB,@!KIӉ4,4R{-Z݋hH 1 gӥt"Tz|h2"u! $zTƵ5PGO$笅 WLeDD_TΈ> ZdhaKCR.Rh +Բ!ԍlg[R)1ݘKiPMH꺦dGfĸ{2eY߯hIB4ɬuD(RӮ-Ҁ[S͠%=~S=CRPO=ɬpJ*gYZ$i{vez-[ӫAWf,ӽ5$-GƆgRFy (k hw L#n@nMHKFjb]*[}rItD\UZ߇In@eYm_LRO+IiG*'!5Fk]T)(ZW)CbiR!0&I @@/f\/$ޤ#Bj蘒Mx P@!WS  d؆ܓ)OJ.@ t8;;dt"##'Ne˖?O/:o)PDD<==K:N@,כy o[1ߒ QcP39]g6#TOּþ~: ұ&4aB@BB<<GCH1 0TFCD`e@Ps0pdk5Fihn+>÷Vll_B3 02v0/G.0lo\ ç[f~NT~)K:?NG$wcf:e aw0 0 0 A;Sl0 0 00 0 0L0 0 0Li~ 0 0 0EPΔL&+t0 0 0 Rܙřaaa_JŖhX%=0 0"w6m}ӳ8è('+򲄰ga$|\0 0 0L0 0 0LaaaL1 0 0 L1 0 0 L1 0 0 {faaa0 0 0L0 0 0Li~ 0 0 0EF7DgpKqo9NÜnNE~|13p%WIAEtϐۿ2?zS:!hi4d%2~{n;>L+`)PBa̮k/o_=a{vi2ul ^w+_ k x !g?2=;akD?W!ğ&m>WX PBx#UÌk%qM+?+RUKb%ŕ8y'D:eycIIݕزfN/&( Ǜg.SZ <^vcJՏxz:jˆp^Qh_";+LT4!ܥs[~{9ƭqfce/C]>0-^.Od yi[Ŧ< ^0ab Թ}ގFQ#knEp嗭c< mmae"OGQIl 7U/izDX]FFUX`kg3-NYӂ-lC_%$UJMA,7lt?1t-l`gS:jޖnӐ4  whWm_LAI'$? ڙ>Ӵ`WwyF-;>eh%Ğo-Ɵ!&P>aB;=MD)(c]Va~ Ւ1'=.IA&(:}SqnJ\wu>o%Faz#LjFbDKh$=Eբ*=ck@GE@}l.{b d-=@ .cF] )+8SqCѐ&-zòf#`s/5 ՄJ/4Mewgܬ?bת0uuն=+` ^ޝf.߈ɽ[~u7ؕRWE~vp:7~m1rT]\aHN͛V R5=,0p$Ь@#fzwuAXW.V[d+*iUaȊNû=?G>sϱwȪv@[;5@vA3hkܵ<(ϳtpLu/H(.[ݙ!6~=5nmh $"J4D(Zڤ4IӦy~Fۊas;4eG[Ru&~IХiE Giy7gЬNs2H +P%(̿tx9z;dh>iUJ 4K)BANmɺt}&NHB~≈oj$*ې&l8DwӲa\ML>+^gԏM PO>4b Ѝ[/GDt~^:~6OI`ҙBh[6ཡt1vr'Yojb( Zʐt2d-M&ЕȈ(v'q{Ok$i2Jy:E"=NE2&-u>(Ew?XY?<ņjukMt3v]|#WZ6K]jNg._;iהl*J;T`XR$'">)*4}Dş@6f;n E-Jl@^`7UhOKFҕKgtKQ SLWf4oAKgBhQ;ɱLp(3ZZ I޲,_[[0}+̻ODD4O Gi˔}+;G)H66"/^wND%^]Zx'OIg!·̲wѝ󩓓v("3rBkY!x!'NJR wzzqEJNO̗LݚGu[rzhQ;MFQfMiVq:yb?ؔʫv Hvb-ϬNkj6:zZjˋKVVѴi:s"]'d0l 'iӰ/32@y"|v9I4ɹ|u]ܓtDTvb򺛓*1g/CQJMsn۝jI׿#Nis_*_Hxx8=zTa'י3g(<<ȝO>ۙ bDĽI љʾĽHO\>ZT)PJ襢ID$A7%d.#JG 4"<ԗ?_BC?+!ܝdqA^DAtvqǨ 1(Njoғ^.lg{ZjP9wI%ԯ@ag+U;S~_Nϗ!2Zy^#󩕵V">ͭN|']CbOu/˨XH).c_SDjs<3%Ғ-VI< RQ({ٝ! 1V; ЎXjoNދ~ IGG)1UqdO3"-WӣƐؚ}29Սe/_ߓӣy5Hߙ'@2DؒZItrEү''-L b2>[԰~d..\g*OIl.2hF^+iNU(?<ť\*G};Veev~(YQ#qT틢CQa%Ņ { 5\IӉ{I+k~muH5H-ԞO/UꮢT:Ƚ]M R rz8:4[ӎD):40 e\'NBrE_(\evaQIWNH}NP¼εLJϤ< +m}r0̮z=*cxV>uM=׬/urONϵB"k[}DGŀ롎ɷWP͒q5v>c`}3"Y`o&VƺMP?x oP6шɻGك(\ICzn|}g:>߿-+˽ǹ=[ 0ݱRSAįKﺰκ»ш3UU#QZc1M T6GWWデtfrHɿV,"!xW@㛹/С5V܎Ɏ?ue IDATv3PWS.J|S[Wau8pW0p?4xZttŏةvm ^YD"!Z#eB߲"ZVD5 }T}oǤA(SP J="50 4ɾ>Ź COPi /s8r;9G' SuxWj|> Kwλ"o9`j(-I0)sEKZ v҅d 4Y]s\Qr,Ky@=܄Xx֝A@RvkQI;, w,px}PG 4@qpD·y#X p`r,Z30! $ɱKB]ED\U"!xqWVB!@_Nnؼb1Ĭ#rrj^m+gߟMApg]f_Q)蜖ͽryܫ 8}W :ZI80뚧=ɱE>|)N/-j<u> ZIg1`gk]5>L\]a.XqTJ@\?2++WCۺ6\Pٽt %p\;I>J|n/n^5+?pr gsaK%tl!DBkKdq(U2J/!oo@XD2 \\QVRMA9 *91a8[>$pq+qC= >*8pyp#p\FCP pUduř+]ᢛ_Npr4XgJ(*/#]x|_<:/=psVuڍ *b-+8BU+AeFlڸ%=B~PU+ <:8e4o~ $.¤PO.騽 Gf Ϡ$FFsxd-믠[c'n 2K[yBXony$vRy\1YW*(_tea/8|>Iø@ GпJ{\ !;<k q2L=*ל&( تYVEroA*c`نuuKh|y˰t38؏Lwiٻڶ-Q popx9 "rGձdd h㷻ڍG?'x׷t?K"z5h^_;W&a5dGhU:=Hg0O XY<c0}7$P>ls*Ơr(d* N;i2/O/rGUW3]?.#r˥c6n@ߕ? hS,aƸSnm-`h Z8cP7Ԝ S/=jhO5‹<5X;Cb.5!«B♢ͨ^?{I03wc0y(WQnA혚E1yU(f-{N1`7 2Oµ/ Pǫӈ bru/"Sꖤ'V#5&uWMmGO$ѩ$UbuфB1Yՠn)r熒Owgop Ԫ4)H݁%+ү P(̏)БL4D$/O6PL\a[AvIo9Г9&=*ڈK}-Hs4C:4;:&Zd_#M}'j~9((QJc r4H{X)R ݨ1i$1')b*,@AD]UB4ڣ*^omBWB 4zZ03V7eD紣ӓ_@R#[|ʯr\w-@A,")Z-ZGFe_;Ncj'u$oE眡,H%\}HDTNOZmeSZP|PP*IF6H"#3(U>K=ؔ\z~/u2Rڦ/gi:\F \ɧ HndK>6ƂSƀL:XFJ5I" ?e-eiiTT|5iYy7IVu2\VX)1ƽ66 õY^TQQ.y0 k!jj4ǹpU2:BDDobbb  !gJ7n֥exa5~ݎD<S;pX?|pps0, aґbaUW(Jt#G<=X A$/T5b>ZϏfaA ,@C0\ EO?MÔ$FM[®TLfaJUAi?gaaab0 0 0Lqc#S 0 0 0E:S 0 0 0E1 0 0 A;S280 0 0 K)rgJ.g:aaa~)E;SϟDDD[baeP|X^ 0 jܙjڴ)ϔL$߬ GD򲄰ga$d. 0 0 0L0 0 0LaaaL1 0 0 L1 0 0 L1 0 0 {faaa0 0 0L0 0 0Li~ 0 0 0EL>8p+0M1j,%4<<s.ƃjɅ{Wbѵ/,oGI3&#v_^<)z t:x&).`ћxK~k^~+DSC k2g]unxW߼%@)B_ǣ LїٟC BtA8Vi9P ǵ?u{͓;}ſs|lTL;)}r9|dMS4?&Jzs:Ҁ='+]ٵ!*:C``}4>MgDnXZ2Kq"!Wט7:Z2@8q .Zu!Ͳױ|xTmCygԜ[&E[G})]X;Mxpi$1a=. {5Up!/GI.<-,`'O+]%M@P.u} 'b %{}ߏ y&^Um ѧ[X6o8[4Z:إ{ՠkl; #Ee;o=텩SLѥ_}38+8#fԧ5\*Z˖3}}8˟音1EZٙ:K[6%{'?'(0?Ǟyj94:f/FiڈU  BmaI$$-xoL1VbD ]+GIv͟NN.܇0,=+GϺR=ͩ8VAM`T-Bе9s>z)J #0Nf˷X(G%E}0:u[._ /PYa/5da؛w_hwFnG`։@]9~tNPkTYg=2j gƠ~0Y^dh}n|bKB@0.[穣/]K"$=r4I8z}h]ؖ}zX4o4-FPqmax#Qҩt@ }'aٗȺL8, ve|= Aa٬$>>Ph3 2D*n.m`؅ن9<;1. i'[p7hA1pn?Èbv.)[7g]z_3hs,x߷pC©ؤp.Wa1TyT=UFݪu1KTs\}Ϥ[5o ^.rnp{]yKɏih85į/{ٞI&>58{^$b=Zck_{7n o"⼰ Zk> ,GD}l,iժm@7l^cz WTҞ a|Q U#Z4\}3F"6v2{\N:][BA#?#eXɟG`լ!>.LĻX5\4ԯF.%= qai`ԙ{Wma٤ [uDg4@ӓNYϸ[o<naBF5 Ӯe:ϭDPQDŽº"3j8ǫ.Ņ85}f.c{MX1Pݔ)_Iˣ3j|}99V9%ixZ5U:/P >}FE4j* wЯ ƭ41g!S}]KeÁXѶ>zxosL5y*mOq=!jugHuK]Eްh _m&ZvXCvkP:m͆H<-pXRNꀳ3j8Ef~&dQ,{!Ro`Ƹo$Ze(Jr],* .r)Uɹ(@o.;BZfag:36][B/Dwr]o8Ȯ៳sl>GbkTO! ][BD-tf0Ȋؓ3s^HF kXs2fBv/ȷNdܹ~bJВrVOV`<)쫷F0l m6`܇8q+MLDG3>8髖9n/,ߌs0j $6l{-adqa-@ct.mq}|]λ?Xg/^Bn!)jV()fMqFn TϷcp#U7&nswR04<Mã|0q}ۗ%P\ӮyUļ՛ti3: @Ľ)^y 5>pfZ IKgc { m2bˆ59I ! $\YΠlk'S ݏt\yrשJeObM9j FzꉨvECamx?Rb "V9&_3<+-Ȉѥ9V:zuaOcxA}FcFB>y tV.P >o': O@w+)Rਝ('2U$/mt D=+㸏Y9S]aK"3Bȟ`΄1"F up7jE)9ff-1kO>ՇNl[ISWyH one0iPЖーʨx KŴwQl{7fVfc ah*o'LG H%nL4tĖ^Qq.X'0v"t3sDTg+3M[ݰa~#ua6z!S5Sؚ1Fsܷo/z6vqysAC*c?॓Wϒ`(oĘ5^ f b Uqr_?A߸>0RL?~oír.|yKx4T>=FM>1D **q9NH6( 4sOu 1ǡX4{x ょ O:@ z9gC})+y#Eg0x:sVCx(Xco3z0CMobUw y2( >̩\X0@8^# e6W> _C;S2Yfh^">U+s7rckw3+WoXe~Öp.t "nh&O+WA]S>㗗P;4Q2ݧީNmr|pAW4֙?쭐p$ݼϰ@|l,RĥP @fOa>g8z|?ku]?5DC[z$VȎ?`125#ek\0'ps/1oHw Z۸ `M~ְ܅⩘b<^LRCɓ\-cC=g|Y7dt>8=KTKs t݈,O9Ͻvަ\ڍ}}Ck5p Ž{Cwl^kzbWa) gyXrW A3&/RԾt<),Y){3@52wG_\x&G@fiZf6(rYZ5蕲 v .-}ۯDNp{af-.e!BE_Ŷ^/1 =c MPϱ*+6-yʷİqCh2zΞ>jXdJ{rF4p3EJП:Q&. HE ޻{OĚ[{/Qc7؍ h{? ?7̝sϝ{LT`/O"u/糤"dzOs&Z鲭ȯց[>jG~Ly*&:hjWQAcwv< XF4}RV7ykiSuWf#H>wjV;OjUYI`1B=P##\\@|—ALŇځJEszOU3$>~NN깐%"*z3eD"'F[iij/ DEc%]+cIQnAXSjUR&O -m0vFԨۜK~)<'hp1~;NZV#< B)jZBGg m̜ ,QY'H3)3AL<|\Tc=}̺|[xœc<~.`ɉ õ 5‡N .=&&[T),-9A[=J"*tN8sG[!,&I]=_65kѺ.[Stʜx Koem.>ý$*3ugijs5jѾj1|m3?W𬚟lnW㖿5#יR~a~TgN|ӵ˿~W DS9/_);=eHC .q5% xQ`/q?J3yVҶñKנΌA,z1{ͩSw A3=EDxJ$f[Ώ`*4՟gP-CNu$+1uv 7ݿ*j*wTlۅ] ?Ą471az*iU|b^Vȴd־dô |ڹ gnF&OUcWu%Ń;3ufRrkJ#[335gqqH6ؙ1+E2fH^? ,^xY}gvKihLmtKssW? "fUdžo> T ,"IȬɜl`L)߈k9cԐ=#fVZrWϘ&hOj f]nu`n5hTwe|m~-46h Y3?MA[Tj9^)̳jlUdoKvFj_eJ?:__ÍU4zbKSR$Z-ԥ ǂ \T[2q/͈Q#=a;,I^J]9=ꫬ{Nx&bGTo'Q{I!HZIƳa `UNU2PvfI[9j[ %mp eM=F5wΚȞ}PZMbّPڐ\(Iڸk>o>++/9|:&׬M\tWs恟Wv-S0n`A8XihqlVY损هƑ`,f~6+̙ԇ܍S{E;ڠJ(LM 8e5m _e(3vj5.9rt-_$ۙt+_}WBoHyIij%UD>AV,K yMdrVcVΝGpjlܯfX]xй\&O꿧ɯ٨׸f,6'<(͜N>{NrI|!cq˅u5!KGfmL&.'UᇘgI>NcAe_%޶`uɠ&i[P.N#L 'V2p+Jg kLj7S0;u{֗~N荷кP9ZhZ3/N|n$<'TYx YNv`&/o0tZJDEAb864f\g =J 6acؔ`z_C:FYVND$^x9P1GQ3u,"ſ2Ⱥڙ#+L8B7-aG2v5 duEN4nT0U]ɃA8NE؅jNQ=:&dFν:tzD)fMˬ_nԍm0}d/~73wx|4` чz <'`QJ ??a5cB|OC:ɑV_W~5~5klFuTkL3`/)G!Gs^Dplz.zΜWr58,I*G7 h4ZˠYQ͐gp{t{/Q<~=1uBX;O8|F9ȭk jO? 0 BؼȆ9L{~uXK[tQ*I]V;'^ᇠ/J9)pl>%w/~55M~3Hu:[h ݊-ٔ1hT_3;q YXo3ݏ;|dK>XQFy{ͥ5E}oR >ʞ)smLdݗn~(g# OŃ), 'GO*9[$ׁ۠#:zgFs])^0;`^OLm %Rm#yK;CxpǓ0\yj3K5>՜VӮ=iڭGR*u.bƌGa璃m30_z*Z=c?00%.ffG) D}97byiDgJ2ݙ3UMvlbMKi3֓uYxIڋ4?9꿋>@s|vXBmY_@e.يfCWߗ̂ :R SkN%净9y en:}W(l3I^9E3ƅkg,ke4XYۑ=ga],j&:~}]E޷cI%}*00P;}!qO9roNL۽#܇Σ8labiJ8lax߿\ڒϚsjtHD^o>v|H+((x:Gi5k*dvDAAA!q[XJѢE}ٳgh4L)((|ujP)(((((((((((%B*PfR93[6bؾO-G%C!iSS2yf'>77GlRũEӬ(?QPPPH_kn̖SOi2`HxZSy}-K7p:UPhN]?{+UZ'nxY]i= i;2z!* Oڳ>~G೤;%kӨڳnxq%Ư/3e ܑLy+jOϳs~&^x((((_TlZ^+cz rz]{ٮ4S$ԊSOF[;edQy]4XQT,}MBՌP wiɺfz^_YoKQ*=K4e ;†!9/ceySM<;ߔ"W,,I({ Q̚bbo^T X+c'tMXFeq13Udx)P8VZ zWiݏ0a\j8gPvx8/ +Q‚ZB\ <[#vcITsL.d">R|Coj|3)к4g_Qu2?|߿3BC :ϓVRB1Wj;rjn1*QLE\_~} tFqyet6>2;"8%u~>AoylOrfK_O2'n@baE KiW{K@n`6oyHWw&w쪝Ͳ_Սѥj3ֻ fM~L^p&?,jSAԕ4.ߑ&ZtO<͙ ~m yScq~:(^]Ȳq [YGYSg¡Xq!ycso,e߾}! q˖-[$,,L/_.`z,TB92H: s12` {{M YӧfJ^[Iͫ):ۋ rqDѹv"(?0K)2dL oE"DhTYJDD$"Pƴ!^ԥi2JI͹$: ܟU]l,Jɸd!;;fm>r4*u2|J3\.dԕ_$HRVF|""-m^,C\ltb5&娧RUl-4rG%,GhubQ\O:" 7e/%&l%K*R,X}RI']ۍlɺ.Z:*}j%}^Wzz[ ]M'”s :KNbъKN)7_R -[Iطo?#iO^pqn.gnü[ؼb.3QYZ}£h>>%Gݬ۝j^<ٌqYΞ=ɒ֞9 ajnC5>i3BS.őT,fy rc:k \uk;sG<-;JbYaT.hBX';GCUWIpeFI+Gf%{|ou'cSzwWfchnX_M)/vaٍym +6e0IAw(PfgQp`C;>ͳм(U*vab7.epP7+OYJ)<]י-T 6l`oq 159 y{gۮc7ab<*1@$zN)Tj=Vj$x,3j 8x)&ld ndPXn8#I*FH=˄cw?FqvKzt*ގ_ԛMJ'>h`]Mn[hMAܼ ;Nj#W/\`]¹fd/{_6@7DO ngɢuw qa| aE*ˏ([3(]1,csǛfçs`T&MPޕ"(CkrΛk^lbsxqGY'\\{oKbDۂAU0 "#CK3bxBv38PhX2K z1ؿ^X6C?3=̤K^s8'^dke,;>ѩ;#B2 _MS; 5= pUz-euķ.9X8*O^lL,&:s +j%Gs)?3Ox.Q+\\!!O 6ABO0[ ȄY1a w?524([z])=$Qa$39̽JR%sg`H>ām/+pڊLEig NkIJ=MM.,K2oS ?BmF[O^fz  ]:JPH#/kfЋdo>a'/sqFeFΘ F4>4dpLeQYeĻ@ 6t$LV[pFNBuOlEBC;fȒIEHzMqn[y;g%b%{8ٽs`kO΁wyP]P(bWcG {MX?QSiЩׯ`«0CUV齃KgW3}ǫx? HB I*@:uqα{@8N&k֎[JZ>sL@QkG;o3lfZ\)[!&DJ*-{0v7ٽ?ܨ0aJLX?I?jV!*A6mW _C~4LI7QJoaA)fW `KglW8%!htVh+u!O0{ r3wv_أF f~s lS$y8Ŏ=Ao񞝜QDd.S'!*Hy9ʻotF\UpI|+$d|l[QNG=T%Um1}bnŚa2YƠїoIʂMfwml׵r܍᤿s 37<\??#}\1ʮ<'r>.o֫*mԮ޸;0^|9EA}N`ʖvQCʇU2^6!zvĦI}-1PCcԃdRoAQ>3rWnRYQ{8? qs$|O>(((||BΉ 9<1ˣ(3{ OG:_oc舭 u2]o=r'c +kcnӬp-ق"Px̝6NЪ/}7:E-7Ƒ0ќѴ_ Ycdm4\JSO5WېGR^w`xyGNFX" >#LwX7f>< 3wd8gh-ڇf1@ڎoU0 [Bh0raByIm_@ŕ2IY}ISB㘕neio9#V'o\6/w >wl0V1DMas796DrI(d} 4#H*-ѽ~v/n"#VDRΔ |m~_2#,OlѫGAJ iF3aQYeF>/H>_m(um-_s\{?vܨԷr`ZuMS6٭ʉk:њkDUˊKсwc#\Ly؉Nk%; kˋcx%-?}cb1IZe<+AGgK=h5QPju"D}p]!%\QJiJMOGzXH=ް"& 9>[+muѥLyIיޅz6o,!k1i:zDz\K)A,VⒻ_I8pA#ziOʴ#*Pi%eJk.:L[eW`oxqa n^N|\ӉL6$gzsU1$X.q1>/V ֢X{!{O쾔;ΟD6 ʧ.߅6h5b%ezog&y.>xN*~l"ew7$g9#kwF$V4 yȄ3'MÕQ EHt,M,Lc)%wr QH>F\BIr0}`勒}DW*ioȚ>5%OFkѨDk J7oz&Gw*>Zc&ٻ~hMrt|cɟJ44Y IOy׺dIs GQyy%t 9L4z/H82RvkZtV~!__C%** ??:Yv9r"EsN`ҹὖ3ĻI!m8|0ŊE9}@ j1G;Z?S; /D _&44Eٳh4( #uMcCyi|Joȓ u;#L)((|Lsua'pLmHN1ْt_NCF;SVgǁpz@W)Kkx鏐G;S*|Z2H;]~:+((((((|i3Un]֬YlDt<2H E :0WPPPPPPPPPPPHL)(?L)(((((((((((~ftg`ý"O2GlҌ'i$P0pm~1SL<#8υ+_zg̗ۮ)L2Ľ|G?a83vE#<98.RZ4_̔Zƌ[Ʃޘg\OIkbg,)|iN]?{+UZ'nxY]i= |F|&Zy%C.}~b_@& aD;/2˛➾8#Nϑ`%kr1rTF?Cĭ}t3[N=UPϒ~f*oMosn uZWYX`){,RBN{QAࣘ)94Xﮦ%.U&pƦ.؁,{{=8'`ƎuIj[NřYj%Ɂui8x;bUW^rj]DyQUgzZy+g3ùyߍ`Ѫ"g&ш(tD2zK7ndɰ/]WY*I.3ǩkhmt{MLiycy/GFzӽL^en`l˼;9i:d6˖ey+e~DRѥj3ֻ fի0yy1qo(8^_XJڅh);eۋnoM2ZY>??m}U4qP5gݥd)6Gӂ]IgLۦ;mOUaƶɔmWxʎy칼SzZ>pě5zN R"uFxq$?їf lMjV~qLh#8_SSq!W˗/]5'ɩ̝9+uԥtt=IxzUU&mKi/MО hۈڵҺLvMUt:;t wVӡҷv5?QU14'ƽ֊go̊vᵊk>=^:3SoQ\:.[  8fBLYqbiSF/r7z+rW N^F5+%:L7S*~)8Fslm?ߍO%a"u,ڞYT-IoQ71pop+扽Ehxq+ :vX$Ix:YXY%$9m@L[ilWޫn%LRk.,A5 X,qQĨ`sDRRi):~Iߕ#OGZ-z'o~^R𵓶3Sws9su2U} nnm!^dقhѵc+5+gDm&h@ٸr,t\>.E[\y4څ [u3{R&,uY `]l c3wCwblwy'GrY\IWk>v-Ӹ [ SWdtAI5/fh51^ c>ٲaԊ \uk;՟h51%a(jx$0ho zb CЫ$pp(S7, ROr9N:1)Fa=+g147kJ s& ꔗW;Xs[W|ߑ@Gb0;{>&;0n~Pj}a6fFOa歬_ПѶ<(mh~fd`8záw h^Ljx +mlbQTy>q$s_h6a%WM]n mb#I3 )?w`~PcJ=˶3'ceZkgsvgֺ )գ[okjy\:YڳpvGM*zw}j+FVns&AyIJ?`퇣*‚9; }wͰEl0NYNG^z$H [׳pP #xs/oKزk+Kv#Iʏ:lmdb5z|ːdx|mf+[̠KoڌIoۢdT&<]י-T 6l`oq KbٌqYΞ=ɒ֞%GXuZX}'0ƒ$E}Y2$d8/C ĭnyJurnɻ',m2Ȉbbb>/&tMCt'.)buQ P` HueغM p IDAT\%*Tn" LW%"$g ""Qr?Q"Ni$oUt"u݇ωxIqiH1 Hrih)I[?dze+qhTՇ,c%fcSb,\6t] r+O']IwW?2X^ ܘTNeeb[OBǾ}$00P{T-?Kp9 ^HdjTtRar!P1qnb3ũX̒ǹe KSW9{Q,iki\=8V~|*AGO2Л}i<8G2|rOϡ(TCnsX-10hB~y3єŮ}x8ZO0ry}ODI^5(zڪ+Z;p"KF)SK#uỵ`Iī P{Rfit% *-q&~enHVZtڃfz\VZ>/Uy'9ļkS".j0'>@t9WĿJ,fnDFr5cJeIKd)7q׸r-婤QQܰ*Gl,)9˽maM:=x2V!(]2yΪTHIy˔7ns9[{w ~,cj޼ų`j͝{iglS&r_YG@~-¦tyH<X}̓اgc~1ghM~3],9˦x TԨPkF~Yfc[t,aƛ*=1df.܇v$% Uc.K1uuGY;X>oL-[/IuIcb"\3NIRi/-ۖ ֘1_=>ϐɿR ƣink尥`N6ƒYәڥ4&~Qx#vϢCR{n% iPO)³"I6x[3,ݑ M-J-ZDZ0%Jrk6[pJ Ղ<2bUZ4*3q*5VjU&(-ғ_ )ǡ|۸g2E*X)MtA%_%] LȦx'Sr# yiյ:qz6] Q8>\u9(+G2l+'L3`-1DǤ(K sٜ`Y+9M%{!2wm z85g=o0Pmk6!?Vٺ-ȩ[r=C6e̐JZx3Ƿ4(T*X XNg'yOKPKx4jOMc+R0/`?1TnO<)JOsٽ':QJ.'1_-+OrnOX4d'XʝE 8?eȡ÷p 4@?EODfK551y;ld3 +rdIYj0cK4aG5W#OAɞryᯙxfcAbr8KMh Qw% NbʮTPpW,S&X5`<: uoHm—QH! ܶIڞJ_xyNF"7i Q,@ଡ଼aG$1_]67EO6i y \ °Tґ@k>|uw0_g_/zSi\s[ͧ` h^'.gfx|חw3}0?->c_4݌u3%kvZQclǠxe3gQ@2v=7rS,3꘣_x *.JA3㫹x&=<4Kʤv"[XwTߖF6_Y8->GLN*],7CtstuO]o* y4í|[- @>Z_y M ݅Ur;Z>~GlŴ1m:GLx@{ /kaĆ ]W/Etdgo'֠⨇|-Em֫+ӵ{nƴ̼^1HK`@DpguVLJ;SR:$]ŭۘ?m{UCrY6QZuAާrӎ4I2ØS %< Yʫc'oe,=%IʓBy:]HR3r.[[qNf>x⸼#;8m-=ru gEu,QqլHSfm^ ݻJ}\2C¶Ez}r\A~mP;t܆XLC43 .EΙψiУ#IR?>4ؕIFѴm >QBqo^)+)ShXr33pH,=G3 *4H~[ݬULCz`<j笸K({OnheMا7e٠ORk4 Kr<&XtWܭ)ZĞѫ2 7`U6U_Q67EfPDGGB+Z!w1ht┧tVDDr|lIѩl˒t]vO gF#ysaףpE~w7sseDkkع}d<@|wjPZڊZ+vRHY&[TAnO[ ڑМBb<&:Tֈ!k)x:,rQO,n.%ۃ\BP&A ח7_J3thMoLPm[IOJK>W[jl٫G S>m *Oȸ^GvG̱^>(d7ߑME8J, "=%krςx)&]%t(ݴrЊF ;L=ӕ ҷ8m2|>q^<aC!9Dk,RaVd :+k;d7/,To!KX$W`Su,!Kdz㲠Sek>^O !~DDҴD.i#P[/gn,BZ ' ';{z& MX.c)cYX/Z^REg#MW=yuN)Ux9Dk]5g*td1E+"qeݠ:=hVuIE'6,TB<K)g)``wf;'J >jЈV\r ~N ؑ"//*'yٔ PK||< Nfd9:%OދNe۷%KBƍ_`>Ǥo=k:Pk<ӎ.Q#]2EDDPL(w_ .]]rZӍFmdt'B $.zb7}^TPPPPxDDDCR2NTTkkr$P_Ƙ; zrCX& ȴRrYxy[n1oɐRPPPPPPP|AhX}?u_~oך{ˤ~c]'?M*藯՘2;Pz}Y46?.B(-u=o7\ĵ'2{L ;|ۍfHYVc˿hk֓SPPPP TXXpPݢCCѽ¿LS 4`ݺu;"S׃ݡ^AAAAAA]O7ssLic*3(+('S y2;UgGZ7KG1iuL9eΌ 85'wre쵄sw kG}ɴ1I6ǽt3yDo0 7){<>m6w2NOAAA5Lgqjb'q -Mz'lf7$=;25 ]Wh2=ݡ[XY =.2TiA$?u-O^g|T3G]1]Ɏ{{659m~؊챱uïfVy_g8.OSea㔛|ͦ?=.? d?5ƶ8NlU4j,3MlE n١g5_)C{jyt6,ɡZ:^c*G0vxNOΊI{ZcӗL8½~tZ9ij|r`ټ'뾠2}:\^VKw7qn@Q GuCO2eLM>V_n^2>x!7Yӭ6=6h1}55j]7j\Oڷ@0P]zLZʖ)sZSwh9cTGzC }od>`3XSC;E_l-eJd Mw\5Jڋ^2_Yƌ5F@>+Wvt.,CQXb>u ^T,ՒNte=kaH~[ݛ"59[a 3~'f,{n^Y3±x~ƙb6ycT8יDD> C!?ɔn8_ v^5?okQ';646xlWk0G:[jϿbAd[_3@oNӲ>eɫ4&r+ql1MCkp!w,oiE0K?~vsMg1qCj]̨Vz F,Nzx_Clڟ6u*R/-̚}˩,Ԅu0u u Cy?xmSТ4>]d_-7?/Bٿ/ _1(N{: V5Nj \_FKxPk6{wcXԫׄNC~byԋ_rB/[1P,K6Ѹ ldԝ9-m:'& c[ rEAkpŷJMbed;y33Ś0:F֌\}!ab̠ypkq̉'39s>A\l)X/_bDof|2x;٠ t"SغO,qŐ5ivmغxQf;DJB~x'Gz|/ Gw$wN,9D%Է/wÛIFkg!>l<_3r%x,xd!wI /72'qA:Β&#4(፳AGx\K6} nOor[PT?n{b;*́= K75GfҲ|^v5 =h&6C7lu\>f+f/N<'է^UcPf'U6od̫jg*+U%|AfrBsuB ZsK̗o >;|KD]{h$N,7ǠΏE;IM.8whϏ![L蹽,W~ʡP`yl)ȧߴ&偋u^G?|Ҷ ĝ]J{ [{aHhXE;v2y#/WOr+~'1{Os o"bh#7oe㢡.MFيʋ}ƳdnBΥ{8[}I `V} v}<-0ffߛ.?΍q``<ƄFuLټf:] jxd(5_[AjYīu;2ڠﻙK L:#9مc݂1t函*Nv2FVaaʴJs[^ȣrk#U) gFbBMLCYw Q>!>T5KAeNcsذ=q5$_I,ZnjBf YMl;ETTf6IPgi_ȶ+*,`Zb?OqkE}5'i>f AA?=aƵϚ}da70`F-\Q_?7b^UGwfC~-;tR7ʺ\ߟ+g>QԷ%3)8S9;3VC|ǙҺ ӟE0UHVi$6ѣZ#t"΅;zP|n¢ 1nqlYDFEuʀl*(("gNTGGG˖-[rJILP']k;9boD^&8~,n-/"dqGS΋I,q_6Anv IDAT}E-"ro[18%1GWdvu[qnL$~%;Ԛ'7M7e^-+L3q3{/^GI1FKm?'=&KЉ1?*]ݻ֧F9=hmˊI|4kd ,Јg4xD_'m~Q*H~tIRejy/M;#<<%nR6txS/yRDDW:d=ݲrҘezE8 '""';z+v$Tt7"bS>dw׈Mrv\b2XZ¼^,|]sچ̪n'΍ʭg/yznl'&2b^񇆉W8 %FH+:r ^Gr@R{z.y>.=u?S<5/|RuRu51Q}[Lt>癙ܤrsn+R̯֕c'2dʢ> \5R`^}-Y$hC"R9j$C/ڨ̨X2ԸҢRU~l40˵YUEy Ӽc+L;(28 -Z߁Yc7K'7nO$O IFZH^m7Kl:)_b;JV]9|. qS\+Y;&Ϻ\AR@Sz숓T' 9}ȏMБ9Dҟ, RO˧uRv1ȓ-NWEf^|gmI$"q{I>Miދ1At҈G/^Fun$?VED슓: uRhAI 2"E*((.[lhٳgˁLSV 8&M=;Uv⹸[Z G7||8PW$Xfhjyr+wUxUkG*%)A9ZLWYhpF.I(0i#븾ỵ`I \>,K6U[ vTBN-wx$&s1u8+U&[5PɁ#)ϟ_X3[7XpAyž>OT7\|r:V9̡[낉/ے-UB3fPY#!Ų*ٿU1g6 ֚Lb9_UZBejuZ00=KOAQ! FATԛ1ɞ8B6h %!izTըUa:J2.xcj^m>hFc f3W4vQ,ȦIɔ#"<)du^ZuNޱMhT?EQRcHa]Y*"%)I1eV; +s j)[^||\/aYs5lB:/y?ϽkSгǩL_OMJ u2ϾP`yJ o?qEҐPKQѨ=51{\Hqd3P=M*=Ze8lD+d ܲ+;$KNS Lvz܉Z94][8}CV ߟ%Fߚ ~JOu$H_rdISi[B^_8y;dcS_OSVX+ E˞0 |E)bw=[#X0M| AaoZJSE4߽+LfIu XLbcAbDl|E#ǣɕ4uy=`0N R::Jt2#F(o]E QM6U*富lE;B8 >`GD,.Eɝչ O6l~^feSPPP,>JۘbB1|}7p-x VSaJGT7U} G|jj{͜ ɩvm[ ,n>;MS7-9q(3U?fT*i֯-G˵ڠ3Us<_fs2kI iyt6ST8gu~Ctܼ ѡ?)Uxͯ{|zSi\ȣmh2c?dن]eV (MϣMXoMJL9.g㛚ݟE%Cq481G=ma -Zn}*0oo:YhHlmӯ\gØb9G/쯥Gz ǫv?-Qǟ[1m6*LJaTwncyUgeqDkqzM;+'!#`G#cNqW50d+GǏ)ꟼ1h_a˗`pJL'!+O t_cf;8w!IK5.ȹ`omyo:a(HVgkzзbh>-ݳDW"6ez1/tZ+iwq MNJBSof;/Q<r7_ږOG4ОIӠuCږ!!ݨI--Gi 3huuKjѿ_qӒoU9"o͒2c*؛>5&hQTJxDf2(v3Ma'3jX(m+eC|2g ~EΙψiУ޼6_t4Ϫ!hY=Ŷz&KQ_wCwb{34P{3YY*x/sV\ %='72LOU]Ln/Ug`~[}*.}z:NA2h45u yL/X{S=WeLE3lor4m/*;%(@CR4:qSN:L +""F9>TR}ir|nk FAm eWu&?1S9i4/G\l4bw\Me1钬VJbT:GO7[%sACrЉ[u#tY7)~}$A [:rVX XF9>o&nK1,ӻO/d4'eRAx]>n)hGb۲gX @aA/2K?O٤Ƥ:LrkjЈV\r ~N ؑ:ȇZR^qYK M @ P%>>… '3۷o%K$$$ƍ|I z.T#5@L;Fݙ{ODD˔Ir7Aҥߵ/GU!:=~kQG! +XQ) ;OLxWb`>Z߈#c(PT Fmx>ɡ&׷1FbH)(d ȴRrYxy[n1oɐR 8y^1Na#og*mNwZ,v9zӴ۬rQ_bv` {]Q]b%n?Raӟ.ecȴ-guSaO; qɢfvRVo eV>Y=ƚcw-"TXXpPݢCCѽ¿LS 4`ݺu;"S׃ݡ^AAAAAA]O7ssLS Tf)(((((((((((WPN2bL)(((((((((((dŘRPPPPPPPPPPPϔB&PN2bL)(((((((((((d嚟B&PNu9tv^S;O_s Qm8#[|iG[M!}6þ^=`x%c Y|@AA!mc*'d}(QKc:3`8T;q5"#Ľ_#-MƖB̙P6aˡ+ ^psekr?Ќg3q "[Jaw޹L\ Ʉ{)8>p)4=O^o\ܿ-wW_r=s1wϕ ATݭkmZ]\n>{-gV@z<2NlP>%scc_:_QR'ҩrܲqMOf4F~CĬϩW '(f..nfch=JLNQ'g?d0rsrYS\,-Lw\9#C_.2f1RQY3ʃ1*nƂ&;~M]te=kaH6MТ͆cƢӴûS^*FsXB$apu;쿀 ߲?U~:. 㻖㍢X b~kF bMcB a V7oP_ofSm*d{OnZɎ3%3<Ζo8F7dh!?ߝ$1; cբw'_[w3`<2rC`p-HA359a31C7_I2+N[ YQO/4&%|=pբّp=|ZdQRP;eS0ɘtС5hg &uǏN  u*l{qR5iSY0 5taAëH|ۦEi}2Sɾ0[z! ݛPrUwȦxp055ﴌڹs"\ߴui\!} jfy ҔziO;zkB.YhKkV%ks`˒G458nv#[7QV=wF7C , ~yBlc떡P.4h V£7㟹-`::sנ͒µx@o77%gɚ6+1'/[Raڎq-[/JLp9+|bg!Gz|/LQD@. Z-~KܖN?bg Cwp6V!A{!jCb' wd&-&w,4:d+Hn3m`zf.|fGdzΏ6E<1h\}cPKݘr=pѢ͒2$<:β ) JaĎ!za]NxMzTN[2vyZ]|+ciU'=Klo\x>r|qObK1ǜXڗZEgKJx-UL}ȁFҝ3Un?;6TnyV JKOZGl܂ ^ʾ}W4UcPf'U6od̫uVh5Id7mp͛G |[CjBT%"p VJFb!sݧ@:L ت`BeA*Z~O9~S@J\^=M1xk?m#QϬ8-qgҩjk~ֵ^R(Z(VQ{9D IDATrOſr4M$ q|CYy+ ti2}Iv$'s|HQٸ+_RTv_U %=k{}vH1}Ɩ< L:#9مc݂1t函*Nv2FVaaʴ5- /uݩ¦iKzs, ?CX⒨>m=,alں#jCTs#陹o.ر}U%ע-:{ !a;Y=w~Ji',._#rFe`BaD۬"m^XYٲ?12ӱkXVƁgm|];Xt0l5!ʧ7s7pܐ}-`:5Ο FDt©pgCjϭCXo>-.6Vfښ従bۋ]u?jEOWETavx6o5Pi Z6Qf3ϾW_1!'U`IİtYrBd Y$պ Lfͮf)[vlenuQO0gt;we}yږJ؀i_?n#{#vjRoj^EK ;gNTGGG˖-[rJILP']k;9boD^&8~,nEI{7S>{?nʥGυsʉιlxlYn͟A'f\:7MWK/ LUßQR%hRIFt"FOJw>j.i $lhI@m(C\ɯ!I^6-SkE_e~ӄW\M o%O>Yyx{W͒DH["BPR]3m35Z5F)E-;AD{#AM$~>9yyhJ*i=Z6~]eS攊pI&T6ۇ#[ۇ#:.tX-"9?JvOؗ"~.f[wm,%#TKr%=O;1d:]F˒[{$ ܷ<\d/bE,Ɗmu"Wc&^w'R?g& y8^i[b.39)[9+ì)wD=oE ~POȈRFUb $Grdh Dz[HNc ?jK)x䃅Ґ^_X>dRY%k(fIxjx%"1' rg"ij2Jjs<0_cOd6w/'$n\ UH"2]'1Fx*jPE+ kS{rY~f/C1ww#iӛDvsmSkɥxtE*Y̕V˥)RS/%4sKY8Y&[(ED%m_KZY\Mp sEǒym&b*Sj:Jޑ žtTRxq1J/<GZډ<^)m\ R)2u:k>WHHH[Φ͓ҵc ?BuМO=~Me;"hl!:TϢ>sb@|FZ޼œ5Cgv<=+𘣡'2ML&L&|y)DҸ'ܾq;UMᾔ.^cVp,ծG\}8fsҋ&42x!BCC]6&0WCnuPOu_i̕ݨr5EƬbBn3Tζ;Y3{ Fo{l>q=#|mLa2(6ihq͚eŋL ȵ)@KӔ0y4y'uҨS ~ >^YquAQ>qkj0r|[X15nݘ˟8N:c=MUHz~EQZ)LO>ԸSz32L SPn!o+nMH4g$o+w!.sҲ_;\Wϔ;?_,\\0ø>!h\ Qgt #m%FqoY[re9+ɢ@TzZUֿ|A(f:-8 :hU:U7 06ߡܰf3찳1?0hX b=Yq(1NAsϔcЃj!٪rtظa.<<ǖӴtQmG0{h5x-N%]ŋz4dC4řV1L^M8n$x_-ܲy|3ћ ;Q:|mb~ϳ34)[_>!뾱LkpGO t)AlC ħ`ٻΛ?b߬ܟ܄*$œGDa+>mFF=g DzX,bǰFmF fe׮Ln[$IHNl-'W\O>ob)S*3)ܯbMYiѢj2xZ6ㅺ1yvvmC/"W?KlZ'jrhe9}Bpk؊Nb[uèx9!6Bk@#qz WoNxOBDx8eY{34ܢvO(ns&^DtVEGZ4iVO XVDtxŁg}ّc'8+LK=jt`M)yz* Gĩ3;۟=YȗZ&L=͎p1tT)ǞG+FQg h*&1fdJV_q|]>_ gxl QHgWa/\`^"U8Lf%ɸ{^y!_z׫Gí$]:h&fAth4d.[b̜-竗ЫSyjs'v(LR} W41aڿ7 &N++޹|)> Q8Sb1|y!C'ơj;K5& pYّq%AEnćՑZuu=s5C=q/QxesZ*|2JWe}<tmOVc4mt-zJs~d=JQ"S8o Sc!(hQ!ngb%}z6ӻ}HQh3Ah7(e+^b9 6F+lxsodw{xb9É3imvC..b֜Y'WP ߾-^Xm+*ߓjԁ\u˓|(8i=R(ZFVIIm3Zoi+aK[zG'<šzG$u}eHٴ>)Tx|,nq9E7)i+}Wi_$Q_V۝yTڬdq*EIm^MVyȤM:t6l cY5nn1o@ht!bxLOł\4Ab4z ?٠ ݀4ƭ>>C[ap{/le^E;ߠ#? oH.\uӫH>*ĕ5TGFw v.fg҄i>kG(]tsd3wwd@c Ǽm}w  f%oxs +JdpxBlQZ?ݱr 9){g@# gpT늴sůc$b_K'FRv>Ę:idbhbhO-`xYFko-֋k!ypdߡXpOjA[g s%?"x9WoRh;mst-<|qp䉓[q\֑sӃܚλ^]zx'0b8MkL ?;6i\i+hsA|k>o_<Q\;y, ;Q=G$MEo_iERU|&*c ,?r:peQJIep{ CF#c$S2޽{)R8▯PĨ2b8J)W$ёSw] ,&7v)b'GBɂ&&1֙.ON[NjF{i٩'I%$zdWN>).o[ FȾH@vG1ij2 fV/Y Kr~G_);,~*nK\}zʦ'A,7e7ͥTN'1ܥPɂ)DCxI!z|VЎIaE7,':Ao'Ξba'RrblUp/#_LzB8 (Dr~Tv&V% (`[KIbgޥObw~lKvd2䓠5wM{rO$}ҧiyɑI:9yHwMC RΘM6ķ2cd'z9ZZ%|Ү|~l҉`/\YFx熌R3ckr.6>ͯG_2l{$S7MgJWB) ]Fz.o 䗍>[I… wBP(d84K1t0grץ_>wd|Lh@yأ=I\ڍq aIo- UF}L`PƕeKHlbGӵ fhS%a1l8V~tE^ĥfjO+:Q\lMpfNN奛7-mՕt݆U^X=`H}&:Cx6F3Y仅Nlkp3tO퍌꽒{gį2ÞJxfNڙ6{#~(BP(^6?ŚuxPv\ 3LS/ǀX*; ,j$ϧۓo+cLy}QR4;NFvY)\+L㥴ph]۲ॊØνidεKRklC#mD "| 6+I6IzҸ *㽻}r8)N%(Q%Jp6#M'*]Rju}˰fxp$s)x,LkMd8?| \_ߍ5iR%eLa ܌ٺ{:ci_l̗q,lIO IDAT1R) 4NҕчKaJn ґcXB`Z XOʑRMF P0'|d6a 'q2^.rS?Eܮ88z[ N>6u蜓FK|tr>}&#Y P9gBԨ-\-m7e{%\N JQDl%sedr%O3A"ޞ=xQ̅`|Po7;G2{&813W7U`^M)Cp_oTP(OέՉ+ֱv>.|*~_&̄lɓcֿvYGW.2MqhK֮gլ9M7@mηrQs~(-P{(}cZNEÃ8,ũ^#~RJuص/3;C #-͛8"W1αK }2m}4o n8] tH`OySh aH1U/6e׭{}t-KN-`9ä;ZUu&6^[ 8|׸vf͸%]: _ 뵅tс&|| &.+ z%–|v fā%kX>s$]I g nN` mnxC2KOPTVYHdʍTn⓪3L1zN[ŦrLS-ԃi+o Ј=y BPN+9/[v@:Q{&#}:=; Ҷcs֑wUJyS_ړ_Qx W /_?ҚK>ߞdݬL AYҦ ݻu|{(w~zvfIv.9- 9nUm?In- >=geZ8jL/=)jTRӯ^q B;(٩Q'ͩ>״~X#bުC,;l_<ܼbM\}8fsҋ&42x!BCC]6&qUT-fF)2fe}.?,;?) u كk S0ASyY ;5iњ 'QGWզ̄=g~10} #QuZ?>a. |1@ק鷉S 70gu.ǷƊM+ >F. ˧%SZ'I 'X/֓s;ȁq$[V"QGB [I+4CY172p|5JP(73%س|(m~Z$f lYK4nH՚1`^"orWڇ[It M'v!˔ǟ06m/є2Wӣ|EYi047{%@EC,/bA^D^mВq;j;gʰ\La2_^Iqڎf4u-}E7\VvfE\IEnǻ9 [DlY3ٟK ۻfd邸&T-.kՄmG?2iS4f=Y)\E\ )vk  e/6MǯDa8yB+R"pMZzJs~dBJQ"S8o STc!(A_$ŝclL^¾c;؝UR۷%(۶rJObi) BF"6gȤT,Mc(Jc; j࠽ MY5ڹNJoe,V_0q4KԹ{x5mBi ͻy49+~_1mZ!CM}(/; 87OZ^v)Ku =Y'S퇷jo&j#RuJs/ӵ0dWЕ'281NEt.Lo#\/p'pmV*:v]tXih㧳[Ӏ?'e-YKTmց޹<,gbů+k77b_t.%+Jv1h4w;{l:vCIҿAG~xpw m` ڜ4ێ1аu $C.{P:U m$sʚ_b:]_K.a7aKzJtJzгgDހ3/<*qhA N CC{jij2Z'=BP(pBBBdǎ蒸#4>uIxx,ZHa9+߿c'FQOq0-_yi?!DXhʈQ(5\ϭrwpS]<,G;FiDܛ-M&i0Όrl!:>7 (x@6˿u"Fo]JS%~|Y즹էlz "Z!nNIYֆ/~^/zc&WCJj I/Iv^MtX=Lc9md'Ak5jt6I'eDޑ2]p9jQ^\"'XoJKn; M7qGdcRzUBdWL_X>d5| X@ՙ$s@i$djZYq,,dq׷xQKv)ֻ{䑇'I%$zdWN>Il7hz|P6 bpF? XnI|d(cweߔRhvq2Do&|ޖFcK>"7w|/m*lNFq/U}VDcaܒh'9Ѡr( BԶIfٰalݺU4!!!KbYnn Ofݻ2eʰyf4i 9Tk\V7(f8bϞ= e={P\W]ԑ;,nU7+y_Bpmvc03 x97B X864֓v) cϞ=DDDPl4?^`H?>š,ho`dUﻓʐR(ҎƝ_c||6! Z|-FA˗dH)nvWd$['~"ʐR( T<9z-qŇ]池˵"ym VFcgb܎Ԑ)?njAo? P(  2116BiikczLFxVFT(()k=*gT eſ]UCP(׆ Sv*^-^J%{BP(o66lաWD‰ PW( B*ꄹBP( BPd S @P( BP(gJP( BP(2L e9(fΘױNX NXxx?&z%Q($/3s ub݋Y%RZbs2A]~d^O^gZw:~?~Zcs+vrKبǼEW)Qn2+Q(WKLY.';qDrxiۃXNFP/X})}+΄>7 "62.z<:OruA>|?@J"{>|&w|r,4@lΘLNd-Pƽr#ʅq1ڿ^YFx熌R3cƫE>dn#{s)M.~m>}o:'~vZ L1D.⅐Tg;Zщ,yS!,8v45v* 槰A 6ѧ!&qnjFǸ}$O S[=2 FP-|:mdg_"a9\O/(ĺHT|&.5Ӡg{ ,\Yԑr;3r!Z…3?trٖNUcn۰kk\-z:&:·*aׄ ;s>t5b)ܿuhn,;;6`6;5Vc2 opܝ:rhѝ~yg[XיZӈFA/@qVEӷjA* `Q ̋ ]rn'T (@6{ &\r\2( ;YgԸ$2pp/@vcq#%G'ӧ~i;␥~&+22c0so~pB-JTnu7Oa\OZ{]~`\PAELSqߔZ:3I@nӖSB?{?sО5e0w*Rz)kҤK'ӣԙmԹ7?ut.rن*//-Yc(kShRϝХ+9XSrkV᜸9a0:X=-;x)-4h4mYzn[<)3F҉_O ,>Y| &\a-rl |sb2`甝buB{څ>8p KXreqO-3Yu%xQf|l=ѕi#Rn'r> w31*`r"G|fQ厓1]c[y`){ |;)yy }~Z!>yc-bz.=nhNncǺ%?eըתSV%isB9? FGθXHOǽW c'İ{x;`rJj]XǸ4 B LpT1cz.M-~g,4zGrZ[+ZS~@i+Yd w}NFrP ׾%8C#\OXst+n`֯[̸VҔ\Cn׫ؽg+Naw5c4'哂ȵw0u a_ gzұF- 4赖 o QZ4|~Qr֥DŽH((7ӽB|ͦs y K~nv_0PFE2+Pyس+r:|:36 $mp#-͡Xyʕ%YG_&o>O v)N_Xx>.1gѱzkeR)X$vmtNX˧ҭ ƶnÄS ,>cuw4o Ee4UEfB_Q٬ٴ&$-tCr붬gޘy]6;t>Uvyn?G.;b cMeU]wdG%[2pR6ʒGt2^`Fjt\d潯zWӵFc&ňwkb8:l ,[=a#MUͽgl\`Ϧ87ʍ mC20:aAr&6w` Fi#i>z1%YiܛZM^!,ؼ_bϠFtK {g815g&dN4;_#+lqV+cfo__t8{c:1ycBP(R$$$Dv!.Hyxx[N߿/-DI|[N.b?.#vd5K,|]6Ya_Jq4wW#;{zP9b{WĘLƔc液㄄!S+@KYG,i%:[VyTZ8i(EX8Nn1!}!tٜ-d\E;15#i$$$$'f97x&?uR$Y;h[ ~aåG},ZqB,dBe},ED$Ft%:%u]&ZD,r~le/=D1ۺKnc)qlLr?Į8hYc"YZo"uReUά'FSc0a:oqz!-~%G>#""k;Hcy\#!8t5"hta'>}C$/;Y."1{KCi޳`t6HΏ7&O*ia׃aVw[2i1 C"ro7%l1g^+O>ŨN9,ɴ"-y$oՇT4)I|URQ27/wzGf7p:f/>9+ёw2响D$V¾;v 25V݉D;2,V6=o U(/!!!n:6OJך5kdÆ uVy)󙃄ERN J1{ ŪQ3R~1ƐJU?vhR"0IM&boUG}iiw|Gm[J9F =A̕ild2a29/ȫ\RйPq;~y9:MidC&mLlFMe6.Y&̕ݨr5EƬbB/Q; v IDAT>+@n.4=Ӡ9Kt1t/j x +lkc OA\88#>z}פ5) oN3j\ԕvut2BWV\rPqT(x,`9¾ۮS$wriW臷~DG-V<%[TLNoS=О[r1K}f3/9Fj}qrgzVͭ~"\ٳB{<^|XR3~ ޲䰏#t~ڕ4o? ].CrUk u, Ds`{1oաz:d [swdl# ?EtDEOZ49}A V@Մod: _-,h'l'/X/֓s;'jɖtr:o*&`)eێ{:8jq*Zft9 =ɻg5&T!Ņi%'l aL!gv<4\dgϽ5Yy"̌j{d>4~Aq}F%yc]|*XbGx'ƞX'({zd祈>?) up`(ڂLΛ?Z]ߩ UOc݌HP(qtxb==XR(V͠K+]cX6+?̜@l:s&F@chikɣ&)u4byM^vF;XeFDtxEpN)+ymlkdNnNN^xy:%JKJyP=6ߡxZԦ4v=V,Oqq$C Ba(]~"/ɽwS,0I5tqoKpm[9TtD2l cY5n.'-&KMwɭDRE; XX%~% 0;H"Ϯ^q`}Cң.^E?jn'YO@741ʦ;e bCFı#]Pގ#wqPYD&7;fR1 M;yr rn [S| ^8f\Mcy" .g[س E~'8v8,]g-f;/q[l܎Ǚ2l.,///d8TmG|IҘ(bWteeGjvZĕގGgC<0첕X^0,1[5XblQ5;v+(vco(>tXXsݙS̝y{xc 3!&.)hQ)a8\4@m1jn b%TwP:.pEyHu9 T1TW5xؤ?T(>'^eFz! 0F")$}P0GxFphese|D/.lYt<8dGʹFmmoOW80bG| $Z-wb}Ok]:@sga(' PCS0l}?ktןU{a+^H[zR,;Z2_$uG^zI7|߲bF1wر5:40e Xu݆.b}3ű,|ʛBw !13HezA%0"`Tڠ\b8VLknaqS)x6 fΨkZ-ѭ{ͨb-]'~D<.>ѳ;Ls^DR3o YH Ckg4W|=zQ4yxtx\H(;썉ޔ7I\aC5 u0E Y"1C$3sN}!(ƂPGԨnO+_: Vന5~_vZMİРC//`d9@T1(=* xr8tu@Xض@ƪ~ Zi};̡hhw<mXl ֗nWDz R+Md};Zͯ 4('ҭ<"ډ53W­geXqY5,k1Gh_8Da_4lܲ:k|P{JWt5o|plު+û$VEwօSC;nz&" xr!r+U0 & EpM 6+{nLn'9P"g}^[}d$w^)ؕ]Ϭ/}YB2>lo<$%[;֦,D^Ur%5 GU]h=QLH'9+c Ijx׎֣TKFj pb@u:Rnh*ui%u's@aL"HSuJZ[I:B41i>4qb?],)T/ ܅$_z9uR;޴&OZLʭ ((5,OQWL\INGU~2Pl_`(H4hI{2;RJ„vTP*^QrX0|ܩ6gq͡Y@@@˻:3%%ٌ,c@lLL.,44ժUCPP4[#G\}bb/K~l_⟯+ 88%Kqē1DٗvgϧVIGEg0ir~W迿BşTT3`>5^[,L" > A\\W^8H$J«)DfhXP}FmlMmJ"~:G8b^ظR)Cjj%pg^e7L-+ɽ*8Ǒ'J0>yJΔ{G2,xR=11[9vTY~Ǣ[x=m3lQS 㪙 V^_m+#W4  PlAX\A9BiR[uCʟ0R a+q mI⚏ "RlcɓR3mPru^@@@@@@F6m`ԥω O JO PwLn ,63ɔ@1Naq,i=-qk4 P]\o:Ů7m(,8zr|A"bD\{'· -?N`˜. WZ" ?˸wE}068GIgb_w_.bu-]SDd`c_3/`MibqzXtj[KѴTiZ~Ò-HO|d>dx_ЖWn 'p2% TQ&1XԳ&ʙ(0,Na~>:Ռ$ղ_ܯQJ=K6-xthH+PM ( 6~R0& zJUGy߁[BPC?=;??zJ#xĴ7J6`I@ ko5~ {xCJv0QJ!ӳ@j-1hYTPE,#.2_~#o?0OHqEVpPt#?,3\~!ҁH$QѲBm doKUhW)􆅀ǡخc>1F-܂<#y"VYՊ#o~/@- =Z$!lg] QOy ߻帛7ibהQ :;xu LK7+GҷƄjȯ ݱƴfmjËѭ0 ;{ղK[?7LK,f4o aX!dRv ɵ`-I7[c|V /Œq`J$xY-c#&81~gb7 bX}, lbѱ%_9|ĩ;8t+8#NäY5{[ <~8cbb}@111ܷoyffCASdM4RH)ճOgBR" iʊVZ 8KMZԔ 3ӣL"+YY$NDse|gGpppF$90.4 'ihysWlɌaSLf?[fƮ;)Gni.jE}L*^KC8YJ랻Huu& v f5,kN{.g+\/̪U0h,~I jA}/g]W=n(ss)Z$we2 Sc$Xwʔ8DlOAUuu55򦃅>e9p3-=^-}`K#qy+[;8! m[|x*$StvBNC0i7fUwkB;zP.7]ӡ^-L$صlPWq\-U u.1/Kz*c BnTS\<-e Yr:M(wó)LrVƌ᜸]䬿ӵB풯 7۴14s\Ug,{9rKQRU-(/Ȩ+wq\[oȩ4udsy,*xHD+9%2i7Tڳ% }iyٳ#GX1{wE7,uA6ʯfZ܌[~An j y|CQ&޿ k'7GSD\p4nbL¦CX= BƷEu#˿? <|Yvn1d^\+Z= }˴DSgr{2мE05)rrC(Cӫ/a/{[5B,-a##LdCh/Ĉ6I9;rG;B+-0dґڱ,^y*Q\exyvx(LۿԢܴw:T,_ʍZ9&+S32Ӻ>uச̎RzNC\@T꘵W3O3US-/%Nn2̹I OwyL/3Z]i!KE#L_$,r[L)qCT6z>1^R#l&g L};SDNUͲ3_~J,=?T4A=_t:T_!<2ϻ{fd!4cW4n>3FljϷĄp Ln"I(y~ck2zAU11"T-e>ѓoͪMd;,@pW;Z fa[C =EިS0ݵ̄qk5ES-ȵS|HD;߳3A>Pd !yc oiX:(m[O"}\b k &:ԈȤՐa}XjLo5xɗ1>ffy,Z9136ԵG!TI`$QWxSk&5W:JD+H~xMUdbdAigS.d8hnj ö~C\xSԨU12< ;{:1?BE٬e?'Lҽ<r#)^HHc0Pۥ pxRS:JG2ƐHi W UԶ̋DDէdn P >{NI@Q)1U$B$XflAHl), R#~ǒ%+ջM÷CBOd^':xLM]L,:VְDԇzFZ݀H ."(x*$\M 6(3Ë`U y&B>EVZZD ]$">=yT`cX^ 9#jD \?@ߣSl;-Jgxq IDATdL@|"!1MEl^&s>;2 PN,B*^v*$ ǖQhbȁH /]]fL:*b5BNǶX|ݣ>پAk 6 Wc8>lm3^Ƽ3}Ka N9kI8z˸/%ɰ$V@1Ҍ# 4$1Jyz*"XBREUbT]7z&=U 6ҴVްQb_Pt ל,K J[cMTq.9JxxW"س)J+wEF׆u'|< /X\\`y(w*>?I1C]xr'5ӊ-Pʒxtz .EYE)z[r]%$CLQӧb>rN@ը.c90m KXϸdZA$&:9g"+bl('W¼MX$O*=[4$/+5?nnɊy߈.b@}cK/hO~p Wo3j*(;aQ^Ը:1MyĸeuמOa'-?=XZaC5Fďː`ٞx:XTgqŋSAxD]Ʉ3)F A)]d:=1zZ\|HA0_M^! Xcԃ@94 4Tek °Zk1bPE EKso!2vT^ LA]g<"ډ53W­geXqY)[ikG# x Z@tPZ[ƛQQZ/!|Ot\nFne?Č @% 1bñckt~i:)07a ]ŀ)F :;t"mRFۈxAAEvBC-"75PDQ"Y݌w!foEr{xt)EU1vD~~!{{S2w: l,"Q:{a8vU QyT.z[=* xr8tu@XضO1踤F j\K NJ q;,nc q# 7u@Sh$;bLiFz}[ht٤h.)ꍫHN5=[^oOݓɷ͔RJ&??y9xW4qa\ڻ&9Vy>׺!׶/Ccס<$xTZ_kWeWʯ hiVSôP$xNѧ\aFFsӍ>>t@NF,u3UeµЉ 9TWsNyWyh-x=밈3{G)XӵnNrY5zƝIO-|ğ]-%ֺ'Xي2ȍhVI3׃ʙR!ӣ[]wws]WgqLEN$#m:n6 i[#| #&Jc_θ#Ԙ (HoUu贶R;D.؞55ҚAlbA]m+@Ƥ05m(בPadM8PÉBPV֛+8ue+(Ҽ/x_nonVXPN̐6^d2P.7ێ[YU&g bԗP4alT Z)$ÉhKԁߟHZPfuTuB;#ut5.E֜Q L[У:R*\ l%9Rg+:XG88LunS̯mGTV;rycsTKOZ(738B@@( Qpp0SRR2612BCCQZ5! D}a]=)Sa _?(!!!xgT*^ˊNRۚƅY~%|⓪uh]/D˟a;7HoQ p?d p@:n;; A\\W^8H$JoH<cY~'T_1I[tk>ܷĽ G8b^ظR)Cjjr!^8kN`l+8M?ܙLd0>dctlbAh˓GF~Ǣ[x=m3}S869GGqX9A/UmL%'Js5Y%g?x)¥TLxI*u.;Aa;1c#h~|46N< =C%PkۘjӦ o\Ⱥڠd |fu/ 1x\m@1)bPlcJ' 9#L (1% P ;S@8(1% P $ō(' quH$|Z'S;0}lx.jy­ Sˑ(K8e VRR ',Q)X5  ũeF\/遜I?)M^#y(A׶`p9yo4fGxb!(mCK0giD}5U:IξG{M4wlơkx?_dƬ;oDWEB+ƒ{%s%DFFŋ1o~"8W)%TQXJ]ن[&V=3ߓX$r(Mʢʗ?b|V\|SsF5;C(,d{{w,O1Sfj65[1jå }Xv~GӬipw~ȕ_b̧лVA̘T7~eA~X"`}ʛ#ID5% xwg>B_٣3Jݑ.e`SOx  ٞ%6hADH b~hR&J)dz(_%-;8z<]U_ |*ſ3QqBu'c>1F-܂<#y"VVk+{p~2 KHQDC0%`0s^q::BAϵ߻帛7ibהQ :;PDu UϒF,ުB5=Q^xt[ו`Дoi%Kj񷨷5uܤ+v[KWCqR+,^s_těǏ~HEhkU$n0j|"5 >v>_gNŤSPH$/ B9'"0jcw78 Z Oo%88ǏgLLL<&&cBB7oAllNTF+g֟d)~WigGDF=+W3b'EsXzr*MXDkRoqnM9-cIƟt5LBҜ rUVO35i#.2mDL >øx /M'LMB˛@QnIG/zB(jIpppgI̬B^'nMԒ@rG9Kisd5!ۮ{Am͢45=\˚?*jhi#uiOc;s K]C]ˀ7[jTί)S7dGFsxu֘<4 徳y3ϼ,^+|(p>kϻ̬hlSGZg2:?Ōk^0xQ_s2RGkϖ*ߦ|G7{)=Jez4/W#"aDGdԕ;IțI4 4TE.`+Wk%ꕢ{Qv'G#d=ɵR_F̐e*p(h.6Ô:y/=9W4SiQG9/fu$i-@f64ϸ{tVq*EC p֛L!UhoKDN01iDd87m T:V<cذt0SoMVcVL(wój^ţs5 ,] })i)'StvBNC0i7&&9/7oyelfE=kǒRoy4=BA7s^O=Q7]BMASdM4RH)ճOg{MlD =VgLkLb؏^A:PysiJ)鳔{szM:i}XPFҔv޽az +##Y>r//GbrY/ikD%]ύrM)ԀջssM/1SnhݗR#ͬFy J* j^? *9@NTNu>AE\oCS]*Y K[XێVJO>)/hiLibCo}:KiҌ-ks^ĬkM]Ymz73/)_厠掦D432mVaMjUME fLe{ZS>Zlq_XK˶2h)̘sĢZMI<ؿ c*R^1Gէ\ɉ6T<ՇRY WW[ݜuY|Fh״^[ͧ:JuCӪS׶WkyNRܠF]v$^& l;u=?աԚzH55ZՒ0φtGŌܟD222<+M^r׋vܳ$I0gy$A|mةԖm1 }zt䶅}c$cQ2уvRc-qa@I¬2TT O=Y1n }ęƔWt#^RfҀޅfLz*1|je7&]az$]&wla2ҙRt`u 7Beq~ȿ57E?xnIQT+ Pfƃ1j5IJۘ#I*ޜK2gIzUXk-!(-mp(Op49q1-{E ߘR3jw9ϮgZwpGIjÁAY&]ί#:j1GPcJ} i=0xHAecҝyXIRǜ$1ccAk+)U&1,^{Ni?`] ـ+,zg/|Rn/@\6 cV A8|OxIS-3O(ZFѡa5xUfC?שA;Qpe(y/zx)/jfĶ8> >t7v7 :&:F00i+ t|s+nht++@YǙVCd\77|NGKp7po Nr IDAT06):3#%1Zd\8V|Ul`fl 6: QxSkWB2hgq5sU*kSc-$&$[DD=Uf5@ 8j7z$j* /Fy\KaU(P(0iUTx r g'á~8fbou^L) pQeu yԲ>?g?0 O C󖓔+L@n(Lk ei \HD\q&2v hDh=[_*^/;p)&mQ~Pr2yiD'_(Я5ד #-,O_W ؗ)!".C򍿀sJFڢTmd_%"$?\imЅH~b Hck״u%%^}꜂{:4;ID@u.śz~ ]0ש FKSyx .E:ht|~_+5{Ǒ%a-H (_π*hDc`# ز*th%7qdXd%v]WzivHS _ U[[BGOii~EF Rf]?Jd8hul`g#BHsQp>h8*/<ݝ!#5,E1x4%K3! PBO#fb2CߌB1Ǹy2=F@\ ^lKlkߖX<2Z.KcSǢ/ ~j¼U Q֋~}[a^w̠ݺ#qtb@:*S"Q?WlwA L KHZi&hH$EFhͪaDAnw+%IDh[k\UrKBB*n޴$Dʶ),rmtDG5\`\y@*45g!صj  ?aV~Pr K^%EH@Z -E[ ahǬ"A5T̉ I!hls ?TdR -d[ {/i롔xo h+"BB*St7_5PF1)KE(`1h.*f5-;rWx8B 3my܆QQ$>ǐq?MAxL}0QZJyt} aӮ\Ʋ^-yՃ1y6r uZc;hgo|g3fّpula_#jB@d{‘[{twAW_|8 )J18u<2<\3C /I^;OhU5 UB82#v[&[*pX ]-+T}fclvwG*N0SaQ}7*1ažhtej+d,BN\*q#,ocԐVUU*^ "DƱgJz'+_B~}J>ιH{] .^ \2>hGK+wŝGp] ]9OZ>29XB-(u}EqfA@@@DD{Ck^c1E5{{(qT'7I!""<ɔyuxt:%>ye5IL;;:23tlg{ϭA~Y| 4Js3D!_>4W-˯N&s\9/CPx犌0$o~Ou;IAX$iRk}d7q67WNj>:{_O}Ωi9=ׯ0>]?p8ƛPPN૏9cQX5ejϔ6S3N~B?ֆ Z}c&cUǘ,5Z26%^_O68px0fC}:M~w-)xLNӪj^ uMyIUZ *=Z0Ҡ& ډiU4uQ!+b=JYu,#h7-2K 1UAt/(=:;1@zgV|=g&|"W^r=NسzW,|8bg /LJ@g#澢wOgb)55:*z?o S[l/(**g*H S5q}wC'qջ;kZ}Nhsn.{Nfν|)6ORfRsjSywcse:U]cߠ{VMljF9}4ͥL!#i0+f}5ڕ-g/}nD&ksCCo<+')U z 0rF~)yĜ-#uEe6nH0U x|65DeLa鰷?JN.↕-OPT9&ʌآ8b>l N7r++ tXbc5lGgK^.*>]jb'|mPBLeuS/&U0[O,B3ÔQq72y ;aVk ](b?\*|Z ц~ ( ݊EP`cˑ8Q.o6«`o@ߪ-ԄŽ:tO:hط%Sf5/BvH #˗dFfDI"HA-%<=O?Nnsq4O}ħ&Rļ6D.s}o"[ μk=XV/)vJ;88(B uϻκ ,RLKtpLmҎ2j~<'4L(X}}O%?>&3S6v-7'"NG|dԧR~'O,!t]E^ Mߢ[.QpL}gyE]I3+k  be88(j% 􌅽wEsFn&Jk(|+b8B@; ]]#a@, v|hYMXJP9 R#ġT({G_P4*0p.j_'Óoĥ]D9aFV"W6#/?9̅JG; Bfgb3.- #]}aZ\y1wĆUE>GT =c+;@Xz7 (>/?Ejз%{},F}D+#^\l>5)D)O;a#ͳƉf#H #o%)i6QkF~y)ţ}SDRHWt(׏Y~SOL@@i#ZoP9Iqܢ.9􄎁p$Nf L@k֑a6:"}1/n4E1{a*}sͻh8r{LoZsTu>Cq?;\BFL]ЈE%kalC tKaĂ.D^'S+L=E 3 og T$Ŀk;>S,",UBg"l}E %ufԵ%=0]_'!sgދ[aa?%k}8==Me f3P,F6 .VBGGOڹ b8֑A4&«qYF\\Ec+tBGT=|QhBʼn]DGa:"WQQk%MKck( {vbP95L@8z7I# ǏĮ][nm1ېu_OO]ͱc*R$r l8vAAAYFK4ӡՅ) /o5.nU;__Qz8xŴ{igUӦԒތȃ!ÞN.T9ٙ-HRSsr`^Jl͡c)OK;vfx .WxfJGaMa;5~f0 b ¹HgqO.qCGh9m36=ǮpzVI$!{C$)K/Xc->ΊI֯>(CM}F>՘7~xUhF[`(aV$I$}K^b쨒o_K; U:%)e…ԍuڰ)}í3!YOR{}0+í} {.U>ZHľΖiOcv+}l__f4sZӛ+6Ijg/Єa2Aۊ͌[&48LR2'G/i(K0_?aKϪHg74{y<&03ѧr V&w0qA_>E$IRa~\ Ĩ|yj7+D?^C-ѳqܲ<3#ٺŲbytW!gL'%G 4 hfξ篅)ԬѭPN#z!Mzifg=eNÜSxe;7BARh@ľ?Y$ۇ:x{R3/k\n?R7DQ ԨڑQex}㻓xgYy+nl֮AZx΢o> 1)^Śxw_IcQk3*Uag>TGAnAϏYSfM/s'1aE-FX>s:|BY8eR+P1>tY:nJr/Ic;%}v/C";nov0bDσ \/wma C451 .QfK,[>\z_."`Z_TŨb-a g mOb}z`,ovQBj~aG6#9`P?-H,ĨM\U~cN>Է7ҸG\jU 8)6~?Rƾߥ=eCZe>CtqtK_J.I#Y^ˑle[5,#o,;A2.&dc8`0`/y;{s@c\Ǩ WX"ڍ0""Nϡˆ8.>?~Zm,ɆH#t5 ޷-yxa )bai3v͈| ՓO̤ڗ4i,K\ y!q9R{I3 ̈́}ٿw,rmɐ~Ͱ i;͙j3舘2=D*ϐ8(\X= KB)׬;뽍*])Fk"^,Θ R`Nբ9(ޕD^Y7}?^χ({US|y9)@nO uiLeN9pV+qw9}'8Uqqjp}AѼyF8Li3':=f̴ҔRɪ ľ{G e"42 krRMN>a14Wqn"TB0p^A8F"BaAhy eQk蠃 .@ !-ɏSgK>DElR1fωGFo7U숊8)YTQ:"1s}ӊ7E!JTTkDSyKnƆWDļyɮɖy>+Hހ@ʗV.R3O9?iK4"~˾eAt: Cl:;ꖔvX0/leߩn%zMcuToK%Yu N0U@&b/  cBhH/x{2%]W8asvq̝KDrm4N)M wT_y˲8JkB]WSS]6iˠ=j0%7}6"b%xv4)顑'.g{"J 8?ctbfyk|]fs㜑_n N9ɓ㟧Yʆ҂\yÃt\K-e{'c`[UdU&n5X=cbAN|W!57{]ي}U.-36;9NfUJ^7/|mTc7wI|W\Y(ȎvŒ>s3O~|48}#ˠz *퇿 <0 ]k5gE,b\jq)(D'#9|ik)7~&YI-㤹ʞoRuMd+M:E) _8ky@|R{3|gdw!ӊ- k⳶UuIy%mH%|_Re^el:MAz o"`jeI$[a~Yp2j9q#8w^b_a+O-/"D^ˈo(݀a~5V_ i~<{@ hU仩Nw*[z\CӅ׀<´0:(A;Nia.rZK"ďR`lho".QfxWrN7aJ 7F,7.]C@uߚICK5WsqAA2n)'cM%ޕRc8~4o I4neeBuL:OEG#x3y ^0{'1蘙cZ o b_^qV @IJ43mKoC[ŀJ 9rh'|+P2|kw' ƬE8{L٘n6Q}aJTnBM3|q_WqչWtl!T!9ҺfܓtVc`@CִjHn>AM{P/HHaQ-ǤCWIMnOGXmt;F,#B N[κ3oV$9SwybQ(MWŽ=e11],r}w/C葃7,̲_R#Ïσ)m2WD(064DyCx@\NJ+!o@0Os6cBE+'GOh"f ؍VݰL\6v6mW2eNb\)P0FΘ Ff-ŝyOx1zBX'_u~Z+S`Z?a1*,<|B_1?PX̳Ql?DB[<^-gjL}s"0quT`QFo {² fe P AұER+iŖ i_[3y[92YcuW`T5J V܉Y&1ᄨphLe,I$}CGX|}}|aa_ K)\0{졮g%dә-MLтcxЧPfdZߑc)}6cC"^fLKڄ6䚩|{I%BQ ,fZ$IA""" L.\@WWLDĿ~Az3`տr&+ҔoNaF捘i9gu9,3Һ9y]O&K#P(fbNw`^^yF$)SSu^;SPVqꭸHSNZ,䲮1Ώ>jR/ IѼ8B~Km_FL5$IJǡC>{90'e$I$e,wСHYK#2ȼ$I$Guc*88 L FNPPPV I$I$I?;vh,I$I$I٘$I$I$I҂lLI$I$I$iA6$I$I$I S$I$I$IZ)I$I$I$-Ɣ$I$I$IdcJ$I$I$I 1%I$I$I٘$I$I$I҂lLI$I$I$iA6$I$I$I S$I$I$IZvǏgf*$wǎY$I$I$Uc*000㐾<$I$Ia~$I$I$IZ)I$I$I$-;[!I$I$IC=S$I$I$IZdTxXطC$I$I$釢7o׼|23㑤71775C$I$?`K\}[O:B!7{|,TKmh՘y& ҥKk$Ipinݺ[V"I$IlK;WP~(C<=R[jL~RJ!*QIC$Iܵ,TF?ȺEh5wk՘zlHIR&Ce%I$IR'o?s-HK$I$IޝNS# żꠣ1hKP|rjtI$I$IB|NZq~>O$m=SuhW|[UV+Q,wC$I$IdBsaˉ_([CT ,ƶx ż|8ėĴJfUQ}k>U}-ٯyw}}qr;;}h #Lm_ͷ\ݐJ*Q}߼dVu%I$I2÷}akNo¸r.oST]vNDBn؛cbWZt_xLbh.vd~Eqtt;XbR|˴5D5Mgr]V@MsŻ?o5h_苶f`Zt]]/Sal)?o]I$I 4F11g~ʁSʧ1:I{]ӺQ+ȃڻX=7 26N!\tqݨ [f!4__4/7R*NSe& tǒp=ȩX 2i4ҡwȜ} (o;q*p/RhTl;wai⋻wSZ)$I$Il!|G c%1h^sSIÛVcҦ;}Nm\&gkL?#&F3q!s~˨LꙊ̔,8sagn35nLJ'+PKS,Rr.I}\qqL&}R& ZS &uJXZ ZTcOK"whnmN.Uɓ3s=[sM<(낽)&f68bDO3."S3ky`cy1' 2NBDs4.{ŴC2c/I$I_aР$EEf߅ΓwQ`W J/Ѳ8=Og,ݙzU+S~G/ǚ^n\҉ /ߔߏk,oSާW}Khj1ekpij])vLcxSbi'1w8 F-^ftpȿ7]w}ʜ:¶gj?~n9 bǓ[fPR8g+qOD .`\?~݃7cZ[@w'sϏ3Ptu-qT~*ՌVD\Xΰ]鐭I1DiƹqѦ;&`GQQoIU>_`xKۆ<2BŞ~YHCP(-Ȯ+P;Ȇo(?wZ5!^P+9lY8qO9xZ.zx(ym<55Ϳs7L(܀N~zY@c'%(ppd#9eĜDIdsUM?Hw=e]=aQ.j:71h A䑡TQ?SF$)6XƱ$I$IR3 |Nn;z:Ѩ|ƛwqs I~QVa_h~ =Ryq3\AIRyE-1j1nG=W#͔ƔxqkϕÌ "w1}):`I@ J?m'-|  V" PresPc=L)%Om!(^5B]`muK(̽)[t>$e-O\J(U`(VaӶvf`G f6;8OCrΓy 'M_.E9ZKɫ#tN^6jYjf`=PrLRcg:yCY?e! آ'uB;`9^$I$ e`ݑ17Qʲ(_#8uc #2):| QHxy/<4#?=Ul~'q!dD{Wg{u]tH/t<34pE7V,riEtS(E =}uXrO"UXFȻ4@,ʰصGc:Et*E}v?+L*eǔD$bV={'t*\MZѺM^ IDAT#ʺ|^("^ͺ=VǀCjLlRYՃ<@eNiI\|ޱ$I$IRPdN}< J7\9tq1M!ng4B'X(EB#⟃FhD‹h@kXlʴ๰/Em޻l_X)˔)+֟k]w!OBb{$kU/IeP;;a UXy׬kzJѶr>ˁ%ʈ+%m$ޖ‘K)4mOӢ0|Ǔkڂ2J#qИJ‘:=0XO8a-kOR2z+I$I92g C!U.v}I|]ɐ[_&}is&=cjrjݞj1z{6/bxt qtNL\Ț.'kWv3_e=S)l3iN NƯ&mK)whDji5k 2b^ꏉ̵(unfXhW`!˸BOW'?TR5% 7_;WgvqJMi?'jKҹ>]vݑtA1)ѣGEll,^iTX _ܫ4rb-V7m!fwW4I=&I)JoNpppV"I$I,pz :. 45;ڻ&8~( R -b tt\\QqppZ[b *J7 Msii羔 {ܷ;M]ݲuhQ칎n?~v=X,}ܙrQۈI,R1x-E{2c\-a'gpO.\k,'3m~nWt3R?_'׻wwwOueem$+zs>YkYg~^AvSUAZ+cLƄ8*aF\afRy󮸎*L'cL0崹0 YZR\n÷05WpyQkkL$k_Dd666J0 SMCXrv)?a2 3ZЃ/:QTyǫeLI\1c°K a a 2 L@ aq93܋)HdFn gSНΔî =uasGQ\.Z7km˱VZEQT7oZ(-Ϸޞ0,`ī'[=ōx|!Lu:qZ10%86Nc\=qy<ײN Ś9L%TNUL 2>NUL if errorlevel 9009 ( echo. echo.The 'sphinx-build' command was not found. Make sure you have Sphinx echo.installed, then set the SPHINXBUILD environment variable to point echo.to the full path of the 'sphinx-build' executable. Alternatively you echo.may add the Sphinx directory to PATH. echo. echo.If you don't have Sphinx installed, grab it from echo.http://sphinx-doc.org/ exit /b 1 ) %SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% goto end :help %SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% :end popd helpdev-v0.7.1/docs/readme.rst000066400000000000000000000000331365434462600162640ustar00rootroot00000000000000.. include:: ../README.rst helpdev-v0.7.1/docs/reference/000077500000000000000000000000001365434462600162375ustar00rootroot00000000000000helpdev-v0.7.1/docs/reference/helpdev.rst000066400000000000000000000001461365434462600204210ustar00rootroot00000000000000Reference ========= .. automodule:: helpdev :members: :undoc-members: :show-inheritance: helpdev-v0.7.1/docs/tutorials/000077500000000000000000000000001365434462600163275ustar00rootroot00000000000000helpdev-v0.7.1/docs/tutorials/customizing.rst000066400000000000000000000114131365434462600214340ustar00rootroot00000000000000Customizing for your application -------------------------------- You can use this tool to provide a easy way to the users get necessary information about their environment when reporting bugs. Even if developers can use it to *easilly* get all the information necessary. 1. Add ``helpdev`` to your list of requirements in ``setup.py`` .. code-block:: Python # ... install_requires=['helpdev'...] # ... 2. Import ``helpdev`` functions that are important for you .. code-block:: Python # ... import helpdev report_dict = {} # get basic information updating the dictionary report_dict.update(helpdev.check_hardware()) report_dict.update(helpdev.check_os()) report_dict.update(helpdev.check_python()) report_dict.update(helpdev.check_qt_bindings()) report_dict.update(helpdev.check_qt_abstractions()) # list of important packages for your app # note that you can use regex (spyder.*) packages = "spyder.*,ipython,cython,jedi,matplotlib,numpy,pandas," "psutil,pycodestyle,pyflakes,pygments,pylint,qtconsole," "rope,sphinx,sympy" # get filtered information for those packages report_dict.update(helpdev.check_python_packages(packages)) # ... 3. You can use, then, the dictionary-like information or print it .. code-block:: Python # ... # printing the output in the terminal helpdev.print_output(report_dict) # ... 4. The output for this example is, then .. code-block:: console * HARDWARE----------------------------------------------------------------------- - Machine....................... x86_64 - Processor..................... Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz - Total Memory.................. 16689 MB - Free Memory................... 534 MB - Total Swap.................... 19999 MB - Free Swap..................... 19999 MB * OPERATING SYSTEM--------------------------------------------------------------- - System........................ Linux - Release....................... 4.15.0-48-generic - Platform...................... Linux-4.15.0-48-generic-x86_64-with-debian-buster-sid - Version....................... #51-Ubuntu SMP Wed Apr 3 08:28:49 UTC 2019 * PYTHON DISTRIBUTION------------------------------------------------------------ - Version....................... 3.6.8 - C Compiler.................... GCC 7.3.0 - C API Version................. 1013 - Implementation................ cpython - Implementation Version........ 3.6.8 * QT BINDINGS-------------------------------------------------------------------- - PyQt5 Version................. 5.12.2 - PyQt5 Qt Version.............. 5.12.3 * QT ABSTRACTIONS---------------------------------------------------------------- - qtpy Version.................. 1.7.1 - qtpy Binding.................. pyqt5 - qtpy Binding Variable......... os.environ['QT_API'] - qtpy Import Name.............. qtpy - qtpy Status................... OK - pyqtgraph Version............. 0.10.0 - pyqtgraph Binding............. Not set or inexistent - pyqtgraph Binding Variable.... os.environ['PYQTGRAPH_QT_LIB'] - pyqtgraph Import Name......... pyqtgraph - pyqtgraph Status.............. OK - Qt Version.................... 1.1.0 - Qt Binding.................... PyQt5 - Qt Binding Variable........... Qt.__binding__ - Qt Import Name................ Qt - Qt Status..................... OK * PYTHON PACKAGES---------------------------------------------------------------- - ipython....................... 7.5.0 - jedi.......................... 0.13.3 - numpy......................... 1.16.3 - psutil........................ 5.6.2 - pycodestyle................... 2.5.0 - pyflakes...................... 2.1.1 - Pygments...................... 2.3.1 - qtconsole..................... 4.4.4 - rope.......................... 0.14.0 - Sphinx........................ 2.0.1 - spyder........................ 3.3.4 - spyder-kernels................ 0.4.4 You can obtain the same output using the command-line options as follows .. code-block:: console helpdev --hardware --os --python --qt helpdev --packages="spyder.*,ipython,cython,jedi,matplotlib,numpy, pandas,psutil,pycodestyle,pyflakes,pygments, pylint,qtconsole,rope,sphinx,sympy" In this example, the packages list was created from the Spyder dependencies list and *about* which can be seem below: .. image:: ../images/spyder-dep-list.png .. image:: ../images/spyder-about.png :width: 400 helpdev-v0.7.1/docs/tutorials/index.rst000066400000000000000000000001061365434462600201650ustar00rootroot00000000000000Tutorials ========= .. toctree:: :maxdepth: 2 customizing.rst helpdev-v0.7.1/examples/000077500000000000000000000000001365434462600151675ustar00rootroot00000000000000helpdev-v0.7.1/examples/all.txt000066400000000000000000000045161365434462600165060ustar00rootroot00000000000000* HARDWARE----------------------------------------------------------------------- - Machine....................... x86_64 - Processor..................... Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz - Total Memory.................. 16661 MB - Free Memory................... 1560 MB - Total Swap.................... 2147 MB - Free Swap..................... 2082 MB * OPERATING SYSTEM--------------------------------------------------------------- - System........................ Linux - Release....................... 5.3.0-51-generic - Platform...................... Linux-5.3.0-51-generic-x86_64-with-glibc2.10 - Version....................... #44~18.04.2-Ubuntu SMP Thu Apr 23 14:27:18 UTC 2020 * THREADS------------------------------------------------------------------------ - Version....................... NPTL 2.27 - Name.......................... pthread - Lock.......................... semaphore * PYTHON DISTRIBUTION------------------------------------------------------------ - Version....................... 3.8.2 - C Compiler.................... GCC 7.3.0 - C API Version................. 1013 - Implementation................ cpython - Implementation Version........ 3.8.2 * CONDA DISTRIBUTION------------------------------------------------------------- - Version....................... 4.8.3 - Build......................... 3.18.11 * QT BINDINGS-------------------------------------------------------------------- - PyQt5 Version................. 5.14.2 - PyQt5 Qt Version.............. 5.14.2 * QT ABSTRACTIONS---------------------------------------------------------------- - qtpy Version.................. 1.9.0 - qtpy Binding.................. pyqt5 - qtpy Binding Variable......... os.environ['QT_API'] - qtpy Import Name.............. qtpy - qtpy Status................... OK - pyqtgraph Version............. 0.10.0 - pyqtgraph Binding............. Not set or inexistent - pyqtgraph Binding Variable.... os.environ['PYQTGRAPH_QT_LIB'] - pyqtgraph Import Name......... pyqtgraph - pyqtgraph Status.............. OK - Qt Version.................... 1.2.5 - Qt Binding.................... PyQt5 - Qt Binding Variable........... Qt.__binding__ - Qt Import Name................ Qt - Qt Status..................... OK helpdev-v0.7.1/examples/filter.txt000066400000000000000000000026261365434462600172230ustar00rootroot00000000000000* PYTHON PACKAGES----------------------------------------------------------------------------------------------- - PyQt5......................... 5.12.1 - QtPy.......................... 1.7.0 - Sphinx........................ 2.0.1 - sphinx-rtd-theme.............. 0.4.3 - sphinxcontrib-applehelp....... 1.0.1 - sphinxcontrib-bibtex.......... 0.4.2 - sphinxcontrib-devhelp......... 1.0.1 - sphinxcontrib-excel........... 0.0.1 - sphinxcontrib-fulltoc......... 1.2.0 - sphinxcontrib-htmlhelp........ 1.0.2 - sphinxcontrib-jsmath.......... 1.0.1 - sphinxcontrib-plantuml........ 0.15 - sphinxcontrib-qthelp.......... 1.0.2 - sphinxcontrib-serializinghtml. 1.1.3 * CONDA PACKAGES------------------------------------------------------------------------------------------------ - pyqt5......................... 5.12.1 - qtpy.......................... 1.7.0 - sphinx........................ 2.0.1 - sphinx-rtd-theme.............. 0.4.3 - sphinxcontrib-applehelp....... 1.0.1 - sphinxcontrib-bibtex.......... 0.4.2 - sphinxcontrib-devhelp......... 1.0.1 - sphinxcontrib-excel........... 0.0.1 - sphinxcontrib-fulltoc......... 1.2.0 - sphinxcontrib-htmlhelp........ 1.0.2 - sphinxcontrib-jsmath.......... 1.0.1 - sphinxcontrib-plantuml........ 0.15 - sphinxcontrib-qthelp.......... 1.0.2 - sphinxcontrib-serializinghtml. 1.1.3 helpdev-v0.7.1/examples/help.txt000066400000000000000000000050311365434462600166570ustar00rootroot00000000000000usage: helpdev [--hardware] [--os] [--thread] [--network [NETWORK]] [--distributions] [--python] [--conda] [--packages [PACKAGES]] [--packages-pip] [--packages-pip-e] [--packages-conda] [--packages-conda-e] [--qt] [--qt-bindings] [--qt-abstractions] [--numbers] [--float] [--int] [--personal] [--path] [--scope] [--all] [--all-for-sure] [--report REPORT] [--help] [--version] HelpDev - Extracts information about the Python environment easily. optional arguments: --hardware CPU, memory and architecture (PEI) --os Operating system (PEI) --thread Thread specification in the system (PEI) --distributions All options for distributions below (PED) --python Python distribution (PED) --conda Conda/Anaconda Python distribution (PED) --packages [PACKAGES] All options for packages below, except '-e' (PED). Filter PACKAGE(s) to show. Accepts regex, separator is ',' --packages-pip PIP installed packages + PIP check (PED) --packages-pip-e PIP locally installed packages + PIP check (PED) --packages-conda CONDA installed packages (PED) --packages-conda-e CONDA locally installed packages (PED) --qt All options for Qt below (PEAD) --qt-bindings Available Qt bindings (PyQt/Pyside) (PEAD) --qt-abstractions Available Qt abstractions (QtPy/Qt.Py/PyQtGraph)(PEAD) --numbers All options for numbers below (PEI) --float Float representation in the system (PEI) --int Integer representation in the system (PEI) --network [NETWORK] Network information, DNS and load for usual sites (PEI). NETWORK timeout defaults to 5s. 0 is disabled --personal All options for personal information below (PEAD) --path Show Python current paths i.e. 'sys.path' (PEAD) --scope Show Python current scope i.e. 'dir()' (PEAD) --all Run all options above, except 'personal' (PEAD) --all-for-sure Run all options above, INCLUDING 'PERSONAL' (PEAD) --report REPORT Apply a custom filter from REPORT package. The filter is given by REPORT.custom_helpdev(version) --help, -h Show the program's help --version, -v Show the program's version helpdev-v0.7.1/help.txt000066400000000000000000000045161365434462600150500ustar00rootroot00000000000000* HARDWARE----------------------------------------------------------------------- - Machine....................... x86_64 - Processor..................... Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz - Total Memory.................. 16661 MB - Free Memory................... 1560 MB - Total Swap.................... 2147 MB - Free Swap..................... 2082 MB * OPERATING SYSTEM--------------------------------------------------------------- - System........................ Linux - Release....................... 5.3.0-51-generic - Platform...................... Linux-5.3.0-51-generic-x86_64-with-glibc2.10 - Version....................... #44~18.04.2-Ubuntu SMP Thu Apr 23 14:27:18 UTC 2020 * THREADS------------------------------------------------------------------------ - Version....................... NPTL 2.27 - Name.......................... pthread - Lock.......................... semaphore * PYTHON DISTRIBUTION------------------------------------------------------------ - Version....................... 3.8.2 - C Compiler.................... GCC 7.3.0 - C API Version................. 1013 - Implementation................ cpython - Implementation Version........ 3.8.2 * CONDA DISTRIBUTION------------------------------------------------------------- - Version....................... 4.8.3 - Build......................... 3.18.11 * QT BINDINGS-------------------------------------------------------------------- - PyQt5 Version................. 5.14.2 - PyQt5 Qt Version.............. 5.14.2 * QT ABSTRACTIONS---------------------------------------------------------------- - qtpy Version.................. 1.9.0 - qtpy Binding.................. pyqt5 - qtpy Binding Variable......... os.environ['QT_API'] - qtpy Import Name.............. qtpy - qtpy Status................... OK - pyqtgraph Version............. 0.10.0 - pyqtgraph Binding............. Not set or inexistent - pyqtgraph Binding Variable.... os.environ['PYQTGRAPH_QT_LIB'] - pyqtgraph Import Name......... pyqtgraph - pyqtgraph Status.............. OK - Qt Version.................... 1.2.5 - Qt Binding.................... PyQt5 - Qt Binding Variable........... Qt.__binding__ - Qt Import Name................ Qt - Qt Status..................... OK helpdev-v0.7.1/helpdev/000077500000000000000000000000001365434462600150005ustar00rootroot00000000000000helpdev-v0.7.1/helpdev/__init__.py000066400000000000000000000623631365434462600171230ustar00rootroot00000000000000#!/usr/bin/env python # -*- coding: utf-8 -*- """HelpDev - Extracts information about the Python environment easily. Authors: - Daniel Cosmo Pizetta Since: 2019/04/16 License: MIT """ __version__ = "0.7.1" import copy import os import platform import re import socket import subprocess import sys import time import warnings if sys.version_info >= (3, 8): from importlib import metadata as importlib_metadata else: import importlib_metadata # pylint: disable=import-error if sys.version_info >= (3, 4): import importlib.util try: from urllib.request import urlopen from urllib.parse import urlparse except ImportError: from urlparse import urlparse from urllib2 import urlopen # To make FileNotFoundError works on Python 2 and 3 try: FileNotFoundError2and3 = FileNotFoundError except NameError: FileNotFoundError2and3 = OSError QT_BINDINGS = ['PyQt4', 'PyQt5', 'PySide', 'PySide2'] """list: values of all Qt bindings to import.""" QT_ABSTRACTIONS = ['qtpy', 'pyqtgraph', 'Qt'] """list: values of all Qt abstraction layers to import.""" URLS = { 'PyPI': 'https://pypi.python.org/pypi/pip', 'Conda': 'https://repo.continuum.io/pkgs/free/', 'GitLab': 'https://gitlab.com', 'GitHub': 'https://github.com', 'Google': 'https://google.com' } def _run_subprocess_split(command): """Run command in subprocess and return the splited output. Returns: str: Splited output from command execution. """ output = subprocess.check_output(command, shell=False) if sys.version_info >= (3, 0): output = str(output, 'utf-8').strip() else: output = unicode(output, 'utf-8').strip() # noqa, pylint: disable=undefined-variable return output def print_output(info_dict): """Print output in a nested list format.""" for key, sub_dict in info_dict.items(): print('* {:-<79}'.format(key)) for sub_key, sub_value in sub_dict.items(): print(' - {:.<30} {}'.format(sub_key, sub_value)) def filter_packages(dict_packages, expression): """Filter the dict_packages with expression regex. In the expression, each item separated by comma is splitted and then surrounded parenthesis (i.e. group), then joined with OR (``|``). The expressions are finally started to match the begin until the end ignoring case (``i``). See the example below :: expression = "sphinx.*,qtpy,PYQT5" Then it will be processed resulting in :: expression = "(?i:^((sphinx.*)|(qtpy)|(PYQT5))$)" If the expression of all of them not match with the package name, this package is removed from the dict (a copy of it). Args: dict_packages (dict): Dictionary with package_name:version_number. expression (str): Regular expression separated by commas. Returns: dict(rst): Filtered dict with that matches the expression. """ expression_list = ['(' + item + ')' for item in expression.split(',')] expression_str = '|'.join(expression_list) compiled_exp = re.compile('(?i:^(' + expression_str + ')$)') cp_dict_packages = copy.deepcopy(dict_packages) for key in dict_packages.keys(): match = re.search(compiled_exp, key) if not match: del cp_dict_packages[key] return cp_dict_packages def customize(package): """Get the custom filter from the package imported. This is a way to promote a standard format to get a customized information from a specific package. This function try to import the package and run the public method ``get_custom_helpdev(help_dev_version='')`` from that package which gives a customized filter to provide the results. For example, this line :: info_dict = helpdev.customize('spyder') will try this :: from spyder import get_custom_helpdev custom_filter = get_custom_helpdev(helpdev.__version__) Then, it will apply that filter. Args: package (str): Import name to check installation. Returns: dict(str): Customized information from imported packages. """ info = {'REPORT': {}} # Only contains installed packages installed = check_installed([package]) if installed: sys_path = sys.path try: mod = importlib.import_module(package) custom_filter = mod.custom_helpdev(__version__) except AttributeError: info['REPORT'] = {'Status': "Unknown, package '{}' does not " "provide 'custom_helpdev()' " "function.".format(package)} except Exception as err: # noqa:W0703, pylint: disable=broad-except info['REPORT'] = {'Status': "Error, '{}'".format(str(err))} else: info['REPORT'] = {'Filter': "{}".format(custom_filter)} for item in custom_filter: if isinstance(item, str): info['REPORT'][item] = 'str' elif isinstance(item, tuple): info['REPORT'][item[0]] = 'tuple' else: msg = "Unknown, filter has a unknown item/format '{}'." info['REPORT'] = {'Status': msg.format(item)} break sys.path = sys_path else: info['REPORT'] = {'Status': "Not installed, package '{}'.".format(package)} return info def check_installed(import_list): """Return a list of installed packages from import_list. Note that the strings in the list must match the import name, e.g. pyqt5 will not work as the import name is PyQt5. Args: import_list (list(str)): List of of import names to check installation. Returns: list(str): Filtered list of installed packages. """ # Disable warnings here warnings.filterwarnings("ignore") import_list_return = copy.deepcopy(import_list) # Using import_list_return var in for, does not work in py2.7 # when removing the element, it reflects on for list # so it skips next element for current_import in import_list: spec = True # Copy the sys path to make sure to not insert anything sys_path = sys.path # Check import if sys.version_info >= (3, 4): spec = bool(importlib.util.find_spec(current_import)) else: try: __import__(current_import) except RuntimeWarning: spec = True except Exception: # noqa:W0703, pylint: disable=broad-except spec = False else: spec = True if not spec: # Remove if not available import_list_return.remove(current_import) # Restore sys path sys.path = sys_path # Restore warnings warnings.resetwarnings() return import_list_return def check_hardware(): """Check hardware information. It uses subprocess commands for each system along with ``psutil`` library. So you need to install psutil library. Returns: dict(str): Dictionary filled with respective information. """ cpu = '' # mac if sys.platform.startswith('darwin'): all_info = _run_subprocess_split(['sysctl', '-a']) for line in all_info.split("\n"): if "brand_string" in line: cpu = line.split(": ")[1] break # linux elif sys.platform.startswith('linux'): all_info = _run_subprocess_split(['lscpu']) for line in all_info.split("\n"): if "Model name:" in line: cpu = line.split(':')[1] break # windows elif sys.platform.startswith('win32'): all_info = _run_subprocess_split(['wmic', 'cpu', 'get', 'name']) if "Name" in all_info: cpu = all_info.replace('Name', '') # Get info about memory try: import psutil # analysis: ignore, pylint: disable=import-outside-toplevel except ImportError: mem = 'Unknown, needs psutil library' swap = swap_free = mem_free = mem else: mem = str(int(psutil.virtual_memory().total / 1000000)) + " MB" mem_free = str(int(psutil.virtual_memory().free / 1000000)) + " MB" swap = str(int(psutil.swap_memory().total / 1000000)) + " MB" swap_free = str(int(psutil.swap_memory().free / 1000000)) + " MB" info = {'HARDWARE': {'Machine': platform.machine(), 'Processor': cpu.lstrip(), 'Total Memory': mem, 'Free Memory': mem_free, 'Total Swap': swap, 'Free Swap': swap_free } } return info def check_os(): """Check operating system information. Returns: dict(str): Dictionary filled with respective information. """ info = {'OPERATING SYSTEM': {'System': platform.system(), 'Release': platform.release(), 'Platform': platform.platform(), 'Version': platform.version() } } return info def check_thread(): """Check threads information. Get information from ``sys`` library. Returns: dict(str): Dictionary filled with respective information. """ info = {'THREADS': {}} if sys.version_info >= (3, 3): info['THREADS'].update( {'Version': sys.thread_info.version, 'Name': sys.thread_info.name, 'Lock': sys.thread_info.lock, }) else: info['THREADS'].update( {'Version': 'Unknown, needs Python>=3.3', 'Name': 'Unknown, needs Python>=3.3', 'Lock': 'Unknown, needs Python>=3.3' }) return info def check_float(): """Check float limits information. Get information from ``sys`` library. Returns: dict(str): Dictionary filled with respective information. """ info = {'FLOAT': {'Epsilon': sys.float_info.epsilon, 'Digits': sys.float_info.dig, 'Precision': sys.float_info.mant_dig, 'Maximum': sys.float_info.max, 'Maximum Exp.': sys.float_info.max_exp, 'Max. 10 Exp.': sys.float_info.max_10_exp, 'Minimum': sys.float_info.min, 'Miminim Exp.': sys.float_info.min_exp, 'Min. 10 Exp.': sys.float_info.min_10_exp, 'Radix': sys.float_info.radix, 'Rounds': sys.float_info.rounds } } return info def check_int(): """Check int limits information. Get information from ``sys`` library. Returns: dict(str): Dictionary filled with respective information. """ info = {'INTEGER': {}} if sys.version_info >= (3, 1): info['INTEGER'].update( {'Bits per Digit': sys.int_info.bits_per_digit, 'Size of Digit': sys.int_info.sizeof_digit } ) else: info['INTEGER'].update( {'Bits per Digit': 'Unknown, needs Python>=3.1', 'Size of Digit': 'Unknown, needs Python>=3.1' } ) return info def check_numbers(): """Check numbers related float and integer information.""" info = {} info.update(check_float()) info.update(check_int()) return info def check_network(timeout): """Check network connection for URLS list with timeout. Args: timeout (int): timout in seconds. Returns: dict(str): Dictionary filled with respective information. """ info = {'NETWORK': {'Timeout': str(timeout) + 's' } } if timeout > 0: socket.setdefaulttimeout(timeout) else: info['NETWORK']['Timeout'] = 'Unknown, must be > 0s' return info for name, url in URLS.items(): if url.lower().startswith('http'): urlinfo = urlparse(url) error = False # DNS dns_err = '' start = time.time() try: _ = socket.gethostbyname(urlinfo.netloc) except Exception as err: # noqa:W0703 , pylint: disable=broad-except dns_err = str(err) info['NETWORK'][name] = "DNS ERROR: {}s URL: {}".format(dns_err, url) error = True dns_elapsed = time.time() - start # LOAD load_err = '' start = time.time() try: _ = urlopen(url, timeout=timeout) # nosec: url is tested to skip non http except Exception as err: # noqa:W0703 , pylint: disable=broad-except load_err = str(err) info['NETWORK'][name] = "LOAD ERROR: {}s URL: {}".format(load_err, url) error = True load_elapsed = time.time() - start if not error: info['NETWORK'][name] = "DNS: {:.4f}s LOAD: {:.4f}s URL: {}".format(dns_elapsed, load_elapsed, url) return info def check_python(): """Check Python information. It is Python environment dependent. Get information from ``platform`` and ``sys`` libraries. Returns: dict(str): Dictionary filled with respective information. """ info = {'PYTHON DISTRIBUTION': {'Version': platform.python_version(), 'C Compiler': platform.python_compiler(), 'C API Version': sys.api_version }} if sys.version_info >= (3, 3): info['PYTHON DISTRIBUTION'].update( {'Implementation': sys.implementation.name, 'Implementation Version': '{}.{}.{}'.format(sys.implementation.version.major, sys.implementation.version.minor, sys.implementation.version.micro) }) else: info['PYTHON DISTRIBUTION'].update( {'Implementation': 'Unknown, needs Python>=3.3', 'Implementation Version': 'Unknown, needs Python>=3.3' }) return info def check_python_packages(edit_mode=False, packages=None): """Check PIP installed packages filtering for packages. Returns: dict(str): Dictionary filled with respective information. """ all_packages = '' if edit_mode: all_packages = _run_subprocess_split(['pip', 'list', '-e']) else: # list all packages, including in editable mode all_packages = _run_subprocess_split(['pip', 'list']) # split lines and remove table name line_packages = all_packages.split("\n")[2:] info = {'PYTHON PACKAGES': {}} # clean spaces, create a list and insert in the dictionary for line in line_packages: splitted = line.split(' ') cleaned = ' '.join(splitted).split() info['PYTHON PACKAGES'][cleaned[0]] = cleaned[1] if packages: info['PYTHON PACKAGES'] = filter_packages(info['PYTHON PACKAGES'], packages) return info def check_conda(): """Check Conda Python distribution information. It is Python/Conda environment dependent. Returns: dict(str): Dictionary filled with respective information. """ info = {'CONDA DISTRIBUTION': {}} try: all_info = _run_subprocess_split(['conda', 'info']) except (subprocess.CalledProcessError, FileNotFoundError2and3): info['CONDA DISTRIBUTION']['Status'] = 'Conda not available!' else: for line in all_info.split("\n"): if "conda version : " in line: info['CONDA DISTRIBUTION']['Version'] = line.split(" : ")[1] elif "conda-build version : " in line: info['CONDA DISTRIBUTION']['Build'] = line.split(" : ")[1] return info def check_conda_packages(edit_mode=False, packages=None): """Check conda inslalled packages information filtering for packages. It is Python/Conda environment dependent. Returns: dict(str): Dictionary filled with respective information. """ info = {'CONDA PACKAGES': {}} all_packages = '' try: if not edit_mode: all_packages = _run_subprocess_split(['conda', 'list', '--no-pip', '--export']) else: all_packages = _run_subprocess_split(['conda', 'list', '--no-pip', '--export', '--develop']) except (subprocess.CalledProcessError, FileNotFoundError2and3): info['CONDA PACKAGES']['Status'] = 'Conda not available!' else: # split lines and remove head line_packages = all_packages.split("\n")[3:] # clean spaces, create a list and insert in the dictionary for line in line_packages: splitted = line.split('=') cleaned = ' '.join(splitted).split() info['CONDA PACKAGES'][cleaned[0]] = cleaned[1] if packages: info['CONDA PACKAGES'] = filter_packages(info['CONDA PACKAGES'], packages) return info def check_qt_bindings(): """Check all Qt bindings related information. Returns: dict(str): Dictionary filled with respective information. """ info = {'QT BINDINGS': {}} for binding in installed_qt_bindings(): binding_version, qt_version = qt_binding_information(binding) info['QT BINDINGS'][binding + ' Version'] = binding_version info['QT BINDINGS'][binding + ' Qt Version'] = qt_version if not info['QT BINDINGS']: info['QT BINDINGS']['Status'] = 'No Qt binding available!' return info def check_qt_abstractions(): """Check all Qt abstractions related information. Returns: dict(str): Dictionary filled with respective information. """ info = {'QT ABSTRACTIONS': {}} for abstraction in installed_qt_abstractions(): abs_v, bind, bind_var, imp_name, status = qt_abstraction_information(abstraction) info['QT ABSTRACTIONS'][abstraction + ' Version'] = abs_v info['QT ABSTRACTIONS'][abstraction + ' Binding'] = bind info['QT ABSTRACTIONS'][abstraction + ' Binding Variable'] = bind_var info['QT ABSTRACTIONS'][abstraction + ' Import Name'] = imp_name info['QT ABSTRACTIONS'][abstraction + ' Status'] = status if not info['QT ABSTRACTIONS']: info['QT ABSTRACTIONS']['Status'] = 'No Qt abstractions available!' return info def check_qt(): """Check Qt related bindings and abstractions information.""" info = {} info.update(check_qt_bindings) info.update(check_qt_abstractions) return info def installed_qt_bindings(): """Return a list of qt bindings available. Returns: list(str): List filled with respective information. """ return check_installed(import_list=QT_BINDINGS) def installed_qt_abstractions(): """Return a list of qt abstraction layers available. Returns: dict(str): Dictionary filled with respective information. """ return check_installed(import_list=QT_ABSTRACTIONS) def qt_abstraction_information(import_name): # noqa:R0912 """Get abstraction layer version and binding (default or current if in use). Note: - The name of the installed package can differ from the import name. This is an weird thing from PIP/CONDA, e.g, the abstraction 'qt.py' is imported as 'Qt'. - Since each package is build as it is, sometimes we are not able to define its information, e.g, Qt.py is installed but no binding is. This will cause an error that, for now, it is impossible to us to show any other information about it, e.g, version. We need to deal with a better way. - This function should be called with pre-defined list of installed packages passed throuw import_name, do not use it to try import. Todo: - Add info installed (y/n), imported (y/n), importable/status (error). Args: import_name (str): Import name of abstraction for Qt. Raises: ImportError: When the import is not found. Returns: tuple: (abstraction version, environment variable, binding variable, import name, status) """ # Copy the sys path to make sure to not insert anything sys_path = sys.path api_version = '' env_var = '' binding_var = '' status = 'OK' if import_name == 'pyqtgraph': try: from pyqtgraph import __version__ as api_version # analysis: ignore, pylint: disable=import-outside-toplevel except ImportError: raise ImportError('PyQtGraph cannot be imported.') except Exception as err: # noqa:W0703, pylint: disable=broad-except api_version = importlib_metadata.version('pyqtgraph') status = "ERROR - " + str(err) if 'PYQTGRAPH_QT_LIB' not in os.environ: env_var = 'Not set or inexistent' else: env_var = os.environ['PYQTGRAPH_QT_LIB'] binding_var = "os.environ['PYQTGRAPH_QT_LIB']" elif import_name == 'qtpy': try: from qtpy import __version__ as api_version # analysis: ignore, pylint: disable=import-outside-toplevel except ImportError: raise ImportError('QtPy cannot be imported.') except RuntimeError as err: env_var = 'No Qt binding found' api_version = importlib_metadata.version('qtpy') status = "ERROR - " + str(err) if 'QT_API' not in os.environ: env_var = 'Not set or inexistent' else: env_var = os.environ['QT_API'] binding_var = "os.environ['QT_API']" elif import_name == 'Qt': try: from Qt import __version__ as api_version # analysis: ignore, pylint: disable=import-outside-toplevel from Qt import __binding__ as env_var # analysis: ignore, pylint: disable=import-outside-toplevel except ImportError as err: # this error is the same if a problem with binding appears # as this function should be used with already known installed # packages, this error will appears when binding problem is found # raise ImportError('Qt.py cannot be imported.') api_version = 'Not set or inexistent' env_var = 'Not set or inexistent' status = "ERROR - " + str(err) binding_var = "Qt.__binding__" else: return ('', '', '', '', '') # restore sys.path sys.path = sys_path return (api_version, env_var, binding_var, import_name, status) def qt_binding_information(import_name): """Get binding information of version and Qt version. Note: The name of the installed package can differ from the import name. This is an weird thing from PIP/CONDA, e.g, the binding 'pyqt5' in PIP is 'pyqt' in Conda and both are imported as 'PyQt5'. Args: import_name (str): Import name of binding for Qt. Raises: ImportError: When the import is not found. Returns: tuple: (binding version, qt version) """ # copy sys.path sys_path = sys.path if import_name == 'PyQt4': try: from PyQt4.Qt import PYQT_VERSION_STR as api_version # analysis: ignore, pylint: disable=import-outside-toplevel from PyQt4.Qt import QT_VERSION_STR as qt_version # analysis: ignore, pylint: disable=import-outside-toplevel except ImportError: raise ImportError('PyQt4 cannot be imported.') elif import_name == 'PyQt5': try: from PyQt5.QtCore import PYQT_VERSION_STR as api_version # analysis: ignore, pylint: disable=import-outside-toplevel from PyQt5.QtCore import QT_VERSION_STR as qt_version # analysis: ignore, pylint: disable=import-outside-toplevel except ImportError: raise ImportError('PyQt5 cannot be imported.') elif import_name == 'PySide': try: from PySide import __version__ as api_version # analysis: ignore, pylint: disable=import-outside-toplevel from PySide.QtCore import __version__ as qt_version # analysis: ignore, pylint: disable=import-outside-toplevel except ImportError: raise ImportError('PySide cannot be imported.') elif import_name == 'PySide2': try: from PySide2 import __version__ as api_version # analysis: ignore, pylint: disable=import-outside-toplevel from PySide2.QtCore import __version__ as qt_version # analysis: ignore, pylint: disable=import-outside-toplevel except ImportError: raise ImportError('PySide2 cannot be imported.') else: return ('', '') # restore sys.path sys.path = sys_path return (api_version, qt_version) def check_path(): """Check Python path from ``sys`` library. Returns: dict(str): Dictionary filled with respective information. """ info = {'PATHS': {}} info['PATHS']['Python'] = sys.executable for num, path in enumerate(sys.path): info['PATHS'][num] = path return info def check_scope(): """Check Python scope or dir(). Returns: dict(str): Dictionary filled with respective information. """ info = {'SCOPE': {}} for num, path in enumerate(dir()): info['SCOPE'][num] = path return info helpdev-v0.7.1/helpdev/__main__.py000066400000000000000000000154731365434462600171040ustar00rootroot00000000000000#!/usr/bin/env python # -*- coding: utf-8 -*- """HelpDev - Extracts information about the Python environment easily. Authors: - Daniel Cosmo Pizetta Since: 2019/04/16 License: MIT """ import argparse import sys import helpdev def parse_args(): """Parse arguments. Returns: argparse.Namespace: parsed arguments. """ parser = argparse.ArgumentParser( description=__doc__.split("\n")[0], add_help=False, formatter_class=argparse.RawTextHelpFormatter) parser.add_argument('--hardware', action='store_true', help="CPU, memory and architecture (PEI)\n\n") parser.add_argument('--os', action='store_true', help="Operating system (PEI)\n\n") parser.add_argument('--thread', action='store_true', help="Thread specification in the system (PEI)\n\n") parser.add_argument('--distributions', action='store_true', help="All options for distributions below (PED)") parser.add_argument('--python', action='store_true', help="Python distribution (PED)") parser.add_argument('--conda', action='store_true', help="Conda/Anaconda Python distribution (PED)\n\n") parser.add_argument('--packages', nargs='?', const="", default=None, type=str, help="All options for packages below, except '-e' (PED).\n" "Filter PACKAGE(s) to show. Accepts regex, separator is ','") parser.add_argument('--packages-pip', action='store_true', help="PIP installed packages + PIP check (PED)") parser.add_argument('--packages-pip-e', action='store_true', help="PIP locally installed packages + PIP check (PED)") parser.add_argument('--packages-conda', action='store_true', help="CONDA installed packages (PED)") parser.add_argument('--packages-conda-e', action='store_true', help="CONDA locally installed packages (PED)\n\n") parser.add_argument('--qt', action='store_true', help="All options for Qt below (PEAD)") parser.add_argument('--qt-bindings', action='store_true', help="Available Qt bindings (PyQt/Pyside) (PEAD)") parser.add_argument('--qt-abstractions', action='store_true', help="Available Qt abstractions (QtPy/Qt.Py/PyQtGraph)(PEAD)\n\n") parser.add_argument('--numbers', action='store_true', help="All options for numbers below (PEI)") parser.add_argument('--float', action='store_true', help="Float representation in the system (PEI)") parser.add_argument('--int', action='store_true', help="Integer representation in the system (PEI)\n\n") parser.add_argument('--network', nargs='?', const=5, default=None, type=int, help="Network information, DNS and load for usual sites (PEI). \n" "NETWORK timeout defaults to 5s. 0 is disabled\n\n") parser.add_argument('--personal', action='store_true', help="All options for personal information below (PEAD)") parser.add_argument('--path', action='store_true', help="Show Python current paths i.e. 'sys.path' (PEAD)") parser.add_argument('--scope', action='store_true', help="Show Python current scope i.e. 'dir()' (PEAD)\n\n") parser.add_argument('--all', action='store_true', help="Run all options above, except 'personal' (PEAD)") parser.add_argument('--all-for-sure', action='store_true', help="Run all options above, INCLUDING 'PERSONAL' (PEAD)\n\n") parser.add_argument('--report', default=None, type=str, help="Apply a custom filter from REPORT package.\n" "The filter is given by REPORT.custom_helpdev(version)\n\n") parser.add_argument('--help', '-h', action='help', help="Show the program's help") parser.add_argument('--version', '-v', action='version', version='v{}'.format(helpdev.__version__), help="Show the program's version") arguments = parser.parse_args() return arguments def main(): # noqa:R701,R0912 """Main function.""" args = parse_args() info = {} # To not repeat the test if args.all_for_sure: args.all = True no_args = len(sys.argv) <= 1 # Commom hardware, OS and Thread info if args.hardware or args.all or no_args: info.update(helpdev.check_hardware()) if args.os or args.all or no_args: info.update(helpdev.check_os()) if args.thread or args.all or no_args: info.update(helpdev.check_thread()) # Distribution info if args.python or args.all or no_args or args.distributions: info.update(helpdev.check_python()) if args.conda or args.all or no_args or args.distributions: info.update(helpdev.check_conda()) # Packages, PIP and Conda info if args.packages_pip or args.all or args.packages or args.packages == '': info.update(helpdev.check_python_packages(packages=args.packages)) if args.packages_pip_e: info.update(helpdev.check_python_packages(edit_mode=True, packages=args.packages)) if args.packages_conda or args.all or args.packages or args.packages == '': info.update(helpdev.check_conda_packages(packages=args.packages)) if args.packages_conda_e or args.all: info.update(helpdev.check_conda_packages(edit_mode=True, packages=args.packages)) # Qt, binding and abstraction info if args.qt_bindings or args.qt or args.all or no_args: info.update(helpdev.check_qt_bindings()) if args.qt_abstractions or args.qt or args.all or no_args: info.update(helpdev.check_qt_abstractions()) # Numbers info if args.float or args.all or args.numbers: info.update(helpdev.check_float()) if args.int or args.all or args.numbers: info.update(helpdev.check_int()) # Network info if args.network: info.update(helpdev.check_network(args.network)) # Personal info for self-check, not executed when --all is passed # Needs to use all-for-sure to be listed # This may contains personal folder adresses, be carefull sharing if args.path or args.all_for_sure or args.personal: info.update(helpdev.check_path()) if args.scope or args.all_for_sure or args.personal: info.update(helpdev.check_scope()) if args.report: info.update(helpdev.customize(package=args.report)) elif args.report == '': print("You must pass a package name to report [--report PACKAGE_NAME]") helpdev.print_output(info) helpdev-v0.7.1/pylint.ini000066400000000000000000000404061365434462600153750ustar00rootroot00000000000000[MASTER] # A comma-separated list of package or module names from where C extensions may # be loaded. Extensions are loading into the active Python interpreter and may # run arbitrary code. extension-pkg-whitelist=qtpy,PySide,PyQt4,PyQt5,PySide2,QtCore,QtGui,QtWidget,Signal,numpy # Add files or directories to the blacklist. They should be base names, not # paths. ignore=CVS,ui,docs,dist,build,tests,diagrams,icons,templates,.coverage,.tox,.git,venv,.venv # Add files or directories matching the regex patterns to the blacklist. The # regex matches against base names, not paths. ignore-patterns= # Python code to execute, usually for sys.path manipulation such as # pygtk.require(). #init-hook= # Use multiple processes to speed up Pylint. Specifying 0 will auto-detect the # number of processors available to use. jobs=4 # Control the amount of potential inferred values when inferring a single # object. This can help the performance when dealing with large functions or # complex, nested conditions. limit-inference-results=100 # List of plugins (as comma separated values of python modules names) to load, # usually to register additional checkers. load-plugins=pylint.extensions.mccabe, pylint.extensions.overlapping_exceptions, pylint.extensions.redefined_variable_type, pylint.extensions.docparams, pylint.extensions.bad_builtin, pylint.extensions.comparetozero, pylint.extensions.check_elif # Pickle collected data for later comparisons. persistent=yes # Specify a configuration file. #rcfile= # When enabled, pylint would attempt to guess common misconfiguration and emit # user-friendly hints instead of false-positive error messages. suggestion-mode=yes # Allow loading of arbitrary C extensions. Extensions are imported into the # active Python interpreter and may run arbitrary code. unsafe-load-any-extension=no [MESSAGES CONTROL] # Only show warnings with the listed confidence levels. Leave empty to show # all. Valid levels: HIGH, INFERENCE, INFERENCE_FAILURE, UNDEFINED. confidence= # Disable the message, report, category or checker with the given id(s). You # can either give multiple identifiers separated by comma (,) or put this # option multiple times (only on the command line, not in the configuration # file where it should appear only once). You can also use "--disable=all" to # disable everything first and then reenable specific checks. For example, if # you want to run only the similarities checker, you can use "--disable=all # --enable=similarities". If you want to run only the classes checker, but have # no Warning level messages displayed, use "--disable=all --enable=classes # --disable=W". disable= # Enable the message, report, category or checker with the given id(s). You can # either give multiple identifier separated by comma (,) or put this option # multiple time (only on the command line, not in the configuration file where # it should appear only once). See also the "--disable" option for examples. enable=c-extension-no-member [REPORTS] # Python expression which should return a note less than 10 (10 is the highest # note). You have access to the variables errors warning, statement which # respectively contain the number of errors / warnings messages and the total # number of statements analyzed. This is used by the global evaluation report # (RP0004). evaluation=10.0 - ((float(5 * error + warning + refactor + convention) / statement) * 10) # Template used to display messages. This is a python new-style format string # used to format the message information. See doc for all details. #msg-template= # Set the output format. Available formats are text, parseable, colorized, json # and msvs (visual studio). You can also give a reporter class, e.g. # mypackage.mymodule.MyReporterClass. output-format=text # Tells whether to display a full report or only the messages. reports=yes # Activate the evaluation score. score=yes [REFACTORING] # Maximum number of nested blocks for function / method body max-nested-blocks=5 # Complete name of functions that never returns. When checking for # inconsistent-return-statements if a never returning function is called then # it will be considered as an explicit return statement and no message will be # printed. never-returning-functions=sys.exit [TYPECHECK] # List of decorators that produce context managers, such as # contextlib.contextmanager. Add to this list to register other decorators that # produce valid context managers. contextmanager-decorators=contextlib.contextmanager # List of members which are set dynamically and missed by pylint inference # system, and so shouldn't trigger E1101 when accessed. Python regular # expressions are accepted. generated-members= # Tells whether missing members accessed in mixin class should be ignored. A # mixin class is detected if its name ends with "mixin" (case insensitive). ignore-mixin-members=yes # Tells whether to warn about missing members when the owner of the attribute # is inferred to be None. ignore-none=yes # This flag controls whether pylint should warn about no-member and similar # checks whenever an opaque object is returned when inferring. The inference # can return multiple potential results while evaluating a Python object, but # some branches might not be evaluated, which results in partial inference. In # that case, it might be useful to still emit no-member and other checks for # the rest of the inferred objects. ignore-on-opaque-inference=yes # List of class names for which member attributes should not be checked (useful # for classes with dynamically set attributes). This supports the use of # qualified names. ignored-classes= # List of module names for which member attributes should not be checked # (useful for modules/projects where namespaces are manipulated during runtime # and thus existing member attributes cannot be deduced by static analysis. It # supports qualified module names, as well as Unix pattern matching. ignored-modules=*_rc.py,conf.py # Show a hint with possible names when a member name was not found. The aspect # of finding the hint is based on edit distance. missing-member-hint=yes # The minimum edit distance a name should have in order to be considered a # similar match for a missing member name. missing-member-hint-distance=1 # The total number of similar names that should be taken in consideration when # showing a hint for a missing member. missing-member-max-choices=1 [VARIABLES] # List of additional names supposed to be defined in builtins. Remember that # you should avoid to define new builtins when possible. additional-builtins= # Tells whether unused global variables should be treated as a violation. allow-global-unused-variables=yes # List of strings which can identify a callback function by name. A callback # name must start or end with one of those strings. callbacks=cb_,_cb # A regular expression matching the name of dummy variables (i.e. expected to # not be used). dummy-variables-rgx=_$|dummy # Argument names that match this expression will be ignored. Default to name # with leading underscore. ignored-argument-names=_.* # Tells whether we should check for unused import in __init__ files. init-import=yes # List of qualified module names which can have objects that can redefine # builtins. redefining-builtins-modules=six.moves, past.builtins, future.builtins, builtins, io [MISCELLANEOUS] # List of note tags to take in consideration, separated by a comma. notes=FIXME,XXX,TODO,Todo,todo,BUG [LOGGING] # Logging modules to check that the string format arguments are in logging # function parameter format. logging-modules=logging [SIMILARITIES] # Ignore comments when computing similarities. ignore-comments=yes # Ignore docstrings when computing similarities. ignore-docstrings=yes # Ignore imports when computing similarities. ignore-imports=no # Minimum lines number of a similarity. min-similarity-lines=4 [BASIC] # Naming style matching correct module names. module-naming-style=snake_case # Regular expression matching correct module names. module-rgx=(([a-z_])[a-z0-9_]{1,19})$ # Valid: this_is_valid (public), _this_is_valid (not public) # It is preferible to not use underscore # Naming style matching correct constant names. const-naming-style=any # Regular expression matching correct constant names. const-rgx=(([A-Za-z]|[_][A-Za-z])[A-Za-z0-9_]{1,20}|(__.*__))$ # Valid: this_is_valid (public), _this_is_valid (protected), __this_is_valid__ (special) # Valid: THIS_IS_VALID (constant, public), _THIS_IS_VALID (constant, not protected) # Naming style matching correct class names. class-naming-style=PascalCase # Regular expression matching correct class names. class-rgx=(([A-Z]|[_][A-Z]|[_][_][A-Z])[A-Za-z0-9_]{1,30})$ # Valid: ThisIsValid # Naming style matching correct class attribute names. class-attribute-naming-style=any # Regular expression matching correct class attribute names. class-attribute-rgx=(([A-Z]|[_][A-Z]|[_][_][A-Z])[A-Za-z0-9_]{0,30})$ # Valid: ThisIsValid (public), _ThisIsValid (protected), __ThisIsValid (private) # Valid: RJ12, __this_is_valid__ (special) # For signals, use initial naming 'Sig' # Naming style matching correct attribute names. attr-naming-style=any # Regular expression matching correct attribute names. attr-rgx=(([a-z]|[_][a-z]|[_][_][a-z])[A-Za-z0-9]{1,30})$ # Valid: thisIsValid (public), _thisIsValid (protected), __thisIsValid (private) # Naming style matching correct method names. method-naming-style=any # Regular expression matching correct method names. method-rgx=(([a-z]|[_][a-z]|[_][_][a-z])[A-Za-z0-9]{1,30})$ # Valid: thisIsValid (public), _thisIsValid (protected), __thisIsValid (private) # Naming style matching correct function names. function-naming-style=snake_case # Regular expression matching correct function names. function-rgx=(([a-z_]|[_][a-z_]|[_][_][a-z_])[a-z0-9_]{1,30})$ # Naming style matching correct argument names. argument-naming-style=snake_case # Regular expression matching correct argument names. argument-rgx=(([a-z_])[a-z0-9_]{1,20})$ # Naming style matching correct variable names. variable-naming-style=snake_case # Regular expression matching correct variable names. variable-rgx=(([a-z_])[a-z0-9_]{1,20})$ # Naming style matching correct inline iteration names. inlinevar-naming-style=snake_case # Regular expression matching correct inline iteration names. inlinevar-rgx=(([a-z_])[a-z0-9_]{0,20})$ # Minimum line length for functions/classes that require docstrings, shorter # ones are exempt. docstring-min-length=1 # Bad variable names which should always be refused, separated by a comma. bad-names=foo,bar,baz,toto,tutu,tata # Good variable names which should always be accepted, separated by a comma. good-names=_ # Include a hint for the correct naming format with invalid-name. include-naming-hint=no # Colon-delimited sets of names that determine each other's naming style when # the name regexes allow several styles. name-group= # Regular expression which should only match function or class names that do # not require a docstring. no-docstring-rgx=^_ # List of decorators that produce properties, such as abc.abstractproperty. Add # to this list to register other decorators that produce valid properties. # These decorators are taken in consideration only for invalid-name. property-classes=abc.abstractproperty [FORMAT] # Expected format of line ending, e.g. empty (any line ending), LF or CRLF. expected-line-ending-format= # Regexp for a line that is allowed to be longer than the limit. ignore-long-lines=^\s*(# )??$ # Number of spaces of indent required inside a hanging or continued line. indent-after-paren=4 # String used as indentation unit. This is usually " " (4 spaces) or "\t" (1 # tab). indent-string=' ' # Maximum number of characters on a single line. max-line-length=100 # Maximum number of lines in a module. max-module-lines=2000 # List of optional constructs for which whitespace checking is disabled. `dict- # separator` is used to allow tabulation in dicts, etc.: {1 : 1,\n222: 2}. # `trailing-comma` allows a space between comma and closing bracket: (a, ). # `empty-line` allows space-only lines. no-space-check=trailing-comma,dict-separator # Allow the body of a class to be on the same line as the declaration if body # contains single statement. single-line-class-stmt=no # Allow the body of an if to be on the same line as the test if there is no # else. single-line-if-stmt=no [SPELLING] # Limits count of emitted suggestions for spelling mistakes. max-spelling-suggestions=4 # Spelling dictionary name. Available dictionaries: none. To make it working # install python-enchant package.. spelling-dict= # List of comma separated words that should not be checked. spelling-ignore-words= # A path to a file that contains private dictionary; one word per line. spelling-private-dict-file= # Tells whether to store unknown words to indicated private dictionary in # --spelling-private-dict-file option instead of raising a message. spelling-store-unknown-words=no [DESIGN] # Maximum number of arguments for function / method. max-args=6 # Maximum number of attributes for a class (see R0902). max-attributes=35 # Maximum number of boolean expressions in an if statement. max-bool-expr=5 # Maximum number of branch for function / method body. max-branches=12 # McCabe complexity cyclomatic threshold max-complexity=10 # Maximum number of locals for function / method body. max-locals=25 # Maximum number of parents for a class (see R0901). max-parents=4 # Maximum number of public methods for a class (see R0904). max-public-methods=30 # Maximum number of return / yield for function / method body. max-returns=6 # Maximum number of statements in function / method body. max-statements=80 # Minimum number of public methods for a class (see R0903). min-public-methods=2 [DEPRECATED_BUILTINS] # List of builtins function names that should not be used, separated by a comma. bad-functions=map,filter,input [CLASSES] # List of method names used to declare (i.e. assign) instance attributes. defining-attr-methods=__init__,__new__,setUp # List of member names, which should be excluded from the protected access # warning. exclude-protected=_asdict,_fields,_replace,_source,_make # List of valid names for the first argument in a class method. valid-classmethod-first-arg=cls,self # List of valid names for the first argument in a metaclass class method. valid-metaclass-classmethod-first-arg=mcs [IMPORTS] # Allow wildcard imports from modules that define __all__. allow-wildcard-with-all=yes # Analyse import fallback blocks. This can be used to support both Python 2 and # 3 compatible code, which means that the block might have code that exists # only in one or another interpreter, leading to false positives when analysed. analyse-fallback-blocks=no # Deprecated modules which should not be used, separated by a comma. deprecated-modules=regsub,TERMIOS,Bastion,rexec # Create a graph of external dependencies in the given file (report RP0402 must # not be disabled). ext-import-graph= # Create a graph of every (i.e. internal and external) dependencies in the # given file (report RP0402 must not be disabled). import-graph= # Create a graph of internal dependencies in the given file (report RP0402 must # not be disabled). int-import-graph= # Force import order to recognize a module as part of the standard # compatibility libraries. known-standard-library= # Force import order to recognize a module as part of a third party library. known-third-party=enchant [PARAMETER_DOCUMENTATION] # Whether to accept totally missing parameter documentation in the docstring of # a function that has parameters. accept-no-param-doc=yes # Whether to accept totally missing raises documentation in the docstring of a # function that raises an exception. accept-no-raise-doc=yes # Whether to accept totally missing return documentation in the docstring of a # function that returns a statement. accept-no-return-doc=yes # Whether to accept totally missing yields documentation in the docstring of a # generator. accept-no-yields-doc=yes # If the docstring type cannot be guessed the specified docstring type will be # used. default-docstring-type=default [EXCEPTIONS] # Exceptions that will emit a warning when being caught. Defaults to # "Exception". overgeneral-exceptions=Exception helpdev-v0.7.1/req-develop.txt000066400000000000000000000005241365434462600163360ustar00rootroot00000000000000# See tox.ini file to know how to use them via command line # It is recommended for developers install all others requirements also # Main packages to make sure they are there setuptools pip wheel virtualenv # Automation tox pre-commit # Fixers autopep8 docformatter eradicate isort # Spell checkers # Name for use is scspell scspell3k helpdev-v0.7.1/req-doc.txt000066400000000000000000000003031365434462600154400ustar00rootroot00000000000000# See tox.ini file to know how to use them via command line # Main packages to make sure they are there setuptools pip wheel virtualenv # To generate documentation sphinx>=2.0 sphinx_rtd_theme helpdev-v0.7.1/req-release.txt000066400000000000000000000002431365434462600163160ustar00rootroot00000000000000# See tox.ini file to know how to use them via command line # Main packages to make sure they are there setuptools pip wheel virtualenv # To release twine>=1.13 helpdev-v0.7.1/req-stable.txt000066400000000000000000000002111365434462600161430ustar00rootroot00000000000000# See tox.ini file to know how to use them via command line # Main packages to make sure they are there setuptools pip wheel virtualenv helpdev-v0.7.1/req-test.txt000066400000000000000000000006741365434462600156650ustar00rootroot00000000000000# See tox.ini file to know how to use them via command line # Main packages to make sure they are there setuptools pip wheel virtualenv pipdeptree # Testers tox pytest # Coverage coverage pytest-cov # Code, bug checker # mypy - not for now pyflakes pycycle # Code style checker pylint pycodestyle # Doc style checker Pygments pydocstyle doc8 # Wrappers for some previous tools pylama # Safety checks safety bandit # Code metrics radon helpdev-v0.7.1/req-update.txt000066400000000000000000000002721365434462600161620ustar00rootroot00000000000000# See tox.ini file to know how to use them via command line # Main packages to make sure they are there setuptools pip wheel virtualenv # To update everything in the PIP list pipdate helpdev-v0.7.1/setup.py000066400000000000000000000054041365434462600150660ustar00rootroot00000000000000# python # -*- coding: utf-8 -*- """Setup module for helpdev. Since: 2019/04/20 Authors: - Daniel Cosmo Pizetta """ import codecs import os import re from setuptools import find_packages, setup def find_version(*file_paths): """Find version in a Python file, searching for the __version__.""" version_file = read(*file_paths) version_match = re.search(r"^__version__ = ['\"]([^'\"]*)['\"]", version_file, re.M) if version_match: return version_match.group(1) raise RuntimeError("Unable to find version string.") def read(*parts): """Read files.""" # intentionally *not* adding an encoding option to open, See: # https://github.com/pypa/virtualenv/issues/201#issuecomment-3145690 here = os.path.abspath(os.path.dirname(__file__)) return codecs.open(os.path.join(here, *parts), 'r').read() _long_description = read('README.rst') _version = find_version("helpdev", "__init__.py") _classifiers = [ 'Development Status :: 4 - Beta', 'Environment :: Console', 'Intended Audience :: Customer Service', 'Intended Audience :: End Users/Desktop', 'Intended Audience :: Developers', 'License :: OSI Approved :: MIT License', 'Natural Language :: English', 'Operating System :: MacOS', 'Operating System :: Microsoft :: Windows', 'Operating System :: POSIX', 'Programming Language :: Python :: 3.6', 'Programming Language :: Python :: 3.7', 'Programming Language :: Python :: 3.8', 'Topic :: Documentation', 'Topic :: Software Development :: Bug Tracking', 'Topic :: Software Development :: Documentation', 'Topic :: Software Development :: Debuggers', 'Topic :: Software Development :: Libraries', 'Topic :: Software Development :: Testing', 'Topic :: Terminals'] _requires = ['importlib_metadata;python_version<"3.8"'] setup(name='helpdev', version=_version, description='HelpDev - Extracts information about the Python environment easily.', long_description=_long_description, license='MIT', license_file='LICENSE.rst', author='Daniel Cosmo Pizetta', author_email='daniel.pizetta@usp.br', maintainer='Daniel Cosmo Pizetta', maintainer_email='daniel.pizetta@usp.br', packages=find_packages(), classifiers=_classifiers, install_requires=_requires, extras_require={ 'memory_info': ['psutil>=5.6'], }, include_package_data=True, entry_points={"console_scripts": ["helpdev=helpdev.__main__:main"]}, url='https://gitlab.com/dpizetta/helpdev', project_urls={ "Issues": "https://gitlab.com/dpizetta/helpdev/issues", "Docs": "https://helpdev.readthedocs.io/en/stable/index.html", } ) helpdev-v0.7.1/tests/000077500000000000000000000000001365434462600145135ustar00rootroot00000000000000helpdev-v0.7.1/tests/test_init.py000066400000000000000000000006151365434462600170710ustar00rootroot00000000000000 import helpdev def test_run_subprocess_split(): helpdev._run_subprocess_split("ls") def test_check_float(): output = helpdev.check_float() (isinstance(output, dict)) def test_check_thread(): output = helpdev.check_thread() assert(isinstance(output, dict)) def test_check_python_packages(): output = helpdev.check_python_packages() assert isinstance(output, dict) helpdev-v0.7.1/tests/test_main.py000066400000000000000000000003141365434462600170460ustar00rootroot00000000000000#!python # -*- coding: utf-8 -*- """Test the qtsass is compiling the SCSS files to QSS.""" import helpdev def test_check_float(): output = helpdev.check_float() assert isinstance(output, dict) helpdev-v0.7.1/tox.ini000066400000000000000000000124331365434462600146670ustar00rootroot00000000000000[tox] envlist = # tests without qt binding because they are hard to install via pip {win,lin,mac}-{py36,py37,py38}-{build} {win,lin,mac}-{py38}-{doc,release} {win,lin,mac}-{py38}-{test,lint,safety,metric,develop}-{pyqt,pyside} [testenv] changedir = doc: docs platform = # Test for Windows, Linux and Mac (if possible, otherwise skip) win: win32 lin: linux mac: osx skip_missing_interpreters = True deps = # Must be first pyqt: pyqt5 pyside: pyside2 # Dependencies for each environment build: -rreq-stable.txt test: -rreq-test.txt lint: -rreq-test.txt safety: -rreq-test.txt metric: -rreq-test.txt develop: -rreq-develop.txt doc: -rreq-doc.txt release: -rreq-release.txt # Essential dependencies to run the application must be in the setup.py whitelist_externals = doc: make doc: latexpdf doc: textlive-full commands = # ALL -------------------------------------------------------------------- # try generate build build: python setup.py sdist bdist_wheel # try install with pip build: python -m pip install . # try execute without bindings build: helpdev --all-for-sure # test with abstraction qtpy build: python -m pip install qtpy build: helpdev --qt # test with abstraction pyqtgraph build: python -m pip install pyqtgraph build: helpdev --qt # test with abstraction qt.py build: python -m pip install qt.py build: helpdev --qt # test with binding pyqt # It needs to solve many problems in gitlab side to make this work # build: python -m pip install pyqt5 # build: helpdev --qt # check all info build: helpdev --all-for-sure # check depedencies build: python -m pip check # TEST ------------------------------------------------------------------- # Those commands commented below correct style problems # DO NOT RUN ON SERVER, it is just to keep registry for local use # autopep8 --ignore=E501 --aggressive --aggressive --aggressive --experimental # docformatter -r -i --wrap-summaries=0 --wrap-descriptions=0 *.py # eradicate # Test and coverage test: pytest --cov "./tests" # test: pytest-cov # test: pytest-qt # Code and docstring style check, running alone for now - pylama-#156 # test: pylama -v --options="tox.ini" "{toxinidir}" # Code linting lint: pycodestyle --config="tox.ini" "." # test: pyflakes "./helpdev" # test: mypy --config-file="tox.ini" "helpdev" # Code and doc linting lint: pylint -r y --rcfile="pylint.ini" "./helpdev" --disable="R1260,R0912" # Doc linting lint: pydocstyle --config="tox.ini" "." lint: doc8 --config="tox.ini" "." # Safety safety: safety check safety: bandit --recursive --skip=B404,B603 "./helpdev" # Code metrics metric: radon cc -a "./helpdev" --exclude="*/ui/*" metric: radon mi "./helpdev" --exclude="*/ui/*" metric: radon raw -s "./helpdev" --exclude="*/ui/*" metric: radon hal -f "./helpdev" --exclude="*/ui/*" # DOC (inside docs folder) ---------------------------------------------- # Documentation - generate apidocs, build html, build latex, build pdf doc: make clean doc: sphinx-build -b html -j auto -E -d "." "." "{toxworkdir}/../build/docs/html" doc: sphinx-build -b latex -j auto -E -d "{toxworkdir}/../build/docs/doctrees" "." "{toxworkdir}/../build/docs/latex" doc: make --ignore-errors --keep-going --silent -C "{toxworkdir}/../build/docs/latex" all-pdf # RELEASE --------------------------------------------------------------- release: python setup.py sdist bdist_wheel release: twine check dist/* # try upload in test platform before the oficial release: twine upload --repository-url https://test.pypi.org/legacy/ dist/* release: python -m pip install --index-url https://test.pypi.org/simple/ helpdev # upload to oficial release: twine upload dist/* release: python -m pip uninstall helpdev release: python -m pip install helpdev usedevelop = develop: True # PYCODESTYLE ################################################################ [pycodestyle] ignore = E501,C0301 max-line-length = 100 statistics = True count = True exclude = .tox,.env,.venv,build,dist,tests,examples,ui,*.egg-info*,*cache*,.coverage, */.tox/*,*/.env/*,*/.venv/*,*/build/*,*/dist/*,*/tests/*,*/ui/*,*/*.egg*, */.*,*/.coverage,*/./venv/*,./venv,*/docs/*,docs,venv # PYDOCSTYLE ################################################################# [pydocstyle] ignore = D107,D202,D203,D213,D406,D407,D413 match-dir="[^\.].*,!(docs),!(venv)" # DOC8 ####################################################################### [doc8] extension = .rst ignore = D001 file-encoding = "utf-8" ignore-path = .tox,.env,.venv,build,dist,tests,examples,ui,*.egg-info*,*cache*,.coverage, */.tox/*,*/.env/*,*/.venv/*,*/build/*,*/dist/*,*/tests/*,*/ui/*,*/*.egg*, */.*,*/.coverage,*/./venv/*,./venv,*/examples/* # PYLAMA ##################################################################### [pylama] format = pylint linters = pyflakes skip = .tox,.env,.venv,build,dist,tests,examples,ui,*.egg-info*,*cache*,.coverage, */.tox/*,*/.env/*,*/.venv/*,*/build/*,*/dist/*,*/tests/*,*/ui/*,*/*.egg*, */.*,*/.coverage,*/./venv/*,./venv,venv