fdroidserver-1.0.9/0000775000175000017500000000000013324115531014123 5ustar hanshans00000000000000fdroidserver-1.0.9/fdroidserver.egg-info/0000775000175000017500000000000013324115531020313 5ustar hanshans00000000000000fdroidserver-1.0.9/fdroidserver.egg-info/PKG-INFO0000664000175000017500000000135013324115526021413 0ustar hanshans00000000000000Metadata-Version: 1.1 Name: fdroidserver Version: 1.0.9 Summary: F-Droid Server Tools Home-page: https://f-droid.org Author: The F-Droid Project Author-email: team@f-droid.org License: AGPL-3.0 Description: README.md Platform: UNKNOWN Classifier: Development Status :: 4 - Beta Classifier: Intended Audience :: Developers Classifier: Intended Audience :: Information Technology Classifier: Intended Audience :: System Administrators Classifier: Intended Audience :: Telecommunications Industry Classifier: License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+) Classifier: Operating System :: POSIX Classifier: Operating System :: MacOS :: MacOS X Classifier: Operating System :: Unix Classifier: Topic :: Utilities fdroidserver-1.0.9/fdroidserver.egg-info/SOURCES.txt0000664000175000017500000002706013324115527022211 0ustar hanshans00000000000000.gitignore .gitlab-ci.yml .pylint-rcfile .travis.yml LICENSE MANIFEST.in README.md fdroid jenkins-build-all jenkins-setup-build-environment jenkins-test makebuildserver setup.cfg setup.py buildserver/.gitignore buildserver/Vagrantfile buildserver/config.buildserver.py buildserver/gradle buildserver/provision-android-ndk buildserver/provision-android-sdk buildserver/provision-apt-get-install buildserver/provision-apt-proxy buildserver/provision-gradle buildserver/provision-pip buildserver/setup-env-vars completion/bash-completion docker/Dockerfile docker/Makefile docker/README.md docker/drozer.py docker/enable_service.py docker/entrypoint.sh docker/install_agent.py examples/config.py examples/fdroid-icon.png examples/makebuildserver.config.py examples/opensc-fdroid.cfg examples/public-read-only-s3-bucket-policy.json examples/template.yml fdroidserver/__init__.py fdroidserver/btlog.py fdroidserver/build.py fdroidserver/checkupdates.py fdroidserver/common.py fdroidserver/dscanner.py fdroidserver/exception.py fdroidserver/gpgsign.py fdroidserver/import.py fdroidserver/index.py fdroidserver/init.py fdroidserver/install.py fdroidserver/lint.py fdroidserver/metadata.py fdroidserver/mirror.py fdroidserver/net.py fdroidserver/nightly.py fdroidserver/publish.py fdroidserver/readmeta.py fdroidserver/rewritemeta.py fdroidserver/scanner.py fdroidserver/server.py fdroidserver/signatures.py fdroidserver/signindex.py fdroidserver/stats.py fdroidserver/tail.py fdroidserver/update.py fdroidserver/verify.py fdroidserver/vmtools.py fdroidserver.egg-info/PKG-INFO fdroidserver.egg-info/SOURCES.txt fdroidserver.egg-info/dependency_links.txt fdroidserver.egg-info/requires.txt fdroidserver.egg-info/top_level.txt fdroidserver/asynchronousfilereader/__init__.py hooks/install-hooks.sh hooks/pre-commit locale/Makefile locale/POTFILES.in locale/fdroidserver.pot locale/bo/LC_MESSAGES/fdroidserver.mo locale/bo/LC_MESSAGES/fdroidserver.po locale/de/LC_MESSAGES/fdroidserver.mo locale/de/LC_MESSAGES/fdroidserver.po locale/es/LC_MESSAGES/fdroidserver.mo locale/es/LC_MESSAGES/fdroidserver.po locale/es_AR/LC_MESSAGES/fdroidserver.mo locale/es_AR/LC_MESSAGES/fdroidserver.po locale/fa/LC_MESSAGES/fdroidserver.po locale/fr/LC_MESSAGES/fdroidserver.mo locale/fr/LC_MESSAGES/fdroidserver.po locale/it/LC_MESSAGES/fdroidserver.po locale/ja/LC_MESSAGES/fdroidserver.po locale/kab/LC_MESSAGES/fdroidserver.po locale/ko/LC_MESSAGES/fdroidserver.po locale/nb_NO/LC_MESSAGES/fdroidserver.mo locale/nb_NO/LC_MESSAGES/fdroidserver.po locale/pt_BR/LC_MESSAGES/fdroidserver.mo locale/pt_BR/LC_MESSAGES/fdroidserver.po locale/pt_PT/LC_MESSAGES/fdroidserver.po locale/ru/LC_MESSAGES/fdroidserver.po locale/tr/LC_MESSAGES/fdroidserver.mo locale/tr/LC_MESSAGES/fdroidserver.po locale/uk/LC_MESSAGES/fdroidserver.mo locale/uk/LC_MESSAGES/fdroidserver.po locale/zh_Hans/LC_MESSAGES/fdroidserver.mo locale/zh_Hans/LC_MESSAGES/fdroidserver.po locale/zh_Hant/LC_MESSAGES/fdroidserver.mo locale/zh_Hant/LC_MESSAGES/fdroidserver.po tests/IsMD5Disabled.java tests/SpeedoMeterApp.main_1.apk tests/androguard_test.py tests/bad-unicode-πÇÇ现代通用字-български-عربي1.apk tests/build.TestCase tests/check-fdroid-apk tests/common.TestCase tests/complete-ci-tests tests/config.py tests/description-parsing.py tests/dummy-keystore.jks tests/dump_internal_metadata_format.py tests/exception.TestCase tests/import.TestCase tests/import_proxy.py tests/index.TestCase tests/install.TestCase tests/janus.apk tests/keystore.jks tests/lint.TestCase tests/metadata.TestCase tests/openssl-version-check-test.py tests/org.bitbucket.tickytacky.mirrormirror_1.apk tests/org.bitbucket.tickytacky.mirrormirror_2.apk tests/org.bitbucket.tickytacky.mirrormirror_3.apk tests/org.bitbucket.tickytacky.mirrormirror_4.apk tests/org.dyndns.fules.ck_20.apk tests/publish.TestCase tests/run-tests tests/scanner.TestCase tests/signatures.TestCase tests/testcommon.py tests/update.TestCase tests/urzip-badcert.apk tests/urzip-badsig.apk tests/urzip-release-unsigned.apk tests/urzip-release.apk tests/urzip.apk tests/extra/convert_metadata_to_yaml_then_txt.sh tests/extra/manual-vmtools-test.py tests/getsig/getsig.java tests/getsig/make.sh tests/getsig/run.sh tests/gnupghome/pubring.gpg tests/gnupghome/random_seed tests/gnupghome/secring.gpg tests/gnupghome/trustdb.gpg tests/metadata/app.with.special.build.params.txt tests/metadata/com.politedroid.txt tests/metadata/duplicate.permisssions.yml tests/metadata/fake.ota.update.txt tests/metadata/info.guardianproject.checkey.txt tests/metadata/info.guardianproject.urzip.yml tests/metadata/obb.main.oldversion.txt tests/metadata/obb.main.twoversions.txt tests/metadata/obb.mainpatch.current.txt tests/metadata/org.adaway.json tests/metadata/org.fdroid.ci.test.app.txt tests/metadata/org.fdroid.fdroid.txt tests/metadata/org.smssecure.smssecure.txt tests/metadata/org.videolan.vlc.yml tests/metadata/raw.template.txt tests/metadata/souch.smsbypass.txt tests/metadata-rewrite-yml/app.with.special.build.params.yml tests/metadata-rewrite-yml/fake.ota.update.yml tests/metadata-rewrite-yml/org.fdroid.fdroid.yml tests/metadata/apk/info.guardianproject.urzip.yaml tests/metadata/apk/org.dyndns.fules.ck.yaml tests/metadata/dump/com.politedroid.yaml tests/metadata/dump/org.adaway.yaml tests/metadata/dump/org.smssecure.smssecure.yaml tests/metadata/dump/org.videolan.vlc.yaml tests/metadata/info.guardianproject.checkey/en-US/description.txt tests/metadata/info.guardianproject.checkey/en-US/summary.txt tests/metadata/info.guardianproject.checkey/en-US/phoneScreenshots/checkey-phone.png tests/metadata/info.guardianproject.checkey/en-US/phoneScreenshots/checkey.png tests/metadata/info.guardianproject.urzip/en-US/full_description.txt tests/metadata/info.guardianproject.urzip/en-US/short_description.txt tests/metadata/info.guardianproject.urzip/en-US/title.txt tests/metadata/info.guardianproject.urzip/en-US/video.txt tests/metadata/info.guardianproject.urzip/en-US/changelogs/100.txt tests/metadata/info.guardianproject.urzip/en-US/images/featureGraphic.png tests/metadata/info.guardianproject.urzip/en-US/images/icon.png tests/metadata/org.smssecure.smssecure/signatures/134/28969C09.RSA tests/metadata/org.smssecure.smssecure/signatures/134/28969C09.SF tests/metadata/org.smssecure.smssecure/signatures/134/MANIFEST.MF tests/metadata/org.smssecure.smssecure/signatures/135/28969C09.RSA tests/metadata/org.smssecure.smssecure/signatures/135/28969C09.SF tests/metadata/org.smssecure.smssecure/signatures/135/MANIFEST.MF tests/repo/categories.txt tests/repo/com.politedroid_3.apk tests/repo/com.politedroid_4.apk tests/repo/com.politedroid_5.apk tests/repo/com.politedroid_6.apk tests/repo/duplicate.permisssions_9999999.apk tests/repo/fake.ota.update_1234.zip tests/repo/index-v1.json tests/repo/index.xml tests/repo/info.zwanenburg.caffeinetile_4.apk tests/repo/main.1101613.obb.main.twoversions.obb tests/repo/main.1101615.obb.main.twoversions.obb tests/repo/main.1434483388.obb.main.oldversion.obb tests/repo/main.1619.obb.mainpatch.current.obb tests/repo/obb.main.oldversion_1444412523.apk tests/repo/obb.main.twoversions_1101613.apk tests/repo/obb.main.twoversions_1101615.apk tests/repo/obb.main.twoversions_1101617.apk tests/repo/obb.main.twoversions_1101617_src.tar.gz tests/repo/obb.mainpatch.current_1619.apk tests/repo/obb.mainpatch.current_1619_another-release-key.apk tests/repo/patch.1619.obb.mainpatch.current.obb tests/repo/souch.smsbypass_9.apk tests/repo/urzip-; Рахма́, [rɐxˈmanʲɪnəf] سيرجي_رخمانينوف 谢·.apk tests/repo/obb.mainpatch.current/en-US/featureGraphic.png tests/repo/obb.mainpatch.current/en-US/icon.png tests/repo/obb.mainpatch.current/en-US/phoneScreenshots/screenshot-main.png tests/repo/obb.mainpatch.current/en-US/sevenInchScreenshots/screenshot-tablet-main.png tests/repo/org.videolan.vlc/en-US/icon.png tests/repo/org.videolan.vlc/en-US/phoneScreenshots/screenshot10.png tests/repo/org.videolan.vlc/en-US/phoneScreenshots/screenshot12.png tests/repo/org.videolan.vlc/en-US/phoneScreenshots/screenshot15.png tests/repo/org.videolan.vlc/en-US/phoneScreenshots/screenshot18.png tests/repo/org.videolan.vlc/en-US/phoneScreenshots/screenshot20.png tests/repo/org.videolan.vlc/en-US/phoneScreenshots/screenshot22.png tests/repo/org.videolan.vlc/en-US/phoneScreenshots/screenshot4.png tests/repo/org.videolan.vlc/en-US/phoneScreenshots/screenshot7.png tests/repo/org.videolan.vlc/en-US/phoneScreenshots/screenshot9.png tests/repo/org.videolan.vlc/en-US/sevenInchScreenshots/screenshot0.png tests/repo/org.videolan.vlc/en-US/sevenInchScreenshots/screenshot1.png tests/repo/org.videolan.vlc/en-US/sevenInchScreenshots/screenshot11.png tests/repo/org.videolan.vlc/en-US/sevenInchScreenshots/screenshot13.png tests/repo/org.videolan.vlc/en-US/sevenInchScreenshots/screenshot14.png tests/repo/org.videolan.vlc/en-US/sevenInchScreenshots/screenshot16.png tests/repo/org.videolan.vlc/en-US/sevenInchScreenshots/screenshot17.png tests/repo/org.videolan.vlc/en-US/sevenInchScreenshots/screenshot19.png tests/repo/org.videolan.vlc/en-US/sevenInchScreenshots/screenshot2.png tests/repo/org.videolan.vlc/en-US/sevenInchScreenshots/screenshot21.png tests/repo/org.videolan.vlc/en-US/sevenInchScreenshots/screenshot23.png tests/repo/org.videolan.vlc/en-US/sevenInchScreenshots/screenshot3.png tests/repo/org.videolan.vlc/en-US/sevenInchScreenshots/screenshot5.png tests/repo/org.videolan.vlc/en-US/sevenInchScreenshots/screenshot6.png tests/repo/org.videolan.vlc/en-US/sevenInchScreenshots/screenshot8.png tests/signindex/guardianproject-v1.jar tests/signindex/guardianproject.jar tests/signindex/testy.jar tests/signindex/unsigned.jar tests/source-files/Zillode/syncthing-silk/build.gradle tests/source-files/at.bitfire.davdroid/build.gradle tests/source-files/com.kunzisoft.testcase/build.gradle tests/source-files/com.nextcloud.client/build.gradle tests/source-files/com.nextcloud.client.dev/src/generic/fastlane/metadata/android/en-US/full_description.txt tests/source-files/com.nextcloud.client.dev/src/generic/fastlane/metadata/android/en-US/short_description.txt tests/source-files/com.nextcloud.client.dev/src/generic/fastlane/metadata/android/en-US/title.txt tests/source-files/com.nextcloud.client.dev/src/versionDev/fastlane/metadata/android/en-US/full_description.txt tests/source-files/com.nextcloud.client.dev/src/versionDev/fastlane/metadata/android/en-US/short_description.txt tests/source-files/com.nextcloud.client.dev/src/versionDev/fastlane/metadata/android/en-US/title.txt tests/source-files/com.nextcloud.client/src/generic/fastlane/metadata/android/en-US/full_description.txt tests/source-files/com.nextcloud.client/src/generic/fastlane/metadata/android/en-US/short_description.txt tests/source-files/com.nextcloud.client/src/generic/fastlane/metadata/android/en-US/title.txt tests/source-files/com.nextcloud.client/src/versionDev/fastlane/metadata/android/en-US/full_description.txt tests/source-files/com.nextcloud.client/src/versionDev/fastlane/metadata/android/en-US/short_description.txt tests/source-files/com.nextcloud.client/src/versionDev/fastlane/metadata/android/en-US/title.txt tests/source-files/eu.siacs.conversations/build.gradle tests/source-files/eu.siacs.conversations/metadata/en-US/name.txt tests/source-files/fdroid/fdroidclient/AndroidManifest.xml tests/source-files/fdroid/fdroidclient/build.gradle tests/source-files/firebase-suspect/build.gradle tests/source-files/firebase-suspect/app/build.gradle tests/source-files/firebase-whitelisted/build.gradle tests/source-files/firebase-whitelisted/app/build.gradle tests/source-files/open-keychain/open-keychain/build.gradle tests/source-files/open-keychain/open-keychain/OpenKeychain/build.gradle tests/source-files/osmandapp/osmand/build.gradle tests/stats/known_apks.txtfdroidserver-1.0.9/fdroidserver.egg-info/top_level.txt0000664000175000017500000000001513324115526023045 0ustar hanshans00000000000000fdroidserver fdroidserver-1.0.9/fdroidserver.egg-info/requires.txt0000664000175000017500000000040513324115526022716 0ustar hanshans00000000000000androguard >= 3.1.0rc2 clint GitPython mwclient paramiko Pillow apache-libcloud >= 0.14.1 pyasn1 <0.5.0, >=0.4.1 pyasn1-modules == 0.2.1 python-vagrant PyYAML qrcode ruamel.yaml >= 0.13 requests >= 2.5.2, != 2.11.0, != 2.12.2, != 2.18.0 docker-py >= 1.9, < 2.0 fdroidserver-1.0.9/fdroidserver.egg-info/dependency_links.txt0000664000175000017500000000000113324115526024365 0ustar hanshans00000000000000 fdroidserver-1.0.9/hooks/0000775000175000017500000000000013324115531015246 5ustar hanshans00000000000000fdroidserver-1.0.9/hooks/install-hooks.sh0000775000175000017500000000151113272566407020410 0ustar hanshans00000000000000#!/bin/sh # # Install all the client hooks BASE_DIR="$(cd $(dirname $0); pwd -P)" HOOK_NAMES="applypatch-msg pre-applypatch post-applypatch pre-commit prepare-commit-msg commit-msg post-commit pre-rebase post-checkout post-merge pre-receive update post-receive post-update pre-auto-gc" HOOK_DIR="$(git rev-parse --show-toplevel)/.git/hooks" for hook in $HOOK_NAMES; do shipped_hook="$BASE_DIR/$hook" installed_hook="$HOOK_DIR/$hook" # If we don't distribute it, continue if [ ! -f "$shipped_hook" ]; then continue fi if [ -h "$installed_hook" ]; then echo "$installed_hook is a symlink - replacing." elif [ -e "$installed_hook" ]; then echo "$installed_hook hook already exists." continue fi # Create the symlink echo "ln -s -f \"$shipped_hook\" \"$installed_hook\"" ln -s -f "$shipped_hook" "$installed_hook" done fdroidserver-1.0.9/hooks/pre-commit0000775000175000017500000000655713323655167017302 0ustar hanshans00000000000000#!/bin/bash # # Simple pre-commit hook to check that there are no errors in the fdroidserver # source files. # Redirect output to stderr. exec 1>&2 files=`git diff-index --cached HEAD 2>&1 | sed 's/^:.* //' | uniq | cut -b100-500` if [ -z "$files" ]; then PY_FILES="fdroid makebuildserver setup.py examples/*.py buildserver/*.py fdroidserver/*.py" PY_TEST_FILES="tests/*.TestCase" SH_FILES="hooks/pre-commit" BASH_FILES="jenkins-build-all jenkins-setup-build-environment jenkins-test completion/bash-completion buildserver/provision-*" RB_FILES="buildserver/Vagrantfile" else # if actually committing right now, then only run on the files # that are going to be committed at this moment PY_FILES= PY_TEST_FILES= SH_FILES= BASH_FILES= RB_FILES= for f in $files; do test -e $f || continue case $f in *.py) PY_FILES+=" $f" ;; *.TestCase) PY_TEST_FILES+=" $f" ;; *.rb) RB_FILES+=" $f" ;; *) if head -1 $f | grep '^#!/bin/sh' > /dev/null 2>&1; then SH_FILES+=" $f" elif head -1 $f | grep '^#!/bin/bash' > /dev/null 2>&1; then BASH_FILES+=" $f" elif head -1 $f | grep '^#!.*python' > /dev/null 2>&1; then PY_FILES+=" $f" fi ;; esac done fi # We ignore the following PEP8 warnings # * E123: closing bracket does not match indentation of opening bracket's line # - Broken if multiple indentation levels start on a single line # * E501: line too long (82 > 79 characters) # - Recommended for readability but not enforced # - Some lines are awkward to wrap around a char limit # * W503: line break before binary operator # - Quite pedantic PEP8_IGNORE="E123,E501,W503" err() { echo >&2 ERROR: "$@" exit 1 } warn() { echo >&2 WARNING: "$@" } cmd_exists() { command -v $1 1>/dev/null } find_command() { for name in $@; do for suff in "3" "-3" "-python3" ""; do cmd=${name}${suff} if cmd_exists $cmd; then echo $cmd return 0 fi done done warn "$1 is not installed, using dummy placeholder!" echo : } DASH=$(find_command dash) PYFLAKES=$(find_command pyflakes) PEP8=$(find_command pycodestyle pep8) RUBY=$(find_command ruby) if [ "$PY_FILES $PY_TEST_FILES" != " " ]; then if ! $PYFLAKES $PY_FILES $PY_TEST_FILES; then err "pyflakes tests failed!" fi fi if [ "$PY_FILES" != "" ]; then if ! $PEP8 --ignore=$PEP8_IGNORE $PY_FILES; then err "pep8 tests failed!" fi fi # The tests use a little hack in order to cleanly import the fdroidserver # package locally like a regular package. pep8 doesn't see that, so this # makes pep8 skip E402 on the test files that need that hack. if [ "$PY_TEST_FILES" != "" ]; then if ! $PEP8 --ignore=$PEP8_IGNORE,E402 $PY_TEST_FILES; then err "pep8 tests failed!" fi fi for f in $SH_FILES; do if ! $DASH -n $f; then err "dash tests failed!" fi done for f in $BASH_FILES; do if ! bash -n $f; then err "bash tests failed!" fi done for f in $RB_FILES; do if ! $RUBY -c $f 1>/dev/null; then err "ruby tests failed!" fi done if grep -C 3 'shell=True' fdroidserver/[a-ce-z]*.py; then err "shell=True is too dangerous, there are unfiltered user inputs!" fi exit 0 fdroidserver-1.0.9/completion/0000775000175000017500000000000013324115531016274 5ustar hanshans00000000000000fdroidserver-1.0.9/completion/bash-completion0000664000175000017500000001443613323655167021330 0ustar hanshans00000000000000# fdroid(1) completion -*- shell-script -*- # # bash-completion - part of the FDroid server tools # # Copyright (C) 2013-2017 Hans-Christoph Steiner # Copyright (C) 2013, 2014 Daniel Martí # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . __fdroid_init() { COMPREPLY=() cur="${COMP_WORDS[COMP_CWORD]}" prev="${COMP_WORDS[COMP_CWORD-1]}" (( $# >= 1 )) && __complete_${1} } __by_ext() { local ext="$1" files=( metadata/*.$ext ) files=( ${files[@]#metadata/} ) files=${files[@]%.$ext} echo "$files" } __package() { files="$(__by_ext txt) $(__by_ext yml) $(__by_ext json)" COMPREPLY=( $( compgen -W "$files" -- $cur ) ) } __apk_package() { files=( ${1}/*.apk ) [ -f "${files[0]}" ] || return files=( ${files[@]#*/} ) files=${files[@]%_*} COMPREPLY=( $( compgen -W "$files" -- $cur ) ) } __apk_vercode() { local p=${cur:0:-1} files=( ${1}/${p}_*.apk ) [ -f "${files[0]}" ] || return files=( ${files[@]#*_} ) files=${files[@]%.apk} COMPREPLY=( $( compgen -P "${p}:" -W "$files" -- $cur ) ) } __vercode() { local p v echo $cur | IFS=':' read p v COMPREPLY=( $( compgen -P "${p}:" -W "$( while read line; do if [[ "$line" == "Build Version:"* ]] then line="${line#*,}" printf "${line%%,*} " elif [[ "$line" == "Build:"* ]] then line="${line#*,}" printf "${line%%,*} " fi done < "metadata/${p}.txt" )" -- $cur ) ) } __complete_options() { case "${cur}" in --*) COMPREPLY=( $( compgen -W "--help --version ${lopts}" -- $cur ) ) return 0;; *) COMPREPLY=( $( compgen -W "-h ${opts} --help --version ${lopts}" -- $cur ) ) return 0;; esac } __complete_build() { opts="-v -q -l -s -t -f -a -w" lopts="--verbose --quiet --latest --stop --test --server --reset-server --on-server --skip-scan --no-tarball --force --all --wiki --no-refresh" case "${cur}" in -*) __complete_options return 0;; *:*) __vercode return 0;; *) __package return 0;; esac } __complete_dscanner() { opts="-v -q -l" lopts="--verbose --quiet --clean-after --clean-before --clean-only --init-only --latest --repo-path" case "${cur}" in -*) __complete_options return 0;; *:) __vercode return 0;; *) __package return 0;; esac } __complete_gpgsign() { opts="-v -q" lopts="--verbose --quiet" __complete_options } __complete_install() { opts="-v -q" lopts="--verbose --quiet --all" case "${cur}" in -*) __complete_options return 0;; *:) __apk_vercode repo return 0;; *) __apk_package repo return 0;; esac } __complete_update() { opts="-c -v -q -b -i -I -e -w" lopts="--create-metadata --verbose --quiet --buildreport --interactive --icons --editor --wiki --pretty --clean --delete-unknown --nosign --rename-apks --use-date-from-apk" case "${prev}" in -e|--editor) _filedir return 0;; esac __complete_options } __complete_publish() { opts="-v -q" lopts="--verbose --quiet" case "${cur}" in -*) __complete_options return 0;; *:) __apk_vercode unsigned return 0;; *) __apk_package unsigned return 0;; esac } __complete_checkupdates() { opts="-v -q" lopts="--verbose --quiet --auto --autoonly --commit --gplay --allow-dirty" case "${cur}" in -*) __complete_options return 0;; *) __package return 0;; esac } __complete_import() { opts="-u -s -q" lopts="--url --subdir --rev --quiet" case "${prev}" in -u|--url|-s|--subdir|--rev) return 0;; esac __complete_options } __complete_readmeta() { opts="-v -q" lopts="--verbose --quiet" __complete_options } __complete_rewritemeta() { opts="-v -q -l" lopts="--verbose --quiet --list" case "${cur}" in -*) __complete_options return 0;; *) __package return 0;; esac } __complete_lint() { opts="-v -q" lopts="--verbose --quiet" case "${cur}" in -*) __complete_options return 0;; *) __package return 0;; esac } __complete_scanner() { opts="-v -q" lopts="--verbose --quiet" case "${cur}" in -*) __complete_options return 0;; *:) __vercode return 0;; *) __package return 0;; esac } __complete_verify() { opts="-v -q -p" lopts="--verbose --quiet" case "${cur}" in -*) __complete_options return 0;; *:) __vercode return 0;; *) __package return 0;; esac } __complete_btlog() { opts="-u" lopts="--git-remote --git-repo --url" __complete_options } __complete_mirror() { opts="-v" lopts="--archive --output-dir" __complete_options } __complete_nightly() { opts="-v -q" lopts="--show-secret-var" __complete_options } __complete_stats() { opts="-v -q -d" lopts="--verbose --quiet --download" __complete_options } __complete_deploy() { opts="-i -v -q" lopts="--identity-file --local-copy-dir --sync-from-local-copy-dir --verbose --quiet --no-checksum" __complete_options } __complete_signatures() { opts="-v -q" lopts="--verbose --no-check-https" case "${cur}" in -*) __complete_options return 0;; esac } __complete_signindex() { opts="-v -q" lopts="--verbose" __complete_options } __complete_init() { opts="-v -q -d" lopts="--verbose --quiet --distinguished-name --keystore --repo-keyalias --android-home --no-prompt" __complete_options } __cmds=" \ btlog \ build \ checkupdates \ deploy \ dscanner \ gpgsign \ import \ init \ install \ lint \ mirror \ nightly \ publish \ readmeta \ rewritemeta \ scanner \ signatures \ signindex \ stats \ update \ verify \ " for c in $__cmds; do eval "_fdroid_${c} () { local cur prev opts lopts __fdroid_init ${c} }" done _fdroid() { local cmd cmd=${COMP_WORDS[1]} [[ $__cmds == *\ $cmd\ * ]] && _fdroid_${cmd} || { (($COMP_CWORD == 1)) && COMPREPLY=( $( compgen -W "${__cmds}" -- $cmd ) ) } } complete -F _fdroid fdroid return 0 fdroidserver-1.0.9/PKG-INFO0000664000175000017500000000135013324115531015217 0ustar hanshans00000000000000Metadata-Version: 1.1 Name: fdroidserver Version: 1.0.9 Summary: F-Droid Server Tools Home-page: https://f-droid.org Author: The F-Droid Project Author-email: team@f-droid.org License: AGPL-3.0 Description: README.md Platform: UNKNOWN Classifier: Development Status :: 4 - Beta Classifier: Intended Audience :: Developers Classifier: Intended Audience :: Information Technology Classifier: Intended Audience :: System Administrators Classifier: Intended Audience :: Telecommunications Industry Classifier: License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+) Classifier: Operating System :: POSIX Classifier: Operating System :: MacOS :: MacOS X Classifier: Operating System :: Unix Classifier: Topic :: Utilities fdroidserver-1.0.9/.gitlab-ci.yml0000664000175000017500000001457013323655401016572 0ustar hanshans00000000000000 test: image: registry.gitlab.com/fdroid/ci-images-server:latest script: - pip3 install -e . - cd tests - ./complete-ci-tests # Test that the parsing of the .txt format didn't change from last # released version. This uses the commit ID of the release tags, # rather than the release tag itself so that contributor forks do not # need to include the tags in them for this test to work. # # The COMMIT_ID should be bumped after each release, so that the list # of sed hacks needed does not continuously grow. metadata_v0: image: registry.gitlab.com/fdroid/ci-images-server:latest variables: RELEASE_COMMIT_ID: 2f563f533b3571c80f7a09c6fbb453398658f723 # 1.0.2 script: - git fetch https://gitlab.com/fdroid/fdroidserver $RELEASE_COMMIT_ID - cd tests - export GITCOMMIT=`git describe` - git checkout $RELEASE_COMMIT_ID - cd .. - git clone --depth 1 https://gitlab.com/fdroid/fdroiddata - cd fdroiddata - ../tests/dump_internal_metadata_format.py - cd .. - git reset --hard - git checkout $GITCOMMIT - cd fdroiddata - echo "accepted_formats = ('txt', 'yml')" >> config.py - ../tests/dump_internal_metadata_format.py - sed -i -e '/Translation:/d' -e '/kivy:\sfalse/d' -e '/timeout:\s/d' metadata/dump_*/*.yaml - diff -uw metadata/dump_* debian_testing: image: debian:testing only: - master@fdroid/fdroidserver script: - apt-get -qy update - apt-get -qy dist-upgrade - apt-get -qy install --no-install-recommends fdroidserver git gnupg python3-setuptools - sed -i -e 's,testing,sid,g' -e 's,testing,sid,g' /etc/apt/sources.list - apt-get -qy update - apt-get install -y --no-install-recommends aapt androguard android-platform-tools-base zipalign - python3 -c 'import fdroidserver' - python3 -c 'import androguard' - export ANDROID_HOME=/usr/lib/android-sdk - export LANG=C.UTF-8 - cd tests - ./run-tests # test using LTS set up with the PPA, including Recommends ubuntu_lts: image: ubuntu:latest only: - master@fdroid/fdroidserver variables: DEBIAN_FRONTEND: noninteractive script: - echo Etc/UTC > /etc/timezone - apt-get -qy update - apt-get -qy install gnupg - while ! apt-key adv --keyserver hkp://pool.sks-keyservers.net --recv-key 9AAC253193B65D4DF1D0A13EEC4632C79C5E0151; do sleep 15; done - export RELEASE=`sed -n 's,^deb [^ ][^ ]* \([a-z]*\).*,\1,p' /etc/apt/sources.list | head -1` - echo "deb http://ppa.launchpad.net/fdroid/fdroidserver/ubuntu $RELEASE main" >> /etc/apt/sources.list - apt-get -qy update - apt-get -qy dist-upgrade - apt-get -qy install --install-recommends fdroidserver git python3-setuptools - export ANDROID_HOME=/usr/lib/android-sdk - export LANG=C.UTF-8 - cd tests - ./run-tests # test using TrustyLTS with all depends from pypi ubuntu_trusty_pip: image: ubuntu:trusty only: - master@fdroid/fdroidserver variables: DEBIAN_FRONTEND: noninteractive LANG: C.UTF-8 script: - echo Etc/UTC > /etc/timezone - apt-get -qy update - apt-get -qy dist-upgrade - apt-get -qy install git default-jdk python3-pip python3.4-venv - rm -rf env - pyvenv-3.4 env - . env/bin/activate - echo sed -i "s/'requests.*',$/'requests',/" setup.py - pip3 install --upgrade babel pip setuptools - pip3 install -e . - ./setup.py compile_catalog - ./tests/run-tests pip_install: image: archlinux/base only: - master@fdroid/fdroidserver script: - pacman --sync --sysupgrade --refresh --noconfirm grep python-pip python-virtualenv tar # setup venv to act as release build machine - python -m venv sdist-env - . sdist-env/bin/activate - ./setup.py compile_catalog sdist - deactivate - tar tzf dist/fdroidserver-*.tar.gz | grep locale/de/LC_MESSAGES/fdroidserver.mo # back to bare machine to act as user's install machine - pip install dist/fdroidserver-*.tar.gz - test -e /usr/share/locale/de/LC_MESSAGES/fdroidserver.mo - fdroid - fdroid readmeta - fdroid update --help lint_format_safety_checks: image: alpine:3.7 variables: LANG: C.UTF-8 script: - apk add --no-cache bash dash ca-certificates python3 - python3 -m ensurepip - pip3 install pycodestyle pyflakes 'pylint<2.0' safety - export EXITVALUE=0 - ./hooks/pre-commit || export EXITVALUE=1 - safety check --full-report || export EXITVALUE=1 - pylint --rcfile=.pylint-rcfile --output-format=colorized --reports=n fdroid makebuildserver setup.py fdroidserver/*.py tests/*.py tests/*.TestCase || export EXITVALUE=1 - exit $EXITVALUE fedora_latest: image: fedora:latest only: - master@fdroid/fdroidserver script: - dnf -y update - dnf -y install git gnupg java-1.8.0-openjdk-devel python3 python3-babel python3-pip rsync unzip wget - ./setup.py compile_catalog sdist - useradd -m -c "test account" --password "fakepassword" testuser - su testuser --login --command "cd `pwd`; pip3 install --user dist/fdroidserver-*.tar.gz" - test -e ~testuser/.local/share/locale/de/LC_MESSAGES/fdroidserver.mo - wget --no-verbose -O tools.zip https://dl.google.com/android/repository/tools_r25.2.4-linux.zip - unzip -q tools.zip - rm tools.zip - export AAPT_VERSION=`sed -n "s,^MINIMUM_AAPT_VERSION\s*=\s*['\"]\(.*\)[['\"],\1,p" fdroidserver/common.py` - export ANDROID_HOME=`pwd`/android-sdk - mkdir $ANDROID_HOME - mv tools $ANDROID_HOME/ - mkdir -p $ANDROID_HOME/licenses/ - printf "\n8933bad161af4178b1185d1a37fbf41ea5269c55\nd56f5187479451eabf01fb78af6dfcb131a6481e" > $ANDROID_HOME/licenses/android-sdk-license - printf "\n84831b9409646a918e30573bab4c9c91346d8abd" > $ANDROID_HOME/licenses/android-sdk-preview-license - printf "\n79120722343a6f314e0719f863036c702b0e6b2a\n84831b9409646a918e30573bab4c9c91346d8abd" > $ANDROID_HOME/licenses/android-sdk-preview-license-old - mkdir ~/.android - touch ~/.android/repositories.cfg - echo y | $ANDROID_HOME/tools/bin/sdkmanager "platform-tools" - echo y | $ANDROID_HOME/tools/bin/sdkmanager "build-tools;$AAPT_VERSION" - chown -R testuser . - cd tests - su testuser --login --command "cd `pwd`; export ANDROID_HOME=$ANDROID_HOME; fdroid=~testuser/.local/bin/fdroid ./run-tests" fdroidserver-1.0.9/examples/0000775000175000017500000000000013324115531015741 5ustar hanshans00000000000000fdroidserver-1.0.9/examples/fdroid-icon.png0000664000175000017500000000644713272566407020675 0ustar hanshans00000000000000PNG  IHDR00WsBIT|d pHYs a aJ%tEXtSoftwarewww.inkscape.org<tEXtTitleF-Droid logom{tEXtAuthorRobert Martinez1RtEXtCopyrightCC Attribution-ShareAlike http://creativecommons.org/licenses/by-sa/3.0/^Z IDAThՙ{mW]?ksqvmi) DhB4% D45&( 1)*?nc1TZN̝9Z}^wf:SkB^{{QU~c_x?yt3mOjWz~OA/|k3w]pPb`TЧjvS5AFxѵQ"g|tE_o _~K Wڑ$pUڪ, ` O}7>9ĝ+*)҇*]sӋ3~5Ɣ0X `LlLXlq7R}L8i$$!·8i·d<(je_,Ө~0{={/#yĄA J1leސ[?**QeWcoUY}a.8I$M>ëC!F,* C>31 xl*5>rhxT6pc0 ŕ$oÌ4uNr3_y'drAK*( cTId BK35vO/^o472ՂD=wK?tvm/}_na>ECDԭL'80;? ?a/)N2|gh hLa~ixt,z"b1h1D8U_8Is|.u]gg xgN dNȜys9K_?R4kåoGm#S\.3 CVCy.xwYwOw aDTN`Bqd@u1HRy5` 1jvw>k*Ita댍2>?&s~+4kOPNC^8-H7fwogzj -0bJ^3bՋ4$QbDgלWIEzkܸ˲nBn80˙3T.vnaљF .E"Ѿc FFxuݐvu=7;3ę tݝ@Y[^IZZKsz2q:zs5y̷ۨ CF:T󾜅P)Bb0&`~ql*")h@^uqED{/] ;r?-YZTJ%rk crjRKY(j6;hR?QzhO7P*@$R#,Ol6Ѩb Ρ(qcR{pi\g>9-jyj1&B\x[};8tWT- 8$DILms\}r3PVWVY]^2SgR!ZU$-,{XOb@ގNM",_[BzSrH^k*wsSҨ26#S8/'8`5@db> 1ze\t,s4FOq;`b4R -}hwe,cm"a?<:h0^P+&(^fav*: .,"Ɛipw+,axmo&i!@EZ<54g[\~%NONhPR[ cS #ocYDŽީ̫Q 7w^[asuMn*JK rEZZ#M-?(^吒zP#,6]$"MnF@^ZoPav84X#OB_JM֒KQ%SH1X 7)קbp *(> KV-qſeV[*[ڋW HkdO}HR}eBJ_۸!(A.gәg]};'n-\ y@nWIENDB`fdroidserver-1.0.9/examples/public-read-only-s3-bucket-policy.json0000664000175000017500000000035513272566407025116 0ustar hanshans00000000000000{ "Version":"2012-10-17", "Statement":[ {"Sid":"AddPerm", "Effect":"Allow", "Principal":"*", "Action":"s3:GetObject", "Resource":"arn:aws:s3:::examplebucket/fdroid/*" } ] } fdroidserver-1.0.9/examples/makebuildserver.config.py0000664000175000017500000000514113272566407022762 0ustar hanshans00000000000000#!/usr/bin/env python3 # # You may want to alter these before running ./makebuildserver # Name of the base box to use # basebox = "jessie64" # Location where testing32.box can be found, if you don't already have # it. For security reasons, it's recommended that you make your own # in a secure environment using trusted media (see the manual) but # you can use this default if you like... # baseboxurl = "https://f-droid.org/jessie64.box" # # or if you have a cached local copy, you can use that first: # baseboxurl = ["file:///home/fdroid/fdroidserver/cache/jessie64.box", "https://f-droid.org/jessie64.box"] # In the process of setting up the build server, many gigs of files # are downloaded (Android SDK components, gradle, etc). These are # cached so that they are not redownloaded each time. By default, # these are stored in ~/.cache/fdroidserver # # cachedir = 'buildserver/cache' # A big part of creating a new instance is downloading packages from Debian. # This setups up a folder in ~/.cache/fdroidserver to cache the downloaded # packages when rebuilding the build server from scratch. This requires # that virtualbox-guest-utils is installed. # # apt_package_cache = True # The buildserver can use some local caches to speed up builds, # especially when the internet connection is slow and/or expensive. # If enabled, the buildserver setup will look for standard caches in # your HOME dir and copy them to the buildserver VM. Be aware: this # will reduce the isolation of the buildserver from your host machine, # so the buildserver will provide an environment only as trustworthy # as the host machine's environment. # # copy_caches_from_host = True # To specify which Debian mirror the build server VM should use, by # default it uses http.debian.net, which auto-detects which is the # best mirror to use. # # debian_mirror = 'http://ftp.uk.debian.org/debian/' # The amount of RAM the build server will have (default: 2048) # memory = 3584 # The number of CPUs the build server will have # cpus = 1 # Debian package proxy server - if you have one # aptproxy = "http://192.168.0.19:8000" # If this is running on an older machine or on a virtualized system, # it can run a lot slower. If the provisioning fails with a warning # about the timeout, extend the timeout here. (default: 600 seconds) # # boot_timeout = 1200 # By default, this whole process uses VirtualBox as the provider, but # QEMU+KVM is also supported via the libvirt plugin to vagrant. If # this is run within a KVM guest, then libvirt's QEMU+KVM will be used # automatically. It can also be manually enabled by uncommenting # below: # # vm_provider = 'libvirt' fdroidserver-1.0.9/examples/opensc-fdroid.cfg0000664000175000017500000000017313272566407021175 0ustar hanshans00000000000000name = OpenSC description = SunPKCS11 w/ OpenSC Smart card Framework library = /usr/lib/opensc-pkcs11.so slotListIndex = 1 fdroidserver-1.0.9/examples/template.yml0000664000175000017500000000036513272566407020321 0ustar hanshans00000000000000AuthorName: . WebSite: '' Bitcoin: null Litecoin: null Donation: null License: Unknown Categories: - Internet IssueTracker: '' SourceCode: '' Changelog: '' Name: . Summary: . Description: | . Archive Policy: 2 versions Requires Root: No fdroidserver-1.0.9/examples/config.py0000664000175000017500000002773613323655167017614 0ustar hanshans00000000000000#!/usr/bin/env python3 # Copy this file to config.py, then amend the settings below according to # your system configuration. # Custom path to the Android SDK, defaults to $ANDROID_HOME # sdk_path = "$ANDROID_HOME" # Custom paths to various versions of the Android NDK, defaults to 'r12b' set # to $ANDROID_NDK. Most users will have the latest at $ANDROID_NDK, which is # used by default. If a version is missing or assigned to None, it is assumed # not installed. # ndk_paths = { # 'r10e': None, # 'r11c': None, # 'r12b': "$ANDROID_NDK", # 'r13b': None, # 'r14b': None, # 'r15c': None, # 'r16b': None, # } # java_paths = { # '8': "/usr/lib/jvm/java-8-openjdk", # } # Build tools version to be used # build_tools = "25.0.2" # Force all build to use the above version of build -tools, good for testing # builds without having all of the possible build-tools installed. # force_build_tools = True # Command or path to binary for running Ant # ant = "ant" # Command or path to binary for running maven 3 # mvn3 = "mvn" # Command or path to binary for running Gradle # gradle = "gradle" # Set the maximum age (in days) of an index that a client should accept from # this repo. Setting it to 0 or not setting it at all disables this # functionality. If you do set this to a non-zero value, you need to ensure # that your index is updated much more frequently than the specified interval. # The same policy is applied to the archive repo, if there is one. # repo_maxage = 0 repo_url = "https://MyFirstFDroidRepo.org/fdroid/repo" repo_name = "My First F-Droid Repo Demo" repo_icon = "fdroid-icon.png" repo_description = """ This is a repository of apps to be used with F-Droid. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitlab.com/u/fdroid. """ # As above, but for the archive repo. # archive_older sets the number of versions kept in the main repo, with all # older ones going to the archive. Set it to 0, and there will be no archive # repository, and no need to define the other archive_ values. archive_older = 3 archive_url = "https://f-droid.org/archive" archive_name = "My First F-Droid Archive Demo" archive_icon = "fdroid-icon.png" archive_description = """ The repository of older versions of applications from the main demo repository. """ # This allows a specific kind of insecure APK to be included in the # 'repo' section. Since April 2017, APK signatures that use MD5 are # no longer considered valid, jarsigner and apksigner will return an # error when verifying. `fdroid update` will move APKs with these # disabled signatures to the archive. This option stops that # behavior, and lets those APKs stay part of 'repo'. # # allow_disabled_algorithms = True # Normally, all apps are collected into a single app repository, like on # https://f-droid.org. For certain situations, it is better to make a repo # that is made up of APKs only from a single app. For example, an automated # build server that publishes nightly builds. # per_app_repos = True # `fdroid update` will create a link to the current version of a given app. # This provides a static path to the current APK. To disable the creation of # this link, uncomment this: # make_current_version_link = False # By default, the "current version" link will be based on the "Name" of the # app from the metadata. You can change it to use a different field from the # metadata here: # current_version_name_source = 'packageName' # Optionally, override home directory for gpg # gpghome = '/home/fdroid/somewhere/else/.gnupg' # The ID of a GPG key for making detached signatures for apks. Optional. # gpgkey = '1DBA2E89' # The key (from the keystore defined below) to be used for signing the # repository itself. This is the same name you would give to keytool or # jarsigner using -alias. (Not needed in an unsigned repository). # repo_keyalias = "fdroidrepo" # Optionally, the public key for the key defined by repo_keyalias above can # be specified here. There is no need to do this, as the public key can and # will be retrieved from the keystore when needed. However, specifying it # manually can allow some processing to take place without access to the # keystore. # repo_pubkey = "..." # The keystore to use for release keys when building. This needs to be # somewhere safe and secure, and backed up! The best way to manage these # sensitive keys is to use a "smartcard" (aka Hardware Security Module). To # configure F-Droid to use a smartcard, set the keystore file using the keyword # "NONE" (i.e. keystore = "NONE"). That makes Java find the keystore on the # smartcard based on 'smartcardoptions' below. # keystore = "~/.local/share/fdroidserver/keystore.jks" # You should not need to change these at all, unless you have a very # customized setup for using smartcards in Java with keytool/jarsigner # smartcardoptions = "-storetype PKCS11 -providerName SunPKCS11-OpenSC \ # -providerClass sun.security.pkcs11.SunPKCS11 \ # -providerArg opensc-fdroid.cfg" # The password for the keystore (at least 6 characters). If this password is # different than the keypass below, it can be OK to store the password in this # file for real use. But in general, sensitive passwords should not be stored # in text files! # keystorepass = "password1" # The password for keys - the same is used for each auto-generated key as well # as for the repository key. You should not normally store this password in a # file since it is a sensitive password. # keypass = "password2" # The distinguished name used for all keys. # keydname = "CN=Birdman, OU=Cell, O=Alcatraz, L=Alcatraz, S=California, C=US" # Use this to override the auto-generated key aliases with specific ones # for particular applications. Normally, just leave it empty. # keyaliases = {} # keyaliases['com.example.app'] = 'example' # You can also force an app to use the same key alias as another one, using # the @ prefix. # keyaliases['com.example.another.plugin'] = '@com.example.another' # The full path to the root of the repository. It must be specified in # rsync/ssh format for a remote host/path. This is used for syncing a locally # generated repo to the server that is it hosted on. It must end in the # standard public repo name of "/fdroid", but can be in up to three levels of # sub-directories (i.e. /var/www/packagerepos/fdroid). You can include # multiple servers to sync to by wrapping the whole thing in {} or [], and # including the serverwebroot strings in a comma-separated list. # # serverwebroot = 'user@example:/var/www/fdroid' # serverwebroot = { # 'foo.com:/usr/share/nginx/www/fdroid', # 'bar.info:/var/www/fdroid', # } # The full URL to a git remote repository. You can include # multiple servers to mirror to by wrapping the whole thing in {} or [], and # including the servergitmirrors strings in a comma-separated list. # Servers listed here will also be automatically inserted in the mirrors list. # # servergitmirrors = 'https://github.com/user/repo' # servergitmirrors = { # 'https://github.com/user/repo', # 'https://gitlab.com/user/repo', # } # Any mirrors of this repo, for example all of the servers declared in # serverwebroot and all the servers declared in servergitmirrors, # will automatically be used by the client. If one # mirror is not working, then the client will try another. If the # client has Tor enabled, then the client will prefer mirrors with # .onion addresses. This base URL will be used for both the main repo # and the archive, if it is enabled. So these URLs should end in the # 'fdroid' base of the F-Droid part of the web server like serverwebroot. # # mirrors = ( # 'https://foo.bar/fdroid', # 'http://foobarfoobarfoobar.onion/fdroid', # ) # optionally specify which identity file to use when using rsync or git over SSH # # identity_file = '~/.ssh/fdroid_id_rsa' # If you are running the repo signing process on a completely offline machine, # which provides the best security, then you can specify a folder to sync the # repo to when running `fdroid server update`. This is most likely going to # be a USB thumb drive, SD Card, or some other kind of removable media. Make # sure it is mounted before running `fdroid server update`. Using the # standard folder called 'fdroid' as the specified folder is recommended, like # with serverwebroot. # # local_copy_dir = '/media/MyUSBThumbDrive/fdroid' # If you are using local_copy_dir on an offline build/signing server, once the # thumb drive has been plugged into the online machine, it will need to be # synced to the copy on the online machine. To make that happen # automatically, set sync_from_local_copy_dir to True: # # sync_from_local_copy_dir = True # To upload the repo to an Amazon S3 bucket using `fdroid server # update`. Warning, this deletes and recreates the whole fdroid/ # directory each time. This prefers s3cmd, but can also use # apache-libcloud. To customize how s3cmd interacts with the cloud # provider, create a 's3cfg' file next to this file (config.py), and # those settings will be used instead of any 'aws' variable below. # # awsbucket = 'myawsfdroid' # awsaccesskeyid = 'SEE0CHAITHEIMAUR2USA' # awssecretkey = 'yourverysecretkeywordpassphraserighthere' # If you want to force 'fdroid server' to use a non-standard serverwebroot # # nonstandardwebroot = False # If you want to upload the release apk file to androidobservatory.org # # androidobservatory = False # If you want to upload the release apk file to virustotal.com # You have to enter your profile apikey to enable the upload. # # virustotal_apikey = "virustotal_apikey" # The build logs can be posted to a mediawiki instance, like on f-droid.org. # wiki_protocol = "http" # wiki_server = "server" # wiki_path = "/wiki/" # wiki_user = "login" # wiki_password = "1234" # Keep a log of all generated index files in a git repo to provide a # "binary transparency" log for anyone to check the history of the # binaries that are published. This is in the form of a "git remote", # which this machine where `fdroid update` is run has already been # configured to allow push access (e.g. ssh key, username/password, etc) # binary_transparency_remote = "git@gitlab.com:fdroid/binary-transparency-log.git" # Only set this to true when running a repository where you want to generate # stats, and only then on the master build servers, not a development # machine. If you want to keep the "added" and "last updated" dates for each # app and APK in your repo, then you should enable this. # update_stats = True # When used with stats, this is a list of IP addresses that are ignored for # calculation purposes. # stats_ignore = [] # Server stats logs are retrieved from. Required when update_stats is True. # stats_server = "example.com" # User stats logs are retrieved from. Required when update_stats is True. # stats_user = "bob" # Use the following to push stats to a Carbon instance: # stats_to_carbon = False # carbon_host = '0.0.0.0' # carbon_port = 2003 # Set this to true to always use a build server. This saves specifying the # --server option on dedicated secure build server hosts. # build_server_always = True # By default, fdroid will use YAML .yml and the custom .txt metadata formats. It # is also possible to have metadata in JSON by adding 'json'. # accepted_formats = ('txt', 'yml') # Limit in number of characters that fields can take up # Only the fields listed here are supported, defaults shown # char_limits = { # 'Summary': 80, # 'Description': 4000, # } # It is possible for the server operator to specify lists of apps that # must be installed or uninstalled on the client (aka "push installs). # If the user has opted in, or the device is already setup to respond # to these requests, then F-Droid will automatically install/uninstall # the packageNames listed. This is protected by the same signing key # as the app index metadata. # # install_list = ( # 'at.bitfire.davdroid', # 'com.fsck.k9', # 'us.replicant', # ) # # uninstall_list = ( # 'com.facebook.orca', # 'com.android.vending', # ) fdroidserver-1.0.9/.travis.yml0000664000175000017500000000725213303240575016246 0ustar hanshans00000000000000 # Use the Android base system since it provides the SDK, etc. language: java matrix: include: - os: linux language: android - os: osx osx_image: xcode9.3 env: ANDROID_SDK_ROOT=/usr/local/share/android-sdk env: ANDROID_HOME=/usr/local/share/android-sdk - os: osx osx_image: xcode9.2 env: ANDROID_SDK_ROOT=/usr/local/share/android-sdk env: ANDROID_HOME=/usr/local/share/android-sdk - os: osx osx_image: xcode8.3 env: ANDROID_SDK_ROOT=/usr/local/share/android-sdk env: ANDROID_HOME=/usr/local/share/android-sdk # On Ubuntu/trusty 14.04, the PPA is needed on to provide lots of the # dependencies, but this then also serves as a test of the PPA, which # is used on Windows Subsystem for Linux. addons: apt: update: true sources: - sourceline: 'ppa:fdroid/fdroidserver' packages: - python3-babel - python3-setuptools - fdroidserver android: components: - android-23 # required for `fdroid build` test - build-tools-27.0.3 # required for `fdroid build` test licenses: - 'android-sdk-preview-.+' - 'android-sdk-license-.+' # * ensure java8 is installed since Android SDK doesn't work with Java9 # * Java needs to be at least 1.8.0_131 to have MD5 properly disabled # https://blogs.oracle.com/java-platform-group/oracle-jre-will-no-longer-trust-md5-signed-code-by-default # https://opsech.io/posts/2017/Jun/09/openjdk-april-2017-security-update-131-8u131-and-md5-signed-jars.html install: - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then set -x; brew update > /dev/null; if [ "`sw_vers -productVersion | sed 's,10\.\([0-9]*\).*,\1,'`" -gt 10 ]; then brew upgrade python; else brew install python3; fi; brew install dash bash gradle jenv; brew install gnu-sed --with-default-names; if ! ruby -e 'v = `javac -version 2>&1`.split()[1].gsub("_", "."); exit Gem::Dependency.new("", "~> 1.8.0.131").match?("", v)'; then brew cask uninstall java --force; brew cask install caskroom/versions/java8; fi; brew cask install android-sdk; export AAPT_VERSION=`sed -n "s,^MINIMUM_AAPT_VERSION\s*=\s*['\"]\(.*\)[['\"],\1,p" fdroidserver/common.py`; mkdir -p "$ANDROID_HOME/licenses"; echo -e "\n8933bad161af4178b1185d1a37fbf41ea5269c55" > "$ANDROID_HOME/licenses/android-sdk-license"; echo -e "\nd56f5187479451eabf01fb78af6dfcb131a6481e" >> "$ANDROID_HOME/licenses/android-sdk-license"; echo -e "\n84831b9409646a918e30573bab4c9c91346d8abd" > "$ANDROID_HOME/licenses/android-sdk-preview-license"; echo y | $ANDROID_HOME/tools/bin/sdkmanager "platform-tools"; echo y | $ANDROID_HOME/tools/bin/sdkmanager "build-tools;$AAPT_VERSION"; echo y | $ANDROID_HOME/tools/bin/sdkmanager "platforms;android-23"; sudo pip3 install babel; sudo pip3 install --quiet --editable . ; sudo rm -rf fdroidserver.egg-info; ls -l /System/Library/Java/JavaVirtualMachines || true; ls -l /Library/Java/JavaVirtualMachines || true; echo $PATH; echo $JAVA_HOME; jenv versions; /usr/libexec/java_home; java -version; which java; javac -version; which javac; jarsigner -help; which jarsigner; keytool -help; which keytool; set +x; fi # The OSX tests seem to run slower, they often timeout. So only run # the test suite with the installed version of fdroid. # # Supporting pip on Ubuntu/trusty was too painful here, since it seems # that pip installs conflict with the Ubuntu packages. script: - ./tests/run-tests after_failure: - cd $TRAVIS_BUILD_DIR - ls -lR | curl -F 'clbin=<-' https://clbin.com fdroidserver-1.0.9/locale/0000775000175000017500000000000013324115531015362 5ustar hanshans00000000000000fdroidserver-1.0.9/locale/bo/0000775000175000017500000000000013324115531015762 5ustar hanshans00000000000000fdroidserver-1.0.9/locale/bo/LC_MESSAGES/0000775000175000017500000000000013324115531017547 5ustar hanshans00000000000000fdroidserver-1.0.9/locale/bo/LC_MESSAGES/fdroidserver.mo0000664000175000017500000023446513324115526022624 0ustar hanshans00000000000000 ) 77$o-++9^T!(!H"j&'1"A1.sOE+TF3*& *Q :|  - R!$X!6}!9!!)"-/"1]""*""/"[*#9#5## $C3$-w$[$*%V,%%%%+%=%1&H&!c&U&#&6&%6'4\'#''')'" ($/(!T(!v((;('(/)E)(d))))-) *2'*4Z*6**** +F0+=w++-+:,>,U],,(,,A-!T-Hv-"- -v.,z../. ./74/l///!/&/.0.?03n00.040!13*1^1dr1*192!<2(^2)232-2-3A3'V3~3333334(4#G4+k44>44)5!85Z5&k5"525 55* 6'46\6Jr6B677#07T77m7&77C7I/8!y88N8$9!*9L9j99+9%99< :F:3`::::0:.;@=;~;;*;';<1<%L< r<<7<1<1=*7=;b=*=#===->C>`>:>:>7>&.?-U???=?,?(@E@Z@s@/@ @@@*A(0Q>oQ%QIQR>R+RR~R#RNR3 S4@S;uSSS4ST8T"XTC{TT2T U( U.IU2xU U-UU<U!,VNV]V%zV*VVVW/WNW&]WWDWW!W3X%DXNjXFX(Y-)Y'WY-YYYYY#Z'(ZGPZZ.ZZ[%[D[d[[[[[f[fH\-\&\],$]Q]q](]]5] ^7&^^^6f^(^2^(^G"_9j__7_=_ 4`8U`B`` `&a.ackc5dndT'e+|eeM>f3f:ff5g|LgDgNhP]hThUiYiajpjjkkDl1m}m@OnFnLn$oopVqiqXr7s$Ntstw4u`uV vdvvFowwKNx{x[yry zcz{{@{|n}~.Dm3BG@xŃ>cN|(\Zs]Wч)r^xщJD(njTKE]ZƏ^NؑcY(HOP(K"nCU[vhߛR]VF3gU xcnܠ_KwZ#.~s!:ȣܣ*ǥygƨWYdRRE <PcNc@{( IsխBIhH>LxݰkV±6Ajn` \hwo&ݸι!ȺWm߽AMTx]E1TT_Qg=vZw`3Q9.WhX *qr h` "j"OkeEKc@:6qL5IxwMl^7_ S xGO}q(zAoU#HK &21P`FYM1){&} *n"$||#USwJnN Oey"[ZZbpb46k+,`fyE\&j u o B 9 $X } a7 {   %'IMcIE} 2r@8yFf`fKBPR Q`jEB dcMi`H*Y  !G!!`l""l#$$~%%:0&Ck&y&\)'P''Oi(h)q"*U*8*[#+}+U+6S,<,3,T,"P-s.b;//G0u0q?11Q1o!2u2U3]3 3`4t4.5jH5G5566=Y7B7^7B98/|8E8B8 SSH Public Key to be used as Deploy Key: {path} encoded for the DEBUG_KEYSTORE secret variable:"%s/" has no matching metadata file!"{path}" contains outdated {name} ({version})"{path}" contains recent {name} ({version})"{path}" exists but s3cmd is not installed!"{path}" is not an accepted format, convert to: {formats}%(option)s option requires %(number)d argument%(option)s option requires %(number)d arguments%(prog)s: error: %(message)s %d problems found%prog [options]%r is not callable%s is not an accepted build field%s option does not take a value'keypass' not found in config.py!'keystore' not found in config.py!'keystorepass' not found in config.py!'repo_keyalias' not found in config.py!'required' is an invalid argument for positionals'sdk_path' not set in 'config.py'!'{aapt}' is too old, fdroid requires build-tools-23.0.0 or newer!'{apkfilename}' is already installed on {dev}.'{field}' will be in random order! Use () or [] brackets if order is important!'{path}' failed to execute!'{value}' is not a valid {field} in {appid}. Regex pattern: {pattern}...checkupdate failed for {appid} : {error}.__call__() not defined.fdroid.txt is not supported! Convert to .fdroid.yml or .fdroid.json./issues is missingAdd PGP signatures using GnuPG for packages in repoAdd a new application from its source codeAdd a repo signing key to an unsigned repoAdd skeleton metadata files for APKs that are missing themAdding new repo for only {name}Alias of the repo signing key in the keystoreAllows a different revision (or git branch) to be specified for the initial importAlso mirror the full archive sectionAlso warn about formatting issues, like rewritemeta -lAndroid SDK '{path}' does not have '{dirname}' installed!Android SDK not found!Android SDK path '{path}' does not exist!Android SDK path '{path}' is not a directory!Android build-tools path '{path}' does not exist!AndroidManifest.xml has no dateApp is in '{repo}' but has a link to {url}Appending .git is not necessaryArchiving {apkfilename} with invalid signature!Base URL to mirror, can include the index signing key using the query string: ?fingerprint=Branch '{branch}' used as commit in build '{versionName}'Branch '{branch}' used as commit in srclib '{srclib}'Build a package from sourceBuild all applications availableBuild generated by `fdroid import` - remove disable line once readyBuild only the latest version of each packageBuild should have comma-separated versionName and versionCode, not "{value}", in {linedesc}Built repo based in "%s" with this config:Can't build due to {} error while scanningCan't build due to {} errors while scanningCannot find a packageName for {path}!Cannot resolve app id {appid}Cannot use --list and --to at the same timeCannot write "{path}", not an accepted format, use: {formats}Categories are not setCategory '%s' is not validCheck for updates to applicationsChecking archiving for {appid} - apks:{integer}, keepversions:{keep}, archapks:{arch}Clean after all scans have finishedClean before the scans start and rebuild the containerClean up all containers and then exitClean update - don't uses caches, reprocess all APKsComma separated list of categories.Command '%s' not recognised. Commit changesCould not find '{command}' on your systemCould not find {path} to remove itCould not open apk file for analysisCouldn't find latest version codeCouldn't find latest version nameCouldn't find package IDCowardily refusing to overwrite existing signing key setup!Create a repo signing key in a keystoreCreate skeleton metadata files that are missingCreated new container "{name}"Creating "{path}" for configuring s3cmd.Creating log directoryCreating new S3 bucket: {url}Creating output directoryCreating signed index with this key (SHA256):Creating temporary directoryCreating unsigned index in preparation for signingDEBUG_KEYSTORE is not set or the value is incompleteDelete APKs and/or OBBs without metadata from the repoDeleting unknown file: {path}Description '%s' is just the app's summaryDescription has a duplicate lineDescription has a list (%s) but it isn't bulleted (*) nor numbered (#)Description of length {length} is over the {limit} char limitDo not include "{path}" in URL!Do not prompt for Android SDK path, just failDon't create a source tarball, useful when testing a buildDon't do anything logs-relatedDon't refresh the repository, useful when testing a build with no internet connectionDon't use rsync checksumsDownload complete mirrors of small reposDownload logs we don't haveDownloading the repository already failed once, not trying again.Downloading {url} failed. {error}Duplicate build recipe found for versionCode {versionCode} in {linedesc}Duplicate link in '{field}': {url}Dynamically scan APKs post buildERROR: this command should never be used to mirror f-droid.org! A full mirror of f-droid.org requires more than 200GB.ERROR: unsupported CI type, patches welcome!Empty build flag at {linedesc}Enter the path to the Android SDK (%s) here: > Error while getting repo addressExtract signatures from APKsFailed fetching signatures for '{apkfilename}': {error}Failed reading {path}: {error}Failed resizing {path}: {error}Failed to align applicationFailed to create S3 bucket: {url}Failed to get APK manifest informationFailed to get apk information, deleting {path}Failed to get apk information, skipping {path}Failed to install '{apkfilename}' on {dev}: {error}Failed to sign applicationFetched buildserverid from VM: {buildserverid}Fetched signatures for '{apkfilename}' -> '{sigdir}'FinishedFlattr donation methods belong in the FlattrID flagForbidden HTML tagsForce build of disabled apps, and carries on regardless of scan problems. Only allowed in test mode.Force halting build after {0} sec timeout!Found "{path}" graphic without metadata for app "{name}"!Found invalid appids in argumentsFound invalid versionCodes for some appsFound multiple metadata files for {appid}Found multiple signing certificates for repository.Found multiple signing certificates in {path}Found no signing certificates for repository.Found non-file at %sGenerated skeleton metadata for {appid}Git checkout of '%s' failedGit clean failedGit fetch failedGit remote set-head failedGit reset failedGit submodule sync failedGit submodule update failedHTTPS must be used with Subversion URLs!Ignoring package without metadata: Ignoring stale cache data for {apkfilename}Ignoring {ext} file at '{path}'Include APKs that are signed with disabled algorithms like MD5Initialising submodulesInstall all signed applications availableInstall built packages on devicesInstalling %s...Installing '{apkfilename}' on {dev}...Interact with the repo HTTP serverInteractively ask about things that need updating.Invalid APKInvalid boolean '%s'Invalid build flag at {line} in {linedesc}Invalid build format: {value} in {name}Invalid bulleted listInvalid license tag "%s"! Use only tags from https://spdx.org/license-listInvalid link - use [http://foo.bar Link title] or [http://foo.bar]Invalid metadata in %s:%dInvalid metadata in: Invalid name for published file: %sInvalid package name {0}Invalid versionCode: "{versionCode}" is not an integer!JAR signature failed to verify: {path}JAR signature verified: {path}Java JDK not found! Install in standard location or set java_paths!Java jarsigner not found! Install in standard location or set java_paths!Javascript in HTML src attributesKeystore for signing key: Last used commit '{commit}' looks like a tag, but Update Check Mode is '{ucm}'List files that would be reformattedMake the build stop on exceptionsMalformed repository mirrors.Malformed serverwebroot line:Missing output directoryName '%s' is just the auto name - remove itNo 'config.py' found, using defaults.No Android SDK found!No android or kivy project could be found. Specify --subdir?No attached devices foundNo commit specified for {versionName} in {linedesc}No fingerprint in URL.No git submodules availableNo information found.No need to specify that the app is Free SoftwareNo need to specify that the app is for AndroidNo option set! Edit your config.py to set at least one of these:No packages specifiedNo signed apk available for %sNo signed output directory - nothing to doNo signing certificates found in {path}No such package: %sNo such versionCode {versionCode} for app {appid}No unsigned directory - nothing to doNothing to doNothing to do for {appid}.OBB file has newer versionCode({integer}) than any APK:OBB filename must start with "main." or "patch.":OBB's packagename does not match a supported APK:Old APK signature failed to verify: {path}Only PNG and JPEG are supported for graphics, found: {path}Only print differences with the Play StoreOnly process apps with auto-updatesOptionsOverall license of the project.Override path for repo APKs (default: ./repo)Parsing manifest at '{path}'Password required with usernamePath to main Android project subdirectory, if not in root.Path to main android project subdirectory, if not in root.Path to the Android SDK (sometimes set in ANDROID_HOME)Path to the git repo to use as the logPath to the keystore for the repo signing keyPrepare Drozer to run a scanPrepare drozer to run a scanPrint the secret variable to the terminal for easy copy/pasteProblem with description of {appid}: {error}Problem with xml at '{path}'Process auto-updatesProcessing {apkfilename}Processing {appid}Produce human-readable XML/JSON for index filesProduce human-readable index.xmlProject URL to import from.Punctuation should be avoidedPush the log to this git remote repositoryPushing binary transparency log to {url}Pushing to {url}Quickly start a new repositoryRead all the metadata files and exitReading '{config_file}'Reading packageName/versionCode/versionName failed, APK invalid: '{apkfilename}'Reading {apkfilename} from cacheRecalculate aggregate stats - use when changes have been made that would invalidate old cached data.Removing specified filesRename APK files that do not match package.name_123.apkReport on build data statusReset and create a brand new build server, even if the existing one appears to be ok.Resize all the icons exceeding the max pixel size and exitRestrict output to warnings and errorsRewrite all the metadata filesRewrite to a specific format: Rewriting '{appid}'Rewriting '{appid}' to '{path}'Run rewritemeta to fix formattingRunning first pass with MD5 checking disabledScan only the latest version of each packageScan the source code of a packageScanner found {} problemScanner found {} problemsSet clock to that time using:Set open file limit to {integer}Set up an app build for a nightly build repoSetting open file limit failed: Setting {0} sec timeout for this buildSetup an emulator, install the APK on it and perform a Drozer scanSetup an emulator, install the apk on it and perform a drozer scanSign and place packages in the repoSign indexes created using update --nosignSkip scanning the source code for binaries and other problemsSkipping '{apkfilename}' with invalid signature!Skipping index generation for {appid}Skipping {apkfilename} with invalid signature!Skipping {appid}: disabledSkipping {appid}: no builds specifiedSpecify a local folder to sync the repo toSpecify an identity file to provide to SSH for rsyncingSpecify editor to use in interactive mode. Default Specify editor to use in interactive mode. Default %sSpecify editor to use in interactive mode. Default is {path}Specify that we're running on the build serverSpecify which debug keystore file to use.Spew out even more information than normalSummary '%s' is just the app's nameSummary of length {length} is over the {limit} char limitSystem clock is older than date in {path}!Test mode - put output in the tmp directory only, and always build, even if the output already exists.The OBB version code must come after "{name}.":The base URL for the repo to log (default: https://f-droid.org)The directory to write the mirror toThe only commands currently supported are 'init' and 'update'The repository's fingerprint does not match.The repository's index could not be verified.The root dir for local_copy_dir "{path}" does not exist!The the file to be included in the repo (path or glob)There is a keyalias collision - publishing haltedThis repo already has local metadata: %sTo use awsbucket, awssecretkey and awsaccesskeyid must also be set in config.py!UCM is set but it looks like checkupdates hasn't been run yetURL shorteners should not be usedURL title is just the URL, use brackets: [URL]URL {url} in Description: {error}Unexpected text on same line as {field} in {linedesc}Unknown exception found!Unknown file '{filename}' in build '{versionName}'Unknown metadata format: %sUnknown metadata format: {path}Unknown version of aapt, might cause problems: Unlinkified link - use [http://foo.bar Link title] or [http://foo.bar]Unnecessary leading spaceUnnecessary trailing spaceUnrecognised app field: Unrecognised field '{field}' in {linedesc}Unsupported file type "{extension}" for repo graphicUnsupported graphics file found: {path}Unsupported metadata format, use: --to [{supported}]Unterminated ]Unterminated ]]Unterminated build in {name}Unterminated continuation in {name}Unused extlib at %sUnused file at %sUpdate Check Name is set to the known app id - it can be removedUpdate repo information for new packagesUpdate the binary transparency log for a URLUpdate the stats of the repoUpdate the wikiUsageUsage: %s Use /HEAD instead of /master to point at a file in the default branchUse `fdroid update -c` to create it.Use build serverUse date from APK instead of current time for newly added APKsUse date from apk instead of current time for newly added apksUsing "{path}" for configuring s3cmd.Using Java's jarsigner, not recommended for verifying APKs! Use apksignerUsing s3cmd to sync with: {url}Valid commands are:Verify the integrity of downloaded packagesVerifying index signature:Warn about possible metadata errorsWhen configured for signed indexes, create only unsigned indexes at this stageX.509 'Distiguished Name' used when generating keysX.509 'Distinguished Name' used when generating keysYou can use ANDROID_HOME to set the path to your SDK, i.e.:adding IdentityFile to {path}adding to {name}: {path}ambiguous option: %(option)s could match %(matches)sambiguous option: %s (%s?)applicationId in the form APPIDapplicationId to check for updatesapplicationId with optional versionCode in the form APPID[:VERCODE]argument "-" with mode %rattempting bare ssh connection to test deploy key:can't open '%s': %scannot have multiple subparser argumentscannot merge actions - two groups are named %rcannot publish update, did you set the deploy key?cloning {url}command to execute, either 'init' or 'update'complexconflicting option string: %sconflicting option strings: %scopying {apkfilename} into {path}created {path}deleting: repo/{apkfilename}dest= is required for options like %rexpected %s argumentexpected %s argumentsexpected at least one argumentexpected at most one argumentexpected one argumentfdroid [-h|--help|--version] []floating-pointforce errors to be warnings, or ignoreignored explicit argument %rindex-v1 must have a signature, use `fdroid signindex` to create it!integerinvalid %(type)s value: %(value)rinvalid choice: %(value)r (choose from %(choices)s)invalid conflict_resolution value: %rinvalid option string %(option)r: must start with a character %(prefix_chars)rlocal_copy_dir does not end with "fdroid", perhaps you meant: "{path}"local_copy_dir must be an absolute path!local_copy_dir must be directory, not a file!mirror '%s' does not end with 'fdroid'!mutually exclusive arguments must be optionalno APK suppliedno such option: %sno version info found!not allowed with argument %sone of the arguments %s is requiredonly accepts strings, lists, and tuplesoption %s: If you really want to install all the signed apps, use --alloption %s: invalid %s value: %roption %s: invalid choice: %r (choose from %s)option -%s not recognizedoption -%s requires argumentoption --%s must not have an argumentoption --%s not a unique prefixoption --%s not recognizedoption --%s requires argumentoptional argumentsoverwriting existing {path}positional argumentsrefuse downloading via insecure HTTP connection (use HTTPS or specify --no-https-check): {apkfilename}refuse downloading via insecure http connection (use https or specify --no-https-check): {apkfilename}s3cmd sync indexes {path} to {url} and deleteshow program's version number and exitshow this help message and exitsigned APK, either a file-path or HTTPS URL.skipping source tarball: {path}srclibs missing name and/or @the following arguments are required: %sunexpected option string: %sunknown parser %(parser_name)r (choices: %(choices)s)unrecognized arguments: %sunsafe permissions on '{config_file}' (should be 0600)!usage: usage: fdroid [-h|--help|--version] []using Apache libcloud to sync with {url}{0} app, {1} key aliases{0} apps, {1} key aliases{apkfilename} ({appid}) has no metadata!{apkfilename} has multiple {name} files, looks like Master Key exploit!{appid} does not have a name! Using package name instead.{appid} is missing {name}{appid}: Unknown extlib {path} in build '{versionName}'{appid}: no builds specified, running on current source state{field} not terminated in {name}{name} "{path}" does not exist! Correct it in config.py.{path} has bad file signature "{pattern}", possible Janus exploit!{path} is zero size!{} build failed{} builds failed{} build succeeded{} builds succeededProject-Id-Version: fdroidserver 0.9 Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues POT-Creation-Date: 2018-02-13 09:01+0100 PO-Revision-Date: 2018-02-13 08:41+0000 Last-Translator: Hans-Christoph Steiner Language-Team: Tibetan Plural-Forms: nplurals=1; plural=0 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Generated-By: Babel 1.3 SSHདམངས་ཀྱི་ལྡེ་མིག་དེ་ཕྱོགས་སྐྱོད་ལྡ་ེམིག་ལ་བེད་སྤྱོད་བྱེད།: {path} DEBUG_KEYSTOREགསང་རྟགས་ཀྱི་ཆེད་དུ་ཨང་སྒྲིག:"%s/" འདི་དང་མཐུན་པའི་རྒྱབ་ལྗོངས་ཡིག་ཆ་མིན་འདུག!"{path}"དུས་ཚོད་ཡོལ་ཟིན་པའི་{name} ({version})ཚུད་ཡོད།"{path}" ཉེ་ཆར་{name} ({version})རྣམས་ཚུད་ཡོད།"{path}" exists but s3cmd is not installed!"{path}སྒྲིག་བཀོད་འདི་ངོས་ལེན་བྱེད་ཐུབ་ཀྱི་མིན་འདུག:{formats}%(option)s གདམ་ཀ་དགོས་ %(number)d རྩོད་པ།%(prog)s: ནོར་སྐྱོན: %(message)s %d དཀའ་རྙོག་ཐོན་སོང་།%prog [གདམ་ཀ།]%r 1 བྱེད་ལས་མིན་འདུག%s 1འདི་ཁས་ལེན་ཐུབ་པའི་བཟོ་སྐྲུན་རྭ་བ་མ་རེད།%sགདམ་ཀ་ནུས་མེད་རེད་འདུག'keypass' འདི་config.py ནང་རྙེད་མ་སོང་།!'keystore' འདི་ config.py ནང་རྙེད་མ་སོང་།!'keystorepass' འདི་ config.py ནང་རྙེད་མ་སོང་།!'repo_keyalias' འདི་ config.py ནང་རྙེད་མ་སོང་།!'དགསོ་མཁོ།' ནི་གནས་སྟངས་འདི་ལ་ཁུངས་ལྡན་གྱི་རྩོད་པ་རེད་མིན་འདུག'sdk_path' འདི་ 'config.py' ནང་སྒྲིག་ཐུབ་མ་སོང་།!'{aapt}1' འདི་ཧ་ཅང་གི་རྙིང་པ་རེད་འདུག, ཨེཕ་རོཌ་ལ་བཟོ་སྐྲུན་མ་ལག-23.0.0 དང་ཡང་ན་དེ་ལས་གསར་བ་དགོས།!'{apkfilename}' འདི་{dev}.ནང་སྔོན་ཚོད་ནས་སྒྲིག་བཅུག་བྱས་ཟིན།.'{field}1' ནི་གོ་རིམ་ངེས་མེད།! བེད་སྤྱོད། () ཡང་ན། [] གོ་རིམ་གལ་ཆེན་པོའི་རིགས་ལ་གུག་རྟགས་ནང་བཅུག!'{path}1' ལག་བསྟར་ཐུབ་མ་སོང་།!'{value}' ཁུངས་ལྡན་རེད་མིན་འདུག{field} འདི་ནང་ {appid}. Regex འགྲོ་ལུགས་: {pattern}...{appid} གྱི་ཆེད་དུ་གསར་བསྒྱུར་འཚོལ་མི་ཐུབ།་: {error}.__call__() ངོས་འཛིན་ཐུབ་མེད།.fdroid.txt is not supported! Convert to .fdroid.yml or .fdroid.json./གནས་དོན་བོར་བརླག་སོང་འདུགPGP གྱི་མིང་རྟགས་དེ་རེ་པོ་ཐུམ་སྒྲིལ་ནང་GnuPG ཁ་སྣོན་བྱས་ནས་རེ་པོ་ནང་ལ་བཅུགའབྱུང་ཁུངས་ཨང་རྟགས་ནས་མཉེན་ཆས་གསར་པ་ཁ་སྣོན་བྱེད།མིང་རྟགས་མི་བཀོད་པའི་རེ་པོ་ནང་ལ་རེ་པོ་མིང་རྟགས་ལྡེ་མིག་འདི་ཁ་སྣོན་བྱེད།APKsནང་ལ་ཡིག་ཚགས་ཀྱི་རྒྱབ་ལྗོངས་ལོ་རྒྱུས་ཁ་སྣོན་བྱེད།{name}ཁོ་ནའི་ཆེད་དུ་རེ་པོ་གསར་པ་ཁ་སྣོན།ལྡེ་མིག་གསོག་ཉར་ཁང་ནང་རེ་པོ་མིང་རྟགས་ལྡེ་མིག་བཀོད་པའི་གསང་མིང་།ཐོག་མའི་ནང་འདྲེན་བྱེད་པའི་སྐབས་གསལ་པོའི་ཐོག་ནས་སྐྱར་སྦྱོང་(ཡང་ན་གིཊ་ཡན་ལག་)མི་འདྲ་བ་རྣམས་ལ་ཆོག་མཆན་སྤྲོད།Also mirror the full archive sectionམ་ཟད་བཀོད་སྒྲིག་བྱས་པའི་གནད་དོན་རྣམས་ལ་ཉེན་བརྡ་སྟོན། དཔེར་ན་rewritemeta -lཨེན་ཀྲོཌ་SDK '{path}1{dirname}' '{dirname}'སྒྲིག་བཅུག་མིན་འདུག!ཨེན་ཀྲོཌ་ SDK རྙེད་སོན་བྱུང་མ་སོང་།!ཨེན་ཀྲོཌ་SDK ཐབས་ལམ་ '{path}'མིན་འདུག!ཨེན་ཀྲོཌSDKཐབས་ལམ་ '{path}1' ཡིག་ཆ་གསོག་ཉར་རེད་མིན་འདུག!ཨེན་ཀྲོཌ་བཟོ་སྐྲུན་-མ་ལག་ཐབས་ལམ་'{path}'མིན་འདུག!AndroidManifest.xmlལ་ཟླ་ཚེས་མིན་འདུགམཉེན་ཆས་འདི་'{repo}1ནང་འདུག འོན་ཀྱང་སྦྲེལ་མཐུད་དེ་ {url}2ཡོད།Appending .git ངེས་པར་དགོས་ཀྱི་མེད།མཛོད་ཁང་{apkfilename} ལ་ཁུངས་ལྡན་མིན་པའི་མིང་རྟགས་!Base URL to mirror, can include the index signing key using the query string: ?fingerprint=ཡན་ལག '{branch}1' བཟོ་སྐྲུན་ནང་བེད་སྤྱོད་བྱས་རྒྱུ་ཁས་ལེན་ཡོད།'{versionName}2'ཡན་ལག '{branch}1'' srclib ནང་བེད་སྤྱོད་བྱེད་རྒྱུ་ཁས་ལེན་ཡོད་།'{srclib}'འབྱུང་ཁུངས་ནས་ཐུམ་སྒྲིལ་བཟོས་འདུགམཉེན་ཆས་ཡོད་བཞིན་པ་ཆ་ཚང་ལ་ཐོན་སྐྱེད་བཟོས།བཟོ་སྐྲུན་འདི་ཐོན་སྐྱེད་བྱེད་མཁན་ 'ཨེཕ་རོཌ་ནང་འདྲེན།' -གལ་སྲིད་གྲ་སྒྲིག་ཟིན་ན་ནུས་མེད་ཀྱི་རིམ་པ་དེ་མེད་པ་བཟོས།ཐུམ་སྒྲིལ་རེ་རེ་ལ་ཁོ་ནར་བཟོས་པའི་ཐོན་རིམ་གསར་ཤོས།བཟོ་སྐྲུན་ལ་ངེས་པར་དུ་བར་ཚེགས་ཀྱི་དབྱེ་མཚམས་ཡོད་པའི་ཐོན་རིམ་གྱི་མིང་དང་ཐོན་རྟགས་དགོས།"{value}"ནང་{linedesc}རེ་པོ་བཟོ་སྐྲུན་གཞི་རྩ་ "%s" སྒྲིག་བཀོད་འདི་དང་མཉམ་དུ་ཡོད།:ཚགས་རྒྱབ་པའི་སྐབས་སུ་ནོར་སྐྱོན་ {} ཤོར་བས་བཟོ་སྐྲུན་བྱེད་ཐུབ་མེད།{path}གྱི་ཆེད་དུ་ཐུམ་སྒྲིལ་གྱི་མིང་རྙེད་མ་སོང་།!{appid} app idཐག་ཆོད་ཐུབ་མ་སོང་།བེད་སྤྱོད་གཏོང་མི་ཐུབ་། --ཐོ་གཞུང་དང--དུས་མཉམ།འབྲི་ཐུབ་ཀྱི་མིན་འདུག"{path}", སྒྲིག་བཀོད་འདི་ལ་ངོས་ལེན་མིན། བེད་སྤྱོད།:{formats}སྡེ་ཚན་རྣམས་སྒྲིག་མེད།སྡེ་ཚན་'%s' ཁུངས་ལྡན་མ་རེད།མཉེན་ཆས་རྣམས་གསར་བསྒྱུར་བྱས་མིན་གཟིགས་ཞིབ་གནང་དང་།མཛོད་ཁང་ཚོད་ལྟའི་ཆེད་དུ།{appid} - apks:{integer},ཐོན་རིམ་ཉར་ཚགས།:{keep},archapks:{arch}ཆ་ཚང་འཚག་རྒྱབ་ཚར་བའི་རྗེས་སུ་གཙང་མ་བཟོས།འཚག་རྒྱབ་འགོ་མ་བཙུགས་གོང་ལ་གཙང་མ་དང་སྣོད་དེ་སྐྱར་དུ་བཟོས།སྣོད་ཆ་ཚང་གཙང་མ་བཟོས་ནས་ཕྱིར་ཐོན།གསར་བསྒྱུར་གཙང་བཟོ།-ཡིག་ཆ་གསོག་ཉར་བེད་སྤྱོ་མ་བྱེད། apks ཚང་མ་སྐྱར་སྤྱོད་བྱེད།སྡེ་ཚན་སོ་སོའི་ཐོ་གཞུང་ལ་བར་མཚམས་རེ་འཇོག།.བཀའ་ཁྱབ་ '%s 1'ངོས་འཛིན་ཐུབ་མ་སོང་། བསྒྱུར་བ་གཏོང་བར་མོས་མཐུན་ཡོད།ཁྱེད་རང་གི་མ་ལག་སྒང་ལ་'{command}1' རྙེད་མ་སོང་།{path}མེད་པ་བཟོས་པ་ལ་རྙེད་མ་སོང་།དཔྱད་ཞིབ་ཀྱི་ཆེད་དུ་apk ཡིག་ཆ་ཁ་ཕྱེས་ཐུབ་ཀྱི་མིན་འདུགཐོན་རིམ་གསར་གསར་ཤོས་ཀྱི་ཨང་རྟགས་འདི་འདི་རྙེད་མ་སོང་།ཐོན་རིམ་གསར་ཤོས་འདིའི་མིང་རྙེད་མ་སོང་།ཐུམ་སྒྲིལ་ངོས་འཛིན་རྙེད་སོན་བྱུང་མ་སོང་།མིང་རྟགས་ལྡེ་མིག་སྒྲིག་བཀོད་ལ་སྐྱར་བྲིས་བྱེད་མི་བདེ་བ།!ལྡེ་མིག་གསོག་ཉར་ཁག་གི་ནང་ལ་རེ་པོ་མིང་རྟགས་བཀོད་པའི་ལྡེ་མིག་གཅིག་བཟོས།བོར་བརླག་ཏུ་སོང་བའི་ཡིག་ཚགས་ཀྱི་རྒྱབ་ལྗོངས་ལོ་རྒྱུས་ཡང་སྐྱར་བཟོས།དྲྭ་སྣོད་གསར་པ་བཟོས་"{name}"Creating "{path}" for configuring s3cmd.ཉིན་ཐོ་ཕྱོགས་དེབ་བཟོ་བཞིན་པ།S3 སྣོད་གསར་པ་བཟོ་བཞིན་པ།:{url}ཐོན་སྐྱེད་ཕྱོགས་དེབ་བཟོ་བཞིན་པ།ལྡེ་མིག་འདི་(SHA256)དང་མཉམ་དུ་མིང་རྟགས་ཕྱོགས་སྟོན་བཟོ་བཞིན་པ།:གནས་སྐབས་ཕྱོགས་དེབ་བཟོ་བཞིན་པ།མིང་རྟགས་གྲ་སྒྲིག་གི་ཆེད་དུ་མིང་རྟགས་མ་བཀོད་པའི་ཕྱོགས་སྟོན་བཟོ་བཞིན་པ།DEBUG_KEYSTORE སྒྲིག་བཀོད་བྱེད་མིན་འདུག ཡང་ན་ཚད་ལོངས་མིན་འདུགAPKs དང/ཡང་ནOBBs གཉིས་ལ་རེ་པོ་ནས་འགྲེལ་ཡིག་ཚགས་ཀྱི་རྒྱབ་ལྗོངས་ལོ་རྒྱུས་མེད་པ་རྣམས་སུབས།ངོས་འཛིན་མི་ཐུབ་པའི་ཡིག་ཆ་རྣམས་སུབས་བཞིན་པ།: {path}འགྲེལ་བཤད་'%s 1' ནི་མཉེན་ཆས་མདོར་བསྡུས་ཤིག་རེད།འགྲེལ་བཤད་འདི་ལ་རིམ་པ་རྫུན་མ་ཡོད།འགྲེལ་བཤད་འདི་ལ་ཐོ་གཞུང་ཡོད། (%s 1) འོན་ཀྱང་འདི་ལ་ཚགས་རྒྱབ་མིན་འདུག(*)གྲངས་ཀྱང་མེད། (#)རིང་ཐུང་གི་འགྲེལ་བཤད་ {length} {limit} ལས་བརྒལ་འདུག char limitDo not include "{path}" in URL!དེ་མ་ཐག་ཏུ་ཨེན་ཀྲོཌ་SDK གྱི་ལམ་མ་སྟོན། ད་ལྟ་བྱེད་ཐུབ་མ་སོང་།ཊར་བོལ་གྱི་འབྱུང་ཁུངས་མ་བཟོས། འདིས་ཐོན་སྐྱེད་ཚོད་ལྟ་བྱེད་པ་ལ་ཕན་ཐོགས།ཐོ་གཞུང་དང་འབྲེལ་བ་ཡོད་པའི་རིགས་ལ་གང་ཡང་མ་བྱེད།མཛོད་ཁང་སྐྱར་སོས་མ་བྱེད། དྲྭ་རྒྱ་མེད་པའི་སྐབས་ལ་ཐོན་སྐྱེད་ཚོད་ལྟ་བྱེད་པར་ཕན་ཐོགས་ཡོང་།rsync ཡིག་ཚགས་བརྟག་དཔྱད་ཀྱི་གསོག་ཉར་ཁང་འདི་བེད་སྤྱོད་མ་བྱེད།Download complete mirrors of small reposཐོ་གཞུང་ཕབ་ལེན་ང་ཚོར་མེད།མཛོད་ཁང་ཕབ་ལེན་ཐེངས་གཅིག་བྱས་པ་འདི་ཐུབ་མ་སོང་། ཡང་སྐྱར་ཐབས་ཤེས་བྱེད་ཀྱི་མིན་།.{url} ཕབ་ལེན་ཐུབ་མ་སོང་།{error}བཟོ་སྐྲུན་ངོ་བཤུས་རིམ་པ་དེ་བཞིན་ཐོན་རིམ་ཨང་རྟགས་ནང་རྙེད་སོན་བྱུང་འདུག{versionCode} ནང་ {linedesc}'{field}'ནང་གི་ངོ་བཤུས་སྦྲེལ་མཐུད།: {url}APKs ཐོན་སྐྱེད་རྗེས་ཀྱི་ཞིབ་ཚགས་པོའི་འཚག་རྒྱབ།ERROR: this command should never be used to mirror f-droid.org! A full mirror of f-droid.org requires more than 200GB.ནོར་འཁྲུལ།: རྒྱབ་སྐྱོར་མེད་པའི་CI རྣམ་གྲངས་དང་ལྷན་པ་རྒྱབ་ནའང་འགྲིག་གི་ཡོད།!{linedesc}ལ་ཡོད་པའི་བཟོ་དར་སྟོང་པ།ཨེན་ཀྲོཌ་SDKགྱི་ལམ་འདིར་ཡོད་པས་ནང་འཛུལ་བྱེད། (%s) : > རེ་པོ་ཁ་བྱང་ལེན་སྐབས་ནོར་སྐྱོན།APKs ནས་མིང་རྟགས་ཕྱིར་སྟོན་བྱེད།'{apkfilename}'གྱི་ཆེད་དུ་འཚོལ་བཞིན་པའི་མིང་རྟགས་རྙེད་མ་སོང་།: {error}ཀློག་མི་ཐུབ།{path}: {error}ཆེ་ཆུང་སྐྱར་སྒྲིག་ཐུབ་མ་སོང་། {path}: {error}མཉེན་ཆས་ཡོད་རྣམས་ཕྱོགས་སྒྲིག་བྱེད་ཐུབ་མ་སོང་།S3 དྲྭ་སྣོད་བཟོས་ཐུབ་མ་སོང་། :{url}APKནང་གསལ་བའི་གནས་ཚུལ་རྣམས་ལེན་ཐུབ་མ་སོང་།apk གནས་ཚུལ་རག་གི་མིན་འདུག {path}སུབ་བཞིན་པ།apk གནས་ཚུལ་རག་གི་མིན་འདུག {path}མཆོང་།སྒྲིག་བཅུག་བྱེད་མ་སོང་། '{apkfilename}' སྒང་ལ་ {dev}: {error}མཉེན་ཆས་མིང་རྟགས་བཀོད་མིན་འདུགFetched buildserverid from VM: {buildserverid}'{apkfilename}' ཆེད་དུ་མིང་རྟགས་འཚོལ་བཞིན་པ།་> '{sigdir}'ཚར་སོང་།Flattr ཞལ་འདེབས་ཐབས་ལམ་འདི་བཞིན་FlattrID flag ལ་ཐོབ་ཀྱི་ཡོད་།Forbidden HTML tagsནུས་མེད་མཉེན་ཆས་ལ་ཐོན་སྐྱེད་ཆེད་དུ་མངགས་ཏེ་བཟོས། འདི་འཚག་རྒྱབ་ཀྱི་དཀའ་ངལ་ཡོད་མིན་ལ་མ་ལྟོས་པར་མུ་མཐུད་དུ་འགྲོ་ཐུབ། འདི་ཚོད་ལྟའི་ཚུལ་ཁ་ོནར་ཆོག་མཆན་སྤྲད།.Force halting build after {0} sec timeout!"{name}" བརྐོད་རིས་མེད་པའི་མཉེས་ཆས་ཀྱི་རྒྱབ་ལྗོངས་ཡིག་ཆ་"{path}"རྙེད་སོང་།!རྩོད་པའི་ནང་ཁུངས་ལྡན་མིན་པའི་appids རྙེད་འདུགམཉེན་ཆས་ཁ་ཤས་ཀྱི་ཁུངས་ལྡན་མིན་པའི་ཐོན་རིམ་ཨང་རྟགས་རྙེད་འདུགརྒྱབ་ལྗོངས་ཡིག་ཚགས་སྣ་མང་{appid}ནང་ཐོན།མཛོད་ཁང་ཆེད་དུ་་མིང་རྟགས་བཀོད་པའི་ལག་ཁྱེར་མང་པོ་རྙེད་འདུག.{path}ནང་ལ་སྣ་མང་མིང་རྟགས་ཆོག་མཆན་ལག་ཁྱེར་རྙེད་སོང་།མཛོད་ཁང་ཆེད་དུ་མིང་རྟགས་བཀོད་པའི་ལག་ཁྱེར་རྙེད་མ་སོང་།.འདི་ལ་%s 1 ཡིག་ཆ་མིན་པ་རྙེད་སོང་།{appid}ཆེད་དུ་རྒྱབ་ལྗོངས་ཡིག་ཚགས་བཟོས།གིཊ་ཕྱིར་འཐེན་'%s 1' ཐུབ་མ་སོང་།གིཊ་གཙང་བཟོ་ཐུབ་མ་སོང་།གིཊ་འཚོལ་ཐུབ་མ་སོང་།གིཊ་རྒྱང་ཐག་སྒྲིག་འགོ་ཐུབ་མ་སོང་།གིཊ་སྐྱར་སྒྲིག་ཐུབ་མ་སོང་།གིཊ་རྒྱ་ཁྱོན་མཉམ་བསྲེ་ཐུབ་མ་སོང་།གིཊ་ཡན་ལག་རྒྱ་ཁྱོན་གསར་བསྒྱུར་ཐུབ་མ་སོང་།HTTPS must be used with Subversion URLs!རྒྱབ་ལྗོངས་ཡིག་ཆ་མེད་པའི་ཐུམ་སྒྲིལ་ཡ་ལན་མ་བྱས། {apkfilename}ཡིག་ཆ་སྦས་ཁུང་རྙིང་པ་ལ་ཡ་ལན་མ་བྱས་{ext} ཡིག་ལ་ཡ་ལན་མེད་པ་ '{path}'MD5ལྟ་བུའི་མཚན་རྟགས་ཡོད་པའི་APKs ནང་ཚུད།ཐོག་མིའི་ཡན་ལག་རྒྱ་ཁྱོན།ཡོད་བཞིན་པའི་མིང་རྟགས་བཀོད་པའི་མཉེན་ཆས་ཆ་ཚང་འགྲིག་བཅུག་བྱེད།ཡོ་བྱད་སྒང་གི་ཐུམ་སྒྲིལ་བཟོས་པ་རྣམས་འགྲིག་བཅུག་བྱེད།སྒྲིག་བཅུག་བྱེད་བཞིན་པ།%s 1...'{apkfilename}' སྒྲིག་བཅུག་བྱེད་བཞིན་པ{dev}གྱི་སྒང་ལ་…རེ་པོ་HTTP ཞབས་ཞུ་འཕྲུལ་ཆས་དང་ཐུགས་ཕྲད།གསར་བསྒྱུར་བྱེད་དགོས་པའི་རིགས་ལ་སྦས་གསང་མེད་པའི་ཐོག་ནས་གསུངས་རོགས།.ཁུངས་ལྡན་མིན་པའི་APKཁུངས་ལྡན་མིན་པའི་boolean '%s 1'{linedesc}ནང་གི་ཁུངས་ལྡན་མིན་པའི་བཟོ་དར་{line}ཁུངས་ལྡན་མིན་པའི་བཟོ་སྐྲུན་སྒྲིག་བཀོད།: {value} ནང་ {name}ཚད་ལྡན་མིན་པའི་ཚགས་ཀྱི་ཐོ་གཞུང་།ཁུངས་ལྡན་མིན་པའི་ཆོག་མཆན་ལག་ཁྱེར་སྦྱར་ "%s 1"! https://spdx.org/license-list ཁོ་ན་ནས་ཡིན་པ་སྦྱར་ཏེ་བེད་སྤྱོད་བྱེད་།ཁུངས་ལྡན་མིན་པའི་སྦྲེལ་མཐུད། - [http://foo.bar Link title] or [http://foo.bar]བེད་སྤྱོད་བྱེད།ཁུངས་ལྡན་མིན་པའི་རྒྱབ་ལྗོངས་ཡིག་ཆའི་ནང་།%s 1:%d 2ཁུངས་ལྡན་མིན་པའི་རྒྱབ་ལྗོངས་ཡིག་ཆའི་ནང་: པར་སྐྲུན་ཡིག་ཆའི་ཆེད་དུ་ཁུངས་ལྡན་མིན་པའིན་མིང་།: %s 1ཁུངས་ལྡན་མིན་པའི་ཐུམ་སྒྲིལ་གྱི་མིང་།{0}ཁུངས་ལྡན་མིན་པའི་ཐོན་རིམ་ཨང་རྟགས: "{versionCode}" གོང་བུ་མ་རེད།!JAR signature failed to verify: {path}JAR signature verified: {path}Java JDK རྙེད་མ་སོང་།! ཚད་ལྡན་གྱི་ས་གནས་ནང་སྒྲིག་བཅུག་བྱེད་པའམ་ཡང་ན་java_paths སྒྲིག!Java jarsigner རྙེད་མ་སོང་། !ཚད་ལྡན་གྱི་ས་གནས་ནང་སྒྲིག་བཅུག་བྱེད་པའམ་ཡང་ན་java_paths སྒྲིག!Javascript in HTML src attributesམིང་རྟགས་བཀོད་པའི་ལྡེ་མིག་ཆེད་དུ་སྟོན་པའི་ལྡེ་མིག་གསོག་ཉར་ཁང་གི་ལམ། ཁས་ལེན་བྱས་པའི་བེད་སྤྱོད་ཐ་མ་ '{commit}' སྦྱར་བ་འདྲ་པོ་འདུག, འོན་ཀྱང་གསར་བསྒྱུར་ཡོད་མེད་འཚོལ་བྱེད་ནི།'{ucm}'སྐྱར་དུ་བཀོད་སྒྲིག་བྱེད་དགོས་པའི་ཡག་ཆ་རྣམས་ཀྱི་ཐོ་གཞུང་།དམིགས་བསལ་གྱི་གནས་སྐབས་ལ་ཐོན་སྐྱེད་དེ་བཀག་ཆོགབཟོ་ལྟ་མེད་པའི་མཛོད་ཁང་ཤེལ་སྒོ་རྣམས།.བཟོ་ལྟ་ཤོར་བའི་ serverwebroot line:ཕྱོགས་དེབ་ཐོན་སྐྱེད་བོར་བརླགམིང་། '%s 1' ནི་རང་མིང་ཁོ་ན་རེད་། - མེད་པ་བཟོས།'config.py' རྙེད་མ་སོང་།, སོར་བཞག་བེད་སྤྱོད་བྱེད་བཞིན་པ།.ཨེན་ཀྲོཌ་ SDK རྙེད་མ་སོང་།!ཨེན་ཀྲོཌ་དང་ཡང་ན་ཀི་བི་ལས་འཆར་གང་ཡང་རྙེད་ས་མ་རེད། དམིགས་སྟོན་བྱེད་--subdir?ཟུར་སྣོན་ཡོ་བྱད་རྙེད་མ་སོང་།{linedesc} ནང་གྱི་ {versionName}འདིའི་ཆེད་དུ་ཁས་ལེན་དམིགས་བསལ་གང་ཡང་མིན་འདུགURL ནང་ལག་མཐིལ་པར་ཤུས་རྙེད་མ་སོང་།.གིཊ་ཡན་ལག་རྒྱ་ཁྱོན་མིན་འདུགགནས་ཚུལ་རྙེད་མ་སོང་།.མཉེས་ཆས་འདི་རིན་མེད་མཉེན་ཆས་ཡིན་པ་དམིགས་སྟོན་བྱེད་དགོས་དོན་མེད་།མཉེན་ཆས་འདི་ཨེན་ཀྲོཌ་ཆེད་དུ་ཡིན་པ་དམིགས་སྟོན་བྱེད་དགོས་དོན་མེད།གདམ་ཀ་མེད་པ་སྒྲིག།! ཁྱེད་རང་གི་config.py འདིའི་ནང་ནས་མ་མཐའ་ཡིན་ཡང་གང་རུང་ཞིག་རྩོམ་སྒྲིག་བྱེད་:ཐུམ་སྒྲིལ་དམིགས་སྟོན་བྱེད་མེད།%s 1ཆེད་དུ་མིང་རྟགས་བཀོད་པའི་ apk མེད།མིང་རྟགས་མ་བཀོད་པའི་ཕྱོགས་དེབ་ཐོན་སྐྱེད། -བྱ་རྒྱུ་གང་ཡང་མེད།{path}མིང་རྟགས་བཀོད་པའི་ཆོག་མཆན་ལག་ཁྱེར་འདིའི་ནང་རྙེད་མ་སོང་།ཐུམ་སྒྲིལ་དེ་འདྲ་མིན་འདུག: %s 1ཐོན་རིམ་ཨང་རྟགས་དེ་འདྲ་མིན་འདུག {versionCode} མཉེན་ཆས་ཆེད་དུ།{appid}མིང་རྟགས་མ་བཀོད་པའི་ཕྱོགས་དེབ་མིན་འདུག-བྱ་རྒྱུ་གང་ཡང་མེད།བྱ་རྒྱུ་གང་ཡང་མེད་།{appid} ཆེད་དུ་བྱ་རྒྱུ་གང་ཡང་མེད་།.OBB ཡིག་ཆ་ལ་ཐོན་རིམ་ཨང་རྟགས་གསར་པ་ཡོད་རེད་། ({integer}) APK གཞན།:OBB ཡིག་ཆའི་མིང་ངེས་པར་དུ་"གཙོ་བོ་" ཡང་ན "ལྷན་པ་."མཉམ་དུ་འགོ་བཙུགས:OBB's ཐུམ་སྒྲིལ་མིང་འདིས་APK རྒྱབ་སྐྱོར་ཡོད་པ་དང་མཐུན་གྱི་མིན་འདུག:Old APK signature failed to verify: {path}PNG དང་ JPEG ཁོ་ན་བརྐོས་རིས་རྒྱབ་སྐྱོར་རྙེད་སོང་། :{path}མཉེས་ཆས་གསོག་ཉར་ཁང་དང་མི་འདྲ་པ་ཡོད་པ་ཁོ་ནར་པར་ཤུས་བྱེད།མཉེན་ཆས་ཁོ་ནར་རང་འགུལ་གསར་བསྒྱུར་བྱེད།གདམ་ཀ།ལས་འཆར་འདིའི་ཁྱོན་ཡོངས་ཀྱི་ཆོག་མཆན་ལག་ཁྱེར།.རེ་པོ་APKs ལམ་གྱི་སྒང་ལ་སྐྱར་སྣོན། (སོར་བཞག་: ./repo)'{path}'འདིའི་ནང་དབྱེ་མཚམས་མངོན་གྱི་འདུགསྤྱོད་མིང་དང་མཉམ་དུ་གསང་ཨང་དགོས།གལ་སྲིད་ཆོག་མཆན་ཨ་མའི་ནང་ལ་མེད་ན། ལམ་གྱི་གཙོ་བོ་འདི་ཨེན་ཀྲོཌ་ལས་འཆར་གྱི་ཕྱོགས་དེབ་ཡན་ལག་སྟོན་ཡོད།.གལ་སྲིད་ཆོག་མཆན་ཨ་མའི་ནང་ལ་མེད་ན། ལམ་གྱི་གཙོ་བོ་འདི་ཨེན་ཀྲོཌ་ལས་འཆར་གྱི་ཕྱོགས་དེབ་ཡན་ལག་སྟོན་ཡོད།.ཨེན་ཀྲོཌ་SDK ཀྱི་ལམ། (སྐབས་རེ་ཨེན་ཀྲོཌ_ཁྱིམ་དུ་སྒྲིག་ཡོད།)གིཊ་རེ་པོའི་ཆེད་དུ་བདེ་སྤྱོད་བྱས་པའི་ཐོ་གཞུང་གི་ལམ།རེ་པོ་མིང་རྟགས་བཀོད་པའི་ལྡེ་མིག་ཆེད་དུ་སྟོན་པའི་ལྡེ་མིག་གསོག་ཉར་ཁང་གི་ལམ།འཚག་རྒྱབ་འཁོར་སྐྱོད་ཐུབ་པའི་ཆེད་དུ་ཌོ་ཛར་གྲ་སྒྲིག་བྱེད།འཚག་རྒྱབ་འཁོར་སྐྱོད་ཐུབ་པའི་ཆེད་དུ་ཌོ་ཛར་གྲ་སྒྲིག་བྱེད།ས་ཚིགས་ཀྱི་གསང་ཁྱབ་ངོ་བཤུས་དང་/སྦྱར་བ་སྟབས་བདེ་ཡོང་བའི་ཆེད་དུ་འདྲ་བཤུས་{appid}འགྲེལ་བཤད་རྒྱབ་རྒྱུར་དཀའ་ངལ། : {error}'{path}'ལ་xml མཉམ་དུ་སྐྱོན་འདུགརང་འགུལ་གྱི་གསར་བསྒྱུར་རྣམས་བྱེད།ལས་ཀ་བྱེད་བཞིན་པ་{apkfilename}ལས་ཀ་བྱེད་བཞིན་པ།{appid}མིས་ཀློག་ཐུབ་པའི་XML/JSON ཕྱོགས་སྟོན་གྱི་ཡིག་ཆ་བཟོས།མིས་ཀློག་ཐུབ་པའི་index.xml བཟོས།URL ལས་འཆར་ནང་འདྲེན།.ཡི་གེའི་བར་རྟགས་རིགས་ངེས་པར་མེད་པ་དགོས་།ཐོ་གཞུད་འདི་གིཊ་ཐག་རིང་གི་མཛོད་ཁང་ནང་འབུད་རྒྱག་གཏོང་།{url}ཆེད་དུ་ཨང་གྲངས་ཀྱི་ཐོ་གཞུང་གསར་བསྒྱུར།{url}ཕྱོགས་ལ་འབུད་རྒྱབ་རྒྱོབ།མཛོད་ཁང་གསར་པ་ཞིག་མྱུར་དུ་འགོ་བཙུགས།ཡིག་ཚགས་ཀྱི་རྒྱབ་ལྗོངས་ལོ་རྒྱུས་ཀློག་ནས་ཕྱིར་ཐོན།ཀློག་བཞིན་པ་། '{config_file}'ཐུམ་སྒྲིལ་གྱི་མིང་ཀློག་བཞིནཔ།/ཐོན་རིམ་ཨང་རྟགས་/ཐོན་རིམ་གྱི་མིང་བདེ་སྤྱོད་མེད། APK ཁུངས་ལྡན་མིན།: '{apkfilename}'སྦས་ཁུང་ནས་ {apkfilename}ཀློག་བཞིན་པ།ཕྱོགས་བསྡོམས་བྱས་པའི་གྲངས་ཐོ་རྣམས་སྐྱར་རྩིས་བྱེད། -བསྒྱུར་བ་འགྲོ་བའི་སྐབས་ལ་བེད་སྤྱོད་བྱེད།.དམིགས་སྟོན་བྱས་པའི་ཡིག་ཆ་རྣམས་མེད་པ་བཟོ་བཞིན་པ།package.name_123.apk དང་མི་འདྲ་བའི་APK ཡིག་ཆ་དེ་ཚོར་མིང་སྐྱར་ཏུ་བཏགས།ཐོན་སྐྱེད་ཡིག་ཚགས་གནས་བབས་སྒང་གི་སྙན་ཐོ།ཡོད་བཞིན་པའི་ཞབས་ཞུ་འཕྲུལ་ཆས་འདི་ལ་སྐྱོན་མེད་པ་ཡིན་རུང་། ཐོན་སྐྱེད་ཞབས་ཞུ་འཕྲུལ་ཆས་གསར་པ་ཞིག་སྐྱར་སྒྲིག་དང་བཟོས།.པར་གྱི་རྒྱུ་ཆེ་ཆུང་ཚད་ལས་བརྒལ་ན་ཚད་གཞི་ཡང་སྐྱར་འགྱུར་བ་བཏང་ནས་ཕྱིར་ཐོན།ཡིག་ཚགས་ལ་ཉེན་བརྡ་དང་སྐྱོན་ཅན་རྣམས་དམ་བསྒྲགས་བྱེད།ཡིག་ཚགས་ཀྱི་རྒྱབ་ལྗོངས་ལོ་རྒྱུས་ཚང་མ་སྐྱར་ཟིན།བཀོད་སྒྲིག་འདི་ག་རང་ལ་སྐྱར་བྲིས་བྱེད།: སྐྱར་བྲིས། '{appid}'སྐྱར་བྲིས '{appid}' དེ་ནས། '{path}'བཀོད་སྒྲིག་འདི་ག་རང་ལ་སྐྱར་བྲིས་བྱེད།MD5 ཚོད་ལྟ་བེད་སྤྱོད་མེད་པ་དང་མཉམ་དུ་ཐེངས་དང་པོ་འཁོར་སྐྱོད་བྱེད་བཞིན་པ།ཐུམ་སྒྲིལ་རེ་རེ་བའི་ཐོན་རིམ་གསར་ཤོས་གཅིག་པུ་འཚག་རྒྱབ།ཐུམ་སྒྲིལ་བྱས་པའི་འབྱུང་ཁུངས་ཨང་རྟགས་འཚག་རྒྱབའཚག་རྒྱབ་ལ་སྐྱོན་རྙེད་པ།Set clock to that time using:Set open file limit to {integer}མཚན་མོའི་རེ་པོ་བཟོ་སྐྲུན་ཆེད་དུ་སྒྲིག་བཀོད་བྱས་པའི་མཉེན་ཆས་བཟོ་སྐྲུན།Setting open file limit failed: Setting {0} sec timeout for this buildགློག་ཀླད་ལད་མོ་མཁན་ཞིག་སྒྲིག འདིའི་སྒང་ལ་ APK ནང་འགྲིག་བཅུག་བྱེད་དུ་བཅུག་ནས་ཌོ་ཛར་འཚག་རྒྱབ་འགོ་བཙུགས་བྱེད།གློག་ཀླད་ལད་མོ་མཁན་ཞིག་སྒྲིག འདིའི་སྒང་ལ་apk ནང་འགྲིག་བཅུག་བྱེད་དུ་བཅུག་ནས་ཌོ་ཛར་འཚག་རྒྱབ་འགོ་བཙུགས་བྱེད།མིང་རྟགས་བཀོད་ནས་ཐུམ་སྒྲིལ་རྣམས་རེ་པོ་ནང་བཞགགསར་བསྒྱུར་བེད་སྤྱོད་བྱས་ཏེ་བཟོས་པའི་མིང་རྟགས་བརྡ་སྟོན། --མིང་རྟགས་མེད།འབྱུང་ཁུངས་ཨ་རྟགས་དང་དཀའ་ངལ་གཞན་རྣམས་འཚག་རྒྱབ་མ་དགོས་པར་མཆོང་།'{apkfilename}'མཆོང་ནས་ཁུངས་ལྡན་མ་ཡིན་པའི་མིང་རྟགས་དང་མཉམ་དུ།!{appid}གྱི་ཆེད་དུ་མཆོང་བའི་མི་རབས་ཀྱི་ཕྱོགས་སྟོན།{apkfilename} མཆོང་རྒྱབ་མཉམ་དུ་ཁུངས་ལྡན་མིན་པའི་མིང་རྟགས།!མཆོང་བཞིན་པ་ {appid}: བེད་མེད།མཆོང་བཞིན་པ་ {appid}: བཟོ་སྐྲུན་དམིགས་སྟོན་མིན་འདུགབསྟི་གནས་ཀྱི་ཡིག་ཁུག་གཅིག་ཁ་ཕྱེས་ནས་རེ་པོ་འདི་ལ་མཉམ་བསྲེས།rsync གྱི་ཆེད་དུ་SSH འདི་ངོ་ཐག་ཆོད་པའི་ཡིག་ཆ་ཞིག་དམིགས་སུ་བཀར་ནས་སྟེར།སྒྲིག་བཀོད་པར་དམིགས་སྟོན་བྱས་ནས་ལན་འདེབས་ཀྱི་ཚུལ་འདི་བེད་སྤྱོད་བྱེད་ སོར་བཞག སྒྲིག་བཀོད་པར་དམིགས་སྟོན་བྱས་ནས་ལན་འདེབས་ཀྱི་ཚུལ་འདི་བེད་སྤྱོད་བྱེད་ སོར་བཞག %s 1སྒྲིག་བཀོད་པར་དམིགས་སྟོན་བྱས་ནས་ལན་འདེབས་ཀྱི་ཚུལ་འདི་བེད་སྤྱོད་བྱེད་ སོར་བཞག་ནི་{path}ང་ཚོས་ཐོན་སྐྱེད་ཞབས་ཞུ་འཕྲུལ་ཆས་འདིའི་སྒང་ལ་འཁོར་སྐྱོད་བྱེད་བཞིན་གསལ་སྟོན་བྱེད།Specify which debug keystore file to use.ནམ་རྒྱུན་ལས་ཀྱང་མང་བའི་གནས་ཚུལ་ཕྱིར་སྟོན།སྙིང་བསྔུས་ '%s 1' ནི་མཉེན་ཆས་ཀྱི་མིང་ཞིག་རེད་།སྙིང་བསྔུས་ཀྱི་རིང་ཐུང་། {length} charཚད་{limit} ལས་བརྒལ་འདུགSystem clock is older than date in {path}!ཚོད་ལྟའི་ཚུལ་-གལ་སྲིད་ཡིག་ཚགས་འདི་སྔོན་ཚོད་ནས་ཡོད་ནའང་། ཡིག་ཚགས་འདི་སྐབས་ཕྲལ་གྱི་ཕྱོགས་དེབ་ཁོ་ནའི་ནང་ལ་བླུགས་པ་དང་རྟག་ཏུ་ཐོན་སྐྱེད་བཟོས།.OBB ཐོན་རིམ་ཨང་རྟགས་འདི་ངེས་པར་དུ་ "{name}"གྱི་རྗེས་སུ་་བྱུང་བ་རེད་།:གཞི་རྩའི་URL དེ་རེ་པོ་ཡི་ཐོ་གཞུང་བཀོད་པའི་ཆེད་དུ་(སོར་བཞག: https://f-droid.org)The directory to write the mirror toལག་བསྟར་བྱེད་རྒྱུར་བཀའ་གཏོང། ཡང་ན་'init'འམ་ཡང་ན་ 'གསར་བསྒྱུར།'མཛོད་ཁང་གི་མཛུབ་མཐིལ་དང་མཐུན་གྱི་མིན་འདུག.མཛོད་ཁང་གི་ཕྱོགས་སྟོན་ར་སྤྲོད་ཐུབ་མ་སོང་།.dir གྱི་རྩ་བ་ for local_copy_dir "{path}" མིན་འདུག!(path or glob)རེ་པོ་ནང་ཚུད་པའི་ཡིག་ཆ།ལྡེ་མིག་གཞན་ལ་སྐྱོན་ཆ་འདུག། -པར་སྐྲུན་བཀགརེ་པོ་འདི་ལ་སྔོན་ཚོད་ནས་ས་གནས་ཀྱི་རྒྱབ་ལྗོངས་ཡིག་ཆ་འདུག: %s 1awsbucket, awssecretkey དང་། awsaccesskeyid བེད་སྤྱོད་བྱེད་པའི་ཆེད་དུ་ config.py ནང་དུ་ངེས་པར་དུ་སྒྲིག་དགོས།!UCMསྒྲིག་བཀོད་བྱས་ཟིན་ཡང་གསར་བསྒྱུར་འཚོལ་བ་དེ་འགོ་འཛུགས་མིན་འདུགURL ཐུང་དུ་གཏོང་མཁན་ངེས་པར་དུ་བེད་སྤྱོད་བྱེད།URL འགོ་བརྗོད་དེ་URL རང་རེད་། གུག་རྟགས་བེད་སྤྱོད་།: [URL]URL {url} ནང་འགྲེལ་བཤད་རྒྱབ་པ་: {error}{linedesc}ནང་། {field}་ཁ་ཕྱོགས་དེ་ག་རང་ནང་རེ་བ་མ་བྱས་པའི་ཡིག་ཚགས་ཆ་རྒྱུས་མེད་པའི་དམིགས་བསལ་ཞིག་རྙེད་སོང་།!ངོས་འཛིན་མི་ཐུབ་པའི་ཡིག་ཆ། '{filename}' བཟོ་སྐྲུན་གྱི་ནང་། '{versionName}'ངོས་འཛིན་མ་བྱས་པའི་རྒྱབ་ལྗོངས་ཡིག་ཆའི་སྒྲིག་བཀོད།:%s 1ངོས་འཛིན་མི་ཐུབ་པའི་རྒྱབ་ལྗོངས་ཡིག་ཆའི་སྒྲིག་བཀོད། : {path}aapt གྱི་ངོས་འཛིན་མ་ཐུབ་པའི་ཐོན་རིམ། དཀའ་ངལ་ཕྲད་སྲིད་པ།: སྦྲེལ་མཐུད་བྱེད་མི་ཐུབ་པའི་སྦྲེལ་མཐུད། -བེད་སྤྱོད། [http://foo.bar Link title] or [http://foo.bar]དགོས་མེད་ཀྱི་སྣེ་ཁྲིད་བར་མཚམས།དགོས་མེད་ཀྱི་རྫེས་ཤུལ་བར་མཚམས།ངོས་འཛིན་མ་ཐུབ་པའི་མཉེན་ཆས་རྭ་བ།: {linedesc}ནང་ངོས་འཛིན་མ་ཐུབ་པའི་རྭ་བ།{field}Unsupported file type "{extension}" for repo graphicརྒྱབ་སྐྱོར་མེད་པའི་བརྐོས་རིས་ཡིག་ཆ་རྙེད་སོང་།: {path}རྒྱབ་སྐྱོར་མེད་པའི་རྒྱབ་ལྗོངས་ཡིག་ཆའི་འགྲོ་ལུགས། བེད་སྤྱོད་: --to [{supported}]མེད་པ་མ་ཆགས་པ།]མེད་པ་མ་ཆགས་པ་]]མེད་པ་མ་ཆགས་པའི་བཟོ་སྐྲུན་ནང་།{name}{name}ནང་གི་མེད་པ་མ་ཆགས་པའི་མུ་མཐུད་པ།བེད་སྤྱོད་མེད་པའི་ extlib at %s 1%s 1 དེ་ལ་བེད་སྤྱོད་མེད་པའི་ཡིག་ཆ།མཉེན་ཆས་ཁ་བྱང་ནང་ལ་གསར་བསྒྱུར་འཚོལ་བའི་མིང་སྒྲིག་ཚར་འདུག -འདི་སུབས་ཆོག་གི་རེད།ཐུམ་སྒྲིལ་གསར་པའི་ཆེད་དུ་རེ་པོ་གནས་ཚུལ་གསར་བསྒྱུར་བྱེད།URLཆེད་དུ་ཨང་གྲངས་ཀྱི་ཐོ་གཞུང་གསར་བསྒྱུར།རེ་པོའི་གྲངས་ཐོ་རྣམས་གསར་བསྒྱུར་བྱེད།ཝི་ཀི་གསར་བསྒྱུར་བྱེད།བེད་སྤྱོད།བེད་སྤྱོད།:%s 1 བེད་སྤྱོད།/HEAD གྱི་ཚབ་ཏུ།/ སོར་བཞག་ཡན་ལག་ནང་དུ་ཡོད་པའི་དོན་ཚན་ཨ་མ།`fdroid update -c`བེད་སྤྱོད་བྱས་ནས་འདི་བཟོས།.ཐོན་སྐྱེད་ཞབས་ཞུ་འཕྲུལ་ཆས་བེད་སྤྱོད་བྱེད།APK རང་གི་ཚེས་གྲངས་དེ་བེད་སྤྱོད་བྱས་པ་ལས་ཁ་སྣོན་བྱས་པའི་ APKs གསར་པའི་དུས་ཚོས་བེད་སྤྱོད་མ་བྱེད།apk རང་གི་ཚེས་གྲངས་དེ་བེད་སྤྱོད་བྱས་པ་ལས་ཁ་སྣོན་བྱས་པའི་apk གསར་པའི་དུས་ཚོས་བེད་སྤྱོད་མ་བྱེད།Using "{path}" for configuring s3cmd.Using Java's jarsigner, not recommended for verifying APKs! Use apksigners3cmd བེད་སྤྱོད་བྱས་ནས་: {url}1དང་མཉམ་དུ་syncཁུངས་ལྡན་གྱི་བཀའ་ཁྱབ་ནི།:ཕབ་ལེན་བྱས་པའི་ཐུམ་སྒྲིལ་གྱི་སྤུས་ཚད་ར་སྤྲོད།Verifying index signature:ཡིག་ཚགས་ཀྱི་རྒྱབ་ལྗོངས་ལོ་རྒྱུས་སྐྱོན་སྲིད་པ་རྣམས་པ་ཉེན་བརྡ་གཏོང་།བརྡ་སྟོན་པའི་མིང་རྟགས་དེ་སྒྲིག་བཀོད་བྱས་ཚར་ན། གནས་སྐབས་མིང་རྟགས་མ་བཀོད་པའི་བརྡ་སྟོན་རྣམས་བཟོས།X.509 'ཁྱད་པར་ཅན་གྱི་མིང་' ལྡེ་མིག་བཟོས་པའི་སྐབས་ལ་བེད་སྤྱོད་བྱེད།X.509 'ཁྱད་པར་ཅན་གྱི་མིང་' ལྡེ་མིག་བཟོས་པའི་སྐབས་ལ་བེད་སྤྱོད་བྱེད།ཁྱེད་རང་གིས་ཨེན་ཀྲོཌ་མདུན་ངོས་བེད་སྤྱོད་བྱས་ནས་ཁྱེད་རང་གི་SDKའགྲོ་ལམ་སྒྲིག་བཀོད་བྱེད། དེ་ནི།:{path}ལ་ངོས་འཛིན་ཡིག་ཆ་ཁ་སྣོན་བྱེད་བཞིན་པ།{name}ལ་ཁ་སྣོན་བྱེད།: {path}གསལ་ཁ་མེད་པའི་གདམ་ཀ: %(option)s མཐུན་མི་སོང་།%(matches)sགསལ་ཁ་མེད་པའི་གདམ་ཀ:%s 1 (%s 2?)APPID བཀོད་པའི་ནང་གི་མཉེས་ཆས་ཁ་བྱང་།མཉེས་ཆས་ཁ་བྱང་རྒྱུད་གསར་བསྒྱར་ཡོད་མིན་ལྟོས།མཉེན་ཆས་ཀྱི་ངོ་བོ་དང་མཉམ་དུ་གདམ་ཀ་ཅན་གྱི་ཐོན་རིམ་ཨང་རྟགས་APPID[:VERCODE]རྩོད་པ།"-" འགྲོ་ལུགས་འདི་དང་མཉམ་དུ། %r 1ཕྱོགས་སྐྱོད་ལྡེ་མིག་ཚོད་ལྟ་ལ་bare ssh མཐུད་ཀ་་རྒྱབ་བཞིན་པ།:ཁ་ཕྱེས་ཐུབ་མ་སོང་།'%s 1': %s 2subparser རྩོད་པ་དུ་མ་ཡོད་ཐབས་མེད།བྱ་བ་ཟླ་སྒྲིལ་བཏང་ཐུབ་མ་སོང་། - སྡེ་ཚན་གཉིས་ཀྱི་མིང་ལ་%r 1པར་སྐྲུན་གསར་བསྒྱུར་བྱེད་མི་ཐུབ། ཁྱེད་ཀྱིས་ཕྱོགས་སྐྱོད་ལྡེ་མིག་སྒྲིག་བཀོད་བྱེད་ཡོད་དམ།?འདྲ་བཟོས་{url}ལག་བསྟར་བྱེད་རྒྱུར་བཀའ་གཏོང། ཡང་ན་'init'འམ་ཡང་ན་ 'གསར་བསྒྱུར།'མགོ་རྙོགཚིག་སྒྲུབ་ཀྱི་གདམ་ཀའི་རྙོག་ཕྲ།: %s 1{path} ནང་ལ་ {apkfilename}ཤུས་བཞིན་པ།created {path}སུབ་བཞིན་པ།:རེ་པོ་/{apkfilename}dest= ནི་གདམ་ཀ་འདི་འདྲ་ལ་%r 1དགོས་པ་ཡོད།ཚོད་དཔག་བྱེད་པའི་%s 1 རྩོད་པ་མ་མཐའ་ཡིན་ནའང་རེ་བ་བྱེད་པའི་རྩོད་པ།རེ་བ་བྱས་པའི་རྩོད་པ་ཆེ་ཤེོས་གཅིགརེ་བ་བྱས་པའི་རྩོད་པ་གཅིགབེད་སྤྱོད་: ཨེཕ་རོཌ་ [-h|-རོགས་པ་|--ཐོན་རིམ་] []གཡེང་ཚེགསྐྱོན་ཤོར་བ་ལ་ཉེན་བརྡ་ངེས་པར་དུ་གཏོང་དགོས་པ་དང་། ཡང་ན་ཡ་མ་བྱེད།དངོས་སུ་རྩོད་པ་པ་ལ་ཡ་ལན་མེད། %r 1index-v1 ངེས་པར་དུ་མིང་རྟགས་དགོས། བེད་སྤྱོད་`fdroid signindex`འདི་བཟོས་པ་རེད།!གོང་བུ།ཁུངས་ལྡན་མིན་པ་ %(type)s value: %(value)rཁུངས་ལྡན་མིན་པའི་གདམ་ཀ: %(value)r (དེ་ནས་གདམ་ཀ་%(choices)s)ཁུངས་ལྡན་མིན་པའི་རྙོག་ཕྲ།_resolution value: %rཁུངས་ལྡན་མིན་པའི་ཚིག་སྒྲུབ་གདམ་ཀ། %(option)r: ཁྱད་ཆོས་དང་མཉམ་དུ་འགོ་བཙུགས། %(prefix_chars)rlocal_copy_dir "fdroid"གིས་མཇུག་སྐྱོང་མིན་འདུག་ : "{path}1"local_copy_dir ནི་ངེས་པར་དུ་མཐའ་མའི་འགྲོ་ལམ་དེ་ཆགས་ཡོད།!local_copy_dir ངེས་པར་ཕྱོགས་དེབ་ཡིན་དགོས། ཡིག་ཆ་མ་རེད།!མེ་ལོང་། '%s 1' 'fdroid'དང་མཉམ་དུ་མཇུག་སྐྱོང་མི་ཐུབ།!ནང་ཕན་ཚུན་རྩོད་པ་དེ་གདམ་ཀ་ཅན་ངེས་པར་དུ་བཞག་དགོས་།APK མཁོ་སྤྲོད་མིན་འདུགགདམ་ཀ་དེ་འདྲ་མིན་འདུག: %sཆ་རྒྱུས་མེད་པའི་དམིགས་བསལ་ཞིག་རྙེད་སོང་།!རྩོད་པ་དང་མཉམ་དུ་ཆོག་མཆན་མེད། %s 1རྩོད་པ་གཅིག་དགོས་ཀྱི་ཡོད། %s 1ཚིག་སྒྲུབ་དང་ཐོ་གཞུང་། ཡིག་ཚགས་ཁོ་ན་ངོས་ལེན་བྱེད།གདམ་ཀ %s 1: གལ་ཏེ་ཁྱེད་ཀྱིས་མིང་རྟགས་བཀོད་པའི་མཉེན་ཆས་རིགས་ཚང་མ་ངེས་པར་དུ་སྒྲིག་བཅུག་བྱེད་འདོད་ཡོད་། བེད་སྤྱོད་ --ཚང་མ།གདམ་ཀ %s 1: ཁུངས་ལྡན་མིན་པ་ %s 2 རིན་ཐང་།: %r 3གདམ་ཀ %s 1: ཁུངས་ལྡན་མིན་པའི་གདམ་ཀ: %r 2 (choose from %s 3)གདམ་ཀ། '%s 1'ངོས་འཛིན་ཐུབ་མ་སོང་།གདམ་ཀ། -%s 1 རྩོད་དགོས།གདམ་ཀ། --%s 1གང་བྱས་ཀྱང་རྩོད་པ་མེད།གདམ་ཀ་--%s ཐུན་མོང་མ་ཡིན་པའི་སྔོན་འཇུག་མ་རེད།གདམ་ཀ།--%s 1 ངོས་འཛིན་ཐུབ་མ་སོང་།གདམ་ཀ། --%s རྩོད་དགོས།གདམ་ཀ་ཅན་གྱི་རྩོད་པ།སྐྱར་བྲིས་ཡོད་།{path}གནས་སྟངས་ལ་གཞིགས་པའི་རྩོད་པ།བདེ་ཆགས་མེད་པའི་HTTPMམཐུད་ཀ་རྒྱུད་དེ་ཕབ་བཤུས་ངོས་ལེན་མེད། (HTTPS བེད་སྤྱོད་དང་ཡང་ན་དམིགས་སྟོན་། --no-https-check){apkfilename}བེད་ཆགས་མེད་པའི་དྲྭ་རྒྱའི་ཁ་བྱང་http ནས་ཕབ་ལེན་བཀག། (use https or specify --no-https-check): {apkfilename}s3cmd sync ཕྱོགས་སྟོན།{path}1 དེ་ནས {url} དང་སུབས།ལས་རིམ་རྣམ་གཞག་གི་ཐོན་རིམ་ཨང་གྲངས་སྟོན་ནས་ཕྱིར་ཐོན་བྱེད།རོགས་པ་བྱེད་པའི་འཕྲིན་ཐུང་སྟོན་ནས་ཕྱིར་ཐོན།APK མིང་རྟགས་, ཡིག་ཆའི་འགྲོ་ལམ་མམ་ཡང་ན། HTTPS URL.tarballའབྱུང་ཁུངས་མཆོང་རྒྱག་རྒྱབ་བཞིན་པ།:{path}srclibs missing name and/or @གཤམ་གྱི་རྩོད་པ་དེ་དག་དགོས།:%sརེ་བ་མེད་པའི་གདམ་ཀ་ཅན་གྱི་ཚིག་སྒྲུབ།:%sངོས་འཛིན་མི་ཐུབ་པའི་ parser %(parser_name)r (གདམ་ཀ།: %(choices)s)ངོས་འཛིན་མི་ཐུབ་པའི་རྩོད་པ།: %s'{config_file}' སྒང་གི་བདེ་ཆགས་མེད་པའི་ཆོག་མཆན་ (ངེས་པར་དུ། 0600)!བེད་སྤྱོད།: བེད་སྤྱོད་: ཨེཕ་རོཌ་[-h|--help|--version] []Apache libcloud བེད་སྤྱོད་བྱས་པའི་ཐོག་ {url}1དང་མཉམ་དུ་ཟླ་སྒྲིལ་གཏོང་།{0} མཉེས་ཆས་, {1} key aliases{apkfilename} ({appid}) ལ་རྒྱབ་ལྗོངས་ཡིག་ཆ་མིན་འདུག!{apkfilename} has multiple {name} files, looks like Master Key exploit!{appid} ལ་མིང་ཡོད་མ་རེད། !དེའི་ཚབ་ལ་ཐུམ་སྒྲིལ་མིང་བེད་སྤྱོད་བྱེད།.{appid} is missing {name}{appid}1: ངོས་འཛིན་མི་ཐུབ་པའི་ extlib {path}2 བཟོ་སྐྲུན་ནང་ལ '{versionName}3'{appid}: no builds specified, running on current source state{field} སྒོ་རྒྱབ་མིན་འདུག {name}{name} "{path}" མིན་འདུག! config.pyནོར་བཅོས་བྱེད།.{path} has bad file signature "{pattern}", possible Janus exploit!{path} ལ་ཆེ་ཆུང་མེད།!{} བཟོ་སྐྲུན་བྱེད་མི་ཐུབ།{} བཟོ་སྐྲུན་ལེགས་སྒྲུབ།fdroidserver-1.0.9/locale/bo/LC_MESSAGES/fdroidserver.po0000664000175000017500000032146513322065577022634 0ustar hanshans00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Free Software Foundation, Inc. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: fdroidserver 0.9\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" "POT-Creation-Date: 2018-02-13 09:01+0100\n" "PO-Revision-Date: 2018-02-13 08:41+0000\n" "Last-Translator: Hans-Christoph Steiner \n" "Language-Team: Tibetan \n" "Language: bo\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Weblate 2.19-dev\n" #: ../fdroidserver/nightly.py msgid "" "\n" "SSH Public Key to be used as Deploy Key:" msgstr "" "\n" "SSHདམངས་ཀྱི་ལྡེ་མིག་དེ་ཕྱོགས་སྐྱོད་ལྡ་ེམིག་ལ་བེད་སྤྱོད་བྱེད།:" #: ../fdroidserver/nightly.py #, python-brace-format msgid "" "\n" "{path} encoded for the DEBUG_KEYSTORE secret variable:" msgstr "" "\n" "{path} DEBUG_KEYSTOREགསང་རྟགས་ཀྱི་ཆེད་དུ་ཨང་སྒྲིག:" #: ../fdroidserver/lint.py #, python-format msgid "\"%s/\" has no matching metadata file!" msgstr "\"%s/\" འདི་དང་མཐུན་པའི་རྒྱབ་ལྗོངས་ཡིག་ཆ་མིན་འདུག!" #: ../fdroidserver/update.py #, python-brace-format msgid "\"{path}\" contains outdated {name} ({version})" msgstr "\"{path}\"དུས་ཚོད་ཡོལ་ཟིན་པའི་{name} ({version})ཚུད་ཡོད།" #: ../fdroidserver/update.py #, python-brace-format msgid "\"{path}\" contains recent {name} ({version})" msgstr "\"{path}\" ཉེ་ཆར་{name} ({version})རྣམས་ཚུད་ཡོད།" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "\"{path}\" exists but s3cmd is not installed!" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "\"{path}\" is not an accepted format, convert to: {formats}" msgstr "\"{path}སྒྲིག་བཀོད་འདི་ངོས་ལེན་བྱེད་ཐུབ་ཀྱི་མིན་འདུག:{formats}" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "%(option)s option requires %(number)d argument" msgid_plural "%(option)s option requires %(number)d arguments" msgstr[0] "%(option)s གདམ་ཀ་དགོས་ %(number)d རྩོད་པ།" #: ../fdroidserver/mirror.py #, fuzzy, python-format msgid "%(prog)s [options] url" msgstr "%(prog)s [གདམ་ཀ།] url" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "%(prog)s: error: %(message)s\n" msgstr "%(prog)s: ནོར་སྐྱོན: %(message)s\n" #: ../fdroidserver/scanner.py #, python-format msgid "%d problems found" msgstr "%d དཀའ་རྙོག་ཐོན་སོང་།" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "%prog [options]" msgstr "%prog [གདམ་ཀ།]" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "%r is not callable" msgstr "%r 1 བྱེད་ལས་མིན་འདུག" #: ../fdroidserver/lint.py #, python-format msgid "%s is not an accepted build field" msgstr "%s 1འདི་ཁས་ལེན་ཐུབ་པའི་བཟོ་སྐྲུན་རྭ་བ་མ་རེད།" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "%s option does not take a value" msgstr "%sགདམ་ཀ་ནུས་མེད་རེད་འདུག" #: ../fdroidserver/index.py ../fdroidserver/common.py msgid "'keypass' not found in config.py!" msgstr "'keypass' འདི་config.py ནང་རྙེད་མ་སོང་།!" #: ../fdroidserver/index.py ../fdroidserver/common.py msgid "'keystore' not found in config.py!" msgstr "'keystore' འདི་ config.py ནང་རྙེད་མ་སོང་།!" #: ../fdroidserver/index.py ../fdroidserver/common.py msgid "'keystorepass' not found in config.py!" msgstr "'keystorepass' འདི་ config.py ནང་རྙེད་མ་སོང་།!" #: ../fdroidserver/index.py ../fdroidserver/common.py msgid "'repo_keyalias' not found in config.py!" msgstr "'repo_keyalias' འདི་ config.py ནང་རྙེད་མ་སོང་།!" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "'required' is an invalid argument for positionals" msgstr "'དགསོ་མཁོ།' ནི་གནས་སྟངས་འདི་ལ་ཁུངས་ལྡན་གྱི་རྩོད་པ་རེད་མིན་འདུག" #: ../fdroidserver/common.py msgid "'sdk_path' not set in 'config.py'!" msgstr "'sdk_path' འདི་ 'config.py' ནང་སྒྲིག་ཐུབ་མ་སོང་།!" #. Translators: "build-tools" is the file name of a package from #. Google, it is part of the Android SDK. So it probably shouldn't be #. translated or transliterated. #: ../fdroidserver/common.py #, python-brace-format msgid "'{aapt}' is too old, fdroid requires build-tools-23.0.0 or newer!" msgstr "" "'{aapt}1' འདི་ཧ་ཅང་གི་རྙིང་པ་རེད་འདུག, ཨེཕ་རོཌ་ལ་བཟོ་སྐྲུན་མ་ལག-23.0.0 དང་ཡང་ན་དེ་ལས་གསར་" "བ་དགོས།!" #: ../fdroidserver/common.py #, fuzzy, python-brace-format msgid "'{aapt}' is too old, fdroid requires build-tools-{version} or newer!" msgstr "" "'{aapt}1' འདི་ཧ་ཅང་གི་རྙིང་པ་རེད་འདུག, ཨེཕ་རོཌ་ལ་བཟོ་སྐྲུན་མ་ལག-23.0.0 དང་ཡང་ན་དེ་ལས་གསར་" "བ་དགོས།!" #: ../fdroidserver/install.py #, python-brace-format msgid "'{apkfilename}' is already installed on {dev}." msgstr "'{apkfilename}' འདི་{dev}.ནང་སྔོན་ཚོད་ནས་སྒྲིག་བཅུག་བྱས་ཟིན།." #: ../fdroidserver/common.py #, python-brace-format msgid "" "'{field}' will be in random order! Use () or [] brackets if order is " "important!" msgstr "" "'{field}1' ནི་གོ་རིམ་ངེས་མེད།! བེད་སྤྱོད། () ཡང་ན། [] གོ་རིམ་གལ་ཆེན་པོའི་རིགས་ལ་གུག་རྟགས་ནང་" "བཅུག!" #: ../fdroidserver/common.py #, python-brace-format msgid "'{path}' failed to execute!" msgstr "'{path}1' ལག་བསྟར་ཐུབ་མ་སོང་།!" #: ../fdroidserver/metadata.py #, python-brace-format msgid "'{value}' is not a valid {field} in {appid}. Regex pattern: {pattern}" msgstr "" "'{value}' ཁུངས་ལྡན་རེད་མིན་འདུག{field} འདི་ནང་ {appid}. Regex འགྲོ་ལུགས་: {pattern}" #: ../fdroidserver/checkupdates.py #, python-brace-format msgid "...checkupdate failed for {appid} : {error}" msgstr "...{appid} གྱི་ཆེད་དུ་གསར་བསྒྱུར་འཚོལ་མི་ཐུབ།་: {error}" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid ".__call__() not defined" msgstr ".__call__() ངོས་འཛིན་ཐུབ་མེད།" #: ../fdroidserver/metadata.py msgid ".fdroid.txt is not supported! Convert to .fdroid.yml or .fdroid.json." msgstr "" #: ../fdroidserver/lint.py msgid "/issues is missing" msgstr "/གནས་དོན་བོར་བརླག་སོང་འདུག" #: ../fdroidserver/mirror.py #, fuzzy msgid "A URL is required as an argument!" msgstr "གདམ་ཀ། -%s 1 རྩོད་དགོས།" #: ../fdroid msgid "Add PGP signatures using GnuPG for packages in repo" msgstr "PGP གྱི་མིང་རྟགས་དེ་རེ་པོ་ཐུམ་སྒྲིལ་ནང་GnuPG ཁ་སྣོན་བྱས་ནས་རེ་པོ་ནང་ལ་བཅུག" #: ../fdroid msgid "Add a new application from its source code" msgstr "འབྱུང་ཁུངས་ཨང་རྟགས་ནས་མཉེན་ཆས་གསར་པ་ཁ་སྣོན་བྱེད།" #: ../fdroidserver/update.py msgid "Add a repo signing key to an unsigned repo" msgstr "མིང་རྟགས་མི་བཀོད་པའི་རེ་པོ་ནང་ལ་རེ་པོ་མིང་རྟགས་ལྡེ་མིག་འདི་ཁ་སྣོན་བྱེད།" #: ../fdroidserver/update.py msgid "Add skeleton metadata files for APKs that are missing them" msgstr "APKsནང་ལ་ཡིག་ཚགས་ཀྱི་རྒྱབ་ལྗོངས་ལོ་རྒྱུས་ཁ་སྣོན་བྱེད།" #: ../fdroidserver/update.py #, python-brace-format msgid "Adding new repo for only {name}" msgstr "{name}ཁོ་ནའི་ཆེད་དུ་རེ་པོ་གསར་པ་ཁ་སྣོན།" #: ../fdroidserver/init.py msgid "Alias of the repo signing key in the keystore" msgstr "ལྡེ་མིག་གསོག་ཉར་ཁང་ནང་རེ་པོ་མིང་རྟགས་ལྡེ་མིག་བཀོད་པའི་གསང་མིང་།" #: ../fdroidserver/import.py msgid "" "Allows a different revision (or git branch) to be specified for the initial " "import" msgstr "" "ཐོག་མའི་ནང་འདྲེན་བྱེད་པའི་སྐབས་གསལ་པོའི་ཐོག་ནས་སྐྱར་སྦྱོང་(ཡང་ན་གིཊ་ཡན་ལག་)མི་འདྲ་བ་རྣམས་ལ་ཆོག་" "མཆན་སྤྲོད།" #: ../fdroidserver/mirror.py msgid "Also mirror the full archive section" msgstr "" #: ../fdroidserver/lint.py msgid "Also warn about formatting issues, like rewritemeta -l" msgstr "མ་ཟད་བཀོད་སྒྲིག་བྱས་པའི་གནད་དོན་རྣམས་ལ་ཉེན་བརྡ་སྟོན། དཔེར་ན་rewritemeta -l" #: ../fdroidserver/common.py #, python-brace-format msgid "Android SDK '{path}' does not have '{dirname}' installed!" msgstr "ཨེན་ཀྲོཌ་SDK '{path}1{dirname}' '{dirname}'སྒྲིག་བཅུག་མིན་འདུག!" #: ../fdroidserver/common.py msgid "Android SDK not found!" msgstr "ཨེན་ཀྲོཌ་ SDK རྙེད་སོན་བྱུང་མ་སོང་།!" #: ../fdroidserver/common.py #, python-brace-format msgid "Android SDK path '{path}' does not exist!" msgstr "ཨེན་ཀྲོཌ་SDK ཐབས་ལམ་ '{path}'མིན་འདུག!" #: ../fdroidserver/common.py #, python-brace-format msgid "Android SDK path '{path}' is not a directory!" msgstr "ཨེན་ཀྲོཌSDKཐབས་ལམ་ '{path}1' ཡིག་ཆ་གསོག་ཉར་རེད་མིན་འདུག!" #. Translators: "build-tools" is the file name of a package from #. Google, it is part of the Android SDK. So it probably shouldn't be #. translated or transliterated. #: ../fdroidserver/common.py #, python-brace-format msgid "Android build-tools path '{path}' does not exist!" msgstr "ཨེན་ཀྲོཌ་བཟོ་སྐྲུན་-མ་ལག་ཐབས་ལམ་'{path}'མིན་འདུག!" #: ../fdroidserver/update.py msgid "AndroidManifest.xml has no date" msgstr "AndroidManifest.xmlལ་ཟླ་ཚེས་མིན་འདུག" #: ../fdroidserver/lint.py #, python-brace-format msgid "App is in '{repo}' but has a link to {url}" msgstr "མཉེན་ཆས་འདི་'{repo}1ནང་འདུག འོན་ཀྱང་སྦྲེལ་མཐུད་དེ་ {url}2ཡོད།" #: ../fdroidserver/lint.py msgid "Appending .git is not necessary" msgstr "Appending .git ངེས་པར་དགོས་ཀྱི་མེད།" #: ../fdroidserver/update.py #, python-brace-format msgid "Archiving {apkfilename} with invalid signature!" msgstr "མཛོད་ཁང་{apkfilename} ལ་ཁུངས་ལྡན་མིན་པའི་མིང་རྟགས་!" #: ../fdroidserver/mirror.py msgid "" "Base URL to mirror, can include the index signing key using the query " "string: ?fingerprint=" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vname #: ../fdroidserver/lint.py #, python-brace-format msgid "Branch '{branch}' used as commit in build '{versionName}'" msgstr "ཡན་ལག '{branch}1' བཟོ་སྐྲུན་ནང་བེད་སྤྱོད་བྱས་རྒྱུ་ཁས་ལེན་ཡོད།'{versionName}2'" #: ../fdroidserver/lint.py #, python-brace-format msgid "Branch '{branch}' used as commit in srclib '{srclib}'" msgstr "ཡན་ལག '{branch}1'' srclib ནང་བེད་སྤྱོད་བྱེད་རྒྱུ་ཁས་ལེན་ཡོད་།'{srclib}'" #: ../fdroid msgid "Build a package from source" msgstr "འབྱུང་ཁུངས་ནས་ཐུམ་སྒྲིལ་བཟོས་འདུག" #: ../fdroidserver/build.py msgid "Build all applications available" msgstr "མཉེན་ཆས་ཡོད་བཞིན་པ་ཆ་ཚང་ལ་ཐོན་སྐྱེད་བཟོས།" #: ../fdroidserver/lint.py msgid "Build generated by `fdroid import` - remove disable line once ready" msgstr "" "བཟོ་སྐྲུན་འདི་ཐོན་སྐྱེད་བྱེད་མཁན་ 'ཨེཕ་རོཌ་ནང་འདྲེན།' -གལ་སྲིད་གྲ་སྒྲིག་ཟིན་ན་ནུས་མེད་ཀྱི་རིམ་པ་དེ་མེད་པ་" "བཟོས།" #: ../fdroidserver/build.py msgid "Build only the latest version of each package" msgstr "ཐུམ་སྒྲིལ་རེ་རེ་ལ་ཁོ་ནར་བཟོས་པའི་ཐོན་རིམ་གསར་ཤོས།" #: ../fdroidserver/metadata.py #, python-brace-format msgid "" "Build should have comma-separated versionName and versionCode, not " "\"{value}\", in {linedesc}" msgstr "" "བཟོ་སྐྲུན་ལ་ངེས་པར་དུ་བར་ཚེགས་ཀྱི་དབྱེ་མཚམས་ཡོད་པའི་ཐོན་རིམ་གྱི་མིང་དང་ཐོན་རྟགས་དགོས།" "\"{value}\"ནང་{linedesc}" #: ../fdroidserver/init.py #, python-format msgid "Built repo based in \"%s\" with this config:" msgstr "རེ་པོ་བཟོ་སྐྲུན་གཞི་རྩ་ \"%s\" སྒྲིག་བཀོད་འདི་དང་མཉམ་དུ་ཡོད།:" #: ../fdroidserver/build.py msgid "Can't build due to {} error while scanning" msgid_plural "Can't build due to {} errors while scanning" msgstr[0] "ཚགས་རྒྱབ་པའི་སྐབས་སུ་ནོར་སྐྱོན་ {} ཤོར་བས་བཟོ་སྐྲུན་བྱེད་ཐུབ་མེད།" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Cannot find a packageName for {path}!" msgstr "{path}གྱི་ཆེད་དུ་ཐུམ་སྒྲིལ་གྱི་མིང་རྙེད་མ་སོང་།!" #: ../fdroidserver/metadata.py #, fuzzy, python-brace-format msgid "Cannot find an appid for {path}!" msgstr "{path}!གྱི་ཆེད་དུ་ཐུམ་སྒྲིལ་གྱི་མིང་རྙེད་མ་སོང་།" #: ../fdroidserver/vmtools.py #, fuzzy, python-brace-format msgid "Cannot read \"{path}\"!" msgstr "{appid} app idཐག་ཆོད་ཐུབ་མ་སོང་།" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Cannot resolve app id {appid}" msgstr "{appid} app idཐག་ཆོད་ཐུབ་མ་སོང་།" #: ../fdroidserver/rewritemeta.py msgid "Cannot use --list and --to at the same time" msgstr "བེད་སྤྱོད་གཏོང་མི་ཐུབ་། --ཐོ་གཞུང་དང--དུས་མཉམ།" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Cannot write \"{path}\", not an accepted format, use: {formats}" msgstr "འབྲི་ཐུབ་ཀྱི་མིན་འདུག\"{path}\", སྒྲིག་བཀོད་འདི་ལ་ངོས་ལེན་མིན། བེད་སྤྱོད།:{formats}" #: ../fdroidserver/lint.py msgid "Categories are not set" msgstr "སྡེ་ཚན་རྣམས་སྒྲིག་མེད།" #: ../fdroidserver/lint.py #, python-format msgid "Category '%s' is not valid" msgstr "སྡེ་ཚན་'%s' ཁུངས་ལྡན་མ་རེད།" #: ../fdroid msgid "Check for updates to applications" msgstr "མཉེན་ཆས་རྣམས་གསར་བསྒྱུར་བྱས་མིན་གཟིགས་ཞིབ་གནང་དང་།" #: ../fdroidserver/update.py #, python-brace-format msgid "" "Checking archiving for {appid} - apks:{integer}, keepversions:{keep}, " "archapks:{arch}" msgstr "" "མཛོད་ཁང་ཚོད་ལྟའི་ཆེད་དུ།{appid} - apks:{integer},ཐོན་རིམ་ཉར་ཚགས།:{keep},archapks:" "{arch}" #: ../fdroidserver/dscanner.py msgid "Clean after all scans have finished" msgstr "ཆ་ཚང་འཚག་རྒྱབ་ཚར་བའི་རྗེས་སུ་གཙང་མ་བཟོས།" #: ../fdroidserver/dscanner.py msgid "Clean before the scans start and rebuild the container" msgstr "འཚག་རྒྱབ་འགོ་མ་བཙུགས་གོང་ལ་གཙང་མ་དང་སྣོད་དེ་སྐྱར་དུ་བཟོས།" #: ../fdroidserver/dscanner.py msgid "Clean up all containers and then exit" msgstr "སྣོད་ཆ་ཚང་གཙང་མ་བཟོས་ནས་ཕྱིར་ཐོན།" #: ../fdroidserver/update.py msgid "Clean update - don't uses caches, reprocess all APKs" msgstr "གསར་བསྒྱུར་གཙང་བཟོ།-ཡིག་ཆ་གསོག་ཉར་བེད་སྤྱོ་མ་བྱེད། apks ཚང་མ་སྐྱར་སྤྱོད་བྱེད།" #: ../fdroidserver/import.py msgid "Comma separated list of categories." msgstr "སྡེ་ཚན་སོ་སོའི་ཐོ་གཞུང་ལ་བར་མཚམས་རེ་འཇོག།." #: ../fdroid #, c-format, python-format msgid "Command '%s' not recognised.\n" msgstr "བཀའ་ཁྱབ་ '%s 1'ངོས་འཛིན་ཐུབ་མ་སོང་།\n" #: ../fdroidserver/checkupdates.py msgid "Commit changes" msgstr "བསྒྱུར་བ་གཏོང་བར་མོས་མཐུན་ཡོད།" #: ../fdroidserver/common.py #, python-brace-format msgid "Could not find '{command}' on your system" msgstr "ཁྱེད་རང་གི་མ་ལག་སྒང་ལ་'{command}1' རྙེད་མ་སོང་།" #: ../fdroidserver/update.py #, python-brace-format msgid "Could not find {path} to remove it" msgstr "{path}མེད་པ་བཟོས་པ་ལ་རྙེད་མ་སོང་།" #: ../fdroidserver/update.py msgid "Could not open apk file for analysis" msgstr "དཔྱད་ཞིབ་ཀྱི་ཆེད་དུ་apk ཡིག་ཆ་ཁ་ཕྱེས་ཐུབ་ཀྱི་མིན་འདུག" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/import.py msgid "Couldn't find latest version code" msgstr "ཐོན་རིམ་གསར་གསར་ཤོས་ཀྱི་ཨང་རྟགས་འདི་འདི་རྙེད་མ་སོང་།" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vname #: ../fdroidserver/import.py msgid "Couldn't find latest version name" msgstr "ཐོན་རིམ་གསར་ཤོས་འདིའི་མིང་རྙེད་མ་སོང་།" #: ../fdroidserver/import.py msgid "Couldn't find package ID" msgstr "ཐུམ་སྒྲིལ་ངོས་འཛིན་རྙེད་སོན་བྱུང་མ་སོང་།" #: ../fdroidserver/update.py msgid "Cowardily refusing to overwrite existing signing key setup!" msgstr "མིང་རྟགས་ལྡེ་མིག་སྒྲིག་བཀོད་ལ་སྐྱར་བྲིས་བྱེད་མི་བདེ་བ།!" #: ../fdroidserver/update.py msgid "Create a repo signing key in a keystore" msgstr "ལྡེ་མིག་གསོག་ཉར་ཁག་གི་ནང་ལ་རེ་པོ་མིང་རྟགས་བཀོད་པའི་ལྡེ་མིག་གཅིག་བཟོས།" #: ../fdroidserver/update.py msgid "Create skeleton metadata files that are missing" msgstr "བོར་བརླག་ཏུ་སོང་བའི་ཡིག་ཚགས་ཀྱི་རྒྱབ་ལྗོངས་ལོ་རྒྱུས་ཡང་སྐྱར་བཟོས།" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Created new container \"{name}\"" msgstr "དྲྭ་སྣོད་གསར་པ་བཟོས་\"{name}\"" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Creating \"{path}\" for configuring s3cmd." msgstr "" #: ../fdroidserver/publish.py msgid "Creating log directory" msgstr "ཉིན་ཐོ་ཕྱོགས་དེབ་བཟོ་བཞིན་པ།" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Creating new S3 bucket: {url}" msgstr "S3 སྣོད་གསར་པ་བཟོ་བཞིན་པ།:{url}" #: ../fdroidserver/publish.py msgid "Creating output directory" msgstr "ཐོན་སྐྱེད་ཕྱོགས་དེབ་བཟོ་བཞིན་པ།" #: ../fdroidserver/index.py msgid "Creating signed index with this key (SHA256):" msgstr "ལྡེ་མིག་འདི་(SHA256)དང་མཉམ་དུ་མིང་རྟགས་ཕྱོགས་སྟོན་བཟོ་བཞིན་པ།:" #: ../fdroidserver/import.py ../fdroidserver/verify.py #: ../fdroidserver/publish.py msgid "Creating temporary directory" msgstr "གནས་སྐབས་ཕྱོགས་དེབ་བཟོ་བཞིན་པ།" #: ../fdroidserver/index.py msgid "Creating unsigned index in preparation for signing" msgstr "མིང་རྟགས་གྲ་སྒྲིག་གི་ཆེད་དུ་མིང་རྟགས་མ་བཀོད་པའི་ཕྱོགས་སྟོན་བཟོ་བཞིན་པ།" #: ../fdroidserver/nightly.py msgid "DEBUG_KEYSTORE is not set or the value is incomplete" msgstr "DEBUG_KEYSTORE སྒྲིག་བཀོད་བྱེད་མིན་འདུག ཡང་ན་ཚད་ལོངས་མིན་འདུག" #: ../fdroidserver/update.py msgid "Delete APKs and/or OBBs without metadata from the repo" msgstr "APKs དང/ཡང་ནOBBs གཉིས་ལ་རེ་པོ་ནས་འགྲེལ་ཡིག་ཚགས་ཀྱི་རྒྱབ་ལྗོངས་ལོ་རྒྱུས་མེད་པ་རྣམས་སུབས།" #: ../fdroidserver/update.py #, python-brace-format msgid "Deleting unknown file: {path}" msgstr "ངོས་འཛིན་མི་ཐུབ་པའི་ཡིག་ཆ་རྣམས་སུབས་བཞིན་པ།: {path}" #: ../fdroidserver/lint.py #, python-format msgid "Description '%s' is just the app's summary" msgstr "འགྲེལ་བཤད་'%s 1' ནི་མཉེན་ཆས་མདོར་བསྡུས་ཤིག་རེད།" #: ../fdroidserver/lint.py msgid "Description has a duplicate line" msgstr "འགྲེལ་བཤད་འདི་ལ་རིམ་པ་རྫུན་མ་ཡོད།" #: ../fdroidserver/lint.py #, python-format msgid "Description has a list (%s) but it isn't bulleted (*) nor numbered (#)" msgstr "" "འགྲེལ་བཤད་འདི་ལ་ཐོ་གཞུང་ཡོད། (%s 1) འོན་ཀྱང་འདི་ལ་ཚགས་རྒྱབ་མིན་འདུག(*)གྲངས་ཀྱང་མེད། (#)" #: ../fdroidserver/lint.py #, python-brace-format msgid "Description of length {length} is over the {limit} char limit" msgstr "རིང་ཐུང་གི་འགྲེལ་བཤད་ {length} {limit} ལས་བརྒལ་འདུག char limit" #: ../fdroidserver/mirror.py #, python-brace-format msgid "Do not include \"{path}\" in URL!" msgstr "" #: ../fdroidserver/init.py msgid "Do not prompt for Android SDK path, just fail" msgstr "དེ་མ་ཐག་ཏུ་ཨེན་ཀྲོཌ་SDK གྱི་ལམ་མ་སྟོན། ད་ལྟ་བྱེད་ཐུབ་མ་སོང་།" #: ../fdroidserver/build.py msgid "Don't create a source tarball, useful when testing a build" msgstr "ཊར་བོལ་གྱི་འབྱུང་ཁུངས་མ་བཟོས། འདིས་ཐོན་སྐྱེད་ཚོད་ལྟ་བྱེད་པ་ལ་ཕན་ཐོགས།" #: ../fdroidserver/stats.py msgid "Don't do anything logs-related" msgstr "ཐོ་གཞུང་དང་འབྲེལ་བ་ཡོད་པའི་རིགས་ལ་གང་ཡང་མ་བྱེད།" #: ../fdroidserver/build.py msgid "" "Don't refresh the repository, useful when testing a build with no internet " "connection" msgstr "མཛོད་ཁང་སྐྱར་སོས་མ་བྱེད། དྲྭ་རྒྱ་མེད་པའི་སྐབས་ལ་ཐོན་སྐྱེད་ཚོད་ལྟ་བྱེད་པར་ཕན་ཐོགས་ཡོང་།" #: ../fdroidserver/server.py ../fdroidserver/nightly.py #: ../fdroidserver/upload.py msgid "Don't use rsync checksums" msgstr "rsync ཡིག་ཚགས་བརྟག་དཔྱད་ཀྱི་གསོག་ཉར་ཁང་འདི་བེད་སྤྱོད་མ་བྱེད།" #: ../fdroid msgid "Download complete mirrors of small repos" msgstr "" #: ../fdroidserver/stats.py msgid "Download logs we don't have" msgstr "ཐོ་གཞུང་ཕབ་ལེན་ང་ཚོར་མེད།" #: ../fdroidserver/common.py msgid "Downloading the repository already failed once, not trying again." msgstr "མཛོད་ཁང་ཕབ་ལེན་ཐེངས་གཅིག་བྱས་པ་འདི་ཐུབ་མ་སོང་། ཡང་སྐྱར་ཐབས་ཤེས་བྱེད་ཀྱི་མིན་།." #: ../fdroidserver/verify.py #, python-brace-format msgid "Downloading {url} failed. {error}" msgstr "{url} ཕབ་ལེན་ཐུབ་མ་སོང་།{error}" #: ../fdroidserver/metadata.py #, python-brace-format msgid "" "Duplicate build recipe found for versionCode {versionCode} in {linedesc}" msgstr "" "བཟོ་སྐྲུན་ངོ་བཤུས་རིམ་པ་དེ་བཞིན་ཐོན་རིམ་ཨང་རྟགས་ནང་རྙེད་སོན་བྱུང་འདུག{versionCode} ནང་ " "{linedesc}" #: ../fdroidserver/lint.py #, python-brace-format msgid "Duplicate link in '{field}': {url}" msgstr "'{field}'ནང་གི་ངོ་བཤུས་སྦྲེལ་མཐུད།: {url}" #: ../fdroid msgid "Dynamically scan APKs post build" msgstr "APKs ཐོན་སྐྱེད་རྗེས་ཀྱི་ཞིབ་ཚགས་པོའི་འཚག་རྒྱབ།" #: ../fdroidserver/mirror.py msgid "" "ERROR: this command should never be used to mirror f-droid.org!\n" "A full mirror of f-droid.org requires more than 200GB." msgstr "" #: ../fdroidserver/nightly.py msgid "ERROR: unsupported CI type, patches welcome!" msgstr "ནོར་འཁྲུལ།: རྒྱབ་སྐྱོར་མེད་པའི་CI རྣམ་གྲངས་དང་ལྷན་པ་རྒྱབ་ནའང་འགྲིག་གི་ཡོད།!" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Empty build flag at {linedesc}" msgstr "{linedesc}ལ་ཡོད་པའི་བཟོ་དར་སྟོང་པ།" #: ../fdroidserver/init.py #, python-format msgid "" "Enter the path to the Android SDK (%s) here:\n" "> " msgstr "" "ཨེན་ཀྲོཌ་SDKགྱི་ལམ་འདིར་ཡོད་པས་ནང་འཛུལ་བྱེད། (%s) :\n" "> " #: ../fdroidserver/server.py ../fdroidserver/checkupdates.py #: ../fdroidserver/upload.py #, fuzzy, python-format msgid "Error while attempting to publish log: %s" msgstr "རེ་པོ་ཁ་བྱང་ལེན་སྐབས་ནོར་སྐྱོན།" #: ../fdroidserver/import.py msgid "Error while getting repo address" msgstr "རེ་པོ་ཁ་བྱང་ལེན་སྐབས་ནོར་སྐྱོན།" #: ../fdroid msgid "Extract signatures from APKs" msgstr "APKs ནས་མིང་རྟགས་ཕྱིར་སྟོན་བྱེད།" #: ../fdroidserver/signatures.py #, python-brace-format msgid "Failed fetching signatures for '{apkfilename}': {error}" msgstr "'{apkfilename}'གྱི་ཆེད་དུ་འཚོལ་བཞིན་པའི་མིང་རྟགས་རྙེད་མ་སོང་།: {error}" #: ../fdroidserver/update.py #, python-brace-format msgid "Failed reading {path}: {error}" msgstr "ཀློག་མི་ཐུབ།{path}: {error}" #: ../fdroidserver/update.py #, python-brace-format msgid "Failed resizing {path}: {error}" msgstr "ཆེ་ཆུང་སྐྱར་སྒྲིག་ཐུབ་མ་སོང་། {path}: {error}" #: ../fdroidserver/publish.py msgid "Failed to align application" msgstr "མཉེན་ཆས་ཡོད་རྣམས་ཕྱོགས་སྒྲིག་བྱེད་ཐུབ་མ་སོང་།" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Failed to create S3 bucket: {url}" msgstr "S3 དྲྭ་སྣོད་བཟོས་ཐུབ་མ་སོང་། :{url}" #: ../fdroidserver/common.py msgid "Failed to get APK manifest information" msgstr "APKནང་གསལ་བའི་གནས་ཚུལ་རྣམས་ལེན་ཐུབ་མ་སོང་།" #: ../fdroidserver/update.py #, python-brace-format msgid "Failed to get apk information, deleting {path}" msgstr "apk གནས་ཚུལ་རག་གི་མིན་འདུག {path}སུབ་བཞིན་པ།" #: ../fdroidserver/update.py #, python-brace-format msgid "Failed to get apk information, skipping {path}" msgstr "apk གནས་ཚུལ་རག་གི་མིན་འདུག {path}མཆོང་།" #: ../fdroidserver/install.py #, python-brace-format msgid "Failed to install '{apkfilename}' on {dev}: {error}" msgstr "སྒྲིག་བཅུག་བྱེད་མ་སོང་། '{apkfilename}' སྒང་ལ་ {dev}: {error}" #: ../fdroidserver/publish.py ../fdroidserver/common.py msgid "Failed to sign application" msgstr "མཉེན་ཆས་མིང་རྟགས་བཀོད་མིན་འདུག" #: ../fdroidserver/common.py #, fuzzy msgid "Failed to zipalign application" msgstr "མཉེན་ཆས་ཡོད་རྣམས་ཕྱོགས་སྒྲིག་བྱེད་ཐུབ་མ་སོང་།" #: ../fdroidserver/build.py #, python-brace-format msgid "Fetched buildserverid from VM: {buildserverid}" msgstr "" #: ../fdroidserver/signatures.py #, python-brace-format msgid "Fetched signatures for '{apkfilename}' -> '{sigdir}'" msgstr "'{apkfilename}' ཆེད་དུ་མིང་རྟགས་འཚོལ་བཞིན་པ།་> '{sigdir}'" #: ../fdroidserver/verify.py ../fdroidserver/stats.py ../fdroidserver/update.py #: ../fdroidserver/rewritemeta.py ../fdroidserver/build.py #: ../fdroidserver/checkupdates.py ../fdroidserver/scanner.py #: ../fdroidserver/install.py msgid "Finished" msgstr "ཚར་སོང་།" #: ../fdroidserver/lint.py msgid "Flattr donation methods belong in the FlattrID flag" msgstr "Flattr ཞལ་འདེབས་ཐབས་ལམ་འདི་བཞིན་FlattrID flag ལ་ཐོབ་ཀྱི་ཡོད་།" #: ../fdroidserver/lint.py msgid "Forbidden HTML tags" msgstr "" #: ../fdroidserver/build.py msgid "" "Force build of disabled apps, and carries on regardless of scan problems. " "Only allowed in test mode." msgstr "" "ནུས་མེད་མཉེན་ཆས་ལ་ཐོན་སྐྱེད་ཆེད་དུ་མངགས་ཏེ་བཟོས། འདི་འཚག་རྒྱབ་ཀྱི་དཀའ་ངལ་ཡོད་མིན་ལ་མ་ལྟོས་པར་མུ་" "མཐུད་དུ་འགྲོ་ཐུབ། འདི་ཚོད་ལྟའི་ཚུལ་ཁ་ོནར་ཆོག་མཆན་སྤྲད།." #: ../fdroidserver/build.py #, python-brace-format msgid "Force halting build after {0} sec timeout!" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Found \"{path}\" graphic without metadata for app \"{name}\"!" msgstr "\"{name}\" བརྐོད་རིས་མེད་པའི་མཉེས་ཆས་ཀྱི་རྒྱབ་ལྗོངས་ཡིག་ཆ་\"{path}\"རྙེད་སོང་།!" #: ../fdroidserver/common.py msgid "Found invalid appids in arguments" msgstr "རྩོད་པའི་ནང་ཁུངས་ལྡན་མིན་པའི་appids རྙེད་འདུག" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/common.py msgid "Found invalid versionCodes for some apps" msgstr "མཉེན་ཆས་ཁ་ཤས་ཀྱི་ཁུངས་ལྡན་མིན་པའི་ཐོན་རིམ་ཨང་རྟགས་རྙེད་འདུག" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Found multiple metadata files for {appid}" msgstr "རྒྱབ་ལྗོངས་ཡིག་ཚགས་སྣ་མང་{appid}ནང་ཐོན།" #: ../fdroidserver/index.py msgid "Found multiple signing certificates for repository." msgstr "མཛོད་ཁང་ཆེད་དུ་་མིང་རྟགས་བཀོད་པའི་ལག་ཁྱེར་མང་པོ་རྙེད་འདུག." #: ../fdroidserver/update.py #, python-brace-format msgid "Found multiple signing certificates in {path}" msgstr "{path}ནང་ལ་སྣ་མང་མིང་རྟགས་ཆོག་མཆན་ལག་ཁྱེར་རྙེད་སོང་།" #: ../fdroidserver/index.py msgid "Found no signing certificates for repository." msgstr "མཛོད་ཁང་ཆེད་དུ་མིང་རྟགས་བཀོད་པའི་ལག་ཁྱེར་རྙེད་མ་སོང་།." #: ../fdroidserver/lint.py #, python-format msgid "Found non-file at %s" msgstr "འདི་ལ་%s 1 ཡིག་ཆ་མིན་པ་རྙེད་སོང་།" #: ../fdroidserver/update.py #, python-brace-format msgid "Generated skeleton metadata for {appid}" msgstr "{appid}ཆེད་དུ་རྒྱབ་ལྗོངས་ཡིག་ཚགས་བཟོས།" #: ../fdroidserver/common.py #, python-format msgid "Git checkout of '%s' failed" msgstr "གིཊ་ཕྱིར་འཐེན་'%s 1' ཐུབ་མ་སོང་།" #: ../fdroidserver/common.py msgid "Git clean failed" msgstr "གིཊ་གཙང་བཟོ་ཐུབ་མ་སོང་།" #: ../fdroidserver/common.py msgid "Git fetch failed" msgstr "གིཊ་འཚོལ་ཐུབ་མ་སོང་།" #: ../fdroidserver/common.py msgid "Git remote set-head failed" msgstr "གིཊ་རྒྱང་ཐག་སྒྲིག་འགོ་ཐུབ་མ་སོང་།" #: ../fdroidserver/common.py msgid "Git reset failed" msgstr "གིཊ་སྐྱར་སྒྲིག་ཐུབ་མ་སོང་།" #: ../fdroidserver/common.py msgid "Git submodule sync failed" msgstr "གིཊ་རྒྱ་ཁྱོན་མཉམ་བསྲེ་ཐུབ་མ་སོང་།" #: ../fdroidserver/common.py msgid "Git submodule update failed" msgstr "གིཊ་ཡན་ལག་རྒྱ་ཁྱོན་གསར་བསྒྱུར་ཐུབ་མ་སོང་།" #: ../fdroidserver/common.py msgid "HTTPS must be used with Subversion URLs!" msgstr "" #: ../fdroidserver/index.py msgid "Ignoring package without metadata: " msgstr "རྒྱབ་ལྗོངས་ཡིག་ཆ་མེད་པའི་ཐུམ་སྒྲིལ་ཡ་ལན་མ་བྱས། " #: ../fdroidserver/update.py #, python-brace-format msgid "Ignoring stale cache data for {apkfilename}" msgstr "{apkfilename}ཡིག་ཆ་སྦས་ཁུང་རྙིང་པ་ལ་ཡ་ལན་མ་བྱས་" #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Ignoring {ext} file at '{path}'" msgstr "{ext} ཡིག་ལ་ཡ་ལན་མེད་པ་ '{path}'" #: ../fdroidserver/update.py msgid "Include APKs that are signed with disabled algorithms like MD5" msgstr "MD5ལྟ་བུའི་མཚན་རྟགས་ཡོད་པའི་APKs ནང་ཚུད།" #: ../fdroidserver/common.py msgid "Initialising submodules" msgstr "ཐོག་མིའི་ཡན་ལག་རྒྱ་ཁྱོན།" #: ../fdroidserver/install.py msgid "Install all signed applications available" msgstr "ཡོད་བཞིན་པའི་མིང་རྟགས་བཀོད་པའི་མཉེན་ཆས་ཆ་ཚང་འགྲིག་བཅུག་བྱེད།" #: ../fdroid msgid "Install built packages on devices" msgstr "ཡོ་བྱད་སྒང་གི་ཐུམ་སྒྲིལ་བཟོས་པ་རྣམས་འགྲིག་བཅུག་བྱེད།" #: ../fdroidserver/install.py #, python-format msgid "Installing %s..." msgstr "སྒྲིག་བཅུག་བྱེད་བཞིན་པ།%s 1..." #: ../fdroidserver/install.py #, python-brace-format msgid "Installing '{apkfilename}' on {dev}..." msgstr "'{apkfilename}' སྒྲིག་བཅུག་བྱེད་བཞིན་པ{dev}གྱི་སྒང་ལ་…" #: ../fdroid msgid "Interact with the repo HTTP server" msgstr "རེ་པོ་HTTP ཞབས་ཞུ་འཕྲུལ་ཆས་དང་ཐུགས་ཕྲད།" #: ../fdroidserver/update.py msgid "Interactively ask about things that need updating." msgstr "གསར་བསྒྱུར་བྱེད་དགོས་པའི་རིགས་ལ་སྦས་གསང་མེད་པའི་ཐོག་ནས་གསུངས་རོགས།." #: ../fdroidserver/update.py msgid "Invalid APK" msgstr "ཁུངས་ལྡན་མིན་པའི་APK" #: ../fdroidserver/metadata.py #, python-format msgid "Invalid boolean '%s'" msgstr "ཁུངས་ལྡན་མིན་པའི་boolean '%s 1'" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Invalid build flag at {line} in {linedesc}" msgstr "{linedesc}ནང་གི་ཁུངས་ལྡན་མིན་པའི་བཟོ་དར་{line}" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Invalid build format: {value} in {name}" msgstr "ཁུངས་ལྡན་མིན་པའི་བཟོ་སྐྲུན་སྒྲིག་བཀོད།: {value} ནང་ {name}" #: ../fdroidserver/lint.py msgid "Invalid bulleted list" msgstr "ཚད་ལྡན་མིན་པའི་ཚགས་ཀྱི་ཐོ་གཞུང་།" #: ../fdroidserver/lint.py #, python-format msgid "" "Invalid license tag \"%s\"! Use only tags from https://spdx.org/license-list" msgstr "" "ཁུངས་ལྡན་མིན་པའི་ཆོག་མཆན་ལག་ཁྱེར་སྦྱར་ \"%s 1\"! https://spdx.org/license-list ཁོ་ན་ནས་" "ཡིན་པ་སྦྱར་ཏེ་བེད་སྤྱོད་བྱེད་།" #: ../fdroidserver/lint.py msgid "Invalid link - use [http://foo.bar Link title] or [http://foo.bar]" msgstr "" "ཁུངས་ལྡན་མིན་པའི་སྦྲེལ་མཐུད། - [http://foo.bar Link title] or [http://foo.bar]བེད་སྤྱོད་" "བྱེད།" #: ../fdroidserver/metadata.py #, python-format msgid "Invalid metadata in %s:%d" msgstr "ཁུངས་ལྡན་མིན་པའི་རྒྱབ་ལྗོངས་ཡིག་ཆའི་ནང་།%s 1:%d 2" #: ../fdroidserver/metadata.py msgid "Invalid metadata in: " msgstr "ཁུངས་ལྡན་མིན་པའི་རྒྱབ་ལྗོངས་ཡིག་ཆའི་ནང་: " #: ../fdroidserver/common.py #, python-format msgid "Invalid name for published file: %s" msgstr "པར་སྐྲུན་ཡིག་ཆའི་ཆེད་དུ་ཁུངས་ལྡན་མིན་པའིན་མིང་།: %s 1" #: ../fdroidserver/common.py #, python-brace-format msgid "Invalid package name {0}" msgstr "ཁུངས་ལྡན་མིན་པའི་ཐུམ་སྒྲིལ་གྱི་མིང་།{0}" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Invalid versionCode: \"{versionCode}\" is not an integer!" msgstr "ཁུངས་ལྡན་མིན་པའི་ཐོན་རིམ་ཨང་རྟགས: \"{versionCode}\" གོང་བུ་མ་རེད།!" #: ../fdroidserver/common.py #, python-brace-format msgid "JAR signature failed to verify: {path}" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "JAR signature verified: {path}" msgstr "" #: ../fdroidserver/publish.py ../fdroidserver/update.py #: ../fdroidserver/mirror.py msgid "Java JDK not found! Install in standard location or set java_paths!" msgstr "Java JDK རྙེད་མ་སོང་།! ཚད་ལྡན་གྱི་ས་གནས་ནང་སྒྲིག་བཅུག་བྱེད་པའམ་ཡང་ན་java_paths སྒྲིག!" #: ../fdroidserver/signindex.py msgid "" "Java jarsigner not found! Install in standard location or set java_paths!" msgstr "" "Java jarsigner རྙེད་མ་སོང་། !ཚད་ལྡན་གྱི་ས་གནས་ནང་སྒྲིག་བཅུག་བྱེད་པའམ་ཡང་ན་java_paths སྒྲིག!" #: ../fdroidserver/lint.py msgid "Javascript in HTML src attributes" msgstr "" #: ../fdroidserver/init.py msgid "Keystore for signing key:\t" msgstr "མིང་རྟགས་བཀོད་པའི་ལྡེ་མིག་ཆེད་དུ་སྟོན་པའི་ལྡེ་མིག་གསོག་ཉར་ཁང་གི་ལམ།\t" #: ../fdroidserver/lint.py #, python-brace-format msgid "" "Last used commit '{commit}' looks like a tag, but Update Check Mode is " "'{ucm}'" msgstr "" "ཁས་ལེན་བྱས་པའི་བེད་སྤྱོད་ཐ་མ་ '{commit}' སྦྱར་བ་འདྲ་པོ་འདུག, འོན་ཀྱང་གསར་བསྒྱུར་ཡོད་མེད་འཚོལ་བྱེད་" "ནི།'{ucm}'" #: ../fdroidserver/lint.py #, fuzzy msgid "Liberapay donation methods belong in the LiberapayID flag" msgstr "Flattr ཞལ་འདེབས་ཐབས་ལམ་འདི་བཞིན་FlattrID flag ལ་ཐོབ་ཀྱི་ཡོད་།" #: ../fdroidserver/rewritemeta.py msgid "List files that would be reformatted" msgstr "སྐྱར་དུ་བཀོད་སྒྲིག་བྱེད་དགོས་པའི་ཡག་ཆ་རྣམས་ཀྱི་ཐོ་གཞུང་།" #: ../fdroidserver/build.py msgid "Make the build stop on exceptions" msgstr "དམིགས་བསལ་གྱི་གནས་སྐབས་ལ་ཐོན་སྐྱེད་དེ་བཀག་ཆོག" #: ../fdroidserver/index.py msgid "Malformed repository mirrors." msgstr "བཟོ་ལྟ་མེད་པའི་མཛོད་ཁང་ཤེལ་སྒོ་རྣམས།." #: ../fdroidserver/server.py msgid "Malformed serverwebroot line:" msgstr "བཟོ་ལྟ་ཤོར་བའི་ serverwebroot line:" #: ../fdroidserver/gpgsign.py msgid "Missing output directory" msgstr "ཕྱོགས་དེབ་ཐོན་སྐྱེད་བོར་བརླག" #: ../fdroidserver/lint.py #, python-format msgid "Name '%s' is just the auto name - remove it" msgstr "མིང་། '%s 1' ནི་རང་མིང་ཁོ་ན་རེད་། - མེད་པ་བཟོས།" #: ../fdroidserver/common.py msgid "No 'config.py' found, using defaults." msgstr "'config.py' རྙེད་མ་སོང་།, སོར་བཞག་བེད་སྤྱོད་བྱེད་བཞིན་པ།." #: ../fdroidserver/common.py msgid "No Android SDK found!" msgstr "ཨེན་ཀྲོཌ་ SDK རྙེད་མ་སོང་།!" #: ../fdroidserver/import.py msgid "No android or kivy project could be found. Specify --subdir?" msgstr "ཨེན་ཀྲོཌ་དང་ཡང་ན་ཀི་བི་ལས་འཆར་གང་ཡང་རྙེད་ས་མ་རེད། དམིགས་སྟོན་བྱེད་--subdir?" #: ../fdroidserver/install.py msgid "No attached devices found" msgstr "ཟུར་སྣོན་ཡོ་བྱད་རྙེད་མ་སོང་།" #: ../fdroidserver/metadata.py #, python-brace-format msgid "No commit specified for {versionName} in {linedesc}" msgstr "{linedesc} ནང་གྱི་ {versionName}འདིའི་ཆེད་དུ་ཁས་ལེན་དམིགས་བསལ་གང་ཡང་མིན་འདུག" #: ../fdroidserver/index.py msgid "No fingerprint in URL." msgstr "URL ནང་ལག་མཐིལ་པར་ཤུས་རྙེད་མ་སོང་།." #: ../fdroidserver/common.py msgid "No git submodules available" msgstr "གིཊ་ཡན་ལག་རྒྱ་ཁྱོན་མིན་འདུག" #: ../fdroidserver/import.py msgid "No information found." msgstr "གནས་ཚུལ་རྙེད་མ་སོང་།." #: ../fdroidserver/lint.py msgid "No need to specify that the app is Free Software" msgstr "མཉེས་ཆས་འདི་རིན་མེད་མཉེན་ཆས་ཡིན་པ་དམིགས་སྟོན་བྱེད་དགོས་དོན་མེད་།" #: ../fdroidserver/lint.py msgid "No need to specify that the app is for Android" msgstr "མཉེན་ཆས་འདི་ཨེན་ཀྲོཌ་ཆེད་དུ་ཡིན་པ་དམིགས་སྟོན་བྱེད་དགོས་དོན་མེད།" #: ../fdroidserver/server.py msgid "No option set! Edit your config.py to set at least one of these:" msgstr "" "གདམ་ཀ་མེད་པ་སྒྲིག།! ཁྱེད་རང་གི་config.py འདིའི་ནང་ནས་མ་མཐའ་ཡིན་ཡང་གང་རུང་ཞིག་རྩོམ་སྒྲིག་བྱེད་:" #: ../fdroidserver/common.py msgid "No packages specified" msgstr "ཐུམ་སྒྲིལ་དམིགས་སྟོན་བྱེད་མེད།" #: ../fdroidserver/install.py #, python-format msgid "No signed apk available for %s" msgstr "%s 1ཆེད་དུ་མིང་རྟགས་བཀོད་པའི་ apk མེད།" #: ../fdroidserver/install.py msgid "No signed output directory - nothing to do" msgstr "མིང་རྟགས་མ་བཀོད་པའི་ཕྱོགས་དེབ་ཐོན་སྐྱེད། -བྱ་རྒྱུ་གང་ཡང་མེད།" #: ../fdroidserver/update.py #, python-brace-format msgid "No signing certificates found in {path}" msgstr "{path}མིང་རྟགས་བཀོད་པའི་ཆོག་མཆན་ལག་ཁྱེར་འདིའི་ནང་རྙེད་མ་སོང་།" #: ../fdroidserver/common.py #, python-format msgid "No such package: %s" msgstr "ཐུམ་སྒྲིལ་དེ་འདྲ་མིན་འདུག: %s 1" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/common.py #, python-brace-format msgid "No such versionCode {versionCode} for app {appid}" msgstr "ཐོན་རིམ་ཨང་རྟགས་དེ་འདྲ་མིན་འདུག {versionCode} མཉེན་ཆས་ཆེད་དུ།{appid}" #: ../fdroidserver/verify.py ../fdroidserver/publish.py msgid "No unsigned directory - nothing to do" msgstr "མིང་རྟགས་མ་བཀོད་པའི་ཕྱོགས་དེབ་མིན་འདུག-བྱ་རྒྱུ་གང་ཡང་མེད།" #: ../fdroidserver/signindex.py msgid "Nothing to do" msgstr "བྱ་རྒྱུ་གང་ཡང་མེད་།" #: ../fdroidserver/checkupdates.py #, python-brace-format msgid "Nothing to do for {appid}." msgstr "{appid} ཆེད་དུ་བྱ་རྒྱུ་གང་ཡང་མེད་།." #: ../fdroidserver/init.py #, fuzzy msgid "Now set these in config.py:" msgstr "'sdk_path' འདི་ 'config.py' ནང་སྒྲིག་ཐུབ་མ་སོང་།!" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/update.py #, python-brace-format msgid "OBB file has newer versionCode({integer}) than any APK:" msgstr "OBB ཡིག་ཆ་ལ་ཐོན་རིམ་ཨང་རྟགས་གསར་པ་ཡོད་རེད་། ({integer}) APK གཞན།:" #: ../fdroidserver/update.py msgid "OBB filename must start with \"main.\" or \"patch.\":" msgstr "OBB ཡིག་ཆའི་མིང་ངེས་པར་དུ་\"གཙོ་བོ་\" ཡང་ན \"ལྷན་པ་.\"མཉམ་དུ་འགོ་བཙུགས:" #: ../fdroidserver/update.py msgid "OBB's packagename does not match a supported APK:" msgstr "OBB's ཐུམ་སྒྲིལ་མིང་འདིས་APK རྒྱབ་སྐྱོར་ཡོད་པ་དང་མཐུན་གྱི་མིན་འདུག:" #: ../fdroidserver/common.py #, python-brace-format msgid "Old APK signature failed to verify: {path}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Only PNG and JPEG are supported for graphics, found: {path}" msgstr "PNG དང་ JPEG ཁོ་ན་བརྐོས་རིས་རྒྱབ་སྐྱོར་རྙེད་སོང་། :{path}" #: ../fdroidserver/checkupdates.py msgid "Only print differences with the Play Store" msgstr "མཉེས་ཆས་གསོག་ཉར་ཁང་དང་མི་འདྲ་པ་ཡོད་པ་ཁོ་ནར་པར་ཤུས་བྱེད།" #: ../fdroidserver/checkupdates.py msgid "Only process apps with auto-updates" msgstr "མཉེན་ཆས་ཁོ་ནར་རང་འགུལ་གསར་བསྒྱུར་བྱེད།" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "Options" msgstr "གདམ་ཀ།" #: ../fdroidserver/import.py msgid "Overall license of the project." msgstr "ལས་འཆར་འདིའི་ཁྱོན་ཡོངས་ཀྱི་ཆོག་མཆན་ལག་ཁྱེར།." #: ../fdroidserver/dscanner.py msgid "Override path for repo APKs (default: ./repo)" msgstr "རེ་པོ་APKs ལམ་གྱི་སྒང་ལ་སྐྱར་སྣོན། (སོར་བཞག་: ./repo)" #: ../fdroidserver/common.py #, python-brace-format msgid "Parsing manifest at '{path}'" msgstr "'{path}'འདིའི་ནང་དབྱེ་མཚམས་མངོན་གྱི་འདུག" #: ../fdroidserver/common.py msgid "Password required with username" msgstr "སྤྱོད་མིང་དང་མཉམ་དུ་གསང་ཨང་དགོས།" #: ../fdroidserver/import.py msgid "Path to main Android project subdirectory, if not in root." msgstr "" "གལ་སྲིད་ཆོག་མཆན་ཨ་མའི་ནང་ལ་མེད་ན། ལམ་གྱི་གཙོ་བོ་འདི་ཨེན་ཀྲོཌ་ལས་འཆར་གྱི་ཕྱོགས་དེབ་ཡན་ལག་སྟོན་ཡོད།." msgid "Path to main android project subdirectory, if not in root." msgstr "" "གལ་སྲིད་ཆོག་མཆན་ཨ་མའི་ནང་ལ་མེད་ན། ལམ་གྱི་གཙོ་བོ་འདི་ཨེན་ཀྲོཌ་ལས་འཆར་གྱི་ཕྱོགས་དེབ་ཡན་ལག་སྟོན་ཡོད།." #: ../fdroidserver/init.py msgid "Path to the Android SDK (sometimes set in ANDROID_HOME)" msgstr "ཨེན་ཀྲོཌ་SDK ཀྱི་ལམ། (སྐབས་རེ་ཨེན་ཀྲོཌ_ཁྱིམ་དུ་སྒྲིག་ཡོད།)" #: ../fdroidserver/btlog.py msgid "Path to the git repo to use as the log" msgstr "གིཊ་རེ་པོའི་ཆེད་དུ་བདེ་སྤྱོད་བྱས་པའི་ཐོ་གཞུང་གི་ལམ།" #: ../fdroidserver/init.py msgid "Path to the keystore for the repo signing key" msgstr "རེ་པོ་མིང་རྟགས་བཀོད་པའི་ལྡེ་མིག་ཆེད་དུ་སྟོན་པའི་ལྡེ་མིག་གསོག་ཉར་ཁང་གི་ལམ།" #: ../fdroidserver/dscanner.py msgid "Prepare Drozer to run a scan" msgstr "འཚག་རྒྱབ་འཁོར་སྐྱོད་ཐུབ་པའི་ཆེད་དུ་ཌོ་ཛར་གྲ་སྒྲིག་བྱེད།" msgid "Prepare drozer to run a scan" msgstr "འཚག་རྒྱབ་འཁོར་སྐྱོད་ཐུབ་པའི་ཆེད་དུ་ཌོ་ཛར་གྲ་སྒྲིག་བྱེད།" #: ../fdroidserver/nightly.py msgid "Print the secret variable to the terminal for easy copy/paste" msgstr "ས་ཚིགས་ཀྱི་གསང་ཁྱབ་ངོ་བཤུས་དང་/སྦྱར་བ་སྟབས་བདེ་ཡོང་བའི་ཆེད་དུ་འདྲ་བཤུས་" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Problem with description of {appid}: {error}" msgstr "{appid}འགྲེལ་བཤད་རྒྱབ་རྒྱུར་དཀའ་ངལ། : {error}" #: ../fdroidserver/common.py #, python-brace-format msgid "Problem with xml at '{path}'" msgstr "'{path}'ལ་xml མཉམ་དུ་སྐྱོན་འདུག" #: ../fdroidserver/checkupdates.py msgid "Process auto-updates" msgstr "རང་འགུལ་གྱི་གསར་བསྒྱུར་རྣམས་བྱེད།" #: ../fdroidserver/publish.py ../fdroidserver/update.py #, python-brace-format msgid "Processing {apkfilename}" msgstr "ལས་ཀ་བྱེད་བཞིན་པ་{apkfilename}" #: ../fdroidserver/checkupdates.py ../fdroidserver/scanner.py #, python-brace-format msgid "Processing {appid}" msgstr "ལས་ཀ་བྱེད་བཞིན་པ།{appid}" #: ../fdroidserver/update.py msgid "Produce human-readable XML/JSON for index files" msgstr "མིས་ཀློག་ཐུབ་པའི་XML/JSON ཕྱོགས་སྟོན་གྱི་ཡིག་ཆ་བཟོས།" #: ../fdroidserver/update.py msgid "Produce human-readable index.xml" msgstr "མིས་ཀློག་ཐུབ་པའི་index.xml བཟོས།" #: ../fdroidserver/import.py msgid "Project URL to import from." msgstr "URL ལས་འཆར་ནང་འདྲེན།." #: ../fdroidserver/lint.py msgid "Punctuation should be avoided" msgstr "ཡི་གེའི་བར་རྟགས་རིགས་ངེས་པར་མེད་པ་དགོས་།" #: ../fdroidserver/btlog.py msgid "Push the log to this git remote repository" msgstr "ཐོ་གཞུད་འདི་གིཊ་ཐག་རིང་གི་མཛོད་ཁང་ནང་འབུད་རྒྱག་གཏོང་།" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Pushing binary transparency log to {url}" msgstr "{url}ཆེད་དུ་ཨང་གྲངས་ཀྱི་ཐོ་གཞུང་གསར་བསྒྱུར།" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Pushing to {url}" msgstr "{url}ཕྱོགས་ལ་འབུད་རྒྱབ་རྒྱོབ།" #: ../fdroid msgid "Quickly start a new repository" msgstr "མཛོད་ཁང་གསར་པ་ཞིག་མྱུར་དུ་འགོ་བཙུགས།" #: ../fdroid msgid "Read all the metadata files and exit" msgstr "ཡིག་ཚགས་ཀྱི་རྒྱབ་ལྗོངས་ལོ་རྒྱུས་ཀློག་ནས་ཕྱིར་ཐོན།" #: ../fdroidserver/common.py #, python-brace-format msgid "Reading '{config_file}'" msgstr "ཀློག་བཞིན་པ་། '{config_file}'" #: ../fdroidserver/common.py #, fuzzy, python-brace-format msgid "Reading minSdkVersion failed: \"{apkfilename}\"" msgstr "" "ཐུམ་སྒྲིལ་གྱི་མིང་ཀློག་བཞིནཔ།/ཐོན་རིམ་ཨང་རྟགས་/ཐོན་རིམ་གྱི་མིང་བདེ་སྤྱོད་མེད། APK ཁུངས་ལྡན་མིན།: " "'{apkfilename}'" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #. https://developer.android.com/guide/topics/manifest/manifest-element.html#vname #: ../fdroidserver/common.py #, python-brace-format msgid "" "Reading packageName/versionCode/versionName failed, APK invalid: " "'{apkfilename}'" msgstr "" "ཐུམ་སྒྲིལ་གྱི་མིང་ཀློག་བཞིནཔ།/ཐོན་རིམ་ཨང་རྟགས་/ཐོན་རིམ་གྱི་མིང་བདེ་སྤྱོད་མེད། APK ཁུངས་ལྡན་མིན།: " "'{apkfilename}'" #: ../fdroidserver/update.py #, python-brace-format msgid "Reading {apkfilename} from cache" msgstr "སྦས་ཁུང་ནས་ {apkfilename}ཀློག་བཞིན་པ།" #: ../fdroidserver/stats.py msgid "" "Recalculate aggregate stats - use when changes have been made that would " "invalidate old cached data." msgstr "ཕྱོགས་བསྡོམས་བྱས་པའི་གྲངས་ཐོ་རྣམས་སྐྱར་རྩིས་བྱེད། -བསྒྱུར་བ་འགྲོ་བའི་སྐབས་ལ་བེད་སྤྱོད་བྱེད།." #: ../fdroidserver/common.py msgid "Removing specified files" msgstr "དམིགས་སྟོན་བྱས་པའི་ཡིག་ཆ་རྣམས་མེད་པ་བཟོ་བཞིན་པ།" #: ../fdroidserver/update.py msgid "Rename APK files that do not match package.name_123.apk" msgstr "package.name_123.apk དང་མི་འདྲ་བའི་APK ཡིག་ཆ་དེ་ཚོར་མིང་སྐྱར་ཏུ་བཏགས།" #: ../fdroidserver/update.py msgid "Report on build data status" msgstr "ཐོན་སྐྱེད་ཡིག་ཚགས་གནས་བབས་སྒང་གི་སྙན་ཐོ།" #: ../fdroidserver/build.py msgid "" "Reset and create a brand new build server, even if the existing one appears " "to be ok." msgstr "" "ཡོད་བཞིན་པའི་ཞབས་ཞུ་འཕྲུལ་ཆས་འདི་ལ་སྐྱོན་མེད་པ་ཡིན་རུང་། ཐོན་སྐྱེད་ཞབས་ཞུ་འཕྲུལ་ཆས་གསར་པ་ཞིག་སྐྱར་" "སྒྲིག་དང་བཟོས།." #: ../fdroidserver/nightly.py #, fuzzy, python-brace-format msgid "Resigning {apkfilename} with provided debug.keystore" msgstr "{apkfilename} མཆོང་རྒྱབ་མཉམ་དུ་ཁུངས་ལྡན་མིན་པའི་མིང་རྟགས།" #: ../fdroidserver/update.py msgid "Resize all the icons exceeding the max pixel size and exit" msgstr "པར་གྱི་རྒྱུ་ཆེ་ཆུང་ཚད་ལས་བརྒལ་ན་ཚད་གཞི་ཡང་སྐྱར་འགྱུར་བ་བཏང་ནས་ཕྱིར་ཐོན།" #: ../fdroidserver/common.py msgid "Restrict output to warnings and errors" msgstr "ཡིག་ཚགས་ལ་ཉེན་བརྡ་དང་སྐྱོན་ཅན་རྣམས་དམ་བསྒྲགས་བྱེད།" #: ../fdroid msgid "Rewrite all the metadata files" msgstr "ཡིག་ཚགས་ཀྱི་རྒྱབ་ལྗོངས་ལོ་རྒྱུས་ཚང་མ་སྐྱར་ཟིན།" #: ../fdroidserver/rewritemeta.py msgid "Rewrite to a specific format: " msgstr "བཀོད་སྒྲིག་འདི་ག་རང་ལ་སྐྱར་བྲིས་བྱེད།: " #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Rewriting '{appid}'" msgstr "སྐྱར་བྲིས། '{appid}'" #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Rewriting '{appid}' to '{path}'" msgstr "སྐྱར་བྲིས '{appid}' དེ་ནས། '{path}'" #: ../fdroidserver/lint.py msgid "Run rewritemeta to fix formatting" msgstr "བཀོད་སྒྲིག་འདི་ག་རང་ལ་སྐྱར་བྲིས་བྱེད།" #: ../fdroidserver/server.py ../fdroidserver/upload.py msgid "Running first pass with MD5 checking disabled" msgstr "MD5 ཚོད་ལྟ་བེད་སྤྱོད་མེད་པ་དང་མཉམ་དུ་ཐེངས་དང་པོ་འཁོར་སྐྱོད་བྱེད་བཞིན་པ།" #: ../fdroidserver/mirror.py #, fuzzy, python-brace-format msgid "Running wget in {path}" msgstr "སྐྱར་བྲིས་ཡོད་།{path}" #: ../fdroidserver/dscanner.py msgid "Scan only the latest version of each package" msgstr "ཐུམ་སྒྲིལ་རེ་རེ་བའི་ཐོན་རིམ་གསར་ཤོས་གཅིག་པུ་འཚག་རྒྱབ།" #: ../fdroid msgid "Scan the source code of a package" msgstr "ཐུམ་སྒྲིལ་བྱས་པའི་འབྱུང་ཁུངས་ཨང་རྟགས་འཚག་རྒྱབ" #: ../fdroidserver/scanner.py #, fuzzy, python-brace-format msgid "Scanner found {count} problems in {appid}:" msgstr "འཚག་རྒྱབ་ལ་སྐྱོན་རྙེད་པ།" #: ../fdroidserver/scanner.py #, fuzzy, python-brace-format msgid "Scanner found {count} problems in {appid}:{versionCode}:" msgstr "འཚག་རྒྱབ་ལ་སྐྱོན་རྙེད་པ།" #: ../fdroidserver/build.py msgid "Scanner found {} problem" msgid_plural "Scanner found {} problems" msgstr[0] "འཚག་རྒྱབ་ལ་སྐྱོན་རྙེད་པ།" #: ../fdroidserver/common.py msgid "Set clock to that time using:" msgstr "" #: ../fdroidserver/build.py #, python-brace-format msgid "Set open file limit to {integer}" msgstr "" #: ../fdroid msgid "Set up an app build for a nightly build repo" msgstr "མཚན་མོའི་རེ་པོ་བཟོ་སྐྲུན་ཆེད་དུ་སྒྲིག་བཀོད་བྱས་པའི་མཉེན་ཆས་བཟོ་སྐྲུན།" #: ../fdroidserver/build.py msgid "Setting open file limit failed: " msgstr "" #: ../fdroidserver/build.py #, python-brace-format msgid "Setting {0} sec timeout for this build" msgstr "" #: ../fdroidserver/build.py msgid "Setup an emulator, install the APK on it and perform a Drozer scan" msgstr "" "གློག་ཀླད་ལད་མོ་མཁན་ཞིག་སྒྲིག འདིའི་སྒང་ལ་ APK ནང་འགྲིག་བཅུག་བྱེད་དུ་བཅུག་ནས་ཌོ་ཛར་འཚག་རྒྱབ་འགོ་" "བཙུགས་བྱེད།" msgid "Setup an emulator, install the apk on it and perform a drozer scan" msgstr "" "གློག་ཀླད་ལད་མོ་མཁན་ཞིག་སྒྲིག འདིའི་སྒང་ལ་apk ནང་འགྲིག་བཅུག་བྱེད་དུ་བཅུག་ནས་ཌོ་ཛར་འཚག་རྒྱབ་འགོ་བཙུགས་" "བྱེད།" #: ../fdroid msgid "Sign and place packages in the repo" msgstr "མིང་རྟགས་བཀོད་ནས་ཐུམ་སྒྲིལ་རྣམས་རེ་པོ་ནང་བཞག" #: ../fdroid msgid "Sign indexes created using update --nosign" msgstr "གསར་བསྒྱུར་བེད་སྤྱོད་བྱས་ཏེ་བཟོས་པའི་མིང་རྟགས་བརྡ་སྟོན། --མིང་རྟགས་མེད།" #: ../fdroidserver/build.py msgid "Skip scanning the source code for binaries and other problems" msgstr "འབྱུང་ཁུངས་ཨ་རྟགས་དང་དཀའ་ངལ་གཞན་རྣམས་འཚག་རྒྱབ་མ་དགོས་པར་མཆོང་།" #: ../fdroidserver/update.py #, python-brace-format msgid "Skipping '{apkfilename}' with invalid signature!" msgstr "'{apkfilename}'མཆོང་ནས་ཁུངས་ལྡན་མ་ཡིན་པའི་མིང་རྟགས་དང་མཉམ་དུ།!" #: ../fdroidserver/update.py #, python-brace-format msgid "Skipping index generation for {appid}" msgstr "{appid}གྱི་ཆེད་དུ་མཆོང་བའི་མི་རབས་ཀྱི་ཕྱོགས་སྟོན།" #: ../fdroidserver/update.py #, python-brace-format msgid "Skipping {apkfilename} with invalid signature!" msgstr "{apkfilename} མཆོང་རྒྱབ་མཉམ་དུ་ཁུངས་ལྡན་མིན་པའི་མིང་རྟགས།!" #: ../fdroidserver/scanner.py #, python-brace-format msgid "Skipping {appid}: disabled" msgstr "མཆོང་བཞིན་པ་ {appid}: བེད་མེད།" #: ../fdroidserver/scanner.py #, python-brace-format msgid "Skipping {appid}: no builds specified" msgstr "མཆོང་བཞིན་པ་ {appid}: བཟོ་སྐྲུན་དམིགས་སྟོན་མིན་འདུག" #: ../fdroidserver/server.py ../fdroidserver/upload.py msgid "Specify a local folder to sync the repo to" msgstr "བསྟི་གནས་ཀྱི་ཡིག་ཁུག་གཅིག་ཁ་ཕྱེས་ནས་རེ་པོ་འདི་ལ་མཉམ་བསྲེས།" #: ../fdroidserver/server.py ../fdroidserver/upload.py msgid "Specify an identity file to provide to SSH for rsyncing" msgstr "rsync གྱི་ཆེད་དུ་SSH འདི་ངོ་ཐག་ཆོད་པའི་ཡིག་ཆ་ཞིག་དམིགས་སུ་བཀར་ནས་སྟེར།" #: ../fdroidserver/update.py msgid "Specify editor to use in interactive mode. Default " msgstr "སྒྲིག་བཀོད་པར་དམིགས་སྟོན་བྱས་ནས་ལན་འདེབས་ཀྱི་ཚུལ་འདི་བེད་སྤྱོད་བྱེད་ སོར་བཞག " #, c-format msgid "Specify editor to use in interactive mode. Default %s" msgstr "སྒྲིག་བཀོད་པར་དམིགས་སྟོན་བྱས་ནས་ལན་འདེབས་ཀྱི་ཚུལ་འདི་བེད་སྤྱོད་བྱེད་ སོར་བཞག %s 1" #: ../fdroidserver/update.py #, python-brace-format msgid "Specify editor to use in interactive mode. Default is {path}" msgstr "སྒྲིག་བཀོད་པར་དམིགས་སྟོན་བྱས་ནས་ལན་འདེབས་ཀྱི་ཚུལ་འདི་བེད་སྤྱོད་བྱེད་ སོར་བཞག་ནི་{path}" #: ../fdroidserver/build.py msgid "Specify that we're running on the build server" msgstr "ང་ཚོས་ཐོན་སྐྱེད་ཞབས་ཞུ་འཕྲུལ་ཆས་འདིའི་སྒང་ལ་འཁོར་སྐྱོད་བྱེད་བཞིན་གསལ་སྟོན་བྱེད།" #: ../fdroidserver/nightly.py msgid "Specify which debug keystore file to use." msgstr "" #: ../fdroidserver/common.py msgid "Spew out even more information than normal" msgstr "ནམ་རྒྱུན་ལས་ཀྱང་མང་བའི་གནས་ཚུལ་ཕྱིར་སྟོན།" #: ../fdroidserver/nightly.py #, fuzzy, python-brace-format msgid "Striping mystery signature from {apkfilename}" msgstr "{apkfilename}ཡིག་ཆ་སྦས་ཁུང་རྙིང་པ་ལ་ཡ་ལན་མ་བྱས་" #: ../fdroidserver/lint.py #, python-format msgid "Summary '%s' is just the app's name" msgstr "སྙིང་བསྔུས་ '%s 1' ནི་མཉེན་ཆས་ཀྱི་མིང་ཞིག་རེད་།" #: ../fdroidserver/lint.py #, python-brace-format msgid "Summary of length {length} is over the {limit} char limit" msgstr "སྙིང་བསྔུས་ཀྱི་རིང་ཐུང་། {length} charཚད་{limit} ལས་བརྒལ་འདུག" #: ../fdroidserver/common.py #, python-brace-format msgid "System clock is older than date in {path}!" msgstr "" #: ../fdroidserver/build.py msgid "" "Test mode - put output in the tmp directory only, and always build, even if " "the output already exists." msgstr "" "ཚོད་ལྟའི་ཚུལ་-གལ་སྲིད་ཡིག་ཚགས་འདི་སྔོན་ཚོད་ནས་ཡོད་ནའང་། ཡིག་ཚགས་འདི་སྐབས་ཕྲལ་གྱི་ཕྱོགས་དེབ་ཁོ་ནའི་" "ནང་ལ་བླུགས་པ་དང་རྟག་ཏུ་ཐོན་སྐྱེད་བཟོས།." #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/update.py #, python-brace-format msgid "The OBB version code must come after \"{name}.\":" msgstr "OBB ཐོན་རིམ་ཨང་རྟགས་འདི་ངེས་པར་དུ་ \"{name}\"གྱི་རྗེས་སུ་་བྱུང་བ་རེད་།:" #: ../fdroidserver/btlog.py msgid "The base URL for the repo to log (default: https://f-droid.org)" msgstr "གཞི་རྩའི་URL དེ་རེ་པོ་ཡི་ཐོ་གཞུང་བཀོད་པའི་ཆེད་དུ་(སོར་བཞག: https://f-droid.org)" #: ../fdroidserver/mirror.py msgid "The directory to write the mirror to" msgstr "" #: ../fdroidserver/server.py msgid "The only commands currently supported are 'init' and 'update'" msgstr "ལག་བསྟར་བྱེད་རྒྱུར་བཀའ་གཏོང། ཡང་ན་'init'འམ་ཡང་ན་ 'གསར་བསྒྱུར།'" #: ../fdroidserver/index.py msgid "The repository's fingerprint does not match." msgstr "མཛོད་ཁང་གི་མཛུབ་མཐིལ་དང་མཐུན་གྱི་མིན་འདུག." #: ../fdroidserver/common.py msgid "The repository's index could not be verified." msgstr "མཛོད་ཁང་གི་ཕྱོགས་སྟོན་ར་སྤྲོད་ཐུབ་མ་སོང་།." #: ../fdroidserver/server.py #, python-brace-format msgid "The root dir for local_copy_dir \"{path}\" does not exist!" msgstr "dir གྱི་རྩ་བ་ for local_copy_dir \"{path}\" མིན་འདུག!" #: ../fdroidserver/nightly.py msgid "The the file to be included in the repo (path or glob)" msgstr "(path or glob)རེ་པོ་ནང་ཚུད་པའི་ཡིག་ཆ།" #: ../fdroidserver/publish.py msgid "There is a keyalias collision - publishing halted" msgstr "ལྡེ་མིག་གཞན་ལ་སྐྱོན་ཆ་འདུག། -པར་སྐྲུན་བཀག" #: ../fdroidserver/import.py #, python-format msgid "This repo already has local metadata: %s" msgstr "རེ་པོ་འདི་ལ་སྔོན་ཚོད་ནས་ས་གནས་ཀྱི་རྒྱབ་ལྗོངས་ཡིག་ཆ་འདུག: %s 1" #: ../fdroidserver/server.py ../fdroidserver/upload.py msgid "" "To use awsbucket, awssecretkey and awsaccesskeyid must also be set in config." "py!" msgstr "" "awsbucket, awssecretkey དང་། awsaccesskeyid བེད་སྤྱོད་བྱེད་པའི་ཆེད་དུ་ config.py ནང་དུ་" "ངེས་པར་དུ་སྒྲིག་དགོས།!" #: ../fdroidserver/lint.py msgid "UCM is set but it looks like checkupdates hasn't been run yet" msgstr "UCMསྒྲིག་བཀོད་བྱས་ཟིན་ཡང་གསར་བསྒྱུར་འཚོལ་བ་དེ་འགོ་འཛུགས་མིན་འདུག" #: ../fdroidserver/lint.py msgid "URL shorteners should not be used" msgstr "URL ཐུང་དུ་གཏོང་མཁན་ངེས་པར་དུ་བེད་སྤྱོད་བྱེད།" #: ../fdroidserver/metadata.py msgid "URL title is just the URL, use brackets: [URL]" msgstr "URL འགོ་བརྗོད་དེ་URL རང་རེད་། གུག་རྟགས་བེད་སྤྱོད་།: [URL]" #: ../fdroidserver/lint.py #, python-brace-format msgid "URL {url} in Description: {error}" msgstr "URL {url} ནང་འགྲེལ་བཤད་རྒྱབ་པ་: {error}" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Unexpected text on same line as {field} in {linedesc}" msgstr "{linedesc}ནང་། {field}་ཁ་ཕྱོགས་དེ་ག་རང་ནང་རེ་བ་མ་བྱས་པའི་ཡིག་ཚགས་" #: ../fdroid msgid "Unknown exception found!" msgstr "ཆ་རྒྱུས་མེད་པའི་དམིགས་བསལ་ཞིག་རྙེད་སོང་།!" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vname #: ../fdroidserver/lint.py #, python-brace-format msgid "Unknown file '{filename}' in build '{versionName}'" msgstr "ངོས་འཛིན་མི་ཐུབ་པའི་ཡིག་ཆ། '{filename}' བཟོ་སྐྲུན་གྱི་ནང་། '{versionName}'" #: ../fdroidserver/metadata.py #, python-format msgid "Unknown metadata format: %s" msgstr "ངོས་འཛིན་མ་བྱས་པའི་རྒྱབ་ལྗོངས་ཡིག་ཆའི་སྒྲིག་བཀོད།:%s 1" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Unknown metadata format: {path}" msgstr "ངོས་འཛིན་མི་ཐུབ་པའི་རྒྱབ་ལྗོངས་ཡིག་ཆའི་སྒྲིག་བཀོད། : {path}" #: ../fdroidserver/common.py msgid "Unknown version of aapt, might cause problems: " msgstr "aapt གྱི་ངོས་འཛིན་མ་ཐུབ་པའི་ཐོན་རིམ། དཀའ་ངལ་ཕྲད་སྲིད་པ།: " #: ../fdroidserver/lint.py msgid "Unlinkified link - use [http://foo.bar Link title] or [http://foo.bar]" msgstr "" "སྦྲེལ་མཐུད་བྱེད་མི་ཐུབ་པའི་སྦྲེལ་མཐུད། -བེད་སྤྱོད། [http://foo.bar Link title] or [http://foo." "bar]" #: ../fdroidserver/lint.py msgid "Unnecessary leading space" msgstr "དགོས་མེད་ཀྱི་སྣེ་ཁྲིད་བར་མཚམས།" #: ../fdroidserver/lint.py msgid "Unnecessary trailing space" msgstr "དགོས་མེད་ཀྱི་རྫེས་ཤུལ་བར་མཚམས།" #: ../fdroidserver/metadata.py msgid "Unrecognised app field: " msgstr "ངོས་འཛིན་མ་ཐུབ་པའི་མཉེན་ཆས་རྭ་བ།: " #: ../fdroidserver/metadata.py #, python-brace-format msgid "Unrecognised field '{field}' in {linedesc}" msgstr "{linedesc}ནང་ངོས་འཛིན་མ་ཐུབ་པའི་རྭ་བ།{field}" #: ../fdroidserver/update.py #, python-brace-format msgid "Unsupported file type \"{extension}\" for repo graphic" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Unsupported graphics file found: {path}" msgstr "རྒྱབ་སྐྱོར་མེད་པའི་བརྐོས་རིས་ཡིག་ཆ་རྙེད་སོང་།: {path}" #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Unsupported metadata format, use: --to [{supported}]" msgstr "རྒྱབ་སྐྱོར་མེད་པའི་རྒྱབ་ལྗོངས་ཡིག་ཆའི་འགྲོ་ལུགས། བེད་སྤྱོད་: --to [{supported}]" #: ../fdroidserver/metadata.py msgid "Unterminated ]" msgstr "མེད་པ་མ་ཆགས་པ།]" #: ../fdroidserver/metadata.py msgid "Unterminated ]]" msgstr "མེད་པ་མ་ཆགས་པ་]]" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Unterminated build in {name}" msgstr "མེད་པ་མ་ཆགས་པའི་བཟོ་སྐྲུན་ནང་།{name}" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Unterminated continuation in {name}" msgstr "{name}ནང་གི་མེད་པ་མ་ཆགས་པའི་མུ་མཐུད་པ།" #: ../fdroidserver/lint.py #, python-format msgid "Unused extlib at %s" msgstr "བེད་སྤྱོད་མེད་པའི་ extlib at %s 1" #: ../fdroidserver/lint.py #, python-format msgid "Unused file at %s" msgstr "%s 1 དེ་ལ་བེད་སྤྱོད་མེད་པའི་ཡིག་ཆ།" #: ../fdroidserver/lint.py msgid "Update Check Name is set to the known app id - it can be removed" msgstr "མཉེན་ཆས་ཁ་བྱང་ནང་ལ་གསར་བསྒྱུར་འཚོལ་བའི་མིང་སྒྲིག་ཚར་འདུག -འདི་སུབས་ཆོག་གི་རེད།" #: ../fdroid msgid "Update repo information for new packages" msgstr "ཐུམ་སྒྲིལ་གསར་པའི་ཆེད་དུ་རེ་པོ་གནས་ཚུལ་གསར་བསྒྱུར་བྱེད།" #: ../fdroid msgid "Update the binary transparency log for a URL" msgstr "URLཆེད་དུ་ཨང་གྲངས་ཀྱི་ཐོ་གཞུང་གསར་བསྒྱུར།" #: ../fdroid msgid "Update the stats of the repo" msgstr "རེ་པོའི་གྲངས་ཐོ་རྣམས་གསར་བསྒྱུར་བྱེད།" #: ../fdroidserver/update.py ../fdroidserver/build.py msgid "Update the wiki" msgstr "ཝི་ཀི་གསར་བསྒྱུར་བྱེད།" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "Usage" msgstr "བེད་སྤྱོད།" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "Usage: %s\n" msgstr "བེད་སྤྱོད།:%s 1\n" #: ../fdroidserver/lint.py msgid "Use /HEAD instead of /master to point at a file in the default branch" msgstr "བེད་སྤྱོད།/HEAD གྱི་ཚབ་ཏུ།/ སོར་བཞག་ཡན་ལག་ནང་དུ་ཡོད་པའི་དོན་ཚན་ཨ་མ།" #: ../fdroidserver/update.py msgid "Use `fdroid update -c` to create it." msgstr "`fdroid update -c`བེད་སྤྱོད་བྱས་ནས་འདི་བཟོས།." #: ../fdroidserver/build.py msgid "Use build server" msgstr "ཐོན་སྐྱེད་ཞབས་ཞུ་འཕྲུལ་ཆས་བེད་སྤྱོད་བྱེད།" #: ../fdroidserver/update.py msgid "Use date from APK instead of current time for newly added APKs" msgstr "" "APK རང་གི་ཚེས་གྲངས་དེ་བེད་སྤྱོད་བྱས་པ་ལས་ཁ་སྣོན་བྱས་པའི་ APKs གསར་པའི་དུས་ཚོས་བེད་སྤྱོད་མ་བྱེད།" msgid "Use date from apk instead of current time for newly added apks" msgstr "" "apk རང་གི་ཚེས་གྲངས་དེ་བེད་སྤྱོད་བྱས་པ་ལས་ཁ་སྣོན་བྱས་པའི་apk གསར་པའི་དུས་ཚོས་བེད་སྤྱོད་མ་བྱེད།" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Using \"{path}\" for configuring s3cmd." msgstr "" #: ../fdroidserver/common.py msgid "" "Using Java's jarsigner, not recommended for verifying APKs! Use apksigner" msgstr "" #: ../fdroidserver/init.py #, fuzzy, python-brace-format msgid "Using existing keystore \"{path}\"" msgstr "སྐྱར་བྲིས་ཡོད་།{path}" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Using s3cmd to sync with: {url}" msgstr "s3cmd བེད་སྤྱོད་བྱས་ནས་: {url}1དང་མཉམ་དུ་sync" #: ../fdroid msgid "Valid commands are:" msgstr "ཁུངས་ལྡན་གྱི་བཀའ་ཁྱབ་ནི།:" #: ../fdroid msgid "Verify the integrity of downloaded packages" msgstr "ཕབ་ལེན་བྱས་པའི་ཐུམ་སྒྲིལ་གྱི་སྤུས་ཚད་ར་སྤྲོད།" #: ../fdroidserver/index.py msgid "Verifying index signature:" msgstr "" #: ../fdroid msgid "Warn about possible metadata errors" msgstr "ཡིག་ཚགས་ཀྱི་རྒྱབ་ལྗོངས་ལོ་རྒྱུས་སྐྱོན་སྲིད་པ་རྣམས་པ་ཉེན་བརྡ་གཏོང་།" #: ../fdroidserver/update.py msgid "" "When configured for signed indexes, create only unsigned indexes at this " "stage" msgstr "" "བརྡ་སྟོན་པའི་མིང་རྟགས་དེ་སྒྲིག་བཀོད་བྱས་ཚར་ན། གནས་སྐབས་མིང་རྟགས་མ་བཀོད་པའི་བརྡ་སྟོན་རྣམས་བཟོས།" msgid "X.509 'Distiguished Name' used when generating keys" msgstr "X.509 'ཁྱད་པར་ཅན་གྱི་མིང་' ལྡེ་མིག་བཟོས་པའི་སྐབས་ལ་བེད་སྤྱོད་བྱེད།" #: ../fdroidserver/init.py msgid "X.509 'Distinguished Name' used when generating keys" msgstr "X.509 'ཁྱད་པར་ཅན་གྱི་མིང་' ལྡེ་མིག་བཟོས་པའི་སྐབས་ལ་བེད་སྤྱོད་བྱེད།" #: ../fdroidserver/common.py msgid "You can use ANDROID_HOME to set the path to your SDK, i.e.:" msgstr "ཁྱེད་རང་གིས་ཨེན་ཀྲོཌ་མདུན་ངོས་བེད་སྤྱོད་བྱས་ནས་ཁྱེད་རང་གི་SDKའགྲོ་ལམ་སྒྲིག་བཀོད་བྱེད། དེ་ནི།:" #: ../fdroidserver/nightly.py #, python-brace-format msgid "adding IdentityFile to {path}" msgstr "{path}ལ་ངོས་འཛིན་ཡིག་ཆ་ཁ་སྣོན་བྱེད་བཞིན་པ།" #: ../fdroidserver/update.py #, python-brace-format msgid "adding to {name}: {path}" msgstr "{name}ལ་ཁ་སྣོན་བྱེད།: {path}" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "ambiguous option: %(option)s could match %(matches)s" msgstr "གསལ་ཁ་མེད་པའི་གདམ་ཀ: %(option)s མཐུན་མི་སོང་།%(matches)s" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "ambiguous option: %s (%s?)" msgstr "གསལ་ཁ་མེད་པའི་གདམ་ཀ:%s 1 (%s 2?)" #: ../fdroidserver/lint.py ../fdroidserver/rewritemeta.py msgid "applicationId in the form APPID" msgstr "APPID བཀོད་པའི་ནང་གི་མཉེས་ཆས་ཁ་བྱང་།" #: ../fdroidserver/checkupdates.py msgid "applicationId to check for updates" msgstr "མཉེས་ཆས་ཁ་བྱང་རྒྱུད་གསར་བསྒྱར་ཡོད་མིན་ལྟོས།" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/verify.py ../fdroidserver/publish.py #: ../fdroidserver/dscanner.py ../fdroidserver/build.py #: ../fdroidserver/scanner.py ../fdroidserver/install.py msgid "applicationId with optional versionCode in the form APPID[:VERCODE]" msgstr "མཉེན་ཆས་ཀྱི་ངོ་བོ་དང་མཉམ་དུ་གདམ་ཀ་ཅན་གྱི་ཐོན་རིམ་ཨང་རྟགས་APPID[:VERCODE]" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "argument \"-\" with mode %r" msgstr "རྩོད་པ།\"-\" འགྲོ་ལུགས་འདི་དང་མཉམ་དུ། %r 1" #: ../fdroidserver/nightly.py msgid "attempting bare ssh connection to test deploy key:" msgstr "ཕྱོགས་སྐྱོད་ལྡེ་མིག་ཚོད་ལྟ་ལ་bare ssh མཐུད་ཀ་་རྒྱབ་བཞིན་པ།:" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "can't open '%s': %s" msgstr "ཁ་ཕྱེས་ཐུབ་མ་སོང་།'%s 1': %s 2" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "cannot have multiple subparser arguments" msgstr "subparser རྩོད་པ་དུ་མ་ཡོད་ཐབས་མེད།" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "cannot merge actions - two groups are named %r" msgstr "བྱ་བ་ཟླ་སྒྲིལ་བཏང་ཐུབ་མ་སོང་། - སྡེ་ཚན་གཉིས་ཀྱི་མིང་ལ་%r 1" #: ../fdroidserver/nightly.py msgid "cannot publish update, did you set the deploy key?" msgstr "པར་སྐྲུན་གསར་བསྒྱུར་བྱེད་མི་ཐུབ། ཁྱེད་ཀྱིས་ཕྱོགས་སྐྱོད་ལྡེ་མིག་སྒྲིག་བཀོད་བྱེད་ཡོད་དམ།?" #: ../fdroidserver/nightly.py #, python-brace-format msgid "cloning {url}" msgstr "འདྲ་བཟོས་{url}" #: ../fdroidserver/server.py msgid "command to execute, either 'init' or 'update'" msgstr "ལག་བསྟར་བྱེད་རྒྱུར་བཀའ་གཏོང། ཡང་ན་'init'འམ་ཡང་ན་ 'གསར་བསྒྱུར།'" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "complex" msgstr "མགོ་རྙོག" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "conflicting option string: %s" msgid_plural "conflicting option strings: %s" msgstr[0] "ཚིག་སྒྲུབ་ཀྱི་གདམ་ཀའི་རྙོག་ཕྲ།: %s 1" #: ../fdroidserver/nightly.py #, python-brace-format msgid "copying {apkfilename} into {path}" msgstr "{path} ནང་ལ་ {apkfilename}ཤུས་བཞིན་པ།" #: ../fdroidserver/nightly.py #, python-brace-format msgid "created {path}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "deleting: repo/{apkfilename}" msgstr "སུབ་བཞིན་པ།:རེ་པོ་/{apkfilename}" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "dest= is required for options like %r" msgstr "dest= ནི་གདམ་ཀ་འདི་འདྲ་ལ་%r 1དགོས་པ་ཡོད།" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "expected %s argument" msgid_plural "expected %s arguments" msgstr[0] "ཚོད་དཔག་བྱེད་པའི་%s 1 རྩོད་པ་" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "expected at least one argument" msgstr "མ་མཐའ་ཡིན་ནའང་རེ་བ་བྱེད་པའི་རྩོད་པ།" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "expected at most one argument" msgstr "རེ་བ་བྱས་པའི་རྩོད་པ་ཆེ་ཤེོས་གཅིག" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "expected one argument" msgstr "རེ་བ་བྱས་པའི་རྩོད་པ་གཅིག" #: ../fdroid msgid "fdroid [-h|--help|--version] []" msgstr "བེད་སྤྱོད་: ཨེཕ་རོཌ་ [-h|-རོགས་པ་|--ཐོན་རིམ་] []" #: ../fdroid #, fuzzy msgid "fdroid [] [-h|--help|--version|]" msgstr "བེད་སྤྱོད་: ཨེཕ་རོཌ་ [-h|-རོགས་པ་|--ཐོན་རིམ་] []" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "floating-point" msgstr "གཡེང་ཚེག" #: ../fdroidserver/metadata.py msgid "force errors to be warnings, or ignore" msgstr "སྐྱོན་ཤོར་བ་ལ་ཉེན་བརྡ་ངེས་པར་དུ་གཏོང་དགོས་པ་དང་། ཡང་ན་ཡ་མ་བྱེད།" #: ../fdroidserver/metadata.py #, fuzzy msgid "force metadata errors (default) to be warnings, or to be ignored." msgstr "སྐྱོན་ཤོར་བ་ལ་ཉེན་བརྡ་ངེས་པར་དུ་གཏོང་དགོས་པ་དང་། ཡང་ན་ཡ་མ་བྱེད།" #: ../fdroidserver/common.py #, fuzzy msgid "git svn clone failed" msgstr "གིཊ་གཙང་བཟོ་ཐུབ་མ་སོང་།" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "ignored explicit argument %r" msgstr "དངོས་སུ་རྩོད་པ་པ་ལ་ཡ་ལན་མེད། %r 1" #: ../fdroidserver/index.py msgid "index-v1 must have a signature, use `fdroid signindex` to create it!" msgstr "index-v1 ངེས་པར་དུ་མིང་རྟགས་དགོས། བེད་སྤྱོད་`fdroid signindex`འདི་བཟོས་པ་རེད།!" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "integer" msgstr "གོང་བུ།" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "invalid %(type)s value: %(value)r" msgstr "ཁུངས་ལྡན་མིན་པ་ %(type)s value: %(value)r" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "invalid choice: %(value)r (choose from %(choices)s)" msgstr "ཁུངས་ལྡན་མིན་པའི་གདམ་ཀ: %(value)r (དེ་ནས་གདམ་ཀ་%(choices)s)" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "invalid conflict_resolution value: %r" msgstr "ཁུངས་ལྡན་མིན་པའི་རྙོག་ཕྲ།_resolution value: %r" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "" "invalid option string %(option)r: must start with a character " "%(prefix_chars)r" msgstr "" "ཁུངས་ལྡན་མིན་པའི་ཚིག་སྒྲུབ་གདམ་ཀ། %(option)r: ཁྱད་ཆོས་དང་མཉམ་དུ་འགོ་བཙུགས། " "%(prefix_chars)r" #: ../fdroidserver/server.py #, python-brace-format msgid "" "local_copy_dir does not end with \"fdroid\", perhaps you meant: \"{path}\"" msgstr "local_copy_dir \"fdroid\"གིས་མཇུག་སྐྱོང་མིན་འདུག་ : \"{path}1\"" #: ../fdroidserver/server.py msgid "local_copy_dir must be an absolute path!" msgstr "local_copy_dir ནི་ངེས་པར་དུ་མཐའ་མའི་འགྲོ་ལམ་དེ་ཆགས་ཡོད།!" #: ../fdroidserver/server.py msgid "local_copy_dir must be directory, not a file!" msgstr "local_copy_dir ངེས་པར་ཕྱོགས་དེབ་ཡིན་དགོས། ཡིག་ཆ་མ་རེད།!" #: ../fdroidserver/index.py #, python-format msgid "mirror '%s' does not end with 'fdroid'!" msgstr "མེ་ལོང་། '%s 1' 'fdroid'དང་མཉམ་དུ་མཇུག་སྐྱོང་མི་ཐུབ།!" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "mutually exclusive arguments must be optional" msgstr "ནང་ཕན་ཚུན་རྩོད་པ་དེ་གདམ་ཀ་ཅན་ངེས་པར་དུ་བཞག་དགོས་།" #: ../fdroidserver/mirror.py #, fuzzy, python-brace-format msgid "no \"icon\" in {appid}" msgstr "ལས་ཀ་བྱེད་བཞིན་པ།{appid}" #: ../fdroidserver/signatures.py msgid "no APK supplied" msgstr "APK མཁོ་སྤྲོད་མིན་འདུག" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "no such option: %s" msgstr "གདམ་ཀ་དེ་འདྲ་མིན་འདུག: %s" #: ../fdroid msgid "no version info found!" msgstr "ཆ་རྒྱུས་མེད་པའི་དམིགས་བསལ་ཞིག་རྙེད་སོང་།!" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "not allowed with argument %s" msgstr "རྩོད་པ་དང་མཉམ་དུ་ཆོག་མཆན་མེད། %s 1" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "one of the arguments %s is required" msgstr "རྩོད་པ་གཅིག་དགོས་ཀྱི་ཡོད། %s 1" #: ../fdroidserver/index.py ../fdroidserver/common.py msgid "only accepts strings, lists, and tuples" msgstr "ཚིག་སྒྲུབ་དང་ཐོ་གཞུང་། ཡིག་ཚགས་ཁོ་ན་ངོས་ལེན་བྱེད།" #: ../fdroidserver/install.py #, python-format msgid "option %s: If you really want to install all the signed apps, use --all" msgstr "" "གདམ་ཀ %s 1: གལ་ཏེ་ཁྱེད་ཀྱིས་མིང་རྟགས་བཀོད་པའི་མཉེན་ཆས་རིགས་ཚང་མ་ངེས་པར་དུ་སྒྲིག་བཅུག་བྱེད་འདོད་" "ཡོད་། བེད་སྤྱོད་ --ཚང་མ།" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "option %s: invalid %s value: %r" msgstr "གདམ་ཀ %s 1: ཁུངས་ལྡན་མིན་པ་ %s 2 རིན་ཐང་།: %r 3" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "option %s: invalid choice: %r (choose from %s)" msgstr "གདམ་ཀ %s 1: ཁུངས་ལྡན་མིན་པའི་གདམ་ཀ: %r 2 (choose from %s 3)" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option -%s not recognized" msgstr "གདམ་ཀ། '%s 1'ངོས་འཛིན་ཐུབ་མ་སོང་།" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option -%s requires argument" msgstr "གདམ་ཀ། -%s 1 རྩོད་དགོས།" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option --%s must not have an argument" msgstr "གདམ་ཀ། --%s 1གང་བྱས་ཀྱང་རྩོད་པ་མེད།" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option --%s not a unique prefix" msgstr "གདམ་ཀ་--%s ཐུན་མོང་མ་ཡིན་པའི་སྔོན་འཇུག་མ་རེད།" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option --%s not recognized" msgstr "གདམ་ཀ།--%s 1 ངོས་འཛིན་ཐུབ་མ་སོང་།" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option --%s requires argument" msgstr "གདམ་ཀ། --%s རྩོད་དགོས།" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "optional arguments" msgstr "གདམ་ཀ་ཅན་གྱི་རྩོད་པ།" #: ../fdroidserver/nightly.py #, python-brace-format msgid "overwriting existing {path}" msgstr "སྐྱར་བྲིས་ཡོད་།{path}" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "positional arguments" msgstr "གནས་སྟངས་ལ་གཞིགས་པའི་རྩོད་པ།" #: ../fdroidserver/signatures.py #, python-brace-format msgid "" "refuse downloading via insecure HTTP connection (use HTTPS or specify --no-" "https-check): {apkfilename}" msgstr "" "བདེ་ཆགས་མེད་པའི་HTTPMམཐུད་ཀ་རྒྱུད་དེ་ཕབ་བཤུས་ངོས་ལེན་མེད། (HTTPS བེད་སྤྱོད་དང་ཡང་ན་དམིགས་སྟོན་། " "--no-https-check){apkfilename}" #: ../fdroidserver/signatures.py #, python-brace-format msgid "" "refuse downloading via insecure http connection (use https or specify --no-" "https-check): {apkfilename}" msgstr "" "བེད་ཆགས་མེད་པའི་དྲྭ་རྒྱའི་ཁ་བྱང་http ནས་ཕབ་ལེན་བཀག། (use https or specify --no-https-" "check): {apkfilename}" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "s3cmd sync indexes {path} to {url} and delete" msgstr "s3cmd sync ཕྱོགས་སྟོན།{path}1 དེ་ནས {url} དང་སུབས།" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "show program's version number and exit" msgstr "ལས་རིམ་རྣམ་གཞག་གི་ཐོན་རིམ་ཨང་གྲངས་སྟོན་ནས་ཕྱིར་ཐོན་བྱེད།" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.5/optparse.py #: /usr/lib/python3.6/argparse.py /usr/lib/python3.6/optparse.py msgid "show this help message and exit" msgstr "རོགས་པ་བྱེད་པའི་འཕྲིན་ཐུང་སྟོན་ནས་ཕྱིར་ཐོན།" #: ../fdroidserver/signatures.py msgid "signed APK, either a file-path or HTTPS URL." msgstr "APK མིང་རྟགས་, ཡིག་ཆའི་འགྲོ་ལམ་མམ་ཡང་ན། HTTPS URL." #: ../fdroidserver/update.py #, python-brace-format msgid "skipping source tarball: {path}" msgstr "tarballའབྱུང་ཁུངས་མཆོང་རྒྱག་རྒྱབ་བཞིན་པ།:{path}" #: ../fdroidserver/lint.py msgid "srclibs missing name and/or @" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "the following arguments are required: %s" msgstr "གཤམ་གྱི་རྩོད་པ་དེ་དག་དགོས།:%s" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "unexpected option string: %s" msgstr "རེ་བ་མེད་པའི་གདམ་ཀ་ཅན་གྱི་ཚིག་སྒྲུབ།:%s" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "unknown parser %(parser_name)r (choices: %(choices)s)" msgstr "ངོས་འཛིན་མི་ཐུབ་པའི་ parser %(parser_name)r (གདམ་ཀ།: %(choices)s)" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "unrecognized arguments: %s" msgstr "ངོས་འཛིན་མི་ཐུབ་པའི་རྩོད་པ།: %s" #: ../fdroidserver/common.py #, python-brace-format msgid "unsafe permissions on '{config_file}' (should be 0600)!" msgstr "'{config_file}' སྒང་གི་བདེ་ཆགས་མེད་པའི་ཆོག་མཆན་ (ངེས་པར་དུ། 0600)!" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py ../fdroid msgid "usage: " msgstr "བེད་སྤྱོད།: " #: ../fdroid msgid "usage: fdroid [-h|--help|--version] []" msgstr "བེད་སྤྱོད་: ཨེཕ་རོཌ་[-h|--help|--version] []" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "using Apache libcloud to sync with {url}" msgstr "Apache libcloud བེད་སྤྱོད་བྱས་པའི་ཐོག་ {url}1དང་མཉམ་དུ་ཟླ་སྒྲིལ་གཏོང་།" #: ../fdroidserver/publish.py #, python-brace-format msgid "{0} app, {1} key aliases" msgid_plural "{0} apps, {1} key aliases" msgstr[0] "{0} མཉེས་ཆས་, {1} key aliases" #: ../fdroidserver/update.py #, python-brace-format msgid "{apkfilename} ({appid}) has no metadata!" msgstr "{apkfilename} ({appid}) ལ་རྒྱབ་ལྗོངས་ཡིག་ཆ་མིན་འདུག!" #: ../fdroidserver/update.py #, python-brace-format msgid "{apkfilename} has multiple {name} files, looks like Master Key exploit!" msgstr "" #: ../fdroidserver/update.py #, fuzzy, python-brace-format msgid "{apkfilename}'s AndroidManifest.xml has a bad date: " msgstr "AndroidManifest.xmlལ་ཟླ་ཚེས་མིན་འདུག" #: ../fdroidserver/update.py #, python-brace-format msgid "{appid} does not have a name! Using package name instead." msgstr "{appid} ལ་མིང་ཡོད་མ་རེད། !དེའི་ཚབ་ལ་ཐུམ་སྒྲིལ་མིང་བེད་སྤྱོད་བྱེད།." #: ../fdroidserver/mirror.py #, python-brace-format msgid "{appid} is missing {name}" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vname #: ../fdroidserver/lint.py #, python-brace-format msgid "{appid}: Unknown extlib {path} in build '{versionName}'" msgstr "{appid}1: ངོས་འཛིན་མི་ཐུབ་པའི་ extlib {path}2 བཟོ་སྐྲུན་ནང་ལ '{versionName}3'" #: ../fdroidserver/scanner.py #, python-brace-format msgid "{appid}: no builds specified, running on current source state" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "{field} not terminated in {name}" msgstr "{field} སྒོ་རྒྱབ་མིན་འདུག {name}" #: ../fdroidserver/update.py #, python-brace-format msgid "{name} \"{path}\" does not exist! Correct it in config.py." msgstr "{name} \"{path}\" མིན་འདུག! config.pyནོར་བཅོས་བྱེད།." #: ../fdroidserver/nightly.py #, fuzzy, python-brace-format msgid "{path} does not exist! Create it by running:" msgstr "{name} \"{path}\" མིན་འདུག! config.py.ནོར་བཅོས་བྱེད།" #: ../fdroidserver/update.py #, python-brace-format msgid "{path} has bad file signature \"{pattern}\", possible Janus exploit!" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "{path} is zero size!" msgstr "{path} ལ་ཆེ་ཆུང་མེད།!" #: ../fdroidserver/mirror.py #, fuzzy, python-brace-format msgid "{url} does not end with \"fdroid\", check the URL path!" msgstr "local_copy_dir \"fdroid\"གིས་མཇུག་སྐྱོང་མིན་འདུག་ : \"{path}1\"" #: ../fdroidserver/build.py msgid "{} build failed" msgid_plural "{} builds failed" msgstr[0] "{} བཟོ་སྐྲུན་བྱེད་མི་ཐུབ།" #: ../fdroidserver/build.py msgid "{} build succeeded" msgid_plural "{} builds succeeded" msgstr[0] "{} བཟོ་སྐྲུན་ལེགས་སྒྲུབ།" #~ msgid "Android Build Tools path '{path}' does not exist!" #~ msgstr "ཨེན་ཀྲོཌ་བཟོ་སྐྲུན་མ་ལག་ཐབས་ལམ '{path}1' མིན་འདུག!" #~ msgid "Clean update - don't uses caches, reprocess all apks" #~ msgstr "གསར་བསྒྱུར་གཙང་བཟོ།-ཡིག་ཆ་གསོག་ཉར་བེད་སྤྱོ་མ་བྱེད། apks ཚང་མ་སྐྱར་སྤྱོད་བྱེད།" #~ msgid "app-id in the form APPID" #~ msgstr "APPID བཀོད་པའི་ནང་གི་མཉེས་ཆས་ཁ་བྱང་།" #~ msgid "app-id to check for updates" #~ msgstr "མཉེས་ཆས་ཁ་བྱང་རྒྱུད་གསར་བསྒྱར་ཡོད་མིན་ལྟོས།" #~ msgid "app-id with optional versionCode in the form APPID[:VERCODE]" #~ msgstr "མཉེན་ཆས་ཀྱི་ངོ་བོ་དང་མཉམ་དུ་གདམ་ཀ་ཅན་གྱི་ཐོན་རིམ་ཨང་རྟགས་APPID[:VERCODE]" #~ msgid "app-id with optional versioncode in the form APPID[:VERCODE]" #~ msgstr "མཉེས་ཆས་ཁ་བྱང་དང་མཉམ་དུ་གདམ་ཀ་ཅན་གྱི་ཐོན་རིམ་ཨང་རྟགས།APPID[:VERCODE]" fdroidserver-1.0.9/locale/zh_Hant/0000775000175000017500000000000013324115531016755 5ustar hanshans00000000000000fdroidserver-1.0.9/locale/zh_Hant/LC_MESSAGES/0000775000175000017500000000000013324115531020542 5ustar hanshans00000000000000fdroidserver-1.0.9/locale/zh_Hant/LC_MESSAGES/fdroidserver.mo0000664000175000017500000012754713324115526023621 0ustar hanshans00000000000000L|)}7$-+2+^9^#:Xjz!!"&';1c"AD.? On  E + !L!Fd!!!!3!*"*?":j""-"R"$F#6k#9##)#-$1K$}$*$$/$[%9t%5%% &C!&-e&[&*&V'%q' '''+'=(V(m(!(U(#)6$)%[)4)#))))*"1*$T*!y*!**;*'+/:+j+(++++-,/,2L,4,6,,* - 4-FU-=----:(.c.U..(./A7/!y/H/"/ 0v(0,00/0)1 E1f171111!2&82._2.2322 3.+34Z33333d3*E49p4!4(4)435-S5-55'5566*6E6V6p6(6#6+67>%7d7)|7!77&7"82#8 V8b8*w8'88J8B+9n99#9979&:::CY:I:!: ;N$;9s;$;!;;<0<+I<%u<<<<<3=<=S=o=0=.=@=&><>*[>'>>1>%> ?(?C?7_?1?1?*?;&@*b@#@@@-@A$A:DA:A7A&A-BGBdB=B,BB CC7C/JC zCCC*C(D)D:D$YD~D-DPD Ed6EE7EEUF4^F:F&FFG3GGG!gG-GG,G!G*H8HH2HH H,H I&AIBhIBI#I*J==J0{J%J.JK%K*BK7mK3K5K<L.LL){L*L-L#L9"M*\MfM/M?N$^N=N,N-N8O6UO1O(OPO=8P!vP.P!P5PQ28QkQQ/QFQR8RSR*lR4R'R4R)S8SHS#eSSS@S(S,TFTcTsT yTET$TT>U>?U%~UIU UV/V+CVoV#VNV3V41W;fWWW4WX)X"IXClXX2XX(Y.:Y2iY Y-YY<Y!Z?ZNZ%kZ*ZZZZ/[/?[o[&~[A[[[D\^\!f\3\%\N\F1](x]-]']-]%^:^J^]^t^#^'^G^%_.E_t__%___ `*`=`Y`fn`f`-h2hh,h+h+h1 i:Ri,ii iijj j9j Lj!mj%j&j(j#kH)kNrk)kXkDlG]l$llAl"m4m9Om0m?m/m*n-Hn>vn!n0n0o9o(Ro4{o0oo;o;p)PpZzp:p4q'Eq!mq4q'q_q-Lr.zr&rrrs" sECssssQst02t!ct:ttt t' u3u Quruuu*u3u'vAv(Zvvvv1vv- w*9w7dww$wwHw:Bx#}x:x;x'yE@yy$yy3y'zE=z$zzhz..{ ]{0~{#{${{8|*J|0u||||'|'$}0L}}}}-}4} ~)~I~f\~)~A~/!O&q$3F]nŀ0߀%*6#a7*Ё! $*!O-q 7‚'"K8I#΃# 07JJP ![}\/!'Ib{*'؆6P2fɇ-ه'G/w*̈,'+Sf&D16 &W:~$*ފ /,\vHH؋;!&]*͌4# D_r7#΍&!#Hl|*Î-ގR _Z}؏<(ZD0<А! !/Qn "&ɑ' 2/N@~ْ(-!%O#uCCݓ'!*I3t+Ԕ& 20S5.04$O*t*'ʖ'7,R\,ܗ@ J,c!$-ט.'4/\X7+< h?ɚ< %@.fN.5Ad'<Μ *HeE''0I\ c@p+ݞC=7#uN! )$?d'N*-";P2š6JU/!0%<V 5֣ݣ,Hfz77/68RN 02#cLHԦ'*E.p'ǧ'=ZCz)ި7!Su  ʩcש`;-$ʪ2A^x58 67A&y+O>9+x:@6/R-M3GW SSH Public Key to be used as Deploy Key: {path} encoded for the DEBUG_KEYSTORE secret variable:"%s/" has no matching metadata file!"{path}" contains outdated {name} ({version})"{path}" contains recent {name} ({version})"{path}" exists but s3cmd is not installed!"{path}" is not an accepted format, convert to: {formats}%(option)s option requires %(number)d argument%(option)s option requires %(number)d arguments%(prog)s [options] url%(prog)s: error: %(message)s %d problems found%prog [options]%r is not callable%s is not an accepted build field%s option does not take a value'keypass' not found in config.py!'keystore' not found in config.py!'keystorepass' not found in config.py!'repo_keyalias' not found in config.py!'required' is an invalid argument for positionals'sdk_path' not set in 'config.py'!'{aapt}' is too old, fdroid requires build-tools-23.0.0 or newer!'{aapt}' is too old, fdroid requires build-tools-{version} or newer!'{apkfilename}' is already installed on {dev}.'{field}' will be in random order! Use () or [] brackets if order is important!'{path}' failed to execute!'{value}' is not a valid {field} in {appid}. Regex pattern: {pattern}...checkupdate failed for {appid} : {error}.__call__() not defined.fdroid.txt is not supported! Convert to .fdroid.yml or .fdroid.json./issues is missingA URL is required as an argument!Add PGP signatures using GnuPG for packages in repoAdd a new application from its source codeAdd a repo signing key to an unsigned repoAdd skeleton metadata files for APKs that are missing themAdding new repo for only {name}Alias of the repo signing key in the keystoreAllows a different revision (or git branch) to be specified for the initial importAlso mirror the full archive sectionAlso warn about formatting issues, like rewritemeta -lAndroid SDK '{path}' does not have '{dirname}' installed!Android SDK not found!Android SDK path '{path}' does not exist!Android SDK path '{path}' is not a directory!Android build-tools path '{path}' does not exist!AndroidManifest.xml has no dateApp is in '{repo}' but has a link to {url}Appending .git is not necessaryArchiving {apkfilename} with invalid signature!Base URL to mirror, can include the index signing key using the query string: ?fingerprint=Branch '{branch}' used as commit in build '{versionName}'Branch '{branch}' used as commit in srclib '{srclib}'Build a package from sourceBuild all applications availableBuild generated by `fdroid import` - remove disable line once readyBuild only the latest version of each packageBuild should have comma-separated versionName and versionCode, not "{value}", in {linedesc}Built repo based in "%s" with this config:Can't build due to {} error while scanningCan't build due to {} errors while scanningCannot find a packageName for {path}!Cannot find an appid for {path}!Cannot read "{path}"!Cannot resolve app id {appid}Cannot use --list and --to at the same timeCannot write "{path}", not an accepted format, use: {formats}Categories are not setCategory '%s' is not validCheck for updates to applicationsChecking archiving for {appid} - apks:{integer}, keepversions:{keep}, archapks:{arch}Clean after all scans have finishedClean before the scans start and rebuild the containerClean up all containers and then exitClean update - don't uses caches, reprocess all APKsComma separated list of categories.Command '%s' not recognised. Commit changesCould not find '{command}' on your systemCould not find {path} to remove itCould not open apk file for analysisCouldn't find latest version codeCouldn't find latest version nameCouldn't find package IDCowardily refusing to overwrite existing signing key setup!Create a repo signing key in a keystoreCreate skeleton metadata files that are missingCreated new container "{name}"Creating "{path}" for configuring s3cmd.Creating log directoryCreating new S3 bucket: {url}Creating output directoryCreating signed index with this key (SHA256):Creating temporary directoryCreating unsigned index in preparation for signingDEBUG_KEYSTORE is not set or the value is incompleteDelete APKs and/or OBBs without metadata from the repoDeleting unknown file: {path}Description '%s' is just the app's summaryDescription has a duplicate lineDescription has a list (%s) but it isn't bulleted (*) nor numbered (#)Description of length {length} is over the {limit} char limitDo not include "{path}" in URL!Do not prompt for Android SDK path, just failDon't create a source tarball, useful when testing a buildDon't do anything logs-relatedDon't refresh the repository, useful when testing a build with no internet connectionDon't use rsync checksumsDownload complete mirrors of small reposDownload logs we don't haveDownloading the repository already failed once, not trying again.Downloading {url} failed. {error}Duplicate build recipe found for versionCode {versionCode} in {linedesc}Duplicate link in '{field}': {url}Dynamically scan APKs post buildERROR: this command should never be used to mirror f-droid.org! A full mirror of f-droid.org requires more than 200GB.ERROR: unsupported CI type, patches welcome!Empty build flag at {linedesc}Enter the path to the Android SDK (%s) here: > Error while attempting to publish log: %sError while getting repo addressExtract signatures from APKsFailed fetching signatures for '{apkfilename}': {error}Failed reading {path}: {error}Failed resizing {path}: {error}Failed to align applicationFailed to create S3 bucket: {url}Failed to get APK manifest informationFailed to get apk information, deleting {path}Failed to get apk information, skipping {path}Failed to install '{apkfilename}' on {dev}: {error}Failed to sign applicationFailed to zipalign applicationFetched buildserverid from VM: {buildserverid}Fetched signatures for '{apkfilename}' -> '{sigdir}'FinishedFlattr donation methods belong in the FlattrID flagForbidden HTML tagsForce build of disabled apps, and carries on regardless of scan problems. Only allowed in test mode.Force halting build after {0} sec timeout!Found "{path}" graphic without metadata for app "{name}"!Found invalid appids in argumentsFound invalid versionCodes for some appsFound multiple metadata files for {appid}Found multiple signing certificates for repository.Found multiple signing certificates in {path}Found no signing certificates for repository.Found non-file at %sGenerated skeleton metadata for {appid}Git checkout of '%s' failedGit clean failedGit fetch failedGit remote set-head failedGit reset failedGit submodule sync failedGit submodule update failedHTTPS must be used with Subversion URLs!Ignoring package without metadata: Ignoring stale cache data for {apkfilename}Ignoring {ext} file at '{path}'Include APKs that are signed with disabled algorithms like MD5Initialising submodulesInstall all signed applications availableInstall built packages on devicesInstalling %s...Installing '{apkfilename}' on {dev}...Interact with the repo HTTP serverInteractively ask about things that need updating.Invalid APKInvalid boolean '%s'Invalid build flag at {line} in {linedesc}Invalid build format: {value} in {name}Invalid bulleted listInvalid license tag "%s"! Use only tags from https://spdx.org/license-listInvalid link - use [http://foo.bar Link title] or [http://foo.bar]Invalid metadata in %s:%dInvalid metadata in: Invalid name for published file: %sInvalid package name {0}Invalid versionCode: "{versionCode}" is not an integer!JAR signature failed to verify: {path}JAR signature verified: {path}Java JDK not found! Install in standard location or set java_paths!Java jarsigner not found! Install in standard location or set java_paths!Javascript in HTML src attributesKeystore for signing key: Last used commit '{commit}' looks like a tag, but Update Check Mode is '{ucm}'Liberapay donation methods belong in the LiberapayID flagList files that would be reformattedMake the build stop on exceptionsMalformed repository mirrors.Malformed serverwebroot line:Missing output directoryName '%s' is just the auto name - remove itNo 'config.py' found, using defaults.No Android SDK found!No android or kivy project could be found. Specify --subdir?No attached devices foundNo commit specified for {versionName} in {linedesc}No fingerprint in URL.No git submodules availableNo information found.No need to specify that the app is Free SoftwareNo need to specify that the app is for AndroidNo option set! Edit your config.py to set at least one of these:No packages specifiedNo signed apk available for %sNo signed output directory - nothing to doNo signing certificates found in {path}No such package: %sNo such versionCode {versionCode} for app {appid}No unsigned directory - nothing to doNothing to doNothing to do for {appid}.Now set these in config.py:OBB file has newer versionCode({integer}) than any APK:OBB filename must start with "main." or "patch.":OBB's packagename does not match a supported APK:Old APK signature failed to verify: {path}Only PNG and JPEG are supported for graphics, found: {path}Only print differences with the Play StoreOnly process apps with auto-updatesOptionsOverall license of the project.Override path for repo APKs (default: ./repo)Parsing manifest at '{path}'Password required with usernamePath to main Android project subdirectory, if not in root.Path to main android project subdirectory, if not in root.Path to the Android SDK (sometimes set in ANDROID_HOME)Path to the git repo to use as the logPath to the keystore for the repo signing keyPrepare Drozer to run a scanPrepare drozer to run a scanPrint the secret variable to the terminal for easy copy/pasteProblem with description of {appid}: {error}Problem with xml at '{path}'Process auto-updatesProcessing {apkfilename}Processing {appid}Produce human-readable XML/JSON for index filesProduce human-readable index.xmlProject URL to import from.Punctuation should be avoidedPush the log to this git remote repositoryPushing binary transparency log to {url}Pushing to {url}Quickly start a new repositoryRead all the metadata files and exitReading '{config_file}'Reading minSdkVersion failed: "{apkfilename}"Reading packageName/versionCode/versionName failed, APK invalid: '{apkfilename}'Reading {apkfilename} from cacheRecalculate aggregate stats - use when changes have been made that would invalidate old cached data.Removing specified filesRename APK files that do not match package.name_123.apkReport on build data statusReset and create a brand new build server, even if the existing one appears to be ok.Resigning {apkfilename} with provided debug.keystoreResize all the icons exceeding the max pixel size and exitRestrict output to warnings and errorsRewrite all the metadata filesRewrite to a specific format: Rewriting '{appid}'Rewriting '{appid}' to '{path}'Run rewritemeta to fix formattingRunning first pass with MD5 checking disabledRunning wget in {path}Scan only the latest version of each packageScan the source code of a packageScanner found {count} problems in {appid}:Scanner found {count} problems in {appid}:{versionCode}:Scanner found {} problemScanner found {} problemsSet clock to that time using:Set open file limit to {integer}Set up an app build for a nightly build repoSetting open file limit failed: Setting {0} sec timeout for this buildSetup an emulator, install the APK on it and perform a Drozer scanSetup an emulator, install the apk on it and perform a drozer scanSign and place packages in the repoSign indexes created using update --nosignSkip scanning the source code for binaries and other problemsSkipping '{apkfilename}' with invalid signature!Skipping index generation for {appid}Skipping {apkfilename} with invalid signature!Skipping {appid}: disabledSkipping {appid}: no builds specifiedSpecify a local folder to sync the repo toSpecify an identity file to provide to SSH for rsyncingSpecify editor to use in interactive mode. Default Specify editor to use in interactive mode. Default %sSpecify editor to use in interactive mode. Default is {path}Specify that we're running on the build serverSpecify which debug keystore file to use.Spew out even more information than normalStriping mystery signature from {apkfilename}Summary '%s' is just the app's nameSummary of length {length} is over the {limit} char limitSystem clock is older than date in {path}!Test mode - put output in the tmp directory only, and always build, even if the output already exists.The OBB version code must come after "{name}.":The base URL for the repo to log (default: https://f-droid.org)The directory to write the mirror toThe only commands currently supported are 'init' and 'update'The repository's fingerprint does not match.The repository's index could not be verified.The root dir for local_copy_dir "{path}" does not exist!The the file to be included in the repo (path or glob)There is a keyalias collision - publishing haltedThis repo already has local metadata: %sTo use awsbucket, awssecretkey and awsaccesskeyid must also be set in config.py!UCM is set but it looks like checkupdates hasn't been run yetURL shorteners should not be usedURL title is just the URL, use brackets: [URL]URL {url} in Description: {error}Unexpected text on same line as {field} in {linedesc}Unknown exception found!Unknown file '{filename}' in build '{versionName}'Unknown metadata format: %sUnknown metadata format: {path}Unknown version of aapt, might cause problems: Unlinkified link - use [http://foo.bar Link title] or [http://foo.bar]Unnecessary leading spaceUnnecessary trailing spaceUnrecognised app field: Unrecognised field '{field}' in {linedesc}Unsupported file type "{extension}" for repo graphicUnsupported graphics file found: {path}Unsupported metadata format, use: --to [{supported}]Unterminated ]Unterminated ]]Unterminated build in {name}Unterminated continuation in {name}Unused extlib at %sUnused file at %sUpdate Check Name is set to the known app id - it can be removedUpdate repo information for new packagesUpdate the binary transparency log for a URLUpdate the stats of the repoUpdate the wikiUsageUsage: %s Use /HEAD instead of /master to point at a file in the default branchUse `fdroid update -c` to create it.Use build serverUse date from APK instead of current time for newly added APKsUse date from apk instead of current time for newly added apksUsing "{path}" for configuring s3cmd.Using Java's jarsigner, not recommended for verifying APKs! Use apksignerUsing existing keystore "{path}"Using s3cmd to sync with: {url}Valid commands are:Verify the integrity of downloaded packagesVerifying index signature:Warn about possible metadata errorsWhen configured for signed indexes, create only unsigned indexes at this stageX.509 'Distiguished Name' used when generating keysX.509 'Distinguished Name' used when generating keysYou can use ANDROID_HOME to set the path to your SDK, i.e.:adding IdentityFile to {path}adding to {name}: {path}ambiguous option: %(option)s could match %(matches)sambiguous option: %s (%s?)applicationId in the form APPIDapplicationId to check for updatesapplicationId with optional versionCode in the form APPID[:VERCODE]argument "-" with mode %rattempting bare ssh connection to test deploy key:can't open '%s': %scannot have multiple subparser argumentscannot merge actions - two groups are named %rcannot publish update, did you set the deploy key?cloning {url}command to execute, either 'init' or 'update'complexconflicting option string: %sconflicting option strings: %scopying {apkfilename} into {path}created {path}deleting: repo/{apkfilename}dest= is required for options like %rexpected %s argumentexpected %s argumentsexpected at least one argumentexpected at most one argumentexpected one argumentfdroid [-h|--help|--version] []fdroid [] [-h|--help|--version|]floating-pointforce errors to be warnings, or ignoreforce metadata errors (default) to be warnings, or to be ignored.git svn clone failedignored explicit argument %rindex-v1 must have a signature, use `fdroid signindex` to create it!integerinvalid %(type)s value: %(value)rinvalid choice: %(value)r (choose from %(choices)s)invalid conflict_resolution value: %rinvalid option string %(option)r: must start with a character %(prefix_chars)rlocal_copy_dir does not end with "fdroid", perhaps you meant: "{path}"local_copy_dir must be an absolute path!local_copy_dir must be directory, not a file!mirror '%s' does not end with 'fdroid'!mutually exclusive arguments must be optionalno "icon" in {appid}no APK suppliedno such option: %sno version info found!not allowed with argument %sone of the arguments %s is requiredonly accepts strings, lists, and tuplesoption %s: If you really want to install all the signed apps, use --alloption %s: invalid %s value: %roption %s: invalid choice: %r (choose from %s)option -%s not recognizedoption -%s requires argumentoption --%s must not have an argumentoption --%s not a unique prefixoption --%s not recognizedoption --%s requires argumentoptional argumentsoverwriting existing {path}positional argumentsrefuse downloading via insecure HTTP connection (use HTTPS or specify --no-https-check): {apkfilename}refuse downloading via insecure http connection (use https or specify --no-https-check): {apkfilename}s3cmd sync indexes {path} to {url} and deleteshow program's version number and exitshow this help message and exitsigned APK, either a file-path or HTTPS URL.skipping source tarball: {path}srclibs missing name and/or @the following arguments are required: %sunexpected option string: %sunknown parser %(parser_name)r (choices: %(choices)s)unrecognized arguments: %sunsafe permissions on '{config_file}' (should be 0600)!usage: usage: fdroid [-h|--help|--version] []using Apache libcloud to sync with {url}{0} app, {1} key aliases{0} apps, {1} key aliases{apkfilename} ({appid}) has no metadata!{apkfilename} has multiple {name} files, looks like Master Key exploit!{apkfilename}'s AndroidManifest.xml has a bad date: {appid} does not have a name! Using package name instead.{appid} is missing {name}{appid}: Unknown extlib {path} in build '{versionName}'{appid}: no builds specified, running on current source state{field} not terminated in {name}{name} "{path}" does not exist! Correct it in config.py.{path} does not exist! Create it by running:{path} has bad file signature "{pattern}", possible Janus exploit!{path} is zero size!{url} does not end with "fdroid", check the URL path!{} build failed{} builds failed{} build succeeded{} builds succeededProject-Id-Version: fdroidserver 0.9 Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues POT-Creation-Date: 2018-02-13 09:01+0100 PO-Revision-Date: 2018-03-04 00:22+0000 Last-Translator: Jeff Huang Language-Team: Chinese (Traditional) Plural-Forms: nplurals=1; plural=0 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Generated-By: Babel 1.3 SSH 公鑰被用來作為佈署密鑰: {path} DEBUG_KEYSTORE 祕密變數的編碼為:"%s 1/" 沒有符合的中介資料檔案!"{path}" 包含過時的 {name} ({version})"{path}" 包含近期的 {name} ({version})有 "{path}" 存在,但是沒有安裝 s3cmd!"{path}" 不是可接受的格式,轉換成: {formats}%(option)s 的選項需要 %(number)d 參數%(prog)s [選項]%(prog)s:錯誤:%(message)s 發現 %d 個問題%prog [選項]%r 不可呼叫%s 為不可編譯欄位%s 選項不帶值config.py 找不到 'keypass'!config.py 找不到 'keystore'!config.py 找不到 'keystorepass'!config.py 找不到 'repo_keyalias'!這些地方的 '必填' 為無效引數'config.py' 未設定 'sdk_path'!'{aapt}' 太過老舊,fdroid 需要 build-tools-23.0.0 以上版本!'{aapt}' 太過老舊,fdroid 需要 build-tools-{version} 或以上版本!'{apkfilename}' 已安裝在 {dev} 上。'{field}' 將會隨機排列!如果次序重很重要,請使用 () 或 []符號!'{path}' 無法執行!{appid} 的 {value}' 為無效 {field}。正規表遠格式:{pattern}{appid} 檢查更新失敗:{error}.__call__() 未定義不支援 .fdroid.txt!轉換為 .fdroid.yml 或 .fdroid.json。/issues 有遺漏需要 URL 作為參數!在軟體庫中加入使用 GnuPG 套件包的 gpg 簽署從原始程式碼增加一個新的應用程式增加一個軟體庫的簽署金鑰到未簽署的金鑰庫中為 APK 建立缺少的骨幹中介資料檔案只為 {name} 新增軟體庫在金鑰庫裡軟體庫簽署金鑰的別名允許為初始匯入指定不同的校訂(或 git 分支)另外鏡像完整的檔案區段還要提醒格式化問題,如 rewritemeta -lAndroid SDK '{path}' 並未安裝 '{dirname}'!找不到 Android SDK!Android SDK 路徑 '{path}' 不存在!Android SDK 路徑 '{path}' 不是目錄資料夾!Android build-tools 路徑 '{path}' 不存在!AndroidManifest.xml 無日期應用軟體在 '{repo}' 倉庫,但有一個 {url} 連結不必附加上 .git以無效的簽名歸檔 {apkfilename}!基本的 URL 到鏡像,可以包含索引簽署金鑰使用查詢字串:?fingerprint=分支 '{branch}' 被用於建立 '{versionName}'的提交分支 '{branch}' 用於 srclib '{srclib}' 的提交從原始程式碼編譯成套裝軟體構建所有可用的應用程式由`fdroid import` 產生編譯 - 已移除取消線只構建每個套件包的最後版本在 {linedesc} 版本編譯的版本名稱和版本代號應以逗號分隔,而不是 "{value}"軟體庫的編譯依照 "%s" 與此設定:掃描時由於 {} 出錯,無法進行編譯路徑 {path} 找不到套件名稱!找不到 {path} 的 appid!無法讀取 "{path}"!無法解析 {appid} id無法同時使用 --list 和 --to無法覆寫 "{path}",其非允許的格式,請使用:{formats}類別未設定'%s' 類別無效檢查應用程式更新檢查 {appid} 的歸檔 - apks:{integer},keepversions:{keep},archapks:{arch}所有掃描完成後清除在掃描開始與重新構建容器之前清除清除所有容器,然後退出清除更新 - 不使用快取,重新處理全部的 APK以逗號分隔類別清單。不能承認命令「%s」。 提交變更在您的系統上找不到 '{command}'無法找到 {path} 來移除無法開啟 apk 檔案作分析找到不最新版的代碼找不到最新版本名稱找不到包 ID拒絕覆寫現有的簽署金鑰設定!在金鑰庫中建立一個軟體庫的簽署金鑰建立缺少的骨幹中介資料檔案建立新容器 "{name}"正在建立組態 s3cmd 的 "{path}"。建立日誌目錄建立新的 S3 bucket:{url}建立輸出目錄用此密鑰 (SHA256) 來建立簽署的索引:建立臨時目錄建立未簽署的索引以準備予以簽署DEBUG_KEYSTORE 未作設定或是不完整從軟體庫刪除缺少中介資料的 APK 和/或 OBB刪除未知的檔案:{path}描述 '%s' 僅為此應用的摘要描述中出現重覆行描述中有一個列表 (%s) 但它並未被編排 (*) 或作編號 (#)描述的長度 {length} 已超過 {limit} 個字符限制不要在 URL 中包含 "{path}"!不要為 Android SDK 的路徑提示,只提示失敗的不要建立 tarball,在測試一個構建時很有用處不要做任何與日誌有關的事情不要更新軟體庫,在沒有網路連線時測試構建很有用不使用 rsync 檢驗和下載小型軟體庫完整的鏡像下載我們沒有的日誌下載軟體庫已失敗過一次,尚未重試。{url} 下載失敗,錯誤訊息 {error}在 {linedesc} 找到版本編號 {versionCode} 重複的編譯處方'{field}' 有重複的連結:{url}動態掃描建置後的 APK錯誤:此命令絕不該用於鏡像 f-droid.org! 完整的 f-droid.org 鏡像需要超過 200GB。出錯:未支援 CI 類型,歡迎補強!{linedesc} 空白的編譯標誌請在此輸入 Android SDK (%s) 的路徑: > 在嘗試刊登日誌時出錯:%s在接取軟體庫的地址時出錯自 APKs 捽取出簽名'{apkfilename}' 無法抓取簽名:錯誤訊息{error}讀取 {path} 失敗:錯誤訊息{error}{path} 無法調整大小:錯誤訊息 {error}校正應用程式失敗無法建立 S3 bucket : {url}無法取得 APK 單號資訊無法取得 apk 資訊,刪除 {path}無法取得 apk 資訊,略過 {path}無法在 {dev} 安裝 '{apkfilename}':{error}無法簽署應用程式zipalign 應用程式失敗從 VM 提取 buildserverid:{buildserverid}抓取 '{apkfilename}' 的簽署資料 -> '{sigdir}'已完成Flattr 捐款方式在 FlattrID 標誌下禁用 HTML 標籤強制停用應用程式的構建,並且忽視掃描問題而繼續。只允許在測試模式下。在 {0} 秒超時後強制停止構建!找到 "{path}" 圖像不包含 "{name}" 應用的中介資料!引數中找到無效的 appids有些應用的版本代號無效{appid} 找到多件中介資料檔案軟體庫找到多份簽署證書。{path} 找到多筆簽名證書軟體庫查無簽名證書。%s 中找到 non-file為 {appid} 建立缺少的骨幹中介資料檔案Git '%s' 還原失敗Git 清理失敗Git 抓取失敗Git 遠端 set-head 失敗Git 重置失敗Git 子模組同步失敗Git 子模組更新失敗HTTPS 必須與 Subversion 網址一起使用!忽略無中介資料的套件包: 忽略 {apkfilename} 陳舊的緩存資料忽略在 '{path}' 的 {ext} 檔案包含 APKs 其簽名為有弱點的演算法,如 MD5初始化子模組安裝所有已簽署可用的應用程式在裝置上安裝構建套件包安裝 %s...在 {dev} 安裝 '{apkfilename}' ...與軟體庫 HTTP 伺服器互動以對話方式詢問需要更新的內容。無效的 APK無效的布林 '%s'{linedesc} 中在 {line} 行出現無效的編譯標誌無效編譯格式:{name} 的 {value}無效的排序列表無效的執照標籤 "%s"!請使用 https://spdx.org/license-list 標籤無效連結 - 請使用 [http://foo.bar Link title] 或 [http://foo.bar]%s 中有無效的中介資料 : %d無效的中介資料: 無效的已發佈檔案名稱:%s無效的套件包稱 {0}無效的版本代號:"{versionCode}" 不是整數!JAR 簽名驗證失敗:{path}JAR 簽名已驗證:{path}找不到 Java JDK!請安裝在標準的位置或是設定 java_paths!找不到 Java jarsigner!請安裝在標準的位置或是設定 java_paths!JavaScript 在 HTML src 的屬性金鑰庫的簽署金鑰: 最近採用的提交 '{commit}' 似乎是一個標籤,但更新的檢查模式為 '{ucm}'Liberapay 捐款方式在 LiberapayID 標誌下列出將重新格式化的檔案異常時停止做構建軟體庫鏡像異常。異常的 serverwebroot 行:輸出目錄消失名稱 '%s' 為自動產生 - 請移除它找不到 'config.py',使用預設。未找到 Android SDK!找無 android 或 kivy 專案。指定子目錄嗎?查無附加的設備{linedesc} 沒有指定給 {versionName} 的提交在 URL 無指紋。無可用的 git 子模組查無資訊。不必要指明的應用程式為自由軟體不必指明該應用為 Android 版本未設定選項!編輯 config.py 檔,其中至少要設定一個:未指定套件%s 沒有已簽署的 apk輸出目錄無簽署 - 無須採取動作{path} 找不到簽署證書無此套件包:%s應用 {appid} 無版本代號 {versionCode}無未簽署目錄 - 無須採取行動無須採取動作{appid} 無須採取行動.現在設定這些在 config.py 中:比起任何 APK,OBB 檔案有較新的版本代號 ({integer}):OBB 檔名的前綴須為 "main." 或 "patch.":OBB 的套件包名稱與支援的 APK 並不相符:舊的 APK 簽名無法驗證:{path}圖像僅支援 PNG 和 JPEG,可在下方找到:{path}僅印出與 Play Store 的不同處只處理具有自動更新的應用程式選項該專案的整體授權。覆蓋軟體庫 APK 的路徑 (預設:./repo)解析 '{path}' 的單號用戶名稱須有密碼如果不在根目錄下,路徑為 android 主要專案的子目錄。如果不在根目錄下,路徑為 android 主要專案的子目錄。Android SDK 的路徑(有時在 ANDROID_HOME 中設定)到 git 軟體庫的路徑用在日誌給軟體庫簽署金鑰的金鑰庫路徑準備 drozer 以執行掃描準備 drozer 以執行掃描在終端機顥示祕密變數以便於複製/貼上{appid}的描述有問題:{error}'{path}' 的 xml 有問題處理自動更新處理 {apkfilename}處理 {appid}產生可讀懂的 XML/JSON 格式以進行檔案索引產生可讀懂的 index.xml 格式要導入的專案網址。標點應予避免將日誌推送到 git 遠端軟體庫推二進制的透明日誌到{url}發佈到 {url}快速啟動新的儲存庫讀取所有的中介資料檔案並退出讀取 '{config_file}' 中讀取 minSdkVersion 失敗:"{apkfilename}"讀取套件名稱/版本代碼/版本名稱 失敗,APK 無效:'{apkfilename}'從緩存讀取 {apkfilename}重新計算集合統計 - 使用時進行更改,這會使得舊的快取資料無效。移除指定檔案為不符合 package.name_123.apk 格式的 APK 檔案更名報告構建資料的狀態即使現有的伺服器明顯是好的,仍重置並建立一個新的構建伺服器。用提供的 debug.keystore 放棄 {apkfilename}重設超過最大像素的所有圖示之尺寸並且退出將輸出限定為警告和錯誤重寫所有的中介資料檔案重寫為特定的格式: 重覆寫入 '{appid}'把 '{appid}' 重寫到 '{path}'執行 rewritemeta 到固定格式關閉 MD5 檢查以執行首次通過在 {path} 裡執行 wget只掃描每個套件包的最新版本掃描套件包的原始碼掃瞄器在 {appid} 發現{count} 個問題:掃瞄器在 {appid} 發現 {count} 個問題:{versionCode}:掃瞄器發現 {} 問題設定時鐘到那時使用:設定開啟的檔案限制為 {integer}為非正式編譯庫建立一個應用編譯設定開啟檔案的限制失敗: 為此構建設定 {0} 秒後超時設置一個模擬器,在其上安裝 APK 並執行 drozer 掃描設置一個模擬器,在其上安裝 apk 並執行 drozer 掃描簽署並放置套件包在軟體庫中簽署使用更新建立的索引 --nosign跳過掃描二進制碼和其它問題的原始碼略過帶無效簽署的 '{apkfilename}'!略過 {appid} 的索引產生略過無效簽名的 {apkfilename}!略過 {appid}:關閉略過 {appid}:無指定編譯指定要將軟體庫同步到本地的資料夾指定一個身份檔案以提供給 SSH 進行 rsync指定編輯器在交互模式使用。預設 指定編輯器在互動模式使用。預設 %s指定編輯器在互動模式使用。預設 {path}指定在構建伺服務器上運作指定要使用哪個除錯金鑰庫檔。傾湧出比正常情況下更多的資訊正從 {apkfilename} 除去隱秘簽名摘要 '%s' 僅是應用程式的名稱摘要的長度 {length} 超過了字符 {limit} 限制在 {path} 中的系統時鐘比日期早!測試模式 - 將輸出只放在 tmp 目錄中,即使輸出已經存在,仍然構建。OBB 版本程式碼須在 "{name}" 之後:軟體庫日誌的總部網址(預設:https://f-droid.org)寫入目錄的鏡像到目前支援的命令僅 'init' 或 'update'軟體庫的指紋並不相符。軟體庫的索引無法被驗證。local_copy_dir "{path}" 根目錄不存在!包含在此軟體庫的檔案 (path 或 glob)發生主要別名衝突 - 發佈中止這個軟體庫已有本地的中介資料:%s要使用 awsbucket, awssecretkey 與 awsaccesskeyid 必須在 config.py 進行設定!UCM 已被設定但它似乎尚未曾執行更新檢查不應使用 URL 縮短網址URL 標題就是 URL,請用括號:[URL]描述中的 URL {url} : {error}在 {linedesc} 在同一行的 {field} 出現未預期的文字發現未知的異常!在 '{versionName}' 編譯出現不明的檔案 '{filename}'未知的中介資料格式:%s未知的中介資料格式t:{path}不明的 aapt 版本,可能會出問題: 無連鏈的連結 - 使用 [http://foo.bar 鏈結標題] 或 [http://foo.bar]不必要的前導空間不必要的尾隨空間無法辨識的 app 欄位: 在 {linedesc} 無法辨識的欄位 '{field}'用於軟體庫的圖片,不支援的檔案類型 "{extension}"找到不支援的圖形檔案:{path}未支援的中介資料格式,使用:--to [{supported}]未結束的 ]未結束的 ]]在 {name} 未結束的編譯在 {name}未結束的續編在 %s 未使用的 extlib在 %s 未使用的檔案更新 Check Name 被設定成已知的應用 id - 它可以被移除為新的套件包更新軟體庫資訊為網址更新二進制的透明日誌更新軟體庫的統計更新維基百科使用使用:%s 使用 /HEAD 取代 /master 來指向默認分支的一個檔案利用`fdroid update -c` 指令來建立。使用構建伺服器使用來自 APK 的日期,而不是新增之 APK 目前的時間新增的 apk 使用日期,來自 apk 而不是目前時間使用 "{path}" 對 s3cmd 組態。使用 Java 的 jarsigner,這並不建議用於驗證 APK!使用 apksigner使用現有的金鑰庫 "{path}"使用 s3cmd 來同步:{url}正確的命令是:驗證下載套裝軟體的完整性正在驗證索引簽名:關於中介資料可能錯誤的警告當已組態為簽名的索引時,只能在此階段建立無簽名的索引產生金鑰時使用 X.509 '專有名稱'產生金鑰時使用 X.509 的'專有名稱'可以使用 ANDROID_HOME 來設定 SDK 的路徑,i.e.:添增 IdentityFile 到 {path}添加到 {name}:{path}模糊選項:%(option)s 可以相配 %(matches)s不明確的選項:%s (%s?)applicationId 格式為 APPID以 applicationId 檢查更新applicationId 具有任選的 versionCode 在此格式為 APPID [:VERCODE]引數 "-" 為帶 %r 模式試圖顯露 ssh 連線來測試佈署金鑰:無法打開 '%s':%s無法有多個子解析器引數無法合併動作 - 二個群體被命名為 %r無法發佈更新,是否正確地設定了佈署金鑰?複製 {url}命令執行,'init' 或 'update' 中的任何一個複雜相衝突的選項字串:%s複製 {apkfilename} 到 {path}已建立 {path}刪除:repo/{apkfilename}dest= 如 %r 選項為必須預期的 %s 引數預期至少有一個引數最多一個引數預期有一個引數用法:fdroid [-h|--help|--version] <命令> []用法:fdroid [-h|--help|--version] <命令> []浮點強制錯誤警告或忽略強制中介資料錯誤(預設值)作警告或忽略。Git svn 複製失敗被忽略的明確引數 %rindex-v1 必須要有簽名, 使用 `fdroid signindex`來建立一組簽名!整數無效 %(type)s 值:%(value)r無效選項:%(value)r (選取自 %(choices)s)無效 conflict_resolution 值:%r無效的選項字串 %(option)r:必須以字符 %(prefix_chars)r為起頭local_copy_dir 未以 "fdroid"結尾,也許你指示的是: "{path}"local_copy_dir 必須為絕對路徑!local_copy_dir 為目錄,不是檔案!鏡像 '%s' 並不是以 'fdroid' 作結尾!相互獨佔的引數必須為可選的在 {appid} 中沒有 "icon"無 APK 被供應沒這樣的選項:%s未發現版本資訊!不許可帶引數 %s引數 %s 必須要有一個只接受字串,列表和元組選項 %s: 如果真要安裝全部的簽署應用, 請使用 --all選項 %s: 無效的 %s 值: %r選項 %s: 無效選項: %r (選自 %s )不能識別選項 -%s選項 -%s 需要參數選項 --%s 不能有參數選項 --%s 不是單獨的字首不能識別選項 --%s選項 --%s 需要參數可選參數覆寫現有的 {path}位置參數拒絕透過不安全的 HTTP 連線下載 (使用 HTTPS 或指明 --no-https-check): {apkfilename}拒絕透過不安全 http 連線下載 (使用 https 或指明 --no-https-check): {apkfilename}s3cmd 同步索引 {path} 到 {url} 並刪除顯示程式的版本號碼並離開顯示此幫助訊息並離開簽署 APK, 可由檔案路徑或是 HTTPS 網址.略過來源 tarball: {path}srclibs 缺失名稱或 @需要下列參數:%s非預期選項字串: %s不明解析器 %(parser_name)r (選項: %(choices)s)無法辨識的引數:%s'{config_file}' 檔案不安全的權限(應為 0600)!使用: 用法:fdroid [-h|--help|--version] <命令> []使用 Apache libcloud 來同步 {url}{0} 應用, {1} 主要別名{apkfilename} ({appid}) 沒有中介資料!{apkfilename} 有多個 {name} 檔案,看起來可能是主金鑰洩漏了!{apkfilename} AndroidManifest.xml 有一個無效的日期: {appid}沒有名字! 使用套件名代替.{appid} 缺少 {name}{appid}: 不明的 extlib {path} 編譯在 '{versionName}'{appid}:沒有指定構建,在目前的原始碼狀態執行{field} 未終結在 {name}{name} "{path}" 不存在! 請更正 config.py."{path}" 不存在!經由執行建立它:{path} 有不正確的檔案簽章「{pattern}」,可能是 Janus 漏洞!{path} 為零尺寸!{url} 未以 "fdroid" 結尾,檢查 URL 路徑!{} 編譯失敗{} 編譯成功fdroidserver-1.0.9/locale/zh_Hant/LC_MESSAGES/fdroidserver.po0000664000175000017500000020634413322065577023625 0ustar hanshans00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Free Software Foundation, Inc. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: fdroidserver 0.9\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" "POT-Creation-Date: 2018-02-13 09:01+0100\n" "PO-Revision-Date: 2018-03-04 00:22+0000\n" "Last-Translator: Jeff Huang \n" "Language-Team: Chinese (Traditional) \n" "Language: zh_Hant\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Weblate 2.20-dev\n" #: ../fdroidserver/nightly.py msgid "" "\n" "SSH Public Key to be used as Deploy Key:" msgstr "" "\n" "SSH 公鑰被用來作為佈署密鑰:" #: ../fdroidserver/nightly.py #, python-brace-format msgid "" "\n" "{path} encoded for the DEBUG_KEYSTORE secret variable:" msgstr "" "\n" "{path} DEBUG_KEYSTORE 祕密變數的編碼為:" #: ../fdroidserver/lint.py #, python-format msgid "\"%s/\" has no matching metadata file!" msgstr "\"%s 1/\" 沒有符合的中介資料檔案!" #: ../fdroidserver/update.py #, python-brace-format msgid "\"{path}\" contains outdated {name} ({version})" msgstr "\"{path}\" 包含過時的 {name} ({version})" #: ../fdroidserver/update.py #, python-brace-format msgid "\"{path}\" contains recent {name} ({version})" msgstr "\"{path}\" 包含近期的 {name} ({version})" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "\"{path}\" exists but s3cmd is not installed!" msgstr "有 \"{path}\" 存在,但是沒有安裝 s3cmd!" #: ../fdroidserver/metadata.py #, python-brace-format msgid "\"{path}\" is not an accepted format, convert to: {formats}" msgstr "\"{path}\" 不是可接受的格式,轉換成: {formats}" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "%(option)s option requires %(number)d argument" msgid_plural "%(option)s option requires %(number)d arguments" msgstr[0] "%(option)s 的選項需要 %(number)d 參數" #: ../fdroidserver/mirror.py #, python-format msgid "%(prog)s [options] url" msgstr "%(prog)s [選項]" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "%(prog)s: error: %(message)s\n" msgstr "%(prog)s:錯誤:%(message)s\n" #: ../fdroidserver/scanner.py #, python-format msgid "%d problems found" msgstr "發現 %d 個問題" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "%prog [options]" msgstr "%prog [選項]" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "%r is not callable" msgstr "%r 不可呼叫" #: ../fdroidserver/lint.py #, python-format msgid "%s is not an accepted build field" msgstr "%s 為不可編譯欄位" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "%s option does not take a value" msgstr "%s 選項不帶值" #: ../fdroidserver/index.py ../fdroidserver/common.py msgid "'keypass' not found in config.py!" msgstr "config.py 找不到 'keypass'!" #: ../fdroidserver/index.py ../fdroidserver/common.py msgid "'keystore' not found in config.py!" msgstr "config.py 找不到 'keystore'!" #: ../fdroidserver/index.py ../fdroidserver/common.py msgid "'keystorepass' not found in config.py!" msgstr "config.py 找不到 'keystorepass'!" #: ../fdroidserver/index.py ../fdroidserver/common.py msgid "'repo_keyalias' not found in config.py!" msgstr "config.py 找不到 'repo_keyalias'!" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "'required' is an invalid argument for positionals" msgstr "這些地方的 '必填' 為無效引數" #: ../fdroidserver/common.py msgid "'sdk_path' not set in 'config.py'!" msgstr "'config.py' 未設定 'sdk_path'!" #. Translators: "build-tools" is the file name of a package from #. Google, it is part of the Android SDK. So it probably shouldn't be #. translated or transliterated. #: ../fdroidserver/common.py #, python-brace-format msgid "'{aapt}' is too old, fdroid requires build-tools-23.0.0 or newer!" msgstr "'{aapt}' 太過老舊,fdroid 需要 build-tools-23.0.0 以上版本!" #: ../fdroidserver/common.py #, python-brace-format msgid "'{aapt}' is too old, fdroid requires build-tools-{version} or newer!" msgstr "'{aapt}' 太過老舊,fdroid 需要 build-tools-{version} 或以上版本!" #: ../fdroidserver/install.py #, python-brace-format msgid "'{apkfilename}' is already installed on {dev}." msgstr "'{apkfilename}' 已安裝在 {dev} 上。" #: ../fdroidserver/common.py #, python-brace-format msgid "" "'{field}' will be in random order! Use () or [] brackets if order is " "important!" msgstr "'{field}' 將會隨機排列!如果次序重很重要,請使用 () 或 []符號!" #: ../fdroidserver/common.py #, python-brace-format msgid "'{path}' failed to execute!" msgstr "'{path}' 無法執行!" #: ../fdroidserver/metadata.py #, python-brace-format msgid "'{value}' is not a valid {field} in {appid}. Regex pattern: {pattern}" msgstr "{appid} 的 {value}' 為無效 {field}。正規表遠格式:{pattern}" #: ../fdroidserver/checkupdates.py #, python-brace-format msgid "...checkupdate failed for {appid} : {error}" msgstr "{appid} 檢查更新失敗:{error}" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid ".__call__() not defined" msgstr ".__call__() 未定義" #: ../fdroidserver/metadata.py msgid ".fdroid.txt is not supported! Convert to .fdroid.yml or .fdroid.json." msgstr "不支援 .fdroid.txt!轉換為 .fdroid.yml 或 .fdroid.json。" #: ../fdroidserver/lint.py msgid "/issues is missing" msgstr "/issues 有遺漏" #: ../fdroidserver/mirror.py msgid "A URL is required as an argument!" msgstr "需要 URL 作為參數!" #: ../fdroid msgid "Add PGP signatures using GnuPG for packages in repo" msgstr "在軟體庫中加入使用 GnuPG 套件包的 gpg 簽署" #: ../fdroid msgid "Add a new application from its source code" msgstr "從原始程式碼增加一個新的應用程式" #: ../fdroidserver/update.py msgid "Add a repo signing key to an unsigned repo" msgstr "增加一個軟體庫的簽署金鑰到未簽署的金鑰庫中" #: ../fdroidserver/update.py msgid "Add skeleton metadata files for APKs that are missing them" msgstr "為 APK 建立缺少的骨幹中介資料檔案" #: ../fdroidserver/update.py #, python-brace-format msgid "Adding new repo for only {name}" msgstr "只為 {name} 新增軟體庫" #: ../fdroidserver/init.py msgid "Alias of the repo signing key in the keystore" msgstr "在金鑰庫裡軟體庫簽署金鑰的別名" #: ../fdroidserver/import.py msgid "" "Allows a different revision (or git branch) to be specified for the initial " "import" msgstr "允許為初始匯入指定不同的校訂(或 git 分支)" #: ../fdroidserver/mirror.py msgid "Also mirror the full archive section" msgstr "另外鏡像完整的檔案區段" #: ../fdroidserver/lint.py msgid "Also warn about formatting issues, like rewritemeta -l" msgstr "還要提醒格式化問題,如 rewritemeta -l" #: ../fdroidserver/common.py #, python-brace-format msgid "Android SDK '{path}' does not have '{dirname}' installed!" msgstr "Android SDK '{path}' 並未安裝 '{dirname}'!" #: ../fdroidserver/common.py msgid "Android SDK not found!" msgstr "找不到 Android SDK!" #: ../fdroidserver/common.py #, python-brace-format msgid "Android SDK path '{path}' does not exist!" msgstr "Android SDK 路徑 '{path}' 不存在!" #: ../fdroidserver/common.py #, python-brace-format msgid "Android SDK path '{path}' is not a directory!" msgstr "Android SDK 路徑 '{path}' 不是目錄資料夾!" #. Translators: "build-tools" is the file name of a package from #. Google, it is part of the Android SDK. So it probably shouldn't be #. translated or transliterated. #: ../fdroidserver/common.py #, python-brace-format msgid "Android build-tools path '{path}' does not exist!" msgstr "Android build-tools 路徑 '{path}' 不存在!" #: ../fdroidserver/update.py msgid "AndroidManifest.xml has no date" msgstr "AndroidManifest.xml 無日期" #: ../fdroidserver/lint.py #, python-brace-format msgid "App is in '{repo}' but has a link to {url}" msgstr "應用軟體在 '{repo}' 倉庫,但有一個 {url} 連結" #: ../fdroidserver/lint.py msgid "Appending .git is not necessary" msgstr "不必附加上 .git" #: ../fdroidserver/update.py #, python-brace-format msgid "Archiving {apkfilename} with invalid signature!" msgstr "以無效的簽名歸檔 {apkfilename}!" #: ../fdroidserver/mirror.py msgid "" "Base URL to mirror, can include the index signing key using the query " "string: ?fingerprint=" msgstr "基本的 URL 到鏡像,可以包含索引簽署金鑰使用查詢字串:?fingerprint=" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vname #: ../fdroidserver/lint.py #, python-brace-format msgid "Branch '{branch}' used as commit in build '{versionName}'" msgstr "分支 '{branch}' 被用於建立 '{versionName}'的提交" #: ../fdroidserver/lint.py #, python-brace-format msgid "Branch '{branch}' used as commit in srclib '{srclib}'" msgstr "分支 '{branch}' 用於 srclib '{srclib}' 的提交" #: ../fdroid msgid "Build a package from source" msgstr "從原始程式碼編譯成套裝軟體" #: ../fdroidserver/build.py msgid "Build all applications available" msgstr "構建所有可用的應用程式" #: ../fdroidserver/lint.py msgid "Build generated by `fdroid import` - remove disable line once ready" msgstr "由`fdroid import` 產生編譯 - 已移除取消線" #: ../fdroidserver/build.py msgid "Build only the latest version of each package" msgstr "只構建每個套件包的最後版本" #: ../fdroidserver/metadata.py #, python-brace-format msgid "" "Build should have comma-separated versionName and versionCode, not " "\"{value}\", in {linedesc}" msgstr "" "在 {linedesc} 版本編譯的版本名稱和版本代號應以逗號分隔,而不是 \"{value}\"" #: ../fdroidserver/init.py #, python-format msgid "Built repo based in \"%s\" with this config:" msgstr "軟體庫的編譯依照 \"%s\" 與此設定:" #: ../fdroidserver/build.py msgid "Can't build due to {} error while scanning" msgid_plural "Can't build due to {} errors while scanning" msgstr[0] "掃描時由於 {} 出錯,無法進行編譯" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Cannot find a packageName for {path}!" msgstr "路徑 {path} 找不到套件名稱!" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Cannot find an appid for {path}!" msgstr "找不到 {path} 的 appid!" #: ../fdroidserver/vmtools.py #, python-brace-format msgid "Cannot read \"{path}\"!" msgstr "無法讀取 \"{path}\"!" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Cannot resolve app id {appid}" msgstr "無法解析 {appid} id" #: ../fdroidserver/rewritemeta.py msgid "Cannot use --list and --to at the same time" msgstr "無法同時使用 --list 和 --to" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Cannot write \"{path}\", not an accepted format, use: {formats}" msgstr "無法覆寫 \"{path}\",其非允許的格式,請使用:{formats}" #: ../fdroidserver/lint.py msgid "Categories are not set" msgstr "類別未設定" #: ../fdroidserver/lint.py #, python-format msgid "Category '%s' is not valid" msgstr "'%s' 類別無效" #: ../fdroid msgid "Check for updates to applications" msgstr "檢查應用程式更新" #: ../fdroidserver/update.py #, python-brace-format msgid "" "Checking archiving for {appid} - apks:{integer}, keepversions:{keep}, " "archapks:{arch}" msgstr "" "檢查 {appid} 的歸檔 - apks:{integer},keepversions:{keep},archapks:{arch}" #: ../fdroidserver/dscanner.py msgid "Clean after all scans have finished" msgstr "所有掃描完成後清除" #: ../fdroidserver/dscanner.py msgid "Clean before the scans start and rebuild the container" msgstr "在掃描開始與重新構建容器之前清除" #: ../fdroidserver/dscanner.py msgid "Clean up all containers and then exit" msgstr "清除所有容器,然後退出" #: ../fdroidserver/update.py msgid "Clean update - don't uses caches, reprocess all APKs" msgstr "清除更新 - 不使用快取,重新處理全部的 APK" #: ../fdroidserver/import.py msgid "Comma separated list of categories." msgstr "以逗號分隔類別清單。" #: ../fdroid #, c-format, python-format msgid "Command '%s' not recognised.\n" msgstr "不能承認命令「%s」。\n" #: ../fdroidserver/checkupdates.py msgid "Commit changes" msgstr "提交變更" #: ../fdroidserver/common.py #, python-brace-format msgid "Could not find '{command}' on your system" msgstr "在您的系統上找不到 '{command}'" #: ../fdroidserver/update.py #, python-brace-format msgid "Could not find {path} to remove it" msgstr "無法找到 {path} 來移除" #: ../fdroidserver/update.py msgid "Could not open apk file for analysis" msgstr "無法開啟 apk 檔案作分析" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/import.py msgid "Couldn't find latest version code" msgstr "找到不最新版的代碼" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vname #: ../fdroidserver/import.py msgid "Couldn't find latest version name" msgstr "找不到最新版本名稱" #: ../fdroidserver/import.py msgid "Couldn't find package ID" msgstr "找不到包 ID" #: ../fdroidserver/update.py msgid "Cowardily refusing to overwrite existing signing key setup!" msgstr "拒絕覆寫現有的簽署金鑰設定!" #: ../fdroidserver/update.py msgid "Create a repo signing key in a keystore" msgstr "在金鑰庫中建立一個軟體庫的簽署金鑰" #: ../fdroidserver/update.py msgid "Create skeleton metadata files that are missing" msgstr "建立缺少的骨幹中介資料檔案" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Created new container \"{name}\"" msgstr "建立新容器 \"{name}\"" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Creating \"{path}\" for configuring s3cmd." msgstr "正在建立組態 s3cmd 的 \"{path}\"。" #: ../fdroidserver/publish.py msgid "Creating log directory" msgstr "建立日誌目錄" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Creating new S3 bucket: {url}" msgstr "建立新的 S3 bucket:{url}" #: ../fdroidserver/publish.py msgid "Creating output directory" msgstr "建立輸出目錄" #: ../fdroidserver/index.py msgid "Creating signed index with this key (SHA256):" msgstr "用此密鑰 (SHA256) 來建立簽署的索引:" #: ../fdroidserver/import.py ../fdroidserver/verify.py #: ../fdroidserver/publish.py msgid "Creating temporary directory" msgstr "建立臨時目錄" #: ../fdroidserver/index.py msgid "Creating unsigned index in preparation for signing" msgstr "建立未簽署的索引以準備予以簽署" #: ../fdroidserver/nightly.py msgid "DEBUG_KEYSTORE is not set or the value is incomplete" msgstr "DEBUG_KEYSTORE 未作設定或是不完整" #: ../fdroidserver/update.py msgid "Delete APKs and/or OBBs without metadata from the repo" msgstr "從軟體庫刪除缺少中介資料的 APK 和/或 OBB" #: ../fdroidserver/update.py #, python-brace-format msgid "Deleting unknown file: {path}" msgstr "刪除未知的檔案:{path}" #: ../fdroidserver/lint.py #, python-format msgid "Description '%s' is just the app's summary" msgstr "描述 '%s' 僅為此應用的摘要" #: ../fdroidserver/lint.py msgid "Description has a duplicate line" msgstr "描述中出現重覆行" #: ../fdroidserver/lint.py #, python-format msgid "Description has a list (%s) but it isn't bulleted (*) nor numbered (#)" msgstr "描述中有一個列表 (%s) 但它並未被編排 (*) 或作編號 (#)" #: ../fdroidserver/lint.py #, python-brace-format msgid "Description of length {length} is over the {limit} char limit" msgstr "描述的長度 {length} 已超過 {limit} 個字符限制" #: ../fdroidserver/mirror.py #, python-brace-format msgid "Do not include \"{path}\" in URL!" msgstr "不要在 URL 中包含 \"{path}\"!" #: ../fdroidserver/init.py msgid "Do not prompt for Android SDK path, just fail" msgstr "不要為 Android SDK 的路徑提示,只提示失敗的" #: ../fdroidserver/build.py msgid "Don't create a source tarball, useful when testing a build" msgstr "不要建立 tarball,在測試一個構建時很有用處" #: ../fdroidserver/stats.py msgid "Don't do anything logs-related" msgstr "不要做任何與日誌有關的事情" #: ../fdroidserver/build.py msgid "" "Don't refresh the repository, useful when testing a build with no internet " "connection" msgstr "不要更新軟體庫,在沒有網路連線時測試構建很有用" #: ../fdroidserver/server.py ../fdroidserver/nightly.py #: ../fdroidserver/upload.py msgid "Don't use rsync checksums" msgstr "不使用 rsync 檢驗和" #: ../fdroid msgid "Download complete mirrors of small repos" msgstr "下載小型軟體庫完整的鏡像" #: ../fdroidserver/stats.py msgid "Download logs we don't have" msgstr "下載我們沒有的日誌" #: ../fdroidserver/common.py msgid "Downloading the repository already failed once, not trying again." msgstr "下載軟體庫已失敗過一次,尚未重試。" #: ../fdroidserver/verify.py #, python-brace-format msgid "Downloading {url} failed. {error}" msgstr "{url} 下載失敗,錯誤訊息 {error}" #: ../fdroidserver/metadata.py #, python-brace-format msgid "" "Duplicate build recipe found for versionCode {versionCode} in {linedesc}" msgstr "在 {linedesc} 找到版本編號 {versionCode} 重複的編譯處方" #: ../fdroidserver/lint.py #, python-brace-format msgid "Duplicate link in '{field}': {url}" msgstr "'{field}' 有重複的連結:{url}" #: ../fdroid msgid "Dynamically scan APKs post build" msgstr "動態掃描建置後的 APK" #: ../fdroidserver/mirror.py msgid "" "ERROR: this command should never be used to mirror f-droid.org!\n" "A full mirror of f-droid.org requires more than 200GB." msgstr "" "錯誤:此命令絕不該用於鏡像 f-droid.org!\n" "完整的 f-droid.org 鏡像需要超過 200GB。" #: ../fdroidserver/nightly.py msgid "ERROR: unsupported CI type, patches welcome!" msgstr "出錯:未支援 CI 類型,歡迎補強!" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Empty build flag at {linedesc}" msgstr "{linedesc} 空白的編譯標誌" #: ../fdroidserver/init.py #, python-format msgid "" "Enter the path to the Android SDK (%s) here:\n" "> " msgstr "" "請在此輸入 Android SDK (%s) 的路徑:\n" "> " #: ../fdroidserver/server.py ../fdroidserver/checkupdates.py #: ../fdroidserver/upload.py #, python-format msgid "Error while attempting to publish log: %s" msgstr "在嘗試刊登日誌時出錯:%s" #: ../fdroidserver/import.py msgid "Error while getting repo address" msgstr "在接取軟體庫的地址時出錯" #: ../fdroid msgid "Extract signatures from APKs" msgstr "自 APKs 捽取出簽名" #: ../fdroidserver/signatures.py #, python-brace-format msgid "Failed fetching signatures for '{apkfilename}': {error}" msgstr "'{apkfilename}' 無法抓取簽名:錯誤訊息{error}" #: ../fdroidserver/update.py #, python-brace-format msgid "Failed reading {path}: {error}" msgstr "讀取 {path} 失敗:錯誤訊息{error}" #: ../fdroidserver/update.py #, python-brace-format msgid "Failed resizing {path}: {error}" msgstr "{path} 無法調整大小:錯誤訊息 {error}" #: ../fdroidserver/publish.py msgid "Failed to align application" msgstr "校正應用程式失敗" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Failed to create S3 bucket: {url}" msgstr "無法建立 S3 bucket : {url}" #: ../fdroidserver/common.py msgid "Failed to get APK manifest information" msgstr "無法取得 APK 單號資訊" #: ../fdroidserver/update.py #, python-brace-format msgid "Failed to get apk information, deleting {path}" msgstr "無法取得 apk 資訊,刪除 {path}" #: ../fdroidserver/update.py #, python-brace-format msgid "Failed to get apk information, skipping {path}" msgstr "無法取得 apk 資訊,略過 {path}" #: ../fdroidserver/install.py #, python-brace-format msgid "Failed to install '{apkfilename}' on {dev}: {error}" msgstr "無法在 {dev} 安裝 '{apkfilename}':{error}" #: ../fdroidserver/publish.py ../fdroidserver/common.py msgid "Failed to sign application" msgstr "無法簽署應用程式" #: ../fdroidserver/common.py msgid "Failed to zipalign application" msgstr "zipalign 應用程式失敗" #: ../fdroidserver/build.py #, python-brace-format msgid "Fetched buildserverid from VM: {buildserverid}" msgstr "從 VM 提取 buildserverid:{buildserverid}" #: ../fdroidserver/signatures.py #, python-brace-format msgid "Fetched signatures for '{apkfilename}' -> '{sigdir}'" msgstr "抓取 '{apkfilename}' 的簽署資料 -> '{sigdir}'" #: ../fdroidserver/verify.py ../fdroidserver/stats.py ../fdroidserver/update.py #: ../fdroidserver/rewritemeta.py ../fdroidserver/build.py #: ../fdroidserver/checkupdates.py ../fdroidserver/scanner.py #: ../fdroidserver/install.py msgid "Finished" msgstr "已完成" #: ../fdroidserver/lint.py msgid "Flattr donation methods belong in the FlattrID flag" msgstr "Flattr 捐款方式在 FlattrID 標誌下" #: ../fdroidserver/lint.py msgid "Forbidden HTML tags" msgstr "禁用 HTML 標籤" #: ../fdroidserver/build.py msgid "" "Force build of disabled apps, and carries on regardless of scan problems. " "Only allowed in test mode." msgstr "強制停用應用程式的構建,並且忽視掃描問題而繼續。只允許在測試模式下。" #: ../fdroidserver/build.py #, python-brace-format msgid "Force halting build after {0} sec timeout!" msgstr "在 {0} 秒超時後強制停止構建!" #: ../fdroidserver/update.py #, python-brace-format msgid "Found \"{path}\" graphic without metadata for app \"{name}\"!" msgstr "找到 \"{path}\" 圖像不包含 \"{name}\" 應用的中介資料!" #: ../fdroidserver/common.py msgid "Found invalid appids in arguments" msgstr "引數中找到無效的 appids" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/common.py msgid "Found invalid versionCodes for some apps" msgstr "有些應用的版本代號無效" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Found multiple metadata files for {appid}" msgstr "{appid} 找到多件中介資料檔案" #: ../fdroidserver/index.py msgid "Found multiple signing certificates for repository." msgstr "軟體庫找到多份簽署證書。" #: ../fdroidserver/update.py #, python-brace-format msgid "Found multiple signing certificates in {path}" msgstr "{path} 找到多筆簽名證書" #: ../fdroidserver/index.py msgid "Found no signing certificates for repository." msgstr "軟體庫查無簽名證書。" #: ../fdroidserver/lint.py #, python-format msgid "Found non-file at %s" msgstr "%s 中找到 non-file" #: ../fdroidserver/update.py #, python-brace-format msgid "Generated skeleton metadata for {appid}" msgstr "為 {appid} 建立缺少的骨幹中介資料檔案" #: ../fdroidserver/common.py #, python-format msgid "Git checkout of '%s' failed" msgstr "Git '%s' 還原失敗" #: ../fdroidserver/common.py msgid "Git clean failed" msgstr "Git 清理失敗" #: ../fdroidserver/common.py msgid "Git fetch failed" msgstr "Git 抓取失敗" #: ../fdroidserver/common.py msgid "Git remote set-head failed" msgstr "Git 遠端 set-head 失敗" #: ../fdroidserver/common.py msgid "Git reset failed" msgstr "Git 重置失敗" #: ../fdroidserver/common.py msgid "Git submodule sync failed" msgstr "Git 子模組同步失敗" #: ../fdroidserver/common.py msgid "Git submodule update failed" msgstr "Git 子模組更新失敗" #: ../fdroidserver/common.py msgid "HTTPS must be used with Subversion URLs!" msgstr "HTTPS 必須與 Subversion 網址一起使用!" #: ../fdroidserver/index.py msgid "Ignoring package without metadata: " msgstr "忽略無中介資料的套件包: " #: ../fdroidserver/update.py #, python-brace-format msgid "Ignoring stale cache data for {apkfilename}" msgstr "忽略 {apkfilename} 陳舊的緩存資料" #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Ignoring {ext} file at '{path}'" msgstr "忽略在 '{path}' 的 {ext} 檔案" #: ../fdroidserver/update.py msgid "Include APKs that are signed with disabled algorithms like MD5" msgstr "包含 APKs 其簽名為有弱點的演算法,如 MD5" #: ../fdroidserver/common.py msgid "Initialising submodules" msgstr "初始化子模組" #: ../fdroidserver/install.py msgid "Install all signed applications available" msgstr "安裝所有已簽署可用的應用程式" #: ../fdroid msgid "Install built packages on devices" msgstr "在裝置上安裝構建套件包" #: ../fdroidserver/install.py #, python-format msgid "Installing %s..." msgstr "安裝 %s..." #: ../fdroidserver/install.py #, python-brace-format msgid "Installing '{apkfilename}' on {dev}..." msgstr "在 {dev} 安裝 '{apkfilename}' ..." #: ../fdroid msgid "Interact with the repo HTTP server" msgstr "與軟體庫 HTTP 伺服器互動" #: ../fdroidserver/update.py msgid "Interactively ask about things that need updating." msgstr "以對話方式詢問需要更新的內容。" #: ../fdroidserver/update.py msgid "Invalid APK" msgstr "無效的 APK" #: ../fdroidserver/metadata.py #, python-format msgid "Invalid boolean '%s'" msgstr "無效的布林 '%s'" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Invalid build flag at {line} in {linedesc}" msgstr "{linedesc} 中在 {line} 行出現無效的編譯標誌" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Invalid build format: {value} in {name}" msgstr "無效編譯格式:{name} 的 {value}" #: ../fdroidserver/lint.py msgid "Invalid bulleted list" msgstr "無效的排序列表" #: ../fdroidserver/lint.py #, python-format msgid "" "Invalid license tag \"%s\"! Use only tags from https://spdx.org/license-list" msgstr "無效的執照標籤 \"%s\"!請使用 https://spdx.org/license-list 標籤" #: ../fdroidserver/lint.py msgid "Invalid link - use [http://foo.bar Link title] or [http://foo.bar]" msgstr "無效連結 - 請使用 [http://foo.bar Link title] 或 [http://foo.bar]" #: ../fdroidserver/metadata.py #, python-format msgid "Invalid metadata in %s:%d" msgstr "%s 中有無效的中介資料 : %d" #: ../fdroidserver/metadata.py msgid "Invalid metadata in: " msgstr "無效的中介資料: " #: ../fdroidserver/common.py #, python-format msgid "Invalid name for published file: %s" msgstr "無效的已發佈檔案名稱:%s" #: ../fdroidserver/common.py #, python-brace-format msgid "Invalid package name {0}" msgstr "無效的套件包稱 {0}" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Invalid versionCode: \"{versionCode}\" is not an integer!" msgstr "無效的版本代號:\"{versionCode}\" 不是整數!" #: ../fdroidserver/common.py #, python-brace-format msgid "JAR signature failed to verify: {path}" msgstr "JAR 簽名驗證失敗:{path}" #: ../fdroidserver/common.py #, python-brace-format msgid "JAR signature verified: {path}" msgstr "JAR 簽名已驗證:{path}" #: ../fdroidserver/publish.py ../fdroidserver/update.py #: ../fdroidserver/mirror.py msgid "Java JDK not found! Install in standard location or set java_paths!" msgstr "找不到 Java JDK!請安裝在標準的位置或是設定 java_paths!" #: ../fdroidserver/signindex.py msgid "" "Java jarsigner not found! Install in standard location or set java_paths!" msgstr "找不到 Java jarsigner!請安裝在標準的位置或是設定 java_paths!" #: ../fdroidserver/lint.py msgid "Javascript in HTML src attributes" msgstr "JavaScript 在 HTML src 的屬性" #: ../fdroidserver/init.py msgid "Keystore for signing key:\t" msgstr "金鑰庫的簽署金鑰:\t" #: ../fdroidserver/lint.py #, python-brace-format msgid "" "Last used commit '{commit}' looks like a tag, but Update Check Mode is " "'{ucm}'" msgstr "最近採用的提交 '{commit}' 似乎是一個標籤,但更新的檢查模式為 '{ucm}'" #: ../fdroidserver/lint.py msgid "Liberapay donation methods belong in the LiberapayID flag" msgstr "Liberapay 捐款方式在 LiberapayID 標誌下" #: ../fdroidserver/rewritemeta.py msgid "List files that would be reformatted" msgstr "列出將重新格式化的檔案" #: ../fdroidserver/build.py msgid "Make the build stop on exceptions" msgstr "異常時停止做構建" #: ../fdroidserver/index.py msgid "Malformed repository mirrors." msgstr "軟體庫鏡像異常。" #: ../fdroidserver/server.py msgid "Malformed serverwebroot line:" msgstr "異常的 serverwebroot 行:" #: ../fdroidserver/gpgsign.py msgid "Missing output directory" msgstr "輸出目錄消失" #: ../fdroidserver/lint.py #, python-format msgid "Name '%s' is just the auto name - remove it" msgstr "名稱 '%s' 為自動產生 - 請移除它" #: ../fdroidserver/common.py msgid "No 'config.py' found, using defaults." msgstr "找不到 'config.py',使用預設。" #: ../fdroidserver/common.py msgid "No Android SDK found!" msgstr "未找到 Android SDK!" #: ../fdroidserver/import.py msgid "No android or kivy project could be found. Specify --subdir?" msgstr "找無 android 或 kivy 專案。指定子目錄嗎?" #: ../fdroidserver/install.py msgid "No attached devices found" msgstr "查無附加的設備" #: ../fdroidserver/metadata.py #, python-brace-format msgid "No commit specified for {versionName} in {linedesc}" msgstr "{linedesc} 沒有指定給 {versionName} 的提交" #: ../fdroidserver/index.py msgid "No fingerprint in URL." msgstr "在 URL 無指紋。" #: ../fdroidserver/common.py msgid "No git submodules available" msgstr "無可用的 git 子模組" #: ../fdroidserver/import.py msgid "No information found." msgstr "查無資訊。" #: ../fdroidserver/lint.py msgid "No need to specify that the app is Free Software" msgstr "不必要指明的應用程式為自由軟體" #: ../fdroidserver/lint.py msgid "No need to specify that the app is for Android" msgstr "不必指明該應用為 Android 版本" #: ../fdroidserver/server.py msgid "No option set! Edit your config.py to set at least one of these:" msgstr "未設定選項!編輯 config.py 檔,其中至少要設定一個:" #: ../fdroidserver/common.py msgid "No packages specified" msgstr "未指定套件" #: ../fdroidserver/install.py #, python-format msgid "No signed apk available for %s" msgstr "%s 沒有已簽署的 apk" #: ../fdroidserver/install.py msgid "No signed output directory - nothing to do" msgstr "輸出目錄無簽署 - 無須採取動作" #: ../fdroidserver/update.py #, python-brace-format msgid "No signing certificates found in {path}" msgstr "{path} 找不到簽署證書" #: ../fdroidserver/common.py #, python-format msgid "No such package: %s" msgstr "無此套件包:%s" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/common.py #, python-brace-format msgid "No such versionCode {versionCode} for app {appid}" msgstr "應用 {appid} 無版本代號 {versionCode}" #: ../fdroidserver/verify.py ../fdroidserver/publish.py msgid "No unsigned directory - nothing to do" msgstr "無未簽署目錄 - 無須採取行動" #: ../fdroidserver/signindex.py msgid "Nothing to do" msgstr "無須採取動作" #: ../fdroidserver/checkupdates.py #, python-brace-format msgid "Nothing to do for {appid}." msgstr "{appid} 無須採取行動." #: ../fdroidserver/init.py msgid "Now set these in config.py:" msgstr "現在設定這些在 config.py 中:" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/update.py #, python-brace-format msgid "OBB file has newer versionCode({integer}) than any APK:" msgstr "比起任何 APK,OBB 檔案有較新的版本代號 ({integer}):" #: ../fdroidserver/update.py msgid "OBB filename must start with \"main.\" or \"patch.\":" msgstr "OBB 檔名的前綴須為 \"main.\" 或 \"patch.\":" #: ../fdroidserver/update.py msgid "OBB's packagename does not match a supported APK:" msgstr "OBB 的套件包名稱與支援的 APK 並不相符:" #: ../fdroidserver/common.py #, python-brace-format msgid "Old APK signature failed to verify: {path}" msgstr "舊的 APK 簽名無法驗證:{path}" #: ../fdroidserver/update.py #, python-brace-format msgid "Only PNG and JPEG are supported for graphics, found: {path}" msgstr "圖像僅支援 PNG 和 JPEG,可在下方找到:{path}" #: ../fdroidserver/checkupdates.py msgid "Only print differences with the Play Store" msgstr "僅印出與 Play Store 的不同處" #: ../fdroidserver/checkupdates.py msgid "Only process apps with auto-updates" msgstr "只處理具有自動更新的應用程式" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "Options" msgstr "選項" #: ../fdroidserver/import.py msgid "Overall license of the project." msgstr "該專案的整體授權。" #: ../fdroidserver/dscanner.py msgid "Override path for repo APKs (default: ./repo)" msgstr "覆蓋軟體庫 APK 的路徑 (預設:./repo)" #: ../fdroidserver/common.py #, python-brace-format msgid "Parsing manifest at '{path}'" msgstr "解析 '{path}' 的單號" #: ../fdroidserver/common.py msgid "Password required with username" msgstr "用戶名稱須有密碼" #: ../fdroidserver/import.py msgid "Path to main Android project subdirectory, if not in root." msgstr "如果不在根目錄下,路徑為 android 主要專案的子目錄。" msgid "Path to main android project subdirectory, if not in root." msgstr "如果不在根目錄下,路徑為 android 主要專案的子目錄。" #: ../fdroidserver/init.py msgid "Path to the Android SDK (sometimes set in ANDROID_HOME)" msgstr "Android SDK 的路徑(有時在 ANDROID_HOME 中設定)" #: ../fdroidserver/btlog.py msgid "Path to the git repo to use as the log" msgstr "到 git 軟體庫的路徑用在日誌" #: ../fdroidserver/init.py msgid "Path to the keystore for the repo signing key" msgstr "給軟體庫簽署金鑰的金鑰庫路徑" #: ../fdroidserver/dscanner.py msgid "Prepare Drozer to run a scan" msgstr "準備 drozer 以執行掃描" msgid "Prepare drozer to run a scan" msgstr "準備 drozer 以執行掃描" #: ../fdroidserver/nightly.py msgid "Print the secret variable to the terminal for easy copy/paste" msgstr "在終端機顥示祕密變數以便於複製/貼上" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Problem with description of {appid}: {error}" msgstr "{appid}的描述有問題:{error}" #: ../fdroidserver/common.py #, python-brace-format msgid "Problem with xml at '{path}'" msgstr "'{path}' 的 xml 有問題" #: ../fdroidserver/checkupdates.py msgid "Process auto-updates" msgstr "處理自動更新" #: ../fdroidserver/publish.py ../fdroidserver/update.py #, python-brace-format msgid "Processing {apkfilename}" msgstr "處理 {apkfilename}" #: ../fdroidserver/checkupdates.py ../fdroidserver/scanner.py #, python-brace-format msgid "Processing {appid}" msgstr "處理 {appid}" #: ../fdroidserver/update.py msgid "Produce human-readable XML/JSON for index files" msgstr "產生可讀懂的 XML/JSON 格式以進行檔案索引" #: ../fdroidserver/update.py msgid "Produce human-readable index.xml" msgstr "產生可讀懂的 index.xml 格式" #: ../fdroidserver/import.py msgid "Project URL to import from." msgstr "要導入的專案網址。" #: ../fdroidserver/lint.py msgid "Punctuation should be avoided" msgstr "標點應予避免" #: ../fdroidserver/btlog.py msgid "Push the log to this git remote repository" msgstr "將日誌推送到 git 遠端軟體庫" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Pushing binary transparency log to {url}" msgstr "推二進制的透明日誌到{url}" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Pushing to {url}" msgstr "發佈到 {url}" #: ../fdroid msgid "Quickly start a new repository" msgstr "快速啟動新的儲存庫" #: ../fdroid msgid "Read all the metadata files and exit" msgstr "讀取所有的中介資料檔案並退出" #: ../fdroidserver/common.py #, python-brace-format msgid "Reading '{config_file}'" msgstr "讀取 '{config_file}' 中" #: ../fdroidserver/common.py #, python-brace-format msgid "Reading minSdkVersion failed: \"{apkfilename}\"" msgstr "讀取 minSdkVersion 失敗:\"{apkfilename}\"" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #. https://developer.android.com/guide/topics/manifest/manifest-element.html#vname #: ../fdroidserver/common.py #, python-brace-format msgid "" "Reading packageName/versionCode/versionName failed, APK invalid: " "'{apkfilename}'" msgstr "讀取套件名稱/版本代碼/版本名稱 失敗,APK 無效:'{apkfilename}'" #: ../fdroidserver/update.py #, python-brace-format msgid "Reading {apkfilename} from cache" msgstr "從緩存讀取 {apkfilename}" #: ../fdroidserver/stats.py msgid "" "Recalculate aggregate stats - use when changes have been made that would " "invalidate old cached data." msgstr "重新計算集合統計 - 使用時進行更改,這會使得舊的快取資料無效。" #: ../fdroidserver/common.py msgid "Removing specified files" msgstr "移除指定檔案" #: ../fdroidserver/update.py msgid "Rename APK files that do not match package.name_123.apk" msgstr "為不符合 package.name_123.apk 格式的 APK 檔案更名" #: ../fdroidserver/update.py msgid "Report on build data status" msgstr "報告構建資料的狀態" #: ../fdroidserver/build.py msgid "" "Reset and create a brand new build server, even if the existing one appears " "to be ok." msgstr "即使現有的伺服器明顯是好的,仍重置並建立一個新的構建伺服器。" #: ../fdroidserver/nightly.py #, python-brace-format msgid "Resigning {apkfilename} with provided debug.keystore" msgstr "用提供的 debug.keystore 放棄 {apkfilename}" #: ../fdroidserver/update.py msgid "Resize all the icons exceeding the max pixel size and exit" msgstr "重設超過最大像素的所有圖示之尺寸並且退出" #: ../fdroidserver/common.py msgid "Restrict output to warnings and errors" msgstr "將輸出限定為警告和錯誤" #: ../fdroid msgid "Rewrite all the metadata files" msgstr "重寫所有的中介資料檔案" #: ../fdroidserver/rewritemeta.py msgid "Rewrite to a specific format: " msgstr "重寫為特定的格式: " #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Rewriting '{appid}'" msgstr "重覆寫入 '{appid}'" #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Rewriting '{appid}' to '{path}'" msgstr "把 '{appid}' 重寫到 '{path}'" #: ../fdroidserver/lint.py msgid "Run rewritemeta to fix formatting" msgstr "執行 rewritemeta 到固定格式" #: ../fdroidserver/server.py ../fdroidserver/upload.py msgid "Running first pass with MD5 checking disabled" msgstr "關閉 MD5 檢查以執行首次通過" #: ../fdroidserver/mirror.py #, python-brace-format msgid "Running wget in {path}" msgstr "在 {path} 裡執行 wget" #: ../fdroidserver/dscanner.py msgid "Scan only the latest version of each package" msgstr "只掃描每個套件包的最新版本" #: ../fdroid msgid "Scan the source code of a package" msgstr "掃描套件包的原始碼" #: ../fdroidserver/scanner.py #, python-brace-format msgid "Scanner found {count} problems in {appid}:" msgstr "掃瞄器在 {appid} 發現{count} 個問題:" #: ../fdroidserver/scanner.py #, python-brace-format msgid "Scanner found {count} problems in {appid}:{versionCode}:" msgstr "掃瞄器在 {appid} 發現 {count} 個問題:{versionCode}:" #: ../fdroidserver/build.py msgid "Scanner found {} problem" msgid_plural "Scanner found {} problems" msgstr[0] "掃瞄器發現 {} 問題" #: ../fdroidserver/common.py msgid "Set clock to that time using:" msgstr "設定時鐘到那時使用:" #: ../fdroidserver/build.py #, python-brace-format msgid "Set open file limit to {integer}" msgstr "設定開啟的檔案限制為 {integer}" #: ../fdroid msgid "Set up an app build for a nightly build repo" msgstr "為非正式編譯庫建立一個應用編譯" #: ../fdroidserver/build.py msgid "Setting open file limit failed: " msgstr "設定開啟檔案的限制失敗: " #: ../fdroidserver/build.py #, python-brace-format msgid "Setting {0} sec timeout for this build" msgstr "為此構建設定 {0} 秒後超時" #: ../fdroidserver/build.py msgid "Setup an emulator, install the APK on it and perform a Drozer scan" msgstr "設置一個模擬器,在其上安裝 APK 並執行 drozer 掃描" msgid "Setup an emulator, install the apk on it and perform a drozer scan" msgstr "設置一個模擬器,在其上安裝 apk 並執行 drozer 掃描" #: ../fdroid msgid "Sign and place packages in the repo" msgstr "簽署並放置套件包在軟體庫中" #: ../fdroid msgid "Sign indexes created using update --nosign" msgstr "簽署使用更新建立的索引 --nosign" #: ../fdroidserver/build.py msgid "Skip scanning the source code for binaries and other problems" msgstr "跳過掃描二進制碼和其它問題的原始碼" #: ../fdroidserver/update.py #, python-brace-format msgid "Skipping '{apkfilename}' with invalid signature!" msgstr "略過帶無效簽署的 '{apkfilename}'!" #: ../fdroidserver/update.py #, python-brace-format msgid "Skipping index generation for {appid}" msgstr "略過 {appid} 的索引產生" #: ../fdroidserver/update.py #, python-brace-format msgid "Skipping {apkfilename} with invalid signature!" msgstr "略過無效簽名的 {apkfilename}!" #: ../fdroidserver/scanner.py #, python-brace-format msgid "Skipping {appid}: disabled" msgstr "略過 {appid}:關閉" #: ../fdroidserver/scanner.py #, python-brace-format msgid "Skipping {appid}: no builds specified" msgstr "略過 {appid}:無指定編譯" #: ../fdroidserver/server.py ../fdroidserver/upload.py msgid "Specify a local folder to sync the repo to" msgstr "指定要將軟體庫同步到本地的資料夾" #: ../fdroidserver/server.py ../fdroidserver/upload.py msgid "Specify an identity file to provide to SSH for rsyncing" msgstr "指定一個身份檔案以提供給 SSH 進行 rsync" #: ../fdroidserver/update.py msgid "Specify editor to use in interactive mode. Default " msgstr "指定編輯器在交互模式使用。預設 " #, c-format msgid "Specify editor to use in interactive mode. Default %s" msgstr "指定編輯器在互動模式使用。預設 %s" #: ../fdroidserver/update.py #, python-brace-format msgid "Specify editor to use in interactive mode. Default is {path}" msgstr "指定編輯器在互動模式使用。預設 {path}" #: ../fdroidserver/build.py msgid "Specify that we're running on the build server" msgstr "指定在構建伺服務器上運作" #: ../fdroidserver/nightly.py msgid "Specify which debug keystore file to use." msgstr "指定要使用哪個除錯金鑰庫檔。" #: ../fdroidserver/common.py msgid "Spew out even more information than normal" msgstr "傾湧出比正常情況下更多的資訊" #: ../fdroidserver/nightly.py #, python-brace-format msgid "Striping mystery signature from {apkfilename}" msgstr "正從 {apkfilename} 除去隱秘簽名" #: ../fdroidserver/lint.py #, python-format msgid "Summary '%s' is just the app's name" msgstr "摘要 '%s' 僅是應用程式的名稱" #: ../fdroidserver/lint.py #, python-brace-format msgid "Summary of length {length} is over the {limit} char limit" msgstr "摘要的長度 {length} 超過了字符 {limit} 限制" #: ../fdroidserver/common.py #, python-brace-format msgid "System clock is older than date in {path}!" msgstr "在 {path} 中的系統時鐘比日期早!" #: ../fdroidserver/build.py msgid "" "Test mode - put output in the tmp directory only, and always build, even if " "the output already exists." msgstr "測試模式 - 將輸出只放在 tmp 目錄中,即使輸出已經存在,仍然構建。" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/update.py #, python-brace-format msgid "The OBB version code must come after \"{name}.\":" msgstr "OBB 版本程式碼須在 \"{name}\" 之後:" #: ../fdroidserver/btlog.py msgid "The base URL for the repo to log (default: https://f-droid.org)" msgstr "軟體庫日誌的總部網址(預設:https://f-droid.org)" #: ../fdroidserver/mirror.py msgid "The directory to write the mirror to" msgstr "寫入目錄的鏡像到" #: ../fdroidserver/server.py msgid "The only commands currently supported are 'init' and 'update'" msgstr "目前支援的命令僅 'init' 或 'update'" #: ../fdroidserver/index.py msgid "The repository's fingerprint does not match." msgstr "軟體庫的指紋並不相符。" #: ../fdroidserver/common.py msgid "The repository's index could not be verified." msgstr "軟體庫的索引無法被驗證。" #: ../fdroidserver/server.py #, python-brace-format msgid "The root dir for local_copy_dir \"{path}\" does not exist!" msgstr "local_copy_dir \"{path}\" 根目錄不存在!" #: ../fdroidserver/nightly.py msgid "The the file to be included in the repo (path or glob)" msgstr "包含在此軟體庫的檔案 (path 或 glob)" #: ../fdroidserver/publish.py msgid "There is a keyalias collision - publishing halted" msgstr "發生主要別名衝突 - 發佈中止" #: ../fdroidserver/import.py #, python-format msgid "This repo already has local metadata: %s" msgstr "這個軟體庫已有本地的中介資料:%s" #: ../fdroidserver/server.py ../fdroidserver/upload.py msgid "" "To use awsbucket, awssecretkey and awsaccesskeyid must also be set in config." "py!" msgstr "" "要使用 awsbucket, awssecretkey 與 awsaccesskeyid 必須在 config.py 進行設定!" #: ../fdroidserver/lint.py msgid "UCM is set but it looks like checkupdates hasn't been run yet" msgstr "UCM 已被設定但它似乎尚未曾執行更新檢查" #: ../fdroidserver/lint.py msgid "URL shorteners should not be used" msgstr "不應使用 URL 縮短網址" #: ../fdroidserver/metadata.py msgid "URL title is just the URL, use brackets: [URL]" msgstr "URL 標題就是 URL,請用括號:[URL]" #: ../fdroidserver/lint.py #, python-brace-format msgid "URL {url} in Description: {error}" msgstr "描述中的 URL {url} : {error}" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Unexpected text on same line as {field} in {linedesc}" msgstr "在 {linedesc} 在同一行的 {field} 出現未預期的文字" #: ../fdroid msgid "Unknown exception found!" msgstr "發現未知的異常!" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vname #: ../fdroidserver/lint.py #, python-brace-format msgid "Unknown file '{filename}' in build '{versionName}'" msgstr "在 '{versionName}' 編譯出現不明的檔案 '{filename}'" #: ../fdroidserver/metadata.py #, python-format msgid "Unknown metadata format: %s" msgstr "未知的中介資料格式:%s" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Unknown metadata format: {path}" msgstr "未知的中介資料格式t:{path}" #: ../fdroidserver/common.py msgid "Unknown version of aapt, might cause problems: " msgstr "不明的 aapt 版本,可能會出問題: " #: ../fdroidserver/lint.py msgid "Unlinkified link - use [http://foo.bar Link title] or [http://foo.bar]" msgstr "無連鏈的連結 - 使用 [http://foo.bar 鏈結標題] 或 [http://foo.bar]" #: ../fdroidserver/lint.py msgid "Unnecessary leading space" msgstr "不必要的前導空間" #: ../fdroidserver/lint.py msgid "Unnecessary trailing space" msgstr "不必要的尾隨空間" #: ../fdroidserver/metadata.py msgid "Unrecognised app field: " msgstr "無法辨識的 app 欄位: " #: ../fdroidserver/metadata.py #, python-brace-format msgid "Unrecognised field '{field}' in {linedesc}" msgstr "在 {linedesc} 無法辨識的欄位 '{field}'" #: ../fdroidserver/update.py #, python-brace-format msgid "Unsupported file type \"{extension}\" for repo graphic" msgstr "用於軟體庫的圖片,不支援的檔案類型 \"{extension}\"" #: ../fdroidserver/update.py #, python-brace-format msgid "Unsupported graphics file found: {path}" msgstr "找到不支援的圖形檔案:{path}" #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Unsupported metadata format, use: --to [{supported}]" msgstr "未支援的中介資料格式,使用:--to [{supported}]" #: ../fdroidserver/metadata.py msgid "Unterminated ]" msgstr "未結束的 ]" #: ../fdroidserver/metadata.py msgid "Unterminated ]]" msgstr "未結束的 ]]" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Unterminated build in {name}" msgstr "在 {name} 未結束的編譯" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Unterminated continuation in {name}" msgstr "在 {name}未結束的續編" #: ../fdroidserver/lint.py #, python-format msgid "Unused extlib at %s" msgstr "在 %s 未使用的 extlib" #: ../fdroidserver/lint.py #, python-format msgid "Unused file at %s" msgstr "在 %s 未使用的檔案" #: ../fdroidserver/lint.py msgid "Update Check Name is set to the known app id - it can be removed" msgstr "更新 Check Name 被設定成已知的應用 id - 它可以被移除" #: ../fdroid msgid "Update repo information for new packages" msgstr "為新的套件包更新軟體庫資訊" #: ../fdroid msgid "Update the binary transparency log for a URL" msgstr "為網址更新二進制的透明日誌" #: ../fdroid msgid "Update the stats of the repo" msgstr "更新軟體庫的統計" #: ../fdroidserver/update.py ../fdroidserver/build.py msgid "Update the wiki" msgstr "更新維基百科" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "Usage" msgstr "使用" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "Usage: %s\n" msgstr "使用:%s\n" #: ../fdroidserver/lint.py msgid "Use /HEAD instead of /master to point at a file in the default branch" msgstr "使用 /HEAD 取代 /master 來指向默認分支的一個檔案" #: ../fdroidserver/update.py msgid "Use `fdroid update -c` to create it." msgstr "利用`fdroid update -c` 指令來建立。" #: ../fdroidserver/build.py msgid "Use build server" msgstr "使用構建伺服器" #: ../fdroidserver/update.py msgid "Use date from APK instead of current time for newly added APKs" msgstr "使用來自 APK 的日期,而不是新增之 APK 目前的時間" msgid "Use date from apk instead of current time for newly added apks" msgstr "新增的 apk 使用日期,來自 apk 而不是目前時間" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Using \"{path}\" for configuring s3cmd." msgstr "使用 \"{path}\" 對 s3cmd 組態。" #: ../fdroidserver/common.py msgid "" "Using Java's jarsigner, not recommended for verifying APKs! Use apksigner" msgstr "使用 Java 的 jarsigner,這並不建議用於驗證 APK!使用 apksigner" #: ../fdroidserver/init.py #, python-brace-format msgid "Using existing keystore \"{path}\"" msgstr "使用現有的金鑰庫 \"{path}\"" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Using s3cmd to sync with: {url}" msgstr "使用 s3cmd 來同步:{url}" #: ../fdroid msgid "Valid commands are:" msgstr "正確的命令是:" #: ../fdroid msgid "Verify the integrity of downloaded packages" msgstr "驗證下載套裝軟體的完整性" #: ../fdroidserver/index.py msgid "Verifying index signature:" msgstr "正在驗證索引簽名:" #: ../fdroid msgid "Warn about possible metadata errors" msgstr "關於中介資料可能錯誤的警告" #: ../fdroidserver/update.py msgid "" "When configured for signed indexes, create only unsigned indexes at this " "stage" msgstr "當已組態為簽名的索引時,只能在此階段建立無簽名的索引" msgid "X.509 'Distiguished Name' used when generating keys" msgstr "產生金鑰時使用 X.509 '專有名稱'" #: ../fdroidserver/init.py msgid "X.509 'Distinguished Name' used when generating keys" msgstr "產生金鑰時使用 X.509 的'專有名稱'" #: ../fdroidserver/common.py msgid "You can use ANDROID_HOME to set the path to your SDK, i.e.:" msgstr "可以使用 ANDROID_HOME 來設定 SDK 的路徑,i.e.:" #: ../fdroidserver/nightly.py #, python-brace-format msgid "adding IdentityFile to {path}" msgstr "添增 IdentityFile 到 {path}" #: ../fdroidserver/update.py #, python-brace-format msgid "adding to {name}: {path}" msgstr "添加到 {name}:{path}" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "ambiguous option: %(option)s could match %(matches)s" msgstr "模糊選項:%(option)s 可以相配 %(matches)s" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "ambiguous option: %s (%s?)" msgstr "不明確的選項:%s (%s?)" #: ../fdroidserver/lint.py ../fdroidserver/rewritemeta.py msgid "applicationId in the form APPID" msgstr "applicationId 格式為 APPID" #: ../fdroidserver/checkupdates.py msgid "applicationId to check for updates" msgstr "以 applicationId 檢查更新" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/verify.py ../fdroidserver/publish.py #: ../fdroidserver/dscanner.py ../fdroidserver/build.py #: ../fdroidserver/scanner.py ../fdroidserver/install.py msgid "applicationId with optional versionCode in the form APPID[:VERCODE]" msgstr "applicationId 具有任選的 versionCode 在此格式為 APPID [:VERCODE]" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "argument \"-\" with mode %r" msgstr "引數 \"-\" 為帶 %r 模式" #: ../fdroidserver/nightly.py msgid "attempting bare ssh connection to test deploy key:" msgstr "試圖顯露 ssh 連線來測試佈署金鑰:" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "can't open '%s': %s" msgstr "無法打開 '%s':%s" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "cannot have multiple subparser arguments" msgstr "無法有多個子解析器引數" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "cannot merge actions - two groups are named %r" msgstr "無法合併動作 - 二個群體被命名為 %r" #: ../fdroidserver/nightly.py msgid "cannot publish update, did you set the deploy key?" msgstr "無法發佈更新,是否正確地設定了佈署金鑰?" #: ../fdroidserver/nightly.py #, python-brace-format msgid "cloning {url}" msgstr "複製 {url}" #: ../fdroidserver/server.py msgid "command to execute, either 'init' or 'update'" msgstr "命令執行,'init' 或 'update' 中的任何一個" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "complex" msgstr "複雜" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "conflicting option string: %s" msgid_plural "conflicting option strings: %s" msgstr[0] "相衝突的選項字串:%s" #: ../fdroidserver/nightly.py #, python-brace-format msgid "copying {apkfilename} into {path}" msgstr "複製 {apkfilename} 到 {path}" #: ../fdroidserver/nightly.py #, python-brace-format msgid "created {path}" msgstr "已建立 {path}" #: ../fdroidserver/update.py #, python-brace-format msgid "deleting: repo/{apkfilename}" msgstr "刪除:repo/{apkfilename}" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "dest= is required for options like %r" msgstr "dest= 如 %r 選項為必須" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "expected %s argument" msgid_plural "expected %s arguments" msgstr[0] "預期的 %s 引數" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "expected at least one argument" msgstr "預期至少有一個引數" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "expected at most one argument" msgstr "最多一個引數" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "expected one argument" msgstr "預期有一個引數" #: ../fdroid msgid "fdroid [-h|--help|--version] []" msgstr "用法:fdroid [-h|--help|--version] <命令> []" #: ../fdroid msgid "fdroid [] [-h|--help|--version|]" msgstr "用法:fdroid [-h|--help|--version] <命令> []" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "floating-point" msgstr "浮點" #: ../fdroidserver/metadata.py msgid "force errors to be warnings, or ignore" msgstr "強制錯誤警告或忽略" #: ../fdroidserver/metadata.py msgid "force metadata errors (default) to be warnings, or to be ignored." msgstr "強制中介資料錯誤(預設值)作警告或忽略。" #: ../fdroidserver/common.py msgid "git svn clone failed" msgstr "Git svn 複製失敗" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "ignored explicit argument %r" msgstr "被忽略的明確引數 %r" #: ../fdroidserver/index.py msgid "index-v1 must have a signature, use `fdroid signindex` to create it!" msgstr "index-v1 必須要有簽名, 使用 `fdroid signindex`來建立一組簽名!" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "integer" msgstr "整數" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "invalid %(type)s value: %(value)r" msgstr "無效 %(type)s 值:%(value)r" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "invalid choice: %(value)r (choose from %(choices)s)" msgstr "無效選項:%(value)r (選取自 %(choices)s)" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "invalid conflict_resolution value: %r" msgstr "無效 conflict_resolution 值:%r" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "" "invalid option string %(option)r: must start with a character " "%(prefix_chars)r" msgstr "無效的選項字串 %(option)r:必須以字符 %(prefix_chars)r為起頭" #: ../fdroidserver/server.py #, python-brace-format msgid "" "local_copy_dir does not end with \"fdroid\", perhaps you meant: \"{path}\"" msgstr "local_copy_dir 未以 \"fdroid\"結尾,也許你指示的是: \"{path}\"" #: ../fdroidserver/server.py msgid "local_copy_dir must be an absolute path!" msgstr "local_copy_dir 必須為絕對路徑!" #: ../fdroidserver/server.py msgid "local_copy_dir must be directory, not a file!" msgstr "local_copy_dir 為目錄,不是檔案!" #: ../fdroidserver/index.py #, python-format msgid "mirror '%s' does not end with 'fdroid'!" msgstr "鏡像 '%s' 並不是以 'fdroid' 作結尾!" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "mutually exclusive arguments must be optional" msgstr "相互獨佔的引數必須為可選的" #: ../fdroidserver/mirror.py #, python-brace-format msgid "no \"icon\" in {appid}" msgstr "在 {appid} 中沒有 \"icon\"" #: ../fdroidserver/signatures.py msgid "no APK supplied" msgstr "無 APK 被供應" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "no such option: %s" msgstr "沒這樣的選項:%s" #: ../fdroid msgid "no version info found!" msgstr "未發現版本資訊!" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "not allowed with argument %s" msgstr "不許可帶引數 %s" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "one of the arguments %s is required" msgstr "引數 %s 必須要有一個" #: ../fdroidserver/index.py ../fdroidserver/common.py msgid "only accepts strings, lists, and tuples" msgstr "只接受字串,列表和元組" #: ../fdroidserver/install.py #, python-format msgid "option %s: If you really want to install all the signed apps, use --all" msgstr "選項 %s: 如果真要安裝全部的簽署應用, 請使用 --all" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "option %s: invalid %s value: %r" msgstr "選項 %s: 無效的 %s 值: %r" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "option %s: invalid choice: %r (choose from %s)" msgstr "選項 %s: 無效選項: %r (選自 %s )" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option -%s not recognized" msgstr "不能識別選項 -%s" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option -%s requires argument" msgstr "選項 -%s 需要參數" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option --%s must not have an argument" msgstr "選項 --%s 不能有參數" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option --%s not a unique prefix" msgstr "選項 --%s 不是單獨的字首" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option --%s not recognized" msgstr "不能識別選項 --%s" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option --%s requires argument" msgstr "選項 --%s 需要參數" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "optional arguments" msgstr "可選參數" #: ../fdroidserver/nightly.py #, python-brace-format msgid "overwriting existing {path}" msgstr "覆寫現有的 {path}" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "positional arguments" msgstr "位置參數" #: ../fdroidserver/signatures.py #, python-brace-format msgid "" "refuse downloading via insecure HTTP connection (use HTTPS or specify --no-" "https-check): {apkfilename}" msgstr "" "拒絕透過不安全的 HTTP 連線下載 (使用 HTTPS 或指明 --no-https-check): " "{apkfilename}" #: ../fdroidserver/signatures.py #, python-brace-format msgid "" "refuse downloading via insecure http connection (use https or specify --no-" "https-check): {apkfilename}" msgstr "" "拒絕透過不安全 http 連線下載 (使用 https 或指明 --no-https-check): " "{apkfilename}" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "s3cmd sync indexes {path} to {url} and delete" msgstr "s3cmd 同步索引 {path} 到 {url} 並刪除" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "show program's version number and exit" msgstr "顯示程式的版本號碼並離開" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.5/optparse.py #: /usr/lib/python3.6/argparse.py /usr/lib/python3.6/optparse.py msgid "show this help message and exit" msgstr "顯示此幫助訊息並離開" #: ../fdroidserver/signatures.py msgid "signed APK, either a file-path or HTTPS URL." msgstr "簽署 APK, 可由檔案路徑或是 HTTPS 網址." #: ../fdroidserver/update.py #, python-brace-format msgid "skipping source tarball: {path}" msgstr "略過來源 tarball: {path}" #: ../fdroidserver/lint.py msgid "srclibs missing name and/or @" msgstr "srclibs 缺失名稱或 @" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "the following arguments are required: %s" msgstr "需要下列參數:%s" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "unexpected option string: %s" msgstr "非預期選項字串: %s" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "unknown parser %(parser_name)r (choices: %(choices)s)" msgstr "不明解析器 %(parser_name)r (選項: %(choices)s)" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "unrecognized arguments: %s" msgstr "無法辨識的引數:%s" #: ../fdroidserver/common.py #, python-brace-format msgid "unsafe permissions on '{config_file}' (should be 0600)!" msgstr "'{config_file}' 檔案不安全的權限(應為 0600)!" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py ../fdroid msgid "usage: " msgstr "使用: " #: ../fdroid msgid "usage: fdroid [-h|--help|--version] []" msgstr "用法:fdroid [-h|--help|--version] <命令> []" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "using Apache libcloud to sync with {url}" msgstr "使用 Apache libcloud 來同步 {url}" #: ../fdroidserver/publish.py #, python-brace-format msgid "{0} app, {1} key aliases" msgid_plural "{0} apps, {1} key aliases" msgstr[0] "{0} 應用, {1} 主要別名" #: ../fdroidserver/update.py #, python-brace-format msgid "{apkfilename} ({appid}) has no metadata!" msgstr "{apkfilename} ({appid}) 沒有中介資料!" #: ../fdroidserver/update.py #, python-brace-format msgid "{apkfilename} has multiple {name} files, looks like Master Key exploit!" msgstr "{apkfilename} 有多個 {name} 檔案,看起來可能是主金鑰洩漏了!" #: ../fdroidserver/update.py #, python-brace-format msgid "{apkfilename}'s AndroidManifest.xml has a bad date: " msgstr "{apkfilename} AndroidManifest.xml 有一個無效的日期: " #: ../fdroidserver/update.py #, python-brace-format msgid "{appid} does not have a name! Using package name instead." msgstr "{appid}沒有名字! 使用套件名代替." #: ../fdroidserver/mirror.py #, python-brace-format msgid "{appid} is missing {name}" msgstr "{appid} 缺少 {name}" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vname #: ../fdroidserver/lint.py #, python-brace-format msgid "{appid}: Unknown extlib {path} in build '{versionName}'" msgstr "{appid}: 不明的 extlib {path} 編譯在 '{versionName}'" #: ../fdroidserver/scanner.py #, python-brace-format msgid "{appid}: no builds specified, running on current source state" msgstr "{appid}:沒有指定構建,在目前的原始碼狀態執行" #: ../fdroidserver/metadata.py #, python-brace-format msgid "{field} not terminated in {name}" msgstr "{field} 未終結在 {name}" #: ../fdroidserver/update.py #, python-brace-format msgid "{name} \"{path}\" does not exist! Correct it in config.py." msgstr "{name} \"{path}\" 不存在! 請更正 config.py." #: ../fdroidserver/nightly.py #, python-brace-format msgid "{path} does not exist! Create it by running:" msgstr "\"{path}\" 不存在!經由執行建立它:" #: ../fdroidserver/update.py #, python-brace-format msgid "{path} has bad file signature \"{pattern}\", possible Janus exploit!" msgstr "{path} 有不正確的檔案簽章「{pattern}」,可能是 Janus 漏洞!" #: ../fdroidserver/update.py #, python-brace-format msgid "{path} is zero size!" msgstr "{path} 為零尺寸!" #: ../fdroidserver/mirror.py #, python-brace-format msgid "{url} does not end with \"fdroid\", check the URL path!" msgstr "{url} 未以 \"fdroid\" 結尾,檢查 URL 路徑!" #: ../fdroidserver/build.py msgid "{} build failed" msgid_plural "{} builds failed" msgstr[0] "{} 編譯失敗" #: ../fdroidserver/build.py msgid "{} build succeeded" msgid_plural "{} builds succeeded" msgstr[0] "{} 編譯成功" #, fuzzy #~ msgid "Add PGP signatures for packages in repo using GnuPG" #~ msgstr "在軟體倉庫中加入套件包的 gpg 簽署" #~ msgid "Add gpg signatures for packages in repo" #~ msgstr "在軟體倉庫中加入套件包的 gpg 簽署" #~ msgid "Clean update - don't uses caches, reprocess all apks" #~ msgstr "清除更新 - 不使用快取,重新處理全部的 apk" #~ msgid "app-id in the form APPID" #~ msgstr "app-id,格式為 APPID" #~ msgid "app-id to check for updates" #~ msgstr "以 app-id 檢查更新" #~ msgid "app-id with optional versionCode in the form APPID[:VERCODE]" #~ msgstr "app-id 具有任選的 versionCode 在此格式為 APPID [:VERCODE]" #~ msgid "app-id with optional versioncode in the form APPID[:VERCODE]" #~ msgstr "app-id 具有任選的 versioncode 在此格式為 APPID [:VERCODE]" fdroidserver-1.0.9/locale/ko/0000775000175000017500000000000013324115531015773 5ustar hanshans00000000000000fdroidserver-1.0.9/locale/ko/LC_MESSAGES/0000775000175000017500000000000013324115531017560 5ustar hanshans00000000000000fdroidserver-1.0.9/locale/ko/LC_MESSAGES/fdroidserver.po0000664000175000017500000014470013322065577022640 0ustar hanshans00000000000000# SOME DESCRIPTIVE TITLE. # This file is put in the public domain. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: fdroidserver 0.8-135-g16dd6d28\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" "POT-Creation-Date: 2018-02-13 09:01+0100\n" "PO-Revision-Date: 2018-04-17 13:03+0000\n" "Last-Translator: Myeongjin Lee \n" "Language-Team: Korean \n" "Language: ko\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Weblate 3.0-dev\n" #: ../fdroidserver/nightly.py msgid "" "\n" "SSH Public Key to be used as Deploy Key:" msgstr "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "" "\n" "{path} encoded for the DEBUG_KEYSTORE secret variable:" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "\"%s/\" has no matching metadata file!" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "\"{path}\" contains outdated {name} ({version})" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "\"{path}\" contains recent {name} ({version})" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "\"{path}\" exists but s3cmd is not installed!" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "\"{path}\" is not an accepted format, convert to: {formats}" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "%(option)s option requires %(number)d argument" msgid_plural "%(option)s option requires %(number)d arguments" msgstr[0] "" #: ../fdroidserver/mirror.py #, python-format msgid "%(prog)s [options] url" msgstr "%(prog)s [옵션] url" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "%(prog)s: error: %(message)s\n" msgstr "%(prog)s: 오류: %(message)s\n" #: ../fdroidserver/scanner.py #, python-format msgid "%d problems found" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "%prog [options]" msgstr "%prog [옵션]" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "%r is not callable" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "%s is not an accepted build field" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "%s option does not take a value" msgstr "" #: ../fdroidserver/index.py ../fdroidserver/common.py msgid "'keypass' not found in config.py!" msgstr "" #: ../fdroidserver/index.py ../fdroidserver/common.py msgid "'keystore' not found in config.py!" msgstr "" #: ../fdroidserver/index.py ../fdroidserver/common.py msgid "'keystorepass' not found in config.py!" msgstr "" #: ../fdroidserver/index.py ../fdroidserver/common.py msgid "'repo_keyalias' not found in config.py!" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "'required' is an invalid argument for positionals" msgstr "" #: ../fdroidserver/common.py msgid "'sdk_path' not set in 'config.py'!" msgstr "" #. Translators: "build-tools" is the file name of a package from #. Google, it is part of the Android SDK. So it probably shouldn't be #. translated or transliterated. #: ../fdroidserver/common.py #, python-brace-format msgid "'{aapt}' is too old, fdroid requires build-tools-23.0.0 or newer!" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "'{aapt}' is too old, fdroid requires build-tools-{version} or newer!" msgstr "" #: ../fdroidserver/install.py #, python-brace-format msgid "'{apkfilename}' is already installed on {dev}." msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "" "'{field}' will be in random order! Use () or [] brackets if order is " "important!" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "'{path}' failed to execute!" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "'{value}' is not a valid {field} in {appid}. Regex pattern: {pattern}" msgstr "" #: ../fdroidserver/checkupdates.py #, python-brace-format msgid "...checkupdate failed for {appid} : {error}" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid ".__call__() not defined" msgstr "" #: ../fdroidserver/metadata.py msgid ".fdroid.txt is not supported! Convert to .fdroid.yml or .fdroid.json." msgstr "" #: ../fdroidserver/lint.py msgid "/issues is missing" msgstr "" #: ../fdroidserver/mirror.py msgid "A URL is required as an argument!" msgstr "" #: ../fdroid msgid "Add PGP signatures using GnuPG for packages in repo" msgstr "" #: ../fdroid msgid "Add a new application from its source code" msgstr "새 애플리케이션의 소스 코드로부터 그것을 추가합니다" #: ../fdroidserver/update.py msgid "Add a repo signing key to an unsigned repo" msgstr "" #: ../fdroidserver/update.py msgid "Add skeleton metadata files for APKs that are missing them" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Adding new repo for only {name}" msgstr "" #: ../fdroidserver/init.py msgid "Alias of the repo signing key in the keystore" msgstr "" #: ../fdroidserver/import.py msgid "" "Allows a different revision (or git branch) to be specified for the initial " "import" msgstr "" #: ../fdroidserver/mirror.py msgid "Also mirror the full archive section" msgstr "" #: ../fdroidserver/lint.py msgid "Also warn about formatting issues, like rewritemeta -l" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Android SDK '{path}' does not have '{dirname}' installed!" msgstr "" #: ../fdroidserver/common.py msgid "Android SDK not found!" msgstr "Android SDK를 찾을 수 없습니다!" #: ../fdroidserver/common.py #, python-brace-format msgid "Android SDK path '{path}' does not exist!" msgstr "Android SDK 경로 '{path}' 존재하지 않습니다!" #: ../fdroidserver/common.py #, python-brace-format msgid "Android SDK path '{path}' is not a directory!" msgstr "Android SDK 경로 '{path}' 디렉터리가 아닙니다!" #. Translators: "build-tools" is the file name of a package from #. Google, it is part of the Android SDK. So it probably shouldn't be #. translated or transliterated. #: ../fdroidserver/common.py #, python-brace-format msgid "Android build-tools path '{path}' does not exist!" msgstr "Android 빌드 도구 경로 '{path}' 존재하지 않습니다!" #: ../fdroidserver/update.py msgid "AndroidManifest.xml has no date" msgstr "" #: ../fdroidserver/lint.py #, python-brace-format msgid "App is in '{repo}' but has a link to {url}" msgstr "" #: ../fdroidserver/lint.py msgid "Appending .git is not necessary" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Archiving {apkfilename} with invalid signature!" msgstr "" #: ../fdroidserver/mirror.py msgid "" "Base URL to mirror, can include the index signing key using the query " "string: ?fingerprint=" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vname #: ../fdroidserver/lint.py #, python-brace-format msgid "Branch '{branch}' used as commit in build '{versionName}'" msgstr "" #: ../fdroidserver/lint.py #, python-brace-format msgid "Branch '{branch}' used as commit in srclib '{srclib}'" msgstr "" #: ../fdroid msgid "Build a package from source" msgstr "소스로부터 패키지를 빌드합니다" #: ../fdroidserver/build.py msgid "Build all applications available" msgstr "사용 가능한 모든 애플리케이션을 빌드합니다" #: ../fdroidserver/lint.py msgid "Build generated by `fdroid import` - remove disable line once ready" msgstr "" #: ../fdroidserver/build.py msgid "Build only the latest version of each package" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "" "Build should have comma-separated versionName and versionCode, not " "\"{value}\", in {linedesc}" msgstr "" #: ../fdroidserver/init.py #, python-format msgid "Built repo based in \"%s\" with this config:" msgstr "" #: ../fdroidserver/build.py msgid "Can't build due to {} error while scanning" msgid_plural "Can't build due to {} errors while scanning" msgstr[0] "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Cannot find a packageName for {path}!" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Cannot find an appid for {path}!" msgstr "" #: ../fdroidserver/vmtools.py #, python-brace-format msgid "Cannot read \"{path}\"!" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Cannot resolve app id {appid}" msgstr "" #: ../fdroidserver/rewritemeta.py msgid "Cannot use --list and --to at the same time" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Cannot write \"{path}\", not an accepted format, use: {formats}" msgstr "" #: ../fdroidserver/lint.py msgid "Categories are not set" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Category '%s' is not valid" msgstr "" #: ../fdroid msgid "Check for updates to applications" msgstr "애플리케이션으로의 업데이트를 확인합니다" #: ../fdroidserver/update.py #, python-brace-format msgid "" "Checking archiving for {appid} - apks:{integer}, keepversions:{keep}, " "archapks:{arch}" msgstr "" #: ../fdroidserver/dscanner.py msgid "Clean after all scans have finished" msgstr "" #: ../fdroidserver/dscanner.py msgid "Clean before the scans start and rebuild the container" msgstr "" #: ../fdroidserver/dscanner.py msgid "Clean up all containers and then exit" msgstr "" #: ../fdroidserver/update.py msgid "Clean update - don't uses caches, reprocess all APKs" msgstr "" #: ../fdroidserver/import.py msgid "Comma separated list of categories." msgstr "" #: ../fdroid #, c-format, python-format msgid "Command '%s' not recognised.\n" msgstr "" #: ../fdroidserver/checkupdates.py msgid "Commit changes" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Could not find '{command}' on your system" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Could not find {path} to remove it" msgstr "" #: ../fdroidserver/update.py msgid "Could not open apk file for analysis" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/import.py msgid "Couldn't find latest version code" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vname #: ../fdroidserver/import.py msgid "Couldn't find latest version name" msgstr "" #: ../fdroidserver/import.py msgid "Couldn't find package ID" msgstr "" #: ../fdroidserver/update.py msgid "Cowardily refusing to overwrite existing signing key setup!" msgstr "" #: ../fdroidserver/update.py msgid "Create a repo signing key in a keystore" msgstr "" #: ../fdroidserver/update.py msgid "Create skeleton metadata files that are missing" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Created new container \"{name}\"" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Creating \"{path}\" for configuring s3cmd." msgstr "" #: ../fdroidserver/publish.py msgid "Creating log directory" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Creating new S3 bucket: {url}" msgstr "" #: ../fdroidserver/publish.py msgid "Creating output directory" msgstr "" #: ../fdroidserver/index.py msgid "Creating signed index with this key (SHA256):" msgstr "" #: ../fdroidserver/import.py ../fdroidserver/verify.py #: ../fdroidserver/publish.py msgid "Creating temporary directory" msgstr "" #: ../fdroidserver/index.py msgid "Creating unsigned index in preparation for signing" msgstr "" #: ../fdroidserver/nightly.py msgid "DEBUG_KEYSTORE is not set or the value is incomplete" msgstr "" #: ../fdroidserver/update.py msgid "Delete APKs and/or OBBs without metadata from the repo" msgstr "저장소에서 메타데이터 없이 APK 및/또는 OBB를 삭제합니다" #: ../fdroidserver/update.py #, python-brace-format msgid "Deleting unknown file: {path}" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Description '%s' is just the app's summary" msgstr "" #: ../fdroidserver/lint.py msgid "Description has a duplicate line" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Description has a list (%s) but it isn't bulleted (*) nor numbered (#)" msgstr "" #: ../fdroidserver/lint.py #, python-brace-format msgid "Description of length {length} is over the {limit} char limit" msgstr "" #: ../fdroidserver/mirror.py #, python-brace-format msgid "Do not include \"{path}\" in URL!" msgstr "" #: ../fdroidserver/init.py msgid "Do not prompt for Android SDK path, just fail" msgstr "" #: ../fdroidserver/build.py msgid "Don't create a source tarball, useful when testing a build" msgstr "" #: ../fdroidserver/stats.py msgid "Don't do anything logs-related" msgstr "" #: ../fdroidserver/build.py msgid "" "Don't refresh the repository, useful when testing a build with no internet " "connection" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/nightly.py #: ../fdroidserver/upload.py msgid "Don't use rsync checksums" msgstr "" #: ../fdroid msgid "Download complete mirrors of small repos" msgstr "" #: ../fdroidserver/stats.py msgid "Download logs we don't have" msgstr "" #: ../fdroidserver/common.py msgid "Downloading the repository already failed once, not trying again." msgstr "" #: ../fdroidserver/verify.py #, python-brace-format msgid "Downloading {url} failed. {error}" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "" "Duplicate build recipe found for versionCode {versionCode} in {linedesc}" msgstr "" #: ../fdroidserver/lint.py #, python-brace-format msgid "Duplicate link in '{field}': {url}" msgstr "" #: ../fdroid msgid "Dynamically scan APKs post build" msgstr "" #: ../fdroidserver/mirror.py msgid "" "ERROR: this command should never be used to mirror f-droid.org!\n" "A full mirror of f-droid.org requires more than 200GB." msgstr "" #: ../fdroidserver/nightly.py msgid "ERROR: unsupported CI type, patches welcome!" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Empty build flag at {linedesc}" msgstr "" #: ../fdroidserver/init.py #, python-format msgid "" "Enter the path to the Android SDK (%s) here:\n" "> " msgstr "" #: ../fdroidserver/server.py ../fdroidserver/checkupdates.py #: ../fdroidserver/upload.py #, python-format msgid "Error while attempting to publish log: %s" msgstr "" #: ../fdroidserver/import.py msgid "Error while getting repo address" msgstr "" #: ../fdroid msgid "Extract signatures from APKs" msgstr "" #: ../fdroidserver/signatures.py #, python-brace-format msgid "Failed fetching signatures for '{apkfilename}': {error}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Failed reading {path}: {error}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Failed resizing {path}: {error}" msgstr "" #: ../fdroidserver/publish.py msgid "Failed to align application" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Failed to create S3 bucket: {url}" msgstr "" #: ../fdroidserver/common.py msgid "Failed to get APK manifest information" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Failed to get apk information, deleting {path}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Failed to get apk information, skipping {path}" msgstr "" #: ../fdroidserver/install.py #, python-brace-format msgid "Failed to install '{apkfilename}' on {dev}: {error}" msgstr "" #: ../fdroidserver/publish.py ../fdroidserver/common.py msgid "Failed to sign application" msgstr "" #: ../fdroidserver/common.py msgid "Failed to zipalign application" msgstr "" #: ../fdroidserver/build.py #, python-brace-format msgid "Fetched buildserverid from VM: {buildserverid}" msgstr "" #: ../fdroidserver/signatures.py #, python-brace-format msgid "Fetched signatures for '{apkfilename}' -> '{sigdir}'" msgstr "" #: ../fdroidserver/verify.py ../fdroidserver/stats.py ../fdroidserver/update.py #: ../fdroidserver/rewritemeta.py ../fdroidserver/build.py #: ../fdroidserver/checkupdates.py ../fdroidserver/scanner.py #: ../fdroidserver/install.py msgid "Finished" msgstr "" #: ../fdroidserver/lint.py msgid "Flattr donation methods belong in the FlattrID flag" msgstr "" #: ../fdroidserver/lint.py msgid "Forbidden HTML tags" msgstr "" #: ../fdroidserver/build.py msgid "" "Force build of disabled apps, and carries on regardless of scan problems. " "Only allowed in test mode." msgstr "" #: ../fdroidserver/build.py #, python-brace-format msgid "Force halting build after {0} sec timeout!" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Found \"{path}\" graphic without metadata for app \"{name}\"!" msgstr "" #: ../fdroidserver/common.py msgid "Found invalid appids in arguments" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/common.py msgid "Found invalid versionCodes for some apps" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Found multiple metadata files for {appid}" msgstr "" #: ../fdroidserver/index.py msgid "Found multiple signing certificates for repository." msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Found multiple signing certificates in {path}" msgstr "" #: ../fdroidserver/index.py msgid "Found no signing certificates for repository." msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Found non-file at %s" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Generated skeleton metadata for {appid}" msgstr "" #: ../fdroidserver/common.py #, python-format msgid "Git checkout of '%s' failed" msgstr "" #: ../fdroidserver/common.py msgid "Git clean failed" msgstr "" #: ../fdroidserver/common.py msgid "Git fetch failed" msgstr "" #: ../fdroidserver/common.py msgid "Git remote set-head failed" msgstr "" #: ../fdroidserver/common.py msgid "Git reset failed" msgstr "" #: ../fdroidserver/common.py msgid "Git submodule sync failed" msgstr "" #: ../fdroidserver/common.py msgid "Git submodule update failed" msgstr "" #: ../fdroidserver/common.py msgid "HTTPS must be used with Subversion URLs!" msgstr "" #: ../fdroidserver/index.py msgid "Ignoring package without metadata: " msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Ignoring stale cache data for {apkfilename}" msgstr "" #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Ignoring {ext} file at '{path}'" msgstr "" #: ../fdroidserver/update.py msgid "Include APKs that are signed with disabled algorithms like MD5" msgstr "" #: ../fdroidserver/common.py msgid "Initialising submodules" msgstr "" #: ../fdroidserver/install.py msgid "Install all signed applications available" msgstr "" #: ../fdroid msgid "Install built packages on devices" msgstr "" #: ../fdroidserver/install.py #, python-format msgid "Installing %s..." msgstr "" #: ../fdroidserver/install.py #, python-brace-format msgid "Installing '{apkfilename}' on {dev}..." msgstr "" #: ../fdroid msgid "Interact with the repo HTTP server" msgstr "" #: ../fdroidserver/update.py msgid "Interactively ask about things that need updating." msgstr "" #: ../fdroidserver/update.py msgid "Invalid APK" msgstr "" #: ../fdroidserver/metadata.py #, python-format msgid "Invalid boolean '%s'" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Invalid build flag at {line} in {linedesc}" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Invalid build format: {value} in {name}" msgstr "" #: ../fdroidserver/lint.py msgid "Invalid bulleted list" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "" "Invalid license tag \"%s\"! Use only tags from https://spdx.org/license-list" msgstr "" #: ../fdroidserver/lint.py msgid "Invalid link - use [http://foo.bar Link title] or [http://foo.bar]" msgstr "" #: ../fdroidserver/metadata.py #, python-format msgid "Invalid metadata in %s:%d" msgstr "" #: ../fdroidserver/metadata.py msgid "Invalid metadata in: " msgstr "" #: ../fdroidserver/common.py #, python-format msgid "Invalid name for published file: %s" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Invalid package name {0}" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Invalid versionCode: \"{versionCode}\" is not an integer!" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "JAR signature failed to verify: {path}" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "JAR signature verified: {path}" msgstr "" #: ../fdroidserver/publish.py ../fdroidserver/update.py #: ../fdroidserver/mirror.py msgid "Java JDK not found! Install in standard location or set java_paths!" msgstr "" #: ../fdroidserver/signindex.py msgid "" "Java jarsigner not found! Install in standard location or set java_paths!" msgstr "" #: ../fdroidserver/lint.py msgid "Javascript in HTML src attributes" msgstr "" #: ../fdroidserver/init.py msgid "Keystore for signing key:\t" msgstr "" #: ../fdroidserver/lint.py #, python-brace-format msgid "" "Last used commit '{commit}' looks like a tag, but Update Check Mode is " "'{ucm}'" msgstr "" #: ../fdroidserver/lint.py msgid "Liberapay donation methods belong in the LiberapayID flag" msgstr "" #: ../fdroidserver/rewritemeta.py msgid "List files that would be reformatted" msgstr "" #: ../fdroidserver/build.py msgid "Make the build stop on exceptions" msgstr "" #: ../fdroidserver/index.py msgid "Malformed repository mirrors." msgstr "" #: ../fdroidserver/server.py msgid "Malformed serverwebroot line:" msgstr "" #: ../fdroidserver/gpgsign.py msgid "Missing output directory" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Name '%s' is just the auto name - remove it" msgstr "" #: ../fdroidserver/common.py msgid "No 'config.py' found, using defaults." msgstr "" #: ../fdroidserver/common.py msgid "No Android SDK found!" msgstr "" #: ../fdroidserver/import.py msgid "No android or kivy project could be found. Specify --subdir?" msgstr "" #: ../fdroidserver/install.py msgid "No attached devices found" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "No commit specified for {versionName} in {linedesc}" msgstr "" #: ../fdroidserver/index.py msgid "No fingerprint in URL." msgstr "" #: ../fdroidserver/common.py msgid "No git submodules available" msgstr "" #: ../fdroidserver/import.py msgid "No information found." msgstr "" #: ../fdroidserver/lint.py msgid "No need to specify that the app is Free Software" msgstr "" #: ../fdroidserver/lint.py msgid "No need to specify that the app is for Android" msgstr "" #: ../fdroidserver/server.py msgid "No option set! Edit your config.py to set at least one of these:" msgstr "" #: ../fdroidserver/common.py msgid "No packages specified" msgstr "" #: ../fdroidserver/install.py #, python-format msgid "No signed apk available for %s" msgstr "" #: ../fdroidserver/install.py msgid "No signed output directory - nothing to do" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "No signing certificates found in {path}" msgstr "" #: ../fdroidserver/common.py #, python-format msgid "No such package: %s" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/common.py #, python-brace-format msgid "No such versionCode {versionCode} for app {appid}" msgstr "" #: ../fdroidserver/verify.py ../fdroidserver/publish.py msgid "No unsigned directory - nothing to do" msgstr "" #: ../fdroidserver/signindex.py msgid "Nothing to do" msgstr "" #: ../fdroidserver/checkupdates.py #, python-brace-format msgid "Nothing to do for {appid}." msgstr "" #: ../fdroidserver/init.py msgid "Now set these in config.py:" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/update.py #, python-brace-format msgid "OBB file has newer versionCode({integer}) than any APK:" msgstr "" #: ../fdroidserver/update.py msgid "OBB filename must start with \"main.\" or \"patch.\":" msgstr "" #: ../fdroidserver/update.py msgid "OBB's packagename does not match a supported APK:" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Old APK signature failed to verify: {path}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Only PNG and JPEG are supported for graphics, found: {path}" msgstr "" #: ../fdroidserver/checkupdates.py msgid "Only print differences with the Play Store" msgstr "" #: ../fdroidserver/checkupdates.py msgid "Only process apps with auto-updates" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "Options" msgstr "옵션" #: ../fdroidserver/import.py msgid "Overall license of the project." msgstr "" #: ../fdroidserver/dscanner.py msgid "Override path for repo APKs (default: ./repo)" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Parsing manifest at '{path}'" msgstr "" #: ../fdroidserver/common.py msgid "Password required with username" msgstr "" #: ../fdroidserver/import.py msgid "Path to main Android project subdirectory, if not in root." msgstr "" msgid "Path to main android project subdirectory, if not in root." msgstr "" #: ../fdroidserver/init.py msgid "Path to the Android SDK (sometimes set in ANDROID_HOME)" msgstr "" #: ../fdroidserver/btlog.py msgid "Path to the git repo to use as the log" msgstr "" #: ../fdroidserver/init.py msgid "Path to the keystore for the repo signing key" msgstr "" #: ../fdroidserver/dscanner.py msgid "Prepare Drozer to run a scan" msgstr "" msgid "Prepare drozer to run a scan" msgstr "" #: ../fdroidserver/nightly.py msgid "Print the secret variable to the terminal for easy copy/paste" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Problem with description of {appid}: {error}" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Problem with xml at '{path}'" msgstr "" #: ../fdroidserver/checkupdates.py msgid "Process auto-updates" msgstr "" #: ../fdroidserver/publish.py ../fdroidserver/update.py #, python-brace-format msgid "Processing {apkfilename}" msgstr "" #: ../fdroidserver/checkupdates.py ../fdroidserver/scanner.py #, python-brace-format msgid "Processing {appid}" msgstr "" #: ../fdroidserver/update.py msgid "Produce human-readable XML/JSON for index files" msgstr "사람이 읽을 수 있는 색인 파일을 위한 XML/JSON을 생산합니다" #: ../fdroidserver/update.py msgid "Produce human-readable index.xml" msgstr "사람이 읽을 수 있는 index.xml을 생산합니다" #: ../fdroidserver/import.py msgid "Project URL to import from." msgstr "" #: ../fdroidserver/lint.py msgid "Punctuation should be avoided" msgstr "" #: ../fdroidserver/btlog.py msgid "Push the log to this git remote repository" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Pushing binary transparency log to {url}" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Pushing to {url}" msgstr "" #: ../fdroid msgid "Quickly start a new repository" msgstr "새 저장소를 빠르게 시작합니다" #: ../fdroid msgid "Read all the metadata files and exit" msgstr "모든 메타데이터 파일을 읽고 종료합니다" #: ../fdroidserver/common.py #, python-brace-format msgid "Reading '{config_file}'" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Reading minSdkVersion failed: \"{apkfilename}\"" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #. https://developer.android.com/guide/topics/manifest/manifest-element.html#vname #: ../fdroidserver/common.py #, python-brace-format msgid "" "Reading packageName/versionCode/versionName failed, APK invalid: " "'{apkfilename}'" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Reading {apkfilename} from cache" msgstr "" #: ../fdroidserver/stats.py msgid "" "Recalculate aggregate stats - use when changes have been made that would " "invalidate old cached data." msgstr "" #: ../fdroidserver/common.py msgid "Removing specified files" msgstr "" #: ../fdroidserver/update.py msgid "Rename APK files that do not match package.name_123.apk" msgstr "" #: ../fdroidserver/update.py msgid "Report on build data status" msgstr "" #: ../fdroidserver/build.py msgid "" "Reset and create a brand new build server, even if the existing one appears " "to be ok." msgstr "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "Resigning {apkfilename} with provided debug.keystore" msgstr "" #: ../fdroidserver/update.py msgid "Resize all the icons exceeding the max pixel size and exit" msgstr "" #: ../fdroidserver/common.py msgid "Restrict output to warnings and errors" msgstr "" #: ../fdroid msgid "Rewrite all the metadata files" msgstr "모든 메타데이터 파일을 다시 씁니다" #: ../fdroidserver/rewritemeta.py msgid "Rewrite to a specific format: " msgstr "" #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Rewriting '{appid}'" msgstr "" #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Rewriting '{appid}' to '{path}'" msgstr "" #: ../fdroidserver/lint.py msgid "Run rewritemeta to fix formatting" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py msgid "Running first pass with MD5 checking disabled" msgstr "" #: ../fdroidserver/mirror.py #, python-brace-format msgid "Running wget in {path}" msgstr "" #: ../fdroidserver/dscanner.py msgid "Scan only the latest version of each package" msgstr "" #: ../fdroid msgid "Scan the source code of a package" msgstr "패키지의 소스 코드를 스캔합니다" #: ../fdroidserver/scanner.py #, python-brace-format msgid "Scanner found {count} problems in {appid}:" msgstr "" #: ../fdroidserver/scanner.py #, python-brace-format msgid "Scanner found {count} problems in {appid}:{versionCode}:" msgstr "" #: ../fdroidserver/build.py msgid "Scanner found {} problem" msgid_plural "Scanner found {} problems" msgstr[0] "" #: ../fdroidserver/common.py msgid "Set clock to that time using:" msgstr "" #: ../fdroidserver/build.py #, python-brace-format msgid "Set open file limit to {integer}" msgstr "" #: ../fdroid msgid "Set up an app build for a nightly build repo" msgstr "" #: ../fdroidserver/build.py msgid "Setting open file limit failed: " msgstr "" #: ../fdroidserver/build.py #, python-brace-format msgid "Setting {0} sec timeout for this build" msgstr "" #: ../fdroidserver/build.py msgid "Setup an emulator, install the APK on it and perform a Drozer scan" msgstr "" msgid "Setup an emulator, install the apk on it and perform a drozer scan" msgstr "" #: ../fdroid msgid "Sign and place packages in the repo" msgstr "" #: ../fdroid msgid "Sign indexes created using update --nosign" msgstr "" #: ../fdroidserver/build.py msgid "Skip scanning the source code for binaries and other problems" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Skipping '{apkfilename}' with invalid signature!" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Skipping index generation for {appid}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Skipping {apkfilename} with invalid signature!" msgstr "" #: ../fdroidserver/scanner.py #, python-brace-format msgid "Skipping {appid}: disabled" msgstr "" #: ../fdroidserver/scanner.py #, python-brace-format msgid "Skipping {appid}: no builds specified" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py msgid "Specify a local folder to sync the repo to" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py msgid "Specify an identity file to provide to SSH for rsyncing" msgstr "" #: ../fdroidserver/update.py msgid "Specify editor to use in interactive mode. Default " msgstr "" #, c-format msgid "Specify editor to use in interactive mode. Default %s" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Specify editor to use in interactive mode. Default is {path}" msgstr "" #: ../fdroidserver/build.py msgid "Specify that we're running on the build server" msgstr "" #: ../fdroidserver/nightly.py msgid "Specify which debug keystore file to use." msgstr "" #: ../fdroidserver/common.py msgid "Spew out even more information than normal" msgstr "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "Striping mystery signature from {apkfilename}" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Summary '%s' is just the app's name" msgstr "" #: ../fdroidserver/lint.py #, python-brace-format msgid "Summary of length {length} is over the {limit} char limit" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "System clock is older than date in {path}!" msgstr "" #: ../fdroidserver/build.py msgid "" "Test mode - put output in the tmp directory only, and always build, even if " "the output already exists." msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/update.py #, python-brace-format msgid "The OBB version code must come after \"{name}.\":" msgstr "" #: ../fdroidserver/btlog.py msgid "The base URL for the repo to log (default: https://f-droid.org)" msgstr "" #: ../fdroidserver/mirror.py msgid "The directory to write the mirror to" msgstr "" #: ../fdroidserver/server.py msgid "The only commands currently supported are 'init' and 'update'" msgstr "" #: ../fdroidserver/index.py msgid "The repository's fingerprint does not match." msgstr "" #: ../fdroidserver/common.py msgid "The repository's index could not be verified." msgstr "" #: ../fdroidserver/server.py #, python-brace-format msgid "The root dir for local_copy_dir \"{path}\" does not exist!" msgstr "" #: ../fdroidserver/nightly.py msgid "The the file to be included in the repo (path or glob)" msgstr "" #: ../fdroidserver/publish.py msgid "There is a keyalias collision - publishing halted" msgstr "" #: ../fdroidserver/import.py #, python-format msgid "This repo already has local metadata: %s" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py msgid "" "To use awsbucket, awssecretkey and awsaccesskeyid must also be set in config." "py!" msgstr "" #: ../fdroidserver/lint.py msgid "UCM is set but it looks like checkupdates hasn't been run yet" msgstr "" #: ../fdroidserver/lint.py msgid "URL shorteners should not be used" msgstr "" #: ../fdroidserver/metadata.py msgid "URL title is just the URL, use brackets: [URL]" msgstr "" #: ../fdroidserver/lint.py #, python-brace-format msgid "URL {url} in Description: {error}" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Unexpected text on same line as {field} in {linedesc}" msgstr "" #: ../fdroid msgid "Unknown exception found!" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vname #: ../fdroidserver/lint.py #, python-brace-format msgid "Unknown file '{filename}' in build '{versionName}'" msgstr "" #: ../fdroidserver/metadata.py #, python-format msgid "Unknown metadata format: %s" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Unknown metadata format: {path}" msgstr "" #: ../fdroidserver/common.py msgid "Unknown version of aapt, might cause problems: " msgstr "" #: ../fdroidserver/lint.py msgid "Unlinkified link - use [http://foo.bar Link title] or [http://foo.bar]" msgstr "" #: ../fdroidserver/lint.py msgid "Unnecessary leading space" msgstr "" #: ../fdroidserver/lint.py msgid "Unnecessary trailing space" msgstr "" #: ../fdroidserver/metadata.py msgid "Unrecognised app field: " msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Unrecognised field '{field}' in {linedesc}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Unsupported file type \"{extension}\" for repo graphic" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Unsupported graphics file found: {path}" msgstr "" #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Unsupported metadata format, use: --to [{supported}]" msgstr "" #: ../fdroidserver/metadata.py msgid "Unterminated ]" msgstr "" #: ../fdroidserver/metadata.py msgid "Unterminated ]]" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Unterminated build in {name}" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Unterminated continuation in {name}" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Unused extlib at %s" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Unused file at %s" msgstr "" #: ../fdroidserver/lint.py msgid "Update Check Name is set to the known app id - it can be removed" msgstr "" #: ../fdroid msgid "Update repo information for new packages" msgstr "새 패키지를 위한 저장소 정보를 업데이트합니다" #: ../fdroid msgid "Update the binary transparency log for a URL" msgstr "" #: ../fdroid msgid "Update the stats of the repo" msgstr "" #: ../fdroidserver/update.py ../fdroidserver/build.py msgid "Update the wiki" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "Usage" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "Usage: %s\n" msgstr "" #: ../fdroidserver/lint.py msgid "Use /HEAD instead of /master to point at a file in the default branch" msgstr "" #: ../fdroidserver/update.py msgid "Use `fdroid update -c` to create it." msgstr "" #: ../fdroidserver/build.py msgid "Use build server" msgstr "" #: ../fdroidserver/update.py msgid "Use date from APK instead of current time for newly added APKs" msgstr "" msgid "Use date from apk instead of current time for newly added apks" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Using \"{path}\" for configuring s3cmd." msgstr "" #: ../fdroidserver/common.py msgid "" "Using Java's jarsigner, not recommended for verifying APKs! Use apksigner" msgstr "" #: ../fdroidserver/init.py #, python-brace-format msgid "Using existing keystore \"{path}\"" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Using s3cmd to sync with: {url}" msgstr "" #: ../fdroid msgid "Valid commands are:" msgstr "올바른 명령은:" #: ../fdroid msgid "Verify the integrity of downloaded packages" msgstr "" #: ../fdroidserver/index.py msgid "Verifying index signature:" msgstr "" #: ../fdroid msgid "Warn about possible metadata errors" msgstr "가능한 메타데이터 오류에 대해 경고합니다" #: ../fdroidserver/update.py msgid "" "When configured for signed indexes, create only unsigned indexes at this " "stage" msgstr "" msgid "X.509 'Distiguished Name' used when generating keys" msgstr "" #: ../fdroidserver/init.py msgid "X.509 'Distinguished Name' used when generating keys" msgstr "" #: ../fdroidserver/common.py msgid "You can use ANDROID_HOME to set the path to your SDK, i.e.:" msgstr "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "adding IdentityFile to {path}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "adding to {name}: {path}" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "ambiguous option: %(option)s could match %(matches)s" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "ambiguous option: %s (%s?)" msgstr "" #: ../fdroidserver/lint.py ../fdroidserver/rewritemeta.py msgid "applicationId in the form APPID" msgstr "" #: ../fdroidserver/checkupdates.py msgid "applicationId to check for updates" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/verify.py ../fdroidserver/publish.py #: ../fdroidserver/dscanner.py ../fdroidserver/build.py #: ../fdroidserver/scanner.py ../fdroidserver/install.py msgid "applicationId with optional versionCode in the form APPID[:VERCODE]" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "argument \"-\" with mode %r" msgstr "" #: ../fdroidserver/nightly.py msgid "attempting bare ssh connection to test deploy key:" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "can't open '%s': %s" msgstr "'%s'을(를) 열 수 없습니다: %s" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "cannot have multiple subparser arguments" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "cannot merge actions - two groups are named %r" msgstr "" #: ../fdroidserver/nightly.py msgid "cannot publish update, did you set the deploy key?" msgstr "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "cloning {url}" msgstr "" #: ../fdroidserver/server.py msgid "command to execute, either 'init' or 'update'" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "complex" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "conflicting option string: %s" msgid_plural "conflicting option strings: %s" msgstr[0] "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "copying {apkfilename} into {path}" msgstr "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "created {path}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "deleting: repo/{apkfilename}" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "dest= is required for options like %r" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "expected %s argument" msgid_plural "expected %s arguments" msgstr[0] "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "expected at least one argument" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "expected at most one argument" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "expected one argument" msgstr "" #: ../fdroid msgid "fdroid [-h|--help|--version] []" msgstr "fdroid [-h|--help|--version] <명령> [<인수>]" #: ../fdroid msgid "fdroid [] [-h|--help|--version|]" msgstr "fdroid [<명령>] [-h|--help|--version|<인수>]" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "floating-point" msgstr "" #: ../fdroidserver/metadata.py msgid "force errors to be warnings, or ignore" msgstr "" #: ../fdroidserver/metadata.py msgid "force metadata errors (default) to be warnings, or to be ignored." msgstr "" #: ../fdroidserver/common.py msgid "git svn clone failed" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "ignored explicit argument %r" msgstr "" #: ../fdroidserver/index.py msgid "index-v1 must have a signature, use `fdroid signindex` to create it!" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "integer" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "invalid %(type)s value: %(value)r" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "invalid choice: %(value)r (choose from %(choices)s)" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "invalid conflict_resolution value: %r" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "" "invalid option string %(option)r: must start with a character " "%(prefix_chars)r" msgstr "" #: ../fdroidserver/server.py #, python-brace-format msgid "" "local_copy_dir does not end with \"fdroid\", perhaps you meant: \"{path}\"" msgstr "" #: ../fdroidserver/server.py msgid "local_copy_dir must be an absolute path!" msgstr "" #: ../fdroidserver/server.py msgid "local_copy_dir must be directory, not a file!" msgstr "" #: ../fdroidserver/index.py #, python-format msgid "mirror '%s' does not end with 'fdroid'!" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "mutually exclusive arguments must be optional" msgstr "" #: ../fdroidserver/mirror.py #, python-brace-format msgid "no \"icon\" in {appid}" msgstr "" #: ../fdroidserver/signatures.py msgid "no APK supplied" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "no such option: %s" msgstr "이러한 옵션이 없습니다: %s" #: ../fdroid msgid "no version info found!" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "not allowed with argument %s" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "one of the arguments %s is required" msgstr "" #: ../fdroidserver/index.py ../fdroidserver/common.py msgid "only accepts strings, lists, and tuples" msgstr "" #: ../fdroidserver/install.py #, python-format msgid "option %s: If you really want to install all the signed apps, use --all" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "option %s: invalid %s value: %r" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "option %s: invalid choice: %r (choose from %s)" msgstr "" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option -%s not recognized" msgstr "" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option -%s requires argument" msgstr "" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option --%s must not have an argument" msgstr "" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option --%s not a unique prefix" msgstr "" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option --%s not recognized" msgstr "" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option --%s requires argument" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "optional arguments" msgstr "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "overwriting existing {path}" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "positional arguments" msgstr "" #: ../fdroidserver/signatures.py #, python-brace-format msgid "" "refuse downloading via insecure HTTP connection (use HTTPS or specify --no-" "https-check): {apkfilename}" msgstr "" #: ../fdroidserver/signatures.py #, python-brace-format msgid "" "refuse downloading via insecure http connection (use https or specify --no-" "https-check): {apkfilename}" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "s3cmd sync indexes {path} to {url} and delete" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "show program's version number and exit" msgstr "프로그램의 버전 번호를 보여주고 종료합니다" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.5/optparse.py #: /usr/lib/python3.6/argparse.py /usr/lib/python3.6/optparse.py msgid "show this help message and exit" msgstr "이 도움말 메시지를 보여주고 종료합니다" #: ../fdroidserver/signatures.py msgid "signed APK, either a file-path or HTTPS URL." msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "skipping source tarball: {path}" msgstr "" #: ../fdroidserver/lint.py msgid "srclibs missing name and/or @" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "the following arguments are required: %s" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "unexpected option string: %s" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "unknown parser %(parser_name)r (choices: %(choices)s)" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "unrecognized arguments: %s" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "unsafe permissions on '{config_file}' (should be 0600)!" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py ../fdroid msgid "usage: " msgstr "사용법: " #: ../fdroid msgid "usage: fdroid [-h|--help|--version] []" msgstr "사용법: fdroid [-h|--help|--version] <명령> [<인수>]" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "using Apache libcloud to sync with {url}" msgstr "" #: ../fdroidserver/publish.py #, python-brace-format msgid "{0} app, {1} key aliases" msgid_plural "{0} apps, {1} key aliases" msgstr[0] "" #: ../fdroidserver/update.py #, python-brace-format msgid "{apkfilename} ({appid}) has no metadata!" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "{apkfilename} has multiple {name} files, looks like Master Key exploit!" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "{apkfilename}'s AndroidManifest.xml has a bad date: " msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "{appid} does not have a name! Using package name instead." msgstr "" #: ../fdroidserver/mirror.py #, python-brace-format msgid "{appid} is missing {name}" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vname #: ../fdroidserver/lint.py #, python-brace-format msgid "{appid}: Unknown extlib {path} in build '{versionName}'" msgstr "" #: ../fdroidserver/scanner.py #, python-brace-format msgid "{appid}: no builds specified, running on current source state" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "{field} not terminated in {name}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "{name} \"{path}\" does not exist! Correct it in config.py." msgstr "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "{path} does not exist! Create it by running:" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "{path} has bad file signature \"{pattern}\", possible Janus exploit!" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "{path} is zero size!" msgstr "" #: ../fdroidserver/mirror.py #, python-brace-format msgid "{url} does not end with \"fdroid\", check the URL path!" msgstr "" #: ../fdroidserver/build.py msgid "{} build failed" msgid_plural "{} builds failed" msgstr[0] "" #: ../fdroidserver/build.py msgid "{} build succeeded" msgid_plural "{} builds succeeded" msgstr[0] "" #~ msgid "Add gpg signatures for packages in repo" #~ msgstr "저장소에서 패키지에 gpg 서명을 추가합니다" fdroidserver-1.0.9/locale/es/0000775000175000017500000000000013324115531015771 5ustar hanshans00000000000000fdroidserver-1.0.9/locale/es/LC_MESSAGES/0000775000175000017500000000000013324115531017556 5ustar hanshans00000000000000fdroidserver-1.0.9/locale/es/LC_MESSAGES/fdroidserver.mo0000664000175000017500000013127513324115526022626 0ustar hanshans00000000000000 l)m7$-+"+N9z^*HZj!}!"&'+1S"AD./O^E+ < FT  ! 3 *!*/!:Z!!-!R!$6"6["9"")"- #1;#m#*##/#[$9d$5$$ $C%-U%[%*%V &%a& &&&+&='F']'!x'U'#'6(%K(4q(#((()("!)$D)!i)!));)'*/**Z*(y****-*+2<+4o+6++*+ $,FE,=,,-,:-S-Ur--(- .A'.!i.H.". .v/,////) 0 50V07s000!0& 1.31.b1311.142D23M22d2*29%3!_3(3)333-4-64d4'y444444 5%5(A5#j5+55>56)16![6}6&6"626 77*,7'W77J7B7#8=8#S8w878&88C9IR9!9N99 :$G:!l::::+:%;5;<K;;3;;; <0<.P<@<<<*<' =H=1\=%= ==7=1>1G>*y>;>*># ?/?7?-W???:?:?78@&p@-@@@=@,=AjAAAA AAB*#BNB_B$~BB-BPB :C[C7tCCUC:D&YDDDDD-D E,7E!dE*E8E2EF ;F,\F F&FBF#G*8G=cG0G%G.G'H%BH*hH7H3H5H<5I.rI)I*I-I#$J9HJ*JfJ/K?DK$K=K,K-L8BL6{L1L(LP M=^M!M.M!M5NEN2^NNN/NFNDO^OyO*O4O'O4POP^PnP#PPP@P(Q,?QlQQQ QEQ$QR>&R>eR%RIR S5SUS+iSS#SNS3#T4WT;TTT4T4U"OUrU2UU(U.U2+V ^V-lVV<V!VWW%-W*SW~WWWW&WXXD9X~X!X3X%XNYFQY(Y-Y'Y-ZEZZZjZ}Z#Z'ZGZ.[.N[}[[%[[[\3\F\b\fw\f\-E]&s]],]]^(%^N^5k^^7^^6^(3_2\_(_G_9`:`7T`=` `8`-$aBRaa5a a&b(b; d;Id9d-d-d0e<Lehee f(fAfRf+jff'f(f,g-3g6ag+gPgSh,ih_h#hWiDriiMij%5jG[j5j8jRk*ekDkWk2-lB`l<l$l/m95m6om"m=mn3$noXn?n8o Ao+boOo3o[p3npp3'q-[qq<q.qNr!ar r&rhr<4sFqs,s?s)%tOtit.yt+t4t8 u7Bu5zu\uA v3Ov)v'v)vvw0=wnw7w<w9w$9x@^x-xSxM!y oy-y>y'yW%z}z7z"zIz$9{H^{"{I{v|,||/|)} 1}R}7o}}}!}&~./~.^~3~~.~4 @3I}*9E!(;ʀ3-:-h.ځ3D^(z#+ǂ>R4j/σ&0K8 *'ЄJBY#̅7 &AhCIˆ!N79'8!?]+v%Ȉ<ވ35i0.@Si*'ۊ1%! GU7p11ڋ* ;7+s;ی<@]N}K̍57NA,Ȏ,=",`(ӏ$ $E0c),ϐ-PB V͑4$aYY2*H%s-͓1(D*m82є ",C p&W+1<Mn0%.B%]1>HJ=NAט)(C-l#9*o#/MÚ$56,l-8Ǜ617(iP=!!.C!r5*ʝ2((D/mF*24]'4#+Oc@u?<,3`swE$ơL TX%IӢ >^3y+ȣ\6Q6;B2u)2ӥ(!.J2y /<!/Q`%}*Χ !40ezDܨ!3%:N`F(-'M-uȪߪ#' GH.߫!&$Bg"׬ffV-3%,Er* ۮ52<P4(ȯ2($GM9ϰ7=! _8-B*5? u& SSH Public Key to be used as Deploy Key: {path} encoded for the DEBUG_KEYSTORE secret variable:"%s/" has no matching metadata file!"{path}" contains outdated {name} ({version})"{path}" contains recent {name} ({version})"{path}" exists but s3cmd is not installed!"{path}" is not an accepted format, convert to: {formats}%(option)s option requires %(number)d argument%(option)s option requires %(number)d arguments%(prog)s [options] url%(prog)s: error: %(message)s %d problems found%prog [options]%r is not callable%s is not an accepted build field%s option does not take a value'keypass' not found in config.py!'keystore' not found in config.py!'keystorepass' not found in config.py!'repo_keyalias' not found in config.py!'required' is an invalid argument for positionals'sdk_path' not set in 'config.py'!'{aapt}' is too old, fdroid requires build-tools-23.0.0 or newer!'{aapt}' is too old, fdroid requires build-tools-{version} or newer!'{apkfilename}' is already installed on {dev}.'{field}' will be in random order! Use () or [] brackets if order is important!'{path}' failed to execute!'{value}' is not a valid {field} in {appid}. Regex pattern: {pattern}...checkupdate failed for {appid} : {error}.__call__() not defined.fdroid.txt is not supported! Convert to .fdroid.yml or .fdroid.json./issues is missingA URL is required as an argument!Add PGP signatures using GnuPG for packages in repoAdd a new application from its source codeAdd a repo signing key to an unsigned repoAdd skeleton metadata files for APKs that are missing themAdding new repo for only {name}Alias of the repo signing key in the keystoreAllows a different revision (or git branch) to be specified for the initial importAlso mirror the full archive sectionAlso warn about formatting issues, like rewritemeta -lAndroid SDK '{path}' does not have '{dirname}' installed!Android SDK not found!Android SDK path '{path}' does not exist!Android SDK path '{path}' is not a directory!Android build-tools path '{path}' does not exist!AndroidManifest.xml has no dateApp is in '{repo}' but has a link to {url}Appending .git is not necessaryArchiving {apkfilename} with invalid signature!Base URL to mirror, can include the index signing key using the query string: ?fingerprint=Branch '{branch}' used as commit in build '{versionName}'Branch '{branch}' used as commit in srclib '{srclib}'Build a package from sourceBuild all applications availableBuild generated by `fdroid import` - remove disable line once readyBuild only the latest version of each packageBuild should have comma-separated versionName and versionCode, not "{value}", in {linedesc}Built repo based in "%s" with this config:Can't build due to {} error while scanningCan't build due to {} errors while scanningCannot find a packageName for {path}!Cannot find an appid for {path}!Cannot read "{path}"!Cannot resolve app id {appid}Cannot use --list and --to at the same timeCannot write "{path}", not an accepted format, use: {formats}Categories are not setCategory '%s' is not validCheck for updates to applicationsChecking archiving for {appid} - apks:{integer}, keepversions:{keep}, archapks:{arch}Clean after all scans have finishedClean before the scans start and rebuild the containerClean up all containers and then exitClean update - don't uses caches, reprocess all APKsComma separated list of categories.Command '%s' not recognised. Commit changesCould not find '{command}' on your systemCould not find {path} to remove itCould not open apk file for analysisCouldn't find latest version codeCouldn't find latest version nameCouldn't find package IDCowardily refusing to overwrite existing signing key setup!Create a repo signing key in a keystoreCreate skeleton metadata files that are missingCreated new container "{name}"Creating "{path}" for configuring s3cmd.Creating log directoryCreating new S3 bucket: {url}Creating output directoryCreating signed index with this key (SHA256):Creating temporary directoryCreating unsigned index in preparation for signingDEBUG_KEYSTORE is not set or the value is incompleteDelete APKs and/or OBBs without metadata from the repoDeleting unknown file: {path}Description '%s' is just the app's summaryDescription has a duplicate lineDescription has a list (%s) but it isn't bulleted (*) nor numbered (#)Description of length {length} is over the {limit} char limitDo not include "{path}" in URL!Do not prompt for Android SDK path, just failDon't create a source tarball, useful when testing a buildDon't do anything logs-relatedDon't refresh the repository, useful when testing a build with no internet connectionDon't use rsync checksumsDownload complete mirrors of small reposDownload logs we don't haveDownloading the repository already failed once, not trying again.Downloading {url} failed. {error}Duplicate build recipe found for versionCode {versionCode} in {linedesc}Duplicate link in '{field}': {url}Dynamically scan APKs post buildERROR: this command should never be used to mirror f-droid.org! A full mirror of f-droid.org requires more than 200GB.ERROR: unsupported CI type, patches welcome!Empty build flag at {linedesc}Enter the path to the Android SDK (%s) here: > Error while attempting to publish log: %sError while getting repo addressExtract signatures from APKsFailed fetching signatures for '{apkfilename}': {error}Failed reading {path}: {error}Failed resizing {path}: {error}Failed to create S3 bucket: {url}Failed to get APK manifest informationFailed to get apk information, deleting {path}Failed to get apk information, skipping {path}Failed to install '{apkfilename}' on {dev}: {error}Failed to sign applicationFetched buildserverid from VM: {buildserverid}Fetched signatures for '{apkfilename}' -> '{sigdir}'FinishedFlattr donation methods belong in the FlattrID flagForbidden HTML tagsForce build of disabled apps, and carries on regardless of scan problems. Only allowed in test mode.Force halting build after {0} sec timeout!Found "{path}" graphic without metadata for app "{name}"!Found invalid appids in argumentsFound invalid versionCodes for some appsFound multiple metadata files for {appid}Found multiple signing certificates for repository.Found multiple signing certificates in {path}Found no signing certificates for repository.Found non-file at %sGenerated skeleton metadata for {appid}Git checkout of '%s' failedGit clean failedGit fetch failedGit remote set-head failedGit reset failedGit submodule sync failedGit submodule update failedHTTPS must be used with Subversion URLs!Ignoring package without metadata: Ignoring stale cache data for {apkfilename}Ignoring {ext} file at '{path}'Include APKs that are signed with disabled algorithms like MD5Initialising submodulesInstall all signed applications availableInstall built packages on devicesInstalling %s...Installing '{apkfilename}' on {dev}...Interact with the repo HTTP serverInteractively ask about things that need updating.Invalid APKInvalid boolean '%s'Invalid build flag at {line} in {linedesc}Invalid build format: {value} in {name}Invalid bulleted listInvalid license tag "%s"! Use only tags from https://spdx.org/license-listInvalid link - use [http://foo.bar Link title] or [http://foo.bar]Invalid metadata in %s:%dInvalid metadata in: Invalid name for published file: %sInvalid package name {0}Invalid versionCode: "{versionCode}" is not an integer!JAR signature failed to verify: {path}JAR signature verified: {path}Java JDK not found! Install in standard location or set java_paths!Java jarsigner not found! Install in standard location or set java_paths!Javascript in HTML src attributesLast used commit '{commit}' looks like a tag, but Update Check Mode is '{ucm}'Liberapay donation methods belong in the LiberapayID flagList files that would be reformattedMake the build stop on exceptionsMalformed repository mirrors.Malformed serverwebroot line:Missing output directoryName '%s' is just the auto name - remove itNo 'config.py' found, using defaults.No Android SDK found!No android or kivy project could be found. Specify --subdir?No attached devices foundNo commit specified for {versionName} in {linedesc}No fingerprint in URL.No git submodules availableNo information found.No need to specify that the app is Free SoftwareNo need to specify that the app is for AndroidNo option set! Edit your config.py to set at least one of these:No packages specifiedNo signed apk available for %sNo signed output directory - nothing to doNo signing certificates found in {path}No such package: %sNo such versionCode {versionCode} for app {appid}No unsigned directory - nothing to doNothing to doNothing to do for {appid}.OBB file has newer versionCode({integer}) than any APK:OBB filename must start with "main." or "patch.":OBB's packagename does not match a supported APK:Old APK signature failed to verify: {path}Only PNG and JPEG are supported for graphics, found: {path}Only print differences with the Play StoreOnly process apps with auto-updatesOptionsOverall license of the project.Override path for repo APKs (default: ./repo)Parsing manifest at '{path}'Password required with usernamePath to main Android project subdirectory, if not in root.Path to main android project subdirectory, if not in root.Path to the Android SDK (sometimes set in ANDROID_HOME)Path to the git repo to use as the logPath to the keystore for the repo signing keyPrepare Drozer to run a scanPrepare drozer to run a scanPrint the secret variable to the terminal for easy copy/pasteProblem with description of {appid}: {error}Problem with xml at '{path}'Process auto-updatesProcessing {apkfilename}Processing {appid}Produce human-readable index.xmlProject URL to import from.Punctuation should be avoidedPush the log to this git remote repositoryPushing to {url}Quickly start a new repositoryRead all the metadata files and exitReading '{config_file}'Reading minSdkVersion failed: "{apkfilename}"Reading packageName/versionCode/versionName failed, APK invalid: '{apkfilename}'Reading {apkfilename} from cacheRemoving specified filesRename APK files that do not match package.name_123.apkReport on build data statusReset and create a brand new build server, even if the existing one appears to be ok.Resize all the icons exceeding the max pixel size and exitRestrict output to warnings and errorsRewrite all the metadata filesRewrite to a specific format: Rewriting '{appid}'Rewriting '{appid}' to '{path}'Running first pass with MD5 checking disabledRunning wget in {path}Scan only the latest version of each packageScan the source code of a packageScanner found {count} problems in {appid}:Scanner found {count} problems in {appid}:{versionCode}:Scanner found {} problemScanner found {} problemsSet clock to that time using:Set open file limit to {integer}Set up an app build for a nightly build repoSetting open file limit failed: Setting {0} sec timeout for this buildSetup an emulator, install the apk on it and perform a drozer scanSign and place packages in the repoSign indexes created using update --nosignSkip scanning the source code for binaries and other problemsSkipping '{apkfilename}' with invalid signature!Skipping index generation for {appid}Skipping {apkfilename} with invalid signature!Skipping {appid}: disabledSkipping {appid}: no builds specifiedSpecify a local folder to sync the repo toSpecify an identity file to provide to SSH for rsyncingSpecify editor to use in interactive mode. Default Specify editor to use in interactive mode. Default %sSpecify editor to use in interactive mode. Default is {path}Specify that we're running on the build serverSpecify which debug keystore file to use.Spew out even more information than normalStriping mystery signature from {apkfilename}Summary '%s' is just the app's nameSummary of length {length} is over the {limit} char limitSystem clock is older than date in {path}!Test mode - put output in the tmp directory only, and always build, even if the output already exists.The OBB version code must come after "{name}.":The base URL for the repo to log (default: https://f-droid.org)The directory to write the mirror toThe only commands currently supported are 'init' and 'update'The repository's fingerprint does not match.The repository's index could not be verified.The root dir for local_copy_dir "{path}" does not exist!The the file to be included in the repo (path or glob)There is a keyalias collision - publishing haltedThis repo already has local metadata: %sTo use awsbucket, awssecretkey and awsaccesskeyid must also be set in config.py!UCM is set but it looks like checkupdates hasn't been run yetURL shorteners should not be usedURL title is just the URL, use brackets: [URL]URL {url} in Description: {error}Unexpected text on same line as {field} in {linedesc}Unknown exception found!Unknown file '{filename}' in build '{versionName}'Unknown metadata format: %sUnknown metadata format: {path}Unknown version of aapt, might cause problems: Unlinkified link - use [http://foo.bar Link title] or [http://foo.bar]Unnecessary leading spaceUnnecessary trailing spaceUnrecognised app field: Unrecognised field '{field}' in {linedesc}Unsupported file type "{extension}" for repo graphicUnsupported graphics file found: {path}Unsupported metadata format, use: --to [{supported}]Unterminated ]Unterminated ]]Unterminated build in {name}Unterminated continuation in {name}Unused extlib at %sUnused file at %sUpdate Check Name is set to the known app id - it can be removedUpdate repo information for new packagesUpdate the binary transparency log for a URLUpdate the stats of the repoUpdate the wikiUsageUsage: %s Use /HEAD instead of /master to point at a file in the default branchUse `fdroid update -c` to create it.Use build serverUse date from APK instead of current time for newly added APKsUse date from apk instead of current time for newly added apksUsing "{path}" for configuring s3cmd.Using Java's jarsigner, not recommended for verifying APKs! Use apksignerUsing existing keystore "{path}"Using s3cmd to sync with: {url}Valid commands are:Verify the integrity of downloaded packagesVerifying index signature:Warn about possible metadata errorsWhen configured for signed indexes, create only unsigned indexes at this stageX.509 'Distiguished Name' used when generating keysX.509 'Distinguished Name' used when generating keysYou can use ANDROID_HOME to set the path to your SDK, i.e.:adding IdentityFile to {path}adding to {name}: {path}ambiguous option: %(option)s could match %(matches)sambiguous option: %s (%s?)applicationId to check for updatesargument "-" with mode %rattempting bare ssh connection to test deploy key:can't open '%s': %scannot have multiple subparser argumentscannot merge actions - two groups are named %rcannot publish update, did you set the deploy key?cloning {url}command to execute, either 'init' or 'update'complexconflicting option string: %sconflicting option strings: %scopying {apkfilename} into {path}created {path}deleting: repo/{apkfilename}dest= is required for options like %rexpected %s argumentexpected %s argumentsexpected at least one argumentexpected at most one argumentexpected one argumentfloating-pointforce errors to be warnings, or ignoregit svn clone failedignored explicit argument %rindex-v1 must have a signature, use `fdroid signindex` to create it!integerinvalid %(type)s value: %(value)rinvalid choice: %(value)r (choose from %(choices)s)invalid conflict_resolution value: %rinvalid option string %(option)r: must start with a character %(prefix_chars)rlocal_copy_dir does not end with "fdroid", perhaps you meant: "{path}"local_copy_dir must be an absolute path!local_copy_dir must be directory, not a file!mirror '%s' does not end with 'fdroid'!mutually exclusive arguments must be optionalno "icon" in {appid}no APK suppliedno such option: %snot allowed with argument %sone of the arguments %s is requiredonly accepts strings, lists, and tuplesoption %s: If you really want to install all the signed apps, use --alloption %s: invalid %s value: %roption %s: invalid choice: %r (choose from %s)option -%s not recognizedoption -%s requires argumentoption --%s must not have an argumentoption --%s not a unique prefixoption --%s not recognizedoption --%s requires argumentoptional argumentsoverwriting existing {path}positional argumentsrefuse downloading via insecure HTTP connection (use HTTPS or specify --no-https-check): {apkfilename}refuse downloading via insecure http connection (use https or specify --no-https-check): {apkfilename}s3cmd sync indexes {path} to {url} and deleteshow program's version number and exitshow this help message and exitsigned APK, either a file-path or HTTPS URL.skipping source tarball: {path}srclibs missing name and/or @the following arguments are required: %sunexpected option string: %sunknown parser %(parser_name)r (choices: %(choices)s)unrecognized arguments: %sunsafe permissions on '{config_file}' (should be 0600)!usage: usage: fdroid [-h|--help|--version] []using Apache libcloud to sync with {url}{0} app, {1} key aliases{0} apps, {1} key aliases{apkfilename} ({appid}) has no metadata!{apkfilename} has multiple {name} files, looks like Master Key exploit!{appid} does not have a name! Using package name instead.{appid} is missing {name}{appid}: Unknown extlib {path} in build '{versionName}'{appid}: no builds specified, running on current source state{field} not terminated in {name}{name} "{path}" does not exist! Correct it in config.py.{path} does not exist! Create it by running:{path} has bad file signature "{pattern}", possible Janus exploit!{path} is zero size!{url} does not end with "fdroid", check the URL path!{} build failed{} builds failed{} build succeeded{} builds succeededProject-Id-Version: fdroidserver 0.9 Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues POT-Creation-Date: 2018-02-13 09:01+0100 PO-Revision-Date: 2018-04-16 09:37+0000 Last-Translator: Laura Arjona Reina Language-Team: Spanish Plural-Forms: nplurals=2; plural=n != 1 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Generated-By: Babel 1.3 Clave pública SSH que se usará como clave de despliegue: {path} codificada para la variable secreta DEBUG_KEYSTORE:¡"%s/" no tiene su correspondiente fichero de metadatos!"{path}" contiene {name} ({version}) caducado"{path}" contiene {name} ({version}) reciente"{path}" existe pero ¡s3cmd no está instalado!"{path}" no es un formato reconocido, convertir a: {formats}la opción %(option)s requiere %(number)d argumentola opción %(option)s requiere %(number)d argumentos%(prog)s [opciones] url%(prog)s: error: %(message)s %d problemas encontrados%prog [opciones]no se puede llamar a %r%s no es un campo de construcción aceptadola opción %s no toma un valor¡'keypass' no encontrado en config.py!¡'keystore' no encontrado en config.py!¡'keystorepass' no encontrado en config.py!¡'repo_keyalias' no encontrado en config.py!'required' es un argumento inválido para posicionales¡'sdk_path' no establecido en 'config.py'!¡'{aapt}' es demasiado antiguo, fdroid requiere build-tools-23.0.0 o posterior!¡'{aapt}' es demasiado antiguo, fdroid requiere build-tools-{version} o posterior!'{apkfilename}' ya está instalado en {dev}.¡'{field}' estará en un orden aleatorio! ¡Use paréntesis () o [] si el orden es importante!¡Falló la ejecución de '{path}'!'{value}' no es un {field} válido en {appid}. Patrón de expresión regular: {pattern}...falló la comprobación de actualizaciones para {appid} : {error}.__call__() no definida¡.fdroid.txt no está soportado! Conviértalo a .fdroid.yml o .fdroid.json.no se encuentra /issues¡Se requiere una URL como argumento!Añadir las firmas PGP para los paquetes en el repositorio usando GnuPGAñadir una nueva aplicación desde su código fuenteCree una clave de firmado para un repositorio sin firmarAgregar archivos con esqueleto de metadats para las aplicaciones que no los tienenAgregando nuevo repo solamente para {name}Alias de la clave de firma de repositorio en el depósitio de clavesPermite especificar una revisión diferente (o git sector) para la importación inicialTambién replicar la sección completa del archivoTambién advierta sobre problemas de formato, como r rewritemeta-l¡El SDK de Android '{path}' no tiene '{dirname}' instalado!¡No se encontró el SDK de Android!¡No existe la ruta '{path}' al SDK de Android!¡La ruta al SDK de Android '{path}' no es un directorio!¡La ruta a build-tools de Android '{path}' no existe!AndroidManifest.xml no tiene fechaLa aplicación está en '{repo}' pero tiene un enlace a {url}No es necesario agregar .git¡Archivando {apkfilename} con una firma inválida!URL base para replicar, puede incluir la clave de firma del índice usando la cadena de consulta: ?fingerprint=Rama '{branch}' usada como "commit" en el build '{versionName}'Rama '{branch}' usada como "commit" en srclib '{srclib}'Crear un paquete desde la fuenteCompilar todas las aplicaciones disponiblesBuild generada por `fdroid import` - Eliminar "disable line" cuando esté listaConstruir sólo la última versión de cada paqueteBuild should have comma-separated versionName and versionCode, not "{value}", in {linedesc}Repositorio creado en "%s" con esta configuración:No se puede construir debido al error {} mientras se comprobabaNo se puede construir debido a los errores {} mientras se comprobaba¡No se puede encontrar un packageName para {path}!¡No se puede encontrar un appid para {path}!¡No se puede leer "{path}"!No se puede resolver el identificador de aplicación {appid}No se puede usar --list y --to al mismo tiempoNo se puede escribir "{path}", no está en un formato aceptado, use: {formats}No se han establecido categoríasLa categoría '%s' no es válidaBuscar actualizaciones de aplicacionesComprobando la operación de archivo para {appid} - apks:{integer}, keepversions:{keep}, archapks:{arch}Limpiar después de que todos los análisis hayan finalizadoLimpiar antes de que los análisis inicien y reconstruir el contenedorLimpiar todos los contenedores y luego salirActualización limpia, no usa la caché, procesa todas las APKsLista de categorías separadas por comas.Comando %s no reconocido Aplicar cambiosNo se pudo encontrar '{command}' en el sistemaNo se pudo encontrar {path} para eliminarloNo se ha podido abrir el archivo apk para analizarloNo se ha podido encontrar el último código de versiónNo se ha podido encontrar el último nombre de versiónNo se ha podido encontrar el identificador de paquete¡Se ha rechazado (cobardemente) sobrescribir la configuración existente de clave de firma!Cree una clave de firmado de repositorios en un llavero de clavesCrear esqueleto de metadatos de archivos que faltanSe ha creado el contenedor nuevo "{name}"Creando "{path}" para configurar s3cmd.Creando el directorio de registro ("log")Creating new S3 bucket: {url}Creando el directorio de salidaCreando índice firmado con esta clave (SHA256):Creando directorio temporalCreando índice no firmado, en preparación de la firmaDEBUG_KEYSTORE no está establecida o su valor es incompletoBorrar del repositorio archivos APK y/o OBB sin metadatosBorrando fichero desconocido: {path}La descripción '%s' es simplemente el resumen de la aplicaciónLa descripción contiene una línea duplicadaLa descripción tiene una lista (%s) pero no está estructurada (*) ni numerada (#)La descripción de longitud {length} supera el límite de caracteres, {limit}¡No incluir "{path}" en la URL!No solicitar la ruta al Android SDK, si fallaNo cree un tarball de origen, útil al probar una compilaciónNo haga nada con registros relacionadosNo actualizar el repositorio, útil al probar una compilación sin conexión a InternetNo use rsync checksumsDescargar réplicas completas de repositorios pequeñosDescargar registros que no tenemosLa descarga del repositorio ya falló una vez, no se intentará de nuevo.La descarga de {url} falló. {error}Duplicate build recipe found for versionCode {versionCode} in {linedesc}Duplicate link in '{field}': {url}Ejecutar Fdroid dscanner de una aplicación APK, previamente construída,ERROR: this command should never be used to mirror f-droid.org! A full mirror of f-droid.org requires more than 200GB.ERROR: unsupported CI type, patches welcome!Empty build flag at {linedesc}Enter the path to the Android SDK (%s) here: > Error while attempting to publish log: %sError while getting repo addressExtract signatures from APKsFailed fetching signatures for '{apkfilename}': {error}Failed reading {path}: {error}Failed resizing {path}: {error}Failed to create S3 bucket: {url}Failed to get APK manifest informationFailed to get apk information, deleting {path}Failed to get apk information, skipping {path}Failed to install '{apkfilename}' on {dev}: {error}Failed to sign applicationFetched buildserverid from VM: {buildserverid}Fetched signatures for '{apkfilename}' -> '{sigdir}'FinishedFlattr donation methods belong in the FlattrID flagForbidden HTML tagsForzar la creación de compilaciones deshabilitadas, independientemente de los problemas de escaneo. Sólo se permite en modo de prueba.Force halting build after {0} sec timeout!Found "{path}" graphic without metadata for app "{name}"!Found invalid appids in argumentsFound invalid versionCodes for some appsSe encontraron multiples ficheros de metadatos para {appid}Found multiple signing certificates for repository.Found multiple signing certificates in {path}Found no signing certificates for repository.Found non-file at %sCreada la estructura de metadatos para {appid}Git checkout of '%s' failedGit clean failedGit fetch failedGit remote set-head failedGit reset failedGit submodule sync failedGit submodule update failedHTTPS must be used with Subversion URLs!Ignoring package without metadata: Ignoring stale cache data for {apkfilename}Ignoring {ext} file at '{path}'Include APKs that are signed with disabled algorithms like MD5Initialising submodulesInstalar todas las aplicaciones firmadas disponiblesInstalar paquetes constuídos en el dispositivoInstalling %s...Installing '{apkfilename}' on {dev}...Interactuar con el servidor HTTP del repositorioPregunte de forma interactiva sobre temas que necesitan una actualización.Invalid APKInvalid boolean '%s'Invalid build flag at {line} in {linedesc}Invalid build format: {value} in {name}Invalid bulleted listInvalid license tag "%s"! Use only tags from https://spdx.org/license-listInvalid link - use [http://foo.bar Link title] or [http://foo.bar]Invalid metadata in %s:%dInvalid metadata in: Invalid name for published file: %sInvalid package name {0}Invalid versionCode: "{versionCode}" is not an integer!JAR signature failed to verify: {path}JAR signature verified: {path}Java JDK not found! Install in standard location or set java_paths!Java jarsigner not found! Install in standard location or set java_paths!Javascript in HTML src attributesLast used commit '{commit}' looks like a tag, but Update Check Mode is '{ucm}'Liberapay donation methods belong in the LiberapayID flagLista de archivos que se reformatearánHacer que la construcción se detenga en las excepcionesMalformed repository mirrors.Malformed serverwebroot line:Missing output directoryName '%s' is just the auto name - remove itNo 'config.py' found, using defaults.No Android SDK found!No android or kivy project could be found. Specify --subdir?No attached devices foundNo commit specified for {versionName} in {linedesc}No fingerprint in URL.No git submodules availableNo information found.No need to specify that the app is Free SoftwareNo need to specify that the app is for AndroidNo option set! Edit your config.py to set at least one of these:No packages specifiedNo signed apk available for %sNo signed output directory - nothing to doNo signing certificates found in {path}No such package: %sNo such versionCode {versionCode} for app {appid}No unsigned directory - nothing to doNothing to doNothing to do for {appid}.OBB file has newer versionCode({integer}) than any APK:OBB filename must start with "main." or "patch.":OBB's packagename does not match a supported APK:Old APK signature failed to verify: {path}Only PNG and JPEG are supported for graphics, found: {path}Solo imprimir diferencias con el Play StoreSolo procesar aplicaciones con actualizaciones automáticasOpcionesLicencia general del proyecto.Ruta de remplazo par el repositorio de APK (default: ./repo)Parsing manifest at '{path}'Password required with usernameRuta al subdirectorio principal del proyecto Android, si no está en la raíz.Ruta al subdirectorio principal del proyecto Android, si no es en la raíz.Ruta al Android SDK (a veces ubicado en ANDROID_HOME)Ruta de acceso al reporte git para usarlo como registroRuta al depósito de claves para la clave de firma de repositorioPreparar "Drozer" para ejecutar un análisisPreparar "Drozer" para ejecutar un análisisPrint the secret variable to the terminal for easy copy/pasteProblem with description of {appid}: {error}Problem with xml at '{path}'Actualizaciones automáticas de procesosProcessing {apkfilename}Processing {appid}Produce un índice legible index.xmlimportar desde.URL del proyecto.Punctuation should be avoidedPulse el registro a este repositorio remoto gitPushing to {url}Iniciar rápidamente un nuevo repositorioLeer todos los archivos de metadatos y salirReading '{config_file}'Reading minSdkVersion failed: "{apkfilename}"Reading packageName/versionCode/versionName failed, APK invalid: '{apkfilename}'Reading {apkfilename} from cacheRemoving specified filesCambiar el nombre de archivos APK que no coinciden con el formato package.name_123.apkInforme sobre el estado de los datos de compilaciónRestablecer y crear un nuevo servidor de compilación, incluso si el existente parece estar bien.Cambiar el tamaño de todos los iconos que exceden el tamaño máximo del pixeles y salirRestringir los resultados a advertencias y erroresReescribir todos los archivos de metadatosReescribir a un formato específico: Rewriting '{appid}'Rewriting '{appid}' to '{path}'Running first pass with MD5 checking disabledRunning wget in {path}Escanear solo la última versión de cada paqueteEscanear el código fuente de un paqueteScanner found {count} problems in {appid}:Scanner found {count} problems in {appid}:{versionCode}:Scanner found {} problemScanner found {} problemsSet clock to that time using:Set open file limit to {integer}Set up an app build for a nightly build repoSetting open file limit failed: Setting {0} sec timeout for this buildConfigurar un emulador, instalar la aplicación APK en él y realizar una "Drozer" scanFirmar y colocar paquetes en el repositorioFirmar los índices creados usando update -nosignOmitir el escaneo del código fuente por problemas binarios u otros problemasSkipping '{apkfilename}' with invalid signature!Skipping index generation for {appid}Skipping {apkfilename} with invalid signature!Skipping {appid}: disabledSkipping {appid}: no builds specifiedEspecifique una carpeta local para sincronizar elEspecifique un fichero de identidad que ofrezca SSH para rsyncEspecifique el editor para utilizar en modo interactivo. Predeterminado Especifique el editor para utilizar en modo interactivo. Predeterminado %sEspecifique el editor para utilizar en modo interactivo. Por defecto es {path}Especificar que estamos ejecutando en el servidor de compilaciónSpecify which debug keystore file to use.Diseminar más información de lo normalStriping mystery signature from {apkfilename}Summary '%s' is just the app's nameSummary of length {length} is over the {limit} char limitSystem clock is older than date in {path}!Modo de prueba: ponga la salida solo en el directorio tmp y siga desarrollando, incluso si la salida ya existe.The OBB version code must come after "{name}.":El URL base para el registro del repositorio (default: https://f-droid.org)The directory to write the mirror toLos únicos comandos soportados son 'init' y 'update'The repository's fingerprint does not match.The repository's index could not be verified.The root dir for local_copy_dir "{path}" does not exist!The the file to be included in the repo (path or glob)There is a keyalias collision - publishing haltedThis repo already has local metadata: %sTo use awsbucket, awssecretkey and awsaccesskeyid must also be set in config.py!UCM is set but it looks like checkupdates hasn't been run yetURL shorteners should not be usedURL title is just the URL, use brackets: [URL]URL {url} in Description: {error}Unexpected text on same line as {field} in {linedesc}¡Se encontró una excepción desconocida!Unknown file '{filename}' in build '{versionName}'Unknown metadata format: %sFormato de metadatos desconocido: {path}Unknown version of aapt, might cause problems: Unlinkified link - use [http://foo.bar Link title] or [http://foo.bar]Unnecessary leading spaceUnnecessary trailing spaceUnrecognised app field: Unrecognised field '{field}' in {linedesc}Unsupported file type "{extension}" for repo graphicUnsupported graphics file found: {path}Unsupported metadata format, use: --to [{supported}]Unterminated ]Unterminated ]]Unterminated build in {name}Unterminated continuation in {name}Unused extlib at %sUnused file at %sUpdate Check Name is set to the known app id - it can be removedActualizar la información del repositorio para nuevos paquetesActualizar el registro de transparencia binario para una URLActualizar las estadísticas del repositorioActualizar el wikiUsoUso: %s Use /HEAD instead of /master to point at a file in the default branchUse `fdroid update -c` to create it.Use un servidor de compilaciónUse la fecha del APK en vez de la fecha actual para los nuevos APK añadidosUse la fecha del «apk» en vez de la fecha actual para los nuevos «apk» añadidosUsing "{path}" for configuring s3cmd.Using Java's jarsigner, not recommended for verifying APKs! Use apksignerUsing existing keystore "{path}"Using s3cmd to sync with: {url}Los comandos válidos son:Verificar la integridad de los paquetes descargadosVerifying index signature:Alertar sobre posibles errores de metadatosCuando está configurado para índices firmados, crear solo índices sin signo en esta etapaX.509 'Nombre Distintivo' (DN) usado al generar clavesX.509 'Nombre Distintivo' (DN) usado al generar clavesYou can use ANDROID_HOME to set the path to your SDK, i.e.:adding IdentityFile to {path}adding to {name}: {path}opción ambigua: %(option)s podría corresponderse con %(matches)sopción ambigua: %s (%s?)applicationId para buscar actualizacionesargument "-" with mode %rattempting bare ssh connection to test deploy key:no se puede abrir '%s': %scannot have multiple subparser argumentscannot merge actions - two groups are named %rcannot publish update, did you set the deploy key?cloning {url}Comando para ejecutar, ya sea 'init' o 'update'complexconflicting option string: %sconflicting option strings: %scopying {apkfilename} into {path}created {path}deleting: repo/{apkfilename}dest= is required for options like %rexpected %s argumentexpected %s argumentsexpected at least one argumentexpected at most one argumentexpected one argumentfloating-pointForzar a los errores a ser advertencias o ignorarlasgit svn clone failedignored explicit argument %rindex-v1 must have a signature, use `fdroid signindex` to create it!integerinvalid %(type)s value: %(value)rinvalid choice: %(value)r (choose from %(choices)s)invalid conflict_resolution value: %rinvalid option string %(option)r: must start with a character %(prefix_chars)rlocal_copy_dir does not end with "fdroid", perhaps you meant: "{path}"local_copy_dir must be an absolute path!local_copy_dir must be directory, not a file!mirror '%s' does not end with 'fdroid'!mutually exclusive arguments must be optionalno "icon" in {appid}no APK suppliedno hay tal opción: %snot allowed with argument %sone of the arguments %s is requiredonly accepts strings, lists, and tuplesoption %s: If you really want to install all the signed apps, use --alloption %s: invalid %s value: %roption %s: invalid choice: %r (choose from %s)opción -%s no reconocidaopción -%s requiere un argumentoopción --%s no puede llevar argumentoopción --%s no es un prefijo únicoopción --%s no reconocidaopción --%s requiere un argumentoargumentos opcionalesoverwriting existing {path}argumentos posicionalesrefuse downloading via insecure HTTP connection (use HTTPS or specify --no-https-check): {apkfilename}refuse downloading via insecure http connection (use https or specify --no-https-check): {apkfilename}s3cmd sync indexes {path} to {url} and deletemostrar el número de versión del programa y salirmostrar este mensaje de ayuda y salirsigned APK, either a file-path or HTTPS URL.skipping source tarball: {path}srclibs missing name and/or @se requieren los siguientes argumentos: %scadena de opción inesperada: %sunknown parser %(parser_name)r (choices: %(choices)s)argumentos no reconocidos: %spermisos inseguros en '{config_file}' (¡debería ser 0600)!uso: Uso: fdroid [-h|--help|--version] []using Apache libcloud to sync with {url}{0} app, {1} key aliases{0} apps, {1} key aliases{apkfilename} ({appid}) has no metadata!{apkfilename} has multiple {name} files, looks like Master Key exploit!{appid} does not have a name! Using package name instead.{appid} is missing {name}{appid}: Unknown extlib {path} in build '{versionName}'{appid}: no builds specified, running on current source state{field} not terminated in {name}{name} "{path}" does not exist! Correct it in config.py.{path} does not exist! Create it by running:{path} has bad file signature "{pattern}", possible Janus exploit!{path} is zero size!{url} does not end with "fdroid", check the URL path!{} build failed{} builds failed{} build succeeded{} builds succeededfdroidserver-1.0.9/locale/es/LC_MESSAGES/fdroidserver.po0000664000175000017500000017240613322065577022642 0ustar hanshans00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: fdroidserver 0.9\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" "POT-Creation-Date: 2018-02-13 09:01+0100\n" "PO-Revision-Date: 2018-04-16 09:37+0000\n" "Last-Translator: Laura Arjona Reina \n" "Language-Team: Spanish \n" "Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 3.0-dev\n" #: ../fdroidserver/nightly.py msgid "" "\n" "SSH Public Key to be used as Deploy Key:" msgstr "" "\n" "Clave pública SSH que se usará como clave de despliegue:" #: ../fdroidserver/nightly.py #, python-brace-format msgid "" "\n" "{path} encoded for the DEBUG_KEYSTORE secret variable:" msgstr "" "\n" "{path} codificada para la variable secreta DEBUG_KEYSTORE:" #: ../fdroidserver/lint.py #, python-format msgid "\"%s/\" has no matching metadata file!" msgstr "¡\"%s/\" no tiene su correspondiente fichero de metadatos!" #: ../fdroidserver/update.py #, python-brace-format msgid "\"{path}\" contains outdated {name} ({version})" msgstr "\"{path}\" contiene {name} ({version}) caducado" #: ../fdroidserver/update.py #, python-brace-format msgid "\"{path}\" contains recent {name} ({version})" msgstr "\"{path}\" contiene {name} ({version}) reciente" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "\"{path}\" exists but s3cmd is not installed!" msgstr "\"{path}\" existe pero ¡s3cmd no está instalado!" #: ../fdroidserver/metadata.py #, python-brace-format msgid "\"{path}\" is not an accepted format, convert to: {formats}" msgstr "\"{path}\" no es un formato reconocido, convertir a: {formats}" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "%(option)s option requires %(number)d argument" msgid_plural "%(option)s option requires %(number)d arguments" msgstr[0] "la opción %(option)s requiere %(number)d argumento" msgstr[1] "la opción %(option)s requiere %(number)d argumentos" #: ../fdroidserver/mirror.py #, python-format msgid "%(prog)s [options] url" msgstr "%(prog)s [opciones] url" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "%(prog)s: error: %(message)s\n" msgstr "%(prog)s: error: %(message)s\n" #: ../fdroidserver/scanner.py #, python-format msgid "%d problems found" msgstr "%d problemas encontrados" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "%prog [options]" msgstr "%prog [opciones]" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "%r is not callable" msgstr "no se puede llamar a %r" #: ../fdroidserver/lint.py #, python-format msgid "%s is not an accepted build field" msgstr "%s no es un campo de construcción aceptado" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "%s option does not take a value" msgstr "la opción %s no toma un valor" #: ../fdroidserver/index.py ../fdroidserver/common.py msgid "'keypass' not found in config.py!" msgstr "¡'keypass' no encontrado en config.py!" #: ../fdroidserver/index.py ../fdroidserver/common.py msgid "'keystore' not found in config.py!" msgstr "¡'keystore' no encontrado en config.py!" #: ../fdroidserver/index.py ../fdroidserver/common.py msgid "'keystorepass' not found in config.py!" msgstr "¡'keystorepass' no encontrado en config.py!" #: ../fdroidserver/index.py ../fdroidserver/common.py msgid "'repo_keyalias' not found in config.py!" msgstr "¡'repo_keyalias' no encontrado en config.py!" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "'required' is an invalid argument for positionals" msgstr "'required' es un argumento inválido para posicionales" #: ../fdroidserver/common.py msgid "'sdk_path' not set in 'config.py'!" msgstr "¡'sdk_path' no establecido en 'config.py'!" #. Translators: "build-tools" is the file name of a package from #. Google, it is part of the Android SDK. So it probably shouldn't be #. translated or transliterated. #: ../fdroidserver/common.py #, python-brace-format msgid "'{aapt}' is too old, fdroid requires build-tools-23.0.0 or newer!" msgstr "" "¡'{aapt}' es demasiado antiguo, fdroid requiere build-tools-23.0.0 o " "posterior!" #: ../fdroidserver/common.py #, python-brace-format msgid "'{aapt}' is too old, fdroid requires build-tools-{version} or newer!" msgstr "" "¡'{aapt}' es demasiado antiguo, fdroid requiere build-tools-{version} o " "posterior!" #: ../fdroidserver/install.py #, python-brace-format msgid "'{apkfilename}' is already installed on {dev}." msgstr "'{apkfilename}' ya está instalado en {dev}." #: ../fdroidserver/common.py #, python-brace-format msgid "" "'{field}' will be in random order! Use () or [] brackets if order is " "important!" msgstr "" "¡'{field}' estará en un orden aleatorio! ¡Use paréntesis () o [] si el orden " "es importante!" #: ../fdroidserver/common.py #, python-brace-format msgid "'{path}' failed to execute!" msgstr "¡Falló la ejecución de '{path}'!" #: ../fdroidserver/metadata.py #, python-brace-format msgid "'{value}' is not a valid {field} in {appid}. Regex pattern: {pattern}" msgstr "" "'{value}' no es un {field} válido en {appid}. Patrón de expresión regular: " "{pattern}" #: ../fdroidserver/checkupdates.py #, python-brace-format msgid "...checkupdate failed for {appid} : {error}" msgstr "...falló la comprobación de actualizaciones para {appid} : {error}" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid ".__call__() not defined" msgstr ".__call__() no definida" #: ../fdroidserver/metadata.py msgid ".fdroid.txt is not supported! Convert to .fdroid.yml or .fdroid.json." msgstr "" "¡.fdroid.txt no está soportado! Conviértalo a .fdroid.yml o .fdroid.json." #: ../fdroidserver/lint.py msgid "/issues is missing" msgstr "no se encuentra /issues" #: ../fdroidserver/mirror.py msgid "A URL is required as an argument!" msgstr "¡Se requiere una URL como argumento!" #: ../fdroid msgid "Add PGP signatures using GnuPG for packages in repo" msgstr "Añadir las firmas PGP para los paquetes en el repositorio usando GnuPG" #: ../fdroid msgid "Add a new application from its source code" msgstr "Añadir una nueva aplicación desde su código fuente" #: ../fdroidserver/update.py msgid "Add a repo signing key to an unsigned repo" msgstr "Cree una clave de firmado para un repositorio sin firmar" #: ../fdroidserver/update.py msgid "Add skeleton metadata files for APKs that are missing them" msgstr "" "Agregar archivos con esqueleto de metadats para las aplicaciones que no los " "tienen" #: ../fdroidserver/update.py #, python-brace-format msgid "Adding new repo for only {name}" msgstr "Agregando nuevo repo solamente para {name}" #: ../fdroidserver/init.py msgid "Alias of the repo signing key in the keystore" msgstr "Alias de la clave de firma de repositorio en el depósitio de claves" #: ../fdroidserver/import.py msgid "" "Allows a different revision (or git branch) to be specified for the initial " "import" msgstr "" "Permite especificar una revisión diferente (o git sector) para la " "importación inicial" #: ../fdroidserver/mirror.py msgid "Also mirror the full archive section" msgstr "También replicar la sección completa del archivo" #: ../fdroidserver/lint.py msgid "Also warn about formatting issues, like rewritemeta -l" msgstr "También advierta sobre problemas de formato, como r rewritemeta-l" #: ../fdroidserver/common.py #, python-brace-format msgid "Android SDK '{path}' does not have '{dirname}' installed!" msgstr "¡El SDK de Android '{path}' no tiene '{dirname}' instalado!" #: ../fdroidserver/common.py msgid "Android SDK not found!" msgstr "¡No se encontró el SDK de Android!" #: ../fdroidserver/common.py #, python-brace-format msgid "Android SDK path '{path}' does not exist!" msgstr "¡No existe la ruta '{path}' al SDK de Android!" #: ../fdroidserver/common.py #, python-brace-format msgid "Android SDK path '{path}' is not a directory!" msgstr "¡La ruta al SDK de Android '{path}' no es un directorio!" #. Translators: "build-tools" is the file name of a package from #. Google, it is part of the Android SDK. So it probably shouldn't be #. translated or transliterated. #: ../fdroidserver/common.py #, python-brace-format msgid "Android build-tools path '{path}' does not exist!" msgstr "¡La ruta a build-tools de Android '{path}' no existe!" #: ../fdroidserver/update.py msgid "AndroidManifest.xml has no date" msgstr "AndroidManifest.xml no tiene fecha" #: ../fdroidserver/lint.py #, python-brace-format msgid "App is in '{repo}' but has a link to {url}" msgstr "La aplicación está en '{repo}' pero tiene un enlace a {url}" #: ../fdroidserver/lint.py msgid "Appending .git is not necessary" msgstr "No es necesario agregar .git" #: ../fdroidserver/update.py #, python-brace-format msgid "Archiving {apkfilename} with invalid signature!" msgstr "¡Archivando {apkfilename} con una firma inválida!" #: ../fdroidserver/mirror.py msgid "" "Base URL to mirror, can include the index signing key using the query " "string: ?fingerprint=" msgstr "" "URL base para replicar, puede incluir la clave de firma del índice usando la " "cadena de consulta: ?fingerprint=" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vname #: ../fdroidserver/lint.py #, python-brace-format msgid "Branch '{branch}' used as commit in build '{versionName}'" msgstr "Rama '{branch}' usada como \"commit\" en el build '{versionName}'" #: ../fdroidserver/lint.py #, python-brace-format msgid "Branch '{branch}' used as commit in srclib '{srclib}'" msgstr "Rama '{branch}' usada como \"commit\" en srclib '{srclib}'" #: ../fdroid msgid "Build a package from source" msgstr "Crear un paquete desde la fuente" #: ../fdroidserver/build.py msgid "Build all applications available" msgstr "Compilar todas las aplicaciones disponibles" #: ../fdroidserver/lint.py msgid "Build generated by `fdroid import` - remove disable line once ready" msgstr "" "Build generada por `fdroid import` - Eliminar \"disable line\" cuando esté " "lista" #: ../fdroidserver/build.py msgid "Build only the latest version of each package" msgstr "Construir sólo la última versión de cada paquete" #: ../fdroidserver/metadata.py #, python-brace-format msgid "" "Build should have comma-separated versionName and versionCode, not " "\"{value}\", in {linedesc}" msgstr "" #: ../fdroidserver/init.py #, python-format msgid "Built repo based in \"%s\" with this config:" msgstr "Repositorio creado en \"%s\" con esta configuración:" #: ../fdroidserver/build.py msgid "Can't build due to {} error while scanning" msgid_plural "Can't build due to {} errors while scanning" msgstr[0] "No se puede construir debido al error {} mientras se comprobaba" msgstr[1] "" "No se puede construir debido a los errores {} mientras se comprobaba" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Cannot find a packageName for {path}!" msgstr "¡No se puede encontrar un packageName para {path}!" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Cannot find an appid for {path}!" msgstr "¡No se puede encontrar un appid para {path}!" #: ../fdroidserver/vmtools.py #, python-brace-format msgid "Cannot read \"{path}\"!" msgstr "¡No se puede leer \"{path}\"!" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Cannot resolve app id {appid}" msgstr "No se puede resolver el identificador de aplicación {appid}" #: ../fdroidserver/rewritemeta.py msgid "Cannot use --list and --to at the same time" msgstr "No se puede usar --list y --to al mismo tiempo" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Cannot write \"{path}\", not an accepted format, use: {formats}" msgstr "" "No se puede escribir \"{path}\", no está en un formato aceptado, use: " "{formats}" #: ../fdroidserver/lint.py msgid "Categories are not set" msgstr "No se han establecido categorías" #: ../fdroidserver/lint.py #, python-format msgid "Category '%s' is not valid" msgstr "La categoría '%s' no es válida" #: ../fdroid msgid "Check for updates to applications" msgstr "Buscar actualizaciones de aplicaciones" #: ../fdroidserver/update.py #, python-brace-format msgid "" "Checking archiving for {appid} - apks:{integer}, keepversions:{keep}, " "archapks:{arch}" msgstr "" "Comprobando la operación de archivo para {appid} - apks:{integer}, " "keepversions:{keep}, archapks:{arch}" #: ../fdroidserver/dscanner.py msgid "Clean after all scans have finished" msgstr "Limpiar después de que todos los análisis hayan finalizado" #: ../fdroidserver/dscanner.py msgid "Clean before the scans start and rebuild the container" msgstr "Limpiar antes de que los análisis inicien y reconstruir el contenedor" #: ../fdroidserver/dscanner.py msgid "Clean up all containers and then exit" msgstr "Limpiar todos los contenedores y luego salir" #: ../fdroidserver/update.py msgid "Clean update - don't uses caches, reprocess all APKs" msgstr "Actualización limpia, no usa la caché, procesa todas las APKs" #: ../fdroidserver/import.py msgid "Comma separated list of categories." msgstr "Lista de categorías separadas por comas." #: ../fdroid #, c-format, python-format msgid "Command '%s' not recognised.\n" msgstr "Comando %s no reconocido\n" #: ../fdroidserver/checkupdates.py msgid "Commit changes" msgstr "Aplicar cambios" #: ../fdroidserver/common.py #, python-brace-format msgid "Could not find '{command}' on your system" msgstr "No se pudo encontrar '{command}' en el sistema" #: ../fdroidserver/update.py #, python-brace-format msgid "Could not find {path} to remove it" msgstr "No se pudo encontrar {path} para eliminarlo" #: ../fdroidserver/update.py msgid "Could not open apk file for analysis" msgstr "No se ha podido abrir el archivo apk para analizarlo" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/import.py msgid "Couldn't find latest version code" msgstr "No se ha podido encontrar el último código de versión" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vname #: ../fdroidserver/import.py msgid "Couldn't find latest version name" msgstr "No se ha podido encontrar el último nombre de versión" #: ../fdroidserver/import.py msgid "Couldn't find package ID" msgstr "No se ha podido encontrar el identificador de paquete" #: ../fdroidserver/update.py msgid "Cowardily refusing to overwrite existing signing key setup!" msgstr "" "¡Se ha rechazado (cobardemente) sobrescribir la configuración existente de " "clave de firma!" #: ../fdroidserver/update.py msgid "Create a repo signing key in a keystore" msgstr "Cree una clave de firmado de repositorios en un llavero de claves" #: ../fdroidserver/update.py msgid "Create skeleton metadata files that are missing" msgstr "Crear esqueleto de metadatos de archivos que faltan" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Created new container \"{name}\"" msgstr "Se ha creado el contenedor nuevo \"{name}\"" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Creating \"{path}\" for configuring s3cmd." msgstr "Creando \"{path}\" para configurar s3cmd." #: ../fdroidserver/publish.py msgid "Creating log directory" msgstr "Creando el directorio de registro (\"log\")" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Creating new S3 bucket: {url}" msgstr "" #: ../fdroidserver/publish.py msgid "Creating output directory" msgstr "Creando el directorio de salida" #: ../fdroidserver/index.py msgid "Creating signed index with this key (SHA256):" msgstr "Creando índice firmado con esta clave (SHA256):" #: ../fdroidserver/import.py ../fdroidserver/verify.py #: ../fdroidserver/publish.py msgid "Creating temporary directory" msgstr "Creando directorio temporal" #: ../fdroidserver/index.py msgid "Creating unsigned index in preparation for signing" msgstr "Creando índice no firmado, en preparación de la firma" #: ../fdroidserver/nightly.py msgid "DEBUG_KEYSTORE is not set or the value is incomplete" msgstr "DEBUG_KEYSTORE no está establecida o su valor es incompleto" #: ../fdroidserver/update.py msgid "Delete APKs and/or OBBs without metadata from the repo" msgstr "Borrar del repositorio archivos APK y/o OBB sin metadatos" #: ../fdroidserver/update.py #, python-brace-format msgid "Deleting unknown file: {path}" msgstr "Borrando fichero desconocido: {path}" #: ../fdroidserver/lint.py #, python-format msgid "Description '%s' is just the app's summary" msgstr "La descripción '%s' es simplemente el resumen de la aplicación" #: ../fdroidserver/lint.py msgid "Description has a duplicate line" msgstr "La descripción contiene una línea duplicada" #: ../fdroidserver/lint.py #, python-format msgid "Description has a list (%s) but it isn't bulleted (*) nor numbered (#)" msgstr "" "La descripción tiene una lista (%s) pero no está estructurada (*) ni " "numerada (#)" #: ../fdroidserver/lint.py #, python-brace-format msgid "Description of length {length} is over the {limit} char limit" msgstr "" "La descripción de longitud {length} supera el límite de caracteres, {limit}" #: ../fdroidserver/mirror.py #, python-brace-format msgid "Do not include \"{path}\" in URL!" msgstr "¡No incluir \"{path}\" en la URL!" #: ../fdroidserver/init.py msgid "Do not prompt for Android SDK path, just fail" msgstr "No solicitar la ruta al Android SDK, si falla" #: ../fdroidserver/build.py msgid "Don't create a source tarball, useful when testing a build" msgstr "No cree un tarball de origen, útil al probar una compilación" #: ../fdroidserver/stats.py msgid "Don't do anything logs-related" msgstr "No haga nada con registros relacionados" #: ../fdroidserver/build.py msgid "" "Don't refresh the repository, useful when testing a build with no internet " "connection" msgstr "" "No actualizar el repositorio, útil al probar una compilación sin conexión a " "Internet" #: ../fdroidserver/server.py ../fdroidserver/nightly.py #: ../fdroidserver/upload.py msgid "Don't use rsync checksums" msgstr "No use rsync checksums" #: ../fdroid msgid "Download complete mirrors of small repos" msgstr "Descargar réplicas completas de repositorios pequeños" #: ../fdroidserver/stats.py msgid "Download logs we don't have" msgstr "Descargar registros que no tenemos" #: ../fdroidserver/common.py msgid "Downloading the repository already failed once, not trying again." msgstr "" "La descarga del repositorio ya falló una vez, no se intentará de nuevo." #: ../fdroidserver/verify.py #, python-brace-format msgid "Downloading {url} failed. {error}" msgstr "La descarga de {url} falló. {error}" #: ../fdroidserver/metadata.py #, python-brace-format msgid "" "Duplicate build recipe found for versionCode {versionCode} in {linedesc}" msgstr "" #: ../fdroidserver/lint.py #, python-brace-format msgid "Duplicate link in '{field}': {url}" msgstr "" #: ../fdroid msgid "Dynamically scan APKs post build" msgstr "" "Ejecutar Fdroid dscanner de una aplicación APK, previamente construída," #: ../fdroidserver/mirror.py msgid "" "ERROR: this command should never be used to mirror f-droid.org!\n" "A full mirror of f-droid.org requires more than 200GB." msgstr "" #: ../fdroidserver/nightly.py msgid "ERROR: unsupported CI type, patches welcome!" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Empty build flag at {linedesc}" msgstr "" #: ../fdroidserver/init.py #, python-format msgid "" "Enter the path to the Android SDK (%s) here:\n" "> " msgstr "" #: ../fdroidserver/server.py ../fdroidserver/checkupdates.py #: ../fdroidserver/upload.py #, python-format msgid "Error while attempting to publish log: %s" msgstr "" #: ../fdroidserver/import.py msgid "Error while getting repo address" msgstr "" #: ../fdroid msgid "Extract signatures from APKs" msgstr "" #: ../fdroidserver/signatures.py #, python-brace-format msgid "Failed fetching signatures for '{apkfilename}': {error}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Failed reading {path}: {error}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Failed resizing {path}: {error}" msgstr "" #: ../fdroidserver/publish.py #, fuzzy msgid "Failed to align application" msgstr "Compilar todas las aplicaciones disponibles" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Failed to create S3 bucket: {url}" msgstr "" #: ../fdroidserver/common.py msgid "Failed to get APK manifest information" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Failed to get apk information, deleting {path}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Failed to get apk information, skipping {path}" msgstr "" #: ../fdroidserver/install.py #, python-brace-format msgid "Failed to install '{apkfilename}' on {dev}: {error}" msgstr "" #: ../fdroidserver/publish.py ../fdroidserver/common.py msgid "Failed to sign application" msgstr "" #: ../fdroidserver/common.py #, fuzzy msgid "Failed to zipalign application" msgstr "Compilar todas las aplicaciones disponibles" #: ../fdroidserver/build.py #, python-brace-format msgid "Fetched buildserverid from VM: {buildserverid}" msgstr "" #: ../fdroidserver/signatures.py #, python-brace-format msgid "Fetched signatures for '{apkfilename}' -> '{sigdir}'" msgstr "" #: ../fdroidserver/verify.py ../fdroidserver/stats.py ../fdroidserver/update.py #: ../fdroidserver/rewritemeta.py ../fdroidserver/build.py #: ../fdroidserver/checkupdates.py ../fdroidserver/scanner.py #: ../fdroidserver/install.py msgid "Finished" msgstr "" #: ../fdroidserver/lint.py msgid "Flattr donation methods belong in the FlattrID flag" msgstr "" #: ../fdroidserver/lint.py msgid "Forbidden HTML tags" msgstr "" #: ../fdroidserver/build.py msgid "" "Force build of disabled apps, and carries on regardless of scan problems. " "Only allowed in test mode." msgstr "" "Forzar la creación de compilaciones deshabilitadas, independientemente de " "los problemas de escaneo. Sólo se permite en modo de prueba." #: ../fdroidserver/build.py #, python-brace-format msgid "Force halting build after {0} sec timeout!" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Found \"{path}\" graphic without metadata for app \"{name}\"!" msgstr "" #: ../fdroidserver/common.py msgid "Found invalid appids in arguments" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/common.py msgid "Found invalid versionCodes for some apps" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Found multiple metadata files for {appid}" msgstr "Se encontraron multiples ficheros de metadatos para {appid}" #: ../fdroidserver/index.py msgid "Found multiple signing certificates for repository." msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Found multiple signing certificates in {path}" msgstr "" #: ../fdroidserver/index.py msgid "Found no signing certificates for repository." msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Found non-file at %s" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Generated skeleton metadata for {appid}" msgstr "Creada la estructura de metadatos para {appid}" #: ../fdroidserver/common.py #, python-format msgid "Git checkout of '%s' failed" msgstr "" #: ../fdroidserver/common.py msgid "Git clean failed" msgstr "" #: ../fdroidserver/common.py msgid "Git fetch failed" msgstr "" #: ../fdroidserver/common.py msgid "Git remote set-head failed" msgstr "" #: ../fdroidserver/common.py msgid "Git reset failed" msgstr "" #: ../fdroidserver/common.py msgid "Git submodule sync failed" msgstr "" #: ../fdroidserver/common.py msgid "Git submodule update failed" msgstr "" #: ../fdroidserver/common.py msgid "HTTPS must be used with Subversion URLs!" msgstr "" #: ../fdroidserver/index.py msgid "Ignoring package without metadata: " msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Ignoring stale cache data for {apkfilename}" msgstr "" #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Ignoring {ext} file at '{path}'" msgstr "" #: ../fdroidserver/update.py msgid "Include APKs that are signed with disabled algorithms like MD5" msgstr "" #: ../fdroidserver/common.py msgid "Initialising submodules" msgstr "" #: ../fdroidserver/install.py msgid "Install all signed applications available" msgstr "Instalar todas las aplicaciones firmadas disponibles" #: ../fdroid msgid "Install built packages on devices" msgstr "Instalar paquetes constuídos en el dispositivo" #: ../fdroidserver/install.py #, python-format msgid "Installing %s..." msgstr "" #: ../fdroidserver/install.py #, python-brace-format msgid "Installing '{apkfilename}' on {dev}..." msgstr "" #: ../fdroid msgid "Interact with the repo HTTP server" msgstr "Interactuar con el servidor HTTP del repositorio" #: ../fdroidserver/update.py msgid "Interactively ask about things that need updating." msgstr "" "Pregunte de forma interactiva sobre temas que necesitan una actualización." #: ../fdroidserver/update.py msgid "Invalid APK" msgstr "" #: ../fdroidserver/metadata.py #, python-format msgid "Invalid boolean '%s'" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Invalid build flag at {line} in {linedesc}" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Invalid build format: {value} in {name}" msgstr "" #: ../fdroidserver/lint.py msgid "Invalid bulleted list" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "" "Invalid license tag \"%s\"! Use only tags from https://spdx.org/license-list" msgstr "" #: ../fdroidserver/lint.py msgid "Invalid link - use [http://foo.bar Link title] or [http://foo.bar]" msgstr "" #: ../fdroidserver/metadata.py #, python-format msgid "Invalid metadata in %s:%d" msgstr "" #: ../fdroidserver/metadata.py msgid "Invalid metadata in: " msgstr "" #: ../fdroidserver/common.py #, python-format msgid "Invalid name for published file: %s" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Invalid package name {0}" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Invalid versionCode: \"{versionCode}\" is not an integer!" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "JAR signature failed to verify: {path}" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "JAR signature verified: {path}" msgstr "" #: ../fdroidserver/publish.py ../fdroidserver/update.py #: ../fdroidserver/mirror.py msgid "Java JDK not found! Install in standard location or set java_paths!" msgstr "" #: ../fdroidserver/signindex.py msgid "" "Java jarsigner not found! Install in standard location or set java_paths!" msgstr "" #: ../fdroidserver/lint.py msgid "Javascript in HTML src attributes" msgstr "" #: ../fdroidserver/init.py #, fuzzy msgid "Keystore for signing key:\t" msgstr "Ruta al depósito de claves para la clave de firma de repositorio" #: ../fdroidserver/lint.py #, python-brace-format msgid "" "Last used commit '{commit}' looks like a tag, but Update Check Mode is " "'{ucm}'" msgstr "" #: ../fdroidserver/lint.py msgid "Liberapay donation methods belong in the LiberapayID flag" msgstr "" #: ../fdroidserver/rewritemeta.py msgid "List files that would be reformatted" msgstr "Lista de archivos que se reformatearán" #: ../fdroidserver/build.py msgid "Make the build stop on exceptions" msgstr "Hacer que la construcción se detenga en las excepciones" #: ../fdroidserver/index.py msgid "Malformed repository mirrors." msgstr "" #: ../fdroidserver/server.py msgid "Malformed serverwebroot line:" msgstr "" #: ../fdroidserver/gpgsign.py msgid "Missing output directory" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Name '%s' is just the auto name - remove it" msgstr "" #: ../fdroidserver/common.py msgid "No 'config.py' found, using defaults." msgstr "" #: ../fdroidserver/common.py msgid "No Android SDK found!" msgstr "" #: ../fdroidserver/import.py msgid "No android or kivy project could be found. Specify --subdir?" msgstr "" #: ../fdroidserver/install.py msgid "No attached devices found" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "No commit specified for {versionName} in {linedesc}" msgstr "" #: ../fdroidserver/index.py msgid "No fingerprint in URL." msgstr "" #: ../fdroidserver/common.py msgid "No git submodules available" msgstr "" #: ../fdroidserver/import.py msgid "No information found." msgstr "" #: ../fdroidserver/lint.py msgid "No need to specify that the app is Free Software" msgstr "" #: ../fdroidserver/lint.py msgid "No need to specify that the app is for Android" msgstr "" #: ../fdroidserver/server.py msgid "No option set! Edit your config.py to set at least one of these:" msgstr "" #: ../fdroidserver/common.py msgid "No packages specified" msgstr "" #: ../fdroidserver/install.py #, python-format msgid "No signed apk available for %s" msgstr "" #: ../fdroidserver/install.py msgid "No signed output directory - nothing to do" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "No signing certificates found in {path}" msgstr "" #: ../fdroidserver/common.py #, python-format msgid "No such package: %s" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/common.py #, python-brace-format msgid "No such versionCode {versionCode} for app {appid}" msgstr "" #: ../fdroidserver/verify.py ../fdroidserver/publish.py msgid "No unsigned directory - nothing to do" msgstr "" #: ../fdroidserver/signindex.py msgid "Nothing to do" msgstr "" #: ../fdroidserver/checkupdates.py #, python-brace-format msgid "Nothing to do for {appid}." msgstr "" #: ../fdroidserver/init.py #, fuzzy msgid "Now set these in config.py:" msgstr "¡'sdk_path' no establecido en 'config.py'!" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/update.py #, python-brace-format msgid "OBB file has newer versionCode({integer}) than any APK:" msgstr "" #: ../fdroidserver/update.py msgid "OBB filename must start with \"main.\" or \"patch.\":" msgstr "" #: ../fdroidserver/update.py msgid "OBB's packagename does not match a supported APK:" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Old APK signature failed to verify: {path}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Only PNG and JPEG are supported for graphics, found: {path}" msgstr "" #: ../fdroidserver/checkupdates.py msgid "Only print differences with the Play Store" msgstr "Solo imprimir diferencias con el Play Store" #: ../fdroidserver/checkupdates.py msgid "Only process apps with auto-updates" msgstr "Solo procesar aplicaciones con actualizaciones automáticas" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "Options" msgstr "Opciones" #: ../fdroidserver/import.py msgid "Overall license of the project." msgstr "Licencia general del proyecto." #: ../fdroidserver/dscanner.py msgid "Override path for repo APKs (default: ./repo)" msgstr "Ruta de remplazo par el repositorio de APK (default: ./repo)" #: ../fdroidserver/common.py #, python-brace-format msgid "Parsing manifest at '{path}'" msgstr "" #: ../fdroidserver/common.py msgid "Password required with username" msgstr "" #: ../fdroidserver/import.py msgid "Path to main Android project subdirectory, if not in root." msgstr "" "Ruta al subdirectorio principal del proyecto Android, si no está en la raíz." msgid "Path to main android project subdirectory, if not in root." msgstr "" "Ruta al subdirectorio principal del proyecto Android, si no es en la raíz." #: ../fdroidserver/init.py msgid "Path to the Android SDK (sometimes set in ANDROID_HOME)" msgstr "Ruta al Android SDK (a veces ubicado en ANDROID_HOME)" #: ../fdroidserver/btlog.py msgid "Path to the git repo to use as the log" msgstr "Ruta de acceso al reporte git para usarlo como registro" #: ../fdroidserver/init.py msgid "Path to the keystore for the repo signing key" msgstr "Ruta al depósito de claves para la clave de firma de repositorio" #: ../fdroidserver/dscanner.py msgid "Prepare Drozer to run a scan" msgstr "Preparar \"Drozer\" para ejecutar un análisis" msgid "Prepare drozer to run a scan" msgstr "Preparar \"Drozer\" para ejecutar un análisis" #: ../fdroidserver/nightly.py msgid "Print the secret variable to the terminal for easy copy/paste" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Problem with description of {appid}: {error}" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Problem with xml at '{path}'" msgstr "" #: ../fdroidserver/checkupdates.py msgid "Process auto-updates" msgstr "Actualizaciones automáticas de procesos" #: ../fdroidserver/publish.py ../fdroidserver/update.py #, python-brace-format msgid "Processing {apkfilename}" msgstr "" #: ../fdroidserver/checkupdates.py ../fdroidserver/scanner.py #, python-brace-format msgid "Processing {appid}" msgstr "" #: ../fdroidserver/update.py #, fuzzy msgid "Produce human-readable XML/JSON for index files" msgstr "Produce un índice legible index.xml" #: ../fdroidserver/update.py msgid "Produce human-readable index.xml" msgstr "Produce un índice legible index.xml" #: ../fdroidserver/import.py msgid "Project URL to import from." msgstr "importar desde.URL del proyecto." #: ../fdroidserver/lint.py msgid "Punctuation should be avoided" msgstr "" #: ../fdroidserver/btlog.py msgid "Push the log to this git remote repository" msgstr "Pulse el registro a este repositorio remoto git" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, fuzzy, python-brace-format msgid "Pushing binary transparency log to {url}" msgstr "Actualizar el registro de transparencia binario para una URL" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Pushing to {url}" msgstr "" #: ../fdroid msgid "Quickly start a new repository" msgstr "Iniciar rápidamente un nuevo repositorio" #: ../fdroid msgid "Read all the metadata files and exit" msgstr "Leer todos los archivos de metadatos y salir" #: ../fdroidserver/common.py #, python-brace-format msgid "Reading '{config_file}'" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Reading minSdkVersion failed: \"{apkfilename}\"" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #. https://developer.android.com/guide/topics/manifest/manifest-element.html#vname #: ../fdroidserver/common.py #, python-brace-format msgid "" "Reading packageName/versionCode/versionName failed, APK invalid: " "'{apkfilename}'" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Reading {apkfilename} from cache" msgstr "" #: ../fdroidserver/stats.py #, fuzzy msgid "" "Recalculate aggregate stats - use when changes have been made that would " "invalidate old cached data." msgstr "Recalcular agregación de estados - usar cuando cambie " #: ../fdroidserver/common.py msgid "Removing specified files" msgstr "" #: ../fdroidserver/update.py msgid "Rename APK files that do not match package.name_123.apk" msgstr "" "Cambiar el nombre de archivos APK que no coinciden con el formato package." "name_123.apk" #: ../fdroidserver/update.py msgid "Report on build data status" msgstr "Informe sobre el estado de los datos de compilación" #: ../fdroidserver/build.py msgid "" "Reset and create a brand new build server, even if the existing one appears " "to be ok." msgstr "" "Restablecer y crear un nuevo servidor de compilación, incluso si el " "existente parece estar bien." #: ../fdroidserver/nightly.py #, fuzzy, python-brace-format msgid "Resigning {apkfilename} with provided debug.keystore" msgstr "¡Archivando {apkfilename} con una firma inválida!" #: ../fdroidserver/update.py msgid "Resize all the icons exceeding the max pixel size and exit" msgstr "" "Cambiar el tamaño de todos los iconos que exceden el tamaño máximo del " "pixeles y salir" #: ../fdroidserver/common.py msgid "Restrict output to warnings and errors" msgstr "Restringir los resultados a advertencias y errores" #: ../fdroid msgid "Rewrite all the metadata files" msgstr "Reescribir todos los archivos de metadatos" #: ../fdroidserver/rewritemeta.py msgid "Rewrite to a specific format: " msgstr "Reescribir a un formato específico: " #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Rewriting '{appid}'" msgstr "" #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Rewriting '{appid}' to '{path}'" msgstr "" #: ../fdroidserver/lint.py #, fuzzy msgid "Run rewritemeta to fix formatting" msgstr "Reescribir a un formato específico: " #: ../fdroidserver/server.py ../fdroidserver/upload.py msgid "Running first pass with MD5 checking disabled" msgstr "" #: ../fdroidserver/mirror.py #, python-brace-format msgid "Running wget in {path}" msgstr "" #: ../fdroidserver/dscanner.py msgid "Scan only the latest version of each package" msgstr "Escanear solo la última versión de cada paquete" #: ../fdroid msgid "Scan the source code of a package" msgstr "Escanear el código fuente de un paquete" #: ../fdroidserver/scanner.py #, python-brace-format msgid "Scanner found {count} problems in {appid}:" msgstr "" #: ../fdroidserver/scanner.py #, python-brace-format msgid "Scanner found {count} problems in {appid}:{versionCode}:" msgstr "" #: ../fdroidserver/build.py msgid "Scanner found {} problem" msgid_plural "Scanner found {} problems" msgstr[0] "" msgstr[1] "" #: ../fdroidserver/common.py msgid "Set clock to that time using:" msgstr "" #: ../fdroidserver/build.py #, python-brace-format msgid "Set open file limit to {integer}" msgstr "" #: ../fdroid msgid "Set up an app build for a nightly build repo" msgstr "" #: ../fdroidserver/build.py msgid "Setting open file limit failed: " msgstr "" #: ../fdroidserver/build.py #, python-brace-format msgid "Setting {0} sec timeout for this build" msgstr "" #: ../fdroidserver/build.py #, fuzzy msgid "Setup an emulator, install the APK on it and perform a Drozer scan" msgstr "" "Configurar un emulador, instalar la APK en él y realizar un escaneo con " "\"Drozer\"" msgid "Setup an emulator, install the apk on it and perform a drozer scan" msgstr "" "Configurar un emulador, instalar la aplicación APK en él y realizar una " "\"Drozer\" scan" #: ../fdroid msgid "Sign and place packages in the repo" msgstr "Firmar y colocar paquetes en el repositorio" #: ../fdroid msgid "Sign indexes created using update --nosign" msgstr "Firmar los índices creados usando update -nosign" #: ../fdroidserver/build.py msgid "Skip scanning the source code for binaries and other problems" msgstr "" "Omitir el escaneo del código fuente por problemas binarios u otros problemas" #: ../fdroidserver/update.py #, python-brace-format msgid "Skipping '{apkfilename}' with invalid signature!" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Skipping index generation for {appid}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Skipping {apkfilename} with invalid signature!" msgstr "" #: ../fdroidserver/scanner.py #, python-brace-format msgid "Skipping {appid}: disabled" msgstr "" #: ../fdroidserver/scanner.py #, python-brace-format msgid "Skipping {appid}: no builds specified" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py msgid "Specify a local folder to sync the repo to" msgstr "Especifique una carpeta local para sincronizar el" #: ../fdroidserver/server.py ../fdroidserver/upload.py msgid "Specify an identity file to provide to SSH for rsyncing" msgstr "Especifique un fichero de identidad que ofrezca SSH para rsync" #: ../fdroidserver/update.py msgid "Specify editor to use in interactive mode. Default " msgstr "" "Especifique el editor para utilizar en modo interactivo. Predeterminado " #, c-format msgid "Specify editor to use in interactive mode. Default %s" msgstr "" "Especifique el editor para utilizar en modo interactivo. Predeterminado %s" #: ../fdroidserver/update.py #, python-brace-format msgid "Specify editor to use in interactive mode. Default is {path}" msgstr "" "Especifique el editor para utilizar en modo interactivo. Por defecto es " "{path}" #: ../fdroidserver/build.py msgid "Specify that we're running on the build server" msgstr "Especificar que estamos ejecutando en el servidor de compilación" #: ../fdroidserver/nightly.py msgid "Specify which debug keystore file to use." msgstr "" #: ../fdroidserver/common.py msgid "Spew out even more information than normal" msgstr "Diseminar más información de lo normal" #: ../fdroidserver/nightly.py #, python-brace-format msgid "Striping mystery signature from {apkfilename}" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Summary '%s' is just the app's name" msgstr "" #: ../fdroidserver/lint.py #, python-brace-format msgid "Summary of length {length} is over the {limit} char limit" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "System clock is older than date in {path}!" msgstr "" #: ../fdroidserver/build.py msgid "" "Test mode - put output in the tmp directory only, and always build, even if " "the output already exists." msgstr "" "Modo de prueba: ponga la salida solo en el directorio tmp y siga " "desarrollando, incluso si la salida ya existe." #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/update.py #, python-brace-format msgid "The OBB version code must come after \"{name}.\":" msgstr "" #: ../fdroidserver/btlog.py msgid "The base URL for the repo to log (default: https://f-droid.org)" msgstr "" "El URL base para el registro del repositorio (default: https://f-droid.org)" #: ../fdroidserver/mirror.py msgid "The directory to write the mirror to" msgstr "" #: ../fdroidserver/server.py msgid "The only commands currently supported are 'init' and 'update'" msgstr "Los únicos comandos soportados son 'init' y 'update'" #: ../fdroidserver/index.py msgid "The repository's fingerprint does not match." msgstr "" #: ../fdroidserver/common.py msgid "The repository's index could not be verified." msgstr "" #: ../fdroidserver/server.py #, python-brace-format msgid "The root dir for local_copy_dir \"{path}\" does not exist!" msgstr "" #: ../fdroidserver/nightly.py msgid "The the file to be included in the repo (path or glob)" msgstr "" #: ../fdroidserver/publish.py msgid "There is a keyalias collision - publishing halted" msgstr "" #: ../fdroidserver/import.py #, python-format msgid "This repo already has local metadata: %s" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py msgid "" "To use awsbucket, awssecretkey and awsaccesskeyid must also be set in config." "py!" msgstr "" #: ../fdroidserver/lint.py msgid "UCM is set but it looks like checkupdates hasn't been run yet" msgstr "" #: ../fdroidserver/lint.py msgid "URL shorteners should not be used" msgstr "" #: ../fdroidserver/metadata.py msgid "URL title is just the URL, use brackets: [URL]" msgstr "" #: ../fdroidserver/lint.py #, python-brace-format msgid "URL {url} in Description: {error}" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Unexpected text on same line as {field} in {linedesc}" msgstr "" #: ../fdroid msgid "Unknown exception found!" msgstr "¡Se encontró una excepción desconocida!" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vname #: ../fdroidserver/lint.py #, python-brace-format msgid "Unknown file '{filename}' in build '{versionName}'" msgstr "" #: ../fdroidserver/metadata.py #, python-format msgid "Unknown metadata format: %s" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Unknown metadata format: {path}" msgstr "Formato de metadatos desconocido: {path}" #: ../fdroidserver/common.py msgid "Unknown version of aapt, might cause problems: " msgstr "" #: ../fdroidserver/lint.py msgid "Unlinkified link - use [http://foo.bar Link title] or [http://foo.bar]" msgstr "" #: ../fdroidserver/lint.py msgid "Unnecessary leading space" msgstr "" #: ../fdroidserver/lint.py msgid "Unnecessary trailing space" msgstr "" #: ../fdroidserver/metadata.py msgid "Unrecognised app field: " msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Unrecognised field '{field}' in {linedesc}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Unsupported file type \"{extension}\" for repo graphic" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Unsupported graphics file found: {path}" msgstr "" #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Unsupported metadata format, use: --to [{supported}]" msgstr "" #: ../fdroidserver/metadata.py msgid "Unterminated ]" msgstr "" #: ../fdroidserver/metadata.py msgid "Unterminated ]]" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Unterminated build in {name}" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Unterminated continuation in {name}" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Unused extlib at %s" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Unused file at %s" msgstr "" #: ../fdroidserver/lint.py msgid "Update Check Name is set to the known app id - it can be removed" msgstr "" #: ../fdroid msgid "Update repo information for new packages" msgstr "Actualizar la información del repositorio para nuevos paquetes" #: ../fdroid msgid "Update the binary transparency log for a URL" msgstr "Actualizar el registro de transparencia binario para una URL" #: ../fdroid msgid "Update the stats of the repo" msgstr "Actualizar las estadísticas del repositorio" #: ../fdroidserver/update.py ../fdroidserver/build.py msgid "Update the wiki" msgstr "Actualizar el wiki" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "Usage" msgstr "Uso" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "Usage: %s\n" msgstr "Uso: %s\n" #: ../fdroidserver/lint.py msgid "Use /HEAD instead of /master to point at a file in the default branch" msgstr "" #: ../fdroidserver/update.py msgid "Use `fdroid update -c` to create it." msgstr "" #: ../fdroidserver/build.py msgid "Use build server" msgstr "Use un servidor de compilación" #: ../fdroidserver/update.py msgid "Use date from APK instead of current time for newly added APKs" msgstr "" "Use la fecha del APK en vez de la fecha actual para los nuevos APK añadidos" msgid "Use date from apk instead of current time for newly added apks" msgstr "" "Use la fecha del «apk» en vez de la fecha actual para los nuevos «apk» " "añadidos" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Using \"{path}\" for configuring s3cmd." msgstr "" #: ../fdroidserver/common.py msgid "" "Using Java's jarsigner, not recommended for verifying APKs! Use apksigner" msgstr "" #: ../fdroidserver/init.py #, python-brace-format msgid "Using existing keystore \"{path}\"" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Using s3cmd to sync with: {url}" msgstr "" #: ../fdroid msgid "Valid commands are:" msgstr "Los comandos válidos son:" #: ../fdroid msgid "Verify the integrity of downloaded packages" msgstr "Verificar la integridad de los paquetes descargados" #: ../fdroidserver/index.py msgid "Verifying index signature:" msgstr "" #: ../fdroid msgid "Warn about possible metadata errors" msgstr "Alertar sobre posibles errores de metadatos" #: ../fdroidserver/update.py msgid "" "When configured for signed indexes, create only unsigned indexes at this " "stage" msgstr "" "Cuando está configurado para índices firmados, crear solo índices sin signo " "en esta etapa" msgid "X.509 'Distiguished Name' used when generating keys" msgstr "X.509 'Nombre Distintivo' (DN) usado al generar claves" #: ../fdroidserver/init.py msgid "X.509 'Distinguished Name' used when generating keys" msgstr "X.509 'Nombre Distintivo' (DN) usado al generar claves" #: ../fdroidserver/common.py msgid "You can use ANDROID_HOME to set the path to your SDK, i.e.:" msgstr "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "adding IdentityFile to {path}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "adding to {name}: {path}" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "ambiguous option: %(option)s could match %(matches)s" msgstr "opción ambigua: %(option)s podría corresponderse con %(matches)s" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "ambiguous option: %s (%s?)" msgstr "opción ambigua: %s (%s?)" #: ../fdroidserver/lint.py ../fdroidserver/rewritemeta.py #, fuzzy msgid "applicationId in the form APPID" msgstr "applicationId en el formato APPID" #: ../fdroidserver/checkupdates.py msgid "applicationId to check for updates" msgstr "applicationId para buscar actualizaciones" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/verify.py ../fdroidserver/publish.py #: ../fdroidserver/dscanner.py ../fdroidserver/build.py #: ../fdroidserver/scanner.py ../fdroidserver/install.py #, fuzzy msgid "applicationId with optional versionCode in the form APPID[:VERCODE]" msgstr "APP-ID con código de versión opcional en la forma APPID [: VERCODE]" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "argument \"-\" with mode %r" msgstr "" #: ../fdroidserver/nightly.py msgid "attempting bare ssh connection to test deploy key:" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "can't open '%s': %s" msgstr "no se puede abrir '%s': %s" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "cannot have multiple subparser arguments" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "cannot merge actions - two groups are named %r" msgstr "" #: ../fdroidserver/nightly.py msgid "cannot publish update, did you set the deploy key?" msgstr "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "cloning {url}" msgstr "" #: ../fdroidserver/server.py msgid "command to execute, either 'init' or 'update'" msgstr "Comando para ejecutar, ya sea 'init' o 'update'" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "complex" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "conflicting option string: %s" msgid_plural "conflicting option strings: %s" msgstr[0] "" msgstr[1] "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "copying {apkfilename} into {path}" msgstr "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "created {path}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "deleting: repo/{apkfilename}" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "dest= is required for options like %r" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "expected %s argument" msgid_plural "expected %s arguments" msgstr[0] "" msgstr[1] "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "expected at least one argument" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "expected at most one argument" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "expected one argument" msgstr "" #: ../fdroid #, fuzzy msgid "fdroid [-h|--help|--version] []" msgstr "Uso: fdroid [-h|--help|--version] []" #: ../fdroid #, fuzzy msgid "fdroid [] [-h|--help|--version|]" msgstr "Uso: fdroid [-h|--help|--version] []" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "floating-point" msgstr "" #: ../fdroidserver/metadata.py msgid "force errors to be warnings, or ignore" msgstr "Forzar a los errores a ser advertencias o ignorarlas" #: ../fdroidserver/metadata.py #, fuzzy msgid "force metadata errors (default) to be warnings, or to be ignored." msgstr "Forzar a los errores a ser advertencias o ignorarlas" #: ../fdroidserver/common.py msgid "git svn clone failed" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "ignored explicit argument %r" msgstr "" #: ../fdroidserver/index.py msgid "index-v1 must have a signature, use `fdroid signindex` to create it!" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "integer" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "invalid %(type)s value: %(value)r" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "invalid choice: %(value)r (choose from %(choices)s)" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "invalid conflict_resolution value: %r" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "" "invalid option string %(option)r: must start with a character " "%(prefix_chars)r" msgstr "" #: ../fdroidserver/server.py #, python-brace-format msgid "" "local_copy_dir does not end with \"fdroid\", perhaps you meant: \"{path}\"" msgstr "" #: ../fdroidserver/server.py msgid "local_copy_dir must be an absolute path!" msgstr "" #: ../fdroidserver/server.py msgid "local_copy_dir must be directory, not a file!" msgstr "" #: ../fdroidserver/index.py #, python-format msgid "mirror '%s' does not end with 'fdroid'!" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "mutually exclusive arguments must be optional" msgstr "" #: ../fdroidserver/mirror.py #, python-brace-format msgid "no \"icon\" in {appid}" msgstr "" #: ../fdroidserver/signatures.py msgid "no APK supplied" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "no such option: %s" msgstr "no hay tal opción: %s" #: ../fdroid #, fuzzy msgid "no version info found!" msgstr "¡Se encontró una excepción desconocida!" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "not allowed with argument %s" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "one of the arguments %s is required" msgstr "" #: ../fdroidserver/index.py ../fdroidserver/common.py msgid "only accepts strings, lists, and tuples" msgstr "" #: ../fdroidserver/install.py #, python-format msgid "option %s: If you really want to install all the signed apps, use --all" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "option %s: invalid %s value: %r" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "option %s: invalid choice: %r (choose from %s)" msgstr "" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option -%s not recognized" msgstr "opción -%s no reconocida" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option -%s requires argument" msgstr "opción -%s requiere un argumento" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option --%s must not have an argument" msgstr "opción --%s no puede llevar argumento" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option --%s not a unique prefix" msgstr "opción --%s no es un prefijo único" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option --%s not recognized" msgstr "opción --%s no reconocida" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option --%s requires argument" msgstr "opción --%s requiere un argumento" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "optional arguments" msgstr "argumentos opcionales" #: ../fdroidserver/nightly.py #, python-brace-format msgid "overwriting existing {path}" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "positional arguments" msgstr "argumentos posicionales" #: ../fdroidserver/signatures.py #, python-brace-format msgid "" "refuse downloading via insecure HTTP connection (use HTTPS or specify --no-" "https-check): {apkfilename}" msgstr "" #: ../fdroidserver/signatures.py #, python-brace-format msgid "" "refuse downloading via insecure http connection (use https or specify --no-" "https-check): {apkfilename}" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "s3cmd sync indexes {path} to {url} and delete" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "show program's version number and exit" msgstr "mostrar el número de versión del programa y salir" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.5/optparse.py #: /usr/lib/python3.6/argparse.py /usr/lib/python3.6/optparse.py msgid "show this help message and exit" msgstr "mostrar este mensaje de ayuda y salir" #: ../fdroidserver/signatures.py msgid "signed APK, either a file-path or HTTPS URL." msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "skipping source tarball: {path}" msgstr "" #: ../fdroidserver/lint.py msgid "srclibs missing name and/or @" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "the following arguments are required: %s" msgstr "se requieren los siguientes argumentos: %s" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "unexpected option string: %s" msgstr "cadena de opción inesperada: %s" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "unknown parser %(parser_name)r (choices: %(choices)s)" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "unrecognized arguments: %s" msgstr "argumentos no reconocidos: %s" #: ../fdroidserver/common.py #, python-brace-format msgid "unsafe permissions on '{config_file}' (should be 0600)!" msgstr "permisos inseguros en '{config_file}' (¡debería ser 0600)!" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py ../fdroid msgid "usage: " msgstr "uso: " #: ../fdroid msgid "usage: fdroid [-h|--help|--version] []" msgstr "Uso: fdroid [-h|--help|--version] []" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "using Apache libcloud to sync with {url}" msgstr "" #: ../fdroidserver/publish.py #, python-brace-format msgid "{0} app, {1} key aliases" msgid_plural "{0} apps, {1} key aliases" msgstr[0] "" msgstr[1] "" #: ../fdroidserver/update.py #, python-brace-format msgid "{apkfilename} ({appid}) has no metadata!" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "{apkfilename} has multiple {name} files, looks like Master Key exploit!" msgstr "" #: ../fdroidserver/update.py #, fuzzy, python-brace-format msgid "{apkfilename}'s AndroidManifest.xml has a bad date: " msgstr "AndroidManifest.xml no tiene fecha" #: ../fdroidserver/update.py #, python-brace-format msgid "{appid} does not have a name! Using package name instead." msgstr "" #: ../fdroidserver/mirror.py #, python-brace-format msgid "{appid} is missing {name}" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vname #: ../fdroidserver/lint.py #, python-brace-format msgid "{appid}: Unknown extlib {path} in build '{versionName}'" msgstr "" #: ../fdroidserver/scanner.py #, python-brace-format msgid "{appid}: no builds specified, running on current source state" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "{field} not terminated in {name}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "{name} \"{path}\" does not exist! Correct it in config.py." msgstr "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "{path} does not exist! Create it by running:" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "{path} has bad file signature \"{pattern}\", possible Janus exploit!" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "{path} is zero size!" msgstr "" #: ../fdroidserver/mirror.py #, python-brace-format msgid "{url} does not end with \"fdroid\", check the URL path!" msgstr "" #: ../fdroidserver/build.py msgid "{} build failed" msgid_plural "{} builds failed" msgstr[0] "" msgstr[1] "" #: ../fdroidserver/build.py msgid "{} build succeeded" msgid_plural "{} builds succeeded" msgstr[0] "" msgstr[1] "" #, fuzzy #~ msgid "Add PGP signatures for packages in repo using GnuPG" #~ msgstr "Añadir las firmas gpg para los paquetes en el repositorio" #~ msgid "Add gpg signatures for packages in repo" #~ msgstr "Añadir las firmas gpg para los paquetes en el repositorio" #~ msgid "Clean update - don't uses caches, reprocess all apks" #~ msgstr "" #~ "Actualización limpia, no usa caché, reprocesa todas las aplicaciones APK" #~ msgid "app-id in the form APPID" #~ msgstr "APP-ID en el formato APPID" #~ msgid "app-id to check for updates" #~ msgstr "APP-ID para buscar actualizaciones" #~ msgid "app-id with optional versionCode in the form APPID[:VERCODE]" #~ msgstr "APP-ID con código de versión opcional en la forma APPID [: VERCODE]" #~ msgid "app-id with optional versioncode in the form APPID[:VERCODE]" #~ msgstr "APP-ID con código de versión opcional en la forma APPID [: VERCODE]" fdroidserver-1.0.9/locale/fr/0000775000175000017500000000000013324115531015771 5ustar hanshans00000000000000fdroidserver-1.0.9/locale/fr/LC_MESSAGES/0000775000175000017500000000000013324115531017556 5ustar hanshans00000000000000fdroidserver-1.0.9/locale/fr/LC_MESSAGES/fdroidserver.mo0000664000175000017500000013462313324115526022626 0ustar hanshans00000000000000Dl)m7$-+"+N9z^*HZj!}!"&'+1S"AD./ O^  E +!657)M7!w77&7"727 '838*H8's88J8B8?9Y9#o9979&9 :C*:In:!::N:9D;$~;!;;;<+<%F<l<<<<3< =$=@=0V=.=@== >*,>'W>>1>%> >>?70?1h?1?*?;?*3@#^@@@-@@@:A:PA7A&A-AB5B=RB,BBBBC/C KClCC*C(CC D$*DOD-gDPD DdElE7EEUE4/F:dF&FFFGG!8G-ZGG,G!G*G8H2RHH H,H H&IB9IB|I#I*I=J0LJ%}J.JJ%J*K7>K3vK5K<K.L)LL*vL-L#L9L*-MfXM/M?M$/N=TN,N-N8N6&O1]O(OPO= P!GP.iP!P5PP2 QT>U%OUIuU UUV+V@V#[VNV3V4W;7WsWW4WWW"XC=XX2XX(X. Y2:Y mY-{YY<Y!YZZ%ibiiij/j?j0Xj"j&j'j+j,'k2Tk2kDkGk1Glsyl%lNm0bmmNmn!nF7n7~nAnSn0Lo:}o\o7pIMp7pp(p8q7Kq#q9q'q8 r[Br9r5r's,6sTcs9szs3mtrt2u,Gutu>u3u=vCv]v1xvUv#w6$w%[wOw1w%x)x)8x"bx/x2x4x$y;By'~y+yy(y!z7{v{9{${k{f_||-|:}O}Un}-}(}*~SF~!~H~"2(v[,/)N x7 %-!S&u..ˁ3,..[43Ȃd*u9!ڃ(F%Ml--8+d΅(#-+Q}>܆6;+g&x)Jɇ  *5'`JB,F#\7&щCI[!NJN91$k!Ћ#+%>d<z3ь8@U;@ҍ)*H's1% 17M11*;7P#-ϐ*:E:74-(Vs=,Β(AZ@m3,(Gp&(є-P hdKSUo4ŖS8N#(ԗ0-9g8~"*ژ82>q , ݙ&B%Bh//ۚ= 0I%z.ϛ%*7;@sBS.K)z*-ϝ#9!*[f/H$fE,џ-8,6e1(ΠP=H!.!ס5/2O(/ǢF>Xs*4'4IXh#@ϤBLS*˥ V+KwZZ(Jrs& *-2X'3NA6AxM&=@~$.I7GT(.2 C*Q|<!%*5`003$cXѮD3!;3]%NF(M-v'-̰17i#'Gұ.:%i!((ڲ =Rnff-R6%,ݴ *&H o5Ƶ?!>*(i2(ŶG469k7= 58V-B5 K&l SSH Public Key to be used as Deploy Key: {path} encoded for the DEBUG_KEYSTORE secret variable:"%s/" has no matching metadata file!"{path}" contains outdated {name} ({version})"{path}" contains recent {name} ({version})"{path}" exists but s3cmd is not installed!"{path}" is not an accepted format, convert to: {formats}%(option)s option requires %(number)d argument%(option)s option requires %(number)d arguments%(prog)s [options] url%(prog)s: error: %(message)s %d problems found%prog [options]%r is not callable%s is not an accepted build field%s option does not take a value'keypass' not found in config.py!'keystore' not found in config.py!'keystorepass' not found in config.py!'repo_keyalias' not found in config.py!'required' is an invalid argument for positionals'sdk_path' not set in 'config.py'!'{aapt}' is too old, fdroid requires build-tools-23.0.0 or newer!'{aapt}' is too old, fdroid requires build-tools-{version} or newer!'{apkfilename}' is already installed on {dev}.'{field}' will be in random order! Use () or [] brackets if order is important!'{path}' failed to execute!'{value}' is not a valid {field} in {appid}. Regex pattern: {pattern}...checkupdate failed for {appid} : {error}.__call__() not defined.fdroid.txt is not supported! Convert to .fdroid.yml or .fdroid.json./issues is missingA URL is required as an argument!Add PGP signatures using GnuPG for packages in repoAdd a new application from its source codeAdd a repo signing key to an unsigned repoAdd skeleton metadata files for APKs that are missing themAdding new repo for only {name}Alias of the repo signing key in the keystoreAllows a different revision (or git branch) to be specified for the initial importAlso mirror the full archive sectionAlso warn about formatting issues, like rewritemeta -lAndroid SDK '{path}' does not have '{dirname}' installed!Android SDK not found!Android SDK path '{path}' does not exist!Android SDK path '{path}' is not a directory!Android build-tools path '{path}' does not exist!AndroidManifest.xml has no dateApp is in '{repo}' but has a link to {url}Appending .git is not necessaryArchiving {apkfilename} with invalid signature!Base URL to mirror, can include the index signing key using the query string: ?fingerprint=Branch '{branch}' used as commit in build '{versionName}'Branch '{branch}' used as commit in srclib '{srclib}'Build a package from sourceBuild all applications availableBuild generated by `fdroid import` - remove disable line once readyBuild only the latest version of each packageBuild should have comma-separated versionName and versionCode, not "{value}", in {linedesc}Built repo based in "%s" with this config:Can't build due to {} error while scanningCan't build due to {} errors while scanningCannot find a packageName for {path}!Cannot find an appid for {path}!Cannot read "{path}"!Cannot resolve app id {appid}Cannot use --list and --to at the same timeCannot write "{path}", not an accepted format, use: {formats}Categories are not setCategory '%s' is not validCheck for updates to applicationsChecking archiving for {appid} - apks:{integer}, keepversions:{keep}, archapks:{arch}Clean after all scans have finishedClean before the scans start and rebuild the containerClean up all containers and then exitClean update - don't uses caches, reprocess all APKsComma separated list of categories.Command '%s' not recognised. Commit changesCould not find '{command}' on your systemCould not find {path} to remove itCould not open apk file for analysisCouldn't find latest version codeCouldn't find latest version nameCouldn't find package IDCowardily refusing to overwrite existing signing key setup!Create a repo signing key in a keystoreCreate skeleton metadata files that are missingCreated new container "{name}"Creating "{path}" for configuring s3cmd.Creating log directoryCreating new S3 bucket: {url}Creating output directoryCreating signed index with this key (SHA256):Creating temporary directoryCreating unsigned index in preparation for signingDEBUG_KEYSTORE is not set or the value is incompleteDelete APKs and/or OBBs without metadata from the repoDeleting unknown file: {path}Description '%s' is just the app's summaryDescription has a duplicate lineDescription has a list (%s) but it isn't bulleted (*) nor numbered (#)Description of length {length} is over the {limit} char limitDo not include "{path}" in URL!Do not prompt for Android SDK path, just failDon't create a source tarball, useful when testing a buildDon't do anything logs-relatedDon't refresh the repository, useful when testing a build with no internet connectionDon't use rsync checksumsDownload complete mirrors of small reposDownload logs we don't haveDownloading the repository already failed once, not trying again.Downloading {url} failed. {error}Duplicate build recipe found for versionCode {versionCode} in {linedesc}Duplicate link in '{field}': {url}Dynamically scan APKs post buildERROR: this command should never be used to mirror f-droid.org! A full mirror of f-droid.org requires more than 200GB.ERROR: unsupported CI type, patches welcome!Empty build flag at {linedesc}Enter the path to the Android SDK (%s) here: > Error while attempting to publish log: %sError while getting repo addressExtract signatures from APKsFailed fetching signatures for '{apkfilename}': {error}Failed reading {path}: {error}Failed resizing {path}: {error}Failed to align applicationFailed to create S3 bucket: {url}Failed to get APK manifest informationFailed to get apk information, deleting {path}Failed to get apk information, skipping {path}Failed to install '{apkfilename}' on {dev}: {error}Failed to sign applicationFetched buildserverid from VM: {buildserverid}Fetched signatures for '{apkfilename}' -> '{sigdir}'FinishedFlattr donation methods belong in the FlattrID flagForbidden HTML tagsForce build of disabled apps, and carries on regardless of scan problems. Only allowed in test mode.Force halting build after {0} sec timeout!Found "{path}" graphic without metadata for app "{name}"!Found invalid appids in argumentsFound invalid versionCodes for some appsFound multiple metadata files for {appid}Found multiple signing certificates for repository.Found multiple signing certificates in {path}Found no signing certificates for repository.Found non-file at %sGenerated skeleton metadata for {appid}Git checkout of '%s' failedGit clean failedGit fetch failedGit remote set-head failedGit reset failedGit submodule sync failedGit submodule update failedHTTPS must be used with Subversion URLs!Ignoring package without metadata: Ignoring stale cache data for {apkfilename}Ignoring {ext} file at '{path}'Include APKs that are signed with disabled algorithms like MD5Initialising submodulesInstall all signed applications availableInstall built packages on devicesInstalling %s...Installing '{apkfilename}' on {dev}...Interact with the repo HTTP serverInteractively ask about things that need updating.Invalid APKInvalid boolean '%s'Invalid build flag at {line} in {linedesc}Invalid build format: {value} in {name}Invalid bulleted listInvalid license tag "%s"! Use only tags from https://spdx.org/license-listInvalid link - use [http://foo.bar Link title] or [http://foo.bar]Invalid metadata in %s:%dInvalid metadata in: Invalid name for published file: %sInvalid package name {0}Invalid versionCode: "{versionCode}" is not an integer!JAR signature failed to verify: {path}JAR signature verified: {path}Java JDK not found! Install in standard location or set java_paths!Java jarsigner not found! Install in standard location or set java_paths!Javascript in HTML src attributesKeystore for signing key: Last used commit '{commit}' looks like a tag, but Update Check Mode is '{ucm}'Liberapay donation methods belong in the LiberapayID flagList files that would be reformattedMake the build stop on exceptionsMalformed repository mirrors.Malformed serverwebroot line:Missing output directoryName '%s' is just the auto name - remove itNo 'config.py' found, using defaults.No Android SDK found!No android or kivy project could be found. Specify --subdir?No attached devices foundNo commit specified for {versionName} in {linedesc}No fingerprint in URL.No git submodules availableNo information found.No need to specify that the app is Free SoftwareNo need to specify that the app is for AndroidNo option set! Edit your config.py to set at least one of these:No packages specifiedNo signed apk available for %sNo signed output directory - nothing to doNo signing certificates found in {path}No such package: %sNo such versionCode {versionCode} for app {appid}No unsigned directory - nothing to doNothing to doNothing to do for {appid}.Now set these in config.py:OBB file has newer versionCode({integer}) than any APK:OBB filename must start with "main." or "patch.":OBB's packagename does not match a supported APK:Old APK signature failed to verify: {path}Only PNG and JPEG are supported for graphics, found: {path}Only print differences with the Play StoreOnly process apps with auto-updatesOptionsOverall license of the project.Override path for repo APKs (default: ./repo)Parsing manifest at '{path}'Password required with usernamePath to main Android project subdirectory, if not in root.Path to main android project subdirectory, if not in root.Path to the Android SDK (sometimes set in ANDROID_HOME)Path to the git repo to use as the logPath to the keystore for the repo signing keyPrepare Drozer to run a scanPrepare drozer to run a scanPrint the secret variable to the terminal for easy copy/pasteProblem with description of {appid}: {error}Problem with xml at '{path}'Process auto-updatesProcessing {apkfilename}Processing {appid}Produce human-readable XML/JSON for index filesProduce human-readable index.xmlProject URL to import from.Punctuation should be avoidedPush the log to this git remote repositoryPushing binary transparency log to {url}Pushing to {url}Quickly start a new repositoryRead all the metadata files and exitReading '{config_file}'Reading minSdkVersion failed: "{apkfilename}"Reading packageName/versionCode/versionName failed, APK invalid: '{apkfilename}'Reading {apkfilename} from cacheRecalculate aggregate stats - use when changes have been made that would invalidate old cached data.Removing specified filesRename APK files that do not match package.name_123.apkReport on build data statusReset and create a brand new build server, even if the existing one appears to be ok.Resigning {apkfilename} with provided debug.keystoreResize all the icons exceeding the max pixel size and exitRestrict output to warnings and errorsRewrite all the metadata filesRewrite to a specific format: Rewriting '{appid}'Rewriting '{appid}' to '{path}'Run rewritemeta to fix formattingRunning first pass with MD5 checking disabledRunning wget in {path}Scan only the latest version of each packageScan the source code of a packageScanner found {count} problems in {appid}:Scanner found {count} problems in {appid}:{versionCode}:Scanner found {} problemScanner found {} problemsSet clock to that time using:Set open file limit to {integer}Set up an app build for a nightly build repoSetting open file limit failed: Setting {0} sec timeout for this buildSetup an emulator, install the APK on it and perform a Drozer scanSetup an emulator, install the apk on it and perform a drozer scanSign and place packages in the repoSign indexes created using update --nosignSkip scanning the source code for binaries and other problemsSkipping '{apkfilename}' with invalid signature!Skipping index generation for {appid}Skipping {apkfilename} with invalid signature!Skipping {appid}: disabledSkipping {appid}: no builds specifiedSpecify a local folder to sync the repo toSpecify an identity file to provide to SSH for rsyncingSpecify editor to use in interactive mode. Default Specify editor to use in interactive mode. Default %sSpecify editor to use in interactive mode. Default is {path}Specify that we're running on the build serverSpecify which debug keystore file to use.Spew out even more information than normalStriping mystery signature from {apkfilename}Summary '%s' is just the app's nameSummary of length {length} is over the {limit} char limitSystem clock is older than date in {path}!Test mode - put output in the tmp directory only, and always build, even if the output already exists.The OBB version code must come after "{name}.":The base URL for the repo to log (default: https://f-droid.org)The directory to write the mirror toThe only commands currently supported are 'init' and 'update'The repository's fingerprint does not match.The repository's index could not be verified.The root dir for local_copy_dir "{path}" does not exist!The the file to be included in the repo (path or glob)There is a keyalias collision - publishing haltedThis repo already has local metadata: %sTo use awsbucket, awssecretkey and awsaccesskeyid must also be set in config.py!UCM is set but it looks like checkupdates hasn't been run yetURL shorteners should not be usedURL title is just the URL, use brackets: [URL]URL {url} in Description: {error}Unexpected text on same line as {field} in {linedesc}Unknown exception found!Unknown file '{filename}' in build '{versionName}'Unknown metadata format: %sUnknown metadata format: {path}Unknown version of aapt, might cause problems: Unlinkified link - use [http://foo.bar Link title] or [http://foo.bar]Unnecessary leading spaceUnnecessary trailing spaceUnrecognised app field: Unrecognised field '{field}' in {linedesc}Unsupported file type "{extension}" for repo graphicUnsupported graphics file found: {path}Unsupported metadata format, use: --to [{supported}]Unterminated ]Unterminated ]]Unterminated build in {name}Unterminated continuation in {name}Unused extlib at %sUnused file at %sUpdate Check Name is set to the known app id - it can be removedUpdate repo information for new packagesUpdate the binary transparency log for a URLUpdate the stats of the repoUpdate the wikiUsageUsage: %s Use /HEAD instead of /master to point at a file in the default branchUse `fdroid update -c` to create it.Use build serverUse date from APK instead of current time for newly added APKsUse date from apk instead of current time for newly added apksUsing "{path}" for configuring s3cmd.Using Java's jarsigner, not recommended for verifying APKs! Use apksignerUsing existing keystore "{path}"Using s3cmd to sync with: {url}Valid commands are:Verify the integrity of downloaded packagesVerifying index signature:Warn about possible metadata errorsWhen configured for signed indexes, create only unsigned indexes at this stageX.509 'Distiguished Name' used when generating keysX.509 'Distinguished Name' used when generating keysYou can use ANDROID_HOME to set the path to your SDK, i.e.:adding IdentityFile to {path}adding to {name}: {path}ambiguous option: %(option)s could match %(matches)sambiguous option: %s (%s?)applicationId in the form APPIDapplicationId to check for updatesapplicationId with optional versionCode in the form APPID[:VERCODE]argument "-" with mode %rattempting bare ssh connection to test deploy key:can't open '%s': %scannot have multiple subparser argumentscannot merge actions - two groups are named %rcannot publish update, did you set the deploy key?cloning {url}command to execute, either 'init' or 'update'complexconflicting option string: %sconflicting option strings: %scopying {apkfilename} into {path}created {path}deleting: repo/{apkfilename}dest= is required for options like %rexpected %s argumentexpected %s argumentsexpected at least one argumentexpected at most one argumentexpected one argumentfdroid [-h|--help|--version] []fdroid [] [-h|--help|--version|]floating-pointforce errors to be warnings, or ignoreforce metadata errors (default) to be warnings, or to be ignored.git svn clone failedignored explicit argument %rindex-v1 must have a signature, use `fdroid signindex` to create it!integerinvalid %(type)s value: %(value)rinvalid choice: %(value)r (choose from %(choices)s)invalid conflict_resolution value: %rinvalid option string %(option)r: must start with a character %(prefix_chars)rlocal_copy_dir does not end with "fdroid", perhaps you meant: "{path}"local_copy_dir must be an absolute path!local_copy_dir must be directory, not a file!mirror '%s' does not end with 'fdroid'!mutually exclusive arguments must be optionalno "icon" in {appid}no APK suppliedno such option: %sno version info found!not allowed with argument %sone of the arguments %s is requiredonly accepts strings, lists, and tuplesoption %s: If you really want to install all the signed apps, use --alloption %s: invalid %s value: %roption %s: invalid choice: %r (choose from %s)option -%s not recognizedoption -%s requires argumentoption --%s must not have an argumentoption --%s not a unique prefixoption --%s not recognizedoption --%s requires argumentoptional argumentsoverwriting existing {path}positional argumentsrefuse downloading via insecure HTTP connection (use HTTPS or specify --no-https-check): {apkfilename}refuse downloading via insecure http connection (use https or specify --no-https-check): {apkfilename}s3cmd sync indexes {path} to {url} and deleteshow program's version number and exitshow this help message and exitsigned APK, either a file-path or HTTPS URL.skipping source tarball: {path}srclibs missing name and/or @the following arguments are required: %sunexpected option string: %sunknown parser %(parser_name)r (choices: %(choices)s)unrecognized arguments: %sunsafe permissions on '{config_file}' (should be 0600)!usage: usage: fdroid [-h|--help|--version] []using Apache libcloud to sync with {url}{0} app, {1} key aliases{0} apps, {1} key aliases{apkfilename} ({appid}) has no metadata!{apkfilename} has multiple {name} files, looks like Master Key exploit!{apkfilename}'s AndroidManifest.xml has a bad date: {appid} does not have a name! Using package name instead.{appid} is missing {name}{appid}: Unknown extlib {path} in build '{versionName}'{appid}: no builds specified, running on current source state{field} not terminated in {name}{name} "{path}" does not exist! Correct it in config.py.{path} does not exist! Create it by running:{path} has bad file signature "{pattern}", possible Janus exploit!{path} is zero size!{url} does not end with "fdroid", check the URL path!{} build failed{} builds failed{} build succeeded{} builds succeededProject-Id-Version: fdroidserver 0.9 Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues POT-Creation-Date: 2018-02-13 09:01+0100 PO-Revision-Date: 2018-05-21 15:54+0000 Last-Translator: Ldm Public Language-Team: French Plural-Forms: nplurals=2; plural=n > 1 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Generated-By: Babel 1.3 Clé Publique SSH à utiliser comme Clé de Déploiement : {path} encodé pour la variable secrète DEBUG_KEYSTORE :"%s/" n'a pas de fichier de métadonnées correspondant !"{path}" contient {name} obsolète ({version})"{path}" contient le récent {name} ({version})"{path}" existe mais s3cmd n'est pas installé !"{path}" n'est pas un format autorisé, convertir en : {formats}L'option %(option)s requiert %(number)d argumentL'option %(option)s requiert %(number)d arguments%(prog)s [options] url%(prog)s: erreur: %(message)s %d problèmes trouvés%prog [options]%r n’est pas appelable%s n'est pas un champ de construction acceptablel'option %s ne prend pas de valeur'keypass' non trouvé dans config.py !'keystore' non trouvé dans config.py !'keystorepass' non trouvé dans config.py !'repo_keyalias' non trouvé dans config.py !'required' est invalide comme argument positionnel'sdk_path' n'est pas configuré dans 'config.py' !'{aapt}' est obsolète, fdroid requiert build-tools-23.0.0 ou plus !'{aapt}' est obsolète, fdroid requiert build-tools-{version} ou plus !'{apkfilename}' est déjà installé sur '{dev}'.'{field}' sera ordonné aléatoirement ! Utilisez des parenthèses () ou des crochets [] si l'ordre est important !'{path}' n'a pas pu être exécuté !'{value}' n'est pas un(e) {field} valide dans {appid}. Motif regex : {pattern}...checkupdate a échoué pour {appid} : {error}.__call__() n'est pas défini.fdroid.txt n'est pas supporté ! Convertissez en .fdroid.yml ou .fdroid.json./issues est manquantUne URL est requise en argument !Ajouter des signatures PGP avec GnuPG pour les paquets dans le dépôtAjouter une nouvelle application depuis son code sourceAjout d'une clé de signature de dépôt à un dépôt non signéCréer les métadonnées de base manquantes pour les APKs qui n'en sont pas pourvusAjout d'un nouveau dépôt pour seulement {name}Alias de la clé de signature du dépôt dans le trousseauAutoriser une version différente (ou branche git) a être spécifiée pour l'import initialFaire aussi un miroir de la section d'archive complèteAlerter aussi à propos des problèmes de formatage, comme rewritemeta -lLe SDK Android '{path}' n'a pas '{dirname}' installé !SDK Android introuvable !Le SDK Android '{path}' n’existe pas !Le chemin du SDK Android '{path}' n'est pas un dossier !Le chemin d'Android build-tools '{path}' n'existe pas !AndroidManifest.xml n'a pas de dateL'application est dans '{repo}' mais a un lien vers {url}Il n'est pas nécessaire d'ajouter .gitArchivage de {apkfilename} avec une signature invalide !Base URL to mirror, can include the index signing key using the query string: ?fingerprint=Branch '{branch}' used as commit in build '{versionName}'Branch '{branch}' used as commit in srclib '{srclib}'Construire un paquet depuis les sourcesCompiler toutes les applications disponiblesBuild généré par `fdroid import` - supprimer la ligne désactivée une fois prêtCompiler uniquement la dernière version de chaque paquetLe build devrait avoir un versionName et un versionCode séparés par des virgules, et non pas "{value}", dans {linedesc}Dépôt du build basé sur "%s" avec cette config :Build impossible à cause de l'erreur lors de l'analyseBuild impossible à cause des {} erreurs lors de l'analyseImpossible de trouver un packageName pour {path} !Impossible de trouver un appid pour {path} !Impossible de lire "{path}" !Impossible de résoudre l'identifiant de l'application {appid}Impossible d'utiliser --list et --to en même tempsCannot write "{path}", not an accepted format, use: {formats}Catégories non définiesCategory '%s' is not validVérifier les mises à jour pour les applicationsChecking archiving for {appid} - apks:{integer}, keepversions:{keep}, archapks:{arch}Clean after all scans have finishedClean before the scans start and rebuild the containerVider tous les conteneurs puis sortirMise à jour propre - n'utilise pas les caches, traite à nouveau tous les APKsListe de catégories séparées par des virgules.La commande '%s' n'est pas reconnue. Commit changesCould not find '{command}' on your systemCould not find {path} to remove itImpossible d'ouvrir le fichier apk pour analyseImpossible de trouver la dernière version du codeImpossible de trouver le nom de la dernière versionImpossible de trouver l'ID du paquetCowardily refusing to overwrite existing signing key setup!Create a repo signing key in a keystoreCréer les métadonnées de base manquantesCreated new container "{name}"Creating "{path}" for configuring s3cmd.Création du répertoire des logsCreating new S3 bucket: {url}Création du répertoire de sortieCreating signed index with this key (SHA256):Création du répertoire temporaireCreating unsigned index in preparation for signingDEBUG_KEYSTORE is not set or the value is incompleteSupprimer les APK et/ou OBB sans métadonnées dans le dépôtDeleting unknown file: {path}Description de '%s' n'est qu'un résumé de l'applicationLigne dupliquée dans la descriptionLa description contient une liste (%s) mais ce n'est ni une liste à puces (*) ni une liste numérotée (#)La longueur de la description {length} dépasser la limite du nombre de caractères autorisés {limit}Do not include "{path}" in URL!Do not prompt for Android SDK path, just failDon't create a source tarball, useful when testing a buildDon't do anything logs-relatedDon't refresh the repository, useful when testing a build with no internet connectionNe pas utiliser les sommes de contrôle rsyncDownload complete mirrors of small reposTélécharger les journaux que n'avons pasLe téléchargement du référentiel a déjà échoué une fois, ne pas réessayer.Downloading {url} failed. {error}Duplicate build recipe found for versionCode {versionCode} in {linedesc}Duplicate link in '{field}': {url}Analyser dynamiquement les APKs après compilationERROR: this command should never be used to mirror f-droid.org! A full mirror of f-droid.org requires more than 200GB.ERROR: unsupported CI type, patches welcome!Empty build flag at {linedesc}Enter the path to the Android SDK (%s) here: > Error while attempting to publish log: %sError while getting repo addressExtract signatures from APKsFailed fetching signatures for '{apkfilename}': {error}Failed reading {path}: {error}Failed resizing {path}: {error}Impossible d'aligner les applicationsFailed to create S3 bucket: {url}Failed to get APK manifest informationFailed to get apk information, deleting {path}Failed to get apk information, skipping {path}Failed to install '{apkfilename}' on {dev}: {error}Erreur lors de la signature de l'applicationFetched buildserverid from VM: {buildserverid}Fetched signatures for '{apkfilename}' -> '{sigdir}'TerminéFlattr donation methods belong in the FlattrID flagForbidden HTML tagsForce build of disabled apps, and carries on regardless of scan problems. Only allowed in test mode.Force halting build after {0} sec timeout!Found "{path}" graphic without metadata for app "{name}"!Found invalid appids in argumentsFound invalid versionCodes for some appsDe multiples fichiers de métadonnées ont été trouvés pour {appid}Plusieurs certificats de signature ont étés trouvés pour le référentiel.Found multiple signing certificates in {path}Found no signing certificates for repository.Found non-file at %sCréer les métadonnées de base manquantes pour {appid}Git checkout of '%s' failedGit clean failedGit fetch failedGit remote set-head failedGit reset failedGit submodule sync failedGit submodule update failedHTTPS must be used with Subversion URLs!Ignoring package without metadata: Ignoring stale cache data for {apkfilename}Ignoring {ext} file at '{path}'Include APKs that are signed with disabled algorithms like MD5Initialising submodulesInstaller toutes les applications signées disponiblesInstaller les paquets compilés sur le(s) périphérique(s)Installing %s...Installing '{apkfilename}' on {dev}...Interagir avec le serveur HTTP du dépôtDemander de manière interactive les choses nécessitant une mise à jour.Invalid APKInvalid boolean '%s'Invalid build flag at {line} in {linedesc}Invalid build format: {value} in {name}Invalid bulleted listInvalid license tag "%s"! Use only tags from https://spdx.org/license-listInvalid link - use [http://foo.bar Link title] or [http://foo.bar]Invalid metadata in %s:%dInvalid metadata in: Invalid name for published file: %sInvalid package name {0}Invalid versionCode: "{versionCode}" is not an integer!JAR signature failed to verify: {path}JAR signature verified: {path}Java JDK not found! Install in standard location or set java_paths!Java jarsigner not found! Install in standard location or set java_paths!Javascript in HTML src attributesKeystore for signing key: Last used commit '{commit}' looks like a tag, but Update Check Mode is '{ucm}'Liberapay donation methods belong in the LiberapayID flagList files that would be reformattedMake the build stop on exceptionsMalformed repository mirrors.Malformed serverwebroot line:Répertoire de destination manquantName '%s' is just the auto name - remove itNo 'config.py' found, using defaults.No Android SDK found!No android or kivy project could be found. Specify --subdir?No attached devices foundNo commit specified for {versionName} in {linedesc}No fingerprint in URL.No git submodules availableAucune information trouvée.Pas besoin de spécifier que l'application est un logiciel librePas besoin de spécifier que l'application est pour AndroidNo option set! Edit your config.py to set at least one of these:No packages specifiedNo signed apk available for %sNo signed output directory - nothing to doNo signing certificates found in {path}No such package: %sNo such versionCode {versionCode} for app {appid}No unsigned directory - nothing to doRien à faireRien à faire pour {appid}.Now set these in config.py:OBB file has newer versionCode({integer}) than any APK:OBB filename must start with "main." or "patch.":OBB's packagename does not match a supported APK:Old APK signature failed to verify: {path}Only PNG and JPEG are supported for graphics, found: {path}Afficher uniquement les différences avec le Play StoreOnly process apps with auto-updatesOptionsLicence globale du projet.Override path for repo APKs (default: ./repo)Parsing manifest at '{path}'Mot de passe requis avec nom d'utilisateurPath to main Android project subdirectory, if not in root.Path to main android project subdirectory, if not in root.Path to the Android SDK (sometimes set in ANDROID_HOME)Chemin vers un dépôt git à utiliser comme journalPath to the keystore for the repo signing keyPrepare Drozer to run a scanPrepare drozer to run a scanPrint the secret variable to the terminal for easy copy/pasteProblem with description of {appid}: {error}Problem with xml at '{path}'Réaliser les mises à jour automatiquesProcessing {apkfilename}Processing {appid}Produire des fichiers d'index XML ou JSON lisibles par un humainProduire un fichier index.xml lisible par un humainURL du projet à importerPunctuation should be avoidedEnvoyer les logs dans ce dépôt git distantPushing binary transparency log to {url}Pushing to {url}Démarrage rapide d'un nouveau dépôtLire toutes les métadonnées et quitterReading '{config_file}'Reading minSdkVersion failed: "{apkfilename}"Reading packageName/versionCode/versionName failed, APK invalid: '{apkfilename}'Reading {apkfilename} from cacheRecalculate aggregate stats - use when changes have been made that would invalidate old cached data.Removing specified filesRenomme les fichiers APK dont le nom ne ressemble pas à nom.paquet_123.apkReport on build data statusReset and create a brand new build server, even if the existing one appears to be ok.Resigning {apkfilename} with provided debug.keystoreRedimensionner toutes les icônes excédant la taille maximale en pixels et quitterRestreindre les résultats aux avertissements et erreursRéécrire toutes les métadonnéesRéécrire dans un format spécifique : Rewriting '{appid}'Rewriting '{appid}' to '{path}'Exécuter rewritemeta pour corriger le formatageRunning first pass with MD5 checking disabledRunning wget in {path}Analyser seulement la dernière version de chaque paquetScanner le code source d'un paquetScanner found {count} problems in {appid}:Scanner found {count} problems in {appid}:{versionCode}:Scanner found {} problemScanner found {} problemsSet clock to that time using:Set open file limit to {integer}Set up an app build for a nightly build repoSetting open file limit failed: Setting {0} sec timeout for this buildSetup an emulator, install the APK on it and perform a Drozer scanSetup an emulator, install the apk on it and perform a drozer scanSigner et déplacer les paquets dans le dépôtSigner les indexes créés avec update --nosignSkip scanning the source code for binaries and other problemsSkipping '{apkfilename}' with invalid signature!Skipping index generation for {appid}Skipping {apkfilename} with invalid signature!Skipping {appid}: disabledSkipping {appid}: no builds specifiedSpecify a local folder to sync the repo toSpecify an identity file to provide to SSH for rsyncingDéfinir l'éditeur à utiliser en mode interactif. Par défaut Définir l'éditeur à utiliser en mode interactif. Par défaut %sDéfinir l'éditeur à utiliser en mode interactif. {path} est utilisé par défautSpecify that we're running on the build serverSpecify which debug keystore file to use.Spew out even more information than normalStriping mystery signature from {apkfilename}Summary '%s' is just the app's nameSummary of length {length} is over the {limit} char limitSystem clock is older than date in {path}!Test mode - put output in the tmp directory only, and always build, even if the output already exists.The OBB version code must come after "{name}.":URL de base du dépôt à journaliser (par défaut: https://f-droid.org)The directory to write the mirror toLes seules commandes disponibles actuellement sont 'init' et 'update'The repository's fingerprint does not match.The repository's index could not be verified.The root dir for local_copy_dir "{path}" does not exist!The the file to be included in the repo (path or glob)There is a keyalias collision - publishing haltedThis repo already has local metadata: %sTo use awsbucket, awssecretkey and awsaccesskeyid must also be set in config.py!UCM is set but it looks like checkupdates hasn't been run yetURL shorteners should not be usedURL title is just the URL, use brackets: [URL]URL {url} in Description: {error}Unexpected text on same line as {field} in {linedesc}Exception inconnue détectée !Unknown file '{filename}' in build '{versionName}'Unknown metadata format: %sFormat de métadonnée inconnu : {path}Unknown version of aapt, might cause problems: Unlinkified link - use [http://foo.bar Link title] or [http://foo.bar]Unnecessary leading spaceUnnecessary trailing spaceUnrecognised app field: Unrecognised field '{field}' in {linedesc}Unsupported file type "{extension}" for repo graphicUnsupported graphics file found: {path}Unsupported metadata format, use: --to [{supported}]Unterminated ]Unterminated ]]Unterminated build in {name}Unterminated continuation in {name}Unused extlib at %sUnused file at %sUpdate Check Name is set to the known app id - it can be removedMettre à jour les données des dépôts pour les nouveaux paquetsMettre à jour le rapport de transparence des fichiers binaires pour une URLMettre à jour les statistiques du dépôtMettre à jour le wikiUsageUsage : %s Utiliser /HEAD plutôt que /master pour pointer un fichier dans la branche par défautUtiliser 'fdroid update -c' pour le créer.Utiliser le serveur de buildUtiliser la date de l'APK plutôt que la date courante pour les APKs nouvellement ajoutésUtiliser la date de l'APK plutôt que la date courante pour les APKs nouvellement ajoutésUtiliser "{path}" pour configurer s3cmd.L'utilisation de l'utilitaire jarsigner de Java n'est pas recommandé pour vérifier les APKs ! Utiliser apksignerUtilise le trousseau existant "{path}"Using s3cmd to sync with: {url}Les commandes valides sont les suivantes :Vérifier l'intégrité des paquets téléchargésVérification de la signature d'index :Avertir de possibles erreurs dans les métadonnéesWhen configured for signed indexes, create only unsigned indexes at this stageX.509 'Nom distingué' utilisé lors de la génération des clésX.509 'Nom distingué' utilisé lors de la génération des clésVous pouvez utiliser ANDROID_HOME pour définir le chemin de votre SDK, ex. :ajoute IdentityFile à {path}ajoute à {name} : {path}option ambiguë : %(option)s peut correspondre à %(matches)soption ambiguë : %s (%s?)applicationId sous la forme de APPIDapplicationId pour vérifier les mises à jourapplicationId avec le versionCode optionnel sous la forme APPID[:VERCODE]argument "-" avec le mode %rtentative de connexion ssh simple pour tester la clé de déploiement :Impossible d'ouvrir %s : %scannot have multiple subparser argumentscannot merge actions - two groups are named %rcannot publish update, did you set the deploy key?cloning {url}Commande à exécuter : 'init' ou 'update'complexconflicting option string: %sconflicting option strings: %scopying {apkfilename} into {path}created {path}deleting: repo/{apkfilename}dest= is required for options like %rexpected %s argumentexpected %s argumentsexpected at least one argumentexpected at most one argumentexpected one argumentfdroid [-h|--help|--version] []fdroid [] [-h|--help|--version|]floating-pointforcer les erreurs en avertissement, ou les ignorerforcer les erreurs (par défaut) sur les métadonnées à être des avertissements, ou les ignorer.git svn clone failedignored explicit argument %rindex-v1 must have a signature, use `fdroid signindex` to create it!integerinvalid %(type)s value: %(value)rinvalid choice: %(value)r (choose from %(choices)s)invalid conflict_resolution value: %rinvalid option string %(option)r: must start with a character %(prefix_chars)rlocal_copy_dir does not end with "fdroid", perhaps you meant: "{path}"local_copy_dir must be an absolute path!local_copy_dir must be directory, not a file!mirror '%s' does not end with 'fdroid'!mutually exclusive arguments must be optionalno "icon" in {appid}no APK suppliedoption inexistante : %saucun information de version n'a été trouvée !not allowed with argument %sone of the arguments %s is requiredonly accepts strings, lists, and tuplesoption %s: If you really want to install all the signed apps, use --alloption %s: invalid %s value: %roption %s: invalid choice: %r (choose from %s)La commande '%s 1' n'est pas reconnueL'option -%s requiert un argumentL'option %s ne doit pas avoir d'argumentoption --%s n'est pas un préfixe uniqueOption --%s non reconnueL'option %s requiert un argumentarguments optionnelsoverwriting existing {path}arguments de positionrefuse downloading via insecure HTTP connection (use HTTPS or specify --no-https-check): {apkfilename}refuse downloading via insecure http connection (use https or specify --no-https-check): {apkfilename}s3cmd sync indexes {path} to {url} and deleteafficher le numéro de version du programme et quitterafficher ce message d'aide et quittersigned APK, either a file-path or HTTPS URL.skipping source tarball: {path}srclibs missing name and/or @les arguments suivants sont requis %schaîne d'option inattendue : %sunknown parser %(parser_name)r (choices: %(choices)s)arguments non reconnu : %spermissions dangereuses sur '{config_file}' (doit être 0600) !usage : utilisation : fdroid [-h|--help|--version] []using Apache libcloud to sync with {url}{0} app, {1} key aliases{0} apps, {1} key aliases{apkfilename} ({appid}) has no metadata!{apkfilename} has multiple {name} files, looks like Master Key exploit!{apkfilename}'s AndroidManifest.xml has a bad date: {appid} does not have a name! Using package name instead.{appid} is missing {name}{appid}: Unknown extlib {path} in build '{versionName}'{appid}: no builds specified, running on current source state{field} not terminated in {name}{name} "{path}" does not exist! Correct it in config.py.{path} does not exist! Create it by running:{path} has bad file signature "{pattern}", possible Janus exploit!{path} is zero size!{url} does not end with "fdroid", check the URL path!{} build failed{} builds failed{} build succeeded{} builds succeededfdroidserver-1.0.9/locale/fr/LC_MESSAGES/fdroidserver.po0000664000175000017500000016537713322065577022653 0ustar hanshans00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Free Software Foundation, Inc. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: fdroidserver 0.9\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" "POT-Creation-Date: 2018-02-13 09:01+0100\n" "PO-Revision-Date: 2018-05-21 15:54+0000\n" "Last-Translator: Ldm Public \n" "Language-Team: French \n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" "X-Generator: Weblate 3.0-dev\n" #: ../fdroidserver/nightly.py msgid "" "\n" "SSH Public Key to be used as Deploy Key:" msgstr "" "\n" "Clé Publique SSH à utiliser comme Clé de Déploiement :" #: ../fdroidserver/nightly.py #, python-brace-format msgid "" "\n" "{path} encoded for the DEBUG_KEYSTORE secret variable:" msgstr "" "\n" "{path} encodé pour la variable secrète DEBUG_KEYSTORE :" #: ../fdroidserver/lint.py #, python-format msgid "\"%s/\" has no matching metadata file!" msgstr "\"%s/\" n'a pas de fichier de métadonnées correspondant !" #: ../fdroidserver/update.py #, python-brace-format msgid "\"{path}\" contains outdated {name} ({version})" msgstr "\"{path}\" contient {name} obsolète ({version})" #: ../fdroidserver/update.py #, python-brace-format msgid "\"{path}\" contains recent {name} ({version})" msgstr "\"{path}\" contient le récent {name} ({version})" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "\"{path}\" exists but s3cmd is not installed!" msgstr "\"{path}\" existe mais s3cmd n'est pas installé !" #: ../fdroidserver/metadata.py #, python-brace-format msgid "\"{path}\" is not an accepted format, convert to: {formats}" msgstr "\"{path}\" n'est pas un format autorisé, convertir en : {formats}" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "%(option)s option requires %(number)d argument" msgid_plural "%(option)s option requires %(number)d arguments" msgstr[0] "L'option %(option)s requiert %(number)d argument" msgstr[1] "L'option %(option)s requiert %(number)d arguments" #: ../fdroidserver/mirror.py #, python-format msgid "%(prog)s [options] url" msgstr "%(prog)s [options] url" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "%(prog)s: error: %(message)s\n" msgstr "%(prog)s: erreur: %(message)s\n" #: ../fdroidserver/scanner.py #, python-format msgid "%d problems found" msgstr "%d problèmes trouvés" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "%prog [options]" msgstr "%prog [options]" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "%r is not callable" msgstr "%r n’est pas appelable" #: ../fdroidserver/lint.py #, python-format msgid "%s is not an accepted build field" msgstr "%s n'est pas un champ de construction acceptable" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "%s option does not take a value" msgstr "l'option %s ne prend pas de valeur" #: ../fdroidserver/index.py ../fdroidserver/common.py msgid "'keypass' not found in config.py!" msgstr "'keypass' non trouvé dans config.py !" #: ../fdroidserver/index.py ../fdroidserver/common.py msgid "'keystore' not found in config.py!" msgstr "'keystore' non trouvé dans config.py !" #: ../fdroidserver/index.py ../fdroidserver/common.py msgid "'keystorepass' not found in config.py!" msgstr "'keystorepass' non trouvé dans config.py !" #: ../fdroidserver/index.py ../fdroidserver/common.py msgid "'repo_keyalias' not found in config.py!" msgstr "'repo_keyalias' non trouvé dans config.py !" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "'required' is an invalid argument for positionals" msgstr "'required' est invalide comme argument positionnel" #: ../fdroidserver/common.py msgid "'sdk_path' not set in 'config.py'!" msgstr "'sdk_path' n'est pas configuré dans 'config.py' !" #. Translators: "build-tools" is the file name of a package from #. Google, it is part of the Android SDK. So it probably shouldn't be #. translated or transliterated. #: ../fdroidserver/common.py #, python-brace-format msgid "'{aapt}' is too old, fdroid requires build-tools-23.0.0 or newer!" msgstr "'{aapt}' est obsolète, fdroid requiert build-tools-23.0.0 ou plus !" #: ../fdroidserver/common.py #, python-brace-format msgid "'{aapt}' is too old, fdroid requires build-tools-{version} or newer!" msgstr "'{aapt}' est obsolète, fdroid requiert build-tools-{version} ou plus !" #: ../fdroidserver/install.py #, python-brace-format msgid "'{apkfilename}' is already installed on {dev}." msgstr "'{apkfilename}' est déjà installé sur '{dev}'." #: ../fdroidserver/common.py #, python-brace-format msgid "" "'{field}' will be in random order! Use () or [] brackets if order is " "important!" msgstr "" "'{field}' sera ordonné aléatoirement ! Utilisez des parenthèses () ou des " "crochets [] si l'ordre est important !" #: ../fdroidserver/common.py #, python-brace-format msgid "'{path}' failed to execute!" msgstr "'{path}' n'a pas pu être exécuté !" #: ../fdroidserver/metadata.py #, python-brace-format msgid "'{value}' is not a valid {field} in {appid}. Regex pattern: {pattern}" msgstr "" "'{value}' n'est pas un(e) {field} valide dans {appid}. Motif regex : " "{pattern}" #: ../fdroidserver/checkupdates.py #, python-brace-format msgid "...checkupdate failed for {appid} : {error}" msgstr "...checkupdate a échoué pour {appid} : {error}" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid ".__call__() not defined" msgstr ".__call__() n'est pas défini" #: ../fdroidserver/metadata.py msgid ".fdroid.txt is not supported! Convert to .fdroid.yml or .fdroid.json." msgstr "" ".fdroid.txt n'est pas supporté ! Convertissez en .fdroid.yml ou .fdroid.json." #: ../fdroidserver/lint.py msgid "/issues is missing" msgstr "/issues est manquant" #: ../fdroidserver/mirror.py msgid "A URL is required as an argument!" msgstr "Une URL est requise en argument !" #: ../fdroid msgid "Add PGP signatures using GnuPG for packages in repo" msgstr "Ajouter des signatures PGP avec GnuPG pour les paquets dans le dépôt" #: ../fdroid msgid "Add a new application from its source code" msgstr "Ajouter une nouvelle application depuis son code source" #: ../fdroidserver/update.py msgid "Add a repo signing key to an unsigned repo" msgstr "Ajout d'une clé de signature de dépôt à un dépôt non signé" #: ../fdroidserver/update.py msgid "Add skeleton metadata files for APKs that are missing them" msgstr "" "Créer les métadonnées de base manquantes pour les APKs qui n'en sont pas " "pourvus" #: ../fdroidserver/update.py #, python-brace-format msgid "Adding new repo for only {name}" msgstr "Ajout d'un nouveau dépôt pour seulement {name}" #: ../fdroidserver/init.py msgid "Alias of the repo signing key in the keystore" msgstr "Alias de la clé de signature du dépôt dans le trousseau" #: ../fdroidserver/import.py msgid "" "Allows a different revision (or git branch) to be specified for the initial " "import" msgstr "" "Autoriser une version différente (ou branche git) a être spécifiée pour " "l'import initial" #: ../fdroidserver/mirror.py msgid "Also mirror the full archive section" msgstr "Faire aussi un miroir de la section d'archive complète" #: ../fdroidserver/lint.py msgid "Also warn about formatting issues, like rewritemeta -l" msgstr "" "Alerter aussi à propos des problèmes de formatage, comme rewritemeta -l" #: ../fdroidserver/common.py #, python-brace-format msgid "Android SDK '{path}' does not have '{dirname}' installed!" msgstr "Le SDK Android '{path}' n'a pas '{dirname}' installé !" #: ../fdroidserver/common.py msgid "Android SDK not found!" msgstr "SDK Android introuvable !" #: ../fdroidserver/common.py #, python-brace-format msgid "Android SDK path '{path}' does not exist!" msgstr "Le SDK Android '{path}' n’existe pas !" #: ../fdroidserver/common.py #, python-brace-format msgid "Android SDK path '{path}' is not a directory!" msgstr "Le chemin du SDK Android '{path}' n'est pas un dossier !" #. Translators: "build-tools" is the file name of a package from #. Google, it is part of the Android SDK. So it probably shouldn't be #. translated or transliterated. #: ../fdroidserver/common.py #, python-brace-format msgid "Android build-tools path '{path}' does not exist!" msgstr "Le chemin d'Android build-tools '{path}' n'existe pas !" #: ../fdroidserver/update.py msgid "AndroidManifest.xml has no date" msgstr "AndroidManifest.xml n'a pas de date" #: ../fdroidserver/lint.py #, python-brace-format msgid "App is in '{repo}' but has a link to {url}" msgstr "L'application est dans '{repo}' mais a un lien vers {url}" #: ../fdroidserver/lint.py msgid "Appending .git is not necessary" msgstr "Il n'est pas nécessaire d'ajouter .git" #: ../fdroidserver/update.py #, python-brace-format msgid "Archiving {apkfilename} with invalid signature!" msgstr "Archivage de {apkfilename} avec une signature invalide !" #: ../fdroidserver/mirror.py msgid "" "Base URL to mirror, can include the index signing key using the query " "string: ?fingerprint=" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vname #: ../fdroidserver/lint.py #, python-brace-format msgid "Branch '{branch}' used as commit in build '{versionName}'" msgstr "" #: ../fdroidserver/lint.py #, python-brace-format msgid "Branch '{branch}' used as commit in srclib '{srclib}'" msgstr "" #: ../fdroid msgid "Build a package from source" msgstr "Construire un paquet depuis les sources" #: ../fdroidserver/build.py msgid "Build all applications available" msgstr "Compiler toutes les applications disponibles" #: ../fdroidserver/lint.py msgid "Build generated by `fdroid import` - remove disable line once ready" msgstr "" "Build généré par `fdroid import` - supprimer la ligne désactivée une fois " "prêt" #: ../fdroidserver/build.py msgid "Build only the latest version of each package" msgstr "Compiler uniquement la dernière version de chaque paquet" #: ../fdroidserver/metadata.py #, python-brace-format msgid "" "Build should have comma-separated versionName and versionCode, not " "\"{value}\", in {linedesc}" msgstr "" "Le build devrait avoir un versionName et un versionCode séparés par des " "virgules, et non pas \"{value}\", dans {linedesc}" #: ../fdroidserver/init.py #, python-format msgid "Built repo based in \"%s\" with this config:" msgstr "Dépôt du build basé sur \"%s\" avec cette config :" #: ../fdroidserver/build.py msgid "Can't build due to {} error while scanning" msgid_plural "Can't build due to {} errors while scanning" msgstr[0] "Build impossible à cause de l'erreur lors de l'analyse" msgstr[1] "Build impossible à cause des {} erreurs lors de l'analyse" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Cannot find a packageName for {path}!" msgstr "Impossible de trouver un packageName pour {path} !" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Cannot find an appid for {path}!" msgstr "Impossible de trouver un appid pour {path} !" #: ../fdroidserver/vmtools.py #, python-brace-format msgid "Cannot read \"{path}\"!" msgstr "Impossible de lire \"{path}\" !" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Cannot resolve app id {appid}" msgstr "Impossible de résoudre l'identifiant de l'application {appid}" #: ../fdroidserver/rewritemeta.py msgid "Cannot use --list and --to at the same time" msgstr "Impossible d'utiliser --list et --to en même temps" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Cannot write \"{path}\", not an accepted format, use: {formats}" msgstr "" #: ../fdroidserver/lint.py msgid "Categories are not set" msgstr "Catégories non définies" #: ../fdroidserver/lint.py #, python-format msgid "Category '%s' is not valid" msgstr "" #: ../fdroid msgid "Check for updates to applications" msgstr "Vérifier les mises à jour pour les applications" #: ../fdroidserver/update.py #, python-brace-format msgid "" "Checking archiving for {appid} - apks:{integer}, keepversions:{keep}, " "archapks:{arch}" msgstr "" #: ../fdroidserver/dscanner.py msgid "Clean after all scans have finished" msgstr "" #: ../fdroidserver/dscanner.py msgid "Clean before the scans start and rebuild the container" msgstr "" #: ../fdroidserver/dscanner.py msgid "Clean up all containers and then exit" msgstr "Vider tous les conteneurs puis sortir" #: ../fdroidserver/update.py msgid "Clean update - don't uses caches, reprocess all APKs" msgstr "" "Mise à jour propre - n'utilise pas les caches, traite à nouveau tous les APKs" #: ../fdroidserver/import.py msgid "Comma separated list of categories." msgstr "Liste de catégories séparées par des virgules." #: ../fdroid #, c-format, python-format msgid "Command '%s' not recognised.\n" msgstr "La commande '%s' n'est pas reconnue.\n" #: ../fdroidserver/checkupdates.py msgid "Commit changes" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Could not find '{command}' on your system" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Could not find {path} to remove it" msgstr "" #: ../fdroidserver/update.py msgid "Could not open apk file for analysis" msgstr "Impossible d'ouvrir le fichier apk pour analyse" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/import.py msgid "Couldn't find latest version code" msgstr "Impossible de trouver la dernière version du code" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vname #: ../fdroidserver/import.py msgid "Couldn't find latest version name" msgstr "Impossible de trouver le nom de la dernière version" #: ../fdroidserver/import.py msgid "Couldn't find package ID" msgstr "Impossible de trouver l'ID du paquet" #: ../fdroidserver/update.py msgid "Cowardily refusing to overwrite existing signing key setup!" msgstr "" #: ../fdroidserver/update.py msgid "Create a repo signing key in a keystore" msgstr "" #: ../fdroidserver/update.py msgid "Create skeleton metadata files that are missing" msgstr "Créer les métadonnées de base manquantes" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Created new container \"{name}\"" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Creating \"{path}\" for configuring s3cmd." msgstr "" #: ../fdroidserver/publish.py msgid "Creating log directory" msgstr "Création du répertoire des logs" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Creating new S3 bucket: {url}" msgstr "" #: ../fdroidserver/publish.py msgid "Creating output directory" msgstr "Création du répertoire de sortie" #: ../fdroidserver/index.py msgid "Creating signed index with this key (SHA256):" msgstr "" #: ../fdroidserver/import.py ../fdroidserver/verify.py #: ../fdroidserver/publish.py msgid "Creating temporary directory" msgstr "Création du répertoire temporaire" #: ../fdroidserver/index.py msgid "Creating unsigned index in preparation for signing" msgstr "" #: ../fdroidserver/nightly.py msgid "DEBUG_KEYSTORE is not set or the value is incomplete" msgstr "" #: ../fdroidserver/update.py msgid "Delete APKs and/or OBBs without metadata from the repo" msgstr "Supprimer les APK et/ou OBB sans métadonnées dans le dépôt" #: ../fdroidserver/update.py #, python-brace-format msgid "Deleting unknown file: {path}" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Description '%s' is just the app's summary" msgstr "Description de '%s' n'est qu'un résumé de l'application" #: ../fdroidserver/lint.py msgid "Description has a duplicate line" msgstr "Ligne dupliquée dans la description" #: ../fdroidserver/lint.py #, python-format msgid "Description has a list (%s) but it isn't bulleted (*) nor numbered (#)" msgstr "" "La description contient une liste (%s) mais ce n'est ni une liste à puces " "(*) ni une liste numérotée (#)" #: ../fdroidserver/lint.py #, python-brace-format msgid "Description of length {length} is over the {limit} char limit" msgstr "" "La longueur de la description {length} dépasser la limite du nombre de " "caractères autorisés {limit}" #: ../fdroidserver/mirror.py #, python-brace-format msgid "Do not include \"{path}\" in URL!" msgstr "" #: ../fdroidserver/init.py msgid "Do not prompt for Android SDK path, just fail" msgstr "" #: ../fdroidserver/build.py msgid "Don't create a source tarball, useful when testing a build" msgstr "" #: ../fdroidserver/stats.py msgid "Don't do anything logs-related" msgstr "" #: ../fdroidserver/build.py msgid "" "Don't refresh the repository, useful when testing a build with no internet " "connection" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/nightly.py #: ../fdroidserver/upload.py msgid "Don't use rsync checksums" msgstr "Ne pas utiliser les sommes de contrôle rsync" #: ../fdroid msgid "Download complete mirrors of small repos" msgstr "" #: ../fdroidserver/stats.py msgid "Download logs we don't have" msgstr "Télécharger les journaux que n'avons pas" #: ../fdroidserver/common.py msgid "Downloading the repository already failed once, not trying again." msgstr "" "Le téléchargement du référentiel a déjà échoué une fois, ne pas réessayer." #: ../fdroidserver/verify.py #, python-brace-format msgid "Downloading {url} failed. {error}" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "" "Duplicate build recipe found for versionCode {versionCode} in {linedesc}" msgstr "" #: ../fdroidserver/lint.py #, python-brace-format msgid "Duplicate link in '{field}': {url}" msgstr "" #: ../fdroid msgid "Dynamically scan APKs post build" msgstr "Analyser dynamiquement les APKs après compilation" #: ../fdroidserver/mirror.py msgid "" "ERROR: this command should never be used to mirror f-droid.org!\n" "A full mirror of f-droid.org requires more than 200GB." msgstr "" #: ../fdroidserver/nightly.py msgid "ERROR: unsupported CI type, patches welcome!" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Empty build flag at {linedesc}" msgstr "" #: ../fdroidserver/init.py #, python-format msgid "" "Enter the path to the Android SDK (%s) here:\n" "> " msgstr "" #: ../fdroidserver/server.py ../fdroidserver/checkupdates.py #: ../fdroidserver/upload.py #, python-format msgid "Error while attempting to publish log: %s" msgstr "" #: ../fdroidserver/import.py msgid "Error while getting repo address" msgstr "" #: ../fdroid msgid "Extract signatures from APKs" msgstr "" #: ../fdroidserver/signatures.py #, python-brace-format msgid "Failed fetching signatures for '{apkfilename}': {error}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Failed reading {path}: {error}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Failed resizing {path}: {error}" msgstr "" #: ../fdroidserver/publish.py msgid "Failed to align application" msgstr "Impossible d'aligner les applications" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Failed to create S3 bucket: {url}" msgstr "" #: ../fdroidserver/common.py msgid "Failed to get APK manifest information" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Failed to get apk information, deleting {path}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Failed to get apk information, skipping {path}" msgstr "" #: ../fdroidserver/install.py #, python-brace-format msgid "Failed to install '{apkfilename}' on {dev}: {error}" msgstr "" #: ../fdroidserver/publish.py ../fdroidserver/common.py msgid "Failed to sign application" msgstr "Erreur lors de la signature de l'application" #: ../fdroidserver/common.py #, fuzzy msgid "Failed to zipalign application" msgstr "Impossible d'aligner et compresser cette application" #: ../fdroidserver/build.py #, python-brace-format msgid "Fetched buildserverid from VM: {buildserverid}" msgstr "" #: ../fdroidserver/signatures.py #, python-brace-format msgid "Fetched signatures for '{apkfilename}' -> '{sigdir}'" msgstr "" #: ../fdroidserver/verify.py ../fdroidserver/stats.py ../fdroidserver/update.py #: ../fdroidserver/rewritemeta.py ../fdroidserver/build.py #: ../fdroidserver/checkupdates.py ../fdroidserver/scanner.py #: ../fdroidserver/install.py msgid "Finished" msgstr "Terminé" #: ../fdroidserver/lint.py msgid "Flattr donation methods belong in the FlattrID flag" msgstr "" #: ../fdroidserver/lint.py msgid "Forbidden HTML tags" msgstr "" #: ../fdroidserver/build.py msgid "" "Force build of disabled apps, and carries on regardless of scan problems. " "Only allowed in test mode." msgstr "" #: ../fdroidserver/build.py #, python-brace-format msgid "Force halting build after {0} sec timeout!" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Found \"{path}\" graphic without metadata for app \"{name}\"!" msgstr "" #: ../fdroidserver/common.py msgid "Found invalid appids in arguments" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/common.py msgid "Found invalid versionCodes for some apps" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Found multiple metadata files for {appid}" msgstr "De multiples fichiers de métadonnées ont été trouvés pour {appid}" #: ../fdroidserver/index.py msgid "Found multiple signing certificates for repository." msgstr "" "Plusieurs certificats de signature ont étés trouvés pour le référentiel." #: ../fdroidserver/update.py #, python-brace-format msgid "Found multiple signing certificates in {path}" msgstr "" #: ../fdroidserver/index.py msgid "Found no signing certificates for repository." msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Found non-file at %s" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Generated skeleton metadata for {appid}" msgstr "Créer les métadonnées de base manquantes pour {appid}" #: ../fdroidserver/common.py #, python-format msgid "Git checkout of '%s' failed" msgstr "" #: ../fdroidserver/common.py msgid "Git clean failed" msgstr "" #: ../fdroidserver/common.py msgid "Git fetch failed" msgstr "" #: ../fdroidserver/common.py msgid "Git remote set-head failed" msgstr "" #: ../fdroidserver/common.py msgid "Git reset failed" msgstr "" #: ../fdroidserver/common.py msgid "Git submodule sync failed" msgstr "" #: ../fdroidserver/common.py msgid "Git submodule update failed" msgstr "" #: ../fdroidserver/common.py msgid "HTTPS must be used with Subversion URLs!" msgstr "" #: ../fdroidserver/index.py msgid "Ignoring package without metadata: " msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Ignoring stale cache data for {apkfilename}" msgstr "" #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Ignoring {ext} file at '{path}'" msgstr "" #: ../fdroidserver/update.py msgid "Include APKs that are signed with disabled algorithms like MD5" msgstr "" #: ../fdroidserver/common.py msgid "Initialising submodules" msgstr "" #: ../fdroidserver/install.py msgid "Install all signed applications available" msgstr "Installer toutes les applications signées disponibles" #: ../fdroid msgid "Install built packages on devices" msgstr "Installer les paquets compilés sur le(s) périphérique(s)" #: ../fdroidserver/install.py #, python-format msgid "Installing %s..." msgstr "" #: ../fdroidserver/install.py #, python-brace-format msgid "Installing '{apkfilename}' on {dev}..." msgstr "" #: ../fdroid msgid "Interact with the repo HTTP server" msgstr "Interagir avec le serveur HTTP du dépôt" #: ../fdroidserver/update.py msgid "Interactively ask about things that need updating." msgstr "" "Demander de manière interactive les choses nécessitant une mise à jour." #: ../fdroidserver/update.py msgid "Invalid APK" msgstr "" #: ../fdroidserver/metadata.py #, python-format msgid "Invalid boolean '%s'" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Invalid build flag at {line} in {linedesc}" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Invalid build format: {value} in {name}" msgstr "" #: ../fdroidserver/lint.py msgid "Invalid bulleted list" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "" "Invalid license tag \"%s\"! Use only tags from https://spdx.org/license-list" msgstr "" #: ../fdroidserver/lint.py msgid "Invalid link - use [http://foo.bar Link title] or [http://foo.bar]" msgstr "" #: ../fdroidserver/metadata.py #, python-format msgid "Invalid metadata in %s:%d" msgstr "" #: ../fdroidserver/metadata.py msgid "Invalid metadata in: " msgstr "" #: ../fdroidserver/common.py #, python-format msgid "Invalid name for published file: %s" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Invalid package name {0}" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Invalid versionCode: \"{versionCode}\" is not an integer!" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "JAR signature failed to verify: {path}" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "JAR signature verified: {path}" msgstr "" #: ../fdroidserver/publish.py ../fdroidserver/update.py #: ../fdroidserver/mirror.py msgid "Java JDK not found! Install in standard location or set java_paths!" msgstr "" #: ../fdroidserver/signindex.py msgid "" "Java jarsigner not found! Install in standard location or set java_paths!" msgstr "" #: ../fdroidserver/lint.py msgid "Javascript in HTML src attributes" msgstr "" #: ../fdroidserver/init.py msgid "Keystore for signing key:\t" msgstr "" #: ../fdroidserver/lint.py #, python-brace-format msgid "" "Last used commit '{commit}' looks like a tag, but Update Check Mode is " "'{ucm}'" msgstr "" #: ../fdroidserver/lint.py msgid "Liberapay donation methods belong in the LiberapayID flag" msgstr "" #: ../fdroidserver/rewritemeta.py msgid "List files that would be reformatted" msgstr "" #: ../fdroidserver/build.py msgid "Make the build stop on exceptions" msgstr "" #: ../fdroidserver/index.py msgid "Malformed repository mirrors." msgstr "" #: ../fdroidserver/server.py msgid "Malformed serverwebroot line:" msgstr "" #: ../fdroidserver/gpgsign.py msgid "Missing output directory" msgstr "Répertoire de destination manquant" #: ../fdroidserver/lint.py #, python-format msgid "Name '%s' is just the auto name - remove it" msgstr "" #: ../fdroidserver/common.py msgid "No 'config.py' found, using defaults." msgstr "" #: ../fdroidserver/common.py msgid "No Android SDK found!" msgstr "" #: ../fdroidserver/import.py msgid "No android or kivy project could be found. Specify --subdir?" msgstr "" #: ../fdroidserver/install.py msgid "No attached devices found" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "No commit specified for {versionName} in {linedesc}" msgstr "" #: ../fdroidserver/index.py msgid "No fingerprint in URL." msgstr "" #: ../fdroidserver/common.py msgid "No git submodules available" msgstr "" #: ../fdroidserver/import.py msgid "No information found." msgstr "Aucune information trouvée." #: ../fdroidserver/lint.py msgid "No need to specify that the app is Free Software" msgstr "Pas besoin de spécifier que l'application est un logiciel libre" #: ../fdroidserver/lint.py msgid "No need to specify that the app is for Android" msgstr "Pas besoin de spécifier que l'application est pour Android" #: ../fdroidserver/server.py msgid "No option set! Edit your config.py to set at least one of these:" msgstr "" #: ../fdroidserver/common.py msgid "No packages specified" msgstr "" #: ../fdroidserver/install.py #, python-format msgid "No signed apk available for %s" msgstr "" #: ../fdroidserver/install.py msgid "No signed output directory - nothing to do" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "No signing certificates found in {path}" msgstr "" #: ../fdroidserver/common.py #, python-format msgid "No such package: %s" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/common.py #, python-brace-format msgid "No such versionCode {versionCode} for app {appid}" msgstr "" #: ../fdroidserver/verify.py ../fdroidserver/publish.py msgid "No unsigned directory - nothing to do" msgstr "" #: ../fdroidserver/signindex.py msgid "Nothing to do" msgstr "Rien à faire" #: ../fdroidserver/checkupdates.py #, python-brace-format msgid "Nothing to do for {appid}." msgstr "Rien à faire pour {appid}." #: ../fdroidserver/init.py msgid "Now set these in config.py:" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/update.py #, python-brace-format msgid "OBB file has newer versionCode({integer}) than any APK:" msgstr "" #: ../fdroidserver/update.py msgid "OBB filename must start with \"main.\" or \"patch.\":" msgstr "" #: ../fdroidserver/update.py msgid "OBB's packagename does not match a supported APK:" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Old APK signature failed to verify: {path}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Only PNG and JPEG are supported for graphics, found: {path}" msgstr "" #: ../fdroidserver/checkupdates.py msgid "Only print differences with the Play Store" msgstr "Afficher uniquement les différences avec le Play Store" #: ../fdroidserver/checkupdates.py msgid "Only process apps with auto-updates" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "Options" msgstr "Options" #: ../fdroidserver/import.py msgid "Overall license of the project." msgstr "Licence globale du projet." #: ../fdroidserver/dscanner.py msgid "Override path for repo APKs (default: ./repo)" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Parsing manifest at '{path}'" msgstr "" #: ../fdroidserver/common.py msgid "Password required with username" msgstr "Mot de passe requis avec nom d'utilisateur" #: ../fdroidserver/import.py msgid "Path to main Android project subdirectory, if not in root." msgstr "" msgid "Path to main android project subdirectory, if not in root." msgstr "" #: ../fdroidserver/init.py msgid "Path to the Android SDK (sometimes set in ANDROID_HOME)" msgstr "" #: ../fdroidserver/btlog.py msgid "Path to the git repo to use as the log" msgstr "Chemin vers un dépôt git à utiliser comme journal" #: ../fdroidserver/init.py msgid "Path to the keystore for the repo signing key" msgstr "" #: ../fdroidserver/dscanner.py msgid "Prepare Drozer to run a scan" msgstr "" msgid "Prepare drozer to run a scan" msgstr "" #: ../fdroidserver/nightly.py msgid "Print the secret variable to the terminal for easy copy/paste" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Problem with description of {appid}: {error}" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Problem with xml at '{path}'" msgstr "" #: ../fdroidserver/checkupdates.py msgid "Process auto-updates" msgstr "Réaliser les mises à jour automatiques" #: ../fdroidserver/publish.py ../fdroidserver/update.py #, python-brace-format msgid "Processing {apkfilename}" msgstr "" #: ../fdroidserver/checkupdates.py ../fdroidserver/scanner.py #, python-brace-format msgid "Processing {appid}" msgstr "" #: ../fdroidserver/update.py msgid "Produce human-readable XML/JSON for index files" msgstr "Produire des fichiers d'index XML ou JSON lisibles par un humain" #: ../fdroidserver/update.py msgid "Produce human-readable index.xml" msgstr "Produire un fichier index.xml lisible par un humain" #: ../fdroidserver/import.py msgid "Project URL to import from." msgstr "URL du projet à importer" #: ../fdroidserver/lint.py msgid "Punctuation should be avoided" msgstr "" #: ../fdroidserver/btlog.py msgid "Push the log to this git remote repository" msgstr "Envoyer les logs dans ce dépôt git distant" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Pushing binary transparency log to {url}" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Pushing to {url}" msgstr "" #: ../fdroid msgid "Quickly start a new repository" msgstr "Démarrage rapide d'un nouveau dépôt" #: ../fdroid msgid "Read all the metadata files and exit" msgstr "Lire toutes les métadonnées et quitter" #: ../fdroidserver/common.py #, python-brace-format msgid "Reading '{config_file}'" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Reading minSdkVersion failed: \"{apkfilename}\"" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #. https://developer.android.com/guide/topics/manifest/manifest-element.html#vname #: ../fdroidserver/common.py #, python-brace-format msgid "" "Reading packageName/versionCode/versionName failed, APK invalid: " "'{apkfilename}'" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Reading {apkfilename} from cache" msgstr "" #: ../fdroidserver/stats.py msgid "" "Recalculate aggregate stats - use when changes have been made that would " "invalidate old cached data." msgstr "" #: ../fdroidserver/common.py msgid "Removing specified files" msgstr "" #: ../fdroidserver/update.py msgid "Rename APK files that do not match package.name_123.apk" msgstr "" "Renomme les fichiers APK dont le nom ne ressemble pas à nom.paquet_123.apk" #: ../fdroidserver/update.py msgid "Report on build data status" msgstr "" #: ../fdroidserver/build.py msgid "" "Reset and create a brand new build server, even if the existing one appears " "to be ok." msgstr "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "Resigning {apkfilename} with provided debug.keystore" msgstr "" #: ../fdroidserver/update.py msgid "Resize all the icons exceeding the max pixel size and exit" msgstr "" "Redimensionner toutes les icônes excédant la taille maximale en pixels et " "quitter" #: ../fdroidserver/common.py msgid "Restrict output to warnings and errors" msgstr "Restreindre les résultats aux avertissements et erreurs" #: ../fdroid msgid "Rewrite all the metadata files" msgstr "Réécrire toutes les métadonnées" #: ../fdroidserver/rewritemeta.py msgid "Rewrite to a specific format: " msgstr "Réécrire dans un format spécifique : " #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Rewriting '{appid}'" msgstr "" #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Rewriting '{appid}' to '{path}'" msgstr "" #: ../fdroidserver/lint.py msgid "Run rewritemeta to fix formatting" msgstr "Exécuter rewritemeta pour corriger le formatage" #: ../fdroidserver/server.py ../fdroidserver/upload.py msgid "Running first pass with MD5 checking disabled" msgstr "" #: ../fdroidserver/mirror.py #, python-brace-format msgid "Running wget in {path}" msgstr "" #: ../fdroidserver/dscanner.py msgid "Scan only the latest version of each package" msgstr "Analyser seulement la dernière version de chaque paquet" #: ../fdroid msgid "Scan the source code of a package" msgstr "Scanner le code source d'un paquet" #: ../fdroidserver/scanner.py #, python-brace-format msgid "Scanner found {count} problems in {appid}:" msgstr "" #: ../fdroidserver/scanner.py #, python-brace-format msgid "Scanner found {count} problems in {appid}:{versionCode}:" msgstr "" #: ../fdroidserver/build.py msgid "Scanner found {} problem" msgid_plural "Scanner found {} problems" msgstr[0] "" msgstr[1] "" #: ../fdroidserver/common.py msgid "Set clock to that time using:" msgstr "" #: ../fdroidserver/build.py #, python-brace-format msgid "Set open file limit to {integer}" msgstr "" #: ../fdroid msgid "Set up an app build for a nightly build repo" msgstr "" #: ../fdroidserver/build.py msgid "Setting open file limit failed: " msgstr "" #: ../fdroidserver/build.py #, python-brace-format msgid "Setting {0} sec timeout for this build" msgstr "" #: ../fdroidserver/build.py msgid "Setup an emulator, install the APK on it and perform a Drozer scan" msgstr "" msgid "Setup an emulator, install the apk on it and perform a drozer scan" msgstr "" #: ../fdroid msgid "Sign and place packages in the repo" msgstr "Signer et déplacer les paquets dans le dépôt" #: ../fdroid msgid "Sign indexes created using update --nosign" msgstr "Signer les indexes créés avec update --nosign" #: ../fdroidserver/build.py msgid "Skip scanning the source code for binaries and other problems" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Skipping '{apkfilename}' with invalid signature!" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Skipping index generation for {appid}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Skipping {apkfilename} with invalid signature!" msgstr "" #: ../fdroidserver/scanner.py #, python-brace-format msgid "Skipping {appid}: disabled" msgstr "" #: ../fdroidserver/scanner.py #, python-brace-format msgid "Skipping {appid}: no builds specified" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py msgid "Specify a local folder to sync the repo to" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py msgid "Specify an identity file to provide to SSH for rsyncing" msgstr "" #: ../fdroidserver/update.py msgid "Specify editor to use in interactive mode. Default " msgstr "Définir l'éditeur à utiliser en mode interactif. Par défaut " #, c-format msgid "Specify editor to use in interactive mode. Default %s" msgstr "Définir l'éditeur à utiliser en mode interactif. Par défaut %s" #: ../fdroidserver/update.py #, python-brace-format msgid "Specify editor to use in interactive mode. Default is {path}" msgstr "" "Définir l'éditeur à utiliser en mode interactif. {path} est utilisé par " "défaut" #: ../fdroidserver/build.py msgid "Specify that we're running on the build server" msgstr "" #: ../fdroidserver/nightly.py msgid "Specify which debug keystore file to use." msgstr "" #: ../fdroidserver/common.py msgid "Spew out even more information than normal" msgstr "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "Striping mystery signature from {apkfilename}" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Summary '%s' is just the app's name" msgstr "" #: ../fdroidserver/lint.py #, python-brace-format msgid "Summary of length {length} is over the {limit} char limit" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "System clock is older than date in {path}!" msgstr "" #: ../fdroidserver/build.py msgid "" "Test mode - put output in the tmp directory only, and always build, even if " "the output already exists." msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/update.py #, python-brace-format msgid "The OBB version code must come after \"{name}.\":" msgstr "" #: ../fdroidserver/btlog.py msgid "The base URL for the repo to log (default: https://f-droid.org)" msgstr "URL de base du dépôt à journaliser (par défaut: https://f-droid.org)" #: ../fdroidserver/mirror.py msgid "The directory to write the mirror to" msgstr "" #: ../fdroidserver/server.py msgid "The only commands currently supported are 'init' and 'update'" msgstr "Les seules commandes disponibles actuellement sont 'init' et 'update'" #: ../fdroidserver/index.py msgid "The repository's fingerprint does not match." msgstr "" #: ../fdroidserver/common.py msgid "The repository's index could not be verified." msgstr "" #: ../fdroidserver/server.py #, python-brace-format msgid "The root dir for local_copy_dir \"{path}\" does not exist!" msgstr "" #: ../fdroidserver/nightly.py msgid "The the file to be included in the repo (path or glob)" msgstr "" #: ../fdroidserver/publish.py msgid "There is a keyalias collision - publishing halted" msgstr "" #: ../fdroidserver/import.py #, python-format msgid "This repo already has local metadata: %s" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py msgid "" "To use awsbucket, awssecretkey and awsaccesskeyid must also be set in config." "py!" msgstr "" #: ../fdroidserver/lint.py msgid "UCM is set but it looks like checkupdates hasn't been run yet" msgstr "" #: ../fdroidserver/lint.py msgid "URL shorteners should not be used" msgstr "" #: ../fdroidserver/metadata.py msgid "URL title is just the URL, use brackets: [URL]" msgstr "" #: ../fdroidserver/lint.py #, python-brace-format msgid "URL {url} in Description: {error}" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Unexpected text on same line as {field} in {linedesc}" msgstr "" #: ../fdroid msgid "Unknown exception found!" msgstr "Exception inconnue détectée !" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vname #: ../fdroidserver/lint.py #, python-brace-format msgid "Unknown file '{filename}' in build '{versionName}'" msgstr "" #: ../fdroidserver/metadata.py #, python-format msgid "Unknown metadata format: %s" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Unknown metadata format: {path}" msgstr "Format de métadonnée inconnu : {path}" #: ../fdroidserver/common.py msgid "Unknown version of aapt, might cause problems: " msgstr "" #: ../fdroidserver/lint.py msgid "Unlinkified link - use [http://foo.bar Link title] or [http://foo.bar]" msgstr "" #: ../fdroidserver/lint.py msgid "Unnecessary leading space" msgstr "" #: ../fdroidserver/lint.py msgid "Unnecessary trailing space" msgstr "" #: ../fdroidserver/metadata.py msgid "Unrecognised app field: " msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Unrecognised field '{field}' in {linedesc}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Unsupported file type \"{extension}\" for repo graphic" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Unsupported graphics file found: {path}" msgstr "" #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Unsupported metadata format, use: --to [{supported}]" msgstr "" #: ../fdroidserver/metadata.py msgid "Unterminated ]" msgstr "" #: ../fdroidserver/metadata.py msgid "Unterminated ]]" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Unterminated build in {name}" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Unterminated continuation in {name}" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Unused extlib at %s" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Unused file at %s" msgstr "" #: ../fdroidserver/lint.py msgid "Update Check Name is set to the known app id - it can be removed" msgstr "" #: ../fdroid msgid "Update repo information for new packages" msgstr "Mettre à jour les données des dépôts pour les nouveaux paquets" #: ../fdroid msgid "Update the binary transparency log for a URL" msgstr "" "Mettre à jour le rapport de transparence des fichiers binaires pour une URL" #: ../fdroid msgid "Update the stats of the repo" msgstr "Mettre à jour les statistiques du dépôt" #: ../fdroidserver/update.py ../fdroidserver/build.py msgid "Update the wiki" msgstr "Mettre à jour le wiki" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "Usage" msgstr "Usage" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "Usage: %s\n" msgstr "Usage : %s\n" #: ../fdroidserver/lint.py msgid "Use /HEAD instead of /master to point at a file in the default branch" msgstr "" "Utiliser /HEAD plutôt que /master pour pointer un fichier dans la branche " "par défaut" #: ../fdroidserver/update.py msgid "Use `fdroid update -c` to create it." msgstr "Utiliser 'fdroid update -c' pour le créer." #: ../fdroidserver/build.py msgid "Use build server" msgstr "Utiliser le serveur de build" #: ../fdroidserver/update.py msgid "Use date from APK instead of current time for newly added APKs" msgstr "" "Utiliser la date de l'APK plutôt que la date courante pour les APKs " "nouvellement ajoutés" msgid "Use date from apk instead of current time for newly added apks" msgstr "" "Utiliser la date de l'APK plutôt que la date courante pour les APKs " "nouvellement ajoutés" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Using \"{path}\" for configuring s3cmd." msgstr "Utiliser \"{path}\" pour configurer s3cmd." #: ../fdroidserver/common.py msgid "" "Using Java's jarsigner, not recommended for verifying APKs! Use apksigner" msgstr "" "L'utilisation de l'utilitaire jarsigner de Java n'est pas recommandé pour " "vérifier les APKs ! Utiliser apksigner" #: ../fdroidserver/init.py #, python-brace-format msgid "Using existing keystore \"{path}\"" msgstr "Utilise le trousseau existant \"{path}\"" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Using s3cmd to sync with: {url}" msgstr "" #: ../fdroid msgid "Valid commands are:" msgstr "Les commandes valides sont les suivantes :" #: ../fdroid msgid "Verify the integrity of downloaded packages" msgstr "Vérifier l'intégrité des paquets téléchargés" #: ../fdroidserver/index.py msgid "Verifying index signature:" msgstr "Vérification de la signature d'index :" #: ../fdroid msgid "Warn about possible metadata errors" msgstr "Avertir de possibles erreurs dans les métadonnées" #: ../fdroidserver/update.py msgid "" "When configured for signed indexes, create only unsigned indexes at this " "stage" msgstr "" msgid "X.509 'Distiguished Name' used when generating keys" msgstr "X.509 'Nom distingué' utilisé lors de la génération des clés" #: ../fdroidserver/init.py msgid "X.509 'Distinguished Name' used when generating keys" msgstr "X.509 'Nom distingué' utilisé lors de la génération des clés" #: ../fdroidserver/common.py msgid "You can use ANDROID_HOME to set the path to your SDK, i.e.:" msgstr "" "Vous pouvez utiliser ANDROID_HOME pour définir le chemin de votre SDK, ex. :" #: ../fdroidserver/nightly.py #, python-brace-format msgid "adding IdentityFile to {path}" msgstr "ajoute IdentityFile à {path}" #: ../fdroidserver/update.py #, python-brace-format msgid "adding to {name}: {path}" msgstr "ajoute à {name} : {path}" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "ambiguous option: %(option)s could match %(matches)s" msgstr "option ambiguë : %(option)s peut correspondre à %(matches)s" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "ambiguous option: %s (%s?)" msgstr "option ambiguë : %s (%s?)" #: ../fdroidserver/lint.py ../fdroidserver/rewritemeta.py msgid "applicationId in the form APPID" msgstr "applicationId sous la forme de APPID" #: ../fdroidserver/checkupdates.py msgid "applicationId to check for updates" msgstr "applicationId pour vérifier les mises à jour" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/verify.py ../fdroidserver/publish.py #: ../fdroidserver/dscanner.py ../fdroidserver/build.py #: ../fdroidserver/scanner.py ../fdroidserver/install.py msgid "applicationId with optional versionCode in the form APPID[:VERCODE]" msgstr "" "applicationId avec le versionCode optionnel sous la forme APPID[:VERCODE]" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "argument \"-\" with mode %r" msgstr "argument \"-\" avec le mode %r" #: ../fdroidserver/nightly.py msgid "attempting bare ssh connection to test deploy key:" msgstr "tentative de connexion ssh simple pour tester la clé de déploiement :" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "can't open '%s': %s" msgstr "Impossible d'ouvrir %s : %s" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "cannot have multiple subparser arguments" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "cannot merge actions - two groups are named %r" msgstr "" #: ../fdroidserver/nightly.py msgid "cannot publish update, did you set the deploy key?" msgstr "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "cloning {url}" msgstr "" #: ../fdroidserver/server.py msgid "command to execute, either 'init' or 'update'" msgstr "Commande à exécuter : 'init' ou 'update'" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "complex" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "conflicting option string: %s" msgid_plural "conflicting option strings: %s" msgstr[0] "" msgstr[1] "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "copying {apkfilename} into {path}" msgstr "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "created {path}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "deleting: repo/{apkfilename}" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "dest= is required for options like %r" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "expected %s argument" msgid_plural "expected %s arguments" msgstr[0] "" msgstr[1] "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "expected at least one argument" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "expected at most one argument" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "expected one argument" msgstr "" #: ../fdroid msgid "fdroid [-h|--help|--version] []" msgstr "fdroid [-h|--help|--version] []" #: ../fdroid msgid "fdroid [] [-h|--help|--version|]" msgstr "fdroid [] [-h|--help|--version|]" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "floating-point" msgstr "" #: ../fdroidserver/metadata.py msgid "force errors to be warnings, or ignore" msgstr "forcer les erreurs en avertissement, ou les ignorer" #: ../fdroidserver/metadata.py msgid "force metadata errors (default) to be warnings, or to be ignored." msgstr "" "forcer les erreurs (par défaut) sur les métadonnées à être des " "avertissements, ou les ignorer." #: ../fdroidserver/common.py msgid "git svn clone failed" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "ignored explicit argument %r" msgstr "" #: ../fdroidserver/index.py msgid "index-v1 must have a signature, use `fdroid signindex` to create it!" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "integer" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "invalid %(type)s value: %(value)r" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "invalid choice: %(value)r (choose from %(choices)s)" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "invalid conflict_resolution value: %r" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "" "invalid option string %(option)r: must start with a character " "%(prefix_chars)r" msgstr "" #: ../fdroidserver/server.py #, python-brace-format msgid "" "local_copy_dir does not end with \"fdroid\", perhaps you meant: \"{path}\"" msgstr "" #: ../fdroidserver/server.py msgid "local_copy_dir must be an absolute path!" msgstr "" #: ../fdroidserver/server.py msgid "local_copy_dir must be directory, not a file!" msgstr "" #: ../fdroidserver/index.py #, python-format msgid "mirror '%s' does not end with 'fdroid'!" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "mutually exclusive arguments must be optional" msgstr "" #: ../fdroidserver/mirror.py #, python-brace-format msgid "no \"icon\" in {appid}" msgstr "" #: ../fdroidserver/signatures.py msgid "no APK supplied" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "no such option: %s" msgstr "option inexistante : %s" #: ../fdroid msgid "no version info found!" msgstr "aucun information de version n'a été trouvée !" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "not allowed with argument %s" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "one of the arguments %s is required" msgstr "" #: ../fdroidserver/index.py ../fdroidserver/common.py msgid "only accepts strings, lists, and tuples" msgstr "" #: ../fdroidserver/install.py #, python-format msgid "option %s: If you really want to install all the signed apps, use --all" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "option %s: invalid %s value: %r" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "option %s: invalid choice: %r (choose from %s)" msgstr "" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option -%s not recognized" msgstr "La commande '%s 1' n'est pas reconnue" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option -%s requires argument" msgstr "L'option -%s requiert un argument" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option --%s must not have an argument" msgstr "L'option %s ne doit pas avoir d'argument" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option --%s not a unique prefix" msgstr "option --%s n'est pas un préfixe unique" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option --%s not recognized" msgstr "Option --%s non reconnue" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option --%s requires argument" msgstr "L'option %s requiert un argument" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "optional arguments" msgstr "arguments optionnels" #: ../fdroidserver/nightly.py #, python-brace-format msgid "overwriting existing {path}" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "positional arguments" msgstr "arguments de position" #: ../fdroidserver/signatures.py #, python-brace-format msgid "" "refuse downloading via insecure HTTP connection (use HTTPS or specify --no-" "https-check): {apkfilename}" msgstr "" #: ../fdroidserver/signatures.py #, python-brace-format msgid "" "refuse downloading via insecure http connection (use https or specify --no-" "https-check): {apkfilename}" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "s3cmd sync indexes {path} to {url} and delete" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "show program's version number and exit" msgstr "afficher le numéro de version du programme et quitter" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.5/optparse.py #: /usr/lib/python3.6/argparse.py /usr/lib/python3.6/optparse.py msgid "show this help message and exit" msgstr "afficher ce message d'aide et quitter" #: ../fdroidserver/signatures.py msgid "signed APK, either a file-path or HTTPS URL." msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "skipping source tarball: {path}" msgstr "" #: ../fdroidserver/lint.py msgid "srclibs missing name and/or @" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "the following arguments are required: %s" msgstr "les arguments suivants sont requis %s" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "unexpected option string: %s" msgstr "chaîne d'option inattendue : %s" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "unknown parser %(parser_name)r (choices: %(choices)s)" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "unrecognized arguments: %s" msgstr "arguments non reconnu : %s" #: ../fdroidserver/common.py #, python-brace-format msgid "unsafe permissions on '{config_file}' (should be 0600)!" msgstr "permissions dangereuses sur '{config_file}' (doit être 0600) !" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py ../fdroid msgid "usage: " msgstr "usage : " #: ../fdroid msgid "usage: fdroid [-h|--help|--version] []" msgstr "utilisation : fdroid [-h|--help|--version] []" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "using Apache libcloud to sync with {url}" msgstr "" #: ../fdroidserver/publish.py #, python-brace-format msgid "{0} app, {1} key aliases" msgid_plural "{0} apps, {1} key aliases" msgstr[0] "" msgstr[1] "" #: ../fdroidserver/update.py #, python-brace-format msgid "{apkfilename} ({appid}) has no metadata!" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "{apkfilename} has multiple {name} files, looks like Master Key exploit!" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "{apkfilename}'s AndroidManifest.xml has a bad date: " msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "{appid} does not have a name! Using package name instead." msgstr "" #: ../fdroidserver/mirror.py #, python-brace-format msgid "{appid} is missing {name}" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vname #: ../fdroidserver/lint.py #, python-brace-format msgid "{appid}: Unknown extlib {path} in build '{versionName}'" msgstr "" #: ../fdroidserver/scanner.py #, python-brace-format msgid "{appid}: no builds specified, running on current source state" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "{field} not terminated in {name}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "{name} \"{path}\" does not exist! Correct it in config.py." msgstr "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "{path} does not exist! Create it by running:" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "{path} has bad file signature \"{pattern}\", possible Janus exploit!" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "{path} is zero size!" msgstr "" #: ../fdroidserver/mirror.py #, python-brace-format msgid "{url} does not end with \"fdroid\", check the URL path!" msgstr "" #: ../fdroidserver/build.py msgid "{} build failed" msgid_plural "{} builds failed" msgstr[0] "" msgstr[1] "" #: ../fdroidserver/build.py msgid "{} build succeeded" msgid_plural "{} builds succeeded" msgstr[0] "" msgstr[1] "" #, fuzzy #~ msgid "Add PGP signatures for packages in repo using GnuPG" #~ msgstr "Ajouter des signatures GPG pour les paquets dans le dépôt" #~ msgid "Add gpg signatures for packages in repo" #~ msgstr "Ajouter des signatures GPG pour les paquets dans le dépôt" #~ msgid "Android Build Tools path '{path}' does not exist!" #~ msgstr "Le chemin '{path}' pour Android Build Tools n'existe pas !" #~ msgid "Clean update - don't uses caches, reprocess all apks" #~ msgstr "" #~ "Mise à jour propre - n'utilise pas les caches, ré-exécute tous les APKs" fdroidserver-1.0.9/locale/uk/0000775000175000017500000000000013324115531016001 5ustar hanshans00000000000000fdroidserver-1.0.9/locale/uk/LC_MESSAGES/0000775000175000017500000000000013324115531017566 5ustar hanshans00000000000000fdroidserver-1.0.9/locale/uk/LC_MESSAGES/fdroidserver.mo0000664000175000017500000013570413324115526022637 0ustar hanshans00000000000000 ) 77$o-++9^T!(!H"j&'1"A1Ds.E+IuF*-2R`$69 I )` - 1  * !5!/U![!9!5"Q" m"C"-"[#*\#V#%# $%$;$+Y$=$$$!$U%#m%6%%%#%&0&)?&"i&$&!&!&&;''J'/r''(''((-9(g(2(4(6(#)*A) l)F)=)*-2*:`**U*+(*+S+Ao+!+H+", ?,v`,,,-/#- S-t-7---!.&*..Q...3....4-/b/k/d/*/90!I0(k030-0-0$191U1f1w11(1#1+12><2{2)2!22&2"32:3 m3y3*3'33J3BB444#4474&*5Q5Cp5I5!5N 6$o6!6666+ 7%77]7<s773778180G8.x8@888*9'H9p919%9 997:1=:1o:*:;:*;#3;W;_;-;;;:;7%<&]<-<<=<, =:=W=l== ===*=>/>$N>s>->P> ?d+??7??U?4S@:@&@@ A(AM%MIM BNcNN+NN#NNO3QO;OOO4O-PHP2bPP(P.P2Q 4Q-BQpQ<xQ!QQQ%R*)RTRsRRR&RRDR?S!GS3iS%SNSFT(YT-T'T-TUU+U>U#[U'UGUU.V>VXV%uVVVVVW#Wf8WfW-X&4X[X,{XXX(XY5,YbY7}YY6Y(Y2Z(PZGyZ4Z9Z0[7J[=[ [8[-\BH\\5\ \&\7])V_7_I_-`+0`+\`9``&a"aa%bD(b8mb-b.b2c36cDjc6cchld9d.eE>e<e#ekeQfZlffhfzPg$gsg=dh"h.h7h1,i^iI~i-i/i[&j9j5j/j="kC`kQk[k*Rl}l%m &mGm]m+{m=m.m0nTEnUnEnn6oFoCo)0pZpIvp"pGpG+qMsqJq; rhHr\r7s(Fs2os4s6srt:tyt46uXkuu;u3v{RvHvw=7wuuwJw6xEx(y>Hyy;zHKz7zLzv{,{{8{L|(b|Y||}=$}Db}.}.}J~;P~.~E~ "*9F]bހnA-fށ$E*j'&e(J(s#+> KTcL&B=l *'9aJwB†#5Y7r&чCI4!~NMH=‰+ۉ%-<C3Ί0.H@w΋*'@1T% 7Ռ1 1?*q;D؍r1XՎ.KkMc;eH=N,6֑ &E96PԒ%76Kn-ғP QrThm:֕4֖Ol93*>-^S=*58`L ,% R&sQWpț0T%.ڜ%i^Qu)ǞP#B9f*˟/$5,Z-861%(WP=Ѣ!.1!`5F22/NF~Ťߤ*4>'s4Хߥ# 0D@VYY:KEէ$<@~}%I" lOʩN5a/;ͫc5h2'(.<2k 7[!Hjy%@:PY_D֯!#3E%yNF(5-^'-.6#S'wG.)66`4>̳) 75,m%fܴfC-Iص/",R5<50/fJ^([L(ѸG4B9w7˹= A8b-Bɺ 5!1W: SSH Public Key to be used as Deploy Key: {path} encoded for the DEBUG_KEYSTORE secret variable:"%s/" has no matching metadata file!"{path}" contains outdated {name} ({version})"{path}" contains recent {name} ({version})"{path}" exists but s3cmd is not installed!"{path}" is not an accepted format, convert to: {formats}%(option)s option requires %(number)d argument%(option)s option requires %(number)d arguments%(prog)s: error: %(message)s %d problems found%prog [options]%r is not callable%s is not an accepted build field%s option does not take a value'keypass' not found in config.py!'keystore' not found in config.py!'keystorepass' not found in config.py!'repo_keyalias' not found in config.py!'required' is an invalid argument for positionals'sdk_path' not set in 'config.py'!'{aapt}' is too old, fdroid requires build-tools-23.0.0 or newer!'{aapt}' is too old, fdroid requires build-tools-{version} or newer!'{apkfilename}' is already installed on {dev}.'{path}' failed to execute!'{value}' is not a valid {field} in {appid}. Regex pattern: {pattern}...checkupdate failed for {appid} : {error}.__call__() not defined.fdroid.txt is not supported! Convert to .fdroid.yml or .fdroid.json./issues is missingAdd a new application from its source codeAdding new repo for only {name}Alias of the repo signing key in the keystoreAllows a different revision (or git branch) to be specified for the initial importAlso mirror the full archive sectionAlso warn about formatting issues, like rewritemeta -lAndroid SDK '{path}' does not have '{dirname}' installed!Android SDK not found!Android SDK path '{path}' does not exist!Android SDK path '{path}' is not a directory!Android build-tools path '{path}' does not exist!AndroidManifest.xml has no dateApp is in '{repo}' but has a link to {url}Appending .git is not necessaryArchiving {apkfilename} with invalid signature!Base URL to mirror, can include the index signing key using the query string: ?fingerprint=Branch '{branch}' used as commit in build '{versionName}'Branch '{branch}' used as commit in srclib '{srclib}'Build a package from sourceBuild all applications availableBuild generated by `fdroid import` - remove disable line once readyBuild only the latest version of each packageBuild should have comma-separated versionName and versionCode, not "{value}", in {linedesc}Built repo based in "%s" with this config:Can't build due to {} error while scanningCan't build due to {} errors while scanningCannot find a packageName for {path}!Cannot find an appid for {path}!Cannot read "{path}"!Cannot resolve app id {appid}Cannot use --list and --to at the same timeCannot write "{path}", not an accepted format, use: {formats}Categories are not setCategory '%s' is not validCheck for updates to applicationsChecking archiving for {appid} - apks:{integer}, keepversions:{keep}, archapks:{arch}Clean after all scans have finishedClean before the scans start and rebuild the containerClean up all containers and then exitComma separated list of categories.Command '%s' not recognised. Commit changesCould not find '{command}' on your systemCould not find {path} to remove itCould not open apk file for analysisCouldn't find latest version codeCouldn't find latest version nameCouldn't find package IDCowardily refusing to overwrite existing signing key setup!Create a repo signing key in a keystoreCreate skeleton metadata files that are missingCreated new container "{name}"Creating "{path}" for configuring s3cmd.Creating log directoryCreating new S3 bucket: {url}Creating output directoryCreating signed index with this key (SHA256):Creating temporary directoryCreating unsigned index in preparation for signingDEBUG_KEYSTORE is not set or the value is incompleteDelete APKs and/or OBBs without metadata from the repoDeleting unknown file: {path}Description '%s' is just the app's summaryDescription has a duplicate lineDescription has a list (%s) but it isn't bulleted (*) nor numbered (#)Description of length {length} is over the {limit} char limitDo not include "{path}" in URL!Do not prompt for Android SDK path, just failDon't create a source tarball, useful when testing a buildDon't do anything logs-relatedDon't refresh the repository, useful when testing a build with no internet connectionDon't use rsync checksumsDownload complete mirrors of small reposDownload logs we don't haveDownloading the repository already failed once, not trying again.Downloading {url} failed. {error}Duplicate build recipe found for versionCode {versionCode} in {linedesc}Duplicate link in '{field}': {url}Dynamically scan APKs post buildERROR: this command should never be used to mirror f-droid.org! A full mirror of f-droid.org requires more than 200GB.ERROR: unsupported CI type, patches welcome!Empty build flag at {linedesc}Enter the path to the Android SDK (%s) here: > Error while getting repo addressExtract signatures from APKsFailed fetching signatures for '{apkfilename}': {error}Failed reading {path}: {error}Failed resizing {path}: {error}Failed to create S3 bucket: {url}Failed to get APK manifest informationFailed to get apk information, deleting {path}Failed to get apk information, skipping {path}Failed to install '{apkfilename}' on {dev}: {error}Failed to sign applicationFetched buildserverid from VM: {buildserverid}Fetched signatures for '{apkfilename}' -> '{sigdir}'FinishedForbidden HTML tagsForce build of disabled apps, and carries on regardless of scan problems. Only allowed in test mode.Force halting build after {0} sec timeout!Found "{path}" graphic without metadata for app "{name}"!Found invalid appids in argumentsFound invalid versionCodes for some appsFound multiple signing certificates for repository.Found multiple signing certificates in {path}Found no signing certificates for repository.Found non-file at %sGit checkout of '%s' failedGit clean failedGit fetch failedGit remote set-head failedGit reset failedHTTPS must be used with Subversion URLs!Ignoring package without metadata: Ignoring stale cache data for {apkfilename}Ignoring {ext} file at '{path}'Include APKs that are signed with disabled algorithms like MD5Initialising submodulesInstall all signed applications availableInstall built packages on devicesInstalling %s...Installing '{apkfilename}' on {dev}...Interact with the repo HTTP serverInteractively ask about things that need updating.Invalid APKInvalid boolean '%s'Invalid build flag at {line} in {linedesc}Invalid build format: {value} in {name}Invalid bulleted listInvalid license tag "%s"! Use only tags from https://spdx.org/license-listInvalid link - use [http://foo.bar Link title] or [http://foo.bar]Invalid metadata in %s:%dInvalid metadata in: Invalid name for published file: %sInvalid package name {0}Invalid versionCode: "{versionCode}" is not an integer!JAR signature failed to verify: {path}JAR signature verified: {path}Java JDK not found! Install in standard location or set java_paths!Java jarsigner not found! Install in standard location or set java_paths!Javascript in HTML src attributesLast used commit '{commit}' looks like a tag, but Update Check Mode is '{ucm}'List files that would be reformattedMake the build stop on exceptionsMalformed repository mirrors.Malformed serverwebroot line:Missing output directoryName '%s' is just the auto name - remove itNo 'config.py' found, using defaults.No Android SDK found!No android or kivy project could be found. Specify --subdir?No attached devices foundNo commit specified for {versionName} in {linedesc}No fingerprint in URL.No git submodules availableNo information found.No need to specify that the app is Free SoftwareNo need to specify that the app is for AndroidNo option set! Edit your config.py to set at least one of these:No packages specifiedNo signed apk available for %sNo signed output directory - nothing to doNo signing certificates found in {path}No such package: %sNo such versionCode {versionCode} for app {appid}No unsigned directory - nothing to doNothing to doNothing to do for {appid}.OBB file has newer versionCode({integer}) than any APK:OBB filename must start with "main." or "patch.":OBB's packagename does not match a supported APK:Old APK signature failed to verify: {path}Only PNG and JPEG are supported for graphics, found: {path}Only print differences with the Play StoreOnly process apps with auto-updatesOptionsOverall license of the project.Override path for repo APKs (default: ./repo)Parsing manifest at '{path}'Password required with usernamePath to main android project subdirectory, if not in root.Path to the Android SDK (sometimes set in ANDROID_HOME)Path to the git repo to use as the logPath to the keystore for the repo signing keyPrepare drozer to run a scanPrint the secret variable to the terminal for easy copy/pasteProblem with description of {appid}: {error}Problem with xml at '{path}'Process auto-updatesProcessing {apkfilename}Processing {appid}Produce human-readable index.xmlProject URL to import from.Punctuation should be avoidedPush the log to this git remote repositoryPushing to {url}Quickly start a new repositoryRead all the metadata files and exitReading '{config_file}'Reading minSdkVersion failed: "{apkfilename}"Reading packageName/versionCode/versionName failed, APK invalid: '{apkfilename}'Reading {apkfilename} from cacheRecalculate aggregate stats - use when changes have been made that would invalidate old cached data.Removing specified filesRename APK files that do not match package.name_123.apkReport on build data statusReset and create a brand new build server, even if the existing one appears to be ok.Resigning {apkfilename} with provided debug.keystoreResize all the icons exceeding the max pixel size and exitRestrict output to warnings and errorsRewrite all the metadata filesRewrite to a specific format: Rewriting '{appid}'Rewriting '{appid}' to '{path}'Running first pass with MD5 checking disabledRunning wget in {path}Scan only the latest version of each packageScan the source code of a packageScanner found {count} problems in {appid}:Scanner found {count} problems in {appid}:{versionCode}:Scanner found {} problemScanner found {} problemsSet clock to that time using:Set open file limit to {integer}Set up an app build for a nightly build repoSetting open file limit failed: Setting {0} sec timeout for this buildSetup an emulator, install the apk on it and perform a drozer scanSign and place packages in the repoSign indexes created using update --nosignSkip scanning the source code for binaries and other problemsSkipping '{apkfilename}' with invalid signature!Skipping index generation for {appid}Skipping {apkfilename} with invalid signature!Skipping {appid}: disabledSkipping {appid}: no builds specifiedSpecify a local folder to sync the repo toSpecify an identity file to provide to SSH for rsyncingSpecify editor to use in interactive mode. Default %sSpecify that we're running on the build serverSpecify which debug keystore file to use.Spew out even more information than normalSummary '%s' is just the app's nameSummary of length {length} is over the {limit} char limitSystem clock is older than date in {path}!Test mode - put output in the tmp directory only, and always build, even if the output already exists.The OBB version code must come after "{name}.":The base URL for the repo to log (default: https://f-droid.org)The directory to write the mirror toThe repository's fingerprint does not match.The repository's index could not be verified.The root dir for local_copy_dir "{path}" does not exist!The the file to be included in the repo (path or glob)There is a keyalias collision - publishing haltedThis repo already has local metadata: %sTo use awsbucket, awssecretkey and awsaccesskeyid must also be set in config.py!UCM is set but it looks like checkupdates hasn't been run yetURL shorteners should not be usedURL title is just the URL, use brackets: [URL]URL {url} in Description: {error}Unexpected text on same line as {field} in {linedesc}Unknown exception found!Unknown file '{filename}' in build '{versionName}'Unknown metadata format: %sUnknown version of aapt, might cause problems: Unlinkified link - use [http://foo.bar Link title] or [http://foo.bar]Unnecessary leading spaceUnnecessary trailing spaceUnrecognised app field: Unrecognised field '{field}' in {linedesc}Unsupported file type "{extension}" for repo graphicUnsupported graphics file found: {path}Unsupported metadata format, use: --to [{supported}]Unterminated ]Unterminated ]]Unterminated build in {name}Unterminated continuation in {name}Unused extlib at %sUnused file at %sUpdate Check Name is set to the known app id - it can be removedUpdate repo information for new packagesUpdate the binary transparency log for a URLUpdate the stats of the repoUpdate the wikiUsageUsage: %s Use /HEAD instead of /master to point at a file in the default branchUse `fdroid update -c` to create it.Use build serverUse date from apk instead of current time for newly added apksUsing "{path}" for configuring s3cmd.Using Java's jarsigner, not recommended for verifying APKs! Use apksignerUsing existing keystore "{path}"Using s3cmd to sync with: {url}Valid commands are:Verify the integrity of downloaded packagesVerifying index signature:Warn about possible metadata errorsWhen configured for signed indexes, create only unsigned indexes at this stageX.509 'Distiguished Name' used when generating keysYou can use ANDROID_HOME to set the path to your SDK, i.e.:adding IdentityFile to {path}adding to {name}: {path}ambiguous option: %(option)s could match %(matches)sambiguous option: %s (%s?)argument "-" with mode %rattempting bare ssh connection to test deploy key:can't open '%s': %scannot have multiple subparser argumentscannot merge actions - two groups are named %rcannot publish update, did you set the deploy key?cloning {url}command to execute, either 'init' or 'update'complexconflicting option string: %sconflicting option strings: %scopying {apkfilename} into {path}created {path}deleting: repo/{apkfilename}dest= is required for options like %rexpected %s argumentexpected %s argumentsexpected at least one argumentexpected at most one argumentexpected one argumentfloating-pointforce errors to be warnings, or ignoreignored explicit argument %rindex-v1 must have a signature, use `fdroid signindex` to create it!integerinvalid %(type)s value: %(value)rinvalid choice: %(value)r (choose from %(choices)s)invalid conflict_resolution value: %rinvalid option string %(option)r: must start with a character %(prefix_chars)rlocal_copy_dir does not end with "fdroid", perhaps you meant: "{path}"local_copy_dir must be an absolute path!local_copy_dir must be directory, not a file!mirror '%s' does not end with 'fdroid'!mutually exclusive arguments must be optionalno "icon" in {appid}no APK suppliedno such option: %snot allowed with argument %sone of the arguments %s is requiredonly accepts strings, lists, and tuplesoption %s: If you really want to install all the signed apps, use --alloption %s: invalid %s value: %roption %s: invalid choice: %r (choose from %s)option -%s not recognizedoption -%s requires argumentoption --%s must not have an argumentoption --%s not a unique prefixoption --%s not recognizedoption --%s requires argumentoptional argumentsoverwriting existing {path}positional argumentsrefuse downloading via insecure HTTP connection (use HTTPS or specify --no-https-check): {apkfilename}refuse downloading via insecure http connection (use https or specify --no-https-check): {apkfilename}s3cmd sync indexes {path} to {url} and deleteshow program's version number and exitshow this help message and exitsigned APK, either a file-path or HTTPS URL.skipping source tarball: {path}srclibs missing name and/or @the following arguments are required: %sunexpected option string: %sunknown parser %(parser_name)r (choices: %(choices)s)unrecognized arguments: %sunsafe permissions on '{config_file}' (should be 0600)!usage: usage: fdroid [-h|--help|--version] []using Apache libcloud to sync with {url}{0} app, {1} key aliases{0} apps, {1} key aliases{apkfilename} ({appid}) has no metadata!{apkfilename} has multiple {name} files, looks like Master Key exploit!{apkfilename}'s AndroidManifest.xml has a bad date: {appid} does not have a name! Using package name instead.{appid} is missing {name}{appid}: Unknown extlib {path} in build '{versionName}'{appid}: no builds specified, running on current source state{field} not terminated in {name}{name} "{path}" does not exist! Correct it in config.py.{path} does not exist! Create it by running:{path} has bad file signature "{pattern}", possible Janus exploit!{path} is zero size!{url} does not end with "fdroid", check the URL path!{} build failed{} builds failed{} build succeeded{} builds succeededProject-Id-Version: fdroidserver 0.9 Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues POT-Creation-Date: 2018-02-13 09:01+0100 PO-Revision-Date: 2018-03-19 21:50+0000 Last-Translator: Максим Якимчук Language-Team: Ukrainian Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Generated-By: Babel 1.3 SSH Public Key to be used as Deploy Key: {path} encoded for the DEBUG_KEYSTORE secret variable:"%s/" не має відповідного файлу метаданих!"{path}" contains outdated {name} ({version})"{path}" contains recent {name} ({version})"{path}" exists but s3cmd is not installed!"{path}" is not an accepted format, convert to: {formats}%(option)s параметр вимагає %(number)d аргумент%(option)s параметр вимагає %(number)d аргументи%(option)s параметр вимагає %(number)d аргументів%(prog)s: помилка: %(message)s %d знайдено проблем%prog [параметри]%r не можна викликати%s не є прийнятним полем для створення%s параметр не приймає значення'keypass' не знайдено в config.py!'keystore' не знайдено в config.py!'keystorepass' не знайдено в config.py!'repo_keyalias' не знайдено в config.py!'required' недійсний аргумент для позицій'sdk_path' не встановлено в 'config.py'!'{aapt}' занадто старий, fdroid вимагає інструментів-створення 23.0.0 або новіший!'{aapt}' занадто старий, fdroid вимагає build-tools-{version} або новіший!'{apkfilename}' вже встановлено на {dev}.'{path}' не вдалося виконати!'{value}' is not a valid {field} in {appid}. Regex pattern: {pattern}... checkupdate не вдалося для {appid} : {error}.__call__() не визначено. fdroid.txt не підтримується! Конвертувати в. fdroid.yml або. fdroid.json./issues відсутнійДодайте новий застосунку зі свого вихідного кодуAdding new repo for only {name}Псевдонім підписного ключа репозиторія в сховищі ключівДозволяє вказати іншу версію (або git гілку) для початкового імпортуAlso mirror the full archive sectionТакож попередити про проблеми форматування, наприклад rewritemeta -lAndroid SDK '{path}' '{dirname}' не встановлено!Android SDK не знайдено!Android SDK шлях '{path}' не існує!Android SDK шлях '{path}' це не каталог!Android build-tools path '{path}' does not exist!AndroidManifest.xml has no dateЗастосунок '{repo}' але має посилання на {url}Додавання .git не потрібноArchiving {apkfilename} with invalid signature!Base URL to mirror, can include the index signing key using the query string: ?fingerprint=Branch '{branch}' used as commit in build '{versionName}'Branch '{branch}' used as commit in srclib '{srclib}'Побудуйте пакет з джерелаСтворіть всі доступні застосункиBuild generated by `fdroid import` - remove disable line once readyСтворіть лише останню версію кожного пакетаBuild should have comma-separated versionName and versionCode, not "{value}", in {linedesc}Built repo based in "%s" with this config:Can't build due to {} error while scanningCan't build due to {} errors while scanningCan't build due to {} errors while scanningCannot find a packageName for {path}!Cannot find an appid for {path}!Cannot read "{path}"!Cannot resolve app id {appid}Cannot use --list and --to at the same timeCannot write "{path}", not an accepted format, use: {formats}Категорії не встановленоКатегорія '%s' неприпустимаПеревірте наявність оновлень для застосунківChecking archiving for {appid} - apks:{integer}, keepversions:{keep}, archapks:{arch}Очистити після завершення скануванняОчистити перед початком сканування і перебудуйте контейнерОчистити усі контейнери, а потім вийтиСписок категорій, розділених комами.Команда '%s' не визнана. Прийняти зміниНе вдалося знайти '{command}' у вашій системіCould not find {path} to remove itНе вдалося відкрити файл apk для аналізуНе вдається знайти останню версію кодуНе вдається знайти найновішу назву версіїНе вдається знайти ідентифікатор пакетаCowardily refusing to overwrite existing signing key setup!Створіть ключ підписування репозиторію у сховищі ключівСтворення скелетів файлів метаданих, які відсутніСтворено новий контейнер "{name}"Creating "{path}" for configuring s3cmd.Створення каталогу журналуСтворення нового блоку S3: {url}Створення вихідного каталогуСтворення підписаного індексу за допомогою цієї клавіші (SHA256):Створення тимчасового каталогуСтворення непідписаного індексу під час підготовки до підписанняDEBUG_KEYSTORE is not set or the value is incompleteВидаліть APKs і/або OBBs без метаданих з репозиторіюDeleting unknown file: {path}Опис '%s' є лише резюме застосункуОпис містить дублікат рядкаОпис містить список (%s) але не маркірований (*) і не пронумерований (#)Довжина опису {length} перевищує ліміт {limit}Do not include "{path}" in URL!Не точний шлях Android SDK, просто збійНе створюйте вихідний код, корисно під час тестування створенняНе робіть нічого пов'язаного з журналамиНе оновлюйте сховище, корисне під час тестування створення без підключення до ІнтернетуНе використовуйте контрольні суми rsyncDownload complete mirrors of small reposЖурналів завантаження у нас немаєЗавантаження репозиторія вже не відбулося один раз, не намагайтеся знову.Завантаження {url} не вдалося. {error}Duplicate build recipe found for versionCode {versionCode} in {linedesc}Дублікат посилання в '{field}': {url}Динамічне сканування створення APKs дописуERROR: this command should never be used to mirror f-droid.org! A full mirror of f-droid.org requires more than 200GB.ERROR: unsupported CI type, patches welcome!Empty build flag at {linedesc}Введіть шлях до Android SDK (%s) тут: > Помилка при отриманні адреси репозиторіяЕкстракт підписів з APKНе вдалося завантажити підписи для '{apkfilename}': {error}Failed reading {path}: {error}Failed resizing {path}: {error}Не вдалося створити сигмент S3: {url}Не вдалося отримати інформацію про APKFailed to get apk information, deleting {path}Failed to get apk information, skipping {path}Не вдалося встановити '{apkfilename}' в {dev}: {error}Не вдалося підписати застосунокFetched buildserverid from VM: {buildserverid}Отримані підписи для '{apkfilename}' -> '{sigdir}'ГотовоForbidden HTML tagsПримусити створювати інвалідні додатки, і здійснювати розміщення незалежно від проблем сканування. Лише дозволено в тестовому режимі.Force halting build after {0} sec timeout!Found "{path}" graphic without metadata for app "{name}"!Знайдено недійсні прикладні програми в аргументахЗнайдено недійсні версії коду для деяких застосунківЗнайдено кілька сертифікатів підписування для репозиторію.Found multiple signing certificates in {path}Не знайдено сертифікатів підписування для репозиторію.Знайдено не файл у %sПомилка перевірки Git '%s'Очистити Git невдалосяGit вибірка не вдаласяНе вдалося встановити пульт дистанційного керування GitСкидання Git не вдалосяHTTPS must be used with Subversion URLs!Ignoring package without metadata: Ignoring stale cache data for {apkfilename}Ignoring {ext} file at '{path}'Include APKs that are signed with disabled algorithms like MD5Initialising submodulesВстановити всі доступні підписані застосункиВстановити побудовані пакети на пристроїInstalling %s...Installing '{apkfilename}' on {dev}...Взаємодія з HTTP-сервером репозиторіюІнтерактивно запитайте про речі, які потребують оновлення.Invalid APKInvalid boolean '%s'Invalid build flag at {line} in {linedesc}Invalid build format: {value} in {name}Invalid bulleted listInvalid license tag "%s"! Use only tags from https://spdx.org/license-listInvalid link - use [http://foo.bar Link title] or [http://foo.bar]Invalid metadata in %s:%dInvalid metadata in: Invalid name for published file: %sInvalid package name {0}Invalid versionCode: "{versionCode}" is not an integer!JAR signature failed to verify: {path}JAR signature verified: {path}Java JDK not found! Install in standard location or set java_paths!Java jarsigner not found! Install in standard location or set java_paths!Javascript in HTML src attributesLast used commit '{commit}' looks like a tag, but Update Check Mode is '{ucm}'Список файлів, які будуть переформатованіЗробити зупинку створення за виняткамиMalformed repository mirrors.Malformed serverwebroot line:Missing output directoryName '%s' is just the auto name - remove itNo 'config.py' found, using defaults.No Android SDK found!No android or kivy project could be found. Specify --subdir?No attached devices foundNo commit specified for {versionName} in {linedesc}No fingerprint in URL.No git submodules availableNo information found.No need to specify that the app is Free SoftwareNo need to specify that the app is for AndroidNo option set! Edit your config.py to set at least one of these:No packages specifiedNo signed apk available for %sNo signed output directory - nothing to doNo signing certificates found in {path}No such package: %sNo such versionCode {versionCode} for app {appid}No unsigned directory - nothing to doNothing to doNothing to do for {appid}.OBB file has newer versionCode({integer}) than any APK:OBB filename must start with "main." or "patch.":OBB's packagename does not match a supported APK:Old APK signature failed to verify: {path}Only PNG and JPEG are supported for graphics, found: {path}Друкувати відмінності тільки з Play StoreОбробляти застосунки лише за допомогою автоматичних оновленьПараметриЗагальна ліцензія проекту.Перевизначити шлях для репозиторію APKs (default: ./repo)Parsing manifest at '{path}'Password required with usernameШлях до основного підкаталогу андроїда, якщо не в кореневому каталозі.Шлях до Android SDK (іноді встановлено в ANDROID_HOME)Шлях до git репозиторію для використання в якості входуШлях до сховища ключа для підписного ключа репозиторіяПідготувати drozer для запуску скануванняPrint the secret variable to the terminal for easy copy/pasteProblem with description of {appid}: {error}Problem with xml at '{path}'Процес автоматичних оновленьProcessing {apkfilename}Processing {appid}Створити зручний для сприйняття index.xmlURL-адреса проекту для імпорту.Punctuation should be avoidedНатисніть вхід цього віддаленого сховища gitPushing to {url}Швидкий запуск нового сховищаПрочитайте всі файли метаданих і вийдітьReading '{config_file}'Reading minSdkVersion failed: "{apkfilename}"Reading packageName/versionCode/versionName failed, APK invalid: '{apkfilename}'Reading {apkfilename} from cacheПерерахуйте сукупну статистику - використовуйте, коли були внесені зміни, які призведуть до втрати старих кешованих даних.Removing specified filesПерейменування файлів APK, які не відповідають package.name_123.apkЗвіт про статус створення данихПерезавантажте та створіть новий сервер створення, навіть якщо наявний існує.Resigning {apkfilename} with provided debug.keystoreЗмінити розмір усіх значків, що перевищують максимальний розмір пікселя та вийтиОбмеження виводу на попередження і помилкиПерепишіть усі файли метаданихПереписати в певний формат: Rewriting '{appid}'Rewriting '{appid}' to '{path}'Running first pass with MD5 checking disabledRunning wget in {path}Сканувати лише останню версію кожного пакетаСканування вихідного коду пакетаScanner found {count} problems in {appid}:Scanner found {count} problems in {appid}:{versionCode}:Scanner found {} problemScanner found {} problemsScanner found {} problemsSet clock to that time using:Set open file limit to {integer}Set up an app build for a nightly build repoSetting open file limit failed: Setting {0} sec timeout for this buildНалаштуйте емулятор, встановіть apk на нього та виконайте drozer скануванняЗаписати та розмістити пакети в репозиторіїЗапис індексів, створених за допомогою update --nosignПропустити сканування вихідного коду для двійкових файлів та інших проблемSkipping '{apkfilename}' with invalid signature!Skipping index generation for {appid}Skipping {apkfilename} with invalid signature!Skipping {appid}: disabledSkipping {appid}: no builds specifiedВкажіть локальну папку, щоб синхронізувати репозиторій вВкажіть файл ідентифікатора для надання SSH для rsyncingВкажіть редактор для використання в інтерактивному режимі. За замовчуванням %sВкажіть, що ми працюємо на сервері створенняSpecify which debug keystore file to use.Випишіть ще більше інформації, ніж звичайноSummary '%s' is just the app's nameSummary of length {length} is over the {limit} char limitSystem clock is older than date in {path}!Режим тесту - надсилайте випуск тільки в каталог tmp, і завжди створюйте, навіть якщо випуск вже існує.The OBB version code must come after "{name}.":Базова URL-адреса для входу в репозиторій (за замовчуванням: https://f-droid.org)The directory to write the mirror toThe repository's fingerprint does not match.The repository's index could not be verified.The root dir for local_copy_dir "{path}" does not exist!The the file to be included in the repo (path or glob)There is a keyalias collision - publishing haltedThis repo already has local metadata: %sTo use awsbucket, awssecretkey and awsaccesskeyid must also be set in config.py!UCM is set but it looks like checkupdates hasn't been run yetURL shorteners should not be usedURL title is just the URL, use brackets: [URL]URL {url} in Description: {error}Unexpected text on same line as {field} in {linedesc}Виявлено невідому виняткову ситуацію!Unknown file '{filename}' in build '{versionName}'Unknown metadata format: %sUnknown version of aapt, might cause problems: Unlinkified link - use [http://foo.bar Link title] or [http://foo.bar]Unnecessary leading spaceUnnecessary trailing spaceUnrecognised app field: Unrecognised field '{field}' in {linedesc}Unsupported file type "{extension}" for repo graphicUnsupported graphics file found: {path}Unsupported metadata format, use: --to [{supported}]Unterminated ]Unterminated ]]Unterminated build in {name}Unterminated continuation in {name}Unused extlib at %sUnused file at %sUpdate Check Name is set to the known app id - it can be removedОновіть інформацію репозиторю для нових пакетівОновити бінарний журнал прозорості для URL-адресиОновити статистику репозиторіюОновити вікіВикористанняВикористання: %s Use /HEAD instead of /master to point at a file in the default branchUse `fdroid update -c` to create it.Використовуйте сервер створенняВикористовуйте дату з apk, замість поточного часу для нових доданих apksUsing "{path}" for configuring s3cmd.Using Java's jarsigner, not recommended for verifying APKs! Use apksignerUsing existing keystore "{path}"Using s3cmd to sync with: {url}Дійсні команди:Перевірте цілісність завантажених пакетівVerifying index signature:Попереджати про можливі помилки метаданихКоли налаштовано для підписаних індексів, на цьому етапі створюйте лише непідписані індексиX.509 'Distiguished Name' використовується при створенні ключівYou can use ANDROID_HOME to set the path to your SDK, i.e.:adding IdentityFile to {path}adding to {name}: {path}неоднозначний параметр: %(option)s може відповідати %(matches)sнеоднозначний параметр: %s (%s?)argument "-" with mode %rattempting bare ssh connection to test deploy key:не може відкрити '%s': %scannot have multiple subparser argumentscannot merge actions - two groups are named %rcannot publish update, did you set the deploy key?cloning {url}команда виконати, 'init' або 'update'complexconflicting option string: %sconflicting option strings: %sconflicting option strings: %scopying {apkfilename} into {path}created {path}deleting: repo/{apkfilename}dest= is required for options like %rexpected %s argumentexpected %s argumentsexpected %s argumentsexpected at least one argumentexpected at most one argumentexpected one argumentfloating-pointпримусити попереджувати помилки, або ігноруватиignored explicit argument %rindex-v1 must have a signature, use `fdroid signindex` to create it!integerinvalid %(type)s value: %(value)rinvalid choice: %(value)r (choose from %(choices)s)invalid conflict_resolution value: %rinvalid option string %(option)r: must start with a character %(prefix_chars)rlocal_copy_dir does not end with "fdroid", perhaps you meant: "{path}"local_copy_dir must be an absolute path!local_copy_dir must be directory, not a file!mirror '%s' does not end with 'fdroid'!mutually exclusive arguments must be optionalno "icon" in {appid}no APK suppliedтакого параметру немає: %snot allowed with argument %sone of the arguments %s is requiredonly accepts strings, lists, and tuplesoption %s: If you really want to install all the signed apps, use --alloption %s: invalid %s value: %roption %s: invalid choice: %r (choose from %s)параметр -%s не визнанопараметр -%s потрібен аргументпараметр --%s не має аргументупараметр --%s не унікальний префікспараметр --%s не визнанопараметр --%s потрібен аргументнеобов'язкові аргументиoverwriting existing {path}позиційні аргументиrefuse downloading via insecure HTTP connection (use HTTPS or specify --no-https-check): {apkfilename}refuse downloading via insecure http connection (use https or specify --no-https-check): {apkfilename}s3cmd sync indexes {path} to {url} and deleteпоказати номер версії програми та вийтипоказати довідку та вийтиsigned APK, either a file-path or HTTPS URL.skipping source tarball: {path}srclibs missing name and/or @такі аргументи зобов'язані: %sнеочікуваний рядок параметрів: %sunknown parser %(parser_name)r (choices: %(choices)s)нерозпізнані аргументи: %sнебезпечні дозволи на '{config_file}' (should be 0600)!використання: використання: fdroid [-h|--help|--version] <команда> [<аргументи>]using Apache libcloud to sync with {url}{0} app, {1} key aliases{0} apps, {1} key aliases{0} apps, {1} key aliases{apkfilename} ({appid}) has no metadata!{apkfilename} has multiple {name} files, looks like Master Key exploit!{apkfilename}'s AndroidManifest.xml has a bad date: {appid} does not have a name! Using package name instead.{appid} is missing {name}{appid}: Unknown extlib {path} in build '{versionName}'{appid}: no builds specified, running on current source state{field} not terminated in {name}{name} "{path}" does not exist! Correct it in config.py.{path} does not exist! Create it by running:{path} has bad file signature "{pattern}", possible Janus exploit!{path} is zero size!{url} does not end with "fdroid", check the URL path!{} build failed{} builds failed{} builds failed{} build succeeded{} builds succeeded{} builds succeededfdroidserver-1.0.9/locale/uk/LC_MESSAGES/fdroidserver.po0000664000175000017500000020552613322065577022652 0ustar hanshans00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Free Software Foundation, Inc. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: fdroidserver 0.9\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" "POT-Creation-Date: 2018-02-13 09:01+0100\n" "PO-Revision-Date: 2018-03-19 21:50+0000\n" "Last-Translator: Максим Якимчук \n" "Language-Team: Ukrainian \n" "Language: uk\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" "X-Generator: Weblate 2.20-dev\n" #: ../fdroidserver/nightly.py msgid "" "\n" "SSH Public Key to be used as Deploy Key:" msgstr "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "" "\n" "{path} encoded for the DEBUG_KEYSTORE secret variable:" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "\"%s/\" has no matching metadata file!" msgstr "\"%s/\" не має відповідного файлу метаданих!" #: ../fdroidserver/update.py #, python-brace-format msgid "\"{path}\" contains outdated {name} ({version})" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "\"{path}\" contains recent {name} ({version})" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "\"{path}\" exists but s3cmd is not installed!" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "\"{path}\" is not an accepted format, convert to: {formats}" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "%(option)s option requires %(number)d argument" msgid_plural "%(option)s option requires %(number)d arguments" msgstr[0] "%(option)s параметр вимагає %(number)d аргумент" msgstr[1] "%(option)s параметр вимагає %(number)d аргументи" msgstr[2] "%(option)s параметр вимагає %(number)d аргументів" #: ../fdroidserver/mirror.py #, fuzzy, python-format msgid "%(prog)s [options] url" msgstr "%prog [параметри]" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "%(prog)s: error: %(message)s\n" msgstr "%(prog)s: помилка: %(message)s\n" #: ../fdroidserver/scanner.py #, python-format msgid "%d problems found" msgstr "%d знайдено проблем" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "%prog [options]" msgstr "%prog [параметри]" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "%r is not callable" msgstr "%r не можна викликати" #: ../fdroidserver/lint.py #, python-format msgid "%s is not an accepted build field" msgstr "%s не є прийнятним полем для створення" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "%s option does not take a value" msgstr "%s параметр не приймає значення" #: ../fdroidserver/index.py ../fdroidserver/common.py msgid "'keypass' not found in config.py!" msgstr "'keypass' не знайдено в config.py!" #: ../fdroidserver/index.py ../fdroidserver/common.py msgid "'keystore' not found in config.py!" msgstr "'keystore' не знайдено в config.py!" #: ../fdroidserver/index.py ../fdroidserver/common.py msgid "'keystorepass' not found in config.py!" msgstr "'keystorepass' не знайдено в config.py!" #: ../fdroidserver/index.py ../fdroidserver/common.py msgid "'repo_keyalias' not found in config.py!" msgstr "'repo_keyalias' не знайдено в config.py!" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "'required' is an invalid argument for positionals" msgstr "'required' недійсний аргумент для позицій" #: ../fdroidserver/common.py msgid "'sdk_path' not set in 'config.py'!" msgstr "'sdk_path' не встановлено в 'config.py'!" #. Translators: "build-tools" is the file name of a package from #. Google, it is part of the Android SDK. So it probably shouldn't be #. translated or transliterated. #: ../fdroidserver/common.py #, python-brace-format msgid "'{aapt}' is too old, fdroid requires build-tools-23.0.0 or newer!" msgstr "" "'{aapt}' занадто старий, fdroid вимагає інструментів-створення 23.0.0 або " "новіший!" #: ../fdroidserver/common.py #, python-brace-format msgid "'{aapt}' is too old, fdroid requires build-tools-{version} or newer!" msgstr "" "'{aapt}' занадто старий, fdroid вимагає build-tools-{version} або новіший!" #: ../fdroidserver/install.py #, python-brace-format msgid "'{apkfilename}' is already installed on {dev}." msgstr "'{apkfilename}' вже встановлено на {dev}." #: ../fdroidserver/common.py #, fuzzy, python-brace-format msgid "" "'{field}' will be in random order! Use () or [] brackets if order is " "important!" msgstr "" "'{field}' буде в довільному порядку! Використовуйте () або [] дужки у разі " "важливості аргумента!" #: ../fdroidserver/common.py #, python-brace-format msgid "'{path}' failed to execute!" msgstr "'{path}' не вдалося виконати!" #: ../fdroidserver/metadata.py #, python-brace-format msgid "'{value}' is not a valid {field} in {appid}. Regex pattern: {pattern}" msgstr "" #: ../fdroidserver/checkupdates.py #, python-brace-format msgid "...checkupdate failed for {appid} : {error}" msgstr "... checkupdate не вдалося для {appid} : {error}" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid ".__call__() not defined" msgstr ".__call__() не визначено" #: ../fdroidserver/metadata.py msgid ".fdroid.txt is not supported! Convert to .fdroid.yml or .fdroid.json." msgstr "" ". fdroid.txt не підтримується! Конвертувати в. fdroid.yml або. fdroid.json." #: ../fdroidserver/lint.py msgid "/issues is missing" msgstr "/issues відсутній" #: ../fdroidserver/mirror.py #, fuzzy msgid "A URL is required as an argument!" msgstr "параметр -%s потрібен аргумент" #: ../fdroid #, fuzzy msgid "Add PGP signatures using GnuPG for packages in repo" msgstr "Додайте підписи gpg для пакетів у репозиторії" #: ../fdroid msgid "Add a new application from its source code" msgstr "Додайте новий застосунку зі свого вихідного коду" #: ../fdroidserver/update.py #, fuzzy msgid "Add a repo signing key to an unsigned repo" msgstr "Створіть ключ підписування репозиторію у сховищі ключів" #: ../fdroidserver/update.py #, fuzzy msgid "Add skeleton metadata files for APKs that are missing them" msgstr "Створення скелетів файлів метаданих, які відсутні" #: ../fdroidserver/update.py #, python-brace-format msgid "Adding new repo for only {name}" msgstr "" #: ../fdroidserver/init.py msgid "Alias of the repo signing key in the keystore" msgstr "Псевдонім підписного ключа репозиторія в сховищі ключів" #: ../fdroidserver/import.py msgid "" "Allows a different revision (or git branch) to be specified for the initial " "import" msgstr "Дозволяє вказати іншу версію (або git гілку) для початкового імпорту" #: ../fdroidserver/mirror.py msgid "Also mirror the full archive section" msgstr "" #: ../fdroidserver/lint.py msgid "Also warn about formatting issues, like rewritemeta -l" msgstr "Також попередити про проблеми форматування, наприклад rewritemeta -l" #: ../fdroidserver/common.py #, python-brace-format msgid "Android SDK '{path}' does not have '{dirname}' installed!" msgstr "Android SDK '{path}' '{dirname}' не встановлено!" #: ../fdroidserver/common.py msgid "Android SDK not found!" msgstr "Android SDK не знайдено!" #: ../fdroidserver/common.py #, python-brace-format msgid "Android SDK path '{path}' does not exist!" msgstr "Android SDK шлях '{path}' не існує!" #: ../fdroidserver/common.py #, python-brace-format msgid "Android SDK path '{path}' is not a directory!" msgstr "Android SDK шлях '{path}' це не каталог!" #. Translators: "build-tools" is the file name of a package from #. Google, it is part of the Android SDK. So it probably shouldn't be #. translated or transliterated. #: ../fdroidserver/common.py #, python-brace-format msgid "Android build-tools path '{path}' does not exist!" msgstr "" #: ../fdroidserver/update.py msgid "AndroidManifest.xml has no date" msgstr "" #: ../fdroidserver/lint.py #, python-brace-format msgid "App is in '{repo}' but has a link to {url}" msgstr "Застосунок '{repo}' але має посилання на {url}" #: ../fdroidserver/lint.py msgid "Appending .git is not necessary" msgstr "Додавання .git не потрібно" #: ../fdroidserver/update.py #, python-brace-format msgid "Archiving {apkfilename} with invalid signature!" msgstr "" #: ../fdroidserver/mirror.py msgid "" "Base URL to mirror, can include the index signing key using the query " "string: ?fingerprint=" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vname #: ../fdroidserver/lint.py #, python-brace-format msgid "Branch '{branch}' used as commit in build '{versionName}'" msgstr "" #: ../fdroidserver/lint.py #, python-brace-format msgid "Branch '{branch}' used as commit in srclib '{srclib}'" msgstr "" #: ../fdroid msgid "Build a package from source" msgstr "Побудуйте пакет з джерела" #: ../fdroidserver/build.py msgid "Build all applications available" msgstr "Створіть всі доступні застосунки" #: ../fdroidserver/lint.py msgid "Build generated by `fdroid import` - remove disable line once ready" msgstr "" #: ../fdroidserver/build.py msgid "Build only the latest version of each package" msgstr "Створіть лише останню версію кожного пакета" #: ../fdroidserver/metadata.py #, python-brace-format msgid "" "Build should have comma-separated versionName and versionCode, not " "\"{value}\", in {linedesc}" msgstr "" #: ../fdroidserver/init.py #, python-format msgid "Built repo based in \"%s\" with this config:" msgstr "" #: ../fdroidserver/build.py msgid "Can't build due to {} error while scanning" msgid_plural "Can't build due to {} errors while scanning" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Cannot find a packageName for {path}!" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Cannot find an appid for {path}!" msgstr "" #: ../fdroidserver/vmtools.py #, python-brace-format msgid "Cannot read \"{path}\"!" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Cannot resolve app id {appid}" msgstr "" #: ../fdroidserver/rewritemeta.py msgid "Cannot use --list and --to at the same time" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Cannot write \"{path}\", not an accepted format, use: {formats}" msgstr "" #: ../fdroidserver/lint.py msgid "Categories are not set" msgstr "Категорії не встановлено" #: ../fdroidserver/lint.py #, python-format msgid "Category '%s' is not valid" msgstr "Категорія '%s' неприпустима" #: ../fdroid msgid "Check for updates to applications" msgstr "Перевірте наявність оновлень для застосунків" #: ../fdroidserver/update.py #, python-brace-format msgid "" "Checking archiving for {appid} - apks:{integer}, keepversions:{keep}, " "archapks:{arch}" msgstr "" #: ../fdroidserver/dscanner.py msgid "Clean after all scans have finished" msgstr "Очистити після завершення сканування" #: ../fdroidserver/dscanner.py msgid "Clean before the scans start and rebuild the container" msgstr "Очистити перед початком сканування і перебудуйте контейнер" #: ../fdroidserver/dscanner.py msgid "Clean up all containers and then exit" msgstr "Очистити усі контейнери, а потім вийти" #: ../fdroidserver/update.py #, fuzzy msgid "Clean update - don't uses caches, reprocess all APKs" msgstr "Очистити оновлення - не використовує кеш, повторно обробляє всі apks" #: ../fdroidserver/import.py msgid "Comma separated list of categories." msgstr "Список категорій, розділених комами." #: ../fdroid #, c-format, python-format msgid "Command '%s' not recognised.\n" msgstr "Команда '%s' не визнана.\n" #: ../fdroidserver/checkupdates.py msgid "Commit changes" msgstr "Прийняти зміни" #: ../fdroidserver/common.py #, python-brace-format msgid "Could not find '{command}' on your system" msgstr "Не вдалося знайти '{command}' у вашій системі" #: ../fdroidserver/update.py #, python-brace-format msgid "Could not find {path} to remove it" msgstr "" #: ../fdroidserver/update.py msgid "Could not open apk file for analysis" msgstr "Не вдалося відкрити файл apk для аналізу" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/import.py msgid "Couldn't find latest version code" msgstr "Не вдається знайти останню версію коду" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vname #: ../fdroidserver/import.py msgid "Couldn't find latest version name" msgstr "Не вдається знайти найновішу назву версії" #: ../fdroidserver/import.py msgid "Couldn't find package ID" msgstr "Не вдається знайти ідентифікатор пакета" #: ../fdroidserver/update.py msgid "Cowardily refusing to overwrite existing signing key setup!" msgstr "" #: ../fdroidserver/update.py msgid "Create a repo signing key in a keystore" msgstr "Створіть ключ підписування репозиторію у сховищі ключів" #: ../fdroidserver/update.py msgid "Create skeleton metadata files that are missing" msgstr "Створення скелетів файлів метаданих, які відсутні" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Created new container \"{name}\"" msgstr "Створено новий контейнер \"{name}\"" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Creating \"{path}\" for configuring s3cmd." msgstr "" #: ../fdroidserver/publish.py msgid "Creating log directory" msgstr "Створення каталогу журналу" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Creating new S3 bucket: {url}" msgstr "Створення нового блоку S3: {url}" #: ../fdroidserver/publish.py msgid "Creating output directory" msgstr "Створення вихідного каталогу" #: ../fdroidserver/index.py msgid "Creating signed index with this key (SHA256):" msgstr "Створення підписаного індексу за допомогою цієї клавіші (SHA256):" #: ../fdroidserver/import.py ../fdroidserver/verify.py #: ../fdroidserver/publish.py msgid "Creating temporary directory" msgstr "Створення тимчасового каталогу" #: ../fdroidserver/index.py msgid "Creating unsigned index in preparation for signing" msgstr "Створення непідписаного індексу під час підготовки до підписання" #: ../fdroidserver/nightly.py msgid "DEBUG_KEYSTORE is not set or the value is incomplete" msgstr "" #: ../fdroidserver/update.py msgid "Delete APKs and/or OBBs without metadata from the repo" msgstr "Видаліть APKs і/або OBBs без метаданих з репозиторію" #: ../fdroidserver/update.py #, python-brace-format msgid "Deleting unknown file: {path}" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Description '%s' is just the app's summary" msgstr "Опис '%s' є лише резюме застосунку" #: ../fdroidserver/lint.py msgid "Description has a duplicate line" msgstr "Опис містить дублікат рядка" #: ../fdroidserver/lint.py #, python-format msgid "Description has a list (%s) but it isn't bulleted (*) nor numbered (#)" msgstr "" "Опис містить список (%s) але не маркірований (*) і не пронумерований (#)" #: ../fdroidserver/lint.py #, python-brace-format msgid "Description of length {length} is over the {limit} char limit" msgstr "Довжина опису {length} перевищує ліміт {limit}" #: ../fdroidserver/mirror.py #, python-brace-format msgid "Do not include \"{path}\" in URL!" msgstr "" #: ../fdroidserver/init.py msgid "Do not prompt for Android SDK path, just fail" msgstr "Не точний шлях Android SDK, просто збій" #: ../fdroidserver/build.py msgid "Don't create a source tarball, useful when testing a build" msgstr "Не створюйте вихідний код, корисно під час тестування створення" #: ../fdroidserver/stats.py msgid "Don't do anything logs-related" msgstr "Не робіть нічого пов'язаного з журналами" #: ../fdroidserver/build.py msgid "" "Don't refresh the repository, useful when testing a build with no internet " "connection" msgstr "" "Не оновлюйте сховище, корисне під час тестування створення без підключення " "до Інтернету" #: ../fdroidserver/server.py ../fdroidserver/nightly.py #: ../fdroidserver/upload.py msgid "Don't use rsync checksums" msgstr "Не використовуйте контрольні суми rsync" #: ../fdroid msgid "Download complete mirrors of small repos" msgstr "" #: ../fdroidserver/stats.py msgid "Download logs we don't have" msgstr "Журналів завантаження у нас немає" #: ../fdroidserver/common.py msgid "Downloading the repository already failed once, not trying again." msgstr "" "Завантаження репозиторія вже не відбулося один раз, не намагайтеся знову." #: ../fdroidserver/verify.py #, python-brace-format msgid "Downloading {url} failed. {error}" msgstr "Завантаження {url} не вдалося. {error}" #: ../fdroidserver/metadata.py #, python-brace-format msgid "" "Duplicate build recipe found for versionCode {versionCode} in {linedesc}" msgstr "" #: ../fdroidserver/lint.py #, python-brace-format msgid "Duplicate link in '{field}': {url}" msgstr "Дублікат посилання в '{field}': {url}" #: ../fdroid msgid "Dynamically scan APKs post build" msgstr "Динамічне сканування створення APKs допису" #: ../fdroidserver/mirror.py msgid "" "ERROR: this command should never be used to mirror f-droid.org!\n" "A full mirror of f-droid.org requires more than 200GB." msgstr "" #: ../fdroidserver/nightly.py msgid "ERROR: unsupported CI type, patches welcome!" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Empty build flag at {linedesc}" msgstr "" #: ../fdroidserver/init.py #, python-format msgid "" "Enter the path to the Android SDK (%s) here:\n" "> " msgstr "" "Введіть шлях до Android SDK (%s) тут:\n" "> " #: ../fdroidserver/server.py ../fdroidserver/checkupdates.py #: ../fdroidserver/upload.py #, fuzzy, python-format msgid "Error while attempting to publish log: %s" msgstr "Помилка при отриманні адреси репозиторія" #: ../fdroidserver/import.py msgid "Error while getting repo address" msgstr "Помилка при отриманні адреси репозиторія" #: ../fdroid msgid "Extract signatures from APKs" msgstr "Екстракт підписів з APK" #: ../fdroidserver/signatures.py #, python-brace-format msgid "Failed fetching signatures for '{apkfilename}': {error}" msgstr "Не вдалося завантажити підписи для '{apkfilename}': {error}" #: ../fdroidserver/update.py #, python-brace-format msgid "Failed reading {path}: {error}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Failed resizing {path}: {error}" msgstr "" #: ../fdroidserver/publish.py #, fuzzy msgid "Failed to align application" msgstr "Створіть всі доступні застосунки" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Failed to create S3 bucket: {url}" msgstr "Не вдалося створити сигмент S3: {url}" #: ../fdroidserver/common.py msgid "Failed to get APK manifest information" msgstr "Не вдалося отримати інформацію про APK" #: ../fdroidserver/update.py #, python-brace-format msgid "Failed to get apk information, deleting {path}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Failed to get apk information, skipping {path}" msgstr "" #: ../fdroidserver/install.py #, python-brace-format msgid "Failed to install '{apkfilename}' on {dev}: {error}" msgstr "Не вдалося встановити '{apkfilename}' в {dev}: {error}" #: ../fdroidserver/publish.py ../fdroidserver/common.py msgid "Failed to sign application" msgstr "Не вдалося підписати застосунок" #: ../fdroidserver/common.py #, fuzzy msgid "Failed to zipalign application" msgstr "Створіть всі доступні застосунки" #: ../fdroidserver/build.py #, python-brace-format msgid "Fetched buildserverid from VM: {buildserverid}" msgstr "" #: ../fdroidserver/signatures.py #, python-brace-format msgid "Fetched signatures for '{apkfilename}' -> '{sigdir}'" msgstr "Отримані підписи для '{apkfilename}' -> '{sigdir}'" #: ../fdroidserver/verify.py ../fdroidserver/stats.py ../fdroidserver/update.py #: ../fdroidserver/rewritemeta.py ../fdroidserver/build.py #: ../fdroidserver/checkupdates.py ../fdroidserver/scanner.py #: ../fdroidserver/install.py msgid "Finished" msgstr "Готово" #: ../fdroidserver/lint.py #, fuzzy msgid "Flattr donation methods belong in the FlattrID flag" msgstr "Методи донорства Flattr належать до прапора FlattrID" #: ../fdroidserver/lint.py msgid "Forbidden HTML tags" msgstr "" #: ../fdroidserver/build.py msgid "" "Force build of disabled apps, and carries on regardless of scan problems. " "Only allowed in test mode." msgstr "" "Примусити створювати інвалідні додатки, і здійснювати розміщення незалежно " "від проблем сканування. Лише дозволено в тестовому режимі." #: ../fdroidserver/build.py #, python-brace-format msgid "Force halting build after {0} sec timeout!" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Found \"{path}\" graphic without metadata for app \"{name}\"!" msgstr "" #: ../fdroidserver/common.py msgid "Found invalid appids in arguments" msgstr "Знайдено недійсні прикладні програми в аргументах" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/common.py msgid "Found invalid versionCodes for some apps" msgstr "Знайдено недійсні версії коду для деяких застосунків" #: ../fdroidserver/metadata.py #, fuzzy, python-brace-format msgid "Found multiple metadata files for {appid}" msgstr "Створення скелетів файлів метаданих, які відсутні" #: ../fdroidserver/index.py msgid "Found multiple signing certificates for repository." msgstr "Знайдено кілька сертифікатів підписування для репозиторію." #: ../fdroidserver/update.py #, python-brace-format msgid "Found multiple signing certificates in {path}" msgstr "" #: ../fdroidserver/index.py msgid "Found no signing certificates for repository." msgstr "Не знайдено сертифікатів підписування для репозиторію." #: ../fdroidserver/lint.py #, python-format msgid "Found non-file at %s" msgstr "Знайдено не файл у %s" #: ../fdroidserver/update.py #, fuzzy, python-brace-format msgid "Generated skeleton metadata for {appid}" msgstr "Створення скелетів файлів метаданих, які відсутні" #: ../fdroidserver/common.py #, python-format msgid "Git checkout of '%s' failed" msgstr "Помилка перевірки Git '%s'" #: ../fdroidserver/common.py msgid "Git clean failed" msgstr "Очистити Git невдалося" #: ../fdroidserver/common.py msgid "Git fetch failed" msgstr "Git вибірка не вдалася" #: ../fdroidserver/common.py msgid "Git remote set-head failed" msgstr "Не вдалося встановити пульт дистанційного керування Git" #: ../fdroidserver/common.py msgid "Git reset failed" msgstr "Скидання Git не вдалося" #: ../fdroidserver/common.py #, fuzzy msgid "Git submodule sync failed" msgstr "Не вдалося синхронізувати підмодуль Git" #: ../fdroidserver/common.py #, fuzzy msgid "Git submodule update failed" msgstr "Не вдалося оновити підмодуль Git" #: ../fdroidserver/common.py msgid "HTTPS must be used with Subversion URLs!" msgstr "" #: ../fdroidserver/index.py msgid "Ignoring package without metadata: " msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Ignoring stale cache data for {apkfilename}" msgstr "" #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Ignoring {ext} file at '{path}'" msgstr "" #: ../fdroidserver/update.py msgid "Include APKs that are signed with disabled algorithms like MD5" msgstr "" #: ../fdroidserver/common.py msgid "Initialising submodules" msgstr "" #: ../fdroidserver/install.py msgid "Install all signed applications available" msgstr "Встановити всі доступні підписані застосунки" #: ../fdroid msgid "Install built packages on devices" msgstr "Встановити побудовані пакети на пристрої" #: ../fdroidserver/install.py #, python-format msgid "Installing %s..." msgstr "" #: ../fdroidserver/install.py #, python-brace-format msgid "Installing '{apkfilename}' on {dev}..." msgstr "" #: ../fdroid msgid "Interact with the repo HTTP server" msgstr "Взаємодія з HTTP-сервером репозиторію" #: ../fdroidserver/update.py msgid "Interactively ask about things that need updating." msgstr "Інтерактивно запитайте про речі, які потребують оновлення." #: ../fdroidserver/update.py msgid "Invalid APK" msgstr "" #: ../fdroidserver/metadata.py #, python-format msgid "Invalid boolean '%s'" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Invalid build flag at {line} in {linedesc}" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Invalid build format: {value} in {name}" msgstr "" #: ../fdroidserver/lint.py msgid "Invalid bulleted list" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "" "Invalid license tag \"%s\"! Use only tags from https://spdx.org/license-list" msgstr "" #: ../fdroidserver/lint.py msgid "Invalid link - use [http://foo.bar Link title] or [http://foo.bar]" msgstr "" #: ../fdroidserver/metadata.py #, python-format msgid "Invalid metadata in %s:%d" msgstr "" #: ../fdroidserver/metadata.py msgid "Invalid metadata in: " msgstr "" #: ../fdroidserver/common.py #, python-format msgid "Invalid name for published file: %s" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Invalid package name {0}" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Invalid versionCode: \"{versionCode}\" is not an integer!" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "JAR signature failed to verify: {path}" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "JAR signature verified: {path}" msgstr "" #: ../fdroidserver/publish.py ../fdroidserver/update.py #: ../fdroidserver/mirror.py msgid "Java JDK not found! Install in standard location or set java_paths!" msgstr "" #: ../fdroidserver/signindex.py msgid "" "Java jarsigner not found! Install in standard location or set java_paths!" msgstr "" #: ../fdroidserver/lint.py msgid "Javascript in HTML src attributes" msgstr "" #: ../fdroidserver/init.py #, fuzzy msgid "Keystore for signing key:\t" msgstr "Шлях до сховища ключа для підписного ключа репозиторія" #: ../fdroidserver/lint.py #, python-brace-format msgid "" "Last used commit '{commit}' looks like a tag, but Update Check Mode is " "'{ucm}'" msgstr "" #: ../fdroidserver/lint.py #, fuzzy msgid "Liberapay donation methods belong in the LiberapayID flag" msgstr "Методи донорства Flattr належать до прапора FlattrID" #: ../fdroidserver/rewritemeta.py msgid "List files that would be reformatted" msgstr "Список файлів, які будуть переформатовані" #: ../fdroidserver/build.py msgid "Make the build stop on exceptions" msgstr "Зробити зупинку створення за винятками" #: ../fdroidserver/index.py msgid "Malformed repository mirrors." msgstr "" #: ../fdroidserver/server.py msgid "Malformed serverwebroot line:" msgstr "" #: ../fdroidserver/gpgsign.py msgid "Missing output directory" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Name '%s' is just the auto name - remove it" msgstr "" #: ../fdroidserver/common.py msgid "No 'config.py' found, using defaults." msgstr "" #: ../fdroidserver/common.py msgid "No Android SDK found!" msgstr "" #: ../fdroidserver/import.py msgid "No android or kivy project could be found. Specify --subdir?" msgstr "" #: ../fdroidserver/install.py msgid "No attached devices found" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "No commit specified for {versionName} in {linedesc}" msgstr "" #: ../fdroidserver/index.py msgid "No fingerprint in URL." msgstr "" #: ../fdroidserver/common.py msgid "No git submodules available" msgstr "" #: ../fdroidserver/import.py msgid "No information found." msgstr "" #: ../fdroidserver/lint.py msgid "No need to specify that the app is Free Software" msgstr "" #: ../fdroidserver/lint.py msgid "No need to specify that the app is for Android" msgstr "" #: ../fdroidserver/server.py msgid "No option set! Edit your config.py to set at least one of these:" msgstr "" #: ../fdroidserver/common.py msgid "No packages specified" msgstr "" #: ../fdroidserver/install.py #, python-format msgid "No signed apk available for %s" msgstr "" #: ../fdroidserver/install.py msgid "No signed output directory - nothing to do" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "No signing certificates found in {path}" msgstr "" #: ../fdroidserver/common.py #, python-format msgid "No such package: %s" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/common.py #, python-brace-format msgid "No such versionCode {versionCode} for app {appid}" msgstr "" #: ../fdroidserver/verify.py ../fdroidserver/publish.py msgid "No unsigned directory - nothing to do" msgstr "" #: ../fdroidserver/signindex.py msgid "Nothing to do" msgstr "" #: ../fdroidserver/checkupdates.py #, python-brace-format msgid "Nothing to do for {appid}." msgstr "" #: ../fdroidserver/init.py #, fuzzy msgid "Now set these in config.py:" msgstr "'sdk_path' не встановлено в 'config.py'!" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/update.py #, python-brace-format msgid "OBB file has newer versionCode({integer}) than any APK:" msgstr "" #: ../fdroidserver/update.py msgid "OBB filename must start with \"main.\" or \"patch.\":" msgstr "" #: ../fdroidserver/update.py msgid "OBB's packagename does not match a supported APK:" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Old APK signature failed to verify: {path}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Only PNG and JPEG are supported for graphics, found: {path}" msgstr "" #: ../fdroidserver/checkupdates.py msgid "Only print differences with the Play Store" msgstr "Друкувати відмінності тільки з Play Store" #: ../fdroidserver/checkupdates.py msgid "Only process apps with auto-updates" msgstr "Обробляти застосунки лише за допомогою автоматичних оновлень" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "Options" msgstr "Параметри" #: ../fdroidserver/import.py msgid "Overall license of the project." msgstr "Загальна ліцензія проекту." #: ../fdroidserver/dscanner.py msgid "Override path for repo APKs (default: ./repo)" msgstr "Перевизначити шлях для репозиторію APKs (default: ./repo)" #: ../fdroidserver/common.py #, python-brace-format msgid "Parsing manifest at '{path}'" msgstr "" #: ../fdroidserver/common.py msgid "Password required with username" msgstr "" #: ../fdroidserver/import.py #, fuzzy msgid "Path to main Android project subdirectory, if not in root." msgstr "Шлях до основного підкаталогу андроїда, якщо не в кореневому каталозі." msgid "Path to main android project subdirectory, if not in root." msgstr "Шлях до основного підкаталогу андроїда, якщо не в кореневому каталозі." #: ../fdroidserver/init.py msgid "Path to the Android SDK (sometimes set in ANDROID_HOME)" msgstr "Шлях до Android SDK (іноді встановлено в ANDROID_HOME)" #: ../fdroidserver/btlog.py msgid "Path to the git repo to use as the log" msgstr "Шлях до git репозиторію для використання в якості входу" #: ../fdroidserver/init.py msgid "Path to the keystore for the repo signing key" msgstr "Шлях до сховища ключа для підписного ключа репозиторія" #: ../fdroidserver/dscanner.py #, fuzzy msgid "Prepare Drozer to run a scan" msgstr "Підготувати drozer для запуску сканування" msgid "Prepare drozer to run a scan" msgstr "Підготувати drozer для запуску сканування" #: ../fdroidserver/nightly.py msgid "Print the secret variable to the terminal for easy copy/paste" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Problem with description of {appid}: {error}" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Problem with xml at '{path}'" msgstr "" #: ../fdroidserver/checkupdates.py msgid "Process auto-updates" msgstr "Процес автоматичних оновлень" #: ../fdroidserver/publish.py ../fdroidserver/update.py #, python-brace-format msgid "Processing {apkfilename}" msgstr "" #: ../fdroidserver/checkupdates.py ../fdroidserver/scanner.py #, python-brace-format msgid "Processing {appid}" msgstr "" #: ../fdroidserver/update.py #, fuzzy msgid "Produce human-readable XML/JSON for index files" msgstr "Створити зручний для сприйняття index.xml" #: ../fdroidserver/update.py msgid "Produce human-readable index.xml" msgstr "Створити зручний для сприйняття index.xml" #: ../fdroidserver/import.py msgid "Project URL to import from." msgstr "URL-адреса проекту для імпорту." #: ../fdroidserver/lint.py msgid "Punctuation should be avoided" msgstr "" #: ../fdroidserver/btlog.py msgid "Push the log to this git remote repository" msgstr "Натисніть вхід цього віддаленого сховища git" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, fuzzy, python-brace-format msgid "Pushing binary transparency log to {url}" msgstr "Оновити бінарний журнал прозорості для URL-адреси" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Pushing to {url}" msgstr "" #: ../fdroid msgid "Quickly start a new repository" msgstr "Швидкий запуск нового сховища" #: ../fdroid msgid "Read all the metadata files and exit" msgstr "Прочитайте всі файли метаданих і вийдіть" #: ../fdroidserver/common.py #, python-brace-format msgid "Reading '{config_file}'" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Reading minSdkVersion failed: \"{apkfilename}\"" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #. https://developer.android.com/guide/topics/manifest/manifest-element.html#vname #: ../fdroidserver/common.py #, python-brace-format msgid "" "Reading packageName/versionCode/versionName failed, APK invalid: " "'{apkfilename}'" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Reading {apkfilename} from cache" msgstr "" #: ../fdroidserver/stats.py msgid "" "Recalculate aggregate stats - use when changes have been made that would " "invalidate old cached data." msgstr "" "Перерахуйте сукупну статистику - використовуйте, коли були внесені зміни, " "які призведуть до втрати старих кешованих даних." #: ../fdroidserver/common.py msgid "Removing specified files" msgstr "" #: ../fdroidserver/update.py msgid "Rename APK files that do not match package.name_123.apk" msgstr "Перейменування файлів APK, які не відповідають package.name_123.apk" #: ../fdroidserver/update.py msgid "Report on build data status" msgstr "Звіт про статус створення даних" #: ../fdroidserver/build.py msgid "" "Reset and create a brand new build server, even if the existing one appears " "to be ok." msgstr "" "Перезавантажте та створіть новий сервер створення, навіть якщо наявний існує." #: ../fdroidserver/nightly.py #, python-brace-format msgid "Resigning {apkfilename} with provided debug.keystore" msgstr "" #: ../fdroidserver/update.py msgid "Resize all the icons exceeding the max pixel size and exit" msgstr "" "Змінити розмір усіх значків, що перевищують максимальний розмір пікселя та " "вийти" #: ../fdroidserver/common.py msgid "Restrict output to warnings and errors" msgstr "Обмеження виводу на попередження і помилки" #: ../fdroid msgid "Rewrite all the metadata files" msgstr "Перепишіть усі файли метаданих" #: ../fdroidserver/rewritemeta.py msgid "Rewrite to a specific format: " msgstr "Переписати в певний формат: " #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Rewriting '{appid}'" msgstr "" #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Rewriting '{appid}' to '{path}'" msgstr "" #: ../fdroidserver/lint.py #, fuzzy msgid "Run rewritemeta to fix formatting" msgstr "Переписати в певний формат: " #: ../fdroidserver/server.py ../fdroidserver/upload.py msgid "Running first pass with MD5 checking disabled" msgstr "" #: ../fdroidserver/mirror.py #, python-brace-format msgid "Running wget in {path}" msgstr "" #: ../fdroidserver/dscanner.py msgid "Scan only the latest version of each package" msgstr "Сканувати лише останню версію кожного пакета" #: ../fdroid msgid "Scan the source code of a package" msgstr "Сканування вихідного коду пакета" #: ../fdroidserver/scanner.py #, python-brace-format msgid "Scanner found {count} problems in {appid}:" msgstr "" #: ../fdroidserver/scanner.py #, python-brace-format msgid "Scanner found {count} problems in {appid}:{versionCode}:" msgstr "" #: ../fdroidserver/build.py msgid "Scanner found {} problem" msgid_plural "Scanner found {} problems" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: ../fdroidserver/common.py msgid "Set clock to that time using:" msgstr "" #: ../fdroidserver/build.py #, python-brace-format msgid "Set open file limit to {integer}" msgstr "" #: ../fdroid msgid "Set up an app build for a nightly build repo" msgstr "" #: ../fdroidserver/build.py msgid "Setting open file limit failed: " msgstr "" #: ../fdroidserver/build.py #, python-brace-format msgid "Setting {0} sec timeout for this build" msgstr "" #: ../fdroidserver/build.py #, fuzzy msgid "Setup an emulator, install the APK on it and perform a Drozer scan" msgstr "" "Налаштуйте емулятор, встановіть apk на нього та виконайте drozer сканування" msgid "Setup an emulator, install the apk on it and perform a drozer scan" msgstr "" "Налаштуйте емулятор, встановіть apk на нього та виконайте drozer сканування" #: ../fdroid msgid "Sign and place packages in the repo" msgstr "Записати та розмістити пакети в репозиторії" #: ../fdroid msgid "Sign indexes created using update --nosign" msgstr "Запис індексів, створених за допомогою update --nosign" #: ../fdroidserver/build.py msgid "Skip scanning the source code for binaries and other problems" msgstr "" "Пропустити сканування вихідного коду для двійкових файлів та інших проблем" #: ../fdroidserver/update.py #, python-brace-format msgid "Skipping '{apkfilename}' with invalid signature!" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Skipping index generation for {appid}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Skipping {apkfilename} with invalid signature!" msgstr "" #: ../fdroidserver/scanner.py #, python-brace-format msgid "Skipping {appid}: disabled" msgstr "" #: ../fdroidserver/scanner.py #, python-brace-format msgid "Skipping {appid}: no builds specified" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py msgid "Specify a local folder to sync the repo to" msgstr "Вкажіть локальну папку, щоб синхронізувати репозиторій в" #: ../fdroidserver/server.py ../fdroidserver/upload.py msgid "Specify an identity file to provide to SSH for rsyncing" msgstr "Вкажіть файл ідентифікатора для надання SSH для rsyncing" #: ../fdroidserver/update.py #, fuzzy msgid "Specify editor to use in interactive mode. Default " msgstr "" "Вкажіть редактор для використання в інтерактивному режимі. За замовчуванням " "%s" #, c-format msgid "Specify editor to use in interactive mode. Default %s" msgstr "" "Вкажіть редактор для використання в інтерактивному режимі. За замовчуванням " "%s" #: ../fdroidserver/update.py #, fuzzy, python-brace-format msgid "Specify editor to use in interactive mode. Default is {path}" msgstr "" "Вкажіть редактор для використання в інтерактивному режимі. За замовчуванням " "%s" #: ../fdroidserver/build.py msgid "Specify that we're running on the build server" msgstr "Вкажіть, що ми працюємо на сервері створення" #: ../fdroidserver/nightly.py msgid "Specify which debug keystore file to use." msgstr "" #: ../fdroidserver/common.py msgid "Spew out even more information than normal" msgstr "Випишіть ще більше інформації, ніж звичайно" #: ../fdroidserver/nightly.py #, fuzzy, python-brace-format msgid "Striping mystery signature from {apkfilename}" msgstr "Не вдалося завантажити підписи для '{apkfilename}': {error}" #: ../fdroidserver/lint.py #, python-format msgid "Summary '%s' is just the app's name" msgstr "" #: ../fdroidserver/lint.py #, python-brace-format msgid "Summary of length {length} is over the {limit} char limit" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "System clock is older than date in {path}!" msgstr "" #: ../fdroidserver/build.py msgid "" "Test mode - put output in the tmp directory only, and always build, even if " "the output already exists." msgstr "" "Режим тесту - надсилайте випуск тільки в каталог tmp, і завжди створюйте, " "навіть якщо випуск вже існує." #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/update.py #, python-brace-format msgid "The OBB version code must come after \"{name}.\":" msgstr "" #: ../fdroidserver/btlog.py msgid "The base URL for the repo to log (default: https://f-droid.org)" msgstr "" "Базова URL-адреса для входу в репозиторій (за замовчуванням: https://f-droid." "org)" #: ../fdroidserver/mirror.py msgid "The directory to write the mirror to" msgstr "" #: ../fdroidserver/server.py #, fuzzy msgid "The only commands currently supported are 'init' and 'update'" msgstr "команда виконати, 'init' або 'update'" #: ../fdroidserver/index.py msgid "The repository's fingerprint does not match." msgstr "" #: ../fdroidserver/common.py msgid "The repository's index could not be verified." msgstr "" #: ../fdroidserver/server.py #, python-brace-format msgid "The root dir for local_copy_dir \"{path}\" does not exist!" msgstr "" #: ../fdroidserver/nightly.py msgid "The the file to be included in the repo (path or glob)" msgstr "" #: ../fdroidserver/publish.py msgid "There is a keyalias collision - publishing halted" msgstr "" #: ../fdroidserver/import.py #, python-format msgid "This repo already has local metadata: %s" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py msgid "" "To use awsbucket, awssecretkey and awsaccesskeyid must also be set in config." "py!" msgstr "" #: ../fdroidserver/lint.py msgid "UCM is set but it looks like checkupdates hasn't been run yet" msgstr "" #: ../fdroidserver/lint.py msgid "URL shorteners should not be used" msgstr "" #: ../fdroidserver/metadata.py msgid "URL title is just the URL, use brackets: [URL]" msgstr "" #: ../fdroidserver/lint.py #, python-brace-format msgid "URL {url} in Description: {error}" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Unexpected text on same line as {field} in {linedesc}" msgstr "" #: ../fdroid msgid "Unknown exception found!" msgstr "Виявлено невідому виняткову ситуацію!" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vname #: ../fdroidserver/lint.py #, python-brace-format msgid "Unknown file '{filename}' in build '{versionName}'" msgstr "" #: ../fdroidserver/metadata.py #, python-format msgid "Unknown metadata format: %s" msgstr "" #: ../fdroidserver/metadata.py #, fuzzy, python-brace-format msgid "Unknown metadata format: {path}" msgstr "Створення скелетів файлів метаданих, які відсутні" #: ../fdroidserver/common.py msgid "Unknown version of aapt, might cause problems: " msgstr "" #: ../fdroidserver/lint.py msgid "Unlinkified link - use [http://foo.bar Link title] or [http://foo.bar]" msgstr "" #: ../fdroidserver/lint.py msgid "Unnecessary leading space" msgstr "" #: ../fdroidserver/lint.py msgid "Unnecessary trailing space" msgstr "" #: ../fdroidserver/metadata.py msgid "Unrecognised app field: " msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Unrecognised field '{field}' in {linedesc}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Unsupported file type \"{extension}\" for repo graphic" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Unsupported graphics file found: {path}" msgstr "" #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Unsupported metadata format, use: --to [{supported}]" msgstr "" #: ../fdroidserver/metadata.py msgid "Unterminated ]" msgstr "" #: ../fdroidserver/metadata.py msgid "Unterminated ]]" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Unterminated build in {name}" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Unterminated continuation in {name}" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Unused extlib at %s" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Unused file at %s" msgstr "" #: ../fdroidserver/lint.py msgid "Update Check Name is set to the known app id - it can be removed" msgstr "" #: ../fdroid msgid "Update repo information for new packages" msgstr "Оновіть інформацію репозиторю для нових пакетів" #: ../fdroid msgid "Update the binary transparency log for a URL" msgstr "Оновити бінарний журнал прозорості для URL-адреси" #: ../fdroid msgid "Update the stats of the repo" msgstr "Оновити статистику репозиторію" #: ../fdroidserver/update.py ../fdroidserver/build.py msgid "Update the wiki" msgstr "Оновити вікі" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "Usage" msgstr "Використання" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "Usage: %s\n" msgstr "Використання: %s\n" #: ../fdroidserver/lint.py msgid "Use /HEAD instead of /master to point at a file in the default branch" msgstr "" #: ../fdroidserver/update.py msgid "Use `fdroid update -c` to create it." msgstr "" #: ../fdroidserver/build.py msgid "Use build server" msgstr "Використовуйте сервер створення" #: ../fdroidserver/update.py #, fuzzy msgid "Use date from APK instead of current time for newly added APKs" msgstr "" "Використовуйте дату з apk, замість поточного часу для нових доданих apks" msgid "Use date from apk instead of current time for newly added apks" msgstr "" "Використовуйте дату з apk, замість поточного часу для нових доданих apks" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Using \"{path}\" for configuring s3cmd." msgstr "" #: ../fdroidserver/common.py msgid "" "Using Java's jarsigner, not recommended for verifying APKs! Use apksigner" msgstr "" #: ../fdroidserver/init.py #, python-brace-format msgid "Using existing keystore \"{path}\"" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Using s3cmd to sync with: {url}" msgstr "" #: ../fdroid msgid "Valid commands are:" msgstr "Дійсні команди:" #: ../fdroid msgid "Verify the integrity of downloaded packages" msgstr "Перевірте цілісність завантажених пакетів" #: ../fdroidserver/index.py msgid "Verifying index signature:" msgstr "" #: ../fdroid msgid "Warn about possible metadata errors" msgstr "Попереджати про можливі помилки метаданих" #: ../fdroidserver/update.py msgid "" "When configured for signed indexes, create only unsigned indexes at this " "stage" msgstr "" "Коли налаштовано для підписаних індексів, на цьому етапі створюйте лише " "непідписані індекси" msgid "X.509 'Distiguished Name' used when generating keys" msgstr "X.509 'Distiguished Name' використовується при створенні ключів" #: ../fdroidserver/init.py #, fuzzy msgid "X.509 'Distinguished Name' used when generating keys" msgstr "X.509 'Distiguished Name' використовується при створенні ключів" #: ../fdroidserver/common.py msgid "You can use ANDROID_HOME to set the path to your SDK, i.e.:" msgstr "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "adding IdentityFile to {path}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "adding to {name}: {path}" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "ambiguous option: %(option)s could match %(matches)s" msgstr "неоднозначний параметр: %(option)s може відповідати %(matches)s" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "ambiguous option: %s (%s?)" msgstr "неоднозначний параметр: %s (%s?)" #: ../fdroidserver/lint.py ../fdroidserver/rewritemeta.py #, fuzzy msgid "applicationId in the form APPID" msgstr "app-id у формі APPID" #: ../fdroidserver/checkupdates.py #, fuzzy msgid "applicationId to check for updates" msgstr "app-id для перевірки наявність оновлень" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/verify.py ../fdroidserver/publish.py #: ../fdroidserver/dscanner.py ../fdroidserver/build.py #: ../fdroidserver/scanner.py ../fdroidserver/install.py #, fuzzy msgid "applicationId with optional versionCode in the form APPID[:VERCODE]" msgstr "app-id з необов'язковою версією коду у формі APPID[:VERCODE]" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "argument \"-\" with mode %r" msgstr "" #: ../fdroidserver/nightly.py msgid "attempting bare ssh connection to test deploy key:" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "can't open '%s': %s" msgstr "не може відкрити '%s': %s" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "cannot have multiple subparser arguments" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "cannot merge actions - two groups are named %r" msgstr "" #: ../fdroidserver/nightly.py msgid "cannot publish update, did you set the deploy key?" msgstr "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "cloning {url}" msgstr "" #: ../fdroidserver/server.py msgid "command to execute, either 'init' or 'update'" msgstr "команда виконати, 'init' або 'update'" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "complex" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "conflicting option string: %s" msgid_plural "conflicting option strings: %s" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "copying {apkfilename} into {path}" msgstr "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "created {path}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "deleting: repo/{apkfilename}" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "dest= is required for options like %r" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "expected %s argument" msgid_plural "expected %s arguments" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "expected at least one argument" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "expected at most one argument" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "expected one argument" msgstr "" #: ../fdroid #, fuzzy msgid "fdroid [-h|--help|--version] []" msgstr "використання: fdroid [-h|--help|--version] <команда> [<аргументи>]" #: ../fdroid #, fuzzy msgid "fdroid [] [-h|--help|--version|]" msgstr "використання: fdroid [-h|--help|--version] <команда> [<аргументи>]" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "floating-point" msgstr "" #: ../fdroidserver/metadata.py msgid "force errors to be warnings, or ignore" msgstr "примусити попереджувати помилки, або ігнорувати" #: ../fdroidserver/metadata.py #, fuzzy msgid "force metadata errors (default) to be warnings, or to be ignored." msgstr "примусити попереджувати помилки, або ігнорувати" #: ../fdroidserver/common.py #, fuzzy msgid "git svn clone failed" msgstr "Очистити Git невдалося" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "ignored explicit argument %r" msgstr "" #: ../fdroidserver/index.py msgid "index-v1 must have a signature, use `fdroid signindex` to create it!" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "integer" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "invalid %(type)s value: %(value)r" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "invalid choice: %(value)r (choose from %(choices)s)" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "invalid conflict_resolution value: %r" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "" "invalid option string %(option)r: must start with a character " "%(prefix_chars)r" msgstr "" #: ../fdroidserver/server.py #, python-brace-format msgid "" "local_copy_dir does not end with \"fdroid\", perhaps you meant: \"{path}\"" msgstr "" #: ../fdroidserver/server.py msgid "local_copy_dir must be an absolute path!" msgstr "" #: ../fdroidserver/server.py msgid "local_copy_dir must be directory, not a file!" msgstr "" #: ../fdroidserver/index.py #, python-format msgid "mirror '%s' does not end with 'fdroid'!" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "mutually exclusive arguments must be optional" msgstr "" #: ../fdroidserver/mirror.py #, python-brace-format msgid "no \"icon\" in {appid}" msgstr "" #: ../fdroidserver/signatures.py msgid "no APK supplied" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "no such option: %s" msgstr "такого параметру немає: %s" #: ../fdroid #, fuzzy msgid "no version info found!" msgstr "Виявлено невідому виняткову ситуацію!" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "not allowed with argument %s" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "one of the arguments %s is required" msgstr "" #: ../fdroidserver/index.py ../fdroidserver/common.py msgid "only accepts strings, lists, and tuples" msgstr "" #: ../fdroidserver/install.py #, python-format msgid "option %s: If you really want to install all the signed apps, use --all" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "option %s: invalid %s value: %r" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "option %s: invalid choice: %r (choose from %s)" msgstr "" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option -%s not recognized" msgstr "параметр -%s не визнано" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option -%s requires argument" msgstr "параметр -%s потрібен аргумент" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option --%s must not have an argument" msgstr "параметр --%s не має аргументу" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option --%s not a unique prefix" msgstr "параметр --%s не унікальний префікс" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option --%s not recognized" msgstr "параметр --%s не визнано" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option --%s requires argument" msgstr "параметр --%s потрібен аргумент" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "optional arguments" msgstr "необов'язкові аргументи" #: ../fdroidserver/nightly.py #, python-brace-format msgid "overwriting existing {path}" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "positional arguments" msgstr "позиційні аргументи" #: ../fdroidserver/signatures.py #, python-brace-format msgid "" "refuse downloading via insecure HTTP connection (use HTTPS or specify --no-" "https-check): {apkfilename}" msgstr "" #: ../fdroidserver/signatures.py #, python-brace-format msgid "" "refuse downloading via insecure http connection (use https or specify --no-" "https-check): {apkfilename}" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "s3cmd sync indexes {path} to {url} and delete" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "show program's version number and exit" msgstr "показати номер версії програми та вийти" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.5/optparse.py #: /usr/lib/python3.6/argparse.py /usr/lib/python3.6/optparse.py msgid "show this help message and exit" msgstr "показати довідку та вийти" #: ../fdroidserver/signatures.py msgid "signed APK, either a file-path or HTTPS URL." msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "skipping source tarball: {path}" msgstr "" #: ../fdroidserver/lint.py msgid "srclibs missing name and/or @" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "the following arguments are required: %s" msgstr "такі аргументи зобов'язані: %s" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "unexpected option string: %s" msgstr "неочікуваний рядок параметрів: %s" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "unknown parser %(parser_name)r (choices: %(choices)s)" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "unrecognized arguments: %s" msgstr "нерозпізнані аргументи: %s" #: ../fdroidserver/common.py #, python-brace-format msgid "unsafe permissions on '{config_file}' (should be 0600)!" msgstr "небезпечні дозволи на '{config_file}' (should be 0600)!" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py ../fdroid msgid "usage: " msgstr "використання: " #: ../fdroid msgid "usage: fdroid [-h|--help|--version] []" msgstr "використання: fdroid [-h|--help|--version] <команда> [<аргументи>]" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "using Apache libcloud to sync with {url}" msgstr "" #: ../fdroidserver/publish.py #, python-brace-format msgid "{0} app, {1} key aliases" msgid_plural "{0} apps, {1} key aliases" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: ../fdroidserver/update.py #, python-brace-format msgid "{apkfilename} ({appid}) has no metadata!" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "{apkfilename} has multiple {name} files, looks like Master Key exploit!" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "{apkfilename}'s AndroidManifest.xml has a bad date: " msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "{appid} does not have a name! Using package name instead." msgstr "" #: ../fdroidserver/mirror.py #, python-brace-format msgid "{appid} is missing {name}" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vname #: ../fdroidserver/lint.py #, python-brace-format msgid "{appid}: Unknown extlib {path} in build '{versionName}'" msgstr "" #: ../fdroidserver/scanner.py #, python-brace-format msgid "{appid}: no builds specified, running on current source state" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "{field} not terminated in {name}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "{name} \"{path}\" does not exist! Correct it in config.py." msgstr "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "{path} does not exist! Create it by running:" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "{path} has bad file signature \"{pattern}\", possible Janus exploit!" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "{path} is zero size!" msgstr "" #: ../fdroidserver/mirror.py #, python-brace-format msgid "{url} does not end with \"fdroid\", check the URL path!" msgstr "" #: ../fdroidserver/build.py msgid "{} build failed" msgid_plural "{} builds failed" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: ../fdroidserver/build.py msgid "{} build succeeded" msgid_plural "{} builds succeeded" msgstr[0] "" msgstr[1] "" msgstr[2] "" #, fuzzy #~ msgid "Add PGP signatures for packages in repo using GnuPG" #~ msgstr "Додайте підписи gpg для пакетів у репозиторії" #~ msgid "Add gpg signatures for packages in repo" #~ msgstr "Додайте підписи gpg для пакетів у репозиторії" #~ msgid "Android Build Tools path '{path}' does not exist!" #~ msgstr "Шлях '{path}' до інструментів створення Android не існує!" #~ msgid "Clean update - don't uses caches, reprocess all apks" #~ msgstr "" #~ "Очистити оновлення - не використовує кеш, повторно обробляє всі apks" #~ msgid "app-id in the form APPID" #~ msgstr "app-id у формі APPID" #~ msgid "app-id to check for updates" #~ msgstr "app-id для перевірки наявність оновлень" #~ msgid "app-id with optional versionCode in the form APPID[:VERCODE]" #~ msgstr "app-id з необов'язковою версією коду у формі APPID[:VERCODE]" #~ msgid "app-id with optional versioncode in the form APPID[:VERCODE]" #~ msgstr "app-id з необов'язковим кодом версії у формі APPID[:VERCODE]" fdroidserver-1.0.9/locale/de/0000775000175000017500000000000013324115531015752 5ustar hanshans00000000000000fdroidserver-1.0.9/locale/de/LC_MESSAGES/0000775000175000017500000000000013324115531017537 5ustar hanshans00000000000000fdroidserver-1.0.9/locale/de/LC_MESSAGES/fdroidserver.mo0000664000175000017500000014206013324115526022601 0ustar hanshans00000000000000L|)}7$-+2+^9^#:Xjz!!"&';1c"AD.? On  E + !L!Fd!!!!3!*"*?":j""-"R"$F#6k#9##)#-$1K$}$*$$/$[%9t%5%% &C!&-e&[&*&V'%q' '''+'=(V(m(!(U(#)6$)%[)4)#))))*"1*$T*!y*!**;*'+/:+j+(++++-,/,2L,4,6,,* - 4-FU-=----:(.c.U..(./A7/!y/H/"/ 0v(0,00/0)1 E1f171111!2&82._2.2322 3.+34Z33333d3*E49p4!4(4)435-S5-55'5566*6E6V6p6(6#6+67>%7d7)|7!77&7"82#8 V8b8*w8'88J8B+9n99#9979&:::CY:I:!: ;N$;9s;$;!;;<0<+I<%u<<<<<3=<=S=o=0=.=@=&><>*[>'>>1>%> ?(?C?7_?1?1?*?;&@*b@#@@@-@A$A:DA:A7A&A-BGBdB=B,BB CC7C/JC zCCC*C(D)D:D$YD~D-DPD Ed6EE7EEUF4^F:F&FFG3GGG!gG-GG,G!G*H8HH2HH H,H I&AIBhIBI#I*J==J0{J%J.JK%K*BK7mK3K5K<L.LL){L*L-L#L9"M*\MfM/M?N$^N=N,N-N8O6UO1O(OPO=8P!vP.P!P5PQ28QkQQ/QFQR8RSR*lR4R'R4R)S8SHS#eSSS@S(S,TFTcTsT yTET$TT>U>?U%~UIU UV/V+CVoV#VNV3V41W;fWWW4WX)X"IXClXX2XX(Y.:Y2iY Y-YY<Y!Z?ZNZ%kZ*ZZZZ/[/?[o[&~[A[[[D\^\!f\3\%\N\F1](x]-]']-]%^:^J^]^t^#^'^G^%_.E_t__%___ `*`=`Y`fn`f`-i`i!j8jWjlj}j"j$j+j,k04k1ekAk*kDlMIl2ll-`mLm3mnX,nn%nGn3oO8o=o+o@oc3p(p>pHpHq,dq1q9q'qI%r*or8rsrWGsNs%s'tl2| q|@|D|=} V}9w})}Y}D5~(z~6~G~"e@!1.X)/M(*)T8 &4G:|+G(K4t'-у5C5GyF&6//f3ʅ6مm'C:ن(1=/o9.هA J-k$׈"!,#N0r 1ĉ&Ki62)0)EZ /Ћ*+UBQ4"W?q4 `fh!ώ/g!:(ď -N;k8L&I6pƑ:8>XwВ&2,An0-,*0D[:A۔9JW(7˕ ?(h#[ZZb@A%@!fN1ט '$Le4x*0ؙ% //*_$-7\; q+SGjD$Xi-$&<#S9w.8*7)b7:ğ&7&6^B2ؠo o{6F"Qi;(6 &W,~IRLHNV3;@o-/ޥ-M<2v04Ie:G02;cC4<,UeW/@8p&AЪ72j$;VBb,<Ȭ0F6 } ҭP@`1"Ӯ V0sHH,MTz0ϰ-.=E'a˱9-7gM"F.u*>ֳE/*u,=ʹJ V1bH!)2*\ ɶ/߶/ ?6JXڷ%Wv*;([Jk26% @F%κ'.8Zg"»32$P(u׼%~$~8"1[';".2!a9Cڿ7'6_<0KOPB:F3zE?M n>03 SSH Public Key to be used as Deploy Key: {path} encoded for the DEBUG_KEYSTORE secret variable:"%s/" has no matching metadata file!"{path}" contains outdated {name} ({version})"{path}" contains recent {name} ({version})"{path}" exists but s3cmd is not installed!"{path}" is not an accepted format, convert to: {formats}%(option)s option requires %(number)d argument%(option)s option requires %(number)d arguments%(prog)s [options] url%(prog)s: error: %(message)s %d problems found%prog [options]%r is not callable%s is not an accepted build field%s option does not take a value'keypass' not found in config.py!'keystore' not found in config.py!'keystorepass' not found in config.py!'repo_keyalias' not found in config.py!'required' is an invalid argument for positionals'sdk_path' not set in 'config.py'!'{aapt}' is too old, fdroid requires build-tools-23.0.0 or newer!'{aapt}' is too old, fdroid requires build-tools-{version} or newer!'{apkfilename}' is already installed on {dev}.'{field}' will be in random order! Use () or [] brackets if order is important!'{path}' failed to execute!'{value}' is not a valid {field} in {appid}. Regex pattern: {pattern}...checkupdate failed for {appid} : {error}.__call__() not defined.fdroid.txt is not supported! Convert to .fdroid.yml or .fdroid.json./issues is missingA URL is required as an argument!Add PGP signatures using GnuPG for packages in repoAdd a new application from its source codeAdd a repo signing key to an unsigned repoAdd skeleton metadata files for APKs that are missing themAdding new repo for only {name}Alias of the repo signing key in the keystoreAllows a different revision (or git branch) to be specified for the initial importAlso mirror the full archive sectionAlso warn about formatting issues, like rewritemeta -lAndroid SDK '{path}' does not have '{dirname}' installed!Android SDK not found!Android SDK path '{path}' does not exist!Android SDK path '{path}' is not a directory!Android build-tools path '{path}' does not exist!AndroidManifest.xml has no dateApp is in '{repo}' but has a link to {url}Appending .git is not necessaryArchiving {apkfilename} with invalid signature!Base URL to mirror, can include the index signing key using the query string: ?fingerprint=Branch '{branch}' used as commit in build '{versionName}'Branch '{branch}' used as commit in srclib '{srclib}'Build a package from sourceBuild all applications availableBuild generated by `fdroid import` - remove disable line once readyBuild only the latest version of each packageBuild should have comma-separated versionName and versionCode, not "{value}", in {linedesc}Built repo based in "%s" with this config:Can't build due to {} error while scanningCan't build due to {} errors while scanningCannot find a packageName for {path}!Cannot find an appid for {path}!Cannot read "{path}"!Cannot resolve app id {appid}Cannot use --list and --to at the same timeCannot write "{path}", not an accepted format, use: {formats}Categories are not setCategory '%s' is not validCheck for updates to applicationsChecking archiving for {appid} - apks:{integer}, keepversions:{keep}, archapks:{arch}Clean after all scans have finishedClean before the scans start and rebuild the containerClean up all containers and then exitClean update - don't uses caches, reprocess all APKsComma separated list of categories.Command '%s' not recognised. Commit changesCould not find '{command}' on your systemCould not find {path} to remove itCould not open apk file for analysisCouldn't find latest version codeCouldn't find latest version nameCouldn't find package IDCowardily refusing to overwrite existing signing key setup!Create a repo signing key in a keystoreCreate skeleton metadata files that are missingCreated new container "{name}"Creating "{path}" for configuring s3cmd.Creating log directoryCreating new S3 bucket: {url}Creating output directoryCreating signed index with this key (SHA256):Creating temporary directoryCreating unsigned index in preparation for signingDEBUG_KEYSTORE is not set or the value is incompleteDelete APKs and/or OBBs without metadata from the repoDeleting unknown file: {path}Description '%s' is just the app's summaryDescription has a duplicate lineDescription has a list (%s) but it isn't bulleted (*) nor numbered (#)Description of length {length} is over the {limit} char limitDo not include "{path}" in URL!Do not prompt for Android SDK path, just failDon't create a source tarball, useful when testing a buildDon't do anything logs-relatedDon't refresh the repository, useful when testing a build with no internet connectionDon't use rsync checksumsDownload complete mirrors of small reposDownload logs we don't haveDownloading the repository already failed once, not trying again.Downloading {url} failed. {error}Duplicate build recipe found for versionCode {versionCode} in {linedesc}Duplicate link in '{field}': {url}Dynamically scan APKs post buildERROR: this command should never be used to mirror f-droid.org! A full mirror of f-droid.org requires more than 200GB.ERROR: unsupported CI type, patches welcome!Empty build flag at {linedesc}Enter the path to the Android SDK (%s) here: > Error while attempting to publish log: %sError while getting repo addressExtract signatures from APKsFailed fetching signatures for '{apkfilename}': {error}Failed reading {path}: {error}Failed resizing {path}: {error}Failed to align applicationFailed to create S3 bucket: {url}Failed to get APK manifest informationFailed to get apk information, deleting {path}Failed to get apk information, skipping {path}Failed to install '{apkfilename}' on {dev}: {error}Failed to sign applicationFailed to zipalign applicationFetched buildserverid from VM: {buildserverid}Fetched signatures for '{apkfilename}' -> '{sigdir}'FinishedFlattr donation methods belong in the FlattrID flagForbidden HTML tagsForce build of disabled apps, and carries on regardless of scan problems. Only allowed in test mode.Force halting build after {0} sec timeout!Found "{path}" graphic without metadata for app "{name}"!Found invalid appids in argumentsFound invalid versionCodes for some appsFound multiple metadata files for {appid}Found multiple signing certificates for repository.Found multiple signing certificates in {path}Found no signing certificates for repository.Found non-file at %sGenerated skeleton metadata for {appid}Git checkout of '%s' failedGit clean failedGit fetch failedGit remote set-head failedGit reset failedGit submodule sync failedGit submodule update failedHTTPS must be used with Subversion URLs!Ignoring package without metadata: Ignoring stale cache data for {apkfilename}Ignoring {ext} file at '{path}'Include APKs that are signed with disabled algorithms like MD5Initialising submodulesInstall all signed applications availableInstall built packages on devicesInstalling %s...Installing '{apkfilename}' on {dev}...Interact with the repo HTTP serverInteractively ask about things that need updating.Invalid APKInvalid boolean '%s'Invalid build flag at {line} in {linedesc}Invalid build format: {value} in {name}Invalid bulleted listInvalid license tag "%s"! Use only tags from https://spdx.org/license-listInvalid link - use [http://foo.bar Link title] or [http://foo.bar]Invalid metadata in %s:%dInvalid metadata in: Invalid name for published file: %sInvalid package name {0}Invalid versionCode: "{versionCode}" is not an integer!JAR signature failed to verify: {path}JAR signature verified: {path}Java JDK not found! Install in standard location or set java_paths!Java jarsigner not found! Install in standard location or set java_paths!Javascript in HTML src attributesKeystore for signing key: Last used commit '{commit}' looks like a tag, but Update Check Mode is '{ucm}'Liberapay donation methods belong in the LiberapayID flagList files that would be reformattedMake the build stop on exceptionsMalformed repository mirrors.Malformed serverwebroot line:Missing output directoryName '%s' is just the auto name - remove itNo 'config.py' found, using defaults.No Android SDK found!No android or kivy project could be found. Specify --subdir?No attached devices foundNo commit specified for {versionName} in {linedesc}No fingerprint in URL.No git submodules availableNo information found.No need to specify that the app is Free SoftwareNo need to specify that the app is for AndroidNo option set! Edit your config.py to set at least one of these:No packages specifiedNo signed apk available for %sNo signed output directory - nothing to doNo signing certificates found in {path}No such package: %sNo such versionCode {versionCode} for app {appid}No unsigned directory - nothing to doNothing to doNothing to do for {appid}.Now set these in config.py:OBB file has newer versionCode({integer}) than any APK:OBB filename must start with "main." or "patch.":OBB's packagename does not match a supported APK:Old APK signature failed to verify: {path}Only PNG and JPEG are supported for graphics, found: {path}Only print differences with the Play StoreOnly process apps with auto-updatesOptionsOverall license of the project.Override path for repo APKs (default: ./repo)Parsing manifest at '{path}'Password required with usernamePath to main Android project subdirectory, if not in root.Path to main android project subdirectory, if not in root.Path to the Android SDK (sometimes set in ANDROID_HOME)Path to the git repo to use as the logPath to the keystore for the repo signing keyPrepare Drozer to run a scanPrepare drozer to run a scanPrint the secret variable to the terminal for easy copy/pasteProblem with description of {appid}: {error}Problem with xml at '{path}'Process auto-updatesProcessing {apkfilename}Processing {appid}Produce human-readable XML/JSON for index filesProduce human-readable index.xmlProject URL to import from.Punctuation should be avoidedPush the log to this git remote repositoryPushing binary transparency log to {url}Pushing to {url}Quickly start a new repositoryRead all the metadata files and exitReading '{config_file}'Reading minSdkVersion failed: "{apkfilename}"Reading packageName/versionCode/versionName failed, APK invalid: '{apkfilename}'Reading {apkfilename} from cacheRecalculate aggregate stats - use when changes have been made that would invalidate old cached data.Removing specified filesRename APK files that do not match package.name_123.apkReport on build data statusReset and create a brand new build server, even if the existing one appears to be ok.Resigning {apkfilename} with provided debug.keystoreResize all the icons exceeding the max pixel size and exitRestrict output to warnings and errorsRewrite all the metadata filesRewrite to a specific format: Rewriting '{appid}'Rewriting '{appid}' to '{path}'Run rewritemeta to fix formattingRunning first pass with MD5 checking disabledRunning wget in {path}Scan only the latest version of each packageScan the source code of a packageScanner found {count} problems in {appid}:Scanner found {count} problems in {appid}:{versionCode}:Scanner found {} problemScanner found {} problemsSet clock to that time using:Set open file limit to {integer}Set up an app build for a nightly build repoSetting open file limit failed: Setting {0} sec timeout for this buildSetup an emulator, install the APK on it and perform a Drozer scanSetup an emulator, install the apk on it and perform a drozer scanSign and place packages in the repoSign indexes created using update --nosignSkip scanning the source code for binaries and other problemsSkipping '{apkfilename}' with invalid signature!Skipping index generation for {appid}Skipping {apkfilename} with invalid signature!Skipping {appid}: disabledSkipping {appid}: no builds specifiedSpecify a local folder to sync the repo toSpecify an identity file to provide to SSH for rsyncingSpecify editor to use in interactive mode. Default Specify editor to use in interactive mode. Default %sSpecify editor to use in interactive mode. Default is {path}Specify that we're running on the build serverSpecify which debug keystore file to use.Spew out even more information than normalStriping mystery signature from {apkfilename}Summary '%s' is just the app's nameSummary of length {length} is over the {limit} char limitSystem clock is older than date in {path}!Test mode - put output in the tmp directory only, and always build, even if the output already exists.The OBB version code must come after "{name}.":The base URL for the repo to log (default: https://f-droid.org)The directory to write the mirror toThe only commands currently supported are 'init' and 'update'The repository's fingerprint does not match.The repository's index could not be verified.The root dir for local_copy_dir "{path}" does not exist!The the file to be included in the repo (path or glob)There is a keyalias collision - publishing haltedThis repo already has local metadata: %sTo use awsbucket, awssecretkey and awsaccesskeyid must also be set in config.py!UCM is set but it looks like checkupdates hasn't been run yetURL shorteners should not be usedURL title is just the URL, use brackets: [URL]URL {url} in Description: {error}Unexpected text on same line as {field} in {linedesc}Unknown exception found!Unknown file '{filename}' in build '{versionName}'Unknown metadata format: %sUnknown metadata format: {path}Unknown version of aapt, might cause problems: Unlinkified link - use [http://foo.bar Link title] or [http://foo.bar]Unnecessary leading spaceUnnecessary trailing spaceUnrecognised app field: Unrecognised field '{field}' in {linedesc}Unsupported file type "{extension}" for repo graphicUnsupported graphics file found: {path}Unsupported metadata format, use: --to [{supported}]Unterminated ]Unterminated ]]Unterminated build in {name}Unterminated continuation in {name}Unused extlib at %sUnused file at %sUpdate Check Name is set to the known app id - it can be removedUpdate repo information for new packagesUpdate the binary transparency log for a URLUpdate the stats of the repoUpdate the wikiUsageUsage: %s Use /HEAD instead of /master to point at a file in the default branchUse `fdroid update -c` to create it.Use build serverUse date from APK instead of current time for newly added APKsUse date from apk instead of current time for newly added apksUsing "{path}" for configuring s3cmd.Using Java's jarsigner, not recommended for verifying APKs! Use apksignerUsing existing keystore "{path}"Using s3cmd to sync with: {url}Valid commands are:Verify the integrity of downloaded packagesVerifying index signature:Warn about possible metadata errorsWhen configured for signed indexes, create only unsigned indexes at this stageX.509 'Distiguished Name' used when generating keysX.509 'Distinguished Name' used when generating keysYou can use ANDROID_HOME to set the path to your SDK, i.e.:adding IdentityFile to {path}adding to {name}: {path}ambiguous option: %(option)s could match %(matches)sambiguous option: %s (%s?)applicationId in the form APPIDapplicationId to check for updatesapplicationId with optional versionCode in the form APPID[:VERCODE]argument "-" with mode %rattempting bare ssh connection to test deploy key:can't open '%s': %scannot have multiple subparser argumentscannot merge actions - two groups are named %rcannot publish update, did you set the deploy key?cloning {url}command to execute, either 'init' or 'update'complexconflicting option string: %sconflicting option strings: %scopying {apkfilename} into {path}created {path}deleting: repo/{apkfilename}dest= is required for options like %rexpected %s argumentexpected %s argumentsexpected at least one argumentexpected at most one argumentexpected one argumentfdroid [-h|--help|--version] []fdroid [] [-h|--help|--version|]floating-pointforce errors to be warnings, or ignoreforce metadata errors (default) to be warnings, or to be ignored.git svn clone failedignored explicit argument %rindex-v1 must have a signature, use `fdroid signindex` to create it!integerinvalid %(type)s value: %(value)rinvalid choice: %(value)r (choose from %(choices)s)invalid conflict_resolution value: %rinvalid option string %(option)r: must start with a character %(prefix_chars)rlocal_copy_dir does not end with "fdroid", perhaps you meant: "{path}"local_copy_dir must be an absolute path!local_copy_dir must be directory, not a file!mirror '%s' does not end with 'fdroid'!mutually exclusive arguments must be optionalno "icon" in {appid}no APK suppliedno such option: %sno version info found!not allowed with argument %sone of the arguments %s is requiredonly accepts strings, lists, and tuplesoption %s: If you really want to install all the signed apps, use --alloption %s: invalid %s value: %roption %s: invalid choice: %r (choose from %s)option -%s not recognizedoption -%s requires argumentoption --%s must not have an argumentoption --%s not a unique prefixoption --%s not recognizedoption --%s requires argumentoptional argumentsoverwriting existing {path}positional argumentsrefuse downloading via insecure HTTP connection (use HTTPS or specify --no-https-check): {apkfilename}refuse downloading via insecure http connection (use https or specify --no-https-check): {apkfilename}s3cmd sync indexes {path} to {url} and deleteshow program's version number and exitshow this help message and exitsigned APK, either a file-path or HTTPS URL.skipping source tarball: {path}srclibs missing name and/or @the following arguments are required: %sunexpected option string: %sunknown parser %(parser_name)r (choices: %(choices)s)unrecognized arguments: %sunsafe permissions on '{config_file}' (should be 0600)!usage: usage: fdroid [-h|--help|--version] []using Apache libcloud to sync with {url}{0} app, {1} key aliases{0} apps, {1} key aliases{apkfilename} ({appid}) has no metadata!{apkfilename} has multiple {name} files, looks like Master Key exploit!{apkfilename}'s AndroidManifest.xml has a bad date: {appid} does not have a name! Using package name instead.{appid} is missing {name}{appid}: Unknown extlib {path} in build '{versionName}'{appid}: no builds specified, running on current source state{field} not terminated in {name}{name} "{path}" does not exist! Correct it in config.py.{path} does not exist! Create it by running:{path} has bad file signature "{pattern}", possible Janus exploit!{path} is zero size!{url} does not end with "fdroid", check the URL path!{} build failed{} builds failed{} build succeeded{} builds succeededProject-Id-Version: fdroidserver 0.9 Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues POT-Creation-Date: 2018-02-13 09:01+0100 PO-Revision-Date: 2018-05-17 21:10+0000 Last-Translator: Ceeee Language-Team: German Plural-Forms: nplurals=2; plural=n != 1 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Generated-By: Babel 1.3 Öffentlicher SSH-Schlüssel, der als Bereitstellungsschlüssel verwendet werden soll: {path} kodiert für die geheime Variable DEBUG_KEYSTORE:"%s/" besitzt keine zugehörige Metadaten-Datei!{name} ({version}) in „{path}” veraltet{name} ({version}) in "{path}" ist aktuell„{path}” vorhanden, aber S3cmd ist nicht installiert!"{path}" ist kein akzeptiertes Format, umwandeln in: {formats}Option %(option)s benötigt %(number)d ArgumentOption %(option)s benötigt %(number)d Argumente%(prog)s [options]-URL%(prog)s: Fehler: %(message)s %d Probleme gefunden%prog [Optionen]%r ist nicht abrufbar%s ist kein zulässiges Build-FeldOption %s verfügt über keinen Wert„keypass” nicht in config.py vorhanden!„keystore” nicht in config.py vorhanden!„keystorepass” nicht in config.py vorhanden!„repo_keyalias” nicht in config.py vorhanden!„required” ist ein ungültiges Argument für PositionsangabenKein 'sdk_path' in 'config.py' festgelegt!'{aapt}' ist zu alt, fdroid benötigt build-tools-23.0.0 oder neuer!„{aapt}” ist veraltet, fdroid benötigt build-tools-{version} oder neuer!'{apkfilename}' ist auf {dev} bereits installiert.Das Feld „{field}” wird in zufälliger Reihenfolge angezeigt! Verwenden Sie runde ( ) oder eckige [ ] Klammern, wenn die Reihenfolge wichtig ist!„{path}” konnte nicht ausgeführt werden!„{value}” ist kein gültiges {field} in {appid}. Regex-Muster: {pattern}...checkupdate für {appid} fehlgeschlagen: {error}.__call__() nicht festgelegt.fdroid.txt wird nicht unterstützt! Konvertieren Sie in .fdroid.yml oder .fdroid.json./Probleme fehlenAls Argument wird eine URL benötigt!GnuPG PGP-Signaturen für Programmpakete in der Paketquelle hinzufügenEine neue Anwendung aus ihrem Quellcode hinzufügenFüge einen Repository-Signierschlüssel zu einem unsignierten Repository hinzuFüge eine Metadaten-Vorlage für APKs hinzu, die keine habenNur für {name} eine neue Repro hinzufügenPseudonym des Repository-Signierchlüssels im SchlüsselspeicherErmöglicht die Bestimmung unterschiedlicher Überarbeitungen (oder Git-Zweige) für den ErstimportAuch den gesamten Archivbereich spiegelnAuch vor Formatierungsfehler warnen, wie etwa "rewritemeta -l"Im „{path}” der Android SDK wurde „{dirname}” nicht installiert!Android-SDK nicht gefunden!Android-SDK-Pfad »{path}« nicht vorhanden!Android-SDK-Pfad »{path}« ist kein Verzeichnis!Pfad '{path}' zu den Android Build-Tools nicht vorhanden!AndroidManifest.xml enthält kein DatumApp befindet sich in „{repo}”, enthält aber einen Verweis auf {url}.Das Anhängen von .git ist nicht notwendigArchivierung von {apkfilename} mit ungültiger Signatur!Basis-URL zum Spiegeln, kann den Index-Signierungsschlüssel mit Hilfe des Abfrage-Strings enthalten: ?fingerprint=Zweig „{branch}”, der als Bestätigung im Build verwendet wird „{versionName}”.Zweig „{branch}” wird als Bestätigung in srclib verwendet „{srclib}”.Programmpaket aus Quellcode erstellenAlle verfügbaren Anwendungen erstellenBuild durch „fdroid import” erstellt - Entfernen Sie die Zeile „Deaktiviert”, sobald sie fertig ist.Nur die neueste Version jedes Programmpakets erstellenBuild sollte kommagetrennte versionName und versionCode enthalten, nicht „{value}”, in {linedesc}Built-Repo basiert in „%s” auf der Konfiguration von:Kann nicht erstellt werden, da {} Fehler beim Prüfen aufgetreten ist.Kann nicht erstellt werden, da {} Fehler beim Prüfen aufgetreten sind.packageName für {path} konnte nicht gefunden werden!AppID für {path} konnte nicht gefunden werden!„{path}” konnte nicht gelesen werden!AppID {appid} konnte nicht aufgelöst werden--list und --to können nicht gleichzeitig verwendet werden„{path}” konnte nicht geschrieben werden, kein akzeptiertes Format, verwenden Sie: {formats}Kategorien sind nicht festgelegtKategorie »%s« ist nicht gültigAuf Aktualisierungen für Anwendungen prüfenArchivierung auf {appid} überprüfen - apks:{integer}, keepversions:{keep}, archapks:{arch}Nach Abschluss aller Scans bereinigenVor Beginn der Scans bereinigen und Container neu erstellenAlle Container bereinigen und danach beendenSauber aktualisieren - ohne Verwendung der Zwischenspeicher, alle APKs wiederaufbereitenListe der Kategorien durch Kommata getrennt.Befehl '%s' nicht erkannt. Änderungen übergeben„{command}” konnte auf Ihrem System nicht gefunden werden{path} konnte nicht gefunden werden, um ihn zu entfernenKonnte APK-Datei nicht für Analyse öffnenNeuester Versionscode konnte nicht gefunden werden.Neuester Versionsname konnte nicht gefunden werdenKonnte Paket-ID nicht findenEs ist ungehörig, bestehende Signaturschlüssel-Einstellungen zu überschreiben!Repository-Signierschlüssel in einem Schlüsselspeicher erstellenGerüst für fehlende Metadaten-Dateien erstellenNeuer Container „{name}” wurde erstellt„{path}” für die Konfiguration von S3cmd wird erstellt.Erstelle Log VerzeichnisNeuer S3-Bucket wird erstellt: {url}Erstelle AusgabeverzeichnisSignierter Index mit diesem Schlüssel (SHA256) wird erstellt:Erstelle temporäres VerzeichnisUnsignierter Index zur Vorbereitung der Signierung wird erstelltDEBUG_KEYSTORE ist nicht festgelegt oder der Wert ist unvollständigAPKs und/oder OBBs ohne Metadaten aus dem Repository löschenLösche unbekannte Datei: {path}Die Beschreibung '%s' ist nur die Zusammenfassung der AppBeschreibung enthält eine doppelte ZeileBeschreibung enthält eine Liste (%s), ist aber weder aufgezählt (*) noch nummeriert (#)Beschreibung der Länge {length} ist über dem {limit}-Zeichen Limit„{path}” nicht in die URL einfügen!Android-SDK-Pfad nicht abfragen, einfach überspringenKeinen Tarball vom Quellcode erstellen, nützlich bei Test eines BuildsMache auf Logs bezogen nichtsKeine Aktualisierung des Repositorys. Nützlich, wenn ein Build ohne Internetverbindung getestet wirdKeine rsync-Prüfsummen verwendenKomplette Spiegel von kleinen Repos herunterladenHerunterladung von Logs welche wir nicht habenHerunterladen des Repositories bereits einmal fehlgeschlagen, versuche es nicht nochmal.Herunterladen von {url} fehlgeschlagen. {error}Doppelte Build-Rezeptur für versionCode {versionCode} in {linedesc} gefundenLink in „{field}” duplizieren: {url}APKs nach Erstellung dynamisch durchsuchenFEHLER: Dieser Befehl sollte niemals verwendet werden, um f-droid.org zu spiegeln! Ein vollständiger Spiegel von f-droid.org erfordert mehr als 200 GB.FEHLER: nicht unterstützter CI-Typ, Patches willkommen!Build-Flag bei {linedesc} leerenGeben Sie hier den Pfad zum Android-SDK (%s) ein: > Fehler beim Versuch, das Protokoll zu veröffentlichen: %sFehler bei der Ermittlung der Repro-AdresseSignaturen aus APKs extrahierenAbrufen von Signaturen für „{apkfilename}” fehlgeschlagen: {error}Lesen von {path} fehlgeschlagen: {error}Größenanpassung von {path} fehlgeschlagen: {error}Anwendung konnte nicht angepasst werdenS3-Bucket konnte nicht erstellt werden: {url}Abrufen der APK-Manifest-Informationen fehlgeschlagenAbrufen der APK-Informationen fehlgeschlagen, {path} wird gelöschtAbrufen der APK-Informationen fehlgeschlagen, {path} wird übersprungenInstallation von „{apkfilename}” auf {dev} fehlgeschlagen: {error}Signieren der Anwendung fehlgeschlagenAnwendung konnte nicht mit zipalign komprimiert werdenBuildServerID von VM abgerufen: {buildserverid}Signaturen für {apkfilename} -> {sigdir} abgerufenFertiggestelltFlattr-Spendenmethoden gehören in die FlattrID-FlaggeVerbotene HTML-BefehleErstellung deaktivierter Apps erzwingen und ungeachtet von Scan-Problemen ausüben. Nur im Testmodus erlaubt.Erzwingt das Anhalten des Builds nach {0} Sek. Zeitüberschreitung!Grafik "{path}" ohne Metadaten für App "{name}" gefunden!Ungültige Appids in Argumenten gefundenUngültige versionCodes für einige Apps gefundenMehrere Metadaten-Dateien für {appid} gefundenMehrere Signaturzertifikate für das Repository gefunden.Mehrere Signaturzertifikate in {path} gefundenEs wurden keine Signaturzertifikate für das Repository gefunden.Eine Nicht-Datei gefunden bei %sGenerierte Metadaten aus Vorlage für {appid}Git checkout von '%s' fehlgeschlagenGit clean fehlgeschlagenGit fetch fehlgeschlagenGit remote set-head fehlgeschlagenGit reset fehlgeschlagenGit submodule sync fehlgeschlagenGit submodule update fehlgeschlagenHTTPS muss bei Subversion-URLs verwendet werden!Ignoriere Paket ohne Metadaten: Ignoriere veraltete Cachedaten für {apkfilename}Ignoriere die Datei {ext} bei '{path}'APKs einschliessen, die mit deaktivierten Algorithmen wie MD5 signiert sindInitialisiere SubmoduleAlle verfügbaren, signierten Anwendungen installierenErstellte Programmpakete auf Geräten installieren%s installieren …Installiere '{apkfilename}' auf {dev}....Mit dem HTTP-Server des Repository kommunizierenAngelegenheiten, die Aktualisierungen erfordern, interaktiv abfragen.Ungültige APKUngültiger boolescher Wert '%s'Ungültiges Build-Flag bei {line} in {linedesc}Ungültiges Buildformat: {value} in {name}Ungültige AufzählungUngültiges Lizenz-Tag "%s"! Verwenden Sie nur Tags von https://spdx.org/license-listUngültiger Link - verwenden Sie [http://foo.bar Linktitel] oder [http://foo.bar]Ungültige Metadaten in %s:%dUngültige Metadaten in: Ungültiger Name für die veröffentlichte Datei: %sUngültiger Paketname {0}Ungültiger Versionscode: "{versionCode}" ist keine ganze Zahl!JAR-Signatur konnte nicht überprüft werden: {path}JAR-Signatur verifiziert: {path}Java JDK nicht gefunden! Installieren Sie es in einem Standardordner oder setzen Sie java_paths!Java jarsigner nicht gefunden! Installieren Sie es in einem Standardordner oder setzen Sie java_paths!Javascript in HTML src-AttributenSchlüsselspeicher für den Signierschlüssel: Der zuletzt verwendete Commit '{commit}' sieht aus wie ein Tag, aber der Update Check Modus ist '{ucm}'Liberapay-Spendenmethoden gehören in das LiberapayID-FlagDateien listen, die reformatiert würdenErstellung bei Fehlern anhaltenFehlerhafte Repository Mirrors.Fehlerhafte serverwebroot Zeile:Fehlendes AusgabeverzeichnisName '%s' ist nur der automatische Name - entfernen Sie ihnKeine 'config.py' gefunden, nutze Standardeinstellungen.Keine Android SDK gefunden!Es konnte kein Android- oder Kivy-Projekt gefunden werden. --subdir angeben?Keine angeschlossenen Geräte gefundenKein Commit angegeben für {versionName} in {linedesc}Kein Fingerabdruck in der URL.Keine Git-Submodule verfügbarKeine Informationen gefunden.Sie müssen nicht angeben, dass die App freie Software istSie müssen nicht angeben, dass die App für Android istKeine Option gesetzt! Bearbeiten Sie Ihre config.py, um mindestens eine davon zu setzen:Keine Pakete angegebenKeine signierte Apk für %s verfügbarKein signiertes Ausgabeverzeichnis - nichts zu tunKeine Signaturzertifikate in {path} gefundenKein solches Paket: %sKein Versionscode {versionCode} für App {appid}Kein unsigniertes Verzeichnis - nichts zu tunKeine zu erledigenden AufgabenKeine zu erledigenden Aufgaben für {appid}.Legen Sie diese nun in der config.py fest:Die OBB-Datei hat eine neuere VersionCode ({integer}) als jedes APK:Der OBB Dateiname muss mit "main." oder "patch." beginnen:Der OBB-Packetname stimmt mit keinem unterstützten APK überein:Alte APK-Signatur konnte nicht überprüft werden: {path}Nur PNG und JPEG werden für Grafiken unterstützt, gefunden wurde: {path}Nur Unterschiede zum Play Store ausgebenNur Apps mit automatischen Aktualisierungen verarbeitenOptionenGesamt-Lizenz des Projekts.Pfad für die APK-Paketquelle überschreiben (Standard: ./repo)Analysiere Manifest bei {path}Passwort mit Benutzername benötigtPfad zum Unterverzeichnis des Android-Hauptprojekts, wenn es nicht im Stammverzeichnis ist.Pfad zum zentralen Androidprojekt-Unterverzeichnis, wenn es nicht im Stammverzeichnis ist.Pfad zum Android-SDK (Softwareentwicklungsbaukasten) (mitunter in ANDROID_HOME festgelegt)Pfad zum Git-Repository, der zur Anmeldung verwendet werden sollPfad zum Schlüsselspeicher für den Repository-SignierschlüsselDrozer auf einen Suchlauf vorbereitenDrozer auf einen Scan vorbereitenDrucken der geheimen Variable in das Terminal zum einfachen Kopieren/EinfügenProblem mit der Beschreibung von {appid}: {error}Problem mit xml bei {path}Aktualisierungen automatisch ausführenVerarbeite {apkfilename}Verarbeite {appid}Erstelle menschenlesbares XML/JSON für IndexdateienVisuell lesbare „index.xml“ herstellenProjekt-Adresse, von der importiert werden soll.Interpunktion sollte vermieden werdenAnmeldung an diesem Git-Repository durchführenBinäres Transparenz-Log nach {url} pushenPushen auf {url}Schnellstart eines neuen RepositorysAlle Metadaten-Dateien betrachten und beendenLese '{config_file}'Lesen von minSdkVersion fehlgeschlagen: "{apkfilename}"Lesen von packageName/versionCode/versionName fehlgeschlagen, APK ungültig: '{apkfilename}'Lese {apkfilename} aus dem CacheSammelstatistik neu berechnen - nach Änderungen anwenden, die alte zwischengespeicherte Daten entwerten würden.Entferne angegebene DateienAPK-Dateien umbenennen, die nicht dem Muster „package.name_123.apk“ entsprechenBericht zum Build-DatenstatusZurücksetzen und ganz neuen Build-Server einrichten, auch wenn der bestehende in Ordnung zu sein scheint.{apkfilename} erneut mit dem mitgelieferten debug.keystore signierenGröße aller Symbole ändern, die die maximale Pixelgröße überschreiten, und beendenAusgabe auf Warnungen und Fehler beschränkenAlle Metadaten-Dateien neu schreibenIn ein spezielles Format umschreiben: Schreibe '{appid}' neuSchreibe '{appid}' auf '{path}' neuMetadaten neu schreiben, um Formatierungen zu korrigierenErster Durchlauf mit MD5-Prüfung abgeschaltetAusführen von wget in {path}Nur die neueste Version jedes Programmpakets durchsuchenQuellcode eines Programmpakets durchsuchenScanner fand {count} Probleme in {appid}:Scanner fand {count} Probleme in {appid}:{versionCode}:Scanner fand {count} ProblemScanner fand {count} ProblemeEinstellen der Uhr auf diese Zeit mit:Setzen des Limits für geöffnete Dateien auf {integer}Ein App-Build für einen nightly Build-Repo einrichtenDas Setzen des Limits für geöffnete Dateien ist fehlgeschlagen: Stelle einen {0} Sek timeout für diesen Build einEinen Emulator einrichten, die APK installieren und mit ihm eine Sicherheitsprüfung (Drozer scan) durchführenEinen Emulator einrichten, die APK installieren und mit ihm eine Sicherheitsprüfung (Drozer scan) durchführenProgrammpakete in Paketquelle signieren und einstellenErstellte Indizes durch Verwendung von „update --nosign“ signierenDurchsuchen des Quellcodes nach Binärdateien und anderen Problemen überspringenÜberspringen von '{apkfilename}' mit ungültiger Signatur!Überspringe Indexerzeugung für {appid}Überspringe '{apkfilename}' mit ungültiger Signatur!Überspringen von {appid}: deaktiviertÜberspringe {appid}: keine Builds angegebenEinen lokalen Ordner bestimmen, in dem das Repository synchronisiert wirdEine Identitätsdatei bestimmen, die bei Re-Synchronisation an SSH übergeben wirdEditor festlegen, der im interaktiven Modus verwendet werden soll. Standard Editor festlegen, der im interaktiven Modus verwendet werden soll. Standard %sEditor festlegen, der im interaktiven Modus verwendet werden soll. Standard ist {path}Festlegen, dass F-Droid auf dem Build-Server läuftGeben Sie an, welche Debug Keystore-Datei verwendet werden soll.Mehr Informationen als gewöhnlich ausspuckenEntferne mysteriöse Signatur aus {apkfilename}Zusammenfassung '%s' ist nur der Name der AppZusammenfassung mit der Länge {length} liegt über der {limit} ZeichengrenzeDie System-Uhr ist älter als das Datum in {path}!Testmodus - Ausgabe nur ins tmp-Verzeichnis einfügen, immer erstellen, selbst wenn die Ausgabe bereits vorhanden ist.Der OBB-Versionscode muss nach "{name}." stehen:Basis-Adresse zur Anmeldung am Repository (Standard: https://f-droid.org)Das Verzeichnis, in das der Mirror geschrieben werden sollDerzeit werden nur die Befehle „init” und „update” unterstütztDer Fingerabdruck des Repositories stimmt nicht.Der Index des Repositories konnte nicht verifiziert werden.Das Wurzelverzeichnis für local_copy_dir "{path}" existiert nicht!Die in das Repo aufzunehmende Datei (Pfad oder Glob)Es gibt eine Keyalias-Kollision - Veröffentlichung gestopptDieses Repo hat bereits lokale Metadaten: %sUm awsbucket zu benutzen, müssen awssecretkey und awsaccesskeyid auch in der config.py gesetzt sein!UCM ist gesetzt, aber es sieht so aus, als ob checkupdates noch nicht ausgeführt wurdeKurz-URL-Dienste sollten nicht verwendet werdenURL-Titel ist nur die URL, verwenden Sie Klammern: [URL]URL {url} in der Beschreibung: {error}Unerwarteter Text in der gleichen Zeile wie {field} in {linedesc}Unbekannter Fehler aufgetreten!Unbekannte Datei '{filename}' im Build '{versionName}''Unbekanntes Metadatenformat: %sUnbekanntes Metadaten-Format: {path}Unbekannte Version von aapt, könnte Probleme verursachen: Nicht verlinkter Link - verwenden Sie [http://foo.bar Linktitel] oder [http://foo.bar]Unnötige führende LeerzeichenUnnötige Leerzeichen an EndeNicht erkanntes App-Feld: Nicht erkanntes Feld '{field}' in {linedesc}Nicht unterstützter Dateityp "{extension}" für Repo-GrafikNicht unterstützte Grafikdatei gefunden: {path}Nicht-unterstütztes Metadatenformat, verwenden Sie --to [{supported}]Unbeendet ]Unbeendet ]]Unbeendeter Build in {name}Unfertige Fortsetzung in {name}Nicht verwendete extlib bei %sNicht verwendete Datei bei %sUpdate Check Name ist auf die bekannte App-ID gesetzt - sie kann entfernt werdenPaketquelleninformationen zu neuen Programmpaketen aktualisierenBinäres Transparency-Log einer URL aktualisierenRepository-Statistik aktualisierenWiki aktualisierenSyntaxSyntax: %s Verwenden Sie /HEAD anstelle von /master, um auf eine Datei im Hauptzweig zu verweisenVerwenden Sie `fdroid update -c´ zum Erstellen.Build-Server verwendenAPK-Datum statt der aktuellen Zeit für neu hinzugefügte APKs verwendenAPK-Datum statt der aktuellen Zeit für neu hinzugefügte APKs verwendenVerwende {path} zur Konfiguration von s3cmd.Von Java jarsigner zur Verifikation von APKs wird abgeraten! Verwenden Sie apksignerVerwende vorhandenen Schlüsselspeicher "{path}"Verwende s3cmd zum Synchronisieren mit: {url}Gültige Befehle sind:Integrität der heruntergeladenen Programmpakete überprüfenÜberprüfe die Index-Signatur:Vor möglichen Metadaten-Fehlern warnenBei einer Konfiguration mit signierten Indizes, in dieser Phase nur unsignierte Indizes erstellenX.509 'Angesehener Name' wenn Schlüssel generiert werdenX.509 'Distinguished Name' zum Erzeugen von SchlüsselnSie können ANDROID_HOME verwenden, um den Pfad zu Ihrem SDK zu setzen, z.B.:Füge IdentityFile zu {path} hinzuHinzufügen zu {name}: {path}Mehrdeutige Option: %(option)s könnte übereinstimmen mit %(matches)sMehrdeutige Option: %s (%s?)App-ID in der Form APPIDApp-ID, um auf Aktualisierungen zu prüfenApp-ID mit optionalem Versionscode in der Form APPID[:VERCODE]Argument "-" mit Modus %rVersuch einer reinen ssh-Verbindung, um den Deployment-Key zu testen:„%s” konnte nicht geöffnet werden: %sMehrere Subparser-Argumente sind unzulässigkann keine Aktionen zusammenführen - zwei Gruppen heißen %rKann das Update nicht veröffentlichen. Ist der Deploy-Schlüssel gesetzt?Klone {url}Ausführungsbefehl, entweder 'init' oder 'update'komplexwidersprüchliche Optionsangabe: %swidersprüchliche Optionsangaben: %sKopiere {apkfilename} nach {path}{path} erzeugtLösche: repo/{apkfilename}dest= wird benötigt für Optionen wie %r%s Argument erwartet%s Argumente erwartetmindestens ein Argument erwartethöchstens ein Argument erwartetein Argument erwartetfdroid [-h|--help|--version] []fdroid [] [-h|--help|--version|]GleitkommaFehler zwingend als Warnungen ausgeben oder ignorierenErzwingen, dass Metadatenfehler (Standard) als Warnung ausgegeben oder ignoriert werden.git svn Klonen fehlgeschlagenAusdrückliches Argument %r ignoriertindex-v1 muß eine Signatur haben, verwenden Sie `fdroid signindex` um sie zu erzeugen!GanzzahlUngültige(r) %(type)s mit Wert: %(value)rUngültige Auswahl: %(value)r (Wählen Sie aus %(choices)s)Ungültiger conflict_resolution-Wert: %rUngültige Optionszeichenfolge %(option)r: muss mit einem Zeichen %(prefix_chars)r beginnenlocal_copy_dir endet nicht auf "fdroid", meinten Sie stattdessen: "{path}"local_copy_dir muß eine absolute Pfadangabe sein!local_copy_dir muß ein Verzeichnis sein, keine Datei!Mirror '%s' ended nicht auf 'fdroid'!sich gegenseitig ausschließende Argumente müssen optional seinkein "icon" in {appid}Kein APK bereitgestelltkeine solche Option: %sKeine Versionsinformationen gefunden!unzulässig mit Argument %seines der Argumente %s ist erforderlichakzeptiert nur Zeichenketten, Listen und TupelOption %s: Wenn Sie wirklich alle signierten Apps installieren wollen, verwenden Sie --allOption %s: ungültiger %s Wert: %rOption %s: ungültige Wahl: %r (wählen Sie aus %s)Option -%s nicht erkanntOption -%s erfordert ArgumentOption --%s darf kein Argument habenoption --%s ist kein eindeutiges PräfixOption --%s nicht erkanntOption --%s erfordert Argumentoptionale Argumenteüberschreiben des vorhandenen {path}PositionsparameterDownload über ungesicherte HTTP-Verbindung verweigert (verwenden Sie HTTPS oder geben Sie --no-https-check an): {apkfilename}Download über ungesicherte HTTP-Verbindung verweigert (verwenden Sie HTTPS oder geben Sie --no-https-check an): {apkfilename}s3cmd-Sync {path} indizieren auf {url} und dann löschenVersionsnummer der Anwendung anzeigen und beendendiese Hilfemeldung anzeigen und beendensigniertes APK, entweder ein Dateipfad oder eine HTTPS-URL.Überspringe Quell-Tarball: {path}Srclibs-Name fehlt und/oder @die Folgenden Argumente sind erforderlich: %sUnerwartete Optionsverkettung: %sUnbekannter Parser %(parser_name)r (Auswahl: %(choices)s)nicht erkannte Argumente: %sUnsichere Berechtigungen in „{config_file}” (sollte 0600 sein)!Syntax: Syntax: fdroid [-h|--help|--version] []Verwende Apache libcloud zur Synchronisation mit {url}{0} app, {1} Schlüsselaliase{0} apps, {1} Schlüsselaliase{apkfilename} ({appid}) besitzt keine Metadaten!{apkfilename} hat mehrere {name} Dateien, sieht aus wie Master Key Exploit!Die AndroidManifest.xml der App „{apkfilename}” hat ein ungültiges Datum: {appid} besitzt keinen Namen! Verwende den Paketnamen stattdessen.{appid} fehlt {name}{appid}: unbekannte Extlib {path} im Build '{versionName}'{appid}: keine builds angegeben, läuft auf dem aktuellen source-Stand{field} nicht in {name} beendet{name} "{path}" existiert nicht! Korrigieren Sie es in der config.py.{path} existiert nicht! Erstellen Sie es durch Ausführen von:{path} hat die schlechte Dateisignatur "{pattern}", möglicher Janus-Exploit!{path} hat Dateigröße Null!{url} endet nicht mit "fdroid", überprüfen Sie den URL-Pfad!{} Build fehlgeschlagen{} Builds fehlgeschlagenBuildvorgang erfolgreichBuildvorgänge erfolgreichfdroidserver-1.0.9/locale/de/LC_MESSAGES/fdroidserver.po0000664000175000017500000022165213322065577022621 0ustar hanshans00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Free Software Foundation, Inc. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: fdroidserver 0.9\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" "POT-Creation-Date: 2018-02-13 09:01+0100\n" "PO-Revision-Date: 2018-05-17 21:10+0000\n" "Last-Translator: Ceeee \n" "Language-Team: German \n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 3.0-dev\n" #: ../fdroidserver/nightly.py msgid "" "\n" "SSH Public Key to be used as Deploy Key:" msgstr "" "\n" "Öffentlicher SSH-Schlüssel, der als Bereitstellungsschlüssel verwendet " "werden soll:" #: ../fdroidserver/nightly.py #, python-brace-format msgid "" "\n" "{path} encoded for the DEBUG_KEYSTORE secret variable:" msgstr "" "\n" "{path} kodiert für die geheime Variable DEBUG_KEYSTORE:" #: ../fdroidserver/lint.py #, python-format msgid "\"%s/\" has no matching metadata file!" msgstr "\"%s/\" besitzt keine zugehörige Metadaten-Datei!" #: ../fdroidserver/update.py #, python-brace-format msgid "\"{path}\" contains outdated {name} ({version})" msgstr "{name} ({version}) in „{path}” veraltet" #: ../fdroidserver/update.py #, python-brace-format msgid "\"{path}\" contains recent {name} ({version})" msgstr "{name} ({version}) in \"{path}\" ist aktuell" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "\"{path}\" exists but s3cmd is not installed!" msgstr "„{path}” vorhanden, aber S3cmd ist nicht installiert!" #: ../fdroidserver/metadata.py #, python-brace-format msgid "\"{path}\" is not an accepted format, convert to: {formats}" msgstr "\"{path}\" ist kein akzeptiertes Format, umwandeln in: {formats}" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "%(option)s option requires %(number)d argument" msgid_plural "%(option)s option requires %(number)d arguments" msgstr[0] "Option %(option)s benötigt %(number)d Argument" msgstr[1] "Option %(option)s benötigt %(number)d Argumente" #: ../fdroidserver/mirror.py #, python-format msgid "%(prog)s [options] url" msgstr "%(prog)s [options]-URL" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "%(prog)s: error: %(message)s\n" msgstr "%(prog)s: Fehler: %(message)s\n" #: ../fdroidserver/scanner.py #, python-format msgid "%d problems found" msgstr "%d Probleme gefunden" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "%prog [options]" msgstr "%prog [Optionen]" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "%r is not callable" msgstr "%r ist nicht abrufbar" #: ../fdroidserver/lint.py #, python-format msgid "%s is not an accepted build field" msgstr "%s ist kein zulässiges Build-Feld" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "%s option does not take a value" msgstr "Option %s verfügt über keinen Wert" #: ../fdroidserver/index.py ../fdroidserver/common.py msgid "'keypass' not found in config.py!" msgstr "„keypass” nicht in config.py vorhanden!" #: ../fdroidserver/index.py ../fdroidserver/common.py msgid "'keystore' not found in config.py!" msgstr "„keystore” nicht in config.py vorhanden!" #: ../fdroidserver/index.py ../fdroidserver/common.py msgid "'keystorepass' not found in config.py!" msgstr "„keystorepass” nicht in config.py vorhanden!" #: ../fdroidserver/index.py ../fdroidserver/common.py msgid "'repo_keyalias' not found in config.py!" msgstr "„repo_keyalias” nicht in config.py vorhanden!" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "'required' is an invalid argument for positionals" msgstr "„required” ist ein ungültiges Argument für Positionsangaben" #: ../fdroidserver/common.py msgid "'sdk_path' not set in 'config.py'!" msgstr "Kein 'sdk_path' in 'config.py' festgelegt!" #. Translators: "build-tools" is the file name of a package from #. Google, it is part of the Android SDK. So it probably shouldn't be #. translated or transliterated. #: ../fdroidserver/common.py #, python-brace-format msgid "'{aapt}' is too old, fdroid requires build-tools-23.0.0 or newer!" msgstr "'{aapt}' ist zu alt, fdroid benötigt build-tools-23.0.0 oder neuer!" #: ../fdroidserver/common.py #, python-brace-format msgid "'{aapt}' is too old, fdroid requires build-tools-{version} or newer!" msgstr "" "„{aapt}” ist veraltet, fdroid benötigt build-tools-{version} oder neuer!" #: ../fdroidserver/install.py #, python-brace-format msgid "'{apkfilename}' is already installed on {dev}." msgstr "'{apkfilename}' ist auf {dev} bereits installiert." #: ../fdroidserver/common.py #, python-brace-format msgid "" "'{field}' will be in random order! Use () or [] brackets if order is " "important!" msgstr "" "Das Feld „{field}” wird in zufälliger Reihenfolge angezeigt! Verwenden Sie " "runde ( ) oder eckige [ ] Klammern, wenn die Reihenfolge wichtig ist!" #: ../fdroidserver/common.py #, python-brace-format msgid "'{path}' failed to execute!" msgstr "„{path}” konnte nicht ausgeführt werden!" #: ../fdroidserver/metadata.py #, python-brace-format msgid "'{value}' is not a valid {field} in {appid}. Regex pattern: {pattern}" msgstr "" "„{value}” ist kein gültiges {field} in {appid}. Regex-Muster: {pattern}" #: ../fdroidserver/checkupdates.py #, python-brace-format msgid "...checkupdate failed for {appid} : {error}" msgstr "...checkupdate für {appid} fehlgeschlagen: {error}" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid ".__call__() not defined" msgstr ".__call__() nicht festgelegt" #: ../fdroidserver/metadata.py msgid ".fdroid.txt is not supported! Convert to .fdroid.yml or .fdroid.json." msgstr "" ".fdroid.txt wird nicht unterstützt! Konvertieren Sie in .fdroid.yml oder ." "fdroid.json." #: ../fdroidserver/lint.py msgid "/issues is missing" msgstr "/Probleme fehlen" #: ../fdroidserver/mirror.py msgid "A URL is required as an argument!" msgstr "Als Argument wird eine URL benötigt!" #: ../fdroid msgid "Add PGP signatures using GnuPG for packages in repo" msgstr "GnuPG PGP-Signaturen für Programmpakete in der Paketquelle hinzufügen" #: ../fdroid msgid "Add a new application from its source code" msgstr "Eine neue Anwendung aus ihrem Quellcode hinzufügen" #: ../fdroidserver/update.py msgid "Add a repo signing key to an unsigned repo" msgstr "" "Füge einen Repository-Signierschlüssel zu einem unsignierten Repository hinzu" #: ../fdroidserver/update.py msgid "Add skeleton metadata files for APKs that are missing them" msgstr "Füge eine Metadaten-Vorlage für APKs hinzu, die keine haben" #: ../fdroidserver/update.py #, python-brace-format msgid "Adding new repo for only {name}" msgstr "Nur für {name} eine neue Repro hinzufügen" #: ../fdroidserver/init.py msgid "Alias of the repo signing key in the keystore" msgstr "Pseudonym des Repository-Signierchlüssels im Schlüsselspeicher" #: ../fdroidserver/import.py msgid "" "Allows a different revision (or git branch) to be specified for the initial " "import" msgstr "" "Ermöglicht die Bestimmung unterschiedlicher Überarbeitungen (oder Git-" "Zweige) für den Erstimport" #: ../fdroidserver/mirror.py msgid "Also mirror the full archive section" msgstr "Auch den gesamten Archivbereich spiegeln" #: ../fdroidserver/lint.py msgid "Also warn about formatting issues, like rewritemeta -l" msgstr "Auch vor Formatierungsfehler warnen, wie etwa \"rewritemeta -l\"" #: ../fdroidserver/common.py #, python-brace-format msgid "Android SDK '{path}' does not have '{dirname}' installed!" msgstr "Im „{path}” der Android SDK wurde „{dirname}” nicht installiert!" #: ../fdroidserver/common.py msgid "Android SDK not found!" msgstr "Android-SDK nicht gefunden!" #: ../fdroidserver/common.py #, python-brace-format msgid "Android SDK path '{path}' does not exist!" msgstr "Android-SDK-Pfad »{path}« nicht vorhanden!" #: ../fdroidserver/common.py #, python-brace-format msgid "Android SDK path '{path}' is not a directory!" msgstr "Android-SDK-Pfad »{path}« ist kein Verzeichnis!" #. Translators: "build-tools" is the file name of a package from #. Google, it is part of the Android SDK. So it probably shouldn't be #. translated or transliterated. #: ../fdroidserver/common.py #, python-brace-format msgid "Android build-tools path '{path}' does not exist!" msgstr "Pfad '{path}' zu den Android Build-Tools nicht vorhanden!" #: ../fdroidserver/update.py msgid "AndroidManifest.xml has no date" msgstr "AndroidManifest.xml enthält kein Datum" #: ../fdroidserver/lint.py #, python-brace-format msgid "App is in '{repo}' but has a link to {url}" msgstr "App befindet sich in „{repo}”, enthält aber einen Verweis auf {url}." #: ../fdroidserver/lint.py msgid "Appending .git is not necessary" msgstr "Das Anhängen von .git ist nicht notwendig" #: ../fdroidserver/update.py #, python-brace-format msgid "Archiving {apkfilename} with invalid signature!" msgstr "Archivierung von {apkfilename} mit ungültiger Signatur!" #: ../fdroidserver/mirror.py msgid "" "Base URL to mirror, can include the index signing key using the query " "string: ?fingerprint=" msgstr "" "Basis-URL zum Spiegeln, kann den Index-Signierungsschlüssel mit Hilfe des " "Abfrage-Strings enthalten: ?fingerprint=" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vname #: ../fdroidserver/lint.py #, python-brace-format msgid "Branch '{branch}' used as commit in build '{versionName}'" msgstr "" "Zweig „{branch}”, der als Bestätigung im Build verwendet wird " "„{versionName}”." #: ../fdroidserver/lint.py #, python-brace-format msgid "Branch '{branch}' used as commit in srclib '{srclib}'" msgstr "Zweig „{branch}” wird als Bestätigung in srclib verwendet „{srclib}”." #: ../fdroid msgid "Build a package from source" msgstr "Programmpaket aus Quellcode erstellen" #: ../fdroidserver/build.py msgid "Build all applications available" msgstr "Alle verfügbaren Anwendungen erstellen" #: ../fdroidserver/lint.py msgid "Build generated by `fdroid import` - remove disable line once ready" msgstr "" "Build durch „fdroid import” erstellt - Entfernen Sie die Zeile " "„Deaktiviert”, sobald sie fertig ist." #: ../fdroidserver/build.py msgid "Build only the latest version of each package" msgstr "Nur die neueste Version jedes Programmpakets erstellen" #: ../fdroidserver/metadata.py #, python-brace-format msgid "" "Build should have comma-separated versionName and versionCode, not " "\"{value}\", in {linedesc}" msgstr "" "Build sollte kommagetrennte versionName und versionCode enthalten, nicht " "„{value}”, in {linedesc}" #: ../fdroidserver/init.py #, python-format msgid "Built repo based in \"%s\" with this config:" msgstr "Built-Repo basiert in „%s” auf der Konfiguration von:" #: ../fdroidserver/build.py msgid "Can't build due to {} error while scanning" msgid_plural "Can't build due to {} errors while scanning" msgstr[0] "" "Kann nicht erstellt werden, da {} Fehler beim Prüfen aufgetreten ist." msgstr[1] "" "Kann nicht erstellt werden, da {} Fehler beim Prüfen aufgetreten sind." #: ../fdroidserver/metadata.py #, python-brace-format msgid "Cannot find a packageName for {path}!" msgstr "packageName für {path} konnte nicht gefunden werden!" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Cannot find an appid for {path}!" msgstr "AppID für {path} konnte nicht gefunden werden!" #: ../fdroidserver/vmtools.py #, python-brace-format msgid "Cannot read \"{path}\"!" msgstr "„{path}” konnte nicht gelesen werden!" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Cannot resolve app id {appid}" msgstr "AppID {appid} konnte nicht aufgelöst werden" #: ../fdroidserver/rewritemeta.py msgid "Cannot use --list and --to at the same time" msgstr "--list und --to können nicht gleichzeitig verwendet werden" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Cannot write \"{path}\", not an accepted format, use: {formats}" msgstr "" "„{path}” konnte nicht geschrieben werden, kein akzeptiertes Format, " "verwenden Sie: {formats}" #: ../fdroidserver/lint.py msgid "Categories are not set" msgstr "Kategorien sind nicht festgelegt" #: ../fdroidserver/lint.py #, python-format msgid "Category '%s' is not valid" msgstr "Kategorie »%s« ist nicht gültig" #: ../fdroid msgid "Check for updates to applications" msgstr "Auf Aktualisierungen für Anwendungen prüfen" #: ../fdroidserver/update.py #, python-brace-format msgid "" "Checking archiving for {appid} - apks:{integer}, keepversions:{keep}, " "archapks:{arch}" msgstr "" "Archivierung auf {appid} überprüfen - apks:{integer}, keepversions:{keep}, " "archapks:{arch}" #: ../fdroidserver/dscanner.py msgid "Clean after all scans have finished" msgstr "Nach Abschluss aller Scans bereinigen" #: ../fdroidserver/dscanner.py msgid "Clean before the scans start and rebuild the container" msgstr "Vor Beginn der Scans bereinigen und Container neu erstellen" #: ../fdroidserver/dscanner.py msgid "Clean up all containers and then exit" msgstr "Alle Container bereinigen und danach beenden" #: ../fdroidserver/update.py msgid "Clean update - don't uses caches, reprocess all APKs" msgstr "" "Sauber aktualisieren - ohne Verwendung der Zwischenspeicher, alle APKs " "wiederaufbereiten" #: ../fdroidserver/import.py msgid "Comma separated list of categories." msgstr "Liste der Kategorien durch Kommata getrennt." #: ../fdroid #, c-format, python-format msgid "Command '%s' not recognised.\n" msgstr "Befehl '%s' nicht erkannt.\n" #: ../fdroidserver/checkupdates.py msgid "Commit changes" msgstr "Änderungen übergeben" #: ../fdroidserver/common.py #, python-brace-format msgid "Could not find '{command}' on your system" msgstr "„{command}” konnte auf Ihrem System nicht gefunden werden" #: ../fdroidserver/update.py #, python-brace-format msgid "Could not find {path} to remove it" msgstr "{path} konnte nicht gefunden werden, um ihn zu entfernen" #: ../fdroidserver/update.py msgid "Could not open apk file for analysis" msgstr "Konnte APK-Datei nicht für Analyse öffnen" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/import.py msgid "Couldn't find latest version code" msgstr "Neuester Versionscode konnte nicht gefunden werden." #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vname #: ../fdroidserver/import.py msgid "Couldn't find latest version name" msgstr "Neuester Versionsname konnte nicht gefunden werden" #: ../fdroidserver/import.py msgid "Couldn't find package ID" msgstr "Konnte Paket-ID nicht finden" #: ../fdroidserver/update.py msgid "Cowardily refusing to overwrite existing signing key setup!" msgstr "" "Es ist ungehörig, bestehende Signaturschlüssel-Einstellungen zu " "überschreiben!" #: ../fdroidserver/update.py msgid "Create a repo signing key in a keystore" msgstr "Repository-Signierschlüssel in einem Schlüsselspeicher erstellen" #: ../fdroidserver/update.py msgid "Create skeleton metadata files that are missing" msgstr "Gerüst für fehlende Metadaten-Dateien erstellen" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Created new container \"{name}\"" msgstr "Neuer Container „{name}” wurde erstellt" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Creating \"{path}\" for configuring s3cmd." msgstr "„{path}” für die Konfiguration von S3cmd wird erstellt." #: ../fdroidserver/publish.py msgid "Creating log directory" msgstr "Erstelle Log Verzeichnis" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Creating new S3 bucket: {url}" msgstr "Neuer S3-Bucket wird erstellt: {url}" #: ../fdroidserver/publish.py msgid "Creating output directory" msgstr "Erstelle Ausgabeverzeichnis" #: ../fdroidserver/index.py msgid "Creating signed index with this key (SHA256):" msgstr "Signierter Index mit diesem Schlüssel (SHA256) wird erstellt:" #: ../fdroidserver/import.py ../fdroidserver/verify.py #: ../fdroidserver/publish.py msgid "Creating temporary directory" msgstr "Erstelle temporäres Verzeichnis" #: ../fdroidserver/index.py msgid "Creating unsigned index in preparation for signing" msgstr "Unsignierter Index zur Vorbereitung der Signierung wird erstellt" #: ../fdroidserver/nightly.py msgid "DEBUG_KEYSTORE is not set or the value is incomplete" msgstr "DEBUG_KEYSTORE ist nicht festgelegt oder der Wert ist unvollständig" #: ../fdroidserver/update.py msgid "Delete APKs and/or OBBs without metadata from the repo" msgstr "APKs und/oder OBBs ohne Metadaten aus dem Repository löschen" #: ../fdroidserver/update.py #, python-brace-format msgid "Deleting unknown file: {path}" msgstr "Lösche unbekannte Datei: {path}" #: ../fdroidserver/lint.py #, python-format msgid "Description '%s' is just the app's summary" msgstr "Die Beschreibung '%s' ist nur die Zusammenfassung der App" #: ../fdroidserver/lint.py msgid "Description has a duplicate line" msgstr "Beschreibung enthält eine doppelte Zeile" #: ../fdroidserver/lint.py #, python-format msgid "Description has a list (%s) but it isn't bulleted (*) nor numbered (#)" msgstr "" "Beschreibung enthält eine Liste (%s), ist aber weder aufgezählt (*) noch " "nummeriert (#)" #: ../fdroidserver/lint.py #, python-brace-format msgid "Description of length {length} is over the {limit} char limit" msgstr "Beschreibung der Länge {length} ist über dem {limit}-Zeichen Limit" #: ../fdroidserver/mirror.py #, python-brace-format msgid "Do not include \"{path}\" in URL!" msgstr "„{path}” nicht in die URL einfügen!" #: ../fdroidserver/init.py msgid "Do not prompt for Android SDK path, just fail" msgstr "Android-SDK-Pfad nicht abfragen, einfach überspringen" #: ../fdroidserver/build.py msgid "Don't create a source tarball, useful when testing a build" msgstr "Keinen Tarball vom Quellcode erstellen, nützlich bei Test eines Builds" #: ../fdroidserver/stats.py msgid "Don't do anything logs-related" msgstr "Mache auf Logs bezogen nichts" #: ../fdroidserver/build.py msgid "" "Don't refresh the repository, useful when testing a build with no internet " "connection" msgstr "" "Keine Aktualisierung des Repositorys. Nützlich, wenn ein Build ohne " "Internetverbindung getestet wird" #: ../fdroidserver/server.py ../fdroidserver/nightly.py #: ../fdroidserver/upload.py msgid "Don't use rsync checksums" msgstr "Keine rsync-Prüfsummen verwenden" #: ../fdroid msgid "Download complete mirrors of small repos" msgstr "Komplette Spiegel von kleinen Repos herunterladen" #: ../fdroidserver/stats.py msgid "Download logs we don't have" msgstr "Herunterladung von Logs welche wir nicht haben" #: ../fdroidserver/common.py msgid "Downloading the repository already failed once, not trying again." msgstr "" "Herunterladen des Repositories bereits einmal fehlgeschlagen, versuche es " "nicht nochmal." #: ../fdroidserver/verify.py #, python-brace-format msgid "Downloading {url} failed. {error}" msgstr "Herunterladen von {url} fehlgeschlagen. {error}" #: ../fdroidserver/metadata.py #, python-brace-format msgid "" "Duplicate build recipe found for versionCode {versionCode} in {linedesc}" msgstr "" "Doppelte Build-Rezeptur für versionCode {versionCode} in {linedesc} gefunden" #: ../fdroidserver/lint.py #, python-brace-format msgid "Duplicate link in '{field}': {url}" msgstr "Link in „{field}” duplizieren: {url}" #: ../fdroid msgid "Dynamically scan APKs post build" msgstr "APKs nach Erstellung dynamisch durchsuchen" #: ../fdroidserver/mirror.py msgid "" "ERROR: this command should never be used to mirror f-droid.org!\n" "A full mirror of f-droid.org requires more than 200GB." msgstr "" "FEHLER: Dieser Befehl sollte niemals verwendet werden, um f-droid.org zu " "spiegeln!\n" "Ein vollständiger Spiegel von f-droid.org erfordert mehr als 200 GB." #: ../fdroidserver/nightly.py msgid "ERROR: unsupported CI type, patches welcome!" msgstr "FEHLER: nicht unterstützter CI-Typ, Patches willkommen!" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Empty build flag at {linedesc}" msgstr "Build-Flag bei {linedesc} leeren" #: ../fdroidserver/init.py #, python-format msgid "" "Enter the path to the Android SDK (%s) here:\n" "> " msgstr "" "Geben Sie hier den Pfad zum Android-SDK (%s) ein:\n" "> " #: ../fdroidserver/server.py ../fdroidserver/checkupdates.py #: ../fdroidserver/upload.py #, python-format msgid "Error while attempting to publish log: %s" msgstr "Fehler beim Versuch, das Protokoll zu veröffentlichen: %s" #: ../fdroidserver/import.py msgid "Error while getting repo address" msgstr "Fehler bei der Ermittlung der Repro-Adresse" #: ../fdroid msgid "Extract signatures from APKs" msgstr "Signaturen aus APKs extrahieren" #: ../fdroidserver/signatures.py #, python-brace-format msgid "Failed fetching signatures for '{apkfilename}': {error}" msgstr "Abrufen von Signaturen für „{apkfilename}” fehlgeschlagen: {error}" #: ../fdroidserver/update.py #, python-brace-format msgid "Failed reading {path}: {error}" msgstr "Lesen von {path} fehlgeschlagen: {error}" #: ../fdroidserver/update.py #, python-brace-format msgid "Failed resizing {path}: {error}" msgstr "Größenanpassung von {path} fehlgeschlagen: {error}" #: ../fdroidserver/publish.py msgid "Failed to align application" msgstr "Anwendung konnte nicht angepasst werden" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Failed to create S3 bucket: {url}" msgstr "S3-Bucket konnte nicht erstellt werden: {url}" #: ../fdroidserver/common.py msgid "Failed to get APK manifest information" msgstr "Abrufen der APK-Manifest-Informationen fehlgeschlagen" #: ../fdroidserver/update.py #, python-brace-format msgid "Failed to get apk information, deleting {path}" msgstr "Abrufen der APK-Informationen fehlgeschlagen, {path} wird gelöscht" #: ../fdroidserver/update.py #, python-brace-format msgid "Failed to get apk information, skipping {path}" msgstr "Abrufen der APK-Informationen fehlgeschlagen, {path} wird übersprungen" #: ../fdroidserver/install.py #, python-brace-format msgid "Failed to install '{apkfilename}' on {dev}: {error}" msgstr "Installation von „{apkfilename}” auf {dev} fehlgeschlagen: {error}" #: ../fdroidserver/publish.py ../fdroidserver/common.py msgid "Failed to sign application" msgstr "Signieren der Anwendung fehlgeschlagen" #: ../fdroidserver/common.py msgid "Failed to zipalign application" msgstr "Anwendung konnte nicht mit zipalign komprimiert werden" #: ../fdroidserver/build.py #, python-brace-format msgid "Fetched buildserverid from VM: {buildserverid}" msgstr "BuildServerID von VM abgerufen: {buildserverid}" #: ../fdroidserver/signatures.py #, python-brace-format msgid "Fetched signatures for '{apkfilename}' -> '{sigdir}'" msgstr "Signaturen für {apkfilename} -> {sigdir} abgerufen" #: ../fdroidserver/verify.py ../fdroidserver/stats.py ../fdroidserver/update.py #: ../fdroidserver/rewritemeta.py ../fdroidserver/build.py #: ../fdroidserver/checkupdates.py ../fdroidserver/scanner.py #: ../fdroidserver/install.py msgid "Finished" msgstr "Fertiggestellt" #: ../fdroidserver/lint.py msgid "Flattr donation methods belong in the FlattrID flag" msgstr "Flattr-Spendenmethoden gehören in die FlattrID-Flagge" #: ../fdroidserver/lint.py msgid "Forbidden HTML tags" msgstr "Verbotene HTML-Befehle" #: ../fdroidserver/build.py msgid "" "Force build of disabled apps, and carries on regardless of scan problems. " "Only allowed in test mode." msgstr "" "Erstellung deaktivierter Apps erzwingen und ungeachtet von Scan-Problemen " "ausüben. Nur im Testmodus erlaubt." #: ../fdroidserver/build.py #, python-brace-format msgid "Force halting build after {0} sec timeout!" msgstr "Erzwingt das Anhalten des Builds nach {0} Sek. Zeitüberschreitung!" #: ../fdroidserver/update.py #, python-brace-format msgid "Found \"{path}\" graphic without metadata for app \"{name}\"!" msgstr "Grafik \"{path}\" ohne Metadaten für App \"{name}\" gefunden!" #: ../fdroidserver/common.py msgid "Found invalid appids in arguments" msgstr "Ungültige Appids in Argumenten gefunden" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/common.py msgid "Found invalid versionCodes for some apps" msgstr "Ungültige versionCodes für einige Apps gefunden" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Found multiple metadata files for {appid}" msgstr "Mehrere Metadaten-Dateien für {appid} gefunden" #: ../fdroidserver/index.py msgid "Found multiple signing certificates for repository." msgstr "Mehrere Signaturzertifikate für das Repository gefunden." #: ../fdroidserver/update.py #, python-brace-format msgid "Found multiple signing certificates in {path}" msgstr "Mehrere Signaturzertifikate in {path} gefunden" #: ../fdroidserver/index.py msgid "Found no signing certificates for repository." msgstr "Es wurden keine Signaturzertifikate für das Repository gefunden." #: ../fdroidserver/lint.py #, python-format msgid "Found non-file at %s" msgstr "Eine Nicht-Datei gefunden bei %s" #: ../fdroidserver/update.py #, python-brace-format msgid "Generated skeleton metadata for {appid}" msgstr "Generierte Metadaten aus Vorlage für {appid}" #: ../fdroidserver/common.py #, python-format msgid "Git checkout of '%s' failed" msgstr "Git checkout von '%s' fehlgeschlagen" #: ../fdroidserver/common.py msgid "Git clean failed" msgstr "Git clean fehlgeschlagen" #: ../fdroidserver/common.py msgid "Git fetch failed" msgstr "Git fetch fehlgeschlagen" #: ../fdroidserver/common.py msgid "Git remote set-head failed" msgstr "Git remote set-head fehlgeschlagen" #: ../fdroidserver/common.py msgid "Git reset failed" msgstr "Git reset fehlgeschlagen" #: ../fdroidserver/common.py msgid "Git submodule sync failed" msgstr "Git submodule sync fehlgeschlagen" #: ../fdroidserver/common.py msgid "Git submodule update failed" msgstr "Git submodule update fehlgeschlagen" #: ../fdroidserver/common.py msgid "HTTPS must be used with Subversion URLs!" msgstr "HTTPS muss bei Subversion-URLs verwendet werden!" #: ../fdroidserver/index.py msgid "Ignoring package without metadata: " msgstr "Ignoriere Paket ohne Metadaten: " #: ../fdroidserver/update.py #, python-brace-format msgid "Ignoring stale cache data for {apkfilename}" msgstr "Ignoriere veraltete Cachedaten für {apkfilename}" #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Ignoring {ext} file at '{path}'" msgstr "Ignoriere die Datei {ext} bei '{path}'" #: ../fdroidserver/update.py msgid "Include APKs that are signed with disabled algorithms like MD5" msgstr "" "APKs einschliessen, die mit deaktivierten Algorithmen wie MD5 signiert sind" #: ../fdroidserver/common.py msgid "Initialising submodules" msgstr "Initialisiere Submodule" #: ../fdroidserver/install.py msgid "Install all signed applications available" msgstr "Alle verfügbaren, signierten Anwendungen installieren" #: ../fdroid msgid "Install built packages on devices" msgstr "Erstellte Programmpakete auf Geräten installieren" #: ../fdroidserver/install.py #, python-format msgid "Installing %s..." msgstr "%s installieren …" #: ../fdroidserver/install.py #, python-brace-format msgid "Installing '{apkfilename}' on {dev}..." msgstr "Installiere '{apkfilename}' auf {dev}...." #: ../fdroid msgid "Interact with the repo HTTP server" msgstr "Mit dem HTTP-Server des Repository kommunizieren" #: ../fdroidserver/update.py msgid "Interactively ask about things that need updating." msgstr "Angelegenheiten, die Aktualisierungen erfordern, interaktiv abfragen." #: ../fdroidserver/update.py msgid "Invalid APK" msgstr "Ungültige APK" #: ../fdroidserver/metadata.py #, python-format msgid "Invalid boolean '%s'" msgstr "Ungültiger boolescher Wert '%s'" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Invalid build flag at {line} in {linedesc}" msgstr "Ungültiges Build-Flag bei {line} in {linedesc}" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Invalid build format: {value} in {name}" msgstr "Ungültiges Buildformat: {value} in {name}" #: ../fdroidserver/lint.py msgid "Invalid bulleted list" msgstr "Ungültige Aufzählung" #: ../fdroidserver/lint.py #, python-format msgid "" "Invalid license tag \"%s\"! Use only tags from https://spdx.org/license-list" msgstr "" "Ungültiges Lizenz-Tag \"%s\"! Verwenden Sie nur Tags von https://spdx.org/" "license-list" #: ../fdroidserver/lint.py msgid "Invalid link - use [http://foo.bar Link title] or [http://foo.bar]" msgstr "" "Ungültiger Link - verwenden Sie [http://foo.bar Linktitel] oder [http://foo." "bar]" #: ../fdroidserver/metadata.py #, python-format msgid "Invalid metadata in %s:%d" msgstr "Ungültige Metadaten in %s:%d" #: ../fdroidserver/metadata.py msgid "Invalid metadata in: " msgstr "Ungültige Metadaten in: " #: ../fdroidserver/common.py #, python-format msgid "Invalid name for published file: %s" msgstr "Ungültiger Name für die veröffentlichte Datei: %s" #: ../fdroidserver/common.py #, python-brace-format msgid "Invalid package name {0}" msgstr "Ungültiger Paketname {0}" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Invalid versionCode: \"{versionCode}\" is not an integer!" msgstr "Ungültiger Versionscode: \"{versionCode}\" ist keine ganze Zahl!" #: ../fdroidserver/common.py #, python-brace-format msgid "JAR signature failed to verify: {path}" msgstr "JAR-Signatur konnte nicht überprüft werden: {path}" #: ../fdroidserver/common.py #, python-brace-format msgid "JAR signature verified: {path}" msgstr "JAR-Signatur verifiziert: {path}" #: ../fdroidserver/publish.py ../fdroidserver/update.py #: ../fdroidserver/mirror.py msgid "Java JDK not found! Install in standard location or set java_paths!" msgstr "" "Java JDK nicht gefunden! Installieren Sie es in einem Standardordner oder " "setzen Sie java_paths!" #: ../fdroidserver/signindex.py msgid "" "Java jarsigner not found! Install in standard location or set java_paths!" msgstr "" "Java jarsigner nicht gefunden! Installieren Sie es in einem Standardordner " "oder setzen Sie java_paths!" #: ../fdroidserver/lint.py msgid "Javascript in HTML src attributes" msgstr "Javascript in HTML src-Attributen" #: ../fdroidserver/init.py msgid "Keystore for signing key:\t" msgstr "Schlüsselspeicher für den Signierschlüssel:\t" #: ../fdroidserver/lint.py #, python-brace-format msgid "" "Last used commit '{commit}' looks like a tag, but Update Check Mode is " "'{ucm}'" msgstr "" "Der zuletzt verwendete Commit '{commit}' sieht aus wie ein Tag, aber der " "Update Check Modus ist '{ucm}'" #: ../fdroidserver/lint.py msgid "Liberapay donation methods belong in the LiberapayID flag" msgstr "Liberapay-Spendenmethoden gehören in das LiberapayID-Flag" #: ../fdroidserver/rewritemeta.py msgid "List files that would be reformatted" msgstr "Dateien listen, die reformatiert würden" #: ../fdroidserver/build.py msgid "Make the build stop on exceptions" msgstr "Erstellung bei Fehlern anhalten" #: ../fdroidserver/index.py msgid "Malformed repository mirrors." msgstr "Fehlerhafte Repository Mirrors." #: ../fdroidserver/server.py msgid "Malformed serverwebroot line:" msgstr "Fehlerhafte serverwebroot Zeile:" #: ../fdroidserver/gpgsign.py msgid "Missing output directory" msgstr "Fehlendes Ausgabeverzeichnis" #: ../fdroidserver/lint.py #, python-format msgid "Name '%s' is just the auto name - remove it" msgstr "Name '%s' ist nur der automatische Name - entfernen Sie ihn" #: ../fdroidserver/common.py msgid "No 'config.py' found, using defaults." msgstr "Keine 'config.py' gefunden, nutze Standardeinstellungen." #: ../fdroidserver/common.py msgid "No Android SDK found!" msgstr "Keine Android SDK gefunden!" #: ../fdroidserver/import.py msgid "No android or kivy project could be found. Specify --subdir?" msgstr "" "Es konnte kein Android- oder Kivy-Projekt gefunden werden. --subdir angeben?" #: ../fdroidserver/install.py msgid "No attached devices found" msgstr "Keine angeschlossenen Geräte gefunden" #: ../fdroidserver/metadata.py #, python-brace-format msgid "No commit specified for {versionName} in {linedesc}" msgstr "Kein Commit angegeben für {versionName} in {linedesc}" #: ../fdroidserver/index.py msgid "No fingerprint in URL." msgstr "Kein Fingerabdruck in der URL." #: ../fdroidserver/common.py msgid "No git submodules available" msgstr "Keine Git-Submodule verfügbar" #: ../fdroidserver/import.py msgid "No information found." msgstr "Keine Informationen gefunden." #: ../fdroidserver/lint.py msgid "No need to specify that the app is Free Software" msgstr "Sie müssen nicht angeben, dass die App freie Software ist" #: ../fdroidserver/lint.py msgid "No need to specify that the app is for Android" msgstr "Sie müssen nicht angeben, dass die App für Android ist" #: ../fdroidserver/server.py msgid "No option set! Edit your config.py to set at least one of these:" msgstr "" "Keine Option gesetzt! Bearbeiten Sie Ihre config.py, um mindestens eine " "davon zu setzen:" #: ../fdroidserver/common.py msgid "No packages specified" msgstr "Keine Pakete angegeben" #: ../fdroidserver/install.py #, python-format msgid "No signed apk available for %s" msgstr "Keine signierte Apk für %s verfügbar" #: ../fdroidserver/install.py msgid "No signed output directory - nothing to do" msgstr "Kein signiertes Ausgabeverzeichnis - nichts zu tun" #: ../fdroidserver/update.py #, python-brace-format msgid "No signing certificates found in {path}" msgstr "Keine Signaturzertifikate in {path} gefunden" #: ../fdroidserver/common.py #, python-format msgid "No such package: %s" msgstr "Kein solches Paket: %s" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/common.py #, python-brace-format msgid "No such versionCode {versionCode} for app {appid}" msgstr "Kein Versionscode {versionCode} für App {appid}" #: ../fdroidserver/verify.py ../fdroidserver/publish.py msgid "No unsigned directory - nothing to do" msgstr "Kein unsigniertes Verzeichnis - nichts zu tun" #: ../fdroidserver/signindex.py msgid "Nothing to do" msgstr "Keine zu erledigenden Aufgaben" #: ../fdroidserver/checkupdates.py #, python-brace-format msgid "Nothing to do for {appid}." msgstr "Keine zu erledigenden Aufgaben für {appid}." #: ../fdroidserver/init.py msgid "Now set these in config.py:" msgstr "Legen Sie diese nun in der config.py fest:" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/update.py #, python-brace-format msgid "OBB file has newer versionCode({integer}) than any APK:" msgstr "Die OBB-Datei hat eine neuere VersionCode ({integer}) als jedes APK:" #: ../fdroidserver/update.py msgid "OBB filename must start with \"main.\" or \"patch.\":" msgstr "Der OBB Dateiname muss mit \"main.\" oder \"patch.\" beginnen:" #: ../fdroidserver/update.py msgid "OBB's packagename does not match a supported APK:" msgstr "Der OBB-Packetname stimmt mit keinem unterstützten APK überein:" #: ../fdroidserver/common.py #, python-brace-format msgid "Old APK signature failed to verify: {path}" msgstr "Alte APK-Signatur konnte nicht überprüft werden: {path}" #: ../fdroidserver/update.py #, python-brace-format msgid "Only PNG and JPEG are supported for graphics, found: {path}" msgstr "" "Nur PNG und JPEG werden für Grafiken unterstützt, gefunden wurde: {path}" #: ../fdroidserver/checkupdates.py msgid "Only print differences with the Play Store" msgstr "Nur Unterschiede zum Play Store ausgeben" #: ../fdroidserver/checkupdates.py msgid "Only process apps with auto-updates" msgstr "Nur Apps mit automatischen Aktualisierungen verarbeiten" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "Options" msgstr "Optionen" #: ../fdroidserver/import.py msgid "Overall license of the project." msgstr "Gesamt-Lizenz des Projekts." #: ../fdroidserver/dscanner.py msgid "Override path for repo APKs (default: ./repo)" msgstr "Pfad für die APK-Paketquelle überschreiben (Standard: ./repo)" #: ../fdroidserver/common.py #, python-brace-format msgid "Parsing manifest at '{path}'" msgstr "Analysiere Manifest bei {path}" #: ../fdroidserver/common.py msgid "Password required with username" msgstr "Passwort mit Benutzername benötigt" #: ../fdroidserver/import.py msgid "Path to main Android project subdirectory, if not in root." msgstr "" "Pfad zum Unterverzeichnis des Android-Hauptprojekts, wenn es nicht im " "Stammverzeichnis ist." msgid "Path to main android project subdirectory, if not in root." msgstr "" "Pfad zum zentralen Androidprojekt-Unterverzeichnis, wenn es nicht im " "Stammverzeichnis ist." #: ../fdroidserver/init.py msgid "Path to the Android SDK (sometimes set in ANDROID_HOME)" msgstr "" "Pfad zum Android-SDK (Softwareentwicklungsbaukasten) (mitunter in " "ANDROID_HOME festgelegt)" #: ../fdroidserver/btlog.py msgid "Path to the git repo to use as the log" msgstr "Pfad zum Git-Repository, der zur Anmeldung verwendet werden soll" #: ../fdroidserver/init.py msgid "Path to the keystore for the repo signing key" msgstr "Pfad zum Schlüsselspeicher für den Repository-Signierschlüssel" #: ../fdroidserver/dscanner.py msgid "Prepare Drozer to run a scan" msgstr "Drozer auf einen Suchlauf vorbereiten" msgid "Prepare drozer to run a scan" msgstr "Drozer auf einen Scan vorbereiten" #: ../fdroidserver/nightly.py msgid "Print the secret variable to the terminal for easy copy/paste" msgstr "" "Drucken der geheimen Variable in das Terminal zum einfachen Kopieren/Einfügen" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Problem with description of {appid}: {error}" msgstr "Problem mit der Beschreibung von {appid}: {error}" #: ../fdroidserver/common.py #, python-brace-format msgid "Problem with xml at '{path}'" msgstr "Problem mit xml bei {path}" #: ../fdroidserver/checkupdates.py msgid "Process auto-updates" msgstr "Aktualisierungen automatisch ausführen" #: ../fdroidserver/publish.py ../fdroidserver/update.py #, python-brace-format msgid "Processing {apkfilename}" msgstr "Verarbeite {apkfilename}" #: ../fdroidserver/checkupdates.py ../fdroidserver/scanner.py #, python-brace-format msgid "Processing {appid}" msgstr "Verarbeite {appid}" #: ../fdroidserver/update.py msgid "Produce human-readable XML/JSON for index files" msgstr "Erstelle menschenlesbares XML/JSON für Indexdateien" #: ../fdroidserver/update.py msgid "Produce human-readable index.xml" msgstr "Visuell lesbare „index.xml“ herstellen" #: ../fdroidserver/import.py msgid "Project URL to import from." msgstr "Projekt-Adresse, von der importiert werden soll." #: ../fdroidserver/lint.py msgid "Punctuation should be avoided" msgstr "Interpunktion sollte vermieden werden" #: ../fdroidserver/btlog.py msgid "Push the log to this git remote repository" msgstr "Anmeldung an diesem Git-Repository durchführen" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Pushing binary transparency log to {url}" msgstr "Binäres Transparenz-Log nach {url} pushen" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Pushing to {url}" msgstr "Pushen auf {url}" #: ../fdroid msgid "Quickly start a new repository" msgstr "Schnellstart eines neuen Repositorys" #: ../fdroid msgid "Read all the metadata files and exit" msgstr "Alle Metadaten-Dateien betrachten und beenden" #: ../fdroidserver/common.py #, python-brace-format msgid "Reading '{config_file}'" msgstr "Lese '{config_file}'" #: ../fdroidserver/common.py #, python-brace-format msgid "Reading minSdkVersion failed: \"{apkfilename}\"" msgstr "Lesen von minSdkVersion fehlgeschlagen: \"{apkfilename}\"" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #. https://developer.android.com/guide/topics/manifest/manifest-element.html#vname #: ../fdroidserver/common.py #, python-brace-format msgid "" "Reading packageName/versionCode/versionName failed, APK invalid: " "'{apkfilename}'" msgstr "" "Lesen von packageName/versionCode/versionName fehlgeschlagen, APK ungültig: " "'{apkfilename}'" #: ../fdroidserver/update.py #, python-brace-format msgid "Reading {apkfilename} from cache" msgstr "Lese {apkfilename} aus dem Cache" #: ../fdroidserver/stats.py msgid "" "Recalculate aggregate stats - use when changes have been made that would " "invalidate old cached data." msgstr "" "Sammelstatistik neu berechnen - nach Änderungen anwenden, die alte " "zwischengespeicherte Daten entwerten würden." #: ../fdroidserver/common.py msgid "Removing specified files" msgstr "Entferne angegebene Dateien" #: ../fdroidserver/update.py msgid "Rename APK files that do not match package.name_123.apk" msgstr "" "APK-Dateien umbenennen, die nicht dem Muster „package.name_123.apk“ " "entsprechen" #: ../fdroidserver/update.py msgid "Report on build data status" msgstr "Bericht zum Build-Datenstatus" #: ../fdroidserver/build.py msgid "" "Reset and create a brand new build server, even if the existing one appears " "to be ok." msgstr "" "Zurücksetzen und ganz neuen Build-Server einrichten, auch wenn der " "bestehende in Ordnung zu sein scheint." #: ../fdroidserver/nightly.py #, python-brace-format msgid "Resigning {apkfilename} with provided debug.keystore" msgstr "{apkfilename} erneut mit dem mitgelieferten debug.keystore signieren" #: ../fdroidserver/update.py msgid "Resize all the icons exceeding the max pixel size and exit" msgstr "" "Größe aller Symbole ändern, die die maximale Pixelgröße überschreiten, und " "beenden" #: ../fdroidserver/common.py msgid "Restrict output to warnings and errors" msgstr "Ausgabe auf Warnungen und Fehler beschränken" #: ../fdroid msgid "Rewrite all the metadata files" msgstr "Alle Metadaten-Dateien neu schreiben" #: ../fdroidserver/rewritemeta.py msgid "Rewrite to a specific format: " msgstr "In ein spezielles Format umschreiben: " #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Rewriting '{appid}'" msgstr "Schreibe '{appid}' neu" #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Rewriting '{appid}' to '{path}'" msgstr "Schreibe '{appid}' auf '{path}' neu" #: ../fdroidserver/lint.py msgid "Run rewritemeta to fix formatting" msgstr "Metadaten neu schreiben, um Formatierungen zu korrigieren" #: ../fdroidserver/server.py ../fdroidserver/upload.py msgid "Running first pass with MD5 checking disabled" msgstr "Erster Durchlauf mit MD5-Prüfung abgeschaltet" #: ../fdroidserver/mirror.py #, python-brace-format msgid "Running wget in {path}" msgstr "Ausführen von wget in {path}" #: ../fdroidserver/dscanner.py msgid "Scan only the latest version of each package" msgstr "Nur die neueste Version jedes Programmpakets durchsuchen" #: ../fdroid msgid "Scan the source code of a package" msgstr "Quellcode eines Programmpakets durchsuchen" #: ../fdroidserver/scanner.py #, python-brace-format msgid "Scanner found {count} problems in {appid}:" msgstr "Scanner fand {count} Probleme in {appid}:" #: ../fdroidserver/scanner.py #, python-brace-format msgid "Scanner found {count} problems in {appid}:{versionCode}:" msgstr "Scanner fand {count} Probleme in {appid}:{versionCode}:" #: ../fdroidserver/build.py msgid "Scanner found {} problem" msgid_plural "Scanner found {} problems" msgstr[0] "Scanner fand {count} Problem" msgstr[1] "Scanner fand {count} Probleme" #: ../fdroidserver/common.py msgid "Set clock to that time using:" msgstr "Einstellen der Uhr auf diese Zeit mit:" #: ../fdroidserver/build.py #, python-brace-format msgid "Set open file limit to {integer}" msgstr "Setzen des Limits für geöffnete Dateien auf {integer}" #: ../fdroid msgid "Set up an app build for a nightly build repo" msgstr "Ein App-Build für einen nightly Build-Repo einrichten" #: ../fdroidserver/build.py msgid "Setting open file limit failed: " msgstr "Das Setzen des Limits für geöffnete Dateien ist fehlgeschlagen: " #: ../fdroidserver/build.py #, python-brace-format msgid "Setting {0} sec timeout for this build" msgstr "Stelle einen {0} Sek timeout für diesen Build ein" #: ../fdroidserver/build.py msgid "Setup an emulator, install the APK on it and perform a Drozer scan" msgstr "" "Einen Emulator einrichten, die APK installieren und mit ihm eine " "Sicherheitsprüfung (Drozer scan) durchführen" msgid "Setup an emulator, install the apk on it and perform a drozer scan" msgstr "" "Einen Emulator einrichten, die APK installieren und mit ihm eine " "Sicherheitsprüfung (Drozer scan) durchführen" #: ../fdroid msgid "Sign and place packages in the repo" msgstr "Programmpakete in Paketquelle signieren und einstellen" #: ../fdroid msgid "Sign indexes created using update --nosign" msgstr "Erstellte Indizes durch Verwendung von „update --nosign“ signieren" #: ../fdroidserver/build.py msgid "Skip scanning the source code for binaries and other problems" msgstr "" "Durchsuchen des Quellcodes nach Binärdateien und anderen Problemen " "überspringen" #: ../fdroidserver/update.py #, python-brace-format msgid "Skipping '{apkfilename}' with invalid signature!" msgstr "Überspringen von '{apkfilename}' mit ungültiger Signatur!" #: ../fdroidserver/update.py #, python-brace-format msgid "Skipping index generation for {appid}" msgstr "Überspringe Indexerzeugung für {appid}" #: ../fdroidserver/update.py #, python-brace-format msgid "Skipping {apkfilename} with invalid signature!" msgstr "Überspringe '{apkfilename}' mit ungültiger Signatur!" #: ../fdroidserver/scanner.py #, python-brace-format msgid "Skipping {appid}: disabled" msgstr "Überspringen von {appid}: deaktiviert" #: ../fdroidserver/scanner.py #, python-brace-format msgid "Skipping {appid}: no builds specified" msgstr "Überspringe {appid}: keine Builds angegeben" #: ../fdroidserver/server.py ../fdroidserver/upload.py msgid "Specify a local folder to sync the repo to" msgstr "" "Einen lokalen Ordner bestimmen, in dem das Repository synchronisiert wird" #: ../fdroidserver/server.py ../fdroidserver/upload.py msgid "Specify an identity file to provide to SSH for rsyncing" msgstr "" "Eine Identitätsdatei bestimmen, die bei Re-Synchronisation an SSH übergeben " "wird" #: ../fdroidserver/update.py msgid "Specify editor to use in interactive mode. Default " msgstr "" "Editor festlegen, der im interaktiven Modus verwendet werden soll. Standard " #, c-format msgid "Specify editor to use in interactive mode. Default %s" msgstr "" "Editor festlegen, der im interaktiven Modus verwendet werden soll. Standard " "%s" #: ../fdroidserver/update.py #, python-brace-format msgid "Specify editor to use in interactive mode. Default is {path}" msgstr "" "Editor festlegen, der im interaktiven Modus verwendet werden soll. Standard " "ist {path}" #: ../fdroidserver/build.py msgid "Specify that we're running on the build server" msgstr "Festlegen, dass F-Droid auf dem Build-Server läuft" #: ../fdroidserver/nightly.py msgid "Specify which debug keystore file to use." msgstr "Geben Sie an, welche Debug Keystore-Datei verwendet werden soll." #: ../fdroidserver/common.py msgid "Spew out even more information than normal" msgstr "Mehr Informationen als gewöhnlich ausspucken" #: ../fdroidserver/nightly.py #, python-brace-format msgid "Striping mystery signature from {apkfilename}" msgstr "Entferne mysteriöse Signatur aus {apkfilename}" #: ../fdroidserver/lint.py #, python-format msgid "Summary '%s' is just the app's name" msgstr "Zusammenfassung '%s' ist nur der Name der App" #: ../fdroidserver/lint.py #, python-brace-format msgid "Summary of length {length} is over the {limit} char limit" msgstr "" "Zusammenfassung mit der Länge {length} liegt über der {limit} Zeichengrenze" #: ../fdroidserver/common.py #, python-brace-format msgid "System clock is older than date in {path}!" msgstr "Die System-Uhr ist älter als das Datum in {path}!" #: ../fdroidserver/build.py msgid "" "Test mode - put output in the tmp directory only, and always build, even if " "the output already exists." msgstr "" "Testmodus - Ausgabe nur ins tmp-Verzeichnis einfügen, immer erstellen, " "selbst wenn die Ausgabe bereits vorhanden ist." #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/update.py #, python-brace-format msgid "The OBB version code must come after \"{name}.\":" msgstr "Der OBB-Versionscode muss nach \"{name}.\" stehen:" #: ../fdroidserver/btlog.py msgid "The base URL for the repo to log (default: https://f-droid.org)" msgstr "" "Basis-Adresse zur Anmeldung am Repository (Standard: https://f-droid.org)" #: ../fdroidserver/mirror.py msgid "The directory to write the mirror to" msgstr "Das Verzeichnis, in das der Mirror geschrieben werden soll" #: ../fdroidserver/server.py msgid "The only commands currently supported are 'init' and 'update'" msgstr "Derzeit werden nur die Befehle „init” und „update” unterstützt" #: ../fdroidserver/index.py msgid "The repository's fingerprint does not match." msgstr "Der Fingerabdruck des Repositories stimmt nicht." #: ../fdroidserver/common.py msgid "The repository's index could not be verified." msgstr "Der Index des Repositories konnte nicht verifiziert werden." #: ../fdroidserver/server.py #, python-brace-format msgid "The root dir for local_copy_dir \"{path}\" does not exist!" msgstr "Das Wurzelverzeichnis für local_copy_dir \"{path}\" existiert nicht!" #: ../fdroidserver/nightly.py msgid "The the file to be included in the repo (path or glob)" msgstr "Die in das Repo aufzunehmende Datei (Pfad oder Glob)" #: ../fdroidserver/publish.py msgid "There is a keyalias collision - publishing halted" msgstr "Es gibt eine Keyalias-Kollision - Veröffentlichung gestoppt" #: ../fdroidserver/import.py #, python-format msgid "This repo already has local metadata: %s" msgstr "Dieses Repo hat bereits lokale Metadaten: %s" #: ../fdroidserver/server.py ../fdroidserver/upload.py msgid "" "To use awsbucket, awssecretkey and awsaccesskeyid must also be set in config." "py!" msgstr "" "Um awsbucket zu benutzen, müssen awssecretkey und awsaccesskeyid auch in der " "config.py gesetzt sein!" #: ../fdroidserver/lint.py msgid "UCM is set but it looks like checkupdates hasn't been run yet" msgstr "" "UCM ist gesetzt, aber es sieht so aus, als ob checkupdates noch nicht " "ausgeführt wurde" #: ../fdroidserver/lint.py msgid "URL shorteners should not be used" msgstr "Kurz-URL-Dienste sollten nicht verwendet werden" #: ../fdroidserver/metadata.py msgid "URL title is just the URL, use brackets: [URL]" msgstr "URL-Titel ist nur die URL, verwenden Sie Klammern: [URL]" #: ../fdroidserver/lint.py #, python-brace-format msgid "URL {url} in Description: {error}" msgstr "URL {url} in der Beschreibung: {error}" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Unexpected text on same line as {field} in {linedesc}" msgstr "Unerwarteter Text in der gleichen Zeile wie {field} in {linedesc}" #: ../fdroid msgid "Unknown exception found!" msgstr "Unbekannter Fehler aufgetreten!" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vname #: ../fdroidserver/lint.py #, python-brace-format msgid "Unknown file '{filename}' in build '{versionName}'" msgstr "Unbekannte Datei '{filename}' im Build '{versionName}''" #: ../fdroidserver/metadata.py #, python-format msgid "Unknown metadata format: %s" msgstr "Unbekanntes Metadatenformat: %s" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Unknown metadata format: {path}" msgstr "Unbekanntes Metadaten-Format: {path}" #: ../fdroidserver/common.py msgid "Unknown version of aapt, might cause problems: " msgstr "Unbekannte Version von aapt, könnte Probleme verursachen: " #: ../fdroidserver/lint.py msgid "Unlinkified link - use [http://foo.bar Link title] or [http://foo.bar]" msgstr "" "Nicht verlinkter Link - verwenden Sie [http://foo.bar Linktitel] oder " "[http://foo.bar]" #: ../fdroidserver/lint.py msgid "Unnecessary leading space" msgstr "Unnötige führende Leerzeichen" #: ../fdroidserver/lint.py msgid "Unnecessary trailing space" msgstr "Unnötige Leerzeichen an Ende" #: ../fdroidserver/metadata.py msgid "Unrecognised app field: " msgstr "Nicht erkanntes App-Feld: " #: ../fdroidserver/metadata.py #, python-brace-format msgid "Unrecognised field '{field}' in {linedesc}" msgstr "Nicht erkanntes Feld '{field}' in {linedesc}" #: ../fdroidserver/update.py #, python-brace-format msgid "Unsupported file type \"{extension}\" for repo graphic" msgstr "Nicht unterstützter Dateityp \"{extension}\" für Repo-Grafik" #: ../fdroidserver/update.py #, python-brace-format msgid "Unsupported graphics file found: {path}" msgstr "Nicht unterstützte Grafikdatei gefunden: {path}" #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Unsupported metadata format, use: --to [{supported}]" msgstr "Nicht-unterstütztes Metadatenformat, verwenden Sie --to [{supported}]" #: ../fdroidserver/metadata.py msgid "Unterminated ]" msgstr "Unbeendet ]" #: ../fdroidserver/metadata.py msgid "Unterminated ]]" msgstr "Unbeendet ]]" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Unterminated build in {name}" msgstr "Unbeendeter Build in {name}" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Unterminated continuation in {name}" msgstr "Unfertige Fortsetzung in {name}" #: ../fdroidserver/lint.py #, python-format msgid "Unused extlib at %s" msgstr "Nicht verwendete extlib bei %s" #: ../fdroidserver/lint.py #, python-format msgid "Unused file at %s" msgstr "Nicht verwendete Datei bei %s" #: ../fdroidserver/lint.py msgid "Update Check Name is set to the known app id - it can be removed" msgstr "" "Update Check Name ist auf die bekannte App-ID gesetzt - sie kann entfernt " "werden" #: ../fdroid msgid "Update repo information for new packages" msgstr "Paketquelleninformationen zu neuen Programmpaketen aktualisieren" #: ../fdroid msgid "Update the binary transparency log for a URL" msgstr "Binäres Transparency-Log einer URL aktualisieren" #: ../fdroid msgid "Update the stats of the repo" msgstr "Repository-Statistik aktualisieren" #: ../fdroidserver/update.py ../fdroidserver/build.py msgid "Update the wiki" msgstr "Wiki aktualisieren" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "Usage" msgstr "Syntax" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "Usage: %s\n" msgstr "Syntax: %s\n" #: ../fdroidserver/lint.py msgid "Use /HEAD instead of /master to point at a file in the default branch" msgstr "" "Verwenden Sie /HEAD anstelle von /master, um auf eine Datei im Hauptzweig zu " "verweisen" #: ../fdroidserver/update.py msgid "Use `fdroid update -c` to create it." msgstr "Verwenden Sie `fdroid update -c´ zum Erstellen." #: ../fdroidserver/build.py msgid "Use build server" msgstr "Build-Server verwenden" #: ../fdroidserver/update.py msgid "Use date from APK instead of current time for newly added APKs" msgstr "APK-Datum statt der aktuellen Zeit für neu hinzugefügte APKs verwenden" msgid "Use date from apk instead of current time for newly added apks" msgstr "APK-Datum statt der aktuellen Zeit für neu hinzugefügte APKs verwenden" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Using \"{path}\" for configuring s3cmd." msgstr "Verwende {path} zur Konfiguration von s3cmd." #: ../fdroidserver/common.py msgid "" "Using Java's jarsigner, not recommended for verifying APKs! Use apksigner" msgstr "" "Von Java jarsigner zur Verifikation von APKs wird abgeraten! Verwenden Sie " "apksigner" #: ../fdroidserver/init.py #, python-brace-format msgid "Using existing keystore \"{path}\"" msgstr "Verwende vorhandenen Schlüsselspeicher \"{path}\"" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Using s3cmd to sync with: {url}" msgstr "Verwende s3cmd zum Synchronisieren mit: {url}" #: ../fdroid msgid "Valid commands are:" msgstr "Gültige Befehle sind:" #: ../fdroid msgid "Verify the integrity of downloaded packages" msgstr "Integrität der heruntergeladenen Programmpakete überprüfen" #: ../fdroidserver/index.py msgid "Verifying index signature:" msgstr "Überprüfe die Index-Signatur:" #: ../fdroid msgid "Warn about possible metadata errors" msgstr "Vor möglichen Metadaten-Fehlern warnen" #: ../fdroidserver/update.py msgid "" "When configured for signed indexes, create only unsigned indexes at this " "stage" msgstr "" "Bei einer Konfiguration mit signierten Indizes, in dieser Phase nur " "unsignierte Indizes erstellen" msgid "X.509 'Distiguished Name' used when generating keys" msgstr "X.509 'Angesehener Name' wenn Schlüssel generiert werden" #: ../fdroidserver/init.py msgid "X.509 'Distinguished Name' used when generating keys" msgstr "X.509 'Distinguished Name' zum Erzeugen von Schlüsseln" #: ../fdroidserver/common.py msgid "You can use ANDROID_HOME to set the path to your SDK, i.e.:" msgstr "" "Sie können ANDROID_HOME verwenden, um den Pfad zu Ihrem SDK zu setzen, z.B.:" #: ../fdroidserver/nightly.py #, python-brace-format msgid "adding IdentityFile to {path}" msgstr "Füge IdentityFile zu {path} hinzu" #: ../fdroidserver/update.py #, python-brace-format msgid "adding to {name}: {path}" msgstr "Hinzufügen zu {name}: {path}" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "ambiguous option: %(option)s could match %(matches)s" msgstr "Mehrdeutige Option: %(option)s könnte übereinstimmen mit %(matches)s" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "ambiguous option: %s (%s?)" msgstr "Mehrdeutige Option: %s (%s?)" #: ../fdroidserver/lint.py ../fdroidserver/rewritemeta.py msgid "applicationId in the form APPID" msgstr "App-ID in der Form APPID" #: ../fdroidserver/checkupdates.py msgid "applicationId to check for updates" msgstr "App-ID, um auf Aktualisierungen zu prüfen" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/verify.py ../fdroidserver/publish.py #: ../fdroidserver/dscanner.py ../fdroidserver/build.py #: ../fdroidserver/scanner.py ../fdroidserver/install.py msgid "applicationId with optional versionCode in the form APPID[:VERCODE]" msgstr "App-ID mit optionalem Versionscode in der Form APPID[:VERCODE]" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "argument \"-\" with mode %r" msgstr "Argument \"-\" mit Modus %r" #: ../fdroidserver/nightly.py msgid "attempting bare ssh connection to test deploy key:" msgstr "Versuch einer reinen ssh-Verbindung, um den Deployment-Key zu testen:" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "can't open '%s': %s" msgstr "„%s” konnte nicht geöffnet werden: %s" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "cannot have multiple subparser arguments" msgstr "Mehrere Subparser-Argumente sind unzulässig" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "cannot merge actions - two groups are named %r" msgstr "kann keine Aktionen zusammenführen - zwei Gruppen heißen %r" #: ../fdroidserver/nightly.py msgid "cannot publish update, did you set the deploy key?" msgstr "" "Kann das Update nicht veröffentlichen. Ist der Deploy-Schlüssel gesetzt?" #: ../fdroidserver/nightly.py #, python-brace-format msgid "cloning {url}" msgstr "Klone {url}" #: ../fdroidserver/server.py msgid "command to execute, either 'init' or 'update'" msgstr "Ausführungsbefehl, entweder 'init' oder 'update'" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "complex" msgstr "komplex" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "conflicting option string: %s" msgid_plural "conflicting option strings: %s" msgstr[0] "widersprüchliche Optionsangabe: %s" msgstr[1] "widersprüchliche Optionsangaben: %s" #: ../fdroidserver/nightly.py #, python-brace-format msgid "copying {apkfilename} into {path}" msgstr "Kopiere {apkfilename} nach {path}" #: ../fdroidserver/nightly.py #, python-brace-format msgid "created {path}" msgstr "{path} erzeugt" #: ../fdroidserver/update.py #, python-brace-format msgid "deleting: repo/{apkfilename}" msgstr "Lösche: repo/{apkfilename}" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "dest= is required for options like %r" msgstr "dest= wird benötigt für Optionen wie %r" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "expected %s argument" msgid_plural "expected %s arguments" msgstr[0] "%s Argument erwartet" msgstr[1] "%s Argumente erwartet" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "expected at least one argument" msgstr "mindestens ein Argument erwartet" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "expected at most one argument" msgstr "höchstens ein Argument erwartet" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "expected one argument" msgstr "ein Argument erwartet" #: ../fdroid msgid "fdroid [-h|--help|--version] []" msgstr "fdroid [-h|--help|--version] []" #: ../fdroid msgid "fdroid [] [-h|--help|--version|]" msgstr "fdroid [] [-h|--help|--version|]" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "floating-point" msgstr "Gleitkomma" #: ../fdroidserver/metadata.py msgid "force errors to be warnings, or ignore" msgstr "Fehler zwingend als Warnungen ausgeben oder ignorieren" #: ../fdroidserver/metadata.py msgid "force metadata errors (default) to be warnings, or to be ignored." msgstr "" "Erzwingen, dass Metadatenfehler (Standard) als Warnung ausgegeben oder " "ignoriert werden." #: ../fdroidserver/common.py msgid "git svn clone failed" msgstr "git svn Klonen fehlgeschlagen" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "ignored explicit argument %r" msgstr "Ausdrückliches Argument %r ignoriert" #: ../fdroidserver/index.py msgid "index-v1 must have a signature, use `fdroid signindex` to create it!" msgstr "" "index-v1 muß eine Signatur haben, verwenden Sie `fdroid signindex` um sie zu " "erzeugen!" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "integer" msgstr "Ganzzahl" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "invalid %(type)s value: %(value)r" msgstr "Ungültige(r) %(type)s mit Wert: %(value)r" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "invalid choice: %(value)r (choose from %(choices)s)" msgstr "Ungültige Auswahl: %(value)r (Wählen Sie aus %(choices)s)" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "invalid conflict_resolution value: %r" msgstr "Ungültiger conflict_resolution-Wert: %r" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "" "invalid option string %(option)r: must start with a character " "%(prefix_chars)r" msgstr "" "Ungültige Optionszeichenfolge %(option)r: muss mit einem Zeichen " "%(prefix_chars)r beginnen" #: ../fdroidserver/server.py #, python-brace-format msgid "" "local_copy_dir does not end with \"fdroid\", perhaps you meant: \"{path}\"" msgstr "" "local_copy_dir endet nicht auf \"fdroid\", meinten Sie stattdessen: " "\"{path}\"" #: ../fdroidserver/server.py msgid "local_copy_dir must be an absolute path!" msgstr "local_copy_dir muß eine absolute Pfadangabe sein!" #: ../fdroidserver/server.py msgid "local_copy_dir must be directory, not a file!" msgstr "local_copy_dir muß ein Verzeichnis sein, keine Datei!" #: ../fdroidserver/index.py #, python-format msgid "mirror '%s' does not end with 'fdroid'!" msgstr "Mirror '%s' ended nicht auf 'fdroid'!" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "mutually exclusive arguments must be optional" msgstr "sich gegenseitig ausschließende Argumente müssen optional sein" #: ../fdroidserver/mirror.py #, python-brace-format msgid "no \"icon\" in {appid}" msgstr "kein \"icon\" in {appid}" #: ../fdroidserver/signatures.py msgid "no APK supplied" msgstr "Kein APK bereitgestellt" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "no such option: %s" msgstr "keine solche Option: %s" #: ../fdroid msgid "no version info found!" msgstr "Keine Versionsinformationen gefunden!" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "not allowed with argument %s" msgstr "unzulässig mit Argument %s" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "one of the arguments %s is required" msgstr "eines der Argumente %s ist erforderlich" #: ../fdroidserver/index.py ../fdroidserver/common.py msgid "only accepts strings, lists, and tuples" msgstr "akzeptiert nur Zeichenketten, Listen und Tupel" #: ../fdroidserver/install.py #, python-format msgid "option %s: If you really want to install all the signed apps, use --all" msgstr "" "Option %s: Wenn Sie wirklich alle signierten Apps installieren wollen, " "verwenden Sie --all" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "option %s: invalid %s value: %r" msgstr "Option %s: ungültiger %s Wert: %r" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "option %s: invalid choice: %r (choose from %s)" msgstr "Option %s: ungültige Wahl: %r (wählen Sie aus %s)" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option -%s not recognized" msgstr "Option -%s nicht erkannt" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option -%s requires argument" msgstr "Option -%s erfordert Argument" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option --%s must not have an argument" msgstr "Option --%s darf kein Argument haben" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option --%s not a unique prefix" msgstr "option --%s ist kein eindeutiges Präfix" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option --%s not recognized" msgstr "Option --%s nicht erkannt" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option --%s requires argument" msgstr "Option --%s erfordert Argument" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "optional arguments" msgstr "optionale Argumente" #: ../fdroidserver/nightly.py #, python-brace-format msgid "overwriting existing {path}" msgstr "überschreiben des vorhandenen {path}" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "positional arguments" msgstr "Positionsparameter" #: ../fdroidserver/signatures.py #, python-brace-format msgid "" "refuse downloading via insecure HTTP connection (use HTTPS or specify --no-" "https-check): {apkfilename}" msgstr "" "Download über ungesicherte HTTP-Verbindung verweigert (verwenden Sie HTTPS " "oder geben Sie --no-https-check an): {apkfilename}" #: ../fdroidserver/signatures.py #, python-brace-format msgid "" "refuse downloading via insecure http connection (use https or specify --no-" "https-check): {apkfilename}" msgstr "" "Download über ungesicherte HTTP-Verbindung verweigert (verwenden Sie HTTPS " "oder geben Sie --no-https-check an): {apkfilename}" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "s3cmd sync indexes {path} to {url} and delete" msgstr "s3cmd-Sync {path} indizieren auf {url} und dann löschen" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "show program's version number and exit" msgstr "Versionsnummer der Anwendung anzeigen und beenden" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.5/optparse.py #: /usr/lib/python3.6/argparse.py /usr/lib/python3.6/optparse.py msgid "show this help message and exit" msgstr "diese Hilfemeldung anzeigen und beenden" #: ../fdroidserver/signatures.py msgid "signed APK, either a file-path or HTTPS URL." msgstr "signiertes APK, entweder ein Dateipfad oder eine HTTPS-URL." #: ../fdroidserver/update.py #, python-brace-format msgid "skipping source tarball: {path}" msgstr "Überspringe Quell-Tarball: {path}" #: ../fdroidserver/lint.py msgid "srclibs missing name and/or @" msgstr "Srclibs-Name fehlt und/oder @" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "the following arguments are required: %s" msgstr "die Folgenden Argumente sind erforderlich: %s" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "unexpected option string: %s" msgstr "Unerwartete Optionsverkettung: %s" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "unknown parser %(parser_name)r (choices: %(choices)s)" msgstr "Unbekannter Parser %(parser_name)r (Auswahl: %(choices)s)" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "unrecognized arguments: %s" msgstr "nicht erkannte Argumente: %s" #: ../fdroidserver/common.py #, python-brace-format msgid "unsafe permissions on '{config_file}' (should be 0600)!" msgstr "Unsichere Berechtigungen in „{config_file}” (sollte 0600 sein)!" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py ../fdroid msgid "usage: " msgstr "Syntax: " #: ../fdroid msgid "usage: fdroid [-h|--help|--version] []" msgstr "Syntax: fdroid [-h|--help|--version] []" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "using Apache libcloud to sync with {url}" msgstr "Verwende Apache libcloud zur Synchronisation mit {url}" #: ../fdroidserver/publish.py #, python-brace-format msgid "{0} app, {1} key aliases" msgid_plural "{0} apps, {1} key aliases" msgstr[0] "{0} app, {1} Schlüsselaliase" msgstr[1] "{0} apps, {1} Schlüsselaliase" #: ../fdroidserver/update.py #, python-brace-format msgid "{apkfilename} ({appid}) has no metadata!" msgstr "{apkfilename} ({appid}) besitzt keine Metadaten!" #: ../fdroidserver/update.py #, python-brace-format msgid "{apkfilename} has multiple {name} files, looks like Master Key exploit!" msgstr "" "{apkfilename} hat mehrere {name} Dateien, sieht aus wie Master Key Exploit!" #: ../fdroidserver/update.py #, python-brace-format msgid "{apkfilename}'s AndroidManifest.xml has a bad date: " msgstr "" "Die AndroidManifest.xml der App „{apkfilename}” hat ein ungültiges Datum: " #: ../fdroidserver/update.py #, python-brace-format msgid "{appid} does not have a name! Using package name instead." msgstr "{appid} besitzt keinen Namen! Verwende den Paketnamen stattdessen." #: ../fdroidserver/mirror.py #, python-brace-format msgid "{appid} is missing {name}" msgstr "{appid} fehlt {name}" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vname #: ../fdroidserver/lint.py #, python-brace-format msgid "{appid}: Unknown extlib {path} in build '{versionName}'" msgstr "{appid}: unbekannte Extlib {path} im Build '{versionName}'" #: ../fdroidserver/scanner.py #, python-brace-format msgid "{appid}: no builds specified, running on current source state" msgstr "{appid}: keine builds angegeben, läuft auf dem aktuellen source-Stand" #: ../fdroidserver/metadata.py #, python-brace-format msgid "{field} not terminated in {name}" msgstr "{field} nicht in {name} beendet" #: ../fdroidserver/update.py #, python-brace-format msgid "{name} \"{path}\" does not exist! Correct it in config.py." msgstr "" "{name} \"{path}\" existiert nicht! Korrigieren Sie es in der config.py." #: ../fdroidserver/nightly.py #, python-brace-format msgid "{path} does not exist! Create it by running:" msgstr "{path} existiert nicht! Erstellen Sie es durch Ausführen von:" #: ../fdroidserver/update.py #, python-brace-format msgid "{path} has bad file signature \"{pattern}\", possible Janus exploit!" msgstr "" "{path} hat die schlechte Dateisignatur \"{pattern}\", möglicher Janus-" "Exploit!" #: ../fdroidserver/update.py #, python-brace-format msgid "{path} is zero size!" msgstr "{path} hat Dateigröße Null!" #: ../fdroidserver/mirror.py #, python-brace-format msgid "{url} does not end with \"fdroid\", check the URL path!" msgstr "{url} endet nicht mit \"fdroid\", überprüfen Sie den URL-Pfad!" #: ../fdroidserver/build.py msgid "{} build failed" msgid_plural "{} builds failed" msgstr[0] "{} Build fehlgeschlagen" msgstr[1] "{} Builds fehlgeschlagen" #: ../fdroidserver/build.py msgid "{} build succeeded" msgid_plural "{} builds succeeded" msgstr[0] "Buildvorgang erfolgreich" msgstr[1] "Buildvorgänge erfolgreich" #, fuzzy #~ msgid "Add PGP signatures for packages in repo using GnuPG" #~ msgstr "GPG-Signaturen für Programmpakete in der Paketquelle hinzufügen" #~ msgid "Add gpg signatures for packages in repo" #~ msgstr "GPG-Signaturen für Programmpakete in der Paketquelle hinzufügen" #~ msgid "Clean update - don't uses caches, reprocess all apks" #~ msgstr "" #~ "Sauber - ohne Verwendung der Zwischenspeicher - aktualisieren, alle APKs " #~ "wiederaufbereiten" #~ msgid "app-id in the form APPID" #~ msgstr "App-ID in der Form APPID" #~ msgid "app-id to check for updates" #~ msgstr "App-ID, um auf Aktualisierungen zu prüfen" #~ msgid "app-id with optional versionCode in the form APPID[:VERCODE]" #~ msgstr "App-ID mit optionalem Versionscode in der Form APPID[:VERCODE]" #~ msgid "app-id with optional versioncode in the form APPID[:VERCODE]" #~ msgstr "App-ID mit optionalem Versionscode in der Form APPID[:VERCODE]" fdroidserver-1.0.9/locale/pt_PT/0000775000175000017500000000000013324115531016410 5ustar hanshans00000000000000fdroidserver-1.0.9/locale/pt_PT/LC_MESSAGES/0000775000175000017500000000000013324115531020175 5ustar hanshans00000000000000fdroidserver-1.0.9/locale/pt_PT/LC_MESSAGES/fdroidserver.po0000664000175000017500000014302713322065577023256 0ustar hanshans00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: fdroidserver 0.9\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" "POT-Creation-Date: 2018-02-13 09:01+0100\n" "PO-Revision-Date: 2017-12-08 08:48+0000\n" "Last-Translator: Sérgio Marques \n" "Language-Team: Portuguese (Portugal) \n" "Language: pt_PT\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" "X-Generator: Weblate 2.18-dev\n" #: ../fdroidserver/nightly.py msgid "" "\n" "SSH Public Key to be used as Deploy Key:" msgstr "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "" "\n" "{path} encoded for the DEBUG_KEYSTORE secret variable:" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "\"%s/\" has no matching metadata file!" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "\"{path}\" contains outdated {name} ({version})" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "\"{path}\" contains recent {name} ({version})" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "\"{path}\" exists but s3cmd is not installed!" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "\"{path}\" is not an accepted format, convert to: {formats}" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "%(option)s option requires %(number)d argument" msgid_plural "%(option)s option requires %(number)d arguments" msgstr[0] "" msgstr[1] "" #: ../fdroidserver/mirror.py #, fuzzy, python-format msgid "%(prog)s [options] url" msgstr "%prog [opções]" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "%(prog)s: error: %(message)s\n" msgstr "%(prog)s: erro: %(message)s\n" #: ../fdroidserver/scanner.py #, python-format msgid "%d problems found" msgstr "%d problemas encontrados" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "%prog [options]" msgstr "%prog [opções]" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "%r is not callable" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "%s is not an accepted build field" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "%s option does not take a value" msgstr "" #: ../fdroidserver/index.py ../fdroidserver/common.py msgid "'keypass' not found in config.py!" msgstr "" #: ../fdroidserver/index.py ../fdroidserver/common.py msgid "'keystore' not found in config.py!" msgstr "" #: ../fdroidserver/index.py ../fdroidserver/common.py msgid "'keystorepass' not found in config.py!" msgstr "" #: ../fdroidserver/index.py ../fdroidserver/common.py msgid "'repo_keyalias' not found in config.py!" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "'required' is an invalid argument for positionals" msgstr "" #: ../fdroidserver/common.py msgid "'sdk_path' not set in 'config.py'!" msgstr "" #. Translators: "build-tools" is the file name of a package from #. Google, it is part of the Android SDK. So it probably shouldn't be #. translated or transliterated. #: ../fdroidserver/common.py #, python-brace-format msgid "'{aapt}' is too old, fdroid requires build-tools-23.0.0 or newer!" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "'{aapt}' is too old, fdroid requires build-tools-{version} or newer!" msgstr "" #: ../fdroidserver/install.py #, python-brace-format msgid "'{apkfilename}' is already installed on {dev}." msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "'{field}' will be in random order! Use () or [] brackets if order is important!" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "'{path}' failed to execute!" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "'{value}' is not a valid {field} in {appid}. Regex pattern: {pattern}" msgstr "" #: ../fdroidserver/checkupdates.py #, python-brace-format msgid "...checkupdate failed for {appid} : {error}" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid ".__call__() not defined" msgstr "" #: ../fdroidserver/metadata.py msgid ".fdroid.txt is not supported! Convert to .fdroid.yml or .fdroid.json." msgstr "" #: ../fdroidserver/lint.py msgid "/issues is missing" msgstr "" #: ../fdroidserver/mirror.py #, fuzzy msgid "A URL is required as an argument!" msgstr "opção -%s requer um argumento" #: ../fdroid msgid "Add PGP signatures using GnuPG for packages in repo" msgstr "" #: ../fdroid msgid "Add a new application from its source code" msgstr "" #: ../fdroidserver/update.py msgid "Add a repo signing key to an unsigned repo" msgstr "" #: ../fdroidserver/update.py msgid "Add skeleton metadata files for APKs that are missing them" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Adding new repo for only {name}" msgstr "" #: ../fdroidserver/init.py msgid "Alias of the repo signing key in the keystore" msgstr "" #: ../fdroidserver/import.py msgid "Allows a different revision (or git branch) to be specified for the initial import" msgstr "" #: ../fdroidserver/mirror.py msgid "Also mirror the full archive section" msgstr "" #: ../fdroidserver/lint.py msgid "Also warn about formatting issues, like rewritemeta -l" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Android SDK '{path}' does not have '{dirname}' installed!" msgstr "" #: ../fdroidserver/common.py msgid "Android SDK not found!" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Android SDK path '{path}' does not exist!" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Android SDK path '{path}' is not a directory!" msgstr "" #. Translators: "build-tools" is the file name of a package from #. Google, it is part of the Android SDK. So it probably shouldn't be #. translated or transliterated. #: ../fdroidserver/common.py #, python-brace-format msgid "Android build-tools path '{path}' does not exist!" msgstr "" #: ../fdroidserver/update.py msgid "AndroidManifest.xml has no date" msgstr "" #: ../fdroidserver/lint.py #, python-brace-format msgid "App is in '{repo}' but has a link to {url}" msgstr "" #: ../fdroidserver/lint.py msgid "Appending .git is not necessary" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Archiving {apkfilename} with invalid signature!" msgstr "" #: ../fdroidserver/mirror.py msgid "Base URL to mirror, can include the index signing key using the query string: ?fingerprint=" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vname #: ../fdroidserver/lint.py #, python-brace-format msgid "Branch '{branch}' used as commit in build '{versionName}'" msgstr "" #: ../fdroidserver/lint.py #, python-brace-format msgid "Branch '{branch}' used as commit in srclib '{srclib}'" msgstr "" #: ../fdroid msgid "Build a package from source" msgstr "" #: ../fdroidserver/build.py msgid "Build all applications available" msgstr "" #: ../fdroidserver/lint.py msgid "Build generated by `fdroid import` - remove disable line once ready" msgstr "" #: ../fdroidserver/build.py msgid "Build only the latest version of each package" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Build should have comma-separated versionName and versionCode, not \"{value}\", in {linedesc}" msgstr "" #: ../fdroidserver/init.py #, python-format msgid "Built repo based in \"%s\" with this config:" msgstr "" #: ../fdroidserver/build.py msgid "Can't build due to {} error while scanning" msgid_plural "Can't build due to {} errors while scanning" msgstr[0] "" msgstr[1] "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Cannot find a packageName for {path}!" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Cannot find an appid for {path}!" msgstr "" #: ../fdroidserver/vmtools.py #, python-brace-format msgid "Cannot read \"{path}\"!" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Cannot resolve app id {appid}" msgstr "" #: ../fdroidserver/rewritemeta.py msgid "Cannot use --list and --to at the same time" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Cannot write \"{path}\", not an accepted format, use: {formats}" msgstr "" #: ../fdroidserver/lint.py msgid "Categories are not set" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Category '%s' is not valid" msgstr "" #: ../fdroid msgid "Check for updates to applications" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Checking archiving for {appid} - apks:{integer}, keepversions:{keep}, archapks:{arch}" msgstr "" #: ../fdroidserver/dscanner.py msgid "Clean after all scans have finished" msgstr "" #: ../fdroidserver/dscanner.py msgid "Clean before the scans start and rebuild the container" msgstr "" #: ../fdroidserver/dscanner.py msgid "Clean up all containers and then exit" msgstr "" #: ../fdroidserver/update.py msgid "Clean update - don't uses caches, reprocess all APKs" msgstr "" #: ../fdroidserver/import.py msgid "Comma separated list of categories." msgstr "" #: ../fdroid #, c-format, python-format msgid "Command '%s' not recognised.\n" msgstr "Comando '%s' não reconhecido.\n" #: ../fdroidserver/checkupdates.py msgid "Commit changes" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Could not find '{command}' on your system" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Could not find {path} to remove it" msgstr "" #: ../fdroidserver/update.py msgid "Could not open apk file for analysis" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/import.py msgid "Couldn't find latest version code" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vname #: ../fdroidserver/import.py msgid "Couldn't find latest version name" msgstr "" #: ../fdroidserver/import.py msgid "Couldn't find package ID" msgstr "" #: ../fdroidserver/update.py msgid "Cowardily refusing to overwrite existing signing key setup!" msgstr "" #: ../fdroidserver/update.py msgid "Create a repo signing key in a keystore" msgstr "" #: ../fdroidserver/update.py msgid "Create skeleton metadata files that are missing" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Created new container \"{name}\"" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Creating \"{path}\" for configuring s3cmd." msgstr "" #: ../fdroidserver/publish.py msgid "Creating log directory" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Creating new S3 bucket: {url}" msgstr "" #: ../fdroidserver/publish.py msgid "Creating output directory" msgstr "" #: ../fdroidserver/index.py msgid "Creating signed index with this key (SHA256):" msgstr "" #: ../fdroidserver/import.py ../fdroidserver/verify.py #: ../fdroidserver/publish.py msgid "Creating temporary directory" msgstr "" #: ../fdroidserver/index.py msgid "Creating unsigned index in preparation for signing" msgstr "" #: ../fdroidserver/nightly.py msgid "DEBUG_KEYSTORE is not set or the value is incomplete" msgstr "" #: ../fdroidserver/update.py msgid "Delete APKs and/or OBBs without metadata from the repo" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Deleting unknown file: {path}" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Description '%s' is just the app's summary" msgstr "" #: ../fdroidserver/lint.py msgid "Description has a duplicate line" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Description has a list (%s) but it isn't bulleted (*) nor numbered (#)" msgstr "" #: ../fdroidserver/lint.py #, python-brace-format msgid "Description of length {length} is over the {limit} char limit" msgstr "" #: ../fdroidserver/mirror.py #, python-brace-format msgid "Do not include \"{path}\" in URL!" msgstr "" #: ../fdroidserver/init.py msgid "Do not prompt for Android SDK path, just fail" msgstr "" #: ../fdroidserver/build.py msgid "Don't create a source tarball, useful when testing a build" msgstr "" #: ../fdroidserver/stats.py msgid "Don't do anything logs-related" msgstr "" #: ../fdroidserver/build.py msgid "Don't refresh the repository, useful when testing a build with no internet connection" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/nightly.py #: ../fdroidserver/upload.py msgid "Don't use rsync checksums" msgstr "" #: ../fdroid msgid "Download complete mirrors of small repos" msgstr "" #: ../fdroidserver/stats.py msgid "Download logs we don't have" msgstr "" #: ../fdroidserver/common.py msgid "Downloading the repository already failed once, not trying again." msgstr "" #: ../fdroidserver/verify.py #, python-brace-format msgid "Downloading {url} failed. {error}" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Duplicate build recipe found for versionCode {versionCode} in {linedesc}" msgstr "" #: ../fdroidserver/lint.py #, python-brace-format msgid "Duplicate link in '{field}': {url}" msgstr "" #: ../fdroid msgid "Dynamically scan APKs post build" msgstr "" #: ../fdroidserver/mirror.py msgid "" "ERROR: this command should never be used to mirror f-droid.org!\n" "A full mirror of f-droid.org requires more than 200GB." msgstr "" #: ../fdroidserver/nightly.py msgid "ERROR: unsupported CI type, patches welcome!" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Empty build flag at {linedesc}" msgstr "" #: ../fdroidserver/init.py #, python-format msgid "" "Enter the path to the Android SDK (%s) here:\n" "> " msgstr "" #: ../fdroidserver/server.py ../fdroidserver/checkupdates.py #: ../fdroidserver/upload.py #, python-format msgid "Error while attempting to publish log: %s" msgstr "" #: ../fdroidserver/import.py msgid "Error while getting repo address" msgstr "" #: ../fdroid msgid "Extract signatures from APKs" msgstr "" #: ../fdroidserver/signatures.py #, python-brace-format msgid "Failed fetching signatures for '{apkfilename}': {error}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Failed reading {path}: {error}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Failed resizing {path}: {error}" msgstr "" #: ../fdroidserver/publish.py msgid "Failed to align application" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Failed to create S3 bucket: {url}" msgstr "" #: ../fdroidserver/common.py msgid "Failed to get APK manifest information" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Failed to get apk information, deleting {path}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Failed to get apk information, skipping {path}" msgstr "" #: ../fdroidserver/install.py #, python-brace-format msgid "Failed to install '{apkfilename}' on {dev}: {error}" msgstr "" #: ../fdroidserver/publish.py ../fdroidserver/common.py msgid "Failed to sign application" msgstr "" #: ../fdroidserver/common.py msgid "Failed to zipalign application" msgstr "" #: ../fdroidserver/build.py #, python-brace-format msgid "Fetched buildserverid from VM: {buildserverid}" msgstr "" #: ../fdroidserver/signatures.py #, python-brace-format msgid "Fetched signatures for '{apkfilename}' -> '{sigdir}'" msgstr "" #: ../fdroidserver/verify.py ../fdroidserver/stats.py ../fdroidserver/update.py #: ../fdroidserver/rewritemeta.py ../fdroidserver/build.py #: ../fdroidserver/checkupdates.py ../fdroidserver/scanner.py #: ../fdroidserver/install.py msgid "Finished" msgstr "" #: ../fdroidserver/lint.py msgid "Flattr donation methods belong in the FlattrID flag" msgstr "" #: ../fdroidserver/lint.py msgid "Forbidden HTML tags" msgstr "" #: ../fdroidserver/build.py msgid "Force build of disabled apps, and carries on regardless of scan problems. Only allowed in test mode." msgstr "" #: ../fdroidserver/build.py #, python-brace-format msgid "Force halting build after {0} sec timeout!" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Found \"{path}\" graphic without metadata for app \"{name}\"!" msgstr "" #: ../fdroidserver/common.py msgid "Found invalid appids in arguments" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/common.py msgid "Found invalid versionCodes for some apps" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Found multiple metadata files for {appid}" msgstr "" #: ../fdroidserver/index.py msgid "Found multiple signing certificates for repository." msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Found multiple signing certificates in {path}" msgstr "" #: ../fdroidserver/index.py msgid "Found no signing certificates for repository." msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Found non-file at %s" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Generated skeleton metadata for {appid}" msgstr "" #: ../fdroidserver/common.py #, python-format msgid "Git checkout of '%s' failed" msgstr "" #: ../fdroidserver/common.py msgid "Git clean failed" msgstr "" #: ../fdroidserver/common.py msgid "Git fetch failed" msgstr "" #: ../fdroidserver/common.py msgid "Git remote set-head failed" msgstr "" #: ../fdroidserver/common.py msgid "Git reset failed" msgstr "" #: ../fdroidserver/common.py msgid "Git submodule sync failed" msgstr "" #: ../fdroidserver/common.py msgid "Git submodule update failed" msgstr "" #: ../fdroidserver/common.py msgid "HTTPS must be used with Subversion URLs!" msgstr "" #: ../fdroidserver/index.py msgid "Ignoring package without metadata: " msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Ignoring stale cache data for {apkfilename}" msgstr "" #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Ignoring {ext} file at '{path}'" msgstr "" #: ../fdroidserver/update.py msgid "Include APKs that are signed with disabled algorithms like MD5" msgstr "" #: ../fdroidserver/common.py msgid "Initialising submodules" msgstr "" #: ../fdroidserver/install.py msgid "Install all signed applications available" msgstr "" #: ../fdroid msgid "Install built packages on devices" msgstr "" #: ../fdroidserver/install.py #, python-format msgid "Installing %s..." msgstr "" #: ../fdroidserver/install.py #, python-brace-format msgid "Installing '{apkfilename}' on {dev}..." msgstr "" #: ../fdroid msgid "Interact with the repo HTTP server" msgstr "" #: ../fdroidserver/update.py msgid "Interactively ask about things that need updating." msgstr "" #: ../fdroidserver/update.py msgid "Invalid APK" msgstr "" #: ../fdroidserver/metadata.py #, python-format msgid "Invalid boolean '%s'" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Invalid build flag at {line} in {linedesc}" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Invalid build format: {value} in {name}" msgstr "" #: ../fdroidserver/lint.py msgid "Invalid bulleted list" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Invalid license tag \"%s\"! Use only tags from https://spdx.org/license-list" msgstr "" #: ../fdroidserver/lint.py msgid "Invalid link - use [http://foo.bar Link title] or [http://foo.bar]" msgstr "" #: ../fdroidserver/metadata.py #, python-format msgid "Invalid metadata in %s:%d" msgstr "" #: ../fdroidserver/metadata.py msgid "Invalid metadata in: " msgstr "" #: ../fdroidserver/common.py #, python-format msgid "Invalid name for published file: %s" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Invalid package name {0}" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Invalid versionCode: \"{versionCode}\" is not an integer!" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "JAR signature failed to verify: {path}" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "JAR signature verified: {path}" msgstr "" #: ../fdroidserver/publish.py ../fdroidserver/update.py #: ../fdroidserver/mirror.py msgid "Java JDK not found! Install in standard location or set java_paths!" msgstr "" #: ../fdroidserver/signindex.py msgid "Java jarsigner not found! Install in standard location or set java_paths!" msgstr "" #: ../fdroidserver/lint.py msgid "Javascript in HTML src attributes" msgstr "" #: ../fdroidserver/init.py msgid "Keystore for signing key:\t" msgstr "" #: ../fdroidserver/lint.py #, python-brace-format msgid "Last used commit '{commit}' looks like a tag, but Update Check Mode is '{ucm}'" msgstr "" #: ../fdroidserver/lint.py msgid "Liberapay donation methods belong in the LiberapayID flag" msgstr "" #: ../fdroidserver/rewritemeta.py msgid "List files that would be reformatted" msgstr "" #: ../fdroidserver/build.py msgid "Make the build stop on exceptions" msgstr "" #: ../fdroidserver/index.py msgid "Malformed repository mirrors." msgstr "" #: ../fdroidserver/server.py msgid "Malformed serverwebroot line:" msgstr "" #: ../fdroidserver/gpgsign.py msgid "Missing output directory" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Name '%s' is just the auto name - remove it" msgstr "" #: ../fdroidserver/common.py msgid "No 'config.py' found, using defaults." msgstr "" #: ../fdroidserver/common.py msgid "No Android SDK found!" msgstr "" #: ../fdroidserver/import.py msgid "No android or kivy project could be found. Specify --subdir?" msgstr "" #: ../fdroidserver/install.py msgid "No attached devices found" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "No commit specified for {versionName} in {linedesc}" msgstr "" #: ../fdroidserver/index.py msgid "No fingerprint in URL." msgstr "" #: ../fdroidserver/common.py msgid "No git submodules available" msgstr "" #: ../fdroidserver/import.py msgid "No information found." msgstr "" #: ../fdroidserver/lint.py msgid "No need to specify that the app is Free Software" msgstr "" #: ../fdroidserver/lint.py msgid "No need to specify that the app is for Android" msgstr "" #: ../fdroidserver/server.py msgid "No option set! Edit your config.py to set at least one of these:" msgstr "" #: ../fdroidserver/common.py msgid "No packages specified" msgstr "" #: ../fdroidserver/install.py #, python-format msgid "No signed apk available for %s" msgstr "" #: ../fdroidserver/install.py msgid "No signed output directory - nothing to do" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "No signing certificates found in {path}" msgstr "" #: ../fdroidserver/common.py #, python-format msgid "No such package: %s" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/common.py #, python-brace-format msgid "No such versionCode {versionCode} for app {appid}" msgstr "" #: ../fdroidserver/verify.py ../fdroidserver/publish.py msgid "No unsigned directory - nothing to do" msgstr "" #: ../fdroidserver/signindex.py msgid "Nothing to do" msgstr "" #: ../fdroidserver/checkupdates.py #, python-brace-format msgid "Nothing to do for {appid}." msgstr "" #: ../fdroidserver/init.py msgid "Now set these in config.py:" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/update.py #, python-brace-format msgid "OBB file has newer versionCode({integer}) than any APK:" msgstr "" #: ../fdroidserver/update.py msgid "OBB filename must start with \"main.\" or \"patch.\":" msgstr "" #: ../fdroidserver/update.py msgid "OBB's packagename does not match a supported APK:" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Old APK signature failed to verify: {path}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Only PNG and JPEG are supported for graphics, found: {path}" msgstr "" #: ../fdroidserver/checkupdates.py msgid "Only print differences with the Play Store" msgstr "" #: ../fdroidserver/checkupdates.py msgid "Only process apps with auto-updates" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "Options" msgstr "Opções" #: ../fdroidserver/import.py msgid "Overall license of the project." msgstr "" #: ../fdroidserver/dscanner.py msgid "Override path for repo APKs (default: ./repo)" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Parsing manifest at '{path}'" msgstr "" #: ../fdroidserver/common.py msgid "Password required with username" msgstr "" #: ../fdroidserver/import.py msgid "Path to main Android project subdirectory, if not in root." msgstr "" msgid "Path to main android project subdirectory, if not in root." msgstr "" #: ../fdroidserver/init.py msgid "Path to the Android SDK (sometimes set in ANDROID_HOME)" msgstr "" #: ../fdroidserver/btlog.py msgid "Path to the git repo to use as the log" msgstr "" #: ../fdroidserver/init.py msgid "Path to the keystore for the repo signing key" msgstr "" #: ../fdroidserver/dscanner.py msgid "Prepare Drozer to run a scan" msgstr "" msgid "Prepare drozer to run a scan" msgstr "" #: ../fdroidserver/nightly.py msgid "Print the secret variable to the terminal for easy copy/paste" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Problem with description of {appid}: {error}" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Problem with xml at '{path}'" msgstr "" #: ../fdroidserver/checkupdates.py msgid "Process auto-updates" msgstr "" #: ../fdroidserver/publish.py ../fdroidserver/update.py #, python-brace-format msgid "Processing {apkfilename}" msgstr "" #: ../fdroidserver/checkupdates.py ../fdroidserver/scanner.py #, python-brace-format msgid "Processing {appid}" msgstr "" #: ../fdroidserver/update.py msgid "Produce human-readable XML/JSON for index files" msgstr "" #: ../fdroidserver/update.py msgid "Produce human-readable index.xml" msgstr "" #: ../fdroidserver/import.py msgid "Project URL to import from." msgstr "" #: ../fdroidserver/lint.py msgid "Punctuation should be avoided" msgstr "" #: ../fdroidserver/btlog.py msgid "Push the log to this git remote repository" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Pushing binary transparency log to {url}" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Pushing to {url}" msgstr "" #: ../fdroid msgid "Quickly start a new repository" msgstr "" #: ../fdroid msgid "Read all the metadata files and exit" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Reading '{config_file}'" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Reading minSdkVersion failed: \"{apkfilename}\"" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #. https://developer.android.com/guide/topics/manifest/manifest-element.html#vname #: ../fdroidserver/common.py #, python-brace-format msgid "Reading packageName/versionCode/versionName failed, APK invalid: '{apkfilename}'" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Reading {apkfilename} from cache" msgstr "" #: ../fdroidserver/stats.py msgid "Recalculate aggregate stats - use when changes have been made that would invalidate old cached data." msgstr "" #: ../fdroidserver/common.py msgid "Removing specified files" msgstr "" #: ../fdroidserver/update.py msgid "Rename APK files that do not match package.name_123.apk" msgstr "" #: ../fdroidserver/update.py msgid "Report on build data status" msgstr "" #: ../fdroidserver/build.py msgid "Reset and create a brand new build server, even if the existing one appears to be ok." msgstr "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "Resigning {apkfilename} with provided debug.keystore" msgstr "" #: ../fdroidserver/update.py msgid "Resize all the icons exceeding the max pixel size and exit" msgstr "" #: ../fdroidserver/common.py msgid "Restrict output to warnings and errors" msgstr "" #: ../fdroid msgid "Rewrite all the metadata files" msgstr "" #: ../fdroidserver/rewritemeta.py msgid "Rewrite to a specific format: " msgstr "" #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Rewriting '{appid}'" msgstr "" #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Rewriting '{appid}' to '{path}'" msgstr "" #: ../fdroidserver/lint.py msgid "Run rewritemeta to fix formatting" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py msgid "Running first pass with MD5 checking disabled" msgstr "" #: ../fdroidserver/mirror.py #, python-brace-format msgid "Running wget in {path}" msgstr "" #: ../fdroidserver/dscanner.py msgid "Scan only the latest version of each package" msgstr "" #: ../fdroid msgid "Scan the source code of a package" msgstr "" #: ../fdroidserver/scanner.py #, python-brace-format msgid "Scanner found {count} problems in {appid}:" msgstr "" #: ../fdroidserver/scanner.py #, python-brace-format msgid "Scanner found {count} problems in {appid}:{versionCode}:" msgstr "" #: ../fdroidserver/build.py msgid "Scanner found {} problem" msgid_plural "Scanner found {} problems" msgstr[0] "" msgstr[1] "" #: ../fdroidserver/common.py msgid "Set clock to that time using:" msgstr "" #: ../fdroidserver/build.py #, python-brace-format msgid "Set open file limit to {integer}" msgstr "" #: ../fdroid msgid "Set up an app build for a nightly build repo" msgstr "" #: ../fdroidserver/build.py msgid "Setting open file limit failed: " msgstr "" #: ../fdroidserver/build.py #, python-brace-format msgid "Setting {0} sec timeout for this build" msgstr "" #: ../fdroidserver/build.py msgid "Setup an emulator, install the APK on it and perform a Drozer scan" msgstr "" msgid "Setup an emulator, install the apk on it and perform a drozer scan" msgstr "" #: ../fdroid msgid "Sign and place packages in the repo" msgstr "" #: ../fdroid msgid "Sign indexes created using update --nosign" msgstr "" #: ../fdroidserver/build.py msgid "Skip scanning the source code for binaries and other problems" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Skipping '{apkfilename}' with invalid signature!" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Skipping index generation for {appid}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Skipping {apkfilename} with invalid signature!" msgstr "" #: ../fdroidserver/scanner.py #, python-brace-format msgid "Skipping {appid}: disabled" msgstr "" #: ../fdroidserver/scanner.py #, python-brace-format msgid "Skipping {appid}: no builds specified" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py msgid "Specify a local folder to sync the repo to" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py msgid "Specify an identity file to provide to SSH for rsyncing" msgstr "" #: ../fdroidserver/update.py msgid "Specify editor to use in interactive mode. Default " msgstr "" #, c-format msgid "Specify editor to use in interactive mode. Default %s" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Specify editor to use in interactive mode. Default is {path}" msgstr "" #: ../fdroidserver/build.py msgid "Specify that we're running on the build server" msgstr "" #: ../fdroidserver/nightly.py msgid "Specify which debug keystore file to use." msgstr "" #: ../fdroidserver/common.py msgid "Spew out even more information than normal" msgstr "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "Striping mystery signature from {apkfilename}" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Summary '%s' is just the app's name" msgstr "" #: ../fdroidserver/lint.py #, python-brace-format msgid "Summary of length {length} is over the {limit} char limit" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "System clock is older than date in {path}!" msgstr "" #: ../fdroidserver/build.py msgid "Test mode - put output in the tmp directory only, and always build, even if the output already exists." msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/update.py #, python-brace-format msgid "The OBB version code must come after \"{name}.\":" msgstr "" #: ../fdroidserver/btlog.py msgid "The base URL for the repo to log (default: https://f-droid.org)" msgstr "" #: ../fdroidserver/mirror.py msgid "The directory to write the mirror to" msgstr "" #: ../fdroidserver/server.py msgid "The only commands currently supported are 'init' and 'update'" msgstr "" #: ../fdroidserver/index.py msgid "The repository's fingerprint does not match." msgstr "" #: ../fdroidserver/common.py msgid "The repository's index could not be verified." msgstr "" #: ../fdroidserver/server.py #, python-brace-format msgid "The root dir for local_copy_dir \"{path}\" does not exist!" msgstr "" #: ../fdroidserver/nightly.py msgid "The the file to be included in the repo (path or glob)" msgstr "" #: ../fdroidserver/publish.py msgid "There is a keyalias collision - publishing halted" msgstr "" #: ../fdroidserver/import.py #, python-format msgid "This repo already has local metadata: %s" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py msgid "To use awsbucket, awssecretkey and awsaccesskeyid must also be set in config.py!" msgstr "" #: ../fdroidserver/lint.py msgid "UCM is set but it looks like checkupdates hasn't been run yet" msgstr "" #: ../fdroidserver/lint.py msgid "URL shorteners should not be used" msgstr "" #: ../fdroidserver/metadata.py msgid "URL title is just the URL, use brackets: [URL]" msgstr "" #: ../fdroidserver/lint.py #, python-brace-format msgid "URL {url} in Description: {error}" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Unexpected text on same line as {field} in {linedesc}" msgstr "" #: ../fdroid msgid "Unknown exception found!" msgstr "Exceção desconhecida!" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vname #: ../fdroidserver/lint.py #, python-brace-format msgid "Unknown file '{filename}' in build '{versionName}'" msgstr "" #: ../fdroidserver/metadata.py #, python-format msgid "Unknown metadata format: %s" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Unknown metadata format: {path}" msgstr "" #: ../fdroidserver/common.py msgid "Unknown version of aapt, might cause problems: " msgstr "" #: ../fdroidserver/lint.py msgid "Unlinkified link - use [http://foo.bar Link title] or [http://foo.bar]" msgstr "" #: ../fdroidserver/lint.py msgid "Unnecessary leading space" msgstr "" #: ../fdroidserver/lint.py msgid "Unnecessary trailing space" msgstr "" #: ../fdroidserver/metadata.py msgid "Unrecognised app field: " msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Unrecognised field '{field}' in {linedesc}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Unsupported file type \"{extension}\" for repo graphic" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Unsupported graphics file found: {path}" msgstr "" #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Unsupported metadata format, use: --to [{supported}]" msgstr "" #: ../fdroidserver/metadata.py msgid "Unterminated ]" msgstr "" #: ../fdroidserver/metadata.py msgid "Unterminated ]]" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Unterminated build in {name}" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Unterminated continuation in {name}" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Unused extlib at %s" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Unused file at %s" msgstr "" #: ../fdroidserver/lint.py msgid "Update Check Name is set to the known app id - it can be removed" msgstr "" #: ../fdroid msgid "Update repo information for new packages" msgstr "" #: ../fdroid msgid "Update the binary transparency log for a URL" msgstr "" #: ../fdroid msgid "Update the stats of the repo" msgstr "" #: ../fdroidserver/update.py ../fdroidserver/build.py msgid "Update the wiki" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "Usage" msgstr "Utilização" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "Usage: %s\n" msgstr "Utilização: %s\n" #: ../fdroidserver/lint.py msgid "Use /HEAD instead of /master to point at a file in the default branch" msgstr "" #: ../fdroidserver/update.py msgid "Use `fdroid update -c` to create it." msgstr "" #: ../fdroidserver/build.py msgid "Use build server" msgstr "" #: ../fdroidserver/update.py msgid "Use date from APK instead of current time for newly added APKs" msgstr "" msgid "Use date from apk instead of current time for newly added apks" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Using \"{path}\" for configuring s3cmd." msgstr "" #: ../fdroidserver/common.py msgid "Using Java's jarsigner, not recommended for verifying APKs! Use apksigner" msgstr "" #: ../fdroidserver/init.py #, python-brace-format msgid "Using existing keystore \"{path}\"" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Using s3cmd to sync with: {url}" msgstr "" #: ../fdroid msgid "Valid commands are:" msgstr "Comandos válidos:" #: ../fdroid msgid "Verify the integrity of downloaded packages" msgstr "" #: ../fdroidserver/index.py msgid "Verifying index signature:" msgstr "" #: ../fdroid msgid "Warn about possible metadata errors" msgstr "" #: ../fdroidserver/update.py msgid "When configured for signed indexes, create only unsigned indexes at this stage" msgstr "" msgid "X.509 'Distiguished Name' used when generating keys" msgstr "" #: ../fdroidserver/init.py msgid "X.509 'Distinguished Name' used when generating keys" msgstr "" #: ../fdroidserver/common.py msgid "You can use ANDROID_HOME to set the path to your SDK, i.e.:" msgstr "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "adding IdentityFile to {path}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "adding to {name}: {path}" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "ambiguous option: %(option)s could match %(matches)s" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "ambiguous option: %s (%s?)" msgstr "" #: ../fdroidserver/lint.py ../fdroidserver/rewritemeta.py msgid "applicationId in the form APPID" msgstr "" #: ../fdroidserver/checkupdates.py msgid "applicationId to check for updates" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/verify.py ../fdroidserver/publish.py #: ../fdroidserver/dscanner.py ../fdroidserver/build.py #: ../fdroidserver/scanner.py ../fdroidserver/install.py msgid "applicationId with optional versionCode in the form APPID[:VERCODE]" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "argument \"-\" with mode %r" msgstr "" #: ../fdroidserver/nightly.py msgid "attempting bare ssh connection to test deploy key:" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "can't open '%s': %s" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "cannot have multiple subparser arguments" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "cannot merge actions - two groups are named %r" msgstr "" #: ../fdroidserver/nightly.py msgid "cannot publish update, did you set the deploy key?" msgstr "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "cloning {url}" msgstr "" #: ../fdroidserver/server.py msgid "command to execute, either 'init' or 'update'" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "complex" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "conflicting option string: %s" msgid_plural "conflicting option strings: %s" msgstr[0] "" msgstr[1] "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "copying {apkfilename} into {path}" msgstr "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "created {path}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "deleting: repo/{apkfilename}" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "dest= is required for options like %r" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "expected %s argument" msgid_plural "expected %s arguments" msgstr[0] "" msgstr[1] "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "expected at least one argument" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "expected at most one argument" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "expected one argument" msgstr "" #: ../fdroid msgid "fdroid [-h|--help|--version] []" msgstr "" #: ../fdroid #, fuzzy msgid "fdroid [] [-h|--help|--version|]" msgstr "utilização: fdroid [-h|--help|--version] []" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "floating-point" msgstr "" #: ../fdroidserver/metadata.py msgid "force errors to be warnings, or ignore" msgstr "" #: ../fdroidserver/metadata.py msgid "force metadata errors (default) to be warnings, or to be ignored." msgstr "" #: ../fdroidserver/common.py msgid "git svn clone failed" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "ignored explicit argument %r" msgstr "" #: ../fdroidserver/index.py msgid "index-v1 must have a signature, use `fdroid signindex` to create it!" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "integer" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "invalid %(type)s value: %(value)r" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "invalid choice: %(value)r (choose from %(choices)s)" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "invalid conflict_resolution value: %r" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "invalid option string %(option)r: must start with a character %(prefix_chars)r" msgstr "" #: ../fdroidserver/server.py #, python-brace-format msgid "local_copy_dir does not end with \"fdroid\", perhaps you meant: \"{path}\"" msgstr "" #: ../fdroidserver/server.py msgid "local_copy_dir must be an absolute path!" msgstr "" #: ../fdroidserver/server.py msgid "local_copy_dir must be directory, not a file!" msgstr "" #: ../fdroidserver/index.py #, python-format msgid "mirror '%s' does not end with 'fdroid'!" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "mutually exclusive arguments must be optional" msgstr "" #: ../fdroidserver/mirror.py #, python-brace-format msgid "no \"icon\" in {appid}" msgstr "" #: ../fdroidserver/signatures.py msgid "no APK supplied" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "no such option: %s" msgstr "" #: ../fdroid msgid "no version info found!" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "not allowed with argument %s" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "one of the arguments %s is required" msgstr "" #: ../fdroidserver/index.py ../fdroidserver/common.py msgid "only accepts strings, lists, and tuples" msgstr "" #: ../fdroidserver/install.py #, python-format msgid "option %s: If you really want to install all the signed apps, use --all" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "option %s: invalid %s value: %r" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "option %s: invalid choice: %r (choose from %s)" msgstr "" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option -%s not recognized" msgstr "opção -%s não reconhecida" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option -%s requires argument" msgstr "opção -%s requer um argumento" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option --%s must not have an argument" msgstr "" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option --%s not a unique prefix" msgstr "" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option --%s not recognized" msgstr "" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option --%s requires argument" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "optional arguments" msgstr "argumentos opcionais" #: ../fdroidserver/nightly.py #, python-brace-format msgid "overwriting existing {path}" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "positional arguments" msgstr "" #: ../fdroidserver/signatures.py #, python-brace-format msgid "refuse downloading via insecure HTTP connection (use HTTPS or specify --no-https-check): {apkfilename}" msgstr "" #: ../fdroidserver/signatures.py #, python-brace-format msgid "refuse downloading via insecure http connection (use https or specify --no-https-check): {apkfilename}" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "s3cmd sync indexes {path} to {url} and delete" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "show program's version number and exit" msgstr "mostrar versão do programa e sair" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.5/optparse.py #: /usr/lib/python3.6/argparse.py /usr/lib/python3.6/optparse.py msgid "show this help message and exit" msgstr "mostrar esta ajuda e sair" #: ../fdroidserver/signatures.py msgid "signed APK, either a file-path or HTTPS URL." msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "skipping source tarball: {path}" msgstr "" #: ../fdroidserver/lint.py msgid "srclibs missing name and/or @" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "the following arguments are required: %s" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "unexpected option string: %s" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "unknown parser %(parser_name)r (choices: %(choices)s)" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "unrecognized arguments: %s" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "unsafe permissions on '{config_file}' (should be 0600)!" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py ../fdroid msgid "usage: " msgstr "utilização: " #: ../fdroid msgid "usage: fdroid [-h|--help|--version] []" msgstr "utilização: fdroid [-h|--help|--version] []" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "using Apache libcloud to sync with {url}" msgstr "" #: ../fdroidserver/publish.py #, python-brace-format msgid "{0} app, {1} key aliases" msgid_plural "{0} apps, {1} key aliases" msgstr[0] "" msgstr[1] "" #: ../fdroidserver/update.py #, python-brace-format msgid "{apkfilename} ({appid}) has no metadata!" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "{apkfilename} has multiple {name} files, looks like Master Key exploit!" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "{apkfilename}'s AndroidManifest.xml has a bad date: " msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "{appid} does not have a name! Using package name instead." msgstr "" #: ../fdroidserver/mirror.py #, python-brace-format msgid "{appid} is missing {name}" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vname #: ../fdroidserver/lint.py #, python-brace-format msgid "{appid}: Unknown extlib {path} in build '{versionName}'" msgstr "" #: ../fdroidserver/scanner.py #, python-brace-format msgid "{appid}: no builds specified, running on current source state" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "{field} not terminated in {name}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "{name} \"{path}\" does not exist! Correct it in config.py." msgstr "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "{path} does not exist! Create it by running:" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "{path} has bad file signature \"{pattern}\", possible Janus exploit!" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "{path} is zero size!" msgstr "" #: ../fdroidserver/mirror.py #, python-brace-format msgid "{url} does not end with \"fdroid\", check the URL path!" msgstr "" #: ../fdroidserver/build.py msgid "{} build failed" msgid_plural "{} builds failed" msgstr[0] "" msgstr[1] "" #: ../fdroidserver/build.py msgid "{} build succeeded" msgid_plural "{} builds succeeded" msgstr[0] "" msgstr[1] "" fdroidserver-1.0.9/locale/es_AR/0000775000175000017500000000000013324115531016353 5ustar hanshans00000000000000fdroidserver-1.0.9/locale/es_AR/LC_MESSAGES/0000775000175000017500000000000013324115531020140 5ustar hanshans00000000000000fdroidserver-1.0.9/locale/es_AR/LC_MESSAGES/fdroidserver.mo0000664000175000017500000012320213324115526023177 0ustar hanshans00000000000000< \)]7$-++>9j^8JZ!m!"&'1C"uAD.ONE+,FD!*- R9 $ 6 9 "!)9!-c!1!!*!"/."[^"9"5"*# F#Cg#-#[#*5$V`$%$ $$%+2%=^%%%!%U%#F&6j&%&#&& ')'"B'$e'!'!'';'/#(S((r((((-()25)4h)6))*) *F>*=**-*:+UL++(++A,!C,He,", ,v,,i--/-)- .0.7M...!.&.. /.b33)3!34&4"=42`4 44*4'45J5Bh555#5576&P6w6C6I6!$7NF797$7!7848R8+k8%88<893*9^9u9909.9@:H:^:*}:'::1:%; <;J;e;7;1;1;*<;H<*<#<<<-<)=F=:f=7=&=->.>K>=h>,>>>?? 1?R?n?*???$? @-$@PR@ @@7@A41A:fA&AAABB-:BhB,B!B*B8B22CeC C,C C&CBD#\D*D=D0D%E.@EoE%E*E5E.F)@F*jF-F#F9F*!GfLG/G?G$#H,HH-uH8H6H1I(EIPnI=I!I.J!NJ5pJJ2JJ/KF>KKKK*K4K'3L4[LLLL#LLM@M(WM,MMMM MEM$1NVN>gN%NIN O7OWO+kOO#ONO3%P;YPPP4PQQ26QiQ(}Q.Q2Q R-RDR<LR!RRR%R*R(SGSeS{S&SSSDS(T!0T3RT%TNTFT(BU-kU'U-UUVV'V#DV'hVGVV.V'W%DWjWWWWWfWfSX-X&XY,/Y\Y|Y(YY5YZ71ZiZ6qZ(Z2Z([G-[4u[9[[7[=6\ t\8\-\B\?]5T] ]&]])_7_$!`-F`+t`+`9`^aea|aaaa!aa!b"3b&Vb'}b1b"bAbDy6z4Nz,zz&z0zG{ a{m{*{'{{J{B6|y||#||7|&}E}Cd}I}!}N~9c~(~/~~2+K%w<3 >Uq0.@(>*]'1ā% *E7a11˂*;(/dJ߃BIfK9҄9 CF=ą,/$LqՆ.")3,]-PЇ !BA[&4Ĉ:54)j#̉-01(b*82" @,a &J֋*!,LEy0%.E%`@@Ǎ.)7*a-#9ގ*uC/O$9,^-861)([P=Ց!.5!d5*2/6FfǓ*4&'[4ǔה#,@><9,#6 <EG$RЖ%#II ԗ3#0>No?;:X4q2ۙ(".K2z 3<!4Ve%*ӛ&-5cxDڜ!3%8N^F(-'K-sƞٞ#'GB.ٟ%<Zmff-l&,.(Lu5Ȣ74#(X2(Gݣ4%9Z7= $8E-~B5 :&[ SSH Public Key to be used as Deploy Key: {path} encoded for the DEBUG_KEYSTORE secret variable:"%s/" has no matching metadata file!"{path}" contains outdated {name} ({version})"{path}" contains recent {name} ({version})"{path}" exists but s3cmd is not installed!"{path}" is not an accepted format, convert to: {formats}%(option)s option requires %(number)d argument%(option)s option requires %(number)d arguments%(prog)s [options] url%(prog)s: error: %(message)s %d problems found%prog [options]%r is not callable%s is not an accepted build field%s option does not take a value'keypass' not found in config.py!'keystore' not found in config.py!'keystorepass' not found in config.py!'repo_keyalias' not found in config.py!'required' is an invalid argument for positionals'sdk_path' not set in 'config.py'!'{aapt}' is too old, fdroid requires build-tools-23.0.0 or newer!'{aapt}' is too old, fdroid requires build-tools-{version} or newer!'{apkfilename}' is already installed on {dev}.'{field}' will be in random order! Use () or [] brackets if order is important!'{path}' failed to execute!'{value}' is not a valid {field} in {appid}. Regex pattern: {pattern}...checkupdate failed for {appid} : {error}.__call__() not defined.fdroid.txt is not supported! Convert to .fdroid.yml or .fdroid.json./issues is missingA URL is required as an argument!Add a new application from its source codeAdding new repo for only {name}Alias of the repo signing key in the keystoreAllows a different revision (or git branch) to be specified for the initial importAlso mirror the full archive sectionAlso warn about formatting issues, like rewritemeta -lAndroid SDK '{path}' does not have '{dirname}' installed!Android SDK not found!Android SDK path '{path}' does not exist!Android SDK path '{path}' is not a directory!Android build-tools path '{path}' does not exist!AndroidManifest.xml has no dateApp is in '{repo}' but has a link to {url}Appending .git is not necessaryArchiving {apkfilename} with invalid signature!Base URL to mirror, can include the index signing key using the query string: ?fingerprint=Branch '{branch}' used as commit in build '{versionName}'Branch '{branch}' used as commit in srclib '{srclib}'Build a package from sourceBuild all applications availableBuild generated by `fdroid import` - remove disable line once readyBuild only the latest version of each packageBuild should have comma-separated versionName and versionCode, not "{value}", in {linedesc}Built repo based in "%s" with this config:Can't build due to {} error while scanningCan't build due to {} errors while scanningCannot find a packageName for {path}!Cannot find an appid for {path}!Cannot read "{path}"!Cannot resolve app id {appid}Cannot use --list and --to at the same timeCannot write "{path}", not an accepted format, use: {formats}Categories are not setCategory '%s' is not validCheck for updates to applicationsChecking archiving for {appid} - apks:{integer}, keepversions:{keep}, archapks:{arch}Clean after all scans have finishedClean before the scans start and rebuild the containerClean up all containers and then exitComma separated list of categories.Command '%s' not recognised. Commit changesCould not find '{command}' on your systemCould not find {path} to remove itCould not open apk file for analysisCouldn't find latest version codeCouldn't find latest version nameCouldn't find package IDCowardily refusing to overwrite existing signing key setup!Create skeleton metadata files that are missingCreated new container "{name}"Creating "{path}" for configuring s3cmd.Creating log directoryCreating new S3 bucket: {url}Creating output directoryCreating signed index with this key (SHA256):Creating temporary directoryCreating unsigned index in preparation for signingDEBUG_KEYSTORE is not set or the value is incompleteDelete APKs and/or OBBs without metadata from the repoDeleting unknown file: {path}Description '%s' is just the app's summaryDescription has a duplicate lineDescription has a list (%s) but it isn't bulleted (*) nor numbered (#)Description of length {length} is over the {limit} char limitDo not include "{path}" in URL!Do not prompt for Android SDK path, just failDon't create a source tarball, useful when testing a buildDon't refresh the repository, useful when testing a build with no internet connectionDon't use rsync checksumsDownload complete mirrors of small reposDownload logs we don't haveDownloading the repository already failed once, not trying again.Downloading {url} failed. {error}Duplicate build recipe found for versionCode {versionCode} in {linedesc}Duplicate link in '{field}': {url}Dynamically scan APKs post buildERROR: this command should never be used to mirror f-droid.org! A full mirror of f-droid.org requires more than 200GB.ERROR: unsupported CI type, patches welcome!Empty build flag at {linedesc}Enter the path to the Android SDK (%s) here: > Error while attempting to publish log: %sError while getting repo addressExtract signatures from APKsFailed fetching signatures for '{apkfilename}': {error}Failed reading {path}: {error}Failed resizing {path}: {error}Failed to create S3 bucket: {url}Failed to get APK manifest informationFailed to get apk information, deleting {path}Failed to get apk information, skipping {path}Failed to install '{apkfilename}' on {dev}: {error}Failed to sign applicationFetched buildserverid from VM: {buildserverid}Fetched signatures for '{apkfilename}' -> '{sigdir}'FinishedFlattr donation methods belong in the FlattrID flagForbidden HTML tagsForce build of disabled apps, and carries on regardless of scan problems. Only allowed in test mode.Force halting build after {0} sec timeout!Found "{path}" graphic without metadata for app "{name}"!Found invalid appids in argumentsFound invalid versionCodes for some appsFound multiple signing certificates for repository.Found multiple signing certificates in {path}Found no signing certificates for repository.Found non-file at %sGit checkout of '%s' failedGit clean failedGit fetch failedGit remote set-head failedGit reset failedGit submodule sync failedGit submodule update failedHTTPS must be used with Subversion URLs!Ignoring package without metadata: Ignoring stale cache data for {apkfilename}Ignoring {ext} file at '{path}'Include APKs that are signed with disabled algorithms like MD5Initialising submodulesInstall all signed applications availableInstall built packages on devicesInstalling %s...Installing '{apkfilename}' on {dev}...Interact with the repo HTTP serverInteractively ask about things that need updating.Invalid APKInvalid boolean '%s'Invalid build flag at {line} in {linedesc}Invalid build format: {value} in {name}Invalid bulleted listInvalid license tag "%s"! Use only tags from https://spdx.org/license-listInvalid link - use [http://foo.bar Link title] or [http://foo.bar]Invalid metadata in %s:%dInvalid metadata in: Invalid name for published file: %sInvalid package name {0}Invalid versionCode: "{versionCode}" is not an integer!JAR signature failed to verify: {path}JAR signature verified: {path}Java JDK not found! Install in standard location or set java_paths!Java jarsigner not found! Install in standard location or set java_paths!Javascript in HTML src attributesLast used commit '{commit}' looks like a tag, but Update Check Mode is '{ucm}'Liberapay donation methods belong in the LiberapayID flagList files that would be reformattedMake the build stop on exceptionsMalformed repository mirrors.Malformed serverwebroot line:Missing output directoryName '%s' is just the auto name - remove itNo 'config.py' found, using defaults.No Android SDK found!No android or kivy project could be found. Specify --subdir?No attached devices foundNo commit specified for {versionName} in {linedesc}No fingerprint in URL.No git submodules availableNo information found.No need to specify that the app is Free SoftwareNo need to specify that the app is for AndroidNo option set! Edit your config.py to set at least one of these:No packages specifiedNo signed apk available for %sNo signed output directory - nothing to doNo signing certificates found in {path}No such package: %sNo such versionCode {versionCode} for app {appid}No unsigned directory - nothing to doNothing to doNothing to do for {appid}.Now set these in config.py:OBB file has newer versionCode({integer}) than any APK:OBB filename must start with "main." or "patch.":OBB's packagename does not match a supported APK:Old APK signature failed to verify: {path}Only PNG and JPEG are supported for graphics, found: {path}Only print differences with the Play StoreOnly process apps with auto-updatesOptionsOverall license of the project.Override path for repo APKs (default: ./repo)Parsing manifest at '{path}'Password required with usernamePath to main android project subdirectory, if not in root.Path to the Android SDK (sometimes set in ANDROID_HOME)Path to the git repo to use as the logPath to the keystore for the repo signing keyPrepare Drozer to run a scanPrepare drozer to run a scanPrint the secret variable to the terminal for easy copy/pasteProblem with description of {appid}: {error}Problem with xml at '{path}'Process auto-updatesProcessing {apkfilename}Processing {appid}Produce human-readable index.xmlProject URL to import from.Punctuation should be avoidedPush the log to this git remote repositoryPushing to {url}Quickly start a new repositoryRead all the metadata files and exitReading '{config_file}'Reading minSdkVersion failed: "{apkfilename}"Reading packageName/versionCode/versionName failed, APK invalid: '{apkfilename}'Reading {apkfilename} from cacheRemoving specified filesRename APK files that do not match package.name_123.apkReport on build data statusResigning {apkfilename} with provided debug.keystoreResize all the icons exceeding the max pixel size and exitRestrict output to warnings and errorsRewrite all the metadata filesRewrite to a specific format: Rewriting '{appid}'Rewriting '{appid}' to '{path}'Running first pass with MD5 checking disabledRunning wget in {path}Scan only the latest version of each packageScan the source code of a packageScanner found {count} problems in {appid}:Scanner found {count} problems in {appid}:{versionCode}:Scanner found {} problemScanner found {} problemsSet clock to that time using:Set open file limit to {integer}Set up an app build for a nightly build repoSetting open file limit failed: Setting {0} sec timeout for this buildSetup an emulator, install the apk on it and perform a drozer scanSign and place packages in the repoSign indexes created using update --nosignSkip scanning the source code for binaries and other problemsSkipping '{apkfilename}' with invalid signature!Skipping index generation for {appid}Skipping {apkfilename} with invalid signature!Skipping {appid}: disabledSkipping {appid}: no builds specifiedSpecify a local folder to sync the repo toSpecify editor to use in interactive mode. Default %sSpecify that we're running on the build serverSpecify which debug keystore file to use.Spew out even more information than normalStriping mystery signature from {apkfilename}Summary '%s' is just the app's nameSummary of length {length} is over the {limit} char limitSystem clock is older than date in {path}!Test mode - put output in the tmp directory only, and always build, even if the output already exists.The OBB version code must come after "{name}.":The base URL for the repo to log (default: https://f-droid.org)The directory to write the mirror toThe repository's fingerprint does not match.The repository's index could not be verified.The root dir for local_copy_dir "{path}" does not exist!The the file to be included in the repo (path or glob)There is a keyalias collision - publishing haltedThis repo already has local metadata: %sTo use awsbucket, awssecretkey and awsaccesskeyid must also be set in config.py!UCM is set but it looks like checkupdates hasn't been run yetURL shorteners should not be usedURL title is just the URL, use brackets: [URL]URL {url} in Description: {error}Unexpected text on same line as {field} in {linedesc}Unknown exception found!Unknown file '{filename}' in build '{versionName}'Unknown metadata format: %sUnknown version of aapt, might cause problems: Unlinkified link - use [http://foo.bar Link title] or [http://foo.bar]Unnecessary leading spaceUnnecessary trailing spaceUnrecognised app field: Unrecognised field '{field}' in {linedesc}Unsupported file type "{extension}" for repo graphicUnsupported graphics file found: {path}Unsupported metadata format, use: --to [{supported}]Unterminated ]Unterminated ]]Unterminated build in {name}Unterminated continuation in {name}Unused extlib at %sUnused file at %sUpdate Check Name is set to the known app id - it can be removedUpdate repo information for new packagesUpdate the binary transparency log for a URLUpdate the stats of the repoUpdate the wikiUsageUsage: %s Use /HEAD instead of /master to point at a file in the default branchUse `fdroid update -c` to create it.Use build serverUse date from apk instead of current time for newly added apksUsing "{path}" for configuring s3cmd.Using Java's jarsigner, not recommended for verifying APKs! Use apksignerUsing existing keystore "{path}"Using s3cmd to sync with: {url}Valid commands are:Verify the integrity of downloaded packagesVerifying index signature:Warn about possible metadata errorsWhen configured for signed indexes, create only unsigned indexes at this stageX.509 'Distiguished Name' used when generating keysYou can use ANDROID_HOME to set the path to your SDK, i.e.:adding IdentityFile to {path}adding to {name}: {path}ambiguous option: %(option)s could match %(matches)sambiguous option: %s (%s?)argument "-" with mode %rattempting bare ssh connection to test deploy key:can't open '%s': %scannot have multiple subparser argumentscannot merge actions - two groups are named %rcannot publish update, did you set the deploy key?cloning {url}command to execute, either 'init' or 'update'complexconflicting option string: %sconflicting option strings: %scopying {apkfilename} into {path}created {path}deleting: repo/{apkfilename}dest= is required for options like %rexpected %s argumentexpected %s argumentsexpected at least one argumentexpected at most one argumentexpected one argumentfloating-pointforce errors to be warnings, or ignoregit svn clone failedignored explicit argument %rindex-v1 must have a signature, use `fdroid signindex` to create it!integerinvalid %(type)s value: %(value)rinvalid choice: %(value)r (choose from %(choices)s)invalid conflict_resolution value: %rinvalid option string %(option)r: must start with a character %(prefix_chars)rlocal_copy_dir does not end with "fdroid", perhaps you meant: "{path}"local_copy_dir must be an absolute path!local_copy_dir must be directory, not a file!mirror '%s' does not end with 'fdroid'!mutually exclusive arguments must be optionalno "icon" in {appid}no APK suppliedno such option: %snot allowed with argument %sone of the arguments %s is requiredonly accepts strings, lists, and tuplesoption %s: If you really want to install all the signed apps, use --alloption %s: invalid %s value: %roption %s: invalid choice: %r (choose from %s)option -%s requires argumentoption --%s must not have an argumentoption --%s not a unique prefixoption --%s requires argumentoptional argumentsoverwriting existing {path}positional argumentsrefuse downloading via insecure HTTP connection (use HTTPS or specify --no-https-check): {apkfilename}refuse downloading via insecure http connection (use https or specify --no-https-check): {apkfilename}s3cmd sync indexes {path} to {url} and deleteshow program's version number and exitshow this help message and exitsigned APK, either a file-path or HTTPS URL.skipping source tarball: {path}srclibs missing name and/or @the following arguments are required: %sunexpected option string: %sunknown parser %(parser_name)r (choices: %(choices)s)unrecognized arguments: %sunsafe permissions on '{config_file}' (should be 0600)!usage: usage: fdroid [-h|--help|--version] []using Apache libcloud to sync with {url}{0} app, {1} key aliases{0} apps, {1} key aliases{apkfilename} ({appid}) has no metadata!{apkfilename} has multiple {name} files, looks like Master Key exploit!{apkfilename}'s AndroidManifest.xml has a bad date: {appid} does not have a name! Using package name instead.{appid} is missing {name}{appid}: Unknown extlib {path} in build '{versionName}'{appid}: no builds specified, running on current source state{field} not terminated in {name}{name} "{path}" does not exist! Correct it in config.py.{path} does not exist! Create it by running:{path} has bad file signature "{pattern}", possible Janus exploit!{path} is zero size!{url} does not end with "fdroid", check the URL path!{} build failed{} builds failed{} build succeeded{} builds succeededProject-Id-Version: fdroidserver 0.9 Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues POT-Creation-Date: 2018-02-13 09:01+0100 PO-Revision-Date: 2017-10-01 01:48+0000 Last-Translator: who cares? Language-Team: Spanish (Argentina) Plural-Forms: nplurals=2; plural=n != 1 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Generated-By: Babel 1.3 SSH Public Key to be used as Deploy Key: {path} encoded for the DEBUG_KEYSTORE secret variable:"%s/" has no matching metadata file!"{path}" contains outdated {name} ({version})"{path}" contains recent {name} ({version})"{path}" exists but s3cmd is not installed!"{path}" is not an accepted format, convert to: {formats}%(option)s option requires %(number)d argument%(option)s option requires %(number)d arguments%(prog)s [options] url%(prog)s: error: %(message)s %d problems found%prog [options]%r is not callable%s is not an accepted build field%s option does not take a value'keypass' not found in config.py!'keystore' not found in config.py!'keystorepass' not found in config.py!'repo_keyalias' not found in config.py!'required' is an invalid argument for positionals'sdk_path' not set in 'config.py'!'{aapt}' is too old, fdroid requires build-tools-23.0.0 or newer!'{aapt}' is too old, fdroid requires build-tools-{version} or newer!'{apkfilename}' is already installed on {dev}.'{field}' will be in random order! Use () or [] brackets if order is important!'{path}' failed to execute!'{value}' is not a valid {field} in {appid}. Regex pattern: {pattern}...checkupdate failed for {appid} : {error}.__call__() not defined.fdroid.txt is not supported! Convert to .fdroid.yml or .fdroid.json./issues is missingA URL is required as an argument!Agregar una aplicación nueva desde su código fuenteAdding new repo for only {name}Alias de la llave de firmado del repositorio en el almacén de llavesPermitir que una revision diferente (o rama de git) sea especificada en la importación inicialAlso mirror the full archive sectionTambién advertir sobre problemas de formateo, como ser rewritemeta -lAndroid SDK '{path}' does not have '{dirname}' installed!Android SDK not found!Android SDK path '{path}' does not exist!Android SDK path '{path}' is not a directory!Android build-tools path '{path}' does not exist!AndroidManifest.xml has no dateApp is in '{repo}' but has a link to {url}Appending .git is not necessaryArchiving {apkfilename} with invalid signature!Base URL to mirror, can include the index signing key using the query string: ?fingerprint=Branch '{branch}' used as commit in build '{versionName}'Branch '{branch}' used as commit in srclib '{srclib}'Compilar una paquete desde su códigoConstruir todas las aplicaciones disponiblesBuild generated by `fdroid import` - remove disable line once readyEmpaquetado con la ultima versión de cada paqueteBuild should have comma-separated versionName and versionCode, not "{value}", in {linedesc}Built repo based in "%s" with this config:Can't build due to {} error while scanningCan't build due to {} errors while scanningCannot find a packageName for {path}!Cannot find an appid for {path}!Cannot read "{path}"!Cannot resolve app id {appid}Cannot use --list and --to at the same timeCannot write "{path}", not an accepted format, use: {formats}Categories are not setCategory '%s' is not validBuscar actualizaciones de las aplicacionesChecking archiving for {appid} - apks:{integer}, keepversions:{keep}, archapks:{arch}Limpiar luego de que todos los escaneos hayan terminadoLimpiar antes de que el escaneo comience y reconstruir el contenedorLimpiar todos los contenedores y salirLista de categorías separadas por coma.No se reconoce el comando "%s". Cometer cambiosCould not find '{command}' on your systemCould not find {path} to remove itCould not open apk file for analysisCouldn't find latest version codeCouldn't find latest version nameCouldn't find package IDCowardily refusing to overwrite existing signing key setup!Crear plantilla de metadatos de los archivos faltantesCreated new container "{name}"Creating "{path}" for configuring s3cmd.Creating log directoryCreating new S3 bucket: {url}Creating output directoryCreating signed index with this key (SHA256):Creating temporary directoryCreating unsigned index in preparation for signingDEBUG_KEYSTORE is not set or the value is incompleteBorrar archivos APK y/o OBBs sin metadatos del repositorioDeleting unknown file: {path}Description '%s' is just the app's summaryDescription has a duplicate lineDescription has a list (%s) but it isn't bulleted (*) nor numbered (#)Description of length {length} is over the {limit} char limitDo not include "{path}" in URL!No preguntar por la ruta al SDK de Android, solo fallarNo crear el tarbal de codigo fuente, útil cuando se esta probando la construcciónNo refrescar el repositorio, útil cuando se esta probando la construcción y no se tiene conexión a InternetNo usar sumas de validación de rsyncDownload complete mirrors of small reposDescargar los registros que no faltanDownloading the repository already failed once, not trying again.Downloading {url} failed. {error}Duplicate build recipe found for versionCode {versionCode} in {linedesc}Duplicate link in '{field}': {url}Escanear dinámicamente APKs después de compilarERROR: this command should never be used to mirror f-droid.org! A full mirror of f-droid.org requires more than 200GB.ERROR: unsupported CI type, patches welcome!Empty build flag at {linedesc}Enter the path to the Android SDK (%s) here: > Error while attempting to publish log: %sError while getting repo addressExtract signatures from APKsFailed fetching signatures for '{apkfilename}': {error}Failed reading {path}: {error}Failed resizing {path}: {error}Failed to create S3 bucket: {url}Failed to get APK manifest informationFailed to get apk information, deleting {path}Failed to get apk information, skipping {path}Failed to install '{apkfilename}' on {dev}: {error}Failed to sign applicationFetched buildserverid from VM: {buildserverid}Fetched signatures for '{apkfilename}' -> '{sigdir}'FinishedFlattr donation methods belong in the FlattrID flagForbidden HTML tagsForzar la construcción de aplicaciones deshabilitadas y continuar independientemente de los problemas en el escaneo. Solo disponible en modo de pruebas.Force halting build after {0} sec timeout!Found "{path}" graphic without metadata for app "{name}"!Found invalid appids in argumentsFound invalid versionCodes for some appsFound multiple signing certificates for repository.Found multiple signing certificates in {path}Found no signing certificates for repository.Found non-file at %sGit checkout of '%s' failedGit clean failedGit fetch failedGit remote set-head failedGit reset failedGit submodule sync failedGit submodule update failedHTTPS must be used with Subversion URLs!Ignoring package without metadata: Ignoring stale cache data for {apkfilename}Ignoring {ext} file at '{path}'Include APKs that are signed with disabled algorithms like MD5Initialising submodulesInstalar todas las aplicaciones firmadas disponiblesInstalar paquetes compilados en dispositivosInstalling %s...Installing '{apkfilename}' on {dev}...Interactuar con el servidor HTTP del repositorioPreguntar de forma interactiva sobre las cosas necesarias a actualizar.Invalid APKInvalid boolean '%s'Invalid build flag at {line} in {linedesc}Invalid build format: {value} in {name}Invalid bulleted listInvalid license tag "%s"! Use only tags from https://spdx.org/license-listInvalid link - use [http://foo.bar Link title] or [http://foo.bar]Invalid metadata in %s:%dInvalid metadata in: Invalid name for published file: %sInvalid package name {0}Invalid versionCode: "{versionCode}" is not an integer!JAR signature failed to verify: {path}JAR signature verified: {path}Java JDK not found! Install in standard location or set java_paths!Java jarsigner not found! Install in standard location or set java_paths!Javascript in HTML src attributesLast used commit '{commit}' looks like a tag, but Update Check Mode is '{ucm}'Liberapay donation methods belong in the LiberapayID flagListar archivos que serán reformateadosParar esta construccion cuando haya excepcionesMalformed repository mirrors.Malformed serverwebroot line:Missing output directoryName '%s' is just the auto name - remove itNo 'config.py' found, using defaults.No Android SDK found!No android or kivy project could be found. Specify --subdir?No attached devices foundNo commit specified for {versionName} in {linedesc}No fingerprint in URL.No git submodules availableNo information found.No need to specify that the app is Free SoftwareNo need to specify that the app is for AndroidNo option set! Edit your config.py to set at least one of these:No packages specifiedNo signed apk available for %sNo signed output directory - nothing to doNo signing certificates found in {path}No such package: %sNo such versionCode {versionCode} for app {appid}No unsigned directory - nothing to doNothing to doNothing to do for {appid}.Now set these in config.py:OBB file has newer versionCode({integer}) than any APK:OBB filename must start with "main." or "patch.":OBB's packagename does not match a supported APK:Old APK signature failed to verify: {path}Only PNG and JPEG are supported for graphics, found: {path}Solo mostrar las diferencias con el Plays StoreSolo procesar las aplicaciones que cuenten con actualizaciones automaticasOptionsLicencia general del proyecto.Sobrescribir la ruta de los repositorios APKs (por defecto ./repo)Parsing manifest at '{path}'Password required with usernameRuta al subdirectorio del proyecto principal de android, si no es la raíz.Ruta al SDK de Android ( a veces cargada en ANDROID_HOME)Ruta de acceso al repositorio git para usar como registroRuta al almacén de claves para la llave de firmado del repositorioPrepare Drozer to run a scanPrepare drozer to run a scanPrint the secret variable to the terminal for easy copy/pasteProblem with description of {appid}: {error}Problem with xml at '{path}'Procesar actualizaciones automaticasProcessing {apkfilename}Processing {appid}Producir index.xml legibleURL del proyecto a importar.Punctuation should be avoidedSubir el registro al repositorio remoto de gitPushing to {url}Empezar rápidamente un repositorio nuevoLeer todos los archivos de metadatos y salirReading '{config_file}'Reading minSdkVersion failed: "{apkfilename}"Reading packageName/versionCode/versionName failed, APK invalid: '{apkfilename}'Reading {apkfilename} from cacheRemoving specified filesRenombrar archivos APK que no corresponden a package.name_123.apkReportar el estado de la construcciónResigning {apkfilename} with provided debug.keystoreResize all the icons exceeding the max pixel size and exitRestringir la salida solo para advertencias y erroresRescribir todos los archivos de metadatosRescribir a un formato especifico: Rewriting '{appid}'Rewriting '{appid}' to '{path}'Running first pass with MD5 checking disabledRunning wget in {path}Escanear solo la ultima versión de cada paqueteEscanear en código fuente de un paqueteScanner found {count} problems in {appid}:Scanner found {count} problems in {appid}:{versionCode}:Scanner found {} problemScanner found {} problemsSet clock to that time using:Set open file limit to {integer}Set up an app build for a nightly build repoSetting open file limit failed: Setting {0} sec timeout for this buildConfigurar un emulador, instalarle el apk y realizar el escaneo de barridoFirmar y ubicar paquetes en el repositorioFirmar índicescreados con "update --nosign"Saltear el escaneo de binarios y otros problemas en el código fuenteSkipping '{apkfilename}' with invalid signature!Skipping index generation for {appid}Skipping {apkfilename} with invalid signature!Skipping {appid}: disabledSkipping {appid}: no builds specifiedEspecificar un directorio local donde sincronizar el repositorioEspecificar el editor a usar en modo interactivo. Por defecto %sSpecify that we're running on the build serverSpecify which debug keystore file to use.Mostrar más información que de costumbreStriping mystery signature from {apkfilename}Summary '%s' is just the app's nameSummary of length {length} is over the {limit} char limitSystem clock is older than date in {path}!Modo prueba - pone la salida solo en el directorio temporal, y siempre construye, incluso cuando la salida ya exista.The OBB version code must come after "{name}.":La URL base del repositorio para el registro (predefinido: https://f-droid.org)The directory to write the mirror toThe repository's fingerprint does not match.The repository's index could not be verified.The root dir for local_copy_dir "{path}" does not exist!The the file to be included in the repo (path or glob)There is a keyalias collision - publishing haltedThis repo already has local metadata: %sTo use awsbucket, awssecretkey and awsaccesskeyid must also be set in config.py!UCM is set but it looks like checkupdates hasn't been run yetURL shorteners should not be usedURL title is just the URL, use brackets: [URL]URL {url} in Description: {error}Unexpected text on same line as {field} in {linedesc}¡Se encontró una excepción desconocida!Unknown file '{filename}' in build '{versionName}'Unknown metadata format: %sUnknown version of aapt, might cause problems: Unlinkified link - use [http://foo.bar Link title] or [http://foo.bar]Unnecessary leading spaceUnnecessary trailing spaceUnrecognised app field: Unrecognised field '{field}' in {linedesc}Unsupported file type "{extension}" for repo graphicUnsupported graphics file found: {path}Unsupported metadata format, use: --to [{supported}]Unterminated ]Unterminated ]]Unterminated build in {name}Unterminated continuation in {name}Unused extlib at %sUnused file at %sUpdate Check Name is set to the known app id - it can be removedActualizar información del repositorio para paquetes nuevosActualizar el registro de transparencia binario de un URLActualizar las estadísticas del repositorioActualizar la wikiUsageUsage: %s Use /HEAD instead of /master to point at a file in the default branchUse `fdroid update -c` to create it.Usar servidor de construccionUtilizar la fecha del apk en vez de la actual para los apks nuevos que se agreguenUsing "{path}" for configuring s3cmd.Using Java's jarsigner, not recommended for verifying APKs! Use apksignerUsing existing keystore "{path}"Using s3cmd to sync with: {url}Los comandos válidos son:Verificar la integridad de los paquetes descargadosVerifying index signature:Advertir sobre posibles errores en los metadatosWhen configured for signed indexes, create only unsigned indexes at this stageX.509 'Nombre Distinguido' usado cuando se generaron las llavesYou can use ANDROID_HOME to set the path to your SDK, i.e.:adding IdentityFile to {path}adding to {name}: {path}ambiguous option: %(option)s could match %(matches)sambiguous option: %s (%s?)argument "-" with mode %rattempting bare ssh connection to test deploy key:can't open '%s': %scannot have multiple subparser argumentscannot merge actions - two groups are named %rcannot publish update, did you set the deploy key?cloning {url}comando a ejecutar, ya sea 'iniciar' o 'actualizar'complexconflicting option string: %sconflicting option strings: %scopying {apkfilename} into {path}created {path}deleting: repo/{apkfilename}dest= is required for options like %rexpected %s argumentexpected %s argumentsexpected at least one argumentexpected at most one argumentexpected one argumentfloating-pointforzar errores al ser advertencias, o ignorargit svn clone failedignored explicit argument %rindex-v1 must have a signature, use `fdroid signindex` to create it!integerinvalid %(type)s value: %(value)rinvalid choice: %(value)r (choose from %(choices)s)invalid conflict_resolution value: %rinvalid option string %(option)r: must start with a character %(prefix_chars)rlocal_copy_dir does not end with "fdroid", perhaps you meant: "{path}"local_copy_dir must be an absolute path!local_copy_dir must be directory, not a file!mirror '%s' does not end with 'fdroid'!mutually exclusive arguments must be optionalno "icon" in {appid}no APK suppliedno such option: %snot allowed with argument %sone of the arguments %s is requiredonly accepts strings, lists, and tuplesoption %s: If you really want to install all the signed apps, use --alloption %s: invalid %s value: %roption %s: invalid choice: %r (choose from %s)option -%s requires argumentoption --%s must not have an argumentoption --%s not a unique prefixoption --%s requires argumentoptional argumentsoverwriting existing {path}positional argumentsrefuse downloading via insecure HTTP connection (use HTTPS or specify --no-https-check): {apkfilename}refuse downloading via insecure http connection (use https or specify --no-https-check): {apkfilename}s3cmd sync indexes {path} to {url} and deleteshow program's version number and exitshow this help message and exitsigned APK, either a file-path or HTTPS URL.skipping source tarball: {path}srclibs missing name and/or @the following arguments are required: %sunexpected option string: %sunknown parser %(parser_name)r (choices: %(choices)s)unrecognized arguments: %sunsafe permissions on '{config_file}' (should be 0600)!usage: uso: fdroid [-h|--help|--version] []using Apache libcloud to sync with {url}{0} app, {1} key aliases{0} apps, {1} key aliases{apkfilename} ({appid}) has no metadata!{apkfilename} has multiple {name} files, looks like Master Key exploit!{apkfilename}'s AndroidManifest.xml has a bad date: {appid} does not have a name! Using package name instead.{appid} is missing {name}{appid}: Unknown extlib {path} in build '{versionName}'{appid}: no builds specified, running on current source state{field} not terminated in {name}{name} "{path}" does not exist! Correct it in config.py.{path} does not exist! Create it by running:{path} has bad file signature "{pattern}", possible Janus exploit!{path} is zero size!{url} does not end with "fdroid", check the URL path!{} build failed{} builds failed{} build succeeded{} builds succeededfdroidserver-1.0.9/locale/es_AR/LC_MESSAGES/fdroidserver.po0000664000175000017500000015746113322065577023230 0ustar hanshans00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: fdroidserver 0.9\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" "POT-Creation-Date: 2018-02-13 09:01+0100\n" "PO-Revision-Date: 2017-10-01 01:48+0000\n" "Last-Translator: who cares? \n" "Language-Team: Spanish (Argentina) \n" "Language: es_AR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 2.17-dev\n" #: ../fdroidserver/nightly.py msgid "" "\n" "SSH Public Key to be used as Deploy Key:" msgstr "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "" "\n" "{path} encoded for the DEBUG_KEYSTORE secret variable:" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "\"%s/\" has no matching metadata file!" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "\"{path}\" contains outdated {name} ({version})" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "\"{path}\" contains recent {name} ({version})" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "\"{path}\" exists but s3cmd is not installed!" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "\"{path}\" is not an accepted format, convert to: {formats}" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "%(option)s option requires %(number)d argument" msgid_plural "%(option)s option requires %(number)d arguments" msgstr[0] "" msgstr[1] "" #: ../fdroidserver/mirror.py #, python-format msgid "%(prog)s [options] url" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "%(prog)s: error: %(message)s\n" msgstr "" #: ../fdroidserver/scanner.py #, python-format msgid "%d problems found" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "%prog [options]" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "%r is not callable" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "%s is not an accepted build field" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "%s option does not take a value" msgstr "" #: ../fdroidserver/index.py ../fdroidserver/common.py msgid "'keypass' not found in config.py!" msgstr "" #: ../fdroidserver/index.py ../fdroidserver/common.py msgid "'keystore' not found in config.py!" msgstr "" #: ../fdroidserver/index.py ../fdroidserver/common.py msgid "'keystorepass' not found in config.py!" msgstr "" #: ../fdroidserver/index.py ../fdroidserver/common.py msgid "'repo_keyalias' not found in config.py!" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "'required' is an invalid argument for positionals" msgstr "" #: ../fdroidserver/common.py msgid "'sdk_path' not set in 'config.py'!" msgstr "" #. Translators: "build-tools" is the file name of a package from #. Google, it is part of the Android SDK. So it probably shouldn't be #. translated or transliterated. #: ../fdroidserver/common.py #, python-brace-format msgid "'{aapt}' is too old, fdroid requires build-tools-23.0.0 or newer!" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "'{aapt}' is too old, fdroid requires build-tools-{version} or newer!" msgstr "" #: ../fdroidserver/install.py #, python-brace-format msgid "'{apkfilename}' is already installed on {dev}." msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "'{field}' will be in random order! Use () or [] brackets if order is important!" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "'{path}' failed to execute!" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "'{value}' is not a valid {field} in {appid}. Regex pattern: {pattern}" msgstr "" #: ../fdroidserver/checkupdates.py #, python-brace-format msgid "...checkupdate failed for {appid} : {error}" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid ".__call__() not defined" msgstr "" #: ../fdroidserver/metadata.py msgid ".fdroid.txt is not supported! Convert to .fdroid.yml or .fdroid.json." msgstr "" #: ../fdroidserver/lint.py msgid "/issues is missing" msgstr "" #: ../fdroidserver/mirror.py msgid "A URL is required as an argument!" msgstr "" #: ../fdroid #, fuzzy msgid "Add PGP signatures using GnuPG for packages in repo" msgstr "Agregar firmas GPG a paquetes en el repositorio" #: ../fdroid msgid "Add a new application from its source code" msgstr "Agregar una aplicación nueva desde su código fuente" #: ../fdroidserver/update.py #, fuzzy msgid "Add a repo signing key to an unsigned repo" msgstr "Crear una llave de firmado en un almacén de llaves para el repositorio" #: ../fdroidserver/update.py #, fuzzy msgid "Add skeleton metadata files for APKs that are missing them" msgstr "Crear plantilla de metadatos de los archivos faltantes" #: ../fdroidserver/update.py #, python-brace-format msgid "Adding new repo for only {name}" msgstr "" #: ../fdroidserver/init.py msgid "Alias of the repo signing key in the keystore" msgstr "Alias de la llave de firmado del repositorio en el almacén de llaves" #: ../fdroidserver/import.py msgid "Allows a different revision (or git branch) to be specified for the initial import" msgstr "Permitir que una revision diferente (o rama de git) sea especificada en la importación inicial" #: ../fdroidserver/mirror.py msgid "Also mirror the full archive section" msgstr "" #: ../fdroidserver/lint.py msgid "Also warn about formatting issues, like rewritemeta -l" msgstr "También advertir sobre problemas de formateo, como ser rewritemeta -l" #: ../fdroidserver/common.py #, python-brace-format msgid "Android SDK '{path}' does not have '{dirname}' installed!" msgstr "" #: ../fdroidserver/common.py msgid "Android SDK not found!" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Android SDK path '{path}' does not exist!" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Android SDK path '{path}' is not a directory!" msgstr "" #. Translators: "build-tools" is the file name of a package from #. Google, it is part of the Android SDK. So it probably shouldn't be #. translated or transliterated. #: ../fdroidserver/common.py #, python-brace-format msgid "Android build-tools path '{path}' does not exist!" msgstr "" #: ../fdroidserver/update.py msgid "AndroidManifest.xml has no date" msgstr "" #: ../fdroidserver/lint.py #, python-brace-format msgid "App is in '{repo}' but has a link to {url}" msgstr "" #: ../fdroidserver/lint.py msgid "Appending .git is not necessary" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Archiving {apkfilename} with invalid signature!" msgstr "" #: ../fdroidserver/mirror.py msgid "Base URL to mirror, can include the index signing key using the query string: ?fingerprint=" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vname #: ../fdroidserver/lint.py #, python-brace-format msgid "Branch '{branch}' used as commit in build '{versionName}'" msgstr "" #: ../fdroidserver/lint.py #, python-brace-format msgid "Branch '{branch}' used as commit in srclib '{srclib}'" msgstr "" #: ../fdroid msgid "Build a package from source" msgstr "Compilar una paquete desde su código" #: ../fdroidserver/build.py msgid "Build all applications available" msgstr "Construir todas las aplicaciones disponibles" #: ../fdroidserver/lint.py msgid "Build generated by `fdroid import` - remove disable line once ready" msgstr "" #: ../fdroidserver/build.py msgid "Build only the latest version of each package" msgstr "Empaquetado con la ultima versión de cada paquete" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Build should have comma-separated versionName and versionCode, not \"{value}\", in {linedesc}" msgstr "" #: ../fdroidserver/init.py #, python-format msgid "Built repo based in \"%s\" with this config:" msgstr "" #: ../fdroidserver/build.py msgid "Can't build due to {} error while scanning" msgid_plural "Can't build due to {} errors while scanning" msgstr[0] "" msgstr[1] "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Cannot find a packageName for {path}!" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Cannot find an appid for {path}!" msgstr "" #: ../fdroidserver/vmtools.py #, python-brace-format msgid "Cannot read \"{path}\"!" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Cannot resolve app id {appid}" msgstr "" #: ../fdroidserver/rewritemeta.py msgid "Cannot use --list and --to at the same time" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Cannot write \"{path}\", not an accepted format, use: {formats}" msgstr "" #: ../fdroidserver/lint.py msgid "Categories are not set" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Category '%s' is not valid" msgstr "" #: ../fdroid msgid "Check for updates to applications" msgstr "Buscar actualizaciones de las aplicaciones" #: ../fdroidserver/update.py #, python-brace-format msgid "Checking archiving for {appid} - apks:{integer}, keepversions:{keep}, archapks:{arch}" msgstr "" #: ../fdroidserver/dscanner.py msgid "Clean after all scans have finished" msgstr "Limpiar luego de que todos los escaneos hayan terminado" #: ../fdroidserver/dscanner.py msgid "Clean before the scans start and rebuild the container" msgstr "Limpiar antes de que el escaneo comience y reconstruir el contenedor" #: ../fdroidserver/dscanner.py msgid "Clean up all containers and then exit" msgstr "Limpiar todos los contenedores y salir" #: ../fdroidserver/update.py #, fuzzy msgid "Clean update - don't uses caches, reprocess all APKs" msgstr "Limpiar actualización - no utiliza cachés, reprocesa todos los APK's" #: ../fdroidserver/import.py msgid "Comma separated list of categories." msgstr "Lista de categorías separadas por coma." #: ../fdroid #, c-format, python-format msgid "Command '%s' not recognised.\n" msgstr "No se reconoce el comando \"%s\".\n" #: ../fdroidserver/checkupdates.py msgid "Commit changes" msgstr "Cometer cambios" #: ../fdroidserver/common.py #, python-brace-format msgid "Could not find '{command}' on your system" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Could not find {path} to remove it" msgstr "" #: ../fdroidserver/update.py msgid "Could not open apk file for analysis" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/import.py msgid "Couldn't find latest version code" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vname #: ../fdroidserver/import.py msgid "Couldn't find latest version name" msgstr "" #: ../fdroidserver/import.py msgid "Couldn't find package ID" msgstr "" #: ../fdroidserver/update.py msgid "Cowardily refusing to overwrite existing signing key setup!" msgstr "" #: ../fdroidserver/update.py #, fuzzy msgid "Create a repo signing key in a keystore" msgstr "Crear una llave de firmado en un almacén de llaves para el repositorio" #: ../fdroidserver/update.py msgid "Create skeleton metadata files that are missing" msgstr "Crear plantilla de metadatos de los archivos faltantes" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Created new container \"{name}\"" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Creating \"{path}\" for configuring s3cmd." msgstr "" #: ../fdroidserver/publish.py msgid "Creating log directory" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Creating new S3 bucket: {url}" msgstr "" #: ../fdroidserver/publish.py msgid "Creating output directory" msgstr "" #: ../fdroidserver/index.py msgid "Creating signed index with this key (SHA256):" msgstr "" #: ../fdroidserver/import.py ../fdroidserver/verify.py #: ../fdroidserver/publish.py msgid "Creating temporary directory" msgstr "" #: ../fdroidserver/index.py msgid "Creating unsigned index in preparation for signing" msgstr "" #: ../fdroidserver/nightly.py msgid "DEBUG_KEYSTORE is not set or the value is incomplete" msgstr "" #: ../fdroidserver/update.py msgid "Delete APKs and/or OBBs without metadata from the repo" msgstr "Borrar archivos APK y/o OBBs sin metadatos del repositorio" #: ../fdroidserver/update.py #, python-brace-format msgid "Deleting unknown file: {path}" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Description '%s' is just the app's summary" msgstr "" #: ../fdroidserver/lint.py msgid "Description has a duplicate line" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Description has a list (%s) but it isn't bulleted (*) nor numbered (#)" msgstr "" #: ../fdroidserver/lint.py #, python-brace-format msgid "Description of length {length} is over the {limit} char limit" msgstr "" #: ../fdroidserver/mirror.py #, python-brace-format msgid "Do not include \"{path}\" in URL!" msgstr "" #: ../fdroidserver/init.py msgid "Do not prompt for Android SDK path, just fail" msgstr "No preguntar por la ruta al SDK de Android, solo fallar" #: ../fdroidserver/build.py msgid "Don't create a source tarball, useful when testing a build" msgstr "No crear el tarbal de codigo fuente, útil cuando se esta probando la construcción" #: ../fdroidserver/stats.py #, fuzzy msgid "Don't do anything logs-related" msgstr "No hacer nada que refiera a los registros" #: ../fdroidserver/build.py msgid "Don't refresh the repository, useful when testing a build with no internet connection" msgstr "No refrescar el repositorio, útil cuando se esta probando la construcción y no se tiene conexión a Internet" #: ../fdroidserver/server.py ../fdroidserver/nightly.py #: ../fdroidserver/upload.py msgid "Don't use rsync checksums" msgstr "No usar sumas de validación de rsync" #: ../fdroid msgid "Download complete mirrors of small repos" msgstr "" #: ../fdroidserver/stats.py msgid "Download logs we don't have" msgstr "Descargar los registros que no faltan" #: ../fdroidserver/common.py msgid "Downloading the repository already failed once, not trying again." msgstr "" #: ../fdroidserver/verify.py #, python-brace-format msgid "Downloading {url} failed. {error}" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Duplicate build recipe found for versionCode {versionCode} in {linedesc}" msgstr "" #: ../fdroidserver/lint.py #, python-brace-format msgid "Duplicate link in '{field}': {url}" msgstr "" #: ../fdroid msgid "Dynamically scan APKs post build" msgstr "Escanear dinámicamente APKs después de compilar" #: ../fdroidserver/mirror.py msgid "" "ERROR: this command should never be used to mirror f-droid.org!\n" "A full mirror of f-droid.org requires more than 200GB." msgstr "" #: ../fdroidserver/nightly.py msgid "ERROR: unsupported CI type, patches welcome!" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Empty build flag at {linedesc}" msgstr "" #: ../fdroidserver/init.py #, python-format msgid "" "Enter the path to the Android SDK (%s) here:\n" "> " msgstr "" #: ../fdroidserver/server.py ../fdroidserver/checkupdates.py #: ../fdroidserver/upload.py #, python-format msgid "Error while attempting to publish log: %s" msgstr "" #: ../fdroidserver/import.py msgid "Error while getting repo address" msgstr "" #: ../fdroid msgid "Extract signatures from APKs" msgstr "" #: ../fdroidserver/signatures.py #, python-brace-format msgid "Failed fetching signatures for '{apkfilename}': {error}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Failed reading {path}: {error}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Failed resizing {path}: {error}" msgstr "" #: ../fdroidserver/publish.py #, fuzzy msgid "Failed to align application" msgstr "Construir todas las aplicaciones disponibles" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Failed to create S3 bucket: {url}" msgstr "" #: ../fdroidserver/common.py msgid "Failed to get APK manifest information" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Failed to get apk information, deleting {path}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Failed to get apk information, skipping {path}" msgstr "" #: ../fdroidserver/install.py #, python-brace-format msgid "Failed to install '{apkfilename}' on {dev}: {error}" msgstr "" #: ../fdroidserver/publish.py ../fdroidserver/common.py msgid "Failed to sign application" msgstr "" #: ../fdroidserver/common.py #, fuzzy msgid "Failed to zipalign application" msgstr "Construir todas las aplicaciones disponibles" #: ../fdroidserver/build.py #, python-brace-format msgid "Fetched buildserverid from VM: {buildserverid}" msgstr "" #: ../fdroidserver/signatures.py #, python-brace-format msgid "Fetched signatures for '{apkfilename}' -> '{sigdir}'" msgstr "" #: ../fdroidserver/verify.py ../fdroidserver/stats.py ../fdroidserver/update.py #: ../fdroidserver/rewritemeta.py ../fdroidserver/build.py #: ../fdroidserver/checkupdates.py ../fdroidserver/scanner.py #: ../fdroidserver/install.py msgid "Finished" msgstr "" #: ../fdroidserver/lint.py msgid "Flattr donation methods belong in the FlattrID flag" msgstr "" #: ../fdroidserver/lint.py msgid "Forbidden HTML tags" msgstr "" #: ../fdroidserver/build.py msgid "Force build of disabled apps, and carries on regardless of scan problems. Only allowed in test mode." msgstr "Forzar la construcción de aplicaciones deshabilitadas y continuar independientemente de los problemas en el escaneo. Solo disponible en modo de pruebas." #: ../fdroidserver/build.py #, python-brace-format msgid "Force halting build after {0} sec timeout!" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Found \"{path}\" graphic without metadata for app \"{name}\"!" msgstr "" #: ../fdroidserver/common.py msgid "Found invalid appids in arguments" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/common.py msgid "Found invalid versionCodes for some apps" msgstr "" #: ../fdroidserver/metadata.py #, fuzzy, python-brace-format msgid "Found multiple metadata files for {appid}" msgstr "Crear plantilla de metadatos de los archivos faltantes" #: ../fdroidserver/index.py msgid "Found multiple signing certificates for repository." msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Found multiple signing certificates in {path}" msgstr "" #: ../fdroidserver/index.py msgid "Found no signing certificates for repository." msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Found non-file at %s" msgstr "" #: ../fdroidserver/update.py #, fuzzy, python-brace-format msgid "Generated skeleton metadata for {appid}" msgstr "Crear plantilla de metadatos de los archivos faltantes" #: ../fdroidserver/common.py #, python-format msgid "Git checkout of '%s' failed" msgstr "" #: ../fdroidserver/common.py msgid "Git clean failed" msgstr "" #: ../fdroidserver/common.py msgid "Git fetch failed" msgstr "" #: ../fdroidserver/common.py msgid "Git remote set-head failed" msgstr "" #: ../fdroidserver/common.py msgid "Git reset failed" msgstr "" #: ../fdroidserver/common.py msgid "Git submodule sync failed" msgstr "" #: ../fdroidserver/common.py msgid "Git submodule update failed" msgstr "" #: ../fdroidserver/common.py msgid "HTTPS must be used with Subversion URLs!" msgstr "" #: ../fdroidserver/index.py msgid "Ignoring package without metadata: " msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Ignoring stale cache data for {apkfilename}" msgstr "" #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Ignoring {ext} file at '{path}'" msgstr "" #: ../fdroidserver/update.py msgid "Include APKs that are signed with disabled algorithms like MD5" msgstr "" #: ../fdroidserver/common.py msgid "Initialising submodules" msgstr "" #: ../fdroidserver/install.py msgid "Install all signed applications available" msgstr "Instalar todas las aplicaciones firmadas disponibles" #: ../fdroid msgid "Install built packages on devices" msgstr "Instalar paquetes compilados en dispositivos" #: ../fdroidserver/install.py #, python-format msgid "Installing %s..." msgstr "" #: ../fdroidserver/install.py #, python-brace-format msgid "Installing '{apkfilename}' on {dev}..." msgstr "" #: ../fdroid msgid "Interact with the repo HTTP server" msgstr "Interactuar con el servidor HTTP del repositorio" #: ../fdroidserver/update.py msgid "Interactively ask about things that need updating." msgstr "Preguntar de forma interactiva sobre las cosas necesarias a actualizar." #: ../fdroidserver/update.py msgid "Invalid APK" msgstr "" #: ../fdroidserver/metadata.py #, python-format msgid "Invalid boolean '%s'" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Invalid build flag at {line} in {linedesc}" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Invalid build format: {value} in {name}" msgstr "" #: ../fdroidserver/lint.py msgid "Invalid bulleted list" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Invalid license tag \"%s\"! Use only tags from https://spdx.org/license-list" msgstr "" #: ../fdroidserver/lint.py msgid "Invalid link - use [http://foo.bar Link title] or [http://foo.bar]" msgstr "" #: ../fdroidserver/metadata.py #, python-format msgid "Invalid metadata in %s:%d" msgstr "" #: ../fdroidserver/metadata.py msgid "Invalid metadata in: " msgstr "" #: ../fdroidserver/common.py #, python-format msgid "Invalid name for published file: %s" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Invalid package name {0}" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Invalid versionCode: \"{versionCode}\" is not an integer!" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "JAR signature failed to verify: {path}" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "JAR signature verified: {path}" msgstr "" #: ../fdroidserver/publish.py ../fdroidserver/update.py #: ../fdroidserver/mirror.py msgid "Java JDK not found! Install in standard location or set java_paths!" msgstr "" #: ../fdroidserver/signindex.py msgid "Java jarsigner not found! Install in standard location or set java_paths!" msgstr "" #: ../fdroidserver/lint.py msgid "Javascript in HTML src attributes" msgstr "" #: ../fdroidserver/init.py #, fuzzy msgid "Keystore for signing key:\t" msgstr "Ruta al almacén de claves para la llave de firmado del repositorio" #: ../fdroidserver/lint.py #, python-brace-format msgid "Last used commit '{commit}' looks like a tag, but Update Check Mode is '{ucm}'" msgstr "" #: ../fdroidserver/lint.py msgid "Liberapay donation methods belong in the LiberapayID flag" msgstr "" #: ../fdroidserver/rewritemeta.py msgid "List files that would be reformatted" msgstr "Listar archivos que serán reformateados" #: ../fdroidserver/build.py msgid "Make the build stop on exceptions" msgstr "Parar esta construccion cuando haya excepciones" #: ../fdroidserver/index.py msgid "Malformed repository mirrors." msgstr "" #: ../fdroidserver/server.py msgid "Malformed serverwebroot line:" msgstr "" #: ../fdroidserver/gpgsign.py msgid "Missing output directory" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Name '%s' is just the auto name - remove it" msgstr "" #: ../fdroidserver/common.py msgid "No 'config.py' found, using defaults." msgstr "" #: ../fdroidserver/common.py msgid "No Android SDK found!" msgstr "" #: ../fdroidserver/import.py msgid "No android or kivy project could be found. Specify --subdir?" msgstr "" #: ../fdroidserver/install.py msgid "No attached devices found" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "No commit specified for {versionName} in {linedesc}" msgstr "" #: ../fdroidserver/index.py msgid "No fingerprint in URL." msgstr "" #: ../fdroidserver/common.py msgid "No git submodules available" msgstr "" #: ../fdroidserver/import.py msgid "No information found." msgstr "" #: ../fdroidserver/lint.py msgid "No need to specify that the app is Free Software" msgstr "" #: ../fdroidserver/lint.py msgid "No need to specify that the app is for Android" msgstr "" #: ../fdroidserver/server.py msgid "No option set! Edit your config.py to set at least one of these:" msgstr "" #: ../fdroidserver/common.py msgid "No packages specified" msgstr "" #: ../fdroidserver/install.py #, python-format msgid "No signed apk available for %s" msgstr "" #: ../fdroidserver/install.py msgid "No signed output directory - nothing to do" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "No signing certificates found in {path}" msgstr "" #: ../fdroidserver/common.py #, python-format msgid "No such package: %s" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/common.py #, python-brace-format msgid "No such versionCode {versionCode} for app {appid}" msgstr "" #: ../fdroidserver/verify.py ../fdroidserver/publish.py msgid "No unsigned directory - nothing to do" msgstr "" #: ../fdroidserver/signindex.py msgid "Nothing to do" msgstr "" #: ../fdroidserver/checkupdates.py #, python-brace-format msgid "Nothing to do for {appid}." msgstr "" #: ../fdroidserver/init.py msgid "Now set these in config.py:" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/update.py #, python-brace-format msgid "OBB file has newer versionCode({integer}) than any APK:" msgstr "" #: ../fdroidserver/update.py msgid "OBB filename must start with \"main.\" or \"patch.\":" msgstr "" #: ../fdroidserver/update.py msgid "OBB's packagename does not match a supported APK:" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Old APK signature failed to verify: {path}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Only PNG and JPEG are supported for graphics, found: {path}" msgstr "" #: ../fdroidserver/checkupdates.py msgid "Only print differences with the Play Store" msgstr "Solo mostrar las diferencias con el Plays Store" #: ../fdroidserver/checkupdates.py msgid "Only process apps with auto-updates" msgstr "Solo procesar las aplicaciones que cuenten con actualizaciones automaticas" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "Options" msgstr "" #: ../fdroidserver/import.py msgid "Overall license of the project." msgstr "Licencia general del proyecto." #: ../fdroidserver/dscanner.py msgid "Override path for repo APKs (default: ./repo)" msgstr "Sobrescribir la ruta de los repositorios APKs (por defecto ./repo)" #: ../fdroidserver/common.py #, python-brace-format msgid "Parsing manifest at '{path}'" msgstr "" #: ../fdroidserver/common.py msgid "Password required with username" msgstr "" #: ../fdroidserver/import.py #, fuzzy msgid "Path to main Android project subdirectory, if not in root." msgstr "Ruta al subdirectorio del proyecto principal de android, si no es la raíz." msgid "Path to main android project subdirectory, if not in root." msgstr "Ruta al subdirectorio del proyecto principal de android, si no es la raíz." #: ../fdroidserver/init.py msgid "Path to the Android SDK (sometimes set in ANDROID_HOME)" msgstr "Ruta al SDK de Android ( a veces cargada en ANDROID_HOME)" #: ../fdroidserver/btlog.py msgid "Path to the git repo to use as the log" msgstr "Ruta de acceso al repositorio git para usar como registro" #: ../fdroidserver/init.py msgid "Path to the keystore for the repo signing key" msgstr "Ruta al almacén de claves para la llave de firmado del repositorio" #: ../fdroidserver/dscanner.py msgid "Prepare Drozer to run a scan" msgstr "" msgid "Prepare drozer to run a scan" msgstr "" #: ../fdroidserver/nightly.py msgid "Print the secret variable to the terminal for easy copy/paste" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Problem with description of {appid}: {error}" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Problem with xml at '{path}'" msgstr "" #: ../fdroidserver/checkupdates.py msgid "Process auto-updates" msgstr "Procesar actualizaciones automaticas" #: ../fdroidserver/publish.py ../fdroidserver/update.py #, python-brace-format msgid "Processing {apkfilename}" msgstr "" #: ../fdroidserver/checkupdates.py ../fdroidserver/scanner.py #, python-brace-format msgid "Processing {appid}" msgstr "" #: ../fdroidserver/update.py #, fuzzy msgid "Produce human-readable XML/JSON for index files" msgstr "Producir index.xml legible" #: ../fdroidserver/update.py msgid "Produce human-readable index.xml" msgstr "Producir index.xml legible" #: ../fdroidserver/import.py msgid "Project URL to import from." msgstr "URL del proyecto a importar." #: ../fdroidserver/lint.py msgid "Punctuation should be avoided" msgstr "" #: ../fdroidserver/btlog.py msgid "Push the log to this git remote repository" msgstr "Subir el registro al repositorio remoto de git" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, fuzzy, python-brace-format msgid "Pushing binary transparency log to {url}" msgstr "Actualizar el registro de transparencia binario de un URL" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Pushing to {url}" msgstr "" #: ../fdroid msgid "Quickly start a new repository" msgstr "Empezar rápidamente un repositorio nuevo" #: ../fdroid msgid "Read all the metadata files and exit" msgstr "Leer todos los archivos de metadatos y salir" #: ../fdroidserver/common.py #, python-brace-format msgid "Reading '{config_file}'" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Reading minSdkVersion failed: \"{apkfilename}\"" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #. https://developer.android.com/guide/topics/manifest/manifest-element.html#vname #: ../fdroidserver/common.py #, python-brace-format msgid "Reading packageName/versionCode/versionName failed, APK invalid: '{apkfilename}'" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Reading {apkfilename} from cache" msgstr "" #: ../fdroidserver/stats.py #, fuzzy msgid "Recalculate aggregate stats - use when changes have been made that would invalidate old cached data." msgstr "Recalcular las agregaciones - usar cuando haya cambios " #: ../fdroidserver/common.py msgid "Removing specified files" msgstr "" #: ../fdroidserver/update.py msgid "Rename APK files that do not match package.name_123.apk" msgstr "Renombrar archivos APK que no corresponden a package.name_123.apk" #: ../fdroidserver/update.py msgid "Report on build data status" msgstr "Reportar el estado de la construcción" #: ../fdroidserver/build.py #, fuzzy msgid "Reset and create a brand new build server, even if the existing one appears to be ok." msgstr "Resetear y crear un nuevo servidor de construcción, incluso si el existente parece estar bien." #: ../fdroidserver/nightly.py #, python-brace-format msgid "Resigning {apkfilename} with provided debug.keystore" msgstr "" #: ../fdroidserver/update.py msgid "Resize all the icons exceeding the max pixel size and exit" msgstr "" #: ../fdroidserver/common.py msgid "Restrict output to warnings and errors" msgstr "Restringir la salida solo para advertencias y errores" #: ../fdroid msgid "Rewrite all the metadata files" msgstr "Rescribir todos los archivos de metadatos" #: ../fdroidserver/rewritemeta.py msgid "Rewrite to a specific format: " msgstr "Rescribir a un formato especifico: " #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Rewriting '{appid}'" msgstr "" #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Rewriting '{appid}' to '{path}'" msgstr "" #: ../fdroidserver/lint.py #, fuzzy msgid "Run rewritemeta to fix formatting" msgstr "Rescribir a un formato especifico: " #: ../fdroidserver/server.py ../fdroidserver/upload.py msgid "Running first pass with MD5 checking disabled" msgstr "" #: ../fdroidserver/mirror.py #, python-brace-format msgid "Running wget in {path}" msgstr "" #: ../fdroidserver/dscanner.py msgid "Scan only the latest version of each package" msgstr "Escanear solo la ultima versión de cada paquete" #: ../fdroid msgid "Scan the source code of a package" msgstr "Escanear en código fuente de un paquete" #: ../fdroidserver/scanner.py #, python-brace-format msgid "Scanner found {count} problems in {appid}:" msgstr "" #: ../fdroidserver/scanner.py #, python-brace-format msgid "Scanner found {count} problems in {appid}:{versionCode}:" msgstr "" #: ../fdroidserver/build.py msgid "Scanner found {} problem" msgid_plural "Scanner found {} problems" msgstr[0] "" msgstr[1] "" #: ../fdroidserver/common.py msgid "Set clock to that time using:" msgstr "" #: ../fdroidserver/build.py #, python-brace-format msgid "Set open file limit to {integer}" msgstr "" #: ../fdroid msgid "Set up an app build for a nightly build repo" msgstr "" #: ../fdroidserver/build.py msgid "Setting open file limit failed: " msgstr "" #: ../fdroidserver/build.py #, python-brace-format msgid "Setting {0} sec timeout for this build" msgstr "" #: ../fdroidserver/build.py #, fuzzy msgid "Setup an emulator, install the APK on it and perform a Drozer scan" msgstr "Configurar un emulador, instalarle el apk y realizar el escaneo de barrido" msgid "Setup an emulator, install the apk on it and perform a drozer scan" msgstr "Configurar un emulador, instalarle el apk y realizar el escaneo de barrido" #: ../fdroid msgid "Sign and place packages in the repo" msgstr "Firmar y ubicar paquetes en el repositorio" #: ../fdroid msgid "Sign indexes created using update --nosign" msgstr "Firmar índicescreados con \"update --nosign\"" #: ../fdroidserver/build.py msgid "Skip scanning the source code for binaries and other problems" msgstr "Saltear el escaneo de binarios y otros problemas en el código fuente" #: ../fdroidserver/update.py #, python-brace-format msgid "Skipping '{apkfilename}' with invalid signature!" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Skipping index generation for {appid}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Skipping {apkfilename} with invalid signature!" msgstr "" #: ../fdroidserver/scanner.py #, python-brace-format msgid "Skipping {appid}: disabled" msgstr "" #: ../fdroidserver/scanner.py #, python-brace-format msgid "Skipping {appid}: no builds specified" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py msgid "Specify a local folder to sync the repo to" msgstr "Especificar un directorio local donde sincronizar el repositorio" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, fuzzy msgid "Specify an identity file to provide to SSH for rsyncing" msgstr "Especifique una archivo de identificación para la resincronización vía SSH" #: ../fdroidserver/update.py #, fuzzy msgid "Specify editor to use in interactive mode. Default " msgstr "Especificar el editor a usar en modo interactivo. Por defecto %s" #, c-format msgid "Specify editor to use in interactive mode. Default %s" msgstr "Especificar el editor a usar en modo interactivo. Por defecto %s" #: ../fdroidserver/update.py #, fuzzy, python-brace-format msgid "Specify editor to use in interactive mode. Default is {path}" msgstr "Especificar el editor a usar en modo interactivo. Por defecto %s" #: ../fdroidserver/build.py msgid "Specify that we're running on the build server" msgstr "" #: ../fdroidserver/nightly.py msgid "Specify which debug keystore file to use." msgstr "" #: ../fdroidserver/common.py msgid "Spew out even more information than normal" msgstr "Mostrar más información que de costumbre" #: ../fdroidserver/nightly.py #, python-brace-format msgid "Striping mystery signature from {apkfilename}" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Summary '%s' is just the app's name" msgstr "" #: ../fdroidserver/lint.py #, python-brace-format msgid "Summary of length {length} is over the {limit} char limit" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "System clock is older than date in {path}!" msgstr "" #: ../fdroidserver/build.py msgid "Test mode - put output in the tmp directory only, and always build, even if the output already exists." msgstr "Modo prueba - pone la salida solo en el directorio temporal, y siempre construye, incluso cuando la salida ya exista." #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/update.py #, python-brace-format msgid "The OBB version code must come after \"{name}.\":" msgstr "" #: ../fdroidserver/btlog.py msgid "The base URL for the repo to log (default: https://f-droid.org)" msgstr "La URL base del repositorio para el registro (predefinido: https://f-droid.org)" #: ../fdroidserver/mirror.py msgid "The directory to write the mirror to" msgstr "" #: ../fdroidserver/server.py #, fuzzy msgid "The only commands currently supported are 'init' and 'update'" msgstr "comando a ejecutar, ya sea 'iniciar' o 'actualizar'" #: ../fdroidserver/index.py msgid "The repository's fingerprint does not match." msgstr "" #: ../fdroidserver/common.py msgid "The repository's index could not be verified." msgstr "" #: ../fdroidserver/server.py #, python-brace-format msgid "The root dir for local_copy_dir \"{path}\" does not exist!" msgstr "" #: ../fdroidserver/nightly.py msgid "The the file to be included in the repo (path or glob)" msgstr "" #: ../fdroidserver/publish.py msgid "There is a keyalias collision - publishing halted" msgstr "" #: ../fdroidserver/import.py #, python-format msgid "This repo already has local metadata: %s" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py msgid "To use awsbucket, awssecretkey and awsaccesskeyid must also be set in config.py!" msgstr "" #: ../fdroidserver/lint.py msgid "UCM is set but it looks like checkupdates hasn't been run yet" msgstr "" #: ../fdroidserver/lint.py msgid "URL shorteners should not be used" msgstr "" #: ../fdroidserver/metadata.py msgid "URL title is just the URL, use brackets: [URL]" msgstr "" #: ../fdroidserver/lint.py #, python-brace-format msgid "URL {url} in Description: {error}" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Unexpected text on same line as {field} in {linedesc}" msgstr "" #: ../fdroid msgid "Unknown exception found!" msgstr "¡Se encontró una excepción desconocida!" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vname #: ../fdroidserver/lint.py #, python-brace-format msgid "Unknown file '{filename}' in build '{versionName}'" msgstr "" #: ../fdroidserver/metadata.py #, python-format msgid "Unknown metadata format: %s" msgstr "" #: ../fdroidserver/metadata.py #, fuzzy, python-brace-format msgid "Unknown metadata format: {path}" msgstr "Crear plantilla de metadatos de los archivos faltantes" #: ../fdroidserver/common.py msgid "Unknown version of aapt, might cause problems: " msgstr "" #: ../fdroidserver/lint.py msgid "Unlinkified link - use [http://foo.bar Link title] or [http://foo.bar]" msgstr "" #: ../fdroidserver/lint.py msgid "Unnecessary leading space" msgstr "" #: ../fdroidserver/lint.py msgid "Unnecessary trailing space" msgstr "" #: ../fdroidserver/metadata.py msgid "Unrecognised app field: " msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Unrecognised field '{field}' in {linedesc}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Unsupported file type \"{extension}\" for repo graphic" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Unsupported graphics file found: {path}" msgstr "" #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Unsupported metadata format, use: --to [{supported}]" msgstr "" #: ../fdroidserver/metadata.py msgid "Unterminated ]" msgstr "" #: ../fdroidserver/metadata.py msgid "Unterminated ]]" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Unterminated build in {name}" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Unterminated continuation in {name}" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Unused extlib at %s" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Unused file at %s" msgstr "" #: ../fdroidserver/lint.py msgid "Update Check Name is set to the known app id - it can be removed" msgstr "" #: ../fdroid msgid "Update repo information for new packages" msgstr "Actualizar información del repositorio para paquetes nuevos" #: ../fdroid msgid "Update the binary transparency log for a URL" msgstr "Actualizar el registro de transparencia binario de un URL" #: ../fdroid msgid "Update the stats of the repo" msgstr "Actualizar las estadísticas del repositorio" #: ../fdroidserver/update.py ../fdroidserver/build.py msgid "Update the wiki" msgstr "Actualizar la wiki" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "Usage" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "Usage: %s\n" msgstr "" #: ../fdroidserver/lint.py msgid "Use /HEAD instead of /master to point at a file in the default branch" msgstr "" #: ../fdroidserver/update.py msgid "Use `fdroid update -c` to create it." msgstr "" #: ../fdroidserver/build.py msgid "Use build server" msgstr "Usar servidor de construccion" #: ../fdroidserver/update.py #, fuzzy msgid "Use date from APK instead of current time for newly added APKs" msgstr "Utilizar la fecha del apk en vez de la actual para los apks nuevos que se agreguen" msgid "Use date from apk instead of current time for newly added apks" msgstr "Utilizar la fecha del apk en vez de la actual para los apks nuevos que se agreguen" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Using \"{path}\" for configuring s3cmd." msgstr "" #: ../fdroidserver/common.py msgid "Using Java's jarsigner, not recommended for verifying APKs! Use apksigner" msgstr "" #: ../fdroidserver/init.py #, python-brace-format msgid "Using existing keystore \"{path}\"" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Using s3cmd to sync with: {url}" msgstr "" #: ../fdroid msgid "Valid commands are:" msgstr "Los comandos válidos son:" #: ../fdroid msgid "Verify the integrity of downloaded packages" msgstr "Verificar la integridad de los paquetes descargados" #: ../fdroidserver/index.py msgid "Verifying index signature:" msgstr "" #: ../fdroid msgid "Warn about possible metadata errors" msgstr "Advertir sobre posibles errores en los metadatos" #: ../fdroidserver/update.py msgid "When configured for signed indexes, create only unsigned indexes at this stage" msgstr "" msgid "X.509 'Distiguished Name' used when generating keys" msgstr "X.509 'Nombre Distinguido' usado cuando se generaron las llaves" #: ../fdroidserver/init.py #, fuzzy msgid "X.509 'Distinguished Name' used when generating keys" msgstr "X.509 'Nombre Distinguido' usado cuando se generaron las llaves" #: ../fdroidserver/common.py msgid "You can use ANDROID_HOME to set the path to your SDK, i.e.:" msgstr "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "adding IdentityFile to {path}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "adding to {name}: {path}" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "ambiguous option: %(option)s could match %(matches)s" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "ambiguous option: %s (%s?)" msgstr "" #: ../fdroidserver/lint.py ../fdroidserver/rewritemeta.py #, fuzzy msgid "applicationId in the form APPID" msgstr "app-id en el formato APPID" #: ../fdroidserver/checkupdates.py #, fuzzy msgid "applicationId to check for updates" msgstr "app-id para verificar actualizaciones" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/verify.py ../fdroidserver/publish.py #: ../fdroidserver/dscanner.py ../fdroidserver/build.py #: ../fdroidserver/scanner.py ../fdroidserver/install.py #, fuzzy msgid "applicationId with optional versionCode in the form APPID[:VERCODE]" msgstr "app-id con VersionCode opcional con el formato APPID[:VERCODE]" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "argument \"-\" with mode %r" msgstr "" #: ../fdroidserver/nightly.py msgid "attempting bare ssh connection to test deploy key:" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "can't open '%s': %s" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "cannot have multiple subparser arguments" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "cannot merge actions - two groups are named %r" msgstr "" #: ../fdroidserver/nightly.py msgid "cannot publish update, did you set the deploy key?" msgstr "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "cloning {url}" msgstr "" #: ../fdroidserver/server.py msgid "command to execute, either 'init' or 'update'" msgstr "comando a ejecutar, ya sea 'iniciar' o 'actualizar'" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "complex" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "conflicting option string: %s" msgid_plural "conflicting option strings: %s" msgstr[0] "" msgstr[1] "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "copying {apkfilename} into {path}" msgstr "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "created {path}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "deleting: repo/{apkfilename}" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "dest= is required for options like %r" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "expected %s argument" msgid_plural "expected %s arguments" msgstr[0] "" msgstr[1] "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "expected at least one argument" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "expected at most one argument" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "expected one argument" msgstr "" #: ../fdroid #, fuzzy msgid "fdroid [-h|--help|--version] []" msgstr "uso: fdroid [-h|--help|--version] []" #: ../fdroid #, fuzzy msgid "fdroid [] [-h|--help|--version|]" msgstr "uso: fdroid [-h|--help|--version] []" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "floating-point" msgstr "" #: ../fdroidserver/metadata.py msgid "force errors to be warnings, or ignore" msgstr "forzar errores al ser advertencias, o ignorar" #: ../fdroidserver/metadata.py #, fuzzy msgid "force metadata errors (default) to be warnings, or to be ignored." msgstr "forzar errores al ser advertencias, o ignorar" #: ../fdroidserver/common.py msgid "git svn clone failed" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "ignored explicit argument %r" msgstr "" #: ../fdroidserver/index.py msgid "index-v1 must have a signature, use `fdroid signindex` to create it!" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "integer" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "invalid %(type)s value: %(value)r" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "invalid choice: %(value)r (choose from %(choices)s)" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "invalid conflict_resolution value: %r" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "invalid option string %(option)r: must start with a character %(prefix_chars)r" msgstr "" #: ../fdroidserver/server.py #, python-brace-format msgid "local_copy_dir does not end with \"fdroid\", perhaps you meant: \"{path}\"" msgstr "" #: ../fdroidserver/server.py msgid "local_copy_dir must be an absolute path!" msgstr "" #: ../fdroidserver/server.py msgid "local_copy_dir must be directory, not a file!" msgstr "" #: ../fdroidserver/index.py #, python-format msgid "mirror '%s' does not end with 'fdroid'!" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "mutually exclusive arguments must be optional" msgstr "" #: ../fdroidserver/mirror.py #, python-brace-format msgid "no \"icon\" in {appid}" msgstr "" #: ../fdroidserver/signatures.py msgid "no APK supplied" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "no such option: %s" msgstr "" #: ../fdroid #, fuzzy msgid "no version info found!" msgstr "¡Se encontró una excepción desconocida!" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "not allowed with argument %s" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "one of the arguments %s is required" msgstr "" #: ../fdroidserver/index.py ../fdroidserver/common.py msgid "only accepts strings, lists, and tuples" msgstr "" #: ../fdroidserver/install.py #, python-format msgid "option %s: If you really want to install all the signed apps, use --all" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "option %s: invalid %s value: %r" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "option %s: invalid choice: %r (choose from %s)" msgstr "" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, fuzzy, python-format msgid "option -%s not recognized" msgstr "No se reconoce el comando \"%s\".\n" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option -%s requires argument" msgstr "" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option --%s must not have an argument" msgstr "" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option --%s not a unique prefix" msgstr "" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, fuzzy, python-format msgid "option --%s not recognized" msgstr "No se reconoce el comando \"%s\".\n" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option --%s requires argument" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "optional arguments" msgstr "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "overwriting existing {path}" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "positional arguments" msgstr "" #: ../fdroidserver/signatures.py #, python-brace-format msgid "refuse downloading via insecure HTTP connection (use HTTPS or specify --no-https-check): {apkfilename}" msgstr "" #: ../fdroidserver/signatures.py #, python-brace-format msgid "refuse downloading via insecure http connection (use https or specify --no-https-check): {apkfilename}" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "s3cmd sync indexes {path} to {url} and delete" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "show program's version number and exit" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.5/optparse.py #: /usr/lib/python3.6/argparse.py /usr/lib/python3.6/optparse.py msgid "show this help message and exit" msgstr "" #: ../fdroidserver/signatures.py msgid "signed APK, either a file-path or HTTPS URL." msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "skipping source tarball: {path}" msgstr "" #: ../fdroidserver/lint.py msgid "srclibs missing name and/or @" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "the following arguments are required: %s" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "unexpected option string: %s" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "unknown parser %(parser_name)r (choices: %(choices)s)" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "unrecognized arguments: %s" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "unsafe permissions on '{config_file}' (should be 0600)!" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py ../fdroid msgid "usage: " msgstr "" #: ../fdroid msgid "usage: fdroid [-h|--help|--version] []" msgstr "uso: fdroid [-h|--help|--version] []" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "using Apache libcloud to sync with {url}" msgstr "" #: ../fdroidserver/publish.py #, python-brace-format msgid "{0} app, {1} key aliases" msgid_plural "{0} apps, {1} key aliases" msgstr[0] "" msgstr[1] "" #: ../fdroidserver/update.py #, python-brace-format msgid "{apkfilename} ({appid}) has no metadata!" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "{apkfilename} has multiple {name} files, looks like Master Key exploit!" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "{apkfilename}'s AndroidManifest.xml has a bad date: " msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "{appid} does not have a name! Using package name instead." msgstr "" #: ../fdroidserver/mirror.py #, python-brace-format msgid "{appid} is missing {name}" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vname #: ../fdroidserver/lint.py #, python-brace-format msgid "{appid}: Unknown extlib {path} in build '{versionName}'" msgstr "" #: ../fdroidserver/scanner.py #, python-brace-format msgid "{appid}: no builds specified, running on current source state" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "{field} not terminated in {name}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "{name} \"{path}\" does not exist! Correct it in config.py." msgstr "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "{path} does not exist! Create it by running:" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "{path} has bad file signature \"{pattern}\", possible Janus exploit!" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "{path} is zero size!" msgstr "" #: ../fdroidserver/mirror.py #, python-brace-format msgid "{url} does not end with \"fdroid\", check the URL path!" msgstr "" #: ../fdroidserver/build.py msgid "{} build failed" msgid_plural "{} builds failed" msgstr[0] "" msgstr[1] "" #: ../fdroidserver/build.py msgid "{} build succeeded" msgid_plural "{} builds succeeded" msgstr[0] "" msgstr[1] "" #, fuzzy #~ msgid "Add PGP signatures for packages in repo using GnuPG" #~ msgstr "Agregar firmas GPG a paquetes en el repositorio" #~ msgid "Add gpg signatures for packages in repo" #~ msgstr "Agregar firmas GPG a paquetes en el repositorio" #~ msgid "Clean update - don't uses caches, reprocess all apks" #~ msgstr "Limpiar actualización - no utiliza cachés, reprocesa todos los APK's" #~ msgid "app-id in the form APPID" #~ msgstr "app-id en el formato APPID" #~ msgid "app-id to check for updates" #~ msgstr "app-id para verificar actualizaciones" #, fuzzy #~ msgid "app-id with optional versionCode in the form APPID[:VERCODE]" #~ msgstr "app-id con VersionCode opcional con el formato APPID[:VERCODE]" #~ msgid "app-id with optional versioncode in the form APPID[:VERCODE]" #~ msgstr "app-id con versioncode opcional en el formato APPID[:VERCODE]" fdroidserver-1.0.9/locale/ja/0000775000175000017500000000000013324115531015754 5ustar hanshans00000000000000fdroidserver-1.0.9/locale/ja/LC_MESSAGES/0000775000175000017500000000000013324115531017541 5ustar hanshans00000000000000fdroidserver-1.0.9/locale/ja/LC_MESSAGES/fdroidserver.po0000664000175000017500000014131613322065577022621 0ustar hanshans00000000000000# SOME DESCRIPTIVE TITLE. # This file is put in the public domain. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: fdroidserver 0.8-224-g4b0ade7\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" "POT-Creation-Date: 2018-02-13 09:01+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: ja\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" #: ../fdroidserver/nightly.py msgid "" "\n" "SSH Public Key to be used as Deploy Key:" msgstr "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "" "\n" "{path} encoded for the DEBUG_KEYSTORE secret variable:" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "\"%s/\" has no matching metadata file!" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "\"{path}\" contains outdated {name} ({version})" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "\"{path}\" contains recent {name} ({version})" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "\"{path}\" exists but s3cmd is not installed!" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "\"{path}\" is not an accepted format, convert to: {formats}" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "%(option)s option requires %(number)d argument" msgid_plural "%(option)s option requires %(number)d arguments" msgstr[0] "" #: ../fdroidserver/mirror.py #, python-format msgid "%(prog)s [options] url" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "%(prog)s: error: %(message)s\n" msgstr "" #: ../fdroidserver/scanner.py #, python-format msgid "%d problems found" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "%prog [options]" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "%r is not callable" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "%s is not an accepted build field" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "%s option does not take a value" msgstr "" #: ../fdroidserver/index.py ../fdroidserver/common.py msgid "'keypass' not found in config.py!" msgstr "" #: ../fdroidserver/index.py ../fdroidserver/common.py msgid "'keystore' not found in config.py!" msgstr "" #: ../fdroidserver/index.py ../fdroidserver/common.py msgid "'keystorepass' not found in config.py!" msgstr "" #: ../fdroidserver/index.py ../fdroidserver/common.py msgid "'repo_keyalias' not found in config.py!" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "'required' is an invalid argument for positionals" msgstr "" #: ../fdroidserver/common.py msgid "'sdk_path' not set in 'config.py'!" msgstr "" #. Translators: "build-tools" is the file name of a package from #. Google, it is part of the Android SDK. So it probably shouldn't be #. translated or transliterated. #: ../fdroidserver/common.py #, python-brace-format msgid "'{aapt}' is too old, fdroid requires build-tools-23.0.0 or newer!" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "'{aapt}' is too old, fdroid requires build-tools-{version} or newer!" msgstr "" #: ../fdroidserver/install.py #, python-brace-format msgid "'{apkfilename}' is already installed on {dev}." msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "'{field}' will be in random order! Use () or [] brackets if order is important!" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "'{path}' failed to execute!" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "'{value}' is not a valid {field} in {appid}. Regex pattern: {pattern}" msgstr "" #: ../fdroidserver/checkupdates.py #, python-brace-format msgid "...checkupdate failed for {appid} : {error}" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid ".__call__() not defined" msgstr "" #: ../fdroidserver/metadata.py msgid ".fdroid.txt is not supported! Convert to .fdroid.yml or .fdroid.json." msgstr "" #: ../fdroidserver/lint.py msgid "/issues is missing" msgstr "" #: ../fdroidserver/mirror.py msgid "A URL is required as an argument!" msgstr "" #: ../fdroid msgid "Add PGP signatures using GnuPG for packages in repo" msgstr "" #: ../fdroid msgid "Add a new application from its source code" msgstr "" #: ../fdroidserver/update.py msgid "Add a repo signing key to an unsigned repo" msgstr "" #: ../fdroidserver/update.py msgid "Add skeleton metadata files for APKs that are missing them" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Adding new repo for only {name}" msgstr "" #: ../fdroidserver/init.py msgid "Alias of the repo signing key in the keystore" msgstr "" #: ../fdroidserver/import.py msgid "Allows a different revision (or git branch) to be specified for the initial import" msgstr "" #: ../fdroidserver/mirror.py msgid "Also mirror the full archive section" msgstr "" #: ../fdroidserver/lint.py msgid "Also warn about formatting issues, like rewritemeta -l" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Android SDK '{path}' does not have '{dirname}' installed!" msgstr "" #: ../fdroidserver/common.py msgid "Android SDK not found!" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Android SDK path '{path}' does not exist!" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Android SDK path '{path}' is not a directory!" msgstr "" #. Translators: "build-tools" is the file name of a package from #. Google, it is part of the Android SDK. So it probably shouldn't be #. translated or transliterated. #: ../fdroidserver/common.py #, python-brace-format msgid "Android build-tools path '{path}' does not exist!" msgstr "" #: ../fdroidserver/update.py msgid "AndroidManifest.xml has no date" msgstr "" #: ../fdroidserver/lint.py #, python-brace-format msgid "App is in '{repo}' but has a link to {url}" msgstr "" #: ../fdroidserver/lint.py msgid "Appending .git is not necessary" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Archiving {apkfilename} with invalid signature!" msgstr "" #: ../fdroidserver/mirror.py msgid "Base URL to mirror, can include the index signing key using the query string: ?fingerprint=" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vname #: ../fdroidserver/lint.py #, python-brace-format msgid "Branch '{branch}' used as commit in build '{versionName}'" msgstr "" #: ../fdroidserver/lint.py #, python-brace-format msgid "Branch '{branch}' used as commit in srclib '{srclib}'" msgstr "" #: ../fdroid msgid "Build a package from source" msgstr "" #: ../fdroidserver/build.py msgid "Build all applications available" msgstr "" #: ../fdroidserver/lint.py msgid "Build generated by `fdroid import` - remove disable line once ready" msgstr "" #: ../fdroidserver/build.py msgid "Build only the latest version of each package" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Build should have comma-separated versionName and versionCode, not \"{value}\", in {linedesc}" msgstr "" #: ../fdroidserver/init.py #, python-format msgid "Built repo based in \"%s\" with this config:" msgstr "" #: ../fdroidserver/build.py msgid "Can't build due to {} error while scanning" msgid_plural "Can't build due to {} errors while scanning" msgstr[0] "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Cannot find a packageName for {path}!" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Cannot find an appid for {path}!" msgstr "" #: ../fdroidserver/vmtools.py #, python-brace-format msgid "Cannot read \"{path}\"!" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Cannot resolve app id {appid}" msgstr "" #: ../fdroidserver/rewritemeta.py msgid "Cannot use --list and --to at the same time" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Cannot write \"{path}\", not an accepted format, use: {formats}" msgstr "" #: ../fdroidserver/lint.py msgid "Categories are not set" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Category '%s' is not valid" msgstr "" #: ../fdroid msgid "Check for updates to applications" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Checking archiving for {appid} - apks:{integer}, keepversions:{keep}, archapks:{arch}" msgstr "" #: ../fdroidserver/dscanner.py msgid "Clean after all scans have finished" msgstr "" #: ../fdroidserver/dscanner.py msgid "Clean before the scans start and rebuild the container" msgstr "" #: ../fdroidserver/dscanner.py msgid "Clean up all containers and then exit" msgstr "" #: ../fdroidserver/update.py msgid "Clean update - don't uses caches, reprocess all APKs" msgstr "" #: ../fdroidserver/import.py msgid "Comma separated list of categories." msgstr "" #: ../fdroid #, c-format, python-format msgid "Command '%s' not recognised.\n" msgstr "" #: ../fdroidserver/checkupdates.py msgid "Commit changes" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Could not find '{command}' on your system" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Could not find {path} to remove it" msgstr "" #: ../fdroidserver/update.py msgid "Could not open apk file for analysis" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/import.py msgid "Couldn't find latest version code" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vname #: ../fdroidserver/import.py msgid "Couldn't find latest version name" msgstr "" #: ../fdroidserver/import.py msgid "Couldn't find package ID" msgstr "" #: ../fdroidserver/update.py msgid "Cowardily refusing to overwrite existing signing key setup!" msgstr "" #: ../fdroidserver/update.py msgid "Create a repo signing key in a keystore" msgstr "" #: ../fdroidserver/update.py msgid "Create skeleton metadata files that are missing" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Created new container \"{name}\"" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Creating \"{path}\" for configuring s3cmd." msgstr "" #: ../fdroidserver/publish.py msgid "Creating log directory" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Creating new S3 bucket: {url}" msgstr "" #: ../fdroidserver/publish.py msgid "Creating output directory" msgstr "" #: ../fdroidserver/index.py msgid "Creating signed index with this key (SHA256):" msgstr "" #: ../fdroidserver/import.py ../fdroidserver/verify.py #: ../fdroidserver/publish.py msgid "Creating temporary directory" msgstr "" #: ../fdroidserver/index.py msgid "Creating unsigned index in preparation for signing" msgstr "" #: ../fdroidserver/nightly.py msgid "DEBUG_KEYSTORE is not set or the value is incomplete" msgstr "" #: ../fdroidserver/update.py msgid "Delete APKs and/or OBBs without metadata from the repo" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Deleting unknown file: {path}" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Description '%s' is just the app's summary" msgstr "" #: ../fdroidserver/lint.py msgid "Description has a duplicate line" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Description has a list (%s) but it isn't bulleted (*) nor numbered (#)" msgstr "" #: ../fdroidserver/lint.py #, python-brace-format msgid "Description of length {length} is over the {limit} char limit" msgstr "" #: ../fdroidserver/mirror.py #, python-brace-format msgid "Do not include \"{path}\" in URL!" msgstr "" #: ../fdroidserver/init.py msgid "Do not prompt for Android SDK path, just fail" msgstr "" #: ../fdroidserver/build.py msgid "Don't create a source tarball, useful when testing a build" msgstr "" #: ../fdroidserver/stats.py msgid "Don't do anything logs-related" msgstr "" #: ../fdroidserver/build.py msgid "Don't refresh the repository, useful when testing a build with no internet connection" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/nightly.py #: ../fdroidserver/upload.py msgid "Don't use rsync checksums" msgstr "" #: ../fdroid msgid "Download complete mirrors of small repos" msgstr "" #: ../fdroidserver/stats.py msgid "Download logs we don't have" msgstr "" #: ../fdroidserver/common.py msgid "Downloading the repository already failed once, not trying again." msgstr "" #: ../fdroidserver/verify.py #, python-brace-format msgid "Downloading {url} failed. {error}" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Duplicate build recipe found for versionCode {versionCode} in {linedesc}" msgstr "" #: ../fdroidserver/lint.py #, python-brace-format msgid "Duplicate link in '{field}': {url}" msgstr "" #: ../fdroid msgid "Dynamically scan APKs post build" msgstr "" #: ../fdroidserver/mirror.py msgid "" "ERROR: this command should never be used to mirror f-droid.org!\n" "A full mirror of f-droid.org requires more than 200GB." msgstr "" #: ../fdroidserver/nightly.py msgid "ERROR: unsupported CI type, patches welcome!" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Empty build flag at {linedesc}" msgstr "" #: ../fdroidserver/init.py #, python-format msgid "" "Enter the path to the Android SDK (%s) here:\n" "> " msgstr "" #: ../fdroidserver/server.py ../fdroidserver/checkupdates.py #: ../fdroidserver/upload.py #, python-format msgid "Error while attempting to publish log: %s" msgstr "" #: ../fdroidserver/import.py msgid "Error while getting repo address" msgstr "" #: ../fdroid msgid "Extract signatures from APKs" msgstr "" #: ../fdroidserver/signatures.py #, python-brace-format msgid "Failed fetching signatures for '{apkfilename}': {error}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Failed reading {path}: {error}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Failed resizing {path}: {error}" msgstr "" #: ../fdroidserver/publish.py msgid "Failed to align application" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Failed to create S3 bucket: {url}" msgstr "" #: ../fdroidserver/common.py msgid "Failed to get APK manifest information" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Failed to get apk information, deleting {path}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Failed to get apk information, skipping {path}" msgstr "" #: ../fdroidserver/install.py #, python-brace-format msgid "Failed to install '{apkfilename}' on {dev}: {error}" msgstr "" #: ../fdroidserver/publish.py ../fdroidserver/common.py msgid "Failed to sign application" msgstr "" #: ../fdroidserver/common.py msgid "Failed to zipalign application" msgstr "" #: ../fdroidserver/build.py #, python-brace-format msgid "Fetched buildserverid from VM: {buildserverid}" msgstr "" #: ../fdroidserver/signatures.py #, python-brace-format msgid "Fetched signatures for '{apkfilename}' -> '{sigdir}'" msgstr "" #: ../fdroidserver/verify.py ../fdroidserver/stats.py ../fdroidserver/update.py #: ../fdroidserver/rewritemeta.py ../fdroidserver/build.py #: ../fdroidserver/checkupdates.py ../fdroidserver/scanner.py #: ../fdroidserver/install.py msgid "Finished" msgstr "" #: ../fdroidserver/lint.py msgid "Flattr donation methods belong in the FlattrID flag" msgstr "" #: ../fdroidserver/lint.py msgid "Forbidden HTML tags" msgstr "" #: ../fdroidserver/build.py msgid "Force build of disabled apps, and carries on regardless of scan problems. Only allowed in test mode." msgstr "" #: ../fdroidserver/build.py #, python-brace-format msgid "Force halting build after {0} sec timeout!" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Found \"{path}\" graphic without metadata for app \"{name}\"!" msgstr "" #: ../fdroidserver/common.py msgid "Found invalid appids in arguments" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/common.py msgid "Found invalid versionCodes for some apps" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Found multiple metadata files for {appid}" msgstr "" #: ../fdroidserver/index.py msgid "Found multiple signing certificates for repository." msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Found multiple signing certificates in {path}" msgstr "" #: ../fdroidserver/index.py msgid "Found no signing certificates for repository." msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Found non-file at %s" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Generated skeleton metadata for {appid}" msgstr "" #: ../fdroidserver/common.py #, python-format msgid "Git checkout of '%s' failed" msgstr "" #: ../fdroidserver/common.py msgid "Git clean failed" msgstr "" #: ../fdroidserver/common.py msgid "Git fetch failed" msgstr "" #: ../fdroidserver/common.py msgid "Git remote set-head failed" msgstr "" #: ../fdroidserver/common.py msgid "Git reset failed" msgstr "" #: ../fdroidserver/common.py msgid "Git submodule sync failed" msgstr "" #: ../fdroidserver/common.py msgid "Git submodule update failed" msgstr "" #: ../fdroidserver/common.py msgid "HTTPS must be used with Subversion URLs!" msgstr "" #: ../fdroidserver/index.py msgid "Ignoring package without metadata: " msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Ignoring stale cache data for {apkfilename}" msgstr "" #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Ignoring {ext} file at '{path}'" msgstr "" #: ../fdroidserver/update.py msgid "Include APKs that are signed with disabled algorithms like MD5" msgstr "" #: ../fdroidserver/common.py msgid "Initialising submodules" msgstr "" #: ../fdroidserver/install.py msgid "Install all signed applications available" msgstr "" #: ../fdroid msgid "Install built packages on devices" msgstr "" #: ../fdroidserver/install.py #, python-format msgid "Installing %s..." msgstr "" #: ../fdroidserver/install.py #, python-brace-format msgid "Installing '{apkfilename}' on {dev}..." msgstr "" #: ../fdroid msgid "Interact with the repo HTTP server" msgstr "" #: ../fdroidserver/update.py msgid "Interactively ask about things that need updating." msgstr "" #: ../fdroidserver/update.py msgid "Invalid APK" msgstr "" #: ../fdroidserver/metadata.py #, python-format msgid "Invalid boolean '%s'" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Invalid build flag at {line} in {linedesc}" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Invalid build format: {value} in {name}" msgstr "" #: ../fdroidserver/lint.py msgid "Invalid bulleted list" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Invalid license tag \"%s\"! Use only tags from https://spdx.org/license-list" msgstr "" #: ../fdroidserver/lint.py msgid "Invalid link - use [http://foo.bar Link title] or [http://foo.bar]" msgstr "" #: ../fdroidserver/metadata.py #, python-format msgid "Invalid metadata in %s:%d" msgstr "" #: ../fdroidserver/metadata.py msgid "Invalid metadata in: " msgstr "" #: ../fdroidserver/common.py #, python-format msgid "Invalid name for published file: %s" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Invalid package name {0}" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Invalid versionCode: \"{versionCode}\" is not an integer!" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "JAR signature failed to verify: {path}" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "JAR signature verified: {path}" msgstr "" #: ../fdroidserver/publish.py ../fdroidserver/update.py #: ../fdroidserver/mirror.py msgid "Java JDK not found! Install in standard location or set java_paths!" msgstr "" #: ../fdroidserver/signindex.py msgid "Java jarsigner not found! Install in standard location or set java_paths!" msgstr "" #: ../fdroidserver/lint.py msgid "Javascript in HTML src attributes" msgstr "" #: ../fdroidserver/init.py msgid "Keystore for signing key:\t" msgstr "" #: ../fdroidserver/lint.py #, python-brace-format msgid "Last used commit '{commit}' looks like a tag, but Update Check Mode is '{ucm}'" msgstr "" #: ../fdroidserver/lint.py msgid "Liberapay donation methods belong in the LiberapayID flag" msgstr "" #: ../fdroidserver/rewritemeta.py msgid "List files that would be reformatted" msgstr "" #: ../fdroidserver/build.py msgid "Make the build stop on exceptions" msgstr "" #: ../fdroidserver/index.py msgid "Malformed repository mirrors." msgstr "" #: ../fdroidserver/server.py msgid "Malformed serverwebroot line:" msgstr "" #: ../fdroidserver/gpgsign.py msgid "Missing output directory" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Name '%s' is just the auto name - remove it" msgstr "" #: ../fdroidserver/common.py msgid "No 'config.py' found, using defaults." msgstr "" #: ../fdroidserver/common.py msgid "No Android SDK found!" msgstr "" #: ../fdroidserver/import.py msgid "No android or kivy project could be found. Specify --subdir?" msgstr "" #: ../fdroidserver/install.py msgid "No attached devices found" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "No commit specified for {versionName} in {linedesc}" msgstr "" #: ../fdroidserver/index.py msgid "No fingerprint in URL." msgstr "" #: ../fdroidserver/common.py msgid "No git submodules available" msgstr "" #: ../fdroidserver/import.py msgid "No information found." msgstr "" #: ../fdroidserver/lint.py msgid "No need to specify that the app is Free Software" msgstr "" #: ../fdroidserver/lint.py msgid "No need to specify that the app is for Android" msgstr "" #: ../fdroidserver/server.py msgid "No option set! Edit your config.py to set at least one of these:" msgstr "" #: ../fdroidserver/common.py msgid "No packages specified" msgstr "" #: ../fdroidserver/install.py #, python-format msgid "No signed apk available for %s" msgstr "" #: ../fdroidserver/install.py msgid "No signed output directory - nothing to do" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "No signing certificates found in {path}" msgstr "" #: ../fdroidserver/common.py #, python-format msgid "No such package: %s" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/common.py #, python-brace-format msgid "No such versionCode {versionCode} for app {appid}" msgstr "" #: ../fdroidserver/verify.py ../fdroidserver/publish.py msgid "No unsigned directory - nothing to do" msgstr "" #: ../fdroidserver/signindex.py msgid "Nothing to do" msgstr "" #: ../fdroidserver/checkupdates.py #, python-brace-format msgid "Nothing to do for {appid}." msgstr "" #: ../fdroidserver/init.py msgid "Now set these in config.py:" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/update.py #, python-brace-format msgid "OBB file has newer versionCode({integer}) than any APK:" msgstr "" #: ../fdroidserver/update.py msgid "OBB filename must start with \"main.\" or \"patch.\":" msgstr "" #: ../fdroidserver/update.py msgid "OBB's packagename does not match a supported APK:" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Old APK signature failed to verify: {path}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Only PNG and JPEG are supported for graphics, found: {path}" msgstr "" #: ../fdroidserver/checkupdates.py msgid "Only print differences with the Play Store" msgstr "" #: ../fdroidserver/checkupdates.py msgid "Only process apps with auto-updates" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "Options" msgstr "" #: ../fdroidserver/import.py msgid "Overall license of the project." msgstr "" #: ../fdroidserver/dscanner.py msgid "Override path for repo APKs (default: ./repo)" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Parsing manifest at '{path}'" msgstr "" #: ../fdroidserver/common.py msgid "Password required with username" msgstr "" #: ../fdroidserver/import.py msgid "Path to main Android project subdirectory, if not in root." msgstr "" msgid "Path to main android project subdirectory, if not in root." msgstr "" #: ../fdroidserver/init.py msgid "Path to the Android SDK (sometimes set in ANDROID_HOME)" msgstr "" #: ../fdroidserver/btlog.py msgid "Path to the git repo to use as the log" msgstr "" #: ../fdroidserver/init.py msgid "Path to the keystore for the repo signing key" msgstr "" #: ../fdroidserver/dscanner.py msgid "Prepare Drozer to run a scan" msgstr "" msgid "Prepare drozer to run a scan" msgstr "" #: ../fdroidserver/nightly.py msgid "Print the secret variable to the terminal for easy copy/paste" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Problem with description of {appid}: {error}" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Problem with xml at '{path}'" msgstr "" #: ../fdroidserver/checkupdates.py msgid "Process auto-updates" msgstr "" #: ../fdroidserver/publish.py ../fdroidserver/update.py #, python-brace-format msgid "Processing {apkfilename}" msgstr "" #: ../fdroidserver/checkupdates.py ../fdroidserver/scanner.py #, python-brace-format msgid "Processing {appid}" msgstr "" #: ../fdroidserver/update.py msgid "Produce human-readable XML/JSON for index files" msgstr "" #: ../fdroidserver/update.py msgid "Produce human-readable index.xml" msgstr "" #: ../fdroidserver/import.py msgid "Project URL to import from." msgstr "" #: ../fdroidserver/lint.py msgid "Punctuation should be avoided" msgstr "" #: ../fdroidserver/btlog.py msgid "Push the log to this git remote repository" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Pushing binary transparency log to {url}" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Pushing to {url}" msgstr "" #: ../fdroid msgid "Quickly start a new repository" msgstr "" #: ../fdroid msgid "Read all the metadata files and exit" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Reading '{config_file}'" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Reading minSdkVersion failed: \"{apkfilename}\"" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #. https://developer.android.com/guide/topics/manifest/manifest-element.html#vname #: ../fdroidserver/common.py #, python-brace-format msgid "Reading packageName/versionCode/versionName failed, APK invalid: '{apkfilename}'" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Reading {apkfilename} from cache" msgstr "" #: ../fdroidserver/stats.py msgid "Recalculate aggregate stats - use when changes have been made that would invalidate old cached data." msgstr "" #: ../fdroidserver/common.py msgid "Removing specified files" msgstr "" #: ../fdroidserver/update.py msgid "Rename APK files that do not match package.name_123.apk" msgstr "" #: ../fdroidserver/update.py msgid "Report on build data status" msgstr "" #: ../fdroidserver/build.py msgid "Reset and create a brand new build server, even if the existing one appears to be ok." msgstr "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "Resigning {apkfilename} with provided debug.keystore" msgstr "" #: ../fdroidserver/update.py msgid "Resize all the icons exceeding the max pixel size and exit" msgstr "" #: ../fdroidserver/common.py msgid "Restrict output to warnings and errors" msgstr "" #: ../fdroid msgid "Rewrite all the metadata files" msgstr "" #: ../fdroidserver/rewritemeta.py msgid "Rewrite to a specific format: " msgstr "" #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Rewriting '{appid}'" msgstr "" #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Rewriting '{appid}' to '{path}'" msgstr "" #: ../fdroidserver/lint.py msgid "Run rewritemeta to fix formatting" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py msgid "Running first pass with MD5 checking disabled" msgstr "" #: ../fdroidserver/mirror.py #, python-brace-format msgid "Running wget in {path}" msgstr "" #: ../fdroidserver/dscanner.py msgid "Scan only the latest version of each package" msgstr "" #: ../fdroid msgid "Scan the source code of a package" msgstr "" #: ../fdroidserver/scanner.py #, python-brace-format msgid "Scanner found {count} problems in {appid}:" msgstr "" #: ../fdroidserver/scanner.py #, python-brace-format msgid "Scanner found {count} problems in {appid}:{versionCode}:" msgstr "" #: ../fdroidserver/build.py msgid "Scanner found {} problem" msgid_plural "Scanner found {} problems" msgstr[0] "" #: ../fdroidserver/common.py msgid "Set clock to that time using:" msgstr "" #: ../fdroidserver/build.py #, python-brace-format msgid "Set open file limit to {integer}" msgstr "" #: ../fdroid msgid "Set up an app build for a nightly build repo" msgstr "" #: ../fdroidserver/build.py msgid "Setting open file limit failed: " msgstr "" #: ../fdroidserver/build.py #, python-brace-format msgid "Setting {0} sec timeout for this build" msgstr "" #: ../fdroidserver/build.py msgid "Setup an emulator, install the APK on it and perform a Drozer scan" msgstr "" msgid "Setup an emulator, install the apk on it and perform a drozer scan" msgstr "" #: ../fdroid msgid "Sign and place packages in the repo" msgstr "" #: ../fdroid msgid "Sign indexes created using update --nosign" msgstr "" #: ../fdroidserver/build.py msgid "Skip scanning the source code for binaries and other problems" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Skipping '{apkfilename}' with invalid signature!" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Skipping index generation for {appid}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Skipping {apkfilename} with invalid signature!" msgstr "" #: ../fdroidserver/scanner.py #, python-brace-format msgid "Skipping {appid}: disabled" msgstr "" #: ../fdroidserver/scanner.py #, python-brace-format msgid "Skipping {appid}: no builds specified" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py msgid "Specify a local folder to sync the repo to" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py msgid "Specify an identity file to provide to SSH for rsyncing" msgstr "" #: ../fdroidserver/update.py msgid "Specify editor to use in interactive mode. Default " msgstr "" #, c-format msgid "Specify editor to use in interactive mode. Default %s" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Specify editor to use in interactive mode. Default is {path}" msgstr "" #: ../fdroidserver/build.py msgid "Specify that we're running on the build server" msgstr "" #: ../fdroidserver/nightly.py msgid "Specify which debug keystore file to use." msgstr "" #: ../fdroidserver/common.py msgid "Spew out even more information than normal" msgstr "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "Striping mystery signature from {apkfilename}" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Summary '%s' is just the app's name" msgstr "" #: ../fdroidserver/lint.py #, python-brace-format msgid "Summary of length {length} is over the {limit} char limit" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "System clock is older than date in {path}!" msgstr "" #: ../fdroidserver/build.py msgid "Test mode - put output in the tmp directory only, and always build, even if the output already exists." msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/update.py #, python-brace-format msgid "The OBB version code must come after \"{name}.\":" msgstr "" #: ../fdroidserver/btlog.py msgid "The base URL for the repo to log (default: https://f-droid.org)" msgstr "" #: ../fdroidserver/mirror.py msgid "The directory to write the mirror to" msgstr "" #: ../fdroidserver/server.py msgid "The only commands currently supported are 'init' and 'update'" msgstr "" #: ../fdroidserver/index.py msgid "The repository's fingerprint does not match." msgstr "" #: ../fdroidserver/common.py msgid "The repository's index could not be verified." msgstr "" #: ../fdroidserver/server.py #, python-brace-format msgid "The root dir for local_copy_dir \"{path}\" does not exist!" msgstr "" #: ../fdroidserver/nightly.py msgid "The the file to be included in the repo (path or glob)" msgstr "" #: ../fdroidserver/publish.py msgid "There is a keyalias collision - publishing halted" msgstr "" #: ../fdroidserver/import.py #, python-format msgid "This repo already has local metadata: %s" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py msgid "To use awsbucket, awssecretkey and awsaccesskeyid must also be set in config.py!" msgstr "" #: ../fdroidserver/lint.py msgid "UCM is set but it looks like checkupdates hasn't been run yet" msgstr "" #: ../fdroidserver/lint.py msgid "URL shorteners should not be used" msgstr "" #: ../fdroidserver/metadata.py msgid "URL title is just the URL, use brackets: [URL]" msgstr "" #: ../fdroidserver/lint.py #, python-brace-format msgid "URL {url} in Description: {error}" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Unexpected text on same line as {field} in {linedesc}" msgstr "" #: ../fdroid msgid "Unknown exception found!" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vname #: ../fdroidserver/lint.py #, python-brace-format msgid "Unknown file '{filename}' in build '{versionName}'" msgstr "" #: ../fdroidserver/metadata.py #, python-format msgid "Unknown metadata format: %s" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Unknown metadata format: {path}" msgstr "" #: ../fdroidserver/common.py msgid "Unknown version of aapt, might cause problems: " msgstr "" #: ../fdroidserver/lint.py msgid "Unlinkified link - use [http://foo.bar Link title] or [http://foo.bar]" msgstr "" #: ../fdroidserver/lint.py msgid "Unnecessary leading space" msgstr "" #: ../fdroidserver/lint.py msgid "Unnecessary trailing space" msgstr "" #: ../fdroidserver/metadata.py msgid "Unrecognised app field: " msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Unrecognised field '{field}' in {linedesc}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Unsupported file type \"{extension}\" for repo graphic" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Unsupported graphics file found: {path}" msgstr "" #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Unsupported metadata format, use: --to [{supported}]" msgstr "" #: ../fdroidserver/metadata.py msgid "Unterminated ]" msgstr "" #: ../fdroidserver/metadata.py msgid "Unterminated ]]" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Unterminated build in {name}" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Unterminated continuation in {name}" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Unused extlib at %s" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Unused file at %s" msgstr "" #: ../fdroidserver/lint.py msgid "Update Check Name is set to the known app id - it can be removed" msgstr "" #: ../fdroid msgid "Update repo information for new packages" msgstr "" #: ../fdroid msgid "Update the binary transparency log for a URL" msgstr "" #: ../fdroid msgid "Update the stats of the repo" msgstr "" #: ../fdroidserver/update.py ../fdroidserver/build.py msgid "Update the wiki" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "Usage" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "Usage: %s\n" msgstr "" #: ../fdroidserver/lint.py msgid "Use /HEAD instead of /master to point at a file in the default branch" msgstr "" #: ../fdroidserver/update.py msgid "Use `fdroid update -c` to create it." msgstr "" #: ../fdroidserver/build.py msgid "Use build server" msgstr "" #: ../fdroidserver/update.py msgid "Use date from APK instead of current time for newly added APKs" msgstr "" msgid "Use date from apk instead of current time for newly added apks" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Using \"{path}\" for configuring s3cmd." msgstr "" #: ../fdroidserver/common.py msgid "Using Java's jarsigner, not recommended for verifying APKs! Use apksigner" msgstr "" #: ../fdroidserver/init.py #, python-brace-format msgid "Using existing keystore \"{path}\"" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Using s3cmd to sync with: {url}" msgstr "" #: ../fdroid msgid "Valid commands are:" msgstr "" #: ../fdroid msgid "Verify the integrity of downloaded packages" msgstr "" #: ../fdroidserver/index.py msgid "Verifying index signature:" msgstr "" #: ../fdroid msgid "Warn about possible metadata errors" msgstr "" #: ../fdroidserver/update.py msgid "When configured for signed indexes, create only unsigned indexes at this stage" msgstr "" msgid "X.509 'Distiguished Name' used when generating keys" msgstr "" #: ../fdroidserver/init.py msgid "X.509 'Distinguished Name' used when generating keys" msgstr "" #: ../fdroidserver/common.py msgid "You can use ANDROID_HOME to set the path to your SDK, i.e.:" msgstr "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "adding IdentityFile to {path}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "adding to {name}: {path}" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "ambiguous option: %(option)s could match %(matches)s" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "ambiguous option: %s (%s?)" msgstr "" #: ../fdroidserver/lint.py ../fdroidserver/rewritemeta.py msgid "applicationId in the form APPID" msgstr "" #: ../fdroidserver/checkupdates.py msgid "applicationId to check for updates" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/verify.py ../fdroidserver/publish.py #: ../fdroidserver/dscanner.py ../fdroidserver/build.py #: ../fdroidserver/scanner.py ../fdroidserver/install.py msgid "applicationId with optional versionCode in the form APPID[:VERCODE]" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "argument \"-\" with mode %r" msgstr "" #: ../fdroidserver/nightly.py msgid "attempting bare ssh connection to test deploy key:" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "can't open '%s': %s" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "cannot have multiple subparser arguments" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "cannot merge actions - two groups are named %r" msgstr "" #: ../fdroidserver/nightly.py msgid "cannot publish update, did you set the deploy key?" msgstr "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "cloning {url}" msgstr "" #: ../fdroidserver/server.py msgid "command to execute, either 'init' or 'update'" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "complex" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "conflicting option string: %s" msgid_plural "conflicting option strings: %s" msgstr[0] "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "copying {apkfilename} into {path}" msgstr "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "created {path}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "deleting: repo/{apkfilename}" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "dest= is required for options like %r" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "expected %s argument" msgid_plural "expected %s arguments" msgstr[0] "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "expected at least one argument" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "expected at most one argument" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "expected one argument" msgstr "" #: ../fdroid msgid "fdroid [-h|--help|--version] []" msgstr "" #: ../fdroid msgid "fdroid [] [-h|--help|--version|]" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "floating-point" msgstr "" #: ../fdroidserver/metadata.py msgid "force errors to be warnings, or ignore" msgstr "" #: ../fdroidserver/metadata.py msgid "force metadata errors (default) to be warnings, or to be ignored." msgstr "" #: ../fdroidserver/common.py msgid "git svn clone failed" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "ignored explicit argument %r" msgstr "" #: ../fdroidserver/index.py msgid "index-v1 must have a signature, use `fdroid signindex` to create it!" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "integer" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "invalid %(type)s value: %(value)r" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "invalid choice: %(value)r (choose from %(choices)s)" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "invalid conflict_resolution value: %r" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "invalid option string %(option)r: must start with a character %(prefix_chars)r" msgstr "" #: ../fdroidserver/server.py #, python-brace-format msgid "local_copy_dir does not end with \"fdroid\", perhaps you meant: \"{path}\"" msgstr "" #: ../fdroidserver/server.py msgid "local_copy_dir must be an absolute path!" msgstr "" #: ../fdroidserver/server.py msgid "local_copy_dir must be directory, not a file!" msgstr "" #: ../fdroidserver/index.py #, python-format msgid "mirror '%s' does not end with 'fdroid'!" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "mutually exclusive arguments must be optional" msgstr "" #: ../fdroidserver/mirror.py #, python-brace-format msgid "no \"icon\" in {appid}" msgstr "" #: ../fdroidserver/signatures.py msgid "no APK supplied" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "no such option: %s" msgstr "" #: ../fdroid msgid "no version info found!" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "not allowed with argument %s" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "one of the arguments %s is required" msgstr "" #: ../fdroidserver/index.py ../fdroidserver/common.py msgid "only accepts strings, lists, and tuples" msgstr "" #: ../fdroidserver/install.py #, python-format msgid "option %s: If you really want to install all the signed apps, use --all" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "option %s: invalid %s value: %r" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "option %s: invalid choice: %r (choose from %s)" msgstr "" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option -%s not recognized" msgstr "" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option -%s requires argument" msgstr "" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option --%s must not have an argument" msgstr "" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option --%s not a unique prefix" msgstr "" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option --%s not recognized" msgstr "" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option --%s requires argument" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "optional arguments" msgstr "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "overwriting existing {path}" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "positional arguments" msgstr "" #: ../fdroidserver/signatures.py #, python-brace-format msgid "refuse downloading via insecure HTTP connection (use HTTPS or specify --no-https-check): {apkfilename}" msgstr "" #: ../fdroidserver/signatures.py #, python-brace-format msgid "refuse downloading via insecure http connection (use https or specify --no-https-check): {apkfilename}" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "s3cmd sync indexes {path} to {url} and delete" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "show program's version number and exit" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.5/optparse.py #: /usr/lib/python3.6/argparse.py /usr/lib/python3.6/optparse.py msgid "show this help message and exit" msgstr "" #: ../fdroidserver/signatures.py msgid "signed APK, either a file-path or HTTPS URL." msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "skipping source tarball: {path}" msgstr "" #: ../fdroidserver/lint.py msgid "srclibs missing name and/or @" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "the following arguments are required: %s" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "unexpected option string: %s" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "unknown parser %(parser_name)r (choices: %(choices)s)" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "unrecognized arguments: %s" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "unsafe permissions on '{config_file}' (should be 0600)!" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py ../fdroid msgid "usage: " msgstr "" #: ../fdroid msgid "usage: fdroid [-h|--help|--version] []" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "using Apache libcloud to sync with {url}" msgstr "" #: ../fdroidserver/publish.py #, python-brace-format msgid "{0} app, {1} key aliases" msgid_plural "{0} apps, {1} key aliases" msgstr[0] "" #: ../fdroidserver/update.py #, python-brace-format msgid "{apkfilename} ({appid}) has no metadata!" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "{apkfilename} has multiple {name} files, looks like Master Key exploit!" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "{apkfilename}'s AndroidManifest.xml has a bad date: " msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "{appid} does not have a name! Using package name instead." msgstr "" #: ../fdroidserver/mirror.py #, python-brace-format msgid "{appid} is missing {name}" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vname #: ../fdroidserver/lint.py #, python-brace-format msgid "{appid}: Unknown extlib {path} in build '{versionName}'" msgstr "" #: ../fdroidserver/scanner.py #, python-brace-format msgid "{appid}: no builds specified, running on current source state" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "{field} not terminated in {name}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "{name} \"{path}\" does not exist! Correct it in config.py." msgstr "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "{path} does not exist! Create it by running:" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "{path} has bad file signature \"{pattern}\", possible Janus exploit!" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "{path} is zero size!" msgstr "" #: ../fdroidserver/mirror.py #, python-brace-format msgid "{url} does not end with \"fdroid\", check the URL path!" msgstr "" #: ../fdroidserver/build.py msgid "{} build failed" msgid_plural "{} builds failed" msgstr[0] "" #: ../fdroidserver/build.py msgid "{} build succeeded" msgid_plural "{} builds succeeded" msgstr[0] "" fdroidserver-1.0.9/locale/tr/0000775000175000017500000000000013324115531016007 5ustar hanshans00000000000000fdroidserver-1.0.9/locale/tr/LC_MESSAGES/0000775000175000017500000000000013324115531017574 5ustar hanshans00000000000000fdroidserver-1.0.9/locale/tr/LC_MESSAGES/fdroidserver.mo0000664000175000017500000013400013324115526022631 0ustar hanshans00000000000000L|)}7$-+2+^9^#:Xjz!!"&';1c"AD.? On  E + !L!Fd!!!!3!*"*?":j""-"R"$F#6k#9##)#-$1K$}$*$$/$[%9t%5%% &C!&-e&[&*&V'%q' '''+'=(V(m(!(U(#)6$)%[)4)#))))*"1*$T*!y*!**;*'+/:+j+(++++-,/,2L,4,6,,* - 4-FU-=----:(.c.U..(./A7/!y/H/"/ 0v(0,00/0)1 E1f171111!2&82._2.2322 3.+34Z33333d3*E49p4!4(4)435-S5-55'5566*6E6V6p6(6#6+67>%7d7)|7!77&7"82#8 V8b8*w8'88J8B+9n99#9979&:::CY:I:!: ;N$;9s;$;!;;<0<+I<%u<<<<<3=<=S=o=0=.=@=&><>*[>'>>1>%> ?(?C?7_?1?1?*?;&@*b@#@@@-@A$A:DA:A7A&A-BGBdB=B,BB CC7C/JC zCCC*C(D)D:D$YD~D-DPD Ed6EE7EEUF4^F:F&FFG3GGG!gG-GG,G!G*H8HH2HH H,H I&AIBhIBI#I*J==J0{J%J.JK%K*BK7mK3K5K<L.LL){L*L-L#L9"M*\MfM/M?N$^N=N,N-N8O6UO1O(OPO=8P!vP.P!P5PQ28QkQQ/QFQR8RSR*lR4R'R4R)S8SHS#eSSS@S(S,TFTcTsT yTET$TT>U>?U%~UIU UV/V+CVoV#VNV3V41W;fWWW4WX)X"IXClXX2XX(Y.:Y2iY Y-YY<Y!Z?ZNZ%kZ*ZZZZ/[/?[o[&~[A[[[D\^\!f\3\%\N\F1](x]-]']-]%^:^J^]^t^#^'^G^%_.E_t__%___ `*`=`Y`fn`f`-7h;vh2h5h,i'HiKpiii&jAj^jojj'jj(j) k-3k.ak3k.kLkO@l-lRlmK+m8wmmKm n$'n4Ln&n2n@n$o:Ao^|o"oEo7Dp|p p+p:p*qDHqq,qjq9Dr5~rr+rYr,Ws[s*sV t%bt ttt+t= uGu^u"yuUuuBv,TvIv,vvw))w"Sw$vw!w!ww;w74x0lxx(xxxy-4yby2y4y8y z*>z izFz=z{2/{Db{#{S{&|(F| o|A|!|H|"=},`}v},~1~/P~)~ ~~7~ ?#_!&..3*^#y.4̀3 >R*Ձ9!:(\)3--?'T|Ճ(#E+i>. &;b&s%A =#/ag_!t+؇;#- QIrI! (NI92҉ &Db+{%͊< 3:n0.@Xn*'1%& LZ-u71ۍ1 *?;j/?֎ "@;|886+2b62̐2=2,p$ߑ0 <!Wy#;)(R-jP ~ JP 4ZL,ܕ( "2Ui6-+1*P8{2 ,& S&t>>ژ%/?So0Ù%.I%d/:BD8R}1Л)&,-S#9*ߜi /tJ$7,L-y861(IPr=ß!.#!R5t2ʠ/9Fiʡ*4)'^4ʢڢ#/@A,H" -7EF$DȤA %OIu .0"S)n`??9;y&ܧ<9V.uILU)l/HƩ0" SD^)ͪ'/'W v34 *%^P ʬR>%G9m%NͭK&h/'-*;Xu!7X%F6l!'߰#+#Fj$qq2-0Ҳ',+Xx!5Գ B& i>u82( GI49Ƶ7=R 8-B[7r+)ַ SSH Public Key to be used as Deploy Key: {path} encoded for the DEBUG_KEYSTORE secret variable:"%s/" has no matching metadata file!"{path}" contains outdated {name} ({version})"{path}" contains recent {name} ({version})"{path}" exists but s3cmd is not installed!"{path}" is not an accepted format, convert to: {formats}%(option)s option requires %(number)d argument%(option)s option requires %(number)d arguments%(prog)s [options] url%(prog)s: error: %(message)s %d problems found%prog [options]%r is not callable%s is not an accepted build field%s option does not take a value'keypass' not found in config.py!'keystore' not found in config.py!'keystorepass' not found in config.py!'repo_keyalias' not found in config.py!'required' is an invalid argument for positionals'sdk_path' not set in 'config.py'!'{aapt}' is too old, fdroid requires build-tools-23.0.0 or newer!'{aapt}' is too old, fdroid requires build-tools-{version} or newer!'{apkfilename}' is already installed on {dev}.'{field}' will be in random order! Use () or [] brackets if order is important!'{path}' failed to execute!'{value}' is not a valid {field} in {appid}. Regex pattern: {pattern}...checkupdate failed for {appid} : {error}.__call__() not defined.fdroid.txt is not supported! Convert to .fdroid.yml or .fdroid.json./issues is missingA URL is required as an argument!Add PGP signatures using GnuPG for packages in repoAdd a new application from its source codeAdd a repo signing key to an unsigned repoAdd skeleton metadata files for APKs that are missing themAdding new repo for only {name}Alias of the repo signing key in the keystoreAllows a different revision (or git branch) to be specified for the initial importAlso mirror the full archive sectionAlso warn about formatting issues, like rewritemeta -lAndroid SDK '{path}' does not have '{dirname}' installed!Android SDK not found!Android SDK path '{path}' does not exist!Android SDK path '{path}' is not a directory!Android build-tools path '{path}' does not exist!AndroidManifest.xml has no dateApp is in '{repo}' but has a link to {url}Appending .git is not necessaryArchiving {apkfilename} with invalid signature!Base URL to mirror, can include the index signing key using the query string: ?fingerprint=Branch '{branch}' used as commit in build '{versionName}'Branch '{branch}' used as commit in srclib '{srclib}'Build a package from sourceBuild all applications availableBuild generated by `fdroid import` - remove disable line once readyBuild only the latest version of each packageBuild should have comma-separated versionName and versionCode, not "{value}", in {linedesc}Built repo based in "%s" with this config:Can't build due to {} error while scanningCan't build due to {} errors while scanningCannot find a packageName for {path}!Cannot find an appid for {path}!Cannot read "{path}"!Cannot resolve app id {appid}Cannot use --list and --to at the same timeCannot write "{path}", not an accepted format, use: {formats}Categories are not setCategory '%s' is not validCheck for updates to applicationsChecking archiving for {appid} - apks:{integer}, keepversions:{keep}, archapks:{arch}Clean after all scans have finishedClean before the scans start and rebuild the containerClean up all containers and then exitClean update - don't uses caches, reprocess all APKsComma separated list of categories.Command '%s' not recognised. Commit changesCould not find '{command}' on your systemCould not find {path} to remove itCould not open apk file for analysisCouldn't find latest version codeCouldn't find latest version nameCouldn't find package IDCowardily refusing to overwrite existing signing key setup!Create a repo signing key in a keystoreCreate skeleton metadata files that are missingCreated new container "{name}"Creating "{path}" for configuring s3cmd.Creating log directoryCreating new S3 bucket: {url}Creating output directoryCreating signed index with this key (SHA256):Creating temporary directoryCreating unsigned index in preparation for signingDEBUG_KEYSTORE is not set or the value is incompleteDelete APKs and/or OBBs without metadata from the repoDeleting unknown file: {path}Description '%s' is just the app's summaryDescription has a duplicate lineDescription has a list (%s) but it isn't bulleted (*) nor numbered (#)Description of length {length} is over the {limit} char limitDo not include "{path}" in URL!Do not prompt for Android SDK path, just failDon't create a source tarball, useful when testing a buildDon't do anything logs-relatedDon't refresh the repository, useful when testing a build with no internet connectionDon't use rsync checksumsDownload complete mirrors of small reposDownload logs we don't haveDownloading the repository already failed once, not trying again.Downloading {url} failed. {error}Duplicate build recipe found for versionCode {versionCode} in {linedesc}Duplicate link in '{field}': {url}Dynamically scan APKs post buildERROR: this command should never be used to mirror f-droid.org! A full mirror of f-droid.org requires more than 200GB.ERROR: unsupported CI type, patches welcome!Empty build flag at {linedesc}Enter the path to the Android SDK (%s) here: > Error while attempting to publish log: %sError while getting repo addressExtract signatures from APKsFailed fetching signatures for '{apkfilename}': {error}Failed reading {path}: {error}Failed resizing {path}: {error}Failed to align applicationFailed to create S3 bucket: {url}Failed to get APK manifest informationFailed to get apk information, deleting {path}Failed to get apk information, skipping {path}Failed to install '{apkfilename}' on {dev}: {error}Failed to sign applicationFailed to zipalign applicationFetched buildserverid from VM: {buildserverid}Fetched signatures for '{apkfilename}' -> '{sigdir}'FinishedFlattr donation methods belong in the FlattrID flagForbidden HTML tagsForce build of disabled apps, and carries on regardless of scan problems. Only allowed in test mode.Force halting build after {0} sec timeout!Found "{path}" graphic without metadata for app "{name}"!Found invalid appids in argumentsFound invalid versionCodes for some appsFound multiple metadata files for {appid}Found multiple signing certificates for repository.Found multiple signing certificates in {path}Found no signing certificates for repository.Found non-file at %sGenerated skeleton metadata for {appid}Git checkout of '%s' failedGit clean failedGit fetch failedGit remote set-head failedGit reset failedGit submodule sync failedGit submodule update failedHTTPS must be used with Subversion URLs!Ignoring package without metadata: Ignoring stale cache data for {apkfilename}Ignoring {ext} file at '{path}'Include APKs that are signed with disabled algorithms like MD5Initialising submodulesInstall all signed applications availableInstall built packages on devicesInstalling %s...Installing '{apkfilename}' on {dev}...Interact with the repo HTTP serverInteractively ask about things that need updating.Invalid APKInvalid boolean '%s'Invalid build flag at {line} in {linedesc}Invalid build format: {value} in {name}Invalid bulleted listInvalid license tag "%s"! Use only tags from https://spdx.org/license-listInvalid link - use [http://foo.bar Link title] or [http://foo.bar]Invalid metadata in %s:%dInvalid metadata in: Invalid name for published file: %sInvalid package name {0}Invalid versionCode: "{versionCode}" is not an integer!JAR signature failed to verify: {path}JAR signature verified: {path}Java JDK not found! Install in standard location or set java_paths!Java jarsigner not found! Install in standard location or set java_paths!Javascript in HTML src attributesKeystore for signing key: Last used commit '{commit}' looks like a tag, but Update Check Mode is '{ucm}'Liberapay donation methods belong in the LiberapayID flagList files that would be reformattedMake the build stop on exceptionsMalformed repository mirrors.Malformed serverwebroot line:Missing output directoryName '%s' is just the auto name - remove itNo 'config.py' found, using defaults.No Android SDK found!No android or kivy project could be found. Specify --subdir?No attached devices foundNo commit specified for {versionName} in {linedesc}No fingerprint in URL.No git submodules availableNo information found.No need to specify that the app is Free SoftwareNo need to specify that the app is for AndroidNo option set! Edit your config.py to set at least one of these:No packages specifiedNo signed apk available for %sNo signed output directory - nothing to doNo signing certificates found in {path}No such package: %sNo such versionCode {versionCode} for app {appid}No unsigned directory - nothing to doNothing to doNothing to do for {appid}.Now set these in config.py:OBB file has newer versionCode({integer}) than any APK:OBB filename must start with "main." or "patch.":OBB's packagename does not match a supported APK:Old APK signature failed to verify: {path}Only PNG and JPEG are supported for graphics, found: {path}Only print differences with the Play StoreOnly process apps with auto-updatesOptionsOverall license of the project.Override path for repo APKs (default: ./repo)Parsing manifest at '{path}'Password required with usernamePath to main Android project subdirectory, if not in root.Path to main android project subdirectory, if not in root.Path to the Android SDK (sometimes set in ANDROID_HOME)Path to the git repo to use as the logPath to the keystore for the repo signing keyPrepare Drozer to run a scanPrepare drozer to run a scanPrint the secret variable to the terminal for easy copy/pasteProblem with description of {appid}: {error}Problem with xml at '{path}'Process auto-updatesProcessing {apkfilename}Processing {appid}Produce human-readable XML/JSON for index filesProduce human-readable index.xmlProject URL to import from.Punctuation should be avoidedPush the log to this git remote repositoryPushing binary transparency log to {url}Pushing to {url}Quickly start a new repositoryRead all the metadata files and exitReading '{config_file}'Reading minSdkVersion failed: "{apkfilename}"Reading packageName/versionCode/versionName failed, APK invalid: '{apkfilename}'Reading {apkfilename} from cacheRecalculate aggregate stats - use when changes have been made that would invalidate old cached data.Removing specified filesRename APK files that do not match package.name_123.apkReport on build data statusReset and create a brand new build server, even if the existing one appears to be ok.Resigning {apkfilename} with provided debug.keystoreResize all the icons exceeding the max pixel size and exitRestrict output to warnings and errorsRewrite all the metadata filesRewrite to a specific format: Rewriting '{appid}'Rewriting '{appid}' to '{path}'Run rewritemeta to fix formattingRunning first pass with MD5 checking disabledRunning wget in {path}Scan only the latest version of each packageScan the source code of a packageScanner found {count} problems in {appid}:Scanner found {count} problems in {appid}:{versionCode}:Scanner found {} problemScanner found {} problemsSet clock to that time using:Set open file limit to {integer}Set up an app build for a nightly build repoSetting open file limit failed: Setting {0} sec timeout for this buildSetup an emulator, install the APK on it and perform a Drozer scanSetup an emulator, install the apk on it and perform a drozer scanSign and place packages in the repoSign indexes created using update --nosignSkip scanning the source code for binaries and other problemsSkipping '{apkfilename}' with invalid signature!Skipping index generation for {appid}Skipping {apkfilename} with invalid signature!Skipping {appid}: disabledSkipping {appid}: no builds specifiedSpecify a local folder to sync the repo toSpecify an identity file to provide to SSH for rsyncingSpecify editor to use in interactive mode. Default Specify editor to use in interactive mode. Default %sSpecify editor to use in interactive mode. Default is {path}Specify that we're running on the build serverSpecify which debug keystore file to use.Spew out even more information than normalStriping mystery signature from {apkfilename}Summary '%s' is just the app's nameSummary of length {length} is over the {limit} char limitSystem clock is older than date in {path}!Test mode - put output in the tmp directory only, and always build, even if the output already exists.The OBB version code must come after "{name}.":The base URL for the repo to log (default: https://f-droid.org)The directory to write the mirror toThe only commands currently supported are 'init' and 'update'The repository's fingerprint does not match.The repository's index could not be verified.The root dir for local_copy_dir "{path}" does not exist!The the file to be included in the repo (path or glob)There is a keyalias collision - publishing haltedThis repo already has local metadata: %sTo use awsbucket, awssecretkey and awsaccesskeyid must also be set in config.py!UCM is set but it looks like checkupdates hasn't been run yetURL shorteners should not be usedURL title is just the URL, use brackets: [URL]URL {url} in Description: {error}Unexpected text on same line as {field} in {linedesc}Unknown exception found!Unknown file '{filename}' in build '{versionName}'Unknown metadata format: %sUnknown metadata format: {path}Unknown version of aapt, might cause problems: Unlinkified link - use [http://foo.bar Link title] or [http://foo.bar]Unnecessary leading spaceUnnecessary trailing spaceUnrecognised app field: Unrecognised field '{field}' in {linedesc}Unsupported file type "{extension}" for repo graphicUnsupported graphics file found: {path}Unsupported metadata format, use: --to [{supported}]Unterminated ]Unterminated ]]Unterminated build in {name}Unterminated continuation in {name}Unused extlib at %sUnused file at %sUpdate Check Name is set to the known app id - it can be removedUpdate repo information for new packagesUpdate the binary transparency log for a URLUpdate the stats of the repoUpdate the wikiUsageUsage: %s Use /HEAD instead of /master to point at a file in the default branchUse `fdroid update -c` to create it.Use build serverUse date from APK instead of current time for newly added APKsUse date from apk instead of current time for newly added apksUsing "{path}" for configuring s3cmd.Using Java's jarsigner, not recommended for verifying APKs! Use apksignerUsing existing keystore "{path}"Using s3cmd to sync with: {url}Valid commands are:Verify the integrity of downloaded packagesVerifying index signature:Warn about possible metadata errorsWhen configured for signed indexes, create only unsigned indexes at this stageX.509 'Distiguished Name' used when generating keysX.509 'Distinguished Name' used when generating keysYou can use ANDROID_HOME to set the path to your SDK, i.e.:adding IdentityFile to {path}adding to {name}: {path}ambiguous option: %(option)s could match %(matches)sambiguous option: %s (%s?)applicationId in the form APPIDapplicationId to check for updatesapplicationId with optional versionCode in the form APPID[:VERCODE]argument "-" with mode %rattempting bare ssh connection to test deploy key:can't open '%s': %scannot have multiple subparser argumentscannot merge actions - two groups are named %rcannot publish update, did you set the deploy key?cloning {url}command to execute, either 'init' or 'update'complexconflicting option string: %sconflicting option strings: %scopying {apkfilename} into {path}created {path}deleting: repo/{apkfilename}dest= is required for options like %rexpected %s argumentexpected %s argumentsexpected at least one argumentexpected at most one argumentexpected one argumentfdroid [-h|--help|--version] []fdroid [] [-h|--help|--version|]floating-pointforce errors to be warnings, or ignoreforce metadata errors (default) to be warnings, or to be ignored.git svn clone failedignored explicit argument %rindex-v1 must have a signature, use `fdroid signindex` to create it!integerinvalid %(type)s value: %(value)rinvalid choice: %(value)r (choose from %(choices)s)invalid conflict_resolution value: %rinvalid option string %(option)r: must start with a character %(prefix_chars)rlocal_copy_dir does not end with "fdroid", perhaps you meant: "{path}"local_copy_dir must be an absolute path!local_copy_dir must be directory, not a file!mirror '%s' does not end with 'fdroid'!mutually exclusive arguments must be optionalno "icon" in {appid}no APK suppliedno such option: %sno version info found!not allowed with argument %sone of the arguments %s is requiredonly accepts strings, lists, and tuplesoption %s: If you really want to install all the signed apps, use --alloption %s: invalid %s value: %roption %s: invalid choice: %r (choose from %s)option -%s not recognizedoption -%s requires argumentoption --%s must not have an argumentoption --%s not a unique prefixoption --%s not recognizedoption --%s requires argumentoptional argumentsoverwriting existing {path}positional argumentsrefuse downloading via insecure HTTP connection (use HTTPS or specify --no-https-check): {apkfilename}refuse downloading via insecure http connection (use https or specify --no-https-check): {apkfilename}s3cmd sync indexes {path} to {url} and deleteshow program's version number and exitshow this help message and exitsigned APK, either a file-path or HTTPS URL.skipping source tarball: {path}srclibs missing name and/or @the following arguments are required: %sunexpected option string: %sunknown parser %(parser_name)r (choices: %(choices)s)unrecognized arguments: %sunsafe permissions on '{config_file}' (should be 0600)!usage: usage: fdroid [-h|--help|--version] []using Apache libcloud to sync with {url}{0} app, {1} key aliases{0} apps, {1} key aliases{apkfilename} ({appid}) has no metadata!{apkfilename} has multiple {name} files, looks like Master Key exploit!{apkfilename}'s AndroidManifest.xml has a bad date: {appid} does not have a name! Using package name instead.{appid} is missing {name}{appid}: Unknown extlib {path} in build '{versionName}'{appid}: no builds specified, running on current source state{field} not terminated in {name}{name} "{path}" does not exist! Correct it in config.py.{path} does not exist! Create it by running:{path} has bad file signature "{pattern}", possible Janus exploit!{path} is zero size!{url} does not end with "fdroid", check the URL path!{} build failed{} builds failed{} build succeeded{} builds succeededProject-Id-Version: fdroidserver 0.9 Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues POT-Creation-Date: 2018-02-13 09:01+0100 PO-Revision-Date: 2018-05-20 20:42+0000 Last-Translator: Ali Demirtas Language-Team: Turkish Plural-Forms: nplurals=2; plural=n != 1 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Generated-By: Babel 1.3 Dağıtım Anahtarı olarak kullanılacak SSH Açık Anahtar: DEBUG_KEYSTORE gizli değişkeni için kodlanmış {path}:"%s/" eşleşen üst veri dosyasına sahip değil!"{path}" tarihi geçmiş {name} ({version}) içeriyor"{path}" en son {name} ({version}) içeriyor"{path}" var ancak s3cmd kurulu değil!"{path}" kabul edilebilir bir tür değil, şuna dönüştürün: {formats}%(option)s seçeneği %(number)d argüman gerektirir%(option)s seçeneği %(number)d argüman gerektirir%(prog)s [seçenekler] url%(prog)s: hata: %(message)s %d sorun bulundu%prog [options]%r çağrılabilir değil%s kabul edilen bir inşa alanı değil%s seçeneği bir değer almaz'keypass' config.py içinde bulunamadı!'keystore' config.py içinde bulunamadı!'keystorepass' config.py içinde bulunamadı!'repo_keyalias' config.py içinde bulunamadı!'required' positionals için geçersiz bir argüman'sdk_path' 'config.py' içinde ayarlı değil!'{aapt}' çok eski, fdroid build-tools-23.0.0 veya daha yenisini gerektirir!'{aapt}' çok eski, fdroid build-tools-{version} veya daha yenisini gerektirir!'{apkfilename}' zaten {dev} üzerinde kurulu.'{field}' rastgele sırada olacak! Sıra önemliyse () veya [] parantez kullanın!'{path}' yürütülemedi!'{value}' {appid} içinde geçerli {field} değil. Regex ifadesi: {pattern}.. .checkupdate {appid} için başarısız oldu: {error}.__call__() tanımlı değil.fdroid.txt desteklenmiyor! .fdroid.yml ya da .fdroid.json dönüştürün./issues eksikBir URL, argüman olarak gereklidir!Depodaki paketler için GnuPG ile PGP imzaları ekleKaynak kodundan yeni bir uygulama ekleİmzasız bir repo repo imzalama anahtarı ekleyinİskelet meta veri dosyaları olmayan APKlar için onları yaratSadece {name} için yeni repo eklemeDepo imzalama anahtarının anahtar deposundaki takma adıİlk içe aktarım için farklı bir revizyonun (veya git dalının) belirtilmesine izin verirTam arşiv bölümünü de yansıtAyrıca biçimlendirme sorunları hakkında uyar, rewritemeta -l gibiAndroid SDK '{path}' içinde '{dirname}' kurulu değil!Android SDK bulunamadı!Android SDK konumu '{path}' yok!Android SDK yolu '{path}' bir dizin değil!Android oluşturma araçları yolu '{path}' mevcut değil!AndroidManifest.xml herhangi bir tarih yokUygulama '{repo}' içinde ancak {url} adresine bir bağlantısı varEkleme .gıt gerekli değildirGeçersiz imza ile {apkfilename} arşivleme!Yansıtılacak temel URL, sorgu dizesini kullanarak dizin imzalama anahtarını içerebilir: ?fingerprint=Branch '{branch}' used as commit in build '{versionName}'Branch '{branch}' used as commit in srclib '{srclib}'Kaynaktan bir paket inşa etKullanılabilir tüm uygulamaları inşa etİnşa `fdroid import` ile üretildi - hazır olunca devre dışı satırını kaldırınHer paketin sadece son sürümünü inşa etBuild should have comma-separated versionName and versionCode, not "{value}", in {linedesc}Built repo based in "%s" with this config:Can't build due to {} error while scanningCan't build due to {} errors while scanningCannot find a packageName for {path}!Cannot find an appid for {path}!Cannot read "{path}"!Cannot resolve app id {appid}Cannot use --list and --to at the same timeCannot write "{path}", not an accepted format, use: {formats}Categories are not setCategory '%s' is not validUygulama güncellemelerini denetleChecking archiving for {appid} - apks:{integer}, keepversions:{keep}, archapks:{arch}Tüm taramalar bitince temizleTaramalar başlamadan önce temizle ve konteyneri yeniden inşa etBütün konteynerleri temizle ve sonra çıkTemiz güncelleme - önbellekleri kullanmaz, tüm APKları yeniden işlerKategorilerin virgülle ayrılmış listesi.Komut '%s' tanınmıyor. Değişiklikleri işleCould not find '{command}' on your systemCould not find {path} to remove itCould not open apk file for analysisCouldn't find latest version codeCouldn't find latest version nameCouldn't find package IDCowardily refusing to overwrite existing signing key setup!Bir anahtar deposunda, depo imzalama anahtarı yaratırEksik olan iskelet üst veri dosyalarını yaratCreated new container "{name}"Creating "{path}" for configuring s3cmd.Creating log directoryCreating new S3 bucket: {url}Creating output directoryCreating signed index with this key (SHA256):Creating temporary directoryCreating unsigned index in preparation for signingDEBUG_KEYSTORE is not set or the value is incompleteDepodan üst verisi olmayan APKları ve/veya OBBleri silDeleting unknown file: {path}Description '%s' is just the app's summaryDescription has a duplicate lineDescription has a list (%s) but it isn't bulleted (*) nor numbered (#)Description of length {length} is over the {limit} char limitDo not include "{path}" in URL!Android SDK konumunu sorma, sadece başarısız olBir kaynak tar dosyası yaratma, bir inşa sınanırken yararlıdırGünlüklerle ilgili bir şey yapmaDepoyu yenileme, bir inşa internet bağlantısı olmadan sınanırken yararlıdırRsync sağlama toplamlarını kullanmaDownload complete mirrors of small reposBizde olmayan günlükleri indirDownloading the repository already failed once, not trying again.Downloading {url} failed. {error}Duplicate build recipe found for versionCode {versionCode} in {linedesc}Duplicate link in '{field}': {url}İnşa sonrası APKları dinamik olarak taraERROR: this command should never be used to mirror f-droid.org! A full mirror of f-droid.org requires more than 200GB.ERROR: unsupported CI type, patches welcome!Empty build flag at {linedesc}Enter the path to the Android SDK (%s) here: > Error while attempting to publish log: %sError while getting repo addressExtract signatures from APKsFailed fetching signatures for '{apkfilename}': {error}Failed reading {path}: {error}Failed resizing {path}: {error}Uygulama hizalama başarısız olduFailed to create S3 bucket: {url}Failed to get APK manifest informationFailed to get apk information, deleting {path}Failed to get apk information, skipping {path}Failed to install '{apkfilename}' on {dev}: {error}Failed to sign applicationUygulama zipalign başarısız olduFetched buildserverid from VM: {buildserverid}Fetched signatures for '{apkfilename}' -> '{sigdir}'FinishedFlattr donation methods belong in the FlattrID flagForbidden HTML tagsDevre dışı uygulamaların inşasını zorunlu kıl, ve tarama problemi olsa bile devam et. Sadece sınama kipinde izin verilir.Force halting build after {0} sec timeout!Found "{path}" graphic without metadata for app "{name}"!Found invalid appids in argumentsFound invalid versionCodes for some appsFound multiple metadata files for {appid}Found multiple signing certificates for repository.Found multiple signing certificates in {path}Found no signing certificates for repository.Found non-file at %sGenerated skeleton metadata for {appid}Git checkout of '%s' failedGit clean failedGit fetch failedGit remote set-head failedGit reset failedGit submodule sync failedGit submodule update failedHTTPS must be used with Subversion URLs!Ignoring package without metadata: Ignoring stale cache data for {apkfilename}Ignoring {ext} file at '{path}'Include APKs that are signed with disabled algorithms like MD5Initialising submodulesKullanılabilir tüm imzalı uygulamaları kurİnşa edilen paketleri aygıtlara kurInstalling %s...Installing '{apkfilename}' on {dev}...Depo HTTP sunucusu ile etkileşim kurGüncelleme gerektiren şeyler hakkında etkileşimli olarak sor.Invalid APKGeçersiz boole '%s'{linedesc} içinde {line} üstünde geçersiz inşa bayrağıGeçersiz inşa biçimi: {name} içinde {value}Geçersiz madde imli listeGeçersiz lisans etiketi "%s"! Yalnızca https://spdx.org/license-list adresindeki etiketleri kullanınGeçersiz bağlantı - [http://foo.bar Bağlantı başlığı] veya [http://foo.bar] kullanın%s:%d içinde geçersiz üst veriGeçersiz üst veri: Yayımlanmış dosya için geçersiz ad: %sGeçersiz paket adı {0}Geçersiz versionCode: "{versionCode}" bir tamsayı değil!JAR imzası doğrulanamadı: {path}JAR imzası doğrulandı: {path}Java JDK bulunmadı! Standart konumda kurun veya java_paths'i ayarlayın!Java jarsigner not found! Install in standard location or set java_paths!Javascript in HTML src attributesİmzalama için anahtar deposu: Last used commit '{commit}' looks like a tag, but Update Check Mode is '{ucm}'Liberapay donation methods belong in the LiberapayID flagYeniden biçimlendirilecek olan dosyaları listeleÖzel durumlarda inşayı durdurMalformed repository mirrors.Malformed serverwebroot line:Missing output directoryName '%s' is just the auto name - remove itNo 'config.py' found, using defaults.No Android SDK found!No android or kivy project could be found. Specify --subdir?No attached devices foundNo commit specified for {versionName} in {linedesc}No fingerprint in URL.No git submodules availableNo information found.No need to specify that the app is Free SoftwareNo need to specify that the app is for AndroidNo option set! Edit your config.py to set at least one of these:No packages specifiedNo signed apk available for %sNo signed output directory - nothing to doNo signing certificates found in {path}No such package: %sNo such versionCode {versionCode} for app {appid}No unsigned directory - nothing to doNothing to doNothing to do for {appid}.Şimdi bunları config.py içinde ayarlayın:OBB file has newer versionCode({integer}) than any APK:OBB filename must start with "main." or "patch.":OBB's packagename does not match a supported APK:Old APK signature failed to verify: {path}Only PNG and JPEG are supported for graphics, found: {path}Yalnızca Play Store ile olan farkları yazdırYalnızca kendiliğinden güncellemesi olan uygulamaları işleSeçeneklerProjenin genel lisansı.Depo APKları için konumu geçersiz kıl (öntanımlı: ./repo)Parsing manifest at '{path}'Password required with usernameKökte değilse, ana Android proje alt dizininin konumu.Kökte değilse, ana Android proje alt dizininin konumu.Android SDK konumu (bazen ANDROID_HOME'da ayarlıdır)Günlük olarak kullanılacak git deposunun konumuDepo imzalama anahtarı için anahtar deposunun konumuDrozer'i bir tarama çalıştırmak için hazırlaDrozer'i bir tarama çalıştırmak için hazırlaPrint the secret variable to the terminal for easy copy/pasteProblem with description of {appid}: {error}Problem with xml at '{path}'Kendiliğinden güncellemeleri işleProcessing {apkfilename}Processing {appid}Dizin dosyaları için okunabilir XML/JSON üretOkunabilir index.xml üretİçe aktarma için proje URL'si.Punctuation should be avoidedGünlüğü bu git uzak deposuna itİkili şeffaflık günlüğü {url} konumuna gönderiliyorPushing to {url}Hızlıca yeni bir depo başlatTüm üst veri dosyalarını oku ve çıkReading '{config_file}'Reading minSdkVersion failed: "{apkfilename}"Reading packageName/versionCode/versionName failed, APK invalid: '{apkfilename}'Reading {apkfilename} from cacheToplam istatistikleri yeniden hesapla - eski önbelleklenen veriyi geçersiz kılacak değişiklikler yapıldığında kullan.Removing specified filespaket.ad_123.apk ile eşleşmeyen tüm APK dosyalarını yeniden adlandırİnşa veri durumunu bildirSıfırla ve yeni bir inşa sunucusu yarat, var olan iyi görünüyor olsa bile.Resigning {apkfilename} with provided debug.keystorePiksel boyut sınırını aşan tüm simgeleri yeniden boyutlandır ve çıkÇıkışı uyarılara ve hatalara kısıtlaTüm üst veri dosyalarını yeniden yazBelirli bir biçimde yeniden yaz: Rewriting '{appid}'Rewriting '{appid}' to '{path}'Biçimlemeyi düzeltmek için rewritemeta çalıştırRunning first pass with MD5 checking disabledRunning wget in {path}Her paketin sadece en son sürümünü taraBir paketin kaynak kodunu taraScanner found {count} problems in {appid}:Scanner found {count} problems in {appid}:{versionCode}:Scanner found {} problemScanner found {} problemsSet clock to that time using:Set open file limit to {integer}Set up an app build for a nightly build repoSetting open file limit failed: Setting {0} sec timeout for this buildBir emülatör kur, APKyı ona kur ve bir Drozer taraması yapBir emülatör kur, APKyı ona kur ve bir Drozer taraması yapPaketleri imzala ve depoya yerleştirupdate -nosign ile yaratılan indeksleri imzalaKaynak kodu, çalıştırılabilir dosyalar ve diğer sorunlar için taramayı atlaSkipping '{apkfilename}' with invalid signature!Skipping index generation for {appid}Skipping {apkfilename} with invalid signature!Skipping {appid}: disabledSkipping {appid}: no builds specifiedDeponun eşleneceği yerel bir klasör belirtinRsync için SSH'a sağlanacak bir kimlik dosyası belirtinEtkileşimli kipte kullanılacak editörü belirtin. Öntanımlı Etkileşimli kipte kullanılacak editörü belirtin. Öntanımlı %sEtkileşimli kipte kullanılacak düzenleyiciyi belirtin. Öntanımlı olan {path}İnşa sunucusunda çalıştığımızı belirtinSpecify which debug keystore file to use.Olağandan daha da çok bilgi çıkartStriping mystery signature from {apkfilename}Summary '%s' is just the app's nameSummary of length {length} is over the {limit} char limitSystem clock is older than date in {path}!Sınama kipi - çıkışı sadece tmp dizinine koy, ve her zaman inşa et, çıkış zaten var olsa bile.The OBB version code must come after "{name}.":Günlüklenecek depo için taban URLsi (öntanımlı: https://f-droid.org)The directory to write the mirror toŞu anda desteklenen komutlar sadece 'init' ve 'update'The repository's fingerprint does not match.The repository's index could not be verified.The root dir for local_copy_dir "{path}" does not exist!The the file to be included in the repo (path or glob)There is a keyalias collision - publishing haltedThis repo already has local metadata: %sTo use awsbucket, awssecretkey and awsaccesskeyid must also be set in config.py!UCM is set but it looks like checkupdates hasn't been run yetURL shorteners should not be usedURL title is just the URL, use brackets: [URL]URL {url} in Description: {error}Unexpected text on same line as {field} in {linedesc}Bilinmeyen özel durum bulundu!Unknown file '{filename}' in build '{versionName}'Unknown metadata format: %sUnknown metadata format: {path}Unknown version of aapt, might cause problems: Unlinkified link - use [http://foo.bar Link title] or [http://foo.bar]Unnecessary leading spaceUnnecessary trailing spaceUnrecognised app field: Unrecognised field '{field}' in {linedesc}Unsupported file type "{extension}" for repo graphicUnsupported graphics file found: {path}Unsupported metadata format, use: --to [{supported}]Unterminated ]Unterminated ]]Unterminated build in {name}Unterminated continuation in {name}Unused extlib at %sUnused file at %sUpdate Check Name is set to the known app id - it can be removedYeni paketler için depo bilgisini güncelleBir URL için çalıştırılabilir şeffaflık günlüğünü güncelleDepo istatistikleri güncelleştirViki'yi güncelleKullanımKullanım: %s Use /HEAD instead of /master to point at a file in the default branchUse `fdroid update -c` to create it.İnşa sunucusu kullanYeni eklenen APKlar için o anki zaman yerine APK'daki tarihi kullanYeni eklenen APKlar için o anki zaman yerine APK tarihini kullanUsing "{path}" for configuring s3cmd.Using Java's jarsigner, not recommended for verifying APKs! Use apksignerUsing existing keystore "{path}"{url} ile eşitleme için s3cmd kullanılıyorGeçerli komutlar:İndirilen paketlerin bütünlüğünü doğrulaVerifying index signature:Olası üst veri hataları hakkında uyarİmzalı indeksler için yapılandırıldığında, bu aşamada sadece imzasız indeksleri yaratAnahtarlar üretilirken X.509 'Distinguished Name' kullanılırAnahtarlar üretilirken X.509 'Distinguished Name' kullanılırYou can use ANDROID_HOME to set the path to your SDK, i.e.:IdentityFile {path} konumuna ekleniyor{name} adına ekleniyor: {path}belirsiz şeçenek: %(option)s ile %(matches)s eşleşebilirbelirsiz şeçenek: %s (%s?)APPID biçiminde applicationIdGüncellemeleri denetlemek için applicationIdAPPID[:VERCODE] biçiminde applicationId, isteğe bağlı versionCode ile%r kipiyle "-" argümanıDağıtım anahtarını sınamak için çıplak ssh bağlantısı deneniyor:'%s' açılamıyor: %sçoklu alt işleyici argümanı verilemezeylemler birleştirilemiyor - %r adlı iki grupgüncelleme yayımlanamıyor, dağıtım anahtarını ayarladınız mı?{url} klonlanıyorçalıştırılacak komut, 'init' ya da 'update'karmaşıkçakışan seçenek satırı: %sçakışan seçenek satırları: %s{apkfilename} {path} içine kopyalanıyor{path} oluşturuldusiliniyor: repo/{apkfilename}dest= %r gibi seçenekler için gereklibeklenen %s argümandıbeklenen %s argümandıbeklenen en az bir argümandıbeklenen en çok bir argümandıbeklenen bir argümandıfdroid [-h|--help|--version] []fdroid [] [-h|--help|--version|]kayan noktahataları uyarı olmaya zorla veya yok sayüst veri hatalarının (öntanımlı) uyarı olmasını veya yok sayılmasını zorunlu kıl.git svn clone başarısızaçık argüman %r yok sayıldıindex-v1 bir imzaya sahip olmalı, oluşturmak için `fdroid signindex` kullanın!tamsayıgeçersiz %(type)s değeri: %(value)rgeçersiz seçim: %(value)r (%(choices)s içinden seçin)invalid conflict_resolution value: %rinvalid option string %(option)r: must start with a character %(prefix_chars)rlocal_copy_dir "fdroid" ile sonlanmıyor, belki de "{path}" demek istedinizlocal_copy_dir mutlak bir yol olmalı!local_copy_dir bir dizin olmalı, dosya değil!mirror '%s' does not end with 'fdroid'!mutually exclusive arguments must be optionalno "icon" in {appid}APK sağlanmadıböyle bir şeçenek yok: %sSürüm bilgisi bulunamadı!argüman %s ile izin verilmez%s argümanlarından biri gerekliyalnızca satırları, listeleri ve dizileri kabul ederseçenek %s: Tüm imzalı uygulamaları gerçekten kurmak istiyorsanız, --all kullanınseçenek %s: geçersiz %s değeri: %rseçenek %s: geçersiz seçim: %r (%s içinden seçin)seçenek -%s tanınmıyorşeçenek -%s argüman gerektirir--%s seçeneğinin argümanı olmamalı--%s seçeneği tekil ön ek değilseçenek --%s tanınmıyor--%s seçeneği argüman gerektiriristeğe bağlı argümanlarvar olan {path} üzerine yazılıyorkonumsal argümanlargüvensiz HTTP bağlantısı ile indirmeyi reddet (HTTPS kullanın veya --no-https-check belirtin): {apkfilename}güvensiz http bağlantısı ile indirmeyi reddet (https kullanın veya --no-https-check belirtin): {apkfilename}s3cmd sync indexes {path} to {url} and deleteprogramın sürüm numarasını göster ve çıkbu yardım yazısını göster ve çıksigned APK, either a file-path or HTTPS URL.skipping source tarball: {path}srclibs missing name and/or @şu argümanlar gerekli: %sbeklenmeyen seçenek satırı: %sunknown parser %(parser_name)r (choices: %(choices)s)tanınmayan argümanlar: %s'{config_file}' üzerinde güvenli olmayan izinler (0600 olmalı)!kullanım: kullanım: fdroid [-h|--help|--version] []{url} ile eşitleme için Apache libcloud kullanılıyor{0} app, {1} key aliases{0} apps, {1} key aliases{apkfilename} ({appid}) has no metadata!{apkfilename} has multiple {name} files, looks like Master Key exploit!{apkfilename}'s AndroidManifest.xml has a bad date: {appid} does not have a name! Using package name instead.{appid} is missing {name}{appid}: Unknown extlib {path} in build '{versionName}'{appid}: no builds specified, running on current source state{field} not terminated in {name}{name} "{path}" does not exist! Correct it in config.py.{path} does not exist! Create it by running:{path} has bad file signature "{pattern}", possible Janus exploit!{path} boyutu sıfır!{url} "fdroid" ile bitmiyor, URL konumunu doğrulayın!{} inşa başarısız{} inşa başarısız{} inşa başarılı{} inşa başarılıfdroidserver-1.0.9/locale/tr/LC_MESSAGES/fdroidserver.po0000664000175000017500000017165213322065577022662 0ustar hanshans00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Free Software Foundation, Inc. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: fdroidserver 0.9\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" "POT-Creation-Date: 2018-02-13 09:01+0100\n" "PO-Revision-Date: 2018-05-20 20:42+0000\n" "Last-Translator: Ali Demirtas \n" "Language-Team: Turkish \n" "Language: tr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 3.0-dev\n" #: ../fdroidserver/nightly.py msgid "" "\n" "SSH Public Key to be used as Deploy Key:" msgstr "" "\n" "Dağıtım Anahtarı olarak kullanılacak SSH Açık Anahtar:" #: ../fdroidserver/nightly.py #, python-brace-format msgid "" "\n" "{path} encoded for the DEBUG_KEYSTORE secret variable:" msgstr "" "\n" "DEBUG_KEYSTORE gizli değişkeni için kodlanmış {path}:" #: ../fdroidserver/lint.py #, python-format msgid "\"%s/\" has no matching metadata file!" msgstr "\"%s/\" eşleşen üst veri dosyasına sahip değil!" #: ../fdroidserver/update.py #, python-brace-format msgid "\"{path}\" contains outdated {name} ({version})" msgstr "\"{path}\" tarihi geçmiş {name} ({version}) içeriyor" #: ../fdroidserver/update.py #, python-brace-format msgid "\"{path}\" contains recent {name} ({version})" msgstr "\"{path}\" en son {name} ({version}) içeriyor" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "\"{path}\" exists but s3cmd is not installed!" msgstr "\"{path}\" var ancak s3cmd kurulu değil!" #: ../fdroidserver/metadata.py #, python-brace-format msgid "\"{path}\" is not an accepted format, convert to: {formats}" msgstr "\"{path}\" kabul edilebilir bir tür değil, şuna dönüştürün: {formats}" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "%(option)s option requires %(number)d argument" msgid_plural "%(option)s option requires %(number)d arguments" msgstr[0] "%(option)s seçeneği %(number)d argüman gerektirir" msgstr[1] "%(option)s seçeneği %(number)d argüman gerektirir" #: ../fdroidserver/mirror.py #, python-format msgid "%(prog)s [options] url" msgstr "%(prog)s [seçenekler] url" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "%(prog)s: error: %(message)s\n" msgstr "%(prog)s: hata: %(message)s\n" #: ../fdroidserver/scanner.py #, python-format msgid "%d problems found" msgstr "%d sorun bulundu" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "%prog [options]" msgstr "%prog [options]" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "%r is not callable" msgstr "%r çağrılabilir değil" #: ../fdroidserver/lint.py #, python-format msgid "%s is not an accepted build field" msgstr "%s kabul edilen bir inşa alanı değil" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "%s option does not take a value" msgstr "%s seçeneği bir değer almaz" #: ../fdroidserver/index.py ../fdroidserver/common.py msgid "'keypass' not found in config.py!" msgstr "'keypass' config.py içinde bulunamadı!" #: ../fdroidserver/index.py ../fdroidserver/common.py msgid "'keystore' not found in config.py!" msgstr "'keystore' config.py içinde bulunamadı!" #: ../fdroidserver/index.py ../fdroidserver/common.py msgid "'keystorepass' not found in config.py!" msgstr "'keystorepass' config.py içinde bulunamadı!" #: ../fdroidserver/index.py ../fdroidserver/common.py msgid "'repo_keyalias' not found in config.py!" msgstr "'repo_keyalias' config.py içinde bulunamadı!" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "'required' is an invalid argument for positionals" msgstr "'required' positionals için geçersiz bir argüman" #: ../fdroidserver/common.py msgid "'sdk_path' not set in 'config.py'!" msgstr "'sdk_path' 'config.py' içinde ayarlı değil!" #. Translators: "build-tools" is the file name of a package from #. Google, it is part of the Android SDK. So it probably shouldn't be #. translated or transliterated. #: ../fdroidserver/common.py #, python-brace-format msgid "'{aapt}' is too old, fdroid requires build-tools-23.0.0 or newer!" msgstr "" "'{aapt}' çok eski, fdroid build-tools-23.0.0 veya daha yenisini gerektirir!" #: ../fdroidserver/common.py #, python-brace-format msgid "'{aapt}' is too old, fdroid requires build-tools-{version} or newer!" msgstr "" "'{aapt}' çok eski, fdroid build-tools-{version} veya daha yenisini " "gerektirir!" #: ../fdroidserver/install.py #, python-brace-format msgid "'{apkfilename}' is already installed on {dev}." msgstr "'{apkfilename}' zaten {dev} üzerinde kurulu." #: ../fdroidserver/common.py #, python-brace-format msgid "" "'{field}' will be in random order! Use () or [] brackets if order is " "important!" msgstr "" "'{field}' rastgele sırada olacak! Sıra önemliyse () veya [] parantez " "kullanın!" #: ../fdroidserver/common.py #, python-brace-format msgid "'{path}' failed to execute!" msgstr "'{path}' yürütülemedi!" #: ../fdroidserver/metadata.py #, python-brace-format msgid "'{value}' is not a valid {field} in {appid}. Regex pattern: {pattern}" msgstr "" "'{value}' {appid} içinde geçerli {field} değil. Regex ifadesi: {pattern}" #: ../fdroidserver/checkupdates.py #, python-brace-format msgid "...checkupdate failed for {appid} : {error}" msgstr ".. .checkupdate {appid} için başarısız oldu: {error}" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid ".__call__() not defined" msgstr ".__call__() tanımlı değil" #: ../fdroidserver/metadata.py msgid ".fdroid.txt is not supported! Convert to .fdroid.yml or .fdroid.json." msgstr ".fdroid.txt desteklenmiyor! .fdroid.yml ya da .fdroid.json dönüştürün." #: ../fdroidserver/lint.py msgid "/issues is missing" msgstr "/issues eksik" #: ../fdroidserver/mirror.py msgid "A URL is required as an argument!" msgstr "Bir URL, argüman olarak gereklidir!" #: ../fdroid msgid "Add PGP signatures using GnuPG for packages in repo" msgstr "Depodaki paketler için GnuPG ile PGP imzaları ekle" #: ../fdroid msgid "Add a new application from its source code" msgstr "Kaynak kodundan yeni bir uygulama ekle" #: ../fdroidserver/update.py msgid "Add a repo signing key to an unsigned repo" msgstr "İmzasız bir repo repo imzalama anahtarı ekleyin" #: ../fdroidserver/update.py msgid "Add skeleton metadata files for APKs that are missing them" msgstr "İskelet meta veri dosyaları olmayan APKlar için onları yarat" #: ../fdroidserver/update.py #, python-brace-format msgid "Adding new repo for only {name}" msgstr "Sadece {name} için yeni repo ekleme" #: ../fdroidserver/init.py msgid "Alias of the repo signing key in the keystore" msgstr "Depo imzalama anahtarının anahtar deposundaki takma adı" #: ../fdroidserver/import.py msgid "" "Allows a different revision (or git branch) to be specified for the initial " "import" msgstr "" "İlk içe aktarım için farklı bir revizyonun (veya git dalının) belirtilmesine " "izin verir" #: ../fdroidserver/mirror.py msgid "Also mirror the full archive section" msgstr "Tam arşiv bölümünü de yansıt" #: ../fdroidserver/lint.py msgid "Also warn about formatting issues, like rewritemeta -l" msgstr "Ayrıca biçimlendirme sorunları hakkında uyar, rewritemeta -l gibi" #: ../fdroidserver/common.py #, python-brace-format msgid "Android SDK '{path}' does not have '{dirname}' installed!" msgstr "Android SDK '{path}' içinde '{dirname}' kurulu değil!" #: ../fdroidserver/common.py msgid "Android SDK not found!" msgstr "Android SDK bulunamadı!" #: ../fdroidserver/common.py #, python-brace-format msgid "Android SDK path '{path}' does not exist!" msgstr "Android SDK konumu '{path}' yok!" #: ../fdroidserver/common.py #, python-brace-format msgid "Android SDK path '{path}' is not a directory!" msgstr "Android SDK yolu '{path}' bir dizin değil!" #. Translators: "build-tools" is the file name of a package from #. Google, it is part of the Android SDK. So it probably shouldn't be #. translated or transliterated. #: ../fdroidserver/common.py #, python-brace-format msgid "Android build-tools path '{path}' does not exist!" msgstr "Android oluşturma araçları yolu '{path}' mevcut değil!" #: ../fdroidserver/update.py msgid "AndroidManifest.xml has no date" msgstr "AndroidManifest.xml herhangi bir tarih yok" #: ../fdroidserver/lint.py #, python-brace-format msgid "App is in '{repo}' but has a link to {url}" msgstr "Uygulama '{repo}' içinde ancak {url} adresine bir bağlantısı var" #: ../fdroidserver/lint.py msgid "Appending .git is not necessary" msgstr "Ekleme .gıt gerekli değildir" #: ../fdroidserver/update.py #, python-brace-format msgid "Archiving {apkfilename} with invalid signature!" msgstr "Geçersiz imza ile {apkfilename} arşivleme!" #: ../fdroidserver/mirror.py msgid "" "Base URL to mirror, can include the index signing key using the query " "string: ?fingerprint=" msgstr "" "Yansıtılacak temel URL, sorgu dizesini kullanarak dizin imzalama anahtarını " "içerebilir: ?fingerprint=" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vname #: ../fdroidserver/lint.py #, python-brace-format msgid "Branch '{branch}' used as commit in build '{versionName}'" msgstr "" #: ../fdroidserver/lint.py #, python-brace-format msgid "Branch '{branch}' used as commit in srclib '{srclib}'" msgstr "" #: ../fdroid msgid "Build a package from source" msgstr "Kaynaktan bir paket inşa et" #: ../fdroidserver/build.py msgid "Build all applications available" msgstr "Kullanılabilir tüm uygulamaları inşa et" #: ../fdroidserver/lint.py msgid "Build generated by `fdroid import` - remove disable line once ready" msgstr "" "İnşa `fdroid import` ile üretildi - hazır olunca devre dışı satırını kaldırın" #: ../fdroidserver/build.py msgid "Build only the latest version of each package" msgstr "Her paketin sadece son sürümünü inşa et" #: ../fdroidserver/metadata.py #, python-brace-format msgid "" "Build should have comma-separated versionName and versionCode, not " "\"{value}\", in {linedesc}" msgstr "" #: ../fdroidserver/init.py #, python-format msgid "Built repo based in \"%s\" with this config:" msgstr "" #: ../fdroidserver/build.py msgid "Can't build due to {} error while scanning" msgid_plural "Can't build due to {} errors while scanning" msgstr[0] "" msgstr[1] "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Cannot find a packageName for {path}!" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Cannot find an appid for {path}!" msgstr "" #: ../fdroidserver/vmtools.py #, python-brace-format msgid "Cannot read \"{path}\"!" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Cannot resolve app id {appid}" msgstr "" #: ../fdroidserver/rewritemeta.py msgid "Cannot use --list and --to at the same time" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Cannot write \"{path}\", not an accepted format, use: {formats}" msgstr "" #: ../fdroidserver/lint.py msgid "Categories are not set" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Category '%s' is not valid" msgstr "" #: ../fdroid msgid "Check for updates to applications" msgstr "Uygulama güncellemelerini denetle" #: ../fdroidserver/update.py #, python-brace-format msgid "" "Checking archiving for {appid} - apks:{integer}, keepversions:{keep}, " "archapks:{arch}" msgstr "" #: ../fdroidserver/dscanner.py msgid "Clean after all scans have finished" msgstr "Tüm taramalar bitince temizle" #: ../fdroidserver/dscanner.py msgid "Clean before the scans start and rebuild the container" msgstr "Taramalar başlamadan önce temizle ve konteyneri yeniden inşa et" #: ../fdroidserver/dscanner.py msgid "Clean up all containers and then exit" msgstr "Bütün konteynerleri temizle ve sonra çık" #: ../fdroidserver/update.py msgid "Clean update - don't uses caches, reprocess all APKs" msgstr "Temiz güncelleme - önbellekleri kullanmaz, tüm APKları yeniden işler" #: ../fdroidserver/import.py msgid "Comma separated list of categories." msgstr "Kategorilerin virgülle ayrılmış listesi." #: ../fdroid #, c-format, python-format msgid "Command '%s' not recognised.\n" msgstr "Komut '%s' tanınmıyor.\n" #: ../fdroidserver/checkupdates.py msgid "Commit changes" msgstr "Değişiklikleri işle" #: ../fdroidserver/common.py #, python-brace-format msgid "Could not find '{command}' on your system" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Could not find {path} to remove it" msgstr "" #: ../fdroidserver/update.py msgid "Could not open apk file for analysis" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/import.py msgid "Couldn't find latest version code" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vname #: ../fdroidserver/import.py msgid "Couldn't find latest version name" msgstr "" #: ../fdroidserver/import.py msgid "Couldn't find package ID" msgstr "" #: ../fdroidserver/update.py msgid "Cowardily refusing to overwrite existing signing key setup!" msgstr "" #: ../fdroidserver/update.py msgid "Create a repo signing key in a keystore" msgstr "Bir anahtar deposunda, depo imzalama anahtarı yaratır" #: ../fdroidserver/update.py msgid "Create skeleton metadata files that are missing" msgstr "Eksik olan iskelet üst veri dosyalarını yarat" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Created new container \"{name}\"" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Creating \"{path}\" for configuring s3cmd." msgstr "" #: ../fdroidserver/publish.py msgid "Creating log directory" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Creating new S3 bucket: {url}" msgstr "" #: ../fdroidserver/publish.py msgid "Creating output directory" msgstr "" #: ../fdroidserver/index.py msgid "Creating signed index with this key (SHA256):" msgstr "" #: ../fdroidserver/import.py ../fdroidserver/verify.py #: ../fdroidserver/publish.py msgid "Creating temporary directory" msgstr "" #: ../fdroidserver/index.py msgid "Creating unsigned index in preparation for signing" msgstr "" #: ../fdroidserver/nightly.py msgid "DEBUG_KEYSTORE is not set or the value is incomplete" msgstr "" #: ../fdroidserver/update.py msgid "Delete APKs and/or OBBs without metadata from the repo" msgstr "Depodan üst verisi olmayan APKları ve/veya OBBleri sil" #: ../fdroidserver/update.py #, python-brace-format msgid "Deleting unknown file: {path}" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Description '%s' is just the app's summary" msgstr "" #: ../fdroidserver/lint.py msgid "Description has a duplicate line" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Description has a list (%s) but it isn't bulleted (*) nor numbered (#)" msgstr "" #: ../fdroidserver/lint.py #, python-brace-format msgid "Description of length {length} is over the {limit} char limit" msgstr "" #: ../fdroidserver/mirror.py #, python-brace-format msgid "Do not include \"{path}\" in URL!" msgstr "" #: ../fdroidserver/init.py msgid "Do not prompt for Android SDK path, just fail" msgstr "Android SDK konumunu sorma, sadece başarısız ol" #: ../fdroidserver/build.py msgid "Don't create a source tarball, useful when testing a build" msgstr "Bir kaynak tar dosyası yaratma, bir inşa sınanırken yararlıdır" #: ../fdroidserver/stats.py msgid "Don't do anything logs-related" msgstr "Günlüklerle ilgili bir şey yapma" #: ../fdroidserver/build.py msgid "" "Don't refresh the repository, useful when testing a build with no internet " "connection" msgstr "" "Depoyu yenileme, bir inşa internet bağlantısı olmadan sınanırken yararlıdır" #: ../fdroidserver/server.py ../fdroidserver/nightly.py #: ../fdroidserver/upload.py msgid "Don't use rsync checksums" msgstr "Rsync sağlama toplamlarını kullanma" #: ../fdroid msgid "Download complete mirrors of small repos" msgstr "" #: ../fdroidserver/stats.py msgid "Download logs we don't have" msgstr "Bizde olmayan günlükleri indir" #: ../fdroidserver/common.py msgid "Downloading the repository already failed once, not trying again." msgstr "" #: ../fdroidserver/verify.py #, python-brace-format msgid "Downloading {url} failed. {error}" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "" "Duplicate build recipe found for versionCode {versionCode} in {linedesc}" msgstr "" #: ../fdroidserver/lint.py #, python-brace-format msgid "Duplicate link in '{field}': {url}" msgstr "" #: ../fdroid msgid "Dynamically scan APKs post build" msgstr "İnşa sonrası APKları dinamik olarak tara" #: ../fdroidserver/mirror.py msgid "" "ERROR: this command should never be used to mirror f-droid.org!\n" "A full mirror of f-droid.org requires more than 200GB." msgstr "" #: ../fdroidserver/nightly.py msgid "ERROR: unsupported CI type, patches welcome!" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Empty build flag at {linedesc}" msgstr "" #: ../fdroidserver/init.py #, python-format msgid "" "Enter the path to the Android SDK (%s) here:\n" "> " msgstr "" #: ../fdroidserver/server.py ../fdroidserver/checkupdates.py #: ../fdroidserver/upload.py #, python-format msgid "Error while attempting to publish log: %s" msgstr "" #: ../fdroidserver/import.py msgid "Error while getting repo address" msgstr "" #: ../fdroid msgid "Extract signatures from APKs" msgstr "" #: ../fdroidserver/signatures.py #, python-brace-format msgid "Failed fetching signatures for '{apkfilename}': {error}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Failed reading {path}: {error}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Failed resizing {path}: {error}" msgstr "" #: ../fdroidserver/publish.py msgid "Failed to align application" msgstr "Uygulama hizalama başarısız oldu" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Failed to create S3 bucket: {url}" msgstr "" #: ../fdroidserver/common.py msgid "Failed to get APK manifest information" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Failed to get apk information, deleting {path}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Failed to get apk information, skipping {path}" msgstr "" #: ../fdroidserver/install.py #, python-brace-format msgid "Failed to install '{apkfilename}' on {dev}: {error}" msgstr "" #: ../fdroidserver/publish.py ../fdroidserver/common.py msgid "Failed to sign application" msgstr "" #: ../fdroidserver/common.py msgid "Failed to zipalign application" msgstr "Uygulama zipalign başarısız oldu" #: ../fdroidserver/build.py #, python-brace-format msgid "Fetched buildserverid from VM: {buildserverid}" msgstr "" #: ../fdroidserver/signatures.py #, python-brace-format msgid "Fetched signatures for '{apkfilename}' -> '{sigdir}'" msgstr "" #: ../fdroidserver/verify.py ../fdroidserver/stats.py ../fdroidserver/update.py #: ../fdroidserver/rewritemeta.py ../fdroidserver/build.py #: ../fdroidserver/checkupdates.py ../fdroidserver/scanner.py #: ../fdroidserver/install.py msgid "Finished" msgstr "" #: ../fdroidserver/lint.py msgid "Flattr donation methods belong in the FlattrID flag" msgstr "" #: ../fdroidserver/lint.py msgid "Forbidden HTML tags" msgstr "" #: ../fdroidserver/build.py msgid "" "Force build of disabled apps, and carries on regardless of scan problems. " "Only allowed in test mode." msgstr "" "Devre dışı uygulamaların inşasını zorunlu kıl, ve tarama problemi olsa bile " "devam et. Sadece sınama kipinde izin verilir." #: ../fdroidserver/build.py #, python-brace-format msgid "Force halting build after {0} sec timeout!" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Found \"{path}\" graphic without metadata for app \"{name}\"!" msgstr "" #: ../fdroidserver/common.py msgid "Found invalid appids in arguments" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/common.py msgid "Found invalid versionCodes for some apps" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Found multiple metadata files for {appid}" msgstr "" #: ../fdroidserver/index.py msgid "Found multiple signing certificates for repository." msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Found multiple signing certificates in {path}" msgstr "" #: ../fdroidserver/index.py msgid "Found no signing certificates for repository." msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Found non-file at %s" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Generated skeleton metadata for {appid}" msgstr "" #: ../fdroidserver/common.py #, python-format msgid "Git checkout of '%s' failed" msgstr "" #: ../fdroidserver/common.py msgid "Git clean failed" msgstr "" #: ../fdroidserver/common.py msgid "Git fetch failed" msgstr "" #: ../fdroidserver/common.py msgid "Git remote set-head failed" msgstr "" #: ../fdroidserver/common.py msgid "Git reset failed" msgstr "" #: ../fdroidserver/common.py msgid "Git submodule sync failed" msgstr "" #: ../fdroidserver/common.py msgid "Git submodule update failed" msgstr "" #: ../fdroidserver/common.py msgid "HTTPS must be used with Subversion URLs!" msgstr "" #: ../fdroidserver/index.py msgid "Ignoring package without metadata: " msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Ignoring stale cache data for {apkfilename}" msgstr "" #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Ignoring {ext} file at '{path}'" msgstr "" #: ../fdroidserver/update.py msgid "Include APKs that are signed with disabled algorithms like MD5" msgstr "" #: ../fdroidserver/common.py msgid "Initialising submodules" msgstr "" #: ../fdroidserver/install.py msgid "Install all signed applications available" msgstr "Kullanılabilir tüm imzalı uygulamaları kur" #: ../fdroid msgid "Install built packages on devices" msgstr "İnşa edilen paketleri aygıtlara kur" #: ../fdroidserver/install.py #, python-format msgid "Installing %s..." msgstr "" #: ../fdroidserver/install.py #, python-brace-format msgid "Installing '{apkfilename}' on {dev}..." msgstr "" #: ../fdroid msgid "Interact with the repo HTTP server" msgstr "Depo HTTP sunucusu ile etkileşim kur" #: ../fdroidserver/update.py msgid "Interactively ask about things that need updating." msgstr "Güncelleme gerektiren şeyler hakkında etkileşimli olarak sor." #: ../fdroidserver/update.py msgid "Invalid APK" msgstr "" #: ../fdroidserver/metadata.py #, python-format msgid "Invalid boolean '%s'" msgstr "Geçersiz boole '%s'" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Invalid build flag at {line} in {linedesc}" msgstr "{linedesc} içinde {line} üstünde geçersiz inşa bayrağı" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Invalid build format: {value} in {name}" msgstr "Geçersiz inşa biçimi: {name} içinde {value}" #: ../fdroidserver/lint.py msgid "Invalid bulleted list" msgstr "Geçersiz madde imli liste" #: ../fdroidserver/lint.py #, python-format msgid "" "Invalid license tag \"%s\"! Use only tags from https://spdx.org/license-list" msgstr "" "Geçersiz lisans etiketi \"%s\"! Yalnızca https://spdx.org/license-list " "adresindeki etiketleri kullanın" #: ../fdroidserver/lint.py msgid "Invalid link - use [http://foo.bar Link title] or [http://foo.bar]" msgstr "" "Geçersiz bağlantı - [http://foo.bar Bağlantı başlığı] veya [http://foo.bar] " "kullanın" #: ../fdroidserver/metadata.py #, python-format msgid "Invalid metadata in %s:%d" msgstr "%s:%d içinde geçersiz üst veri" #: ../fdroidserver/metadata.py msgid "Invalid metadata in: " msgstr "Geçersiz üst veri: " #: ../fdroidserver/common.py #, python-format msgid "Invalid name for published file: %s" msgstr "Yayımlanmış dosya için geçersiz ad: %s" #: ../fdroidserver/common.py #, python-brace-format msgid "Invalid package name {0}" msgstr "Geçersiz paket adı {0}" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Invalid versionCode: \"{versionCode}\" is not an integer!" msgstr "Geçersiz versionCode: \"{versionCode}\" bir tamsayı değil!" #: ../fdroidserver/common.py #, python-brace-format msgid "JAR signature failed to verify: {path}" msgstr "JAR imzası doğrulanamadı: {path}" #: ../fdroidserver/common.py #, python-brace-format msgid "JAR signature verified: {path}" msgstr "JAR imzası doğrulandı: {path}" #: ../fdroidserver/publish.py ../fdroidserver/update.py #: ../fdroidserver/mirror.py msgid "Java JDK not found! Install in standard location or set java_paths!" msgstr "" "Java JDK bulunmadı! Standart konumda kurun veya java_paths'i ayarlayın!" #: ../fdroidserver/signindex.py msgid "" "Java jarsigner not found! Install in standard location or set java_paths!" msgstr "" #: ../fdroidserver/lint.py msgid "Javascript in HTML src attributes" msgstr "" #: ../fdroidserver/init.py msgid "Keystore for signing key:\t" msgstr "İmzalama için anahtar deposu:\t" #: ../fdroidserver/lint.py #, python-brace-format msgid "" "Last used commit '{commit}' looks like a tag, but Update Check Mode is " "'{ucm}'" msgstr "" #: ../fdroidserver/lint.py msgid "Liberapay donation methods belong in the LiberapayID flag" msgstr "" #: ../fdroidserver/rewritemeta.py msgid "List files that would be reformatted" msgstr "Yeniden biçimlendirilecek olan dosyaları listele" #: ../fdroidserver/build.py msgid "Make the build stop on exceptions" msgstr "Özel durumlarda inşayı durdur" #: ../fdroidserver/index.py msgid "Malformed repository mirrors." msgstr "" #: ../fdroidserver/server.py msgid "Malformed serverwebroot line:" msgstr "" #: ../fdroidserver/gpgsign.py msgid "Missing output directory" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Name '%s' is just the auto name - remove it" msgstr "" #: ../fdroidserver/common.py msgid "No 'config.py' found, using defaults." msgstr "" #: ../fdroidserver/common.py msgid "No Android SDK found!" msgstr "" #: ../fdroidserver/import.py msgid "No android or kivy project could be found. Specify --subdir?" msgstr "" #: ../fdroidserver/install.py msgid "No attached devices found" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "No commit specified for {versionName} in {linedesc}" msgstr "" #: ../fdroidserver/index.py msgid "No fingerprint in URL." msgstr "" #: ../fdroidserver/common.py msgid "No git submodules available" msgstr "" #: ../fdroidserver/import.py msgid "No information found." msgstr "" #: ../fdroidserver/lint.py msgid "No need to specify that the app is Free Software" msgstr "" #: ../fdroidserver/lint.py msgid "No need to specify that the app is for Android" msgstr "" #: ../fdroidserver/server.py msgid "No option set! Edit your config.py to set at least one of these:" msgstr "" #: ../fdroidserver/common.py msgid "No packages specified" msgstr "" #: ../fdroidserver/install.py #, python-format msgid "No signed apk available for %s" msgstr "" #: ../fdroidserver/install.py msgid "No signed output directory - nothing to do" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "No signing certificates found in {path}" msgstr "" #: ../fdroidserver/common.py #, python-format msgid "No such package: %s" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/common.py #, python-brace-format msgid "No such versionCode {versionCode} for app {appid}" msgstr "" #: ../fdroidserver/verify.py ../fdroidserver/publish.py msgid "No unsigned directory - nothing to do" msgstr "" #: ../fdroidserver/signindex.py msgid "Nothing to do" msgstr "" #: ../fdroidserver/checkupdates.py #, python-brace-format msgid "Nothing to do for {appid}." msgstr "" #: ../fdroidserver/init.py msgid "Now set these in config.py:" msgstr "Şimdi bunları config.py içinde ayarlayın:" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/update.py #, python-brace-format msgid "OBB file has newer versionCode({integer}) than any APK:" msgstr "" #: ../fdroidserver/update.py msgid "OBB filename must start with \"main.\" or \"patch.\":" msgstr "" #: ../fdroidserver/update.py msgid "OBB's packagename does not match a supported APK:" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Old APK signature failed to verify: {path}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Only PNG and JPEG are supported for graphics, found: {path}" msgstr "" #: ../fdroidserver/checkupdates.py msgid "Only print differences with the Play Store" msgstr "Yalnızca Play Store ile olan farkları yazdır" #: ../fdroidserver/checkupdates.py msgid "Only process apps with auto-updates" msgstr "Yalnızca kendiliğinden güncellemesi olan uygulamaları işle" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "Options" msgstr "Seçenekler" #: ../fdroidserver/import.py msgid "Overall license of the project." msgstr "Projenin genel lisansı." #: ../fdroidserver/dscanner.py msgid "Override path for repo APKs (default: ./repo)" msgstr "Depo APKları için konumu geçersiz kıl (öntanımlı: ./repo)" #: ../fdroidserver/common.py #, python-brace-format msgid "Parsing manifest at '{path}'" msgstr "" #: ../fdroidserver/common.py msgid "Password required with username" msgstr "" #: ../fdroidserver/import.py msgid "Path to main Android project subdirectory, if not in root." msgstr "Kökte değilse, ana Android proje alt dizininin konumu." msgid "Path to main android project subdirectory, if not in root." msgstr "Kökte değilse, ana Android proje alt dizininin konumu." #: ../fdroidserver/init.py msgid "Path to the Android SDK (sometimes set in ANDROID_HOME)" msgstr "Android SDK konumu (bazen ANDROID_HOME'da ayarlıdır)" #: ../fdroidserver/btlog.py msgid "Path to the git repo to use as the log" msgstr "Günlük olarak kullanılacak git deposunun konumu" #: ../fdroidserver/init.py msgid "Path to the keystore for the repo signing key" msgstr "Depo imzalama anahtarı için anahtar deposunun konumu" #: ../fdroidserver/dscanner.py msgid "Prepare Drozer to run a scan" msgstr "Drozer'i bir tarama çalıştırmak için hazırla" msgid "Prepare drozer to run a scan" msgstr "Drozer'i bir tarama çalıştırmak için hazırla" #: ../fdroidserver/nightly.py msgid "Print the secret variable to the terminal for easy copy/paste" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Problem with description of {appid}: {error}" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Problem with xml at '{path}'" msgstr "" #: ../fdroidserver/checkupdates.py msgid "Process auto-updates" msgstr "Kendiliğinden güncellemeleri işle" #: ../fdroidserver/publish.py ../fdroidserver/update.py #, python-brace-format msgid "Processing {apkfilename}" msgstr "" #: ../fdroidserver/checkupdates.py ../fdroidserver/scanner.py #, python-brace-format msgid "Processing {appid}" msgstr "" #: ../fdroidserver/update.py msgid "Produce human-readable XML/JSON for index files" msgstr "Dizin dosyaları için okunabilir XML/JSON üret" #: ../fdroidserver/update.py msgid "Produce human-readable index.xml" msgstr "Okunabilir index.xml üret" #: ../fdroidserver/import.py msgid "Project URL to import from." msgstr "İçe aktarma için proje URL'si." #: ../fdroidserver/lint.py msgid "Punctuation should be avoided" msgstr "" #: ../fdroidserver/btlog.py msgid "Push the log to this git remote repository" msgstr "Günlüğü bu git uzak deposuna it" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Pushing binary transparency log to {url}" msgstr "İkili şeffaflık günlüğü {url} konumuna gönderiliyor" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Pushing to {url}" msgstr "" #: ../fdroid msgid "Quickly start a new repository" msgstr "Hızlıca yeni bir depo başlat" #: ../fdroid msgid "Read all the metadata files and exit" msgstr "Tüm üst veri dosyalarını oku ve çık" #: ../fdroidserver/common.py #, python-brace-format msgid "Reading '{config_file}'" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Reading minSdkVersion failed: \"{apkfilename}\"" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #. https://developer.android.com/guide/topics/manifest/manifest-element.html#vname #: ../fdroidserver/common.py #, python-brace-format msgid "" "Reading packageName/versionCode/versionName failed, APK invalid: " "'{apkfilename}'" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Reading {apkfilename} from cache" msgstr "" #: ../fdroidserver/stats.py msgid "" "Recalculate aggregate stats - use when changes have been made that would " "invalidate old cached data." msgstr "" "Toplam istatistikleri yeniden hesapla - eski önbelleklenen veriyi geçersiz " "kılacak değişiklikler yapıldığında kullan." #: ../fdroidserver/common.py msgid "Removing specified files" msgstr "" #: ../fdroidserver/update.py msgid "Rename APK files that do not match package.name_123.apk" msgstr "paket.ad_123.apk ile eşleşmeyen tüm APK dosyalarını yeniden adlandır" #: ../fdroidserver/update.py msgid "Report on build data status" msgstr "İnşa veri durumunu bildir" #: ../fdroidserver/build.py msgid "" "Reset and create a brand new build server, even if the existing one appears " "to be ok." msgstr "" "Sıfırla ve yeni bir inşa sunucusu yarat, var olan iyi görünüyor olsa bile." #: ../fdroidserver/nightly.py #, python-brace-format msgid "Resigning {apkfilename} with provided debug.keystore" msgstr "" #: ../fdroidserver/update.py msgid "Resize all the icons exceeding the max pixel size and exit" msgstr "Piksel boyut sınırını aşan tüm simgeleri yeniden boyutlandır ve çık" #: ../fdroidserver/common.py msgid "Restrict output to warnings and errors" msgstr "Çıkışı uyarılara ve hatalara kısıtla" #: ../fdroid msgid "Rewrite all the metadata files" msgstr "Tüm üst veri dosyalarını yeniden yaz" #: ../fdroidserver/rewritemeta.py msgid "Rewrite to a specific format: " msgstr "Belirli bir biçimde yeniden yaz: " #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Rewriting '{appid}'" msgstr "" #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Rewriting '{appid}' to '{path}'" msgstr "" #: ../fdroidserver/lint.py msgid "Run rewritemeta to fix formatting" msgstr "Biçimlemeyi düzeltmek için rewritemeta çalıştır" #: ../fdroidserver/server.py ../fdroidserver/upload.py msgid "Running first pass with MD5 checking disabled" msgstr "" #: ../fdroidserver/mirror.py #, python-brace-format msgid "Running wget in {path}" msgstr "" #: ../fdroidserver/dscanner.py msgid "Scan only the latest version of each package" msgstr "Her paketin sadece en son sürümünü tara" #: ../fdroid msgid "Scan the source code of a package" msgstr "Bir paketin kaynak kodunu tara" #: ../fdroidserver/scanner.py #, python-brace-format msgid "Scanner found {count} problems in {appid}:" msgstr "" #: ../fdroidserver/scanner.py #, python-brace-format msgid "Scanner found {count} problems in {appid}:{versionCode}:" msgstr "" #: ../fdroidserver/build.py msgid "Scanner found {} problem" msgid_plural "Scanner found {} problems" msgstr[0] "" msgstr[1] "" #: ../fdroidserver/common.py msgid "Set clock to that time using:" msgstr "" #: ../fdroidserver/build.py #, python-brace-format msgid "Set open file limit to {integer}" msgstr "" #: ../fdroid msgid "Set up an app build for a nightly build repo" msgstr "" #: ../fdroidserver/build.py msgid "Setting open file limit failed: " msgstr "" #: ../fdroidserver/build.py #, python-brace-format msgid "Setting {0} sec timeout for this build" msgstr "" #: ../fdroidserver/build.py msgid "Setup an emulator, install the APK on it and perform a Drozer scan" msgstr "Bir emülatör kur, APKyı ona kur ve bir Drozer taraması yap" msgid "Setup an emulator, install the apk on it and perform a drozer scan" msgstr "Bir emülatör kur, APKyı ona kur ve bir Drozer taraması yap" #: ../fdroid msgid "Sign and place packages in the repo" msgstr "Paketleri imzala ve depoya yerleştir" #: ../fdroid msgid "Sign indexes created using update --nosign" msgstr "update -nosign ile yaratılan indeksleri imzala" #: ../fdroidserver/build.py msgid "Skip scanning the source code for binaries and other problems" msgstr "" "Kaynak kodu, çalıştırılabilir dosyalar ve diğer sorunlar için taramayı atla" #: ../fdroidserver/update.py #, python-brace-format msgid "Skipping '{apkfilename}' with invalid signature!" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Skipping index generation for {appid}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Skipping {apkfilename} with invalid signature!" msgstr "" #: ../fdroidserver/scanner.py #, python-brace-format msgid "Skipping {appid}: disabled" msgstr "" #: ../fdroidserver/scanner.py #, python-brace-format msgid "Skipping {appid}: no builds specified" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py msgid "Specify a local folder to sync the repo to" msgstr "Deponun eşleneceği yerel bir klasör belirtin" #: ../fdroidserver/server.py ../fdroidserver/upload.py msgid "Specify an identity file to provide to SSH for rsyncing" msgstr "Rsync için SSH'a sağlanacak bir kimlik dosyası belirtin" #: ../fdroidserver/update.py msgid "Specify editor to use in interactive mode. Default " msgstr "Etkileşimli kipte kullanılacak editörü belirtin. Öntanımlı " #, c-format msgid "Specify editor to use in interactive mode. Default %s" msgstr "Etkileşimli kipte kullanılacak editörü belirtin. Öntanımlı %s" #: ../fdroidserver/update.py #, python-brace-format msgid "Specify editor to use in interactive mode. Default is {path}" msgstr "" "Etkileşimli kipte kullanılacak düzenleyiciyi belirtin. Öntanımlı olan {path}" #: ../fdroidserver/build.py msgid "Specify that we're running on the build server" msgstr "İnşa sunucusunda çalıştığımızı belirtin" #: ../fdroidserver/nightly.py msgid "Specify which debug keystore file to use." msgstr "" #: ../fdroidserver/common.py msgid "Spew out even more information than normal" msgstr "Olağandan daha da çok bilgi çıkart" #: ../fdroidserver/nightly.py #, python-brace-format msgid "Striping mystery signature from {apkfilename}" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Summary '%s' is just the app's name" msgstr "" #: ../fdroidserver/lint.py #, python-brace-format msgid "Summary of length {length} is over the {limit} char limit" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "System clock is older than date in {path}!" msgstr "" #: ../fdroidserver/build.py msgid "" "Test mode - put output in the tmp directory only, and always build, even if " "the output already exists." msgstr "" "Sınama kipi - çıkışı sadece tmp dizinine koy, ve her zaman inşa et, çıkış " "zaten var olsa bile." #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/update.py #, python-brace-format msgid "The OBB version code must come after \"{name}.\":" msgstr "" #: ../fdroidserver/btlog.py msgid "The base URL for the repo to log (default: https://f-droid.org)" msgstr "Günlüklenecek depo için taban URLsi (öntanımlı: https://f-droid.org)" #: ../fdroidserver/mirror.py msgid "The directory to write the mirror to" msgstr "" #: ../fdroidserver/server.py msgid "The only commands currently supported are 'init' and 'update'" msgstr "Şu anda desteklenen komutlar sadece 'init' ve 'update'" #: ../fdroidserver/index.py msgid "The repository's fingerprint does not match." msgstr "" #: ../fdroidserver/common.py msgid "The repository's index could not be verified." msgstr "" #: ../fdroidserver/server.py #, python-brace-format msgid "The root dir for local_copy_dir \"{path}\" does not exist!" msgstr "" #: ../fdroidserver/nightly.py msgid "The the file to be included in the repo (path or glob)" msgstr "" #: ../fdroidserver/publish.py msgid "There is a keyalias collision - publishing halted" msgstr "" #: ../fdroidserver/import.py #, python-format msgid "This repo already has local metadata: %s" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py msgid "" "To use awsbucket, awssecretkey and awsaccesskeyid must also be set in config." "py!" msgstr "" #: ../fdroidserver/lint.py msgid "UCM is set but it looks like checkupdates hasn't been run yet" msgstr "" #: ../fdroidserver/lint.py msgid "URL shorteners should not be used" msgstr "" #: ../fdroidserver/metadata.py msgid "URL title is just the URL, use brackets: [URL]" msgstr "" #: ../fdroidserver/lint.py #, python-brace-format msgid "URL {url} in Description: {error}" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Unexpected text on same line as {field} in {linedesc}" msgstr "" #: ../fdroid msgid "Unknown exception found!" msgstr "Bilinmeyen özel durum bulundu!" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vname #: ../fdroidserver/lint.py #, python-brace-format msgid "Unknown file '{filename}' in build '{versionName}'" msgstr "" #: ../fdroidserver/metadata.py #, python-format msgid "Unknown metadata format: %s" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Unknown metadata format: {path}" msgstr "" #: ../fdroidserver/common.py msgid "Unknown version of aapt, might cause problems: " msgstr "" #: ../fdroidserver/lint.py msgid "Unlinkified link - use [http://foo.bar Link title] or [http://foo.bar]" msgstr "" #: ../fdroidserver/lint.py msgid "Unnecessary leading space" msgstr "" #: ../fdroidserver/lint.py msgid "Unnecessary trailing space" msgstr "" #: ../fdroidserver/metadata.py msgid "Unrecognised app field: " msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Unrecognised field '{field}' in {linedesc}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Unsupported file type \"{extension}\" for repo graphic" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Unsupported graphics file found: {path}" msgstr "" #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Unsupported metadata format, use: --to [{supported}]" msgstr "" #: ../fdroidserver/metadata.py msgid "Unterminated ]" msgstr "" #: ../fdroidserver/metadata.py msgid "Unterminated ]]" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Unterminated build in {name}" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Unterminated continuation in {name}" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Unused extlib at %s" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Unused file at %s" msgstr "" #: ../fdroidserver/lint.py msgid "Update Check Name is set to the known app id - it can be removed" msgstr "" #: ../fdroid msgid "Update repo information for new packages" msgstr "Yeni paketler için depo bilgisini güncelle" #: ../fdroid msgid "Update the binary transparency log for a URL" msgstr "Bir URL için çalıştırılabilir şeffaflık günlüğünü güncelle" #: ../fdroid msgid "Update the stats of the repo" msgstr "Depo istatistikleri güncelleştir" #: ../fdroidserver/update.py ../fdroidserver/build.py msgid "Update the wiki" msgstr "Viki'yi güncelle" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "Usage" msgstr "Kullanım" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "Usage: %s\n" msgstr "Kullanım: %s\n" #: ../fdroidserver/lint.py msgid "Use /HEAD instead of /master to point at a file in the default branch" msgstr "" #: ../fdroidserver/update.py msgid "Use `fdroid update -c` to create it." msgstr "" #: ../fdroidserver/build.py msgid "Use build server" msgstr "İnşa sunucusu kullan" #: ../fdroidserver/update.py msgid "Use date from APK instead of current time for newly added APKs" msgstr "Yeni eklenen APKlar için o anki zaman yerine APK'daki tarihi kullan" msgid "Use date from apk instead of current time for newly added apks" msgstr "Yeni eklenen APKlar için o anki zaman yerine APK tarihini kullan" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Using \"{path}\" for configuring s3cmd." msgstr "" #: ../fdroidserver/common.py msgid "" "Using Java's jarsigner, not recommended for verifying APKs! Use apksigner" msgstr "" #: ../fdroidserver/init.py #, python-brace-format msgid "Using existing keystore \"{path}\"" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Using s3cmd to sync with: {url}" msgstr "{url} ile eşitleme için s3cmd kullanılıyor" #: ../fdroid msgid "Valid commands are:" msgstr "Geçerli komutlar:" #: ../fdroid msgid "Verify the integrity of downloaded packages" msgstr "İndirilen paketlerin bütünlüğünü doğrula" #: ../fdroidserver/index.py msgid "Verifying index signature:" msgstr "" #: ../fdroid msgid "Warn about possible metadata errors" msgstr "Olası üst veri hataları hakkında uyar" #: ../fdroidserver/update.py msgid "" "When configured for signed indexes, create only unsigned indexes at this " "stage" msgstr "" "İmzalı indeksler için yapılandırıldığında, bu aşamada sadece imzasız " "indeksleri yarat" msgid "X.509 'Distiguished Name' used when generating keys" msgstr "Anahtarlar üretilirken X.509 'Distinguished Name' kullanılır" #: ../fdroidserver/init.py msgid "X.509 'Distinguished Name' used when generating keys" msgstr "Anahtarlar üretilirken X.509 'Distinguished Name' kullanılır" #: ../fdroidserver/common.py msgid "You can use ANDROID_HOME to set the path to your SDK, i.e.:" msgstr "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "adding IdentityFile to {path}" msgstr "IdentityFile {path} konumuna ekleniyor" #: ../fdroidserver/update.py #, python-brace-format msgid "adding to {name}: {path}" msgstr "{name} adına ekleniyor: {path}" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "ambiguous option: %(option)s could match %(matches)s" msgstr "belirsiz şeçenek: %(option)s ile %(matches)s eşleşebilir" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "ambiguous option: %s (%s?)" msgstr "belirsiz şeçenek: %s (%s?)" #: ../fdroidserver/lint.py ../fdroidserver/rewritemeta.py msgid "applicationId in the form APPID" msgstr "APPID biçiminde applicationId" #: ../fdroidserver/checkupdates.py msgid "applicationId to check for updates" msgstr "Güncellemeleri denetlemek için applicationId" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/verify.py ../fdroidserver/publish.py #: ../fdroidserver/dscanner.py ../fdroidserver/build.py #: ../fdroidserver/scanner.py ../fdroidserver/install.py msgid "applicationId with optional versionCode in the form APPID[:VERCODE]" msgstr "APPID[:VERCODE] biçiminde applicationId, isteğe bağlı versionCode ile" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "argument \"-\" with mode %r" msgstr "%r kipiyle \"-\" argümanı" #: ../fdroidserver/nightly.py msgid "attempting bare ssh connection to test deploy key:" msgstr "Dağıtım anahtarını sınamak için çıplak ssh bağlantısı deneniyor:" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "can't open '%s': %s" msgstr "'%s' açılamıyor: %s" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "cannot have multiple subparser arguments" msgstr "çoklu alt işleyici argümanı verilemez" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "cannot merge actions - two groups are named %r" msgstr "eylemler birleştirilemiyor - %r adlı iki grup" #: ../fdroidserver/nightly.py msgid "cannot publish update, did you set the deploy key?" msgstr "güncelleme yayımlanamıyor, dağıtım anahtarını ayarladınız mı?" #: ../fdroidserver/nightly.py #, python-brace-format msgid "cloning {url}" msgstr "{url} klonlanıyor" #: ../fdroidserver/server.py msgid "command to execute, either 'init' or 'update'" msgstr "çalıştırılacak komut, 'init' ya da 'update'" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "complex" msgstr "karmaşık" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "conflicting option string: %s" msgid_plural "conflicting option strings: %s" msgstr[0] "çakışan seçenek satırı: %s" msgstr[1] "çakışan seçenek satırları: %s" #: ../fdroidserver/nightly.py #, python-brace-format msgid "copying {apkfilename} into {path}" msgstr "{apkfilename} {path} içine kopyalanıyor" #: ../fdroidserver/nightly.py #, python-brace-format msgid "created {path}" msgstr "{path} oluşturuldu" #: ../fdroidserver/update.py #, python-brace-format msgid "deleting: repo/{apkfilename}" msgstr "siliniyor: repo/{apkfilename}" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "dest= is required for options like %r" msgstr "dest= %r gibi seçenekler için gerekli" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "expected %s argument" msgid_plural "expected %s arguments" msgstr[0] "beklenen %s argümandı" msgstr[1] "beklenen %s argümandı" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "expected at least one argument" msgstr "beklenen en az bir argümandı" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "expected at most one argument" msgstr "beklenen en çok bir argümandı" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "expected one argument" msgstr "beklenen bir argümandı" #: ../fdroid msgid "fdroid [-h|--help|--version] []" msgstr "fdroid [-h|--help|--version] []" #: ../fdroid msgid "fdroid [] [-h|--help|--version|]" msgstr "fdroid [] [-h|--help|--version|]" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "floating-point" msgstr "kayan nokta" #: ../fdroidserver/metadata.py msgid "force errors to be warnings, or ignore" msgstr "hataları uyarı olmaya zorla veya yok say" #: ../fdroidserver/metadata.py msgid "force metadata errors (default) to be warnings, or to be ignored." msgstr "" "üst veri hatalarının (öntanımlı) uyarı olmasını veya yok sayılmasını zorunlu " "kıl." #: ../fdroidserver/common.py msgid "git svn clone failed" msgstr "git svn clone başarısız" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "ignored explicit argument %r" msgstr "açık argüman %r yok sayıldı" #: ../fdroidserver/index.py msgid "index-v1 must have a signature, use `fdroid signindex` to create it!" msgstr "" "index-v1 bir imzaya sahip olmalı, oluşturmak için `fdroid signindex` " "kullanın!" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "integer" msgstr "tamsayı" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "invalid %(type)s value: %(value)r" msgstr "geçersiz %(type)s değeri: %(value)r" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "invalid choice: %(value)r (choose from %(choices)s)" msgstr "geçersiz seçim: %(value)r (%(choices)s içinden seçin)" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "invalid conflict_resolution value: %r" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "" "invalid option string %(option)r: must start with a character " "%(prefix_chars)r" msgstr "" #: ../fdroidserver/server.py #, python-brace-format msgid "" "local_copy_dir does not end with \"fdroid\", perhaps you meant: \"{path}\"" msgstr "" "local_copy_dir \"fdroid\" ile sonlanmıyor, belki de \"{path}\" demek " "istediniz" #: ../fdroidserver/server.py msgid "local_copy_dir must be an absolute path!" msgstr "local_copy_dir mutlak bir yol olmalı!" #: ../fdroidserver/server.py msgid "local_copy_dir must be directory, not a file!" msgstr "local_copy_dir bir dizin olmalı, dosya değil!" #: ../fdroidserver/index.py #, python-format msgid "mirror '%s' does not end with 'fdroid'!" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "mutually exclusive arguments must be optional" msgstr "" #: ../fdroidserver/mirror.py #, python-brace-format msgid "no \"icon\" in {appid}" msgstr "" #: ../fdroidserver/signatures.py msgid "no APK supplied" msgstr "APK sağlanmadı" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "no such option: %s" msgstr "böyle bir şeçenek yok: %s" #: ../fdroid msgid "no version info found!" msgstr "Sürüm bilgisi bulunamadı!" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "not allowed with argument %s" msgstr "argüman %s ile izin verilmez" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "one of the arguments %s is required" msgstr "%s argümanlarından biri gerekli" #: ../fdroidserver/index.py ../fdroidserver/common.py msgid "only accepts strings, lists, and tuples" msgstr "yalnızca satırları, listeleri ve dizileri kabul eder" #: ../fdroidserver/install.py #, python-format msgid "option %s: If you really want to install all the signed apps, use --all" msgstr "" "seçenek %s: Tüm imzalı uygulamaları gerçekten kurmak istiyorsanız, --all " "kullanın" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "option %s: invalid %s value: %r" msgstr "seçenek %s: geçersiz %s değeri: %r" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "option %s: invalid choice: %r (choose from %s)" msgstr "seçenek %s: geçersiz seçim: %r (%s içinden seçin)" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option -%s not recognized" msgstr "seçenek -%s tanınmıyor" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option -%s requires argument" msgstr "şeçenek -%s argüman gerektirir" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option --%s must not have an argument" msgstr "--%s seçeneğinin argümanı olmamalı" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option --%s not a unique prefix" msgstr "--%s seçeneği tekil ön ek değil" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option --%s not recognized" msgstr "seçenek --%s tanınmıyor" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option --%s requires argument" msgstr "--%s seçeneği argüman gerektirir" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "optional arguments" msgstr "isteğe bağlı argümanlar" #: ../fdroidserver/nightly.py #, python-brace-format msgid "overwriting existing {path}" msgstr "var olan {path} üzerine yazılıyor" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "positional arguments" msgstr "konumsal argümanlar" #: ../fdroidserver/signatures.py #, python-brace-format msgid "" "refuse downloading via insecure HTTP connection (use HTTPS or specify --no-" "https-check): {apkfilename}" msgstr "" "güvensiz HTTP bağlantısı ile indirmeyi reddet (HTTPS kullanın veya --no-" "https-check belirtin): {apkfilename}" #: ../fdroidserver/signatures.py #, python-brace-format msgid "" "refuse downloading via insecure http connection (use https or specify --no-" "https-check): {apkfilename}" msgstr "" "güvensiz http bağlantısı ile indirmeyi reddet (https kullanın veya --no-" "https-check belirtin): {apkfilename}" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "s3cmd sync indexes {path} to {url} and delete" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "show program's version number and exit" msgstr "programın sürüm numarasını göster ve çık" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.5/optparse.py #: /usr/lib/python3.6/argparse.py /usr/lib/python3.6/optparse.py msgid "show this help message and exit" msgstr "bu yardım yazısını göster ve çık" #: ../fdroidserver/signatures.py msgid "signed APK, either a file-path or HTTPS URL." msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "skipping source tarball: {path}" msgstr "" #: ../fdroidserver/lint.py msgid "srclibs missing name and/or @" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "the following arguments are required: %s" msgstr "şu argümanlar gerekli: %s" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "unexpected option string: %s" msgstr "beklenmeyen seçenek satırı: %s" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "unknown parser %(parser_name)r (choices: %(choices)s)" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "unrecognized arguments: %s" msgstr "tanınmayan argümanlar: %s" #: ../fdroidserver/common.py #, python-brace-format msgid "unsafe permissions on '{config_file}' (should be 0600)!" msgstr "'{config_file}' üzerinde güvenli olmayan izinler (0600 olmalı)!" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py ../fdroid msgid "usage: " msgstr "kullanım: " #: ../fdroid msgid "usage: fdroid [-h|--help|--version] []" msgstr "kullanım: fdroid [-h|--help|--version] []" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "using Apache libcloud to sync with {url}" msgstr "{url} ile eşitleme için Apache libcloud kullanılıyor" #: ../fdroidserver/publish.py #, python-brace-format msgid "{0} app, {1} key aliases" msgid_plural "{0} apps, {1} key aliases" msgstr[0] "" msgstr[1] "" #: ../fdroidserver/update.py #, python-brace-format msgid "{apkfilename} ({appid}) has no metadata!" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "{apkfilename} has multiple {name} files, looks like Master Key exploit!" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "{apkfilename}'s AndroidManifest.xml has a bad date: " msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "{appid} does not have a name! Using package name instead." msgstr "" #: ../fdroidserver/mirror.py #, python-brace-format msgid "{appid} is missing {name}" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vname #: ../fdroidserver/lint.py #, python-brace-format msgid "{appid}: Unknown extlib {path} in build '{versionName}'" msgstr "" #: ../fdroidserver/scanner.py #, python-brace-format msgid "{appid}: no builds specified, running on current source state" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "{field} not terminated in {name}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "{name} \"{path}\" does not exist! Correct it in config.py." msgstr "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "{path} does not exist! Create it by running:" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "{path} has bad file signature \"{pattern}\", possible Janus exploit!" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "{path} is zero size!" msgstr "{path} boyutu sıfır!" #: ../fdroidserver/mirror.py #, python-brace-format msgid "{url} does not end with \"fdroid\", check the URL path!" msgstr "{url} \"fdroid\" ile bitmiyor, URL konumunu doğrulayın!" #: ../fdroidserver/build.py msgid "{} build failed" msgid_plural "{} builds failed" msgstr[0] "{} inşa başarısız" msgstr[1] "{} inşa başarısız" #: ../fdroidserver/build.py msgid "{} build succeeded" msgid_plural "{} builds succeeded" msgstr[0] "{} inşa başarılı" msgstr[1] "{} inşa başarılı" #, fuzzy #~ msgid "Add PGP signatures for packages in repo using GnuPG" #~ msgstr "Depodaki paketler için GPG imzaları ekle" #~ msgid "Add gpg signatures for packages in repo" #~ msgstr "Depodaki paketler için GPG imzaları ekle" #~ msgid "Android Build Tools path '{path}' does not exist!" #~ msgstr "Android Build Tools konumu '{path}' yok!" #~ msgid "Clean update - don't uses caches, reprocess all apks" #~ msgstr "" #~ "Temiz güncelleme - önbellekleri kullanmaz, tüm APKları yeniden işler" #~ msgid "app-id in the form APPID" #~ msgstr "APPID biçiminde app-id" #~ msgid "app-id to check for updates" #~ msgstr "Güncellemeleri denetlemek için app-id" #~ msgid "app-id with optional versionCode in the form APPID[:VERCODE]" #~ msgstr "APPID[:VERCODE] biçiminde app-id, isteğe bağlı versionCode ile" #~ msgid "app-id with optional versioncode in the form APPID[:VERCODE]" #~ msgstr "APPID[:VERCODE] biçiminde app-id, isteğe bağlı versioncode ile" fdroidserver-1.0.9/locale/Makefile0000664000175000017500000000230613303240575017027 0ustar hanshans00000000000000 FILES = ../fdroid $(wildcard ../fdroidserver/*.py) \ $(wildcard /usr/lib/python3.*/argparse.py) \ $(wildcard /usr/lib/python3.*/optparse.py) \ $(wildcard /usr/lib/python3.*/getopt.py) # these are the supported languages ALL_LINGUAS = de es pt_BR pt_PT tr zh_Hans zh_Hant POFILES = $(wildcard */LC_MESSAGES/fdroidserver.po) MOFILES = $(ALL_LINGUAS:=/LC_MESSAGES/fdroidserver.mo) TEMPLATE = fdroidserver.pot VERSION = $(shell git describe) # refresh everything from the source code update: $(POFILES) # generate .mo files from the .po files compile: $(MOFILES) clean: -rm -f -- $(MOFILES) -rm -f -- $(POFILES:=~) $(TEMPLATE): $(FILES) xgettext --join-existing --from-code=UTF-8 \ --language=Python --keyword=_ \ --no-wrap --sort-output --add-location=file --output=$(TEMPLATE) \ --package-name="fdroidserver" --package-version=$(VERSION) \ --foreign-user \ --msgid-bugs-address=https://gitlab.com/fdroid/fdroidserver/issues \ $(FILES) sed -i 's,CHARSET,UTF-8,' $(TEMPLATE) %.po: $(TEMPLATE) msgmerge --no-wrap --sort-output --add-location=file --update $@ $(TEMPLATE) %/LC_MESSAGES/fdroidserver.mo: %/LC_MESSAGES/fdroidserver.po msgfmt --check -o $@ $(@:mo=po) .PHONY = compile clean update fdroidserver-1.0.9/locale/it/0000775000175000017500000000000013324115531015776 5ustar hanshans00000000000000fdroidserver-1.0.9/locale/it/LC_MESSAGES/0000775000175000017500000000000013324115531017563 5ustar hanshans00000000000000fdroidserver-1.0.9/locale/it/LC_MESSAGES/fdroidserver.po0000664000175000017500000016143413322065577022646 0ustar hanshans00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: fdroidserver 0.9\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" "POT-Creation-Date: 2018-02-13 09:01+0100\n" "PO-Revision-Date: 2018-05-21 15:54+0000\n" "Last-Translator: random r \n" "Language-Team: Italian \n" "Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 3.0-dev\n" #: ../fdroidserver/nightly.py msgid "" "\n" "SSH Public Key to be used as Deploy Key:" msgstr "" "\n" "Chiave pubblica SSH da usare come chiave di deploy:" #: ../fdroidserver/nightly.py #, python-brace-format msgid "" "\n" "{path} encoded for the DEBUG_KEYSTORE secret variable:" msgstr "" "\n" "{path} codificato per la variabile segreta DEBUG_KEYSTORE:" #: ../fdroidserver/lint.py #, python-format msgid "\"%s/\" has no matching metadata file!" msgstr "\"%s/\" non ha un file di metadata corrispondente!" #: ../fdroidserver/update.py #, python-brace-format msgid "\"{path}\" contains outdated {name} ({version})" msgstr "\"{path}\" contiene {name} obsoleto ({version})" #: ../fdroidserver/update.py #, python-brace-format msgid "\"{path}\" contains recent {name} ({version})" msgstr "\"{path}\" contiene {name} recente ({version})" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "\"{path}\" exists but s3cmd is not installed!" msgstr "\"{path}\" esiste ma s3cmd non è installato!" #: ../fdroidserver/metadata.py #, python-brace-format msgid "\"{path}\" is not an accepted format, convert to: {formats}" msgstr "\"{path}\" non è un formato accettato, convertire a: {formats}" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "%(option)s option requires %(number)d argument" msgid_plural "%(option)s option requires %(number)d arguments" msgstr[0] "l'opzione %(option)s richiede l'argomento %(number)d" msgstr[1] "l'opzione %(option)s richiede gli argomenti %(number)d" #: ../fdroidserver/mirror.py #, python-format msgid "%(prog)s [options] url" msgstr "%(prog)s [options] url" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "%(prog)s: error: %(message)s\n" msgstr "%(prog)s: errore: %(message)s\n" #: ../fdroidserver/scanner.py #, python-format msgid "%d problems found" msgstr "trovati %d problemi" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "%prog [options]" msgstr "%prog [opzioni]" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "%r is not callable" msgstr "%r non è richiamabile" #: ../fdroidserver/lint.py #, python-format msgid "%s is not an accepted build field" msgstr "%s non è un campo di build accettato" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "%s option does not take a value" msgstr "l'opzione %s non accetta un valore" #: ../fdroidserver/index.py ../fdroidserver/common.py msgid "'keypass' not found in config.py!" msgstr "\"keypass\" non trovato in config.py!" #: ../fdroidserver/index.py ../fdroidserver/common.py msgid "'keystore' not found in config.py!" msgstr "\"keystore\" non trovato in config.py!" #: ../fdroidserver/index.py ../fdroidserver/common.py msgid "'keystorepass' not found in config.py!" msgstr "\"keystorepass\" non trovato in config.py!" #: ../fdroidserver/index.py ../fdroidserver/common.py msgid "'repo_keyalias' not found in config.py!" msgstr "\"repo_keyalias\" non trovato in config.py!" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "'required' is an invalid argument for positionals" msgstr "\"required\" è un argomento invalido per i posizionali" #: ../fdroidserver/common.py msgid "'sdk_path' not set in 'config.py'!" msgstr "\"sdk_path\" non impostato in \"config.py\"!" #. Translators: "build-tools" is the file name of a package from #. Google, it is part of the Android SDK. So it probably shouldn't be #. translated or transliterated. #: ../fdroidserver/common.py #, python-brace-format msgid "'{aapt}' is too old, fdroid requires build-tools-23.0.0 or newer!" msgstr "" "\"{aapt}\" è troppo vecchio, fdroid richiede build-tools-23.0.0 o più " "recente!" #: ../fdroidserver/common.py #, python-brace-format msgid "'{aapt}' is too old, fdroid requires build-tools-{version} or newer!" msgstr "" "'{aapt}' è troppo vecchio, fdroid richiede build-tools-{version} o più " "recente!" #: ../fdroidserver/install.py #, python-brace-format msgid "'{apkfilename}' is already installed on {dev}." msgstr "\"{apkfilename}\" è già installato su {dev}." #: ../fdroidserver/common.py #, python-brace-format msgid "" "'{field}' will be in random order! Use () or [] brackets if order is " "important!" msgstr "" "\"{field}\" sarà in ordine casuale! Usa le parentesi () o [] se l'ordine è " "importante!" #: ../fdroidserver/common.py #, python-brace-format msgid "'{path}' failed to execute!" msgstr "Esecuzione di \"{path}\" fallita!" #: ../fdroidserver/metadata.py #, python-brace-format msgid "'{value}' is not a valid {field} in {appid}. Regex pattern: {pattern}" msgstr "" "\"{value}\" non è un {field} valido in {appid}. Espressione regolare: " "{pattern}" #: ../fdroidserver/checkupdates.py #, python-brace-format msgid "...checkupdate failed for {appid} : {error}" msgstr "...checkupdate fallito per {appid}:{error}" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid ".__call__() not defined" msgstr ".__call__() non definita" #: ../fdroidserver/metadata.py msgid ".fdroid.txt is not supported! Convert to .fdroid.yml or .fdroid.json." msgstr ".fdroid.txt non è supportato! Converti in .fdroid.yml o .fdroid.json." #: ../fdroidserver/lint.py msgid "/issues is missing" msgstr "/issues è mancante" #: ../fdroidserver/mirror.py msgid "A URL is required as an argument!" msgstr "È richiesto un URL come argomento!" #: ../fdroid msgid "Add PGP signatures using GnuPG for packages in repo" msgstr "Aggiungi firme PGP con GnuPG per i pacchetti in un repository" #: ../fdroid msgid "Add a new application from its source code" msgstr "Aggiungi una nuova applicazione dal suo codice sorgente" #: ../fdroidserver/update.py msgid "Add a repo signing key to an unsigned repo" msgstr "Aggiungi una chiave di firma ad un repository non firmato" #: ../fdroidserver/update.py msgid "Add skeleton metadata files for APKs that are missing them" msgstr "Aggiungi i file scheletro di metadata agli APK che sono senza" #: ../fdroidserver/update.py #, python-brace-format msgid "Adding new repo for only {name}" msgstr "Aggiungendo un repository solo per {name}" #: ../fdroidserver/init.py msgid "Alias of the repo signing key in the keystore" msgstr "Alias della chiave di firma del repository nel keystore" #: ../fdroidserver/import.py msgid "" "Allows a different revision (or git branch) to be specified for the initial " "import" msgstr "" "Permetti di specificare una revisione (o branch git) diversa per " "l'importazione iniziale" #: ../fdroidserver/mirror.py msgid "Also mirror the full archive section" msgstr "" #: ../fdroidserver/lint.py msgid "Also warn about formatting issues, like rewritemeta -l" msgstr "Avvisa anche dei problemi di formattazione, come rewritemeta -l" #: ../fdroidserver/common.py #, python-brace-format msgid "Android SDK '{path}' does not have '{dirname}' installed!" msgstr "\"{path}\" dell'Android SDK non ha \"{dirname}\" installato!" #: ../fdroidserver/common.py msgid "Android SDK not found!" msgstr "Android SDK non trovato!" #: ../fdroidserver/common.py #, python-brace-format msgid "Android SDK path '{path}' does not exist!" msgstr "Il path di Android SDK \"{path}\" non esiste!" #: ../fdroidserver/common.py #, python-brace-format msgid "Android SDK path '{path}' is not a directory!" msgstr "Il path di Android SDK \"{path}\" non è una directory!" #. Translators: "build-tools" is the file name of a package from #. Google, it is part of the Android SDK. So it probably shouldn't be #. translated or transliterated. #: ../fdroidserver/common.py #, python-brace-format msgid "Android build-tools path '{path}' does not exist!" msgstr "Il path di Android build-tools \"{path}\" non esiste!" #: ../fdroidserver/update.py msgid "AndroidManifest.xml has no date" msgstr "AndroidManifest.xml non ha una data" #: ../fdroidserver/lint.py #, python-brace-format msgid "App is in '{repo}' but has a link to {url}" msgstr "L'app è in \"{repo}\" ma ha un collegamento a {url}" #: ../fdroidserver/lint.py msgid "Appending .git is not necessary" msgstr "Non è necessario aggiungere \".git\"" #: ../fdroidserver/update.py #, python-brace-format msgid "Archiving {apkfilename} with invalid signature!" msgstr "Archiviando {apkfilename} con una firma invalida!" #: ../fdroidserver/mirror.py msgid "" "Base URL to mirror, can include the index signing key using the query " "string: ?fingerprint=" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vname #: ../fdroidserver/lint.py #, python-brace-format msgid "Branch '{branch}' used as commit in build '{versionName}'" msgstr "Branch \"{branch}\"usata come commit nella build \"{versionName}\"" #: ../fdroidserver/lint.py #, python-brace-format msgid "Branch '{branch}' used as commit in srclib '{srclib}'" msgstr "Branch \"{branch}\" usata come commit in srclib \"{srclib}\"" #: ../fdroid msgid "Build a package from source" msgstr "Costruisci un pacchetto dai sorgenti" #: ../fdroidserver/build.py msgid "Build all applications available" msgstr "Costruisci tutte le applicazioni disponibili" #: ../fdroidserver/lint.py msgid "Build generated by `fdroid import` - remove disable line once ready" msgstr "" "Build generata da \"froid import\" - rimuovi disable line quando ha finito" #: ../fdroidserver/build.py msgid "Build only the latest version of each package" msgstr "Costruisci solo l'ultima versione di ciascun pacchetto" #: ../fdroidserver/metadata.py #, python-brace-format msgid "" "Build should have comma-separated versionName and versionCode, not " "\"{value}\", in {linedesc}" msgstr "" "La build dovrebbe avere versionName e versionCode separati da una virgola in " "{linedesc}, non \"{value}\"" #: ../fdroidserver/init.py #, python-format msgid "Built repo based in \"%s\" with this config:" msgstr "Costruito il repository in \"%s\" con questa configurazione:" #: ../fdroidserver/build.py msgid "Can't build due to {} error while scanning" msgid_plural "Can't build due to {} errors while scanning" msgstr[0] "" "Impossibile costruire a causa di un errore con {} durante la scansione" msgstr[1] "Impossibile costruire a causa di errori con {} durante la scansione" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Cannot find a packageName for {path}!" msgstr "Impossibile trovare un packageName per {path}!" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Cannot find an appid for {path}!" msgstr "Impossibile trovare un appid per {path}!" #: ../fdroidserver/vmtools.py #, python-brace-format msgid "Cannot read \"{path}\"!" msgstr "Impossibile leggere \"{path}\"!" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Cannot resolve app id {appid}" msgstr "Impossibile trovare l'app id {appid}" #: ../fdroidserver/rewritemeta.py msgid "Cannot use --list and --to at the same time" msgstr "Impossibile usare --list e --to contemporaneamente" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Cannot write \"{path}\", not an accepted format, use: {formats}" msgstr "" "Impossibile scrivere su \"{path}\", formato non accettato, usare: {formats}" #: ../fdroidserver/lint.py msgid "Categories are not set" msgstr "Le categorie non sono impostate" #: ../fdroidserver/lint.py #, python-format msgid "Category '%s' is not valid" msgstr "La categoria \"%s\" non è valida" #: ../fdroid msgid "Check for updates to applications" msgstr "Cerca gli aggiornamenti delle applicazioni" #: ../fdroidserver/update.py #, python-brace-format msgid "" "Checking archiving for {appid} - apks:{integer}, keepversions:{keep}, " "archapks:{arch}" msgstr "" "Controllando l'archiviazione per {appid} - apk:{integer}, keepversions:" "{keep}, archapks:{arch}" #: ../fdroidserver/dscanner.py msgid "Clean after all scans have finished" msgstr "Pulisci dopo aver terminato le scansioni" #: ../fdroidserver/dscanner.py msgid "Clean before the scans start and rebuild the container" msgstr "Pulisci prima delle scansioni e ricostruisci il container" #: ../fdroidserver/dscanner.py msgid "Clean up all containers and then exit" msgstr "Pulisci tutti i container ed esci" #: ../fdroidserver/update.py msgid "Clean update - don't uses caches, reprocess all APKs" msgstr "Aggiornamento pulito - non usa cache, riprocessa tutti gli APK" #: ../fdroidserver/import.py msgid "Comma separated list of categories." msgstr "Lista di categorie separate da una virgola." #: ../fdroid #, c-format, python-format msgid "Command '%s' not recognised.\n" msgstr "Comando \"%s\" non riconosciuto.\n" #: ../fdroidserver/checkupdates.py msgid "Commit changes" msgstr "Cambiamenti del commit" #: ../fdroidserver/common.py #, python-brace-format msgid "Could not find '{command}' on your system" msgstr "Impossibile trovare \"{command}\" sul tuo sistema" #: ../fdroidserver/update.py #, python-brace-format msgid "Could not find {path} to remove it" msgstr "Impossibile trovare {path} da rimuovere" #: ../fdroidserver/update.py msgid "Could not open apk file for analysis" msgstr "Impossibile aprire il file apk per l'analisi" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/import.py msgid "Couldn't find latest version code" msgstr "Impossibile trovare il codice dell'ultima versione" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vname #: ../fdroidserver/import.py msgid "Couldn't find latest version name" msgstr "Impossibile trovare il nome dell'ultima versione" #: ../fdroidserver/import.py msgid "Couldn't find package ID" msgstr "Impossibile trovare l'ID del pacchetto" #: ../fdroidserver/update.py msgid "Cowardily refusing to overwrite existing signing key setup!" msgstr "" "Mi rifiuto di sovrascrivere il setup della chiave di firma già esistente!" #: ../fdroidserver/update.py msgid "Create a repo signing key in a keystore" msgstr "Crea una chiave di firma del repository in un keystore" #: ../fdroidserver/update.py msgid "Create skeleton metadata files that are missing" msgstr "Crea i file scheletro di metadata che mancano" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Created new container \"{name}\"" msgstr "Nuovo container \"{name}\" creato" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Creating \"{path}\" for configuring s3cmd." msgstr "" #: ../fdroidserver/publish.py msgid "Creating log directory" msgstr "Creazione della directory dei log" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Creating new S3 bucket: {url}" msgstr "Creazione di un nuovo bucket S3: {url}" #: ../fdroidserver/publish.py msgid "Creating output directory" msgstr "Creazione della directory di output" #: ../fdroidserver/index.py msgid "Creating signed index with this key (SHA256):" msgstr "Creazione di un indice firmato con questa chiave (SHA256):" #: ../fdroidserver/import.py ../fdroidserver/verify.py #: ../fdroidserver/publish.py msgid "Creating temporary directory" msgstr "Creazione della directory temporanea" #: ../fdroidserver/index.py msgid "Creating unsigned index in preparation for signing" msgstr "Creazione dell'indice non firmato in preparazione della firma" #: ../fdroidserver/nightly.py msgid "DEBUG_KEYSTORE is not set or the value is incomplete" msgstr "DEBUG_KEYSTORE non impostato o il valore è incompleto" #: ../fdroidserver/update.py msgid "Delete APKs and/or OBBs without metadata from the repo" msgstr "Cancella gli APK e/o OBB senza metadata dal repository" #: ../fdroidserver/update.py #, python-brace-format msgid "Deleting unknown file: {path}" msgstr "Cancellazione del file sconosciuto: {path}" #: ../fdroidserver/lint.py #, python-format msgid "Description '%s' is just the app's summary" msgstr "La descrizione \"%s\" è solo il riassunto dell'app" #: ../fdroidserver/lint.py msgid "Description has a duplicate line" msgstr "La descrizione ha una riga duplicata" #: ../fdroidserver/lint.py #, python-format msgid "Description has a list (%s) but it isn't bulleted (*) nor numbered (#)" msgstr "La descrizione ha un elenco (%s) ma non è puntato (*) né numerato (#)" #: ../fdroidserver/lint.py #, python-brace-format msgid "Description of length {length} is over the {limit} char limit" msgstr "" "La descrizione di lunghezza {length} supera il limite di {limit} caratteri" #: ../fdroidserver/mirror.py #, python-brace-format msgid "Do not include \"{path}\" in URL!" msgstr "Non includere \"{path}\" nell'URL!" #: ../fdroidserver/init.py msgid "Do not prompt for Android SDK path, just fail" msgstr "Non chiedere il path di Android SDK, esci subito con un errore" #: ../fdroidserver/build.py msgid "Don't create a source tarball, useful when testing a build" msgstr "Non creare un tarball sorgente, utile per testare una build" #: ../fdroidserver/stats.py msgid "Don't do anything logs-related" msgstr "Non fare niente sui log" #: ../fdroidserver/build.py msgid "" "Don't refresh the repository, useful when testing a build with no internet " "connection" msgstr "Non aggiornare il repository, utile per testare una build offline" #: ../fdroidserver/server.py ../fdroidserver/nightly.py #: ../fdroidserver/upload.py msgid "Don't use rsync checksums" msgstr "Non usare checksum rsync" #: ../fdroid msgid "Download complete mirrors of small repos" msgstr "" #: ../fdroidserver/stats.py msgid "Download logs we don't have" msgstr "Scarica registri che non abbiamo" #: ../fdroidserver/common.py msgid "Downloading the repository already failed once, not trying again." msgstr "" "Lo scaricamento del repository è gia fallito una volta, non verrà riprovato." #: ../fdroidserver/verify.py #, python-brace-format msgid "Downloading {url} failed. {error}" msgstr "Scaricamento di {url} fallito. {error}" #: ../fdroidserver/metadata.py #, python-brace-format msgid "" "Duplicate build recipe found for versionCode {versionCode} in {linedesc}" msgstr "" "Trovata ricetta di costruzione duplicata per versionCode {versionCode} in " "{linedesc}" #: ../fdroidserver/lint.py #, python-brace-format msgid "Duplicate link in '{field}': {url}" msgstr "Link duplicato in '{field}': {url}" #: ../fdroid msgid "Dynamically scan APKs post build" msgstr "Scansiona gli APK dinamicamente dopo la costruzione" #: ../fdroidserver/mirror.py msgid "" "ERROR: this command should never be used to mirror f-droid.org!\n" "A full mirror of f-droid.org requires more than 200GB." msgstr "" #: ../fdroidserver/nightly.py msgid "ERROR: unsupported CI type, patches welcome!" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Empty build flag at {linedesc}" msgstr "" #: ../fdroidserver/init.py #, python-format msgid "" "Enter the path to the Android SDK (%s) here:\n" "> " msgstr "" "Inserisci qui il percorso dell'Android SDK (%s):\n" "> " #: ../fdroidserver/server.py ../fdroidserver/checkupdates.py #: ../fdroidserver/upload.py #, python-format msgid "Error while attempting to publish log: %s" msgstr "Errore tentando di pubblicare il log: %s" #: ../fdroidserver/import.py msgid "Error while getting repo address" msgstr "Errore nell'ottenere l'indirizzo del repo" #: ../fdroid msgid "Extract signatures from APKs" msgstr "Estrai le firme dagli APK" #: ../fdroidserver/signatures.py #, python-brace-format msgid "Failed fetching signatures for '{apkfilename}': {error}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Failed reading {path}: {error}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Failed resizing {path}: {error}" msgstr "" #: ../fdroidserver/publish.py msgid "Failed to align application" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Failed to create S3 bucket: {url}" msgstr "" #: ../fdroidserver/common.py msgid "Failed to get APK manifest information" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Failed to get apk information, deleting {path}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Failed to get apk information, skipping {path}" msgstr "" #: ../fdroidserver/install.py #, python-brace-format msgid "Failed to install '{apkfilename}' on {dev}: {error}" msgstr "" #: ../fdroidserver/publish.py ../fdroidserver/common.py msgid "Failed to sign application" msgstr "" #: ../fdroidserver/common.py msgid "Failed to zipalign application" msgstr "" #: ../fdroidserver/build.py #, python-brace-format msgid "Fetched buildserverid from VM: {buildserverid}" msgstr "" #: ../fdroidserver/signatures.py #, python-brace-format msgid "Fetched signatures for '{apkfilename}' -> '{sigdir}'" msgstr "" #: ../fdroidserver/verify.py ../fdroidserver/stats.py ../fdroidserver/update.py #: ../fdroidserver/rewritemeta.py ../fdroidserver/build.py #: ../fdroidserver/checkupdates.py ../fdroidserver/scanner.py #: ../fdroidserver/install.py msgid "Finished" msgstr "" #: ../fdroidserver/lint.py msgid "Flattr donation methods belong in the FlattrID flag" msgstr "" #: ../fdroidserver/lint.py msgid "Forbidden HTML tags" msgstr "" #: ../fdroidserver/build.py msgid "" "Force build of disabled apps, and carries on regardless of scan problems. " "Only allowed in test mode." msgstr "" #: ../fdroidserver/build.py #, python-brace-format msgid "Force halting build after {0} sec timeout!" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Found \"{path}\" graphic without metadata for app \"{name}\"!" msgstr "" #: ../fdroidserver/common.py msgid "Found invalid appids in arguments" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/common.py msgid "Found invalid versionCodes for some apps" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Found multiple metadata files for {appid}" msgstr "" #: ../fdroidserver/index.py msgid "Found multiple signing certificates for repository." msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Found multiple signing certificates in {path}" msgstr "" #: ../fdroidserver/index.py msgid "Found no signing certificates for repository." msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Found non-file at %s" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Generated skeleton metadata for {appid}" msgstr "" #: ../fdroidserver/common.py #, python-format msgid "Git checkout of '%s' failed" msgstr "" #: ../fdroidserver/common.py msgid "Git clean failed" msgstr "" #: ../fdroidserver/common.py msgid "Git fetch failed" msgstr "" #: ../fdroidserver/common.py msgid "Git remote set-head failed" msgstr "" #: ../fdroidserver/common.py msgid "Git reset failed" msgstr "" #: ../fdroidserver/common.py msgid "Git submodule sync failed" msgstr "" #: ../fdroidserver/common.py msgid "Git submodule update failed" msgstr "" #: ../fdroidserver/common.py msgid "HTTPS must be used with Subversion URLs!" msgstr "" #: ../fdroidserver/index.py msgid "Ignoring package without metadata: " msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Ignoring stale cache data for {apkfilename}" msgstr "" #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Ignoring {ext} file at '{path}'" msgstr "" #: ../fdroidserver/update.py msgid "Include APKs that are signed with disabled algorithms like MD5" msgstr "" #: ../fdroidserver/common.py msgid "Initialising submodules" msgstr "" #: ../fdroidserver/install.py msgid "Install all signed applications available" msgstr "" #: ../fdroid msgid "Install built packages on devices" msgstr "Installa i pacchetti costruiti su dispositivi" #: ../fdroidserver/install.py #, python-format msgid "Installing %s..." msgstr "" #: ../fdroidserver/install.py #, python-brace-format msgid "Installing '{apkfilename}' on {dev}..." msgstr "" #: ../fdroid msgid "Interact with the repo HTTP server" msgstr "Interagisci col server HTTP del repository" #: ../fdroidserver/update.py msgid "Interactively ask about things that need updating." msgstr "Chiedi interattivamente riguardo a ciò che deve essere aggiornato." #: ../fdroidserver/update.py msgid "Invalid APK" msgstr "APK non valido" #: ../fdroidserver/metadata.py #, python-format msgid "Invalid boolean '%s'" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Invalid build flag at {line} in {linedesc}" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Invalid build format: {value} in {name}" msgstr "" #: ../fdroidserver/lint.py msgid "Invalid bulleted list" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "" "Invalid license tag \"%s\"! Use only tags from https://spdx.org/license-list" msgstr "" #: ../fdroidserver/lint.py msgid "Invalid link - use [http://foo.bar Link title] or [http://foo.bar]" msgstr "" #: ../fdroidserver/metadata.py #, python-format msgid "Invalid metadata in %s:%d" msgstr "" #: ../fdroidserver/metadata.py msgid "Invalid metadata in: " msgstr "" #: ../fdroidserver/common.py #, python-format msgid "Invalid name for published file: %s" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Invalid package name {0}" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Invalid versionCode: \"{versionCode}\" is not an integer!" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "JAR signature failed to verify: {path}" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "JAR signature verified: {path}" msgstr "" #: ../fdroidserver/publish.py ../fdroidserver/update.py #: ../fdroidserver/mirror.py msgid "Java JDK not found! Install in standard location or set java_paths!" msgstr "" #: ../fdroidserver/signindex.py msgid "" "Java jarsigner not found! Install in standard location or set java_paths!" msgstr "" #: ../fdroidserver/lint.py msgid "Javascript in HTML src attributes" msgstr "" #: ../fdroidserver/init.py msgid "Keystore for signing key:\t" msgstr "" #: ../fdroidserver/lint.py #, python-brace-format msgid "" "Last used commit '{commit}' looks like a tag, but Update Check Mode is " "'{ucm}'" msgstr "" #: ../fdroidserver/lint.py msgid "Liberapay donation methods belong in the LiberapayID flag" msgstr "" #: ../fdroidserver/rewritemeta.py msgid "List files that would be reformatted" msgstr "" #: ../fdroidserver/build.py msgid "Make the build stop on exceptions" msgstr "" #: ../fdroidserver/index.py msgid "Malformed repository mirrors." msgstr "" #: ../fdroidserver/server.py msgid "Malformed serverwebroot line:" msgstr "" #: ../fdroidserver/gpgsign.py msgid "Missing output directory" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Name '%s' is just the auto name - remove it" msgstr "" #: ../fdroidserver/common.py msgid "No 'config.py' found, using defaults." msgstr "" #: ../fdroidserver/common.py msgid "No Android SDK found!" msgstr "Android SDK non trovato!" #: ../fdroidserver/import.py msgid "No android or kivy project could be found. Specify --subdir?" msgstr "" #: ../fdroidserver/install.py msgid "No attached devices found" msgstr "Nessun dispositivo collegato trovato" #: ../fdroidserver/metadata.py #, python-brace-format msgid "No commit specified for {versionName} in {linedesc}" msgstr "" #: ../fdroidserver/index.py msgid "No fingerprint in URL." msgstr "" #: ../fdroidserver/common.py msgid "No git submodules available" msgstr "" #: ../fdroidserver/import.py msgid "No information found." msgstr "Nessun informazione trovata." #: ../fdroidserver/lint.py msgid "No need to specify that the app is Free Software" msgstr "" #: ../fdroidserver/lint.py msgid "No need to specify that the app is for Android" msgstr "Non c'è bisogno di specificare che l'applicazione è per Android" #: ../fdroidserver/server.py msgid "No option set! Edit your config.py to set at least one of these:" msgstr "" #: ../fdroidserver/common.py msgid "No packages specified" msgstr "" #: ../fdroidserver/install.py #, python-format msgid "No signed apk available for %s" msgstr "" #: ../fdroidserver/install.py msgid "No signed output directory - nothing to do" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "No signing certificates found in {path}" msgstr "" #: ../fdroidserver/common.py #, python-format msgid "No such package: %s" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/common.py #, python-brace-format msgid "No such versionCode {versionCode} for app {appid}" msgstr "" #: ../fdroidserver/verify.py ../fdroidserver/publish.py msgid "No unsigned directory - nothing to do" msgstr "" #: ../fdroidserver/signindex.py msgid "Nothing to do" msgstr "" #: ../fdroidserver/checkupdates.py #, python-brace-format msgid "Nothing to do for {appid}." msgstr "" #: ../fdroidserver/init.py msgid "Now set these in config.py:" msgstr "Ora imposta i seguenti campi in config.py:" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/update.py #, python-brace-format msgid "OBB file has newer versionCode({integer}) than any APK:" msgstr "" #: ../fdroidserver/update.py msgid "OBB filename must start with \"main.\" or \"patch.\":" msgstr "" #: ../fdroidserver/update.py msgid "OBB's packagename does not match a supported APK:" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Old APK signature failed to verify: {path}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Only PNG and JPEG are supported for graphics, found: {path}" msgstr "" #: ../fdroidserver/checkupdates.py msgid "Only print differences with the Play Store" msgstr "" #: ../fdroidserver/checkupdates.py msgid "Only process apps with auto-updates" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "Options" msgstr "Opzioni" #: ../fdroidserver/import.py msgid "Overall license of the project." msgstr "" #: ../fdroidserver/dscanner.py msgid "Override path for repo APKs (default: ./repo)" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Parsing manifest at '{path}'" msgstr "" #: ../fdroidserver/common.py msgid "Password required with username" msgstr "" #: ../fdroidserver/import.py msgid "Path to main Android project subdirectory, if not in root." msgstr "" msgid "Path to main android project subdirectory, if not in root." msgstr "" #: ../fdroidserver/init.py msgid "Path to the Android SDK (sometimes set in ANDROID_HOME)" msgstr "" #: ../fdroidserver/btlog.py msgid "Path to the git repo to use as the log" msgstr "" #: ../fdroidserver/init.py msgid "Path to the keystore for the repo signing key" msgstr "" #: ../fdroidserver/dscanner.py msgid "Prepare Drozer to run a scan" msgstr "" msgid "Prepare drozer to run a scan" msgstr "" #: ../fdroidserver/nightly.py msgid "Print the secret variable to the terminal for easy copy/paste" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Problem with description of {appid}: {error}" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Problem with xml at '{path}'" msgstr "" #: ../fdroidserver/checkupdates.py msgid "Process auto-updates" msgstr "" #: ../fdroidserver/publish.py ../fdroidserver/update.py #, python-brace-format msgid "Processing {apkfilename}" msgstr "" #: ../fdroidserver/checkupdates.py ../fdroidserver/scanner.py #, python-brace-format msgid "Processing {appid}" msgstr "" #: ../fdroidserver/update.py msgid "Produce human-readable XML/JSON for index files" msgstr "" #: ../fdroidserver/update.py msgid "Produce human-readable index.xml" msgstr "Produci un index.xml leggibile" #: ../fdroidserver/import.py msgid "Project URL to import from." msgstr "" #: ../fdroidserver/lint.py msgid "Punctuation should be avoided" msgstr "" #: ../fdroidserver/btlog.py msgid "Push the log to this git remote repository" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Pushing binary transparency log to {url}" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Pushing to {url}" msgstr "" #: ../fdroid msgid "Quickly start a new repository" msgstr "Crea velocemente un nuovo repository" #: ../fdroid msgid "Read all the metadata files and exit" msgstr "Leggi tutti i file di metadata ed esci" #: ../fdroidserver/common.py #, python-brace-format msgid "Reading '{config_file}'" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Reading minSdkVersion failed: \"{apkfilename}\"" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #. https://developer.android.com/guide/topics/manifest/manifest-element.html#vname #: ../fdroidserver/common.py #, python-brace-format msgid "" "Reading packageName/versionCode/versionName failed, APK invalid: " "'{apkfilename}'" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Reading {apkfilename} from cache" msgstr "" #: ../fdroidserver/stats.py msgid "" "Recalculate aggregate stats - use when changes have been made that would " "invalidate old cached data." msgstr "" #: ../fdroidserver/common.py msgid "Removing specified files" msgstr "" #: ../fdroidserver/update.py msgid "Rename APK files that do not match package.name_123.apk" msgstr "Rinomina i file APK che non corrispondono a package.name_123.apk" #: ../fdroidserver/update.py msgid "Report on build data status" msgstr "" #: ../fdroidserver/build.py msgid "" "Reset and create a brand new build server, even if the existing one appears " "to be ok." msgstr "" #: ../fdroidserver/nightly.py #, fuzzy, python-brace-format msgid "Resigning {apkfilename} with provided debug.keystore" msgstr "Archiviando {apkfilename} con il debug.keystore fornito" #: ../fdroidserver/update.py msgid "Resize all the icons exceeding the max pixel size and exit" msgstr "" #: ../fdroidserver/common.py msgid "Restrict output to warnings and errors" msgstr "" #: ../fdroid msgid "Rewrite all the metadata files" msgstr "Riscrivi tutti i file di metadata" #: ../fdroidserver/rewritemeta.py msgid "Rewrite to a specific format: " msgstr "" #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Rewriting '{appid}'" msgstr "" #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Rewriting '{appid}' to '{path}'" msgstr "" #: ../fdroidserver/lint.py msgid "Run rewritemeta to fix formatting" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py msgid "Running first pass with MD5 checking disabled" msgstr "" #: ../fdroidserver/mirror.py #, python-brace-format msgid "Running wget in {path}" msgstr "" #: ../fdroidserver/dscanner.py msgid "Scan only the latest version of each package" msgstr "" #: ../fdroid msgid "Scan the source code of a package" msgstr "Scansiona il codice sorgente di un pacchetto" #: ../fdroidserver/scanner.py #, python-brace-format msgid "Scanner found {count} problems in {appid}:" msgstr "" #: ../fdroidserver/scanner.py #, python-brace-format msgid "Scanner found {count} problems in {appid}:{versionCode}:" msgstr "" #: ../fdroidserver/build.py msgid "Scanner found {} problem" msgid_plural "Scanner found {} problems" msgstr[0] "" msgstr[1] "" #: ../fdroidserver/common.py msgid "Set clock to that time using:" msgstr "" #: ../fdroidserver/build.py #, python-brace-format msgid "Set open file limit to {integer}" msgstr "" #: ../fdroid msgid "Set up an app build for a nightly build repo" msgstr "" #: ../fdroidserver/build.py msgid "Setting open file limit failed: " msgstr "" #: ../fdroidserver/build.py #, python-brace-format msgid "Setting {0} sec timeout for this build" msgstr "" #: ../fdroidserver/build.py msgid "Setup an emulator, install the APK on it and perform a Drozer scan" msgstr "" msgid "Setup an emulator, install the apk on it and perform a drozer scan" msgstr "" #: ../fdroid msgid "Sign and place packages in the repo" msgstr "Firma e metti i pacchetti nel repository" #: ../fdroid msgid "Sign indexes created using update --nosign" msgstr "Firma gli indici creati con update --nosign" #: ../fdroidserver/build.py msgid "Skip scanning the source code for binaries and other problems" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Skipping '{apkfilename}' with invalid signature!" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Skipping index generation for {appid}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Skipping {apkfilename} with invalid signature!" msgstr "" #: ../fdroidserver/scanner.py #, python-brace-format msgid "Skipping {appid}: disabled" msgstr "" #: ../fdroidserver/scanner.py #, python-brace-format msgid "Skipping {appid}: no builds specified" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py msgid "Specify a local folder to sync the repo to" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py msgid "Specify an identity file to provide to SSH for rsyncing" msgstr "" #: ../fdroidserver/update.py msgid "Specify editor to use in interactive mode. Default " msgstr "" #, c-format msgid "Specify editor to use in interactive mode. Default %s" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Specify editor to use in interactive mode. Default is {path}" msgstr "" #: ../fdroidserver/build.py msgid "Specify that we're running on the build server" msgstr "" #: ../fdroidserver/nightly.py msgid "Specify which debug keystore file to use." msgstr "" #: ../fdroidserver/common.py msgid "Spew out even more information than normal" msgstr "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "Striping mystery signature from {apkfilename}" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Summary '%s' is just the app's name" msgstr "" #: ../fdroidserver/lint.py #, python-brace-format msgid "Summary of length {length} is over the {limit} char limit" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "System clock is older than date in {path}!" msgstr "" #: ../fdroidserver/build.py msgid "" "Test mode - put output in the tmp directory only, and always build, even if " "the output already exists." msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/update.py #, python-brace-format msgid "The OBB version code must come after \"{name}.\":" msgstr "" #: ../fdroidserver/btlog.py msgid "The base URL for the repo to log (default: https://f-droid.org)" msgstr "" #: ../fdroidserver/mirror.py msgid "The directory to write the mirror to" msgstr "" #: ../fdroidserver/server.py msgid "The only commands currently supported are 'init' and 'update'" msgstr "" #: ../fdroidserver/index.py msgid "The repository's fingerprint does not match." msgstr "" #: ../fdroidserver/common.py msgid "The repository's index could not be verified." msgstr "" #: ../fdroidserver/server.py #, python-brace-format msgid "The root dir for local_copy_dir \"{path}\" does not exist!" msgstr "" #: ../fdroidserver/nightly.py msgid "The the file to be included in the repo (path or glob)" msgstr "" #: ../fdroidserver/publish.py msgid "There is a keyalias collision - publishing halted" msgstr "" #: ../fdroidserver/import.py #, python-format msgid "This repo already has local metadata: %s" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py msgid "" "To use awsbucket, awssecretkey and awsaccesskeyid must also be set in config." "py!" msgstr "" #: ../fdroidserver/lint.py msgid "UCM is set but it looks like checkupdates hasn't been run yet" msgstr "" #: ../fdroidserver/lint.py msgid "URL shorteners should not be used" msgstr "" #: ../fdroidserver/metadata.py msgid "URL title is just the URL, use brackets: [URL]" msgstr "" #: ../fdroidserver/lint.py #, python-brace-format msgid "URL {url} in Description: {error}" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Unexpected text on same line as {field} in {linedesc}" msgstr "" #: ../fdroid msgid "Unknown exception found!" msgstr "Eccezione sconosciuta trovata!" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vname #: ../fdroidserver/lint.py #, python-brace-format msgid "Unknown file '{filename}' in build '{versionName}'" msgstr "" #: ../fdroidserver/metadata.py #, python-format msgid "Unknown metadata format: %s" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Unknown metadata format: {path}" msgstr "" #: ../fdroidserver/common.py msgid "Unknown version of aapt, might cause problems: " msgstr "" #: ../fdroidserver/lint.py msgid "Unlinkified link - use [http://foo.bar Link title] or [http://foo.bar]" msgstr "" #: ../fdroidserver/lint.py msgid "Unnecessary leading space" msgstr "" #: ../fdroidserver/lint.py msgid "Unnecessary trailing space" msgstr "" #: ../fdroidserver/metadata.py msgid "Unrecognised app field: " msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Unrecognised field '{field}' in {linedesc}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Unsupported file type \"{extension}\" for repo graphic" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Unsupported graphics file found: {path}" msgstr "" #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Unsupported metadata format, use: --to [{supported}]" msgstr "" #: ../fdroidserver/metadata.py msgid "Unterminated ]" msgstr "" #: ../fdroidserver/metadata.py msgid "Unterminated ]]" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Unterminated build in {name}" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Unterminated continuation in {name}" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Unused extlib at %s" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Unused file at %s" msgstr "" #: ../fdroidserver/lint.py msgid "Update Check Name is set to the known app id - it can be removed" msgstr "" #: ../fdroid msgid "Update repo information for new packages" msgstr "Aggiorna le informazioni del repository coi nuovi pacchetti" #: ../fdroid msgid "Update the binary transparency log for a URL" msgstr "Aggiorna il log di trasparenza binario con un nuovo URL" #: ../fdroid msgid "Update the stats of the repo" msgstr "Aggiorna le statistiche del repo" #: ../fdroidserver/update.py ../fdroidserver/build.py msgid "Update the wiki" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "Usage" msgstr "Utilizzo" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "Usage: %s\n" msgstr "Utilizzo: %s\n" #: ../fdroidserver/lint.py msgid "Use /HEAD instead of /master to point at a file in the default branch" msgstr "" #: ../fdroidserver/update.py msgid "Use `fdroid update -c` to create it." msgstr "" #: ../fdroidserver/build.py msgid "Use build server" msgstr "" #: ../fdroidserver/update.py msgid "Use date from APK instead of current time for newly added APKs" msgstr "" msgid "Use date from apk instead of current time for newly added apks" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Using \"{path}\" for configuring s3cmd." msgstr "" #: ../fdroidserver/common.py msgid "" "Using Java's jarsigner, not recommended for verifying APKs! Use apksigner" msgstr "" #: ../fdroidserver/init.py #, python-brace-format msgid "Using existing keystore \"{path}\"" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Using s3cmd to sync with: {url}" msgstr "" #: ../fdroid msgid "Valid commands are:" msgstr "I comandi validi sono:" #: ../fdroid msgid "Verify the integrity of downloaded packages" msgstr "Verifica l'integrità dei pacchetti scaricati" #: ../fdroidserver/index.py msgid "Verifying index signature:" msgstr "" #: ../fdroid msgid "Warn about possible metadata errors" msgstr "Avvisa riguardo possibili errori metadata" #: ../fdroidserver/update.py msgid "" "When configured for signed indexes, create only unsigned indexes at this " "stage" msgstr "" msgid "X.509 'Distiguished Name' used when generating keys" msgstr "" #: ../fdroidserver/init.py msgid "X.509 'Distinguished Name' used when generating keys" msgstr "" #: ../fdroidserver/common.py msgid "You can use ANDROID_HOME to set the path to your SDK, i.e.:" msgstr "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "adding IdentityFile to {path}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "adding to {name}: {path}" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "ambiguous option: %(option)s could match %(matches)s" msgstr "opzione ambigua: %(option)s potrebbe corrispondere a %(matches)s" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "ambiguous option: %s (%s?)" msgstr "opzione ambigua: %s (%s?)" #: ../fdroidserver/lint.py ../fdroidserver/rewritemeta.py msgid "applicationId in the form APPID" msgstr "" #: ../fdroidserver/checkupdates.py msgid "applicationId to check for updates" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/verify.py ../fdroidserver/publish.py #: ../fdroidserver/dscanner.py ../fdroidserver/build.py #: ../fdroidserver/scanner.py ../fdroidserver/install.py msgid "applicationId with optional versionCode in the form APPID[:VERCODE]" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "argument \"-\" with mode %r" msgstr "" #: ../fdroidserver/nightly.py msgid "attempting bare ssh connection to test deploy key:" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "can't open '%s': %s" msgstr "impossibile aprire \"%s\": %s" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "cannot have multiple subparser arguments" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "cannot merge actions - two groups are named %r" msgstr "" #: ../fdroidserver/nightly.py msgid "cannot publish update, did you set the deploy key?" msgstr "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "cloning {url}" msgstr "" #: ../fdroidserver/server.py msgid "command to execute, either 'init' or 'update'" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "complex" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "conflicting option string: %s" msgid_plural "conflicting option strings: %s" msgstr[0] "" msgstr[1] "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "copying {apkfilename} into {path}" msgstr "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "created {path}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "deleting: repo/{apkfilename}" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "dest= is required for options like %r" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "expected %s argument" msgid_plural "expected %s arguments" msgstr[0] "" msgstr[1] "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "expected at least one argument" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "expected at most one argument" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "expected one argument" msgstr "" #: ../fdroid msgid "fdroid [-h|--help|--version] []" msgstr "" #: ../fdroid msgid "fdroid [] [-h|--help|--version|]" msgstr "fdroid [] [-h|--help|--version|]" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "floating-point" msgstr "" #: ../fdroidserver/metadata.py msgid "force errors to be warnings, or ignore" msgstr "forza gli errori ad essere avvisi, o ignora" #: ../fdroidserver/metadata.py msgid "force metadata errors (default) to be warnings, or to be ignored." msgstr "forza gli errori di metadati (predefinito) come avvisi, o da ignorare." #: ../fdroidserver/common.py msgid "git svn clone failed" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "ignored explicit argument %r" msgstr "" #: ../fdroidserver/index.py msgid "index-v1 must have a signature, use `fdroid signindex` to create it!" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "integer" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "invalid %(type)s value: %(value)r" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "invalid choice: %(value)r (choose from %(choices)s)" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "invalid conflict_resolution value: %r" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "" "invalid option string %(option)r: must start with a character " "%(prefix_chars)r" msgstr "" #: ../fdroidserver/server.py #, python-brace-format msgid "" "local_copy_dir does not end with \"fdroid\", perhaps you meant: \"{path}\"" msgstr "" #: ../fdroidserver/server.py msgid "local_copy_dir must be an absolute path!" msgstr "" #: ../fdroidserver/server.py msgid "local_copy_dir must be directory, not a file!" msgstr "local_copy_dir deve essere una cartella, non un file!" #: ../fdroidserver/index.py #, python-format msgid "mirror '%s' does not end with 'fdroid'!" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "mutually exclusive arguments must be optional" msgstr "" #: ../fdroidserver/mirror.py #, python-brace-format msgid "no \"icon\" in {appid}" msgstr "" #: ../fdroidserver/signatures.py msgid "no APK supplied" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "no such option: %s" msgstr "opzione inesistente: %s" #: ../fdroid msgid "no version info found!" msgstr "nessuna informazione sulla versione è stata trovata!" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "not allowed with argument %s" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "one of the arguments %s is required" msgstr "" #: ../fdroidserver/index.py ../fdroidserver/common.py msgid "only accepts strings, lists, and tuples" msgstr "" #: ../fdroidserver/install.py #, python-format msgid "option %s: If you really want to install all the signed apps, use --all" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "option %s: invalid %s value: %r" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "option %s: invalid choice: %r (choose from %s)" msgstr "" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option -%s not recognized" msgstr "opzione -%s non riconosciuta" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option -%s requires argument" msgstr "l'opzione -%s richiede degli argomenti" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option --%s must not have an argument" msgstr "l'opzione --%s non deve avere argomenti" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option --%s not a unique prefix" msgstr "l'opzione --%s non ha un prefisso univoco" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option --%s not recognized" msgstr "opzione --%s non riconosciuta" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option --%s requires argument" msgstr "l'opzione --%s richiede un argomento" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "optional arguments" msgstr "argomenti facoltativi" #: ../fdroidserver/nightly.py #, python-brace-format msgid "overwriting existing {path}" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "positional arguments" msgstr "argomenti posizionali" #: ../fdroidserver/signatures.py #, python-brace-format msgid "" "refuse downloading via insecure HTTP connection (use HTTPS or specify --no-" "https-check): {apkfilename}" msgstr "" #: ../fdroidserver/signatures.py #, python-brace-format msgid "" "refuse downloading via insecure http connection (use https or specify --no-" "https-check): {apkfilename}" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "s3cmd sync indexes {path} to {url} and delete" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "show program's version number and exit" msgstr "mostra il numero di versione del programma ed esci" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.5/optparse.py #: /usr/lib/python3.6/argparse.py /usr/lib/python3.6/optparse.py msgid "show this help message and exit" msgstr "mostra questo messaggio di aiuto ed esci" #: ../fdroidserver/signatures.py msgid "signed APK, either a file-path or HTTPS URL." msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "skipping source tarball: {path}" msgstr "" #: ../fdroidserver/lint.py msgid "srclibs missing name and/or @" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "the following arguments are required: %s" msgstr "i seguenti argomenti sono obbligatori: %s" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "unexpected option string: %s" msgstr "stringa di opzioni inaspettata: %s" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "unknown parser %(parser_name)r (choices: %(choices)s)" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "unrecognized arguments: %s" msgstr "argomenti sconosciuti: %s" #: ../fdroidserver/common.py #, python-brace-format msgid "unsafe permissions on '{config_file}' (should be 0600)!" msgstr "permessi su \"{config_file}\" insicuri (dovrebbero essere 0600)!" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py ../fdroid msgid "usage: " msgstr "utilizzo: " #: ../fdroid msgid "usage: fdroid [-h|--help|--version] []" msgstr "utilizzo: fdroid [-h|--help|--version] []" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "using Apache libcloud to sync with {url}" msgstr "" #: ../fdroidserver/publish.py #, python-brace-format msgid "{0} app, {1} key aliases" msgid_plural "{0} apps, {1} key aliases" msgstr[0] "" msgstr[1] "" #: ../fdroidserver/update.py #, python-brace-format msgid "{apkfilename} ({appid}) has no metadata!" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "{apkfilename} has multiple {name} files, looks like Master Key exploit!" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "{apkfilename}'s AndroidManifest.xml has a bad date: " msgstr "L'AndroidManifest.xml di {apkfilename} ha una data non corretta: " #: ../fdroidserver/update.py #, python-brace-format msgid "{appid} does not have a name! Using package name instead." msgstr "" #: ../fdroidserver/mirror.py #, python-brace-format msgid "{appid} is missing {name}" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vname #: ../fdroidserver/lint.py #, python-brace-format msgid "{appid}: Unknown extlib {path} in build '{versionName}'" msgstr "" #: ../fdroidserver/scanner.py #, python-brace-format msgid "{appid}: no builds specified, running on current source state" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "{field} not terminated in {name}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "{name} \"{path}\" does not exist! Correct it in config.py." msgstr "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "{path} does not exist! Create it by running:" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "{path} has bad file signature \"{pattern}\", possible Janus exploit!" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "{path} is zero size!" msgstr "" #: ../fdroidserver/mirror.py #, python-brace-format msgid "{url} does not end with \"fdroid\", check the URL path!" msgstr "" #: ../fdroidserver/build.py msgid "{} build failed" msgid_plural "{} builds failed" msgstr[0] "" msgstr[1] "" #: ../fdroidserver/build.py msgid "{} build succeeded" msgid_plural "{} builds succeeded" msgstr[0] "" msgstr[1] "" fdroidserver-1.0.9/locale/pt_BR/0000775000175000017500000000000013324115531016370 5ustar hanshans00000000000000fdroidserver-1.0.9/locale/pt_BR/LC_MESSAGES/0000775000175000017500000000000013324115531020155 5ustar hanshans00000000000000fdroidserver-1.0.9/locale/pt_BR/LC_MESSAGES/fdroidserver.mo0000664000175000017500000013421713324115526023224 0ustar hanshans00000000000000L|)}7$-+2+^9^#:Xjz!!"&';1c"AD.? On  E + !L!Fd!!!!3!*"*?":j""-"R"$F#6k#9##)#-$1K$}$*$$/$[%9t%5%% &C!&-e&[&*&V'%q' '''+'=(V(m(!(U(#)6$)%[)4)#))))*"1*$T*!y*!**;*'+/:+j+(++++-,/,2L,4,6,,* - 4-FU-=----:(.c.U..(./A7/!y/H/"/ 0v(0,00/0)1 E1f171111!2&82._2.2322 3.+34Z33333d3*E49p4!4(4)435-S5-55'5566*6E6V6p6(6#6+67>%7d7)|7!77&7"82#8 V8b8*w8'88J8B+9n99#9979&:::CY:I:!: ;N$;9s;$;!;;<0<+I<%u<<<<<3=<=S=o=0=.=@=&><>*[>'>>1>%> ?(?C?7_?1?1?*?;&@*b@#@@@-@A$A:DA:A7A&A-BGBdB=B,BB CC7C/JC zCCC*C(D)D:D$YD~D-DPD Ed6EE7EEUF4^F:F&FFG3GGG!gG-GG,G!G*H8HH2HH H,H I&AIBhIBI#I*J==J0{J%J.JK%K*BK7mK3K5K<L.LL){L*L-L#L9"M*\MfM/M?N$^N=N,N-N8O6UO1O(OPO=8P!vP.P!P5PQ28QkQQ/QFQR8RSR*lR4R'R4R)S8SHS#eSSS@S(S,TFTcTsT yTET$TT>U>?U%~UIU UV/V+CVoV#VNV3V41W;fWWW4WX)X"IXClXX2XX(Y.:Y2iY Y-YY<Y!Z?ZNZ%kZ*ZZZZ/[/?[o[&~[A[[[D\^\!f\3\%\N\F1](x]-]']-]%^:^J^]^t^#^'^G^%_.E_t__%___ `*`=`Y`fn`f`-w+Ew!qww)w"w$w!x!8xZx;sx=x<x*y(Iyryyy-yy2 z4?z6tzz*z zF{=\{{5{F{77|ao|8|( }73}Ak}!}H}"~3;~vo~,~/2)b 7!A!`&..؀3;"V.y4݁3.*9!$(F7o3-ۃ- 7*LwЄ(#@+d>4)<f&w-H̆ !*6'aJB-G#]7&҈CI\!'ȉN9?*y2׊+,%X~<ы36R0h.@Ȍ *>'i1%׍  &7B1z1*ގ; +E<qCҏ3]S]C2SB-ɑ,=$,b%Ғ?'>f@;'0)X-PȔ r:?ƕ3Y:4Mɖ$)<(f1×-#5:%p*82- K,l &CC%(i2LŚ0%C.i%DٛH=gHH>7)v--Ν#9 *Zj/V $w@,ݟ- 886q1(ڠP=T!.!5+;2g)/FWq*4У'4-bq#¤֤@<)<f*ΥߥE$2WQuQǦ%I? ʧ,*-[X26;Zx=ϩ2@;|2ɪ(.2= p.~<!#%@*fά//D(SS|ЭDG!O3q%NˮF(a-'-#3-Lz#'G+.K z$#  %F[wff-\"%,ӳ ->)l5 ̴<*40(e2(G429g7= 18R-B5 G&h SSH Public Key to be used as Deploy Key: {path} encoded for the DEBUG_KEYSTORE secret variable:"%s/" has no matching metadata file!"{path}" contains outdated {name} ({version})"{path}" contains recent {name} ({version})"{path}" exists but s3cmd is not installed!"{path}" is not an accepted format, convert to: {formats}%(option)s option requires %(number)d argument%(option)s option requires %(number)d arguments%(prog)s [options] url%(prog)s: error: %(message)s %d problems found%prog [options]%r is not callable%s is not an accepted build field%s option does not take a value'keypass' not found in config.py!'keystore' not found in config.py!'keystorepass' not found in config.py!'repo_keyalias' not found in config.py!'required' is an invalid argument for positionals'sdk_path' not set in 'config.py'!'{aapt}' is too old, fdroid requires build-tools-23.0.0 or newer!'{aapt}' is too old, fdroid requires build-tools-{version} or newer!'{apkfilename}' is already installed on {dev}.'{field}' will be in random order! Use () or [] brackets if order is important!'{path}' failed to execute!'{value}' is not a valid {field} in {appid}. Regex pattern: {pattern}...checkupdate failed for {appid} : {error}.__call__() not defined.fdroid.txt is not supported! Convert to .fdroid.yml or .fdroid.json./issues is missingA URL is required as an argument!Add PGP signatures using GnuPG for packages in repoAdd a new application from its source codeAdd a repo signing key to an unsigned repoAdd skeleton metadata files for APKs that are missing themAdding new repo for only {name}Alias of the repo signing key in the keystoreAllows a different revision (or git branch) to be specified for the initial importAlso mirror the full archive sectionAlso warn about formatting issues, like rewritemeta -lAndroid SDK '{path}' does not have '{dirname}' installed!Android SDK not found!Android SDK path '{path}' does not exist!Android SDK path '{path}' is not a directory!Android build-tools path '{path}' does not exist!AndroidManifest.xml has no dateApp is in '{repo}' but has a link to {url}Appending .git is not necessaryArchiving {apkfilename} with invalid signature!Base URL to mirror, can include the index signing key using the query string: ?fingerprint=Branch '{branch}' used as commit in build '{versionName}'Branch '{branch}' used as commit in srclib '{srclib}'Build a package from sourceBuild all applications availableBuild generated by `fdroid import` - remove disable line once readyBuild only the latest version of each packageBuild should have comma-separated versionName and versionCode, not "{value}", in {linedesc}Built repo based in "%s" with this config:Can't build due to {} error while scanningCan't build due to {} errors while scanningCannot find a packageName for {path}!Cannot find an appid for {path}!Cannot read "{path}"!Cannot resolve app id {appid}Cannot use --list and --to at the same timeCannot write "{path}", not an accepted format, use: {formats}Categories are not setCategory '%s' is not validCheck for updates to applicationsChecking archiving for {appid} - apks:{integer}, keepversions:{keep}, archapks:{arch}Clean after all scans have finishedClean before the scans start and rebuild the containerClean up all containers and then exitClean update - don't uses caches, reprocess all APKsComma separated list of categories.Command '%s' not recognised. Commit changesCould not find '{command}' on your systemCould not find {path} to remove itCould not open apk file for analysisCouldn't find latest version codeCouldn't find latest version nameCouldn't find package IDCowardily refusing to overwrite existing signing key setup!Create a repo signing key in a keystoreCreate skeleton metadata files that are missingCreated new container "{name}"Creating "{path}" for configuring s3cmd.Creating log directoryCreating new S3 bucket: {url}Creating output directoryCreating signed index with this key (SHA256):Creating temporary directoryCreating unsigned index in preparation for signingDEBUG_KEYSTORE is not set or the value is incompleteDelete APKs and/or OBBs without metadata from the repoDeleting unknown file: {path}Description '%s' is just the app's summaryDescription has a duplicate lineDescription has a list (%s) but it isn't bulleted (*) nor numbered (#)Description of length {length} is over the {limit} char limitDo not include "{path}" in URL!Do not prompt for Android SDK path, just failDon't create a source tarball, useful when testing a buildDon't do anything logs-relatedDon't refresh the repository, useful when testing a build with no internet connectionDon't use rsync checksumsDownload complete mirrors of small reposDownload logs we don't haveDownloading the repository already failed once, not trying again.Downloading {url} failed. {error}Duplicate build recipe found for versionCode {versionCode} in {linedesc}Duplicate link in '{field}': {url}Dynamically scan APKs post buildERROR: this command should never be used to mirror f-droid.org! A full mirror of f-droid.org requires more than 200GB.ERROR: unsupported CI type, patches welcome!Empty build flag at {linedesc}Enter the path to the Android SDK (%s) here: > Error while attempting to publish log: %sError while getting repo addressExtract signatures from APKsFailed fetching signatures for '{apkfilename}': {error}Failed reading {path}: {error}Failed resizing {path}: {error}Failed to align applicationFailed to create S3 bucket: {url}Failed to get APK manifest informationFailed to get apk information, deleting {path}Failed to get apk information, skipping {path}Failed to install '{apkfilename}' on {dev}: {error}Failed to sign applicationFailed to zipalign applicationFetched buildserverid from VM: {buildserverid}Fetched signatures for '{apkfilename}' -> '{sigdir}'FinishedFlattr donation methods belong in the FlattrID flagForbidden HTML tagsForce build of disabled apps, and carries on regardless of scan problems. Only allowed in test mode.Force halting build after {0} sec timeout!Found "{path}" graphic without metadata for app "{name}"!Found invalid appids in argumentsFound invalid versionCodes for some appsFound multiple metadata files for {appid}Found multiple signing certificates for repository.Found multiple signing certificates in {path}Found no signing certificates for repository.Found non-file at %sGenerated skeleton metadata for {appid}Git checkout of '%s' failedGit clean failedGit fetch failedGit remote set-head failedGit reset failedGit submodule sync failedGit submodule update failedHTTPS must be used with Subversion URLs!Ignoring package without metadata: Ignoring stale cache data for {apkfilename}Ignoring {ext} file at '{path}'Include APKs that are signed with disabled algorithms like MD5Initialising submodulesInstall all signed applications availableInstall built packages on devicesInstalling %s...Installing '{apkfilename}' on {dev}...Interact with the repo HTTP serverInteractively ask about things that need updating.Invalid APKInvalid boolean '%s'Invalid build flag at {line} in {linedesc}Invalid build format: {value} in {name}Invalid bulleted listInvalid license tag "%s"! Use only tags from https://spdx.org/license-listInvalid link - use [http://foo.bar Link title] or [http://foo.bar]Invalid metadata in %s:%dInvalid metadata in: Invalid name for published file: %sInvalid package name {0}Invalid versionCode: "{versionCode}" is not an integer!JAR signature failed to verify: {path}JAR signature verified: {path}Java JDK not found! Install in standard location or set java_paths!Java jarsigner not found! Install in standard location or set java_paths!Javascript in HTML src attributesKeystore for signing key: Last used commit '{commit}' looks like a tag, but Update Check Mode is '{ucm}'Liberapay donation methods belong in the LiberapayID flagList files that would be reformattedMake the build stop on exceptionsMalformed repository mirrors.Malformed serverwebroot line:Missing output directoryName '%s' is just the auto name - remove itNo 'config.py' found, using defaults.No Android SDK found!No android or kivy project could be found. Specify --subdir?No attached devices foundNo commit specified for {versionName} in {linedesc}No fingerprint in URL.No git submodules availableNo information found.No need to specify that the app is Free SoftwareNo need to specify that the app is for AndroidNo option set! Edit your config.py to set at least one of these:No packages specifiedNo signed apk available for %sNo signed output directory - nothing to doNo signing certificates found in {path}No such package: %sNo such versionCode {versionCode} for app {appid}No unsigned directory - nothing to doNothing to doNothing to do for {appid}.Now set these in config.py:OBB file has newer versionCode({integer}) than any APK:OBB filename must start with "main." or "patch.":OBB's packagename does not match a supported APK:Old APK signature failed to verify: {path}Only PNG and JPEG are supported for graphics, found: {path}Only print differences with the Play StoreOnly process apps with auto-updatesOptionsOverall license of the project.Override path for repo APKs (default: ./repo)Parsing manifest at '{path}'Password required with usernamePath to main Android project subdirectory, if not in root.Path to main android project subdirectory, if not in root.Path to the Android SDK (sometimes set in ANDROID_HOME)Path to the git repo to use as the logPath to the keystore for the repo signing keyPrepare Drozer to run a scanPrepare drozer to run a scanPrint the secret variable to the terminal for easy copy/pasteProblem with description of {appid}: {error}Problem with xml at '{path}'Process auto-updatesProcessing {apkfilename}Processing {appid}Produce human-readable XML/JSON for index filesProduce human-readable index.xmlProject URL to import from.Punctuation should be avoidedPush the log to this git remote repositoryPushing binary transparency log to {url}Pushing to {url}Quickly start a new repositoryRead all the metadata files and exitReading '{config_file}'Reading minSdkVersion failed: "{apkfilename}"Reading packageName/versionCode/versionName failed, APK invalid: '{apkfilename}'Reading {apkfilename} from cacheRecalculate aggregate stats - use when changes have been made that would invalidate old cached data.Removing specified filesRename APK files that do not match package.name_123.apkReport on build data statusReset and create a brand new build server, even if the existing one appears to be ok.Resigning {apkfilename} with provided debug.keystoreResize all the icons exceeding the max pixel size and exitRestrict output to warnings and errorsRewrite all the metadata filesRewrite to a specific format: Rewriting '{appid}'Rewriting '{appid}' to '{path}'Run rewritemeta to fix formattingRunning first pass with MD5 checking disabledRunning wget in {path}Scan only the latest version of each packageScan the source code of a packageScanner found {count} problems in {appid}:Scanner found {count} problems in {appid}:{versionCode}:Scanner found {} problemScanner found {} problemsSet clock to that time using:Set open file limit to {integer}Set up an app build for a nightly build repoSetting open file limit failed: Setting {0} sec timeout for this buildSetup an emulator, install the APK on it and perform a Drozer scanSetup an emulator, install the apk on it and perform a drozer scanSign and place packages in the repoSign indexes created using update --nosignSkip scanning the source code for binaries and other problemsSkipping '{apkfilename}' with invalid signature!Skipping index generation for {appid}Skipping {apkfilename} with invalid signature!Skipping {appid}: disabledSkipping {appid}: no builds specifiedSpecify a local folder to sync the repo toSpecify an identity file to provide to SSH for rsyncingSpecify editor to use in interactive mode. Default Specify editor to use in interactive mode. Default %sSpecify editor to use in interactive mode. Default is {path}Specify that we're running on the build serverSpecify which debug keystore file to use.Spew out even more information than normalStriping mystery signature from {apkfilename}Summary '%s' is just the app's nameSummary of length {length} is over the {limit} char limitSystem clock is older than date in {path}!Test mode - put output in the tmp directory only, and always build, even if the output already exists.The OBB version code must come after "{name}.":The base URL for the repo to log (default: https://f-droid.org)The directory to write the mirror toThe only commands currently supported are 'init' and 'update'The repository's fingerprint does not match.The repository's index could not be verified.The root dir for local_copy_dir "{path}" does not exist!The the file to be included in the repo (path or glob)There is a keyalias collision - publishing haltedThis repo already has local metadata: %sTo use awsbucket, awssecretkey and awsaccesskeyid must also be set in config.py!UCM is set but it looks like checkupdates hasn't been run yetURL shorteners should not be usedURL title is just the URL, use brackets: [URL]URL {url} in Description: {error}Unexpected text on same line as {field} in {linedesc}Unknown exception found!Unknown file '{filename}' in build '{versionName}'Unknown metadata format: %sUnknown metadata format: {path}Unknown version of aapt, might cause problems: Unlinkified link - use [http://foo.bar Link title] or [http://foo.bar]Unnecessary leading spaceUnnecessary trailing spaceUnrecognised app field: Unrecognised field '{field}' in {linedesc}Unsupported file type "{extension}" for repo graphicUnsupported graphics file found: {path}Unsupported metadata format, use: --to [{supported}]Unterminated ]Unterminated ]]Unterminated build in {name}Unterminated continuation in {name}Unused extlib at %sUnused file at %sUpdate Check Name is set to the known app id - it can be removedUpdate repo information for new packagesUpdate the binary transparency log for a URLUpdate the stats of the repoUpdate the wikiUsageUsage: %s Use /HEAD instead of /master to point at a file in the default branchUse `fdroid update -c` to create it.Use build serverUse date from APK instead of current time for newly added APKsUse date from apk instead of current time for newly added apksUsing "{path}" for configuring s3cmd.Using Java's jarsigner, not recommended for verifying APKs! Use apksignerUsing existing keystore "{path}"Using s3cmd to sync with: {url}Valid commands are:Verify the integrity of downloaded packagesVerifying index signature:Warn about possible metadata errorsWhen configured for signed indexes, create only unsigned indexes at this stageX.509 'Distiguished Name' used when generating keysX.509 'Distinguished Name' used when generating keysYou can use ANDROID_HOME to set the path to your SDK, i.e.:adding IdentityFile to {path}adding to {name}: {path}ambiguous option: %(option)s could match %(matches)sambiguous option: %s (%s?)applicationId in the form APPIDapplicationId to check for updatesapplicationId with optional versionCode in the form APPID[:VERCODE]argument "-" with mode %rattempting bare ssh connection to test deploy key:can't open '%s': %scannot have multiple subparser argumentscannot merge actions - two groups are named %rcannot publish update, did you set the deploy key?cloning {url}command to execute, either 'init' or 'update'complexconflicting option string: %sconflicting option strings: %scopying {apkfilename} into {path}created {path}deleting: repo/{apkfilename}dest= is required for options like %rexpected %s argumentexpected %s argumentsexpected at least one argumentexpected at most one argumentexpected one argumentfdroid [-h|--help|--version] []fdroid [] [-h|--help|--version|]floating-pointforce errors to be warnings, or ignoreforce metadata errors (default) to be warnings, or to be ignored.git svn clone failedignored explicit argument %rindex-v1 must have a signature, use `fdroid signindex` to create it!integerinvalid %(type)s value: %(value)rinvalid choice: %(value)r (choose from %(choices)s)invalid conflict_resolution value: %rinvalid option string %(option)r: must start with a character %(prefix_chars)rlocal_copy_dir does not end with "fdroid", perhaps you meant: "{path}"local_copy_dir must be an absolute path!local_copy_dir must be directory, not a file!mirror '%s' does not end with 'fdroid'!mutually exclusive arguments must be optionalno "icon" in {appid}no APK suppliedno such option: %sno version info found!not allowed with argument %sone of the arguments %s is requiredonly accepts strings, lists, and tuplesoption %s: If you really want to install all the signed apps, use --alloption %s: invalid %s value: %roption %s: invalid choice: %r (choose from %s)option -%s not recognizedoption -%s requires argumentoption --%s must not have an argumentoption --%s not a unique prefixoption --%s not recognizedoption --%s requires argumentoptional argumentsoverwriting existing {path}positional argumentsrefuse downloading via insecure HTTP connection (use HTTPS or specify --no-https-check): {apkfilename}refuse downloading via insecure http connection (use https or specify --no-https-check): {apkfilename}s3cmd sync indexes {path} to {url} and deleteshow program's version number and exitshow this help message and exitsigned APK, either a file-path or HTTPS URL.skipping source tarball: {path}srclibs missing name and/or @the following arguments are required: %sunexpected option string: %sunknown parser %(parser_name)r (choices: %(choices)s)unrecognized arguments: %sunsafe permissions on '{config_file}' (should be 0600)!usage: usage: fdroid [-h|--help|--version] []using Apache libcloud to sync with {url}{0} app, {1} key aliases{0} apps, {1} key aliases{apkfilename} ({appid}) has no metadata!{apkfilename} has multiple {name} files, looks like Master Key exploit!{apkfilename}'s AndroidManifest.xml has a bad date: {appid} does not have a name! Using package name instead.{appid} is missing {name}{appid}: Unknown extlib {path} in build '{versionName}'{appid}: no builds specified, running on current source state{field} not terminated in {name}{name} "{path}" does not exist! Correct it in config.py.{path} does not exist! Create it by running:{path} has bad file signature "{pattern}", possible Janus exploit!{path} is zero size!{url} does not end with "fdroid", check the URL path!{} build failed{} builds failed{} build succeeded{} builds succeededProject-Id-Version: fdroidserver 0.9 Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues POT-Creation-Date: 2018-02-13 09:01+0100 PO-Revision-Date: 2018-03-19 21:47+0000 Last-Translator: Lucas Couri Trevizan Language-Team: Portuguese (Brazil) Plural-Forms: nplurals=2; plural=n > 1 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Generated-By: Babel 1.3 Chave pública SSH para ser usada como chave de implantar: {path} codificado para a variável secreta DEBUG_KEYSTORE:"%s/" não tem arquivo de metadados correspondente!"{path}" contém {name} ({version}) desatualizado"{path}" contém {name} ({version}) recente"{path}" existe, mas s3cmd não está instalado!"{path}" não é um formato aceito, converter para: {formats}opção %(option)s necessita %(number)d argumentoopção %(option)s necessita %(number)d argumentos%(prog)s [opções] url%(prog)s: erro: %(message)s %d problemas encontrados%prog [opções]%r não é chamável%s não é um campo criado aceitoopção %s não leva um valor'keypass' não foi encontrada em config.py!'keystore' não encontrada em config.py!'keystorepass' não encontrada em config.py!'repo_keyalias' não encontrada em config.py!'required' é um argumento inválido para posicionadores'sdk_path' não definido em 'config.py'!'{aapt}' é muito antigo, fdroid requer build-tools-23.0.0 ou mais recente!'{aapt}' é muito antigo, fdroid requer build-tools-{version} ou mais recente!'{apkfilename}' já está instalado no {dev}.'{field}' será em ordem aleatória! Use () ou [] se a ordem for importante!'{path}' falhou ao executar!'{value}' não é um{field} válido em {appid}. Regex padrão: {pattern}...checkupdate falhou para {appid} : {error}.__ligação__() não definida.fdroid.txt não é suportado! Converter para .fdroid.yml ou .fdroid.json.está faltando o /issuesUma URL é necessária como um argumento!Adicione assinaturas PGP usando GnuPG para os pacotes no repositórioAdicione um novo aplicativo a partir do seu código fonteAdicionar uma chave de assinatura para um repositório não assinadoAdicionar arquivos de metadados de esqueleto para APKs que estão faltando-lhesAdicionando novo repositório para apenas {name}Alias (apelido) da chave de assinatura do repositório na keystorePermite que uma revisão diferente (ou árvore do git) seja especificada para a importação inicialTambém espelhar o arquivo completo da seçãoTambém avisar sobre problemas de formatação, como rewritemeta -lO SDK Android '{path}' não tem '{dirname}' instalado!SDK do Android não foi encontrado!O caminho do SDK Android '{path}' não existe!O caminho do SDK Android '{path}' não é um diretório!Caminho de build-tools do Android '{path}' não existe!AndroidManifest.xml não tem dataO App está em '{repo}' mas tem um link para {url}Acrescentar .git não é necessárioArquivamento {apkfilename} com assinatura inválida!Base URL to mirror, can include the index signing key using the query string: ?fingerprint=Branch '{branch}' used as commit in build '{versionName}'Branch '{branch}' used as commit in srclib '{srclib}'Compilar um pacote a partir do código fonteCompilar todos aplicativos disponíveisBuild generated by `fdroid import` - remove disable line once readyCompilar apenas a última versão de cada pacoteBuild should have comma-separated versionName and versionCode, not "{value}", in {linedesc}Built repo based in "%s" with this config:Can't build due to {} error while scanningCan't build due to {} errors while scanningCannot find a packageName for {path}!Cannot find an appid for {path}!Cannot read "{path}"!Cannot resolve app id {appid}Cannot use --list and --to at the same timeCannot write "{path}", not an accepted format, use: {formats}Categories are not setCategory '%s' is not validVerifique se existem atualizações para os aplicativosChecking archiving for {appid} - apks:{integer}, keepversions:{keep}, archapks:{arch}Limpar depois que todos os escaneamentos terminaremLimpar antes do escanemento começar e recompilar o containerLimpar todos os containers e então sairAtualização limpa - não usa cache, reprocessa todos os APKsLista de categorias separadas por vírgula.Comando '%s' não é reconhecido Enviar mudançasCould not find '{command}' on your systemCould not find {path} to remove itCould not open apk file for analysisCouldn't find latest version codeCouldn't find latest version nameCouldn't find package IDCowardily refusing to overwrite existing signing key setup!Criar uma chave de assinatura do repositório em uma keystoreCriar as bases dos arquivos de metadados que estão faltandoCreated new container "{name}"Creating "{path}" for configuring s3cmd.Creating log directoryCreating new S3 bucket: {url}Creating output directoryCreating signed index with this key (SHA256):Creating temporary directoryCreating unsigned index in preparation for signingDEBUG_KEYSTORE is not set or the value is incompleteApagar os APKs e/ou OBBs sem metadados do repositórioDeleting unknown file: {path}Description '%s' is just the app's summaryDescription has a duplicate lineDescription has a list (%s) but it isn't bulleted (*) nor numbered (#)Description of length {length} is over the {limit} char limitDo not include "{path}" in URL!Não solicitar o caminho do Android SDK, apenas falheNão criar um tarball da fonte; útil quando testando uma compilaçãoNão fazer nada relacionado a registros de alteraçõesNão atualizar o repositório; útil quando testando uma compilação sem conexão com a internetNão usar as somas de verificação (checksums) do rsyncDownload complete mirrors of small reposBaixar os registros de alterações que nós não temosDownloading the repository already failed once, not trying again.Downloading {url} failed. {error}Duplicate build recipe found for versionCode {versionCode} in {linedesc}Duplicate link in '{field}': {url}Escanear dinamicamente os APKs após a compilaçãoERROR: this command should never be used to mirror f-droid.org! A full mirror of f-droid.org requires more than 200GB.ERROR: unsupported CI type, patches welcome!Empty build flag at {linedesc}Enter the path to the Android SDK (%s) here: > Error while attempting to publish log: %sError while getting repo addressExtract signatures from APKsFailed fetching signatures for '{apkfilename}': {error}Failed reading {path}: {error}Failed resizing {path}: {error}Falha ao alinhar a aplicaçãoFailed to create S3 bucket: {url}Failed to get APK manifest informationFailed to get apk information, deleting {path}Failed to get apk information, skipping {path}Failed to install '{apkfilename}' on {dev}: {error}Failed to sign applicationFalha no zipaligning do aplicativoFetched buildserverid from VM: {buildserverid}Fetched signatures for '{apkfilename}' -> '{sigdir}'FinishedFlattr donation methods belong in the FlattrID flagForbidden HTML tagsForçar a compilação de aplicativos desativados e continuar independentemente de problemas de escaneamento. Apenas permitido no modo de teste.Force halting build after {0} sec timeout!Found "{path}" graphic without metadata for app "{name}"!Found invalid appids in argumentsFound invalid versionCodes for some appsEncontrados vários ficheiros de metadados para {appid}Found multiple signing certificates for repository.Found multiple signing certificates in {path}Found no signing certificates for repository.Found non-file at %sGerado esqueleto de metadados para {appid}Git checkout of '%s' failedGit clean failedGit fetch failedGit remote set-head failedGit reset failedGit submodule sync failedGit submodule update failedHTTPS must be used with Subversion URLs!Ignoring package without metadata: Ignoring stale cache data for {apkfilename}Ignoring {ext} file at '{path}'Include APKs that are signed with disabled algorithms like MD5Initialising submodulesInstalar todos os aplicativos assinados disponíveisInstalar pacotes prontos nos dispositivosInstalling %s...Installing '{apkfilename}' on {dev}...Interagir com o servidor HTTP do repositórioPerguntar interativamente sobre elementos que precisam de atualização.Invalid APKInvalid boolean '%s'Invalid build flag at {line} in {linedesc}Invalid build format: {value} in {name}Invalid bulleted listInvalid license tag "%s"! Use only tags from https://spdx.org/license-listInvalid link - use [http://foo.bar Link title] or [http://foo.bar]Invalid metadata in %s:%dInvalid metadata in: Invalid name for published file: %sInvalid package name {0}Invalid versionCode: "{versionCode}" is not an integer!JAR signature failed to verify: {path}JAR signature verified: {path}Java JDK not found! Install in standard location or set java_paths!Java jarsigner not found! Install in standard location or set java_paths!Javascript in HTML src attributesArmazenamento de chaves de assinatura: Last used commit '{commit}' looks like a tag, but Update Check Mode is '{ucm}'Liberapay donation methods belong in the LiberapayID flagListar arquivos que devem ser reformatadosFazer a compilação parar se encontrar exceçõesMalformed repository mirrors.Malformed serverwebroot line:Missing output directoryName '%s' is just the auto name - remove itNo 'config.py' found, using defaults.No Android SDK found!No android or kivy project could be found. Specify --subdir?No attached devices foundNo commit specified for {versionName} in {linedesc}No fingerprint in URL.No git submodules availableNo information found.No need to specify that the app is Free SoftwareNo need to specify that the app is for AndroidNo option set! Edit your config.py to set at least one of these:No packages specifiedNo signed apk available for %sNo signed output directory - nothing to doNo signing certificates found in {path}No such package: %sNo such versionCode {versionCode} for app {appid}No unsigned directory - nothing to doNothing to doNothing to do for {appid}.Now set these in config.py:OBB file has newer versionCode({integer}) than any APK:OBB filename must start with "main." or "patch.":OBB's packagename does not match a supported APK:Old APK signature failed to verify: {path}Only PNG and JPEG are supported for graphics, found: {path}Apenas mostrar diferenças com a Play StoreProcessar apenas aplicativos com atualizações automáticasOpçõesLicença geral do projeto.Substituir o caminho para os APKs do repositório (padrão: ./repo)Parsing manifest at '{path}'Password required with usernameCaminho para os principais subdiretórios do projeto android, se não estiver na raiz (root).Caminho para os principais subdiretórios do projeto android, se não estiver na raiz (root).Caminho até o Android SDK (algumas vezes definido em ANDROID_HOME)Caminho para o repositório git para usar como logCaminho até a keystore para a chave de assinatura do repositórioPreparar o Drozer para executar uma varreduraPreparar o Drozer para fazer um escaneamentoPrint the secret variable to the terminal for easy copy/pasteProblem with description of {appid}: {error}Problem with xml at '{path}'Processar atualizações automáticasProcessing {apkfilename}Processing {appid}Produzir XML/JSON legível por humanos para arquivos de índiceGerar um index.xml legível por humanosURL do projeto para importar.Punctuation should be avoidedMandar o registro de mudanças para este repositório git remotoAtualizar o log de transparência de um binário para {url}Pushing to {url}Rapidamente comece um novo repositórioLer todos os arquivos de metadados e sairReading '{config_file}'Reading minSdkVersion failed: "{apkfilename}"Reading packageName/versionCode/versionName failed, APK invalid: '{apkfilename}'Reading {apkfilename} from cacheRecalcular estatísticas agregadas - use quando foram feitas alterações que invalidariam os dados cache antigos.Removing specified filesRenomear arquivos APK que não são do tipo pacote.nome_123.apkRelatório sobre o status dos dados de compilaçãoRedefinir e criar um novo servidor de compilação, mesmo que o existente parecer normal.Resigning {apkfilename} with provided debug.keystoreRedimensionar todos os ícones que excedam o tamanho máximo de pixels e sairRestringir a saída a erros e avisosReescrever todos os arquivos de metadadosReescrever para um formato específico: Rewriting '{appid}'Rewriting '{appid}' to '{path}'Executar rewritemeta para corrigir a formataçãoRunning first pass with MD5 checking disabledRunning wget in {path}Escanear apenas a versão mais recente de cada pacoteEscanear o código fonte de um pacoteScanner found {count} problems in {appid}:Scanner found {count} problems in {appid}:{versionCode}:Scanner found {} problemScanner found {} problemsSet clock to that time using:Set open file limit to {integer}Set up an app build for a nightly build repoSetting open file limit failed: Setting {0} sec timeout for this buildConfigurar um emulador, instalar o apk nele e escanear com o DrozerConfigurar um emulador, instalar o apk nele e escanear com o drozerAssine e coloque pacotes no repositórioAssinar os índices criados usando update --nosignPular o escaneamento do código fonte atrás de binários e outros problemasSkipping '{apkfilename}' with invalid signature!Skipping index generation for {appid}Skipping {apkfilename} with invalid signature!Skipping {appid}: disabledSkipping {appid}: no builds specifiedEspecifique uma pasta local para ser sincronizada com o repositórioEspecifique um arquivo identidade para fornecer ao SSH para usar o rsyncEspecifique o editor a ser usado no modo interativo. Padrão Especificar o editor que será usado no modo interativo. O padrão é %sEspecifique o editor a ser usado no modo interativo. O padrão é {path}Especificar que estamos executando no servidor de compilaçãoSpecify which debug keystore file to use.Mostrar ainda mais informações que o normalStriping mystery signature from {apkfilename}Summary '%s' is just the app's nameSummary of length {length} is over the {limit} char limitSystem clock is older than date in {path}!Modo de teste - coloque a saída apenas no diretório tmp e sempre compile, mesmo que a saída já exista.The OBB version code must come after "{name}.":O URL base para o registro de mudanças do repositório (padrão: https://f-droid.org)The directory to write the mirror toOs únicos comandos suportados atualmente são 'init' e 'update'The repository's fingerprint does not match.The repository's index could not be verified.The root dir for local_copy_dir "{path}" does not exist!The the file to be included in the repo (path or glob)There is a keyalias collision - publishing haltedThis repo already has local metadata: %sTo use awsbucket, awssecretkey and awsaccesskeyid must also be set in config.py!UCM is set but it looks like checkupdates hasn't been run yetURL shorteners should not be usedURL title is just the URL, use brackets: [URL]URL {url} in Description: {error}Unexpected text on same line as {field} in {linedesc}Uma exceção desconhecida foi encrontrada!Unknown file '{filename}' in build '{versionName}'Unknown metadata format: %sFormato de metadados desconhecido: {path}Unknown version of aapt, might cause problems: Unlinkified link - use [http://foo.bar Link title] or [http://foo.bar]Unnecessary leading spaceUnnecessary trailing spaceUnrecognised app field: Unrecognised field '{field}' in {linedesc}Unsupported file type "{extension}" for repo graphicUnsupported graphics file found: {path}Unsupported metadata format, use: --to [{supported}]Unterminated ]Unterminated ]]Unterminated build in {name}Unterminated continuation in {name}Unused extlib at %sUnused file at %sUpdate Check Name is set to the known app id - it can be removedAtualize as informações do repositório para novos pacotesAtualizar o log de transparência de um binário para um URLAtualizar as estatísticas do repositórioAtualizar a wikiUsoUso: %s Use /HEAD instead of /master to point at a file in the default branchUse `fdroid update -c` to create it.Usar servidor de compilaçãoUsar a data do apk ao invés do horário atual para APKs recentemente adicionadosUsar a data do apk ao invés do horário atual para APKs recentemente adicionadosUsing "{path}" for configuring s3cmd.Using Java's jarsigner, not recommended for verifying APKs! Use apksignerUsing existing keystore "{path}"Using s3cmd to sync with: {url}Os comandos válidos são:Verifique a integridade dos pacotes baixadosVerifying index signature:Avisar sobre possíveis erros de metadadosQuando configurado para índices assinados, crie apenas índices não assinados nesta etapaX.509 'Distiguished Name' usado ao gerar as chavesX.509 'Distiguished Name' usado na geração de chavesYou can use ANDROID_HOME to set the path to your SDK, i.e.:adding IdentityFile to {path}adding to {name}: {path}opção ambígua: %(option)s poderia corresponder %(matches)sopção ambígua: %s (%s?)applicationId, na forma APPIDapplicationId para verificar se há atualizaçõesapplicationId com versionCode opcional na forma APPID[:VERCODE]argument "-" with mode %rattempting bare ssh connection to test deploy key:não dá pra abrir '%s': %scannot have multiple subparser argumentscannot merge actions - two groups are named %rcannot publish update, did you set the deploy key?cloning {url}comando para executar, seja 'init' ou 'update'complexconflicting option string: %sconflicting option strings: %scopying {apkfilename} into {path}created {path}deleting: repo/{apkfilename}dest= is required for options like %rexpected %s argumentexpected %s argumentsexpected at least one argumentexpected at most one argumentexpected one argumentfdroid [-h|--help|--version] []fdroid [] [-h|--help|--version|]floating-pointforçar erros como avisos ou ignorá-losForçar os erros de metadados (padrão) para serem avisos, ou para serem ignorados.git svn clone failedignored explicit argument %rindex-v1 must have a signature, use `fdroid signindex` to create it!integerinvalid %(type)s value: %(value)rinvalid choice: %(value)r (choose from %(choices)s)invalid conflict_resolution value: %rinvalid option string %(option)r: must start with a character %(prefix_chars)rlocal_copy_dir does not end with "fdroid", perhaps you meant: "{path}"local_copy_dir must be an absolute path!local_copy_dir must be directory, not a file!mirror '%s' does not end with 'fdroid'!mutually exclusive arguments must be optionalno "icon" in {appid}no APK suppliednão tem tal opção: %snão há informações de versão encontrada!not allowed with argument %sone of the arguments %s is requiredonly accepts strings, lists, and tuplesoption %s: If you really want to install all the signed apps, use --alloption %s: invalid %s value: %roption %s: invalid choice: %r (choose from %s)Comando '%s' não é reconhecidoOpção -%s necessita argumentoopção --%s não pode ter argumentoopção --%s não é prefixo únicoComando --%s não é reconhecidoopção --%s necessita argumentoargumentos opcionaisoverwriting existing {path}argumentos posicionaisrefuse downloading via insecure HTTP connection (use HTTPS or specify --no-https-check): {apkfilename}refuse downloading via insecure http connection (use https or specify --no-https-check): {apkfilename}s3cmd sync indexes {path} to {url} and deletemostrar versão do programa e sairmostrar esta mensagem de ajuda e sairsigned APK, either a file-path or HTTPS URL.skipping source tarball: {path}srclibs missing name and/or @os seguintes argumentos são necessários: %sopção de cadeia de texto inesperada: %sunknown parser %(parser_name)r (choices: %(choices)s)argumentos não reconhecidos: %spermissões inseguras em '{config_file}' (deveria ser 0600)!uso: uso: fdroid [-h|--help|--version] []using Apache libcloud to sync with {url}{0} app, {1} key aliases{0} apps, {1} key aliases{apkfilename} ({appid}) has no metadata!{apkfilename} has multiple {name} files, looks like Master Key exploit!{apkfilename}'s AndroidManifest.xml has a bad date: {appid} does not have a name! Using package name instead.{appid} is missing {name}{appid}: Unknown extlib {path} in build '{versionName}'{appid}: no builds specified, running on current source state{field} not terminated in {name}{name} "{path}" does not exist! Correct it in config.py.{path} does not exist! Create it by running:{path} has bad file signature "{pattern}", possible Janus exploit!{path} is zero size!{url} does not end with "fdroid", check the URL path!{} build failed{} builds failed{} build succeeded{} builds succeededfdroidserver-1.0.9/locale/pt_BR/LC_MESSAGES/fdroidserver.po0000664000175000017500000016537013322065577023243 0ustar hanshans00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Free Software Foundation, Inc. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: fdroidserver 0.9\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" "POT-Creation-Date: 2018-02-13 09:01+0100\n" "PO-Revision-Date: 2018-03-19 21:47+0000\n" "Last-Translator: Lucas Couri Trevizan \n" "Language-Team: Portuguese (Brazil) \n" "Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" "X-Generator: Weblate 2.20-dev\n" #: ../fdroidserver/nightly.py msgid "" "\n" "SSH Public Key to be used as Deploy Key:" msgstr "" "\n" "Chave pública SSH para ser usada como chave de implantar:" #: ../fdroidserver/nightly.py #, python-brace-format msgid "" "\n" "{path} encoded for the DEBUG_KEYSTORE secret variable:" msgstr "" "\n" "{path} codificado para a variável secreta DEBUG_KEYSTORE:" #: ../fdroidserver/lint.py #, python-format msgid "\"%s/\" has no matching metadata file!" msgstr "\"%s/\" não tem arquivo de metadados correspondente!" #: ../fdroidserver/update.py #, python-brace-format msgid "\"{path}\" contains outdated {name} ({version})" msgstr "\"{path}\" contém {name} ({version}) desatualizado" #: ../fdroidserver/update.py #, python-brace-format msgid "\"{path}\" contains recent {name} ({version})" msgstr "\"{path}\" contém {name} ({version}) recente" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "\"{path}\" exists but s3cmd is not installed!" msgstr "\"{path}\" existe, mas s3cmd não está instalado!" #: ../fdroidserver/metadata.py #, python-brace-format msgid "\"{path}\" is not an accepted format, convert to: {formats}" msgstr "\"{path}\" não é um formato aceito, converter para: {formats}" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "%(option)s option requires %(number)d argument" msgid_plural "%(option)s option requires %(number)d arguments" msgstr[0] "opção %(option)s necessita %(number)d argumento" msgstr[1] "opção %(option)s necessita %(number)d argumentos" #: ../fdroidserver/mirror.py #, python-format msgid "%(prog)s [options] url" msgstr "%(prog)s [opções] url" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "%(prog)s: error: %(message)s\n" msgstr "%(prog)s: erro: %(message)s\n" #: ../fdroidserver/scanner.py #, python-format msgid "%d problems found" msgstr "%d problemas encontrados" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "%prog [options]" msgstr "%prog [opções]" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "%r is not callable" msgstr "%r não é chamável" #: ../fdroidserver/lint.py #, python-format msgid "%s is not an accepted build field" msgstr "%s não é um campo criado aceito" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "%s option does not take a value" msgstr "opção %s não leva um valor" #: ../fdroidserver/index.py ../fdroidserver/common.py msgid "'keypass' not found in config.py!" msgstr "'keypass' não foi encontrada em config.py!" #: ../fdroidserver/index.py ../fdroidserver/common.py msgid "'keystore' not found in config.py!" msgstr "'keystore' não encontrada em config.py!" #: ../fdroidserver/index.py ../fdroidserver/common.py msgid "'keystorepass' not found in config.py!" msgstr "'keystorepass' não encontrada em config.py!" #: ../fdroidserver/index.py ../fdroidserver/common.py msgid "'repo_keyalias' not found in config.py!" msgstr "'repo_keyalias' não encontrada em config.py!" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "'required' is an invalid argument for positionals" msgstr "'required' é um argumento inválido para posicionadores" #: ../fdroidserver/common.py msgid "'sdk_path' not set in 'config.py'!" msgstr "'sdk_path' não definido em 'config.py'!" #. Translators: "build-tools" is the file name of a package from #. Google, it is part of the Android SDK. So it probably shouldn't be #. translated or transliterated. #: ../fdroidserver/common.py #, python-brace-format msgid "'{aapt}' is too old, fdroid requires build-tools-23.0.0 or newer!" msgstr "" "'{aapt}' é muito antigo, fdroid requer build-tools-23.0.0 ou mais recente!" #: ../fdroidserver/common.py #, python-brace-format msgid "'{aapt}' is too old, fdroid requires build-tools-{version} or newer!" msgstr "" "'{aapt}' é muito antigo, fdroid requer build-tools-{version} ou mais recente!" #: ../fdroidserver/install.py #, python-brace-format msgid "'{apkfilename}' is already installed on {dev}." msgstr "'{apkfilename}' já está instalado no {dev}." #: ../fdroidserver/common.py #, python-brace-format msgid "" "'{field}' will be in random order! Use () or [] brackets if order is " "important!" msgstr "" "'{field}' será em ordem aleatória! Use () ou [] se a ordem for importante!" #: ../fdroidserver/common.py #, python-brace-format msgid "'{path}' failed to execute!" msgstr "'{path}' falhou ao executar!" #: ../fdroidserver/metadata.py #, python-brace-format msgid "'{value}' is not a valid {field} in {appid}. Regex pattern: {pattern}" msgstr "'{value}' não é um{field} válido em {appid}. Regex padrão: {pattern}" #: ../fdroidserver/checkupdates.py #, python-brace-format msgid "...checkupdate failed for {appid} : {error}" msgstr "...checkupdate falhou para {appid} : {error}" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid ".__call__() not defined" msgstr ".__ligação__() não definida" #: ../fdroidserver/metadata.py msgid ".fdroid.txt is not supported! Convert to .fdroid.yml or .fdroid.json." msgstr "" ".fdroid.txt não é suportado! Converter para .fdroid.yml ou .fdroid.json." #: ../fdroidserver/lint.py msgid "/issues is missing" msgstr "está faltando o /issues" #: ../fdroidserver/mirror.py msgid "A URL is required as an argument!" msgstr "Uma URL é necessária como um argumento!" #: ../fdroid msgid "Add PGP signatures using GnuPG for packages in repo" msgstr "Adicione assinaturas PGP usando GnuPG para os pacotes no repositório" #: ../fdroid msgid "Add a new application from its source code" msgstr "Adicione um novo aplicativo a partir do seu código fonte" #: ../fdroidserver/update.py msgid "Add a repo signing key to an unsigned repo" msgstr "Adicionar uma chave de assinatura para um repositório não assinado" #: ../fdroidserver/update.py msgid "Add skeleton metadata files for APKs that are missing them" msgstr "" "Adicionar arquivos de metadados de esqueleto para APKs que estão faltando-" "lhes" #: ../fdroidserver/update.py #, python-brace-format msgid "Adding new repo for only {name}" msgstr "Adicionando novo repositório para apenas {name}" #: ../fdroidserver/init.py msgid "Alias of the repo signing key in the keystore" msgstr "Alias (apelido) da chave de assinatura do repositório na keystore" #: ../fdroidserver/import.py msgid "" "Allows a different revision (or git branch) to be specified for the initial " "import" msgstr "" "Permite que uma revisão diferente (ou árvore do git) seja especificada para " "a importação inicial" #: ../fdroidserver/mirror.py msgid "Also mirror the full archive section" msgstr "Também espelhar o arquivo completo da seção" #: ../fdroidserver/lint.py msgid "Also warn about formatting issues, like rewritemeta -l" msgstr "Também avisar sobre problemas de formatação, como rewritemeta -l" #: ../fdroidserver/common.py #, python-brace-format msgid "Android SDK '{path}' does not have '{dirname}' installed!" msgstr "O SDK Android '{path}' não tem '{dirname}' instalado!" #: ../fdroidserver/common.py msgid "Android SDK not found!" msgstr "SDK do Android não foi encontrado!" #: ../fdroidserver/common.py #, python-brace-format msgid "Android SDK path '{path}' does not exist!" msgstr "O caminho do SDK Android '{path}' não existe!" #: ../fdroidserver/common.py #, python-brace-format msgid "Android SDK path '{path}' is not a directory!" msgstr "O caminho do SDK Android '{path}' não é um diretório!" #. Translators: "build-tools" is the file name of a package from #. Google, it is part of the Android SDK. So it probably shouldn't be #. translated or transliterated. #: ../fdroidserver/common.py #, python-brace-format msgid "Android build-tools path '{path}' does not exist!" msgstr "Caminho de build-tools do Android '{path}' não existe!" #: ../fdroidserver/update.py msgid "AndroidManifest.xml has no date" msgstr "AndroidManifest.xml não tem data" #: ../fdroidserver/lint.py #, python-brace-format msgid "App is in '{repo}' but has a link to {url}" msgstr "O App está em '{repo}' mas tem um link para {url}" #: ../fdroidserver/lint.py msgid "Appending .git is not necessary" msgstr "Acrescentar .git não é necessário" #: ../fdroidserver/update.py #, python-brace-format msgid "Archiving {apkfilename} with invalid signature!" msgstr "Arquivamento {apkfilename} com assinatura inválida!" #: ../fdroidserver/mirror.py msgid "" "Base URL to mirror, can include the index signing key using the query " "string: ?fingerprint=" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vname #: ../fdroidserver/lint.py #, python-brace-format msgid "Branch '{branch}' used as commit in build '{versionName}'" msgstr "" #: ../fdroidserver/lint.py #, python-brace-format msgid "Branch '{branch}' used as commit in srclib '{srclib}'" msgstr "" #: ../fdroid msgid "Build a package from source" msgstr "Compilar um pacote a partir do código fonte" #: ../fdroidserver/build.py msgid "Build all applications available" msgstr "Compilar todos aplicativos disponíveis" #: ../fdroidserver/lint.py msgid "Build generated by `fdroid import` - remove disable line once ready" msgstr "" #: ../fdroidserver/build.py msgid "Build only the latest version of each package" msgstr "Compilar apenas a última versão de cada pacote" #: ../fdroidserver/metadata.py #, python-brace-format msgid "" "Build should have comma-separated versionName and versionCode, not " "\"{value}\", in {linedesc}" msgstr "" #: ../fdroidserver/init.py #, python-format msgid "Built repo based in \"%s\" with this config:" msgstr "" #: ../fdroidserver/build.py msgid "Can't build due to {} error while scanning" msgid_plural "Can't build due to {} errors while scanning" msgstr[0] "" msgstr[1] "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Cannot find a packageName for {path}!" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Cannot find an appid for {path}!" msgstr "" #: ../fdroidserver/vmtools.py #, python-brace-format msgid "Cannot read \"{path}\"!" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Cannot resolve app id {appid}" msgstr "" #: ../fdroidserver/rewritemeta.py msgid "Cannot use --list and --to at the same time" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Cannot write \"{path}\", not an accepted format, use: {formats}" msgstr "" #: ../fdroidserver/lint.py msgid "Categories are not set" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Category '%s' is not valid" msgstr "" #: ../fdroid msgid "Check for updates to applications" msgstr "Verifique se existem atualizações para os aplicativos" #: ../fdroidserver/update.py #, python-brace-format msgid "" "Checking archiving for {appid} - apks:{integer}, keepversions:{keep}, " "archapks:{arch}" msgstr "" #: ../fdroidserver/dscanner.py msgid "Clean after all scans have finished" msgstr "Limpar depois que todos os escaneamentos terminarem" #: ../fdroidserver/dscanner.py msgid "Clean before the scans start and rebuild the container" msgstr "Limpar antes do escanemento começar e recompilar o container" #: ../fdroidserver/dscanner.py msgid "Clean up all containers and then exit" msgstr "Limpar todos os containers e então sair" #: ../fdroidserver/update.py msgid "Clean update - don't uses caches, reprocess all APKs" msgstr "Atualização limpa - não usa cache, reprocessa todos os APKs" #: ../fdroidserver/import.py msgid "Comma separated list of categories." msgstr "Lista de categorias separadas por vírgula." #: ../fdroid #, c-format, python-format msgid "Command '%s' not recognised.\n" msgstr "Comando '%s' não é reconhecido\n" #: ../fdroidserver/checkupdates.py msgid "Commit changes" msgstr "Enviar mudanças" #: ../fdroidserver/common.py #, python-brace-format msgid "Could not find '{command}' on your system" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Could not find {path} to remove it" msgstr "" #: ../fdroidserver/update.py msgid "Could not open apk file for analysis" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/import.py msgid "Couldn't find latest version code" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vname #: ../fdroidserver/import.py msgid "Couldn't find latest version name" msgstr "" #: ../fdroidserver/import.py msgid "Couldn't find package ID" msgstr "" #: ../fdroidserver/update.py msgid "Cowardily refusing to overwrite existing signing key setup!" msgstr "" #: ../fdroidserver/update.py msgid "Create a repo signing key in a keystore" msgstr "Criar uma chave de assinatura do repositório em uma keystore" #: ../fdroidserver/update.py msgid "Create skeleton metadata files that are missing" msgstr "Criar as bases dos arquivos de metadados que estão faltando" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Created new container \"{name}\"" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Creating \"{path}\" for configuring s3cmd." msgstr "" #: ../fdroidserver/publish.py msgid "Creating log directory" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Creating new S3 bucket: {url}" msgstr "" #: ../fdroidserver/publish.py msgid "Creating output directory" msgstr "" #: ../fdroidserver/index.py msgid "Creating signed index with this key (SHA256):" msgstr "" #: ../fdroidserver/import.py ../fdroidserver/verify.py #: ../fdroidserver/publish.py msgid "Creating temporary directory" msgstr "" #: ../fdroidserver/index.py msgid "Creating unsigned index in preparation for signing" msgstr "" #: ../fdroidserver/nightly.py msgid "DEBUG_KEYSTORE is not set or the value is incomplete" msgstr "" #: ../fdroidserver/update.py msgid "Delete APKs and/or OBBs without metadata from the repo" msgstr "Apagar os APKs e/ou OBBs sem metadados do repositório" #: ../fdroidserver/update.py #, python-brace-format msgid "Deleting unknown file: {path}" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Description '%s' is just the app's summary" msgstr "" #: ../fdroidserver/lint.py msgid "Description has a duplicate line" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Description has a list (%s) but it isn't bulleted (*) nor numbered (#)" msgstr "" #: ../fdroidserver/lint.py #, python-brace-format msgid "Description of length {length} is over the {limit} char limit" msgstr "" #: ../fdroidserver/mirror.py #, python-brace-format msgid "Do not include \"{path}\" in URL!" msgstr "" #: ../fdroidserver/init.py msgid "Do not prompt for Android SDK path, just fail" msgstr "Não solicitar o caminho do Android SDK, apenas falhe" #: ../fdroidserver/build.py msgid "Don't create a source tarball, useful when testing a build" msgstr "Não criar um tarball da fonte; útil quando testando uma compilação" #: ../fdroidserver/stats.py msgid "Don't do anything logs-related" msgstr "Não fazer nada relacionado a registros de alterações" #: ../fdroidserver/build.py msgid "" "Don't refresh the repository, useful when testing a build with no internet " "connection" msgstr "" "Não atualizar o repositório; útil quando testando uma compilação sem conexão " "com a internet" #: ../fdroidserver/server.py ../fdroidserver/nightly.py #: ../fdroidserver/upload.py msgid "Don't use rsync checksums" msgstr "Não usar as somas de verificação (checksums) do rsync" #: ../fdroid msgid "Download complete mirrors of small repos" msgstr "" #: ../fdroidserver/stats.py msgid "Download logs we don't have" msgstr "Baixar os registros de alterações que nós não temos" #: ../fdroidserver/common.py msgid "Downloading the repository already failed once, not trying again." msgstr "" #: ../fdroidserver/verify.py #, python-brace-format msgid "Downloading {url} failed. {error}" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "" "Duplicate build recipe found for versionCode {versionCode} in {linedesc}" msgstr "" #: ../fdroidserver/lint.py #, python-brace-format msgid "Duplicate link in '{field}': {url}" msgstr "" #: ../fdroid msgid "Dynamically scan APKs post build" msgstr "Escanear dinamicamente os APKs após a compilação" #: ../fdroidserver/mirror.py msgid "" "ERROR: this command should never be used to mirror f-droid.org!\n" "A full mirror of f-droid.org requires more than 200GB." msgstr "" #: ../fdroidserver/nightly.py msgid "ERROR: unsupported CI type, patches welcome!" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Empty build flag at {linedesc}" msgstr "" #: ../fdroidserver/init.py #, python-format msgid "" "Enter the path to the Android SDK (%s) here:\n" "> " msgstr "" #: ../fdroidserver/server.py ../fdroidserver/checkupdates.py #: ../fdroidserver/upload.py #, python-format msgid "Error while attempting to publish log: %s" msgstr "" #: ../fdroidserver/import.py msgid "Error while getting repo address" msgstr "" #: ../fdroid msgid "Extract signatures from APKs" msgstr "" #: ../fdroidserver/signatures.py #, python-brace-format msgid "Failed fetching signatures for '{apkfilename}': {error}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Failed reading {path}: {error}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Failed resizing {path}: {error}" msgstr "" #: ../fdroidserver/publish.py msgid "Failed to align application" msgstr "Falha ao alinhar a aplicação" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Failed to create S3 bucket: {url}" msgstr "" #: ../fdroidserver/common.py msgid "Failed to get APK manifest information" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Failed to get apk information, deleting {path}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Failed to get apk information, skipping {path}" msgstr "" #: ../fdroidserver/install.py #, python-brace-format msgid "Failed to install '{apkfilename}' on {dev}: {error}" msgstr "" #: ../fdroidserver/publish.py ../fdroidserver/common.py msgid "Failed to sign application" msgstr "" #: ../fdroidserver/common.py msgid "Failed to zipalign application" msgstr "Falha no zipaligning do aplicativo" #: ../fdroidserver/build.py #, python-brace-format msgid "Fetched buildserverid from VM: {buildserverid}" msgstr "" #: ../fdroidserver/signatures.py #, python-brace-format msgid "Fetched signatures for '{apkfilename}' -> '{sigdir}'" msgstr "" #: ../fdroidserver/verify.py ../fdroidserver/stats.py ../fdroidserver/update.py #: ../fdroidserver/rewritemeta.py ../fdroidserver/build.py #: ../fdroidserver/checkupdates.py ../fdroidserver/scanner.py #: ../fdroidserver/install.py msgid "Finished" msgstr "" #: ../fdroidserver/lint.py msgid "Flattr donation methods belong in the FlattrID flag" msgstr "" #: ../fdroidserver/lint.py msgid "Forbidden HTML tags" msgstr "" #: ../fdroidserver/build.py msgid "" "Force build of disabled apps, and carries on regardless of scan problems. " "Only allowed in test mode." msgstr "" "Forçar a compilação de aplicativos desativados e continuar independentemente " "de problemas de escaneamento. Apenas permitido no modo de teste." #: ../fdroidserver/build.py #, python-brace-format msgid "Force halting build after {0} sec timeout!" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Found \"{path}\" graphic without metadata for app \"{name}\"!" msgstr "" #: ../fdroidserver/common.py msgid "Found invalid appids in arguments" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/common.py msgid "Found invalid versionCodes for some apps" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Found multiple metadata files for {appid}" msgstr "Encontrados vários ficheiros de metadados para {appid}" #: ../fdroidserver/index.py msgid "Found multiple signing certificates for repository." msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Found multiple signing certificates in {path}" msgstr "" #: ../fdroidserver/index.py msgid "Found no signing certificates for repository." msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Found non-file at %s" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Generated skeleton metadata for {appid}" msgstr "Gerado esqueleto de metadados para {appid}" #: ../fdroidserver/common.py #, python-format msgid "Git checkout of '%s' failed" msgstr "" #: ../fdroidserver/common.py msgid "Git clean failed" msgstr "" #: ../fdroidserver/common.py msgid "Git fetch failed" msgstr "" #: ../fdroidserver/common.py msgid "Git remote set-head failed" msgstr "" #: ../fdroidserver/common.py msgid "Git reset failed" msgstr "" #: ../fdroidserver/common.py msgid "Git submodule sync failed" msgstr "" #: ../fdroidserver/common.py msgid "Git submodule update failed" msgstr "" #: ../fdroidserver/common.py msgid "HTTPS must be used with Subversion URLs!" msgstr "" #: ../fdroidserver/index.py msgid "Ignoring package without metadata: " msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Ignoring stale cache data for {apkfilename}" msgstr "" #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Ignoring {ext} file at '{path}'" msgstr "" #: ../fdroidserver/update.py msgid "Include APKs that are signed with disabled algorithms like MD5" msgstr "" #: ../fdroidserver/common.py msgid "Initialising submodules" msgstr "" #: ../fdroidserver/install.py msgid "Install all signed applications available" msgstr "Instalar todos os aplicativos assinados disponíveis" #: ../fdroid msgid "Install built packages on devices" msgstr "Instalar pacotes prontos nos dispositivos" #: ../fdroidserver/install.py #, python-format msgid "Installing %s..." msgstr "" #: ../fdroidserver/install.py #, python-brace-format msgid "Installing '{apkfilename}' on {dev}..." msgstr "" #: ../fdroid msgid "Interact with the repo HTTP server" msgstr "Interagir com o servidor HTTP do repositório" #: ../fdroidserver/update.py msgid "Interactively ask about things that need updating." msgstr "Perguntar interativamente sobre elementos que precisam de atualização." #: ../fdroidserver/update.py msgid "Invalid APK" msgstr "" #: ../fdroidserver/metadata.py #, python-format msgid "Invalid boolean '%s'" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Invalid build flag at {line} in {linedesc}" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Invalid build format: {value} in {name}" msgstr "" #: ../fdroidserver/lint.py msgid "Invalid bulleted list" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "" "Invalid license tag \"%s\"! Use only tags from https://spdx.org/license-list" msgstr "" #: ../fdroidserver/lint.py msgid "Invalid link - use [http://foo.bar Link title] or [http://foo.bar]" msgstr "" #: ../fdroidserver/metadata.py #, python-format msgid "Invalid metadata in %s:%d" msgstr "" #: ../fdroidserver/metadata.py msgid "Invalid metadata in: " msgstr "" #: ../fdroidserver/common.py #, python-format msgid "Invalid name for published file: %s" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Invalid package name {0}" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Invalid versionCode: \"{versionCode}\" is not an integer!" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "JAR signature failed to verify: {path}" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "JAR signature verified: {path}" msgstr "" #: ../fdroidserver/publish.py ../fdroidserver/update.py #: ../fdroidserver/mirror.py msgid "Java JDK not found! Install in standard location or set java_paths!" msgstr "" #: ../fdroidserver/signindex.py msgid "" "Java jarsigner not found! Install in standard location or set java_paths!" msgstr "" #: ../fdroidserver/lint.py msgid "Javascript in HTML src attributes" msgstr "" #: ../fdroidserver/init.py msgid "Keystore for signing key:\t" msgstr "Armazenamento de chaves de assinatura:\t" #: ../fdroidserver/lint.py #, python-brace-format msgid "" "Last used commit '{commit}' looks like a tag, but Update Check Mode is " "'{ucm}'" msgstr "" #: ../fdroidserver/lint.py msgid "Liberapay donation methods belong in the LiberapayID flag" msgstr "" #: ../fdroidserver/rewritemeta.py msgid "List files that would be reformatted" msgstr "Listar arquivos que devem ser reformatados" #: ../fdroidserver/build.py msgid "Make the build stop on exceptions" msgstr "Fazer a compilação parar se encontrar exceções" #: ../fdroidserver/index.py msgid "Malformed repository mirrors." msgstr "" #: ../fdroidserver/server.py msgid "Malformed serverwebroot line:" msgstr "" #: ../fdroidserver/gpgsign.py msgid "Missing output directory" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Name '%s' is just the auto name - remove it" msgstr "" #: ../fdroidserver/common.py msgid "No 'config.py' found, using defaults." msgstr "" #: ../fdroidserver/common.py msgid "No Android SDK found!" msgstr "" #: ../fdroidserver/import.py msgid "No android or kivy project could be found. Specify --subdir?" msgstr "" #: ../fdroidserver/install.py msgid "No attached devices found" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "No commit specified for {versionName} in {linedesc}" msgstr "" #: ../fdroidserver/index.py msgid "No fingerprint in URL." msgstr "" #: ../fdroidserver/common.py msgid "No git submodules available" msgstr "" #: ../fdroidserver/import.py msgid "No information found." msgstr "" #: ../fdroidserver/lint.py msgid "No need to specify that the app is Free Software" msgstr "" #: ../fdroidserver/lint.py msgid "No need to specify that the app is for Android" msgstr "" #: ../fdroidserver/server.py msgid "No option set! Edit your config.py to set at least one of these:" msgstr "" #: ../fdroidserver/common.py msgid "No packages specified" msgstr "" #: ../fdroidserver/install.py #, python-format msgid "No signed apk available for %s" msgstr "" #: ../fdroidserver/install.py msgid "No signed output directory - nothing to do" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "No signing certificates found in {path}" msgstr "" #: ../fdroidserver/common.py #, python-format msgid "No such package: %s" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/common.py #, python-brace-format msgid "No such versionCode {versionCode} for app {appid}" msgstr "" #: ../fdroidserver/verify.py ../fdroidserver/publish.py msgid "No unsigned directory - nothing to do" msgstr "" #: ../fdroidserver/signindex.py msgid "Nothing to do" msgstr "" #: ../fdroidserver/checkupdates.py #, python-brace-format msgid "Nothing to do for {appid}." msgstr "" #: ../fdroidserver/init.py msgid "Now set these in config.py:" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/update.py #, python-brace-format msgid "OBB file has newer versionCode({integer}) than any APK:" msgstr "" #: ../fdroidserver/update.py msgid "OBB filename must start with \"main.\" or \"patch.\":" msgstr "" #: ../fdroidserver/update.py msgid "OBB's packagename does not match a supported APK:" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Old APK signature failed to verify: {path}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Only PNG and JPEG are supported for graphics, found: {path}" msgstr "" #: ../fdroidserver/checkupdates.py msgid "Only print differences with the Play Store" msgstr "Apenas mostrar diferenças com a Play Store" #: ../fdroidserver/checkupdates.py msgid "Only process apps with auto-updates" msgstr "Processar apenas aplicativos com atualizações automáticas" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "Options" msgstr "Opções" #: ../fdroidserver/import.py msgid "Overall license of the project." msgstr "Licença geral do projeto." #: ../fdroidserver/dscanner.py msgid "Override path for repo APKs (default: ./repo)" msgstr "Substituir o caminho para os APKs do repositório (padrão: ./repo)" #: ../fdroidserver/common.py #, python-brace-format msgid "Parsing manifest at '{path}'" msgstr "" #: ../fdroidserver/common.py msgid "Password required with username" msgstr "" #: ../fdroidserver/import.py msgid "Path to main Android project subdirectory, if not in root." msgstr "" "Caminho para os principais subdiretórios do projeto android, se não estiver " "na raiz (root)." msgid "Path to main android project subdirectory, if not in root." msgstr "" "Caminho para os principais subdiretórios do projeto android, se não estiver " "na raiz (root)." #: ../fdroidserver/init.py msgid "Path to the Android SDK (sometimes set in ANDROID_HOME)" msgstr "Caminho até o Android SDK (algumas vezes definido em ANDROID_HOME)" #: ../fdroidserver/btlog.py msgid "Path to the git repo to use as the log" msgstr "Caminho para o repositório git para usar como log" #: ../fdroidserver/init.py msgid "Path to the keystore for the repo signing key" msgstr "Caminho até a keystore para a chave de assinatura do repositório" #: ../fdroidserver/dscanner.py msgid "Prepare Drozer to run a scan" msgstr "Preparar o Drozer para executar uma varredura" msgid "Prepare drozer to run a scan" msgstr "Preparar o Drozer para fazer um escaneamento" #: ../fdroidserver/nightly.py msgid "Print the secret variable to the terminal for easy copy/paste" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Problem with description of {appid}: {error}" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Problem with xml at '{path}'" msgstr "" #: ../fdroidserver/checkupdates.py msgid "Process auto-updates" msgstr "Processar atualizações automáticas" #: ../fdroidserver/publish.py ../fdroidserver/update.py #, python-brace-format msgid "Processing {apkfilename}" msgstr "" #: ../fdroidserver/checkupdates.py ../fdroidserver/scanner.py #, python-brace-format msgid "Processing {appid}" msgstr "" #: ../fdroidserver/update.py msgid "Produce human-readable XML/JSON for index files" msgstr "Produzir XML/JSON legível por humanos para arquivos de índice" #: ../fdroidserver/update.py msgid "Produce human-readable index.xml" msgstr "Gerar um index.xml legível por humanos" #: ../fdroidserver/import.py msgid "Project URL to import from." msgstr "URL do projeto para importar." #: ../fdroidserver/lint.py msgid "Punctuation should be avoided" msgstr "" #: ../fdroidserver/btlog.py msgid "Push the log to this git remote repository" msgstr "Mandar o registro de mudanças para este repositório git remoto" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Pushing binary transparency log to {url}" msgstr "Atualizar o log de transparência de um binário para {url}" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Pushing to {url}" msgstr "" #: ../fdroid msgid "Quickly start a new repository" msgstr "Rapidamente comece um novo repositório" #: ../fdroid msgid "Read all the metadata files and exit" msgstr "Ler todos os arquivos de metadados e sair" #: ../fdroidserver/common.py #, python-brace-format msgid "Reading '{config_file}'" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Reading minSdkVersion failed: \"{apkfilename}\"" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #. https://developer.android.com/guide/topics/manifest/manifest-element.html#vname #: ../fdroidserver/common.py #, python-brace-format msgid "" "Reading packageName/versionCode/versionName failed, APK invalid: " "'{apkfilename}'" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Reading {apkfilename} from cache" msgstr "" #: ../fdroidserver/stats.py msgid "" "Recalculate aggregate stats - use when changes have been made that would " "invalidate old cached data." msgstr "" "Recalcular estatísticas agregadas - use quando foram feitas alterações que " "invalidariam os dados cache antigos." #: ../fdroidserver/common.py msgid "Removing specified files" msgstr "" #: ../fdroidserver/update.py msgid "Rename APK files that do not match package.name_123.apk" msgstr "Renomear arquivos APK que não são do tipo pacote.nome_123.apk" #: ../fdroidserver/update.py msgid "Report on build data status" msgstr "Relatório sobre o status dos dados de compilação" #: ../fdroidserver/build.py msgid "" "Reset and create a brand new build server, even if the existing one appears " "to be ok." msgstr "" "Redefinir e criar um novo servidor de compilação, mesmo que o existente " "parecer normal." #: ../fdroidserver/nightly.py #, python-brace-format msgid "Resigning {apkfilename} with provided debug.keystore" msgstr "" #: ../fdroidserver/update.py msgid "Resize all the icons exceeding the max pixel size and exit" msgstr "" "Redimensionar todos os ícones que excedam o tamanho máximo de pixels e sair" #: ../fdroidserver/common.py msgid "Restrict output to warnings and errors" msgstr "Restringir a saída a erros e avisos" #: ../fdroid msgid "Rewrite all the metadata files" msgstr "Reescrever todos os arquivos de metadados" #: ../fdroidserver/rewritemeta.py msgid "Rewrite to a specific format: " msgstr "Reescrever para um formato específico: " #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Rewriting '{appid}'" msgstr "" #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Rewriting '{appid}' to '{path}'" msgstr "" #: ../fdroidserver/lint.py msgid "Run rewritemeta to fix formatting" msgstr "Executar rewritemeta para corrigir a formatação" #: ../fdroidserver/server.py ../fdroidserver/upload.py msgid "Running first pass with MD5 checking disabled" msgstr "" #: ../fdroidserver/mirror.py #, python-brace-format msgid "Running wget in {path}" msgstr "" #: ../fdroidserver/dscanner.py msgid "Scan only the latest version of each package" msgstr "Escanear apenas a versão mais recente de cada pacote" #: ../fdroid msgid "Scan the source code of a package" msgstr "Escanear o código fonte de um pacote" #: ../fdroidserver/scanner.py #, python-brace-format msgid "Scanner found {count} problems in {appid}:" msgstr "" #: ../fdroidserver/scanner.py #, python-brace-format msgid "Scanner found {count} problems in {appid}:{versionCode}:" msgstr "" #: ../fdroidserver/build.py msgid "Scanner found {} problem" msgid_plural "Scanner found {} problems" msgstr[0] "" msgstr[1] "" #: ../fdroidserver/common.py msgid "Set clock to that time using:" msgstr "" #: ../fdroidserver/build.py #, python-brace-format msgid "Set open file limit to {integer}" msgstr "" #: ../fdroid msgid "Set up an app build for a nightly build repo" msgstr "" #: ../fdroidserver/build.py msgid "Setting open file limit failed: " msgstr "" #: ../fdroidserver/build.py #, python-brace-format msgid "Setting {0} sec timeout for this build" msgstr "" #: ../fdroidserver/build.py msgid "Setup an emulator, install the APK on it and perform a Drozer scan" msgstr "Configurar um emulador, instalar o apk nele e escanear com o Drozer" msgid "Setup an emulator, install the apk on it and perform a drozer scan" msgstr "Configurar um emulador, instalar o apk nele e escanear com o drozer" #: ../fdroid msgid "Sign and place packages in the repo" msgstr "Assine e coloque pacotes no repositório" #: ../fdroid msgid "Sign indexes created using update --nosign" msgstr "Assinar os índices criados usando update --nosign" #: ../fdroidserver/build.py msgid "Skip scanning the source code for binaries and other problems" msgstr "" "Pular o escaneamento do código fonte atrás de binários e outros problemas" #: ../fdroidserver/update.py #, python-brace-format msgid "Skipping '{apkfilename}' with invalid signature!" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Skipping index generation for {appid}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Skipping {apkfilename} with invalid signature!" msgstr "" #: ../fdroidserver/scanner.py #, python-brace-format msgid "Skipping {appid}: disabled" msgstr "" #: ../fdroidserver/scanner.py #, python-brace-format msgid "Skipping {appid}: no builds specified" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py msgid "Specify a local folder to sync the repo to" msgstr "Especifique uma pasta local para ser sincronizada com o repositório" #: ../fdroidserver/server.py ../fdroidserver/upload.py msgid "Specify an identity file to provide to SSH for rsyncing" msgstr "" "Especifique um arquivo identidade para fornecer ao SSH para usar o rsync" #: ../fdroidserver/update.py msgid "Specify editor to use in interactive mode. Default " msgstr "Especifique o editor a ser usado no modo interativo. Padrão " #, c-format msgid "Specify editor to use in interactive mode. Default %s" msgstr "Especificar o editor que será usado no modo interativo. O padrão é %s" #: ../fdroidserver/update.py #, python-brace-format msgid "Specify editor to use in interactive mode. Default is {path}" msgstr "Especifique o editor a ser usado no modo interativo. O padrão é {path}" #: ../fdroidserver/build.py msgid "Specify that we're running on the build server" msgstr "Especificar que estamos executando no servidor de compilação" #: ../fdroidserver/nightly.py msgid "Specify which debug keystore file to use." msgstr "" #: ../fdroidserver/common.py msgid "Spew out even more information than normal" msgstr "Mostrar ainda mais informações que o normal" #: ../fdroidserver/nightly.py #, python-brace-format msgid "Striping mystery signature from {apkfilename}" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Summary '%s' is just the app's name" msgstr "" #: ../fdroidserver/lint.py #, python-brace-format msgid "Summary of length {length} is over the {limit} char limit" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "System clock is older than date in {path}!" msgstr "" #: ../fdroidserver/build.py msgid "" "Test mode - put output in the tmp directory only, and always build, even if " "the output already exists." msgstr "" "Modo de teste - coloque a saída apenas no diretório tmp e sempre compile, " "mesmo que a saída já exista." #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/update.py #, python-brace-format msgid "The OBB version code must come after \"{name}.\":" msgstr "" #: ../fdroidserver/btlog.py msgid "The base URL for the repo to log (default: https://f-droid.org)" msgstr "" "O URL base para o registro de mudanças do repositório (padrão: https://f-" "droid.org)" #: ../fdroidserver/mirror.py msgid "The directory to write the mirror to" msgstr "" #: ../fdroidserver/server.py msgid "The only commands currently supported are 'init' and 'update'" msgstr "Os únicos comandos suportados atualmente são 'init' e 'update'" #: ../fdroidserver/index.py msgid "The repository's fingerprint does not match." msgstr "" #: ../fdroidserver/common.py msgid "The repository's index could not be verified." msgstr "" #: ../fdroidserver/server.py #, python-brace-format msgid "The root dir for local_copy_dir \"{path}\" does not exist!" msgstr "" #: ../fdroidserver/nightly.py msgid "The the file to be included in the repo (path or glob)" msgstr "" #: ../fdroidserver/publish.py msgid "There is a keyalias collision - publishing halted" msgstr "" #: ../fdroidserver/import.py #, python-format msgid "This repo already has local metadata: %s" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py msgid "" "To use awsbucket, awssecretkey and awsaccesskeyid must also be set in config." "py!" msgstr "" #: ../fdroidserver/lint.py msgid "UCM is set but it looks like checkupdates hasn't been run yet" msgstr "" #: ../fdroidserver/lint.py msgid "URL shorteners should not be used" msgstr "" #: ../fdroidserver/metadata.py msgid "URL title is just the URL, use brackets: [URL]" msgstr "" #: ../fdroidserver/lint.py #, python-brace-format msgid "URL {url} in Description: {error}" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Unexpected text on same line as {field} in {linedesc}" msgstr "" #: ../fdroid msgid "Unknown exception found!" msgstr "Uma exceção desconhecida foi encrontrada!" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vname #: ../fdroidserver/lint.py #, python-brace-format msgid "Unknown file '{filename}' in build '{versionName}'" msgstr "" #: ../fdroidserver/metadata.py #, python-format msgid "Unknown metadata format: %s" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Unknown metadata format: {path}" msgstr "Formato de metadados desconhecido: {path}" #: ../fdroidserver/common.py msgid "Unknown version of aapt, might cause problems: " msgstr "" #: ../fdroidserver/lint.py msgid "Unlinkified link - use [http://foo.bar Link title] or [http://foo.bar]" msgstr "" #: ../fdroidserver/lint.py msgid "Unnecessary leading space" msgstr "" #: ../fdroidserver/lint.py msgid "Unnecessary trailing space" msgstr "" #: ../fdroidserver/metadata.py msgid "Unrecognised app field: " msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Unrecognised field '{field}' in {linedesc}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Unsupported file type \"{extension}\" for repo graphic" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Unsupported graphics file found: {path}" msgstr "" #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Unsupported metadata format, use: --to [{supported}]" msgstr "" #: ../fdroidserver/metadata.py msgid "Unterminated ]" msgstr "" #: ../fdroidserver/metadata.py msgid "Unterminated ]]" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Unterminated build in {name}" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Unterminated continuation in {name}" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Unused extlib at %s" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Unused file at %s" msgstr "" #: ../fdroidserver/lint.py msgid "Update Check Name is set to the known app id - it can be removed" msgstr "" #: ../fdroid msgid "Update repo information for new packages" msgstr "Atualize as informações do repositório para novos pacotes" #: ../fdroid msgid "Update the binary transparency log for a URL" msgstr "Atualizar o log de transparência de um binário para um URL" #: ../fdroid msgid "Update the stats of the repo" msgstr "Atualizar as estatísticas do repositório" #: ../fdroidserver/update.py ../fdroidserver/build.py msgid "Update the wiki" msgstr "Atualizar a wiki" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "Usage" msgstr "Uso" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "Usage: %s\n" msgstr "Uso: %s\n" #: ../fdroidserver/lint.py msgid "Use /HEAD instead of /master to point at a file in the default branch" msgstr "" #: ../fdroidserver/update.py msgid "Use `fdroid update -c` to create it." msgstr "" #: ../fdroidserver/build.py msgid "Use build server" msgstr "Usar servidor de compilação" #: ../fdroidserver/update.py msgid "Use date from APK instead of current time for newly added APKs" msgstr "" "Usar a data do apk ao invés do horário atual para APKs recentemente " "adicionados" msgid "Use date from apk instead of current time for newly added apks" msgstr "" "Usar a data do apk ao invés do horário atual para APKs recentemente " "adicionados" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Using \"{path}\" for configuring s3cmd." msgstr "" #: ../fdroidserver/common.py msgid "" "Using Java's jarsigner, not recommended for verifying APKs! Use apksigner" msgstr "" #: ../fdroidserver/init.py #, python-brace-format msgid "Using existing keystore \"{path}\"" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Using s3cmd to sync with: {url}" msgstr "" #: ../fdroid msgid "Valid commands are:" msgstr "Os comandos válidos são:" #: ../fdroid msgid "Verify the integrity of downloaded packages" msgstr "Verifique a integridade dos pacotes baixados" #: ../fdroidserver/index.py msgid "Verifying index signature:" msgstr "" #: ../fdroid msgid "Warn about possible metadata errors" msgstr "Avisar sobre possíveis erros de metadados" #: ../fdroidserver/update.py msgid "" "When configured for signed indexes, create only unsigned indexes at this " "stage" msgstr "" "Quando configurado para índices assinados, crie apenas índices não assinados " "nesta etapa" msgid "X.509 'Distiguished Name' used when generating keys" msgstr "X.509 'Distiguished Name' usado ao gerar as chaves" #: ../fdroidserver/init.py msgid "X.509 'Distinguished Name' used when generating keys" msgstr "X.509 'Distiguished Name' usado na geração de chaves" #: ../fdroidserver/common.py msgid "You can use ANDROID_HOME to set the path to your SDK, i.e.:" msgstr "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "adding IdentityFile to {path}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "adding to {name}: {path}" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "ambiguous option: %(option)s could match %(matches)s" msgstr "opção ambígua: %(option)s poderia corresponder %(matches)s" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "ambiguous option: %s (%s?)" msgstr "opção ambígua: %s (%s?)" #: ../fdroidserver/lint.py ../fdroidserver/rewritemeta.py msgid "applicationId in the form APPID" msgstr "applicationId, na forma APPID" #: ../fdroidserver/checkupdates.py msgid "applicationId to check for updates" msgstr "applicationId para verificar se há atualizações" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/verify.py ../fdroidserver/publish.py #: ../fdroidserver/dscanner.py ../fdroidserver/build.py #: ../fdroidserver/scanner.py ../fdroidserver/install.py msgid "applicationId with optional versionCode in the form APPID[:VERCODE]" msgstr "applicationId com versionCode opcional na forma APPID[:VERCODE]" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "argument \"-\" with mode %r" msgstr "" #: ../fdroidserver/nightly.py msgid "attempting bare ssh connection to test deploy key:" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "can't open '%s': %s" msgstr "não dá pra abrir '%s': %s" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "cannot have multiple subparser arguments" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "cannot merge actions - two groups are named %r" msgstr "" #: ../fdroidserver/nightly.py msgid "cannot publish update, did you set the deploy key?" msgstr "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "cloning {url}" msgstr "" #: ../fdroidserver/server.py msgid "command to execute, either 'init' or 'update'" msgstr "comando para executar, seja 'init' ou 'update'" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "complex" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "conflicting option string: %s" msgid_plural "conflicting option strings: %s" msgstr[0] "" msgstr[1] "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "copying {apkfilename} into {path}" msgstr "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "created {path}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "deleting: repo/{apkfilename}" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "dest= is required for options like %r" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "expected %s argument" msgid_plural "expected %s arguments" msgstr[0] "" msgstr[1] "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "expected at least one argument" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "expected at most one argument" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "expected one argument" msgstr "" #: ../fdroid msgid "fdroid [-h|--help|--version] []" msgstr "fdroid [-h|--help|--version] []" #: ../fdroid msgid "fdroid [] [-h|--help|--version|]" msgstr "fdroid [] [-h|--help|--version|]" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "floating-point" msgstr "" #: ../fdroidserver/metadata.py msgid "force errors to be warnings, or ignore" msgstr "forçar erros como avisos ou ignorá-los" #: ../fdroidserver/metadata.py msgid "force metadata errors (default) to be warnings, or to be ignored." msgstr "" "Forçar os erros de metadados (padrão) para serem avisos, ou para serem " "ignorados." #: ../fdroidserver/common.py msgid "git svn clone failed" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "ignored explicit argument %r" msgstr "" #: ../fdroidserver/index.py msgid "index-v1 must have a signature, use `fdroid signindex` to create it!" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "integer" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "invalid %(type)s value: %(value)r" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "invalid choice: %(value)r (choose from %(choices)s)" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "invalid conflict_resolution value: %r" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "" "invalid option string %(option)r: must start with a character " "%(prefix_chars)r" msgstr "" #: ../fdroidserver/server.py #, python-brace-format msgid "" "local_copy_dir does not end with \"fdroid\", perhaps you meant: \"{path}\"" msgstr "" #: ../fdroidserver/server.py msgid "local_copy_dir must be an absolute path!" msgstr "" #: ../fdroidserver/server.py msgid "local_copy_dir must be directory, not a file!" msgstr "" #: ../fdroidserver/index.py #, python-format msgid "mirror '%s' does not end with 'fdroid'!" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "mutually exclusive arguments must be optional" msgstr "" #: ../fdroidserver/mirror.py #, python-brace-format msgid "no \"icon\" in {appid}" msgstr "" #: ../fdroidserver/signatures.py msgid "no APK supplied" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "no such option: %s" msgstr "não tem tal opção: %s" #: ../fdroid msgid "no version info found!" msgstr "não há informações de versão encontrada!" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "not allowed with argument %s" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "one of the arguments %s is required" msgstr "" #: ../fdroidserver/index.py ../fdroidserver/common.py msgid "only accepts strings, lists, and tuples" msgstr "" #: ../fdroidserver/install.py #, python-format msgid "option %s: If you really want to install all the signed apps, use --all" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "option %s: invalid %s value: %r" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "option %s: invalid choice: %r (choose from %s)" msgstr "" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option -%s not recognized" msgstr "Comando '%s' não é reconhecido" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option -%s requires argument" msgstr "Opção -%s necessita argumento" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option --%s must not have an argument" msgstr "opção --%s não pode ter argumento" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option --%s not a unique prefix" msgstr "opção --%s não é prefixo único" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option --%s not recognized" msgstr "Comando --%s não é reconhecido" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option --%s requires argument" msgstr "opção --%s necessita argumento" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "optional arguments" msgstr "argumentos opcionais" #: ../fdroidserver/nightly.py #, python-brace-format msgid "overwriting existing {path}" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "positional arguments" msgstr "argumentos posicionais" #: ../fdroidserver/signatures.py #, python-brace-format msgid "" "refuse downloading via insecure HTTP connection (use HTTPS or specify --no-" "https-check): {apkfilename}" msgstr "" #: ../fdroidserver/signatures.py #, python-brace-format msgid "" "refuse downloading via insecure http connection (use https or specify --no-" "https-check): {apkfilename}" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "s3cmd sync indexes {path} to {url} and delete" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "show program's version number and exit" msgstr "mostrar versão do programa e sair" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.5/optparse.py #: /usr/lib/python3.6/argparse.py /usr/lib/python3.6/optparse.py msgid "show this help message and exit" msgstr "mostrar esta mensagem de ajuda e sair" #: ../fdroidserver/signatures.py msgid "signed APK, either a file-path or HTTPS URL." msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "skipping source tarball: {path}" msgstr "" #: ../fdroidserver/lint.py msgid "srclibs missing name and/or @" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "the following arguments are required: %s" msgstr "os seguintes argumentos são necessários: %s" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "unexpected option string: %s" msgstr "opção de cadeia de texto inesperada: %s" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "unknown parser %(parser_name)r (choices: %(choices)s)" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "unrecognized arguments: %s" msgstr "argumentos não reconhecidos: %s" #: ../fdroidserver/common.py #, python-brace-format msgid "unsafe permissions on '{config_file}' (should be 0600)!" msgstr "permissões inseguras em '{config_file}' (deveria ser 0600)!" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py ../fdroid msgid "usage: " msgstr "uso: " #: ../fdroid msgid "usage: fdroid [-h|--help|--version] []" msgstr "uso: fdroid [-h|--help|--version] []" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "using Apache libcloud to sync with {url}" msgstr "" #: ../fdroidserver/publish.py #, python-brace-format msgid "{0} app, {1} key aliases" msgid_plural "{0} apps, {1} key aliases" msgstr[0] "" msgstr[1] "" #: ../fdroidserver/update.py #, python-brace-format msgid "{apkfilename} ({appid}) has no metadata!" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "{apkfilename} has multiple {name} files, looks like Master Key exploit!" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "{apkfilename}'s AndroidManifest.xml has a bad date: " msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "{appid} does not have a name! Using package name instead." msgstr "" #: ../fdroidserver/mirror.py #, python-brace-format msgid "{appid} is missing {name}" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vname #: ../fdroidserver/lint.py #, python-brace-format msgid "{appid}: Unknown extlib {path} in build '{versionName}'" msgstr "" #: ../fdroidserver/scanner.py #, python-brace-format msgid "{appid}: no builds specified, running on current source state" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "{field} not terminated in {name}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "{name} \"{path}\" does not exist! Correct it in config.py." msgstr "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "{path} does not exist! Create it by running:" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "{path} has bad file signature \"{pattern}\", possible Janus exploit!" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "{path} is zero size!" msgstr "" #: ../fdroidserver/mirror.py #, python-brace-format msgid "{url} does not end with \"fdroid\", check the URL path!" msgstr "" #: ../fdroidserver/build.py msgid "{} build failed" msgid_plural "{} builds failed" msgstr[0] "" msgstr[1] "" #: ../fdroidserver/build.py msgid "{} build succeeded" msgid_plural "{} builds succeeded" msgstr[0] "" msgstr[1] "" #, fuzzy #~ msgid "Add PGP signatures for packages in repo using GnuPG" #~ msgstr "Adicione assinaturas gpg para os pacotes no repositório" #~ msgid "Add gpg signatures for packages in repo" #~ msgstr "Adicione assinaturas gpg para os pacotes no repositório" #~ msgid "Clean update - don't uses caches, reprocess all apks" #~ msgstr "Atualização limpa - não usa cache, reprocessa todos os APKs" #~ msgid "app-id in the form APPID" #~ msgstr "app-id na forma APPID" #~ msgid "app-id to check for updates" #~ msgstr "app-id para verificar por atualizações" #~ msgid "app-id with optional versionCode in the form APPID[:VERCODE]" #~ msgstr "" #~ "app-id, com código de versão (versionCode) opcional, na forma APPID[:" #~ "VERCODE]" #~ msgid "app-id with optional versioncode in the form APPID[:VERCODE]" #~ msgstr "" #~ "app-id, com código de versão (versioncode) opcional, na forma APPID[:" #~ "VERCODE]" fdroidserver-1.0.9/locale/fdroidserver.pot0000664000175000017500000014153713323655167020634 0ustar hanshans00000000000000# SOME DESCRIPTIVE TITLE. # This file is put in the public domain. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: fdroidserver 1.0.0-95-gd7af22b\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" "POT-Creation-Date: 2018-02-13 09:01+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" #: ../fdroidserver/nightly.py msgid "" "\n" "SSH Public Key to be used as Deploy Key:" msgstr "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "" "\n" "{path} encoded for the DEBUG_KEYSTORE secret variable:" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "\"%s/\" has no matching metadata file!" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "\"{path}\" contains outdated {name} ({version})" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "\"{path}\" contains recent {name} ({version})" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "\"{path}\" exists but s3cmd is not installed!" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "\"{path}\" is not an accepted format, convert to: {formats}" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "%(option)s option requires %(number)d argument" msgid_plural "%(option)s option requires %(number)d arguments" msgstr[0] "" msgstr[1] "" #: ../fdroidserver/mirror.py #, python-format msgid "%(prog)s [options] url" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "%(prog)s: error: %(message)s\n" msgstr "" #: ../fdroidserver/scanner.py #, python-format msgid "%d problems found" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "%prog [options]" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "%r is not callable" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "%s is not an accepted build field" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "%s option does not take a value" msgstr "" #: ../fdroidserver/index.py ../fdroidserver/common.py msgid "'keypass' not found in config.py!" msgstr "" #: ../fdroidserver/index.py ../fdroidserver/common.py msgid "'keystore' not found in config.py!" msgstr "" #: ../fdroidserver/index.py ../fdroidserver/common.py msgid "'keystorepass' not found in config.py!" msgstr "" #: ../fdroidserver/index.py ../fdroidserver/common.py msgid "'repo_keyalias' not found in config.py!" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "'required' is an invalid argument for positionals" msgstr "" #: ../fdroidserver/common.py msgid "'sdk_path' not set in 'config.py'!" msgstr "" #. Translators: "build-tools" is the file name of a package from #. Google, it is part of the Android SDK. So it probably shouldn't be #. translated or transliterated. #: ../fdroidserver/common.py #, python-brace-format msgid "'{aapt}' is too old, fdroid requires build-tools-23.0.0 or newer!" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "'{aapt}' is too old, fdroid requires build-tools-{version} or newer!" msgstr "" #: ../fdroidserver/install.py #, python-brace-format msgid "'{apkfilename}' is already installed on {dev}." msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "'{field}' will be in random order! Use () or [] brackets if order is important!" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "'{path}' failed to execute!" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "'{value}' is not a valid {field} in {appid}. Regex pattern: {pattern}" msgstr "" #: ../fdroidserver/checkupdates.py #, python-brace-format msgid "...checkupdate failed for {appid} : {error}" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid ".__call__() not defined" msgstr "" #: ../fdroidserver/metadata.py msgid ".fdroid.txt is not supported! Convert to .fdroid.yml or .fdroid.json." msgstr "" #: ../fdroidserver/lint.py msgid "/issues is missing" msgstr "" #: ../fdroidserver/mirror.py msgid "A URL is required as an argument!" msgstr "" #: ../fdroid msgid "Add PGP signatures using GnuPG for packages in repo" msgstr "" #: ../fdroid msgid "Add a new application from its source code" msgstr "" #: ../fdroidserver/update.py msgid "Add a repo signing key to an unsigned repo" msgstr "" #: ../fdroidserver/update.py msgid "Add skeleton metadata files for APKs that are missing them" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Adding new repo for only {name}" msgstr "" #: ../fdroidserver/init.py msgid "Alias of the repo signing key in the keystore" msgstr "" #: ../fdroidserver/import.py msgid "Allows a different revision (or git branch) to be specified for the initial import" msgstr "" #: ../fdroidserver/mirror.py msgid "Also mirror the full archive section" msgstr "" #: ../fdroidserver/lint.py msgid "Also warn about formatting issues, like rewritemeta -l" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Android SDK '{path}' does not have '{dirname}' installed!" msgstr "" #: ../fdroidserver/common.py msgid "Android SDK not found!" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Android SDK path '{path}' does not exist!" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Android SDK path '{path}' is not a directory!" msgstr "" #. Translators: "build-tools" is the file name of a package from #. Google, it is part of the Android SDK. So it probably shouldn't be #. translated or transliterated. #: ../fdroidserver/common.py #, python-brace-format msgid "Android build-tools path '{path}' does not exist!" msgstr "" #: ../fdroidserver/update.py msgid "AndroidManifest.xml has no date" msgstr "" #: ../fdroidserver/lint.py #, python-brace-format msgid "App is in '{repo}' but has a link to {url}" msgstr "" #: ../fdroidserver/lint.py msgid "Appending .git is not necessary" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Archiving {apkfilename} with invalid signature!" msgstr "" #: ../fdroidserver/mirror.py msgid "Base URL to mirror, can include the index signing key using the query string: ?fingerprint=" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vname #: ../fdroidserver/lint.py #, python-brace-format msgid "Branch '{branch}' used as commit in build '{versionName}'" msgstr "" #: ../fdroidserver/lint.py #, python-brace-format msgid "Branch '{branch}' used as commit in srclib '{srclib}'" msgstr "" #: ../fdroid msgid "Build a package from source" msgstr "" #: ../fdroidserver/build.py msgid "Build all applications available" msgstr "" #: ../fdroidserver/lint.py msgid "Build generated by `fdroid import` - remove disable line once ready" msgstr "" #: ../fdroidserver/build.py msgid "Build only the latest version of each package" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Build should have comma-separated versionName and versionCode, not \"{value}\", in {linedesc}" msgstr "" #: ../fdroidserver/init.py #, python-format msgid "Built repo based in \"%s\" with this config:" msgstr "" #: ../fdroidserver/build.py msgid "Can't build due to {} error while scanning" msgid_plural "Can't build due to {} errors while scanning" msgstr[0] "" msgstr[1] "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Cannot find a packageName for {path}!" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Cannot find an appid for {path}!" msgstr "" #: ../fdroidserver/vmtools.py #, python-brace-format msgid "Cannot read \"{path}\"!" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Cannot resolve app id {appid}" msgstr "" #: ../fdroidserver/rewritemeta.py msgid "Cannot use --list and --to at the same time" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Cannot write \"{path}\", not an accepted format, use: {formats}" msgstr "" #: ../fdroidserver/lint.py msgid "Categories are not set" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Category '%s' is not valid" msgstr "" #: ../fdroid msgid "Check for updates to applications" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Checking archiving for {appid} - apks:{integer}, keepversions:{keep}, archapks:{arch}" msgstr "" #: ../fdroidserver/dscanner.py msgid "Clean after all scans have finished" msgstr "" #: ../fdroidserver/dscanner.py msgid "Clean before the scans start and rebuild the container" msgstr "" #: ../fdroidserver/dscanner.py msgid "Clean up all containers and then exit" msgstr "" #: ../fdroidserver/update.py msgid "Clean update - don't uses caches, reprocess all APKs" msgstr "" #: ../fdroidserver/import.py msgid "Comma separated list of categories." msgstr "" #: ../fdroid #, c-format, python-format msgid "Command '%s' not recognised.\n" msgstr "" #: ../fdroidserver/checkupdates.py msgid "Commit changes" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Could not find '{command}' on your system" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Could not find {path} to remove it" msgstr "" #: ../fdroidserver/update.py msgid "Could not open apk file for analysis" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/import.py msgid "Couldn't find latest version code" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vname #: ../fdroidserver/import.py msgid "Couldn't find latest version name" msgstr "" #: ../fdroidserver/import.py msgid "Couldn't find package ID" msgstr "" #: ../fdroidserver/update.py msgid "Cowardily refusing to overwrite existing signing key setup!" msgstr "" #: ../fdroidserver/update.py msgid "Create a repo signing key in a keystore" msgstr "" #: ../fdroidserver/update.py msgid "Create skeleton metadata files that are missing" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Created new container \"{name}\"" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Creating \"{path}\" for configuring s3cmd." msgstr "" #: ../fdroidserver/publish.py msgid "Creating log directory" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Creating new S3 bucket: {url}" msgstr "" #: ../fdroidserver/publish.py msgid "Creating output directory" msgstr "" #: ../fdroidserver/index.py msgid "Creating signed index with this key (SHA256):" msgstr "" #: ../fdroidserver/import.py ../fdroidserver/verify.py #: ../fdroidserver/publish.py msgid "Creating temporary directory" msgstr "" #: ../fdroidserver/index.py msgid "Creating unsigned index in preparation for signing" msgstr "" #: ../fdroidserver/nightly.py msgid "DEBUG_KEYSTORE is not set or the value is incomplete" msgstr "" #: ../fdroidserver/update.py msgid "Delete APKs and/or OBBs without metadata from the repo" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Deleting unknown file: {path}" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Description '%s' is just the app's summary" msgstr "" #: ../fdroidserver/lint.py msgid "Description has a duplicate line" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Description has a list (%s) but it isn't bulleted (*) nor numbered (#)" msgstr "" #: ../fdroidserver/lint.py #, python-brace-format msgid "Description of length {length} is over the {limit} char limit" msgstr "" #: ../fdroidserver/mirror.py #, python-brace-format msgid "Do not include \"{path}\" in URL!" msgstr "" #: ../fdroidserver/init.py msgid "Do not prompt for Android SDK path, just fail" msgstr "" #: ../fdroidserver/build.py msgid "Don't create a source tarball, useful when testing a build" msgstr "" #: ../fdroidserver/stats.py msgid "Don't do anything logs-related" msgstr "" #: ../fdroidserver/build.py msgid "Don't refresh the repository, useful when testing a build with no internet connection" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/nightly.py #: ../fdroidserver/upload.py msgid "Don't use rsync checksums" msgstr "" #: ../fdroid msgid "Download complete mirrors of small repos" msgstr "" #: ../fdroidserver/stats.py msgid "Download logs we don't have" msgstr "" #: ../fdroidserver/common.py msgid "Downloading the repository already failed once, not trying again." msgstr "" #: ../fdroidserver/verify.py #, python-brace-format msgid "Downloading {url} failed. {error}" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Duplicate build recipe found for versionCode {versionCode} in {linedesc}" msgstr "" #: ../fdroidserver/lint.py #, python-brace-format msgid "Duplicate link in '{field}': {url}" msgstr "" #: ../fdroid msgid "Dynamically scan APKs post build" msgstr "" #: ../fdroidserver/mirror.py msgid "" "ERROR: this command should never be used to mirror f-droid.org!\n" "A full mirror of f-droid.org requires more than 200GB." msgstr "" #: ../fdroidserver/nightly.py msgid "ERROR: unsupported CI type, patches welcome!" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Empty build flag at {linedesc}" msgstr "" #: ../fdroidserver/init.py #, python-format msgid "" "Enter the path to the Android SDK (%s) here:\n" "> " msgstr "" #: ../fdroidserver/server.py ../fdroidserver/checkupdates.py #: ../fdroidserver/upload.py #, python-format msgid "Error while attempting to publish log: %s" msgstr "" #: ../fdroidserver/import.py msgid "Error while getting repo address" msgstr "" #: ../fdroid msgid "Extract signatures from APKs" msgstr "" #: ../fdroidserver/signatures.py #, python-brace-format msgid "Failed fetching signatures for '{apkfilename}': {error}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Failed reading {path}: {error}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Failed resizing {path}: {error}" msgstr "" #: ../fdroidserver/publish.py msgid "Failed to align application" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Failed to create S3 bucket: {url}" msgstr "" #: ../fdroidserver/common.py msgid "Failed to get APK manifest information" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Failed to get apk information, deleting {path}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Failed to get apk information, skipping {path}" msgstr "" #: ../fdroidserver/install.py #, python-brace-format msgid "Failed to install '{apkfilename}' on {dev}: {error}" msgstr "" #: ../fdroidserver/publish.py ../fdroidserver/common.py msgid "Failed to sign application" msgstr "" #: ../fdroidserver/common.py msgid "Failed to zipalign application" msgstr "" #: ../fdroidserver/build.py #, python-brace-format msgid "Fetched buildserverid from VM: {buildserverid}" msgstr "" #: ../fdroidserver/signatures.py #, python-brace-format msgid "Fetched signatures for '{apkfilename}' -> '{sigdir}'" msgstr "" #: ../fdroidserver/verify.py ../fdroidserver/stats.py ../fdroidserver/update.py #: ../fdroidserver/rewritemeta.py ../fdroidserver/build.py #: ../fdroidserver/checkupdates.py ../fdroidserver/scanner.py #: ../fdroidserver/install.py msgid "Finished" msgstr "" #: ../fdroidserver/lint.py msgid "Flattr donation methods belong in the FlattrID flag" msgstr "" #: ../fdroidserver/lint.py msgid "Forbidden HTML tags" msgstr "" #: ../fdroidserver/build.py msgid "Force build of disabled apps, and carries on regardless of scan problems. Only allowed in test mode." msgstr "" #: ../fdroidserver/build.py #, python-brace-format msgid "Force halting build after {0} sec timeout!" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Found \"{path}\" graphic without metadata for app \"{name}\"!" msgstr "" #: ../fdroidserver/common.py msgid "Found invalid appids in arguments" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/common.py msgid "Found invalid versionCodes for some apps" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Found multiple metadata files for {appid}" msgstr "" #: ../fdroidserver/index.py msgid "Found multiple signing certificates for repository." msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Found multiple signing certificates in {path}" msgstr "" #: ../fdroidserver/index.py msgid "Found no signing certificates for repository." msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Found non-file at %s" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Generated skeleton metadata for {appid}" msgstr "" #: ../fdroidserver/common.py #, python-format msgid "Git checkout of '%s' failed" msgstr "" #: ../fdroidserver/common.py msgid "Git clean failed" msgstr "" #: ../fdroidserver/common.py msgid "Git fetch failed" msgstr "" #: ../fdroidserver/common.py msgid "Git remote set-head failed" msgstr "" #: ../fdroidserver/common.py msgid "Git reset failed" msgstr "" #: ../fdroidserver/common.py msgid "Git submodule sync failed" msgstr "" #: ../fdroidserver/common.py msgid "Git submodule update failed" msgstr "" #: ../fdroidserver/common.py msgid "HTTPS must be used with Subversion URLs!" msgstr "" #: ../fdroidserver/index.py msgid "Ignoring package without metadata: " msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Ignoring stale cache data for {apkfilename}" msgstr "" #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Ignoring {ext} file at '{path}'" msgstr "" #: ../fdroidserver/update.py msgid "Include APKs that are signed with disabled algorithms like MD5" msgstr "" #: ../fdroidserver/common.py msgid "Initialising submodules" msgstr "" #: ../fdroidserver/install.py msgid "Install all signed applications available" msgstr "" #: ../fdroid msgid "Install built packages on devices" msgstr "" #: ../fdroidserver/install.py #, python-format msgid "Installing %s..." msgstr "" #: ../fdroidserver/install.py #, python-brace-format msgid "Installing '{apkfilename}' on {dev}..." msgstr "" #: ../fdroid msgid "Interact with the repo HTTP server" msgstr "" #: ../fdroidserver/update.py msgid "Interactively ask about things that need updating." msgstr "" #: ../fdroidserver/update.py msgid "Invalid APK" msgstr "" #: ../fdroidserver/metadata.py #, python-format msgid "Invalid boolean '%s'" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Invalid build flag at {line} in {linedesc}" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Invalid build format: {value} in {name}" msgstr "" #: ../fdroidserver/lint.py msgid "Invalid bulleted list" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Invalid license tag \"%s\"! Use only tags from https://spdx.org/license-list" msgstr "" #: ../fdroidserver/lint.py msgid "Invalid link - use [http://foo.bar Link title] or [http://foo.bar]" msgstr "" #: ../fdroidserver/metadata.py #, python-format msgid "Invalid metadata in %s:%d" msgstr "" #: ../fdroidserver/metadata.py msgid "Invalid metadata in: " msgstr "" #: ../fdroidserver/common.py #, python-format msgid "Invalid name for published file: %s" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Invalid package name {0}" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Invalid versionCode: \"{versionCode}\" is not an integer!" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "JAR signature failed to verify: {path}" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "JAR signature verified: {path}" msgstr "" #: ../fdroidserver/publish.py ../fdroidserver/update.py #: ../fdroidserver/mirror.py msgid "Java JDK not found! Install in standard location or set java_paths!" msgstr "" #: ../fdroidserver/signindex.py msgid "Java jarsigner not found! Install in standard location or set java_paths!" msgstr "" #: ../fdroidserver/lint.py msgid "Javascript in HTML src attributes" msgstr "" #: ../fdroidserver/init.py msgid "Keystore for signing key:\t" msgstr "" #: ../fdroidserver/lint.py #, python-brace-format msgid "Last used commit '{commit}' looks like a tag, but Update Check Mode is '{ucm}'" msgstr "" #: ../fdroidserver/lint.py msgid "Liberapay donation methods belong in the LiberapayID flag" msgstr "" #: ../fdroidserver/rewritemeta.py msgid "List files that would be reformatted" msgstr "" #: ../fdroidserver/build.py msgid "Make the build stop on exceptions" msgstr "" #: ../fdroidserver/index.py msgid "Malformed repository mirrors." msgstr "" #: ../fdroidserver/server.py msgid "Malformed serverwebroot line:" msgstr "" #: ../fdroidserver/gpgsign.py msgid "Missing output directory" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Name '%s' is just the auto name - remove it" msgstr "" #: ../fdroidserver/common.py msgid "No 'config.py' found, using defaults." msgstr "" #: ../fdroidserver/common.py msgid "No Android SDK found!" msgstr "" #: ../fdroidserver/import.py msgid "No android or kivy project could be found. Specify --subdir?" msgstr "" #: ../fdroidserver/install.py msgid "No attached devices found" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "No commit specified for {versionName} in {linedesc}" msgstr "" #: ../fdroidserver/index.py msgid "No fingerprint in URL." msgstr "" #: ../fdroidserver/common.py msgid "No git submodules available" msgstr "" #: ../fdroidserver/import.py msgid "No information found." msgstr "" #: ../fdroidserver/lint.py msgid "No need to specify that the app is Free Software" msgstr "" #: ../fdroidserver/lint.py msgid "No need to specify that the app is for Android" msgstr "" #: ../fdroidserver/server.py msgid "No option set! Edit your config.py to set at least one of these:" msgstr "" #: ../fdroidserver/common.py msgid "No packages specified" msgstr "" #: ../fdroidserver/install.py #, python-format msgid "No signed apk available for %s" msgstr "" #: ../fdroidserver/install.py msgid "No signed output directory - nothing to do" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "No signing certificates found in {path}" msgstr "" #: ../fdroidserver/common.py #, python-format msgid "No such package: %s" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/common.py #, python-brace-format msgid "No such versionCode {versionCode} for app {appid}" msgstr "" #: ../fdroidserver/verify.py ../fdroidserver/publish.py msgid "No unsigned directory - nothing to do" msgstr "" #: ../fdroidserver/signindex.py msgid "Nothing to do" msgstr "" #: ../fdroidserver/checkupdates.py #, python-brace-format msgid "Nothing to do for {appid}." msgstr "" #: ../fdroidserver/init.py msgid "Now set these in config.py:" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/update.py #, python-brace-format msgid "OBB file has newer versionCode({integer}) than any APK:" msgstr "" #: ../fdroidserver/update.py msgid "OBB filename must start with \"main.\" or \"patch.\":" msgstr "" #: ../fdroidserver/update.py msgid "OBB's packagename does not match a supported APK:" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Old APK signature failed to verify: {path}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Only PNG and JPEG are supported for graphics, found: {path}" msgstr "" #: ../fdroidserver/checkupdates.py msgid "Only print differences with the Play Store" msgstr "" #: ../fdroidserver/checkupdates.py msgid "Only process apps with auto-updates" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "Options" msgstr "" #: ../fdroidserver/import.py msgid "Overall license of the project." msgstr "" #: ../fdroidserver/dscanner.py msgid "Override path for repo APKs (default: ./repo)" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Parsing manifest at '{path}'" msgstr "" #: ../fdroidserver/common.py msgid "Password required with username" msgstr "" #: ../fdroidserver/import.py msgid "Path to main Android project subdirectory, if not in root." msgstr "" msgid "Path to main android project subdirectory, if not in root." msgstr "" #: ../fdroidserver/init.py msgid "Path to the Android SDK (sometimes set in ANDROID_HOME)" msgstr "" #: ../fdroidserver/btlog.py msgid "Path to the git repo to use as the log" msgstr "" #: ../fdroidserver/init.py msgid "Path to the keystore for the repo signing key" msgstr "" #: ../fdroidserver/dscanner.py msgid "Prepare Drozer to run a scan" msgstr "" msgid "Prepare drozer to run a scan" msgstr "" #: ../fdroidserver/nightly.py msgid "Print the secret variable to the terminal for easy copy/paste" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Problem with description of {appid}: {error}" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Problem with xml at '{path}'" msgstr "" #: ../fdroidserver/checkupdates.py msgid "Process auto-updates" msgstr "" #: ../fdroidserver/publish.py ../fdroidserver/update.py #, python-brace-format msgid "Processing {apkfilename}" msgstr "" #: ../fdroidserver/checkupdates.py ../fdroidserver/scanner.py #, python-brace-format msgid "Processing {appid}" msgstr "" #: ../fdroidserver/update.py msgid "Produce human-readable XML/JSON for index files" msgstr "" #: ../fdroidserver/update.py msgid "Produce human-readable index.xml" msgstr "" #: ../fdroidserver/import.py msgid "Project URL to import from." msgstr "" #: ../fdroidserver/lint.py msgid "Punctuation should be avoided" msgstr "" #: ../fdroidserver/btlog.py msgid "Push the log to this git remote repository" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Pushing binary transparency log to {url}" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Pushing to {url}" msgstr "" #: ../fdroid msgid "Quickly start a new repository" msgstr "" #: ../fdroid msgid "Read all the metadata files and exit" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Reading '{config_file}'" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Reading minSdkVersion failed: \"{apkfilename}\"" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #. https://developer.android.com/guide/topics/manifest/manifest-element.html#vname #: ../fdroidserver/common.py #, python-brace-format msgid "Reading packageName/versionCode/versionName failed, APK invalid: '{apkfilename}'" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Reading {apkfilename} from cache" msgstr "" #: ../fdroidserver/stats.py msgid "Recalculate aggregate stats - use when changes have been made that would invalidate old cached data." msgstr "" #: ../fdroidserver/common.py msgid "Removing specified files" msgstr "" #: ../fdroidserver/update.py msgid "Rename APK files that do not match package.name_123.apk" msgstr "" #: ../fdroidserver/update.py msgid "Report on build data status" msgstr "" #: ../fdroidserver/build.py msgid "Reset and create a brand new build server, even if the existing one appears to be ok." msgstr "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "Resigning {apkfilename} with provided debug.keystore" msgstr "" #: ../fdroidserver/update.py msgid "Resize all the icons exceeding the max pixel size and exit" msgstr "" #: ../fdroidserver/common.py msgid "Restrict output to warnings and errors" msgstr "" #: ../fdroid msgid "Rewrite all the metadata files" msgstr "" #: ../fdroidserver/rewritemeta.py msgid "Rewrite to a specific format: " msgstr "" #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Rewriting '{appid}'" msgstr "" #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Rewriting '{appid}' to '{path}'" msgstr "" #: ../fdroidserver/lint.py msgid "Run rewritemeta to fix formatting" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py msgid "Running first pass with MD5 checking disabled" msgstr "" #: ../fdroidserver/mirror.py #, python-brace-format msgid "Running wget in {path}" msgstr "" #: ../fdroidserver/dscanner.py msgid "Scan only the latest version of each package" msgstr "" #: ../fdroid msgid "Scan the source code of a package" msgstr "" #: ../fdroidserver/scanner.py #, python-brace-format msgid "Scanner found {count} problems in {appid}:" msgstr "" #: ../fdroidserver/scanner.py #, python-brace-format msgid "Scanner found {count} problems in {appid}:{versionCode}:" msgstr "" #: ../fdroidserver/build.py msgid "Scanner found {} problem" msgid_plural "Scanner found {} problems" msgstr[0] "" msgstr[1] "" #: ../fdroidserver/common.py msgid "Set clock to that time using:" msgstr "" #: ../fdroidserver/build.py #, python-brace-format msgid "Set open file limit to {integer}" msgstr "" #: ../fdroid msgid "Set up an app build for a nightly build repo" msgstr "" #: ../fdroidserver/build.py msgid "Setting open file limit failed: " msgstr "" #: ../fdroidserver/build.py #, python-brace-format msgid "Setting {0} sec timeout for this build" msgstr "" #: ../fdroidserver/build.py msgid "Setup an emulator, install the APK on it and perform a Drozer scan" msgstr "" msgid "Setup an emulator, install the apk on it and perform a drozer scan" msgstr "" #: ../fdroid msgid "Sign and place packages in the repo" msgstr "" #: ../fdroid msgid "Sign indexes created using update --nosign" msgstr "" #: ../fdroidserver/build.py msgid "Skip scanning the source code for binaries and other problems" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Skipping '{apkfilename}' with invalid signature!" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Skipping index generation for {appid}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Skipping {apkfilename} with invalid signature!" msgstr "" #: ../fdroidserver/scanner.py #, python-brace-format msgid "Skipping {appid}: disabled" msgstr "" #: ../fdroidserver/scanner.py #, python-brace-format msgid "Skipping {appid}: no builds specified" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py msgid "Specify a local folder to sync the repo to" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py msgid "Specify an identity file to provide to SSH for rsyncing" msgstr "" #: ../fdroidserver/update.py msgid "Specify editor to use in interactive mode. Default " msgstr "" #, c-format msgid "Specify editor to use in interactive mode. Default %s" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Specify editor to use in interactive mode. Default is {path}" msgstr "" #: ../fdroidserver/build.py msgid "Specify that we're running on the build server" msgstr "" #: ../fdroidserver/nightly.py msgid "Specify which debug keystore file to use." msgstr "" #: ../fdroidserver/common.py msgid "Spew out even more information than normal" msgstr "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "Striping mystery signature from {apkfilename}" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Summary '%s' is just the app's name" msgstr "" #: ../fdroidserver/lint.py #, python-brace-format msgid "Summary of length {length} is over the {limit} char limit" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "System clock is older than date in {path}!" msgstr "" #: ../fdroidserver/build.py msgid "Test mode - put output in the tmp directory only, and always build, even if the output already exists." msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/update.py #, python-brace-format msgid "The OBB version code must come after \"{name}.\":" msgstr "" #: ../fdroidserver/btlog.py msgid "The base URL for the repo to log (default: https://f-droid.org)" msgstr "" #: ../fdroidserver/mirror.py msgid "The directory to write the mirror to" msgstr "" #: ../fdroidserver/server.py msgid "The only commands currently supported are 'init' and 'update'" msgstr "" #: ../fdroidserver/index.py msgid "The repository's fingerprint does not match." msgstr "" #: ../fdroidserver/common.py msgid "The repository's index could not be verified." msgstr "" #: ../fdroidserver/server.py #, python-brace-format msgid "The root dir for local_copy_dir \"{path}\" does not exist!" msgstr "" #: ../fdroidserver/nightly.py msgid "The the file to be included in the repo (path or glob)" msgstr "" #: ../fdroidserver/publish.py msgid "There is a keyalias collision - publishing halted" msgstr "" #: ../fdroidserver/import.py #, python-format msgid "This repo already has local metadata: %s" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py msgid "To use awsbucket, awssecretkey and awsaccesskeyid must also be set in config.py!" msgstr "" #: ../fdroidserver/lint.py msgid "UCM is set but it looks like checkupdates hasn't been run yet" msgstr "" #: ../fdroidserver/lint.py msgid "URL shorteners should not be used" msgstr "" #: ../fdroidserver/metadata.py msgid "URL title is just the URL, use brackets: [URL]" msgstr "" #: ../fdroidserver/lint.py #, python-brace-format msgid "URL {url} in Description: {error}" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Unexpected text on same line as {field} in {linedesc}" msgstr "" #: ../fdroid msgid "Unknown exception found!" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vname #: ../fdroidserver/lint.py #, python-brace-format msgid "Unknown file '{filename}' in build '{versionName}'" msgstr "" #: ../fdroidserver/metadata.py #, python-format msgid "Unknown metadata format: %s" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Unknown metadata format: {path}" msgstr "" #: ../fdroidserver/common.py msgid "Unknown version of aapt, might cause problems: " msgstr "" #: ../fdroidserver/lint.py msgid "Unlinkified link - use [http://foo.bar Link title] or [http://foo.bar]" msgstr "" #: ../fdroidserver/lint.py msgid "Unnecessary leading space" msgstr "" #: ../fdroidserver/lint.py msgid "Unnecessary trailing space" msgstr "" #: ../fdroidserver/metadata.py msgid "Unrecognised app field: " msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Unrecognised field '{field}' in {linedesc}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Unsupported file type \"{extension}\" for repo graphic" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Unsupported graphics file found: {path}" msgstr "" #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Unsupported metadata format, use: --to [{supported}]" msgstr "" #: ../fdroidserver/metadata.py msgid "Unterminated ]" msgstr "" #: ../fdroidserver/metadata.py msgid "Unterminated ]]" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Unterminated build in {name}" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Unterminated continuation in {name}" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Unused extlib at %s" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Unused file at %s" msgstr "" #: ../fdroidserver/lint.py msgid "Update Check Name is set to the known app id - it can be removed" msgstr "" #: ../fdroid msgid "Update repo information for new packages" msgstr "" #: ../fdroid msgid "Update the binary transparency log for a URL" msgstr "" #: ../fdroid msgid "Update the stats of the repo" msgstr "" #: ../fdroidserver/update.py ../fdroidserver/build.py msgid "Update the wiki" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "Usage" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "Usage: %s\n" msgstr "" #: ../fdroidserver/lint.py msgid "Use /HEAD instead of /master to point at a file in the default branch" msgstr "" #: ../fdroidserver/update.py msgid "Use `fdroid update -c` to create it." msgstr "" #: ../fdroidserver/build.py msgid "Use build server" msgstr "" #: ../fdroidserver/update.py msgid "Use date from APK instead of current time for newly added APKs" msgstr "" msgid "Use date from apk instead of current time for newly added apks" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Using \"{path}\" for configuring s3cmd." msgstr "" #: ../fdroidserver/common.py msgid "Using Java's jarsigner, not recommended for verifying APKs! Use apksigner" msgstr "" #: ../fdroidserver/init.py #, python-brace-format msgid "Using existing keystore \"{path}\"" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Using s3cmd to sync with: {url}" msgstr "" #: ../fdroid msgid "Valid commands are:" msgstr "" #: ../fdroid msgid "Verify the integrity of downloaded packages" msgstr "" #: ../fdroidserver/index.py msgid "Verifying index signature:" msgstr "" #: ../fdroid msgid "Warn about possible metadata errors" msgstr "" #: ../fdroidserver/update.py msgid "When configured for signed indexes, create only unsigned indexes at this stage" msgstr "" msgid "X.509 'Distiguished Name' used when generating keys" msgstr "" #: ../fdroidserver/init.py msgid "X.509 'Distinguished Name' used when generating keys" msgstr "" #: ../fdroidserver/common.py msgid "You can use ANDROID_HOME to set the path to your SDK, i.e.:" msgstr "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "adding IdentityFile to {path}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "adding to {name}: {path}" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "ambiguous option: %(option)s could match %(matches)s" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "ambiguous option: %s (%s?)" msgstr "" #: ../fdroidserver/lint.py ../fdroidserver/rewritemeta.py msgid "applicationId in the form APPID" msgstr "" #: ../fdroidserver/checkupdates.py msgid "applicationId to check for updates" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/verify.py ../fdroidserver/publish.py #: ../fdroidserver/dscanner.py ../fdroidserver/build.py #: ../fdroidserver/scanner.py ../fdroidserver/install.py msgid "applicationId with optional versionCode in the form APPID[:VERCODE]" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "argument \"-\" with mode %r" msgstr "" #: ../fdroidserver/nightly.py msgid "attempting bare ssh connection to test deploy key:" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "can't open '%s': %s" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "cannot have multiple subparser arguments" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "cannot merge actions - two groups are named %r" msgstr "" #: ../fdroidserver/nightly.py msgid "cannot publish update, did you set the deploy key?" msgstr "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "cloning {url}" msgstr "" #: ../fdroidserver/server.py msgid "command to execute, either 'init' or 'update'" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "complex" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "conflicting option string: %s" msgid_plural "conflicting option strings: %s" msgstr[0] "" msgstr[1] "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "copying {apkfilename} into {path}" msgstr "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "created {path}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "deleting: repo/{apkfilename}" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "dest= is required for options like %r" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "expected %s argument" msgid_plural "expected %s arguments" msgstr[0] "" msgstr[1] "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "expected at least one argument" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "expected at most one argument" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "expected one argument" msgstr "" #: ../fdroid msgid "fdroid [-h|--help|--version] []" msgstr "" #: ../fdroid msgid "fdroid [] [-h|--help|--version|]" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "floating-point" msgstr "" #: ../fdroidserver/metadata.py msgid "force errors to be warnings, or ignore" msgstr "" #: ../fdroidserver/metadata.py msgid "force metadata errors (default) to be warnings, or to be ignored." msgstr "" #: ../fdroidserver/common.py msgid "git svn clone failed" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "ignored explicit argument %r" msgstr "" #: ../fdroidserver/index.py msgid "index-v1 must have a signature, use `fdroid signindex` to create it!" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "integer" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "invalid %(type)s value: %(value)r" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "invalid choice: %(value)r (choose from %(choices)s)" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "invalid conflict_resolution value: %r" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "invalid option string %(option)r: must start with a character %(prefix_chars)r" msgstr "" #: ../fdroidserver/server.py #, python-brace-format msgid "local_copy_dir does not end with \"fdroid\", perhaps you meant: \"{path}\"" msgstr "" #: ../fdroidserver/server.py msgid "local_copy_dir must be an absolute path!" msgstr "" #: ../fdroidserver/server.py msgid "local_copy_dir must be directory, not a file!" msgstr "" #: ../fdroidserver/index.py #, python-format msgid "mirror '%s' does not end with 'fdroid'!" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "mutually exclusive arguments must be optional" msgstr "" #: ../fdroidserver/mirror.py #, python-brace-format msgid "no \"icon\" in {appid}" msgstr "" #: ../fdroidserver/signatures.py msgid "no APK supplied" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "no such option: %s" msgstr "" #: ../fdroid msgid "no version info found!" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "not allowed with argument %s" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "one of the arguments %s is required" msgstr "" #: ../fdroidserver/index.py ../fdroidserver/common.py msgid "only accepts strings, lists, and tuples" msgstr "" #: ../fdroidserver/install.py #, python-format msgid "option %s: If you really want to install all the signed apps, use --all" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "option %s: invalid %s value: %r" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "option %s: invalid choice: %r (choose from %s)" msgstr "" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option -%s not recognized" msgstr "" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option -%s requires argument" msgstr "" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option --%s must not have an argument" msgstr "" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option --%s not a unique prefix" msgstr "" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option --%s not recognized" msgstr "" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option --%s requires argument" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "optional arguments" msgstr "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "overwriting existing {path}" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "positional arguments" msgstr "" #: ../fdroidserver/signatures.py #, python-brace-format msgid "refuse downloading via insecure HTTP connection (use HTTPS or specify --no-https-check): {apkfilename}" msgstr "" #: ../fdroidserver/signatures.py #, python-brace-format msgid "refuse downloading via insecure http connection (use https or specify --no-https-check): {apkfilename}" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "s3cmd sync indexes {path} to {url} and delete" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "show program's version number and exit" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.5/optparse.py #: /usr/lib/python3.6/argparse.py /usr/lib/python3.6/optparse.py msgid "show this help message and exit" msgstr "" #: ../fdroidserver/signatures.py msgid "signed APK, either a file-path or HTTPS URL." msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "skipping source tarball: {path}" msgstr "" #: ../fdroidserver/lint.py msgid "srclibs missing name and/or @" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "the following arguments are required: %s" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "unexpected option string: %s" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "unknown parser %(parser_name)r (choices: %(choices)s)" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "unrecognized arguments: %s" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "unsafe permissions on '{config_file}' (should be 0600)!" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py ../fdroid msgid "usage: " msgstr "" #: ../fdroid msgid "usage: fdroid [-h|--help|--version] []" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "using Apache libcloud to sync with {url}" msgstr "" #: ../fdroidserver/publish.py #, python-brace-format msgid "{0} app, {1} key aliases" msgid_plural "{0} apps, {1} key aliases" msgstr[0] "" msgstr[1] "" #: ../fdroidserver/update.py #, python-brace-format msgid "{apkfilename} ({appid}) has no metadata!" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "{apkfilename} has multiple {name} files, looks like Master Key exploit!" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "{apkfilename}'s AndroidManifest.xml has a bad date: " msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "{appid} does not have a name! Using package name instead." msgstr "" #: ../fdroidserver/mirror.py #, python-brace-format msgid "{appid} is missing {name}" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vname #: ../fdroidserver/lint.py #, python-brace-format msgid "{appid}: Unknown extlib {path} in build '{versionName}'" msgstr "" #: ../fdroidserver/scanner.py #, python-brace-format msgid "{appid}: no builds specified, running on current source state" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "{field} not terminated in {name}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "{name} \"{path}\" does not exist! Correct it in config.py." msgstr "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "{path} does not exist! Create it by running:" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "{path} has bad file signature \"{pattern}\", possible Janus exploit!" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "{path} is zero size!" msgstr "" #: ../fdroidserver/mirror.py #, python-brace-format msgid "{url} does not end with \"fdroid\", check the URL path!" msgstr "" #: ../fdroidserver/build.py msgid "{} build failed" msgid_plural "{} builds failed" msgstr[0] "" msgstr[1] "" #: ../fdroidserver/build.py msgid "{} build succeeded" msgid_plural "{} builds succeeded" msgstr[0] "" msgstr[1] "" fdroidserver-1.0.9/locale/kab/0000775000175000017500000000000013324115531016117 5ustar hanshans00000000000000fdroidserver-1.0.9/locale/kab/LC_MESSAGES/0000775000175000017500000000000013324115531017704 5ustar hanshans00000000000000fdroidserver-1.0.9/locale/kab/LC_MESSAGES/fdroidserver.po0000664000175000017500000014326513322065577022771 0ustar hanshans00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Free Software Foundation, Inc. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: fdroidserver 0.9\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" "POT-Creation-Date: 2018-02-13 09:01+0100\n" "PO-Revision-Date: 2017-11-10 09:07+0000\n" "Last-Translator: Muḥend Belqasem \n" "Language-Team: Kabyle \n" "Language: kab\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 2.18-dev\n" #: ../fdroidserver/nightly.py msgid "" "\n" "SSH Public Key to be used as Deploy Key:" msgstr "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "" "\n" "{path} encoded for the DEBUG_KEYSTORE secret variable:" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "\"%s/\" has no matching metadata file!" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "\"{path}\" contains outdated {name} ({version})" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "\"{path}\" contains recent {name} ({version})" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "\"{path}\" exists but s3cmd is not installed!" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "\"{path}\" is not an accepted format, convert to: {formats}" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "%(option)s option requires %(number)d argument" msgid_plural "%(option)s option requires %(number)d arguments" msgstr[0] "" msgstr[1] "" #: ../fdroidserver/mirror.py #, python-format msgid "%(prog)s [options] url" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "%(prog)s: error: %(message)s\n" msgstr "" #: ../fdroidserver/scanner.py #, python-format msgid "%d problems found" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "%prog [options]" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "%r is not callable" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "%s is not an accepted build field" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "%s option does not take a value" msgstr "" #: ../fdroidserver/index.py ../fdroidserver/common.py msgid "'keypass' not found in config.py!" msgstr "'keypass' ulac-it di config.py!" #: ../fdroidserver/index.py ../fdroidserver/common.py msgid "'keystore' not found in config.py!" msgstr "'keystore' ulac-it di config.py!" #: ../fdroidserver/index.py ../fdroidserver/common.py msgid "'keystorepass' not found in config.py!" msgstr "'keystorepass' ulac-it di config.py!" #: ../fdroidserver/index.py ../fdroidserver/common.py msgid "'repo_keyalias' not found in config.py!" msgstr "'repo_keyalias' ulac-it di config.py!" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "'required' is an invalid argument for positionals" msgstr "'required' d taɣiret ur iṣeḥḥan ara i usideg" #: ../fdroidserver/common.py msgid "'sdk_path' not set in 'config.py'!" msgstr "'sdk_path' ur yettwasbadu ara 'config.py'!" #. Translators: "build-tools" is the file name of a package from #. Google, it is part of the Android SDK. So it probably shouldn't be #. translated or transliterated. #: ../fdroidserver/common.py #, python-brace-format msgid "'{aapt}' is too old, fdroid requires build-tools-23.0.0 or newer!" msgstr "'{aapt}' d aqbuṛ, fdroid yesra build-tools-23.0.0 neɣ amaynut!" #: ../fdroidserver/common.py #, fuzzy, python-brace-format msgid "'{aapt}' is too old, fdroid requires build-tools-{version} or newer!" msgstr "'{aapt}' d aqbuṛ, fdroid yesra build-tools-23.0.0 neɣ amaynut!" #: ../fdroidserver/install.py #, python-brace-format msgid "'{apkfilename}' is already installed on {dev}." msgstr "'{apkfilename}' yebded yakan ɣef {dev}." #: ../fdroidserver/common.py #, python-brace-format msgid "'{field}' will be in random order! Use () or [] brackets if order is important!" msgstr "'{field}' ad yili s usmizzwer agacuran ! Seqdec () neɣ tuccar [] ma yella ilaq usmizzwer!" #: ../fdroidserver/common.py #, python-brace-format msgid "'{path}' failed to execute!" msgstr "'{path}' ur izmir ara ad yettwaselkem!" #: ../fdroidserver/metadata.py #, python-brace-format msgid "'{value}' is not a valid {field} in {appid}. Regex pattern: {pattern}" msgstr "" #: ../fdroidserver/checkupdates.py #, python-brace-format msgid "...checkupdate failed for {appid} : {error}" msgstr "...anadi n ileqman ur yeddi ara i {appid} : {error}" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid ".__call__() not defined" msgstr ".__call__() ur yettwasbadu ara" #: ../fdroidserver/metadata.py msgid ".fdroid.txt is not supported! Convert to .fdroid.yml or .fdroid.json." msgstr "" #: ../fdroidserver/lint.py msgid "/issues is missing" msgstr "" #: ../fdroidserver/mirror.py msgid "A URL is required as an argument!" msgstr "" #: ../fdroid msgid "Add PGP signatures using GnuPG for packages in repo" msgstr "" #: ../fdroid msgid "Add a new application from its source code" msgstr "" #: ../fdroidserver/update.py msgid "Add a repo signing key to an unsigned repo" msgstr "" #: ../fdroidserver/update.py msgid "Add skeleton metadata files for APKs that are missing them" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Adding new repo for only {name}" msgstr "" #: ../fdroidserver/init.py msgid "Alias of the repo signing key in the keystore" msgstr "" #: ../fdroidserver/import.py msgid "Allows a different revision (or git branch) to be specified for the initial import" msgstr "" #: ../fdroidserver/mirror.py msgid "Also mirror the full archive section" msgstr "" #: ../fdroidserver/lint.py msgid "Also warn about formatting issues, like rewritemeta -l" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Android SDK '{path}' does not have '{dirname}' installed!" msgstr "" #: ../fdroidserver/common.py msgid "Android SDK not found!" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Android SDK path '{path}' does not exist!" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Android SDK path '{path}' is not a directory!" msgstr "" #. Translators: "build-tools" is the file name of a package from #. Google, it is part of the Android SDK. So it probably shouldn't be #. translated or transliterated. #: ../fdroidserver/common.py #, python-brace-format msgid "Android build-tools path '{path}' does not exist!" msgstr "" #: ../fdroidserver/update.py msgid "AndroidManifest.xml has no date" msgstr "" #: ../fdroidserver/lint.py #, python-brace-format msgid "App is in '{repo}' but has a link to {url}" msgstr "" #: ../fdroidserver/lint.py msgid "Appending .git is not necessary" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Archiving {apkfilename} with invalid signature!" msgstr "" #: ../fdroidserver/mirror.py msgid "Base URL to mirror, can include the index signing key using the query string: ?fingerprint=" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vname #: ../fdroidserver/lint.py #, python-brace-format msgid "Branch '{branch}' used as commit in build '{versionName}'" msgstr "" #: ../fdroidserver/lint.py #, python-brace-format msgid "Branch '{branch}' used as commit in srclib '{srclib}'" msgstr "" #: ../fdroid msgid "Build a package from source" msgstr "" #: ../fdroidserver/build.py msgid "Build all applications available" msgstr "" #: ../fdroidserver/lint.py msgid "Build generated by `fdroid import` - remove disable line once ready" msgstr "" #: ../fdroidserver/build.py msgid "Build only the latest version of each package" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Build should have comma-separated versionName and versionCode, not \"{value}\", in {linedesc}" msgstr "" #: ../fdroidserver/init.py #, python-format msgid "Built repo based in \"%s\" with this config:" msgstr "" #: ../fdroidserver/build.py msgid "Can't build due to {} error while scanning" msgid_plural "Can't build due to {} errors while scanning" msgstr[0] "" msgstr[1] "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Cannot find a packageName for {path}!" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Cannot find an appid for {path}!" msgstr "" #: ../fdroidserver/vmtools.py #, python-brace-format msgid "Cannot read \"{path}\"!" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Cannot resolve app id {appid}" msgstr "" #: ../fdroidserver/rewritemeta.py msgid "Cannot use --list and --to at the same time" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Cannot write \"{path}\", not an accepted format, use: {formats}" msgstr "" #: ../fdroidserver/lint.py msgid "Categories are not set" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Category '%s' is not valid" msgstr "" #: ../fdroid msgid "Check for updates to applications" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Checking archiving for {appid} - apks:{integer}, keepversions:{keep}, archapks:{arch}" msgstr "" #: ../fdroidserver/dscanner.py msgid "Clean after all scans have finished" msgstr "" #: ../fdroidserver/dscanner.py msgid "Clean before the scans start and rebuild the container" msgstr "" #: ../fdroidserver/dscanner.py msgid "Clean up all containers and then exit" msgstr "" #: ../fdroidserver/update.py msgid "Clean update - don't uses caches, reprocess all APKs" msgstr "" #: ../fdroidserver/import.py msgid "Comma separated list of categories." msgstr "" #: ../fdroid #, c-format, python-format msgid "Command '%s' not recognised.\n" msgstr "" #: ../fdroidserver/checkupdates.py msgid "Commit changes" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Could not find '{command}' on your system" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Could not find {path} to remove it" msgstr "" #: ../fdroidserver/update.py msgid "Could not open apk file for analysis" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/import.py msgid "Couldn't find latest version code" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vname #: ../fdroidserver/import.py msgid "Couldn't find latest version name" msgstr "" #: ../fdroidserver/import.py msgid "Couldn't find package ID" msgstr "" #: ../fdroidserver/update.py msgid "Cowardily refusing to overwrite existing signing key setup!" msgstr "" #: ../fdroidserver/update.py msgid "Create a repo signing key in a keystore" msgstr "" #: ../fdroidserver/update.py msgid "Create skeleton metadata files that are missing" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Created new container \"{name}\"" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Creating \"{path}\" for configuring s3cmd." msgstr "" #: ../fdroidserver/publish.py msgid "Creating log directory" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Creating new S3 bucket: {url}" msgstr "" #: ../fdroidserver/publish.py msgid "Creating output directory" msgstr "" #: ../fdroidserver/index.py msgid "Creating signed index with this key (SHA256):" msgstr "" #: ../fdroidserver/import.py ../fdroidserver/verify.py #: ../fdroidserver/publish.py msgid "Creating temporary directory" msgstr "" #: ../fdroidserver/index.py msgid "Creating unsigned index in preparation for signing" msgstr "" #: ../fdroidserver/nightly.py msgid "DEBUG_KEYSTORE is not set or the value is incomplete" msgstr "" #: ../fdroidserver/update.py msgid "Delete APKs and/or OBBs without metadata from the repo" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Deleting unknown file: {path}" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Description '%s' is just the app's summary" msgstr "" #: ../fdroidserver/lint.py msgid "Description has a duplicate line" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Description has a list (%s) but it isn't bulleted (*) nor numbered (#)" msgstr "" #: ../fdroidserver/lint.py #, python-brace-format msgid "Description of length {length} is over the {limit} char limit" msgstr "" #: ../fdroidserver/mirror.py #, python-brace-format msgid "Do not include \"{path}\" in URL!" msgstr "" #: ../fdroidserver/init.py msgid "Do not prompt for Android SDK path, just fail" msgstr "" #: ../fdroidserver/build.py msgid "Don't create a source tarball, useful when testing a build" msgstr "" #: ../fdroidserver/stats.py msgid "Don't do anything logs-related" msgstr "" #: ../fdroidserver/build.py msgid "Don't refresh the repository, useful when testing a build with no internet connection" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/nightly.py #: ../fdroidserver/upload.py msgid "Don't use rsync checksums" msgstr "" #: ../fdroid msgid "Download complete mirrors of small repos" msgstr "" #: ../fdroidserver/stats.py msgid "Download logs we don't have" msgstr "" #: ../fdroidserver/common.py msgid "Downloading the repository already failed once, not trying again." msgstr "" #: ../fdroidserver/verify.py #, python-brace-format msgid "Downloading {url} failed. {error}" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Duplicate build recipe found for versionCode {versionCode} in {linedesc}" msgstr "" #: ../fdroidserver/lint.py #, python-brace-format msgid "Duplicate link in '{field}': {url}" msgstr "" #: ../fdroid msgid "Dynamically scan APKs post build" msgstr "" #: ../fdroidserver/mirror.py msgid "" "ERROR: this command should never be used to mirror f-droid.org!\n" "A full mirror of f-droid.org requires more than 200GB." msgstr "" #: ../fdroidserver/nightly.py msgid "ERROR: unsupported CI type, patches welcome!" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Empty build flag at {linedesc}" msgstr "" #: ../fdroidserver/init.py #, python-format msgid "" "Enter the path to the Android SDK (%s) here:\n" "> " msgstr "" #: ../fdroidserver/server.py ../fdroidserver/checkupdates.py #: ../fdroidserver/upload.py #, python-format msgid "Error while attempting to publish log: %s" msgstr "" #: ../fdroidserver/import.py msgid "Error while getting repo address" msgstr "" #: ../fdroid msgid "Extract signatures from APKs" msgstr "" #: ../fdroidserver/signatures.py #, python-brace-format msgid "Failed fetching signatures for '{apkfilename}': {error}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Failed reading {path}: {error}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Failed resizing {path}: {error}" msgstr "" #: ../fdroidserver/publish.py msgid "Failed to align application" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Failed to create S3 bucket: {url}" msgstr "" #: ../fdroidserver/common.py msgid "Failed to get APK manifest information" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Failed to get apk information, deleting {path}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Failed to get apk information, skipping {path}" msgstr "" #: ../fdroidserver/install.py #, python-brace-format msgid "Failed to install '{apkfilename}' on {dev}: {error}" msgstr "" #: ../fdroidserver/publish.py ../fdroidserver/common.py msgid "Failed to sign application" msgstr "" #: ../fdroidserver/common.py msgid "Failed to zipalign application" msgstr "" #: ../fdroidserver/build.py #, python-brace-format msgid "Fetched buildserverid from VM: {buildserverid}" msgstr "" #: ../fdroidserver/signatures.py #, python-brace-format msgid "Fetched signatures for '{apkfilename}' -> '{sigdir}'" msgstr "" #: ../fdroidserver/verify.py ../fdroidserver/stats.py ../fdroidserver/update.py #: ../fdroidserver/rewritemeta.py ../fdroidserver/build.py #: ../fdroidserver/checkupdates.py ../fdroidserver/scanner.py #: ../fdroidserver/install.py msgid "Finished" msgstr "Immed" #: ../fdroidserver/lint.py msgid "Flattr donation methods belong in the FlattrID flag" msgstr "" #: ../fdroidserver/lint.py msgid "Forbidden HTML tags" msgstr "" #: ../fdroidserver/build.py msgid "Force build of disabled apps, and carries on regardless of scan problems. Only allowed in test mode." msgstr "" #: ../fdroidserver/build.py #, python-brace-format msgid "Force halting build after {0} sec timeout!" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Found \"{path}\" graphic without metadata for app \"{name}\"!" msgstr "" #: ../fdroidserver/common.py msgid "Found invalid appids in arguments" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/common.py msgid "Found invalid versionCodes for some apps" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Found multiple metadata files for {appid}" msgstr "" #: ../fdroidserver/index.py msgid "Found multiple signing certificates for repository." msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Found multiple signing certificates in {path}" msgstr "" #: ../fdroidserver/index.py msgid "Found no signing certificates for repository." msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Found non-file at %s" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Generated skeleton metadata for {appid}" msgstr "" #: ../fdroidserver/common.py #, python-format msgid "Git checkout of '%s' failed" msgstr "" #: ../fdroidserver/common.py msgid "Git clean failed" msgstr "" #: ../fdroidserver/common.py msgid "Git fetch failed" msgstr "" #: ../fdroidserver/common.py msgid "Git remote set-head failed" msgstr "" #: ../fdroidserver/common.py msgid "Git reset failed" msgstr "" #: ../fdroidserver/common.py msgid "Git submodule sync failed" msgstr "" #: ../fdroidserver/common.py msgid "Git submodule update failed" msgstr "" #: ../fdroidserver/common.py msgid "HTTPS must be used with Subversion URLs!" msgstr "" #: ../fdroidserver/index.py msgid "Ignoring package without metadata: " msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Ignoring stale cache data for {apkfilename}" msgstr "" #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Ignoring {ext} file at '{path}'" msgstr "" #: ../fdroidserver/update.py msgid "Include APKs that are signed with disabled algorithms like MD5" msgstr "" #: ../fdroidserver/common.py msgid "Initialising submodules" msgstr "" #: ../fdroidserver/install.py msgid "Install all signed applications available" msgstr "" #: ../fdroid msgid "Install built packages on devices" msgstr "" #: ../fdroidserver/install.py #, python-format msgid "Installing %s..." msgstr "Asbeddi n %s..." #: ../fdroidserver/install.py #, python-brace-format msgid "Installing '{apkfilename}' on {dev}..." msgstr "" #: ../fdroid msgid "Interact with the repo HTTP server" msgstr "" #: ../fdroidserver/update.py msgid "Interactively ask about things that need updating." msgstr "" #: ../fdroidserver/update.py msgid "Invalid APK" msgstr "" #: ../fdroidserver/metadata.py #, python-format msgid "Invalid boolean '%s'" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Invalid build flag at {line} in {linedesc}" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Invalid build format: {value} in {name}" msgstr "" #: ../fdroidserver/lint.py msgid "Invalid bulleted list" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Invalid license tag \"%s\"! Use only tags from https://spdx.org/license-list" msgstr "" #: ../fdroidserver/lint.py msgid "Invalid link - use [http://foo.bar Link title] or [http://foo.bar]" msgstr "" #: ../fdroidserver/metadata.py #, python-format msgid "Invalid metadata in %s:%d" msgstr "" #: ../fdroidserver/metadata.py msgid "Invalid metadata in: " msgstr "" #: ../fdroidserver/common.py #, python-format msgid "Invalid name for published file: %s" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Invalid package name {0}" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Invalid versionCode: \"{versionCode}\" is not an integer!" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "JAR signature failed to verify: {path}" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "JAR signature verified: {path}" msgstr "" #: ../fdroidserver/publish.py ../fdroidserver/update.py #: ../fdroidserver/mirror.py msgid "Java JDK not found! Install in standard location or set java_paths!" msgstr "" #: ../fdroidserver/signindex.py msgid "Java jarsigner not found! Install in standard location or set java_paths!" msgstr "" #: ../fdroidserver/lint.py msgid "Javascript in HTML src attributes" msgstr "" #: ../fdroidserver/init.py msgid "Keystore for signing key:\t" msgstr "" #: ../fdroidserver/lint.py #, python-brace-format msgid "Last used commit '{commit}' looks like a tag, but Update Check Mode is '{ucm}'" msgstr "" #: ../fdroidserver/lint.py msgid "Liberapay donation methods belong in the LiberapayID flag" msgstr "" #: ../fdroidserver/rewritemeta.py msgid "List files that would be reformatted" msgstr "" #: ../fdroidserver/build.py msgid "Make the build stop on exceptions" msgstr "" #: ../fdroidserver/index.py msgid "Malformed repository mirrors." msgstr "" #: ../fdroidserver/server.py msgid "Malformed serverwebroot line:" msgstr "" #: ../fdroidserver/gpgsign.py msgid "Missing output directory" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Name '%s' is just the auto name - remove it" msgstr "" #: ../fdroidserver/common.py msgid "No 'config.py' found, using defaults." msgstr "" #: ../fdroidserver/common.py msgid "No Android SDK found!" msgstr "" #: ../fdroidserver/import.py msgid "No android or kivy project could be found. Specify --subdir?" msgstr "" #: ../fdroidserver/install.py msgid "No attached devices found" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "No commit specified for {versionName} in {linedesc}" msgstr "" #: ../fdroidserver/index.py msgid "No fingerprint in URL." msgstr "" #: ../fdroidserver/common.py msgid "No git submodules available" msgstr "" #: ../fdroidserver/import.py msgid "No information found." msgstr "" #: ../fdroidserver/lint.py msgid "No need to specify that the app is Free Software" msgstr "" #: ../fdroidserver/lint.py msgid "No need to specify that the app is for Android" msgstr "" #: ../fdroidserver/server.py msgid "No option set! Edit your config.py to set at least one of these:" msgstr "" #: ../fdroidserver/common.py msgid "No packages specified" msgstr "" #: ../fdroidserver/install.py #, python-format msgid "No signed apk available for %s" msgstr "" #: ../fdroidserver/install.py msgid "No signed output directory - nothing to do" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "No signing certificates found in {path}" msgstr "" #: ../fdroidserver/common.py #, python-format msgid "No such package: %s" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/common.py #, python-brace-format msgid "No such versionCode {versionCode} for app {appid}" msgstr "" #: ../fdroidserver/verify.py ../fdroidserver/publish.py msgid "No unsigned directory - nothing to do" msgstr "" #: ../fdroidserver/signindex.py msgid "Nothing to do" msgstr "" #: ../fdroidserver/checkupdates.py #, python-brace-format msgid "Nothing to do for {appid}." msgstr "" #: ../fdroidserver/init.py #, fuzzy msgid "Now set these in config.py:" msgstr "'sdk_path' ur yettwasbadu ara 'config.py'!" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/update.py #, python-brace-format msgid "OBB file has newer versionCode({integer}) than any APK:" msgstr "" #: ../fdroidserver/update.py msgid "OBB filename must start with \"main.\" or \"patch.\":" msgstr "" #: ../fdroidserver/update.py msgid "OBB's packagename does not match a supported APK:" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Old APK signature failed to verify: {path}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Only PNG and JPEG are supported for graphics, found: {path}" msgstr "" #: ../fdroidserver/checkupdates.py msgid "Only print differences with the Play Store" msgstr "" #: ../fdroidserver/checkupdates.py msgid "Only process apps with auto-updates" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "Options" msgstr "Iɣewwaṛen" #: ../fdroidserver/import.py msgid "Overall license of the project." msgstr "" #: ../fdroidserver/dscanner.py msgid "Override path for repo APKs (default: ./repo)" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Parsing manifest at '{path}'" msgstr "" #: ../fdroidserver/common.py msgid "Password required with username" msgstr "" #: ../fdroidserver/import.py msgid "Path to main Android project subdirectory, if not in root." msgstr "" msgid "Path to main android project subdirectory, if not in root." msgstr "" #: ../fdroidserver/init.py msgid "Path to the Android SDK (sometimes set in ANDROID_HOME)" msgstr "" #: ../fdroidserver/btlog.py msgid "Path to the git repo to use as the log" msgstr "" #: ../fdroidserver/init.py msgid "Path to the keystore for the repo signing key" msgstr "" #: ../fdroidserver/dscanner.py msgid "Prepare Drozer to run a scan" msgstr "" msgid "Prepare drozer to run a scan" msgstr "" #: ../fdroidserver/nightly.py msgid "Print the secret variable to the terminal for easy copy/paste" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Problem with description of {appid}: {error}" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Problem with xml at '{path}'" msgstr "" #: ../fdroidserver/checkupdates.py msgid "Process auto-updates" msgstr "" #: ../fdroidserver/publish.py ../fdroidserver/update.py #, python-brace-format msgid "Processing {apkfilename}" msgstr "" #: ../fdroidserver/checkupdates.py ../fdroidserver/scanner.py #, python-brace-format msgid "Processing {appid}" msgstr "" #: ../fdroidserver/update.py msgid "Produce human-readable XML/JSON for index files" msgstr "" #: ../fdroidserver/update.py msgid "Produce human-readable index.xml" msgstr "" #: ../fdroidserver/import.py msgid "Project URL to import from." msgstr "" #: ../fdroidserver/lint.py msgid "Punctuation should be avoided" msgstr "" #: ../fdroidserver/btlog.py msgid "Push the log to this git remote repository" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Pushing binary transparency log to {url}" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Pushing to {url}" msgstr "" #: ../fdroid msgid "Quickly start a new repository" msgstr "" #: ../fdroid msgid "Read all the metadata files and exit" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Reading '{config_file}'" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Reading minSdkVersion failed: \"{apkfilename}\"" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #. https://developer.android.com/guide/topics/manifest/manifest-element.html#vname #: ../fdroidserver/common.py #, python-brace-format msgid "Reading packageName/versionCode/versionName failed, APK invalid: '{apkfilename}'" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Reading {apkfilename} from cache" msgstr "" #: ../fdroidserver/stats.py msgid "Recalculate aggregate stats - use when changes have been made that would invalidate old cached data." msgstr "" #: ../fdroidserver/common.py msgid "Removing specified files" msgstr "" #: ../fdroidserver/update.py msgid "Rename APK files that do not match package.name_123.apk" msgstr "" #: ../fdroidserver/update.py msgid "Report on build data status" msgstr "" #: ../fdroidserver/build.py msgid "Reset and create a brand new build server, even if the existing one appears to be ok." msgstr "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "Resigning {apkfilename} with provided debug.keystore" msgstr "" #: ../fdroidserver/update.py msgid "Resize all the icons exceeding the max pixel size and exit" msgstr "" #: ../fdroidserver/common.py msgid "Restrict output to warnings and errors" msgstr "" #: ../fdroid msgid "Rewrite all the metadata files" msgstr "" #: ../fdroidserver/rewritemeta.py msgid "Rewrite to a specific format: " msgstr "" #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Rewriting '{appid}'" msgstr "" #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Rewriting '{appid}' to '{path}'" msgstr "" #: ../fdroidserver/lint.py msgid "Run rewritemeta to fix formatting" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py msgid "Running first pass with MD5 checking disabled" msgstr "" #: ../fdroidserver/mirror.py #, python-brace-format msgid "Running wget in {path}" msgstr "" #: ../fdroidserver/dscanner.py msgid "Scan only the latest version of each package" msgstr "" #: ../fdroid msgid "Scan the source code of a package" msgstr "" #: ../fdroidserver/scanner.py #, python-brace-format msgid "Scanner found {count} problems in {appid}:" msgstr "" #: ../fdroidserver/scanner.py #, python-brace-format msgid "Scanner found {count} problems in {appid}:{versionCode}:" msgstr "" #: ../fdroidserver/build.py msgid "Scanner found {} problem" msgid_plural "Scanner found {} problems" msgstr[0] "" msgstr[1] "" #: ../fdroidserver/common.py msgid "Set clock to that time using:" msgstr "" #: ../fdroidserver/build.py #, python-brace-format msgid "Set open file limit to {integer}" msgstr "" #: ../fdroid msgid "Set up an app build for a nightly build repo" msgstr "" #: ../fdroidserver/build.py msgid "Setting open file limit failed: " msgstr "" #: ../fdroidserver/build.py #, python-brace-format msgid "Setting {0} sec timeout for this build" msgstr "" #: ../fdroidserver/build.py msgid "Setup an emulator, install the APK on it and perform a Drozer scan" msgstr "" msgid "Setup an emulator, install the apk on it and perform a drozer scan" msgstr "" #: ../fdroid msgid "Sign and place packages in the repo" msgstr "" #: ../fdroid msgid "Sign indexes created using update --nosign" msgstr "" #: ../fdroidserver/build.py msgid "Skip scanning the source code for binaries and other problems" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Skipping '{apkfilename}' with invalid signature!" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Skipping index generation for {appid}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Skipping {apkfilename} with invalid signature!" msgstr "" #: ../fdroidserver/scanner.py #, python-brace-format msgid "Skipping {appid}: disabled" msgstr "" #: ../fdroidserver/scanner.py #, python-brace-format msgid "Skipping {appid}: no builds specified" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py msgid "Specify a local folder to sync the repo to" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py msgid "Specify an identity file to provide to SSH for rsyncing" msgstr "" #: ../fdroidserver/update.py msgid "Specify editor to use in interactive mode. Default " msgstr "" #, c-format msgid "Specify editor to use in interactive mode. Default %s" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Specify editor to use in interactive mode. Default is {path}" msgstr "" #: ../fdroidserver/build.py msgid "Specify that we're running on the build server" msgstr "" #: ../fdroidserver/nightly.py msgid "Specify which debug keystore file to use." msgstr "" #: ../fdroidserver/common.py msgid "Spew out even more information than normal" msgstr "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "Striping mystery signature from {apkfilename}" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Summary '%s' is just the app's name" msgstr "" #: ../fdroidserver/lint.py #, python-brace-format msgid "Summary of length {length} is over the {limit} char limit" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "System clock is older than date in {path}!" msgstr "" #: ../fdroidserver/build.py msgid "Test mode - put output in the tmp directory only, and always build, even if the output already exists." msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/update.py #, python-brace-format msgid "The OBB version code must come after \"{name}.\":" msgstr "" #: ../fdroidserver/btlog.py msgid "The base URL for the repo to log (default: https://f-droid.org)" msgstr "" #: ../fdroidserver/mirror.py msgid "The directory to write the mirror to" msgstr "" #: ../fdroidserver/server.py msgid "The only commands currently supported are 'init' and 'update'" msgstr "" #: ../fdroidserver/index.py msgid "The repository's fingerprint does not match." msgstr "" #: ../fdroidserver/common.py msgid "The repository's index could not be verified." msgstr "" #: ../fdroidserver/server.py #, python-brace-format msgid "The root dir for local_copy_dir \"{path}\" does not exist!" msgstr "" #: ../fdroidserver/nightly.py msgid "The the file to be included in the repo (path or glob)" msgstr "" #: ../fdroidserver/publish.py msgid "There is a keyalias collision - publishing halted" msgstr "" #: ../fdroidserver/import.py #, python-format msgid "This repo already has local metadata: %s" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py msgid "To use awsbucket, awssecretkey and awsaccesskeyid must also be set in config.py!" msgstr "" #: ../fdroidserver/lint.py msgid "UCM is set but it looks like checkupdates hasn't been run yet" msgstr "" #: ../fdroidserver/lint.py msgid "URL shorteners should not be used" msgstr "" #: ../fdroidserver/metadata.py msgid "URL title is just the URL, use brackets: [URL]" msgstr "" #: ../fdroidserver/lint.py #, python-brace-format msgid "URL {url} in Description: {error}" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Unexpected text on same line as {field} in {linedesc}" msgstr "" #: ../fdroid msgid "Unknown exception found!" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vname #: ../fdroidserver/lint.py #, python-brace-format msgid "Unknown file '{filename}' in build '{versionName}'" msgstr "" #: ../fdroidserver/metadata.py #, python-format msgid "Unknown metadata format: %s" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Unknown metadata format: {path}" msgstr "" #: ../fdroidserver/common.py msgid "Unknown version of aapt, might cause problems: " msgstr "" #: ../fdroidserver/lint.py msgid "Unlinkified link - use [http://foo.bar Link title] or [http://foo.bar]" msgstr "" #: ../fdroidserver/lint.py msgid "Unnecessary leading space" msgstr "" #: ../fdroidserver/lint.py msgid "Unnecessary trailing space" msgstr "" #: ../fdroidserver/metadata.py msgid "Unrecognised app field: " msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Unrecognised field '{field}' in {linedesc}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Unsupported file type \"{extension}\" for repo graphic" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Unsupported graphics file found: {path}" msgstr "" #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Unsupported metadata format, use: --to [{supported}]" msgstr "" #: ../fdroidserver/metadata.py msgid "Unterminated ]" msgstr "" #: ../fdroidserver/metadata.py msgid "Unterminated ]]" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Unterminated build in {name}" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Unterminated continuation in {name}" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Unused extlib at %s" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Unused file at %s" msgstr "" #: ../fdroidserver/lint.py msgid "Update Check Name is set to the known app id - it can be removed" msgstr "" #: ../fdroid msgid "Update repo information for new packages" msgstr "" #: ../fdroid msgid "Update the binary transparency log for a URL" msgstr "" #: ../fdroid msgid "Update the stats of the repo" msgstr "Leqqem tidaddanin n ukufi" #: ../fdroidserver/update.py ../fdroidserver/build.py msgid "Update the wiki" msgstr "Leqqem awiki" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "Usage" msgstr "Aseqdec" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "Usage: %s\n" msgstr "" #: ../fdroidserver/lint.py msgid "Use /HEAD instead of /master to point at a file in the default branch" msgstr "" #: ../fdroidserver/update.py msgid "Use `fdroid update -c` to create it." msgstr "" #: ../fdroidserver/build.py msgid "Use build server" msgstr "" #: ../fdroidserver/update.py msgid "Use date from APK instead of current time for newly added APKs" msgstr "" msgid "Use date from apk instead of current time for newly added apks" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Using \"{path}\" for configuring s3cmd." msgstr "" #: ../fdroidserver/common.py msgid "Using Java's jarsigner, not recommended for verifying APKs! Use apksigner" msgstr "" #: ../fdroidserver/init.py #, python-brace-format msgid "Using existing keystore \"{path}\"" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Using s3cmd to sync with: {url}" msgstr "" #: ../fdroid msgid "Valid commands are:" msgstr "" #: ../fdroid msgid "Verify the integrity of downloaded packages" msgstr "" #: ../fdroidserver/index.py msgid "Verifying index signature:" msgstr "" #: ../fdroid msgid "Warn about possible metadata errors" msgstr "" #: ../fdroidserver/update.py msgid "When configured for signed indexes, create only unsigned indexes at this stage" msgstr "" msgid "X.509 'Distiguished Name' used when generating keys" msgstr "" #: ../fdroidserver/init.py msgid "X.509 'Distinguished Name' used when generating keys" msgstr "" #: ../fdroidserver/common.py msgid "You can use ANDROID_HOME to set the path to your SDK, i.e.:" msgstr "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "adding IdentityFile to {path}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "adding to {name}: {path}" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "ambiguous option: %(option)s could match %(matches)s" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "ambiguous option: %s (%s?)" msgstr "" #: ../fdroidserver/lint.py ../fdroidserver/rewritemeta.py msgid "applicationId in the form APPID" msgstr "" #: ../fdroidserver/checkupdates.py msgid "applicationId to check for updates" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/verify.py ../fdroidserver/publish.py #: ../fdroidserver/dscanner.py ../fdroidserver/build.py #: ../fdroidserver/scanner.py ../fdroidserver/install.py msgid "applicationId with optional versionCode in the form APPID[:VERCODE]" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "argument \"-\" with mode %r" msgstr "" #: ../fdroidserver/nightly.py msgid "attempting bare ssh connection to test deploy key:" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "can't open '%s': %s" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "cannot have multiple subparser arguments" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "cannot merge actions - two groups are named %r" msgstr "" #: ../fdroidserver/nightly.py msgid "cannot publish update, did you set the deploy key?" msgstr "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "cloning {url}" msgstr "" #: ../fdroidserver/server.py msgid "command to execute, either 'init' or 'update'" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "complex" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "conflicting option string: %s" msgid_plural "conflicting option strings: %s" msgstr[0] "" msgstr[1] "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "copying {apkfilename} into {path}" msgstr "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "created {path}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "deleting: repo/{apkfilename}" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "dest= is required for options like %r" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "expected %s argument" msgid_plural "expected %s arguments" msgstr[0] "" msgstr[1] "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "expected at least one argument" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "expected at most one argument" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "expected one argument" msgstr "" #: ../fdroid msgid "fdroid [-h|--help|--version] []" msgstr "" #: ../fdroid msgid "fdroid [] [-h|--help|--version|]" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "floating-point" msgstr "" #: ../fdroidserver/metadata.py msgid "force errors to be warnings, or ignore" msgstr "" #: ../fdroidserver/metadata.py msgid "force metadata errors (default) to be warnings, or to be ignored." msgstr "" #: ../fdroidserver/common.py msgid "git svn clone failed" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "ignored explicit argument %r" msgstr "" #: ../fdroidserver/index.py msgid "index-v1 must have a signature, use `fdroid signindex` to create it!" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "integer" msgstr "amḍan ummid" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "invalid %(type)s value: %(value)r" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "invalid choice: %(value)r (choose from %(choices)s)" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "invalid conflict_resolution value: %r" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "invalid option string %(option)r: must start with a character %(prefix_chars)r" msgstr "" #: ../fdroidserver/server.py #, python-brace-format msgid "local_copy_dir does not end with \"fdroid\", perhaps you meant: \"{path}\"" msgstr "" #: ../fdroidserver/server.py msgid "local_copy_dir must be an absolute path!" msgstr "" #: ../fdroidserver/server.py msgid "local_copy_dir must be directory, not a file!" msgstr "" #: ../fdroidserver/index.py #, python-format msgid "mirror '%s' does not end with 'fdroid'!" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "mutually exclusive arguments must be optional" msgstr "" #: ../fdroidserver/mirror.py #, python-brace-format msgid "no \"icon\" in {appid}" msgstr "" #: ../fdroidserver/signatures.py msgid "no APK supplied" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "no such option: %s" msgstr "" #: ../fdroid msgid "no version info found!" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "not allowed with argument %s" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "one of the arguments %s is required" msgstr "" #: ../fdroidserver/index.py ../fdroidserver/common.py msgid "only accepts strings, lists, and tuples" msgstr "" #: ../fdroidserver/install.py #, python-format msgid "option %s: If you really want to install all the signed apps, use --all" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "option %s: invalid %s value: %r" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "option %s: invalid choice: %r (choose from %s)" msgstr "" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option -%s not recognized" msgstr "" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option -%s requires argument" msgstr "" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option --%s must not have an argument" msgstr "" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option --%s not a unique prefix" msgstr "" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option --%s not recognized" msgstr "" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option --%s requires argument" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "optional arguments" msgstr "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "overwriting existing {path}" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "positional arguments" msgstr "" #: ../fdroidserver/signatures.py #, python-brace-format msgid "refuse downloading via insecure HTTP connection (use HTTPS or specify --no-https-check): {apkfilename}" msgstr "" #: ../fdroidserver/signatures.py #, python-brace-format msgid "refuse downloading via insecure http connection (use https or specify --no-https-check): {apkfilename}" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "s3cmd sync indexes {path} to {url} and delete" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "show program's version number and exit" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.5/optparse.py #: /usr/lib/python3.6/argparse.py /usr/lib/python3.6/optparse.py msgid "show this help message and exit" msgstr "" #: ../fdroidserver/signatures.py msgid "signed APK, either a file-path or HTTPS URL." msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "skipping source tarball: {path}" msgstr "" #: ../fdroidserver/lint.py msgid "srclibs missing name and/or @" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "the following arguments are required: %s" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "unexpected option string: %s" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "unknown parser %(parser_name)r (choices: %(choices)s)" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "unrecognized arguments: %s" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "unsafe permissions on '{config_file}' (should be 0600)!" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py ../fdroid msgid "usage: " msgstr "aqseqdac: " #: ../fdroid msgid "usage: fdroid [-h|--help|--version] []" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "using Apache libcloud to sync with {url}" msgstr "" #: ../fdroidserver/publish.py #, python-brace-format msgid "{0} app, {1} key aliases" msgid_plural "{0} apps, {1} key aliases" msgstr[0] "" msgstr[1] "" #: ../fdroidserver/update.py #, python-brace-format msgid "{apkfilename} ({appid}) has no metadata!" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "{apkfilename} has multiple {name} files, looks like Master Key exploit!" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "{apkfilename}'s AndroidManifest.xml has a bad date: " msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "{appid} does not have a name! Using package name instead." msgstr "" #: ../fdroidserver/mirror.py #, python-brace-format msgid "{appid} is missing {name}" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vname #: ../fdroidserver/lint.py #, python-brace-format msgid "{appid}: Unknown extlib {path} in build '{versionName}'" msgstr "" #: ../fdroidserver/scanner.py #, python-brace-format msgid "{appid}: no builds specified, running on current source state" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "{field} not terminated in {name}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "{name} \"{path}\" does not exist! Correct it in config.py." msgstr "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "{path} does not exist! Create it by running:" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "{path} has bad file signature \"{pattern}\", possible Janus exploit!" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "{path} is zero size!" msgstr "" #: ../fdroidserver/mirror.py #, python-brace-format msgid "{url} does not end with \"fdroid\", check the URL path!" msgstr "" #: ../fdroidserver/build.py msgid "{} build failed" msgid_plural "{} builds failed" msgstr[0] "" msgstr[1] "" #: ../fdroidserver/build.py msgid "{} build succeeded" msgid_plural "{} builds succeeded" msgstr[0] "" msgstr[1] "" fdroidserver-1.0.9/locale/fa/0000775000175000017500000000000013324115531015750 5ustar hanshans00000000000000fdroidserver-1.0.9/locale/fa/LC_MESSAGES/0000775000175000017500000000000013324115531017535 5ustar hanshans00000000000000fdroidserver-1.0.9/locale/fa/LC_MESSAGES/fdroidserver.po0000664000175000017500000014220013322065577022606 0ustar hanshans00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: fdroidserver 0.9\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" "POT-Creation-Date: 2018-02-13 09:01+0100\n" "PO-Revision-Date: 2018-02-14 15:41+0000\n" "Last-Translator: Danial Behzadi \n" "Language-Team: Persian \n" "Language: fa\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" "X-Generator: Weblate 2.19-dev\n" #: ../fdroidserver/nightly.py msgid "" "\n" "SSH Public Key to be used as Deploy Key:" msgstr "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "" "\n" "{path} encoded for the DEBUG_KEYSTORE secret variable:" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "\"%s/\" has no matching metadata file!" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "\"{path}\" contains outdated {name} ({version})" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "\"{path}\" contains recent {name} ({version})" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "\"{path}\" exists but s3cmd is not installed!" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "\"{path}\" is not an accepted format, convert to: {formats}" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "%(option)s option requires %(number)d argument" msgid_plural "%(option)s option requires %(number)d arguments" msgstr[0] "" msgstr[1] "" #: ../fdroidserver/mirror.py #, python-format msgid "%(prog)s [options] url" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "%(prog)s: error: %(message)s\n" msgstr "" #: ../fdroidserver/scanner.py #, python-format msgid "%d problems found" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "%prog [options]" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "%r is not callable" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "%s is not an accepted build field" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "%s option does not take a value" msgstr "" #: ../fdroidserver/index.py ../fdroidserver/common.py msgid "'keypass' not found in config.py!" msgstr "" #: ../fdroidserver/index.py ../fdroidserver/common.py msgid "'keystore' not found in config.py!" msgstr "" #: ../fdroidserver/index.py ../fdroidserver/common.py msgid "'keystorepass' not found in config.py!" msgstr "" #: ../fdroidserver/index.py ../fdroidserver/common.py msgid "'repo_keyalias' not found in config.py!" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "'required' is an invalid argument for positionals" msgstr "" #: ../fdroidserver/common.py msgid "'sdk_path' not set in 'config.py'!" msgstr "" #. Translators: "build-tools" is the file name of a package from #. Google, it is part of the Android SDK. So it probably shouldn't be #. translated or transliterated. #: ../fdroidserver/common.py #, python-brace-format msgid "'{aapt}' is too old, fdroid requires build-tools-23.0.0 or newer!" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "'{aapt}' is too old, fdroid requires build-tools-{version} or newer!" msgstr "" #: ../fdroidserver/install.py #, python-brace-format msgid "'{apkfilename}' is already installed on {dev}." msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "" "'{field}' will be in random order! Use () or [] brackets if order is " "important!" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "'{path}' failed to execute!" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "'{value}' is not a valid {field} in {appid}. Regex pattern: {pattern}" msgstr "" #: ../fdroidserver/checkupdates.py #, python-brace-format msgid "...checkupdate failed for {appid} : {error}" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid ".__call__() not defined" msgstr "" #: ../fdroidserver/metadata.py msgid ".fdroid.txt is not supported! Convert to .fdroid.yml or .fdroid.json." msgstr "" #: ../fdroidserver/lint.py msgid "/issues is missing" msgstr "" #: ../fdroidserver/mirror.py msgid "A URL is required as an argument!" msgstr "" #: ../fdroid msgid "Add PGP signatures using GnuPG for packages in repo" msgstr "" #: ../fdroid msgid "Add a new application from its source code" msgstr "" #: ../fdroidserver/update.py msgid "Add a repo signing key to an unsigned repo" msgstr "" #: ../fdroidserver/update.py msgid "Add skeleton metadata files for APKs that are missing them" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Adding new repo for only {name}" msgstr "" #: ../fdroidserver/init.py msgid "Alias of the repo signing key in the keystore" msgstr "" #: ../fdroidserver/import.py msgid "" "Allows a different revision (or git branch) to be specified for the initial " "import" msgstr "" #: ../fdroidserver/mirror.py msgid "Also mirror the full archive section" msgstr "" #: ../fdroidserver/lint.py msgid "Also warn about formatting issues, like rewritemeta -l" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Android SDK '{path}' does not have '{dirname}' installed!" msgstr "" #: ../fdroidserver/common.py msgid "Android SDK not found!" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Android SDK path '{path}' does not exist!" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Android SDK path '{path}' is not a directory!" msgstr "" #. Translators: "build-tools" is the file name of a package from #. Google, it is part of the Android SDK. So it probably shouldn't be #. translated or transliterated. #: ../fdroidserver/common.py #, python-brace-format msgid "Android build-tools path '{path}' does not exist!" msgstr "" #: ../fdroidserver/update.py msgid "AndroidManifest.xml has no date" msgstr "" #: ../fdroidserver/lint.py #, python-brace-format msgid "App is in '{repo}' but has a link to {url}" msgstr "" #: ../fdroidserver/lint.py msgid "Appending .git is not necessary" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Archiving {apkfilename} with invalid signature!" msgstr "" #: ../fdroidserver/mirror.py msgid "" "Base URL to mirror, can include the index signing key using the query " "string: ?fingerprint=" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vname #: ../fdroidserver/lint.py #, python-brace-format msgid "Branch '{branch}' used as commit in build '{versionName}'" msgstr "" #: ../fdroidserver/lint.py #, python-brace-format msgid "Branch '{branch}' used as commit in srclib '{srclib}'" msgstr "" #: ../fdroid msgid "Build a package from source" msgstr "" #: ../fdroidserver/build.py msgid "Build all applications available" msgstr "" #: ../fdroidserver/lint.py msgid "Build generated by `fdroid import` - remove disable line once ready" msgstr "" #: ../fdroidserver/build.py msgid "Build only the latest version of each package" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "" "Build should have comma-separated versionName and versionCode, not " "\"{value}\", in {linedesc}" msgstr "" #: ../fdroidserver/init.py #, python-format msgid "Built repo based in \"%s\" with this config:" msgstr "" #: ../fdroidserver/build.py msgid "Can't build due to {} error while scanning" msgid_plural "Can't build due to {} errors while scanning" msgstr[0] "" msgstr[1] "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Cannot find a packageName for {path}!" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Cannot find an appid for {path}!" msgstr "" #: ../fdroidserver/vmtools.py #, python-brace-format msgid "Cannot read \"{path}\"!" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Cannot resolve app id {appid}" msgstr "" #: ../fdroidserver/rewritemeta.py msgid "Cannot use --list and --to at the same time" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Cannot write \"{path}\", not an accepted format, use: {formats}" msgstr "" #: ../fdroidserver/lint.py msgid "Categories are not set" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Category '%s' is not valid" msgstr "" #: ../fdroid msgid "Check for updates to applications" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "" "Checking archiving for {appid} - apks:{integer}, keepversions:{keep}, " "archapks:{arch}" msgstr "" #: ../fdroidserver/dscanner.py msgid "Clean after all scans have finished" msgstr "" #: ../fdroidserver/dscanner.py msgid "Clean before the scans start and rebuild the container" msgstr "" #: ../fdroidserver/dscanner.py msgid "Clean up all containers and then exit" msgstr "" #: ../fdroidserver/update.py msgid "Clean update - don't uses caches, reprocess all APKs" msgstr "" #: ../fdroidserver/import.py msgid "Comma separated list of categories." msgstr "" #: ../fdroid #, c-format, python-format msgid "Command '%s' not recognised.\n" msgstr "" #: ../fdroidserver/checkupdates.py msgid "Commit changes" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Could not find '{command}' on your system" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Could not find {path} to remove it" msgstr "" #: ../fdroidserver/update.py msgid "Could not open apk file for analysis" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/import.py msgid "Couldn't find latest version code" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vname #: ../fdroidserver/import.py msgid "Couldn't find latest version name" msgstr "" #: ../fdroidserver/import.py msgid "Couldn't find package ID" msgstr "" #: ../fdroidserver/update.py msgid "Cowardily refusing to overwrite existing signing key setup!" msgstr "" #: ../fdroidserver/update.py msgid "Create a repo signing key in a keystore" msgstr "" #: ../fdroidserver/update.py msgid "Create skeleton metadata files that are missing" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Created new container \"{name}\"" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Creating \"{path}\" for configuring s3cmd." msgstr "" #: ../fdroidserver/publish.py msgid "Creating log directory" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Creating new S3 bucket: {url}" msgstr "" #: ../fdroidserver/publish.py msgid "Creating output directory" msgstr "" #: ../fdroidserver/index.py msgid "Creating signed index with this key (SHA256):" msgstr "" #: ../fdroidserver/import.py ../fdroidserver/verify.py #: ../fdroidserver/publish.py msgid "Creating temporary directory" msgstr "" #: ../fdroidserver/index.py msgid "Creating unsigned index in preparation for signing" msgstr "" #: ../fdroidserver/nightly.py msgid "DEBUG_KEYSTORE is not set or the value is incomplete" msgstr "" #: ../fdroidserver/update.py msgid "Delete APKs and/or OBBs without metadata from the repo" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Deleting unknown file: {path}" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Description '%s' is just the app's summary" msgstr "" #: ../fdroidserver/lint.py msgid "Description has a duplicate line" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Description has a list (%s) but it isn't bulleted (*) nor numbered (#)" msgstr "" #: ../fdroidserver/lint.py #, python-brace-format msgid "Description of length {length} is over the {limit} char limit" msgstr "" #: ../fdroidserver/mirror.py #, python-brace-format msgid "Do not include \"{path}\" in URL!" msgstr "" #: ../fdroidserver/init.py msgid "Do not prompt for Android SDK path, just fail" msgstr "" #: ../fdroidserver/build.py msgid "Don't create a source tarball, useful when testing a build" msgstr "" #: ../fdroidserver/stats.py msgid "Don't do anything logs-related" msgstr "" #: ../fdroidserver/build.py msgid "" "Don't refresh the repository, useful when testing a build with no internet " "connection" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/nightly.py #: ../fdroidserver/upload.py msgid "Don't use rsync checksums" msgstr "" #: ../fdroid msgid "Download complete mirrors of small repos" msgstr "" #: ../fdroidserver/stats.py msgid "Download logs we don't have" msgstr "" #: ../fdroidserver/common.py msgid "Downloading the repository already failed once, not trying again." msgstr "" #: ../fdroidserver/verify.py #, python-brace-format msgid "Downloading {url} failed. {error}" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "" "Duplicate build recipe found for versionCode {versionCode} in {linedesc}" msgstr "" #: ../fdroidserver/lint.py #, python-brace-format msgid "Duplicate link in '{field}': {url}" msgstr "" #: ../fdroid msgid "Dynamically scan APKs post build" msgstr "" #: ../fdroidserver/mirror.py msgid "" "ERROR: this command should never be used to mirror f-droid.org!\n" "A full mirror of f-droid.org requires more than 200GB." msgstr "" #: ../fdroidserver/nightly.py msgid "ERROR: unsupported CI type, patches welcome!" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Empty build flag at {linedesc}" msgstr "" #: ../fdroidserver/init.py #, python-format msgid "" "Enter the path to the Android SDK (%s) here:\n" "> " msgstr "" #: ../fdroidserver/server.py ../fdroidserver/checkupdates.py #: ../fdroidserver/upload.py #, python-format msgid "Error while attempting to publish log: %s" msgstr "" #: ../fdroidserver/import.py msgid "Error while getting repo address" msgstr "" #: ../fdroid msgid "Extract signatures from APKs" msgstr "" #: ../fdroidserver/signatures.py #, python-brace-format msgid "Failed fetching signatures for '{apkfilename}': {error}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Failed reading {path}: {error}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Failed resizing {path}: {error}" msgstr "" #: ../fdroidserver/publish.py msgid "Failed to align application" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Failed to create S3 bucket: {url}" msgstr "" #: ../fdroidserver/common.py msgid "Failed to get APK manifest information" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Failed to get apk information, deleting {path}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Failed to get apk information, skipping {path}" msgstr "" #: ../fdroidserver/install.py #, python-brace-format msgid "Failed to install '{apkfilename}' on {dev}: {error}" msgstr "" #: ../fdroidserver/publish.py ../fdroidserver/common.py msgid "Failed to sign application" msgstr "" #: ../fdroidserver/common.py msgid "Failed to zipalign application" msgstr "" #: ../fdroidserver/build.py #, python-brace-format msgid "Fetched buildserverid from VM: {buildserverid}" msgstr "" #: ../fdroidserver/signatures.py #, python-brace-format msgid "Fetched signatures for '{apkfilename}' -> '{sigdir}'" msgstr "" #: ../fdroidserver/verify.py ../fdroidserver/stats.py ../fdroidserver/update.py #: ../fdroidserver/rewritemeta.py ../fdroidserver/build.py #: ../fdroidserver/checkupdates.py ../fdroidserver/scanner.py #: ../fdroidserver/install.py msgid "Finished" msgstr "" #: ../fdroidserver/lint.py msgid "Flattr donation methods belong in the FlattrID flag" msgstr "" #: ../fdroidserver/lint.py msgid "Forbidden HTML tags" msgstr "" #: ../fdroidserver/build.py msgid "" "Force build of disabled apps, and carries on regardless of scan problems. " "Only allowed in test mode." msgstr "" #: ../fdroidserver/build.py #, python-brace-format msgid "Force halting build after {0} sec timeout!" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Found \"{path}\" graphic without metadata for app \"{name}\"!" msgstr "" #: ../fdroidserver/common.py msgid "Found invalid appids in arguments" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/common.py msgid "Found invalid versionCodes for some apps" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Found multiple metadata files for {appid}" msgstr "" #: ../fdroidserver/index.py msgid "Found multiple signing certificates for repository." msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Found multiple signing certificates in {path}" msgstr "" #: ../fdroidserver/index.py msgid "Found no signing certificates for repository." msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Found non-file at %s" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Generated skeleton metadata for {appid}" msgstr "" #: ../fdroidserver/common.py #, python-format msgid "Git checkout of '%s' failed" msgstr "" #: ../fdroidserver/common.py msgid "Git clean failed" msgstr "" #: ../fdroidserver/common.py msgid "Git fetch failed" msgstr "" #: ../fdroidserver/common.py msgid "Git remote set-head failed" msgstr "" #: ../fdroidserver/common.py msgid "Git reset failed" msgstr "" #: ../fdroidserver/common.py msgid "Git submodule sync failed" msgstr "" #: ../fdroidserver/common.py msgid "Git submodule update failed" msgstr "" #: ../fdroidserver/common.py msgid "HTTPS must be used with Subversion URLs!" msgstr "" #: ../fdroidserver/index.py msgid "Ignoring package without metadata: " msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Ignoring stale cache data for {apkfilename}" msgstr "" #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Ignoring {ext} file at '{path}'" msgstr "" #: ../fdroidserver/update.py msgid "Include APKs that are signed with disabled algorithms like MD5" msgstr "" #: ../fdroidserver/common.py msgid "Initialising submodules" msgstr "" #: ../fdroidserver/install.py msgid "Install all signed applications available" msgstr "" #: ../fdroid msgid "Install built packages on devices" msgstr "" #: ../fdroidserver/install.py #, python-format msgid "Installing %s..." msgstr "" #: ../fdroidserver/install.py #, python-brace-format msgid "Installing '{apkfilename}' on {dev}..." msgstr "" #: ../fdroid msgid "Interact with the repo HTTP server" msgstr "" #: ../fdroidserver/update.py msgid "Interactively ask about things that need updating." msgstr "" #: ../fdroidserver/update.py msgid "Invalid APK" msgstr "" #: ../fdroidserver/metadata.py #, python-format msgid "Invalid boolean '%s'" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Invalid build flag at {line} in {linedesc}" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Invalid build format: {value} in {name}" msgstr "" #: ../fdroidserver/lint.py msgid "Invalid bulleted list" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "" "Invalid license tag \"%s\"! Use only tags from https://spdx.org/license-list" msgstr "" #: ../fdroidserver/lint.py msgid "Invalid link - use [http://foo.bar Link title] or [http://foo.bar]" msgstr "" #: ../fdroidserver/metadata.py #, python-format msgid "Invalid metadata in %s:%d" msgstr "" #: ../fdroidserver/metadata.py msgid "Invalid metadata in: " msgstr "" #: ../fdroidserver/common.py #, python-format msgid "Invalid name for published file: %s" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Invalid package name {0}" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Invalid versionCode: \"{versionCode}\" is not an integer!" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "JAR signature failed to verify: {path}" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "JAR signature verified: {path}" msgstr "" #: ../fdroidserver/publish.py ../fdroidserver/update.py #: ../fdroidserver/mirror.py msgid "Java JDK not found! Install in standard location or set java_paths!" msgstr "" #: ../fdroidserver/signindex.py msgid "" "Java jarsigner not found! Install in standard location or set java_paths!" msgstr "" #: ../fdroidserver/lint.py msgid "Javascript in HTML src attributes" msgstr "" #: ../fdroidserver/init.py msgid "Keystore for signing key:\t" msgstr "" #: ../fdroidserver/lint.py #, python-brace-format msgid "" "Last used commit '{commit}' looks like a tag, but Update Check Mode is " "'{ucm}'" msgstr "" #: ../fdroidserver/lint.py msgid "Liberapay donation methods belong in the LiberapayID flag" msgstr "" #: ../fdroidserver/rewritemeta.py msgid "List files that would be reformatted" msgstr "" #: ../fdroidserver/build.py msgid "Make the build stop on exceptions" msgstr "" #: ../fdroidserver/index.py msgid "Malformed repository mirrors." msgstr "" #: ../fdroidserver/server.py msgid "Malformed serverwebroot line:" msgstr "" #: ../fdroidserver/gpgsign.py msgid "Missing output directory" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Name '%s' is just the auto name - remove it" msgstr "" #: ../fdroidserver/common.py msgid "No 'config.py' found, using defaults." msgstr "" #: ../fdroidserver/common.py msgid "No Android SDK found!" msgstr "" #: ../fdroidserver/import.py msgid "No android or kivy project could be found. Specify --subdir?" msgstr "" #: ../fdroidserver/install.py msgid "No attached devices found" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "No commit specified for {versionName} in {linedesc}" msgstr "" #: ../fdroidserver/index.py msgid "No fingerprint in URL." msgstr "" #: ../fdroidserver/common.py msgid "No git submodules available" msgstr "" #: ../fdroidserver/import.py msgid "No information found." msgstr "" #: ../fdroidserver/lint.py msgid "No need to specify that the app is Free Software" msgstr "" #: ../fdroidserver/lint.py msgid "No need to specify that the app is for Android" msgstr "" #: ../fdroidserver/server.py msgid "No option set! Edit your config.py to set at least one of these:" msgstr "" #: ../fdroidserver/common.py msgid "No packages specified" msgstr "" #: ../fdroidserver/install.py #, python-format msgid "No signed apk available for %s" msgstr "" #: ../fdroidserver/install.py msgid "No signed output directory - nothing to do" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "No signing certificates found in {path}" msgstr "" #: ../fdroidserver/common.py #, python-format msgid "No such package: %s" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/common.py #, python-brace-format msgid "No such versionCode {versionCode} for app {appid}" msgstr "" #: ../fdroidserver/verify.py ../fdroidserver/publish.py msgid "No unsigned directory - nothing to do" msgstr "" #: ../fdroidserver/signindex.py msgid "Nothing to do" msgstr "" #: ../fdroidserver/checkupdates.py #, python-brace-format msgid "Nothing to do for {appid}." msgstr "" #: ../fdroidserver/init.py msgid "Now set these in config.py:" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/update.py #, python-brace-format msgid "OBB file has newer versionCode({integer}) than any APK:" msgstr "" #: ../fdroidserver/update.py msgid "OBB filename must start with \"main.\" or \"patch.\":" msgstr "" #: ../fdroidserver/update.py msgid "OBB's packagename does not match a supported APK:" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Old APK signature failed to verify: {path}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Only PNG and JPEG are supported for graphics, found: {path}" msgstr "" #: ../fdroidserver/checkupdates.py msgid "Only print differences with the Play Store" msgstr "" #: ../fdroidserver/checkupdates.py msgid "Only process apps with auto-updates" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "Options" msgstr "انتخاب‌ها" #: ../fdroidserver/import.py msgid "Overall license of the project." msgstr "" #: ../fdroidserver/dscanner.py msgid "Override path for repo APKs (default: ./repo)" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Parsing manifest at '{path}'" msgstr "" #: ../fdroidserver/common.py msgid "Password required with username" msgstr "" #: ../fdroidserver/import.py msgid "Path to main Android project subdirectory, if not in root." msgstr "" msgid "Path to main android project subdirectory, if not in root." msgstr "" #: ../fdroidserver/init.py msgid "Path to the Android SDK (sometimes set in ANDROID_HOME)" msgstr "" #: ../fdroidserver/btlog.py msgid "Path to the git repo to use as the log" msgstr "" #: ../fdroidserver/init.py msgid "Path to the keystore for the repo signing key" msgstr "" #: ../fdroidserver/dscanner.py msgid "Prepare Drozer to run a scan" msgstr "" msgid "Prepare drozer to run a scan" msgstr "" #: ../fdroidserver/nightly.py msgid "Print the secret variable to the terminal for easy copy/paste" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Problem with description of {appid}: {error}" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Problem with xml at '{path}'" msgstr "" #: ../fdroidserver/checkupdates.py msgid "Process auto-updates" msgstr "" #: ../fdroidserver/publish.py ../fdroidserver/update.py #, python-brace-format msgid "Processing {apkfilename}" msgstr "" #: ../fdroidserver/checkupdates.py ../fdroidserver/scanner.py #, python-brace-format msgid "Processing {appid}" msgstr "" #: ../fdroidserver/update.py msgid "Produce human-readable XML/JSON for index files" msgstr "" #: ../fdroidserver/update.py msgid "Produce human-readable index.xml" msgstr "" #: ../fdroidserver/import.py msgid "Project URL to import from." msgstr "" #: ../fdroidserver/lint.py msgid "Punctuation should be avoided" msgstr "" #: ../fdroidserver/btlog.py msgid "Push the log to this git remote repository" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Pushing binary transparency log to {url}" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Pushing to {url}" msgstr "" #: ../fdroid msgid "Quickly start a new repository" msgstr "" #: ../fdroid msgid "Read all the metadata files and exit" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Reading '{config_file}'" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Reading minSdkVersion failed: \"{apkfilename}\"" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #. https://developer.android.com/guide/topics/manifest/manifest-element.html#vname #: ../fdroidserver/common.py #, python-brace-format msgid "" "Reading packageName/versionCode/versionName failed, APK invalid: " "'{apkfilename}'" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Reading {apkfilename} from cache" msgstr "" #: ../fdroidserver/stats.py msgid "" "Recalculate aggregate stats - use when changes have been made that would " "invalidate old cached data." msgstr "" #: ../fdroidserver/common.py msgid "Removing specified files" msgstr "" #: ../fdroidserver/update.py msgid "Rename APK files that do not match package.name_123.apk" msgstr "" #: ../fdroidserver/update.py msgid "Report on build data status" msgstr "" #: ../fdroidserver/build.py msgid "" "Reset and create a brand new build server, even if the existing one appears " "to be ok." msgstr "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "Resigning {apkfilename} with provided debug.keystore" msgstr "" #: ../fdroidserver/update.py msgid "Resize all the icons exceeding the max pixel size and exit" msgstr "" #: ../fdroidserver/common.py msgid "Restrict output to warnings and errors" msgstr "" #: ../fdroid msgid "Rewrite all the metadata files" msgstr "" #: ../fdroidserver/rewritemeta.py msgid "Rewrite to a specific format: " msgstr "" #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Rewriting '{appid}'" msgstr "" #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Rewriting '{appid}' to '{path}'" msgstr "" #: ../fdroidserver/lint.py msgid "Run rewritemeta to fix formatting" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py msgid "Running first pass with MD5 checking disabled" msgstr "" #: ../fdroidserver/mirror.py #, python-brace-format msgid "Running wget in {path}" msgstr "" #: ../fdroidserver/dscanner.py msgid "Scan only the latest version of each package" msgstr "" #: ../fdroid msgid "Scan the source code of a package" msgstr "" #: ../fdroidserver/scanner.py #, python-brace-format msgid "Scanner found {count} problems in {appid}:" msgstr "" #: ../fdroidserver/scanner.py #, python-brace-format msgid "Scanner found {count} problems in {appid}:{versionCode}:" msgstr "" #: ../fdroidserver/build.py msgid "Scanner found {} problem" msgid_plural "Scanner found {} problems" msgstr[0] "" msgstr[1] "" #: ../fdroidserver/common.py msgid "Set clock to that time using:" msgstr "" #: ../fdroidserver/build.py #, python-brace-format msgid "Set open file limit to {integer}" msgstr "" #: ../fdroid msgid "Set up an app build for a nightly build repo" msgstr "" #: ../fdroidserver/build.py msgid "Setting open file limit failed: " msgstr "" #: ../fdroidserver/build.py #, python-brace-format msgid "Setting {0} sec timeout for this build" msgstr "" #: ../fdroidserver/build.py msgid "Setup an emulator, install the APK on it and perform a Drozer scan" msgstr "" msgid "Setup an emulator, install the apk on it and perform a drozer scan" msgstr "" #: ../fdroid msgid "Sign and place packages in the repo" msgstr "" #: ../fdroid msgid "Sign indexes created using update --nosign" msgstr "" #: ../fdroidserver/build.py msgid "Skip scanning the source code for binaries and other problems" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Skipping '{apkfilename}' with invalid signature!" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Skipping index generation for {appid}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Skipping {apkfilename} with invalid signature!" msgstr "" #: ../fdroidserver/scanner.py #, python-brace-format msgid "Skipping {appid}: disabled" msgstr "" #: ../fdroidserver/scanner.py #, python-brace-format msgid "Skipping {appid}: no builds specified" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py msgid "Specify a local folder to sync the repo to" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py msgid "Specify an identity file to provide to SSH for rsyncing" msgstr "" #: ../fdroidserver/update.py msgid "Specify editor to use in interactive mode. Default " msgstr "" #, c-format msgid "Specify editor to use in interactive mode. Default %s" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Specify editor to use in interactive mode. Default is {path}" msgstr "" #: ../fdroidserver/build.py msgid "Specify that we're running on the build server" msgstr "" #: ../fdroidserver/nightly.py msgid "Specify which debug keystore file to use." msgstr "" #: ../fdroidserver/common.py msgid "Spew out even more information than normal" msgstr "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "Striping mystery signature from {apkfilename}" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Summary '%s' is just the app's name" msgstr "" #: ../fdroidserver/lint.py #, python-brace-format msgid "Summary of length {length} is over the {limit} char limit" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "System clock is older than date in {path}!" msgstr "" #: ../fdroidserver/build.py msgid "" "Test mode - put output in the tmp directory only, and always build, even if " "the output already exists." msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/update.py #, python-brace-format msgid "The OBB version code must come after \"{name}.\":" msgstr "" #: ../fdroidserver/btlog.py msgid "The base URL for the repo to log (default: https://f-droid.org)" msgstr "" #: ../fdroidserver/mirror.py msgid "The directory to write the mirror to" msgstr "" #: ../fdroidserver/server.py msgid "The only commands currently supported are 'init' and 'update'" msgstr "" #: ../fdroidserver/index.py msgid "The repository's fingerprint does not match." msgstr "" #: ../fdroidserver/common.py msgid "The repository's index could not be verified." msgstr "" #: ../fdroidserver/server.py #, python-brace-format msgid "The root dir for local_copy_dir \"{path}\" does not exist!" msgstr "" #: ../fdroidserver/nightly.py msgid "The the file to be included in the repo (path or glob)" msgstr "" #: ../fdroidserver/publish.py msgid "There is a keyalias collision - publishing halted" msgstr "" #: ../fdroidserver/import.py #, python-format msgid "This repo already has local metadata: %s" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py msgid "" "To use awsbucket, awssecretkey and awsaccesskeyid must also be set in config." "py!" msgstr "" #: ../fdroidserver/lint.py msgid "UCM is set but it looks like checkupdates hasn't been run yet" msgstr "" #: ../fdroidserver/lint.py msgid "URL shorteners should not be used" msgstr "" #: ../fdroidserver/metadata.py msgid "URL title is just the URL, use brackets: [URL]" msgstr "" #: ../fdroidserver/lint.py #, python-brace-format msgid "URL {url} in Description: {error}" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Unexpected text on same line as {field} in {linedesc}" msgstr "" #: ../fdroid msgid "Unknown exception found!" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vname #: ../fdroidserver/lint.py #, python-brace-format msgid "Unknown file '{filename}' in build '{versionName}'" msgstr "" #: ../fdroidserver/metadata.py #, python-format msgid "Unknown metadata format: %s" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Unknown metadata format: {path}" msgstr "" #: ../fdroidserver/common.py msgid "Unknown version of aapt, might cause problems: " msgstr "" #: ../fdroidserver/lint.py msgid "Unlinkified link - use [http://foo.bar Link title] or [http://foo.bar]" msgstr "" #: ../fdroidserver/lint.py msgid "Unnecessary leading space" msgstr "" #: ../fdroidserver/lint.py msgid "Unnecessary trailing space" msgstr "" #: ../fdroidserver/metadata.py msgid "Unrecognised app field: " msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Unrecognised field '{field}' in {linedesc}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Unsupported file type \"{extension}\" for repo graphic" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Unsupported graphics file found: {path}" msgstr "" #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Unsupported metadata format, use: --to [{supported}]" msgstr "" #: ../fdroidserver/metadata.py msgid "Unterminated ]" msgstr "" #: ../fdroidserver/metadata.py msgid "Unterminated ]]" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Unterminated build in {name}" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Unterminated continuation in {name}" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Unused extlib at %s" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Unused file at %s" msgstr "" #: ../fdroidserver/lint.py msgid "Update Check Name is set to the known app id - it can be removed" msgstr "" #: ../fdroid msgid "Update repo information for new packages" msgstr "" #: ../fdroid msgid "Update the binary transparency log for a URL" msgstr "" #: ../fdroid msgid "Update the stats of the repo" msgstr "" #: ../fdroidserver/update.py ../fdroidserver/build.py msgid "Update the wiki" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "Usage" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "Usage: %s\n" msgstr "" #: ../fdroidserver/lint.py msgid "Use /HEAD instead of /master to point at a file in the default branch" msgstr "" #: ../fdroidserver/update.py msgid "Use `fdroid update -c` to create it." msgstr "" #: ../fdroidserver/build.py msgid "Use build server" msgstr "" #: ../fdroidserver/update.py msgid "Use date from APK instead of current time for newly added APKs" msgstr "" msgid "Use date from apk instead of current time for newly added apks" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Using \"{path}\" for configuring s3cmd." msgstr "" #: ../fdroidserver/common.py msgid "" "Using Java's jarsigner, not recommended for verifying APKs! Use apksigner" msgstr "" #: ../fdroidserver/init.py #, python-brace-format msgid "Using existing keystore \"{path}\"" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Using s3cmd to sync with: {url}" msgstr "" #: ../fdroid msgid "Valid commands are:" msgstr "" #: ../fdroid msgid "Verify the integrity of downloaded packages" msgstr "" #: ../fdroidserver/index.py msgid "Verifying index signature:" msgstr "" #: ../fdroid msgid "Warn about possible metadata errors" msgstr "" #: ../fdroidserver/update.py msgid "" "When configured for signed indexes, create only unsigned indexes at this " "stage" msgstr "" msgid "X.509 'Distiguished Name' used when generating keys" msgstr "" #: ../fdroidserver/init.py msgid "X.509 'Distinguished Name' used when generating keys" msgstr "" #: ../fdroidserver/common.py msgid "You can use ANDROID_HOME to set the path to your SDK, i.e.:" msgstr "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "adding IdentityFile to {path}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "adding to {name}: {path}" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "ambiguous option: %(option)s could match %(matches)s" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "ambiguous option: %s (%s?)" msgstr "" #: ../fdroidserver/lint.py ../fdroidserver/rewritemeta.py msgid "applicationId in the form APPID" msgstr "" #: ../fdroidserver/checkupdates.py msgid "applicationId to check for updates" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/verify.py ../fdroidserver/publish.py #: ../fdroidserver/dscanner.py ../fdroidserver/build.py #: ../fdroidserver/scanner.py ../fdroidserver/install.py msgid "applicationId with optional versionCode in the form APPID[:VERCODE]" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "argument \"-\" with mode %r" msgstr "" #: ../fdroidserver/nightly.py msgid "attempting bare ssh connection to test deploy key:" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "can't open '%s': %s" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "cannot have multiple subparser arguments" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "cannot merge actions - two groups are named %r" msgstr "" #: ../fdroidserver/nightly.py msgid "cannot publish update, did you set the deploy key?" msgstr "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "cloning {url}" msgstr "" #: ../fdroidserver/server.py msgid "command to execute, either 'init' or 'update'" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "complex" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "conflicting option string: %s" msgid_plural "conflicting option strings: %s" msgstr[0] "" msgstr[1] "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "copying {apkfilename} into {path}" msgstr "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "created {path}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "deleting: repo/{apkfilename}" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "dest= is required for options like %r" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "expected %s argument" msgid_plural "expected %s arguments" msgstr[0] "" msgstr[1] "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "expected at least one argument" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "expected at most one argument" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "expected one argument" msgstr "" #: ../fdroid msgid "fdroid [-h|--help|--version] []" msgstr "" #: ../fdroid msgid "fdroid [] [-h|--help|--version|]" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "floating-point" msgstr "" #: ../fdroidserver/metadata.py msgid "force errors to be warnings, or ignore" msgstr "" #: ../fdroidserver/metadata.py msgid "force metadata errors (default) to be warnings, or to be ignored." msgstr "" #: ../fdroidserver/common.py msgid "git svn clone failed" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "ignored explicit argument %r" msgstr "" #: ../fdroidserver/index.py msgid "index-v1 must have a signature, use `fdroid signindex` to create it!" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "integer" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "invalid %(type)s value: %(value)r" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "invalid choice: %(value)r (choose from %(choices)s)" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "invalid conflict_resolution value: %r" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "" "invalid option string %(option)r: must start with a character " "%(prefix_chars)r" msgstr "" #: ../fdroidserver/server.py #, python-brace-format msgid "" "local_copy_dir does not end with \"fdroid\", perhaps you meant: \"{path}\"" msgstr "" #: ../fdroidserver/server.py msgid "local_copy_dir must be an absolute path!" msgstr "" #: ../fdroidserver/server.py msgid "local_copy_dir must be directory, not a file!" msgstr "" #: ../fdroidserver/index.py #, python-format msgid "mirror '%s' does not end with 'fdroid'!" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "mutually exclusive arguments must be optional" msgstr "" #: ../fdroidserver/mirror.py #, python-brace-format msgid "no \"icon\" in {appid}" msgstr "" #: ../fdroidserver/signatures.py msgid "no APK supplied" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "no such option: %s" msgstr "" #: ../fdroid msgid "no version info found!" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "not allowed with argument %s" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "one of the arguments %s is required" msgstr "" #: ../fdroidserver/index.py ../fdroidserver/common.py msgid "only accepts strings, lists, and tuples" msgstr "" #: ../fdroidserver/install.py #, python-format msgid "option %s: If you really want to install all the signed apps, use --all" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "option %s: invalid %s value: %r" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "option %s: invalid choice: %r (choose from %s)" msgstr "" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option -%s not recognized" msgstr "" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option -%s requires argument" msgstr "" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option --%s must not have an argument" msgstr "" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option --%s not a unique prefix" msgstr "" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option --%s not recognized" msgstr "" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option --%s requires argument" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "optional arguments" msgstr "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "overwriting existing {path}" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "positional arguments" msgstr "" #: ../fdroidserver/signatures.py #, python-brace-format msgid "" "refuse downloading via insecure HTTP connection (use HTTPS or specify --no-" "https-check): {apkfilename}" msgstr "" #: ../fdroidserver/signatures.py #, python-brace-format msgid "" "refuse downloading via insecure http connection (use https or specify --no-" "https-check): {apkfilename}" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "s3cmd sync indexes {path} to {url} and delete" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "show program's version number and exit" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.5/optparse.py #: /usr/lib/python3.6/argparse.py /usr/lib/python3.6/optparse.py msgid "show this help message and exit" msgstr "" #: ../fdroidserver/signatures.py msgid "signed APK, either a file-path or HTTPS URL." msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "skipping source tarball: {path}" msgstr "" #: ../fdroidserver/lint.py msgid "srclibs missing name and/or @" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "the following arguments are required: %s" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "unexpected option string: %s" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "unknown parser %(parser_name)r (choices: %(choices)s)" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "unrecognized arguments: %s" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "unsafe permissions on '{config_file}' (should be 0600)!" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py ../fdroid msgid "usage: " msgstr "" #: ../fdroid msgid "usage: fdroid [-h|--help|--version] []" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "using Apache libcloud to sync with {url}" msgstr "" #: ../fdroidserver/publish.py #, python-brace-format msgid "{0} app, {1} key aliases" msgid_plural "{0} apps, {1} key aliases" msgstr[0] "" msgstr[1] "" #: ../fdroidserver/update.py #, python-brace-format msgid "{apkfilename} ({appid}) has no metadata!" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "{apkfilename} has multiple {name} files, looks like Master Key exploit!" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "{apkfilename}'s AndroidManifest.xml has a bad date: " msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "{appid} does not have a name! Using package name instead." msgstr "" #: ../fdroidserver/mirror.py #, python-brace-format msgid "{appid} is missing {name}" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vname #: ../fdroidserver/lint.py #, python-brace-format msgid "{appid}: Unknown extlib {path} in build '{versionName}'" msgstr "" #: ../fdroidserver/scanner.py #, python-brace-format msgid "{appid}: no builds specified, running on current source state" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "{field} not terminated in {name}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "{name} \"{path}\" does not exist! Correct it in config.py." msgstr "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "{path} does not exist! Create it by running:" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "{path} has bad file signature \"{pattern}\", possible Janus exploit!" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "{path} is zero size!" msgstr "" #: ../fdroidserver/mirror.py #, python-brace-format msgid "{url} does not end with \"fdroid\", check the URL path!" msgstr "" #: ../fdroidserver/build.py msgid "{} build failed" msgid_plural "{} builds failed" msgstr[0] "" msgstr[1] "" #: ../fdroidserver/build.py msgid "{} build succeeded" msgid_plural "{} builds succeeded" msgstr[0] "" msgstr[1] "" fdroidserver-1.0.9/locale/ru/0000775000175000017500000000000013324115531016010 5ustar hanshans00000000000000fdroidserver-1.0.9/locale/ru/LC_MESSAGES/0000775000175000017500000000000013324115531017575 5ustar hanshans00000000000000fdroidserver-1.0.9/locale/ru/LC_MESSAGES/fdroidserver.po0000664000175000017500000014171513322065577022660 0ustar hanshans00000000000000# SOME DESCRIPTIVE TITLE. # This file is put in the public domain. # FIRST AUTHOR , YEAR. # msgid "" msgstr "Project-Id-Version: fdroidserver 1.0.0-95-gd7af22b\nReport-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\nPOT-Creation-Date: 2018-02-13 09:01+0100\nPO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\nLast-Translator: Automatically generated\nLanguage-Team: none\nLanguage: ru\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\nContent-Transfer-Encoding: 8bit\nPlural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" #: ../fdroidserver/nightly.py msgid "" "\n" "SSH Public Key to be used as Deploy Key:" msgstr "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "" "\n" "{path} encoded for the DEBUG_KEYSTORE secret variable:" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "\"%s/\" has no matching metadata file!" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "\"{path}\" contains outdated {name} ({version})" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "\"{path}\" contains recent {name} ({version})" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "\"{path}\" exists but s3cmd is not installed!" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "\"{path}\" is not an accepted format, convert to: {formats}" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "%(option)s option requires %(number)d argument" msgid_plural "%(option)s option requires %(number)d arguments" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: ../fdroidserver/mirror.py #, python-format msgid "%(prog)s [options] url" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "%(prog)s: error: %(message)s\n" msgstr "" #: ../fdroidserver/scanner.py #, python-format msgid "%d problems found" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "%prog [options]" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "%r is not callable" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "%s is not an accepted build field" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "%s option does not take a value" msgstr "" #: ../fdroidserver/index.py ../fdroidserver/common.py msgid "'keypass' not found in config.py!" msgstr "" #: ../fdroidserver/index.py ../fdroidserver/common.py msgid "'keystore' not found in config.py!" msgstr "" #: ../fdroidserver/index.py ../fdroidserver/common.py msgid "'keystorepass' not found in config.py!" msgstr "" #: ../fdroidserver/index.py ../fdroidserver/common.py msgid "'repo_keyalias' not found in config.py!" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "'required' is an invalid argument for positionals" msgstr "" #: ../fdroidserver/common.py msgid "'sdk_path' not set in 'config.py'!" msgstr "" #. Translators: "build-tools" is the file name of a package from #. Google, it is part of the Android SDK. So it probably shouldn't be #. translated or transliterated. #: ../fdroidserver/common.py #, python-brace-format msgid "'{aapt}' is too old, fdroid requires build-tools-23.0.0 or newer!" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "'{aapt}' is too old, fdroid requires build-tools-{version} or newer!" msgstr "" #: ../fdroidserver/install.py #, python-brace-format msgid "'{apkfilename}' is already installed on {dev}." msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "'{field}' will be in random order! Use () or [] brackets if order is important!" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "'{path}' failed to execute!" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "'{value}' is not a valid {field} in {appid}. Regex pattern: {pattern}" msgstr "" #: ../fdroidserver/checkupdates.py #, python-brace-format msgid "...checkupdate failed for {appid} : {error}" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid ".__call__() not defined" msgstr "" #: ../fdroidserver/metadata.py msgid ".fdroid.txt is not supported! Convert to .fdroid.yml or .fdroid.json." msgstr "" #: ../fdroidserver/lint.py msgid "/issues is missing" msgstr "" #: ../fdroidserver/mirror.py msgid "A URL is required as an argument!" msgstr "" #: ../fdroid msgid "Add PGP signatures using GnuPG for packages in repo" msgstr "" #: ../fdroid msgid "Add a new application from its source code" msgstr "" #: ../fdroidserver/update.py msgid "Add a repo signing key to an unsigned repo" msgstr "" #: ../fdroidserver/update.py msgid "Add skeleton metadata files for APKs that are missing them" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Adding new repo for only {name}" msgstr "" #: ../fdroidserver/init.py msgid "Alias of the repo signing key in the keystore" msgstr "" #: ../fdroidserver/import.py msgid "Allows a different revision (or git branch) to be specified for the initial import" msgstr "" #: ../fdroidserver/mirror.py msgid "Also mirror the full archive section" msgstr "" #: ../fdroidserver/lint.py msgid "Also warn about formatting issues, like rewritemeta -l" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Android SDK '{path}' does not have '{dirname}' installed!" msgstr "" #: ../fdroidserver/common.py msgid "Android SDK not found!" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Android SDK path '{path}' does not exist!" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Android SDK path '{path}' is not a directory!" msgstr "" #. Translators: "build-tools" is the file name of a package from #. Google, it is part of the Android SDK. So it probably shouldn't be #. translated or transliterated. #: ../fdroidserver/common.py #, python-brace-format msgid "Android build-tools path '{path}' does not exist!" msgstr "" #: ../fdroidserver/update.py msgid "AndroidManifest.xml has no date" msgstr "" #: ../fdroidserver/lint.py #, python-brace-format msgid "App is in '{repo}' but has a link to {url}" msgstr "" #: ../fdroidserver/lint.py msgid "Appending .git is not necessary" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Archiving {apkfilename} with invalid signature!" msgstr "" #: ../fdroidserver/mirror.py msgid "Base URL to mirror, can include the index signing key using the query string: ?fingerprint=" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vname #: ../fdroidserver/lint.py #, python-brace-format msgid "Branch '{branch}' used as commit in build '{versionName}'" msgstr "" #: ../fdroidserver/lint.py #, python-brace-format msgid "Branch '{branch}' used as commit in srclib '{srclib}'" msgstr "" #: ../fdroid msgid "Build a package from source" msgstr "" #: ../fdroidserver/build.py msgid "Build all applications available" msgstr "" #: ../fdroidserver/lint.py msgid "Build generated by `fdroid import` - remove disable line once ready" msgstr "" #: ../fdroidserver/build.py msgid "Build only the latest version of each package" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Build should have comma-separated versionName and versionCode, not \"{value}\", in {linedesc}" msgstr "" #: ../fdroidserver/init.py #, python-format msgid "Built repo based in \"%s\" with this config:" msgstr "" #: ../fdroidserver/build.py msgid "Can't build due to {} error while scanning" msgid_plural "Can't build due to {} errors while scanning" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Cannot find a packageName for {path}!" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Cannot find an appid for {path}!" msgstr "" #: ../fdroidserver/vmtools.py #, python-brace-format msgid "Cannot read \"{path}\"!" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Cannot resolve app id {appid}" msgstr "" #: ../fdroidserver/rewritemeta.py msgid "Cannot use --list and --to at the same time" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Cannot write \"{path}\", not an accepted format, use: {formats}" msgstr "" #: ../fdroidserver/lint.py msgid "Categories are not set" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Category '%s' is not valid" msgstr "" #: ../fdroid msgid "Check for updates to applications" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Checking archiving for {appid} - apks:{integer}, keepversions:{keep}, archapks:{arch}" msgstr "" #: ../fdroidserver/dscanner.py msgid "Clean after all scans have finished" msgstr "" #: ../fdroidserver/dscanner.py msgid "Clean before the scans start and rebuild the container" msgstr "" #: ../fdroidserver/dscanner.py msgid "Clean up all containers and then exit" msgstr "" #: ../fdroidserver/update.py msgid "Clean update - don't uses caches, reprocess all APKs" msgstr "" #: ../fdroidserver/import.py msgid "Comma separated list of categories." msgstr "" #: ../fdroid #, c-format, python-format msgid "Command '%s' not recognised.\n" msgstr "" #: ../fdroidserver/checkupdates.py msgid "Commit changes" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Could not find '{command}' on your system" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Could not find {path} to remove it" msgstr "" #: ../fdroidserver/update.py msgid "Could not open apk file for analysis" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/import.py msgid "Couldn't find latest version code" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vname #: ../fdroidserver/import.py msgid "Couldn't find latest version name" msgstr "" #: ../fdroidserver/import.py msgid "Couldn't find package ID" msgstr "" #: ../fdroidserver/update.py msgid "Cowardily refusing to overwrite existing signing key setup!" msgstr "" #: ../fdroidserver/update.py msgid "Create a repo signing key in a keystore" msgstr "" #: ../fdroidserver/update.py msgid "Create skeleton metadata files that are missing" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Created new container \"{name}\"" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Creating \"{path}\" for configuring s3cmd." msgstr "" #: ../fdroidserver/publish.py msgid "Creating log directory" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Creating new S3 bucket: {url}" msgstr "" #: ../fdroidserver/publish.py msgid "Creating output directory" msgstr "" #: ../fdroidserver/index.py msgid "Creating signed index with this key (SHA256):" msgstr "" #: ../fdroidserver/import.py ../fdroidserver/verify.py #: ../fdroidserver/publish.py msgid "Creating temporary directory" msgstr "" #: ../fdroidserver/index.py msgid "Creating unsigned index in preparation for signing" msgstr "" #: ../fdroidserver/nightly.py msgid "DEBUG_KEYSTORE is not set or the value is incomplete" msgstr "" #: ../fdroidserver/update.py msgid "Delete APKs and/or OBBs without metadata from the repo" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Deleting unknown file: {path}" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Description '%s' is just the app's summary" msgstr "" #: ../fdroidserver/lint.py msgid "Description has a duplicate line" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Description has a list (%s) but it isn't bulleted (*) nor numbered (#)" msgstr "" #: ../fdroidserver/lint.py #, python-brace-format msgid "Description of length {length} is over the {limit} char limit" msgstr "" #: ../fdroidserver/mirror.py #, python-brace-format msgid "Do not include \"{path}\" in URL!" msgstr "" #: ../fdroidserver/init.py msgid "Do not prompt for Android SDK path, just fail" msgstr "" #: ../fdroidserver/build.py msgid "Don't create a source tarball, useful when testing a build" msgstr "" #: ../fdroidserver/stats.py msgid "Don't do anything logs-related" msgstr "" #: ../fdroidserver/build.py msgid "Don't refresh the repository, useful when testing a build with no internet connection" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/nightly.py #: ../fdroidserver/upload.py msgid "Don't use rsync checksums" msgstr "" #: ../fdroid msgid "Download complete mirrors of small repos" msgstr "" #: ../fdroidserver/stats.py msgid "Download logs we don't have" msgstr "" #: ../fdroidserver/common.py msgid "Downloading the repository already failed once, not trying again." msgstr "" #: ../fdroidserver/verify.py #, python-brace-format msgid "Downloading {url} failed. {error}" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Duplicate build recipe found for versionCode {versionCode} in {linedesc}" msgstr "" #: ../fdroidserver/lint.py #, python-brace-format msgid "Duplicate link in '{field}': {url}" msgstr "" #: ../fdroid msgid "Dynamically scan APKs post build" msgstr "" #: ../fdroidserver/mirror.py msgid "" "ERROR: this command should never be used to mirror f-droid.org!\n" "A full mirror of f-droid.org requires more than 200GB." msgstr "" #: ../fdroidserver/nightly.py msgid "ERROR: unsupported CI type, patches welcome!" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Empty build flag at {linedesc}" msgstr "" #: ../fdroidserver/init.py #, python-format msgid "" "Enter the path to the Android SDK (%s) here:\n" "> " msgstr "" #: ../fdroidserver/server.py ../fdroidserver/checkupdates.py #: ../fdroidserver/upload.py #, python-format msgid "Error while attempting to publish log: %s" msgstr "" #: ../fdroidserver/import.py msgid "Error while getting repo address" msgstr "" #: ../fdroid msgid "Extract signatures from APKs" msgstr "" #: ../fdroidserver/signatures.py #, python-brace-format msgid "Failed fetching signatures for '{apkfilename}': {error}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Failed reading {path}: {error}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Failed resizing {path}: {error}" msgstr "" #: ../fdroidserver/publish.py msgid "Failed to align application" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Failed to create S3 bucket: {url}" msgstr "" #: ../fdroidserver/common.py msgid "Failed to get APK manifest information" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Failed to get apk information, deleting {path}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Failed to get apk information, skipping {path}" msgstr "" #: ../fdroidserver/install.py #, python-brace-format msgid "Failed to install '{apkfilename}' on {dev}: {error}" msgstr "" #: ../fdroidserver/publish.py ../fdroidserver/common.py msgid "Failed to sign application" msgstr "" #: ../fdroidserver/common.py msgid "Failed to zipalign application" msgstr "" #: ../fdroidserver/build.py #, python-brace-format msgid "Fetched buildserverid from VM: {buildserverid}" msgstr "" #: ../fdroidserver/signatures.py #, python-brace-format msgid "Fetched signatures for '{apkfilename}' -> '{sigdir}'" msgstr "" #: ../fdroidserver/verify.py ../fdroidserver/stats.py ../fdroidserver/update.py #: ../fdroidserver/rewritemeta.py ../fdroidserver/build.py #: ../fdroidserver/checkupdates.py ../fdroidserver/scanner.py #: ../fdroidserver/install.py msgid "Finished" msgstr "" #: ../fdroidserver/lint.py msgid "Flattr donation methods belong in the FlattrID flag" msgstr "" #: ../fdroidserver/lint.py msgid "Forbidden HTML tags" msgstr "" #: ../fdroidserver/build.py msgid "Force build of disabled apps, and carries on regardless of scan problems. Only allowed in test mode." msgstr "" #: ../fdroidserver/build.py #, python-brace-format msgid "Force halting build after {0} sec timeout!" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Found \"{path}\" graphic without metadata for app \"{name}\"!" msgstr "" #: ../fdroidserver/common.py msgid "Found invalid appids in arguments" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/common.py msgid "Found invalid versionCodes for some apps" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Found multiple metadata files for {appid}" msgstr "" #: ../fdroidserver/index.py msgid "Found multiple signing certificates for repository." msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Found multiple signing certificates in {path}" msgstr "" #: ../fdroidserver/index.py msgid "Found no signing certificates for repository." msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Found non-file at %s" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Generated skeleton metadata for {appid}" msgstr "" #: ../fdroidserver/common.py #, python-format msgid "Git checkout of '%s' failed" msgstr "" #: ../fdroidserver/common.py msgid "Git clean failed" msgstr "" #: ../fdroidserver/common.py msgid "Git fetch failed" msgstr "" #: ../fdroidserver/common.py msgid "Git remote set-head failed" msgstr "" #: ../fdroidserver/common.py msgid "Git reset failed" msgstr "" #: ../fdroidserver/common.py msgid "Git submodule sync failed" msgstr "" #: ../fdroidserver/common.py msgid "Git submodule update failed" msgstr "" #: ../fdroidserver/common.py msgid "HTTPS must be used with Subversion URLs!" msgstr "" #: ../fdroidserver/index.py msgid "Ignoring package without metadata: " msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Ignoring stale cache data for {apkfilename}" msgstr "" #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Ignoring {ext} file at '{path}'" msgstr "" #: ../fdroidserver/update.py msgid "Include APKs that are signed with disabled algorithms like MD5" msgstr "" #: ../fdroidserver/common.py msgid "Initialising submodules" msgstr "" #: ../fdroidserver/install.py msgid "Install all signed applications available" msgstr "" #: ../fdroid msgid "Install built packages on devices" msgstr "" #: ../fdroidserver/install.py #, python-format msgid "Installing %s..." msgstr "" #: ../fdroidserver/install.py #, python-brace-format msgid "Installing '{apkfilename}' on {dev}..." msgstr "" #: ../fdroid msgid "Interact with the repo HTTP server" msgstr "" #: ../fdroidserver/update.py msgid "Interactively ask about things that need updating." msgstr "" #: ../fdroidserver/update.py msgid "Invalid APK" msgstr "" #: ../fdroidserver/metadata.py #, python-format msgid "Invalid boolean '%s'" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Invalid build flag at {line} in {linedesc}" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Invalid build format: {value} in {name}" msgstr "" #: ../fdroidserver/lint.py msgid "Invalid bulleted list" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Invalid license tag \"%s\"! Use only tags from https://spdx.org/license-list" msgstr "" #: ../fdroidserver/lint.py msgid "Invalid link - use [http://foo.bar Link title] or [http://foo.bar]" msgstr "" #: ../fdroidserver/metadata.py #, python-format msgid "Invalid metadata in %s:%d" msgstr "" #: ../fdroidserver/metadata.py msgid "Invalid metadata in: " msgstr "" #: ../fdroidserver/common.py #, python-format msgid "Invalid name for published file: %s" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Invalid package name {0}" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Invalid versionCode: \"{versionCode}\" is not an integer!" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "JAR signature failed to verify: {path}" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "JAR signature verified: {path}" msgstr "" #: ../fdroidserver/publish.py ../fdroidserver/update.py #: ../fdroidserver/mirror.py msgid "Java JDK not found! Install in standard location or set java_paths!" msgstr "" #: ../fdroidserver/signindex.py msgid "Java jarsigner not found! Install in standard location or set java_paths!" msgstr "" #: ../fdroidserver/lint.py msgid "Javascript in HTML src attributes" msgstr "" #: ../fdroidserver/init.py msgid "Keystore for signing key:\t" msgstr "" #: ../fdroidserver/lint.py #, python-brace-format msgid "Last used commit '{commit}' looks like a tag, but Update Check Mode is '{ucm}'" msgstr "" #: ../fdroidserver/lint.py msgid "Liberapay donation methods belong in the LiberapayID flag" msgstr "" #: ../fdroidserver/rewritemeta.py msgid "List files that would be reformatted" msgstr "" #: ../fdroidserver/build.py msgid "Make the build stop on exceptions" msgstr "" #: ../fdroidserver/index.py msgid "Malformed repository mirrors." msgstr "" #: ../fdroidserver/server.py msgid "Malformed serverwebroot line:" msgstr "" #: ../fdroidserver/gpgsign.py msgid "Missing output directory" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Name '%s' is just the auto name - remove it" msgstr "" #: ../fdroidserver/common.py msgid "No 'config.py' found, using defaults." msgstr "" #: ../fdroidserver/common.py msgid "No Android SDK found!" msgstr "" #: ../fdroidserver/import.py msgid "No android or kivy project could be found. Specify --subdir?" msgstr "" #: ../fdroidserver/install.py msgid "No attached devices found" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "No commit specified for {versionName} in {linedesc}" msgstr "" #: ../fdroidserver/index.py msgid "No fingerprint in URL." msgstr "" #: ../fdroidserver/common.py msgid "No git submodules available" msgstr "" #: ../fdroidserver/import.py msgid "No information found." msgstr "" #: ../fdroidserver/lint.py msgid "No need to specify that the app is Free Software" msgstr "" #: ../fdroidserver/lint.py msgid "No need to specify that the app is for Android" msgstr "" #: ../fdroidserver/server.py msgid "No option set! Edit your config.py to set at least one of these:" msgstr "" #: ../fdroidserver/common.py msgid "No packages specified" msgstr "" #: ../fdroidserver/install.py #, python-format msgid "No signed apk available for %s" msgstr "" #: ../fdroidserver/install.py msgid "No signed output directory - nothing to do" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "No signing certificates found in {path}" msgstr "" #: ../fdroidserver/common.py #, python-format msgid "No such package: %s" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/common.py #, python-brace-format msgid "No such versionCode {versionCode} for app {appid}" msgstr "" #: ../fdroidserver/verify.py ../fdroidserver/publish.py msgid "No unsigned directory - nothing to do" msgstr "" #: ../fdroidserver/signindex.py msgid "Nothing to do" msgstr "" #: ../fdroidserver/checkupdates.py #, python-brace-format msgid "Nothing to do for {appid}." msgstr "" #: ../fdroidserver/init.py msgid "Now set these in config.py:" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/update.py #, python-brace-format msgid "OBB file has newer versionCode({integer}) than any APK:" msgstr "" #: ../fdroidserver/update.py msgid "OBB filename must start with \"main.\" or \"patch.\":" msgstr "" #: ../fdroidserver/update.py msgid "OBB's packagename does not match a supported APK:" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Old APK signature failed to verify: {path}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Only PNG and JPEG are supported for graphics, found: {path}" msgstr "" #: ../fdroidserver/checkupdates.py msgid "Only print differences with the Play Store" msgstr "" #: ../fdroidserver/checkupdates.py msgid "Only process apps with auto-updates" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "Options" msgstr "" #: ../fdroidserver/import.py msgid "Overall license of the project." msgstr "" #: ../fdroidserver/dscanner.py msgid "Override path for repo APKs (default: ./repo)" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Parsing manifest at '{path}'" msgstr "" #: ../fdroidserver/common.py msgid "Password required with username" msgstr "" #: ../fdroidserver/import.py msgid "Path to main Android project subdirectory, if not in root." msgstr "" msgid "Path to main android project subdirectory, if not in root." msgstr "" #: ../fdroidserver/init.py msgid "Path to the Android SDK (sometimes set in ANDROID_HOME)" msgstr "" #: ../fdroidserver/btlog.py msgid "Path to the git repo to use as the log" msgstr "" #: ../fdroidserver/init.py msgid "Path to the keystore for the repo signing key" msgstr "" #: ../fdroidserver/dscanner.py msgid "Prepare Drozer to run a scan" msgstr "" msgid "Prepare drozer to run a scan" msgstr "" #: ../fdroidserver/nightly.py msgid "Print the secret variable to the terminal for easy copy/paste" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Problem with description of {appid}: {error}" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Problem with xml at '{path}'" msgstr "" #: ../fdroidserver/checkupdates.py msgid "Process auto-updates" msgstr "" #: ../fdroidserver/publish.py ../fdroidserver/update.py #, python-brace-format msgid "Processing {apkfilename}" msgstr "" #: ../fdroidserver/checkupdates.py ../fdroidserver/scanner.py #, python-brace-format msgid "Processing {appid}" msgstr "" #: ../fdroidserver/update.py msgid "Produce human-readable XML/JSON for index files" msgstr "" #: ../fdroidserver/update.py msgid "Produce human-readable index.xml" msgstr "" #: ../fdroidserver/import.py msgid "Project URL to import from." msgstr "" #: ../fdroidserver/lint.py msgid "Punctuation should be avoided" msgstr "" #: ../fdroidserver/btlog.py msgid "Push the log to this git remote repository" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Pushing binary transparency log to {url}" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Pushing to {url}" msgstr "" #: ../fdroid msgid "Quickly start a new repository" msgstr "" #: ../fdroid msgid "Read all the metadata files and exit" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Reading '{config_file}'" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Reading minSdkVersion failed: \"{apkfilename}\"" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #. https://developer.android.com/guide/topics/manifest/manifest-element.html#vname #: ../fdroidserver/common.py #, python-brace-format msgid "Reading packageName/versionCode/versionName failed, APK invalid: '{apkfilename}'" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Reading {apkfilename} from cache" msgstr "" #: ../fdroidserver/stats.py msgid "Recalculate aggregate stats - use when changes have been made that would invalidate old cached data." msgstr "" #: ../fdroidserver/common.py msgid "Removing specified files" msgstr "" #: ../fdroidserver/update.py msgid "Rename APK files that do not match package.name_123.apk" msgstr "" #: ../fdroidserver/update.py msgid "Report on build data status" msgstr "" #: ../fdroidserver/build.py msgid "Reset and create a brand new build server, even if the existing one appears to be ok." msgstr "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "Resigning {apkfilename} with provided debug.keystore" msgstr "" #: ../fdroidserver/update.py msgid "Resize all the icons exceeding the max pixel size and exit" msgstr "" #: ../fdroidserver/common.py msgid "Restrict output to warnings and errors" msgstr "" #: ../fdroid msgid "Rewrite all the metadata files" msgstr "" #: ../fdroidserver/rewritemeta.py msgid "Rewrite to a specific format: " msgstr "" #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Rewriting '{appid}'" msgstr "" #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Rewriting '{appid}' to '{path}'" msgstr "" #: ../fdroidserver/lint.py msgid "Run rewritemeta to fix formatting" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py msgid "Running first pass with MD5 checking disabled" msgstr "" #: ../fdroidserver/mirror.py #, python-brace-format msgid "Running wget in {path}" msgstr "" #: ../fdroidserver/dscanner.py msgid "Scan only the latest version of each package" msgstr "" #: ../fdroid msgid "Scan the source code of a package" msgstr "" #: ../fdroidserver/scanner.py #, python-brace-format msgid "Scanner found {count} problems in {appid}:" msgstr "" #: ../fdroidserver/scanner.py #, python-brace-format msgid "Scanner found {count} problems in {appid}:{versionCode}:" msgstr "" #: ../fdroidserver/build.py msgid "Scanner found {} problem" msgid_plural "Scanner found {} problems" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: ../fdroidserver/common.py msgid "Set clock to that time using:" msgstr "" #: ../fdroidserver/build.py #, python-brace-format msgid "Set open file limit to {integer}" msgstr "" #: ../fdroid msgid "Set up an app build for a nightly build repo" msgstr "" #: ../fdroidserver/build.py msgid "Setting open file limit failed: " msgstr "" #: ../fdroidserver/build.py #, python-brace-format msgid "Setting {0} sec timeout for this build" msgstr "" #: ../fdroidserver/build.py msgid "Setup an emulator, install the APK on it and perform a Drozer scan" msgstr "" msgid "Setup an emulator, install the apk on it and perform a drozer scan" msgstr "" #: ../fdroid msgid "Sign and place packages in the repo" msgstr "" #: ../fdroid msgid "Sign indexes created using update --nosign" msgstr "" #: ../fdroidserver/build.py msgid "Skip scanning the source code for binaries and other problems" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Skipping '{apkfilename}' with invalid signature!" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Skipping index generation for {appid}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Skipping {apkfilename} with invalid signature!" msgstr "" #: ../fdroidserver/scanner.py #, python-brace-format msgid "Skipping {appid}: disabled" msgstr "" #: ../fdroidserver/scanner.py #, python-brace-format msgid "Skipping {appid}: no builds specified" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py msgid "Specify a local folder to sync the repo to" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py msgid "Specify an identity file to provide to SSH for rsyncing" msgstr "" #: ../fdroidserver/update.py msgid "Specify editor to use in interactive mode. Default " msgstr "" #, c-format msgid "Specify editor to use in interactive mode. Default %s" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Specify editor to use in interactive mode. Default is {path}" msgstr "" #: ../fdroidserver/build.py msgid "Specify that we're running on the build server" msgstr "" #: ../fdroidserver/nightly.py msgid "Specify which debug keystore file to use." msgstr "" #: ../fdroidserver/common.py msgid "Spew out even more information than normal" msgstr "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "Striping mystery signature from {apkfilename}" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Summary '%s' is just the app's name" msgstr "" #: ../fdroidserver/lint.py #, python-brace-format msgid "Summary of length {length} is over the {limit} char limit" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "System clock is older than date in {path}!" msgstr "" #: ../fdroidserver/build.py msgid "Test mode - put output in the tmp directory only, and always build, even if the output already exists." msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/update.py #, python-brace-format msgid "The OBB version code must come after \"{name}.\":" msgstr "" #: ../fdroidserver/btlog.py msgid "The base URL for the repo to log (default: https://f-droid.org)" msgstr "" #: ../fdroidserver/mirror.py msgid "The directory to write the mirror to" msgstr "" #: ../fdroidserver/server.py msgid "The only commands currently supported are 'init' and 'update'" msgstr "" #: ../fdroidserver/index.py msgid "The repository's fingerprint does not match." msgstr "" #: ../fdroidserver/common.py msgid "The repository's index could not be verified." msgstr "" #: ../fdroidserver/server.py #, python-brace-format msgid "The root dir for local_copy_dir \"{path}\" does not exist!" msgstr "" #: ../fdroidserver/nightly.py msgid "The the file to be included in the repo (path or glob)" msgstr "" #: ../fdroidserver/publish.py msgid "There is a keyalias collision - publishing halted" msgstr "" #: ../fdroidserver/import.py #, python-format msgid "This repo already has local metadata: %s" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py msgid "To use awsbucket, awssecretkey and awsaccesskeyid must also be set in config.py!" msgstr "" #: ../fdroidserver/lint.py msgid "UCM is set but it looks like checkupdates hasn't been run yet" msgstr "" #: ../fdroidserver/lint.py msgid "URL shorteners should not be used" msgstr "" #: ../fdroidserver/metadata.py msgid "URL title is just the URL, use brackets: [URL]" msgstr "" #: ../fdroidserver/lint.py #, python-brace-format msgid "URL {url} in Description: {error}" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Unexpected text on same line as {field} in {linedesc}" msgstr "" #: ../fdroid msgid "Unknown exception found!" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vname #: ../fdroidserver/lint.py #, python-brace-format msgid "Unknown file '{filename}' in build '{versionName}'" msgstr "" #: ../fdroidserver/metadata.py #, python-format msgid "Unknown metadata format: %s" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Unknown metadata format: {path}" msgstr "" #: ../fdroidserver/common.py msgid "Unknown version of aapt, might cause problems: " msgstr "" #: ../fdroidserver/lint.py msgid "Unlinkified link - use [http://foo.bar Link title] or [http://foo.bar]" msgstr "" #: ../fdroidserver/lint.py msgid "Unnecessary leading space" msgstr "" #: ../fdroidserver/lint.py msgid "Unnecessary trailing space" msgstr "" #: ../fdroidserver/metadata.py msgid "Unrecognised app field: " msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Unrecognised field '{field}' in {linedesc}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Unsupported file type \"{extension}\" for repo graphic" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Unsupported graphics file found: {path}" msgstr "" #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Unsupported metadata format, use: --to [{supported}]" msgstr "" #: ../fdroidserver/metadata.py msgid "Unterminated ]" msgstr "" #: ../fdroidserver/metadata.py msgid "Unterminated ]]" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Unterminated build in {name}" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Unterminated continuation in {name}" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Unused extlib at %s" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Unused file at %s" msgstr "" #: ../fdroidserver/lint.py msgid "Update Check Name is set to the known app id - it can be removed" msgstr "" #: ../fdroid msgid "Update repo information for new packages" msgstr "" #: ../fdroid msgid "Update the binary transparency log for a URL" msgstr "" #: ../fdroid msgid "Update the stats of the repo" msgstr "" #: ../fdroidserver/update.py ../fdroidserver/build.py msgid "Update the wiki" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "Usage" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "Usage: %s\n" msgstr "" #: ../fdroidserver/lint.py msgid "Use /HEAD instead of /master to point at a file in the default branch" msgstr "" #: ../fdroidserver/update.py msgid "Use `fdroid update -c` to create it." msgstr "" #: ../fdroidserver/build.py msgid "Use build server" msgstr "" #: ../fdroidserver/update.py msgid "Use date from APK instead of current time for newly added APKs" msgstr "" msgid "Use date from apk instead of current time for newly added apks" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Using \"{path}\" for configuring s3cmd." msgstr "" #: ../fdroidserver/common.py msgid "Using Java's jarsigner, not recommended for verifying APKs! Use apksigner" msgstr "" #: ../fdroidserver/init.py #, python-brace-format msgid "Using existing keystore \"{path}\"" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Using s3cmd to sync with: {url}" msgstr "" #: ../fdroid msgid "Valid commands are:" msgstr "" #: ../fdroid msgid "Verify the integrity of downloaded packages" msgstr "" #: ../fdroidserver/index.py msgid "Verifying index signature:" msgstr "" #: ../fdroid msgid "Warn about possible metadata errors" msgstr "" #: ../fdroidserver/update.py msgid "When configured for signed indexes, create only unsigned indexes at this stage" msgstr "" msgid "X.509 'Distiguished Name' used when generating keys" msgstr "" #: ../fdroidserver/init.py msgid "X.509 'Distinguished Name' used when generating keys" msgstr "" #: ../fdroidserver/common.py msgid "You can use ANDROID_HOME to set the path to your SDK, i.e.:" msgstr "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "adding IdentityFile to {path}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "adding to {name}: {path}" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "ambiguous option: %(option)s could match %(matches)s" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "ambiguous option: %s (%s?)" msgstr "" #: ../fdroidserver/lint.py ../fdroidserver/rewritemeta.py msgid "applicationId in the form APPID" msgstr "" #: ../fdroidserver/checkupdates.py msgid "applicationId to check for updates" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/verify.py ../fdroidserver/publish.py #: ../fdroidserver/dscanner.py ../fdroidserver/build.py #: ../fdroidserver/scanner.py ../fdroidserver/install.py msgid "applicationId with optional versionCode in the form APPID[:VERCODE]" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "argument \"-\" with mode %r" msgstr "" #: ../fdroidserver/nightly.py msgid "attempting bare ssh connection to test deploy key:" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "can't open '%s': %s" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "cannot have multiple subparser arguments" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "cannot merge actions - two groups are named %r" msgstr "" #: ../fdroidserver/nightly.py msgid "cannot publish update, did you set the deploy key?" msgstr "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "cloning {url}" msgstr "" #: ../fdroidserver/server.py msgid "command to execute, either 'init' or 'update'" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "complex" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "conflicting option string: %s" msgid_plural "conflicting option strings: %s" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "copying {apkfilename} into {path}" msgstr "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "created {path}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "deleting: repo/{apkfilename}" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "dest= is required for options like %r" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "expected %s argument" msgid_plural "expected %s arguments" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "expected at least one argument" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "expected at most one argument" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "expected one argument" msgstr "" #: ../fdroid msgid "fdroid [-h|--help|--version] []" msgstr "" #: ../fdroid msgid "fdroid [] [-h|--help|--version|]" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "floating-point" msgstr "" #: ../fdroidserver/metadata.py msgid "force errors to be warnings, or ignore" msgstr "" #: ../fdroidserver/metadata.py msgid "force metadata errors (default) to be warnings, or to be ignored." msgstr "" #: ../fdroidserver/common.py msgid "git svn clone failed" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "ignored explicit argument %r" msgstr "" #: ../fdroidserver/index.py msgid "index-v1 must have a signature, use `fdroid signindex` to create it!" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "integer" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "invalid %(type)s value: %(value)r" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "invalid choice: %(value)r (choose from %(choices)s)" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "invalid conflict_resolution value: %r" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "invalid option string %(option)r: must start with a character %(prefix_chars)r" msgstr "" #: ../fdroidserver/server.py #, python-brace-format msgid "local_copy_dir does not end with \"fdroid\", perhaps you meant: \"{path}\"" msgstr "" #: ../fdroidserver/server.py msgid "local_copy_dir must be an absolute path!" msgstr "" #: ../fdroidserver/server.py msgid "local_copy_dir must be directory, not a file!" msgstr "" #: ../fdroidserver/index.py #, python-format msgid "mirror '%s' does not end with 'fdroid'!" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "mutually exclusive arguments must be optional" msgstr "" #: ../fdroidserver/mirror.py #, python-brace-format msgid "no \"icon\" in {appid}" msgstr "" #: ../fdroidserver/signatures.py msgid "no APK supplied" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "no such option: %s" msgstr "" #: ../fdroid msgid "no version info found!" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "not allowed with argument %s" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "one of the arguments %s is required" msgstr "" #: ../fdroidserver/index.py ../fdroidserver/common.py msgid "only accepts strings, lists, and tuples" msgstr "" #: ../fdroidserver/install.py #, python-format msgid "option %s: If you really want to install all the signed apps, use --all" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "option %s: invalid %s value: %r" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "option %s: invalid choice: %r (choose from %s)" msgstr "" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option -%s not recognized" msgstr "" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option -%s requires argument" msgstr "" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option --%s must not have an argument" msgstr "" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option --%s not a unique prefix" msgstr "" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option --%s not recognized" msgstr "" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option --%s requires argument" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "optional arguments" msgstr "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "overwriting existing {path}" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "positional arguments" msgstr "" #: ../fdroidserver/signatures.py #, python-brace-format msgid "refuse downloading via insecure HTTP connection (use HTTPS or specify --no-https-check): {apkfilename}" msgstr "" #: ../fdroidserver/signatures.py #, python-brace-format msgid "refuse downloading via insecure http connection (use https or specify --no-https-check): {apkfilename}" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "s3cmd sync indexes {path} to {url} and delete" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "show program's version number and exit" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.5/optparse.py #: /usr/lib/python3.6/argparse.py /usr/lib/python3.6/optparse.py msgid "show this help message and exit" msgstr "" #: ../fdroidserver/signatures.py msgid "signed APK, either a file-path or HTTPS URL." msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "skipping source tarball: {path}" msgstr "" #: ../fdroidserver/lint.py msgid "srclibs missing name and/or @" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "the following arguments are required: %s" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "unexpected option string: %s" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "unknown parser %(parser_name)r (choices: %(choices)s)" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "unrecognized arguments: %s" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "unsafe permissions on '{config_file}' (should be 0600)!" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py ../fdroid msgid "usage: " msgstr "" #: ../fdroid msgid "usage: fdroid [-h|--help|--version] []" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "using Apache libcloud to sync with {url}" msgstr "" #: ../fdroidserver/publish.py #, python-brace-format msgid "{0} app, {1} key aliases" msgid_plural "{0} apps, {1} key aliases" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: ../fdroidserver/update.py #, python-brace-format msgid "{apkfilename} ({appid}) has no metadata!" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "{apkfilename} has multiple {name} files, looks like Master Key exploit!" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "{apkfilename}'s AndroidManifest.xml has a bad date: " msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "{appid} does not have a name! Using package name instead." msgstr "" #: ../fdroidserver/mirror.py #, python-brace-format msgid "{appid} is missing {name}" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vname #: ../fdroidserver/lint.py #, python-brace-format msgid "{appid}: Unknown extlib {path} in build '{versionName}'" msgstr "" #: ../fdroidserver/scanner.py #, python-brace-format msgid "{appid}: no builds specified, running on current source state" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "{field} not terminated in {name}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "{name} \"{path}\" does not exist! Correct it in config.py." msgstr "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "{path} does not exist! Create it by running:" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "{path} has bad file signature \"{pattern}\", possible Janus exploit!" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "{path} is zero size!" msgstr "" #: ../fdroidserver/mirror.py #, python-brace-format msgid "{url} does not end with \"fdroid\", check the URL path!" msgstr "" #: ../fdroidserver/build.py msgid "{} build failed" msgid_plural "{} builds failed" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: ../fdroidserver/build.py msgid "{} build succeeded" msgid_plural "{} builds succeeded" msgstr[0] "" msgstr[1] "" msgstr[2] "" fdroidserver-1.0.9/locale/zh_Hans/0000775000175000017500000000000013324115531016754 5ustar hanshans00000000000000fdroidserver-1.0.9/locale/zh_Hans/LC_MESSAGES/0000775000175000017500000000000013324115531020541 5ustar hanshans00000000000000fdroidserver-1.0.9/locale/zh_Hans/LC_MESSAGES/fdroidserver.mo0000664000175000017500000012130613324115526023603 0ustar hanshans00000000000000T )7$-+B+n9^3Jhz!!"&$'K1s"AD .OO~E+0\Ft!* -; Ri $ 6 9!R!)i!-!1!!*">"/^"["9"5$#Z# v#C#-#[ $*e$V$%$ %.%D%+b%=%%%!%U &#v&6&%&#&'9')H'"r'$'!'!'';('S(/{((((( )()-B)p)2)4)6),**J* u*F*=*+-;+:i++U+,(3,\,Ax,!,H,"%- H-vi-,- ./,.)\. ..7../!;/&]/././3/0.104`00300d0*K19v1!1(131-/2-]2222222 3$3(@3#i3+33>34)04!Z4|4&4"424 55*+5'V5~5J5B5"6<6#R6v676&66C 7IQ7!7N79 8$F8!k8888+8%949<J993999:0:.O:@~:::*:';G;1[;%; ;;;7;10<1b<*<;<*<#&=J=R=-r===:=7>&P>-w>>=>,?-?J?_?x? ???*?@"@$A@f@-~@P@ @A77AoAUA4A:B&QBxBBBB-BC,/C!\C*~C8C2CD 3D,TD D&DBD# E*0E=[E0E%E.EF%:F*`F7F5F.F)(G*RG-}G#G9G* Hf4H/H?H$ I,0I-]I8I6I1I(-JPVJ=J!J.K!6K5XKK2KK/KF&LmLLL*L4L'M4CMxMMM#MMM@M(?N,hNNNN NEN$O>O>OO%OIO OP?P+SPP#PNP3 Q;AQ}QQ4QQR2RQR(eR.R2R R-R,S<4S!qSSS%S*ST/TMTcT&rTTTDTU!U3:U%nUNUFU(*V-SV'V-VVVVW#,W'PWGxWW.WX%,XRXrXXXXfXf;Y-Y&YY,ZDZdZ(ZZ5ZZ7[Q[6Y[([2[([G\4]\9\\7\=] \]8}]-]B]'^5<^ r^&^^)`7`$`-"a+Pa+|a9a.ab(bFbXbhb!{bb!b"b&c')c1Qc"cAcDc.-dO\ddEd+e:eFRee!e!ee-fA>f$f-f9f g)$g-Ng1|gg*gg/h[Ih9h5hi%iCDi!i[i*j*1j%\j jjj+j=kAkXkskUkk0k!)lKljl l)l"l$l!m!'mIm;bm-m$mm(n9nPnnn-nn2n4o3;ooo*o oFo= p^p4~p9p$pBqUq(rqqAq!qHr"drrvr,sIs/hs)s ss7t8tWt!wt&t.t.t3uRu.mu4uu3uvK"v*nv9v!v(v3w-Rw-wwwwwxx-xGx(cx#x+xx>x;y$Syxyy&y!y!y zz*1z'\zzJzBz({B{#X{|{7{&{{C|IW|!|N|9}*L}w}}}}+}%~4~<J~~3~~~0.O@~*'G1[% ܀7101b*;!$BJ0cHт8)S4}=̓, 8Uhτ#"$8]-uP F.u`4K$pŇه-'!>`*p8Ԉ ,, Y&zI***A0l%.Ê% '30[-!)܋$-+#Y9}*Y/<<l$,΍-8)6b1(ˎP=E!.!ԏ5,2Bu/F"=*V4'4ޑ"2#Os@ڒ& <O UE`$˓N%0IV $1HV3;ӕ-4F{2(. 2O !՗%#I^}!DY!a3%NݙF,(s-'ʚ- 5EX#u'G .)X%uٜff-&@,`(˞5G7b8(۟(GF49à7=O 8-BX5m SSH Public Key to be used as Deploy Key: {path} encoded for the DEBUG_KEYSTORE secret variable:"%s/" has no matching metadata file!"{path}" contains outdated {name} ({version})"{path}" contains recent {name} ({version})"{path}" exists but s3cmd is not installed!"{path}" is not an accepted format, convert to: {formats}%(option)s option requires %(number)d argument%(option)s option requires %(number)d arguments%(prog)s [options] url%(prog)s: error: %(message)s %d problems found%prog [options]%r is not callable%s is not an accepted build field%s option does not take a value'keypass' not found in config.py!'keystore' not found in config.py!'keystorepass' not found in config.py!'repo_keyalias' not found in config.py!'required' is an invalid argument for positionals'sdk_path' not set in 'config.py'!'{aapt}' is too old, fdroid requires build-tools-23.0.0 or newer!'{aapt}' is too old, fdroid requires build-tools-{version} or newer!'{apkfilename}' is already installed on {dev}.'{field}' will be in random order! Use () or [] brackets if order is important!'{path}' failed to execute!'{value}' is not a valid {field} in {appid}. Regex pattern: {pattern}...checkupdate failed for {appid} : {error}.__call__() not defined.fdroid.txt is not supported! Convert to .fdroid.yml or .fdroid.json./issues is missingA URL is required as an argument!Add a new application from its source codeAdding new repo for only {name}Alias of the repo signing key in the keystoreAllows a different revision (or git branch) to be specified for the initial importAlso mirror the full archive sectionAlso warn about formatting issues, like rewritemeta -lAndroid SDK '{path}' does not have '{dirname}' installed!Android SDK not found!Android SDK path '{path}' does not exist!Android SDK path '{path}' is not a directory!Android build-tools path '{path}' does not exist!AndroidManifest.xml has no dateApp is in '{repo}' but has a link to {url}Appending .git is not necessaryArchiving {apkfilename} with invalid signature!Base URL to mirror, can include the index signing key using the query string: ?fingerprint=Branch '{branch}' used as commit in build '{versionName}'Branch '{branch}' used as commit in srclib '{srclib}'Build a package from sourceBuild all applications availableBuild generated by `fdroid import` - remove disable line once readyBuild only the latest version of each packageBuild should have comma-separated versionName and versionCode, not "{value}", in {linedesc}Built repo based in "%s" with this config:Can't build due to {} error while scanningCan't build due to {} errors while scanningCannot find a packageName for {path}!Cannot find an appid for {path}!Cannot read "{path}"!Cannot resolve app id {appid}Cannot use --list and --to at the same timeCannot write "{path}", not an accepted format, use: {formats}Categories are not setCategory '%s' is not validCheck for updates to applicationsChecking archiving for {appid} - apks:{integer}, keepversions:{keep}, archapks:{arch}Clean after all scans have finishedClean before the scans start and rebuild the containerClean up all containers and then exitComma separated list of categories.Command '%s' not recognised. Commit changesCould not find '{command}' on your systemCould not find {path} to remove itCould not open apk file for analysisCouldn't find latest version codeCouldn't find latest version nameCouldn't find package IDCowardily refusing to overwrite existing signing key setup!Create a repo signing key in a keystoreCreate skeleton metadata files that are missingCreated new container "{name}"Creating "{path}" for configuring s3cmd.Creating log directoryCreating new S3 bucket: {url}Creating output directoryCreating signed index with this key (SHA256):Creating temporary directoryCreating unsigned index in preparation for signingDEBUG_KEYSTORE is not set or the value is incompleteDelete APKs and/or OBBs without metadata from the repoDeleting unknown file: {path}Description '%s' is just the app's summaryDescription has a duplicate lineDescription has a list (%s) but it isn't bulleted (*) nor numbered (#)Description of length {length} is over the {limit} char limitDo not include "{path}" in URL!Do not prompt for Android SDK path, just failDon't create a source tarball, useful when testing a buildDon't do anything logs-relatedDon't refresh the repository, useful when testing a build with no internet connectionDon't use rsync checksumsDownload complete mirrors of small reposDownload logs we don't haveDownloading the repository already failed once, not trying again.Downloading {url} failed. {error}Duplicate build recipe found for versionCode {versionCode} in {linedesc}Duplicate link in '{field}': {url}Dynamically scan APKs post buildERROR: this command should never be used to mirror f-droid.org! A full mirror of f-droid.org requires more than 200GB.ERROR: unsupported CI type, patches welcome!Empty build flag at {linedesc}Enter the path to the Android SDK (%s) here: > Error while attempting to publish log: %sError while getting repo addressExtract signatures from APKsFailed fetching signatures for '{apkfilename}': {error}Failed reading {path}: {error}Failed resizing {path}: {error}Failed to create S3 bucket: {url}Failed to get APK manifest informationFailed to get apk information, deleting {path}Failed to get apk information, skipping {path}Failed to install '{apkfilename}' on {dev}: {error}Failed to sign applicationFetched buildserverid from VM: {buildserverid}Fetched signatures for '{apkfilename}' -> '{sigdir}'FinishedFlattr donation methods belong in the FlattrID flagForbidden HTML tagsForce build of disabled apps, and carries on regardless of scan problems. Only allowed in test mode.Force halting build after {0} sec timeout!Found "{path}" graphic without metadata for app "{name}"!Found invalid appids in argumentsFound invalid versionCodes for some appsFound multiple signing certificates for repository.Found multiple signing certificates in {path}Found no signing certificates for repository.Found non-file at %sGit checkout of '%s' failedGit clean failedGit fetch failedGit remote set-head failedGit reset failedGit submodule sync failedGit submodule update failedHTTPS must be used with Subversion URLs!Ignoring package without metadata: Ignoring stale cache data for {apkfilename}Ignoring {ext} file at '{path}'Include APKs that are signed with disabled algorithms like MD5Initialising submodulesInstall all signed applications availableInstall built packages on devicesInstalling %s...Installing '{apkfilename}' on {dev}...Interact with the repo HTTP serverInteractively ask about things that need updating.Invalid APKInvalid boolean '%s'Invalid build flag at {line} in {linedesc}Invalid build format: {value} in {name}Invalid bulleted listInvalid license tag "%s"! Use only tags from https://spdx.org/license-listInvalid link - use [http://foo.bar Link title] or [http://foo.bar]Invalid metadata in %s:%dInvalid metadata in: Invalid name for published file: %sInvalid package name {0}Invalid versionCode: "{versionCode}" is not an integer!JAR signature failed to verify: {path}JAR signature verified: {path}Java JDK not found! Install in standard location or set java_paths!Java jarsigner not found! Install in standard location or set java_paths!Javascript in HTML src attributesLast used commit '{commit}' looks like a tag, but Update Check Mode is '{ucm}'Liberapay donation methods belong in the LiberapayID flagList files that would be reformattedMake the build stop on exceptionsMalformed repository mirrors.Malformed serverwebroot line:Missing output directoryName '%s' is just the auto name - remove itNo 'config.py' found, using defaults.No Android SDK found!No android or kivy project could be found. Specify --subdir?No attached devices foundNo commit specified for {versionName} in {linedesc}No fingerprint in URL.No git submodules availableNo information found.No need to specify that the app is Free SoftwareNo need to specify that the app is for AndroidNo option set! Edit your config.py to set at least one of these:No packages specifiedNo signed apk available for %sNo signed output directory - nothing to doNo signing certificates found in {path}No such package: %sNo such versionCode {versionCode} for app {appid}No unsigned directory - nothing to doNothing to doNothing to do for {appid}.Now set these in config.py:OBB file has newer versionCode({integer}) than any APK:OBB filename must start with "main." or "patch.":OBB's packagename does not match a supported APK:Old APK signature failed to verify: {path}Only PNG and JPEG are supported for graphics, found: {path}Only print differences with the Play StoreOnly process apps with auto-updatesOptionsOverall license of the project.Override path for repo APKs (default: ./repo)Parsing manifest at '{path}'Password required with usernamePath to main android project subdirectory, if not in root.Path to the Android SDK (sometimes set in ANDROID_HOME)Path to the git repo to use as the logPath to the keystore for the repo signing keyPrepare drozer to run a scanPrint the secret variable to the terminal for easy copy/pasteProblem with description of {appid}: {error}Problem with xml at '{path}'Process auto-updatesProcessing {apkfilename}Processing {appid}Produce human-readable index.xmlProject URL to import from.Punctuation should be avoidedPush the log to this git remote repositoryPushing to {url}Quickly start a new repositoryRead all the metadata files and exitReading '{config_file}'Reading minSdkVersion failed: "{apkfilename}"Reading packageName/versionCode/versionName failed, APK invalid: '{apkfilename}'Reading {apkfilename} from cacheRemoving specified filesRename APK files that do not match package.name_123.apkReport on build data statusReset and create a brand new build server, even if the existing one appears to be ok.Resigning {apkfilename} with provided debug.keystoreResize all the icons exceeding the max pixel size and exitRestrict output to warnings and errorsRewrite all the metadata filesRewrite to a specific format: Rewriting '{appid}'Rewriting '{appid}' to '{path}'Running first pass with MD5 checking disabledRunning wget in {path}Scan only the latest version of each packageScan the source code of a packageScanner found {count} problems in {appid}:Scanner found {count} problems in {appid}:{versionCode}:Scanner found {} problemScanner found {} problemsSet clock to that time using:Set open file limit to {integer}Set up an app build for a nightly build repoSetting open file limit failed: Setting {0} sec timeout for this buildSetup an emulator, install the apk on it and perform a drozer scanSign and place packages in the repoSign indexes created using update --nosignSkip scanning the source code for binaries and other problemsSkipping '{apkfilename}' with invalid signature!Skipping index generation for {appid}Skipping {apkfilename} with invalid signature!Skipping {appid}: disabledSkipping {appid}: no builds specifiedSpecify a local folder to sync the repo toSpecify an identity file to provide to SSH for rsyncingSpecify editor to use in interactive mode. Default %sSpecify that we're running on the build serverSpecify which debug keystore file to use.Spew out even more information than normalStriping mystery signature from {apkfilename}Summary '%s' is just the app's nameSummary of length {length} is over the {limit} char limitSystem clock is older than date in {path}!Test mode - put output in the tmp directory only, and always build, even if the output already exists.The OBB version code must come after "{name}.":The base URL for the repo to log (default: https://f-droid.org)The directory to write the mirror toThe repository's fingerprint does not match.The repository's index could not be verified.The root dir for local_copy_dir "{path}" does not exist!The the file to be included in the repo (path or glob)There is a keyalias collision - publishing haltedThis repo already has local metadata: %sTo use awsbucket, awssecretkey and awsaccesskeyid must also be set in config.py!UCM is set but it looks like checkupdates hasn't been run yetURL shorteners should not be usedURL title is just the URL, use brackets: [URL]URL {url} in Description: {error}Unexpected text on same line as {field} in {linedesc}Unknown exception found!Unknown file '{filename}' in build '{versionName}'Unknown metadata format: %sUnknown version of aapt, might cause problems: Unlinkified link - use [http://foo.bar Link title] or [http://foo.bar]Unnecessary leading spaceUnnecessary trailing spaceUnrecognised app field: Unrecognised field '{field}' in {linedesc}Unsupported file type "{extension}" for repo graphicUnsupported graphics file found: {path}Unsupported metadata format, use: --to [{supported}]Unterminated ]Unterminated ]]Unterminated build in {name}Unterminated continuation in {name}Unused extlib at %sUnused file at %sUpdate Check Name is set to the known app id - it can be removedUpdate repo information for new packagesUpdate the binary transparency log for a URLUpdate the stats of the repoUpdate the wikiUsageUsage: %s Use /HEAD instead of /master to point at a file in the default branchUse `fdroid update -c` to create it.Use build serverUse date from apk instead of current time for newly added apksUsing "{path}" for configuring s3cmd.Using Java's jarsigner, not recommended for verifying APKs! Use apksignerUsing existing keystore "{path}"Using s3cmd to sync with: {url}Valid commands are:Verify the integrity of downloaded packagesVerifying index signature:Warn about possible metadata errorsWhen configured for signed indexes, create only unsigned indexes at this stageX.509 'Distiguished Name' used when generating keysYou can use ANDROID_HOME to set the path to your SDK, i.e.:adding IdentityFile to {path}adding to {name}: {path}ambiguous option: %(option)s could match %(matches)sambiguous option: %s (%s?)argument "-" with mode %rattempting bare ssh connection to test deploy key:can't open '%s': %scannot have multiple subparser argumentscannot merge actions - two groups are named %rcannot publish update, did you set the deploy key?cloning {url}command to execute, either 'init' or 'update'complexconflicting option string: %sconflicting option strings: %scopying {apkfilename} into {path}created {path}deleting: repo/{apkfilename}dest= is required for options like %rexpected %s argumentexpected %s argumentsexpected at least one argumentexpected at most one argumentexpected one argumentfloating-pointforce errors to be warnings, or ignoregit svn clone failedignored explicit argument %rindex-v1 must have a signature, use `fdroid signindex` to create it!integerinvalid %(type)s value: %(value)rinvalid choice: %(value)r (choose from %(choices)s)invalid conflict_resolution value: %rinvalid option string %(option)r: must start with a character %(prefix_chars)rlocal_copy_dir does not end with "fdroid", perhaps you meant: "{path}"local_copy_dir must be an absolute path!local_copy_dir must be directory, not a file!mirror '%s' does not end with 'fdroid'!mutually exclusive arguments must be optionalno "icon" in {appid}no APK suppliedno such option: %snot allowed with argument %sone of the arguments %s is requiredonly accepts strings, lists, and tuplesoption %s: If you really want to install all the signed apps, use --alloption %s: invalid %s value: %roption %s: invalid choice: %r (choose from %s)option -%s requires argumentoption --%s must not have an argumentoption --%s not a unique prefixoption --%s requires argumentoptional argumentsoverwriting existing {path}positional argumentsrefuse downloading via insecure HTTP connection (use HTTPS or specify --no-https-check): {apkfilename}refuse downloading via insecure http connection (use https or specify --no-https-check): {apkfilename}s3cmd sync indexes {path} to {url} and deleteshow program's version number and exitshow this help message and exitsigned APK, either a file-path or HTTPS URL.skipping source tarball: {path}srclibs missing name and/or @the following arguments are required: %sunexpected option string: %sunknown parser %(parser_name)r (choices: %(choices)s)unrecognized arguments: %sunsafe permissions on '{config_file}' (should be 0600)!usage: usage: fdroid [-h|--help|--version] []using Apache libcloud to sync with {url}{0} app, {1} key aliases{0} apps, {1} key aliases{apkfilename} ({appid}) has no metadata!{apkfilename} has multiple {name} files, looks like Master Key exploit!{apkfilename}'s AndroidManifest.xml has a bad date: {appid} does not have a name! Using package name instead.{appid} is missing {name}{appid}: Unknown extlib {path} in build '{versionName}'{appid}: no builds specified, running on current source state{field} not terminated in {name}{name} "{path}" does not exist! Correct it in config.py.{path} does not exist! Create it by running:{path} has bad file signature "{pattern}", possible Janus exploit!{path} is zero size!{url} does not end with "fdroid", check the URL path!{} build failed{} builds failed{} build succeeded{} builds succeededProject-Id-Version: fdroidserver 0.9 Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues POT-Creation-Date: 2018-02-13 09:01+0100 PO-Revision-Date: 2017-07-24 02:40+0000 Last-Translator: sima Language-Team: Chinese (Simplified) Plural-Forms: nplurals=1; plural=0 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Generated-By: Babel 1.3 SSH Public Key to be used as Deploy Key: {path} encoded for the DEBUG_KEYSTORE secret variable:"%s/" has no matching metadata file!"{path}" contains outdated {name} ({version})"{path}" contains recent {name} ({version})"{path}" exists but s3cmd is not installed!"{path}" is not an accepted format, convert to: {formats}%(option)s option requires %(number)d argument%(prog)s [options] url%(prog)s: error: %(message)s %d problems found%prog [options]%r is not callable%s is not an accepted build field%s option does not take a value'keypass' not found in config.py!'keystore' not found in config.py!'keystorepass' not found in config.py!'repo_keyalias' not found in config.py!'required' is an invalid argument for positionals'sdk_path' not set in 'config.py'!'{aapt}' is too old, fdroid requires build-tools-23.0.0 or newer!'{aapt}' is too old, fdroid requires build-tools-{version} or newer!'{apkfilename}' is already installed on {dev}.'{field}' will be in random order! Use () or [] brackets if order is important!'{path}' failed to execute!'{value}' is not a valid {field} in {appid}. Regex pattern: {pattern}...checkupdate failed for {appid} : {error}.__call__() not defined.fdroid.txt is not supported! Convert to .fdroid.yml or .fdroid.json./issues is missingA URL is required as an argument!从源码添加新的应用程序Adding new repo for only {name}密钥存储中资源库签名密钥的别名可让运行初始导入时指定不同修订(或 git 分支)Also mirror the full archive section同时提示格式问题,如 rewritemeta -lAndroid SDK '{path}' does not have '{dirname}' installed!Android SDK not found!Android SDK path '{path}' does not exist!Android SDK path '{path}' is not a directory!Android build-tools path '{path}' does not exist!AndroidManifest.xml has no dateApp is in '{repo}' but has a link to {url}Appending .git is not necessaryArchiving {apkfilename} with invalid signature!Base URL to mirror, can include the index signing key using the query string: ?fingerprint=Branch '{branch}' used as commit in build '{versionName}'Branch '{branch}' used as commit in srclib '{srclib}'从源生成包编译全部可用应用程序Build generated by `fdroid import` - remove disable line once ready仅编译每个包的最新版本Build should have comma-separated versionName and versionCode, not "{value}", in {linedesc}Built repo based in "%s" with this config:Can't build due to {} error while scanningCannot find a packageName for {path}!Cannot find an appid for {path}!Cannot read "{path}"!Cannot resolve app id {appid}Cannot use --list and --to at the same timeCannot write "{path}", not an accepted format, use: {formats}Categories are not setCategory '%s' is not valid检查应用更新Checking archiving for {appid} - apks:{integer}, keepversions:{keep}, archapks:{arch}扫描全部完成后清除在扫描启动和容器重新编译之前清除清除所有容器,然后退出逗号分割的目录列表。无法识别命令 '%s'。 提交更改Could not find '{command}' on your systemCould not find {path} to remove itCould not open apk file for analysisCouldn't find latest version codeCouldn't find latest version nameCouldn't find package IDCowardily refusing to overwrite existing signing key setup!在密钥存储中创建资源库签名密钥创建缺少的主干元数据文件Created new container "{name}"Creating "{path}" for configuring s3cmd.Creating log directoryCreating new S3 bucket: {url}Creating output directoryCreating signed index with this key (SHA256):Creating temporary directoryCreating unsigned index in preparation for signingDEBUG_KEYSTORE is not set or the value is incomplete从资源库中删除没有元数据的 APK 和 OBBDeleting unknown file: {path}Description '%s' is just the app's summaryDescription has a duplicate lineDescription has a list (%s) but it isn't bulleted (*) nor numbered (#)Description of length {length} is over the {limit} char limitDo not include "{path}" in URL!不提示输入 Android SDK 路径,仅显示失败不创建源码 tarball 文件,便于内部版本测试请勿做任何日志相关的操作不刷新资源库,便于没有互联网时的内部版本测试请勿使用 rsync 校验和Download complete mirrors of small repos下载当前没有的日志Downloading the repository already failed once, not trying again.Downloading {url} failed. {error}Duplicate build recipe found for versionCode {versionCode} in {linedesc}Duplicate link in '{field}': {url}动态扫描已编译的 APKsERROR: this command should never be used to mirror f-droid.org! A full mirror of f-droid.org requires more than 200GB.ERROR: unsupported CI type, patches welcome!Empty build flag at {linedesc}Enter the path to the Android SDK (%s) here: > Error while attempting to publish log: %sError while getting repo addressExtract signatures from APKsFailed fetching signatures for '{apkfilename}': {error}Failed reading {path}: {error}Failed resizing {path}: {error}Failed to create S3 bucket: {url}Failed to get APK manifest informationFailed to get apk information, deleting {path}Failed to get apk information, skipping {path}Failed to install '{apkfilename}' on {dev}: {error}Failed to sign applicationFetched buildserverid from VM: {buildserverid}Fetched signatures for '{apkfilename}' -> '{sigdir}'FinishedFlattr donation methods belong in the FlattrID flagForbidden HTML tags强制编译已禁用应用,忽略扫描出错。仅用于测试模式。Force halting build after {0} sec timeout!Found "{path}" graphic without metadata for app "{name}"!Found invalid appids in argumentsFound invalid versionCodes for some appsFound multiple signing certificates for repository.Found multiple signing certificates in {path}Found no signing certificates for repository.Found non-file at %sGit checkout of '%s' failedGit clean failedGit fetch failedGit remote set-head failedGit reset failedGit submodule sync failedGit submodule update failedHTTPS must be used with Subversion URLs!Ignoring package without metadata: Ignoring stale cache data for {apkfilename}Ignoring {ext} file at '{path}'Include APKs that are signed with disabled algorithms like MD5Initialising submodules安装全部可用的已签名应用在设备上安装生成包Installing %s...Installing '{apkfilename}' on {dev}...与资源库 HTTP 服务器互动需更新事项的互动提示。Invalid APKInvalid boolean '%s'Invalid build flag at {line} in {linedesc}Invalid build format: {value} in {name}Invalid bulleted listInvalid license tag "%s"! Use only tags from https://spdx.org/license-listInvalid link - use [http://foo.bar Link title] or [http://foo.bar]Invalid metadata in %s:%dInvalid metadata in: Invalid name for published file: %sInvalid package name {0}Invalid versionCode: "{versionCode}" is not an integer!JAR signature failed to verify: {path}JAR signature verified: {path}Java JDK not found! Install in standard location or set java_paths!Java jarsigner not found! Install in standard location or set java_paths!Javascript in HTML src attributesLast used commit '{commit}' looks like a tag, but Update Check Mode is '{ucm}'Liberapay donation methods belong in the LiberapayID flag列出全部需重新设定格式的文件异常时中止编译Malformed repository mirrors.Malformed serverwebroot line:Missing output directoryName '%s' is just the auto name - remove itNo 'config.py' found, using defaults.No Android SDK found!No android or kivy project could be found. Specify --subdir?No attached devices foundNo commit specified for {versionName} in {linedesc}No fingerprint in URL.No git submodules availableNo information found.No need to specify that the app is Free SoftwareNo need to specify that the app is for AndroidNo option set! Edit your config.py to set at least one of these:No packages specifiedNo signed apk available for %sNo signed output directory - nothing to doNo signing certificates found in {path}No such package: %sNo such versionCode {versionCode} for app {appid}No unsigned directory - nothing to doNothing to doNothing to do for {appid}.Now set these in config.py:OBB file has newer versionCode({integer}) than any APK:OBB filename must start with "main." or "patch.":OBB's packagename does not match a supported APK:Old APK signature failed to verify: {path}Only PNG and JPEG are supported for graphics, found: {path}仅输出与 Play Store 的差异仅处理使用自动更新的应用Options项目总体许可证。覆盖资源库 APK 路径(默认为 ./repo)Parsing manifest at '{path}'Password required with username如果不是位于根目录,路径为 android 主项目的子目录。Android SDK 路径(有时在 ANDROID_HOME 中设置)使用的 git 资源库路径在日志上资源库签名密钥的密钥存储(keystore)路径准备运行 drozer 扫描Print the secret variable to the terminal for easy copy/pasteProblem with description of {appid}: {error}Problem with xml at '{path}'处理自动更新Processing {apkfilename}Processing {appid}生成用户可读的 index.xml项目 URL 导入位置。Punctuation should be avoided拖送日志至 git 远程资源库Pushing to {url}快速新建资源库读取全部元数据文件并退出Reading '{config_file}'Reading minSdkVersion failed: "{apkfilename}"Reading packageName/versionCode/versionName failed, APK invalid: '{apkfilename}'Reading {apkfilename} from cacheRemoving specified files对于文件名不符合 package.name_123.apk 的文件进行重命名报告编译数据状态即使已有服务器看起来运行正常,请重置并创建一个全新的编译服务器。Resigning {apkfilename} with provided debug.keystore对超过像素大小上限的全部图标进行尺寸调整,然后退出仅输出警告和出错信息重写全部元数据文件重写为特定格式: Rewriting '{appid}'Rewriting '{appid}' to '{path}'Running first pass with MD5 checking disabledRunning wget in {path}仅扫描每个包的最新版本扫描包源码Scanner found {count} problems in {appid}:Scanner found {count} problems in {appid}:{versionCode}:Scanner found {} problemSet clock to that time using:Set open file limit to {integer}Set up an app build for a nightly build repoSetting open file limit failed: Setting {0} sec timeout for this build设置一个模拟器,然后在其中安装 apk 并执行 drozer 扫描对包进行签名并将其加入资源库签署使用更新创建的索引 --nosign跳过二进制源码扫描和其他问题Skipping '{apkfilename}' with invalid signature!Skipping index generation for {appid}Skipping {apkfilename} with invalid signature!Skipping {appid}: disabledSkipping {appid}: no builds specified指定资源库同步的本地文件夹指定 rsync 同步时 SSH 所用的标识文件指定编辑器使用互动模式。默认 %s指定在编译服务器上运行Specify which debug keystore file to use.比一般情况输出更多的信息Striping mystery signature from {apkfilename}Summary '%s' is just the app's nameSummary of length {length} is over the {limit} char limitSystem clock is older than date in {path}!测试模式:仅将输出保存至 tmp 目录,即使输出已存在,仍然编译。The OBB version code must come after "{name}.":资源库基 URL的日志(默认为 https://f-droid.org)The directory to write the mirror toThe repository's fingerprint does not match.The repository's index could not be verified.The root dir for local_copy_dir "{path}" does not exist!The the file to be included in the repo (path or glob)There is a keyalias collision - publishing haltedThis repo already has local metadata: %sTo use awsbucket, awssecretkey and awsaccesskeyid must also be set in config.py!UCM is set but it looks like checkupdates hasn't been run yetURL shorteners should not be usedURL title is just the URL, use brackets: [URL]URL {url} in Description: {error}Unexpected text on same line as {field} in {linedesc}发生未知异常!Unknown file '{filename}' in build '{versionName}'Unknown metadata format: %sUnknown version of aapt, might cause problems: Unlinkified link - use [http://foo.bar Link title] or [http://foo.bar]Unnecessary leading spaceUnnecessary trailing spaceUnrecognised app field: Unrecognised field '{field}' in {linedesc}Unsupported file type "{extension}" for repo graphicUnsupported graphics file found: {path}Unsupported metadata format, use: --to [{supported}]Unterminated ]Unterminated ]]Unterminated build in {name}Unterminated continuation in {name}Unused extlib at %sUnused file at %sUpdate Check Name is set to the known app id - it can be removed更新新包的资源库信息更新 URL 的二进制透明度日志更新资源库统计信息更新维基页面UsageUsage: %s Use /HEAD instead of /master to point at a file in the default branchUse `fdroid update -c` to create it.使用编译服务器对于最新添加的 apk,使用来自 apk 的日期,而不是当前时间Using "{path}" for configuring s3cmd.Using Java's jarsigner, not recommended for verifying APKs! Use apksignerUsing existing keystore "{path}"Using s3cmd to sync with: {url}有效的命令为:验证已下载包的完整性Verifying index signature:有关元数据可能错误的警告如果已配置为使用签名索引,该阶段仅创建未签名索引X.509 生成密钥时所用的“可分辨名称”You can use ANDROID_HOME to set the path to your SDK, i.e.:adding IdentityFile to {path}adding to {name}: {path}ambiguous option: %(option)s could match %(matches)sambiguous option: %s (%s?)argument "-" with mode %rattempting bare ssh connection to test deploy key:can't open '%s': %scannot have multiple subparser argumentscannot merge actions - two groups are named %rcannot publish update, did you set the deploy key?cloning {url}执行命令:init 或 updatecomplexconflicting option string: %scopying {apkfilename} into {path}created {path}deleting: repo/{apkfilename}dest= is required for options like %rexpected %s argumentexpected at least one argumentexpected at most one argumentexpected one argumentfloating-point强制错误提示警告或忽略git svn clone failedignored explicit argument %rindex-v1 must have a signature, use `fdroid signindex` to create it!integerinvalid %(type)s value: %(value)rinvalid choice: %(value)r (choose from %(choices)s)invalid conflict_resolution value: %rinvalid option string %(option)r: must start with a character %(prefix_chars)rlocal_copy_dir does not end with "fdroid", perhaps you meant: "{path}"local_copy_dir must be an absolute path!local_copy_dir must be directory, not a file!mirror '%s' does not end with 'fdroid'!mutually exclusive arguments must be optionalno "icon" in {appid}no APK suppliedno such option: %snot allowed with argument %sone of the arguments %s is requiredonly accepts strings, lists, and tuplesoption %s: If you really want to install all the signed apps, use --alloption %s: invalid %s value: %roption %s: invalid choice: %r (choose from %s)option -%s requires argumentoption --%s must not have an argumentoption --%s not a unique prefixoption --%s requires argumentoptional argumentsoverwriting existing {path}positional argumentsrefuse downloading via insecure HTTP connection (use HTTPS or specify --no-https-check): {apkfilename}refuse downloading via insecure http connection (use https or specify --no-https-check): {apkfilename}s3cmd sync indexes {path} to {url} and deleteshow program's version number and exitshow this help message and exitsigned APK, either a file-path or HTTPS URL.skipping source tarball: {path}srclibs missing name and/or @the following arguments are required: %sunexpected option string: %sunknown parser %(parser_name)r (choices: %(choices)s)unrecognized arguments: %sunsafe permissions on '{config_file}' (should be 0600)!usage: 用法:fdroid [-h|--help|--version] []using Apache libcloud to sync with {url}{0} app, {1} key aliases{apkfilename} ({appid}) has no metadata!{apkfilename} has multiple {name} files, looks like Master Key exploit!{apkfilename}'s AndroidManifest.xml has a bad date: {appid} does not have a name! Using package name instead.{appid} is missing {name}{appid}: Unknown extlib {path} in build '{versionName}'{appid}: no builds specified, running on current source state{field} not terminated in {name}{name} "{path}" does not exist! Correct it in config.py.{path} does not exist! Create it by running:{path} has bad file signature "{pattern}", possible Janus exploit!{path} is zero size!{url} does not end with "fdroid", check the URL path!{} build failed{} build succeededfdroidserver-1.0.9/locale/zh_Hans/LC_MESSAGES/fdroidserver.po0000664000175000017500000015453113322065577023624 0ustar hanshans00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: fdroidserver 0.9\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" "POT-Creation-Date: 2018-02-13 09:01+0100\n" "PO-Revision-Date: 2017-07-24 02:40+0000\n" "Last-Translator: sima \n" "Language-Team: Chinese (Simplified) \n" "Language: zh_Hans\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Weblate 2.16-dev\n" #: ../fdroidserver/nightly.py msgid "" "\n" "SSH Public Key to be used as Deploy Key:" msgstr "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "" "\n" "{path} encoded for the DEBUG_KEYSTORE secret variable:" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "\"%s/\" has no matching metadata file!" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "\"{path}\" contains outdated {name} ({version})" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "\"{path}\" contains recent {name} ({version})" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "\"{path}\" exists but s3cmd is not installed!" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "\"{path}\" is not an accepted format, convert to: {formats}" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "%(option)s option requires %(number)d argument" msgid_plural "%(option)s option requires %(number)d arguments" msgstr[0] "" #: ../fdroidserver/mirror.py #, python-format msgid "%(prog)s [options] url" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "%(prog)s: error: %(message)s\n" msgstr "" #: ../fdroidserver/scanner.py #, python-format msgid "%d problems found" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "%prog [options]" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "%r is not callable" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "%s is not an accepted build field" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "%s option does not take a value" msgstr "" #: ../fdroidserver/index.py ../fdroidserver/common.py msgid "'keypass' not found in config.py!" msgstr "" #: ../fdroidserver/index.py ../fdroidserver/common.py msgid "'keystore' not found in config.py!" msgstr "" #: ../fdroidserver/index.py ../fdroidserver/common.py msgid "'keystorepass' not found in config.py!" msgstr "" #: ../fdroidserver/index.py ../fdroidserver/common.py msgid "'repo_keyalias' not found in config.py!" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "'required' is an invalid argument for positionals" msgstr "" #: ../fdroidserver/common.py msgid "'sdk_path' not set in 'config.py'!" msgstr "" #. Translators: "build-tools" is the file name of a package from #. Google, it is part of the Android SDK. So it probably shouldn't be #. translated or transliterated. #: ../fdroidserver/common.py #, python-brace-format msgid "'{aapt}' is too old, fdroid requires build-tools-23.0.0 or newer!" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "'{aapt}' is too old, fdroid requires build-tools-{version} or newer!" msgstr "" #: ../fdroidserver/install.py #, python-brace-format msgid "'{apkfilename}' is already installed on {dev}." msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "'{field}' will be in random order! Use () or [] brackets if order is important!" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "'{path}' failed to execute!" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "'{value}' is not a valid {field} in {appid}. Regex pattern: {pattern}" msgstr "" #: ../fdroidserver/checkupdates.py #, python-brace-format msgid "...checkupdate failed for {appid} : {error}" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid ".__call__() not defined" msgstr "" #: ../fdroidserver/metadata.py msgid ".fdroid.txt is not supported! Convert to .fdroid.yml or .fdroid.json." msgstr "" #: ../fdroidserver/lint.py msgid "/issues is missing" msgstr "" #: ../fdroidserver/mirror.py msgid "A URL is required as an argument!" msgstr "" #: ../fdroid #, fuzzy msgid "Add PGP signatures using GnuPG for packages in repo" msgstr "添加包 gpg 签名至资源库" #: ../fdroid msgid "Add a new application from its source code" msgstr "从源码添加新的应用程序" #: ../fdroidserver/update.py #, fuzzy msgid "Add a repo signing key to an unsigned repo" msgstr "在密钥存储中创建资源库签名密钥" #: ../fdroidserver/update.py #, fuzzy msgid "Add skeleton metadata files for APKs that are missing them" msgstr "创建缺少的主干元数据文件" #: ../fdroidserver/update.py #, python-brace-format msgid "Adding new repo for only {name}" msgstr "" #: ../fdroidserver/init.py msgid "Alias of the repo signing key in the keystore" msgstr "密钥存储中资源库签名密钥的别名" #: ../fdroidserver/import.py msgid "Allows a different revision (or git branch) to be specified for the initial import" msgstr "可让运行初始导入时指定不同修订(或 git 分支)" #: ../fdroidserver/mirror.py msgid "Also mirror the full archive section" msgstr "" #: ../fdroidserver/lint.py msgid "Also warn about formatting issues, like rewritemeta -l" msgstr "同时提示格式问题,如 rewritemeta -l" #: ../fdroidserver/common.py #, python-brace-format msgid "Android SDK '{path}' does not have '{dirname}' installed!" msgstr "" #: ../fdroidserver/common.py msgid "Android SDK not found!" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Android SDK path '{path}' does not exist!" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Android SDK path '{path}' is not a directory!" msgstr "" #. Translators: "build-tools" is the file name of a package from #. Google, it is part of the Android SDK. So it probably shouldn't be #. translated or transliterated. #: ../fdroidserver/common.py #, python-brace-format msgid "Android build-tools path '{path}' does not exist!" msgstr "" #: ../fdroidserver/update.py msgid "AndroidManifest.xml has no date" msgstr "" #: ../fdroidserver/lint.py #, python-brace-format msgid "App is in '{repo}' but has a link to {url}" msgstr "" #: ../fdroidserver/lint.py msgid "Appending .git is not necessary" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Archiving {apkfilename} with invalid signature!" msgstr "" #: ../fdroidserver/mirror.py msgid "Base URL to mirror, can include the index signing key using the query string: ?fingerprint=" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vname #: ../fdroidserver/lint.py #, python-brace-format msgid "Branch '{branch}' used as commit in build '{versionName}'" msgstr "" #: ../fdroidserver/lint.py #, python-brace-format msgid "Branch '{branch}' used as commit in srclib '{srclib}'" msgstr "" #: ../fdroid msgid "Build a package from source" msgstr "从源生成包" #: ../fdroidserver/build.py msgid "Build all applications available" msgstr "编译全部可用应用程序" #: ../fdroidserver/lint.py msgid "Build generated by `fdroid import` - remove disable line once ready" msgstr "" #: ../fdroidserver/build.py msgid "Build only the latest version of each package" msgstr "仅编译每个包的最新版本" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Build should have comma-separated versionName and versionCode, not \"{value}\", in {linedesc}" msgstr "" #: ../fdroidserver/init.py #, python-format msgid "Built repo based in \"%s\" with this config:" msgstr "" #: ../fdroidserver/build.py msgid "Can't build due to {} error while scanning" msgid_plural "Can't build due to {} errors while scanning" msgstr[0] "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Cannot find a packageName for {path}!" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Cannot find an appid for {path}!" msgstr "" #: ../fdroidserver/vmtools.py #, python-brace-format msgid "Cannot read \"{path}\"!" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Cannot resolve app id {appid}" msgstr "" #: ../fdroidserver/rewritemeta.py msgid "Cannot use --list and --to at the same time" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Cannot write \"{path}\", not an accepted format, use: {formats}" msgstr "" #: ../fdroidserver/lint.py msgid "Categories are not set" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Category '%s' is not valid" msgstr "" #: ../fdroid msgid "Check for updates to applications" msgstr "检查应用更新" #: ../fdroidserver/update.py #, python-brace-format msgid "Checking archiving for {appid} - apks:{integer}, keepversions:{keep}, archapks:{arch}" msgstr "" #: ../fdroidserver/dscanner.py msgid "Clean after all scans have finished" msgstr "扫描全部完成后清除" #: ../fdroidserver/dscanner.py msgid "Clean before the scans start and rebuild the container" msgstr "在扫描启动和容器重新编译之前清除" #: ../fdroidserver/dscanner.py msgid "Clean up all containers and then exit" msgstr "清除所有容器,然后退出" #: ../fdroidserver/update.py #, fuzzy msgid "Clean update - don't uses caches, reprocess all APKs" msgstr "清除更新:不用缓存,重新处理全部 apk" #: ../fdroidserver/import.py msgid "Comma separated list of categories." msgstr "逗号分割的目录列表。" #: ../fdroid #, c-format, python-format msgid "Command '%s' not recognised.\n" msgstr "无法识别命令 '%s'。\n" #: ../fdroidserver/checkupdates.py msgid "Commit changes" msgstr "提交更改" #: ../fdroidserver/common.py #, python-brace-format msgid "Could not find '{command}' on your system" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Could not find {path} to remove it" msgstr "" #: ../fdroidserver/update.py msgid "Could not open apk file for analysis" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/import.py msgid "Couldn't find latest version code" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vname #: ../fdroidserver/import.py msgid "Couldn't find latest version name" msgstr "" #: ../fdroidserver/import.py msgid "Couldn't find package ID" msgstr "" #: ../fdroidserver/update.py msgid "Cowardily refusing to overwrite existing signing key setup!" msgstr "" #: ../fdroidserver/update.py msgid "Create a repo signing key in a keystore" msgstr "在密钥存储中创建资源库签名密钥" #: ../fdroidserver/update.py msgid "Create skeleton metadata files that are missing" msgstr "创建缺少的主干元数据文件" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Created new container \"{name}\"" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Creating \"{path}\" for configuring s3cmd." msgstr "" #: ../fdroidserver/publish.py msgid "Creating log directory" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Creating new S3 bucket: {url}" msgstr "" #: ../fdroidserver/publish.py msgid "Creating output directory" msgstr "" #: ../fdroidserver/index.py msgid "Creating signed index with this key (SHA256):" msgstr "" #: ../fdroidserver/import.py ../fdroidserver/verify.py #: ../fdroidserver/publish.py msgid "Creating temporary directory" msgstr "" #: ../fdroidserver/index.py msgid "Creating unsigned index in preparation for signing" msgstr "" #: ../fdroidserver/nightly.py msgid "DEBUG_KEYSTORE is not set or the value is incomplete" msgstr "" #: ../fdroidserver/update.py msgid "Delete APKs and/or OBBs without metadata from the repo" msgstr "从资源库中删除没有元数据的 APK 和 OBB" #: ../fdroidserver/update.py #, python-brace-format msgid "Deleting unknown file: {path}" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Description '%s' is just the app's summary" msgstr "" #: ../fdroidserver/lint.py msgid "Description has a duplicate line" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Description has a list (%s) but it isn't bulleted (*) nor numbered (#)" msgstr "" #: ../fdroidserver/lint.py #, python-brace-format msgid "Description of length {length} is over the {limit} char limit" msgstr "" #: ../fdroidserver/mirror.py #, python-brace-format msgid "Do not include \"{path}\" in URL!" msgstr "" #: ../fdroidserver/init.py msgid "Do not prompt for Android SDK path, just fail" msgstr "不提示输入 Android SDK 路径,仅显示失败" #: ../fdroidserver/build.py msgid "Don't create a source tarball, useful when testing a build" msgstr "不创建源码 tarball 文件,便于内部版本测试" #: ../fdroidserver/stats.py msgid "Don't do anything logs-related" msgstr "请勿做任何日志相关的操作" #: ../fdroidserver/build.py msgid "Don't refresh the repository, useful when testing a build with no internet connection" msgstr "不刷新资源库,便于没有互联网时的内部版本测试" #: ../fdroidserver/server.py ../fdroidserver/nightly.py #: ../fdroidserver/upload.py msgid "Don't use rsync checksums" msgstr "请勿使用 rsync 校验和" #: ../fdroid msgid "Download complete mirrors of small repos" msgstr "" #: ../fdroidserver/stats.py msgid "Download logs we don't have" msgstr "下载当前没有的日志" #: ../fdroidserver/common.py msgid "Downloading the repository already failed once, not trying again." msgstr "" #: ../fdroidserver/verify.py #, python-brace-format msgid "Downloading {url} failed. {error}" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Duplicate build recipe found for versionCode {versionCode} in {linedesc}" msgstr "" #: ../fdroidserver/lint.py #, python-brace-format msgid "Duplicate link in '{field}': {url}" msgstr "" #: ../fdroid msgid "Dynamically scan APKs post build" msgstr "动态扫描已编译的 APKs" #: ../fdroidserver/mirror.py msgid "" "ERROR: this command should never be used to mirror f-droid.org!\n" "A full mirror of f-droid.org requires more than 200GB." msgstr "" #: ../fdroidserver/nightly.py msgid "ERROR: unsupported CI type, patches welcome!" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Empty build flag at {linedesc}" msgstr "" #: ../fdroidserver/init.py #, python-format msgid "" "Enter the path to the Android SDK (%s) here:\n" "> " msgstr "" #: ../fdroidserver/server.py ../fdroidserver/checkupdates.py #: ../fdroidserver/upload.py #, python-format msgid "Error while attempting to publish log: %s" msgstr "" #: ../fdroidserver/import.py msgid "Error while getting repo address" msgstr "" #: ../fdroid msgid "Extract signatures from APKs" msgstr "" #: ../fdroidserver/signatures.py #, python-brace-format msgid "Failed fetching signatures for '{apkfilename}': {error}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Failed reading {path}: {error}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Failed resizing {path}: {error}" msgstr "" #: ../fdroidserver/publish.py #, fuzzy msgid "Failed to align application" msgstr "编译全部可用应用程序" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Failed to create S3 bucket: {url}" msgstr "" #: ../fdroidserver/common.py msgid "Failed to get APK manifest information" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Failed to get apk information, deleting {path}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Failed to get apk information, skipping {path}" msgstr "" #: ../fdroidserver/install.py #, python-brace-format msgid "Failed to install '{apkfilename}' on {dev}: {error}" msgstr "" #: ../fdroidserver/publish.py ../fdroidserver/common.py msgid "Failed to sign application" msgstr "" #: ../fdroidserver/common.py #, fuzzy msgid "Failed to zipalign application" msgstr "编译全部可用应用程序" #: ../fdroidserver/build.py #, python-brace-format msgid "Fetched buildserverid from VM: {buildserverid}" msgstr "" #: ../fdroidserver/signatures.py #, python-brace-format msgid "Fetched signatures for '{apkfilename}' -> '{sigdir}'" msgstr "" #: ../fdroidserver/verify.py ../fdroidserver/stats.py ../fdroidserver/update.py #: ../fdroidserver/rewritemeta.py ../fdroidserver/build.py #: ../fdroidserver/checkupdates.py ../fdroidserver/scanner.py #: ../fdroidserver/install.py msgid "Finished" msgstr "" #: ../fdroidserver/lint.py msgid "Flattr donation methods belong in the FlattrID flag" msgstr "" #: ../fdroidserver/lint.py msgid "Forbidden HTML tags" msgstr "" #: ../fdroidserver/build.py msgid "Force build of disabled apps, and carries on regardless of scan problems. Only allowed in test mode." msgstr "强制编译已禁用应用,忽略扫描出错。仅用于测试模式。" #: ../fdroidserver/build.py #, python-brace-format msgid "Force halting build after {0} sec timeout!" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Found \"{path}\" graphic without metadata for app \"{name}\"!" msgstr "" #: ../fdroidserver/common.py msgid "Found invalid appids in arguments" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/common.py msgid "Found invalid versionCodes for some apps" msgstr "" #: ../fdroidserver/metadata.py #, fuzzy, python-brace-format msgid "Found multiple metadata files for {appid}" msgstr "创建缺少的主干元数据文件" #: ../fdroidserver/index.py msgid "Found multiple signing certificates for repository." msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Found multiple signing certificates in {path}" msgstr "" #: ../fdroidserver/index.py msgid "Found no signing certificates for repository." msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Found non-file at %s" msgstr "" #: ../fdroidserver/update.py #, fuzzy, python-brace-format msgid "Generated skeleton metadata for {appid}" msgstr "创建缺少的主干元数据文件" #: ../fdroidserver/common.py #, python-format msgid "Git checkout of '%s' failed" msgstr "" #: ../fdroidserver/common.py msgid "Git clean failed" msgstr "" #: ../fdroidserver/common.py msgid "Git fetch failed" msgstr "" #: ../fdroidserver/common.py msgid "Git remote set-head failed" msgstr "" #: ../fdroidserver/common.py msgid "Git reset failed" msgstr "" #: ../fdroidserver/common.py msgid "Git submodule sync failed" msgstr "" #: ../fdroidserver/common.py msgid "Git submodule update failed" msgstr "" #: ../fdroidserver/common.py msgid "HTTPS must be used with Subversion URLs!" msgstr "" #: ../fdroidserver/index.py msgid "Ignoring package without metadata: " msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Ignoring stale cache data for {apkfilename}" msgstr "" #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Ignoring {ext} file at '{path}'" msgstr "" #: ../fdroidserver/update.py msgid "Include APKs that are signed with disabled algorithms like MD5" msgstr "" #: ../fdroidserver/common.py msgid "Initialising submodules" msgstr "" #: ../fdroidserver/install.py msgid "Install all signed applications available" msgstr "安装全部可用的已签名应用" #: ../fdroid msgid "Install built packages on devices" msgstr "在设备上安装生成包" #: ../fdroidserver/install.py #, python-format msgid "Installing %s..." msgstr "" #: ../fdroidserver/install.py #, python-brace-format msgid "Installing '{apkfilename}' on {dev}..." msgstr "" #: ../fdroid msgid "Interact with the repo HTTP server" msgstr "与资源库 HTTP 服务器互动" #: ../fdroidserver/update.py msgid "Interactively ask about things that need updating." msgstr "需更新事项的互动提示。" #: ../fdroidserver/update.py msgid "Invalid APK" msgstr "" #: ../fdroidserver/metadata.py #, python-format msgid "Invalid boolean '%s'" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Invalid build flag at {line} in {linedesc}" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Invalid build format: {value} in {name}" msgstr "" #: ../fdroidserver/lint.py msgid "Invalid bulleted list" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Invalid license tag \"%s\"! Use only tags from https://spdx.org/license-list" msgstr "" #: ../fdroidserver/lint.py msgid "Invalid link - use [http://foo.bar Link title] or [http://foo.bar]" msgstr "" #: ../fdroidserver/metadata.py #, python-format msgid "Invalid metadata in %s:%d" msgstr "" #: ../fdroidserver/metadata.py msgid "Invalid metadata in: " msgstr "" #: ../fdroidserver/common.py #, python-format msgid "Invalid name for published file: %s" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Invalid package name {0}" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Invalid versionCode: \"{versionCode}\" is not an integer!" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "JAR signature failed to verify: {path}" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "JAR signature verified: {path}" msgstr "" #: ../fdroidserver/publish.py ../fdroidserver/update.py #: ../fdroidserver/mirror.py msgid "Java JDK not found! Install in standard location or set java_paths!" msgstr "" #: ../fdroidserver/signindex.py msgid "Java jarsigner not found! Install in standard location or set java_paths!" msgstr "" #: ../fdroidserver/lint.py msgid "Javascript in HTML src attributes" msgstr "" #: ../fdroidserver/init.py #, fuzzy msgid "Keystore for signing key:\t" msgstr "资源库签名密钥的密钥存储(keystore)路径" #: ../fdroidserver/lint.py #, python-brace-format msgid "Last used commit '{commit}' looks like a tag, but Update Check Mode is '{ucm}'" msgstr "" #: ../fdroidserver/lint.py msgid "Liberapay donation methods belong in the LiberapayID flag" msgstr "" #: ../fdroidserver/rewritemeta.py msgid "List files that would be reformatted" msgstr "列出全部需重新设定格式的文件" #: ../fdroidserver/build.py msgid "Make the build stop on exceptions" msgstr "异常时中止编译" #: ../fdroidserver/index.py msgid "Malformed repository mirrors." msgstr "" #: ../fdroidserver/server.py msgid "Malformed serverwebroot line:" msgstr "" #: ../fdroidserver/gpgsign.py msgid "Missing output directory" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Name '%s' is just the auto name - remove it" msgstr "" #: ../fdroidserver/common.py msgid "No 'config.py' found, using defaults." msgstr "" #: ../fdroidserver/common.py msgid "No Android SDK found!" msgstr "" #: ../fdroidserver/import.py msgid "No android or kivy project could be found. Specify --subdir?" msgstr "" #: ../fdroidserver/install.py msgid "No attached devices found" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "No commit specified for {versionName} in {linedesc}" msgstr "" #: ../fdroidserver/index.py msgid "No fingerprint in URL." msgstr "" #: ../fdroidserver/common.py msgid "No git submodules available" msgstr "" #: ../fdroidserver/import.py msgid "No information found." msgstr "" #: ../fdroidserver/lint.py msgid "No need to specify that the app is Free Software" msgstr "" #: ../fdroidserver/lint.py msgid "No need to specify that the app is for Android" msgstr "" #: ../fdroidserver/server.py msgid "No option set! Edit your config.py to set at least one of these:" msgstr "" #: ../fdroidserver/common.py msgid "No packages specified" msgstr "" #: ../fdroidserver/install.py #, python-format msgid "No signed apk available for %s" msgstr "" #: ../fdroidserver/install.py msgid "No signed output directory - nothing to do" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "No signing certificates found in {path}" msgstr "" #: ../fdroidserver/common.py #, python-format msgid "No such package: %s" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/common.py #, python-brace-format msgid "No such versionCode {versionCode} for app {appid}" msgstr "" #: ../fdroidserver/verify.py ../fdroidserver/publish.py msgid "No unsigned directory - nothing to do" msgstr "" #: ../fdroidserver/signindex.py msgid "Nothing to do" msgstr "" #: ../fdroidserver/checkupdates.py #, python-brace-format msgid "Nothing to do for {appid}." msgstr "" #: ../fdroidserver/init.py msgid "Now set these in config.py:" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/update.py #, python-brace-format msgid "OBB file has newer versionCode({integer}) than any APK:" msgstr "" #: ../fdroidserver/update.py msgid "OBB filename must start with \"main.\" or \"patch.\":" msgstr "" #: ../fdroidserver/update.py msgid "OBB's packagename does not match a supported APK:" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Old APK signature failed to verify: {path}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Only PNG and JPEG are supported for graphics, found: {path}" msgstr "" #: ../fdroidserver/checkupdates.py msgid "Only print differences with the Play Store" msgstr "仅输出与 Play Store 的差异" #: ../fdroidserver/checkupdates.py msgid "Only process apps with auto-updates" msgstr "仅处理使用自动更新的应用" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "Options" msgstr "" #: ../fdroidserver/import.py msgid "Overall license of the project." msgstr "项目总体许可证。" #: ../fdroidserver/dscanner.py msgid "Override path for repo APKs (default: ./repo)" msgstr "覆盖资源库 APK 路径(默认为 ./repo)" #: ../fdroidserver/common.py #, python-brace-format msgid "Parsing manifest at '{path}'" msgstr "" #: ../fdroidserver/common.py msgid "Password required with username" msgstr "" #: ../fdroidserver/import.py #, fuzzy msgid "Path to main Android project subdirectory, if not in root." msgstr "如果不是位于根目录,路径为 android 主项目的子目录。" msgid "Path to main android project subdirectory, if not in root." msgstr "如果不是位于根目录,路径为 android 主项目的子目录。" #: ../fdroidserver/init.py msgid "Path to the Android SDK (sometimes set in ANDROID_HOME)" msgstr "Android SDK 路径(有时在 ANDROID_HOME 中设置)" #: ../fdroidserver/btlog.py msgid "Path to the git repo to use as the log" msgstr "使用的 git 资源库路径在日志上" #: ../fdroidserver/init.py msgid "Path to the keystore for the repo signing key" msgstr "资源库签名密钥的密钥存储(keystore)路径" #: ../fdroidserver/dscanner.py #, fuzzy msgid "Prepare Drozer to run a scan" msgstr "准备运行 drozer 扫描" msgid "Prepare drozer to run a scan" msgstr "准备运行 drozer 扫描" #: ../fdroidserver/nightly.py msgid "Print the secret variable to the terminal for easy copy/paste" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Problem with description of {appid}: {error}" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Problem with xml at '{path}'" msgstr "" #: ../fdroidserver/checkupdates.py msgid "Process auto-updates" msgstr "处理自动更新" #: ../fdroidserver/publish.py ../fdroidserver/update.py #, python-brace-format msgid "Processing {apkfilename}" msgstr "" #: ../fdroidserver/checkupdates.py ../fdroidserver/scanner.py #, python-brace-format msgid "Processing {appid}" msgstr "" #: ../fdroidserver/update.py #, fuzzy msgid "Produce human-readable XML/JSON for index files" msgstr "生成用户可读的 index.xml" #: ../fdroidserver/update.py msgid "Produce human-readable index.xml" msgstr "生成用户可读的 index.xml" #: ../fdroidserver/import.py msgid "Project URL to import from." msgstr "项目 URL 导入位置。" #: ../fdroidserver/lint.py msgid "Punctuation should be avoided" msgstr "" #: ../fdroidserver/btlog.py msgid "Push the log to this git remote repository" msgstr "拖送日志至 git 远程资源库" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, fuzzy, python-brace-format msgid "Pushing binary transparency log to {url}" msgstr "更新 URL 的二进制透明度日志" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Pushing to {url}" msgstr "" #: ../fdroid msgid "Quickly start a new repository" msgstr "快速新建资源库" #: ../fdroid msgid "Read all the metadata files and exit" msgstr "读取全部元数据文件并退出" #: ../fdroidserver/common.py #, python-brace-format msgid "Reading '{config_file}'" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Reading minSdkVersion failed: \"{apkfilename}\"" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #. https://developer.android.com/guide/topics/manifest/manifest-element.html#vname #: ../fdroidserver/common.py #, python-brace-format msgid "Reading packageName/versionCode/versionName failed, APK invalid: '{apkfilename}'" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Reading {apkfilename} from cache" msgstr "" #: ../fdroidserver/stats.py #, fuzzy msgid "Recalculate aggregate stats - use when changes have been made that would invalidate old cached data." msgstr "重新计算聚合统计信息(发生更改时使用) " #: ../fdroidserver/common.py msgid "Removing specified files" msgstr "" #: ../fdroidserver/update.py msgid "Rename APK files that do not match package.name_123.apk" msgstr "对于文件名不符合 package.name_123.apk 的文件进行重命名" #: ../fdroidserver/update.py msgid "Report on build data status" msgstr "报告编译数据状态" #: ../fdroidserver/build.py msgid "Reset and create a brand new build server, even if the existing one appears to be ok." msgstr "即使已有服务器看起来运行正常,请重置并创建一个全新的编译服务器。" #: ../fdroidserver/nightly.py #, python-brace-format msgid "Resigning {apkfilename} with provided debug.keystore" msgstr "" #: ../fdroidserver/update.py msgid "Resize all the icons exceeding the max pixel size and exit" msgstr "对超过像素大小上限的全部图标进行尺寸调整,然后退出" #: ../fdroidserver/common.py msgid "Restrict output to warnings and errors" msgstr "仅输出警告和出错信息" #: ../fdroid msgid "Rewrite all the metadata files" msgstr "重写全部元数据文件" #: ../fdroidserver/rewritemeta.py msgid "Rewrite to a specific format: " msgstr "重写为特定格式: " #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Rewriting '{appid}'" msgstr "" #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Rewriting '{appid}' to '{path}'" msgstr "" #: ../fdroidserver/lint.py #, fuzzy msgid "Run rewritemeta to fix formatting" msgstr "重写为特定格式: " #: ../fdroidserver/server.py ../fdroidserver/upload.py msgid "Running first pass with MD5 checking disabled" msgstr "" #: ../fdroidserver/mirror.py #, python-brace-format msgid "Running wget in {path}" msgstr "" #: ../fdroidserver/dscanner.py msgid "Scan only the latest version of each package" msgstr "仅扫描每个包的最新版本" #: ../fdroid msgid "Scan the source code of a package" msgstr "扫描包源码" #: ../fdroidserver/scanner.py #, python-brace-format msgid "Scanner found {count} problems in {appid}:" msgstr "" #: ../fdroidserver/scanner.py #, python-brace-format msgid "Scanner found {count} problems in {appid}:{versionCode}:" msgstr "" #: ../fdroidserver/build.py msgid "Scanner found {} problem" msgid_plural "Scanner found {} problems" msgstr[0] "" #: ../fdroidserver/common.py msgid "Set clock to that time using:" msgstr "" #: ../fdroidserver/build.py #, python-brace-format msgid "Set open file limit to {integer}" msgstr "" #: ../fdroid msgid "Set up an app build for a nightly build repo" msgstr "" #: ../fdroidserver/build.py msgid "Setting open file limit failed: " msgstr "" #: ../fdroidserver/build.py #, python-brace-format msgid "Setting {0} sec timeout for this build" msgstr "" #: ../fdroidserver/build.py #, fuzzy msgid "Setup an emulator, install the APK on it and perform a Drozer scan" msgstr "设置一个模拟器,然后在其中安装 apk 并执行 drozer 扫描" msgid "Setup an emulator, install the apk on it and perform a drozer scan" msgstr "设置一个模拟器,然后在其中安装 apk 并执行 drozer 扫描" #: ../fdroid msgid "Sign and place packages in the repo" msgstr "对包进行签名并将其加入资源库" #: ../fdroid msgid "Sign indexes created using update --nosign" msgstr "签署使用更新创建的索引 --nosign" #: ../fdroidserver/build.py msgid "Skip scanning the source code for binaries and other problems" msgstr "跳过二进制源码扫描和其他问题" #: ../fdroidserver/update.py #, python-brace-format msgid "Skipping '{apkfilename}' with invalid signature!" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Skipping index generation for {appid}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Skipping {apkfilename} with invalid signature!" msgstr "" #: ../fdroidserver/scanner.py #, python-brace-format msgid "Skipping {appid}: disabled" msgstr "" #: ../fdroidserver/scanner.py #, python-brace-format msgid "Skipping {appid}: no builds specified" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py msgid "Specify a local folder to sync the repo to" msgstr "指定资源库同步的本地文件夹" #: ../fdroidserver/server.py ../fdroidserver/upload.py msgid "Specify an identity file to provide to SSH for rsyncing" msgstr "指定 rsync 同步时 SSH 所用的标识文件" #: ../fdroidserver/update.py #, fuzzy msgid "Specify editor to use in interactive mode. Default " msgstr "指定编辑器使用互动模式。默认 %s" #, c-format msgid "Specify editor to use in interactive mode. Default %s" msgstr "指定编辑器使用互动模式。默认 %s" #: ../fdroidserver/update.py #, fuzzy, python-brace-format msgid "Specify editor to use in interactive mode. Default is {path}" msgstr "指定编辑器使用互动模式。默认 %s" #: ../fdroidserver/build.py msgid "Specify that we're running on the build server" msgstr "指定在编译服务器上运行" #: ../fdroidserver/nightly.py msgid "Specify which debug keystore file to use." msgstr "" #: ../fdroidserver/common.py msgid "Spew out even more information than normal" msgstr "比一般情况输出更多的信息" #: ../fdroidserver/nightly.py #, python-brace-format msgid "Striping mystery signature from {apkfilename}" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Summary '%s' is just the app's name" msgstr "" #: ../fdroidserver/lint.py #, python-brace-format msgid "Summary of length {length} is over the {limit} char limit" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "System clock is older than date in {path}!" msgstr "" #: ../fdroidserver/build.py msgid "Test mode - put output in the tmp directory only, and always build, even if the output already exists." msgstr "测试模式:仅将输出保存至 tmp 目录,即使输出已存在,仍然编译。" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/update.py #, python-brace-format msgid "The OBB version code must come after \"{name}.\":" msgstr "" #: ../fdroidserver/btlog.py msgid "The base URL for the repo to log (default: https://f-droid.org)" msgstr "资源库基 URL的日志(默认为 https://f-droid.org)" #: ../fdroidserver/mirror.py msgid "The directory to write the mirror to" msgstr "" #: ../fdroidserver/server.py #, fuzzy msgid "The only commands currently supported are 'init' and 'update'" msgstr "执行命令:init 或 update" #: ../fdroidserver/index.py msgid "The repository's fingerprint does not match." msgstr "" #: ../fdroidserver/common.py msgid "The repository's index could not be verified." msgstr "" #: ../fdroidserver/server.py #, python-brace-format msgid "The root dir for local_copy_dir \"{path}\" does not exist!" msgstr "" #: ../fdroidserver/nightly.py msgid "The the file to be included in the repo (path or glob)" msgstr "" #: ../fdroidserver/publish.py msgid "There is a keyalias collision - publishing halted" msgstr "" #: ../fdroidserver/import.py #, python-format msgid "This repo already has local metadata: %s" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py msgid "To use awsbucket, awssecretkey and awsaccesskeyid must also be set in config.py!" msgstr "" #: ../fdroidserver/lint.py msgid "UCM is set but it looks like checkupdates hasn't been run yet" msgstr "" #: ../fdroidserver/lint.py msgid "URL shorteners should not be used" msgstr "" #: ../fdroidserver/metadata.py msgid "URL title is just the URL, use brackets: [URL]" msgstr "" #: ../fdroidserver/lint.py #, python-brace-format msgid "URL {url} in Description: {error}" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Unexpected text on same line as {field} in {linedesc}" msgstr "" #: ../fdroid msgid "Unknown exception found!" msgstr "发生未知异常!" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vname #: ../fdroidserver/lint.py #, python-brace-format msgid "Unknown file '{filename}' in build '{versionName}'" msgstr "" #: ../fdroidserver/metadata.py #, python-format msgid "Unknown metadata format: %s" msgstr "" #: ../fdroidserver/metadata.py #, fuzzy, python-brace-format msgid "Unknown metadata format: {path}" msgstr "创建缺少的主干元数据文件" #: ../fdroidserver/common.py msgid "Unknown version of aapt, might cause problems: " msgstr "" #: ../fdroidserver/lint.py msgid "Unlinkified link - use [http://foo.bar Link title] or [http://foo.bar]" msgstr "" #: ../fdroidserver/lint.py msgid "Unnecessary leading space" msgstr "" #: ../fdroidserver/lint.py msgid "Unnecessary trailing space" msgstr "" #: ../fdroidserver/metadata.py msgid "Unrecognised app field: " msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Unrecognised field '{field}' in {linedesc}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Unsupported file type \"{extension}\" for repo graphic" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Unsupported graphics file found: {path}" msgstr "" #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Unsupported metadata format, use: --to [{supported}]" msgstr "" #: ../fdroidserver/metadata.py msgid "Unterminated ]" msgstr "" #: ../fdroidserver/metadata.py msgid "Unterminated ]]" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Unterminated build in {name}" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Unterminated continuation in {name}" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Unused extlib at %s" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Unused file at %s" msgstr "" #: ../fdroidserver/lint.py msgid "Update Check Name is set to the known app id - it can be removed" msgstr "" #: ../fdroid msgid "Update repo information for new packages" msgstr "更新新包的资源库信息" #: ../fdroid msgid "Update the binary transparency log for a URL" msgstr "更新 URL 的二进制透明度日志" #: ../fdroid msgid "Update the stats of the repo" msgstr "更新资源库统计信息" #: ../fdroidserver/update.py ../fdroidserver/build.py msgid "Update the wiki" msgstr "更新维基页面" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "Usage" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "Usage: %s\n" msgstr "" #: ../fdroidserver/lint.py msgid "Use /HEAD instead of /master to point at a file in the default branch" msgstr "" #: ../fdroidserver/update.py msgid "Use `fdroid update -c` to create it." msgstr "" #: ../fdroidserver/build.py msgid "Use build server" msgstr "使用编译服务器" #: ../fdroidserver/update.py #, fuzzy msgid "Use date from APK instead of current time for newly added APKs" msgstr "对于最新添加的 apk,使用来自 apk 的日期,而不是当前时间" msgid "Use date from apk instead of current time for newly added apks" msgstr "对于最新添加的 apk,使用来自 apk 的日期,而不是当前时间" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Using \"{path}\" for configuring s3cmd." msgstr "" #: ../fdroidserver/common.py msgid "Using Java's jarsigner, not recommended for verifying APKs! Use apksigner" msgstr "" #: ../fdroidserver/init.py #, python-brace-format msgid "Using existing keystore \"{path}\"" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Using s3cmd to sync with: {url}" msgstr "" #: ../fdroid msgid "Valid commands are:" msgstr "有效的命令为:" #: ../fdroid msgid "Verify the integrity of downloaded packages" msgstr "验证已下载包的完整性" #: ../fdroidserver/index.py msgid "Verifying index signature:" msgstr "" #: ../fdroid msgid "Warn about possible metadata errors" msgstr "有关元数据可能错误的警告" #: ../fdroidserver/update.py msgid "When configured for signed indexes, create only unsigned indexes at this stage" msgstr "如果已配置为使用签名索引,该阶段仅创建未签名索引" msgid "X.509 'Distiguished Name' used when generating keys" msgstr "X.509 生成密钥时所用的“可分辨名称”" #: ../fdroidserver/init.py #, fuzzy msgid "X.509 'Distinguished Name' used when generating keys" msgstr "X.509 生成密钥时所用的“可分辨名称”" #: ../fdroidserver/common.py msgid "You can use ANDROID_HOME to set the path to your SDK, i.e.:" msgstr "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "adding IdentityFile to {path}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "adding to {name}: {path}" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "ambiguous option: %(option)s could match %(matches)s" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "ambiguous option: %s (%s?)" msgstr "" #: ../fdroidserver/lint.py ../fdroidserver/rewritemeta.py #, fuzzy msgid "applicationId in the form APPID" msgstr "app-id,格式:APPID" #: ../fdroidserver/checkupdates.py #, fuzzy msgid "applicationId to check for updates" msgstr "app-id,用于检查更新" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/verify.py ../fdroidserver/publish.py #: ../fdroidserver/dscanner.py ../fdroidserver/build.py #: ../fdroidserver/scanner.py ../fdroidserver/install.py #, fuzzy msgid "applicationId with optional versionCode in the form APPID[:VERCODE]" msgstr "带有可选项 versionCode 的 app-id,格式:APPID[:VERCODE]" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "argument \"-\" with mode %r" msgstr "" #: ../fdroidserver/nightly.py msgid "attempting bare ssh connection to test deploy key:" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "can't open '%s': %s" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "cannot have multiple subparser arguments" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "cannot merge actions - two groups are named %r" msgstr "" #: ../fdroidserver/nightly.py msgid "cannot publish update, did you set the deploy key?" msgstr "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "cloning {url}" msgstr "" #: ../fdroidserver/server.py msgid "command to execute, either 'init' or 'update'" msgstr "执行命令:init 或 update" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "complex" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "conflicting option string: %s" msgid_plural "conflicting option strings: %s" msgstr[0] "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "copying {apkfilename} into {path}" msgstr "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "created {path}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "deleting: repo/{apkfilename}" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "dest= is required for options like %r" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "expected %s argument" msgid_plural "expected %s arguments" msgstr[0] "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "expected at least one argument" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "expected at most one argument" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "expected one argument" msgstr "" #: ../fdroid #, fuzzy msgid "fdroid [-h|--help|--version] []" msgstr "用法:fdroid [-h|--help|--version] []" #: ../fdroid #, fuzzy msgid "fdroid [] [-h|--help|--version|]" msgstr "用法:fdroid [-h|--help|--version] []" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "floating-point" msgstr "" #: ../fdroidserver/metadata.py msgid "force errors to be warnings, or ignore" msgstr "强制错误提示警告或忽略" #: ../fdroidserver/metadata.py #, fuzzy msgid "force metadata errors (default) to be warnings, or to be ignored." msgstr "强制错误提示警告或忽略" #: ../fdroidserver/common.py msgid "git svn clone failed" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "ignored explicit argument %r" msgstr "" #: ../fdroidserver/index.py msgid "index-v1 must have a signature, use `fdroid signindex` to create it!" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "integer" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "invalid %(type)s value: %(value)r" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "invalid choice: %(value)r (choose from %(choices)s)" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "invalid conflict_resolution value: %r" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "invalid option string %(option)r: must start with a character %(prefix_chars)r" msgstr "" #: ../fdroidserver/server.py #, python-brace-format msgid "local_copy_dir does not end with \"fdroid\", perhaps you meant: \"{path}\"" msgstr "" #: ../fdroidserver/server.py msgid "local_copy_dir must be an absolute path!" msgstr "" #: ../fdroidserver/server.py msgid "local_copy_dir must be directory, not a file!" msgstr "" #: ../fdroidserver/index.py #, python-format msgid "mirror '%s' does not end with 'fdroid'!" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "mutually exclusive arguments must be optional" msgstr "" #: ../fdroidserver/mirror.py #, python-brace-format msgid "no \"icon\" in {appid}" msgstr "" #: ../fdroidserver/signatures.py msgid "no APK supplied" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "no such option: %s" msgstr "" #: ../fdroid #, fuzzy msgid "no version info found!" msgstr "发生未知异常!" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "not allowed with argument %s" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "one of the arguments %s is required" msgstr "" #: ../fdroidserver/index.py ../fdroidserver/common.py msgid "only accepts strings, lists, and tuples" msgstr "" #: ../fdroidserver/install.py #, python-format msgid "option %s: If you really want to install all the signed apps, use --all" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "option %s: invalid %s value: %r" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "option %s: invalid choice: %r (choose from %s)" msgstr "" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, fuzzy, python-format msgid "option -%s not recognized" msgstr "无法识别命令 '%s'。\n" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option -%s requires argument" msgstr "" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option --%s must not have an argument" msgstr "" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option --%s not a unique prefix" msgstr "" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, fuzzy, python-format msgid "option --%s not recognized" msgstr "无法识别命令 '%s'。\n" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option --%s requires argument" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "optional arguments" msgstr "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "overwriting existing {path}" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "positional arguments" msgstr "" #: ../fdroidserver/signatures.py #, python-brace-format msgid "refuse downloading via insecure HTTP connection (use HTTPS or specify --no-https-check): {apkfilename}" msgstr "" #: ../fdroidserver/signatures.py #, python-brace-format msgid "refuse downloading via insecure http connection (use https or specify --no-https-check): {apkfilename}" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "s3cmd sync indexes {path} to {url} and delete" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "show program's version number and exit" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.5/optparse.py #: /usr/lib/python3.6/argparse.py /usr/lib/python3.6/optparse.py msgid "show this help message and exit" msgstr "" #: ../fdroidserver/signatures.py msgid "signed APK, either a file-path or HTTPS URL." msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "skipping source tarball: {path}" msgstr "" #: ../fdroidserver/lint.py msgid "srclibs missing name and/or @" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "the following arguments are required: %s" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "unexpected option string: %s" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "unknown parser %(parser_name)r (choices: %(choices)s)" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "unrecognized arguments: %s" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "unsafe permissions on '{config_file}' (should be 0600)!" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py ../fdroid msgid "usage: " msgstr "" #: ../fdroid msgid "usage: fdroid [-h|--help|--version] []" msgstr "用法:fdroid [-h|--help|--version] []" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "using Apache libcloud to sync with {url}" msgstr "" #: ../fdroidserver/publish.py #, python-brace-format msgid "{0} app, {1} key aliases" msgid_plural "{0} apps, {1} key aliases" msgstr[0] "" #: ../fdroidserver/update.py #, python-brace-format msgid "{apkfilename} ({appid}) has no metadata!" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "{apkfilename} has multiple {name} files, looks like Master Key exploit!" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "{apkfilename}'s AndroidManifest.xml has a bad date: " msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "{appid} does not have a name! Using package name instead." msgstr "" #: ../fdroidserver/mirror.py #, python-brace-format msgid "{appid} is missing {name}" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vname #: ../fdroidserver/lint.py #, python-brace-format msgid "{appid}: Unknown extlib {path} in build '{versionName}'" msgstr "" #: ../fdroidserver/scanner.py #, python-brace-format msgid "{appid}: no builds specified, running on current source state" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "{field} not terminated in {name}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "{name} \"{path}\" does not exist! Correct it in config.py." msgstr "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "{path} does not exist! Create it by running:" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "{path} has bad file signature \"{pattern}\", possible Janus exploit!" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "{path} is zero size!" msgstr "" #: ../fdroidserver/mirror.py #, python-brace-format msgid "{url} does not end with \"fdroid\", check the URL path!" msgstr "" #: ../fdroidserver/build.py msgid "{} build failed" msgid_plural "{} builds failed" msgstr[0] "" #: ../fdroidserver/build.py msgid "{} build succeeded" msgid_plural "{} builds succeeded" msgstr[0] "" #, fuzzy #~ msgid "Add PGP signatures for packages in repo using GnuPG" #~ msgstr "添加包 gpg 签名至资源库" #~ msgid "Add gpg signatures for packages in repo" #~ msgstr "添加包 gpg 签名至资源库" #~ msgid "Clean update - don't uses caches, reprocess all apks" #~ msgstr "清除更新:不用缓存,重新处理全部 apk" #~ msgid "app-id in the form APPID" #~ msgstr "app-id,格式:APPID" #~ msgid "app-id to check for updates" #~ msgstr "app-id,用于检查更新" #~ msgid "app-id with optional versionCode in the form APPID[:VERCODE]" #~ msgstr "带有可选项 versionCode 的 app-id,格式:APPID[:VERCODE]" #~ msgid "app-id with optional versioncode in the form APPID[:VERCODE]" #~ msgstr "带有可选项 versioncode 的 app-id,格式:APPID[:VERCODE]" fdroidserver-1.0.9/locale/POTFILES.in0000664000175000017500000000063113272566407017155 0ustar hanshans00000000000000fdroid fdroidserver/btlog.py fdroidserver/build.py fdroidserver/checkupdates.py fdroidserver/common.py fdroidserver/dscanner.py fdroidserver/import.py fdroidserver/init.py fdroidserver/install.py fdroidserver/lint.py fdroidserver/metadata.py fdroidserver/publish.py fdroidserver/rewritemeta.py fdroidserver/scanner.py fdroidserver/server.py fdroidserver/stats.py fdroidserver/update.py fdroidserver/verify.py fdroidserver-1.0.9/locale/nb_NO/0000775000175000017500000000000013324115531016355 5ustar hanshans00000000000000fdroidserver-1.0.9/locale/nb_NO/LC_MESSAGES/0000775000175000017500000000000013324115531020142 5ustar hanshans00000000000000fdroidserver-1.0.9/locale/nb_NO/LC_MESSAGES/fdroidserver.mo0000664000175000017500000012634313324115526023212 0ustar hanshans00000000000000 |)}7$-+2+^9^#ASc!v!"&'$1L"~AD.(OWE+ F5 | * * :  !-@!$n!6!9!")"-E"1s""*""/#[@#9#5# $ ($CI$-$[$*%VB%%% %%%+&=@&~&&!&U&#('6L'%'4'#'( ()/("Y($|(!(!((;(':)/b))()))*-)*W*2t*4*6*+*1+ \+F}+=+,-",:P,,U,-(-C-A_-!-H-" . /.vP.,..//)C/ m//7//0"0!>0&`0.0.0301.414c11311d1*N29y2!2(2)23(3-\3-33'334"434N4_4y4(4#4+45>.5m5)5!55&5" 62,6 _6k6*6'66J6B47w77#7777&8C8Cb8I8!89N-9$|9!9999+:%D:j:<::3: ;";>;0T;.;@;; <**<'U<}<1<%< <<7=1J=1|=*=;=*>#@>d>l>->>>:>:2?7m?&?-??@=4@,r@@@@@/@ -ANAjA*A(AAA$ B1B-IBPwBdB-C7FC~CUC4C:%D&`DDDDD!D-EIE,`E!E*E8E2FFF dF,F F&FBFB=G#G*G=G0 H%>H.dHH%H*H7H37I5kI<I.I) J*7J#bJ9J*JfJ/RK?K$K=K,%L-RL8L6L1L("MPKM=M!M.M!+N5MN2NNN/NF"OiOOO*O4O'P4?PtPPP#PPP@P(;Q,dQQQQ QEQ$R:R>KR>R%RIR 9SZSzS+SS#SNS3HT4|T;TT U4$UYUtU"UCUU2VHV(\V.V2V V-V#W<+WhW%wW*WWWX/XKX&ZXXXDXX!Y3"Y%VYN|YFY(Z-;Z'iZ-ZZZZZ#[':[Gb[[.[[\%0\V\v\\\\\f\fZ]-]&]^,6^c^^(^^5^_78_p_6x_(_2_( `G4`4|`9``7a==a {a8a-aBbFb5[b b&bb)d7e$8e-]e+e+e9e^f|ff ff ff&g'5g+]g,g1g'gAhDRh1hOhiE5i+{iFii+j*-j:Xjj-j$j6k9=kwk)k-k1kl58l$nl/l[l9m5Ymm!mCm-n[?n*nVn%o Codozo&o=oop2pUPp/p6p% q43q#hq"qq)q"q$ r!0r!Rrtr;r'r/r!s(@sisss-ss2t46t<ktt*t tFu=Yuu-u:u vU?vv(vvAv&6wH]w"w wvw,axx/x)x y(y<Fyyyy!y&z.'z.Vz<zz.z4{ E{9O{{d{*|9-|!g|(|)|3|-}->}l}'}}}}}~~-~(I~#r~+~~>~!)9"c("2 #*8'cJB/I#_7&ԁCI^!ʂN$4!Y{+Ѓ%"<8u3"Ȅ0!.R@…؅*'"J1^% ʆ71#1U*;*#=B-b:͈:7C&{-Љ= ,Hu/ъ ">*\("-PId7PUl4:&2Yv!Ɏ-,0]*{82ߏ 0,Q ~&BƐB +L*x=0%.8g%*7Ӓ3 5?<u.)* #69Z*f/&?V$=,-&8T61Ė(P=p!.З!5!2W/ƘF =$^*4Ǚ'4$Yhx#͚@ߚ( ,Iv E$>0>o%IԜ ?_*vNڝ3)4];Ξ4:U"uCܟ2)(=.f2 Ƞ-֠< I%X*~ȡ/,.;jD!3 %?NeF(-$'R-zˤ#''GO.!%$J"jۦffW-)$,;h(Ϩ5"7=u<|(2(G>497=G 8-߫B P5e & SSH Public Key to be used as Deploy Key: {path} encoded for the DEBUG_KEYSTORE secret variable:"%s/" has no matching metadata file!"{path}" contains outdated {name} ({version})"{path}" contains recent {name} ({version})"{path}" exists but s3cmd is not installed!"{path}" is not an accepted format, convert to: {formats}%(option)s option requires %(number)d argument%(option)s option requires %(number)d arguments%(prog)s: error: %(message)s %d problems found%prog [options]%r is not callable%s is not an accepted build field%s option does not take a value'keypass' not found in config.py!'keystore' not found in config.py!'keystorepass' not found in config.py!'repo_keyalias' not found in config.py!'required' is an invalid argument for positionals'sdk_path' not set in 'config.py'!'{aapt}' is too old, fdroid requires build-tools-23.0.0 or newer!'{aapt}' is too old, fdroid requires build-tools-{version} or newer!'{apkfilename}' is already installed on {dev}.'{field}' will be in random order! Use () or [] brackets if order is important!'{path}' failed to execute!'{value}' is not a valid {field} in {appid}. Regex pattern: {pattern}...checkupdate failed for {appid} : {error}.fdroid.txt is not supported! Convert to .fdroid.yml or .fdroid.json./issues is missingAdd a new application from its source codeAdd a repo signing key to an unsigned repoAdd skeleton metadata files for APKs that are missing themAdding new repo for only {name}Alias of the repo signing key in the keystoreAlso mirror the full archive sectionAlso warn about formatting issues, like rewritemeta -lAndroid SDK '{path}' does not have '{dirname}' installed!Android SDK not found!Android SDK path '{path}' does not exist!Android SDK path '{path}' is not a directory!Android build-tools path '{path}' does not exist!AndroidManifest.xml has no dateApp is in '{repo}' but has a link to {url}Appending .git is not necessaryArchiving {apkfilename} with invalid signature!Base URL to mirror, can include the index signing key using the query string: ?fingerprint=Branch '{branch}' used as commit in build '{versionName}'Branch '{branch}' used as commit in srclib '{srclib}'Build a package from sourceBuild all applications availableBuild generated by `fdroid import` - remove disable line once readyBuild only the latest version of each packageBuild should have comma-separated versionName and versionCode, not "{value}", in {linedesc}Built repo based in "%s" with this config:Can't build due to {} error while scanningCan't build due to {} errors while scanningCannot find a packageName for {path}!Cannot find an appid for {path}!Cannot read "{path}"!Cannot resolve app id {appid}Cannot use --list and --to at the same timeCannot write "{path}", not an accepted format, use: {formats}Categories are not setCategory '%s' is not validCheck for updates to applicationsChecking archiving for {appid} - apks:{integer}, keepversions:{keep}, archapks:{arch}Clean after all scans have finishedClean before the scans start and rebuild the containerClean up all containers and then exitClean update - don't uses caches, reprocess all APKsComma separated list of categories.Command '%s' not recognised. Commit changesCould not find '{command}' on your systemCould not find {path} to remove itCould not open apk file for analysisCouldn't find latest version codeCouldn't find latest version nameCouldn't find package IDCowardily refusing to overwrite existing signing key setup!Create a repo signing key in a keystoreCreate skeleton metadata files that are missingCreated new container "{name}"Creating "{path}" for configuring s3cmd.Creating log directoryCreating new S3 bucket: {url}Creating output directoryCreating signed index with this key (SHA256):Creating temporary directoryCreating unsigned index in preparation for signingDEBUG_KEYSTORE is not set or the value is incompleteDelete APKs and/or OBBs without metadata from the repoDeleting unknown file: {path}Description '%s' is just the app's summaryDescription has a duplicate lineDescription has a list (%s) but it isn't bulleted (*) nor numbered (#)Description of length {length} is over the {limit} char limitDo not include "{path}" in URL!Do not prompt for Android SDK path, just failDon't create a source tarball, useful when testing a buildDon't do anything logs-relatedDon't refresh the repository, useful when testing a build with no internet connectionDon't use rsync checksumsDownload complete mirrors of small reposDownload logs we don't haveDownloading the repository already failed once, not trying again.Downloading {url} failed. {error}Duplicate build recipe found for versionCode {versionCode} in {linedesc}Duplicate link in '{field}': {url}Dynamically scan APKs post buildERROR: this command should never be used to mirror f-droid.org! A full mirror of f-droid.org requires more than 200GB.ERROR: unsupported CI type, patches welcome!Empty build flag at {linedesc}Enter the path to the Android SDK (%s) here: > Error while attempting to publish log: %sError while getting repo addressExtract signatures from APKsFailed fetching signatures for '{apkfilename}': {error}Failed reading {path}: {error}Failed resizing {path}: {error}Failed to align applicationFailed to create S3 bucket: {url}Failed to get APK manifest informationFailed to get apk information, deleting {path}Failed to get apk information, skipping {path}Failed to install '{apkfilename}' on {dev}: {error}Failed to sign applicationFetched buildserverid from VM: {buildserverid}Fetched signatures for '{apkfilename}' -> '{sigdir}'FinishedFlattr donation methods belong in the FlattrID flagForbidden HTML tagsForce build of disabled apps, and carries on regardless of scan problems. Only allowed in test mode.Force halting build after {0} sec timeout!Found "{path}" graphic without metadata for app "{name}"!Found invalid appids in argumentsFound invalid versionCodes for some appsFound multiple metadata files for {appid}Found multiple signing certificates for repository.Found multiple signing certificates in {path}Found no signing certificates for repository.Found non-file at %sGenerated skeleton metadata for {appid}Git checkout of '%s' failedGit clean failedGit fetch failedGit remote set-head failedGit reset failedGit submodule sync failedGit submodule update failedHTTPS must be used with Subversion URLs!Ignoring package without metadata: Ignoring stale cache data for {apkfilename}Ignoring {ext} file at '{path}'Include APKs that are signed with disabled algorithms like MD5Initialising submodulesInstall all signed applications availableInstall built packages on devicesInstalling %s...Installing '{apkfilename}' on {dev}...Interact with the repo HTTP serverInteractively ask about things that need updating.Invalid APKInvalid boolean '%s'Invalid build flag at {line} in {linedesc}Invalid build format: {value} in {name}Invalid bulleted listInvalid license tag "%s"! Use only tags from https://spdx.org/license-listInvalid link - use [http://foo.bar Link title] or [http://foo.bar]Invalid metadata in %s:%dInvalid metadata in: Invalid name for published file: %sInvalid package name {0}Invalid versionCode: "{versionCode}" is not an integer!JAR signature failed to verify: {path}JAR signature verified: {path}Java JDK not found! Install in standard location or set java_paths!Java jarsigner not found! Install in standard location or set java_paths!Javascript in HTML src attributesKeystore for signing key: Last used commit '{commit}' looks like a tag, but Update Check Mode is '{ucm}'List files that would be reformattedMake the build stop on exceptionsMalformed repository mirrors.Malformed serverwebroot line:Missing output directoryName '%s' is just the auto name - remove itNo 'config.py' found, using defaults.No Android SDK found!No android or kivy project could be found. Specify --subdir?No attached devices foundNo commit specified for {versionName} in {linedesc}No fingerprint in URL.No git submodules availableNo information found.No need to specify that the app is Free SoftwareNo need to specify that the app is for AndroidNo option set! Edit your config.py to set at least one of these:No packages specifiedNo signed apk available for %sNo signed output directory - nothing to doNo signing certificates found in {path}No such package: %sNo such versionCode {versionCode} for app {appid}No unsigned directory - nothing to doNothing to doNothing to do for {appid}.OBB file has newer versionCode({integer}) than any APK:OBB filename must start with "main." or "patch.":OBB's packagename does not match a supported APK:Old APK signature failed to verify: {path}Only PNG and JPEG are supported for graphics, found: {path}Only print differences with the Play StoreOnly process apps with auto-updatesOptionsOverall license of the project.Override path for repo APKs (default: ./repo)Parsing manifest at '{path}'Password required with usernamePath to main Android project subdirectory, if not in root.Path to main android project subdirectory, if not in root.Path to the Android SDK (sometimes set in ANDROID_HOME)Path to the git repo to use as the logPath to the keystore for the repo signing keyPrepare Drozer to run a scanPrepare drozer to run a scanPrint the secret variable to the terminal for easy copy/pasteProblem with description of {appid}: {error}Problem with xml at '{path}'Process auto-updatesProcessing {apkfilename}Processing {appid}Produce human-readable XML/JSON for index filesProduce human-readable index.xmlProject URL to import from.Punctuation should be avoidedPush the log to this git remote repositoryPushing binary transparency log to {url}Pushing to {url}Quickly start a new repositoryRead all the metadata files and exitReading '{config_file}'Reading minSdkVersion failed: "{apkfilename}"Reading packageName/versionCode/versionName failed, APK invalid: '{apkfilename}'Recalculate aggregate stats - use when changes have been made that would invalidate old cached data.Removing specified filesRename APK files that do not match package.name_123.apkReport on build data statusReset and create a brand new build server, even if the existing one appears to be ok.Resigning {apkfilename} with provided debug.keystoreResize all the icons exceeding the max pixel size and exitRestrict output to warnings and errorsRewrite all the metadata filesRewrite to a specific format: Rewriting '{appid}'Rewriting '{appid}' to '{path}'Run rewritemeta to fix formattingRunning first pass with MD5 checking disabledRunning wget in {path}Scan only the latest version of each packageScan the source code of a packageScanner found {count} problems in {appid}:Scanner found {count} problems in {appid}:{versionCode}:Scanner found {} problemScanner found {} problemsSet clock to that time using:Set open file limit to {integer}Set up an app build for a nightly build repoSetting open file limit failed: Setting {0} sec timeout for this buildSetup an emulator, install the APK on it and perform a Drozer scanSetup an emulator, install the apk on it and perform a drozer scanSign and place packages in the repoSign indexes created using update --nosignSkip scanning the source code for binaries and other problemsSkipping '{apkfilename}' with invalid signature!Skipping index generation for {appid}Skipping {apkfilename} with invalid signature!Skipping {appid}: disabledSkipping {appid}: no builds specifiedSpecify a local folder to sync the repo toSpecify an identity file to provide to SSH for rsyncingSpecify editor to use in interactive mode. Default Specify editor to use in interactive mode. Default %sSpecify editor to use in interactive mode. Default is {path}Specify that we're running on the build serverSpecify which debug keystore file to use.Spew out even more information than normalSummary '%s' is just the app's nameSummary of length {length} is over the {limit} char limitSystem clock is older than date in {path}!Test mode - put output in the tmp directory only, and always build, even if the output already exists.The OBB version code must come after "{name}.":The base URL for the repo to log (default: https://f-droid.org)The directory to write the mirror toThe only commands currently supported are 'init' and 'update'The repository's fingerprint does not match.The repository's index could not be verified.The root dir for local_copy_dir "{path}" does not exist!The the file to be included in the repo (path or glob)There is a keyalias collision - publishing haltedThis repo already has local metadata: %sTo use awsbucket, awssecretkey and awsaccesskeyid must also be set in config.py!UCM is set but it looks like checkupdates hasn't been run yetURL shorteners should not be usedURL title is just the URL, use brackets: [URL]URL {url} in Description: {error}Unexpected text on same line as {field} in {linedesc}Unknown file '{filename}' in build '{versionName}'Unknown metadata format: %sUnknown metadata format: {path}Unknown version of aapt, might cause problems: Unlinkified link - use [http://foo.bar Link title] or [http://foo.bar]Unnecessary leading spaceUnnecessary trailing spaceUnrecognised app field: Unrecognised field '{field}' in {linedesc}Unsupported file type "{extension}" for repo graphicUnsupported graphics file found: {path}Unsupported metadata format, use: --to [{supported}]Unterminated ]Unterminated ]]Unterminated build in {name}Unterminated continuation in {name}Unused extlib at %sUnused file at %sUpdate Check Name is set to the known app id - it can be removedUpdate repo information for new packagesUpdate the binary transparency log for a URLUpdate the stats of the repoUpdate the wikiUsageUsage: %s Use /HEAD instead of /master to point at a file in the default branchUse `fdroid update -c` to create it.Use build serverUse date from APK instead of current time for newly added APKsUse date from apk instead of current time for newly added apksUsing "{path}" for configuring s3cmd.Using Java's jarsigner, not recommended for verifying APKs! Use apksignerUsing existing keystore "{path}"Using s3cmd to sync with: {url}Valid commands are:Verify the integrity of downloaded packagesVerifying index signature:Warn about possible metadata errorsWhen configured for signed indexes, create only unsigned indexes at this stageX.509 'Distiguished Name' used when generating keysX.509 'Distinguished Name' used when generating keysYou can use ANDROID_HOME to set the path to your SDK, i.e.:adding IdentityFile to {path}adding to {name}: {path}ambiguous option: %(option)s could match %(matches)sambiguous option: %s (%s?)applicationId in the form APPIDapplicationId to check for updatesapplicationId with optional versionCode in the form APPID[:VERCODE]argument "-" with mode %rattempting bare ssh connection to test deploy key:can't open '%s': %scannot have multiple subparser argumentscannot merge actions - two groups are named %rcannot publish update, did you set the deploy key?cloning {url}command to execute, either 'init' or 'update'complexconflicting option string: %sconflicting option strings: %screated {path}dest= is required for options like %rexpected %s argumentexpected %s argumentsexpected at least one argumentexpected at most one argumentexpected one argumentfdroid [-h|--help|--version] []floating-pointforce errors to be warnings, or ignoregit svn clone failedignored explicit argument %rindex-v1 must have a signature, use `fdroid signindex` to create it!integerinvalid %(type)s value: %(value)rinvalid choice: %(value)r (choose from %(choices)s)invalid conflict_resolution value: %rinvalid option string %(option)r: must start with a character %(prefix_chars)rlocal_copy_dir does not end with "fdroid", perhaps you meant: "{path}"local_copy_dir must be an absolute path!local_copy_dir must be directory, not a file!mirror '%s' does not end with 'fdroid'!mutually exclusive arguments must be optionalno APK suppliedno such option: %sno version info found!not allowed with argument %sone of the arguments %s is requiredonly accepts strings, lists, and tuplesoption %s: If you really want to install all the signed apps, use --alloption %s: invalid %s value: %roption %s: invalid choice: %r (choose from %s)option -%s not recognizedoption -%s requires argumentoption --%s must not have an argumentoption --%s not a unique prefixoption --%s not recognizedoption --%s requires argumentoptional argumentsoverwriting existing {path}positional argumentsrefuse downloading via insecure HTTP connection (use HTTPS or specify --no-https-check): {apkfilename}refuse downloading via insecure http connection (use https or specify --no-https-check): {apkfilename}s3cmd sync indexes {path} to {url} and deleteshow program's version number and exitshow this help message and exitsigned APK, either a file-path or HTTPS URL.skipping source tarball: {path}srclibs missing name and/or @the following arguments are required: %sunexpected option string: %sunknown parser %(parser_name)r (choices: %(choices)s)unrecognized arguments: %sunsafe permissions on '{config_file}' (should be 0600)!usage: usage: fdroid [-h|--help|--version] []using Apache libcloud to sync with {url}{0} app, {1} key aliases{0} apps, {1} key aliases{apkfilename} ({appid}) has no metadata!{apkfilename} has multiple {name} files, looks like Master Key exploit!{apkfilename}'s AndroidManifest.xml has a bad date: {appid} does not have a name! Using package name instead.{appid} is missing {name}{appid}: Unknown extlib {path} in build '{versionName}'{appid}: no builds specified, running on current source state{field} not terminated in {name}{name} "{path}" does not exist! Correct it in config.py.{path} does not exist! Create it by running:{path} has bad file signature "{pattern}", possible Janus exploit!{path} is zero size!{url} does not end with "fdroid", check the URL path!{} build failed{} builds failed{} build succeeded{} builds succeededProject-Id-Version: fdroidserver 0.8-74-ga380b9f Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues POT-Creation-Date: 2018-02-13 09:01+0100 PO-Revision-Date: 2017-11-27 12:40+0100 Last-Translator: Allan Nordhøy Language-Team: Norwegian Bokmål Plural-Forms: nplurals=2; plural=n != 1 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Generated-By: Babel 1.3 SSH Public Key to be used as Deploy Key: {path} encoded for the DEBUG_KEYSTORE secret variable:"%s/" has no matching metadata file!"{path}" contains outdated {name} ({version})"{path}" contains recent {name} ({version})"{path}" exists but s3cmd is not installed!"{path}" is not an accepted format, convert to: {formats}%(option)s option requires %(number)d argument%(option)s option requires %(number)d arguments%(prog)s: feil: %(message)s %d problemer funnet%prog [valg]%r kan ikke kalles%s er ikke et godtatt bygge-felt%s option does not take a value'keypass' ble ikke funnet i config.py!'keystore' ble ikke funnet i config.py!'keystorepass' ble ikke funnet i config.py!'repo_keyalias' ble ikke funnet i config.py!'required' is an invalid argument for positionals'sdk_path' ble ikke funnet i config.py!'{aapt}' is too old, fdroid requires build-tools-23.0.0 or newer!'{aapt}' is too old, fdroid requires build-tools-{version} or newer!'{apkfilename}' er allerede installert på {dev}.'{field}' will be in random order! Use () or [] brackets if order is important!'{path}' failed to execute!'{value}' is not a valid {field} in {appid}. Regex pattern: {pattern}...checkupdate failed for {appid} : {error}.fdroid.txt is not supported! Convert to .fdroid.yml or .fdroid.json./issues is missingLegg til et nytt program fra dets kildekodeAdd a repo signing key to an unsigned repoAdd skeleton metadata files for APKs that are missing themAdding new repo for only {name}Alias of the repo signing key in the keystoreAlso mirror the full archive sectionAlso warn about formatting issues, like rewritemeta -lAndroid SDK '{path}' does not have '{dirname}' installed!Android SDK not found!Android SDK path '{path}' does not exist!Android SDK path '{path}' is not a directory!Android build-tools path '{path}' does not exist!AndroidManifest.xml has no dateProgram finnes i '{repo}', men har en lenke til {url}Å legge til .git er ikke nødvendigArchiving {apkfilename} with invalid signature!Base URL to mirror, can include the index signing key using the query string: ?fingerprint=Branch '{branch}' used as commit in build '{versionName}'Branch '{branch}' used as commit in srclib '{srclib}'Bygg en pakke fra kildekodeBygg alle tilgjengelige versjonerBuild generated by `fdroid import` - remove disable line once readyBuild only the latest version of each packageBuild should have comma-separated versionName and versionCode, not "{value}", in {linedesc}Built repo based in "%s" with this config:Can't build due to {} error while scanningCan't build due to {} errors while scanningCannot find a packageName for {path}!Cannot find an appid for {path}!Cannot read "{path}"!Cannot resolve app id {appid}Kan ikke bruke --list og --to samtidigCannot write "{path}", not an accepted format, use: {formats}Kategoreier ikke sattKategorien "%s" er ikke gyldigSe etter programoppdateringerChecking archiving for {appid} - apks:{integer}, keepversions:{keep}, archapks:{arch}Rydd opp etter at alle skanninger er fullførteClean before the scans start and rebuild the containerClean up all containers and then exitClean update - don't uses caches, reprocess all APKsKommainndelt liste over kategorier.Kommandoen "%s" gjenkjennes ikke. Commit changesCould not find '{command}' on your systemCould not find {path} to remove itCould not open apk file for analysisCouldn't find latest version codeCouldn't find latest version nameCouldn't find package IDCowardily refusing to overwrite existing signing key setup!Create a repo signing key in a keystoreCreate skeleton metadata files that are missingCreated new container "{name}"Creating "{path}" for configuring s3cmd.Creating log directoryCreating new S3 bucket: {url}Creating output directoryCreating signed index with this key (SHA256):Creating temporary directoryCreating unsigned index in preparation for signingDEBUG_KEYSTORE is not set or the value is incompleteSlett APK-er og/eller OBB-er uten metadata fra pakkebrønnenDeleting unknown file: {path}Description '%s' is just the app's summaryDescription has a duplicate lineDescription has a list (%s) but it isn't bulleted (*) nor numbered (#)Description of length {length} is over the {limit} char limitDo not include "{path}" in URL!Do not prompt for Android SDK path, just failDon't create a source tarball, useful when testing a buildDon't do anything logs-relatedDon't refresh the repository, useful when testing a build with no internet connectionDon't use rsync checksumsDownload complete mirrors of small reposDownload logs we don't haveDownloading the repository already failed once, not trying again.Nedlasting av {url} mislyktes. {error}Duplicate build recipe found for versionCode {versionCode} in {linedesc}Duplicate link in '{field}': {url}Dynamically scan APKs post buildERROR: this command should never be used to mirror f-droid.org! A full mirror of f-droid.org requires more than 200GB.ERROR: unsupported CI type, patches welcome!Empty build flag at {linedesc}Enter the path to the Android SDK (%s) here: > Error while attempting to publish log: %sError while getting repo addressHent ut signaturer fra APK-erKlarte ikke å hente signaturer for '{apkfilename}': {error}Failed reading {path}: {error}Failed resizing {path}: {error}Failed to align applicationFailed to create S3 bucket: {url}Failed to get APK manifest informationFailed to get apk information, deleting {path}Failed to get apk information, skipping {path}Klarte ikke å installere '{apkfilename}' på {dev}: {error}Klarte ikke å singere programFetched buildserverid from VM: {buildserverid}Hentet signaturer for '{apkfilename}' → '{sigdir}'FullførtFlatter-donasjonsmetoder hører hjemme i FlattrID-flaggetForbidden HTML tagsForce build of disabled apps, and carries on regardless of scan problems. Only allowed in test mode.Force halting build after {0} sec timeout!Found "{path}" graphic without metadata for app "{name}"!Found invalid appids in argumentsFound invalid versionCodes for some appsFound multiple metadata files for {appid}Found multiple signing certificates for repository.Found multiple signing certificates in {path}Found no signing certificates for repository.Found non-file at %sGenerated skeleton metadata for {appid}Git checkout of '%s' failedGit clean failedGit fetch failedGit remote set-head failedGit reset failedGit submodule sync failedGit submodule update failedHTTPS must be used with Subversion URLs!Ignoring package without metadata: Ignoring stale cache data for {apkfilename}Ignoring {ext} file at '{path}'Include APKs that are signed with disabled algorithms like MD5Initialising submodulesInstall all signed applications availableInstaller bygde pakker på enheterInstallerer %s…Installerer '{apkfilename}' på {dev}…Interact with the repo HTTP serverInteractively ask about things that need updating.Invalid APKInvalid boolean '%s'Invalid build flag at {line} in {linedesc}Invalid build format: {value} in {name}Invalid bulleted listInvalid license tag "%s"! Use only tags from https://spdx.org/license-listInvalid link - use [http://foo.bar Link title] or [http://foo.bar]Invalid metadata in %s:%dInvalid metadata in: Invalid name for published file: %sInvalid package name {0}Invalid versionCode: "{versionCode}" is not an integer!JAR signature failed to verify: {path}JAR signature verified: {path}Java JDK not found! Install in standard location or set java_paths!Java jarsigner not found! Install in standard location or set java_paths!Javascript in HTML src attributesKeystore for signing key: Last used commit '{commit}' looks like a tag, but Update Check Mode is '{ucm}'List files that would be reformattedMake the build stop on exceptionsMalformed repository mirrors.Malformed serverwebroot line:Missing output directoryName '%s' is just the auto name - remove itNo 'config.py' found, using defaults.No Android SDK found!No android or kivy project could be found. Specify --subdir?Fant ingen tilknyttede enheterNo commit specified for {versionName} in {linedesc}Inget fingeravtrykk i nettadresse.No git submodules availableIngen informasjon funnet.No need to specify that the app is Free SoftwareNo need to specify that the app is for AndroidNo option set! Edit your config.py to set at least one of these:No packages specifiedNo signed apk available for %sNo signed output directory - nothing to doNo signing certificates found in {path}No such package: %sNo such versionCode {versionCode} for app {appid}No unsigned directory - nothing to doIngenting å gjøreIngenting å gjøre for {appid}.OBB file has newer versionCode({integer}) than any APK:OBB filename must start with "main." or "patch.":OBB's packagename does not match a supported APK:Old APK signature failed to verify: {path}Only PNG and JPEG are supported for graphics, found: {path}Only print differences with the Play StoreOnly process apps with auto-updatesValgOverall license of the project.Override path for repo APKs (default: ./repo)Parsing manifest at '{path}'Password required with usernamePath to main Android project subdirectory, if not in root.Path to main android project subdirectory, if not in root.Path to the Android SDK (sometimes set in ANDROID_HOME)Path to the git repo to use as the logPath to the keystore for the repo signing keyPrepare Drozer to run a scanPrepare drozer to run a scanPrint the secret variable to the terminal for easy copy/pasteProblem with description of {appid}: {error}Problem with xml at '{path}'Process auto-updatesBehandler {apkfilename}Behandler {appid}Produce human-readable XML/JSON for index filesProduce human-readable index.xmlProject URL to import from.Punctuation should be avoidedPush the log to this git remote repositoryPushing binary transparency log to {url}Pushing to {url}Quickly start a new repositoryLes alle metadatafilene og avsluttReading '{config_file}'Reading minSdkVersion failed: "{apkfilename}"Reading packageName/versionCode/versionName failed, APK invalid: '{apkfilename}'Recalculate aggregate stats - use when changes have been made that would invalidate old cached data.Removing specified filesRename APK files that do not match package.name_123.apkReport on build data statusReset and create a brand new build server, even if the existing one appears to be ok.Resigning {apkfilename} with provided debug.keystoreResize all the icons exceeding the max pixel size and exitRestrict output to warnings and errorsSkriv om alle metadatafileneRewrite to a specific format: Rewriting '{appid}'Rewriting '{appid}' to '{path}'Run rewritemeta to fix formattingRunning first pass with MD5 checking disabledRunning wget in {path}Scan only the latest version of each packageSkann kildekoden til en pakkeScanner found {count} problems in {appid}:Scanner found {count} problems in {appid}:{versionCode}:Scanner found {} problemScanner found {} problemsSet clock to that time using:Set open file limit to {integer}Set up an app build for a nightly build repoSetting open file limit failed: Setting {0} sec timeout for this buildSetup an emulator, install the APK on it and perform a Drozer scanSetup an emulator, install the apk on it and perform a drozer scanLogg inn og legg til pakker i pakkebrønnenSign indexes created using update --nosignSkip scanning the source code for binaries and other problemsSkipping '{apkfilename}' with invalid signature!Skipping index generation for {appid}Skipping {apkfilename} with invalid signature!Skipping {appid}: disabledSkipping {appid}: no builds specifiedSpecify a local folder to sync the repo toSpecify an identity file to provide to SSH for rsyncingSpecify editor to use in interactive mode. Default Specify editor to use in interactive mode. Default %sSpecify editor to use in interactive mode. Default is {path}Specify that we're running on the build serverSpecify which debug keystore file to use.Spew out even more information than normalSummary '%s' is just the app's nameSummary of length {length} is over the {limit} char limitSystem clock is older than date in {path}!Test mode - put output in the tmp directory only, and always build, even if the output already exists.The OBB version code must come after "{name}.":The base URL for the repo to log (default: https://f-droid.org)The directory to write the mirror toThe only commands currently supported are 'init' and 'update'The repository's fingerprint does not match.The repository's index could not be verified.The root dir for local_copy_dir "{path}" does not exist!The the file to be included in the repo (path or glob)There is a keyalias collision - publishing haltedThis repo already has local metadata: %sTo use awsbucket, awssecretkey and awsaccesskeyid must also be set in config.py!UCM is set but it looks like checkupdates hasn't been run yetURL shorteners should not be usedURL title is just the URL, use brackets: [URL]URL {url} in Description: {error}Unexpected text on same line as {field} in {linedesc}Unknown file '{filename}' in build '{versionName}'Unknown metadata format: %sUnknown metadata format: {path}Unknown version of aapt, might cause problems: Unlinkified link - use [http://foo.bar Link title] or [http://foo.bar]Unødvendig innledende mellomromUnødvendig etterfølgende mellomromUnrecognised app field: Unrecognised field '{field}' in {linedesc}Unsupported file type "{extension}" for repo graphicUnsupported graphics file found: {path}Unsupported metadata format, use: --to [{supported}]Unterminated ]Unterminated ]]Unterminated build in {name}Unterminated continuation in {name}Unused extlib at %sUnused file at %sUpdate Check Name is set to the known app id - it can be removedUpdate repo information for new packagesUpdate the binary transparency log for a URLOppdater pakkebrønnens statusUpdate the wikiBrukBruk: %s Use /HEAD instead of /master to point at a file in the default branchUse `fdroid update -c` to create it.Use build serverUse date from APK instead of current time for newly added APKsUse date from apk instead of current time for newly added apksUsing "{path}" for configuring s3cmd.Using Java's jarsigner, not recommended for verifying APKs! Use apksignerUsing existing keystore "{path}"Using s3cmd to sync with: {url}Gyldige kommandoer er:Bekreft integriteten til nedlastede pakkerVerifying index signature:Advar om mulige metadata-feilWhen configured for signed indexes, create only unsigned indexes at this stageX.509 'Distiguished Name' used when generating keysX.509 'Distinguished Name' used when generating keysYou can use ANDROID_HOME to set the path to your SDK, i.e.:adding IdentityFile to {path}adding to {name}: {path}ambiguous option: %(option)s could match %(matches)sambiguous option: %s (%s?)applicationId in the form APPIDapplicationId to check for updatesapplicationId with optional versionCode in the form APPID[:VERCODE]argument "-" with mode %rattempting bare ssh connection to test deploy key:can't open '%s': %scannot have multiple subparser argumentscannot merge actions - two groups are named %rcannot publish update, did you set the deploy key?cloning {url}command to execute, either 'init' or 'update'complexconflicting option string: %sconflicting option strings: %screated {path}dest= is required for options like %rexpected %s argumentexpected %s argumentsexpected at least one argumentexpected at most one argumentexpected one argumentfdroid [-h|--help|--version] []floating-pointtving feil til å bli advarsler, eller ignorergit svn clone failedignored explicit argument %rindex-v1 must have a signature, use `fdroid signindex` to create it!integerinvalid %(type)s value: %(value)rinvalid choice: %(value)r (choose from %(choices)s)invalid conflict_resolution value: %rinvalid option string %(option)r: must start with a character %(prefix_chars)rlocal_copy_dir does not end with "fdroid", perhaps you meant: "{path}"local_copy_dir must be an absolute path!local_copy_dir must be directory, not a file!mirror '%s' does not end with 'fdroid'!mutually exclusive arguments must be optionalno APK suppliedno such option: %singen versjonsinfo funnet!not allowed with argument %sone of the arguments %s is requiredonly accepts strings, lists, and tuplesoption %s: If you really want to install all the signed apps, use --alloption %s: invalid %s value: %roption %s: invalid choice: %r (choose from %s)Kommandoen "-%s" gjenkjennes ikkevalg -%s krever et argumentoption --%s must not have an argumentoption --%s not a unique prefixKommandoen "--%s" gjenkjennes ikkeoption --%s requires argumentvalgfrie argumenteroverwriting existing {path}positional argumentsrefuse downloading via insecure HTTP connection (use HTTPS or specify --no-https-check): {apkfilename}refuse downloading via insecure http connection (use https or specify --no-https-check): {apkfilename}s3cmd sync indexes {path} to {url} and deletevis programmets versjonsnummer og avsluttvis denne hjelpemeldingen og avsluttsigned APK, either a file-path or HTTPS URL.skipping source tarball: {path}srclibs missing name and/or @the following arguments are required: %sunexpected option string: %sunknown parser %(parser_name)r (choices: %(choices)s)unrecognized arguments: %sunsafe permissions on '{config_file}' (should be 0600)!bruk: bruk: fdroid [-h|--help|--version] []using Apache libcloud to sync with {url}{0} app, {1} key aliases{0} apps, {1} key aliases{apkfilename} ({appid}) has no metadata!{apkfilename} has multiple {name} files, looks like Master Key exploit!{apkfilename}'s AndroidManifest.xml has a bad date: {appid} does not have a name! Using package name instead.{appid} is missing {name}{appid}: Unknown extlib {path} in build '{versionName}'{appid}: no builds specified, running on current source state{field} not terminated in {name}{name} "{path}" does not exist! Correct it in config.py.{path} does not exist! Create it by running:{path} has bad file signature "{pattern}", possible Janus exploit!{path} is zero size!{url} does not end with "fdroid", check the URL path!{} build failed{} builds failed{} build succeeded{} builds succeededfdroidserver-1.0.9/locale/nb_NO/LC_MESSAGES/fdroidserver.po0000664000175000017500000014762113322065577023227 0ustar hanshans00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Free Software Foundation, Inc. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: fdroidserver 0.8-74-ga380b9f\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" "POT-Creation-Date: 2018-02-13 09:01+0100\n" "PO-Revision-Date: 2017-11-27 12:40+0100\n" "Last-Translator: Allan Nordhøy \n" "Language-Team: Norwegian Bokmål \n" "Language: nb_NO\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 2.17\n" #: ../fdroidserver/nightly.py msgid "" "\n" "SSH Public Key to be used as Deploy Key:" msgstr "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "" "\n" "{path} encoded for the DEBUG_KEYSTORE secret variable:" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "\"%s/\" has no matching metadata file!" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "\"{path}\" contains outdated {name} ({version})" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "\"{path}\" contains recent {name} ({version})" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "\"{path}\" exists but s3cmd is not installed!" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "\"{path}\" is not an accepted format, convert to: {formats}" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "%(option)s option requires %(number)d argument" msgid_plural "%(option)s option requires %(number)d arguments" msgstr[0] "" msgstr[1] "" #: ../fdroidserver/mirror.py #, fuzzy, python-format msgid "%(prog)s [options] url" msgstr "%prog [valg]" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "%(prog)s: error: %(message)s\n" msgstr "%(prog)s: feil: %(message)s\n" #: ../fdroidserver/scanner.py #, python-format msgid "%d problems found" msgstr "%d problemer funnet" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "%prog [options]" msgstr "%prog [valg]" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "%r is not callable" msgstr "%r kan ikke kalles" #: ../fdroidserver/lint.py #, python-format msgid "%s is not an accepted build field" msgstr "%s er ikke et godtatt bygge-felt" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "%s option does not take a value" msgstr "" #: ../fdroidserver/index.py ../fdroidserver/common.py msgid "'keypass' not found in config.py!" msgstr "'keypass' ble ikke funnet i config.py!" #: ../fdroidserver/index.py ../fdroidserver/common.py msgid "'keystore' not found in config.py!" msgstr "'keystore' ble ikke funnet i config.py!" #: ../fdroidserver/index.py ../fdroidserver/common.py msgid "'keystorepass' not found in config.py!" msgstr "'keystorepass' ble ikke funnet i config.py!" #: ../fdroidserver/index.py ../fdroidserver/common.py msgid "'repo_keyalias' not found in config.py!" msgstr "'repo_keyalias' ble ikke funnet i config.py!" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "'required' is an invalid argument for positionals" msgstr "" #: ../fdroidserver/common.py msgid "'sdk_path' not set in 'config.py'!" msgstr "'sdk_path' ble ikke funnet i config.py!" #. Translators: "build-tools" is the file name of a package from #. Google, it is part of the Android SDK. So it probably shouldn't be #. translated or transliterated. #: ../fdroidserver/common.py #, python-brace-format msgid "'{aapt}' is too old, fdroid requires build-tools-23.0.0 or newer!" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "'{aapt}' is too old, fdroid requires build-tools-{version} or newer!" msgstr "" #: ../fdroidserver/install.py #, python-brace-format msgid "'{apkfilename}' is already installed on {dev}." msgstr "'{apkfilename}' er allerede installert på {dev}." #: ../fdroidserver/common.py #, python-brace-format msgid "'{field}' will be in random order! Use () or [] brackets if order is important!" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "'{path}' failed to execute!" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "'{value}' is not a valid {field} in {appid}. Regex pattern: {pattern}" msgstr "" #: ../fdroidserver/checkupdates.py #, python-brace-format msgid "...checkupdate failed for {appid} : {error}" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, fuzzy msgid ".__call__() not defined" msgstr ".__call__() udefinert" #: ../fdroidserver/metadata.py msgid ".fdroid.txt is not supported! Convert to .fdroid.yml or .fdroid.json." msgstr "" #: ../fdroidserver/lint.py msgid "/issues is missing" msgstr "" #: ../fdroidserver/mirror.py #, fuzzy msgid "A URL is required as an argument!" msgstr "valg -%s krever et argument" #: ../fdroid #, fuzzy msgid "Add PGP signatures using GnuPG for packages in repo" msgstr "Legg til PGP-signaturer for pakker i pakkebrønnen ved bruk av GnuPG" #: ../fdroid msgid "Add a new application from its source code" msgstr "Legg til et nytt program fra dets kildekode" #: ../fdroidserver/update.py msgid "Add a repo signing key to an unsigned repo" msgstr "" #: ../fdroidserver/update.py msgid "Add skeleton metadata files for APKs that are missing them" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Adding new repo for only {name}" msgstr "" #: ../fdroidserver/init.py msgid "Alias of the repo signing key in the keystore" msgstr "" #: ../fdroidserver/import.py #, fuzzy msgid "Allows a different revision (or git branch) to be specified for the initial import" msgstr "Tillater en annen revisjon (eller git-avgreining) å angis for igangsettende import" #: ../fdroidserver/mirror.py msgid "Also mirror the full archive section" msgstr "" #: ../fdroidserver/lint.py msgid "Also warn about formatting issues, like rewritemeta -l" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Android SDK '{path}' does not have '{dirname}' installed!" msgstr "" #: ../fdroidserver/common.py msgid "Android SDK not found!" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Android SDK path '{path}' does not exist!" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Android SDK path '{path}' is not a directory!" msgstr "" #. Translators: "build-tools" is the file name of a package from #. Google, it is part of the Android SDK. So it probably shouldn't be #. translated or transliterated. #: ../fdroidserver/common.py #, python-brace-format msgid "Android build-tools path '{path}' does not exist!" msgstr "" #: ../fdroidserver/update.py msgid "AndroidManifest.xml has no date" msgstr "" #: ../fdroidserver/lint.py #, python-brace-format msgid "App is in '{repo}' but has a link to {url}" msgstr "Program finnes i '{repo}', men har en lenke til {url}" #: ../fdroidserver/lint.py msgid "Appending .git is not necessary" msgstr "Å legge til .git er ikke nødvendig" #: ../fdroidserver/update.py #, python-brace-format msgid "Archiving {apkfilename} with invalid signature!" msgstr "" #: ../fdroidserver/mirror.py msgid "Base URL to mirror, can include the index signing key using the query string: ?fingerprint=" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vname #: ../fdroidserver/lint.py #, python-brace-format msgid "Branch '{branch}' used as commit in build '{versionName}'" msgstr "" #: ../fdroidserver/lint.py #, python-brace-format msgid "Branch '{branch}' used as commit in srclib '{srclib}'" msgstr "" #: ../fdroid msgid "Build a package from source" msgstr "Bygg en pakke fra kildekode" #: ../fdroidserver/build.py msgid "Build all applications available" msgstr "Bygg alle tilgjengelige versjoner" #: ../fdroidserver/lint.py msgid "Build generated by `fdroid import` - remove disable line once ready" msgstr "" #: ../fdroidserver/build.py msgid "Build only the latest version of each package" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Build should have comma-separated versionName and versionCode, not \"{value}\", in {linedesc}" msgstr "" #: ../fdroidserver/init.py #, python-format msgid "Built repo based in \"%s\" with this config:" msgstr "" #: ../fdroidserver/build.py msgid "Can't build due to {} error while scanning" msgid_plural "Can't build due to {} errors while scanning" msgstr[0] "" msgstr[1] "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Cannot find a packageName for {path}!" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Cannot find an appid for {path}!" msgstr "" #: ../fdroidserver/vmtools.py #, python-brace-format msgid "Cannot read \"{path}\"!" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Cannot resolve app id {appid}" msgstr "" #: ../fdroidserver/rewritemeta.py msgid "Cannot use --list and --to at the same time" msgstr "Kan ikke bruke --list og --to samtidig" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Cannot write \"{path}\", not an accepted format, use: {formats}" msgstr "" #: ../fdroidserver/lint.py msgid "Categories are not set" msgstr "Kategoreier ikke satt" #: ../fdroidserver/lint.py #, python-format msgid "Category '%s' is not valid" msgstr "Kategorien \"%s\" er ikke gyldig" #: ../fdroid msgid "Check for updates to applications" msgstr "Se etter programoppdateringer" #: ../fdroidserver/update.py #, python-brace-format msgid "Checking archiving for {appid} - apks:{integer}, keepversions:{keep}, archapks:{arch}" msgstr "" #: ../fdroidserver/dscanner.py msgid "Clean after all scans have finished" msgstr "Rydd opp etter at alle skanninger er fullførte" #: ../fdroidserver/dscanner.py msgid "Clean before the scans start and rebuild the container" msgstr "" #: ../fdroidserver/dscanner.py msgid "Clean up all containers and then exit" msgstr "" #: ../fdroidserver/update.py msgid "Clean update - don't uses caches, reprocess all APKs" msgstr "" #: ../fdroidserver/import.py msgid "Comma separated list of categories." msgstr "Kommainndelt liste over kategorier." #: ../fdroid #, c-format, python-format msgid "Command '%s' not recognised.\n" msgstr "Kommandoen \"%s\" gjenkjennes ikke.\n" #: ../fdroidserver/checkupdates.py msgid "Commit changes" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Could not find '{command}' on your system" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Could not find {path} to remove it" msgstr "" #: ../fdroidserver/update.py msgid "Could not open apk file for analysis" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/import.py msgid "Couldn't find latest version code" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vname #: ../fdroidserver/import.py msgid "Couldn't find latest version name" msgstr "" #: ../fdroidserver/import.py msgid "Couldn't find package ID" msgstr "" #: ../fdroidserver/update.py msgid "Cowardily refusing to overwrite existing signing key setup!" msgstr "" #: ../fdroidserver/update.py msgid "Create a repo signing key in a keystore" msgstr "" #: ../fdroidserver/update.py msgid "Create skeleton metadata files that are missing" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Created new container \"{name}\"" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Creating \"{path}\" for configuring s3cmd." msgstr "" #: ../fdroidserver/publish.py msgid "Creating log directory" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Creating new S3 bucket: {url}" msgstr "" #: ../fdroidserver/publish.py msgid "Creating output directory" msgstr "" #: ../fdroidserver/index.py msgid "Creating signed index with this key (SHA256):" msgstr "" #: ../fdroidserver/import.py ../fdroidserver/verify.py #: ../fdroidserver/publish.py msgid "Creating temporary directory" msgstr "" #: ../fdroidserver/index.py msgid "Creating unsigned index in preparation for signing" msgstr "" #: ../fdroidserver/nightly.py msgid "DEBUG_KEYSTORE is not set or the value is incomplete" msgstr "" #: ../fdroidserver/update.py msgid "Delete APKs and/or OBBs without metadata from the repo" msgstr "Slett APK-er og/eller OBB-er uten metadata fra pakkebrønnen" #: ../fdroidserver/update.py #, python-brace-format msgid "Deleting unknown file: {path}" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Description '%s' is just the app's summary" msgstr "" #: ../fdroidserver/lint.py msgid "Description has a duplicate line" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Description has a list (%s) but it isn't bulleted (*) nor numbered (#)" msgstr "" #: ../fdroidserver/lint.py #, python-brace-format msgid "Description of length {length} is over the {limit} char limit" msgstr "" #: ../fdroidserver/mirror.py #, python-brace-format msgid "Do not include \"{path}\" in URL!" msgstr "" #: ../fdroidserver/init.py msgid "Do not prompt for Android SDK path, just fail" msgstr "" #: ../fdroidserver/build.py msgid "Don't create a source tarball, useful when testing a build" msgstr "" #: ../fdroidserver/stats.py msgid "Don't do anything logs-related" msgstr "" #: ../fdroidserver/build.py msgid "Don't refresh the repository, useful when testing a build with no internet connection" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/nightly.py #: ../fdroidserver/upload.py msgid "Don't use rsync checksums" msgstr "" #: ../fdroid msgid "Download complete mirrors of small repos" msgstr "" #: ../fdroidserver/stats.py msgid "Download logs we don't have" msgstr "" #: ../fdroidserver/common.py msgid "Downloading the repository already failed once, not trying again." msgstr "" #: ../fdroidserver/verify.py #, python-brace-format msgid "Downloading {url} failed. {error}" msgstr "Nedlasting av {url} mislyktes. {error}" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Duplicate build recipe found for versionCode {versionCode} in {linedesc}" msgstr "" #: ../fdroidserver/lint.py #, python-brace-format msgid "Duplicate link in '{field}': {url}" msgstr "" #: ../fdroid msgid "Dynamically scan APKs post build" msgstr "" #: ../fdroidserver/mirror.py msgid "" "ERROR: this command should never be used to mirror f-droid.org!\n" "A full mirror of f-droid.org requires more than 200GB." msgstr "" #: ../fdroidserver/nightly.py msgid "ERROR: unsupported CI type, patches welcome!" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Empty build flag at {linedesc}" msgstr "" #: ../fdroidserver/init.py #, python-format msgid "" "Enter the path to the Android SDK (%s) here:\n" "> " msgstr "" #: ../fdroidserver/server.py ../fdroidserver/checkupdates.py #: ../fdroidserver/upload.py #, python-format msgid "Error while attempting to publish log: %s" msgstr "" #: ../fdroidserver/import.py msgid "Error while getting repo address" msgstr "" #: ../fdroid msgid "Extract signatures from APKs" msgstr "Hent ut signaturer fra APK-er" #: ../fdroidserver/signatures.py #, python-brace-format msgid "Failed fetching signatures for '{apkfilename}': {error}" msgstr "Klarte ikke å hente signaturer for '{apkfilename}': {error}" #: ../fdroidserver/update.py #, python-brace-format msgid "Failed reading {path}: {error}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Failed resizing {path}: {error}" msgstr "" #: ../fdroidserver/publish.py msgid "Failed to align application" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Failed to create S3 bucket: {url}" msgstr "" #: ../fdroidserver/common.py msgid "Failed to get APK manifest information" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Failed to get apk information, deleting {path}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Failed to get apk information, skipping {path}" msgstr "" #: ../fdroidserver/install.py #, python-brace-format msgid "Failed to install '{apkfilename}' on {dev}: {error}" msgstr "Klarte ikke å installere '{apkfilename}' på {dev}: {error}" #: ../fdroidserver/publish.py ../fdroidserver/common.py msgid "Failed to sign application" msgstr "Klarte ikke å singere program" #: ../fdroidserver/common.py #, fuzzy msgid "Failed to zipalign application" msgstr "Klarte ikke å singere program" #: ../fdroidserver/build.py #, python-brace-format msgid "Fetched buildserverid from VM: {buildserverid}" msgstr "" #: ../fdroidserver/signatures.py #, python-brace-format msgid "Fetched signatures for '{apkfilename}' -> '{sigdir}'" msgstr "Hentet signaturer for '{apkfilename}' → '{sigdir}'" #: ../fdroidserver/verify.py ../fdroidserver/stats.py ../fdroidserver/update.py #: ../fdroidserver/rewritemeta.py ../fdroidserver/build.py #: ../fdroidserver/checkupdates.py ../fdroidserver/scanner.py #: ../fdroidserver/install.py msgid "Finished" msgstr "Fullført" #: ../fdroidserver/lint.py msgid "Flattr donation methods belong in the FlattrID flag" msgstr "Flatter-donasjonsmetoder hører hjemme i FlattrID-flagget" #: ../fdroidserver/lint.py msgid "Forbidden HTML tags" msgstr "" #: ../fdroidserver/build.py msgid "Force build of disabled apps, and carries on regardless of scan problems. Only allowed in test mode." msgstr "" #: ../fdroidserver/build.py #, python-brace-format msgid "Force halting build after {0} sec timeout!" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Found \"{path}\" graphic without metadata for app \"{name}\"!" msgstr "" #: ../fdroidserver/common.py msgid "Found invalid appids in arguments" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/common.py msgid "Found invalid versionCodes for some apps" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Found multiple metadata files for {appid}" msgstr "" #: ../fdroidserver/index.py msgid "Found multiple signing certificates for repository." msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Found multiple signing certificates in {path}" msgstr "" #: ../fdroidserver/index.py msgid "Found no signing certificates for repository." msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Found non-file at %s" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Generated skeleton metadata for {appid}" msgstr "" #: ../fdroidserver/common.py #, python-format msgid "Git checkout of '%s' failed" msgstr "" #: ../fdroidserver/common.py msgid "Git clean failed" msgstr "" #: ../fdroidserver/common.py msgid "Git fetch failed" msgstr "" #: ../fdroidserver/common.py msgid "Git remote set-head failed" msgstr "" #: ../fdroidserver/common.py msgid "Git reset failed" msgstr "" #: ../fdroidserver/common.py msgid "Git submodule sync failed" msgstr "" #: ../fdroidserver/common.py msgid "Git submodule update failed" msgstr "" #: ../fdroidserver/common.py msgid "HTTPS must be used with Subversion URLs!" msgstr "" #: ../fdroidserver/index.py msgid "Ignoring package without metadata: " msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Ignoring stale cache data for {apkfilename}" msgstr "" #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Ignoring {ext} file at '{path}'" msgstr "" #: ../fdroidserver/update.py msgid "Include APKs that are signed with disabled algorithms like MD5" msgstr "" #: ../fdroidserver/common.py msgid "Initialising submodules" msgstr "" #: ../fdroidserver/install.py msgid "Install all signed applications available" msgstr "" #: ../fdroid msgid "Install built packages on devices" msgstr "Installer bygde pakker på enheter" #: ../fdroidserver/install.py #, python-format msgid "Installing %s..." msgstr "Installerer %s…" #: ../fdroidserver/install.py #, python-brace-format msgid "Installing '{apkfilename}' on {dev}..." msgstr "Installerer '{apkfilename}' på {dev}…" #: ../fdroid msgid "Interact with the repo HTTP server" msgstr "" #: ../fdroidserver/update.py msgid "Interactively ask about things that need updating." msgstr "" #: ../fdroidserver/update.py msgid "Invalid APK" msgstr "" #: ../fdroidserver/metadata.py #, python-format msgid "Invalid boolean '%s'" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Invalid build flag at {line} in {linedesc}" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Invalid build format: {value} in {name}" msgstr "" #: ../fdroidserver/lint.py msgid "Invalid bulleted list" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Invalid license tag \"%s\"! Use only tags from https://spdx.org/license-list" msgstr "" #: ../fdroidserver/lint.py msgid "Invalid link - use [http://foo.bar Link title] or [http://foo.bar]" msgstr "" #: ../fdroidserver/metadata.py #, python-format msgid "Invalid metadata in %s:%d" msgstr "" #: ../fdroidserver/metadata.py msgid "Invalid metadata in: " msgstr "" #: ../fdroidserver/common.py #, python-format msgid "Invalid name for published file: %s" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Invalid package name {0}" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Invalid versionCode: \"{versionCode}\" is not an integer!" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "JAR signature failed to verify: {path}" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "JAR signature verified: {path}" msgstr "" #: ../fdroidserver/publish.py ../fdroidserver/update.py #: ../fdroidserver/mirror.py msgid "Java JDK not found! Install in standard location or set java_paths!" msgstr "" #: ../fdroidserver/signindex.py msgid "Java jarsigner not found! Install in standard location or set java_paths!" msgstr "" #: ../fdroidserver/lint.py msgid "Javascript in HTML src attributes" msgstr "" #: ../fdroidserver/init.py msgid "Keystore for signing key:\t" msgstr "" #: ../fdroidserver/lint.py #, python-brace-format msgid "Last used commit '{commit}' looks like a tag, but Update Check Mode is '{ucm}'" msgstr "" #: ../fdroidserver/lint.py #, fuzzy msgid "Liberapay donation methods belong in the LiberapayID flag" msgstr "Flatter-donasjonsmetoder hører hjemme i FlattrID-flagget" #: ../fdroidserver/rewritemeta.py msgid "List files that would be reformatted" msgstr "" #: ../fdroidserver/build.py msgid "Make the build stop on exceptions" msgstr "" #: ../fdroidserver/index.py msgid "Malformed repository mirrors." msgstr "" #: ../fdroidserver/server.py msgid "Malformed serverwebroot line:" msgstr "" #: ../fdroidserver/gpgsign.py msgid "Missing output directory" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Name '%s' is just the auto name - remove it" msgstr "" #: ../fdroidserver/common.py msgid "No 'config.py' found, using defaults." msgstr "" #: ../fdroidserver/common.py msgid "No Android SDK found!" msgstr "" #: ../fdroidserver/import.py msgid "No android or kivy project could be found. Specify --subdir?" msgstr "" #: ../fdroidserver/install.py msgid "No attached devices found" msgstr "Fant ingen tilknyttede enheter" #: ../fdroidserver/metadata.py #, python-brace-format msgid "No commit specified for {versionName} in {linedesc}" msgstr "" #: ../fdroidserver/index.py msgid "No fingerprint in URL." msgstr "Inget fingeravtrykk i nettadresse." #: ../fdroidserver/common.py msgid "No git submodules available" msgstr "" #: ../fdroidserver/import.py msgid "No information found." msgstr "Ingen informasjon funnet." #: ../fdroidserver/lint.py msgid "No need to specify that the app is Free Software" msgstr "" #: ../fdroidserver/lint.py msgid "No need to specify that the app is for Android" msgstr "" #: ../fdroidserver/server.py msgid "No option set! Edit your config.py to set at least one of these:" msgstr "" #: ../fdroidserver/common.py msgid "No packages specified" msgstr "" #: ../fdroidserver/install.py #, python-format msgid "No signed apk available for %s" msgstr "" #: ../fdroidserver/install.py msgid "No signed output directory - nothing to do" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "No signing certificates found in {path}" msgstr "" #: ../fdroidserver/common.py #, python-format msgid "No such package: %s" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/common.py #, python-brace-format msgid "No such versionCode {versionCode} for app {appid}" msgstr "" #: ../fdroidserver/verify.py ../fdroidserver/publish.py msgid "No unsigned directory - nothing to do" msgstr "" #: ../fdroidserver/signindex.py msgid "Nothing to do" msgstr "Ingenting å gjøre" #: ../fdroidserver/checkupdates.py #, python-brace-format msgid "Nothing to do for {appid}." msgstr "Ingenting å gjøre for {appid}." #: ../fdroidserver/init.py #, fuzzy msgid "Now set these in config.py:" msgstr "'sdk_path' ble ikke funnet i config.py!" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/update.py #, python-brace-format msgid "OBB file has newer versionCode({integer}) than any APK:" msgstr "" #: ../fdroidserver/update.py msgid "OBB filename must start with \"main.\" or \"patch.\":" msgstr "" #: ../fdroidserver/update.py msgid "OBB's packagename does not match a supported APK:" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Old APK signature failed to verify: {path}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Only PNG and JPEG are supported for graphics, found: {path}" msgstr "" #: ../fdroidserver/checkupdates.py msgid "Only print differences with the Play Store" msgstr "" #: ../fdroidserver/checkupdates.py msgid "Only process apps with auto-updates" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "Options" msgstr "Valg" #: ../fdroidserver/import.py msgid "Overall license of the project." msgstr "" #: ../fdroidserver/dscanner.py msgid "Override path for repo APKs (default: ./repo)" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Parsing manifest at '{path}'" msgstr "" #: ../fdroidserver/common.py msgid "Password required with username" msgstr "" #: ../fdroidserver/import.py msgid "Path to main Android project subdirectory, if not in root." msgstr "" msgid "Path to main android project subdirectory, if not in root." msgstr "" #: ../fdroidserver/init.py msgid "Path to the Android SDK (sometimes set in ANDROID_HOME)" msgstr "" #: ../fdroidserver/btlog.py msgid "Path to the git repo to use as the log" msgstr "" #: ../fdroidserver/init.py msgid "Path to the keystore for the repo signing key" msgstr "" #: ../fdroidserver/dscanner.py msgid "Prepare Drozer to run a scan" msgstr "" msgid "Prepare drozer to run a scan" msgstr "" #: ../fdroidserver/nightly.py msgid "Print the secret variable to the terminal for easy copy/paste" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Problem with description of {appid}: {error}" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Problem with xml at '{path}'" msgstr "" #: ../fdroidserver/checkupdates.py msgid "Process auto-updates" msgstr "" #: ../fdroidserver/publish.py ../fdroidserver/update.py #, python-brace-format msgid "Processing {apkfilename}" msgstr "Behandler {apkfilename}" #: ../fdroidserver/checkupdates.py ../fdroidserver/scanner.py #, python-brace-format msgid "Processing {appid}" msgstr "Behandler {appid}" #: ../fdroidserver/update.py msgid "Produce human-readable XML/JSON for index files" msgstr "" #: ../fdroidserver/update.py msgid "Produce human-readable index.xml" msgstr "" #: ../fdroidserver/import.py msgid "Project URL to import from." msgstr "" #: ../fdroidserver/lint.py msgid "Punctuation should be avoided" msgstr "" #: ../fdroidserver/btlog.py msgid "Push the log to this git remote repository" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Pushing binary transparency log to {url}" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Pushing to {url}" msgstr "" #: ../fdroid msgid "Quickly start a new repository" msgstr "" #: ../fdroid msgid "Read all the metadata files and exit" msgstr "Les alle metadatafilene og avslutt" #: ../fdroidserver/common.py #, python-brace-format msgid "Reading '{config_file}'" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "Reading minSdkVersion failed: \"{apkfilename}\"" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #. https://developer.android.com/guide/topics/manifest/manifest-element.html#vname #: ../fdroidserver/common.py #, python-brace-format msgid "Reading packageName/versionCode/versionName failed, APK invalid: '{apkfilename}'" msgstr "" #: ../fdroidserver/update.py #, fuzzy, python-brace-format msgid "Reading {apkfilename} from cache" msgstr "Behandler {apkfilename}" #: ../fdroidserver/stats.py msgid "Recalculate aggregate stats - use when changes have been made that would invalidate old cached data." msgstr "" #: ../fdroidserver/common.py msgid "Removing specified files" msgstr "" #: ../fdroidserver/update.py msgid "Rename APK files that do not match package.name_123.apk" msgstr "" #: ../fdroidserver/update.py msgid "Report on build data status" msgstr "" #: ../fdroidserver/build.py msgid "Reset and create a brand new build server, even if the existing one appears to be ok." msgstr "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "Resigning {apkfilename} with provided debug.keystore" msgstr "" #: ../fdroidserver/update.py msgid "Resize all the icons exceeding the max pixel size and exit" msgstr "" #: ../fdroidserver/common.py msgid "Restrict output to warnings and errors" msgstr "" #: ../fdroid msgid "Rewrite all the metadata files" msgstr "Skriv om alle metadatafilene" #: ../fdroidserver/rewritemeta.py msgid "Rewrite to a specific format: " msgstr "" #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Rewriting '{appid}'" msgstr "" #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Rewriting '{appid}' to '{path}'" msgstr "" #: ../fdroidserver/lint.py msgid "Run rewritemeta to fix formatting" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py msgid "Running first pass with MD5 checking disabled" msgstr "" #: ../fdroidserver/mirror.py #, python-brace-format msgid "Running wget in {path}" msgstr "" #: ../fdroidserver/dscanner.py msgid "Scan only the latest version of each package" msgstr "" #: ../fdroid msgid "Scan the source code of a package" msgstr "Skann kildekoden til en pakke" #: ../fdroidserver/scanner.py #, python-brace-format msgid "Scanner found {count} problems in {appid}:" msgstr "" #: ../fdroidserver/scanner.py #, python-brace-format msgid "Scanner found {count} problems in {appid}:{versionCode}:" msgstr "" #: ../fdroidserver/build.py msgid "Scanner found {} problem" msgid_plural "Scanner found {} problems" msgstr[0] "" msgstr[1] "" #: ../fdroidserver/common.py msgid "Set clock to that time using:" msgstr "" #: ../fdroidserver/build.py #, python-brace-format msgid "Set open file limit to {integer}" msgstr "" #: ../fdroid msgid "Set up an app build for a nightly build repo" msgstr "" #: ../fdroidserver/build.py msgid "Setting open file limit failed: " msgstr "" #: ../fdroidserver/build.py #, python-brace-format msgid "Setting {0} sec timeout for this build" msgstr "" #: ../fdroidserver/build.py msgid "Setup an emulator, install the APK on it and perform a Drozer scan" msgstr "" msgid "Setup an emulator, install the apk on it and perform a drozer scan" msgstr "" #: ../fdroid msgid "Sign and place packages in the repo" msgstr "Logg inn og legg til pakker i pakkebrønnen" #: ../fdroid msgid "Sign indexes created using update --nosign" msgstr "" #: ../fdroidserver/build.py msgid "Skip scanning the source code for binaries and other problems" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Skipping '{apkfilename}' with invalid signature!" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Skipping index generation for {appid}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Skipping {apkfilename} with invalid signature!" msgstr "" #: ../fdroidserver/scanner.py #, python-brace-format msgid "Skipping {appid}: disabled" msgstr "" #: ../fdroidserver/scanner.py #, python-brace-format msgid "Skipping {appid}: no builds specified" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py msgid "Specify a local folder to sync the repo to" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py msgid "Specify an identity file to provide to SSH for rsyncing" msgstr "" #: ../fdroidserver/update.py msgid "Specify editor to use in interactive mode. Default " msgstr "" #, c-format msgid "Specify editor to use in interactive mode. Default %s" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Specify editor to use in interactive mode. Default is {path}" msgstr "" #: ../fdroidserver/build.py msgid "Specify that we're running on the build server" msgstr "" #: ../fdroidserver/nightly.py msgid "Specify which debug keystore file to use." msgstr "" #: ../fdroidserver/common.py msgid "Spew out even more information than normal" msgstr "" #: ../fdroidserver/nightly.py #, fuzzy, python-brace-format msgid "Striping mystery signature from {apkfilename}" msgstr "Klarte ikke å hente signaturer for '{apkfilename}': {error}" #: ../fdroidserver/lint.py #, python-format msgid "Summary '%s' is just the app's name" msgstr "" #: ../fdroidserver/lint.py #, python-brace-format msgid "Summary of length {length} is over the {limit} char limit" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "System clock is older than date in {path}!" msgstr "" #: ../fdroidserver/build.py msgid "Test mode - put output in the tmp directory only, and always build, even if the output already exists." msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/update.py #, python-brace-format msgid "The OBB version code must come after \"{name}.\":" msgstr "" #: ../fdroidserver/btlog.py msgid "The base URL for the repo to log (default: https://f-droid.org)" msgstr "" #: ../fdroidserver/mirror.py msgid "The directory to write the mirror to" msgstr "" #: ../fdroidserver/server.py msgid "The only commands currently supported are 'init' and 'update'" msgstr "" #: ../fdroidserver/index.py msgid "The repository's fingerprint does not match." msgstr "" #: ../fdroidserver/common.py msgid "The repository's index could not be verified." msgstr "" #: ../fdroidserver/server.py #, python-brace-format msgid "The root dir for local_copy_dir \"{path}\" does not exist!" msgstr "" #: ../fdroidserver/nightly.py msgid "The the file to be included in the repo (path or glob)" msgstr "" #: ../fdroidserver/publish.py msgid "There is a keyalias collision - publishing halted" msgstr "" #: ../fdroidserver/import.py #, python-format msgid "This repo already has local metadata: %s" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py msgid "To use awsbucket, awssecretkey and awsaccesskeyid must also be set in config.py!" msgstr "" #: ../fdroidserver/lint.py msgid "UCM is set but it looks like checkupdates hasn't been run yet" msgstr "" #: ../fdroidserver/lint.py msgid "URL shorteners should not be used" msgstr "" #: ../fdroidserver/metadata.py msgid "URL title is just the URL, use brackets: [URL]" msgstr "" #: ../fdroidserver/lint.py #, python-brace-format msgid "URL {url} in Description: {error}" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Unexpected text on same line as {field} in {linedesc}" msgstr "" #: ../fdroid #, fuzzy msgid "Unknown exception found!" msgstr "Ukjent unntak møtt!" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vname #: ../fdroidserver/lint.py #, python-brace-format msgid "Unknown file '{filename}' in build '{versionName}'" msgstr "" #: ../fdroidserver/metadata.py #, python-format msgid "Unknown metadata format: %s" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Unknown metadata format: {path}" msgstr "" #: ../fdroidserver/common.py msgid "Unknown version of aapt, might cause problems: " msgstr "" #: ../fdroidserver/lint.py msgid "Unlinkified link - use [http://foo.bar Link title] or [http://foo.bar]" msgstr "" #: ../fdroidserver/lint.py msgid "Unnecessary leading space" msgstr "Unødvendig innledende mellomrom" #: ../fdroidserver/lint.py msgid "Unnecessary trailing space" msgstr "Unødvendig etterfølgende mellomrom" #: ../fdroidserver/metadata.py msgid "Unrecognised app field: " msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Unrecognised field '{field}' in {linedesc}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Unsupported file type \"{extension}\" for repo graphic" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "Unsupported graphics file found: {path}" msgstr "" #: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Unsupported metadata format, use: --to [{supported}]" msgstr "" #: ../fdroidserver/metadata.py msgid "Unterminated ]" msgstr "" #: ../fdroidserver/metadata.py msgid "Unterminated ]]" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Unterminated build in {name}" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "Unterminated continuation in {name}" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Unused extlib at %s" msgstr "" #: ../fdroidserver/lint.py #, python-format msgid "Unused file at %s" msgstr "" #: ../fdroidserver/lint.py msgid "Update Check Name is set to the known app id - it can be removed" msgstr "" #: ../fdroid msgid "Update repo information for new packages" msgstr "" #: ../fdroid msgid "Update the binary transparency log for a URL" msgstr "" #: ../fdroid msgid "Update the stats of the repo" msgstr "Oppdater pakkebrønnens status" #: ../fdroidserver/update.py ../fdroidserver/build.py msgid "Update the wiki" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "Usage" msgstr "Bruk" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "Usage: %s\n" msgstr "Bruk: %s\n" #: ../fdroidserver/lint.py msgid "Use /HEAD instead of /master to point at a file in the default branch" msgstr "" #: ../fdroidserver/update.py msgid "Use `fdroid update -c` to create it." msgstr "" #: ../fdroidserver/build.py msgid "Use build server" msgstr "" #: ../fdroidserver/update.py msgid "Use date from APK instead of current time for newly added APKs" msgstr "" msgid "Use date from apk instead of current time for newly added apks" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Using \"{path}\" for configuring s3cmd." msgstr "" #: ../fdroidserver/common.py msgid "Using Java's jarsigner, not recommended for verifying APKs! Use apksigner" msgstr "" #: ../fdroidserver/init.py #, python-brace-format msgid "Using existing keystore \"{path}\"" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "Using s3cmd to sync with: {url}" msgstr "" #: ../fdroid msgid "Valid commands are:" msgstr "Gyldige kommandoer er:" #: ../fdroid msgid "Verify the integrity of downloaded packages" msgstr "Bekreft integriteten til nedlastede pakker" #: ../fdroidserver/index.py msgid "Verifying index signature:" msgstr "" #: ../fdroid msgid "Warn about possible metadata errors" msgstr "Advar om mulige metadata-feil" #: ../fdroidserver/update.py msgid "When configured for signed indexes, create only unsigned indexes at this stage" msgstr "" msgid "X.509 'Distiguished Name' used when generating keys" msgstr "" #: ../fdroidserver/init.py msgid "X.509 'Distinguished Name' used when generating keys" msgstr "" #: ../fdroidserver/common.py msgid "You can use ANDROID_HOME to set the path to your SDK, i.e.:" msgstr "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "adding IdentityFile to {path}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "adding to {name}: {path}" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "ambiguous option: %(option)s could match %(matches)s" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "ambiguous option: %s (%s?)" msgstr "" #: ../fdroidserver/lint.py ../fdroidserver/rewritemeta.py msgid "applicationId in the form APPID" msgstr "" #: ../fdroidserver/checkupdates.py msgid "applicationId to check for updates" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode #: ../fdroidserver/verify.py ../fdroidserver/publish.py #: ../fdroidserver/dscanner.py ../fdroidserver/build.py #: ../fdroidserver/scanner.py ../fdroidserver/install.py msgid "applicationId with optional versionCode in the form APPID[:VERCODE]" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "argument \"-\" with mode %r" msgstr "" #: ../fdroidserver/nightly.py msgid "attempting bare ssh connection to test deploy key:" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "can't open '%s': %s" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "cannot have multiple subparser arguments" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "cannot merge actions - two groups are named %r" msgstr "" #: ../fdroidserver/nightly.py msgid "cannot publish update, did you set the deploy key?" msgstr "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "cloning {url}" msgstr "" #: ../fdroidserver/server.py msgid "command to execute, either 'init' or 'update'" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "complex" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "conflicting option string: %s" msgid_plural "conflicting option strings: %s" msgstr[0] "" msgstr[1] "" #: ../fdroidserver/nightly.py #, fuzzy, python-brace-format msgid "copying {apkfilename} into {path}" msgstr "Behandler {apkfilename}" #: ../fdroidserver/nightly.py #, python-brace-format msgid "created {path}" msgstr "" #: ../fdroidserver/update.py #, fuzzy, python-brace-format msgid "deleting: repo/{apkfilename}" msgstr "Behandler {apkfilename}" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "dest= is required for options like %r" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "expected %s argument" msgid_plural "expected %s arguments" msgstr[0] "" msgstr[1] "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "expected at least one argument" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "expected at most one argument" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "expected one argument" msgstr "" #: ../fdroid msgid "fdroid [-h|--help|--version] []" msgstr "" #: ../fdroid #, fuzzy msgid "fdroid [] [-h|--help|--version|]" msgstr "bruk: fdroid [-h|--help|--version] []" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "floating-point" msgstr "" #: ../fdroidserver/metadata.py msgid "force errors to be warnings, or ignore" msgstr "tving feil til å bli advarsler, eller ignorer" #: ../fdroidserver/metadata.py #, fuzzy msgid "force metadata errors (default) to be warnings, or to be ignored." msgstr "tving feil til å bli advarsler, eller ignorer" #: ../fdroidserver/common.py msgid "git svn clone failed" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "ignored explicit argument %r" msgstr "" #: ../fdroidserver/index.py msgid "index-v1 must have a signature, use `fdroid signindex` to create it!" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "integer" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "invalid %(type)s value: %(value)r" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "invalid choice: %(value)r (choose from %(choices)s)" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "invalid conflict_resolution value: %r" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "invalid option string %(option)r: must start with a character %(prefix_chars)r" msgstr "" #: ../fdroidserver/server.py #, python-brace-format msgid "local_copy_dir does not end with \"fdroid\", perhaps you meant: \"{path}\"" msgstr "" #: ../fdroidserver/server.py msgid "local_copy_dir must be an absolute path!" msgstr "" #: ../fdroidserver/server.py msgid "local_copy_dir must be directory, not a file!" msgstr "" #: ../fdroidserver/index.py #, python-format msgid "mirror '%s' does not end with 'fdroid'!" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "mutually exclusive arguments must be optional" msgstr "" #: ../fdroidserver/mirror.py #, fuzzy, python-brace-format msgid "no \"icon\" in {appid}" msgstr "Behandler {appid}" #: ../fdroidserver/signatures.py msgid "no APK supplied" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "no such option: %s" msgstr "" #: ../fdroid msgid "no version info found!" msgstr "ingen versjonsinfo funnet!" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "not allowed with argument %s" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "one of the arguments %s is required" msgstr "" #: ../fdroidserver/index.py ../fdroidserver/common.py msgid "only accepts strings, lists, and tuples" msgstr "" #: ../fdroidserver/install.py #, python-format msgid "option %s: If you really want to install all the signed apps, use --all" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "option %s: invalid %s value: %r" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #, python-format msgid "option %s: invalid choice: %r (choose from %s)" msgstr "" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option -%s not recognized" msgstr "Kommandoen \"-%s\" gjenkjennes ikke" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option -%s requires argument" msgstr "valg -%s krever et argument" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option --%s must not have an argument" msgstr "" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option --%s not a unique prefix" msgstr "" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option --%s not recognized" msgstr "Kommandoen \"--%s\" gjenkjennes ikke" #: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py #, python-format msgid "option --%s requires argument" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "optional arguments" msgstr "valgfrie argumenter" #: ../fdroidserver/nightly.py #, python-brace-format msgid "overwriting existing {path}" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py msgid "positional arguments" msgstr "" #: ../fdroidserver/signatures.py #, python-brace-format msgid "refuse downloading via insecure HTTP connection (use HTTPS or specify --no-https-check): {apkfilename}" msgstr "" #: ../fdroidserver/signatures.py #, python-brace-format msgid "refuse downloading via insecure http connection (use https or specify --no-https-check): {apkfilename}" msgstr "" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "s3cmd sync indexes {path} to {url} and delete" msgstr "" #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py msgid "show program's version number and exit" msgstr "vis programmets versjonsnummer og avslutt" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.5/optparse.py #: /usr/lib/python3.6/argparse.py /usr/lib/python3.6/optparse.py msgid "show this help message and exit" msgstr "vis denne hjelpemeldingen og avslutt" #: ../fdroidserver/signatures.py msgid "signed APK, either a file-path or HTTPS URL." msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "skipping source tarball: {path}" msgstr "" #: ../fdroidserver/lint.py msgid "srclibs missing name and/or @" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "the following arguments are required: %s" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "unexpected option string: %s" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "unknown parser %(parser_name)r (choices: %(choices)s)" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #, python-format msgid "unrecognized arguments: %s" msgstr "" #: ../fdroidserver/common.py #, python-brace-format msgid "unsafe permissions on '{config_file}' (should be 0600)!" msgstr "" #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py ../fdroid msgid "usage: " msgstr "bruk: " #: ../fdroid msgid "usage: fdroid [-h|--help|--version] []" msgstr "bruk: fdroid [-h|--help|--version] []" #: ../fdroidserver/server.py ../fdroidserver/upload.py #, python-brace-format msgid "using Apache libcloud to sync with {url}" msgstr "" #: ../fdroidserver/publish.py #, python-brace-format msgid "{0} app, {1} key aliases" msgid_plural "{0} apps, {1} key aliases" msgstr[0] "" msgstr[1] "" #: ../fdroidserver/update.py #, python-brace-format msgid "{apkfilename} ({appid}) has no metadata!" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "{apkfilename} has multiple {name} files, looks like Master Key exploit!" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "{apkfilename}'s AndroidManifest.xml has a bad date: " msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "{appid} does not have a name! Using package name instead." msgstr "" #: ../fdroidserver/mirror.py #, python-brace-format msgid "{appid} is missing {name}" msgstr "" #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vname #: ../fdroidserver/lint.py #, python-brace-format msgid "{appid}: Unknown extlib {path} in build '{versionName}'" msgstr "" #: ../fdroidserver/scanner.py #, python-brace-format msgid "{appid}: no builds specified, running on current source state" msgstr "" #: ../fdroidserver/metadata.py #, python-brace-format msgid "{field} not terminated in {name}" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "{name} \"{path}\" does not exist! Correct it in config.py." msgstr "" #: ../fdroidserver/nightly.py #, python-brace-format msgid "{path} does not exist! Create it by running:" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "{path} has bad file signature \"{pattern}\", possible Janus exploit!" msgstr "" #: ../fdroidserver/update.py #, python-brace-format msgid "{path} is zero size!" msgstr "" #: ../fdroidserver/mirror.py #, python-brace-format msgid "{url} does not end with \"fdroid\", check the URL path!" msgstr "" #: ../fdroidserver/build.py msgid "{} build failed" msgid_plural "{} builds failed" msgstr[0] "" msgstr[1] "" #: ../fdroidserver/build.py msgid "{} build succeeded" msgid_plural "{} builds succeeded" msgstr[0] "" msgstr[1] "" #~ msgid "Add PGP signatures for packages in repo using GnuPG" #~ msgstr "Legg til PGP-signaturer for pakker i pakkebrønnen ved bruk av GnuPG" fdroidserver-1.0.9/MANIFEST.in0000664000175000017500000002065313323655167015704 0ustar hanshans00000000000000include buildserver/config.buildserver.py include buildserver/gradle include buildserver/provision-android-ndk include buildserver/provision-android-sdk include buildserver/provision-apt-get-install include buildserver/provision-apt-proxy include buildserver/provision-gradle include buildserver/provision-pip include buildserver/setup-env-vars include buildserver/Vagrantfile include completion/bash-completion include docker/Dockerfile include docker/drozer.py include docker/enable_service.py include docker/entrypoint.sh include docker/install_agent.py include docker/Makefile include docker/README.md include examples/config.py include examples/fdroid-icon.png include examples/makebuildserver.config.py include examples/opensc-fdroid.cfg include examples/public-read-only-s3-bucket-policy.json include examples/template.yml include fdroid include LICENSE include locale/bo/LC_MESSAGES/fdroidserver.mo include locale/de/LC_MESSAGES/fdroidserver.mo include locale/es_AR/LC_MESSAGES/fdroidserver.mo include locale/es/LC_MESSAGES/fdroidserver.mo include locale/fr/LC_MESSAGES/fdroidserver.mo include locale/nb_NO/LC_MESSAGES/fdroidserver.mo include locale/pt_BR/LC_MESSAGES/fdroidserver.mo include locale/tr/LC_MESSAGES/fdroidserver.mo include locale/uk/LC_MESSAGES/fdroidserver.mo include locale/zh_Hans/LC_MESSAGES/fdroidserver.mo include locale/zh_Hant/LC_MESSAGES/fdroidserver.mo include makebuildserver include README.rst include tests/androguard_test.py include tests/bad-unicode-*.apk include tests/build.TestCase include tests/common.TestCase include tests/complete-ci-tests include tests/config.py include tests/description-parsing.py include tests/dump_internal_metadata_format.py include tests/extra/convert_metadata_to_yaml_then_txt.sh include tests/extra/manual-vmtools-test.py include tests/getsig/getsig.java include tests/getsig/make.sh include tests/getsig/run.sh include tests/gnupghome/pubring.gpg include tests/gnupghome/random_seed include tests/gnupghome/secring.gpg include tests/gnupghome/trustdb.gpg include tests/import_proxy.py include tests/import.TestCase include tests/index.TestCase include tests/install.TestCase include tests/keystore.jks include tests/lint.TestCase include tests/metadata/apk/info.guardianproject.urzip.yaml include tests/metadata/apk/org.dyndns.fules.ck.yaml include tests/metadata/app.with.special.build.params.txt include tests/metadata/com.politedroid.txt include tests/metadata/dump/com.politedroid.yaml include tests/metadata/dump/org.adaway.yaml include tests/metadata/dump/org.smssecure.smssecure.yaml include tests/metadata/dump/org.videolan.vlc.yaml include tests/metadata/fake.ota.update.txt include tests/metadata/info.guardianproject.checkey/en-US/description.txt include tests/metadata/info.guardianproject.checkey/en-US/phoneScreenshots/checkey-phone.png include tests/metadata/info.guardianproject.checkey/en-US/phoneScreenshots/checkey.png include tests/metadata/info.guardianproject.checkey/en-US/summary.txt include tests/metadata/info.guardianproject.checkey.txt include tests/metadata/info.guardianproject.urzip/en-US/changelogs/100.txt include tests/metadata/info.guardianproject.urzip/en-US/full_description.txt include tests/metadata/info.guardianproject.urzip/en-US/images/featureGraphic.png include tests/metadata/info.guardianproject.urzip/en-US/images/icon.png include tests/metadata/info.guardianproject.urzip/en-US/short_description.txt include tests/metadata/info.guardianproject.urzip/en-US/title.txt include tests/metadata/info.guardianproject.urzip/en-US/video.txt include tests/metadata/info.guardianproject.urzip.yml include tests/metadata/obb.main.oldversion.txt include tests/metadata/obb.mainpatch.current.txt include tests/metadata/obb.main.twoversions.txt include tests/metadata/org.adaway.json include tests/metadata/org.fdroid.ci.test.app.txt include tests/metadata/org.fdroid.fdroid.txt include tests/metadata/org.smssecure.smssecure.txt include tests/metadata/org.videolan.vlc.yml include tests/metadata/raw.template.txt include tests/metadata-rewrite-yml/app.with.special.build.params.yml include tests/metadata-rewrite-yml/fake.ota.update.yml include tests/metadata-rewrite-yml/org.fdroid.fdroid.yml include tests/metadata.TestCase include tests/openssl-version-check-test.py include tests/org.bitbucket.tickytacky.mirrormirror_1.apk include tests/org.bitbucket.tickytacky.mirrormirror_2.apk include tests/org.bitbucket.tickytacky.mirrormirror_3.apk include tests/org.bitbucket.tickytacky.mirrormirror_4.apk include tests/org.dyndns.fules.ck_20.apk include tests/repo/categories.txt include tests/repo/com.politedroid_3.apk include tests/repo/com.politedroid_4.apk include tests/repo/com.politedroid_5.apk include tests/repo/com.politedroid_6.apk include tests/repo/fake.ota.update_1234.zip include tests/repo/index.xml include tests/repo/main.1101613.obb.main.twoversions.obb include tests/repo/main.1101615.obb.main.twoversions.obb include tests/repo/main.1434483388.obb.main.oldversion.obb include tests/repo/main.1619.obb.mainpatch.current.obb include tests/repo/obb.main.oldversion_1444412523.apk include tests/repo/obb.mainpatch.current_1619_another-release-key.apk include tests/repo/obb.mainpatch.current_1619.apk include tests/repo/obb.mainpatch.current/en-US/featureGraphic.png include tests/repo/obb.mainpatch.current/en-US/icon.png include tests/repo/obb.mainpatch.current/en-US/phoneScreenshots/screenshot-main.png include tests/repo/obb.mainpatch.current/en-US/sevenInchScreenshots/screenshot-tablet-main.png include tests/repo/obb.main.twoversions_1101613.apk include tests/repo/obb.main.twoversions_1101615.apk include tests/repo/obb.main.twoversions_1101617.apk include tests/repo/obb.main.twoversions_1101617_src.tar.gz include tests/repo/org.videolan.vlc/en-US/icon.png include tests/repo/org.videolan.vlc/en-US/phoneScreenshots/screenshot10.png include tests/repo/org.videolan.vlc/en-US/phoneScreenshots/screenshot12.png include tests/repo/org.videolan.vlc/en-US/phoneScreenshots/screenshot15.png include tests/repo/org.videolan.vlc/en-US/phoneScreenshots/screenshot18.png include tests/repo/org.videolan.vlc/en-US/phoneScreenshots/screenshot20.png include tests/repo/org.videolan.vlc/en-US/phoneScreenshots/screenshot22.png include tests/repo/org.videolan.vlc/en-US/phoneScreenshots/screenshot4.png include tests/repo/org.videolan.vlc/en-US/phoneScreenshots/screenshot7.png include tests/repo/org.videolan.vlc/en-US/phoneScreenshots/screenshot9.png include tests/repo/org.videolan.vlc/en-US/sevenInchScreenshots/screenshot0.png include tests/repo/org.videolan.vlc/en-US/sevenInchScreenshots/screenshot11.png include tests/repo/org.videolan.vlc/en-US/sevenInchScreenshots/screenshot13.png include tests/repo/org.videolan.vlc/en-US/sevenInchScreenshots/screenshot14.png include tests/repo/org.videolan.vlc/en-US/sevenInchScreenshots/screenshot16.png include tests/repo/org.videolan.vlc/en-US/sevenInchScreenshots/screenshot17.png include tests/repo/org.videolan.vlc/en-US/sevenInchScreenshots/screenshot19.png include tests/repo/org.videolan.vlc/en-US/sevenInchScreenshots/screenshot1.png include tests/repo/org.videolan.vlc/en-US/sevenInchScreenshots/screenshot21.png include tests/repo/org.videolan.vlc/en-US/sevenInchScreenshots/screenshot23.png include tests/repo/org.videolan.vlc/en-US/sevenInchScreenshots/screenshot2.png include tests/repo/org.videolan.vlc/en-US/sevenInchScreenshots/screenshot3.png include tests/repo/org.videolan.vlc/en-US/sevenInchScreenshots/screenshot5.png include tests/repo/org.videolan.vlc/en-US/sevenInchScreenshots/screenshot6.png include tests/repo/org.videolan.vlc/en-US/sevenInchScreenshots/screenshot8.png include tests/repo/patch.1619.obb.mainpatch.current.obb include tests/repo/urzip-*.apk include tests/run-tests include tests/signatures.TestCase include tests/signindex/guardianproject.jar include tests/signindex/guardianproject-v1.jar include tests/signindex/testy.jar include tests/signindex/unsigned.jar include tests/source-files/fdroid/fdroidclient/AndroidManifest.xml include tests/source-files/fdroid/fdroidclient/build.gradle include tests/source-files/open-keychain/open-keychain/build.gradle include tests/source-files/open-keychain/open-keychain/OpenKeychain/build.gradle include tests/source-files/osmandapp/osmand/build.gradle include tests/source-files/Zillode/syncthing-silk/build.gradle include tests/stats/known_apks.txt include tests/testcommon.py include tests/update.TestCase include tests/urzip.apk include tests/urzip-badcert.apk include tests/urzip-badsig.apk include tests/urzip-release.apk include tests/urzip-release-unsigned.apk fdroidserver-1.0.9/jenkins-build-all0000775000175000017500000000601613303240575017364 0ustar hanshans00000000000000#!/bin/bash # # this is the script run by the Jenkins server to run the build tests. Be # sure to always run it in its dir, i.e. ./jenkins-build, otherwise it might # remove things that you don't want it to. # # runs here: # https://jenkins.debian.net/job/reproducible_fdroid_build_apps if [ `dirname $0` != "." ]; then echo "only run this script like ./`basename $0`" exit fi # jenkins.debian.net slaves do not export WORKSPACE if [ -z $WORKSPACE ]; then export WORKSPACE=`pwd` fi set -e set -x # report info about virtualization (dmesg | grep -i -e hypervisor -e qemu -e kvm) || true (lspci | grep -i -e virtio -e virtualbox -e qemu -e kvm) || true lsmod if systemd-detect-virt -q ; then echo "Virtualization is used:" `systemd-detect-virt` else echo "No virtualization is used." fi sudo /bin/chmod -R a+rX /var/lib/libvirt/images echo 'maximum allowed number of open file descriptors: ' `ulimit -n` ls -ld /var/lib/libvirt/images ls -l /var/lib/libvirt/images || echo no access ls -lR ~/.vagrant.d/ || echo no access virsh --connect qemu:///system list --all || echo cannot virsh list cat /etc/issue /sbin/ifconfig || true hostname || true # point to the Vagrant/VirtualBox configs created by reproducible_setup_fdroid_build_environment.sh # these variables are actually set in fdroidserver/jenkins-build-makebuildserver export SETUP_WORKSPACE=$(dirname $WORKSPACE)/reproducible_setup_fdroid_build_environment export XDG_CONFIG_HOME=$SETUP_WORKSPACE export VBOX_USER_HOME=$SETUP_WORKSPACE/VirtualBox export VAGRANT_HOME=$SETUP_WORKSPACE/vagrant.d # make sure we have the right buildserver paths and its ready for use vagrant global-status \ | grep -F -e reproducible_setup_fdroid_build_environment -o -e fdroiddata/builder # the way we handle jenkins slaves doesn't copy the workspace to the slaves # so we need to "manually" clone the git repo here… cd $WORKSPACE # set up Android SDK to use the Debian packages in stretch export ANDROID_HOME=/usr/lib/android-sdk # now build the whole archive cd $WORKSPACE # this can be handled in the jenkins job, or here: if [ -e fdroiddata ]; then cd fdroiddata while ! git fetch origin --tags --prune; do sleep 10; done git checkout master git reset --hard origin/master # keep all the cloned source repos git clean -fdx --exclude build --exclude repo --exclude unsigned else git clone https://gitlab.com/fdroid/fdroiddata.git fdroiddata cd fdroiddata fi echo "build_server_always = True" > config.py # if the local mediawiki is available, then use it if nc -z -w1 localhost 32445; then wikiflag="--wiki" echo "wiki_protocol = 'http'" >> config.py echo "wiki_server = 'localhost:32445'" >> config.py echo "wiki_path = '/mediawiki/'" >> config.py echo "wiki_user = 'fdroid'" >> config.py echo "wiki_password = 'update.TestCase'" >> config.py else sed -i '/^wiki_/d' config.py fi $WORKSPACE/fdroid build --verbose --latest --no-tarball --all $wikiflag vagrant global-status if [ -d builder ]; then cd builder vagrant status fi fdroidserver-1.0.9/buildserver/0000775000175000017500000000000013324115531016451 5ustar hanshans00000000000000fdroidserver-1.0.9/buildserver/provision-apt-get-install0000664000175000017500000000456613303240575023446 0ustar hanshans00000000000000#!/bin/bash echo $0 set -e set -x debian_mirror=$1 printf 'APT::Install-Recommends "0";\nAPT::Install-Suggests "0";\n' \ > /etc/apt/apt.conf.d/99no-install-recommends printf 'APT::Acquire::Retries "20";\n' \ > /etc/apt/apt.conf.d/99acquire-retries printf 'APT::Periodic::Update-Package-Lists "0";\nAPT::Periodic::Unattended-Upgrade "0";\n' \ > /etc/apt/apt.conf.d/99no-auto-updates if echo $debian_mirror | grep '^https' 2>&1 > /dev/null; then apt-get -y update apt-get -y install apt-transport-https fi sed -i "s,http://ftp.uk.debian.org/debian/,${debian_mirror},g" /etc/apt/sources.list if grep --quiet jessie /etc/apt/sources.list; then echo "deb $debian_mirror jessie-backports main" > /etc/apt/sources.list.d/backports.list echo "deb $debian_mirror testing main" > /etc/apt/sources.list.d/testing.list printf "Package: *\nPin: release o=Debian,a=testing\nPin-Priority: -300\n" > /etc/apt/preferences.d/debian-testing fi dpkg --add-architecture i386 apt-get -y update apt-get -y upgrade --download-only apt-get -y upgrade packages=" ant asn1c ant-contrib autoconf autoconf2.13 automake/testing automake1.11 autopoint bison bzr ca-certificates-java/jessie-backports cmake/jessie-backports curl expect faketime flex gettext/jessie-backports gettext-base/jessie-backports git-core/jessie-backports git-svn/jessie-backports gperf graphviz imagemagick inkscape javacc libarchive-zip-perl libexpat1-dev libgcc1:i386 libglib2.0-dev liblwp-protocol-https-perl liblzma-dev libncurses5:i386 librsvg2-bin libsaxonb-java libssl-dev libstdc++6:i386 libtool/testing libtool-bin/testing make maven mercurial/jessie-backports nasm nodejs openjdk-8-jre-headless openjdk-8-jdk-headless optipng p7zip pandoc perlmagick pkg-config python-gnupg python-lxml python-magic python-setuptools python3-git/jessie-backports python3-gitdb/jessie-backports python3-gnupg python3-pyasn1 python3-pyasn1-modules python3-requests python3-smmap/jessie-backports python3-yaml python3-ruamel.yaml quilt realpath rsync scons sqlite3 subversion swig texinfo transfig unzip vorbis-tools xsltproc yasm zip zlib1g:i386 " apt-get install --yes $packages --download-only apt-get install --yes $packages highestjava=`update-java-alternatives --list | sort -n | tail -1 | cut -d ' ' -f 1` update-java-alternatives --set $highestjava fdroidserver-1.0.9/buildserver/setup-env-vars0000664000175000017500000000075013243530567021307 0ustar hanshans00000000000000#!/bin/sh # # sets up the environment vars needed by the build process set -e set -x bsenv=/etc/profile.d/bsenv.sh echo "# generated on "`date` > $bsenv echo export ANDROID_HOME=$1 >> $bsenv echo 'export PATH=$PATH:${ANDROID_HOME}/tools:${ANDROID_HOME}/platform-tools:/opt/gradle/bin' >> $bsenv chmod 0644 $bsenv # make sure that SSH never hangs at a password or key prompt printf ' StrictHostKeyChecking yes' >> /etc/ssh/ssh_config printf ' BatchMode yes' >> /etc/ssh/config fdroidserver-1.0.9/buildserver/provision-pip0000664000175000017500000000035613243530567021230 0ustar hanshans00000000000000#!/bin/bash echo $0 set -e set -x # cache pypi downloads if [ -z $PIP_DOWNLOAD_CACHE ]; then export PIP_DOWNLOAD_CACHE=$HOME/.pip_download_cache fi apt-get install --yes --no-install-recommends python-pip pip install --upgrade $@ fdroidserver-1.0.9/buildserver/gradle0000775000175000017500000000514313323655167017655 0ustar hanshans00000000000000#!/bin/bash bindir="$(dirname $0)" basedir="$(dirname $bindir)" verdir="${basedir}/versions" args=("$@") run_gradle() { "${verdir}/${v_found}/bin/gradle" "${args[@]}" exit $? } contains() { local e for e in $2; do [[ $e == $1 ]] && return 0; done return 1 } # key-value pairs of what gradle version (value) each gradle plugin version # (key) should accept. plugin versions are actually prefixes and catch sub- # versions as well. Pairs are taken from: # https://developer.android.com/studio/releases/gradle-plugin.html#updating-gradle d_plugin_k=(3.1 3.0 2.3 2.2 2.1.3 2.1 2.0 1.5 1.3 1.2 1.1 1.0 0.14 0.13 0.12 0.11 0.10 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2) d_plugin_v=(4.4 4.1 3.3 2.14.1 2.14.1 2.12 2.12 2.4 2.4 2.3 2.2.1 2.2.1 2.1 2.1 1.12 1.12 1.12 1.11 1.10 1.9 1.8 1.6 1.6 1.4 1.4) # All gradle versions we know about plugin_v=(4.7 4.6 4.5.1 4.5 4.4.1 4.4 4.3.1 4.3 4.2.1 4.2 4.1 4.0.2 4.0.1 4.0 3.5.1 3.5 3.4.1 3.4 3.3 3.2.1 3.2 3.1 3.0 2.14.1 2.14 2.13 2.12 2.11 2.10 2.9 2.8 2.7 2.6 2.5 2.4 2.3 2.2.1 2.2 2.1 1.12 1.11 1.10 1.9 1.8 1.7 1.6 1.4) v_all=${plugin_v[@]} echo "Available gradle versions: ${v_all[@]}" # Earliest takes priority for f in {.,..}/gradle/wrapper/gradle-wrapper.properties; do [[ -f $f ]] || continue while read l; do if [[ $l == 'distributionUrl='* ]]; then wrapper_ver=$(echo -n "$l" | sed "s/.*gradle-\\([0-9\\.\\+]\\+\\).*/\\1/") fi done < $f done if [[ -n $wrapper_ver ]]; then v_found=$wrapper_ver echo "Found $v_found via distributionUrl" run_gradle fi # Earliest takes priority for f in {.,..}/build.gradle; do [[ -f $f ]] || continue while read l; do if [[ -z "$plugin_pver" && $l == *'com.android.tools.build:gradle:'* ]]; then plugin_pver=$(echo -n "$l" | sed "s/.*com.android.tools.build:gradle:\\([0-9\\.\\+]\\+\\).*/\\1/") elif [[ -z "$wrapper_ver" && $l == *'gradleVersion = '* ]]; then wrapper_ver=$(echo -n "$l" | sed "s/.*gradleVersion *=* *[\"']\\([0-9\\.]\\+\\)[\"'].*/\\1/") fi done < $f done if [[ -n $wrapper_ver ]]; then v_found=$wrapper_ver echo "Found $v_found via gradleVersion" run_gradle fi if [[ -n $plugin_pver ]]; then i=0 match=false for k in ${d_plugin_k[@]}; do if [[ $plugin_pver == ${k}* ]]; then plugin_ver=${d_plugin_v[$i]} match=true break fi let i++ done if $match; then v_found=$plugin_ver echo "Found $v_found via gradle plugin version $k" fi fi # Find the highest version available for v in ${plugin_v[*]}; do if contains $v "${v_all[*]}"; then v_def=$v break fi done if [[ -z $v_found ]]; then echo "No suitable gradle version found - defaulting to $v_def" v_found=$v_def fi run_gradle fdroidserver-1.0.9/buildserver/provision-gradle0000664000175000017500000000103113323655167021670 0ustar hanshans00000000000000#!/bin/bash set -e test -e /opt/gradle/versions || mkdir -p /opt/gradle/versions cd /opt/gradle/versions for f in /vagrant/cache/gradle-*.zip; do ver=`echo $f | sed 's,.*gradle-\([0-9][0-9.]*\).*\.zip,\1,'` if [ ! -d /opt/gradle/versions/${ver} ]; then unzip -qq $f mv gradle-${ver} /opt/gradle/versions/${ver} fi done chmod -R a+rX /opt/gradle test -e /opt/gradle/bin || mkdir -p /opt/gradle/bin touch /opt/gradle/bin/gradle chown vagrant.vagrant /opt/gradle/bin/gradle chmod 0755 /opt/gradle/bin/gradle fdroidserver-1.0.9/buildserver/.gitignore0000664000175000017500000000005013243530567020446 0ustar hanshans00000000000000.vagrant up.log cache/ Vagrantfile.yaml fdroidserver-1.0.9/buildserver/provision-android-ndk0000664000175000017500000000105613323655167022633 0ustar hanshans00000000000000#!/bin/bash # echo $0 set -e NDK_BASE=$1 test -e $NDK_BASE || mkdir -p $NDK_BASE cd $NDK_BASE if [ ! -e $NDK_BASE/r10e ]; then 7zr x /vagrant/cache/android-ndk-r10e-linux-x86_64.bin > /dev/null mv android-ndk-r10e r10e fi for version in r11c r12b r13b r14b r15c r16b; do if [ ! -e ${NDK_BASE}/${version} ]; then unzip /vagrant/cache/android-ndk-${version}-linux-x86_64.zip > /dev/null mv android-ndk-${version} ${version} fi done chmod -R a+rX $NDK_BASE/ find $NDK_BASE/ -type f -executable -print0 | xargs -0 chmod a+x fdroidserver-1.0.9/buildserver/provision-apt-proxy0000664000175000017500000000043013243530567022374 0ustar hanshans00000000000000#!/bin/bash echo $0 set -e rm -f /etc/apt/apt.conf.d/02proxy echo "Acquire::ftp::Proxy \"$1\";" >> /etc/apt/apt.conf.d/02proxy echo "Acquire::http::Proxy \"$1\";" >> /etc/apt/apt.conf.d/02proxy echo "Acquire::https::Proxy \"$1\";" >> /etc/apt/apt.conf.d/02proxy apt-get update fdroidserver-1.0.9/buildserver/config.buildserver.py0000664000175000017500000000067013323655167022635 0ustar hanshans00000000000000sdk_path = "/home/vagrant/android-sdk" ndk_paths = { 'r10e': "/home/vagrant/android-ndk/r10e", 'r11c': "/home/vagrant/android-ndk/r11c", 'r12b': "/home/vagrant/android-ndk/r12b", 'r13b': "/home/vagrant/android-ndk/r13b", 'r14b': "/home/vagrant/android-ndk/r14b", 'r15c': "/home/vagrant/android-ndk/r15c", 'r16b': "/home/vagrant/android-ndk/r16b", } java_paths = { '8': "/usr/lib/jvm/java-8-openjdk-amd64", } fdroidserver-1.0.9/buildserver/Vagrantfile0000664000175000017500000000601013323655167020650 0ustar hanshans00000000000000 require 'yaml' require 'pathname' srvpath = Pathname.new(File.dirname(__FILE__)).realpath configfile = YAML.load_file(File.join(srvpath, "/Vagrantfile.yaml")) Vagrant.configure("2") do |config| # these two caching methods conflict, so only use one at a time if Vagrant.has_plugin?("vagrant-cachier") and not configfile.has_key? "aptcachedir" config.cache.scope = :box config.cache.auto_detect = false config.cache.enable :apt config.cache.enable :chef end config.vm.box = configfile['basebox'] config.vm.box_url = configfile['baseboxurl'] if not configfile.has_key? "vm_provider" or configfile["vm_provider"] == "virtualbox" # default to VirtualBox if not set config.vm.provider "virtualbox" do |v| v.customize ["modifyvm", :id, "--memory", configfile['memory']] v.customize ["modifyvm", :id, "--cpus", configfile['cpus']] v.customize ["modifyvm", :id, "--hwvirtex", configfile['hwvirtex']] end synced_folder_type = 'virtualbox' elsif configfile["vm_provider"] == "libvirt" # use KVM/QEMU if this is running in KVM/QEMU config.vm.provider :libvirt do |libvirt| libvirt.driver = configfile["hwvirtex"] == "on" ? "kvm" : "qemu" libvirt.host = "localhost" libvirt.uri = "qemu:///system" libvirt.cpus = configfile["cpus"] libvirt.memory = configfile["memory"] end config.vm.synced_folder './', '/vagrant', type: '9p' synced_folder_type = '9p' else abort("No supported VM Provider found, set vm_provider in Vagrantfile.yaml!") end config.vm.boot_timeout = configfile['boot_timeout'] if configfile.has_key? "aptproxy" config.vm.provision :shell, path: "provision-apt-proxy", args: [configfile["aptproxy"]] end # buildserver/ is shared to the VM's /vagrant by default so the old # default does not need a custom mount if configfile["cachedir"] != "buildserver/cache" config.vm.synced_folder configfile["cachedir"], '/vagrant/cache', create: true, type: synced_folder_type end # Make sure dir exists to mount to, since buildserver/ is # automatically mounted as /vagrant in the guest VM. This is more # necessary with 9p synced folders Dir.mkdir('cache') unless File.exists?('cache') # cache .deb packages on the host via a mount trick if configfile.has_key? "aptcachedir" config.vm.synced_folder configfile["aptcachedir"], "/var/cache/apt/archives", owner: 'root', group: 'root', create: true end config.vm.provision "shell", path: "setup-env-vars", args: ["/home/vagrant/android-sdk"] config.vm.provision "shell", path: "provision-apt-get-install", args: [configfile['debian_mirror']] config.vm.provision "shell", path: "provision-android-sdk" config.vm.provision "shell", path: "provision-android-ndk", args: ["/home/vagrant/android-ndk"] config.vm.provision "shell", path: "provision-pip", args: ["compare-locales"] config.vm.provision "shell", path: "provision-gradle" config.vm.provision "file", source: "gradle", destination: "/opt/gradle/bin/gradle" end fdroidserver-1.0.9/buildserver/provision-android-sdk0000664000175000017500000000744713243530567022647 0ustar hanshans00000000000000#!/bin/bash # echo $0 set -e set -x if [ -z $ANDROID_HOME ]; then echo "ANDROID_HOME env var must be set!" exit 1 fi # TODO remove the rm, this should work with an existing ANDROID_HOME if [ ! -x $ANDROID_HOME/tools/android ]; then rm -rf $ANDROID_HOME mkdir ${ANDROID_HOME} mkdir ${ANDROID_HOME}/temp mkdir ${ANDROID_HOME}/platforms mkdir ${ANDROID_HOME}/build-tools cd $ANDROID_HOME tools=`ls -1 /vagrant/cache/tools_*.zip | sort -n | tail -1` unzip -qq $tools fi # disable the repositories of proprietary stuff disabled=" @version@=1 @disabled@https\://dl.google.com/android/repository/extras/intel/addon.xml=disabled @disabled@https\://dl.google.com/android/repository/glass/addon.xml=disabled @disabled@https\://dl.google.com/android/repository/sys-img/android/sys-img.xml=disabled @disabled@https\://dl.google.com/android/repository/sys-img/android-tv/sys-img.xml=disabled @disabled@https\://dl.google.com/android/repository/sys-img/android-wear/sys-img.xml=disabled @disabled@https\://dl.google.com/android/repository/sys-img/google_apis/sys-img.xml=disabled " test -d ${HOME}/.android || mkdir ${HOME}/.android # there are currently zero user repos echo 'count=0' > ${HOME}/.android/repositories.cfg for line in $disabled; do echo $line >> ${HOME}/.android/sites-settings.cfg done cd /vagrant/cache # make links for `android update sdk` to use and delete latestm2=`ls -1 android_m2repository*.zip | sort -n | tail -1` for f in $latestm2 android-[0-9]*.zip platform-[0-9]*.zip build-tools_r*-linux.zip; do rm -f ${ANDROID_HOME}/temp/$f ln -s /vagrant/cache/$f ${ANDROID_HOME}/temp/ done # install all cached platforms cached="" for f in `ls -1 android-[0-9]*.zip platform-[0-9]*.zip`; do sdk=`unzip -c $f "*/build.prop" | sed -n 's,^ro.build.version.sdk=,,p'` cached=,android-${sdk}${cached} done # install all cached build-tools for f in `ls -1 build-tools*.zip`; do ver=`unzip -c $f "*/source.properties" | sed -n 's,^Pkg.Revision=,,p'` if [[ $ver == 24.0.0 ]] && [[ $f =~ .*r24\.0\.1.* ]]; then # 24.0.1 has the wrong revision in the zip ver=24.0.1 fi cached=,build-tools-${ver}${cached} done ${ANDROID_HOME}/tools/android update sdk --no-ui --all \ --filter platform-tools,extra-android-m2repository${cached} < $ANDROID_HOME/licenses/android-sdk-license 8933bad161af4178b1185d1a37fbf41ea5269c55 d56f5187479451eabf01fb78af6dfcb131a6481e EOF cat < $ANDROID_HOME/licenses/android-sdk-preview-license 84831b9409646a918e30573bab4c9c91346d8abd EOF cat < $ANDROID_HOME/licenses/android-sdk-preview-license-old 79120722343a6f314e0719f863036c702b0e6b2a 84831b9409646a918e30573bab4c9c91346d8abd EOF echo y | $ANDROID_HOME/tools/bin/sdkmanager "extras;m2repository;com;android;support;constraint;constraint-layout;1.0.1" echo y | $ANDROID_HOME/tools/bin/sdkmanager "extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.1" echo y | $ANDROID_HOME/tools/bin/sdkmanager "extras;m2repository;com;android;support;constraint;constraint-layout;1.0.2" echo y | $ANDROID_HOME/tools/bin/sdkmanager "extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.2" chmod -R a+rX $ANDROID_HOME/ chgrp vagrant $ANDROID_HOME chmod g+w $ANDROID_HOME find $ANDROID_HOME/ -type f -executable -print0 | xargs -0 chmod a+x # allow gradle to install newer build-tools and platforms chgrp vagrant $ANDROID_HOME/{build-tools,platforms} chmod g+w $ANDROID_HOME/{build-tools,platforms} # allow gradle/sdkmanager to install into the new m2repository test -d $ANDROID_HOME/extras/m2repository || mkdir -p $ANDROID_HOME/extras/m2repository find $ANDROID_HOME/extras/m2repository -type d | xargs chgrp vagrant find $ANDROID_HOME/extras/m2repository -type d | xargs chmod g+w fdroidserver-1.0.9/.gitignore0000664000175000017500000000220513323655167016127 0ustar hanshans00000000000000/config.py /makebs.config.py *~ *.pyc *.class *.box TAGS # files generated by build build/ dist/ env/ fdroidserver.egg-info/ pylint.parseable /.testfiles/ README.rst # files generated by tests tmp/ /tests/repo/icons* /tests/repo/latestapps.dat # files used in manual testing /config.py /tmp/ /logs/ /metadata/ makebuildserver.config.py /tests/.fdroid.keypass.txt /tests/.fdroid.keystorepass.txt /tests/.java.security /tests/fdroid-icon.png /tests/OBBMainOldVersion.apk /tests/OBBMainPatchCurrent.apk /tests/OBBMainTwoVersions.apk /tests/archive/categories.txt /tests/archive/icons* /tests/archive/index.jar /tests/archive/index_unsigned.jar /tests/archive/index.xml /tests/archive/index-v1.jar /tests/archive/index-v1.json /tests/repo/index.jar /tests/repo/index_unsigned.jar /tests/repo/index-v1.jar /tests/repo/info.guardianproject.urzip/ /tests/repo/info.guardianproject.checkey/en-US/phoneScreenshots/checkey-phone.png /tests/repo/info.guardianproject.checkey/en-US/phoneScreenshots/checkey.png /tests/urzip-πÇÇπÇÇ现代汉语通用字-български-عربي1234.apk /unsigned/ # generated by gettext locale/*/LC_MESSAGES/fdroidserver.mo fdroidserver-1.0.9/tests/0000775000175000017500000000000013324115531015265 5ustar hanshans00000000000000fdroidserver-1.0.9/tests/urzip-release-unsigned.apk0000664000175000017500000002042713323343071022371 0ustar hanshans00000000000000PK/EAndroidManifest.xmlKo[UNbHqrc'~\ǏѴ@*iEҰp:džU5kKuP5 ?ss=gwf{sDũ&*Sv#; t Qաcg/T݀ЗЏ?D( }5o("jA'/Sw(2D ݅c 4!\R5ۂ[*^cȱ Ft^Ѡ7)kwUWA}M>TOsI֐j+?DS>g t[ZgglgTC̾t%v.9RV*{݃&}9ޣ RUDa))k*S 5VUs h:xlU#%J K#!);΁k >K^bgv]vOyW]ki׶yx,3¥C_>ۈڢ눋C(#t*AGnci\G &]U>uӸ;6-vb߆T|F0їsf̌qazN4#f|Gs}G$߈& 'Lq9Cr BI(-CYbs~=z75;*C7$}d9Dbs?(xAՉk΋-b57!yTgǤhylJ,^cu7uSFP[cCo;n ([c0Ѝ?"܏zcTcϺ󉋏K¾njx57'9gy IMm^r֜6탷 7m|b^GKh<3;r- oIl|$Ŗ֘7X}>7)%oi-uߺoYx/i-w*"gy<^XxxE5^+Wxe˳sxFz+;gxwooa^PKDy+PK PC=-res/drawable/ic_launcher.pngPNG  IHDRw=LIDATHǥyPuƟ{².˲ 8ႈ 628yr OCM5V^ʡbY"0,,{DPXϟ>ߋ4zљp a22x@-q &6'xnب4Ռs-<!a^zD\W6=YMQ2ɗw|՟-f̶vJA؜s1Ym®n>/]ҹr8୔@(r1.}j:Oi> DowJ'CRRVJ eMPy|{|7sRNQy(KNnቹM{p՝Ғ6Q:h++-LxȄsՆIT~M≹\{V{TTX@vL (Ćyq]zAnBFZmHocs  Çd6ihh CCfQ!j2OPSեlUY G?15t"GUˢy*(M6\$""DJiujdo5GcF^G"@ Vx\|T$SgOt ::erOK\]Ϟb¶hӫnZ>5^7 S~6B3Щb#RجJ[ =64%1N ('5+٥bvTD%W< `y*VnJK6͵[h8l3PA$M;QZ1[,U3|.nlIuG2 3 eb2V'0`ę&Uڂg ,.!蒎Q1 F|UJvuӆaL06 cLzN׎zXYٹLGBr8#0LmMOS7onDVv͞} DLژ.C{e 󳵴&cY,ZKSiZ=I`҇6%]Nm},ŅU5SN܈mݷ<65}E޷'0CקԄf.̙3;EnK=_d*/r.Ѵ#>)?/Ԟ H\o7aU%(|${hjǜIL~ cS/LҘPPX"1sgsLuP!!"@&849^1|'3}ȕs_-]$IVM1,,D-aEDA̤rIENDB`PK/Eres/layout/activity_main.xmluN@=[$BHA"5%$ 'Ql*x$ G;es;wofw} ƘMCt- G«& 99w%fmF)B[nTχUПg!F$~"u.m*~RUx:R}o{EO١R3~`)6d?Tޟ#]{ȣ>64u6Z?p̑?gqդ~,ᛙPKS LPK /Eresources.arsc 0<xres/drawable/ic_launcher.pngres/layout/activity_main.xmlurzipSettings Hello world! info.guardianproject.urzip l, 0attrdrawablelayoutstring08Ln ic_launcher activity_mainapp_nameaction_settings hello_worldDXH0DXH0DP0 PK.E classes.dexyluofg\{"ARHJ!,"mZaVʉ<#-gV壢 %qluDQm8U\Vİq mUPhiE 9%$>-ڋw.Ճ?{oқ~De"Z<~g6HڷhD!C1!BFy[MWGN5ht;xO x| > Dnp CՌ%!`\W@ s e&> u~pcsy"^_{o?߂h+rL {0`̃'g%2C'm]guK_ X l8P<}p? |>,` <  x|)s#p;`9C`4`]"#B0Q`i< t\F ^6;/v w{. a10$8jM%JJJE c\ו%L!ULs{3Ii~G~GSJry+zvL+./~=C@Я|$"Pg?~;)O-*ʤ}$FrTpDcJVD.%y|R߁d.y5sb>?Bj*W|U'WdJBRG/ NW/.dJF%J6awI٪d>!d>%da*٦I!!;騐q:!i%_PKbgERľ {b5^{]3j v}Q8yBF}/@f Sy!{bKw!SB6*/M8sdM*M/G߃[B<-WJvIkI&Ě{a|@Osz_/&}k!tZ/&ϐfh[={Hco?Qfuma߁M{)oe_3??UQB2ߗSw]l\G0 tc>Vn vB9DԠCp_g'ê zi`Z3;s."7 'Y=dXn6@r_bu\EV6l럦fwktN&֏8~F=|뽿%\."׉zdSz|v yF[9wN0THt!jO]0'd5П.ZlYn/Цlލ6=5FGi$Ƞpy.Y~ x ypSxlwQZVyFLzӂ7) ɯF-DVĒEXes3MlF>\OLxw Kiݻ78uhF|F4(/eP}tG^Dm~4?b]M݉n {am;MTAMk02Ab"@gô~g(պ9X#ޡmAO9&s\eT@T?V^N֎~EffrS{Ū dzu56}yN}Sz'V1aOsYܩ-<]֧Fѝ` niV^Z߸hLKFBs6q=3XN)))2Se~O k1^\O}Sn۬JnRO-v!K٬gzg]gwM ;D,=Te̪g_$6@lÎT Qj攊;,j\fmߤ(/8,F|ssN6ŪoD^niI'&')Ib(Mr3tmrZ'-{Nq*S=?D{s[bW<]xweUUλ)r&w7#oIK;;0y%ZC]çQ{vVy-}& ^p\tHDZ(#-b y۷䀭S_]4|1cn?#g!1XdԾ++ kEbI;C8?B4i'FMR~q9uV`W*^j%kBI~zɊ]m▊Z6n"_sl L `)*oXBEjQhW0#Vut(Q&pfpR'fS2rEP"{ѩT+7 㟇xhB Myi˅ ;B`PTC(ġ|x3a&AϷJ<K%9/~PS8Yjna5> {dzzh/8/}+*bګί\[x ҍԻ(;3s~y+V6y۔[̢h5OqUc˳SRlƤ*.[5P[¾]X @T-`!cXsX6ӛ\`\'E+SB@H RzrQsM)&WɢQ}JX'J؆I_.k"J2R .f8;pG@Em>A&s"if/ˬkZ^f-x~E{质٫,6 gXXEH$aGc?me\ߊ:3Sc٤'Xsi]Cϲ=ƚtv{u;ړl ngϱȖzh_g:nzYH׬ gY C[\†녞It耻4> UMd$1u*o];ZEWX6iC%9\_~Wz{(ۘMeلl,ZÙlFܕٖٙ1znbٜl˲M,i~A/2 ]@^`^>f,-5C]kR nJ ok[X({-Z- "/O/.+wZְv-Ȯ]۴m}mL|TcZ'留=c>ͮ3nή΂,N{w|X>aSYJ¿WL9.OWwcfr!\R5ۂ[*^cȱ Ft^Ѡ7)kwUWA}M>TOsI֐j+?DS>g t[ZgglgTC̾t%v.9RV*{݃&}9ޣ RUDa))k*S 5VUs h:xlU#%J K#!);΁k >K^bgv]vOyW]ki׶yx,3¥C_>ۈڢ눋C(#t*AGnci\G &]U>uӸ;6-vb߆T|F0їsf̌qazN4#f|Gs}G$߈& 'Lq9Cr BI(-CYbs~=z75;*C7$}d9Dbs?(xAՉk΋-b57!yTgǤhylJ,^cu7uSFP[cCo;n ([c0Ѝ?"܏zcTcϺ󉋏K¾njx57'9gy IMm^r֜6탷 7m|b^GKh<3;r- oIl|$Ŗ֘7X}>7)%oi-uߺoYx/i-w*"gy<^XxxE5^+Wxe˳sxFz+;gxwooa^PKDy+PK AH=-res/drawable/ic_launcher.pngPNG  IHDRw=LIDATHǥyPuƟ{².˲ 8ႈ 628yr OCM5V^ʡbY"0,,{DPXϟ>ߋ4zљp a22x@-q &6'xnب4Ռs-<!a^zD\W6=YMQ2ɗw|՟-f̶vJA؜s1Ym®n>/]ҹr8୔@(r1.}j:Oi> DowJ'CRRVJ eMPy|{|7sRNQy(KNnቹM{p՝Ғ6Q:h++-LxȄsՆIT~M≹\{V{TTX@vL (Ćyq]zAnBFZmHocs  Çd6ihh CCfQ!j2OPSեlUY G?15t"GUˢy*(M6\$""DJiujdo5GcF^G"@ Vx\|T$SgOt ::erOK\]Ϟb¶hӫnZ>5^7 S~6B3Щb#RجJ[ =64%1N ('5+٥bvTD%W< `y*VnJK6͵[h8l3PA$M;QZ1[,U3|.nlIuG2 3 eb2V'0`ę&Uڂg ,.!蒎Q1 F|UJvuӆaL06 cLzN׎zXYٹLGBr8#0LmMOS7onDVv͞} DLژ.C{e 󳵴&cY,ZKSiZ=I`҇6%]Nm},ŅU5SN܈mݷ<65}E޷'0CקԄf.̙3;EnK=_d*/r.Ѵ#>)?/Ԟ H\o7aU%(|${hjǜIL~ cS/LҘPPX"1sgsLuP!!"@&849^1|'3}ȕs_-]$IVM1,,D-aEDA̤rIENDB`PKAHS Lres/layout/activity_main.xmluN@=[$BHA"5%$ 'Ql*x$ G;es;wofw} ƘMCt- G«& 99w%fmF)B[nTχUПg!F$~"u.m*~RUx:R}o{EO١R3~`)6d?Tޟ#]{ȣ>64u6Z?p̑?gqդ~,ᛙPKS LPK AHresources.arsc (0<xres/drawable/ic_launcher.pngres/layout/activity_main.xml&urzip-sNIl(uW[-1J;30@A:8-91(J1234Settings Hello world! info.guardianproject.urzip l, 0attrdrawablelayoutstring08Ln ic_launcher activity_mainapp_nameaction_settings hello_worldH\L4H\L4HT4 PKAHl/cH classes.dex l[uw//)R$u%YCuEKÎءؖe[$JM]җ,AdnlA IF!q [[lٖaڵCVt]6 {tV[tE =H]+[ ?=,8K۷Ro}>yDc]/Vh6RKDHڇAH'Z efS81GWYQ3&ʁ*8.'wOh%j :9$x;S)(x|ִ_?yp |:{ ypg_Ou$`l[$8 yp | *x5[=pSh d@]`Lx< /??p( @.U 9023CnpS`Ti[7߀8(&ʂ.N 5m` u`=6!OF(6] vN$~|E_b*ГJ:i*u]|Ry;Ji*O O^eoSuU!S<*ƽN\ֻO(/`з}o@PNϺ>%U~ʔ^9-*檗EstTGRLjX*y !b!!WżtFi|1FBjdtMDdDCFhA'>+J|}r-JJ*٦$JhZ2d BfBv)igW?,d2Ag, N䧕|N(߉CBaO){ qm=Mc:B&F)eqvD՘~T=|_2I)ּlU2Aϊ}8kdĹ#Dgl"ܣa%%eB! _ӻ%Ϗ`ݼn/U&m0 K]rh]ҷ q%ώyHϟ;!sV?m|{"SK@@}KuXt93< ߀MF쪨 mK!bvn/+ /$|T)j8~v~{1<&Qde”4-n޷WD|\щ{UQnΜB2Xek=nvG6 :+5+a6۵wF3`;ɀ&R>⡡ό^-jc͑ۅ^ BۃҞ9wd,-|s'ޣPyn c9ebbx?%0-j-W0`|J5}ZOF o'ge)i)3H]{j-֬."1=b"?B]r{fLL2T͆=&|xK> k=EQ10n6VM.ֻuڴҙ65c+VHY~pELFGVc]O"N\U JnTr@Jz.ae"Rv|w z?b}@h ZU lUKib#İw[Ůؙ'sO-JiwnhSY^j]u[ כIcS|[t,g۳"ixrEl $$1&69MWKna.Gv[t>[W"O TG;%qPTJ͘TEe۷VTj*UE~$V7&cXcXɃ\@xڌr!RS$w5bB]L OfE(.83M"p)\+x[$c.0B`v 4 6Q Q$ɿ0HD:e:Sgei]ܱ۟f΃:]X\aXX۵Fހ #4ĸ>^Ft$Kq+vfszYEnyNgK'YzR6ԵG٦~ C;HS,qHa=;iݸֱ' c ,=1ƽaCukV.mHruxouag6I;(C1 S M>CPDuηdӄ8y BBp=Zw7:L'% "c"2RQ <ڟ Gr$Z `% h(`$z27PF(D7%L?BB?9`{O{SA8 O'< -5j_9Axw6G8,8 b @0hvS'^w1m6]:e5DKOܹԎ< <{&B;Leoέj,9x";$s$>檊^=֛V_s\Ξ+磨vWb,"9 0#|l~⥝݃eͿyg4`HpA__)uV0icၬ7]ئ1_ >cv)i*c2>ұ,ChJi 7a _^kmv$*eǒzNPIc*1 clpIV@Iq0&s8mFJg]:Ψ^[F,t$M -~0ٕQ^hk5qHLw1[~q1{}=t1w' C+EjUʯ,wG7Z!6g[1K;co;pm(['}Ȟ}*nY=2p)[Y7"kdc .!.LiL 0 BouL#X#|1⚍,>0@TvVʪ ;(lZZ#ӺW7l+>c o"<VzezJ(qeo9/ ")oxlxv ~7FF>[_CR g5(&hL:g3igit@ڦ ݴ鞶QI۰ujaL8)gNTd3VhGkmrqA|۾tPc!\J*L1W_cǥ`ޑ! _JJ?ubC# ϝ;.NN&FP4~R! s>#g07e?amʺb}.Za"V1Mwgۥɤ_>uKZaOnMAgI5x\Ķ_(˖Ïeuwnd^:v(Tzg˨ <'Ee;t)]#gw5/]5|iFg~[dS7PK^ uPKAHDy+AndroidManifest.xmlPK AH=-res/drawable/ic_launcher.pngPKAHS L res/layout/activity_main.xmlPK AH resources.arscPKAHl/cH Pclasses.dexPKAH/%t/ META-INF/MANIFEST.MFPKAHr5!META-INF/CERT.SFPKAH^ u"META-INF/CERT.RSAPK *fdroidserver-1.0.9/tests/build.TestCase0000775000175000017500000000632613303240575020037 0ustar hanshans00000000000000#!/usr/bin/env python3 # http://www.drdobbs.com/testing/unit-testing-with-python/240165163 import inspect import logging import optparse import os import re import shutil import sys import tempfile import unittest localmodule = os.path.realpath( os.path.join(os.path.dirname(inspect.getfile(inspect.currentframe())), '..')) print('localmodule: ' + localmodule) if localmodule not in sys.path: sys.path.insert(0, localmodule) import fdroidserver.build import fdroidserver.common class BuildTest(unittest.TestCase): '''fdroidserver/build.py''' def _set_build_tools(self): build_tools = os.path.join(fdroidserver.common.config['sdk_path'], 'build-tools') if os.path.exists(build_tools): fdroidserver.common.config['build_tools'] = '' for f in sorted(os.listdir(build_tools), reverse=True): versioned = os.path.join(build_tools, f) if os.path.isdir(versioned) \ and os.path.isfile(os.path.join(versioned, 'aapt')): fdroidserver.common.config['build_tools'] = versioned break return True else: print('no build-tools found: ' + build_tools) return False def _find_all(self): for cmd in ('aapt', 'adb', 'android', 'zipalign'): path = fdroidserver.common.find_sdk_tools_cmd(cmd) if path is not None: self.assertTrue(os.path.exists(path)) self.assertTrue(os.path.isfile(path)) def setUp(self): logging.basicConfig(level=logging.DEBUG) self.basedir = os.path.join(localmodule, 'tests') self.tmpdir = os.path.abspath(os.path.join(self.basedir, '..', '.testfiles')) if not os.path.exists(self.tmpdir): os.makedirs(self.tmpdir) os.chdir(self.basedir) def test_force_gradle_build_tools(self): testdir = tempfile.mkdtemp(prefix=inspect.currentframe().f_code.co_name, dir=self.tmpdir) shutil.copytree(os.path.join(os.path.dirname(__file__), 'source-files'), os.path.join(testdir, 'source-files')) teststring = 'FAKE_VERSION_FOR_TESTING' fdroidserver.build.force_gradle_build_tools(testdir, teststring) pattern = re.compile(r"buildToolsVersion[\s=]+'%s'\s+" % teststring) for p in ('source-files/fdroid/fdroidclient/build.gradle', 'source-files/Zillode/syncthing-silk/build.gradle', 'source-files/open-keychain/open-keychain/build.gradle', 'source-files/osmandapp/osmand/build.gradle', 'source-files/open-keychain/open-keychain/OpenKeychain/build.gradle'): with open(os.path.join(testdir, p), 'r') as f: filedata = f.read() self.assertIsNotNone(pattern.search(filedata)) if __name__ == "__main__": parser = optparse.OptionParser() parser.add_option("-v", "--verbose", action="store_true", default=False, help="Spew out even more information than normal") (fdroidserver.common.options, args) = parser.parse_args(['--verbose']) newSuite = unittest.TestSuite() newSuite.addTest(unittest.makeSuite(BuildTest)) unittest.main(failfast=False) fdroidserver-1.0.9/tests/stats/0000775000175000017500000000000013324115531016423 5ustar hanshans00000000000000fdroidserver-1.0.9/tests/stats/known_apks.txt0000664000175000017500000000157713323655163021361 0ustar hanshans00000000000000com.politedroid_3.apk com.politedroid 2017-06-23 com.politedroid_4.apk com.politedroid 2017-06-23 com.politedroid_5.apk com.politedroid 2017-06-23 com.politedroid_6.apk com.politedroid 2017-06-23 duplicate.permisssions_9999999.apk duplicate.permisssions 2017-12-22 fake.ota.update_1234.zip fake.ota.update 2016-03-10 obb.main.oldversion_1444412523.apk obb.main.oldversion 2013-12-31 obb.main.twoversions_1101613.apk obb.main.twoversions 2015-10-12 obb.main.twoversions_1101615.apk obb.main.twoversions 2016-01-01 obb.main.twoversions_1101617.apk obb.main.twoversions 2016-06-20 obb.mainpatch.current_1619.apk obb.mainpatch.current 2016-04-23 obb.mainpatch.current_1619_another-release-key.apk obb.mainpatch.current 2017-06-01 souch.smsbypass_9.apk souch.smsbypass 2018-04-26 urzip-; Рахма́, [rɐxˈmanʲɪnəf] سيرجي_رخمانينوف 谢·.apk info.guardianproject.urzip 2016-06-23 fdroidserver-1.0.9/tests/metadata-rewrite-yml/0000775000175000017500000000000013324115531021323 5ustar hanshans00000000000000fdroidserver-1.0.9/tests/metadata-rewrite-yml/app.with.special.build.params.yml0000664000175000017500000000514613303240575027611 0ustar hanshans00000000000000AntiFeatures: - UpstreamNonFree Categories: - System License: GPL-3.0-only SourceCode: https://github.com/loadrunner/Facebook-Contact-Sync IssueTracker: https://github.com/loadrunner/Facebook-Contact-Sync/issues AutoName: UberSync for Facebook Summary: Sync your Facebook Contacts Description: |- To configure, go to "Settings => Accounts & Sync => Add Account". Depending on how many friends you have, the first import might take a while, so be patient. * Facebook does not allow to export phone numbers or emails: only names, pictures and statuses are synced. * Facebook users have the option to block one or all apps: if they opt for that, they will be EXCLUDED from your friends list. Appbrain SDK was removed before building. RepoType: git Repo: https://github.com/loadrunner/Facebook-Contact-Sync.git Builds: - versionName: 1.0.0 versionCode: 32 commit: b3879c973e7cac3a3319 - versionName: 1.0.1 versionCode: 33 commit: 252c8dd4c9 - versionName: 1.2.0 versionCode: 39 commit: v1.2.0 patch: - appbrain.patch srclibs: - FacebookSDK@sdk-version-3.0.1 rm: - libs/appbrain-sdk-android.jar prebuild: |- sed -i 's@\(reference.1=\).*@\1$$FacebookSDK$$@' project.properties && sed -i 's/Class\[\]/Class\\[\]/g' $$FacebookSDK$$/src/com/facebook/model/GraphObject.java - versionName: 1.2.2 versionCode: 42 commit: v1.2.2 patch: - appbrain.patch srclibs: - FacebookSDK@sdk-version-3.0.2 rm: - libs/appbrain-sdk-android.jar extlibs: - android/android-support-v4.jar prebuild: |- mv libs/android-support-v4.jar $$FacebookSDK$$/libs/ && sed -i 's@\(reference.1=\).*@\1$$FacebookSDK$$@' project.properties && sed -i 's/Class\[\]/Class\\[\]/g' $$FacebookSDK$$/src/com/facebook/model/GraphObject.java - versionName: 2.1.1 versionCode: 48 commit: 2.1.1 patch: - manifest-ads.patch - mobilecore.patch maven: 'yes' srclibs: - FacebookSDK@sdk-version-3.0.2 - versionName: 2.1.1-b versionCode: 49 commit: 2.1.1 patch: - manifest-ads.patch - mobilecore.patch maven: yes@.. srclibs: - FacebookSDK@sdk-version-3.0.2 - versionName: 2.1.1-c versionCode: 50 commit: 2.1.1 patch: - manifest-ads.patch - mobilecore.patch maven: '2' srclibs: - FacebookSDK@sdk-version-3.0.2 - versionName: 2.1.2 versionCode: 51 disable: Labelled as pre-release, so skipped ArchivePolicy: 0 versions AutoUpdateMode: None UpdateCheckMode: None CurrentVersion: 2.1.2 CurrentVersionCode: 49 fdroidserver-1.0.9/tests/metadata-rewrite-yml/org.fdroid.fdroid.yml0000664000175000017500000004407713303240575025371 0ustar hanshans00000000000000Categories: - System License: GPL-3.0-or-later WebSite: https://f-droid.org SourceCode: https://gitlab.com/fdroid/fdroidclient IssueTracker: https://gitlab.com/fdroid/fdroidclient/issues Translation: https://hosted.weblate.org/projects/f-droid/f-droid Changelog: https://gitlab.com/fdroid/fdroidclient/raw/HEAD/CHANGELOG.md Donate: https://f-droid.org/about FlattrID: '343053' Bitcoin: 15u8aAPK4jJ5N8wpWJ5gutAyyeHtKX5i18 AutoName: F-Droid Summary: Application manager Description: |- Connects to F-Droid compatible repositories. The default repo is hosted at f-droid.org, which contains only bona fide FOSS. Android is open in the sense that you are free to install apks from anywhere you wish, but there are many good reasons for using a client/repository setup: * Be notified when updates are available * Keep track of older and beta versions * Filter apps that aren't compatible with the device * Find apps via categories and searchable descriptions * Access associated urls for donations, source code etc. * Stay safe by checking repo index signatures and apk hashes RepoType: srclib Repo: fdroidclient Builds: - versionName: '0.17' versionCode: 8 commit: c626ce5f6d3e10ae15942f01ff028be310cc695a init: rm -f build.xml - versionName: '0.18' versionCode: 9 commit: a6c9ed8d06b19315df9ba9041324f78139f7d238 init: rm -f build.xml - versionName: '0.19' versionCode: 10 commit: 540b7d0522f4d67a4896697f7342e4c75b4cbf59 init: rm -f build.xml - versionName: '0.20' versionCode: 11 commit: ddacfb856ad66c1c367e20c9cbecbfb15fe00813 init: rm -f build.xml - versionName: '0.21' versionCode: 12 commit: 49fa56aa6626a190f2d711120b69e435e9e615b1 init: rm -f build.xml - versionName: '0.22' versionCode: 13 commit: a6a33c942495cc4c74a7cb6e968efe0e00815e68 init: rm -f build.xml - versionName: '0.23' versionCode: 14 commit: aa58a8aad1a1c3832eafb9f1bdd6db8292d2c172 init: rm -f build.xml - versionName: '0.24' versionCode: 15 commit: 9b5fe2976443255b95027abd412f1c1e7f3d27b2 init: rm -f build.xml - versionName: '0.25' versionCode: 16 commit: 43977cc493e47a4dc841c4192ae8a40fb14b639b init: rm -f build.xml - versionName: '0.28' versionCode: 19 commit: f881aabe5bd0ac94771b03f1318a6e0972ab4128 target: android-15 - versionName: '0.29' versionCode: 20 commit: 87b229b95d0909bfd05c65c5670794e743626f6c target: android-15 - versionName: '0.30' versionCode: 21 commit: 497cb19840f79b31ae9590f5abd9e4df832b34ee target: android-15 - versionName: '0.31' versionCode: 22 commit: f99f8a544c7cb4d4a48ad09da00ad281af05f2ac target: android-15 - versionName: '0.32' versionCode: 23 commit: cc3970cc243e345416bfc62781ece6eeefd11495 target: android-15 - versionName: '0.33' versionCode: 24 commit: 58eb580159aa4d54767f0af1736cad233fec2475 target: android-15 - versionName: 0.34-test versionCode: 25 commit: 335d27b725b0f92e9e8804ae09518cd47bc7b021 target: android-15 - versionName: 0.35-test versionCode: 26 commit: a06d18b029392669e98359f86c07e442a04e6a13 target: android-15 - versionName: 0.36-test versionCode: 27 commit: 647e230c9e888c04bb0554078c5aa81da63548a0 target: android-15 - versionName: 0.37-test versionCode: 28 commit: 3c02e3ccc147a34af42cedf7d85f18dc75c8efa8 target: android-15 - versionName: '0.38' versionCode: 38 commit: 99b52c988d203811f434d6ac40675a63d5ae41ab target: android-15 - versionName: 0.39-test versionCode: 39 commit: 9a7d0b9f10710105d51d8206a7faa4408c60c20d target: android-15 - versionName: '0.40' versionCode: 40 commit: 51a67efdf1ee2819bee99d9263b2980dafaf761d target: android-15 - versionName: '0.42' versionCode: 42 commit: 36b815095ef51ca4f21887d973dbc0a50575cd65 target: android-15 - versionName: '0.43' versionCode: 43 disable: sdk doesn't like tzm (at f2109e4e0bf1597c625221d8d2d10050f146ba5a) commit: f2109e4e0bf1597c625221d8d2d10050f146ba5a target: android-15 - versionName: '0.44' versionCode: 44 disable: nasty upgrade bug commit: '0.44' target: android-15 - versionName: '0.45' versionCode: 45 commit: '0.45' target: android-15 - versionName: '0.46' versionCode: 46 commit: '0.46' target: android-15 - versionName: 0.47-test versionCode: 47 commit: 0.47-test target: android-17 - versionName: 0.48-test versionCode: 48 commit: 0.48-test target: android-17 - versionName: '0.50' versionCode: 50 commit: '0.50' - versionName: 0.51-test versionCode: 51 commit: 0.51-test - versionName: 0.52-test versionCode: 52 commit: 0.52-test submodules: true prebuild: rm -rf extern/Universal-Image-Loader/downloads androidupdate: - . - extern/Universal-Image-Loader/library - versionName: 0.53-test versionCode: 53 commit: 0.53-test submodules: true scandelete: - yes - versionName: '0.54' versionCode: 540 commit: '0.54' submodules: true scandelete: - yes - versionName: '0.55' versionCode: 550 commit: '0.55' submodules: true - versionName: 0.56-test versionCode: 560 commit: 0.56-test submodules: true - versionName: 0.57-test versionCode: 570 commit: 0.57-test submodules: true - versionName: '0.58' versionCode: 580 commit: '0.58' submodules: true - versionName: 0.59-test versionCode: 590 commit: 0.59-test submodules: true - versionName: 0.61-test versionCode: 610 commit: 0.61-test submodules: true - versionName: '0.62' versionCode: 620 commit: '0.62' submodules: true - versionName: '0.63' versionCode: 630 commit: '0.63' submodules: true - versionName: 0.64-test versionCode: 640 commit: 0.64-test submodules: true - versionName: '0.65' versionCode: 650 commit: '0.65' submodules: true - versionName: '0.66' versionCode: 660 commit: '0.66' submodules: true - versionName: 0.67-test versionCode: 670 commit: 0.67-test submodules: true - versionName: 0.68-test versionCode: 680 commit: 0.68-test submodules: true - versionName: 0.69-test versionCode: 690 commit: 0.69-test submodules: true - versionName: 0.70-test versionCode: 700 commit: 0.70-test submodules: true prebuild: ./ant-prepare.sh androidupdate: - . - versionName: '0.71' versionCode: 710 disable: Broken MTM/AndroidPinning commit: '0.71' submodules: true prebuild: ./ant-prepare.sh androidupdate: - . - versionName: '0.72' versionCode: 720 disable: proguard issues commit: '0.72' submodules: true prebuild: ./ant-prepare.sh androidupdate: - . - versionName: '0.73' versionCode: 730 disable: local repos broken commit: '0.73' submodules: true prebuild: ./ant-prepare.sh androidupdate: - . - versionName: '0.74' versionCode: 740 disable: still some proguard issues commit: '0.74' submodules: true prebuild: ./ant-prepare.sh androidupdate: - . - versionName: '0.75' versionCode: 750 disable: repo update progress crasher commit: '0.75' submodules: true prebuild: ./ant-prepare.sh androidupdate: - . - versionName: '0.76' versionCode: 760 commit: '0.76' submodules: true prebuild: ./ant-prepare.sh androidupdate: - . - versionName: 0.77-test versionCode: 770 commit: 0.77-test subdir: F-Droid submodules: true prebuild: ./ant-prepare.sh androidupdate: - . - versionName: '0.78' versionCode: 780 commit: '0.78' subdir: F-Droid submodules: true prebuild: ./ant-prepare.sh androidupdate: - . - versionName: 0.79-test versionCode: 790 commit: 0.79-test subdir: F-Droid submodules: true prebuild: ./ant-prepare.sh androidupdate: - . - versionName: 0.80-test versionCode: 800 commit: 0.80-test subdir: F-Droid submodules: true prebuild: ./ant-prepare.sh androidupdate: - . - versionName: 0.81-test versionCode: 810 commit: 0.81-test subdir: F-Droid submodules: true prebuild: ./ant-prepare.sh androidupdate: - . - versionName: '0.82' versionCode: 820 commit: '0.82' subdir: F-Droid submodules: true prebuild: ./ant-prepare.sh androidupdate: - . - versionName: '0.83' versionCode: 830 commit: '0.83' subdir: F-Droid submodules: true prebuild: ./ant-prepare.sh androidupdate: - . - versionName: 0.84-test versionCode: 840 commit: 0.84-test subdir: F-Droid submodules: true prebuild: ./ant-prepare.sh androidupdate: - . - versionName: 0.85-test versionCode: 850 commit: 0.85-test subdir: F-Droid submodules: true prebuild: ./ant-prepare.sh androidupdate: - . - versionName: 0.86-test versionCode: 860 commit: 0.86-test subdir: F-Droid submodules: true prebuild: ./ant-prepare.sh androidupdate: - . - versionName: 0.87-test versionCode: 870 commit: 0.87-test subdir: F-Droid submodules: true prebuild: ./ant-prepare.sh androidupdate: - . - versionName: '0.88' versionCode: 880 commit: '0.88' subdir: F-Droid submodules: true prebuild: ./ant-prepare.sh androidupdate: - . - versionName: 0.89-test versionCode: 890 commit: 0.89-test subdir: F-Droid submodules: true prebuild: ./ant-prepare.sh androidupdate: - . - versionName: 0.90-test versionCode: 900 commit: 0.90-test subdir: F-Droid submodules: true prebuild: ./ant-prepare.sh androidupdate: - . - versionName: '0.91' versionCode: 910 commit: '0.91' subdir: F-Droid submodules: true prebuild: ./ant-prepare.sh androidupdate: - . - versionName: '0.92' versionCode: 920 commit: '0.92' subdir: F-Droid submodules: true prebuild: ./ant-prepare.sh androidupdate: - . - versionName: 0.93-test versionCode: 930 commit: 0.93-test subdir: F-Droid submodules: true prebuild: ./ant-prepare.sh androidupdate: - . - versionName: 0.94-test versionCode: 940 commit: 0.94-test subdir: F-Droid submodules: true gradle: - yes - versionName: 0.95-alpha1 versionCode: 95001 commit: 0.95-alpha1 subdir: F-Droid submodules: true gradle: - yes - versionName: 0.95-alpha2 versionCode: 95002 commit: v0.95-alpha2 subdir: F-Droid submodules: true gradle: - yes - versionName: '0.95' versionCode: 95050 commit: v0.95 subdir: F-Droid submodules: true gradle: - yes - versionName: 0.95.1 versionCode: 95150 commit: v0.95.1 subdir: F-Droid submodules: true gradle: - yes - versionName: 0.96-alpha1 versionCode: 96001 commit: v0.96-alpha1 subdir: F-Droid gradle: - yes - versionName: 0.96-alpha2 versionCode: 96002 commit: v0.96-alpha2 subdir: F-Droid gradle: - yes - versionName: 0.96-alpha3 versionCode: 96003 commit: v0.96-alpha3 subdir: F-Droid gradle: - yes - versionName: 0.96-alpha4 versionCode: 96004 commit: v0.96-alpha4 subdir: F-Droid gradle: - yes - versionName: 0.96-alpha5 versionCode: 96005 commit: v0.96-alpha5 subdir: F-Droid gradle: - yes - versionName: 0.96-alpha6 versionCode: 96006 commit: v0.96-alpha6 subdir: F-Droid gradle: - yes - versionName: '0.96' versionCode: 96050 commit: v0.96 subdir: F-Droid gradle: - yes scanignore: - extern/AndroidPinning/res/raw/cacerts - versionName: 0.96.1 versionCode: 96150 commit: v0.96.1 subdir: F-Droid gradle: - yes scanignore: - extern/AndroidPinning/res/raw/cacerts - versionName: 0.97-alpha1 versionCode: 97001 commit: v0.97-alpha1 subdir: F-Droid gradle: - yes scanignore: - extern/AndroidPinning/res/raw/cacerts - versionName: 0.97-alpha2 versionCode: 97002 commit: v0.97-alpha2 subdir: F-Droid gradle: - yes - versionName: 0.97-alpha3 versionCode: 97003 commit: v0.97-alpha3 subdir: F-Droid gradle: - yes - versionName: 0.97-alpha4 versionCode: 97004 commit: v0.97-alpha4 subdir: F-Droid gradle: - yes - versionName: 0.97-alpha5 versionCode: 97005 commit: v0.97-alpha5 subdir: F-Droid gradle: - yes - versionName: 0.97-alpha6 versionCode: 97006 commit: v0.97-alpha6 subdir: F-Droid gradle: - yes - versionName: 0.97-alpha7 versionCode: 97007 commit: v0.97-alpha7 subdir: F-Droid gradle: - yes - versionName: 0.97-alpha8 versionCode: 97008 commit: v0.97-alpha8 subdir: F-Droid gradle: - yes - versionName: '0.97' versionCode: 97050 commit: v0.97 subdir: F-Droid gradle: - yes - versionName: 0.98-alpha1 versionCode: 98001 commit: v0.98-alpha1 subdir: F-Droid gradle: - yes - versionName: 0.98-alpha2 versionCode: 98002 commit: v0.98-alpha2 subdir: F-Droid gradle: - yes - versionName: 0.98-alpha3 versionCode: 98003 commit: v0.98-alpha3 subdir: F-Droid gradle: - yes - versionName: 0.98-alpha4 versionCode: 98004 commit: v0.98-alpha4 subdir: F-Droid gradle: - yes - versionName: 0.98-alpha5 versionCode: 98005 commit: v0.98-alpha5 subdir: F-Droid gradle: - yes - versionName: 0.98-alpha6 versionCode: 98006 commit: v0.98-alpha6 subdir: F-Droid gradle: - yes - versionName: 0.98-alpha7 versionCode: 98007 commit: v0.98-alpha7 subdir: F-Droid gradle: - yes - versionName: '0.98' versionCode: 98050 commit: v0.98 subdir: F-Droid gradle: - yes - versionName: 0.98.1 versionCode: 98150 commit: v0.98.1 subdir: F-Droid gradle: - yes - versionName: 0.99-alpha1 versionCode: 99001 commit: v0.99-alpha1 subdir: F-Droid gradle: - yes - versionName: 0.99-alpha2 versionCode: 99002 commit: v0.99-alpha2 subdir: F-Droid gradle: - yes - versionName: '0.99' versionCode: 99050 commit: v0.99 subdir: F-Droid gradle: - yes - versionName: 0.99.1 versionCode: 99150 commit: v0.99.1 subdir: F-Droid gradle: - yes - versionName: 0.99.2 versionCode: 99250 commit: v0.99.2 subdir: F-Droid gradle: - yes - versionName: 0.100-alpha1 versionCode: 100001 commit: v0.100-alpha1 subdir: F-Droid gradle: - yes - versionName: 0.100-alpha2 versionCode: 100002 commit: v0.100-alpha2 subdir: F-Droid gradle: - yes - versionName: 0.100-alpha3 versionCode: 100003 commit: v0.100-alpha3 subdir: app gradle: - yes - versionName: 0.100-alpha4 versionCode: 100004 commit: v0.100-alpha4 subdir: app gradle: - yes - versionName: 0.100-alpha5 versionCode: 100005 commit: v0.100-alpha5 subdir: app gradle: - yes - versionName: 0.100-alpha6 versionCode: 100006 commit: v0.100-alpha6 subdir: app gradle: - yes - versionName: 0.100-alpha7 versionCode: 100007 commit: v0.100-alpha7 subdir: app gradle: - yes - versionName: 0.100-alpha8 versionCode: 100008 commit: v0.100-alpha8 subdir: app gradle: - yes - versionName: '0.100' versionCode: 100050 commit: v0.100 subdir: app gradle: - yes - versionName: 0.100.1 versionCode: 100150 commit: v0.100.1 subdir: app gradle: - yes - versionName: 0.101-alpha1 versionCode: 101001 commit: v0.101-alpha1 subdir: app gradle: - yes - versionName: 0.101-alpha2 versionCode: 101002 commit: v0.101-alpha2 subdir: app gradle: - yes - versionName: 0.101-alpha3 versionCode: 101003 commit: v0.101-alpha3 subdir: app gradle: - yes - versionName: 0.101-alpha4 versionCode: 101004 commit: v0.101-alpha4 subdir: app gradle: - yes - versionName: 0.101-alpha5 versionCode: 101005 commit: v0.101-alpha5 subdir: app gradle: - yes - versionName: 0.101-alpha6 versionCode: 101006 commit: v0.101-alpha6 subdir: app gradle: - yes - versionName: '0.101' versionCode: 101050 commit: v0.101 subdir: app gradle: - yes - versionName: 0.102-alpha1 versionCode: 102001 commit: v0.102-alpha1 subdir: app gradle: - yes - versionName: 0.102-alpha2 versionCode: 102002 commit: v0.102-alpha2 subdir: app gradle: - yes - versionName: 0.102-alpha3 versionCode: 102003 commit: v0.102-alpha3 subdir: app gradle: - yes - versionName: '0.102' versionCode: 102050 commit: v0.102 subdir: app gradle: - yes - versionName: 0.102.1 versionCode: 102150 commit: v0.102.1 subdir: app gradle: - yes - versionName: 0.102.2 versionCode: 102250 commit: v0.102.2 subdir: app gradle: - yes - versionName: 0.102.3 versionCode: 102350 commit: v0.102.3 subdir: app gradle: - yes - versionName: 0.103-alpha1 versionCode: 103001 commit: v0.103-alpha1 subdir: app gradle: - yes - versionName: 0.103-alpha2 versionCode: 103002 commit: v0.103-alpha2 subdir: app gradle: - yes - versionName: 0.103-alpha3 versionCode: 103003 commit: v0.103-alpha3 subdir: app gradle: - yes ArchivePolicy: 12 versions AutoUpdateMode: None UpdateCheckMode: Static CurrentVersion: 0.102.3 CurrentVersionCode: 102350 fdroidserver-1.0.9/tests/metadata-rewrite-yml/fake.ota.update.yml0000664000175000017500000000305413243530567025033 0ustar hanshans00000000000000Categories: - System License: Apache-2.0 WebSite: https://f-droid.org SourceCode: https://gitlab.com/fdroid/privileged-extension IssueTracker: https://gitlab.com/fdroid/privileged-extension/issues Donate: https://f-droid.org/about AutoName: Fake OTA Update Summary: Tests whether OTA ZIP files are being include Description: |- F-Droid can make use of system privileges or permissions to install, update and remove applications on its own. The only way to obtain those privileges is to become a system app. This is where the Privileged Extension comes in - being a separate app and much smaller, it can be installed as a system app and communicate with the main app via AIDL IPC. This has several advantages: * Reduced disk usage in the system partition * System updates don't remove F-Droid * The process of installing into system via root is safer This is packaged as an OTA (Over-The-Air) update ZIP file. It must be installed using TWRP or other Android recovery that can flash updates to the system from the /data/data/org.fdroid.fdroid folder on the /data partition. The standalone APK is called F-Droid Privileged Extension. RepoType: git Repo: https://gitlab.com/fdroid/privileged-extension.git Builds: - versionName: 0.2.1 versionCode: 2000 commit: 0.2.1 output: app/build/distributions/FDroidPrivilegedExtensionFromBinaries-$$VERSION$$.zip build: gradle assembleUpdateZipFromBinariesDebug AutoUpdateMode: Version %v UpdateCheckMode: Tags CurrentVersion: 0.2.1 CurrentVersionCode: 2000 fdroidserver-1.0.9/tests/description-parsing.py0000775000175000017500000000356213272566407021652 0ustar hanshans00000000000000#!/usr/bin/env python3 import os import sys sys.path.insert(1, os.path.join(os.getcwd(), '..', 'fdroidserver')) import common config = common.get_default_config() testtext = ''' This is a block of text that has been wrapped to fit nicely in PEP8 style: GnuPrivacyGuard extends the gpgcli command line tool to bring an integrated privacy engine to your Android. It gives you command line access to the entire GnuPG suite of encryption software. It also serves as the test bed for complete Android integration for all of GnuPG's crypto services, including OpenPGP, symmetric encryption, and more. GPG is GNU’s tool for end-to-end secure communication and encrypted data storage. This trusted protocol is the free software alternative to PGP. This app is built upon GnuPG 2.1, the new modularized version of GnuPG that now supports S/MIME. GPG aims to provide an integrated experience, so clicking on PGP files should "just work". You can also share files to GPG to encrypt them. GPG will also respond when you click on a PGP fingerprint URL (one that starts with openpgp4fpr:). Before using GPG, be sure to launch the app and let it finish its installation process. Once it has completed, then you're ready to use it. The easiest way to get started with GPG is to install [[jackpal.androidterm]]. GPG will automatically configure Android Terminal Emulator as long as you have the "Allow PATH extensions" settings enabled. ''' archive_description = """ The repository of older versions of applications from the main demo repository. """ print('\n\n\n----------------------------------------------------') print(common.clean_description(testtext)) print('\n\n\n----------------------------------------------------') print(common.clean_description(archive_description)) print('\n\n\n----------------------------------------------------') print(common.clean_description(config['repo_description'])) fdroidserver-1.0.9/tests/urzip-badcert.apk0000664000175000017500000002330513323343071020541 0ustar hanshans00000000000000PK OC=-res/drawable/ic_launcher.pngPNG  IHDRw=LIDATHǥyPuƟ{².˲ 8ႈ 628yr OCM5V^ʡbY"0,,{DPXϟ>ߋ4zљp a22x@-q &6'xnب4Ռs-<!a^zD\W6=YMQ2ɗw|՟-f̶vJA؜s1Ym®n>/]ҹr8୔@(r1.}j:Oi> DowJ'CRRVJ eMPy|{|7sRNQy(KNnቹM{p՝Ғ6Q:h++-LxȄsՆIT~M≹\{V{TTX@vL (Ćyq]zAnBFZmHocs  Çd6ihh CCfQ!j2OPSեlUY G?15t"GUˢy*(M6\$""DJiujdo5GcF^G"@ Vx\|T$SgOt ::erOK\]Ϟb¶hӫnZ>5^7 S~6B3Щb#RجJ[ =64%1N ('5+٥bvTD%W< `y*VnJK6͵[h8l3PA$M;QZ1[,U3|.nlIuG2 3 eb2V'0`ę&Uڂg ,.!蒎Q1 F|UJvuӆaL06 cLzN׎zXYٹLGBr8#0LmMOS7onDVv͞} DLژ.C{e 󳵴&cY,ZKSiZ=I`҇6%]Nm},ŅU5SN܈mݷ<65}E޷'0CקԄf.̙3;EnK=_d*/r.Ѵ#>)?/Ԟ H\o7aU%(|${hjǜIL~ cS/LҘPPX"1sgsLuP!!"@&849^1|'3}ȕs_-]$IVM1,,D-aEDA̤rIENDB`PKOCS Lres/layout/activity_main.xmluN@=[$BHA"5%$ 'Ql*x$ G;es;wofw} ƘMCt- G«& 99w%fmF)B[nTχUПg!F$~"u.m*~RUx:R}o{EO١R3~`)6d?Tޟ#]{ȣ>64u6Z?p̑?gqդ~,ᛙPKOCIדAndroidManifest.xmlKoSGϵM'ǘR"!Tmqh˦E,.. 좟U V,*枩'|WϽg͙3sQS:AQuS8OA MzQz } }="4TCC?CA@D_@@/ 1eh ZBB/} =~z -Uh%oriG{vhxlإi٧*zb#(:bquT;8ؾWgW*} ۺ0qUaںʓ}Xo-V ^QwA-ܷ}5qm { hUBY- {V越UH^ʛ_U?|}!Q*2`1kQű*UЫW9tO#/");W `WKz: ԡ:o"]sBֻZ%BKo/D]ˈKwJ(Tf@hUwӦ)}*k[mWh -чo;EuĮ EFo>¿'z=zlNsq:t9vMtLI3ds&=>yiBy @Qhf[)fv4ώS܆B-bng$3ƘI܆CF7bTިF ^K aoބ؎i`cY,mwD̈́ߤ2iqoM5C7e&az$yώӼ5wНwӷ>\?.>уl=?ȿ|㫝D%"Z+Iz$4_׉!DW!<# '@vz]`<s"x.WWkSo& ^@w3N?~2 Z=A~:x|wi#{ȃx|?~| 0A?#` <΁ge m{m:1oN-`O<(3<" p~|>,)`<  2x| :'`C`^4`^"#t`,&Ly@70A%97` `lwmj] ;Np' `#S`<)pn"jRPJ/@oTz :9i*u]kZI<+8<$\Q c*{RUY_Q:Հ~Eݨʎx մ '`ˀ~-_Я+:? 䙂>߯i4-*ʤ$ǩJrVpDɣJE,[eq H*("8-dqX YO{,Ec b!uHr հ<+s>:>,|ƃ2t? C߂/!}!Tv=dsk{}1YoU)/^D^ʮпʺ{w!W(S!ȾwUjI#hpFϒkWAzk5ِF9"t7Oky>ZXJn:\MlAbZs3梛h@O b1:A+Ml#e?ON{LFΑ6~+vǩfs;E{Ȳղ eJ=(G|>#f2H!pih 4vF <|p;x ~6j'>EEDy>l q(هSWoG_(u'l܊ s㑭9io1a3iFgGy$⠉8ı&JF'B VY]cЋ>hc(&5( Gt.φpsOkޭoҾ.mq\ˆ"PxVD%"<\ Ӓ뉢?WFy_ن]͛?;m)zns,?}3&6ܯ5UϓY9gY'sS!uVJ:FuP9&6uDT=WJ5{L8JV>׮W̝Ϣh> ER%{66o6=C:Ӓ鱨\l  EoL'֥;ץץT4?|LĹoxp٫|[C-J(-3S2c)[U>s95E!\!5еYj܂9U*S9;L=ۭ&ǵ+G}gj&_>槭@A0UP)Y3V+N17ST*.9r wE[+Z0u$Ϥھ^<2Ȳ&Y:UY&;S;櫖_p,{'|%WrJHrw-oMVS3|uv3^f+W|Ĝvن)w;S*&ɰS_+9CTl.Ljhdwkp7NQi0}c޶or.lfi/Z|n󊶵V0ṄO΀푪[q[8& )ZP:+z]œ󟌪eJ1!Ч5c :2TEJv)\-x["c*V1B`t3wĬ Q7ɜHNsi6e3k "{괬k,fCXX; HSxGq~IK e;W#tdh,*38gq sSE^]Nz}J6q(bݘ3b#QRN5EAr^ýs*^5 vx;vΨ7h*+>ރEM!b2 >j2,4X7$+a0shNbk(-f_.|PK*uE*M._META-INF/CERT.RSAUT wSwSux 3hbfajhδAG&FFCnN6Vm>f&)Vn"M/ f&F&&FS^FVs ̡,lL| 0c^JQ~fHY*Tn 'khd`dhfddd`l%kX@8ٍ ̍ L w;',fڦQV^:|Ʊ  F;f\=oOz<*}yC7Zl//23J^w0ɯy_U0|I7'ܘvg&ݳĽ hA t/'k?LVprsV7Yʮ}:FKO6{Ul{[kP–k2ئq/2klj+~=}$!ۿ*%,sҸ-}&c˪ޠ^aKaZj6>1h|Ld<4} %'h`il0TonՔ#3< 5Cԋ/Z__}賀_9O|P,)I=|oaw{_h\2Q=g_vjҵW*Za4ӥr y9:q}k PK OC=-res/drawable/ic_launcher.pngPKOCS Lres/layout/activity_main.xmlPKOCIדAndroidManifest.xmlPK OC?} resources.arscPKOCT~ classes.dexPKOC,2META-INF/MANIFEST.MFPKOCl=T,7{ META-INF/CERT.SFPK*uE*M._!META-INF/CERT.RSAUTwSux PK%$fdroidserver-1.0.9/tests/metadata/0000775000175000017500000000000013324115531017045 5ustar hanshans00000000000000fdroidserver-1.0.9/tests/metadata/org.smssecure.smssecure/0000775000175000017500000000000013324115531023654 5ustar hanshans00000000000000fdroidserver-1.0.9/tests/metadata/org.smssecure.smssecure/signatures/0000775000175000017500000000000013324115531026040 5ustar hanshans00000000000000fdroidserver-1.0.9/tests/metadata/org.smssecure.smssecure/signatures/135/0000775000175000017500000000000013324115531026350 5ustar hanshans00000000000000fdroidserver-1.0.9/tests/metadata/org.smssecure.smssecure/signatures/135/MANIFEST.MF0000664000175000017500000070534113243530567030026 0ustar hanshans00000000000000Manifest-Version: 1.0 Built-By: Generated-by-ADT Created-By: Android Gradle 2.3.0 Name: res/drawable-xhdpi-v4/abc_ic_star_half_black_48dp.png SHA1-Digest: Mv+KiFiSaa+WMki+npzbbru9CxE= Name: res/drawable/abc_btn_check_material.xml SHA1-Digest: 4XHnecusACTIgtImUjC7bQ9HNM8= Name: res/drawable-xhdpi-v4/ic_video_light.png SHA1-Digest: MN62WNe3Z3Ix8KEzRhWfoTk1cZs= Name: res/drawable-hdpi-v4/ic_lock_black_18dp.png SHA1-Digest: S7n2/JX/yuDCLErq0/yirCHoKkw= Name: res/layout/design_navigation_item_separator.xml SHA1-Digest: ZrVCT50MLzsYssSmPSnwC2kz/Hs= Name: res/drawable-hdpi-v4/abc_textfield_search_activated_mtrl_alpha.9 .png SHA1-Digest: sM1tzoxIgcK5w/PwGSZxzucCBqY= Name: res/drawable-hdpi-v4/ic_audio_light.png SHA1-Digest: xNqmnd/y7K6e8YxxooF3JQdiXY0= Name: res/drawable-mdpi-v4/ic_notifications_black.png SHA1-Digest: 6ymoxV29wZYUy6sr+Ai7KRA6bho= Name: res/drawable-xhdpi-v4/ic_advanced_gray.png SHA1-Digest: Fwk8+Z5gi7yWa5u3g3okLYRzF2I= Name: res/drawable-xxxhdpi-v4/ic_textsms_grey_32dp.png SHA1-Digest: wrVuGOcGiNV6OEAJHeLccFCrPuo= Name: res/drawable-xxhdpi-v4/list_focused_holo.9.png SHA1-Digest: FsvLP65iWVfEfIkCPXw4wimwY7M= Name: res/drawable-v21/abc_action_bar_item_background_material.xml SHA1-Digest: VikGrClarpkvTVwTS9DEpzyZFsI= Name: res/drawable-hdpi-v4/ic_arrow_forward_dark.png SHA1-Digest: 1nsgbxW3dt92O/zOyIR6fu/oAuE= Name: res/drawable-xxhdpi-v4/ic_arrow_forward_dark.png SHA1-Digest: SBng7xmSEAoXdcYL69mZuFcTPGY= Name: res/drawable-mdpi-v4/ic_attach_grey600_24dp.png SHA1-Digest: Y2/Pddk+40XsYIjXZgcBpyy2rZ0= Name: res/drawable-xxhdpi-v4/abc_ic_menu_selectall_mtrl_alpha.png SHA1-Digest: K1fb6Q4Ss1JZ+SleO0yJcwwYiRw= Name: res/menu/conversation_list_batch_unarchive.xml SHA1-Digest: SzOPIvPnn6JkS5tSou5ug6wsbcM= Name: res/layout/share_list_item_view.xml SHA1-Digest: 3AXSzFXHJv5n5OHUOFJHT8zp6hY= Name: META-INF/services/com.fasterxml.jackson.core.ObjectCodec SHA1-Digest: mECZ0InRcm6Sm6/P0dIQdmb5YtU= Name: res/drawable-xxhdpi-v4/ic_emoji_objects_activated_dark.png SHA1-Digest: a3H9kAQunORai9e7vsG5YLx4SSM= Name: res/drawable-xxxhdpi-v4/abc_ic_star_black_16dp.png SHA1-Digest: otncOZG21mw8ew/aFY/F4swt8TY= Name: res/drawable-hdpi-v4/ic_block_grey600_18dp.png SHA1-Digest: f7/aPVltrHbzIob5ZeThe5Gyzy4= Name: res/drawable-hdpi-v4/ic_refresh_white_24dp.png SHA1-Digest: JpHXJPqpDRr/RGu10JNw8PhDSQg= Name: res/drawable-xxhdpi-v4/ic_emoji_recents_normal_light.png SHA1-Digest: lD1pqxqDa0jPpEhYDLAsAXCftEU= Name: res/drawable-mdpi-v4/ic_photo_library_white_24dp.png SHA1-Digest: PYJmFGp8A2W69vJlZFZgRfvMp+M= Name: res/drawable-mdpi-v4/ic_action_warning_red.png SHA1-Digest: RjBwTELk56fDdub3UY9Udsc11No= Name: res/layout/conversation_item_sent_audio.xml SHA1-Digest: Lm4pT7mpM/AbEZi6RcSECga58s0= Name: res/drawable-xhdpi-v4/switch_thumb_activated_holo_light.9.png SHA1-Digest: W+Hupcm4+5Vmhoa+hMuaWAPbj9Y= Name: res/color-v23/abc_color_highlight_material.xml SHA1-Digest: AZcOKzrt8RFgMk7A8l3oYy0Zs8E= Name: res/drawable-mdpi-v4/ic_image_dark.png SHA1-Digest: tl9E+GRY38WjmIIqa5mfi5g/8gQ= Name: res/drawable-mdpi-v4/ic_message_gray.png SHA1-Digest: RAKiyIri5FnSjCa42A5wv+2fyoM= Name: res/xml/preferences_advanced.xml SHA1-Digest: aVAKjgCzKsMgjz7lTmTCIRgngeQ= Name: res/drawable-xxhdpi-v4/abc_ic_menu_paste_mtrl_am_alpha.png SHA1-Digest: ZqCBR70J+G8APLB6odEE4sbBMrY= Name: res/drawable-ldrtl-hdpi-v4/ic_send_white_24dp.png SHA1-Digest: uansiOchl/+vx7xiZ3nIiMiGCQk= Name: res/drawable-xxhdpi-v4/ic_attach_grey600_24dp.png SHA1-Digest: o55tAgatw4R2/OT1keYTGzj5Uq0= Name: res/layout-v17/conversation_list_item_view.xml SHA1-Digest: klXZl5scbw2zTdPmiNoDnxd4Ei0= Name: res/layout-v16/design_bottom_sheet_dialog.xml SHA1-Digest: 1rIpLJL0aeA/GPy2COzl5qHBWXk= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_995 SHA1-Digest: qCXtFZpw6cj0RMgs3HecypVQnr4= Name: res/drawable-v11/emoji_category_recent_light.xml SHA1-Digest: oPOiG2+0o/JkT7flAFeyAHvaMRg= Name: res/drawable-xxhdpi-v4/ic_message_black.png SHA1-Digest: NuI7D3PpQauURg/C+kxR7T3VtG4= Name: res/drawable/notification_tile_bg.xml SHA1-Digest: LgSTFvI2CxOfbLCHJppJbfr7rxM= Name: res/menu/conversation_secure_sms.xml SHA1-Digest: Umly1//KqmlELY6mwG2+4bTMi78= Name: res/drawable-xxhdpi-v4/lockscreen_watermark_dark.png SHA1-Digest: nyEXs/BKk4Ioez2E62mpWxZ+B6U= Name: res/drawable-hdpi-v4/switch_thumb_holo_light_v2.9.png SHA1-Digest: KtN2rASYoM9JbiYC5rZ+EHNeOWo= Name: res/drawable-xxhdpi-v4/abc_list_selector_disabled_holo_light.9.p ng SHA1-Digest: iN/uNjBfhVbAIr76ujTy7rKk9Iw= Name: res/layout/time_zone_item.xml SHA1-Digest: YlBjC538EjDtp9P8TjEDmFrDQAE= Name: res/layout-v17/import_export_fragment.xml SHA1-Digest: hQ8M5oAwocq4Gs0f+qnxXP80mBY= Name: res/layout-v17/abc_alert_dialog_title_material.xml SHA1-Digest: R57u/fXK5HZURzoutFnsLdSlH5g= Name: res/drawable-xhdpi-v4/textfield_default_holo_light.9.png SHA1-Digest: DuXFeUGOvd3j97HhEpwhlm8QBrg= Name: res/anim/design_bottom_sheet_slide_in.xml SHA1-Digest: JZvF3dH3kK4CROiDGCiyzk0bcCI= Name: res/drawable-mdpi-v4/import_database.png SHA1-Digest: fmXUj235S97wYR7qTHYpjQq9fbE= Name: res/drawable-xhdpi-v4/ic_image_dark.png SHA1-Digest: Wc1oo+kvKKtXAmMpJm8cPMFfXdY= Name: res/layout-v13/conversation_item_last_seen.xml SHA1-Digest: nVh5GMSO8uG5b0Ff3hCCIwcZBrA= Name: res/drawable-xxhdpi-v4/ic_emoji_people_normal_light.png SHA1-Digest: srCBZKoPt9Jaqa8vWWUqk2sRnfw= Name: res/drawable/play_icon.xml SHA1-Digest: lkBA8RCo8EPDUO2fBtG5BPQmAjI= Name: res/animator/scale_with_alpha.xml SHA1-Digest: tn55l/2e75ToW4LXM0LeHHxAjTo= Name: res/drawable-mdpi-v4/abc_btn_check_to_on_mtrl_000.png SHA1-Digest: 8Sb/L5pJ5dP5LYtTMluOvUh3sug= Name: res/drawable-hdpi-v4/ic_emoji_nature_activated_dark.png SHA1-Digest: x9M5xUjmYWNWSCQWFLQYHUuuEbM= Name: res/drawable-v11/abc_textfield_search_material.xml SHA1-Digest: Qps1rIzG6yKql3AjAF66l6BFKZ4= Name: res/drawable-xxhdpi-v4/abc_switch_track_mtrl_alpha.9.png SHA1-Digest: IgT0lCbG3uY9vQQnsJCrHog+mlg= Name: res/drawable/done_background_color.xml SHA1-Digest: 7ueXFtM7hTTfYaxhY/Wk2LkLW9Y= Name: res/layout/conversation_item_update.xml SHA1-Digest: yICdPauTzp4uWodLV+0ThZ02PLM= Name: res/drawable-hdpi-v4/ic_clear_search_holo_light.png SHA1-Digest: GappRCZ2yjTCkyb77wbsfrfr2mw= Name: res/layout-v16/radial_time_header_label.xml SHA1-Digest: WLRzqx7Uv9ULMutleCP5/vCzpT8= Name: res/drawable/emoji_category_emoticons_light.xml SHA1-Digest: 2FAU6vv7sPGDcgJK8ssIbr7cbTo= Name: res/anim/abc_slide_in_top.xml SHA1-Digest: YBdDQbyB2IFfhjwKI6NSPOXqz7g= Name: res/drawable-xhdpi-v4/ic_menu_search_holo_light.png SHA1-Digest: vZ6F2Jg1C+TGavPO7lrCWLFzJhk= Name: res/drawable-xhdpi-v11/icon_notification.png SHA1-Digest: LCqhXT3KEiWE2VoQR5IZnnSuP00= Name: res/drawable-xxhdpi-v4/ic_emoji_flags_activated_dark.png SHA1-Digest: FF6h02gP05ugJ46mQGGdoUQTpbU= Name: res/drawable-xxhdpi-v4/ic_save_white_24dp.png SHA1-Digest: sAK0BTkETpylaJTMYHVQPsJxYvM= Name: res/anim/animation_toggle_in.xml SHA1-Digest: +tj+Zh9Sc3CL9SYyjJU2Itw9c70= Name: res/drawable-xhdpi-v4/ic_emoji_objects_activated_dark.png SHA1-Digest: Vb/8P05ydTz2tlnWlBhqCxHIBvc= Name: res/drawable-v11/emoji_category_people_dark.xml SHA1-Digest: DrKa3ghgfZjL+KHGdcveooLEhNs= Name: res/drawable/edit_text_holo_light.xml SHA1-Digest: zTZ3rXIUm6a45VyuKxhROL/d2b8= Name: res/color/abc_tint_edittext.xml SHA1-Digest: 4uJWj3RC+LNAAjywKebgsX5EjHo= Name: res/drawable-xxhdpi-v4/spinner_focused_holo_light.9.png SHA1-Digest: 7FDASvJfc8AEzERJoNcGwpNM0As= Name: res/drawable-mdpi-v4/ic_recurrence_bubble_outline_disabled.png SHA1-Digest: zRSUvTMpuUG8fSqRq7C4tY+Bt2w= Name: res/drawable-xhdpi-v4/ic_check_white_24dp.png SHA1-Digest: QvCyJjo+HtNwdQ1nKZjy8iqqicA= Name: res/drawable-mdpi-v4/ic_emoji_flags_normal_light.png SHA1-Digest: xxZCgGAanMLE7VRtyfrK/RS3zT0= Name: res/xml-v12/badge_widget_provider.xml SHA1-Digest: m0ulyiJ4lgd6vIhg6VXxujTEa1M= Name: res/drawable-xxhdpi-v4/quick_shutter_button.png SHA1-Digest: KvyyenumTdpPrG8D4bMe2acXvig= Name: res/drawable-xhdpi-v4/spinner_default_holo_light.9.png SHA1-Digest: Yv8DQV5iCOq6B/hrpnjziMEY1oE= Name: res/drawable-hdpi-v4/abc_ic_star_half_black_36dp.png SHA1-Digest: q5BP6iz9no2ZdX9wgjUfIjqk8OY= Name: res/animator-v11/bottom_pause_to_play_animation.xml SHA1-Digest: oFZDtNQqOffhAkrXPBaDgRgyJt0= Name: res/drawable-xxhdpi-v4/ic_content_copy_dark.png SHA1-Digest: hhn2223i5kzrfsNUn6lURO64Jm4= Name: res/drawable-mdpi-v4/ic_arrow_forward_light.png SHA1-Digest: iaicJjzpqMa6uswTfQLd6ewu4KM= Name: res/layout/message_details_activity.xml SHA1-Digest: rCNh6NSBINEtZvsZM7XZ6ovpoUQ= Name: res/drawable/abc_ic_voice_search_api_material.xml SHA1-Digest: AnbktjACLylEEl0ccn+3np57M8c= Name: res/drawable-mdpi-v4/ic_create_white_24dp.png SHA1-Digest: SzyTWAmlxMrH8hL+e2A2/qyJYs0= Name: res/drawable-xhdpi-v4/ic_lock_black_18dp.png SHA1-Digest: N7y019Qm4MTsPDJvUf6xpcjmLOg= Name: res/drawable/key_background_dark.xml SHA1-Digest: vjYs0zd8wTeSSImwhd7SzCMvt3E= Name: res/layout/design_text_input_password_icon.xml SHA1-Digest: 8D2alFuhVd6gqYJyh/7GJ+MLiP0= Name: res/color-v23/abc_tint_default.xml SHA1-Digest: QmvGaAvI4emOb0xLdYeq9wlWw6o= Name: res/drawable/abc_btn_colored_material.xml SHA1-Digest: c1kBk3kYH1Q2Zf0o2yN8Btg8MFI= Name: res/drawable-xhdpi-v4/ic_keyboard_white_24dp.png SHA1-Digest: QmlBOgi9X59yQWRT5FwKxyBl9X8= Name: res/drawable-xhdpi-v4/ic_reply.png SHA1-Digest: E6A43gDKrTDEXYlV747+gpcFSZ0= Name: res/drawable-mdpi-v4/ic_reply_white_36dp.png SHA1-Digest: BeQkwEyqIS7XzKmiVB4cEpfkII4= Name: res/drawable-xxxhdpi-v4/ic_photo_camera_light.png SHA1-Digest: P+u4/QQtC7tIBQVcMn1wJJXHt6Y= Name: res/drawable-xhdpi-v4/abc_ic_star_black_48dp.png SHA1-Digest: pUh1yzyRb6c3D0mL7cI4wKExeTI= Name: res/drawable-mdpi-v4/ic_movie_creation_light.png SHA1-Digest: ll+Zf8EyVcEVp0tgfNkBYbp6TnI= Name: res/layout/hms_picker_dialog.xml SHA1-Digest: NTCwll4GJmpbJ6yInQY9S3eixuQ= Name: res/drawable-xhdpi-v4/check.png SHA1-Digest: dQfE3OFyk+3YoFOYwn+y+t8e7zw= Name: res/drawable-hdpi-v4/abc_cab_background_top_mtrl_alpha.9.png SHA1-Digest: J10MbRypNxo+JeKfGf61OMkWgdY= Name: res/drawable-hdpi-v4/abc_ic_star_half_black_48dp.png SHA1-Digest: xgnROefed1vgMaxaqCgtRMAIU/Q= Name: res/drawable-mdpi-v4/ic_keyboard_grey600_24dp.png SHA1-Digest: 0C4Saeb25DYu43+FGC1Z9DnkBIA= Name: res/layout/keyboard.xml SHA1-Digest: K6E6mKC8m2G6XyF1toWTaLmQB9s= Name: res/drawable/key_background_light.xml SHA1-Digest: 2ArVCjLjr02aFbyRYSeHh1WEUrE= Name: res/drawable-hdpi-v4/check.png SHA1-Digest: GYF1t9VttL+se1d6Il+emojcdXo= Name: res/layout/message_details_header.xml SHA1-Digest: XlVTimKNxmd+tFrX1/7ddxbVd9A= Name: res/drawable/reminder_background.xml SHA1-Digest: O2XBirGQxJDYU6A/4O3mZKlWr0g= Name: res/drawable-xxhdpi-v4/last_seen_background.9.png SHA1-Digest: AcZa88WjmAgL9QcaLEep+IS+fDw= Name: res/drawable-xxhdpi-v4/abc_ic_star_black_48dp.png SHA1-Digest: P/TePusgUK0jTzJbBXwUqj2ymIs= Name: res/drawable-xhdpi-v4/list_longpressed_holo_light.9.png SHA1-Digest: DbbsJ/A8Zk/Z2Q8z6jeVTrNtcKw= Name: res/drawable-hdpi-v4/ic_warning_light.png SHA1-Digest: bWchqS5mxrUz0jEXqPmNSp2dQyE= Name: res/color-v23/abc_btn_colored_text_material.xml SHA1-Digest: iPtKeCtxBDsPlPY18AN/Fz+9bAA= Name: res/drawable-mdpi-v4/alert.png SHA1-Digest: eaLxnhQSh/qDiCsxeefWPdSrua4= Name: res/drawable-hdpi-v4/ic_badge_24dp.png SHA1-Digest: F5QVt4jyFy9QAu6iHeG9kr+LGNs= Name: res/drawable/badge_drawable.xml SHA1-Digest: T2XKzv4ZjP7gDWfKmITyjP1H/gg= Name: res/drawable-v21/avd_hide_password_3.xml SHA1-Digest: G4VEl1xnzQqDzGNNopnaKto5JNc= Name: res/drawable-xhdpi-v4/notification_bg_low_pressed.9.png SHA1-Digest: 9MYmMKRnfwttaoRGc1WDg0jzgyY= Name: res/drawable-xxhdpi-v4/ic_emoji_people_activated_light.png SHA1-Digest: JmwHDfqoh/u3AajOzeVn+cJbhEY= Name: res/layout-v11/notification_template_custom_big.xml SHA1-Digest: IHHhQmMO1W+0BJYbRtm3HlkLGTM= Name: res/color-v23/abc_tint_switch_track.xml SHA1-Digest: io40yf4syWIZa4sAMqqnmDJ5ruw= Name: res/drawable-hdpi-v4/ic_play_circle_fill_white_48dp.png SHA1-Digest: lJitUpTdEPX/w2HQe4ET4fM55p4= Name: res/layout-v16/selected_recipient_list_item.xml SHA1-Digest: IoTIQcdfhF5yj/bZbVuL4GTD1As= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_506 SHA1-Digest: fSwyg4KxEaIctkOMUXXbP0UnACc= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_505 SHA1-Digest: dkhqE6jk0X2rJBCd5h+xJ2vZwls= Name: res/drawable-xxxhdpi-v4/abc_text_select_handle_left_mtrl_dark.pn g SHA1-Digest: FavPjuk6olEZey6sIq7rywmBBwY= Name: res/layout/selected_recipient_list_item.xml SHA1-Digest: duqiHkirDUOdtYcYOK4BSsgiKvk= Name: res/drawable-ldrtl-hdpi-v17/abc_spinner_mtrl_am_alpha.9.png SHA1-Digest: 2gdfs4MdNrmZ5fPzRYQKwf3z8nA= Name: res/drawable-mdpi-v4/ic_video_dark.png SHA1-Digest: xgX3HdiZ1/FlP1EZbUATFRtezMA= Name: res/layout/recycler_view_fast_scroller.xml SHA1-Digest: YJYkRqf9kmJnZ6ioHAYG/PoGmxs= Name: res/drawable-xhdpi-v4/ic_archive_white_24dp.png SHA1-Digest: dv+8iSp/u9VOCKmfF/uz7ojqMLU= Name: res/drawable-xhdpi-v4/import_database.png SHA1-Digest: KI04q70EXc7fJQgqbWFJ2KxNYsg= Name: res/menu/group_create.xml SHA1-Digest: /ecK7ty1S1TQH3znAj++GOgp7gs= Name: res/drawable-xhdpi-v4/ic_emoji_places_activated_dark.png SHA1-Digest: EjXH3Q1hCvFRWrwCYGmB5Fz54aM= Name: res/drawable-xhdpi-v4/ic_menu_remove_holo_light.png SHA1-Digest: SygzBPctWRFH6LDfo+w+DP/k2m0= Name: res/layout/media_preview_activity.xml SHA1-Digest: y9gWsqCJFG9jBKiJKU9APtvjnT8= Name: res/drawable-xxhdpi-v4/ic_emoji_recents_activated_light.png SHA1-Digest: T77IRcTGYBtfJ8Gd0tQKqhw0Gks= Name: res/color/abc_background_cache_hint_selector_material_light.xml SHA1-Digest: 6zQV9p9NddLltjdGn1qBYsiO04o= Name: assets/fonts/AndroidClockMono-Thin.ttf SHA1-Digest: nDLU3MtBsUBWd/Jq7PrvujP5/YE= Name: res/drawable-v11/emoji_category_objects_dark.xml SHA1-Digest: iBMvAA5/+zPuG1HSUhaIO4kjoBI= Name: res/drawable/abc_seekbar_thumb_material.xml SHA1-Digest: R+zfNUVLkXYZ8GH32A2aK443lBQ= Name: res/anim/abc_shrink_fade_out_from_bottom.xml SHA1-Digest: tUIF7X/jI8K8Q3PAJpeZVS4JPi8= Name: res/drawable-mdpi-v4/ic_audio_light.png SHA1-Digest: TRsHE+zwfiIvhq+iybeYWtbSf8M= Name: res/drawable-xxhdpi-v4/ic_emoji_recents_activated_dark.png SHA1-Digest: ritPDDx4JIboLAAoTEz26lD0vfk= Name: res/drawable-sw600dp-mdpi-v13/ic_backspace_disabled_dark.png SHA1-Digest: bBJa6fMJoP87GQtakbAV7tKOdHw= Name: res/xml/preferences_manual_mms.xml SHA1-Digest: DHV/b9/XvRlc1RH8WUMy7A0M3Mw= Name: res/drawable-xxhdpi-v4/ic_volume_off_grey600_18dp.png SHA1-Digest: odmgY1yq1ymCKnYPkGL9f0NabqA= Name: res/drawable-xxhdpi-v4/abc_list_pressed_holo_light.9.png SHA1-Digest: I2JJHnuKjt9jtF8C76fBatEScaE= Name: res/drawable-xhdpi-v4/ic_delete_white_24dp.png SHA1-Digest: zUHGzuXiGu6zW1HkGDFXAZcRaEc= Name: res/drawable/abc_cab_background_top_material.xml SHA1-Digest: gLHAZPEH/WYlWCNIPwRV1Ypbx70= Name: res/drawable-xxxhdpi-v4/abc_btn_check_to_on_mtrl_015.png SHA1-Digest: 0OG2GgwzcQVFzj+BwQ+1UYki6vU= Name: res/drawable-mdpi-v4/ic_attach_white_24dp.png SHA1-Digest: wvJ0dZjo9WO3IftZ1u1pDiLAYHo= Name: res/drawable-xhdpi-v4/dialog_full_holo_dark.9.png SHA1-Digest: Xv7q5ITHzmlsgg58AkKDmIAOIx8= Name: res/drawable-hdpi-v4/ic_lock_white_24dp.png SHA1-Digest: b/iJ/j70juEO115QXcuRbfob2vs= Name: res/drawable-hdpi-v4/ic_volume_up_dark.png SHA1-Digest: xrgQPS8hvvANCRdqfp0oeLL62kU= Name: res/drawable-xhdpi-v4/ic_message_gray.png SHA1-Digest: cipeLSWhQ3E8CaS3TkeT2+szopE= Name: res/layout/outgoing_sms_preference.xml SHA1-Digest: swLec1DtO3WJtnyXl/vJ0tZJfu8= Name: res/layout/number_picker_view.xml SHA1-Digest: ahHMCTOCOLOVgvMwVDE2rVvcuRY= Name: res/layout-v17/design_layout_snackbar_include.xml SHA1-Digest: hAKpqrRkn4zttzsruLPeWfbgUEo= Name: res/drawable-xhdpi-v4/ic_lock_light.png SHA1-Digest: zUHx9YJDrvMXb3UbuXPp4CH+PrQ= Name: res/drawable-xxhdpi-v4/abc_menu_hardkey_panel_mtrl_mult.9.png SHA1-Digest: kjQh/adr8XS+S465gr9pzFibMnM= Name: res/color/switch_thumb_material_dark.xml SHA1-Digest: f3zgtqci6QdPmbytbKTAcztzers= Name: res/drawable-xxhdpi-v4/ic_visibility_off_white_24dp.png SHA1-Digest: qHNgChQ6M9SFZjVLvn1YAf3YOY8= Name: res/drawable-mdpi-v4/ic_push_registration_reminder.png SHA1-Digest: kPTXYuPt5ht+S/b7il4MyfHvfHU= Name: res/drawable-mdpi-v4/dialog_full_holo_light.9.png SHA1-Digest: r4KUt0XX5nLAF9pkvj1Rfe1HuVA= Name: res/layout-sw600dp-v13/design_layout_snackbar.xml SHA1-Digest: aDZ/Y13hRjK2ExLFkIFrqs2EcgQ= Name: res/drawable/actionbar_icon.xml SHA1-Digest: 4ggDqvnA//4/gUTrCi8SAWhqAUs= Name: res/drawable-mdpi-v4/abc_scrubber_control_to_pressed_mtrl_000.pn g SHA1-Digest: 1Sq+VOFFXYaggLRmUPg5CpP+b1M= Name: res/layout/abc_list_menu_item_layout.xml SHA1-Digest: LdonLq4y6EOPd12hm0st2FQeXp8= Name: res/drawable-mdpi-v4/ic_movie_creation_dark.png SHA1-Digest: +Jgq6bNeUNGTAc4VvdAQU7Z3dZ4= Name: res/drawable-v21/abc_edit_text_material.xml SHA1-Digest: QmBeXDdf25h+c59CK063xKJ8JdI= Name: res/drawable-mdpi-v9/icon_notification.png SHA1-Digest: d4hA4WTP2uFIyWtcRSmOiBlTFn8= Name: res/drawable-xxhdpi-v4/ic_refresh_white_24dp.png SHA1-Digest: H/LwcWWxX1VJzYfG76baNG9j7uY= Name: res/drawable/progress_background.xml SHA1-Digest: zK7FJQT3jdkLOJAs5Y7jL9uLgX0= Name: res/drawable-xxhdpi-v4/list_pressed_holo_light.9.png SHA1-Digest: I2JJHnuKjt9jtF8C76fBatEScaE= Name: res/drawable-mdpi-v4/textfield_disabled_focused_holo_light.9.png SHA1-Digest: j/bR5FhKXM3nZJ0PKlO3uo5Q9iI= Name: res/drawable-xhdpi-v4/abc_textfield_search_activated_mtrl_alpha. 9.png SHA1-Digest: 3u3fLmehvZBhy/5ikwcph94VGWM= Name: res/drawable-xhdpi-v4/abc_cab_background_top_mtrl_alpha.9.png SHA1-Digest: RwOTCkvoy8JfKjFQZXnNiOHbxpQ= Name: res/xml/preferences.xml SHA1-Digest: DiuBw5gZWCbnu9P0aKZOXaiDtRM= Name: res/anim/abc_slide_out_bottom.xml SHA1-Digest: GcBbKJcMWdQ42ssCQexb9kGH6us= Name: res/drawable-mdpi-v4/spinner_disabled_holo_light.9.png SHA1-Digest: VDYagFVVDGkZFeYeouIICQC7/C0= Name: res/drawable/emoji_category_places_light.xml SHA1-Digest: wtp4eWxpCWzsWD/8Yle2TAo261U= Name: res/menu/conversation_group_options.xml SHA1-Digest: mKBEDK9co4Csvl1MFy1y8tETXTo= Name: res/drawable-xxxhdpi-v4/abc_text_select_handle_right_mtrl_dark.p ng SHA1-Digest: 1cl/IsP/z8hq0fSoUb3Z29rLRVM= Name: res/drawable-xhdpi-v4/ic_emoji_nature_normal_dark.png SHA1-Digest: qYlz+XXb7tPPlmwbdqrJ/RYyGYQ= Name: res/drawable-ldrtl-xhdpi-v17/abc_ic_menu_cut_mtrl_alpha.png SHA1-Digest: +/cT3+0N8I+XSw0FPP5O3x2f5g4= Name: res/drawable-xhdpi-v4/design_ic_visibility_off.png SHA1-Digest: 0OVNK8kFZq2fgUG4Kc9y+NUoIyk= Name: res/menu/share.xml SHA1-Digest: 7RSgEelZF3uCMzV2wWHWuVCGtto= Name: res/drawable-mdpi-v4/spinner_focused_holo_light.9.png SHA1-Digest: V9tjL1cMxuMvNGabgo8kTf8q/oQ= Name: res/drawable-mdpi-v4/ic_unarchive_white_24dp.png SHA1-Digest: AnSJIPKgb/L7q2CsDFn2F/9JzWw= Name: res/drawable-xhdpi-v4/ic_send_white_24dp.png SHA1-Digest: UcvZZ00OMZ5tx1dwWXlgGHwkyPQ= Name: res/drawable-mdpi-v4/abc_spinner_mtrl_am_alpha.9.png SHA1-Digest: sc2f/SwoJ8sOO1ziZCDS+WfNDhI= Name: res/drawable-hdpi-v4/abc_ic_menu_paste_mtrl_am_alpha.png SHA1-Digest: KcAKbOCiTO5UMcKfzx/+vncLmXg= Name: res/animator/rotate_90_animation.xml SHA1-Digest: AhVLtjcJdoeXGcim/ix1HCO/gQw= Name: res/drawable-xxhdpi-v4/ic_forward_white_24dp.png SHA1-Digest: INkdmomUul9bP5BalXgMuqp+Fi0= Name: res/drawable-xxhdpi-v4/ic_notifications_black.png SHA1-Digest: DthaV+AqOozisZR0tlgc31EK20g= Name: res/layout/message_recipient_list_item.xml SHA1-Digest: DNfLiAGMM42qJiUBQ6ptbeD643s= Name: res/drawable/abc_spinner_textfield_background_material.xml SHA1-Digest: k4PYrKN6q/ExQP5RdV8dDVaO8Js= Name: res/drawable-mdpi-v4/ic_pause_circle_fill_white_48dp.png SHA1-Digest: GXf0+NjE+Jl37K5VWpmyDVcX4gc= Name: res/layout/single_recipient_panel.xml SHA1-Digest: Ju3oOig1mDOZq7HiJTjNDpvCc5w= Name: res/drawable-mdpi-v4/abc_ic_star_black_48dp.png SHA1-Digest: LYh5wO7mcgtiq4fyzNQBKw1XFk8= Name: res/layout/select_dialog_multichoice_material.xml SHA1-Digest: i/P6y+zKXgMOuFmhHqYzSjjnP9A= Name: res/drawable-xxhdpi-v4/ic_warning_light.png SHA1-Digest: RANpqRT7jrCv8AUuDx6Mc9LMvvs= Name: META-INF/buildserverid SHA1-Digest: PFAoK3vAw7CF29BtzhTdrgabIU8= Name: res/layout-v11/notification_template_big_media.xml SHA1-Digest: htwU5600qsSzOm2ExqJAffHmYEE= Name: res/drawable-mdpi-v4/abc_btn_radio_to_on_mtrl_015.png SHA1-Digest: xc9EUi8JbA506uG62boWpLo9DB8= Name: res/drawable-mdpi-v4/ic_forward_white_24dp.png SHA1-Digest: 7GEGOC+RhHCBHl4Ao8nOHtZ46Cs= Name: res/drawable/conversation_item_background.xml SHA1-Digest: EdHxKZVagGX+RrPmbiPZVYpFxZE= Name: res/drawable-mdpi-v4/abc_textfield_search_activated_mtrl_alpha.9 .png SHA1-Digest: YsHF4VJihRr1oEZ76cu42zsHjek= Name: res/color/abc_background_cache_hint_selector_material_dark.xml SHA1-Digest: JW1Wg9XMsM+FF68MpbJdFc2Yh8U= Name: res/drawable-hdpi-v4/ic_delete_white_24dp.png SHA1-Digest: lRuZfsQ7T+0nZmYvoYmmRVZJKcA= Name: res/anim-v21/design_bottom_sheet_slide_out.xml SHA1-Digest: AGi5g5tvoZK7WNsIL0yZE9rdwnw= Name: res/layout-w270dp-h560dp-v13/calendar_date_picker_dialog.xml SHA1-Digest: XJB0mJxqi+LHi8sY4BNCBVjCrKU= Name: res/layout-sw600dp-land-v13/calendar_date_picker_dialog.xml SHA1-Digest: iqpjA1eAjjWXIOu09vGX/wjNjVE= Name: res/layout/design_navigation_item.xml SHA1-Digest: ZumpzXxJd7SIBf8+JK3lrCjw+O4= Name: res/drawable-xhdpi-v4/ic_contact_picture.png SHA1-Digest: EV8R3SyK8TC2jq4eFsgX/nOEkgw= Name: res/drawable-xhdpi-v4/ic_push_gray.png SHA1-Digest: 6p2svB1tHSA2wBs/tIp59IcmQg8= Name: res/drawable-hdpi-v4/ic_emoji_flags_activated_light.png SHA1-Digest: X8a9+THL64lmtmwQq3YafciiCQ0= Name: res/layout/notification_action_tombstone.xml SHA1-Digest: 9Liuim7N5gRllPpEjgChbQINE+w= Name: res/drawable-hdpi-v4/abc_textfield_activated_mtrl_alpha.9.png SHA1-Digest: H53d9SOkoWezKsVvcOALraOdTFo= Name: res/drawable-xhdpi-v4/ic_group_photo.png SHA1-Digest: ELEua2TBuh/CXBT5dHekx5lpLoQ= Name: res/drawable-xxhdpi-v4/fab_shadow.png SHA1-Digest: rvLg9lLjuCblbuAMGXXeG6EXNoA= Name: res/drawable-xhdpi-v4/abc_spinner_mtrl_am_alpha.9.png SHA1-Digest: EWsVhp6Fuj87sih/RyDRPr/vOxY= Name: res/drawable-xhdpi-v4/ic_visibility_off_white_24dp.png SHA1-Digest: PtWxrz3Gu4HIRGshwwkTOzkL0WU= Name: res/drawable-xxhdpi-v4/abc_list_selector_disabled_holo_dark.9.pn g SHA1-Digest: vq3AaVX19jU0c0v1npZsAQOh+CI= Name: res/drawable-hdpi-v4/ic_archive_white_24dp.png SHA1-Digest: isijXsHBVMlYiGaq2y3vFUJm3aM= Name: res/drawable-xhdpi-v4/ic_backspace_disabled_light.png SHA1-Digest: zKT/1vK3dByF8W/4TqDRB3P//8o= Name: res/layout/select_dialog_item_material.xml SHA1-Digest: YxkfyKn7F7LCilMhwA+JNDz8/LA= Name: res/layout/view_identity_activity.xml SHA1-Digest: sdfI5G2rE7lANKYrX52VPeV7uyA= Name: res/layout/design_navigation_item_subheader.xml SHA1-Digest: Fr3vjBNi2dHk1OoUaEeu1CAHHRg= Name: res/layout-v21/notification_action_tombstone.xml SHA1-Digest: gZ+1Ci2W9lg2B30peGxcdBYja8I= Name: res/layout/share_intent_list.xml SHA1-Digest: fd3NhPVV0DCVVNLVlfNEQk+I6mU= Name: res/drawable-mdpi-v4/fab_shadow_mini.png SHA1-Digest: ExMGDh75RUwD0Zl6Z5X6HYbRDuM= Name: res/drawable-hdpi-v4/icon.png SHA1-Digest: 7ooHofxVnyZj+EI2ktnjYQZw4O0= Name: res/drawable-hdpi-v4/switch_thumb_pressed_holo_light.9.png SHA1-Digest: UW8twZMlDStRuqjFewmFD3itfrQ= Name: res/drawable-xxxhdpi-v4/ic_archive_white_36dp.png SHA1-Digest: wBx4qyXr83v9MPqX3AU262pF2cM= Name: res/drawable-xxhdpi-v4/ic_emoji_places_normal_dark.png SHA1-Digest: HBbXwGgsDb284tHFuhyGbhHRpSw= Name: res/drawable-xxxhdpi-v4/ic_save_all_white_24dp.png SHA1-Digest: XmJstR6YFMPz6jfsWh8L4Sy0Rr8= Name: res/drawable-xxhdpi-v4/ic_delete_gray.png SHA1-Digest: hMQHqOg5ktgmQzEBHuIRG+MGyaU= Name: res/drawable-xhdpi-v4/abc_menu_hardkey_panel_mtrl_mult.9.png SHA1-Digest: Bii9JPddV76dH8va+pLHDS/1H2I= Name: res/drawable-hdpi-v4/ic_emoji_emoticons_activated_light.png SHA1-Digest: lC5K0zYxqjZPLfkbAMaA5JlvzZ8= Name: res/drawable-mdpi-v4/abc_textfield_search_default_mtrl_alpha.9.p ng SHA1-Digest: D6dilO+UMcglambujyMOhNbLZuY= Name: res/drawable-xxhdpi-v4/ic_textsms_black_32dp.png SHA1-Digest: KQFfNzbixlIhyj/W1wnoDgoBFLo= Name: res/drawable-hdpi-v4/abc_ic_menu_copy_mtrl_am_alpha.png SHA1-Digest: MMW5ShwB1m9oRvGdlbR//t0h77U= Name: res/layout/group_create_activity.xml SHA1-Digest: le3p6Yw9tTaS5+N5l8NAXuSdngU= Name: res/drawable/emoji_category_symbol_dark.xml SHA1-Digest: Ju9NiYprgQLlxTm5XBhkYezLm/g= Name: res/drawable-xxhdpi-v4/ic_volume_off_white_18dp.png SHA1-Digest: JqvMHVRMiibxNcOhkh2oZIeF7NU= Name: res/drawable-hdpi-v4/ic_delete_gray.png SHA1-Digest: wxa+vcJFVu6N+ITAH1/7YNK2Ua4= Name: org/spongycastle/x509/CertPathReviewerMessages.properties SHA1-Digest: OGIe7v0JVQeuizExOPQ4Cf/+RXo= Name: res/drawable-mdpi-v4/ic_emoji_people_activated_light.png SHA1-Digest: pzhoFuemKY5gUDVDDQ0FAnHjdO4= Name: res/drawable-xhdpi-v4/actionbar_icon_holo_dark.png SHA1-Digest: 1Psmu0RM/nHRmEKkAhQ2EWpb3FY= Name: res/drawable-xhdpi-v4/abc_btn_check_to_on_mtrl_000.png SHA1-Digest: ivpLQ63tfOD0ISnUmDRNp3o0jBk= Name: res/drawable-xhdpi-v4/ic_visibility_off_grey600_24dp.png SHA1-Digest: aeh86VziSMlBPqpA/NXKOMBc3wc= Name: res/drawable/abc_ic_ab_back_material.xml SHA1-Digest: 6SFmoia7mNGpkW+jSqxSP95Szuo= Name: res/layout/design_navigation_menu_item.xml SHA1-Digest: EpleT5uGJY/Oz1oTPFa6A44+pcM= Name: res/drawable-v21/touch_highlight_background.xml SHA1-Digest: 6IadWpveEX8PumPwP847BweJlgg= Name: res/drawable-xxhdpi-v4/abc_text_select_handle_middle_mtrl_light. png SHA1-Digest: ZjoNfwYFY/w1heN9+GIDC4AUjSI= Name: res/drawable-mdpi-v4/abc_list_divider_mtrl_alpha.9.png SHA1-Digest: B+V5QEOwy10ghi7uX5XLTPFJGJs= Name: res/drawable-mdpi-v4/ic_reply.png SHA1-Digest: eKIvQlTj+MqJkkhH83v4XJEf2Cg= Name: res/drawable-xhdpi-v4/ic_emoji_objects_normal_light.png SHA1-Digest: qfh1k5CNGLoFk4UDObAK/Jf26Gc= Name: res/layout-v17/notification_template_media_custom.xml SHA1-Digest: POf37ImxgRTW1tCMpq3uc1uMOnw= Name: res/drawable-xhdpi-v4/ic_emoji_people_activated_dark.png SHA1-Digest: bgGJzgaYmyCW3yKqClSqCOPMdx8= Name: res/animator/bottom_play_to_pause_animation.xml SHA1-Digest: 7f8HiUwoTj84cBIvXQhtx6kFMlc= Name: res/drawable-xhdpi-v4/ic_emoji_places_activated_light.png SHA1-Digest: hKmWMiPG7DNsfcQHCQk/pQUXe9o= Name: res/layout/switch_compat_preference.xml SHA1-Digest: BcoiqEYKt0pTDgHI781bnYowk54= Name: res/drawable-hdpi-v4/abc_list_divider_mtrl_alpha.9.png SHA1-Digest: B+V5QEOwy10ghi7uX5XLTPFJGJs= Name: res/drawable-mdpi-v4/ic_menu_barcode.png SHA1-Digest: d55+P7bEEVaEbTTLH9RpILA30sk= Name: res/drawable-xxhdpi-v4/ic_push_gray.png SHA1-Digest: C0xTCzZJn9RVKjSqm5v2UC8GXmo= Name: assets/backward SHA1-Digest: r/6p7b+IrWfsXOtXuSRa3XRryRU= Name: res/drawable-xhdpi-v4/ic_audio_light.png SHA1-Digest: hZE6NPD9tvuKoyt48zhjv8yn1hA= Name: res/drawable-xhdpi-v4/ic_emoji_recents_normal_light.png SHA1-Digest: xBC9DCGDPMFtthnVidEzhWv1S3U= Name: res/layout/load_more_header.xml SHA1-Digest: HbT14W2VMV1p5/aX+7rMB42clVc= Name: res/drawable-xhdpi-v4/ic_missing_thumbnail_picture.png SHA1-Digest: KTPAovm6fHADFuua0zRb/i7JPBQ= Name: res/layout/abc_action_menu_item_layout.xml SHA1-Digest: OLXyHaAi29c7ywsCifM30HTfwUo= Name: res/drawable/conversation_list_item_unread_background_dark.xml SHA1-Digest: 2QVen9mJrbCui4pWQqhYnxMM0K0= Name: res/drawable-mdpi-v4/switch_bg_focused_holo_light.9.png SHA1-Digest: Zb5ZNlmnSJm17S8X88rrHismQoQ= Name: res/color/done_text_color.xml SHA1-Digest: i33wjub03ftpQpdSxyTxWIGUeew= Name: res/drawable-mdpi-v4/ic_advanced_black.png SHA1-Digest: y3+kEpasbWgXqfiLlAyDjJKQqRs= Name: res/drawable-hdpi-v4/abc_list_longpressed_holo.9.png SHA1-Digest: KQunCQh0E4bP0utgN0cHdQr9OwA= Name: res/layout/splash_screen_activity.xml SHA1-Digest: Lhg0tWz+QYPZtNwv9FYWrzA1hMA= Name: res/drawable-mdpi-v4/ic_app_protection_gray.png SHA1-Digest: 1diK8UP95sCL0e7+1g5/BrWYAc4= Name: res/drawable-xxhdpi-v4/sms_selection_icon.png SHA1-Digest: rPk7FEcQcnWcYTff9OdenlmidgM= Name: res/drawable-hdpi-v4/sent_bubble.9.png SHA1-Digest: JGqPgezZhUUOMdpS7YyeaEXvFW4= Name: res/drawable-mdpi-v4/ic_visibility_off_grey600_24dp.png SHA1-Digest: DlHropSKeKJ9EdIpCyTbBWnaEbo= Name: res/drawable-mdpi-v4/icon_dialog.png SHA1-Digest: PEUseDLpMhB/t/jQ7t/pQBsEvB4= Name: res/drawable-xhdpi-v4/list_pressed_holo_light.9.png SHA1-Digest: 5rSZbdJDOTdM5kJhhIdl8m8briI= Name: res/drawable-xhdpi-v4/ic_unarchive_white_24dp.png SHA1-Digest: s8blAW4vi9yw0uShZLX58NkJGIA= Name: res/layout/timezonepickerview.xml SHA1-Digest: JDj51OUGhcJia+1+hYcELLrgZPg= Name: res/drawable-xhdpi-v4/ic_check_light_disabled.png SHA1-Digest: oHkXjSaaob4YggB6wrPKOwv5e7Y= Name: res/drawable-xhdpi-v4/textfield_focused_holo_light.9.png SHA1-Digest: 9fXYckUA6bXM1wEDQ0rXYeMvIfw= Name: res/layout/color_preference_item.xml SHA1-Digest: 6mrfGRnCs8Ht9w2eadUQow/xnhc= Name: res/layout/transport_selection_list_item.xml SHA1-Digest: RwZyO8tL+GTMtAco6iT7aMDSwtc= Name: res/drawable-hdpi-v4/abc_btn_switch_to_on_mtrl_00001.9.png SHA1-Digest: OGTAGSMNcF0Z/ZC0uBc4qemdptI= Name: res/drawable-mdpi-v4/actionbar_icon_holo_dark.png SHA1-Digest: cqYzvjedowzINhKkhgaEAn/opZE= Name: res/drawable-xhdpi-v4/ic_menu_barcode.png SHA1-Digest: ahhRaU5LjrjteMiTicHEAqpalAw= Name: res/drawable/import_export_item_background_light.xml SHA1-Digest: Bi/t0qJA/KgWChbnN3t3p6wExyg= Name: res/drawable/emoji_category_flags_light.xml SHA1-Digest: V829J6Wxpxf94+asrWt4WSYZhDw= Name: res/drawable-xxhdpi-v4/ic_app_protection_black.png SHA1-Digest: MWTABT4q4vTfDu3fWQmicK+guaw= Name: res/layout/abc_alert_dialog_material.xml SHA1-Digest: ymGYlunu9ido4PijVKjcNyETIGQ= Name: res/color/dialog_text_color_holo_dark.xml SHA1-Digest: mhNkhbYqg2hBKryuU+d73yuTlIA= Name: res/drawable-hdpi-v4/ic_visibility_grey600_24dp.png SHA1-Digest: DyPAobxWgQJCc4ECQRE+Mbh1vC0= Name: res/layout-sw600dp-v13/three_keys_view_leftright.xml SHA1-Digest: tkyYWGtROWaZqUXQEwelz5Aenco= Name: res/anim/abc_popup_enter.xml SHA1-Digest: ZKpMd1TuL9jAkYWPue9RXki708E= Name: res/layout/blocked_contacts_fragment.xml SHA1-Digest: fuRQvQ2rM8IO/18Oa72aBZGsajY= Name: res/drawable-mdpi-v4/abc_tab_indicator_mtrl_alpha.9.png SHA1-Digest: z0xEJNNl6qN3MKa3Uq4y93mF7Cw= Name: res/drawable-hdpi-v4/abc_ic_star_half_black_16dp.png SHA1-Digest: pS2IISWVF11RXQXLyxHF6AODLJQ= Name: res/drawable-xxhdpi-v4/splash_open_padlock.png SHA1-Digest: AyU/qBSGe6ni0/ayORtW1Ba13dQ= Name: res/drawable-xxhdpi-v4/design_ic_visibility.png SHA1-Digest: 364a/+txT+QrBDJZ1GPgI2HwcMk= Name: assets/zone.tab SHA1-Digest: d0US6Zajzyow3w/OX7A+6NT3Oy8= Name: res/drawable-hdpi-v4/notify_panel_notification_icon_bg.png SHA1-Digest: inKyhhyZgO65645KR/OH06l6dAc= Name: res/layout-v16/conversation_list_item_view.xml SHA1-Digest: +V4vOPOUGByJCriRwZWAGAbbbUk= Name: res/layout/notification_template_custom_big.xml SHA1-Digest: zeYI3QMAjdBS9eNvHxgKfQp8pkY= Name: res/layout-sw600dp-v13/calendar_date_picker_dialog.xml SHA1-Digest: XJB0mJxqi+LHi8sY4BNCBVjCrKU= Name: res/drawable-v11/emoji_category_nature_dark.xml SHA1-Digest: APCRNVaaYVwvFd3ETZY/JfKdzKg= Name: res/drawable-mdpi-v4/notification_bg_normal.9.png SHA1-Digest: Wl4jBkhtPS9E+JkWaS0GOyoMbuw= Name: res/layout/centered_app_title.xml SHA1-Digest: 5rEeTeZFkuL3VoHq6nk4sfeB+jg= Name: res/drawable-xxhdpi-v4/abc_scrubber_track_mtrl_alpha.9.png SHA1-Digest: mXQuXT+E6ctyqZNbnaBtZKfg0ZU= Name: res/drawable-hdpi-v4/ic_info_outline_light.png SHA1-Digest: /DlKgwON8BS4G8FmGnpmQItNuqc= Name: res/drawable-mdpi-v4/ic_block_white_18dp.png SHA1-Digest: FC+C3CmEUXCplFxVG7HWgvTGtNU= Name: res/drawable-xxhdpi-v4/ic_info_outline_grey600_24dp.png SHA1-Digest: xBmMFVK3FIxZKSB0TRZIYecVwfU= Name: res/drawable-hdpi-v4/ic_recurrence_bubble_fill.png SHA1-Digest: a/afiiaYmhSCSRPndEe7VVryElM= Name: res/color/abc_primary_text_disable_only_material_dark.xml SHA1-Digest: fztyDM09XiKUbzo6Y6O2r9Xqs6k= Name: res/drawable/info_round.xml SHA1-Digest: UZ/381JABO8YY/CyQ+EQwB67nZs= Name: res/drawable-v21/avd_hide_password.xml SHA1-Digest: n9KjH/8/CCI1IAA4WA95HxD7TSo= Name: res/drawable-hdpi-v4/ic_launch_white_24dp.png SHA1-Digest: buTvIITq3BWrN5RzvAzAkNJ3RR0= Name: res/drawable-mdpi-v4/ic_unarchive_white_36dp.png SHA1-Digest: j3jd65D0sfk5JumlC9jjVSsyKRM= Name: res/drawable-xxxhdpi-v4/fab_shadow.png SHA1-Digest: vzNoDRf8pV/kEmky3cnGOUTqQho= Name: res/anim/slide_from_top.xml SHA1-Digest: NRMSsU5qemKGLU44qx35gMLtOZg= Name: res/drawable-mdpi-v4/ic_warning_dark.png SHA1-Digest: URWCsTSGrzecwznLDboFrYlHiC0= Name: res/drawable-hdpi-v4/ic_content_copy_light.png SHA1-Digest: NAPM4erdO2ZajdfUwR7WwzzfiZg= Name: res/drawable-hdpi-v4/received_bubble.9.png SHA1-Digest: l1DcWbaW/Gm1hFu3pEriKWh+Z2g= Name: res/layout/keyboard_right_drawable.xml SHA1-Digest: K21qYkNJh5XhOn/Sn8+ArpXPZfI= Name: res/drawable-hdpi-v4/abc_list_pressed_holo_dark.9.png SHA1-Digest: igV6Z9qyPsoUBNkEZPzj+DDt0kE= Name: res/drawable-xhdpi-v4/ic_lock_white_24dp.png SHA1-Digest: Nd1pIdgHJVHHAL0NiktI2OyXbvY= Name: res/drawable-xhdpi-v4/ic_reply_white_36dp.png SHA1-Digest: 6t2iywD4iSB/rF/1KvmFyTQmOjk= Name: res/color-v11/abc_tint_default.xml SHA1-Digest: 6ivey668H5tMb8e/bAHFxBOxxVE= Name: res/xml/preferences_sms_mms.xml SHA1-Digest: zYPVqXv2rxnBFNr7kEFeLeEbYHw= Name: res/drawable-xhdpi-v4/abc_ic_menu_paste_mtrl_am_alpha.png SHA1-Digest: +F9A3ApomF++Ccyi3vyA4AvmXMw= Name: res/drawable-xxhdpi-v4/ic_emoji_emoticons_normal_light.png SHA1-Digest: O2BU/QZwoCiGacOuy8IsSEnxbVE= Name: res/drawable-mdpi-v4/ic_emoji_places_normal_dark.png SHA1-Digest: h9r6yBVXX9vIhW73Se25qH8kUu8= Name: res/drawable-hdpi-v4/import_database.png SHA1-Digest: rvHksthTPdZ+b/YtO2T38BEGR58= Name: res/drawable-sw600dp-xhdpi-v13/ic_backspace_disabled_dark.png SHA1-Digest: pofIFch+lQqiVC0cbD5xIaHHIbc= Name: res/drawable-xhdpi-v4/ic_emoji_objects_normal_dark.png SHA1-Digest: fVTk0dUWbK3IstNScMq7367Txrg= Name: res/drawable-xhdpi-v4/ic_app_protection_gray.png SHA1-Digest: KObsnbXsPlvVPykyR+NyQ2JQ5Bc= Name: res/drawable-hdpi-v4/ic_action_warning_red.png SHA1-Digest: 2P7OlMAKjtzeGD1WWU6aRcsMhRo= Name: res/drawable-hdpi-v4/ic_info_outline_dark.png SHA1-Digest: RU2a39U19aGRAPSGBhqT3/dOimo= Name: res/drawable-hdpi-v4/ic_account_box_light.png SHA1-Digest: auyN/CyGOQJJ9WUe3XAUVUBXj9E= Name: res/drawable-xxxhdpi-v11/icon_cached.png SHA1-Digest: vVTW2VnbAOubUz1Uw/wzUlWqN0A= Name: res/drawable-hdpi-v4/ic_notifications_black.png SHA1-Digest: ZfQORyIXtZxVt0UI5DfS/0h6tbM= Name: res/drawable-xxhdpi-v4/switch_thumb_disabled_holo_light.9.png SHA1-Digest: jATtINSdqgXWt2HXEF7xpSXBhyY= Name: res/drawable-mdpi-v4/fab_shadow.png SHA1-Digest: RqAVOrWqYhtmaGpjesdDpNjL9JI= Name: res/drawable-hdpi-v4/alert.png SHA1-Digest: r7pqtO1yHsM4QXsGGPPsbZDqN6Y= Name: res/drawable-hdpi-v4/ic_emoji_places_normal_light.png SHA1-Digest: E8FCabJLAd9/PEHPGM3T7HNt3qs= Name: res/drawable-hdpi-v4/ic_reply_white_36dp.png SHA1-Digest: bpDCb4aXWNRK/MO0ktD57dKMZYQ= Name: res/drawable-xhdpi-v4/spinner_focused_holo_light.9.png SHA1-Digest: GULvT2ExbYbkv75q+kEpZUH9u2M= Name: res/drawable/conversation_list_item_read_background.xml SHA1-Digest: xcSjIApmT8lvdb1b+qfO7Z3ohSE= Name: res/drawable-xhdpi-v4/ic_create_white_24dp.png SHA1-Digest: hjecZ+Yk3NTShxd3KTVCHRz1S+E= Name: res/xml/preferences_appearance.xml SHA1-Digest: uzgOR0TINN1MzVwVpddmu/6j+IU= Name: res/drawable-xxhdpi-v4/abc_scrubber_primary_mtrl_alpha.9.png SHA1-Digest: AEtucgE23w85/isDYqNTWlxruFg= Name: res/anim/abc_slide_out_top.xml SHA1-Digest: 8TSJifDdlA1J4leugOVG9Peg+k4= Name: res/drawable-mdpi-v4/spinner_default_holo_light.9.png SHA1-Digest: nxjthQ61TKMyJJ5/85W2SC6qs+M= Name: res/color-v23/abc_tint_switch_thumb.xml SHA1-Digest: bhKfYPTUVR2gp087h+Lq2DP8VnM= Name: res/drawable-xxhdpi-v4/abc_ic_commit_search_api_mtrl_alpha.png SHA1-Digest: Ouio2uWvH7XLWYfqzUwzwmjm/jM= Name: res/drawable/design_bottom_navigation_item_background.xml SHA1-Digest: CWW4mfISMH+Ot1PsBcU5OOmhiCU= Name: res/color-v23/abc_tint_spinner.xml SHA1-Digest: fRj3PTupUzBlYT1O+bKkZbmomws= Name: res/layout-v11/notification_template_big_media_custom.xml SHA1-Digest: lnCSMdxdluML3wH5DsZqz/3sUrs= Name: res/drawable-v21/conversation_list_item_read_background.xml SHA1-Digest: lmBx/sr78+ebREZT82kMdf0qLq4= Name: res/drawable-mdpi-v4/ic_delete_black.png SHA1-Digest: eX/Ck6P/dt7ey0W48PziO1coyoE= Name: res/layout/conversation_list_fragment.xml SHA1-Digest: xt20Np2/qZTXVHgGYRcw8uSHwt0= Name: res/drawable-xhdpi-v4/ic_notifications_black.png SHA1-Digest: smFpvPsUz0+QVjm5sc1F3iIqqtM= Name: res/raw/whisper.store SHA1-Digest: hLdMCWiNl4nJacL59TYQ8lK+JUs= Name: res/drawable-hdpi-v4/ic_emoji_recents_activated_dark.png SHA1-Digest: XcZvxaGT8PWZ+zWSPdAf28t3GxM= Name: res/anim/fade_scale_out.xml SHA1-Digest: lhxvAKLBK4FCXkyEAaT5FHhx6Eg= Name: res/drawable-xxhdpi-v4/ic_video_light.png SHA1-Digest: QHrdCTXe0XaJK4V7TnGjYgI5vQA= Name: res/drawable-hdpi-v4/ic_reply.png SHA1-Digest: aS2epjYciCOwQeQwokaHqSA0Kkk= Name: res/drawable-xxhdpi-v4/abc_textfield_default_mtrl_alpha.9.png SHA1-Digest: p9584WImSwr0082/N/zkcvVq7yo= Name: res/drawable-xhdpi-v4/ic_image_light.png SHA1-Digest: vNLYUm+Q1uaaY6KCo643W3T3i0Q= Name: res/drawable/conversation_item_header_background_dark.xml SHA1-Digest: wfTAaLO+JvtusD4leaJ4hBj59Wg= Name: res/drawable/emoji_category_recent_dark.xml SHA1-Digest: Ou8VeFgJTkCmSB3Aw6SoPPZapVY= Name: res/drawable-ldrtl-xhdpi-v17/abc_spinner_mtrl_am_alpha.9.png SHA1-Digest: xzR4QYhDLijnhAqvCWT+8WMmqNQ= Name: res/drawable-xxhdpi-v4/ic_emoji_symbols_normal_light.png SHA1-Digest: f/DVMcd6iAmf5YuZMmfbIpZP9SA= Name: res/drawable-mdpi-v4/ic_forum_black_32dp.png SHA1-Digest: i3yWkE76Gg6P8i9/QIWByBH1p3g= Name: res/drawable-xxhdpi-v4/ic_lock_white_24dp.png SHA1-Digest: JviQD0rQKh7EoL50IzwpezlyagY= Name: res/drawable-ldrtl-xxhdpi-v4/ic_send_white_24dp.png SHA1-Digest: neMCf3BKGMIjG3BpX7B7FovUlA0= Name: res/drawable-hdpi-v4/ic_contact_picture.png SHA1-Digest: qhRnJGObRC7YZLVHGoSvhBwTXCQ= Name: res/drawable-mdpi-v4/ic_textsms_black_32dp.png SHA1-Digest: I+EfkWfDMZiDUUBX9ePVNDmWy9o= Name: res/drawable-hdpi-v4/ic_push_registration_reminder.png SHA1-Digest: dlznighMw7183iJMxTr9dbJsIjs= Name: res/drawable-mdpi-v4/abc_ic_menu_paste_mtrl_am_alpha.png SHA1-Digest: jnLnSBDt0id1WrhEiz1zra3RW6M= Name: res/drawable-xxhdpi-v4/spinner_pressed_holo_light.9.png SHA1-Digest: tkF8+78AlJ7clz2yc6mvf/TVJfQ= Name: res/drawable/design_password_eye.xml SHA1-Digest: C+kKIgD0x3Pqpcr7269QZUkuaEQ= Name: res/drawable-xxxhdpi-v4/ic_clear_white_24dp.png SHA1-Digest: E9E+hrQdXlyQOjL2qvnFUBjtFaI= Name: res/menu/media_preview.xml SHA1-Digest: GaxiRvvAk1qGdqbi6bjS1OXbwEo= Name: res/drawable-mdpi-v4/ic_emoji_emoticons_activated_light.png SHA1-Digest: GJZwQNDqmqKM/Z3eNUCy074AQB0= Name: res/drawable-mdpi-v4/switch_thumb_pressed_holo_light.9.png SHA1-Digest: MvirMfKCPj8aRdrk/qCwNQly7iQ= Name: res/drawable-xxhdpi-v4/ic_scroll_down.png SHA1-Digest: yhd3mLL6H+JcdmLZj5Z406XYtOU= Name: res/drawable-hdpi-v4/ic_group_white_24dp.png SHA1-Digest: 61dvQcQoxhHeRLerio6OApFlLT8= Name: res/layout-v21/message_details_header.xml SHA1-Digest: 3gX04TU0Nkpyb5WVtUNCH0ZiZHE= Name: res/drawable-hdpi-v4/abc_list_pressed_holo_light.9.png SHA1-Digest: 8fFdZoyOA0FyEP0K/a0QnLk0bbE= Name: res/drawable/abc_ratingbar_small_material.xml SHA1-Digest: gaRS2sbjCfcJo3xOrkhIdr9XwZg= Name: res/drawable-mdpi-v4/abc_text_select_handle_middle_mtrl_light.pn g SHA1-Digest: izNlbouSIXW9/WiRR/UlgyT9VEs= Name: res/drawable-xxhdpi-v4/abc_text_select_handle_right_mtrl_light.p ng SHA1-Digest: Fv+MHn2EjJlYrnRlsip5/7aL0Wg= Name: res/drawable-xxhdpi-v11/icon_notification.png SHA1-Digest: 85ruvoq6PBpFplSac+00p8PBUsk= Name: res/drawable-mdpi-v4/ic_menu_remove_holo_light.png SHA1-Digest: 9pNClz9jSYsj/xjIXcqo7rWRk0c= Name: res/layout/abc_activity_chooser_view_list_item.xml SHA1-Digest: 4Hicu2mJTSHBznRK16UoQpE1Whk= Name: res/drawable-xxxhdpi-v4/abc_ic_menu_paste_mtrl_am_alpha.png SHA1-Digest: bvkSnzG+4r12dRWJRd9DLrqCzfU= Name: res/color/text_color_dark_theme.xml SHA1-Digest: fjkGte3Nla6U3vUNDDxp2dPLM2s= Name: res/drawable-xhdpi-v4/abc_textfield_search_default_mtrl_alpha.9. png SHA1-Digest: s9/qxuNt34tuDKZEbu3WbQxLGWs= Name: res/drawable-xhdpi-v4/ic_emoji_symbols_normal_light.png SHA1-Digest: aRSYzqP0HXhsdVDrbCyRbukPeiA= Name: res/drawable-mdpi-v4/ic_badge_24dp.png SHA1-Digest: BdJRa0IBis/loLKsIw0lGCrUqQo= Name: res/drawable-xxhdpi-v4/ic_delete_black.png SHA1-Digest: feENcEBXL3aQfblBa9o0842DEYk= Name: res/drawable-xxhdpi-v4/ic_reply_white_36dp.png SHA1-Digest: ooBQaFRd9+ZjgadIW/yiEt75/dw= Name: res/drawable-mdpi-v4/abc_btn_radio_to_on_mtrl_000.png SHA1-Digest: 21KY7k5nhCbUYd/od+FyqRUvm2Q= Name: res/drawable-xxxhdpi-v4/ic_circle_fill_white_48dp.png SHA1-Digest: 48zB9zw5i2vmnb/k/rzYZHb+CeQ= Name: res/drawable-xhdpi-v4/dialog_full_holo_light.9.png SHA1-Digest: bymS8SWJTYEscLT8l43bUsTt+Lg= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_972 SHA1-Digest: Tl50phuH8I0GxBh/Drf9vHens0Q= Name: res/layout-v16/audio_view.xml SHA1-Digest: 6GUjWKSxy/K5ZkyC9d3nuD6mN1I= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_971 SHA1-Digest: US/xxHef76UTD882Ez5EnNvcaws= Name: res/drawable-v21/design_bottom_navigation_item_background.xml SHA1-Digest: O27AiByKZrx4CKy6zEVZez3VUaQ= Name: res/drawable/conversation_list_divider_shape_dark.xml SHA1-Digest: RMH4uusB0dYbPXDmwQzuDD/bSH8= Name: res/layout-v22/abc_alert_dialog_button_bar_material.xml SHA1-Digest: iGOnSHYpoL++obhhMoiTd74IapQ= Name: res/drawable-xxhdpi-v4/abc_btn_switch_to_on_mtrl_00012.9.png SHA1-Digest: kBG1gtv3r0AKtRMQRJeeGdtStSk= Name: res/layout/push_recipients_panel.xml SHA1-Digest: f7123M9+YBkP1ZmIP/65nFaiIeE= Name: res/layout/blocked_contact_list_item.xml SHA1-Digest: f2DCf36iddblf5w+PSJRz1dehPw= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_595 SHA1-Digest: 9MZietuaP6dH4UDzQ6o0uNb4wl4= Name: res/drawable/emoji_category_symbol_light.xml SHA1-Digest: xjaDmLzBnB0hW1a4I4qll3kGmGw= Name: res/drawable-hdpi-v4/ic_emoji_emoticons_normal_dark.png SHA1-Digest: 7avTaMmRkZG49YogfofrfcXTirQ= Name: res/drawable-xxhdpi-v4/abc_list_pressed_holo_dark.9.png SHA1-Digest: VPmKAqmLJ6ke7a8XellbYKiIBh8= Name: res/drawable-xhdpi-v4/ic_emoji_nature_activated_light.png SHA1-Digest: iD0MX3tTshFLF26bw9o0rW/HaoE= Name: res/drawable-xhdpi-v4/icon_cached.png SHA1-Digest: swnypVnzZ3VLZov4zTo/innOTRw= Name: res/drawable-hdpi-v4/switch_bg_disabled_holo_light.9.png SHA1-Digest: Evi73cVw1F7NXXrV76QvRIFOeFA= Name: res/drawable-mdpi-v4/ic_emoji_nature_normal_dark.png SHA1-Digest: tq5oQ0ncJEa6wpFUeGkuUZWYoks= Name: res/drawable/ic_backspace_light.xml SHA1-Digest: XLvzKxzL6EDb31eem2HstBr+Ti0= Name: res/drawable-ldrtl-xxxhdpi-v4/ic_send_white_24dp.png SHA1-Digest: NtMB3MWJCzVmpluwSDyBqpeFgVw= Name: res/drawable-xhdpi-v4/ic_forum_black_32dp.png SHA1-Digest: I/jyPgMz5rDfZSv5f/8nG40VrMw= Name: res/drawable-hdpi-v4/ic_emoji_places_activated_light.png SHA1-Digest: Sgr83atHA6ctaDZrm2rSA+pUw4Y= Name: res/drawable-hdpi-v4/abc_ic_commit_search_api_mtrl_alpha.png SHA1-Digest: GsekZVTmqt7NzcA9FoawMuFDm0E= Name: res/drawable/rounded_rectangle.xml SHA1-Digest: gcxzAPBwNA4efMc6M4NOp+2OQGs= Name: res/drawable-xhdpi-v4/ic_lock_white_18dp.png SHA1-Digest: cX/Nnkdcm8V9xd/cWBHr+aBant0= Name: res/drawable-hdpi-v4/lockscreen_watermark_light.png SHA1-Digest: kZukE3axdMWdS8KMYqwFzRR9cf4= Name: res/layout/conversation_activity_attachment_editor_stub.xml SHA1-Digest: 0wmFeB0MoEeiCtDugBWYJUu1Rnc= Name: res/drawable-hdpi-v4/ic_lock_light.png SHA1-Digest: FSvq/80FI0ee9qsxI/yelpUuUdw= Name: res/drawable-xhdpi-v4/ic_forum_grey_32dp.png SHA1-Digest: 3ZsizSTpofPJJ/hCVe1Pa1PrNBU= Name: res/layout/color_fragment.xml SHA1-Digest: FC02DqEKBA/g9hwoEHwtgyXOMA4= Name: res/drawable/widget_unread_count_background.xml SHA1-Digest: ci1aSzllcYoUo9M2Etp57yZTv6E= Name: res/drawable-xxxhdpi-v4/abc_tab_indicator_mtrl_alpha.9.png SHA1-Digest: 3kAOCvPKDybNG1/Fr21Y+cg522o= Name: res/drawable-v21/circle_touch_highlight_background.xml SHA1-Digest: RCp6OOrQn1/KjE6jGOF2niZjcBY= Name: res/layout-v21/recipient_preference_activity.xml SHA1-Digest: nbiRs4SeO9RtEoXZhPhIKjT8i5E= Name: res/drawable-mdpi-v19/switch_thumb_pressed_holo_light.9.png SHA1-Digest: UGB8G0Ku26t0HqFX7D5HJk45fq0= Name: res/drawable-xxhdpi-v4/ic_video_dark.png SHA1-Digest: r1SFHM1zyGuGIvLu1LQ9+3+NZhg= Name: res/drawable-xxxhdpi-v4/icon.png SHA1-Digest: o5/gjAEwK5uCNV8+mM/jhtLwPP0= Name: res/drawable-xxxhdpi-v4/abc_scrubber_control_to_pressed_mtrl_005 .png SHA1-Digest: LpI9vSEdW/n3iNzTIDS8ecyd2BM= Name: res/drawable/emoji_category_objects_dark.xml SHA1-Digest: JDQouPeLrbGMSt3Uc/WHtIWqhSQ= Name: res/drawable-xxxhdpi-v4/ic_archive_white_48dp.png SHA1-Digest: rRMs1TNzzsRv7Yyw99xHFZ2zD5E= Name: res/drawable-xxhdpi-v4/fab_shadow_mini.png SHA1-Digest: PtjRVIdIcmcCzH1fbKoXaMb81yA= Name: res/layout/conversation_item_received_audio.xml SHA1-Digest: xSdWgwjagl0eqFLnjvPErH6cnP4= Name: res/drawable-mdpi-v4/sent_bubble.9.png SHA1-Digest: 1sjPXZyhkKG475gQNSuvAeTaun4= Name: res/drawable-xxhdpi-v4/ic_attach_white_24dp.png SHA1-Digest: glGWjWXhx73RSMBCTHMi/Yx1Z9s= Name: res/drawable/compose_background.xml SHA1-Digest: zAZp74C8XCW9PDL4CsRYvvQmq9c= Name: res/layout/date_picker_view.xml SHA1-Digest: n2p258FrajDnpOM4LTVOyAIaUwE= Name: res/drawable-mdpi-v4/ic_content_copy_dark.png SHA1-Digest: a6uq3VE/cFgA0V3jDMbP2hSkXwU= Name: res/drawable-mdpi-v4/dialog_full_holo_dark.9.png SHA1-Digest: f6ia9cfObNSnjO92EThmcdso0Qg= Name: res/drawable-mdpi-v4/ic_emoji_recents_normal_dark.png SHA1-Digest: dFtiEYS7qHuVIHVVbohEIZ3I0Jg= Name: res/drawable-hdpi-v4/abc_btn_check_to_on_mtrl_015.png SHA1-Digest: 91+SjRwS48rnNSkJl3hukfpvmrk= Name: res/drawable-mdpi-v4/abc_ic_star_half_black_36dp.png SHA1-Digest: nEfj0nfPBbqur1eTMAml8UkS7G0= Name: res/drawable-mdpi-v4/divet_lower_right_dark.png SHA1-Digest: o9gMiS7KJCHI0ywxXuJxjHLuU9U= Name: res/drawable-xxhdpi-v4/ic_image_light.png SHA1-Digest: 5xOF+gE95fgQ0Gz1zSg+BVQk0aM= Name: res/menu/contact_selection.xml SHA1-Digest: SKnxzWsnmL/UIhUg70UxYUrDcgI= Name: res/drawable-xhdpi-v4/ic_menu_search_holo_dark.png SHA1-Digest: 2ACOo9oHVGu1g9Rx+lfr7Y09Jvg= Name: res/drawable-hdpi-v4/dialog_full_holo_dark.9.png SHA1-Digest: 6D+naJ/vT+snQDqAQOf8FDr7pCM= Name: res/color/abc_tint_switch_thumb.xml SHA1-Digest: kK0VL//OBUElY330yObYULISlj0= Name: res/drawable-hdpi-v4/ic_backspace_disabled_light.png SHA1-Digest: 8YzE4GMncrZ+4gIgTYYR3Eyhr9o= Name: res/drawable-xxhdpi-v4/ic_reply.png SHA1-Digest: QaSH4wLqEhMDOSvU8Sg3e6uFNVY= Name: res/drawable-xxhdpi-v4/ic_send_insecure_white_24dp.png SHA1-Digest: JAX6v03dmClzJWdLrZj6B+QQ5Gc= Name: res/drawable-hdpi-v4/ic_message_white.png SHA1-Digest: qwRVGYz+PZL+MPV3l+wOOTdgv28= Name: res/drawable-hdpi-v4/abc_scrubber_control_to_pressed_mtrl_005.pn g SHA1-Digest: Fs9wHncn0Hs9X2gBgK72twTeEAg= Name: res/layout-v17/abc_popup_menu_header_item_layout.xml SHA1-Digest: 62MdoB5jCc06SiJOfv6kmJw8no8= Name: res/layout-v17/notification_action.xml SHA1-Digest: U+0PyL0Pd5Lunbf/DvhJXTLqMqk= Name: res/drawable/background_pane.9.png SHA1-Digest: uRUD8GBrgiNG4l5dimWEZT7nc20= Name: res/layout-v16/conversation_item_received.xml SHA1-Digest: WS7AMHAoLxDd2f3I3Gydci3EryY= Name: res/drawable-xhdpi-v4/ic_arrow_forward_light.png SHA1-Digest: Q8NfFFxKmV3ZlwaVDlTlAg69MFU= Name: res/drawable/emoji_category_people_light.xml SHA1-Digest: F9p5OjTrypOtdp8msjXNvhN3nnI= Name: res/layout/notification_template_media_custom.xml SHA1-Digest: wrwK3C537ItdoLZSN6BtoO9+hAY= Name: res/drawable-xxhdpi-v4/ic_error_red_18dp.png SHA1-Digest: 6+r7bLSguP1+dorc7POz7QL9T8A= Name: res/drawable-xhdpi-v4/ic_forward_white_24dp.png SHA1-Digest: N7S8d92IXyTHz0jDB+lI/mNNWCE= Name: res/drawable-xxhdpi-v4/ic_keyboard_white_24dp.png SHA1-Digest: KRcW9K/bL9qALOa7E3x8ohHWkAY= Name: res/drawable-xhdpi-v4/ic_message_black.png SHA1-Digest: VwXJ4mI146cTkwjCNDFc6P9CaRg= Name: res/drawable/emoji_category_recent_light.xml SHA1-Digest: YzLOI+cBWx5WayWrANYRRgk/t10= Name: res/drawable-xxhdpi-v4/ic_app_protection_gray.png SHA1-Digest: wDTdKPD083yELY3jtCNet04sGOA= Name: res/anim-v21/design_bottom_sheet_slide_in.xml SHA1-Digest: /sfmaMejemtjucshId3pph9anUM= Name: res/drawable-xhdpi-v4/list_selected_holo_light.9.png SHA1-Digest: H2X9BKxBdFAOYEppP+vczoJ/LCU= Name: res/drawable-xhdpi-v4/ic_send_insecure_white_24dp.png SHA1-Digest: PFKnv0x4g4imYkMEJ+V8ZDHyM/8= Name: res/drawable-hdpi-v4/abc_menu_hardkey_panel_mtrl_mult.9.png SHA1-Digest: kv8Z2aiviTOXDoPOY4/vyUE5lng= Name: res/drawable-xhdpi-v4/notification_bg_normal_pressed.9.png SHA1-Digest: iJFesSsAAmE1zFB9XbiCZW1cKKU= Name: res/drawable-xxxhdpi-v4/ic_scroll_down.png SHA1-Digest: UtXgucam8A78b2zfRdwO5GI5Twk= Name: res/drawable-xxxhdpi-v4/abc_text_select_handle_left_mtrl_light.p ng SHA1-Digest: sbqUAnAP9Ic0aSxtt345LLubAZ0= Name: res/drawable-mdpi-v4/ic_app_protection_black.png SHA1-Digest: ENtLHs6kymUD5VLCkQWFsSvZ+fg= Name: res/drawable-xxhdpi-v4/ic_error_white_18dp.png SHA1-Digest: 6hF1pGQtVr3M91PDkMDkmiXGDRQ= Name: res/drawable-xxhdpi-v4/ic_content_copy_light.png SHA1-Digest: 9F6j9eOSjGQk85A6rAH1QAEZLT4= Name: res/layout/abc_screen_toolbar.xml SHA1-Digest: ZOJ5DhP8CmytjHpZxvV6Ox8Ivp0= Name: res/drawable-xxhdpi-v4/abc_ic_star_half_black_48dp.png SHA1-Digest: ELHP/ybr6BY6lvp/69V+RfkZTGQ= Name: res/layout/database_upgrade_activity.xml SHA1-Digest: ndP+rGDj7Cfsf8wp3rsVdbSo7H4= Name: res/drawable-v11/emoji_category_symbol_dark.xml SHA1-Digest: S4KbeTJw5wwr/9tLDcglMDRZ4A4= Name: res/drawable-mdpi-v4/ic_download_circle_fill_white_48dp.png SHA1-Digest: GOV2soF5+mD1AFiHQTBLOn79Ha4= Name: res/drawable-xxxhdpi-v4/abc_spinner_mtrl_am_alpha.9.png SHA1-Digest: OqSIVlkrKIYR7cyOW2HdJP/h5io= Name: res/drawable-xhdpi-v4/ic_select_all_white_24dp.png SHA1-Digest: KR2sKphgTXJ9QE7ONLcq1NDJHlk= Name: res/drawable-xhdpi-v4/switch_bg_disabled_holo_light.9.png SHA1-Digest: lihXWFZsEX3Y2VZnZQ8xgJ4HqYc= Name: res/layout/transfer_controls_view.xml SHA1-Digest: BsRRJ+OjUV6SDPbXjABWEiSxB6g= Name: res/drawable-mdpi-v4/sms_system_import_icon.png SHA1-Digest: HPSbBI5mtTAAmUMwy9xiWhVnzBQ= Name: res/drawable-xhdpi-v4/icon.png SHA1-Digest: QhfVY7UBQilNAfrHJXWil0t74RI= Name: res/drawable-xxhdpi-v4/abc_text_select_handle_left_mtrl_light.pn g SHA1-Digest: rSwsu8lyFJ2T0/pa5u4O8/J64aI= Name: res/anim/slide_from_right.xml SHA1-Digest: R/EvCIayWDXTgntzi87/TffROjA= Name: res/drawable-mdpi-v4/ic_emoji_places_normal_light.png SHA1-Digest: 58Y81AI4id/KD2w57lfiwUhD0dw= Name: res/drawable-xxhdpi-v4/switch_thumb_pressed_holo_light.9.png SHA1-Digest: 7rG4iG6xMyy/xID9Y4eo9y0SIgE= Name: res/layout/design_layout_snackbar.xml SHA1-Digest: yqHI1PppkPcFlQunVhDsTy2rRdA= Name: res/drawable-mdpi-v4/textfield_default_holo_light.9.png SHA1-Digest: UnLnYU6MD2MOR62lCItQOD29xjE= Name: res/drawable-hdpi-v4/ic_menu_add_field_holo_light.png SHA1-Digest: 0pX1gONP4nspRI/v0IbK5Z+P4Eg= Name: res/drawable-v21/dialog_background.xml SHA1-Digest: hxhcDAG+dKyz8Ah0OvgCPwSq9eM= Name: res/drawable-xxhdpi-v4/ic_unlocked_white_24dp.png SHA1-Digest: BjECE1oYoMzYSX45C/uZfe5tDxE= Name: res/layout/reminder_header.xml SHA1-Digest: Ns9bmVbQQKHOqKwAFfIX2UM4XL4= Name: res/drawable-mdpi-v4/ic_emoji_people_normal_light.png SHA1-Digest: A2Tz2rbQYHkLf15VCHn8gEVNyE4= Name: res/drawable-xxhdpi-v4/ic_image_dark.png SHA1-Digest: nwFOkQ8DjRor0j8GFbRNQcjfpig= Name: res/drawable-xhdpi-v4/ic_done_white_18dp.png SHA1-Digest: EvplcFpvBiScbuFWdSdMbXMu4QU= Name: res/drawable-xxhdpi-v4/list_longpressed_holo_light.9.png SHA1-Digest: I+5+I8Glvy2IsIw0hQ/hFirU8cE= Name: res/drawable-hdpi-v4/notification_bg_low_normal.9.png SHA1-Digest: D2PhKM51tYZo8a79riJ3XiUD2nc= Name: res/drawable-xhdpi-v4/ic_download_circle_fill_white_48dp.png SHA1-Digest: jsnHVwkh+0nHcrMtuFPHqgaMREg= Name: res/drawable-hdpi-v4/abc_btn_radio_to_on_mtrl_015.png SHA1-Digest: doXTq0PGlseahO7qxrAxAjB7JIA= Name: res/drawable/abc_list_selector_background_transition_holo_light. xml SHA1-Digest: AdlBQF7mCKx3VlJQ4HaRjQeNXyo= Name: res/layout/recurrencepicker_freq_item.xml SHA1-Digest: dHjPcT33piN4BkyJPRFjAA6NJpA= Name: res/drawable-xhdpi-v4/ic_arrow_forward_dark.png SHA1-Digest: 6cKLUxI1s8foaHCASWI1lB3ux9U= Name: res/drawable-xhdpi-v4/notification_bg_low_normal.9.png SHA1-Digest: dnObiFrk1DvtR5VGgJWQwE6oNeo= Name: res/drawable-mdpi-v4/abc_text_select_handle_left_mtrl_dark.png SHA1-Digest: Osfw11YL10WQkjXxgGt64AbLp0M= Name: res/drawable-hdpi-v4/ic_content_copy_dark.png SHA1-Digest: hnpe+tquN9xGysKN2t7576KXLfc= Name: res/layout-v17/notification_template_big_media_narrow.xml SHA1-Digest: BsNv3+dqgVFy8TCxis6ZPV+2cn0= Name: res/drawable-mdpi-v4/ic_volume_up_dark.png SHA1-Digest: e4xQamTr/9wBswXOayvmULk7s2s= Name: res/drawable-mdpi-v4/ic_volume_off_white_18dp.png SHA1-Digest: 5z/S7DZRXLmyKY2siPabSa5l9io= Name: res/drawable-xhdpi-v4/ic_audio_dark.png SHA1-Digest: EDy61rKaw8fTrPT3VUAiqhESnBc= Name: res/drawable-hdpi-v4/abc_scrubber_primary_mtrl_alpha.9.png SHA1-Digest: 9I5uBrEaa3rXA0AACtIBgaW++Q4= Name: res/color/abc_primary_text_material_dark.xml SHA1-Digest: EtoRUbkcIiZooZPruurTjZllNt0= Name: res/layout/notification_template_media.xml SHA1-Digest: 6dpJaNdMjrssiZxrD+YNOMn8CeY= Name: res/drawable-xhdpi-v4/list_focused_holo.9.png SHA1-Digest: Kw0Qo9eKlw06/oxLHYSWR6VftBw= Name: res/drawable-hdpi-v4/list_selector_background_selected.9.png SHA1-Digest: otna3L08LP49gXxuQvuRvsKnTT4= Name: res/drawable-xhdpi-v4/ic_emoji_places_normal_dark.png SHA1-Digest: CQi33/WUEJ3O3cVy7wA3KmXUC4A= Name: res/drawable-xxhdpi-v4/transfer_controls_background.9.png SHA1-Digest: YwBh/LyZpJuphfkJ+yVu50osyR8= Name: res/drawable-hdpi-v4/ic_call_split_white_24dp.png SHA1-Digest: 4Luz8FsAMmkLDUFlDBPNdM6d2B4= Name: res/layout-v13/select_dialog_singlechoice_material.xml SHA1-Digest: PgA++QZN4J6HviFvlqLyaQTbPG0= Name: res/layout-v17/notification_template_custom_big.xml SHA1-Digest: akAGdgzPFfffe0XPHUWTo4fuwXo= Name: res/drawable/conversation_item_sent_indicator_text_shape_dark.xm l SHA1-Digest: oIWtXE+21oYZ9f0XB2vCLpNSc/8= Name: res/drawable-hdpi-v4/abc_text_select_handle_middle_mtrl_light.pn g SHA1-Digest: 10kBvBUte2AZyag/8SjtRBJJBog= Name: res/drawable-xxhdpi-v4/abc_ic_star_half_black_36dp.png SHA1-Digest: JPdqp3Utz4eGl5Yd4o1J/WbUozw= Name: res/color/abc_tint_switch_track.xml SHA1-Digest: Kal6SSve9vbSTh0eyJn+orXHHIw= Name: res/drawable-xxxhdpi-v4/ic_send_insecure_white_24dp.png SHA1-Digest: wBky0wcelBLG2sq2DsTGAKlibKU= Name: res/drawable-mdpi-v4/telephone.png SHA1-Digest: /zVGgLPtF+whyI9zAzCCUGVqt1M= Name: res/drawable-mdpi-v4/ic_save_all_white_24dp.png SHA1-Digest: 3pl9wu2bcFqQPin53Beo0TCY4wc= Name: res/layout-v21/notification_action.xml SHA1-Digest: +5NrwFa4hY8vqOpBznKVUXR48sk= Name: res/drawable/navigation_empty_icon.xml SHA1-Digest: McRL3inoRGPODvRa7Grnm7zZLr8= Name: res/drawable-xhdpi-v4/ic_emoji_recents_activated_dark.png SHA1-Digest: y0SRoxM8gzHC/WhQK2QoqoYWsAA= Name: res/drawable-xxhdpi-v4/abc_btn_switch_to_on_mtrl_00001.9.png SHA1-Digest: NRcHxLdsX/Th2xTrioD1KYFYeK8= Name: res/drawable-xxhdpi-v4/sent_bubble.9.png SHA1-Digest: JlBo2LcLmyvycEGbrbpgPJ1rbv8= Name: res/drawable/switch_track_holo_light.xml SHA1-Digest: Va1z0AM2djF/K7f2GOqxfWAVrPY= Name: res/drawable-hdpi-v4/ic_emoji_emoticons_normal_light.png SHA1-Digest: eJa0rEt3drbZs/CZ5jTBlNzn0rg= Name: res/drawable-xxhdpi-v4/abc_ic_menu_cut_mtrl_alpha.png SHA1-Digest: vs5sXFVGnqpXFZuXg+uY+nALal4= Name: res/layout/abc_activity_chooser_view.xml SHA1-Digest: bm1dSgfcpygi99m3rg+75RoVcT0= Name: res/drawable-mdpi-v11/icon_cached.png SHA1-Digest: 1IT19k6a+GsikYVyLSFHJRGte/0= Name: res/drawable-xhdpi-v4/abc_ic_menu_share_mtrl_alpha.png SHA1-Digest: eobI6VkMzG98QREBV+/eaTz00LY= Name: res/drawable-xxhdpi-v4/ic_menu_search_holo_light.png SHA1-Digest: zArtT76Uh6rEAZylzjOFZOdJ0xc= Name: res/menu/key_scanning.xml SHA1-Digest: 7OX9fzhB/KnRXH168emKX9Qmmp0= Name: res/layout-v16/conversation_item_sent.xml SHA1-Digest: rYlPjTnG3eaUUmmlTdVh9VHpWrw= Name: res/drawable-hdpi-v4/ic_emoji_nature_normal_dark.png SHA1-Digest: B1ybbMnXI/G48h7heHEwxmULCOo= Name: res/layout-v17/notification_template_big_media_custom.xml SHA1-Digest: fZebd6F0W3rnnXGDkVTYqHKDtp4= Name: res/drawable-xhdpi-v4/ic_mood_white_24dp.png SHA1-Digest: oaZTnKdVIywIQl57pKnKCt3DOw0= Name: res/layout/media_view_remove_button.xml SHA1-Digest: tjJoTuSUP7T7iZmZHT3Dy/pkLGg= Name: res/drawable/conversation_attachment_close_circle.xml SHA1-Digest: x0pAqU4e/K7xUap+gtDmVChr00Q= Name: res/drawable-hdpi-v4/ic_push_gray.png SHA1-Digest: 3arYaP6KZtXoMW3ILggQe4fxYvA= Name: res/animator/bottom_pause_to_play_animation.xml SHA1-Digest: 7f8HiUwoTj84cBIvXQhtx6kFMlc= Name: res/drawable-xhdpi-v4/ic_emoji_emoticons_normal_light.png SHA1-Digest: U0tsH4HQqplILpRU9IYTDB1g+Bw= Name: res/drawable-xxhdpi-v4/switch_bg_focused_holo_light.9.png SHA1-Digest: 7Al4NEadlSNDthHtuP+MABLRxJs= Name: res/layout/empty2.xml SHA1-Digest: wnS9P8OkImc/tnKJnsSet9DvBz0= Name: res/layout/design_menu_item_action_area.xml SHA1-Digest: +CaSrRO+YIeuLR//AbmNORoSW6o= Name: res/drawable-v11/emoji_category_symbol_light.xml SHA1-Digest: COUSagF+F1d0/z9XTocQuYRdoVQ= Name: res/layout-land/calendar_date_picker_dialog.xml SHA1-Digest: iqpjA1eAjjWXIOu09vGX/wjNjVE= Name: res/drawable/ic_backspace_dark.xml SHA1-Digest: ArAaZ6HHiiuf0ps1yq9gj8Okqvg= Name: res/color/abc_tint_spinner.xml SHA1-Digest: w9Ukqef88kQScnBfLuUgAvsMqF4= Name: res/color-v23/abc_tint_btn_checkable.xml SHA1-Digest: DmZR1IvQ3zUPR3/rzr0yGhi4FgU= Name: res/layout/keyboard_right_drawable_with_header.xml SHA1-Digest: EujZ5fvmot/8WDge20sozmY1dEE= Name: AndroidManifest.xml SHA1-Digest: aSiqCQO2JS5dp2XosozmPgZuYDI= Name: res/drawable-xxxhdpi-v4/ic_reply_white_36dp.png SHA1-Digest: DTQXA52dZ/Aov2xiYYQ7Ob7wOOs= Name: res/drawable-hdpi-v9/icon_notification.png SHA1-Digest: TaP5pcnL3kExAb7rawMrwW/A/is= Name: res/drawable-v21/avd_show_password_2.xml SHA1-Digest: qzTtTY4E4ILGYDhNdhW0uOuFdm4= Name: res/layout/fragment_submit_log.xml SHA1-Digest: LWpzFy7pfL8GlXJToDVyMxKDMRo= Name: res/drawable-mdpi-v4/list_selector_background_selected.9.png SHA1-Digest: z7RgcGNXM0xZgKnWQDhCMI5jWU8= Name: res/drawable-xhdpi-v4/sent_bubble.9.png SHA1-Digest: x1LavT6RtZ4zK44/4apQftPRZf4= Name: res/drawable-mdpi-v4/ic_lock_white_24dp.png SHA1-Digest: Od4a/kCsNm29eQiGsbXnOXBRPpA= Name: res/drawable-mdpi-v4/ic_push_gray.png SHA1-Digest: d03BRjHQXMT5dxMInzZlfJyFgvs= Name: res/drawable-xhdpi-v4/textfield_disabled_holo_light.9.png SHA1-Digest: 6kr6+a7d5GsQfVMreRc+SmQOKzc= Name: res/color/abc_tint_default.xml SHA1-Digest: joM6fXjegJAOjP/K8fITfQbXaNY= Name: res/drawable/pause_to_play_animation.xml SHA1-Digest: ASS0dbMw+ywWJt8+9i8Ghf2NAEg= Name: res/drawable-xxhdpi-v4/ic_create_white_24dp.png SHA1-Digest: EKmwDF1HmTWNhbghgAJghsA4xTk= Name: lib/mips/libcurve25519.so SHA1-Digest: NF0l6yNnx4ptXGKTIP7BW3ZrJBc= Name: res/drawable-hdpi-v4/ic_attach_white_24dp.png SHA1-Digest: PSb/5+sj50OyW8z6vffHVCC1gSg= Name: res/drawable-mdpi-v4/ic_emoji_recents_normal_light.png SHA1-Digest: x6tdVSC9kMSRwb+iUYOgcFNhj80= Name: res/drawable/touch_highlight_background.xml SHA1-Digest: 0vN+oXyYyK2QUJlvoZa9aQ/hjl0= Name: res/layout-v11/notification_media_action.xml SHA1-Digest: xk6Nv+akCynB9a9MstuHUvrigc0= Name: res/drawable-xhdpi-v4/ic_play_circle_fill_white_48dp.png SHA1-Digest: nDgt5sLI0dxnit80P6JOMwBUxfM= Name: res/drawable-xhdpi-v4/ic_warning_light.png SHA1-Digest: udwVVOTRM5reilE7yAJKLaMHGcY= Name: res/drawable-v21/avd_show_password_3.xml SHA1-Digest: 8cb+Cb/wnTfMUkRNmCqPPMhQADM= Name: res/drawable-xxhdpi-v4/ic_forum_grey_32dp.png SHA1-Digest: 23qo1QLXrlfUfF5Eqhhxis1N7Xk= Name: res/animator-v11/rotate_90_animation.xml SHA1-Digest: vCHon/zb8+I+tgv5eAXXGWcch9Q= Name: res/drawable-xxhdpi-v4/divet_lower_right_dark.png SHA1-Digest: 7u76e0n4jj0tZe9nC/ILisA56kg= Name: res/drawable-xhdpi-v4/received_bubble.9.png SHA1-Digest: gcv90BhHf7spJ97oEUWp1vl90m0= Name: res/drawable-hdpi-v4/ic_send_secure_white_24dp.png SHA1-Digest: Pjohen4qe8BHqItpcnQLsgP79Kw= Name: res/drawable-xhdpi-v4/design_ic_visibility.png SHA1-Digest: Vl5TwBMiN5v++S+3P9T9173+CDE= Name: res/drawable-xxhdpi-v4/ic_emoji_nature_activated_dark.png SHA1-Digest: P6HchX55uRgUtx9k4TqeFSC7BCg= Name: res/drawable-v21/conversation_list_item_unread_background.xml SHA1-Digest: 7HbNlN7x9aDCWc1PA3Rn1AWku+4= Name: res/drawable-mdpi-v4/ic_emoji_flags_normal_dark.png SHA1-Digest: LZZgv0dmbJRyZidsyghMmuTpP1A= Name: res/drawable-xhdpi-v11/icon_cached.png SHA1-Digest: 6bdC1qEKQc3ehR3PNto+CUv4+bo= Name: res/drawable-xxhdpi-v4/abc_text_select_handle_left_mtrl_dark.png SHA1-Digest: GHXXmeZJAjb8EUS6oBJoqMQ0Mjg= Name: res/drawable-sw600dp-xhdpi-v13/ic_backspace_disabled_light.png SHA1-Digest: pofIFch+lQqiVC0cbD5xIaHHIbc= Name: res/layout-v13/database_migration_activity.xml SHA1-Digest: jjuIX4w9d/FstglsdrCiSpOLBYE= Name: res/drawable-xxhdpi-v4/ic_movie_creation_light.png SHA1-Digest: 2dGS1uf9JsTY2QBMa3u3WisZOhQ= Name: res/drawable-hdpi-v4/ic_add_white_24dp.png SHA1-Digest: eDLDjAoj3Aa+/QbuUjLGYJA6N3s= Name: res/drawable-hdpi-v4/fab_shadow.png SHA1-Digest: wGfZ2WL4AmVSxscVUGvQlQwMWP4= Name: res/drawable-mdpi-v4/ic_info_outline_light.png SHA1-Digest: Syo9p12wh15vMkgPW0hhnRarja8= Name: res/drawable-v21/conversation_list_item_unread_background_dark.x ml SHA1-Digest: rxvd8dvInRPnbVhpNTm0bkO8vU0= Name: res/layout-sw600dp-v13/three_keys_view_right_drawable.xml SHA1-Digest: hJIEke3HCJeFoTSsp3Fnr3ru1oM= Name: res/drawable-xhdpi-v4/ic_brightness_6_gray.png SHA1-Digest: RASxq+Vx8fv6bw+EefSqnNRxvy8= Name: res/anim/slide_to_top.xml SHA1-Digest: b/7F73oaOgl8QTgwjZirDWc5DsI= Name: res/drawable-v11/emoji_category_nature_light.xml SHA1-Digest: q91zOle9oQRxFFsMrVjfW5LncNw= Name: res/drawable-v21/design_password_eye.xml SHA1-Digest: HVHJTN2P1VIy7McjbW2zKNHTZ/k= Name: res/drawable-xhdpi-v4/abc_text_select_handle_left_mtrl_light.png SHA1-Digest: BrhcG9gnMxL5cZcJ0jDTmMfIM6o= Name: res/drawable-xhdpi-v4/ic_emoji_emoticons_activated_light.png SHA1-Digest: UUNraI2rSSmTZuRKp76+H6S34tw= Name: res/drawable-xhdpi-v4/ic_delivery_delivered_dark.png SHA1-Digest: q+GLHJiPjWZNX9rBcm75tWDwE0A= Name: res/drawable-xxhdpi-v4/abc_list_divider_mtrl_alpha.9.png SHA1-Digest: tC6uw2w2e+vYOuhd45mTIYRtoKE= Name: res/drawable-xxxhdpi-v4/ic_play_circle_fill_white_48dp.png SHA1-Digest: NH9ukfqebHQOumBZ8A+W0yLkURc= Name: assets/fonts/Roboto-Light.ttf SHA1-Digest: pjPMJmlNtysc9kyqUeZLQ8N3mzo= Name: res/drawable-xxhdpi-v4/ic_save_all_white_24dp.png SHA1-Digest: WR/22zimbblTw5FOPZt13OUTEAU= Name: res/layout/abc_alert_dialog_title_material.xml SHA1-Digest: jVZHwQ3okFh1QBuLZci4icsDWV4= Name: res/layout/import_export_fragment.xml SHA1-Digest: gasJgYghpkBfyEVIE76dsry19Vk= Name: res/drawable-mdpi-v4/abc_scrubber_track_mtrl_alpha.9.png SHA1-Digest: F8nLQoXKGiQPJCjl3TNIR/eklGw= Name: res/drawable/spinner_background_holo_light.xml SHA1-Digest: B0aXFxtzoLaEhbHHxuiXjae5Gog= Name: res/drawable-xhdpi-v4/fab_shadow_mini.png SHA1-Digest: LXN0FOE68TYP8JlxKq2MYPy1a4Q= Name: res/drawable-xxhdpi-v4/abc_ic_star_black_36dp.png SHA1-Digest: 4eyqloBe4i++Lnjut9rv30zXGjc= Name: res/layout-v17/abc_search_view.xml SHA1-Digest: bpToW9h3RZxHrVWHrYOhb4NsYgk= Name: res/drawable-hdpi-v4/ic_missing_thumbnail_picture.png SHA1-Digest: Alvw+lU2O9PD3nO/yAu9taOEZs4= Name: res/drawable/conversation_list_item_unread_background.xml SHA1-Digest: vtHZ4HtPOge1w3+fen0KNHUO/os= Name: res/drawable-mdpi-v4/ic_emoji_objects_activated_light.png SHA1-Digest: 6MaBPweMvqHaw8FgUp8UlSaTT8s= Name: res/drawable-hdpi-v4/abc_textfield_search_default_mtrl_alpha.9.p ng SHA1-Digest: Uaax8TsSlV1ssfdd4JM/P9lAyjc= Name: res/xml/badge_widget_provider.xml SHA1-Digest: BbkN2gHT30IIHuFy/mQKOhYMmKw= Name: res/drawable-ldrtl-xxxhdpi-v17/abc_ic_menu_copy_mtrl_am_alpha.pn g SHA1-Digest: ZMTKws3Yf0EOK1CpWECY7+yKtn0= Name: res/drawable-xxhdpi-v4/ic_badge_24dp.png SHA1-Digest: f0Z1+ACf5AfSh6xkqW9se8lw96E= Name: res/drawable-mdpi-v4/ic_emoji_symbols_activated_light.png SHA1-Digest: 07UvaS4Vt2TdcWhTDIOJXiLICPo= Name: res/drawable-mdpi-v4/ic_play_circle_fill_white_48dp.png SHA1-Digest: pqjm1dRGDzQ8JZmZbqNZzr5lCEo= Name: res/layout/design_bottom_navigation_item.xml SHA1-Digest: LAhv7EglbmBNJita3rNPNDZ6Jww= Name: res/drawable-mdpi-v4/ic_backspace_normal_dark.png SHA1-Digest: rdghLsk72qbvJh/nssDD307QNTs= Name: res/drawable-mdpi-v4/abc_text_select_handle_left_mtrl_light.png SHA1-Digest: 8guTAEXvUmh+eaLeokeYvH7643o= Name: res/drawable-xhdpi-v4/ic_check_normal_dark.png SHA1-Digest: 2MQ0mNjQk8jSZjMS1PM6fadBQLU= Name: res/xml/preferences_chats.xml SHA1-Digest: CbW30JJLB0mFlH8JRMEmKx4hBcg= Name: res/layout/radial_time_picker_dialog.xml SHA1-Digest: 0qg20NInRmHHMeoeoX1qZtGuCIg= Name: res/drawable-xhdpi-v4/ic_menu_add_field_holo_light.png SHA1-Digest: 2wevLdiXjHIkTVcPtdT3YcMZQJk= Name: res/drawable/background_pattern.png SHA1-Digest: CTOBxrOS8ngBuJdnK7DkmHHCF3w= Name: res/layout/abc_popup_menu_item_layout.xml SHA1-Digest: 9KY6cTlIMTXELBZlS/lQJqma3no= Name: res/drawable-hdpi-v4/ic_download_circle_fill_white_48dp.png SHA1-Digest: fuRUb+7a8CDp2iushzsyHDNApGk= Name: res/layout/hms_picker_view.xml SHA1-Digest: E90edl4d9jK1Auvl9DQkc/OHxPI= Name: res/drawable-mdpi-v4/ic_account_box_light.png SHA1-Digest: Pn9U6zgZiaHjLMufo7m5UI3sqv0= Name: res/drawable-mdpi-v4/ic_emoji_people_normal_dark.png SHA1-Digest: o6u0xd82CT37/1jIsyd0EiR5CA8= Name: res/layout/media_overview_activity.xml SHA1-Digest: cqKNQw8HsS0zl7VKIHDH8/Kif90= Name: res/drawable-hdpi-v4/ic_save_all_white_24dp.png SHA1-Digest: BNtudXvSGAgIP4Xz6AMNSY0dWzw= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_84 SHA1-Digest: cM9Igo/aYhfEFUXrYtfhy+rGfTA= Name: res/drawable-hdpi-v4/design_ic_visibility.png SHA1-Digest: il2OWkYNYAmmPAdZJmHUqqQXceQ= Name: res/drawable-xhdpi-v4/abc_btn_check_to_on_mtrl_015.png SHA1-Digest: i6pCyKNDkCGzNzTp71ixAq/8VCM= Name: res/layout-v16/verify_identity_activity.xml SHA1-Digest: fViipTHHheUGccA3ejf2i3023hY= Name: res/drawable-xhdpi-v4/switch_thumb_pressed_holo_light.9.png SHA1-Digest: UztIfkg+4xXbDDfXpkylsY0bawQ= Name: res/drawable-xhdpi-v4/abc_ab_share_pack_mtrl_alpha.9.png SHA1-Digest: 8QLweU4p1rehkS9Zii3jepzESPg= Name: res/drawable-ldrtl-xxxhdpi-v17/abc_spinner_mtrl_am_alpha.9.png SHA1-Digest: dT9O498/3E1mpkpzpSmdy7tcxxU= Name: res/drawable/notification_bg.xml SHA1-Digest: bj5a80+E2BgDJ7UtZngYsYRoM3A= Name: res/drawable-mdpi-v4/ic_message_black.png SHA1-Digest: ufXFoyZsYQwoWX75dnNWMkffm/8= Name: res/drawable-hdpi-v4/abc_textfield_default_mtrl_alpha.9.png SHA1-Digest: NPD/eXAUHpJIZ0Gue4mGW/Q6oXI= Name: res/drawable-hdpi-v4/abc_ic_star_black_16dp.png SHA1-Digest: lC47V58n3eYOJicP+Ng5Di5wekE= Name: res/drawable/abc_ic_arrow_drop_right_black_24dp.xml SHA1-Digest: yfl/P7TCWvsLAw6+ItgG3AhNxR0= Name: res/layout/design_layout_tab_text.xml SHA1-Digest: hGylEWtLV6PowlIJAnKyrFqhGEo= Name: res/drawable-xxhdpi-v4/ic_refresh_white_18dp.png SHA1-Digest: dQc+eDIq1pnsTBTStjfhNl4FO1I= Name: res/color/design_tint_password_toggle.xml SHA1-Digest: 1bBz9XsGPIkliq4TDSak3qiheuM= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_81 SHA1-Digest: daBwnRVtz216PB28MApBfpfM6OY= Name: res/layout-v21/conversation_fragment.xml SHA1-Digest: Hb/NyJTA3nGqHaToCWjWyA0Nfhc= Name: res/color/design_error.xml SHA1-Digest: Es59RSWVXiKJovqODE9ReDu7QUQ= Name: res/drawable-mdpi-v4/ic_keyboard_white_24dp.png SHA1-Digest: 1b41v469NLXoyk0C8eEgDKy//vU= Name: res/drawable/last_seen_divider_text_background_light.xml SHA1-Digest: V+jBVY7mlKJH1EPCbcqpCeWfR7g= Name: res/drawable-xxxhdpi-v4/fab_shadow_mini.png SHA1-Digest: 2TqTOMvnZEi2P/x0zbtExFQryOY= Name: res/drawable-xxxhdpi-v4/ic_arrow_forward_white_24dp.png SHA1-Digest: ChZoygScVbCrHuKHdLovsttInZE= Name: res/drawable-mdpi-v4/textfield_focused_holo_light.9.png SHA1-Digest: Osswqo8kfRGKahOnjpi0n93nS1Y= Name: res/color-v11/abc_hint_foreground_material_light.xml SHA1-Digest: xfQnMbjkcgC7kuD+Hp7rD3X8Rzw= Name: res/drawable-ldrtl-mdpi-v17/abc_spinner_mtrl_am_alpha.9.png SHA1-Digest: nhOdszX2MHoKx6H7uBb+tEWPyJ0= Name: res/drawable-xhdpi-v4/abc_text_select_handle_middle_mtrl_dark.pn g SHA1-Digest: 2yBDAHgYTM0FfiL8gWf0VdNXNwA= Name: res/color-v23/abc_btn_colored_borderless_text_material.xml SHA1-Digest: ZoOvC29NE42ira4RG74k41hynCA= Name: res/drawable-hdpi-v4/fab_shadow_mini.png SHA1-Digest: hppvVugySDc93vDPDtj/YdWC9nE= Name: res/drawable/emoji_category_objects_light.xml SHA1-Digest: Sd8nRKN7U3KjNP28k3h5bQTceqs= Name: res/layout/emoji_drawer.xml SHA1-Digest: lL84YM61BuU5J1OZN8IHnco9kmA= Name: res/drawable-xxhdpi-v4/ic_menu_remove_holo_light.png SHA1-Digest: n8+8cFBa9+ptZR+rttySX8lU5NM= Name: res/color/abc_search_url_text.xml SHA1-Digest: ULqUPkxlcpqU/WycHleKoU9uLlU= Name: res/layout-land/radial_time_picker_dialog.xml SHA1-Digest: TfwEjFSvG9/SqnIVmSBDfEjpv54= Name: res/layout/calendar_date_picker_dialog.xml SHA1-Digest: a6D1iIW2yY84vwjUvErCg53sxnw= Name: res/drawable-mdpi-v4/abc_scrubber_primary_mtrl_alpha.9.png SHA1-Digest: bZVk/7JyPqpb9FPgqFjfBJURWhA= Name: res/drawable-xxxhdpi-v4/ic_unarchive_white_36dp.png SHA1-Digest: OEYQYVABoR+2CE7ZA7yHLMEW1jw= Name: res/drawable-v11/edit_text_holo_light.xml SHA1-Digest: F+DtDSj0l98dcxb0XPI/r0kY9to= Name: res/drawable-mdpi-v4/ic_video_light.png SHA1-Digest: AHljVdelrMj8drM7jwGHprqJFmA= Name: res/drawable-mdpi-v4/ic_info_outline_dark.png SHA1-Digest: pNBgu6UtP9GYO3W6/NJwyRUiAEo= Name: res/drawable-mdpi-v4/abc_menu_hardkey_panel_mtrl_mult.9.png SHA1-Digest: 6odRFxWrjmo6tHxritbB5cYdjWI= Name: res/drawable/dialog_background.xml SHA1-Digest: UEWSC5BKnYPbksgbsZfSkL3N3ks= Name: res/drawable-xhdpi-v4/abc_btn_switch_to_on_mtrl_00001.9.png SHA1-Digest: /hpvHveM+a3Mx49n/3P19bBBgiI= Name: res/color/abc_secondary_text_material_dark.xml SHA1-Digest: GQ3rWNxlJ84ZAaPkwxO7VystcTs= Name: res/layout-v17/notification_template_lines_media.xml SHA1-Digest: DAyURKcw6XN72DiE6lYrFAfeAT8= Name: res/drawable-hdpi-v4/ic_notifications_gray.png SHA1-Digest: UBKxyCadglItZqfHFWo/NWq2kMU= Name: res/layout/design_navigation_menu.xml SHA1-Digest: fPFY6UdlecbjXNsn4YVofqtT7ys= Name: res/drawable-xxhdpi-v4/ic_contact_picture.png SHA1-Digest: 0QLSDRqpJz/6PixVRqg6TsEKdbw= Name: res/layout-v17/abc_popup_menu_item_layout.xml SHA1-Digest: H1kmEvfqPIpUL4c30NrLzcfeswk= Name: res/drawable-xhdpi-v4/abc_ic_star_half_black_36dp.png SHA1-Digest: 8XIl4bSeXq0sG4+FeucZZjHT7Qw= Name: res/drawable-hdpi-v4/ic_send_white_24dp.png SHA1-Digest: /UYoUVKGEI67dPfLwMLubQ0O18w= Name: res/menu/conversation_list_batch_archive.xml SHA1-Digest: f/k6AdLx/BkfHmuws2aE8gA4VZ8= Name: res/drawable-hdpi-v4/ic_done_white_18dp.png SHA1-Digest: hsrbmHP3Ca7VipiW3cqyhrrkxQk= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_94 SHA1-Digest: iFng5Rg8uXcO1Wad8WzQjXXbaSA= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_95 SHA1-Digest: 6+a5S3YBqGkTp77eRI98wZppshU= Name: res/layout/share_intent_row.xml SHA1-Digest: hEFfaanmx0xw0zSH1atx6iZAH5s= Name: res/xml/preferences_notifications.xml SHA1-Digest: 7d987UvRoWOjXVXe42qeTVWojXc= Name: res/drawable/notification_icon_background.xml SHA1-Digest: 9XV2y6Lq4+7VQc34MLXKGo0bK88= Name: res/drawable-xhdpi-v4/switch_bg_focused_holo_light.9.png SHA1-Digest: /LzkB2YWBf8/BEEXg0QTgGcw1zo= Name: res/drawable-xxhdpi-v4/ic_info_outline_light.png SHA1-Digest: ldG1yneMkBED1JCTqG2hVvc9508= Name: res/layout/prompt_passphrase_activity.xml SHA1-Digest: +ZXaHK1hsoQQvA5zR/XytZxf1TA= Name: res/drawable/button_background_light.xml SHA1-Digest: 2ArVCjLjr02aFbyRYSeHh1WEUrE= Name: res/drawable-v11/emoji_category_flags_dark.xml SHA1-Digest: C23igqMnLW5kCfUE8FpsQeZLIos= Name: res/layout-v16/calendar_date_picker_header_view.xml SHA1-Digest: +545VslRghtWl18ssktPG2+sHHg= Name: res/drawable-xhdpi-v4/alert.png SHA1-Digest: r0uY1AsW4BfEQ0neJobBHCaDZDg= Name: res/layout/contact_selection_activity.xml SHA1-Digest: o1xq3vcI/nhMiAp+92hqM9E2uN4= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_91 SHA1-Digest: lcsLkHVu72/rODkHdAAZAfP/bk8= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_90 SHA1-Digest: 7WrMiEDONSaE+X9BTfPKgXzIz+g= Name: res/menu/conversation_list.xml SHA1-Digest: KpevVWxQDbF5cuDPnZqzkRfPRxE= Name: res/drawable-xxhdpi-v4/ic_message_gray.png SHA1-Digest: 0STrwJfkSN+45t6UZF0HHjhNlrA= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_49 SHA1-Digest: lJyFdjLImuA15HlomNveCTDcnAc= Name: res/drawable-mdpi-v4/ic_save_white_24dp.png SHA1-Digest: mgACmxmFqQ+zs8iPY7oYpx7VXzI= Name: res/drawable/compose_divider_background.xml SHA1-Digest: RsAhKmH09jc4QKAZtjrZMgSO/n4= Name: res/drawable-xxhdpi-v4/ic_action_warning_red.png SHA1-Digest: lJyeXqkO3zENRDDbya7f7KvV+qc= Name: res/drawable-mdpi-v4/textfield_disabled_holo_light.9.png SHA1-Digest: h4/VO+f25Zj7CANfbDIPqcsPTeQ= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_44 SHA1-Digest: N1nuhYaREi9z6iAeXxLcra4rL5s= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_43 SHA1-Digest: mIFkru/j+coHhbRh6/nN2br+Xak= Name: res/drawable/ic_check_light.xml SHA1-Digest: UNOeSc0tns0fQsdGjNn6nMv2Rck= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_39 SHA1-Digest: DCU1im+wpc/coZrjso8xoYO7IjM= Name: res/drawable-hdpi-v4/ic_menu_search_holo_dark.png SHA1-Digest: 4dSQGHNaTKAj96679sXZ4xJ8A6o= Name: res/drawable-xxhdpi-v4/ic_emoji_symbols_activated_light.png SHA1-Digest: Z3d6uBgQscgF9jpY8JTh0/r0GQY= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_36 SHA1-Digest: hWS0Op4dc6LF44g9BIFft/f3QH0= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_31 SHA1-Digest: KuLNytr4ZRl4fcSWuquXOt81/60= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_30 SHA1-Digest: Bh8tv057544lV4r7kRT1zzTlaA8= Name: res/drawable-xxxhdpi-v4/abc_ic_menu_cut_mtrl_alpha.png SHA1-Digest: BjYXNIGGhyqIB4Vq4khlEepKSZk= Name: res/drawable-xhdpi-v4/ic_volume_up_light.png SHA1-Digest: LfbmrD0YLMA9OlzM1Gk4P3X3+7w= Name: res/drawable/notification_bg_low.xml SHA1-Digest: IKiF8Z0by9Q2pqJeveIHUizqkp4= Name: res/drawable-xxhdpi-v4/icon_cached.png SHA1-Digest: /SZtInm1nKG4qAtbMelP08hKDBY= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_34 SHA1-Digest: O3GRzsWEr1+UF6z/veTcYUIikdU= Name: res/drawable-xhdpi-v4/ic_visibility_grey600_24dp.png SHA1-Digest: cryynexdcx/BHt6qYA/0iFTRfDg= Name: res/drawable-xxhdpi-v4/abc_btn_check_to_on_mtrl_000.png SHA1-Digest: 0kKvPwdj7zBzN9UX4+jHAPKwyCA= Name: res/drawable-mdpi-v4/ic_brightness_6_black.png SHA1-Digest: bXR9+poSUACZSRXeejLBXqLMfBo= Name: res/drawable/design_fab_background.xml SHA1-Digest: 2IXtIQ8BMr6/gZ9iOW0d/IwZH6A= Name: res/drawable-xxhdpi-v4/ic_account_box_light.png SHA1-Digest: Jj9UOG98sbonLzTowZRWm5p9PYM= Name: res/layout-sw600dp-v13/three_keys_view_text.xml SHA1-Digest: lrd18VCqevhTKeg67U1GT6IrXxU= Name: res/drawable-hdpi-v4/ic_delete_black.png SHA1-Digest: qEmobDlgidBgvc4OoPk6XdEUEmY= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_66 SHA1-Digest: ZFpoKe4t4pLWyhWH1RNMJcPf+fE= Name: res/drawable-xxhdpi-v4/ic_select_all_white_24dp.png SHA1-Digest: immG58Mn+jJpWq3F2CTYfdXTMzw= Name: res/animator-v11/upper_pause_to_play_animation.xml SHA1-Digest: 8rY/CYehbUSswda3BXhrTPOxJnM= Name: res/drawable-hdpi-v4/abc_ic_menu_selectall_mtrl_alpha.png SHA1-Digest: E/mBhY9wNG5VaFmW6qL4iXjAHvY= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_62 SHA1-Digest: C2zdTbDUsHHOOdTxAqDglz9LuHI= Name: res/drawable-hdpi-v4/ic_dialpad_white_24dp.png SHA1-Digest: ukq3bmPeQHlcjILimK53COmRM5I= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_61 SHA1-Digest: 7c51UKlqpVDI3o2A/s0k4nNgKCA= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_63 SHA1-Digest: a7U/pmtZHFBo5obxPjewjKWkGa8= Name: res/drawable-hdpi-v4/ic_recurrence_bubble_outline.png SHA1-Digest: 8mGZECazDoQbCTJL8WAIWh+KGPs= Name: res/drawable-mdpi-v4/icon_lock.png SHA1-Digest: 0w8rXRPZI28+gPou427g9RzDTUM= Name: res/drawable-xhdpi-v4/abc_btn_switch_to_on_mtrl_00012.9.png SHA1-Digest: O6x52IgsWeKV4Xdu5U2H2IxbVgc= Name: res/layout-v17/abc_alert_dialog_button_bar_material.xml SHA1-Digest: JyQAez6kQCbcigDs2z/nSmQuSYo= Name: res/drawable-xhdpi-v4/abc_list_selector_disabled_holo_light.9.pn g SHA1-Digest: bwjSzuahpvwVgJavscLUKen/ZqQ= Name: res/layout/abc_action_bar_title_item.xml SHA1-Digest: JePlqdhFAVxMv4b6ytoiCrX6ghM= Name: res/layout/color_preference_items.xml SHA1-Digest: /OV6OKHQivYRh4P5Xmq1+fdcz8k= Name: res/layout/notification_template_part_chronometer.xml SHA1-Digest: dzQtd/RKeHhfMLTfmeJLOxUNfdA= Name: res/drawable-xxhdpi-v4/ic_emoji_nature_normal_light.png SHA1-Digest: irbPkaiv3NQ3eYZERKzfv9yBG0w= Name: res/layout/zooming_image_view.xml SHA1-Digest: v8hYwtg/deZRi/NqPvzpCqBUaM4= Name: res/animator/upper_play_to_pause_animation.xml SHA1-Digest: 7f8HiUwoTj84cBIvXQhtx6kFMlc= Name: res/drawable-hdpi-v4/ic_send_insecure_white_24dp.png SHA1-Digest: XNk5jZwbAktbwvDiJ9gFsob2ug8= Name: res/drawable-mdpi-v4/ic_volume_off_grey600_18dp.png SHA1-Digest: 7c0EwppLt2vWdCJHYSeZzLOerCg= Name: res/drawable-xhdpi-v4/ic_photo_camera_dark.png SHA1-Digest: xmGv8Id61t3QBoSXhTMQIuh1fMc= Name: res/drawable-mdpi-v4/abc_ab_share_pack_mtrl_alpha.9.png SHA1-Digest: deH5E0yKjBo6CYdnvx70e1ZcVb4= Name: res/drawable-xhdpi-v4/ic_block_white_18dp.png SHA1-Digest: +mYTL+dLl37rrmzqXIMss3kAfWg= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_58 SHA1-Digest: LqgBINJBQXrfS7qSEUdO2YKapSc= Name: res/drawable-hdpi-v4/ic_emoji_flags_normal_dark.png SHA1-Digest: AY66CHRZpDIF8mLkrCS9dfohLHc= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_55 SHA1-Digest: aHXhcJ44Nq+1uITpH9udVnAuQjI= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_54 SHA1-Digest: 0pJTmVMR2tNAUtn+uRmLAqWmQnM= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_52 SHA1-Digest: a5Rio2BfCR5r/5jH/4aK85mYB60= Name: res/drawable-xxhdpi-v4/ic_warning_dark.png SHA1-Digest: /RxhT72cwoQLuIL6NL3fNyxrHAE= Name: res/drawable-xxhdpi-v4/ic_delivery_delivered_dark.png SHA1-Digest: wDUNsUxrly/X82wiKUkKCnSH9xQ= Name: res/drawable-hdpi-v4/ic_brightness_6_black.png SHA1-Digest: sNn2cEEK3mhmChlw56v3NZWc+PU= Name: res/anim/abc_popup_exit.xml SHA1-Digest: HpgqoyyC+fdyFrYE8t6l+v0+Y4c= Name: res/drawable-hdpi-v4/abc_scrubber_track_mtrl_alpha.9.png SHA1-Digest: dEml7NSraw7t0+4lZ4iFeNS5MxI= Name: res/drawable-xhdpi-v4/abc_switch_track_mtrl_alpha.9.png SHA1-Digest: DnUPb3c/aCYMPIdhLVRqT1eh/J8= Name: res/drawable-xxhdpi-v4/ic_cancel_white_24dp.png SHA1-Digest: qXcnrshlwqOoKMyTfdqDJvESxg4= Name: res/drawable-mdpi-v4/ic_done_all_white_18dp.png SHA1-Digest: cs2HuS0orrt73+am04haXgUKE68= Name: res/drawable-mdpi-v4/ic_brightness_6_gray.png SHA1-Digest: iZ7h/BCqiG1zxjUl+/NNSnjBD34= Name: res/drawable-xhdpi-v4/ic_emoji_flags_activated_light.png SHA1-Digest: MEtoOMqwvAYWz6fkJUBDVzRUkKY= Name: res/drawable-mdpi-v4/design_ic_visibility_off.png SHA1-Digest: 3oMRQReSGSp08y2pMlOzFR4ywCY= Name: res/drawable-hdpi-v4/ic_photo_camera_light.png SHA1-Digest: wUu5bASnG15UjJ3p/oz6Cbqsubg= Name: res/drawable-hdpi-v4/ic_image_light.png SHA1-Digest: LuLestvVAdcTp5lhGpkzn75c57Y= Name: assets/emoji_symbols.png SHA1-Digest: n7FK0HOrvqZV7o1ufIX1wGOrcIg= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_675 SHA1-Digest: yhEc8jlPKXbvDhLFNca0Uc/VhxE= Name: res/drawable-xhdpi-v4/ic_done_all_white_18dp.png SHA1-Digest: bds2Iuy5nv0qlbNhMazdU+Qx96M= Name: res/drawable-xhdpi-v4/ic_delete_gray.png SHA1-Digest: sbblR+7QPwVjl8EICQ8WnvL/CrQ= Name: res/drawable-xxhdpi-v4/ic_textsms_grey_32dp.png SHA1-Digest: rgFpKvXoZtZMqWY7J5a/bhjpYkM= Name: res/drawable-mdpi-v4/ic_lock_white_18dp.png SHA1-Digest: 0pWTZiXP7gNmX7x0dMXFWAxf4Es= Name: res/drawable-hdpi-v19/switch_thumb_pressed_holo_light.9.png SHA1-Digest: uOrxuPdeG1Hgke4uVegUhdTfRG0= Name: res/drawable-hdpi-v4/ic_emoji_recents_normal_light.png SHA1-Digest: 73HeZsh5EL0NGvcwdf4w0XrGYYk= Name: res/drawable-mdpi-v4/ic_send_secure_white_24dp.png SHA1-Digest: nCLy3tQbOKq07y50ZIUTpcjnhnc= Name: res/drawable-xxxhdpi-v4/ic_block_grey600_18dp.png SHA1-Digest: Wnx7f/cklcGcPj6qR93gMkqNkw4= Name: res/drawable-xhdpi-v4/switch_thumb_disabled_holo_light.9.png SHA1-Digest: MYtF9U4u3mtwL6bJwMkzyLB2Ubo= Name: res/drawable-xhdpi-v4/ic_info_outline_white_24dp.png SHA1-Digest: QPuwWkulg9WVT/Ig3MFtFD3gtQI= Name: res/layout-v16/conversation_item_pending_v11.xml SHA1-Digest: x9oNv7tpQZ8h//UjTjWDz9rEGbg= Name: res/drawable/design_snackbar_background.xml SHA1-Digest: awjecjomEXMebQo/pzfxBHj9VwI= Name: res/drawable-xhdpi-v4/abc_scrubber_control_off_mtrl_alpha.png SHA1-Digest: TE1PNkVCa4/Qe4l6j08Ay94JJoI= Name: res/drawable-hdpi-v4/ic_create_white_24dp.png SHA1-Digest: Ngp6bz1KSL3ekincx4aKU3E5mfY= Name: res/layout/key_caching_notification.xml SHA1-Digest: 4pK9XkXluFEWCEkoL0lDgtVJAeY= Name: res/drawable-xxhdpi-v4/textfield_activated_holo_light.9.png SHA1-Digest: VMleSAHQjnh30LIfWAOzY1IDlbw= Name: res/drawable-xxhdpi-v4/ic_movie_creation_dark.png SHA1-Digest: 1ED3QTApITyFoHxJsk+Sjudbfqg= Name: lib/armeabi/libcurve25519.so SHA1-Digest: DZp6sKgPx0OIH7QnfWd10/xDWKo= Name: lib/x86/libcurve25519.so SHA1-Digest: UFYy6nU/81SXbTSt27hCeprBEmw= Name: res/drawable-mdpi-v4/ic_menu_search_holo_light.png SHA1-Digest: HtE3Ob4am+aTd0cb+2FlBJSI1WM= Name: res/drawable-xxhdpi-v4/abc_textfield_search_activated_mtrl_alpha .9.png SHA1-Digest: Ay1qOaJ2aLiCf8NAaujbkp0H1cQ= Name: res/drawable-hdpi-v4/abc_ic_star_black_48dp.png SHA1-Digest: nrSR6Cj5AAFhLDBo5XOuCzzOUCE= Name: res/drawable-mdpi-v4/abc_text_select_handle_middle_mtrl_dark.png SHA1-Digest: sk0rERRHxBHTLx83NS6FqhClw8o= Name: res/drawable-xxhdpi-v4/ic_lock_dark.png SHA1-Digest: uoZ2hSKRtpk3d1wsVK3LXBQdgSg= Name: res/anim/abc_fade_in.xml SHA1-Digest: ohPEA4mboaFUu9LZMUwk7FmjbPI= Name: res/drawable-xxxhdpi-v4/ic_archive_white_24dp.png SHA1-Digest: iju5YbRtUrYl8YP0bfxGlwX109c= Name: res/drawable-hdpi-v4/ic_volume_off_grey600_18dp.png SHA1-Digest: t/JN4l5yRXI5ZpGVy8IoYghOVUY= Name: res/drawable-sw600dp-hdpi-v13/ic_backspace_normal_dark.png SHA1-Digest: 1XmRIrHr1R9bw9Pzq9j8mLDE+4o= Name: res/drawable-xxhdpi-v4/ic_recurrence_bubble_outline_disabled.png SHA1-Digest: 9mCG2i/EzxrsD9HbYPQDcXflt/o= Name: res/layout/abc_search_dropdown_item_icons_2line.xml SHA1-Digest: Hg4wvo3SofqoQb9PWlHfHhYuR1w= Name: res/layout/abc_screen_simple.xml SHA1-Digest: L+lDjRkMzyxbAEO55AhMboq9FFA= Name: res/layout-v17/conversation_title_view.xml SHA1-Digest: 0pyo8pUsPgwnEZ8+uELR5HJoyv4= Name: res/layout/conversation_item_sent.xml SHA1-Digest: W1QeAnoXO2z0N2cryym2JlweNcc= Name: res/drawable/share_list_divider_shape.xml SHA1-Digest: 74uWk5jveXzr1FmYQ3DdIhPD8bs= Name: res/drawable-hdpi-v4/abc_text_select_handle_right_mtrl_light.png SHA1-Digest: 0Gfqa0wEfQSI0mKJkwlXlJWSicQ= Name: res/drawable-xhdpi-v4/ic_pause_circle_fill_white_48dp.png SHA1-Digest: 1z1oT+i1Qhlq1r7uREl2qmGlIZ0= Name: res/drawable-xxhdpi-v4/design_ic_visibility_off.png SHA1-Digest: VjW4QDbjDLSVWJK4Q5sW5G0r540= Name: res/drawable-hdpi-v4/ic_emoji_symbols_activated_dark.png SHA1-Digest: 62PkF1Y+j3pWj/LSKskVoqGfrTE= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_255 SHA1-Digest: T8Y8UPJDNNY3gi+RvAerX30aAJ4= Name: res/drawable-xxhdpi-v4/abc_list_focused_holo.9.png SHA1-Digest: FsvLP65iWVfEfIkCPXw4wimwY7M= Name: res/drawable-xxhdpi-v4/textfield_disabled_holo_light.9.png SHA1-Digest: IbsyrIi5P4z5+3CcgDwoUkpzMUI= Name: res/drawable-hdpi-v4/ic_menu_barcode.png SHA1-Digest: p14R9rQhMUiRkgh9WUV9xkIM0ek= Name: res/layout-v21/notification_template_custom_big.xml SHA1-Digest: +NAV2xQcf+GDqwoSFHM5HWE+f5M= Name: res/drawable-xxhdpi-v4/sms_system_import_icon.png SHA1-Digest: L2uEmxsqPsX+b2hwagV3mviRdwg= Name: res/drawable-xxxhdpi-v4/transfer_controls_background.9.png SHA1-Digest: wFp+tXS4iMWJJHESG7JNSLvEj4E= Name: res/color-v23/abc_tint_edittext.xml SHA1-Digest: fRj3PTupUzBlYT1O+bKkZbmomws= Name: res/layout/conversation_title_view.xml SHA1-Digest: JeLUgqidsv6MxG4zOZqri0P6L1k= Name: res/drawable-mdpi-v4/ic_emoji_recents_activated_dark.png SHA1-Digest: ZIQ+n3B5THl/aA/uXVzPpIVqpu8= Name: res/drawable-xhdpi-v4/abc_list_pressed_holo_light.9.png SHA1-Digest: 5rSZbdJDOTdM5kJhhIdl8m8briI= Name: res/drawable-xxxhdpi-v4/ic_forum_black_32dp.png SHA1-Digest: Qs+P4ybw3XFue+Vv0FWx4k95zPg= Name: res/drawable-mdpi-v4/ic_clear_white_24dp.png SHA1-Digest: HGIeDdMwnH0fkemT6lO7+z+z2Rs= Name: res/drawable-xxxhdpi-v4/abc_ic_star_half_black_36dp.png SHA1-Digest: dd2zj6sr+xRmZWNPRjYGn37/Nm8= Name: res/layout-v17/notification_template_big_media_narrow_custom.xml SHA1-Digest: qdhlc+Z9n+jv4RmCx3JQOeRSvWs= Name: res/drawable-mdpi-v4/ic_advanced_gray.png SHA1-Digest: UhBepQMxsiJjJCgarZj183ZjXrI= Name: res/menu/conversation_list_batch.xml SHA1-Digest: NYPIJ4od1qC/qiyUnYQLKAYhHVc= Name: res/drawable-hdpi-v4/textfield_disabled_holo_light.9.png SHA1-Digest: E/schz5NibOcz8He1B5Tsu3ujfk= Name: res/drawable-xhdpi-v4/fab_shadow.png SHA1-Digest: LbvYC5hiRMwHEfAlnuyydhdGSvs= Name: res/drawable-hdpi-v4/abc_btn_check_to_on_mtrl_000.png SHA1-Digest: 6nL94lpOIDhHAcaZP6Numi9gbpw= Name: res/drawable-xxhdpi-v4/ic_block_white_18dp.png SHA1-Digest: nbznVH+OZUkhsULWW5q/YEszBpE= Name: res/drawable-hdpi-v4/ic_check_white_24dp.png SHA1-Digest: OxuZuuMKpWfGpoioNb4jTXrydVM= Name: res/drawable-xhdpi-v4/ic_volume_off_white_18dp.png SHA1-Digest: GbAswuzUqZ8xPXxHCKNWmwCYd6E= Name: res/drawable-xhdpi-v4/ic_emoji_emoticons_activated_dark.png SHA1-Digest: 65J8tJ8nazlcXEWEJIFnxPojdPQ= Name: res/drawable-xhdpi-v4/ic_warning_dark.png SHA1-Digest: TSk/H6nGa9ShavF3v2CooQifPqQ= Name: res/drawable-xxxhdpi-v4/ic_unarchive_white_24dp.png SHA1-Digest: Na2uHss6q/itXXPxfstb8nuqLqM= Name: res/drawable-hdpi-v4/ic_visibility_off_grey600_24dp.png SHA1-Digest: 5h5ymBcJ8muWnOdsJHDYhc4i6kQ= Name: res/drawable-v11/emoji_category_recent_dark.xml SHA1-Digest: M/SBX1z1roN+u5+TvQZXKJDNEyA= Name: res/layout-v21/conversation_title_view.xml SHA1-Digest: pwOa8NNzv9FW4Byauw63ZA3uUBw= Name: res/drawable-xhdpi-v4/ic_emoji_symbols_normal_dark.png SHA1-Digest: OCGkcF4VjaLue66XVwzxR4E/DVU= Name: res/drawable-xxhdpi-v4/ic_visibility_off_grey600_24dp.png SHA1-Digest: 4EhqySAhGMjjioXSTtBhegZniW4= Name: res/drawable-mdpi-v4/ic_content_copy_light.png SHA1-Digest: Tbu8D45KApwF0j9Iqaq3JNuAJzI= Name: res/drawable-mdpi-v4/abc_ic_menu_selectall_mtrl_alpha.png SHA1-Digest: c+ieuII6udSDVml51EH3TH6KocA= Name: res/drawable-hdpi-v4/ic_group_photo.png SHA1-Digest: wgViwvlG62FHBV5ncMDu6PtEO6c= Name: res/menu/conversation_list_empty.xml SHA1-Digest: EH9NTV8PcFGMG++Hx8fJwoRaBFE= Name: res/drawable-hdpi-v4/ic_backspace_disabled_dark.png SHA1-Digest: 8YzE4GMncrZ+4gIgTYYR3Eyhr9o= Name: res/drawable-v11/emoji_category_objects_light.xml SHA1-Digest: dlH2HhMroPwNKuyPK/wa2qVt4us= Name: res/drawable-xhdpi-v4/ic_emoji_recents_normal_dark.png SHA1-Digest: wmITBG3cxEr5qR1vodWt+Zpdf78= Name: res/drawable-mdpi-v4/notify_panel_notification_icon_bg.png SHA1-Digest: cz2cTpSbxUR34pkCMo3M7a+mSXk= Name: res/drawable-xxhdpi-v4/ic_emoji_emoticons_normal_dark.png SHA1-Digest: lhZMiOtWUnBWeRzit1Bmdw5KA3A= Name: res/drawable-xhdpi-v4/divet_lower_right_light.png SHA1-Digest: IPMXi0EeD3blOSp6zdpBDLmMWEE= Name: res/drawable-xhdpi-v4/ic_recurrence_bubble_disabled.png SHA1-Digest: pWhbPlICjQK4kqJ4SHeDAGwgsVo= Name: res/drawable-xxhdpi-v4/ic_forum_black_32dp.png SHA1-Digest: Qfv76qYo5Erl/u83Fmx5Xn0Ibzw= Name: res/drawable-v23/abc_control_background_material.xml SHA1-Digest: pzxqKcGy9TVMKjKlYEXVvvN4i/Q= Name: res/drawable-hdpi-v4/ic_backspace_grey600_24dp.png SHA1-Digest: Hu8/khhYfWT5MFNQFFr6RHFMxkM= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_679 SHA1-Digest: 6/VdOl5YznGBEI9ms/gjN2EAmLM= Name: res/drawable-hdpi-v4/notification_bg_normal_pressed.9.png SHA1-Digest: 4j+L3Jzr2U70TU9dUenWhtYe/lU= Name: res/layout/time_zone_filter_item.xml SHA1-Digest: 28+6W1yXeXu6XFfaCFQdzrQ1Kv4= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_676 SHA1-Digest: 1XvAC59RhdvXt568Lp9q68Lo95M= Name: res/drawable/conversation_list_divider_shape.xml SHA1-Digest: zlApN9XJCVuXQ1We2otYrGYB9eg= Name: res/drawable-xxxhdpi-v4/abc_btn_check_to_on_mtrl_000.png SHA1-Digest: 4yQp5RGqcPJVhL3STB21W1r3uqI= Name: res/layout/select_dialog_singlechoice_material.xml SHA1-Digest: PmLkdr92f9FO1MAZiEy9sa3O7as= Name: res/layout/conversation_fragment.xml SHA1-Digest: imqcO0Qv55NXbDTUsWTLPyp7UIM= Name: res/drawable-xxhdpi-v4/ic_add_white_24dp.png SHA1-Digest: Qku8XatHjewVAawjvYnuiZY4LGU= Name: res/xml/preferences_app_protection.xml SHA1-Digest: 9K48G4lRnTbj45HtueNF62GZyUQ= Name: res/color/abc_primary_text_material_light.xml SHA1-Digest: EIjy4txXpS0l3VDPyUffGzfmq7s= Name: res/drawable-hdpi-v4/ic_circle_fill_white_48dp.png SHA1-Digest: w+y2NMFiofz+FELl4O5Fyv60DS4= Name: res/drawable-xhdpi-v4/ic_visibility_white_24dp.png SHA1-Digest: 2RQxp9VFspE9+RuD0icuTndloG8= Name: res/drawable-v21/conversation_list_item_read_background_dark.xml SHA1-Digest: n/NmqVLIR9zVMMnu7LxltyAUCeU= Name: res/drawable-xhdpi-v4/transfer_controls_background.9.png SHA1-Digest: 8DAsQxUNQf9+eMV1afbdEo/rFik= Name: res/drawable-v11/emoji_category_places_dark.xml SHA1-Digest: 0oWB2rwfMOzZwePPI6yYOKPyde8= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_ZA SHA1-Digest: HWSEptWtloOrttDr/x5o5L1sJLQ= Name: res/drawable-xxhdpi-v4/ic_error_red_24dp.png SHA1-Digest: ijvKMR4e/QoYligG+DTtXzpURlQ= Name: res/drawable-xxhdpi-v4/ic_emoji_objects_normal_light.png SHA1-Digest: jS+19gJTC15KDBNIcerxbQGYb0U= Name: res/drawable-mdpi-v4/switch_thumb_holo_light_v2.9.png SHA1-Digest: 7aafjURul6zc7RhhsHx7QCLPozc= Name: res/drawable-hdpi-v11/icon_cached.png SHA1-Digest: fk0Ia1PUNcHHbOt6goi1SYZxllw= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_YE SHA1-Digest: KwySfk0V8V1me0EHaLVWj+r29v4= Name: res/drawable-hdpi-v4/spinner_disabled_holo_light.9.png SHA1-Digest: MGzyk0nLOAXBSKZz0u82JCFSpS8= Name: res/drawable-xhdpi-v4/ic_emoji_nature_normal_light.png SHA1-Digest: 0UxsunD6MZeM52tav+Sx2ggqzMA= Name: res/drawable-mdpi-v4/abc_list_selector_disabled_holo_dark.9.png SHA1-Digest: +bjkZfnp7jH8HvA5wzYQ85O04Ic= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_ZW SHA1-Digest: zyxT3C3km6FQpGLM6uiQ5SXSmLg= Name: res/drawable/abc_switch_thumb_material.xml SHA1-Digest: sujPDGksEdg29cR87ymiy/LIS08= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_800 SHA1-Digest: VQ7yxCBmjjhBc2h0DHh2WZa6Plk= Name: res/drawable-xxxhdpi-v4/abc_btn_switch_to_on_mtrl_00012.9.png SHA1-Digest: eQ8hrqPRD0qhhaJWghhXuxRIxBA= Name: res/drawable/psts_background_tab.xml SHA1-Digest: BcRKjO2FMY1kWhZ9ye4ab7iUMGY= Name: res/drawable-hdpi-v4/ic_emoji_recents_activated_light.png SHA1-Digest: 73TSiB2efL7RgRDQplbPAML1u7g= Name: res/drawable-v21/avd_show_password_1.xml SHA1-Digest: YuYYvVgGf2BDuviigWAZ6CSTUlI= Name: res/layout-v16/transport_selection_list_item.xml SHA1-Digest: mOTmOB34VU47Jv9iJNx/G3jS044= Name: res/drawable-xxhdpi-v4/actionbar_icon_holo_dark.png SHA1-Digest: Jy9cJ/v2OcBZ+s3nT0rWv5iYufo= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_808 SHA1-Digest: secXPmyfPmQJi8JgLe+sgOvs3tI= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_ZM SHA1-Digest: IgMlNFS8WlUTmWFHpuatLuUd5L0= Name: res/layout/support_simple_spinner_dropdown_item.xml SHA1-Digest: iR6msV+/uQtXanyZ5kWveK47AO0= Name: org/spongycastle/x509/CertPathReviewerMessages_de.properties SHA1-Digest: 5WleEyCLesz39ayL3AH9lOktT8k= Name: res/drawable-xxhdpi-v4/ic_emoji_emoticons_activated_dark.png SHA1-Digest: YMPNigCFda0HibnB+2s6FAh+vJs= Name: res/drawable-hdpi-v4/icon_dialog.png SHA1-Digest: xu2YVmS2ywmCB69j7trlUUEPuZA= Name: res/drawable-mdpi-v4/ic_message_white.png SHA1-Digest: +w8RRj9KX7dPy/Adp2Qq+CIYA/E= Name: res/drawable-xhdpi-v4/ic_account_box_light.png SHA1-Digest: GhgV+uR3Z73NVnG3DuVxk/uZwcY= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_WS SHA1-Digest: +RPU13Dhj2ssunWgDZrzz36ikAM= Name: res/drawable-v21/avd_hide_password_2.xml SHA1-Digest: RLmxslaJgHf4Ik5/GckT8IWoKqo= Name: res/menu/conversation_context.xml SHA1-Digest: 3utfdOyLlXhynowrazANJ8IGV9k= Name: res/color-v11/abc_hint_foreground_material_dark.xml SHA1-Digest: osswxebFdMfNI2xvUWBEke0BY54= Name: res/drawable-xxhdpi-v4/switch_bg_holo_light.9.png SHA1-Digest: ZkARNjiagqJDUodedGobTGvG6LA= Name: res/drawable-xxhdpi-v4/ic_audio_dark.png SHA1-Digest: zLGA7QqW1McCG5nfNBdVMglGmEM= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_WF SHA1-Digest: /4S4qTkSykY+gjBJ020xd3Mt47s= Name: res/drawable-hdpi-v4/ic_video_light.png SHA1-Digest: xNkPXqmLwBtYEk4H/G9l6sD2cqk= Name: res/drawable-hdpi-v4/icon_cached.png SHA1-Digest: 9k1/m3HDHo/YBPFsVeGkA3z7Db8= Name: res/drawable-hdpi-v4/spinner_default_holo_light.9.png SHA1-Digest: /GXGxE5W4VqGLNi5sm4OsXq19RM= Name: res/drawable-hdpi-v4/ic_warning_dark.png SHA1-Digest: Wdv5gXdXqtarsNsBQ+zyjPB8zI4= Name: res/drawable-hdpi-v4/ic_unlocked_white_24dp.png SHA1-Digest: UysqWQKotJrYdp1DotaD3nKWT1o= Name: res/drawable-xxxhdpi-v4/ic_dialpad_white_24dp.png SHA1-Digest: 0huv0s6rm8+ETQqEkmQx7pTsSPw= Name: res/drawable-xxhdpi-v19/switch_thumb_pressed_holo_light.9.png SHA1-Digest: c+lEvuW/Yx/kDPuWk7ZqybxGgAA= Name: res/drawable-xxhdpi-v4/ic_emoji_nature_activated_light.png SHA1-Digest: ckvK4anIFUHTqiKLDXqzClObLSw= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_VI SHA1-Digest: u4QMKOB/UTKCIveQQx53+biWivk= Name: res/drawable-xhdpi-v4/ic_block_grey600_18dp.png SHA1-Digest: GtptkP4aFB4aFPBMWE8AYUYT1nY= Name: res/drawable-hdpi-v4/abc_list_selector_disabled_holo_dark.9.png SHA1-Digest: h7hNXJrcbvKMv9bbGrTrvd0dOgs= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_VG SHA1-Digest: u1dBl8DX8F6OTi0EIbNghWhH5/g= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_VU SHA1-Digest: KluzeeNz90zUA0+WHVXi+IxkBm8= Name: assets/emoji_nature.png SHA1-Digest: UzSuz2fUlzCNe6CCmT2tNzzmzVs= Name: res/layout/expiration_picker_dialog.xml SHA1-Digest: Ba5U1l0bt1uC1+SbaWeaFa/YsxU= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_VN SHA1-Digest: co90EcVs313xpVAM1YRp/+HUSws= Name: res/drawable-hdpi-v4/ic_info_outline_white_24dp.png SHA1-Digest: XdMSJl8GFez0ez6Va9vW9b2uJio= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_UZ SHA1-Digest: /2xIxtVuHa5w34Wpiam/BcQwVcQ= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_UY SHA1-Digest: j5zMbXVAStT3gdUhhFL/LiX+uEY= Name: res/drawable-mdpi-v4/ic_emoji_recents_activated_light.png SHA1-Digest: BcL12X6gKFeCTD7rSc8Bn/txkl4= Name: res/drawable-mdpi-v4/ic_select_all_white_24dp.png SHA1-Digest: zvNzeJTvoRsgbjC9gA5khsnmeGc= Name: res/drawable-xhdpi-v4/ic_recurrence_bubble_outline.png SHA1-Digest: jYb94n9lCufbf+hthFfiSg6mnXg= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_VC SHA1-Digest: fpnjelH1AuqJw51MUNnInElgMt8= Name: res/drawable/abc_edit_text_material.xml SHA1-Digest: Kcap9wHIg3pDdpEtot8/QDSYxXI= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_VE SHA1-Digest: AJYFVptQOVKp4KU7zHPyPryZAdA= Name: res/layout/abc_action_bar_view_list_nav_layout.xml SHA1-Digest: jJclJPApMmkMg6WFlVS0OdEfW1I= Name: res/drawable-mdpi-v4/ic_visibility_off_white_24dp.png SHA1-Digest: 1Gh902UPnMaEV3xZb0/kZ9QSVOM= Name: res/drawable-xxxhdpi-v4/abc_switch_track_mtrl_alpha.9.png SHA1-Digest: NdBd5wlMLy/yNmcs71lpwiAvUZ8= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_VA SHA1-Digest: 9w+jf1huzkfR13xYd3N0vtF+wUI= Name: res/drawable-mdpi-v4/ic_emoji_nature_normal_light.png SHA1-Digest: M3ulDINItL0wOUdzkp1rqJOPFaY= Name: res/drawable-xhdpi-v4/divet_lower_right_dark.png SHA1-Digest: T3X3fDMT80ZbJwIEbajnSo8mJmk= Name: res/layout-v17/select_dialog_singlechoice_material.xml SHA1-Digest: 7HHmK3lZ6u8c9GLARn1n4FIoUCI= Name: res/drawable-hdpi-v4/ic_video_dark.png SHA1-Digest: sUzWLFSSc1qNA1S6d7ojj6htC68= Name: res/drawable-hdpi-v4/ic_emoji_flags_activated_dark.png SHA1-Digest: gIY9sjCgyZyEH3Q+xIqsz4CoLwg= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_UG SHA1-Digest: gFH9T88Py82w/RocQ9Xc31cbmaY= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_US SHA1-Digest: il/0ep0wuUDP0jDa0kSCoBvRkYU= Name: res/drawable-xhdpi-v4/ic_brightness_6_black.png SHA1-Digest: yFd3XDUwyUxk/5hkue5her15z08= Name: res/color/abc_tint_btn_checkable.xml SHA1-Digest: SGaPZV/IujUxg59cUi+b3Ps6gSw= Name: res/drawable-xhdpi-v4/abc_scrubber_control_to_pressed_mtrl_000.p ng SHA1-Digest: mEMOENu6EbIk3bOPlINzieiI52k= Name: res/drawable/share_list_divider_shape_dark.xml SHA1-Digest: 1wABzykpOZCe9blX2Jp1W/nfCUU= Name: res/drawable-hdpi-v4/notification_bg_normal.9.png SHA1-Digest: ralFi/xjLzZzimSmlAGCFAUgfbE= Name: res/drawable-mdpi-v4/ic_textsms_grey_32dp.png SHA1-Digest: UoW15gUaJg10ilF5zDll1OlPmAM= Name: res/drawable-hdpi-v4/ic_arrow_forward_light.png SHA1-Digest: NeO4gGycsp3aj8v/zJa1Ps1Ze0E= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_US SHA1-Digest: FguG/1bNC+VKBtliTjtv4mk2mDA= Name: res/drawable/abc_btn_default_mtrl_shape.xml SHA1-Digest: si9J2ga8fSgrnHUBNteE65S6TvA= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_UY SHA1-Digest: dgPt8YWiUyFD5V1kDUlLFSEvOMY= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_UZ SHA1-Digest: ETmSkp/kr3ETy3FpjTMB3cNQkw8= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_UA SHA1-Digest: c1urxUE1X8cOZb134l7CWkhP3rs= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_TV SHA1-Digest: 8jbXaS3Q9+lFdBxmy8Jf/Aw+L6M= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_TW SHA1-Digest: Bx0363s82M2yDQ3/PXBkPKxOgxQ= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_TT SHA1-Digest: usJn33qlB78Wm+Mnsb/pbOTDXl8= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_TZ SHA1-Digest: H6C/AEzFuZvOMBs4onnHSvp6VPE= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_VC SHA1-Digest: PnZ6nbbRHEsEanMMdu6SeYQM+BE= Name: res/layout/verify_identity_activity.xml SHA1-Digest: 04YjTi+jpVoDQz1sjtEvgEy3XY0= Name: res/drawable-xxhdpi-v4/ic_visibility_grey600_24dp.png SHA1-Digest: UB/rxIB0gqxdEkFZnuG+Zi980EE= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_VA SHA1-Digest: 188Mly82P5UZg8PYFx4iFxy3hT8= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_TO SHA1-Digest: tm7R7FWwpZtQ8KfvtEedQHM2T/E= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_VG SHA1-Digest: UEROpdLmPPQdfd2uh9LGAcZs6Ho= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_TN SHA1-Digest: i+pSpgdAHP1DEjGT5VAN0AB1FOQ= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_TM SHA1-Digest: FKj05/S7SD0OGcmSf0Mnij28XzE= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_VE SHA1-Digest: 8tLlMmLIeS/VyFiohcvxYRN6g6Y= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_TL SHA1-Digest: qk3P3aaSNAAZ7hcLrQQC9wLj7NU= Name: res/drawable-hdpi-v4/ic_menu_lock_dark.png SHA1-Digest: CSK9tQSV9EYPt8YQiRV20zlDKuI= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_TR SHA1-Digest: 4V4Zri42zI2GNSlL754ohVozew8= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_VI SHA1-Digest: /Y4YNwaXJvPLPCGT6sKZ5skh5Wg= Name: res/drawable-sw600dp-mdpi-v13/ic_backspace_normal_dark.png SHA1-Digest: 3pdkXG0U9+VaN4jTez3qBgj9kd8= Name: res/anim/abc_slide_in_bottom.xml SHA1-Digest: ZliTihZ+8kHBA4SfvPIPI00Y7uE= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_TG SHA1-Digest: +EJqYx+4+2fV4jy8BXB8Ju6AF4s= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_VN SHA1-Digest: ylwSFPDIGFBoDIZlkwEFVw15oJU= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_TD SHA1-Digest: Z8NWrFk5XT6IO7pxED6+3r2/6QE= Name: res/drawable-hdpi-v4/check_dark.png SHA1-Digest: JeAdAnO45vwsnB4Vrx6WWJkBvj0= Name: res/drawable/abc_textfield_search_material.xml SHA1-Digest: stH8NpmjaXc5dKXq4DDXvkOo1rI= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_TJ SHA1-Digest: ern0tUEKpLBiftv9icrLQBezF0w= Name: res/drawable-xxhdpi-v4/ic_lock_light.png SHA1-Digest: SWIn7r4svFznDykxDqMKDwr//Sw= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_TH SHA1-Digest: GoNQQZa72w2BLHU0jeRG3Evxo3s= Name: res/drawable-mdpi-v4/ic_search_holo_light.png SHA1-Digest: wl3lhUm2ZwGo28/ben0kwjKT8pA= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_VU SHA1-Digest: mQMFe27fmtRuUsiRy5e1Hz7kgtk= Name: res/drawable-v21/abc_ratingbar_material.xml SHA1-Digest: rf6f8HRUlLAVKAAEFPxwQP5tJB4= Name: res/drawable-mdpi-v4/textfield_activated_holo_light.9.png SHA1-Digest: CSfVZiTZ8M4gHRjhPdVvKlLuXxE= Name: res/layout/alert_view.xml SHA1-Digest: mDZtD4RPbsWmJmNgpKT/bBjKPKU= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_TC SHA1-Digest: Rj4tCkFDmTE77Y5vsRjSPFdSo2E= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_ST SHA1-Digest: yxKmWo/k7slOiHCEWI4oTCfO44Y= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SV SHA1-Digest: bhAVs5VJO6Kglb9AhX4ZpmekpWA= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SX SHA1-Digest: xFKI+cG3XqRTIbBQBcwbcP4ejOg= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SY SHA1-Digest: Wghv1Ip+Ik1tzCY+cIbbwAWJtvs= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SZ SHA1-Digest: lDImT3tOekqJXhoHcO1BZTmNuOk= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SL SHA1-Digest: ViOHYZ5tA1kKYLU5oxd1T1NX81s= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_WF SHA1-Digest: zdHkQyT5NcHZEBl82LwJubdeIdc= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SK SHA1-Digest: M0nkF1/dp7V7vVRMuhHC1Snssks= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SN SHA1-Digest: z/kRounLTc36PGhi1pw/lKJJzQk= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SM SHA1-Digest: g53opthSVmnaVTV3atuKGOstmQU= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SO SHA1-Digest: KSRNHIYQ0e6efkGKn+BGHdipOps= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SR SHA1-Digest: x8dytP/U1NDztnevXJAhcQgGCr0= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SD SHA1-Digest: RsphnVUDcjIqd2Me7otSCTAsdYQ= Name: res/drawable-xhdpi-v4/ic_backspace_normal_dark.png SHA1-Digest: vCregZmhcawd3oxjzFAxaKv7+wo= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SC SHA1-Digest: ATdljVBVkg0xyx1vlI+QYxVog/4= Name: res/drawable-xhdpi-v4/ic_check_dark_disabled.png SHA1-Digest: c9TvWCMataZvt30VdBp4tsgJl0A= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SE SHA1-Digest: wuMCC1cOCIxrb0gnIyBjA1O1+zY= Name: res/layout/log_submit_activity.xml SHA1-Digest: mFxIQHJrxfWuKHCZZYnmdr10TFg= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SH SHA1-Digest: yUVejapiW053pX6aCnxUh8O/+RU= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SG SHA1-Digest: P+c28dyzrj0X0EGA4zcCv4ZsodE= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SJ SHA1-Digest: k/yiXJ4fBf9vcV81YwAK6HOIoG0= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SI SHA1-Digest: CLN6AT7hAYgHQkrp7SzCH70HYDs= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_WS SHA1-Digest: zQfKFkaBS3JP0SXs2Eb30E7wgB8= Name: res/layout-v11/conversation_activity.xml SHA1-Digest: BfJ0kawRbogOsVpVKpy6Y5h+MQc= Name: res/drawable/notify_panel_notification_icon_bg_tile.xml SHA1-Digest: NA2be1PD5DUBJvxTh1FhUBH7Wrc= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SA SHA1-Digest: GWWoAi3+QWo6wXaQ+NnOuGHWu1w= Name: res/drawable-mdpi-v4/ic_emoji_symbols_activated_dark.png SHA1-Digest: vEgl+j5UI83zyi76+l+JT6WMbXw= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SB SHA1-Digest: 7fpMXARgPmbr9UOIfYxICiywJyY= Name: res/drawable-hdpi-v4/actionbar_icon_holo_dark.png SHA1-Digest: XHg0D2LrDWJ4gItWJClD9/KdhAs= Name: res/drawable-mdpi-v4/abc_btn_switch_to_on_mtrl_00012.9.png SHA1-Digest: wTxntWArKB7sDc4M27U+PpjZhyU= Name: res/drawable-xxhdpi-v4/ic_emoji_emoticons_activated_light.png SHA1-Digest: Gj01Pa4hhcmgA0gbjkiZRER0neI= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_RW SHA1-Digest: RCYkwY0tiUMtrESFWp9a3Qducs0= Name: res/drawable-ldrtl-mdpi-v17/abc_ic_menu_copy_mtrl_am_alpha.png SHA1-Digest: 4Hw7naTONE1358HTJi9mZTJ9Hto= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_RU SHA1-Digest: NKxP239IZ2RFpqKUpcVtdIPdR/c= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_RS SHA1-Digest: KfCSHnreYc10DXkyoqrQ7g1ohLU= Name: res/drawable-hdpi-v4/ic_recurrence_bubble_outline_disabled.png SHA1-Digest: //jfjpK0x0KAStiBOZcahuYO8/0= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_RO SHA1-Digest: fbKj3mr/MPcpJGDcmPL9yaVbqeY= Name: res/drawable-ldrtl-xxhdpi-v17/abc_ic_menu_copy_mtrl_am_alpha.png SHA1-Digest: QyrilM6n+5uQi4WyzI0NsxXANtA= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_RE SHA1-Digest: VzGjkv2kIMpz6HaR4zDEQS26lWY= Name: res/drawable/abc_seekbar_tick_mark_material.xml SHA1-Digest: DuFih8Np+ruXlGXOIY3g382yoTU= Name: res/drawable-xxhdpi-v4/ic_emoji_flags_activated_light.png SHA1-Digest: tn9CFDbJqK8F8ll57BoZ4uOfPMU= Name: res/drawable-hdpi-v4/ic_textsms_grey_32dp.png SHA1-Digest: +btEygrkMpaWi8H27RKsxcYsIvs= Name: res/drawable-xxhdpi-v4/ic_unarchive_white_24dp.png SHA1-Digest: eGo7lFHOkrFuGtuMSR3rtlw1Dmg= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_870 SHA1-Digest: 8o55DYA2mDrb+KQAHdgFwEx/Arw= Name: res/drawable-xhdpi-v4/ic_info_outline_dark.png SHA1-Digest: tfAOSivQsuBXllNPdqLwgnMkSrY= Name: res/drawable-v11/emoji_category_places_light.xml SHA1-Digest: otQWz5hG6GyV0LBHp4D53ScntYw= Name: res/drawable-hdpi-v4/ic_mood_grey600_24dp.png SHA1-Digest: sBjuE8eN8LsP4DgA/qf3R+VQhzU= Name: res/drawable-xxxhdpi-v4/ic_textsms_black_32dp.png SHA1-Digest: 1o7BWFksIfbiMrT6ULWnx4IGuig= Name: res/drawable-xxxhdpi-v4/design_ic_visibility_off.png SHA1-Digest: SkN1UCkcfqENTne0agcrTI4meiM= Name: res/layout/share_fragment.xml SHA1-Digest: Po6b1EYFz5RvkXc9Ej9y6nEYANE= Name: res/drawable-xxhdpi-v4/abc_list_longpressed_holo.9.png SHA1-Digest: VJa6PrhxyIRS2huzDuIN1KH+I2c= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_YE SHA1-Digest: mMAXt1ldfwA4jZOEV9L9APY/VS8= Name: res/drawable/abc_ratingbar_indicator_material.xml SHA1-Digest: jSCetwmEsQWxASeYyjO7YhmGUG0= Name: res/drawable-hdpi-v4/ic_keyboard_white_24dp.png SHA1-Digest: Xb8onJKRFqnjUkATX0pzbDFa1xw= Name: res/drawable-xxhdpi-v4/ic_emoji_places_activated_dark.png SHA1-Digest: bK61hZF4A5pJzsGBkjVYsmGMaXw= Name: res/drawable-hdpi-v4/textfield_disabled_focused_holo_light.9.png SHA1-Digest: oGMVOAgFtvWj0p2LugzZWDHKQac= Name: res/layout-v13/message_details_header.xml SHA1-Digest: HgcGcNE7DLdk+RiLkhsvANzr3BA= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_YT SHA1-Digest: gOFCEJdJx614hIUgV7jJpJFm6+Q= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_878 SHA1-Digest: QviNnJSaWUoKjPaQIgJku4PUjd8= Name: res/drawable-xhdpi-v4/abc_text_select_handle_right_mtrl_light.pn g SHA1-Digest: MoCkoRXaiGThFVhhLr4wDS0VuM4= Name: res/drawable-xxhdpi-v4/textfield_focused_holo_light.9.png SHA1-Digest: yTySMaFvSlprEgpEyEgjuVbWIFM= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_QA SHA1-Digest: mvoxqh9r7ANXEXsj08jCnSGDQ3Q= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_PA SHA1-Digest: a8JPsP2b17sR1vLRvn4enB0M9cI= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_883 SHA1-Digest: 2jum0IhxlGkbzkFJWFxDORTg6fA= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_882 SHA1-Digest: 8Z8M+V2ZWW6JbKr8gpgeHmqkkDY= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_PE SHA1-Digest: LAGQyeqw0vpHmJahDVWjbicRypk= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_888 SHA1-Digest: wMskIVvmx3HIcL5J2No10i2A9so= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_PF SHA1-Digest: zWX+LROUq7crirPHVUe9wtvIDIk= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_PG SHA1-Digest: JB7/lwiKpgbnSjQZm0QdpWXgj6c= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_RO SHA1-Digest: cRgBwAMis1D0rzYnNZC4yKikBoU= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_PH SHA1-Digest: VScGE9xLEHaBFBcEx52ltLOhRk0= Name: res/drawable-xhdpi-v4/icon_lock.png SHA1-Digest: CtVbaO3+Fr4E2yF9u45P4U9hUd0= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_PK SHA1-Digest: xgku4bi2sSKqu/lL62DBCeEoQJc= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_PL SHA1-Digest: 4xgcJ4W8i4tTJsX+E0X3cM4ubH4= Name: res/drawable-xhdpi-v4/abc_ic_star_black_16dp.png SHA1-Digest: oKK0tOor4SmX4ORpTg/URmuOtes= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_PM SHA1-Digest: oN42s58DbAWKwv2QpbH/hma1ZPc= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_RE SHA1-Digest: SwTsoKIYmEECNmj4+b+e320o1Pc= Name: res/drawable-mdpi-v4/switch_bg_disabled_holo_light.9.png SHA1-Digest: BhD8bo9CPDyMD8yAOdeT+l8P5Jk= Name: res/drawable-hdpi-v4/abc_scrubber_control_to_pressed_mtrl_000.pn g SHA1-Digest: 69Uq0XVEEDCz62q7/piNqhuoD7Q= Name: res/drawable-mdpi-v4/transfer_controls_background.9.png SHA1-Digest: Lvtopp/2tRzPP+kXqYiM9od0lTc= Name: res/layout/abc_expanded_menu_layout.xml SHA1-Digest: W73xs5NSOjkqj0jbh7TZZLI0Wy4= Name: res/layout/conversation_activity.xml SHA1-Digest: usVLHgIKhZH73OT/+CjrNGevW9A= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_PR SHA1-Digest: Myj2w+M/4RtwVizSQNUpSsLshXg= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_PT SHA1-Digest: okeuHjNb06deDvLDcvN4klXUc0M= Name: res/drawable-mdpi-v4/abc_cab_background_top_mtrl_alpha.9.png SHA1-Digest: 6eRtpYyE2B45gWd2aZtCG4kO5FM= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_PW SHA1-Digest: fS+u0XFqL3+38hIyY0REsvwFj00= Name: res/drawable-hdpi-v4/abc_list_focused_holo.9.png SHA1-Digest: zND8CPcT8wBLOji5D5ZGNvi5kR8= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_PY SHA1-Digest: jO1LxycY4SzKsCcwo1eY0+FeJ/c= Name: res/layout/emoji_grid_layout.xml SHA1-Digest: agZG8EI3nmW4V9cyw7bheN43nUI= Name: res/drawable-xxxhdpi-v4/abc_btn_radio_to_on_mtrl_015.png SHA1-Digest: goxOqApFWDjSlcueZaQmSCez9dk= Name: res/layout/abc_alert_dialog_button_bar_material.xml SHA1-Digest: tMCjLtUjSJOYwttMnMsOHdX7sD0= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_881 SHA1-Digest: yo5YOelCWqWBGVDlVa5WhxmL7w0= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SK SHA1-Digest: 96rchRUbtAKU313zQVKgv0N3qKc= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SL SHA1-Digest: OgDAr1TOCF/1N58CHLjTy1AgkUE= Name: res/drawable-hdpi-v4/divet_lower_right_light.png SHA1-Digest: HCYIERjn5GsGN9vKk35RvVJZUHk= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SI SHA1-Digest: UZr7IlrTal2j3ipUJUod8x4qlyU= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SJ SHA1-Digest: s4yyxk3g7P1pRuFzCSqGcpUjWQw= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SO SHA1-Digest: htGLLtSOMKfLL12h6HYrkSiOMBg= Name: res/layout/abc_dialog_title_material.xml SHA1-Digest: zsuhiCNtRRoeFekZBUtVN9Jqp+4= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SM SHA1-Digest: 5jAvH995sQVqVzNkgspOpG4x4X0= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SN SHA1-Digest: WcmT7aKYXTBdfV10S6WkAoFTF8s= Name: res/drawable-xxhdpi-v4/ic_backspace_grey600_24dp.png SHA1-Digest: MFcDn5r/1R3v4bm/8x0bsiYx63c= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SC SHA1-Digest: GBrFpRv3u/6flWJZDlVEGJPyd2c= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SD SHA1-Digest: PdfJzWjB3AA3T9ZmdyKDEOn0UKA= Name: res/drawable-mdpi-v4/ic_unlocked_white_24dp.png SHA1-Digest: fK28/63l+5jbANOBm3m+4Aw23Vg= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SA SHA1-Digest: 9BRv6ebxRlIr8BZ1K6mNexyiC3Y= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SB SHA1-Digest: /4etoF1Zt2u/o5Z3umH/uXMSgz0= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_OM SHA1-Digest: vAkieqUxYKf3YpstJSNeh0032jM= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SG SHA1-Digest: mrfe+RBUPqsrkjZMbEyO74CjSj4= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SH SHA1-Digest: vOkdQKnNRrHoNV+Lg0zZ1yKf9vk= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SE SHA1-Digest: Z3aCo77hrh8r6KT4LHNMlVnynVM= Name: res/menu/conversation_send_drafts.xml SHA1-Digest: W+zYo2fXJG9Iv9FGkh4kEs/ZDr0= Name: res/drawable-hdpi-v4/ic_attach_grey600_24dp.png SHA1-Digest: DdR+W+yXTJheJrPCfVkH5Q07zPs= Name: res/drawable-xhdpi-v4/ic_emoji_people_normal_light.png SHA1-Digest: 96nNbN5E9bGPhAPE6ftBOob9vko= Name: res/drawable/emoji_category_flags_dark.xml SHA1-Digest: sG+4lQ00+HnzttTFyWXu9NBIhIM= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_RS SHA1-Digest: qj7G7obtB3uLg0HNuY55tuQ4pn4= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_RW SHA1-Digest: ckJDwl/jED6zpIyf8ryWBsmgmP4= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_RU SHA1-Digest: nq/Wsss67yMGaSyobPLEJymIgA0= Name: res/drawable-ldrtl-hdpi-v17/abc_ic_menu_cut_mtrl_alpha.png SHA1-Digest: h4G5TeOQ9xufiMtoFfAe3fINBds= Name: res/drawable-xxhdpi-v4/abc_scrubber_control_off_mtrl_alpha.png SHA1-Digest: rciAiTdJ+MRPTsG/UvNRmHGoqCA= Name: res/drawable-hdpi-v4/ic_app_protection_gray.png SHA1-Digest: QZT4aa2VzKHLAWpG+yj0gzMgQvo= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TN SHA1-Digest: 9m/xZbONlPmO3PPKO3hPEbuDfdc= Name: res/drawable-hdpi-v4/ic_emoji_symbols_normal_light.png SHA1-Digest: 42oEklSS5CvG46vt+LMSl6l4mak= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NC SHA1-Digest: JC4FZSD4039H7qsAsEJC2S3S244= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TO SHA1-Digest: C6MlgyRSI18XYTMvo6+vckYaoMo= Name: res/drawable-xhdpi-v4/ic_advanced_black.png SHA1-Digest: uQSYijVK8clj+RuEcELsZ8TsiME= Name: res/layout/time_picker_dialog.xml SHA1-Digest: N+RWjCpsTTG7ym9CkToPYzHwKp0= Name: res/drawable-xxhdpi-v4/abc_textfield_activated_mtrl_alpha.9.png SHA1-Digest: TLfjxp5bknlrmh6zJTSYD2AfmTo= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NE SHA1-Digest: i8hZpLiSVyG8XQN8jzrbvqeUl8o= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TJ SHA1-Digest: swiu2z3fRHNYbl4wsV2XcRLnfzA= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TK SHA1-Digest: p6n9j+WcmOxZEA8DcjPC6VRRHNc= Name: res/drawable-xhdpi-v4/spinner_disabled_holo_light.9.png SHA1-Digest: aSQLWb1sFD+uZE0dSc2Aj/zR7Yc= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TL SHA1-Digest: IOWA1qVxhFVmaIGmrJRPW9MR8As= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NA SHA1-Digest: JVMN0Xl5tjxTcRYjj7M77IPmq3M= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TM SHA1-Digest: Cf9uOEFp9k9cjW0i5/8m6IvyvV4= Name: res/drawable-ldrtl-xxxhdpi-v17/abc_ic_menu_cut_mtrl_alpha.png SHA1-Digest: C5G74tW2JFPwdcl//FtvBsXTaV8= Name: res/drawable-hdpi-v4/spinner_focused_holo_light.9.png SHA1-Digest: 9+5viI+b67liCPiPkELWte9HLXc= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TG SHA1-Digest: UKTB8RO8balQn3KQo/P864JvqUU= Name: res/layout-v17/abc_dialog_title_material.xml SHA1-Digest: iX/lOYt3bX1MSKeitXE5EuSqs1g= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NL SHA1-Digest: lu34xxm9iiTDnCLXh2bSbYe3D78= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TH SHA1-Digest: SE95tqoq4j/d5OEOXBKd+RDtwmU= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NF SHA1-Digest: FxhGK08kM8R1C1SJmIPRDbCoqOY= Name: res/drawable-xhdpi-v4/ic_group_white_24dp.png SHA1-Digest: mNjS6NAEYUiBqxZlnYyOEXQJeYo= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NG SHA1-Digest: GXTV2v89Up62k60iQ4I5ZZfsW08= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TC SHA1-Digest: EiZ1/iWaVVkT/vWuBvWPMPFgdvs= Name: res/drawable-mdpi-v4/ic_backspace_disabled_light.png SHA1-Digest: QaXYwpDpZhB56I9vu5guCCaGaGs= Name: res/drawable-xhdpi-v4/notify_panel_notification_icon_bg.png SHA1-Digest: cuJ+cwlm5QO6frAFAjbS9w6zhJ4= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TD SHA1-Digest: byTDSRZBh8horEiaTJ6i5MuTNRw= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NI SHA1-Digest: TjaggApGQjTxch/XqYR42H2EJu8= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NR SHA1-Digest: MXq/gSlluenWT3REsEs/Ys5bEho= Name: res/drawable-hdpi-v4/ic_volume_up_light.png SHA1-Digest: l1of9/Hk1H1JBK5koBRKJtdbI84= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NU SHA1-Digest: 0D89o8jukFMElU/fD/VhWpazuVo= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TA SHA1-Digest: jBeCx7ldTJlbk342eoyD8jRc75s= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NO SHA1-Digest: WxvbyTQWvHQ23DxpfMFVgZGtHvI= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SZ SHA1-Digest: NlgzjkOHMNtUDcWVPTAeizQV+aU= Name: res/drawable-xhdpi-v4/ic_emoji_people_activated_light.png SHA1-Digest: WF9erMYR4jANtyyTuLRBFAuKK7U= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SY SHA1-Digest: jL7hDYnBAkPTHfPGL3SWk8goqlQ= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NP SHA1-Digest: r76/zkKxIL4gc8EMCY0Fns2QR+M= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SV SHA1-Digest: f7avWcSx/JD+mKPVftZLKA9cxGc= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NZ SHA1-Digest: 0tvCGNL9zKa78qH0f/HLLDBXxlY= Name: res/drawable-hdpi-v4/ic_lock_white_18dp.png SHA1-Digest: ohYcGfFxrJMwPbXE6XVO0gcP4Og= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SX SHA1-Digest: 1H/6pqPRYgFPVKMH3TFVXo2jM7E= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SR SHA1-Digest: dkm5v1snRr7OiqOaivJdmYmtfDM= Name: res/drawable/unread_widget_icon.xml SHA1-Digest: upRvtT06LesYocTJGPRPym344vA= Name: res/animator-v11/scale_with_alpha.xml SHA1-Digest: VL4imnI1LOFLVsR92Vrab3fF2tE= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_ST SHA1-Digest: WTXJHshgmiUapAxM4/VpRZH7eGY= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SS SHA1-Digest: ed35M7DJ80y7wAtWthKtcXIk1TA= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MC SHA1-Digest: cewXo/wdkjkeoxZ3Nee5WCBjhBM= Name: res/layout-v16/contact_selection_list_item.xml SHA1-Digest: pw672pQGRm0ISP6So9H2IsvV4Os= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MD SHA1-Digest: PjZy0CCmrLZU9zurTo30dtq9PJE= Name: res/drawable-xxhdpi-v4/ic_done_all_white_18dp.png SHA1-Digest: WkByP6D92j4bv/Pil9XHVM3RC9I= Name: res/color/abc_primary_text_disable_only_material_light.xml SHA1-Digest: ha0iBG12VF3cEliu/mL5oLsMBCg= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MA SHA1-Digest: HSq7KlJ2FL4GbiLuFJZfmxCgXAs= Name: res/color/abc_hint_foreground_material_dark.xml SHA1-Digest: a31Xl9T4E/lWYRXr97OgmwLIGjA= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MK SHA1-Digest: TfSJmoJW1SDd7cAwuH+xhvJsxSg= Name: res/drawable-v11/psts_background_tab.xml SHA1-Digest: FbO7BYaDOS6zhMZenOjUS0C+WPQ= Name: res/drawable-xxhdpi-v4/ic_emoji_people_activated_dark.png SHA1-Digest: os0Db3dkZuFsgJhCYA+MeGDNp+U= Name: res/drawable-xxhdpi-v4/ic_clear_white_24dp.png SHA1-Digest: GVe8Vwep32bd8xsL229mBmg2h4E= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_ML SHA1-Digest: Tv12GdE6DSPyQ2XL6DlImd29teQ= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_UG SHA1-Digest: l1cY/LkGWOUk1EV46S2Oq92CSdk= Name: res/drawable-xhdpi-v4/abc_text_select_handle_left_mtrl_dark.png SHA1-Digest: h2tBvFGRUrlGIzFUqIYNFF4jBTY= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MG SHA1-Digest: ZXB6A/xVxOOc248T3dx+w9LPvdo= Name: res/drawable-mdpi-v4/ic_emoji_emoticons_normal_dark.png SHA1-Digest: mPusmSVMFzZUGpBQ6E5NCbXkKX4= Name: res/drawable-mdpi-v4/ic_emoji_flags_activated_dark.png SHA1-Digest: 0MDts2HilwKeFl9r2d+WrnJLkSY= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MH SHA1-Digest: IM7o6TBXSXYE0m4YjQ5qFh2QvfE= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_ME SHA1-Digest: N03ucXZJX7VgZU13+GWaFp9QJ4M= Name: res/drawable-xhdpi-v4/ic_recurrence_bubble_fill.png SHA1-Digest: VoWjBShGNU44SXtwuX6t5bpZrDA= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MF SHA1-Digest: 2I28lsCM+6tu88L5imP3b+N4Akg= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MT SHA1-Digest: jgXDYiiFvCeF1IL7iLa7xZPMFJ8= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MS SHA1-Digest: +X9s8U7GGLIx930dv46iPPQ9RrA= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_UA SHA1-Digest: t8XyhQ0mG1pCgDrQ1WTP4o1XXDI= Name: res/drawable-mdpi-v4/ic_group_grey600_24dp.png SHA1-Digest: aOL5qnoByZku+HzkTSlk11T7mWc= Name: res/drawable-xhdpi-v4/ic_save_white_24dp.png SHA1-Digest: 8mGf7Srmi+NaZnKZAZkX3jXJ4So= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MR SHA1-Digest: 4KdW7dYa6hIGvRWo1G5wDIwKSck= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MQ SHA1-Digest: MMRiuGVFqGxrV3dhvq2tye4CkuI= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MP SHA1-Digest: ptf0bsMqULADeNlyO51oVJTynG4= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MO SHA1-Digest: FOYt2nEEtrR4/3HVwVB6aSP/geU= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MN SHA1-Digest: yPX7lx3cgbs8QuzsMJTxMS4j1O8= Name: res/drawable-xxhdpi-v4/ic_play_circle_fill_white_48dp.png SHA1-Digest: IKqNYGcSk58VM0AkhuBDY0am2YQ= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MM SHA1-Digest: OxIrWtC1QUxDT8JP+DmwrZIcCng= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TZ SHA1-Digest: 5W4ZJ6v7YvgqqIfI6EBozDRT/Ps= Name: res/drawable-xxhdpi-v4/ic_launch_white_24dp.png SHA1-Digest: WHTfhx19GRttt2NJzH4Y+XpE3nw= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MZ SHA1-Digest: g3vFBJfNKd63I/WPalb0sCUYSqE= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TW SHA1-Digest: Xjoo6t2HPHTH/BLNDymne073Kx0= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MY SHA1-Digest: 6NMgbrEYk15vm9xI/1t/FMVIeMU= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TV SHA1-Digest: 4wfvZKkRc1ykZm4kLF+zvygZZ7w= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MX SHA1-Digest: NRlLbBAuUn5RBX4zGlqVirmVCU4= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MW SHA1-Digest: exAFvjs2eMnAs+pA3nWPuHOe+xw= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TT SHA1-Digest: iA2IpMDlGcuoM/RMHSCToK/Q38E= Name: res/drawable-hdpi-v4/ic_emoji_places_normal_dark.png SHA1-Digest: AFAumMkPg+T4P2fCg2JVJUOts8o= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MV SHA1-Digest: ZRa3kW4VGFC4ZKIpNPUHE7OUaRE= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MU SHA1-Digest: oMn6DlkeuN1C8Joa/Df0HKwRzPQ= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TR SHA1-Digest: wRUY3MGMXlbw5WXu6s7J0zhc/TI= Name: res/drawable-xxhdpi-v4/ic_message_white.png SHA1-Digest: ifsACHNPhAVlm79oZ7iM/zm4PzQ= Name: res/drawable-xxhdpi-v4/abc_text_select_handle_middle_mtrl_dark.p ng SHA1-Digest: RFU8ebcpWdq1WfG1+5m0rjD3S0w= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_LI SHA1-Digest: upsn6OwcOJdwVT+HHz74l+yPv4s= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_NA SHA1-Digest: yEv2FgyaJAh8pGKhbvYhDfunkks= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_LK SHA1-Digest: ZTGLfQsAjJEcrrmEHACGgSd3KMM= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_NC SHA1-Digest: ajH2DipKBiYyMX/FrrpauY8LLrI= Name: res/drawable-xxxhdpi-v4/abc_ic_menu_selectall_mtrl_alpha.png SHA1-Digest: 1/FXt00E0Mr8GUWNIDQCnUx9Qzc= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_NE SHA1-Digest: MySQZ5vZlIUKnfLXrQZXNJoNIFs= Name: res/drawable-mdpi-v4/check.png SHA1-Digest: jLC9/pGW+MYKcYNm2cxfJyllBVw= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_NG SHA1-Digest: Ejow+MuVgMnqqTPxvAJj8R/A254= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_NF SHA1-Digest: OzvlR7fb7B4Cf+9Vk1zB/Yvxklc= Name: res/drawable-xxhdpi-v4/ic_recurrence_bubble_disabled.png SHA1-Digest: AV124HmknqvKyuUa/XYpjYLNqWc= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_LA SHA1-Digest: +OruRafiU57DRrxr/n3KMrKj3hU= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_NI SHA1-Digest: 3qyBNkHn0Gxh5NLv2pwLIbYpX9I= Name: res/drawable-mdpi-v4/abc_ic_star_half_black_16dp.png SHA1-Digest: LJhGIJ9ykH+SLTXwcnjoa1J97NE= Name: res/drawable-xhdpi-v4/ic_emoji_places_normal_light.png SHA1-Digest: YdZBCdKUNvOCrHQPwpzS0SIBgkQ= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_LC SHA1-Digest: iiefFy3QmJIunB0DJ4DZfN6kvqA= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_LB SHA1-Digest: 1m0loiBMdY+emkN7eXEHbyfmgs8= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_LT SHA1-Digest: V1MnmtbPimo2ZrgI0uRK6L89FnM= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MK SHA1-Digest: 1eF19PNyJ5as96s7rAVHDhEIE+8= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_LU SHA1-Digest: S6OsLuJRpTkIBjcrif9UqPjRL2A= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_ML SHA1-Digest: SbNPMzF0o5Uz6plQ6ImJScbYw1c= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_LV SHA1-Digest: B0orY0nNVdXs9+BHvDXpUCNKVnY= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MM SHA1-Digest: iqsvsg2e8NJO+cklT7YhOnepdX4= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MN SHA1-Digest: HgDuGVsZnQIrDj7HXWzsphvMxmU= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MO SHA1-Digest: QJZXuiEWqdELKMqe8ZnsYKnki8Y= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_LY SHA1-Digest: YltnLOUAyxdkzgJrwyjA2Od9FR0= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MP SHA1-Digest: zuEoWjXXHq4k2e5ja4pff4JoqHY= Name: res/drawable-mdpi-v4/ic_add_white_24dp.png SHA1-Digest: I6nQAaco1kzjbUS2FmJgI9sBFho= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MQ SHA1-Digest: 1GLz8hrqzsqLYKmVsx/76btejd0= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MR SHA1-Digest: WLAbOuMp+0HQ5Endm6t4yonH1qc= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MS SHA1-Digest: uX4fVmMZ3f2BUUnYj7fIUssjE00= Name: res/drawable-xxhdpi-v4/ic_emoji_objects_normal_dark.png SHA1-Digest: JrXda+th5R9MfiCHfKZ174i1EFQ= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MT SHA1-Digest: puOfc4sATHCx2nrvay4JOuCYQbk= Name: res/drawable-xhdpi-v4/ic_app_protection_black.png SHA1-Digest: uApXkGW/FNT5k85RAUVhvMUtkXM= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MU SHA1-Digest: zgs7t+DTo9IGr0J0AB10nZBo2w4= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MV SHA1-Digest: WgbGdYHl3liXNyzSZrbaqzkgVuk= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MW SHA1-Digest: /wIDxZ0YosDclUPBpYboB4pxUKc= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MX SHA1-Digest: +V2jO/Iwq2Ry3N6vmWCu86o69Qo= Name: res/drawable-mdpi-v4/ic_account_box_dark.png SHA1-Digest: 7wNRrjFr2m0teMaRg5GFeCkt2zA= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_LR SHA1-Digest: WsgB1nPq8MA0Fsjq4rXxFvPAoOg= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MY SHA1-Digest: aGkIDYkB8dtrYBTnrE3py4Ya2Ro= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_LS SHA1-Digest: DgoKQf4lCEL2mtX2ILBwo5e+DIw= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MZ SHA1-Digest: EF/iKcMSSP05GvwFeGiDWTJvSh4= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_27 SHA1-Digest: nEYbSuXRF/uctKuasoKct6HqEFw= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_KE SHA1-Digest: R8PMF1UnkmPg66U/bCgAxl7YAQw= Name: res/drawable-xhdpi-v4/ic_volume_up_dark.png SHA1-Digest: VWl14rkcGJkHVrs2Iays0IdaRCo= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_KI SHA1-Digest: NbWr5OoxAViKj6R9PpsQLAnuvhI= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_KH SHA1-Digest: JfUEQWocrRtdPojYHgAGuzgtaYo= Name: res/drawable-xhdpi-v4/ic_volume_off_grey600_18dp.png SHA1-Digest: OQ5o37s135Z/Q1vz8UrbG88saXM= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_KG SHA1-Digest: qLKWcgQFJeoF5MBnzwkRCHCv83Y= Name: res/drawable/error_round.xml SHA1-Digest: /dc/CUQ2SFAXgoplWG74eEB36w0= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_NO SHA1-Digest: P1ydPzbNWCbra5/uii8q0hUx11E= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_NL SHA1-Digest: jVTgjUlKXg6pjCp7LSIdROs0nJo= Name: res/drawable-xxxhdpi-v4/ic_pause_circle_fill_white_48dp.png SHA1-Digest: w5Ny1a0SNHu2RQtcfJwZoIXwl8o= Name: res/drawable-xhdpi-v4/abc_ic_commit_search_api_mtrl_alpha.png SHA1-Digest: cG04d50tDB7eX3k8GXpvzf7ad6k= Name: res/drawable-xxhdpi-v4/switch_thumb_activated_holo_light.9.png SHA1-Digest: ra2//DL5yVUdjqqYTHr5wqVGdsU= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_KY SHA1-Digest: WJwe/k4JIc+T7ru1w72Un2d2iiU= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_NR SHA1-Digest: CtGvqiGAGpJTh7ODg5K6dUoL/y4= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_KZ SHA1-Digest: vtMfhVkSqr1CsD4NJls3aj1ssgY= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_KW SHA1-Digest: ReXjgTsJAekB6pgiCCmFNQsLHKA= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_NP SHA1-Digest: SdqHxcI16hFW1MFy515vwgT0olY= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_KM SHA1-Digest: 9HWdF77s8JEJFAC0dRThzQWVOUM= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_KN SHA1-Digest: andVqitx2nhGkwF4cBN14hnAmQk= Name: res/layout/conversation_item_header.xml SHA1-Digest: ZkV0210AY1aJ0OshuVCgO+Qbg/8= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_NU SHA1-Digest: xj1ph7v07RxQ3Tx2c3eOubdaMLA= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_NZ SHA1-Digest: Ozd8CQ8+nyIZ5WyoKRg6yDIoDiI= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_KR SHA1-Digest: EJJcyRP2SDc63SRFLttTQKyHNc4= Name: res/drawable-mdpi-v4/abc_list_pressed_holo_light.9.png SHA1-Digest: tbKOWkoq8X/O9SqZLE2Z7VwIrfw= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_KP SHA1-Digest: bhqbTHunDfw7sHn2SrjQVfu0PFA= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_PE SHA1-Digest: vwjUPkmb3Z0JzHcZGbMAShRmI/c= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_JE SHA1-Digest: YxhA1PAO+zoMV5FiRGs7g0JgEVM= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_PA SHA1-Digest: aaskHG26vfikuQOobVbjvJkXjdg= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_PK SHA1-Digest: MeQ66zU6Noe05cqb545eOOeFCKQ= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_PM SHA1-Digest: P0jxl/qu/pvOk9oI/jqIkgFqS1Y= Name: res/drawable-xxhdpi-v4/ic_brightness_6_black.png SHA1-Digest: HpV77ISECGzV/+AHPI9elXVuCCU= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_PL SHA1-Digest: RJMdCvEXRiO7/ljLTqvqswKVoJI= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_PG SHA1-Digest: LrQt5BB84Fms4OSuqo+aIscuzu4= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_PF SHA1-Digest: PUgWb0bhPQJFK9TJz6w6O1yTBIk= Name: res/drawable-xxhdpi-v4/ic_menu_search_holo_dark.png SHA1-Digest: 7/js6D+0bH1CxZklb/lHp9DnMGM= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_PH SHA1-Digest: je6mi+Yrig7wXaLZn99A1PpJXSU= Name: res/layout/abc_action_mode_bar.xml SHA1-Digest: H4FVEEhXPLP8buIJgatyzFrcvRE= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_OM SHA1-Digest: klpn7S0WXsLenwC+5Iv4T2EM96U= Name: res/drawable-mdpi-v4/ic_circle_fill_white_48dp.png SHA1-Digest: ByK3gPD5yBtDvvqNOkOYzLN0U/4= Name: res/drawable-xxhdpi-v4/ic_brightness_6_gray.png SHA1-Digest: g9LDQa/2MUHF9144p9nuITN+iIo= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_JO SHA1-Digest: SalZsp+RivjFelAg5FqpqMSHQ8M= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_JP SHA1-Digest: tjjCc4vBol1u+/hPlcnD9SlEyVc= Name: res/layout-v16/reminder_header.xml SHA1-Digest: BVckKRBJ305iYV1tAQ4J+xG4TcY= Name: res/anim/abc_fade_out.xml SHA1-Digest: MTJWZc22b5LNeBboqBhxcQh5xHQ= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_JM SHA1-Digest: McBJ3SsWfVTtf3/GJheNxSPbz2k= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_IE SHA1-Digest: DI0aTS9fd+KtRjmTLx69Y3zTbaY= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_ID SHA1-Digest: el6L9YnWqX/HKc+NRxogSB0HzTs= Name: res/color/date_picker_year_selector.xml SHA1-Digest: LzGQSVdgDN4IuJWDz3uu9BOEfUs= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_QA SHA1-Digest: gtnWevKmSm5udS052naVPA6xKhU= Name: res/drawable-xhdpi-v4/abc_list_pressed_holo_dark.9.png SHA1-Digest: WYYEXP9zXPHmkO70T8BA20aSj+U= Name: res/drawable-xhdpi-v19/switch_thumb_pressed_holo_light.9.png SHA1-Digest: 58f1EtXQ3wizMEJeTAgSgdZA5uA= Name: res/drawable-hdpi-v4/textfield_default_holo_light.9.png SHA1-Digest: fuY+WIlRJ8vgPwAzkl65YeJKVPo= Name: res/drawable-hdpi-v4/abc_list_selector_disabled_holo_light.9.png SHA1-Digest: BLQq1kPx0/JPxPxgp/MrxD6Ft1Q= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_PT SHA1-Digest: /+jUg/fouhfWRr7QzkSlo/IQzjw= Name: res/drawable-mdpi-v4/ic_arrow_forward_dark.png SHA1-Digest: Dqyapq29+35To/xRxC+rxA9W2EM= Name: res/drawable-xhdpi-v4/ic_movie_creation_light.png SHA1-Digest: 5UU364nngw+I67lX3Wcaowdt+3g= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_PR SHA1-Digest: 7tnKmhKxP4lB+vx/VQ51lUA5Jl4= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_PS SHA1-Digest: phT+B6EkG0No5vWvOPJ550m13Bo= Name: res/animator-v11/upper_play_to_pause_animation.xml SHA1-Digest: pZ/KDmklLAhatNYLhss0HJP7bTI= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_IS SHA1-Digest: mTi+12JtOB/zIiarrK5U9SUG4ak= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_IT SHA1-Digest: DvDU4JvSM/nExB4aABnCWuQr6co= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_IQ SHA1-Digest: 6YJ6ozeNHqkSMFUYmEhXIvK0m/g= Name: res/drawable-xxhdpi-v4/icon.png SHA1-Digest: 0sRkUHHzVMQ90JPNC0VwdWFolPI= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_IR SHA1-Digest: n5sVB/BGiajK80KhghNVuu9FjTA= Name: res/layout/led_pattern_dialog.xml SHA1-Digest: Nu+KLZK1X/hgyrUT74E4LQ/xobE= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_IM SHA1-Digest: de6FVs0hfHzqCly5fmgVB4fM7zE= Name: res/drawable-xhdpi-v4/ic_save_all_white_24dp.png SHA1-Digest: DUh+gIlKJ/TTmuo0wHQAdR8IDeI= Name: res/layout-v16/fragment_submit_log.xml SHA1-Digest: fvFOUfp94WtgcKMVWy3hQkjX1BI= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_IN SHA1-Digest: 1b8VJJvfWSnyWygPcDExgAaYvuE= Name: res/drawable-mdpi-v4/abc_ic_commit_search_api_mtrl_alpha.png SHA1-Digest: bjw5Qfj9OrAUagjyW3bicEthmg4= Name: res/drawable-mdpi-v4/switch_thumb_activated_holo_light.9.png SHA1-Digest: bnXBtaKF7a29jCEvIOWErkhFvv4= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_IL SHA1-Digest: p3ArTBn8YrJAEa6uQBzmZLCIhdg= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_PY SHA1-Digest: q3pMKhvhzPQr4o6JVGCRtI0TnBw= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_PW SHA1-Digest: oi0Rf1UzJ2gCIiry9jU+gwrNMZQ= Name: res/drawable-xhdpi-v4/ic_info_outline_light.png SHA1-Digest: AmfM36X3Zv8Y5Iv3niwqWm5WDNE= Name: res/drawable-xxhdpi-v4/spinner_default_holo_light.9.png SHA1-Digest: Q96rsORloNyw2WFYTUl9VA/zlUc= Name: res/drawable-hdpi-v4/list_selected_holo_light.9.png SHA1-Digest: 8+a6kSVhZ1n87KOe3NWXssOoSRY= Name: res/drawable/emoji_category_nature_light.xml SHA1-Digest: MvM5QlPGIDze+USr4SKXQ0fNc5k= Name: res/layout/expiration_picker_view.xml SHA1-Digest: zUaDCw/P0GnFa/asV/is1AvhoQ8= Name: res/color/abc_tint_seek_thumb.xml SHA1-Digest: N2+i8rVRimGZ58YjFfsmpqK0a2E= Name: res/drawable-mdpi-v4/ic_backspace_grey600_24dp.png SHA1-Digest: kHO0u80/vSCZSg5rvlhGl1iLd2o= Name: res/drawable-hdpi-v4/abc_switch_track_mtrl_alpha.9.png SHA1-Digest: +BAInzzGimhbNKEsUcg4H+12pT0= Name: res/drawable-mdpi-v4/ic_emoji_symbols_normal_dark.png SHA1-Digest: qUB0gCvTkMWF6nHa9ax6itaPdqo= Name: res/anim/design_fab_in.xml SHA1-Digest: 88HYAVsN9aX1xNbLpWMveab3t7w= Name: res/drawable-mdpi-v4/ic_group_white_24dp.png SHA1-Digest: 511LdJ4GYPViD/6dAXj345vG/CY= Name: res/layout/abc_select_dialog_material.xml SHA1-Digest: tjRrCY0x5FoakZqHn3Ut1ZwIeFg= Name: res/layout-v11/notification_media_cancel_action.xml SHA1-Digest: FOKQ0fSwhQySQM6fclToJK+8huE= Name: res/drawable-hdpi-v4/ic_photo_camera_dark.png SHA1-Digest: u2nmahIYst9Z9v2lZ8kLW6X2To4= Name: res/color/recurrence_bubble_text_color.xml SHA1-Digest: LTrVdygP++avEBn7g5W4u7gN8/E= Name: res/drawable-hdpi-v4/ic_emoji_nature_activated_light.png SHA1-Digest: m+ldTqupAssUp/UvEkLj7iQ2osU= Name: res/drawable-hdpi-v4/textfield_activated_holo_light.9.png SHA1-Digest: bLHdUYUynLqsA32+N3F3BJ4EBHQ= Name: res/drawable-xhdpi-v4/switch_bg_holo_light.9.png SHA1-Digest: c+JwYiQCZPeynR8o/HjhfKjOc5g= Name: res/drawable-mdpi-v4/ic_lock_light.png SHA1-Digest: 08GskiiL2N7wF6jvODez4muPFNM= Name: assets/emoji_objects.png SHA1-Digest: EJCaAiWW33tUKJXv05D8xPp76zg= Name: res/drawable-xxhdpi-v4/abc_btn_radio_to_on_mtrl_000.png SHA1-Digest: +TY+I9fpZ38ftBWokyGPSIm59vQ= Name: res/layout/prompt_apn_activity.xml SHA1-Digest: CE8wnVZpaH6HPreItOyvd4STXwY= Name: res/drawable-hdpi-v4/ic_backspace_normal_dark.png SHA1-Digest: RwnuEGaHEztETyRi3umBZWHFTa0= Name: res/drawable-hdpi-v4/ic_emoji_objects_normal_light.png SHA1-Digest: PymWawe+nCbCtsSNOqtgwB3mIrs= Name: res/drawable-ldrtl-xxhdpi-v17/abc_ic_menu_cut_mtrl_alpha.png SHA1-Digest: EW/WpNliEy+bQjDuiw+U1mX+yZk= Name: res/drawable-sw600dp-hdpi-v13/ic_backspace_disabled_light.png SHA1-Digest: RXmFGZr/Q0yvb7b872P8mGxd43Y= Name: assets/databases/apns.db SHA1-Digest: k6v+TN+cEVpPY0fC67VxFAVib38= Name: res/drawable-mdpi-v4/ic_photo_camera_light.png SHA1-Digest: WmiuSqmKFwE30U0LyMZxLH6BHsk= Name: res/layout/abc_search_view.xml SHA1-Digest: uvwsNoxNUjygjCCYkA9pnNpeJBQ= Name: res/drawable-hdpi-v4/ic_mood_white_24dp.png SHA1-Digest: uZNTsuQbAcrQLA+3xkTKaiOfX/M= Name: res/drawable-xhdpi-v4/ic_dialpad_white_24dp.png SHA1-Digest: mf5EtIftpkW/aAUGgvq5+CpN4JU= Name: res/drawable/blocked_indicator_background.xml SHA1-Digest: 1cWpsxVvS7coD0mOw3AbNatyz4I= Name: res/drawable/emoji_category_people_dark.xml SHA1-Digest: JWHxgdaJ5JIkkd00fQZEJAuJ8KY= Name: res/menu/media_overview.xml SHA1-Digest: lGduXSTm2MsdaEXPVkIlmCSzaa0= Name: res/drawable/list_selector_background_transition_holo_light.xml SHA1-Digest: d7FKlK9pScIw5O7f2CyRR9A91ko= Name: res/drawable-xxhdpi-v4/check.png SHA1-Digest: Cmlk6I4eMSx7Q1CnDR14+OGaGPc= Name: res/drawable-xxxhdpi-v4/ic_done_all_white_18dp.png SHA1-Digest: EVUOZ2QD0IMZA6mmJGnrvlwa7JU= Name: res/layout/import_export_activity.xml SHA1-Digest: eGZy6IF9v9OwCuU3RKROtX3PKMk= Name: res/drawable-mdpi-v4/ic_send_insecure_white_24dp.png SHA1-Digest: uKfZvmTIoTHVB+7pm+rP2+aTzek= Name: res/drawable-mdpi-v4/ic_launch_white_24dp.png SHA1-Digest: S5Taz5tU0amDaTCujYqnyRXr0iE= Name: res/drawable-xhdpi-v4/abc_ic_menu_copy_mtrl_am_alpha.png SHA1-Digest: 5ThZFP/+iYVybD8ENFXZKyOzbaU= Name: res/drawable-xhdpi-v4/abc_popup_background_mtrl_mult.9.png SHA1-Digest: hjf9hvwtitJD8jRTc+L89zr4i1I= Name: res/drawable-xhdpi-v4/ic_textsms_grey_32dp.png SHA1-Digest: eZ389TICT2Hx+4lFASo82m7q/To= Name: res/layout/keyboard_text.xml SHA1-Digest: X3CNem6m9YL2iEnh8nZ1eJqnf38= Name: res/drawable-mdpi-v4/ic_forum_grey_32dp.png SHA1-Digest: 1FE//0VushWlCtrkrHNhGxNasyQ= Name: res/layout-v17/conversation_fragment.xml SHA1-Digest: IE7276GxKT7mkymeigejeQnuzc4= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_7 SHA1-Digest: ++F/BtCrUwz7P52Agrem1zBo7MI= Name: res/drawable/recurrence_bubble_fill.xml SHA1-Digest: hY1/dq5DoGqB5nB5bzt/+w0aZyU= Name: res/color/date_picker_selector.xml SHA1-Digest: aG7HwnsPwR4bvTJ0xUC75E7QK58= Name: res/drawable-xhdpi-v4/ic_unlocked_white_24dp.png SHA1-Digest: DG1qDD1yBLURh568diw8VcVqVQo= Name: res/drawable-xxhdpi-v4/switch_thumb_holo_light_v2.9.png SHA1-Digest: U/4Z3gd25jwQChkbsD5VnRLBt4I= Name: res/drawable-xhdpi-v4/textfield_activated_holo_light.9.png SHA1-Digest: If3Wai5q4G/7HwWXms7HMa+ezus= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_350 SHA1-Digest: 1dsh1jmlpctbk3mLLs20rDvMeHw= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_352 SHA1-Digest: wG8Amf2IUehX/g5l0F2/BDWC8XM= Name: res/drawable-xhdpi-v4/ic_mood_grey600_24dp.png SHA1-Digest: 8QptmIlGZy7I1PKYMYOAZkDxgUE= Name: res/drawable-xxhdpi-v4/ic_emoji_places_normal_light.png SHA1-Digest: ubA1ifimUPU7FvNe9Y28BXF3CnQ= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_351 SHA1-Digest: Mms7D5naQaHUlKhoBn+xBnme4nc= Name: res/layout/conversation_list_item_action.xml SHA1-Digest: daYMlc9s7/cMUHhdCnx2cD09hyk= Name: res/drawable-xhdpi-v4/abc_text_select_handle_right_mtrl_dark.png SHA1-Digest: GuKSrhMJG9+hk/tPX2xPNfs4cy0= Name: res/layout/abc_list_menu_item_icon.xml SHA1-Digest: dYFR+O7lTgJC28aXyfVTftOMwDM= Name: res/drawable-hdpi-v4/sms_selection_icon.png SHA1-Digest: gE90TmnrTARplW4NtpJw2qVXyUk= Name: res/drawable-xxxhdpi-v4/abc_scrubber_control_to_pressed_mtrl_000 .png SHA1-Digest: WvHioMVsEnLk1hJoq6dqHvhFfjA= Name: res/drawable-hdpi-v4/ic_group_grey600_24dp.png SHA1-Digest: sLpgDX3ee/IC25YhvXQob4uLC+g= Name: res/layout/calendar_date_picker_done_button.xml SHA1-Digest: bjM9GoPLqr2UNSSwFri6bBp8tqQ= Name: res/animator-v11/bottom_play_to_pause_animation.xml SHA1-Digest: Dk5obpJ/mFs1fbROjx3K+Ox8YD8= Name: res/drawable/ic_check_dark.xml SHA1-Digest: Euauk3jOzmS98uKm55WarBWhabo= Name: res/drawable-hdpi-v4/abc_text_select_handle_right_mtrl_dark.png SHA1-Digest: OW+ZULMA0miOKqqKj1wk15SSUFQ= Name: res/menu/log_submit.xml SHA1-Digest: 76Vnv4QcUVKXSl0gg59C0Rd9uoM= Name: res/menu/local_identity.xml SHA1-Digest: 1Igdxj3Es0r2GRwRynPPb8aRm1c= Name: res/drawable-mdpi-v4/abc_switch_track_mtrl_alpha.9.png SHA1-Digest: Goj79xYi41d5Ug2oovkSjYvLbAI= Name: res/layout/notification_action.xml SHA1-Digest: p77JXXmQEVckcqQPCcH8E9U7U3A= Name: res/drawable-xhdpi-v4/ic_badge_24dp.png SHA1-Digest: VTflLV+eXJF3SNTJBgsDTECh3AQ= Name: res/drawable-mdpi-v4/ic_emoji_nature_activated_dark.png SHA1-Digest: 4z8a9EycWLfIskhOsuaE8ly5eGo= Name: res/drawable/abc_tab_indicator_material.xml SHA1-Digest: V5veQwsCSGKsSBtGwB7BwIrrJ60= Name: res/drawable-hdpi-v4/ic_visibility_off_white_24dp.png SHA1-Digest: L2bADlHYbxejSKrQRh8xy6jOpm4= Name: res/drawable-xxhdpi-v4/abc_ic_star_half_black_16dp.png SHA1-Digest: EikVyBT5I7pmbJO2k8qF0V5hUc0= Name: res/drawable-xxhdpi-v4/ic_menu_lock_dark.png SHA1-Digest: HeM57qf+HkgH2w82F9rhzcFaSAI= Name: res/drawable-hdpi-v4/ic_message_black.png SHA1-Digest: 1w1ZbYb9IYNUxrU6KYFv/cpJMOE= Name: res/drawable-xhdpi-v4/sms_system_import_icon.png SHA1-Digest: ZxK90q7NEeyiA975EInN3SVAWdw= Name: res/color/text_color_secondary_dark_theme.xml SHA1-Digest: /pIH3XKbeThCFtR3AA7odk9oTC8= Name: res/drawable-mdpi-v4/ic_backspace_disabled_dark.png SHA1-Digest: QaXYwpDpZhB56I9vu5guCCaGaGs= Name: res/drawable-xxhdpi-v4/ic_lock_white_18dp.png SHA1-Digest: mt+MLl4ovdCkwj5ODFADROHfYXo= Name: res/drawable-mdpi-v4/abc_text_select_handle_right_mtrl_dark.png SHA1-Digest: 3J5pByYkZRz7TetQA7yaxvDvbrk= Name: res/layout/conversation_list_item_view.xml SHA1-Digest: 1Tpe43FDO1n6OSssoTLv6Rujchc= Name: META-INF/fdroidserverid SHA1-Digest: eArdeofjDLFxhFSbY0KAExcnRyQ= Name: res/drawable-xhdpi-v4/ic_group_grey600_24dp.png SHA1-Digest: cQ3e+0WiSITUilDzqhqCx/SmoJs= Name: res/drawable-mdpi-v4/list_selected_holo_light.9.png SHA1-Digest: w5jMjyx0n/lk3stiPGrcn7tdZT8= Name: res/drawable-xhdpi-v4/ic_refresh_white_24dp.png SHA1-Digest: VEEQILLOaC8KvtWmsJXu6AZz7q8= Name: res/layout/recurrencepicker.xml SHA1-Digest: cfNI4ZOUVd/QfbE5btsMAce/tHQ= Name: res/layout/radial_time_header_label.xml SHA1-Digest: 2IhYl35qRfn0aNwyv+P1GQUzF7w= Name: res/drawable-xxhdpi-v4/ic_group_grey600_24dp.png SHA1-Digest: Gzl3NBzq/iWJZdiC/zradMbSGYg= Name: res/drawable-v11/notification_bg_low.xml SHA1-Digest: n50NqNrh6NbUKmlGUwKW8waz9vU= Name: res/drawable-mdpi-v4/ic_emoji_emoticons_activated_dark.png SHA1-Digest: NA97YXwuQ1VQZ1b/kEGPfZhJnNc= Name: res/drawable-mdpi-v4/icon.png SHA1-Digest: xu2YVmS2ywmCB69j7trlUUEPuZA= Name: res/drawable-xxhdpi-v4/ic_missing_thumbnail_picture.png SHA1-Digest: y3Qmv2nY0uJc7MmuC5wwRdz220M= Name: res/layout-v17/notification_action_tombstone.xml SHA1-Digest: cOFSV5YQLr/BPiQJMZ3saC3Izp4= Name: res/drawable-mdpi-v4/ic_done_white_18dp.png SHA1-Digest: 2//esNudzLsyh9QlV4QqRHT6pZ0= Name: res/drawable-xhdpi-v4/abc_ic_menu_selectall_mtrl_alpha.png SHA1-Digest: zLtLDGOiJ207WrTCsWah2jkG/84= Name: res/anim/abc_grow_fade_in_from_bottom.xml SHA1-Digest: iPapUKcPYcYoPV86U6jl9kw3Fqs= Name: res/drawable-mdpi-v4/abc_ic_star_black_16dp.png SHA1-Digest: h+GglN330bwjpagOTZFJ9KD8WhY= Name: res/drawable-mdpi-v4/ic_dialpad_white_24dp.png SHA1-Digest: ABD2pMqLWCZLuHxZaVMj35V4Bso= Name: res/drawable-xhdpi-v4/ic_emoji_nature_activated_dark.png SHA1-Digest: rwWlw8HY4PvcbCCcoxgW6kK04jw= Name: res/drawable-mdpi-v4/notification_bg_low_pressed.9.png SHA1-Digest: 58BeVrWmam0XTYtOcBJSh3YmiJQ= Name: res/layout/recurrencepicker_end_text.xml SHA1-Digest: TfPK46sRHEpgf8yaeWam2P7+6h8= Name: res/drawable-xxxhdpi-v4/abc_ic_star_half_black_16dp.png SHA1-Digest: zI176QlarHgsgLRcKJcYZrGV9ps= Name: res/drawable-xxhdpi-v4/ic_block_grey600_18dp.png SHA1-Digest: cPrydB8hKnVN+ija1M9dgeR/VoY= Name: res/layout/abc_action_menu_layout.xml SHA1-Digest: 9YbU6gGH268YUOBguR6iFw8Xklo= Name: res/layout/media_overview_item.xml SHA1-Digest: +vnGfFeH2gFoDqICFunaz6Nuzx0= Name: res/layout-v13/recipient_preference_activity.xml SHA1-Digest: yRYJX9Fp1liMV4/6SBZ9JlXTNX0= Name: res/drawable-mdpi-v4/ic_recurrence_bubble_disabled.png SHA1-Digest: lp9Fl1+WLFGu3BQ3x6KZ3rUqbKw= Name: res/drawable-hdpi-v4/ic_movie_creation_dark.png SHA1-Digest: w57zBCafgVTMCLb/6J4mA1eBIHY= Name: res/anim/animation_toggle_out.xml SHA1-Digest: lBabkCAcL5u2zNS3a/RsxhDIuzE= Name: res/drawable-v21/abc_ratingbar_small_material.xml SHA1-Digest: BADt3Ef1toHfWLOP4cHWQg7zFsc= Name: res/drawable-hdpi-v4/abc_popup_background_mtrl_mult.9.png SHA1-Digest: z7zwna5/785Ly8ahNPOE2jNcEWg= Name: res/drawable-hdpi-v4/ic_emoji_places_activated_dark.png SHA1-Digest: 6lNSCADnZXco1ErOluea0LkWr2c= Name: res/drawable-xhdpi-v4/ic_backspace_grey600_24dp.png SHA1-Digest: zT1tz927tsPpiZ4x9tnekYh1pYc= Name: res/drawable-mdpi-v4/icon_cached.png SHA1-Digest: E5s+IkWDT8zUJdhvw49Vecl69Ds= Name: res/drawable-xxxhdpi-v4/abc_btn_switch_to_on_mtrl_00001.9.png SHA1-Digest: byuQvpWXS6brcdPpZzFwfkUGtWE= Name: res/drawable-mdpi-v4/divet_lower_right_light.png SHA1-Digest: dVHWgbpUqmiTu74KqlXFHHK/HiY= Name: res/layout/notification_template_icon_group.xml SHA1-Digest: uwaozoCL3Hme6S9S4jOXDpzdq5w= Name: res/drawable-xxhdpi-v4/ic_unarchive_white_36dp.png SHA1-Digest: IGZU+/25RvCbEyw7fg0ljVrRAGo= Name: res/layout/create_passphrase_activity.xml SHA1-Digest: 1LcmpE+4bLpJVyZvjo8vmyegEtM= Name: res/layout/calendar_date_picker_selected_date.xml SHA1-Digest: BQsSxFqCxOJIg6yNbdfBIoEO9uI= Name: res/drawable/emoji_category_emoticons_dark.xml SHA1-Digest: Ix5KZgvXSTgzlXU43c2s3+pyEsY= Name: res/drawable-xxhdpi-v4/ic_search_white_24dp.png SHA1-Digest: FpdxvD/qOPm+8mVzPLdARTjpK6E= Name: res/drawable-xxxhdpi-v4/abc_text_select_handle_right_mtrl_light. png SHA1-Digest: svcMy3RUKynkEHwirQYPCICt1tI= Name: res/menu/conversation.xml SHA1-Digest: iLLQmZkpzV1KPOCdUGYwEGWOpnk= Name: res/drawable-hdpi-v4/ic_block_white_18dp.png SHA1-Digest: QuLZSRSztDZXckzz4UjAZ5rRV1s= Name: assets/emoji_flags.png SHA1-Digest: fICcDebwlX2ZuBVzl4Qb4kBjJtY= Name: res/drawable/circle_tintable.xml SHA1-Digest: uZXojKWj3Mr3IJ9rWYmGx8Uw6MU= Name: res/color/abc_btn_colored_text_material.xml SHA1-Digest: uyiMqesjnkKMHVSzHpeGdcPuQsY= Name: res/drawable-xhdpi-v4/ic_attach_white_24dp.png SHA1-Digest: JZt8fzELfe2eKXi40Pwgyd2jyw0= Name: res/drawable/abc_dialog_material_background.xml SHA1-Digest: l0M3oq0dSvqXzuiDjFty5ess9ic= Name: res/layout/custom_default_preference_dialog.xml SHA1-Digest: 3GcmVR89CH5c8qh05Ffh7NhKcfA= Name: res/drawable-mdpi-v4/ic_recurrence_bubble_outline.png SHA1-Digest: TQHo0I5fwPvu3SHVqUMuPIOoJaw= Name: res/layout-v21/conversation_item_received.xml SHA1-Digest: HIRetGvvSXKU5XPgxhskNSeSec0= Name: res/drawable-hdpi-v4/ic_emoji_symbols_normal_dark.png SHA1-Digest: G7kt/oO/hbP2pNf53MmgtuqdnbU= Name: res/drawable-hdpi-v4/ic_emoji_people_activated_light.png SHA1-Digest: t2dfo2ThkYARtjZNn9u2G8CXjB8= Name: res/layout/keyboard_with_header.xml SHA1-Digest: hxtmz6yPxJZHDp12OqBDNqtvOgQ= Name: res/drawable-xxxhdpi-v4/ic_block_white_18dp.png SHA1-Digest: 5EQ7aIb3XyY8Fjd1cuQkMyizC4I= Name: res/layout/change_passphrase_activity.xml SHA1-Digest: rCMfYdVQ9alBHpaScTUx40IwdJs= Name: res/drawable-xhdpi-v4/ic_emoji_objects_activated_light.png SHA1-Digest: 5+04RXB3XrAbO7021edsyE6yG7c= Name: res/layout/abc_action_bar_up_container.xml SHA1-Digest: faAH+9KDnZnEFR0fhQDS7VrWa0Y= Name: res/drawable-xxxhdpi-v4/ic_done_white_18dp.png SHA1-Digest: 8l3TFPsQKj2hmP2YeXQ3KR+gtPk= Name: res/drawable-xhdpi-v4/ic_photo_library_white_24dp.png SHA1-Digest: 5RldmdTo6f301+oQTcpShGs46B8= Name: res/color-v11/abc_background_cache_hint_selector_material_dark.x ml SHA1-Digest: RvuWyz0R/TOa0YMWKY4Z70Jd7r8= Name: res/drawable-mdpi-v4/abc_ic_menu_copy_mtrl_am_alpha.png SHA1-Digest: O6eAL2M6qoFDRV9peChQYqmfUZk= Name: res/layout/calendar_year_label_text_view.xml SHA1-Digest: jVFlcGuyELrjMDOA4bV8tm2kNjY= Name: res/drawable-hdpi-v4/ic_menu_remove_holo_light.png SHA1-Digest: vvGlhbwx81tjJ68TE7kzkB1mhAc= Name: res/drawable-xhdpi-v4/ic_delete_black.png SHA1-Digest: 4F1zJN0EKPv1Ry5Rd/xH0rjrmQg= Name: res/drawable-hdpi-v4/dialog_full_holo_light.9.png SHA1-Digest: dqmozINUKSEHguCyttZwEp1fsl4= Name: res/drawable-xxhdpi-v4/ic_group_white_24dp.png SHA1-Digest: /a21dJDB9S9FyDHs6Aab6hecJaQ= Name: res/drawable/contact_photo_background.xml SHA1-Digest: y2aQJR62snrVPJNn7N/Ve0pGy2s= Name: res/menu/conversation_unmuted.xml SHA1-Digest: JdmeZPjIQqeKw6uBcbpoVq8/Gfw= Name: res/layout/design_navigation_item_header.xml SHA1-Digest: lilaB0pjsqwfoOBP7mnR3p5X6wk= Name: res/layout/thumbnail_view.xml SHA1-Digest: Ww5lVhhSx0dnmTL+YYp3soukino= Name: res/drawable-hdpi-v4/switch_thumb_disabled_holo_light.9.png SHA1-Digest: HySzs67maedHt7T5DQ9b62NVMUw= Name: res/drawable/clickable_card_light.xml SHA1-Digest: w0Jeb3917xAK0dUQlFRtbSEwH8Y= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_358 SHA1-Digest: BdiB3G40E33JhpAaQnPmGM6npwk= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_359 SHA1-Digest: OH/iiqVq50dBV79hJSr2rKoXM5E= Name: res/drawable-mdpi-v4/ic_contact_picture.png SHA1-Digest: f/CWwAx2/XBNKaH/xWNCSue+JbI= Name: res/drawable-mdpi-v4/lockscreen_watermark_light.png SHA1-Digest: hEboIczR1JMpRKVdEHPAqTIePyU= Name: res/drawable-xxxhdpi-v4/ic_forum_grey_32dp.png SHA1-Digest: kIm/5xpfgahyfo9uwCOAUTXstM0= Name: res/drawable-mdpi-v4/ic_emoji_objects_activated_dark.png SHA1-Digest: 6OFeB8jbu9XKU8jzS1obcv1CdKE= Name: res/drawable-xxxhdpi-v4/ic_launch_white_24dp.png SHA1-Digest: LZ8InwIvmCpu4chxeQEyVYr7rh0= Name: res/layout-v11/notification_action_tombstone.xml SHA1-Digest: zEJGcu9yp2WqTtWRwec+99ylsWA= Name: res/drawable-mdpi-v4/abc_ic_star_half_black_48dp.png SHA1-Digest: YWbbt9prsOJPwsIvkwmEAQ9AjM4= Name: res/layout/audio_view.xml SHA1-Digest: JIotTJ/k2tG+pTcbuQsDdKpNgWo= Name: assets/emoji_faces.png SHA1-Digest: VF2bbkibGKhCNeUQxTwNIcjghSs= Name: res/animator/upper_pause_to_play_animation.xml SHA1-Digest: 7f8HiUwoTj84cBIvXQhtx6kFMlc= Name: res/drawable-mdpi-v4/ic_delete_gray.png SHA1-Digest: 7f4km9Jklsy/fJDbTkcRwb7F4d8= Name: res/drawable-mdpi-v4/ic_clear_search_holo_light.png SHA1-Digest: 2Zf0PoV8doaC2WrhNE5Z05fH2dE= Name: res/drawable-mdpi-v4/ic_menu_lock_dark.png SHA1-Digest: yfTUaOBEVS1ZrLoUEkV8pHxnHV0= Name: res/layout-v11/color_fragment.xml SHA1-Digest: 52Fed5if7X84XGUAMP7+410Btbs= Name: res/drawable-xxhdpi-v4/ic_emoji_objects_activated_light.png SHA1-Digest: c+SW5rP380Tm+zvHq6ImkjaP7DI= Name: res/drawable-xxhdpi-v4/ic_mood_white_24dp.png SHA1-Digest: riHY4u0a8Z6GyIgR2DKz3gEEGfo= Name: res/drawable-hdpi-v4/ic_pause_circle_fill_white_48dp.png SHA1-Digest: YazZkqaPuAeqe1lYuSzOsj1wqi0= Name: res/drawable-v21/notification_action_background.xml SHA1-Digest: OefACFLLoxfCUiCCPvZ9BpijWCk= Name: res/drawable-xxhdpi-v4/ic_advanced_gray.png SHA1-Digest: aSMd74QblsBULsnEaEbZnl3sAl8= Name: res/drawable-mdpi-v4/ic_send_white_24dp.png SHA1-Digest: +aWOvxd03eljhMg9fBIdSfNDoco= Name: res/drawable-xhdpi-v4/abc_scrubber_control_to_pressed_mtrl_005.p ng SHA1-Digest: I9s6aQ5VyOLrNo4odqSij549Oyo= Name: res/drawable-xhdpi-v4/abc_scrubber_track_mtrl_alpha.9.png SHA1-Digest: MtrqRaF9hHgDajQUiUZsdukbh0o= Name: res/drawable/background_pattern_repeat.xml SHA1-Digest: oB3Wz023ADDvA6nID9pWNGXhWiU= Name: res/drawable-hdpi-v4/abc_btn_radio_to_on_mtrl_000.png SHA1-Digest: cjcTLuyFor2apZdbjPAaXPzqPvQ= Name: assets/emoji_places.png SHA1-Digest: 0Rb7g/OTs83cL8rMbtjEYfViINc= Name: res/drawable-ldrtl-xhdpi-v17/abc_ic_menu_copy_mtrl_am_alpha.png SHA1-Digest: gHqcnosKJ3hj1qyF5PECFPe1Z9A= Name: res/drawable-xxhdpi-v4/abc_scrubber_control_to_pressed_mtrl_005. png SHA1-Digest: dOjymfO7tQPa8kQCGNculrdtmzM= Name: res/layout-v16/color_fragment.xml SHA1-Digest: Mzfzd3MJQefL1CEIwFbv6UhXR2I= Name: res/drawable-xxhdpi-v4/ic_dialpad_white_24dp.png SHA1-Digest: Su8I4l5yVy88Y7uvDfk/3fdIj50= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_373 SHA1-Digest: cSjMHtHIeYx8NPtkRndSSBuoZ98= Name: res/drawable-mdpi-v4/quick_shutter_button.png SHA1-Digest: lashP3NtpUje/lLH9xjgiqgMbNE= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_372 SHA1-Digest: JZwfMXoGUZqHYvczzIvFBYzPVG8= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_375 SHA1-Digest: 4gnH58JyJO9ZBj8MNMws2LGhIEM= Name: res/drawable-mdpi-v11/icon_notification.png SHA1-Digest: C47OjRxwbDRPciOXxk0JS2qRlcU= Name: res/drawable-mdpi-v4/ic_emoji_people_activated_dark.png SHA1-Digest: ZXnNJxuCfsVTzdXbqCkIOp+H4EM= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_YT SHA1-Digest: Kp+a7sS3r8FClzW/weiHhsk/rbY= Name: res/layout-v17/notification_template_media.xml SHA1-Digest: DHZjW3pohCy/wdP2CCVV5iQTx9Q= Name: res/drawable/abc_ic_menu_overflow_material.xml SHA1-Digest: T3yM+Kxh9T09mLZHmQW9RPND7fg= Name: res/drawable-xhdpi-v4/switch_thumb_holo_light_v2.9.png SHA1-Digest: aHisXBhA4tSuq4zWW5w1PYjuGys= Name: res/layout/badge_widget.xml SHA1-Digest: QuNfx9GPL7dqOMYLuPkvHj6u/Lk= Name: res/menu/conversation_mms_group_options.xml SHA1-Digest: t6sm6riQ4OVOUt6/bYJMIBxocvk= Name: res/drawable-mdpi-v4/spinner_pressed_holo_light.9.png SHA1-Digest: MBDjTotrSL6afNoJE5Mq5I6WF4M= Name: res/layout-v17/contact_selection_list_item.xml SHA1-Digest: XvjB3fgrhO0ZYtrxPxky8sE2F8I= Name: res/drawable-xhdpi-v4/quick_shutter_button.png SHA1-Digest: fyDhU/mxYKJuUKZsVjAw2vtA7IQ= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_380 SHA1-Digest: ooR6xh/a/iu1b6CXk+RjF7LeHoc= Name: res/drawable-hdpi-v4/transfer_controls_background.9.png SHA1-Digest: Cngz5DtX5FWcrNq0lMnsLWpu6cM= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_381 SHA1-Digest: 2JnA+oMJ+vJKy4hQpTtSxQVpZ5Q= Name: res/drawable-xxhdpi-v4/ic_mood_grey600_24dp.png SHA1-Digest: afcx3F9gYbFkiyEh3lVPqd7Gmrs= Name: res/drawable-xxhdpi-v4/ic_visibility_white_24dp.png SHA1-Digest: aLHPy4IJ/AzCROczGi3BglAXQic= Name: res/drawable-hdpi-v4/list_selected_holo_dark.9.png SHA1-Digest: 8+a6kSVhZ1n87KOe3NWXssOoSRY= Name: res/drawable-mdpi-v4/ic_menu_search_holo_dark.png SHA1-Digest: i7rLOq1hLoqJGhp5uh7S6NwzrcA= Name: res/drawable-xxhdpi-v4/splash_logo.png SHA1-Digest: w3a+ReajC17z1G4L3eNiX796UCg= Name: res/layout-v17/conversation_item_received.xml SHA1-Digest: 9F+nQohquqINGLdm+7zyO0wjbhE= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_ZA SHA1-Digest: l6ayJ7+8XlOK32bR8BqXKOIluHU= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_385 SHA1-Digest: yPAb2zGtOtW4C/VTuGdD9hVTPww= Name: res/menu/conversation_secure_identity.xml SHA1-Digest: hlasr0H6TiEytX4pgdc5MpJS+50= Name: res/drawable-xhdpi-v4/telephone.png SHA1-Digest: bHI0GUIaPppn5oJV2WmCkAr5QmU= Name: res/drawable-xxxhdpi-v4/ic_send_secure_white_24dp.png SHA1-Digest: 2XgtAH/po7U80GR0olF3IISZvAc= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_ZW SHA1-Digest: TF8pDJ2t0ffaNHdUQUS53/viWRA= Name: res/drawable-xxxhdpi-v4/abc_btn_radio_to_on_mtrl_000.png SHA1-Digest: ++0JraYcPG1W6gax2v1T4h5rv9E= Name: res/drawable-mdpi-v4/abc_text_select_handle_right_mtrl_light.png SHA1-Digest: VzgmMujgGVTkhZBrXgJyrBpI1fs= Name: res/drawable-xhdpi-v4/ic_action_warning_red.png SHA1-Digest: RNqOcepa5uLUhaWV3eBeiLPKRTU= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_ZM SHA1-Digest: QQGauyCOvvzlJtOuY+cXkzdP8Yw= Name: res/drawable-xhdpi-v4/spinner_pressed_holo_light.9.png SHA1-Digest: ojrB5ql2Tg5clwEbaxKtvWw90HQ= Name: res/drawable-v21/abc_ratingbar_indicator_material.xml SHA1-Digest: V8JrLj4745FQ4gUvuKziXuLT2Ac= Name: res/drawable/abc_cab_background_internal_bg.xml SHA1-Digest: 9JWJR0qt9ACSmUHvHpdMc/ljSx0= Name: res/layout/conversation_item_pending.xml SHA1-Digest: PhcNt6JpsU2WepdAvkj0BVW1xM0= Name: res/drawable-mdpi-v4/ic_missing_thumbnail_picture.png SHA1-Digest: XWUfuVWZb4/kZPFc6854m1kepb4= Name: res/drawable-ldrtl-xxhdpi-v17/abc_spinner_mtrl_am_alpha.9.png SHA1-Digest: LRWlMCeV4/Lq+wNklDndVFmtRHU= Name: res/drawable-xxhdpi-v4/ic_info_outline_white_24dp.png SHA1-Digest: b18yrsun4qvibDp1NgsvoMZd39g= Name: res/layout-v13/select_dialog_multichoice_material.xml SHA1-Digest: pOhCB746ty+lvSY4W2hVCv7xArg= Name: res/drawable-hdpi-v4/abc_ic_menu_cut_mtrl_alpha.png SHA1-Digest: SaBB1uVR+6oONKiYA0HTOmVsmqE= Name: res/drawable-mdpi-v4/sms_selection_icon.png SHA1-Digest: tfYAWDbYwC0di+Oqim+RMId5cek= Name: res/drawable-xhdpi-v4/ic_recurrence_bubble_outline_disabled.png SHA1-Digest: y4fEeZuG+Rke2Gz6Xhv2jOTGczY= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_855 SHA1-Digest: COUdI62w67El5HnnJocGdX/mrQU= Name: res/drawable-mdpi-v4/ic_emoji_objects_normal_dark.png SHA1-Digest: koydshN7yOfVp/2xsZpFIkAiRrc= Name: res/drawable-hdpi-v4/abc_tab_indicator_mtrl_alpha.9.png SHA1-Digest: NJuMq0n7Coq8s/ff6QHhDQhI9uw= Name: res/drawable-xxhdpi-v4/ic_call_white_24dp.png SHA1-Digest: YOBn0pvyMtJk0qZhrPVWznPKOe0= Name: res/drawable/abc_ic_clear_material.xml SHA1-Digest: gdOnugi6ZPBQShxkIF+3BjscX54= Name: res/drawable-mdpi-v4/abc_scrubber_control_to_pressed_mtrl_005.pn g SHA1-Digest: NW/i+ex7+hXHYfPT2kBfhzB79kE= Name: res/layout/conversation_item_received.xml SHA1-Digest: L3CzF+IC1jm/vbprpktsIiUA27w= Name: res/drawable/abc_list_selector_background_transition_holo_dark.x ml SHA1-Digest: LVSNyw7X6tB9DukmioIVl33ZyuQ= Name: res/drawable-xxhdpi-v4/abc_scrubber_control_to_pressed_mtrl_000. png SHA1-Digest: pf8Tt2oAabuOsAiSswddcfLUQAQ= Name: res/drawable/clickable_card_dark.xml SHA1-Digest: +k8fRG9M83+fC5mmjI9+enyV0vA= Name: res/drawable-xxhdpi-v4/ic_emoji_recents_normal_dark.png SHA1-Digest: tL+tUpAwomQZH4cE4PfZgIMuigo= Name: res/drawable-anydpi-v21/design_ic_visibility_off.xml SHA1-Digest: /d9K4kz+PEEXzPkb7nC/4aBqj+0= Name: res/drawable-xhdpi-v4/ic_backspace_normal_light.png SHA1-Digest: uzi80CgbHBu5pNzYbVF2Yy2NQiw= Name: res/drawable-xxxhdpi-v4/abc_ic_menu_copy_mtrl_am_alpha.png SHA1-Digest: 99GkU44EvefOaxLCiFW5KAUEIJQ= Name: res/drawable-hdpi-v4/abc_scrubber_control_off_mtrl_alpha.png SHA1-Digest: cjG9sTPDRm4+Q3YgeyRUYPgo2LM= Name: res/drawable-hdpi-v4/ic_textsms_black_32dp.png SHA1-Digest: Azw/NnDiG1+fCiaocBZW4qc2hKw= Name: res/drawable/import_export_item_background_dark.xml SHA1-Digest: Cay1NfYIeYp7e4fwT/HL7+Ka+NU= Name: res/drawable-xxhdpi-v4/abc_btn_radio_to_on_mtrl_015.png SHA1-Digest: uWfk23bm97GtczH2YvAwWP/eNOE= Name: res/drawable-xxxhdpi-v4/ic_send_white_24dp.png SHA1-Digest: EIqLEtxB45GlXiB7jImBE260cHI= Name: res/drawable-hdpi-v4/abc_text_select_handle_left_mtrl_light.png SHA1-Digest: xikdq0MUk/db6+MwsR0wYysb7nE= Name: res/drawable-mdpi-v4/ic_visibility_grey600_24dp.png SHA1-Digest: hCJedNfkCuKLGOyHO4Dmtsk235M= Name: res/drawable-xhdpi-v4/ic_movie_creation_dark.png SHA1-Digest: 0OuGMfK+YEHtaZWw+g+kojXzvZM= Name: res/drawable-sw600dp-xhdpi-v13/ic_backspace_normal_light.png SHA1-Digest: ljntDXrk8zdMFNNY6H71toto4Cg= Name: res/drawable-xxxhdpi-v4/abc_ic_star_black_36dp.png SHA1-Digest: BlslH4QYPV8tPkeyq5iFkcDXUkc= Name: res/drawable-hdpi-v4/ic_emoji_emoticons_activated_dark.png SHA1-Digest: S8Z29WUxXMQ/hrf4fBNB7XWvARY= Name: res/drawable-hdpi-v4/switch_thumb_activated_holo_light.9.png SHA1-Digest: Wh0P8RRSA74oEeBgIjQxEpqcoME= Name: res/drawable-xhdpi-v4/ic_content_copy_light.png SHA1-Digest: gyvhu9zNWykWn0gkokBr2GaJATM= Name: res/menu/conversation_muted.xml SHA1-Digest: cdhiUY6M1BWIDI4/XMRhrZeh2eM= Name: res/layout/country_list_item.xml SHA1-Digest: r1mS7yS/DEnkOyfbMBd3mCVpbQU= Name: res/drawable-hdpi-v4/quick_shutter_button.png SHA1-Digest: 4loawsvoafAyt18yxIOpJkDMH70= Name: res/layout/calendar_date_picker_view_animator.xml SHA1-Digest: JlyCO6wz82o9FYeSpqf9w4/LFZo= Name: res/color/done_text_color_dark.xml SHA1-Digest: khODeLf1rSyXidJV3VHbWGh5Oa8= Name: res/anim/fade_scale_in.xml SHA1-Digest: 7e1v5wyirlR6VHusnyFJ2Hy9Soc= Name: res/layout/three_keys_view_leftright.xml SHA1-Digest: RHH5G6B76hUH7H2XjfBVAiAQsTc= Name: res/drawable-hdpi-v4/notification_bg_low_pressed.9.png SHA1-Digest: NP77wvGcwseigxPz8Z8jideVqXk= Name: res/drawable-hdpi-v4/ic_menu_search_holo_light.png SHA1-Digest: GPxu6w91ETl7Kn08EcY0xbKASd8= Name: res/drawable-hdpi-v4/ic_recurrence_bubble_disabled.png SHA1-Digest: PvUD72ClUaAbmozquBpu1pFkyKY= Name: res/layout/design_bottom_sheet_dialog.xml SHA1-Digest: 71oSkVwEAnepDUSmUMPhds/udqo= Name: res/drawable-xxhdpi-v4/ic_emoji_people_normal_dark.png SHA1-Digest: ud+ge15QS8J3W/STrJS85uBs238= Name: res/drawable-xhdpi-v4/ic_photo_camera_light.png SHA1-Digest: 3+ywo30zk8+MdtiZWpzpq+/7BlY= Name: res/drawable-hdpi-v4/ic_photo_library_white_24dp.png SHA1-Digest: 2i75RHTCQxalHyQuCxhbTGvXLDw= Name: res/layout/abc_action_mode_close_item_material.xml SHA1-Digest: p7Z8mhfVBf1Nhg3/qKSX0VslAmM= Name: res/drawable-xhdpi-v4/ic_content_copy_dark.png SHA1-Digest: iK0hdpe6j6iVLceTUcEAKZ+VojQ= Name: res/drawable-xxhdpi-v4/ic_info_outline_dark.png SHA1-Digest: cV1OJ4EtckNtIGY2CVNr6ShaILE= Name: res/layout/design_layout_tab_icon.xml SHA1-Digest: 1oW2wUEHsS3deIrUBKUEwpNALgo= Name: res/drawable-hdpi-v4/spinner_pressed_holo_light.9.png SHA1-Digest: 2AU1b4tODlUJW7aRFT0bcz4flrA= Name: res/drawable/item_background_holo_light.xml SHA1-Digest: c+jqjsOOYhi5ab58opAJtJuW/2o= Name: res/drawable-mdpi-v4/abc_btn_switch_to_on_mtrl_00001.9.png SHA1-Digest: e//ti7f9UjoZyXMyT5IRTahD3PQ= Name: res/layout-v11/notification_template_big_media_narrow_custom.xml SHA1-Digest: 28bYnRdxyh92WbNXnWMZDlFrmx0= Name: res/drawable-xhdpi-v4/ic_backspace_disabled_dark.png SHA1-Digest: zKT/1vK3dByF8W/4TqDRB3P//8o= Name: res/drawable-v21/abc_btn_colored_material.xml SHA1-Digest: D6vZuC+PxnPYmIv2/fsVSWVSDeg= Name: res/drawable-v21/avd_hide_password_1.xml SHA1-Digest: f3wodn8CvdpkUqG9L8W7iM98UWo= Name: res/drawable-xxxhdpi-v4/ic_download_circle_fill_white_48dp.png SHA1-Digest: rdZLJPyOK70xd0ScLhFw8jUd25g= Name: res/drawable-v11/notification_bg.xml SHA1-Digest: sRRnQQd2J5pxUzHVH2hGZOMRE5A= Name: res/layout/notification_template_lines_media.xml SHA1-Digest: gRpGoh3JvVU0naZoFivIKT1wjAU= Name: res/drawable-ldrtl-xhdpi-v4/ic_send_white_24dp.png SHA1-Digest: N3tmZFpLNkuV5PXMXlfNnUZNkik= Name: res/drawable-anydpi-v21/design_ic_visibility.xml SHA1-Digest: LQ29SOIozRk3sm4Wm8ahc0DtkB4= Name: res/drawable-mdpi-v4/ic_refresh_white_24dp.png SHA1-Digest: rq3d2FDk0wb2yFvjHMPb08OL0HQ= Name: res/drawable-mdpi-v4/abc_textfield_default_mtrl_alpha.9.png SHA1-Digest: 6BStYFTiYO5hj6qjB+1tC6u+FNA= Name: res/menu/conversation_callable.xml SHA1-Digest: yODyzMLTh3FhGB8ZM9fxrUuGU9Y= Name: res/drawable/abc_btn_radio_material.xml SHA1-Digest: UTYOeeEsntRapgE5ZWUWf1IlU/I= Name: res/drawable-hdpi-v4/ic_advanced_black.png SHA1-Digest: j0WvmKWY/IQyHO+fKg/eax4naCQ= Name: res/drawable-v11/emoji_category_people_light.xml SHA1-Digest: 2IpjsMfArkEhNams3V6tq7qnmLU= Name: res/drawable-mdpi-v4/abc_ic_menu_cut_mtrl_alpha.png SHA1-Digest: AfbQuyZF1JMvjiaXDfLvtNLgncI= Name: res/drawable-hdpi-v4/ic_emoji_people_normal_dark.png SHA1-Digest: L5cmEyWgTeqNNbrpoey2AHBT7gU= Name: res/drawable-xxhdpi-v4/abc_tab_indicator_mtrl_alpha.9.png SHA1-Digest: K3ucg8inS6QEpdWRjFnNMV6IIbo= Name: res/layout/keyboard_text_with_header.xml SHA1-Digest: IzS7yKtIO1r409DMFOLheoDoNwY= Name: res/layout/transfer_controls_stub.xml SHA1-Digest: Y7StVJ+2zbCAJ57fSpB7K1nvlzk= Name: res/drawable-xxxhdpi-v4/ic_keyboard_white_24dp.png SHA1-Digest: nJgko2VrulT3uc6mPIRZ1gcYKBA= Name: res/drawable-hdpi-v4/ic_emoji_nature_normal_light.png SHA1-Digest: SnOUa2cZaSzg4+9iObM4wTWeqRU= Name: res/drawable-hdpi-v4/ic_backspace_normal_light.png SHA1-Digest: Gw6S97FzS2pjaWtj1/7b8jgyiM0= Name: res/layout/calendar_date_picker_header_view.xml SHA1-Digest: ZJHpWJQx3nOrifwxdWwhnWt9Ij4= Name: res/drawable-mdpi-v4/design_ic_visibility.png SHA1-Digest: ry2f6USvgI8F8oiXlmsF+qG2Ofk= Name: res/drawable-xhdpi-v4/abc_ic_star_black_36dp.png SHA1-Digest: lP85nXzNzaRJULgljjBQBBKL824= Name: res/drawable-xxhdpi-v4/abc_cab_background_top_mtrl_alpha.9.png SHA1-Digest: QqPpbBwEr9nywoEL/OHp+2+gZ1Q= Name: res/drawable-xhdpi-v4/ic_message_white.png SHA1-Digest: pmfbHY8jJwXAiyCXXeZENrtUfJ0= Name: res/drawable-mdpi-v4/abc_scrubber_control_off_mtrl_alpha.png SHA1-Digest: u6bTvtbDXJXOGa13pLv0kzefZXk= Name: res/drawable-xxhdpi-v4/ic_account_box_dark.png SHA1-Digest: Kde5Ka6vP/QX330y0tfeQ03NFt0= Name: res/drawable-sw600dp-hdpi-v13/ic_backspace_normal_light.png SHA1-Digest: VYqIHgFSG25nuyuYWkjuz086rAw= Name: res/drawable-hdpi-v4/divet_lower_right_dark.png SHA1-Digest: cZK8LP3p9zh+vJsrBfv9xEyglgw= Name: res/layout-v16/centered_app_title.xml SHA1-Digest: QU4uUM9N05Qv1r0QRRaNM3vjjWU= Name: res/menu/conversation_insecure_no_push.xml SHA1-Digest: 2v+W6/w1hci1AkfI3IWmRdpczU4= Name: res/drawable-mdpi-v4/ic_delivery_delivered_dark.png SHA1-Digest: iTc9UFAP+v74rV9lqo0ckhej3xo= Name: res/drawable-mdpi-v4/ic_scroll_down.png SHA1-Digest: z4wu0jUNEFIQtWx0fjaU2W/FdgM= Name: res/drawable/abc_item_background_holo_light.xml SHA1-Digest: fDShwzepkR49aya4UNh+v22s1Nw= Name: res/drawable-hdpi-v4/abc_btn_switch_to_on_mtrl_00012.9.png SHA1-Digest: hOoziuoJ3C2IMcfDzYzmL7E6Tm8= Name: res/color-v23/design_tint_password_toggle.xml SHA1-Digest: uKmyWahGcwpgv98l1DYuTUPcE0M= Name: res/drawable-xhdpi-v4/ic_keyboard_grey600_24dp.png SHA1-Digest: ExaemJusROzkcV16BfxxQ5RVADk= Name: res/animator/rotate_minus_90_animation.xml SHA1-Digest: AhVLtjcJdoeXGcim/ix1HCO/gQw= Name: res/drawable-hdpi-v4/ic_image_dark.png SHA1-Digest: 5CpgtH7z5pmAtDFcDQAdEoVRSyI= Name: res/layout/abc_popup_menu_header_item_layout.xml SHA1-Digest: hQmvMCh5RfHl7zd1OpMuh0PLPGw= Name: res/drawable-xhdpi-v4/textfield_disabled_focused_holo_light.9.pn g SHA1-Digest: OzQ1tHx9DB5q6GA0ZRNG3prDizY= Name: res/layout/database_migration_activity.xml SHA1-Digest: lRl5r5FgpGGR0IYNF63kp434o5E= Name: res/drawable-xxhdpi-v4/ic_pause_circle_fill_white_48dp.png SHA1-Digest: zwSDGmPznTm/cIpMuWFcFyy3AoQ= Name: res/drawable-xxhdpi-v4/ic_volume_up_light.png SHA1-Digest: csRV9qrs9LdlC+blM4qWJ/bZ084= Name: res/drawable-xxhdpi-v4/ic_circle_fill_white_48dp.png SHA1-Digest: RkP1QTEHdPEXQRxbqaja1mtzzfM= Name: res/layout-v17/conversation_item_sent.xml SHA1-Digest: vcK4YtVfMAI3ZnJzNASPYGpg+NU= Name: res/drawable/conversation_item_sent_indicator_text_shape.xml SHA1-Digest: 0anovoc7dnbKH7CwxXSarY9R77I= Name: res/drawable-xxhdpi-v11/icon_cached.png SHA1-Digest: 7gqMY0mppZ95zVJqs1O7QkspoKU= Name: res/drawable-xxhdpi-v4/ic_emoji_nature_normal_dark.png SHA1-Digest: oYt3fnDKVOOon6ufg4D6JLWXRVE= Name: res/layout/video_player.xml SHA1-Digest: ZDQfiwr4ntdWq3CAZLvCBrn9kJk= Name: res/drawable-mdpi-v4/ic_backspace_normal_light.png SHA1-Digest: f/vIuRIwVMzSZ0MELZ9If7z5iRo= Name: res/drawable-xhdpi-v4/icon_dialog.png SHA1-Digest: Yh+Y8O4R0FtgT/ZHK8Z9fXjGjt4= Name: res/drawable-hdpi-v4/ic_search_holo_light.png SHA1-Digest: CXK4K35HwsRQt7CQWNgpJgEtiVQ= Name: res/drawable-xxxhdpi-v4/icon_cached.png SHA1-Digest: gYE4PCg53nmPm3HpKbU9KPsaZ/c= Name: res/color/recurrence_spinner_text_color.xml SHA1-Digest: ARJUNp1b2gsqcrhQnVBfZl0+Ju4= Name: res/drawable-hdpi-v4/ic_brightness_6_gray.png SHA1-Digest: mZV2cXTOBFqBXlRculNmSCO/nEE= Name: res/anim/design_bottom_sheet_slide_out.xml SHA1-Digest: b7nLwVuguqkRn/0QJ5T+s+s304Y= Name: res/drawable-hdpi-v4/ic_advanced_gray.png SHA1-Digest: C9XzOo5OgF7UgKYvkW5+yfpLFFg= Name: res/drawable/abc_ratingbar_material.xml SHA1-Digest: eEVopjQX6W514WoHxn9rLKQ1T5Y= Name: res/layout-v21/abc_screen_toolbar.xml SHA1-Digest: RcV/ssluMcZyxZ3e3qgYkW/4t8g= Name: res/drawable-xxxhdpi-v4/ic_photo_camera_dark.png SHA1-Digest: GL3a0e1lkDupBd8bZCOrdky8mkI= Name: res/layout/date_picker_dialog.xml SHA1-Digest: kf9jozXy8TB5Ir5lhzUk0k3zc68= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_979 SHA1-Digest: E3E+5deRAaxq0tS5UKPX42zboOQ= Name: res/drawable/white_radius.xml SHA1-Digest: vJ/dDcwo+MQQr8+spnN4wPHrpBk= Name: res/drawable/abc_item_background_holo_dark.xml SHA1-Digest: EYfXWBiFkD5pE+x4VQkg8UKkBDw= Name: res/drawable-hdpi-v4/sms_system_import_icon.png SHA1-Digest: vQnKq6EGrPMsiJdaJNh1oIOVDbM= Name: res/drawable-hdpi-v4/ic_push_black.png SHA1-Digest: 3hCWsO5iMnvthvKOo/Zm96bBr6o= Name: res/drawable-hdpi-v4/ic_emoji_flags_normal_light.png SHA1-Digest: TDH6Q0QaGikzI8z9SSXhPTBi1Hs= Name: res/drawable-xxhdpi-v4/ic_done_white_18dp.png SHA1-Digest: j3GOdthjoRoNdPhM7w8dsgHjE6c= Name: res/drawable-xhdpi-v4/abc_list_longpressed_holo.9.png SHA1-Digest: C4a5xmVEzcIJxede0Urh0qZwCmg= Name: res/drawable-xhdpi-v4/ic_textsms_black_32dp.png SHA1-Digest: ismobvzTPdV6vsV7EGHyff/PrCo= Name: res/layout-v17/abc_select_dialog_material.xml SHA1-Digest: 5AKNRDRSJeVR3cn3G2cxceFTohA= Name: res/drawable-xxhdpi-v4/ic_send_white_24dp.png SHA1-Digest: /cN5XZc/UmW6olmT4asAzS7+HCU= Name: res/drawable-xhdpi-v4/ic_push_registration_reminder.png SHA1-Digest: 0v5auK5BRQPgV95hW+jycIiPx90= Name: res/layout/conversation_activity_emojidrawer_stub.xml SHA1-Digest: C7rRCyzp/GaaBT0HAenRiFKOMGw= Name: res/drawable-xhdpi-v4/ic_add_white_24dp.png SHA1-Digest: lceszf3MMMnKuCFVNxrT7fq1spQ= Name: res/drawable-xxhdpi-v4/abc_btn_check_to_on_mtrl_015.png SHA1-Digest: 6wmuQsGop94sACxKfh+EBLCBjJk= Name: res/drawable-xhdpi-v4/ic_clear_white_24dp.png SHA1-Digest: wAjFdCV0d9G4jJxdA+JoxAcg0BU= Name: res/drawable-xxxhdpi-v4/ic_photo_library_white_24dp.png SHA1-Digest: b9kOM5Oe6AYJoOZLUwdzoqGLYGk= Name: res/drawable-xhdpi-v4/abc_ic_star_half_black_16dp.png SHA1-Digest: OBELUky/hMRu50hd+fRgMPXT3ZE= Name: res/drawable-xhdpi-v4/notification_bg_normal.9.png SHA1-Digest: URz3Lz/tIjMAtXfNHimWcDQLTtQ= Name: res/drawable-xhdpi-v4/ic_check_normal_light.png SHA1-Digest: /a8tMklC0x/6BC7aK302NKgRm4M= Name: res/drawable-mdpi-v4/ic_archive_white_24dp.png SHA1-Digest: FOgV73Y4E4G9tSQRswWo6d25m20= Name: res/layout/psts_tab.xml SHA1-Digest: ut5zIC2Qke40czbjy2bU3/eq8ck= Name: res/drawable-hdpi-v4/ic_audio_dark.png SHA1-Digest: f6Rzu7MWG7Vifj9C9GNnSY5Dwc4= Name: res/drawable-mdpi-v4/ic_emoji_flags_activated_light.png SHA1-Digest: Sj0prdaB7XusQnjD6qzLYyu2QJk= Name: res/layout-v11/conversation_fragment.xml SHA1-Digest: DETVRgIT8hjcWuLmGreCXRbxsaI= Name: res/drawable-hdpi-v4/ic_app_protection_black.png SHA1-Digest: FeElOKTrm6ulL0IKibHFpLwtmsI= Name: res/drawable-hdpi-v4/ic_select_all_white_24dp.png SHA1-Digest: d3NyUt7zbRSBabWVugl1zyezxss= Name: res/drawable-xxhdpi-v4/ic_photo_library_white_24dp.png SHA1-Digest: XeWgItT/2YbqFUIPlA1XN4QyW+I= Name: res/drawable-mdpi-v4/ic_recurrence_bubble_fill.png SHA1-Digest: w1sX/nC9GYX9TAF4H3snP6yRXj0= Name: res/layout/conversation_item_last_seen.xml SHA1-Digest: Ud6D9VpTZ59BZFWRquIaLsnz0D8= Name: res/drawable-xxhdpi-v4/ic_advanced_black.png SHA1-Digest: JkA/GcL3vD+TSlGZkxf/D9Sm0mY= Name: res/layout/contact_selection_recyclerview_header.xml SHA1-Digest: nA+tCTWyXEXLRp0lp0EY09gGbDc= Name: res/drawable-xxhdpi-v4/ic_recurrence_bubble_fill.png SHA1-Digest: oo/O+veI0wHux5c+1XJNoX0f8NQ= Name: res/drawable-xhdpi-v4/ic_emoji_symbols_activated_dark.png SHA1-Digest: N8kyiU9nC4ZzneSpOUFCNlkqQwY= Name: res/drawable-hdpi-v4/icon_lock.png SHA1-Digest: I8WB2hjjIronAb2gOV1ntPWGdaA= Name: res/menu/conversation_insecure.xml SHA1-Digest: PZm4tXSwpFBpAlY2H1eP9h7sqYI= Name: res/drawable-mdpi-v4/abc_list_longpressed_holo.9.png SHA1-Digest: GFCjouEOsx2zwJ4qrfooYQ63590= Name: res/layout/three_keys_view.xml SHA1-Digest: FoZ7Mjpza1xFL31pZL/tG3LwRfo= Name: res/layout/time_picker_view.xml SHA1-Digest: E4bx99VtN4hLn81lvzqhGD6cGTE= Name: res/drawable-xhdpi-v4/abc_textfield_activated_mtrl_alpha.9.png SHA1-Digest: aGoDqShCvfRBOcYadujzbODhe1U= Name: res/drawable-xxhdpi-v4/abc_popup_background_mtrl_mult.9.png SHA1-Digest: qQpaYoGWL908h/WoyV81hrJSp9E= Name: res/drawable-xxxhdpi-v4/design_ic_visibility.png SHA1-Digest: swt1xCeUHWXTPK1wZL3z/KjE6j8= Name: res/drawable-hdpi-v4/ic_delivery_delivered_dark.png SHA1-Digest: z1qP/XuEMgqH6PCTku4wlQfck1o= Name: res/drawable-xxhdpi-v4/ic_call_split_white_24dp.png SHA1-Digest: EqpL7q/kUISc05zCS8PQE7XlTCo= Name: res/color/abc_secondary_text_material_light.xml SHA1-Digest: UK67RbNJcciw6ZIvqgR+d1ZzWSE= Name: res/drawable-hdpi-v4/ic_emoji_people_activated_dark.png SHA1-Digest: MN/3tZSXfYwUNJd1fpv81P9hsis= Name: classes.dex SHA1-Digest: O3iS5F8Y4yienw64NT3rCkhJlBE= Name: res/layout/abc_screen_content_include.xml SHA1-Digest: 5b3DomolwZfchrtJxjtLR+9TEkg= Name: res/drawable-hdpi-v4/abc_spinner_mtrl_am_alpha.9.png SHA1-Digest: HDJoTnQuLh9V9/4kv+/UeX7wGTY= Name: res/drawable-hdpi-v4/switch_bg_focused_holo_light.9.png SHA1-Digest: x7N6bd7BQ9gunVUj5pyMTy+B3f0= Name: res/drawable-xhdpi-v4/abc_scrubber_primary_mtrl_alpha.9.png SHA1-Digest: RnQxBqnfZP2w/UH+bBFTojv2UoA= Name: res/color/abc_hint_foreground_material_light.xml SHA1-Digest: 0zpZ3hXSy13vsrByQvEajGH48kg= Name: res/drawable/switch_thumb.xml SHA1-Digest: lH/mX04uaklEXuqyPbIGAmagtiY= Name: res/drawable-mdpi-v4/abc_list_focused_holo.9.png SHA1-Digest: jJIIxBXFlVwxMesuJlFFhjvLhPM= Name: res/drawable-mdpi-v4/ic_audio_dark.png SHA1-Digest: 80UU4YPrTC24AwJ3eKxpXejAlm0= Name: res/layout/conversation_item_pending_v11.xml SHA1-Digest: ZclvwAPtCg7EQ50Xmb/TCW2DbFg= Name: res/drawable-hdpi-v4/ic_unarchive_white_36dp.png SHA1-Digest: DpzTK5IV9VJGnBL1GQNQdw5E2wA= Name: res/drawable-xxhdpi-v4/ic_photo_camera_light.png SHA1-Digest: TzSNJVWVL3UER7oGqP6Nrb06ic0= Name: res/drawable/done_background_color_dark.xml SHA1-Digest: BQ2YGX7F12dg30GOBpoPMqnBg/w= Name: res/drawable/abc_ic_go_search_api_material.xml SHA1-Digest: 4TOQZYsZfAWYiCOnhZ922D5jaV0= Name: res/drawable-xhdpi-v4/abc_textfield_default_mtrl_alpha.9.png SHA1-Digest: L12XNgC05BSQghB6JCrs8Us9eEo= Name: res/drawable-xxxhdpi-v4/ic_badge_24dp.png SHA1-Digest: /UKTs8syiI+8teKE7JTtgCF7EOA= Name: res/color/switch_thumb_material_light.xml SHA1-Digest: 70Ris1bjtMLy8qA7qzUjHvcpAIM= Name: res/drawable-xxhdpi-v4/ic_push_black.png SHA1-Digest: ygKohbyfFVJgNYP5BVx3Xgx+JGE= Name: res/animator-v11/rotate_minus_90_animation.xml SHA1-Digest: dAr9tiloBMntrmMmfeQ1JW7RJVM= Name: res/drawable-ldrtl-hdpi-v17/abc_ic_menu_copy_mtrl_am_alpha.png SHA1-Digest: 3f2Gmy7pGZPASiGf+ZPR/zDMdpY= Name: res/color/dialog_text_color_holo_light.xml SHA1-Digest: ieRybNvbHRyOkglFiMNjqxmgnYM= Name: res/drawable-xxhdpi-v4/icon_dialog.png SHA1-Digest: QhfVY7UBQilNAfrHJXWil0t74RI= Name: res/drawable-xhdpi-v4/ic_menu_lock_dark.png SHA1-Digest: M1g3b4KBhEjHrG1iEhJorzie18A= Name: res/drawable-hdpi-v4/ic_save_white_24dp.png SHA1-Digest: b0MOY6ocByL+BiDj8t/xAuWDXR8= Name: res/drawable-mdpi-v4/ic_check_white_24dp.png SHA1-Digest: 9BpaEBpmmi2X4RbVVZyZWtKre84= Name: res/drawable-mdpi-v4/abc_btn_check_to_on_mtrl_015.png SHA1-Digest: Ub7EVU/MNH+VSjP7k8FYzKJQoQ4= Name: res/drawable-hdpi-v4/abc_text_select_handle_left_mtrl_dark.png SHA1-Digest: Vgi5sEfMVSyu0nd6WWsvBST1nxk= Name: res/drawable-xxhdpi-v4/switch_bg_disabled_holo_light.9.png SHA1-Digest: sPU97/CASp/g7EwfcegGeM9Y8xU= Name: res/drawable/pause_icon.xml SHA1-Digest: OW/HliDYn2yZlppVP1IZ8r4AXXU= Name: res/drawable-hdpi-v4/ic_keyboard_grey600_24dp.png SHA1-Digest: 3+L8uB4iXUHcTlCl0935iz7cQ4M= Name: res/drawable-hdpi-v4/textfield_focused_holo_light.9.png SHA1-Digest: NfEGOtZ0YkueMDHG9onUNJVuHAM= Name: res/drawable-xxhdpi-v4/abc_ab_share_pack_mtrl_alpha.9.png SHA1-Digest: 07+MMsIKk8a3BObx9eEkeKwYSSk= Name: res/drawable/recycler_view_fast_scroller_handle.xml SHA1-Digest: lId/oCzHC4v97KJfaSwHpjh8Vk0= Name: res/drawable-hdpi-v4/ic_movie_creation_light.png SHA1-Digest: P5qoF4VsoxJa2WoiilxTRUxdbog= Name: res/drawable-hdpi-v4/switch_bg_holo_light.9.png SHA1-Digest: CpRZZ1GTLscTpuMbiso8PfUMFTA= Name: res/drawable-v11/emoji_category_flags_light.xml SHA1-Digest: 1HXt+SFCsg1FOzvewAlnVfcPlH4= Name: res/drawable-hdpi-v4/ic_emoji_people_normal_light.png SHA1-Digest: +AYFjg+xkMjZNzI3+A94/vqhwIU= Name: res/drawable-xxhdpi-v4/abc_ic_menu_copy_mtrl_am_alpha.png SHA1-Digest: n8TfpaUDWC1ZG/DnCL+kvaeXf08= Name: res/drawable-xhdpi-v4/abc_ic_menu_cut_mtrl_alpha.png SHA1-Digest: jUXes5sBIdjAuvOfVrnJvHW7r+w= Name: res/drawable-xxhdpi-v4/abc_text_select_handle_right_mtrl_dark.pn g SHA1-Digest: NlLE4WLe09sFAjGcYGx9OeUuyzA= Name: res/drawable-xhdpi-v4/ic_notifications_gray.png SHA1-Digest: yG4IA2zOn2IpgU4LIHOixHbx7uY= Name: res/drawable-hdpi-v4/telephone.png SHA1-Digest: 9nlQS7d+VbUPkr+prirBG+O+A+0= Name: res/layout/number_picker_dialog.xml SHA1-Digest: JoItrFpfK/Jc5Yu89HO7z7riXCc= Name: res/layout/country_selection_fragment.xml SHA1-Digest: 9FP5VBphB5dDjtyb6LGAejYRDDk= Name: res/drawable-mdpi-v4/ic_emoji_symbols_normal_light.png SHA1-Digest: qGIjjOJCf3co0MQfgPXcTido4p4= Name: res/drawable-hdpi-v4/ic_visibility_white_24dp.png SHA1-Digest: AHCpu+6ehOjBI4qi24Mr2j/RW1Y= Name: res/drawable-v21/avd_show_password.xml SHA1-Digest: gmgwezio0n1pD9PKq4pn6tN1Jc4= Name: res/drawable-xxhdpi-v4/spinner_disabled_holo_light.9.png SHA1-Digest: d0C8Ku1iXl9QUHg5si64yzLBZ8c= Name: res/drawable/abc_vector_test.xml SHA1-Digest: 4yJGw44hdFgotEL2tng9U1c82Mw= Name: lib/armeabi-v7a/libcurve25519.so SHA1-Digest: 63TQYdkvchMVuxrOy/mctpYth0A= Name: res/menu/conversation_add_to_contacts.xml SHA1-Digest: e3y0WihLiI7Skf9UpjQDJZj2lZ4= Name: res/drawable-sw600dp-hdpi-v13/ic_backspace_disabled_dark.png SHA1-Digest: RXmFGZr/Q0yvb7b872P8mGxd43Y= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_LK SHA1-Digest: ied04vDsq12FV0JH3mOjzh309vk= Name: res/drawable-mdpi-v4/ic_visibility_white_24dp.png SHA1-Digest: RQFCLSBs6hvQvM1NMUC9GGfo9D0= Name: res/anim/design_snackbar_out.xml SHA1-Digest: tSHapqXFI6k7SCynouBmerWDWcs= Name: res/drawable-mdpi-v4/notification_bg_low_normal.9.png SHA1-Digest: sUXBSDmIwrVhXMAYtsmpMAdZsVM= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_ER SHA1-Digest: gHVjUaO/Hu0WmrCse/bbzvHA5ls= Name: res/drawable-xhdpi-v4/ic_search_holo_light.png SHA1-Digest: 5cIoGeIb35m+WD6Ibj+Q/8h7Wcg= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_ET SHA1-Digest: wy3NWeNxy5SjTEkOTlENuldOG5A= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_ES SHA1-Digest: dcfBeFVvtf1Npmm17B+8Uvjkosw= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_LS SHA1-Digest: ElIWf9hGKw6kJuiTwqiTZ3kksQ0= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_LR SHA1-Digest: q3eGR1wYR2wXCuY2G8YztxC4jn8= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_EE SHA1-Digest: EOshv+VduBq+yJISeM1Hk888RLQ= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_LU SHA1-Digest: 2u7acAapHAVN0vRyrGF4xeNh09k= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_EH SHA1-Digest: ZuoOUkuf9kckH6tgBjNF4A/j8fo= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_LT SHA1-Digest: qzz+sgWLOJ7dDgsBjovl+5j2riw= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_EG SHA1-Digest: gItwjACHBejWkN4G3O36fFVyl4M= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_LV SHA1-Digest: eoVKgGuYjS2A1PhEji8Z9sOrgbU= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_LY SHA1-Digest: f3DxjbiutCyQ2NsG/LTLXF1yGdQ= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MA SHA1-Digest: dPX2NQ3g/UvM8mPBxbNZcNCpLFw= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_EC SHA1-Digest: 48aNA4uEKv1hZhtpAC+tlbTQXl0= Name: res/drawable-xhdpi-v4/abc_btn_radio_to_on_mtrl_015.png SHA1-Digest: IKtTqnzlIY7DpFmknZLDUcK+O3s= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MC SHA1-Digest: B9gwrf7Nj6F+sls86I8wqQvtUMc= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MD SHA1-Digest: XRSvQ5ItZQ5tjpcthn2rmzBWZH4= Name: res/layout/notification_template_part_time.xml SHA1-Digest: W/kytmaWkF2VPENQ086DWVdFzxY= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_ME SHA1-Digest: RUPlibrsFUwsw2sk0+RS7N/VRqU= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MF SHA1-Digest: 14IzhxapYTuOFt4ytI/QREZoG7I= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MG SHA1-Digest: ctZKR12DERrux+rZo8vytXNh3HM= Name: res/drawable-mdpi-v4/ic_notifications_gray.png SHA1-Digest: vZPyvQob6QrDKcHbe4kBeLDkvwE= Name: res/drawable-xhdpi-v4/ic_emoji_flags_activated_dark.png SHA1-Digest: m1hXrT9B1hmf35sVuclo7StZqR8= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MH SHA1-Digest: I553az/fsFiei61dNsx+OzqhGtc= Name: res/layout/recipient_filter_item.xml SHA1-Digest: QntBBcYW90Shhm0OV1e7vvuiEmM= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_DZ SHA1-Digest: C5e84TgfTYmCzLZYu6RnqZHKpJU= Name: res/drawable-v11/emoji_category_emoticons_dark.xml SHA1-Digest: Z+gMiNhbCpygIX9WwGge//a90Fk= Name: res/drawable-xxxhdpi-v4/abc_ic_menu_share_mtrl_alpha.png SHA1-Digest: uwiP3ApwLduQ11Jf4UyIGf8WaSw= Name: res/color-v23/abc_tint_seek_thumb.xml SHA1-Digest: AG/P59T5NZ2vW8gLE2LWkUNjTgU= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_FO SHA1-Digest: I0h6Bg+e8DraPzeqhgG/JXKaHnE= Name: res/layout-v21/notification_template_icon_group.xml SHA1-Digest: BYFxUZkg0OVmcdx0VaV8IdmvCRk= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_KI SHA1-Digest: W+GYGRWWNO9VfnCGjezr83rTWak= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_KP SHA1-Digest: Dt3psUrjHh2RtKdt01bA6NayDkE= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_KN SHA1-Digest: r9TBVsQVlApfJ5PURa5jTDp1mpI= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_FR SHA1-Digest: F8cEznyv5lL3oxB8ewrVNbte/mo= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_KM SHA1-Digest: /j3NYmNeTSXEqAeNHPcmktPmmUc= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_FI SHA1-Digest: cc3FiPRu599RuvLrUYuG4GlLx1Q= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_KR SHA1-Digest: eeH6SrlK9fz//fLCAbgMKSPbydk= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_FM SHA1-Digest: Omg8GHvOmLFlocbs/beeFmigteY= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_KW SHA1-Digest: Wqeif/KPbufIR7wVERzqR8S/pEk= Name: res/drawable-hdpi-v4/ic_emoji_objects_activated_dark.png SHA1-Digest: sEuvrPrbfFpdd0oEeUk/F5l37Oo= Name: res/drawable-mdpi-v4/ic_emoji_emoticons_normal_light.png SHA1-Digest: lcN1FLklx34ce3XjX8MS1ub6nM4= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_FK SHA1-Digest: virx/gqHIJaAJfMya2FVCsroiUU= Name: res/drawable-mdpi-v4/abc_list_selector_disabled_holo_light.9.png SHA1-Digest: S/+WIalIT7QGoZ4J/VOqr0XEGEM= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_FJ SHA1-Digest: AsBJQ5cDvtaD8KhVrdd3Ra19G2E= Name: res/drawable/play_to_pause_animation.xml SHA1-Digest: 2QNVZNFxIwLbMV2bdMWWFx3Vg+w= Name: res/drawable-xhdpi-v4/ic_lock_dark.png SHA1-Digest: fsVgKEE74rC9VZ1aUVMiTifFjJk= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_KY SHA1-Digest: LzTiSXlJqas0gcRry8BtI2/+MaY= Name: res/drawable-xxhdpi-v4/ic_emoji_places_activated_light.png SHA1-Digest: UsUkp5uLESbx5uRS/7pqYOE+G+M= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_KZ SHA1-Digest: morjXaz7AQrfchuU2D9Ir0hso20= Name: res/anim/design_fab_out.xml SHA1-Digest: eqyMleghgi0F32G8QHJUnftDRAc= Name: res/drawable/button_background_dark.xml SHA1-Digest: vjYs0zd8wTeSSImwhd7SzCMvt3E= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_LA SHA1-Digest: +UJCznkxgPXlvPZ8PXSLUW4dEhA= Name: res/drawable/abc_ic_search_api_material.xml SHA1-Digest: q4PW+nQazlvYWeSQX654gGr9+Xs= Name: res/drawable-mdpi-v4/switch_thumb_disabled_holo_light.9.png SHA1-Digest: h+7dgWRgNzZ6qYbj0pMQoC2C4No= Name: res/drawable-xhdpi-v4/ic_emoji_recents_activated_light.png SHA1-Digest: x0Fibi8IbLeU9rHJ/EUy/JhYKNk= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_LB SHA1-Digest: 7R1a00+ERbmvIrFMfqEuy0wz3wk= Name: res/drawable-hdpi-v4/ic_lock_dark.png SHA1-Digest: +7Z4j/1Tp8o3+UaRcS77epplfh8= Name: res/drawable-xhdpi-v4/ic_unarchive_white_36dp.png SHA1-Digest: eGo7lFHOkrFuGtuMSR3rtlw1Dmg= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_LC SHA1-Digest: h+ps4m+jPrjq7rFtDAeC1nt/uow= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_LI SHA1-Digest: rRscPukcDPzU3U3WU20X9HVrfr4= Name: res/drawable-xhdpi-v4/list_selector_background_selected.9.png SHA1-Digest: YJ9zp2BVWbYoWuD1G3xXbV47jvM= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GT SHA1-Digest: Q7O6pvuWts4wzfz7X9BaqSmQEvk= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_JM SHA1-Digest: hOwOLqaTBB9z6KLemQDjdI/AtoQ= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_JO SHA1-Digest: hJgqHBzI49lT0ggVsTR444WAG8I= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GU SHA1-Digest: a91JKpt1O+8EofHePL/xFmjB7PY= Name: res/drawable-sw600dp-xhdpi-v13/ic_backspace_normal_dark.png SHA1-Digest: 5a/n2fjexn3yPINUH/kg3IzKacY= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GP SHA1-Digest: bUPAJj8YbzQEbkKiMdGWK8DP2ss= Name: res/drawable-v11/emoji_category_emoticons_light.xml SHA1-Digest: /i7VOhZRV82iuUh5suuxPNSMFDk= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GR SHA1-Digest: 1QYdEhnohIcjN2HvCq/hkhwp8xs= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GL SHA1-Digest: J5wULHohOFx6LVORM7knQZPPflA= Name: res/drawable/emoji_category_nature_dark.xml SHA1-Digest: RzDuk6h6UEkqappk7hYx6pgKeCs= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GN SHA1-Digest: eQYUfKvF7PhYDoQymxImO/ArAn0= Name: res/layout/three_keys_view_text.xml SHA1-Digest: OIg+cLCV8JJOTklX8tPoW4VQ4HY= Name: res/layout-v21/conversation_item_sent.xml SHA1-Digest: TgHquxe4uRpHmqvpMejOLH3IlV0= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GM SHA1-Digest: UjuisQhgKNNJKc8JgAJaKu4mS/w= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GH SHA1-Digest: PMia4PQmF7C2hXDP2qRmalQI3zk= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GG SHA1-Digest: IPL006rKrzjMGsxEybUZLG23+OE= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_JP SHA1-Digest: BPoTPiUdBS8osUrAiRWdZZuoySg= Name: res/drawable-mdpi-v4/ic_warning_light.png SHA1-Digest: gS0bDiXBZr0DgAwFbGO9Meuo6Ac= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GI SHA1-Digest: BCI6mUSq/R5El/YBddOeOzeVfM0= Name: res/xml/recipient_preferences.xml SHA1-Digest: vS+sVmTs0ik5kh0QzdQ8EefqVrY= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GD SHA1-Digest: k3WLWwCjTxwsIUUmW47RSNfWotY= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GE SHA1-Digest: AzBcU9n0fiP2A5xmAb/kmX/5WzA= Name: res/drawable-xxhdpi-v4/ic_delete_white_24dp.png SHA1-Digest: 1RidNQvRsN6EducCc0vCJzxVfF4= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GF SHA1-Digest: YTDZuGscoDkKLscSSteWHNnWqHI= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GA SHA1-Digest: 8V+YFYPjobN0sTLs1ourRLCEGqQ= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GB SHA1-Digest: Zi8bBmLz0rAbi2uaIPYkG4kDdog= Name: res/layout/icon_list_item.xml SHA1-Digest: Xw5UkSRVTEth1VIEgzovEo5YDeE= Name: res/layout-v17/notification_template_big_media.xml SHA1-Digest: 2TZwnbqvpxhRXoY7QCi88ttXexQ= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_KE SHA1-Digest: +llMaXL1zpGanoMQz7UFeeeWMw8= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_KG SHA1-Digest: +/TbCrw/xmVGXAb2o1+a5y+DJJM= Name: res/drawable-xxhdpi-v4/ic_keyboard_grey600_24dp.png SHA1-Digest: a+dw9a8QtUZy6yhhDT6KdPGUCjQ= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_KH SHA1-Digest: SO0HcKRfd3hRI6Yo8LxVqYbZLt8= Name: res/drawable-xhdpi-v4/ic_video_dark.png SHA1-Digest: zpwM996y3CVQukYGQ0HTHy5f7nE= Name: res/drawable-hdpi-v4/abc_ab_share_pack_mtrl_alpha.9.png SHA1-Digest: cK/LCW7Y07tXQ8e5BdotU64US0I= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_IN SHA1-Digest: 6Tkee6+4mtYefwjp3ho+GZxPO5U= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_IM SHA1-Digest: RDnd0hwdyfVc3N2uBvc6S1HEljs= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_HU SHA1-Digest: gBSEvsJoHwDyup3b6joCh5dTRD4= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_IL SHA1-Digest: pw3ZQcOPQ8vekxW1votjWkpLonM= Name: res/drawable-xxxhdpi-v4/abc_ic_star_black_48dp.png SHA1-Digest: lZvYglov/F7rh1bqR+gIZerpDBA= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_HT SHA1-Digest: cuqCGTXyf9YWfeIE5CpdBM78H6s= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_HR SHA1-Digest: 4SIa2SzqN4pvQ+MNKxxtFPnDRCM= Name: res/drawable-xhdpi-v4/ic_attach_grey600_24dp.png SHA1-Digest: IJb9OzPEjLFeZBPANRMAm0yZfFQ= Name: res/drawable-xxhdpi-v4/ic_archive_white_24dp.png SHA1-Digest: LnSuw5GveQloQ5Y2p7P9PE/o3co= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_HN SHA1-Digest: 2zlD4M+S4ihEvAOOaCf+xjE7KwM= Name: res/drawable-xhdpi-v4/ic_emoji_flags_normal_dark.png SHA1-Digest: xqJQwPDxU7dGMfeBydeKOClG/wQ= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_IT SHA1-Digest: mJyiY2OQxiz0HO3knAD52CKKXhk= Name: res/drawable-mdpi-v4/list_selected_holo_dark.9.png SHA1-Digest: w5jMjyx0n/lk3stiPGrcn7tdZT8= Name: res/drawable-xxhdpi-v4/ic_group_photo.png SHA1-Digest: WmOAx7F3WqRDxpRW/IxtzYnNI1E= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_IS SHA1-Digest: M6vwcfKOPCPzXN2Q1LPSSN6xUXE= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_HK SHA1-Digest: iMRHAc5pHQG7l2MkKc9Uei8mOdM= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_IR SHA1-Digest: kkS2BgwtVVNMbA8B52AUVR7Vnng= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_IQ SHA1-Digest: 9kyvSnJwQPj+ofHG/9nIkccqhGM= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_IO SHA1-Digest: xS6m1Nd+dX6UHPssnjupk97ZTus= Name: res/layout-v16/notification_template_custom_big.xml SHA1-Digest: bL5ENkTdQZZo4/ewb7jV+FB52C4= Name: res/drawable-xxhdpi-v4/ic_emoji_flags_normal_light.png SHA1-Digest: Ude+n/pbQCHeuTUCYUnBND+DjF0= Name: res/drawable-mdpi-v4/ic_info_outline_white_24dp.png SHA1-Digest: kqlF5XPnBveug9qTLLjXSlZngWM= Name: res/drawable-xhdpi-v4/abc_btn_radio_to_on_mtrl_000.png SHA1-Digest: x44uUsdD5wnS8x1uTf9WTb3Fux4= Name: res/drawable-mdpi-v4/ic_photo_camera_dark.png SHA1-Digest: oc0uQS6Z4xssS7SPSC7hWEzCvBs= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_JE SHA1-Digest: t5AW47nFrcJm9IyeUU/4m1DYf4M= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GY SHA1-Digest: a/xp9RWW4VBQ/NIBRZACsJpM0tU= Name: res/drawable-mdpi-v4/ic_emoji_nature_activated_light.png SHA1-Digest: DIn3M7/XVDB6Gwx/ZHF5eykuZe8= Name: res/drawable-xxhdpi-v4/received_bubble.9.png SHA1-Digest: W4de+5UEqZE2m7rCCt25/Z1CxWI= Name: res/color/abc_btn_colored_borderless_text_material.xml SHA1-Digest: qYYJCxgQ4AbdVk4+vJwfrFQSIRY= Name: res/layout-v11/custom_default_preference_dialog.xml SHA1-Digest: 39iUnvmNYHFHassDu5Sf3avA4oY= Name: res/drawable/last_seen_divider_text_background_dark.xml SHA1-Digest: S9qKuKzACOFXweC2S3e7be8G510= Name: res/drawable-xxhdpi-v4/ic_audio_light.png SHA1-Digest: gQuhd3cXwFTM7eONLXkGFPvxBo8= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GW SHA1-Digest: NKZr6PrDrXC1lER+/oi/KN2iUAk= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_HN SHA1-Digest: VcOLvVS1v9QsxowwQQCxxpLIhqY= Name: res/drawable-xxhdpi-v4/ic_notifications_gray.png SHA1-Digest: +DbmF16Xqsi7KleR/q1ocQU0ZtA= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AC SHA1-Digest: RDF732v0m4SrZxaPqGU0AJ1dN5U= Name: res/drawable-mdpi-v4/switch_bg_holo_light.9.png SHA1-Digest: vON82tQz84Bild5sO6RktMAlv6M= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AD SHA1-Digest: IgBzZJ0TkASrgg+U2+YVGyfHP+U= Name: res/animator-v21/design_appbar_state_list_animator.xml SHA1-Digest: ovKSSXvPra3gUPG3Ru+QvqC93jE= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_HR SHA1-Digest: nX+4rIC77R7nsEX+7umr/Tl17F8= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AE SHA1-Digest: 8a6VtG0nrivCY7Uj7mEBGCWkyLc= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AF SHA1-Digest: 0aCjoUjKRbBLMzMy4iOWMtY/3UA= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_HT SHA1-Digest: aitUHT8nE8GT2l1vyYrnQ3zN9Vs= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AG SHA1-Digest: JyNY1zM/wn6O7nt35NXNo2PiLWI= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_HU SHA1-Digest: oHUli9tcpI1CfmTWNsCcs79QI8M= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AI SHA1-Digest: 7k5INCLG8OxQ0aRVxy32wZmKGYA= Name: res/drawable-hdpi-v4/ic_forum_grey_32dp.png SHA1-Digest: 99b7emFuCdH3rCFmzZtJOXgOgfs= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AL SHA1-Digest: QPUQhoD1ELWsS8wobUKLSlxREk8= Name: res/drawable-hdpi-v4/ic_emoji_recents_normal_dark.png SHA1-Digest: w7FLJuXEQDUevStvf/lE43WZRtw= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AM SHA1-Digest: OZ7TzQAruGmMNKwTbj26HSSJ6Vc= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_HK SHA1-Digest: sK5ygddQOZG1bpMfIn+ufm9Ag1w= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AO SHA1-Digest: t1oxQVcHcuY07YStXuGwlPqCGYU= Name: res/anim/design_snackbar_in.xml SHA1-Digest: QPiYcwJRp7LvVEneHabhK9QbisA= Name: res/drawable-xxhdpi-v4/abc_ic_star_black_16dp.png SHA1-Digest: 1y+vuoD2qUEyG9rLg5RKbDNziXo= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_ID SHA1-Digest: Jd3efgPU/mTNXdAghUYZp4b8f5I= Name: res/drawable-xxxhdpi-v4/ic_volume_off_grey600_18dp.png SHA1-Digest: m7uBbnMbM7TLl/038beKjjdQEA0= Name: res/drawable-xhdpi-v4/list_selected_holo_dark.9.png SHA1-Digest: H2X9BKxBdFAOYEppP+vczoJ/LCU= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_IE SHA1-Digest: yaaNbeWiQB+4UJuwYBjQjPCyz8U= Name: res/drawable-mdpi-v4/ic_emoji_objects_normal_light.png SHA1-Digest: wLIAptflMGRuo+tA0kne5MPyyXE= Name: res/drawable-mdpi-v4/ic_delete_white_24dp.png SHA1-Digest: gmSSBMZdMw8pnX1afNOc1o+JtOU= Name: res/drawable/abc_list_selector_holo_dark.xml SHA1-Digest: Zlmbg+JWzYfCIIOn1SxRANlh8xo= Name: res/drawable-xxhdpi-v4/ic_emoji_flags_normal_dark.png SHA1-Digest: 2z1yxZchowADwapp1FtAcalT87Y= Name: res/layout/recipient_preference_activity.xml SHA1-Digest: SqZ38YCPlsAm7mHR1/wNghFPwAk= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BD SHA1-Digest: 76430xBKwku/DDx/2v8uzd8bS7o= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GP SHA1-Digest: TjngB6KbYm1dWa1jCgFdircKI8E= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BE SHA1-Digest: 0jMFpYLJRvAFhGwV1m0ywwHV0lk= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GM SHA1-Digest: +HMlLkrXHtTaQRYsvMNYwivXw00= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BB SHA1-Digest: D9VdzHgGD84sHE9KzoLlCpHhreI= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GN SHA1-Digest: kamMv/kGuT+OF5yKyIcbuiawZhs= Name: res/drawable-hdpi-v4/ic_forum_black_32dp.png SHA1-Digest: e7lhz+eq+Z2xMLdWOzhY5aYbdIU= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BH SHA1-Digest: hPCyeOJ0pNXVNokGVbueix33HT0= Name: res/drawable-xxhdpi-v4/abc_spinner_mtrl_am_alpha.9.png SHA1-Digest: kKM7t2gcUV2hJsYu4H6GhDJ44Ww= Name: res/drawable-xxhdpi-v4/ic_volume_up_dark.png SHA1-Digest: jZa17/4Ozx3sEVLWjy+QHrSGkY4= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GT SHA1-Digest: A+WBdBc1oxnAo/NSFCb0ckHD/RQ= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BI SHA1-Digest: xARDGdB+3gz2uu+L03V5+Z2OkE4= Name: res/drawable-xxhdpi-v4/ic_emoji_symbols_normal_dark.png SHA1-Digest: OXjkrp9N5O3fEmUz0sZ803HBON0= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GQ SHA1-Digest: j0Gr8/C7dKo9jIeBiQdGJzrTQtE= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BF SHA1-Digest: 9IL79Qc7LVIwe3TPcfm/dfPBuD0= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GR SHA1-Digest: oOxq1iueXRhFaVq694uW+BIWVe0= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BG SHA1-Digest: h93q28N4Mq9DJA5stCI4Q6kpV+g= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GG SHA1-Digest: JjEfFBdOiGvImFk5qCvUNoJHssg= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BL SHA1-Digest: Bkex4W8Sqdq2QdfPpjxUsyDRFNM= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GH SHA1-Digest: tARXirdHO+J7jX1BSZGURMKh2OA= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BM SHA1-Digest: 2bavZ8OP6WYO1PZ1yZSdwmBWr1Y= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GE SHA1-Digest: Eh+FuhDuQ/Yud4wARFz7ynlQXCo= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BJ SHA1-Digest: wPLMmY7tZ7tohQpByJmXMBMvejg= Name: res/layout/share_activity.xml SHA1-Digest: dP8qtNVpgRnPPMBikAwkuMfaRgg= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GF SHA1-Digest: cStw3rgI9jNczqdt9+S3QrtFgyI= Name: res/drawable-hdpi-v4/ic_emoji_objects_normal_dark.png SHA1-Digest: K8C77eJjxCDFDD/YP8ZOMO/LNXY= Name: res/drawable-mdpi-v4/ic_volume_up_light.png SHA1-Digest: Nfocgsk1S7B5O3+/qQ28m5g+03k= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GL SHA1-Digest: xZ3Nix5ojbYAdxY1ujOK4kEDn58= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BQ SHA1-Digest: TRZ8RoSzM7Q0Kgy9q3Hkgv0+K44= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GI SHA1-Digest: bYlQ/+Z+fxPyy+M8utdMVtVjzoY= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BN SHA1-Digest: zLlsc3Sq+KhTy5q17fahCIHn9as= Name: res/anim/slide_to_right.xml SHA1-Digest: odD3qfm4+8xLhJn/hGAfXAz+aZ4= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BO SHA1-Digest: X6dOCKzkWH7pG353qvPi0cJMXZA= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AT SHA1-Digest: +VdTbd3yiS56Vvg6mVBbJ1FhevY= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AS SHA1-Digest: muvAoKE378p/xfRJMH0gEfWAswY= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AR SHA1-Digest: kfEObuTyU520NYg+cgyCwq8UDRs= Name: res/drawable/conversation_item_header_background.xml SHA1-Digest: ltMtF0mlyQqMyjfRF3u1wqyKwE0= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AX SHA1-Digest: GAupldrmLMOJNAPQA4t7C7VELi8= Name: res/drawable-xhdpi-v4/lockscreen_watermark_light.png SHA1-Digest: f3uR83//pKLF+IvoV5IDGhpgv7s= Name: res/layout-v11/conversation_list_fragment.xml SHA1-Digest: IZJNszeAm0+nOf+E3k7rnorK68U= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AW SHA1-Digest: 7GFkN+PCbEzeSH/ZPSdE8zL5duU= Name: res/drawable-xxhdpi-v4/ic_send_secure_white_24dp.png SHA1-Digest: u/jnxcjUv1jpnEqD1E2j2DGRbF8= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AU SHA1-Digest: V21thVoVDWhqpziOSHcYeQEyk1c= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GW SHA1-Digest: CHWAyb6wfCRIPi1Awop4y7ydYvI= Name: res/color-v11/abc_background_cache_hint_selector_material_light. xml SHA1-Digest: 5ZLto+P8lE/ONeMwLGzH/8b7W/M= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AZ SHA1-Digest: ipWmzFvGqfH6XuNw5VZtKyqAwB4= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GU SHA1-Digest: 5QtlxjAkALSyqlnJGY1lW+mI7LA= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BA SHA1-Digest: YAwTUUxVNul0kJ3nxEj4W5kCNLY= Name: res/drawable/emoji_category_places_dark.xml SHA1-Digest: i5LwYGeXLGbsZlLUNAlCLX6WES4= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GY SHA1-Digest: azgoBqgESOhFdA7ELp8TmWkbU7I= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CG SHA1-Digest: Fd16dLbvXqX1FR9LEkbqGIeaf9w= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CH SHA1-Digest: fMOaGeUlCWnq90pEYA/ZuZW2NVs= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_FR SHA1-Digest: /7QnZpwng/J+7wbQ1ginTBiZcIA= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CI SHA1-Digest: cYID8mCsmYzvvINPQg/MCBIwU90= Name: res/drawable-ldrtl-v17/actionbar_icon.xml SHA1-Digest: WB6RqmtbPrs8sxSmdHke+npJQ1o= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CC SHA1-Digest: my7RQj++d4c9gN3M75yW9FNrm+w= Name: res/drawable-hdpi-v4/ic_done_all_white_18dp.png SHA1-Digest: ABt/I1W7stE/LdoJLaF/ETJ8Z6w= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_FM SHA1-Digest: 4oKk49pru3DTC0/xf0vXtdZ7G4Q= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CD SHA1-Digest: 8piew6BOYZ7ePRqaXFTnAKldIBM= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_FO SHA1-Digest: TziXLyMXY8BSKyMMQAZRAIl430k= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CF SHA1-Digest: hTwR8te+utnnm0BHnn/drJVOzEo= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CO SHA1-Digest: SmaJI8a3UWgPKtXiHeEGKrkTjEE= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_FI SHA1-Digest: YpU9InIafwl6Kqrsi87ubqMhmeA= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_FJ SHA1-Digest: Ftcg8Hvs6vJdlW/rMvvt69iJHOA= Name: res/drawable-mdpi-v4/notification_bg_normal_pressed.9.png SHA1-Digest: qf8Bo3OrZFOkS8OQT2FTwy3VSA8= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_FK SHA1-Digest: kPwrJTcCgRX2wiiSa1eMea5NqfU= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CR SHA1-Digest: E6naAFEOjj3CJ0mUPOORugQKdEE= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CK SHA1-Digest: kml4SOYEOAu5sGR/zUjd4506DRU= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CL SHA1-Digest: PrfrQy19TdrSjMCdtHrMrnnqIkE= Name: res/drawable-xhdpi-v4/ic_scroll_down.png SHA1-Digest: A7EKRwW4d9qW2hy1StqMBeGfI1o= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CM SHA1-Digest: SYiWMVM/V/2IqYg4VHau55jSiKY= Name: res/drawable-mdpi-v4/abc_textfield_activated_mtrl_alpha.9.png SHA1-Digest: tB4B5H9j3pm0Xv62OAovdHEjuyk= Name: res/drawable-xhdpi-v4/sms_selection_icon.png SHA1-Digest: mflBGnUVt525AuRZMG09j3NFODU= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CN SHA1-Digest: dUqHuHf7Stpvt0QwpmZZHFfItbQ= Name: res/drawable-xhdpi-v4/abc_text_select_handle_middle_mtrl_light.p ng SHA1-Digest: NlZeJG8MEHDXkZ6eZeHaVGnlZgM= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GB SHA1-Digest: 01uILLexEy+Gaa/6Y7/TvemCQYk= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BW SHA1-Digest: qRQhEn6cDXt6ZKKeAE+PSQ0iycY= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GA SHA1-Digest: pF1ZsVYuRJaVCRphgj5zuakMsmc= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GD SHA1-Digest: z1A8dkpowjnXpMPRo+nFYkSvI5o= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BY SHA1-Digest: tCUlGhnAdGtfCKcEek88l4ALykc= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BS SHA1-Digest: alk0pqMXOSElqgzMBX6KozHs9ug= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BR SHA1-Digest: bXw6aWE+YUGZ0hRkJClTnAHc9zA= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BT SHA1-Digest: 5SiZZK5G4Udghm6H1TPDNpZuM3I= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CA SHA1-Digest: Mw2o53PEmgbpglkqA2jeQ1IJgD4= Name: res/layout/empty_time_zone_item.xml SHA1-Digest: vLxkGUyywCgJGUGr1vsb7WZ2Aok= Name: res/drawable-xxxhdpi-v4/abc_ic_star_half_black_48dp.png SHA1-Digest: fkHHafZ6woOU+hakgiXNdjO+G0o= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BZ SHA1-Digest: d4VPpUrss071FdbKN8VMevGXHlc= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_DJ SHA1-Digest: HQaHW8xAy3Yz5KdkqPT3E8puENM= Name: res/layout/country_selection.xml SHA1-Digest: 6NViX+HrI12AtP7KbHukzq6VRpg= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_ER SHA1-Digest: VIWqyXMJmfGmvosi7uf7KXdwxzI= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_DK SHA1-Digest: Rk/OAXR56qkx3Oo99XESs+OZgEc= Name: res/layout/dots_text_view.xml SHA1-Digest: EeO1nY+bgs6bEIMj/kAY4xDXtDw= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_DE SHA1-Digest: j6+PtQ5zJKxMUthOQpoU+Sme8RM= Name: res/drawable-xhdpi-v4/ic_emoji_emoticons_normal_dark.png SHA1-Digest: p8X6C3UakOOV6tRV4BeH3I8fTJU= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_EG SHA1-Digest: 9wfl0cn7ADAM7/+q7qEKB4aKgQo= Name: res/drawable-hdpi-v11/icon_notification.png SHA1-Digest: SajadWsZ3+kF/B+gC7uyQs3CDCY= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_EH SHA1-Digest: NN/M4oAPzH1Eoi772T19aLeju1w= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_EE SHA1-Digest: HBnXt+iOw3G7kWFH7VsdWKmxJeA= Name: res/drawable-sw600dp-mdpi-v13/ic_backspace_normal_light.png SHA1-Digest: NuCSY57nwySQHF+2nuwidTcr6es= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_DO SHA1-Digest: 6k22UAvU8Oifxa5XVpXuoHtfSpo= Name: res/drawable-hdpi-v4/design_ic_visibility_off.png SHA1-Digest: 2dNj0DH+9oQlB4Is6vasMfxrlX0= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_EC SHA1-Digest: lU1nyNP5Uj4EF5Q2612APDHmyvI= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_DM SHA1-Digest: YhNRdUggTfghgpC35N3JAdXZA74= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CZ SHA1-Digest: VzVyxxyxyajXeORu8EcbWxk0Is0= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CY SHA1-Digest: qLUXYlJr/JYteTiM+4ackZ7ZiJQ= Name: res/drawable-mdpi-v4/ic_image_light.png SHA1-Digest: Djq+m9hk4G8p+kkpCMVp5JgqZOM= Name: res/drawable-mdpi-v4/received_bubble.9.png SHA1-Digest: Cw0YMXapgMp4/S7dKrcGoiAWX0Y= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CX SHA1-Digest: xPBJVrVPnZQVYrXTN1rqgKgbbEg= Name: res/layout/contact_selection_list_fragment.xml SHA1-Digest: 8uVIsygAzY+W00tDeJWb0+wgDL8= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CW SHA1-Digest: FzxQ6xJevFno4kgE8JMBn7vm1Qw= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CV SHA1-Digest: NVw0RDzSeot3HPLCd21YtZzNUl4= Name: res/layout-v11/notification_template_big_media_narrow.xml SHA1-Digest: L9uWxQbKZI+Le8fiaRB0zf5WQk4= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CU SHA1-Digest: fljaoiFDM4IT97593aTBjM7mDrk= Name: assets/fonts/Roboto-Bold.ttf SHA1-Digest: 0xOrLEV1a/TpcmR/WyrWka0lCZA= Name: res/drawable/circle_touch_highlight_background.xml SHA1-Digest: +vrejfE86g5jlzpEsT1T1kPkZkw= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_ET SHA1-Digest: UkNUR8e+38ufqUhzALmePKnQEDo= Name: res/drawable-xhdpi-v4/abc_list_divider_mtrl_alpha.9.png SHA1-Digest: B+V5QEOwy10ghi7uX5XLTPFJGJs= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_ES SHA1-Digest: 29SChkSFfizs4lfPUzwmkhfYdzY= Name: res/drawable-mdpi-v4/ic_mood_white_24dp.png SHA1-Digest: vLMgOnfhzvg7N4kjbk1q6mBhHgA= Name: res/drawable-xhdpi-v4/lockscreen_watermark_dark.png SHA1-Digest: hlEs6EtN2kUs2+CrmYa3eux6s+o= Name: res/drawable-mdpi-v4/lockscreen_watermark_dark.png SHA1-Digest: seLgq7oT0J1fGJEos/BvHUn9HxM= Name: res/drawable-hdpi-v4/abc_text_select_handle_middle_mtrl_dark.png SHA1-Digest: jF6QKRBg9OvlnbeWqmX8Uqm8bg8= Name: res/drawable-xhdpi-v4/abc_tab_indicator_mtrl_alpha.9.png SHA1-Digest: BmwsKC3uNvwcF8agRRgehS1CAm0= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_DZ SHA1-Digest: RQ4S6uQab867FlpDbYYHHaVL8Hg= Name: res/drawable-hdpi-v4/ic_volume_off_white_18dp.png SHA1-Digest: WAcrLSLpafxsPS7hsU4ikDLzBjE= Name: res/layout/receive_key_dialog.xml SHA1-Digest: uwKqhimJhXsLyVM92wFetrBMLrY= Name: res/drawable-xhdpi-v4/ic_emoji_flags_normal_light.png SHA1-Digest: lzTZ5KC+L1NXjN1Lc0RUX4B+kwY= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_DE SHA1-Digest: kiLeXJRUmuwK6YSEE0un/LBWX7A= Name: res/drawable-xhdpi-v4/check_dark.png SHA1-Digest: n7vjve9oV1IazDBlspyC8ygB7iM= Name: META-INF/services/com.fasterxml.jackson.core.JsonFactory SHA1-Digest: wj+dD6oGz5YGyIP+iorCZD19Vfo= Name: res/drawable-xxhdpi-v4/divet_lower_right_light.png SHA1-Digest: LQGnGyzsEsPzMVo5RVG7YT87vHw= Name: res/drawable-sw600dp-mdpi-v13/ic_backspace_disabled_light.png SHA1-Digest: bBJa6fMJoP87GQtakbAV7tKOdHw= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_DM SHA1-Digest: mwxgTyd8lkaOHm+Sp8pledOgHOU= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_DK SHA1-Digest: /uFoov4ZE72YEZLQro51JnA0qbA= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_DJ SHA1-Digest: ljFANfE5k4ywKWuG79RPOG5xZ1k= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_DO SHA1-Digest: U7K6ebEteyqcWp8rMHKpW+I0dPE= Name: res/drawable-hdpi-v4/lockscreen_watermark_dark.png SHA1-Digest: SNi3m+8aly9MoEzOODURLRT2dgc= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CR SHA1-Digest: /NGBGdHGjZxtQu9seYZopanOPEA= Name: res/layout/abc_screen_simple_overlay_action_mode.xml SHA1-Digest: shGoP8DkqV4/9zkW62jOT5c6dTM= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CU SHA1-Digest: TxifspcBKsFrXrc+wHicK4kkThg= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CV SHA1-Digest: qCfYcVgc1m0ocymyHWZCLOEMzGQ= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CW SHA1-Digest: ZXABFAd5qBbiQwpaxIRm7bM8C3w= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CX SHA1-Digest: tPwjD6BrsXTydYgTEATcxqoFxUo= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CY SHA1-Digest: w2bFmG/+0dEQjd6NOg7ZLIBNFxM= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CZ SHA1-Digest: s4yNVj4uxeIYy2HQ1PZst2Wyd98= Name: res/drawable-xxhdpi-v4/ic_arrow_forward_light.png SHA1-Digest: fxLwDF0XgRhh/Z+wIHNmXH2vD/0= Name: res/drawable-xhdpi-v4/ic_launch_white_24dp.png SHA1-Digest: PkKEB5cW/mCfSfqauFHcBYJzYYM= Name: res/layout-v17/select_dialog_multichoice_material.xml SHA1-Digest: kF3z9YIp7bF/zoaUwjPCniSOWSA= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CA SHA1-Digest: zLYC+3BHOlbcYHli1mCAZ0LxLWA= Name: res/menu/text_secure_normal.xml SHA1-Digest: advohO24vwcGKxIYhZNY0WNEeZs= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CD SHA1-Digest: KKWkBf+gjho9c01K+7L91O1+t5A= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CC SHA1-Digest: /uTE5ZftKbNfc1KVOBY0BwZYiJE= Name: res/drawable-mdpi-v4/ic_push_black.png SHA1-Digest: Pm4g2wut9XC0rdU2C6SgiGBABg0= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CF SHA1-Digest: Atbkx3E2oA0sNPjKVvINB+dI4Bg= Name: res/drawable-xhdpi-v4/ic_push_black.png SHA1-Digest: crIGub6enfp19Wgv9TGPYS5p5qY= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CH SHA1-Digest: 6WvaeaOO/6Fz0lOhysacb1sovkw= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CG SHA1-Digest: 5Xmxv1AP9rY/jQgxEiQOK0rq8FA= Name: res/drawable-mdpi-v4/abc_ic_star_black_36dp.png SHA1-Digest: 0pZEH/xvvGcZULZXlcabKxti6Jk= Name: res/drawable-xhdpi-v4/ic_circle_fill_white_48dp.png SHA1-Digest: QVa6X8BQerJNmVgAVUtU/q5+yn0= Name: res/drawable-hdpi-v4/abc_ic_menu_share_mtrl_alpha.png SHA1-Digest: UQXINsxHR6ofvfukurZilM7cjk4= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CI SHA1-Digest: AvLDYaPuWJ/OdFPGj4ifg0S62tc= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CL SHA1-Digest: PxCy8tkmCP+qUB3r64VC8XRuwmo= Name: res/layout/delivery_status_view.xml SHA1-Digest: 7cbIP14SfIIw/AtYMsJAE991Clc= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CK SHA1-Digest: swr8X/ZjBpnUT6YeeUfyJxwM/cw= Name: res/layout/abc_list_menu_item_checkbox.xml SHA1-Digest: +jlKh058XvxdeJU7n5iJbTnWP38= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CN SHA1-Digest: jkqCARargiYpwr+wnSeQYA/kJhc= Name: res/drawable-xxxhdpi-v11/icon_notification.png SHA1-Digest: 1WKv+qoQAxKms56xhFqO8n3qtFg= Name: res/drawable-xxhdpi-v4/ic_lock_black_18dp.png SHA1-Digest: Nl6iL64BmDwCojnllz8S8eq2jCk= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CM SHA1-Digest: HwDCRGSDT0iwMJ3s3dhMUDWsmbg= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CO SHA1-Digest: 4BH0lAASQMIyDN9Y4flioJbgT/Q= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BW SHA1-Digest: Hh3GuKKtwYd3UAE020lxf1UPuVM= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BT SHA1-Digest: xcgyGPnRb9VHBUeqqRbmsWKUGZY= Name: res/drawable-xxhdpi-v4/ic_emoji_symbols_activated_dark.png SHA1-Digest: hbZuiQ+6Kocq9GPlllglTKfYAQQ= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BR SHA1-Digest: x1ZQeXUed4nFpfeA5rAI8lnTIM0= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BS SHA1-Digest: TKVmimdFLDNg0z7cGRsPzXosqQk= Name: res/drawable-hdpi-v4/ic_unarchive_white_24dp.png SHA1-Digest: j3jd65D0sfk5JumlC9jjVSsyKRM= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BQ SHA1-Digest: PbKm2fiCJXlM2zhXzqALZTQzGjg= Name: res/drawable-ldrtl-mdpi-v17/abc_ic_menu_cut_mtrl_alpha.png SHA1-Digest: pSQWRqoWzxoeprY+bJcbqPYnS9w= Name: res/drawable-xhdpi-v4/ic_clear_search_holo_light.png SHA1-Digest: BQPFl6R0RkVo6zdHy6+CXEMYtwE= Name: resources.arsc SHA1-Digest: pT9SkqoTAVvawSq1GIG8JMi0pkY= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BZ SHA1-Digest: cxxhlPF+Qbo7TkgA5ihmKbzb36E= Name: res/drawable-xxhdpi-v4/textfield_disabled_focused_holo_light.9.p ng SHA1-Digest: EVVtSa4tBxIM4sQfg3efMbAd73k= Name: res/drawable-hdpi-v4/ic_forward_white_24dp.png SHA1-Digest: kw1ov76kMdT3DfN8aOM1S1y2/ME= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BY SHA1-Digest: 2Zx1n42omGg0DHFYInqMnrIeeg0= Name: res/drawable-mdpi-v4/ic_lock_black_18dp.png SHA1-Digest: y1vas11JhCozCPoOdEJ4aufqvWk= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BG SHA1-Digest: 9re8XGKo/xLo//bh/z0hR8Uc+EQ= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BF SHA1-Digest: 0tY+clINA//YDU7K+kyxypU3OCE= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BE SHA1-Digest: HZZssjC7WANQ41IICioDPlejzwY= Name: res/drawable-mdpi-v4/check_dark.png SHA1-Digest: Zw41IEwzlRetwcNgeIOdfgNOSXY= Name: res/drawable-xhdpi-v4/list_selector_disabled_holo_light.9.png SHA1-Digest: bwjSzuahpvwVgJavscLUKen/ZqQ= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BD SHA1-Digest: tQ36Ki94Y5VjpX97EPgpzMcnCcg= Name: res/drawable-v12/recycler_view_fast_scroller_bubble.xml SHA1-Digest: fK9A5ABKj0zZace6jtRt8OOyBgI= Name: res/drawable-xxhdpi-v4/abc_ic_menu_share_mtrl_alpha.png SHA1-Digest: NhH/qNsjwbuGc/0xqPrgqFgo+9o= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BB SHA1-Digest: 8J7iBIplhPymg/EEzZJsAMvxSs4= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BA SHA1-Digest: L26Dxo+sreGbLNYDAUPk5+NPndg= Name: res/drawable-xhdpi-v4/ic_emoji_symbols_activated_light.png SHA1-Digest: hylX4cGP5tPnLt+gZNcabzY3SSc= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BO SHA1-Digest: 37mZ/Ac9FX1C2SItQm2x6JSkS3I= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BN SHA1-Digest: 3R/iFskKZ64flZb/KwUk33Rn810= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BM SHA1-Digest: apnXGC3aexiNrwCnA0Ep6puLzAk= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BL SHA1-Digest: HZWSbZ3UZ8s4l/FhQoR0nBW7OZQ= Name: res/drawable-mdpi-v4/ic_mood_grey600_24dp.png SHA1-Digest: YS3kKD7HHsRIdfK2f2H5+xYFSYM= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BJ SHA1-Digest: mW17F/U+xGNDE2Zqf+JDK0jo+Uw= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BI SHA1-Digest: gC/DRFRyGCmSbHNi+4vswLWpctI= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BH SHA1-Digest: 1JLqksp2mVHCZp5f3XP0nnIDc8g= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AS SHA1-Digest: rYQYJGXNQZoNMNGGqjRyrZ78VCg= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AT SHA1-Digest: Wyt1xF8GNJ6TagUIQUZvz/2YmZg= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AU SHA1-Digest: F5nDGT6P8crg0XaezCJkjCycul8= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AO SHA1-Digest: P+IbplkkA6LtKiWPQ3g3AP6Hmh0= Name: res/drawable-xxhdpi-v4/ic_photo_camera_dark.png SHA1-Digest: NDhUEnY/9tmdHmX/b6M64HpS9yw= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AR SHA1-Digest: h9cD1dyR0cLOqU13gHWoxESdWPo= Name: res/layout-v17/timezonepickerview.xml SHA1-Digest: K/JpIQe/v0bxlrvy7hhOZj11kFg= Name: res/drawable-hdpi-v4/ic_scroll_down.png SHA1-Digest: XytlHbsWw8c8kdsw8h6y7sjJKq4= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AW SHA1-Digest: CTrn031inOFtaLnJCGhlvWfPKGg= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AX SHA1-Digest: dMS2y3fU2kSnwSTeiJZ0Mpkt+3c= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AZ SHA1-Digest: +t1VkIworcQ38T1C0vEEJA7HKac= Name: res/layout-v16/conversation_item_pending.xml SHA1-Digest: Vq2adS4zm1jVXVo88/+N+RDkNA0= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AD SHA1-Digest: bb+pNMaDG7pdq/Cq2Su/Q52u2r0= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AC SHA1-Digest: TJ35D8LXerx6x5iU2mdwSKzZxpk= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AF SHA1-Digest: WCNTNjVsBqg57SCzkaLKHkmDiLU= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AE SHA1-Digest: fFAv4HaRBjsYiyiqOi2YvPpOMsE= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AL SHA1-Digest: XJrLVXd4bo6FfmZ06m7R8JDygcQ= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AM SHA1-Digest: fZk1LKUL1HQqcqhvd0TOEYa/4DY= Name: res/drawable-mdpi-v4/ic_block_grey600_18dp.png SHA1-Digest: KUJOjPxGDJUuR310dKFutbu9OrU= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AG SHA1-Digest: d2WD7VWMRhFbynO6CH861qiLo0s= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AI SHA1-Digest: 6l9Z9Fbvz1yTIdltnNSGVoSnsd8= Name: res/drawable-hdpi-v4/ic_clear_white_24dp.png SHA1-Digest: KGvzH9tAy4Rp8fXE4ss/IlIj060= Name: res/drawable-xhdpi-v4/ic_account_box_dark.png SHA1-Digest: S01JIJuWASlAuq+cfTEotALXCFc= Name: res/drawable-xxhdpi-v4/ic_download_circle_fill_white_48dp.png SHA1-Digest: +G6fimlMFg2qKV2XZkNN6qxDw/8= Name: res/drawable-ldrtl-mdpi-v4/ic_send_white_24dp.png SHA1-Digest: VbFcDTzqSyDKzi2rqRZMy19N5Hs= Name: res/drawable-mdpi-v4/ic_lock_dark.png SHA1-Digest: TgRcFRX+X3s89plB3KsZ9DYCZtw= Name: res/drawable/abc_seekbar_track_material.xml SHA1-Digest: 17M1OyJgbSyvZxbg3tUg5REGwOg= Name: res/drawable-mdpi-v4/ic_call_split_white_24dp.png SHA1-Digest: f5THhmczC1U2x8JMNIv2h8Q1nJw= Name: res/drawable-mdpi-v4/ic_emoji_places_activated_light.png SHA1-Digest: 6K+yjAZ+f9Rv4akI86+ahnCL/GQ= Name: res/layout/abc_list_menu_item_radio.xml SHA1-Digest: agsopWn5fspPqFiahI2wYYvv2Ig= Name: res/drawable-mdpi-v4/ic_emoji_places_activated_dark.png SHA1-Digest: XpeaT819whOm5PfS0d9GWivG2j4= Name: res/drawable-xhdpi-v4/ic_call_split_white_24dp.png SHA1-Digest: 1uIDxVlM+3QUDQXoBZzGTRrNcZ4= Name: res/drawable-mdpi-v4/abc_ic_menu_share_mtrl_alpha.png SHA1-Digest: uftsHSNmkb7m90jrsRX95EC5rJ4= Name: res/drawable-xhdpi-v4/ic_emoji_people_normal_dark.png SHA1-Digest: DRrX67cohdfiuTn7OIr9CgL8kDQ= Name: res/layout-sw600dp-v13/three_keys_view.xml SHA1-Digest: 1iK1XU6Ybu1I6Z7cXWDONXCmx3k= Name: res/drawable/abc_list_selector_holo_light.xml SHA1-Digest: y4DqLE9ZMUXA7mpN9gzH7cgYblE= Name: res/drawable-xxhdpi-v4/lockscreen_watermark_light.png SHA1-Digest: AYNtsBVsxmSt1MgC8RP6Pd1pBao= Name: res/drawable-hdpi-v4/ic_account_box_dark.png SHA1-Digest: hzHnNF7Nc3hzYAfZjgmaAT4n2Ww= Name: res/drawable-mdpi-v4/ic_file_download_white_36dp.png SHA1-Digest: hbgdgZY1/fI/fqOaKxitnFIcI2g= Name: res/drawable-xxhdpi-v4/ic_push_registration_reminder.png SHA1-Digest: upW0gkPgqGNrSfE71EPR4GfdV+E= Name: res/drawable-mdpi-v4/ic_menu_add_field_holo_light.png SHA1-Digest: Rs64wpgQPbMuMj5rXn1+oBa5qak= Name: res/layout-v17/custom_default_preference_dialog.xml SHA1-Digest: HUQHHYyxai0hDOmCZJWChGinyio= Name: res/layout/contact_selection_list_item.xml SHA1-Digest: sdeMBniS9IJ6AYVkHqBh7NcRPeI= Name: res/drawable-xhdpi-v4/ic_send_secure_white_24dp.png SHA1-Digest: 9DyQOaZ+JzrS3IXK1M/Cy9q6Evc= Name: res/drawable-xhdpi-v4/abc_list_selector_disabled_holo_dark.9.png SHA1-Digest: e6ZxO30OB+oHpoct3gGLBY0gYXA= Name: res/layout/three_keys_view_right_drawable.xml SHA1-Digest: 6njEKgbsmM3f0ShnujnHeW1d8UM= Name: res/drawable-xxhdpi-v4/textfield_default_holo_light.9.png SHA1-Digest: HnMo01YraOS60C6Mfei/HvkA/0E= Name: res/drawable/abc_btn_borderless_material.xml SHA1-Digest: rPL1lJzRovUC1nEamnoL6zg2+0U= Name: res/menu/conversation_popup.xml SHA1-Digest: jik07pVp4j6AEoIlH7yAt8toeqw= Name: res/drawable-xxhdpi-v4/abc_textfield_search_default_mtrl_alpha.9 .png SHA1-Digest: bHADGZ86aGisr0oBfZBoU7RHX/g= Name: res/drawable/abc_text_cursor_material.xml SHA1-Digest: e08kbab0hCmZ+bodjZ7WbbBG5g4= Name: res/drawable-hdpi-v4/abc_ic_star_black_36dp.png SHA1-Digest: vgGy8pBTjoL/yJmNDQQ42DiT8vg= Name: res/drawable-mdpi-v4/abc_popup_background_mtrl_mult.9.png SHA1-Digest: JKV8P+rg3eY4lfp/aRgwOCFBeL0= Name: res/drawable-xxxhdpi-v4/ic_volume_off_white_18dp.png SHA1-Digest: rAVDor9ql64gPZTz5+KoAkLTTiI= Name: res/drawable-xxhdpi-v4/ic_check_white_24dp.png SHA1-Digest: bDxdJbCXinpkzSOdCIJZpcY6Gcw= Name: res/drawable-hdpi-v4/ic_message_gray.png SHA1-Digest: BgellHtjVGHZg5WpI2gtorVn58s= Name: res/drawable-xxhdpi-v4/ic_content_copy_white_24dp.png SHA1-Digest: LNLXvmySKOfF2Lp1gubWDFlQbbs= Name: res/drawable-xxhdpi-v4/ic_recurrence_bubble_outline.png SHA1-Digest: xKHPSlWlpwl+eiFK9hr4FePpdn4= Name: res/drawable-xxhdpi-v4/splash_padlock.png SHA1-Digest: wByXqz9iEvHVgT6+YuyhHFRRWKA= Name: res/drawable-mdpi-v4/ic_group_photo.png SHA1-Digest: LnMrIN2HmBbAm29e9YOIOUlNAas= Name: res/drawable/conversation_list_item_read_background_dark.xml SHA1-Digest: VUasHJ1+/2ThzfBvQafFpoof3b0= Name: res/drawable-xhdpi-v4/abc_list_focused_holo.9.png SHA1-Digest: Kw0Qo9eKlw06/oxLHYSWR6VftBw= Name: res/drawable/recycler_view_fast_scroller_bubble.xml SHA1-Digest: wRRdXv08lnaiKNy7Vz1zDb1gdTs= Name: res/drawable-hdpi-v4/ic_emoji_objects_activated_light.png SHA1-Digest: /oLV9rB2nqhghgvHi09BIJEmEIY= Name: res/drawable-xxxhdpi-v4/ic_menu_lock_dark.png SHA1-Digest: yRZ1+4GpqVyXrqr3eMDXxmWCMgM= Name: res/drawable-hdpi-v4/ic_emoji_symbols_activated_light.png SHA1-Digest: ZikdFDG3isXn+9er/CFwE2KVkn8= Name: res/drawable-mdpi-v4/abc_list_pressed_holo_dark.9.png SHA1-Digest: MoCLKmenbTlsz905dAkmwWiKKG0= Name: res/layout/design_layout_snackbar_include.xml SHA1-Digest: 09E6R0HuXwitMIFjvlCM+pXlOyw= Name: res/layout/contact_selection_list_header.xml SHA1-Digest: bl+2m53uDPHKWPgEkbbRgrufOc4= Name: res/layout/preference_list_fragment.xml SHA1-Digest: GXlLAti1Bhp0ihLEnJZS6HFFIjs= fdroidserver-1.0.9/tests/metadata/org.smssecure.smssecure/signatures/135/28969C09.RSA0000664000175000017500000000245613243530567027715 0ustar hanshans000000000000000* *H 01 0 +0  *H c0_0G?w~0  *H  0`1 0 UUK1 0 UORG1 0 UORG10U  fdroid.org10 U FDroid10 UFDroid0 150403094515Z 420819094515Z0`1 0 UUK1 0 UORG1 0 UORG10U  fdroid.org10 U FDroid10 UFDroid0"0  *H 0 Q_aI.r4Px@ K{F}!aPB({d9(AN>(ue>kkIXxꃑ¨ CN@jz`jU ZpJpFk"{mZ Ab&nk2ok ^<@SL7u%v2 [ސ"X\40  *H  Y N~lP V'3hC-v=rǞ`%9'>xڢ<(͐K63y\'^HݴbY+kFe+!)7 HM.6]] viҀQM+GQJexHJt<1zWYyO}QϾ̢{: 6~pkw\\_K'lʸ>7-p^#%g(CiM3fAŧVcIVvxܺ؎m~SM Ų100h0`1 0 UUK1 0 UORG1 0 UORG10U  fdroid.org10 U FDroid10 UFDroid?w~0 +0  *H N øQ36g=<6"he#YJ}V. @1WDC ɶR5A-D#QZ^cג8"3J?:BKŁ ⽴`Rd8[ MN%k.]Tz>yD J*OR4Y:^Z~cl/ 5}>9|ђBcJ(4A?KDz+y_(Zfdroidserver-1.0.9/tests/metadata/org.smssecure.smssecure/signatures/135/28969C09.SF0000664000175000017500000070551013243530567027601 0ustar hanshans00000000000000Signature-Version: 1.0 SHA1-Digest-Manifest-Main-Attributes: rEl8fnPMQh1rq1BuTuB1Ry1XYRg= Created-By: 1.7.0_121 (Oracle Corporation) SHA1-Digest-Manifest: BBOlC1NFW1J6ufJv9Il0JboXzRc= Name: res/drawable-xhdpi-v4/abc_ic_star_half_black_48dp.png SHA1-Digest: EmJpVhbB6cz/PQADmxVzyVNMusw= Name: res/drawable/abc_btn_check_material.xml SHA1-Digest: YFDDnTUd6St4932sE/Xk6H0HMoc= Name: res/drawable-xhdpi-v4/ic_video_light.png SHA1-Digest: BGO/xCluvDTkwWDprkpQDgEc60E= Name: res/drawable-hdpi-v4/ic_lock_black_18dp.png SHA1-Digest: tsXHhh2ccnNTEGew41PTgDSThgo= Name: res/layout/design_navigation_item_separator.xml SHA1-Digest: Rop+L/oPNw275ck8glcXZA481BY= Name: res/drawable-hdpi-v4/abc_textfield_search_activated_mtrl_alpha.9 .png SHA1-Digest: 3TVJoKotGhu2qu7nxOP+9dmuUfQ= Name: res/drawable-xhdpi-v4/ic_advanced_gray.png SHA1-Digest: YLJ9SvpsZRDIbaydeSWXUX+Y3j4= Name: res/drawable-mdpi-v4/ic_notifications_black.png SHA1-Digest: WcvuIg056OtSX/LWMfMDbERHkks= Name: res/drawable-hdpi-v4/ic_audio_light.png SHA1-Digest: cZFumcd+UgZuJnK8UFfkM0ojUUQ= Name: res/drawable-xxxhdpi-v4/ic_textsms_grey_32dp.png SHA1-Digest: l/2TAEyiMaEqIsMf/UHBB98WuYg= Name: res/drawable-v21/abc_action_bar_item_background_material.xml SHA1-Digest: KV90fjq9oUm4oE6kD9IDK7IG1zg= Name: res/drawable-xxhdpi-v4/list_focused_holo.9.png SHA1-Digest: 2/qW1KJgIeUV4L7+Rd9kqNoxB2E= Name: res/drawable-hdpi-v4/ic_arrow_forward_dark.png SHA1-Digest: eqfqRWlSKpxiJF1tASHfrv2+W1s= Name: res/drawable-xxhdpi-v4/ic_arrow_forward_dark.png SHA1-Digest: 4Ppky2q92+b9PMoI1/MVOVpJKM0= Name: res/drawable-mdpi-v4/ic_attach_grey600_24dp.png SHA1-Digest: kWU9fVGPTBhcZ0y79ZcbrlX/lrs= Name: res/drawable-xxhdpi-v4/abc_ic_menu_selectall_mtrl_alpha.png SHA1-Digest: 3cGsKipfgybfWKKMdG932/zCITU= Name: res/menu/conversation_list_batch_unarchive.xml SHA1-Digest: 0s3RSDcaD1sgaGLGFQqDYueUiR8= Name: res/layout/share_list_item_view.xml SHA1-Digest: cwy28T30itaOeMaYIP3myLWkRKE= Name: META-INF/services/com.fasterxml.jackson.core.ObjectCodec SHA1-Digest: TUt3WJOdFSbY0ZddbRq3WmcKOBM= Name: res/drawable-xxhdpi-v4/ic_emoji_objects_activated_dark.png SHA1-Digest: Oel3aZlAYvXA7ntzP46gFjfRvYA= Name: res/drawable-xxxhdpi-v4/abc_ic_star_black_16dp.png SHA1-Digest: 9nUV5uGG9nx8q07XftbT3Na7NqM= Name: res/drawable-hdpi-v4/ic_block_grey600_18dp.png SHA1-Digest: sgiSdfDsqVZSYm42xezzjLluyGA= Name: res/drawable-hdpi-v4/ic_refresh_white_24dp.png SHA1-Digest: M/UZ7uCz9xZwERFtAq0Qj/eh38w= Name: res/drawable-mdpi-v4/ic_photo_library_white_24dp.png SHA1-Digest: E+IxUDHLaaCHl0VENbQA7TdPX0c= Name: res/drawable-xxhdpi-v4/ic_emoji_recents_normal_light.png SHA1-Digest: vqnDTAJRzaAKJdrODeHv5fee3nc= Name: res/drawable-mdpi-v4/ic_action_warning_red.png SHA1-Digest: imrAA59c4hj9zsWIT58CO7ERIJQ= Name: res/layout/conversation_item_sent_audio.xml SHA1-Digest: Kti5J9pFVRrQcrtt17na/DLsPo0= Name: res/drawable-xhdpi-v4/switch_thumb_activated_holo_light.9.png SHA1-Digest: 3Ss5k8ep2Mrg+rgvOa7GGRfjpF8= Name: res/drawable-mdpi-v4/ic_message_gray.png SHA1-Digest: hoiZW7MdOHC0Iby+Gd1rcKOLG0c= Name: res/drawable-mdpi-v4/ic_image_dark.png SHA1-Digest: G2gpXgHeSeHrZWnIAaxkcSiUu+Y= Name: res/color-v23/abc_color_highlight_material.xml SHA1-Digest: qY6zpcmSjeBP4i3CkOTY8zxtwB8= Name: res/drawable-xxhdpi-v4/abc_ic_menu_paste_mtrl_am_alpha.png SHA1-Digest: UscVpd7V3jMjLzVpfsG2IbdRqvY= Name: res/xml/preferences_advanced.xml SHA1-Digest: FC8tIXzwmm5OKrtgOX2dwn/qqnc= Name: res/drawable-ldrtl-hdpi-v4/ic_send_white_24dp.png SHA1-Digest: SWlD/H1XB3xcc5Y8usXOJnlLhwM= Name: res/drawable-xxhdpi-v4/ic_attach_grey600_24dp.png SHA1-Digest: huvdgLTmrMUD+DPHPMH/FBNmRFw= Name: res/layout-v17/conversation_list_item_view.xml SHA1-Digest: BJmBhKhNpJxHVSKViobHSvse4J4= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_995 SHA1-Digest: VQZUHqW605gJIqlz9jltq9FdR3o= Name: res/layout-v16/design_bottom_sheet_dialog.xml SHA1-Digest: 4e8NhkRAJcZiADs1jZKcnpw/Ucg= Name: res/drawable-v11/emoji_category_recent_light.xml SHA1-Digest: ey84TlREh39UDPRR+wfQ382pg2k= Name: res/drawable-xxhdpi-v4/ic_message_black.png SHA1-Digest: P4uJ9lf3VIwuGWrX4FNch+CFgjo= Name: res/drawable/notification_tile_bg.xml SHA1-Digest: 4xAQ7hEyW8eB4JxXX1UzIjFqcPY= Name: res/drawable-xxhdpi-v4/lockscreen_watermark_dark.png SHA1-Digest: yD27OTvbBk1jpS1o/+kZQko/Sug= Name: res/menu/conversation_secure_sms.xml SHA1-Digest: e4pbyINrig3CE7vbpn9e8WbN5gA= Name: res/drawable-xxhdpi-v4/abc_list_selector_disabled_holo_light.9.p ng SHA1-Digest: 4maqTaWq3BEXw6ShM7wJMon1kU8= Name: res/drawable-hdpi-v4/switch_thumb_holo_light_v2.9.png SHA1-Digest: dUoJcdYHBaB65zOYYoaEwJLGORI= Name: res/layout-v17/import_export_fragment.xml SHA1-Digest: VJ5WSeX+8T1nXMoe6GeyuVJEBaY= Name: res/layout/time_zone_item.xml SHA1-Digest: 6vPto9xswZvuZa3tTuCf0lqdRnA= Name: res/layout-v17/abc_alert_dialog_title_material.xml SHA1-Digest: NKD1P7TOYluzzXBm47dQperSbo8= Name: res/drawable-xhdpi-v4/textfield_default_holo_light.9.png SHA1-Digest: tlklNYajvvNexKXzCLXina5RJ4w= Name: res/anim/design_bottom_sheet_slide_in.xml SHA1-Digest: H3e/zshhR8lSEOvNJ1F7meqRXT0= Name: res/drawable-mdpi-v4/import_database.png SHA1-Digest: 3haEEMPstl/DDC+BlD5TuI2h15w= Name: res/drawable-xhdpi-v4/ic_image_dark.png SHA1-Digest: 34kW/vCnV6Y0mDgbvz440s781Jg= Name: res/layout-v13/conversation_item_last_seen.xml SHA1-Digest: LKCgoKkL2vB1Xwn2MzNS2iilUxw= Name: res/drawable-xxhdpi-v4/ic_emoji_people_normal_light.png SHA1-Digest: 2rpfD+NY4xRIiknmrubWGmcND7M= Name: res/drawable/play_icon.xml SHA1-Digest: y0KZBhP64W+5E+b01cawPIx1Z3s= Name: res/animator/scale_with_alpha.xml SHA1-Digest: dkkt5ydwuaxd0Vix8/d+HhT1TAA= Name: res/drawable-mdpi-v4/abc_btn_check_to_on_mtrl_000.png SHA1-Digest: EJcEC6U7l1ByKjRFT4I+NP5SA+w= Name: res/drawable-hdpi-v4/ic_emoji_nature_activated_dark.png SHA1-Digest: ozyVwJeR5Vvc6N0nstBfvDxkt6U= Name: res/drawable-v11/abc_textfield_search_material.xml SHA1-Digest: khlWpwwJ/BpuCBb0uDcegE9Qi7A= Name: res/drawable-xxhdpi-v4/abc_switch_track_mtrl_alpha.9.png SHA1-Digest: 0/qHVKsPWinDgoCSCJ2tYnOQHDk= Name: res/drawable/done_background_color.xml SHA1-Digest: YhJEMqwhzaLqXsNhftrT8BJGpFc= Name: res/layout/conversation_item_update.xml SHA1-Digest: zTAp/M2/nwDDANB7UAsuq/K4eyU= Name: res/drawable-hdpi-v4/ic_clear_search_holo_light.png SHA1-Digest: bMAmi23A7C/2T81UWdUJrPAiGgA= Name: res/layout-v16/radial_time_header_label.xml SHA1-Digest: 5+8D6aI/+s8WRtg0oJVSv2oRQVQ= Name: res/drawable/emoji_category_emoticons_light.xml SHA1-Digest: MULA/KyofssSNnEJtJw9ja4MtBU= Name: res/anim/abc_slide_in_top.xml SHA1-Digest: ps83fDCN37hSi5vdARGgPEjdET8= Name: res/drawable-xhdpi-v4/ic_menu_search_holo_light.png SHA1-Digest: aJk1cIss5mXDeXsVR3MB/OZxxFQ= Name: res/drawable-xhdpi-v11/icon_notification.png SHA1-Digest: cLSQZK5yIZN+Q1i/Dvf7T142nBo= Name: res/drawable-xxhdpi-v4/ic_emoji_flags_activated_dark.png SHA1-Digest: DFPRNsIBHb5NdyahxEP22SzqQKQ= Name: res/drawable-xxhdpi-v4/ic_save_white_24dp.png SHA1-Digest: P7ESxivMW9iNSV3BsUYdz/w2D6s= Name: res/anim/animation_toggle_in.xml SHA1-Digest: dRaYBsOfLqP23qwFMXALeJ6iGYM= Name: res/drawable-xhdpi-v4/ic_emoji_objects_activated_dark.png SHA1-Digest: 8PK4PuyIjB/HTzBTXvk7nVFyDuQ= Name: res/drawable-v11/emoji_category_people_dark.xml SHA1-Digest: 95RO/j45d+Krtv4b3RQeH/mAE1U= Name: res/drawable/edit_text_holo_light.xml SHA1-Digest: C4sB8NwynUqgyunbb7TzvQIqVe8= Name: res/color/abc_tint_edittext.xml SHA1-Digest: NDf3mHgsT7bsGplB82V0W1fYqHE= Name: res/drawable-xxhdpi-v4/spinner_focused_holo_light.9.png SHA1-Digest: GoRgB1Li7RZqzAPwAgLgd0fqnmg= Name: res/drawable-mdpi-v4/ic_recurrence_bubble_outline_disabled.png SHA1-Digest: d61P7qoMGt67a4HhUdeQoBO3tFY= Name: res/drawable-xhdpi-v4/ic_check_white_24dp.png SHA1-Digest: 78JbZauasH21gF+Y0lsAHUlAZpg= Name: res/drawable-mdpi-v4/ic_emoji_flags_normal_light.png SHA1-Digest: Zz+YX+HHOmmtVOvPRXbJ2d4L+so= Name: res/xml-v12/badge_widget_provider.xml SHA1-Digest: 0lZ+wV/192wEtNjI4Kd4DNGr8aI= Name: res/drawable-xxhdpi-v4/quick_shutter_button.png SHA1-Digest: tM6vusyRri2ZxMKLxUn1jpr/h9k= Name: res/drawable-xhdpi-v4/spinner_default_holo_light.9.png SHA1-Digest: 8z6OMkzlDtz6BaebwU13NRMiwGc= Name: res/drawable-hdpi-v4/abc_ic_star_half_black_36dp.png SHA1-Digest: WYHzqaIFGhxi7pUghVL542WmTfs= Name: res/animator-v11/bottom_pause_to_play_animation.xml SHA1-Digest: KNPF3kfWr3xJ+UqIibDLQRBRPvE= Name: res/drawable-xxhdpi-v4/ic_content_copy_dark.png SHA1-Digest: 7+NUcLRqL1d+ls7fNAMW+Hps74M= Name: res/drawable-mdpi-v4/ic_arrow_forward_light.png SHA1-Digest: UU22Z20OF19oG73++TW4xNN+d6A= Name: res/layout/message_details_activity.xml SHA1-Digest: azLss1HqZc+OGoasvbh3/pmvfVU= Name: res/drawable/abc_ic_voice_search_api_material.xml SHA1-Digest: 5ugYXzpY74baRVq3UQ+hVyltOOw= Name: res/drawable-mdpi-v4/ic_create_white_24dp.png SHA1-Digest: EvglZuWn1kWrtP9Vu40ifhzH5eQ= Name: res/drawable-xhdpi-v4/ic_lock_black_18dp.png SHA1-Digest: BHfmCHr+L1mAJXAj3f/Pa35mojA= Name: res/drawable/key_background_dark.xml SHA1-Digest: 4dA80hRKa9MiaTulvKa2adsaUAs= Name: res/layout/design_text_input_password_icon.xml SHA1-Digest: jR+6eNBNR1vmNPQjDZjNzwnH7iU= Name: res/color-v23/abc_tint_default.xml SHA1-Digest: rc6jB/Oj1KFzKdG2xnI7wiNPkwI= Name: res/drawable/abc_btn_colored_material.xml SHA1-Digest: 5in2GRrYzWn1M5K8rINJqJPTOtg= Name: res/drawable-xhdpi-v4/ic_keyboard_white_24dp.png SHA1-Digest: 6rPDrkokO6ExvMFZkZ6dUVRihkk= Name: res/drawable-xhdpi-v4/ic_reply.png SHA1-Digest: EqxlL9HBYa08+CVzrwfmhkUaWUI= Name: res/drawable-mdpi-v4/ic_reply_white_36dp.png SHA1-Digest: WWRxqg1IHF+2cbj/RQ2Sl6lOvh4= Name: res/drawable-xxxhdpi-v4/ic_photo_camera_light.png SHA1-Digest: Dwiib5e97pV5agTjyPTNjyki93o= Name: res/drawable-xhdpi-v4/abc_ic_star_black_48dp.png SHA1-Digest: FtlphNkBunKHFyn4YCJf+uB9r5Y= Name: res/drawable-mdpi-v4/ic_movie_creation_light.png SHA1-Digest: eOHkrzkeRo6ziDmk1BAVpLSgwMo= Name: res/layout/hms_picker_dialog.xml SHA1-Digest: tAWByK5zJb4G91bvhGLA5uOPOs8= Name: res/drawable-xhdpi-v4/check.png SHA1-Digest: trr1Y1AvaQ40pvN9HENeXxTaUnc= Name: res/drawable-hdpi-v4/abc_cab_background_top_mtrl_alpha.9.png SHA1-Digest: bKDAz/GvMsK2qKIXXjfzdAwCtG4= Name: res/drawable-hdpi-v4/abc_ic_star_half_black_48dp.png SHA1-Digest: ITuAj9GLxIU8m+qyHDgR794ap3w= Name: res/drawable-mdpi-v4/ic_keyboard_grey600_24dp.png SHA1-Digest: zdlURX5i7BYZIXKORABBap/3RMA= Name: res/layout/keyboard.xml SHA1-Digest: TVzGEgiaoAB2JVPuFjgDcgIAbao= Name: res/drawable/key_background_light.xml SHA1-Digest: ioA3FeBjrk2CUgaieHM8D4jJXKQ= Name: res/drawable-hdpi-v4/check.png SHA1-Digest: b+8u2c2RSD3vaZMSx7nKC/DkXdw= Name: res/layout/message_details_header.xml SHA1-Digest: JW9IPIijzH9fD5fsgqGPA+UnVi0= Name: res/drawable/reminder_background.xml SHA1-Digest: U1dUNAaqsEAw8QxlFPBiuLa2ERU= Name: res/drawable-xxhdpi-v4/last_seen_background.9.png SHA1-Digest: o+wL4yJDNpiNHf5ZhMPaWIKOIEw= Name: res/drawable-xxhdpi-v4/abc_ic_star_black_48dp.png SHA1-Digest: 50lQ01X/2aI5rh53asY/AX4Fkhw= Name: res/drawable-xhdpi-v4/list_longpressed_holo_light.9.png SHA1-Digest: wjffxg4gtxSXtviI33Wu5A+pD0U= Name: res/drawable-hdpi-v4/ic_warning_light.png SHA1-Digest: QteIiirlmwEHFWKiSwLdtXWoTIA= Name: res/color-v23/abc_btn_colored_text_material.xml SHA1-Digest: QfOopQVyGBK5764AtyzCeSxgY30= Name: res/drawable-mdpi-v4/alert.png SHA1-Digest: y6zmCiTCuYWhldLerBNyvH+ECDs= Name: res/drawable-hdpi-v4/ic_badge_24dp.png SHA1-Digest: ZdBBadrqXr7xPO+TKG+AOzCF5Pg= Name: res/drawable/badge_drawable.xml SHA1-Digest: Xdl+2jhWvmt0+HuZDaWK9vBlmQ0= Name: res/drawable-xhdpi-v4/notification_bg_low_pressed.9.png SHA1-Digest: OOefFpggagskOSa29mfgruzOhPQ= Name: res/drawable-v21/avd_hide_password_3.xml SHA1-Digest: 7QAGh6qveXCv/E9W58DOloyvZkg= Name: res/drawable-xxhdpi-v4/ic_emoji_people_activated_light.png SHA1-Digest: 0KRXuSpv/e6708+wbgz9YCOY4k0= Name: res/layout-v11/notification_template_custom_big.xml SHA1-Digest: 1Qx442anRGyxW0wgyeJMt0vT/hk= Name: res/color-v23/abc_tint_switch_track.xml SHA1-Digest: HnhXpMCgkXuPJieDuAMwRhXU4II= Name: res/drawable-hdpi-v4/ic_play_circle_fill_white_48dp.png SHA1-Digest: qN3xIQ/mmkkkS+xAMiHrU4LIHC4= Name: res/layout-v16/selected_recipient_list_item.xml SHA1-Digest: AzEF8ESv6dxauh7AJe31k89QnVQ= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_506 SHA1-Digest: /BptlPYGlVrO6aOiRVQIw8Ezzhk= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_505 SHA1-Digest: GPF+v2ktP3tCtgbBVUwLwURztCE= Name: res/drawable-xxxhdpi-v4/abc_text_select_handle_left_mtrl_dark.pn g SHA1-Digest: 1Z/j1p/Oxn+dx4ArUNCWfP80d1M= Name: res/layout/selected_recipient_list_item.xml SHA1-Digest: ZwMoe3tueFRM1XJsSKuaiPw4MZI= Name: res/drawable-ldrtl-hdpi-v17/abc_spinner_mtrl_am_alpha.9.png SHA1-Digest: HFivDekYna/HGttXT/KmXBD3Fmk= Name: res/drawable-mdpi-v4/ic_video_dark.png SHA1-Digest: 0BQoC1g4XFBRM0TQ1l3SocRVjqQ= Name: res/layout/recycler_view_fast_scroller.xml SHA1-Digest: rrvwcHdb2KbpCtGjKolNk69QOOM= Name: res/drawable-xhdpi-v4/import_database.png SHA1-Digest: rDR3tnpd7erN4LOxG5WFjosNC4s= Name: res/drawable-xhdpi-v4/ic_archive_white_24dp.png SHA1-Digest: Gae7ytyNb0Xft8WyyIiqL1V9x38= Name: res/menu/group_create.xml SHA1-Digest: vMZZOchmeOZssDjuO6v+J7rzo0w= Name: res/drawable-xhdpi-v4/ic_emoji_places_activated_dark.png SHA1-Digest: a3uDG0MTGuXgvTnN6BUXwXZbLiY= Name: res/drawable-xhdpi-v4/ic_menu_remove_holo_light.png SHA1-Digest: BeNFT6m2uMhTvp5g9THjCC3H0o4= Name: res/layout/media_preview_activity.xml SHA1-Digest: k9t13Px9YTbsRvDBaV/rq2B9drw= Name: res/drawable-xxhdpi-v4/ic_emoji_recents_activated_light.png SHA1-Digest: 3XqZDNHd2rDv0WMBctcfIJcaQJ4= Name: res/color/abc_background_cache_hint_selector_material_light.xml SHA1-Digest: mnPrYggTiTtLeSJMGhhI7MazdiQ= Name: res/drawable-v11/emoji_category_objects_dark.xml SHA1-Digest: kP3MaxgIRF2Mf+XiNYIBvVsu8Yg= Name: assets/fonts/AndroidClockMono-Thin.ttf SHA1-Digest: zFQStQ34LrLFalq5xe3Uxd6yuVU= Name: res/anim/abc_shrink_fade_out_from_bottom.xml SHA1-Digest: bncgNmwtn5WUMmKg+YNicoakQlQ= Name: res/drawable/abc_seekbar_thumb_material.xml SHA1-Digest: 3gcgKKHkoQO20Qass3DY4tt02lc= Name: res/drawable-mdpi-v4/ic_audio_light.png SHA1-Digest: 5hLRbrHX51BWfRUHMdSUaHUM8dc= Name: res/drawable-sw600dp-mdpi-v13/ic_backspace_disabled_dark.png SHA1-Digest: so4LY3SJgjbol1mOpd4tofs9SG4= Name: res/drawable-xxhdpi-v4/ic_emoji_recents_activated_dark.png SHA1-Digest: S3D4QA/vjbvCM0ipLSV32x8pZMA= Name: res/drawable-xxhdpi-v4/ic_volume_off_grey600_18dp.png SHA1-Digest: xyShsMFVKL/taZguHjNYVafhUCA= Name: res/xml/preferences_manual_mms.xml SHA1-Digest: bihOojDIOySM3xIwH4cmp7iQwFI= Name: res/drawable-xxhdpi-v4/abc_list_pressed_holo_light.9.png SHA1-Digest: rDoVKQUYnqgVz5KStlGT59UHjW4= Name: res/drawable-xhdpi-v4/ic_delete_white_24dp.png SHA1-Digest: J8LvNs0MhIh3BoduSNyTYjx8LQk= Name: res/drawable/abc_cab_background_top_material.xml SHA1-Digest: Z+2EBs+zMxbPCCEkmiGm2pj627E= Name: res/drawable-xxxhdpi-v4/abc_btn_check_to_on_mtrl_015.png SHA1-Digest: Sd1OkxgWYvHeM4ODIZu3S1hWhJQ= Name: res/drawable-mdpi-v4/ic_attach_white_24dp.png SHA1-Digest: p9K8MPl4UVAiHO4BW2iW0u1lrJg= Name: res/drawable-xhdpi-v4/dialog_full_holo_dark.9.png SHA1-Digest: mgx4FmtAVykjmDt5bIzhpACjqt4= Name: res/drawable-hdpi-v4/ic_lock_white_24dp.png SHA1-Digest: cLkNiQWRwlh8UgGblzdxBspbVB4= Name: res/drawable-hdpi-v4/ic_volume_up_dark.png SHA1-Digest: j5+kaaW+uEa9OqNuM3XL+k6grLI= Name: res/drawable-xhdpi-v4/ic_message_gray.png SHA1-Digest: HlcSvHzI8JnPB5h4DUjQmwj+leQ= Name: res/layout/outgoing_sms_preference.xml SHA1-Digest: 3nd7EfpO4R6Dk74R9VjfestQ3RM= Name: res/layout/number_picker_view.xml SHA1-Digest: 3tuhjqFbmNtKOSuEhNpijVWCoz8= Name: res/drawable-xhdpi-v4/ic_lock_light.png SHA1-Digest: jkurql42fRwoUwJ9dQ4E1U1sqvc= Name: res/layout-v17/design_layout_snackbar_include.xml SHA1-Digest: J7eBMH/8NR1GSJHI2w1sf/rcKjo= Name: res/drawable-xxhdpi-v4/abc_menu_hardkey_panel_mtrl_mult.9.png SHA1-Digest: Jrc7Wnxi6R1ydjCdOBfCkiBqY5s= Name: res/color/switch_thumb_material_dark.xml SHA1-Digest: bpqZBZv76bgn7Mk1BtTThkcOx+E= Name: res/drawable-xxhdpi-v4/ic_visibility_off_white_24dp.png SHA1-Digest: +JlWwxq/HVPvQ6/dnBTL+tKVXO4= Name: res/drawable-mdpi-v4/ic_push_registration_reminder.png SHA1-Digest: Uisn5CHa/R/wnrVYWnBDuxeMjao= Name: res/drawable-mdpi-v4/dialog_full_holo_light.9.png SHA1-Digest: DeKy7GsN0S4R0sogsQeaHfjUcTA= Name: res/layout-sw600dp-v13/design_layout_snackbar.xml SHA1-Digest: pg2FV1KIEizDuQjBXGl2wPbkQA8= Name: res/drawable/actionbar_icon.xml SHA1-Digest: Zolvi6pYeS++UJxxiH9TjkqRRJs= Name: res/drawable-mdpi-v4/abc_scrubber_control_to_pressed_mtrl_000.pn g SHA1-Digest: hZVZo6Q2zbo8jok1iFFNncAE3yQ= Name: res/layout/abc_list_menu_item_layout.xml SHA1-Digest: sojzCe+xZ74CQbQlqlg6DAKLMkw= Name: res/drawable-mdpi-v4/ic_movie_creation_dark.png SHA1-Digest: pqnNLm2HbqECEQqV/CWKQELBIlY= Name: res/drawable-v21/abc_edit_text_material.xml SHA1-Digest: odhxqQ9YoX/pjZCSMFLixnq44m0= Name: res/drawable-mdpi-v9/icon_notification.png SHA1-Digest: gdz7Utm6zHfttFBV1/waHt+y/pg= Name: res/drawable-xxhdpi-v4/ic_refresh_white_24dp.png SHA1-Digest: azW0GPmTz46IuM2bCfyFef1OFnc= Name: res/drawable/progress_background.xml SHA1-Digest: vOhG7l3qzc7lUlqnjnghMamRR1I= Name: res/drawable-xxhdpi-v4/list_pressed_holo_light.9.png SHA1-Digest: 7Gks0mPw3HB/OmNgzPxInAEdGvw= Name: res/drawable-xhdpi-v4/abc_textfield_search_activated_mtrl_alpha. 9.png SHA1-Digest: XhJt+0uemfensB5jPL5pYEy1IQs= Name: res/drawable-mdpi-v4/textfield_disabled_focused_holo_light.9.png SHA1-Digest: zyu+XV9QUyEyfMxKPq2khDJwXU0= Name: res/drawable-xhdpi-v4/abc_cab_background_top_mtrl_alpha.9.png SHA1-Digest: j7oKd56yOLmG/qIDUU3a+2EFFV4= Name: res/anim/abc_slide_out_bottom.xml SHA1-Digest: QE0YUwjYdedmgPyovw3+5mmYlYE= Name: res/xml/preferences.xml SHA1-Digest: aT1SF6JAwkWWHutmFsRg+R6Zcbs= Name: res/drawable-mdpi-v4/spinner_disabled_holo_light.9.png SHA1-Digest: yVf+7rXpW8kOGpk0VoFsOF3qLus= Name: res/drawable/emoji_category_places_light.xml SHA1-Digest: jHPgby+3qY7Ujw9pfRzvrx1CdPc= Name: res/menu/conversation_group_options.xml SHA1-Digest: c29cQhgl/UN7yvyz4kPHAQRr2a8= Name: res/drawable-xxxhdpi-v4/abc_text_select_handle_right_mtrl_dark.p ng SHA1-Digest: bgS7Y9u7G+otDRLOCvvqXphgw98= Name: res/drawable-xhdpi-v4/ic_emoji_nature_normal_dark.png SHA1-Digest: W3vwBQWHXo5i1OZUZm/hX1lplJA= Name: res/drawable-ldrtl-xhdpi-v17/abc_ic_menu_cut_mtrl_alpha.png SHA1-Digest: 7EcOfBvuzL3CgvHqFSF/PzLjcQc= Name: res/drawable-xhdpi-v4/design_ic_visibility_off.png SHA1-Digest: BMTOD/vDIsCXobMddP47f9l0tkg= Name: res/menu/share.xml SHA1-Digest: xmMhiGZ5tC6kAUMIbJn3lqEShjI= Name: res/drawable-mdpi-v4/spinner_focused_holo_light.9.png SHA1-Digest: PkIQHK1gQev4CH5s1HE8eer4Q7A= Name: res/drawable-mdpi-v4/ic_unarchive_white_24dp.png SHA1-Digest: nEUZoefnyShaKejwZEZia9gphjw= Name: res/drawable-xhdpi-v4/ic_send_white_24dp.png SHA1-Digest: 1wW51ZVvnOTyWSWVFXLLo6dltK4= Name: res/drawable-mdpi-v4/abc_spinner_mtrl_am_alpha.9.png SHA1-Digest: oQXUTVCmKbEkuIGzA7hY1v2BYpE= Name: res/drawable-hdpi-v4/abc_ic_menu_paste_mtrl_am_alpha.png SHA1-Digest: zfh5PyI9Lqjbn44yzO7hvkJSsfk= Name: res/animator/rotate_90_animation.xml SHA1-Digest: uK/YW8CFLkvobgn+SDKh5dvJKnc= Name: res/drawable-xxhdpi-v4/ic_forward_white_24dp.png SHA1-Digest: xp/9QSw9ASrlEivYBbN9fcMKCOM= Name: res/drawable-xxhdpi-v4/ic_notifications_black.png SHA1-Digest: dF5+n+zqtdP+ka7/LdSAxnDtmgg= Name: res/layout/message_recipient_list_item.xml SHA1-Digest: cO6Ul1S0F6vmX1DhiUJkAPKYw38= Name: res/drawable/abc_spinner_textfield_background_material.xml SHA1-Digest: VxVhP39ECkMfDcnEy/uhMtmv8LA= Name: res/drawable-mdpi-v4/ic_pause_circle_fill_white_48dp.png SHA1-Digest: EeIiwplPXadZAoahDjmjyd0kmjI= Name: res/layout/single_recipient_panel.xml SHA1-Digest: zsFe0OdCFRTk7jPnGiyHaoumgv8= Name: res/drawable-mdpi-v4/abc_ic_star_black_48dp.png SHA1-Digest: FaUwj2ktP/Mx8BZm5lDgykR/aVk= Name: res/layout/select_dialog_multichoice_material.xml SHA1-Digest: 46ryfXlYBGkcboB0y0GjlBuMusI= Name: res/drawable-xxhdpi-v4/ic_warning_light.png SHA1-Digest: GNPOCgZ4syQiiVSBBzHn18YuiU0= Name: META-INF/buildserverid SHA1-Digest: xhNZchncMZQXytaTDWWDf2VsOkI= Name: res/layout-v11/notification_template_big_media.xml SHA1-Digest: oo4THErHbQ8SdBiHW/8EHh9Ys+Y= Name: res/drawable-mdpi-v4/abc_btn_radio_to_on_mtrl_015.png SHA1-Digest: Es6oBCiowN0wRwOhe4WNu1jjzYI= Name: res/drawable-mdpi-v4/ic_forward_white_24dp.png SHA1-Digest: Fu+RxWE5w8GdxSU1DCKwPIEG1y8= Name: res/drawable/conversation_item_background.xml SHA1-Digest: h6SLLN+ps25Trx7l30cz6Mioc7c= Name: res/drawable-mdpi-v4/abc_textfield_search_activated_mtrl_alpha.9 .png SHA1-Digest: 8MDSDpYFD8fxl8tEamhg6/oSBig= Name: res/color/abc_background_cache_hint_selector_material_dark.xml SHA1-Digest: EkWMqlaBHrpcPaV0xhKAKJtZbBU= Name: res/drawable-hdpi-v4/ic_delete_white_24dp.png SHA1-Digest: J+w109mQxWhOYjM+qp1D7EpZq3M= Name: res/anim-v21/design_bottom_sheet_slide_out.xml SHA1-Digest: p2/uhdWZ4yTGAbU/lBqEQJKJUt4= Name: res/layout-w270dp-h560dp-v13/calendar_date_picker_dialog.xml SHA1-Digest: W74q95Q7a5HSbwCxj2nfLP+L77E= Name: res/layout-sw600dp-land-v13/calendar_date_picker_dialog.xml SHA1-Digest: GOPa/Ci6BmPcCb9LOPRYtRAp1U0= Name: res/layout/design_navigation_item.xml SHA1-Digest: Z2LAX4Z45Q9c5ScpVvdhIl296zY= Name: res/drawable-xhdpi-v4/ic_contact_picture.png SHA1-Digest: 07gvt3zBJHPCeYeZlmnq8pkjvXY= Name: res/drawable-xhdpi-v4/ic_push_gray.png SHA1-Digest: pOCxg+EJqcno1tAdL3omHl5TAMY= Name: res/drawable-hdpi-v4/ic_emoji_flags_activated_light.png SHA1-Digest: NmtVPrNT07HF8JkEdWy/S3QHA5k= Name: res/layout/notification_action_tombstone.xml SHA1-Digest: XQeaU7Egiq2DtYHNjs0SMCrT8/Y= Name: res/drawable-hdpi-v4/abc_textfield_activated_mtrl_alpha.9.png SHA1-Digest: PIZprngie1clc1fat6kH+iHy6P4= Name: res/drawable-xhdpi-v4/ic_group_photo.png SHA1-Digest: WnjST0J5e2XQOJAD8kdAiO08P1k= Name: res/drawable-xxhdpi-v4/fab_shadow.png SHA1-Digest: x9M/KJyVED6D5/Cg3TpamvVVc0c= Name: res/drawable-xhdpi-v4/abc_spinner_mtrl_am_alpha.9.png SHA1-Digest: noUbrA0YTfnyTN3qU6nIC6HIi2Y= Name: res/drawable-xhdpi-v4/ic_visibility_off_white_24dp.png SHA1-Digest: reD5BI2mdKU65i+N+wFDVbkYi1k= Name: res/drawable-xxhdpi-v4/abc_list_selector_disabled_holo_dark.9.pn g SHA1-Digest: e8DEB+kwT5rrQOaL1UepmHHnW0M= Name: res/drawable-hdpi-v4/ic_archive_white_24dp.png SHA1-Digest: eeCQonDlHipVzbJ6m65VayQq7G4= Name: res/drawable-xhdpi-v4/ic_backspace_disabled_light.png SHA1-Digest: FvX9DtFBzEZNWx3ub/2oTnBJSzE= Name: res/layout/select_dialog_item_material.xml SHA1-Digest: GUNv1jzQMrsB/0NDNXTw8VXAN7c= Name: res/layout/view_identity_activity.xml SHA1-Digest: ZxYsEzUbqWB1fd31cKcAig8JDhs= Name: res/layout/design_navigation_item_subheader.xml SHA1-Digest: xcHXe/zAAc7FC3sqIMA7/TiN+RE= Name: res/layout-v21/notification_action_tombstone.xml SHA1-Digest: aV/gWa/js2N+8wB6XvVkSGnNUSw= Name: res/layout/share_intent_list.xml SHA1-Digest: /OHFqV8MJVHfwnbde21PTpxrK2o= Name: res/drawable-mdpi-v4/fab_shadow_mini.png SHA1-Digest: m9/szLEMoxYSEP7udguD4fDjL1c= Name: res/drawable-hdpi-v4/icon.png SHA1-Digest: YzSLNbDXnqM/2zu4zYoA+QIsVzM= Name: res/drawable-hdpi-v4/switch_thumb_pressed_holo_light.9.png SHA1-Digest: 85bARtoMmHSPqKgl57lX2txB7Sg= Name: res/drawable-xxxhdpi-v4/ic_archive_white_36dp.png SHA1-Digest: ka4rxVO7H4WEPB3680GcHOZSYWU= Name: res/drawable-xxhdpi-v4/ic_emoji_places_normal_dark.png SHA1-Digest: D+xbr+08WYh4PZpSnQN4FXZleUI= Name: res/drawable-xxxhdpi-v4/ic_save_all_white_24dp.png SHA1-Digest: VldTJ9341lkKln91ap5+0NkeH0g= Name: res/drawable-xxhdpi-v4/ic_delete_gray.png SHA1-Digest: SDeqOr2a1ZZDjr4coXlkzAbayc4= Name: res/drawable-xhdpi-v4/abc_menu_hardkey_panel_mtrl_mult.9.png SHA1-Digest: bTNFsVJfPn6MYG0AqtJNqG+o5hs= Name: res/drawable-hdpi-v4/ic_emoji_emoticons_activated_light.png SHA1-Digest: GuuTGR/EH4/yVL2IFPt3b32WxkA= Name: res/drawable-mdpi-v4/abc_textfield_search_default_mtrl_alpha.9.p ng SHA1-Digest: IKTGIARYbmam8Kefq6089z/0k98= Name: res/drawable-xxhdpi-v4/ic_textsms_black_32dp.png SHA1-Digest: dY2WYdqBdIVm2MnbgiHBzPTZUjw= Name: res/drawable-hdpi-v4/abc_ic_menu_copy_mtrl_am_alpha.png SHA1-Digest: 65aQz5QMXj+UAVHCsbn073ly7KA= Name: res/layout/group_create_activity.xml SHA1-Digest: k4AP0tqSuRSD7P+1g/dRlhTYZ1A= Name: res/drawable/emoji_category_symbol_dark.xml SHA1-Digest: dzEqAStAWicUXbOWCC/SIc3ASCM= Name: res/drawable-xxhdpi-v4/ic_volume_off_white_18dp.png SHA1-Digest: OkFrZtMHjtYzIxy94ZW7uTW0seQ= Name: res/drawable-hdpi-v4/ic_delete_gray.png SHA1-Digest: GK23DhSbaqklFDToW0tkfpKqW5s= Name: org/spongycastle/x509/CertPathReviewerMessages.properties SHA1-Digest: J41SvstF2si4wHzfzilAP7QU0lQ= Name: res/drawable-mdpi-v4/ic_emoji_people_activated_light.png SHA1-Digest: f/TH7ItlEg/niyKj2GAr0sLV064= Name: res/drawable-xhdpi-v4/actionbar_icon_holo_dark.png SHA1-Digest: TZatVkrjHmlxY7IlBlujhU5BAlY= Name: res/drawable-xhdpi-v4/abc_btn_check_to_on_mtrl_000.png SHA1-Digest: bazEYewUnilv0P6pckaiMrtQjTA= Name: res/drawable-xhdpi-v4/ic_visibility_off_grey600_24dp.png SHA1-Digest: 3bgJfHp4RhHGV2kMtin4ebCYM/o= Name: res/drawable/abc_ic_ab_back_material.xml SHA1-Digest: t28C57S8eCJuIjC2my++spL9/m0= Name: res/layout/design_navigation_menu_item.xml SHA1-Digest: nQaPVu6/W8ZpMDF8QEt9cSW0r3c= Name: res/drawable-v21/touch_highlight_background.xml SHA1-Digest: LXWsYtf9CleMEE9F2d2jKTU65FA= Name: res/drawable-xxhdpi-v4/abc_text_select_handle_middle_mtrl_light. png SHA1-Digest: YwrO8vgjHUmvObRSq+AnITPZC2E= Name: res/drawable-mdpi-v4/abc_list_divider_mtrl_alpha.9.png SHA1-Digest: gLcFerBxZUHHCrWZLH3iEvl0WT0= Name: res/drawable-mdpi-v4/ic_reply.png SHA1-Digest: 9lPFP5ez5joY2ong87wLU1XP1NQ= Name: res/drawable-xhdpi-v4/ic_emoji_objects_normal_light.png SHA1-Digest: vFhjx3BEAMCrDnw4ySDUpntYmUE= Name: res/layout-v17/notification_template_media_custom.xml SHA1-Digest: gzUkzEoypfAgJr6T3G4Icb7DIJg= Name: res/drawable-xhdpi-v4/ic_emoji_people_activated_dark.png SHA1-Digest: c/MMC1XZ+gxe5QwxIZ+gcaZ//1M= Name: res/animator/bottom_play_to_pause_animation.xml SHA1-Digest: noAqkjThR2pnIhrGEXxZ9yulSK8= Name: res/drawable-xhdpi-v4/ic_emoji_places_activated_light.png SHA1-Digest: xPpIhlJVBKYVrfdXQgmh5VeRY3c= Name: res/layout/switch_compat_preference.xml SHA1-Digest: SCvYTOQBF2ZhtbA8eqD7WWHhPMQ= Name: res/drawable-hdpi-v4/abc_list_divider_mtrl_alpha.9.png SHA1-Digest: BY8cHWBjISmMI2i+RFH96y5MQfc= Name: res/drawable-mdpi-v4/ic_menu_barcode.png SHA1-Digest: WRiRsH9ERDjUXiQi3mLSuzR1G+Y= Name: res/drawable-xxhdpi-v4/ic_push_gray.png SHA1-Digest: EKAW04fIdkE5eZtqX2agFEei4nI= Name: assets/backward SHA1-Digest: hgif/oUAa/79gSRPr7FCRJRVfvk= Name: res/drawable-xhdpi-v4/ic_audio_light.png SHA1-Digest: pzLZ/JTZjtDf/M2zEMIL9SuNrns= Name: res/drawable-xhdpi-v4/ic_emoji_recents_normal_light.png SHA1-Digest: SJMYsCgc/8fCuja29M3R6NbsVFA= Name: res/layout/load_more_header.xml SHA1-Digest: hPvXpdQKy7YDux7jOh1HBtNOyFw= Name: res/drawable-xhdpi-v4/ic_missing_thumbnail_picture.png SHA1-Digest: 69jYTqmN2tp4O9u6ohWhADlvUsQ= Name: res/layout/abc_action_menu_item_layout.xml SHA1-Digest: WBRWjBB6NmqhNMmPgLKikjYT+as= Name: res/drawable/conversation_list_item_unread_background_dark.xml SHA1-Digest: svRyOBu2+whEW37LlkqNjyQKg9E= Name: res/drawable-mdpi-v4/switch_bg_focused_holo_light.9.png SHA1-Digest: VaARP+7lQEpru1o/MCLqYUFQzRo= Name: res/color/done_text_color.xml SHA1-Digest: vLb4XWbtbiVRId+NRHZPOBIzsfg= Name: res/drawable-mdpi-v4/ic_advanced_black.png SHA1-Digest: wr7WCN0fcSAi5JW5m8myf55Rveg= Name: res/drawable-hdpi-v4/abc_list_longpressed_holo.9.png SHA1-Digest: xcQ0bHWRc+R9tuxQ3wgY1a2eY0k= Name: res/layout/splash_screen_activity.xml SHA1-Digest: eJryvlJWhqRzVH04OAQTL3dHvJE= Name: res/drawable-mdpi-v4/ic_app_protection_gray.png SHA1-Digest: q1NxUnsB8IEjVdrzkFlbjOkvVXA= Name: res/drawable-xxhdpi-v4/sms_selection_icon.png SHA1-Digest: nMUgtPxv8ssxVwF/6dKCmqiMWAo= Name: res/drawable-hdpi-v4/sent_bubble.9.png SHA1-Digest: FdfowFhHZNhFmrm59JSxASd+t3E= Name: res/drawable-mdpi-v4/ic_visibility_off_grey600_24dp.png SHA1-Digest: jtzcfEAVv3vxG3LfkfzexCfO5M0= Name: res/drawable-mdpi-v4/icon_dialog.png SHA1-Digest: sN1A7orUCP1wS6ay7YTobIJO7sE= Name: res/drawable-xhdpi-v4/list_pressed_holo_light.9.png SHA1-Digest: o6uQudI4iPo5plFaQ6Lklwf2dTY= Name: res/drawable-xhdpi-v4/ic_unarchive_white_24dp.png SHA1-Digest: z3y5F8v+7qRcfmyV/3sy7TiJ+1M= Name: res/layout/timezonepickerview.xml SHA1-Digest: PoG/lSYx+ggur9vjpGIzlSwFFiQ= Name: res/drawable-xhdpi-v4/ic_check_light_disabled.png SHA1-Digest: cywK3BhZXLadkndqRLvlZ5YWrRc= Name: res/drawable-xhdpi-v4/textfield_focused_holo_light.9.png SHA1-Digest: GTkseIIJxb2K4BmEEabgcA60SSU= Name: res/layout/color_preference_item.xml SHA1-Digest: 8pDpvvYOnDd3vfLlQ+Q9WfMGf/M= Name: res/layout/transport_selection_list_item.xml SHA1-Digest: XNz03gqniZYh5CPr9sFy3CTqunc= Name: res/drawable-hdpi-v4/abc_btn_switch_to_on_mtrl_00001.9.png SHA1-Digest: o6T1nENnpl79GnrVrE8AKfzN0kU= Name: res/drawable-mdpi-v4/actionbar_icon_holo_dark.png SHA1-Digest: /cj9MZ2+estI4chV3tWfVOlf1jE= Name: res/drawable-xhdpi-v4/ic_menu_barcode.png SHA1-Digest: wTyjejvUpn89HCtyeYcelozizeU= Name: res/drawable/import_export_item_background_light.xml SHA1-Digest: LebjrX09YTvkPFojCNp9TxoTHdw= Name: res/drawable/emoji_category_flags_light.xml SHA1-Digest: 2cusWJDjvxQv4dc6oJNAKVfKSs4= Name: res/drawable-xxhdpi-v4/ic_app_protection_black.png SHA1-Digest: 40GtO8uqUrQds7WklErRCNNcr9U= Name: res/layout/abc_alert_dialog_material.xml SHA1-Digest: ZUWbXMo/VjOtdZ/T3ZdDS1bn+7w= Name: res/color/dialog_text_color_holo_dark.xml SHA1-Digest: 4Q/QsARcQeky254Q4d695fPiL8k= Name: res/drawable-hdpi-v4/ic_visibility_grey600_24dp.png SHA1-Digest: y8hXlqbSpjn5i0MMpjrExISMEsQ= Name: res/layout-sw600dp-v13/three_keys_view_leftright.xml SHA1-Digest: MUBcRcFXaDRAK8Q8DZH7MO67ECc= Name: res/anim/abc_popup_enter.xml SHA1-Digest: mW6OQN3tih7Y8FA4hLg0FHa+E8g= Name: res/layout/blocked_contacts_fragment.xml SHA1-Digest: 30DM/Wpgi4Ma6C9rrA0uhEsKBUY= Name: res/drawable-mdpi-v4/abc_tab_indicator_mtrl_alpha.9.png SHA1-Digest: ToVo2KPSLrpwpzwqt2DA6d7KLWk= Name: res/drawable-hdpi-v4/abc_ic_star_half_black_16dp.png SHA1-Digest: QHQgoF3m7FlwHEI02KkUv35XO4k= Name: res/drawable-xxhdpi-v4/splash_open_padlock.png SHA1-Digest: 9X6kQxtwOAjhykjRzH1PrBSB/nQ= Name: res/drawable-xxhdpi-v4/design_ic_visibility.png SHA1-Digest: 1hq21CJLEjOqRp4hk2eb1egstEo= Name: assets/zone.tab SHA1-Digest: DB2JMeHIQyU6vbJXRUlLcMwvciM= Name: res/drawable-hdpi-v4/notify_panel_notification_icon_bg.png SHA1-Digest: +WaWq164+JEgAS3SD7a6bgQZgMc= Name: res/layout-v16/conversation_list_item_view.xml SHA1-Digest: OyJ30/ayut9fWwKSipo+q31JMk8= Name: res/layout/notification_template_custom_big.xml SHA1-Digest: lXs5xrTOn4+b7s8FYWdvQVtlJEQ= Name: res/layout-sw600dp-v13/calendar_date_picker_dialog.xml SHA1-Digest: 7A3C6mu/nfuE/ZOx3v+PHDrH5uE= Name: res/drawable-v11/emoji_category_nature_dark.xml SHA1-Digest: tzM7XM6jXz5ibx/c5oh3hYXuTjY= Name: res/drawable-mdpi-v4/notification_bg_normal.9.png SHA1-Digest: Q3acMTlGj6UQhONPvMrXTfJYYHU= Name: res/layout/centered_app_title.xml SHA1-Digest: c0q2NKq9aTKPwK1WRla9BgWTNWE= Name: res/drawable-xxhdpi-v4/abc_scrubber_track_mtrl_alpha.9.png SHA1-Digest: boG5dcozMnSrJdbSbLX0TBOMATU= Name: res/drawable-hdpi-v4/ic_info_outline_light.png SHA1-Digest: 3U33QULK0J7RuE3cBwPGjUbRVBg= Name: res/drawable-mdpi-v4/ic_block_white_18dp.png SHA1-Digest: vCQBWKrCBsUXUIzg00jbJKpYDVU= Name: res/drawable-xxhdpi-v4/ic_info_outline_grey600_24dp.png SHA1-Digest: MaI496aqVWHrODDpXxhJa19mm3s= Name: res/drawable-hdpi-v4/ic_recurrence_bubble_fill.png SHA1-Digest: N0RlHgCdtk7/v3uisCq9UFt1zKQ= Name: res/color/abc_primary_text_disable_only_material_dark.xml SHA1-Digest: PMhnRzfrwY1jlNfoIvzhOutdgIg= Name: res/drawable/info_round.xml SHA1-Digest: EQHFy9KXlVRBd3MTQYLkJoHhHec= Name: res/drawable-v21/avd_hide_password.xml SHA1-Digest: tCMN1pa7/72S99g/osWbGg8uwMY= Name: res/drawable-hdpi-v4/ic_launch_white_24dp.png SHA1-Digest: BDelJhu97+vnx9fccEH+FD6CdUw= Name: res/drawable-mdpi-v4/ic_unarchive_white_36dp.png SHA1-Digest: anNidWfeepDjyPgAIZKa8Ks9mn0= Name: res/drawable-xxxhdpi-v4/fab_shadow.png SHA1-Digest: HyRQIsHzzBNID4cwXCdz7aHwQTo= Name: res/anim/slide_from_top.xml SHA1-Digest: dpPiD0hLamwYer/Zh9GESUYkkl8= Name: res/drawable-mdpi-v4/ic_warning_dark.png SHA1-Digest: mQDXjcj9f73wMhnSFRpT8LlqDK4= Name: res/drawable-hdpi-v4/ic_content_copy_light.png SHA1-Digest: Kc+x06w+bAcZdacvH0QEgCtLLvI= Name: res/drawable-hdpi-v4/received_bubble.9.png SHA1-Digest: I12yNJInw7EAeJ+dan826X5qFys= Name: res/layout/keyboard_right_drawable.xml SHA1-Digest: O8O7eJxdOH0gZkW5Q+ok6QTtgrk= Name: res/drawable-hdpi-v4/abc_list_pressed_holo_dark.9.png SHA1-Digest: 0zBo9Tp1wTO3RHYh5z1M+TUN+H8= Name: res/drawable-xhdpi-v4/ic_lock_white_24dp.png SHA1-Digest: 3xuHKI/HcZ+RqZMLXhn2A97T2FA= Name: res/drawable-xhdpi-v4/ic_reply_white_36dp.png SHA1-Digest: 8FtXNX+a3aLdkMF4Ye1lu5YGUi0= Name: res/color-v11/abc_tint_default.xml SHA1-Digest: 5QwBDkHEzTgTemwvQXm0FJqBCcI= Name: res/xml/preferences_sms_mms.xml SHA1-Digest: CNZE1mjiY2DPiaB0mWAXNrBBXSk= Name: res/drawable-xhdpi-v4/abc_ic_menu_paste_mtrl_am_alpha.png SHA1-Digest: r/h/FWdsW/T/8uq+xHKyl+iJKz0= Name: res/drawable-xxhdpi-v4/ic_emoji_emoticons_normal_light.png SHA1-Digest: UP3HNQi1TrWx5jfn6AKRiPu1SJo= Name: res/drawable-mdpi-v4/ic_emoji_places_normal_dark.png SHA1-Digest: W6IBMjE4M2iGTNNWmOe2vxsnXQs= Name: res/drawable-hdpi-v4/import_database.png SHA1-Digest: ycFAKEbBj2c3oO83GGoVCF2sVyo= Name: res/drawable-sw600dp-xhdpi-v13/ic_backspace_disabled_dark.png SHA1-Digest: MOsT5ebuo+XKKaakAt9/WeSeP1U= Name: res/drawable-xhdpi-v4/ic_emoji_objects_normal_dark.png SHA1-Digest: jGC2iFS0Wfg/WDmaseQgQaykEbE= Name: res/drawable-xhdpi-v4/ic_app_protection_gray.png SHA1-Digest: EOfgE1fjZaclo3c0va+a33QIxMM= Name: res/drawable-hdpi-v4/ic_action_warning_red.png SHA1-Digest: GFcZA1im1MVaPolBF19LyzD4ok0= Name: res/drawable-hdpi-v4/ic_info_outline_dark.png SHA1-Digest: aCTUUUUQ4+v7lkGanhwuQqp7mkA= Name: res/drawable-hdpi-v4/ic_account_box_light.png SHA1-Digest: GPGp+rEnVGmzHqCJEspudbAH/UU= Name: res/drawable-xxxhdpi-v11/icon_cached.png SHA1-Digest: uYGv++9QgJscjBiLG2dew5sowmE= Name: res/drawable-hdpi-v4/ic_notifications_black.png SHA1-Digest: Dog7/fcdUr3lbwLolw6ZDkZQIFw= Name: res/drawable-xxhdpi-v4/switch_thumb_disabled_holo_light.9.png SHA1-Digest: RvDI/d1z/we6bQc9ZS9oXdPJnPo= Name: res/drawable-mdpi-v4/fab_shadow.png SHA1-Digest: 45XV1wLqQqgJWEWEUK4mH+j+4kI= Name: res/drawable-hdpi-v4/alert.png SHA1-Digest: M4mo8M2sCrIJH+vZuoNCICj0CKA= Name: res/drawable-hdpi-v4/ic_emoji_places_normal_light.png SHA1-Digest: MgdPAKeTtnfyUo2ng3EoaRB223I= Name: res/drawable-hdpi-v4/ic_reply_white_36dp.png SHA1-Digest: VhtJFYVXZ+cs1YSh6gAB6UBMiqU= Name: res/drawable-xhdpi-v4/spinner_focused_holo_light.9.png SHA1-Digest: CGrl1FRXVxrvA14ueVH03Fn2em0= Name: res/drawable/conversation_list_item_read_background.xml SHA1-Digest: xo2V+lsQf/r0itDPFGirB+bS9IE= Name: res/drawable-xhdpi-v4/ic_create_white_24dp.png SHA1-Digest: XHYLWABpP3mGUN3uyqc8bQoo+aQ= Name: res/xml/preferences_appearance.xml SHA1-Digest: wW5nZrcFeOc1L2k8Q3tFzK44KJE= Name: res/drawable-xxhdpi-v4/abc_scrubber_primary_mtrl_alpha.9.png SHA1-Digest: /SHIbNyt1+Fo97bGAhsp65znrc4= Name: res/anim/abc_slide_out_top.xml SHA1-Digest: NM9nWh/XI2zag3rBwIXEqrpl9XA= Name: res/drawable-mdpi-v4/spinner_default_holo_light.9.png SHA1-Digest: s/npsTa4f6dHCangZu461npuSrQ= Name: res/color-v23/abc_tint_switch_thumb.xml SHA1-Digest: edQ0GZeXV46rMhldev7VspmKHD4= Name: res/drawable-xxhdpi-v4/abc_ic_commit_search_api_mtrl_alpha.png SHA1-Digest: am9o4CCMkLbqK7tqn2d7aY98YtM= Name: res/drawable/design_bottom_navigation_item_background.xml SHA1-Digest: q/tAvUCKzH/tN0gPUEzccAp698k= Name: res/color-v23/abc_tint_spinner.xml SHA1-Digest: g5nC+lgyeU60gIu/wJqF+3SdbSo= Name: res/layout-v11/notification_template_big_media_custom.xml SHA1-Digest: d8BqWJoZKRqdvlw9kvQm2Jtb2sg= Name: res/drawable-v21/conversation_list_item_read_background.xml SHA1-Digest: Kp+lqb42WaFm0e6LoTHrdtz5xkE= Name: res/drawable-mdpi-v4/ic_delete_black.png SHA1-Digest: mIOI+jdJeaXXrfU+pDakcPF4biQ= Name: res/layout/conversation_list_fragment.xml SHA1-Digest: gMh57swYNwbCfzhX8KeQTr2LNyM= Name: res/drawable-xhdpi-v4/ic_notifications_black.png SHA1-Digest: 5xxTLdG9MaRREbXunrtHf5KYHoY= Name: res/raw/whisper.store SHA1-Digest: XHW+g7lvAC9+4Celnl0Js28aCVo= Name: res/drawable-hdpi-v4/ic_emoji_recents_activated_dark.png SHA1-Digest: s+VUH60cHG3DQHn/KDRKcrw32Pc= Name: res/anim/fade_scale_out.xml SHA1-Digest: Uir4/KEtcVOVxHtCmwcmNzM0Nnc= Name: res/drawable-xxhdpi-v4/ic_video_light.png SHA1-Digest: cIp1SG7udNqwshEULUT0m2Zx4WE= Name: res/drawable-hdpi-v4/ic_reply.png SHA1-Digest: yW8DB5L+UjcqFxvPb5iuS/mfNH8= Name: res/drawable-xxhdpi-v4/abc_textfield_default_mtrl_alpha.9.png SHA1-Digest: sNds9Ym0phYx3ALXo+MZX8xlc30= Name: res/drawable-xhdpi-v4/ic_image_light.png SHA1-Digest: jRfUT1SOm0NWCHN8mTP06GkG3LE= Name: res/drawable/conversation_item_header_background_dark.xml SHA1-Digest: 3zJGQhq7efNb8O1pcgs6FzHcZtw= Name: res/drawable/emoji_category_recent_dark.xml SHA1-Digest: 3LNTUa6nHUMOLhf8Ghy3oolZzzg= Name: res/drawable-ldrtl-xhdpi-v17/abc_spinner_mtrl_am_alpha.9.png SHA1-Digest: P6e0iLoIQdVv5zYT47sluTSi/8U= Name: res/drawable-xxhdpi-v4/ic_emoji_symbols_normal_light.png SHA1-Digest: 5LwZJ27P0paPxRx7F4OyAndvSS0= Name: res/drawable-mdpi-v4/ic_forum_black_32dp.png SHA1-Digest: WPgUSq8gt52EyqrxEYbAT0DMhNk= Name: res/drawable-xxhdpi-v4/ic_lock_white_24dp.png SHA1-Digest: htLTvYWN+EgD7hulQ8vXHu5ROKY= Name: res/drawable-ldrtl-xxhdpi-v4/ic_send_white_24dp.png SHA1-Digest: ESPL9d41EpIb26lvmx+kRw7JfjE= Name: res/drawable-mdpi-v4/ic_textsms_black_32dp.png SHA1-Digest: aPyQLe1M5CIKEHMt880bCAo9BDU= Name: res/drawable-hdpi-v4/ic_contact_picture.png SHA1-Digest: J1/9vNqI7GpiHcC/MlfugImp7eU= Name: res/drawable-hdpi-v4/ic_push_registration_reminder.png SHA1-Digest: rqdC/GFKtQiSFjmW/fq1at8m6+s= Name: res/drawable-mdpi-v4/abc_ic_menu_paste_mtrl_am_alpha.png SHA1-Digest: iHSmoed/iXLMYG1Wapa0CvCYopQ= Name: res/drawable-xxhdpi-v4/spinner_pressed_holo_light.9.png SHA1-Digest: y35Cc9pdVLFODoXVqOPGVcSrZMs= Name: res/drawable/design_password_eye.xml SHA1-Digest: Ip+zp9WKcMYKDC/1FcIw9dGmhd0= Name: res/drawable-xxxhdpi-v4/ic_clear_white_24dp.png SHA1-Digest: aZFL0sBndjS4MOKenJmwnPQbYec= Name: res/menu/media_preview.xml SHA1-Digest: TUG4x5DmL3L7mQAfYiWNBIYy9P8= Name: res/drawable-mdpi-v4/switch_thumb_pressed_holo_light.9.png SHA1-Digest: VyxRoouO+Z7ITDC+bYAPridmWf4= Name: res/drawable-mdpi-v4/ic_emoji_emoticons_activated_light.png SHA1-Digest: VhIQ5RxVdV3k3W3X17qkKMlzqxE= Name: res/drawable-xxhdpi-v4/ic_scroll_down.png SHA1-Digest: 9Uzxtz02mh/U059QfstpbDG0+nM= Name: res/drawable-hdpi-v4/ic_group_white_24dp.png SHA1-Digest: uM/cr5yN0CYCGsC1huqKr8pKMBY= Name: res/drawable-hdpi-v4/abc_list_pressed_holo_light.9.png SHA1-Digest: +pi/Z1BDTC/eHcG86xxdoFAyukA= Name: res/layout-v21/message_details_header.xml SHA1-Digest: IwErlBffc82CUVeFFihw7lOCdc4= Name: res/drawable/abc_ratingbar_small_material.xml SHA1-Digest: /P2KXIWbMuyOgftOHbBQa8ym+uI= Name: res/drawable-xxhdpi-v4/abc_text_select_handle_right_mtrl_light.p ng SHA1-Digest: xmNf1ImJ9zRw/jShIY6T+TQEFiI= Name: res/drawable-mdpi-v4/abc_text_select_handle_middle_mtrl_light.pn g SHA1-Digest: rzBEG5E2MZ8ThruZL2oRv/S33oo= Name: res/drawable-xxhdpi-v11/icon_notification.png SHA1-Digest: dC3ZDCE4hgbvLcSF8i/dtyEG2DI= Name: res/drawable-mdpi-v4/ic_menu_remove_holo_light.png SHA1-Digest: BQFtfz+X7xkDAjh7SE2eENwuCXA= Name: res/layout/abc_activity_chooser_view_list_item.xml SHA1-Digest: a+iaKMdtxOa/B0g49Cz7dJwCQFk= Name: res/drawable-xxxhdpi-v4/abc_ic_menu_paste_mtrl_am_alpha.png SHA1-Digest: WWeCz1VpFVwQ378BwOFriTLP1x8= Name: res/drawable-xhdpi-v4/abc_textfield_search_default_mtrl_alpha.9. png SHA1-Digest: P2nXckVhoat9mgVUXkNB8jHu5sU= Name: res/color/text_color_dark_theme.xml SHA1-Digest: +r5qAEASxwVUq+72lZIJoOu6N+Y= Name: res/drawable-xhdpi-v4/ic_emoji_symbols_normal_light.png SHA1-Digest: xJRFg2lT8pCNLPi6NCbB7K2dtiY= Name: res/drawable-mdpi-v4/ic_badge_24dp.png SHA1-Digest: cJ3CJ+jyxtHeApCtlGzENIl0ugA= Name: res/drawable-xxhdpi-v4/ic_delete_black.png SHA1-Digest: U7JXpz2+U8hC48B4evSn8MjewL0= Name: res/drawable-mdpi-v4/abc_btn_radio_to_on_mtrl_000.png SHA1-Digest: hd7Xhf7r8tiMaj3TA7e8mD5AaWk= Name: res/drawable-xxhdpi-v4/ic_reply_white_36dp.png SHA1-Digest: q1IMO8sC5U7/zGVWmUfd+VXf8vE= Name: res/drawable-xxxhdpi-v4/ic_circle_fill_white_48dp.png SHA1-Digest: WVB9yHE8xW+1eSVkrlKOLFEa/Eo= Name: res/drawable-xhdpi-v4/dialog_full_holo_light.9.png SHA1-Digest: 4a/lXtrHhDyTJ5J/FXa5QOYmYFk= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_972 SHA1-Digest: wAYIltvc6+i6ruNDh7sN4H7KQtQ= Name: res/drawable-v21/design_bottom_navigation_item_background.xml SHA1-Digest: pr4lHw2CyDnUXBosj+Dtzxdp1Go= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_971 SHA1-Digest: hXcyXUcpEkkPh5oyJGLDlCa0gj4= Name: res/layout-v16/audio_view.xml SHA1-Digest: cLq5qBUOjLJvq7rciTXcC3OfLB0= Name: res/drawable/conversation_list_divider_shape_dark.xml SHA1-Digest: fWos81hHhRxDA19IMaROPe9RF/g= Name: res/layout-v22/abc_alert_dialog_button_bar_material.xml SHA1-Digest: BGg02XJg5Rm7Hon/HR5TED1+xGA= Name: res/drawable-xxhdpi-v4/abc_btn_switch_to_on_mtrl_00012.9.png SHA1-Digest: x6v2WXfb5dlObVj7r3apFaVYbqU= Name: res/layout/push_recipients_panel.xml SHA1-Digest: V9+FCGlL81aEfDHsTJjEq/vXCic= Name: res/layout/blocked_contact_list_item.xml SHA1-Digest: O2MH8iSEZ/gnJ7/+O30PtzbPZ/o= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_595 SHA1-Digest: Yclq7RFkgBMoTXIDcvEQSp9M8ok= Name: res/drawable/emoji_category_symbol_light.xml SHA1-Digest: AXYq5JMOM7ytemsBcrJ/iZRr5GU= Name: res/drawable-hdpi-v4/ic_emoji_emoticons_normal_dark.png SHA1-Digest: hAVGK8+r2aV6kpGq3D0wI2GPvU8= Name: res/drawable-xxhdpi-v4/abc_list_pressed_holo_dark.9.png SHA1-Digest: LdyLROvWFgig9Vsgsaypd9fZOJY= Name: res/drawable-xhdpi-v4/ic_emoji_nature_activated_light.png SHA1-Digest: 4lPutF935FySe8C9WkMbfnRwTtw= Name: res/drawable-xhdpi-v4/icon_cached.png SHA1-Digest: YFST3niSlSLLmcZHPhBmo/JGETE= Name: res/drawable-hdpi-v4/switch_bg_disabled_holo_light.9.png SHA1-Digest: 8JhypYeb6T5pv+9W/UUzEOwHvyI= Name: res/drawable-mdpi-v4/ic_emoji_nature_normal_dark.png SHA1-Digest: QaZ6rwfPQ4lc5WIJun2DFKbP7Mc= Name: res/drawable/ic_backspace_light.xml SHA1-Digest: YHhJ2M17Nwf63uXOZsa/rXaXSiI= Name: res/drawable-xhdpi-v4/ic_forum_black_32dp.png SHA1-Digest: 3l7T8riC3mgNo6J1olUj+hRqoUU= Name: res/drawable-ldrtl-xxxhdpi-v4/ic_send_white_24dp.png SHA1-Digest: bxEMeGjTEUMf6/VMTJgYOWnNAAc= Name: res/drawable-hdpi-v4/ic_emoji_places_activated_light.png SHA1-Digest: dtZ0oh5dGwA3n/PYE9vMAKw/mSc= Name: res/drawable-hdpi-v4/abc_ic_commit_search_api_mtrl_alpha.png SHA1-Digest: BZJDbJr+DqrwOb7xOhkTBDzBHlg= Name: res/drawable/rounded_rectangle.xml SHA1-Digest: W1PIBWXgXwieJFzg924AzyFFCQI= Name: res/drawable-xhdpi-v4/ic_lock_white_18dp.png SHA1-Digest: QRmXgmOtRZSMLuw4lzyyvEzxODA= Name: res/drawable-hdpi-v4/lockscreen_watermark_light.png SHA1-Digest: AXK2KP2ApxC2Z2yzuty9it93QuI= Name: res/drawable-hdpi-v4/ic_lock_light.png SHA1-Digest: Y+MO7y5qQbcsoqrpg2zSVCsJf3M= Name: res/layout/conversation_activity_attachment_editor_stub.xml SHA1-Digest: xP5sF5FP2CHmgHqc2J4zXFClT/c= Name: res/drawable-xhdpi-v4/ic_forum_grey_32dp.png SHA1-Digest: UFnYU3r7D0HoFnktokFTaP/pPT4= Name: res/layout/color_fragment.xml SHA1-Digest: JbZaOBLv7+acnwkjCmd3xaK8LUc= Name: res/drawable/widget_unread_count_background.xml SHA1-Digest: Yy/nLAIfCf1bcX2jic2d+rlzGbw= Name: res/drawable-xxxhdpi-v4/abc_tab_indicator_mtrl_alpha.9.png SHA1-Digest: 3fhmc4V2nmgfmXePbvfRvhgIwJY= Name: res/drawable-v21/circle_touch_highlight_background.xml SHA1-Digest: o2UQBTWYlJ9QXTjKaXy9nlvVkd0= Name: res/layout-v21/recipient_preference_activity.xml SHA1-Digest: LAb6OqLhhlHIK//g73HVsj6zs1A= Name: res/drawable-mdpi-v19/switch_thumb_pressed_holo_light.9.png SHA1-Digest: CFRP5NlSZZOns7feha7lGxerPGg= Name: res/drawable-xxhdpi-v4/ic_video_dark.png SHA1-Digest: XtOnQnOLPbi3t0IrtZ85LaIyetg= Name: res/drawable-xxxhdpi-v4/icon.png SHA1-Digest: WtQHPcTXiUt+2Q8CVkBaKIpO47M= Name: res/drawable-xxxhdpi-v4/abc_scrubber_control_to_pressed_mtrl_005 .png SHA1-Digest: vemTSSQdycMQQJlthk4udlWVCtA= Name: res/drawable-xxxhdpi-v4/ic_archive_white_48dp.png SHA1-Digest: dKISf3rbvALxLw+0EofvQox3t2s= Name: res/drawable/emoji_category_objects_dark.xml SHA1-Digest: kfXqnfoLc6+1LbnHmJXTPQ5ZSRM= Name: res/drawable-xxhdpi-v4/fab_shadow_mini.png SHA1-Digest: 50Pk6/PSs/mMVgqjsfxR1iLTd4I= Name: res/layout/conversation_item_received_audio.xml SHA1-Digest: rJfl43B7j5swgx4K6TQ86nw5hvk= Name: res/drawable-mdpi-v4/sent_bubble.9.png SHA1-Digest: oWvWoFrpRQdCV4lAcWNy0a6DydY= Name: res/drawable-xxhdpi-v4/ic_attach_white_24dp.png SHA1-Digest: sdTAMI30OBxgl8xmIxijVZVm7vU= Name: res/drawable/compose_background.xml SHA1-Digest: 77YF5OthBZArbShPc+i58Aql40g= Name: res/drawable-mdpi-v4/ic_content_copy_dark.png SHA1-Digest: prKV/2e2z+B34cHOsghLSPcAWIA= Name: res/layout/date_picker_view.xml SHA1-Digest: TswBiM1KZTeAkVH/lhpSjEaZsWs= Name: res/drawable-mdpi-v4/ic_emoji_recents_normal_dark.png SHA1-Digest: brmCWGpFBHeALX69UF3hDMOTJg4= Name: res/drawable-mdpi-v4/dialog_full_holo_dark.9.png SHA1-Digest: q3ptg6feoBdTrvEzjNt9NgzKcHM= Name: res/drawable-mdpi-v4/abc_ic_star_half_black_36dp.png SHA1-Digest: ZXAwjCRHDKMA1FtoZL8+AhM9yvI= Name: res/drawable-hdpi-v4/abc_btn_check_to_on_mtrl_015.png SHA1-Digest: J3SGWA4N2NBzGxZuD1OYrO+kvSg= Name: res/drawable-mdpi-v4/divet_lower_right_dark.png SHA1-Digest: rq1MiOtAGeYqXA9AuuCSqoHYMpE= Name: res/drawable-xxhdpi-v4/ic_image_light.png SHA1-Digest: oe1zE4t4f6sTrfGOtL7BoqGWqBI= Name: res/menu/contact_selection.xml SHA1-Digest: O2r1ScXr8uDumtySR2i8JA4uR2M= Name: res/drawable-xhdpi-v4/ic_menu_search_holo_dark.png SHA1-Digest: bKDlYP7RsBc0UlbbwR/gqgFqq8w= Name: res/color/abc_tint_switch_thumb.xml SHA1-Digest: JY0G52hUE4OcvW5M6WzWjE/j1DM= Name: res/drawable-hdpi-v4/dialog_full_holo_dark.9.png SHA1-Digest: gYRi3qcewvv4DpgH7WRa5oontHM= Name: res/drawable-hdpi-v4/ic_backspace_disabled_light.png SHA1-Digest: I3l9fO+XlM3GMEc7mJi0gIh8HXc= Name: res/drawable-xxhdpi-v4/ic_reply.png SHA1-Digest: qG0hBkDSQm7dAysBPD1VzEHexIE= Name: res/drawable-hdpi-v4/ic_message_white.png SHA1-Digest: 4hH67nLDLSDpO/PkUE3B2tJ0VTo= Name: res/drawable-xxhdpi-v4/ic_send_insecure_white_24dp.png SHA1-Digest: UlsVGjyXvlutgo7jPc9VP3zCRN0= Name: res/drawable-hdpi-v4/abc_scrubber_control_to_pressed_mtrl_005.pn g SHA1-Digest: 3qnimsnK10WL03+kpBN2qzg7V1Y= Name: res/layout-v17/abc_popup_menu_header_item_layout.xml SHA1-Digest: YsoJ5ydfgQxhRDOJEIiXUol6dJw= Name: res/layout-v17/notification_action.xml SHA1-Digest: LO/ceel3QXArZD+w3cRZ8aS+08I= Name: res/drawable/background_pane.9.png SHA1-Digest: DebSplvlRk4ibCyCE6fVr4Rye5w= Name: res/layout-v16/conversation_item_received.xml SHA1-Digest: J278vdGN8exGkzLY9BUHAFJ0fvo= Name: res/drawable-xhdpi-v4/ic_arrow_forward_light.png SHA1-Digest: 8B3KLzM+ZxxKUaz31Ub711ckJuE= Name: res/drawable/emoji_category_people_light.xml SHA1-Digest: +Bv974WbkFqfpxT9EBtPeHcRw20= Name: res/layout/notification_template_media_custom.xml SHA1-Digest: Rb07Oq0AWSU5fpwtGOsf+Y01S48= Name: res/drawable-xhdpi-v4/ic_forward_white_24dp.png SHA1-Digest: GqaeuX6n1vKxkKLK4mh1fr7Ut60= Name: res/drawable-xxhdpi-v4/ic_error_red_18dp.png SHA1-Digest: AGBDwVaOj112bQa4oENKtcShlzs= Name: res/drawable-xhdpi-v4/ic_message_black.png SHA1-Digest: 6352Bc/8+QYJrkmMMMsNvpKPjM8= Name: res/drawable-xxhdpi-v4/ic_keyboard_white_24dp.png SHA1-Digest: 9taTcawrGNSChnJvoiXAHzNR1T8= Name: res/drawable/emoji_category_recent_light.xml SHA1-Digest: 3r2NNEnmR57jtcSYEixH1j6WcLw= Name: res/drawable-xxhdpi-v4/ic_app_protection_gray.png SHA1-Digest: 2TVhdC+MvGJJXfzGaHhucghUJrc= Name: res/anim-v21/design_bottom_sheet_slide_in.xml SHA1-Digest: P5+oT0+JVe2tOF/nHLy58E5nCQg= Name: res/drawable-xhdpi-v4/list_selected_holo_light.9.png SHA1-Digest: U9jUfNg6H8NNFEsehvr9ue8J/zc= Name: res/drawable-xhdpi-v4/ic_send_insecure_white_24dp.png SHA1-Digest: JE4aO/E1KAIkIlzWL4s0wvVAf/M= Name: res/drawable-hdpi-v4/abc_menu_hardkey_panel_mtrl_mult.9.png SHA1-Digest: Eh+ZTEk9nWC3r6F65kTTCqFuv/0= Name: res/drawable-xhdpi-v4/notification_bg_normal_pressed.9.png SHA1-Digest: oXhMxqCdTU9FU0k6ZW87SKaXIv4= Name: res/drawable-xxxhdpi-v4/ic_scroll_down.png SHA1-Digest: RDfbOziQ77bQwxk2APgk8L8KRz0= Name: res/drawable-xxxhdpi-v4/abc_text_select_handle_left_mtrl_light.p ng SHA1-Digest: LleVLIYRudbFAD34tHNTJEZxhXw= Name: res/drawable-mdpi-v4/ic_app_protection_black.png SHA1-Digest: 0zIOC4EHHt1nv71/50ASJr1ExAw= Name: res/drawable-xxhdpi-v4/ic_content_copy_light.png SHA1-Digest: Ikhdvy4kc7KWV6wQ6mAT8SEXCCk= Name: res/drawable-xxhdpi-v4/ic_error_white_18dp.png SHA1-Digest: +asFYpuUKal6m9VEZlRuBhyaQ4s= Name: res/layout/abc_screen_toolbar.xml SHA1-Digest: uU227asMSuWQIBX4+4P+jVpjaOA= Name: res/drawable-xxhdpi-v4/abc_ic_star_half_black_48dp.png SHA1-Digest: LOaqUgdDJCkzcFxWg8tmL0IBRoQ= Name: res/layout/database_upgrade_activity.xml SHA1-Digest: rixOXNhHj2qjtL8u7smjMKsXm4w= Name: res/drawable-v11/emoji_category_symbol_dark.xml SHA1-Digest: USyM6X1uv2WWZWGfnmw7E5d69KY= Name: res/drawable-mdpi-v4/ic_download_circle_fill_white_48dp.png SHA1-Digest: lwooWBeYZiU+VTxoZN/ghJZ2LtM= Name: res/drawable-xxxhdpi-v4/abc_spinner_mtrl_am_alpha.9.png SHA1-Digest: hlPg0mO16g5nYlkb2LmahKOZAG8= Name: res/drawable-xhdpi-v4/ic_select_all_white_24dp.png SHA1-Digest: R7TBs96lHI2rHtkBdpfJQj5XvqM= Name: res/drawable-xhdpi-v4/switch_bg_disabled_holo_light.9.png SHA1-Digest: R8GV7kb6QAwT3efgJTdnB9VOJAo= Name: res/layout/transfer_controls_view.xml SHA1-Digest: rGvBRBRjABRAHbISc9Klc2KXzkY= Name: res/drawable-xhdpi-v4/icon.png SHA1-Digest: ZX0Na7vYQj2M/TBdj+eQoSk7YR8= Name: res/drawable-mdpi-v4/sms_system_import_icon.png SHA1-Digest: 4FpxWz1BwQb5Kp2ZiRbEm2oyAKU= Name: res/drawable-xxhdpi-v4/abc_text_select_handle_left_mtrl_light.pn g SHA1-Digest: o3UnPa5xQWf+9sW1xzSf4Z35vmk= Name: res/anim/slide_from_right.xml SHA1-Digest: TfPszWadpReLtTNx99WycfoyUO4= Name: res/drawable-mdpi-v4/ic_emoji_places_normal_light.png SHA1-Digest: Z0VaVHOx9e28oBU4v9FfnuF5+qU= Name: res/drawable-xxhdpi-v4/switch_thumb_pressed_holo_light.9.png SHA1-Digest: E/oARIhpfJfx3+nGJCpSww+s2hs= Name: res/drawable-mdpi-v4/textfield_default_holo_light.9.png SHA1-Digest: HHVoeIoiPaZGrfV/J675mX9mKZE= Name: res/layout/design_layout_snackbar.xml SHA1-Digest: 8ybNZ/e1PZuEOTyEoWLg2z2iy5s= Name: res/drawable-v21/dialog_background.xml SHA1-Digest: DavJrkoaA6avP9NleoDSEf06dSc= Name: res/drawable-hdpi-v4/ic_menu_add_field_holo_light.png SHA1-Digest: ULfeQw0hAmEOAi1XJUliX5NzZMM= Name: res/drawable-xxhdpi-v4/ic_unlocked_white_24dp.png SHA1-Digest: OLI3oTlEzJinF3GuHri9mip1thU= Name: res/layout/reminder_header.xml SHA1-Digest: vcf19058p0wwcoK5BD/6Op4ZIM4= Name: res/drawable-mdpi-v4/ic_emoji_people_normal_light.png SHA1-Digest: SpLsdXeONmvVc2/mA0Q8tOGXOTw= Name: res/drawable-xxhdpi-v4/ic_image_dark.png SHA1-Digest: 5QWssaiS3uzxGdVkntaRBMH6wNI= Name: res/drawable-xhdpi-v4/ic_done_white_18dp.png SHA1-Digest: KBL2mzmCV7ECTCI1eGxjvKVjB2E= Name: res/drawable-xxhdpi-v4/list_longpressed_holo_light.9.png SHA1-Digest: CBiyFOEOkN4G8LwWwkREd/FYJhs= Name: res/drawable-hdpi-v4/notification_bg_low_normal.9.png SHA1-Digest: GqlxeUYi9nderviC+XwD6tRD5Kg= Name: res/drawable-xhdpi-v4/ic_download_circle_fill_white_48dp.png SHA1-Digest: qyfgqeIjZuk6EpczzzExcGu6zD0= Name: res/drawable-hdpi-v4/abc_btn_radio_to_on_mtrl_015.png SHA1-Digest: ehXR0id2qmpKXDOMM66scpMAeFg= Name: res/drawable/abc_list_selector_background_transition_holo_light. xml SHA1-Digest: GmT6IMAyeHMrj3HfwELKNXx7GjY= Name: res/drawable-xhdpi-v4/ic_arrow_forward_dark.png SHA1-Digest: n/kEo/gBinlbUxHmmkL7EXndGK4= Name: res/layout/recurrencepicker_freq_item.xml SHA1-Digest: EvbG/hd0LGdj3UPmFOorUS5ig+c= Name: res/drawable-xhdpi-v4/notification_bg_low_normal.9.png SHA1-Digest: skfmh8AKXvj2Y90RQYRWGn6cYvs= Name: res/drawable-mdpi-v4/abc_text_select_handle_left_mtrl_dark.png SHA1-Digest: +hxtgSGCnF5TH+4LvSwYRLnVzDw= Name: res/drawable-hdpi-v4/ic_content_copy_dark.png SHA1-Digest: T3QObin9mzq6kKqgsPOkyG3imgc= Name: res/layout-v17/notification_template_big_media_narrow.xml SHA1-Digest: kD4TuSCXVYPjwJvXlcG7T13k38Q= Name: res/drawable-mdpi-v4/ic_volume_up_dark.png SHA1-Digest: AbY5CujgEDn/CHHf3fPQ/zzzWGQ= Name: res/drawable-mdpi-v4/ic_volume_off_white_18dp.png SHA1-Digest: /Gl91aCUE+H597QunvAYC+8mTOo= Name: res/drawable-xhdpi-v4/ic_audio_dark.png SHA1-Digest: KCG8HUU7Z5VlICyAaXx6vDcy+RI= Name: res/color/abc_primary_text_material_dark.xml SHA1-Digest: t7dOMP7ur0YJrU60kQgbx1E/KP0= Name: res/drawable-hdpi-v4/abc_scrubber_primary_mtrl_alpha.9.png SHA1-Digest: QT06M8jIu5PbB6orRZr5qtxv3oI= Name: res/layout/notification_template_media.xml SHA1-Digest: APsr5r93KLHuij35wf2E5vipLT0= Name: res/drawable-xhdpi-v4/list_focused_holo.9.png SHA1-Digest: OMRGZ9NZcF46RZNFPM1PA5UDfDk= Name: res/drawable-xhdpi-v4/ic_emoji_places_normal_dark.png SHA1-Digest: NkFXJ9PnewoPQmwyaxvViVST/Zg= Name: res/drawable-hdpi-v4/list_selector_background_selected.9.png SHA1-Digest: hwr6dZUS/iDuJ78l2mF0/dfJL+8= Name: res/drawable-hdpi-v4/ic_call_split_white_24dp.png SHA1-Digest: aDXhmmrFzHZqOyCGYZVWSG61/AI= Name: res/drawable-xxhdpi-v4/transfer_controls_background.9.png SHA1-Digest: j7LzaIHFeP182GCKU70DBB8X2+Q= Name: res/layout-v13/select_dialog_singlechoice_material.xml SHA1-Digest: msQSXB79DdKW3CGw6eCSN11yWMo= Name: res/layout-v17/notification_template_custom_big.xml SHA1-Digest: Z0vGiLZztPzEw8qLt43/XBk8KBQ= Name: res/drawable-hdpi-v4/abc_text_select_handle_middle_mtrl_light.pn g SHA1-Digest: w8Uc/kI2V1M3yMQqT3OQtJzclbo= Name: res/drawable/conversation_item_sent_indicator_text_shape_dark.xm l SHA1-Digest: ni1zsLQFwrR7vllFnS41NOG8hXI= Name: res/drawable-xxhdpi-v4/abc_ic_star_half_black_36dp.png SHA1-Digest: /qTnweOfRMZPcyM1eqEsdwUZTD4= Name: res/color/abc_tint_switch_track.xml SHA1-Digest: G+p1U+cLARvJsg+xCLdCCItwTlU= Name: res/drawable-xxxhdpi-v4/ic_send_insecure_white_24dp.png SHA1-Digest: IGX4QelGg0sG9EmeHNme4rw9h0U= Name: res/drawable-mdpi-v4/telephone.png SHA1-Digest: DvkA3yTuKRtejM5DM72hMvzdg8g= Name: res/drawable-mdpi-v4/ic_save_all_white_24dp.png SHA1-Digest: LvVW7F2kcUdf2bMZgGOhWD+M6jk= Name: res/layout-v21/notification_action.xml SHA1-Digest: jtD5IGq/mY1IwmkPG/EiEhVS9Zw= Name: res/drawable/navigation_empty_icon.xml SHA1-Digest: oj14w4XpXH1NupwME3lJQMfohLM= Name: res/drawable-xxhdpi-v4/abc_btn_switch_to_on_mtrl_00001.9.png SHA1-Digest: pekxWTKwrzIagiU2Ssj+otR4tkc= Name: res/drawable-xhdpi-v4/ic_emoji_recents_activated_dark.png SHA1-Digest: ZKrYvfOfQEtUyhAgWxp/Qvlw9RY= Name: res/drawable-xxhdpi-v4/sent_bubble.9.png SHA1-Digest: KdAs5emUzdEgIGy2K1/+aDjasdE= Name: res/drawable/switch_track_holo_light.xml SHA1-Digest: ehEfLsAvoiTHBcWoc6LkpZu3AJs= Name: res/drawable-xxhdpi-v4/abc_ic_menu_cut_mtrl_alpha.png SHA1-Digest: MMbSz4/uGhdnvziZg4e9XLvFodM= Name: res/drawable-hdpi-v4/ic_emoji_emoticons_normal_light.png SHA1-Digest: gY6ENGDAhIy/TJ7GuavgvuEIcmw= Name: res/drawable-xhdpi-v4/abc_ic_menu_share_mtrl_alpha.png SHA1-Digest: yapGdXFczOwfYLF7DNP0aaN/cJs= Name: res/drawable-mdpi-v11/icon_cached.png SHA1-Digest: WSol70AKPymO+ekZisb8wkIhroQ= Name: res/layout/abc_activity_chooser_view.xml SHA1-Digest: d11uhgWLGQufvde+7eDb56ysfKU= Name: res/drawable-xxhdpi-v4/ic_menu_search_holo_light.png SHA1-Digest: VJwbHZDpQuhmErJr0dA/acV913k= Name: res/menu/key_scanning.xml SHA1-Digest: VWVXWVDoPEKSUkvxwbRUcxZB6k4= Name: res/layout-v16/conversation_item_sent.xml SHA1-Digest: /yCrsUvoHLTrGjMYrs4hf6pFT9U= Name: res/drawable-hdpi-v4/ic_emoji_nature_normal_dark.png SHA1-Digest: aupznj5AeeBq4ZgMoj3awvKGjnE= Name: res/drawable-xhdpi-v4/ic_mood_white_24dp.png SHA1-Digest: +bjHZR3nwnfhNnrDuHzsHRYSt48= Name: res/layout-v17/notification_template_big_media_custom.xml SHA1-Digest: Z9irvX+ZFO9iWrgVgqV7AnLQ/Cs= Name: res/layout/media_view_remove_button.xml SHA1-Digest: 7BYliZmJN68yTXwLqRUR7Zh1sfc= Name: res/drawable/conversation_attachment_close_circle.xml SHA1-Digest: g1HIrRmL54DnYsdzyXEclQwlGcU= Name: res/drawable-hdpi-v4/ic_push_gray.png SHA1-Digest: qwDOd8MkzJg2NE2FSkvFji0695U= Name: res/animator/bottom_pause_to_play_animation.xml SHA1-Digest: sGztQN6FsfBHdy/lArM6hyYwIhI= Name: res/drawable-xhdpi-v4/ic_emoji_emoticons_normal_light.png SHA1-Digest: EE2p4bcPFBUfjL3C5+qfXjNxc7A= Name: res/drawable-xxhdpi-v4/switch_bg_focused_holo_light.9.png SHA1-Digest: 8Bdi9UbmuTXrnFgMObpGUILEjXw= Name: res/layout/empty2.xml SHA1-Digest: IM3rg1Lz0mEteG8vDVjHrpIkzV0= Name: res/layout/design_menu_item_action_area.xml SHA1-Digest: MAjBXF+TiqbN8ABwvCY22FbLaDM= Name: res/drawable-v11/emoji_category_symbol_light.xml SHA1-Digest: PlLwcnhZX3fatUFRaaqTl4EKUVg= Name: res/layout-land/calendar_date_picker_dialog.xml SHA1-Digest: 4DDhwL/zYY0LD3vXbx63CiJbBR0= Name: res/color/abc_tint_spinner.xml SHA1-Digest: SJW1ArIZ5Gg0BZUUA+p5I1sV0wI= Name: res/drawable/ic_backspace_dark.xml SHA1-Digest: vF9FMkPaMolfqCsJb/Sfv+5SBJI= Name: res/color-v23/abc_tint_btn_checkable.xml SHA1-Digest: pL2E8PJwKlEZNBwJnEzAGOdaOus= Name: res/layout/keyboard_right_drawable_with_header.xml SHA1-Digest: 7YBuE+1NgS1CgWLvx/MgT2aRKbE= Name: AndroidManifest.xml SHA1-Digest: 7IBTP9znBQHFa28nWpjw8Tg2/2k= Name: res/drawable-xxxhdpi-v4/ic_reply_white_36dp.png SHA1-Digest: pAb2FT+NmH4VNJzIqRY5ynzHWN0= Name: res/drawable-v21/avd_show_password_2.xml SHA1-Digest: k8oF40K3UGPcSOYDsDn3XpL7WFg= Name: res/drawable-hdpi-v9/icon_notification.png SHA1-Digest: gxWj9G+mn7RrswOMWTx3KqDlWz0= Name: res/drawable-xhdpi-v4/sent_bubble.9.png SHA1-Digest: PpPeKJZDE+OFnELluMlghGwM1wY= Name: res/drawable-mdpi-v4/list_selector_background_selected.9.png SHA1-Digest: KwBrnNhffw2ctqQgbBLetHzxQ0I= Name: res/layout/fragment_submit_log.xml SHA1-Digest: iko4zsMoqVEyStIpA6x8AQRs7tI= Name: res/drawable-mdpi-v4/ic_lock_white_24dp.png SHA1-Digest: eM6/Ca/CtwmeqtigzFQg6yeNSEg= Name: res/drawable-xhdpi-v4/textfield_disabled_holo_light.9.png SHA1-Digest: u+PyBkFnG5V7GBXX1PAbySEqGP4= Name: res/drawable-mdpi-v4/ic_push_gray.png SHA1-Digest: lX66OZiM5UocV2fv6a5Q/8CvPKM= Name: res/color/abc_tint_default.xml SHA1-Digest: 5NWuzpmorAh0/ov9AByYREIg4bQ= Name: lib/mips/libcurve25519.so SHA1-Digest: qgVowzBaSoaP+GSRhbrA1rjE2/4= Name: res/drawable-xxhdpi-v4/ic_create_white_24dp.png SHA1-Digest: RfhPAykdREtk24rWpt7Y6cFPPpk= Name: res/drawable/pause_to_play_animation.xml SHA1-Digest: MUwc2Q15c93uaEn9kkkP6yGi8Bc= Name: res/drawable-hdpi-v4/ic_attach_white_24dp.png SHA1-Digest: C8fybOOfDGXaxzaXgPOLB+33VWI= Name: res/drawable-mdpi-v4/ic_emoji_recents_normal_light.png SHA1-Digest: mtWkcSTn40XORuPT7JitlWcEluc= Name: res/drawable/touch_highlight_background.xml SHA1-Digest: E0nAyvgGtm+X7Zl4fIL9bsCc4cQ= Name: res/drawable-xhdpi-v4/ic_play_circle_fill_white_48dp.png SHA1-Digest: M8uau5BNu20fQGSY7qcQ6f8T17E= Name: res/layout-v11/notification_media_action.xml SHA1-Digest: CkAaakbqf4jYotOJaDjwZg8NsTg= Name: res/drawable-xhdpi-v4/ic_warning_light.png SHA1-Digest: 8nDKrfBm2tFrJzuMJ5Ua3GTWWbc= Name: res/drawable-v21/avd_show_password_3.xml SHA1-Digest: gt7hpVcp4EkVi9E+Ha+CR1YLEnY= Name: res/drawable-xxhdpi-v4/ic_forum_grey_32dp.png SHA1-Digest: fsT+RhZObPOxX4RoQaZY9402+sU= Name: res/animator-v11/rotate_90_animation.xml SHA1-Digest: YzPrKibA72xHWsJAnRDFda8WNqk= Name: res/drawable-xhdpi-v4/received_bubble.9.png SHA1-Digest: +GeQlo7tx1PQjC4nJMfJ9I7o6aM= Name: res/drawable-xxhdpi-v4/divet_lower_right_dark.png SHA1-Digest: QyXT0s0vW9257dECSdKBbJbJcrg= Name: res/drawable-hdpi-v4/ic_send_secure_white_24dp.png SHA1-Digest: WI/kUnDCawLuobN/tMTdZhznmds= Name: res/drawable-xhdpi-v4/design_ic_visibility.png SHA1-Digest: llhGqQb01dAZAjbBny5AcnTOn2o= Name: res/drawable-v21/conversation_list_item_unread_background.xml SHA1-Digest: XqYYWhECxEj/NQRflZTLiYgaWFM= Name: res/drawable-xxhdpi-v4/ic_emoji_nature_activated_dark.png SHA1-Digest: 44rlgeG5FLzt6DnaIIL6ABJA94E= Name: res/drawable-xhdpi-v11/icon_cached.png SHA1-Digest: xv4C/SPdVPz1BqbexmssO5m5wpQ= Name: res/drawable-mdpi-v4/ic_emoji_flags_normal_dark.png SHA1-Digest: Qj/u3uhxRZP+VK/+Z5TGEFvOtNI= Name: res/drawable-xxhdpi-v4/abc_text_select_handle_left_mtrl_dark.png SHA1-Digest: lqY9vuhB2Y6PNyO4cqhGHU3U5oE= Name: res/drawable-sw600dp-xhdpi-v13/ic_backspace_disabled_light.png SHA1-Digest: ZTUs4+rwQCv1lnyeFEIZ/LTtTTs= Name: res/layout-v13/database_migration_activity.xml SHA1-Digest: 4Lu3OMDcNHESEO7q+5+vklOmAdA= Name: res/drawable-xxhdpi-v4/ic_movie_creation_light.png SHA1-Digest: 3avYuy1gUqsBtTYWwcQ3xX8TVwo= Name: res/drawable-hdpi-v4/ic_add_white_24dp.png SHA1-Digest: KRHgaTCip00LKkZBaj+tRNRBxB8= Name: res/drawable-hdpi-v4/fab_shadow.png SHA1-Digest: urxZbfLe/2Yp+efwbm06EByfg+w= Name: res/drawable-v21/conversation_list_item_unread_background_dark.x ml SHA1-Digest: kQWRKKADhTzqqod8HS4VFglnQwY= Name: res/drawable-mdpi-v4/ic_info_outline_light.png SHA1-Digest: bSpfJGIqffZUzhrm2KQAq5PWZcA= Name: res/layout-sw600dp-v13/three_keys_view_right_drawable.xml SHA1-Digest: 3UxQ1CMcy/Awo8H7BsWSzYjz0SU= Name: res/drawable-xhdpi-v4/ic_brightness_6_gray.png SHA1-Digest: a1pVZU6D2cQlaEWgopesbgagP4E= Name: res/drawable-xhdpi-v4/abc_text_select_handle_left_mtrl_light.png SHA1-Digest: NMyg1BB4Pz2cvQ21qDTnVO4XKPg= Name: res/drawable-v21/design_password_eye.xml SHA1-Digest: 0z5lKVTTsmwzIox9AxI2XZDgt/4= Name: res/drawable-v11/emoji_category_nature_light.xml SHA1-Digest: 3jnMU7AWp91TmpOTVd8QqDytHZ4= Name: res/anim/slide_to_top.xml SHA1-Digest: 45OutUfVJ6qV4vsLcKjIbCltGPU= Name: res/drawable-xhdpi-v4/ic_emoji_emoticons_activated_light.png SHA1-Digest: ffAuA0TCS0VuJhIviwBP10B8vtE= Name: res/drawable-xhdpi-v4/ic_delivery_delivered_dark.png SHA1-Digest: iMwTCPyaIeLrnuVsWQzH41T2DXs= Name: res/drawable-xxhdpi-v4/abc_list_divider_mtrl_alpha.9.png SHA1-Digest: L4kldLqb9NR6DgoipZDWi2jQHbs= Name: assets/fonts/Roboto-Light.ttf SHA1-Digest: z9omPT1JG8UmPzMe032DUuqIgHc= Name: res/drawable-xxxhdpi-v4/ic_play_circle_fill_white_48dp.png SHA1-Digest: xsX3CduYe2M6cFiULGgZrtFGYa0= Name: res/drawable-xxhdpi-v4/ic_save_all_white_24dp.png SHA1-Digest: Ga5H2uBqKDBhxYd6qVNd9xicD0g= Name: res/layout/abc_alert_dialog_title_material.xml SHA1-Digest: JrY9ZYOkd6vkSu9aWGp4FObinoQ= Name: res/drawable-mdpi-v4/abc_scrubber_track_mtrl_alpha.9.png SHA1-Digest: fCw4/3GZJ6HvBRrlhVpfPdRbS48= Name: res/layout/import_export_fragment.xml SHA1-Digest: iyi5Y1njPnk/hKgkJrKdN/85UWM= Name: res/drawable/spinner_background_holo_light.xml SHA1-Digest: xCke46CrQrXfmojAbPIr4ODOHcc= Name: res/drawable-xhdpi-v4/fab_shadow_mini.png SHA1-Digest: a/sbG72ElizD4BCcegQYSqBmP4k= Name: res/drawable-xxhdpi-v4/abc_ic_star_black_36dp.png SHA1-Digest: 4JsTvfBdbaRSqVTy3mD7njRhb4s= Name: res/drawable-hdpi-v4/ic_missing_thumbnail_picture.png SHA1-Digest: NsUwvvdHHjfhLcuy5Cju9pM7uqQ= Name: res/layout-v17/abc_search_view.xml SHA1-Digest: h0EM0StoVFk6mqeuOaQFwX3xq4k= Name: res/drawable-mdpi-v4/ic_emoji_objects_activated_light.png SHA1-Digest: l0NabfIDi6pqTPGty4K97JYQjyw= Name: res/drawable/conversation_list_item_unread_background.xml SHA1-Digest: AsA+NB0zaiiLbn83PXUIuNRXFY0= Name: res/drawable-hdpi-v4/abc_textfield_search_default_mtrl_alpha.9.p ng SHA1-Digest: VtmcSWaUIf6+DhHt/mnXkgUFXH4= Name: res/xml/badge_widget_provider.xml SHA1-Digest: LsJqn1nWU4h8RLWEzbA/V6EicCo= Name: res/drawable-ldrtl-xxxhdpi-v17/abc_ic_menu_copy_mtrl_am_alpha.pn g SHA1-Digest: ku1x+FSTuug9J98a2Pyp41uY6hU= Name: res/drawable-xxhdpi-v4/ic_badge_24dp.png SHA1-Digest: JBOTu5IsmntHowwu9e/zjoaWCHw= Name: res/drawable-mdpi-v4/ic_play_circle_fill_white_48dp.png SHA1-Digest: /uRMGGxF+sOCAzRp9uChhsJB1XA= Name: res/drawable-mdpi-v4/ic_emoji_symbols_activated_light.png SHA1-Digest: Tf66Xu0ryQTG7WWGNuG6b1rhzSo= Name: res/drawable-mdpi-v4/ic_backspace_normal_dark.png SHA1-Digest: xrvbueJnGuy7cXpAwlPELU6TQbw= Name: res/layout/design_bottom_navigation_item.xml SHA1-Digest: KApZ/A8qcI7DERPlgu57owrb24Y= Name: res/drawable-mdpi-v4/abc_text_select_handle_left_mtrl_light.png SHA1-Digest: jEtv5fNe5zMTwAdDEwTqqcIg9Bo= Name: res/drawable-xhdpi-v4/ic_check_normal_dark.png SHA1-Digest: id0GOEomTYZmQove2BYkq+Aaxu4= Name: res/layout/radial_time_picker_dialog.xml SHA1-Digest: VWueYQ9Pg7GzwSaRPzMr//4qhS4= Name: res/xml/preferences_chats.xml SHA1-Digest: ubYPAyIXyng1+PL91/YsEpd4yZQ= Name: res/drawable-xhdpi-v4/ic_menu_add_field_holo_light.png SHA1-Digest: 4qhWi7dfFyiswnx3DLEcu2LjxKY= Name: res/drawable/background_pattern.png SHA1-Digest: jf+Ousfom0Sy7n4UojJP8Tl+1Q8= Name: res/layout/abc_popup_menu_item_layout.xml SHA1-Digest: e/3HrZPNigFwLM6o71EyUba5qdU= Name: res/drawable-hdpi-v4/ic_download_circle_fill_white_48dp.png SHA1-Digest: XJ3foMGdZHO9k/ogu3qCjm0T4kQ= Name: res/layout/hms_picker_view.xml SHA1-Digest: Bfabx6v4Ye7Z8+y+MxNXjZjy4gQ= Name: res/drawable-mdpi-v4/ic_emoji_people_normal_dark.png SHA1-Digest: 550x1oOfcFdLIWXiKicI8Q9koPg= Name: res/drawable-mdpi-v4/ic_account_box_light.png SHA1-Digest: 63xcUi3qw7O4z7lBPDQ2lyQ2it8= Name: res/layout/media_overview_activity.xml SHA1-Digest: DE0hCTjpLY24k2I3p8pVHPsCJhY= Name: res/drawable-hdpi-v4/ic_save_all_white_24dp.png SHA1-Digest: rs/B/BxQ/hdXkBjmqTq0OYriDRk= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_84 SHA1-Digest: RXg8ZCyGT2W/pQDo6jOOCucmFYE= Name: res/drawable-hdpi-v4/design_ic_visibility.png SHA1-Digest: /v0kpQ1j5mTM2XhSiofpFxtnVB0= Name: res/drawable-xhdpi-v4/abc_btn_check_to_on_mtrl_015.png SHA1-Digest: nmJdfiNISdfmbhXzZPqmMVghsi8= Name: res/layout-v16/verify_identity_activity.xml SHA1-Digest: 1Vo8qWyzSua09sH8qcQKGAbGSLc= Name: res/drawable-xhdpi-v4/switch_thumb_pressed_holo_light.9.png SHA1-Digest: VTcVro7tRSB7dCiFLkcjEK1gte8= Name: res/drawable-xhdpi-v4/abc_ab_share_pack_mtrl_alpha.9.png SHA1-Digest: n3rquhXmVYjYpHMG9RG+SAJc+rA= Name: res/drawable-ldrtl-xxxhdpi-v17/abc_spinner_mtrl_am_alpha.9.png SHA1-Digest: IiQ92KKKcRVz1q2BpPfR0GMDdtA= Name: res/drawable/notification_bg.xml SHA1-Digest: inV7SLogUBJZh+fioqpUMrGI5ys= Name: res/drawable-mdpi-v4/ic_message_black.png SHA1-Digest: XONTB0EheJN6Y0Tk/oZV9xuMrgE= Name: res/drawable-hdpi-v4/abc_ic_star_black_16dp.png SHA1-Digest: x902XiMoneAAmor81DbeuuMoYo8= Name: res/drawable-hdpi-v4/abc_textfield_default_mtrl_alpha.9.png SHA1-Digest: Rmk8UREagQdf47LncSS6fq9RbAo= Name: res/drawable/abc_ic_arrow_drop_right_black_24dp.xml SHA1-Digest: 0ovJ6X1/yGYcWSv7KAif8aiFzgo= Name: res/drawable-xxhdpi-v4/ic_refresh_white_18dp.png SHA1-Digest: eyBOpIskeHEHN+nVbRODD11snoc= Name: res/layout/design_layout_tab_text.xml SHA1-Digest: SIz1wfljARNQwBdK8NWsBSfi3dc= Name: res/color/design_tint_password_toggle.xml SHA1-Digest: nbryhDBq0BMU8ljp7cpVWU+9ZFo= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_81 SHA1-Digest: A1I5nxwmM7Cjx2rfURezn1a/kIM= Name: res/color/design_error.xml SHA1-Digest: VN6gMqWm3MTl2CIOHZrGVo8LQEQ= Name: res/layout-v21/conversation_fragment.xml SHA1-Digest: 6J/DzJSUjJEKzW0Jg/5fEMwTq34= Name: res/drawable-mdpi-v4/ic_keyboard_white_24dp.png SHA1-Digest: C6WoVhStJ78OHjddSQ1hiVKfzlI= Name: res/drawable/last_seen_divider_text_background_light.xml SHA1-Digest: Ul0NPZmH9ZneiNyrb/06iwknEHY= Name: res/drawable-xxxhdpi-v4/fab_shadow_mini.png SHA1-Digest: z0yIZFkPA9uo98ME+c7hYQWjXMI= Name: res/drawable-xxxhdpi-v4/ic_arrow_forward_white_24dp.png SHA1-Digest: 2M3A5LhILbVRYwellmh5yDtMgXs= Name: res/drawable-mdpi-v4/textfield_focused_holo_light.9.png SHA1-Digest: HZ9iQgcyhTz2F7RRfnq0smD0pLo= Name: res/drawable-ldrtl-mdpi-v17/abc_spinner_mtrl_am_alpha.9.png SHA1-Digest: nXZ4V1mFaOHaCmrZgjirnAh+5fg= Name: res/color-v11/abc_hint_foreground_material_light.xml SHA1-Digest: IFfq6CDFKWH4V76zx2clnsqSalw= Name: res/drawable-xhdpi-v4/abc_text_select_handle_middle_mtrl_dark.pn g SHA1-Digest: yfAguILD5aQrWq/KdWarpxXTKb0= Name: res/color-v23/abc_btn_colored_borderless_text_material.xml SHA1-Digest: DmroyQoPzNOJOorwtew2WEsQr08= Name: res/drawable-hdpi-v4/fab_shadow_mini.png SHA1-Digest: ulgb8PFS0FBM+8t64mYseonic74= Name: res/drawable/emoji_category_objects_light.xml SHA1-Digest: WKttpPtRpX6qMo4nYwqVlC6+RlI= Name: res/layout/emoji_drawer.xml SHA1-Digest: QD7D8QJ4kauvhmEPLmXleoEU/zY= Name: res/drawable-xxhdpi-v4/ic_menu_remove_holo_light.png SHA1-Digest: Hf0tLw73DTiA5ARoJff4Mu2sRkg= Name: res/color/abc_search_url_text.xml SHA1-Digest: mgOeEFdKIOmQBIiUEKXZ+y4FBn8= Name: res/layout-land/radial_time_picker_dialog.xml SHA1-Digest: ermst0JTCZ8NcgoQK6T2MUfpcLM= Name: res/layout/calendar_date_picker_dialog.xml SHA1-Digest: JW7fq1c9kaT0wG58A+Gnb6MzRkU= Name: res/drawable-mdpi-v4/abc_scrubber_primary_mtrl_alpha.9.png SHA1-Digest: eF/LuENYUMfZZS3fHrJi1byAVZU= Name: res/drawable-xxxhdpi-v4/ic_unarchive_white_36dp.png SHA1-Digest: x1jt5NVel5ImQ6leOJH2slbEXiU= Name: res/drawable-v11/edit_text_holo_light.xml SHA1-Digest: c7kQ51Lq+a7ZnX0hxv4Ar/AGXBA= Name: res/drawable-mdpi-v4/ic_video_light.png SHA1-Digest: dnsYkAg2UoYNYsMuC472jETNYiM= Name: res/drawable-mdpi-v4/ic_info_outline_dark.png SHA1-Digest: Z6+bkPmQKJPQiU3cmT9sz/TqIb4= Name: res/drawable-mdpi-v4/abc_menu_hardkey_panel_mtrl_mult.9.png SHA1-Digest: nuld1RomiGBKqE5EsGnC+AbnNZ4= Name: res/drawable/dialog_background.xml SHA1-Digest: IcoPMLhS51+d0m1LQoLCmVU7jlo= Name: res/drawable-xhdpi-v4/abc_btn_switch_to_on_mtrl_00001.9.png SHA1-Digest: 6jnEZnvF6Wf/iso9scq8BExu9D4= Name: res/color/abc_secondary_text_material_dark.xml SHA1-Digest: VOKwFxcyYLgm73Ve4W6WEInTWec= Name: res/drawable-hdpi-v4/ic_notifications_gray.png SHA1-Digest: F9T+s5F1UrZYIGRUeHMHI6P868s= Name: res/layout-v17/notification_template_lines_media.xml SHA1-Digest: 4NVmpeYrD66piDRF9hNgynINL+U= Name: res/drawable-xxhdpi-v4/ic_contact_picture.png SHA1-Digest: nc4ws16xOfkKzFG5l8XN7Dgae8M= Name: res/layout/design_navigation_menu.xml SHA1-Digest: ukHjw6xaRQ5PkWljLcrkNy7Zn58= Name: res/layout-v17/abc_popup_menu_item_layout.xml SHA1-Digest: rGUyJKgrpE0AI0G5Po2rWnZpOsI= Name: res/drawable-xhdpi-v4/abc_ic_star_half_black_36dp.png SHA1-Digest: jz/B6EDUP81CMkk6OyDhBLizPLY= Name: res/drawable-hdpi-v4/ic_send_white_24dp.png SHA1-Digest: miDa5p2kSfS26Ry3tkIO1JFi/6E= Name: res/drawable-hdpi-v4/ic_done_white_18dp.png SHA1-Digest: jVtoFesoojMic3mQ3HzsqLUMirk= Name: res/menu/conversation_list_batch_archive.xml SHA1-Digest: /sRRtPJlCyQnM51wHqCoRmIZAek= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_94 SHA1-Digest: W0CSkKs60WzDI0QUZ1mhx6CmIPI= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_95 SHA1-Digest: owiIKf9pjSZoNZMs63sucQc8p64= Name: res/layout/share_intent_row.xml SHA1-Digest: /qI4T5Xw817feCxvMolDV866zmY= Name: res/xml/preferences_notifications.xml SHA1-Digest: S0e/C8cCZslhZLxwy30EYr5l5D8= Name: res/drawable/notification_icon_background.xml SHA1-Digest: W3i7jt5Pavj518bWIUVG8PRBQ3I= Name: res/drawable-xhdpi-v4/switch_bg_focused_holo_light.9.png SHA1-Digest: OIa2+0APqiitnkIjp1qmRxaODoE= Name: res/drawable-xxhdpi-v4/ic_info_outline_light.png SHA1-Digest: RWrz7w+g7OnrbVMf3wNJnVcQZLc= Name: res/layout/prompt_passphrase_activity.xml SHA1-Digest: 6FiLZ+pqHKv0TwZE6SftRX0zT3g= Name: res/drawable/button_background_light.xml SHA1-Digest: 6V7KWIGPftLpVqdHModNEVbbYEA= Name: res/drawable-v11/emoji_category_flags_dark.xml SHA1-Digest: Ea7jGoDtsl9tk/MSigQEQHYAAFc= Name: res/drawable-xhdpi-v4/alert.png SHA1-Digest: VnyUO6MNfl9DN4ulAmyGzyZzrUg= Name: res/layout-v16/calendar_date_picker_header_view.xml SHA1-Digest: 4E+gsH/vmjzH9Fb9y+N9/fy7FqI= Name: res/layout/contact_selection_activity.xml SHA1-Digest: BoBPqDIoK6TIyiddmkBzZzh2PaE= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_91 SHA1-Digest: 4FrcOuE406a6sLJ2iX+nQ0towuo= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_90 SHA1-Digest: xmD9UZpmrXmHXGBwgKcnUgG3prY= Name: res/drawable-xxhdpi-v4/ic_message_gray.png SHA1-Digest: FM0SgppOLNYekXyH7s7y65qy0Eg= Name: res/menu/conversation_list.xml SHA1-Digest: paS/IQBsFMNRIIpyauMfigaYuVc= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_49 SHA1-Digest: 5u8Emu23ipjQSHPDBp+rNN5gLes= Name: res/drawable-mdpi-v4/ic_save_white_24dp.png SHA1-Digest: CTvZxHcXz4WQcVzU5MgcNzoWhrw= Name: res/drawable/compose_divider_background.xml SHA1-Digest: TaNBJJg7z7cx4qEtNifzBNqTRCo= Name: res/drawable-xxhdpi-v4/ic_action_warning_red.png SHA1-Digest: DiY5Iib3+U2SZmokiRxU9aII0oA= Name: res/drawable-mdpi-v4/textfield_disabled_holo_light.9.png SHA1-Digest: y0PPuveb+rmvZE0XoVdCwXnL0Yk= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_44 SHA1-Digest: TVnQ8NXIFuFz2qYs35e/XIiGJek= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_43 SHA1-Digest: YwmvuPrm5iistAma7bavl8QEvkw= Name: res/drawable/ic_check_light.xml SHA1-Digest: tct7jdk7izG4C835TjRCIr7EVOA= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_39 SHA1-Digest: GwstlZcw4BzlZVzFB96jvV7cCZU= Name: res/drawable-hdpi-v4/ic_menu_search_holo_dark.png SHA1-Digest: cpjUnuXseXeegZHwQG7JZa8HqaU= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_36 SHA1-Digest: Q6P0BgyIFO14RidwktMDzIKtUAc= Name: res/drawable-xxhdpi-v4/ic_emoji_symbols_activated_light.png SHA1-Digest: lMC9QAxWQz9KeWUC0xEBc5pKXBo= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_31 SHA1-Digest: r/DBDrMghpy33Q11YD6SwLXaCCg= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_30 SHA1-Digest: zX3yz7FhjbZayv9D47R7u97JH+E= Name: res/drawable-xhdpi-v4/ic_volume_up_light.png SHA1-Digest: Ml/mEuVtsf/hO3+boEno2nw5ldk= Name: res/drawable-xxxhdpi-v4/abc_ic_menu_cut_mtrl_alpha.png SHA1-Digest: HYDPd61Ck9Ifum3cvWl+fOfD9xk= Name: res/drawable/notification_bg_low.xml SHA1-Digest: 22SYjMhzjkMiHHELUtuy6uYI0EU= Name: res/drawable-xhdpi-v4/ic_visibility_grey600_24dp.png SHA1-Digest: rsZYHEAucgs+0D7w1hJFv4VVIYY= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_34 SHA1-Digest: QJCaGbU/lFnE77x7YIoqtsjah/M= Name: res/drawable-xxhdpi-v4/icon_cached.png SHA1-Digest: ADOq8ZSSoqUxZumCMwIwLAiXaX4= Name: res/drawable-xxhdpi-v4/abc_btn_check_to_on_mtrl_000.png SHA1-Digest: Syjf1WOGXYnoSy9XVDy49z2PpVc= Name: res/drawable-mdpi-v4/ic_brightness_6_black.png SHA1-Digest: NDjKISb8k2SICUl/bOuTxMEgAqU= Name: res/drawable/design_fab_background.xml SHA1-Digest: RnDZ4YODuNg44An4VRSM13iDsgI= Name: res/drawable-xxhdpi-v4/ic_account_box_light.png SHA1-Digest: /N6llAIhrlw2YQNIxiJp4CDO1vI= Name: res/drawable-hdpi-v4/ic_delete_black.png SHA1-Digest: WPk50dgPU79B3wWF/bHdMDoXiBI= Name: res/layout-sw600dp-v13/three_keys_view_text.xml SHA1-Digest: HcqqebIe5IczAB9EHSyWkzSizhY= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_66 SHA1-Digest: sAk8V+6UnOy3rXvWnM6/28B9JCM= Name: res/animator-v11/upper_pause_to_play_animation.xml SHA1-Digest: 63IcO2AyaIcRtq5+lM6ichKDMzc= Name: res/drawable-xxhdpi-v4/ic_select_all_white_24dp.png SHA1-Digest: 0nwBYEUkMnH0RBueAHaPuj2qxqc= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_62 SHA1-Digest: 1Noowsqek546G7Ohzzvb11nDfDo= Name: res/drawable-hdpi-v4/abc_ic_menu_selectall_mtrl_alpha.png SHA1-Digest: hFfrmpffeUhFY9P1rmOGIFG2AzQ= Name: res/drawable-hdpi-v4/ic_dialpad_white_24dp.png SHA1-Digest: 7vQAxqeBS9GbalGsUuIHf9/zcbs= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_61 SHA1-Digest: y6DIvaz5WnaAn2TRzoK2bvfLQ7o= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_63 SHA1-Digest: z55xt2Ayw/sf1cZS1n7htuZln00= Name: res/drawable-hdpi-v4/ic_recurrence_bubble_outline.png SHA1-Digest: f9uw5y2KnxQNrG1es6CoBFBqBHs= Name: res/drawable-mdpi-v4/icon_lock.png SHA1-Digest: WteLaSMqiN9bmBnpeXU1mwSa3fI= Name: res/drawable-xhdpi-v4/abc_btn_switch_to_on_mtrl_00012.9.png SHA1-Digest: Lr8CV2APFenrT2CnF18DHzPxPmc= Name: res/layout-v17/abc_alert_dialog_button_bar_material.xml SHA1-Digest: u9IMbu9+yIpomdhnGc9HxebDDZ4= Name: res/drawable-xhdpi-v4/abc_list_selector_disabled_holo_light.9.pn g SHA1-Digest: 55f4pDcLSMwJ2///c7EjaRD4TtY= Name: res/layout/abc_action_bar_title_item.xml SHA1-Digest: QzmSVkZhkH/CGOFdlrZ9s21SgS8= Name: res/layout/color_preference_items.xml SHA1-Digest: xVhV4MgGbJBF6h9TueYdJHa7hq4= Name: res/layout/notification_template_part_chronometer.xml SHA1-Digest: N3bpzPkHEH/egwMXsQQ5MXKZrfM= Name: res/drawable-xxhdpi-v4/ic_emoji_nature_normal_light.png SHA1-Digest: 0jiwcjLEKePMy8m0RMoIhT4ocWg= Name: res/layout/zooming_image_view.xml SHA1-Digest: wjmUQd8KKCMX7JN384NxM9U03W4= Name: res/animator/upper_play_to_pause_animation.xml SHA1-Digest: 1TOkjm6F2/DzGTLmzL7Ol4HlHJM= Name: res/drawable-hdpi-v4/ic_send_insecure_white_24dp.png SHA1-Digest: jcPOs6NbnJ2g4wWmsSf9mQfzv5o= Name: res/drawable-mdpi-v4/ic_volume_off_grey600_18dp.png SHA1-Digest: kI7nw769qk2yR3SPs8rgcvoqq0w= Name: res/drawable-xhdpi-v4/ic_photo_camera_dark.png SHA1-Digest: ngJmjiQc3w1O0KPlXZbXufep6Zg= Name: res/drawable-mdpi-v4/abc_ab_share_pack_mtrl_alpha.9.png SHA1-Digest: EYD0L7FYlUYj4vZvX1mmqzIwLBE= Name: res/drawable-xhdpi-v4/ic_block_white_18dp.png SHA1-Digest: 9z2lHTtH/PPnEg81YtRrU2ZFm+o= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_58 SHA1-Digest: hkt/emROO5dafVOiI7Zx7fKidEI= Name: res/drawable-hdpi-v4/ic_emoji_flags_normal_dark.png SHA1-Digest: l4ASGy17UUsb7ymwG5cl6ndH71I= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_55 SHA1-Digest: fv4z5lbCDxm8xUvQIY8+gDq08Nk= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_54 SHA1-Digest: EjExNy18aod1tZNDB5Mvc+z5EJs= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_52 SHA1-Digest: GfA+N9jSreUFUdFVVb+RZfhngSI= Name: res/drawable-xxhdpi-v4/ic_warning_dark.png SHA1-Digest: D1uEsGlc/SRlmOvLMXa4vPQeaeA= Name: res/drawable-xxhdpi-v4/ic_delivery_delivered_dark.png SHA1-Digest: Q52p/VabHg+UfldUrx4S5s8j9zg= Name: res/drawable-hdpi-v4/ic_brightness_6_black.png SHA1-Digest: WJnVdOMWsjuVdEtW9GXmA1T6DnI= Name: res/anim/abc_popup_exit.xml SHA1-Digest: 6uAxkSAqOnz6wM+5oio7//G38vY= Name: res/drawable-hdpi-v4/abc_scrubber_track_mtrl_alpha.9.png SHA1-Digest: bbu4U1Z2FReSVaAwtf9Uj+pAXxA= Name: res/drawable-xhdpi-v4/abc_switch_track_mtrl_alpha.9.png SHA1-Digest: xe5aMoZuNGwGdXksGOYPSE3NVpk= Name: res/drawable-xxhdpi-v4/ic_cancel_white_24dp.png SHA1-Digest: uIPdERWoB0Xbmn7TtJ53Yt6T8lU= Name: res/drawable-mdpi-v4/ic_done_all_white_18dp.png SHA1-Digest: 6RtNXtvHEJtyBGz7CC+8pcu+2k8= Name: res/drawable-mdpi-v4/ic_brightness_6_gray.png SHA1-Digest: qvlbB6O1T6oNI0cJQ+TLEQOAUCc= Name: res/drawable-xhdpi-v4/ic_emoji_flags_activated_light.png SHA1-Digest: YohQNFrhXEWY8IR4TwCKjPYIPz4= Name: res/drawable-mdpi-v4/design_ic_visibility_off.png SHA1-Digest: ipLLCgBkk/K/KbY3zZsJ8rEwkqc= Name: res/drawable-hdpi-v4/ic_photo_camera_light.png SHA1-Digest: bfG4OOhLunHje5La/8WZ2Tm+2Js= Name: res/drawable-hdpi-v4/ic_image_light.png SHA1-Digest: nxC2CR2PJMIo6QwSZvh9JIlrvD4= Name: assets/emoji_symbols.png SHA1-Digest: XE9qEioRlR74jFdnavx4j39xY3k= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_675 SHA1-Digest: Egbq8VQn3A6YTmNLqQtbJWXPR8Q= Name: res/drawable-xhdpi-v4/ic_done_all_white_18dp.png SHA1-Digest: +vPvdEMP/fdCA6U51cIygAU9BxM= Name: res/drawable-xhdpi-v4/ic_delete_gray.png SHA1-Digest: 9BGTYrElt+IOXRoukCyrJru6/EQ= Name: res/drawable-xxhdpi-v4/ic_textsms_grey_32dp.png SHA1-Digest: w7FTP8fokSOQc5a18rh5ZAnyeBw= Name: res/drawable-mdpi-v4/ic_lock_white_18dp.png SHA1-Digest: pBQx290amd9nTX5NiMqlPcL3v1o= Name: res/drawable-hdpi-v19/switch_thumb_pressed_holo_light.9.png SHA1-Digest: K3YgpyXSgJr++z61OECZhndc9kM= Name: res/drawable-hdpi-v4/ic_emoji_recents_normal_light.png SHA1-Digest: dO0i3/TnoJlyPzUsORXFNVSttVg= Name: res/drawable-mdpi-v4/ic_send_secure_white_24dp.png SHA1-Digest: S4iduCbVpmJnEpp0TrtDu0tibZA= Name: res/drawable-xxxhdpi-v4/ic_block_grey600_18dp.png SHA1-Digest: Y5lhWQ5y7+bHF0sQgxkxtsQaf2s= Name: res/drawable-xhdpi-v4/switch_thumb_disabled_holo_light.9.png SHA1-Digest: ljpsvOw3MQTa68v5CQddL5JUS+A= Name: res/drawable-xhdpi-v4/ic_info_outline_white_24dp.png SHA1-Digest: ohuZr+SPmjW9HPIu+b8s3HtsmCs= Name: res/layout-v16/conversation_item_pending_v11.xml SHA1-Digest: 3uW3DbHLcnvjpSvvoxu1+oy04gc= Name: res/drawable/design_snackbar_background.xml SHA1-Digest: 9Xn8nraZC6Vcz6OSelNnzt+1PV0= Name: res/drawable-xhdpi-v4/abc_scrubber_control_off_mtrl_alpha.png SHA1-Digest: B2HfhtZm7f+8V429AdZbU7mrLo8= Name: res/drawable-hdpi-v4/ic_create_white_24dp.png SHA1-Digest: wtYt9ob7eMgSOIyEUvlDncpuCCU= Name: res/layout/key_caching_notification.xml SHA1-Digest: Q3VhQitFF+cVcnu1P7hMzsahwNI= Name: res/drawable-xxhdpi-v4/textfield_activated_holo_light.9.png SHA1-Digest: v1cd6v0pRkDauAh+/cr18dBMykA= Name: res/drawable-xxhdpi-v4/ic_movie_creation_dark.png SHA1-Digest: hq/HDlKrkU+CD/2b1avbgug0cvY= Name: lib/armeabi/libcurve25519.so SHA1-Digest: nEVHde0KFMHgixmh+GIOePj6EWY= Name: lib/x86/libcurve25519.so SHA1-Digest: H5Egy82jimewQZPkEoJOFBJrWiE= Name: res/drawable-mdpi-v4/ic_menu_search_holo_light.png SHA1-Digest: 6htuxL+VQAoB64kEmH2Kj0/iC0E= Name: res/drawable-xxhdpi-v4/abc_textfield_search_activated_mtrl_alpha .9.png SHA1-Digest: WQ8PqUvvH8nOnzNH5uPMzVsVa+Q= Name: res/drawable-hdpi-v4/abc_ic_star_black_48dp.png SHA1-Digest: QbDpX67R5eyTWuNm150bgcl3Sgw= Name: res/drawable-mdpi-v4/abc_text_select_handle_middle_mtrl_dark.png SHA1-Digest: l6V40h1Kq8Tu3O9lUBPWpUqJtoc= Name: res/drawable-xxhdpi-v4/ic_lock_dark.png SHA1-Digest: NFzTV/6qvcpJans9yAngc04n9eA= Name: res/anim/abc_fade_in.xml SHA1-Digest: wE1QEZhFkLBWMw4TRtxPdsiMRtA= Name: res/drawable-xxxhdpi-v4/ic_archive_white_24dp.png SHA1-Digest: /ApVfvY7TZ7UT1V1/bHQ1w9LsWs= Name: res/drawable-hdpi-v4/ic_volume_off_grey600_18dp.png SHA1-Digest: FIVzTZsmvBIpwjzWaajuDk8CFGU= Name: res/drawable-sw600dp-hdpi-v13/ic_backspace_normal_dark.png SHA1-Digest: f4M6VvhQl88T3RVSBKSNc68yPyk= Name: res/drawable-xxhdpi-v4/ic_recurrence_bubble_outline_disabled.png SHA1-Digest: w1Z6Ozki8nTQaPLHtp4Di5h/gok= Name: res/layout/abc_search_dropdown_item_icons_2line.xml SHA1-Digest: loHBySvilcR0ZDgxQ9eAttNBuHM= Name: res/layout/abc_screen_simple.xml SHA1-Digest: wcPlv/nr5pkFN65VKYp3t34HJzY= Name: res/layout-v17/conversation_title_view.xml SHA1-Digest: E2oUf4eLPGUwwEmq1Cllhbls214= Name: res/layout/conversation_item_sent.xml SHA1-Digest: 9UHjMglE9L9EerONxG5mTuBqo6A= Name: res/drawable/share_list_divider_shape.xml SHA1-Digest: oze/+hk+C+xljs/Mpyq1oVRhM1Y= Name: res/drawable-hdpi-v4/abc_text_select_handle_right_mtrl_light.png SHA1-Digest: zwcMW0GH3RqmlBghFwMH6OEhqXQ= Name: res/drawable-xhdpi-v4/ic_pause_circle_fill_white_48dp.png SHA1-Digest: CVaieu6GpA9k9kxl3q7rTb4UYYU= Name: res/drawable-xxhdpi-v4/design_ic_visibility_off.png SHA1-Digest: PlrfwchzE7z/k1/X+4BUE0VacAY= Name: res/drawable-hdpi-v4/ic_emoji_symbols_activated_dark.png SHA1-Digest: pvBThWhMdTa9M3bExnEkZK73MGc= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_255 SHA1-Digest: GR5suOXxRCRSaPOoEXvpBezuIsM= Name: res/drawable-xxhdpi-v4/abc_list_focused_holo.9.png SHA1-Digest: qCddjZI8yABkWFvWCWlg+bQVD7M= Name: res/drawable-xxhdpi-v4/textfield_disabled_holo_light.9.png SHA1-Digest: 8uAr5Lt4boLAicIMjYMnfGSIX3w= Name: res/drawable-hdpi-v4/ic_menu_barcode.png SHA1-Digest: /8U9t3Qy9/S8IxwFbzkiqnSfQN8= Name: res/layout-v21/notification_template_custom_big.xml SHA1-Digest: LS7+cQspjhKEwdQsTahMw+haArU= Name: res/drawable-xxhdpi-v4/sms_system_import_icon.png SHA1-Digest: u8BglbLgaKCMbPyu2Fk8HHsEb3U= Name: res/drawable-xxxhdpi-v4/transfer_controls_background.9.png SHA1-Digest: eBXpns72mgHZbdQjLQLPnbzbCqo= Name: res/color-v23/abc_tint_edittext.xml SHA1-Digest: XnHYiEdQh7sZ+aQwfddZYqipJNo= Name: res/layout/conversation_title_view.xml SHA1-Digest: QxEoar7Oh/SO2HIYUpNRM1psNqE= Name: res/drawable-mdpi-v4/ic_emoji_recents_activated_dark.png SHA1-Digest: x5kFiFfBeI4gfPvnGuKZRnIVgi0= Name: res/drawable-xhdpi-v4/abc_list_pressed_holo_light.9.png SHA1-Digest: 4CNgdraLjH84scvRJUfzItc3PbA= Name: res/drawable-xxxhdpi-v4/ic_forum_black_32dp.png SHA1-Digest: eJFu4ty1Y+n1Kkwbcs+Kk/ogaME= Name: res/drawable-mdpi-v4/ic_clear_white_24dp.png SHA1-Digest: yNBPrtJwCZAL8kzkOTtUs+nlZic= Name: res/drawable-xxxhdpi-v4/abc_ic_star_half_black_36dp.png SHA1-Digest: QX+e7+1s5MHT2dUAaC7VUR+efz4= Name: res/layout-v17/notification_template_big_media_narrow_custom.xml SHA1-Digest: 484cKP4O32SZ90cmD99/AMvzJGs= Name: res/drawable-mdpi-v4/ic_advanced_gray.png SHA1-Digest: hKAQATuQ9Hfgy7kRH+Blepsttsk= Name: res/menu/conversation_list_batch.xml SHA1-Digest: VsKmzXOd1qCHb7daXAwYd+ZxTMY= Name: res/drawable-hdpi-v4/textfield_disabled_holo_light.9.png SHA1-Digest: DMgBrgDQzsNJNgByJKxx8cQ1G48= Name: res/drawable-xhdpi-v4/fab_shadow.png SHA1-Digest: u4AjjXO/B15x/thNhKzE1yUPWJw= Name: res/drawable-hdpi-v4/abc_btn_check_to_on_mtrl_000.png SHA1-Digest: qohFhg6cHeSRc5iV72L4bfUwcjM= Name: res/drawable-xxhdpi-v4/ic_block_white_18dp.png SHA1-Digest: dl8Q1j2xp1eDvyiDdX8aWsrf3w4= Name: res/drawable-hdpi-v4/ic_check_white_24dp.png SHA1-Digest: PcMRcVMKp3TNAr0vXLbxQo98W0g= Name: res/drawable-xhdpi-v4/ic_volume_off_white_18dp.png SHA1-Digest: unTCKvTLaI3OtXUhb0MBtR/LYXg= Name: res/drawable-xhdpi-v4/ic_emoji_emoticons_activated_dark.png SHA1-Digest: jlfodHPaYKBJF8uY+2oGqQYV01Q= Name: res/drawable-xhdpi-v4/ic_warning_dark.png SHA1-Digest: /Pz/2YqdiI+6JZuf3PjPmZHJfCs= Name: res/drawable-xxxhdpi-v4/ic_unarchive_white_24dp.png SHA1-Digest: pcY8XnRaYgqxWMnB51jCtO6EPlM= Name: res/drawable-hdpi-v4/ic_visibility_off_grey600_24dp.png SHA1-Digest: SY0HrM3WEh/fL3xG9vqRHex/Gmg= Name: res/drawable-v11/emoji_category_recent_dark.xml SHA1-Digest: 72TtZirKpfYUmBHYB1jXqck4b2o= Name: res/layout-v21/conversation_title_view.xml SHA1-Digest: Pbf7I6lbd/dAn9Aw8qYCtQhQd0E= Name: res/drawable-xhdpi-v4/ic_emoji_symbols_normal_dark.png SHA1-Digest: Qg4qhV+3W7kY6vC3Q9cwvnyj46w= Name: res/drawable-xxhdpi-v4/ic_visibility_off_grey600_24dp.png SHA1-Digest: EMdNrmJoDjeay7cUBHlX0b1lhbE= Name: res/drawable-mdpi-v4/ic_content_copy_light.png SHA1-Digest: G4hoGZhtM2+rT9QAyilbCKfnbOU= Name: res/drawable-mdpi-v4/abc_ic_menu_selectall_mtrl_alpha.png SHA1-Digest: xtSRUA6yPL0pgx6e3nVwE/7dLxw= Name: res/drawable-hdpi-v4/ic_group_photo.png SHA1-Digest: nwCmWxGD6l0rTt3McSY3ocjDX+g= Name: res/menu/conversation_list_empty.xml SHA1-Digest: /kPBckj2D9elLCRpFOgpv0BZPBQ= Name: res/drawable-hdpi-v4/ic_backspace_disabled_dark.png SHA1-Digest: poOmHvJuBZ1uvPEANwZvD2LZUPI= Name: res/drawable-v11/emoji_category_objects_light.xml SHA1-Digest: 0mfjchr4HIqg2LJUtn4hINkhVdI= Name: res/drawable-xhdpi-v4/ic_emoji_recents_normal_dark.png SHA1-Digest: pc7ZjWa6ugeu91Y4N8eXss/bLZE= Name: res/drawable-mdpi-v4/notify_panel_notification_icon_bg.png SHA1-Digest: y9fFL7ZwxVmqnnOis/943Gj9mHg= Name: res/drawable-xxhdpi-v4/ic_emoji_emoticons_normal_dark.png SHA1-Digest: jRiMqBvgouoMECLzB/qztT2moII= Name: res/drawable-xhdpi-v4/divet_lower_right_light.png SHA1-Digest: 69RKSTN6id2LNthh544gDm1Prpk= Name: res/drawable-xhdpi-v4/ic_recurrence_bubble_disabled.png SHA1-Digest: x9jgrgeVg7r5sjgjER7QRO5r2IE= Name: res/drawable-xxhdpi-v4/ic_forum_black_32dp.png SHA1-Digest: icvjkc8Dhix7m3Pu5GeiSO7g/vI= Name: res/drawable-v23/abc_control_background_material.xml SHA1-Digest: HqYpnSNEZBO85KEVY5nqiNXSmq4= Name: res/drawable-hdpi-v4/ic_backspace_grey600_24dp.png SHA1-Digest: dsle4x3iWPHanbPGqgDa6C6L6dw= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_679 SHA1-Digest: brii8vx5U3th9K0hIr7b19MpKXY= Name: res/drawable-hdpi-v4/notification_bg_normal_pressed.9.png SHA1-Digest: tLTtgWwmC52vFV8WmsQe/d9txW4= Name: res/layout/time_zone_filter_item.xml SHA1-Digest: Ajn+lJ73oUOV2RXoYL7LLRQLGzQ= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_676 SHA1-Digest: 4gGxM0M6k+qIXUWmmdKRACJhT44= Name: res/drawable/conversation_list_divider_shape.xml SHA1-Digest: a6RRumBJjeheOC+CUKII6imo1qA= Name: res/drawable-xxxhdpi-v4/abc_btn_check_to_on_mtrl_000.png SHA1-Digest: pIyZCVrTOqpTmBSlPcfEpBjoxJ8= Name: res/layout/select_dialog_singlechoice_material.xml SHA1-Digest: wXy6nQUC4xRU72eF5/tCCdjY7kE= Name: res/layout/conversation_fragment.xml SHA1-Digest: hKDQgyNaO2UxROSPx71x+YUqOqQ= Name: res/drawable-xxhdpi-v4/ic_add_white_24dp.png SHA1-Digest: 03jjfUIpNA5cQ9Q0YOOfLaIQvxI= Name: res/xml/preferences_app_protection.xml SHA1-Digest: DiKzUDzp4hGHFF2ovIkOJRhzDvE= Name: res/color/abc_primary_text_material_light.xml SHA1-Digest: dCntfvSV9J+hVwyRYNjfEdYySvI= Name: res/drawable-hdpi-v4/ic_circle_fill_white_48dp.png SHA1-Digest: 0Xf59WTDmGhbNA5/xUzyt+T0Flk= Name: res/drawable-xhdpi-v4/ic_visibility_white_24dp.png SHA1-Digest: NcT+AoCHgy0H/PGv36QKQW19jCU= Name: res/drawable-v21/conversation_list_item_read_background_dark.xml SHA1-Digest: UlYh4LalEHUe5ePNFOotY3pa2h8= Name: res/drawable-xhdpi-v4/transfer_controls_background.9.png SHA1-Digest: CmzcrZNC8r+1hIxDz084H5GZEDw= Name: res/drawable-v11/emoji_category_places_dark.xml SHA1-Digest: lyHwoErSUiKm/pF3o8jRyeldiuU= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_ZA SHA1-Digest: U0Yd53nbLp1PRjJ4mY7AZ5X63fI= Name: res/drawable-xxhdpi-v4/ic_error_red_24dp.png SHA1-Digest: FAWsyfxJi/Sl5xyojYE61hGmBLY= Name: res/drawable-xxhdpi-v4/ic_emoji_objects_normal_light.png SHA1-Digest: 0hS3kX5JkU1pYENPHjxV9LatZSU= Name: res/drawable-mdpi-v4/switch_thumb_holo_light_v2.9.png SHA1-Digest: w8Dy0yH3VYRGd70FBZl2zVgtszM= Name: res/drawable-hdpi-v11/icon_cached.png SHA1-Digest: lrYsY9ZN9V40fp3p1mzWvwtvqrI= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_YE SHA1-Digest: dVyncrRBMtw9bH8eVfdkKLz+dTw= Name: res/drawable-hdpi-v4/spinner_disabled_holo_light.9.png SHA1-Digest: wiWkHAPVenl8UL3CUN7wiwB68o8= Name: res/drawable-xhdpi-v4/ic_emoji_nature_normal_light.png SHA1-Digest: 7pHBYBd5ijeoA+3wdnBydEqxiAg= Name: res/drawable-mdpi-v4/abc_list_selector_disabled_holo_dark.9.png SHA1-Digest: 0lawN0TfON5HQhuTBR7Om1xGxUI= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_ZW SHA1-Digest: hdKqCqXMjdL67/W/uAIBtmGqRdA= Name: res/drawable/abc_switch_thumb_material.xml SHA1-Digest: GMLceoxorxIv4SfySzjNiKy4yRk= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_800 SHA1-Digest: Mqvhekjlq5rLsR/GHx5/lGvy6+4= Name: res/drawable-xxxhdpi-v4/abc_btn_switch_to_on_mtrl_00012.9.png SHA1-Digest: DqYT/YomMpTVjcgLxNiWd75/E14= Name: res/drawable/psts_background_tab.xml SHA1-Digest: 9uvH4klnViC9JxQERHofBJQ0wEU= Name: res/drawable-hdpi-v4/ic_emoji_recents_activated_light.png SHA1-Digest: ubZ9biCY1B0TJL0CfSZIsrDu8x8= Name: res/drawable-v21/avd_show_password_1.xml SHA1-Digest: lEMe5NORMm0MqjqM7mrLbM1hB/E= Name: res/layout-v16/transport_selection_list_item.xml SHA1-Digest: Nw1L5zREyLlgrRDaXL+5b8Wy2Os= Name: res/drawable-xxhdpi-v4/actionbar_icon_holo_dark.png SHA1-Digest: OZCoH2YpLjQz8QeU2BFFntjlEg4= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_808 SHA1-Digest: 1JDvM3Ny0doEEq4kfYb/HSkFbmw= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_ZM SHA1-Digest: krhQ3sQmvB4147GOBnvNGJ9k/t0= Name: res/layout/support_simple_spinner_dropdown_item.xml SHA1-Digest: OMWJqSywbwWFCtiu9pGbWBrzaBo= Name: org/spongycastle/x509/CertPathReviewerMessages_de.properties SHA1-Digest: JEtZ3RAGGTVEFFC7U8WRwNNTJXU= Name: res/drawable-xxhdpi-v4/ic_emoji_emoticons_activated_dark.png SHA1-Digest: NKcdFI0XGDZytPqshETKS5SaHtk= Name: res/drawable-hdpi-v4/icon_dialog.png SHA1-Digest: IklnSOYXNLOm1UnN74LhWWzyP2g= Name: res/drawable-mdpi-v4/ic_message_white.png SHA1-Digest: c2bVOl6Nn58TYkRLcFFBLhvCzgc= Name: res/drawable-xhdpi-v4/ic_account_box_light.png SHA1-Digest: +NO6SXuOd3UCnNzugZOF8k/kjR8= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_WS SHA1-Digest: czgQN40vkNfm6v4HBiKFugKgzwY= Name: res/drawable-v21/avd_hide_password_2.xml SHA1-Digest: Y1ILAI8MUyhcBfZM74I0qwm1yl4= Name: res/menu/conversation_context.xml SHA1-Digest: pOBQ7VG5CflQkUSIQKLlKKsdyls= Name: res/color-v11/abc_hint_foreground_material_dark.xml SHA1-Digest: SJ2AWiQB6PrpRYln7M4KB3leYik= Name: res/drawable-xxhdpi-v4/switch_bg_holo_light.9.png SHA1-Digest: HDeWqBG3QxzY3hxSQPNe5n720HE= Name: res/drawable-xxhdpi-v4/ic_audio_dark.png SHA1-Digest: smz6yODujOWvBZrUKiWHPz8pbYk= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_WF SHA1-Digest: wPlKXUFZ6+cNCsq5WNhHLEGmAQU= Name: res/drawable-hdpi-v4/ic_video_light.png SHA1-Digest: OFuhmb6FkVlgGx5tN0GrmXb1T04= Name: res/drawable-hdpi-v4/icon_cached.png SHA1-Digest: 4olkuaNuRZ/wX2HF+Z4NdxUi/bI= Name: res/drawable-hdpi-v4/spinner_default_holo_light.9.png SHA1-Digest: wNj51XPjwkpz5i7Qe8C0psbQlO8= Name: res/drawable-hdpi-v4/ic_warning_dark.png SHA1-Digest: atnJqjEwPybNJ1v/jbI243qw8JA= Name: res/drawable-hdpi-v4/ic_unlocked_white_24dp.png SHA1-Digest: cRFRs1Eh3cra62GcixZdycTy7po= Name: res/drawable-xxxhdpi-v4/ic_dialpad_white_24dp.png SHA1-Digest: 2kSKljXa90Dj6lIYAzpnGbN1L2E= Name: res/drawable-xxhdpi-v19/switch_thumb_pressed_holo_light.9.png SHA1-Digest: vOrQRbnBW344sB4vzWZnuvuoRho= Name: res/drawable-xxhdpi-v4/ic_emoji_nature_activated_light.png SHA1-Digest: XvpYzU9xVv3mCYAbmKYPMfQAnEQ= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_VI SHA1-Digest: foVnsR9TPZ96hWgSc6Mc+Kgysok= Name: res/drawable-xhdpi-v4/ic_block_grey600_18dp.png SHA1-Digest: vGqqYp+8vgs+ZR+mveLUXUTI/Uk= Name: res/drawable-hdpi-v4/abc_list_selector_disabled_holo_dark.9.png SHA1-Digest: vVifsTusCsEMS/QLwleavhByCls= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_VG SHA1-Digest: bsJEEDbPQhpQPPr9LB1ec8bYbv4= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_VU SHA1-Digest: e2UqijEw6P7d7KJgJdkVC5NDon8= Name: assets/emoji_nature.png SHA1-Digest: 3LR8FZBTV9dDX+3fPaFEdfQNKkQ= Name: res/layout/expiration_picker_dialog.xml SHA1-Digest: BcWCThF9XR0J7AErzxISmZVFSz0= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_VN SHA1-Digest: dxE4Qq3twfhDg+ZyYzk6h8N3hws= Name: res/drawable-hdpi-v4/ic_info_outline_white_24dp.png SHA1-Digest: NJM0SmJryxtj3luuPOr/aI3zt+I= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_UZ SHA1-Digest: sBsgHk6r7CosIOw6f55wEp78BZM= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_UY SHA1-Digest: utktgIUNk5EHFxnsav5wZviQKXc= Name: res/drawable-mdpi-v4/ic_emoji_recents_activated_light.png SHA1-Digest: rCiJ1YBDhy5sB09CYoWok27enx8= Name: res/drawable-mdpi-v4/ic_select_all_white_24dp.png SHA1-Digest: TBiu2wjPq2uhTrSoBxA7RRkmAqo= Name: res/drawable-xhdpi-v4/ic_recurrence_bubble_outline.png SHA1-Digest: I6Z2if2VOZmKeNfFz+NB0WreeeY= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_VC SHA1-Digest: AYScUug7DAQKrecThlLqEd5WXfs= Name: res/drawable/abc_edit_text_material.xml SHA1-Digest: oiA6lTI8z8nUuKbfDkfiJVYFwwg= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_VE SHA1-Digest: OO5py+hE86Zvsbv0+nj0TMQJ4wg= Name: res/layout/abc_action_bar_view_list_nav_layout.xml SHA1-Digest: 51o0wd1RfWEfJUq63f13AZan+vM= Name: res/drawable-mdpi-v4/ic_visibility_off_white_24dp.png SHA1-Digest: Cp1dPyMZ/vjk/a+HvVQuBfflfQ0= Name: res/drawable-xxxhdpi-v4/abc_switch_track_mtrl_alpha.9.png SHA1-Digest: O9JInV5je9E+K0VDIh7tQxIyLAk= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_VA SHA1-Digest: ssuLZ4eLxP2vvwVBgzwnqCukstk= Name: res/drawable-mdpi-v4/ic_emoji_nature_normal_light.png SHA1-Digest: lK6Dk+nZb3Ge0b5k5J7obZVB2sE= Name: res/drawable-xhdpi-v4/divet_lower_right_dark.png SHA1-Digest: WL+2Tj0YNEKzd378aYnxkejif+E= Name: res/layout-v17/select_dialog_singlechoice_material.xml SHA1-Digest: rpGJfV0tirikFN4Xj46vZ6sETQE= Name: res/drawable-hdpi-v4/ic_video_dark.png SHA1-Digest: Ey7pCsneWAG6ggshi3ClRmTL10k= Name: res/drawable-hdpi-v4/ic_emoji_flags_activated_dark.png SHA1-Digest: Qk4RhA+73EGzSksMNqfjsZEOHkc= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_UG SHA1-Digest: 4VAIezqoEYXQtcouEZrmKdPgGZs= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_US SHA1-Digest: HqBnLlxl8we2BdQfgfG7D5x3DDs= Name: res/drawable-xhdpi-v4/ic_brightness_6_black.png SHA1-Digest: tU8zMbcX+8v4izG2zUUngkyo6Kk= Name: res/color/abc_tint_btn_checkable.xml SHA1-Digest: mcx05ORnk98iArpeDWcSnC5PJOI= Name: res/drawable-xhdpi-v4/abc_scrubber_control_to_pressed_mtrl_000.p ng SHA1-Digest: fU5gisHGI+zYrb29D3vQ+ofKD4I= Name: res/drawable/share_list_divider_shape_dark.xml SHA1-Digest: KKfJ+Fkfa2lc4+S6SckGvLXk2Qk= Name: res/drawable-hdpi-v4/notification_bg_normal.9.png SHA1-Digest: c5f+iD+5NWV0zWxwzUyh+V+QpkY= Name: res/drawable-mdpi-v4/ic_textsms_grey_32dp.png SHA1-Digest: 7XEhd9/4S8LupErI1szNn922CTE= Name: res/drawable-hdpi-v4/ic_arrow_forward_light.png SHA1-Digest: jMEH18/e6fwquQV6+DaEWLxpNbE= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_US SHA1-Digest: ZT1gVON7U5vU0cyi+tSUpUmC6aE= Name: res/drawable/abc_btn_default_mtrl_shape.xml SHA1-Digest: SKMRXFrMMLv2CZ0xhHWsL5pijc8= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_UY SHA1-Digest: yIYOGVZR77ul2hObusA46tMaGOE= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_UZ SHA1-Digest: eiNIbGwLuX74E0o4Ko596usCtwA= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_UA SHA1-Digest: NHLdVShkLuCqtyl3+7z3Gul3u+0= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_TV SHA1-Digest: LMrGXio9k6kL954+IlHsjNlcGH4= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_TW SHA1-Digest: cT5W1rkXudYqAeqGeTxS9oScNEM= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_TT SHA1-Digest: s0U0yH5dscjAnTh8sj4ocqY7n2o= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_TZ SHA1-Digest: SAA8d6BxG+K7F4vCBlExtqPE1O8= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_VC SHA1-Digest: SetGpLEb1/uYPF/hUoMGB7L2LS8= Name: res/layout/verify_identity_activity.xml SHA1-Digest: sj6L78ARmd9IiJQwM+guosx/NXE= Name: res/drawable-xxhdpi-v4/ic_visibility_grey600_24dp.png SHA1-Digest: p5AYMH028t5wu1emYkHh+5SBkC0= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_VA SHA1-Digest: w1Ob7RZ/usfNPy9Z7hs2DvfcLr4= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_TO SHA1-Digest: 2WNCdtcDzpFmao6jOrfsFKkPbLc= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_VG SHA1-Digest: Q4iBHZuUuAhPeSRQ/dKit61Pdrw= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_TN SHA1-Digest: Aul5TdO8m1UZFIduHGqBhtGENDY= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_TM SHA1-Digest: TqK1CJDn4tmApMmnaXtO+Ru9DiY= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_VE SHA1-Digest: xjQ+aMUsAS0GgnKoQpkPn7457Tw= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_TL SHA1-Digest: NIVLhqetQw6Z3X5c0/FYd/dzFRY= Name: res/drawable-hdpi-v4/ic_menu_lock_dark.png SHA1-Digest: wWkrOgayvF/16HUEuzLjCr5dF/8= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_TR SHA1-Digest: KjrtpwbnBEWOe6Xp5911rIcRS/s= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_VI SHA1-Digest: J5qIZ/dQnYLg48SP+ajWFBgDO8k= Name: res/drawable-sw600dp-mdpi-v13/ic_backspace_normal_dark.png SHA1-Digest: Jd2rzGbYe7KSdh6FIv61QwLEt24= Name: res/anim/abc_slide_in_bottom.xml SHA1-Digest: 6SIMoqi7/LVEqpyfDSSCRJ9qRR4= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_TG SHA1-Digest: Whu0jzsUpKNydskGqtSIJJVjQgk= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_VN SHA1-Digest: uK4R4Hk/ier0iSgBWiqRaFMlbdY= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_TD SHA1-Digest: N3g53pQRS7LmRznOhV6YWBiMUgQ= Name: res/drawable-hdpi-v4/check_dark.png SHA1-Digest: /olsGzw5BAgMsQCdc/G2C3skzG8= Name: res/drawable/abc_textfield_search_material.xml SHA1-Digest: t7aLlxSJ1jiAbfeYrS+TIQ9arVM= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_TJ SHA1-Digest: NHvu413s8LInAxXaqSV216Lv950= Name: res/drawable-xxhdpi-v4/ic_lock_light.png SHA1-Digest: vRmFIULSZteNv7VyxlZQSJxoWHg= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_TH SHA1-Digest: dartGP+4CLkopoeoVqgaDcEQ2hE= Name: res/drawable-mdpi-v4/ic_search_holo_light.png SHA1-Digest: +nb7+rYGQnKh7CsoAKxgG6iMM7A= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_VU SHA1-Digest: y+wLsIMOIF651Cy6uOoBNn3K4Ds= Name: res/drawable-v21/abc_ratingbar_material.xml SHA1-Digest: lmjnTB/yh4tmiAkHkeKcav4nFGA= Name: res/drawable-mdpi-v4/textfield_activated_holo_light.9.png SHA1-Digest: 2tfE7kha7TRVkhq7YgpEw3Y9FzY= Name: res/layout/alert_view.xml SHA1-Digest: KJkimln1oNMz3/C4GGkF175t/Po= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_TC SHA1-Digest: bUtXC6xypa1DHdZZI3HLMa8vabo= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_ST SHA1-Digest: Trx3SwRQbX2P45fPA4/ikYDloUc= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SV SHA1-Digest: n+2fK9t+sy8oMw7+bRkqIf+tTxc= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SX SHA1-Digest: AcaoNTcH4WcTw5nkA+qEfALkSTw= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SY SHA1-Digest: dlx118m7pTffNHIC3uokalTuRME= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SZ SHA1-Digest: 0iwx55r9t0P+qVGR3LorJpxrMNM= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SL SHA1-Digest: +Ialprbpk3u5rF4w11BkKCUzH8s= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_WF SHA1-Digest: FPfB0sW2cbCOKbkiLIuhbZjK1pY= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SK SHA1-Digest: APpOTRTe4mLqbaaOuWxGdQj0qws= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SN SHA1-Digest: YqgXESj4KBdRhMOXhXCNxMjb+1M= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SM SHA1-Digest: tfI70YIJ8nJs5kHHWT2A4HLjmBc= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SO SHA1-Digest: FBCYOe8abRWudaHxWC6jIBo8wus= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SR SHA1-Digest: c99QdQgXb2dYO3HlzuXnjILlM+c= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SD SHA1-Digest: 5UXZhfjjkzOt7i/0DowUSEqMxFM= Name: res/drawable-xhdpi-v4/ic_backspace_normal_dark.png SHA1-Digest: 5yDZmZceUzVe1iekfJAVc2IBmYU= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SC SHA1-Digest: 78+gZzPZL5SnTu/+44ffkMNgjpY= Name: res/drawable-xhdpi-v4/ic_check_dark_disabled.png SHA1-Digest: MViTJyK0ai5eD+lcCbB/mfxqh7I= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SE SHA1-Digest: TCL/CAS8dInZOa+XOxk+S5GL/K8= Name: res/layout/log_submit_activity.xml SHA1-Digest: 5SPs9x/Yx0vnD3sfhyN1L9CePNM= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SH SHA1-Digest: fAnqEs3w2n4PGMLOti+Dz36lvtw= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SG SHA1-Digest: e9DnOnhdZCVdEi1GaqvAT04papo= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SJ SHA1-Digest: FP+kcAEQH8XKo4FcaUfms749qjg= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SI SHA1-Digest: LL02jvnO1WRwfKkV3M/73Kt+i78= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_WS SHA1-Digest: fE4AFos82Fa50/1pJ5MJ6FheYns= Name: res/layout-v11/conversation_activity.xml SHA1-Digest: +jzmxtjYsZ1jifdMk6T/lQIXibI= Name: res/drawable/notify_panel_notification_icon_bg_tile.xml SHA1-Digest: Puty61iA1yiPjNAnY1HrMV4r8fI= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SA SHA1-Digest: Rw6bdwvuN6ckE3w54vszo+ILgUY= Name: res/drawable-mdpi-v4/ic_emoji_symbols_activated_dark.png SHA1-Digest: fd+FJxbgWnlzIzFFHDxRKwmRVSw= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SB SHA1-Digest: n5X5IcdT/PcrFPlZTOV6eelcnRw= Name: res/drawable-hdpi-v4/actionbar_icon_holo_dark.png SHA1-Digest: AehHwQaKfDLJ7NPJ/kpPofiunqA= Name: res/drawable-mdpi-v4/abc_btn_switch_to_on_mtrl_00012.9.png SHA1-Digest: M5x5yhIyfAE00veLbT8o+OstFp0= Name: res/drawable-xxhdpi-v4/ic_emoji_emoticons_activated_light.png SHA1-Digest: +X71FEk4oZu8oDOebWPW3NaIa70= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_RW SHA1-Digest: CR1Ctd1AWQ7U2YnBaMfbdhpJLoA= Name: res/drawable-ldrtl-mdpi-v17/abc_ic_menu_copy_mtrl_am_alpha.png SHA1-Digest: d4vgddzsyizuUaFKPS8KV2adOac= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_RU SHA1-Digest: R902pnYPoqWzcXmIui+lv2vqM2Q= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_RS SHA1-Digest: bIAXMHU8vC6J7U+FkIbvJHQ3v+g= Name: res/drawable-hdpi-v4/ic_recurrence_bubble_outline_disabled.png SHA1-Digest: VmO20R2v1KWG/YAVUA4jPmlr6wQ= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_RO SHA1-Digest: P/Uot9HnhODLuFy/liTyAT7xRSQ= Name: res/drawable-ldrtl-xxhdpi-v17/abc_ic_menu_copy_mtrl_am_alpha.png SHA1-Digest: UcEHcms2r2N9yOnGvBk/CGupFMw= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_RE SHA1-Digest: WmnEcbAYuEoK0pjJ4NeAwt1zaDc= Name: res/drawable/abc_seekbar_tick_mark_material.xml SHA1-Digest: 2cfdudxPpdKT3phtRi1TXi7pHmE= Name: res/drawable-xxhdpi-v4/ic_emoji_flags_activated_light.png SHA1-Digest: tnQREFYcdkUKF+iId0ThBnT9utk= Name: res/drawable-hdpi-v4/ic_textsms_grey_32dp.png SHA1-Digest: l26hedZwIH9Yw+KlHBEHJu1/9pc= Name: res/drawable-xxhdpi-v4/ic_unarchive_white_24dp.png SHA1-Digest: XglYIsRIEU9WS/bkj4+V64hED6Y= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_870 SHA1-Digest: iirE1LkRVWUWs3G+Wot8wka0/VI= Name: res/drawable-xhdpi-v4/ic_info_outline_dark.png SHA1-Digest: A1oNDHh2looWz3V6e7KZfKEwDng= Name: res/drawable-v11/emoji_category_places_light.xml SHA1-Digest: Bg5yB7phDN6BvS8VFb1FcpSSPq4= Name: res/drawable-hdpi-v4/ic_mood_grey600_24dp.png SHA1-Digest: anUXtsk9vBN7WMxFmaNPS0hfqfE= Name: res/drawable-xxxhdpi-v4/ic_textsms_black_32dp.png SHA1-Digest: DyYIIIDS2lD7lKXGKwqgVZ8H6Ys= Name: res/drawable-xxxhdpi-v4/design_ic_visibility_off.png SHA1-Digest: 7f7aSHLckgKMnYWA1BlMPU8wxtI= Name: res/layout/share_fragment.xml SHA1-Digest: 9VHrZXYRt6ll801+ePxqAS3Ftko= Name: res/drawable-xxhdpi-v4/abc_list_longpressed_holo.9.png SHA1-Digest: 2lRuxodMxnuWn+IclaJShuAV5+Y= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_YE SHA1-Digest: otqw9kQnfp2A26BnjYrGGK7agAI= Name: res/drawable/abc_ratingbar_indicator_material.xml SHA1-Digest: 6gbbPFsN/J2Dxd3gmFcvpI6abI4= Name: res/drawable-hdpi-v4/ic_keyboard_white_24dp.png SHA1-Digest: bpM7nSvSapMQ2eXOFULJ+QgSLRo= Name: res/drawable-xxhdpi-v4/ic_emoji_places_activated_dark.png SHA1-Digest: uSERXFuo7exkXfiNEv/W3RsSSCM= Name: res/drawable-hdpi-v4/textfield_disabled_focused_holo_light.9.png SHA1-Digest: HeYl/nhHnXmTW6qa4lu35dzb3EY= Name: res/layout-v13/message_details_header.xml SHA1-Digest: dzr+nKgerzoqIPZhx8kULhTvIqA= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_YT SHA1-Digest: QUIDz2h66HCRyArqB8mAs7C9zGs= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_878 SHA1-Digest: NYlZaMkwixLnHvaYfXzZ2Hg2Uzk= Name: res/drawable-xhdpi-v4/abc_text_select_handle_right_mtrl_light.pn g SHA1-Digest: flcizXeMrBA+Puf2HkSGneGeqXI= Name: res/drawable-xxhdpi-v4/textfield_focused_holo_light.9.png SHA1-Digest: 3G+rFDxksENpDFDnnWmhx48KLpA= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_QA SHA1-Digest: vgGevfjW4kSMRwT8SBzfDcMgunE= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_PA SHA1-Digest: g+cMBunvvG0x/NBD106EV2b0Zro= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_883 SHA1-Digest: 1yCxVXC6jU71UJIsJjT/zZvOlFo= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_882 SHA1-Digest: Ww3F4MLSHSlpSGrZX3kXe8x+Xl4= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_PE SHA1-Digest: Swfk7rt9197+zIcLj/mvi1BqAGU= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_888 SHA1-Digest: WNCT/ilHaJtsAO+IaHBVN0fxe7Y= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_PF SHA1-Digest: OaVEczR2T7c7UMnRgyj+60lYsRs= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_PG SHA1-Digest: 5pD4SBpEfIENlVenA99QeZ4u8lg= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_RO SHA1-Digest: Sg7TmE2mL2KHhy156iS+2WLA/ds= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_PH SHA1-Digest: WYtmudyR5ZkOG4VsCCuMjm0e9v4= Name: res/drawable-xhdpi-v4/icon_lock.png SHA1-Digest: nBj3JWja8wKe663qJT8bnEgGSr4= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_PK SHA1-Digest: 9YuRLN1ojY+MfVYKz4j2dFy+RTY= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_PL SHA1-Digest: rtVjcwLWkrhfKZelFtK9T/AMECY= Name: res/drawable-xhdpi-v4/abc_ic_star_black_16dp.png SHA1-Digest: qfvO9I4x0UCtfyxe9QDR8Aj93fU= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_PM SHA1-Digest: 3tAr+G/rtYrsjn3tCmum4OmCH9Y= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_RE SHA1-Digest: ospVsbq3w3ACp8QAb9mEBmb4Ly8= Name: res/drawable-mdpi-v4/switch_bg_disabled_holo_light.9.png SHA1-Digest: 7UJHiJVoqpy2dRzN2BDZ8a3zlsk= Name: res/drawable-hdpi-v4/abc_scrubber_control_to_pressed_mtrl_000.pn g SHA1-Digest: ADDoWZfz0cLwg7Xh81feHpftgWM= Name: res/drawable-mdpi-v4/transfer_controls_background.9.png SHA1-Digest: 0VZBt8Ugd3Md5Tz54Fi+nEEj8Dc= Name: res/layout/abc_expanded_menu_layout.xml SHA1-Digest: +exI9wLmf+pukhmoRdN8fQSVI20= Name: res/layout/conversation_activity.xml SHA1-Digest: JCuGu4e9AFvpmLPQw/eSCuyIVpo= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_PR SHA1-Digest: uhjkEX5co8+MDakVUl06dg9UrQk= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_PT SHA1-Digest: buewk/3TBiLhEHmkMB/+vrstIj4= Name: res/drawable-mdpi-v4/abc_cab_background_top_mtrl_alpha.9.png SHA1-Digest: kxSGYJoMOYG0HnE3IprNwOq5ou8= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_PW SHA1-Digest: lmwDhF2OtKNPjvF9kgQkmVYNac8= Name: res/drawable-hdpi-v4/abc_list_focused_holo.9.png SHA1-Digest: z5rmTEqRHuMsX24l4sP3B88dR3Q= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_PY SHA1-Digest: LoxH7CJoB2xEj6Jt+hzSIAASwP8= Name: res/layout/emoji_grid_layout.xml SHA1-Digest: RGyPbcQcMAiCBpiJs8xEo+ouCjg= Name: res/drawable-xxxhdpi-v4/abc_btn_radio_to_on_mtrl_015.png SHA1-Digest: je+36x1Dzaic4ajfPsRCU+apd1k= Name: res/layout/abc_alert_dialog_button_bar_material.xml SHA1-Digest: 1EVmc0n14dsx+pzzxfAjcRa8AuI= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_881 SHA1-Digest: fmYudsEOVI0LO3liKowBijUFG4k= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SK SHA1-Digest: forjBE2veoc0b7N9u+nMGs1DwGU= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SL SHA1-Digest: WX0pXeNsWKDaChCoQEvH7TMJ7sM= Name: res/drawable-hdpi-v4/divet_lower_right_light.png SHA1-Digest: Sn2XrywfVIndmHvaI9ZNXf7SIAs= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SI SHA1-Digest: RpNbJSYp9chNDX7VyEHiYFrU4w4= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SJ SHA1-Digest: KTgyCNWF0btdbmNTedtXPIZuPVc= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SO SHA1-Digest: EfoQJModNGFqwVfIBRht2Mnw+Qw= Name: res/layout/abc_dialog_title_material.xml SHA1-Digest: Fda1mG9GqBE3tbcI/D3sxasjrMg= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SM SHA1-Digest: hLYQJPXcUyDq8pkRE8HxCbO0lAU= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SN SHA1-Digest: NJsY1EG/lY+wIQHEiFgFDofenNQ= Name: res/drawable-xxhdpi-v4/ic_backspace_grey600_24dp.png SHA1-Digest: 6tk+OYq31v63pXbYsNu6XgSVlOI= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SC SHA1-Digest: abjCxJ5NKjic5Q6+0u6Cgy3eAQw= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SD SHA1-Digest: gr0PYn1eaG+kfMRct/KO9mFJZDU= Name: res/drawable-mdpi-v4/ic_unlocked_white_24dp.png SHA1-Digest: MFpgWW3bgmwfNQYBdkV1ru2qTwE= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SA SHA1-Digest: Q1fZAHVGEiFvJq4xmrYo6DDjCYU= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SB SHA1-Digest: cFAxt8BUBueKLMX3n3nIrJVP2Yk= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_OM SHA1-Digest: JxH7S2qXvrgvG8pty7IgW54Yc5c= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SG SHA1-Digest: ymmFzkaI5Nh4wtYuSKk8byIyDNY= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SH SHA1-Digest: wK67hSi3PFaLFfs5vCH6M2uf2m4= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SE SHA1-Digest: Xye654+IFUlWplS0j4hee/fyRXw= Name: res/menu/conversation_send_drafts.xml SHA1-Digest: OfffoLsFKNX8gA1QfLtk4YS2aPg= Name: res/drawable-hdpi-v4/ic_attach_grey600_24dp.png SHA1-Digest: QsTRfDdAWEFSFhbHCnCdQ2yF8xQ= Name: res/drawable-xhdpi-v4/ic_emoji_people_normal_light.png SHA1-Digest: zilt6IdWFIq64vxZpzlQFYJrCiQ= Name: res/drawable/emoji_category_flags_dark.xml SHA1-Digest: 0JFf3OxcA6r2FLsTS+D0fkmVgD0= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_RS SHA1-Digest: GgOHkc6UGGXJ9k4/dDlXUgJFWx4= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_RW SHA1-Digest: 1M3ux4iVBQq7zDB55HkliabGw1Q= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_RU SHA1-Digest: sbdtUrhxGryDYlaGpivtZ431g6w= Name: res/drawable-ldrtl-hdpi-v17/abc_ic_menu_cut_mtrl_alpha.png SHA1-Digest: mmQqcznq/m4DDsuC52g4NiTzwA0= Name: res/drawable-xxhdpi-v4/abc_scrubber_control_off_mtrl_alpha.png SHA1-Digest: 0Pl9UW/jK8MjxYht0b46LIt5W8w= Name: res/drawable-hdpi-v4/ic_app_protection_gray.png SHA1-Digest: 18QacvjMEyh+2FcXmY+26N30YEE= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TN SHA1-Digest: 99h57l6ZBRjnr+inn+c8TCUFo1I= Name: res/drawable-hdpi-v4/ic_emoji_symbols_normal_light.png SHA1-Digest: XuujeVAxdAw7FpLFvFI8LG6UwnA= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NC SHA1-Digest: 4P4GNXoqdbXhV6aRFFcU6H3wdL8= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TO SHA1-Digest: APU4R6D/Vv8viWygfXSTwlGuGuE= Name: res/drawable-xhdpi-v4/ic_advanced_black.png SHA1-Digest: aEWGKq2oc0pmwD+CCMp/K/m+PhQ= Name: res/layout/time_picker_dialog.xml SHA1-Digest: DqL5xtGQIU6GDmEWu+L0ONOXZJg= Name: res/drawable-xxhdpi-v4/abc_textfield_activated_mtrl_alpha.9.png SHA1-Digest: i8wYHM8BdG6ZwwbsPcMgrtWVs1o= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NE SHA1-Digest: 0fayia/F7Ab9umXaPcgO8TOWNNE= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TJ SHA1-Digest: WYEOoOaJuCUtX/nB3qQzbRncIg8= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TK SHA1-Digest: Z+EAMEK1Vmga8/d1MKXEFWkn/fc= Name: res/drawable-xhdpi-v4/spinner_disabled_holo_light.9.png SHA1-Digest: L3IeDF0w/S5ny9zc564klAP7kUI= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TL SHA1-Digest: lrpr3SLFw4KVzXShLgq53Il63W4= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NA SHA1-Digest: bEb/e4iGvbSt7Yw+tftI2Ep01c0= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TM SHA1-Digest: UW1s3z24ewJHVqxHCwrAQyvDsVM= Name: res/drawable-ldrtl-xxxhdpi-v17/abc_ic_menu_cut_mtrl_alpha.png SHA1-Digest: RT5SHZxO8jR3cgSzvKqbmSM4LGU= Name: res/drawable-hdpi-v4/spinner_focused_holo_light.9.png SHA1-Digest: 3zmmBeKWyKRhH23IcfeYZhVwLyY= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TG SHA1-Digest: e9CF7qT76tycOG/U9vtloxhkk9M= Name: res/layout-v17/abc_dialog_title_material.xml SHA1-Digest: G4wrwZ9xzbCrJ28bLcqb1dFQec0= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NL SHA1-Digest: 9jTzxoIyo+vdoFNqt44z/+Qxuc4= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TH SHA1-Digest: XFo+EspCXG/steY9Q8YrmvXvgEA= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NF SHA1-Digest: JzcCqh9/sW1t7SXSbk3m5rijguQ= Name: res/drawable-xhdpi-v4/ic_group_white_24dp.png SHA1-Digest: q2Y3MKCRGPy99OB9eBgtzUxGBZM= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NG SHA1-Digest: 4/KzgayS6YA+dWfJHxJIX25hl3w= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TC SHA1-Digest: PUm0fbZcNeYyBF02GBCV5pIMlYo= Name: res/drawable-mdpi-v4/ic_backspace_disabled_light.png SHA1-Digest: mzPE8uTj99CEszbIAsFwvL1VkKE= Name: res/drawable-xhdpi-v4/notify_panel_notification_icon_bg.png SHA1-Digest: qZTXDPkLdLdgn9U7jvOCObBW7aU= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TD SHA1-Digest: D6EcGdqsak6vSLimRmtu0bawkC0= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NI SHA1-Digest: bAiz96WeXPimGsaoKxDZ5n3pE2I= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NR SHA1-Digest: /k8OZAhVw2vV7bJ7zVJhVjLKhk8= Name: res/drawable-hdpi-v4/ic_volume_up_light.png SHA1-Digest: 4UUxWJRWTZqLoMDVeKqWA4uRqtg= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NU SHA1-Digest: rOBttdjHcKcW1VoXCPnSzpsPKtk= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TA SHA1-Digest: UA/Ak8WQNt/+M+jCUt/SQcJ18E0= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NO SHA1-Digest: qsRVGM5vdCzTjiYG+AUy3lN/dT0= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SZ SHA1-Digest: mGbJkioIUevT5sqH50oxWJd04XE= Name: res/drawable-xhdpi-v4/ic_emoji_people_activated_light.png SHA1-Digest: HKfxHlBlqGPdoLM2e6sXxktasF0= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SY SHA1-Digest: bxw3Q/FAMiLM6tf7R0mQd2X8mf8= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NP SHA1-Digest: 56qxXcseP4XTSSOzVYBJLx+PU3E= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SV SHA1-Digest: 5VE8AK9Pgejuq7rHq8Kj+9NGGKo= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NZ SHA1-Digest: FI7sSj1OC0j35Fe/QVvtQV7noks= Name: res/drawable-hdpi-v4/ic_lock_white_18dp.png SHA1-Digest: 6yFngiOvomqtBVlLBwYd3MNNRPA= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SX SHA1-Digest: yKBJ6fmDKgMHeGOBhH8pCF9urKM= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SR SHA1-Digest: z5DFGYQVr718sSmTQt8sg8TrFR4= Name: res/drawable/unread_widget_icon.xml SHA1-Digest: U6Et7hDtdXBlrmcHiRFGcEJ6FiM= Name: res/animator-v11/scale_with_alpha.xml SHA1-Digest: VoONsngcyPaOcsxveoWj4d5Ytsk= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_ST SHA1-Digest: 0DyYfyWReGAZQklqQD/gI+Ae/X8= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SS SHA1-Digest: I61gNlKBaXoFueer87eVyHqgHT4= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MC SHA1-Digest: DJPCVBVZWaQmLjOosHspJvKuAb4= Name: res/layout-v16/contact_selection_list_item.xml SHA1-Digest: DcLhdrS0ZEwJjTo1M9SMxUKo+Jg= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MD SHA1-Digest: dSEMtLs1XQZghSWnI7Bb70hHPmY= Name: res/drawable-xxhdpi-v4/ic_done_all_white_18dp.png SHA1-Digest: GBoQjEB/sF3zobnJ4+liG+V9zDU= Name: res/color/abc_primary_text_disable_only_material_light.xml SHA1-Digest: TpKwzuD1e5/ZOIvTHOUHlcLNSZA= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MA SHA1-Digest: 8iGu/ODXHZBORf6zi0w3x2gCmGA= Name: res/color/abc_hint_foreground_material_dark.xml SHA1-Digest: pLQ1N5EZpBcE07mV9IB64JqJT/Y= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MK SHA1-Digest: kO2FRje+Jg4ejR6sOBgvrE323r0= Name: res/drawable-v11/psts_background_tab.xml SHA1-Digest: +upC5kygYEM4a20jZXPtDpT3kL4= Name: res/drawable-xxhdpi-v4/ic_emoji_people_activated_dark.png SHA1-Digest: ttWb4gx2rLAeA4LgaEFp7jwzay0= Name: res/drawable-xxhdpi-v4/ic_clear_white_24dp.png SHA1-Digest: Wg1iR9xrSa40Q3bt3RWY7jXg5GQ= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_ML SHA1-Digest: x7VpHNww61rEud7WmOSbxt/Z8O8= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_UG SHA1-Digest: Ckx6wsAY/qzwUIKjOLclgOcmWWw= Name: res/drawable-xhdpi-v4/abc_text_select_handle_left_mtrl_dark.png SHA1-Digest: mMc2vLuahJ9g89/mLStEyPQTEdM= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MG SHA1-Digest: D4FQgAs1CLqaS3oinb+PQwWXO/g= Name: res/drawable-mdpi-v4/ic_emoji_emoticons_normal_dark.png SHA1-Digest: 34cW3jlK7zby1nmUyd/JdKqDzmc= Name: res/drawable-mdpi-v4/ic_emoji_flags_activated_dark.png SHA1-Digest: hmw72OlceE2gTL+0XuAYVvUmuuo= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MH SHA1-Digest: rnRIgqHBiNWIkxhqmnbXsRCKCxc= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_ME SHA1-Digest: n6t4oLaUnGIBsRtLF5crGIkT208= Name: res/drawable-xhdpi-v4/ic_recurrence_bubble_fill.png SHA1-Digest: kzOwmlaEQx+ZqZPmsHPah/fUdkc= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MF SHA1-Digest: W/pThMhbGUCY5UEKKIcPXjW2rtQ= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MT SHA1-Digest: 83r9pr9S/M7sWHTeIw5LO2cKTL8= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MS SHA1-Digest: cKleUHuWOTFKI6PUj7MpJaWWDsw= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_UA SHA1-Digest: Hf41BfpvHVZ8y4JX8M4kFv20Id8= Name: res/drawable-mdpi-v4/ic_group_grey600_24dp.png SHA1-Digest: Jz9hBapEr6aEW0ZxbgvHAGS3XhM= Name: res/drawable-xhdpi-v4/ic_save_white_24dp.png SHA1-Digest: xHUf3n0ocqUhiy7UtjDi11AMv28= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MR SHA1-Digest: 6pGkZclc2L6OFd1i1JDSLRFTZ6s= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MQ SHA1-Digest: LM8Co41lxsX2sohhmT8fBuVcYO0= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MP SHA1-Digest: gd7vJ0VsE1kCxIoPhIm7LU5u4wc= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MO SHA1-Digest: CSF1YTOB5p2xxh6vMCGSGynJStE= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MN SHA1-Digest: waWo3Ma0BJ2xY0R/F6roBdVVbiU= Name: res/drawable-xxhdpi-v4/ic_play_circle_fill_white_48dp.png SHA1-Digest: +/+2KFT28uil40tRFWAnvEoR6Jc= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MM SHA1-Digest: cOvTLbhfce5Mw+usAdWmYHyZSng= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TZ SHA1-Digest: uxvRqVZhPWcZIaOA+iEVU/Qayi8= Name: res/drawable-xxhdpi-v4/ic_launch_white_24dp.png SHA1-Digest: 5daD4D1Yk5OzmCD6VqLaIW3ZmIU= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MZ SHA1-Digest: ERm3whxMRK0XWfwBgU3rQOKLKcA= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TW SHA1-Digest: rd7BBrecyPJGMbMnXQmVSiuk98k= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MY SHA1-Digest: P4HbLBcRtw9vwWYcNXcM6Qkm8Ug= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TV SHA1-Digest: /hUsEJmae/km3CCJd2yvKX4Y9+c= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MX SHA1-Digest: fYLnvB9AT16JOqwbYi7VM0pzqSs= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MW SHA1-Digest: vbx37+UO23fen6k8yZAZ/IreLDs= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TT SHA1-Digest: UvkXWknjHX3n38lXB7kMQj/742Y= Name: res/drawable-hdpi-v4/ic_emoji_places_normal_dark.png SHA1-Digest: bJ7uzN61XGZA78H7XHImWMvDu58= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MV SHA1-Digest: xlTWRs6OG6evca/8usxB1cHl3ZA= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MU SHA1-Digest: 42DXRc0ck2A2UY9S1ZETptWFiDE= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TR SHA1-Digest: hiO+Nyit+r48l5uIP+oHf89sgOU= Name: res/drawable-xxhdpi-v4/ic_message_white.png SHA1-Digest: Iu5pR15zuRxq+YyUPb0wFfPOGu4= Name: res/drawable-xxhdpi-v4/abc_text_select_handle_middle_mtrl_dark.p ng SHA1-Digest: hzjpkT1X7DDbbnWVWCVeingW0Rs= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_LI SHA1-Digest: DKsH7Jrm58WZMdEDJDCzC/VKTTE= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_NA SHA1-Digest: 0yZqQf0O5Oku7xt2tXCgnZotsv0= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_LK SHA1-Digest: jUllmpXcki/+3d7iX12FcRbdmKY= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_NC SHA1-Digest: jEbnjwsrwDHBJn5MiH4px1Wlal4= Name: res/drawable-xxxhdpi-v4/abc_ic_menu_selectall_mtrl_alpha.png SHA1-Digest: iuBU+dvN1PvZNfhVx+viSlB9A8A= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_NE SHA1-Digest: 7JI8KCU3Lxp9ktmPitxqtWYI+Ro= Name: res/drawable-mdpi-v4/check.png SHA1-Digest: q4mS1hYZGjnuqVbkX+UXqtjOpl8= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_NG SHA1-Digest: S0FtuHhYtjwNyVmFQ6ocBHxEZFQ= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_NF SHA1-Digest: kMLSUq9zScIzd6XEFEgxVM2z0GM= Name: res/drawable-xxhdpi-v4/ic_recurrence_bubble_disabled.png SHA1-Digest: YS63bBmWQvSy3dTfrlKeHhouJP0= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_LA SHA1-Digest: s0kOLL4WkJ5cUeLueaZUFc6j6rY= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_NI SHA1-Digest: ZGHWgwjHPoQM4bcUmwGprgLkP6g= Name: res/drawable-mdpi-v4/abc_ic_star_half_black_16dp.png SHA1-Digest: thKivdtNhA6Rr/l43Nn1hXPM3hg= Name: res/drawable-xhdpi-v4/ic_emoji_places_normal_light.png SHA1-Digest: ABnnSYU1O8on+DPSdiEWdcQDrMM= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_LC SHA1-Digest: 0kAiJcnznJ8l+5FzyRrxSZlrXJQ= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_LB SHA1-Digest: 1C5cZVqlPtxdRN6c4OEtBi7aiOo= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_LT SHA1-Digest: 7gVbLYruXmfEOBqIcEuT7LBv/0o= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MK SHA1-Digest: ehSVzPzw8AMYov5oHC9GKqUfi64= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_LU SHA1-Digest: z9ysDmzUhkTDE4NvAwDyPhR5JOI= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_ML SHA1-Digest: fD4KOBkpbGD6VIao83JV1SMhF9I= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_LV SHA1-Digest: LC24QLKfNlKOiTJtOdz3z5ch0Yg= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MM SHA1-Digest: dEqM5jViAa+i4qT+gHdxTyHI0qs= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MN SHA1-Digest: RWGHiwf0CTtz0N+Lq7lElVKq7/w= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MO SHA1-Digest: jF/fcLgPaeui3HvlwfwqLNiBHFY= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_LY SHA1-Digest: C7Znjp7bCWkxeaUTMH4HD5NpndM= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MP SHA1-Digest: ukS6QltS+3SCKS83yLkKjhyFsHs= Name: res/drawable-mdpi-v4/ic_add_white_24dp.png SHA1-Digest: ibLr0ZOAKWtf1rQ2wtq3k3JVKUM= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MQ SHA1-Digest: +0Bg5XIouXpcuV79FPVgtS9YHJM= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MR SHA1-Digest: YKD1Q6kRPCdnb6MHCjRouTiH0kk= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MS SHA1-Digest: t0l1yeTr7yOHKuaQrFKIDma8cbk= Name: res/drawable-xxhdpi-v4/ic_emoji_objects_normal_dark.png SHA1-Digest: QVCUohZYOYpcrebuPU/ytqbzjpk= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MT SHA1-Digest: eUk76xeEBLxlY3kag54gEtpx0DM= Name: res/drawable-xhdpi-v4/ic_app_protection_black.png SHA1-Digest: sx4KDtqwf98z7M9vnu6jwKO7/9U= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MU SHA1-Digest: pMM4Ov3SvdHmIEGwtg9o/jY+3go= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MV SHA1-Digest: UlZYa4EzSlMtn063PMuVoxMY534= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MW SHA1-Digest: iUXT4jwd/d2lJn1vQJZsN7kJ050= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MX SHA1-Digest: GrVNqkVwhbhGqW8CxLWi1StAwcM= Name: res/drawable-mdpi-v4/ic_account_box_dark.png SHA1-Digest: ktxz2M2qiGpsbvBGd3qPMazfsug= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_LR SHA1-Digest: dGWTtCyU6wu0jranhqTgoNxPkQ8= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MY SHA1-Digest: ajCAigFehz2F5yVh7vx0ZrLyvGY= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_LS SHA1-Digest: Oyd62Spp8f8rC6WspMX71/yCc7g= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MZ SHA1-Digest: OK8y+Eire3EtIQSgccV+EF+x5Lw= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_27 SHA1-Digest: mGMwCzLy54rC/B9P+BWgJ/aqtLI= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_KE SHA1-Digest: zztIQwqnXlb8rVJX8QWI+H2Tgq8= Name: res/drawable-xhdpi-v4/ic_volume_up_dark.png SHA1-Digest: pA6ZpR6tCw3HHDSkTBful+I1V4Y= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_KI SHA1-Digest: VniZugADPcLjegwJKsQgkwTxs68= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_KH SHA1-Digest: olRWDZcTY/K+QHCL1hCIf0UK5M8= Name: res/drawable-xhdpi-v4/ic_volume_off_grey600_18dp.png SHA1-Digest: 1nxne2iNm4monE41EEF68YW7x2g= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_KG SHA1-Digest: dgPXXJMllCLT1joDXw28hAdnkSE= Name: res/drawable/error_round.xml SHA1-Digest: n67C+HKq1nJ8tJ9rWOj80CdjZKo= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_NO SHA1-Digest: RyPkLVH50Vzt/N/2+fORP5U7vqI= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_NL SHA1-Digest: Ni0NAn1V6pDW5c0ZQVQ8Y26AfQ4= Name: res/drawable-xxxhdpi-v4/ic_pause_circle_fill_white_48dp.png SHA1-Digest: dcZi5ZfI1VUvLPzvFv5KKjuQD1M= Name: res/drawable-xhdpi-v4/abc_ic_commit_search_api_mtrl_alpha.png SHA1-Digest: FIm3sVpLJf34SkU3SQ/694URh1w= Name: res/drawable-xxhdpi-v4/switch_thumb_activated_holo_light.9.png SHA1-Digest: nbKHqGXjI9Sq2g21/0iabe6/LKs= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_KY SHA1-Digest: /jrOTkkY3ySyoVpJPAafvKMwicQ= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_NR SHA1-Digest: ZiSjQbpr0HhOtQfgL64vSncOTpQ= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_KZ SHA1-Digest: j54PEwVb6Bewxs6wGGAd2lRgo50= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_KW SHA1-Digest: AEjoT2OX4gkA43hFr/jGzTd2elU= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_NP SHA1-Digest: ffyHariyayWa3j2yopQbcKO78B8= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_KM SHA1-Digest: t7Lbz+yfyiEGH5H8kDZv0c9Lsh8= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_KN SHA1-Digest: le+ClvBNRmQqVWX1ltCvNXt5Cy8= Name: res/layout/conversation_item_header.xml SHA1-Digest: TQbJlk6h+rmcWOVwj736lG7Y/Gs= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_NU SHA1-Digest: 18lDHkcMGhJXZ4db4h6re3N2SZ8= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_NZ SHA1-Digest: A5wiCEHZiKMWgT1jvFBm6K4t2Sg= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_KR SHA1-Digest: OaYfTpWALiQjIbGiacNyTHYlG/0= Name: res/drawable-mdpi-v4/abc_list_pressed_holo_light.9.png SHA1-Digest: +VIFOUvUwxbnTdHmmjA8LWrUN0k= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_KP SHA1-Digest: uUZIp+MjnW0fcz596c9DWCPM1bA= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_PE SHA1-Digest: z8Bcu45r+44AYANbA4s6ua6RPow= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_JE SHA1-Digest: o0+QID3niDoDG4kF8SCTAcrq9xc= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_PA SHA1-Digest: 5KTKJLRc9TSE31PvMjUKXpez3Tk= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_PK SHA1-Digest: cLiN3jb6RQFdjfoAiZz5X/JuBgw= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_PM SHA1-Digest: BRiUoNKU3EWol0KAjZK/eoQiaWI= Name: res/drawable-xxhdpi-v4/ic_brightness_6_black.png SHA1-Digest: YTC3G4WDqRU9WhknJ2LGEGr3gr4= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_PL SHA1-Digest: 99SD+7wBWg5i3ULzOfvsIBdcfxg= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_PG SHA1-Digest: 8pnXE42OyAMEI/fTSPobSACXJo8= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_PF SHA1-Digest: iVtxzepigYBrioYpgjgL4/zV11M= Name: res/drawable-xxhdpi-v4/ic_menu_search_holo_dark.png SHA1-Digest: I/r2cvlknD15rUGXW5nm9DVF/qY= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_PH SHA1-Digest: 7hU7esILVhSkqD8f6sDcuxi7c6w= Name: res/layout/abc_action_mode_bar.xml SHA1-Digest: df/w06TWwAPAlfisvfE5RPZOdkA= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_OM SHA1-Digest: enHQS8cZb0bMHhaWZSHw7JjV/5E= Name: res/drawable-mdpi-v4/ic_circle_fill_white_48dp.png SHA1-Digest: +hGOL77Oa+RQFPfsSRc5ZlJEP8c= Name: res/drawable-xxhdpi-v4/ic_brightness_6_gray.png SHA1-Digest: ZXvqne3E6RV4Q7axhDNG7G/3KYc= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_JO SHA1-Digest: cDydACEnjJQ3VRPft2ueyyOrZUw= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_JP SHA1-Digest: By35s5+LL76yKqlRkmmHS3KMKVM= Name: res/layout-v16/reminder_header.xml SHA1-Digest: RXIuzBt+Tjfn0jdUoSQcUcdbJ38= Name: res/anim/abc_fade_out.xml SHA1-Digest: MfCV1efdxSKtesRMF81I08Zyvvo= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_JM SHA1-Digest: ykBAAUK7ebJec7pPi/GPbrtNwV4= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_IE SHA1-Digest: 8m3bYBFol+2VXXdT0StUEQv5G/s= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_ID SHA1-Digest: CPgOxZPJjD+1sj2wxoAuKLnlZKs= Name: res/color/date_picker_year_selector.xml SHA1-Digest: mzic+nE8/95kRepfSgWKMe2If+Y= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_QA SHA1-Digest: Q7+/DsbqBWpcodl5tp/zNX+HsU8= Name: res/drawable-xhdpi-v4/abc_list_pressed_holo_dark.9.png SHA1-Digest: I+f9Vf8JVX6hz0eqBuaNI+f4Rtc= Name: res/drawable-xhdpi-v19/switch_thumb_pressed_holo_light.9.png SHA1-Digest: YcyJfNOau/BOW/i7/AKIHt1H59o= Name: res/drawable-hdpi-v4/textfield_default_holo_light.9.png SHA1-Digest: xrFOt/AjhDtJdBUDzaDAa/6vFAw= Name: res/drawable-hdpi-v4/abc_list_selector_disabled_holo_light.9.png SHA1-Digest: 1gu0+JdGxgtkd7hnwaQbfLEaaZc= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_PT SHA1-Digest: sQPprObv8wvwXNJSMeaTVSHxgIA= Name: res/drawable-mdpi-v4/ic_arrow_forward_dark.png SHA1-Digest: O5Qd9Jq8h7GlnewL1WOPfkZghrs= Name: res/drawable-xhdpi-v4/ic_movie_creation_light.png SHA1-Digest: zN1pLotK/okrFKF+MCECFOIPPoY= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_PR SHA1-Digest: ZysPJunUa0T0rACj7ALZYCvs6MQ= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_PS SHA1-Digest: SvxLEqOsfh1dOAUs1R8YHShra/4= Name: res/animator-v11/upper_play_to_pause_animation.xml SHA1-Digest: CH6i3wvXxZikQo+RDdI061uMQ44= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_IS SHA1-Digest: YUWDp9NUreWoOr7ROJl5u3DmTFA= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_IT SHA1-Digest: KC5y45aL2Nc7FBvwsUqiAFxZ8AQ= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_IQ SHA1-Digest: LfzsWJsxP3a6Qf8adFv3LTQrnzg= Name: res/drawable-xxhdpi-v4/icon.png SHA1-Digest: DF9F713jv+PmMazzAZGr/P2JxVw= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_IR SHA1-Digest: +7hdHrc9JJbgo0k9qBZad56aluk= Name: res/layout/led_pattern_dialog.xml SHA1-Digest: AJgxEyYRo9s2kZ9HvLVtLA0vzHI= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_IM SHA1-Digest: jv8BgLIst/kWfuqL/5mm2b6s9pw= Name: res/drawable-xhdpi-v4/ic_save_all_white_24dp.png SHA1-Digest: 3tp2j8TYT6D54seciaokjd5iT/Y= Name: res/layout-v16/fragment_submit_log.xml SHA1-Digest: Tp9v8hVCSzsufY/K0Wjimy/K6NY= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_IN SHA1-Digest: RR6+qxNlw78RwOp4avdOhJRxi5o= Name: res/drawable-mdpi-v4/abc_ic_commit_search_api_mtrl_alpha.png SHA1-Digest: iw5pKwcqPnAN4tMkq40FTN1cl9Y= Name: res/drawable-mdpi-v4/switch_thumb_activated_holo_light.9.png SHA1-Digest: 37aTq/CoCuhzr5/FuGa2TR5yBiA= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_IL SHA1-Digest: eSh3TmfbgxUyI8XHgpTsE8pFZHE= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_PY SHA1-Digest: V6I4RhTfKMJkEbU8sViQzBiNimk= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_PW SHA1-Digest: zh3SBlvOt91/rr+pD8Ly4qVwaOw= Name: res/drawable-xhdpi-v4/ic_info_outline_light.png SHA1-Digest: sdxIp0ru8cC0FFPEai6mSxfHMzU= Name: res/drawable-xxhdpi-v4/spinner_default_holo_light.9.png SHA1-Digest: TcXBLoAjAlB5KEh8iwVEKiOanVI= Name: res/drawable-hdpi-v4/list_selected_holo_light.9.png SHA1-Digest: DS5Yp1zkxBKJsNnlKmSULzDXa7o= Name: res/drawable/emoji_category_nature_light.xml SHA1-Digest: XOW2DJi5AEuHa9UyAa/oHy0FlEA= Name: res/layout/expiration_picker_view.xml SHA1-Digest: /BAPvlFk6lxvGIC09fxHSrVgPrY= Name: res/color/abc_tint_seek_thumb.xml SHA1-Digest: FDKqDoo0BfucHiPLX7REsb4CYSE= Name: res/drawable-mdpi-v4/ic_backspace_grey600_24dp.png SHA1-Digest: pHDjzFjkheW4rZrnmh8p760MMqo= Name: res/drawable-hdpi-v4/abc_switch_track_mtrl_alpha.9.png SHA1-Digest: aq/s3PoS9wD33oPeDdmP98R6Bkk= Name: res/drawable-mdpi-v4/ic_emoji_symbols_normal_dark.png SHA1-Digest: FBvIHdZsFfYRON6AqPfYLAok0v4= Name: res/anim/design_fab_in.xml SHA1-Digest: dRcgYgcLN0gY/2aHKJnWN/oMfkI= Name: res/drawable-mdpi-v4/ic_group_white_24dp.png SHA1-Digest: QXHm8eyZboUzma/MK/o3+qFfxzk= Name: res/layout/abc_select_dialog_material.xml SHA1-Digest: m/HAYUMmUYOA2sV/u//sgq1vaM4= Name: res/layout-v11/notification_media_cancel_action.xml SHA1-Digest: /KZyZOzEiShP2cP0cqnTYl+6vGU= Name: res/drawable-hdpi-v4/ic_photo_camera_dark.png SHA1-Digest: IKp0/V8LAGAHfsN4JipH/ujhdDY= Name: res/color/recurrence_bubble_text_color.xml SHA1-Digest: idGG95iKAtZmusEgO3vjFXWCANc= Name: res/drawable-hdpi-v4/ic_emoji_nature_activated_light.png SHA1-Digest: wBlcPKixV6Bk+qfZr/ycmArmNwQ= Name: res/drawable-hdpi-v4/textfield_activated_holo_light.9.png SHA1-Digest: Afh8MLGJ3Tx9XRM7C/09jOu01ZE= Name: res/drawable-xhdpi-v4/switch_bg_holo_light.9.png SHA1-Digest: saSmYyqe/82/e2GZuWPAi3VYDPE= Name: res/drawable-mdpi-v4/ic_lock_light.png SHA1-Digest: TRdyBXSOem1dsUjaBzd8/ufLsOg= Name: assets/emoji_objects.png SHA1-Digest: vALA6/+WIvuV6gUb5XbcWg5VSS8= Name: res/drawable-xxhdpi-v4/abc_btn_radio_to_on_mtrl_000.png SHA1-Digest: ycXiJ7g1XDwZNYF8OiLagssfXOA= Name: res/layout/prompt_apn_activity.xml SHA1-Digest: p5/2YIBeEGxZYeAJbvAKThhH7z4= Name: res/drawable-hdpi-v4/ic_backspace_normal_dark.png SHA1-Digest: 35+MSRD5ygupxDY0umiLF9T/ZgI= Name: res/drawable-hdpi-v4/ic_emoji_objects_normal_light.png SHA1-Digest: oW1o9u6laSE6YgoL40jv1x4TR4g= Name: res/drawable-ldrtl-xxhdpi-v17/abc_ic_menu_cut_mtrl_alpha.png SHA1-Digest: KzIuknZAyLH6woubBE32LAuZqFM= Name: res/drawable-sw600dp-hdpi-v13/ic_backspace_disabled_light.png SHA1-Digest: H9IeEe0/jFQZOlID5e+NFaG/pbY= Name: assets/databases/apns.db SHA1-Digest: PvPGqzaWrCJm692iqCn6D7uqZrw= Name: res/drawable-mdpi-v4/ic_photo_camera_light.png SHA1-Digest: ZgixC6ooxM2zs7ANDtRkJ/6PGQA= Name: res/layout/abc_search_view.xml SHA1-Digest: X0QMGszzHYu5/xIJT5n3LBD5gLw= Name: res/drawable-hdpi-v4/ic_mood_white_24dp.png SHA1-Digest: mAWYrnNo+676Ppv2zP9Evc2kNgw= Name: res/drawable-xhdpi-v4/ic_dialpad_white_24dp.png SHA1-Digest: 0erSDWulaDULF69XKAVhXp3crZY= Name: res/drawable/blocked_indicator_background.xml SHA1-Digest: gweHS1jBesmRyU+v0uYavvSZZY8= Name: res/drawable/emoji_category_people_dark.xml SHA1-Digest: 9SFLcnIfRHzdjByBVaLzU3UPOBU= Name: res/menu/media_overview.xml SHA1-Digest: EwI1bqJOoKrYUQvxSrkG+J8bubY= Name: res/drawable/list_selector_background_transition_holo_light.xml SHA1-Digest: b1H87ZIpIiBv7j8kdjbZ6lJmBU0= Name: res/drawable-xxhdpi-v4/check.png SHA1-Digest: AHjC+CFtOBHmDfRHyZazIpV9Ty0= Name: res/drawable-xxxhdpi-v4/ic_done_all_white_18dp.png SHA1-Digest: wy16yLWb3UsNN+/u7g7sDkPLzJU= Name: res/layout/import_export_activity.xml SHA1-Digest: UpNSytODYyXtqkCrkmmHKvi48O0= Name: res/drawable-mdpi-v4/ic_send_insecure_white_24dp.png SHA1-Digest: 5khri+ycEOaa+uANreHte5bedcE= Name: res/drawable-mdpi-v4/ic_launch_white_24dp.png SHA1-Digest: R8WccwkebYOiH17djRNCJO1ZWHU= Name: res/drawable-xhdpi-v4/abc_ic_menu_copy_mtrl_am_alpha.png SHA1-Digest: uEqQdj8O/DgiXxPIGMvGrKY7dTE= Name: res/drawable-xhdpi-v4/abc_popup_background_mtrl_mult.9.png SHA1-Digest: ZbFwYRiDS6lC6psf14qui2W4zQQ= Name: res/drawable-xhdpi-v4/ic_textsms_grey_32dp.png SHA1-Digest: cgCiwCpkSgZW5huIGhEXKOh3dAk= Name: res/layout/keyboard_text.xml SHA1-Digest: 1uoV25AMIO86X5CcKpAv2n3qp3c= Name: res/drawable-mdpi-v4/ic_forum_grey_32dp.png SHA1-Digest: 1z1SD83iKbd/LIIUa4Cjqv9Ukfc= Name: res/layout-v17/conversation_fragment.xml SHA1-Digest: LWMFmGevNKwiLFfhK1FKaZSy5AM= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_7 SHA1-Digest: R13VmLCbBwMg6K479CnJtnC+bXs= Name: res/drawable/recurrence_bubble_fill.xml SHA1-Digest: f3GCv6rhCWwIFFg/JzEgZSezfvU= Name: res/color/date_picker_selector.xml SHA1-Digest: Rf67bugjGG1v+PbKB7h61LPHgKY= Name: res/drawable-xhdpi-v4/ic_unlocked_white_24dp.png SHA1-Digest: lbswHZMt8w9hR/nYqPXIIluZHwk= Name: res/drawable-xxhdpi-v4/switch_thumb_holo_light_v2.9.png SHA1-Digest: /dwwrT/7gkG9oNAKszZBP8puxAs= Name: res/drawable-xhdpi-v4/textfield_activated_holo_light.9.png SHA1-Digest: Gmocm6iACu2JtEPjYWad8j6ha90= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_350 SHA1-Digest: FL/nPG4XaSrRGuHfx7krOQDoLG4= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_352 SHA1-Digest: AQbsxBOsaCrzJXI/KS99rfUChNg= Name: res/drawable-xhdpi-v4/ic_mood_grey600_24dp.png SHA1-Digest: Te4e3OJMxFFD1PNny1b3S6DU9f4= Name: res/drawable-xxhdpi-v4/ic_emoji_places_normal_light.png SHA1-Digest: LRzqMDxdNFEw41n3ZT5kGYiAUbI= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_351 SHA1-Digest: 8gUjWk4JW0A+ylZayZHRoen3pFU= Name: res/layout/conversation_list_item_action.xml SHA1-Digest: I1nQIFRFmKjx1XbSAms2IvXJat8= Name: res/drawable-xhdpi-v4/abc_text_select_handle_right_mtrl_dark.png SHA1-Digest: o0rLAcxJ1uf5HaqOAfX0y2STqh8= Name: res/layout/abc_list_menu_item_icon.xml SHA1-Digest: IHjMoWWbSOePG8X4KyBCdZH/r0I= Name: res/drawable-hdpi-v4/sms_selection_icon.png SHA1-Digest: sk1UsWnhwGIOfiwT3j8Jx762tcc= Name: res/drawable-xxxhdpi-v4/abc_scrubber_control_to_pressed_mtrl_000 .png SHA1-Digest: w/MYb1Y/O4Mr/eHUFvYCPi7mkN4= Name: res/drawable-hdpi-v4/ic_group_grey600_24dp.png SHA1-Digest: 5F4bdAqt0YgzmXJCDpWZpzTA5Jw= Name: res/layout/calendar_date_picker_done_button.xml SHA1-Digest: gxPgQ8xj+t/2whmi1WrYjG5+QFo= Name: res/animator-v11/bottom_play_to_pause_animation.xml SHA1-Digest: 2HngVRTUpoolPPl48CkjVhPeluM= Name: res/drawable/ic_check_dark.xml SHA1-Digest: FdXDDSXEKEiwTZQtLi75Mh5C1zk= Name: res/drawable-hdpi-v4/abc_text_select_handle_right_mtrl_dark.png SHA1-Digest: AYI75XDJNXJcd4t4N9dhUkz5G4U= Name: res/menu/log_submit.xml SHA1-Digest: rxGA9EsEgMMsl4FbewMeXKJyMTY= Name: res/menu/local_identity.xml SHA1-Digest: TJYkQb/JH6dHdmcQHfGCke96cmU= Name: res/drawable-mdpi-v4/abc_switch_track_mtrl_alpha.9.png SHA1-Digest: QhKzfQqaMjEUNLGmR/QjnJ0PWe4= Name: res/layout/notification_action.xml SHA1-Digest: JmRjtkOSBAI3rsHo/PoIRtsj2y8= Name: res/drawable-xhdpi-v4/ic_badge_24dp.png SHA1-Digest: G9nZTCoNM7ie0lZLXF8gK7O34PE= Name: res/drawable-mdpi-v4/ic_emoji_nature_activated_dark.png SHA1-Digest: EMpCxgETUVL4ZUAnoRdLf3aCN6k= Name: res/drawable/abc_tab_indicator_material.xml SHA1-Digest: HLMNWYzS8Xr2+cGXFiCZarvGfLw= Name: res/drawable-hdpi-v4/ic_visibility_off_white_24dp.png SHA1-Digest: Ee1fJ0/c+3gTtFZObRlZN6iG1F8= Name: res/drawable-xxhdpi-v4/abc_ic_star_half_black_16dp.png SHA1-Digest: pj+V2r2pJOgJwGGNpeqxnykl0Nc= Name: res/drawable-xxhdpi-v4/ic_menu_lock_dark.png SHA1-Digest: 03Mv6ahkfeQYPbwTCNFniVzRa3w= Name: res/drawable-hdpi-v4/ic_message_black.png SHA1-Digest: MTfDuKQgatE5sG87kXcLreYWyMg= Name: res/drawable-xhdpi-v4/sms_system_import_icon.png SHA1-Digest: IAmHCAxi+fY3FkaMMeciB5ijY04= Name: res/color/text_color_secondary_dark_theme.xml SHA1-Digest: FcQtMrYBHKUcrsrYAJtGmMi4wYU= Name: res/drawable-mdpi-v4/ic_backspace_disabled_dark.png SHA1-Digest: H5+tE8X57E9mXFocXcA2hEo0+f8= Name: res/drawable-xxhdpi-v4/ic_lock_white_18dp.png SHA1-Digest: Kt/G+GU5idOPr2lY6h7w+DEv6p0= Name: res/drawable-mdpi-v4/abc_text_select_handle_right_mtrl_dark.png SHA1-Digest: Su848yQo1YikW7QsiNSK72I0OiY= Name: res/layout/conversation_list_item_view.xml SHA1-Digest: n97/uRTwX6TNoaWizjfLy8ehXWM= Name: META-INF/fdroidserverid SHA1-Digest: qOTzsGoP5INTEonrAW6n9b7mr+E= Name: res/drawable-xhdpi-v4/ic_group_grey600_24dp.png SHA1-Digest: Lr3KbNyfIHhtS8LsvIQUgd5PJKw= Name: res/drawable-mdpi-v4/list_selected_holo_light.9.png SHA1-Digest: nPWNtANp5FoH4n/kEIShr57wI3s= Name: res/drawable-xhdpi-v4/ic_refresh_white_24dp.png SHA1-Digest: N51rcLLXF/W6X5Pq2y5DQhdR/nw= Name: res/layout/recurrencepicker.xml SHA1-Digest: AvGW3h5hKVIh8gMmLOGPzVyLlPQ= Name: res/layout/radial_time_header_label.xml SHA1-Digest: jG/CTw9j1K3lcDFDIgdE5CyoIfA= Name: res/drawable-xxhdpi-v4/ic_group_grey600_24dp.png SHA1-Digest: Z2itXwWg1njYcU7Vx/87vK9U9+s= Name: res/drawable-v11/notification_bg_low.xml SHA1-Digest: Kupt+v67mjNiM4qtFnzAExBwrNU= Name: res/drawable-mdpi-v4/ic_emoji_emoticons_activated_dark.png SHA1-Digest: j5W6WrE76fGRF389dWTaNUyUR4s= Name: res/drawable-mdpi-v4/icon.png SHA1-Digest: bR38XMQJ/yvQLfhVPoKY+UcLYWM= Name: res/drawable-xxhdpi-v4/ic_missing_thumbnail_picture.png SHA1-Digest: 1iK6XuDBSv30IlCHuRdy3ZKossg= Name: res/layout-v17/notification_action_tombstone.xml SHA1-Digest: oohvgUyY9KkKf/x62dUuNKq99sQ= Name: res/drawable-mdpi-v4/ic_done_white_18dp.png SHA1-Digest: 3tzbFFmR3vxyZUfyIQUTGhGl/CY= Name: res/drawable-xhdpi-v4/abc_ic_menu_selectall_mtrl_alpha.png SHA1-Digest: 6HHq6ho9WzMHZQyJ3+YbSbrpNCk= Name: res/anim/abc_grow_fade_in_from_bottom.xml SHA1-Digest: kWfUczBIbB0kTzFgtIQfNc6uPrA= Name: res/drawable-mdpi-v4/abc_ic_star_black_16dp.png SHA1-Digest: Qgvko8tYzI3XirPVbeipvcFF07I= Name: res/drawable-mdpi-v4/ic_dialpad_white_24dp.png SHA1-Digest: /phYMjwLhgWEqFdKp3sf0bZCetY= Name: res/drawable-xhdpi-v4/ic_emoji_nature_activated_dark.png SHA1-Digest: 3qKTC9l9Rgn/vIDiiVg9qEGZJvA= Name: res/drawable-mdpi-v4/notification_bg_low_pressed.9.png SHA1-Digest: sZI/MrQgBXh2aJFcQWzZXWRcBz0= Name: res/layout/recurrencepicker_end_text.xml SHA1-Digest: wXzrOR5iZtN/GsctD/Krbckccls= Name: res/drawable-xxxhdpi-v4/abc_ic_star_half_black_16dp.png SHA1-Digest: l5P17R7tfjGW/U6cw97ToLROGKg= Name: res/drawable-xxhdpi-v4/ic_block_grey600_18dp.png SHA1-Digest: ThyJLvDUQYnunmq8D2/6laaJdWU= Name: res/layout/abc_action_menu_layout.xml SHA1-Digest: whck/Mt3xmSgUFtEnQ+OiTzehFg= Name: res/layout/media_overview_item.xml SHA1-Digest: Zkyp88QoapfkHZKBQoxWNwvj268= Name: res/layout-v13/recipient_preference_activity.xml SHA1-Digest: PachDk/y8n0/Jj7THRp4GKshXUU= Name: res/drawable-mdpi-v4/ic_recurrence_bubble_disabled.png SHA1-Digest: rCUeT9mUua4IT1NK1wuImEuOvdM= Name: res/drawable-hdpi-v4/ic_movie_creation_dark.png SHA1-Digest: HeZenD7UJNHySCebYE7T/ULjL+s= Name: res/anim/animation_toggle_out.xml SHA1-Digest: h5RFa/NEbVssJaJQDR+GOgcbjF0= Name: res/drawable-v21/abc_ratingbar_small_material.xml SHA1-Digest: wPrz0/gmu9ygjwoOdEMFAq9SO+E= Name: res/drawable-hdpi-v4/abc_popup_background_mtrl_mult.9.png SHA1-Digest: Z6SIIC97mku9jiqDCLc6pgfmpn4= Name: res/drawable-hdpi-v4/ic_emoji_places_activated_dark.png SHA1-Digest: NwPCQzO7bnY5CbC66rOJvNyK5Rk= Name: res/drawable-xhdpi-v4/ic_backspace_grey600_24dp.png SHA1-Digest: 7ht7wvyJK0vJfBxK2iJ1af0sBAc= Name: res/drawable-mdpi-v4/icon_cached.png SHA1-Digest: 9qBwDJ7BPNIBC3zXO4Bicuzo2wY= Name: res/drawable-xxxhdpi-v4/abc_btn_switch_to_on_mtrl_00001.9.png SHA1-Digest: u7p4+i+MbX5Isql4KGmTM6mrhJ8= Name: res/drawable-mdpi-v4/divet_lower_right_light.png SHA1-Digest: twJYsBFi/eZQzvXXVIMujFr3I3s= Name: res/layout/notification_template_icon_group.xml SHA1-Digest: 6qGSW9wFVndQ13DzZNecTnraDAs= Name: res/drawable-xxhdpi-v4/ic_unarchive_white_36dp.png SHA1-Digest: rF3YHRYfZzIzFX3CHCuhU8yuWR4= Name: res/layout/create_passphrase_activity.xml SHA1-Digest: hN8Af78Y/DR3tvVslR3BOzVVp4A= Name: res/layout/calendar_date_picker_selected_date.xml SHA1-Digest: zpS0QM2B4CzXty9Y5hrPXFeJY2Y= Name: res/drawable/emoji_category_emoticons_dark.xml SHA1-Digest: 11zp4K8bRQx+l2mlZfM0Gni86XM= Name: res/drawable-xxhdpi-v4/ic_search_white_24dp.png SHA1-Digest: JHy06egZz7rzVRiem3CUM66szEI= Name: res/drawable-xxxhdpi-v4/abc_text_select_handle_right_mtrl_light. png SHA1-Digest: zOCXfAxJchHRxMozw8XoHhVJJ3Q= Name: res/menu/conversation.xml SHA1-Digest: hSfHkyXysOtwJJEMx8X1yVNW7xU= Name: res/drawable-hdpi-v4/ic_block_white_18dp.png SHA1-Digest: 3y2ZHGdSmjVtP8PyEQd6Ss+S1SA= Name: assets/emoji_flags.png SHA1-Digest: +csJvSPQ400RI0ujnYElBq3F+Hk= Name: res/drawable/circle_tintable.xml SHA1-Digest: z8l8kMwAv5KMQnIRC+XEP+FC9Sw= Name: res/color/abc_btn_colored_text_material.xml SHA1-Digest: u4U/bWVgc1pHJlW6mCDxZUa/nwg= Name: res/drawable-xhdpi-v4/ic_attach_white_24dp.png SHA1-Digest: Z1lRPPOpob8mxDEUKsmL3h4bRPk= Name: res/drawable/abc_dialog_material_background.xml SHA1-Digest: mLGxn48GAFs7+4j22JOs3ea71o0= Name: res/layout/custom_default_preference_dialog.xml SHA1-Digest: 5nvWqkqbyYLDQhoAsNjl2z76MZI= Name: res/drawable-mdpi-v4/ic_recurrence_bubble_outline.png SHA1-Digest: xD9e+mYD3r++KKOwuVHCB7xzTOc= Name: res/layout-v21/conversation_item_received.xml SHA1-Digest: ReOpCLs5xCUjd8odU8FQz1kuUfg= Name: res/drawable-hdpi-v4/ic_emoji_symbols_normal_dark.png SHA1-Digest: xqJw3AR+/RRR5z9TNwngCdiYDEE= Name: res/drawable-hdpi-v4/ic_emoji_people_activated_light.png SHA1-Digest: k/ZDynZqj37HUstyx1QoGZgr7J8= Name: res/layout/keyboard_with_header.xml SHA1-Digest: wA00i1le3a5Rkzsu26QpDvTUGFI= Name: res/drawable-xxxhdpi-v4/ic_block_white_18dp.png SHA1-Digest: tZn04OM4AjY8u3ZIx4AfhTCX9bo= Name: res/layout/change_passphrase_activity.xml SHA1-Digest: jm/0knHyFdtiPzveSI6NAxp9Rq8= Name: res/drawable-xhdpi-v4/ic_emoji_objects_activated_light.png SHA1-Digest: 4dWl03s0Q3bS4dHBQ1e37GXJNWk= Name: res/layout/abc_action_bar_up_container.xml SHA1-Digest: YB9Q34xo4iOAMJD2OyrUmLDHoTg= Name: res/drawable-xxxhdpi-v4/ic_done_white_18dp.png SHA1-Digest: KUGfV0nSE93yLVYBtZzSzJULZBs= Name: res/drawable-xhdpi-v4/ic_photo_library_white_24dp.png SHA1-Digest: 3xGAmqq7T+1Rz9GezQHGhC+3WQU= Name: res/color-v11/abc_background_cache_hint_selector_material_dark.x ml SHA1-Digest: XEu3fV1TnwtDyw4lIFQ7Itsjbn0= Name: res/drawable-mdpi-v4/abc_ic_menu_copy_mtrl_am_alpha.png SHA1-Digest: ZMcwudVDoUT8fuUQX58XOmOX7Qk= Name: res/layout/calendar_year_label_text_view.xml SHA1-Digest: /O2/BvuNy/vUR7Nw2Tr9GAZR9Xo= Name: res/drawable-hdpi-v4/ic_menu_remove_holo_light.png SHA1-Digest: xEu8Zhu8WHensenJ0i8frUqsgIA= Name: res/drawable-xhdpi-v4/ic_delete_black.png SHA1-Digest: Wmcf+HJHP8i85MraoQbpa1QnSEA= Name: res/drawable-hdpi-v4/dialog_full_holo_light.9.png SHA1-Digest: 504Hf96uSL+l0BR84bvm9i98TbA= Name: res/drawable-xxhdpi-v4/ic_group_white_24dp.png SHA1-Digest: t96AuBV2ou+QlUWMgBsZxR0KKtA= Name: res/drawable/contact_photo_background.xml SHA1-Digest: wcH56qoRh/roa5MfCRAUhY5VXOQ= Name: res/menu/conversation_unmuted.xml SHA1-Digest: iGPzWVNCvf+sAJqdMTdIpoAM4UA= Name: res/layout/design_navigation_item_header.xml SHA1-Digest: J2mqonDhWjJsKM5KGR7MNEsL25k= Name: res/layout/thumbnail_view.xml SHA1-Digest: T06Ye5dxfHId2W1rPjoJWvkqBkg= Name: res/drawable-hdpi-v4/switch_thumb_disabled_holo_light.9.png SHA1-Digest: Oiup3l4uNF0B12bFkgZ5ZbKU4eM= Name: res/drawable/clickable_card_light.xml SHA1-Digest: KWl99LsBvQRSQgTPb0LNhchkJUk= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_358 SHA1-Digest: VvyTT/9LksUV4HPNbIQ7v9P3pTA= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_359 SHA1-Digest: s/VIZLolJRrHzUwl20EGXxrhYHU= Name: res/drawable-mdpi-v4/ic_contact_picture.png SHA1-Digest: ZCfKulN5bb8ZikHdvhlcqyY9x04= Name: res/drawable-mdpi-v4/lockscreen_watermark_light.png SHA1-Digest: kSry/5rdpYVffPBKS2Yy/krmC2M= Name: res/drawable-xxxhdpi-v4/ic_forum_grey_32dp.png SHA1-Digest: rNQVPXBNhV93dqQ/Fiu5vNvLuBs= Name: res/drawable-mdpi-v4/ic_emoji_objects_activated_dark.png SHA1-Digest: 9PHPrHu/3aQtyxD1+RTbm9cibcE= Name: res/drawable-xxxhdpi-v4/ic_launch_white_24dp.png SHA1-Digest: P59Tq3p+JAxrOryrDqSOJi+TN8E= Name: res/layout-v11/notification_action_tombstone.xml SHA1-Digest: LvDZJkSa4kdT49E6SqH54/rMffQ= Name: res/drawable-mdpi-v4/abc_ic_star_half_black_48dp.png SHA1-Digest: zE/R5xsR97x8GBTk7wQpVwZn2kA= Name: res/layout/audio_view.xml SHA1-Digest: 2ADoSjXlHFHxmqJFwLvinFy0dP8= Name: assets/emoji_faces.png SHA1-Digest: 3iRFxvoz43yD5utC20esxUfeHtk= Name: res/animator/upper_pause_to_play_animation.xml SHA1-Digest: 04mBHR+Cgllch7nL8htY67n82OE= Name: res/drawable-mdpi-v4/ic_delete_gray.png SHA1-Digest: /iJSk3txqIMpR0Sdea7I5/nIgE4= Name: res/drawable-mdpi-v4/ic_clear_search_holo_light.png SHA1-Digest: pOnppS7KXFY3taOIxA+VL/9lAMk= Name: res/drawable-mdpi-v4/ic_menu_lock_dark.png SHA1-Digest: OciK3SpJATGkVfvuSS0zQTJozdo= Name: res/layout-v11/color_fragment.xml SHA1-Digest: yHf3YSStEI41oNH6Dqql6yiXuVM= Name: res/drawable-xxhdpi-v4/ic_emoji_objects_activated_light.png SHA1-Digest: 7hg/qeC1NwPtOHGwK5ewb+ARKUU= Name: res/drawable-xxhdpi-v4/ic_mood_white_24dp.png SHA1-Digest: aATDrQkGwh8G3SL4XUObM4bY3fA= Name: res/drawable-hdpi-v4/ic_pause_circle_fill_white_48dp.png SHA1-Digest: YMalFZPBey4XfYSiNduE3Lqso4I= Name: res/drawable-v21/notification_action_background.xml SHA1-Digest: gFNJlvGPCPdrqikkFXVxi9K4GPQ= Name: res/drawable-xxhdpi-v4/ic_advanced_gray.png SHA1-Digest: VOzt7g2O+/MLQEnTBXew6o2N/T4= Name: res/drawable-mdpi-v4/ic_send_white_24dp.png SHA1-Digest: iRHc4QuCP9H7s2/KnXUDs8sHrwE= Name: res/drawable-xhdpi-v4/abc_scrubber_control_to_pressed_mtrl_005.p ng SHA1-Digest: bfZIl6CVmkC/rfSoxwLRIE9yYeY= Name: res/drawable-xhdpi-v4/abc_scrubber_track_mtrl_alpha.9.png SHA1-Digest: 1Ih2zOyUzHfQqptwXGLdPfBUSns= Name: res/drawable/background_pattern_repeat.xml SHA1-Digest: EEgb/vIb0/VFJJgS0/MIpgsTEn0= Name: assets/emoji_places.png SHA1-Digest: m/f0hGfQoPzldCayMIi+KuOkEX4= Name: res/drawable-hdpi-v4/abc_btn_radio_to_on_mtrl_000.png SHA1-Digest: VW+74R1Hvl4mKIUXFrQ1+5K+/cE= Name: res/drawable-xxhdpi-v4/abc_scrubber_control_to_pressed_mtrl_005. png SHA1-Digest: ZV+bRJxAcgFQ6LcFfSQS0pjmxiI= Name: res/drawable-ldrtl-xhdpi-v17/abc_ic_menu_copy_mtrl_am_alpha.png SHA1-Digest: M5uPxBtgV+CMfjCXzk/6+os9DZs= Name: res/drawable-xxhdpi-v4/ic_dialpad_white_24dp.png SHA1-Digest: niV5rPhrG06CAAYbZlmaso9C+8g= Name: res/layout-v16/color_fragment.xml SHA1-Digest: lB1JB9yraLF+r5m5vyr7eduE144= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_373 SHA1-Digest: VeJdhu3EY8wQbzczMbiAueR3kcg= Name: res/drawable-mdpi-v4/quick_shutter_button.png SHA1-Digest: 2FtKBm5m6sU/LXkCiKFqhU9iNgQ= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_372 SHA1-Digest: 9XbPZyYd/EeHczEcjCTlJ2wquFM= Name: res/drawable-mdpi-v4/ic_emoji_people_activated_dark.png SHA1-Digest: bOl0syyt8YtGvRnYpNjqAOnFihU= Name: res/drawable-mdpi-v11/icon_notification.png SHA1-Digest: 0R2WWMtPDe6EymAwthJIbRcnyz4= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_375 SHA1-Digest: PNdFFZIpo4wtdnnyz/Wp8jU8VF8= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_YT SHA1-Digest: +vjLMpF41agFrIHPfcAQNAFz5go= Name: res/layout-v17/notification_template_media.xml SHA1-Digest: iCf+9+sQE4RgdLhM+IWUq5vXtcY= Name: res/drawable-xhdpi-v4/switch_thumb_holo_light_v2.9.png SHA1-Digest: lTaQlla7wJWRfNbx/Hu+VJaDlXY= Name: res/drawable/abc_ic_menu_overflow_material.xml SHA1-Digest: C8lOzyzsDos77nJfisrycpBcUCg= Name: res/layout/badge_widget.xml SHA1-Digest: Foo9DmBJwFE77cIEKxYE5Gb0STw= Name: res/drawable-mdpi-v4/spinner_pressed_holo_light.9.png SHA1-Digest: O8B882Dl2Rt2oOS4plpeX8GCUAQ= Name: res/menu/conversation_mms_group_options.xml SHA1-Digest: 75WeWlg+lziJM4pv6UCGiv8nxtY= Name: res/drawable-xhdpi-v4/quick_shutter_button.png SHA1-Digest: MooO8IzRosO1l7jroeczOIZMyTo= Name: res/layout-v17/contact_selection_list_item.xml SHA1-Digest: xQXlGCgCZ6yfo118S4CvKiagNq4= Name: res/drawable-hdpi-v4/transfer_controls_background.9.png SHA1-Digest: bB3l+bAb+LvTfoWtF9LZilz3X5E= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_380 SHA1-Digest: E0pemWil3+yoXcDS1xZEp8+FN3I= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_381 SHA1-Digest: xZ5XwW7Jz0Hhq9Odxqo803v/5Ws= Name: res/drawable-xxhdpi-v4/ic_mood_grey600_24dp.png SHA1-Digest: TrEPgqLMZ0HTkvWT3Fsjtq1U2Vs= Name: res/drawable-mdpi-v4/ic_menu_search_holo_dark.png SHA1-Digest: mCM1XbeaaQT9LDW69E/m8yVI0PY= Name: res/drawable-hdpi-v4/list_selected_holo_dark.9.png SHA1-Digest: hSLKqpeDDArxDLbgz2eUcpI9DhU= Name: res/drawable-xxhdpi-v4/ic_visibility_white_24dp.png SHA1-Digest: bxaIi7BxLJzQBugWxh4e0S4BfcQ= Name: res/drawable-xxhdpi-v4/splash_logo.png SHA1-Digest: DJhdzzsZnMKXYBKbx/2F1HdjJ5Y= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_ZA SHA1-Digest: MDbMTzJv7V7nvzivSW18VLtR6Ls= Name: res/layout-v17/conversation_item_received.xml SHA1-Digest: EXfi52n9T5OfD2VlPWwxWF5zGcs= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_385 SHA1-Digest: 800patLGNib6NsjVJcV7fh1yw1A= Name: res/menu/conversation_secure_identity.xml SHA1-Digest: SjTQDbxCR22ZkNvp2zoRjJdGXj8= Name: res/drawable-xhdpi-v4/telephone.png SHA1-Digest: x1+9Kjh+KyB5te9ykHhx1ZmZyUI= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_ZW SHA1-Digest: XJvwF0HzX3D/vt0YWBE9fDUaR64= Name: res/drawable-xxxhdpi-v4/ic_send_secure_white_24dp.png SHA1-Digest: xB8flOZLpwaCmv+8xCCq9BXKpAo= Name: res/drawable-mdpi-v4/abc_text_select_handle_right_mtrl_light.png SHA1-Digest: Fn9hoN8NVPqsAyN/H4QnXfMFpHM= Name: res/drawable-xxxhdpi-v4/abc_btn_radio_to_on_mtrl_000.png SHA1-Digest: I0mWJRAs02Uqa4cRGnhl0DCYnV8= Name: res/drawable-xhdpi-v4/ic_action_warning_red.png SHA1-Digest: XVJGgjYUTuNrKHUV8n2l95KDwI4= Name: res/drawable-xhdpi-v4/spinner_pressed_holo_light.9.png SHA1-Digest: l07AAjv4APfDSMj2gVcl4QIryn4= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_ZM SHA1-Digest: /g5ZwRrbhNlGJMPdpLYKeT4t61Y= Name: res/drawable-v21/abc_ratingbar_indicator_material.xml SHA1-Digest: TaCO4rsv95JHS3RML2c940eQ9U8= Name: res/drawable/abc_cab_background_internal_bg.xml SHA1-Digest: OpZTAPON/eHCLK5xEp9Ei2cska4= Name: res/layout/conversation_item_pending.xml SHA1-Digest: nooD6q7K9R3KibkZT0hYC2X0OC0= Name: res/drawable-mdpi-v4/ic_missing_thumbnail_picture.png SHA1-Digest: LJRLxFzzaZa2Oflozl2B3m/jl4M= Name: res/drawable-ldrtl-xxhdpi-v17/abc_spinner_mtrl_am_alpha.9.png SHA1-Digest: IsziyF2OBzAviNmnk3+DRoNCmAA= Name: res/drawable-xxhdpi-v4/ic_info_outline_white_24dp.png SHA1-Digest: U09I+1Jg2gjdjMrIofJjietJQ7c= Name: res/layout-v13/select_dialog_multichoice_material.xml SHA1-Digest: qt6tjVkKv4OpiJSnVVsh/3YlFTQ= Name: res/drawable-xhdpi-v4/ic_recurrence_bubble_outline_disabled.png SHA1-Digest: dEBKH2kB71bXNj5gEuYAB8XzOug= Name: res/drawable-mdpi-v4/sms_selection_icon.png SHA1-Digest: mJ+FIMWmluLTgfVkc8h5fkAwBoU= Name: res/drawable-hdpi-v4/abc_ic_menu_cut_mtrl_alpha.png SHA1-Digest: qRCYZUzk2ijqbaq6h2ixzc8HbFg= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_855 SHA1-Digest: GFR3JT2vrXUV4AaCWsbkvT1AlX0= Name: res/drawable-mdpi-v4/ic_emoji_objects_normal_dark.png SHA1-Digest: bFOFdrV1PcYRI65aFXkfYM9OIuo= Name: res/drawable-hdpi-v4/abc_tab_indicator_mtrl_alpha.9.png SHA1-Digest: XUUeghiBJli27nxrwf5sxQ8N90c= Name: res/drawable-xxhdpi-v4/ic_call_white_24dp.png SHA1-Digest: C/IBlA9xde2di5j14wAyOnlqcA8= Name: res/drawable/abc_ic_clear_material.xml SHA1-Digest: PVn2E2PoeX3lHIOKqSVS61kIGmg= Name: res/drawable-mdpi-v4/abc_scrubber_control_to_pressed_mtrl_005.pn g SHA1-Digest: /HAj2ZcakO1w66fyAe8GERxXwXk= Name: res/layout/conversation_item_received.xml SHA1-Digest: 5zUW5qPxJ3jySZXLTjoXqJDh4r0= Name: res/drawable/abc_list_selector_background_transition_holo_dark.x ml SHA1-Digest: fAkCuPln1zmCTatmP9A40U4lWak= Name: res/drawable-xxhdpi-v4/abc_scrubber_control_to_pressed_mtrl_000. png SHA1-Digest: Eve5+sY3kLylSmhDHmYnvjkZAps= Name: res/drawable/clickable_card_dark.xml SHA1-Digest: oEQHpgloj5YJZTiKGjP26F3EVak= Name: res/drawable-xxhdpi-v4/ic_emoji_recents_normal_dark.png SHA1-Digest: tgKx3liU6pxYwNWGnbyv5D/Czno= Name: res/drawable-anydpi-v21/design_ic_visibility_off.xml SHA1-Digest: zGvQADjKorrDtblDDeg+FD7MgFo= Name: res/drawable-xhdpi-v4/ic_backspace_normal_light.png SHA1-Digest: 9k6zQKR7o4w+qSjIuJGCRkAwQ+g= Name: res/drawable-hdpi-v4/abc_scrubber_control_off_mtrl_alpha.png SHA1-Digest: ayEN/y2/KZk92Zl774asitbOxNY= Name: res/drawable-xxxhdpi-v4/abc_ic_menu_copy_mtrl_am_alpha.png SHA1-Digest: prowKilSHEAkLy2yRWje7IyMm2k= Name: res/drawable-hdpi-v4/ic_textsms_black_32dp.png SHA1-Digest: T1b4tBg9BfOzxxEg5zIb90C6M+Y= Name: res/drawable/import_export_item_background_dark.xml SHA1-Digest: cuztEmqbDw0+hjuQvpxQ5S+7z/8= Name: res/drawable-xxhdpi-v4/abc_btn_radio_to_on_mtrl_015.png SHA1-Digest: kOF2VzVE6Z/WMHMU96aVNFLvUgk= Name: res/drawable-hdpi-v4/abc_text_select_handle_left_mtrl_light.png SHA1-Digest: JweLCjivdDkQIw/RDW237ctDdhA= Name: res/drawable-xxxhdpi-v4/ic_send_white_24dp.png SHA1-Digest: VJhy6vM0Wd7zLNSXmW5UJ0fiBC4= Name: res/drawable-xhdpi-v4/ic_movie_creation_dark.png SHA1-Digest: qFrKM25Y6qZQfSutjcCOI0U2nj8= Name: res/drawable-mdpi-v4/ic_visibility_grey600_24dp.png SHA1-Digest: IeExyS3cXlzMiSUr9M8L4tHef5k= Name: res/drawable-sw600dp-xhdpi-v13/ic_backspace_normal_light.png SHA1-Digest: JvEQ+dN6zZ+vNjuF4JNOiUFIEQI= Name: res/drawable-xxxhdpi-v4/abc_ic_star_black_36dp.png SHA1-Digest: m00Wj6Inxz/EKEeNQdJaHcF1hy8= Name: res/drawable-xhdpi-v4/ic_content_copy_light.png SHA1-Digest: tyiYOAvb1Pj2PkkR2KEECSm6iR4= Name: res/drawable-hdpi-v4/switch_thumb_activated_holo_light.9.png SHA1-Digest: CctxDSFOgITRJNMJX0mhtDzP4DE= Name: res/drawable-hdpi-v4/ic_emoji_emoticons_activated_dark.png SHA1-Digest: mxD0E+98fWCc8W65aC8ifthwl7U= Name: res/menu/conversation_muted.xml SHA1-Digest: oLlQ6zDh6JjQ3GcyRwCj5hFIHLU= Name: res/drawable-hdpi-v4/quick_shutter_button.png SHA1-Digest: AJ/I4nSNNjmjqQlpgJ1t93h2aps= Name: res/layout/country_list_item.xml SHA1-Digest: 5/z34addyDwgm8fiRrEEt8My/KM= Name: res/anim/fade_scale_in.xml SHA1-Digest: BGInYJ2dY+FwSHntv4EVZBJwXyI= Name: res/color/done_text_color_dark.xml SHA1-Digest: ZO32dm0XbbkLZ53hbG/m5fIEIPU= Name: res/layout/calendar_date_picker_view_animator.xml SHA1-Digest: XMknXL4ZPfacp06vBrvpWdGEgpw= Name: res/drawable-hdpi-v4/notification_bg_low_pressed.9.png SHA1-Digest: hlGgjwCibYSJn0dDvquLScOoXss= Name: res/layout/three_keys_view_leftright.xml SHA1-Digest: 3Zvdz1WMTx1gWMF1H6PIlTmH67g= Name: res/drawable-hdpi-v4/ic_recurrence_bubble_disabled.png SHA1-Digest: SF/O/d5wRLKs974J+KyU0q/gia4= Name: res/drawable-hdpi-v4/ic_menu_search_holo_light.png SHA1-Digest: bzg6ZIQFerI0gya11Ew4hH/lGn8= Name: res/layout/design_bottom_sheet_dialog.xml SHA1-Digest: MQHSSV5PkRdnhGb17LD8cgzm3WM= Name: res/drawable-xxhdpi-v4/ic_emoji_people_normal_dark.png SHA1-Digest: KfDQHtfO71TYmuwZVmajJOc6Mew= Name: res/drawable-xhdpi-v4/ic_photo_camera_light.png SHA1-Digest: 6LlVOreCblgzk/5Rj9Y7yOfH0G0= Name: res/drawable-hdpi-v4/ic_photo_library_white_24dp.png SHA1-Digest: 7QUTeWjJwNF/UW6h8VnnzmzjhHI= Name: res/layout/abc_action_mode_close_item_material.xml SHA1-Digest: J3ykV+zggY5f/fs0BNDqNYo7RQA= Name: res/drawable-xhdpi-v4/ic_content_copy_dark.png SHA1-Digest: 8IU/BwID29XOawGRqYad3rzMmpU= Name: res/drawable-xxhdpi-v4/ic_info_outline_dark.png SHA1-Digest: YjCmtV6QEFdYlXMB6H8OlYSYkf4= Name: res/drawable-hdpi-v4/spinner_pressed_holo_light.9.png SHA1-Digest: 5Tb20GpfyWPdfk68H93Ix+I70zE= Name: res/layout/design_layout_tab_icon.xml SHA1-Digest: OpgFVS39nmdZdRaCD4FzFLJt5h4= Name: res/drawable/item_background_holo_light.xml SHA1-Digest: uzat/IohpDi38vClmuzzWAe4jzg= Name: res/drawable-mdpi-v4/abc_btn_switch_to_on_mtrl_00001.9.png SHA1-Digest: sORfnhpPIEXLnh57veYnu5sMZD0= Name: res/drawable-xhdpi-v4/ic_backspace_disabled_dark.png SHA1-Digest: 9pEICN2PFZBO2rIgSYABn+Pu/Hg= Name: res/layout-v11/notification_template_big_media_narrow_custom.xml SHA1-Digest: DMo9YNwCiB5C0JnhlBJHZPL/PYE= Name: res/drawable-v21/abc_btn_colored_material.xml SHA1-Digest: Exeq8outkyCU3j4roUcAlNp7sYk= Name: res/drawable-v21/avd_hide_password_1.xml SHA1-Digest: 4YaBUn+peG7+cOkgZp0Zim5sCNk= Name: res/drawable-xxxhdpi-v4/ic_download_circle_fill_white_48dp.png SHA1-Digest: Dlun14V1F9MsfUVX4BJnFUy45is= Name: res/drawable-v11/notification_bg.xml SHA1-Digest: shqaU1xo6CnJHjS9n6uJU/+iDWY= Name: res/drawable-ldrtl-xhdpi-v4/ic_send_white_24dp.png SHA1-Digest: /XfzuAyMpTd4oRq967TmSMPFQoE= Name: res/layout/notification_template_lines_media.xml SHA1-Digest: 5jFV9mECqvwlwK/2rFI2E2lZFbM= Name: res/drawable-mdpi-v4/ic_refresh_white_24dp.png SHA1-Digest: T+dpNJOBOOXzJWpfpGz56lse084= Name: res/drawable-anydpi-v21/design_ic_visibility.xml SHA1-Digest: cZ/iOJiTHcK5pMXO7FqvaQ+pJGU= Name: res/drawable-mdpi-v4/abc_textfield_default_mtrl_alpha.9.png SHA1-Digest: QAKVB+ymS1bLJVZt/mVSPtEVFH4= Name: res/drawable/abc_btn_radio_material.xml SHA1-Digest: npSvWgijFi0d2VFF3dOZmjf+WBQ= Name: res/menu/conversation_callable.xml SHA1-Digest: ov4Os4DCSxUfWkbgOaDMX7H0mic= Name: res/drawable-hdpi-v4/ic_advanced_black.png SHA1-Digest: qsBeW8x58ZtILedlYH0pENyVK2o= Name: res/drawable-v11/emoji_category_people_light.xml SHA1-Digest: XJvG+zF28Yhvy0FkN8iONtG7u60= Name: res/drawable-mdpi-v4/abc_ic_menu_cut_mtrl_alpha.png SHA1-Digest: fnkne9XWnuqM1yhMI+5Xc4n/ET8= Name: res/drawable-hdpi-v4/ic_emoji_people_normal_dark.png SHA1-Digest: x75kXO/dKZkftrHJ/90e+0iI7hI= Name: res/drawable-xxhdpi-v4/abc_tab_indicator_mtrl_alpha.9.png SHA1-Digest: DjgjddBKSH0OILJhqJkZXAYKmKg= Name: res/layout/keyboard_text_with_header.xml SHA1-Digest: Wv6BkNDNRiSE283YBFco4mR1gRk= Name: res/layout/transfer_controls_stub.xml SHA1-Digest: MX3Bo85Lp6Uf92KqntyrIFCQBWU= Name: res/drawable-xxxhdpi-v4/ic_keyboard_white_24dp.png SHA1-Digest: gN2uflFTrjbwxYFgNyxkQcEn7rA= Name: res/drawable-hdpi-v4/ic_backspace_normal_light.png SHA1-Digest: N34S904roS41hC3ClAToTJcqMMM= Name: res/drawable-hdpi-v4/ic_emoji_nature_normal_light.png SHA1-Digest: YJItxsRUeM8R8PpwH1uR1hxGWdg= Name: res/layout/calendar_date_picker_header_view.xml SHA1-Digest: ikveS6qboRdIDe5drG6q0/N+5R0= Name: res/drawable-mdpi-v4/design_ic_visibility.png SHA1-Digest: vetC9sqO4mgRjqLU13g5Rr/b+zY= Name: res/drawable-xxhdpi-v4/abc_cab_background_top_mtrl_alpha.9.png SHA1-Digest: fWFzmRTvlhVZBzFAxTslbjQMJB4= Name: res/drawable-xhdpi-v4/abc_ic_star_black_36dp.png SHA1-Digest: ingvV99yU8o+utOuZ5On3REh0eY= Name: res/drawable-xhdpi-v4/ic_message_white.png SHA1-Digest: 6QpdcrrdXT6uAoawekcL1qni0Rc= Name: res/drawable-mdpi-v4/abc_scrubber_control_off_mtrl_alpha.png SHA1-Digest: Fjutt+gOkVGWRcWFLVw0yec4eGI= Name: res/drawable-sw600dp-hdpi-v13/ic_backspace_normal_light.png SHA1-Digest: xf5MwAWNNleSEorv2eI4d4oDxpU= Name: res/drawable-xxhdpi-v4/ic_account_box_dark.png SHA1-Digest: GsvbfizRDzbjjlC2VqxNCKayJP8= Name: res/drawable-hdpi-v4/divet_lower_right_dark.png SHA1-Digest: VgCDvu1t6hJk+F+dB7G/n8QTmC8= Name: res/layout-v16/centered_app_title.xml SHA1-Digest: n8KeQr1Oq7xk9uh5LaiQ0XwDCSY= Name: res/menu/conversation_insecure_no_push.xml SHA1-Digest: dZ99AatYbWrR+cuB4JuVHsLP5NA= Name: res/drawable-mdpi-v4/ic_scroll_down.png SHA1-Digest: 4UMDad9KZsBP08coQFbKrKfB1/c= Name: res/drawable-mdpi-v4/ic_delivery_delivered_dark.png SHA1-Digest: +hzNAViX2sH/Oq4hYo/Jzt/MBRE= Name: res/drawable/abc_item_background_holo_light.xml SHA1-Digest: ku9bJ9xYD07lS3GZhes5DH5hi7U= Name: res/drawable-hdpi-v4/abc_btn_switch_to_on_mtrl_00012.9.png SHA1-Digest: Bj6BC2+QG7pc8RQwt/bo9WgmUR0= Name: res/color-v23/design_tint_password_toggle.xml SHA1-Digest: wUyUHwcmGGXYL1JhhWMPQVcf7hA= Name: res/drawable-xhdpi-v4/ic_keyboard_grey600_24dp.png SHA1-Digest: ba6IHgRRfJ/4OZW2nznn9Ult9m8= Name: res/animator/rotate_minus_90_animation.xml SHA1-Digest: BuCc2mfyfzB/zJMaWWncVTSkoKM= Name: res/drawable-hdpi-v4/ic_image_dark.png SHA1-Digest: qDeccgIB1ZI6/06LmLZXRSm7bac= Name: res/drawable-xhdpi-v4/textfield_disabled_focused_holo_light.9.pn g SHA1-Digest: 5B5Y1sO935jPXP0SPaRMQdqzKvI= Name: res/layout/abc_popup_menu_header_item_layout.xml SHA1-Digest: y7fngb40bLUvCDoa8o2mc8LIJYk= Name: res/drawable-xxhdpi-v4/ic_pause_circle_fill_white_48dp.png SHA1-Digest: vzFzfQyNuhT89eChnal9tspeZsg= Name: res/layout/database_migration_activity.xml SHA1-Digest: z2yG2IDG8qxFlDIH7WygJ0zpdBs= Name: res/drawable-xxhdpi-v4/ic_volume_up_light.png SHA1-Digest: NT00jhNGLZ8Ny6I9bu2iaKmKylQ= Name: res/drawable-xxhdpi-v4/ic_circle_fill_white_48dp.png SHA1-Digest: WPdnScLoZXZq+BEx6sPmZiWl/dE= Name: res/layout-v17/conversation_item_sent.xml SHA1-Digest: MdzA2rieMwL44pCYA0CAQVc2SIA= Name: res/drawable-xxhdpi-v11/icon_cached.png SHA1-Digest: wJmPO5ZEOtTfYuF9/SjfEaakBdQ= Name: res/drawable/conversation_item_sent_indicator_text_shape.xml SHA1-Digest: BRZnbgGgP3/B4STOWiLHH0vbjKk= Name: res/drawable-xxhdpi-v4/ic_emoji_nature_normal_dark.png SHA1-Digest: jTPG18ir5W9htOIOpBCbFcZTAYE= Name: res/layout/video_player.xml SHA1-Digest: BuhNr7gl0JYIYva/P680FXCcprQ= Name: res/drawable-mdpi-v4/ic_backspace_normal_light.png SHA1-Digest: 7VNPeLEkk2fyRK2W095OIRZMMzQ= Name: res/drawable-xhdpi-v4/icon_dialog.png SHA1-Digest: T6mC39+Vb3aCPm8yTBOP0NXGcQY= Name: res/drawable-hdpi-v4/ic_search_holo_light.png SHA1-Digest: p8qeQgU+yMu9uC9l9d7sbEe0Ots= Name: res/color/recurrence_spinner_text_color.xml SHA1-Digest: KTMnjr+S6JCNPl2ruEYIIyJz260= Name: res/drawable-xxxhdpi-v4/icon_cached.png SHA1-Digest: BaH7d8VCsdzlxLuHsLX2q03DMd4= Name: res/drawable-hdpi-v4/ic_brightness_6_gray.png SHA1-Digest: ubRcZzc8X01gK0oBc4Og9MbuGpY= Name: res/anim/design_bottom_sheet_slide_out.xml SHA1-Digest: uTMw35lL6zfB58m4Npj1tkUwCKs= Name: res/drawable-hdpi-v4/ic_advanced_gray.png SHA1-Digest: PxHyaAavt/4FvSsD8I/KNTuoJZo= Name: res/drawable/abc_ratingbar_material.xml SHA1-Digest: dQYfnGBvF3NoNPyyD+NZnOWv73w= Name: res/drawable-xxxhdpi-v4/ic_photo_camera_dark.png SHA1-Digest: CNrxIWMbfMY4NawJIA3cDetDbww= Name: res/layout-v21/abc_screen_toolbar.xml SHA1-Digest: kDSm4GXLsz8OR1YX8n5lOFpNdUY= Name: res/layout/date_picker_dialog.xml SHA1-Digest: XyKMjo6lj4DuLnXlicH5pmbLScg= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_979 SHA1-Digest: j0a3fBIi4xm5fCnN17oIGM+vnVg= Name: res/drawable/white_radius.xml SHA1-Digest: fmmwZ1xdiLKhbP7MVdTnY4KFGjc= Name: res/drawable/abc_item_background_holo_dark.xml SHA1-Digest: M0YVK8Qdk4ReRL9EAtEpVn58SLc= Name: res/drawable-hdpi-v4/sms_system_import_icon.png SHA1-Digest: kNjRatrvrZpV6kUpHfzc0mJ/SsY= Name: res/drawable-hdpi-v4/ic_push_black.png SHA1-Digest: sXEmWFhqjKFEWipqYB7tksawnDo= Name: res/drawable-hdpi-v4/ic_emoji_flags_normal_light.png SHA1-Digest: ZzWFcSV91qSF87GEePVsoqGaERM= Name: res/drawable-xhdpi-v4/abc_list_longpressed_holo.9.png SHA1-Digest: /HDLqKYSwxPWi6ihR75E/oot/mo= Name: res/drawable-xxhdpi-v4/ic_done_white_18dp.png SHA1-Digest: EDnKomUUnHQkMR2vV+OeoARosfQ= Name: res/drawable-xhdpi-v4/ic_textsms_black_32dp.png SHA1-Digest: NLdDR4CnBtbMUoNizjcRlymkUmA= Name: res/layout-v17/abc_select_dialog_material.xml SHA1-Digest: LcFH8UCfUCySOA9qwS2tde6YwTo= Name: res/drawable-xhdpi-v4/ic_push_registration_reminder.png SHA1-Digest: AwNzKs1sDdaRBwXEFxCZnMWF7K8= Name: res/drawable-xxhdpi-v4/ic_send_white_24dp.png SHA1-Digest: rRzu5B41HRdv1XCPH3CuWYOvjbY= Name: res/layout/conversation_activity_emojidrawer_stub.xml SHA1-Digest: t1a8C6MNcoHCQIVqcvozm7/mkuQ= Name: res/drawable-xxhdpi-v4/abc_btn_check_to_on_mtrl_015.png SHA1-Digest: HgH+EY9WJEVfAXnClDsismo2FSs= Name: res/drawable-xhdpi-v4/ic_add_white_24dp.png SHA1-Digest: 2jueTHnQvZ8Vcp1RBEddwYmfIPI= Name: res/drawable-xhdpi-v4/ic_clear_white_24dp.png SHA1-Digest: yHUv19dhuyxVD7h9zgxetxzXdqY= Name: res/drawable-xxxhdpi-v4/ic_photo_library_white_24dp.png SHA1-Digest: f9ooqjuRjc2RhyRz8OrwLDiUzZo= Name: res/drawable-xhdpi-v4/abc_ic_star_half_black_16dp.png SHA1-Digest: ax5FNeazE4MliK4rtD/ZdnnN0e4= Name: res/drawable-xhdpi-v4/notification_bg_normal.9.png SHA1-Digest: VLNXFzqJn8hvw7NJ233yGma3RqA= Name: res/drawable-xhdpi-v4/ic_check_normal_light.png SHA1-Digest: gIPk0Pkh6BrTqBMHlIMxsy/fsIM= Name: res/drawable-mdpi-v4/ic_archive_white_24dp.png SHA1-Digest: Rr1ExUM306gRaqOSv4HKaV1Xi24= Name: res/layout/psts_tab.xml SHA1-Digest: o9imNXCn5LOJeFwUrKL9ym55zsc= Name: res/drawable-mdpi-v4/ic_emoji_flags_activated_light.png SHA1-Digest: zPy1Pc8+rE9Q8U/4XTf7EoBImLA= Name: res/drawable-hdpi-v4/ic_audio_dark.png SHA1-Digest: ROtOY9puzFiwgnK/NvE8YMfAK7s= Name: res/layout-v11/conversation_fragment.xml SHA1-Digest: Zrf7tBSSnWPkuZHmbTbumTdPWxM= Name: res/drawable-hdpi-v4/ic_app_protection_black.png SHA1-Digest: 76+U2Q62sJTzGwKBKxY3kZU8FWI= Name: res/drawable-hdpi-v4/ic_select_all_white_24dp.png SHA1-Digest: ZBW6w3UxvJRfJPrPZa1Udvx+mQ8= Name: res/drawable-xxhdpi-v4/ic_photo_library_white_24dp.png SHA1-Digest: MvZIueYnCMLN3w1vmKlzt7oRsZU= Name: res/drawable-mdpi-v4/ic_recurrence_bubble_fill.png SHA1-Digest: uiFiU8hCp8NzsUz+JXg/L5MRlKc= Name: res/layout/conversation_item_last_seen.xml SHA1-Digest: 99xLTy2kmZYjpoUuhkydWVW4UNk= Name: res/drawable-xxhdpi-v4/ic_advanced_black.png SHA1-Digest: 28gSkjtuEf65ZxhL1pPtc/oDqVA= Name: res/drawable-xxhdpi-v4/ic_recurrence_bubble_fill.png SHA1-Digest: ZSo/QYJ1szMc8WeMUxkJEkrh6Sg= Name: res/layout/contact_selection_recyclerview_header.xml SHA1-Digest: Fbz73NjxKw6n9EpmxRB7nv90lFA= Name: res/drawable-xhdpi-v4/ic_emoji_symbols_activated_dark.png SHA1-Digest: O6dw8MJmqbt5cVBfJwXjy9dl4Jw= Name: res/drawable-hdpi-v4/icon_lock.png SHA1-Digest: gf6covsCZXb38rxel/tOWhblXqU= Name: res/drawable-mdpi-v4/abc_list_longpressed_holo.9.png SHA1-Digest: jaCqE8RSPyJL2tSTf5ctOZ8Wkp8= Name: res/menu/conversation_insecure.xml SHA1-Digest: Bm4eGsmeWu2cWVDKzmcMJwOpaPY= Name: res/layout/three_keys_view.xml SHA1-Digest: QL+LQf6misGBfzokK3irE7HAkIs= Name: res/layout/time_picker_view.xml SHA1-Digest: q/a8HhO/XF2hxtrnk0SZbS8s1X0= Name: res/drawable-xxhdpi-v4/abc_popup_background_mtrl_mult.9.png SHA1-Digest: nM7eMb1IwRTSPeCUiRnPcn3CGRw= Name: res/drawable-xhdpi-v4/abc_textfield_activated_mtrl_alpha.9.png SHA1-Digest: /UEK2xt/qrP3cCJflXSymHBKVrQ= Name: res/drawable-hdpi-v4/ic_delivery_delivered_dark.png SHA1-Digest: BVRTpt53DaJq8WorS14Mdsp2670= Name: res/drawable-xxxhdpi-v4/design_ic_visibility.png SHA1-Digest: pQ76Wd1817QL9Sc+XC/CD/ujbJk= Name: res/drawable-xxhdpi-v4/ic_call_split_white_24dp.png SHA1-Digest: wUanQMuGbW1mCBtd3BnTXMjQORY= Name: res/color/abc_secondary_text_material_light.xml SHA1-Digest: iShyfcc7mAW3Tmgrd7lTpEv94XA= Name: res/drawable-hdpi-v4/ic_emoji_people_activated_dark.png SHA1-Digest: woeh8Cf2QpEZQAUd2FWii6p8cEs= Name: classes.dex SHA1-Digest: up9o7kkx86uz0555YiFtqj2Keoo= Name: res/layout/abc_screen_content_include.xml SHA1-Digest: Qy4yTXeEqDx3ZNR+CxiliBg224M= Name: res/drawable-hdpi-v4/switch_bg_focused_holo_light.9.png SHA1-Digest: Uu0jDWQm42BXRa5E8t530Qt9aEI= Name: res/drawable-hdpi-v4/abc_spinner_mtrl_am_alpha.9.png SHA1-Digest: 9HmgRLugE7XLFQSCcDKTHa0FfIU= Name: res/drawable-xhdpi-v4/abc_scrubber_primary_mtrl_alpha.9.png SHA1-Digest: MRB8bfz87PDQFDWGNEetiXxTiwY= Name: res/color/abc_hint_foreground_material_light.xml SHA1-Digest: dU+09ohh1nGXdVn1YwT5kYY75b8= Name: res/drawable/switch_thumb.xml SHA1-Digest: IvXGnToGPmtHHStuwCl0CRw2CMk= Name: res/drawable-mdpi-v4/abc_list_focused_holo.9.png SHA1-Digest: P0wooDvrgcWxD6FuObhOb0leW5c= Name: res/drawable-mdpi-v4/ic_audio_dark.png SHA1-Digest: OkAdHB8vHceQc1gdyZ7SSMpOsjI= Name: res/layout/conversation_item_pending_v11.xml SHA1-Digest: u5JGoq0fZR2sCq+V4MwzeILpgwU= Name: res/drawable-hdpi-v4/ic_unarchive_white_36dp.png SHA1-Digest: A4dD2i++rUvQSqqhVEzLaBtFEAI= Name: res/drawable-xxhdpi-v4/ic_photo_camera_light.png SHA1-Digest: qVaGtedXyxNPp742wVrf0auwnPw= Name: res/drawable/done_background_color_dark.xml SHA1-Digest: klD8Om4Oyhxq25J/tEWVEWUlndE= Name: res/drawable/abc_ic_go_search_api_material.xml SHA1-Digest: yZz8O2XObxIk4l71uBM6N3jIgjw= Name: res/drawable-xhdpi-v4/abc_textfield_default_mtrl_alpha.9.png SHA1-Digest: wxS5Do9e7cCh/fgOCbgTwd/ZeDE= Name: res/drawable-xxxhdpi-v4/ic_badge_24dp.png SHA1-Digest: l+ZgxeTzG/JHg5kXG3JELU7eC2s= Name: res/color/switch_thumb_material_light.xml SHA1-Digest: 1POjnvuNvl/u8Sw0L4NVAn2aqDY= Name: res/drawable-xxhdpi-v4/ic_push_black.png SHA1-Digest: QFqUhx4kdTHTt7iTwQmAq1sTZFg= Name: res/animator-v11/rotate_minus_90_animation.xml SHA1-Digest: uBdoND/8IkPM8vaObJcyA86WNN0= Name: res/drawable-ldrtl-hdpi-v17/abc_ic_menu_copy_mtrl_am_alpha.png SHA1-Digest: nqxFTHIyt1k31oTQzMBPMAnZrEM= Name: res/color/dialog_text_color_holo_light.xml SHA1-Digest: fjQQlGjoz6OJxVoLGckSMA2HUxs= Name: res/drawable-xhdpi-v4/ic_menu_lock_dark.png SHA1-Digest: QZH/9M43JN2CCsxUok8sZSJG9Vw= Name: res/drawable-xxhdpi-v4/icon_dialog.png SHA1-Digest: 7htL/8mxE7HuKjrIiEujDYbhXZ4= Name: res/drawable-mdpi-v4/ic_check_white_24dp.png SHA1-Digest: 7qddwVwLSbaqFPK2dT/svB0LhvU= Name: res/drawable-hdpi-v4/ic_save_white_24dp.png SHA1-Digest: InR15xj1S9NvTQQK+HFLXcsp/3g= Name: res/drawable-mdpi-v4/abc_btn_check_to_on_mtrl_015.png SHA1-Digest: lhisDaprlUhlQTH+gRzBgtywArM= Name: res/drawable-hdpi-v4/abc_text_select_handle_left_mtrl_dark.png SHA1-Digest: rGE2d1k3CHBN3WEhJb2tWHl+aew= Name: res/drawable-xxhdpi-v4/switch_bg_disabled_holo_light.9.png SHA1-Digest: eBiELWDEVXjgDCShBHc8oAEmt+c= Name: res/drawable/pause_icon.xml SHA1-Digest: 1E0vzmWI1PnSBr5lNWo+Uj2DSnI= Name: res/drawable-hdpi-v4/ic_keyboard_grey600_24dp.png SHA1-Digest: geIXrNdM6qH9T37/duVF7NMT/MA= Name: res/drawable-xxhdpi-v4/abc_ab_share_pack_mtrl_alpha.9.png SHA1-Digest: CwBgZCf6HQH3oXQJ4vFliod7poc= Name: res/drawable-hdpi-v4/textfield_focused_holo_light.9.png SHA1-Digest: G+sjjsHiKMXPwXhMYcjptrXj5oc= Name: res/drawable-hdpi-v4/ic_movie_creation_light.png SHA1-Digest: CTk9Kqz4dTOKyZo43Z/Y9HaD7QU= Name: res/drawable/recycler_view_fast_scroller_handle.xml SHA1-Digest: SdRfCp+VhZO6lfe8HeZXlw0zYSs= Name: res/drawable-v11/emoji_category_flags_light.xml SHA1-Digest: ttQ2nNvjn9Pj39Q83yk2TJnYG5w= Name: res/drawable-hdpi-v4/switch_bg_holo_light.9.png SHA1-Digest: 84PBAh8/+LjExDRXzcAPH20FsL4= Name: res/drawable-hdpi-v4/ic_emoji_people_normal_light.png SHA1-Digest: /FqXRAc9eO3Tjk4s0SDzY9/l1wU= Name: res/drawable-xxhdpi-v4/abc_ic_menu_copy_mtrl_am_alpha.png SHA1-Digest: KU5BEai+yKGXvI7Yk2+h3Ehn27Y= Name: res/drawable-xxhdpi-v4/abc_text_select_handle_right_mtrl_dark.pn g SHA1-Digest: MUn5sC0GfdFC4B7Ip1/TmztPQtg= Name: res/drawable-xhdpi-v4/abc_ic_menu_cut_mtrl_alpha.png SHA1-Digest: x+Boa0yvhikp6dlPQH9/d26D60I= Name: res/drawable-xhdpi-v4/ic_notifications_gray.png SHA1-Digest: RHlQ/YPTlJWX50ainCEmbH8pgBQ= Name: res/drawable-hdpi-v4/telephone.png SHA1-Digest: MxX6VeK/T9XSe84OU42SBnzNieM= Name: res/drawable-mdpi-v4/ic_emoji_symbols_normal_light.png SHA1-Digest: 0azrRyQA/jmzM9lZPrhNhAFsD6M= Name: res/layout/country_selection_fragment.xml SHA1-Digest: Jc5OXlKL+7GgqXpkjMZR+rNJnLQ= Name: res/layout/number_picker_dialog.xml SHA1-Digest: Le726FpY12LCbDIm6GilXPFp+bE= Name: res/drawable-hdpi-v4/ic_visibility_white_24dp.png SHA1-Digest: AIFMF1dUX+iPlFX1UKe26p3qYYE= Name: res/drawable-v21/avd_show_password.xml SHA1-Digest: 5fCv+tkbIcgxieAGqs/ocKfepwA= Name: res/drawable-xxhdpi-v4/spinner_disabled_holo_light.9.png SHA1-Digest: 8gTbh5GWm8YanJkaogk407hMRAg= Name: res/drawable/abc_vector_test.xml SHA1-Digest: Nt9ckQDkCsYP2/LnUbJXmZv47z4= Name: lib/armeabi-v7a/libcurve25519.so SHA1-Digest: KYDdvdHDfH7wsXCmAa0/oDfTujQ= Name: res/menu/conversation_add_to_contacts.xml SHA1-Digest: QpUdRBt5UvIttq4lXdJyhp/2/RU= Name: res/drawable-sw600dp-hdpi-v13/ic_backspace_disabled_dark.png SHA1-Digest: VIxaGhgY+mSZKn1s31TESzn4DnM= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_LK SHA1-Digest: xvUg1ayJgz+trzgBfPMAXKkxhfA= Name: res/drawable-mdpi-v4/ic_visibility_white_24dp.png SHA1-Digest: q+X4gJgIMywD2Qz4G2+t5m5cxWA= Name: res/drawable-mdpi-v4/notification_bg_low_normal.9.png SHA1-Digest: Tnovl3GT2HHDBF1rlU8FPMsFpFA= Name: res/anim/design_snackbar_out.xml SHA1-Digest: fenowEI7s0OCQ7vzkP4haFTfB0I= Name: res/drawable-xhdpi-v4/ic_search_holo_light.png SHA1-Digest: FYvtYtw7d0ihu+BJKrRT7cqElJQ= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_ER SHA1-Digest: Zdar+UL4xzdPQFt8dymAV+TfKwc= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_ET SHA1-Digest: /7J0J8WsgoOnz0nPfD0pAP8tGRc= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_ES SHA1-Digest: vO0+zuCILnYVGkdZTI/yNQSiMR4= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_LS SHA1-Digest: TgChEH00iWOw/4ZwmfgaKxrl6n4= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_EE SHA1-Digest: KvNmjHwk3dibtusK0UDPMueINoA= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_LR SHA1-Digest: TMP0kr7CCX4rjYLxiKQAU1Wy1I4= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_EH SHA1-Digest: i24PgAgIVDhrmQ7zJsi1Tzwqk2I= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_LU SHA1-Digest: HFO/p3FN3pqLbNDCaiXGieoLkp0= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_EG SHA1-Digest: oBabLZVIr24yhTlvIFLSUX9bGJI= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_LT SHA1-Digest: O/aISF2KQ2YXXPzzAnj/Qa3ViWg= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_LV SHA1-Digest: u7TnNLiTdTLDGu+v/kmweHT+MUE= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_LY SHA1-Digest: 3+EmMQaxwyc6MZoGT+6rI02KZnQ= Name: res/drawable-xhdpi-v4/abc_btn_radio_to_on_mtrl_015.png SHA1-Digest: WCxduGC4/DHy03gNcIJSUEhQ28c= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_EC SHA1-Digest: zPdyT97JKATonTxe7DGzFrLWaWs= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MA SHA1-Digest: KJoYmXEaBb/Lxaclv4aGQ6ZFAuA= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MC SHA1-Digest: N0bWepyN5iWxuFlQNcAmaDGIRs8= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MD SHA1-Digest: G4PBmYaSDCyh/H+j/ghK2tX1hkw= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_ME SHA1-Digest: A8fjREffOU/zRBa5k02sVQjVvSg= Name: res/layout/notification_template_part_time.xml SHA1-Digest: LJb6bTMCYfMEF2qojVDiwIByprc= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MF SHA1-Digest: ssuj/nWsAEEgbvmiD0lsIpCBRyE= Name: res/drawable-xhdpi-v4/ic_emoji_flags_activated_dark.png SHA1-Digest: +zOuSsFclhdcXHPhMp+42LgVol8= Name: res/drawable-mdpi-v4/ic_notifications_gray.png SHA1-Digest: 9eTMiewLGszMh0/QlBRqNfpi5RA= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MG SHA1-Digest: t/2u8WW/YD++w2/vPANcZ8+bur8= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MH SHA1-Digest: Pz3fbPeydh347yUkhnNODvX6hcE= Name: res/drawable-v11/emoji_category_emoticons_dark.xml SHA1-Digest: neGf9sfFwfZUmeK88rdNTn5VED0= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_DZ SHA1-Digest: OtKC5aNOYAusXeHTP01if/cBrlg= Name: res/layout/recipient_filter_item.xml SHA1-Digest: VUgdDdrc1IRnokXxcJhoEPy786k= Name: res/color-v23/abc_tint_seek_thumb.xml SHA1-Digest: IHjcOy8VwmGnfwQ8JwFcmWZVDDU= Name: res/drawable-xxxhdpi-v4/abc_ic_menu_share_mtrl_alpha.png SHA1-Digest: inKiiAaRqdYVz1OEfHB1GSgHGIg= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_FO SHA1-Digest: RGoqbxlX5EUZSPBF2+t08I8/jSc= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_KI SHA1-Digest: JpPpGDQXig+8TN7NxZgasg1ruaM= Name: res/layout-v21/notification_template_icon_group.xml SHA1-Digest: FQRV2YCzjKJGEsAwMn+JjMqsoDY= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_KP SHA1-Digest: QgBLukuMEssNUiTPgUPRc1bnaDE= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_KN SHA1-Digest: Pz6/VS/F5Xy5F+i5U2QOyl90PXw= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_KM SHA1-Digest: vpMPjG0F+uX429EgpkO8aldKkMs= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_FR SHA1-Digest: a1QhUPJBZKLfMW2mqzccjKynwCs= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_FI SHA1-Digest: pqoxR+GHv88JjfxGVSEwMGxgGFE= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_KR SHA1-Digest: vxibGn2a5MVeHMKC9f3WDx7YQxQ= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_FM SHA1-Digest: iBw584EdcpYewCZM9eqnAEAoRCA= Name: res/drawable-mdpi-v4/ic_emoji_emoticons_normal_light.png SHA1-Digest: WQYTufWjozYfYc1AsHLpdiQQ4JU= Name: res/drawable-hdpi-v4/ic_emoji_objects_activated_dark.png SHA1-Digest: PTW42A8fqBz2RuIzgRxFghdDq+w= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_KW SHA1-Digest: 4W8tOBau5KRlWkbIcWS6SlGoGUY= Name: res/drawable-mdpi-v4/abc_list_selector_disabled_holo_light.9.png SHA1-Digest: VAWAgM1S6jdrYNnzjAk62DbHpA8= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_FK SHA1-Digest: 4xr9H2T0u2q9tTPPTA+UCu7HEK0= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_FJ SHA1-Digest: iBujGNQa9VzoRwcYiX6F0vzTDl0= Name: res/drawable-xhdpi-v4/ic_lock_dark.png SHA1-Digest: ePnd0/QetF3i37z+L8fX4D8MAdE= Name: res/drawable/play_to_pause_animation.xml SHA1-Digest: WBjtPZrdocKlkzf/Oaz+prePgf4= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_KY SHA1-Digest: 03YFHsJFuVtv7/MXuL5EoSFcO6w= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_KZ SHA1-Digest: Vik98XodqlUzDlftZvMPsVsLPVM= Name: res/drawable-xxhdpi-v4/ic_emoji_places_activated_light.png SHA1-Digest: ojFTc2I4LWyaz+hlCbtaV322O9I= Name: res/anim/design_fab_out.xml SHA1-Digest: xUTzztkV6DmAqFXiLoefobMOg3g= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_LA SHA1-Digest: UtIVhBub3YLaRbqe6yFbyWY+6rw= Name: res/drawable/button_background_dark.xml SHA1-Digest: OQDuvQ/O7NGuULqAMaeJVPFLf/w= Name: res/drawable/abc_ic_search_api_material.xml SHA1-Digest: /ppbqOVwWQ1J8clWZbd5QhdHqvU= Name: res/drawable-mdpi-v4/switch_thumb_disabled_holo_light.9.png SHA1-Digest: 6Q0egkPXcET6qWYJbaJnk1GKRsU= Name: res/drawable-xhdpi-v4/ic_emoji_recents_activated_light.png SHA1-Digest: 0/aR7+dXFWcZeERv9BVxvadKcdg= Name: res/drawable-xhdpi-v4/ic_unarchive_white_36dp.png SHA1-Digest: LgbdS76+tG/EFHzyN2nq+xK1uy8= Name: res/drawable-hdpi-v4/ic_lock_dark.png SHA1-Digest: mfKulURcVzJe1lP7MHqEuUoIv3w= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_LB SHA1-Digest: A47zFpjsEp2oHqVjFZk1nyYwApY= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_LC SHA1-Digest: YYSZYRoCs99cFSnyVozK5gBFcoY= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_LI SHA1-Digest: IxcZbMQggJZ3rS6jR/5cy69pLsc= Name: res/drawable-xhdpi-v4/list_selector_background_selected.9.png SHA1-Digest: 36Ws5DFmoLt4ptxx59DL2RNDQ0M= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_JM SHA1-Digest: gfTHJ7JIvH2FcN/XfII/udV7cCo= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GT SHA1-Digest: w4bqh0t2vs7aL/WiwrNT6WarI8c= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_JO SHA1-Digest: QCuQvaudkpdmN/dBAGz+sdJxpso= Name: res/drawable-sw600dp-xhdpi-v13/ic_backspace_normal_dark.png SHA1-Digest: qeVeLxFIzDtJH0EBcTdnLQ7kCOU= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GU SHA1-Digest: pAyuUdxHxW/PKgKBclYUDwsKPOY= Name: res/drawable-v11/emoji_category_emoticons_light.xml SHA1-Digest: E4KZ1dsCkf8sxgM1ZKhNwq9BF78= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GP SHA1-Digest: a5TY3UmqlDgflovtP2fdJzA6pEw= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GR SHA1-Digest: HBNQbfxC/KzzLOmKMQM48SLaL48= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GL SHA1-Digest: aGwRRU75gSEqB76DpdhLH0Xtofw= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GN SHA1-Digest: LD08eDpn1LSqgPryFRH3OP25m2g= Name: res/drawable/emoji_category_nature_dark.xml SHA1-Digest: x1c8JXbGKvjf4IXtaKBICjhu3YI= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GM SHA1-Digest: /gjxazZapZnNENgsCij3VeHn9B0= Name: res/layout-v21/conversation_item_sent.xml SHA1-Digest: pbM8/s6sL88a9dVFuR+J69jkRmc= Name: res/layout/three_keys_view_text.xml SHA1-Digest: h+bjvII4QuWBdOFH+qtumcSO8Vc= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GH SHA1-Digest: UjSi4eufeZoKEzNpsNkT0JYOycg= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_JP SHA1-Digest: SSR+hPZ9s61kX7QfXAtX966+cmo= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GG SHA1-Digest: 9uNty6lAftB/f7giJQuzvrXNdcI= Name: res/drawable-mdpi-v4/ic_warning_light.png SHA1-Digest: u1vMXsBaygsm7ZU1o2ULBh426cA= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GI SHA1-Digest: ht+QnpDNMdvdw1aoRFL9QVBLL8g= Name: res/xml/recipient_preferences.xml SHA1-Digest: +vst9aS+NsfarDq0EYJPfm1w6B4= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GD SHA1-Digest: 5hRI5tVRi+aNtKzdEhXnYlnZZd0= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GE SHA1-Digest: 9KzVWZk8A/NeUHePqU749neSgeo= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GF SHA1-Digest: xTxouBP3mvzLAtkuIylyErno4b8= Name: res/drawable-xxhdpi-v4/ic_delete_white_24dp.png SHA1-Digest: ToTJe0rPC+51yOcMxUIJK2UQCrw= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GA SHA1-Digest: tCQ1ixHgiI6+2py6KCJbrJaP4ew= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GB SHA1-Digest: g1Eb4DVhbm27yVWAs0C0RfHKmmk= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_KE SHA1-Digest: hhxWybR+y1YJams/LDhV7TiqnRs= Name: res/layout-v17/notification_template_big_media.xml SHA1-Digest: zXWQtldpf9zwNEVBWcdN2N8ECF4= Name: res/layout/icon_list_item.xml SHA1-Digest: +hJCdR7mOUblkQr1DPdMI/uVIUA= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_KG SHA1-Digest: c6dA5Pv9A55r1JYqhJuVtkrTQ3w= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_KH SHA1-Digest: gnM2PhW3SsRXuVJdcweloUK25Tg= Name: res/drawable-xxhdpi-v4/ic_keyboard_grey600_24dp.png SHA1-Digest: 71c0wkotfKgiVtUV5pSOk8Yxmas= Name: res/drawable-xhdpi-v4/ic_video_dark.png SHA1-Digest: gAfbndEESreJ2VMxsPLWhaQgx0Y= Name: res/drawable-hdpi-v4/abc_ab_share_pack_mtrl_alpha.9.png SHA1-Digest: N0JreKvhlyMPBSf34DQond465n0= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_IN SHA1-Digest: dzikC814fHA5FBIDVvYqjMfqXVQ= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_IM SHA1-Digest: xEQJah46A1zC6FRnLhSSyhT2ApE= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_IL SHA1-Digest: spjtV2zUrIL9JCb6SxUGcqwlXnk= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_HU SHA1-Digest: hiJid172D5b/yJ7aRcUnEUmlviA= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_HT SHA1-Digest: 6prl9nP9LulRjv1H4O7XSbhIdEc= Name: res/drawable-xxxhdpi-v4/abc_ic_star_black_48dp.png SHA1-Digest: 3Enw5tpILSKRTE47u38wsuHunBw= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_HR SHA1-Digest: PvTEEEpzEHP4YkdLq2jah8jZ3PE= Name: res/drawable-xhdpi-v4/ic_attach_grey600_24dp.png SHA1-Digest: dqjM1i80e/WZQt9+ivpn1HfepUk= Name: res/drawable-xhdpi-v4/ic_emoji_flags_normal_dark.png SHA1-Digest: aeFtQ2/DII4N35QshPIQSc9uGR4= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_HN SHA1-Digest: Ig0hgK32Cb1R4EtULlC7iBzY9gY= Name: res/drawable-xxhdpi-v4/ic_archive_white_24dp.png SHA1-Digest: PHczos0QcABX65YfRO/syErB4fo= Name: res/drawable-mdpi-v4/list_selected_holo_dark.9.png SHA1-Digest: t3gAnIT+AzQuQiC0J6HKptJhyA0= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_IT SHA1-Digest: BXQa475MixzA/WHNEtEDyDkwxvQ= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_IS SHA1-Digest: iOYe7R9H2it3zfXOrSB51/nD43Q= Name: res/drawable-xxhdpi-v4/ic_group_photo.png SHA1-Digest: fEpeqS0uEBAKP5aLnnshyvAF/vs= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_IR SHA1-Digest: LGNYDJdrySYvLVZbVR0zaLmruH8= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_HK SHA1-Digest: o/wKdkwQhz+hy4ErMiAoZv1Cw0M= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_IQ SHA1-Digest: LQsMTV6YeGQ2NLDk13e4WOst9WY= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_IO SHA1-Digest: jR144GfBKUf8gV5R43c3k3rrNWk= Name: res/layout-v16/notification_template_custom_big.xml SHA1-Digest: KGbdcn1yUGxa4t9YC/Sh0WbtxuY= Name: res/drawable-xxhdpi-v4/ic_emoji_flags_normal_light.png SHA1-Digest: O5Auy59UiqkF7JkxK2Mrno1oY7o= Name: res/drawable-xhdpi-v4/abc_btn_radio_to_on_mtrl_000.png SHA1-Digest: JjQKi93lV1YYH5MBZnohvbiJq3o= Name: res/drawable-mdpi-v4/ic_info_outline_white_24dp.png SHA1-Digest: rP3GXC5OLK1Fq5gEV//uGjxLFfs= Name: res/drawable-mdpi-v4/ic_photo_camera_dark.png SHA1-Digest: qsOkxexBIxDLCb9YTbMjKvv+y4Y= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_JE SHA1-Digest: +nuIxQw6Yy7X4VT8csg3TbRsaso= Name: res/drawable-mdpi-v4/ic_emoji_nature_activated_light.png SHA1-Digest: GbE0vJgtzLLaX5m+zN7odPdJYeU= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GY SHA1-Digest: JB4kcjLRupWKPLtH5t9ldviypos= Name: res/color/abc_btn_colored_borderless_text_material.xml SHA1-Digest: j7/lbt9HBfjrDGK6fL0EPmGwe1E= Name: res/drawable-xxhdpi-v4/received_bubble.9.png SHA1-Digest: lRkGDA4EzxKSjWgS/YcYGg9439Q= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GW SHA1-Digest: vcGsJHow6MVDu0Lji2JyVXdqjC0= Name: res/drawable-xxhdpi-v4/ic_audio_light.png SHA1-Digest: SO4y6nHCuojyG2d0FMlOtPu7Dr4= Name: res/drawable/last_seen_divider_text_background_dark.xml SHA1-Digest: XCTGK2lgiB+eOOFDixpc9pV4VkA= Name: res/layout-v11/custom_default_preference_dialog.xml SHA1-Digest: eSFfc9ed+WiY/Qww/nUHAE6U0mk= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_HN SHA1-Digest: cwMXeyaFRSBfPIyMvOTmt6KgSDM= Name: res/drawable-mdpi-v4/switch_bg_holo_light.9.png SHA1-Digest: peyvmv7NaxWpuLuoG2od8vf2QRU= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AC SHA1-Digest: vIN3CttxrwPdAm8LEVzU4YpPSaA= Name: res/drawable-xxhdpi-v4/ic_notifications_gray.png SHA1-Digest: /m/AUbkxcdLI5dOBEswBzrLp8EM= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AD SHA1-Digest: nRlB4W/DiPwwm9sKc4HOjrzoO5Q= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AE SHA1-Digest: ++6EG1jMumZ2UY3DsKsxhBBRsFg= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_HR SHA1-Digest: Wt+zmOIQ08rJiw9cOy0Vz/MIqzU= Name: res/animator-v21/design_appbar_state_list_animator.xml SHA1-Digest: 50Dn3r1oXTLsMWULaUrUJuF6nPw= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AF SHA1-Digest: z+1jWPywDDplv2dcHD4Irq91Ink= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AG SHA1-Digest: aJDSKP+g9lnCmAdhOw+oABROOiQ= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_HT SHA1-Digest: CjU4H9LGnAdt4DnS8ldypm7b/mQ= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_HU SHA1-Digest: zQluiYuJHBeF0akgyxmaSresyPg= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AI SHA1-Digest: PK7Uc59oaW/qXE9U8T7IpEvpy1s= Name: res/drawable-hdpi-v4/ic_forum_grey_32dp.png SHA1-Digest: UHT9ShIpeHLykgEROozQy3xzShU= Name: res/drawable-hdpi-v4/ic_emoji_recents_normal_dark.png SHA1-Digest: dRR7oZdxhfC/XeN8ZwLoXy3Z3wI= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AL SHA1-Digest: n6P0ZKfI1ChKdN0sdxmdnqRlSEU= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AM SHA1-Digest: /dy7DbdyOq8VY+DuUiTpXTgrrqA= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_HK SHA1-Digest: JMIy+xiPxeHnhMYL0uA5LbQ53Nk= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AO SHA1-Digest: kFAU6/4S8vlMD6jE9VwiPAmbzAE= Name: res/drawable-xxhdpi-v4/abc_ic_star_black_16dp.png SHA1-Digest: n+HinWLESEjbz+LSJ3hFDhs1hsI= Name: res/anim/design_snackbar_in.xml SHA1-Digest: 6+HyUPWWyECHhvkn7FfU/SL24MA= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_ID SHA1-Digest: D1U+SYrU0I44sl+7t/yIy0YFu9M= Name: res/drawable-xhdpi-v4/list_selected_holo_dark.9.png SHA1-Digest: ddkFXkinX/KLQzbgj+uBDgSBNFU= Name: res/drawable-xxxhdpi-v4/ic_volume_off_grey600_18dp.png SHA1-Digest: 9nDlHIGm8wI0pVXGz3YjzpfveLU= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_IE SHA1-Digest: 6a5/hyzdWz2DOkVqPUFVF1juCDs= Name: res/drawable-mdpi-v4/ic_emoji_objects_normal_light.png SHA1-Digest: 8bIMp6ZGnSnKqvsqfHGF9H7IgwY= Name: res/drawable-mdpi-v4/ic_delete_white_24dp.png SHA1-Digest: z6KzQKHtFcbcmozOSn6HHLwaz8c= Name: res/drawable/abc_list_selector_holo_dark.xml SHA1-Digest: sfvAyXGl6drAr6es0R11c9d9BWE= Name: res/drawable-xxhdpi-v4/ic_emoji_flags_normal_dark.png SHA1-Digest: sJlblRDOGWvtx1he8SCgTQ6+d5Q= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BD SHA1-Digest: Sd9O4ZZ3sBJVxtp61RQSoMAoNpg= Name: res/layout/recipient_preference_activity.xml SHA1-Digest: nI+GgTFzDD5vtF7KMDrb8EhWU8s= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BE SHA1-Digest: 1FeBETP5tcQ+rKO2HTOUgkMA8Xg= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GP SHA1-Digest: +AHBCvaMUwR5WR8ScZ7DF+fJfyw= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BB SHA1-Digest: 20VuKO6cHZ1qH/bUD1e/fkU2DxY= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GM SHA1-Digest: iXchZ5Ka/Tk+qVgTFvaCopIYO1g= Name: res/drawable-hdpi-v4/ic_forum_black_32dp.png SHA1-Digest: BmY3i7e9T0Ro2n9Ngq8dLbf4xKQ= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GN SHA1-Digest: 77m+Qpu01kiBk7oJ/r2iZK/2bfU= Name: res/drawable-xxhdpi-v4/abc_spinner_mtrl_am_alpha.9.png SHA1-Digest: cVnySG63cChr86Xl5aTin9ET16o= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BH SHA1-Digest: GO1tkKUHBn+2CU9V4yyS4HbQ6wI= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BI SHA1-Digest: CDgPaufb53sX5LjRnO1qJPfAeB8= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GT SHA1-Digest: zvE7DK/SMpGIz/43zTCcPsuSiak= Name: res/drawable-xxhdpi-v4/ic_volume_up_dark.png SHA1-Digest: dd3uIJyggz/MJzm4RKtXZhjy/s4= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BF SHA1-Digest: FG5EUq6fZH8fT/LSeNN0EXcbIlc= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GQ SHA1-Digest: 6c0GWsj9cqC30fwEc8BaLCAU1ak= Name: res/drawable-xxhdpi-v4/ic_emoji_symbols_normal_dark.png SHA1-Digest: yD3rsfn6iwOXaqSx+MIrVWJPLmQ= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BG SHA1-Digest: T+U7wCqZXSdix7+z1qPuCVxJ2jw= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GR SHA1-Digest: AEHSrwsbyJ4H2vWSsYzLeyMXXhg= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BL SHA1-Digest: ZuPRnQsFHTZWAzasmr+PfmgHq4k= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GG SHA1-Digest: pZPb/GbfmcFApldxhbfJlYKSbzI= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BM SHA1-Digest: 31BpK6j6vY+dtbny3rj9k3PPVao= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GH SHA1-Digest: Obhc2qkx9ApiLjwjjRjeokZ/62o= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BJ SHA1-Digest: 4nM/3Uj3CBj2bJP/JwEDJPDxceo= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GE SHA1-Digest: hY0YLU+5ACIRQ+92Bew22sXk03o= Name: res/drawable-hdpi-v4/ic_emoji_objects_normal_dark.png SHA1-Digest: +ELSno8p0YtqY+96A7MujNJi6ak= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GF SHA1-Digest: dO1yTJErRVAiQcLOB+T2ODVTeUs= Name: res/layout/share_activity.xml SHA1-Digest: Zh+yENYe4VAyNPssbwyFNUc9rF8= Name: res/drawable-mdpi-v4/ic_volume_up_light.png SHA1-Digest: aGwUsIMK4xipGLuaa+boq3rKmYg= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BQ SHA1-Digest: TnaPSzSpwAJn3ZPig2YW6GAPU/A= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GL SHA1-Digest: sIgUqCcJiuWlsHwDUnGMvhmRgRA= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BN SHA1-Digest: Djr6w42RtkSMKmIm3ZIMpbdIE0o= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GI SHA1-Digest: JLk3lgpICTHwNDEBXTRH/mWfBTg= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BO SHA1-Digest: sxOe0MG6Pmg+YSk39kGbyRFNZ0U= Name: res/anim/slide_to_right.xml SHA1-Digest: 0bv28EjFYG0W9O86/FUEyVGaIDc= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AT SHA1-Digest: oRS1jsJ83kKRsBrluWNrhbUXCls= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AS SHA1-Digest: p3jgCy3MqbH7l74OUev4NFimlqU= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AR SHA1-Digest: k5/KeZoUIUKgjU9R/xpSG+rmTLY= Name: res/drawable-xhdpi-v4/lockscreen_watermark_light.png SHA1-Digest: 6lUHGvK7lN2atKOLCJlnvLhmeqI= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AX SHA1-Digest: au5xw4Yhh3VSBRfAarRWUY1taTw= Name: res/drawable/conversation_item_header_background.xml SHA1-Digest: PkBtM4IfjAPJkWt/w+fC0XhKS5c= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AW SHA1-Digest: Fg/Imi/ZuwIgx8sXqAA8vbGz96Q= Name: res/layout-v11/conversation_list_fragment.xml SHA1-Digest: nSxfEzUUdkF4DsI87dXk4NAFW7U= Name: res/drawable-xxhdpi-v4/ic_send_secure_white_24dp.png SHA1-Digest: yM6Azpc4M0EQy+FKt/rEfZeTJ3Q= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AU SHA1-Digest: rNtriWF1bPuAzY6yT3tFywuvk78= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GW SHA1-Digest: tHYoWIo8foBpEPEiNe2PijXNE/I= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AZ SHA1-Digest: m9gma0XyqBhVujW4lEH8nHnpqM0= Name: res/color-v11/abc_background_cache_hint_selector_material_light. xml SHA1-Digest: vGI9qWZK86UPRnOAjUVBBgxhqoM= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GU SHA1-Digest: WIWb4bRf3ipdNJBLq1zGXXHp2gA= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BA SHA1-Digest: xl4bGHzTb1ONkQLxPjEsAmoBzj0= Name: res/drawable/emoji_category_places_dark.xml SHA1-Digest: Q9uMQ9IMOgzG5UHP4aZYv447Q0I= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GY SHA1-Digest: sVW5c2OBdc+R5QjGDn+pF9Ol39A= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CG SHA1-Digest: 49h7UcYYHZoInHM3E1miwqOYVYA= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CH SHA1-Digest: p/TKBsfWqdiCPs8HHP/E/mPcfao= Name: res/drawable-ldrtl-v17/actionbar_icon.xml SHA1-Digest: Yy7GfAlLoeD86LGaO6/AyLJjuC4= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CI SHA1-Digest: jyCDgLt/DZjar3UUKN3BDuazdVY= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_FR SHA1-Digest: GTFH7TPPnk4kanUvtsG26CI3o1w= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CC SHA1-Digest: YOCUZ6W2OQRQBoQ1x+iyz9KuWeY= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CD SHA1-Digest: gOjV58VpYgEFLCbdpOMvxHoKBZo= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_FM SHA1-Digest: h3m8uP8ZgphBtIf9P9857Jpwz3M= Name: res/drawable-hdpi-v4/ic_done_all_white_18dp.png SHA1-Digest: Voh4CAWcsOvG8zcGCHeDggnuO7Q= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CF SHA1-Digest: 5GGJE/y+2T8OjL3JM2MdOeyadDA= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_FO SHA1-Digest: zdp8+9dsFOhc6t740lFqWb2ANjI= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CO SHA1-Digest: 9MEc79rZITKNDzE/dwvOtCdTyqo= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_FI SHA1-Digest: jiBuaN4YG4PTv1veIxmvIG3TBfA= Name: res/drawable-mdpi-v4/notification_bg_normal_pressed.9.png SHA1-Digest: ahL1IX+Xa3VHwxUrKeuJQsGU4Rs= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_FJ SHA1-Digest: 65CaqQeneDMGoYSvhEvr8Q3ahew= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CR SHA1-Digest: sHfKGnXc4597cZdkX/uncowbW9c= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_FK SHA1-Digest: tQpvHJid1sXnyHukmw6JaXIqmAY= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CK SHA1-Digest: oT97kWguQsQJUswJcgE0cApkNpo= Name: res/drawable-xhdpi-v4/ic_scroll_down.png SHA1-Digest: 7mUXwCPFIDWuZ07Ho64JPZ10CEw= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CL SHA1-Digest: iyE9q0jmA6cMek4EEo2yYBzZwoI= Name: res/drawable-xhdpi-v4/sms_selection_icon.png SHA1-Digest: wtrkdTQokfokr8L6uunormQ+5wA= Name: res/drawable-mdpi-v4/abc_textfield_activated_mtrl_alpha.9.png SHA1-Digest: LHgpBq22Tp/Uz7G6kTktjBB334g= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CM SHA1-Digest: UXzV02+ZbeZUahJeWjmBbvZrsEk= Name: res/drawable-xhdpi-v4/abc_text_select_handle_middle_mtrl_light.p ng SHA1-Digest: Q0JBWav3MG5gImPSBRDnr4igoT8= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CN SHA1-Digest: UxIDGc1/Zsp7w3r8ayBpFcZ1Yeo= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BW SHA1-Digest: CCPodHb3OXMU0phUndEdai3juLQ= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GB SHA1-Digest: zwgwhzdgPiYe5GB75F5qikhL5BM= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GA SHA1-Digest: mXTJ4JekKj83uzLUQ8GGZBRUx0c= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BY SHA1-Digest: mkIJ8Fnk2cwqunSzdN9oC7jeUKI= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GD SHA1-Digest: Tun1XnwGDHmR+zKcQOQUIAjK1Dg= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BS SHA1-Digest: 11/QVxGwVGuN+tnb08ZAKRI2NJI= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BR SHA1-Digest: 2Owu+rFtvtUqgowSakSIoXHXJ94= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BT SHA1-Digest: 8imG/8/yP5TVi7PC1lTjMn5m6zs= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CA SHA1-Digest: LBQOBivyXTVPF5s9ec6DJIBUIuQ= Name: res/drawable-xxxhdpi-v4/abc_ic_star_half_black_48dp.png SHA1-Digest: vK8qEx+zPuCHitVVR+eyI1+y5S8= Name: res/layout/empty_time_zone_item.xml SHA1-Digest: uV3ERXa4BnpJU2qMX0278dny67Q= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BZ SHA1-Digest: CYVN63xJfXvDfB3Fqb9w8k74beM= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_DJ SHA1-Digest: nuoH5PgiCiqrHM2XgcckrZip6Rg= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_DK SHA1-Digest: keAd6yGDc5xreI60W5rbVEJTlMA= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_ER SHA1-Digest: 2B1bVCxBlyzCrhcwatJGXx4bJ+A= Name: res/layout/country_selection.xml SHA1-Digest: xAbtwp5RvpUqcs1VfEnelzP82hA= Name: res/layout/dots_text_view.xml SHA1-Digest: r2xnC1LIQwvev9hzjc4fbI+A2cM= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_DE SHA1-Digest: O6u5x7R23j22KmNHKTBjwELbeUA= Name: res/drawable-xhdpi-v4/ic_emoji_emoticons_normal_dark.png SHA1-Digest: gvYfcoP514wtkhSreB6JDJczoZ8= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_EG SHA1-Digest: QZfrehcNtoXOprJx2oKpTGYIkpg= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_EH SHA1-Digest: jMI99XT9IAcD8cWLnqhLySm7A4A= Name: res/drawable-hdpi-v11/icon_notification.png SHA1-Digest: FoRvCNK1ST0VgA8svxNX/EHXCas= Name: res/drawable-sw600dp-mdpi-v13/ic_backspace_normal_light.png SHA1-Digest: rXM6Yx12bhYdJ0eMIoZCItQ5Cx4= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_EE SHA1-Digest: xyVERBugEAeC91y4qOmi9i8/o2U= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_DO SHA1-Digest: jyNFaTKAVoAUCuDfVYCqZKgtx4Y= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_EC SHA1-Digest: VB1SSVwrv98pDqOPCTb7EKe9n/s= Name: res/drawable-hdpi-v4/design_ic_visibility_off.png SHA1-Digest: nkWvioUMjHczslPxcZZEyMkNViU= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_DM SHA1-Digest: KsHr4Ck3ZQln5ARS24zr+eVPxW4= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CZ SHA1-Digest: ijxHfP7jkZp2P4mqOvmjZaWEORI= Name: res/drawable-mdpi-v4/received_bubble.9.png SHA1-Digest: x4/fSsrwLvIKbFtRM1k+uNrk6VU= Name: res/drawable-mdpi-v4/ic_image_light.png SHA1-Digest: qNmSEg+M63Ml3A51KLqsi4HIZd8= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CY SHA1-Digest: ey6pjSYCIMI1FGXZQBrErXsLjIY= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CX SHA1-Digest: iopB/+UJdyMuO+btbjm0X7ucaU0= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CW SHA1-Digest: kRauL45KgJDW7izSTVtZz4p0ckc= Name: res/layout/contact_selection_list_fragment.xml SHA1-Digest: F4B1cmfBX1/iK16sEezJ2nGQxeM= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CV SHA1-Digest: ZRkhuoOG2zs4dQ+RLfk406ZdpmY= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CU SHA1-Digest: 4o+E5+gf3D1OOscHX8atbcy0kck= Name: res/layout-v11/notification_template_big_media_narrow.xml SHA1-Digest: oQnOkQJ8yn9gKNhR/QObx+1BzOU= Name: assets/fonts/Roboto-Bold.ttf SHA1-Digest: j1hyrMHyDgMGFiAB3rrPXhTUbow= Name: res/drawable/circle_touch_highlight_background.xml SHA1-Digest: o9QlrRMiE0mC1+dmj4+fg7vpBW8= Name: res/drawable-xhdpi-v4/abc_list_divider_mtrl_alpha.9.png SHA1-Digest: ORZEUwpye3vs2cpRUfvVYVg7UtU= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_ET SHA1-Digest: KYPXyUmVxhsuBMzC9KmijeCbJvs= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_ES SHA1-Digest: MgeYrCD9Qz+kbs3eB9BTpLUsgJo= Name: res/drawable-mdpi-v4/ic_mood_white_24dp.png SHA1-Digest: dvtOkGjMXXW/uAykZXv4pzt/rro= Name: res/drawable-xhdpi-v4/lockscreen_watermark_dark.png SHA1-Digest: 0c85wNc0nV5Zztf7GsYMc7SKJTI= Name: res/drawable-mdpi-v4/lockscreen_watermark_dark.png SHA1-Digest: M0xsGNyKiuHwaBCCuPvJDCgOWgA= Name: res/drawable-hdpi-v4/abc_text_select_handle_middle_mtrl_dark.png SHA1-Digest: QmeO4XUWQssq7UOePsOcCnXMg80= Name: res/drawable-xhdpi-v4/abc_tab_indicator_mtrl_alpha.9.png SHA1-Digest: kXL/oF0Wug/Gk2tR7sFuSTOQNZU= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_DZ SHA1-Digest: isb4iyWWPmCc4KaLPdAbG9LxUGI= Name: res/drawable-hdpi-v4/ic_volume_off_white_18dp.png SHA1-Digest: GaIIaoCJBoGZlHMg+T2u3TA3DtQ= Name: res/layout/receive_key_dialog.xml SHA1-Digest: umAL3zCxRPVhCLGnBBtyN3B/E/c= Name: res/drawable-xhdpi-v4/ic_emoji_flags_normal_light.png SHA1-Digest: lnap7s6+mfZWSa/l952QIfrjfU4= Name: res/drawable-xhdpi-v4/check_dark.png SHA1-Digest: wCknIutQ7PCuuGL3szqt8X3y6BY= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_DE SHA1-Digest: veS2qCnXv2CIdekpR8wVY7S0YRg= Name: META-INF/services/com.fasterxml.jackson.core.JsonFactory SHA1-Digest: Ba5fEoE3Fm8wW/CHD7Agsn0j4D0= Name: res/drawable-sw600dp-mdpi-v13/ic_backspace_disabled_light.png SHA1-Digest: vkntS8T2+of7dvX5DqAoEZGa4a0= Name: res/drawable-xxhdpi-v4/divet_lower_right_light.png SHA1-Digest: AoEdVMbc2iqKwEMnSYBrDuGKNTU= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_DM SHA1-Digest: MuSZ6z//YxaDeXfh9p7jLHN9jtA= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_DK SHA1-Digest: QNYeeXfrzF2M3AHD8PH0lSFfBpQ= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_DJ SHA1-Digest: TjL2tm/WEHORBFpPSB2iKzLin0w= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_DO SHA1-Digest: 4MQzhxGPh2UvA2hEAOmKuLmLjVg= Name: res/drawable-hdpi-v4/lockscreen_watermark_dark.png SHA1-Digest: jRk++D87ZgQBkJ2HLWlABxkEJJQ= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CR SHA1-Digest: djjUxEw6P+Un0fNmuek0Wj/unAg= Name: res/layout/abc_screen_simple_overlay_action_mode.xml SHA1-Digest: 5in0sNUsZqh4AJN6Pw4SP4w5RCg= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CU SHA1-Digest: L4fGEd2b36x3B/ZkBQIPZrkxYFs= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CV SHA1-Digest: 8oINpdPA1tfwd1xtwYLwl+JKJQM= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CW SHA1-Digest: gxOB2dDgOPmp7DX7PY18i/keSY4= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CX SHA1-Digest: ptOqYyu8NkyFsRkZKnSnBZ6zuzE= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CY SHA1-Digest: SgfYT+e2ABNPV5gK+yC5VwknWyE= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CZ SHA1-Digest: lMkate/GlFryo0WNt7Ds6eNKf0w= Name: res/drawable-xhdpi-v4/ic_launch_white_24dp.png SHA1-Digest: J4dUVgCgynf3FrSuG7+a6bU9mAc= Name: res/drawable-xxhdpi-v4/ic_arrow_forward_light.png SHA1-Digest: XhNliG5RxtJMFSBDJpJcoL5ZvZQ= Name: res/layout-v17/select_dialog_multichoice_material.xml SHA1-Digest: GBBt+uTGA7oIEPEWpuMqdMpUrUw= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CA SHA1-Digest: ySdxqBDls0+sF2Mtr7oXInkt2AM= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CD SHA1-Digest: 44FmMe2H+uQGUDQWCxQHYmWtEJU= Name: res/menu/text_secure_normal.xml SHA1-Digest: F4X7SCTmX0Sx8aqQfkiGNZg1X8E= Name: res/drawable-mdpi-v4/ic_push_black.png SHA1-Digest: 7JH3YpKYQ89wj3uCww9JJrd/cKg= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CC SHA1-Digest: bYV5mRwHKNV3xCqTq3G5S3wWv8g= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CF SHA1-Digest: W5Kaxj3DVMll60RPohluudL9TLg= Name: res/drawable-xhdpi-v4/ic_push_black.png SHA1-Digest: MBM5xqEiJZrPwf4T9dMQM/k96zo= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CH SHA1-Digest: PaGyg6lSNaV+FhgV56fYVWsSp0g= Name: res/drawable-mdpi-v4/abc_ic_star_black_36dp.png SHA1-Digest: AkbIo7N/y4oNm7eUJCKzP6fxrhs= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CG SHA1-Digest: NxbsruqXH5X1i3jA2NWgjPPXtJc= Name: res/drawable-xhdpi-v4/ic_circle_fill_white_48dp.png SHA1-Digest: Chtzf/JNBEcona4slrfjLZETkLo= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CI SHA1-Digest: k+ZcuCojRM7JtzU+49D2VbQtC8U= Name: res/drawable-hdpi-v4/abc_ic_menu_share_mtrl_alpha.png SHA1-Digest: rSfiuPx2H1NYOeY4GaO1qwFYRjE= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CL SHA1-Digest: EWYC041ztRwFr2Xm4lSi8eTLXzY= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CK SHA1-Digest: ondrgHu3kQ/vOvsoKJ4ZnTv9MJY= Name: res/layout/delivery_status_view.xml SHA1-Digest: 6BRRUDIendx8RZks9Wb7bxwScGg= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CN SHA1-Digest: 57BACNq73zhveN70g8Gy8m1/B0o= Name: res/layout/abc_list_menu_item_checkbox.xml SHA1-Digest: 6BtxtrSj5417sUBtS2ccXrol3a8= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CM SHA1-Digest: btb3rwRKf/TH6qiEeUpx7j8hP+c= Name: res/drawable-xxhdpi-v4/ic_lock_black_18dp.png SHA1-Digest: +hVAizc6fLsbURNGbG9PNMZ+8LA= Name: res/drawable-xxxhdpi-v11/icon_notification.png SHA1-Digest: ut/jwoxWLjvDcTItFRuRYYMHw5U= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CO SHA1-Digest: kvllo49+MjSxxsXzyYyAbbwF95M= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BW SHA1-Digest: 7fX3UbjaTm1aofpSZ0dl5lHDKkU= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BT SHA1-Digest: ZPNerUvoDoeRRffvRPouac7IOlY= Name: res/drawable-xxhdpi-v4/ic_emoji_symbols_activated_dark.png SHA1-Digest: Oe6OgCJo8bzjcxo0MkFN6QDNdJI= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BR SHA1-Digest: 4RdHscY9hoBgTn3t4Z9oZ2dhb8g= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BS SHA1-Digest: NWTvV7I25jpEPfSAVWAMloG6d8U= Name: res/drawable-hdpi-v4/ic_unarchive_white_24dp.png SHA1-Digest: SwaIQBYFv+ygqbJYuaoeyC0K3/k= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BQ SHA1-Digest: qvDii2e11KIo9mabPdcfrGte1UI= Name: res/drawable-xhdpi-v4/ic_clear_search_holo_light.png SHA1-Digest: ZmoEnVIiO/dvThjQLwtuajrNDlQ= Name: res/drawable-ldrtl-mdpi-v17/abc_ic_menu_cut_mtrl_alpha.png SHA1-Digest: 4I3x9UHH+eskJQGXDUb2z+F6rrA= Name: resources.arsc SHA1-Digest: SZyPjShTOLc16yX0OCBeoMLqK6w= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BZ SHA1-Digest: 90eoTH1FLrCCCEVj6zQdv77LZwE= Name: res/drawable-hdpi-v4/ic_forward_white_24dp.png SHA1-Digest: YYTaVTQihbfmZTG56ilHXaNjsWg= Name: res/drawable-xxhdpi-v4/textfield_disabled_focused_holo_light.9.p ng SHA1-Digest: bpNO5KEKc7d4ScXs/viJJsIhwgw= Name: res/drawable-mdpi-v4/ic_lock_black_18dp.png SHA1-Digest: 2Io9MNnOrhJgjFuMDd5JepnF+6M= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BY SHA1-Digest: hlusA6zV6u+as/nPQWudxi+EAFs= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BG SHA1-Digest: zPqZd34GtstxbJGqiQOmOGa/oTI= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BF SHA1-Digest: XhMVoHAMKx61FgYan9iATpjXhMg= Name: res/drawable-xhdpi-v4/list_selector_disabled_holo_light.9.png SHA1-Digest: GN6V3GwpXHWWT1+XcPJFYRdM3lM= Name: res/drawable-mdpi-v4/check_dark.png SHA1-Digest: Mmk/wQGsPx9qCwuG5XCItkQAUdU= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BE SHA1-Digest: PThzPqsNKhv6qvi0H9/XBjmSTBM= Name: res/drawable-v12/recycler_view_fast_scroller_bubble.xml SHA1-Digest: NEQxqwQjygZugYFJNUU8ybLfvxQ= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BD SHA1-Digest: zqr+fnU+QyiKBX1gohtaz8bqvTg= Name: res/drawable-xxhdpi-v4/abc_ic_menu_share_mtrl_alpha.png SHA1-Digest: k2FhN6sjfE6Vf2vHkeQqYXKKIVw= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BB SHA1-Digest: ZseUhGEUK9ofgYnmSxg6eyHMq68= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BA SHA1-Digest: HZBbXvY5yhwHJcXZvUavCYKSJ9I= Name: res/drawable-xhdpi-v4/ic_emoji_symbols_activated_light.png SHA1-Digest: tioux6wUodj2fXXVQfLAMMDOLJ4= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BO SHA1-Digest: WjQKJP65IaFuvsONV2pfU/9Xx9Q= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BN SHA1-Digest: MQAWvyb6WAl9Y9Jsro9OsLXY8pc= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BM SHA1-Digest: t9C26Uoex4q7CQMaTvWaPt1CYtw= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BL SHA1-Digest: t2RZ5Fa6IAdcTGQ4w1l2GO+xPvE= Name: res/drawable-mdpi-v4/ic_mood_grey600_24dp.png SHA1-Digest: yePrmpaOitqbCUN/9v8Zw5DAd1M= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BJ SHA1-Digest: VTIJaH7v5WKM2XQTkB6RlitC5qU= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BI SHA1-Digest: M7iEmpuB6P127+E1KBA9gDw1Odc= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BH SHA1-Digest: lYJDjH1V5r4IgdU9/5sh8cR9pfY= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AS SHA1-Digest: v+0D3G2lcYzniM5MF6acbNSI0wA= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AT SHA1-Digest: UEBKvpQ+V1kbUAp7cMUuXIx1Q88= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AU SHA1-Digest: 9OmMFEZiuaPs+0UbiHTj8yZiUaw= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AO SHA1-Digest: Sf4t7Pm2Z8QsUU2iGZFbHRLw/KQ= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AR SHA1-Digest: io8Y7Lth6xwkbP2wyFQQ3jH0VxA= Name: res/drawable-xxhdpi-v4/ic_photo_camera_dark.png SHA1-Digest: P2GVmoSvOhdWvxQH5hoRV8BVWxM= Name: res/drawable-hdpi-v4/ic_scroll_down.png SHA1-Digest: hjcZbb4w/B37ElipP9OIQY9mYT8= Name: res/layout-v17/timezonepickerview.xml SHA1-Digest: PU1pS6cdzIRNL3BQfCI/xZpwyDs= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AW SHA1-Digest: MsQjiDH7ELCu5ikPZOz1q0MoLzM= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AX SHA1-Digest: 9/3rbTTKIDRla/SGyXSpXs4xiZs= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AZ SHA1-Digest: vnxwJVaHudcrOZMMihOXhAvy6IY= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AD SHA1-Digest: kGr3DKbucyuf5taYSa0pQy3Qoh4= Name: res/layout-v16/conversation_item_pending.xml SHA1-Digest: 999cf8KEPIu3huSjteafAocQEvE= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AC SHA1-Digest: KaSYORw7lBd0nuEayNDKf+xYA1s= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AF SHA1-Digest: mVW7BZcOqgD48kwg9vYsYl5RMfM= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AE SHA1-Digest: 1WNDTfo5pRtjzhYWHkSWUfBdIwc= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AL SHA1-Digest: tCtON8SyAKhTm86Cqe5BPa8uUYw= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AM SHA1-Digest: osV0gnDAdYG1jYIU9/jYn5DUnkY= Name: res/drawable-mdpi-v4/ic_block_grey600_18dp.png SHA1-Digest: LASlB+CdirTiKoljjDUau/XsTA4= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AG SHA1-Digest: Q5VezNyRzoOB2NnDorUA6iSJ9R0= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AI SHA1-Digest: 0+NqbX/WTN35/9eX1ohe0/ZmSxs= Name: res/drawable-xhdpi-v4/ic_account_box_dark.png SHA1-Digest: vjY+yRoWv57mSOllC5kxrEN3Vrw= Name: res/drawable-hdpi-v4/ic_clear_white_24dp.png SHA1-Digest: orS5Gk6WmH9NZSs1ijcs74Dx1sI= Name: res/drawable-xxhdpi-v4/ic_download_circle_fill_white_48dp.png SHA1-Digest: Y+Rs4lxQUsDRMnu2vxYCQURBSAM= Name: res/drawable-ldrtl-mdpi-v4/ic_send_white_24dp.png SHA1-Digest: CQX99LRiRyAaCoTHxWwoepI0OkY= Name: res/drawable-mdpi-v4/ic_lock_dark.png SHA1-Digest: 1w/kkUXbv9MJnbsM463SSV5cMiY= Name: res/drawable/abc_seekbar_track_material.xml SHA1-Digest: DOBvDIvN1gw9U5RRVtBGkfeW8rY= Name: res/drawable-mdpi-v4/ic_call_split_white_24dp.png SHA1-Digest: 8qL2gvSfUYlK4oyZ04vPGuorCmg= Name: res/drawable-mdpi-v4/ic_emoji_places_activated_light.png SHA1-Digest: ZhyqtFVMpNmbesgTdjHuEDUNDmA= Name: res/layout/abc_list_menu_item_radio.xml SHA1-Digest: CYF8DGDu/tGrm7bhmsGCFVCBKJ4= Name: res/drawable-mdpi-v4/ic_emoji_places_activated_dark.png SHA1-Digest: CAUz7psRrLauurScITHMToQj86w= Name: res/drawable-xhdpi-v4/ic_call_split_white_24dp.png SHA1-Digest: 5kaLNhHTd44FJJwLLasb5Xoe0AA= Name: res/drawable-xhdpi-v4/ic_emoji_people_normal_dark.png SHA1-Digest: yfTboLWV6BppCCwwtlckHxAS3Q8= Name: res/drawable-mdpi-v4/abc_ic_menu_share_mtrl_alpha.png SHA1-Digest: OdP7A+E6BkFvIe4CYZ3B3GbAUlU= Name: res/layout-sw600dp-v13/three_keys_view.xml SHA1-Digest: 3uGfWlElwgZa5k/lbEACoh96N34= Name: res/drawable/abc_list_selector_holo_light.xml SHA1-Digest: 97+5PTkiP0Ok/P9371JlRcH0xnQ= Name: res/drawable-xxhdpi-v4/lockscreen_watermark_light.png SHA1-Digest: JLCC2x8L/5GAbnfY3JOlgzQvBfU= Name: res/drawable-hdpi-v4/ic_account_box_dark.png SHA1-Digest: m50HVJzBJFBsdA+sXUO/+3a6hIg= Name: res/drawable-mdpi-v4/ic_file_download_white_36dp.png SHA1-Digest: szHldFj8d1T/007VtQmOUh/46Q4= Name: res/drawable-xxhdpi-v4/ic_push_registration_reminder.png SHA1-Digest: 1f6vjXn5e6byK+htQHRiUQFPVWE= Name: res/drawable-mdpi-v4/ic_menu_add_field_holo_light.png SHA1-Digest: BfyD3ORZvAkYbrmX4Ss/sRhwDdg= Name: res/layout-v17/custom_default_preference_dialog.xml SHA1-Digest: iGxN2JBtz3p68bBASElzuLFMZzU= Name: res/layout/contact_selection_list_item.xml SHA1-Digest: L5DreMhEMyEg5kzlMbcyxUnz1M4= Name: res/drawable-xhdpi-v4/ic_send_secure_white_24dp.png SHA1-Digest: R8maxjCmT/Qdys8DG1GTy+SK2bw= Name: res/drawable-xhdpi-v4/abc_list_selector_disabled_holo_dark.9.png SHA1-Digest: Iz14YLSRp9C85A2InSd7OO4Ga6U= Name: res/layout/three_keys_view_right_drawable.xml SHA1-Digest: jELF1tB3fATGtHRK/M3WuOSpTp8= Name: res/drawable-xxhdpi-v4/textfield_default_holo_light.9.png SHA1-Digest: DKeaMClqVsDdOOwdcsmTzm049Zg= Name: res/drawable/abc_btn_borderless_material.xml SHA1-Digest: 9+UIx5LzMU67HsEZH0vBreWiJPE= Name: res/drawable-xxhdpi-v4/abc_textfield_search_default_mtrl_alpha.9 .png SHA1-Digest: shUg8eUw5YmR+wQVpcO99B+3lpc= Name: res/menu/conversation_popup.xml SHA1-Digest: YiGcF2JRF0i4X43cCpg6L4zuPq4= Name: res/drawable/abc_text_cursor_material.xml SHA1-Digest: j7vrPa0Diwit3eZnv21AEhEOiLU= Name: res/drawable-hdpi-v4/abc_ic_star_black_36dp.png SHA1-Digest: 5eU75xlD5NF9nxHXpUHFwQBWZc4= Name: res/drawable-mdpi-v4/abc_popup_background_mtrl_mult.9.png SHA1-Digest: 6LMTm1InS590S2d/jvEnjLlAl54= Name: res/drawable-xxxhdpi-v4/ic_volume_off_white_18dp.png SHA1-Digest: efdJ0EGlIHkF/i7NUvlXuZJW81U= Name: res/drawable-hdpi-v4/ic_message_gray.png SHA1-Digest: Kmyuoij8UtDPhtnWiCaykXTj7CI= Name: res/drawable-xxhdpi-v4/ic_check_white_24dp.png SHA1-Digest: ajFOxsoiud71Y08tFYzc86nEu4I= Name: res/drawable-xxhdpi-v4/ic_content_copy_white_24dp.png SHA1-Digest: 3M5uyFkFu53/ZTVZB62Q7AKEK/k= Name: res/drawable-xxhdpi-v4/ic_recurrence_bubble_outline.png SHA1-Digest: Mws9Jj5swemHmSryIsLB2xf4VRQ= Name: res/drawable-mdpi-v4/ic_group_photo.png SHA1-Digest: 5ScMDwdp0mOd43Kk70YU/8oijzQ= Name: res/drawable-xxhdpi-v4/splash_padlock.png SHA1-Digest: QmhDw732whE2AFLQNdHLTT/WWa8= Name: res/drawable/conversation_list_item_read_background_dark.xml SHA1-Digest: LvClDZ10MhrY1cHLq+HuCrG8zow= Name: res/drawable-xhdpi-v4/abc_list_focused_holo.9.png SHA1-Digest: Odk0wSbJp0hyQ3RZGhgf+2IXqBU= Name: res/drawable/recycler_view_fast_scroller_bubble.xml SHA1-Digest: Ya8tiZ7KeS8UUktQeNFWslmEDhk= Name: res/drawable-hdpi-v4/ic_emoji_objects_activated_light.png SHA1-Digest: 8a4XJYRMdVDkIlsTr91XRxviM/E= Name: res/drawable-xxxhdpi-v4/ic_menu_lock_dark.png SHA1-Digest: Jo/vY59By3J9bFk1Tqks3sxoSZU= Name: res/drawable-hdpi-v4/ic_emoji_symbols_activated_light.png SHA1-Digest: OhvEmgGQJIMywrqr0FEEGPVRwts= Name: res/drawable-mdpi-v4/abc_list_pressed_holo_dark.9.png SHA1-Digest: o79LWrpVg8mMdhT8PFdC/uVHnB4= Name: res/layout/design_layout_snackbar_include.xml SHA1-Digest: JMAZAhRiLqpWuKlGO8ByuAUTsWk= Name: res/layout/contact_selection_list_header.xml SHA1-Digest: lKees/HLMOcN/YNRlkGFb3Q2mJI= Name: res/layout/preference_list_fragment.xml SHA1-Digest: 7aUJw5669SsXS2Ka8sy6fcP7F5c= fdroidserver-1.0.9/tests/metadata/org.smssecure.smssecure/signatures/134/0000775000175000017500000000000013324115531026347 5ustar hanshans00000000000000fdroidserver-1.0.9/tests/metadata/org.smssecure.smssecure/signatures/134/MANIFEST.MF0000664000175000017500000070757213243530567030035 0ustar hanshans00000000000000Manifest-Version: 1.0 Created-By: 1.7.0_121 (Oracle Corporation) Name: res/drawable-xhdpi-v4/abc_ic_star_half_black_48dp.png SHA1-Digest: IIXvgndAzHnlbFdPy/QNd5PVgd0= Name: res/drawable/abc_btn_check_material.xml SHA1-Digest: 4XHnecusACTIgtImUjC7bQ9HNM8= Name: res/drawable-xhdpi-v4/ic_video_light.png SHA1-Digest: U5U2LHRskn9jaXDMTvHZ1EjilWw= Name: res/drawable-hdpi-v4/ic_lock_black_18dp.png SHA1-Digest: S7n2/JX/yuDCLErq0/yirCHoKkw= Name: res/layout/design_navigation_item_separator.xml SHA1-Digest: ZrVCT50MLzsYssSmPSnwC2kz/Hs= Name: res/drawable-hdpi-v4/abc_textfield_search_activated_mtrl_alpha.9 .png SHA1-Digest: sM1tzoxIgcK5w/PwGSZxzucCBqY= Name: res/drawable-xhdpi-v4/ic_advanced_gray.png SHA1-Digest: a4mTiItaaOrkObi4PO2hLFA2qeg= Name: res/drawable-mdpi-v4/ic_notifications_black.png SHA1-Digest: N70Up5wxCOD1opQkUHZZD90OIXQ= Name: res/drawable-hdpi-v4/ic_audio_light.png SHA1-Digest: BQU5Jkm8jgm5qPNXsiTqIUNK9hM= Name: res/drawable-xxxhdpi-v4/ic_textsms_grey_32dp.png SHA1-Digest: Nf/LIN1pRUA77kNNOrXYPAT4DlI= Name: res/drawable-v21/abc_action_bar_item_background_material.xml SHA1-Digest: VikGrClarpkvTVwTS9DEpzyZFsI= Name: res/drawable-xxhdpi-v4/list_focused_holo.9.png SHA1-Digest: FsvLP65iWVfEfIkCPXw4wimwY7M= Name: res/drawable-hdpi-v4/ic_arrow_forward_dark.png SHA1-Digest: 056yrQG7i5TNI25jBLHiQIBh1q0= Name: res/drawable-mdpi-v4/ic_attach_grey600_24dp.png SHA1-Digest: s2S4+X1D/i5/fww5Bc2lWtoAHYo= Name: res/drawable-xxhdpi-v4/ic_arrow_forward_dark.png SHA1-Digest: sGjoiE9yeNeYB84qMmM+lB1oPDw= Name: res/drawable-xxhdpi-v4/abc_ic_menu_selectall_mtrl_alpha.png SHA1-Digest: A1jmf+4/FK84T7WYmxH0Y09wAFg= Name: res/menu/conversation_list_batch_unarchive.xml SHA1-Digest: tZfXEUqLPwLow1ZywhOELowedy8= Name: res/layout/share_list_item_view.xml SHA1-Digest: FlaBySyWODQ+ObFVK+rk6yeR7+o= Name: META-INF/services/com.fasterxml.jackson.core.ObjectCodec SHA1-Digest: mECZ0InRcm6Sm6/P0dIQdmb5YtU= Name: res/drawable-xxhdpi-v4/ic_emoji_objects_activated_dark.png SHA1-Digest: 0Vqi28h81Efl3XxkfQcTf/X+BVQ= Name: res/drawable-hdpi-v4/ic_block_grey600_18dp.png SHA1-Digest: 4I6jmoZyyJOg2EoZu9OHXTOtd8U= Name: res/drawable-hdpi-v4/ic_refresh_white_24dp.png SHA1-Digest: lCrkNOkTGMEpPkiZpK43eSE6ybU= Name: res/drawable-xxxhdpi-v4/abc_ic_star_black_16dp.png SHA1-Digest: SWImInYsdKUpa45H1laBJKZNpMI= Name: res/drawable-mdpi-v4/ic_photo_library_white_24dp.png SHA1-Digest: jjO4ijdaa414z67rjvWBCzBUEY8= Name: res/drawable-xxhdpi-v4/ic_emoji_recents_normal_light.png SHA1-Digest: 1nDUl89fzQc53ObCvzXXlnqnf/A= Name: res/drawable-mdpi-v4/ic_action_warning_red.png SHA1-Digest: c5kWZr/E79wMkqq4a33Ia/tw47g= Name: res/layout/conversation_item_sent_audio.xml SHA1-Digest: ouckIGU21lUqk4E/TL3qF5ZQpro= Name: res/drawable-xhdpi-v4/switch_thumb_activated_holo_light.9.png SHA1-Digest: W+Hupcm4+5Vmhoa+hMuaWAPbj9Y= Name: res/drawable-mdpi-v4/ic_message_gray.png SHA1-Digest: mRK05SwodJgRWHjl6kcUKHfVo/c= Name: res/drawable-mdpi-v4/ic_image_dark.png SHA1-Digest: 6vfvi40T+wAZp2GCPPindGeF1oM= Name: res/color-v23/abc_color_highlight_material.xml SHA1-Digest: d3fTZZ8N/686AarGmf1fVY0oMIk= Name: res/xml/preferences_advanced.xml SHA1-Digest: Mny1c+qoGQuIvGsDXqTswa3bonE= Name: res/drawable-xxhdpi-v4/abc_ic_menu_paste_mtrl_am_alpha.png SHA1-Digest: IVjsZMMVr/ce0JFlSQDbVTn2lZ8= Name: res/drawable-xxhdpi-v4/ic_attach_grey600_24dp.png SHA1-Digest: iMQLLyiw1c9Dv5YdxKJ0aKPSIes= Name: res/layout-v17/conversation_list_item_view.xml SHA1-Digest: aN+hQEMZcHYue5msEQjMH4v7qi0= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_995 SHA1-Digest: qCXtFZpw6cj0RMgs3HecypVQnr4= Name: res/layout-v16/design_bottom_sheet_dialog.xml SHA1-Digest: xB2jHM3k+/qdUXqVnuv5nmONmZ8= Name: res/drawable-v11/emoji_category_recent_light.xml SHA1-Digest: M/SBX1z1roN+u5+TvQZXKJDNEyA= Name: res/drawable-xxhdpi-v4/ic_message_black.png SHA1-Digest: Z+M+yxOP45UFN3lnWU00BTJm5cY= Name: res/drawable/notification_tile_bg.xml SHA1-Digest: GASJ/JPWuTyKrvBkfdmK7mtYvlc= Name: res/menu/conversation_secure_sms.xml SHA1-Digest: Umly1//KqmlELY6mwG2+4bTMi78= Name: res/drawable-xxhdpi-v4/lockscreen_watermark_dark.png SHA1-Digest: nyEXs/BKk4Ioez2E62mpWxZ+B6U= Name: res/drawable-hdpi-v4/switch_thumb_holo_light_v2.9.png SHA1-Digest: KtN2rASYoM9JbiYC5rZ+EHNeOWo= Name: res/drawable-xxhdpi-v4/abc_list_selector_disabled_holo_light.9.p ng SHA1-Digest: iN/uNjBfhVbAIr76ujTy7rKk9Iw= Name: res/layout/time_zone_item.xml SHA1-Digest: vnlWmMcNga+AfJgFWDNQIIoLj/M= Name: res/layout-v17/abc_alert_dialog_title_material.xml SHA1-Digest: V1sQ9uyt90Q5ztWU9OddyNDnJm8= Name: res/drawable-xhdpi-v4/textfield_default_holo_light.9.png SHA1-Digest: DuXFeUGOvd3j97HhEpwhlm8QBrg= Name: res/drawable-mdpi-v4/import_database.png SHA1-Digest: ohkWM7042kXKM8DsVK4FYl0OmB8= Name: res/anim/design_bottom_sheet_slide_in.xml SHA1-Digest: JZvF3dH3kK4CROiDGCiyzk0bcCI= Name: res/drawable-xhdpi-v4/ic_image_dark.png SHA1-Digest: pG2xg3lvc0kKIbVUDBgntEps8rQ= Name: res/drawable-xxhdpi-v4/ic_emoji_people_normal_light.png SHA1-Digest: RLKT4JKFh+bDCbS3OE2m2TqLJ2M= Name: res/layout-v13/conversation_item_last_seen.xml SHA1-Digest: nVh5GMSO8uG5b0Ff3hCCIwcZBrA= Name: res/drawable/play_icon.xml SHA1-Digest: sAos14jJZv5f8bMTKeO94bYtOok= Name: res/animator/scale_with_alpha.xml SHA1-Digest: tn55l/2e75ToW4LXM0LeHHxAjTo= Name: res/drawable-mdpi-v4/abc_btn_check_to_on_mtrl_000.png SHA1-Digest: nRtiU5b/2GCMrB/FhPJC0XFk+lU= Name: res/drawable-v11/abc_textfield_search_material.xml SHA1-Digest: Qps1rIzG6yKql3AjAF66l6BFKZ4= Name: res/drawable-hdpi-v4/ic_emoji_nature_activated_dark.png SHA1-Digest: nodqipSEKiA1Wh7Zi4TH5mZ9CU8= Name: res/drawable-xxhdpi-v4/abc_switch_track_mtrl_alpha.9.png SHA1-Digest: IgT0lCbG3uY9vQQnsJCrHog+mlg= Name: res/drawable/done_background_color.xml SHA1-Digest: KQZWh7MuvIw/BvNz3xBDxWt2YgM= Name: res/layout/conversation_item_update.xml SHA1-Digest: yICdPauTzp4uWodLV+0ThZ02PLM= Name: res/drawable-hdpi-v4/ic_clear_search_holo_light.png SHA1-Digest: lySLLFGrRykDN0crMWsDOJvAcPI= Name: res/layout-v16/radial_time_header_label.xml SHA1-Digest: zfzul0N8Pl40HpZdLUdndsD3EKs= Name: res/anim/abc_slide_in_top.xml SHA1-Digest: YBdDQbyB2IFfhjwKI6NSPOXqz7g= Name: res/drawable-xhdpi-v4/ic_menu_search_holo_light.png SHA1-Digest: /ZUrJRkPX8UDursj5Y0cjKzHQk8= Name: res/drawable/emoji_category_emoticons_light.xml SHA1-Digest: Ix5KZgvXSTgzlXU43c2s3+pyEsY= Name: res/drawable-xhdpi-v11/icon_notification.png SHA1-Digest: NTiNSLa7t3TTK0mWOo029dATyoc= Name: res/drawable-xxhdpi-v4/ic_emoji_flags_activated_dark.png SHA1-Digest: FF6h02gP05ugJ46mQGGdoUQTpbU= Name: res/drawable-xxhdpi-v4/ic_save_white_24dp.png SHA1-Digest: vAda17ocZp3K9sSQIG73S3rYY2M= Name: res/layout-v17/import_fragment.xml SHA1-Digest: lTK3hNRJT1fDJbpu1P/q1t0IIhc= Name: res/anim/animation_toggle_in.xml SHA1-Digest: +tj+Zh9Sc3CL9SYyjJU2Itw9c70= Name: res/drawable-xhdpi-v4/ic_emoji_objects_activated_dark.png SHA1-Digest: lKmnwHsEXpfHOrnZpMfxeFQz3Ak= Name: res/drawable-v11/emoji_category_people_dark.xml SHA1-Digest: b/kZoL3i0JG3olAcNzagfvhDi6Q= Name: res/color/abc_tint_edittext.xml SHA1-Digest: sTAI8SOOW/SEHRZMp87XoIXU7cY= Name: res/drawable/edit_text_holo_light.xml SHA1-Digest: KPbOOjkx/j1wRjSSr6Ew1fVQ7Lc= Name: res/drawable-xxhdpi-v4/spinner_focused_holo_light.9.png SHA1-Digest: 7FDASvJfc8AEzERJoNcGwpNM0As= Name: res/drawable-mdpi-v4/ic_recurrence_bubble_outline_disabled.png SHA1-Digest: Wi1XLPwgN/UKKy6kXcjWQgVKmrk= Name: res/drawable-xhdpi-v4/ic_check_white_24dp.png SHA1-Digest: EWTW7qDBAFhOZzexW1mjDojOJ34= Name: res/drawable-mdpi-v4/ic_emoji_flags_normal_light.png SHA1-Digest: xxZCgGAanMLE7VRtyfrK/RS3zT0= Name: res/xml-v12/badge_widget_provider.xml SHA1-Digest: LYzz2MiGdgQYCIgbO3arb3t4YVI= Name: res/drawable-xxhdpi-v4/quick_shutter_button.png SHA1-Digest: YQw6DY43TseRa7+ahBFTptNrSrM= Name: res/drawable-xhdpi-v4/spinner_default_holo_light.9.png SHA1-Digest: Yv8DQV5iCOq6B/hrpnjziMEY1oE= Name: res/drawable-hdpi-v4/abc_ic_star_half_black_36dp.png SHA1-Digest: 9T7OtiKOgE9YHg0K0KlcW6X1OxY= Name: res/animator-v11/bottom_pause_to_play_animation.xml SHA1-Digest: EKWk/sJYqCBErBCnJ88Vs9WwB0U= Name: res/drawable-mdpi-v4/ic_arrow_forward_light.png SHA1-Digest: CbRHxj+5CferrcctmIZ1d0jIDjI= Name: res/drawable-xxhdpi-v4/ic_content_copy_dark.png SHA1-Digest: i++l+AM4yAegDH3qEA21iwiTAsA= Name: res/layout/message_details_activity.xml SHA1-Digest: rCNh6NSBINEtZvsZM7XZ6ovpoUQ= Name: res/drawable/abc_ic_voice_search_api_material.xml SHA1-Digest: omhkmF07gC6wuDBUijeWjNr1lmM= Name: res/drawable-mdpi-v4/ic_create_white_24dp.png SHA1-Digest: dMrdSae/0y0uItmi1TvH7LIG8rk= Name: res/layout/export_fragment.xml SHA1-Digest: acn2Tib5zIDYiwWUQ8+DROsnE3k= Name: res/drawable-xhdpi-v4/ic_lock_black_18dp.png SHA1-Digest: N7y019Qm4MTsPDJvUf6xpcjmLOg= Name: res/drawable/key_background_dark.xml SHA1-Digest: /33Cy7m3UkKOcki5nldzXnDJowU= Name: res/layout/design_text_input_password_icon.xml SHA1-Digest: Lpg93JzhkRdWxr07dxz16VeVgHg= Name: res/color-v23/abc_tint_default.xml SHA1-Digest: JNakLap6TZmoq0IZZTxldEdBsQ8= Name: res/drawable/abc_btn_colored_material.xml SHA1-Digest: c1kBk3kYH1Q2Zf0o2yN8Btg8MFI= Name: res/drawable-xhdpi-v4/ic_keyboard_white_24dp.png SHA1-Digest: uih6E5rFfQHK6fTNT9qs0cTmLTo= Name: res/drawable-xhdpi-v4/ic_reply.png SHA1-Digest: E6A43gDKrTDEXYlV747+gpcFSZ0= Name: res/drawable-mdpi-v4/ic_reply_white_36dp.png SHA1-Digest: 2LpCVIVzMYRpSLyRHyXWzO5I/mI= Name: res/drawable-xxxhdpi-v4/ic_photo_camera_light.png SHA1-Digest: E4gfHIxVLweUS1I6YWO8jy4rKUY= Name: res/drawable-xhdpi-v4/abc_ic_star_black_48dp.png SHA1-Digest: eNgvY49POsWnKG684klRhS5BjwI= Name: res/drawable-mdpi-v4/ic_movie_creation_light.png SHA1-Digest: RAzHQaaPAravxZQZiW0TtJUPDhs= Name: res/layout/hms_picker_dialog.xml SHA1-Digest: kbj1F48T2S6DbCNNs+03w0ebBmc= Name: res/drawable-xhdpi-v4/check.png SHA1-Digest: q8Wdw4VtUWgyMZHvzafRrdm7Fck= Name: res/drawable-hdpi-v4/abc_cab_background_top_mtrl_alpha.9.png SHA1-Digest: J10MbRypNxo+JeKfGf61OMkWgdY= Name: res/drawable-hdpi-v4/abc_ic_star_half_black_48dp.png SHA1-Digest: GV2BrBF8/MHHPwyzNe+cYQSsr8s= Name: res/drawable-mdpi-v4/ic_keyboard_grey600_24dp.png SHA1-Digest: 8qGI1WetA5BPcdLcZ533TtLteWg= Name: res/layout/keyboard.xml SHA1-Digest: i8FnKajJyiLgB5vJQQQ79ZM+vrs= Name: res/drawable/key_background_light.xml SHA1-Digest: 6hucLMUPMI5lbi0CQdnO07Alz4U= Name: res/drawable-hdpi-v4/check.png SHA1-Digest: 9Dw9zTBc9ZC39tlsMH2jDt4hnaY= Name: res/layout/message_details_header.xml SHA1-Digest: rVNpy6Ud1KSAZukWd3bF7JmQY3s= Name: res/drawable/reminder_background.xml SHA1-Digest: ch+x5ouRv1Skv9FSpccJXX4ysfY= Name: res/drawable-xxhdpi-v4/last_seen_background.9.png SHA1-Digest: AcZa88WjmAgL9QcaLEep+IS+fDw= Name: res/drawable-xxhdpi-v4/abc_ic_star_black_48dp.png SHA1-Digest: X8m2s5TyuTw6/NjutpgGA9c1lho= Name: res/drawable-xhdpi-v4/list_longpressed_holo_light.9.png SHA1-Digest: DbbsJ/A8Zk/Z2Q8z6jeVTrNtcKw= Name: res/drawable-hdpi-v4/ic_warning_light.png SHA1-Digest: qalX8/VUDauzBFywTYURgE1L9Qk= Name: res/color-v23/abc_btn_colored_text_material.xml SHA1-Digest: iPtKeCtxBDsPlPY18AN/Fz+9bAA= Name: res/drawable-mdpi-v4/ic_send_sms_insecure.png SHA1-Digest: YLdCNPPxIhI9bmuUabKrE5JPUYw= Name: res/drawable-mdpi-v4/alert.png SHA1-Digest: sSyzRDtWJ5MWIR7PVNG6R5JZD6Q= Name: res/drawable-hdpi-v4/ic_badge_24dp.png SHA1-Digest: BiyuZ+b94otM0TefNe5IDA6Ynqc= Name: res/drawable/badge_drawable.xml SHA1-Digest: aiMhken5i5apS16OJesivKFzhxs= Name: res/drawable-xhdpi-v4/notification_bg_low_pressed.9.png SHA1-Digest: bcGROFguSllVLTSUpbQeY5V6A54= Name: res/drawable-xxhdpi-v4/ic_emoji_people_activated_light.png SHA1-Digest: bWbQisF0+mbPPIfJslvYQ4MIw1M= Name: res/layout-v11/notification_template_custom_big.xml SHA1-Digest: YpS/OEfHDCMgbdA0sBuqh4Hw8gU= Name: res/color-v23/abc_tint_switch_track.xml SHA1-Digest: j8Ow8A7D/juc9qKCl0uOhS7FiGo= Name: res/drawable-hdpi-v4/ic_play_circle_fill_white_48dp.png SHA1-Digest: CG6EW3H6BZYbjlrkr0ioncRLKAQ= Name: res/layout-v16/selected_recipient_list_item.xml SHA1-Digest: IoTIQcdfhF5yj/bZbVuL4GTD1As= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_506 SHA1-Digest: fSwyg4KxEaIctkOMUXXbP0UnACc= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_505 SHA1-Digest: dkhqE6jk0X2rJBCd5h+xJ2vZwls= Name: res/drawable-xxxhdpi-v4/abc_text_select_handle_left_mtrl_dark.pn g SHA1-Digest: nKZVF0m1PUkIw27hETwzR4eJs9A= Name: res/layout/selected_recipient_list_item.xml SHA1-Digest: duqiHkirDUOdtYcYOK4BSsgiKvk= Name: res/drawable-ldrtl-hdpi-v17/abc_spinner_mtrl_am_alpha.9.png SHA1-Digest: 2gdfs4MdNrmZ5fPzRYQKwf3z8nA= Name: res/drawable-mdpi-v4/ic_video_dark.png SHA1-Digest: IWblTbgIV8kQKFhGJwVzpyd5L9o= Name: res/layout/recycler_view_fast_scroller.xml SHA1-Digest: yj2pdZt+7FUOalySQMltDj72Ruc= Name: res/drawable-xhdpi-v4/ic_archive_white_24dp.png SHA1-Digest: 9rhe+ODYJADw9F+ZIJy7XnzieYo= Name: res/drawable-xhdpi-v4/import_database.png SHA1-Digest: kT7Dxt0ieDTf8EaNh6ARZMyYdvQ= Name: res/menu/group_create.xml SHA1-Digest: zeZeiPaRvC1mx93uqTHqpR7cl38= Name: res/drawable-xhdpi-v4/ic_emoji_places_activated_dark.png SHA1-Digest: FM3dLeEaQNZQzXXRsyRTRiaVSvE= Name: res/drawable-xhdpi-v4/ic_menu_remove_holo_light.png SHA1-Digest: l5JGHVyNioatN5tnVH3EIvs4nRA= Name: res/layout/media_preview_activity.xml SHA1-Digest: faMYzcwlYnIh7K8g5B/gWS4inw4= Name: res/drawable-xxhdpi-v4/ic_emoji_recents_activated_light.png SHA1-Digest: r0bI+AnVCes3xF/lEu/EnAyGvpU= Name: res/color/abc_background_cache_hint_selector_material_light.xml SHA1-Digest: 6zQV9p9NddLltjdGn1qBYsiO04o= Name: res/drawable-v11/emoji_category_objects_dark.xml SHA1-Digest: 5oHBFdRp6A/AB1/rjl617YZmGjU= Name: assets/fonts/AndroidClockMono-Thin.ttf SHA1-Digest: nDLU3MtBsUBWd/Jq7PrvujP5/YE= Name: res/anim/abc_shrink_fade_out_from_bottom.xml SHA1-Digest: tUIF7X/jI8K8Q3PAJpeZVS4JPi8= Name: res/drawable/abc_seekbar_thumb_material.xml SHA1-Digest: R+zfNUVLkXYZ8GH32A2aK443lBQ= Name: res/drawable-mdpi-v4/ic_audio_light.png SHA1-Digest: M/LxQZgQkGn584KOjwnSsyS3TIE= Name: res/drawable-sw600dp-mdpi-v13/ic_backspace_disabled_dark.png SHA1-Digest: NzveXyIeX/Q8a9YPSBUiW3bhSmk= Name: res/drawable-xxhdpi-v4/ic_emoji_recents_activated_dark.png SHA1-Digest: jVMrr+nZhoszz6VRNSntfqS0cTU= Name: res/xml/preferences_manual_mms.xml SHA1-Digest: E2rymzAKN4LCdZRLsP2mRgX8og0= Name: res/drawable-xxhdpi-v4/ic_volume_off_grey600_18dp.png SHA1-Digest: cZCdGmEQ/C1DSNf8MpfnVFuEcSk= Name: res/drawable-xxhdpi-v4/abc_list_pressed_holo_light.9.png SHA1-Digest: I2JJHnuKjt9jtF8C76fBatEScaE= Name: res/drawable-xhdpi-v4/ic_delete_white_24dp.png SHA1-Digest: OBvkuQzFVSmxufu8IhWrya0IXaQ= Name: res/drawable/abc_cab_background_top_material.xml SHA1-Digest: gLHAZPEH/WYlWCNIPwRV1Ypbx70= Name: res/drawable-xxxhdpi-v4/abc_btn_check_to_on_mtrl_015.png SHA1-Digest: T5slVQklwytRhhFRjSw66UZR3vQ= Name: res/drawable-mdpi-v4/ic_attach_white_24dp.png SHA1-Digest: thQt7cIcZ0mL01x5FsL1R1A1rBo= Name: res/drawable-xhdpi-v4/dialog_full_holo_dark.9.png SHA1-Digest: Xv7q5ITHzmlsgg58AkKDmIAOIx8= Name: res/drawable-hdpi-v4/ic_lock_white_24dp.png SHA1-Digest: 0dcinbm1XmG7pxuKJQyIWyyg1Mw= Name: res/drawable-hdpi-v4/ic_volume_up_dark.png SHA1-Digest: 9Q/rSxq9vdebifqVdmXC41yK7HU= Name: res/drawable-xhdpi-v4/ic_message_gray.png SHA1-Digest: Udx+B3tG4BGz7szLTOV5UqcLSjw= Name: res/layout/outgoing_sms_preference.xml SHA1-Digest: vUmctb+/JCb+YUO7nhCrunZB9uM= Name: res/layout/number_picker_view.xml SHA1-Digest: Y/yClXAuZWNCc1yyjnZBe1NNIVg= Name: res/drawable-xhdpi-v4/ic_lock_light.png SHA1-Digest: 5Dtpi+WAU1zUT7j2ltzqejkiJzo= Name: res/layout-v17/design_layout_snackbar_include.xml SHA1-Digest: nwIcVUJMLdU2ENDUFLbne+hEx2o= Name: res/drawable-xxhdpi-v4/abc_menu_hardkey_panel_mtrl_mult.9.png SHA1-Digest: kjQh/adr8XS+S465gr9pzFibMnM= Name: res/color/switch_thumb_material_dark.xml SHA1-Digest: vTE9UvBWe0T4UHYQNlyBx5kaZp4= Name: res/drawable-xxhdpi-v4/ic_visibility_off_white_24dp.png SHA1-Digest: VgkSbkRBLyW/56dKPaAQLXk12rs= Name: res/drawable-mdpi-v4/ic_push_registration_reminder.png SHA1-Digest: R/89BRJe6hI+pc6YvD3EaC53Rog= Name: res/drawable-mdpi-v4/dialog_full_holo_light.9.png SHA1-Digest: cPS/8GrbED05T5hrf5U6qfxSYiQ= Name: res/layout-sw600dp-v13/design_layout_snackbar.xml SHA1-Digest: HJOl8PfLoX71EWOMZy+PDFI8yBc= Name: res/drawable/actionbar_icon.xml SHA1-Digest: 4ggDqvnA//4/gUTrCi8SAWhqAUs= Name: res/drawable-mdpi-v4/abc_scrubber_control_to_pressed_mtrl_000.pn g SHA1-Digest: QfpcSdSZHMZJtyvdOvxgAoeFBBk= Name: res/layout/abc_list_menu_item_layout.xml SHA1-Digest: J8RjKYf2o/zzS700bKt+p7lC0q8= Name: res/drawable-mdpi-v4/ic_movie_creation_dark.png SHA1-Digest: 72EYKIbguQFmHPAn+pcWWulmcM4= Name: res/drawable-v21/abc_edit_text_material.xml SHA1-Digest: nDa2DDAkLij1tWInVt1evpeEAJY= Name: res/drawable-mdpi-v9/icon_notification.png SHA1-Digest: jbGkbjzccJX6xAOT664dgUrYNGo= Name: res/drawable-xxhdpi-v4/ic_refresh_white_24dp.png SHA1-Digest: nOASh5umDXH9u9l5Y3Y7r1MjKpU= Name: res/drawable/progress_background.xml SHA1-Digest: zK7FJQT3jdkLOJAs5Y7jL9uLgX0= Name: res/drawable-xxhdpi-v4/list_pressed_holo_light.9.png SHA1-Digest: I2JJHnuKjt9jtF8C76fBatEScaE= Name: res/drawable-xhdpi-v4/abc_textfield_search_activated_mtrl_alpha. 9.png SHA1-Digest: 3u3fLmehvZBhy/5ikwcph94VGWM= Name: res/drawable-mdpi-v4/textfield_disabled_focused_holo_light.9.png SHA1-Digest: DyvZuMUjf2liRGFrEuf0bX7J6Co= Name: res/drawable-xhdpi-v4/abc_cab_background_top_mtrl_alpha.9.png SHA1-Digest: RwOTCkvoy8JfKjFQZXnNiOHbxpQ= Name: res/xml/preferences.xml SHA1-Digest: FCzeWlMFqgZgIHKHcnRE8FHhsYk= Name: res/anim/abc_slide_out_bottom.xml SHA1-Digest: GcBbKJcMWdQ42ssCQexb9kGH6us= Name: res/drawable-mdpi-v4/spinner_disabled_holo_light.9.png SHA1-Digest: hCV+UPDT8uh5rAO/BFyqYTBW/rI= Name: res/drawable/emoji_category_places_light.xml SHA1-Digest: i5LwYGeXLGbsZlLUNAlCLX6WES4= Name: res/menu/conversation_group_options.xml SHA1-Digest: Cz1LHRVTK/n/Yr9i820CGDhZdpM= Name: res/drawable-xxxhdpi-v4/abc_text_select_handle_right_mtrl_dark.p ng SHA1-Digest: TZRpCX4hkbb2R6dA0PyLbOZ1pWY= Name: res/drawable-xhdpi-v4/ic_emoji_nature_normal_dark.png SHA1-Digest: dgs2idcig8HR1aMZTR/mP1DWxg8= Name: res/drawable-ldrtl-xhdpi-v17/abc_ic_menu_cut_mtrl_alpha.png SHA1-Digest: 5LeNKf2Di1jUSAKDjrtFAYF0634= Name: res/drawable-xhdpi-v4/design_ic_visibility_off.png SHA1-Digest: HGLLL59KFe3wyaLeYNev5PF0038= Name: res/menu/share.xml SHA1-Digest: nP4tL520r8S6X/uEIUuk5rCxtnk= Name: res/drawable-mdpi-v4/spinner_focused_holo_light.9.png SHA1-Digest: V9tjL1cMxuMvNGabgo8kTf8q/oQ= Name: res/drawable-mdpi-v4/ic_unarchive_white_24dp.png SHA1-Digest: GZWbFYYJlpwMTVooN+m9zrREUas= Name: res/drawable-xhdpi-v4/ic_send_white_24dp.png SHA1-Digest: GCB6MFxVku0xwGVLmqI4gkI75nM= Name: res/drawable-mdpi-v4/abc_spinner_mtrl_am_alpha.9.png SHA1-Digest: h5X7BIPdIFf8dpb/b/WA1vYdwkc= Name: res/drawable-hdpi-v4/abc_ic_menu_paste_mtrl_am_alpha.png SHA1-Digest: IwzRNkVJWfy8agwdJdTuG1InFsM= Name: res/animator/rotate_90_animation.xml SHA1-Digest: AhVLtjcJdoeXGcim/ix1HCO/gQw= Name: res/drawable-xxhdpi-v4/ic_forward_white_24dp.png SHA1-Digest: R7Bez8u9DT2s6Muw5uQAQlYJaQQ= Name: res/drawable-xxhdpi-v4/ic_notifications_black.png SHA1-Digest: 1Fk4e6G2BE2BiZXoO6Pn2b1UG4Q= Name: res/layout/message_recipient_list_item.xml SHA1-Digest: TePFz2FsUOserdUzGiKVTfzN5CA= Name: res/drawable-mdpi-v4/ic_send_push.png SHA1-Digest: ANGo0/ZMpydXfvuzx4jOs2aojRk= Name: res/drawable/abc_spinner_textfield_background_material.xml SHA1-Digest: k4PYrKN6q/ExQP5RdV8dDVaO8Js= Name: res/drawable-mdpi-v4/ic_pause_circle_fill_white_48dp.png SHA1-Digest: dnwza4w6JREr7ooIFzyvE9lJaGE= Name: res/layout/single_recipient_panel.xml SHA1-Digest: XIK0TSNn9d/BVsSHZvDmZ78IV1Q= Name: res/drawable-mdpi-v4/abc_ic_star_black_48dp.png SHA1-Digest: 4f3D3QSNCzMFGqafojrMfwWdbXM= Name: res/layout/select_dialog_multichoice_material.xml SHA1-Digest: kd5khEvhkv1mHuCX1lHN2++UPis= Name: res/drawable-xxhdpi-v4/ic_warning_light.png SHA1-Digest: ruGvzbqHAMH2FRafTgK65crjaH8= Name: META-INF/buildserverid SHA1-Digest: PFAoK3vAw7CF29BtzhTdrgabIU8= Name: res/layout-v11/notification_template_big_media.xml SHA1-Digest: +TFjHcyzZJEJr490AyyXdhaDiMk= Name: res/drawable-mdpi-v4/abc_btn_radio_to_on_mtrl_015.png SHA1-Digest: QZ9FkSY1uLrLNUoYvFP8D6yQGLQ= Name: res/drawable-mdpi-v4/ic_menu_login.png SHA1-Digest: EcClc4RJzMSNChXRIX1XlD/+bEc= Name: res/drawable-mdpi-v4/ic_forward_white_24dp.png SHA1-Digest: KDZDv/eC+vZwebB9bgUbCiHcOwQ= Name: res/drawable-mdpi-v4/abc_textfield_search_activated_mtrl_alpha.9 .png SHA1-Digest: YsHF4VJihRr1oEZ76cu42zsHjek= Name: res/drawable/conversation_item_background.xml SHA1-Digest: 3zP1JNDyPjgLfcHlwQ81OLVB0KI= Name: res/color/abc_background_cache_hint_selector_material_dark.xml SHA1-Digest: JW1Wg9XMsM+FF68MpbJdFc2Yh8U= Name: res/drawable-hdpi-v4/ic_delete_white_24dp.png SHA1-Digest: A0vA8rAkCLZNYoF5HPt9eLe8h4Q= Name: res/anim-v21/design_bottom_sheet_slide_out.xml SHA1-Digest: AGi5g5tvoZK7WNsIL0yZE9rdwnw= Name: res/layout-sw600dp-land-v13/calendar_date_picker_dialog.xml SHA1-Digest: DTEvwBiBAs8Zx8lzI8d7Yxok/cg= Name: res/layout-w270dp-h560dp-v13/calendar_date_picker_dialog.xml SHA1-Digest: 0EXb515hkEqCoPlqNWo2641c6Tc= Name: res/layout/design_navigation_item.xml SHA1-Digest: OBUxoOt71etSxXAmAB0RNSxD4Qs= Name: res/drawable-xhdpi-v4/ic_contact_picture.png SHA1-Digest: oJXz8IZJ6Y95+0ZdP1hqcL2FiPA= Name: res/drawable-xhdpi-v4/ic_push_gray.png SHA1-Digest: alLOpqE4oBaoHod/XGuYJOmQews= Name: res/drawable-hdpi-v4/ic_menu_login.png SHA1-Digest: PO+FcUw8v6AARSGgankkXFPCUEQ= Name: res/drawable-hdpi-v4/ic_emoji_flags_activated_light.png SHA1-Digest: zMws9NE3NlZRKmz8R1wjKhi9whg= Name: res/layout/notification_action_tombstone.xml SHA1-Digest: AwtVhrNIO8jY58Wb9p1zLoAnCrU= Name: res/drawable-hdpi-v4/abc_textfield_activated_mtrl_alpha.9.png SHA1-Digest: H53d9SOkoWezKsVvcOALraOdTFo= Name: res/drawable-xhdpi-v4/ic_group_photo.png SHA1-Digest: oL/kNS4eqBr8RAy9D+FzsG79WkQ= Name: res/drawable-xxhdpi-v4/fab_shadow.png SHA1-Digest: SzS1ucPl8evgFkx0dlXzK0DjLNY= Name: res/drawable-xhdpi-v4/abc_spinner_mtrl_am_alpha.9.png SHA1-Digest: co+pW0+xme4l0m6WE+SgOOn2PRc= Name: res/drawable-xhdpi-v4/ic_visibility_off_white_24dp.png SHA1-Digest: sCCf80UsuBkBgQm6R/rr8qLYLKI= Name: res/drawable-xxhdpi-v4/abc_list_selector_disabled_holo_dark.9.pn g SHA1-Digest: vq3AaVX19jU0c0v1npZsAQOh+CI= Name: res/drawable-hdpi-v4/ic_archive_white_24dp.png SHA1-Digest: KbWim3MsiUKD8touScr3oNt4H70= Name: res/drawable-xhdpi-v4/ic_backspace_disabled_light.png SHA1-Digest: fY8wrBom1Rs7BcwNpzmN9KBBDT4= Name: res/layout/select_dialog_item_material.xml SHA1-Digest: E4PLWhmMlEqiZ2c7cb1WZw6h5xc= Name: res/layout/view_identity_activity.xml SHA1-Digest: sdfI5G2rE7lANKYrX52VPeV7uyA= Name: res/layout/design_navigation_item_subheader.xml SHA1-Digest: G/GTeUU3cMIzAHRn1M6boiTStpk= Name: res/layout-v21/notification_action_tombstone.xml SHA1-Digest: DLKxAEny9fK1E7eLn5Id4MMMYWk= Name: res/layout/share_intent_list.xml SHA1-Digest: fd3NhPVV0DCVVNLVlfNEQk+I6mU= Name: res/drawable-mdpi-v4/fab_shadow_mini.png SHA1-Digest: P10uXNSh+EnI7Pj0+KYPZJgMBA4= Name: res/drawable-hdpi-v4/icon.png SHA1-Digest: 3JRiO1Xv3zqBcWZXCMTRCD5uC64= Name: res/drawable-hdpi-v4/switch_thumb_pressed_holo_light.9.png SHA1-Digest: UW8twZMlDStRuqjFewmFD3itfrQ= Name: res/drawable-xxxhdpi-v4/ic_archive_white_36dp.png SHA1-Digest: M5idSMjFl4jMkh7Ph3QB7sogHC0= Name: res/drawable-xxhdpi-v4/ic_emoji_places_normal_dark.png SHA1-Digest: unSBHnvE/dIccJCGZxkcnq9NATs= Name: res/drawable-xxxhdpi-v4/ic_save_all_white_24dp.png SHA1-Digest: lUQYmGbtIp+HCVrKWOxWYTtqiZ4= Name: res/drawable-xxhdpi-v4/ic_delete_gray.png SHA1-Digest: A1p5mUcS5MqrAS52rhbf4X29ol4= Name: res/drawable-xhdpi-v4/abc_menu_hardkey_panel_mtrl_mult.9.png SHA1-Digest: Bii9JPddV76dH8va+pLHDS/1H2I= Name: res/drawable-hdpi-v4/ic_emoji_emoticons_activated_light.png SHA1-Digest: jmlTwrZJp/RWlsACB6z6XA51nTk= Name: res/drawable-mdpi-v4/abc_textfield_search_default_mtrl_alpha.9.p ng SHA1-Digest: D6dilO+UMcglambujyMOhNbLZuY= Name: res/drawable-xxhdpi-v4/ic_textsms_black_32dp.png SHA1-Digest: U/wm8M32OvVbolXxe15KdIdPx+E= Name: res/drawable-hdpi-v4/abc_ic_menu_copy_mtrl_am_alpha.png SHA1-Digest: MMkP0OZqp3er4oTF2Gl+RImzkzI= Name: res/layout/group_create_activity.xml SHA1-Digest: F/Q/V0mWyJ8d7KnG/y8b0Gx+xFw= Name: res/drawable-xxhdpi-v4/ic_volume_off_white_18dp.png SHA1-Digest: dl1JwJfw24ecb/xMq4AABXXFAe0= Name: res/drawable/emoji_category_symbol_dark.xml SHA1-Digest: 851XjUQCOZEjfyEEgWCW8kAGbfE= Name: res/drawable-hdpi-v4/ic_delete_gray.png SHA1-Digest: Uiq37k4GzEgR/Ce0lqUdjCHVz5U= Name: org/spongycastle/x509/CertPathReviewerMessages.properties SHA1-Digest: OGIe7v0JVQeuizExOPQ4Cf/+RXo= Name: res/drawable-mdpi-v4/ic_emoji_people_activated_light.png SHA1-Digest: XodEEfpbmDfbGrSJnks2UgUIzJQ= Name: res/drawable-xhdpi-v4/actionbar_icon_holo_dark.png SHA1-Digest: DAQ7h+0M3pk7vKhzp4y4JzYnzqc= Name: res/drawable-xhdpi-v4/abc_btn_check_to_on_mtrl_000.png SHA1-Digest: F15Y7TDgoQ90hOj/LqmJmzvUv5I= Name: res/drawable-xhdpi-v4/ic_visibility_off_grey600_24dp.png SHA1-Digest: 6OfLCQcJqSkKVVduAE1sIGO7ud4= Name: res/drawable/abc_ic_ab_back_material.xml SHA1-Digest: BARhPfk2bP/lJe+gy67bgfoy+tI= Name: res/layout/design_navigation_menu_item.xml SHA1-Digest: Es36qkrs2ohFy3uijRP+Ur+CQl8= Name: res/drawable-v21/touch_highlight_background.xml SHA1-Digest: 6IadWpveEX8PumPwP847BweJlgg= Name: res/drawable-xxhdpi-v4/abc_text_select_handle_middle_mtrl_light. png SHA1-Digest: MwB5KqjjRjtmWFZ0l1ohdSVBfmk= Name: res/drawable-mdpi-v4/abc_list_divider_mtrl_alpha.9.png SHA1-Digest: f5w1/P3BOViOfigUbV/eR0uuTmE= Name: res/drawable-mdpi-v4/ic_reply.png SHA1-Digest: eKIvQlTj+MqJkkhH83v4XJEf2Cg= Name: res/drawable-xhdpi-v4/ic_emoji_objects_normal_light.png SHA1-Digest: mHYvK5ryHcFU0pYhXyA8BL9bxRE= Name: res/drawable-xhdpi-v4/ic_emoji_people_activated_dark.png SHA1-Digest: QNnJR4N5xGz+RltmJ6P3PkrriA8= Name: res/layout-v17/notification_template_media_custom.xml SHA1-Digest: rdASOHsCejAJ60Z7EWUQWinWYII= Name: res/animator/bottom_play_to_pause_animation.xml SHA1-Digest: 7f8HiUwoTj84cBIvXQhtx6kFMlc= Name: res/drawable-xhdpi-v4/ic_emoji_places_activated_light.png SHA1-Digest: h++4GsX2DR3yZjHveZN6Un2AmhQ= Name: res/layout/switch_compat_preference.xml SHA1-Digest: BcoiqEYKt0pTDgHI781bnYowk54= Name: res/drawable-hdpi-v4/abc_list_divider_mtrl_alpha.9.png SHA1-Digest: f5w1/P3BOViOfigUbV/eR0uuTmE= Name: res/drawable-mdpi-v4/ic_menu_barcode.png SHA1-Digest: /5GmDIrH2/6CRmnDFfrS9MmAmZQ= Name: res/drawable-xhdpi-v4/ic_audio_light.png SHA1-Digest: dFHlft4ev/OLD6O3/IxOV/VT9YM= Name: assets/backward SHA1-Digest: r/6p7b+IrWfsXOtXuSRa3XRryRU= Name: res/drawable-xhdpi-v4/ic_emoji_recents_normal_light.png SHA1-Digest: D5tvJODHVXxHRnrhM5wVnuF7PMQ= Name: res/drawable-xxhdpi-v4/ic_push_gray.png SHA1-Digest: c8b/usgphM6aewlBpulpNeXZ1KE= Name: res/layout/load_more_header.xml SHA1-Digest: sAB0PTtgkiBIW07vp3p5I8ymCfg= Name: res/drawable-xhdpi-v4/ic_missing_thumbnail_picture.png SHA1-Digest: EudZfqzfejDaDRqbpEr36SAilfQ= Name: res/layout/abc_action_menu_item_layout.xml SHA1-Digest: GVqWcYFG/JNanYa8Su924kaY0Ls= Name: res/drawable/conversation_list_item_unread_background_dark.xml SHA1-Digest: EsbJbXnqytwl+8RcQbOlwf8B+aA= Name: res/drawable-mdpi-v4/switch_bg_focused_holo_light.9.png SHA1-Digest: Zb5ZNlmnSJm17S8X88rrHismQoQ= Name: res/drawable-mdpi-v4/ic_advanced_black.png SHA1-Digest: xQTyMzRG1ABoqleiO9T2DU2xP0Y= Name: res/color/done_text_color.xml SHA1-Digest: dxC6/vV+0J6sCuda4BXCTjDxBc4= Name: res/drawable-hdpi-v4/abc_list_longpressed_holo.9.png SHA1-Digest: KQunCQh0E4bP0utgN0cHdQr9OwA= Name: res/layout/splash_screen_activity.xml SHA1-Digest: WhcxHp/AKpO+Q8ubyonRo7Nk+F0= Name: res/drawable-mdpi-v4/ic_app_protection_gray.png SHA1-Digest: l1oCP68e0zJsdRpoZiPDnEBMukA= Name: res/drawable-xxhdpi-v4/sms_selection_icon.png SHA1-Digest: 6Bxf623AFbKO/pbJNEBH5Xy6xAM= Name: res/drawable-hdpi-v4/sent_bubble.9.png SHA1-Digest: JGqPgezZhUUOMdpS7YyeaEXvFW4= Name: res/drawable-mdpi-v4/icon_dialog.png SHA1-Digest: 0tdoFlEu5jnsaJOE7xLDH96MevA= Name: res/drawable-mdpi-v4/ic_visibility_off_grey600_24dp.png SHA1-Digest: Aj01Gk5lbxDET1LAcsCb4YeErmQ= Name: res/drawable-xhdpi-v4/list_pressed_holo_light.9.png SHA1-Digest: 5rSZbdJDOTdM5kJhhIdl8m8briI= Name: res/drawable-xhdpi-v4/ic_unarchive_white_24dp.png SHA1-Digest: aBQ0fXhx8K9gwvMaHRRhQX5W9lI= Name: res/layout/timezonepickerview.xml SHA1-Digest: Dj3lhNq+C7ds1/CQyHXO1n8GvrU= Name: res/drawable-xhdpi-v4/ic_check_light_disabled.png SHA1-Digest: FX86kw3Z1JfWrWBIzFp81EFI38w= Name: res/drawable-xhdpi-v4/textfield_focused_holo_light.9.png SHA1-Digest: 9fXYckUA6bXM1wEDQ0rXYeMvIfw= Name: res/layout/color_preference_item.xml SHA1-Digest: vqvYzwEC3xr2q5l3nzPHqKleTXc= Name: res/layout/transport_selection_list_item.xml SHA1-Digest: /CADOXbj5pHVDjUwN4fw7XuRxSQ= Name: res/drawable-mdpi-v4/actionbar_icon_holo_dark.png SHA1-Digest: fXNn5dSPlex7zo8fJRc/GykpXo0= Name: res/drawable-hdpi-v4/abc_btn_switch_to_on_mtrl_00001.9.png SHA1-Digest: OGTAGSMNcF0Z/ZC0uBc4qemdptI= Name: res/drawable-xhdpi-v4/ic_menu_barcode.png SHA1-Digest: HEJnV9zA4JiO7drUo5P8axm6NFY= Name: res/drawable/import_export_item_background_light.xml SHA1-Digest: o7o721xldYwB6g8LEp/bYpO63n8= Name: res/drawable-xxhdpi-v4/ic_app_protection_black.png SHA1-Digest: o14xUEEPx8oZYathbadSli6ZQsI= Name: res/drawable/emoji_category_flags_light.xml SHA1-Digest: sG+4lQ00+HnzttTFyWXu9NBIhIM= Name: res/layout/abc_alert_dialog_material.xml SHA1-Digest: 0/JjElpoOkX474wjYAxVW9ldr9Q= Name: res/color/dialog_text_color_holo_dark.xml SHA1-Digest: OUiI84uJcXDDztFngu8VSJQ6LQY= Name: res/drawable-hdpi-v4/ic_visibility_grey600_24dp.png SHA1-Digest: +5MKdx1pD6i7rpUKoYjN5xCqBSY= Name: res/layout-sw600dp-v13/three_keys_view_leftright.xml SHA1-Digest: i5CqIH9cS4ef/6W5mCUC+ftHnEs= Name: res/anim/abc_popup_enter.xml SHA1-Digest: ZKpMd1TuL9jAkYWPue9RXki708E= Name: res/layout/blocked_contacts_fragment.xml SHA1-Digest: Zn/WBahw+yXO6vRYXgLbJQ3Lp4E= Name: res/drawable-mdpi-v4/abc_tab_indicator_mtrl_alpha.9.png SHA1-Digest: z0xEJNNl6qN3MKa3Uq4y93mF7Cw= Name: res/drawable-hdpi-v4/abc_ic_star_half_black_16dp.png SHA1-Digest: +fmiW7NvYuyLGVRupHZWlrAFb2o= Name: res/drawable-xxhdpi-v4/splash_open_padlock.png SHA1-Digest: 88Z9EUnY9DAqtmsw/olzjASMn08= Name: res/drawable-xxhdpi-v4/design_ic_visibility.png SHA1-Digest: zbNzwAi/FPJPX3HPChgFLOupALc= Name: assets/zone.tab SHA1-Digest: d0US6Zajzyow3w/OX7A+6NT3Oy8= Name: res/drawable-hdpi-v4/notify_panel_notification_icon_bg.png SHA1-Digest: inKyhhyZgO65645KR/OH06l6dAc= Name: res/layout-v16/conversation_list_item_view.xml SHA1-Digest: ewOd5Y16nNg3t9kHFpvyiQ/ivRo= Name: res/layout/notification_template_custom_big.xml SHA1-Digest: nZH2+ma7Ypd4nFBdIcnX7o8EGas= Name: res/layout-sw600dp-v13/calendar_date_picker_dialog.xml SHA1-Digest: 0EXb515hkEqCoPlqNWo2641c6Tc= Name: res/drawable-v11/emoji_category_nature_dark.xml SHA1-Digest: CX83I14m6Cjn4yX3nf46xs45J3o= Name: res/drawable-mdpi-v4/notification_bg_normal.9.png SHA1-Digest: ZmUYoZRjV5S78oUGJgKjRsWijjs= Name: res/layout/centered_app_title.xml SHA1-Digest: Lha/pO4JgIapzSiXkG3RPia9xJQ= Name: res/drawable-xxhdpi-v4/abc_scrubber_track_mtrl_alpha.9.png SHA1-Digest: mXQuXT+E6ctyqZNbnaBtZKfg0ZU= Name: res/drawable-hdpi-v4/ic_info_outline_light.png SHA1-Digest: yLfG2w486Xwg1gGhemkuibPaH7g= Name: res/drawable-mdpi-v4/ic_block_white_18dp.png SHA1-Digest: lcCRmfNUadRfENG/y7V0SukFJpg= Name: res/drawable-xxhdpi-v4/ic_info_outline_grey600_24dp.png SHA1-Digest: hUsQ+oKof/B1wXzOG2wczuBlXoY= Name: res/drawable-hdpi-v4/ic_recurrence_bubble_fill.png SHA1-Digest: A/gWISXw+9VDKN9tNw4Tl2Rlup4= Name: res/color/abc_primary_text_disable_only_material_dark.xml SHA1-Digest: fztyDM09XiKUbzo6Y6O2r9Xqs6k= Name: res/drawable/info_round.xml SHA1-Digest: UZ/381JABO8YY/CyQ+EQwB67nZs= Name: res/drawable-v21/avd_hide_password.xml SHA1-Digest: 3QtcdW2ge+OCJqEkWDqgxvWUHhI= Name: res/drawable-hdpi-v4/ic_launch_white_24dp.png SHA1-Digest: 5UIDgrlIZSwC+oevXwNDr7Mf37g= Name: res/drawable-mdpi-v4/ic_unarchive_white_36dp.png SHA1-Digest: i0NdcFQ/sn3N2wNU4pRTsoj9Hqs= Name: res/drawable-xxxhdpi-v4/fab_shadow.png SHA1-Digest: wbG2dpL50mv2M+7ytx2Z9btKlcg= Name: res/anim/slide_from_top.xml SHA1-Digest: NRMSsU5qemKGLU44qx35gMLtOZg= Name: res/drawable-mdpi-v4/ic_warning_dark.png SHA1-Digest: imXjuG9SUFEzM5Ky7Iz6004sLK0= Name: res/drawable-hdpi-v4/ic_content_copy_light.png SHA1-Digest: fk6cDF9XDO/tPVoXH7Au9mra318= Name: res/drawable-hdpi-v4/received_bubble.9.png SHA1-Digest: l1DcWbaW/Gm1hFu3pEriKWh+Z2g= Name: res/layout/keyboard_right_drawable.xml SHA1-Digest: WUmUZMy5YUW6uStd30yKBHU48lI= Name: res/drawable-hdpi-v4/abc_list_pressed_holo_dark.9.png SHA1-Digest: igV6Z9qyPsoUBNkEZPzj+DDt0kE= Name: res/drawable-xhdpi-v4/ic_lock_white_24dp.png SHA1-Digest: TJpUHsE2NBGPP9IuYWNr4vSPCI0= Name: res/drawable-xhdpi-v4/ic_reply_white_36dp.png SHA1-Digest: nmRdqTp2g/pdSXEHGdcZgtemSvg= Name: res/color-v11/abc_tint_default.xml SHA1-Digest: 1hpqbE55rVWDemrdHwXlQDB32zA= Name: res/xml/preferences_sms_mms.xml SHA1-Digest: JE6Lkr6vRU/ZICk6TH00Bmq7oQw= Name: res/drawable-xhdpi-v4/abc_ic_menu_paste_mtrl_am_alpha.png SHA1-Digest: tdbpGRMh8KHxMYAIK8x8FwOqXzM= Name: res/drawable-mdpi-v4/ic_emoji_places_normal_dark.png SHA1-Digest: uZ5dEURRi9chSSqRsAIvTm7dsvo= Name: res/drawable-xxhdpi-v4/ic_emoji_emoticons_normal_light.png SHA1-Digest: 76IJVDUWfrmZO8Tgc/4U7gYqgec= Name: res/drawable-hdpi-v4/import_database.png SHA1-Digest: UcPkcSNbC1STw6zeBomTq2Dwymc= Name: res/drawable-sw600dp-xhdpi-v13/ic_backspace_disabled_dark.png SHA1-Digest: kMBzMnDevZ0XLt1+5ae3cmCuN78= Name: res/drawable-xhdpi-v4/ic_emoji_objects_normal_dark.png SHA1-Digest: 6p2Zi3wq60U2o77Ut0VYOXS4tG4= Name: res/drawable-xhdpi-v4/ic_app_protection_gray.png SHA1-Digest: Dwj18TzfpDuVCp+Vs4gvwRqFiVc= Name: res/drawable-hdpi-v4/ic_action_warning_red.png SHA1-Digest: XOfrmlnFJIZFJRa3Nnl3j/T+uyo= Name: res/drawable-hdpi-v4/ic_info_outline_dark.png SHA1-Digest: 19ADfI6tdEL9JS+w9C3ODAtiQnc= Name: res/drawable-hdpi-v4/ic_account_box_light.png SHA1-Digest: U6N4kCu8QpPN3kdynkIG05UqFaM= Name: res/drawable-hdpi-v4/ic_notifications_black.png SHA1-Digest: 5obbL5gsVnHoftrtjUskEiQvqeA= Name: res/drawable-xxxhdpi-v11/icon_cached.png SHA1-Digest: sHpchMgX/CLVvvi8pYX0k2GJg90= Name: res/drawable-mdpi-v4/fab_shadow.png SHA1-Digest: udoU/cJmx1Xc951df0+aQCglRXc= Name: res/drawable-xxhdpi-v4/switch_thumb_disabled_holo_light.9.png SHA1-Digest: knt1e74vSbTtmi79u+13KXh3GPA= Name: res/drawable-hdpi-v4/alert.png SHA1-Digest: CsIZIT9nICR7yOVCgD/4N8RrL6Y= Name: res/drawable-hdpi-v4/ic_emoji_places_normal_light.png SHA1-Digest: Tjx0H33peYsF2Wqw77RtgtiKG40= Name: res/drawable-hdpi-v4/ic_reply_white_36dp.png SHA1-Digest: wkw+giaxX7aLi+E45Cu0fEnc5fQ= Name: res/drawable-xhdpi-v4/spinner_focused_holo_light.9.png SHA1-Digest: GULvT2ExbYbkv75q+kEpZUH9u2M= Name: res/drawable-xhdpi-v4/ic_create_white_24dp.png SHA1-Digest: YErWmfqMB9JsmsehTToG6eMaslM= Name: res/drawable/conversation_list_item_read_background.xml SHA1-Digest: 29/kx1aQosM0bao66+TnKaMQG4o= Name: res/xml/preferences_appearance.xml SHA1-Digest: nsZ3qRLFSqqkrR3E0p7Lr8zoqqM= Name: res/drawable-xxhdpi-v4/abc_scrubber_primary_mtrl_alpha.9.png SHA1-Digest: AEtucgE23w85/isDYqNTWlxruFg= Name: res/anim/abc_slide_out_top.xml SHA1-Digest: 8TSJifDdlA1J4leugOVG9Peg+k4= Name: res/drawable-mdpi-v4/spinner_default_holo_light.9.png SHA1-Digest: nxjthQ61TKMyJJ5/85W2SC6qs+M= Name: res/color-v23/abc_tint_switch_thumb.xml SHA1-Digest: AYqXR24Imt/KEDO9CrmMOPStaIc= Name: res/drawable-xxhdpi-v4/abc_ic_commit_search_api_mtrl_alpha.png SHA1-Digest: Yq5HoWLW1F/u1kVDMfrxjLA2Z9Q= Name: res/color-v23/abc_tint_spinner.xml SHA1-Digest: BBcfe9ziniPVPStDrP3v4C+knKk= Name: res/drawable/design_bottom_navigation_item_background.xml SHA1-Digest: CWW4mfISMH+Ot1PsBcU5OOmhiCU= Name: res/layout-v11/notification_template_big_media_custom.xml SHA1-Digest: 6K8wc7cnTvNaDsSKT7OY8MSGQI8= Name: res/drawable-v21/conversation_list_item_read_background.xml SHA1-Digest: CcD3lybuOgRWRC9JfV7U+/9POCc= Name: res/drawable-mdpi-v4/ic_delete_black.png SHA1-Digest: TYWWTcngvQ+noNg5VY2/mObifLE= Name: res/layout/conversation_list_fragment.xml SHA1-Digest: 3l/kgDKbrMCrbne+eAbLMwR4KlQ= Name: res/drawable-xhdpi-v4/ic_notifications_black.png SHA1-Digest: /SY0QU8mINEjkvYVAlsPZ4ZzPVs= Name: res/raw/whisper.store SHA1-Digest: hLdMCWiNl4nJacL59TYQ8lK+JUs= Name: res/drawable-hdpi-v4/ic_emoji_recents_activated_dark.png SHA1-Digest: Yk8oAfmNOUCBzGorthoUhHeImk4= Name: res/anim/fade_scale_out.xml SHA1-Digest: lhxvAKLBK4FCXkyEAaT5FHhx6Eg= Name: res/drawable-xxhdpi-v4/ic_video_light.png SHA1-Digest: rXa1DG9CfPTUoWc9l10WRyKbjZA= Name: res/drawable-hdpi-v4/ic_reply.png SHA1-Digest: aS2epjYciCOwQeQwokaHqSA0Kkk= Name: res/drawable-xhdpi-v4/ic_image_light.png SHA1-Digest: Lu0PosNPxOVGN+KYCd9o6C8JBDE= Name: res/drawable-xxhdpi-v4/abc_textfield_default_mtrl_alpha.9.png SHA1-Digest: p9584WImSwr0082/N/zkcvVq7yo= Name: res/drawable/conversation_item_header_background_dark.xml SHA1-Digest: wfTAaLO+JvtusD4leaJ4hBj59Wg= Name: res/drawable/emoji_category_recent_dark.xml SHA1-Digest: S0AnVp/pVgSOiX3IhSGDso30eUg= Name: res/drawable-ldrtl-xhdpi-v17/abc_spinner_mtrl_am_alpha.9.png SHA1-Digest: xzR4QYhDLijnhAqvCWT+8WMmqNQ= Name: res/drawable-xxhdpi-v4/ic_emoji_symbols_normal_light.png SHA1-Digest: Ap996kL1vRTFcK4uAPr/M6yhL1Y= Name: res/drawable-mdpi-v4/ic_forum_black_32dp.png SHA1-Digest: 2VihTgtkrcGRaPjMvAtOMPloPs8= Name: res/drawable-xxhdpi-v4/ic_lock_white_24dp.png SHA1-Digest: 3pS9rdIUkQKp5S30wMJ3YxeXMK8= Name: res/drawable-mdpi-v4/ic_textsms_black_32dp.png SHA1-Digest: 4FVbrPZlHa+YXKQHs3sbv+9p4sY= Name: res/drawable-hdpi-v4/ic_contact_picture.png SHA1-Digest: IwJgFsT9XfMJXcvoeXXuGl9CJVA= Name: res/drawable-hdpi-v4/ic_push_registration_reminder.png SHA1-Digest: o5uLzQ3Wi/5qGCLAszhvBS9UPVs= Name: res/drawable-mdpi-v4/abc_ic_menu_paste_mtrl_am_alpha.png SHA1-Digest: 7HpkfQXcTxrewbqOQTtoDixKAiE= Name: res/drawable-xxhdpi-v4/spinner_pressed_holo_light.9.png SHA1-Digest: tkF8+78AlJ7clz2yc6mvf/TVJfQ= Name: res/drawable/design_password_eye.xml SHA1-Digest: C+kKIgD0x3Pqpcr7269QZUkuaEQ= Name: res/drawable-xxxhdpi-v4/ic_clear_white_24dp.png SHA1-Digest: JpERTN3Wave8LS2gQZdD90HYHmA= Name: res/menu/media_preview.xml SHA1-Digest: BeeyU6JLag0xKxUdir2wHZygYOM= Name: res/drawable-mdpi-v4/switch_thumb_pressed_holo_light.9.png SHA1-Digest: MvirMfKCPj8aRdrk/qCwNQly7iQ= Name: res/drawable-mdpi-v4/ic_emoji_emoticons_activated_light.png SHA1-Digest: fI8cELlPlmEyJ3q/LmWYESynNn0= Name: res/drawable-xxhdpi-v4/ic_scroll_down.png SHA1-Digest: 2pNphPFslQVi4EypJwZlUbnSc1w= Name: res/drawable-hdpi-v4/ic_group_white_24dp.png SHA1-Digest: APgBld24JEB5OrspdN2DrUDntTQ= Name: res/drawable-hdpi-v4/abc_list_pressed_holo_light.9.png SHA1-Digest: 8fFdZoyOA0FyEP0K/a0QnLk0bbE= Name: res/layout-v21/message_details_header.xml SHA1-Digest: YO8xAg/qe0msCZ8FJl74U3Y+yMk= Name: res/drawable/abc_ratingbar_small_material.xml SHA1-Digest: gaRS2sbjCfcJo3xOrkhIdr9XwZg= Name: res/drawable-mdpi-v4/abc_text_select_handle_middle_mtrl_light.pn g SHA1-Digest: EAjKJ0Rc7Iao0PObDMnje62giVA= Name: res/drawable-xxhdpi-v4/abc_text_select_handle_right_mtrl_light.p ng SHA1-Digest: SRzXekbq93VNBlcB9Jps0im8dQs= Name: res/drawable-xxhdpi-v11/icon_notification.png SHA1-Digest: NCFI5Mn5oUMHXPpvT/+2fHeApgE= Name: res/drawable-mdpi-v4/ic_menu_remove_holo_light.png SHA1-Digest: nKigmEPh2ytFH29tSmzdel83ejA= Name: res/layout/abc_activity_chooser_view_list_item.xml SHA1-Digest: W0JUnTKi0F5FyHdiy48rrT0PvHA= Name: res/drawable-xxxhdpi-v4/abc_ic_menu_paste_mtrl_am_alpha.png SHA1-Digest: in/uM6gaoddhlniDyLN3qnCoO90= Name: res/drawable-xhdpi-v4/abc_textfield_search_default_mtrl_alpha.9. png SHA1-Digest: s9/qxuNt34tuDKZEbu3WbQxLGWs= Name: res/color/text_color_dark_theme.xml SHA1-Digest: xtQOr/sxxRTItllz5dWSIu9GbqA= Name: res/drawable-xhdpi-v4/ic_emoji_symbols_normal_light.png SHA1-Digest: 4Bp9wp3TULFiZtRxucglP1XqE5c= Name: res/drawable-mdpi-v4/ic_badge_24dp.png SHA1-Digest: s2Qq8SnVVSxEmxkyiOdFOMdRf2w= Name: res/drawable-xxhdpi-v4/ic_delete_black.png SHA1-Digest: D9qcTOg7POaY2NfJUD96EghjQr8= Name: res/drawable-mdpi-v4/abc_btn_radio_to_on_mtrl_000.png SHA1-Digest: u8lEY+2Bl006RY/NojCiasl0Huw= Name: res/drawable-xxhdpi-v4/ic_reply_white_36dp.png SHA1-Digest: Et1pDHvXSBblxuF1HtzUgxVHrS8= Name: res/drawable-xxxhdpi-v4/ic_circle_fill_white_48dp.png SHA1-Digest: U56E2atwabxebtuVEkDueTNjFiE= Name: res/drawable-xhdpi-v4/dialog_full_holo_light.9.png SHA1-Digest: glc2B1J33SBfEnymVLanXh/77ko= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_972 SHA1-Digest: Tl50phuH8I0GxBh/Drf9vHens0Q= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_971 SHA1-Digest: US/xxHef76UTD882Ez5EnNvcaws= Name: res/drawable-v21/design_bottom_navigation_item_background.xml SHA1-Digest: KvnwLqUMXEglxgfoi5W0JShH0ks= Name: res/layout-v16/audio_view.xml SHA1-Digest: njJJ1HHW5uJdG/n0LTZHePpOQS0= Name: res/drawable/conversation_list_divider_shape_dark.xml SHA1-Digest: 9iXwhZT5/M0X6Yhcmm4h+YjTnLs= Name: res/layout-v22/abc_alert_dialog_button_bar_material.xml SHA1-Digest: ifIi2EmqhnYhwUyaZKxE7+oG+a8= Name: res/drawable-xxhdpi-v4/abc_btn_switch_to_on_mtrl_00012.9.png SHA1-Digest: YO4TlWAjr+5kRYUxAOUp6QEa7gg= Name: res/layout/push_recipients_panel.xml SHA1-Digest: EzGjF1IPF7U6lur8BBhcBJU9gfA= Name: res/layout/blocked_contact_list_item.xml SHA1-Digest: lqVgNxm8BmYDMiL5ZlGDMl1H4WM= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_595 SHA1-Digest: Rdp/JhmBpcj6Pr5wipf91JAKESY= Name: res/drawable/emoji_category_symbol_light.xml SHA1-Digest: Ju9NiYprgQLlxTm5XBhkYezLm/g= Name: res/drawable-hdpi-v4/ic_emoji_emoticons_normal_dark.png SHA1-Digest: r8Ri5hv5SAmtXNCrj1CYsb0/zJM= Name: res/drawable-xxhdpi-v4/abc_list_pressed_holo_dark.9.png SHA1-Digest: VPmKAqmLJ6ke7a8XellbYKiIBh8= Name: res/drawable-xhdpi-v4/ic_emoji_nature_activated_light.png SHA1-Digest: sKVcvD9Wh8iWkzK9kzNai9xOAnw= Name: res/drawable-xhdpi-v4/icon_cached.png SHA1-Digest: G7TNBOQsnyDH/X5A0H7KlD7+X84= Name: res/drawable-hdpi-v4/switch_bg_disabled_holo_light.9.png SHA1-Digest: Evi73cVw1F7NXXrV76QvRIFOeFA= Name: res/drawable-mdpi-v4/ic_emoji_nature_normal_dark.png SHA1-Digest: Sl1nqozZKUy0xSe37ZInTPLypIo= Name: res/drawable/ic_backspace_light.xml SHA1-Digest: ArAaZ6HHiiuf0ps1yq9gj8Okqvg= Name: res/drawable-xhdpi-v4/ic_forum_black_32dp.png SHA1-Digest: SmJttX2gOPzZ3n7t+N5MtOr3pMU= Name: res/drawable-hdpi-v4/ic_emoji_places_activated_light.png SHA1-Digest: ayvZGbMCE9vA/RrSp056ftDDN88= Name: res/drawable-hdpi-v4/abc_ic_commit_search_api_mtrl_alpha.png SHA1-Digest: fOZLRa6EGLts4vAJ9jZTI2UOyZ0= Name: res/drawable/rounded_rectangle.xml SHA1-Digest: OjIEQM0LIvEj7gE45R6ehI0mFJ8= Name: res/drawable-xhdpi-v4/ic_lock_white_18dp.png SHA1-Digest: yPHmivjr7+10Uc69s0UTzHHdczs= Name: res/drawable-hdpi-v4/lockscreen_watermark_light.png SHA1-Digest: kZukE3axdMWdS8KMYqwFzRR9cf4= Name: res/drawable-hdpi-v4/ic_lock_light.png SHA1-Digest: yr0Gtpwz3cFbLVAd0HaJokYcN8w= Name: res/layout/conversation_activity_attachment_editor_stub.xml SHA1-Digest: abwLqp13I+gFzfpj6+uenDioU0A= Name: res/drawable-xhdpi-v4/ic_forum_grey_32dp.png SHA1-Digest: 5tHLlYfg6OF+oA1ZeZ0y94dizG8= Name: res/layout/color_fragment.xml SHA1-Digest: mxjiLCZfoiy62pssAJkMzJ1cSSs= Name: res/drawable/widget_unread_count_background.xml SHA1-Digest: /4n7PCi4asBAtgNk/kz6nukmZ04= Name: res/drawable-xxxhdpi-v4/abc_tab_indicator_mtrl_alpha.9.png SHA1-Digest: 3kAOCvPKDybNG1/Fr21Y+cg522o= Name: res/drawable-v21/circle_touch_highlight_background.xml SHA1-Digest: RCp6OOrQn1/KjE6jGOF2niZjcBY= Name: res/layout-v21/recipient_preference_activity.xml SHA1-Digest: WOfr0gullD80mtt/Fc79KMZbteQ= Name: res/drawable-mdpi-v19/switch_thumb_pressed_holo_light.9.png SHA1-Digest: UGB8G0Ku26t0HqFX7D5HJk45fq0= Name: res/drawable-xxhdpi-v4/ic_video_dark.png SHA1-Digest: Fg668StlRQ043EOocA2qQhycAsc= Name: res/drawable-xxxhdpi-v4/icon.png SHA1-Digest: o5/gjAEwK5uCNV8+mM/jhtLwPP0= Name: res/drawable-xxxhdpi-v4/abc_scrubber_control_to_pressed_mtrl_005 .png SHA1-Digest: TdzAFNg4ycPCAcJ8yYIT8wvN194= Name: res/drawable-ldrtl-hdpi-v17/ic_send_white_24dp.png SHA1-Digest: wdHEaIW5RR6TSdUi7MzjLO+dLlo= Name: res/drawable-xxxhdpi-v4/ic_archive_white_48dp.png SHA1-Digest: /rdVh0e9MrmxrFT2l+kvrf7Oggk= Name: res/drawable/emoji_category_objects_dark.xml SHA1-Digest: Y6B+kuodwXhJDYZQpE1FkS9LxIw= Name: res/drawable-xxhdpi-v4/fab_shadow_mini.png SHA1-Digest: JuuXLwnTGlBkJag042XseCTGUSQ= Name: res/layout/conversation_item_received_audio.xml SHA1-Digest: sVV0Ye74Ir/9JHHGuQQ2rJBdcAg= Name: res/drawable-mdpi-v4/sent_bubble.9.png SHA1-Digest: 1sjPXZyhkKG475gQNSuvAeTaun4= Name: res/drawable-xxhdpi-v4/ic_attach_white_24dp.png SHA1-Digest: ZvVKksE6mfF73WzczOAzcllfguw= Name: res/drawable/compose_background.xml SHA1-Digest: zAZp74C8XCW9PDL4CsRYvvQmq9c= Name: res/layout/date_picker_view.xml SHA1-Digest: kZyt8l2Ojc7TCWDbo5idrz4PSzk= Name: res/drawable-mdpi-v4/ic_content_copy_dark.png SHA1-Digest: uj1qp2YktZnz25DDjfAxQAbU04U= Name: res/drawable-mdpi-v4/ic_emoji_recents_normal_dark.png SHA1-Digest: DJe+I+bmT3wwxrAjpBSgs6u1NVk= Name: res/drawable-mdpi-v4/dialog_full_holo_dark.9.png SHA1-Digest: f6ia9cfObNSnjO92EThmcdso0Qg= Name: res/drawable-mdpi-v4/abc_ic_star_half_black_36dp.png SHA1-Digest: KFgfLmmiYai76gReK6O3CrVx8ns= Name: res/drawable-hdpi-v4/abc_btn_check_to_on_mtrl_015.png SHA1-Digest: tpEM52vWcakmOwaErjJ4ZPrPYyg= Name: res/drawable-mdpi-v4/divet_lower_right_dark.png SHA1-Digest: WIoUPZdYM6t3CwssccpkwtWG3fI= Name: res/drawable-xxhdpi-v4/ic_image_light.png SHA1-Digest: edv/Y1KdCwrrt1Z54bVHCWtcKyc= Name: res/menu/contact_selection.xml SHA1-Digest: POaHN1ChfLneiqRwV1PnCum0mVs= Name: res/drawable-xhdpi-v4/ic_menu_search_holo_dark.png SHA1-Digest: FtrLmstk5hLDWAxdslzlf3AHtY8= Name: res/drawable-hdpi-v4/dialog_full_holo_dark.9.png SHA1-Digest: 6D+naJ/vT+snQDqAQOf8FDr7pCM= Name: res/color/abc_tint_switch_thumb.xml SHA1-Digest: v8XhH2hUxG24k0yvjO3FaMwufGk= Name: res/drawable-hdpi-v4/ic_backspace_disabled_light.png SHA1-Digest: nnubVwr7Sy/Q0WLycs3D4sO5LGE= Name: res/drawable-xxhdpi-v4/ic_reply.png SHA1-Digest: QaSH4wLqEhMDOSvU8Sg3e6uFNVY= Name: res/drawable-hdpi-v4/ic_message_white.png SHA1-Digest: MkdV8JUVcPsxsccNYv0v5s95uvE= Name: res/drawable-xxhdpi-v4/ic_send_insecure_white_24dp.png SHA1-Digest: 7B6dnoYSRH6lkxfWGOJo95HKRo0= Name: res/drawable-hdpi-v4/abc_scrubber_control_to_pressed_mtrl_005.pn g SHA1-Digest: p9AZr65Fs0yg5A5RKqfJElcikR8= Name: res/layout-v17/abc_popup_menu_header_item_layout.xml SHA1-Digest: 4bETilyMf1f471rW0prWDl+hKLE= Name: res/layout-v17/notification_action.xml SHA1-Digest: 8ZRmxwDdiPexmskS8rI24tCoRvE= Name: res/drawable/background_pane.9.png SHA1-Digest: uRUD8GBrgiNG4l5dimWEZT7nc20= Name: res/layout-v16/conversation_item_received.xml SHA1-Digest: GK5H2YaM+chtPJOP1mZ3to7TgsU= Name: res/drawable-xhdpi-v4/ic_arrow_forward_light.png SHA1-Digest: q9x2E1eADGdmpgXLDmjo0qb6Bzk= Name: res/drawable/emoji_category_people_light.xml SHA1-Digest: JWHxgdaJ5JIkkd00fQZEJAuJ8KY= Name: res/layout/notification_template_media_custom.xml SHA1-Digest: oNH5XYRZJWEkM0v/OygHz8hJfIg= Name: res/drawable-xhdpi-v4/ic_forward_white_24dp.png SHA1-Digest: xdw1k9Z4ZZfFwqQXdPErH1TZvXU= Name: res/drawable-xxhdpi-v4/ic_error_red_18dp.png SHA1-Digest: +2M7xp+/T/hKg+NkVPdbZ0DyTqU= Name: res/drawable-xhdpi-v4/ic_message_black.png SHA1-Digest: uKaKfpxeOu4b8ZJ5Qtd7MB6+zUA= Name: res/drawable-xxhdpi-v4/ic_keyboard_white_24dp.png SHA1-Digest: b+mYcSoWD7nfLADe99gyCWpwKis= Name: res/drawable/emoji_category_recent_light.xml SHA1-Digest: Ou8VeFgJTkCmSB3Aw6SoPPZapVY= Name: res/drawable-xxhdpi-v4/ic_app_protection_gray.png SHA1-Digest: eIck3aADlr+yZAQftO893QqUP84= Name: res/anim-v21/design_bottom_sheet_slide_in.xml SHA1-Digest: /sfmaMejemtjucshId3pph9anUM= Name: res/drawable-xhdpi-v4/list_selected_holo_light.9.png SHA1-Digest: H2X9BKxBdFAOYEppP+vczoJ/LCU= Name: res/drawable-xhdpi-v4/ic_send_insecure_white_24dp.png SHA1-Digest: BKk82nammTaZyWZU4Zot4YHuTcs= Name: res/drawable-hdpi-v4/abc_menu_hardkey_panel_mtrl_mult.9.png SHA1-Digest: kv8Z2aiviTOXDoPOY4/vyUE5lng= Name: res/drawable-xhdpi-v4/notification_bg_normal_pressed.9.png SHA1-Digest: XRK+0qTSsEHgbRKmsFa87e2SI/4= Name: res/drawable-xxxhdpi-v4/ic_scroll_down.png SHA1-Digest: bhMqEDS1tdSsjY7xeFk7dQKKg9U= Name: res/drawable-xxxhdpi-v4/abc_text_select_handle_left_mtrl_light.p ng SHA1-Digest: TQlbr5inRLGdVAzp0VH/BNJZyNo= Name: res/drawable-mdpi-v4/ic_app_protection_black.png SHA1-Digest: Vmif57DOxJYBXpueUYz/Dy2QiwY= Name: res/drawable-xxhdpi-v4/ic_content_copy_light.png SHA1-Digest: /03qSwRDQLrgFxWcRhejRF0k1fU= Name: res/drawable-xxhdpi-v4/ic_error_white_18dp.png SHA1-Digest: zLCyWgp+se7ARtP1rpa9t4vXC6k= Name: res/layout/abc_screen_toolbar.xml SHA1-Digest: LjpbeMlhRLwfimRRepF3E1Wd3iM= Name: res/drawable-xxhdpi-v4/abc_ic_star_half_black_48dp.png SHA1-Digest: QnhqhmaaBESNVdVhbQn1hIhZFYA= Name: res/layout/database_upgrade_activity.xml SHA1-Digest: 8ToclyWzXUYSqPU6SHA3neEmVgI= Name: res/drawable-v11/emoji_category_symbol_dark.xml SHA1-Digest: Bsh6VYChXsMvueGZpvzRmBkyrq8= Name: res/drawable-mdpi-v4/ic_download_circle_fill_white_48dp.png SHA1-Digest: 9/qDSW2eRP9jfOP/Z0iKMg+C39g= Name: res/drawable-xxxhdpi-v4/abc_spinner_mtrl_am_alpha.9.png SHA1-Digest: OqSIVlkrKIYR7cyOW2HdJP/h5io= Name: res/drawable-xhdpi-v4/ic_select_all_white_24dp.png SHA1-Digest: ad6/USV2mN6REVsn/edWPnEIH64= Name: res/drawable-xhdpi-v4/switch_bg_disabled_holo_light.9.png SHA1-Digest: lihXWFZsEX3Y2VZnZQ8xgJ4HqYc= Name: res/layout/transfer_controls_view.xml SHA1-Digest: kUkmavCCLbl+w7XsCCRzVqtjybQ= Name: res/drawable-mdpi-v4/sms_system_import_icon.png SHA1-Digest: l5z4MnNJTB2P8G2sJd2dJ/GakvY= Name: res/drawable-xhdpi-v4/icon.png SHA1-Digest: QhfVY7UBQilNAfrHJXWil0t74RI= Name: res/drawable-xxhdpi-v4/abc_text_select_handle_left_mtrl_light.pn g SHA1-Digest: ivQtj+4di/y5dhzH685N6IbzXYE= Name: res/anim/slide_from_right.xml SHA1-Digest: R/EvCIayWDXTgntzi87/TffROjA= Name: res/drawable-mdpi-v4/ic_emoji_places_normal_light.png SHA1-Digest: MarlqNR+06iKTB/2P128Kbrw4L4= Name: res/drawable-xxhdpi-v4/switch_thumb_pressed_holo_light.9.png SHA1-Digest: rdXvsbLrMDJEfRgxFdrCnH6Oj6A= Name: res/layout/design_layout_snackbar.xml SHA1-Digest: Qm0yXxP750AN9Zs3M+gCLmrfBWk= Name: res/drawable-mdpi-v4/textfield_default_holo_light.9.png SHA1-Digest: UnLnYU6MD2MOR62lCItQOD29xjE= Name: res/drawable-hdpi-v4/ic_menu_add_field_holo_light.png SHA1-Digest: /GOsJbP0W9Qv2JEkpnr3LP2Lsr0= Name: res/layout-v17/export_fragment.xml SHA1-Digest: qYX7mhpFkMcMxFoqI373UpjRDTY= Name: res/drawable-xxhdpi-v4/ic_unlocked_white_24dp.png SHA1-Digest: WXDbx5f4KO73GnbhLd1QjgZXBoA= Name: res/layout/reminder_header.xml SHA1-Digest: sXqJA2ZQKdHSur+fn8XUDpanODA= Name: res/drawable-mdpi-v4/ic_emoji_people_normal_light.png SHA1-Digest: NFERmN1aL/T2081V6Bhvcp/GNno= Name: res/drawable-xxhdpi-v4/ic_send_push.png SHA1-Digest: uyrpO+blmlxacSsDRtn8/QX++G0= Name: res/drawable-xxhdpi-v4/ic_image_dark.png SHA1-Digest: NUtzuGCNGCNK8WMP9hjCr5MVsBw= Name: res/drawable-xhdpi-v4/ic_done_white_18dp.png SHA1-Digest: 4vMrikq9aYsg1DjcpDsaiNrYP50= Name: res/drawable-xxhdpi-v4/list_longpressed_holo_light.9.png SHA1-Digest: I+5+I8Glvy2IsIw0hQ/hFirU8cE= Name: res/drawable-hdpi-v4/notification_bg_low_normal.9.png SHA1-Digest: kk7ZIosN3+pslvIcX8e6jJgtitw= Name: res/drawable-xhdpi-v4/ic_download_circle_fill_white_48dp.png SHA1-Digest: RIvuVHlDozhalhYGjVDd5DOtFGk= Name: res/drawable-xxhdpi-v4/ic_send_sms_secure.png SHA1-Digest: x1sdT9HIlRjIOfhHiIBrV2ijbLQ= Name: res/drawable-hdpi-v4/abc_btn_radio_to_on_mtrl_015.png SHA1-Digest: W6K3P94iAz0CiSFCp6GiJlxogqs= Name: res/drawable/abc_list_selector_background_transition_holo_light. xml SHA1-Digest: AdlBQF7mCKx3VlJQ4HaRjQeNXyo= Name: res/layout/recurrencepicker_freq_item.xml SHA1-Digest: P7PQYxGG9LY7vr1fAs/e5NanpgM= Name: res/drawable-xhdpi-v4/ic_arrow_forward_dark.png SHA1-Digest: QhnF5j0tTP2JZzbe3Yy2IDBpLKw= Name: res/drawable-xhdpi-v4/notification_bg_low_normal.9.png SHA1-Digest: 0ugTUuZHAnkDPHn8gE19ZKsgmZw= Name: res/drawable-mdpi-v4/abc_text_select_handle_left_mtrl_dark.png SHA1-Digest: ZmbQ2i0OTo0eavn7LnXVqs7Kbl0= Name: res/drawable-hdpi-v4/ic_content_copy_dark.png SHA1-Digest: Lm6gLN2ljsitsRROc7Ux+A4FXiU= Name: res/layout-v17/notification_template_big_media_narrow.xml SHA1-Digest: Jr3BP0TMtCz20tWWd1csBv2DWXw= Name: res/drawable-mdpi-v4/ic_volume_up_dark.png SHA1-Digest: Ky6UbWwiL7NHQoImRhrIq1TsNng= Name: res/drawable-mdpi-v4/ic_volume_off_white_18dp.png SHA1-Digest: 2tno0ARsgceSjzJjWPa2teDkmCw= Name: res/drawable-xhdpi-v4/ic_audio_dark.png SHA1-Digest: pvZ/oBqSVFnUnQsvwfQhgsk1KpY= Name: res/drawable-hdpi-v4/abc_scrubber_primary_mtrl_alpha.9.png SHA1-Digest: 9I5uBrEaa3rXA0AACtIBgaW++Q4= Name: res/color/abc_primary_text_material_dark.xml SHA1-Digest: Zzpm2HGH6H5LoI27zVpNdjRi+qI= Name: res/layout/notification_template_media.xml SHA1-Digest: vZ3txGgpJJnhLxb+zSvtWDjuaas= Name: res/drawable-xhdpi-v4/list_focused_holo.9.png SHA1-Digest: Kw0Qo9eKlw06/oxLHYSWR6VftBw= Name: res/drawable-hdpi-v4/list_selector_background_selected.9.png SHA1-Digest: otna3L08LP49gXxuQvuRvsKnTT4= Name: res/drawable-xhdpi-v4/ic_emoji_places_normal_dark.png SHA1-Digest: N9KlLkDYf8JVppzfm/IbuAbzWIw= Name: res/drawable-hdpi-v4/ic_call_split_white_24dp.png SHA1-Digest: p7+qYquJusVV+/JHiMfkFBB2uZ4= Name: res/drawable-xxhdpi-v4/transfer_controls_background.9.png SHA1-Digest: YwBh/LyZpJuphfkJ+yVu50osyR8= Name: res/layout-v13/select_dialog_singlechoice_material.xml SHA1-Digest: DFY+69ktUBOWthKRwMCsCRPDpG4= Name: res/layout-v17/notification_template_custom_big.xml SHA1-Digest: gs8LQ39s5+1YXyvWg3XT+3ocV+Y= Name: res/drawable-hdpi-v4/abc_text_select_handle_middle_mtrl_light.pn g SHA1-Digest: 0CPerofud1XH0R30L0HWs3Eevyk= Name: res/drawable/conversation_item_sent_indicator_text_shape_dark.xm l SHA1-Digest: JovCfRQ/2H0EkjnIp1jWoRlqvbo= Name: res/drawable-xxhdpi-v4/abc_ic_star_half_black_36dp.png SHA1-Digest: L+/mwEcCSClPjbtRIz+isSJt7Zc= Name: res/color/abc_tint_switch_track.xml SHA1-Digest: 2+T5h4qZT3tgSEpBE5EDOFVT4QE= Name: res/drawable-xxxhdpi-v4/ic_send_insecure_white_24dp.png SHA1-Digest: 5mN8PxdM1CEhGcDgRLhjvN4aenA= Name: res/drawable-mdpi-v4/telephone.png SHA1-Digest: 9FGPw0WAKpSSaTd0HEd05vpiQt8= Name: res/drawable-mdpi-v4/ic_save_all_white_24dp.png SHA1-Digest: 5gQT69RlzWI04CFd1FnTJZmwDJM= Name: res/layout-v21/notification_action.xml SHA1-Digest: PEhf48jOXBA5qkj5jCO+sKO3Xk8= Name: res/drawable/navigation_empty_icon.xml SHA1-Digest: dGWI+PA1xIe4F96rHxKHFJxaka4= Name: res/drawable-xhdpi-v4/ic_emoji_recents_activated_dark.png SHA1-Digest: K/zgXHsDeAiskqa9a/PUoAb2AvE= Name: res/drawable-xxhdpi-v4/abc_btn_switch_to_on_mtrl_00001.9.png SHA1-Digest: NRcHxLdsX/Th2xTrioD1KYFYeK8= Name: res/drawable-xxhdpi-v4/sent_bubble.9.png SHA1-Digest: JlBo2LcLmyvycEGbrbpgPJ1rbv8= Name: res/drawable/switch_track_holo_light.xml SHA1-Digest: Eo5MokNAcjuPCs208WPinvrsjSk= Name: res/drawable-hdpi-v4/ic_emoji_emoticons_normal_light.png SHA1-Digest: FgmZlOfVN1rD+CH766Mmvh3NhAA= Name: res/drawable-xxhdpi-v4/abc_ic_menu_cut_mtrl_alpha.png SHA1-Digest: aLOtkEElPKVQnb/x08i/wBkFiH8= Name: res/drawable-xhdpi-v4/abc_ic_menu_share_mtrl_alpha.png SHA1-Digest: DTeGNcY/gdR9X+UQ3ft0flJ139w= Name: res/drawable-mdpi-v11/icon_cached.png SHA1-Digest: bWjXi9cQeu6bWJMLj3jYj2X5PAE= Name: res/layout/abc_activity_chooser_view.xml SHA1-Digest: 6NrTRoAPSzCvGGEddu+u1rad9lA= Name: res/drawable-xxhdpi-v4/ic_menu_search_holo_light.png SHA1-Digest: oqGMNvyOAw/Sdy8/PletKcOIEa4= Name: res/menu/key_scanning.xml SHA1-Digest: UctbhwtsFtrITbdZGf/9Cs79RAc= Name: res/layout-v16/conversation_item_sent.xml SHA1-Digest: ptvJ+benw2A+ikCMWM9UitsRJPw= Name: res/drawable-hdpi-v4/ic_emoji_nature_normal_dark.png SHA1-Digest: QYocdBCKKv2e2ofEk8wfVdfVbx4= Name: res/drawable-xhdpi-v4/ic_mood_white_24dp.png SHA1-Digest: PRxbL+zUh8rXMbA8cU6w7aum2O4= Name: res/layout-v17/notification_template_big_media_custom.xml SHA1-Digest: mxosU1f61wPXGIvZfg/T6gkImcM= Name: res/layout/media_view_remove_button.xml SHA1-Digest: Z9uZCVkqmrC5DOX/oXvQagCoNbQ= Name: res/drawable/conversation_attachment_close_circle.xml SHA1-Digest: Hq4kBHAnVS0k5VX3vLOaMLmM/1I= Name: res/drawable-hdpi-v4/ic_push_gray.png SHA1-Digest: 1sFcllHROkVQm/p7MnDHmYz5eoQ= Name: res/animator/bottom_pause_to_play_animation.xml SHA1-Digest: 7f8HiUwoTj84cBIvXQhtx6kFMlc= Name: res/drawable-xhdpi-v4/ic_emoji_emoticons_normal_light.png SHA1-Digest: 6dRyqVq/Bpj470mPRDxw+j+gv1M= Name: res/drawable-xxhdpi-v4/switch_bg_focused_holo_light.9.png SHA1-Digest: NhiFyZpL/UFmyLAi93FEdt3bouY= Name: res/layout/empty2.xml SHA1-Digest: wnS9P8OkImc/tnKJnsSet9DvBz0= Name: res/layout/design_menu_item_action_area.xml SHA1-Digest: +CaSrRO+YIeuLR//AbmNORoSW6o= Name: res/drawable-v11/emoji_category_symbol_light.xml SHA1-Digest: S4KbeTJw5wwr/9tLDcglMDRZ4A4= Name: res/layout-land/calendar_date_picker_dialog.xml SHA1-Digest: DTEvwBiBAs8Zx8lzI8d7Yxok/cg= Name: res/color/abc_tint_spinner.xml SHA1-Digest: 4iVhO6HftwPxxzWhGE9nvzm3wdM= Name: res/drawable/ic_backspace_dark.xml SHA1-Digest: kK6WMDP0553tSL5Ig3R8OsalYh4= Name: res/color-v23/abc_tint_btn_checkable.xml SHA1-Digest: +QyTGetrtaNPbuACHNcF9nOfp2c= Name: res/layout/keyboard_right_drawable_with_header.xml SHA1-Digest: FAC3tnMsk157+Mb8A6YeI7YQN8s= Name: AndroidManifest.xml SHA1-Digest: pos9Uo0H8CciJ4P55bBrbNkzTu8= Name: res/drawable-xxxhdpi-v4/ic_reply_white_36dp.png SHA1-Digest: JFrKb7Z9QNRfu6OtxfHY6NeGjLg= Name: res/drawable-hdpi-v9/icon_notification.png SHA1-Digest: PuSZfSqVgmCdbkGoQ/wSfTfKWXM= Name: res/layout/fragment_submit_log.xml SHA1-Digest: kbXx9AP2PSn4e7wJ1TWIialIBbQ= Name: res/drawable-mdpi-v4/list_selector_background_selected.9.png SHA1-Digest: qxEi8kmZgQ876B6Q57MNXtffTj0= Name: res/drawable-xhdpi-v4/sent_bubble.9.png SHA1-Digest: x1LavT6RtZ4zK44/4apQftPRZf4= Name: res/drawable-mdpi-v4/ic_lock_white_24dp.png SHA1-Digest: k38KhyZ93Rj0ZJ6bTEynyrgD7UU= Name: res/drawable-mdpi-v4/ic_push_gray.png SHA1-Digest: 13WJHd5q2Ahp9uU8HAipqXAjWc8= Name: res/drawable-xhdpi-v4/textfield_disabled_holo_light.9.png SHA1-Digest: 6kr6+a7d5GsQfVMreRc+SmQOKzc= Name: res/color/abc_tint_default.xml SHA1-Digest: Cj0w9Ew2rX4ZyCzvg/1RtsNqBUc= Name: lib/mips/libcurve25519.so SHA1-Digest: fnEtlnyCW+CCsOTkWuRjerMx3Tk= Name: res/drawable-xxhdpi-v4/ic_create_white_24dp.png SHA1-Digest: Qv2FReVOsuiuXc6rlNON/RF0QGY= Name: res/drawable/pause_to_play_animation.xml SHA1-Digest: V3CIgB0TLJoQjO+eGe31gEnqOKk= Name: res/drawable-hdpi-v4/ic_attach_white_24dp.png SHA1-Digest: hxmJQR+Pz9G2zaJ1fO47E36ilVo= Name: res/drawable-mdpi-v4/ic_emoji_recents_normal_light.png SHA1-Digest: 7fYNOpcf+J5rpJM+V2hxgtJga/I= Name: res/drawable/touch_highlight_background.xml SHA1-Digest: 9D8FMGAktPIKHe1QYVlbL4T2bHA= Name: res/drawable-xhdpi-v4/ic_play_circle_fill_white_48dp.png SHA1-Digest: ZxSr9NEiosFeSFcKMWj2TyuCn9M= Name: res/layout-v11/notification_media_action.xml SHA1-Digest: xk6Nv+akCynB9a9MstuHUvrigc0= Name: res/drawable-xhdpi-v4/ic_warning_light.png SHA1-Digest: q0UxUvig08oexgA/mJG+pHXZeig= Name: res/drawable-xxhdpi-v4/ic_forum_grey_32dp.png SHA1-Digest: zfLrcaLw9MDbUGCChbbJC6X2vQo= Name: res/animator-v11/rotate_90_animation.xml SHA1-Digest: vCHon/zb8+I+tgv5eAXXGWcch9Q= Name: res/drawable-xhdpi-v4/received_bubble.9.png SHA1-Digest: gcv90BhHf7spJ97oEUWp1vl90m0= Name: res/drawable-xxhdpi-v4/divet_lower_right_dark.png SHA1-Digest: jyB7LGFFsfpMRiD5cBDnVpU2RF8= Name: res/drawable-hdpi-v4/ic_send_secure_white_24dp.png SHA1-Digest: tkxExImE54L1mrPJnbnsEFe7YKQ= Name: res/drawable-xhdpi-v4/design_ic_visibility.png SHA1-Digest: XzXZlPxYfuQXzdfnGMLOPy2zBys= Name: res/drawable-v21/conversation_list_item_unread_background.xml SHA1-Digest: N1Iz07XE+nqdqBg9fH6xj5xds+0= Name: res/drawable-xxhdpi-v4/ic_emoji_nature_activated_dark.png SHA1-Digest: Zwbx2B77yBJ2KFCLfem8UvQ7/d4= Name: res/drawable-ldrtl-mdpi-v17/ic_send_white_24dp.png SHA1-Digest: d9D+dFHq5pcFrHc+3b4nVL6Jpr4= Name: res/drawable-xhdpi-v11/icon_cached.png SHA1-Digest: WXYwe2ZPEkhUlCqRpy7Fi6mr9TM= Name: res/drawable-mdpi-v4/ic_emoji_flags_normal_dark.png SHA1-Digest: LZZgv0dmbJRyZidsyghMmuTpP1A= Name: res/drawable-xxhdpi-v4/abc_text_select_handle_left_mtrl_dark.png SHA1-Digest: 5z9/n+cRKfgbsXkUM056zH3FCVY= Name: res/drawable-sw600dp-xhdpi-v13/ic_backspace_disabled_light.png SHA1-Digest: kMBzMnDevZ0XLt1+5ae3cmCuN78= Name: res/layout-v13/database_migration_activity.xml SHA1-Digest: Vfp5/D6oZcKvcg7J1GUVRHlGWp8= Name: res/drawable-xxhdpi-v4/ic_movie_creation_light.png SHA1-Digest: J6AGqej2x+M+XJ8JN3JtZ/6Wx8U= Name: res/drawable-hdpi-v4/ic_add_white_24dp.png SHA1-Digest: d8VcBCnSk44fNTKCt4XSFXPtyZo= Name: res/drawable-hdpi-v4/fab_shadow.png SHA1-Digest: QcPJ+aww0O/T4fX/NdSxxz0gL5E= Name: res/drawable-v21/conversation_list_item_unread_background_dark.x ml SHA1-Digest: SritqTfucM34VdX3Wq5TrcRj3A0= Name: res/drawable-mdpi-v4/ic_info_outline_light.png SHA1-Digest: hDBWUneztadWl+2LCS2PF3PVayM= Name: res/layout-sw600dp-v13/three_keys_view_right_drawable.xml SHA1-Digest: Ed3lqHofQXUKJnEKuPzOOoZNkEA= Name: res/drawable-xhdpi-v4/ic_brightness_6_gray.png SHA1-Digest: In1N9+Z54wMBLaMQk7yhzQEK+UY= Name: res/drawable-xhdpi-v4/abc_text_select_handle_left_mtrl_light.png SHA1-Digest: g81CUa1lR0Ts/TFU+9EVs79w2q4= Name: res/drawable-v21/design_password_eye.xml SHA1-Digest: HVHJTN2P1VIy7McjbW2zKNHTZ/k= Name: res/drawable-v11/emoji_category_nature_light.xml SHA1-Digest: APCRNVaaYVwvFd3ETZY/JfKdzKg= Name: res/anim/slide_to_top.xml SHA1-Digest: b/7F73oaOgl8QTgwjZirDWc5DsI= Name: res/drawable-xhdpi-v4/ic_emoji_emoticons_activated_light.png SHA1-Digest: S6TvtzA7Bo/XtCkIK2VkoIS82ik= Name: res/drawable-xhdpi-v4/ic_delivery_delivered_dark.png SHA1-Digest: YVsN6slHWNaCzpokvQgLqC+fq6I= Name: res/drawable-xxhdpi-v4/abc_list_divider_mtrl_alpha.9.png SHA1-Digest: 0MMPUBC/hxFmt1Ak92Vmj3X0hfs= Name: assets/fonts/Roboto-Light.ttf SHA1-Digest: pjPMJmlNtysc9kyqUeZLQ8N3mzo= Name: res/drawable-xxxhdpi-v4/ic_play_circle_fill_white_48dp.png SHA1-Digest: HC3H3QKMcIn/XvG7NTnesc4XN60= Name: res/drawable-xxhdpi-v4/ic_save_all_white_24dp.png SHA1-Digest: l3gWuGNSHrqMQXWG0OPvuIaQ3Kk= Name: res/drawable-xxhdpi-v4/ic_send_sms_insecure.png SHA1-Digest: wVnl3pGKiCgCUmX2o2XZJ185DhY= Name: res/layout/abc_alert_dialog_title_material.xml SHA1-Digest: eHB3qMi9x448kTfErbhY0wKGOGw= Name: res/drawable-mdpi-v4/abc_scrubber_track_mtrl_alpha.9.png SHA1-Digest: F8nLQoXKGiQPJCjl3TNIR/eklGw= Name: res/drawable/spinner_background_holo_light.xml SHA1-Digest: FkM2Y5/fZGxEDF75TigYjOv/pBw= Name: res/drawable-xhdpi-v4/fab_shadow_mini.png SHA1-Digest: K6jX5AoiUHx8WZvpb4TNE/aBNps= Name: res/drawable-xxhdpi-v4/abc_ic_star_black_36dp.png SHA1-Digest: WfH571yq6iMoRrhqJrcQ5L9wd34= Name: res/drawable-hdpi-v4/ic_missing_thumbnail_picture.png SHA1-Digest: AkapvGWfA79lmTGbR9Wzo/42GwY= Name: res/layout-v17/abc_search_view.xml SHA1-Digest: w/EaiCfthqVUJ4hNIf3hUGNJISc= Name: res/drawable-mdpi-v4/ic_emoji_objects_activated_light.png SHA1-Digest: alEiHBp0PYCvmpzbGa01iDpAWXQ= Name: res/drawable/conversation_list_item_unread_background.xml SHA1-Digest: Fmy9ZHMz/W9uNp5AftjihiWw9rw= Name: res/drawable-hdpi-v4/abc_textfield_search_default_mtrl_alpha.9.p ng SHA1-Digest: Uaax8TsSlV1ssfdd4JM/P9lAyjc= Name: res/xml/badge_widget_provider.xml SHA1-Digest: +ZlTyPrkmuFlP4u7gmyhFqYltX8= Name: res/drawable-ldrtl-xxxhdpi-v17/abc_ic_menu_copy_mtrl_am_alpha.pn g SHA1-Digest: e4+xS2IHT21cqoB/yQU6OyS1b7o= Name: res/drawable-xxhdpi-v4/ic_badge_24dp.png SHA1-Digest: dzOpM+GS7bMorn2a/IVSkZlYVHA= Name: res/drawable-mdpi-v4/ic_play_circle_fill_white_48dp.png SHA1-Digest: bvQz4mTshp6coddKsCQyDxXU/Q0= Name: res/drawable-mdpi-v4/ic_emoji_symbols_activated_light.png SHA1-Digest: AY6BCs4NmmdcSafgRSNwfOVNmjY= Name: res/layout/design_bottom_navigation_item.xml SHA1-Digest: zJmONTRCmYo9XB0TlPWgbXf5xdY= Name: res/drawable-mdpi-v4/ic_backspace_normal_dark.png SHA1-Digest: E+HzcnHe62jO/lohBxlGEbdT0ms= Name: res/drawable-mdpi-v4/abc_text_select_handle_left_mtrl_light.png SHA1-Digest: I7wS5ZKCeDKsgaNc6QtAyJ+0CnU= Name: res/drawable-xhdpi-v4/ic_check_normal_dark.png SHA1-Digest: 1XD1KsYvae/WOB8WnfjzrdtJBzk= Name: res/xml/preferences_chats.xml SHA1-Digest: SH8XF6Rr8C59ppD1B4e0phGULBc= Name: res/layout/radial_time_picker_dialog.xml SHA1-Digest: rnZqvjrWjvkn0JbM8JD/R3oXOMQ= Name: res/drawable-xhdpi-v4/ic_menu_add_field_holo_light.png SHA1-Digest: qkM0nsehJp2malHucAuSFp92PDk= Name: res/drawable/background_pattern.png SHA1-Digest: te6lQlxaf+qKIDNGC4udnhKhgr0= Name: res/layout/abc_popup_menu_item_layout.xml SHA1-Digest: jA9dptKvdESOx5FotTJaJllrdMw= Name: res/drawable-hdpi-v4/ic_download_circle_fill_white_48dp.png SHA1-Digest: gNRhVl6SKU2LKdsU3uaIn96oBI4= Name: res/layout/hms_picker_view.xml SHA1-Digest: n4jSoVkT0j3uRcsS1tyGutHDKuc= Name: res/drawable-mdpi-v4/ic_emoji_people_normal_dark.png SHA1-Digest: FxxkOb3eliTm0v2G3ujs7dHQZ6o= Name: res/drawable-mdpi-v4/ic_account_box_light.png SHA1-Digest: Xmih+rt8esnUfRPfBmqy1oEug6g= Name: res/layout/media_overview_activity.xml SHA1-Digest: +IX8tuRvJSRL1nnI3aSQGCpc8eE= Name: res/drawable-hdpi-v4/ic_save_all_white_24dp.png SHA1-Digest: fTqBtx3+VRpQQgh21GoAIgIYZFM= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_84 SHA1-Digest: cM9Igo/aYhfEFUXrYtfhy+rGfTA= Name: res/drawable-hdpi-v4/design_ic_visibility.png SHA1-Digest: +hcSUcB9RDUJTOimdB4ICvT3arQ= Name: res/drawable-xhdpi-v4/abc_btn_check_to_on_mtrl_015.png SHA1-Digest: Liu4ZSvXVbRTfKfw/Sf1BCXStdc= Name: res/layout-v16/verify_identity_activity.xml SHA1-Digest: abOUHfeCLJJaQ91jpxtdZSSDzkQ= Name: res/drawable-xhdpi-v4/switch_thumb_pressed_holo_light.9.png SHA1-Digest: UztIfkg+4xXbDDfXpkylsY0bawQ= Name: res/drawable-xhdpi-v4/abc_ab_share_pack_mtrl_alpha.9.png SHA1-Digest: 8QLweU4p1rehkS9Zii3jepzESPg= Name: res/drawable-ldrtl-xxxhdpi-v17/abc_spinner_mtrl_am_alpha.9.png SHA1-Digest: dT9O498/3E1mpkpzpSmdy7tcxxU= Name: res/drawable/notification_bg.xml SHA1-Digest: THPM7d4fjttZeFlOLyUSXRHqhH0= Name: res/drawable-mdpi-v4/ic_message_black.png SHA1-Digest: zX0Isnvpx4aSgpL+VtqlSA4mp4o= Name: res/drawable-hdpi-v4/abc_textfield_default_mtrl_alpha.9.png SHA1-Digest: NPD/eXAUHpJIZ0Gue4mGW/Q6oXI= Name: res/drawable-hdpi-v4/abc_ic_star_black_16dp.png SHA1-Digest: FQyC2AygbGjHIwHNyQK6rfa+lU4= Name: res/drawable/abc_ic_arrow_drop_right_black_24dp.xml SHA1-Digest: GQi7GLUlkJLHiD+gB14bbxFEMxg= Name: res/layout/design_layout_tab_text.xml SHA1-Digest: hGylEWtLV6PowlIJAnKyrFqhGEo= Name: res/drawable-xxhdpi-v4/ic_refresh_white_18dp.png SHA1-Digest: Q15fNzEUSMunWUNIiHQsywHTQxw= Name: res/color/design_tint_password_toggle.xml SHA1-Digest: tXHSF7zejvqCXCSnNyLjRNye5ZI= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_81 SHA1-Digest: daBwnRVtz216PB28MApBfpfM6OY= Name: res/color/design_error.xml SHA1-Digest: 6eBLuAiTIJDL9jItNuNpsAB6IjQ= Name: res/layout-v21/conversation_fragment.xml SHA1-Digest: vykdFaKcvfe80HYf0fSDEj84t3s= Name: res/drawable-mdpi-v4/ic_keyboard_white_24dp.png SHA1-Digest: xeYwu7r+BgqvcqSiy6WKyBFn0PU= Name: res/drawable/last_seen_divider_text_background_light.xml SHA1-Digest: SKAPPzKllQI/8GW+6JgqUOxszCQ= Name: res/drawable-xxxhdpi-v4/fab_shadow_mini.png SHA1-Digest: HDUgGlNwLol/QjCoQ1CAJRsFzAo= Name: res/drawable-mdpi-v4/ic_send_sms_secure.png SHA1-Digest: 7RUK/SH4FbWSoWnknRUMq6EWjbs= Name: res/drawable-xxxhdpi-v4/ic_arrow_forward_white_24dp.png SHA1-Digest: kmuYpbwg9hm+zYqSY4xgXUNrUh8= Name: res/drawable-mdpi-v4/textfield_focused_holo_light.9.png SHA1-Digest: Osswqo8kfRGKahOnjpi0n93nS1Y= Name: res/color-v11/abc_hint_foreground_material_light.xml SHA1-Digest: 0+TtbyFWq3KwgFpqHVEftodeMQI= Name: res/drawable-ldrtl-mdpi-v17/abc_spinner_mtrl_am_alpha.9.png SHA1-Digest: nhOdszX2MHoKx6H7uBb+tEWPyJ0= Name: res/drawable-xhdpi-v4/abc_text_select_handle_middle_mtrl_dark.pn g SHA1-Digest: qIyIPrdPc6Iq8AOMfE1vzfxsbTs= Name: res/color-v23/abc_btn_colored_borderless_text_material.xml SHA1-Digest: TsIbuUrE/6o0oDATCM4a2QUvxJg= Name: res/drawable-hdpi-v4/fab_shadow_mini.png SHA1-Digest: H2qyAE5qLgTtU/9FhzpezlRiwVA= Name: res/drawable/emoji_category_objects_light.xml SHA1-Digest: JDQouPeLrbGMSt3Uc/WHtIWqhSQ= Name: res/layout/emoji_drawer.xml SHA1-Digest: Dd/8q/DvT7ilOEXIiORvUQ7HDK4= Name: res/drawable-xxhdpi-v4/ic_menu_remove_holo_light.png SHA1-Digest: GbOqf2Yga6qVAxaA3ec35ac0Yio= Name: res/color/abc_search_url_text.xml SHA1-Digest: ULqUPkxlcpqU/WycHleKoU9uLlU= Name: res/layout-land/radial_time_picker_dialog.xml SHA1-Digest: LLbkgnMksutub2cRM1nsU8FpJoY= Name: res/layout/calendar_date_picker_dialog.xml SHA1-Digest: NUtG90BZ+8EsAe+kzPDU+xv2GjI= Name: res/drawable-mdpi-v4/abc_scrubber_primary_mtrl_alpha.9.png SHA1-Digest: bZVk/7JyPqpb9FPgqFjfBJURWhA= Name: res/drawable-xxxhdpi-v4/ic_unarchive_white_36dp.png SHA1-Digest: 9cXrWWjq7GXj9DC1D4MTcb7KJO0= Name: res/drawable-v11/edit_text_holo_light.xml SHA1-Digest: hxVxfVfZWEOaImpM3nIRR206O3Q= Name: res/drawable-mdpi-v4/ic_video_light.png SHA1-Digest: J3v9bGC1UXW6oWWeoGjtijwgDQQ= Name: res/drawable-mdpi-v4/ic_info_outline_dark.png SHA1-Digest: /PF66Z+zUl+MpR95R4Usmp9061c= Name: res/drawable-mdpi-v4/abc_menu_hardkey_panel_mtrl_mult.9.png SHA1-Digest: 6odRFxWrjmo6tHxritbB5cYdjWI= Name: res/drawable-xhdpi-v4/abc_btn_switch_to_on_mtrl_00001.9.png SHA1-Digest: /hpvHveM+a3Mx49n/3P19bBBgiI= Name: res/color/abc_secondary_text_material_dark.xml SHA1-Digest: jVKXpTEzxPaBeJwNCxDpj2X/w74= Name: res/drawable-hdpi-v4/ic_notifications_gray.png SHA1-Digest: Pd6jNrp5QpPHay891JKXphkSd6g= Name: res/layout-v17/notification_template_lines_media.xml SHA1-Digest: tz2lYMQAF7sxUin88+DuDAtQOqg= Name: res/layout/design_navigation_menu.xml SHA1-Digest: vl1zV6hLnTZFqcV+cyuW1MeII3Q= Name: res/drawable-xxhdpi-v4/ic_contact_picture.png SHA1-Digest: twSQpXhWmjQ7CWO9m0F8nUDc7A4= Name: res/layout-v17/abc_popup_menu_item_layout.xml SHA1-Digest: 8DtItPqMurboslrZKDDQ1XmfM+E= Name: res/drawable-xhdpi-v4/abc_ic_star_half_black_36dp.png SHA1-Digest: GV2BrBF8/MHHPwyzNe+cYQSsr8s= Name: res/drawable-hdpi-v4/ic_send_white_24dp.png SHA1-Digest: YeisgUij4OcmXinn/cWMdZz3TBc= Name: res/menu/conversation_list_batch_archive.xml SHA1-Digest: D8Lq/UUufIVGdgLWYsizYBLTqBo= Name: res/drawable-hdpi-v4/ic_done_white_18dp.png SHA1-Digest: KQifE++1R42/hv8mw6aOLGraIQc= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_94 SHA1-Digest: iFng5Rg8uXcO1Wad8WzQjXXbaSA= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_95 SHA1-Digest: 6+a5S3YBqGkTp77eRI98wZppshU= Name: res/layout/share_intent_row.xml SHA1-Digest: hEFfaanmx0xw0zSH1atx6iZAH5s= Name: res/xml/preferences_notifications.xml SHA1-Digest: p4OAaRpNlmyOg9HyN+lTj8L8WJs= Name: res/drawable/notification_icon_background.xml SHA1-Digest: VGX+wieCo2SajK2CMLMDgU1/Aos= Name: res/drawable-xhdpi-v4/switch_bg_focused_holo_light.9.png SHA1-Digest: /LzkB2YWBf8/BEEXg0QTgGcw1zo= Name: res/drawable-xxhdpi-v4/ic_info_outline_light.png SHA1-Digest: f/SRAbWGdLggjG49cpPDrZ8GR1o= Name: res/layout/prompt_passphrase_activity.xml SHA1-Digest: ZPPyAUKsFokJGPAQtWrHF7MbIyE= Name: res/drawable/button_background_light.xml SHA1-Digest: 6hucLMUPMI5lbi0CQdnO07Alz4U= Name: res/drawable-v11/emoji_category_flags_dark.xml SHA1-Digest: K6wG2meKj+58nMR2LS7Tlrk29+Y= Name: res/drawable-xhdpi-v4/alert.png SHA1-Digest: LPSO3FYapsRHFP0T+o4zkdxUEhY= Name: res/layout-v16/calendar_date_picker_header_view.xml SHA1-Digest: 5Wnpaad+1uIjUuhr3iEY2o+38u4= Name: res/layout/contact_selection_activity.xml SHA1-Digest: 4URmy7POdpnO01RqOKKR1jvxUSs= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_91 SHA1-Digest: hd0u/1mAj3Ir3hNqdmnilV5SSVM= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_90 SHA1-Digest: 7WrMiEDONSaE+X9BTfPKgXzIz+g= Name: res/menu/conversation_list.xml SHA1-Digest: uCFkIKxt/KfXVT/jn5kJboO0aVc= Name: res/drawable-xxhdpi-v4/ic_message_gray.png SHA1-Digest: haNfxks1gclytpmzOfPF775nqok= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_49 SHA1-Digest: lJyFdjLImuA15HlomNveCTDcnAc= Name: res/drawable-mdpi-v4/ic_save_white_24dp.png SHA1-Digest: K14JTtfEHf/fT8ZgbB4MHymv7H8= Name: res/drawable/compose_divider_background.xml SHA1-Digest: GVnpKW3S5n6mjpAhT6hMqjKIs0o= Name: res/drawable-xxhdpi-v4/ic_action_warning_red.png SHA1-Digest: 11cnBsIwAg6MESM4rNvhhq30SW0= Name: res/drawable-mdpi-v4/textfield_disabled_holo_light.9.png SHA1-Digest: fdGCIi27zMMr34hbp5pyUowldrs= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_44 SHA1-Digest: N1nuhYaREi9z6iAeXxLcra4rL5s= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_43 SHA1-Digest: mIFkru/j+coHhbRh6/nN2br+Xak= Name: res/drawable/ic_check_light.xml SHA1-Digest: D6ryoNpQPcPyGevgOmJjdbBwuMw= Name: res/drawable-hdpi-v4/ic_menu_search_holo_dark.png SHA1-Digest: gL/VDRxvMbN3cvW+cG+h0LN2kJM= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_36 SHA1-Digest: hWS0Op4dc6LF44g9BIFft/f3QH0= Name: res/drawable-xxhdpi-v4/ic_emoji_symbols_activated_light.png SHA1-Digest: +nPlVQ0H32v53pvZ8POlrZlaOxY= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_31 SHA1-Digest: KuLNytr4ZRl4fcSWuquXOt81/60= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_30 SHA1-Digest: Bh8tv057544lV4r7kRT1zzTlaA8= Name: res/drawable-xhdpi-v4/ic_volume_up_light.png SHA1-Digest: gbftuNpGqiLFP54XEsAgE9pLWno= Name: res/drawable-xxxhdpi-v4/abc_ic_menu_cut_mtrl_alpha.png SHA1-Digest: Gr88G2zQ2X0grlFxAco+5IsVZzU= Name: res/drawable/notification_bg_low.xml SHA1-Digest: 2//CmepC2cWfyNKA2qTMrqNQ8Kc= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_34 SHA1-Digest: O3GRzsWEr1+UF6z/veTcYUIikdU= Name: res/drawable-xhdpi-v4/ic_visibility_grey600_24dp.png SHA1-Digest: /jSu43bsM7FYf8VJaW3R8jv/Zu8= Name: res/drawable-xxhdpi-v4/icon_cached.png SHA1-Digest: Z1o2fG8R1cjAjLh2p1kMQkm2hak= Name: res/drawable-xxhdpi-v4/abc_btn_check_to_on_mtrl_000.png SHA1-Digest: qyyA8++tpZMeE5woicJ8hRb+SDY= Name: res/drawable-mdpi-v4/ic_brightness_6_black.png SHA1-Digest: zsvLkyXq+dXOYXZXkUrBRkt5NCA= Name: res/drawable/design_fab_background.xml SHA1-Digest: 2IXtIQ8BMr6/gZ9iOW0d/IwZH6A= Name: res/drawable-xxhdpi-v4/ic_account_box_light.png SHA1-Digest: V8BFS/R93Ol03XXTMz0mU5JZryU= Name: res/drawable-hdpi-v4/ic_delete_black.png SHA1-Digest: bJh8n1jViDW0f3jgxMWC1Q2rHQA= Name: res/layout-sw600dp-v13/three_keys_view_text.xml SHA1-Digest: DVMEFp/Bk6iawn0lWSLRKucfq78= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_66 SHA1-Digest: ZFpoKe4t4pLWyhWH1RNMJcPf+fE= Name: res/animator-v11/upper_pause_to_play_animation.xml SHA1-Digest: 7SpUy2/cGRb7Pfid2amb6pYHwiA= Name: res/drawable-xxhdpi-v4/ic_select_all_white_24dp.png SHA1-Digest: 8pvrUMgikaLGOMW8rQ65pwo3A2E= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_62 SHA1-Digest: Ic1OQ0X5xM4WirGTkp+cG+BXfuU= Name: res/drawable-hdpi-v4/abc_ic_menu_selectall_mtrl_alpha.png SHA1-Digest: CBej+P8bwYybMFQCDCEkHRsc8Sk= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_61 SHA1-Digest: 7c51UKlqpVDI3o2A/s0k4nNgKCA= Name: res/drawable-hdpi-v4/ic_dialpad_white_24dp.png SHA1-Digest: oYtNZ3NSPqaVWzVfYJ60vDte8ug= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_63 SHA1-Digest: a7U/pmtZHFBo5obxPjewjKWkGa8= Name: res/drawable-xhdpi-v4/abc_btn_switch_to_on_mtrl_00012.9.png SHA1-Digest: O6x52IgsWeKV4Xdu5U2H2IxbVgc= Name: res/drawable-mdpi-v4/icon_lock.png SHA1-Digest: g7e66g+Oh4i7GrhKslnYfHt8/tc= Name: res/drawable-hdpi-v4/ic_recurrence_bubble_outline.png SHA1-Digest: coXedWnlopPeR6mVw+fcRrRfPOY= Name: res/layout-v17/abc_alert_dialog_button_bar_material.xml SHA1-Digest: /LFV3VauCOFVr2jNXldDXPvIhwQ= Name: res/drawable-xhdpi-v4/abc_list_selector_disabled_holo_light.9.pn g SHA1-Digest: bwjSzuahpvwVgJavscLUKen/ZqQ= Name: res/layout/abc_action_bar_title_item.xml SHA1-Digest: JePlqdhFAVxMv4b6ytoiCrX6ghM= Name: res/layout/color_preference_items.xml SHA1-Digest: qKDb1gO+Hu23/dgZi/JwhHAQlWc= Name: res/layout/notification_template_part_chronometer.xml SHA1-Digest: dzQtd/RKeHhfMLTfmeJLOxUNfdA= Name: res/drawable-xxhdpi-v4/ic_emoji_nature_normal_light.png SHA1-Digest: 1KoGyd1xjlqfyoipZIQQGvpyKyY= Name: res/layout/zooming_image_view.xml SHA1-Digest: v8hYwtg/deZRi/NqPvzpCqBUaM4= Name: res/animator/upper_play_to_pause_animation.xml SHA1-Digest: 7f8HiUwoTj84cBIvXQhtx6kFMlc= Name: res/drawable-mdpi-v4/ic_volume_off_grey600_18dp.png SHA1-Digest: iGS7mESVFIWuKWvAPvF2zPotpes= Name: res/drawable-hdpi-v4/ic_send_insecure_white_24dp.png SHA1-Digest: 9+5i19e2XcxBJ2xJIfLEkMDY3dQ= Name: res/drawable-xhdpi-v4/ic_photo_camera_dark.png SHA1-Digest: S1YYRIEas6QV9ZuYT5lIwspAza0= Name: res/drawable-mdpi-v4/abc_ab_share_pack_mtrl_alpha.9.png SHA1-Digest: deH5E0yKjBo6CYdnvx70e1ZcVb4= Name: res/drawable-xhdpi-v4/ic_block_white_18dp.png SHA1-Digest: uvN0KqWUheooWW50U/4DZBpqJn4= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_58 SHA1-Digest: LqgBINJBQXrfS7qSEUdO2YKapSc= Name: res/drawable-hdpi-v4/ic_emoji_flags_normal_dark.png SHA1-Digest: AY66CHRZpDIF8mLkrCS9dfohLHc= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_55 SHA1-Digest: aHXhcJ44Nq+1uITpH9udVnAuQjI= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_54 SHA1-Digest: 0pJTmVMR2tNAUtn+uRmLAqWmQnM= Name: res/drawable-xxhdpi-v4/ic_warning_dark.png SHA1-Digest: 84NAvhniTYBghOjjZJa8ekyhqAo= Name: res/drawable-xxhdpi-v4/ic_delivery_delivered_dark.png SHA1-Digest: vBsabKr/2Z/PNGjK64TGLuWPr50= Name: res/drawable-hdpi-v4/ic_brightness_6_black.png SHA1-Digest: utPotC6A3fvHewhtmFhU7Is33wk= Name: res/anim/abc_popup_exit.xml SHA1-Digest: HpgqoyyC+fdyFrYE8t6l+v0+Y4c= Name: res/drawable-hdpi-v4/abc_scrubber_track_mtrl_alpha.9.png SHA1-Digest: dEml7NSraw7t0+4lZ4iFeNS5MxI= Name: res/drawable-xhdpi-v4/abc_switch_track_mtrl_alpha.9.png SHA1-Digest: DnUPb3c/aCYMPIdhLVRqT1eh/J8= Name: res/drawable-xxhdpi-v4/ic_cancel_white_24dp.png SHA1-Digest: UEXAoM6inwKjrBc8YeEghK54aKQ= Name: res/drawable-mdpi-v4/ic_done_all_white_18dp.png SHA1-Digest: XlJDM5+CSYTJBdW7iBfdkb0S8Cw= Name: res/drawable-mdpi-v4/ic_brightness_6_gray.png SHA1-Digest: z1fiTQfnlGYaEzTtQgwudZSeas4= Name: res/drawable-xhdpi-v4/ic_emoji_flags_activated_light.png SHA1-Digest: 4TlxtnLnrRyRWS9ZwCKcvKFtkNY= Name: res/drawable-mdpi-v4/design_ic_visibility_off.png SHA1-Digest: 0WaQYJLtIRBRLvcCp5FssXE3Izo= Name: res/drawable-hdpi-v4/ic_photo_camera_light.png SHA1-Digest: PvngzhGtMP2JKnNVwyBgLk+zboE= Name: res/drawable-hdpi-v4/ic_image_light.png SHA1-Digest: crJiZlW6XjUC0iMXZGBpmuDB2pc= Name: assets/emoji_symbols.png SHA1-Digest: n7FK0HOrvqZV7o1ufIX1wGOrcIg= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_675 SHA1-Digest: yhEc8jlPKXbvDhLFNca0Uc/VhxE= Name: res/drawable-xhdpi-v4/ic_done_all_white_18dp.png SHA1-Digest: eeXVSa6PUMPTyojiB8gOI30kMvc= Name: res/drawable-xhdpi-v4/ic_delete_gray.png SHA1-Digest: SvQxwXgVblHRBe9fS7BnhcdQ6tw= Name: res/drawable-xxhdpi-v4/ic_textsms_grey_32dp.png SHA1-Digest: J0LDzREI8Ublaf5VBwVwdBVynxM= Name: res/drawable-mdpi-v4/ic_lock_white_18dp.png SHA1-Digest: 9qjL2cP9rKXe4FzEjfH29rs68jA= Name: res/drawable-hdpi-v19/switch_thumb_pressed_holo_light.9.png SHA1-Digest: uOrxuPdeG1Hgke4uVegUhdTfRG0= Name: res/drawable-hdpi-v4/ic_emoji_recents_normal_light.png SHA1-Digest: PHQwvfi9AKmY2plUmIgrEgTgJ5w= Name: res/drawable-mdpi-v4/ic_send_secure_white_24dp.png SHA1-Digest: DOjlQyUuAhurwo0Uk3UNk0Qh68M= Name: res/drawable-xxxhdpi-v4/ic_block_grey600_18dp.png SHA1-Digest: sYYGqQ5gDXfoXZOA1PBxXc4iWII= Name: res/drawable-xhdpi-v4/switch_thumb_disabled_holo_light.9.png SHA1-Digest: MYtF9U4u3mtwL6bJwMkzyLB2Ubo= Name: res/drawable-xhdpi-v4/ic_info_outline_white_24dp.png SHA1-Digest: sZNtJLPCCI7ia/PLaXUm9Dar+AI= Name: res/drawable-xhdpi-v4/abc_scrubber_control_off_mtrl_alpha.png SHA1-Digest: Zj1YE4I/aNMmHr4LVwFo4H/yZ5U= Name: res/drawable/design_snackbar_background.xml SHA1-Digest: 8T4TLSdRXRXbJ+StbJBFy8qpjbQ= Name: res/layout-v16/conversation_item_pending_v11.xml SHA1-Digest: RhsSVPab9bHet3xJ91y/5FGeApk= Name: res/drawable-hdpi-v4/ic_create_white_24dp.png SHA1-Digest: QB3FM8a3lWDcakzTeXFZ4D/juUM= Name: res/layout/key_caching_notification.xml SHA1-Digest: oUYU7tYvlAGnAROZzyClW6M/Z5w= Name: res/drawable-xxhdpi-v4/textfield_activated_holo_light.9.png SHA1-Digest: VMleSAHQjnh30LIfWAOzY1IDlbw= Name: res/drawable-xxhdpi-v4/ic_movie_creation_dark.png SHA1-Digest: jGF3U1BDovYM9lN+7ct+VrKxnxs= Name: lib/armeabi/libcurve25519.so SHA1-Digest: c7mgPDTVx0d7ZVWqg7scxKx/6u4= Name: lib/x86/libcurve25519.so SHA1-Digest: EnxNgvXsAP0+4XwonU5rQjozT5U= Name: res/drawable-mdpi-v4/ic_menu_search_holo_light.png SHA1-Digest: z0HRwPObMd21n50Meu7NnoYtfEY= Name: res/drawable-xxhdpi-v4/abc_textfield_search_activated_mtrl_alpha .9.png SHA1-Digest: Ay1qOaJ2aLiCf8NAaujbkp0H1cQ= Name: res/drawable-hdpi-v4/abc_ic_star_black_48dp.png SHA1-Digest: 84VFkBa9KP++pv1aritXYQWuD68= Name: res/drawable-mdpi-v4/abc_text_select_handle_middle_mtrl_dark.png SHA1-Digest: 1EAZ3n1TgfThsvhrnqhd8KcFdQQ= Name: res/anim/abc_fade_in.xml SHA1-Digest: ohPEA4mboaFUu9LZMUwk7FmjbPI= Name: res/drawable-xxhdpi-v4/ic_lock_dark.png SHA1-Digest: vWoogoEKXCva1zQwhs2P8evL3Y0= Name: res/drawable-xxxhdpi-v4/ic_archive_white_24dp.png SHA1-Digest: nUlpgvqiQ8gTITXcyGd9vKR8R2M= Name: res/drawable-hdpi-v4/ic_volume_off_grey600_18dp.png SHA1-Digest: C+a5oEByuM8SSgYeU25/MraUpRM= Name: res/drawable-sw600dp-hdpi-v13/ic_backspace_normal_dark.png SHA1-Digest: chdWLuSp41Ygjhu4NcpXdLWh9sc= Name: res/drawable-xxhdpi-v4/ic_recurrence_bubble_outline_disabled.png SHA1-Digest: KwldDErOBJI8BaxA5Lx0y+g5/U0= Name: res/layout/abc_screen_simple.xml SHA1-Digest: L+lDjRkMzyxbAEO55AhMboq9FFA= Name: res/layout/abc_search_dropdown_item_icons_2line.xml SHA1-Digest: aFhBmo0lBKAVM55W6TMirZfSaOM= Name: res/layout-v17/conversation_title_view.xml SHA1-Digest: /lcEBZpaKIsZUFfHyc1tpm5ueGY= Name: res/layout/conversation_item_sent.xml SHA1-Digest: I3KB8bXRPrBy2mfFyBFvtBHnGMQ= Name: res/drawable/share_list_divider_shape.xml SHA1-Digest: JKSChmT2fc3TH0THPN+Ic8jMJq4= Name: res/drawable-hdpi-v4/abc_text_select_handle_right_mtrl_light.png SHA1-Digest: 15/Lgr8XtZjo4bQQgTlTC4gG2Mw= Name: res/drawable-xhdpi-v4/ic_pause_circle_fill_white_48dp.png SHA1-Digest: 94h57IA/h+ABdExw4oY+jcr1UR0= Name: res/drawable-xxhdpi-v4/design_ic_visibility_off.png SHA1-Digest: 6/g8nk7pRid9D24FOlgafLT3EXk= Name: res/drawable-hdpi-v4/ic_emoji_symbols_activated_dark.png SHA1-Digest: OUgUKsKg5gpj6PSDf1EeZK7ZvBg= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_255 SHA1-Digest: T8Y8UPJDNNY3gi+RvAerX30aAJ4= Name: res/drawable-xxhdpi-v4/abc_list_focused_holo.9.png SHA1-Digest: FsvLP65iWVfEfIkCPXw4wimwY7M= Name: res/drawable-xxhdpi-v4/textfield_disabled_holo_light.9.png SHA1-Digest: IbsyrIi5P4z5+3CcgDwoUkpzMUI= Name: res/drawable-hdpi-v4/ic_menu_barcode.png SHA1-Digest: V1LV2ko7FekGujcSQETjbZKZG8E= Name: res/layout-v21/notification_template_custom_big.xml SHA1-Digest: RZJXVBX9p1L/7vQbjeCBRdqCzZM= Name: res/drawable-xxhdpi-v4/sms_system_import_icon.png SHA1-Digest: X4mRUtd65sev9HuIeU+o1KVCieg= Name: res/color-v23/abc_tint_edittext.xml SHA1-Digest: BBcfe9ziniPVPStDrP3v4C+knKk= Name: res/drawable-xxxhdpi-v4/transfer_controls_background.9.png SHA1-Digest: 4Ou2gycZRud/GAupu9OHpU/2qqE= Name: res/layout/conversation_title_view.xml SHA1-Digest: p8gGaGnktrziXPgC2LsWIVnUruQ= Name: res/drawable-mdpi-v4/ic_emoji_recents_activated_dark.png SHA1-Digest: 9HHpxbJae6/CS4sveioFjGZtnWY= Name: res/drawable-xhdpi-v4/abc_list_pressed_holo_light.9.png SHA1-Digest: 5rSZbdJDOTdM5kJhhIdl8m8briI= Name: res/drawable-mdpi-v4/ic_clear_white_24dp.png SHA1-Digest: dfoLSz8moBfkGsytGq89kj+x18w= Name: res/drawable-xxxhdpi-v4/ic_forum_black_32dp.png SHA1-Digest: JC82uvRHpOuaKQOwol/LEB8u8ik= Name: res/drawable-xxxhdpi-v4/abc_ic_star_half_black_36dp.png SHA1-Digest: QnhqhmaaBESNVdVhbQn1hIhZFYA= Name: res/layout-v17/notification_template_big_media_narrow_custom.xml SHA1-Digest: fXziI3HkMDGRYbhw6t+nLo4mSqo= Name: res/drawable-mdpi-v4/ic_advanced_gray.png SHA1-Digest: 5gnrbk5AthLhEXt3YdcuSwsrJ4s= Name: res/menu/conversation_list_batch.xml SHA1-Digest: IgltNUuFQ8Yx8Fk0/0HdbERA+/w= Name: res/drawable-xhdpi-v4/fab_shadow.png SHA1-Digest: kwb+NfpJkRntsi1qHriUyrhjuwc= Name: res/drawable-hdpi-v4/textfield_disabled_holo_light.9.png SHA1-Digest: P9M5tQrzNeUD6Wa598XwOxFN4hg= Name: res/drawable-hdpi-v4/abc_btn_check_to_on_mtrl_000.png SHA1-Digest: kvy6NVZis2HTuWhGbjSTUHivrS8= Name: res/drawable-hdpi-v4/ic_check_white_24dp.png SHA1-Digest: quY3cxjleDPvMFafdmbJPpD8D3A= Name: res/drawable-xhdpi-v4/ic_volume_off_white_18dp.png SHA1-Digest: JqO+SIz5f5/dzmEA7KCmj0FBDj4= Name: res/drawable-xxhdpi-v4/ic_block_white_18dp.png SHA1-Digest: rrLtIOHjE+jSEj6kxoOcZ2O1U2A= Name: res/drawable-xhdpi-v4/ic_emoji_emoticons_activated_dark.png SHA1-Digest: QJrW1iKOkorI8NMyy5uac4ObL+Q= Name: res/drawable-xhdpi-v4/ic_warning_dark.png SHA1-Digest: 4RzhY8lcSo3SKqcyPt9ntyV16J8= Name: res/drawable-xxxhdpi-v4/ic_unarchive_white_24dp.png SHA1-Digest: lykWjibfTBC/zovVXNmenA9+uys= Name: res/drawable-hdpi-v4/ic_visibility_off_grey600_24dp.png SHA1-Digest: eoKvoESbsfjYq4hRm1CDGIlQho4= Name: res/drawable-v11/emoji_category_recent_dark.xml SHA1-Digest: 0yO+4Tr5fhkHQluSgM5xxlwkAb0= Name: res/drawable-xhdpi-v4/ic_emoji_symbols_normal_dark.png SHA1-Digest: 76fPfhfCu4HVav8hLSmRsYCQgwA= Name: res/layout-v21/conversation_title_view.xml SHA1-Digest: nIAlcpBCsxSi/3fp5Q65GA2qifY= Name: res/drawable-mdpi-v4/ic_content_copy_light.png SHA1-Digest: qqQJESs0EIV1vVXC6f550e7/FCI= Name: res/drawable-xxhdpi-v4/ic_visibility_off_grey600_24dp.png SHA1-Digest: I7RnYghIM1uYNG89Jx0OyjCWWnA= Name: res/drawable-mdpi-v4/abc_ic_menu_selectall_mtrl_alpha.png SHA1-Digest: rWEkIJT/DhekegJTLoLY7vlStb8= Name: res/drawable-hdpi-v4/ic_group_photo.png SHA1-Digest: wokVkjOa08RdAyBaFTS01G6Vjeo= Name: res/menu/conversation_list_empty.xml SHA1-Digest: jYhZY4UeWjDynfYgrxyDfgW5i7c= Name: res/drawable-hdpi-v4/ic_backspace_disabled_dark.png SHA1-Digest: nnubVwr7Sy/Q0WLycs3D4sO5LGE= Name: res/drawable-v11/emoji_category_objects_light.xml SHA1-Digest: iBMvAA5/+zPuG1HSUhaIO4kjoBI= Name: res/drawable-xhdpi-v4/ic_send_sms_insecure_dark.png SHA1-Digest: 65hZGruTDS+kO2Ilh6udEE4Hsvk= Name: ws/com/google/android/mms/pdu/package.html SHA1-Digest: zW3J5ZXNfuDLZKkBuTBJYYW1zpk= Name: res/drawable-xhdpi-v4/ic_emoji_recents_normal_dark.png SHA1-Digest: f15CLkwxERZfMzNTRSFCSMtMMvI= Name: res/drawable-mdpi-v4/notify_panel_notification_icon_bg.png SHA1-Digest: cz2cTpSbxUR34pkCMo3M7a+mSXk= Name: res/drawable-xxhdpi-v4/ic_emoji_emoticons_normal_dark.png SHA1-Digest: sJUQ6MkVAwKpoBNLjQycrSP/miQ= Name: res/drawable-xhdpi-v4/divet_lower_right_light.png SHA1-Digest: ZlxiUipE7U2T0Z+xbqG5Lm/SrvA= Name: res/drawable-xhdpi-v4/ic_recurrence_bubble_disabled.png SHA1-Digest: /uf5Hf8/xPVdDiTbEWAZHk3ePaI= Name: res/drawable-xxhdpi-v4/ic_forum_black_32dp.png SHA1-Digest: 6VPn4QNKWtzR9AMceQXX1KfZnlo= Name: res/drawable-v23/abc_control_background_material.xml SHA1-Digest: qeTahfTuJMcVEUOeqjCyDaNa8uU= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_679 SHA1-Digest: 6/VdOl5YznGBEI9ms/gjN2EAmLM= Name: res/drawable-hdpi-v4/ic_backspace_grey600_24dp.png SHA1-Digest: 9j5TixAtozyqz2GxHu4Q+CybMhA= Name: res/drawable-hdpi-v4/notification_bg_normal_pressed.9.png SHA1-Digest: TZoq5fn2jjj23LAmyukLzy8TVPA= Name: res/layout/time_zone_filter_item.xml SHA1-Digest: 8GhtA8tcunJ4HJU+H5F5gv6PaQE= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_676 SHA1-Digest: 1XvAC59RhdvXt568Lp9q68Lo95M= Name: res/drawable/conversation_list_divider_shape.xml SHA1-Digest: Wz32SpctHXyVcpEtsfCh8vOI5QU= Name: res/drawable-xxxhdpi-v4/abc_btn_check_to_on_mtrl_000.png SHA1-Digest: jniuuw+ps9CtTIC7MeCedJBG1rs= Name: res/layout/select_dialog_singlechoice_material.xml SHA1-Digest: qhKkBqKT2hoMRK2usuQjUCCU5hA= Name: res/layout/conversation_fragment.xml SHA1-Digest: NlDn3tD3Js21YwVeWX3jdjJryHg= Name: res/drawable-xxhdpi-v4/ic_add_white_24dp.png SHA1-Digest: 03jXVNGWPMsGK3Xg3HWpiEtRhzc= Name: res/xml/preferences_app_protection.xml SHA1-Digest: /04M6lZaLCP/MC4yaLzm3ZTXm2g= Name: res/color/abc_primary_text_material_light.xml SHA1-Digest: ggJcJQnCkCLHvTmVDR7b7H8fPPk= Name: res/drawable-hdpi-v4/ic_circle_fill_white_48dp.png SHA1-Digest: +7XseN+JhezFYkkaQ6oRB5Ov5PM= Name: res/drawable-xhdpi-v4/ic_visibility_white_24dp.png SHA1-Digest: BIVvglNqIXn7Q5OjqW5+wUSfiEM= Name: res/drawable-v21/conversation_list_item_read_background_dark.xml SHA1-Digest: hcx2wJmCBLgC9qTvdtq5xWJA1UA= Name: res/drawable-xhdpi-v4/transfer_controls_background.9.png SHA1-Digest: 8DAsQxUNQf9+eMV1afbdEo/rFik= Name: res/drawable-v11/emoji_category_places_dark.xml SHA1-Digest: cQtDGjtc28B+LSswR0p8fsxe4MA= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_ZA SHA1-Digest: O/3iDLWPPvW2HI1gEX7lRiOIRco= Name: res/drawable-xxhdpi-v4/ic_error_red_24dp.png SHA1-Digest: xWMRRZlbSsjgAbHJZNRmvWrw+44= Name: res/drawable-mdpi-v4/switch_thumb_holo_light_v2.9.png SHA1-Digest: 7aafjURul6zc7RhhsHx7QCLPozc= Name: res/drawable-xxhdpi-v4/ic_emoji_objects_normal_light.png SHA1-Digest: 0RCvcHCYcO+99fHXT0n+nqryk00= Name: res/drawable-hdpi-v11/icon_cached.png SHA1-Digest: ag2zVjSIyL3kLU9QVj0s7SbWNNo= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_YE SHA1-Digest: uTpmi/ET3QJvZyW1bX1KTGol+c8= Name: res/drawable-hdpi-v4/spinner_disabled_holo_light.9.png SHA1-Digest: MGzyk0nLOAXBSKZz0u82JCFSpS8= Name: res/drawable-xhdpi-v4/ic_emoji_nature_normal_light.png SHA1-Digest: 6AUNAyK5WVkf8o/aoXqgRhFUYuM= Name: res/drawable-mdpi-v4/abc_list_selector_disabled_holo_dark.9.png SHA1-Digest: +bjkZfnp7jH8HvA5wzYQ85O04Ic= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_ZW SHA1-Digest: P+mZTYQAfq5OKUqLR5WHleClnxI= Name: res/drawable/abc_switch_thumb_material.xml SHA1-Digest: sujPDGksEdg29cR87ymiy/LIS08= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_800 SHA1-Digest: Q+v2QtFpRmcNgV/ghp33lLyeLIY= Name: res/drawable-xxxhdpi-v4/abc_btn_switch_to_on_mtrl_00012.9.png SHA1-Digest: eQ8hrqPRD0qhhaJWghhXuxRIxBA= Name: res/drawable-hdpi-v4/ic_emoji_recents_activated_light.png SHA1-Digest: boHWHgmHYtW3tdcX4PjGYrHGqjQ= Name: res/drawable/psts_background_tab.xml SHA1-Digest: vOj1M+G3LYJopTV3rVV2ec0Pz7A= Name: res/layout-v16/transport_selection_list_item.xml SHA1-Digest: C+Xa1oepxsEmQ+/BrYjp6zA1THk= Name: res/drawable-xxhdpi-v4/actionbar_icon_holo_dark.png SHA1-Digest: SBNfDOIoGi7vrQ81c1aC8nNoTXI= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_808 SHA1-Digest: LR5DzJ+FtlDUO7u4/hR2FS3DAv0= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_ZM SHA1-Digest: fo3+ic1IYN/khzc8yHNMPsXcYVc= Name: res/layout/support_simple_spinner_dropdown_item.xml SHA1-Digest: SzOzDLQ2fKoah8SIlmI92JurR+g= Name: org/spongycastle/x509/CertPathReviewerMessages_de.properties SHA1-Digest: 5WleEyCLesz39ayL3AH9lOktT8k= Name: res/drawable-xxhdpi-v4/ic_emoji_emoticons_activated_dark.png SHA1-Digest: p+ssPoFtPIXsYWDXXVbkL9WWpAU= Name: res/drawable-hdpi-v4/icon_dialog.png SHA1-Digest: 8dZkVmxxSs1WycNGs/t5UCk4WQk= Name: res/drawable-xhdpi-v4/ic_account_box_light.png SHA1-Digest: xaixNvIFNKRQlbn8rUGqt1IJJzk= Name: res/drawable-mdpi-v4/ic_message_white.png SHA1-Digest: ZSTTg4aXgzA9uh//DTGBNWrxHu0= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_WS SHA1-Digest: WEt+4epzNo4d8ROnBGfRpvsLQHA= Name: res/menu/conversation_context.xml SHA1-Digest: AaGrOcRy8OqLuFMB0Ecc1nET/LY= Name: res/color-v11/abc_hint_foreground_material_dark.xml SHA1-Digest: iAs9P3JrooTyCSdiERlRSPflh7A= Name: res/drawable-xxhdpi-v4/ic_audio_dark.png SHA1-Digest: F1wOc1YlSlBMbaB3zSjZN44wyYk= Name: res/drawable-xxhdpi-v4/switch_bg_holo_light.9.png SHA1-Digest: FgKH/FinWMkRgm9Fn4PzClBvwZM= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_WF SHA1-Digest: KiLYxnJzp+EeAhl5k+uMqNG6DRs= Name: res/drawable-hdpi-v4/ic_video_light.png SHA1-Digest: jxTLhK8yR3OeqUxxJ8LsnApV0cY= Name: res/drawable-hdpi-v4/icon_cached.png SHA1-Digest: XkOZtQyk5wSpIySmc226NFqlRR8= Name: res/drawable-hdpi-v4/spinner_default_holo_light.9.png SHA1-Digest: /GXGxE5W4VqGLNi5sm4OsXq19RM= Name: res/drawable-hdpi-v4/ic_warning_dark.png SHA1-Digest: z4qMFoNq7AKIJHQmoN85DgOzKfE= Name: res/drawable-hdpi-v4/ic_unlocked_white_24dp.png SHA1-Digest: HClEuF7VisWvnoTUktxxSSQhaPo= Name: res/drawable-xxxhdpi-v4/ic_dialpad_white_24dp.png SHA1-Digest: QNe5Y7PSFHDxqSF/kcdXdYen/jY= Name: res/drawable-xxhdpi-v19/switch_thumb_pressed_holo_light.9.png SHA1-Digest: c+lEvuW/Yx/kDPuWk7ZqybxGgAA= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_VI SHA1-Digest: 1LjKCQQJgyuMAMO1iYig3jWtPSs= Name: res/drawable-xhdpi-v4/ic_block_grey600_18dp.png SHA1-Digest: 5mqVsrUSSLrWE4LWBwReJDduvCE= Name: res/drawable-xxhdpi-v4/ic_emoji_nature_activated_light.png SHA1-Digest: YfP1tgpbi+G7epjImNMhiByBkhE= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_VG SHA1-Digest: +vAhsOiiHugHwBSbJI4edUWsDr0= Name: res/drawable-hdpi-v4/abc_list_selector_disabled_holo_dark.9.png SHA1-Digest: h7hNXJrcbvKMv9bbGrTrvd0dOgs= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_VU SHA1-Digest: 2l35bRpp9XiNPbbb+0pHyvOO21Y= Name: assets/emoji_nature.png SHA1-Digest: UzSuz2fUlzCNe6CCmT2tNzzmzVs= Name: res/layout/expiration_picker_dialog.xml SHA1-Digest: cSNAbfN6bagC7X6qIr5kE0j17nM= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_VN SHA1-Digest: GrWHYUO3Cev7KpuTRQB5z8HW1f4= Name: res/drawable-hdpi-v4/ic_info_outline_white_24dp.png SHA1-Digest: pM6XYFrBDZyJGDCo7FzObXJ4Fy8= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_UZ SHA1-Digest: NkYYZfkGo/K8LO99CQgOlCszblk= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_UY SHA1-Digest: ONUgqpO4eHKCbc4I9lt0hnXcTZ0= Name: res/drawable-mdpi-v4/ic_emoji_recents_activated_light.png SHA1-Digest: oB3akohAY54ZwWkalbMRsXtYJ+U= Name: res/drawable-mdpi-v4/ic_select_all_white_24dp.png SHA1-Digest: 7ivqkSaxLcomol/I2K5TOieuxZU= Name: res/drawable-xhdpi-v4/ic_recurrence_bubble_outline.png SHA1-Digest: 6nGJjRcbSAQJ+oBqTB9ru86djWM= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_VC SHA1-Digest: OXIzY/KjvYdZT/LXQBAoqp7pamY= Name: res/drawable/abc_edit_text_material.xml SHA1-Digest: Kcap9wHIg3pDdpEtot8/QDSYxXI= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_VE SHA1-Digest: oG66iy9xkV2aj1MY/szR3pj8zE0= Name: res/drawable-mdpi-v4/ic_visibility_off_white_24dp.png SHA1-Digest: bR7uL9bUTt+rLUgg+5lpRftVxgA= Name: res/layout/abc_action_bar_view_list_nav_layout.xml SHA1-Digest: KWG1Bk0+gHtAKZtYRzqAkVrkAmA= Name: res/drawable-xxxhdpi-v4/abc_switch_track_mtrl_alpha.9.png SHA1-Digest: NdBd5wlMLy/yNmcs71lpwiAvUZ8= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_VA SHA1-Digest: gvuxOs/muxRZu5a4PRHrPdz7+Wk= Name: res/drawable-mdpi-v4/ic_emoji_nature_normal_light.png SHA1-Digest: ChFdBSWimcTj6jLaIGmNhUjaek4= Name: res/drawable-xhdpi-v4/divet_lower_right_dark.png SHA1-Digest: 5vtzSsOWxrOZPIbZK7ymPuLRTrI= Name: res/drawable-hdpi-v4/ic_video_dark.png SHA1-Digest: kaJwgqosYawCWKdXN6jELspjBmQ= Name: res/layout-v17/select_dialog_singlechoice_material.xml SHA1-Digest: BjU8OwKuERrbzVtBQKEjPAd4R+c= Name: res/drawable-hdpi-v4/ic_emoji_flags_activated_dark.png SHA1-Digest: gIY9sjCgyZyEH3Q+xIqsz4CoLwg= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_UG SHA1-Digest: ammP0D/tLcrgu7hqA70yejT+V0Y= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_US SHA1-Digest: 0jE/PFzhpjHEgp+Pmo0sBinBYSg= Name: res/drawable-xhdpi-v4/ic_brightness_6_black.png SHA1-Digest: zpe/yLQkStMLoIK4EePIruR3x5U= Name: res/drawable-xhdpi-v4/abc_scrubber_control_to_pressed_mtrl_000.p ng SHA1-Digest: MCXQ3UO/ZjROJv+Q9oQkLeDNszE= Name: res/color/abc_tint_btn_checkable.xml SHA1-Digest: 8u8Tkxy9mJwO/fhpdihKSt6YMxs= Name: res/drawable/share_list_divider_shape_dark.xml SHA1-Digest: MrLZ34H0lbSocNuprow3bYuFs34= Name: res/drawable-hdpi-v4/notification_bg_normal.9.png SHA1-Digest: e39HWYSRdaO+/NhxvCOzRk3gTPg= Name: res/drawable-mdpi-v4/ic_textsms_grey_32dp.png SHA1-Digest: GutqMf3V/mo5rCoh6b/6RKJOatE= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_US SHA1-Digest: Co+5n+uLZ3R2GbAfhiLsCy3lXnc= Name: res/drawable-hdpi-v4/ic_arrow_forward_light.png SHA1-Digest: F7mFOvujVqkYNv9201+kMLbpnjY= Name: res/drawable/abc_btn_default_mtrl_shape.xml SHA1-Digest: si9J2ga8fSgrnHUBNteE65S6TvA= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_UY SHA1-Digest: OHJSVIjgb3PkN3QctmplPc8uJ9w= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_UZ SHA1-Digest: 0s3VgLWiElGLZPndvLU2QydhMxI= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_UA SHA1-Digest: mCqgyKIiKl2VZcjZsBnWTjipBEc= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_TV SHA1-Digest: 2nS3XZ4w3DR065o1M/M/JsUM7ok= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_TW SHA1-Digest: GVxJianmDusEC/HGf+VGoksOHP0= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_TT SHA1-Digest: OX+mha4+0Q+/ayJpV68aaht5DJ0= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_TZ SHA1-Digest: T30rgRQOY5w9wvhUTHpOSdju6Yg= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_VC SHA1-Digest: 0FQA2XuDN5Xp9xp2ulaenWGj0Fk= Name: res/layout/verify_identity_activity.xml SHA1-Digest: 4DkQ6qCV5V+d0tpZ8oMUdT2OS0Y= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_VA SHA1-Digest: i9QWJCLFZdmNZlXnq4Sc3iWpfho= Name: res/drawable-xxhdpi-v4/ic_visibility_grey600_24dp.png SHA1-Digest: ElbVxbxM8SCqTcTX9GZlAwmdzyY= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_VG SHA1-Digest: jMJ1+TYrOk+FIDOyezSCgEBBlAA= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_TO SHA1-Digest: 8C2NrVJjiJ2VIe6e2SG9HRbUpeY= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_TN SHA1-Digest: FED4CTFMsRktTSDFVozGKFfgHC8= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_TM SHA1-Digest: wRKs89xVZ3eszAjOGyW6biIB59k= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_VE SHA1-Digest: YRMBRAOz+UrjXKnZn89Vv2xzlOg= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_TL SHA1-Digest: 02qXcniA01s8q0mCsBvCAV66nBo= Name: res/drawable-hdpi-v4/ic_menu_lock_dark.png SHA1-Digest: OLS0Y7LkHAjTgKke4t+ssbaqi1I= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_TR SHA1-Digest: It6YpUXvKTZrvmvKnlrtkaH94lQ= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_VI SHA1-Digest: REBe+ajxqSZL9NxThXUUem3jnhg= Name: res/drawable-sw600dp-mdpi-v13/ic_backspace_normal_dark.png SHA1-Digest: yOibY2yAUSDo2MVgX9+sZmBY1nQ= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_TG SHA1-Digest: OOqLD1pizqDxzLCgvpj7hP/B3Ls= Name: res/anim/abc_slide_in_bottom.xml SHA1-Digest: ZliTihZ+8kHBA4SfvPIPI00Y7uE= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_VN SHA1-Digest: BGrGk+xkmzXMOUHG2ROAbBMZ6Yc= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_TD SHA1-Digest: fXGWbLcwO2uUDV3/v65+7z+ydSI= Name: res/drawable-hdpi-v4/check_dark.png SHA1-Digest: OF10knMqMePug2wsSUoTZ6zZPuQ= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_TJ SHA1-Digest: sVzKUygsCtLduYavdSUOyP+Jafw= Name: res/drawable/abc_textfield_search_material.xml SHA1-Digest: stH8NpmjaXc5dKXq4DDXvkOo1rI= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_TH SHA1-Digest: to5ZNkVbbaTn9dWFGsdYNwYZUsk= Name: res/drawable-xxhdpi-v4/ic_lock_light.png SHA1-Digest: zf4j7GjJkOaQL/LXahXOCd8Qcto= Name: res/drawable-mdpi-v4/ic_search_holo_light.png SHA1-Digest: IwmnK2HQagqd/ZKXegQEzdknk+Q= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_VU SHA1-Digest: idsA4gg5WlN5iTnrErnMvnumtyI= Name: res/drawable-v21/abc_ratingbar_material.xml SHA1-Digest: rf6f8HRUlLAVKAAEFPxwQP5tJB4= Name: res/drawable-mdpi-v4/textfield_activated_holo_light.9.png SHA1-Digest: CSfVZiTZ8M4gHRjhPdVvKlLuXxE= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_TC SHA1-Digest: h+VNblfdfvL08K4jtRyzB1SniKE= Name: res/layout/alert_view.xml SHA1-Digest: gHWVI8pn6LJxYjY/B5qPNjEDAK0= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_ST SHA1-Digest: Fh2rqEApU4sgPD+1dLHzfQW0Jlo= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SV SHA1-Digest: NW7eQYaa6OCN5JxFIIcMXiUCkfg= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SX SHA1-Digest: qPJl1K9ZBaGHWAbdxiA1XFP1nhQ= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SY SHA1-Digest: pxJxXcMSf7F47SEwPXqXfT7Of9g= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SZ SHA1-Digest: HXFHOSrj8KkBc9h+CUe97BcSQL8= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SL SHA1-Digest: P/qdv4quNvaRviFdLBcbuaqT7H0= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_WF SHA1-Digest: YH2qvLQxCEFNdK3scMbqJ1rLPPE= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SK SHA1-Digest: sfxakNdqV0E1+2FJQAaJVY7qBaM= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SN SHA1-Digest: S1dW2CSdGrAqy9X2PaSCEadYfV4= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SM SHA1-Digest: 9LpXm9Hhi0DHNDXZxoZmtMiZXZo= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SO SHA1-Digest: kgpJUydtRlnt+/5S1EKn6EGM5jU= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SR SHA1-Digest: CgemZGqbkZ1IkPlJdSZuOB5vs4k= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SD SHA1-Digest: FMCY1LyqhOjb1Ji7UBJiSFhW9b8= Name: res/drawable-xhdpi-v4/ic_backspace_normal_dark.png SHA1-Digest: AGrzhqB0uojxu55l0U6P3vce3So= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SC SHA1-Digest: 4A+CKfsEVbCeov+6aFk2zY9twcY= Name: res/drawable-xhdpi-v4/ic_check_dark_disabled.png SHA1-Digest: c9TvWCMataZvt30VdBp4tsgJl0A= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SE SHA1-Digest: uafcIzQdY3gb3eq5lMhvKBc4krw= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SH SHA1-Digest: qwfHH84D0ixUkP6FbEog8mNRe50= Name: res/layout/log_submit_activity.xml SHA1-Digest: mFxIQHJrxfWuKHCZZYnmdr10TFg= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SG SHA1-Digest: dqZElj+XoAesFoVwrH5/RGTNpfM= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SJ SHA1-Digest: Dy5q310EumwWHG7yi/9247XEwlA= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_WS SHA1-Digest: mkxRWWtguUpaF6vYRb6vVK8FhaM= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SI SHA1-Digest: XZCXpndTs5uKYlFqYZNUWvJ/9V4= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SA SHA1-Digest: dSNaPvwq9X3O12zoD0La+ED1U5U= Name: res/drawable-mdpi-v4/ic_emoji_symbols_activated_dark.png SHA1-Digest: gi9eHLJ2IcuCuAP5FyZvLT0e9Yc= Name: res/drawable/notify_panel_notification_icon_bg_tile.xml SHA1-Digest: 728zuKsXYlpvrBKue1cT2+FVRU8= Name: res/layout-v11/conversation_activity.xml SHA1-Digest: a4IfYX1vcDiV/pqSYJahTFTCJeo= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SB SHA1-Digest: +Hu3Krmmlzl4N3wTcxEY9rvo0Po= Name: res/drawable-hdpi-v4/actionbar_icon_holo_dark.png SHA1-Digest: 3LtRBykdTucmKV3dkReQtHb+vlY= Name: res/drawable-mdpi-v4/abc_btn_switch_to_on_mtrl_00012.9.png SHA1-Digest: wTxntWArKB7sDc4M27U+PpjZhyU= Name: res/drawable-xxhdpi-v4/ic_emoji_emoticons_activated_light.png SHA1-Digest: 3Iw4yaQ6kcuNfC0TE9JRZ3iqC6w= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_RW SHA1-Digest: 9v2nu80N7tOJxq51ZS9SUMzXyy0= Name: res/drawable-ldrtl-mdpi-v17/abc_ic_menu_copy_mtrl_am_alpha.png SHA1-Digest: 1dQmPH4BF7Otx7V4njYiASwi5/k= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_RU SHA1-Digest: KLS5yyTbZVBMs07/kzbMl9FDcy0= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_RS SHA1-Digest: Gp5fY4V+3mepr0fZAycPZAv5kI4= Name: res/drawable-hdpi-v4/ic_recurrence_bubble_outline_disabled.png SHA1-Digest: NTDdpWYLs7t9Osus1VojraeDZrU= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_RO SHA1-Digest: 7pkIrynGenMlOimp1uNOzx4a9ME= Name: res/drawable-hdpi-v4/ic_send_push.png SHA1-Digest: fgtuvJ9AGUtDw5cbcZIfQilMQb4= Name: res/drawable-ldrtl-xxhdpi-v17/abc_ic_menu_copy_mtrl_am_alpha.png SHA1-Digest: PqzD1Bva41x/4FJI5xe2uDeGmiE= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_RE SHA1-Digest: 8BDvFUhSb3GswgQiUCYWtWx3CEU= Name: res/drawable/abc_seekbar_tick_mark_material.xml SHA1-Digest: DuFih8Np+ruXlGXOIY3g382yoTU= Name: res/drawable-hdpi-v4/ic_textsms_grey_32dp.png SHA1-Digest: iwBnh2xlTCgXXMytlUgYStjLpmU= Name: res/drawable-xxhdpi-v4/ic_emoji_flags_activated_light.png SHA1-Digest: 7HAHnpuwQT+utT89EKz2N/g7t3c= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_870 SHA1-Digest: wrVTblBRAtogCy0iVfpXEH6KlBQ= Name: res/drawable-xhdpi-v4/ic_info_outline_dark.png SHA1-Digest: /S7xBBhg1FIWb4g4lwlhLdCerxE= Name: res/drawable-xxhdpi-v4/ic_unarchive_white_24dp.png SHA1-Digest: 76V7Hze7OYOCHtxTFbFp6y2qvCw= Name: res/drawable-v11/emoji_category_places_light.xml SHA1-Digest: 0oWB2rwfMOzZwePPI6yYOKPyde8= Name: res/drawable-hdpi-v4/ic_mood_grey600_24dp.png SHA1-Digest: yyAr/jsi2L76IozhIsSVcPJ/gVo= Name: res/drawable-xxxhdpi-v4/ic_textsms_black_32dp.png SHA1-Digest: 1LjX+QtnTvVgfcv5Rj7Vu66qJbk= Name: res/drawable-xxxhdpi-v4/design_ic_visibility_off.png SHA1-Digest: zSrspL1HfRffZw4aQdBEi0VyTH8= Name: res/layout/share_fragment.xml SHA1-Digest: tSSIU/XwofYsCDc/RBo+PvGxjPA= Name: res/drawable-xxhdpi-v4/abc_list_longpressed_holo.9.png SHA1-Digest: VJa6PrhxyIRS2huzDuIN1KH+I2c= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_YE SHA1-Digest: iWn4VA5oTnB/1SJio1WmtTzxIVA= Name: res/drawable/abc_ratingbar_indicator_material.xml SHA1-Digest: jSCetwmEsQWxASeYyjO7YhmGUG0= Name: res/drawable-hdpi-v4/ic_keyboard_white_24dp.png SHA1-Digest: gm7lHGB1QYwGm36NdoEeWP40kYI= Name: res/drawable-hdpi-v4/textfield_disabled_focused_holo_light.9.png SHA1-Digest: GAqpkknnxMFqolFn7Q0O1q26ziE= Name: res/drawable-xxhdpi-v4/ic_emoji_places_activated_dark.png SHA1-Digest: kBQvXnVBBQAXrqJsZnOaqMHK60M= Name: res/layout-v13/message_details_header.xml SHA1-Digest: naq0XxW2Md+akCHCs+/SOYtFnQI= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_YT SHA1-Digest: ogcQkkoCGMY8nCyJK4aMLc8rhgk= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_878 SHA1-Digest: ru2D0tMTr43HNk9n8YNkwk5hGmc= Name: res/drawable-xhdpi-v4/abc_text_select_handle_right_mtrl_light.pn g SHA1-Digest: 9Xk7OPEfyHSOAHCD7Mwan5cJXnA= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_QA SHA1-Digest: slbTHMPLw/mmyQ2E0xEPrlrO4/4= Name: res/drawable-xxhdpi-v4/textfield_focused_holo_light.9.png SHA1-Digest: yTySMaFvSlprEgpEyEgjuVbWIFM= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_PA SHA1-Digest: fCZKN8Ehp845RUn/9sjnTx4rhxw= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_883 SHA1-Digest: X2TcGpqy0IDrFCgWXalvi/FxY4w= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_882 SHA1-Digest: 3fDO2V9ovqhY9kDKG5wczXGwaks= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_PE SHA1-Digest: tvR2SBCPV/svYtRXJcjnaVOw4Qs= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_888 SHA1-Digest: +nKjS9d1/WYwuDLO7dQS2W5u25Y= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_PF SHA1-Digest: /tlLAeslldW1EMfh0/r0nmtik2o= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_RO SHA1-Digest: s9CR+P7gvF4BQHm2xZ6+Q8n+nTY= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_PG SHA1-Digest: PqaHYtXnRREfBVJdJtQGthBM6Mk= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_PH SHA1-Digest: //vvt5FSIATQwkpUj8jsLjb4k5Q= Name: res/drawable-xhdpi-v4/icon_lock.png SHA1-Digest: x9v02bq0ywac6jle/lMC9N2f8xQ= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_PK SHA1-Digest: 6PpXjrxYrpwZm86B4lrad9K0Tjk= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_PL SHA1-Digest: 9C3SaoX/Y6RhlzaZ3vZUrlZYvao= Name: res/drawable-xhdpi-v4/abc_ic_star_black_16dp.png SHA1-Digest: GT/QfWDQh959gQPTphPPRr+uGOA= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_RE SHA1-Digest: lN4hO/zfjPGWlxlXPt1nQG4QJZ0= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_PM SHA1-Digest: CwesdCPcB4nCSn+T+YSoOMSlyME= Name: res/drawable-mdpi-v4/switch_bg_disabled_holo_light.9.png SHA1-Digest: BhD8bo9CPDyMD8yAOdeT+l8P5Jk= Name: res/drawable-hdpi-v4/abc_scrubber_control_to_pressed_mtrl_000.pn g SHA1-Digest: WqxwEUexvYh0cT/zvmtdxmv8z34= Name: res/drawable-mdpi-v4/transfer_controls_background.9.png SHA1-Digest: Lvtopp/2tRzPP+kXqYiM9od0lTc= Name: res/layout/abc_expanded_menu_layout.xml SHA1-Digest: +K8i1UxIGMVynpvxcjq1tU6AL8s= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_PR SHA1-Digest: ff7WU4GqkjoPRUAuysmgqkwvTfA= Name: res/layout/conversation_activity.xml SHA1-Digest: VAyoHr5vzJv9wm/D6nJ/RgnQVM8= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_PT SHA1-Digest: 0yfhznPNvG4b4UITlM9tJsOwIys= Name: res/drawable-mdpi-v4/abc_cab_background_top_mtrl_alpha.9.png SHA1-Digest: 6eRtpYyE2B45gWd2aZtCG4kO5FM= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_PW SHA1-Digest: czrqNkXCl59UCFT6eIBMD5X4yB8= Name: res/drawable-hdpi-v4/abc_list_focused_holo.9.png SHA1-Digest: zND8CPcT8wBLOji5D5ZGNvi5kR8= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_PY SHA1-Digest: HBYBVp4jk/ST4eBs8jk7XDqpUoM= Name: res/layout/emoji_grid_layout.xml SHA1-Digest: NnZDJdnyddzo7hWV77sEuQm1Enk= Name: res/drawable-xxxhdpi-v4/abc_btn_radio_to_on_mtrl_015.png SHA1-Digest: rG5iJ8LJqs0d2oExcr38IP+z/7s= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_881 SHA1-Digest: adrqPFT39BGEc9L6ihSloFCvqrU= Name: res/layout/abc_alert_dialog_button_bar_material.xml SHA1-Digest: U7wENYGNxvfAavK6fN4rpU8GLgI= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SK SHA1-Digest: OpWPnEd6/Jmlmpv8WaU3DT4LItA= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SL SHA1-Digest: xRAKr0QrWNRv0tF/LfsWZ2Hq/sM= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SI SHA1-Digest: GVkOdITub41bNG8Fig/9vPSNo2k= Name: res/drawable-hdpi-v4/divet_lower_right_light.png SHA1-Digest: hcKGWDmNLo452sGyK4oSdDMB/+E= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SJ SHA1-Digest: Qh2tQvrXM3wEadaOQ7twcRlMF74= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SO SHA1-Digest: Yz0C8pi4T1L56Nlm3TVwaGLjyQc= Name: res/layout/abc_dialog_title_material.xml SHA1-Digest: jS6bbgBynF3zebyNioiwNxGkv7Y= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SM SHA1-Digest: Sy0eWRdE16v7G2ETphVPHohO/Dc= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SN SHA1-Digest: T9THj+HSTo2G8LZHVtDZy2ZH6OU= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SC SHA1-Digest: 69OaYaEUAquIxWPBTMT96D3mFgs= Name: res/drawable-xxhdpi-v4/ic_backspace_grey600_24dp.png SHA1-Digest: uwFPcHYZCGXqW5sIGeYIEnS0wa4= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SD SHA1-Digest: sPYOURylxFZznupFTubdXbaMb2o= Name: res/drawable-mdpi-v4/ic_unlocked_white_24dp.png SHA1-Digest: Pw8CS4BIJ+QJuZGGUxyPnuuWaxg= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SA SHA1-Digest: RvkQygRBDVcw1a7hjEYX88hwfMA= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SB SHA1-Digest: ahGNI4eO1DCgd1DUDdain8akS5A= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_OM SHA1-Digest: Qqh5G0srcW9p2rsj7xSDXf2geNc= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SG SHA1-Digest: AAObEaJer/GPWCRYsABtWl6JbnM= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SH SHA1-Digest: d4MFXmziQLRwnIOBDrApxGXs6p0= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SE SHA1-Digest: whEALd1LVuwaUn4et+r9hlsMiEM= Name: res/menu/conversation_send_drafts.xml SHA1-Digest: wiaYJJqiQjiNcqPbv6uNj6hnVJo= Name: res/drawable-hdpi-v4/ic_attach_grey600_24dp.png SHA1-Digest: nazUEJrIvYZ9UJHATYmPIOkBU6E= Name: res/drawable-xhdpi-v4/ic_emoji_people_normal_light.png SHA1-Digest: AaSPvsfgBVFXQjc/6zd5sSaehQ4= Name: res/drawable/emoji_category_flags_dark.xml SHA1-Digest: AgeTyeBmCPuLJuPBxfjtUWAnQjY= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_RS SHA1-Digest: fceCOonAoNK2vZg1X3HFpazjNwQ= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_RW SHA1-Digest: diwT4/eaFAC0RrngvvaAorhEyRk= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_RU SHA1-Digest: SjLiYb5elyZp4CxuG/jPZiGkAvU= Name: res/drawable-ldrtl-hdpi-v17/abc_ic_menu_cut_mtrl_alpha.png SHA1-Digest: StjC3BA1LtHVLp7GTDic4k0PU08= Name: res/drawable-xxhdpi-v4/abc_scrubber_control_off_mtrl_alpha.png SHA1-Digest: CzvvFFc7BaWc8x/Y+tvpZvFkY9w= Name: res/drawable-hdpi-v4/ic_app_protection_gray.png SHA1-Digest: U6eZmhJFhi6M4ifbdNv4p2+q+m4= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TN SHA1-Digest: sRM3isN8XNXBUejDL/3XVmi7CP0= Name: res/drawable-hdpi-v4/ic_emoji_symbols_normal_light.png SHA1-Digest: DcAYFKgBBakJIAriXXOZQ/swcoI= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NC SHA1-Digest: 3Ha+QOSOso/ZuUnEndSttTCui2I= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TO SHA1-Digest: dE14YSWn1Q82IuAx7bz59IzeUJE= Name: res/drawable-xhdpi-v4/ic_advanced_black.png SHA1-Digest: uKoepOzDCewgO7hPUSxctUNm9a0= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NE SHA1-Digest: tszF9OIdzcNjcSHbzXrfTPqwfd0= Name: res/layout/time_picker_dialog.xml SHA1-Digest: oPJIQ5mohdAVRZl2D0jhDmbx1ns= Name: res/drawable-xxhdpi-v4/abc_textfield_activated_mtrl_alpha.9.png SHA1-Digest: TLfjxp5bknlrmh6zJTSYD2AfmTo= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TJ SHA1-Digest: YnI7JHZGkgVea6QH+ndC7RXc5t8= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TK SHA1-Digest: Depjsuzhk7mtPoM47CDzUSt6AHE= Name: res/drawable-xhdpi-v4/spinner_disabled_holo_light.9.png SHA1-Digest: 90BefocA3jktdxbeMYf9CMCWV3w= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TL SHA1-Digest: E1XJpx2P54sMuwGSGIjqbyqPB9s= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TM SHA1-Digest: +Rt8RtJkczgUqGlsGrhLJCqOfYg= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NA SHA1-Digest: 9G6kvgsYzJojWoiCuKs4LFfCQbA= Name: res/drawable-ldrtl-xxxhdpi-v17/abc_ic_menu_cut_mtrl_alpha.png SHA1-Digest: RlASjFlsAOIfgzOVaMJeKCTDJ3o= Name: res/drawable-hdpi-v4/spinner_focused_holo_light.9.png SHA1-Digest: 9+5viI+b67liCPiPkELWte9HLXc= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TG SHA1-Digest: xoRihj6KFFTCZEu2DwjE9wkwjCU= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TH SHA1-Digest: 4Y+fNQiUYoj/adZKdK6FuT4WFKw= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NL SHA1-Digest: L481Tp19PmS40cOvmGOKjpiEZVs= Name: res/layout-v17/abc_dialog_title_material.xml SHA1-Digest: iO2ZwhbDlmITcxVKw57R4GTbcW8= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NF SHA1-Digest: IdRiuvAntLUe8r8EQiIk2dtb7bo= Name: res/drawable-xhdpi-v4/ic_group_white_24dp.png SHA1-Digest: v+akTbrOyt63fqnB2m8icaXOQ9A= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NG SHA1-Digest: 2nRUBrCNwLf9EEuCsttbqsVYO5Y= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TC SHA1-Digest: GxO1H9LUjukADYAq3al7uBln2WQ= Name: res/drawable-mdpi-v4/ic_backspace_disabled_light.png SHA1-Digest: 8UicXzhNTwHx9Z6gKpFQy8Nq+pQ= Name: res/drawable-xhdpi-v4/notify_panel_notification_icon_bg.png SHA1-Digest: cuJ+cwlm5QO6frAFAjbS9w6zhJ4= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TD SHA1-Digest: l+JUZji7wvWwRHePO5f6TBqB3Hk= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NI SHA1-Digest: rKpi204I76lvISSARcMzH0LUASI= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NR SHA1-Digest: tmbcQ1088LZxiFMYWOqzJ7JECIE= Name: res/drawable-hdpi-v4/ic_volume_up_light.png SHA1-Digest: AmrZQKKPy5VxiBOPfjNXb/eoMiw= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NU SHA1-Digest: Krbxcr6/EQRZATYij5QxbMA0M00= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TA SHA1-Digest: zxdsRgGax6ubk8hnD3UU1Ruk808= Name: res/drawable-hdpi-v4/ic_send_sms_insecure.png SHA1-Digest: ZRQWrB//EkYHtK8Cif4HEouXWeI= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SZ SHA1-Digest: y7fpRnOAUa5FZ2J07+kj+xlYZtk= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NO SHA1-Digest: YduDYCJDzKt3jB1F5FzjA8CRfPE= Name: res/drawable-xhdpi-v4/ic_emoji_people_activated_light.png SHA1-Digest: ySVeYNO7XxKPjLiwanuv5kUKnKM= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SY SHA1-Digest: 51xhmb8BiQjfjHf6fUfxEy6ARiA= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NP SHA1-Digest: 0eDpSvIShOUr9yJLkxJBQ3zhJrk= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SV SHA1-Digest: APTfTay2dBhczPvWxHVungEgdsI= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NZ SHA1-Digest: cqczT+ATmJlNQNnCYDCwcK7Bz6A= Name: res/drawable-hdpi-v4/ic_lock_white_18dp.png SHA1-Digest: SadMiv0GE5LgIJr778HH3KfimtI= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SX SHA1-Digest: u6hdteFIcfA4Qh6VU1ZTlOmM8Gc= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SR SHA1-Digest: QRN9HaIk98/GKlRjpnAs35W3AAY= Name: res/drawable/unread_widget_icon.xml SHA1-Digest: iJJBohPJXzhBScSRFgh6D9b+hpI= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_ST SHA1-Digest: 2R6NCIAJ8vXbvobZaNkGyw4Fwlk= Name: res/animator-v11/scale_with_alpha.xml SHA1-Digest: VL4imnI1LOFLVsR92Vrab3fF2tE= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SS SHA1-Digest: qDHuPDISr9FHIMONMSIrxIlL0xQ= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MC SHA1-Digest: hGXW2RGjkZnTJzSXIYWADTf7Q7E= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MD SHA1-Digest: xPoHwRDHL6SrjfKT6+g3sNDP1L8= Name: res/layout-v16/contact_selection_list_item.xml SHA1-Digest: gaxyPsb4J5av/qTTgQvisFr9004= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MA SHA1-Digest: sP8aiUoFfUnDvMa4cZ+KjOpWvJY= Name: res/color/abc_primary_text_disable_only_material_light.xml SHA1-Digest: ha0iBG12VF3cEliu/mL5oLsMBCg= Name: res/drawable-xxhdpi-v4/ic_done_all_white_18dp.png SHA1-Digest: WYGP92FJ9q+BZE8E04vg3vwsD6Q= Name: res/color/abc_hint_foreground_material_dark.xml SHA1-Digest: bwmaFbphxna9+xPcugTHZO8XbEY= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MK SHA1-Digest: TgHeYY6bKAkWQ84KO/nME5j9nvk= Name: res/drawable-v11/psts_background_tab.xml SHA1-Digest: JywLhgDxib9atxdXInt/S2REuBU= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_ML SHA1-Digest: +YIOrG20mY4pRKZoLogFQUq6H0k= Name: res/drawable-xxhdpi-v4/ic_clear_white_24dp.png SHA1-Digest: 3fWIHkcMQ9WUZtG2f/nvgPZi7Vc= Name: res/drawable-xxhdpi-v4/ic_emoji_people_activated_dark.png SHA1-Digest: cuvXxnmfuV3zSYU+7+D4Of1zOnY= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_UG SHA1-Digest: HDRbGR4PZPk+mCDGl2fLERJfNR8= Name: res/drawable-xhdpi-v4/abc_text_select_handle_left_mtrl_dark.png SHA1-Digest: n1RWb4t/Atpj+FOtAslnzwcFcuM= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MG SHA1-Digest: 9xXZ4pv619b38rhecTjCvpGsRgY= Name: res/drawable-mdpi-v4/ic_emoji_flags_activated_dark.png SHA1-Digest: 0MDts2HilwKeFl9r2d+WrnJLkSY= Name: res/drawable-mdpi-v4/ic_emoji_emoticons_normal_dark.png SHA1-Digest: WzpU4P6ZqqN18ywBS5qllHIenMA= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MH SHA1-Digest: ksr60vxlNQ+S2vGB4wQjQ035rzk= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_ME SHA1-Digest: C9XunjvBRg674eV5hJicqisH1dA= Name: res/drawable-xhdpi-v4/ic_recurrence_bubble_fill.png SHA1-Digest: gsvxIo7mxvWa3lLcSOklKG4lNLw= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MF SHA1-Digest: yHAVCZYdYpFSGFHYZKmru+Lz1Vg= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MT SHA1-Digest: ZzGfRKQsOkLMM4rNVZQNdlkhKUw= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MS SHA1-Digest: 53kFgC2lWvkg0RQdoSOeZDHGWqI= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_UA SHA1-Digest: pS3fmypW2sTisbd+dNqclx/Hhsk= Name: res/drawable-mdpi-v4/ic_group_grey600_24dp.png SHA1-Digest: NT/pB/ZWCdlgfDjNs1M7YixRR9g= Name: res/drawable-xhdpi-v4/ic_save_white_24dp.png SHA1-Digest: 62+3ju3WbD3do5qYlPVUCFA4ehY= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MR SHA1-Digest: BzTGjjro6Xd4KK/3Nd9HDm6Uy9g= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MQ SHA1-Digest: WV7Wb4F0J6tSNdwwkzDdM6iowqw= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MP SHA1-Digest: 8JJXIP2nBNzz7H5t4EVdX6K6h58= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MO SHA1-Digest: 7ygX4YP5g568rrukemALUJsQWQ4= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MN SHA1-Digest: 2OQsgx6XE9s+gZaHd5es6PyizR0= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TZ SHA1-Digest: yb7+qWRrTQ3WMTbdNSafeUjKvSE= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MM SHA1-Digest: CgbvC0cEQfEags/cuKxFG+4qQ7I= Name: res/drawable-xxhdpi-v4/ic_play_circle_fill_white_48dp.png SHA1-Digest: zT/J3NHuQMBOslX9Rlc7oUkxZC0= Name: res/drawable-xxhdpi-v4/ic_launch_white_24dp.png SHA1-Digest: S3hKxaIQGJZXm85iAx5LXVvztZo= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MZ SHA1-Digest: JaxxJGL+HEM7oBQ1R88V+uJhSS0= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TW SHA1-Digest: NfD+3Fztm7C3XxQbq2pBOGqKeJ4= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TV SHA1-Digest: Ris17D+/QUvHhHkNr4mTv2xEAGU= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MY SHA1-Digest: A61ZRtmC1TVH1R/EQS/6YoBFKLI= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MX SHA1-Digest: BcP7PPzqBoh8HeIjfnNqKtg8DcM= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MW SHA1-Digest: eFP6Uqji/vptrfcrmraniTYNVdU= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TT SHA1-Digest: TyGqulSnIfD7kWr7GUtD5bTD1H0= Name: res/drawable-hdpi-v4/ic_emoji_places_normal_dark.png SHA1-Digest: 92ovqQTOA4J0s8cuOIbED129tcA= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MV SHA1-Digest: ugqf4ZviM65EcJuzO/E8sIeATLk= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TR SHA1-Digest: 72/i0hSlhQT+73c2QiQD7/gVc8k= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MU SHA1-Digest: NyvG1+2xAYXpmxUrZaoP7/4ynOo= Name: res/drawable-xxhdpi-v4/ic_message_white.png SHA1-Digest: nFyuhA9Xrpw2K5ndU20hX2trY0w= Name: res/drawable-xxhdpi-v4/abc_text_select_handle_middle_mtrl_dark.p ng SHA1-Digest: PSeedHvDkZY2LIfg9EBkZrlW8W8= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_LI SHA1-Digest: 5c5oQUtfCEAEPDk6dFi8DWOMBwQ= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_NA SHA1-Digest: v6Uz30xFp7jzUIOs4lQhcDOmzII= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_NC SHA1-Digest: dFhp4MlENpx/8otef5KGD9JQIw8= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_LK SHA1-Digest: xZy3jJkV+z/SLJKkqwCNKOtsPAI= Name: res/drawable-xxxhdpi-v4/abc_ic_menu_selectall_mtrl_alpha.png SHA1-Digest: Vhfvv1y0wkBw2X/iXEqs7JGlm+o= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_NE SHA1-Digest: U7FuPCtu97pxXgaLy4jZP/8OL4g= Name: res/drawable-mdpi-v4/check.png SHA1-Digest: avkwoshYVlbnHtetx9GPvFN8ZqE= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_NG SHA1-Digest: MgajsYmpKYwMV53K9bTUweEND8s= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_NF SHA1-Digest: uqOstg+ldbNhMjzpHuh0izKK+jc= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_NI SHA1-Digest: gTqxDh/MRul6/h8LYqEZPtshll8= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_LA SHA1-Digest: py3X9u/lE6xMR6fi8lzV86sO1hM= Name: res/drawable-xxhdpi-v4/ic_recurrence_bubble_disabled.png SHA1-Digest: V5oZHMEOJ7E3o/CODskCp3rKJYw= Name: res/drawable-mdpi-v4/abc_ic_star_half_black_16dp.png SHA1-Digest: FHMsjUZwrKpDGM7XpRyQGuhOHMs= Name: res/drawable-xhdpi-v4/ic_emoji_places_normal_light.png SHA1-Digest: kA4yyxqYzjB7kHrP66hy/awfdUQ= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_LC SHA1-Digest: 00HknFCmZjohOMWi6P6q1g1nDfs= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_LB SHA1-Digest: K1FxC84R/q8VHjnvJmF8YpJuWhQ= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MK SHA1-Digest: 2NXj053RfuUBxSIFat1D5IYDyjk= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_LT SHA1-Digest: fb/ckx5EjSMVyJ4Bdr7L762q5Hs= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_ML SHA1-Digest: TmBs7z4K7qZfn3YuuMPnlQo9Wrk= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_LU SHA1-Digest: ob0QLVUzjPJBuULFaESbiAvv4H0= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MM SHA1-Digest: fU2WheWE8sFw3uoYuP70+TNfyOQ= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_LV SHA1-Digest: otR531NPPcrIotMjlVeaYW+GOZU= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MN SHA1-Digest: /gvOpSnmCSfZXF1CLm98DWyru8E= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MO SHA1-Digest: aQSCgNvOHl4+xuMdKH41mYE8ryg= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_LY SHA1-Digest: /By5pIbDyT8f6wuNJjPX+TySrpI= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MP SHA1-Digest: osX2XD0hfucZvxJH1g5j6P2+1FU= Name: res/drawable-mdpi-v4/ic_add_white_24dp.png SHA1-Digest: pT3SpNkEzuNyoBwc5Wr6Ur9ZMpk= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MQ SHA1-Digest: uRO4iP2NyZsAxClqG5n7A6fBGc4= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MR SHA1-Digest: 22eFX78st0eT0IR308l3k7Ixdc0= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MS SHA1-Digest: m15+ICDC8TN6qGgyxI9fGIq1r0Q= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MT SHA1-Digest: II8edaEOsL/kdVLxs1neIm2RZrU= Name: res/drawable-xhdpi-v4/ic_app_protection_black.png SHA1-Digest: 7pSYUGzZYGidYb/M0JtUFkeusog= Name: res/drawable-xxhdpi-v4/ic_emoji_objects_normal_dark.png SHA1-Digest: 4C4L1wrESZ3UVMCMyGXEByUQv8A= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MU SHA1-Digest: 4hPw5iNm8AAa9K8Smv66ARGBrVw= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MV SHA1-Digest: z2uEx8PGk1pYjANMIWvmiWzn9Pg= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MW SHA1-Digest: GJDPn4E5DbpCYuQruKsoe+52ZRQ= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MX SHA1-Digest: 4lhjsOHVa5BQpdDNiFpsm1nG+OI= Name: res/drawable-mdpi-v4/ic_account_box_dark.png SHA1-Digest: 7YhW8AZtzBWHE9ZeieJvih7NR50= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MY SHA1-Digest: wVg7EA8+tRlJz87G5FU/Tc2Mbag= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_LR SHA1-Digest: osiKYK17TsMEMpxwUSdWIH0VNtc= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_LS SHA1-Digest: w64d6l2qMRu/hc1FezgCU60XUaY= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MZ SHA1-Digest: rKcRh8hcFnOXhYfgSvawBWQxcSQ= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_27 SHA1-Digest: nEYbSuXRF/uctKuasoKct6HqEFw= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_KE SHA1-Digest: 7Eb+9olO5an4TwFHi55sQfOqZsY= Name: res/drawable-xhdpi-v4/ic_volume_up_dark.png SHA1-Digest: mfULAXM3aV46dhmKC0I1/BVFjY8= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_KI SHA1-Digest: VgndwACstWBLpIyzd00I3DsAgzY= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_KH SHA1-Digest: WwDjEfSaYYvxvjzp9kuZw0wKTz8= Name: res/drawable-xhdpi-v4/ic_volume_off_grey600_18dp.png SHA1-Digest: I47X7flSnPoPB8eb42nJUP1aPgo= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_KG SHA1-Digest: jSk/TwIasSlFmnZhTWrCWwmOPmU= Name: res/drawable/error_round.xml SHA1-Digest: /dc/CUQ2SFAXgoplWG74eEB36w0= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_NO SHA1-Digest: XIwuQ06+W3t7V0wUlyRBNu/1DyA= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_NL SHA1-Digest: +/Y4Of7cCkZTB8fn4MrZSKPN7go= Name: res/drawable-xhdpi-v4/abc_ic_commit_search_api_mtrl_alpha.png SHA1-Digest: pBR99OG39RSH5mvInfhWhS5HH80= Name: res/drawable-xxxhdpi-v4/ic_pause_circle_fill_white_48dp.png SHA1-Digest: xN33rFibRxouC9pfWIRBsJ/nDcg= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_NR SHA1-Digest: SiNwROtI47UYTzWL8hqcJ11u8Dw= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_KY SHA1-Digest: jWCt/+g+/sNLdENqqAtaUlvbqmY= Name: res/drawable-xxhdpi-v4/switch_thumb_activated_holo_light.9.png SHA1-Digest: FZ0jvocMQHbBY6GfdO1/lyn4CAI= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_KZ SHA1-Digest: DxmO0yjUvvuXGC4nK8NuAZrOW4w= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_NP SHA1-Digest: 2g5uGte/BTNum9b1mAxNElqDCpE= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_KW SHA1-Digest: cEw4Jm39ArCO3iOm52+C9sLdDZM= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_KM SHA1-Digest: riY4/v0MIgCE8l9iMpTLN8m5tOs= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_KN SHA1-Digest: 3O4gZzoMqkKgHs7s1u3KCL+PR+8= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_NU SHA1-Digest: gTUt0Nzsr87sGj6sgNtddpWwhAw= Name: res/layout/conversation_item_header.xml SHA1-Digest: OV9Q3kbpbDwb2wxp4ZtsdOgxUSI= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_NZ SHA1-Digest: D1QjtPWapV8sDGRu8jlTmbg9CiY= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_KR SHA1-Digest: kKTdqSpVpt4zAI7ytiAadhPJ8Iw= Name: res/drawable-mdpi-v4/abc_list_pressed_holo_light.9.png SHA1-Digest: tbKOWkoq8X/O9SqZLE2Z7VwIrfw= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_KP SHA1-Digest: 58tT5gudlbJRzpqqFyua7jkMGjw= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_PE SHA1-Digest: 2/wViBuGamXrqaTPx4xhDh/kR6s= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_PA SHA1-Digest: xkDyNu/va2uiNSGtY+SbV/uUvKQ= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_JE SHA1-Digest: pdeQRQM5r+R2TwhSD3dAlw9Ii6w= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_PK SHA1-Digest: 3K58UkbBgfsBn+w1WYyrLGg1Vs4= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_PM SHA1-Digest: 1eKd1jGumli5KScCSRe7W8FtzPg= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_PL SHA1-Digest: ZZRfZwKbj5nBaRSEyzDy4oVNL3Y= Name: res/drawable-xxhdpi-v4/ic_brightness_6_black.png SHA1-Digest: hT3Q5aI6chKgjr3u96CzIytR26Q= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_PG SHA1-Digest: O/wvabhcicXGnHyFO5zY9nBEMzw= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_PF SHA1-Digest: wFTU4LaoIUUeY8deZsANu+eyMB8= Name: res/drawable-xxhdpi-v4/ic_menu_search_holo_dark.png SHA1-Digest: qf7PAA/agfGHmWMb/SvP5kBKVko= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_PH SHA1-Digest: 781vcW1KyIN83oPhMi587TC/tmk= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_OM SHA1-Digest: iPQ/4sahDPUNj7CLb4X+eEMNY2s= Name: res/drawable-mdpi-v4/ic_circle_fill_white_48dp.png SHA1-Digest: V/bvSL+GAYkgI4E2eJefZNA6EMM= Name: res/layout/abc_action_mode_bar.xml SHA1-Digest: 8cOoh4SHfS1Uld3Y198MHRMf1p0= Name: res/drawable-xxhdpi-v4/ic_brightness_6_gray.png SHA1-Digest: tHdz55QDyJozOXlcobBxkQ8hYLI= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_JO SHA1-Digest: KTnuJeszCYuiahu4zflNUDJa9yg= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_JP SHA1-Digest: QpQOc4vADA1q7EahWr87MV5uWDg= Name: res/anim/abc_fade_out.xml SHA1-Digest: MTJWZc22b5LNeBboqBhxcQh5xHQ= Name: res/layout-v16/reminder_header.xml SHA1-Digest: +w3ZpcGYIF5kKzcLuC/LKEO3/MI= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_JM SHA1-Digest: OTB7tR826TJrULJiPuDXwX36dZc= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_IE SHA1-Digest: mcKFsH0GatsbmdTjQdRh0jztICI= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_ID SHA1-Digest: BkBerSKlrQMQY3/KH5RNV+n5huU= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_QA SHA1-Digest: WICjeFr27fN7anVdxio0RVkYeGg= Name: res/drawable-xhdpi-v4/abc_list_pressed_holo_dark.9.png SHA1-Digest: WYYEXP9zXPHmkO70T8BA20aSj+U= Name: res/color/date_picker_year_selector.xml SHA1-Digest: 7HDV3N/ftFQRROQYt5WCO9Is5Jw= Name: res/drawable-xhdpi-v19/switch_thumb_pressed_holo_light.9.png SHA1-Digest: 58f1EtXQ3wizMEJeTAgSgdZA5uA= Name: res/drawable-hdpi-v4/textfield_default_holo_light.9.png SHA1-Digest: fuY+WIlRJ8vgPwAzkl65YeJKVPo= Name: res/drawable-hdpi-v4/abc_list_selector_disabled_holo_light.9.png SHA1-Digest: BLQq1kPx0/JPxPxgp/MrxD6Ft1Q= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_PT SHA1-Digest: FTSRD+8krf2I/fe/q8jN/pky5RM= Name: res/drawable-mdpi-v4/ic_arrow_forward_dark.png SHA1-Digest: UtdFAKXRarbKVaIUUO5i/4PmAUY= Name: res/drawable-xhdpi-v4/ic_movie_creation_light.png SHA1-Digest: 8qN3jMnnkv7nQG2Nt9i6hF8XknQ= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_PR SHA1-Digest: W7pvgFF3VzVSM9IGog1S1WZP4mw= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_PS SHA1-Digest: IGHtSws25qiaMxsqlBXqtxSsvMA= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_IS SHA1-Digest: JvYMu8OKrL9lcqfrYDV9I4ltcFs= Name: res/animator-v11/upper_play_to_pause_animation.xml SHA1-Digest: vpzxwaaL5PRRSeJChzUUaEwd3iQ= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_IT SHA1-Digest: CatC4fTYOKpgZJbH2mM3f/nSBU0= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_IQ SHA1-Digest: VFc4xI5nUj1n8/U6qztKBLpJp48= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_IR SHA1-Digest: 6nXRpbNbAuqDvlBHdtG30O0CRG4= Name: res/drawable-hdpi-v4/ic_send_sms_insecure_dark.png SHA1-Digest: GDJMSStAh7EYNszWCaxubbfHoWk= Name: res/drawable-xxhdpi-v4/icon.png SHA1-Digest: 0sRkUHHzVMQ90JPNC0VwdWFolPI= Name: res/layout/led_pattern_dialog.xml SHA1-Digest: tswBD0QJriEDClR9AywmEXzI4nQ= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_IM SHA1-Digest: TaW3gRKjop4Pi5G+R3Dk6vm0V+U= Name: res/drawable-xhdpi-v4/ic_save_all_white_24dp.png SHA1-Digest: Gx+5fK2ckaZdBfgGtgchP2Ohl4M= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_IN SHA1-Digest: BYe7nV7/sNQ9Pohqd3g8yQY2qgU= Name: res/drawable-mdpi-v4/abc_ic_commit_search_api_mtrl_alpha.png SHA1-Digest: j4YCzt0aE3XiVuR90dIkNXUHnHE= Name: res/layout-v16/fragment_submit_log.xml SHA1-Digest: PWVivlzjiCq6ovVB2zlarg82dyQ= Name: res/drawable-mdpi-v4/switch_thumb_activated_holo_light.9.png SHA1-Digest: bnXBtaKF7a29jCEvIOWErkhFvv4= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_PY SHA1-Digest: 0YjHGDh9jac/0gpxStTX8wtMr78= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_IL SHA1-Digest: noPCK0eckpRYQhQWHyZztIoLLvo= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_PW SHA1-Digest: phVp2GMskybPur1giJmEDXf4+mk= Name: res/drawable-xhdpi-v4/ic_info_outline_light.png SHA1-Digest: 6a9eNZD07GQajIG06leuESyJ/Ck= Name: res/drawable-xxhdpi-v4/spinner_default_holo_light.9.png SHA1-Digest: Q96rsORloNyw2WFYTUl9VA/zlUc= Name: res/drawable-hdpi-v4/list_selected_holo_light.9.png SHA1-Digest: 8+a6kSVhZ1n87KOe3NWXssOoSRY= Name: res/drawable/emoji_category_nature_light.xml SHA1-Digest: RzDuk6h6UEkqappk7hYx6pgKeCs= Name: res/layout/expiration_picker_view.xml SHA1-Digest: ken0b/R8av4QZrSzp1tlprkgdog= Name: res/color/abc_tint_seek_thumb.xml SHA1-Digest: wCFz+npXjWt6jSRAejKK29canhU= Name: res/drawable-mdpi-v4/ic_backspace_grey600_24dp.png SHA1-Digest: gUiX8RH5wH4fZj1wG+l03S3ZlOc= Name: res/drawable-hdpi-v4/abc_switch_track_mtrl_alpha.9.png SHA1-Digest: +BAInzzGimhbNKEsUcg4H+12pT0= Name: res/drawable-mdpi-v4/ic_emoji_symbols_normal_dark.png SHA1-Digest: tljO68WW5/+x0yJR9GWMpSppcoc= Name: res/anim/design_fab_in.xml SHA1-Digest: 88HYAVsN9aX1xNbLpWMveab3t7w= Name: res/drawable-mdpi-v4/ic_group_white_24dp.png SHA1-Digest: zLcWCyxyVrdWkFDGj8/ZlLWVwUc= Name: res/layout-v11/notification_media_cancel_action.xml SHA1-Digest: FOKQ0fSwhQySQM6fclToJK+8huE= Name: res/layout/abc_select_dialog_material.xml SHA1-Digest: R48Z4M6YIfsfL/+YdwRm1HaHYU8= Name: res/drawable-hdpi-v4/ic_photo_camera_dark.png SHA1-Digest: wbyQ2OL70KZRwipbMxfW86M9cqA= Name: res/color/recurrence_bubble_text_color.xml SHA1-Digest: m+qPsVs0ZrAZd+YF4dsuJraUJy4= Name: res/drawable-hdpi-v4/ic_emoji_nature_activated_light.png SHA1-Digest: 76iZVIwm+2dITVc13qDTowynlgE= Name: res/drawable-hdpi-v4/textfield_activated_holo_light.9.png SHA1-Digest: bLHdUYUynLqsA32+N3F3BJ4EBHQ= Name: res/drawable-xhdpi-v4/switch_bg_holo_light.9.png SHA1-Digest: c+JwYiQCZPeynR8o/HjhfKjOc5g= Name: res/drawable-mdpi-v4/ic_lock_light.png SHA1-Digest: wbLs3mArn7d1bmp55eoiuIsD9uc= Name: assets/emoji_objects.png SHA1-Digest: EJCaAiWW33tUKJXv05D8xPp76zg= Name: res/drawable-xxhdpi-v4/abc_btn_radio_to_on_mtrl_000.png SHA1-Digest: 53DYKltMU34zhaYZHtlNZkme+Co= Name: res/layout/prompt_apn_activity.xml SHA1-Digest: PSJ0tS+8D/+87BKr2ZmQlJvwOoY= Name: res/drawable-hdpi-v4/ic_backspace_normal_dark.png SHA1-Digest: J8qgDWuh2640WfVZ8mD4dTE+oH8= Name: res/drawable-hdpi-v4/ic_emoji_objects_normal_light.png SHA1-Digest: BWs4UA8bueEb3x1ZmUnbACZAn5k= Name: res/drawable-ldrtl-xxhdpi-v17/abc_ic_menu_cut_mtrl_alpha.png SHA1-Digest: 6bGD4jGKEnE3B0EkCpW5Emm9up8= Name: res/drawable-sw600dp-hdpi-v13/ic_backspace_disabled_light.png SHA1-Digest: 1xOse/knAUkmdSJRE7Gm2BWULK4= Name: assets/databases/apns.db SHA1-Digest: bg0zKqxv61OZoXbea65pDG9cXQA= Name: res/drawable-mdpi-v4/ic_photo_camera_light.png SHA1-Digest: eML/v5Eu4g3ks/r8WhFGLPooEnk= Name: res/layout/abc_search_view.xml SHA1-Digest: WWRqmfw7obFK3n7n8Ekl14zUCQ4= Name: res/drawable-hdpi-v4/ic_mood_white_24dp.png SHA1-Digest: dESTHN33RlDCjHon6Kf+jlE1F0c= Name: res/drawable-xhdpi-v4/ic_dialpad_white_24dp.png SHA1-Digest: Oh4t33wvgPLVjp/NgDXxHwmovIo= Name: res/drawable/blocked_indicator_background.xml SHA1-Digest: qucbHTNZYboQObVToh9BCpVzgKc= Name: res/drawable/emoji_category_people_dark.xml SHA1-Digest: L8yyopzaoxR0l4b5y3XQlPcwFGU= Name: res/menu/media_overview.xml SHA1-Digest: grIZlxlp22/PsVq3047Q+M5M+8M= Name: res/drawable/list_selector_background_transition_holo_light.xml SHA1-Digest: 36TGchgA+ugMLzqfO+wPp3RPDTE= Name: res/drawable-xxhdpi-v4/check.png SHA1-Digest: jUcinrMdcOv+FeVYA9vv/xaXxKA= Name: res/drawable-xxxhdpi-v4/ic_done_all_white_18dp.png SHA1-Digest: sgI8NP8L5ChzE3bcd23XivS4RiI= Name: res/layout/import_export_activity.xml SHA1-Digest: QrAeBaxysnjPdSsDza4Dk9mY72w= Name: res/drawable-mdpi-v4/ic_send_insecure_white_24dp.png SHA1-Digest: TxuIHLBVnnWehzVdeGsxh9kPSPs= Name: res/drawable-mdpi-v4/ic_launch_white_24dp.png SHA1-Digest: 3SGP5nUEOjd+H8x09S0Q/mpe51c= Name: res/drawable-xhdpi-v4/abc_ic_menu_copy_mtrl_am_alpha.png SHA1-Digest: LHNDVgsME9Yj4JPg5CLyVd0Eld4= Name: res/drawable-xhdpi-v4/abc_popup_background_mtrl_mult.9.png SHA1-Digest: rkfYN21U5rNNgOOcXyHtDvlAuDE= Name: res/drawable-xhdpi-v4/ic_textsms_grey_32dp.png SHA1-Digest: /fWA+opeZhwsYgI19Ktiy9Te0Cg= Name: res/layout/keyboard_text.xml SHA1-Digest: kTgoLBL3RvY7DUrytit4SJ/vNH0= Name: res/drawable-mdpi-v4/ic_forum_grey_32dp.png SHA1-Digest: bZmFrMHRVPaYNDiszshXCN+e26k= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_7 SHA1-Digest: ++F/BtCrUwz7P52Agrem1zBo7MI= Name: res/layout-v17/conversation_fragment.xml SHA1-Digest: hUD2cxgYhFE4EC6kkjKssmXtITg= Name: res/drawable/recurrence_bubble_fill.xml SHA1-Digest: hY1/dq5DoGqB5nB5bzt/+w0aZyU= Name: res/color/date_picker_selector.xml SHA1-Digest: jP08qV5xeDoCPMazM+vaHEgiNsI= Name: res/drawable-xhdpi-v4/ic_unlocked_white_24dp.png SHA1-Digest: qik7+MvynFEnE85vFo7abDFksWY= Name: res/drawable-xxhdpi-v4/switch_thumb_holo_light_v2.9.png SHA1-Digest: U/4Z3gd25jwQChkbsD5VnRLBt4I= Name: res/drawable-xhdpi-v4/textfield_activated_holo_light.9.png SHA1-Digest: If3Wai5q4G/7HwWXms7HMa+ezus= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_350 SHA1-Digest: 1dsh1jmlpctbk3mLLs20rDvMeHw= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_352 SHA1-Digest: wG8Amf2IUehX/g5l0F2/BDWC8XM= Name: res/drawable-xhdpi-v4/ic_mood_grey600_24dp.png SHA1-Digest: F9axoAJFCcB9w59XB74IOFQf5pk= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_351 SHA1-Digest: Mms7D5naQaHUlKhoBn+xBnme4nc= Name: res/drawable-xxhdpi-v4/ic_emoji_places_normal_light.png SHA1-Digest: IhAGTP1mcBfaaxqhff8dvaHPfBA= Name: res/layout/conversation_list_item_action.xml SHA1-Digest: daYMlc9s7/cMUHhdCnx2cD09hyk= Name: res/drawable-xhdpi-v4/abc_text_select_handle_right_mtrl_dark.png SHA1-Digest: e5xqNys69NyvQS8VE/Kly997E88= Name: res/layout/abc_list_menu_item_icon.xml SHA1-Digest: dYFR+O7lTgJC28aXyfVTftOMwDM= Name: res/drawable-hdpi-v4/sms_selection_icon.png SHA1-Digest: l56HHr5n4oBQUmb/lPX166v9h6s= Name: res/drawable-ldrtl-xhdpi-v17/ic_send_white_24dp.png SHA1-Digest: FJqvMGpZ+kYijHSTH4NUm5WLcK8= Name: res/drawable-hdpi-v4/ic_group_grey600_24dp.png SHA1-Digest: U9+6tpgExRqQgcJbv4ViVKDi4U8= Name: res/drawable-xxxhdpi-v4/abc_scrubber_control_to_pressed_mtrl_000 .png SHA1-Digest: VW4JPwMwHw0CzAlOEqerGs/L5mk= Name: res/layout/calendar_date_picker_done_button.xml SHA1-Digest: Ml84ZNS7dAwwhGV+Zjg8U5T0xwg= Name: res/animator-v11/bottom_play_to_pause_animation.xml SHA1-Digest: KjERMZ7qyZ9ZxIR+ZWsV0a+EASA= Name: res/drawable/ic_check_dark.xml SHA1-Digest: kzu80h7wvQqqqewEavCQ/lVgDGc= Name: res/drawable-hdpi-v4/abc_text_select_handle_right_mtrl_dark.png SHA1-Digest: GN5clQjLYHfNj0bF9YP+ewaJstM= Name: res/menu/log_submit.xml SHA1-Digest: IIBD+uio+9ejz7nuBNfS4Ezk38A= Name: res/menu/local_identity.xml SHA1-Digest: 1Igdxj3Es0r2GRwRynPPb8aRm1c= Name: res/drawable-mdpi-v4/abc_switch_track_mtrl_alpha.9.png SHA1-Digest: Goj79xYi41d5Ug2oovkSjYvLbAI= Name: res/layout/notification_action.xml SHA1-Digest: MCcUfGwh0zhVoDOGdKkwzOOaqsE= Name: res/drawable-xhdpi-v4/ic_badge_24dp.png SHA1-Digest: Tfz8+fJWe82EAe380KhmRoQTH2A= Name: res/drawable-mdpi-v4/ic_emoji_nature_activated_dark.png SHA1-Digest: PxSSUiNH5BEinHzkqqlOmKZtXNw= Name: res/drawable/abc_tab_indicator_material.xml SHA1-Digest: V5veQwsCSGKsSBtGwB7BwIrrJ60= Name: res/drawable-hdpi-v4/ic_visibility_off_white_24dp.png SHA1-Digest: tnIaP+YN1dmNBPvKkSvfab/zHcA= Name: res/drawable-xxhdpi-v4/abc_ic_star_half_black_16dp.png SHA1-Digest: nw6+x+wmtucgkuXTdFCndlFazP4= Name: res/drawable-xxhdpi-v4/ic_menu_lock_dark.png SHA1-Digest: PEehXVb+1FiSNRhfemMMdfIHCmE= Name: res/drawable-hdpi-v4/ic_message_black.png SHA1-Digest: 9olkHBpQePze7UF4D89/MzfUZgg= Name: res/drawable-mdpi-v4/ic_send_sms_insecure_dark.png SHA1-Digest: 8C0HRt8QBOlAtUs0AncturKJswA= Name: res/drawable-xhdpi-v4/sms_system_import_icon.png SHA1-Digest: /lk35fCQRfDoJENySR3K7xJI8Kw= Name: res/drawable-mdpi-v4/ic_backspace_disabled_dark.png SHA1-Digest: 8UicXzhNTwHx9Z6gKpFQy8Nq+pQ= Name: res/color/text_color_secondary_dark_theme.xml SHA1-Digest: 2zbnbYOg6F9G58wfP1T5Q6MwdjI= Name: res/drawable-xxhdpi-v4/ic_lock_white_18dp.png SHA1-Digest: 6bUAVeqsigwcdBuAJg2dYp7OazA= Name: res/drawable-mdpi-v4/abc_text_select_handle_right_mtrl_dark.png SHA1-Digest: T7V6hKiMczkLkUlKXFHH2u21kKk= Name: res/layout/conversation_list_item_view.xml SHA1-Digest: 3VfyPkj8uWV2HoQiXx925UVCMt0= Name: META-INF/fdroidserverid SHA1-Digest: PFAoK3vAw7CF29BtzhTdrgabIU8= Name: res/drawable-xhdpi-v4/ic_group_grey600_24dp.png SHA1-Digest: sIzL5sw6bxV7HQIwylPrh+ASMPQ= Name: res/drawable-mdpi-v4/list_selected_holo_light.9.png SHA1-Digest: w5jMjyx0n/lk3stiPGrcn7tdZT8= Name: res/drawable-xhdpi-v4/ic_refresh_white_24dp.png SHA1-Digest: 3d7TIrGejbmbXYCCR0kiPE3trQQ= Name: res/layout/recurrencepicker.xml SHA1-Digest: jYVg/v1x2v2k6GmliiB7aM3R5hA= Name: res/layout/radial_time_header_label.xml SHA1-Digest: cAfMyqMdkLB5b0WtSjoDKDQDR8U= Name: res/drawable-v11/notification_bg_low.xml SHA1-Digest: noAsyGBDHDbAwoxMmtFFogehgFM= Name: res/drawable-xxhdpi-v4/ic_group_grey600_24dp.png SHA1-Digest: gtMIy0EuLn065qk2JYPIzVtEYs8= Name: res/drawable-mdpi-v4/ic_emoji_emoticons_activated_dark.png SHA1-Digest: zgvg/rmsY3NPoHn7SKkEL/vK/uc= Name: res/drawable-mdpi-v4/icon.png SHA1-Digest: 8dZkVmxxSs1WycNGs/t5UCk4WQk= Name: res/drawable-xxhdpi-v4/ic_missing_thumbnail_picture.png SHA1-Digest: 8Z3J3yRXgM7avwVxV616Z64GKEw= Name: res/layout-v17/notification_action_tombstone.xml SHA1-Digest: chGkI32GuGZuzpKxpJHM32oPvTo= Name: res/drawable-mdpi-v4/ic_done_white_18dp.png SHA1-Digest: /pqJedk+4F0QhMNq7QpU4sFpem0= Name: res/drawable-xhdpi-v4/abc_ic_menu_selectall_mtrl_alpha.png SHA1-Digest: c4WhrXmf1QDquO48zO95xrhdWlo= Name: res/anim/abc_grow_fade_in_from_bottom.xml SHA1-Digest: iPapUKcPYcYoPV86U6jl9kw3Fqs= Name: res/drawable-mdpi-v4/abc_ic_star_black_16dp.png SHA1-Digest: voXnHOu9kqbuYTOgvWgQQ6GK7aw= Name: res/drawable-mdpi-v4/ic_dialpad_white_24dp.png SHA1-Digest: Ain67lOpHc1Y5kMFqXv0COHP+H8= Name: res/drawable-xxhdpi-v4/ic_send_sms_insecure_dark.png SHA1-Digest: vqkeZqvUMKhiKa06vnvzfpo0EZg= Name: res/drawable-xhdpi-v4/ic_emoji_nature_activated_dark.png SHA1-Digest: odYh9SPOOjO2DQl8Zt3SeZFoqmc= Name: res/drawable-mdpi-v4/notification_bg_low_pressed.9.png SHA1-Digest: X/lHyqy/i66+Lvhw/RlUttGZCjY= Name: res/layout/recurrencepicker_end_text.xml SHA1-Digest: ju0lW/ZJaH7yy30lekFEcJmudJQ= Name: res/drawable-xxhdpi-v4/ic_block_grey600_18dp.png SHA1-Digest: pEOEbcAFQKdMqhGRWKNrf1itfA4= Name: res/drawable-xxxhdpi-v4/abc_ic_star_half_black_16dp.png SHA1-Digest: 1wJ8llQYggoHcTVA4eV+lgO9viY= Name: res/layout/abc_action_menu_layout.xml SHA1-Digest: Jpw86cr0Dg4qeYri6LCMkdNhQFs= Name: res/layout/media_overview_item.xml SHA1-Digest: 5HQKdf8GTT2QADM6MEH4xRAsvHM= Name: res/layout-v13/recipient_preference_activity.xml SHA1-Digest: 5Qb/c6BKOAMHD2WUyKb01qeChBM= Name: res/drawable-mdpi-v4/ic_recurrence_bubble_disabled.png SHA1-Digest: 4UNh+VZOMQGfV/EWOFVQKNJ4t2s= Name: res/drawable-ldrtl-xxhdpi-v17/ic_send_white_24dp.png SHA1-Digest: +26QRCNXvQKsaRcFvLCjUHNlbKQ= Name: res/drawable-hdpi-v4/ic_movie_creation_dark.png SHA1-Digest: X4S4jWmvJYk/d5OFGYuP3aGezSc= Name: res/anim/animation_toggle_out.xml SHA1-Digest: lBabkCAcL5u2zNS3a/RsxhDIuzE= Name: res/drawable-v21/abc_ratingbar_small_material.xml SHA1-Digest: BADt3Ef1toHfWLOP4cHWQg7zFsc= Name: res/drawable-hdpi-v4/abc_popup_background_mtrl_mult.9.png SHA1-Digest: WvazyKPHGN7DcTmhPWllEqzaoY0= Name: res/drawable-hdpi-v4/ic_emoji_places_activated_dark.png SHA1-Digest: vW42hojyb/7zMg8g+ZHjfbjKHig= Name: res/drawable-xhdpi-v4/ic_backspace_grey600_24dp.png SHA1-Digest: zFl9M6wNCdsM8+JRt/4BePJ1o8k= Name: res/drawable-mdpi-v4/icon_cached.png SHA1-Digest: 1ZRpuZ4qBoONtSR91+hdajO52ZA= Name: res/drawable-xxxhdpi-v4/abc_btn_switch_to_on_mtrl_00001.9.png SHA1-Digest: byuQvpWXS6brcdPpZzFwfkUGtWE= Name: res/drawable-mdpi-v4/divet_lower_right_light.png SHA1-Digest: AdwhpOtOoV6YRjHdKI6e5wdJhu4= Name: res/layout/notification_template_icon_group.xml SHA1-Digest: y1Lzv2C59QEKq/zSclTkuZPGQbU= Name: res/drawable-xxhdpi-v4/ic_unarchive_white_36dp.png SHA1-Digest: Q6T3KOG3SavoxEseiE9x/2cUQAk= Name: res/layout/create_passphrase_activity.xml SHA1-Digest: jjTR2QVsPkhdxzsHK5TyF4z71XA= Name: res/layout/calendar_date_picker_selected_date.xml SHA1-Digest: 1jiVfxuc+lsKJV2sPGxYSD8bBnU= Name: res/drawable/emoji_category_emoticons_dark.xml SHA1-Digest: jxqIHC1Ar9qSvcTM0qecJ1TzykA= Name: res/drawable-xxhdpi-v4/ic_search_white_24dp.png SHA1-Digest: csXrkuTLSQec0kz4TC9YLbHaeA8= Name: res/drawable-xxxhdpi-v4/abc_text_select_handle_right_mtrl_light. png SHA1-Digest: x+xo9M5OW92JI6xyR8PIyBI7/z4= Name: res/menu/conversation.xml SHA1-Digest: 7yYqFxougH3U/WKlbDHlh1Rjuz0= Name: res/drawable-hdpi-v4/ic_block_white_18dp.png SHA1-Digest: s5DcKQrrdp5tnwxDsPPAEXGV7vg= Name: assets/emoji_flags.png SHA1-Digest: fICcDebwlX2ZuBVzl4Qb4kBjJtY= Name: res/drawable/circle_tintable.xml SHA1-Digest: uxoUcTKEKLFALgd7oOxFZ539jXo= Name: res/color/abc_btn_colored_text_material.xml SHA1-Digest: GA5CCAEAJGneufY304mtMRAiO9s= Name: res/drawable-xhdpi-v4/ic_attach_white_24dp.png SHA1-Digest: l8lRdroTUNq09WhBtmW6L5h7TSc= Name: res/drawable/abc_dialog_material_background.xml SHA1-Digest: l0M3oq0dSvqXzuiDjFty5ess9ic= Name: res/layout/custom_default_preference_dialog.xml SHA1-Digest: 3GcmVR89CH5c8qh05Ffh7NhKcfA= Name: res/drawable-mdpi-v4/ic_recurrence_bubble_outline.png SHA1-Digest: jU1zZ2OQvuou3WdF4Q1ex+PByB4= Name: res/drawable-hdpi-v4/ic_emoji_symbols_normal_dark.png SHA1-Digest: Q6yw9PCSn4s9WxapNJ9P/UniXl0= Name: res/layout-v21/conversation_item_received.xml SHA1-Digest: qJO0hW4gVDi5SUt7UCnSnBWsb/c= Name: res/drawable-hdpi-v4/ic_emoji_people_activated_light.png SHA1-Digest: 7lrgliE4H7Akj6QYt3qPutlzV3Y= Name: res/layout/keyboard_with_header.xml SHA1-Digest: 9OmkAJj9hLLmYIaJ+sAWk4yDPSY= Name: res/drawable-xxxhdpi-v4/ic_block_white_18dp.png SHA1-Digest: tdEuPGdERhjcavNdrUHecQxrI1M= Name: res/layout/change_passphrase_activity.xml SHA1-Digest: COCPB4ujbEhRgTyyOhEd1SmcEzQ= Name: res/drawable-xhdpi-v4/ic_emoji_objects_activated_light.png SHA1-Digest: JLDo2LqyRd/Sb3CTnsrzQe5u34U= Name: res/layout/abc_action_bar_up_container.xml SHA1-Digest: lgDm2CXl2GfnCEk1PC3+/9seBjU= Name: res/drawable-xxxhdpi-v4/ic_done_white_18dp.png SHA1-Digest: zCCYacrKvxwJ8dWHhJij+mQ2bW8= Name: res/drawable-xhdpi-v4/ic_photo_library_white_24dp.png SHA1-Digest: 5SaD4ioS9S/I9vBJf/jrXH8DkZw= Name: res/color-v11/abc_background_cache_hint_selector_material_dark.x ml SHA1-Digest: RvuWyz0R/TOa0YMWKY4Z70Jd7r8= Name: res/drawable-mdpi-v4/abc_ic_menu_copy_mtrl_am_alpha.png SHA1-Digest: 4oU1S0T6qbsEVVg1vrykxhO0l2Y= Name: res/drawable-hdpi-v4/ic_menu_remove_holo_light.png SHA1-Digest: fJ8PTsrpYrWc6H7e3ctCsDSiaAY= Name: res/layout/calendar_year_label_text_view.xml SHA1-Digest: NWuaYel21R2U+Zfgy0SkpnIWlVs= Name: res/drawable-xhdpi-v4/ic_delete_black.png SHA1-Digest: Z6tz8hyRKhxub173/+bxBF+8CaQ= Name: res/drawable-hdpi-v4/dialog_full_holo_light.9.png SHA1-Digest: N91bFRXerR/vcloVH441Xx6Nhi4= Name: res/drawable-xxhdpi-v4/ic_group_white_24dp.png SHA1-Digest: shdzcIyfq7XffvVJiqihdtguosU= Name: res/drawable/contact_photo_background.xml SHA1-Digest: y2aQJR62snrVPJNn7N/Ve0pGy2s= Name: res/menu/conversation_unmuted.xml SHA1-Digest: JdmeZPjIQqeKw6uBcbpoVq8/Gfw= Name: res/layout/design_navigation_item_header.xml SHA1-Digest: NxhEFPzXVmTWKfRFuaYzZQ0kbfI= Name: res/layout/thumbnail_view.xml SHA1-Digest: A77EQLfZjnF/tU2umw1/QfbWivA= Name: res/drawable-hdpi-v4/switch_thumb_disabled_holo_light.9.png SHA1-Digest: HySzs67maedHt7T5DQ9b62NVMUw= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_358 SHA1-Digest: BdiB3G40E33JhpAaQnPmGM6npwk= Name: res/drawable/clickable_card_light.xml SHA1-Digest: VIl5o/NWq1nCN2BBNgoezFbXwbU= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_359 SHA1-Digest: OH/iiqVq50dBV79hJSr2rKoXM5E= Name: res/drawable-mdpi-v4/ic_contact_picture.png SHA1-Digest: gBiGaxFOuYDSl8ly2bHD9ylC4Bw= Name: res/drawable-mdpi-v4/lockscreen_watermark_light.png SHA1-Digest: hEboIczR1JMpRKVdEHPAqTIePyU= Name: res/drawable-xxxhdpi-v4/ic_forum_grey_32dp.png SHA1-Digest: 0LcJ5CBccaXbVS27DsjRwtYc/wA= Name: res/drawable-mdpi-v4/ic_emoji_objects_activated_dark.png SHA1-Digest: QW4LHwogF6+394neX42yQ2CbiP4= Name: res/drawable-xxxhdpi-v4/ic_launch_white_24dp.png SHA1-Digest: ix9Sk+r3UdDblFBjwgjFcnJQs4o= Name: res/drawable-xhdpi-v4/ic_menu_login.png SHA1-Digest: bL+Gp/eJvyBxO7SIeGLohs7bQMQ= Name: res/layout-v11/notification_action_tombstone.xml SHA1-Digest: diK9MlILrXv87mG85BLdUWk57sg= Name: res/drawable-mdpi-v4/abc_ic_star_half_black_48dp.png SHA1-Digest: nw6+x+wmtucgkuXTdFCndlFazP4= Name: res/layout/audio_view.xml SHA1-Digest: g5DfJ3OqZpmDV75jbXDWRewGoNw= Name: assets/emoji_faces.png SHA1-Digest: VF2bbkibGKhCNeUQxTwNIcjghSs= Name: res/animator/upper_pause_to_play_animation.xml SHA1-Digest: 7f8HiUwoTj84cBIvXQhtx6kFMlc= Name: res/drawable-mdpi-v4/ic_delete_gray.png SHA1-Digest: xHXFGYmF/EQrCANgkZsDN8EBF/Y= Name: res/drawable-mdpi-v4/ic_clear_search_holo_light.png SHA1-Digest: QAFEm0zCvZ4Xmc8sOzVOr0LSD4k= Name: res/drawable-mdpi-v4/ic_menu_lock_dark.png SHA1-Digest: nFOkYB6yVhnjOnwnTC/yyO2v3ok= Name: res/drawable-xxhdpi-v4/ic_emoji_objects_activated_light.png SHA1-Digest: bVR43kSrdn2gpPFIHV7aZgin258= Name: res/layout-v11/color_fragment.xml SHA1-Digest: WJb0933SsY9u/EtpCZLJS4UP8x4= Name: res/drawable-hdpi-v4/ic_pause_circle_fill_white_48dp.png SHA1-Digest: YPZvKW9wYirAUH9HUj2e8gGAiDM= Name: res/drawable-xxhdpi-v4/ic_mood_white_24dp.png SHA1-Digest: BXGpNcX8TerVRVxm8RjBkcK5bLU= Name: res/drawable-v21/notification_action_background.xml SHA1-Digest: 0sQTHXDbz/T3B0nMS6oSuhoVMI4= Name: res/drawable-xhdpi-v4/abc_scrubber_track_mtrl_alpha.9.png SHA1-Digest: MtrqRaF9hHgDajQUiUZsdukbh0o= Name: res/drawable-xhdpi-v4/abc_scrubber_control_to_pressed_mtrl_005.p ng SHA1-Digest: VyxMaY4GkM7F0rJ6OUhPiMeP/GU= Name: res/drawable-mdpi-v4/ic_send_white_24dp.png SHA1-Digest: oNDT6r9WHuzyoWCkGNccF9jLbmo= Name: res/drawable-xxhdpi-v4/ic_advanced_gray.png SHA1-Digest: L1jWZJK/JGkcsvUnYnjVMdAzZiM= Name: res/drawable/background_pattern_repeat.xml SHA1-Digest: oB3Wz023ADDvA6nID9pWNGXhWiU= Name: res/drawable-hdpi-v4/abc_btn_radio_to_on_mtrl_000.png SHA1-Digest: TGHVlpw1mq1IC2cB7ulwjQ18wdc= Name: assets/emoji_places.png SHA1-Digest: 0Rb7g/OTs83cL8rMbtjEYfViINc= Name: res/drawable-ldrtl-xhdpi-v17/abc_ic_menu_copy_mtrl_am_alpha.png SHA1-Digest: LVFgBAoPE9W6WKtEYtOUGWf+dzk= Name: res/drawable-xxhdpi-v4/abc_scrubber_control_to_pressed_mtrl_005. png SHA1-Digest: LrZts7m/Oija8l6P5TTB5GFdNx0= Name: res/drawable-xxhdpi-v4/ic_dialpad_white_24dp.png SHA1-Digest: EiylrBvuYC5ZY31xUIxumtdyMvk= Name: res/layout-v16/color_fragment.xml SHA1-Digest: qi3u3HGfeY707g+vtbNcQqNMQG0= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_373 SHA1-Digest: cSjMHtHIeYx8NPtkRndSSBuoZ98= Name: res/drawable-mdpi-v4/quick_shutter_button.png SHA1-Digest: hX6aYSlgrIrNR97AVRVBn+Zc420= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_372 SHA1-Digest: JZwfMXoGUZqHYvczzIvFBYzPVG8= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_375 SHA1-Digest: 4gnH58JyJO9ZBj8MNMws2LGhIEM= Name: res/drawable-mdpi-v4/ic_emoji_people_activated_dark.png SHA1-Digest: 17tlH62BvU2XtvzB0q0pMq4pFK4= Name: res/drawable-mdpi-v11/icon_notification.png SHA1-Digest: xSGFNF2FY64/dBhoUeJo/qFx81w= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_YT SHA1-Digest: cXbMKe6pREwZBzSVUa1rEcqWfyI= Name: res/layout-v17/notification_template_media.xml SHA1-Digest: d7SiUv5/rMArNhSFS9axXXveZmQ= Name: res/drawable-xhdpi-v4/switch_thumb_holo_light_v2.9.png SHA1-Digest: aHisXBhA4tSuq4zWW5w1PYjuGys= Name: res/drawable/abc_ic_menu_overflow_material.xml SHA1-Digest: AYT5D3IjptZzIlt4X8LKmKNh3eM= Name: res/layout/badge_widget.xml SHA1-Digest: gSeZLI0hbbQMvqppcrQtnWL0GU0= Name: res/menu/conversation_mms_group_options.xml SHA1-Digest: m2VD0D/7c0WQtNc6WyaFjEnEgg4= Name: res/drawable-mdpi-v4/spinner_pressed_holo_light.9.png SHA1-Digest: MBDjTotrSL6afNoJE5Mq5I6WF4M= Name: res/drawable-xhdpi-v4/quick_shutter_button.png SHA1-Digest: nLmuwLtwDgQhLHYyY81GFkAA5QM= Name: res/layout-v17/contact_selection_list_item.xml SHA1-Digest: o9XZZrqY4ZL7dueiXpGJW1i/Baw= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_380 SHA1-Digest: ooR6xh/a/iu1b6CXk+RjF7LeHoc= Name: res/drawable-hdpi-v4/transfer_controls_background.9.png SHA1-Digest: Cngz5DtX5FWcrNq0lMnsLWpu6cM= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_381 SHA1-Digest: 2JnA+oMJ+vJKy4hQpTtSxQVpZ5Q= Name: res/drawable-xxhdpi-v4/ic_mood_grey600_24dp.png SHA1-Digest: kc3UUSV68fYd/8O4pirHTfqw4Ck= Name: res/drawable-mdpi-v4/ic_menu_search_holo_dark.png SHA1-Digest: QXwY//zJFwvYzqfcyaPoso3TqJY= Name: res/drawable-hdpi-v4/list_selected_holo_dark.9.png SHA1-Digest: 8+a6kSVhZ1n87KOe3NWXssOoSRY= Name: res/drawable-xxhdpi-v4/ic_visibility_white_24dp.png SHA1-Digest: yxLNHuaKVBrTKsUUFdp96DIp5Yc= Name: res/drawable-xxhdpi-v4/splash_logo.png SHA1-Digest: aXmy7BI2jCI0KzC+31RQwr4XuOA= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_ZA SHA1-Digest: I29bUQkgyXligJyPjjZSktYPO2E= Name: res/layout-v17/conversation_item_received.xml SHA1-Digest: KgJudOLpZCLYQnWA64j03EINKKE= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_385 SHA1-Digest: yPAb2zGtOtW4C/VTuGdD9hVTPww= Name: res/menu/conversation_secure_identity.xml SHA1-Digest: xmKZehi6uJvWFuhq7VmaEPTlLIQ= Name: res/drawable-xhdpi-v4/telephone.png SHA1-Digest: MNupQJZq5K+m8XkBhXUBZo+eIqQ= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_ZW SHA1-Digest: 5Ii48yDkdhHoOHP0+seCyvTM67k= Name: res/drawable-xxxhdpi-v4/ic_send_secure_white_24dp.png SHA1-Digest: ewbLoz2BxWy1dEqspuEHPrDizG0= Name: res/drawable-mdpi-v4/abc_text_select_handle_right_mtrl_light.png SHA1-Digest: 9Yadvmu5mRjm6q0/FxjSOjaktBs= Name: res/drawable-xxxhdpi-v4/abc_btn_radio_to_on_mtrl_000.png SHA1-Digest: 4YsKb2IwvWnlnKLr79msGTpIdXg= Name: res/drawable-xhdpi-v4/ic_action_warning_red.png SHA1-Digest: GTAHKyMIHvaE49HCfIDu+Qh6ACY= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_ZM SHA1-Digest: DXJorIOTg3+wqBCneGeb+yEd0qk= Name: res/drawable-xhdpi-v4/spinner_pressed_holo_light.9.png SHA1-Digest: ojrB5ql2Tg5clwEbaxKtvWw90HQ= Name: res/drawable-v21/abc_ratingbar_indicator_material.xml SHA1-Digest: V8JrLj4745FQ4gUvuKziXuLT2Ac= Name: res/drawable/abc_cab_background_internal_bg.xml SHA1-Digest: 9JWJR0qt9ACSmUHvHpdMc/ljSx0= Name: res/layout/conversation_item_pending.xml SHA1-Digest: oRpXliWIDPflbkT3VdkLewDNoyc= Name: res/drawable-mdpi-v4/ic_missing_thumbnail_picture.png SHA1-Digest: EJXnMu3Q2GZ996ZVbDQ9QHZC8jU= Name: res/drawable-ldrtl-xxhdpi-v17/abc_spinner_mtrl_am_alpha.9.png SHA1-Digest: LRWlMCeV4/Lq+wNklDndVFmtRHU= Name: res/layout/import_fragment.xml SHA1-Digest: MFdCCdeFAzLVqj/DJM8wfp7f97s= Name: res/drawable-xxhdpi-v4/ic_info_outline_white_24dp.png SHA1-Digest: aB9sX6vK5FrIx5rZuc/gkLtA1tc= Name: res/layout-v13/select_dialog_multichoice_material.xml SHA1-Digest: HGp4EP1iVseXgznQe0HcWWQAK0c= Name: res/drawable-mdpi-v4/sms_selection_icon.png SHA1-Digest: gMsauvPGyGNru1K9fJZFRVMguYI= Name: res/drawable-hdpi-v4/abc_ic_menu_cut_mtrl_alpha.png SHA1-Digest: a2PqqMawE/5F/kuBuWS4K8kdtOo= Name: res/drawable-xhdpi-v4/ic_recurrence_bubble_outline_disabled.png SHA1-Digest: JH3JYUHK6GPX9wicPgy3301y510= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_855 SHA1-Digest: COUdI62w67El5HnnJocGdX/mrQU= Name: res/drawable-mdpi-v4/ic_emoji_objects_normal_dark.png SHA1-Digest: +VtsjXm+z9kYoGwIcG+sBp0DE8o= Name: res/drawable-hdpi-v4/abc_tab_indicator_mtrl_alpha.9.png SHA1-Digest: NJuMq0n7Coq8s/ff6QHhDQhI9uw= Name: res/drawable-xxhdpi-v4/ic_call_white_24dp.png SHA1-Digest: jMVaLm8rUBBL6UaOEgNh1uR2LY8= Name: res/drawable/abc_ic_clear_material.xml SHA1-Digest: 3H791RZwhlVQMbLwc+lrDya3mkU= Name: res/drawable-mdpi-v4/abc_scrubber_control_to_pressed_mtrl_005.pn g SHA1-Digest: DVBX9SO92lStCRmZbxE3WeIe28w= Name: res/layout/conversation_item_received.xml SHA1-Digest: YferUO9TZrPpEnzT+PAB6QWCD20= Name: res/drawable/abc_list_selector_background_transition_holo_dark.x ml SHA1-Digest: LVSNyw7X6tB9DukmioIVl33ZyuQ= Name: res/drawable-xxhdpi-v4/abc_scrubber_control_to_pressed_mtrl_000. png SHA1-Digest: IL+CVRaU8e6508PLcaiJwuRr+AM= Name: res/drawable/clickable_card_dark.xml SHA1-Digest: wZlGP0IxpIpOD5dFtkQgwYtVbd0= Name: res/drawable-xxhdpi-v4/ic_emoji_recents_normal_dark.png SHA1-Digest: fJm3H8d8bXfKaasBd6ueOrRoeu0= Name: res/drawable-anydpi-v21/design_ic_visibility_off.xml SHA1-Digest: /d9K4kz+PEEXzPkb7nC/4aBqj+0= Name: res/drawable-xhdpi-v4/ic_backspace_normal_light.png SHA1-Digest: feAfnm3lpkZOOCFvCpL0csdz6xw= Name: res/drawable-hdpi-v4/abc_scrubber_control_off_mtrl_alpha.png SHA1-Digest: bRj1VtphY6uBpf6lW7kaUSr9O08= Name: res/drawable-xxxhdpi-v4/abc_ic_menu_copy_mtrl_am_alpha.png SHA1-Digest: +3A3jUbzRBRBAJ8oRmGYp+sMfXc= Name: res/drawable-hdpi-v4/ic_textsms_black_32dp.png SHA1-Digest: IYNs/eeCZQu1jrg8UQ/BjQ16OH8= Name: res/drawable/import_export_item_background_dark.xml SHA1-Digest: FlWeBUjp1SlfU5ll7qfh03DRIHo= Name: res/drawable-xxhdpi-v4/abc_btn_radio_to_on_mtrl_015.png SHA1-Digest: yP2hhhdWfqPQ6VTBFpcZM+5I8sg= Name: res/drawable-hdpi-v4/abc_text_select_handle_left_mtrl_light.png SHA1-Digest: ivlhy5czDUxb5mLUAXmPi72eh/s= Name: res/drawable-xxxhdpi-v4/ic_send_white_24dp.png SHA1-Digest: 85AZAjtkxwcSRGXJg2lwVURxbjo= Name: res/drawable-mdpi-v4/ic_visibility_grey600_24dp.png SHA1-Digest: 3eP6tI7Ay04/hS70aKMd4FRS2wk= Name: res/drawable-xhdpi-v4/ic_movie_creation_dark.png SHA1-Digest: DGSQCdIvB4x6Fcc8o1O6q7FnRz0= Name: res/drawable-sw600dp-xhdpi-v13/ic_backspace_normal_light.png SHA1-Digest: JHjJGulNyd35UOk1LoXOt1ofcDw= Name: res/drawable-xxxhdpi-v4/abc_ic_star_black_36dp.png SHA1-Digest: X8m2s5TyuTw6/NjutpgGA9c1lho= Name: res/drawable-hdpi-v4/ic_emoji_emoticons_activated_dark.png SHA1-Digest: 7ygAp299B58BWYeEKdULEBvW/xE= Name: res/drawable-hdpi-v4/switch_thumb_activated_holo_light.9.png SHA1-Digest: Wh0P8RRSA74oEeBgIjQxEpqcoME= Name: res/drawable-xhdpi-v4/ic_content_copy_light.png SHA1-Digest: +2RjblKDrYCroX9fWbYVAUyzmyA= Name: res/menu/conversation_muted.xml SHA1-Digest: YEPj/UNVHGEmdggQWj/jvZdFi3c= Name: res/layout/country_list_item.xml SHA1-Digest: r1mS7yS/DEnkOyfbMBd3mCVpbQU= Name: res/drawable-hdpi-v4/quick_shutter_button.png SHA1-Digest: QjtAszUFv66UUx2q7V/I7LHTkR0= Name: res/color/done_text_color_dark.xml SHA1-Digest: IKB7Djz1Q+EIn/NVDzkU7VIqAz0= Name: res/anim/fade_scale_in.xml SHA1-Digest: 7e1v5wyirlR6VHusnyFJ2Hy9Soc= Name: res/layout/calendar_date_picker_view_animator.xml SHA1-Digest: F0bVbT2ZKibioHhAV9cjVDr9Yso= Name: res/layout/three_keys_view_leftright.xml SHA1-Digest: qvylvsnZgiNW8Idjqvase6z+Qa4= Name: res/drawable-hdpi-v4/notification_bg_low_pressed.9.png SHA1-Digest: EU8fWX1eKN47RKlWWD9QqF/AGSQ= Name: res/drawable-hdpi-v4/ic_menu_search_holo_light.png SHA1-Digest: UQ0lpCGANHHgI2mpV5r5DkJWUwc= Name: res/drawable-hdpi-v4/ic_recurrence_bubble_disabled.png SHA1-Digest: UgH13/I6FVTNeKKxXr+zwBeKxew= Name: res/layout/design_bottom_sheet_dialog.xml SHA1-Digest: ggp4eiRPFjw7xpnansSaAuamCC8= Name: res/drawable-xxhdpi-v4/ic_emoji_people_normal_dark.png SHA1-Digest: 6TIk7p6tZSIWizqeMUNg0406Lpc= Name: res/drawable-xhdpi-v4/ic_photo_camera_light.png SHA1-Digest: 6cxiCmI31PdRdpf/9J2Ut2NgHH0= Name: res/drawable-hdpi-v4/ic_photo_library_white_24dp.png SHA1-Digest: xjW11RhiWcKttHxxzexpB5ufoZ0= Name: res/layout/abc_action_mode_close_item_material.xml SHA1-Digest: ol6exvHt2AXbYJh63ykzCPOeek0= Name: res/drawable-xhdpi-v4/ic_content_copy_dark.png SHA1-Digest: yfTX/EsIDROEEgyNXostm1MwYQs= Name: res/drawable-xxhdpi-v4/ic_info_outline_dark.png SHA1-Digest: Q/jHAmsUzBHImAlxLBv8CNiyLRc= Name: res/layout/design_layout_tab_icon.xml SHA1-Digest: 1oW2wUEHsS3deIrUBKUEwpNALgo= Name: res/drawable-hdpi-v4/spinner_pressed_holo_light.9.png SHA1-Digest: 2AU1b4tODlUJW7aRFT0bcz4flrA= Name: res/drawable/item_background_holo_light.xml SHA1-Digest: jQeNZ4KNIW1aa77T9tnO6w2jY/4= Name: res/drawable-mdpi-v4/abc_btn_switch_to_on_mtrl_00001.9.png SHA1-Digest: e//ti7f9UjoZyXMyT5IRTahD3PQ= Name: res/drawable-xhdpi-v4/ic_backspace_disabled_dark.png SHA1-Digest: fY8wrBom1Rs7BcwNpzmN9KBBDT4= Name: res/layout-v11/notification_template_big_media_narrow_custom.xml SHA1-Digest: c2pXGdyJHysVThqhDQeqzNKal3Y= Name: res/drawable-v21/abc_btn_colored_material.xml SHA1-Digest: D6vZuC+PxnPYmIv2/fsVSWVSDeg= Name: res/drawable-xxxhdpi-v4/ic_download_circle_fill_white_48dp.png SHA1-Digest: +o6A0Rp5Jw9L8+tAx/yo6VoewgU= Name: res/drawable-v11/notification_bg.xml SHA1-Digest: i+Eh+TUCXzBztY9fc7tQAEoaoXw= Name: res/layout/notification_template_lines_media.xml SHA1-Digest: wPkfHDF1gfeniSNJr/05TBfWeGc= Name: res/drawable-mdpi-v4/ic_refresh_white_24dp.png SHA1-Digest: HsxZE2QPxw8uE/sghJClLGul0DQ= Name: res/drawable-anydpi-v21/design_ic_visibility.xml SHA1-Digest: qEznbTUH0S7OP3v84l+B+dYFowc= Name: res/drawable-mdpi-v4/abc_textfield_default_mtrl_alpha.9.png SHA1-Digest: 6BStYFTiYO5hj6qjB+1tC6u+FNA= Name: res/menu/conversation_callable.xml SHA1-Digest: e+Qo7fum/zXigIiwflf9n+jDVTs= Name: res/drawable/abc_btn_radio_material.xml SHA1-Digest: UTYOeeEsntRapgE5ZWUWf1IlU/I= Name: res/drawable-hdpi-v4/ic_advanced_black.png SHA1-Digest: HlPPmpibdkooNzi58MYteXB5Npg= Name: res/drawable-v11/emoji_category_people_light.xml SHA1-Digest: DrKa3ghgfZjL+KHGdcveooLEhNs= Name: res/drawable-mdpi-v4/abc_ic_menu_cut_mtrl_alpha.png SHA1-Digest: q8RqfUM2laeQX8n/UUH1IoDcBlg= Name: res/drawable-hdpi-v4/ic_emoji_people_normal_dark.png SHA1-Digest: zueG+phX6wlp3c7eGn1nsFV3nEI= Name: res/drawable-xxhdpi-v4/abc_tab_indicator_mtrl_alpha.9.png SHA1-Digest: K3ucg8inS6QEpdWRjFnNMV6IIbo= Name: res/layout/keyboard_text_with_header.xml SHA1-Digest: 7toqNa34ScBiaSMyRVjDcks+LCA= Name: res/layout/transfer_controls_stub.xml SHA1-Digest: Y7StVJ+2zbCAJ57fSpB7K1nvlzk= Name: res/drawable-xxxhdpi-v4/ic_keyboard_white_24dp.png SHA1-Digest: zpOmathsmWASUKLLjXnT8xd6f+w= Name: res/drawable-hdpi-v4/ic_backspace_normal_light.png SHA1-Digest: +Cm39iWdZnxZySdet1mlC7GeEGA= Name: res/drawable-hdpi-v4/ic_emoji_nature_normal_light.png SHA1-Digest: yePBAFENDZpbEeeQiP2wvNeQ7aA= Name: res/layout/calendar_date_picker_header_view.xml SHA1-Digest: jcCkvgNadjtCZ9BqIBCmCIO4qdo= Name: res/drawable-mdpi-v4/design_ic_visibility.png SHA1-Digest: u5ybIs/Fy+4WcXRY5rghbiikii8= Name: res/drawable-xhdpi-v4/abc_ic_star_black_36dp.png SHA1-Digest: 84VFkBa9KP++pv1aritXYQWuD68= Name: res/drawable-xxhdpi-v4/abc_cab_background_top_mtrl_alpha.9.png SHA1-Digest: QqPpbBwEr9nywoEL/OHp+2+gZ1Q= Name: res/drawable-xhdpi-v4/ic_message_white.png SHA1-Digest: m76UF09N8rD9hTuj8T2rDxALlkc= Name: res/drawable-mdpi-v4/abc_scrubber_control_off_mtrl_alpha.png SHA1-Digest: mtgMXZE7hreEmqDe9Sm7MomopLw= Name: res/drawable-sw600dp-hdpi-v13/ic_backspace_normal_light.png SHA1-Digest: KWGKSf/BwbfOnB2o4M3/SIKQwgM= Name: res/drawable-xxhdpi-v4/ic_account_box_dark.png SHA1-Digest: g6fZdXTYQ/um9rFwes2raFGyJU8= Name: res/drawable-hdpi-v4/divet_lower_right_dark.png SHA1-Digest: P3P19wRqcDaC8i6CnpJfN4dh650= Name: res/layout-v16/centered_app_title.xml SHA1-Digest: BgyFyU3H6I8jKXmUAVmoYtGdL2A= Name: res/menu/conversation_insecure_no_push.xml SHA1-Digest: qkHAGttTsShSQO4xvqE892992NI= Name: res/drawable-mdpi-v4/ic_scroll_down.png SHA1-Digest: +euyL+tn7NhbEyrgkkSHM6QhGM8= Name: res/drawable-mdpi-v4/ic_delivery_delivered_dark.png SHA1-Digest: kskydZAMuGYG9PTEtrB84KZQ7+A= Name: res/drawable/abc_item_background_holo_light.xml SHA1-Digest: fDShwzepkR49aya4UNh+v22s1Nw= Name: res/drawable-hdpi-v4/abc_btn_switch_to_on_mtrl_00012.9.png SHA1-Digest: hOoziuoJ3C2IMcfDzYzmL7E6Tm8= Name: res/color-v23/design_tint_password_toggle.xml SHA1-Digest: uKmyWahGcwpgv98l1DYuTUPcE0M= Name: res/drawable-xhdpi-v4/ic_keyboard_grey600_24dp.png SHA1-Digest: qDBBlKnX8bs+TVPhSny6CzeMhRs= Name: res/animator/rotate_minus_90_animation.xml SHA1-Digest: AhVLtjcJdoeXGcim/ix1HCO/gQw= Name: res/drawable-hdpi-v4/ic_image_dark.png SHA1-Digest: h+QGEnOGB5w5rMVo94ZB9dxDRMc= Name: res/drawable-xhdpi-v4/textfield_disabled_focused_holo_light.9.pn g SHA1-Digest: OzQ1tHx9DB5q6GA0ZRNG3prDizY= Name: res/layout/abc_popup_menu_header_item_layout.xml SHA1-Digest: PhE+1WCDHuZ2z9mTXon6ESNGUC4= Name: res/layout/database_migration_activity.xml SHA1-Digest: 0L3RLBOxpA1MVL/q8lNfKLqe9KU= Name: res/drawable-xxhdpi-v4/ic_pause_circle_fill_white_48dp.png SHA1-Digest: YSwwVKAlS7zW/b95XI5PflY7GKE= Name: res/drawable-xxhdpi-v4/ic_volume_up_light.png SHA1-Digest: 1Qxa+uqLhL9bsx+Xo7zWBMQw9l4= Name: res/drawable-xxhdpi-v4/ic_circle_fill_white_48dp.png SHA1-Digest: ggrDW7v0qnp5WAbHjQQS7zpIvkQ= Name: res/layout-v17/conversation_item_sent.xml SHA1-Digest: ak7Kolh67Y68W+PPjTvedX/qw5E= Name: res/drawable-xxhdpi-v11/icon_cached.png SHA1-Digest: ua/0ckOAoVPgxZWb2msmMkbF8FE= Name: res/drawable/conversation_item_sent_indicator_text_shape.xml SHA1-Digest: Y+VvRJBHBMH3e3FleYI1UZWhQpo= Name: res/drawable-xxhdpi-v4/ic_emoji_nature_normal_dark.png SHA1-Digest: tnWnyvoZo4GVHUFkjHBiuft4KmI= Name: res/layout/video_player.xml SHA1-Digest: ZDQfiwr4ntdWq3CAZLvCBrn9kJk= Name: res/drawable-mdpi-v4/ic_backspace_normal_light.png SHA1-Digest: ZOX3U8jCVDPmfkZ3UzQdobzyd3A= Name: res/drawable-xhdpi-v4/icon_dialog.png SHA1-Digest: qPa6NvQ42VAtw8T4KKsrCGPFs/g= Name: res/drawable-hdpi-v4/ic_search_holo_light.png SHA1-Digest: q0rMt4Ru61/YE5rrmHEeki5RDW0= Name: res/color/recurrence_spinner_text_color.xml SHA1-Digest: QH+LNgcJnXMaHumk/oa+/LvF/K8= Name: res/drawable-xxxhdpi-v4/icon_cached.png SHA1-Digest: aNW2LVhGxXQgGuxWTs5xFr2hFTA= Name: res/drawable-hdpi-v4/ic_brightness_6_gray.png SHA1-Digest: rOJAkQKZKFJtBPUn7YrLuC2vkig= Name: res/anim/design_bottom_sheet_slide_out.xml SHA1-Digest: b7nLwVuguqkRn/0QJ5T+s+s304Y= Name: res/drawable-hdpi-v4/ic_advanced_gray.png SHA1-Digest: HrebOCo27YqFksFwsGqwRxkOABw= Name: res/drawable/abc_ratingbar_material.xml SHA1-Digest: eEVopjQX6W514WoHxn9rLKQ1T5Y= Name: res/drawable-xxxhdpi-v4/ic_photo_camera_dark.png SHA1-Digest: 0QgWvdvDxdowlh4HYdQLm8l/1TY= Name: res/layout-v21/abc_screen_toolbar.xml SHA1-Digest: RSm7QsJv1orHpN4/fzQ0JV8cXgw= Name: res/layout/date_picker_dialog.xml SHA1-Digest: aR0MM8nTd1RA826WRCiVc46R2Z0= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_979 SHA1-Digest: MRnTvzcPicoarmNssXPD0gjcHTs= Name: res/drawable/white_radius.xml SHA1-Digest: vJ/dDcwo+MQQr8+spnN4wPHrpBk= Name: res/drawable/abc_item_background_holo_dark.xml SHA1-Digest: EYfXWBiFkD5pE+x4VQkg8UKkBDw= Name: res/drawable-hdpi-v4/sms_system_import_icon.png SHA1-Digest: 0zG+KUxYtsfx/OZaI5FkMcq4ySs= Name: res/drawable-hdpi-v4/ic_push_black.png SHA1-Digest: 7fJv39n+mRT4hrun73lCTuWrJEM= Name: res/drawable-hdpi-v4/ic_emoji_flags_normal_light.png SHA1-Digest: TDH6Q0QaGikzI8z9SSXhPTBi1Hs= Name: res/drawable-xhdpi-v4/abc_list_longpressed_holo.9.png SHA1-Digest: C4a5xmVEzcIJxede0Urh0qZwCmg= Name: res/drawable-xxhdpi-v4/ic_done_white_18dp.png SHA1-Digest: wOg5S1bkowRA9IfOe4Ml8vDq6CY= Name: res/drawable-xhdpi-v4/ic_textsms_black_32dp.png SHA1-Digest: AlYxqxaWCxZWc/iDBFSY1Somp+I= Name: res/layout-v17/abc_select_dialog_material.xml SHA1-Digest: B6frzo4lLBVPjLWlbHfkHH/2zLU= Name: res/drawable-xhdpi-v4/ic_push_registration_reminder.png SHA1-Digest: /es9AZtoQI8Ta4GTB/HyJcy0FHM= Name: res/drawable-xxhdpi-v4/ic_send_white_24dp.png SHA1-Digest: xcpEXKnjWlSqUlpQEMnvkLUWJpA= Name: res/layout/conversation_activity_emojidrawer_stub.xml SHA1-Digest: C7rRCyzp/GaaBT0HAenRiFKOMGw= Name: res/drawable-xhdpi-v4/ic_add_white_24dp.png SHA1-Digest: l9WuayKKYwSKF3BAAXsFfIlAn1g= Name: res/drawable-xxhdpi-v4/abc_btn_check_to_on_mtrl_015.png SHA1-Digest: PIrE1bETED2AcFA+Z0PCJDOewO4= Name: res/drawable-xhdpi-v4/ic_clear_white_24dp.png SHA1-Digest: doY0jLzMBaeknvZcaHU55mEcNDQ= Name: res/drawable-xxxhdpi-v4/ic_photo_library_white_24dp.png SHA1-Digest: 4hbdFtP1OVvSP9H1SmvqJlhV6T4= Name: res/drawable-xhdpi-v4/abc_ic_star_half_black_16dp.png SHA1-Digest: 4NZnda4yf8qiNhg33fnhquq094o= Name: res/drawable-xhdpi-v4/notification_bg_normal.9.png SHA1-Digest: j66Eu60yXsTt2+rWG7/Bbt3KErg= Name: res/drawable-xhdpi-v4/ic_check_normal_light.png SHA1-Digest: 8QlwtJ2fccupMeU2If04UCygxos= Name: res/drawable-mdpi-v4/ic_archive_white_24dp.png SHA1-Digest: b7Q2pRkgVfvE4IxfNchLHu03+kM= Name: res/layout/psts_tab.xml SHA1-Digest: ut5zIC2Qke40czbjy2bU3/eq8ck= Name: res/drawable-mdpi-v4/ic_emoji_flags_activated_light.png SHA1-Digest: z9sgNyG1jC/CSDWTcLWRT5hppOg= Name: res/drawable-hdpi-v4/ic_audio_dark.png SHA1-Digest: re7dh5kEFBeVfcfrVP5pPVEd3fc= Name: res/layout-v11/conversation_fragment.xml SHA1-Digest: wBy1lqSfDOIFs+SjnAHEMdnPwzQ= Name: res/drawable-hdpi-v4/ic_app_protection_black.png SHA1-Digest: R8rC9HaXHQ0BpzxXbFIyIdzn9uE= Name: res/drawable-hdpi-v4/ic_select_all_white_24dp.png SHA1-Digest: GKLYH4WsrWYSOLbxzYJ2C3+29V4= Name: res/drawable-xxhdpi-v4/ic_photo_library_white_24dp.png SHA1-Digest: P2xr3ZeQwJcQR/qA6Vk/FmMxNHU= Name: res/drawable-mdpi-v4/ic_recurrence_bubble_fill.png SHA1-Digest: 7rU4lnig2n/p1+EnQKX2RGhw+5g= Name: res/layout/conversation_item_last_seen.xml SHA1-Digest: Ud6D9VpTZ59BZFWRquIaLsnz0D8= Name: res/drawable-xxhdpi-v4/ic_advanced_black.png SHA1-Digest: PdC6cKv/SDMc+zLeLgZg7lAN2SM= Name: res/drawable-xxhdpi-v4/ic_recurrence_bubble_fill.png SHA1-Digest: SvktZ/4DTpGiosr5uLgnDHEreWs= Name: res/layout/contact_selection_recyclerview_header.xml SHA1-Digest: nA+tCTWyXEXLRp0lp0EY09gGbDc= Name: res/drawable-xhdpi-v4/ic_emoji_symbols_activated_dark.png SHA1-Digest: DnNQnLERDE4Vcc/1yBfNui3lYIc= Name: res/drawable-hdpi-v4/icon_lock.png SHA1-Digest: 6BXCijrQeXipalz9npuKqy4DSRA= Name: res/menu/conversation_insecure.xml SHA1-Digest: hZ6jvcpMSW+ZgJOALoh2/efSXOw= Name: res/drawable-mdpi-v4/abc_list_longpressed_holo.9.png SHA1-Digest: GFCjouEOsx2zwJ4qrfooYQ63590= Name: res/layout/three_keys_view.xml SHA1-Digest: Spo4b3TNfcBUjvX7FkKwcGwVFas= Name: res/layout/time_picker_view.xml SHA1-Digest: i/HO6Ciac9XpXg6MhQnXpWGMAPw= Name: res/drawable-xhdpi-v4/abc_textfield_activated_mtrl_alpha.9.png SHA1-Digest: aGoDqShCvfRBOcYadujzbODhe1U= Name: res/drawable-xxhdpi-v4/abc_popup_background_mtrl_mult.9.png SHA1-Digest: qQpaYoGWL908h/WoyV81hrJSp9E= Name: res/drawable-xhdpi-v4/ic_send_sms_secure.png SHA1-Digest: /7klwvylPYsOKFO7iQV7v/Vo0eU= Name: res/drawable-hdpi-v4/ic_delivery_delivered_dark.png SHA1-Digest: 6jdYE2gOPsro7FC7U4wm1vci6A8= Name: res/drawable-xxxhdpi-v4/design_ic_visibility.png SHA1-Digest: QprzI4wdBmyk04hYKt3GSMEip/g= Name: res/drawable-xxhdpi-v4/ic_call_split_white_24dp.png SHA1-Digest: BdsShD0Cdwp93ix2AzbIdNWTrX4= Name: res/color/abc_secondary_text_material_light.xml SHA1-Digest: wP7WZmVV6oEHTqT4ks25UoAPyNU= Name: res/drawable-hdpi-v4/ic_emoji_people_activated_dark.png SHA1-Digest: moTnub9fz8+d7mL751FiGsF5Wog= Name: classes.dex SHA1-Digest: uE2fNrxx2qKrqL76ikYJU/MgbbI= Name: res/layout/abc_screen_content_include.xml SHA1-Digest: 5b3DomolwZfchrtJxjtLR+9TEkg= Name: res/drawable-hdpi-v4/abc_spinner_mtrl_am_alpha.9.png SHA1-Digest: HDJoTnQuLh9V9/4kv+/UeX7wGTY= Name: res/drawable-hdpi-v4/switch_bg_focused_holo_light.9.png SHA1-Digest: x7N6bd7BQ9gunVUj5pyMTy+B3f0= Name: res/drawable-xhdpi-v4/abc_scrubber_primary_mtrl_alpha.9.png SHA1-Digest: RnQxBqnfZP2w/UH+bBFTojv2UoA= Name: res/color/abc_hint_foreground_material_light.xml SHA1-Digest: KuAFKms2hZw9E3Is9w+s2zDVQcQ= Name: res/drawable/switch_thumb.xml SHA1-Digest: 3JRoidAeg5CQDYIHfLmmbm9T2jM= Name: res/drawable-xhdpi-v4/ic_send_push.png SHA1-Digest: 9BvcpB99/bvxWwSpv7b58B2Vo7Y= Name: res/drawable-xhdpi-v4/ic_send_sms_insecure.png SHA1-Digest: qo8obCTtUBe01tBhGExdX+cZ8Yg= Name: res/drawable-mdpi-v4/abc_list_focused_holo.9.png SHA1-Digest: jJIIxBXFlVwxMesuJlFFhjvLhPM= Name: res/drawable-mdpi-v4/ic_audio_dark.png SHA1-Digest: HE0MxO6bxPvZrPqI1/FWkOpxN24= Name: res/layout/conversation_item_pending_v11.xml SHA1-Digest: tdwgB5sGkESfShcr5E/hJrXnWHE= Name: res/drawable-hdpi-v4/ic_unarchive_white_36dp.png SHA1-Digest: GWA5xmtnP7HH6n1ZdZ5dGKAOhNk= Name: res/drawable-xxhdpi-v4/ic_photo_camera_light.png SHA1-Digest: GToFtYpo05K8zJYrl7aHSua6fg8= Name: res/drawable/done_background_color_dark.xml SHA1-Digest: Rlncna6lQ7w11D50KF0uWHMiDkY= Name: res/drawable/abc_ic_go_search_api_material.xml SHA1-Digest: WlVPR6cSq9TAkubAAkePiOlg8nY= Name: res/drawable-xhdpi-v4/abc_textfield_default_mtrl_alpha.9.png SHA1-Digest: L12XNgC05BSQghB6JCrs8Us9eEo= Name: res/drawable-xxxhdpi-v4/ic_badge_24dp.png SHA1-Digest: ZCzHQl4OQDCch8q9Z2NUHjque90= Name: res/color/switch_thumb_material_light.xml SHA1-Digest: vXyvBrnI6VAMvOAaXTZ3qrpE58I= Name: res/drawable-xxhdpi-v4/ic_push_black.png SHA1-Digest: Wo6Su4ZMOSWk13DHcWQKIB8yHMk= Name: res/animator-v11/rotate_minus_90_animation.xml SHA1-Digest: dAr9tiloBMntrmMmfeQ1JW7RJVM= Name: res/drawable-ldrtl-hdpi-v17/abc_ic_menu_copy_mtrl_am_alpha.png SHA1-Digest: u6/uL8RpuH0uA4j5k6GHmFtKKaA= Name: res/color/dialog_text_color_holo_light.xml SHA1-Digest: tw9Z15LR92IEz7YWFseQJAyVUpU= Name: res/drawable-xhdpi-v4/ic_menu_lock_dark.png SHA1-Digest: DJRuq8KIu10VVbJLKiaYrYWc/Cs= Name: res/drawable-xxhdpi-v4/icon_dialog.png SHA1-Digest: QhfVY7UBQilNAfrHJXWil0t74RI= Name: res/drawable-mdpi-v4/ic_check_white_24dp.png SHA1-Digest: oTQ8U+Rgg+M3vuYmqxlxC0toJ0g= Name: res/drawable-hdpi-v4/ic_save_white_24dp.png SHA1-Digest: N5LsvDNhv9nEwWmboKHAvvwMRNo= Name: res/drawable-mdpi-v4/abc_btn_check_to_on_mtrl_015.png SHA1-Digest: Txi4nHde0NvRVGH4WjelV6dyOKU= Name: res/drawable-hdpi-v4/abc_text_select_handle_left_mtrl_dark.png SHA1-Digest: K41jD6ysbp47ZcvjjR+O3lf5WDY= Name: res/drawable-xxhdpi-v4/switch_bg_disabled_holo_light.9.png SHA1-Digest: JxRwd3DKJhNPzikP2NFPrwYD4WQ= Name: res/drawable/pause_icon.xml SHA1-Digest: dCkVzXnnMv4YZfjzO1Mja5vbw2o= Name: res/drawable-hdpi-v4/ic_keyboard_grey600_24dp.png SHA1-Digest: VVc0f3FyhPmzq7mzgvY/w0IHt6w= Name: res/drawable-hdpi-v4/textfield_focused_holo_light.9.png SHA1-Digest: NfEGOtZ0YkueMDHG9onUNJVuHAM= Name: res/drawable-xxhdpi-v4/abc_ab_share_pack_mtrl_alpha.9.png SHA1-Digest: 07+MMsIKk8a3BObx9eEkeKwYSSk= Name: res/drawable-hdpi-v4/ic_movie_creation_light.png SHA1-Digest: URIg5P3muuPYdqOpqn+pX8knF5c= Name: res/drawable/recycler_view_fast_scroller_handle.xml SHA1-Digest: lId/oCzHC4v97KJfaSwHpjh8Vk0= Name: res/drawable-v11/emoji_category_flags_light.xml SHA1-Digest: C23igqMnLW5kCfUE8FpsQeZLIos= Name: res/drawable-hdpi-v4/switch_bg_holo_light.9.png SHA1-Digest: CpRZZ1GTLscTpuMbiso8PfUMFTA= Name: res/drawable-hdpi-v4/ic_emoji_people_normal_light.png SHA1-Digest: PjxiZtdcSi0eepYbqyq295v8sn8= Name: res/drawable-xxhdpi-v4/abc_ic_menu_copy_mtrl_am_alpha.png SHA1-Digest: QluevaTHgv86WnKHj0Dyu1BcXpk= Name: res/drawable-xhdpi-v4/abc_ic_menu_cut_mtrl_alpha.png SHA1-Digest: 2SSuJk3m1pafpmf81TSs7M6iuf0= Name: res/drawable-xxhdpi-v4/abc_text_select_handle_right_mtrl_dark.pn g SHA1-Digest: 69lnE53qPLgE18gtGzVrdAF6RUM= Name: res/drawable-xhdpi-v4/ic_notifications_gray.png SHA1-Digest: Df/E+k9TSsm3RF962SHeTO3gQ9Y= Name: res/drawable-hdpi-v4/telephone.png SHA1-Digest: PV63hNvLQzhizICDSsAmwazBLzM= Name: res/layout/number_picker_dialog.xml SHA1-Digest: g9Bf7abBubKlGpI+LWdj4jh1Y3M= Name: res/layout/country_selection_fragment.xml SHA1-Digest: 9FP5VBphB5dDjtyb6LGAejYRDDk= Name: res/drawable-mdpi-v4/ic_emoji_symbols_normal_light.png SHA1-Digest: vXmDmMJ5oQnedF/DCmXdsXqUysI= Name: res/drawable-hdpi-v4/ic_visibility_white_24dp.png SHA1-Digest: z1F8ZsbpCOHYL3gHNmkhEoMwocA= Name: res/drawable-v21/avd_show_password.xml SHA1-Digest: PizmnkTFwNC7csslcnSb00Iv2GY= Name: res/drawable-xxhdpi-v4/spinner_disabled_holo_light.9.png SHA1-Digest: /azIzHZ1133FIi3w99IeVESqufs= Name: res/drawable/abc_vector_test.xml SHA1-Digest: 4yJGw44hdFgotEL2tng9U1c82Mw= Name: lib/armeabi-v7a/libcurve25519.so SHA1-Digest: oYaBWE6Prj5toeF6ZASmtunvkoU= Name: res/menu/conversation_add_to_contacts.xml SHA1-Digest: fh+QfduspZw3FJJnfpxs4X/FuWQ= Name: res/drawable-sw600dp-hdpi-v13/ic_backspace_disabled_dark.png SHA1-Digest: 1xOse/knAUkmdSJRE7Gm2BWULK4= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_LK SHA1-Digest: ko6X10FJKBj0QYuPsWPrM62WUX4= Name: res/drawable-mdpi-v4/ic_visibility_white_24dp.png SHA1-Digest: 2/xp3jjRLpzFxQ6sZaLc973TvBo= Name: res/drawable-mdpi-v4/notification_bg_low_normal.9.png SHA1-Digest: WuL2/toxWwVCkWEMRxb1EQOyMhA= Name: res/anim/design_snackbar_out.xml SHA1-Digest: tSHapqXFI6k7SCynouBmerWDWcs= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_ER SHA1-Digest: CiK7I1Sa10t6+pGTRT46H57PswA= Name: res/drawable-xhdpi-v4/ic_search_holo_light.png SHA1-Digest: Krgj7/Cu7xR6w6ZP7BIU1glKUck= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_ET SHA1-Digest: oG3J7YbEOKhS6dN6m3XElR76Uqw= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_ES SHA1-Digest: P8KZt3DVwQNU9U3dDlFGFurQorE= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_LS SHA1-Digest: 3eHHAZpI08lTuNESlnVb1GPdI9A= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_LR SHA1-Digest: SEm2FwEPAdTVDqCx7lLTp/n2T8E= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_EE SHA1-Digest: GenDAfyKn99KSYfib/3FBalvi28= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_LU SHA1-Digest: q8g4fZ6rCb3VSyKBk8zr8G94pXs= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_EH SHA1-Digest: +KAelbDxTopdKY8tZcrGeGOy6/E= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_EG SHA1-Digest: NOmrr8EO8An5VQB/Ewan7/3BILs= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_LT SHA1-Digest: 9zEJajp/2WPawy2bxkvAbcMAcGY= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_LV SHA1-Digest: Rf7pQcatiPUybVQYtoNWVkQF2N0= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_LY SHA1-Digest: FRsttQtKnO+HTkhZ8nNthNU8Q1c= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_EC SHA1-Digest: HOPN0fJQ2e8M9uI+aAM8pAMDKVI= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MA SHA1-Digest: N7hVhtzF5rIvSTX/OkpGKsFn9eg= Name: res/drawable-xhdpi-v4/abc_btn_radio_to_on_mtrl_015.png SHA1-Digest: sSo2eVyCVNeDBah+XyDsR3c+eao= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MC SHA1-Digest: d9Onu4cbK9qIPE3m/bRARrOwNEs= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MD SHA1-Digest: HKD2beGJlD8Q+iDF3BhRoYu498Q= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_ME SHA1-Digest: eieLvW4At5ftphyCQqxR2nZYY9w= Name: res/layout/notification_template_part_time.xml SHA1-Digest: W/kytmaWkF2VPENQ086DWVdFzxY= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MF SHA1-Digest: XbV+szql0zBvzg+l2YNVpZk59cs= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MG SHA1-Digest: TqdHY+Aneh9NS3ecdbhZff6WRIc= Name: res/drawable-mdpi-v4/ic_notifications_gray.png SHA1-Digest: nR8L8PHu6qYWyc+B0FbA7NLEUaw= Name: res/drawable-xhdpi-v4/ic_emoji_flags_activated_dark.png SHA1-Digest: m1hXrT9B1hmf35sVuclo7StZqR8= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MH SHA1-Digest: eBu/3cUGVq/NDguCg8djRra8Vi4= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_DZ SHA1-Digest: 26RxyOaL6MJyB7ZDvc/iWY2kIlk= Name: res/layout/recipient_filter_item.xml SHA1-Digest: QntBBcYW90Shhm0OV1e7vvuiEmM= Name: res/drawable-v11/emoji_category_emoticons_dark.xml SHA1-Digest: Nr4UYN3LOdgJhjONAidin3Hgigw= Name: res/color-v23/abc_tint_seek_thumb.xml SHA1-Digest: Vnia/GdLsxJAaJPbtccRc+DNCGQ= Name: res/drawable-xxxhdpi-v4/abc_ic_menu_share_mtrl_alpha.png SHA1-Digest: zswdlAwmLMUdC8KexYY+VmSOxS8= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_FO SHA1-Digest: nRQLplgu/j5xCs6/Xs6iIcgTKJY= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_KI SHA1-Digest: UvEWzbq1iY+eYvwm6FrE2jkONw8= Name: res/layout-v21/notification_template_icon_group.xml SHA1-Digest: XLOAqJg1tab9l8hNVNyDb6OXchg= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_KP SHA1-Digest: vFoLsjHOWFHvSfUiE1X2la4Cnao= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_KN SHA1-Digest: McwX1/3qNv2fWPXVHVDT9rWPOzU= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_KM SHA1-Digest: fVwGfcTe+ypNcEutqQVh4hZ+WhQ= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_FR SHA1-Digest: zjLXabCdm6RwLsAbGMUGIID4iuc= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_FI SHA1-Digest: Gq5V4OY0faJ1vzbpXJe2eeX2LTM= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_KR SHA1-Digest: Zmuire8Vc0o/q0jD42zY9FbAVFs= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_FM SHA1-Digest: FRwN00RDtX/xywLB27kNRjXaddo= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_KW SHA1-Digest: p+A43cemg6fJ42DHd3uVUd23SME= Name: res/drawable-mdpi-v4/ic_emoji_emoticons_normal_light.png SHA1-Digest: n50CsI8Tev0fRuP1872Pd0izlsE= Name: res/drawable-hdpi-v4/ic_emoji_objects_activated_dark.png SHA1-Digest: 3vgsFON2BBKOUhTKy32/9MfPJ90= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_FK SHA1-Digest: usWIisE23KlcNfPSmc+1c9tyJKM= Name: res/drawable-mdpi-v4/abc_list_selector_disabled_holo_light.9.png SHA1-Digest: S/+WIalIT7QGoZ4J/VOqr0XEGEM= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_FJ SHA1-Digest: ++PSC+2VIAd/orrJf/FYj9tbSZU= Name: res/drawable-xhdpi-v4/ic_lock_dark.png SHA1-Digest: apj3XDFuBznvT8FqnzsC8hUgSzU= Name: res/drawable/play_to_pause_animation.xml SHA1-Digest: lC2jsFFRN0P5AV5WRfTxog4PtKE= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_KY SHA1-Digest: +DUNnjadV+WtxMMiD2BjXTb/Xos= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_KZ SHA1-Digest: y2WBJ/nXi6ntXL181uUBl0hjwmo= Name: res/drawable-xxhdpi-v4/ic_emoji_places_activated_light.png SHA1-Digest: scW4BrCBqv0pjWht85aaGs9ApCs= Name: res/anim/design_fab_out.xml SHA1-Digest: eqyMleghgi0F32G8QHJUnftDRAc= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_LA SHA1-Digest: gS+NRXuxsM0J7poj3wGnfcgO4pw= Name: res/drawable/button_background_dark.xml SHA1-Digest: /33Cy7m3UkKOcki5nldzXnDJowU= Name: res/drawable/abc_ic_search_api_material.xml SHA1-Digest: fUkZfr9l9WcTa5TsedyqQlEfT8Y= Name: res/drawable-mdpi-v4/switch_thumb_disabled_holo_light.9.png SHA1-Digest: h+7dgWRgNzZ6qYbj0pMQoC2C4No= Name: res/drawable-xhdpi-v4/ic_emoji_recents_activated_light.png SHA1-Digest: r2UoA5vgl7VxlE/U+jaISJmY46g= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_LB SHA1-Digest: V7Znjaco9f/Iy2AVoZGzEHgFrto= Name: res/drawable-hdpi-v4/ic_lock_dark.png SHA1-Digest: j7x65/O64r4egbF3Vpw2+AGuv9U= Name: res/drawable-xhdpi-v4/ic_unarchive_white_36dp.png SHA1-Digest: 76V7Hze7OYOCHtxTFbFp6y2qvCw= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_LC SHA1-Digest: U2v7sNQUX871iIgs0rB0Omj6/Lc= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_LI SHA1-Digest: W+xasLluPUD63y6iVyNGkRRSFo4= Name: res/drawable-xhdpi-v4/list_selector_background_selected.9.png SHA1-Digest: YJ9zp2BVWbYoWuD1G3xXbV47jvM= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GT SHA1-Digest: dvrpscpscAUgxE4hiom8hsER1/o= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_JM SHA1-Digest: oCB0maGB/LsuiBZSstc8Jq0MnJE= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_JO SHA1-Digest: BuohdoPOVZoe9JBbRmGBloJIWkw= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GU SHA1-Digest: 818Cc0DjonRGxvR1hmDeLr33fd8= Name: res/drawable-sw600dp-xhdpi-v13/ic_backspace_normal_dark.png SHA1-Digest: Aw8aqi+S0LDgyLzdEtK2UroA02Y= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GP SHA1-Digest: +UQmfbXc0KRcxLLkqK5LUVN9cVw= Name: res/drawable-v11/emoji_category_emoticons_light.xml SHA1-Digest: Z+gMiNhbCpygIX9WwGge//a90Fk= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GR SHA1-Digest: MyEGCggYEB0nER9VELLNbVM4nPM= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GL SHA1-Digest: /IqyEOK/kj1QOxvYC7Z8yHkuds4= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GN SHA1-Digest: +OCSKP9M7LZN2mc4egttWfQbspc= Name: res/drawable/emoji_category_nature_dark.xml SHA1-Digest: 4m2xH9BcG4ZfhSK8nWd+qBUG6vg= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GM SHA1-Digest: yvPOdH0m/84dAXizn6oP3tr2Qyw= Name: res/layout/three_keys_view_text.xml SHA1-Digest: KMedMcKk3gA8FYjf6+amYb9MZyw= Name: res/layout-v21/conversation_item_sent.xml SHA1-Digest: bjlzPTTyRH8puCCeWefXtdCq5+s= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GH SHA1-Digest: 7tyVPL7CR8hqZrZL8J42Zb4f9Vs= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GG SHA1-Digest: w9mwhy8uAaRZYw9eKYx4vOH5jY0= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_JP SHA1-Digest: kZtQzweakUTtB6umzZYno/rm5ms= Name: res/drawable-mdpi-v4/ic_warning_light.png SHA1-Digest: m1T8ZK8xW9wGNyF/ScOxmQjmMdY= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GI SHA1-Digest: cVLCl6ZK6aazb8dfbTLDEmDbt3I= Name: res/xml/recipient_preferences.xml SHA1-Digest: FNVn3EmgV9mPuhyGbO41W2l+hcA= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GD SHA1-Digest: 23f1WPq1tadou7YxZCenIiHx5Sw= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GE SHA1-Digest: ewLccLbCd3W7UTEMs3WH3wFSwJE= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GF SHA1-Digest: kDeHudl55sl+4Fmq9m9oiCDt2ko= Name: res/drawable-xxhdpi-v4/ic_delete_white_24dp.png SHA1-Digest: fo26gQ1rTD74Xa4FxnDkjcSsmyU= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GA SHA1-Digest: KGZCYMIxAAyrB4sT17e9MxpYhts= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GB SHA1-Digest: c2SE5JUFbRwtVCGW3D53NJuPjIk= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_KE SHA1-Digest: jWlj6xDyZ5cjFZU0PFtz4SqPRoI= Name: res/layout/icon_list_item.xml SHA1-Digest: W6DrW/IO8lkbYV8VVYoqni4fB9A= Name: res/layout-v17/notification_template_big_media.xml SHA1-Digest: BRD+EvTCwQbpHEpE0Gm45+E226w= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_KG SHA1-Digest: gtqR6K//aPYG32NSAU8kVcV+ltU= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_KH SHA1-Digest: Zx7MhNm+QMlmk9IpN6rpPr+ZmHw= Name: res/drawable-xxhdpi-v4/ic_keyboard_grey600_24dp.png SHA1-Digest: OBuIDBljM8VNe5SpGBht4pv7GXM= Name: res/drawable-xhdpi-v4/ic_video_dark.png SHA1-Digest: 6nBugjicr6a673HUCCmJW8Q2Tts= Name: res/drawable-hdpi-v4/abc_ab_share_pack_mtrl_alpha.9.png SHA1-Digest: cK/LCW7Y07tXQ8e5BdotU64US0I= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_IN SHA1-Digest: 0zQlSUUDB9rFqElM6jcUMxiLntU= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_IM SHA1-Digest: rzZujVGPgGiwBibfVR3e97DmYhY= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_IL SHA1-Digest: BJBBAs/mxIFQVJAjfdLf24Xhh+s= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_HU SHA1-Digest: cNe4OzWlBFBSMv+CcO+AE7m1Jt4= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_HT SHA1-Digest: qAHFHFiqfqrSRBndW5w98Lkfmrw= Name: res/drawable-xxxhdpi-v4/abc_ic_star_black_48dp.png SHA1-Digest: 71NIJQvOQ0vvgmCgwLtmHxelFyc= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_HR SHA1-Digest: dqsUO43PgYgm7aFDv22LyKkd58Q= Name: res/drawable-xhdpi-v4/ic_attach_grey600_24dp.png SHA1-Digest: eP8SP5FjNQp/DbNhAUa+6SSjP/Q= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_HN SHA1-Digest: jFRQ55QAcI37lIk+q2SlTR3XQWA= Name: res/drawable-xhdpi-v4/ic_emoji_flags_normal_dark.png SHA1-Digest: xqJQwPDxU7dGMfeBydeKOClG/wQ= Name: res/drawable-xxhdpi-v4/ic_archive_white_24dp.png SHA1-Digest: gbr5qA65hgC92sdOpoFVMacpVxE= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_IT SHA1-Digest: Qagj8Yf+lzuwmuSR369/BX3wn5w= Name: res/drawable-mdpi-v4/list_selected_holo_dark.9.png SHA1-Digest: w5jMjyx0n/lk3stiPGrcn7tdZT8= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_IS SHA1-Digest: EU6eNECplfpb6ZjxrSmM7LKzfT4= Name: res/drawable-xxhdpi-v4/ic_group_photo.png SHA1-Digest: Amux783eUEcFs+YIx6Ho4QwFmuk= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_IR SHA1-Digest: FxzShd80T65+VHCAVMpqR4RLVts= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_HK SHA1-Digest: ZdcNCKGviOCbNheKAwIBsGeGh0Y= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_IQ SHA1-Digest: bSeQ7rQuW3w1sp6XJ9w3BjUAc4A= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_IO SHA1-Digest: LCU2bG18IExWKOFnWvywd+yyXN8= Name: res/layout-v16/notification_template_custom_big.xml SHA1-Digest: 6Cc+22UvH+lxCnlhjT1zkyJL+PI= Name: res/drawable-xxhdpi-v4/ic_emoji_flags_normal_light.png SHA1-Digest: Ude+n/pbQCHeuTUCYUnBND+DjF0= Name: res/drawable-xhdpi-v4/abc_btn_radio_to_on_mtrl_000.png SHA1-Digest: WXKtpz66pJSKelShj899BDnb29U= Name: res/drawable-mdpi-v4/ic_info_outline_white_24dp.png SHA1-Digest: qgNNf5R+lfdKfdLL2XwIyLo1Pfc= Name: res/drawable-mdpi-v4/ic_photo_camera_dark.png SHA1-Digest: gMUfLyp6cNpmLdmoRShpG6JDlVA= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_JE SHA1-Digest: HYBvWI2Z0tlb1LIu2hHO9zr5s80= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GY SHA1-Digest: mxcavk/xn8Yb5iJm/8+WVxfGvSo= Name: res/drawable-mdpi-v4/ic_emoji_nature_activated_light.png SHA1-Digest: yJXAdPAwUHY28PneOgCbctsGxzQ= Name: res/color/abc_btn_colored_borderless_text_material.xml SHA1-Digest: WW68R7XHb3JiHwrYdxFmx073AyI= Name: res/drawable-xxhdpi-v4/received_bubble.9.png SHA1-Digest: W4de+5UEqZE2m7rCCt25/Z1CxWI= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GW SHA1-Digest: RQiV1VkMzFqN9303Z4US/5oq7UQ= Name: res/drawable-xxhdpi-v4/ic_audio_light.png SHA1-Digest: 1BwT4HEB1FH0e8ErUvvw9UVQqqM= Name: res/drawable/last_seen_divider_text_background_dark.xml SHA1-Digest: S9qKuKzACOFXweC2S3e7be8G510= Name: res/layout-v11/custom_default_preference_dialog.xml SHA1-Digest: 39iUnvmNYHFHassDu5Sf3avA4oY= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_HN SHA1-Digest: wmdwU8MxPnbinZsXDJTGUL071ls= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AC SHA1-Digest: GSmldQS0V0LF8rbhzh3xXNxJoQU= Name: res/drawable-mdpi-v4/switch_bg_holo_light.9.png SHA1-Digest: vON82tQz84Bild5sO6RktMAlv6M= Name: res/drawable-xxhdpi-v4/ic_notifications_gray.png SHA1-Digest: 3Zb0LfM9HhNjEGyz0Fy5a1z6KPc= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AD SHA1-Digest: ar9/1nU9D5hgsnOcx5u0PZwJ/9c= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AE SHA1-Digest: lqJvEENSJdhMOioyyZbiJZOjwI8= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_HR SHA1-Digest: mtcNesgfP/cR+8TfEcqAxeLWRSA= Name: res/animator-v21/design_appbar_state_list_animator.xml SHA1-Digest: TK0TaKV09WhgYkWapszUr/I61Bk= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AF SHA1-Digest: sSPsntPXIT4zP2TQYmy3KUo2TBM= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_HT SHA1-Digest: LyVHo6yRt1b4lxnNknSrW3pelEM= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AG SHA1-Digest: P7W5c/VJCbLW7GK6jxGqHH5W5Gw= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_HU SHA1-Digest: 7vClN02DV7yKBbUWMeHRDD79ffs= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AI SHA1-Digest: 27Y8YvEVm8dFdgLgQmCAkFcqBPM= Name: res/drawable-hdpi-v4/ic_forum_grey_32dp.png SHA1-Digest: ipBt0rZC+mrVcuHRhn+zOZXNqE8= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AL SHA1-Digest: 79eU7sRCV2FUU4rHUeTSjB+TPmE= Name: res/drawable-hdpi-v4/ic_emoji_recents_normal_dark.png SHA1-Digest: vJP0sjFkcW8TqSxRhE41UHjrvw8= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AM SHA1-Digest: jRQ4Uqvixmh7O4V+pQJ7zA3LEXk= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_HK SHA1-Digest: lJp/+67ca+qqknJ9kDKOt6H9nhc= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AO SHA1-Digest: 2p80j0O5NxrtyBlDTtd4AZMnXuE= Name: res/anim/design_snackbar_in.xml SHA1-Digest: QPiYcwJRp7LvVEneHabhK9QbisA= Name: res/drawable-xxhdpi-v4/abc_ic_star_black_16dp.png SHA1-Digest: 4f3D3QSNCzMFGqafojrMfwWdbXM= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_ID SHA1-Digest: C51MJ2ito4WlNqmr7FT+LSn9+I8= Name: res/drawable-xhdpi-v4/list_selected_holo_dark.9.png SHA1-Digest: H2X9BKxBdFAOYEppP+vczoJ/LCU= Name: res/drawable-xxxhdpi-v4/ic_volume_off_grey600_18dp.png SHA1-Digest: PwJ//ed9C27FraSJpbRCsuUYdeA= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_IE SHA1-Digest: XYmcF2wTQfoGYFukTxsGG60BQ64= Name: res/drawable-mdpi-v4/ic_emoji_objects_normal_light.png SHA1-Digest: ++tNTRbddExtaGnaProLukt1LcY= Name: res/drawable-mdpi-v4/ic_delete_white_24dp.png SHA1-Digest: 3VIWeLi4JOiNOJs4hQZKGwXNuGw= Name: res/drawable/abc_list_selector_holo_dark.xml SHA1-Digest: Zlmbg+JWzYfCIIOn1SxRANlh8xo= Name: res/drawable-xxhdpi-v4/ic_emoji_flags_normal_dark.png SHA1-Digest: 2z1yxZchowADwapp1FtAcalT87Y= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BD SHA1-Digest: FMKTkoiTZVY6rZ8nrm4weFu/Zjs= Name: res/layout/recipient_preference_activity.xml SHA1-Digest: TwR0zonxICqK+vJnKYRTU4PbElg= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GP SHA1-Digest: Ry+gEADWJc5F0hk/fPoOgFU6Zi4= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BE SHA1-Digest: C9OBMomKeH56Rf8D3kJRK/BornU= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GM SHA1-Digest: +Ea0U4Y1zXwD/iNz00D2jjWBiuI= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BB SHA1-Digest: 76fqxVMoyy5WsRrZ5YUJP7z/qzk= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GN SHA1-Digest: JV96ZaK8wwScichqahTFuYVo+Tg= Name: res/drawable-hdpi-v4/ic_forum_black_32dp.png SHA1-Digest: 5b2v6D+cVzuh/Q0GQHqrKvzoZgE= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BH SHA1-Digest: qXk6y18VjNtehZAEohPg+PCWfTg= Name: res/drawable-xxhdpi-v4/abc_spinner_mtrl_am_alpha.9.png SHA1-Digest: kKM7t2gcUV2hJsYu4H6GhDJ44Ww= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GT SHA1-Digest: Vk1e7Ww3lQq9Nupht0/l1aj0Zy4= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BI SHA1-Digest: 5MEw8Am0U8NskpQQkpv7T/DZoLI= Name: res/drawable-xxhdpi-v4/ic_volume_up_dark.png SHA1-Digest: FnmNVs6FsUpOBx13HvJPiuwSNww= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BF SHA1-Digest: 6qcmbL8lS/pCTJZTRpOBUoGqRoM= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GQ SHA1-Digest: JgkggPpwcMssM4KZKyh07cO/d+M= Name: res/drawable-xxhdpi-v4/ic_emoji_symbols_normal_dark.png SHA1-Digest: sWyrOJ6a5eO3vPY9IN3l5lZ9j4A= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GR SHA1-Digest: 1PL0qWwecYHiBYKr42CyQBe4CKI= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BG SHA1-Digest: 3xp8HkBNTYnuCpHGqhpSYsMgvIY= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BL SHA1-Digest: ZibVzjuWtBO/2c4mChDoqtZ+qdM= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GG SHA1-Digest: G2VhFcm6X+dFHZpUQ4lW9xXyTag= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BM SHA1-Digest: zrSOwjYO7AtSm3hj60CgJ2/xDK8= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GH SHA1-Digest: DxHHS+t+GyG/R9rR+Uz3odQsX5c= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BJ SHA1-Digest: D7lSdeZxzBNos8ni5lDZSFv6Tss= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GE SHA1-Digest: h5JogMDM41xhSu1CUMqPgGiiQsA= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GF SHA1-Digest: iC1HFHkrIMJDXC9hMk91NTcdNg0= Name: res/layout/share_activity.xml SHA1-Digest: +qEhm4MuxpYYXQPa20C5FCrspiE= Name: res/drawable-hdpi-v4/ic_emoji_objects_normal_dark.png SHA1-Digest: 4CIbOZU3lmgOy9Rvb0Cwb6Xdi+I= Name: res/drawable-mdpi-v4/ic_volume_up_light.png SHA1-Digest: RcmL04qbOKaWF1+mFY7trDsJHaA= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BQ SHA1-Digest: 8l6KqnSUMnvDnudq+9jkpx4KEKk= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GL SHA1-Digest: 43id6HucRFVSRKQaZ1ZB9yr6cuA= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GI SHA1-Digest: EVrXphk2FtWJnoFlU5SDxNqpH7c= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BN SHA1-Digest: 0bTllnIWPvsvqBDNC4yJLPEZZKI= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BO SHA1-Digest: BDVs7zW3rHow3lXcsgH04Lv4QXY= Name: res/anim/slide_to_right.xml SHA1-Digest: odD3qfm4+8xLhJn/hGAfXAz+aZ4= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AT SHA1-Digest: 3YZ3jvwarlFuCBRiPDHchuW4pdM= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AS SHA1-Digest: y+wkj2RLzvL3te7HqxfRdRNDFlw= Name: ws/com/google/android/mms/package.html SHA1-Digest: zW3J5ZXNfuDLZKkBuTBJYYW1zpk= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AR SHA1-Digest: mliNA/kZeJg2zEWHmdCzRxPXgRQ= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AX SHA1-Digest: upADZFWuDDzOFyOXZACn3y1YpKc= Name: res/drawable-xhdpi-v4/lockscreen_watermark_light.png SHA1-Digest: f3uR83//pKLF+IvoV5IDGhpgv7s= Name: res/drawable/conversation_item_header_background.xml SHA1-Digest: ltMtF0mlyQqMyjfRF3u1wqyKwE0= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AW SHA1-Digest: 0h40YMhR4HoZ59JDI9dW+he7AIk= Name: res/layout-v11/conversation_list_fragment.xml SHA1-Digest: P2AiPoZu/JLDBPzaaZU7hPX9/30= Name: res/drawable-xxhdpi-v4/ic_send_secure_white_24dp.png SHA1-Digest: PH3CozxQ0hy2yhJtvCJLIWU2bB8= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AU SHA1-Digest: EilomLb4KFVrkUSLAF8j40YiZ7E= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GW SHA1-Digest: UqW5JGp5uQlbQLl0uV7uc5sdVbc= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AZ SHA1-Digest: yDTx//QhJ6De8XRzJaEzny+z158= Name: res/color-v11/abc_background_cache_hint_selector_material_light. xml SHA1-Digest: 5ZLto+P8lE/ONeMwLGzH/8b7W/M= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GU SHA1-Digest: patID8hn7rFEAwM5FSvMAG+gDsg= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BA SHA1-Digest: QfHbCGXOy0A65DpYF1RDwxSSnZg= Name: res/drawable/emoji_category_places_dark.xml SHA1-Digest: nAiCejcIDiqsQR2iIrzfyJaJZ1M= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GY SHA1-Digest: tkL4Idg3qX8PFTAiGgoILpOQw74= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CG SHA1-Digest: vyzpX2JZpDz2/DpSIGBMzLcvcwI= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CH SHA1-Digest: nH20B0lZhunuR+ZoqsjyWIPFOZI= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CI SHA1-Digest: JLyrJK5dx5XHcE5eGorZLdanoms= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_FR SHA1-Digest: NSzWXVJ5iFb8tzoFPw1usnVOahM= Name: res/drawable-ldrtl-v17/actionbar_icon.xml SHA1-Digest: WB6RqmtbPrs8sxSmdHke+npJQ1o= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CC SHA1-Digest: ft6e6WMLpBd45l3R1ppgxx0vyaY= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_FM SHA1-Digest: sVD3Buz/PGDNLNJbfPgAEaWN2BE= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CD SHA1-Digest: tA8KqrQ4BLG0VvS20MauUcnart8= Name: res/drawable-hdpi-v4/ic_done_all_white_18dp.png SHA1-Digest: NQkeb4KFOxkPuhTFwbONV/rjtuw= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CF SHA1-Digest: 7fXS+/JiYC9W+1iAu3QwB83sqRw= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_FO SHA1-Digest: Eed6XquaU8clgiXBCRkU2qqxVRQ= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CO SHA1-Digest: xp4Dv0QXpTvjgDGF55mKnqL6bVw= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_FI SHA1-Digest: TREZSxewZ4tpAJu6YGW9GTCDVQM= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_FJ SHA1-Digest: Jq2zK1ZUyYzPXjezFUC5l4BAZrk= Name: res/drawable-mdpi-v4/notification_bg_normal_pressed.9.png SHA1-Digest: brlMet9T126SG7tLyf7uBXl9NeU= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_FK SHA1-Digest: +/BGHWPyWHdcoXh0rd6ESfKQbtc= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CR SHA1-Digest: S6EbqlwJP7S3VTyfb1EbfRpn1tA= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CK SHA1-Digest: 3e0jDTESc2z0h053k1NFfL00sDk= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CL SHA1-Digest: aqK/v7h1wAl6Q7b8PgVR1kL0TeA= Name: res/drawable-xhdpi-v4/ic_scroll_down.png SHA1-Digest: sUnicSMEn6dqaf1oVQrVWzwF8j8= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CM SHA1-Digest: MUw7u/ISsywyLZocUXooE6+UHek= Name: res/drawable-mdpi-v4/abc_textfield_activated_mtrl_alpha.9.png SHA1-Digest: tB4B5H9j3pm0Xv62OAovdHEjuyk= Name: res/drawable-xhdpi-v4/sms_selection_icon.png SHA1-Digest: opocNNou97ui7HliabjkMqEJByk= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CN SHA1-Digest: /ncr74UKT07ZCifM5WB+L2zm9QM= Name: res/drawable-xhdpi-v4/abc_text_select_handle_middle_mtrl_light.p ng SHA1-Digest: JkjhWOAKXEQ5GsY9qUsQ3JIuhZo= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GB SHA1-Digest: bQ2vlkEAjXxrWJpjbwBWUAk87Ms= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BW SHA1-Digest: y3Q+s4TM2YndHpz03AEkShZskt8= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GA SHA1-Digest: k2Jen0TsqWGNKWRD2IT05C0QNXg= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GD SHA1-Digest: YnAZm8K6O+IRkrRbCm9BqT+cZtI= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BY SHA1-Digest: ONYixx4PDDMAl3N3TQrV7RHbqow= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BS SHA1-Digest: kPjgljRRGXH5y9mvVxSgb77zZN8= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BR SHA1-Digest: oD01nNi1cJYUxq6Zau3rnjD4OwU= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BT SHA1-Digest: XT7RRQoPXAkuG12nePHULTWbMNQ= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CA SHA1-Digest: k5baZNgjeWiIpVlJiSZjCdt1dQw= Name: res/layout/empty_time_zone_item.xml SHA1-Digest: oDk4IqvqM8H6e/pK3UH3Lf0q0g8= Name: res/drawable-xxxhdpi-v4/abc_ic_star_half_black_48dp.png SHA1-Digest: hMrx/1G3oK/JDzKrsj4fVhrzc7w= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BZ SHA1-Digest: 3UbcDoFyPHe8PwYlureTP8zD4b4= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_DJ SHA1-Digest: OCxhQq7DILLkBHn8R16qpX3ARWI= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_DK SHA1-Digest: j4XiHePQQtda/JK+77klvy3Ghic= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_ER SHA1-Digest: P0uJuBjfKLpEp3lG9coxQLxx3Vo= Name: res/layout/country_selection.xml SHA1-Digest: 6NViX+HrI12AtP7KbHukzq6VRpg= Name: res/layout/dots_text_view.xml SHA1-Digest: EeO1nY+bgs6bEIMj/kAY4xDXtDw= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_DE SHA1-Digest: Xs2mYBUnwBta5Nws962+jlJfbTY= Name: res/drawable-xhdpi-v4/ic_emoji_emoticons_normal_dark.png SHA1-Digest: SiayuB+wX/S0slsZ2npWsZjecBY= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_EG SHA1-Digest: WJQxoN3AarAunmow6xGyBuTGCUQ= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_EH SHA1-Digest: fgANQPgg19kRhwU/+ukN1BFpVZA= Name: res/drawable-hdpi-v11/icon_notification.png SHA1-Digest: 5RfIPQeF2eDVTCzeZfL4Z/Shwq8= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_EE SHA1-Digest: 74TJQTDaCgbnCRpE0OdRL4qRfII= Name: res/drawable-sw600dp-mdpi-v13/ic_backspace_normal_light.png SHA1-Digest: YrP5gVwIfhEX37AgcwI4RunV0AY= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_DO SHA1-Digest: yCZJ1mOSxKKKE4nA7LCejMRJ3Ak= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_EC SHA1-Digest: 6ZuNJ8mGXy7wh3bVWp23t42Z8sE= Name: res/drawable-hdpi-v4/design_ic_visibility_off.png SHA1-Digest: NIsXamkuhAzt6ldG5G4ar1YeZko= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_DM SHA1-Digest: lCxy6fdz9COgrWQOljkNmlZuuHg= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CZ SHA1-Digest: UIj6c1xplrAfRxxnH+WRoGi8Ldc= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CY SHA1-Digest: mzylAzyX7YTSC1/mBd4Xu0XbJho= Name: res/drawable-mdpi-v4/received_bubble.9.png SHA1-Digest: Cw0YMXapgMp4/S7dKrcGoiAWX0Y= Name: res/drawable-mdpi-v4/ic_image_light.png SHA1-Digest: V3hgc8Z5xQ0lxr7M8a+0K3+kyKs= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CX SHA1-Digest: N7O+pAZHYKuo//s7uat1CPoD0RU= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CW SHA1-Digest: 93FSBejkt7reOcHSWaXM88FuODY= Name: res/layout/contact_selection_list_fragment.xml SHA1-Digest: CkRXrY5QAeLdWwVs9DBq3tDMdz4= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CV SHA1-Digest: XDId5wsWqiw49DKaJV9OTbZRhdI= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CU SHA1-Digest: n7qaE3KPafkJF6Dbmnr5XmhTt4E= Name: res/layout-v11/notification_template_big_media_narrow.xml SHA1-Digest: tQibd00mdVAWLymwdJ/kNBDS+CQ= Name: assets/fonts/Roboto-Bold.ttf SHA1-Digest: 0xOrLEV1a/TpcmR/WyrWka0lCZA= Name: res/drawable/circle_touch_highlight_background.xml SHA1-Digest: +vrejfE86g5jlzpEsT1T1kPkZkw= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_ET SHA1-Digest: ZgHaxsiotkHOcLboOBdAmEcPbSU= Name: res/drawable-xhdpi-v4/abc_list_divider_mtrl_alpha.9.png SHA1-Digest: f5w1/P3BOViOfigUbV/eR0uuTmE= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_ES SHA1-Digest: A471eyB6g1l3oxwstU+e3iFFbsQ= Name: res/drawable-mdpi-v4/ic_mood_white_24dp.png SHA1-Digest: F1jZ+RPCYZYnhrdyEobaqc4HDds= Name: res/drawable-xhdpi-v4/lockscreen_watermark_dark.png SHA1-Digest: hlEs6EtN2kUs2+CrmYa3eux6s+o= Name: res/drawable-mdpi-v4/lockscreen_watermark_dark.png SHA1-Digest: seLgq7oT0J1fGJEos/BvHUn9HxM= Name: res/drawable-hdpi-v4/abc_text_select_handle_middle_mtrl_dark.png SHA1-Digest: Ho2ikNhvPPbPXcRViwyhs0XepR0= Name: res/drawable-xhdpi-v4/abc_tab_indicator_mtrl_alpha.9.png SHA1-Digest: BmwsKC3uNvwcF8agRRgehS1CAm0= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_DZ SHA1-Digest: nHslb+1sPO2Ce59WWMSXaVXQqG8= Name: res/drawable-hdpi-v4/ic_volume_off_white_18dp.png SHA1-Digest: wGLI3kD/AHJTZ9cmBaHUMgwUmjw= Name: res/layout/receive_key_dialog.xml SHA1-Digest: N6rKDVnVaim5Ngk5WMkQA07ODx8= Name: res/drawable-xhdpi-v4/ic_emoji_flags_normal_light.png SHA1-Digest: lzTZ5KC+L1NXjN1Lc0RUX4B+kwY= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_DE SHA1-Digest: k7ftp7Ib+g0G5Q6CUxuEzYND4u0= Name: res/drawable-xhdpi-v4/check_dark.png SHA1-Digest: iE2tfQLkrgNIvYZN3a0MlRJpleA= Name: META-INF/services/com.fasterxml.jackson.core.JsonFactory SHA1-Digest: wj+dD6oGz5YGyIP+iorCZD19Vfo= Name: res/drawable-sw600dp-mdpi-v13/ic_backspace_disabled_light.png SHA1-Digest: NzveXyIeX/Q8a9YPSBUiW3bhSmk= Name: res/drawable-xxhdpi-v4/divet_lower_right_light.png SHA1-Digest: fUkn0IXtb3K2laJRdKjS0QP90ik= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_DM SHA1-Digest: oYpfMM+VLHotoNXuW6U6yMp75BQ= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_DK SHA1-Digest: 2hI98L4j3X8dPES6LCFfu76+bg4= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_DJ SHA1-Digest: OeJYJhL1wPAee7j/UM285LVtMs4= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_DO SHA1-Digest: uRNgcVKJn/gRsZVHGsxP6QiO3Pg= Name: res/drawable-hdpi-v4/lockscreen_watermark_dark.png SHA1-Digest: SNi3m+8aly9MoEzOODURLRT2dgc= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CR SHA1-Digest: EviDQ8EathIn293mluU6XBg73EA= Name: res/layout/abc_screen_simple_overlay_action_mode.xml SHA1-Digest: shGoP8DkqV4/9zkW62jOT5c6dTM= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CU SHA1-Digest: mRNK7K4HUg/JaI/rNhJxzMzQ1Cg= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CV SHA1-Digest: RVIN2mYGimgGwrX5Vtj0T3GtE8c= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CW SHA1-Digest: F59PQe3PRWWiEpDzRg1cIssLgvg= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CX SHA1-Digest: gSq5dJocBDebtC3H3up10Q0VVXE= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CY SHA1-Digest: jDnqEUSgx6Werj9xL6K7MNfZGZU= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CZ SHA1-Digest: xx5oz1l40WoFgtXw5Zv13SzDDXU= Name: res/drawable-xhdpi-v4/ic_launch_white_24dp.png SHA1-Digest: ixUFVWh56fsEoPry/wBlNYTpgzM= Name: res/drawable-xxhdpi-v4/ic_arrow_forward_light.png SHA1-Digest: JgsrnATQt1egl0kfbJbKYMJY3FE= Name: res/layout-v17/select_dialog_multichoice_material.xml SHA1-Digest: 6GoUVzn6/X2e2d0g7MP0o+/2Gjw= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CA SHA1-Digest: w8zaxguC8zeZPWdUkglpBqHhUP4= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CD SHA1-Digest: 9+I21RpqnaRIC6/Xr/CImt36Pn8= Name: res/menu/text_secure_normal.xml SHA1-Digest: NaZEidwFPpPT7hrGo6Ju/ysx0c4= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CC SHA1-Digest: O7xyeOuzTRUJYrBlldvjkX4DqAE= Name: res/drawable-mdpi-v4/ic_push_black.png SHA1-Digest: rUKpp3tR4GRM6n8viBjxaVQ0Tgo= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CF SHA1-Digest: Zb150rGevGBapWuqzyutTvSGC60= Name: res/drawable-xhdpi-v4/ic_push_black.png SHA1-Digest: yPg6Ws1FUPLGcxmjbMjLK7q+IK0= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CH SHA1-Digest: eH3zu6OTr8s9tl+AreAyQGP1GZ4= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CG SHA1-Digest: bw9rbUzTOmaojAI7sHfQ0uGC234= Name: res/drawable-mdpi-v4/abc_ic_star_black_36dp.png SHA1-Digest: 5iJ2OwOvvq9Mq0WIYEcsSLKKghY= Name: res/drawable-xhdpi-v4/ic_circle_fill_white_48dp.png SHA1-Digest: NBKLet+soFmGPPvFv8en3NizT6A= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CI SHA1-Digest: Z+GKCwhOSabtrPuvRNUNEegV+xA= Name: res/drawable-hdpi-v4/abc_ic_menu_share_mtrl_alpha.png SHA1-Digest: 15Em2L2dzqYc4FpCIRN6G9jDl+w= Name: res/drawable-hdpi-v4/ic_send_sms_secure.png SHA1-Digest: C9M7P4sTqQTkrm9c1b7a5JiCswM= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CL SHA1-Digest: o2jhWQILjzidYdpzlPTyHweU3Lc= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CK SHA1-Digest: EwIARx8u+BnBm/OxE5+eF7icSZU= Name: res/layout/delivery_status_view.xml SHA1-Digest: rY8G9XatzpovR5oZJo+0aWjkcMU= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CN SHA1-Digest: GpiwtSYl7aT20iutUnqh1jtH2dY= Name: res/layout/abc_list_menu_item_checkbox.xml SHA1-Digest: +jlKh058XvxdeJU7n5iJbTnWP38= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CM SHA1-Digest: OrHRr+X/4FSmYJKlf4qmRgcKkfc= Name: res/drawable-xxhdpi-v4/ic_lock_black_18dp.png SHA1-Digest: m6B0U6dWbBizykEnQpeR0RoOj4c= Name: res/drawable-xxxhdpi-v11/icon_notification.png SHA1-Digest: v3D0kz34jttPWcbQoYLpiWGJS3E= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CO SHA1-Digest: 8nTagABMmOjMblfD0WuHGCelKRc= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BW SHA1-Digest: 9zeEobPgAk0QePW1vwEK3YN5bFc= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BT SHA1-Digest: oWKvwYKJy2599iCVKzxxe1kx/WA= Name: res/drawable-xxhdpi-v4/ic_emoji_symbols_activated_dark.png SHA1-Digest: KDZRFcJ7sq1qh1EB6ZOte3n3y/E= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BR SHA1-Digest: mSQseCW+AqVyEfdmZQzZfNMDLRg= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BS SHA1-Digest: SBwAaf2sVMF1XXKqfucd9PIC4IA= Name: res/drawable-hdpi-v4/ic_unarchive_white_24dp.png SHA1-Digest: i0NdcFQ/sn3N2wNU4pRTsoj9Hqs= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BQ SHA1-Digest: l/O/YwXNQfrAK+3iAFAuunSAKBE= Name: res/drawable-ldrtl-mdpi-v17/abc_ic_menu_cut_mtrl_alpha.png SHA1-Digest: rIBNxxH8rn0XchnrLO+YkM759P8= Name: res/drawable-xhdpi-v4/ic_clear_search_holo_light.png SHA1-Digest: 3amzDMs5C1zU0+T2IQhw6+cxKro= Name: resources.arsc SHA1-Digest: 7C0XCh6TfFh0dCc6wu1cJXIvQhQ= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BZ SHA1-Digest: bZ0DVTWtAaor7LTbuyteUblHZqE= Name: res/drawable-hdpi-v4/ic_forward_white_24dp.png SHA1-Digest: VsmydyZ0FPEoCwy7r8eNB6lNGGg= Name: res/drawable-xxhdpi-v4/textfield_disabled_focused_holo_light.9.p ng SHA1-Digest: EVVtSa4tBxIM4sQfg3efMbAd73k= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BY SHA1-Digest: qyps4AOsSxAwsfkf9C4I37F49lk= Name: res/drawable-mdpi-v4/ic_lock_black_18dp.png SHA1-Digest: y1vas11JhCozCPoOdEJ4aufqvWk= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BG SHA1-Digest: z0s/VLZXEOpDzndI7ML2UuBuGuk= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BF SHA1-Digest: 14+L8OZSyZLzlXyYpyaMlIhX+P0= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BE SHA1-Digest: QbvpQbvC8CE1LiMJeKI6rrnnTAY= Name: res/drawable-mdpi-v4/check_dark.png SHA1-Digest: eNnJ7BgEqrocb7op+R+cxUCOil0= Name: res/drawable-xhdpi-v4/list_selector_disabled_holo_light.9.png SHA1-Digest: bwjSzuahpvwVgJavscLUKen/ZqQ= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BD SHA1-Digest: BXF+lPM0reGE7KxlqdrAjx2Krq4= Name: res/drawable-v12/recycler_view_fast_scroller_bubble.xml SHA1-Digest: fK9A5ABKj0zZace6jtRt8OOyBgI= Name: res/drawable-xxhdpi-v4/abc_ic_menu_share_mtrl_alpha.png SHA1-Digest: cvp+pWujiXpQMYoa2y9EetK0U4s= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BB SHA1-Digest: ICtoY5/KdxJUczDlFKI0mImUg9k= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BA SHA1-Digest: ikwEIIEnzXMPWnRGDVHU3KORNCc= Name: res/drawable-xhdpi-v4/ic_emoji_symbols_activated_light.png SHA1-Digest: 6v6XV3wISkj8+48sJjxhmdrSpko= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BO SHA1-Digest: lXEPfhd8iCjSHfu3grvFp/fSMdM= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BN SHA1-Digest: +iKXGqbJ7+S7/z8wnIVGL/nbTtQ= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BM SHA1-Digest: DeS+/JuqN2wJgvboIyl7VLpVuT8= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BL SHA1-Digest: T5HDy99O+ftVavMq1U6gd3Ajrzc= Name: res/drawable-mdpi-v4/ic_mood_grey600_24dp.png SHA1-Digest: 4P/X40qJCsjuFRNhUQ0rsVMqm3k= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BJ SHA1-Digest: EQX7sTl6NxbTJhLLvCTpK6MZKpE= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BI SHA1-Digest: +ur7EMKohdoIn+4cWbSzKm5Cosw= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BH SHA1-Digest: 5kaLaTaOJh1E0yCJVI8LkQPpxEE= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AS SHA1-Digest: lFPVh6MGBKlowOwE3bQti9UQBmY= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AT SHA1-Digest: hqGb37qZDfDlQmLhc2O5J4E0Oxo= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AU SHA1-Digest: pUYpWj7Mbq1jKgqzU6FKQcC0ris= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AO SHA1-Digest: rSWdt7x0gLvGsQEg/RNjE2uaOH8= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AR SHA1-Digest: wACsMm8/e/4g5yMOLykrkLt4Wic= Name: res/drawable-xxhdpi-v4/ic_photo_camera_dark.png SHA1-Digest: IwWP0PnycjoKHklZ8+OMobwsg6g= Name: res/drawable-hdpi-v4/ic_scroll_down.png SHA1-Digest: l8b//nR9nd7fiUinyLXS0Sj6zno= Name: res/layout-v17/timezonepickerview.xml SHA1-Digest: vl37WDSnud4WlCno8BOR8EA5h0A= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AW SHA1-Digest: forQYq6WWbzM8JB5icXx3pqJh1g= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AX SHA1-Digest: xXXhU0wibZJgRbagTefH5FsETL8= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AZ SHA1-Digest: CJrPQMosQCfPKIYPRW1Dd8pUTj8= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AD SHA1-Digest: gfIYvmYpbQKJZ55/DXhtY+TJO7o= Name: res/layout-v16/conversation_item_pending.xml SHA1-Digest: M+G4c6n3fpwhlz4QRj/jsnVzldA= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AC SHA1-Digest: jhb/OjTha//hkw0P6kxXqaNRmo4= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AF SHA1-Digest: msh1yQtOY6p3MDgBy0RJQz+hJoI= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AE SHA1-Digest: 2pmWArmMF8XPBhUHB1BDUk6sU48= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AL SHA1-Digest: wHqLey8AvcafXdaSY+why0BZAKo= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AM SHA1-Digest: OWp+yIi/MST0sFxWWd8YlBZEVKk= Name: res/drawable-mdpi-v4/ic_block_grey600_18dp.png SHA1-Digest: 4iXvvFIaFAoVQOcDOOX+doa1kwM= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AG SHA1-Digest: IREC7VmaNyp2z6TlD/gOqjKgru8= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AI SHA1-Digest: +2+HU3m74y5TWONWX3hrGSVnPic= Name: res/drawable-xhdpi-v4/ic_account_box_dark.png SHA1-Digest: LFnuytM5maL4Lfl/eg1UkXoCtRY= Name: res/drawable-hdpi-v4/ic_clear_white_24dp.png SHA1-Digest: 9zM7YW9BmOj9UKEqe7OeHH9kimE= Name: res/drawable-xxhdpi-v4/ic_download_circle_fill_white_48dp.png SHA1-Digest: 8ve31VPRX9mkBi1B2ygHSSQrvlg= Name: res/drawable-mdpi-v4/ic_lock_dark.png SHA1-Digest: i4whup9/nTIGg/wXaZ8QuIZ70KU= Name: res/drawable/abc_seekbar_track_material.xml SHA1-Digest: 17M1OyJgbSyvZxbg3tUg5REGwOg= Name: res/drawable-mdpi-v4/ic_call_split_white_24dp.png SHA1-Digest: 0YrgcnO5k1/uSRgpvjxausMrXVw= Name: res/drawable-mdpi-v4/ic_emoji_places_activated_light.png SHA1-Digest: Ud3W8vS6D8D45zBZyKIU0mEZuJM= Name: res/layout/abc_list_menu_item_radio.xml SHA1-Digest: agsopWn5fspPqFiahI2wYYvv2Ig= Name: res/drawable-mdpi-v4/ic_emoji_places_activated_dark.png SHA1-Digest: TTKosBID71Fu9FE1ZH87ZoyxMZA= Name: res/drawable-xhdpi-v4/ic_call_split_white_24dp.png SHA1-Digest: 4imrsk3nBfyAcr1rcf4NRimxPdg= Name: res/drawable-mdpi-v4/abc_ic_menu_share_mtrl_alpha.png SHA1-Digest: RsYa9PHKHTGXi9SGr7dikHjzRmA= Name: res/drawable-xhdpi-v4/ic_emoji_people_normal_dark.png SHA1-Digest: eej5DAUXKUi/6JE0ukV+yZhF6P0= Name: res/layout-sw600dp-v13/three_keys_view.xml SHA1-Digest: PeshPVCO5Wp22jO8OB976nxhq/g= Name: res/drawable/abc_list_selector_holo_light.xml SHA1-Digest: y4DqLE9ZMUXA7mpN9gzH7cgYblE= Name: res/drawable-xxhdpi-v4/lockscreen_watermark_light.png SHA1-Digest: AYNtsBVsxmSt1MgC8RP6Pd1pBao= Name: res/drawable-ldrtl-xxxhdpi-v17/ic_send_white_24dp.png SHA1-Digest: IeLbm+xeGshzGwFPXOgB3CPFAIg= Name: res/drawable-hdpi-v4/ic_account_box_dark.png SHA1-Digest: Ii8tkZLRASna4Emp7tR3oRPvpLg= Name: res/drawable-mdpi-v4/ic_file_download_white_36dp.png SHA1-Digest: UY6G3irYxV+vXtOBJkHhAL96QqA= Name: res/drawable-xxhdpi-v4/ic_push_registration_reminder.png SHA1-Digest: Cm0M0XIBlw7BRiSi4j3+PluhFuY= Name: res/drawable-mdpi-v4/ic_menu_add_field_holo_light.png SHA1-Digest: XcK6Zy+//GXKE2tbr8mkSr6ZVZo= Name: res/layout-v17/custom_default_preference_dialog.xml SHA1-Digest: HUQHHYyxai0hDOmCZJWChGinyio= Name: res/layout/contact_selection_list_item.xml SHA1-Digest: Aeg8JWmT0UeWUU7c1k2DEEyDmk4= Name: res/drawable-xhdpi-v4/ic_send_secure_white_24dp.png SHA1-Digest: eVPdl3BecE8ulLAEb8nyJkwRGH0= Name: res/drawable-xhdpi-v4/abc_list_selector_disabled_holo_dark.9.png SHA1-Digest: e6ZxO30OB+oHpoct3gGLBY0gYXA= Name: res/layout/three_keys_view_right_drawable.xml SHA1-Digest: hwXL753+YQ37R1QjWOgBImsKzbo= Name: res/drawable-xxhdpi-v4/textfield_default_holo_light.9.png SHA1-Digest: HnMo01YraOS60C6Mfei/HvkA/0E= Name: res/drawable/abc_btn_borderless_material.xml SHA1-Digest: rPL1lJzRovUC1nEamnoL6zg2+0U= Name: res/menu/conversation_popup.xml SHA1-Digest: Fsb8H1dyYNJVIJb7UjI4pZgeoFQ= Name: res/drawable-xxhdpi-v4/abc_textfield_search_default_mtrl_alpha.9 .png SHA1-Digest: bHADGZ86aGisr0oBfZBoU7RHX/g= Name: res/drawable/abc_text_cursor_material.xml SHA1-Digest: e08kbab0hCmZ+bodjZ7WbbBG5g4= Name: res/drawable-hdpi-v4/abc_ic_star_black_36dp.png SHA1-Digest: lLeiPraqvP94YGRcJ58nUBYrU0s= Name: res/drawable-mdpi-v4/abc_popup_background_mtrl_mult.9.png SHA1-Digest: 8uS5dzxcWfvqLPd6VcABucDe9VM= Name: res/drawable-xxxhdpi-v4/ic_volume_off_white_18dp.png SHA1-Digest: 5dpYsBDaejTp8Sj0/LycIcwqUjE= Name: res/drawable-hdpi-v4/ic_message_gray.png SHA1-Digest: HEBF0Kk39LkBPbBAQ3oPqFNlBJc= Name: res/drawable-xxhdpi-v4/ic_check_white_24dp.png SHA1-Digest: 1ybum7+f/AW95nocQgY4HgUAwVA= Name: res/drawable-xxhdpi-v4/ic_content_copy_white_24dp.png SHA1-Digest: QluevaTHgv86WnKHj0Dyu1BcXpk= Name: res/drawable-xxhdpi-v4/ic_recurrence_bubble_outline.png SHA1-Digest: p8Ew5K1+rS0MDt8d1dNhXOyaeXE= Name: res/drawable-mdpi-v4/ic_group_photo.png SHA1-Digest: H5p61NfNmfjKp56IugjyXBMV034= Name: res/drawable-xxhdpi-v4/splash_padlock.png SHA1-Digest: XmBC9O8eAJQJFddDq6/Wz6i0FcA= Name: res/drawable/conversation_list_item_read_background_dark.xml SHA1-Digest: R/Bz3042zFeI4ZV+832gVyj097g= Name: res/drawable-xhdpi-v4/abc_list_focused_holo.9.png SHA1-Digest: Kw0Qo9eKlw06/oxLHYSWR6VftBw= Name: res/drawable/recycler_view_fast_scroller_bubble.xml SHA1-Digest: wRRdXv08lnaiKNy7Vz1zDb1gdTs= Name: res/drawable-hdpi-v4/ic_emoji_objects_activated_light.png SHA1-Digest: pa3Pmzz6WAvI0UR5AYU6YhqyLDI= Name: res/drawable-xxxhdpi-v4/ic_menu_lock_dark.png SHA1-Digest: 4wi2CULelc+GDc9h9IuPIgQKozc= Name: res/drawable-hdpi-v4/ic_emoji_symbols_activated_light.png SHA1-Digest: lzeQS2wqbqmpwSgJEDzVCsxXQWs= Name: res/drawable-mdpi-v4/abc_list_pressed_holo_dark.9.png SHA1-Digest: MoCLKmenbTlsz905dAkmwWiKKG0= Name: res/layout/design_layout_snackbar_include.xml SHA1-Digest: /FYbLwQJjqORI4i5Hm55yKJy7dk= Name: res/layout/contact_selection_list_header.xml SHA1-Digest: bl+2m53uDPHKWPgEkbbRgrufOc4= Name: res/layout/preference_list_fragment.xml SHA1-Digest: CZYRwRnR40i+N4BeZNClol3VSbE= fdroidserver-1.0.9/tests/metadata/org.smssecure.smssecure/signatures/134/28969C09.RSA0000664000175000017500000000245613243530567027714 0ustar hanshans000000000000000* *H 01 0 +0  *H c0_0G?w~0  *H  0`1 0 UUK1 0 UORG1 0 UORG10U  fdroid.org10 U FDroid10 UFDroid0 150403094515Z 420819094515Z0`1 0 UUK1 0 UORG1 0 UORG10U  fdroid.org10 U FDroid10 UFDroid0"0  *H 0 Q_aI.r4Px@ K{F}!aPB({d9(AN>(ue>kkIXxꃑ¨ CN@jz`jU ZpJpFk"{mZ Ab&nk2ok ^<@SL7u%v2 [ސ"X\40  *H  Y N~lP V'3hC-v=rǞ`%9'>xڢ<(͐K63y\'^HݴbY+kFe+!)7 HM.6]] viҀQM+GQJexHJt<1zWYyO}QϾ̢{: 6~pkw\\_K'lʸ>7-p^#%g(CiM3fAŧVcIVvxܺ؎m~SM Ų100h0`1 0 UUK1 0 UORG1 0 UORG10U  fdroid.org10 U FDroid10 UFDroid?w~0 +0  *H Y6oOKom7{xN:%߅xvY69~ c_ؚ-"1qX|+Bؓ ph$BWV@^< cpڬlfRbh@RՒdLr>EL+ ʵ5%]5ʙmIٝd`lwÏ &⺏x4>B_ggjL9})fdroidserver-1.0.9/tests/metadata/org.smssecure.smssecure/signatures/134/28969C09.SF0000664000175000017500000070776313243530567027614 0ustar hanshans00000000000000Signature-Version: 1.0 SHA1-Digest-Manifest-Main-Attributes: jyVcs92M3Hcv9SH+Z3LUjUkRivY= Created-By: 1.7.0_121 (Oracle Corporation) SHA1-Digest-Manifest: 56iXR6DCWVAoifQSUwNTRSK2h4I= Name: res/drawable-xhdpi-v4/abc_ic_star_half_black_48dp.png SHA1-Digest: osunKPxCh8nEVIDLO5+IMccpFig= Name: res/drawable/abc_btn_check_material.xml SHA1-Digest: YFDDnTUd6St4932sE/Xk6H0HMoc= Name: res/drawable-xhdpi-v4/ic_video_light.png SHA1-Digest: HtVJxluzJoPHCjreZHOfOC3X9aY= Name: res/drawable-hdpi-v4/ic_lock_black_18dp.png SHA1-Digest: tsXHhh2ccnNTEGew41PTgDSThgo= Name: res/layout/design_navigation_item_separator.xml SHA1-Digest: Rop+L/oPNw275ck8glcXZA481BY= Name: res/drawable-hdpi-v4/abc_textfield_search_activated_mtrl_alpha.9 .png SHA1-Digest: 3TVJoKotGhu2qu7nxOP+9dmuUfQ= Name: res/drawable-hdpi-v4/ic_audio_light.png SHA1-Digest: 13Mu0xO0mJ7FzY0q5XKbxSwruV8= Name: res/drawable-mdpi-v4/ic_notifications_black.png SHA1-Digest: MA4DXqM44SiqV6B9cY5h3pUOOhI= Name: res/drawable-xhdpi-v4/ic_advanced_gray.png SHA1-Digest: WDPvH2ZqZwD/phTruQBDukuSpuw= Name: res/drawable-xxxhdpi-v4/ic_textsms_grey_32dp.png SHA1-Digest: 9jva4mR1b6ILjJREhpq5viytlMs= Name: res/drawable-xxhdpi-v4/list_focused_holo.9.png SHA1-Digest: 2/qW1KJgIeUV4L7+Rd9kqNoxB2E= Name: res/drawable-v21/abc_action_bar_item_background_material.xml SHA1-Digest: KV90fjq9oUm4oE6kD9IDK7IG1zg= Name: res/drawable-hdpi-v4/ic_arrow_forward_dark.png SHA1-Digest: klj/AiJeyf83zuYmFJk6xukZkxw= Name: res/drawable-mdpi-v4/ic_attach_grey600_24dp.png SHA1-Digest: ngmOYUucFE57T857CEzLtuTLxfY= Name: res/drawable-xxhdpi-v4/ic_arrow_forward_dark.png SHA1-Digest: jjaIemVkS1nm/HxIu7QLAkN6ZdA= Name: res/drawable-xxhdpi-v4/abc_ic_menu_selectall_mtrl_alpha.png SHA1-Digest: J2uKPpryiQzwY93PQXWIe/qu8C4= Name: res/menu/conversation_list_batch_unarchive.xml SHA1-Digest: RBChRd/UuAfGHAWjrBxlsP+GMag= Name: res/layout/share_list_item_view.xml SHA1-Digest: PFk53SJjEoGF0pQ/iJJziVwTWCg= Name: META-INF/services/com.fasterxml.jackson.core.ObjectCodec SHA1-Digest: TUt3WJOdFSbY0ZddbRq3WmcKOBM= Name: res/drawable-xxhdpi-v4/ic_emoji_objects_activated_dark.png SHA1-Digest: jZHN4c0oJ8KGp3FGrI8oq5DGu7w= Name: res/drawable-hdpi-v4/ic_block_grey600_18dp.png SHA1-Digest: u0L4vqPdxqMY7+HoZZTGJK7pAy0= Name: res/drawable-hdpi-v4/ic_refresh_white_24dp.png SHA1-Digest: Ct72rRND5PQORhQLlWGdDT0wsDc= Name: res/drawable-xxxhdpi-v4/abc_ic_star_black_16dp.png SHA1-Digest: 99UOwsvNS81PRlylisdIV85BpmY= Name: res/drawable-xxhdpi-v4/ic_emoji_recents_normal_light.png SHA1-Digest: kGRNc0o4fZjmBSzaes4vp2PPBgg= Name: res/drawable-mdpi-v4/ic_photo_library_white_24dp.png SHA1-Digest: vHWhkrvE9tFuZp2ZIW9hpNJDsTU= Name: res/drawable-mdpi-v4/ic_action_warning_red.png SHA1-Digest: iNTrh1jh7OMJ/JKmvoUi095+hno= Name: res/layout/conversation_item_sent_audio.xml SHA1-Digest: MDYNLLHlEtPflny/+jsKoheQxJ8= Name: res/drawable-xhdpi-v4/switch_thumb_activated_holo_light.9.png SHA1-Digest: 3Ss5k8ep2Mrg+rgvOa7GGRfjpF8= Name: res/color-v23/abc_color_highlight_material.xml SHA1-Digest: ADJ/QZvjWwj/DO+JqvWU+jC8e+0= Name: res/drawable-mdpi-v4/ic_image_dark.png SHA1-Digest: ZzKS44XOxeDxQocnWdQAjubRzhc= Name: res/drawable-mdpi-v4/ic_message_gray.png SHA1-Digest: 0K+5JBTOf563oye6FpKegWKZ/fA= Name: res/drawable-xxhdpi-v4/abc_ic_menu_paste_mtrl_am_alpha.png SHA1-Digest: K3qxsC992lHdJzyirP9Zy9TMKkQ= Name: res/xml/preferences_advanced.xml SHA1-Digest: ismOPLlHsOnM/t1aVSELIMtocho= Name: res/drawable-xxhdpi-v4/ic_attach_grey600_24dp.png SHA1-Digest: ipi0CO2ssjeKYfEDbwhCGHmAhJQ= Name: res/layout-v17/conversation_list_item_view.xml SHA1-Digest: irkP08EmGQuV0W8i11WFROHpfR4= Name: res/layout-v16/design_bottom_sheet_dialog.xml SHA1-Digest: gqn9+EdH25pjfpqTXP6RAZ3CNP0= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_995 SHA1-Digest: VQZUHqW605gJIqlz9jltq9FdR3o= Name: res/drawable-v11/emoji_category_recent_light.xml SHA1-Digest: 0kdu9tgDg1GZ0ECdt2/P+L6zw1o= Name: res/drawable-xxhdpi-v4/ic_message_black.png SHA1-Digest: mXTAUjiikDSafi6k0815KQ07too= Name: res/drawable/notification_tile_bg.xml SHA1-Digest: GCdT2VRFagIyg+5ijRJYiNDkV50= Name: res/drawable-xxhdpi-v4/lockscreen_watermark_dark.png SHA1-Digest: yD27OTvbBk1jpS1o/+kZQko/Sug= Name: res/menu/conversation_secure_sms.xml SHA1-Digest: e4pbyINrig3CE7vbpn9e8WbN5gA= Name: res/drawable-xxhdpi-v4/abc_list_selector_disabled_holo_light.9.p ng SHA1-Digest: 4maqTaWq3BEXw6ShM7wJMon1kU8= Name: res/drawable-hdpi-v4/switch_thumb_holo_light_v2.9.png SHA1-Digest: dUoJcdYHBaB65zOYYoaEwJLGORI= Name: res/layout/time_zone_item.xml SHA1-Digest: OMUu/fQwSnx6ixxWcCbzPFxEl60= Name: res/layout-v17/abc_alert_dialog_title_material.xml SHA1-Digest: OFtIBILoZz5RL4i5NG79H4C4oJs= Name: res/drawable-xhdpi-v4/textfield_default_holo_light.9.png SHA1-Digest: tlklNYajvvNexKXzCLXina5RJ4w= Name: res/drawable-mdpi-v4/import_database.png SHA1-Digest: lW4UkLRTwmCgNQlCpnd+J2wZWEc= Name: res/anim/design_bottom_sheet_slide_in.xml SHA1-Digest: H3e/zshhR8lSEOvNJ1F7meqRXT0= Name: res/drawable-xhdpi-v4/ic_image_dark.png SHA1-Digest: Y6aRi8pB8nHYc2Ab8XnD0qGupRs= Name: res/drawable-xxhdpi-v4/ic_emoji_people_normal_light.png SHA1-Digest: hK3QELxmoGp5x91V/iG+hqecwDo= Name: res/layout-v13/conversation_item_last_seen.xml SHA1-Digest: LKCgoKkL2vB1Xwn2MzNS2iilUxw= Name: res/drawable/play_icon.xml SHA1-Digest: LZsHd/10peNSnCLEcZ0N08QoAB4= Name: res/animator/scale_with_alpha.xml SHA1-Digest: dkkt5ydwuaxd0Vix8/d+HhT1TAA= Name: res/drawable-mdpi-v4/abc_btn_check_to_on_mtrl_000.png SHA1-Digest: 7hzOGLjK5Ydm45f6RGVtepdkPl8= Name: res/drawable-v11/abc_textfield_search_material.xml SHA1-Digest: khlWpwwJ/BpuCBb0uDcegE9Qi7A= Name: res/drawable-hdpi-v4/ic_emoji_nature_activated_dark.png SHA1-Digest: kBBhwFcho+/f2fevl7i89QMctp0= Name: res/drawable-xxhdpi-v4/abc_switch_track_mtrl_alpha.9.png SHA1-Digest: 0/qHVKsPWinDgoCSCJ2tYnOQHDk= Name: res/drawable/done_background_color.xml SHA1-Digest: exuy7684bBtPXZdYMo07HuDY3nw= Name: res/layout/conversation_item_update.xml SHA1-Digest: zTAp/M2/nwDDANB7UAsuq/K4eyU= Name: res/drawable-hdpi-v4/ic_clear_search_holo_light.png SHA1-Digest: UeGvq8ddjrUFOGl38NFyxYA/M+o= Name: res/layout-v16/radial_time_header_label.xml SHA1-Digest: F7ROUbaGiB7d5oCKYGJskkSsP/k= Name: res/anim/abc_slide_in_top.xml SHA1-Digest: ps83fDCN37hSi5vdARGgPEjdET8= Name: res/drawable-xhdpi-v4/ic_menu_search_holo_light.png SHA1-Digest: 1OEqxyBgSuG4bJFuf4KAED1IFhI= Name: res/drawable/emoji_category_emoticons_light.xml SHA1-Digest: s5zj0LIzJakvrvkjFksQqWzCMtk= Name: res/drawable-xhdpi-v11/icon_notification.png SHA1-Digest: RuxV4sFOJZDKMDqRGmvv5ZHjaOA= Name: res/drawable-xxhdpi-v4/ic_emoji_flags_activated_dark.png SHA1-Digest: DFPRNsIBHb5NdyahxEP22SzqQKQ= Name: res/drawable-xxhdpi-v4/ic_save_white_24dp.png SHA1-Digest: M2Ksw9RoI9aAekWorQL1ZAtMg64= Name: res/layout-v17/import_fragment.xml SHA1-Digest: 9TPP+7MllpGYOYiYDBc/h7ibbUY= Name: res/anim/animation_toggle_in.xml SHA1-Digest: dRaYBsOfLqP23qwFMXALeJ6iGYM= Name: res/drawable-xhdpi-v4/ic_emoji_objects_activated_dark.png SHA1-Digest: oPGZtdvfw/nnZQ5u1aLjkZsiFp4= Name: res/drawable-v11/emoji_category_people_dark.xml SHA1-Digest: 8MsF21BUgoxTMNne35u1qG+2KYw= Name: res/color/abc_tint_edittext.xml SHA1-Digest: ELKpQJ7BBc4wCAl/vSvMN6a+kX0= Name: res/drawable/edit_text_holo_light.xml SHA1-Digest: jayuwPQnLwPrLoaJoSHnF9BnVx8= Name: res/drawable-xxhdpi-v4/spinner_focused_holo_light.9.png SHA1-Digest: GoRgB1Li7RZqzAPwAgLgd0fqnmg= Name: res/drawable-mdpi-v4/ic_recurrence_bubble_outline_disabled.png SHA1-Digest: ys+pQ2K1l435FrfBx6vAiDX/zRk= Name: res/drawable-xhdpi-v4/ic_check_white_24dp.png SHA1-Digest: q/oBdURfScsBlV4e5a4TxQowrp4= Name: res/drawable-mdpi-v4/ic_emoji_flags_normal_light.png SHA1-Digest: Zz+YX+HHOmmtVOvPRXbJ2d4L+so= Name: res/xml-v12/badge_widget_provider.xml SHA1-Digest: O68Q2g4i0uc2pLd8KQJJtS6vPqs= Name: res/drawable-xxhdpi-v4/quick_shutter_button.png SHA1-Digest: SxR6XbTH+j6YodTwgGnN1P6NGMg= Name: res/drawable-xhdpi-v4/spinner_default_holo_light.9.png SHA1-Digest: 8z6OMkzlDtz6BaebwU13NRMiwGc= Name: res/drawable-hdpi-v4/abc_ic_star_half_black_36dp.png SHA1-Digest: dLhPxcY8oRLfQRaw+nJKNi5Ke88= Name: res/animator-v11/bottom_pause_to_play_animation.xml SHA1-Digest: LYCzlA/emeQcYagTxZ22jVC7fjo= Name: res/drawable-mdpi-v4/ic_arrow_forward_light.png SHA1-Digest: O/8+Cz6wP0XqeEc1kY5mJJG4hXk= Name: res/drawable-xxhdpi-v4/ic_content_copy_dark.png SHA1-Digest: O58dv6ws4IlktN8EMsPx7STY+w8= Name: res/layout/message_details_activity.xml SHA1-Digest: azLss1HqZc+OGoasvbh3/pmvfVU= Name: res/drawable/abc_ic_voice_search_api_material.xml SHA1-Digest: FKT2suuxpH8tno25EX3iM2N2sF0= Name: res/drawable-mdpi-v4/ic_create_white_24dp.png SHA1-Digest: G0B2ZqlkLHaAmqSMpcq74l7viH0= Name: res/layout/export_fragment.xml SHA1-Digest: R9RsimyrNaZrtRJ6tYxiPnd0xUk= Name: res/drawable-xhdpi-v4/ic_lock_black_18dp.png SHA1-Digest: BHfmCHr+L1mAJXAj3f/Pa35mojA= Name: res/drawable/key_background_dark.xml SHA1-Digest: Q9XtZPMUF3W5vYFD1YfSL3PN98U= Name: res/layout/design_text_input_password_icon.xml SHA1-Digest: enOxXnZ0Bu2vzMaGn/K9/MGflag= Name: res/color-v23/abc_tint_default.xml SHA1-Digest: hkuz+yd/nR5mjwYr8RPMX49hS2I= Name: res/drawable/abc_btn_colored_material.xml SHA1-Digest: 5in2GRrYzWn1M5K8rINJqJPTOtg= Name: res/drawable-xhdpi-v4/ic_keyboard_white_24dp.png SHA1-Digest: gef8mzFbtVz0/gSncFbDhsyWERk= Name: res/drawable-xhdpi-v4/ic_reply.png SHA1-Digest: EqxlL9HBYa08+CVzrwfmhkUaWUI= Name: res/drawable-mdpi-v4/ic_reply_white_36dp.png SHA1-Digest: PcvXgVENNXIje52ZR0uF+Xl44Gg= Name: res/drawable-xxxhdpi-v4/ic_photo_camera_light.png SHA1-Digest: dmMt8Z9y+GqWe+6etY4zVem8ZEk= Name: res/drawable-xhdpi-v4/abc_ic_star_black_48dp.png SHA1-Digest: HtRtZJS+fQnU+eg18M0MLVLd0x8= Name: res/drawable-mdpi-v4/ic_movie_creation_light.png SHA1-Digest: hAd8qQscCw7ttV3lV8ICP7YD1Z4= Name: res/layout/hms_picker_dialog.xml SHA1-Digest: EIDb2yx/gAzfBk1vbnL+PLYhFMc= Name: res/drawable-xhdpi-v4/check.png SHA1-Digest: O/Qi5apjgjIYDbiy4L7NbECquN8= Name: res/drawable-hdpi-v4/abc_cab_background_top_mtrl_alpha.9.png SHA1-Digest: bKDAz/GvMsK2qKIXXjfzdAwCtG4= Name: res/drawable-hdpi-v4/abc_ic_star_half_black_48dp.png SHA1-Digest: ChKX/6bmS9ZkTZ+HL6xSqZEyCHk= Name: res/drawable-mdpi-v4/ic_keyboard_grey600_24dp.png SHA1-Digest: qnqSiT5wNCCg/UlnWQ1v9BlLkqU= Name: res/layout/keyboard.xml SHA1-Digest: Z7oIktvuO2U6H4nSwa18j5kwzaU= Name: res/drawable/key_background_light.xml SHA1-Digest: eFKV10AvLYM51Gr3qKecuaDCFAs= Name: res/drawable-hdpi-v4/check.png SHA1-Digest: bls++agTJ1NimFsoefiNBdsQThE= Name: res/layout/message_details_header.xml SHA1-Digest: h8JQ3mLrzfdnJXrpX6nqi45YmXA= Name: res/drawable/reminder_background.xml SHA1-Digest: gd6gIPUlMSPqPA7qf158rnlpwCI= Name: res/drawable-xxhdpi-v4/last_seen_background.9.png SHA1-Digest: o+wL4yJDNpiNHf5ZhMPaWIKOIEw= Name: res/drawable-xxhdpi-v4/abc_ic_star_black_48dp.png SHA1-Digest: IwCAMkAf6X0pu3GZenrkpUxcYjw= Name: res/drawable-xhdpi-v4/list_longpressed_holo_light.9.png SHA1-Digest: wjffxg4gtxSXtviI33Wu5A+pD0U= Name: res/drawable-hdpi-v4/ic_warning_light.png SHA1-Digest: z4G1iXM8qmbVe/WFc/791V7csQw= Name: res/color-v23/abc_btn_colored_text_material.xml SHA1-Digest: QfOopQVyGBK5764AtyzCeSxgY30= Name: res/drawable-mdpi-v4/ic_send_sms_insecure.png SHA1-Digest: KDIbLEMtUuaf05ehU9GETKSfsFE= Name: res/drawable-mdpi-v4/alert.png SHA1-Digest: iNzhKv0eva+6plDyJC6ddH5jCpE= Name: res/drawable-hdpi-v4/ic_badge_24dp.png SHA1-Digest: Bp+VbQKKHRTv+bE2aHLZU6qH9y0= Name: res/drawable/badge_drawable.xml SHA1-Digest: Q99rmXG7hI/Qdmv3rntexGhZtCc= Name: res/drawable-xhdpi-v4/notification_bg_low_pressed.9.png SHA1-Digest: bY0L7HlUYuOxWEpqttxLZo7p6QA= Name: res/drawable-xxhdpi-v4/ic_emoji_people_activated_light.png SHA1-Digest: tlyiMeENQ1f+aIFe+TyOKIwe2x4= Name: res/layout-v11/notification_template_custom_big.xml SHA1-Digest: VYI2XlNT0XUnuh0qA1BoxW6bJl4= Name: res/color-v23/abc_tint_switch_track.xml SHA1-Digest: bBD39oEqyvU5cz93JUQT0WhDCho= Name: res/drawable-hdpi-v4/ic_play_circle_fill_white_48dp.png SHA1-Digest: PayjsoW2PSnRDUwwmhTJbh2ljyQ= Name: res/layout-v16/selected_recipient_list_item.xml SHA1-Digest: AzEF8ESv6dxauh7AJe31k89QnVQ= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_506 SHA1-Digest: /BptlPYGlVrO6aOiRVQIw8Ezzhk= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_505 SHA1-Digest: GPF+v2ktP3tCtgbBVUwLwURztCE= Name: res/drawable-xxxhdpi-v4/abc_text_select_handle_left_mtrl_dark.pn g SHA1-Digest: firK0ehpSAty2PwnPS9T52QLoJk= Name: res/layout/selected_recipient_list_item.xml SHA1-Digest: ZwMoe3tueFRM1XJsSKuaiPw4MZI= Name: res/drawable-ldrtl-hdpi-v17/abc_spinner_mtrl_am_alpha.9.png SHA1-Digest: HFivDekYna/HGttXT/KmXBD3Fmk= Name: res/drawable-mdpi-v4/ic_video_dark.png SHA1-Digest: TBnuH10e391JDrpYlIxt7yqzqug= Name: res/layout/recycler_view_fast_scroller.xml SHA1-Digest: 7py2L+OuSApx1silOwwAS+CiF08= Name: res/drawable-xhdpi-v4/import_database.png SHA1-Digest: Q4C3QnSbVJogvVbJL04gfneaYms= Name: res/drawable-xhdpi-v4/ic_archive_white_24dp.png SHA1-Digest: Spkt/SXy1cY8lxW+n2OKMQteFKo= Name: res/menu/group_create.xml SHA1-Digest: abNM/Ga3TBltWGfnOimRjkvQYpA= Name: res/drawable-xhdpi-v4/ic_emoji_places_activated_dark.png SHA1-Digest: 2yCExeWjZxDr9TPIhbupCmdAet4= Name: res/drawable-xhdpi-v4/ic_menu_remove_holo_light.png SHA1-Digest: jS22ANT03aXHBixQEDTbArmO/sM= Name: res/layout/media_preview_activity.xml SHA1-Digest: JmeMePMCgjZNCZT+wiTCPoUUruw= Name: res/drawable-xxhdpi-v4/ic_emoji_recents_activated_light.png SHA1-Digest: /Jeu947UWEMQUEv7gCj7ch3fSac= Name: res/color/abc_background_cache_hint_selector_material_light.xml SHA1-Digest: mnPrYggTiTtLeSJMGhhI7MazdiQ= Name: assets/fonts/AndroidClockMono-Thin.ttf SHA1-Digest: zFQStQ34LrLFalq5xe3Uxd6yuVU= Name: res/drawable-v11/emoji_category_objects_dark.xml SHA1-Digest: rGXVg2KdXem4/iDdBV8pb2V/6Aw= Name: res/drawable/abc_seekbar_thumb_material.xml SHA1-Digest: 3gcgKKHkoQO20Qass3DY4tt02lc= Name: res/anim/abc_shrink_fade_out_from_bottom.xml SHA1-Digest: bncgNmwtn5WUMmKg+YNicoakQlQ= Name: res/drawable-mdpi-v4/ic_audio_light.png SHA1-Digest: UmjvOFURYutq4AlUnNhK//vRArM= Name: res/drawable-xxhdpi-v4/ic_emoji_recents_activated_dark.png SHA1-Digest: oDErz9G4J9sw13lmWiAcTyi0/JM= Name: res/drawable-sw600dp-mdpi-v13/ic_backspace_disabled_dark.png SHA1-Digest: goD6JyqKwXfXEQ+bnApKBlW+Gz0= Name: res/drawable-xxhdpi-v4/ic_volume_off_grey600_18dp.png SHA1-Digest: R4uNV8VJIb25VxNlcMMDg/67s0w= Name: res/xml/preferences_manual_mms.xml SHA1-Digest: jHUQzpsM3z1VTPD+NaMIDpwlp2A= Name: res/drawable-xxhdpi-v4/abc_list_pressed_holo_light.9.png SHA1-Digest: rDoVKQUYnqgVz5KStlGT59UHjW4= Name: res/drawable-xhdpi-v4/ic_delete_white_24dp.png SHA1-Digest: Lb7XaUgaZoqd9Om5eg0FWfdX4H8= Name: res/drawable/abc_cab_background_top_material.xml SHA1-Digest: Z+2EBs+zMxbPCCEkmiGm2pj627E= Name: res/drawable-xxxhdpi-v4/abc_btn_check_to_on_mtrl_015.png SHA1-Digest: KV1kviY5baSCVCjRxrMs398LwBk= Name: res/drawable-mdpi-v4/ic_attach_white_24dp.png SHA1-Digest: I2ss7aVE2K9WPhzlOKoXB+xJL+c= Name: res/drawable-xhdpi-v4/dialog_full_holo_dark.9.png SHA1-Digest: mgx4FmtAVykjmDt5bIzhpACjqt4= Name: res/drawable-hdpi-v4/ic_lock_white_24dp.png SHA1-Digest: 6CyxxMRokxyQCUvFeOWUrqC0Z+E= Name: res/drawable-hdpi-v4/ic_volume_up_dark.png SHA1-Digest: 4wby/2YNvkPSOiVjwE7SpkE54mY= Name: res/drawable-xhdpi-v4/ic_message_gray.png SHA1-Digest: tqlXe84qbQTT4jGRNJY9Ft+E7pg= Name: res/layout/outgoing_sms_preference.xml SHA1-Digest: pJFNcYXq+0z0p98IPcboyReDb64= Name: res/layout/number_picker_view.xml SHA1-Digest: VypqbcK3MUZJEcrnRcempupOR0w= Name: res/layout-v17/design_layout_snackbar_include.xml SHA1-Digest: QzNVDbo0qD41LnOPYCRD5jHKA9M= Name: res/drawable-xhdpi-v4/ic_lock_light.png SHA1-Digest: xV8re7lisutnOVQxHM3gACt+r5Q= Name: res/drawable-xxhdpi-v4/abc_menu_hardkey_panel_mtrl_mult.9.png SHA1-Digest: Jrc7Wnxi6R1ydjCdOBfCkiBqY5s= Name: res/color/switch_thumb_material_dark.xml SHA1-Digest: 8cvUQgKtG7wHuyAwzySbxVSy3KY= Name: res/drawable-xxhdpi-v4/ic_visibility_off_white_24dp.png SHA1-Digest: EronAFKuEapU27GYFV++I8hEsgU= Name: res/drawable-mdpi-v4/ic_push_registration_reminder.png SHA1-Digest: 4mxg5UOCU40SUg8JGLVNJzkIQKc= Name: res/drawable-mdpi-v4/dialog_full_holo_light.9.png SHA1-Digest: I98WjozKc0JNwjTZq0MP3G92hxE= Name: res/layout-sw600dp-v13/design_layout_snackbar.xml SHA1-Digest: AecXgQqt21R3R1lrOUnPAtiMSbg= Name: res/drawable/actionbar_icon.xml SHA1-Digest: Zolvi6pYeS++UJxxiH9TjkqRRJs= Name: res/drawable-mdpi-v4/abc_scrubber_control_to_pressed_mtrl_000.pn g SHA1-Digest: S0h+/cgNmuIaGR2yC98F2TluOLU= Name: res/layout/abc_list_menu_item_layout.xml SHA1-Digest: BBIu9OwGrkJCBkYpt10MXYYt1G8= Name: res/drawable-mdpi-v4/ic_movie_creation_dark.png SHA1-Digest: gh9BV9TqavDUMLj3I02tsSzYdZU= Name: res/drawable-v21/abc_edit_text_material.xml SHA1-Digest: hBtHM7G5owedF1Sx2+3m6PbIJaw= Name: res/drawable-mdpi-v9/icon_notification.png SHA1-Digest: XO7m3P5ttOZrRdz96uBImEdvufQ= Name: res/drawable-xxhdpi-v4/ic_refresh_white_24dp.png SHA1-Digest: juzHaK1HIeW3e5KzHw55xyfh6HM= Name: res/drawable/progress_background.xml SHA1-Digest: vOhG7l3qzc7lUlqnjnghMamRR1I= Name: res/drawable-xxhdpi-v4/list_pressed_holo_light.9.png SHA1-Digest: 7Gks0mPw3HB/OmNgzPxInAEdGvw= Name: res/drawable-mdpi-v4/textfield_disabled_focused_holo_light.9.png SHA1-Digest: 3HLtWIGeOcjeWJDyrxpQl26BxQY= Name: res/drawable-xhdpi-v4/abc_textfield_search_activated_mtrl_alpha. 9.png SHA1-Digest: XhJt+0uemfensB5jPL5pYEy1IQs= Name: res/drawable-xhdpi-v4/abc_cab_background_top_mtrl_alpha.9.png SHA1-Digest: j7oKd56yOLmG/qIDUU3a+2EFFV4= Name: res/anim/abc_slide_out_bottom.xml SHA1-Digest: QE0YUwjYdedmgPyovw3+5mmYlYE= Name: res/xml/preferences.xml SHA1-Digest: PT/JgBHAZ8ftn3TxEqqMqZ5pdis= Name: res/drawable-mdpi-v4/spinner_disabled_holo_light.9.png SHA1-Digest: uvpYfq+h6Qn/SDGkwYFfUeaTWJI= Name: res/drawable/emoji_category_places_light.xml SHA1-Digest: 6J23pXumUTxrk55YpGf2J53MCQ8= Name: res/menu/conversation_group_options.xml SHA1-Digest: erRDp8SZW5YJE1GY6Ch5oxltnxM= Name: res/drawable-xxxhdpi-v4/abc_text_select_handle_right_mtrl_dark.p ng SHA1-Digest: GtE+iSfForTxBq2j48yuxNYKU2s= Name: res/drawable-xhdpi-v4/ic_emoji_nature_normal_dark.png SHA1-Digest: MWPryu4IpuIzEHxEWBFL3ogscwU= Name: res/drawable-ldrtl-xhdpi-v17/abc_ic_menu_cut_mtrl_alpha.png SHA1-Digest: l+vUgYsVgQXPS3iZLaP1u5bjQck= Name: res/drawable-xhdpi-v4/design_ic_visibility_off.png SHA1-Digest: yi6TjTc4+gpXbmQRh5L7zm9CXWg= Name: res/menu/share.xml SHA1-Digest: OFFi2txtjcp5KSxNEBrun8cQpVc= Name: res/drawable-mdpi-v4/spinner_focused_holo_light.9.png SHA1-Digest: PkIQHK1gQev4CH5s1HE8eer4Q7A= Name: res/drawable-mdpi-v4/ic_unarchive_white_24dp.png SHA1-Digest: 4l/On9BS78WvYF1uwjNEV8/1G/k= Name: res/drawable-xhdpi-v4/ic_send_white_24dp.png SHA1-Digest: YD6S90hg7pSL0YuLV5QDwdVbKYY= Name: res/drawable-mdpi-v4/abc_spinner_mtrl_am_alpha.9.png SHA1-Digest: uSRKE0Y8igxEBi0V95m3BVba9Dg= Name: res/drawable-hdpi-v4/abc_ic_menu_paste_mtrl_am_alpha.png SHA1-Digest: kUO12sw4wuCW6X3apk/9/Bgw1+M= Name: res/animator/rotate_90_animation.xml SHA1-Digest: uK/YW8CFLkvobgn+SDKh5dvJKnc= Name: res/drawable-xxhdpi-v4/ic_forward_white_24dp.png SHA1-Digest: Y3hOlIZxNvmckcFpXZTZuf10tyY= Name: res/drawable-xxhdpi-v4/ic_notifications_black.png SHA1-Digest: AKxPExcZvMELEkvvP1zzyAdeIhc= Name: res/layout/message_recipient_list_item.xml SHA1-Digest: HNkd/TEU9KeZaxKBKRxfCKaSY4o= Name: res/drawable-mdpi-v4/ic_send_push.png SHA1-Digest: 4fXyZhxfTIKtowGHz864YuxW1uU= Name: res/drawable/abc_spinner_textfield_background_material.xml SHA1-Digest: VxVhP39ECkMfDcnEy/uhMtmv8LA= Name: res/drawable-mdpi-v4/ic_pause_circle_fill_white_48dp.png SHA1-Digest: 73mWrCxJapk7/mfXDUXGtoKTW64= Name: res/layout/single_recipient_panel.xml SHA1-Digest: gp93RHYmAHjep9cLn7e4j5uTWMs= Name: res/drawable-mdpi-v4/abc_ic_star_black_48dp.png SHA1-Digest: V5wpcOnIoe/CNNmRipWaosuWAqc= Name: res/layout/select_dialog_multichoice_material.xml SHA1-Digest: irO5EwKaeonZFyXwllRA1Y/3usY= Name: res/drawable-xxhdpi-v4/ic_warning_light.png SHA1-Digest: jsK7b90OKdO3vtd46dwWd92NlH8= Name: META-INF/buildserverid SHA1-Digest: xhNZchncMZQXytaTDWWDf2VsOkI= Name: res/layout-v11/notification_template_big_media.xml SHA1-Digest: ZdWu/rZKQzwVcV+s1qWjhDJvsII= Name: res/drawable-mdpi-v4/abc_btn_radio_to_on_mtrl_015.png SHA1-Digest: XI/8mKg+lFBg6GPmpkV9cv9l9n4= Name: res/drawable-mdpi-v4/ic_menu_login.png SHA1-Digest: h5cU8FfckVa4rOuoIbz3rB48K3I= Name: res/drawable-mdpi-v4/ic_forward_white_24dp.png SHA1-Digest: zcVF/wtERmVIt3bCYas7rD0sBuE= Name: res/drawable-mdpi-v4/abc_textfield_search_activated_mtrl_alpha.9 .png SHA1-Digest: 8MDSDpYFD8fxl8tEamhg6/oSBig= Name: res/drawable/conversation_item_background.xml SHA1-Digest: ksvuopfp0d7WQvKy20PIkopUaCM= Name: res/color/abc_background_cache_hint_selector_material_dark.xml SHA1-Digest: EkWMqlaBHrpcPaV0xhKAKJtZbBU= Name: res/drawable-hdpi-v4/ic_delete_white_24dp.png SHA1-Digest: 2nHoZeS6OL6RfxKF6SCo48YhVdE= Name: res/anim-v21/design_bottom_sheet_slide_out.xml SHA1-Digest: p2/uhdWZ4yTGAbU/lBqEQJKJUt4= Name: res/layout-sw600dp-land-v13/calendar_date_picker_dialog.xml SHA1-Digest: WjSX/EalWBnBe2rlRRSuIY1u8Zs= Name: res/layout-w270dp-h560dp-v13/calendar_date_picker_dialog.xml SHA1-Digest: Djn2sT5SZvoA7c1kwGkK9DiulwE= Name: res/layout/design_navigation_item.xml SHA1-Digest: h8Z4IZ4EaznZ0mo6kqbz7RPxJMg= Name: res/drawable-xhdpi-v4/ic_contact_picture.png SHA1-Digest: IeIqBVil3MGhdEzcHuZS32ebYc0= Name: res/drawable-xhdpi-v4/ic_push_gray.png SHA1-Digest: SdutMl0s5vzPa64biCQ9LrttW6Y= Name: res/drawable-hdpi-v4/ic_menu_login.png SHA1-Digest: YrBpMxSmkmtw2XbZ3d6yRIJYu4w= Name: res/drawable-hdpi-v4/ic_emoji_flags_activated_light.png SHA1-Digest: X+Z5HSACXPhP3BAA/Ep3phP+uAI= Name: res/layout/notification_action_tombstone.xml SHA1-Digest: /CJtUAzQm88owb3rpJ2lmhJ8nXs= Name: res/drawable-hdpi-v4/abc_textfield_activated_mtrl_alpha.9.png SHA1-Digest: PIZprngie1clc1fat6kH+iHy6P4= Name: res/drawable-xhdpi-v4/ic_group_photo.png SHA1-Digest: MaCkY1wW7r9wgt6keYpnoNeK+J8= Name: res/drawable-xxhdpi-v4/fab_shadow.png SHA1-Digest: d1fCRucybBZ+sWRe7tnLPKn+GUg= Name: res/drawable-xhdpi-v4/abc_spinner_mtrl_am_alpha.9.png SHA1-Digest: v+Lqu0RugRO4lsVbLkHSOZ9u334= Name: res/drawable-xhdpi-v4/ic_visibility_off_white_24dp.png SHA1-Digest: yoKJE2Q0Q97jGmbrQ1KsgQf7rGQ= Name: res/drawable-xxhdpi-v4/abc_list_selector_disabled_holo_dark.9.pn g SHA1-Digest: e8DEB+kwT5rrQOaL1UepmHHnW0M= Name: res/drawable-hdpi-v4/ic_archive_white_24dp.png SHA1-Digest: aqU5UhuTJeL2mRIZhnOmiDZm9Rg= Name: res/drawable-xhdpi-v4/ic_backspace_disabled_light.png SHA1-Digest: uvL0tDWQYO+b6a2r8JmD+J9Jlsg= Name: res/layout/select_dialog_item_material.xml SHA1-Digest: R7iXswuWqsPN8EjQvGjC9B6cHTI= Name: res/layout/view_identity_activity.xml SHA1-Digest: ZxYsEzUbqWB1fd31cKcAig8JDhs= Name: res/layout/design_navigation_item_subheader.xml SHA1-Digest: 69a0szAexIuOGbKDRpYcCnJcMhU= Name: res/layout-v21/notification_action_tombstone.xml SHA1-Digest: 1xrid9zP7OVc/uzz4qlGXdDs5To= Name: res/layout/share_intent_list.xml SHA1-Digest: /OHFqV8MJVHfwnbde21PTpxrK2o= Name: res/drawable-mdpi-v4/fab_shadow_mini.png SHA1-Digest: 7tnIvAUbieMoyoHI7/D7iHUF4Qg= Name: res/drawable-hdpi-v4/icon.png SHA1-Digest: CAVFYxqGyWt6CY3OmeIJX/+GrPs= Name: res/drawable-hdpi-v4/switch_thumb_pressed_holo_light.9.png SHA1-Digest: 85bARtoMmHSPqKgl57lX2txB7Sg= Name: res/drawable-xxxhdpi-v4/ic_archive_white_36dp.png SHA1-Digest: pOQIe48NSqdiWxZfFfwOPOH/pT8= Name: res/drawable-xxhdpi-v4/ic_emoji_places_normal_dark.png SHA1-Digest: 7/jTrEpkuGZjnbgKQSEqElfJ2Gk= Name: res/drawable-xxxhdpi-v4/ic_save_all_white_24dp.png SHA1-Digest: xKq8C4GY8EkO3Rol+/G0+/Cd3oc= Name: res/drawable-xxhdpi-v4/ic_delete_gray.png SHA1-Digest: lPVwwPUCLG3GRVxP9VyDLfyaRF4= Name: res/drawable-xhdpi-v4/abc_menu_hardkey_panel_mtrl_mult.9.png SHA1-Digest: bTNFsVJfPn6MYG0AqtJNqG+o5hs= Name: res/drawable-hdpi-v4/ic_emoji_emoticons_activated_light.png SHA1-Digest: 8UlhfP3tNBq8Wf5YVnXyD766HXA= Name: res/drawable-mdpi-v4/abc_textfield_search_default_mtrl_alpha.9.p ng SHA1-Digest: IKTGIARYbmam8Kefq6089z/0k98= Name: res/drawable-xxhdpi-v4/ic_textsms_black_32dp.png SHA1-Digest: C8gUhZWCtgS6vVORCu6jLmyhHXk= Name: res/drawable-hdpi-v4/abc_ic_menu_copy_mtrl_am_alpha.png SHA1-Digest: PtZHBaIOZQ7QKdJsAM/4rDecT5c= Name: res/layout/group_create_activity.xml SHA1-Digest: Mz4Qdjyqol3nqXnezWWmg/hPfQU= Name: res/drawable-xxhdpi-v4/ic_volume_off_white_18dp.png SHA1-Digest: BN+6DA8i0N7feI+DXuSuHwu62Kw= Name: res/drawable/emoji_category_symbol_dark.xml SHA1-Digest: lZvGgjFlg46lXgxyWMMuiA1xop4= Name: res/drawable-hdpi-v4/ic_delete_gray.png SHA1-Digest: tat8joPgYFEqR40RJTM055lAwdU= Name: org/spongycastle/x509/CertPathReviewerMessages.properties SHA1-Digest: J41SvstF2si4wHzfzilAP7QU0lQ= Name: res/drawable-mdpi-v4/ic_emoji_people_activated_light.png SHA1-Digest: 07Lo9EDy3OzK7UmCLWv7hZdkp+s= Name: res/drawable-xhdpi-v4/actionbar_icon_holo_dark.png SHA1-Digest: lsGB5rIJlqJvg5RCYO7sQSheKlM= Name: res/drawable-xhdpi-v4/abc_btn_check_to_on_mtrl_000.png SHA1-Digest: 6jyDQn4+fkX7JjWXzkyApClEOBM= Name: res/drawable-xhdpi-v4/ic_visibility_off_grey600_24dp.png SHA1-Digest: +K79wo79xc+zIdUhA+BgY3NSjf4= Name: res/drawable/abc_ic_ab_back_material.xml SHA1-Digest: LqMgt+Rywg7XqCzgIu4X9925b9E= Name: res/layout/design_navigation_menu_item.xml SHA1-Digest: 6WXixNq0qbNTdOQrxHoRlPGWqEs= Name: res/drawable-v21/touch_highlight_background.xml SHA1-Digest: LXWsYtf9CleMEE9F2d2jKTU65FA= Name: res/drawable-xxhdpi-v4/abc_text_select_handle_middle_mtrl_light. png SHA1-Digest: poX8dpNKEtacykuUW45/TXuqGCQ= Name: res/drawable-mdpi-v4/abc_list_divider_mtrl_alpha.9.png SHA1-Digest: 5CNLAG5hgHUpb17az14TTSMIzd0= Name: res/drawable-mdpi-v4/ic_reply.png SHA1-Digest: 9lPFP5ez5joY2ong87wLU1XP1NQ= Name: res/drawable-xhdpi-v4/ic_emoji_objects_normal_light.png SHA1-Digest: 4AdVQ6THS1Icz32grl9k5Tsnjgs= Name: res/drawable-xhdpi-v4/ic_emoji_people_activated_dark.png SHA1-Digest: FqikSS1A066ye++OLqgxphBX0fU= Name: res/layout-v17/notification_template_media_custom.xml SHA1-Digest: NRqlXcBt6+EiJWA2Us3EB4O/aNA= Name: res/animator/bottom_play_to_pause_animation.xml SHA1-Digest: noAqkjThR2pnIhrGEXxZ9yulSK8= Name: res/drawable-xhdpi-v4/ic_emoji_places_activated_light.png SHA1-Digest: oSUJddvEATDs9mKMCzEASwz8jIQ= Name: res/layout/switch_compat_preference.xml SHA1-Digest: SCvYTOQBF2ZhtbA8eqD7WWHhPMQ= Name: res/drawable-hdpi-v4/abc_list_divider_mtrl_alpha.9.png SHA1-Digest: Sjjr2U+mtnlc+xsrpBBNrqVorGY= Name: res/drawable-mdpi-v4/ic_menu_barcode.png SHA1-Digest: ne6Yu7swl/uqop6waeVVh1zxCHc= Name: res/drawable-xhdpi-v4/ic_audio_light.png SHA1-Digest: b7Oyc5myGgbHSG4u9zXQDjle0xM= Name: assets/backward SHA1-Digest: hgif/oUAa/79gSRPr7FCRJRVfvk= Name: res/drawable-xhdpi-v4/ic_emoji_recents_normal_light.png SHA1-Digest: g0z67sfbKP0Rd2NtBXF3o8q//48= Name: res/drawable-xxhdpi-v4/ic_push_gray.png SHA1-Digest: 7ZX2rXUTLc6nm3GsOwVrscJFST4= Name: res/layout/load_more_header.xml SHA1-Digest: fO/2JO2SLTeT3dtcsrS43HVQ450= Name: res/drawable-xhdpi-v4/ic_missing_thumbnail_picture.png SHA1-Digest: wGbI11M1M3pYFtyUJXQZ6MizZkY= Name: res/layout/abc_action_menu_item_layout.xml SHA1-Digest: W6aMUP8ritG0C2IidXq3FVHIo1E= Name: res/drawable/conversation_list_item_unread_background_dark.xml SHA1-Digest: 50vYDX1625FfrdJBL+H6rx1VTE0= Name: res/drawable-mdpi-v4/switch_bg_focused_holo_light.9.png SHA1-Digest: VaARP+7lQEpru1o/MCLqYUFQzRo= Name: res/drawable-mdpi-v4/ic_advanced_black.png SHA1-Digest: fhaB4MyFd6TDRkCQ3/WY8zSB/js= Name: res/color/done_text_color.xml SHA1-Digest: eR1WRcksZkuvjSRlr9yROqjJR30= Name: res/drawable-hdpi-v4/abc_list_longpressed_holo.9.png SHA1-Digest: xcQ0bHWRc+R9tuxQ3wgY1a2eY0k= Name: res/layout/splash_screen_activity.xml SHA1-Digest: CFKY1bhI3rjzzDbxHkfXqzAyKtg= Name: res/drawable-mdpi-v4/ic_app_protection_gray.png SHA1-Digest: GzFsgti12EvIVG1qkSLAtV9ZjMo= Name: res/drawable-xxhdpi-v4/sms_selection_icon.png SHA1-Digest: Pd5TMvT4yFkJcbqEitc5QMJNKmQ= Name: res/drawable-hdpi-v4/sent_bubble.9.png SHA1-Digest: FdfowFhHZNhFmrm59JSxASd+t3E= Name: res/drawable-mdpi-v4/icon_dialog.png SHA1-Digest: 79d0h9fKk4P7pUZzgJ7lv2p9tZU= Name: res/drawable-mdpi-v4/ic_visibility_off_grey600_24dp.png SHA1-Digest: Kme1LM1CzvATKwc7XWpJRXV86sA= Name: res/drawable-xhdpi-v4/list_pressed_holo_light.9.png SHA1-Digest: o6uQudI4iPo5plFaQ6Lklwf2dTY= Name: res/drawable-xhdpi-v4/ic_unarchive_white_24dp.png SHA1-Digest: u01sKhxVrWMhi1XBEwZNIVo7rdA= Name: res/layout/timezonepickerview.xml SHA1-Digest: FTO6xH/QnAy/MYvMir8FJKaoZLU= Name: res/drawable-xhdpi-v4/ic_check_light_disabled.png SHA1-Digest: MSOoGQ4W9IcDT9Zhqhv/G6fngNg= Name: res/drawable-xhdpi-v4/textfield_focused_holo_light.9.png SHA1-Digest: GTkseIIJxb2K4BmEEabgcA60SSU= Name: res/layout/color_preference_item.xml SHA1-Digest: B3xDRjQL8y7Jv067L35aCv3GdXA= Name: res/layout/transport_selection_list_item.xml SHA1-Digest: JBE1VfhklKRsjD2pKQh9o/ZtgMI= Name: res/drawable-mdpi-v4/actionbar_icon_holo_dark.png SHA1-Digest: VgvhFV/+fXGYj5+AC5e93lMt7mE= Name: res/drawable-hdpi-v4/abc_btn_switch_to_on_mtrl_00001.9.png SHA1-Digest: o6T1nENnpl79GnrVrE8AKfzN0kU= Name: res/drawable-xhdpi-v4/ic_menu_barcode.png SHA1-Digest: ZlAaKLTGj6XqaMQf223krzJLh74= Name: res/drawable/import_export_item_background_light.xml SHA1-Digest: I1I61lkLByy2qvkW9xYBLKTqUwQ= Name: res/drawable-xxhdpi-v4/ic_app_protection_black.png SHA1-Digest: IqZgSmpHE49sfbLTV6FwEMdEvYI= Name: res/drawable/emoji_category_flags_light.xml SHA1-Digest: mVgGk49YE3Kp0cMsfEDBXyh5PiA= Name: res/layout/abc_alert_dialog_material.xml SHA1-Digest: Duv2PX2Q+Op7FCLYmzQw1pedlJQ= Name: res/color/dialog_text_color_holo_dark.xml SHA1-Digest: j3TCt+8RhyKc5DagKQ/vROwHTJc= Name: res/drawable-hdpi-v4/ic_visibility_grey600_24dp.png SHA1-Digest: uYPGcx0wpMlrcYbzL5ePQwFwY0E= Name: res/layout-sw600dp-v13/three_keys_view_leftright.xml SHA1-Digest: ZK+ggUFpyjP9kHzkHRtbzP+F6O8= Name: res/anim/abc_popup_enter.xml SHA1-Digest: mW6OQN3tih7Y8FA4hLg0FHa+E8g= Name: res/layout/blocked_contacts_fragment.xml SHA1-Digest: uEHjf8i/Nf2x4YvNH554IW1UpDw= Name: res/drawable-mdpi-v4/abc_tab_indicator_mtrl_alpha.9.png SHA1-Digest: ToVo2KPSLrpwpzwqt2DA6d7KLWk= Name: res/drawable-hdpi-v4/abc_ic_star_half_black_16dp.png SHA1-Digest: 8ZyC0cv9tlgFMz8W119E8Qvb7w8= Name: res/drawable-xxhdpi-v4/splash_open_padlock.png SHA1-Digest: EH1IeP6nR4AaPoz61kEWmoqXy8E= Name: res/drawable-xxhdpi-v4/design_ic_visibility.png SHA1-Digest: 4Ss/5pyNfqZlcXdBZWunmqBPz5Q= Name: assets/zone.tab SHA1-Digest: DB2JMeHIQyU6vbJXRUlLcMwvciM= Name: res/drawable-hdpi-v4/notify_panel_notification_icon_bg.png SHA1-Digest: +WaWq164+JEgAS3SD7a6bgQZgMc= Name: res/layout-v16/conversation_list_item_view.xml SHA1-Digest: lSi6A/is5qvx5RlqAICR8SN1MIA= Name: res/layout/notification_template_custom_big.xml SHA1-Digest: D8hRNdml9Qrs+koitDmiY2HzYm8= Name: res/layout-sw600dp-v13/calendar_date_picker_dialog.xml SHA1-Digest: KCrT+yA0T8tZKWG7czg0px64l2Q= Name: res/drawable-v11/emoji_category_nature_dark.xml SHA1-Digest: eNALJxHkeZjrFhl5ynj1vPatWh0= Name: res/drawable-mdpi-v4/notification_bg_normal.9.png SHA1-Digest: g3zlZErALgEsgwbkgFIJpkkFLfo= Name: res/layout/centered_app_title.xml SHA1-Digest: yHdRO0YUJInlZSmzQZ/2onMkj6I= Name: res/drawable-xxhdpi-v4/abc_scrubber_track_mtrl_alpha.9.png SHA1-Digest: boG5dcozMnSrJdbSbLX0TBOMATU= Name: res/drawable-hdpi-v4/ic_info_outline_light.png SHA1-Digest: yTkqd9ICdFOI0MGJdKMgkmF2syI= Name: res/drawable-mdpi-v4/ic_block_white_18dp.png SHA1-Digest: v7Q72iINjgascz0t4CZkzcmzl30= Name: res/drawable-xxhdpi-v4/ic_info_outline_grey600_24dp.png SHA1-Digest: aENZGpvf0G9xhsxd0qM6dAdMHT0= Name: res/drawable-hdpi-v4/ic_recurrence_bubble_fill.png SHA1-Digest: qdJfmY6e/L7whGq87X7BrYEd1g4= Name: res/color/abc_primary_text_disable_only_material_dark.xml SHA1-Digest: PMhnRzfrwY1jlNfoIvzhOutdgIg= Name: res/drawable/info_round.xml SHA1-Digest: EQHFy9KXlVRBd3MTQYLkJoHhHec= Name: res/drawable-v21/avd_hide_password.xml SHA1-Digest: QqMO2alBCoD55pHulq7TEnfVdEc= Name: res/drawable-hdpi-v4/ic_launch_white_24dp.png SHA1-Digest: NVgYd/FTVz8kdW/gqkxE45/kXao= Name: res/drawable-mdpi-v4/ic_unarchive_white_36dp.png SHA1-Digest: Bmyc/kg5I3kT9pNIRpbW1ewggQ8= Name: res/drawable-xxxhdpi-v4/fab_shadow.png SHA1-Digest: 2OdUmLlQwfByiuOyfudiKjx+TzU= Name: res/anim/slide_from_top.xml SHA1-Digest: dpPiD0hLamwYer/Zh9GESUYkkl8= Name: res/drawable-mdpi-v4/ic_warning_dark.png SHA1-Digest: XELeit1UK1v2TSoxXA5W2ItV2p8= Name: res/drawable-hdpi-v4/ic_content_copy_light.png SHA1-Digest: m4WVZSa+cJwRcqkd9/78i6UHqls= Name: res/drawable-hdpi-v4/received_bubble.9.png SHA1-Digest: I12yNJInw7EAeJ+dan826X5qFys= Name: res/layout/keyboard_right_drawable.xml SHA1-Digest: WjmFFtlUJcq/Yu6n0ViwogbHXfo= Name: res/drawable-hdpi-v4/abc_list_pressed_holo_dark.9.png SHA1-Digest: 0zBo9Tp1wTO3RHYh5z1M+TUN+H8= Name: res/drawable-xhdpi-v4/ic_lock_white_24dp.png SHA1-Digest: KPi18fS0OO6gNsSD6NSIA7/qJ/0= Name: res/drawable-xhdpi-v4/ic_reply_white_36dp.png SHA1-Digest: n8qCbJdRiLbOJQKLtlmRaJe4C+4= Name: res/color-v11/abc_tint_default.xml SHA1-Digest: luVMp6CyIupPEeYKYuBDed8Oxeo= Name: res/xml/preferences_sms_mms.xml SHA1-Digest: HTAmLUbhkj/pNntmzSd72heNryA= Name: res/drawable-xhdpi-v4/abc_ic_menu_paste_mtrl_am_alpha.png SHA1-Digest: Pc4i3ShwZdpubjNQkH6pYtKd/fo= Name: res/drawable-mdpi-v4/ic_emoji_places_normal_dark.png SHA1-Digest: l3jpuQm48WQSKusaIIfI+iWnh7s= Name: res/drawable-xxhdpi-v4/ic_emoji_emoticons_normal_light.png SHA1-Digest: Xvvq6TlHGeCifYKafmHdp6JHTjs= Name: res/drawable-hdpi-v4/import_database.png SHA1-Digest: 9otw1PbLpHs7hylnm0vJ+UF5cDE= Name: res/drawable-sw600dp-xhdpi-v13/ic_backspace_disabled_dark.png SHA1-Digest: A9mermiNe0qduM6gxUjBYk7DkEU= Name: res/drawable-xhdpi-v4/ic_emoji_objects_normal_dark.png SHA1-Digest: YMEOl3+EnHVD+04WJgjLIXFrm6A= Name: res/drawable-xhdpi-v4/ic_app_protection_gray.png SHA1-Digest: /6PrYlU5CH9zIxTa9kmohiJ8Xmk= Name: res/drawable-hdpi-v4/ic_action_warning_red.png SHA1-Digest: M4Ki+A3MnsgSmiETmbzkaKBd0jY= Name: res/drawable-hdpi-v4/ic_info_outline_dark.png SHA1-Digest: NYBCWSND9m39u/8vziayfc01qDI= Name: res/drawable-hdpi-v4/ic_account_box_light.png SHA1-Digest: xx+Gzzcs1zzLeHYFn6HRmAj2v88= Name: res/drawable-hdpi-v4/ic_notifications_black.png SHA1-Digest: TugKLJ+BFDIZO0X3xAZztlvSsdo= Name: res/drawable-xxxhdpi-v11/icon_cached.png SHA1-Digest: 1YwCC2U/322ozak6+RBlTlTDUac= Name: res/drawable-mdpi-v4/fab_shadow.png SHA1-Digest: OSfdOYSWS2nNsDyeAGKqUW/NY3M= Name: res/drawable-xxhdpi-v4/switch_thumb_disabled_holo_light.9.png SHA1-Digest: iXB9Wp8Ev4e3k9Wg79Vv7yfO0fQ= Name: res/drawable-hdpi-v4/alert.png SHA1-Digest: k+gqwAY1F3AaClTmFDpa8cL1gDE= Name: res/drawable-hdpi-v4/ic_emoji_places_normal_light.png SHA1-Digest: g4NzbPe2I5wmoxSsOkoLHIDvFUY= Name: res/drawable-hdpi-v4/ic_reply_white_36dp.png SHA1-Digest: qG8B249RYqWmtpcR7dqP3lAuBR4= Name: res/drawable-xhdpi-v4/spinner_focused_holo_light.9.png SHA1-Digest: CGrl1FRXVxrvA14ueVH03Fn2em0= Name: res/drawable-xhdpi-v4/ic_create_white_24dp.png SHA1-Digest: 9l/Qnsghg6ESUm3rcMTUMtX/ESI= Name: res/drawable/conversation_list_item_read_background.xml SHA1-Digest: f5xdYCU0BaoUAhAzCv6IFIdB13o= Name: res/xml/preferences_appearance.xml SHA1-Digest: DRBO5iPjXkZYKyXOuof/dULm0xU= Name: res/drawable-xxhdpi-v4/abc_scrubber_primary_mtrl_alpha.9.png SHA1-Digest: /SHIbNyt1+Fo97bGAhsp65znrc4= Name: res/anim/abc_slide_out_top.xml SHA1-Digest: NM9nWh/XI2zag3rBwIXEqrpl9XA= Name: res/drawable-mdpi-v4/spinner_default_holo_light.9.png SHA1-Digest: s/npsTa4f6dHCangZu461npuSrQ= Name: res/color-v23/abc_tint_switch_thumb.xml SHA1-Digest: HPm3VkEuzmYKpgUXXHUspwEOEKk= Name: res/drawable-xxhdpi-v4/abc_ic_commit_search_api_mtrl_alpha.png SHA1-Digest: zkV9qOyIhi4vLRHjNhK5xl8gfkg= Name: res/color-v23/abc_tint_spinner.xml SHA1-Digest: X2/0Q6NoDfrYk6N/X7x1DbK4XK4= Name: res/drawable/design_bottom_navigation_item_background.xml SHA1-Digest: q/tAvUCKzH/tN0gPUEzccAp698k= Name: res/layout-v11/notification_template_big_media_custom.xml SHA1-Digest: KX1rENjUs85+ejNOUAYAl9Z7p7A= Name: res/drawable-v21/conversation_list_item_read_background.xml SHA1-Digest: lHqCczv9TdFvutPUbZ0CbjrHBe4= Name: res/drawable-mdpi-v4/ic_delete_black.png SHA1-Digest: A3F3BoFKYkG+kiaML4IoSYKbALI= Name: res/layout/conversation_list_fragment.xml SHA1-Digest: uH0eyxy/wXwDnv6FtjMMPSPj9Io= Name: res/drawable-xhdpi-v4/ic_notifications_black.png SHA1-Digest: OqKoWA5XngcH3MzOC07wT6/DgGc= Name: res/raw/whisper.store SHA1-Digest: XHW+g7lvAC9+4Celnl0Js28aCVo= Name: res/drawable-hdpi-v4/ic_emoji_recents_activated_dark.png SHA1-Digest: rUvpBOhj8S4eylPNtFccUQBNN1w= Name: res/anim/fade_scale_out.xml SHA1-Digest: Uir4/KEtcVOVxHtCmwcmNzM0Nnc= Name: res/drawable-xxhdpi-v4/ic_video_light.png SHA1-Digest: RYbv/stsAv9oTONUojTZJIztUpI= Name: res/drawable-hdpi-v4/ic_reply.png SHA1-Digest: yW8DB5L+UjcqFxvPb5iuS/mfNH8= Name: res/drawable-xhdpi-v4/ic_image_light.png SHA1-Digest: YHBTbc/9heYP6RqeLq9sXyJW6FY= Name: res/drawable-xxhdpi-v4/abc_textfield_default_mtrl_alpha.9.png SHA1-Digest: sNds9Ym0phYx3ALXo+MZX8xlc30= Name: res/drawable/conversation_item_header_background_dark.xml SHA1-Digest: 3zJGQhq7efNb8O1pcgs6FzHcZtw= Name: res/drawable/emoji_category_recent_dark.xml SHA1-Digest: eAK1NEcV0fHAEgwtw+fTu9BiJEg= Name: res/drawable-ldrtl-xhdpi-v17/abc_spinner_mtrl_am_alpha.9.png SHA1-Digest: P6e0iLoIQdVv5zYT47sluTSi/8U= Name: res/drawable-xxhdpi-v4/ic_emoji_symbols_normal_light.png SHA1-Digest: K1eqzy0NhAiQODx1UHyyoWU91Ds= Name: res/drawable-mdpi-v4/ic_forum_black_32dp.png SHA1-Digest: MnNIINOWIvcaYHrGk2rfw+yAVPA= Name: res/drawable-xxhdpi-v4/ic_lock_white_24dp.png SHA1-Digest: VdAOsL1D5/ItORL6K7CcwYggixM= Name: res/drawable-hdpi-v4/ic_contact_picture.png SHA1-Digest: gPwXrikYXs+yK3bZyZgFtAIDmmg= Name: res/drawable-mdpi-v4/ic_textsms_black_32dp.png SHA1-Digest: R83rBBoEwhhrp/iegHs2AvJtM6s= Name: res/drawable-hdpi-v4/ic_push_registration_reminder.png SHA1-Digest: dcBXqXnBBxTTh7oHuIxfc8KfTCk= Name: res/drawable-mdpi-v4/abc_ic_menu_paste_mtrl_am_alpha.png SHA1-Digest: fNoEDfJ2jcrqTWkxek2nAJgdC58= Name: res/drawable-xxhdpi-v4/spinner_pressed_holo_light.9.png SHA1-Digest: y35Cc9pdVLFODoXVqOPGVcSrZMs= Name: res/drawable/design_password_eye.xml SHA1-Digest: Ip+zp9WKcMYKDC/1FcIw9dGmhd0= Name: res/drawable-xxxhdpi-v4/ic_clear_white_24dp.png SHA1-Digest: 1bagW7s760FgyC2CyUuCe5/ziv4= Name: res/menu/media_preview.xml SHA1-Digest: fOX7zZBM/ljHhjRMGFudzioNsi4= Name: res/drawable-mdpi-v4/ic_emoji_emoticons_activated_light.png SHA1-Digest: E5wir/v8hkd9E5NTh9HqVC1BD+8= Name: res/drawable-mdpi-v4/switch_thumb_pressed_holo_light.9.png SHA1-Digest: VyxRoouO+Z7ITDC+bYAPridmWf4= Name: res/drawable-xxhdpi-v4/ic_scroll_down.png SHA1-Digest: ZcDqoZMsXZUUwEEg0N6+uWPRkJk= Name: res/drawable-hdpi-v4/ic_group_white_24dp.png SHA1-Digest: Ni/4uzTNcVuC9JFCauz6cg4390Y= Name: res/layout-v21/message_details_header.xml SHA1-Digest: gLk3IyEea/JbEnQK2ANAzT7EO0E= Name: res/drawable-hdpi-v4/abc_list_pressed_holo_light.9.png SHA1-Digest: +pi/Z1BDTC/eHcG86xxdoFAyukA= Name: res/drawable/abc_ratingbar_small_material.xml SHA1-Digest: /P2KXIWbMuyOgftOHbBQa8ym+uI= Name: res/drawable-xxhdpi-v4/abc_text_select_handle_right_mtrl_light.p ng SHA1-Digest: 2fShoeavJczbLrecvbStdNRWHBc= Name: res/drawable-mdpi-v4/abc_text_select_handle_middle_mtrl_light.pn g SHA1-Digest: IsZBJs79BBpAphfuhFcivjA1NpU= Name: res/drawable-xxhdpi-v11/icon_notification.png SHA1-Digest: yQfuhwUNRxNDirhNEoeb9xni0wo= Name: res/drawable-mdpi-v4/ic_menu_remove_holo_light.png SHA1-Digest: 5ird1K8096LmheKRN4rsyxZFjDw= Name: res/layout/abc_activity_chooser_view_list_item.xml SHA1-Digest: /DgA41m5NJLrwrcDEmzvCS9O1yw= Name: res/drawable-xxxhdpi-v4/abc_ic_menu_paste_mtrl_am_alpha.png SHA1-Digest: ZcL++/zGOpiMrBK+00MCCJiYQ3Q= Name: res/color/text_color_dark_theme.xml SHA1-Digest: pR2obPIva/G2jowyPfTM8RXmLeU= Name: res/drawable-xhdpi-v4/abc_textfield_search_default_mtrl_alpha.9. png SHA1-Digest: P2nXckVhoat9mgVUXkNB8jHu5sU= Name: res/drawable-xhdpi-v4/ic_emoji_symbols_normal_light.png SHA1-Digest: cTSoOzJv61D89v2GDVBHmByVH3s= Name: res/drawable-mdpi-v4/ic_badge_24dp.png SHA1-Digest: gnFSqIT+E5kIsh+Br09jRekEuaY= Name: res/drawable-xxhdpi-v4/ic_delete_black.png SHA1-Digest: MNYVDUN/Gt9+uDpcHLyR88U2rFE= Name: res/drawable-xxhdpi-v4/ic_reply_white_36dp.png SHA1-Digest: R4DMczvl55BvJN5JeI+Brs0gsdY= Name: res/drawable-mdpi-v4/abc_btn_radio_to_on_mtrl_000.png SHA1-Digest: XS4QSKcuwFMyWTP/Zt+tOFsl9ak= Name: res/drawable-xxxhdpi-v4/ic_circle_fill_white_48dp.png SHA1-Digest: rISqysqox9AU2cIf7NlrhI8t5tM= Name: res/drawable-xhdpi-v4/dialog_full_holo_light.9.png SHA1-Digest: Dz8isbAUH34hYBe1HIB8PQUSGO4= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_972 SHA1-Digest: wAYIltvc6+i6ruNDh7sN4H7KQtQ= Name: res/layout-v16/audio_view.xml SHA1-Digest: B4R1LyV+PN0MHQruAVIKwxhSMEY= Name: res/drawable-v21/design_bottom_navigation_item_background.xml SHA1-Digest: 2jtUIzAVfdNNdYjQbhXKGtwbJK0= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_971 SHA1-Digest: hXcyXUcpEkkPh5oyJGLDlCa0gj4= Name: res/drawable/conversation_list_divider_shape_dark.xml SHA1-Digest: ktw2iwGSzvnpAHSYqkCzwAl1IDc= Name: res/layout-v22/abc_alert_dialog_button_bar_material.xml SHA1-Digest: 9PCUgjPrwCbXRSWb3dRs7CNBrME= Name: res/drawable-xxhdpi-v4/abc_btn_switch_to_on_mtrl_00012.9.png SHA1-Digest: IG999C1958jP76m6s0v2EDG8eAk= Name: res/layout/push_recipients_panel.xml SHA1-Digest: 2jGWKD1zuA9OasOhzoeRBstw/gs= Name: res/layout/blocked_contact_list_item.xml SHA1-Digest: CaLC/vO/gBnjCuEBJxMq3Q5IWbE= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_595 SHA1-Digest: jBKKEzLak9mybfD0suOcI3/gILA= Name: res/drawable/emoji_category_symbol_light.xml SHA1-Digest: V7rs1fShvGaZC0DqybpyHQ7R8zs= Name: res/drawable-hdpi-v4/ic_emoji_emoticons_normal_dark.png SHA1-Digest: FtvuHhnn2rWRI1W4eDnkGxOW7mI= Name: res/drawable-xxhdpi-v4/abc_list_pressed_holo_dark.9.png SHA1-Digest: LdyLROvWFgig9Vsgsaypd9fZOJY= Name: res/drawable-xhdpi-v4/ic_emoji_nature_activated_light.png SHA1-Digest: srXdxRF7zmsNW2/pq9U8k9+Fp0g= Name: res/drawable-xhdpi-v4/icon_cached.png SHA1-Digest: JuqwHlsBI7MPpbHGQKe1oTsXs/8= Name: res/drawable-hdpi-v4/switch_bg_disabled_holo_light.9.png SHA1-Digest: 8JhypYeb6T5pv+9W/UUzEOwHvyI= Name: res/drawable-mdpi-v4/ic_emoji_nature_normal_dark.png SHA1-Digest: nHzm3ieSQiM3OHi93coXGldH6c8= Name: res/drawable/ic_backspace_light.xml SHA1-Digest: SXT6/wR3ZvR4BpzLlepVtpYeEbg= Name: res/drawable-xhdpi-v4/ic_forum_black_32dp.png SHA1-Digest: wxl+jLneFHgHmn5j2hd4PPtxw0E= Name: res/drawable-hdpi-v4/ic_emoji_places_activated_light.png SHA1-Digest: sTP5McVyAvCYWJ9qwSR1qGkfkqM= Name: res/drawable-hdpi-v4/abc_ic_commit_search_api_mtrl_alpha.png SHA1-Digest: o7+2UpUxcOZYQ4J4x3i56OSAwrs= Name: res/drawable/rounded_rectangle.xml SHA1-Digest: SLpT6+Ji9tdT8wIJFuZ4ixlh0iY= Name: res/drawable-xhdpi-v4/ic_lock_white_18dp.png SHA1-Digest: Oby0J/jOXhF12uk0Zoy11OxxTdY= Name: res/drawable-hdpi-v4/lockscreen_watermark_light.png SHA1-Digest: AXK2KP2ApxC2Z2yzuty9it93QuI= Name: res/layout/conversation_activity_attachment_editor_stub.xml SHA1-Digest: elQymJQ2LcmEQwG1CIaQbQUK270= Name: res/drawable-hdpi-v4/ic_lock_light.png SHA1-Digest: 6xsBKtq/dlPGkcu4hdJHkMAQhd8= Name: res/drawable-xhdpi-v4/ic_forum_grey_32dp.png SHA1-Digest: YmNZAvF1dw49FR+n3p2+UEasp5E= Name: res/layout/color_fragment.xml SHA1-Digest: R48hoN017xeVcNLmubDVpBqNrl8= Name: res/drawable/widget_unread_count_background.xml SHA1-Digest: 1176myGDj2tXsvH5TzAG82aondY= Name: res/drawable-xxxhdpi-v4/abc_tab_indicator_mtrl_alpha.9.png SHA1-Digest: 3fhmc4V2nmgfmXePbvfRvhgIwJY= Name: res/drawable-v21/circle_touch_highlight_background.xml SHA1-Digest: o2UQBTWYlJ9QXTjKaXy9nlvVkd0= Name: res/layout-v21/recipient_preference_activity.xml SHA1-Digest: 9yFPBf2+N+0/IgrEZT9d7AG7VvI= Name: res/drawable-mdpi-v19/switch_thumb_pressed_holo_light.9.png SHA1-Digest: CFRP5NlSZZOns7feha7lGxerPGg= Name: res/drawable-xxhdpi-v4/ic_video_dark.png SHA1-Digest: h2fDFLYAXstx7xbgiUFoiVTCyQk= Name: res/drawable-xxxhdpi-v4/icon.png SHA1-Digest: WtQHPcTXiUt+2Q8CVkBaKIpO47M= Name: res/drawable-xxxhdpi-v4/abc_scrubber_control_to_pressed_mtrl_005 .png SHA1-Digest: ihH9NNjybEcS1mrq0UNzdyMwkLM= Name: res/drawable-ldrtl-hdpi-v17/ic_send_white_24dp.png SHA1-Digest: HIyXGcfdgw5bBXdBaJ6Mw8gbJlc= Name: res/drawable/emoji_category_objects_dark.xml SHA1-Digest: xmZDgPBPRHkIReRRxihiLYLA1ak= Name: res/drawable-xxxhdpi-v4/ic_archive_white_48dp.png SHA1-Digest: +b2FPCB/qYlbwGosHhZSn/gq1hk= Name: res/drawable-xxhdpi-v4/fab_shadow_mini.png SHA1-Digest: oBYy1KBTteK/1XvroCshzukQ3rg= Name: res/layout/conversation_item_received_audio.xml SHA1-Digest: wmLTxioffAsJsb4h8fuhcIGuG7Y= Name: res/drawable-mdpi-v4/sent_bubble.9.png SHA1-Digest: oWvWoFrpRQdCV4lAcWNy0a6DydY= Name: res/drawable-xxhdpi-v4/ic_attach_white_24dp.png SHA1-Digest: 7SvJje1R/bzW2htsBKRw0unxWCs= Name: res/drawable/compose_background.xml SHA1-Digest: 77YF5OthBZArbShPc+i58Aql40g= Name: res/drawable-mdpi-v4/ic_content_copy_dark.png SHA1-Digest: EiNHa+nhPyWGj0gC2+oLnBXhcxw= Name: res/layout/date_picker_view.xml SHA1-Digest: AtS3nascwyJBVE+H4vD2IN7fi7o= Name: res/drawable-mdpi-v4/dialog_full_holo_dark.9.png SHA1-Digest: q3ptg6feoBdTrvEzjNt9NgzKcHM= Name: res/drawable-mdpi-v4/ic_emoji_recents_normal_dark.png SHA1-Digest: aXPZFvyR6dEDTGYuXzmdiwTTM4s= Name: res/drawable-hdpi-v4/abc_btn_check_to_on_mtrl_015.png SHA1-Digest: zeU1JSNmPm7v39XNkaEkis5yDOQ= Name: res/drawable-mdpi-v4/abc_ic_star_half_black_36dp.png SHA1-Digest: Ql4KDXZpZ5PFXDlF3miVqQ8Z5DA= Name: res/drawable-mdpi-v4/divet_lower_right_dark.png SHA1-Digest: j/2GkVcY+hoTFH44wDfwNjcB4DM= Name: res/drawable-xxhdpi-v4/ic_image_light.png SHA1-Digest: vhhilPVoXIJw10WfMfgAz/q30E0= Name: res/menu/contact_selection.xml SHA1-Digest: BPAWUA3FKzBZVyeDk6rz7ZTVj6U= Name: res/drawable-xhdpi-v4/ic_menu_search_holo_dark.png SHA1-Digest: gdLsJp9wkONi0h1ARQRCjjgfXIg= Name: res/color/abc_tint_switch_thumb.xml SHA1-Digest: 6XjG56K16rD+RUsRUBNur2NAk1A= Name: res/drawable-hdpi-v4/dialog_full_holo_dark.9.png SHA1-Digest: gYRi3qcewvv4DpgH7WRa5oontHM= Name: res/drawable-hdpi-v4/ic_backspace_disabled_light.png SHA1-Digest: 4DrNtujXsHOnOZbH5z3nT9s2ZZs= Name: res/drawable-xxhdpi-v4/ic_reply.png SHA1-Digest: qG0hBkDSQm7dAysBPD1VzEHexIE= Name: res/drawable-xxhdpi-v4/ic_send_insecure_white_24dp.png SHA1-Digest: ZxJY268JNqO/9atssu9hBquS+pc= Name: res/drawable-hdpi-v4/ic_message_white.png SHA1-Digest: IgwqNHZrN/XeY8WZvNKXVAD40QI= Name: res/drawable-hdpi-v4/abc_scrubber_control_to_pressed_mtrl_005.pn g SHA1-Digest: uMxaAPN53ynLGvBOkqlsfufYJEY= Name: res/layout-v17/abc_popup_menu_header_item_layout.xml SHA1-Digest: TLtuMry21yP1ZaUx8BGqmrhC+4A= Name: res/layout-v17/notification_action.xml SHA1-Digest: HZT619G5p+wXxhjri4eaIpvZo1Y= Name: res/drawable/background_pane.9.png SHA1-Digest: DebSplvlRk4ibCyCE6fVr4Rye5w= Name: res/layout-v16/conversation_item_received.xml SHA1-Digest: cbsB8+EW605eLAe9v+hToLruFl0= Name: res/drawable-xhdpi-v4/ic_arrow_forward_light.png SHA1-Digest: FwHQb1/0kv+VMlsrHkrzqvVHIyc= Name: res/drawable/emoji_category_people_light.xml SHA1-Digest: CFjiHrhvyZtBoOrjP6LotQu2o8I= Name: res/layout/notification_template_media_custom.xml SHA1-Digest: aAiITkLuFWAAa6RLNuhXTyKbze0= Name: res/drawable-xxhdpi-v4/ic_error_red_18dp.png SHA1-Digest: 4/XTIknpEfHwIgBUeiE09u75i9c= Name: res/drawable-xhdpi-v4/ic_forward_white_24dp.png SHA1-Digest: lBhMg7uuAL2TsIpM5wQxqtqz1yI= Name: res/drawable-xxhdpi-v4/ic_keyboard_white_24dp.png SHA1-Digest: //m/4n5G6FBA7MbrhujVAHgUTjs= Name: res/drawable-xhdpi-v4/ic_message_black.png SHA1-Digest: C7LJDa4aEbvOPOxhDwvHcnBLuUU= Name: res/drawable/emoji_category_recent_light.xml SHA1-Digest: sqTG5bnucpspdMl+YKAO73VvcAE= Name: res/drawable-xxhdpi-v4/ic_app_protection_gray.png SHA1-Digest: wd1wvXlTsp+e/0GVz7YL52iYnt4= Name: res/anim-v21/design_bottom_sheet_slide_in.xml SHA1-Digest: P5+oT0+JVe2tOF/nHLy58E5nCQg= Name: res/drawable-xhdpi-v4/list_selected_holo_light.9.png SHA1-Digest: U9jUfNg6H8NNFEsehvr9ue8J/zc= Name: res/drawable-xhdpi-v4/ic_send_insecure_white_24dp.png SHA1-Digest: BjmpEJVy1wBNO+c6Sh+AygI1M7c= Name: res/drawable-hdpi-v4/abc_menu_hardkey_panel_mtrl_mult.9.png SHA1-Digest: Eh+ZTEk9nWC3r6F65kTTCqFuv/0= Name: res/drawable-xhdpi-v4/notification_bg_normal_pressed.9.png SHA1-Digest: R13cV9f14qtyCUzpc/FGqOIcssU= Name: res/drawable-xxxhdpi-v4/ic_scroll_down.png SHA1-Digest: uTdB/76suYhkMGS09Fb5rYUx/u0= Name: res/drawable-xxxhdpi-v4/abc_text_select_handle_left_mtrl_light.p ng SHA1-Digest: g4xmf1zIMEOQxLCN5PJ4U0Uk9uc= Name: res/drawable-mdpi-v4/ic_app_protection_black.png SHA1-Digest: YYlTW8ijNJvUYMwoi6Bils3c7ps= Name: res/drawable-xxhdpi-v4/ic_error_white_18dp.png SHA1-Digest: G9twTPy0ao8j5wNFULY3l1ZJPTU= Name: res/drawable-xxhdpi-v4/ic_content_copy_light.png SHA1-Digest: 1uiDQ/MALB8aE//rdO7zcVmPiaA= Name: res/layout/abc_screen_toolbar.xml SHA1-Digest: Rsk+wUgGh3cQxMiDvRqTgBypnUE= Name: res/drawable-xxhdpi-v4/abc_ic_star_half_black_48dp.png SHA1-Digest: kXuE8rc+VUrWq1VBZznOulaTh2g= Name: res/layout/database_upgrade_activity.xml SHA1-Digest: rL6MNoPR3el/9nr/O35nh8wq07w= Name: res/drawable-v11/emoji_category_symbol_dark.xml SHA1-Digest: R05URkn92Ah2uD+XESV+rMC8oq8= Name: res/drawable-mdpi-v4/ic_download_circle_fill_white_48dp.png SHA1-Digest: lWCsGRplQ/8lYectnUFCcWs4Uuc= Name: res/drawable-xxxhdpi-v4/abc_spinner_mtrl_am_alpha.9.png SHA1-Digest: hlPg0mO16g5nYlkb2LmahKOZAG8= Name: res/drawable-xhdpi-v4/ic_select_all_white_24dp.png SHA1-Digest: ZI18NdfQH1mcaGkRA9XM9EVMq1M= Name: res/drawable-xhdpi-v4/switch_bg_disabled_holo_light.9.png SHA1-Digest: R8GV7kb6QAwT3efgJTdnB9VOJAo= Name: res/layout/transfer_controls_view.xml SHA1-Digest: I8RMTIKmQOzTY3MNCUDaSiq0Z4w= Name: res/drawable-xhdpi-v4/icon.png SHA1-Digest: ZX0Na7vYQj2M/TBdj+eQoSk7YR8= Name: res/drawable-mdpi-v4/sms_system_import_icon.png SHA1-Digest: UTztdlNiwCPOus9KMOoPzE8U8eI= Name: res/drawable-xxhdpi-v4/abc_text_select_handle_left_mtrl_light.pn g SHA1-Digest: dTW+TBt3P2ZDHiurAQlmTb3QAuc= Name: res/anim/slide_from_right.xml SHA1-Digest: TfPszWadpReLtTNx99WycfoyUO4= Name: res/drawable-mdpi-v4/ic_emoji_places_normal_light.png SHA1-Digest: c14K5X5vUSiK8A+vXcWcLhsJFeY= Name: res/drawable-xxhdpi-v4/switch_thumb_pressed_holo_light.9.png SHA1-Digest: i+IZCPf+mTAbIWLZMAie5xMxUZ0= Name: res/drawable-mdpi-v4/textfield_default_holo_light.9.png SHA1-Digest: HHVoeIoiPaZGrfV/J675mX9mKZE= Name: res/layout/design_layout_snackbar.xml SHA1-Digest: 9Td2r2BXeaOLyxj36W5GtBQQHX8= Name: res/layout-v17/export_fragment.xml SHA1-Digest: uBKGKpWuKPDpVUYf+T5f9RYou4I= Name: res/drawable-hdpi-v4/ic_menu_add_field_holo_light.png SHA1-Digest: 2TfxfYx1ixLVxj6ZQADjYFv3XqQ= Name: res/drawable-xxhdpi-v4/ic_unlocked_white_24dp.png SHA1-Digest: tKD7bJUASCeM+QFUcF+GJcbYNpo= Name: res/layout/reminder_header.xml SHA1-Digest: GBOEd5G8AKVMWM3wGZZU7a6B8O8= Name: res/drawable-xxhdpi-v4/ic_send_push.png SHA1-Digest: Qh+qDzj+m3I8RG1NHZdesZuA/0Y= Name: res/drawable-mdpi-v4/ic_emoji_people_normal_light.png SHA1-Digest: 6Bv0SGIXD5AN9PJr00X2y3ipc7Y= Name: res/drawable-xxhdpi-v4/ic_image_dark.png SHA1-Digest: tmxPWgeZj3+N0xIj8vNZb01aod8= Name: res/drawable-xhdpi-v4/ic_done_white_18dp.png SHA1-Digest: qd1giIR7/BAdurQ26Vj4iyghuD0= Name: res/drawable-xxhdpi-v4/list_longpressed_holo_light.9.png SHA1-Digest: CBiyFOEOkN4G8LwWwkREd/FYJhs= Name: res/drawable-hdpi-v4/notification_bg_low_normal.9.png SHA1-Digest: cZq9c0ns0DMcrd6DYpvD35Sj9Q0= Name: res/drawable-xhdpi-v4/ic_download_circle_fill_white_48dp.png SHA1-Digest: nwZ2f7lDQzw+7Jrc2oyk8h38Zlw= Name: res/drawable-xxhdpi-v4/ic_send_sms_secure.png SHA1-Digest: Uv+tmwIFjiRqwMHnsGdsneBKHek= Name: res/drawable-hdpi-v4/abc_btn_radio_to_on_mtrl_015.png SHA1-Digest: 9BhkClp5dEf9SiNlkJTeUiPUGSo= Name: res/drawable/abc_list_selector_background_transition_holo_light. xml SHA1-Digest: GmT6IMAyeHMrj3HfwELKNXx7GjY= Name: res/drawable-xhdpi-v4/ic_arrow_forward_dark.png SHA1-Digest: utEb2enp9ebHHkI2x3Bwiti0gHk= Name: res/layout/recurrencepicker_freq_item.xml SHA1-Digest: /bPgQHwiLQ9Sj/1Q05VTg6GbZ0s= Name: res/drawable-xhdpi-v4/notification_bg_low_normal.9.png SHA1-Digest: SAWMxhraPrV6SXLtk3Qi4BJou40= Name: res/drawable-mdpi-v4/abc_text_select_handle_left_mtrl_dark.png SHA1-Digest: k4RjcVv0axodcYtXz1im5Yqlkxo= Name: res/drawable-hdpi-v4/ic_content_copy_dark.png SHA1-Digest: ys94tVvvZkfW+lyZuguDWocDf+E= Name: res/layout-v17/notification_template_big_media_narrow.xml SHA1-Digest: Fk2nZNget2CoihxhqQPC8OhQqjA= Name: res/drawable-mdpi-v4/ic_volume_up_dark.png SHA1-Digest: IUGVAnqQbPJ3mBqkEjDNZxObb0s= Name: res/drawable-mdpi-v4/ic_volume_off_white_18dp.png SHA1-Digest: 6m960Tsqk6ehOSk4ZX0ELHr5q7w= Name: res/drawable-xhdpi-v4/ic_audio_dark.png SHA1-Digest: Xcsn7AYq4zZ2cUnPpjkHLg4+zBE= Name: res/color/abc_primary_text_material_dark.xml SHA1-Digest: oHZ5jco2WyPUASIcKjDwdNuqMsQ= Name: res/drawable-hdpi-v4/abc_scrubber_primary_mtrl_alpha.9.png SHA1-Digest: QT06M8jIu5PbB6orRZr5qtxv3oI= Name: res/layout/notification_template_media.xml SHA1-Digest: jOsIQ3hR78h017hqQi0gPfxMzkA= Name: res/drawable-xhdpi-v4/list_focused_holo.9.png SHA1-Digest: OMRGZ9NZcF46RZNFPM1PA5UDfDk= Name: res/drawable-xhdpi-v4/ic_emoji_places_normal_dark.png SHA1-Digest: xIUT2cYzPVsHZ1uWdjqvDm5VgEU= Name: res/drawable-hdpi-v4/list_selector_background_selected.9.png SHA1-Digest: hwr6dZUS/iDuJ78l2mF0/dfJL+8= Name: res/drawable-xxhdpi-v4/transfer_controls_background.9.png SHA1-Digest: j7LzaIHFeP182GCKU70DBB8X2+Q= Name: res/drawable-hdpi-v4/ic_call_split_white_24dp.png SHA1-Digest: tFTy8mgFHCjTf1q4a4uHGHBLFds= Name: res/layout-v13/select_dialog_singlechoice_material.xml SHA1-Digest: Yb6SWeDe01r7nK02f9+TLBlVMcU= Name: res/layout-v17/notification_template_custom_big.xml SHA1-Digest: G4b1e/mdGTs1PGLxC2sGKae1ejg= Name: res/drawable/conversation_item_sent_indicator_text_shape_dark.xm l SHA1-Digest: wrHIuc38MrDLiUImGUAlWDTWVoY= Name: res/drawable-hdpi-v4/abc_text_select_handle_middle_mtrl_light.pn g SHA1-Digest: UrzeEED9vrKPkwN3GrI1ylsIFuA= Name: res/drawable-xxhdpi-v4/abc_ic_star_half_black_36dp.png SHA1-Digest: Yf0xjUFhN6YR8IMpV2zk0K2xzhE= Name: res/color/abc_tint_switch_track.xml SHA1-Digest: vVHnK21A9Mg9yvzqb69+lOoo4jA= Name: res/drawable-xxxhdpi-v4/ic_send_insecure_white_24dp.png SHA1-Digest: 59SBcPoQcl+MHHIBe2/jSRqjqJA= Name: res/drawable-mdpi-v4/telephone.png SHA1-Digest: XXO2Fhva42p/Gm3ltGeWU8qwAJY= Name: res/drawable-mdpi-v4/ic_save_all_white_24dp.png SHA1-Digest: 3sA7d4yR0C3cAnFK+KE20ix4YEM= Name: res/layout-v21/notification_action.xml SHA1-Digest: ARX2L+8GodSYDBTJEFEWaVfJjOQ= Name: res/drawable/navigation_empty_icon.xml SHA1-Digest: NnWYc105PNs86W5i6nWhSR7zVNs= Name: res/drawable-xxhdpi-v4/abc_btn_switch_to_on_mtrl_00001.9.png SHA1-Digest: pekxWTKwrzIagiU2Ssj+otR4tkc= Name: res/drawable-xhdpi-v4/ic_emoji_recents_activated_dark.png SHA1-Digest: jjdYBmUugs3Tk1VIJ0TSpMA8AP4= Name: res/drawable-xxhdpi-v4/sent_bubble.9.png SHA1-Digest: KdAs5emUzdEgIGy2K1/+aDjasdE= Name: res/drawable/switch_track_holo_light.xml SHA1-Digest: AjCjiobmxUpXAbj/hs7BwEilUHc= Name: res/drawable-xxhdpi-v4/abc_ic_menu_cut_mtrl_alpha.png SHA1-Digest: 396cLFH6GmIk+fmw4WU+kcdHCHo= Name: res/drawable-hdpi-v4/ic_emoji_emoticons_normal_light.png SHA1-Digest: 62CMvfSEQQgcBGH4682D4vHVUCo= Name: res/layout/abc_activity_chooser_view.xml SHA1-Digest: t8SNZCpxzOjFOaLI66GA4qvdQq4= Name: res/drawable-mdpi-v11/icon_cached.png SHA1-Digest: cvYOUo32nLmnfiJVHyijYXqpToI= Name: res/drawable-xhdpi-v4/abc_ic_menu_share_mtrl_alpha.png SHA1-Digest: yIiP4Gy0mn3DHVTS9m4D1uLmr6U= Name: res/drawable-xxhdpi-v4/ic_menu_search_holo_light.png SHA1-Digest: l0Kga/HF7gV0KQUMmD0RjUjp4rQ= Name: res/menu/key_scanning.xml SHA1-Digest: loeijMiaLCWeBEo9xiY+e1FGiPM= Name: res/layout-v16/conversation_item_sent.xml SHA1-Digest: P+T7bQeZyVjHk6c5iXcCT0vC+bI= Name: res/drawable-hdpi-v4/ic_emoji_nature_normal_dark.png SHA1-Digest: RRavhILeQiOlyTcq78HU79sw1P4= Name: res/layout-v17/notification_template_big_media_custom.xml SHA1-Digest: uUmG0smYBsEQ28ifQcPFFbFm66I= Name: res/drawable-xhdpi-v4/ic_mood_white_24dp.png SHA1-Digest: IYAUb6e9a3LcyUnsSzM7yHj3ITw= Name: res/layout/media_view_remove_button.xml SHA1-Digest: UTuCQxMaWihUkbRE3VjO4AgIWi0= Name: res/drawable/conversation_attachment_close_circle.xml SHA1-Digest: wT4qc1C3F6xw0uBUEE38D0Eh7A0= Name: res/drawable-hdpi-v4/ic_push_gray.png SHA1-Digest: JoLOR2nABDcMsPnqne437AXo5yE= Name: res/animator/bottom_pause_to_play_animation.xml SHA1-Digest: sGztQN6FsfBHdy/lArM6hyYwIhI= Name: res/drawable-xhdpi-v4/ic_emoji_emoticons_normal_light.png SHA1-Digest: +Old9N2rLprS7oZW6xLg/meIxww= Name: res/drawable-xxhdpi-v4/switch_bg_focused_holo_light.9.png SHA1-Digest: pvzTB0cC/y6EDmF11VDkkGTsOqk= Name: res/layout/empty2.xml SHA1-Digest: IM3rg1Lz0mEteG8vDVjHrpIkzV0= Name: res/layout/design_menu_item_action_area.xml SHA1-Digest: MAjBXF+TiqbN8ABwvCY22FbLaDM= Name: res/drawable-v11/emoji_category_symbol_light.xml SHA1-Digest: TykgFRJ+5KR1Q9rSNbPwsAegWu8= Name: res/layout-land/calendar_date_picker_dialog.xml SHA1-Digest: tb8TxI+kAHvBJry4Ghw9tAXiPxU= Name: res/drawable/ic_backspace_dark.xml SHA1-Digest: BT434abXhMMPnT3sQbuMrtXn6yE= Name: res/color/abc_tint_spinner.xml SHA1-Digest: tDeuAW8Dun0MkfNI/9LHZ3ZFXuI= Name: res/color-v23/abc_tint_btn_checkable.xml SHA1-Digest: 74/2TZdO684fYS/kzfIxIDh0yVc= Name: res/layout/keyboard_right_drawable_with_header.xml SHA1-Digest: Yatfi7l8YS8INf3wfF2NE3OVBow= Name: AndroidManifest.xml SHA1-Digest: yEqnaWsY+ffai3NpIX8t+cW0GRQ= Name: res/drawable-xxxhdpi-v4/ic_reply_white_36dp.png SHA1-Digest: Y4QTK9oU2ML5dRCfNCdOATIDujg= Name: res/drawable-hdpi-v9/icon_notification.png SHA1-Digest: k3ZlgFUY9RiM+5WNMCj0169Vlgc= Name: res/drawable-xhdpi-v4/sent_bubble.9.png SHA1-Digest: PpPeKJZDE+OFnELluMlghGwM1wY= Name: res/drawable-mdpi-v4/list_selector_background_selected.9.png SHA1-Digest: //pjb3Hl60ZanslZW59fxT/C/gg= Name: res/layout/fragment_submit_log.xml SHA1-Digest: hw6soqKamGiIiqb8sqEvUA2tGgU= Name: res/drawable-mdpi-v4/ic_lock_white_24dp.png SHA1-Digest: 9pbZC7NMhOv75QatAANgs5HBSpA= Name: res/drawable-xhdpi-v4/textfield_disabled_holo_light.9.png SHA1-Digest: u+PyBkFnG5V7GBXX1PAbySEqGP4= Name: res/drawable-mdpi-v4/ic_push_gray.png SHA1-Digest: g+vrd4PU18sQ/Z//9zh2tXDQ9nw= Name: res/color/abc_tint_default.xml SHA1-Digest: KX2YED2uqRthphmAhA6odjSt14g= Name: res/drawable/pause_to_play_animation.xml SHA1-Digest: WCcSuzMqsw/4vaNlj3OkwpjVTBo= Name: res/drawable-xxhdpi-v4/ic_create_white_24dp.png SHA1-Digest: tpDx7GyBvnabfQ3361ZHAOEVAIs= Name: lib/mips/libcurve25519.so SHA1-Digest: CufGtSWo6HZ8M6DWgtf0VYskkGg= Name: res/drawable-hdpi-v4/ic_attach_white_24dp.png SHA1-Digest: YJYWi1bI9IdyPhe7ZT5nEf7VehU= Name: res/drawable-mdpi-v4/ic_emoji_recents_normal_light.png SHA1-Digest: nb1zA7N7vLrBxBHe5faIc24dTMg= Name: res/drawable/touch_highlight_background.xml SHA1-Digest: /sqbdO0xB1rR0ofZ71nWtka+gMY= Name: res/layout-v11/notification_media_action.xml SHA1-Digest: CkAaakbqf4jYotOJaDjwZg8NsTg= Name: res/drawable-xhdpi-v4/ic_play_circle_fill_white_48dp.png SHA1-Digest: f8UVK+xSlFWxkHIvpTElUedq8VA= Name: res/drawable-xhdpi-v4/ic_warning_light.png SHA1-Digest: acg6MQqWyvXbYtlk9aNyEyEGL30= Name: res/drawable-xxhdpi-v4/ic_forum_grey_32dp.png SHA1-Digest: /nZ1YZLf1VmyRdCt9k74shgeXlg= Name: res/animator-v11/rotate_90_animation.xml SHA1-Digest: YzPrKibA72xHWsJAnRDFda8WNqk= Name: res/drawable-xxhdpi-v4/divet_lower_right_dark.png SHA1-Digest: fsDH1djAo+V3Wbha9C0rOfFghtk= Name: res/drawable-xhdpi-v4/received_bubble.9.png SHA1-Digest: +GeQlo7tx1PQjC4nJMfJ9I7o6aM= Name: res/drawable-hdpi-v4/ic_send_secure_white_24dp.png SHA1-Digest: 9uwPYUkkYlZH9ngamLedRZ+EM6I= Name: res/drawable-xhdpi-v4/design_ic_visibility.png SHA1-Digest: 9iQsdMe2atN8AlG2+sNkMwp+BjA= Name: res/drawable-xxhdpi-v4/ic_emoji_nature_activated_dark.png SHA1-Digest: J14xvGG8Jn1ZcMQHBzUWkHdkCLs= Name: res/drawable-v21/conversation_list_item_unread_background.xml SHA1-Digest: 7gHZRkfxjXAe/fGi+G9jCLZw37o= Name: res/drawable-ldrtl-mdpi-v17/ic_send_white_24dp.png SHA1-Digest: hE99BQWsYUraZQ+dpCLDCAPIdvE= Name: res/drawable-mdpi-v4/ic_emoji_flags_normal_dark.png SHA1-Digest: Qj/u3uhxRZP+VK/+Z5TGEFvOtNI= Name: res/drawable-xhdpi-v11/icon_cached.png SHA1-Digest: a57NxIxp4tGdjMF/naYYHgybgGE= Name: res/drawable-xxhdpi-v4/abc_text_select_handle_left_mtrl_dark.png SHA1-Digest: oVBkRUE6XhIW4dAoioh5/X56qUE= Name: res/drawable-sw600dp-xhdpi-v13/ic_backspace_disabled_light.png SHA1-Digest: tv7wRXKOl58hVFrG657jIAWJzDg= Name: res/layout-v13/database_migration_activity.xml SHA1-Digest: uZW5xzIg7D1XBqb2SyNTg9x5pWs= Name: res/drawable-xxhdpi-v4/ic_movie_creation_light.png SHA1-Digest: vks1kru2H338wqM7+eoTP2j1oEA= Name: res/drawable-hdpi-v4/ic_add_white_24dp.png SHA1-Digest: /YXYDHyfXqSLJmVDrTIcjaj35eE= Name: res/drawable-hdpi-v4/fab_shadow.png SHA1-Digest: JTWwMd80lcUi3H6QGk62H9WmcBg= Name: res/drawable-mdpi-v4/ic_info_outline_light.png SHA1-Digest: MZjZJ+M6RzY24PmB/ONe540BoKk= Name: res/drawable-v21/conversation_list_item_unread_background_dark.x ml SHA1-Digest: GZOfRbPnDcJsl6tmJ41ksNjD0XY= Name: res/layout-sw600dp-v13/three_keys_view_right_drawable.xml SHA1-Digest: lND2RP8LK/DKsynRSpsFQrr9K+g= Name: res/drawable-xhdpi-v4/ic_brightness_6_gray.png SHA1-Digest: 9bGv8BWdf+mrcvSHb+VARalrHjc= Name: res/anim/slide_to_top.xml SHA1-Digest: 45OutUfVJ6qV4vsLcKjIbCltGPU= Name: res/drawable-v11/emoji_category_nature_light.xml SHA1-Digest: WNvdJFbi4VBwB7SSWnmYl43ftoM= Name: res/drawable-v21/design_password_eye.xml SHA1-Digest: 0z5lKVTTsmwzIox9AxI2XZDgt/4= Name: res/drawable-xhdpi-v4/abc_text_select_handle_left_mtrl_light.png SHA1-Digest: skXEcXSNH1T9DL33yZF7Pe+gkCc= Name: res/drawable-xhdpi-v4/ic_emoji_emoticons_activated_light.png SHA1-Digest: 5Gd3WGYWfnau8ma9mz9V0RjA2Zg= Name: res/drawable-xhdpi-v4/ic_delivery_delivered_dark.png SHA1-Digest: vACgicm9pTLjob2y4F7qkoiYdos= Name: res/drawable-xxhdpi-v4/abc_list_divider_mtrl_alpha.9.png SHA1-Digest: 1Dd/0JZBbJ0v3ZcNgNK8NWwPcLo= Name: res/drawable-xxxhdpi-v4/ic_play_circle_fill_white_48dp.png SHA1-Digest: 6wwUtiEbwiOuXIGZCDz1IlkdSGA= Name: assets/fonts/Roboto-Light.ttf SHA1-Digest: z9omPT1JG8UmPzMe032DUuqIgHc= Name: res/drawable-xxhdpi-v4/ic_send_sms_insecure.png SHA1-Digest: T1VVudRvASxwRfD1anzbGdct2DE= Name: res/drawable-xxhdpi-v4/ic_save_all_white_24dp.png SHA1-Digest: he+Kvp5QLDr1RPYg7x/ZSOFWVco= Name: res/layout/abc_alert_dialog_title_material.xml SHA1-Digest: 15Rl3f2cyYvCDpkFuGx+r5p0zMo= Name: res/drawable-mdpi-v4/abc_scrubber_track_mtrl_alpha.9.png SHA1-Digest: fCw4/3GZJ6HvBRrlhVpfPdRbS48= Name: res/drawable/spinner_background_holo_light.xml SHA1-Digest: h5UzvSzmgiVAUm2lW5ae09Igvf0= Name: res/drawable-xhdpi-v4/fab_shadow_mini.png SHA1-Digest: VF4tJFCsvve+Gk0QaTUTLoxGkZo= Name: res/drawable-xxhdpi-v4/abc_ic_star_black_36dp.png SHA1-Digest: LegIEjffnk8xxS9xljbMaDsxURM= Name: res/layout-v17/abc_search_view.xml SHA1-Digest: 6+X6GtfKSsqxyFGD1z/FhfRI5rE= Name: res/drawable-hdpi-v4/ic_missing_thumbnail_picture.png SHA1-Digest: B+inUZoT1Xta+eKNJBuZ2x79+rQ= Name: res/drawable/conversation_list_item_unread_background.xml SHA1-Digest: wzsYDq0L5HIGF5GjqG4UJX/NH1c= Name: res/drawable-mdpi-v4/ic_emoji_objects_activated_light.png SHA1-Digest: Rl28OE1/+7+rsWUbkursyYvnPvM= Name: res/drawable-hdpi-v4/abc_textfield_search_default_mtrl_alpha.9.p ng SHA1-Digest: VtmcSWaUIf6+DhHt/mnXkgUFXH4= Name: res/xml/badge_widget_provider.xml SHA1-Digest: pV2Kn2jIi0wOfShx2RGl70hlFzk= Name: res/drawable-ldrtl-xxxhdpi-v17/abc_ic_menu_copy_mtrl_am_alpha.pn g SHA1-Digest: ogkt/uGm2JWp22bfH9vZmG/CmMc= Name: res/drawable-xxhdpi-v4/ic_badge_24dp.png SHA1-Digest: 5JLtGA2KxCBOAd9PqCiTCrwnS1k= Name: res/drawable-mdpi-v4/ic_emoji_symbols_activated_light.png SHA1-Digest: OilS22ZGBBCObW9kgmwHbEA8QIc= Name: res/drawable-mdpi-v4/ic_play_circle_fill_white_48dp.png SHA1-Digest: gQum8TE91ke/2S6QPH4tNUCKDl8= Name: res/drawable-mdpi-v4/ic_backspace_normal_dark.png SHA1-Digest: J4VyPfxSxgieBgc3Bumse3SztOI= Name: res/layout/design_bottom_navigation_item.xml SHA1-Digest: klT3nTai/AyZFzYkwOzpGr+G4w4= Name: res/drawable-mdpi-v4/abc_text_select_handle_left_mtrl_light.png SHA1-Digest: W/Qo12yic1xpRjtGp7cyxpBT3iU= Name: res/drawable-xhdpi-v4/ic_check_normal_dark.png SHA1-Digest: NETa3V1Qnnz2QspULgJRXA4mGag= Name: res/layout/radial_time_picker_dialog.xml SHA1-Digest: ZjcwfBrzz2gsGna7/qTzCnHwUSs= Name: res/xml/preferences_chats.xml SHA1-Digest: 8A+NPfvsYxTuEsDEKHzqd8pSgdU= Name: res/drawable-xhdpi-v4/ic_menu_add_field_holo_light.png SHA1-Digest: a19u8qsMIgWqbipY8WunV44A7o0= Name: res/drawable/background_pattern.png SHA1-Digest: eBsAAHA2pACsyImDHFj66PrZFKA= Name: res/layout/abc_popup_menu_item_layout.xml SHA1-Digest: +61DnFswt1tn1sv52roYJY333rw= Name: res/drawable-hdpi-v4/ic_download_circle_fill_white_48dp.png SHA1-Digest: JPAS+Viw/0c/rwmkas+IB8Hh+zg= Name: res/layout/hms_picker_view.xml SHA1-Digest: BJpAu+fVnjEl1XAWwQm9UacGkTg= Name: res/drawable-mdpi-v4/ic_account_box_light.png SHA1-Digest: lVQSsLLXlZuHe2ozbIXLeC/0fCk= Name: res/drawable-mdpi-v4/ic_emoji_people_normal_dark.png SHA1-Digest: Vbl1YH0se4Zp3uLIU65UuNsO2lY= Name: res/layout/media_overview_activity.xml SHA1-Digest: Da1wt0pgVpV55/RDWJaWM4Ihovo= Name: res/drawable-hdpi-v4/ic_save_all_white_24dp.png SHA1-Digest: Kho0UY1QD9/XQXM4XeU2k9k20mI= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_84 SHA1-Digest: RXg8ZCyGT2W/pQDo6jOOCucmFYE= Name: res/drawable-hdpi-v4/design_ic_visibility.png SHA1-Digest: ZVs229CW1T4zwRD0gqYJrNTB2CI= Name: res/drawable-xhdpi-v4/abc_btn_check_to_on_mtrl_015.png SHA1-Digest: e1lIlQ6p/YUvIYoyCe/6CikluEo= Name: res/layout-v16/verify_identity_activity.xml SHA1-Digest: Dj+JIUDrK0eSETGeIodTIOH7Jwc= Name: res/drawable-xhdpi-v4/switch_thumb_pressed_holo_light.9.png SHA1-Digest: VTcVro7tRSB7dCiFLkcjEK1gte8= Name: res/drawable-xhdpi-v4/abc_ab_share_pack_mtrl_alpha.9.png SHA1-Digest: n3rquhXmVYjYpHMG9RG+SAJc+rA= Name: res/drawable-ldrtl-xxxhdpi-v17/abc_spinner_mtrl_am_alpha.9.png SHA1-Digest: IiQ92KKKcRVz1q2BpPfR0GMDdtA= Name: res/drawable/notification_bg.xml SHA1-Digest: 9AFcaFfLJMiugO8v7FmbFNfihsU= Name: res/drawable-mdpi-v4/ic_message_black.png SHA1-Digest: I7Xp6tEvbH2IE1OUNevK0b7K880= Name: res/drawable-hdpi-v4/abc_ic_star_black_16dp.png SHA1-Digest: 7DXQCyQGhFdQExgxQdETPf4ezrM= Name: res/drawable-hdpi-v4/abc_textfield_default_mtrl_alpha.9.png SHA1-Digest: Rmk8UREagQdf47LncSS6fq9RbAo= Name: res/drawable/abc_ic_arrow_drop_right_black_24dp.xml SHA1-Digest: kUvz65VYVPxxDx+UerVfiTaN2Zs= Name: res/drawable-xxhdpi-v4/ic_refresh_white_18dp.png SHA1-Digest: F9pX43A38QCJk72HWQMXTk1HO50= Name: res/layout/design_layout_tab_text.xml SHA1-Digest: SIz1wfljARNQwBdK8NWsBSfi3dc= Name: res/color/design_tint_password_toggle.xml SHA1-Digest: OL42+5K65KFw7u0d3/CjyOR1fRM= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_81 SHA1-Digest: A1I5nxwmM7Cjx2rfURezn1a/kIM= Name: res/layout-v21/conversation_fragment.xml SHA1-Digest: /lJ8C8vcPPW2PeKdp3SRfLWZhOU= Name: res/color/design_error.xml SHA1-Digest: XPQoCxvkOrPTeQYV6CgWpcHVza8= Name: res/drawable-mdpi-v4/ic_keyboard_white_24dp.png SHA1-Digest: eQwPXKVg6XijuO+5oVTN3aHQ9hQ= Name: res/drawable/last_seen_divider_text_background_light.xml SHA1-Digest: rpqyDpgoCABNYioAKGP/1EiGaI0= Name: res/drawable-xxxhdpi-v4/fab_shadow_mini.png SHA1-Digest: gpDjkxHAvhDgKQjYpWxr0HhMM7c= Name: res/drawable-xxxhdpi-v4/ic_arrow_forward_white_24dp.png SHA1-Digest: dbaROnHC3HchorbfyZdlynn4jv4= Name: res/drawable-mdpi-v4/ic_send_sms_secure.png SHA1-Digest: 59nwccWj13mmtU/7cLau6207f/c= Name: res/drawable-mdpi-v4/textfield_focused_holo_light.9.png SHA1-Digest: HZ9iQgcyhTz2F7RRfnq0smD0pLo= Name: res/drawable-ldrtl-mdpi-v17/abc_spinner_mtrl_am_alpha.9.png SHA1-Digest: nXZ4V1mFaOHaCmrZgjirnAh+5fg= Name: res/color-v11/abc_hint_foreground_material_light.xml SHA1-Digest: bwFvqJjQtoVWIGh5ORSrNFGtO+U= Name: res/drawable-xhdpi-v4/abc_text_select_handle_middle_mtrl_dark.pn g SHA1-Digest: 8Xul44BbEF2flRfTADrorPhA2rE= Name: res/color-v23/abc_btn_colored_borderless_text_material.xml SHA1-Digest: B/fNYd3gcJ/df3PhJe8aALH6euA= Name: res/drawable-hdpi-v4/fab_shadow_mini.png SHA1-Digest: QKG4gpsX+QogBYisabhbCv3XeLU= Name: res/drawable/emoji_category_objects_light.xml SHA1-Digest: uD/Fl+aPOFRztUBW7/57ho10AEg= Name: res/layout/emoji_drawer.xml SHA1-Digest: CIJy3GMnik/4H9CI9+e57RqGXts= Name: res/drawable-xxhdpi-v4/ic_menu_remove_holo_light.png SHA1-Digest: wZMtQu26Bycc/gXQxYyJ48WMMb4= Name: res/color/abc_search_url_text.xml SHA1-Digest: mgOeEFdKIOmQBIiUEKXZ+y4FBn8= Name: res/layout-land/radial_time_picker_dialog.xml SHA1-Digest: 7mTSBWhNTRy6zodyvYl0jFcpQI4= Name: res/layout/calendar_date_picker_dialog.xml SHA1-Digest: +VZrWk4Eq7FdIk90cR506Oyfjdo= Name: res/drawable-mdpi-v4/abc_scrubber_primary_mtrl_alpha.9.png SHA1-Digest: eF/LuENYUMfZZS3fHrJi1byAVZU= Name: res/drawable-xxxhdpi-v4/ic_unarchive_white_36dp.png SHA1-Digest: udoGXGX4LhrUvoy2quoHNw6noEI= Name: res/drawable-v11/edit_text_holo_light.xml SHA1-Digest: PfvbhTnt8unDB9uovuE++VevD6k= Name: res/drawable-mdpi-v4/ic_video_light.png SHA1-Digest: s74Hd9C8ADpO502v6TKNOme/UyM= Name: res/drawable-mdpi-v4/ic_info_outline_dark.png SHA1-Digest: WxTYcDMT33eIYH1elqVb6PQAht8= Name: res/drawable-mdpi-v4/abc_menu_hardkey_panel_mtrl_mult.9.png SHA1-Digest: nuld1RomiGBKqE5EsGnC+AbnNZ4= Name: res/drawable-xhdpi-v4/abc_btn_switch_to_on_mtrl_00001.9.png SHA1-Digest: 6jnEZnvF6Wf/iso9scq8BExu9D4= Name: res/color/abc_secondary_text_material_dark.xml SHA1-Digest: 3hZqJng31S8e4pl48fkYGRumEUQ= Name: res/layout-v17/notification_template_lines_media.xml SHA1-Digest: fXWFBq1QqGxSTc89fOshXXYXVkU= Name: res/drawable-hdpi-v4/ic_notifications_gray.png SHA1-Digest: A7HeGJJrajg3rAbqIgfOgvWoqII= Name: res/drawable-xxhdpi-v4/ic_contact_picture.png SHA1-Digest: tSETePnYRYOH+Olkr9TSthQY6sg= Name: res/layout/design_navigation_menu.xml SHA1-Digest: nGgjj3rDby9y4GZb7XuXG+0i6hM= Name: res/layout-v17/abc_popup_menu_item_layout.xml SHA1-Digest: Q3lxeNeJ5SCLvtUpQigaCUSW2Wg= Name: res/drawable-xhdpi-v4/abc_ic_star_half_black_36dp.png SHA1-Digest: SoI6H44G0Tn/aehVBwD4xNvR4k8= Name: res/drawable-hdpi-v4/ic_send_white_24dp.png SHA1-Digest: oTNDcYmwfOQs4qavTi5X1i5102M= Name: res/drawable-hdpi-v4/ic_done_white_18dp.png SHA1-Digest: fK7s4FyFEQAxnHHjWosq1c1wLGw= Name: res/menu/conversation_list_batch_archive.xml SHA1-Digest: B8kbAyricbY4WLvgWQ72pAPSAWs= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_94 SHA1-Digest: W0CSkKs60WzDI0QUZ1mhx6CmIPI= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_95 SHA1-Digest: owiIKf9pjSZoNZMs63sucQc8p64= Name: res/layout/share_intent_row.xml SHA1-Digest: /qI4T5Xw817feCxvMolDV866zmY= Name: res/xml/preferences_notifications.xml SHA1-Digest: VpDTAz79t3R+nQZjgPv0iZp52GI= Name: res/drawable/notification_icon_background.xml SHA1-Digest: 4Y1VdLi9SHAewoLxNgLA2rlI8M0= Name: res/drawable-xhdpi-v4/switch_bg_focused_holo_light.9.png SHA1-Digest: OIa2+0APqiitnkIjp1qmRxaODoE= Name: res/drawable-xxhdpi-v4/ic_info_outline_light.png SHA1-Digest: t8G2LGMDdspdjPpTuTp9WS9PTBg= Name: res/layout/prompt_passphrase_activity.xml SHA1-Digest: 09Bizk8wpIKXkGdrtBaWUFpL77U= Name: res/drawable/button_background_light.xml SHA1-Digest: /Bll3+L1AkZiLxMhNlReLxUlkVE= Name: res/drawable-v11/emoji_category_flags_dark.xml SHA1-Digest: tqnjHglvtqKRsTkq7o49fyLHqx0= Name: res/layout-v16/calendar_date_picker_header_view.xml SHA1-Digest: E0Mgbv/6FhhCKZC2o4kI7sczdS0= Name: res/drawable-xhdpi-v4/alert.png SHA1-Digest: qskbMn0jztqg1DvP6T3TxsVqBBc= Name: res/layout/contact_selection_activity.xml SHA1-Digest: dJFaoQB8zVefREvK64KPM393w90= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_91 SHA1-Digest: HXgo4Z3+zEUMIe0Gj3t9Geyt8RM= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_90 SHA1-Digest: xmD9UZpmrXmHXGBwgKcnUgG3prY= Name: res/drawable-xxhdpi-v4/ic_message_gray.png SHA1-Digest: 4HgrvxnxB4V+ehblNGmHkJV/6mo= Name: res/menu/conversation_list.xml SHA1-Digest: z9RkErm13m+o+RJ2/r+NSEHBQkg= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_49 SHA1-Digest: 5u8Emu23ipjQSHPDBp+rNN5gLes= Name: res/drawable-mdpi-v4/ic_save_white_24dp.png SHA1-Digest: 3BfYiEyVhrUolewBWRYqH3EjP2A= Name: res/drawable/compose_divider_background.xml SHA1-Digest: hSlm/fjANSZGvY0jNTBpraaWRNI= Name: res/drawable-xxhdpi-v4/ic_action_warning_red.png SHA1-Digest: NraVnc4MYwCYbuuxiC0lQSHCxgg= Name: res/drawable-mdpi-v4/textfield_disabled_holo_light.9.png SHA1-Digest: t++DHoZpGcnF7y+QUYwVT/72aKQ= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_44 SHA1-Digest: TVnQ8NXIFuFz2qYs35e/XIiGJek= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_43 SHA1-Digest: YwmvuPrm5iistAma7bavl8QEvkw= Name: res/drawable/ic_check_light.xml SHA1-Digest: pRnFugpsobbk3zUm7npXSy8Dc7M= Name: res/drawable-hdpi-v4/ic_menu_search_holo_dark.png SHA1-Digest: /2wBqxOy0cC40ZI6fj5eSS8V10E= Name: res/drawable-xxhdpi-v4/ic_emoji_symbols_activated_light.png SHA1-Digest: UQ78RTXRCKvUMF1i3wgSR/f6YkA= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_36 SHA1-Digest: Q6P0BgyIFO14RidwktMDzIKtUAc= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_31 SHA1-Digest: r/DBDrMghpy33Q11YD6SwLXaCCg= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_30 SHA1-Digest: zX3yz7FhjbZayv9D47R7u97JH+E= Name: res/drawable-xxxhdpi-v4/abc_ic_menu_cut_mtrl_alpha.png SHA1-Digest: esewcPWP43YzeikiSszMdbAAolE= Name: res/drawable-xhdpi-v4/ic_volume_up_light.png SHA1-Digest: lvwZMSjJIkqYFqzFGgXOGI5CjM8= Name: res/drawable/notification_bg_low.xml SHA1-Digest: RdoLiETS+XSopjRxjEzYLBZ8tLA= Name: res/drawable-xxhdpi-v4/icon_cached.png SHA1-Digest: GH4pTOyQLF/xy6pyGXsM0mgX7rQ= Name: res/drawable-xhdpi-v4/ic_visibility_grey600_24dp.png SHA1-Digest: FqGRsllTs8N0d5ek77AEpBiEkpo= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_34 SHA1-Digest: QJCaGbU/lFnE77x7YIoqtsjah/M= Name: res/drawable-xxhdpi-v4/abc_btn_check_to_on_mtrl_000.png SHA1-Digest: iGm+MqvuHagbCTikSNZ2q6527cs= Name: res/drawable-mdpi-v4/ic_brightness_6_black.png SHA1-Digest: Y1CqXJk7c22tGuqu+WqX4oanWfU= Name: res/drawable/design_fab_background.xml SHA1-Digest: RnDZ4YODuNg44An4VRSM13iDsgI= Name: res/drawable-xxhdpi-v4/ic_account_box_light.png SHA1-Digest: DGezBrNdeaOR3EDeh10knJQlW0I= Name: res/layout-sw600dp-v13/three_keys_view_text.xml SHA1-Digest: rCGhKE9ZDipF1CLJ4b0FShiSZUk= Name: res/drawable-hdpi-v4/ic_delete_black.png SHA1-Digest: J+GJotMCHRqU388rGF3PTnwT0Yo= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_66 SHA1-Digest: sAk8V+6UnOy3rXvWnM6/28B9JCM= Name: res/drawable-xxhdpi-v4/ic_select_all_white_24dp.png SHA1-Digest: dMqhWC0rHUUFTxHE02qSC260bCw= Name: res/animator-v11/upper_pause_to_play_animation.xml SHA1-Digest: h7h1IR3LLxizByblffdV+ZIIvWs= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_62 SHA1-Digest: /GFJ0ylw9Il1gfM51PWk1RBl2A4= Name: res/drawable-hdpi-v4/abc_ic_menu_selectall_mtrl_alpha.png SHA1-Digest: xrEYQ5r7Zv8komYSuo3VLdViEUQ= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_61 SHA1-Digest: y6DIvaz5WnaAn2TRzoK2bvfLQ7o= Name: res/drawable-hdpi-v4/ic_dialpad_white_24dp.png SHA1-Digest: v5PK56rWt9jZkuaz2Tut3WCve8o= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_63 SHA1-Digest: z55xt2Ayw/sf1cZS1n7htuZln00= Name: res/drawable-xhdpi-v4/abc_btn_switch_to_on_mtrl_00012.9.png SHA1-Digest: Lr8CV2APFenrT2CnF18DHzPxPmc= Name: res/drawable-mdpi-v4/icon_lock.png SHA1-Digest: GGDtAyKs2tmo3a95V0H/KdaPS5k= Name: res/drawable-hdpi-v4/ic_recurrence_bubble_outline.png SHA1-Digest: 3AGl+T+k+f4Opirzt8JX3zRUl4Q= Name: res/layout-v17/abc_alert_dialog_button_bar_material.xml SHA1-Digest: oF8mBtXkGOy/041kd1oglLxKpMI= Name: res/drawable-xhdpi-v4/abc_list_selector_disabled_holo_light.9.pn g SHA1-Digest: 55f4pDcLSMwJ2///c7EjaRD4TtY= Name: res/layout/abc_action_bar_title_item.xml SHA1-Digest: QzmSVkZhkH/CGOFdlrZ9s21SgS8= Name: res/layout/color_preference_items.xml SHA1-Digest: PwBWPIRsTNT6kxblCBJX+ueKwCo= Name: res/layout/notification_template_part_chronometer.xml SHA1-Digest: N3bpzPkHEH/egwMXsQQ5MXKZrfM= Name: res/drawable-xxhdpi-v4/ic_emoji_nature_normal_light.png SHA1-Digest: m0/FBDMkAmG2sjUUzXE0ty2NQRw= Name: res/layout/zooming_image_view.xml SHA1-Digest: wjmUQd8KKCMX7JN384NxM9U03W4= Name: res/animator/upper_play_to_pause_animation.xml SHA1-Digest: 1TOkjm6F2/DzGTLmzL7Ol4HlHJM= Name: res/drawable-mdpi-v4/ic_volume_off_grey600_18dp.png SHA1-Digest: +vO8/raOnJIMUUho5sPrnISDDoU= Name: res/drawable-hdpi-v4/ic_send_insecure_white_24dp.png SHA1-Digest: /tlDKZmj+ITZQdb9V+m49SSWVjs= Name: res/drawable-xhdpi-v4/ic_photo_camera_dark.png SHA1-Digest: 0z4aTrrxUBQ133+qOtoG44E7yAo= Name: res/drawable-mdpi-v4/abc_ab_share_pack_mtrl_alpha.9.png SHA1-Digest: EYD0L7FYlUYj4vZvX1mmqzIwLBE= Name: res/drawable-xhdpi-v4/ic_block_white_18dp.png SHA1-Digest: O4y8hdGpbrDXQz4srv4JV/No0HE= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_58 SHA1-Digest: hkt/emROO5dafVOiI7Zx7fKidEI= Name: res/drawable-hdpi-v4/ic_emoji_flags_normal_dark.png SHA1-Digest: l4ASGy17UUsb7ymwG5cl6ndH71I= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_55 SHA1-Digest: fv4z5lbCDxm8xUvQIY8+gDq08Nk= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_54 SHA1-Digest: EjExNy18aod1tZNDB5Mvc+z5EJs= Name: res/drawable-xxhdpi-v4/ic_warning_dark.png SHA1-Digest: BuB4DE8pjB+1lNNjrmP1GnDwwzc= Name: res/drawable-xxhdpi-v4/ic_delivery_delivered_dark.png SHA1-Digest: raZe/SpGw7+m32jNalmYFRJD+OI= Name: res/drawable-hdpi-v4/ic_brightness_6_black.png SHA1-Digest: KFWvIduHGUzkdtOnjFR4rjsGm8U= Name: res/anim/abc_popup_exit.xml SHA1-Digest: 6uAxkSAqOnz6wM+5oio7//G38vY= Name: res/drawable-hdpi-v4/abc_scrubber_track_mtrl_alpha.9.png SHA1-Digest: bbu4U1Z2FReSVaAwtf9Uj+pAXxA= Name: res/drawable-xhdpi-v4/abc_switch_track_mtrl_alpha.9.png SHA1-Digest: xe5aMoZuNGwGdXksGOYPSE3NVpk= Name: res/drawable-xxhdpi-v4/ic_cancel_white_24dp.png SHA1-Digest: MhDSWzHeLiZFYWo1fQBGgZIWpxM= Name: res/drawable-mdpi-v4/ic_done_all_white_18dp.png SHA1-Digest: kr5wUWq9/7hcmKpj2dpnOmRb2Ko= Name: res/drawable-mdpi-v4/ic_brightness_6_gray.png SHA1-Digest: P5bfosvFzP8DRkPZAQaWEUbr9Do= Name: res/drawable-xhdpi-v4/ic_emoji_flags_activated_light.png SHA1-Digest: qLPkosq6BoLzIPVDUEA8qRCOBNU= Name: res/drawable-mdpi-v4/design_ic_visibility_off.png SHA1-Digest: qwRLhCF05PgnqmU2XRTfcbHoWpw= Name: res/drawable-hdpi-v4/ic_photo_camera_light.png SHA1-Digest: YqtGiRfa9Sfo0tzA4RKzfGIINaw= Name: res/drawable-hdpi-v4/ic_image_light.png SHA1-Digest: 6XURzKlid8os71X+M/kkDIKtKYU= Name: assets/emoji_symbols.png SHA1-Digest: XE9qEioRlR74jFdnavx4j39xY3k= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_675 SHA1-Digest: Egbq8VQn3A6YTmNLqQtbJWXPR8Q= Name: res/drawable-xhdpi-v4/ic_done_all_white_18dp.png SHA1-Digest: IqzBd/sAzp2vr9Zz3XXjUWWYayA= Name: res/drawable-xhdpi-v4/ic_delete_gray.png SHA1-Digest: VRvA38i4ZosD8xe7w2CHcHtwPDs= Name: res/drawable-xxhdpi-v4/ic_textsms_grey_32dp.png SHA1-Digest: KRTtcnS3aob83jnO2puQtMcnC6g= Name: res/drawable-mdpi-v4/ic_lock_white_18dp.png SHA1-Digest: HWpWWMAysGi/Ei9A6d3DKw28mBw= Name: res/drawable-hdpi-v19/switch_thumb_pressed_holo_light.9.png SHA1-Digest: K3YgpyXSgJr++z61OECZhndc9kM= Name: res/drawable-hdpi-v4/ic_emoji_recents_normal_light.png SHA1-Digest: PmKdWE/l07qdHCPnDWsUNCt7ino= Name: res/drawable-mdpi-v4/ic_send_secure_white_24dp.png SHA1-Digest: exJ2SaC4rFenjkwgLxUiIDQaYWg= Name: res/drawable-xxxhdpi-v4/ic_block_grey600_18dp.png SHA1-Digest: YYE9kNJ6soXl0ZGfKt8xxe6CwYU= Name: res/drawable-xhdpi-v4/switch_thumb_disabled_holo_light.9.png SHA1-Digest: ljpsvOw3MQTa68v5CQddL5JUS+A= Name: res/drawable-xhdpi-v4/ic_info_outline_white_24dp.png SHA1-Digest: Xg3np82h+s54ITsFzwApkFGHflI= Name: res/drawable-xhdpi-v4/abc_scrubber_control_off_mtrl_alpha.png SHA1-Digest: 7s2leAY1r3tTtxomqJtjfVAN/l8= Name: res/drawable/design_snackbar_background.xml SHA1-Digest: y0hl2UgZoIkRVimAgN0heOxPqhs= Name: res/layout-v16/conversation_item_pending_v11.xml SHA1-Digest: 3BKWy5KoS+DU1okCGCdO0eKv4CM= Name: res/drawable-hdpi-v4/ic_create_white_24dp.png SHA1-Digest: +zaYNvep98pE6VBn7KLB/SKj1gI= Name: res/layout/key_caching_notification.xml SHA1-Digest: BYjDXuzKljnw8ttDrqmWqxC8rOg= Name: res/drawable-xxhdpi-v4/textfield_activated_holo_light.9.png SHA1-Digest: v1cd6v0pRkDauAh+/cr18dBMykA= Name: res/drawable-xxhdpi-v4/ic_movie_creation_dark.png SHA1-Digest: kSZCFwbqJwlipEVBmLdh5SR/qVM= Name: lib/armeabi/libcurve25519.so SHA1-Digest: hyoc/ivNYSNCGdFKdWtJtq8LlrY= Name: lib/x86/libcurve25519.so SHA1-Digest: 1/qEk4pIj0hCaCyKA6XZhCQBEZw= Name: res/drawable-mdpi-v4/ic_menu_search_holo_light.png SHA1-Digest: hLzglnVP8CqrP4zbyg78Be0YriU= Name: res/drawable-xxhdpi-v4/abc_textfield_search_activated_mtrl_alpha .9.png SHA1-Digest: WQ8PqUvvH8nOnzNH5uPMzVsVa+Q= Name: res/drawable-hdpi-v4/abc_ic_star_black_48dp.png SHA1-Digest: 9zZhABOz1Q3ZndRBEwpf8HVzyeA= Name: res/drawable-mdpi-v4/abc_text_select_handle_middle_mtrl_dark.png SHA1-Digest: I7m7a6z3jtIZ0E3nG+dtZ5GXFpg= Name: res/anim/abc_fade_in.xml SHA1-Digest: wE1QEZhFkLBWMw4TRtxPdsiMRtA= Name: res/drawable-xxhdpi-v4/ic_lock_dark.png SHA1-Digest: +NeEZUkgdxipmiJWfO7EnDSaVC4= Name: res/drawable-xxxhdpi-v4/ic_archive_white_24dp.png SHA1-Digest: Jm4z9iVpSUMuu6rB6EBJisPkQxI= Name: res/drawable-hdpi-v4/ic_volume_off_grey600_18dp.png SHA1-Digest: jPKcbkndw4fhcvRIzrY5Qsf9axQ= Name: res/drawable-sw600dp-hdpi-v13/ic_backspace_normal_dark.png SHA1-Digest: 6MlFNjLjWejakHp7mibnYN5g3sE= Name: res/drawable-xxhdpi-v4/ic_recurrence_bubble_outline_disabled.png SHA1-Digest: XT65zBj9nc/wJfCIh5kVI3HHdPA= Name: res/layout/abc_screen_simple.xml SHA1-Digest: wcPlv/nr5pkFN65VKYp3t34HJzY= Name: res/layout/abc_search_dropdown_item_icons_2line.xml SHA1-Digest: zuGa8MGzNKD8HEVLacvOV6QWpew= Name: res/layout-v17/conversation_title_view.xml SHA1-Digest: X2wnAsbTJQOdDD5Yla92hZj5Ep4= Name: res/layout/conversation_item_sent.xml SHA1-Digest: S916DeMqZ15W+Lg0ts+0k/DF2g8= Name: res/drawable/share_list_divider_shape.xml SHA1-Digest: 2ex/sAlke8bN2MQJTFVY60LNmPI= Name: res/drawable-hdpi-v4/abc_text_select_handle_right_mtrl_light.png SHA1-Digest: m5BiWbvIdHBv+pqV2EE1xWczYhI= Name: res/drawable-xhdpi-v4/ic_pause_circle_fill_white_48dp.png SHA1-Digest: MPyCwxn18rrFgFYbNQZal8Alcqw= Name: res/drawable-xxhdpi-v4/design_ic_visibility_off.png SHA1-Digest: SLjRVIOH1nuQ3ylhQ2npZFXmGlc= Name: res/drawable-hdpi-v4/ic_emoji_symbols_activated_dark.png SHA1-Digest: wVM0JNPBL09Dc/M+khA8pVD4C0c= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_255 SHA1-Digest: GR5suOXxRCRSaPOoEXvpBezuIsM= Name: res/drawable-xxhdpi-v4/abc_list_focused_holo.9.png SHA1-Digest: qCddjZI8yABkWFvWCWlg+bQVD7M= Name: res/drawable-xxhdpi-v4/textfield_disabled_holo_light.9.png SHA1-Digest: 8uAr5Lt4boLAicIMjYMnfGSIX3w= Name: res/drawable-hdpi-v4/ic_menu_barcode.png SHA1-Digest: EX5mWZm5BgXuBUNFocBGP4yQU6o= Name: res/layout-v21/notification_template_custom_big.xml SHA1-Digest: eMDKcwiHm3P1l+bsaSD9j6QFqE4= Name: res/drawable-xxhdpi-v4/sms_system_import_icon.png SHA1-Digest: JWIdtXXTfC2pEijSj8uZ9SZRR7Y= Name: res/color-v23/abc_tint_edittext.xml SHA1-Digest: gl5NW5wAw/zYl0bbs9Z1gJfz9fA= Name: res/drawable-xxxhdpi-v4/transfer_controls_background.9.png SHA1-Digest: x7nPBDQlImT7zpcqgig6+lpYOys= Name: res/layout/conversation_title_view.xml SHA1-Digest: PHclzDkPlkxMvDe1iBNJyOfq2Uk= Name: res/drawable-mdpi-v4/ic_emoji_recents_activated_dark.png SHA1-Digest: xshuIndsY927AhHg1NjuMVLiT20= Name: res/drawable-xhdpi-v4/abc_list_pressed_holo_light.9.png SHA1-Digest: 4CNgdraLjH84scvRJUfzItc3PbA= Name: res/drawable-mdpi-v4/ic_clear_white_24dp.png SHA1-Digest: tivFR5Pg7NTzLhQFxmzxw4LhpvY= Name: res/drawable-xxxhdpi-v4/ic_forum_black_32dp.png SHA1-Digest: mPrnI21janVOrga6scZMonvrSHA= Name: res/drawable-xxxhdpi-v4/abc_ic_star_half_black_36dp.png SHA1-Digest: TnwxMKyw13/+oTuxDf3OnEWDW78= Name: res/layout-v17/notification_template_big_media_narrow_custom.xml SHA1-Digest: aaFbDiZySvnPiDoBpHVG/8e4/LE= Name: res/drawable-mdpi-v4/ic_advanced_gray.png SHA1-Digest: +Uk8rEKjUdjYVcpy6KkQCQF9+2g= Name: res/menu/conversation_list_batch.xml SHA1-Digest: FiB0SSD2JzMhRC3siBvdDyGkgws= Name: res/drawable-xhdpi-v4/fab_shadow.png SHA1-Digest: 2HYDT036dFl/SR0UI6Ou2N01QBU= Name: res/drawable-hdpi-v4/textfield_disabled_holo_light.9.png SHA1-Digest: 0uIKHs2pNZE0TCfBlw/gmH5Viuw= Name: res/drawable-hdpi-v4/abc_btn_check_to_on_mtrl_000.png SHA1-Digest: 16vIEVXQ+k0+9qfLK8Cds0zIZCY= Name: res/drawable-hdpi-v4/ic_check_white_24dp.png SHA1-Digest: yRKvOlN4L/fng8u4Jxc0HUMTPNc= Name: res/drawable-xhdpi-v4/ic_volume_off_white_18dp.png SHA1-Digest: yB2h1TiNdb6rs735j1ukm2deiZY= Name: res/drawable-xxhdpi-v4/ic_block_white_18dp.png SHA1-Digest: p9nZ3831Mm/GVCdGS3W7J2vwAts= Name: res/drawable-xhdpi-v4/ic_emoji_emoticons_activated_dark.png SHA1-Digest: WbVoBPPPt7ocOIY2N6pxfTDuNWw= Name: res/drawable-xhdpi-v4/ic_warning_dark.png SHA1-Digest: vI0kBo2QoadOyYhbebgSE1kpDnw= Name: res/drawable-xxxhdpi-v4/ic_unarchive_white_24dp.png SHA1-Digest: WPb8uDzmwkmUPWCQCgFsnOFo1yA= Name: res/drawable-hdpi-v4/ic_visibility_off_grey600_24dp.png SHA1-Digest: WrFfyPZCMZkNcKNH0/jXDxUtlM8= Name: res/drawable-v11/emoji_category_recent_dark.xml SHA1-Digest: BoZ2dC5kzcIbIx4gwYvWke1zNQM= Name: res/drawable-xhdpi-v4/ic_emoji_symbols_normal_dark.png SHA1-Digest: r8abfKuqfSUJWiUG2AFT/uysZxM= Name: res/layout-v21/conversation_title_view.xml SHA1-Digest: Tg0wV8pcxD05YVaYKd+xFtHYZhE= Name: res/drawable-mdpi-v4/ic_content_copy_light.png SHA1-Digest: kkT/ZtIAYURrC11XLIoC6HxuSXU= Name: res/drawable-xxhdpi-v4/ic_visibility_off_grey600_24dp.png SHA1-Digest: PBMaGZk/N3aLEwrJntAUpHCS2yo= Name: res/drawable-mdpi-v4/abc_ic_menu_selectall_mtrl_alpha.png SHA1-Digest: qzSKvi0rQ140s0TA55aBiWLqZkY= Name: res/drawable-hdpi-v4/ic_group_photo.png SHA1-Digest: 6X6IuPMf/i3zPccwEa5rqEMBEcY= Name: res/menu/conversation_list_empty.xml SHA1-Digest: TMRtrz8omO3JnMLziHrWtZD42mo= Name: res/drawable-hdpi-v4/ic_backspace_disabled_dark.png SHA1-Digest: nGPkozJKw1x0Rw8bJJjOl6gAips= Name: res/drawable-v11/emoji_category_objects_light.xml SHA1-Digest: MzmYGqtPaeQZFVT/8NdkVW78hS0= Name: res/drawable-xhdpi-v4/ic_send_sms_insecure_dark.png SHA1-Digest: pTz2XGg9C7JjliPA1YyqSsF8adk= Name: ws/com/google/android/mms/pdu/package.html SHA1-Digest: ye2lxAPXev+RReyb/W+E5sl8jIY= Name: res/drawable-xhdpi-v4/ic_emoji_recents_normal_dark.png SHA1-Digest: peXDYKfMUq4vWyVK9XRdHKy9YTI= Name: res/drawable-mdpi-v4/notify_panel_notification_icon_bg.png SHA1-Digest: y9fFL7ZwxVmqnnOis/943Gj9mHg= Name: res/drawable-xxhdpi-v4/ic_emoji_emoticons_normal_dark.png SHA1-Digest: JAremr2KFp3vYY3/lBDZ8lLWPK8= Name: res/drawable-xhdpi-v4/divet_lower_right_light.png SHA1-Digest: wzMeNheVDFOHZfw6pLbUX/GbK98= Name: res/drawable-xhdpi-v4/ic_recurrence_bubble_disabled.png SHA1-Digest: u7/bcUxXHR1xB61DGGEc7bSKvCM= Name: res/drawable-xxhdpi-v4/ic_forum_black_32dp.png SHA1-Digest: twQY8z+UiEenkkcKGu92iWq+euk= Name: res/drawable-v23/abc_control_background_material.xml SHA1-Digest: M7P91J6Oq/IeAG37sfccnRIVMEs= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_679 SHA1-Digest: brii8vx5U3th9K0hIr7b19MpKXY= Name: res/drawable-hdpi-v4/ic_backspace_grey600_24dp.png SHA1-Digest: KZhpG5sCWyMPeYTn2z1ZTRNlRBk= Name: res/drawable-hdpi-v4/notification_bg_normal_pressed.9.png SHA1-Digest: mVyFdyHKSjUuQpG+f7zlYC/svPk= Name: res/layout/time_zone_filter_item.xml SHA1-Digest: J98Aas/jL/MnMKY6i2PA4j9RYSQ= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_676 SHA1-Digest: 4gGxM0M6k+qIXUWmmdKRACJhT44= Name: res/drawable/conversation_list_divider_shape.xml SHA1-Digest: j0vuZSNhvW58lO8uYnIKac7g9kE= Name: res/drawable-xxxhdpi-v4/abc_btn_check_to_on_mtrl_000.png SHA1-Digest: 2PLGy262CDuWvGAcqwLjzuuRvIg= Name: res/layout/select_dialog_singlechoice_material.xml SHA1-Digest: 6hlEA3ufhtXKfJiapXg4kuCsoJ8= Name: res/layout/conversation_fragment.xml SHA1-Digest: IwMTGFoT46gwdrGYF7KTkXyIz9A= Name: res/drawable-xxhdpi-v4/ic_add_white_24dp.png SHA1-Digest: GIRc5y8Vb3f6jXKYPY4vbJUdkdc= Name: res/xml/preferences_app_protection.xml SHA1-Digest: Mkyd9mWNqXjxvohDGC5w15FMLL8= Name: res/color/abc_primary_text_material_light.xml SHA1-Digest: QxwSL2/KR5e1LDlFTDHLZagbcCg= Name: res/drawable-hdpi-v4/ic_circle_fill_white_48dp.png SHA1-Digest: ML2jQD6xhLELNoXjYhMJn+65l7Y= Name: res/drawable-xhdpi-v4/ic_visibility_white_24dp.png SHA1-Digest: h4LkirIQKjUxtwO0DlnMNBG0b20= Name: res/drawable-v21/conversation_list_item_read_background_dark.xml SHA1-Digest: aWDc7VlipCrVRzbFuhsbhJDiVks= Name: res/drawable-xhdpi-v4/transfer_controls_background.9.png SHA1-Digest: CmzcrZNC8r+1hIxDz084H5GZEDw= Name: res/drawable-v11/emoji_category_places_dark.xml SHA1-Digest: Owcp6gHe/SjPFfbWYPHHoUaVGrU= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_ZA SHA1-Digest: /wR+q5WuqeSYVq4OTnxax0fTnX8= Name: res/drawable-xxhdpi-v4/ic_error_red_24dp.png SHA1-Digest: no1QBl1qBiyPhA+fKH8oTpHO04o= Name: res/drawable-mdpi-v4/switch_thumb_holo_light_v2.9.png SHA1-Digest: w8Dy0yH3VYRGd70FBZl2zVgtszM= Name: res/drawable-xxhdpi-v4/ic_emoji_objects_normal_light.png SHA1-Digest: JHyrRJeccYNJeWzNN9fC5Oy/Smc= Name: res/drawable-hdpi-v11/icon_cached.png SHA1-Digest: +TCXEDkHf2wT6Ro7NwKnkcX+USc= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_YE SHA1-Digest: HbLeneEtbwO+pWAy0EnGv0hSoC4= Name: res/drawable-hdpi-v4/spinner_disabled_holo_light.9.png SHA1-Digest: wiWkHAPVenl8UL3CUN7wiwB68o8= Name: res/drawable-xhdpi-v4/ic_emoji_nature_normal_light.png SHA1-Digest: wfixPVJOdpogZgbyI4TEahh5QWM= Name: res/drawable-mdpi-v4/abc_list_selector_disabled_holo_dark.9.png SHA1-Digest: 0lawN0TfON5HQhuTBR7Om1xGxUI= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_ZW SHA1-Digest: XEwHXyO2BN+vjJ3oTmYwYF26fXM= Name: res/drawable/abc_switch_thumb_material.xml SHA1-Digest: GMLceoxorxIv4SfySzjNiKy4yRk= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_800 SHA1-Digest: 0dlU9yXqTTryauz3RqUi3R2ERIY= Name: res/drawable-xxxhdpi-v4/abc_btn_switch_to_on_mtrl_00012.9.png SHA1-Digest: DqYT/YomMpTVjcgLxNiWd75/E14= Name: res/drawable-hdpi-v4/ic_emoji_recents_activated_light.png SHA1-Digest: 2+gwJDXYwypYG/+XcE/LGDYq7+s= Name: res/drawable/psts_background_tab.xml SHA1-Digest: RPiMPUR4wVCZVm6K01+4xKOM2YA= Name: res/layout-v16/transport_selection_list_item.xml SHA1-Digest: 9ZpszvVeyXxgdXBFYZuGeB6nNfE= Name: res/drawable-xxhdpi-v4/actionbar_icon_holo_dark.png SHA1-Digest: XS2gX3fVuiDm17r+g86lQnkv92M= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_808 SHA1-Digest: Er28OW5DpBu0S7qE78Rs46U9UVU= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_ZM SHA1-Digest: UMqs5N78T04XZVHo+XfcnTXzp5k= Name: res/layout/support_simple_spinner_dropdown_item.xml SHA1-Digest: v9EKX2UNBQ+3qucl6nl8VOjoJ2A= Name: org/spongycastle/x509/CertPathReviewerMessages_de.properties SHA1-Digest: JEtZ3RAGGTVEFFC7U8WRwNNTJXU= Name: res/drawable-xxhdpi-v4/ic_emoji_emoticons_activated_dark.png SHA1-Digest: q/Atn8pScseD8+59O12FwaOVDVo= Name: res/drawable-hdpi-v4/icon_dialog.png SHA1-Digest: SemQwPZLu5y8tA9/OhifXOEMNtE= Name: res/drawable-xhdpi-v4/ic_account_box_light.png SHA1-Digest: hDkn2R9BCMRYcuDN8OZLbzcRMVs= Name: res/drawable-mdpi-v4/ic_message_white.png SHA1-Digest: qMQrG3OYJNqekHvNN5yf2mPf0Gg= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_WS SHA1-Digest: w/P847FjVjBfxdL2c+7EX0wmklg= Name: res/menu/conversation_context.xml SHA1-Digest: 8poQR2hD6mBuYtTPSjxcXiesB2s= Name: res/color-v11/abc_hint_foreground_material_dark.xml SHA1-Digest: Muoz92tJTSeXi0SPaHigB+GjIqk= Name: res/drawable-xxhdpi-v4/ic_audio_dark.png SHA1-Digest: 5qNoPIu9bgbPkC8wtRp7dAf7gtM= Name: res/drawable-xxhdpi-v4/switch_bg_holo_light.9.png SHA1-Digest: EB5fOmXnZyZsagT7N1a70OEs0eA= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_WF SHA1-Digest: J9WZUh84u+dw5LiVNdWHTrgoS44= Name: res/drawable-hdpi-v4/ic_video_light.png SHA1-Digest: B8rCPMmHoB5JPFV3REjOFfenk3o= Name: res/drawable-hdpi-v4/icon_cached.png SHA1-Digest: /0ynkRi/GNd/L7zAIMxMFZrzFfg= Name: res/drawable-hdpi-v4/spinner_default_holo_light.9.png SHA1-Digest: wNj51XPjwkpz5i7Qe8C0psbQlO8= Name: res/drawable-hdpi-v4/ic_warning_dark.png SHA1-Digest: zm1FTuklhZEHGM1BDKBc7+ymp9c= Name: res/drawable-hdpi-v4/ic_unlocked_white_24dp.png SHA1-Digest: QrDcUwJPBvJA2fia9L0hfPdwrJI= Name: res/drawable-xxxhdpi-v4/ic_dialpad_white_24dp.png SHA1-Digest: aS9pW5ZiVW23ktv2TgI50vDlnZY= Name: res/drawable-xxhdpi-v19/switch_thumb_pressed_holo_light.9.png SHA1-Digest: vOrQRbnBW344sB4vzWZnuvuoRho= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_VI SHA1-Digest: vkoGk7tJGw/D7dD5k7jOMyijm38= Name: res/drawable-xhdpi-v4/ic_block_grey600_18dp.png SHA1-Digest: ElA4R0/C1Oa4WymUxbb7IbERn78= Name: res/drawable-xxhdpi-v4/ic_emoji_nature_activated_light.png SHA1-Digest: JiN+2lpMsROO3miESvAJOcRSeUQ= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_VG SHA1-Digest: HrXQEpLrDYpMZKTpI9pOllxu/fE= Name: res/drawable-hdpi-v4/abc_list_selector_disabled_holo_dark.9.png SHA1-Digest: vVifsTusCsEMS/QLwleavhByCls= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_VU SHA1-Digest: ILj3vdeklYp0FAJS7H+Drg4UwK0= Name: assets/emoji_nature.png SHA1-Digest: 3LR8FZBTV9dDX+3fPaFEdfQNKkQ= Name: res/layout/expiration_picker_dialog.xml SHA1-Digest: lBYj8JRu5oIpVDbXlzbIUFRJmTg= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_VN SHA1-Digest: q7Qn3cHSPT3S93peP2x9KWylEnQ= Name: res/drawable-hdpi-v4/ic_info_outline_white_24dp.png SHA1-Digest: 8tQHiDet7Fgbpnj0uJhuUzZNvz4= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_UZ SHA1-Digest: qmNg7UeWXwcRyp+FXCA+LIdy1iE= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_UY SHA1-Digest: PA6aZ1by8jynQ4c+eungIaeKx8M= Name: res/drawable-mdpi-v4/ic_emoji_recents_activated_light.png SHA1-Digest: 8K6eTIJEwqqtEkV+dYjfsN+yIbA= Name: res/drawable-mdpi-v4/ic_select_all_white_24dp.png SHA1-Digest: uPkT563M0zaS3nLr8L6tBajYOWQ= Name: res/drawable-xhdpi-v4/ic_recurrence_bubble_outline.png SHA1-Digest: E/z09yV2cKSnnGQ0KTHdUXY/P5M= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_VC SHA1-Digest: WqIycqucMNbzQiehs8Hzfu81BbA= Name: res/drawable/abc_edit_text_material.xml SHA1-Digest: oiA6lTI8z8nUuKbfDkfiJVYFwwg= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_VE SHA1-Digest: qhqhE8cDEVERQp/hwdY9qtKHKTo= Name: res/drawable-mdpi-v4/ic_visibility_off_white_24dp.png SHA1-Digest: QnPKJQNSJWg+KFnw9I9uY3Gobpg= Name: res/layout/abc_action_bar_view_list_nav_layout.xml SHA1-Digest: HpKXyfGMcMRpYtrLU9ybBcuK1XI= Name: res/drawable-xxxhdpi-v4/abc_switch_track_mtrl_alpha.9.png SHA1-Digest: O9JInV5je9E+K0VDIh7tQxIyLAk= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_VA SHA1-Digest: X9RgrA3GEbXaosdHXS7UioJi6Go= Name: res/drawable-mdpi-v4/ic_emoji_nature_normal_light.png SHA1-Digest: 2AEqIjG+9A64jaXR1ow9UyNvQrM= Name: res/drawable-xhdpi-v4/divet_lower_right_dark.png SHA1-Digest: TrdSDRDDtAdn5HZRumod+VBzN8o= Name: res/drawable-hdpi-v4/ic_video_dark.png SHA1-Digest: LRwm36VyCekL+luFjclPSB5Z1wI= Name: res/layout-v17/select_dialog_singlechoice_material.xml SHA1-Digest: 9yxyqbR9qC/Rt3SI2daiW4WGGa8= Name: res/drawable-hdpi-v4/ic_emoji_flags_activated_dark.png SHA1-Digest: Qk4RhA+73EGzSksMNqfjsZEOHkc= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_UG SHA1-Digest: wrNX0UqprVSO8t5el0+ktN0TetA= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_US SHA1-Digest: 2/DGaH9u4Ne6CiJFda1J7mLLNGc= Name: res/drawable-xhdpi-v4/ic_brightness_6_black.png SHA1-Digest: 8Nl2BMxG0K8+DwQyxAddEO9EYPI= Name: res/drawable-xhdpi-v4/abc_scrubber_control_to_pressed_mtrl_000.p ng SHA1-Digest: yMgf/1udbZRbmbVxWkO2tX8Dmw4= Name: res/color/abc_tint_btn_checkable.xml SHA1-Digest: EjutwwqwZcNixKT9MBicYlTCl2c= Name: res/drawable/share_list_divider_shape_dark.xml SHA1-Digest: dwoh6E4GqWi3+DAhO/ysZ0zWPa4= Name: res/drawable-hdpi-v4/notification_bg_normal.9.png SHA1-Digest: /y2KUDqzajVjYWrw5CoyqM7Jabk= Name: res/drawable-mdpi-v4/ic_textsms_grey_32dp.png SHA1-Digest: Z5jvmpt7DmWwvsAGPE9WWGAawI0= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_US SHA1-Digest: 9wBimbr0W9/oIwfS/Tn1C6Gd95Y= Name: res/drawable-hdpi-v4/ic_arrow_forward_light.png SHA1-Digest: 3WZvuZnSsZWuzdneGW5h5Zr5aK8= Name: res/drawable/abc_btn_default_mtrl_shape.xml SHA1-Digest: SKMRXFrMMLv2CZ0xhHWsL5pijc8= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_UY SHA1-Digest: hbAAX/CtFJm+reOOjQ19FI2N/oM= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_UZ SHA1-Digest: Hv4Pol9SdHJPa1Soye2xrTXzc1Y= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_UA SHA1-Digest: XEIgrzU4BwSpKojMzajxO8Jc42I= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_TV SHA1-Digest: C0KZ5lvGSxh4y3B1G/x/NykuVjU= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_TW SHA1-Digest: 7OIeA1vJ+mkcPbIfP5JLCkOtWBY= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_TT SHA1-Digest: +QmgjZTwCkZ9kk1ic+7CxFHAD9s= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_TZ SHA1-Digest: diCBTJiQppvA/rE+trGglphJ0ko= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_VC SHA1-Digest: oFnqWz68lh4TGE083rt0E3gq+Po= Name: res/layout/verify_identity_activity.xml SHA1-Digest: RvqpqlEPWGsVCyyrImHuo9HmYaA= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_VA SHA1-Digest: dk+7g6GpNiOKWiqTan6GO/EBhKk= Name: res/drawable-xxhdpi-v4/ic_visibility_grey600_24dp.png SHA1-Digest: ecYSYAe/QbzJOHp4AohDY8zSYxw= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_VG SHA1-Digest: SlvnPws1MUdXYkFfLNvSTC6vC2k= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_TO SHA1-Digest: BwUzD6t0mvz3hTqiw31cskrBTio= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_TN SHA1-Digest: 6H/P3CVVgHcz0qsrirFpDcbOU7s= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_TM SHA1-Digest: hka0u4sg0SVtltn9avVmPefCAlo= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_VE SHA1-Digest: /k4rJtwOSZvawp1iHrJzYYtenDA= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_TL SHA1-Digest: ZoHaDxUGWH1eg/2zTrEBk/b0mnU= Name: res/drawable-hdpi-v4/ic_menu_lock_dark.png SHA1-Digest: 09t4ugF802cMwk1VmJDI8yGxn9A= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_TR SHA1-Digest: zLdfOpaYXSZRYVirbfGLVCilXVw= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_VI SHA1-Digest: PbQLxt3r8E6tYcKkKl3OjGIe5rs= Name: res/drawable-sw600dp-mdpi-v13/ic_backspace_normal_dark.png SHA1-Digest: D8d3jzWwaJYFImRPS/jMKmOjwq8= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_TG SHA1-Digest: Z97IC3RazJPxpi4q5d5Vzk8BAhw= Name: res/anim/abc_slide_in_bottom.xml SHA1-Digest: 6SIMoqi7/LVEqpyfDSSCRJ9qRR4= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_VN SHA1-Digest: jXr5eqXsgg+eqXq81gOm/GFdgDg= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_TD SHA1-Digest: JBNGXYSPFUyhinfZpVBqtGbJZWc= Name: res/drawable-hdpi-v4/check_dark.png SHA1-Digest: /2RXLskv6ItLzRUAeVVlg/46buk= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_TJ SHA1-Digest: BYGxSZd4XCV5uu0gVjJYZ/5x56Q= Name: res/drawable/abc_textfield_search_material.xml SHA1-Digest: t7aLlxSJ1jiAbfeYrS+TIQ9arVM= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_TH SHA1-Digest: LLa2F3t7kV2WuaeLc14w/L2lXHo= Name: res/drawable-xxhdpi-v4/ic_lock_light.png SHA1-Digest: cggyhKwP8K467j9176ETpRtdy0A= Name: res/drawable-mdpi-v4/ic_search_holo_light.png SHA1-Digest: SGAd7cuOCvRNlYd3qBr3geJxi/c= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_VU SHA1-Digest: HbjMYeDZRIdreBUbs2Cq8xgI5YI= Name: res/drawable-v21/abc_ratingbar_material.xml SHA1-Digest: lmjnTB/yh4tmiAkHkeKcav4nFGA= Name: res/drawable-mdpi-v4/textfield_activated_holo_light.9.png SHA1-Digest: 2tfE7kha7TRVkhq7YgpEw3Y9FzY= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_TC SHA1-Digest: P2rYn+GUzQmjwxnWNIV5nW9NSRU= Name: res/layout/alert_view.xml SHA1-Digest: Br0KH+NFXrf9pUA7J7nfo+tGLa4= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_ST SHA1-Digest: VkjSN7fLfBfcEe5SZcWv/uR6/Z8= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SV SHA1-Digest: 87MTJtBvnekgRDqoh3aWergvuWY= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SX SHA1-Digest: +M4ddjLE9vXFb6xw+flbYCuty8I= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SY SHA1-Digest: BEeh5XFWqcE47qNiKn93LFSRPL0= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SZ SHA1-Digest: hJbbNKy1Q1bfkPX9I/PsS/mjzKw= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SL SHA1-Digest: eIVoqanZ1ZJy67maaIFIT6R9FTY= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_WF SHA1-Digest: WbdeKurmJI9DXE9iHJuv59WXJwA= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SK SHA1-Digest: AjNjSzJsuFLgA8Dcc4TvtCiuGTM= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SN SHA1-Digest: UTz/izU4qZwk8y3ZvZKLoRIAvFs= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SM SHA1-Digest: m+OKvr4CGjdGcJCjg5uNhP2qj7M= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SO SHA1-Digest: aVQi/dK6f6d6NrDH6GbfDcBtwXs= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SR SHA1-Digest: mr2Dh77dKsHX60ZQlNDq49g12j4= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SD SHA1-Digest: kEZMnEybm/LZwkI7J55Y0kWZkG4= Name: res/drawable-xhdpi-v4/ic_backspace_normal_dark.png SHA1-Digest: No+dYXGsvygs6zlpkF0mDfgDMWA= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SC SHA1-Digest: QXORK2qsVZwQcZS3nHHTkuzujkU= Name: res/drawable-xhdpi-v4/ic_check_dark_disabled.png SHA1-Digest: MViTJyK0ai5eD+lcCbB/mfxqh7I= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SE SHA1-Digest: PxW+hZty5xN51P6O7m+pOpKjvjM= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SH SHA1-Digest: y9IF0UKau4eEIN8MY6AXuYo1dkM= Name: res/layout/log_submit_activity.xml SHA1-Digest: 5SPs9x/Yx0vnD3sfhyN1L9CePNM= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SG SHA1-Digest: rgXzetnPrU9k0R9cZIpaD8haYns= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SJ SHA1-Digest: I5oNkjMJePXEKnr+GP+0XoJpks4= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_WS SHA1-Digest: ItQKkoNByQeq1ddcu+r4o6aIbVY= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SI SHA1-Digest: R/8v5Pg11kmuLZ4JjsC0ho7hqyI= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SA SHA1-Digest: KSZXOsVtspugLxLthzbF5RGD8kY= Name: res/drawable-mdpi-v4/ic_emoji_symbols_activated_dark.png SHA1-Digest: p1Ts0ObIT4fpP3Oea/h2xJQ5qas= Name: res/drawable/notify_panel_notification_icon_bg_tile.xml SHA1-Digest: IwQ+uXwyEAKvfQTKMCGIQhQIP7A= Name: res/layout-v11/conversation_activity.xml SHA1-Digest: T6kpay7B1Dz0axKJFWNLCoeji0c= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SB SHA1-Digest: NIvNOGZuqSfKY4ldS/EoorKUAf0= Name: res/drawable-hdpi-v4/actionbar_icon_holo_dark.png SHA1-Digest: zY/nEIZhziwsJ79WRFhDlHDVJLU= Name: res/drawable-mdpi-v4/abc_btn_switch_to_on_mtrl_00012.9.png SHA1-Digest: M5x5yhIyfAE00veLbT8o+OstFp0= Name: res/drawable-xxhdpi-v4/ic_emoji_emoticons_activated_light.png SHA1-Digest: FCYCyqPIak1PPAm8lZuHrysywGw= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_RW SHA1-Digest: s3HGVQB9sABfbWh2xXv4aYFOorc= Name: res/drawable-ldrtl-mdpi-v17/abc_ic_menu_copy_mtrl_am_alpha.png SHA1-Digest: 9ZpcNdh+3CmLoXOI2QSTVAmsoKk= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_RU SHA1-Digest: IyrojuthlS4Tltsc349tpSlRbT4= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_RS SHA1-Digest: 4Zp4Rd85v0edYYVrTfzQlVeGFi0= Name: res/drawable-hdpi-v4/ic_recurrence_bubble_outline_disabled.png SHA1-Digest: 6ahYHWYMu4OAZInGqnk+ouf+IdQ= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_RO SHA1-Digest: KTLlKrp8mtsT4NqPTYNYefex/dk= Name: res/drawable-hdpi-v4/ic_send_push.png SHA1-Digest: C87YP/AcKU2OcHLJ+I8lhxvBT/4= Name: res/drawable-ldrtl-xxhdpi-v17/abc_ic_menu_copy_mtrl_am_alpha.png SHA1-Digest: rb/o5dXnd3wSnkR3k6gSSsTsbsc= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_RE SHA1-Digest: iGS6+KZfHJt03BjO4MnmSWLFYHE= Name: res/drawable/abc_seekbar_tick_mark_material.xml SHA1-Digest: 2cfdudxPpdKT3phtRi1TXi7pHmE= Name: res/drawable-hdpi-v4/ic_textsms_grey_32dp.png SHA1-Digest: vuG/t7wroVh3QjmE0gkH+m3X+ho= Name: res/drawable-xxhdpi-v4/ic_emoji_flags_activated_light.png SHA1-Digest: Bff6GcTHRm1uwjalo2G1J8Grgmw= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_870 SHA1-Digest: JQd7ImrAcCDVBuYDH1JSPHWSf8s= Name: res/drawable-xhdpi-v4/ic_info_outline_dark.png SHA1-Digest: yH6D/pPYk7SiepHuMJSn04wwTlA= Name: res/drawable-xxhdpi-v4/ic_unarchive_white_24dp.png SHA1-Digest: zTeI0SzDMFGySNHyn4uNUZnfRnU= Name: res/drawable-v11/emoji_category_places_light.xml SHA1-Digest: gnqJDqV59B5rp8hFa7dVmg0xZEo= Name: res/drawable-hdpi-v4/ic_mood_grey600_24dp.png SHA1-Digest: Hj0b/K/XeEo0MrxOdqSqZMZ9DlE= Name: res/drawable-xxxhdpi-v4/ic_textsms_black_32dp.png SHA1-Digest: gTJ4CMlbnKlZx8zJqXQlfPlaR8k= Name: res/drawable-xxxhdpi-v4/design_ic_visibility_off.png SHA1-Digest: 39WgwQ8A2gMul/kCdVHSfMaXWio= Name: res/layout/share_fragment.xml SHA1-Digest: IqdoCw5LcV/pcaht4DHrvqaUR94= Name: res/drawable-xxhdpi-v4/abc_list_longpressed_holo.9.png SHA1-Digest: 2lRuxodMxnuWn+IclaJShuAV5+Y= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_YE SHA1-Digest: L5FcXJoNyvTtE2xNkttWnJLWGoM= Name: res/drawable/abc_ratingbar_indicator_material.xml SHA1-Digest: 6gbbPFsN/J2Dxd3gmFcvpI6abI4= Name: res/drawable-hdpi-v4/ic_keyboard_white_24dp.png SHA1-Digest: jWWEy90Inty1U/KJpOG1lZiMu9M= Name: res/drawable-hdpi-v4/textfield_disabled_focused_holo_light.9.png SHA1-Digest: /udp2Q0RttqUBxEQk6HV83tN9cQ= Name: res/drawable-xxhdpi-v4/ic_emoji_places_activated_dark.png SHA1-Digest: JVYwpdu0nMp8b6qn37deStXfBkE= Name: res/layout-v13/message_details_header.xml SHA1-Digest: 6t2khWbFIsrlt4HdczqUkRq8Gik= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_YT SHA1-Digest: ci/VBvns4lNNOhH9OObS32+dtp8= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_878 SHA1-Digest: VRYqZjoyxSm01oqqk3h0+J0wnDo= Name: res/drawable-xhdpi-v4/abc_text_select_handle_right_mtrl_light.pn g SHA1-Digest: 0sFSb9RiC1Ekht0iXDZIxqOjQtc= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_QA SHA1-Digest: nCJbqhYRoyrVRjtCLJcdkFdsT/0= Name: res/drawable-xxhdpi-v4/textfield_focused_holo_light.9.png SHA1-Digest: 3G+rFDxksENpDFDnnWmhx48KLpA= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_PA SHA1-Digest: psbj72lCq/sL1UFDPF+WdRxFjE0= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_883 SHA1-Digest: kDX1xSLz66HnUQDXzN5qLBn27TI= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_882 SHA1-Digest: ktmbRdg8Gz2n+qUA8ebBxgxWtAM= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_PE SHA1-Digest: 4EXXmGnr2E+0zyJGfj0/xtQ5mxk= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_888 SHA1-Digest: LwtliyOOWf6PwTZaQStQQYYLZ6A= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_PF SHA1-Digest: PrXaxnKuXXfWDon/voJKWJiqDSw= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_RO SHA1-Digest: /VysOJj9469dUXulaZ2N41d7jTM= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_PG SHA1-Digest: 8Xhb8+OQXJcz7gI3XlGyOaONStU= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_PH SHA1-Digest: v4fpxQWJgRR+PdfxHPD5SsU+mWA= Name: res/drawable-xhdpi-v4/icon_lock.png SHA1-Digest: Z0SNskfwhdkoNrpDHS77VfF+9Eg= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_PK SHA1-Digest: A65rboOYypaau509V41n9l/xTvw= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_PL SHA1-Digest: Wv8WGdubh03hRMVniWKbV7UCZxg= Name: res/drawable-xhdpi-v4/abc_ic_star_black_16dp.png SHA1-Digest: anvD/umdn7Gbr0QeW9+i2CaHM6E= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_RE SHA1-Digest: ZUhxVkruWy08nmep3UAWxDmljxM= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_PM SHA1-Digest: SQZ7I6va0zPJzwbuV3POrqNyncU= Name: res/drawable-mdpi-v4/switch_bg_disabled_holo_light.9.png SHA1-Digest: 7UJHiJVoqpy2dRzN2BDZ8a3zlsk= Name: res/drawable-hdpi-v4/abc_scrubber_control_to_pressed_mtrl_000.pn g SHA1-Digest: ipZ7n5QscSiC2+nLeSVir23z+dQ= Name: res/drawable-mdpi-v4/transfer_controls_background.9.png SHA1-Digest: 0VZBt8Ugd3Md5Tz54Fi+nEEj8Dc= Name: res/layout/abc_expanded_menu_layout.xml SHA1-Digest: G8xTlaPmMFco2QMPCLDHwprKgwk= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_PR SHA1-Digest: xO1RQVjAmRVyVX7QAIq+BN2S8lg= Name: res/layout/conversation_activity.xml SHA1-Digest: tYqHpVBkV/xv6W517VQqq/i5g7g= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_PT SHA1-Digest: dVqprh0i+d9vh22VegjLWua+BQE= Name: res/drawable-mdpi-v4/abc_cab_background_top_mtrl_alpha.9.png SHA1-Digest: kxSGYJoMOYG0HnE3IprNwOq5ou8= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_PW SHA1-Digest: oAy03rqC9fj8se4Zb/2uT9UdmHQ= Name: res/drawable-hdpi-v4/abc_list_focused_holo.9.png SHA1-Digest: z5rmTEqRHuMsX24l4sP3B88dR3Q= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_PY SHA1-Digest: YMqsB+ycHG539nGUp61je+vPX34= Name: res/layout/emoji_grid_layout.xml SHA1-Digest: i6pRXWxk5o4uaB8M4of5TdUOsSA= Name: res/drawable-xxxhdpi-v4/abc_btn_radio_to_on_mtrl_015.png SHA1-Digest: KsVyWTSJS8EOkowXLP9KW5sg2nY= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_881 SHA1-Digest: 1ImuOWtFBx85b3f9fK3guBsia20= Name: res/layout/abc_alert_dialog_button_bar_material.xml SHA1-Digest: myoEBw42XsNNDvhPhUWNrMSnJRE= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SK SHA1-Digest: UUhVkI6piKRGt3OSmvYR3FfBiUs= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SL SHA1-Digest: PUd9DyMto06CBGqcwQGZDVQTgzA= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SI SHA1-Digest: WDW9tkGbkeYDiKFg49BwhCnvbbw= Name: res/drawable-hdpi-v4/divet_lower_right_light.png SHA1-Digest: rlgcFpOMVYJdMulAew70KZ7jI7U= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SJ SHA1-Digest: cSUcdEYFcMwFDV8TKGk6jnYAL1I= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SO SHA1-Digest: XMl6G9yJZeIyaCj5w8t/cUEq3ss= Name: res/layout/abc_dialog_title_material.xml SHA1-Digest: WrQrXmc+ow78xNQJ35MGS1YR+08= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SM SHA1-Digest: S1hP4Jx2xtdlOalqxAeOpFH/EPs= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SN SHA1-Digest: lsnf2mFPlKLmy9muXtTVLB+jwSg= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SC SHA1-Digest: GASpnRPBNWf6J6w6FaDTST91o3c= Name: res/drawable-xxhdpi-v4/ic_backspace_grey600_24dp.png SHA1-Digest: ZVfwW8Pnmiws6HNkppZm4n+w33E= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SD SHA1-Digest: UgYHGSpQmiGcSLTLWr9bqv0yRTo= Name: res/drawable-mdpi-v4/ic_unlocked_white_24dp.png SHA1-Digest: 8I9f+mVCvRJzu+Tv4HRm8/3EKUU= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SA SHA1-Digest: Jz6pXQIjBTSj35pASVBPMDmqRA8= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SB SHA1-Digest: j3emy4+G8ADg51qE22aevraUlNw= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_OM SHA1-Digest: KKKCba6YvUE9GegKdjQzrYC8faM= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SG SHA1-Digest: UaEJ38MLyPEsYJY82QFShFzvCfA= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SH SHA1-Digest: ay+tzCVPtaGIy5kuoekTN1ZPvsI= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SE SHA1-Digest: nXCOEoGKAsMGtpu7z3JMkQuCL3Q= Name: res/menu/conversation_send_drafts.xml SHA1-Digest: iiAhjDSibQ1hL83zevj8mesn2h0= Name: res/drawable-hdpi-v4/ic_attach_grey600_24dp.png SHA1-Digest: HyRgsub0Rl5SxI9bI3u1px18Nm8= Name: res/drawable-xhdpi-v4/ic_emoji_people_normal_light.png SHA1-Digest: YSdmOI7zCoOT7cI3MVxN+D9e1y8= Name: res/drawable/emoji_category_flags_dark.xml SHA1-Digest: sSOcNnzeBN/VOp4VP2yKuacmdoo= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_RS SHA1-Digest: NTYZRkWtWu+2PTF/kdM5HW8WMVg= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_RW SHA1-Digest: FF4lOOf/NzJbipI2K33bRHrS7aM= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_RU SHA1-Digest: p2u5JPJ5XyaGC/DLJSLyXkUkJig= Name: res/drawable-ldrtl-hdpi-v17/abc_ic_menu_cut_mtrl_alpha.png SHA1-Digest: sJ2bizDjc/IvC35UuxBaI7PxljQ= Name: res/drawable-xxhdpi-v4/abc_scrubber_control_off_mtrl_alpha.png SHA1-Digest: 3uCMhkxK9aSNR8eXJyKd8g2eW/g= Name: res/drawable-hdpi-v4/ic_app_protection_gray.png SHA1-Digest: qcDRdnwrgZDD68xNgO2MVMmo4ac= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TN SHA1-Digest: zKMM896w490z2brJZrmx2isnpcE= Name: res/drawable-hdpi-v4/ic_emoji_symbols_normal_light.png SHA1-Digest: uQGeDtZlRZxvXN6oDUabamSpYcE= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NC SHA1-Digest: HmgujHYGI+0ZY96JYVJZJkarHyo= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TO SHA1-Digest: +9RrnHIfzrqb00iHIkaoG0lTcQA= Name: res/drawable-xhdpi-v4/ic_advanced_black.png SHA1-Digest: yOnkzbvF0s9fB4W1cWSoF8Uy/C4= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NE SHA1-Digest: Ttv2dyZeK1tp82DCpE5QVyoSVuA= Name: res/layout/time_picker_dialog.xml SHA1-Digest: m6w/DwIO4mAWI+Dpvif29yLiwMk= Name: res/drawable-xxhdpi-v4/abc_textfield_activated_mtrl_alpha.9.png SHA1-Digest: i8wYHM8BdG6ZwwbsPcMgrtWVs1o= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TJ SHA1-Digest: VzIqZbtItNuw85wPc57RWLsIW1A= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TK SHA1-Digest: ShkEkMq83HFT1gKS2+quvzj8Ekg= Name: res/drawable-xhdpi-v4/spinner_disabled_holo_light.9.png SHA1-Digest: I/VVsCusXLFlgQt+3GdT6CGWj/I= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TL SHA1-Digest: GSa2GXtwB4FpahkJKMZAP0JnZEE= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TM SHA1-Digest: crEXZutS188fBibcIs63+xAJ9/Y= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NA SHA1-Digest: LzETU+chj2E4UmrIzfBNB94vDF0= Name: res/drawable-ldrtl-xxxhdpi-v17/abc_ic_menu_cut_mtrl_alpha.png SHA1-Digest: wAuClHmA726/rhHTR7gcaVbnnh4= Name: res/drawable-hdpi-v4/spinner_focused_holo_light.9.png SHA1-Digest: 3zmmBeKWyKRhH23IcfeYZhVwLyY= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TG SHA1-Digest: XuB2EJ54CFbimhdLiJ6SShfDvvs= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TH SHA1-Digest: DQu+/i3MH0vskJrZ9gLaX85NgXY= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NL SHA1-Digest: 9gXOdrW5uA10gXI87KH3/nrIOIY= Name: res/layout-v17/abc_dialog_title_material.xml SHA1-Digest: 4ZPyYhlyaZDIFv3B2K6zngWIMZg= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NF SHA1-Digest: kri4ENe4sOygZDd3APacz+tJpKg= Name: res/drawable-xhdpi-v4/ic_group_white_24dp.png SHA1-Digest: efkBALEOtT3s6Vu2NRVOc63Qybw= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NG SHA1-Digest: jSOz9LMAbRi5o6ucO/v1bfmPn8I= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TC SHA1-Digest: 2zgcoPtiMDg+0bnxLNi84DZATxw= Name: res/drawable-mdpi-v4/ic_backspace_disabled_light.png SHA1-Digest: sJNgMwrj4xE2+79HxIrMqbmY7nM= Name: res/drawable-xhdpi-v4/notify_panel_notification_icon_bg.png SHA1-Digest: qZTXDPkLdLdgn9U7jvOCObBW7aU= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TD SHA1-Digest: Re8N7/eSIlGfgHheJVbxks+nncA= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NI SHA1-Digest: XxPOnhPln44M7epXmAyrHbx06lA= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NR SHA1-Digest: reUcQGkm5nZ7I85HY9orW5gciws= Name: res/drawable-hdpi-v4/ic_volume_up_light.png SHA1-Digest: gOrn4BUJjdBQkyIlZUSbMoTVggM= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NU SHA1-Digest: XOibTOofTA9DAQ0QSy9fmYIAk5E= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TA SHA1-Digest: WJ+x2vyXe10ayIuDS2K6DfG6krE= Name: res/drawable-hdpi-v4/ic_send_sms_insecure.png SHA1-Digest: Ea8rLJM+Eo9rEaKSlbDO8xqchss= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SZ SHA1-Digest: L5YeE6Z1hb5T+6+BEgQNhg7x/Kk= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NO SHA1-Digest: Ofk/FepiqsPlAtruvP8cx8lTE4k= Name: res/drawable-xhdpi-v4/ic_emoji_people_activated_light.png SHA1-Digest: iE9Ivms3TJKB3J0ARSkjtZWomks= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SY SHA1-Digest: ZH9cmvHEdiM3gfdBQ7tutvvmmwc= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NP SHA1-Digest: qoIkqcy6RODpQtSeA0vs4yEKz5c= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SV SHA1-Digest: MZDmXNHQGh6rEN8PbePd0dGwQZ0= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NZ SHA1-Digest: /yzMmaL318HTGJLcBex1KuZ2whA= Name: res/drawable-hdpi-v4/ic_lock_white_18dp.png SHA1-Digest: HETP5KoA2IVulF3WuJKEPW22ZH4= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SX SHA1-Digest: bg768pEb+O3Ug2NxXJASswBsZY8= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SR SHA1-Digest: Z1lD8EeLOeqPhPcvaMC4lCZ9SD8= Name: res/drawable/unread_widget_icon.xml SHA1-Digest: 48hOKLPIZpRITJN3NMzJ1OwnIMc= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_ST SHA1-Digest: B7DzNW3EfhSaf5Og6iJS5RKFp3Y= Name: res/animator-v11/scale_with_alpha.xml SHA1-Digest: VoONsngcyPaOcsxveoWj4d5Ytsk= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SS SHA1-Digest: A6YcnEx7rBr3pVI5bRp0B1CvM6o= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MC SHA1-Digest: uo6VEOYynPxFJZHlGeDlHUf3Yeg= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MD SHA1-Digest: caVfQWkZqV6JO6QPij0H3g1ufdc= Name: res/layout-v16/contact_selection_list_item.xml SHA1-Digest: MCVJ/7F24YEHA4tl2W8jSoR/7sE= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MA SHA1-Digest: SHJ/tfwoGaglI2v2LbiX2R+NGUA= Name: res/color/abc_primary_text_disable_only_material_light.xml SHA1-Digest: TpKwzuD1e5/ZOIvTHOUHlcLNSZA= Name: res/drawable-xxhdpi-v4/ic_done_all_white_18dp.png SHA1-Digest: H13Ryi9PkX6C/uaIUIncPYpPO0U= Name: res/color/abc_hint_foreground_material_dark.xml SHA1-Digest: v7j7l+GbLvDF1F69hRS9LDfggu8= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MK SHA1-Digest: LfAEf/cIj67t8rw1UKqe4tVSgmY= Name: res/drawable-v11/psts_background_tab.xml SHA1-Digest: nn+o3yq9mqh6oX8CcK/VI3H2I7s= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_ML SHA1-Digest: gsP6Cgjej/FEhPiWoM39L88dP3c= Name: res/drawable-xxhdpi-v4/ic_clear_white_24dp.png SHA1-Digest: 7QbJLZbH/knp5MCIscxlYSCv74o= Name: res/drawable-xxhdpi-v4/ic_emoji_people_activated_dark.png SHA1-Digest: OnGHafI8PsaxHGZ8lZwmirnrw4I= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_UG SHA1-Digest: 5pO4+JUCjB3JMaM57LQOhI8xBiY= Name: res/drawable-xhdpi-v4/abc_text_select_handle_left_mtrl_dark.png SHA1-Digest: ZwRe0lGO9yJr+od2SmhGzEZccaY= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MG SHA1-Digest: 0eGPq0v++0EKz5OHCxcavT5vXxc= Name: res/drawable-mdpi-v4/ic_emoji_flags_activated_dark.png SHA1-Digest: hmw72OlceE2gTL+0XuAYVvUmuuo= Name: res/drawable-mdpi-v4/ic_emoji_emoticons_normal_dark.png SHA1-Digest: 79vTb7EL0wLxCNjKQAjmgUzxLXo= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MH SHA1-Digest: GMBhmd2G3+hHr0m9ZYFIikkocjg= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_ME SHA1-Digest: Zf2+VjwW/dEIk7DmUNY+g3ff+UY= Name: res/drawable-xhdpi-v4/ic_recurrence_bubble_fill.png SHA1-Digest: ATTGE3BfNYhQXnFTX7Jpnbu13sU= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MF SHA1-Digest: kCBbzw4t7oZ/QvN6zGigwQdafDo= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MT SHA1-Digest: bE+XexQWyFQTTTWmAYfLT8YnHo4= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MS SHA1-Digest: fR4k036AGzbv0GAL1uG34ad+MEE= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_UA SHA1-Digest: cKQEqQ3Ry6WQnI9roOhPpFhoQrM= Name: res/drawable-mdpi-v4/ic_group_grey600_24dp.png SHA1-Digest: OsTpB8ywzd/6Engq6RtZq8EmURM= Name: res/drawable-xhdpi-v4/ic_save_white_24dp.png SHA1-Digest: 8MAtxxR4dqh91IujDrakxC13KE8= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MR SHA1-Digest: 735sOB9SlXzrg0vtbMbDRV0pEuU= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MQ SHA1-Digest: U8BwiAJPu9tGWqhRMCVPQ6rUW7Y= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MP SHA1-Digest: ZLrKuheJUOTF6GUuW4KcaIfNP/E= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MO SHA1-Digest: Trt4UFTbPA8Jz14Irxp8ezg+3SU= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MN SHA1-Digest: re2oAQbaFVaV/mAWaAT4oHWjjXs= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TZ SHA1-Digest: FPyLF1sL+karcpECpUek/fs7+Fs= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MM SHA1-Digest: HjpVhT7ZNh4W1kX23z2IKiKf3ZA= Name: res/drawable-xxhdpi-v4/ic_play_circle_fill_white_48dp.png SHA1-Digest: 5BeXj8m+V5yiA3PMUY8Pgy64200= Name: res/drawable-xxhdpi-v4/ic_launch_white_24dp.png SHA1-Digest: tfVuoH+DeAzzjIa1NfP+SAyX3p8= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MZ SHA1-Digest: /OhXIWqDgM0uKzI3quol7bjdsh4= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TW SHA1-Digest: IEbHvJq9kgVyHfHOaL4rh9Y6JzY= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TV SHA1-Digest: 72Jjc6F7cDsd1dv63W5WTQTHoPw= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MY SHA1-Digest: MVxBPbFhghaveOT6m1IrgoQ92uM= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MX SHA1-Digest: C3QrVFuO/wliul+KTCEfaEC9/eI= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MW SHA1-Digest: 9w1LHuITAAgb4XhUREXKM737dGA= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TT SHA1-Digest: 3xrIv6e9IaimbBhjBkzvHyuEfe0= Name: res/drawable-hdpi-v4/ic_emoji_places_normal_dark.png SHA1-Digest: 57Y653GtbW2CTvIKUoFbMMXzqvI= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MV SHA1-Digest: A1zaPSqaOvWAusj037B/7VFow0s= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TR SHA1-Digest: x/oSY3zmOSH2fRJ6AemrYQs7R8E= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MU SHA1-Digest: qvzj+8VbdeWnQyfD+L6BoLgYY8M= Name: res/drawable-xxhdpi-v4/ic_message_white.png SHA1-Digest: rKHDpW/UO07d/mAofolYj0QZlvY= Name: res/drawable-xxhdpi-v4/abc_text_select_handle_middle_mtrl_dark.p ng SHA1-Digest: BsdbhQlKpA9SYn+gClLarvMmIr8= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_LI SHA1-Digest: ml9UJKN4SSjRYZp65Oq8zglGLTg= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_NA SHA1-Digest: KN3sYQBTEyjhXC4ZSYFsguRDc3s= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_NC SHA1-Digest: wnzri/DybN2pzYMn0C/UjEfeV3M= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_LK SHA1-Digest: krOUkhcmVai3w2aSx1gWHAg1TUk= Name: res/drawable-xxxhdpi-v4/abc_ic_menu_selectall_mtrl_alpha.png SHA1-Digest: ilUGdamMg84FuhryTDOf/swhS+c= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_NE SHA1-Digest: Pb8ZnheYRI60t4QnqMEgqTChryc= Name: res/drawable-mdpi-v4/check.png SHA1-Digest: clJy7TAIQVyhe6mzvbRlv99YZOo= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_NG SHA1-Digest: 05+zMc0T/rmCvavuTvMI2pDGnEY= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_NF SHA1-Digest: kndUyibcB+csXZqB3GT5xT2/xEY= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_NI SHA1-Digest: FucWSZ3wZV+R+XWNZP/oR4aqCHY= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_LA SHA1-Digest: TzqD12trWknS3BtHiqj3R5VOFVg= Name: res/drawable-xxhdpi-v4/ic_recurrence_bubble_disabled.png SHA1-Digest: QG1tzjajYfGOEBkcVPy8Houulog= Name: res/drawable-mdpi-v4/abc_ic_star_half_black_16dp.png SHA1-Digest: 3NcPIbGQECgdCby3I+naN/3MIg4= Name: res/drawable-xhdpi-v4/ic_emoji_places_normal_light.png SHA1-Digest: KQY4daNapv4pOE7cEXCXqZkgcKw= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_LC SHA1-Digest: b4RpZ0zwp17OsCDKZ19fevUpDx8= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_LB SHA1-Digest: INV6mTaQZ7jwI7NRuimINJ1jLTQ= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MK SHA1-Digest: z13v1mVv+25E708MCi4mcR+QVNs= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_LT SHA1-Digest: yLGKah4iP0qZdMJL3FZvMCwcUvM= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_ML SHA1-Digest: 2QQX1zBwC0Cdu/kbRiJV/qVQS1g= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_LU SHA1-Digest: FDQNiTaG/bb+rQZW283xhSL2/dw= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MM SHA1-Digest: riIBpBXX2fhLdNtOBIiaEQXqXY0= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_LV SHA1-Digest: dFkEEnxq/1FcwvjmI4tiS9ulqHg= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MN SHA1-Digest: uUKYV/caMCD+Kj5DIPgu8anitAE= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MO SHA1-Digest: m4IKx6zzLQLCNXnDOrUZha+inzE= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_LY SHA1-Digest: tOy1xvlr875aH7JU3j4he6GVXUw= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MP SHA1-Digest: JFn5GEpAGcALxZ8140RAhZdktnc= Name: res/drawable-mdpi-v4/ic_add_white_24dp.png SHA1-Digest: foIOFC0YJcLMes6bNxRUeXzNCR4= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MQ SHA1-Digest: Te/AsAogzC4wHaWoA3/BOcEZX8I= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MR SHA1-Digest: oQJSiN5JqXP+4IAvNSzzN4hdPwA= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MS SHA1-Digest: XeC+tYs/5pWrchlG4Tjgr2QPlG8= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MT SHA1-Digest: oiZbGtJGQ210WuZZfAx9ALCLksU= Name: res/drawable-xhdpi-v4/ic_app_protection_black.png SHA1-Digest: 1cP/7NkU0BLMnD3fLdI9zDXDIvI= Name: res/drawable-xxhdpi-v4/ic_emoji_objects_normal_dark.png SHA1-Digest: SFTSQmdFwDJs8Po4Hh4GSszGHdI= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MU SHA1-Digest: lmPdov+OSu+1pxxe9/4SSlDKORE= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MV SHA1-Digest: oK3+1OyTrYU1OcMDodCFG0d9CRc= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MW SHA1-Digest: qMFpXXZbW46Q3nAZnmxkk5KNXy4= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MX SHA1-Digest: GOmsf34KhPFVIgGwifd/OQY7dh0= Name: res/drawable-mdpi-v4/ic_account_box_dark.png SHA1-Digest: N8c3AZqHptj00S+V5ni4XLrx5FE= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MY SHA1-Digest: Z0ByGaTpVBcLdQ9ks9YXogBAq08= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_LR SHA1-Digest: MPz6+q+V+vK30uaWDOsTm0r+02w= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_LS SHA1-Digest: ebR59a5l0UTkiLg8bGlmVLOW+O8= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MZ SHA1-Digest: 9EkzkH4v0oHu4jxfxjqFII1TXHo= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_27 SHA1-Digest: mGMwCzLy54rC/B9P+BWgJ/aqtLI= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_KE SHA1-Digest: jXjVi5jMulFFzFQoOh+0d6vpNwQ= Name: res/drawable-xhdpi-v4/ic_volume_up_dark.png SHA1-Digest: VCpxxBJJIWJPwwCgQrrCEtlAuVc= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_KI SHA1-Digest: yT4TYLZvm7F2eOcjgZxhb8QGCWY= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_KH SHA1-Digest: CxalpliKly3QdAQXL2PS91m79M8= Name: res/drawable-xhdpi-v4/ic_volume_off_grey600_18dp.png SHA1-Digest: 81zwVRK9ajRJVQYJLq0WshZYONw= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_KG SHA1-Digest: p4UwBVa9PVpC435eAXPN2PLU03k= Name: res/drawable/error_round.xml SHA1-Digest: n67C+HKq1nJ8tJ9rWOj80CdjZKo= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_NO SHA1-Digest: By0a86+TigoJBP8a/jt2YbXZcbA= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_NL SHA1-Digest: Ha4hDjZN16nRgzkBjwvS9fObwBE= Name: res/drawable-xhdpi-v4/abc_ic_commit_search_api_mtrl_alpha.png SHA1-Digest: ZASdEykkaZcSZ7Yjx1dUk6dEVjE= Name: res/drawable-xxxhdpi-v4/ic_pause_circle_fill_white_48dp.png SHA1-Digest: yjDnncHTi2TZtYT3gfkaXmpFgs0= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_NR SHA1-Digest: ahprX5nq0TbQxWaW48NfNaRuhjE= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_KY SHA1-Digest: rGd9z8xttxp6/vIr5R5UifPupgc= Name: res/drawable-xxhdpi-v4/switch_thumb_activated_holo_light.9.png SHA1-Digest: 6u81K4sjx958syfrNuc0b5VyCtw= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_KZ SHA1-Digest: z8PANXDSq5nhyhcK+JmM2j4x0Wk= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_NP SHA1-Digest: Xt933D4XMBUtNFx+0F7p/w5X/f0= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_KW SHA1-Digest: v20YnEtJ31VDO+UB3dRKREtZY2E= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_KM SHA1-Digest: oKBDs+V52MxB5ZGOVRcairbGgSQ= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_KN SHA1-Digest: NFIFxOusC/uNJef7MTtf7ZRkmEw= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_NU SHA1-Digest: w1JenUwANTZL4dfTY/aKD2Scsq8= Name: res/layout/conversation_item_header.xml SHA1-Digest: StFS3EO2QuAvfEzV6dli3IXsR5E= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_NZ SHA1-Digest: KJ8G7sin7R7w+cQsgZEpZsL2Usc= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_KR SHA1-Digest: aRBbP3wmkW2WzPsbRGQbRdE1PCI= Name: res/drawable-mdpi-v4/abc_list_pressed_holo_light.9.png SHA1-Digest: +VIFOUvUwxbnTdHmmjA8LWrUN0k= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_KP SHA1-Digest: rw+tCgv/zQPGikAdPAkP0BXLu/Q= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_PE SHA1-Digest: SXd0r6EDLyyXer9xu3xKkHlNg3s= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_PA SHA1-Digest: zJenZHuZ2cn3hQZmzVmM6JhtvXc= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_JE SHA1-Digest: wH8VNKVSJjFwqUnb16ypmBK76lQ= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_PK SHA1-Digest: Eq6rPtosPBzXgL4hJ/f0Gbg/FIw= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_PM SHA1-Digest: L0nqsOVum6HIQ26c77To4p125qQ= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_PL SHA1-Digest: aeRxfkk/EQFfTZ/rJINnPR3cJtc= Name: res/drawable-xxhdpi-v4/ic_brightness_6_black.png SHA1-Digest: np5V0QzKye3eTLCxW4kcaUAj4NM= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_PG SHA1-Digest: rXO3qI9wrLTZrs+5ryKewhxThxY= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_PF SHA1-Digest: Odye7mb6I5teGMP4MAenbO8iIbw= Name: res/drawable-xxhdpi-v4/ic_menu_search_holo_dark.png SHA1-Digest: T/L5sJVW2pxScaLsCvlNRHZ46vc= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_PH SHA1-Digest: IkH5hm0h255EZ1NOqB3I8cMzn2Y= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_OM SHA1-Digest: 9evyLcqbrJfZK1P2JsLmf6Lk+K8= Name: res/drawable-mdpi-v4/ic_circle_fill_white_48dp.png SHA1-Digest: PuMj32bJamOW1qHxoKzxZMOShX4= Name: res/layout/abc_action_mode_bar.xml SHA1-Digest: ImmPWOji0acusMAqHT/D5Yk5qAE= Name: res/drawable-xxhdpi-v4/ic_brightness_6_gray.png SHA1-Digest: nCvOoIxTQ5Jo5PXY6NscsSRPDVg= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_JO SHA1-Digest: etnm4aLA+bHA5+OIdGZ5jCAOPgk= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_JP SHA1-Digest: kI7O7DnD0LvU3XrTIXT7mFRNCyM= Name: res/anim/abc_fade_out.xml SHA1-Digest: MfCV1efdxSKtesRMF81I08Zyvvo= Name: res/layout-v16/reminder_header.xml SHA1-Digest: lhMVKAV9MJNYuW+SJ2lfvSoW5EQ= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_JM SHA1-Digest: I8yXX/kkW3Ln9yDueqlGVv5MtBU= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_IE SHA1-Digest: sicER8VgddgNWkvp/J1z12l7PcI= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_ID SHA1-Digest: vuc4G/SN8nrGzAAd+P8WRJI/27s= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_QA SHA1-Digest: y8J4KXh2lNccc0XbY4yCoEptzdM= Name: res/drawable-xhdpi-v4/abc_list_pressed_holo_dark.9.png SHA1-Digest: I+f9Vf8JVX6hz0eqBuaNI+f4Rtc= Name: res/color/date_picker_year_selector.xml SHA1-Digest: 3R7vZBjmVG+BXr0gy7Pspt7A4EA= Name: res/drawable-xhdpi-v19/switch_thumb_pressed_holo_light.9.png SHA1-Digest: YcyJfNOau/BOW/i7/AKIHt1H59o= Name: res/drawable-hdpi-v4/textfield_default_holo_light.9.png SHA1-Digest: xrFOt/AjhDtJdBUDzaDAa/6vFAw= Name: res/drawable-hdpi-v4/abc_list_selector_disabled_holo_light.9.png SHA1-Digest: 1gu0+JdGxgtkd7hnwaQbfLEaaZc= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_PT SHA1-Digest: M/lgCqL7346CiRuNiwWoopOi3IY= Name: res/drawable-mdpi-v4/ic_arrow_forward_dark.png SHA1-Digest: Db61tKVCqpJI64QUArwkoeCtcG4= Name: res/drawable-xhdpi-v4/ic_movie_creation_light.png SHA1-Digest: gzWv88BpzIzhVh6iN9KvMTFdg64= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_PR SHA1-Digest: q1OPwC71Oo4DqRtGBNRJJhOZhTI= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_PS SHA1-Digest: +e4rAQsWt2o0yPs/9FDJMCNC09c= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_IS SHA1-Digest: Hkhv50LIoiHJCsSLH1Q27KO4PJw= Name: res/animator-v11/upper_play_to_pause_animation.xml SHA1-Digest: nGbOGdCFxUAa/SlhCCYlGiHVxe4= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_IT SHA1-Digest: LvsHP2PjdZNyG7ejzSxAsDW2gn0= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_IQ SHA1-Digest: xEti79j2sC6UEr2VCVAVOXIRXXU= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_IR SHA1-Digest: BRnECbhEDa+NUw6gWW/rNLV6BgA= Name: res/drawable-hdpi-v4/ic_send_sms_insecure_dark.png SHA1-Digest: +DidnvthsssPTHPXdMgIQm6bx0Q= Name: res/drawable-xxhdpi-v4/icon.png SHA1-Digest: DF9F713jv+PmMazzAZGr/P2JxVw= Name: res/layout/led_pattern_dialog.xml SHA1-Digest: Yi+0WyrYWJJr2NEqvUCjF2mfObE= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_IM SHA1-Digest: FHNFdvFcLT8Rn93VtNQhMjlG+yg= Name: res/drawable-xhdpi-v4/ic_save_all_white_24dp.png SHA1-Digest: KQ3TTeFDr9bKYUBuEPZiuUPPbx4= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_IN SHA1-Digest: 58W4VnHh8FvOYbiChCUNqzlEhO0= Name: res/drawable-mdpi-v4/abc_ic_commit_search_api_mtrl_alpha.png SHA1-Digest: OxGddZL5ftUUMkIS3GSFXNepBP8= Name: res/layout-v16/fragment_submit_log.xml SHA1-Digest: hxjviwb1dreKwtm17ksg3YfY6cE= Name: res/drawable-mdpi-v4/switch_thumb_activated_holo_light.9.png SHA1-Digest: 37aTq/CoCuhzr5/FuGa2TR5yBiA= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_PY SHA1-Digest: cX4Ed9CqZzNmbYXhguvSsu80sWk= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_IL SHA1-Digest: ag7zl70llm/HvTsrO2mgc6hOLMo= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_PW SHA1-Digest: 79DunG6XWWrDpFseuRcQ/eOxaTY= Name: res/drawable-xhdpi-v4/ic_info_outline_light.png SHA1-Digest: LEi02ZgaOIan0L1KZ0bQBAQjP48= Name: res/drawable-xxhdpi-v4/spinner_default_holo_light.9.png SHA1-Digest: TcXBLoAjAlB5KEh8iwVEKiOanVI= Name: res/drawable-hdpi-v4/list_selected_holo_light.9.png SHA1-Digest: DS5Yp1zkxBKJsNnlKmSULzDXa7o= Name: res/drawable/emoji_category_nature_light.xml SHA1-Digest: 6Anm/WyDvgauMmBK0jM/BWyYvxE= Name: res/layout/expiration_picker_view.xml SHA1-Digest: SXYWoBOkixf482pdV3iThCI7g1g= Name: res/color/abc_tint_seek_thumb.xml SHA1-Digest: rMFHVJxtqSk9KDdEBDPHB2GRr9I= Name: res/drawable-mdpi-v4/ic_backspace_grey600_24dp.png SHA1-Digest: RYzAAUdktXszW6j5RXtHi4xW5k4= Name: res/drawable-hdpi-v4/abc_switch_track_mtrl_alpha.9.png SHA1-Digest: aq/s3PoS9wD33oPeDdmP98R6Bkk= Name: res/drawable-mdpi-v4/ic_emoji_symbols_normal_dark.png SHA1-Digest: fFAh7s1JMyyxFRn2ZPID+oIMl0Y= Name: res/anim/design_fab_in.xml SHA1-Digest: dRcgYgcLN0gY/2aHKJnWN/oMfkI= Name: res/drawable-mdpi-v4/ic_group_white_24dp.png SHA1-Digest: giBsdJeQqWg9AW8Mp5wXGrXayx8= Name: res/layout-v11/notification_media_cancel_action.xml SHA1-Digest: /KZyZOzEiShP2cP0cqnTYl+6vGU= Name: res/layout/abc_select_dialog_material.xml SHA1-Digest: A7IHpYuFPT4BZuoZCj+m//qLCmY= Name: res/drawable-hdpi-v4/ic_photo_camera_dark.png SHA1-Digest: foH6nqH7iVHHZfjpplINWKGaFdE= Name: res/color/recurrence_bubble_text_color.xml SHA1-Digest: nXh/1epHXtEJAUdry7YMj9updrY= Name: res/drawable-hdpi-v4/ic_emoji_nature_activated_light.png SHA1-Digest: GE/eS21/a3n0s9Au9TfoETXkpwg= Name: res/drawable-hdpi-v4/textfield_activated_holo_light.9.png SHA1-Digest: Afh8MLGJ3Tx9XRM7C/09jOu01ZE= Name: res/drawable-xhdpi-v4/switch_bg_holo_light.9.png SHA1-Digest: saSmYyqe/82/e2GZuWPAi3VYDPE= Name: res/drawable-mdpi-v4/ic_lock_light.png SHA1-Digest: AKTlpv1YGRuka55Gh+9A59hMn2M= Name: assets/emoji_objects.png SHA1-Digest: vALA6/+WIvuV6gUb5XbcWg5VSS8= Name: res/drawable-xxhdpi-v4/abc_btn_radio_to_on_mtrl_000.png SHA1-Digest: i/xNJ0zuX8i2Qm+lgnh6E6fytF8= Name: res/layout/prompt_apn_activity.xml SHA1-Digest: OvaHMTSuMoMljSQf2Xvh7Jm61pk= Name: res/drawable-hdpi-v4/ic_backspace_normal_dark.png SHA1-Digest: SZn5liFxoX/jJVmxFQ4A2CKTk7Q= Name: res/drawable-hdpi-v4/ic_emoji_objects_normal_light.png SHA1-Digest: 1w29UAnuelWx3GYsNGiOSwuP1HQ= Name: res/drawable-ldrtl-xxhdpi-v17/abc_ic_menu_cut_mtrl_alpha.png SHA1-Digest: +w/ZV/rJjEMwJS8xH78Mb+2mCMU= Name: res/drawable-sw600dp-hdpi-v13/ic_backspace_disabled_light.png SHA1-Digest: IevK+QGpXr4W7U6uEy6/dLSKg7k= Name: assets/databases/apns.db SHA1-Digest: pj48GVeEBI6ASfUuOGxSeOPuf4w= Name: res/drawable-mdpi-v4/ic_photo_camera_light.png SHA1-Digest: dAu2KZbi7TpJrXbO/C/ZIaEvxbg= Name: res/layout/abc_search_view.xml SHA1-Digest: V7B95cDcwylyEL0KN1ZgvnZlKa4= Name: res/drawable-hdpi-v4/ic_mood_white_24dp.png SHA1-Digest: fUyna2W89cwhr5AHUHz0t7XpZ8Y= Name: res/drawable-xhdpi-v4/ic_dialpad_white_24dp.png SHA1-Digest: zizow2Izc03ucIDK5+Sbw0uVbpk= Name: res/drawable/blocked_indicator_background.xml SHA1-Digest: MwCsXD/KfJg7MgCoWeyTjHysrFs= Name: res/drawable/emoji_category_people_dark.xml SHA1-Digest: 0AoQv/D2FJIPa6agySSspeLXdD0= Name: res/menu/media_overview.xml SHA1-Digest: sPVsPmTH3ulTZpkbgiEkACB9ogc= Name: res/drawable/list_selector_background_transition_holo_light.xml SHA1-Digest: pE/CDG+g87dnlNUicaEve/fKfYI= Name: res/drawable-xxhdpi-v4/check.png SHA1-Digest: pl1AJZMp+3qUvB5MOxVuvVfLSPo= Name: res/drawable-xxxhdpi-v4/ic_done_all_white_18dp.png SHA1-Digest: vR2TeECLw9lbIobeyhvdVAPI4aI= Name: res/layout/import_export_activity.xml SHA1-Digest: KvpYKS2DzUUX5c+l82mvknhKPfw= Name: res/drawable-mdpi-v4/ic_send_insecure_white_24dp.png SHA1-Digest: WvVhyaTyQZ6D4UDNNwoXv5gbI3w= Name: res/drawable-mdpi-v4/ic_launch_white_24dp.png SHA1-Digest: qTNaWuUDE/Jwfi67PxACCQIEZJw= Name: res/drawable-xhdpi-v4/abc_ic_menu_copy_mtrl_am_alpha.png SHA1-Digest: yNA/pJXAiNoyw8sLla3LwK1IuWs= Name: res/drawable-xhdpi-v4/abc_popup_background_mtrl_mult.9.png SHA1-Digest: jwT1/Yme29EdIvYr7bm6kxB5lJk= Name: res/drawable-xhdpi-v4/ic_textsms_grey_32dp.png SHA1-Digest: 4zwAkMq6ta+bidHo5cTkoWra1Lk= Name: res/layout/keyboard_text.xml SHA1-Digest: Ld5BDKVvJcBv3RZOSPHFfMu/BfE= Name: res/drawable-mdpi-v4/ic_forum_grey_32dp.png SHA1-Digest: 5mZCwzTnzeapqyoC8S/JcU2BSLs= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_7 SHA1-Digest: R13VmLCbBwMg6K479CnJtnC+bXs= Name: res/layout-v17/conversation_fragment.xml SHA1-Digest: 9vgP2do2wWNfvHNaS5C5Q/q/zRg= Name: res/drawable/recurrence_bubble_fill.xml SHA1-Digest: f3GCv6rhCWwIFFg/JzEgZSezfvU= Name: res/color/date_picker_selector.xml SHA1-Digest: HWOTUXrOCRonuyuxCSSy6QsSxxA= Name: res/drawable-xhdpi-v4/ic_unlocked_white_24dp.png SHA1-Digest: nnyKFq53Gc6DZ/FqDhGbB9xlung= Name: res/drawable-xxhdpi-v4/switch_thumb_holo_light_v2.9.png SHA1-Digest: /dwwrT/7gkG9oNAKszZBP8puxAs= Name: res/drawable-xhdpi-v4/textfield_activated_holo_light.9.png SHA1-Digest: Gmocm6iACu2JtEPjYWad8j6ha90= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_350 SHA1-Digest: FL/nPG4XaSrRGuHfx7krOQDoLG4= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_352 SHA1-Digest: AQbsxBOsaCrzJXI/KS99rfUChNg= Name: res/drawable-xhdpi-v4/ic_mood_grey600_24dp.png SHA1-Digest: eea4+Tx2y464XAKVfXA/o0mAxQo= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_351 SHA1-Digest: 8gUjWk4JW0A+ylZayZHRoen3pFU= Name: res/drawable-xxhdpi-v4/ic_emoji_places_normal_light.png SHA1-Digest: 3F9Y+qUhDtSqsq6b501VgbR42i0= Name: res/layout/conversation_list_item_action.xml SHA1-Digest: I1nQIFRFmKjx1XbSAms2IvXJat8= Name: res/drawable-xhdpi-v4/abc_text_select_handle_right_mtrl_dark.png SHA1-Digest: Er2l3pdoeBwBOmP2sgisT7f+pW0= Name: res/layout/abc_list_menu_item_icon.xml SHA1-Digest: IHjMoWWbSOePG8X4KyBCdZH/r0I= Name: res/drawable-hdpi-v4/sms_selection_icon.png SHA1-Digest: y6JUbF0OyJW7DReN+vDl3rFkvnk= Name: res/drawable-ldrtl-xhdpi-v17/ic_send_white_24dp.png SHA1-Digest: oadJZycEHwI6rCUqfMR/huPDM1U= Name: res/drawable-hdpi-v4/ic_group_grey600_24dp.png SHA1-Digest: TsaEgJUU7sNGtdx8cVq7g7mclu8= Name: res/drawable-xxxhdpi-v4/abc_scrubber_control_to_pressed_mtrl_000 .png SHA1-Digest: h3lL6tDTgeEUsHwNZiv+gOveu1A= Name: res/layout/calendar_date_picker_done_button.xml SHA1-Digest: jXAu71ZxI7rd22TsQVW44vrI3N8= Name: res/animator-v11/bottom_play_to_pause_animation.xml SHA1-Digest: L57WeA9XqgSXopnhomGIU+zO0WE= Name: res/drawable/ic_check_dark.xml SHA1-Digest: guWXfOAn/P9qpKmKSw8YXT23zr0= Name: res/drawable-hdpi-v4/abc_text_select_handle_right_mtrl_dark.png SHA1-Digest: Qbl+T5s4Vgus+255ilPjOARwhY0= Name: res/menu/log_submit.xml SHA1-Digest: m0IzL3uKbtyRFUcTw0XUpvfNJWg= Name: res/menu/local_identity.xml SHA1-Digest: TJYkQb/JH6dHdmcQHfGCke96cmU= Name: res/drawable-mdpi-v4/abc_switch_track_mtrl_alpha.9.png SHA1-Digest: QhKzfQqaMjEUNLGmR/QjnJ0PWe4= Name: res/layout/notification_action.xml SHA1-Digest: qhq9wA6wEMXdRX6DfU/xMNyQqgU= Name: res/drawable-xhdpi-v4/ic_badge_24dp.png SHA1-Digest: Y0sUZk/5avRSaigeuMbbuLfp7ZE= Name: res/drawable-mdpi-v4/ic_emoji_nature_activated_dark.png SHA1-Digest: cX9FigaizqvhmxmCtyfqQ0rxztY= Name: res/drawable/abc_tab_indicator_material.xml SHA1-Digest: HLMNWYzS8Xr2+cGXFiCZarvGfLw= Name: res/drawable-hdpi-v4/ic_visibility_off_white_24dp.png SHA1-Digest: ogZbqcK/nD9kEQDdeTvSnGrDAkA= Name: res/drawable-xxhdpi-v4/abc_ic_star_half_black_16dp.png SHA1-Digest: VIxY8NsnHv+fMmCSUp80rTA+ORM= Name: res/drawable-xxhdpi-v4/ic_menu_lock_dark.png SHA1-Digest: Uiu0uuGjm3xA3Z0+ZYLiD+mDVts= Name: res/drawable-hdpi-v4/ic_message_black.png SHA1-Digest: 14B99xRUu4LvGytCpQ8Wt+5OghU= Name: res/drawable-mdpi-v4/ic_send_sms_insecure_dark.png SHA1-Digest: Y72eTMA51B0PYfNH7TBb1oy25J0= Name: res/drawable-xhdpi-v4/sms_system_import_icon.png SHA1-Digest: esyNqLcMcUkL9ySUdONxbY4R7U8= Name: res/drawable-mdpi-v4/ic_backspace_disabled_dark.png SHA1-Digest: 3p7UfcrwDxKcyJjfazGz1v3IEC8= Name: res/color/text_color_secondary_dark_theme.xml SHA1-Digest: GEzRfoygmSXPKZxKBrh4H8TaO8I= Name: res/drawable-xxhdpi-v4/ic_lock_white_18dp.png SHA1-Digest: Je8Q4gaVQG09yofBh56+9Jicfmw= Name: res/drawable-mdpi-v4/abc_text_select_handle_right_mtrl_dark.png SHA1-Digest: sik4m6NQi5mcKtGRR1c8em9hOjI= Name: res/layout/conversation_list_item_view.xml SHA1-Digest: p82/GxGQgrhOzvtp8FyrVP1eM7A= Name: META-INF/fdroidserverid SHA1-Digest: 3rH3T3oX8Sk967n0ab5NiIei+iU= Name: res/drawable-xhdpi-v4/ic_group_grey600_24dp.png SHA1-Digest: ZIEhI1MDcuNBqyesBqhIX86jFu8= Name: res/drawable-mdpi-v4/list_selected_holo_light.9.png SHA1-Digest: nPWNtANp5FoH4n/kEIShr57wI3s= Name: res/drawable-xhdpi-v4/ic_refresh_white_24dp.png SHA1-Digest: NTsZbqB/c4tHi1UX0fBPegEljwE= Name: res/layout/recurrencepicker.xml SHA1-Digest: n2RYdNa4k3XGjqpkhXF9ztxnxbc= Name: res/layout/radial_time_header_label.xml SHA1-Digest: 6ZBOmonVaXGpZHcc/Mw2FXcvoMs= Name: res/drawable-v11/notification_bg_low.xml SHA1-Digest: bfUYQEbOdfpHyH/xKU2rljlMzho= Name: res/drawable-xxhdpi-v4/ic_group_grey600_24dp.png SHA1-Digest: aHTpAX2FV4iXzJU0sTO878OTS3c= Name: res/drawable-mdpi-v4/ic_emoji_emoticons_activated_dark.png SHA1-Digest: fF5hcXMeH+QGL3iAAr5CYTAMu4w= Name: res/drawable-mdpi-v4/icon.png SHA1-Digest: T2GWD98XUsHaLFlAejB5QgqyOZY= Name: res/drawable-xxhdpi-v4/ic_missing_thumbnail_picture.png SHA1-Digest: 1RUFuEzt+5rkd4Ck+Kbeiv/h1RI= Name: res/layout-v17/notification_action_tombstone.xml SHA1-Digest: A4y2ru7HSV2XUwLum7cCSvHFXqk= Name: res/drawable-mdpi-v4/ic_done_white_18dp.png SHA1-Digest: mh9w0JZCRb1UPTJ5moQFeoaJKkU= Name: res/drawable-xhdpi-v4/abc_ic_menu_selectall_mtrl_alpha.png SHA1-Digest: d0l2OwtZD2+6JR+S4EKCzr+NRhk= Name: res/anim/abc_grow_fade_in_from_bottom.xml SHA1-Digest: kWfUczBIbB0kTzFgtIQfNc6uPrA= Name: res/drawable-mdpi-v4/abc_ic_star_black_16dp.png SHA1-Digest: cMSzyfIyYX1I9dilqPQLxr8V0UQ= Name: res/drawable-mdpi-v4/ic_dialpad_white_24dp.png SHA1-Digest: N3tRrv5WjgQGNPB/ulysghb/H24= Name: res/drawable-xxhdpi-v4/ic_send_sms_insecure_dark.png SHA1-Digest: FIedwWiEi6UrlNAZ3Va+0Jpjpog= Name: res/drawable-xhdpi-v4/ic_emoji_nature_activated_dark.png SHA1-Digest: 0FUYUr/cLI62IQ4RP5xwLN1vicY= Name: res/drawable-mdpi-v4/notification_bg_low_pressed.9.png SHA1-Digest: rxar83E4fhqCH7r8Q3SGQ0s+sAo= Name: res/layout/recurrencepicker_end_text.xml SHA1-Digest: YjnFzKmvN75I1jNf3w5/IibeHN8= Name: res/drawable-xxhdpi-v4/ic_block_grey600_18dp.png SHA1-Digest: 34Zc5JQ+TeVUVP1udhfE6s1D+iM= Name: res/drawable-xxxhdpi-v4/abc_ic_star_half_black_16dp.png SHA1-Digest: f0Rn65H1PwGOyFNxv43FhzHUaVE= Name: res/layout/abc_action_menu_layout.xml SHA1-Digest: EPivHIZzOWH09bETjXQjOXTv1gQ= Name: res/layout/media_overview_item.xml SHA1-Digest: 0tK6lgBCZPMFJSpfYgLhRj4GKuo= Name: res/layout-v13/recipient_preference_activity.xml SHA1-Digest: hxIA28s1tlAg7XpP8teI8EWr9gA= Name: res/drawable-mdpi-v4/ic_recurrence_bubble_disabled.png SHA1-Digest: GQ/oQKqUlDKBM23s1GXUXYldkwM= Name: res/drawable-ldrtl-xxhdpi-v17/ic_send_white_24dp.png SHA1-Digest: fJv3ddlYaDANDDbzyrHLFIsKVRI= Name: res/drawable-hdpi-v4/ic_movie_creation_dark.png SHA1-Digest: idSGuOyhi77lUXJpb/4cLcZyflw= Name: res/anim/animation_toggle_out.xml SHA1-Digest: h5RFa/NEbVssJaJQDR+GOgcbjF0= Name: res/drawable-v21/abc_ratingbar_small_material.xml SHA1-Digest: wPrz0/gmu9ygjwoOdEMFAq9SO+E= Name: res/drawable-hdpi-v4/abc_popup_background_mtrl_mult.9.png SHA1-Digest: F3OLlUdrDj+2/ztQNwug+XTUWPU= Name: res/drawable-hdpi-v4/ic_emoji_places_activated_dark.png SHA1-Digest: G10d1TjnCZpsWvr84SBKdDkeq7g= Name: res/drawable-xhdpi-v4/ic_backspace_grey600_24dp.png SHA1-Digest: Ts9XoUqEl0/Db4JonaDLKHDLsLM= Name: res/drawable-mdpi-v4/icon_cached.png SHA1-Digest: v2DMT5hHXIMepxOig+HMHo1E4XA= Name: res/drawable-xxxhdpi-v4/abc_btn_switch_to_on_mtrl_00001.9.png SHA1-Digest: u7p4+i+MbX5Isql4KGmTM6mrhJ8= Name: res/drawable-mdpi-v4/divet_lower_right_light.png SHA1-Digest: 3Cui8QVfTUnCSeGovo/AIEMqF/4= Name: res/layout/notification_template_icon_group.xml SHA1-Digest: 7FMD39NkHvo5k5k068yXh4qwRqM= Name: res/drawable-xxhdpi-v4/ic_unarchive_white_36dp.png SHA1-Digest: UrffJUFymEXRp+MA71+CU/UucsA= Name: res/layout/create_passphrase_activity.xml SHA1-Digest: Xo6l8fNm1DdquvRoi16VjYEG8dY= Name: res/layout/calendar_date_picker_selected_date.xml SHA1-Digest: mDcwSrn9NY9Q+tUBGJz/mY1C5Ok= Name: res/drawable/emoji_category_emoticons_dark.xml SHA1-Digest: E/0X0M2RoQFiqDrCqgcdbgfJqcw= Name: res/drawable-xxhdpi-v4/ic_search_white_24dp.png SHA1-Digest: d7JXPS0TRWeyD/IeowryWnSoHko= Name: res/drawable-xxxhdpi-v4/abc_text_select_handle_right_mtrl_light. png SHA1-Digest: grcVrQtxmzmSV8JMz/9EcFpwC6E= Name: res/menu/conversation.xml SHA1-Digest: eibAWzj9TXppWnBsdgllRmuJgSM= Name: res/drawable-hdpi-v4/ic_block_white_18dp.png SHA1-Digest: rF4DgE+hC5uF/2Vrnfmc5PvtH0U= Name: assets/emoji_flags.png SHA1-Digest: +csJvSPQ400RI0ujnYElBq3F+Hk= Name: res/drawable/circle_tintable.xml SHA1-Digest: BAxvwKvzZbjQT35J7xxN4i7WHDE= Name: res/color/abc_btn_colored_text_material.xml SHA1-Digest: nsCF5QSiDkdzkM9F53HYXAMfSsQ= Name: res/drawable-xhdpi-v4/ic_attach_white_24dp.png SHA1-Digest: D1B41yEjxu6TL0hB+3ARCREu8fw= Name: res/drawable/abc_dialog_material_background.xml SHA1-Digest: mLGxn48GAFs7+4j22JOs3ea71o0= Name: res/layout/custom_default_preference_dialog.xml SHA1-Digest: 5nvWqkqbyYLDQhoAsNjl2z76MZI= Name: res/drawable-mdpi-v4/ic_recurrence_bubble_outline.png SHA1-Digest: X9whs15eFSBjKKHHunLVVSLqLmM= Name: res/drawable-hdpi-v4/ic_emoji_symbols_normal_dark.png SHA1-Digest: oNBzn63zb1OxF/k6815B5/eibZM= Name: res/layout-v21/conversation_item_received.xml SHA1-Digest: 0Y/LFUjsOHVoq2sbVA4KnTiFQU0= Name: res/drawable-hdpi-v4/ic_emoji_people_activated_light.png SHA1-Digest: ka7AtuzDVZzO8CkHunsbVIUpW8A= Name: res/layout/keyboard_with_header.xml SHA1-Digest: UHkiHpBlq7zA4uxcf8jYtv0RLFY= Name: res/drawable-xxxhdpi-v4/ic_block_white_18dp.png SHA1-Digest: kp/UblwOz/etZbQxR4yrlUEOrHQ= Name: res/layout/change_passphrase_activity.xml SHA1-Digest: q0/kYOZTKeWuuL/w8ByxnL5bxak= Name: res/drawable-xhdpi-v4/ic_emoji_objects_activated_light.png SHA1-Digest: wZ3Acttexos7A6oJL3O7FFUIplQ= Name: res/layout/abc_action_bar_up_container.xml SHA1-Digest: Mgt5FmUJbdaA9tDZq82OJCgjw2I= Name: res/drawable-xxxhdpi-v4/ic_done_white_18dp.png SHA1-Digest: Rbf+P82ITa290kP2akU2k43E0kQ= Name: res/drawable-xhdpi-v4/ic_photo_library_white_24dp.png SHA1-Digest: zPg23n5USvJHYa9lmspQbeQGJN4= Name: res/color-v11/abc_background_cache_hint_selector_material_dark.x ml SHA1-Digest: XEu3fV1TnwtDyw4lIFQ7Itsjbn0= Name: res/drawable-mdpi-v4/abc_ic_menu_copy_mtrl_am_alpha.png SHA1-Digest: N/67pvsZBjmVMkE2o1xqc73zW9s= Name: res/drawable-hdpi-v4/ic_menu_remove_holo_light.png SHA1-Digest: nZTetQY5mTYLAK/MMKDXzlkSnMo= Name: res/layout/calendar_year_label_text_view.xml SHA1-Digest: yYXg/r7Aq8FU5f+YXqa5C5DxDkE= Name: res/drawable-xhdpi-v4/ic_delete_black.png SHA1-Digest: WnUBAjx5U2ChxEEsHU1sSysOIas= Name: res/drawable-hdpi-v4/dialog_full_holo_light.9.png SHA1-Digest: gtwAYHIRv/QwIODG9Jmy17izcqo= Name: res/drawable-xxhdpi-v4/ic_group_white_24dp.png SHA1-Digest: Q12UZsK8n917gz1XIUlw/er+mI4= Name: res/drawable/contact_photo_background.xml SHA1-Digest: wcH56qoRh/roa5MfCRAUhY5VXOQ= Name: res/menu/conversation_unmuted.xml SHA1-Digest: iGPzWVNCvf+sAJqdMTdIpoAM4UA= Name: res/layout/design_navigation_item_header.xml SHA1-Digest: 9uJLltTeSW3lfOIzg6RogF+0o/g= Name: res/layout/thumbnail_view.xml SHA1-Digest: uxUYHCr7mt2PsZuulTpLlXWjkZY= Name: res/drawable-hdpi-v4/switch_thumb_disabled_holo_light.9.png SHA1-Digest: Oiup3l4uNF0B12bFkgZ5ZbKU4eM= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_358 SHA1-Digest: VvyTT/9LksUV4HPNbIQ7v9P3pTA= Name: res/drawable/clickable_card_light.xml SHA1-Digest: 8lkLIxn4WnkhbvSwoxrs5gc79hY= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_359 SHA1-Digest: s/VIZLolJRrHzUwl20EGXxrhYHU= Name: res/drawable-mdpi-v4/ic_contact_picture.png SHA1-Digest: rdAdnkTTWDxiwQxMCWPsJyZ9kkA= Name: res/drawable-mdpi-v4/lockscreen_watermark_light.png SHA1-Digest: kSry/5rdpYVffPBKS2Yy/krmC2M= Name: res/drawable-xxxhdpi-v4/ic_forum_grey_32dp.png SHA1-Digest: K0zHF9Qe78zRd6DBOF/ryBQqLq4= Name: res/drawable-mdpi-v4/ic_emoji_objects_activated_dark.png SHA1-Digest: 8/XqLH7wdHhdHp+lBfnlBlL3qsQ= Name: res/drawable-xxxhdpi-v4/ic_launch_white_24dp.png SHA1-Digest: zFUqw+W1bmn24GCoTwy7J0mdh0Y= Name: res/drawable-xhdpi-v4/ic_menu_login.png SHA1-Digest: h+9GxhWayTINb75PLctpU3fqo/0= Name: res/layout-v11/notification_action_tombstone.xml SHA1-Digest: z3AGq+so9/rq5YlSWdZdcGUfX0w= Name: res/drawable-mdpi-v4/abc_ic_star_half_black_48dp.png SHA1-Digest: 0CNoLGphB8nQx4lnLUddBN45dxY= Name: res/layout/audio_view.xml SHA1-Digest: 5L+vTIdOLG9H9cmMnX1bpAxx+EE= Name: assets/emoji_faces.png SHA1-Digest: 3iRFxvoz43yD5utC20esxUfeHtk= Name: res/animator/upper_pause_to_play_animation.xml SHA1-Digest: 04mBHR+Cgllch7nL8htY67n82OE= Name: res/drawable-mdpi-v4/ic_delete_gray.png SHA1-Digest: YFqTxhz+roGQPEIYd6mxxjyiS0s= Name: res/drawable-mdpi-v4/ic_clear_search_holo_light.png SHA1-Digest: BAZdjrg41tGSMJqyirk56aAiI24= Name: res/drawable-mdpi-v4/ic_menu_lock_dark.png SHA1-Digest: kCaLMoRhk42asn0qCSXaY42dnfg= Name: res/drawable-xxhdpi-v4/ic_emoji_objects_activated_light.png SHA1-Digest: JhVo49qB76KOWI311Wftlzd+j4c= Name: res/layout-v11/color_fragment.xml SHA1-Digest: GLHqEMogQFWvx4GeJprKsO/m1yo= Name: res/drawable-xxhdpi-v4/ic_mood_white_24dp.png SHA1-Digest: lxrg18UAdmtgHtJsqAnNlvLJ90U= Name: res/drawable-hdpi-v4/ic_pause_circle_fill_white_48dp.png SHA1-Digest: pJFbvpLCoMVp+U4emMzL6hREDH0= Name: res/drawable-v21/notification_action_background.xml SHA1-Digest: 7E6bypZdy1+qGZt27u/jewA0yZQ= Name: res/drawable-xxhdpi-v4/ic_advanced_gray.png SHA1-Digest: ztSx++CxHc+VAzAvdmA1ujHwLoc= Name: res/drawable-mdpi-v4/ic_send_white_24dp.png SHA1-Digest: T6rCWS01LZ6QvOVTFkODy5zzd8k= Name: res/drawable-xhdpi-v4/abc_scrubber_control_to_pressed_mtrl_005.p ng SHA1-Digest: deJMnJHFnu88BXcLutErBl0Yo7Q= Name: res/drawable-xhdpi-v4/abc_scrubber_track_mtrl_alpha.9.png SHA1-Digest: 1Ih2zOyUzHfQqptwXGLdPfBUSns= Name: res/drawable/background_pattern_repeat.xml SHA1-Digest: EEgb/vIb0/VFJJgS0/MIpgsTEn0= Name: assets/emoji_places.png SHA1-Digest: m/f0hGfQoPzldCayMIi+KuOkEX4= Name: res/drawable-hdpi-v4/abc_btn_radio_to_on_mtrl_000.png SHA1-Digest: /B3ilbfijKVVB8UBbI++gVsnSgk= Name: res/drawable-xxhdpi-v4/abc_scrubber_control_to_pressed_mtrl_005. png SHA1-Digest: TNZBS5Mf0wn0ezp54etHHBvWtmo= Name: res/drawable-ldrtl-xhdpi-v17/abc_ic_menu_copy_mtrl_am_alpha.png SHA1-Digest: Gfy9zjRcjMoDZ+/hXl+BaITIu3o= Name: res/layout-v16/color_fragment.xml SHA1-Digest: fCJuAB+3MIXvqkaqWkJfXEXt18I= Name: res/drawable-xxhdpi-v4/ic_dialpad_white_24dp.png SHA1-Digest: 9sPO853rsEByDo1QtXuOMwKljhI= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_373 SHA1-Digest: VeJdhu3EY8wQbzczMbiAueR3kcg= Name: res/drawable-mdpi-v4/quick_shutter_button.png SHA1-Digest: ESX5DUp6mmmodSPKnKnO3/Qecu8= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_372 SHA1-Digest: 9XbPZyYd/EeHczEcjCTlJ2wquFM= Name: res/drawable-mdpi-v11/icon_notification.png SHA1-Digest: E2jULYM5hS0byX94E3863fQxcVQ= Name: res/drawable-mdpi-v4/ic_emoji_people_activated_dark.png SHA1-Digest: PAMFXjP0EKgtzY6KVAHZX1eXASw= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_375 SHA1-Digest: PNdFFZIpo4wtdnnyz/Wp8jU8VF8= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_YT SHA1-Digest: Qq3+DtsB2AUCJnag1MiKcSkIn4s= Name: res/layout-v17/notification_template_media.xml SHA1-Digest: Gk9mHn5vRrwokTAoN/AeeLOYFtQ= Name: res/drawable/abc_ic_menu_overflow_material.xml SHA1-Digest: 2/LbV03oji/WgEclRTAtRRy1Sk0= Name: res/drawable-xhdpi-v4/switch_thumb_holo_light_v2.9.png SHA1-Digest: lTaQlla7wJWRfNbx/Hu+VJaDlXY= Name: res/layout/badge_widget.xml SHA1-Digest: HXdmZMCZc5Pcz5ZWGoSEDMucmO0= Name: res/drawable-mdpi-v4/spinner_pressed_holo_light.9.png SHA1-Digest: O8B882Dl2Rt2oOS4plpeX8GCUAQ= Name: res/menu/conversation_mms_group_options.xml SHA1-Digest: m5OqDr/5KrnZNZquUXM00d/DYzQ= Name: res/layout-v17/contact_selection_list_item.xml SHA1-Digest: n0ajHyKjqMdxvlhDv4NebmvXVqA= Name: res/drawable-xhdpi-v4/quick_shutter_button.png SHA1-Digest: WAs3uJg+YYm14gsaEJtWq3uDpag= Name: res/drawable-hdpi-v4/transfer_controls_background.9.png SHA1-Digest: bB3l+bAb+LvTfoWtF9LZilz3X5E= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_380 SHA1-Digest: E0pemWil3+yoXcDS1xZEp8+FN3I= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_381 SHA1-Digest: xZ5XwW7Jz0Hhq9Odxqo803v/5Ws= Name: res/drawable-xxhdpi-v4/ic_mood_grey600_24dp.png SHA1-Digest: ozFX51RmDk7zD2chVTYJX3EOxc8= Name: res/drawable-xxhdpi-v4/ic_visibility_white_24dp.png SHA1-Digest: oDeY2Y3QAl5irGgMIuHx15wKQN4= Name: res/drawable-hdpi-v4/list_selected_holo_dark.9.png SHA1-Digest: hSLKqpeDDArxDLbgz2eUcpI9DhU= Name: res/drawable-mdpi-v4/ic_menu_search_holo_dark.png SHA1-Digest: wOzQ4BmFOb8qY/k0XGb+6vb6K7M= Name: res/drawable-xxhdpi-v4/splash_logo.png SHA1-Digest: L78TqBl/ZHtZALdnwct3mJXsQ0E= Name: res/layout-v17/conversation_item_received.xml SHA1-Digest: zENI4B5CfE+nYXVK5U/arYf5/Jo= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_ZA SHA1-Digest: P3VCad7HZosxVksUO+IxS0Y7qo4= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_385 SHA1-Digest: 800patLGNib6NsjVJcV7fh1yw1A= Name: res/menu/conversation_secure_identity.xml SHA1-Digest: tVQRPh9+TaRar2ja//rcjoPGgsw= Name: res/drawable-xhdpi-v4/telephone.png SHA1-Digest: XiCzVPlsMJsf/rb/Z2RUqQs1Jfo= Name: res/drawable-xxxhdpi-v4/ic_send_secure_white_24dp.png SHA1-Digest: auRbXFYO8NtTyqn1mERzefiJ55Q= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_ZW SHA1-Digest: Oj4Ne9co0PEillrIX6/ivUwastM= Name: res/drawable-xxxhdpi-v4/abc_btn_radio_to_on_mtrl_000.png SHA1-Digest: VL2tp5Ko2rl1muvR0Gd7YEtwUdY= Name: res/drawable-mdpi-v4/abc_text_select_handle_right_mtrl_light.png SHA1-Digest: ahadZNpUX2odmzJlr7li4wRLOVg= Name: res/drawable-xhdpi-v4/ic_action_warning_red.png SHA1-Digest: 5fXPbDRpgMlXeIp6WjFDhU9e+Bs= Name: res/drawable-xhdpi-v4/spinner_pressed_holo_light.9.png SHA1-Digest: l07AAjv4APfDSMj2gVcl4QIryn4= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_ZM SHA1-Digest: NFg9ICpsCKoGQPESt61rjEjKQPI= Name: res/drawable-v21/abc_ratingbar_indicator_material.xml SHA1-Digest: TaCO4rsv95JHS3RML2c940eQ9U8= Name: res/drawable/abc_cab_background_internal_bg.xml SHA1-Digest: OpZTAPON/eHCLK5xEp9Ei2cska4= Name: res/layout/conversation_item_pending.xml SHA1-Digest: eTPQKrzfdGjno8iGRKrmbKxoxbQ= Name: res/drawable-mdpi-v4/ic_missing_thumbnail_picture.png SHA1-Digest: q/a7ftqNdAV6f9nCbSU2PeMXBXE= Name: res/drawable-ldrtl-xxhdpi-v17/abc_spinner_mtrl_am_alpha.9.png SHA1-Digest: IsziyF2OBzAviNmnk3+DRoNCmAA= Name: res/drawable-xxhdpi-v4/ic_info_outline_white_24dp.png SHA1-Digest: cWrQw6vVdsRo290b2sLjivDwPVw= Name: res/layout/import_fragment.xml SHA1-Digest: 7FrulvyXhotkn+GNiI5StvYyi/o= Name: res/layout-v13/select_dialog_multichoice_material.xml SHA1-Digest: qFrnA4LpADzWJJ/RBfYVgAaSR7M= Name: res/drawable-xhdpi-v4/ic_recurrence_bubble_outline_disabled.png SHA1-Digest: Ib+t7PgeUwIktdmtc1DDu245Qpo= Name: res/drawable-hdpi-v4/abc_ic_menu_cut_mtrl_alpha.png SHA1-Digest: kl6Gqu1dkwDjsHbQTjiEEaVCJG4= Name: res/drawable-mdpi-v4/sms_selection_icon.png SHA1-Digest: 2/XFQD5mEqqjzCYSeQ7wZaJV97I= Name: com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsPro to_855 SHA1-Digest: GFR3JT2vrXUV4AaCWsbkvT1AlX0= Name: res/drawable-mdpi-v4/ic_emoji_objects_normal_dark.png SHA1-Digest: k7TKJAFDa8dHVGD58qFSZTt3Y5k= Name: res/drawable-hdpi-v4/abc_tab_indicator_mtrl_alpha.9.png SHA1-Digest: XUUeghiBJli27nxrwf5sxQ8N90c= Name: res/drawable-xxhdpi-v4/ic_call_white_24dp.png SHA1-Digest: 0Nwk5dMkNeN14v6ptiSdHiEmaqc= Name: res/drawable/abc_ic_clear_material.xml SHA1-Digest: traTi6O31OhEtbvMNJ8PYJjtDME= Name: res/drawable-mdpi-v4/abc_scrubber_control_to_pressed_mtrl_005.pn g SHA1-Digest: +7fQsrk4ONIq9nPWtO1eTM8C1HQ= Name: res/layout/conversation_item_received.xml SHA1-Digest: wAV7JPKTeTXudSF0UsoJ/5i/a2A= Name: res/drawable/abc_list_selector_background_transition_holo_dark.x ml SHA1-Digest: fAkCuPln1zmCTatmP9A40U4lWak= Name: res/drawable-xxhdpi-v4/abc_scrubber_control_to_pressed_mtrl_000. png SHA1-Digest: u9/W8GO9j1WSsX3sxW3nEXn/Dag= Name: res/drawable/clickable_card_dark.xml SHA1-Digest: wf6TFqfzuGakZpMN716tnvOPuu8= Name: res/drawable-xxhdpi-v4/ic_emoji_recents_normal_dark.png SHA1-Digest: rYNP4o9mLGb4hRuFbzgasSMPsSQ= Name: res/drawable-anydpi-v21/design_ic_visibility_off.xml SHA1-Digest: zGvQADjKorrDtblDDeg+FD7MgFo= Name: res/drawable-xhdpi-v4/ic_backspace_normal_light.png SHA1-Digest: Cxntk1NvNFPcycg7iEDABNhjN7U= Name: res/drawable-xxxhdpi-v4/abc_ic_menu_copy_mtrl_am_alpha.png SHA1-Digest: 1w/uxs4HAVVuv0NcdbFmy9M8R9E= Name: res/drawable-hdpi-v4/abc_scrubber_control_off_mtrl_alpha.png SHA1-Digest: SFBbwGMV04UxzF/PgrJITyguwKY= Name: res/drawable-hdpi-v4/ic_textsms_black_32dp.png SHA1-Digest: jRpWGSk+5HVbTgEqSMHBKC67+AY= Name: res/drawable/import_export_item_background_dark.xml SHA1-Digest: 9N3yMYN2WLqHwcDCi+qj8GtlZZs= Name: res/drawable-xxhdpi-v4/abc_btn_radio_to_on_mtrl_015.png SHA1-Digest: XEff6jUDEFWHjcuOO3DKy9ou9IE= Name: res/drawable-xxxhdpi-v4/ic_send_white_24dp.png SHA1-Digest: p+LvghVtu4UqmCjQ78gODCMOPww= Name: res/drawable-hdpi-v4/abc_text_select_handle_left_mtrl_light.png SHA1-Digest: OpHRWN2MnxLTK9nhx0Qp9JkgMgY= Name: res/drawable-xhdpi-v4/ic_movie_creation_dark.png SHA1-Digest: kamdG6A5SiThWfBULcd3GxjUm7k= Name: res/drawable-mdpi-v4/ic_visibility_grey600_24dp.png SHA1-Digest: 2fN5+MsicC71y5iO7uVx2iKZtYg= Name: res/drawable-sw600dp-xhdpi-v13/ic_backspace_normal_light.png SHA1-Digest: oO+QVqafnv8qjkKRnUlJc8QC4n0= Name: res/drawable-xxxhdpi-v4/abc_ic_star_black_36dp.png SHA1-Digest: WP2ybY6ZxFUdosC8joKLUcGVas0= Name: res/drawable-xhdpi-v4/ic_content_copy_light.png SHA1-Digest: R/WGz4ly9BQx9UFQZS6XK6iP7xY= Name: res/drawable-hdpi-v4/switch_thumb_activated_holo_light.9.png SHA1-Digest: CctxDSFOgITRJNMJX0mhtDzP4DE= Name: res/drawable-hdpi-v4/ic_emoji_emoticons_activated_dark.png SHA1-Digest: Bs1Bqjn+kjMGOUdmhxHl15R2xFU= Name: res/menu/conversation_muted.xml SHA1-Digest: rrsJ3gK/wiwHJ8EhFDM1gMYF/0c= Name: res/drawable-hdpi-v4/quick_shutter_button.png SHA1-Digest: BqCkbyqDSI7Jt7t8InYASdnPvSM= Name: res/layout/country_list_item.xml SHA1-Digest: 5/z34addyDwgm8fiRrEEt8My/KM= Name: res/layout/calendar_date_picker_view_animator.xml SHA1-Digest: TmLeWqfPUZCkJnKPofJIJK5ryPQ= Name: res/anim/fade_scale_in.xml SHA1-Digest: BGInYJ2dY+FwSHntv4EVZBJwXyI= Name: res/color/done_text_color_dark.xml SHA1-Digest: semtkjG+av9bQR2kNxjnl0cAQ7o= Name: res/drawable-hdpi-v4/notification_bg_low_pressed.9.png SHA1-Digest: x1+Ev4K1aYghXofr0W+mR6oQ9jY= Name: res/layout/three_keys_view_leftright.xml SHA1-Digest: Q7XV2rjXlsx7a1S7PedyYL0Z6XU= Name: res/drawable-hdpi-v4/ic_recurrence_bubble_disabled.png SHA1-Digest: hBR+uzZZXVxyq0bgo0t+U27GnPo= Name: res/drawable-hdpi-v4/ic_menu_search_holo_light.png SHA1-Digest: 0xap1Yr5UvJG1QLDXGeX8i7NEXo= Name: res/layout/design_bottom_sheet_dialog.xml SHA1-Digest: AUJOvlYtmk2AHWv8r3H3P51ZSjE= Name: res/drawable-xxhdpi-v4/ic_emoji_people_normal_dark.png SHA1-Digest: At3lTHNov8OBeIUQE7U2sn3LKdo= Name: res/drawable-xhdpi-v4/ic_photo_camera_light.png SHA1-Digest: FFzT14+B7/XGX4HflN7I8cdbh7k= Name: res/drawable-hdpi-v4/ic_photo_library_white_24dp.png SHA1-Digest: eYroMt+yGNPb/16vvouAKc2CbKU= Name: res/layout/abc_action_mode_close_item_material.xml SHA1-Digest: GW4gZZBmozoKOPFYj0bl8BW78s4= Name: res/drawable-xhdpi-v4/ic_content_copy_dark.png SHA1-Digest: gU/qQLQneKsb2HgbEbByIFGmIbM= Name: res/drawable-xxhdpi-v4/ic_info_outline_dark.png SHA1-Digest: n8IwvoROTVOfrGqhbeVi6X1AD1E= Name: res/drawable-hdpi-v4/spinner_pressed_holo_light.9.png SHA1-Digest: 5Tb20GpfyWPdfk68H93Ix+I70zE= Name: res/layout/design_layout_tab_icon.xml SHA1-Digest: OpgFVS39nmdZdRaCD4FzFLJt5h4= Name: res/drawable/item_background_holo_light.xml SHA1-Digest: lVD3wxMY6nk5LM/+t5mdn7blE3A= Name: res/drawable-mdpi-v4/abc_btn_switch_to_on_mtrl_00001.9.png SHA1-Digest: sORfnhpPIEXLnh57veYnu5sMZD0= Name: res/layout-v11/notification_template_big_media_narrow_custom.xml SHA1-Digest: lhEcCM3i0Nk4a1d97lyyozXYFUU= Name: res/drawable-xhdpi-v4/ic_backspace_disabled_dark.png SHA1-Digest: ypl7jxS4XrvwcBL7PFMbZK58BBo= Name: res/drawable-v21/abc_btn_colored_material.xml SHA1-Digest: Exeq8outkyCU3j4roUcAlNp7sYk= Name: res/drawable-xxxhdpi-v4/ic_download_circle_fill_white_48dp.png SHA1-Digest: H94FdKukmjyUrOwyacThnnNZEXs= Name: res/drawable-v11/notification_bg.xml SHA1-Digest: I1JcXdPPUQIoR7Lb18Lxi3LkwvY= Name: res/layout/notification_template_lines_media.xml SHA1-Digest: 6+p+3lkeRlnuyDGgb7A7hf9gFbc= Name: res/drawable-anydpi-v21/design_ic_visibility.xml SHA1-Digest: fn7TJtWncGazXT707hmOkjb7Hjk= Name: res/drawable-mdpi-v4/ic_refresh_white_24dp.png SHA1-Digest: EQyqpYasmoTClIK+uuxMKIzOjX4= Name: res/drawable-mdpi-v4/abc_textfield_default_mtrl_alpha.9.png SHA1-Digest: QAKVB+ymS1bLJVZt/mVSPtEVFH4= Name: res/drawable/abc_btn_radio_material.xml SHA1-Digest: npSvWgijFi0d2VFF3dOZmjf+WBQ= Name: res/menu/conversation_callable.xml SHA1-Digest: SiEu8jM36aCHN/6UTKbnaLPvbks= Name: res/drawable-hdpi-v4/ic_advanced_black.png SHA1-Digest: 4l1EzaQairF8PIGrWNP7KjxlUiY= Name: res/drawable-v11/emoji_category_people_light.xml SHA1-Digest: /qr2mFhRvZmr51s+/QBV+j3wFZU= Name: res/drawable-mdpi-v4/abc_ic_menu_cut_mtrl_alpha.png SHA1-Digest: K1sCoF6dhKG/axzbYGHK9kB3C+Q= Name: res/drawable-hdpi-v4/ic_emoji_people_normal_dark.png SHA1-Digest: pLARhgTZbjUa7/9j5K+uo/0WtBE= Name: res/drawable-xxhdpi-v4/abc_tab_indicator_mtrl_alpha.9.png SHA1-Digest: DjgjddBKSH0OILJhqJkZXAYKmKg= Name: res/layout/keyboard_text_with_header.xml SHA1-Digest: nOekCMLOv7KiP15NBo87M/Pivzo= Name: res/layout/transfer_controls_stub.xml SHA1-Digest: MX3Bo85Lp6Uf92KqntyrIFCQBWU= Name: res/drawable-xxxhdpi-v4/ic_keyboard_white_24dp.png SHA1-Digest: 9EqfIMdh+YfOoSoBvSkWKV36gNw= Name: res/drawable-hdpi-v4/ic_emoji_nature_normal_light.png SHA1-Digest: XWlFZlM/6FX89ShDQYgI2dyH/B0= Name: res/drawable-hdpi-v4/ic_backspace_normal_light.png SHA1-Digest: vy4xZjN8wjI7KA8BWgZV3NndRM8= Name: res/layout/calendar_date_picker_header_view.xml SHA1-Digest: /86yi1DVNOflGh8oEIT6nHq8oYo= Name: res/drawable-mdpi-v4/design_ic_visibility.png SHA1-Digest: IqZoFoiND+uGXpPyKS/D1WgufPg= Name: res/drawable-xxhdpi-v4/abc_cab_background_top_mtrl_alpha.9.png SHA1-Digest: fWFzmRTvlhVZBzFAxTslbjQMJB4= Name: res/drawable-xhdpi-v4/abc_ic_star_black_36dp.png SHA1-Digest: iKusdXnTG07KT152X2hnsP7XAQo= Name: res/drawable-xhdpi-v4/ic_message_white.png SHA1-Digest: fbsfEqwsJ0tjoZE0hNlvV+b0qHg= Name: res/drawable-mdpi-v4/abc_scrubber_control_off_mtrl_alpha.png SHA1-Digest: vMOEpPnU4ypvMmrbnkpxDB3M4eM= Name: res/drawable-xxhdpi-v4/ic_account_box_dark.png SHA1-Digest: bA+xleAg2iE4sEWwUoJ+lXMnlNo= Name: res/drawable-sw600dp-hdpi-v13/ic_backspace_normal_light.png SHA1-Digest: 9lxexc7vtXhIqELJvJyZMfXE1Ss= Name: res/drawable-hdpi-v4/divet_lower_right_dark.png SHA1-Digest: wP+labhUt9bVEMloEG5PoqrjPHY= Name: res/layout-v16/centered_app_title.xml SHA1-Digest: 2z1eQ56R2gDR8kSMnmlGLTPnXcY= Name: res/menu/conversation_insecure_no_push.xml SHA1-Digest: qHOiXgEtRSYUhLWKLvX5rhwwiGI= Name: res/drawable-mdpi-v4/ic_delivery_delivered_dark.png SHA1-Digest: wpU/Tsm7KtmQ/fqTo+oos4D+7Pc= Name: res/drawable-mdpi-v4/ic_scroll_down.png SHA1-Digest: +5IhB96OyRB+P6MHLAQAZeKGvwI= Name: res/drawable/abc_item_background_holo_light.xml SHA1-Digest: ku9bJ9xYD07lS3GZhes5DH5hi7U= Name: res/drawable-hdpi-v4/abc_btn_switch_to_on_mtrl_00012.9.png SHA1-Digest: Bj6BC2+QG7pc8RQwt/bo9WgmUR0= Name: res/color-v23/design_tint_password_toggle.xml SHA1-Digest: wUyUHwcmGGXYL1JhhWMPQVcf7hA= Name: res/drawable-xhdpi-v4/ic_keyboard_grey600_24dp.png SHA1-Digest: iNbhPYH7gI/65q5bf84nezr+hSw= Name: res/animator/rotate_minus_90_animation.xml SHA1-Digest: BuCc2mfyfzB/zJMaWWncVTSkoKM= Name: res/drawable-hdpi-v4/ic_image_dark.png SHA1-Digest: 9kta2ksiC5yxLPcwrfPBZHVdtbQ= Name: res/layout/abc_popup_menu_header_item_layout.xml SHA1-Digest: cXVPf20uVygnE264bcuEa06mRPQ= Name: res/drawable-xhdpi-v4/textfield_disabled_focused_holo_light.9.pn g SHA1-Digest: 5B5Y1sO935jPXP0SPaRMQdqzKvI= Name: res/drawable-xxhdpi-v4/ic_pause_circle_fill_white_48dp.png SHA1-Digest: kKjYOuOpFYBK00EYwdKh/FYMeB0= Name: res/layout/database_migration_activity.xml SHA1-Digest: qtevjvESyGIAKlaaHcTVvFivDEg= Name: res/drawable-xxhdpi-v4/ic_volume_up_light.png SHA1-Digest: HJdq6skIdWI/kSrfFnt6D0r+GxE= Name: res/drawable-xxhdpi-v4/ic_circle_fill_white_48dp.png SHA1-Digest: HSvmtSZQCTVP93CnzYBlK3yHAbE= Name: res/layout-v17/conversation_item_sent.xml SHA1-Digest: dhBiGtMXhEIPWzr5H1gqS0QmrGs= Name: res/drawable/conversation_item_sent_indicator_text_shape.xml SHA1-Digest: gjE0kwExarnHKCBzEcSlNUDsC0I= Name: res/drawable-xxhdpi-v11/icon_cached.png SHA1-Digest: E8iyhY8Yt68zCmnuOO+rk/5Vq2E= Name: res/drawable-xxhdpi-v4/ic_emoji_nature_normal_dark.png SHA1-Digest: qvPNkQ4kgg5OJMnrffAW7nShfes= Name: res/layout/video_player.xml SHA1-Digest: BuhNr7gl0JYIYva/P680FXCcprQ= Name: res/drawable-mdpi-v4/ic_backspace_normal_light.png SHA1-Digest: XLVO12/7C+tQkw5aPeE3ILQ9cI4= Name: res/drawable-xhdpi-v4/icon_dialog.png SHA1-Digest: v3eLJ3OgDgovfl3il+qazPMrAQk= Name: res/drawable-hdpi-v4/ic_search_holo_light.png SHA1-Digest: KbFl7RLjRTGlTIPIu1Vgqw2GO1A= Name: res/drawable-xxxhdpi-v4/icon_cached.png SHA1-Digest: VZZoa23taaL3+aQJQMgNmDAvXOs= Name: res/color/recurrence_spinner_text_color.xml SHA1-Digest: dlRxYbAqKQnnnrUVFpgDY5OD+Hw= Name: res/drawable-hdpi-v4/ic_brightness_6_gray.png SHA1-Digest: 01HgaZfDz74Q+6hlCKGQYqnVMeA= Name: res/anim/design_bottom_sheet_slide_out.xml SHA1-Digest: uTMw35lL6zfB58m4Npj1tkUwCKs= Name: res/drawable-hdpi-v4/ic_advanced_gray.png SHA1-Digest: wiOv8b8dKfTYGJI1iZoCasjZbJM= Name: res/drawable/abc_ratingbar_material.xml SHA1-Digest: dQYfnGBvF3NoNPyyD+NZnOWv73w= Name: res/layout-v21/abc_screen_toolbar.xml SHA1-Digest: c6PHptjlDcIIjsVPCryceAZF3qA= Name: res/drawable-xxxhdpi-v4/ic_photo_camera_dark.png SHA1-Digest: RiWmiAzdH8XswRoWaThmwhpSR58= Name: res/layout/date_picker_dialog.xml SHA1-Digest: TG7jySd28roaL3HtDfJn6hYIP5s= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_979 SHA1-Digest: dqFdRTRBu8qABvUu4oPcGOhjXwg= Name: res/drawable/white_radius.xml SHA1-Digest: fmmwZ1xdiLKhbP7MVdTnY4KFGjc= Name: res/drawable/abc_item_background_holo_dark.xml SHA1-Digest: M0YVK8Qdk4ReRL9EAtEpVn58SLc= Name: res/drawable-hdpi-v4/sms_system_import_icon.png SHA1-Digest: p0FwBdO0i3J1NGN/HenlojXr8f8= Name: res/drawable-hdpi-v4/ic_push_black.png SHA1-Digest: ZvdjVsdLxH0gBqQ1PdWsbLKd34U= Name: res/drawable-hdpi-v4/ic_emoji_flags_normal_light.png SHA1-Digest: ZzWFcSV91qSF87GEePVsoqGaERM= Name: res/drawable-xxhdpi-v4/ic_done_white_18dp.png SHA1-Digest: bKAJwtwxPE29bJdHRdAoqgw5Qbc= Name: res/drawable-xhdpi-v4/abc_list_longpressed_holo.9.png SHA1-Digest: /HDLqKYSwxPWi6ihR75E/oot/mo= Name: res/drawable-xhdpi-v4/ic_textsms_black_32dp.png SHA1-Digest: oqLbYDw4OWuVaNkiBeRLej7kuLo= Name: res/layout-v17/abc_select_dialog_material.xml SHA1-Digest: XhivagTkM42eJCtTl5LKhzffpPE= Name: res/drawable-xxhdpi-v4/ic_send_white_24dp.png SHA1-Digest: jPgl1DeE6qTNGQE5Gn9FrnS+fBk= Name: res/drawable-xhdpi-v4/ic_push_registration_reminder.png SHA1-Digest: t2WKBQ5mpFyToqVHEHKRcaZZzz4= Name: res/layout/conversation_activity_emojidrawer_stub.xml SHA1-Digest: t1a8C6MNcoHCQIVqcvozm7/mkuQ= Name: res/drawable-xxhdpi-v4/abc_btn_check_to_on_mtrl_015.png SHA1-Digest: uGWvmzDJW1Tm49ULXgHdjHtvfwc= Name: res/drawable-xhdpi-v4/ic_add_white_24dp.png SHA1-Digest: xdyoQCLkXu/QWm8eiR5yHAyCEcg= Name: res/drawable-xhdpi-v4/ic_clear_white_24dp.png SHA1-Digest: 73PnLlktjynlAL9dc5op3jz/sT4= Name: res/drawable-xxxhdpi-v4/ic_photo_library_white_24dp.png SHA1-Digest: CYGOrsdjU4wbC903pey4k/K7TDI= Name: res/drawable-xhdpi-v4/abc_ic_star_half_black_16dp.png SHA1-Digest: p77+iJXOm0qrONaejSCLhWIgXoU= Name: res/drawable-xhdpi-v4/notification_bg_normal.9.png SHA1-Digest: jZ3Gp8XAjOt3IlouqhB/Qse7VuA= Name: res/drawable-xhdpi-v4/ic_check_normal_light.png SHA1-Digest: mZkGBjdzIEziwyUJXR4Hgsr1Ex0= Name: res/drawable-mdpi-v4/ic_archive_white_24dp.png SHA1-Digest: qaNI/E3+5JP4Y0EqCBMbYDSCCqA= Name: res/layout/psts_tab.xml SHA1-Digest: o9imNXCn5LOJeFwUrKL9ym55zsc= Name: res/drawable-hdpi-v4/ic_audio_dark.png SHA1-Digest: 6p5nnRQVfPOnYKSUc7LDnWH8fnM= Name: res/drawable-mdpi-v4/ic_emoji_flags_activated_light.png SHA1-Digest: iKK5lkuDk6cgUSxkBjhc7JY1yjI= Name: res/layout-v11/conversation_fragment.xml SHA1-Digest: tEDFwezd29uGZo25Hmrto9fLVfw= Name: res/drawable-hdpi-v4/ic_app_protection_black.png SHA1-Digest: cGFicbnfWgsXiuQjC2yONt0+mNk= Name: res/drawable-hdpi-v4/ic_select_all_white_24dp.png SHA1-Digest: IoR1V7p/3eSsRZqiDIR1fVhtwWg= Name: res/drawable-xxhdpi-v4/ic_photo_library_white_24dp.png SHA1-Digest: hGymLWfgo7k13mfYiomvgpFoGzM= Name: res/drawable-mdpi-v4/ic_recurrence_bubble_fill.png SHA1-Digest: DmXcKYa6S5gB9AZsUldis3sqvPU= Name: res/layout/conversation_item_last_seen.xml SHA1-Digest: 99xLTy2kmZYjpoUuhkydWVW4UNk= Name: res/drawable-xxhdpi-v4/ic_advanced_black.png SHA1-Digest: 79lGVOoBDIYXCTErbr1NvP9Ct9M= Name: res/layout/contact_selection_recyclerview_header.xml SHA1-Digest: Fbz73NjxKw6n9EpmxRB7nv90lFA= Name: res/drawable-xxhdpi-v4/ic_recurrence_bubble_fill.png SHA1-Digest: byPothetufoz83PimCg+81vAW4E= Name: res/drawable-xhdpi-v4/ic_emoji_symbols_activated_dark.png SHA1-Digest: fIQ05wTvHbvpp7fYbZBSzwjuEJw= Name: res/drawable-hdpi-v4/icon_lock.png SHA1-Digest: chwtrHwrmuVUJF5trfB+fonxkyc= Name: res/drawable-mdpi-v4/abc_list_longpressed_holo.9.png SHA1-Digest: jaCqE8RSPyJL2tSTf5ctOZ8Wkp8= Name: res/menu/conversation_insecure.xml SHA1-Digest: 0XziGIUFD2b2uJT/iL/FNk2Oi40= Name: res/layout/three_keys_view.xml SHA1-Digest: eHLBCUAInSvPhL7P/FkER4kgJpI= Name: res/layout/time_picker_view.xml SHA1-Digest: +9O4VWyQ2+LCyq94Q4OcgUpPcbw= Name: res/drawable-xxhdpi-v4/abc_popup_background_mtrl_mult.9.png SHA1-Digest: nM7eMb1IwRTSPeCUiRnPcn3CGRw= Name: res/drawable-xhdpi-v4/abc_textfield_activated_mtrl_alpha.9.png SHA1-Digest: /UEK2xt/qrP3cCJflXSymHBKVrQ= Name: res/drawable-xhdpi-v4/ic_send_sms_secure.png SHA1-Digest: ryMNyBeVzQX0/4AT1TsTXbbp8kA= Name: res/drawable-xxxhdpi-v4/design_ic_visibility.png SHA1-Digest: Jrr2auhCHctL/z4MV65aRgZbDv4= Name: res/drawable-hdpi-v4/ic_delivery_delivered_dark.png SHA1-Digest: oDh4cyrMHk++7kt5u67Kfj07WGo= Name: res/drawable-xxhdpi-v4/ic_call_split_white_24dp.png SHA1-Digest: ww/+BoXzjWC6pIW0UWy3iPTDXSw= Name: res/color/abc_secondary_text_material_light.xml SHA1-Digest: M/vEx1FuZRUURwyMWQad1XJkERQ= Name: res/drawable-hdpi-v4/ic_emoji_people_activated_dark.png SHA1-Digest: 1n23BX7ktYtdz2tzo2K3I2f1Uek= Name: classes.dex SHA1-Digest: JarClbzDn/6wUkVRjrwX/+SFx2k= Name: res/layout/abc_screen_content_include.xml SHA1-Digest: Qy4yTXeEqDx3ZNR+CxiliBg224M= Name: res/drawable-hdpi-v4/switch_bg_focused_holo_light.9.png SHA1-Digest: Uu0jDWQm42BXRa5E8t530Qt9aEI= Name: res/drawable-hdpi-v4/abc_spinner_mtrl_am_alpha.9.png SHA1-Digest: 9HmgRLugE7XLFQSCcDKTHa0FfIU= Name: res/drawable-xhdpi-v4/abc_scrubber_primary_mtrl_alpha.9.png SHA1-Digest: MRB8bfz87PDQFDWGNEetiXxTiwY= Name: res/color/abc_hint_foreground_material_light.xml SHA1-Digest: I8Ds4hXXhIubmvL5DNX6Tn1EfSI= Name: res/drawable/switch_thumb.xml SHA1-Digest: uD+ge0ZrXQlCCV1iqqfA3aJAg9c= Name: res/drawable-xhdpi-v4/ic_send_sms_insecure.png SHA1-Digest: 4VIdZ809NFUqx/UPenMJ7D874fM= Name: res/drawable-xhdpi-v4/ic_send_push.png SHA1-Digest: 8v0rupvoADhU++O8r/y24H66WzQ= Name: res/drawable-mdpi-v4/abc_list_focused_holo.9.png SHA1-Digest: P0wooDvrgcWxD6FuObhOb0leW5c= Name: res/drawable-mdpi-v4/ic_audio_dark.png SHA1-Digest: zhpozyc7RnIEux36uvVpLpHvoYQ= Name: res/layout/conversation_item_pending_v11.xml SHA1-Digest: BIdce4ZfxHvQJw2Kpy77LuiSNAM= Name: res/drawable-hdpi-v4/ic_unarchive_white_36dp.png SHA1-Digest: WDXJE78HXhC4ci2+Zk4mWKmsmnU= Name: res/drawable-xxhdpi-v4/ic_photo_camera_light.png SHA1-Digest: EOo/n6OaIvn7/oE1A05+ICtODt8= Name: res/drawable/done_background_color_dark.xml SHA1-Digest: VF0ZGwzrktCT7fzYmlJNmcLtSPU= Name: res/drawable/abc_ic_go_search_api_material.xml SHA1-Digest: PB/HXCss38YyHIfl5zY8qJqidxk= Name: res/drawable-xhdpi-v4/abc_textfield_default_mtrl_alpha.9.png SHA1-Digest: wxS5Do9e7cCh/fgOCbgTwd/ZeDE= Name: res/drawable-xxxhdpi-v4/ic_badge_24dp.png SHA1-Digest: 6NFopP31wSBougmiMFJ/ha7R5/g= Name: res/color/switch_thumb_material_light.xml SHA1-Digest: gulAt9uew9Th4qbVyV+/+NDOoRQ= Name: res/drawable-xxhdpi-v4/ic_push_black.png SHA1-Digest: 9iMVgo9s/BTUDPMsVuQpjGH2iDQ= Name: res/animator-v11/rotate_minus_90_animation.xml SHA1-Digest: uBdoND/8IkPM8vaObJcyA86WNN0= Name: res/drawable-ldrtl-hdpi-v17/abc_ic_menu_copy_mtrl_am_alpha.png SHA1-Digest: i+D8jpgrDBK7ho3fPTIxkDeM6rM= Name: res/color/dialog_text_color_holo_light.xml SHA1-Digest: sla+7cKXzMuT4rMqnPPlnGrGwI8= Name: res/drawable-xxhdpi-v4/icon_dialog.png SHA1-Digest: 7htL/8mxE7HuKjrIiEujDYbhXZ4= Name: res/drawable-xhdpi-v4/ic_menu_lock_dark.png SHA1-Digest: RLs+N2EZOJI6nQEGc7gs7kTHNMA= Name: res/drawable-hdpi-v4/ic_save_white_24dp.png SHA1-Digest: va4B2UZYQ357PZmHAnQqrns5hyg= Name: res/drawable-mdpi-v4/ic_check_white_24dp.png SHA1-Digest: lycMfpZqD30AJNacCIEKdpzktjU= Name: res/drawable-mdpi-v4/abc_btn_check_to_on_mtrl_015.png SHA1-Digest: lNuUT0ocSjvW/jki9WBE/Zw/lfA= Name: res/drawable-hdpi-v4/abc_text_select_handle_left_mtrl_dark.png SHA1-Digest: l7zskEgFzcvaKQ3ac893RSnOFG4= Name: res/drawable-xxhdpi-v4/switch_bg_disabled_holo_light.9.png SHA1-Digest: Z13MCJ8z/h7AxU4mFC97sSSvf/E= Name: res/drawable/pause_icon.xml SHA1-Digest: uWh0vL+kjTwWGZdrJ4+2fFtoJmc= Name: res/drawable-hdpi-v4/ic_keyboard_grey600_24dp.png SHA1-Digest: S1yK9PAKEF0wcf3IpadF0QSavA8= Name: res/drawable-xxhdpi-v4/abc_ab_share_pack_mtrl_alpha.9.png SHA1-Digest: CwBgZCf6HQH3oXQJ4vFliod7poc= Name: res/drawable-hdpi-v4/textfield_focused_holo_light.9.png SHA1-Digest: G+sjjsHiKMXPwXhMYcjptrXj5oc= Name: res/drawable/recycler_view_fast_scroller_handle.xml SHA1-Digest: SdRfCp+VhZO6lfe8HeZXlw0zYSs= Name: res/drawable-hdpi-v4/ic_movie_creation_light.png SHA1-Digest: jMpWCxFLChXXQKRH//uQ5eJhDR0= Name: res/drawable-hdpi-v4/switch_bg_holo_light.9.png SHA1-Digest: 84PBAh8/+LjExDRXzcAPH20FsL4= Name: res/drawable-v11/emoji_category_flags_light.xml SHA1-Digest: 4WJXwjHnNYAoh7PsjTRxu/DnfiY= Name: res/drawable-hdpi-v4/ic_emoji_people_normal_light.png SHA1-Digest: UbowkgVOW71RAjjFUGL5QeJotBo= Name: res/drawable-xxhdpi-v4/abc_ic_menu_copy_mtrl_am_alpha.png SHA1-Digest: kW1/B+eMvi5Qa6pHdpol8Np5LOE= Name: res/drawable-xxhdpi-v4/abc_text_select_handle_right_mtrl_dark.pn g SHA1-Digest: U8rdfuKZoulQ8qigYFR2oBTsdvo= Name: res/drawable-xhdpi-v4/abc_ic_menu_cut_mtrl_alpha.png SHA1-Digest: Rnyk862Fak5QBrH16XFG0gnr96c= Name: res/drawable-xhdpi-v4/ic_notifications_gray.png SHA1-Digest: /uLa66vcY/KDIz8g/5UUGqTgdZQ= Name: res/drawable-hdpi-v4/telephone.png SHA1-Digest: zxNQuZWAA4RKS8tts+BlX5qthPU= Name: res/drawable-mdpi-v4/ic_emoji_symbols_normal_light.png SHA1-Digest: wk94ZEu0bo997UCXWcscIEC1uok= Name: res/layout/country_selection_fragment.xml SHA1-Digest: Jc5OXlKL+7GgqXpkjMZR+rNJnLQ= Name: res/layout/number_picker_dialog.xml SHA1-Digest: QtwqVaCO7V+ZLo909BT37PqgH28= Name: res/drawable-hdpi-v4/ic_visibility_white_24dp.png SHA1-Digest: BAJ3nBA44xIO03iRy093h9/C2oQ= Name: res/drawable-v21/avd_show_password.xml SHA1-Digest: N3p+N4O8mTgGo1X4Nfg/Qf5x9+k= Name: res/drawable-xxhdpi-v4/spinner_disabled_holo_light.9.png SHA1-Digest: spcycqX8mk0fo3XEgQ4H49SOCQc= Name: res/drawable/abc_vector_test.xml SHA1-Digest: Nt9ckQDkCsYP2/LnUbJXmZv47z4= Name: lib/armeabi-v7a/libcurve25519.so SHA1-Digest: +Y+tD77C55a6NOXrWekk2U8vdQY= Name: res/menu/conversation_add_to_contacts.xml SHA1-Digest: uWeEXoC0QxpVS9gCdVRHIZJro00= Name: res/drawable-sw600dp-hdpi-v13/ic_backspace_disabled_dark.png SHA1-Digest: 984kWqq3UKY/ucF3wHp/xjMmzzE= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_LK SHA1-Digest: dGlE/2sVqnqwOyAcnI147+xWo+M= Name: res/drawable-mdpi-v4/ic_visibility_white_24dp.png SHA1-Digest: +V7BPsXKc4K01O1Z7ww+MC18POw= Name: res/anim/design_snackbar_out.xml SHA1-Digest: fenowEI7s0OCQ7vzkP4haFTfB0I= Name: res/drawable-mdpi-v4/notification_bg_low_normal.9.png SHA1-Digest: G4lYrLmqbZodQ56hAVjySdNcV2I= Name: res/drawable-xhdpi-v4/ic_search_holo_light.png SHA1-Digest: 4Ux7qH9nF4Sf5TJIxfT9QATkT1E= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_ER SHA1-Digest: E2TigdpPBhjWghTqLGd1MzWD+wQ= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_ET SHA1-Digest: nLInv9rnfTZyc2Yt3HXON1XbpjY= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_ES SHA1-Digest: Qh+3McPT6XZ0r8gmjWGxaAtWE34= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_LS SHA1-Digest: 7BsS5aNp3jcPOYeM+eXOop7yRso= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_EE SHA1-Digest: b8q7bX/oHVLFlYkL9J28fRbE7D8= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_LR SHA1-Digest: L46Pd4GqB6a5EmHS8jH6nOtsOWg= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_EH SHA1-Digest: JG3j+8eE6wXPKykW7Cr9wkfPAsc= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_LU SHA1-Digest: VrSm6E5recaey0dmWmzxQbD97Hg= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_LT SHA1-Digest: bOmBTv4QyYmBTfAiGB7zJwbQaOE= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_EG SHA1-Digest: fic9NKv+egZ0qRjfXEN/bw7nsQY= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_LV SHA1-Digest: D85Bu86xeawV7nt+eEnjA3V+yXA= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_LY SHA1-Digest: uJqhoq1Hm5JnGxP6M4+UeEatBLY= Name: res/drawable-xhdpi-v4/abc_btn_radio_to_on_mtrl_015.png SHA1-Digest: uk3L+RIoakDF8kLQl1lbuz1VdkM= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MA SHA1-Digest: JJVvzkHvw50ALWuLIFGOVrl0KOs= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_EC SHA1-Digest: d+Bo1FvPdg7ZqcgtXZ/O28GQhWs= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MC SHA1-Digest: 2CLnKQBD+H31vh400oTIJF70Mow= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MD SHA1-Digest: ZUJDIbLgUEy6YAu8uHv1Ph17sts= Name: res/layout/notification_template_part_time.xml SHA1-Digest: LJb6bTMCYfMEF2qojVDiwIByprc= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_ME SHA1-Digest: pdgkCYCQNzuE8eH8UbDhGHQ8Ru4= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MF SHA1-Digest: MbJgQJRk74Qp7wAQYEdn1g07kPM= Name: res/drawable-xhdpi-v4/ic_emoji_flags_activated_dark.png SHA1-Digest: +zOuSsFclhdcXHPhMp+42LgVol8= Name: res/drawable-mdpi-v4/ic_notifications_gray.png SHA1-Digest: Vdg58LW0JtcH1k8TP95v6xsA03o= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MG SHA1-Digest: ofeWHBJTHurHJ7TSU71QNCxnjbs= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MH SHA1-Digest: mK7nAasII3omYbOsaQ5cFKjuVQQ= Name: res/drawable-v11/emoji_category_emoticons_dark.xml SHA1-Digest: OAu/lAgwVhzB1wqMMKjti7Zs7aM= Name: res/layout/recipient_filter_item.xml SHA1-Digest: VUgdDdrc1IRnokXxcJhoEPy786k= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_DZ SHA1-Digest: rburB7+6PwMfXvm/PQReu/7J4HI= Name: res/drawable-xxxhdpi-v4/abc_ic_menu_share_mtrl_alpha.png SHA1-Digest: ViuGJMQKprUdITWoAs1n21Kd9ZE= Name: res/color-v23/abc_tint_seek_thumb.xml SHA1-Digest: eQQosilXm46wTNpgufTS2GXzzIM= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_FO SHA1-Digest: lFmxC97jAfdiHuRAhoMXDweAtg4= Name: res/layout-v21/notification_template_icon_group.xml SHA1-Digest: jmIGYrC7O88w727hgaDWE3YeDBg= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_KI SHA1-Digest: Opv4VtE9ZFUW9EsP1mVG0JY3CrU= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_KP SHA1-Digest: iV3PJXFR0FJouyPIiqtSDoXHgrA= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_KN SHA1-Digest: cL6rmmBrzi+CEZDcN/l8+bEam6E= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_FR SHA1-Digest: e2LNHa2URvmc1YweDi2e38DJU0w= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_KM SHA1-Digest: Eiem7oRL+YcsaBOn9xrpq9U5SSI= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_FI SHA1-Digest: fv0HyXJMARYH1qwYRusPHTwtYk4= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_KR SHA1-Digest: 6IvYFcIYj16qqXkMArzWb8kkZ2o= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_FM SHA1-Digest: 7B7I+1yvB1dYzahtRcLI86Fof9s= Name: res/drawable-hdpi-v4/ic_emoji_objects_activated_dark.png SHA1-Digest: nS1sUpH7GYkchkkNocVX+iqyFR4= Name: res/drawable-mdpi-v4/ic_emoji_emoticons_normal_light.png SHA1-Digest: FIA08pF7PcghqiplD6sdajW54LU= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_KW SHA1-Digest: AIEBxYsyuRc/uH/3+VaDHxEcSmw= Name: res/drawable-mdpi-v4/abc_list_selector_disabled_holo_light.9.png SHA1-Digest: VAWAgM1S6jdrYNnzjAk62DbHpA8= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_FK SHA1-Digest: dZEGOpES37DEl5v8/N7TxzxOAoI= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_FJ SHA1-Digest: ryDmJR/JPQrikGoj8Ytl9g2x+LA= Name: res/drawable/play_to_pause_animation.xml SHA1-Digest: Hck4FSeE+adafq51j4Jnw1ibvc0= Name: res/drawable-xhdpi-v4/ic_lock_dark.png SHA1-Digest: EQBcZvHcmb9yjyVopDpgxuIjKZU= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_KY SHA1-Digest: 9O7bp9+iM7RE9PuiEuHPf+MB3YI= Name: res/drawable-xxhdpi-v4/ic_emoji_places_activated_light.png SHA1-Digest: CxRau8xckOFqqA3yCXqbNRx7NIU= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_KZ SHA1-Digest: nDp0Y4L6Vqe72MYxEqXVR4E+Ntw= Name: res/anim/design_fab_out.xml SHA1-Digest: xUTzztkV6DmAqFXiLoefobMOg3g= Name: res/drawable/button_background_dark.xml SHA1-Digest: BAgcQtcIxovcnSFHiECiyN3xkug= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_LA SHA1-Digest: KzfuzHUPn+zzADyNIhxn75hCr4U= Name: res/drawable/abc_ic_search_api_material.xml SHA1-Digest: JrtYziZNuxfNNt3RwCJLN3fo85I= Name: res/drawable-mdpi-v4/switch_thumb_disabled_holo_light.9.png SHA1-Digest: 6Q0egkPXcET6qWYJbaJnk1GKRsU= Name: res/drawable-xhdpi-v4/ic_emoji_recents_activated_light.png SHA1-Digest: HH8RJwDGr2F1osUMFkzG0XJd1Ho= Name: res/drawable-xhdpi-v4/ic_unarchive_white_36dp.png SHA1-Digest: oro9cJHOkSHpDwbZB77dpOcH+NQ= Name: res/drawable-hdpi-v4/ic_lock_dark.png SHA1-Digest: YqSj7swAiFl1VsnLvzNtj0RV09c= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_LB SHA1-Digest: Eurl/BYmIaOcP1V+gIVGQPsal6Y= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_LC SHA1-Digest: nZLWfW3qC4C94h4vl+/g6ETDHUw= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_LI SHA1-Digest: YZ3im7JIC/R4awZlELNGZMMvGEU= Name: res/drawable-xhdpi-v4/list_selector_background_selected.9.png SHA1-Digest: 36Ws5DFmoLt4ptxx59DL2RNDQ0M= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_JM SHA1-Digest: 5DbYBw9KSUeRPtXypIiWU5gNGGE= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GT SHA1-Digest: fn64fjgcQ5sVtJmbb2rjh2spihk= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_JO SHA1-Digest: UuIka7azgqzAh93E2hveZozYwIo= Name: res/drawable-sw600dp-xhdpi-v13/ic_backspace_normal_dark.png SHA1-Digest: 7SPgS7EE9ZHgHjE3ix1RBWa7QtE= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GU SHA1-Digest: l0+tohuWk8mOFg4gfLveLzyB39k= Name: res/drawable-v11/emoji_category_emoticons_light.xml SHA1-Digest: ztpE1SfFngkQrj8bJd/uhpuCPCc= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GP SHA1-Digest: MFbM0hL6BN87q/jIzTAzagplw1M= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GR SHA1-Digest: /CpP0/xJHc8rMdKbqW/bAYdFXAo= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GL SHA1-Digest: Zmd4AP1OecMCxgFTjFiUuT/fY1s= Name: res/drawable/emoji_category_nature_dark.xml SHA1-Digest: k2EMEfERm8Meff1aHg8jukX1/D0= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GN SHA1-Digest: 27yzuurZHmVz28908rNoN8FZysE= Name: res/layout-v21/conversation_item_sent.xml SHA1-Digest: ARy+pYJCYQSmz4ArH0J71hGD4D8= Name: res/layout/three_keys_view_text.xml SHA1-Digest: /vFsF8aStrIAyx5vaBMMjUSWDjM= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GM SHA1-Digest: lZeIZ3/GlVUgeQDOzRGjvdRL5uE= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GH SHA1-Digest: pC7TxK7cLbkDXWLN3SvhshSeaP0= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_JP SHA1-Digest: AcjGr5Vu7DqBuR4h/t3zS1KPoCA= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GG SHA1-Digest: uFgP7K8xJZfG0WI8wkOIdJzJ0gQ= Name: res/drawable-mdpi-v4/ic_warning_light.png SHA1-Digest: GCuIPBi4gB/5D//gguMgx5SfkGk= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GI SHA1-Digest: pgT+EIU+wJSv2fSR0sT2B1eeCMk= Name: res/xml/recipient_preferences.xml SHA1-Digest: FtaSs3vpt3E7JVFAYhd09cQnTeI= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GD SHA1-Digest: J8aWXaCzoEO+LO6xYOtAoBWRuGg= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GE SHA1-Digest: WlWC/G0LBBqv3SDDZowNROcA0c0= Name: res/drawable-xxhdpi-v4/ic_delete_white_24dp.png SHA1-Digest: 1t3ru1XcSrHEkdcKIJMDBi2Y16M= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GF SHA1-Digest: s57Ys+jho7LCROt1IjC6fOZw3Wo= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GA SHA1-Digest: nJ0fu0m2kRxtezMTo7DnO1X+R/4= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GB SHA1-Digest: UqcY0WaMyw2CNOe2zQ0OXzlvJVU= Name: res/layout-v17/notification_template_big_media.xml SHA1-Digest: lvVJtIudn2AjsaXqyC/jbBNEbpQ= Name: res/layout/icon_list_item.xml SHA1-Digest: Mg2ZNXzUdd6eoHO5PszPGKsuqBc= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_KE SHA1-Digest: t59xuH+VnD5qQJFXkbw5nye2vMg= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_KG SHA1-Digest: +XMw5Kg4Isg91WJDbWGZhI+SzZ8= Name: res/drawable-xxhdpi-v4/ic_keyboard_grey600_24dp.png SHA1-Digest: xDsUErqnrJ83jKjLNECBKE/N8Xs= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_KH SHA1-Digest: vMip6YT7BGzR5RcCNDbOPWA884I= Name: res/drawable-xhdpi-v4/ic_video_dark.png SHA1-Digest: SMBnhM0NAFoIyJcGF5EaiIFegDE= Name: res/drawable-hdpi-v4/abc_ab_share_pack_mtrl_alpha.9.png SHA1-Digest: N0JreKvhlyMPBSf34DQond465n0= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_IN SHA1-Digest: YWOkBb7MBSAo6Mb0ODvge1HXRtE= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_IM SHA1-Digest: C/9uvSfqUCVALrUpDmyb+EX4M8A= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_HU SHA1-Digest: GQHycOXwq7rHdtNuIksA6qvcldI= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_IL SHA1-Digest: aJCyzEuJHfXR3apcQT53aJ7Km8E= Name: res/drawable-xxxhdpi-v4/abc_ic_star_black_48dp.png SHA1-Digest: xXkT7UhBEFvSuU5J2I+D1bwj7zk= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_HT SHA1-Digest: e+uBAKnhIw7UGI6dYyyOLuymK18= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_HR SHA1-Digest: 4BGgxCvaONoLwTaax71RnTXpPRg= Name: res/drawable-xhdpi-v4/ic_attach_grey600_24dp.png SHA1-Digest: TsHg4xRzFe1dIrHElbFlXftt1fw= Name: res/drawable-xxhdpi-v4/ic_archive_white_24dp.png SHA1-Digest: bE0E69/QNGuUs6osyjF5hnvGOnA= Name: res/drawable-xhdpi-v4/ic_emoji_flags_normal_dark.png SHA1-Digest: aeFtQ2/DII4N35QshPIQSc9uGR4= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_HN SHA1-Digest: UZneRcJZOERJiVqI+JauulOEckM= Name: res/drawable-mdpi-v4/list_selected_holo_dark.9.png SHA1-Digest: t3gAnIT+AzQuQiC0J6HKptJhyA0= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_IT SHA1-Digest: gdRZpVQXjDDZfo+vjC6OObobAD4= Name: res/drawable-xxhdpi-v4/ic_group_photo.png SHA1-Digest: e7pgHplWGNXbLF9rvwinkqy3jJ0= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_IS SHA1-Digest: +oko1XGukY+MrN2r53oOBKkNIqs= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_HK SHA1-Digest: ar/P1+rQlrGBixew3JMIigqX068= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_IR SHA1-Digest: HSy63ScVyG/eLhq9CdBMpSFAPnE= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_IQ SHA1-Digest: FmlE0rUwvs4ZIo26IMs5IrY1xJ8= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_IO SHA1-Digest: FwB7DnBBMWPbXjxfbFWWgeZX6vM= Name: res/layout-v16/notification_template_custom_big.xml SHA1-Digest: eBiyAFGYLKee5KXeEPnVSqqCPNY= Name: res/drawable-xxhdpi-v4/ic_emoji_flags_normal_light.png SHA1-Digest: O5Auy59UiqkF7JkxK2Mrno1oY7o= Name: res/drawable-mdpi-v4/ic_info_outline_white_24dp.png SHA1-Digest: RI7Icbqo5kZduEWaogjMA6j57EM= Name: res/drawable-xhdpi-v4/abc_btn_radio_to_on_mtrl_000.png SHA1-Digest: pbP/bpdtNDmjPyIJWfLMJALvoXo= Name: res/drawable-mdpi-v4/ic_photo_camera_dark.png SHA1-Digest: nHm0P2OU8w4FasmKZOYNOBsNekk= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_JE SHA1-Digest: AjRp8NlibDYVU+tALEUnPLEB7c4= Name: res/drawable-mdpi-v4/ic_emoji_nature_activated_light.png SHA1-Digest: 8R7AbylOpq6hTD2+86L3nOCaZkY= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GY SHA1-Digest: KrbnGrX0xxCBVfk8nkFiKQj7dpI= Name: res/drawable-xxhdpi-v4/received_bubble.9.png SHA1-Digest: lRkGDA4EzxKSjWgS/YcYGg9439Q= Name: res/color/abc_btn_colored_borderless_text_material.xml SHA1-Digest: fzYoBGcDa2c2oyMPBeOaTO8kqbY= Name: res/layout-v11/custom_default_preference_dialog.xml SHA1-Digest: eSFfc9ed+WiY/Qww/nUHAE6U0mk= Name: res/drawable/last_seen_divider_text_background_dark.xml SHA1-Digest: XCTGK2lgiB+eOOFDixpc9pV4VkA= Name: res/drawable-xxhdpi-v4/ic_audio_light.png SHA1-Digest: 6ngM2rWmrljKjdIacOe0cu85VT8= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GW SHA1-Digest: LmXE41jlHG+vphlvr+MghAWCi14= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_HN SHA1-Digest: lTgIxZPXaeAMmKQ2gV+iNQ0EkKs= Name: res/drawable-xxhdpi-v4/ic_notifications_gray.png SHA1-Digest: DNUT/VyubypwNlFc5leH3zLEH4M= Name: res/drawable-mdpi-v4/switch_bg_holo_light.9.png SHA1-Digest: peyvmv7NaxWpuLuoG2od8vf2QRU= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AC SHA1-Digest: 52T6/UD8x8+sq7OdOJMZWaoZ5NQ= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AD SHA1-Digest: pDefopEyaRG2+zHbWJ7TjZ6B2jY= Name: res/animator-v21/design_appbar_state_list_animator.xml SHA1-Digest: 3y9SSDOTiyFZI94yGO/38nsIk18= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_HR SHA1-Digest: ptZ04upnX9rGhmA9OzfEGCkC1rY= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AE SHA1-Digest: mPsxFQKI8H5DZvsyLRaRP90LifY= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AF SHA1-Digest: izS7xojRAryOGr0qA9Xz9dPoSso= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AG SHA1-Digest: 1DdZY1QOwT8qqZKnmFHNZ5llW04= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_HT SHA1-Digest: 2V+6dCrRncydO0uTDSJlOlNCvdw= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_HU SHA1-Digest: zND66d2un/Wo9yluhuPAn91EfNg= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AI SHA1-Digest: gvvHtuY2VuWkF9/T9NG422eFswk= Name: res/drawable-hdpi-v4/ic_forum_grey_32dp.png SHA1-Digest: cSlg8JMxk3TIeSIUC0RyfeRk08o= Name: res/drawable-hdpi-v4/ic_emoji_recents_normal_dark.png SHA1-Digest: X3QsM9GuCqkHy4N6jxYGe+KtLFo= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AL SHA1-Digest: yPKEYcRdYIA9EFpYeQa/oiadZG0= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AM SHA1-Digest: rQt2UeEZtLFksuxwBcf23zM7vBw= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_HK SHA1-Digest: r3dq0KcrkP0jaZdnsmVsq75GOZs= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AO SHA1-Digest: azCK9NpdSOcxG0hg/MVnVsHj8nE= Name: res/drawable-xxhdpi-v4/abc_ic_star_black_16dp.png SHA1-Digest: PyXLVQgunmY+Bf76HwBrp/pQPD8= Name: res/anim/design_snackbar_in.xml SHA1-Digest: 6+HyUPWWyECHhvkn7FfU/SL24MA= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_ID SHA1-Digest: rS5k3wMYUVWZTCho3c6br6PqCaI= Name: res/drawable-xxxhdpi-v4/ic_volume_off_grey600_18dp.png SHA1-Digest: SKYyfO8DzgP6x7iMbCnKTxBrl2g= Name: res/drawable-xhdpi-v4/list_selected_holo_dark.9.png SHA1-Digest: ddkFXkinX/KLQzbgj+uBDgSBNFU= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_IE SHA1-Digest: 4+jmZi1toewgU/CaT83WnN0Dm58= Name: res/drawable-mdpi-v4/ic_emoji_objects_normal_light.png SHA1-Digest: BqeIFAcFwZJkqb5kR2t0UfKoxR4= Name: res/drawable-mdpi-v4/ic_delete_white_24dp.png SHA1-Digest: ML68wg2G9p1NW9VL8r3BEjQWKoE= Name: res/drawable/abc_list_selector_holo_dark.xml SHA1-Digest: sfvAyXGl6drAr6es0R11c9d9BWE= Name: res/drawable-xxhdpi-v4/ic_emoji_flags_normal_dark.png SHA1-Digest: sJlblRDOGWvtx1he8SCgTQ6+d5Q= Name: res/layout/recipient_preference_activity.xml SHA1-Digest: UqQ9PQpDhUO/CKxhxMTz4h5O4Xg= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BD SHA1-Digest: zCrZncjiYQ+SSHCjmHeLbiCjNzM= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BE SHA1-Digest: jYfjZytM8bUw79AXzIi1/hxwQjo= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GP SHA1-Digest: 6rjESUS5+feJhBlx8+ju7t710VQ= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BB SHA1-Digest: 9kxNiqmoKhvMF/sqAR1UXHsMGiA= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GM SHA1-Digest: Rc7/O3kbe1uK7g7HZ3AeWGMNsXw= Name: res/drawable-hdpi-v4/ic_forum_black_32dp.png SHA1-Digest: hJWxyhNX+BfxUqxI1hZrgiMJOWA= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GN SHA1-Digest: HhbjDJ1+NjuON8mgNRzGKWoVLCo= Name: res/drawable-xxhdpi-v4/abc_spinner_mtrl_am_alpha.9.png SHA1-Digest: cVnySG63cChr86Xl5aTin9ET16o= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BH SHA1-Digest: xl02B3ICW6yoVpNy664JuKwusSc= Name: res/drawable-xxhdpi-v4/ic_volume_up_dark.png SHA1-Digest: wrA8hRzex8CVScwGSQchX8ddrpU= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BI SHA1-Digest: PMcwTj7rmmsZk55PL1wHhWz5pGo= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GT SHA1-Digest: M7KRT6S140vIUkuZMzMyRuEhypo= Name: res/drawable-xxhdpi-v4/ic_emoji_symbols_normal_dark.png SHA1-Digest: MCF9dMXO7s/Q5Mn4VzRiNbn7pWM= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GQ SHA1-Digest: agM36GEm6lZQI9DuDoU02RhuH+4= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BF SHA1-Digest: t/MR3+1upQKBSIeDoMlBbajuM7Y= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BG SHA1-Digest: 59p12EeJr8dx2MCE4fMPuC31iSI= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GR SHA1-Digest: 4zFbzS+vY1NLsUeqI9GblXxAeH0= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GG SHA1-Digest: jr3bdyX8sEm71B9kN/nyKl+GmpQ= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BL SHA1-Digest: A926WshRsug3ni7OrI1AwVEh31o= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GH SHA1-Digest: 72MPX/1hxgEFifRHhVlPDMNeO1Q= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BM SHA1-Digest: i1dy4FQOimGiGsNWwZpE8cq7nbY= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GE SHA1-Digest: yYSoBGeSgU8l3jcRnhv5mkjHpTg= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BJ SHA1-Digest: x3YZGtLHr+Q6W+lUy9epyAhLy2c= Name: res/drawable-hdpi-v4/ic_emoji_objects_normal_dark.png SHA1-Digest: RZ6mrsoTtAKh3cAL6JKF72jBesw= Name: res/layout/share_activity.xml SHA1-Digest: Ita0eNBhDG/Cj6Og4F9b8xmJraQ= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GF SHA1-Digest: NmIGjkQELlpQbKp1XGceoCKGBkU= Name: res/drawable-mdpi-v4/ic_volume_up_light.png SHA1-Digest: u6HXSVUzjgY0xbLFEqSUH+sJq/Y= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GL SHA1-Digest: NdYWDpksScmfPQzQkfdwB4nrqv4= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BQ SHA1-Digest: LLye+k6pHTjiEpbOSR48QRJ14Ss= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BN SHA1-Digest: 4KVJcIVvOyM5pNkHRP/LW0+PRcc= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GI SHA1-Digest: MyW+90JQaFDpR48bmHsW8BemAn8= Name: res/anim/slide_to_right.xml SHA1-Digest: 0bv28EjFYG0W9O86/FUEyVGaIDc= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BO SHA1-Digest: buuWxRiANcZzz39kZI5wZJ/UeG8= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AT SHA1-Digest: ADPcGHEooR0B5HgIxPe3yh4wRJs= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AS SHA1-Digest: RwNKTKAqOrr0n/V1DJv6xcBrM9s= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AR SHA1-Digest: nYPTqOieOO6SHDfne5T+mLjtYgs= Name: ws/com/google/android/mms/package.html SHA1-Digest: hE75Rt2Cmrv60CqpfVI+PwrlrKA= Name: res/drawable/conversation_item_header_background.xml SHA1-Digest: PkBtM4IfjAPJkWt/w+fC0XhKS5c= Name: res/drawable-xhdpi-v4/lockscreen_watermark_light.png SHA1-Digest: 6lUHGvK7lN2atKOLCJlnvLhmeqI= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AX SHA1-Digest: sXwKZXkjx/U8gixI7RH6L+86n8s= Name: res/layout-v11/conversation_list_fragment.xml SHA1-Digest: 3GSSdYX5sM6ipBwkUrO68YEi77E= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AW SHA1-Digest: o0ePsLjCS4rgHmKYRB5YuHcWCXk= Name: res/drawable-xxhdpi-v4/ic_send_secure_white_24dp.png SHA1-Digest: pUlJWnz3F+tFSFZ6Q2Z3hDQecVs= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AU SHA1-Digest: IqierGXHtECqe4GIQCtK0znopWg= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GW SHA1-Digest: aePAn8Cab2WuQ89czJC9MY2KHyc= Name: res/color-v11/abc_background_cache_hint_selector_material_light. xml SHA1-Digest: vGI9qWZK86UPRnOAjUVBBgxhqoM= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AZ SHA1-Digest: LhSf1T7IvjcCena3HN71hUfZ7yE= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GU SHA1-Digest: fSn6p96r0c0yB7X363RA5pvZC3M= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BA SHA1-Digest: 0fwq5LAnY+VauQY0TOR7t3qaN/c= Name: res/drawable/emoji_category_places_dark.xml SHA1-Digest: mKSryOKdsURVrjhQix+yeiEGwKc= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GY SHA1-Digest: 72s/mUFzGGxqpbqHVXbA2oS+5Hs= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CG SHA1-Digest: yYWxLrw40zQlfaBccZ+ywrWIgdo= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CH SHA1-Digest: t42SOokbTnreJMp3blXZneIMfmY= Name: res/drawable-ldrtl-v17/actionbar_icon.xml SHA1-Digest: Yy7GfAlLoeD86LGaO6/AyLJjuC4= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_FR SHA1-Digest: xi2IkCwD2C1YhJ7m/p5vytuaoUk= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CI SHA1-Digest: FtkL1qR+puYf2ZP/hN13hjxmFZo= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CC SHA1-Digest: pj2Re+j+ZHBZ97k1cXh9Vs85LGo= Name: res/drawable-hdpi-v4/ic_done_all_white_18dp.png SHA1-Digest: gB/Fn8OghOrqWdvk6bIo+WURnZA= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CD SHA1-Digest: QP2A23S3XYWiInoSyl7indNTbzo= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_FM SHA1-Digest: U0rmgar+PoH71nmCwk4VA/S7SEU= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_FO SHA1-Digest: pYmvqgGcSKzcBQdvp1Xx86OliuY= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CF SHA1-Digest: 28aUWlCa/0ftFre4yRHCEFjFbZU= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CO SHA1-Digest: hc+XpUgEPSNA9D07Jqdb+JD29yc= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_FI SHA1-Digest: R2/EqbCHeYQhz/eizc59jyVKbxc= Name: res/drawable-mdpi-v4/notification_bg_normal_pressed.9.png SHA1-Digest: yi6e8XUhhsJcenYvin1Ro8e73nY= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_FJ SHA1-Digest: Yxuw/MtmKGkOnVTtZA1h3gs2h5M= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CR SHA1-Digest: ithTLwS5D/vDgZ/mT2e27D9Dsgo= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_FK SHA1-Digest: M9Z4aTMhfb1IwhDFpVau0hECb34= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CK SHA1-Digest: IAk623SiQPlkGmcaSGA7OtajaU0= Name: res/drawable-xhdpi-v4/ic_scroll_down.png SHA1-Digest: MwQAn/tjGBzRGtJlcWC6y7R6y4Q= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CL SHA1-Digest: +NX7TGNDK+2iD7j1enQTP5cfoXs= Name: res/drawable-xhdpi-v4/sms_selection_icon.png SHA1-Digest: K1XGwBV46Pk4HZDPGOhMZsT5MNY= Name: res/drawable-mdpi-v4/abc_textfield_activated_mtrl_alpha.9.png SHA1-Digest: LHgpBq22Tp/Uz7G6kTktjBB334g= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CM SHA1-Digest: pQB/+s6po8oIhPJ3EBEqyQpx8+U= Name: res/drawable-xhdpi-v4/abc_text_select_handle_middle_mtrl_light.p ng SHA1-Digest: nom5EFpS7blCwactlhvHBLuEfCU= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CN SHA1-Digest: K1wvu3GgibjX4toiXdhiWdIP5sc= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BW SHA1-Digest: Dd6O6q0ANmaHd0vscJWabMQxAy0= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GB SHA1-Digest: vYNOxn9CfHShvNze6bu+k9dv8uQ= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GA SHA1-Digest: ELfUOOdv4uMFeDG6GJcOppNs7u0= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BY SHA1-Digest: ljsu1T3XB76a/BeFRln0ojU3Dr4= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GD SHA1-Digest: G2JfNFUSdaZa/og9TbXIQDQrlpc= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BS SHA1-Digest: a2XmLLonApLk8nYjUY8V73lZJZw= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BR SHA1-Digest: al9zf3TVa7Ve99aI/am1USk9y2M= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BT SHA1-Digest: n4yOb54Mv3+EnSUxSoS0XarSX5k= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CA SHA1-Digest: n3iG5qLZan30la135XNHTs380FI= Name: res/drawable-xxxhdpi-v4/abc_ic_star_half_black_48dp.png SHA1-Digest: CqdgtKKg5LzgT+Utih7LH0FOba8= Name: res/layout/empty_time_zone_item.xml SHA1-Digest: ieGUBRMmXnFF9ndtJEe4UUoe4dY= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BZ SHA1-Digest: xWKU8QZvkdDD2fwnrIgt1achzX8= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_DJ SHA1-Digest: JViet+S6qPRSZaSvu8NGcfanUUQ= Name: res/layout/country_selection.xml SHA1-Digest: xAbtwp5RvpUqcs1VfEnelzP82hA= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_ER SHA1-Digest: GjrOcKCpIAPs5DGlQHH39quIYKo= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_DK SHA1-Digest: qk0XlsJkP9Reexq2kr3yQ7rJ+84= Name: res/layout/dots_text_view.xml SHA1-Digest: r2xnC1LIQwvev9hzjc4fbI+A2cM= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_DE SHA1-Digest: NjykeGKqIE1DFOCrC/p1XUkd1Zo= Name: res/drawable-xhdpi-v4/ic_emoji_emoticons_normal_dark.png SHA1-Digest: qmPky+oRAyf3lQyuBAi7fH3pkFM= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_EG SHA1-Digest: JHKFehFvMn1tvW+70RNjxCUt35U= Name: res/drawable-hdpi-v11/icon_notification.png SHA1-Digest: mwvJ5lhMelDcqZ5HSgxZXXrADjw= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_EH SHA1-Digest: 6rzZPeyjZIslePbk6sXAv8roYjI= Name: res/drawable-sw600dp-mdpi-v13/ic_backspace_normal_light.png SHA1-Digest: Z4J6EVi+XrPCSrsIZUYQVNimpnI= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_EE SHA1-Digest: FZyGVbsU6rDYHNUfk+UXWWsNJl8= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_DO SHA1-Digest: 1o54z9+7TYRXR+cc7QhHiUVUSjE= Name: res/drawable-hdpi-v4/design_ic_visibility_off.png SHA1-Digest: R+V7ZmC50puvgW1vyi72e7cIQ4Q= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_EC SHA1-Digest: dVQFvjTDO4hpwzIVVVen4r6gwoM= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_DM SHA1-Digest: ND0TIhkvew5K4s6vA/eNXmpMFVo= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CZ SHA1-Digest: WGdEz1K7JLL9E8MBJrYTbUjtgd0= Name: res/drawable-mdpi-v4/ic_image_light.png SHA1-Digest: dph6JIFScemUkyC8V4bp2vzFomQ= Name: res/drawable-mdpi-v4/received_bubble.9.png SHA1-Digest: x4/fSsrwLvIKbFtRM1k+uNrk6VU= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CY SHA1-Digest: KMSE4subU7Gs/aIA2QCTYQ3/jf0= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CX SHA1-Digest: FHoxe1QKkee6R/U6aVKIg4Itnls= Name: res/layout/contact_selection_list_fragment.xml SHA1-Digest: XKk68FA4pyOy5PSlDJZZ/PeQkPM= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CW SHA1-Digest: FdIfwTyK28JACeQUquJwha5JHhk= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CV SHA1-Digest: Ni7NplLdDN+fQerk/xcl9j8PB/4= Name: res/layout-v11/notification_template_big_media_narrow.xml SHA1-Digest: ZiBVLtWcb4GpY4ETxsBuSCIlULc= Name: com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CU SHA1-Digest: 6mEArUwmcpF/h1AR8tPK90q63F4= Name: assets/fonts/Roboto-Bold.ttf SHA1-Digest: j1hyrMHyDgMGFiAB3rrPXhTUbow= Name: res/drawable/circle_touch_highlight_background.xml SHA1-Digest: o9QlrRMiE0mC1+dmj4+fg7vpBW8= Name: res/drawable-xhdpi-v4/abc_list_divider_mtrl_alpha.9.png SHA1-Digest: riXoVDKowB8vTruZhoiXpL8vgBM= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_ET SHA1-Digest: n7OHKx+6jwATc3CLZiztk3USmuU= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_ES SHA1-Digest: CRNNSNA+d0seJkQFZ7sBVk4CWnk= Name: res/drawable-mdpi-v4/ic_mood_white_24dp.png SHA1-Digest: aAawECUowovSRqameg6tsxx6O/8= Name: res/drawable-xhdpi-v4/lockscreen_watermark_dark.png SHA1-Digest: 0c85wNc0nV5Zztf7GsYMc7SKJTI= Name: res/drawable-mdpi-v4/lockscreen_watermark_dark.png SHA1-Digest: M0xsGNyKiuHwaBCCuPvJDCgOWgA= Name: res/drawable-hdpi-v4/abc_text_select_handle_middle_mtrl_dark.png SHA1-Digest: GK+YDX+4M+S5s+noA2Vsy3W+aJs= Name: res/drawable-xhdpi-v4/abc_tab_indicator_mtrl_alpha.9.png SHA1-Digest: kXL/oF0Wug/Gk2tR7sFuSTOQNZU= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_DZ SHA1-Digest: wYmZxGBYrzzJuQlTTW/YGH2yKHw= Name: res/drawable-hdpi-v4/ic_volume_off_white_18dp.png SHA1-Digest: RQwdjb8jY+52wCaopLvBGc7pRJo= Name: res/layout/receive_key_dialog.xml SHA1-Digest: +as8PetwnBBaeJCc1pbfKl8dR3E= Name: res/drawable-xhdpi-v4/ic_emoji_flags_normal_light.png SHA1-Digest: lnap7s6+mfZWSa/l952QIfrjfU4= Name: res/drawable-xhdpi-v4/check_dark.png SHA1-Digest: hnSfgvYA13U6JO5FBxxS7gf5LTI= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_DE SHA1-Digest: i90vdo+kDq0/AgoF2/hKBKmpLwk= Name: META-INF/services/com.fasterxml.jackson.core.JsonFactory SHA1-Digest: Ba5fEoE3Fm8wW/CHD7Agsn0j4D0= Name: res/drawable-xxhdpi-v4/divet_lower_right_light.png SHA1-Digest: t2Qll0Avs8v4McfCcni+SomfuoQ= Name: res/drawable-sw600dp-mdpi-v13/ic_backspace_disabled_light.png SHA1-Digest: wHYchHnEyH9uYlSfdtV8q6up33E= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_DM SHA1-Digest: i8oFWIydqBHus8lvoMmndRp9CZM= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_DK SHA1-Digest: hDPjOmt/2gjKn+joDBSniMIGBBo= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_DJ SHA1-Digest: pxCV0EJL2IKyl2pmfUh+WiMdmnQ= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_DO SHA1-Digest: Xp68rW1mi+n+TgXTP3PDatqmb60= Name: res/drawable-hdpi-v4/lockscreen_watermark_dark.png SHA1-Digest: jRk++D87ZgQBkJ2HLWlABxkEJJQ= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CR SHA1-Digest: 5vyh1wsamKDoo1uoxxc420QtAmE= Name: res/layout/abc_screen_simple_overlay_action_mode.xml SHA1-Digest: 5in0sNUsZqh4AJN6Pw4SP4w5RCg= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CU SHA1-Digest: OG3DIiqNwucHlpwwzHDBiYWx/m0= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CV SHA1-Digest: pynPRo7ET2L007kIDboVoR72fIY= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CW SHA1-Digest: 9ZCdntZll9KvA+/BzKc4qolDvXg= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CX SHA1-Digest: zP0i8LRrkTXlWUtKqoGCqlhN27I= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CY SHA1-Digest: BcpGJtPeqZZv7HMotN7x9N+QJLs= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CZ SHA1-Digest: +2yorg5Wp5S1MTPuH29YMiG2oYA= Name: res/drawable-xxhdpi-v4/ic_arrow_forward_light.png SHA1-Digest: oGaS5N6FElUZmWHK0FVqsp/IO5I= Name: res/drawable-xhdpi-v4/ic_launch_white_24dp.png SHA1-Digest: 9qBE6yOKZcH/Q+7qpXV1+USE2CU= Name: res/layout-v17/select_dialog_multichoice_material.xml SHA1-Digest: yEUBZ0g/mR7cWkH9CqzEQd1oYGk= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CA SHA1-Digest: sWZkDflRTGQB8qYSv4kDYp553Cw= Name: res/menu/text_secure_normal.xml SHA1-Digest: HnrmryD9ml1+2+Ri12H8J336Ep0= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CD SHA1-Digest: gZ545vQf9tZD5xNi5Wx+IoKYnts= Name: res/drawable-mdpi-v4/ic_push_black.png SHA1-Digest: nXSF8HKfR3Vg0Fy5MbDc6+qfozU= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CC SHA1-Digest: uUaHWJqH3ky16k/qae+8AMBLX/E= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CF SHA1-Digest: yI20Wiel7QOU9Fbm6vOVsrEv/dM= Name: res/drawable-xhdpi-v4/ic_push_black.png SHA1-Digest: yLyv9x4uDYDvqBSzCJUjwI2tFwk= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CH SHA1-Digest: 4QhdJjXQLyQ8DECkDwpdq5NJDZA= Name: res/drawable-mdpi-v4/abc_ic_star_black_36dp.png SHA1-Digest: 1f+9ywNx/F9X01VZ3lJ0+rCEP+w= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CG SHA1-Digest: u+u2LhZzLvwcBRKyHfo1LRRsgik= Name: res/drawable-xhdpi-v4/ic_circle_fill_white_48dp.png SHA1-Digest: hNQXoSG2a3z0X2cdvCVa6CCid0o= Name: res/drawable-hdpi-v4/ic_send_sms_secure.png SHA1-Digest: iUTEcbh57hLDwBq24T/T3UkP6lM= Name: res/drawable-hdpi-v4/abc_ic_menu_share_mtrl_alpha.png SHA1-Digest: bUAKKsOuQiIKVhmzcDr9M6636LE= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CI SHA1-Digest: gQEKmOIshxNtdeACTSv8jGlIV4Y= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CL SHA1-Digest: tRpUktZVU/SNjBVEf6SfsRwMdzU= Name: res/layout/delivery_status_view.xml SHA1-Digest: bexcCxKtBslE3ln9kGHk8H9ZDZg= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CK SHA1-Digest: RXrpeuEmFtPS5IfZxtB/lmJcY9I= Name: res/layout/abc_list_menu_item_checkbox.xml SHA1-Digest: 6BtxtrSj5417sUBtS2ccXrol3a8= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CN SHA1-Digest: +6d+rS/lWclQcQjX9ZjIN4LVruU= Name: res/drawable-xxxhdpi-v11/icon_notification.png SHA1-Digest: iaRai5qybbT8Fq3yigwMnAR2B90= Name: res/drawable-xxhdpi-v4/ic_lock_black_18dp.png SHA1-Digest: cwRPAQdnIT94PjrUbHtEv1uHPq0= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CM SHA1-Digest: 0DUTWcWAP6rp+oEh9TmRMa54tuc= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CO SHA1-Digest: W0Zq050pRN7pfN7BEbCABvfgtvs= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BW SHA1-Digest: Qr5RYO3gwcgGwRC8QnzB5hE8nqk= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BT SHA1-Digest: A+rn7UjM4OB2drvaZMjvhZe0iyY= Name: res/drawable-xxhdpi-v4/ic_emoji_symbols_activated_dark.png SHA1-Digest: o1JodDcZ+/2TneCvfAg7xbN2dao= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BR SHA1-Digest: 4KciA1/jpo+Us6frPM2TDyYgapU= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BS SHA1-Digest: LoUK74c8inyEoN7gi28JdyFDr6c= Name: res/drawable-hdpi-v4/ic_unarchive_white_24dp.png SHA1-Digest: kUDb0vw7IlUei5/mx1ma9Bxn27Q= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BQ SHA1-Digest: eNnUu+NOur+4ONfnW6r6wNhusQk= Name: res/drawable-xhdpi-v4/ic_clear_search_holo_light.png SHA1-Digest: 35PHZggi1WM89Ol/GmUHZD8kVcc= Name: res/drawable-ldrtl-mdpi-v17/abc_ic_menu_cut_mtrl_alpha.png SHA1-Digest: 0rrYNtqAe+ZiS5xOdK1BRYb2P1Y= Name: resources.arsc SHA1-Digest: FGxuj5EoYTsdNQSzBhNVBejvmE0= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BZ SHA1-Digest: irkyQd1csI6B8RqbC6gHjMbvdaA= Name: res/drawable-xxhdpi-v4/textfield_disabled_focused_holo_light.9.p ng SHA1-Digest: bpNO5KEKc7d4ScXs/viJJsIhwgw= Name: res/drawable-hdpi-v4/ic_forward_white_24dp.png SHA1-Digest: aRxUkfDbNUGrZan+V8kVCzW8mj0= Name: res/drawable-mdpi-v4/ic_lock_black_18dp.png SHA1-Digest: 2Io9MNnOrhJgjFuMDd5JepnF+6M= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BY SHA1-Digest: ctFRXqrm2CU6J4vmMKXKTBgUW3Q= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BG SHA1-Digest: VSinasjH7YMZucy8zl/W4APmIvs= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BF SHA1-Digest: WVduyV1nMc6tHyitox3c2YOd300= Name: res/drawable-xhdpi-v4/list_selector_disabled_holo_light.9.png SHA1-Digest: GN6V3GwpXHWWT1+XcPJFYRdM3lM= Name: res/drawable-mdpi-v4/check_dark.png SHA1-Digest: msEel7Kkn0/+XEw1alP/dbAfJBc= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BE SHA1-Digest: Rt80YoKYWhYg8qYrkA+4cZa4fEw= Name: res/drawable-v12/recycler_view_fast_scroller_bubble.xml SHA1-Digest: NEQxqwQjygZugYFJNUU8ybLfvxQ= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BD SHA1-Digest: SlQkPaNnY1fkS5JC6/OZxOsMfeg= Name: res/drawable-xxhdpi-v4/abc_ic_menu_share_mtrl_alpha.png SHA1-Digest: QmTUhZnsFXq7hkzsW4is5m3JyPY= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BB SHA1-Digest: XtU/YyywY3n91uCeYDD8/Uvq6go= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BA SHA1-Digest: hKU9mWp0M4mY9m9+LIEz+zlgd90= Name: res/drawable-xhdpi-v4/ic_emoji_symbols_activated_light.png SHA1-Digest: c/HB22lBNN4LYepm5i2iEghdj5M= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BO SHA1-Digest: I88GLx6L/DOmQYVvrm4k3VzOml0= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BN SHA1-Digest: wUHRTCnaCDLgleWQ473n569Ghcg= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BM SHA1-Digest: DdSVOQd9u2r8J0b5EsioY+pfGok= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BL SHA1-Digest: GJur2TVqfbwpfjwtOe1+nIgw5nU= Name: res/drawable-mdpi-v4/ic_mood_grey600_24dp.png SHA1-Digest: 7F78uZJiQgg86rqIU3bYHBWKv0A= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BJ SHA1-Digest: RYe85vl8w2mFpnQApeEqOzBs/n8= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BI SHA1-Digest: iZS88pkOBOYAqBOWNk7XEsywMoM= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BH SHA1-Digest: rrsHM9AVXnrY1FuX6p/e038RG74= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AS SHA1-Digest: dZf+gKLL2HEfDDJtH2ICK+9ous4= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AT SHA1-Digest: UKJvKRYrZZyqCUmMzKu8cEyKKtg= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AU SHA1-Digest: ge/jX/b43m/JPiPEQmWZ4RBogfY= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AO SHA1-Digest: D0Ha1bJNuWQpKfn8SDYzyhOxgbA= Name: res/drawable-xxhdpi-v4/ic_photo_camera_dark.png SHA1-Digest: YdUPwpYPhTRR7oaMVGCCBmeSgXI= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AR SHA1-Digest: yXLuaTHYydSh3300TSK9FkGDpnM= Name: res/layout-v17/timezonepickerview.xml SHA1-Digest: +YWjxNfx1LOtArG6NGneDyYXRiM= Name: res/drawable-hdpi-v4/ic_scroll_down.png SHA1-Digest: StqE1YltKYi7ZGi6Cq6zNHhqfmQ= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AW SHA1-Digest: pbs4IuJBvYxSwRB+BbHiaY3hyUM= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AX SHA1-Digest: IMFkSP65C+E3ZpRHve2W8GaMj+s= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AZ SHA1-Digest: s39zUHcenjbKrpltkUa46B3mS2c= Name: res/layout-v16/conversation_item_pending.xml SHA1-Digest: y3mA0Gy6gk7Sw6LtqUBSzs3HP68= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AD SHA1-Digest: RlMBrl7zBtonq3pZ0inesEZ2jV8= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AC SHA1-Digest: wzXH46Hy7sWC7b1cAVQTFfs93wE= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AF SHA1-Digest: YEPpzFP0XN64qbp1OHkRsOhv9Vc= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AE SHA1-Digest: IvmkLYAi5ks8DZw9HSTw0t+eZfQ= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AL SHA1-Digest: oJGHicPYBCz//Bm8oPcl08BUyt0= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AM SHA1-Digest: kx0iGCYKQ+DZtjzKJ2hTNrMtRcI= Name: res/drawable-mdpi-v4/ic_block_grey600_18dp.png SHA1-Digest: xSjan0vZ29yMU3/RPBAuz4XeW44= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AG SHA1-Digest: lV+64gNnL0BzEI7tOf+vSwmk80g= Name: com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AI SHA1-Digest: 0cHZnnuP8/HC5DR0/3dNseNewyA= Name: res/drawable-hdpi-v4/ic_clear_white_24dp.png SHA1-Digest: e5gKy+pyNuu/hqM/R9ev9pw3VPM= Name: res/drawable-xhdpi-v4/ic_account_box_dark.png SHA1-Digest: DJEXivhO+8en8JB4z4/0/+Hn4d0= Name: res/drawable-xxhdpi-v4/ic_download_circle_fill_white_48dp.png SHA1-Digest: UAXpmhPTtc8E0ctoCpM7H7pZet0= Name: res/drawable-mdpi-v4/ic_lock_dark.png SHA1-Digest: QOVZAs0XsZPL6eJ/iYVWmqjyc7w= Name: res/drawable/abc_seekbar_track_material.xml SHA1-Digest: DOBvDIvN1gw9U5RRVtBGkfeW8rY= Name: res/drawable-mdpi-v4/ic_call_split_white_24dp.png SHA1-Digest: tZgaQC9PgwZKGo258RR9eao33J4= Name: res/drawable-mdpi-v4/ic_emoji_places_activated_light.png SHA1-Digest: 75owbEhkOq9i8feK35kLglQs1fo= Name: res/layout/abc_list_menu_item_radio.xml SHA1-Digest: CYF8DGDu/tGrm7bhmsGCFVCBKJ4= Name: res/drawable-mdpi-v4/ic_emoji_places_activated_dark.png SHA1-Digest: dfMxSRGieu5e9RyYKQCg3PsGaj4= Name: res/drawable-xhdpi-v4/ic_call_split_white_24dp.png SHA1-Digest: 5vPMyWqAWYhj6q9d6gkjzmESbLg= Name: res/drawable-xhdpi-v4/ic_emoji_people_normal_dark.png SHA1-Digest: uOkkVrMmBZqLdrAA1gP9sKNwVPM= Name: res/drawable-mdpi-v4/abc_ic_menu_share_mtrl_alpha.png SHA1-Digest: a7qUZSr00ZcAUmE7JWdYo2goDxg= Name: res/layout-sw600dp-v13/three_keys_view.xml SHA1-Digest: 9i+QtBZj1xjUP0dJm/2s08Fao3M= Name: res/drawable/abc_list_selector_holo_light.xml SHA1-Digest: 97+5PTkiP0Ok/P9371JlRcH0xnQ= Name: res/drawable-xxhdpi-v4/lockscreen_watermark_light.png SHA1-Digest: JLCC2x8L/5GAbnfY3JOlgzQvBfU= Name: res/drawable-ldrtl-xxxhdpi-v17/ic_send_white_24dp.png SHA1-Digest: eWeA9e16JIKEQxDvXf/++bhBMOI= Name: res/drawable-hdpi-v4/ic_account_box_dark.png SHA1-Digest: E1V2KrSJR96wVzauXfHJa3ftZSY= Name: res/drawable-mdpi-v4/ic_file_download_white_36dp.png SHA1-Digest: aFCq90YUgXcwZXHc8ic8yBHyKtU= Name: res/drawable-xxhdpi-v4/ic_push_registration_reminder.png SHA1-Digest: LBljpyLEbwvk7NjQH/0wvwOpb0I= Name: res/drawable-mdpi-v4/ic_menu_add_field_holo_light.png SHA1-Digest: HT9HQGybsTJXMjvnUua17xpTeCg= Name: res/layout-v17/custom_default_preference_dialog.xml SHA1-Digest: iGxN2JBtz3p68bBASElzuLFMZzU= Name: res/layout/contact_selection_list_item.xml SHA1-Digest: 6G+nvHsi85Vs0w1r8AsIQU1BIaQ= Name: res/drawable-xhdpi-v4/ic_send_secure_white_24dp.png SHA1-Digest: /KQ/orkUQLjKl5kighqumDfycAU= Name: res/drawable-xhdpi-v4/abc_list_selector_disabled_holo_dark.9.png SHA1-Digest: Iz14YLSRp9C85A2InSd7OO4Ga6U= Name: res/layout/three_keys_view_right_drawable.xml SHA1-Digest: OARIR3OFTnY6eQc0mHjh7x/URhU= Name: res/drawable-xxhdpi-v4/textfield_default_holo_light.9.png SHA1-Digest: DKeaMClqVsDdOOwdcsmTzm049Zg= Name: res/drawable/abc_btn_borderless_material.xml SHA1-Digest: 9+UIx5LzMU67HsEZH0vBreWiJPE= Name: res/drawable-xxhdpi-v4/abc_textfield_search_default_mtrl_alpha.9 .png SHA1-Digest: shUg8eUw5YmR+wQVpcO99B+3lpc= Name: res/menu/conversation_popup.xml SHA1-Digest: DEg7Q3NS8JGA0429vJWm0Mvpr+g= Name: res/drawable/abc_text_cursor_material.xml SHA1-Digest: j7vrPa0Diwit3eZnv21AEhEOiLU= Name: res/drawable-hdpi-v4/abc_ic_star_black_36dp.png SHA1-Digest: gD9pNd1rfZaHg/T9sIhWnrNT9Ks= Name: res/drawable-mdpi-v4/abc_popup_background_mtrl_mult.9.png SHA1-Digest: osQ7eeMeQ/k1V+sk6cW3zQoE1tE= Name: res/drawable-xxxhdpi-v4/ic_volume_off_white_18dp.png SHA1-Digest: z7yFMqSQsmhS8cFnlwVT5ntI2Ts= Name: res/drawable-xxhdpi-v4/ic_check_white_24dp.png SHA1-Digest: 8wFL0VlS5dZarinEXmH01EFZc5Y= Name: res/drawable-hdpi-v4/ic_message_gray.png SHA1-Digest: cW4C+vLes/7/iok4hyO3+Cbv2uo= Name: res/drawable-xxhdpi-v4/ic_content_copy_white_24dp.png SHA1-Digest: RjxpVGv8KhOgXXPZY/AcHxRCqQc= Name: res/drawable-xxhdpi-v4/ic_recurrence_bubble_outline.png SHA1-Digest: QUB4BQiNCq2ODiEHdyGUrmFbJ4k= Name: res/drawable-xxhdpi-v4/splash_padlock.png SHA1-Digest: cINCM2OQ7qKGOXWHFk9Biphn2Fo= Name: res/drawable-mdpi-v4/ic_group_photo.png SHA1-Digest: UstH5ETddEM9nTpUWBD3dntx970= Name: res/drawable/conversation_list_item_read_background_dark.xml SHA1-Digest: QVhTb1JvTgh0OuL4XwXcmoYgAOg= Name: res/drawable-xhdpi-v4/abc_list_focused_holo.9.png SHA1-Digest: Odk0wSbJp0hyQ3RZGhgf+2IXqBU= Name: res/drawable/recycler_view_fast_scroller_bubble.xml SHA1-Digest: Ya8tiZ7KeS8UUktQeNFWslmEDhk= Name: res/drawable-hdpi-v4/ic_emoji_objects_activated_light.png SHA1-Digest: tGhsnYDjKzNZvRHlnY/9Rp8a3DI= Name: res/drawable-xxxhdpi-v4/ic_menu_lock_dark.png SHA1-Digest: +0uXktLB/5wU6t3bQAp0ocoiIwc= Name: res/drawable-hdpi-v4/ic_emoji_symbols_activated_light.png SHA1-Digest: LORgzcXqAUKgwulV9Pb7b2houvk= Name: res/drawable-mdpi-v4/abc_list_pressed_holo_dark.9.png SHA1-Digest: o79LWrpVg8mMdhT8PFdC/uVHnB4= Name: res/layout/design_layout_snackbar_include.xml SHA1-Digest: wstZXlJ7PtCmqNfzenGJkO7cIRQ= Name: res/layout/contact_selection_list_header.xml SHA1-Digest: lKees/HLMOcN/YNRlkGFb3Q2mJI= Name: res/layout/preference_list_fragment.xml SHA1-Digest: 4ipfI4WoTkZxFEZmqCeDvQeUlhs= fdroidserver-1.0.9/tests/metadata/info.guardianproject.checkey/0000775000175000017500000000000013324115531024572 5ustar hanshans00000000000000fdroidserver-1.0.9/tests/metadata/info.guardianproject.checkey/en-US/0000775000175000017500000000000013324115531025521 5ustar hanshans00000000000000fdroidserver-1.0.9/tests/metadata/info.guardianproject.checkey/en-US/summary.txt0000664000175000017500000000002313243530567027764 0ustar hanshans00000000000000Info on local apps fdroidserver-1.0.9/tests/metadata/info.guardianproject.checkey/en-US/description.txt0000664000175000017500000000072613243530567030624 0ustar hanshans00000000000000Checkey is a utility for getting information about the APKs that are installed on your device. Starting with a list of all of the apps that you have installed on your device, it will show you the APK signature with a single touch, and provides links to virustotal.com and androidobservatory.org to easily access the profiles of that APK. It will also let you export the signing certificate and generate ApkSignaturePin pin files for use with the TrustedIntents library. fdroidserver-1.0.9/tests/metadata/info.guardianproject.checkey/en-US/phoneScreenshots/0000775000175000017500000000000013324115531031053 5ustar hanshans00000000000000fdroidserver-1.0.9/tests/metadata/info.guardianproject.checkey/en-US/phoneScreenshots/checkey.png0000664000175000017500000051267513243530567033226 0ustar hanshans00000000000000PNG  IHDR 0n3IDATxXMnnrEP){& ] J*(VPAر]Q"Xa僧~gmNTp~yߙwfiCP( BP( BP( BP( BPZph|\i#l;;;]GGwcbԩӠAFr,̂ W` Ǐrj?ʩ5s3ߵꌔ(XBbh,((">ptɢD%H`@]_a&+3aXAAAcƌJNN#OOOgw!~*( "oj(ROݢ1{TI&N!@̉bvnnnVSLM{RzMCF4Um۶=ܔY"`|>!|,mH1 ,8O>@BPZ0UV?tTƳ$!!^q?x{{:wBs~AZ$>c HJJ$%%4Y BP>1c̲1 d )FPA2qM+KZwRRPPS8 Bl^aדBP( BP( BP( BP( BP(СP( B4)^FP( BiBP( BibP( BibW`))*jik8tga4((<,E\/؞=m410TV)ZeefM6BP(Jch.lUH{Hm&;ǻZNuJp1Kt1Mr5a#o Li-Da BP(X jn~F*~j C, \̓z1ͫ wif\MgsS P( Rizd.ڥt/M~: T'us5wKr:47Dg'G=-2, lע0gSc-&OBP(')jWe9i 3 +9 {Ŏ.Jn}5 1Pfsc>.l^ك<9 ՠX BPZ M! 4ՠ Ɉ[B`utPKUj0FjM';yH#:4uIpeՈ iBP( 勡 dWvb2r6 *wenkh`fg8((mmwCu( B$%Ք5ݵd=e:k]^_:TSi}y1fL]#-"\KpHr5Orڷ9>`(>k6[1W!]EP( (l**=XeRNb}$itetJt/XQfB,tz$Z9:'{HvJr4iǂCp@ۥ#]tU*ʗWvԃq~ήڥ/߿Ֆӵ[.z.>a8z]4(2sbooм 67[.TULsЎ4UP]9ƭ$aPIBpv{vh1KKyQaDkf]cMv:|bUcB?)BO=ƹw7PZ+s~uR)kV|~n7U~6g5k'nr)DS֟!k'4'ilnhZA55P`)((ȻuQ/?NO>^8a͟qzi9㶆{@<%Z%62p^HqjK{YmT`.Z}Z-VPM X *եkw)=TKAgd^ٰW/*q~L]]'XL44ʪpm$G@%8d5_3%fu}y elaJyq՛3|YYGL~nA3;ϭ8 VF`sC E !KEARTv$\ vWϫٸ;;[~xɵчLg=VoCU{^V)N\eUk~v^F+.Kqgo9(jVypݣoNyS*O.EdԘԃ"vG`sC E KAPK/U)?M:FtP^2Ig,^U ^hW96_Y[:"N3D9849 {7_cxi˼ ]u3 ZYvcꢻr24?GnP=ִC1YU VF`sC E|4fPJFw¼{8rxa6dwOQK4U"M&A#4;x3:i]6Y5޼)LKK{CLEݢ"r9VVV.<~TU~؇RȋF%#>:G=4 8%fop>}:s9[[۹sjkk1tPx向9'544n`` ZZZ7|`w?8q"91 ''`„ *&&I0I/Q vYP^^^|]sssQdnHH -4+2"(1 ((h1#FkA$-Z=n8Rxn"19rk^*},ovxo1AY捓 A5ŕkA72ۍo ʛwd2kjj*)ʺH)w [Y*@Cj\?5:VDEδK5kg_YvuE[>-Y //<9K G y4OuiWE'+GȏԐ먑o4E;չ[ѪB׷o_hbg~~><I֭[UUU]vm QZ=6?yK{NyǛ*;r5g5X˗/BWˑz_%8З ;w~!ΠAM΅c}FEEÇ7o 1cV\ϟ?ӧOÍ>g͘1>va8v OAk @EIQu˂'ypnXXk׮eGE̚5LaA[h#Weobuo<)Y^^NF$#,:@۷og¯%z m"}b n:ke(LHx1i~ǎćX&[`5BV6YbaɤΚ-Xu j7dx/״7rvWV3g5\WR`NCv1an~ԈE1 .L2r^tͲc/YdעW<#=ߛpESכֿ>V~dƔǥKﮝv +HaJ}lYn]-Ux&$8{9q%tlp{^]\\? ݻwcP î? CG@3yXѣGfGHWd ,\d>AP\p0!N(_\VXtށyv{Y;qZ:LϞ=5cTܼkkkKKK ,"~7WWWp!!!ŸEeXG#~UchvYsrr 4(GT6{!|Đz6lٵ8p ^HÇ'ZZZ+CǮϛTh}l,:ԩS(@ҩc|t- oo-FPLWȄ,ATekjj$_Rd7B3PdH]9ZG 5+xfW"/L89̂g (ʲI=ݞ߳v{=IMyPxcYOqd6?ؐij]z.}2ot[D $3,qsa!'ntnFF]82!3ULL vy"0bnA"߿DŽz{13|mX̯N +r~OF`=~+Ekacp!YSۼ;w WΟ?Of ,ENgs-g2jUccc͛ƽF(0 l8 lقIMME{RQQȚro>ǁ<!*HAARLpE7A&|֖XnU +!ݻ /:}!O&X%z* m"p@||GE8{,b#$Z(}{9[n.(:YnRkN݇GoIF_>>>0#F3fۼ9r Wp%B"3f n xG'\jdd${ ܙ"\oߎK#1qqqRlR%$~t׮];uTAA m6 Y\v""&*HAA"H7ODD`ǎ'O|Ι!pZ (}޼y‹UV۷oȑ0XYYk^ b&3˛+8)\ u ,$!rf AU{ Z];S+e0xѪ!q>steƠG,nef :s*cPwrC֮ ]0^9htM9_bW^[2qfB\'4G,+}Mhm!W>|x!!Xi8w^9%ײV"pΞ=BU?--Mۉ!"?=e޽_}vzʕ+2>xY,z&YOPC*lnjU 0K"$cz1.RŦXwwwGR]]9=A[hPxVĠk733k!!| 5z8cb8pӧO!Жvy[ADxfyW`q':k`yodBc J*]ş{ktQ.=V_nH=97MŌ8>qp߾U,oG3B҃fzT7$!`TA1$Q!ђH0p CE BDFF^|YƆ1ʊ|Ȩl=X8۲h9K`q;}QDW߿+YGD4aScnx!@ 8fEˢ/MA o묠lq6UM5Oq# G5XJd{)J8Ȉ;ʈ{+IU nuij=ڽ-V|SU·%wmݽeߜ7ο}{y+/?⩷~{{gޜ}5;jU?9.:#U0X5{YsYlݺHhdy=~fi ,___hcǎsܸqgϞ%j, `L[+^K E`sC E ,KqN;K+HRWSI>ڴپ?*v}XTPb?Ẃ?\5zsAl$?o:y@LOpS];OIqsz?$o[A̲i~N~ZYY?<7aWp%{ꎚ~wk9RWm'g"l3y)/5)gy OE>JNrջw4X0һ8fɷzu^7Qκ9OWtҧWmyOl{SS7Ͼr[,5t9$MDnaS8>% |~ ,GmVT~nV9w'w> -W$mdm$m$z)uAF\_ldRW9t!#ފiOg؟祋_rn ɛxwE"ywDG{s'K_bg%F,1%=DMjL7HKK)v]z5p&ˡɓ'ty;EQ޻Lb:J:D6I;ֳϝOJ>[}Z-H`()j(iw1!+('aIL$ڇ{gU֯"yȅqwV<<+&7 Zt—W9u&M| qtëCk8jnMm UfFiZ3 ٷ?ACC|5|B$wOt᯿=|FGN*[!nuFy؆>zϝOJ>[}Z-H` ed%d%Tʹ8q;x̱WzvvIn^ȍ4*wY}呵5#J tܣ IOycΓ-)7N0ښ䍓I}xvZJy}ME94;JˁjVjvWozr;E}rOfYytۿEh*Z> -A+ ,h,ymΦFu;kk%ip-2F\Z4ڒ5O[2QճjMQ;3fx̽aN++*3'E:{HN4OuPO4W6VIXeil4ƕ[Jgeŝ߽;vԃUTp:/GT{U~'ilnhZA5O`1v`ݹ}fbf[5gͼ珻daG&{!bbMLę؈91uj_U#挹|⍂egsvRrSgoh8Y'IyQw/w j7yws_}sNrJmꎚ}~7|f޽{śFlhkMG+h3ljjR3,$+.+n%%f 5IۢVA`=ޔ߽Ց2Ce_\y+?ǻ<ݱQQ,F_\KO9q՛_y|%T0eG9aSxo䚳;V. g"h@./kQx_qwVbJ2nFNx̣ SnN^8NQOvf=-]7'K^YbOMnL8#sCkXKi#/$U&X%J-٩kDgcG-%- BP(:KuP$[^ܼ/Jv0Y0mSx҂,.7iK^~7 +_)z?ᆤscf,M.;P_*\^r5:Փ WmjjiIBP(/ ,Ν5%%ˊ+whʶkU)$n'ۙX9¸bפֿ~Rtųo:1`RiA(&W>%t* a+#"9kk-?BP(J@dd4|ҕv?$g6:3uy-`zkiX1%WN <_{rjٙU5E{P8T]GgqzM$5P( pșRQiN;?.-%-ӥRe:tY%/VEqV-m:ZǺVVU]Qixvn:R]vFgIey3BP(J(HwҾ/mILn!+KKl븵dq]{%:KUvR\YT2';+퓒]&&SD;i^ AIz+IH*)7In) BP>X׻+(()z+֞V HLb. RN .ʗ5(i_Vo;thjGqZˊR6S)ץP( Bd4V`+ky* RqVuU-Dn{B:mߪZr~;ף.' .؞ӳf[fq7m,t$$m]ZP^J BP( E3X BD(F ܺP(WDc:TyJiV B|tb!M4EqX B*VRDҪ=,)P( CaaիWX|KZ[[;4)Ʈ9m lFcXSSS {ᵩBP(k'O(//?|޽{wѵkW] t i`f06"\pyP( 5qܹgUVVp۶mT`Q, EUuu5L˗|KUUU ' LgEEرcg͚E Nۯ_拿H _[{(++á9r|4ђ4a/2E9Xd mA.\ψ0aEt 0`Ĉwpxyy1qu#{fYx1J={644ɰIIIAƎ',, '?o ,@q>enaС ///G Q'N3((KMM{޽Hq9|>}?=vܹӀtRxx8.B'}U?ۍڴiSɸ[x6ǵPl1c1'سgO&<{cTuj!wIv bnn&aB\=l߾);sS)$ Mܑ؄_twHHbFӦMnii/|ƍטzamcG}.))i|E kjj4-X' 7 lM-8/33feeW V/Цb&nF)=z. r]va{C 7;k(`[7y,Yh(Ѩ(8OĀNHHu|EammͤmڵjC3"%ߓ0Dl:th˖-p3DtBF`A gdd dWTTʕ+q͟?o qlj}ĉVWWcKQ)N8fǎpؠ֬YP68?: R(0W!NdA-g@9\vAb, nƢD())Შ͛73u5 *HĢப"!lPFbc eTmp!Gq.ܑBXIիɵL!3)DLn-˂wİabbb cc10b@22dp-6~Ϝ9k%dN%Ydķ2lٲZl"3lsB鹸-tں #xzzװRL؋aGTik&z?OnA{7Ca⏶<33 \>55ͭӗ]&pOt<<<Uc?> zAо# kOs`Ϡ/.HA%,d ppp@dzΞB'nt#tfb_RvHM}"eK 2vPlz#fkftؒlBl>%ĉpn+׺Pb㏻<)&a2#>VP *)5,tn3XUUUw$:V򈰎,F@GbZ +?08p 8 BEuw^^.-$ D`Ak%1c8Z8&<1ņGS>bU˳ `X6n V-g. ҲxgP\H!>; Gč|>|8 j:EH WiYsբ|͆JO:˖@ll, mBB+++2%`&uaggW˙b$TWp$#%&1'ij|rv`RBM 8 f:`fA`9rX& i1E(}ƭq;:coG7ÇFo 9!]Ph2 ?4drҥzW=.3/3n5jv===?"kqa0#B}:`\Ǩ|}}Hr"'DH?׌PɌr|70sKH5 )D0  FAPqF{3U5BFS`qYaEl?c6"kTBlSň솄 {XdcDŽ؅1`4N&:NR+^f \;ڌ #H[ZbtF.7 ź,"=ZRRBI9A`,Q`r: .Gֹ0@j @! wAйz2Κ5<o~>0O09K__|Da!mk֡&K0/D?#z'%%ي}A5cA 5l UIr&Ϭݥ!UYYY `_ BHffB֊Psբ5X Y G!H:s&)D) *y^c`HKK#RRR0pÇ7*A3XzNpW]2aFz{ɓhjhp}|Aiq`>{.Ӛ?K,Y?vZSSSO1d69+6ޘI'{.BBءGrѸ%֭CWY3yd,Y}q &@X b @jw FGG?~\P9 :;;/'nd̺MkrԨQ(1GGG?H E P3kepK )7nܨ pMfnIKŘ $1m"…Ş"F2abז%RC !>U" yg,F`/_;Q_̙3aX<-nR2ff#QbM7]soUUD$TH(n-{ #Gv`Ch|8q 8?K[FDD0'>wgL##Bakt~̋FIS 弽 nEK~zD[\`xL^9(\=Οؠ'CYoհnW~p3['/usڏ 7#!b#OT񐑑w @qZ ?b6u{n (RQyyyw =w@@¸n޼B$J =<<0c\3f P ՚(+nKÓsgdi Ƣj,Qזj?>b&ۈI.DjBp!μ^q]ƀRBaH8za. Ch>rrr#hkYE`m-BX hΝ XhC0 >s@]n #=d=RQ\ܼ۲9PV̷[AP ]㼵IƵEGU]]ͼɺHcŵew^Yմ[9$ty}Xݻw%l}+Wm+ےGF߱cG:S)+|xb\Ԥv2d4k֬Hm-_~č*:t({uΗNnٳgrIMݟ}I" :tak֭lOWWWx0>_EEE&SLa<{_>''g쨄8uT33s2cbbVZf511!D H,X _ ϕ+W8I:s5sb`zm 0'Ǐ={ܼysSH"n+**P#1799\KR[[-{ĉ &.]tu^'''+++666>pgprHrHCii3g>|S4YcN:ۇܹsP`8_UU9w\z.,9J  3X BV5X ou]B̄2e MOOȑ#u9rnfitǏ{D<}tرd7!!3f DΆɁgTT.?%$G_ X0'L ,knnn- ֡C&[`As}dĈ+„Y|.G<}aee%3%V]x͚5dW` X9,X`߾}!/'+K`5,nn/M`]rڶm[gCsܹ>pr0Gy|=zԀ94вe X#gCVMMgϞݿrr2`N ,XES[[[bd- 1#VȂw蒥$..NWG`۸qcAA %$c%[{y¯~odk^[_fd8t\v-GҀzAc74:J-17bƤk9ϼ4i aÆ $l\$W:`;v G7lۃT_Z[[/Θ1CP)2! e?4mq2~(~ -n-3[Ծ}#h |ÃL Ot 訝"͛7#@,TLhh(?E@75==}Q&'Z4!nf!}q=N777$z/= d6NS@ F"p-ysyĨ8%rʷf(#Zy^L!#$c4 3-L|׋׭['J4 ;P3Ċ0KMM%$;j $ ;A)eddqܹs!Ⱥ"%B"˖-{L)|rg0|e>wKP}&\[&) 9d ?<M+LB\3X aX ,`A=6k $F6,;f s1bHKK#( XEP1YՁɢ12DG8i$r+Vرcq. H5\Ʋq1 Ecbb^v- ,&??_PoQgxfKAM WxB<2}թSPEEE(R(ӀS 0DFF)YYY pgOL}Y eE6{ ‚,r<:v옠5Xkǎ]r%#`52QkH #"v<s_kLB,,4I*(Mz v4|fimPaa!!|>ҿx!C #bL0ᙾMйPcLke4ȭgFI&UY=1=3y1y1lff;c6  d@HlbxXIUe8OHyNs*7OeU$(X={& 6 ;t@,y駟rcǎH.~c%ߗǍIqcxU_,Sj}V6mdtWÆ {3B8f%/`m=o۶-ݣQoټyN$v==q, ;rNJTBb.))) f,\,)(MRDYQKMv\wNHe4,SQB*yZreˌp(ulmbXz~߾}`Y ¨0-`alDRSSW{&IԩsݫW/8Ȏ 7\ gOJhѢk׮SJ!S0>m۶D)P{R2fuLcu uD݈:F:-J/)kqDAap!]wR\o ]AQMъUP;[n9=X*F=1.d߰aI,SbVF I+S˫E‡kSN>I)Mx$///d؁ZM+H*`ݼy/,K"޽{LLY**p{&O{7던վ+֬YSEU!m\<Ӽy$lٲ)B:gP9Vg}~adDtVP Fŋjbv3^|YR"°\6yRKz)WfV(633Sd%]N2">}|cS0!TUG\kD]Eo5jLf"ёN:6wEj2 ,ZB9ND6ʖy3LVT^1aLxD ,ŅX3g03>6 ՠAfL)deǏC^Q~zzzbbgO9'RRPP0dRY߁=w„ 8֔EEE9W=seÇ+JhEsΛ7oLjڶm! Kj\עEd? x 3p!4Qܳ9p |+/l77n*џB/ba5je%%HHzȟ,!R> лwoy8sPf>w!fM2m1e#Ay`MK6Ü \.3Ӻa$䄝 Bxv &]U+Qȣ5keEX1S'`&ԨQ#!mD&\$mq<]vŁI@AQȵXpTm {"da$,X}V+l؃mWw@vyڡd233jMd:t(A;hd>}ȹA$QH.^(K&v%r Lny^P2Rs\GraI_z}Xk0 ;.,MNaÃ"ҁ8(Ջ"PX+Le 1 :W݃[K6WK9y#B %%,Kq!EGr_[Wʔw<>|v>+x1GծMnr󊓆a^`-B ,Kq!XN| F^=Ozlɦ9͕>͛7?x`c-Ӧ6-Ze)^$ dɒ%KVRor]vnڵ,Kq!Q].`E徶MmjSڴR=uҥ'OZe)^$ԩSYYY6eɒ%K~F"/RH,L e#X6Mmjӷ?JOOR\9I u]dɒ%K? rE,GQO+77k׮7w^ǽėglo00aܹs!CoJ,IGI2iQQz O?34^dL&Ne@Ծ˗w޽[nzl̚5:qΝ;-`aNL`}7=z|K.ϟ/o"%Kr ;<={vݺui111q׮]k֬Yvm.0%%`z˸{yh.6m SXXغu>UIgrZZS 1ڶmW\ļzƍӪU2ݫAT(jSN wjb#¾X'%%;FMZ._z\2'"LÇϲeTɔ)S(6mZ$KwF!GB|!1%%%ՒW-[ [_߃%V(x?|^XI~Μ9^bhUi̾yA:r8rH.K̰?8ԪU+U_7*#9#ϋjX 1_Ѯ飮UZ>}Ҳ|~1k֣A֗U˞2JߙH"PzסH(%,XǏ,K"`8qB"X^)exb3uv9??TѪSȯYcǎ0`S[4ydVmڴ5j%(.^`&a\'=zӾ}7oR 7,a0.jժ!p"ݫH>X^R >96m:v옔?E ZJiXKlٲhѢ5&߹3bJ 8u]`,fЙ3g$j۷oW8߹vZ: >BVB} СC%K>,$@!"3 V@H&ٵkף/&9ڢE ġ|+Wȵl;S$LJ Rr=V'S.YB%Kz ~A ,ŋ`Ŷ[lP)WMSK`tE/:V}@Pرc9wٲe4$m&[rr|W^K.޽eLu5hÇJIayjK}ңGro߾R._(05zQ>KERtΕ) k7v܃ٳgex|E8p wm%?1c 59VReݺuaSi]N0cȨR8n8UXVY5n={*9YI\XR_Xɋ֥9A#_+HCj`⫚A&4!4}yxq]DЫez_L2x 6$>?"ZrҲ㛢GwUiX&N*,7XUZae^zf@cutep)BX|{G`رC -h F5b"aU!m+VH/`E:y%\*R2+@ȰeK`L)@~Q3?_B`,UQF3\}GŖ̉JfRf\kwy/ŒI+ĐZ$\,}/`1޷oLr /--BpU5R]Dpi,vNƍ&7 vi1ڵkQ^kNa-r-[=)z4EL ]}{*| 9QT6~xWX% /n ":y$-ő$Qeffb`ׯe3yI `II>K~ӦM8˱(JX/>@ 7oT `dzbZi=x09_-M26:cǎٿ[nRٲe' 4fLO^V28Ajj*?sssz^Om61(1j*~N>]>|xȹ<+W$rMIf_1JOOWWʽ+=X"Pɢ0\RdPvd\*0-`!y\:*l3i/u,X zkUjB//ux#G>LEe7E,_ Ϯ= ;[;8e?n8+n =Z7S/\t`1P`Y)m3䙿֭+y.'֔_vm=XQ[ -B5wիֵzy=Xjժ\EEERد_?2VOT*((*$.]`͞=;䄾)@ZJq׬YOG~S yA0݃5IXK~vޝN=,1t>_ـɓ3gRBiY-D^zbb=e%-w@* (e-+{PvO3faRk|LTU\Մz+@RwgƍJJ.u̘1CWr{w2_v&\qbe7Z!=XyU5&sʔ)!gLc<*횻BaNR.O/ԩӶmpHHɱcǶonvuaTJX1Bر<.{X63d{XXvb^)r1ҧ~*g5h@_/Ӣ<)Y|9$kS3+4~0\6JKK%Ky "07oud+ә,ǙѶl">gf Ŝ9sdqM"`>a04nO>y2H#PPȒYSʺS'77!۷VbȺ}.yVŭX^= PM~~>3A3Pjk0F@T|^4NuG])a-*-[=z kpF/^4i0xv)0#P a灆_R\^Ǩ[Μ9Ӿ}aj{5+N\K]v=q bUӧq)!,,6mUʥeNIIB`4hLmڴ:uܰgC{CW Uz24jԈOrG{yhy3)VZ+?,d?/3{^U0;plp=EY [XtJT$4dy mZ1 IqZjԑ#GUt1ą 8 pa`wS ?1dJVo8Cs^*uv)^^ŤjLXT` aVR\HEXZqXwA,]ozu4cBٌY*[1L_+b! ,WYE[ncLU72޹,#y)PN]6ZRF}rQY#^-6-{Q oO_g=xA|̙3-kΝr|Ű"E`1MWeA'Ndu>b( 0zF8"x(.Zz,wz Wky `=zt`Y n݊QU,5gΜv!V9`ɗ>ڵk۷ԥ0.kzj\|7mq_Nj233?x(.Zz,wz Wky.\ٸqXB `aZ0X,YdRY`mٲ,Kq!ڼۼۼͿey_ѳgOy5||I}̵u}ѫp 崴4`9h۶m b\r;7{iՍ79/gW#E9!DIN _FqWG}Yb}OJJݻw䍚\deG^?5۰CJ"|!z+ݛ7o>|Æ UVԲܖ`aN,¸䃃x!?yPш#Bm=z$YMr|yN4I>F1o޼ѣGWR%99Ycq_Z PǎkLe=#: pӧO9r$#Ɍ,!ZS/\*0\ 1_ѮcƇ\_-_z|!l̮R.U LGyлݾ};>r^`͜9/˘1cT kquٖ$RK^&{oEeddpU?K.$??_%{>p|KN*ifԨQWsrrzׯT ǞUU58e޽׵Z^%PXh"z1) ~o>|x…,qԄ*vHF>nٲeѢEHM`AbJ\p$yG|Ȗ+F$|D_Rm;׮]S)d`%ԷxbANH XJ QSX̃ `cHȀ 23P5DCsٵkף/&9*ߏï:u$[Zz|S1S_dvuTPhTعs'zN5k֐5kt "ʥ2Vl/Eq,=Auu8۶mێ;L=z,YD?W6>\駟޽;==}ܸq[zœC{ |7l@˩}%ʑ=SΥ%< Azw.m,\TիҥK\Nkխ[נA8k,!&/Pzѣ۷˧UYo ~\j-ղeK[׮])\A-JΊrvVzàAt]QH08jrRʺu먯J+$.(23 ZjjmCFRD+%A$θ)%G%%6i @-|$XFޚ;&`ӤeK5Jx &ZKׯ`HTUW.upԡ[2BÆ 3=l)ZM ]}{:qĐ(qcpW .wՁ&EEEut`.EO>=^_X_|a?^xʷnb8@sٲe2Q0s{ 'O[z$,J"X#XL"cǎ"9E"XPIi%y\~rr}O2{Had5sġ3dΗKڷ^|1j(zp+!W[2'̤9ɹE 8W;K^VEԑK fF1X2IN\_))),'W_}E&--Bp[yoI+l2#II;RqtysQ4ѨQ#`k׮(Gu} 0' |1="X& Ϯ= 9(*?~]P,0S/\PE)% LS`FuU7oG1! '@P~b'ܱ&Z zwouSD6lE"ҐR<ˬѾ>U?==$CޣwL#w xS`!Z0M6 ;'.l3g;vTknݺI˗J]_gLYasΝ;Ν+%,'"X: ƄZjZӧOsO>=rJ,w|XM.^8,I[_pr,v06L|I|d\Vo"X ]}{vvpʀܸqWN=zn$^!?9?E& *tGUرc,Y0@+pN'`<@%vA, ´]JYrJUDjڵӜrq i/o"jժ0& 0kM&׼X@tma<} eٳCNrA 2<5$pKn`+aJ]+< 1yݻzK}:Jـvn͜9SqfB~,ƿzꉉȦ-bY J֬YYS,rCVϨ5>t4jDj(7iEPVҾ9x|۶mDq)1+u#,$4ԣGpLlQiУL \35xIoO)R //T/7vX#,+W`q"V*DQc`BB5j%ȃfBF gϞ[*Wz,Gؖycǎ\Y IdX8#Gj{,de LjĹ2>Ijd}hٲa`w^p<}*ܥ]ꐧ8 Xf70=z.88]}{ @1*:lh$e)70~s.]4m$''\Laa!s>| `Qh% T<]~}sY**%%*xPZCc* u7D/1V3^}3M)! ,WV ZcjvS8*{_PlvJJ+rIHȩ8:TKpًHqK$rFwɦב%KY=V=7\/S21TYN2%կ_>?۷ɓ'Jϗ ɓ fu&%(酠~ȉ۷g1cKΛʑXRۑn߾]֜,_%x2vĉ:b(0=G)3C:qѲcj-o&wRl{:w|…/1\N)PUeff-!lSNuq\BWRҧU1Mmjӷ2`S6e)^$,P`,x1.]?>ZgyPk֬)|x{׻w._߿zkL3Տ8K,iݺuzTrʊ0Ԧ6[J`YI`W-2`{Ȑ!3g8G6n(P9sf0>}T^l8~Çׯr 8pd =zTߔ.^C5,VEljSL՛xA`Y{@`լY!yܹss/lʔ))))m۶5jTQQ`nn.Dʭ[令*:_nݺO>|^BJJJOwC`t).zW\O7n L$"uرy^ZtʧM&"A6MmV6euG>Ö-[TEڴi#;NÇ]8q<q9r$kɮժUѣ)߼y3qɹ'(JڭU֑#G,Y?joO*… JN*dSԦoeGX8 ,ŋXk׮5F㒿tRF'NHcRުU+01dɃ0̙⣢Sz9WEՃm0rE6lxzUZƍgΜm۶94)u֕OSSRhoy]v4h.lmy+ʱdI~P"X[>Er8U~:uJ(QFfڗ| 5A;wtqP)f߾}G-us>}ڼysVسGjԨQܽ{7vڑOMMmҤğ1b<@ [߷ŋ̟??켋SMmjSuj#XʎJ` 7_TT痢i_[GI\z5p@#UG?TGydA tRS~rk,`9s :tժUEÇ]3Fb&1*hYۼۼͫ`=XNR{02`o^h@~u%}Wo[Pf͚6mrY,Tj կ_:՛:u]JAy"lڴ)999n>|Y3d&Lvk3gT'l˦6M:,KeG#{**3`#FٵkWbb"@ݻw?2~lrOOO'߶mI&A!CP.ruK6VDv>Pnn~QG"죚1cƜ9sjԨϢ"S}f:u} 9:!o˒%K,ŗd`Y* rA*.֙3gڷoá &3|ƍM6mذa6ms-yMCf;333wN!57mڔڼys ʁkԑAr߂!%w[lInݺdO@QRN@v?z(rRXJ0MmjӲNmRQBW9cړ7W߿y}_PAAWxmm眷{,=X6MmjSV7j+S˖-_,K,Yd݃euMmjSڴF-ŋdEh#X,YdB,K"z)%'Hmmm-˫,GX6eɒ%K~,KeGA,6MmjS݃egk;v˟>}zС۷xbP֯_a9|N8*szzݻd<@΢"ץKTaڽpB>}:@[c_Ϟ=C$ O_>+} $ST>,Yr`Y*;*=Xݺu BUVyUɓڵkW%Znݷov >CquթSGՙ|XJhȑRbһwo&y;v={ע䏄TҤIȬ /<&>TlW^;С%/^ ࣾ{ ڼlv Kؼys*|srrT}$iѢxJoa݋K)xaԩr*2+INK>sΝ\3`z'Fm۶QϞ=2cmWN_`8{y+Smyԛ-/݃-C,D;<+XJXRME~J^`y'%%Єr|2lӦMH\dDrrr6mqFNQ#wIαc"̡CҚ7o"gŊm۶mذaQQQ|0u`dɒlRQ{^ lذ̑#GmqƽoѢŰa5ke/ծ]cǎjժ `/+Tu… e'~J1tɯ^kB0a.dɒ,TvTW^NHƍQ,EwmpRRRׯORVСC[GAA Hu9uIeS9D}Ԡ$3߱cSNMDO|f~~>meee}T$n7ߗ /_/<&>+Z}$Zg)Aw]YdE`Y*;XK%īTiٲ@f͚ ڷo o֬Y$yPɦ6m^SN 9Xu9u٪UdS9ytLr[xj#{mV:ݻ~E"'~E/D]Ǐ^dɒ,TvTV3 &7eӧOի^ӌ3dϯ[.]^*(hUT`[3M6 (i(zE5jnI:uSAB/o֖r^&y#ҥKC%w*4jԨI&*B$]|LeG*yj/<&>+Z}' ϝ;WbZW^}wnj#G}ʒ%K.r,T֭R\9aT ָ 3g$G~Ŋ!kgiСý{ղeYfI]ne FO>r^5eʔU4H(tqizW"}veGΤIwe9xb*zJIjjLd3IN9Λ?~rr2SĴ4|ԩSa 8{gX`y&OܬY3*3)PΧf͚0\M14oޜƍ9֭[=he_]ǷXޖ͔<}m]yX[e)( +[,Ydk7%5mڴSN5hРU[,Yd85k.Y>Ϟ=+**JOOo֬Y\򗿼{bh5X,YdgJX7o>|Æ &LXj0oMMM-?0;;{̘1%5jԨUVRY*_*=X6o6o6o咏3g/q㥞۫W/J,d`Ydɒ)+%\AWׯ_W?V駟޽;==}ܸqppnFFƒ%K-ڠAȫ |&O I&ٳg͚595k۷v:p:_ڵ ߿h;k)B*aYgؼۼۼ7o_`fDS5jp¥K|I7mڔOdx"8[ԩS7nܠz-G}]C}ֳgϨO9B鸜N9/ZbB6eɒ%Kn#XxA|cXjպ~!C\-[qy_~`w$[n)S8pB٣GXv"6N:EeKE`Ԧ6MmV**Nhʕ}xt֭[𬅅gRR6lX?~ՇJ>;;ٳgȣ~ `;vs6l(?_G`bj>sN%=T¸#*|222m@hӧOAA>%wiEEEhqǎ.]M$O iro={P_6e85K06mr‡Sʹ\O$G9 h7zd)5j 4h߾}.v1ֈE xQ4ĄV.]0Ç'C)xݺuѣX%P(99yٲebt:tї+W0kiܸ:s挔-GmRc-\|_JW^V|kğW#GԮ][99s愴7Dtر#v, PիyU^o⏧zP1c$G|mIh4nrS՗΍r_vMMz  p-[G kC1%@_QslIʤ;_/!aӟ[e *U*,,d ?e@ ޽ DoITsiA_=էO-LYߺu{|RK?|kz||z0\ɋ#) Jć8tm۶a>Gߵkr<\mڴvĿaÆ]vݺu+^Vߍ4vX2ZNKKk޼@ o&yOӸMV_BoРAjj*/S&&z}a,ܭryŊm۶mQQQ z WTx mܸVr|XwW%q(N< p?Tի+kx1-8.]pDM~͚5}KX.h?eiDIC]Ѳ*FӨQI&aQf֭[c)yW /HpqwEsT2} d/`J&&>%0O>%ѣGC%{MU滲7Ǒ+ )_jGgM6m\q]2؃e'4ԯh咖Rbꗩ]^LsrrBU/&LpK1ر8/Y$vcOIAr0z)hM߾T`nnذ!=X;wp`E T:L ,P|p9,7)oPIl}ΝUFHJkԨ< (J?^lfOLL78*UpӦMS?"TKJԩSgϞR i{\ԴiӀF[n'4ԯhUTT` +]^|s;wĐ^a̘1έƮ]b+W/ K@yTxBL؄ vMKq"yك`1ռK2gnݺP?;#X x uU[j  k-[j`:7L/2,_\sH3f{M8_ŢҥKODq1;)=z7o^FX )SV:h ɎI&u]u>ŋK8$ONNW󅌆<5&SM6E2RSSg͚5sLI|M4nrS5Jɟ&|L2koҋ/lCSz,?hBnq\k4''GdSN5lP@zJюsYOc^ljӸokkСr b C پ}1>|¬,~2GcH'i^B.]233Vюs rY&y;ױywTHÇaMmjSԦ嘺"XB ,ŋX6mz{lmm+B޻ hE`Ԧ6MmZRTvTJܭߦ6Mmj2Jv.^ڼyXB9~:ɓ'6eSԦ6}S>χ -BK"xvA6eSԦ6}STvd#X6Mmjӟij#Xʎl˦6Mm3M],`Y :zKHl-ȯwh۶m\Hr^cǎ'Ox2LΝ۾}]ܹ#?>x swmO>=t充خ\ݰaCzzV]@3 'ʗwc swݻw/.9MG5n&>3yF={"˗]}Ç,wvܩޮ<m}=<7ۏ0q}1ٿ#V̙3Q'`|RX*Ee|XE `] =zt{ѵkWYYYRdf 7رcGgtw q㆔?^tڵYӧO~ڴid={TߗzӦM,|暚57oz5i:uTɓ>vv011Q^F[.&{ U9sB/=Y_o:PY Hj*r-vL|L53|֬YSzu)O05J;nٍ7ʵj:{l3&{0ُIzG88C]ڿ=5O _y`M|Lm}^~\`Y*;*%0_4w{Om+W+VrMR._Q-Z6mߩS%h͛7\H [nիWO|HUV^i4矇 ߕM0K5jTRE&,Q&bcTPP@Ӳ `lС4!'?M7iDmr,dz=vX@r"mfC۷MGIӧO/UMԇƍD,/`ܢh_8sJJǑoa,0(8 Zlٺu7gM`0G=0@_=!:hk<ݺuk߾$Yո'~Gd沲N8cǎ?- TjỦL=X^5k.YDyyy]tQGkת)qqXlن 6m:k,>##C˗/WݻJª?\J-6fR 3^s2aÆ۷p̙:tP߿:۶m#߱cG3P.wmTK>]^jcƌ# ('7̄,&TUvϞ=G5n&>^Wk׮]㖔oڴ񌶾Lc3#}B\dz'I3&1Q4/`?4{+WX-ְdo,{͚5,Ç_|S-V9 |=| äIR`8.?ƍ)S|TZ>jxlbX9GxpHivM9` H+Wl۶mÆ /en޼YGhӦM޽>LRuw|.\ؠATe0QqNNNf60vX  '''--y adjw}YfIr'&}Hs+!=O4hRjU 3Į_5u:v(%Dg?rHC/.dm`|W^,,E[ḙkg*r?nڴ)5TS6i7jr}22 p}chd?&9M5p)ǐg/Mhv}'6z$Dq@t$q3 "W0/l?z* yݸqwvi ˗#/^ 7oܹs '~:͡)SL<7ѡ }VBzm&D_:1cƀI`,X,]JY:uݻ=Zkˋ}S1b"uQa׮]-B\U5-?P~Qol)^:f+&yYܹS9w%֭&,V͚5+Q.KU޽{)))grQ< 9bhT*sp5Or@ǎ.^ރ;>! Cpe"@~t ^zqg6߹V8c_4ngEĊ>9+yLm}=$&;qcx$I&{0k<+feeGt'vL|eb=>x%\xɓ߾}֭[AZxʍ7 fiUV\b A`KZ\BEBȈ7(/#EV@Bf1YlypuC S%3!9I TH(`iii$Nŷ'DCrEZ/۷ιYf:tmgρ1ۦMA r62aOȰ7B~G4O1?q314έZJNN֯_-6h%q{^,bE+yMݺuաPIKH,!Lm% 7N.bV-4^uR+!.$M4&F&LmH_B,8];'Nw\Yk3&@N⹣Y?q3o8O6-TrL:uS\!gR$㖓UtۮN񌡾=ح +"^zddO5I],C%@7_>mLRSs& ceggsa_~:ӧO9tҡ%te:f !BEk.Wƀad8`0 ƃ aHFia`lzy (0p#FH^XeTMT չu҅ZL gϖX˗۵k',sΓw-[`-OQq=En[qɖSvDw>|e6wOH8^bȤ 1r;eʔUckT.b.ckذLԤM"i|B~+Kx(v`^+z[Nj-P2VE;юoۜ.;&MCqf g-X 99^zgM>]L8_vmu$i46gz<^z;V=De)BaŹ`U\ݺu31䉈l޼S`DAdp9&x)]r֠Rjwe [H4^=ha7nm$;of?.+8C`n;TQF4覥tm@ LCœ$v`Ԧ6Mmf9$oz1ѣGdd:BBEEEd)ΕMԤ_H69ءozП ;T#X,Ydɒ%K"$MmjSԦ6sj#X,Ydɒ%Kq-yyyy`Ydɒ%K,ř*ֳyyyy;6eɒ%K,Yg˒%K,Yd)d%K,YdRyyyysF,Ydɒ%KL`Ydɒ%K,řJX_9Rnɒ%K,Y5p8w ow4hϞ=hZdɒ%K,U| X/`[Y #___gu=~so.ߗr7%to^/]//߅ۿ> Wƭ_Y'0,Ydɒ%Ko0'Fίt4ܫ_^|o~u_~O>?>{Oվ?]y~Y ʸwgGxgוgvt"X6",Ydɒ%KH Տ/>ssVWfW:*tN+.|A+}rw2V>MsߐS<|SNw2WT>zʇnU>p&*ɫ3K7^5*o>ɓ',1W\x5k%ۼۼۼͿLm+羳7/#*pn©{NO8[Tˇ/2~ g_ 02μU'U:y҉߆J`yw_Uڒ +m9o-5UXX8x5j$%% 8 >SNV0V\Ydɒ%Kt `/X^w\K8p=p~т?a0预3^~R~~*[cwP"jUpA÷hu~]iO^*̩D.bWO>U'?3isέ^xXU"`gyyy/|k_O8x3ȭc X'NW%'U T nUW) \} JuҮJ;+mz2Mn|ުU7EEE͛7wUsmuǏY ]dɒ%K, ,T`~gՄ}_'p(?HA„cY/~JU:yϹwەS@T:*PV@9?6g&l8sV |/O>D/>}z$j׮u*U:r䈔,PΝooojժu5)3g6hǏW֭[5jX-m_?4MmjSԦ6}R"XOr+M ց/0ႄ# Go^:vޒ? A`n%/F+v]~5!=7a'9/V.'ߖM~KyyyիW*|z٫W6ip#a*=իW_ׇή]v*UW??ر#''g4t)9ԦMXm߾˭Z#X3fسgy-Ydɒ%Ko<k^3+oٕwVޛA7*YP~÷[/<{ʻ*V9gw澳#ۮ-^mʬxs|g*m9S$'pi&?O< Ν;|…?k;w;*tw֐!CLrڼۼۼ[/%~ .R¶+ ;rү%Kuž {׿=7v_넝y ;%lMؖ5;a.'lJX:.‹5_%>˄g|gGS#X999 6*V\ٷov%%%(X[ ѧ~X򗿔pαcT:2fɒ%K,Yz[=X; ^yZs^_7}-_ݎۙ_z3w;2_nﶞc{Gu^ipb;u78Oܳnlq . #QEG6ؘ@BuifQo`'%sʌ$r3=w}~g޹R=P|H@<»O>'|\I='8gs#Z0?p0{M |~ɓ''ś7o&vg0p s6@`0"d&kbKVxOOOV zd VC D#TFF@.3jv`pq8rĠ9Zmx\%+^$֊:Khu#h ڝPs;" Fͱp9ڪhdx衇x??m4f9 ,cǎ<^n!$J"vA &P"K UYyJTJNojNT*ZS`1)/hrr=0|Fi^v}=0{{ #!κH$ںgϞta L;_뮻juOOB&:XLrtp8pB`%Y;X F+D|P(Ζ+2Z $2X**յ\P_b0E5`4C&f 6Gp( D#Ѩ茵wtuCwƫtiiߞmݖKٲeˤI ~=>}Dee _|8E.`0}ݐ /Y`%b$5jԨQu`ճ \%T(z\*TTQUYZQdWՔUUT=Ԫ|mdh:jz>_jjikmwktڔ,np:)3a9rhWDFFFFFF.9,d6*XXT\Z$RLDB> gJ` s w~tiv(2D 5:sf8lvq-HK3fުjRB US[SQYQU]Qn=[][Snj`yzNŨaֲN;{"h{ڶOTY` =\E9G %RBQJ2o)P TwNaK2L.+Z,5jZT:-^(jR!Sȁ똌Q[\^~BmlJRFE E4KќyqdI#K׿//?ΝSMA(7[Z[Կ"DFFFFFFF=XuP(;:bXOo㎶tvuut`tt{|^b-0.jj^(R?CdË ǵhk>7|nxx/LS_zktmQF5jWNdZZfvbmjuu=P$ f Uskaӛf{\ErgC`0+A0X["ஆ`}YVQfh4y>/ z`!######_[=֖( 6+spzBKKsKlD@k{[9 "ASYjLzRYS؜v"S)(DPaW6a{Kh.oz޴%k37<, !4':ɓO&F9ѣG\n|@Ax+ыJɤ๏Y;X555?֭[:̘1u}R+ `!N&쐑KN,pW^j-&I=2YݡPvL+_??ݾ=gC`.0XNέgx lŮ 3guMwv0%%%$&iΝPӧO99s&!<31mڴH$Z*[3FOhdpf=Dnn.ԩS$x2߾}$PY򈏤=́Tp dή]F8湏W@{#ק-ZGœlJ^ YhE7722222):XRCe@vy\bmhommi:cC,i% o;wnFǚ;s?@ 8x#e|)|!_h :H,Bs0I$"ja2tKJ$3w\~?Fo B8j˖-!+` !/p|%K \w҂jZN Q9s֯_Ӣٳ;Z3-^x+ؽ{ܹs;XL&x `A p@8jK."5kֆ `]("#(oѢEht*1 px5'&@իW g l $'5w(>)\.$&vQFuStx3E|#@\2uho#` 9|YLe 3]mmι>RF'I:XT7 TUEU1ln&6K6KdFVׇ)D a ު ުܢjU..@ @i<_7ILG247ۿg7v}kl=?~}F/ jZ. KpSƎAN]4-S5߬|WҸI txWEFFFFFFF'`?ӫ-a3\0[tQ(]Ҝ!f[ʶ U$U;p#]LiCޚ!kh΀ő Q8C3 nS Kd05 SF2]]]Pu^&T}t+ @ 5d,0X,ŲJszm˙҅4q8MI5)Vjھ8+[3-i ʁHS*=>2$tI8]N!8 nlO:x83aK^nD^.y>1 fffN:gYzu H.xw}7 roooZZIRoO2巿mnnྑ/hE%Nb:4/MO]Xid4y 5.)JKKӈD2 Qj} CqSEuyt^SZy<,W:әpXaѳ4`^;X9ov0L8rx:nDwy' Ꞟ0X65g!u@FFFFFFNd:ՍzWۓi@06K"B`:)⨸J;U4k֪za+3h'+$";ǬÍ7޸iӦ~:o<[[[̙sT|',a 0[w<㎽{ǎ@g7߼qF"5Ճo&zElvz衇~򓟌85k]{{C\.!OFFr)rχӁn&IA@ Z233~ɯèQF5d:E)_ZnJL&Ky,?HfQ!oAp`ܦ4LW:ya9kiVkUiN#ܘvVVtF'Iv(((,iP(Ns̙`>H&t[ofO裏nnZ d$o -o$v[?bFyaȰ|r( 1x fZuA~33.\& ]mb~RRD }e˖?(-- ,4u@FFFFFF$N=jVlI!tCMcF-~x3 ^S|/&ǀ߅\LWÙQȨS MfT6fTZ. 35M8k(R]F:@yC{cI$qP(LϚ5駟&zD~*??ϒJ:Ï~#Jr؃U#@rwgJjj Fj6PJ݃ eKU((?P({ O|oO #Wpqqw =㮃u6O|޽{`}[ gɟ|Iqq-[L؃p s62@ 0 ">Dѐ8+BRYqϞ=͛IQי EP(c_y'xO.CӁ`ZJrƬ5jԨQF=N`\>_$*$LjPų5j ȥN焗jq\B0KzX+,QtR3jwBHsWs+v77hFwƮ? O6 b^īFw~??>:x,*,,$V`mdd;=I+W,;Ggy睋/]-)洺F3?$+u@FFFFFF$Nkzx|@( JQJZ7BVPd RcjB4p \^IY> #m tvwR/;{zA~]ݽ}F)Jv ####+++ٳ\HIIEGo`2w߈0{K̜J&ĞPE;)S:y…t+Ɋ#%3<.o|x]8䦛nli s̹;`X,hҤIFqt5k֐2^͚5 2nmm%9u@FFFFFF$NbX .' BLv \0MUu5Lg%RT! ̆Z/*4ͭ8)r7,6k9CH%FnwGg 48,g~iqSI|-[@LF^^)WP_L\Ԃ m2.%Ht҇~ރ5ފI`/\r%L`* ŻYr ws! OȿuVR=Cs7x {==u"#####_C`0XvybD&//JEEeE=^* "'UTUV1Uu5eU%er+*_8`uۭ.i5-ZsðmZZaD[Z.efxF;::g$a.6m.WP'-OJ~bT8޵ Ðnw]u@FFFFFFN,&`2X l|P,,*.-N EBLZ^Q& "|!EՌZVŅ;?:dzTfɍRA" hX6isF3jnmoh5`!O fpQPhڵ&MzU`TTVTUWc5rOVԳuXl`1jg+*8#1;D|!`AiWQHrTiRhj ` G#jz,䉰Bu~G^ U!#####_OLuD H2L.+Z,5jZT:-^(jR!Sȁ똌Q[\^~Bm?Ea97V$uF5jԨQ_U:Ez4e{[k[+,X=`юX2^Nljn°:lzlokU|2XL~7k{K/:;;* &O!р,ddddddkڃ50C.DῶVYΘ cZZ[` Z"-H( jVcҋ2b55sa4QXn v cE%qy|^(R@ 5,L 9L٬֖XGyCP _n-&_K[ @8 6iz\*Q9">][hpr|GAyk6?8\{{{aq,z~R,ddddddkSz}>U>dt8nq;.k4lvnZd*e2H9,;l2w) ޥM֛|-}}}Cm%gKZj:lNS"\{mݺݾ}P(DtuWC ;oDQF):XrjVpG"d :c&) 7fY,Xw'L֖h[K]pϯw/c^eLqkK?uwuW2ZLdk>쳗tTvv6/**TʯF?D/SR*H8 "!xctuuut4G2?h 4}`4S<7|[sBﰃ0ssj R`UWTWj[.dSk}}}IA;*5Z3g|$WeD ?Rws԰nWOOw3 7DB>TZ_~y9jbx|yKc677 قW*4 v݀wWMSXJw iǏ/((bb`nng777X#G/?S7G`8yd^^^---رc#=ѣL에u+++!N"fօN>`l6:@ x#HY]] #\UU;h4|>fZ$M|9BB2ck $ xg`%}"I>g|W ?5|~j 1@g V( xqٜvFRcB< .\~=,M?qLEW^ /GB 2^yC_ӌ*$9s6l.ė6m|$ke5cmqƌMMMɁTvzwA7QxOI&@  z0,pW^j-&I=2YݡPvL+_??ݾ=gC`.0XNέgx lŮ 3gu `W'Tfb,` }4//9t̙3!}8܏>MnR|#ٳd,]4;;4s)?xK/֝>}ӧI闐'q<)HOC"sH$>s}qH|Z, LC\p2\piV/..&!'2~']d Yhĥ/PF5:EK&y v{.`2X-mXg,s(9[DAs ڝ;s?@ 8x#e|)|!_h :H,R wfD(h4[&. ^vr~ܹsJX G-^xCot8)StT$N6bx %iKi!Ødm۶Yf(Ȅ5U8ؚ#q̟?(pykkkO'7Oj"D&"qyHK &Ua)dmr菶D,ZjS /&9tG}ٱ=Ů8\IDbD*ʕrF% bpGKC. AzOx xP('޽"nT*?''駟޴i_nÃ;Rt?cy<^9Nbdi0 ;)s܃ nCz~P={qbAAEN$O.}oZlو&zOd,22222q@(p0\nC 6]XXPXTH ӧO BtN< ϟ̬g:~luyymeyMeiES/JBTjTBHk :QOJX,pGt:ljx/I ' OEt c9jkkv>ߝ qMu+o(O3^DHKq\_ꫯ>|xڴi$rYVkbY8'V5S~"d<؃`(dw8n[ WU-/+-?[VYwJ,4ڬd-솊%%%-r}eF!s'aXcv򺺺Hy6iT0NE@yH5k֐ U+W|ׇr O\} = jƍtmaܹ䣁f2F#\)SqpK/D>ڒC?~N`W 9!1XɎXhD1F5j)uϷڬ0lv,˩i͍fb,\4ZaYkk>䓜9[ضm[vvǟ~\mBH"b6#S*RTi0itNCkFD*N+BoLcd}7Zp3a3m;w#<$''_j3g|Gy晃VnT呴֭1cz\rg'Djp\p) 3p0"h`\{9..!sk;7QUS~"d<%_-,`4Zf9Fm4vl (drdig7=q葽{?'? y$rT) RAW0_(w֪q n供3F"K.:7uIB1PvP[ ;zx^+X+q#x뒫qa y~Us$jH+1O^}&r.P'8F'~PF5 Pk`lv "/W* BrjjJ J ϔ-)+%BU$"dz@=,K{) o-&,d`@  ( JpNjFyrlR !H,Rk5vy^OjղlQèQZ~,υb@$((g3,&j`(=[j D5̞=["|ۅ R,>.JV4*0UZV KNK"x!Uh IRBlSM]H"ݼe̵׭]v݆uk֭Yl %֮ZfYk: @ ĵTK/_xtbʤzlñ$rBwz0|^XFKYEZ\PKJo9lشq-n9Vmڲi썛6op4X@ -0X<>j_Uj |X+HP X$|>t].3M%gKJu~Q?lWU>C;rv۰|`VrcF۰nkׯ=t;X@ 12Xh(.-&bWŝ0hHp`ͪ7ZrZn-pڬB qm!mxx~1Zsy\\T+ wTkJL,ew؉x=EP#|.a|GR Ƌ`!{mXlkf̬NԨQF5G` BT,IE20L!+0Ij@$ʥnA=`2 ee "vb$ K}a<;gGE֯%Z:sx:T @ )p8"!"|x|P|eCCŁql6EQPbAYYYg KR .@ 7G ?)z$?d@ H 5jԨQF{@  jzQF5jׇ@ ƅ=XW@ q,ddddddd+B 2222222&@ v0ъ5jԨQF7BFFFFFFFկkԨQF5jPc  3B5jԨQ;XWqjԨQFBFFFFFFFœW|1v0c  ?n̙3gxj2ߐV0ʚ:u>zjxxwRٳWXQVV77-- <ַ~%9S,[׃q 1c~&}ج!ıp›o[{__m`~('9QF5j)"7xcmmm${}꫉s@<129~8ؠ@ 83qb,!cf3>WXqm s`"#####_,oKwuu߻oSvZ&R Voܼysb|޽#&,Xw'|r81Uub0Xs̡`Ho;صkC=;tM0{aXtp~s΅a!PHPg7|svv61Xd0vPsFF?HSo~sC/BSSħO3!Tx|>߷F5jץZ:Xyy[7oyfS0 OrkRPP0ޜe˖zEl6xG}'zW9NX#}{?ɁȒ%K~1LݾpBp6fLz/J%9s&gz7AԀz7;Xpɓ\.d1cƽK!Jzf͚^08/ժh~8d8n`>;$!}52 jwL?wddddd뒯=X}eXuu2,''?~o{/ɱ9'L4&!ރo@`֬YCt4lcYbI"Ԉw /.uxgtM[nwoNfD"H F>v֬YO?4ѽgΜYrܹs}Y2S.` zTs! 8@ojZ#`>CbԾOzogV"X,(|>`jՔG۱c81sطo_b]eee /k޻;/, J}Wx yɓ'`lB\<:̡EH׬VGCRٳ"n8'|nҤI#+1i5jԨQ`'  % q,yˆxWW X,`p]~8'͛!y  ^xaڴi'8 9~.W-/98G3ŋnllLN";Xf;HiӦh4 6H*jpxpH|۶m`/W\Iw"Ȯ]^/Y6O=XlPI'@*J$q!/ Ç_xy4eB&.c޽`wȗٳgu]:OVY!`%Z'O馛֮];`ܹwq`ܼy3x4|{Yź+N !P{ws36Px`??͙3 NJ򀋂v;\$@\Y`şIP$bk [јe.[-npb|>x^O\L&BPh4`T*+3g7gϞOi~;ي~m:u~7qx , `|痿֭[o;XC}f"?ˣ! ýޛ EKxwҥ?0> -V+Cc8'`>)|Vr zB%N򀌌|e9Yk(,I[`Z՞cJׯ8mÖ'`0X,;]$fZ-.h6Ap~39200@jM ocpovU\.q0+р81kH~<8T`D@1#9 @ ĸ8Ǻ{âl龵skEأs)3o'N*,,,)))//6 @ wJTj4D_e; ]h"#######O` R[P|N-N2pGu&>`2M0]D"T J ^tz<psssSSL(X|9liX@ X&>$eLNL>j?-hZu>t5uUUU,傯LUccp݉lb{|j=DNddddddd䫊^<&%s[,<ѿ^!6mW$`JeKx@ KE=XC!Du `Rht 5:V1Yln^`]]]}}="@3LpW0 `$ 7sj ?k3͙3===cvDc sҩ.;3gΌ`qotׯ_zE5jԨ:Xfmx`v7yݱXG+5 #Hgg'yhS&鞖\.`0Ir"X ^e7oޜ9s5f#N|◈`&PʘG@ +`}}fcAn___uzf v^5D6iý*''iOz~NSnٲeժUO=CC)Sdgg[?1w͛7/_ݻ|۷xG'#Oܹ333STt _I'Niի_xb,u6+o6hT9wӦM۶m3_NbfΜ#<. $)~̂KB-Xsꫯ/}Dce\"._{5XẉF_(@ /`jӟ$vYŃO=8t188TCCCMTUUZ, aee+/裛`ҜYZZJ^I[oWWI!!M8$_FQ-rMĞ={h3tM6 _O&CK `ӧh8@7p/Ͻ-Ze8:x 9r7Moo Wa:a2+F"搜8˻D`~ͩj <,utt$ϠRGLD8jqpG͝;P(oKU,Q/^|᤻ !_?^y R:Hr-##w8KsrrX%5LIIIC 2 L' X<%ozUbxy];3@1XJfOބ폼+tǏ"=z4(SFo0~x>}0c'*2X@V uqq1{O&&=z65.'YQQ-[͙ᙗ'^xPp36oތ[]yy)Syy^}QOOoŊUR]v7XX 8\/[L:Odd$3Xhزe ƽy&4X3?={suֱ;}4\EB`pɓjǎY~*F;$0U:::g!%+XMLLЮ);%U%5JKKkРAvvv2 U|Jbz2מy"3{Ā [Ǝޠ 9ayIෆ a\!O"))o߾Fii$e.q[T%:n)r龏Tޱx{YYswl_Ž!Bbv;`K~*yvz'ܼyS=log1yD鵰-E 3?iҤI&-Y}J_D wFF'O`sss ؙF$&&&&&&&~, ///_/ܽ{) @ 4 ʕ+pWL?~&s&M4iҤII۷o!///%%E @ Vh*їsrrbccæ$&&&&&&&~ݹIJة{ݹsw޽~eC~@ C*X܊W I&M4iҤELLLLLLLܤ3X@ iP`&M4iҤI7 1111111q33X5iҤI&M4&j`73z3 &&&&&&&~Ø*XT"&&&&&&&nfnUL @hVP;^&M4iҤIn 1111111q33}*Xt4iҤI&M5U_b M4iҤI&D<Vte];IuueWwқetbbbbbbb/`5\cΖyd2;Wՙ %o3@ 1hj n _\zwյT>}vُ~Ng?e=}~CM`U=>=$Д9(nzUNe93~Nw56Ok,kլ+YTZnpYC.<_K &`Ur<_8~1~ZcS/5]_35wN-][٬ľ|---׮]kggW\\f،#sg?11}Pך}55kj"kjW-YZT(/8ܓ #KF](q]Vp5}}޽{tt %l8;[YY͝;itXpoݮ]?BMM>0`ۦMh///tӧ ĠA{=޽{ XyΝ;=2޽{gdd ͜9 [n F!***׏MLb4&lmm=lذVZ0552-Fqec2'bJZKokߺ&!M4iҤX wqEUao[3^pୟ<%|K?-yQz~һlQjGOݛ~ԃEJGw%:E,60 E-[cǎ0999p9ZZZ>x":lSX!oA`PÝ?oN::wBhꫯHF #!ML,LO?pk׮4Μ9ނYYY)))ݻwd%F9j,eq5@ lj/N.xxɩb<.ۑpo\YI=}b֩;3`bO2>Ŋip3-h`iё\rәСCh;h616O61Eb`1 3}},<;y)61FMk5?C[riҤI&rt*X++N1!ڐÎ^z#W/_>DS˦ĕN61x1rGe Ky-NQw m3X Enn.n2ߍǻ_|E;v=%+rxe>w=]j̙3̗ćP01qHT';/mmm٧xfffYYY%ob2+Xo@  4 ;/Uv?`ިC :T8pѐCECQ}L};]<~X3ZO͖ܺu 7{{wkR,'~0.wޝ7o`WbtL ֭1 [lb)))Ĥ(qKn޽_3f̸u?}:>Ea>Ď=OZ,KJJ:Z2#ҤI&Mo`=?\0|=L'B 97Ա ru@ ՠ!CY! ;?}\Fknu\g{G}_Xd2?lxbN62 ܹs+`tS JKKGZ Iarrrڷo z+XբdzLܳgOX%^m۶h7񁈈Bġ8vF k`ML޷:@ `o <>tzg.<\4)8'6l6yaϾ#?AUݏ>pP{4uQ0z_thCwST;մE­nݾ(,khiYc3)|!-A[eeePXXXqZV:=rWDW#jzձ=e}P*\+D_C^(2Xg,[G c8DXEh[e$V"AYe_hwyMGvvt k+>9 U7~ϸ #[T;csPr`iklXd-ݾctcD2\s^d@ nhS4=a"Wa(`+P uCZvGt,¿vv6שٝʹvln; Ӵjlw`ذ; pCa=5Y7XI4iҤI&rRݻC -w [ 9l}pA-BcڶGU\{_k?l緘4hlsQ_ogbF`pQ]ݡ2r-B@ Z%4]ܻ+D}w,P_~o{rд8:-J8 ?/SsZx_0ti,0ܧվUEk~aH]!0X*9jg!knI&M4i-S+UO,f,0ܣ&>V65D:5[~ -'%_?`UҽkVy.}]L|0Xئz=aC:-5[ s/VS@ z`1uEyZ˞9[uOpeDOIw뷲l|:̼}N`MEGGĝs}&Bg K TS.wwMAus VD##]kbbr ꯘ'?_O<)&M4i-A+U:jnn⫺[}eН󢍽Tw"{{zN),TQiNVyX41,S?7lub7mjEK`}P*\,@CJ :" ` ..YR)FIIIqqAD+ @xS;SS*ƞ0X=.{ /صGVN_q9yvE_~y>ѧu%$$wK$6JAK$e.@ g1` 4 P7U3MmEWKǍɫWJ;11111qe*Xaf&ު_=Tw}vlo>ԅX0XԷ:hoo66ZAwhhlRv+l(`ݽ{"88Ibvۛ5ۏ5v8 ʠO>E$[ZZՔK@رcIdnT $5REvR5te଺¼>EUΝ3XsD,,'+<`muR3pmh?zfFV{,UZB; G߽{&%%|Mtd4>xn0|̙L_v o?^zD\dɒ˗?y2+X2朝-޳q,~]o>q}*3X }fF1-OR|ET"&&&&~c VuN t>vVAIM$^;U,v vx,iVGz `Υ雎lqThwkm-v0X}s}yaƌ =O2[f+**VXQ-UW:z(VpaTTT-[&}[l ˬ`ɛ^$ħ'o3g\~=laE0^رcǜ9sXz+Xv `$6Z$@ )`quUJRUU%=~ULTT̓ԸG9z-1|^MY~՞ ]48nqR쨺>֓-psyZ])\}.XUogiӦ銰m۶'Oųgφ-E?>)YbhܺuΝ;ٙ-yQFiii 4^f |evzOJJ <KeggWЇB 'O`?o߾To iذapN3lړX[nMW$ '@,bbbb7[A*97ܧwM}6WjT7hlhș ٫E֪ZlXetii)닷Р<ҚՐt-&þ?^b5bR}ACׅH/ᮘ൒9k`5oD4iҤI(dKrݲ|gMZƮmw&B1cD{ocFf~}V]m/4ģ1111111/` ѵuKK 593wf9s焝<'YxO;co\A [x8~ؠ%7rUc@4iҤI&t#+XYV :_c}6myׅˍ[[f)tRcv6Z^c|}KT]MVR튘 VM;CcQ3}6~gCv8cL(I#<{hOLtsG-aTzĕaǷ5yW#gvZr4?3I7SrUZ.7#7 S*)캮cn tǚ0⫵ی?u`&,_>ckTsL|ҨqI&M4iҤ[n >|&n{c09GT=j+X'Ŭu_/2tG;z." {C@LLLLLLLܲ`UUW9Gup{TuFzUljumvyջTWZ]j{Փ M`>*ئ-N*ΪU6Pb1{ȁ4ޥo-hFwy@LLLLLLL܌ V5{hkv~KXb3bx /rb exo¸R_Z'OO)LeT"]Xo7ELLLLLLLL,\&M4iҤI&DM,bbbbbbbfgH&M4iҤI7QS,@ B*Xt4iҤI&Mu+W7҈ȧh EAAAAAAAA E3, f2Xd((((((((9`QPPPPPPP4sh EAAAAAAAA/0Xycm;ma6>=64E}+_- `NL.._~C_]Z6?$}+|i=_FSPPPPPP} zEsL$f_׹]jxj{fmbV>453˚=FAAAAAAђy !Ѽ{bZj\L̡C58޼8:0|)lP|n# V9_~cպMMΪm+QPPPPPPh5.ٳg?ްQ0lL?3~#4YN?7'uk5vn_[S~3 zH o}2v^/z?6Z !#-*/ԂLAAAAAAђ@qZ-BHB_;{~z_ou+eDa&-5c._:tz&B=4u;N_)"ÏOf1>W$Q=`|vjϿj)mQK>Wߨ|9X|/5喠!rfv۾~O.'>?1~mlqٺ$27}H&M4i ,kWn~_ZPZp79{n?f)bt= 0U1Nϻ[}P8F=, qIc1sA"FFr83t3j|vn.@;~[i 将K̳{~}[Af M5XsǛ8&(sтM$W[uZ?İpZ=cf;G/VjqGtсf*>IYψ0sZ-c^{otꂗߚn,~2.DS`N` \c!?vnɍj`>:moj5"㲎,с-LUl:X-`qkOc'Y.гe8+,}:w[RI9ÜQAz|fW:Ľ"M4iҤIotS+X*>WQZg)'3 &}*IM{_xxˇQ"%2X=c?[U` V/wYkg`J~i/VĶ}-:lOj'%/3k k.{dՠ%i5OسU6'Ĩ\x[֭dƅg `wT}cg_tw=d+t}[S_l\~cۼ.;S>nYwCx뻽;N_/t)>j`Χ_t92v <{$2gsv:-&M4iҤM`lu ֔ ҁ n|ϝ>!0gM6;NDغ 5۴%0=샿 ]4D51WCgid|!ιݓ=ACtC@ux4fء.֑?2%VNsadVdhQ{?wgKomSӧUϟW=Qv<},{/l찳9Hp/^n J-(=Jru5HْΣzhD^xG-YLϾ yP@ļ>'7 `v;}Fx(&1111111qӹ,us YX-T:PPPPPPPPh`+;RN8TڴZ3d3X!"UWl1©3Uuyzlfm{Q} 5 SD[  t}ImU` E6UL#\fU`9  2] )P0ʋ/8+M{_0)] lrmp~)}4_11111nՀṽ]YɟiP =6r$fzrEaSDU !G^>.p;Wf2+XB 9n0.2W0m8.Q zX J8m!Ait Wύr\]Yk.Yj Xgyss#=QwJohĞHp}{l$]+o㇭\mi$ZWFbbbb7$|Uf,;{2?}| [rrr? @Φ$KV)xWaꩩU @/Ov/ Nz+X,X;p8Hch谬Q`WDud{5dr3=(?䯚` D.5`+96OϹeW"YEPS`s@n6 Ny m$&&&&~c!,XЬn>j.@aĭh(stE+Xܩ)ciiignjp`{)nnp]b&oο٥C;u pV.*Xį  Z}[#9`M;cnUeutcIv?lwW:ՠ94] S")/pj} D6 ,ɘ[%i^ʬEd8!]qKc(XmRl {ޕĜC3_)5`oWSdUzW~H&M4i,a9jz%t/Y}>k̓%¥kww~fwջky%µ=]O"OkW ⹳n{Å>+UJ?3^C2Q L[Zd3[HLLLLLJ,AC=ZDnrjA.&ض3.OӴݭWKA''SqD5~?"?CػppP47q 1bP vq wdpu T4iҤIn8N+׃OLyq/ s^S%&&&&&&&nܘ3X2tx3XO*CTrE/Sꡙa,ҤI&M4閭es+=:-*^4²RELLLLLLw&y*;?6[#VG%?iҤI&M룛+xU}wZ#~g0Xn ]V}g{D=(},HAAAAAAAf`(P➼}C8GbbbbbbbWTbǾ0HAAAAAAAwf`3n UEAAAAAAAQk"M4iҤI&tM, fV-&M4iҤI*Xd((((((((9Z]%@ 4+Z=}YH&M4iҤI7]zF @hV"@hf"@hf"@hf"@hf"@hfz94iҤI&Mt5U@ ^/V]]]YY'"@?Cj6Z%M4iҤIV^+U{nQQQAAA^^^_r{)37@ 3X())IKKKNN>?1kמ>}x-`ݾ}v~~~>ȑ#qqq ggg61k bcc[`ڿhb@ r(:UUUu/ quuήqㆾ~޽ ~ׯ}D蔔sN8}nmoo ŋ]`);wߟ ٶmE0[ J\ppphժU^^x3:wઇ"4nDUUU5553 ?g/ơ)#%C,8$xÇX` }Yfsڴi:usk֭ĉٻz葼 ͋ZO?[8|p]Lt}Q:3%2+ߗwٱc߂?lw^ `o9s|ɓ'?{T/c$2+ &&&&&~YQ sզJ <~ ϱm6ƽ{Λ7i+W9O6k֬w}uְ 'ODҦM>}9f*8GGǢ"6… ~v߿3c #O޽Y{Tq/b׮]WA)Stޝu!?ϟ?3o6**ӧOիW+xzrK0"v;O0BzbX ,hjj@ TorKСC< ;}ң`3g(`]|@y}`:v3ޅWꫯ'`l*++:t@V rrrUpi/_̴̝:u:~8.6lX׮]Y{۶m x>/V922IIIaW;VWWzҥ0ŋfև?&O`1юᴵYD 2nܸg/WkŊ~hh(2cpZpìx*2mݺuX#̽;11111qKVbp67aaa y߾}0uA Wp-{{{%l>}4_9O܌1%y}GL# 4?c;wpЬ͛fkkNR7nhӦ v_x6~n̈ܰaeeeigg3%oN@o.A*KTZZO bpl!@||I&M4U?~ zG111YYY'OC ~Ņ,hYpss[0UDN=IpÆA@ y%oÊ#-?ȈJ??իWϚ5kȐ!|D  /A`ḤK.=Do2..'%%IgP\)/3{wڵT;vvݻ91c`} nmuI\Tرp&L gW)S*,,D Y11111|&$$$R&pf${qV]CnPPХK\2srr0ca &y  "d7xܩS'++`.QIU090___֓'''K9ވHS^fŋ.L,Դi sN Ǐׯ|I '},ybSؕg3@ Tor1)#Gn#555>> :000HدPs]vIn޼ FZ4~lDXzE2rȾ}2-]bX:"kggXk| D;l0ɒTb>n`Dltǎo <Ϛ5M6B hݺ5vӥK~i=GZ///~۷v '=,OUQQU|Ux  \΁D8'n̰ ߸qwhpFFL_ß!\lʉ'Μ9O$0jX0j.//n * yFEEjc&ݻn>g ;ƍ![n|kǎfž4dXl#';S5eXdCCC6'~pآy}gi &Mڵ+V[j-~K|_"3.DfI[cس/#s۶mao'6|616[^<{%gk̘1ܹs, ;iҤI&bu,f 7EHLL[C `yzz`BCCu`焛wjj* Lɓȃ[ku ѓ,Xo 矷fˋW^ F`i!,}xU{V^<4h6ˀ5 `7ء.KfoΝ;idVdf"v֯_Ϸ`??'k=nѢE*YR..6ŋ}` {-aor"""ߟqʕrgD#CWҥԃ2KG IܒH6nضm[x"&&&&&KlN11111W`0XRk/]0p#B*g {xxegg޹shb*--åϱApeee2z*X70IpH`SNݼypB0[h1:{ɓ';f/ Dggg$ȸ|2bII ,+;#w3""֊ PbE߰o$6eeeݾ}~Ν;0Fwޅap8OX1bOD2\{td`0;;} 1$$`Ǐ`"&&&&&&&V`]`9::\t= 6˙)))ʞ>( +XHžԐ7v\~մR2,`"&&&&&&&V {-aaE`\PPq .DFF]of4.D¢SN988XYY9990+vqqq,y$M4iҤInQ  RPBD:|0 Vnnnvv6۷YV5[:gΜ9rHyyyFTRtFr`^\,f_;'!؃dy)vd%Bz`$$$(SYYA.\+SN1mjj%XXXcn {Ҹ;KLLLLz  nH,a~ GИtylhhODDD>}ߟ%xqsׯ_g}.?== }|| Sb- ^B9_u%Tw&ގ-ٳgoݺņf-2WЇy&Ј sΜ9Csbb"ˀ}۳ >4K V*odU(%jl]甾o/`1kܶq+4A`W!111쐻y> lPhѢ͛7ftĉcƌٹs'OpAM6ADN25557n8m4eqIyz4`~LMMqvrr2?Y"!?Vw1uFB%@CTׯS\kٲe˚5k*v64<Z"##%V;c חcllbŊCFB gdd _mƍ~ `ffڵk…#F9͔G'h9|0Vc~hWvZ9W{"Pv$}I&M TopwyV7f'W䝈g 7\kGc2Ukkk8$g9@pOUpuueMnnn,y`֎;0XC<}2 И^;v pSNa%KXBz>.\RR %SKhBr$U RRR4huƍ`I-pɬY>_"oh,=ʯBĔHZ@ mQO+::.e<)._F7GGG푐*+ț!c 8浵+XǏGxxNv?.//g-RP8pm'O\|ɓ'l<,T4s>Xt;挗III VWhaak̳ zc|6+`ITIW~Dɿ@Xĵ[;&%!x&[[[i2A >=LK ...W5b,Va'x%7X^2,dCb톆2NHH^ʬ`)_!dVd`Cvv6 ˬ .}U$&&>U`7uEؾ};+P=9 ` _`>97TG{+U~2'_Mz `"*}㫘˗/&APQқth* E " U( Y{]TLvn?yg|sgΝ{}λRXXޙ&ELe5ØaLnIiMՅl0')%--- ;:Vtqq4f7ELFLtWZwD ?4>o,bf.:wm|ɓV PLHH@z}eeek!_R2AQ|z]]$M~~~QQQgQYY)1Cqq1ZM\_ lmmھfQRSSwgno?R*(((,,tPM!LyygLUlp3䯞X?ƾyڵk=E`͟L >I߱0iҡO ~ЅE+**[x`a4774(+..l0ߘUB ~Ѕmf ,9 `x; Xxw}3ΚAAAAAAARmT]JTi\ksژhCM窐 kh$“"jv"<9 np难 h|^j1{Uŝ }AAAAAAARUk`` 47ؽfU7i_Vۯ.ER_L[c1WeG![ibG ؽyX:PN@}RQ;$p0!-]1۵qa+,,l1~p'OD>==zjf0)) PoN4arr2z‚1O/YU*JE՘n^qc=֕&eٓ<ڧ%9+3?;z0@V@k=w][l=Lon9+xRQ]&?j>܁ZAQRq;uX\Uxn g8-wX,rfBXp LHHXpyKKKggӂ BCC1X<\B~˖-k֬G?z WUUe``(--E\q5{lEEĝTyyyh$6y~~~(~㏽=g?TB{{˲06ظb/*sv: N+9Ӗܛ5=;0f8;r(+x0ͷ?rg٧>{v_p^[;|l5@ IU Hl:'/((j7zѻ̰Naaa8+V':]@.''w}gbb%z 4߸q#M,]]]֭knnnjj4y`>}GxE  JqK8|쾕ZOoVp}(#}aoVWIŒ6}Z3v:uK7fY)fva- *ϖۖq:ex7èGtq?iK`ծ󭑶.8V豭cD *z+dz_R7س}u7vMoOa›v*/5ݴb'*K X;[z~Ӯ6l]ؙ`7,_zvгiPG7Qs|g̹[gc[Bn_ϸ~!F XhpWQbuan'pVtoL[Ғ6_0-w^7A;Qu[֠C]G#,P=s;ҢƁz?k{ڃŞ}C =**dI!OY9P_ eU 0x5ѫoSc^} m{id: ޑy~O3}%n&9޼{2INK}m:Cu늴쎲9gO }/w답#<kvJa[<7_a3:S'W\vm1_gffeS?X>?<'9ID7ƶ/l_]omSUQ͸0g'&:ORIU |IY|-c@m>O5ZBӭ@˩3 @DEE DDDTVV<,.._ݻw?ٌDі3.13Wf=XF,46oXɴLqav*( &;PrTsŞn#[B2sw-/)- :X7F}M .?c߁4Z_>(((((Wi+XVh0,ʼ\eRY:*ƥ藞RKp2̵;-*/aaeDžO? uj&<7VdlEXE֫:Ȼs5Խ.IyS»/irHop,^byMQTxNND|||Tddd[[[JJիW5dCCC---*zF=~~~MC.t"TJAٳhB4a@@ӧOɝh|KK dddÉ0TSo ADəkpȇhWhhhSSɓ'3((LJJA>>OOOԏR3gP @Y 8v2(aL3,,G@H{6.G EpF^. Wu:| Tj۶m[Ca܏Ή'8͛7^!.ԯ۷o :uLRR˗M.gccAeeeeEEE }+O\T6Px^[^SbHN'RꏍEǘ'Ǐ1'JʉsVWWNLMXsѻ;zSGW߱czl=X-׀$O52evkSэÊI]766b0!`N{{{(`---<444LكCl0֏ ۷Q"_"b`4z\ 'NE{郧H _D2@RPiju[eWSoXe羺G3ԮR7.߽>(eXy֫hgVw8f]|J(=8ieXS1W5?k+}4MqhDĘcY(QYQ1c"O⹦['aJ^ÃyrJIIAc;[8:>#CN!9`P:{չs԰5i=/=q l"ڤ~L+99 XNq9u+X#!ag^W{xmGC]:-;#O ߻BgQyS17:Wh#k'D6I[l<)j?=|R$xʰ~C޷3IM^^^tyrBh*M,.`aoi&,XݎLii)$o/))#L>8x5ˑg@pss;Pp_[[ XϟVg$'?'DK-CG_M-PߥxLqsm'8(r-u7kL:Ex:VnӍUZoZ ^}tU^HRLs׵:k^aqtZx,iE tgO XCC055ݳg֏+*6k۶m䀥PKK.<ܹ#,,{Ah%hZޯ75`rIѣȠi=M?]ÇRvv67`;фh^^^pQ`#'> Xux<>x:^᠗f?),wXV/ZFɸ?`(H:Ji"뮛7l|R@۾“ђ79Ƿ^zɳRbppo`P.4D:>iFk̴ XRĘ.ʰ\pP=)tt Ԁŋ[W+4yxii2: 0t"ROOOGA`;]NNMg3դu1IIItGtw=1`=}] @Y033@~G+$$F3MgIf? n{5+9^=9C }9 a455MCI}ϛ>GOkMM˗/O3[kƾa6:x%r?5,27WP\"b eC(sլ3[w5튰 9pmwvNj|ny)ӖZj [_沭ˬ>`sѦ/oXVXԔ_03" gYq"o"tLZS/} S>VQQ+a%F%BAA9_B?Vztrrf 1kVQQ.[,.$B(`ۣa7A-!!iwS|{cNVϾ~k{qD$;-l<_Mq>Uּk^Q`:(tT@y+ohh(,,,''gkku,55ƹnB7haa1444= tǚﯹvٵe^Gn7ce] JTZw28ƱZ7y6'5# 6~\'lcG.ů[ZKBDRBI>̳/ƝIؗ63qm4Xi,x֛k{z/1 f4[PS`cere<">9d+<$s *UkVP#>i&J.+̟ڴF; d |0qq !;'GN{2LcՍ֣&~4VSnXjʼ \kq;ķz?=#[fԔer /G*g]u%n)ŞN3.<e}#f e0JPR78l=OZkOѡ2Zt2=˔RKR1,ź*>kJ4|hZq} ڕ!׬Ű. 雙sX6=`/)-}Ζޝj JtTKM6,;Ag°\jŞO?9V1=odvZbk1Wo V1WXDy/ٕ陓3sΠt_\1x¸ո'~B UG~U1r1cyJz+q#:üü[F^)H^%?L/i!hnn. ))yz~3jo*S>j*SOUr{ȚJz稤騄 AhDDXHo_{Wc[CMUn?cҮ,VUWWGKKO?=y{>NAAAAAAAA?O?m(a 2iԸWoIm 5=cfodwz-ԎQw`Xx될 ~n>6n|F b8[uMz٬MSSdbbRQQ` &{tzggt9$_?xg]ABJb2;Ff'j&Q)Uh%JVB|<}\UF b vln4>BGwY[[Ot钁Qڻw/pȟ>}<ё@JKFFFH;wLigg'((^㓒:!++kYY6`bb~7"""ճz,cL?1w%_E ވ7z-aJ F͘čb(W?$G+~~-}j=lr]ҕx;pz-t-k8[?r|яsrBo߾]UUu4󎽴xbggw]vQQQ%$$۶mCI MNlٲԒQQQǽ{SNaΝ;^^^H{{{ojjB`(a(i͇ 5c,Ҡ>00ߖa~aaaAm LhڃV| W*=Jl],ۙ%ژZ[H銻~%K=ƺW3v>F^ TUU>݀EXxɓ'yyԑhd||x߇ )[;V{S㫒PHP*vEyS=Z8מC{Si5)bEDDHXߟ,+XěmmUPPX@bɒ%ׯ_$UonnfLLL_w K[=g;xvutog`n ,,,ˊ]Xg{KGá}j~-o{+y7^36XWCh#3?Cor]pQCއ zs)zϐ3<:'$fQbӧOQ0y 3|)x?[>fG2M߳pZ22 1 unYHg{ߛц7g+Pm[oFoż־J=L+W~ g᷃ o,{7'g!j9}pق 0͐Z;[O>:~ }]v0`_`kZ<-x[ru?5oz ž։պEЌ16|_9OzFB{ ,/gQ_Eo6EO mAo!ǖƪk:r_)O!߉njiJ d/OїEսtu[МaVZuYɞ&fwnߓ}ߝƏ4vKJ%y:LU!}7zw^mnnaXo6>>>PۛO{EY vf-\ОȢhM=;3S, ۑd+hgcR3ٕ4}G'gֿ\ee6g^K) zdQj(zrʶRp=YPz2Q1`eVu8`nKjg`z`GĤ붑qvK*(ZV#ЅG͟dd;e|%=Hz9>d\{rCѪ95jM)-)dXbK/Z0J R0R(J8JtR-w~vA8ŗ "u(W _ry.TʰP}dޤ%ZR,hA-yAs2)(qũF_q-;u'bkkS9r 2S ҉T~jZڨj8x֥g|\)/T:+9WYb>~"%ér.T98p+{eWirHoJ8bjNµ$-hNZДCZ"X\qW{sg/ JkTռsS5ݛ[ZM up7,-/:U1Vy8N=8f:gӉ{ZW#KNjڒqwpMwqr]bBZWwWk+U$6 ɝeee~~~Ψֻw^r%++ WѰȁN^TT&~g&ޞzI5Lԉ^FGG_UU5T3;9`OZ,0GE @^zE>Fn Q VEM;XM'D];X]}#)\9|w+$֫O屟eyfjyEԟ\E+bQ@KWwP"f(`凯>44ɓbPll,//cǐ">tuuك}$,,>|'77<϶mێ?. 6 C=tR111S2nܸyl*tiTwZ͏&?йo8}4#))Y[xVrpͼqCY#5jf j*ו5+z{dTC?u Y,o>hoQjyw ~3kCAU"1]yU(jqU-gQ Q8sLOO#ׯ_:H$((ڊ|vv6z x"޳{n++awssSPP@]-& Gdb|2?'c&Axxxg<"ܛ7obcLMMwkjֽ40k jկ+mG P U"/ i8ƭ8tIRPWl*z+4P0Ƕ; XUxU/YX˿EZtEmmmX'MMMyyy3tXUUE ?w.K?4?޽{;vٳO!_PPTX?ZZZ% d1>"']+>>{k%%%a#<*[WH'3|+fi`? ʝ(Y+R ^2 WePRЮ'+yi9)ywiYWIigQB΋\(85b)jqgH+nmd҆& aYSSuV^^^}Ф*0RN@@okk,--=[丹>X<^+rSǐ7OI0itٳgQPľaKT}_u̴P "'9O)+j49w)PB Y5 gqҺn-w)Z? -ZqEwGg}5fI$f9t`=h1ol7>xK: 2,LX/S&wuDa ]ÿOW(ZI;K9KH^ }/%M ZцDR"ą-g)TU`{Fg^(((((((<ԏT0l*I1WTG .w@MPxUı&uI\̥T\Sf_i|'qAiHBjAӽEKfmW0X yĉ] &w%6.ɸ\FJL5g1KqHhO5'V5mAǃ/8ogőGG&q*rbxwQU )X.΢J^w?/(4$ XɸdRB=)d{μoJ. n4bCNE>ϏFX,ŕ&e]؏N!~u8'6ŋ|~y ʮWNH}zs5 ==MDi3gtŋi"""tt4rppP 믿G˅𷅶kr\A5+:yٕJmSBg4 'WP.kkk>,JE^c5-U`ͯQ^ߺI.n2X `5(c)ydw}cNN|virssz/{رSGEEEQ3 {W;X<_ɦk[jP{wMN0`]]ݫW1{dӕE񠠠^z%&&RM!Y -v t,"""ϟ:v̙H'$$hw~#h`)orowX_l:&C}vq[7[MMձcǴϦhkkk`0o*X_Ӡ=_ױ>Ij#Wip8.pKοACKEejz-U%\34jQmfIJJڰa|.~Ս7~W\~ѣ9tQ]to۶"gϞ=s w>}iZMyLÿSN)gns.\Xnݾ}JKK٣ܟVw߱P޽{%'zRΝ;t,ii4ٟ_d=Q峦!,,UyZ|/-*X:woEKյj`ϟ`0 ? k`Eֶrڅ#95%_}Z}*Gc;wDyM2.##NB9sf̘ABCsycСǏ'lٲ0O4It;JXB}ir .:u@ x"7QfΜITd\X6WHصkǣ$ӧO4h g ʝnݺ*j6mS榱*OK\^"*HRRRT};P{Cejz;uyNj֨=\ZZJwV2%,BaѢEeeete}֮]+jkkw˖-,Nքnw!}y:tm%%%c<''{|dd$b+Vp5w}wܹ5o׬YIZ ]]]?_n ر~Kj %g%G8t,NsrrNևF )Noeqrf+Xp'!!|ҡCT} J,Uתo`dz):ǀ`0]8Zrd?V\\*}LDz>Q|64|ESkE{`-Q=3"dddt,Y4&:%g@5(Ӝ9sOXXذaø̘1Ǐohjt'M8B&XхGaXd>sr]4)Mt8>͡C2M&Dlld}H`qt\KsKU6ٳguc9,? ٨T]+: n lYf)*44444j ,w=%߾a⸢}_ST1ɓ'醪8<<ܞ*3Wb݀`)i_%o7СCR\ۇ'jrřVG\rŊd>Z72X f2ӡsαp׍:uJ9q,9irt^|H${.ד%̝;UZJMM*U u Z!%%%8Wb]|-K:#id ,KS, VϹUy^OlEz6(T]+6ygsWBCCCCC?\"(xT,-״/J=W7JadtYY5U5Prn|uyСgϦ;+y 6P|SL(++3f̄ : 8%5k9"/^Lnfڴil tѣRtܸqg*XVHAQdԨQEqZԩSYI~I*X` `c=<<̙CA4)WBΕi_EjUU *Pյj(;9' `p{&?7*hV%A92WŤʵFw}2%">OSƍ!!!B<Lj#rssvtkvyRNNXU:y$ R͝;@VبPr6d;XQrRgXL(""B{G޼yN[@NNC&|5k ,܏<An,IcߠSuZ;NMkU"ή~HMx#D2=EIʑC㲲KT8ŕLZ_gyZ/\ ,kރ5K=Ru}ïMA=aTWUU"ʕ+s|}}ΝyZm_KOad!M~NLLy~ >|T*daaaŝ`0 kbL㫿Cm8NyW;)O `0UױR~F4d(!`0U8>[٬e[!Jð֊jWw`0vW8ήW~wrs /ylfBEX͈/6dodx `0 wZ~ {ۆEi6Q0 ? +X c+ TaFբه&V?/4444444tOZR檺/*Ǘ/s;]B 8#]S[dov`0 h44444444ꎬ``0 `T`0 ; 5*X`0 ؃@ `0,Fbn u@{`0 ; =XQ`t<^Q``t0`:Ro7 @gCG􌔔W^Ir9ʕ9'99Ԍ􌲲 VmmmzZ䫗ȼY_PZ\\Q^VUY^]UQSUQUQVQVZR| /?+#JĄKiP/.>W744\KIMJHyύ>x؄_/56TWee&^K$OhhhhhhhΦu؄Y7+|TC]MFZ#GXaaY3P#A>Jꪩu!ecnݺЈ[:z˗~|5ʲK I4O.M222z뭷;y=&Bͬu5U qo~gOrQ/{zOy{o"~/?/GQ>|ښ̴ 1~6ٳ'5k֬_^t; x!0ꗟϙ=3j^7{wַg~{߷>q^={޽_:ݺ%曽f͜Sr/5Uf眏@N0صk׻w8e0`@kԨQCIII9r\`ugН_U[[{|LQAa}]Ç?'ŋv/ͮv۫n?#C}sScoa-$Ĥ)Bq}sӻYg-c,2my磢BC?|"ӪUδr:9^ҥѣG!d駟))),lȴj<h2Xx 1d=|={{׺u]G*P"#5 {78ۈA{Eniǎpꫯ9r$==}h8Ok׮NJKKsqqcqfH=sCCCCCCCwfm+RrFZF7?w5^t102YXsr9<\<=]|}|dHPrprw eo$Y -ȫѵ}:5:M®_NkϞ=:pg]z5Լ&MjT׭[]t,;;`;v:|Z 3`gq5܋>ݽ} L-̈́՛*V9-!ngd-RcN?>:E˽ʘ|{K*NOO'{nU}=X… Q///gϞC/^l 믿Gk`0Uw߯+˳_ncCKU^rVTTTrTd.4Qb+vm|i&"Cn^nO ]fmw%o'(Kmݺi\TLL ֖ĩSPllld]k+XRR]Mq_zM}sS5і="X[ᮼiFاt&)rZZ1Jwww)Uz 6p={=vX`}7,7o޼;w46?",..Ύڬ `ߜ5W|D]{ Rd.^^ԼsWrE}e[\B,((, [ڵ{3?=NQvE#G<ӧO/,,,))Yj]vʿ" իץK6=3/_ftuuSRRЈ#w^0**g]h6K 7o&']k8G[gWwwgOLa<|7@r]^ޮ`S!O`>|S;SttU]S[USsOX{ٳgurG ir`^^^O)+lٲːD鐱q||ߔZ3AsScgK֊|y,klFG|^ACCCCCCCwZaVAAIMcZIDb <3Y\#%8R7'GNNރ ѣp="kekh+o̔_$*6[~mOy%qV9**j:`cӚOV6̦  wQsRbRNNQCs隋Ed$"{kG؉9dV6:/?N`ϽW{16з03yLP՜ݕDNȳg:oGܺYg7ر:44ԩS;wtppP?V>-رcwqqٺuk{C]]Mq`0 VbBbfFv㽇}MZ #;VvbK*q83V'IB+Kc}MFܧ+= +KsgC.Jx&HJ廻rX v::_nP0Ą?k1*ƫ=k!m۶] `]vQ<O*يMQ^"̖EGyb}W{kn-L6mfW+RlrT<|g+!?"BuOW.\L6nܸ}B.B:==?=ztݺu6m8넭'''W[lTs 69Q/ʎͻo>իWi^ʜ=|׹lgϞ4ߵk5,--ϟg.)S(((`6h:`07eu,2 Ieo:8x` $J>ɦiUS,KU~c t1g" x,(j2UMM/z22仸\L(..V}H$7oޔ)S첲(~P8wܙ3g qO}Ǐ'lٲ0r&Mj۶m-6m@ 5j֬Y4N/M:uT777xy dY(byR}QNfuJU i:99`dʿtґ#GsRv? %Ijj*ivIϟ.)skS߅ۼy3MAw`o*X.4s<O|[ g"E&g&c$h7PF{Q9;2MAy6< 1ʶwBWW-P(--]XL Xkd23?uV'D;w><}v+Vû\oY|͚5i^TJ6ɽ1,^^^Nqfaˣ>JU"Ch ևR`ܹnjC4Y2^l=tWq'!!|ÇhYYlxkksm~cS:t3`07ey}nnUW?oii!YJˮ=VmvH`'ۼgn8Nx׍+j"Ale!67".VT4ވS6ccc]TT$)XXXdeeǴ4'fK, b://QsFEE ;v5W< @:11┊iݟ[ϖǞ rU".RX>욐Zi EKyJs?gvww'\쌸Z;wn ޠZeXnVbJKόgi y,2Fb=IMKWM57lal$7XRPqHޡZ=]ݕO_1'V\H(((hlF}ÕLF-QJN,U}5裏V6ũ'-D~EEs?ƍsY;ҸZ;wn U# %~>[w*+OGYYjX"f=MR#T I X^j:<5+\)J(w.BiYݍsQկB ʕ+ iiiC,*.yyyfk6XL3ڵk,H6UZaDrr2ųXs<-屭H˻\%Rݸqa^ŹÖܿٳzxx|g{%.T;wM;k {c ++ZгLd%/e#KY ܚ*XF͍ ,3tH$ZɛPRV27ZZH0Xؘ࣊DT4pСgϦݻw6l@ÇO2B1cL0U%IUȑ#!(NO&_BA*7uEq2.s̡Ii1 #hytQXь,a ѣGD5}MƪP됩 lguܸq0777:D]R:.)lUw| .dShN`0 S=X "eeݭʾ!ϔ̐R$c1̓O˖ s fFR0f:+ W6MDha.dϐŠۑQ2Ti2C )0o<[֭[!!!d)9ՇZ*XϹIp;-ZDq7w?j`NHHd|>Κ5k܃Ezy,K֩>>zU}țR)X,&Iq2Rdi^_d8CC#Y"Sսצj s'M;Sk{Ns%%q1uıg$J~FfYyYd:Ii |: s[Oo߾}ųgΞ9}c'8N̙3gPvvvUUՓ iuTTNNv t пa , @{;X``t0d T:0X.>@CCCCCCCC?F d:׃khT:M{`0 Ũ`t0 V?aV{.*_y[_lVCZ4lvQݹ匚:+`0 l-̢_ƧxaPRK{8)tyh,} |)?Ð?O)~ٹkW٠5%9G;-[Rk}EVCW͍;T̛G|بf?쳤ΰ0 'wC =aw«5~'qޤ?&6r_}\7EXLAbBQ$yf4wyc߿X4`stm}}kSӧOH$ӦMGc)hѢ9GsNxTTus玚5е]t!ehhhhhh迌PåiF 7|p!G z+x!o3"xȐwFmܨG cFNT47z2vD0z{P>*x01tа!@!>zsYehEK srrziddv׋^z)99533#{5k,+̙3G9S[n_2sK}?N˜`0 a=&xco??߁ <8`ȐC 4xXАa!C :|XaC <$$h H݆ 0h~|)L(}m vڵ}$g?` ?^{o&3X2ٵkuyrPV,*叓&M֭[>lmt)[#7Xd Vg"<$$Py,j!Cj(ٯ!C|ի Srr2;d:tk׮*WfffzzzRZJH7|3--M0>/PȆӤ/'|rq5444444tgК*X[NO>r_a( ?h` aKQĒ{#Fv*//Qi._ȟjzJHm/,/oP&S,W`}N>f޽0u…~En߾3DFFz y0~'OLg]bUUU\b|2iۭ[7/,,1OFSNQ7rZn̙j Ï`-'J"I?WO 3 *`v ŪYGUߌ˗;8֮rCK ݽy,}%`6ڽ{>`7o GU9=X\\yy r2Y(uuu\bmNLjԟ,gϞx޽߿?} &Us;PzoO^>ޞx?%TDDQȑdƏ端dŋZd?VlހFV4`WXRRB.O?UGFFn߾i`_G{0ߣoʑ[,^8 Ɔ4+8]t[LU׮]WZE^mtŋ~]:}4?~a޽+*Xթ`0 ;wQc'y{{{ ?XNz?~QQQ}GO_W:r߄'pqq2d0 W'_/ECQz|F4`_Dh<KKKTdL3E?_,V|jS$988(G&N/g${sNW`*??=OO>f_zSO={nv`~9UUھ};u[` 6W ?N٨铘H,..=Ӽ  *P]̻SFNmX E o/;)eog4{E|5c2l^^^^oU+A7WWgg'{]~kOks&{ٳguyf(W"KQU{g\_}ժUQ:~~~z"ϒmF]zUWW<3&L` cO񴴴7x>~7=< W?JsO:z;Pzc_]=<=Vj{ȑ49inqM0~ }XHݕ`I|tr/_  `Mz;xK^pJmy|%^ju2X.Nnr%{,Oך5kYۺe/`:5G,ȓu%V>w{tݝĺ)7H(_ݕFdtЭɪ 9 Mڗ&survvtusqss6,$x{.D_Pn|iԬI~u;^^2~``C='/=GO=jP}۶~>vv4\"t_7`y+`0 lhC =c?8:998:Dh6nhnc*5KIM&;?Cif͜9skYg͞3 +KRcU sj Y ẛ|_C`᭛XR" 9*+Ƞ8Q3gNé?^,H%blőWM9**j?' j7 s'~!ԩSnr 2?SWbUذ%?n;حX(j?ٳdɒQo%Vbͷt[v`W Wعs3///;;c *XdOuv:::8:ٓY>\djCD+Y;ͅT).E-2!M 'QQQ4^V\USƍz_Q~-]ӓX|4 a̘1T%4U-d7od@[Wg+"3Xlo邐mU͋F9q*@g ּ/ܙn/%dm#%%%e'%4{/7njZ*88iTuhݖ|!_ȗ+Hl--]W X_ ccc^EH'$$Pʢiii| _dIPPdeS%g ̝;" .>|8ןcǎ0a½ 7#+VB&_Ge8VZn.`Ǐ\עӭ YLև'&&&@`Ŋ"\ԓ&bcCCC4Xd[!zR~~͛7I\|YusgY~+4Xlt,.-zoe/ imL0Xܼ,UVVܹ*X ](ߣTǷi66bP$% e#P҂`ieehd7??]=]S3S?3+@$Voean"ߢݪi))0o)`cA7251Zls!:  ֲg7e14od˚5=c#}˛~07愑>WPttGP!}.@GAZƷE }t6SZ[t٢<ތpy;1ۣ7Y +;7xdɨأgblG:]dxḏ QO?q\k`E ^Q``4444444tkT:؃ ,F,0 `pG1*X.9@,``0 w0@ `0 P`0h ,0 . `0 b  `p3`ACCCCCCCwF `0ڃU^?1!.FEcE?l޾}{xxxk `0oYo ϫ Kt`\ECP>&UɯױgRPP0c DqGc@@@jjjQ_hQUFEΝ;E_YѨQZk0  VvU+2:Qcx`?+1<\fthW+;dܞ={Yv bK/̎ueԩ-F͞=nnn-1ɱĉŋѤ$7ߨY3U5  ?iq wO'GF=GIo|5v֭EQ2X?^{5sHwڕ.\@{zQ2pt4##CyTMMrJ׳xEEE:R5 60 &Dӥ  dE͓*?%wG^ʦ p4@矟?rO>1bdڵo>Mu3fu٩Ec~孷޽;YZZLyz)2R,ջw7ZXXPΗ^z/%w¥d^zmڴB['ѣGž{9YYY,˗/! En޼2,;;7`_,Y{+P ݏ|Fk ~,s=y"h@.0ãGJ6h}7c @عs>dquu➞Æ sSuNr$666K/ׯ_'߳~#Gщq㆗V%RU"G}>BK/_fT\*yܐ#GpC\†L0k׮d222B!Ӑ_|O?=qK'B "隚_~yl .cbދ aj6taa!g}Ʋ9s=d̜9;^{mҤILT{ `p=X KO2Ãs+5I-k_!txgֱ7*ԏm333[ٳGUV"maa1o޼ؘWj12=ʕ+)>w\=='NP<%%u#})S8;;!q?5WXeMևh,-Ku_ᖔȆ>}1RuEumݴWWļ04Q{hNbHMPt",`CA*"afp=sf20P`7YYs}=}܁y\\\\=Dkk뢢^kԨQF8+X]b Ξ*_R粫۵cGVݵJxbOrDLXc1 OmOOOB4`>{_pEKHGPڷoD&54ZZZ`|cHH6 `RlܸQIIh:88@(cccu_M]^~XYY|o]T***:o4dddddd_ڃ% z%ԊŶPHJNsƊiMI]CB+Z$v )2oϟO4`hii~СoMMMa,^>}_|AIKaa!uk= `֬Y[nJ!sx漇ٕ`cuvv K@ UL7H\xRδ޾Ʈ܆U*zccV@|lƘJHHx׎?^__.W_ %R,лw_}vr HIKUU]]] ̜9S g}vA;D fbb" EUpEKmڴO?$w?~^jkk `)S######y {IDq^qjWbq-Kۺ9E76we5ߧԁhWMm";fEJ^l}/ _b>>>Tj:ܺu(hNs;T;Ą@111yסqƌ B+X6lONqG 5uK!խ\U.?ڵ|oVJJ ١ݾ ,1-jԨQFzz ,F+Cë%br^T'u |~&?jH}AZv0feUH\1l1+^.bGM[[[7EOjK===%%%---|A([TZZ<~{J ?j4VU.U{>grZSN"~ߨ-Bdddddd䗂E`inE''@zYmk8qO[8/МNΏ='0vj>®z64DRnC^ 1dWE7R奨vEW{Eo &K2+;8mܻV&TjԨQFT"U$+96^YK}zCz?ysX k5ԁxqU/vb7GTG:Y}g !@LaA}b@,nPJ\Fo&GV6qZx~ਤßѠC|+g< .k77? X>{ܐTJMR@L}$cw^<ɽmOj-ig.u_ݚ\'UqW!OŢ(0R3Cz:*kVDͣ^z2$.{>=$$DQQؘdPAAA___GGY{{{aVWW744ܿ?h[[͛7R}AQòLl V盙=zT^^2]tuu!ƅD1C&#++ A7mعsBZee"<==!h@ XjZ{/W T!yv(]"y9ɢܽ\ y~.RWN4|Q:@!t]7 8p=X{ʂFޖZՉ߿?jp&wgrS{gXȩ@\ "Ҟ@ $\0࢜A@7>-BQ Vnn.:+вf#+00PMM$B׭[GUFOPE2e ,u2h)6 `$qgb횡"ӹZ><=jb_z狁5`Z8:.*ӇNhın1k׮Ƿ}뼍 M?|+-[xܾ}{8ee厎UUUaiipBCCC046lq!%Y^^^Hdm`L^<࢜nt}DUQQ1aAAS`  Ƃ`AgpRr|ڛ%h>,r:"^( ڳgcȉ#AE+z~IRXLӢĆΡ-m}nE;ӛje.WqW]%8+S W6-1tW)%i8J&|H5цG=x$#ZHUoGcc#eP-brWXa}e0Пk`` 9hjDN<h*CNI555d8i'_TT{}}}@;e)2XA;I(//A)7jjjDI e0XuV]]ݓ'O2uEqFp?䭳a>an'| Hjl"^繹955"\r%$/#ԨQFGc`r$B+;64a ̺־\FOfCϽ 9=-}?շzxB.[Ɣ٪ xXݡq۶mZZZ`Varm uwi p3G%oaIÓgbb)$(CM[[[wEmrWWWHm +9 )p hS ﴀsuh?>Tv.HQ`1 ܹS|2VA@|Qu_y9TPP ;WZEU A067,Ŗvⱒ:72*zF?xrUbO]wUL"FFFdغu+,o߾l*yM1895* 333hE= 1X#f֬Yq-ZF2X`S &t;w.x ,A U/ m۔WXajjK; 6=aD@ Ƅ!5X!Ǡ^E,f.&ʹUʱUՋQoL ~5jԨQFzz,⦞oӚ%%iqzU7+5|󠇨F8vkzsY8]!@LA v*'6J\^V =ůt/Jb] V}K_E5jԨQz, f\&,lЏ{0OtqKr}n.zH~ʭWe8`r`ھϔϪ^PQF5jSJO,{X5;>hgױUww*Y.̼N72c'2222222`L+VwwբmlY۱`׿*sSJTC9? ssszT``-##c߽{wRBwttYixnR>̶b4 l*2F6w62V_ZW48gBnrCc=1$kT|[)[}1{rV1勂BszͽkvbEQ-#FcA}A*X)Okkg 9COQ*XB +TvW \&_˱cǦO.$޹ߵFFFFFFO9n0a٬-k5 p@#{- +ݨ8[s! if3:uu7|^7o^aa!i%yΝ_̘1#)):O>TRRz .@#.**>Jss֭[!ګ*..FrrrZt)‚:VUU(;;;;O5 /`m߾]FF:_rss,!okgnlz 6|]+ā SSSAi|s;k@ 1 <cAUo fݿپ>g{V]=u}zzrݦ+6*7'BϢhkα 1`&>%K M555}Dh߳g( >ѣ Gt:֭[w/!Ȉ|癙eeeVŻ!؋8ѣlgdd;No`Q?3o>H5!!޽y ɻ 8|N 88p'^ÇBR,33?OĐA믿neeE?RCX-[J)GGS&î]"455]r>>qVƩvͻkW{?sZݪtwMROc\ X'kKV.>)h1yf>[+jkk_{sΑKIIUUU566TYl"oa511!aX=<<[X1UqCH(SSS...I'O*8Q:::D O 8Q8q6mڴ9 AszQxǢ 1X|ɹJ8ӹ[ָ5@ Đ"nKd qr5e*OԢJUV].QIXTJg*6$+[]:`ť%ԼoqOVr,79z=8so,9 鴴4X2ݻ~MAzjy?|z zyy[j@--[Q**VOϭ[H;ߞtHԃ?*[" ΅`;ɉ/^h8* ,!k[k׮mnS˸} |1==:}NNs!KŻ5jԨQOl[H%ˆE**K//.Y]"xeTJU/. V {gw{IsOG+:51;+&))) b233u)++ͻR.,|UUU?CGGP-HNN>999]*e_J~4,ڸq#{ASo( _+))&J&lD@L6& =nH P ??0s~!9BrTB^U }Y b*X+ }n)_HSrO{Xt yIMg$85.wQs5LJ766xWݩ~޽{歋E7..[tIBh '1112LE[%RDS{H/v>;'l"RRR౨ YC&wh H > ȸo&,ޚ֭[A?QI;I(S+E o=^Дͷ8k5jԨQO\Xbrcs|OnEMUY(f* p^ 埱L>orG#0'|k*Kx!"V5ܢX\7&,Yfjs{Fhhh` O` HJO6-==~[x K|7n9s&x>Gzx+X9겱 ^)V@T9vznӦ%zBpo`sQ%nG|`^|J^٪60SB ϙyf>:Nhh+'Cڎul+($Cd; l.dկrߟ:DE̶mH ,,\ 8p@FFF*7U>P9}L$ n޼ Fo%kHaP_[[{ @ ^b^ [n7JYRٳGN8.>oiJ$ߝޥ)K_i -|_F}y=1wfޙ! ̖_ig_ZljniLu1[5J~rz)b)~_ŻTJ&!BB tnmmk$΢tBF+@ oQ`sXKSӑJg% }4bYbŊKB/qKX|*L6`es]:)?M?~LsLd,dlCd6!4cɿ!BL\rG$rSY?λ-Č;D5X`9"B,_BD %H+6Ä2XVG`]_a"f%N5QL"Ql\9ۈNG=2b朊Rp [ʘ ;E ;ߵtlCey}) x@ pjlYeHpxn(}*RtKk,EVt3]b%f3ڞt/tOXc:6lc0`ю:v˰Ym&7eyY-EG_B raM\ic}Qhf~#'%Bc慙K;D9^;ŀRplڍ\6Ϲ/v?aYW #߯/Z˘xҎ8vνk6~:Z1R:XD^! h@\ig$mD6kًƺdDH s%%s}Civ6V|"6nzySG܏n|v⌴.=Ls6!2Y((÷@ D2XW8ZJ[ʘIhIGzPo%e*{2)rqǵxST ^8-x]^^fuꈅ'MUZԼ=\fLwT 5, @ ˆWpM Vr+,S)/yP`|A6~2L:T?Yͺ[n ZUV۝{Үgxs E{NHeYd}Q!B>L"eC/)c0XD5jԨQ:Z VJE[8`&yJZ.mB=ֱ`Tenr̜4Av}}% 7.3{%.ƞt]{QFH ~Ҧ]S `{^4+M6m/c,c,~>n `qv_qslV- ^3"OlyM ΃vXt~a鹖2vm9ʪ'&=&yRL[g@ D1K ֝3_))pT[2-M6p4Y,b A+"8oϹܝN>:qD?~Ryt-hrGljQ 377\H}}=^XXUVVFlll?q9𩇇?//Ϗ)%%DOKKd 7::I BǏSǗR!>B,%%%ܹsSHɓ'B抯q rDDDmm-9 N&4hhꂷ0ݻw}׷o7---oq '9A !ZiQtWK]9)MJS K,ibn1?3X\#u7;5h/!{-?;Kz S!VAr&^Gq~}FDHHւ gΜOfk< Ν;QUU_|o>Uj*0/iTHgggN҃4@$=@B)>$_n$,Wٳ===$픔N4WuvvR Ƣ y{{ve"vwv2{DSWSGId`,rAXYY)5jԨQuHǗM}<$IH3|AQ-}?Lʡ=X2@An Uz'$SquwjrE`%m,Fz'WF`ݿTX_[B`oBKKK %;-hHnٳT#UIݛUfTi|9Eܺu+o>|{ѐ}kǏMdwhKk,}\iKW_*HZ}oPPKnΊu |9΂UmӳS1[=kmkbǏ٤BrH)A "@#NX+v%%(=OKP(^-..&%"Ai8WT[KAA!11hA,dYYD5{qUF@ N֕K1n" uƞ>~RR2F~áWv'oMӴBI#+#ڎ`~_La毿ڷo߮ѡqaA$0N,KJJJ?4*++kjjC`}ʕ'Nqn:b x۶m^'$=NU`D :yAT |Hj9p---ѣ7nHکaPlٲe9)̌:oK[[ XBFFFF+"YacsZC&ޒfRG9xKzH6ezC4oNGŴOյ_olb/~] i&E.n  x2O8dNjmf.ښmnn[ZZb _Lvv+-Z[}"g`hގ;V"1K V^ѣӦv) +7"u#` ::::jjj<\ᑡupiDJPЇ=TՊWE$.Y jԨQF+X\ >xIi7)cOi ^m%i|̖Ι?}0c\iNw>qVZEi#'i5 T29kA}I.vA_6h<r#a~^0-Zs%TT~ͫ({ =t19ó ݔ럣\cxC .;*ixD-s^ǵ0@ Ĕxmm*s-ܿ6w_o3uzv[--z$,3n̺]wz35$4wjx_tߚ << , Lq篎;s~z3?XPCzJT?./o&Ot,dddddd#O"۰ugH;5IFRz_ W=4:l/sAIŽF2W90 ȓ` 3Zji۫i\MiU !q`9~wN{np#S'Z|zKʳ=ZR=kͤ&^̓c-gddddddd䗋9,5jԨQF$Tyy{+Xȓ̸ 5jԨQFz5V'ڃE5jԨQFz+Xȓ̯T!@ &XBFFFFFFFd[@ IV'@ 1 2222222$3V@ &C-ԨQF5jXB d2)~H^Ë /k+X<9ǪoϟศQF5jSPOʼny܄I٩;8 : f5D=NE@ `{-~Vss,\#,x UAu)+k?PF5jԨ=X!wlyVs.E;ۼ}Uricw Vf,M E =a`qo vww\-Vm6`خ A [=1{2:7ԯXB~...c=6((#qvv&E斑+/uXϟ&d1!ݻwyF5\O,`[l6I#[flvd1[#~{CZkKb/~=XȆ^ypc=PBBb׮]ǚX131xRB!w ,7l`{ֱuT5.lFqۤ}}ݮMWVĕ- Ypfpc1nŤRj…t2 @ &blfV>a*xY> `9[ ^هsd|usrژEr =*pX 2"mmm};b>#bDTE  B !),D5:thsłs1jB *菊}";D V`Tsìos4+̳Y[=(dk>ߟ?Ffۭ[R6W,Qq0BUOG+ǂQ]]7|הH;,;w_3\B'XYY͟?>z뭷RRRhᣴlݺiiiT(ggK±---CTUUo!퀣eddyBZZZӧO/^˗/$'<-p h333QΎ/ݻwTOZp'OFMld-Zc^, WFH[[{_ˆi$l߾Nà׿Ο??c5X0$=m4'''*,xJ-c:<cAUo fݿپ>g{V]=u}zzrݦ+6*7'BϢhkα>~!8Ǐ/Yd̙]SSwMJJ={b =V)(( [222K2(_|Eff&,ϫVŞC 0ѣGaMw-..ovQ?`zTy` d`ĨӁA?*X8ڗ-x)h1yf>⧷9}G&uuuy tuu5x7j:tԔ+W!$ommmau>x\"BCRPww7& 888~kttt*e8 LJrO *<jD0 ,%{pԋE (U8Sl#(mĉԠӦM+&dAl/ X@{Q,&ߦN@ /;^y9Fdͩ6 tިܟtMtJRըUKT+$UR>ن F,Xq)w,5sܓ/9q^`CI<擞oݺEHիUTT&VhX&',@oooxKmʡbuV555*8FiXA[@: ͛7I4j,HUUUh0Xw޾}ʇ;8L]{=yDLL :;Aivk֬Yx1u $=9  \ڵkyy Sky-b\QF`R ay=ZQ(P%P%pe%ˣWD*Z *<ܥjU|,NWvOw6ihE&^2n`=#9Fkp@DVV_;Y 333u-XhޕuDχ~xԩK.="v>{T |x#xXੁR6$ّ'E򠮮nFL`~J."M|g'(ᑿ9sEnƍ{=R"x7TxGϟ?<2@ ^F ѼP]x% C%A, Q }z)W-b+g1Y`.|!M=y+sbOӭ%5M$*!&՝hT&<7X`%2 XA_}U~w^y׶<`AL`U\\ 0>#x_,ФBڅ,T?*h` 7'  lMOOv<5"I… |ׂ:SVH!I2ݠMf`߾}JPmmm Μ9C*mFFFT4x,(r=ꏍ 4ϵBH|:::Ըo %&&uVE5j/|5ؠg}nW ̚@)0S V}{Z/`|,}cGO>ͅvX`i9D 磣K)8X)A\re֬YV`444,nrJ"޲e ؎qP#mڴ>Ɂ"DHbB׿<@ċ%$իWC0&#U6D6mZzz:>?6j2oݺoP_&ݸq̙3s3`kkG@ "z~VaneMhftyE99)}oZxJH*ygL o.>g9+82:c[d}_F%7hqd/,g&ؓPǎ,07۷o'G^?B VAA,t{RΑڃA|PF$Q*X 1wmCivdme,Gbdۇ?wMBJ,U(XrhYtʸkG,\2<YHZE=RITL6n(cC3¹y,R+6&X\U_I ",OEʟusM9nyK,sFŁ kBgچvT8`5X47Q9y6>d枺,o"e7; V@l5ȭ`%eZ_"IK.rN1,B>?v#׹syX啨n7+닲2&^4#z3`Yx, Vt=d+A V_.ig$mD6kً_s*1:& K!Jګl⭞,b Zuț&>~t gvdS 9*H栍DAE@ 1E k٧,eL|d$BOg'xIمʞ ;Dʸ)\q-%x)0Up oXˬNV66J뜚G_kl鎑 `f>&!2222222Tc*X9`,dL}L8?&8m0duzcK!=u%p{cUeu, z1O/`^TN^љEe"-hZ62 @  "UR2xK_.J4]ۄ{$`Tenr̜4Av}}% 7.3{%.ƞt]{s;+YN+]7W,&Vnݺebb2ȳI(hkkLu>`_z 4`yXKI{IyJ -f!i(c*c"sn/@ sj`1khh:78t:իyTVVsND PF5WTe'm55 `)-ee,ǭ!,+v eKsnq&״<,m{NHf非k(cwI&cΩ!?TVh'MKWWѣlF_a,O3YJH28/rGqwIs?U"H-v`Q_ʿr!RNv':9IzҹRن[˙zKQ{61esչ/^lhh ===ʨ ʕ+nnnxS#˃ qSRRjN"2ntt4|cJKKBxn݂stR{{ ϸqHL'p^]]L)ɓ'T ΝpMx8]޹ S9p9 4¸d\i ]]]!5jԨQѴH%!f&^R'IiZ|+qyI3?e lbdd~vvv|󍩩%K<8<~``-,,=*//=gzzz0:8… MWWȑ#˖-#ZHzp,$! h IneeܹsҥX۶m >?›[||ܹsMLL8F~xvkkkH$^ڵkW^ 1L ;vL[[{pi'I…IVUU+VǏ6Y"#)/nl޼ypИFw5g,JŸD "####A=H+4GSېr4zT^W\s1k=XF*#'L>^ELإx0X:)O/(vm 3@;nhjxكa{{;,.]"-":8X I3g k'YH;8$XA wGNwppϾ} _uժUa\eee???"Ņwvv(gϞhbH\΀E4|s-$$&@Hp|3%>yyFv983IC IL謪ёijjC&$$ $ oCaŋ8m#####,R+,GCR>s0XOo͆vwYgV<V`QxNKYJiީ{Oe2 ƴ`yxg2oB%2"EDiMRdŐ}M!De<뜛=o;5o9sus?}9>sbld-<5={Z2u"mAS ßjcDPRRj\  ?z5/Uөl~V]3uTnݺEݮ]۷U؛Nʏ2h&k*e,*PV϶wdk֝3AvQαRQKsndw( = _՝+}Ui{Jk$M}[k: /o;EZ\PWn?x jl~!IOϞ=[mEt֬Y}N:U-СCIiii_Uce%yL~JJ*֟Oņf׭ kuظq#,ccjc1QI|||E5/k&PU HͰ7VrcjOIRz,OJZ̧O7Jt'r' BڵkY{,^M>oEUYwļʋuLĕ߼n.%#'kuq$ +)[͆uO5R+} Ϥ#>zV\yG؟&7xPAW^U힦+WZ_`uj+ ,泵||VZ>L` D;=''Ub6 _Ƞ\֧ iZ5)ܸq> eEO_.>V]***(@P)v`5jXFu.|ej1D v+++Vß BII߭տuUYbaaaaa?7<|ȶ"aE4IaҎ2N12m¤HE'WW.~1 #'ٍͰ/+I]IgBkӧElWeq3˘V©SRܹs^[tiU - t5кVIdXZZҠO}:tuuuj%ill*|dff&IÑe'700#~6hcƌyO!H9+XNgАFl aaaaa[6Pzc_ ka sh&e!%##CcuCC鹄NvיbŮ=--LML|Wx5]3cǼ*a Q*4X- ZUDذΝ;wfϞM?IVjdTɉI^=[uUOOOPRR6lX```,oOk%-´4>T@@_b1èQH4P(REc`5r.%z8p *v3ZE !!RUUNjiMUWknU:ĉƥTK%CyN0!ORrvv䈟 .Rz/pd+X$FI W%***HZW X{}VxZ؆ڬ mz[f}/oEUd-dW51Y#Sci-aLVÇluo--,,| m2M|ox]bSsM %h[XfZOnM6UNJz޾zf4i{1Vj aaaaa[mde,lӪ}R\lN=lBۅ GdE6lj6^e_'^|SYYYS&MY1,m:Vj] 6 Vk;Mu 2!D>X!dSKocfy3=jSs {d `sUSSpppxikȊٲ2--'Ox& +X |R#}1ԅ/R5rRZ4 +JO[sX9FrZL+zÇ>|[ߔ @tOQ3 M6\]Tu>Gvu}{@o4>ǑӺi5(ƒ-+Մaaaaaaaa[,[ 5^{L1zFwPfl:4f|ÇuP"Qkw.T4_{}_ʔ;ԧw՜tY)1kXOM5z'XJӌ}%L|ZdoQ喙`9s7cGFRϦ|[ Vh|`,,,,,,,l3[T>|of,f棻w{|Ç>`43X @3@`43XGOÇ>|7G iRic*JGXw_.xXT,*.ji%9'5uUUAjiS>@{Z)ذ.U'[傋ܥ Af^T_(yeIaF}_+>|o..2urha%Q/8313t9lnݪ/cO> Жx-_iWWf(⬟s%+.guΔ?]ҥK->w󃃃Ϝ9z>|o=Xg%9ۧCβ xq۞r8LN'R)G;5&NbVYYG}Dmmƀ/ѱ^zW+ Q=y΅qf;q!/\r]& V1ԋi)&$ust|#W9Ѯ~rCo{lIIIiiiv^`ٽ%2mv۔ ‹B.*[y3"gͭes^_Zpd'а#Od i' "?{şu(QkILTNNƍ5G)**={6Ek׮cX;E*g̘1t_~Ia FIxl&''RFFFϯ ۷;и{[:77W{9Qo Gܹ/CnFАZ(/ZM\+r3Ηx4nNc&+ZZ:\3:'9X`޴Zjم{;H%D:::?Cn޼9z>}ŋv===/سhEҥKJJJffa%EE'N9sW^Q~ &0b% Ezb41w֦nvvڌ3 Nt_MɾzR߃UO@qHBLOO۷/?Fκi={\re֬Y$4=+'|?'Z׮]y333>}9Ъy Q' u>ΠCKGC#[w\pq:㵣A sO ^oxL ڷoZ.]$++{:uC-/_Ύޞ$qhu_~=NʣX1t NT/%%%LEǏ)///TEG3+@,U*/،ǪEZАϟ|YÙO2**o'X|$w"`aaaaakn,*xq=9;nO5#:~{s5ݙ|gSNٓ=y͉;MvEcE##N 9]oC#QʪwHѣ$Ν;W$BSSsĈ i2I=5B322={Qվ Gڂ=Wω'ëUOXd\ǎJ*·uc'Ɗ`~=FF?A\w`R/'^xyx[ ۖ9|km_46ϫHWmgGqT-࠵١e]crQ*axA5&Ç2HKK~1j?<2y!C0Ƞ{e=(**6ȑ#GDLq5 >.\`վE(~ӈX,U+%%]x-\JTI~۷|f:mڴ3CuU]k#c u @pa7{npy! ҇o0bő.>Gژ:U̩Q 98pm$e- .q v |K~h}ݿD:crڵkE1__a1xX׮]m۶>IIIٳV-b!;;lڴS*((SeqXg|0!!Lzxxܹs5:88a5F+22 ,:ӓ$k$s;{lwڕISNLod(kgɰNT;oL`59>|,vPE{St{{gUbSŝW=JbkY g11:9$Z1 MDj~}v)y g&Ⱦ͜+;DYeFW%!!AŋMi޽;) jś+WY ޹s@Hۿ`A׏ׯEJ=YUE> H3*,,d VHHȎ;ȧ?g͚Eٳg]ti\9;ϹgϞtI!ҩS'''N۷o*XGC b^qAw)ޡtU~BmT5 $n|Av.999՘8/^Qo߮V[XX]^^^Oʁ)|E0UJg֭[Ϟ=yZk ۆm{ئ=ikw& XM| lri1{s5_SOHS<gOp ׫ٮl0ܷ93?999py  n rR]z_r/7{EitZʡj5>|o~,vovVoVtwUXw_Q׷xl!ե#On2차j)lWrݨ``F~*zNFkH`)pwöů66]gyAqWߤ׶'ȓߥW9pAk ߣ侵?Mvߝ|U#Q=A9V>R:XGA$άE5;oR4pExϧʊZs?o |Ç>V7E-^TKcgB\+MyEJ{H`ۭ౽Ҡ攕<{-6d˦>R{&w 9 ^r:2θENXkve嫥\>,XXXXXX~T*Qk_FY*sVX)9孎1^[+${SBϵFWT|"= 7 ߫m-auS]Z^r,r IamʮWA+XmT+9%N5N)F>RaG݁;#e<RS:)7/-~Ltx HfUT{|a1S~ V.o/#3ny?UH/s"m% ۃu 9V%V!Z.R~jɄkү YIs6y]*uMr)|s/; 5(Y09Y3A ,/_=on[[cI`Iݸu{s_?S`Hy}]P`mvmzixDEM}cj?|r7m3{DHUνk.R?s_ÍۮW ef؂U22s(ﵵGn Yٗ*XmT+Bh9irJ&L5NafMBLboM kfƹ# \~}P{/(])A?ۆ)˙ Y`!~鴥K7+;ȭPɽs{+XǏ;yc#tq{ĉdLMM_0`ϫu,#)F!Z6\&Lv[ߘ-novw$/dĊ2:034!Q棶--+D۰<'y3?9S!zWG{C7ET՚[VZ[[>|f; JU_QQV|Ç"~*X2e텻CH`[ofusks|]pI%kꫲRQ@C'`ۿI`ɛz YJʵ45cWoVv  V||i&jIWY2dAiyy9XG 3{>|=QdeB$W1pg{a`ih9X9ؾA;K`1!u*mW@B)$$y,tE ,Ecr/5mwOPvS ]:8萪z2$yf;;;##!CP;[YYCE2sL%Ko988֌;x`'''ccceeT> A`IP7tʕcƌa,~\T$%%w!6"A#2?<^c}X(ևyH޽[ p44r@;i(&>j(jLm'v?:'z%N[Vg >|o{~*X7 X'i/ȱwHܓAR.k^ޗN+X~VnaOw؅^@b1F-^9V&LSٳ\CsъcBJ"???===zӬj;fΜuh r39wŴFB`58={¶=,ѭع̜Ca֡Rel{Gmrye]CsCҜ{ 1 p(TMtLV5^#irD]y~1zvaWwVn(TU]1СC!SRRoD jq5kxӧOW:tPR*ZZZ$ߕ#LÇUQ,=>gR'a,>ߧ=X4bbbFΑ"oܸ?TT5m:={`v&OAby&''?cÇ~-ByUV1ob;ESY=wT vqq5p:ǸGPU~Dj}Q-fCV׺>gBO &&{ix.E7ԓիWi gĩYV1˫!`>S9NOkkZ+Xv"E˗۬ VVV=vX݋`eddPcnn.Skӧ{صEܸqgώ9B=;Z%''۷ƌNGAXXXXXضg.XWJNߟO ݺ;6L>R1Z)FyMsW}D/GN1ag_L}eWz\[RWi򊲊2~e^TT4u԰0j;wQII˗/.]ʽ$ Wwu'99}ƍxa:ŋk+XN:Ғƥd(x_WzXPQ$}ɧ>Ǐ7fhffF jhh3gӁ3gd1, [%[؝?=ph&e!%##CcuCC鹄NvיbŮ=--LML|Wx5]3cLTNNƍٮ]; hff6eʔիW78P=/P\`Q :v8tМ=}tѱǎ?f/tqq)((9r$666z@##x{{у4III۷?J=ugwq޽s&I]i244h;::||3Ηx4nNjygϕM-I-dbO}}0oZmL½T" 1%%֭[Gӧk_x?Lzzzj-]t!QuaÆK'O<{l^(HQ-[FRl֭7oޤ`;;z KvڕVzFz~ϓP0a&bhݺu۳gnllL>[[[޽3_8p)YO@@Ӥ>Y D|R.\۷/տ3)~NJQXvI4I8sL @#]v_~ٻw)SL3Bԩw}'//?|RQ$HE"5j(\ ,tttdeeێ;Bl5?|ҥ!M)L:'%5[AAiZMgtFt{z mmmia% 5a„>}ԼHOQBBb+Wthcc3c 999RZP YZZZiL>/|ёV |-DNzE #z LһwﯾVzQl;uΓ'O)HPP 5jwcǎ%ڽ D >8h=ڵMttUu&@O?}-=>}\rݺut<==-ZDݮWPP[z5$hhh(!!ɷ>쳦|k!o522c{{{;;;w\pȑ#ALMjذa?'|ē6rPVSS#Ej hBM>(?MLLbD4 ZQHiիת!Cvџ}Y(য়~:j(:K BBB'֭[G.]LJnݺߴ OM87PaÆYYYEDD_׿Zz~)S;xo,CK__>ƍOo/ӟXk׮wliizΝ;ҺV Ç7Dhh(2C|4|'M HkUCBB/fI@`{fȐ!A"hСCSZճgπ.]4Wm  >t:v8bSSS~ -6؆UX--$%%ԚM˯?O~0<gΜjS={6/͛ijdɒN:͝;@GFFrGzжҊ%SD(8 1mڴk+h466Y BPtq&ul2uu~ jUUUSSzg@CW!kڵkaff֌g[SSག4Sz!F}骑4x> zhw8TG!ʧIENDB`././@LongLink0000000000000000000000000000015000000000000011211 Lustar 00000000000000fdroidserver-1.0.9/tests/metadata/info.guardianproject.checkey/en-US/phoneScreenshots/checkey-phone.pngfdroidserver-1.0.9/tests/metadata/info.guardianproject.checkey/en-US/phoneScreenshots/checkey-phone.0000664000175000017500000037433013243530567033622 0ustar hanshans00000000000000PNG  IHDR@JIDATx\b Q{* E@:JU@E!{FILb&jb{7=y7(&㘝nڈ                          |6g )**U!D˫AA5#_APgj`QQ)S0”%K*P099W"  .F p8Fջy5o>ɣ_85!,ХRA_;v x%3fpDQAdž  {}#F=f<q^Z}W.#GO1z9u2Zt2[92ZN_q( ??L"uWWYh0؍LLL@?'d:w\. !*idd$ OɁK AA.OO1cMP4utRz~ KS Y>?MTvw0,x2@u@̪@^i9LOgg-js81cP(XV+VUcǎBY RΜ9"ijj!Z^YHWCVVn奥`3E___PPpT_ChAA!ɱSU-OWHlPlC){cϻDž>?Mhh45jLBbE' O!,7{aIA>$_8[g!18RRR[ZhWZҥkØ1o|*++ϛ7/ )S&߼ys}}E@g6--*Ғt?~6\nQQQ7nC$DC(d<77ꢢoooMMMD<4AAawU3IR^%P~urFR.==7kw׿}{0a!bɐBAp<2q̤ zͺi[tӛv xBperrr/222===_yN!+/Ťwswv}ݫ\pZrZtPӶ)6+&oO.gO >ѐ )riHX aaa }A 9l4ZרQفp~A[|; `ћz 3Eٵ3Do#0/CsT#$$-2o޼p c3|MMMk֬_qqqb"??c !C ,BAXA1Zk\tVa )rf*!VuttI%22288ĄB0;~...p}N~/}7Wft> W&K$1b[A/22?@ M  7IOonnnpp+**<@BG;]YYiccFӦM C  2tOuSzqa jF+2ټJ9{{:-՞w,M!g/1sbW3&HI&AJ-Lh{kkkϝ;7&&Vk׮MHHutt=z4} = AՆ#_탳NX!AAA;;IJ_+b8'}NL0aUUUhBS.]oLL R(.`' h=n}:؋-3&//<9J%'s&pKpD3xKϣ͛7 2.,,!  \x,EQ&Z*C~uIc'N7zp|En ADc5}.ȁkגҗ ^:1ظFAG¡Ͽ}O?읇{O/ ?C&}imQ2\B=1pa.A܂ʥ:{;0-H]FKj`xPg cMMM_җ 0,B'o5Lҽq#Ne:F ȵGt/ZG8 `  ]_E_)k?}ra9ӴG5n$pq IUЪq+|wpw8 ~'PԮ; p'cPFu5a„sÞ:G Xpp٤Cs?~럺B|O,0*;0CɁl~s/[IP@BX#sg#  `$w--xQb8::~-xbŔvGZKvv髃7~>W9T3g1Zzut <7~JTYLl~~~~>)ʴf.VL999dy͚5kDwI3Ц{U3Bc[)p[`={gPc'ȢG1c]ÞG+')ׯ_/""2bQ~ͅ{.ga&,F"$ZyR. t#GObu`jA"TK3 FFFaRVZϤdқ6m =՞X$,P'(-[&OOO_UUK. ʂq@CB͛!G\@AAai TEU ?RکLI˅\9{Pd 3 {{hZ[[khh 7..АLLK :b@+t>|΃O^FTh~XDsu``*r$dU3 SLHLLtrrZ|9hyyyFoPBCCccciUTT@t{#eHque' ]fyhll1cƬZtA$p.  2 %6+퓏,3UNēIǍO.N~''P;Rh}K {zx;L=zyN`spfH>{]q~ `p'>>䖿#Wѳg&N2e^ `0xi(}B~t+"cg("'H+цAZŊ%Mܵtf JّKc 7n\h9^OOrԩP3/_O_fڴiIII:FPP1mllt>>>//֣&EA V`'BлY9G6XfDU@@ <<- 2AՉ111Ě!?}IZ[>k*tAx.BՊ}٠vurFYYo\\ܬY̙b̘1gp xk%Ã{y  +hY"hy{nfftGAA8)s' .N4ֵ.³eK;eʔB^l(xDHc1v=[#O\?00jxu_'w+l)~~sLJR(A*^[-ZܲeKTToz{ ?Db͟Y\ nz͹?_o2ԟOΛ>hӅDC^  0,ENNOEYW=To^*k0[hG)f.]M<-r}l<:[xjrxA>"گ ?>-ѩQGUxƧR[wHۏv\~q_杗H8 Ό=63gQii/jL-|79 QZ ,hࡾ~  EdUVi,֏Ymi\{F~iyeEEqiEMmC\oEFjʊ:/*(IS?A WM?_Eo_yT/[޶}SnT'| 43Hߩ,hlRt,ߧ߽{8W?RI?Ct;FAaa eeU)*ʒqGUGC_C&Hf`jbfa"|EIQ~nqe\ײ ڐM}]|fh+cW0 \ .j?9ݧ?_]ߚK)UxSېދum*M1 `AAJ,++ T"gL2vx(k.5RJv2Jurq/ePafoha[YгzGyC.œ"2F)xQw_r q`_aݞʧ{{K7Aڇ=QN;AA]JS( UQWV\G|L}F3-d\(®"nYʢb!rՓ|l xxYyYe{Z{V.Ynfy |B}V[k(c/0 LquF{\"ayu_z߷ᄄ<ݒ_ۖ\L< yrv9rL:"|?؆t6  2XAAACUXjA՗ӗ44k##d#-HR Ԕ_anT-HyRfy,Bo'YnI16nkW{8vc}wu} yFONM;cQt!z_=N7{۟_ɝGuL5xIuGi'a^xn?~(AAb0BԴ;XR$EgN7i)-h.9XrT #:K8$$';HsݵqVi~N>Es+ݪՅP`}[Bݒܴ(cA> \{r37{㴃X_^bz1Wth]*giWFAajTeiW)jӧj pvWIQ 7׌Mp4Kv5 ԏ1Nta`oobkl`oV4pge [y[X3@m+r(8Azս?orټBrr/N'Q#  `y9yM ZIUYcueR (W!H=ۦ#1,TOqjUiFWvzfy9^֚N\Jg;Tn^:{Ǫ9;V.skvhoYgZ;jRע9NzjqA>l|)5\FA]WYZAQQ[I4\)U'F_~ U,[g#X;8I3DmfuAGkcAv~:QfF\+:diYkβTضza>!]nY`[]kms\;u\AcZdpЖ/2ɤ_  yM mn Omk<G䃀Q/~䭧q7tsM]wt F  "/ee (R^"!*:5$Kl 8^y>֒Jol+5ʖKU,XѴjIIfF4c,uc, C57ͱQ7˨QU!nk!.[C\r߲2I;CaE]ENq"ǵn8Ando0O{rayG FAaRO%%bDΌVٗz*M7[snowo5J}…Uc} ]=,]mtܭcMWEi:mp4]oHI4HaK}cEVZfcPyVswplY3,Qlq|Ms̋ jB\W{h`?0 `R[cW?ēae,  ,2XQVƚ"(2GYxdtB%ѺP 6^Q}M?|?hN{ƔKGf7j$̙okelfjj/eZW]H-uQ+qVo P8lbJo7\vAfFކumJ8-t2L׿U9%@Pn_m7Cm!X| UAe UlHTD`J{_S íl}ttۓ͏?8P;6^<BB'TH}D;.I*޶~sͫ>ũ/O:/>?`vݲyM LS) i֪%U>us8k2n3ܱ~*E}4,fϳjɲS_#jT1˰xbK T:̟?u7 [d0ý_=?8]d}˄Λ<(J l~`! V9ake9 a+iE!"5$"̨MKŝɸ^ZԎgwx3 ^XËC/<ڝ}C.6ϴ+*{h77wlo^gTU?KM[}>yXڨ'Y([+o /'S䡷yqsٮ[-wPQpY555E~3g^wqBĉ'ۖ.]:Զ PjU䓾/̉R7I;]Y*Y( 2`Cv7VQH hHiI7P(f-%Puٷ@w=աُvޭ8-ȸqֹM~;X5lU]`XhfLђѓ֓3S.tժ3L>jTS`[)l"5氒bR;w.==="""..Ç;|qww A?&3c+oSE^8PMbsJ -C3N&^ڒuΞ<:Dߞ'{!4ݠ>moNny}ݖO:VZd'ԺuAR!m} b5V EiI*8T蕸iFXSUj44847˗/'/֬YCwV[[[n `0 `t͗w\z_o:s>{ô=G!+W:G:x[9Z< 60lyW_}U^^6z˗#>ԩStI=j===n"D :|bڳW6;w#Y! 0bU/]VrP: `K-S{[yAeޗIȎ VvVPq.PDU4B[j`~}LތJ>ϺVt-on˺5Μwl~% N~0aaaw9͑fŤ5k`W_}E0G!uBe5p\mpuƫ[ҿٖ}{ˣՠ{xg=t/ֽIRՏd=ڝ֤.&ϾVn;5ag `*!k%LU$LGAQ%VWE}nn@%Au+?ӕ.lܸt$ڵk?׽Ac}^CEuӧ{ KّzuM4u7j2) %udJۯ~g?o=>hի{ ^t4ϟ'N.l `ի)njj"/<֭[bj$=4(L{p ͛7E@7ex `V,gҤ"Yvӛsjj*'%%=hNVV\o%B!N{,IFr^m`Y1ti'x qlJ"r_-[aR;<0[7N vaE2+lsidVIXXpYG5J>uj}YoR559TqQf1Ke;SIWSlxmKIWkbo5_kp&Fsƽol{q{/g@~sͩgO;r﷥>ؑz5ve͊w=Wm}4hyFb$=Ubu<4k4+\e**ܵb 7Zk[:2WeR?x 2SCCCn޼IHv4>ɪ/!AAAФ#Fk7erɽ{TWWȆ[\Ů4 6o rL_\'(Ɨ.7q˗O{{;ݻi C̢LX3L{-mm~MXsև(KDC;cdn͢xLV["ߡ!77LQ/&p\غqz}e[+@2٭ļz2xCkx)ԔWZĚ*.w P4[)9[IL_H լ~½kNrݍ4]u*Jٲ/K~YUIȵek"tW}Y;_{?W:X_^td<ݕxmž^/܎_/=Owgv[)iFM<͌`\멕jPW'RiBnW? 3{߿!0]+ʕ+P| 8fff;sQܹsYܤ#&SHq@-L^׮]#N1RdBWf=Z9!*yP#u; 0W_}EzqKtmk(+i"NDX8p{լzA}YBdO 8\fL07 vB  C*МWA+Y]SVb,h޹p#!-Gڵk7;qRkR=1"(#HSjJ-)oQəq&;68y꫕7nlZ~4RO/f1, _+_mu؏M}-v>ٙxG܃u+VWư'mMsA9^w)k^JbR_ ,+J/MNj抩Vy&^L+k!b#MMM Gx:cϞ=!sssѣG.:{@ґNg:B90 (--%WHȅd&)QG@ yg~vT?~WhqE+ZW`r {miGqÇbsrrx!LxGPh9YH}U ƫ+NưaΤ96|g+ xжCNA]bsu>U,mȴcaQ1/VJJ<Ȁ ^{r^ `ѐwJUX%5GYCN0@6RG*BWYFMF(ˢ)&de_*Z~mӪ/t`ᑒ  8{>mgy. UU6E233eWfQ&EQY"O PMDJҕIn]|(c'yK/-VeIȱ2h=vdcUϻ0vժlYyͣ@>֨U+Д|qշ*ޫZ%egc5oN<ݛ{>k^J|INQ-ے6߬]3Y3Qė~Oz!^GJLLdrKRXXHuh{?ʁI r} @`PM?{cR>y<ܫ&'D*e+vxǢEȩJxFOKe0ajd>1А. ђYg~;vA8* 'n 7̺ם[EA^ؓ'OkgnYKU`VJC΍jnnf u3[AR7]EH'CḲ7b+}ɽ ݃ s<ꕾnSCY,VJEo<7RXy2sʻO{,?l%Yʢ %b dc =DRgٶ=yY͚j¿޴ts'_^rDB;v8u쓆 ً./]pkIl|7yG=5_^vp֖m[ϷW\Z}mS]9uC+Ur lKA*m0V䤹{͖Fʽ+d\㛳Kρ&rr}7n0tρI111;X!`TPHψ9WA_]6e.UUUCݼZ UdX]]HNds&'^uA݀. -Ewiƨ_{]LvB5N?VZExV-jR0z&w}6p9 [Uk ~KCn=~8cTmmm̞=W4[f4{U5JB?5hzUUU_u`X9(pk*#\J;Al坭 wPCb<J¾J"Ѻ2d}z3ص'.t3}Y3W>+o:zWk|:^K%oN6=ڵ҉G+^._mh5{V-7ߜlx{0Zg㪸~X(v{L" [c{,k{4AA-b}vIH yQYдjQ#_lb*ڠ Ss6=L֕s+`///hYѿN:*[s*(*'<<}`"0cǎyPih]٘>}:, ~:l01Y"lܸڵ+ -ɩ F 9/_9Ϸ}6]kk5[QF_UR^ 0n I;6III'xnkڻw@:t…ڣ]|9tVpe+XWέTx"SWYtu@U9ժU5/><CXsju5رc-\V-ʀ5M1q !!k(NzՂѥģ7rX?5pdw] <K4/[)S.-K4)ҴxImn?zۗ<={ q Q1qOgMs6|xͫ=o/|.֥̻əߦžML8Gҹ_LYs܉+o?xvmԘ̛oӢ_'}v8kV̤jf.;zٱeGU)5~M]mVs5T/&h!ɝ" `???Q4\(tW/0ˋ< [)ZlA[wGq銄+lzd]߫.gS 0Hy¤ CVndc֬Y488^zSN={8LҾb=XhݺuRWKw9]Gq٬z[Tģ7`(79`X{- fcQcSK)s7g߂y [Թe fŜpiR,upaɄۗ~|˫^p~cݏo}r|[of^:z|潔w?ЁjpfZ۔)ѿ\Jtfr۫7z2}9W\lE~׳ O?ٸͷZѥь~SKMƄ@ShXh-#䠥ŸAbl طozNjuY%0(N, F pc<~._EvZb,Uӕ Ñ#G^"5@Q4~֭M>5z|(H<4p-ѶmۖUd/_Ƨx=;u֯_ ,g& 0̌ZVϜW[=]++T ͛7 mA6<] C~֔)L:U~T"qㆤ}m2p(:.ۂkTʥk>pLEzUoJׂxfU %S;k,ek^X4jlusQ o"Nݜkq/״sP ు57yrȤ s]lje򉿮|{̛K\:&Tf©;煽3o_ɼ~߽k7/FԸ173.fNWOq13'W] KVP*B}jVwu,bVɭoF%͛fĉL&pu> (1\NѣGNCrt׊+ >*Vv;:*g~i]NVT۷oOM9 pƍIN1bhȐ!qqq {͚5t رWADGGK.aV0r q0ٳg+~U]jz޽{Wq MQa> ޜD < {5uNeAO]++Uq>HKKQ\c[Ν;={VT>}zA9P=w6*Q 恣{hnVc*] ћUJ mٜ Ʋ[Ơr\ٻ@JpWԩQ͋;7.ҺlM.จ /xg[ѷWNM| 7GE}zrGA}ܿ $s5mwɑ^ZwyjuM+.kQeloJF<`q& ~ծ6uQ; yqkP#O^~+VVGdNܶm[E`H.JNN4h$ժU+88/dg+pѮ]V\36[|EQ0~¡G^ D駟Dv#ZP;HW_.&ؘ_A5;իs]ϯI&0ݨQ#E;|jSҎl|0ecD4Mݺuq&]&'5Y&C)Kݖ wC[_S.:7*ҰK=4^Էΰf ػͯ|3og^μrUԮG"\h'ּIe |(@XzS9 S 0`޼ytY#E& a+8אÕKzڣE7ؖ'?gCa+ds n>] [*݋.^qfqjR¥s.n>:z ٥!폆8u m'7Mܡ̄#o:}i=fꗧ¸4F]j`a6'N۽ у R4n9gڃSL]EIׅRZd 1b i@ްe"Ntը=ל gs4w9C/l^ׅT+ԠKbΠu*B_}bZ'pVgGvI><}'[g~h˓^Ԇ#zo+_vNΒxn=ShӨg"^G~{۔ o/{μtu?nyyrË=F{|Sc)_YMT6۱5RʥqBUM4رc-|}}mX5mT.b(ڵk۶z,Җ-[P,g0l_}?]{~/+Xc8 ëLoKxPի_wApYԩT/Whf>اѡm&uK?aOwN~osfl {K^?1}qC^Y:j#KH3r똽o:jv<zPR9pT:Fx \rj|7ad݊! ذ*rT\ϧ~[ & pNeO Xk_V?>8p01zaKP![JrU h|yJG/{oS{Ek?_Z5ᦑmhݐ]O oxfTĈ!Myq|ūs^&;oʹ?NGIY۶/Dqrǖqllw|#&~fSu+]pxK}A̞=;`(z`y'of~F_:ǰXc8 /~t+SٯsBy=)?ObZة~hynR3'e/?  ltnJk+Þ_2z^_:t*NІ7M~9{3wғa'2_fP|s .>aOje&zF=SVV㇐jx~o`Ѿ}gϞ0zMrXr8hEH>to'e|#Nc ,hp1 r ^G-Zh ]|T*c<_V*:sf[:\#i^}RtOԶ'F4߻Łn- ~qʘRI4eЅ1Z]&rT -/~m m6>82}شu, :8YBJmɾ%T/UrWɱJ̩S6fUYr[?o{U' oo﨨8:0lҤIY)CV*L8}*5zEv;U_aG<݇du1 `M6E ?oy婜?O|y ÚU^ХƦA8;ݥo.w_X:Կ{ʐ~7B^xq/Oi}~LvWwW_7V\]zv?rsjReǤ_OVrwU)KZxMhZ_ރ3#00P<&z۶mY#$,VA-rlމ[fEg_-8u`?1EJIw'Ngu1 `W/Z|N mPɿ`^+rYiA+{=m.n7wۀroEߤy/L;痸_&\71&I16N|zUu4ݕ9ݓƒ~W rC, xq (\pގg(2ʻho?M)ޣTQ3ZO5:rHTT޽{a0`8"vƿ 736{s =^sNԘqwMm`0 vWK-WȹZaN 8(k҅xP}ƴO}/x˃fPZBgnң^f%辬3 `hࢅt)ssw¯JͿkQgC&i^=3waTz쟼$,u٘mË_]|,pݐ;^^ixp⢁f2]e5WBN ܜsp}}Jm9+ *]){WΰLvqtT\ tuԽbl iQ'M9}}|g@V`0 FE /Zåv8/ׯ@y~[,wD׀Ûڢ^Oyo=Soxc;Ǧoh&c_E}+_t焇]9>,7w)iov:;p\}pbc+WvZ =4~ꆯwM0l `Q̏OTA/g\ >Cynҙz cLޖVƫ| )՗``0 N".>.U 9ujWҹSâNU.W[u^zž7<:7OxcC ^\ڗ7ړp$W[^'[n-xuAsPX)W(oܥkƅ;+ܵL^%BJ)57>e|ӯ`dsUA;%i~>g.Ïr6hyiE``0 p!X +]ĹEI&\@mlp͝>/;W}*OmQgyBZFNiwqnKNZz8y[ͯv:Xl߬}:zcŪ py\W(o.ʸ\ڥcY_b-)__}uޢ?l_|I]o!G "oIڞ /.͗``0 (\S".5]v)͹H\_Es*]ůGWxVǴ9=%oɏ6>:y//zqxzDȩݏ??h\!&68Ym-Pky׺k{79&fZEgwN9uaX60eQN&)~F/]+lz*ݹc16k_ܵs" ;ts.˻S@1N?j`dhWAu}b{>v$GME޶+~2572{_s;ՉkOrY] `09Píw}_ys7?SϿf (_"Bie~QrJUացNuw{c^tQ' j&iTP҈5?ݩwp[_TvMqgЁ;rKo -ҤS@^n?SKY?(SA`09+NÎptWEW=ԗݿx}Qg_!q;g?}?ۿ3OuA㿝tA@!:|V`0 F`ZbEZ4o/pϝ??^bo"knMܝJt:Jqs[ȩ[҅(Zag09/iK/H5M~GE_C8 ;Z0[꣗^^ݫ o&:ӚKsp19 `0r# ,TɹW\>"_}{ܗyrZyCn-y7yG5μsc.+]=`xB /~(_My]z풻K r*ԾTlU¹])zE9 #Coѥw _M:$"nqw?~ ?)o}wzNʌ?U(xGe``0 pp+Rh| ,Pw|<# 𮼮{йQ-xµpd=.)yխL[qkp|2_uy]o|Y97sU`^w5)fa粅 dI F68#7&>xCWմEteweoo;L:xqDlq\3ȻӳL``0 p^{2n%w.',-n|Y}W/WޅKΣH)"|/PICi4h 7'e囿f/u]LjkD_\}֋Bw4YW|IPkAvf2?7h͹QY] `09 wAj;t9%%:;˲NlkEl(Y|7mPnW:{5=ںѶNu9ӬA1՛{׻S?J ^uOTto~7T능/CE\`0&p:swF-{"/޼zkKxOAt6;fu1 `dh`0 `0 V `0 I``0 `|``0 `0Xf0 `0 ' 2 `0  ``0 `|``0 `0>۾}-[6o̔)SL2eʔ)SL~#bccc>܇`0 `0 4Ϯ\xeL2eʔ)SL2e#$3 `0 㳛7o޸q7Ct0f7nvf7nAD%an@qt>`0 `0 FJ+twSL2eʔ)SL2e )T `0 ߿_`0 `0 #F+iFC`0 `0Q]%eyHtf7nvf7`0 `0>|==zDT܇`0 `0g?~f7nvf7nvw 0`0 `0=Xf0 `0 '~&`0 `0 F\(/f7nvf7o C /^fçRǏ? #pyz%!!9d0  pvwJJJ\\ܥK޽Uyu˗͆AU-߼y=Yܹs 1uTȼYq 5jԨ_~'N< (_|``ŋATI7::ZL1&&FWA4iСCv ժU |H*=zs*TzzzvG>\tiƍŢjjÆ ZyIF* Hfgxx>|Cԏ۶m@C5BIA1;?nEnnU q8A0M65nTTSgjj:S&L!x֭[j֬ ݟ=v3^OqWN*O*+_=u+=za7o.〼-Aj*hrQ]խ[wڴin>d7nkܟK^zjCZZvy)ei~zg͚z5k,ODDD6mDzys߾}Q;ecLՠAS»bp]9yK1Q5ߚ={V ATn&MWn߾MO͛G0-/}:!ܹs{$''; 6`bCBB,YұcG}vyxH=:{J?nTp='q ʕJbBB*~5$$0]ħX<==S׿X\(pW7.+-mHs̡[juر$1˗> 0̂ @iڑ=͛7۶mkdʔ)S+; \~9 ӬT<Ac6O?=1(Z!J;S!#ZJL%Ѽys{-*ȡӄM@/_n*!@޽N:MYreI7SN`0r(["SN?tPx4s,A߿.tu*S$˖-g ;i)y1cΪ|Z%Ѥahm۶%?((H'[~t% iYY(=bn۷o/۽{wz{s̙b:u#ӹsgyĽ|F,<3(֫WO?zߺul֎;5jTJICỤF #r꓊`I`IEN;&L+ J{|_Wӻ#G$-[A?7듦 #&_p8 'I4~x=UB'!$LÆ }||#S܋-' 7~;@d})#5kBlׯ'd#yҥK^$kג!C$o'#ķ֭[A E*5%a~ xb)(lKSNtB>,O hʉm[ -?>PA#; ҳg϶lٲE@k׮ڣx4h@O-C]`(zHn@WY` RbEg,/ɓXmڴ ު_ɓq?<' /[[nx(d߈#o!ܹ5hƣJY5 Yd t * l?˟l1|nO@= 3(>=d :6T,n z!OTŧ/_VIIIނSPH1Cɟ/^@o>3vX<;J;Ş " R'TLqFbНҚ)^0'&&B -;vPBL2e*n}wzс;&.L WС۷xp YY4񅇇y:  uQRV "zd ,HsEဪƍMaܹsVdTЮj0@['ʈr FSM|%N8%E ςI( M,p*`?)xSƇFT,iŖl SnJOŽuTm۶I*\N҇Uf0voy\yGWo6m-`j0ШJBBJիW1-Zr%(~2E/_ U᡼;e2e3wz6lh0+)v0%@~?j +zK(T ҥ9^Vj/DV^c6Il5ks$L0g'&&._#>sNfv&}qBBt̲6f=(ħNG{TQyQϹC>!*Z+$2" FzNp'*R )6>A"L#no-XD1<[LSZ$s::ⱀ?ŋ|,r+5'L׉4 '3g+_2M8סchU6Bor\]3F%Q2+ $"+%\] A*V=mnvp7nR|?B|m B+Q!yVX.F <6x`M=ȩYfqݻz~&Ix\Xz5q߈_~Eo[8sN )/׬Y)2Z,bT#yRV<|\X(uп ֨Q#un< ?- j0|CS!&S)v6eʔ)SS{ ƥM0JFVZxr9)>w! ղXrxB CXwޝ={6to^-ߓGxO0HzI1]XW#m8?Ven4C |W :R ,KkZ_CL r0*6UE]~FH0pbHIrrXu'O7I\lYfUI]. }]< s 5ާNAٳw޵kB$Ԧ $'3eʔiN-5k֤ICE'r&G<\)J-xe`ZW⡠ ne=H(4m{ xŊUVfcgժU|C!V??ijR~ 6+kU,ڵ X`< ]TˑTm+,R6-r{\;w}RSSq߬YL]؃pM5Y}]z5h 蛈T,5h :~,<nx *m+N򆙤]B$ds㱭X #_rd0v0*qpTB[1Zuax}jx\VQ.]hV|sNi`ذanSL29=fAiG @q|2eʔmU`Jbx80Df A:4i-<[.F[jU?(c4T<27zi?+%oܸt '"`J^r%Åm5j!"ڋ`"($f^Q T)]C޽ܹsZNKtA9r$zkժy"PۄƕcSN5Pj*2G`o^߶m[d툭@ i^oDzbXc hƽ"P&AAAH,gi&0a˜1c`ʃ:Xv-^/O *U Kt 4.֘1]>}PmذA|$x͚5`0* ) UׯOK =ש*B n˄U< B{>5ٚti&'Ae˖aՠBwlf$yaNNg1׃A?4$MOk׮%J n [%a KK -[nIh 1bzLj۷oy*fϞ[F%pƌ?T2ZHC8Q5ux`֧hDGGJʂh B[U3>qRUhOSqclR6ݻnr ,r 0N.+T(FnAً@Ia/?-,K &_pt7|@4!740nܜдiSHX?T7B U& OI)W a$]1*I~$`_f ah8ԁ111t<`Сڂf7[vHva!ipc0~s})))Fn1l0Q6(mIIcDTTz^ݷnRlߨQ# @V`CC@ZjբE +V$Cmi1DDDk{#mfoooF 0Z f0FnƒV;1`f1P1ExxEjP,%aИ }̬b<$I hޅ>/^. Ať/n"@#GAӧ@#I9'X1  M8F pƇfRaI~$dXlnӄd@S k(X/<^ \5k`ܿ RTZPb*a#% U|nݺ! ܡ`09r{1)az-ܻw/][&{􏋋&BPcҥ/٠ܽ{W=r ҳb՘.;v, =0CP}AA_}p~߾}[ĻwFX%)XXX=TALTU*JvcƍEKxՐKVY 0T'"x>'$^`ƒp策Ўׇ"@ $HWb劀Gag ҾF5Nr@$!hU9 **  ЁAڴiSAVA'^"1B‚ mmڴAnIA3B1]v5U4"h6VXmũ3%QT<7EXlnӄ ѥKQSf˗//3F܁l"nݺqƕXqa*C4ijȑ+`0r t`G a8% 6a `^>zcoVz* X|͑ '.*sW-ovIP\i6DQ9dd @$$$3B͔`0>dS]CVҘ. d0r.p#-88W2G1 `X#{WYgt%e7v۶n0rYO|9xY92e4hm۶Yf 5jL@KLM4jW ͺl2f.4(rN`g9t<!rN%8كf7dr89;u-[FgR͆pD2e KϜ9aIhРA X3Tir@fϞm*n#9b%''~թS'L5,XB*dx~ѣG;8][ѓ'ORSJ. J``Zs{s۷omTx豠2aH(`@3[?*M ]~sȉ)SL- `D!ܹY$4mժ?D^> /'!՛DrPBժUE:Xs^xT)7odʕbxeK e ڻ o2͛]5Uyc)#(-- SG޽{ժU>\1SNQS[Ԕ&JBaJ:!Z,ȹ9'T(oooѧN:چ_̙#Wh`"sȞ)SLuw`{޽"ڵhk,p_t\r/-Q6^q:sbڵk'!Ǐ}}})ݑ#G۶m_=A~`xjԨA/^VZE9(aZ)))rN,ɏ{ӦMDлwo{nٳT)3G+sϞ= e4nrr2UZhhl^^q,H\pa֭Z B]E r) z&Ld\#pK`1e˯$$&&J*{ AJ dGALt߿+q.PlVtէIxEnI+@䜈+rΜ%{f.-u&sO 7ndA/vmW !Cp^q7n<(ޡ؎D\BVZ%'|ڭ[7z~z56zhz}֬Y:u#_kڷo/޽;=][zu h2~uzƍaÆ$kB}|;[+WD_0EGeoIdUҬ/ٱвeKS=Pn7lN1E3@uXN>x ^~%*2 9篿JˉONBBByM ܻwO%|bb"  i@ʼnV28'SLjg<(N~&y;-]^z*Tҥ N҄0U֣Gcǎ)F-_F]r'.@˜2e L$r>o>˒9sO>Z\ N}%׬Y!WBqY<-ȕIH,9sm(ԩSAAZGdd$!((\rIhfLelզb0i>?#p?&OLK,Ë= CK`eUva_\ K I^S[*0[iz˫' .]dW`k )TXr@ӦMځؓ lήרQbŊAھ}$"4m۶L6Q>`S;Dlڴ ͖lW\9xv9 O]L@DÜ'9 C;k;v,2kך -67b hըQ#@ ]e05lذc%O P駟($hG 47 ߆aJPL?yn݊+@u$>hРI&[ ҡxڍ8 ծ] rHW%4<ϧG )b 2@+*W,ޜ!4P՗O> 2Pjbx"M E)yyf-VƯBAh%=JA'#ZbM5TRtEjCTݎCmm۶6AXBϝ;l@Bg6>M6 $b3IL_j۬_> \8 QرOWĀF @Gص<2Λ7]vHO,ٲe[۷oG`Js* (e`sN.Z«Td3G'qIǙs~:)SLSZ[nMW@J~ :* y[8yFxu߾} ̃#]IVJpS\z0I`G9R|СC4גm‚*`0WSjueX^-qСC1['*"/ٳ'dGgeo߾s-`t:4Eo˯8qMW\-zsb gpB# r/E&@ҙ0'-/9G92eT;$ov횩0(@/ I)p<(Zu%:6$AvI6Z* 628plDq-A_aw8k"}PӦMCOܼysP3 ڵkө6Axx8E/VD(a+"%%ۗD`\G7rsv +y;w[ 0F KA4Lo0Zu%+*e c״dƆlbVbP9vҥi' 8'AF߿JNaz6hs~4`0_aIϚ2.ҠA0((*Aǭe^N=-ED<'kD]tIN<j `oBkn˖- I;k֬)9,I-uR$@N!Ԧ~ر;vD/B\)'dX25Bòj fIv= &1⩼8xB_Qې]_r[aϞ=dm lW ֭",p`DÜS9 C;۳g?T$̚NiP1Ç{SWB獒VL/k׮xM-u{6}=q"7gڴix)!=XRL,>$ejժQl .">x<{_NŪI FUF^k'ǂwPPP֭Bw>n8⽠6A=HO8BGO%WTVɛ.ԸS{;ӟyʕ+V@*~dSf͢Æ B LSDcq]1甿9'SLj}Bshm IAx`| mOB)ɫjgk`RLxG˗@bWBQLWn !% Q]jf%+Ci8qB[v+\PJXh=q]8kC1`Su3fTT)..e*]sZz \*ybX\n]ǎECq_G.&N<:?`C,== Uz >ϟWOךwy^"F*lٲK.Ʊ[#oشiS`#rz'~ y~,dҷAUŀK C≽943=4}#RkҠ4@G2Aъ.c$58y$⇪⍞'=b\{ncRױC Z אSQŗ">X(8D{78:-'|yr۵k'TZj{˩P(F]DD?7nL̬ .<~ۍhv{ Ef;ұ0nF?0ad(t~˒%K+6l@A,n9C 9x WFNhvo }ڵ+EK2]f\à;v[L|Z$ӷ!W9<)L6u( a^G֌{P0(}0d VXAn G:t_~,|qqρtRcT^Hh͛6Ni5t)|E-]FKd4v5sn-"%v._põW6wr9rc#t#*`G-r* EUQQ??y$`¾ӧJ4G` 1M<4a4id͈駈2ϟerEHW^-Ӽuɓ0AՎrH ibE3aR|45kp:Ň`;(9B$nܼ̄y՛?࿬aO>u2 cdR`o!8zvM ln߂"KmƎcS2?,&ŭϯ2Re%.xS2QeԠٳg-^np8/%]:e6a)To`ǎ͵Nl3| q4i$jdvUGaEDlpeWPPpYF|G80-G $|֭eskMfx~ز9ru:@ c8PS*GdpmPç+i1ߟ:uj߾}P˗aDc^yhУի1TS! v|Ǔ*jH^Z  #CMF߿Gm9#n2H B%/|du GQ^Zϓ}Grf\W^y啯A+2 >sÆ E y۬8T( "4ҷXy ӧsQGy峁pQ>(/[(ȣ+5`EٳqP)KNx"ЖSP(d RJ*Ŵ7Ι3NeϸlJ*UTRio1GP^yW?-(ȩ++_+UTRJ*UTҬLW^yW^yW^yWV:TRJ*UTRJ`W^yW^yW^y峂 0BW^yW^yW^yWVVTRJ*UTRJk1=J*UTRJ*U4++UTRJ*UTҬXyW^yW^yW^uXR?s͠~- =tP?d\#jFɧyĉ L{| D?Hܿٳ?(ș [ᣏ>ʸ<~(Cϟ?<૥"d\߲8IÇC jUgh>}x%e}>(-GU/ߨZO?ߧ$͛7oQJo,w 4N߿iӦkٲ#=|pa 4j̗_~Yxx$777ߴiӇ~c@N>mPwKNjqu9wڅR,%4lذ_~<7{ 7,L&Uu]v:t%K:޶£#vqN65kV2ǞRX9GKMR"4'3aB]f1ЌSLa>s8ϟ?w9իS('cnjFnݺ=z0V̘1ѶtĨQB=iѣ)ǎ܇_D?$;wPO81%2TP-s aIGa O#%)Ǐ !? vi;,кukr&S78(Paa5:u:<,..vfc!T}HUVWAիBڵk+x8 Ϟ=^,r~klTdy a 4( MטE8q"qoqi}Q7n*BNvLp?#YB"yŋ줎3JRB,Y"U/pOV+4t„ ,ȑ#8]tpjRve͕Z{.O4)pkz}H 0r1b 6i$Uo 4f\pz ͛uy;v{͜9SZ ǎuS)kY`'Ja?F#.WDڵ+C,֮]M6q)&5ʢş;w;w*UqݺurH.@JPTAQau6;fbK p͛lQtw˖-,vNJ#cߢ9viFU޳o"'':uJζT}H`*p4(ZZvmE7z}W M) E={8_57T?|ֱ.CBZ.He?~| T|-qc5C_{gy9wދp:̧[>;vȎc m۶ˍ8ǎMh+k1}G8:MG* %(G>PEtFG+(r0 pe… e?4WY624#n 1=۷ozmđgXt1?'lذwuܑ1LFُS8|BK,ڵ+ۢEaÆh1n޼9i$tHYf508{,\֭[1СC/SNv ]X͛7r_1{eWVe>{Ʊ5jHnbIX tH \tɖ_߫͛#3g俌@3n; U~ 8F8p ^˟ݱ3߀$gĉ4A .}׮]C=|0T)?j&2o߾'knƾQ ZlɯFFSa>3u6TTT٬zB+8c .P jI(**p@cݻol(#.OfO,opsS' ] k׮*)qNw냷0ܭ[7wݻw/l;z()P82;t6#j0oN:qU6mڠ)&jT]"d^|BHǎ'T!Ł) 1'.nY՚4i##GgVۣkߧrμyKzASNq8i2>P9"{ 嘲)sx)9|yBk!x*!1ξ}dQx=o,5Nʕ+Z2 V#DG:PGYOI^ u[d}8s ph"tE*~"\|q<p%Ps/lc۶m[l~ YzfdCˁP=)T=)N߂9w80^#+LgNJUuɎ'o[ɞ>ȭ% uV^# 8%coK.o B O 6H:nj zs=AK[#+;LvlAU.3p\zG>ϙ[p40y-f^^^,~i1y-*#X EP7sn5f AMQB0?NZci'X [Px?çN=0)޽{Ғ~XwɅ%[9f"#7h/GBާXɄ~:uw&>}B:#rix_~ܪ"zCUwގqf~V1 uD"{8尷Lqe#B묪^@QٕkK7@YyjRN>|S0 @%3rM6tC+;@ g#^.0 7EEE4(1@u\z) ۄ/⥤ra? Yr%EvqQbqwn\MeT5<TSsq"AGR%H+1zh=zW_}E+JJJ/uдB6L>maGxEnܸ%5֭[>vbdBHUVV@*Y4l'9ǎ\8L@,7klǎ7 6?ݻ7a-P0q>~/m/fpC[Y#Rzߌop|bG([qaHn?>C4GYU=U=U=4;@~r$+W%wp9C#sO'oQ"-ˣ<?3nj܁ԼyI&yl䔨n׽UYY?##&fܸqF|cNv9h)']`%?<oT8sαLF3fi]r˄U 6ld2?{ΝS7Çߐپ};ߪ<ʂ?kX (?.d̙.[4sB(n 8p.-<)~/ZVN:tQt0Aڵk6jEYiJOkcUWUXǴYf6  ȁtW9]3|p/7=y)p7` U@ F񋊊8ɓ' /dG_^Dlx2˕+WRm#V \;m4 4NwHr‘2ay"3e02C:2TO/Uoh/Uo˖-ᩞSUFUO&WX/^0@{u ylq|CG:#ݸUX!?WrK^f&ia"-ڴiSL //'i}^b)}n!Cr!YıCm|j s<[~d&&/F{׬?& Q͛;fпfP/~u3"7nXaww9"]*5yfrPm<t r7[Z&AK r޾ .-<3_d|9@.Om 3yJU8.q-++E(NE\y:6.oeM_p3%l`J.Ǐ+\z RG<]I9٣>|BVxLsDh U=yT*OyVP+V9D{Ioi1&AKĻ ;Jfj&FΝCPɌL@6w\:|/'\bᲷO12En4h7 7p&.GF]e!EEE5FG;~CA E'Oyҿ:($c}Z ,ip\{G*[n"ZgBUOUBUO #+4PVx4;Ҭ;3>!7CXq#O@Bl[c,p… -L&` ~%sHgttݣ8:K\`G=]wĔcU:Nj / 0z>@ H*\aN*d3gFG0=@yRd.,,D~M[V9e˖S׮]ыPm|D<@ϟ?!;vRBPc̘1_VE iS`h8H;޾.UVx與/_QCd#B묪^2jB(j!VZmAA|OlٲN!)o )yǕZJ-FB8;Y׺ny?v| n?%ge8HÆW=ˑVqn߾n9ѲWs|M6q[ngo Ay@.w)\A+8F"(gQQBvH틔G(0hϏ'ui6#Jf&e#jnI{Kn/Kd޼yq))\vo#FpLUB٧z눏CЉVHB_G-,(Q.Rn[O< )W_}P8&!;p8tZ OIizF6`3]yW=wL}43rp=:<{=K(YY{trk p8ʑp jB&/Su]>cND<4"0𣽻229[;#GxN-7ƈI =!4A}}_|a'$*_e#ƴ݁dovСȎmd @nc-kdNGV7` ;_@ɱB֫WرcYnj3{PyR>oGV4o.+,,@xs$C>H;wr|2m|wAe{ncrFa,pi(cLCIQꟆ izzz>3i>Z& _p|cdlݺ51n ؎D AiBûK(KѣGy`őv9X<ߨjs~>CUJ2 oqt-Zā|G5&J(A6n!G#}YG=Bǹ=Vl؏cGޫ!ìxsk7;0`4oy8\Ή7}{aȫ/lbĹ|rnn.GFp}Lgg߿/{8VÇW7k VQG<䗭">̕ofE𮫆"pn+cҚm+m+eRiZgSGUᎪg=W,XqUhAm<1TϭUZ wTHWX3핣3}j8qV( ԖVķ<?^6w`wqjqpvHZy`rO8-<[.q^xۡ>IƱgkV}`f͚%9Z:0iӦܹSN>xĘ%tjoWK;#qd mѢ+;yd+WM>|XKś9Y[ԡĴ@`9w x }8w4i҄An Ǐp6yiTO=؃`y7f֭x=sq8iFɓl2OKcN j%g= ꈊ%(Kr2tmݺuUۃ @#qiHu}FNqɓ;t ĉQ߾}իO>|-tT ŋs(E4pmcjeʔ)!p&MP8&-gHK!m߾}i%H2ۯYW\4kOVZ%G.cW8Bȁc-wOriII @Y#Sr=OE.[Ɖ'Y2Ie۶mCtm۶E%OS>6<3glzbVk&ӳNDȏ?h̨6 gk֤I ̐!CJK ޽{w~[@P@+Vy >{lٲefXhu<#$-olժhϜ9uXh/[~'OfϞFL ы;*СC6}ϟ7bY|oBfgդΝ; ۲e)Kڪkbx.:5tLryy6"~z(S8} t yAkL^TjAHTF`2-Esa$;E8"qX{m eE)"fMI>S!je@Tψ8zO6 uzJdFintR.Tȑ#zED*|Wr'#B[v/W~vH\#ZC$8;Ly*2%ɓIN:jv(mhԩwe+~f܈> LaBIգ{2W~fFAT^JfFF]q{wva…QGy#ӜѣGV4|݆ 2%C8Ç_|Œ%KJJJm6|hM&?~ɓ(-]t˖-Nyj.}Zujo^Q>|՚ U$sR?~<&֭kJ'}Mt% ڵ+  gig;f+X#޽[(:GAӧzQGi i՚Hʸ?ڵk,~ sQ4TAϟ?z+W[͢OD$(}~+\6Ċ|4 :z{x.A5xz3 UZ h՚H;LY_|}!ݴiӧOGG6問VZ :t߾}ё&G)..ѣF.]Ç[n6l*$ƍaȐ!v񎪷l2RqGzGjʧkn„ W\ɸ}$2Bq$&ԩSI2W+y_Ξ=qyj35h\RVVFgŋ7n@BP'>X`mP޽{9O>ɬ2?δ85U1P"8?~, ;5{)p݃ jРKذa~A򔤟D*׭[aÆ-YÇ'@ƩS *ڵˎ\RR™Y\\ƍ9δiӪYH#:D_RX ެYT)HgzzSQm2e&STc/^m) ǍFnݺ=zU<3f8ږ5jTI"U#_Ђk3f̡C";Z?掱crX#FiSmIJCBȏH-i^sfJ6XѨQ(++ ϯ0nݺ ͥgԩS-`UU?ii8ƍKj8#A!Ua9ha*͛7/tn U=U z_.U:K*\|~,ؙ3g88B^^^jSukT;utY\\C]P^^NТEL˒aeՁ#Gt(=}ɦAB?oР4 A%ˆ8+WfZ?QP#7/FU,((=:e)%K섪^QU/pbĉ,_|aGҥ GHoe ̇' G=77Wnp3[z5&OЭ[ȓ)~\'7oc Gŝ9sJKKAA]i7Z2rO\_x_d<}tҥrEݻ3޼dB/V7oի۰aׯGAdx7Yʢş7oݻwɓua#p;o8QՑ, EH ?#Z>]t6 AQ""[CA[R\M`|RqtxPn݂ō˗eSN0S+MѣG6mmEmڴ=y9МsiٖQtrػwaر~KS .jŐp˖-FǏ"W6 Óbq@9 Y/ZarRY3>#rwH޶m[~~3"?~6W?NÌVHe$xVx5/~5Zʹ:$T zAAK p, +4?d4OCc3۷ozm+7w1?0HՇ!rrrڵk7emݺu$6QI&F]i֬+yS-]}7ɓv[h!pܹSի-$Ǫ֨Q#%U;<42–_߫ш̜92bõѣYEΝ;Ϙ1ݻ2S )((S3u6TTT٬zqZ tʕpE 4NG@ᨁ YxI6} G,)%nC8|k׮3 ߎO\}[ ~ Dz?}ы 9 mPT۴i3f̘}RL{H}'K.Ek\SXUdUkҤ 9tj6,Jq G" _.O<٪U+[b}P*lܸG H޽{"'87e˗/;v7O>phB?^GpU~i=φ.bJ?~<3Lpgl' ګY9ap//ٰaaaP(ڵ|y]^^lA .JgϞ , 7O#;l؈#O&2dDzѢEo΄͛7s&LHᣏ>r6#2zbt#7:ƹuǁAI{ Ƿ0,FdCnG#::#R~7toE?wNrA"tV` V8 zVgSl9ؐgo8R9QQeUG͇OMF=z$4 Xց1c<t-)8Ư}[K(=To'P{J''قj\2Vu]) yΝv=eʔ6*&(5ѣG9AK[#俨9 kӦͣG<$9;x?~zޫJv֬u5x >M6_E9 5y\R^^N ̙Á0qIh!@5׺j?]pXKj-(W\Ɂ||C#ѣkZuV dݺueee-)!@H9d *l﻾gdB5H@ H%Gߏ?΁p&Hy\߬Y &q> jp rxiҤ ,^D34W/^4N = U:"W~r8ׯ'Zn4"Ȃ H7h9"Ϊ4GqX %HVJ7.rkm @s~K(FG!:t(hF;7o>i$cG>xݿ0y9ƍS Ļ>SfǑoM|޽@< /G+\u:"7ӧŃ+F{mEt呋􊋋)Po"PI<޺`7gRo0'Cir٠Q꽶fe|[Ṫxb^gkV}Ο|`yS2.]xXv4wQ42|8ٲN`^m|KǎZ p%{ rBXn2!:d "ѳh_t2M #< UrLQ ;͕lPgU]?mWZO|7p GƧOVvbӎq cm~vCpv)\ w{oa_|RG|[XfC*ݭpbQ =+ݖ qo0{X2.^(e3M:둦#o1TmkWu6R=!XeHbp|[U/J镖[<:D{(4'aN;}^iX8ߖV9ruV N k1سgO" 0>(|aW d8wށn]Bc:w|9ggkP}z!wq;+Wh;.g 0Q]42hР8c-Y ^RTT>%z8- Fb'L0lذX堸!Sx%"x'<QlÆ FK6Q|LT ]_e;yNZ|J޵w9>2(C)_'8(Kx+фVuC~x8^CRHVԦ" EHXspopVȶC٠T}%*U/`PǏ?Yy­MAf+=;T}c=93h'/bd}ɞ>ȭ% ÆSʑB|iYҭ|3r-0zhCgUZ ;._, !Z6-X|UKJ8[qIr6h47`M`Op+msqĔϧZ: / c-XiRRB:ńn*^8Ep;fs̙|3u?C!qb?yXsss{W2N2e֭n @ rx˖-_AL… ұcG/%񫯾*JH#??C,r"aÆF pDzx/'k߾wڧ>6"l.# izzzɨ^=A-Vh%D" !iݺ/((5J%%%,t g( tw Ϟ=Æ8;L8;j 0GYvcL#ښ5k8bd-ruO>%Lܹ{ĉmvߋЦMY8Nг݌)ǯݒY,**BiO?H;H?dʧN>Ri]ff,>_]☨ %:.KF|8rnmĈ飊b@@tF3#:!4sy[|Y.P\"tuոӧOcZ Ex-!Gp8DZ OIizF3Rˌ2q?3Ɖ_Fn$O gϟ?))^94-k-4gW-Ç49\N֭{n}RZLFȥ02=zTrO?o%S;O?D1un/+|pm۶mu#"; @{rpЛ]䑕ƹL nիwq/750@yLZ*OϦy ͛7˅xx޿~$'I~=z%ߵkLJgAI nN29+\gbb$:#]a6a|Fرk_"A޾cS| /i(ԍH:=ɼۉ켢'ꥥ8K&J3Vk{ *O Ǟ ˶>ȱ% ÕcO!+Gj-%zAlcLF3qD5nS҄3gNB土iivqWu7Ra#k׮ׯ]'\y]Kp:RN:F]3?g6q2\ŧ'sU6BM UC˜%u^x1rOLԶ0<5yh#€h<,DpTޫa[ueUT <ﰅr Aaȫ/KJJ8hsss9ۅ}|Q#СCk)]ׯoVꈇx/G+Z"|0pY6 å"?¥NV]B]HHd[dqyŇW41-ϱ'C俆깕uPyR8$UfϞ>ȱ% ï=ǞW4 pPK Ԗq=x,~[Yx߬z(3$M8~'OY #իWG>x`AsGhB:thL&bGpf.oڴ)C0s9 x$:p;bV^ t0Eb(ySΪU&>Wm=.D^{sQ-3LGSr _GRV>IzdqH&M؋Fn 0XH-,]vr*c>;<7"*/,{dCx)*<35#ӥ|c.]J Ɓ<ӹ{.˗+8\oG\n&G=pzv„ WVJ/zٗWp:;vE%LVxꈧH۴iQcdz$^yI,ϙk*͛h 4~zn+Be.pTʪ~vs̑:mǍ-+\g#zPi<r W{ ջ|2W}Qp3`MEzg۪XA8T;Cvڕ{knD@fm7mzwza%7y^ eûq9:Z!Rb25o7e-lDZC C >ޘpYnȱ]529>Ǐ=g[7`>X/Xխǯ349cah0d)DРbS- תGfoߗOw|g *7h˖-,~5L\2rH8?o7N{Z*[h1(Eng>#!3:oE9nhY&4P܈VXXH#|r!3JJ* .]ijVPy9\9 y-!=~\1V&wHD",afWoՃ&cjKΟ?_ߵk+gQ=~h%tZ0|۰[jd -((@1_4=@W_} -;oƎ{B3%K,[,*mȈx˗ShW^5#fF]Bf3?O?RT;Hħ@ W6">b@}'Np\.`_XBF8pjD?~,o J(cO+Gɧli&ijK_yTƄ -@{9\hh,ޭ]_#/qj{#^g ;:%f"իW&Mrrrڷo?yd4v zĉcիO>^ &SSLT>{MvU[+W6b }^zQG;Xϲwn֭h_ #rC^A@.[Ԙ%~R۷!mBHXBk' #<)qv/<}tΜ9[kiv?ɓYf3*Æ [\\,'dPg B(lxVZ*yyyvo2nAXWih̰>2B3Ͻy6VZ'p|?{Q/ߒ{Aw ŽAdҤI"КF)poXn[a7 itۂ_M:OzAƷUmKU-[fWuc& mkߪVցq!##}^lգp8*'zv?뿽2TGSnی#=:9GԖM'ܸq;t6~(#vQ rcǎxwfnv۝]:A#7|/-[Ճ+e^sF=EAUoӦMQGi i՚HXP(+xx*;w.FM_P( BPDøq4h0q)|1Lx_?}ɓ'pAoܸ/aI=zj^P( BP(2:QoٲM6W^˖-?ҴаaCdӁwZ#G ީӧO9… Ȅiuԡg#G<c֭[+WK?~[nM>}̘1ٳg^^^NN^&:\yW^yW^yO9_iRnq-[O>#O4)tݻGݨQ¥nݺGqT4ѣcN'F:FpBC/--upJW^yW^yW^yפ%ЫW&Ge͚5W^i׮]fe K,X`ox25c?~Fpu XP( BP>GOȓKˏ9|ʕlҤItK8W^mРsÁLK֭K_ϟ?2e ӻwo_͟?gvg¥T@7N7߀?pP7W^yW^yW^k`۾}{~֭[ё'pg `O`>~}cfEEE2NӧOs+8jv9hAyx~Ν;HP^yW^yW^y嫃wpm۶mРAf YƁOݺu_xe˖ͮ_~ӦMj:ujdUR<|BQ h׮رcla;>%E{eڵk7oޢE 6l gc=qLK۴i3c |ٳ/| K()2O>֭ͥ^ر#"liR^=y:17(.#G^m[7od~cFg}!?@=,`)v;?0ǔFi5ѣ< ? )~ڻwƍ#󋋋o߾-%~P_G/_Sg*UTRJ*V%OҜ*PN"ÏtƍSyWF>ԩS͝;ûw޳gsűVЅ ed8YQRof͚qIQC ׮]Cti0Ŕ{h+//s GRW\Ç+WJuܸqDVq:A*ݻ9Yf;w|iii)W`ǎv)8VTRJ*UTi5iu|t2c920lu94sx qFבK))G_ڑzUct>S $#A֭F8AIi޼x4iB ]t3BT~h X۷çMf+UTRJ*U={wyTp{OF|eNƍTǎe^*#v = }ܹ>=nߣN<ڄݻϞ={ԩҧڗ/_r`-8m&nٲ%\0x:uݻ`ҥKg%z gϞqFZ_m@439%%%k׮eĉA$m֬Y3J*UTRJfI{mz۾(ϟ#5Jn^/Ç_z}?Ks(j~Q>hʕ+V *ŋ#ƍԐirOmVw:p@zYv{|AE9|T+UTRJ*U=3]'OJi?ٺŗ^ 1cEr8p;M~cBN>;w'~"t e.]:udիW ﺴ?ongYY֭[ϧsp@*++5I36mzw~2@j۶gV#//L2Xr3W\ڵ >}$|)S8%K(|Ϟ=[nN>@?O!u>zǠ|:TRJ*UTi&DcO8ai-[tT:u0I=[od4NX߾}>&Or20tPwyƍ8uX|+m(ez{+773|ذa4W,qmr !Çݢ}ѣG)… ݺu=z4=ge|x8p;x9)p9\:;s$S?~,~vNz)Onذ!O>c~6m;O?`}] )M޿@= BP( V&åm۶?999c|}{Jά/=pZɓ',eN ?pn6n$^MiFυvKjժUM  gvq1aN5kJJըQc)w Jd'?XIݺuQ(5# BP( BQLްى'<(Mo߆{y28~GGG^|ɏ4ϝ;;JyW^yW^y啯| V( BP( "j`J*UTRJ*U44`BP( BPdV( BP( EV@`BP( BPdV( BP( EV@`BP( BPdV( BP( EV++++_[yV( BP( EV_8 +++W3 BP( B XRJ*UTRJ*Tg BP( B`J*UTRJ*U-+|U8rHɯ]9rd,?ziػw?>5k־}ISXM)I-++_[yy~dԩ~ٳg;>_~ƍ6LB:}t~;Ǐ \VVțr&ÊE&?~޽ ~1bپFڸqW옱*ڵj׉'RW'lE V9߲e *ɀ Hjʍ*愡Cu?0al)ȱt~K8$nΟ?G67 oO7}i+5J*U4:{waga cF[;eׯ_Hڵk)yyyc:F:>{ԩ;ex{oO'Pm۶ُ8ƇۡC|1?܀B;ݳgHNx4R?6/K-%ye8)w||իW ,h֬c|8iwMmZM< v=#}c9o!C+znʶrʄ%-xd rFV^yW^4s͛4huԹs[|A߿Skݺ8/^\\\L>L ̙ѣGL>kfOAxG/PXXȇM6wܲeKFHlk&O=J wݸq;N>H˖->|-:kzjSfp8ķH-|#={t\ݛRԩڢ@CO8fi)~P$s,=N+4*-ς!rBw&-Aw92 @zJMRJ*}+T=>m۶/]-… SLG{Ru&ß={6n8 c4 gC۷oذa|~ѯJo=qD<~={Ӈ x/ӹs炩SjիGj1kkի[je3g^o6f+pcּysC .]QȺI&'!|X:?n21>mkzÇϘ1aΚ5СCvλQny毾꣏>B>*4b?dQ:/^L/jذ!}Ȅ_~me18Ak˗&f-\Rh po_.!۳gI!qUj29fS2(3g"T?#ר{/o\tvڅ;3 1{6mӧr|*AN+ynJbf}.|Ů]; ToP^{£J*UTiڹi,>|%aq~ 3n AaQ۷N8m۶>e^v--Z_痲dQ(ƥ/>}w?lOƠ0aQ4萟xf\& !$ /K.6 ڦrbԩS;v;:c7ݙ5f޼uoNp  D0˜d "G%PD"#@ @DF & `D9|;;޻{ViNU]받4im6)<)Y\#JJɽw%f`m_*Ͷm/())tT.T+)MQjݻw<::}~|mPW^pIVE+..&ݾ}[,3GB233멪>oܸ5Zlyfp.^XXX(kyؕ,n@˂,`'j0&ݻwkP!/z7oaԪD㗪.}H,0Ʈ\SREJjJ/Iw #ʀzsuXL[RTTϿIG/~ߞ>a9gyg_`Q^^fܹyGbp-ٳ'SԩӨQ]”j:0me$-B[ZM=a|ۻwo9\Z3u+b7s1?="u tMmXXŷ]'R9M-KTAB||zނuݻwO| Q%Zl:)ŋ[0lhC sY @`K#{ Q< -tALuQT S\w5k ]cХPU^pAL |x*b*-rr X6ӧOi)ӧ@gR@9g2eʔ)ׄv>~/ϊat2|p3R`5 0k#G5 &^t;w"1c0zR:>!fT<;R:G>zhzY,bX жm[3]!O>gZZfȑVO(|@I२N:,^AΝ} "S&E]$i̡~,r ,:6gU)MJPY @`R٨`ӧOsۼ\qSUiI=J<%jtDs*2HUi,IaVP-E?Hsgs`t ^<3<Ͽ.+{zS?=m>,݉DpyATTU/N8ٓϘ1vAjV8+F]&Mdl?#eHahG+?Q@S9)ʤ^zϗ.]J%))SG4nСC\6l%k7أG֮] ֲǏe>|xӦMt!bl[LZn A"LAH!CUX>pXSo2sYJ/J /XWX1a„6}o2eʔ)S + `q?>>zXM'K8vwR6r222\ma[0mR1̥Iqq1Z=*YAKHsMN>Z_sG׮])[%@FܳgK.s趡f͚ݽ{PxǸ!Ec={ЪZff&=]U٪ xybP0\۷O2q}fU|$I ҡ,R]dP0(sʀ%>`0^F+@qs/ܹ#;v Inݺ^PuN ɃJLL bٳgoi}&99zLRz3`|wG׭~#5޼y5|4M%*YM3Ay->DOCj̋,@`j,nI7d#4T*9J/JM^/vٳ77oޥK={߸qC0eʔ)S//}VV,L[F<36lǏۅ`t6R+Sgߨ$ 4,%(bKxx8v.10Y\`|btJ~*j[%L4 4~>3 ta@]& HÖ+8Y fi\\5X$It(AbW4tׯ_WLvp1 _t Na0gH&`1L~0֭[`R\.H1n Oۤ[n-z*!>7gL1@DDC]<(UVK 8 =Nҧd)d|N`)M_%fZ1//='՛`QQQW^066VKK+e1YԂqiMGI{#GTxzox@c۷o{URRB(/^LִFkSOܖ+e1Y fKqq]۷otKSOq+4ŠUjz+V~-%a`0 Sa^`֬Y#4iRNԨ$իW7kߗ` $ͧw~7nLQҷmi ܱc}4%9%MΝ;OǏ/,,KR2 v]r%҄'̙3$fDDސρ2[;Š^ d E_ &~?,Ν;@Z_~I[s{\ܹ#V̙3O> *ԟ5 ϡWٸqX0lh̲*ATe1h^`ZHٳ' {4}9)SL2eWy\D 3QX: E,o`H$11_Y7 )׷Œ o 2bP|ްaCHK`F=TbWW:D暖ضm8fKRTTD EqdpZ>j'|VWDGͭƤ`r  n:Xfd&z1Š`sQ~=mQhP0Q< FG_ pVV ֭^2t} `&x5_txС0Da00}ߑ#Gh_m ^ Ծ[ |ڏ1cƠ iӦYBܹsrrrzz:8}ڵ+"`~΄(={hH̢uzr.< 02Hkȏ?TJ5 :-RhРWcǎ%2`댨(UBB)77RkBKyAqqqjx7Dl z1ylNrdxГXwh(ÂqjL+`Uz{nMʜ{оϟC]v}UdfygȿQZZJ^$¬Xlذ‡ < ahjnf̘qMy Çì~*\dȐ!k׮ďBeTjO2} 6aɡ:-*.}Kr.<a:?p@.իڡC,^ŋi!h}%K Y,2[vbccW^m7Us̹w]^PK L۶m'::͛7Cf͚A>`ԨQ?^IcPHҘ5kր7 5jT111`Fo[l> rP.@!xj[N t -Zׯٳϝ;OK -nSƀJ,jUB}Z ҋ,C̔Z&}˼և *@;_P)[NJJŸ/;udJ] gygh`0 `03 `0 ; `0 x-jfygygygy``0 `xW_ygygygy+``0 `xv)SL2eʔ)SL2})3 `0 3eʔ)SL2eʔ)ׂAygygygy_IW2eʔ)SL2eʔkA;3<3<3<3+ 0SL2eʔ)SL2}-/L2eʔ)SL2eʔi%`<3<3<3<$+ݿɓأG޽{GGGgggٳ*)>SL%s@|!)S`wѫW/.N2eʔ)S/|d֬YC yɀ&Nx'q}V>|]w5 _'NЧ/l„ P0'=ztܹ111}C]d]9d}MKK.zv.?"..N#˲ebcc#""@/9uԀ~Q/3,crrrvzMfDK(U%veq*&tܽ{~AneQ_eqe=APϟ]`Ju9Ϊ``޶m[5?QÔ(--_~'xbK.4ׯc D п{^|YS'hС@ @ % 5nDDnݺBVZPoڴQFb0ն+رcL{f͚MPYbWnejszE }P}M4r >(j47C+_Ւql^oyd}9.,ң,-P^zk׮hԑ%{ݹs'a ^ <"u7o 7=,thb\pj̮^ѣXXu<3ϼH0ƳݻÓm۪aƏaj O41^;дiSk׮}E}xiM<(`tq޲e˩Sѣynn] 4ul֤RX<)A6lpђbռ10 Ν{~!))=ڕ,0sݳgOQQD] @GBCC/_@lZ3g"~yW5Әukɥ=Y;vRe`M*kС!7|ӳgOa\ϟOU#Phk*%0R;qpb={ve H.\ԯ_?##c`'cs+e"{ 1\Wnr,ٲ"J^d01eʔ)Ӏ3G_i9۸qc˸8穆W&`6o(1MOT '$$`K00W0>z2_i2/޿ ܣG  5. f:Z0;m4|Uvm˗i* \eʔ)|QAAw4~*hnFX/&LPqyi,YA2K'y쪜sXe-Yڳ Y7-- RCw%XpeqO8Ƃ .ahhժÓfsGY(۷WJc?-GKVKKGի'_tI(4y/3<*R| `i>Xve\]4{EX_!CO ixx81U~̘1aaa@.ímڴK.e˖v˖-|ѢE0IM ڶm+!S نeĂIeR-XN:0u:kbӧOt[o߾ӧCEDDDFFlc̙POB?x4`=uѱcGEN fx|ԨQ T#G/l߾I&⊐q3̭%A45;WedqdhԨKY@')[qAib"HVwQZƯAEXqw߾}+Q`0zs8Tlݺa, /K`}:xXW:Qa\_ Ӽys9˂Yk„ vСlR|޳gO5~ڵklò̔mԷt[~3w̙3շƷcǎRj*ڒ% <&թS'(Ɣ)SLN_`:;Ըq{:Ὧw<ˢs!:sE^zioRqRN50`>LKKv&~۳eFtsxt@ z*qio':x`qq18qqq0`e})L`*ޔ޽{l |tt4IۼE| 44˕ڇLiݬ]v3g\|fݺu#Uxb1\4Jd40Jx.a|XKG,7``0G,X0ӧOƍ} ۞3[N-A|ƍ n/%6pj 0.\ eǯAJaHy0*ׄ]]oڴ Ν;]5ks1 L4(\1Iӌ&"۔ ]d)#eawn̲wޖf 1K(b^ΝJUoe,[Z|vЁ>Wӗ,K@KȲA=dZRR><ή? vjW-Co. BҽӖ7hߏek,Y PcwX^ 6Fo(gy7_R0W! ?LU$h2MMM]FO G<3h ',4+vhq?a駟~RW+xx ފ?4NouF!|_rY,gؒ\1 +-m2dK_aG /AQ%AUP/݅eKyUi ,qCDNNƂ LxWTpԸ8}`B]T!E˒-AlD}k01 "F xMa0 i֬-c6yիW<ͨ~hhaäx e,v%/̍i 6mWwJ|}~sa(<( 믿{.ɓ'N)/W2md6H}P\Q5ǏƠAc'N=zRcT6/)n/d۷owYR\Ւ1 eR\Oe)߲ВjRΝ;hXhU~ @MСCexʕ 8.4 /~vZ5Sj:dfxڻ,Ve ھ~LR{fTK޵k4vZ+!QLH _1<̿KLYܹs48 S xW_I>OKzܹs'''{ &L[j5zh)[V AhCZ׮]a"ҩS'|;n8zNK@0Ts3f '=fY,=,~̤IǥgϞ/_0+_s`ZO;}t@oǎ >.M( J.,mUP%_Ǐ*vwK>UE|Wmb tɓ'[S*MN3E1E%iEZ%[J` F1`T^qܹva_yq####}ǎ3`1@:mZ4ߜ+m۳ݢ }Μ9jZS!hufW%w(PܟI N>MCZMW2 >335'Q 4\(%(ޫҡ,zd"husQ2Xm3?H@{ҥK^h0ؤx%ubb]0J/(@^SDDY,s nwQ?X֭[s]2 Qxx#GѲeK5 ͇!2}d%::Li:tbEvqɓ'5Ҝyly\`j1n~~>ѣ=f2):[qFK{&N}\>4ÍpRɓ'[l_Yt)Mz1+3il Wb8Գ1zN2}1EK #F4Kz.FQTJcY4<} p)qǎQAСƲML61YJCu˻qaZWaɓ'zݺujI]fa(Gr-q j_?EKvW0&,,D(&AaQ*̩gy_Ue]C+5 -+xx =?*,1Y:qiu5+غuk)kh!_ÉUb,"%Dm?Kelk,>>ޡQXPr hf6t(fL[m#zU,ⶉČ )k`[L(3EE@K60KQWCY젱dr/ wܡU,ⶉR*R-ZWsN8l0xQ*u6mPeV$HAѣǵknYA' **{.jcPvA.\|KFp;1 "6ltg0DXޤ9s fyJJGzOٳb/~p0őʶ}v|L) D۴i>La00M>;`'urJD՟.OE-!uE=`]Q0͹Y߀f) hVSG>Yђ;vh]Z^R+ȋ,0.jb_fdee[hP6腤G:L_+C-,]E JP0Rmc?&) p@GLS1򔔔P0?sLQL+gy/ ӧqЦMF\D OuJSys̱ J:te ԩSK"yժUMXv*{dddf` KQv%"ךԂ0{t544~Z߿hU<&K (Ilu^pC?;x1w\`g FGN:$ǏzC>tЌ3 ߿ĉۧOÇk׮2ի_~iii{ Bw|4E8ӦM (%,mLBJJ ÇwԵiӦtw6w^}f`W8)bxAh2_|?\Μ93{!C`{'3Kv⤇1 Nڋw: Kl%w2ist㙘1KeR)\cU{x˖- hҤIݺu<(fis00Y܏=֯_/7atl֬YHHH >#h6e[ вeKM^6lG4m͚5AѶhܮ1i PR{m{y}`6lA&_!;)öo0sWce%4ҺømrھϟiԖS2aP`~nY0gz/T0o չV+eՏUAVEoV7nlۥ 0La`999j.$̍ @zzݻ9ëN:pgZ`|U@zI0$)su_j  {Ⱦ{ѰaC+T1}t J8)ĉsEÇ[jI)#uӧAJ~2Ka[bJ{SNeffC]`9b\:Kz_uZi1h;'O!$m۶r޽{޽GUPP`à^x~W WfBڋ[ Q2؏EWQb^Rkߋ,ܵkK=^h\f}p2V/Cg%0{Jk>1v\z'P0/`cV:'QI)6*N(|cU`~D/1 PW^ZN'MQ)g꫌֭[;LgX/IBׯW.YD=ԸqcM:#""~g"rkcPť6eϟ?Qvy&[s, f^*, fPK52+%ԟ~hlÆ i<^nAvT]vyἇ1 \fTne1h/BXYlA2LcƋFdKTDw;-ɺbP/f3èzUUf?VƯJ|9T-}JÃl`}::t裏9Ƃa1V@g=l0:J[hU߾}-[B oݺuk׊j=ubIP 3p@ ~uzTLvf) ɈG8 K?`$"Fѧ !ta7J(m=iy)/_\pm7]vhcF  *M(`AAմ4 uW2˪^ژSJ1X08T07CjCy/ƅzunƍ:o߾¸8e޽+u}{+::۷/"͹YbxH>|yz屽dwÀmv6lp٫WBnݺshPH}^NڋÔ ic?*KJjjc/rjzھZ-,-ok}KJEa A0vW^Thc}25վ~@mNJ;<^4+** s*0ΝBҔp[nS8qW 0T 5p#N>"iM`1277Ńty3-4\{ !m^d 9?~\|uQ.8,f 4a1@G>}7nS=tW>{pZ2s Q(@xxtqV<0RoH+tZ56F%wr93gԇ"~;>`BfiP0KsX̹CMiG\xQ< & b]3yHHx3nC[͛-4f-JFWa 1c%}zUPې=F!;Xcj=TȀ⻵1B}U";3И~8!0ZSՏUTw\?*%h2, ׯ74af0AFÀ=vXݻh|Z0S._<;;%,*hDž9*C@BO{KfA'R?dL6 vMK7B~ԷC]VV=4F eKe֣\_y~s~^TG@fiP0KsX̹CPL"Υ{h3K\hÎϿ "oCEXZ2}dMLLAcЏ+Ub^sWA؆1 AEclHԋo`cj"l@cFI&*eqX/ B` t ~If͚8p204e*nNFMH e˖'DfSA9r<tRW1qȑ# F]ZfytTNfeBcǎtN>|8Sv? `y;IAF8;TQ(eJJs;v(֣\Aϟ_j#G4hP>}8 V, Rf`k97~x,_.===K.qv+nKаaC:jaq SKP-~ԇW(~0fݸ־,:7~ȋm v^4!0j!ؘ}5;;3Xu sر͛7'%%ѝ[TeU8 0ZSՏU<;\𰰰/!-LG:Rݺ}v֭[1b^^W^mѢxPn%]l撑!>G3m߾ r(>}/ADJw~LKJwݡ\dtDT]i ^na8Y2 -@w3f u~;YD, ONEc@_xU>WӤA||woxP;p͂hc$xђXB'O,͸^t҅ N8_}>8ŕ̲'hL,O?$ 6n8/Omۦqs7+Y #m\aC?Ȃ#ٳz{@CL&Zj vշo_#ŭ%h`bøLj޽{wܹH<׾y{!;+mВ:4v|1aj*;1hQQ-9N:5X8=ݻwX0/6FT)AUBF!}4@+vX۵kz3zCԩ0B_ qЕYhJg>x A)0 "n߾M|Gi@`y<]~vZ$%%ϙ3G}K9,QAD GDDCϐ OU6Frp@~P.]zE]DWUC G:96Kyl/s9}㧟aPmQCݴpX̟?,EPjjL;KVa Xbx%X*mb^H΍_%b(;X4dƲlL mṃTP2xI,E` X&zQK˖-~1^4::r#0.ꬦC-{cI@/&>@= >vöNOiV0 8/=Jn[ +#ǷxIvƍjKBB[q ?L~P"V6&&76F d T=~6R`K 3 N7/Ҳ徐<S.^ )غuԷd mm]N9%41ɓahU޺uFM-9Ԙ%ϼoT܀jm?0J6}3Y %ү`㾁 ƭlE6Qc*?`b`* 6';M,g4@ ,f͛7+"E7OZX+pT?~?^6hР؋x +9'NqqӦM߻woLGOlNص}`R &[a;:%`xW㾨15Xi0=A4V\hc}eqR/y`ÈZ\a:N Cb^T?VZF8t=l5x?ԯ|>z111߽{kΝuq"[x5%%%ǎ޿~=ov׮]4M6l7`/__-Maaav@jĹ%SXnӦd+W⋩Sj0󃩿%%]vjͣQTK,O-ZWWIJݻ'==]|+]Vh{qƾ{*tJM*_jV|{9rUfv|WxpBMh%<-- *c`4ɓ'[.Xz-<Сm46k N<4E5g"@|HvB01g?9BwAOJ=_~ 8~KZMfW m(Dy/<<\/9( (]y>}BKΝ;C զMh%6}ۂo/fTr־2` :cǎrGiխ[Oebl2#577cǎ/:ט[K`4 $cDjڵ1110ښclPfm/ƯRx Ak1lxԘ*k$1G6W^M4Oza**ͦp/ aÆ6cBU+`[Tvi)ܸqCz;tP/+ؕL_w}o>Sh&Mtw`oݐr?q⽋Ѓ :uz =_\@^):DOxYQR͛7MYkֈ?yPkf?t%,Ν?YY+g[`Ex,"V 0*]SA-'ezIc:3($+ݺublE*3yDjjˡYz?Ӡb`N 0}+>믿,Dd0]!~)bf q-}1ƒ'F{;Q.4Ē~ba,=Ƭ+Y oPfm/j8+0A_6 4f6aUJeۻwo@%Lᤲ~*Њ:\RRhӦ͂ pơu։aoSONhut~,w >*ǏR\7*˗9 رcjxE3IjҥKJJ W^hPR';v޿Ccǎq裏*b/t~#G%{#33 W:D햲@="#jT3e3PDU%O􋊊;KY clceV?ZݻwǦ 0L>]j "e`Al/*/(~'MNks˸0ߒXR5ZEtt4xYR 4Qcshj\-dޠꊖ~Ld`k?(j/\{_V_ ]uH۲Iy/Fs_Ҙ^WlrھSH5!}C;{3aʼ٘>Jqߡ^31W~?V իxN/T8~ƍ+))Bujh90 bոI%h{d2oܸqĈ0֯_?$$`Ȑ!ׯן\x"(]v+,, E1Zk׮Lg֭]f > >>СCO<_)YYYnp9990N@v cV8IS\2336ld7w\{"y([K}8&&-[ 4H̓jҿr rs3P"'_tkc{1t `*[NNN'x 0,h` 2jѢEKƨIS+nۋ\ , mJ* w _Bd :M[^x1DI +PsΝ;ĪFzM !F|X_}ra(3N,@;3<3<3<3+Ww2eʔ)SL2eʔ)Ex%`ʔ)SL2eʔ)SL+#ogygygy%y^fʔ)SL2eʔ)S3L2eʔ)SL2e̔)SL2eʔ)SL_ ``0 `0^a 0SL2eʔ)SL2}-(3 `0 3agygygyUy^f0 `0 k>̔)SL2eʔ)SL_ + `0 x-ggygygy-x^f0 `0 kv `0 Z``0 `\k^ǿ[Ϙ2L_T=ma VKW-~;љo'CGx~Є7J[TclAqjNXQkZSO˾ /;ө.?w\⋚Y5g׈Us3kg5/O%ܻ73XĕM^]{:Vי—佔gXTɑrJ+`0 `07׿f<:O>Xoz;cL[X-)%ͭ6*o 6v9Kj<~y+kMx韖:vWq:y|ѾwԬkQ}:;O3'\;'͑of,N3xUdrow2<3<3<3_|V|oi VK_-1|_}Mإ&/3ߟ;s}Ϫ7z̐MFopsW8cCWe1M_#1/1 `0 *#h_ Tpʽߤy3j8of!_,ք&^p:y QSP]36:x7;kL|kLIjO$8ݔy5f6zƕ_f0 `0A ,-eΨjw9SW _Aė&8i,p@o;WSk3#gV]#fz5f6>Ad ㍛/?_NθewFC]+; `0 `o~¯L2eʔ)SL2e9}#)"^<ӣ wC^c.0ƻ7B/QP5:JW[+1f6L8:yan~޹wcf]k?\#fZcLS񖻾q3WcUάpVS?ZG}^)SL2eʔ)SL_R`ec)}*ͳVX[-ua<1^XdpUW+~VnW^wȋnu>vc'߮q4T=.&x#gV]_y]ӿ3N3g0uNC[Ʀ}\ L2eʔ)SL2et`/⪯p嬥}i .|)8uA)5F76띎C'v̿LlܸcИwb֌*{fHS']#Ϫ01ӪGM8<>u┮ߜUn2eʔ)SL2eʔiiWRƝy3?~/aNW7BYR7ؿ:m!&)k{o?LĜZwŸGL=Z p}˝^x4Vr I|7`V⧂eprܽWk)SL2eʔ)SLV ?=?}Ѡa}1Skx'~vyZrnEi輚skB`pqGͪ4fʼwGΨ;ș5f&{7{t sjY d̴'UT'>m.QcZGDW;px_|B0eʔ)SL2eʔ)Ӡ`]9<^ya.S:ة5G I qvw_k̯5:g{yM̯4ח0vRNyuSSՃs'ͩ8^z#Bb2 ްi7Xcwk*d=0<3<3<3_i XFaݹw=wu|ipF)gJ*5y򜰤9 s~lG6J Km 4Mk6fc4O O:?|9j;%lĄÆ Zor3=]{L2eʔ)SL2eգ/ 0Q:m~w`Q]n-vQ,J/h޻Ɗ]( (* vػX &?[3gw}gϞ]9}JasL,\ GnfmST*JRTh uHw&-mU`.5ey٫:sУ~=8tt6׽˼5{vzXk>] lt㠥/8DE^}yv Vnv*l׏wST*JRT*5{3/>1nSf=J6RyWe &.isnpm%^x7 ^qӦ+7\;eX1# ݧU:7=n fvPc )SfO`0 `0,W'n}(ײM]mu*Ӽg6*tZ~:X/v{C6 r\r`Ψd,00ȸU MkرL%ݥ_3~RT*JRT^N?-oR^F]iײ0 ڗOiVAu(ɇw> wN;жal\N~j]A2:kըy {5nuP^CEI+`0 `I$`3)O㫷 ͱOިӰmoէ|u7jҥ|ͺTiؾB射/YآH֥~nWQMkӨUTjݧ"= {X3N2:w̙3gΜ9s̙3gA.'cWd*T}*PUonwҨ)!>^<^ ږC&]4QjӷRZ-}h>r``0 гЅ{k˫_V} eC28rv+ߪIͽ"; ;iܹTeawqqaU:yqFG7Ixt .̚JRT*JR:aUfV/6jQV8ͤD^cM:ܪQUuu8LӨs&]4QMrW:ܸh^zW5ƤȊ8`TS3 `0 `cMv6(㖙/11Mct*_EI%cv+ѢaU1ڸϸ&V0Xʃ'4pLӈ 4 `0 gCxӁS\&y Nf㖙Yl6b٠iMuD.CZ2N/sߪOfsL~M~u>hِCf~ 4 `0 C7x4w W).dlrKF/2m{11Ҳm*'| u; .uDŞM28Й1>9Cg`2|F!G^f0 `0 2fLtp5b&|K,F76۬~c: ׵/Wdn#+wbAMͮ>bXl>hzՑaE``0 п)ϟÍO9\c;x*I+-`/r馽ǚݻ/@s!W}"s%Vc%֣X6lcY|kZLe-2}E˺Xr~ٍ-g-^eO_m}2^,c`0 `U$#  }ˇs`^y.F,ݻ"+]/8F sRT*JRTjPswn||kp—; `0 [+T*JRT*JH̙3gΜ9s̙3g<[\RT*JRT^`0 `0 FzWT*JRT*j#RT*JRT*5T,B|fΜ9s̙3gΜ9s̳e`*JRT*J`*JRT*JrJRT*JRz9s̙3gΜ9s̙E`*JRT*J~Xs̙3gΜ9s̙3g-sST*JRT*U/= `0 `d 0JRT*JRB 1 `0 a ݻRs̙3gΜ9s̙3grW!B!l 0!B!B!B^@L!B!D/&B!B!B h !B!4B!B`B!B!z 0!B!B!B^@L!B!D/&B!B!B h !B!4B!B`B!B!z 0!B!B!B^@L!B!D/u* w4] B!N41r.ya-Xo-iHASBJwd>D*g {٧}umW_%B!'`VbuG9GZ[/m Ƿ3}cu"oLͪ065Vߦ_ТdWJ4Viܲ=F{L5!B!d0:obvDm1CK=q!ޣ/^=~K"x{%o9R{q[;LPubl6a\fd1ZPTy>Sض'`jܐ|7[&B!G €5ؿ@>%9O9un>|vlc}[Ђc9-cbaAӊ7$rRmk׊j0b+?\uz5-B!BHf8.8+9KeWDy%!ܩkr]ᄥYkю*@c-Q`DBkShhLMXo5ȑY]V^'j|ßo9ӷ6!B!D= 5Ӷ1?OyO7jr%2<% JUPE?\yR}!zhG0I --Ѽ{\P_|O*+[:zre;T[Poq&romB!B>cXJŽ{&kr<9}^[uZh`P,VI YSTS'9'gхⓨ*[&jr&;JXoUG NLڄB!}F p@ |ہgT,Jr_>v_׮\psgaWĠߢN :s:Lk)kPЬȓ3ANW `Kϣ(O+O\auIQ #+'^)m>=Zo:<%Ay4ɵL!B!`6w..N~!kW8x`ւE׶uVZY5i]mgLs?h?1l0+-ާuBh^9rXd^(?hAƓWo3𥨆_!A U p^9/1*d]~*s{z2of+v+ey>Jض~7xi\n-=[o-ն?V2!B!d:cbdn磯(-xǏ>rfjYE~-G6ܰ עOM{ qȑGWB߼]{fݼxKe Z~K#g.T\\eG oek]Tj70xaR Ӫl(+ϑ#G%vFVT*T5s%F&y M'2!B!dbvDt s;Eךٓl[v,մk>c]RmZE[~a<jxk몌ߖnժy[>}U2=6[{׹E`QOl.7*oOѸx1֛X{ J0v4oB!B201v"m?tﻷoNXRЪ͖X=&T眍D|ΡfN;::̼e?{ZNSQKd~L&B!-n:l˗/,'O,}D,=l>gl=??ZQ(A9̰պcnkLc?zd_ƶb}J&B!8<}[E̻Zj1ٻ|{].˖pe[Ա:Q}Gο>nG"0!B!:`?[.ظkӛ޼^汮i.l\VϯH)͜WJw9rr6h !B!D|͜.+?u;*Ooi}}&B JςrVY6ೠ !B!o:,wY}i 7!k~.j]2[bCJm>}߭ןmB!WZgI ^xdVc_h6z^pv[Ŋ]&Lu)&#gL IzuB!!j~aV,twJf5!>m|bwG|1=[0(RTSѰYW1ȑSvo *GM'>DY['`Y>PqѩT(13^ͻ㫂f5Uзh/,MdޖG|>W]r}WߤXFce@$ .Hx4_Ė\ U4MvHX.=8:KU)lcX^}t/Yi Q 9J4w59{Q,n`</cVPiHLpv&iE#bJk /(_Nvy.H.K{Ѳb#)X%7$rw;QjP/SC_B:Zr3]B!,M`B&ynCϟ?M(4lǏ7[{]QA,N^U3֒3՗nśtQmՏXzQ?H bQNF_ ыT\mfQmS\6|=Sm\Nx4_WNQ3_U\}()٪R qUyY+TtJ%8$IjىWVb_/o<ɫWGpB!di˗k,r=l*ډuU/*^wxQ;M8Z$A1,7+o?&BҤm}<׷o^{۷;e N\<[7QV7ފQwkmꪺ tҥi5lUp62d^?oSnsPмVCsUĭNxT&3&ڒcY?Wo[Qu_d83JsNLJ/l_7!B7ibGZ%Cڼ}۫WL3?jÏM?7?}0i F7u?Ɵ1NW,䓇!RQ3gƦS_Q54v*ƙ56i5m ZoOU5EP3M(U]( pZtvbՐp !BH&] eۭa 7;&k =|0nƜҿ-}*cgsTO4=qWdUj7$ʓ|%te.R2귩7vQW?m N]JibpmܭgUjqj+ʓ4ƓŷFCgoU 0(IQFXzP:M*k{e6ķf+v'53i8m pkķ}'|~ G7ҝ?V[NÝNLh !BRF:'_42W/12i'햋~aP+5l\I޻[k|k,t5ҽI+&tyAVu5|Uz]@Q8FT[eV.(qS wLbkkfp<2oOY?WKϰ7WmZ5!YWikS02iӵډIW 0!BHHOm:sǽ}atw덡[><6v[iYkLV޽{5GS4-f™qzCP\2 ,bSj_#ŕoW%u&\ebiY;d#p +.XD|SGxRHOJHvFuf%u v;QjIL!2_l5Cl*+k<gӪ# dA N(DfUfQƖ``%[ʙ'Fͫ/٦zDڍS|b ;2d)T Pck d$v> +L!zf)J{ݐ|+OM)YSMMh;1sw:!BE p䏺k`(\2:Kٗl+G%\/lEӼ3};dih !BY'׊h 0!BH#k'. lU4r&)O9}Hٖ>2+l0%:-dY'gqwM=LB!D0>r޽{4B!Hg\s̻w `O_ ]1v[iiC0ڿș? 0!B!d9l=jNXDd4uևnl5䅰41WڎB!BH p;hǪ/ >m^Il?kɾ&xl -.n`s?f;B!BHI_l1˔%N^HC _HH_ǾV}P`B!Bm{qCa߽J??>zp faE$B!B!' p˶-}73j»oNXe0"w!B!ԓ8n{QN%1>9E XB!=HO, f9ӹu5pޗϟ᳚AvtZ7B!BH!} r*4=ҥ7bucTo_h閮AB!Bmeo|l] ?%&z`~^2aQAf7 !B!$;80qjjWa?ufDxt~`Q+ߢ{ՉNG0f.B!BHv" p_k%v됐Ї{&!c&Z_1~ͫ>};S W2ׯ(_znֵN;m|gB!B~d]m=buPUC  Ϝ9}ʕ݆}O^>w0-Ѳz/ӪW!3Ly[z~ !B!$8Pll|ZUe<±|Z(^u:MJnTvRҥ5t^1ɡl_d?O^ԲTn <|NYk-\[{ƨW>B!BH$c p~v"l.Yo:cl,u&V^h<|na*Sߞ>ySb_ssLCʴn2fْm-\,VH`#|B!B7deK2#Z愷G0[K6>,v6c5w >|A^e: 笍4g,e[G(//!B!g%dNAt~>ݿno޲ծumUbuXΕd~S? 1{{_~;Zt,q`5l|/PxU揙9s̙3gΜ9s̙g\GWa믛7n2iΨ3Xz !B!D ^\ v3;6wFM4c_X M\eΜ9s̙3gΜ9sZ纷e\ XiC.*{VB!BHIXwFe-gW?~N#o@.JRT*JRYQulXnEX2_]ȫ|!B!ԣs+5H5#jdT*JRT*@:ׁwD f]'Ɯ9s̙3gΜ9s̳f{+T*JRT*J=B!BH:`*JRT*JdT*JRT*J 0JRT*JRB,>3gΜ9s̙3gΜ9s2 0JRT*JRBy0JRT*JRBe+9s̙3gΜ9s̙3ϖ9WT*JRT*ř3gΜ9s̙3gΜ9˹LRT*JRTЯB!B!ST*JRT*U/+B!BD,0s̙3gΜ9s̙3g]sB!B x0JRT*JRBL!B!D/&B!ʕkذa[lqtt,Tpꇝpww700^W>}U|Fqǎk׮ussڳgOP?cӦMԚ5k`V^ vLS aDafru`z˖-ܺu  ϝ;'$WRŋFv<߿2eܼy 0r .J=9q8Q믆ǎO7o^zuQ+WŋKcu8 .M-1cƠel"e}0K.F:tP^=$F*YCa6޽+H)KkѢ40ѝD`i`5󲷷/TP`` '<6ܹs\א1}f& lҤIb7x`Μ9s̙3gΜyZ~MXXju7o ; /w}Y9ׯ_}7c;w11}llC6]v%WAϟ?êIX(<9ڹ|2q)6mdd pE/Кxqqgr ,ʣa#?~"B2bSNU߲BҥL<666o޼Iܹy JN5ԩ!''&MZ VF"Ж[P\V^.e0 `0?y$\ݻaN`gPY3Ņt0)___,7778|S[9s̙3gΜ9s闧jڵkE XbHVFqO x:99y{{ޯ\~f8 |ƍlC?X,BB8[`ɀbH;v+< 0q˖-X)]d.x( S-̳`iɵ,Ʒ0ɰ={aFt_~3TBѾ&7/1TŗjbE >`0 `w۷O, 4[]^^^pƙdS0AAAu&snݺu5jԐ̞֭[7h@ׯ+^;O~o0Ǐ Q.%B9o߾H֯_4Qi&ӧ166yٲeyM'ײvvv˙3'ksȁGPR#F\ LMw륯 .L`0 `d0'}6|2\_@@ x`2_\'uä05q3n_z`q36Bj!rt++8.gggAqQrg`daP Ippda;x߬Y3Gߨܻw ZCy޼y-Zϙ E>^R UN2)yaӡS ,w `0 F֊THBE?! 0V;ٳCZO6-W\i`0 `02>RupTTdwi;u84օkٙS~ҥRJӋ);ccΜ9s̙3gΜVyjWw޽e˖۷kku,52&s8ϟo߾}֭o^`0 `0t9 pyaʘ8FmHRT*JRԌT m6U(yᄧDIhhhtttLL y=^vaA9N+0+X@FS4 Xe~aEh̙3K/``P[5agh%m`0 `0T+`Jfnv˖-gϞzjdd$'<#>|Ç ={`w+C===`p_Ì_{׮]O~:. `՝;wn޼aOrvc#ɠRT*JRTz52Z0`U''X7n0G9v yv^ʏ= [u=< 0 X_m۷o߿ܹsG : =u/\CBB`}EvЈFH6dΜ9s̙3gΜ9svvp_*nݽ{+W'9aocbbܹs;}1ԁ=/|2Tx]kŅHaJN30VAAAQQQpp qڵ[n%{I>|޽{a1ZDЦ45[n7 fRT*JRT*5c=V90p !]޺u Ν;P8g@»w>|_?ԩS+|Wt'x4,[ zH/^;-7F۷>l/ł0* aF0Bh1SLY}$ YL JRT Y__+""6 8&&F\Z,x"~k׮W‹ܹs0r7o^vƍ0n^,a^t-Bh)51* U#X/_?~\,0۱(#Tm0PS ,MS`tS Eҽ{5jm6~ذa5>mfs2Pr]#L|јlZtd<'ye\9s̙3gyVϟ?/`$۶m uo>",, CŰ*lC+e:g{3g{.mf?U<#ʥ] #LoU40$JJRT*5s5UFjnٲE`8R?ڵkZXʷoĠ< ` a;7n(rQŋ^¯ٳ'$$$::zǎV$+ 0BGcbT0O>#_PÐ  / 0&~N6i;~xgx}󀏘cnjժSɎ;_'R;تra3ڴi#~{ža7o:5kl۶e˰Mӧ?f͚8l.ѩTעM !C1qFIYdɳgHchР*Ko=:hG*+-I.Hx4_cҥؒ\NA8qBi W Z+c~Μ97Oիypul7Q=bHCҳDWJ9ضm#6cݺuq'WIN_>Æ TQ:,{-Q^P(YUǣ'gTGukTwkx̠/4HtM{~Jcd^l$s̙3gΜyyjW?Ʃu͚5sEs) S<k{W8mmѽq|}y ?LhtSs%,] #wϟ&W8vڅs%իWHtt4NśîOdX)p&3`sM8 Slj;kݺu x4_qjJ>I~rjΜ9S|{rg6C?۷ԑROR4(ߢMյJX366V|R_Lſ?xQ~q8%SƩ1$|sJk8/MҩT*JR5T|aa sU ,>xÇNnѣGa5-2j3**ʕ+0Swwwaѯdx0pһ,|jyf ,+ rJL>\Ǐ߹s'aCDwZ`llCJFHg5jڴ):v͛7[h! 1/uD9f#ꈸ|8-ׂU5řk```Æ Q?c7`S`b7aOiTY+Ӑ??۷/Z_j}Ҍ탑cYj ǞЬY3l4 T UwAƣR7i# ǘIT'9_m }ԩ#Hfٲe-?^llFTFb&M$_4+G#SZRN.q}' XYk{Xjg屧~ϦNIFK?7ͮ `0TvnܸP< Ng'NNNd %06m5===pŋX$?W(0=Q_!َ|xGWAAA111HFˊ S?l933̗gw&\Ւ%K+A:X.y43F@N eƇsrgrʼngџ.ao GQ9ܼjmmuâ@ߙthz5|ו`Rlҹ9%頥%+i0 0%O80TeXUU eLmhh.{J!qCϟ'zXN}7RJnضmW;`"]vI}cPR>w\OOLCCCt~qNa*aMᅮn b9*WNk/.p82П.k}`uDt?]C̲etgpsU8\gxE~'N?aEwoMX> #uuuFҮۈȵ;22=vNwBUZř3gc+cq>|X|X$#?^yyV${q1䗀S?q n^nuvvd0k_j~iMMVXIj4 Y}ҦY=JTŊMۡ!Tk.\ VPޑF'ٳg;;;O>?=b F.Rbp7VOO}r6Bj'Ot~z埪Dmd  `FRs1WɎݰv[eh'4RT(ݭ[1'ݘ8$:(JN:%u&O*Ao_g3!w7UJ3~zj=|t'O ۷oO@MS!2ҭ=|7N?I3W"g߰PN]]]NLZ+rp0sÆ 2gν甤.aaK:EHsAGLtbv-Jixboo/ݯ^{2r dpk`Qֶms]~aCfIIIQQѪUsN':X d {?̊޼yϝ;jpBj/„yG(5P[><:v9s?ҥK:7o{گ֭[؂(? 4&)'B/\0Cni0g͚9,8w٪? ~/U?3Lpa<́[1-P'I=tEԟ?$tDv6 0 #]r{Ak baYQQ:ohhy``رcHV5-Kک_+IL@E3Wj@C]]]Hk\]Y0bխ%KMb/_;ԩS%%%/믿/()8}[ZZZ1MpK͛_}O<5483x+V,͙f4 pH-7,\t'^r{= ʕ+QYD;=_ o8gC2Ofh\O4-xͽD.aaK, o>hj%NġCIsW*Ow$*0Pmmm-?Ԡݛ H)Cykg4M<%00zO:TG?G',%HxzJXƅ,Iچ'`Jx|McD~+~ڄ61Hi'B:S@tkcڛȿ0:c3<#$]~=c%3f`0+=ؕ+W-R+|wǛiW'9?gΜLD2'1ܛгsJAKqo `0 0%q^*FVz;Zr!)~zhmɡEԯ*%o}{zwxv0&ACkk>[_̸xD+++sg¢E7n|Nױ._z5(V .裏]Fyeq]aҥG՟oO>pB7mIII@Ʊ7wbU?Oe87is2BBr:b /1H}A&Y|۹uoD|̙qݺujMZӆaaq/o맳|!%_L VF psWvsɸaaaIAo߾5XgШyώ;0t߼ywޙ7oރ>8w^{6 ###<;i[fqŦ~ 0 0iH:X!O+6 0 0 Ø*w%+ &MU `h0 0 0)J >K* m۶e˖1j&5GILp6 0 0 Ø  ٺukEE?=eEiibY@eeet&ion0 0 0 c F &R'lڴikVP͛׮].))ɮ7nXUUN+ІaaaS"u@:rE~@r抈͢d0U!鉺N-laa1UrEG^IENDB`fdroidserver-1.0.9/tests/metadata/fake.ota.update.txt0000664000175000017500000000270613302025213022555 0ustar hanshans00000000000000Categories:System License:Apache-2.0 Web Site:https://f-droid.org Source Code:https://gitlab.com/fdroid/privileged-extension Issue Tracker:https://gitlab.com/fdroid/privileged-extension/issues Donate:https://f-droid.org/about Auto Name:Fake OTA Update Summary:Tests whether OTA ZIP files are being include Description: F-Droid can make use of system privileges or permissions to install, update and remove applications on its own. The only way to obtain those privileges is to become a system app. This is where the Privileged Extension comes in - being a separate app and much smaller, it can be installed as a system app and communicate with the main app via AIDL IPC. This has several advantages: * Reduced disk usage in the system partition * System updates don't remove F-Droid * The process of installing into system via root is safer This is packaged as an OTA (Over-The-Air) update ZIP file. It must be installed using TWRP or other Android recovery that can flash updates to the system from the /data/data/org.fdroid.fdroid folder on the /data partition. The standalone APK is called F-Droid Privileged Extension. . Repo Type:git Repo:https://gitlab.com/fdroid/privileged-extension.git Build:0.2.1,2000 commit=0.2.1 output=app/build/distributions/FDroidPrivilegedExtensionFromBinaries-$$VERSION$$.zip build=gradle assembleUpdateZipFromBinariesDebug Auto Update Mode:Version %v Update Check Mode:Tags Current Version:0.2.1 Current Version Code:2000 fdroidserver-1.0.9/tests/metadata/raw.template.txt0000664000175000017500000000015213243530567022221 0ustar hanshans00000000000000License:Unknown Web Site: Source Code: Issue Tracker: Changelog: Summary:Template Description: Template . fdroidserver-1.0.9/tests/metadata/obb.main.oldversion.txt0000664000175000017500000000040113303240575023455 0ustar hanshans00000000000000Categories:Development License:GPL-3.0-only Source Code:https://github.com/eighthave/urzip Bitcoin:1Fi5xUHiAPRKxHvyUGVFGt9extBe8Srdbk Auto Name:OBB Main Old Version Repo Type:git Repo:https://github.com/eighthave/urzip.git Current Version Code:99999999 fdroidserver-1.0.9/tests/metadata/obb.mainpatch.current.txt0000664000175000017500000000041313303240575023776 0ustar hanshans00000000000000Categories:Development License:GPL-3.0-only Source Code:https://github.com/eighthave/urzip Bitcoin:1Fi5xUHiAPRKxHvyUGVFGt9extBe8Srdbk Auto Name:OBB Main+Patch Current Version Repo Type:git Repo:https://github.com/eighthave/urzip.git Current Version Code:99999999 fdroidserver-1.0.9/tests/metadata/app.with.special.build.params.txt0000664000175000017500000000432313303240575025345 0ustar hanshans00000000000000AntiFeatures:UpstreamNonFree Categories:System License:GPL-3.0-only Web Site: Source Code:https://github.com/loadrunner/Facebook-Contact-Sync Issue Tracker:https://github.com/loadrunner/Facebook-Contact-Sync/issues Auto Name:UberSync for Facebook Summary:Sync your Facebook Contacts Description: To configure, go to "Settings => Accounts & Sync => Add Account". Depending on how many friends you have, the first import might take a while, so be patient. * Facebook does not allow to export phone numbers or emails: only names, pictures and statuses are synced. * Facebook users have the option to block one or all apps: if they opt for that, they will be EXCLUDED from your friends list. Appbrain SDK was removed before building. . Repo Type:git Repo:https://github.com/loadrunner/Facebook-Contact-Sync.git Build:1.0.0,32 commit=b3879c973e7cac3a3319 Build:1.0.1,33 commit=252c8dd4c9 Build:1.2.0,39 commit=v1.2.0 patch=appbrain.patch srclibs=FacebookSDK@sdk-version-3.0.1 rm=libs/appbrain-sdk-android.jar prebuild=sed -i 's@\(reference.1=\).*@\1$$FacebookSDK$$@' project.properties && \ sed -i 's/Class\[\]/Class\\[\]/g' $$FacebookSDK$$/src/com/facebook/model/GraphObject.java Build:1.2.2,42 commit=v1.2.2 patch=appbrain.patch srclibs=FacebookSDK@sdk-version-3.0.2 rm=libs/appbrain-sdk-android.jar extlibs=android/android-support-v4.jar prebuild=mv libs/android-support-v4.jar $$FacebookSDK$$/libs/ && \ sed -i 's@\(reference.1=\).*@\1$$FacebookSDK$$@' project.properties && \ sed -i 's/Class\[\]/Class\\[\]/g' $$FacebookSDK$$/src/com/facebook/model/GraphObject.java Build:2.1.1,48 commit=2.1.1 patch=manifest-ads.patch,mobilecore.patch maven=yes srclibs=FacebookSDK@sdk-version-3.0.2 Build:2.1.1-b,49 commit=2.1.1 patch=manifest-ads.patch,mobilecore.patch maven=yes@.. srclibs=FacebookSDK@sdk-version-3.0.2 Build:2.1.1-c,50 commit=2.1.1 patch=manifest-ads.patch,mobilecore.patch maven=2 srclibs=FacebookSDK@sdk-version-3.0.2 Build:2.1.2,51 disable=Labelled as pre-release, so skipped Archive Policy:0 versions Auto Update Mode:None Update Check Mode:None Current Version:2.1.2 Current Version Code:49 fdroidserver-1.0.9/tests/metadata/org.videolan.vlc.yml0000664000175000017500000005722613323343071022757 0ustar hanshans00000000000000Categories: - Multimedia License: GPL-3.0-only WebSite: http://www.videolan.org/vlc/download-android.html SourceCode: http://git.videolan.org/?p=vlc-ports/android.git;a=summary IssueTracker: "http://www.videolan.org/support/index.html#bugs" Donate: "http://www.videolan.org/contribute.html#money" AutoName: VLC Summary: Media player Description: | Video and audio player that supports a wide range of formats, for both local and remote playback. [http://git.videolan.org/?p=vlc-ports/android.git;a=blob_plain;f=NEWS NEWS] RepoType: git Repo: git://git.videolan.org/vlc-ports/android.git builds: - versionName: 0.0.11-ARMv7 versionCode: 110 commit: 0.0.11 subdir: vlc-android forceversion: yes forcevercode: yes prebuild: sed -i '48d' ../Makefile androidupdate: - . - ../java-libs/SlidingMenu - ../java-libs/ActionBarSherlock build: cd ../ && ANDROID_ABI=armeabi-v7a ./compile.sh release buildjni: no - versionName: 0.0.11-ARM versionCode: 111 commit: 0.0.11 subdir: vlc-android forceversion: yes forcevercode: yes prebuild: sed -i '48d' ../Makefile androidupdate: - . - ../java-libs/SlidingMenu - ../java-libs/ActionBarSherlock build: cd ../ && ANDROID_ABI=armeabi ./compile.sh release buildjni: no - versionName: 0.0.11-x86 versionCode: 112 disable: ffmpeg error 0.0.11 commit: unknown - see disabled subdir: vlc-android forceversion: yes forcevercode: yes prebuild: sed -i '48d' ../Makefile androidupdate: - . - ../java-libs/SlidingMenu - ../java-libs/ActionBarSherlock build: cd ../ && ANDROID_ABI=x86 ./compile.sh release buildjni: no - versionName: 0.0.11-mips versionCode: 113 commit: 0.0.11 subdir: vlc-android forceversion: yes forcevercode: yes prebuild: sed -i '48d' ../Makefile androidupdate: - . - ../java-libs/SlidingMenu - ../java-libs/ActionBarSherlock build: cd ../ && ANDROID_ABI=mips ./compile.sh release buildjni: no - versionName: 0.1.3-MIPS versionCode: 1301 disable: build failing (at 0.1.3) commit: 0.1.3 subdir: vlc-android patch: ndkr9.patch srclibs: VLC@7c52aacbe forceversion: yes forcevercode: yes prebuild: sed -i '/ant/d' ../Makefile && ln -s vlc-android/$$VLC$$ ../vlc build: cd ../ && ANDROID_ABI=mips ./compile.sh release buildjni: no - versionName: 0.1.3-x86 versionCode: 1302 commit: 0.1.3 subdir: vlc-android patch: ndkr9.patch srclibs: VLC@7c52aacbe forceversion: yes forcevercode: yes prebuild: sed -i '/ant/d' ../Makefile && ln -s vlc-android/$$VLC$$ ../vlc build: cd ../ && ANDROID_ABI=x86 ./compile.sh release buildjni: no - versionName: 0.1.3-ARM versionCode: 1303 commit: 0.1.3 subdir: vlc-android patch: ndkr9.patch srclibs: VLC@7c52aacbe forceversion: yes forcevercode: yes prebuild: sed -i '/ant/d' ../Makefile && ln -s vlc-android/$$VLC$$ ../vlc build: cd ../ && ANDROID_ABI=armeabi ./compile.sh release buildjni: no - versionName: 0.1.3-ARMv7 versionCode: 1304 commit: 0.1.3 subdir: vlc-android patch: ndkr9.patch srclibs: VLC@7c52aacbe forceversion: yes forcevercode: yes prebuild: sed -i '/ant/d' ../Makefile && ln -s vlc-android/$$VLC$$ ../vlc build: cd ../ && ANDROID_ABI=armeabi-v7a ./compile.sh release buildjni: no - versionName: 0.9.0 versionCode: 9002 commit: 0.9.0 subdir: vlc-android srclibs: VLC@31ffb20309264994 forcevercode: yes prebuild: sed -i '/ant/d' ../Makefile && ln -s vlc-android/$$VLC$$ ../vlc build: cd ../ && ANDROID_ABI=x86 ./compile.sh release buildjni: no - versionName: 0.9.0 versionCode: 9004 commit: 0.9.0 subdir: vlc-android srclibs: VLC@31ffb20309264994 forcevercode: yes prebuild: sed -i '/ant/d' ../Makefile && ln -s vlc-android/$$VLC$$ ../vlc build: cd ../ && ANDROID_ABI=armeabi-v7a ./compile.sh release buildjni: no - versionName: 0.9.1 versionCode: 9102 commit: 0.9.1 subdir: vlc-android srclibs: VLC@37e886d113b8b567c15208579fb2f forcevercode: yes prebuild: sed -i '/ant/d' ../Makefile && ln -s vlc-android/$$VLC$$ ../vlc build: cd ../ && ANDROID_ABI=x86 ./compile.sh release buildjni: no - versionName: 0.9.1 versionCode: 9104 commit: 0.9.1 subdir: vlc-android srclibs: VLC@37e886d113b8b567c15208579fb2f forcevercode: yes prebuild: sed -i '/ant/d' ../Makefile && ln -s vlc-android/$$VLC$$ ../vlc build: cd ../ && ANDROID_ABI=armeabi-v7a ./compile.sh release buildjni: no - versionName: 0.9.5 versionCode: 9502 disable: can't download gmp commit: 0.9.5 subdir: vlc-android srclibs: VLC@052600173f376ff58ff04d53746961a2 forcevercode: yes prebuild: sed -i '/ant/d' ../Makefile && ln -s vlc-android/$$VLC$$ ../vlc build: cd ../ && ANDROID_ABI=x86 ./compile.sh release buildjni: no - versionName: 0.9.5 versionCode: 9504 disable: can't download gmp commit: 0.9.5 subdir: vlc-android srclibs: VLC@052600173f376ff58ff04d53746961a2 forcevercode: yes prebuild: sed -i '/ant/d' ../Makefile && ln -s vlc-android/$$VLC$$ ../vlc build: cd ../ && ANDROID_ABI=armeabi-v7a ./compile.sh release buildjni: no - versionName: 0.9.6 versionCode: 9602 commit: 0.9.6 subdir: vlc-android srclibs: VLC-2.2@27f4799 forcevercode: yes prebuild: sed -i '/ant/d' ../Makefile && ln -s vlc-android/$$VLC-2.2$$ ../vlc build: cd ../ && ANDROID_ABI=x86 ./compile.sh release buildjni: no - versionName: 0.9.6 versionCode: 9604 commit: 0.9.6 subdir: vlc-android srclibs: VLC-2.2@27f4799 forcevercode: yes prebuild: sed -i '/ant/d' ../Makefile && ln -s vlc-android/$$VLC-2.2$$ ../vlc build: cd ../ && ANDROID_ABI=armeabi-v7a ./compile.sh release buildjni: no - versionName: 0.9.7 versionCode: 9702 commit: 0.9.7 subdir: vlc-android srclibs: VLC-2.2@9e1c6ff forcevercode: yes prebuild: sed -i '/ant/d' ../Makefile && ln -s vlc-android/$$VLC-2.2$$ ../vlc build: cd ../ && ANDROID_ABI=x86 ./compile.sh release buildjni: no - versionName: 0.9.7 versionCode: 9704 commit: 0.9.7 subdir: vlc-android srclibs: VLC-2.2@9e1c6ff forcevercode: yes prebuild: sed -i '/ant/d' ../Makefile && ln -s vlc-android/$$VLC-2.2$$ ../vlc build: cd ../ && ANDROID_ABI=armeabi-v7a ./compile.sh release buildjni: no - versionName: 0.9.7.1 versionCode: 9711 disable: build fails commit: 0.9.7.1 subdir: vlc-android srclibs: VLC-2.2@57cd36b forcevercode: yes prebuild: sed -i '/ant/d' ../Makefile && ln -s vlc-android/$$VLC-2.2$$ ../vlc build: cd ../ && ANDROID_ABI=mips ./compile.sh release buildjni: no - versionName: 0.9.7.1 versionCode: 9712 commit: 0.9.7.1 subdir: vlc-android srclibs: VLC-2.2@57cd36b forcevercode: yes prebuild: sed -i '/ant/d' ../Makefile && ln -s vlc-android/$$VLC-2.2$$ ../vlc build: cd ../ && ANDROID_ABI=x86 ./compile.sh release buildjni: no - versionName: 0.9.7.1 versionCode: 9714 commit: 0.9.7.1 subdir: vlc-android srclibs: VLC-2.2@57cd36b forcevercode: yes prebuild: sed -i '/ant/d' ../Makefile && ln -s vlc-android/$$VLC-2.2$$ ../vlc build: cd ../ && ANDROID_ABI=armeabi-v7a ./compile.sh release buildjni: no - versionName: 0.9.8 versionCode: 9802 commit: 0.9.8 subdir: vlc-android srclibs: VLC-2.2@f2db364 forcevercode: yes prebuild: sed -i '/ant/d' ../Makefile && ln -s vlc-android/$$VLC-2.2$$ ../vlc build: cd ../ && ANDROID_ABI=x86 ./compile.sh release buildjni: no - versionName: 0.9.8 versionCode: 9803 commit: 0.9.8 subdir: vlc-android srclibs: VLC-2.2@f2db364 forcevercode: yes prebuild: sed -i '/ant/d' ../Makefile && ln -s vlc-android/$$VLC-2.2$$ ../vlc build: cd ../ && ANDROID_ABI=armeabi ./compile.sh release buildjni: no - versionName: 0.9.8 versionCode: 9804 commit: 0.9.8 subdir: vlc-android srclibs: VLC-2.2@f2db364 forcevercode: yes prebuild: sed -i '/ant/d' ../Makefile && ln -s vlc-android/$$VLC-2.2$$ ../vlc build: cd ../ && ANDROID_ABI=armeabi-v7a ./compile.sh release buildjni: no - versionName: 0.9.9 versionCode: 9902 commit: 0.9.9 subdir: vlc-android srclibs: VLC-2.2@e731dc23a4f8ef6782c7cc2236bbbf41c034dad1 forcevercode: yes prebuild: sed -i '/ant/d' ../Makefile && ln -s vlc-android/$$VLC-2.2$$ ../vlc build: cd ../ && ANDROID_ABI=x86 ./compile.sh release buildjni: no - versionName: 0.9.9 versionCode: 9903 commit: 0.9.9 subdir: vlc-android srclibs: VLC-2.2@e731dc23a4f8ef6782c7cc2236bbbf41c034dad1 forcevercode: yes prebuild: sed -i '/ant/d' ../Makefile && ln -s vlc-android/$$VLC-2.2$$ ../vlc build: cd ../ && ANDROID_ABI=armeabi ./compile.sh release buildjni: no - versionName: 0.9.9 versionCode: 9904 commit: 0.9.9 subdir: vlc-android srclibs: VLC-2.2@e731dc23a4f8ef6782c7cc2236bbbf41c034dad1 forcevercode: yes prebuild: sed -i '/ant/d' ../Makefile && ln -s vlc-android/$$VLC-2.2$$ ../vlc build: cd ../ && ANDROID_ABI=armeabi-v7a ./compile.sh release buildjni: no - versionName: 0.9.10 versionCode: 10002 commit: 0.9.10 subdir: vlc-android srclibs: VLC-2.2@e33e5de forcevercode: yes prebuild: sed -i '/ant/d' ../Makefile && ln -s vlc-android/$$VLC-2.2$$ ../vlc build: cd ../ && ANDROID_ABI=x86 ./compile.sh release buildjni: no - versionName: 0.9.10 versionCode: 10003 commit: 0.9.10 subdir: vlc-android srclibs: VLC-2.2@e33e5de forcevercode: yes prebuild: sed -i '/ant/d' ../Makefile && ln -s vlc-android/$$VLC-2.2$$ ../vlc build: cd ../ && ANDROID_ABI=armeabi ./compile.sh release buildjni: no - versionName: 0.9.10 versionCode: 10004 commit: 0.9.10 subdir: vlc-android srclibs: VLC-2.2@e33e5de forcevercode: yes prebuild: sed -i '/ant/d' ../Makefile && ln -s vlc-android/$$VLC-2.2$$ ../vlc build: cd ../ && ANDROID_ABI=armeabi-v7a ./compile.sh release buildjni: no #0.9.10 vercodes were off - versionName: 1.0.0 versionCode: 10006 disable: doesn't build commit: 1.0.0 subdir: vlc-android srclibs: VLC-2.2@036010e forcevercode: yes prebuild: sed -i '/ant/d' ../Makefile && ln -s vlc-android/$$VLC-2.2$$ ../vlc build: cd ../ && ANDROID_ABI=x86 ./compile.sh release buildjni: no #0.9.10 vercodes were off - versionName: 1.0.0 versionCode: 10007 disable: doesn't build commit: 1.0.0 subdir: vlc-android srclibs: VLC-2.2@036010e forcevercode: yes prebuild: sed -i '/ant/d' ../Makefile && ln -s vlc-android/$$VLC-2.2$$ ../vlc build: cd ../ && ANDROID_ABI=armeabi ./compile.sh release buildjni: no #0.9.10 vercodes were off - versionName: 1.0.0 versionCode: 10008 disable: doesn't build commit: 1.0.0 subdir: vlc-android srclibs: VLC-2.2@036010e forcevercode: yes prebuild: sed -i '/ant/d' ../Makefile && ln -s vlc-android/$$VLC-2.2$$ ../vlc build: cd ../ && ANDROID_ABI=armeabi-v7a ./compile.sh release buildjni: no - versionName: 1.0.1 versionCode: 10102 commit: 1.0.1 subdir: vlc-android srclibs: VLC-2.2@59409d5 forcevercode: yes prebuild: sed -i '/ant/d' ../Makefile && ln -s vlc-android/$$VLC-2.2$$ ../vlc build: cd ../ && ANDROID_ABI=x86 ./compile.sh release buildjni: no - versionName: 1.0.1 versionCode: 10103 commit: 1.0.1 subdir: vlc-android srclibs: VLC-2.2@59409d5 forcevercode: yes prebuild: sed -i '/ant/d' ../Makefile && ln -s vlc-android/$$VLC-2.2$$ ../vlc build: cd ../ && ANDROID_ABI=armeabi ./compile.sh release buildjni: no - versionName: 1.0.1 versionCode: 10104 commit: 1.0.1 subdir: vlc-android srclibs: VLC-2.2@59409d5 forcevercode: yes prebuild: sed -i '/ant/d' ../Makefile && ln -s vlc-android/$$VLC-2.2$$ ../vlc build: cd ../ && ANDROID_ABI=armeabi-v7a ./compile.sh release buildjni: no - versionName: 1.1.3 versionCode: 1010303 commit: 1.1.3 subdir: vlc-android gradle: VanillaARMv6fpu srclibs: VLC@a9b19e4 prebuild: sed -i -e '/^TARGET/aexit 0' -e 's@\-d \"gradle\/wrapper\"@1@g' ../compile.sh && ln -s vlc-android/$$VLC$$ ../vlc build: cd ../ && ./compile.sh -a "armeabi" --release buildjni: no ndk: r10d - versionName: 1.1.3 versionCode: 1010304 commit: 1.1.3 subdir: vlc-android gradle: VanillaARMv7 srclibs: VLC@a9b19e4 prebuild: sed -i -e '/^TARGET/aexit 0' -e 's@\-d \"gradle\/wrapper\"@1@g' ../compile.sh && ln -s vlc-android/$$VLC$$ ../vlc build: cd ../ && ./compile.sh -a "armeabi-v7a" --release buildjni: no ndk: r10d - versionName: 1.1.3 versionCode: 1010305 commit: 1.1.3 subdir: vlc-android gradle: VanillaX86 srclibs: VLC@a9b19e4 prebuild: sed -i -e '/^TARGET/aexit 0' -e 's@\-d \"gradle\/wrapper\"@1@g' ../compile.sh && ln -s vlc-android/$$VLC$$ ../vlc build: cd ../ && ./compile.sh -a "x86" --release buildjni: no ndk: r10d - versionName: 1.1.5 versionCode: 1010503 commit: 1.1.5 subdir: vlc-android gradle: VanillaARMv6fpu srclibs: VLC@e6b4585 prebuild: sed -i -e '/^TARGET/aexit 0' -e 's@\-d \"gradle\/wrapper\"@1@g' ../compile.sh && ln -s vlc-android/$$VLC$$ ../vlc build: cd ../ && ./compile.sh -a "armeabi" --release buildjni: no ndk: r10d - versionName: 1.1.5 versionCode: 1010504 commit: 1.1.5 subdir: vlc-android gradle: VanillaARMv7 srclibs: VLC@e6b4585 prebuild: sed -i -e '/^TARGET/aexit 0' -e 's@\-d \"gradle\/wrapper\"@1@g' ../compile.sh && ln -s vlc-android/$$VLC$$ ../vlc build: cd ../ && ./compile.sh -a "armeabi-v7a" --release buildjni: no ndk: r10d - versionName: 1.1.5 versionCode: 1010505 commit: 1.1.5 subdir: vlc-android gradle: VanillaX86 srclibs: VLC@e6b4585 prebuild: sed -i -e '/^TARGET/aexit 0' -e 's@\-d \"gradle\/wrapper\"@1@g' ../compile.sh && ln -s vlc-android/$$VLC$$ ../vlc build: cd ../ && ./compile.sh -a "x86" --release buildjni: no ndk: r10d - versionName: 1.1.6 versionCode: 1010603 commit: 1.1.6 subdir: vlc-android gradle: VanillaARMv6fpu srclibs: VLC@551b670 prebuild: sed -i -e '/^TARGET/aexit 0' -e 's@\-d \"gradle\/wrapper\"@1@g' ../compile.sh && ln -s vlc-android/$$VLC$$ ../vlc build: cd ../ && ./compile.sh -a "armeabi" --release buildjni: no ndk: r10d - versionName: 1.1.6 versionCode: 1010604 commit: 1.1.6 subdir: vlc-android gradle: VanillaARMv7 srclibs: VLC@551b670 prebuild: sed -i -e '/^TARGET/aexit 0' -e 's@\-d \"gradle\/wrapper\"@1@g' ../compile.sh && ln -s vlc-android/$$VLC$$ ../vlc build: cd ../ && ./compile.sh -a "armeabi-v7a" --release buildjni: no ndk: r10d - versionName: 1.1.6 versionCode: 1010605 commit: 1.1.6 subdir: vlc-android gradle: VanillaX86 srclibs: VLC@551b670 prebuild: sed -i -e '/^TARGET/aexit 0' -e 's@\-d \"gradle\/wrapper\"@1@g' ../compile.sh && ln -s vlc-android/$$VLC$$ ../vlc build: cd ../ && ./compile.sh -a "x86" --release buildjni: no ndk: r10d - versionName: 1.2.0 versionCode: 1020003 commit: 1.2.0 subdir: vlc-android gradle: VanillaARMv6fpu srclibs: VLC@23c8d86 prebuild: sed -i -e '/^TARGET/aexit 0' -e 's@\-d \"gradle\/wrapper\"@1@g' ../compile.sh && ln -s vlc-android/$$VLC$$ ../vlc build: cd ../ && ./compile.sh -a "armeabi" --release buildjni: no ndk: r10d - versionName: 1.2.0 versionCode: 1020004 commit: 1.2.0 subdir: vlc-android gradle: VanillaARMv7 srclibs: VLC@23c8d86 prebuild: sed -i -e '/^TARGET/aexit 0' -e 's@\-d \"gradle\/wrapper\"@1@g' ../compile.sh && ln -s vlc-android/$$VLC$$ ../vlc build: cd ../ && ./compile.sh -a "armeabi-v7a" --release buildjni: no ndk: r10d - versionName: 1.2.0 versionCode: 1020005 commit: 1.2.0 subdir: vlc-android gradle: VanillaX86 srclibs: VLC@23c8d86 prebuild: sed -i -e '/^TARGET/aexit 0' -e 's@\-d \"gradle\/wrapper\"@1@g' ../compile.sh && ln -s vlc-android/$$VLC$$ ../vlc build: cd ../ && ./compile.sh -a "x86" --release buildjni: no ndk: r10d - versionName: 1.2.1 versionCode: 1020103 commit: 1.2.1 subdir: vlc-android gradle: VanillaARMv6fpu srclibs: VLC@23c8d86 prebuild: sed -i -e '/^TARGET/aexit 0' -e 's@\-d \"gradle\/wrapper\"@1@g' ../compile.sh && ln -s vlc-android/$$VLC$$ ../vlc build: cd ../ && ./compile.sh -a "armeabi" --release buildjni: no ndk: r10d - versionName: 1.2.1 versionCode: 1020104 commit: 1.2.1 subdir: vlc-android gradle: VanillaARMv7 srclibs: VLC@23c8d86 prebuild: sed -i -e '/^TARGET/aexit 0' -e 's@\-d \"gradle\/wrapper\"@1@g' ../compile.sh && ln -s vlc-android/$$VLC$$ ../vlc build: cd ../ && ./compile.sh -a "armeabi-v7a" --release buildjni: no ndk: r10d - versionName: 1.2.1 versionCode: 1020105 commit: 1.2.1 subdir: vlc-android gradle: VanillaX86 srclibs: VLC@23c8d86 prebuild: sed -i -e '/^TARGET/aexit 0' -e 's@\-d \"gradle\/wrapper\"@1@g' ../compile.sh && ln -s vlc-android/$$VLC$$ ../vlc build: cd ../ && ./compile.sh -a "x86" --release buildjni: no ndk: r10d - versionName: 1.2.2 versionCode: 1020203 commit: 1.2.2 subdir: vlc-android gradle: VanillaARMv6fpu srclibs: VLC@7491a5f prebuild: sed -i -e '/^TARGET/aexit 0' -e 's@\-d \"gradle\/wrapper\"@1@g' ../compile.sh && ln -s vlc-android/$$VLC$$ ../vlc build: cd ../ && ./compile.sh -a "armeabi" --release buildjni: no ndk: r10d - versionName: 1.2.2 versionCode: 1020204 commit: 1.2.2 subdir: vlc-android gradle: VanillaARMv7 srclibs: VLC@7491a5f prebuild: sed -i -e '/^TARGET/aexit 0' -e 's@\-d \"gradle\/wrapper\"@1@g' ../compile.sh && ln -s vlc-android/$$VLC$$ ../vlc build: cd ../ && ./compile.sh -a "armeabi-v7a" --release buildjni: no ndk: r10d - versionName: 1.2.2 versionCode: 1020205 commit: 1.2.2 subdir: vlc-android gradle: VanillaX86 srclibs: VLC@7491a5f prebuild: sed -i -e '/^TARGET/aexit 0' -e 's@\-d \"gradle\/wrapper\"@1@g' ../compile.sh && ln -s vlc-android/$$VLC$$ ../vlc build: cd ../ && ./compile.sh -a "x86" --release buildjni: no ndk: r10d - versionName: 1.2.3 versionCode: 1020303 commit: 1.2.3 subdir: vlc-android gradle: VanillaARMv6fpu srclibs: VLC@7491a5f prebuild: sed -i -e '/^TARGET/aexit 0' -e 's@\-d \"gradle\/wrapper\"@1@g' ../compile.sh && ln -s vlc-android/$$VLC$$ ../vlc build: cd ../ && ./compile.sh -a "armeabi" --release buildjni: no ndk: r10d - versionName: 1.2.3 versionCode: 1020304 commit: 1.2.3 subdir: vlc-android gradle: VanillaARMv7 srclibs: VLC@7491a5f prebuild: sed -i -e '/^TARGET/aexit 0' -e 's@\-d \"gradle\/wrapper\"@1@g' ../compile.sh && ln -s vlc-android/$$VLC$$ ../vlc build: cd ../ && ./compile.sh -a "armeabi-v7a" --release buildjni: no ndk: r10d - versionName: 1.2.3 versionCode: 1020305 commit: 1.2.3 subdir: vlc-android gradle: VanillaX86 srclibs: VLC@7491a5f prebuild: sed -i -e '/^TARGET/aexit 0' -e 's@\-d \"gradle\/wrapper\"@1@g' ../compile.sh && ln -s vlc-android/$$VLC$$ ../vlc build: cd ../ && ./compile.sh -a "x86" --release buildjni: no ndk: r10d - versionName: 1.2.4 versionCode: 1020403 commit: 1.2.4 subdir: vlc-android gradle: VanillaARMv6fpu srclibs: VLC@7491a5f prebuild: sed -i -e '/^TARGET/aexit 0' -e 's@\-d \"gradle\/wrapper\"@1@g' ../compile.sh && ln -s vlc-android/$$VLC$$ ../vlc build: cd ../ && ./compile.sh -a "armeabi" --release buildjni: no ndk: r10d - versionName: 1.2.4 versionCode: 1020404 commit: 1.2.4 subdir: vlc-android gradle: VanillaARMv7 srclibs: VLC@7491a5f prebuild: sed -i -e '/^TARGET/aexit 0' -e 's@\-d \"gradle\/wrapper\"@1@g' ../compile.sh && ln -s vlc-android/$$VLC$$ ../vlc build: cd ../ && ./compile.sh -a "armeabi-v7a" --release buildjni: no ndk: r10d - versionName: 1.2.4 versionCode: 1020405 commit: 1.2.4 subdir: vlc-android gradle: VanillaX86 srclibs: VLC@7491a5f prebuild: sed -i -e '/^TARGET/aexit 0' -e 's@\-d \"gradle\/wrapper\"@1@g' ../compile.sh && ln -s vlc-android/$$VLC$$ ../vlc build: cd ../ && ./compile.sh -a "x86" --release buildjni: no ndk: r10d - versionName: 1.2.5 versionCode: 1020503 commit: 1.2.5 subdir: vlc-android gradle: VanillaARMv6fpu srclibs: VLC@50accb8 prebuild: sed -i -e '/^TARGET/aexit 0' -e 's@\-d \"gradle\/wrapper\"@1@g' ../compile.sh && ln -s vlc-android/$$VLC$$ ../vlc build: cd ../ && ./compile.sh -a "armeabi" --release buildjni: no ndk: r10d - versionName: 1.2.5 versionCode: 1020504 commit: 1.2.5 subdir: vlc-android gradle: VanillaARMv7 srclibs: VLC@50accb8 prebuild: sed -i -e '/^TARGET/aexit 0' -e 's@\-d \"gradle\/wrapper\"@1@g' ../compile.sh && ln -s vlc-android/$$VLC$$ ../vlc build: cd ../ && ./compile.sh -a "armeabi-v7a" --release buildjni: no ndk: r10d - versionName: 1.2.5 versionCode: 1020505 commit: 1.2.5 subdir: vlc-android gradle: VanillaX86 srclibs: VLC@50accb8 prebuild: sed -i -e '/^TARGET/aexit 0' -e 's@\-d \"gradle\/wrapper\"@1@g' ../compile.sh && ln -s vlc-android/$$VLC$$ ../vlc build: cd ../ && ./compile.sh -a "x86" --release buildjni: no ndk: r10d - versionName: 1.2.6 versionCode: 1030003 commit: 1.2.6 subdir: vlc-android gradle: VanillaARMv6fpu srclibs: VLC@d59b81a prebuild: sed -i -e '/^TARGET/aexit 0' -e 's@\-d \"gradle\/wrapper\"@1@g' ../compile.sh && ln -s vlc-android/$$VLC$$ ../vlc build: cd ../ && ./compile.sh -a "armeabi" --release buildjni: no ndk: r10d - versionName: 1.2.6 versionCode: 1030004 commit: 1.2.6 subdir: vlc-android gradle: VanillaARMv7 srclibs: VLC@d59b81a prebuild: sed -i -e '/^TARGET/aexit 0' -e 's@\-d \"gradle\/wrapper\"@1@g' ../compile.sh && ln -s vlc-android/$$VLC$$ ../vlc build: cd ../ && ./compile.sh -a "armeabi-v7a" --release buildjni: no ndk: r10d - versionName: 1.2.6 versionCode: 1030005 commit: 1.2.6 subdir: vlc-android gradle: VanillaX86 srclibs: VLC@d59b81a prebuild: sed -i -e '/^TARGET/aexit 0' -e 's@\-d \"gradle\/wrapper\"@1@g' ../compile.sh && ln -s vlc-android/$$VLC$$ ../vlc build: cd ../ && ./compile.sh -a "x86" --release buildjni: no ndk: r10d MaintainerNotes: | Instructions and dependencies here: http://wiki.videolan.org/AndroidCompile see http://buildbot.videolan.org/builders/ for version code scheme The VLC srclib commit can be found out from TESTED_HASH value in compile.sh On new releases remove the updatecheck and force the CV to the last working build. This will make sure users don't get notified about the update until the final build from the BS has been reviewed and tested. Once done, undo those changes. # NEW BUILDS # +0: vanilla # +1: armv5 # +2: armv6nofpu # +3: armv6fpu # +4: armv7 # +5: x86 # +6: mips # +7: armv8 # +8: x86_64 # +9: mips64 # OLD BUILD SYSTEM # +0: - (upstream) # +1: mips # +2: x86 # +3: arm # +4: armv7 (CV) ArchivePolicy: 9 versions AutoUpdateMode: None UpdateCheckMode: Tags # Only use higher vercode ops, if we do build those arches VercodeOperation: "%c + 5" CurrentVersion: 1.2.6 CurrentVersionCode: 1030005 fdroidserver-1.0.9/tests/metadata/dump/0000775000175000017500000000000013324115531020012 5ustar hanshans00000000000000fdroidserver-1.0.9/tests/metadata/dump/org.videolan.vlc.yaml0000664000175000017500000014034613303240575024064 0ustar hanshans00000000000000AntiFeatures: [] ArchivePolicy: 9 versions AuthorEmail: null AuthorName: null AuthorWebSite: null AutoName: VLC AutoUpdateMode: None Binaries: null Bitcoin: null Categories: - Multimedia Changelog: '' CurrentVersion: 1.2.6 CurrentVersionCode: '1030005' Description: 'Video and audio player that supports a wide range of formats, for both local and remote playback. [http://git.videolan.org/?p=vlc-ports/android.git;a=blob_plain;f=NEWS NEWS] ' Disabled: null Donate: http://www.videolan.org/contribute.html#money FlattrID: null IssueTracker: http://www.videolan.org/support/index.html#bugs LiberapayID: null License: GPL-3.0-only Litecoin: null MaintainerNotes: 'Instructions and dependencies here: http://wiki.videolan.org/AndroidCompile see http://buildbot.videolan.org/builders/ for version code scheme The VLC srclib commit can be found out from TESTED_HASH value in compile.sh On new releases remove the updatecheck and force the CV to the last working build. This will make sure users don''t get notified about the update until the final build from the BS has been reviewed and tested. Once done, undo those changes. ' Name: null NoSourceSince: '' Provides: null Repo: git://git.videolan.org/vlc-ports/android.git RepoType: git RequiresRoot: false SourceCode: http://git.videolan.org/?p=vlc-ports/android.git;a=summary Summary: Media player Translation: '' UpdateCheckData: null UpdateCheckIgnore: null UpdateCheckMode: Tags UpdateCheckName: null VercodeOperation: '%c + 5' WebSite: http://www.videolan.org/vlc/download-android.html added: null builds: - androidupdate: - . - ../java-libs/SlidingMenu - ../java-libs/ActionBarSherlock antcommands: [] antifeatures: [] build: cd ../ && ANDROID_ABI=armeabi-v7a ./compile.sh release buildjni: [] buildozer: false commit: 0.0.11 disable: false encoding: null extlibs: [] forcevercode: true forceversion: true gradle: [] gradleprops: [] init: '' maven: false ndk: null novcheck: false oldsdkloc: false output: null patch: [] preassemble: [] prebuild: sed -i '48d' ../Makefile rm: [] scandelete: [] scanignore: [] srclibs: [] subdir: vlc-android submodules: false sudo: '' target: null timeout: null versionCode: '110' versionName: 0.0.11-ARMv7 - androidupdate: - . - ../java-libs/SlidingMenu - ../java-libs/ActionBarSherlock antcommands: [] antifeatures: [] build: cd ../ && ANDROID_ABI=armeabi ./compile.sh release buildjni: [] buildozer: false commit: 0.0.11 disable: false encoding: null extlibs: [] forcevercode: true forceversion: true gradle: [] gradleprops: [] init: '' maven: false ndk: null novcheck: false oldsdkloc: false output: null patch: [] preassemble: [] prebuild: sed -i '48d' ../Makefile rm: [] scandelete: [] scanignore: [] srclibs: [] subdir: vlc-android submodules: false sudo: '' target: null timeout: null versionCode: '111' versionName: 0.0.11-ARM - androidupdate: - . - ../java-libs/SlidingMenu - ../java-libs/ActionBarSherlock antcommands: [] antifeatures: [] build: cd ../ && ANDROID_ABI=x86 ./compile.sh release buildjni: [] buildozer: false commit: unknown - see disabled disable: ffmpeg error 0.0.11 encoding: null extlibs: [] forcevercode: true forceversion: true gradle: [] gradleprops: [] init: '' maven: false ndk: null novcheck: false oldsdkloc: false output: null patch: [] preassemble: [] prebuild: sed -i '48d' ../Makefile rm: [] scandelete: [] scanignore: [] srclibs: [] subdir: vlc-android submodules: false sudo: '' target: null timeout: null versionCode: '112' versionName: 0.0.11-x86 - androidupdate: - . - ../java-libs/SlidingMenu - ../java-libs/ActionBarSherlock antcommands: [] antifeatures: [] build: cd ../ && ANDROID_ABI=mips ./compile.sh release buildjni: [] buildozer: false commit: 0.0.11 disable: false encoding: null extlibs: [] forcevercode: true forceversion: true gradle: [] gradleprops: [] init: '' maven: false ndk: null novcheck: false oldsdkloc: false output: null patch: [] preassemble: [] prebuild: sed -i '48d' ../Makefile rm: [] scandelete: [] scanignore: [] srclibs: [] subdir: vlc-android submodules: false sudo: '' target: null timeout: null versionCode: '113' versionName: 0.0.11-mips - androidupdate: [] antcommands: [] antifeatures: [] build: cd ../ && ANDROID_ABI=mips ./compile.sh release buildjni: [] buildozer: false commit: 0.1.3 disable: build failing (at 0.1.3) encoding: null extlibs: [] forcevercode: true forceversion: true gradle: [] gradleprops: [] init: '' maven: false ndk: null novcheck: false oldsdkloc: false output: null patch: - ndkr9.patch preassemble: [] prebuild: sed -i '/ant/d' ../Makefile && ln -s vlc-android/$$VLC$$ ../vlc rm: [] scandelete: [] scanignore: [] srclibs: - VLC@7c52aacbe subdir: vlc-android submodules: false sudo: '' target: null timeout: null versionCode: '1301' versionName: 0.1.3-MIPS - androidupdate: [] antcommands: [] antifeatures: [] build: cd ../ && ANDROID_ABI=x86 ./compile.sh release buildjni: [] buildozer: false commit: 0.1.3 disable: false encoding: null extlibs: [] forcevercode: true forceversion: true gradle: [] gradleprops: [] init: '' maven: false ndk: null novcheck: false oldsdkloc: false output: null patch: - ndkr9.patch preassemble: [] prebuild: sed -i '/ant/d' ../Makefile && ln -s vlc-android/$$VLC$$ ../vlc rm: [] scandelete: [] scanignore: [] srclibs: - VLC@7c52aacbe subdir: vlc-android submodules: false sudo: '' target: null timeout: null versionCode: '1302' versionName: 0.1.3-x86 - androidupdate: [] antcommands: [] antifeatures: [] build: cd ../ && ANDROID_ABI=armeabi ./compile.sh release buildjni: [] buildozer: false commit: 0.1.3 disable: false encoding: null extlibs: [] forcevercode: true forceversion: true gradle: [] gradleprops: [] init: '' maven: false ndk: null novcheck: false oldsdkloc: false output: null patch: - ndkr9.patch preassemble: [] prebuild: sed -i '/ant/d' ../Makefile && ln -s vlc-android/$$VLC$$ ../vlc rm: [] scandelete: [] scanignore: [] srclibs: - VLC@7c52aacbe subdir: vlc-android submodules: false sudo: '' target: null timeout: null versionCode: '1303' versionName: 0.1.3-ARM - androidupdate: [] antcommands: [] antifeatures: [] build: cd ../ && ANDROID_ABI=armeabi-v7a ./compile.sh release buildjni: [] buildozer: false commit: 0.1.3 disable: false encoding: null extlibs: [] forcevercode: true forceversion: true gradle: [] gradleprops: [] init: '' maven: false ndk: null novcheck: false oldsdkloc: false output: null patch: - ndkr9.patch preassemble: [] prebuild: sed -i '/ant/d' ../Makefile && ln -s vlc-android/$$VLC$$ ../vlc rm: [] scandelete: [] scanignore: [] srclibs: - VLC@7c52aacbe subdir: vlc-android submodules: false sudo: '' target: null timeout: null versionCode: '1304' versionName: 0.1.3-ARMv7 - androidupdate: [] antcommands: [] antifeatures: [] build: cd ../ && ANDROID_ABI=x86 ./compile.sh release buildjni: [] buildozer: false commit: 0.9.0 disable: false encoding: null extlibs: [] forcevercode: true forceversion: false gradle: [] gradleprops: [] init: '' maven: false ndk: null novcheck: false oldsdkloc: false output: null patch: [] preassemble: [] prebuild: sed -i '/ant/d' ../Makefile && ln -s vlc-android/$$VLC$$ ../vlc rm: [] scandelete: [] scanignore: [] srclibs: - VLC@31ffb20309264994 subdir: vlc-android submodules: false sudo: '' target: null timeout: null versionCode: '9002' versionName: 0.9.0 - androidupdate: [] antcommands: [] antifeatures: [] build: cd ../ && ANDROID_ABI=armeabi-v7a ./compile.sh release buildjni: [] buildozer: false commit: 0.9.0 disable: false encoding: null extlibs: [] forcevercode: true forceversion: false gradle: [] gradleprops: [] init: '' maven: false ndk: null novcheck: false oldsdkloc: false output: null patch: [] preassemble: [] prebuild: sed -i '/ant/d' ../Makefile && ln -s vlc-android/$$VLC$$ ../vlc rm: [] scandelete: [] scanignore: [] srclibs: - VLC@31ffb20309264994 subdir: vlc-android submodules: false sudo: '' target: null timeout: null versionCode: '9004' versionName: 0.9.0 - androidupdate: [] antcommands: [] antifeatures: [] build: cd ../ && ANDROID_ABI=x86 ./compile.sh release buildjni: [] buildozer: false commit: 0.9.1 disable: false encoding: null extlibs: [] forcevercode: true forceversion: false gradle: [] gradleprops: [] init: '' maven: false ndk: null novcheck: false oldsdkloc: false output: null patch: [] preassemble: [] prebuild: sed -i '/ant/d' ../Makefile && ln -s vlc-android/$$VLC$$ ../vlc rm: [] scandelete: [] scanignore: [] srclibs: - VLC@37e886d113b8b567c15208579fb2f subdir: vlc-android submodules: false sudo: '' target: null timeout: null versionCode: '9102' versionName: 0.9.1 - androidupdate: [] antcommands: [] antifeatures: [] build: cd ../ && ANDROID_ABI=armeabi-v7a ./compile.sh release buildjni: [] buildozer: false commit: 0.9.1 disable: false encoding: null extlibs: [] forcevercode: true forceversion: false gradle: [] gradleprops: [] init: '' maven: false ndk: null novcheck: false oldsdkloc: false output: null patch: [] preassemble: [] prebuild: sed -i '/ant/d' ../Makefile && ln -s vlc-android/$$VLC$$ ../vlc rm: [] scandelete: [] scanignore: [] srclibs: - VLC@37e886d113b8b567c15208579fb2f subdir: vlc-android submodules: false sudo: '' target: null timeout: null versionCode: '9104' versionName: 0.9.1 - androidupdate: [] antcommands: [] antifeatures: [] build: cd ../ && ANDROID_ABI=x86 ./compile.sh release buildjni: [] buildozer: false commit: 0.9.5 disable: can't download gmp encoding: null extlibs: [] forcevercode: true forceversion: false gradle: [] gradleprops: [] init: '' maven: false ndk: null novcheck: false oldsdkloc: false output: null patch: [] preassemble: [] prebuild: sed -i '/ant/d' ../Makefile && ln -s vlc-android/$$VLC$$ ../vlc rm: [] scandelete: [] scanignore: [] srclibs: - VLC@052600173f376ff58ff04d53746961a2 subdir: vlc-android submodules: false sudo: '' target: null timeout: null versionCode: '9502' versionName: 0.9.5 - androidupdate: [] antcommands: [] antifeatures: [] build: cd ../ && ANDROID_ABI=armeabi-v7a ./compile.sh release buildjni: [] buildozer: false commit: 0.9.5 disable: can't download gmp encoding: null extlibs: [] forcevercode: true forceversion: false gradle: [] gradleprops: [] init: '' maven: false ndk: null novcheck: false oldsdkloc: false output: null patch: [] preassemble: [] prebuild: sed -i '/ant/d' ../Makefile && ln -s vlc-android/$$VLC$$ ../vlc rm: [] scandelete: [] scanignore: [] srclibs: - VLC@052600173f376ff58ff04d53746961a2 subdir: vlc-android submodules: false sudo: '' target: null timeout: null versionCode: '9504' versionName: 0.9.5 - androidupdate: [] antcommands: [] antifeatures: [] build: cd ../ && ANDROID_ABI=x86 ./compile.sh release buildjni: [] buildozer: false commit: 0.9.6 disable: false encoding: null extlibs: [] forcevercode: true forceversion: false gradle: [] gradleprops: [] init: '' maven: false ndk: null novcheck: false oldsdkloc: false output: null patch: [] preassemble: [] prebuild: sed -i '/ant/d' ../Makefile && ln -s vlc-android/$$VLC-2.2$$ ../vlc rm: [] scandelete: [] scanignore: [] srclibs: - VLC-2.2@27f4799 subdir: vlc-android submodules: false sudo: '' target: null timeout: null versionCode: '9602' versionName: 0.9.6 - androidupdate: [] antcommands: [] antifeatures: [] build: cd ../ && ANDROID_ABI=armeabi-v7a ./compile.sh release buildjni: [] buildozer: false commit: 0.9.6 disable: false encoding: null extlibs: [] forcevercode: true forceversion: false gradle: [] gradleprops: [] init: '' maven: false ndk: null novcheck: false oldsdkloc: false output: null patch: [] preassemble: [] prebuild: sed -i '/ant/d' ../Makefile && ln -s vlc-android/$$VLC-2.2$$ ../vlc rm: [] scandelete: [] scanignore: [] srclibs: - VLC-2.2@27f4799 subdir: vlc-android submodules: false sudo: '' target: null timeout: null versionCode: '9604' versionName: 0.9.6 - androidupdate: [] antcommands: [] antifeatures: [] build: cd ../ && ANDROID_ABI=x86 ./compile.sh release buildjni: [] buildozer: false commit: 0.9.7 disable: false encoding: null extlibs: [] forcevercode: true forceversion: false gradle: [] gradleprops: [] init: '' maven: false ndk: null novcheck: false oldsdkloc: false output: null patch: [] preassemble: [] prebuild: sed -i '/ant/d' ../Makefile && ln -s vlc-android/$$VLC-2.2$$ ../vlc rm: [] scandelete: [] scanignore: [] srclibs: - VLC-2.2@9e1c6ff subdir: vlc-android submodules: false sudo: '' target: null timeout: null versionCode: '9702' versionName: 0.9.7 - androidupdate: [] antcommands: [] antifeatures: [] build: cd ../ && ANDROID_ABI=armeabi-v7a ./compile.sh release buildjni: [] buildozer: false commit: 0.9.7 disable: false encoding: null extlibs: [] forcevercode: true forceversion: false gradle: [] gradleprops: [] init: '' maven: false ndk: null novcheck: false oldsdkloc: false output: null patch: [] preassemble: [] prebuild: sed -i '/ant/d' ../Makefile && ln -s vlc-android/$$VLC-2.2$$ ../vlc rm: [] scandelete: [] scanignore: [] srclibs: - VLC-2.2@9e1c6ff subdir: vlc-android submodules: false sudo: '' target: null timeout: null versionCode: '9704' versionName: 0.9.7 - androidupdate: [] antcommands: [] antifeatures: [] build: cd ../ && ANDROID_ABI=mips ./compile.sh release buildjni: [] buildozer: false commit: 0.9.7.1 disable: build fails encoding: null extlibs: [] forcevercode: true forceversion: false gradle: [] gradleprops: [] init: '' maven: false ndk: null novcheck: false oldsdkloc: false output: null patch: [] preassemble: [] prebuild: sed -i '/ant/d' ../Makefile && ln -s vlc-android/$$VLC-2.2$$ ../vlc rm: [] scandelete: [] scanignore: [] srclibs: - VLC-2.2@57cd36b subdir: vlc-android submodules: false sudo: '' target: null timeout: null versionCode: '9711' versionName: 0.9.7.1 - androidupdate: [] antcommands: [] antifeatures: [] build: cd ../ && ANDROID_ABI=x86 ./compile.sh release buildjni: [] buildozer: false commit: 0.9.7.1 disable: false encoding: null extlibs: [] forcevercode: true forceversion: false gradle: [] gradleprops: [] init: '' maven: false ndk: null novcheck: false oldsdkloc: false output: null patch: [] preassemble: [] prebuild: sed -i '/ant/d' ../Makefile && ln -s vlc-android/$$VLC-2.2$$ ../vlc rm: [] scandelete: [] scanignore: [] srclibs: - VLC-2.2@57cd36b subdir: vlc-android submodules: false sudo: '' target: null timeout: null versionCode: '9712' versionName: 0.9.7.1 - androidupdate: [] antcommands: [] antifeatures: [] build: cd ../ && ANDROID_ABI=armeabi-v7a ./compile.sh release buildjni: [] buildozer: false commit: 0.9.7.1 disable: false encoding: null extlibs: [] forcevercode: true forceversion: false gradle: [] gradleprops: [] init: '' maven: false ndk: null novcheck: false oldsdkloc: false output: null patch: [] preassemble: [] prebuild: sed -i '/ant/d' ../Makefile && ln -s vlc-android/$$VLC-2.2$$ ../vlc rm: [] scandelete: [] scanignore: [] srclibs: - VLC-2.2@57cd36b subdir: vlc-android submodules: false sudo: '' target: null timeout: null versionCode: '9714' versionName: 0.9.7.1 - androidupdate: [] antcommands: [] antifeatures: [] build: cd ../ && ANDROID_ABI=x86 ./compile.sh release buildjni: [] buildozer: false commit: 0.9.8 disable: false encoding: null extlibs: [] forcevercode: true forceversion: false gradle: [] gradleprops: [] init: '' maven: false ndk: null novcheck: false oldsdkloc: false output: null patch: [] preassemble: [] prebuild: sed -i '/ant/d' ../Makefile && ln -s vlc-android/$$VLC-2.2$$ ../vlc rm: [] scandelete: [] scanignore: [] srclibs: - VLC-2.2@f2db364 subdir: vlc-android submodules: false sudo: '' target: null timeout: null versionCode: '9802' versionName: 0.9.8 - androidupdate: [] antcommands: [] antifeatures: [] build: cd ../ && ANDROID_ABI=armeabi ./compile.sh release buildjni: [] buildozer: false commit: 0.9.8 disable: false encoding: null extlibs: [] forcevercode: true forceversion: false gradle: [] gradleprops: [] init: '' maven: false ndk: null novcheck: false oldsdkloc: false output: null patch: [] preassemble: [] prebuild: sed -i '/ant/d' ../Makefile && ln -s vlc-android/$$VLC-2.2$$ ../vlc rm: [] scandelete: [] scanignore: [] srclibs: - VLC-2.2@f2db364 subdir: vlc-android submodules: false sudo: '' target: null timeout: null versionCode: '9803' versionName: 0.9.8 - androidupdate: [] antcommands: [] antifeatures: [] build: cd ../ && ANDROID_ABI=armeabi-v7a ./compile.sh release buildjni: [] buildozer: false commit: 0.9.8 disable: false encoding: null extlibs: [] forcevercode: true forceversion: false gradle: [] gradleprops: [] init: '' maven: false ndk: null novcheck: false oldsdkloc: false output: null patch: [] preassemble: [] prebuild: sed -i '/ant/d' ../Makefile && ln -s vlc-android/$$VLC-2.2$$ ../vlc rm: [] scandelete: [] scanignore: [] srclibs: - VLC-2.2@f2db364 subdir: vlc-android submodules: false sudo: '' target: null timeout: null versionCode: '9804' versionName: 0.9.8 - androidupdate: [] antcommands: [] antifeatures: [] build: cd ../ && ANDROID_ABI=x86 ./compile.sh release buildjni: [] buildozer: false commit: 0.9.9 disable: false encoding: null extlibs: [] forcevercode: true forceversion: false gradle: [] gradleprops: [] init: '' maven: false ndk: null novcheck: false oldsdkloc: false output: null patch: [] preassemble: [] prebuild: sed -i '/ant/d' ../Makefile && ln -s vlc-android/$$VLC-2.2$$ ../vlc rm: [] scandelete: [] scanignore: [] srclibs: - VLC-2.2@e731dc23a4f8ef6782c7cc2236bbbf41c034dad1 subdir: vlc-android submodules: false sudo: '' target: null timeout: null versionCode: '9902' versionName: 0.9.9 - androidupdate: [] antcommands: [] antifeatures: [] build: cd ../ && ANDROID_ABI=armeabi ./compile.sh release buildjni: [] buildozer: false commit: 0.9.9 disable: false encoding: null extlibs: [] forcevercode: true forceversion: false gradle: [] gradleprops: [] init: '' maven: false ndk: null novcheck: false oldsdkloc: false output: null patch: [] preassemble: [] prebuild: sed -i '/ant/d' ../Makefile && ln -s vlc-android/$$VLC-2.2$$ ../vlc rm: [] scandelete: [] scanignore: [] srclibs: - VLC-2.2@e731dc23a4f8ef6782c7cc2236bbbf41c034dad1 subdir: vlc-android submodules: false sudo: '' target: null timeout: null versionCode: '9903' versionName: 0.9.9 - androidupdate: [] antcommands: [] antifeatures: [] build: cd ../ && ANDROID_ABI=armeabi-v7a ./compile.sh release buildjni: [] buildozer: false commit: 0.9.9 disable: false encoding: null extlibs: [] forcevercode: true forceversion: false gradle: [] gradleprops: [] init: '' maven: false ndk: null novcheck: false oldsdkloc: false output: null patch: [] preassemble: [] prebuild: sed -i '/ant/d' ../Makefile && ln -s vlc-android/$$VLC-2.2$$ ../vlc rm: [] scandelete: [] scanignore: [] srclibs: - VLC-2.2@e731dc23a4f8ef6782c7cc2236bbbf41c034dad1 subdir: vlc-android submodules: false sudo: '' target: null timeout: null versionCode: '9904' versionName: 0.9.9 - androidupdate: [] antcommands: [] antifeatures: [] build: cd ../ && ANDROID_ABI=x86 ./compile.sh release buildjni: [] buildozer: false commit: 0.9.10 disable: false encoding: null extlibs: [] forcevercode: true forceversion: false gradle: [] gradleprops: [] init: '' maven: false ndk: null novcheck: false oldsdkloc: false output: null patch: [] preassemble: [] prebuild: sed -i '/ant/d' ../Makefile && ln -s vlc-android/$$VLC-2.2$$ ../vlc rm: [] scandelete: [] scanignore: [] srclibs: - VLC-2.2@e33e5de subdir: vlc-android submodules: false sudo: '' target: null timeout: null versionCode: '10002' versionName: 0.9.10 - androidupdate: [] antcommands: [] antifeatures: [] build: cd ../ && ANDROID_ABI=armeabi ./compile.sh release buildjni: [] buildozer: false commit: 0.9.10 disable: false encoding: null extlibs: [] forcevercode: true forceversion: false gradle: [] gradleprops: [] init: '' maven: false ndk: null novcheck: false oldsdkloc: false output: null patch: [] preassemble: [] prebuild: sed -i '/ant/d' ../Makefile && ln -s vlc-android/$$VLC-2.2$$ ../vlc rm: [] scandelete: [] scanignore: [] srclibs: - VLC-2.2@e33e5de subdir: vlc-android submodules: false sudo: '' target: null timeout: null versionCode: '10003' versionName: 0.9.10 - androidupdate: [] antcommands: [] antifeatures: [] build: cd ../ && ANDROID_ABI=armeabi-v7a ./compile.sh release buildjni: [] buildozer: false commit: 0.9.10 disable: false encoding: null extlibs: [] forcevercode: true forceversion: false gradle: [] gradleprops: [] init: '' maven: false ndk: null novcheck: false oldsdkloc: false output: null patch: [] preassemble: [] prebuild: sed -i '/ant/d' ../Makefile && ln -s vlc-android/$$VLC-2.2$$ ../vlc rm: [] scandelete: [] scanignore: [] srclibs: - VLC-2.2@e33e5de subdir: vlc-android submodules: false sudo: '' target: null timeout: null versionCode: '10004' versionName: 0.9.10 - androidupdate: [] antcommands: [] antifeatures: [] build: cd ../ && ANDROID_ABI=x86 ./compile.sh release buildjni: [] buildozer: false commit: 1.0.0 disable: doesn't build encoding: null extlibs: [] forcevercode: true forceversion: false gradle: [] gradleprops: [] init: '' maven: false ndk: null novcheck: false oldsdkloc: false output: null patch: [] preassemble: [] prebuild: sed -i '/ant/d' ../Makefile && ln -s vlc-android/$$VLC-2.2$$ ../vlc rm: [] scandelete: [] scanignore: [] srclibs: - VLC-2.2@036010e subdir: vlc-android submodules: false sudo: '' target: null timeout: null versionCode: '10006' versionName: 1.0.0 - androidupdate: [] antcommands: [] antifeatures: [] build: cd ../ && ANDROID_ABI=armeabi ./compile.sh release buildjni: [] buildozer: false commit: 1.0.0 disable: doesn't build encoding: null extlibs: [] forcevercode: true forceversion: false gradle: [] gradleprops: [] init: '' maven: false ndk: null novcheck: false oldsdkloc: false output: null patch: [] preassemble: [] prebuild: sed -i '/ant/d' ../Makefile && ln -s vlc-android/$$VLC-2.2$$ ../vlc rm: [] scandelete: [] scanignore: [] srclibs: - VLC-2.2@036010e subdir: vlc-android submodules: false sudo: '' target: null timeout: null versionCode: '10007' versionName: 1.0.0 - androidupdate: [] antcommands: [] antifeatures: [] build: cd ../ && ANDROID_ABI=armeabi-v7a ./compile.sh release buildjni: [] buildozer: false commit: 1.0.0 disable: doesn't build encoding: null extlibs: [] forcevercode: true forceversion: false gradle: [] gradleprops: [] init: '' maven: false ndk: null novcheck: false oldsdkloc: false output: null patch: [] preassemble: [] prebuild: sed -i '/ant/d' ../Makefile && ln -s vlc-android/$$VLC-2.2$$ ../vlc rm: [] scandelete: [] scanignore: [] srclibs: - VLC-2.2@036010e subdir: vlc-android submodules: false sudo: '' target: null timeout: null versionCode: '10008' versionName: 1.0.0 - androidupdate: [] antcommands: [] antifeatures: [] build: cd ../ && ANDROID_ABI=x86 ./compile.sh release buildjni: [] buildozer: false commit: 1.0.1 disable: false encoding: null extlibs: [] forcevercode: true forceversion: false gradle: [] gradleprops: [] init: '' maven: false ndk: null novcheck: false oldsdkloc: false output: null patch: [] preassemble: [] prebuild: sed -i '/ant/d' ../Makefile && ln -s vlc-android/$$VLC-2.2$$ ../vlc rm: [] scandelete: [] scanignore: [] srclibs: - VLC-2.2@59409d5 subdir: vlc-android submodules: false sudo: '' target: null timeout: null versionCode: '10102' versionName: 1.0.1 - androidupdate: [] antcommands: [] antifeatures: [] build: cd ../ && ANDROID_ABI=armeabi ./compile.sh release buildjni: [] buildozer: false commit: 1.0.1 disable: false encoding: null extlibs: [] forcevercode: true forceversion: false gradle: [] gradleprops: [] init: '' maven: false ndk: null novcheck: false oldsdkloc: false output: null patch: [] preassemble: [] prebuild: sed -i '/ant/d' ../Makefile && ln -s vlc-android/$$VLC-2.2$$ ../vlc rm: [] scandelete: [] scanignore: [] srclibs: - VLC-2.2@59409d5 subdir: vlc-android submodules: false sudo: '' target: null timeout: null versionCode: '10103' versionName: 1.0.1 - androidupdate: [] antcommands: [] antifeatures: [] build: cd ../ && ANDROID_ABI=armeabi-v7a ./compile.sh release buildjni: [] buildozer: false commit: 1.0.1 disable: false encoding: null extlibs: [] forcevercode: true forceversion: false gradle: [] gradleprops: [] init: '' maven: false ndk: null novcheck: false oldsdkloc: false output: null patch: [] preassemble: [] prebuild: sed -i '/ant/d' ../Makefile && ln -s vlc-android/$$VLC-2.2$$ ../vlc rm: [] scandelete: [] scanignore: [] srclibs: - VLC-2.2@59409d5 subdir: vlc-android submodules: false sudo: '' target: null timeout: null versionCode: '10104' versionName: 1.0.1 - androidupdate: [] antcommands: [] antifeatures: [] build: cd ../ && ./compile.sh -a "armeabi" --release buildjni: [] buildozer: false commit: 1.1.3 disable: false encoding: null extlibs: [] forcevercode: false forceversion: false gradle: - VanillaARMv6fpu gradleprops: [] init: '' maven: false ndk: r10d novcheck: false oldsdkloc: false output: null patch: [] preassemble: [] prebuild: sed -i -e '/^TARGET/aexit 0' -e 's@\-d \"gradle\/wrapper\"@1@g' ../compile.sh && ln -s vlc-android/$$VLC$$ ../vlc rm: [] scandelete: [] scanignore: [] srclibs: - VLC@a9b19e4 subdir: vlc-android submodules: false sudo: '' target: null timeout: null versionCode: '1010303' versionName: 1.1.3 - androidupdate: [] antcommands: [] antifeatures: [] build: cd ../ && ./compile.sh -a "armeabi-v7a" --release buildjni: [] buildozer: false commit: 1.1.3 disable: false encoding: null extlibs: [] forcevercode: false forceversion: false gradle: - VanillaARMv7 gradleprops: [] init: '' maven: false ndk: r10d novcheck: false oldsdkloc: false output: null patch: [] preassemble: [] prebuild: sed -i -e '/^TARGET/aexit 0' -e 's@\-d \"gradle\/wrapper\"@1@g' ../compile.sh && ln -s vlc-android/$$VLC$$ ../vlc rm: [] scandelete: [] scanignore: [] srclibs: - VLC@a9b19e4 subdir: vlc-android submodules: false sudo: '' target: null timeout: null versionCode: '1010304' versionName: 1.1.3 - androidupdate: [] antcommands: [] antifeatures: [] build: cd ../ && ./compile.sh -a "x86" --release buildjni: [] buildozer: false commit: 1.1.3 disable: false encoding: null extlibs: [] forcevercode: false forceversion: false gradle: - VanillaX86 gradleprops: [] init: '' maven: false ndk: r10d novcheck: false oldsdkloc: false output: null patch: [] preassemble: [] prebuild: sed -i -e '/^TARGET/aexit 0' -e 's@\-d \"gradle\/wrapper\"@1@g' ../compile.sh && ln -s vlc-android/$$VLC$$ ../vlc rm: [] scandelete: [] scanignore: [] srclibs: - VLC@a9b19e4 subdir: vlc-android submodules: false sudo: '' target: null timeout: null versionCode: '1010305' versionName: 1.1.3 - androidupdate: [] antcommands: [] antifeatures: [] build: cd ../ && ./compile.sh -a "armeabi" --release buildjni: [] buildozer: false commit: 1.1.5 disable: false encoding: null extlibs: [] forcevercode: false forceversion: false gradle: - VanillaARMv6fpu gradleprops: [] init: '' maven: false ndk: r10d novcheck: false oldsdkloc: false output: null patch: [] preassemble: [] prebuild: sed -i -e '/^TARGET/aexit 0' -e 's@\-d \"gradle\/wrapper\"@1@g' ../compile.sh && ln -s vlc-android/$$VLC$$ ../vlc rm: [] scandelete: [] scanignore: [] srclibs: - VLC@e6b4585 subdir: vlc-android submodules: false sudo: '' target: null timeout: null versionCode: '1010503' versionName: 1.1.5 - androidupdate: [] antcommands: [] antifeatures: [] build: cd ../ && ./compile.sh -a "armeabi-v7a" --release buildjni: [] buildozer: false commit: 1.1.5 disable: false encoding: null extlibs: [] forcevercode: false forceversion: false gradle: - VanillaARMv7 gradleprops: [] init: '' maven: false ndk: r10d novcheck: false oldsdkloc: false output: null patch: [] preassemble: [] prebuild: sed -i -e '/^TARGET/aexit 0' -e 's@\-d \"gradle\/wrapper\"@1@g' ../compile.sh && ln -s vlc-android/$$VLC$$ ../vlc rm: [] scandelete: [] scanignore: [] srclibs: - VLC@e6b4585 subdir: vlc-android submodules: false sudo: '' target: null timeout: null versionCode: '1010504' versionName: 1.1.5 - androidupdate: [] antcommands: [] antifeatures: [] build: cd ../ && ./compile.sh -a "x86" --release buildjni: [] buildozer: false commit: 1.1.5 disable: false encoding: null extlibs: [] forcevercode: false forceversion: false gradle: - VanillaX86 gradleprops: [] init: '' maven: false ndk: r10d novcheck: false oldsdkloc: false output: null patch: [] preassemble: [] prebuild: sed -i -e '/^TARGET/aexit 0' -e 's@\-d \"gradle\/wrapper\"@1@g' ../compile.sh && ln -s vlc-android/$$VLC$$ ../vlc rm: [] scandelete: [] scanignore: [] srclibs: - VLC@e6b4585 subdir: vlc-android submodules: false sudo: '' target: null timeout: null versionCode: '1010505' versionName: 1.1.5 - androidupdate: [] antcommands: [] antifeatures: [] build: cd ../ && ./compile.sh -a "armeabi" --release buildjni: [] buildozer: false commit: 1.1.6 disable: false encoding: null extlibs: [] forcevercode: false forceversion: false gradle: - VanillaARMv6fpu gradleprops: [] init: '' maven: false ndk: r10d novcheck: false oldsdkloc: false output: null patch: [] preassemble: [] prebuild: sed -i -e '/^TARGET/aexit 0' -e 's@\-d \"gradle\/wrapper\"@1@g' ../compile.sh && ln -s vlc-android/$$VLC$$ ../vlc rm: [] scandelete: [] scanignore: [] srclibs: - VLC@551b670 subdir: vlc-android submodules: false sudo: '' target: null timeout: null versionCode: '1010603' versionName: 1.1.6 - androidupdate: [] antcommands: [] antifeatures: [] build: cd ../ && ./compile.sh -a "armeabi-v7a" --release buildjni: [] buildozer: false commit: 1.1.6 disable: false encoding: null extlibs: [] forcevercode: false forceversion: false gradle: - VanillaARMv7 gradleprops: [] init: '' maven: false ndk: r10d novcheck: false oldsdkloc: false output: null patch: [] preassemble: [] prebuild: sed -i -e '/^TARGET/aexit 0' -e 's@\-d \"gradle\/wrapper\"@1@g' ../compile.sh && ln -s vlc-android/$$VLC$$ ../vlc rm: [] scandelete: [] scanignore: [] srclibs: - VLC@551b670 subdir: vlc-android submodules: false sudo: '' target: null timeout: null versionCode: '1010604' versionName: 1.1.6 - androidupdate: [] antcommands: [] antifeatures: [] build: cd ../ && ./compile.sh -a "x86" --release buildjni: [] buildozer: false commit: 1.1.6 disable: false encoding: null extlibs: [] forcevercode: false forceversion: false gradle: - VanillaX86 gradleprops: [] init: '' maven: false ndk: r10d novcheck: false oldsdkloc: false output: null patch: [] preassemble: [] prebuild: sed -i -e '/^TARGET/aexit 0' -e 's@\-d \"gradle\/wrapper\"@1@g' ../compile.sh && ln -s vlc-android/$$VLC$$ ../vlc rm: [] scandelete: [] scanignore: [] srclibs: - VLC@551b670 subdir: vlc-android submodules: false sudo: '' target: null timeout: null versionCode: '1010605' versionName: 1.1.6 - androidupdate: [] antcommands: [] antifeatures: [] build: cd ../ && ./compile.sh -a "armeabi" --release buildjni: [] buildozer: false commit: 1.2.0 disable: false encoding: null extlibs: [] forcevercode: false forceversion: false gradle: - VanillaARMv6fpu gradleprops: [] init: '' maven: false ndk: r10d novcheck: false oldsdkloc: false output: null patch: [] preassemble: [] prebuild: sed -i -e '/^TARGET/aexit 0' -e 's@\-d \"gradle\/wrapper\"@1@g' ../compile.sh && ln -s vlc-android/$$VLC$$ ../vlc rm: [] scandelete: [] scanignore: [] srclibs: - VLC@23c8d86 subdir: vlc-android submodules: false sudo: '' target: null timeout: null versionCode: '1020003' versionName: 1.2.0 - androidupdate: [] antcommands: [] antifeatures: [] build: cd ../ && ./compile.sh -a "armeabi-v7a" --release buildjni: [] buildozer: false commit: 1.2.0 disable: false encoding: null extlibs: [] forcevercode: false forceversion: false gradle: - VanillaARMv7 gradleprops: [] init: '' maven: false ndk: r10d novcheck: false oldsdkloc: false output: null patch: [] preassemble: [] prebuild: sed -i -e '/^TARGET/aexit 0' -e 's@\-d \"gradle\/wrapper\"@1@g' ../compile.sh && ln -s vlc-android/$$VLC$$ ../vlc rm: [] scandelete: [] scanignore: [] srclibs: - VLC@23c8d86 subdir: vlc-android submodules: false sudo: '' target: null timeout: null versionCode: '1020004' versionName: 1.2.0 - androidupdate: [] antcommands: [] antifeatures: [] build: cd ../ && ./compile.sh -a "x86" --release buildjni: [] buildozer: false commit: 1.2.0 disable: false encoding: null extlibs: [] forcevercode: false forceversion: false gradle: - VanillaX86 gradleprops: [] init: '' maven: false ndk: r10d novcheck: false oldsdkloc: false output: null patch: [] preassemble: [] prebuild: sed -i -e '/^TARGET/aexit 0' -e 's@\-d \"gradle\/wrapper\"@1@g' ../compile.sh && ln -s vlc-android/$$VLC$$ ../vlc rm: [] scandelete: [] scanignore: [] srclibs: - VLC@23c8d86 subdir: vlc-android submodules: false sudo: '' target: null timeout: null versionCode: '1020005' versionName: 1.2.0 - androidupdate: [] antcommands: [] antifeatures: [] build: cd ../ && ./compile.sh -a "armeabi" --release buildjni: [] buildozer: false commit: 1.2.1 disable: false encoding: null extlibs: [] forcevercode: false forceversion: false gradle: - VanillaARMv6fpu gradleprops: [] init: '' maven: false ndk: r10d novcheck: false oldsdkloc: false output: null patch: [] preassemble: [] prebuild: sed -i -e '/^TARGET/aexit 0' -e 's@\-d \"gradle\/wrapper\"@1@g' ../compile.sh && ln -s vlc-android/$$VLC$$ ../vlc rm: [] scandelete: [] scanignore: [] srclibs: - VLC@23c8d86 subdir: vlc-android submodules: false sudo: '' target: null timeout: null versionCode: '1020103' versionName: 1.2.1 - androidupdate: [] antcommands: [] antifeatures: [] build: cd ../ && ./compile.sh -a "armeabi-v7a" --release buildjni: [] buildozer: false commit: 1.2.1 disable: false encoding: null extlibs: [] forcevercode: false forceversion: false gradle: - VanillaARMv7 gradleprops: [] init: '' maven: false ndk: r10d novcheck: false oldsdkloc: false output: null patch: [] preassemble: [] prebuild: sed -i -e '/^TARGET/aexit 0' -e 's@\-d \"gradle\/wrapper\"@1@g' ../compile.sh && ln -s vlc-android/$$VLC$$ ../vlc rm: [] scandelete: [] scanignore: [] srclibs: - VLC@23c8d86 subdir: vlc-android submodules: false sudo: '' target: null timeout: null versionCode: '1020104' versionName: 1.2.1 - androidupdate: [] antcommands: [] antifeatures: [] build: cd ../ && ./compile.sh -a "x86" --release buildjni: [] buildozer: false commit: 1.2.1 disable: false encoding: null extlibs: [] forcevercode: false forceversion: false gradle: - VanillaX86 gradleprops: [] init: '' maven: false ndk: r10d novcheck: false oldsdkloc: false output: null patch: [] preassemble: [] prebuild: sed -i -e '/^TARGET/aexit 0' -e 's@\-d \"gradle\/wrapper\"@1@g' ../compile.sh && ln -s vlc-android/$$VLC$$ ../vlc rm: [] scandelete: [] scanignore: [] srclibs: - VLC@23c8d86 subdir: vlc-android submodules: false sudo: '' target: null timeout: null versionCode: '1020105' versionName: 1.2.1 - androidupdate: [] antcommands: [] antifeatures: [] build: cd ../ && ./compile.sh -a "armeabi" --release buildjni: [] buildozer: false commit: 1.2.2 disable: false encoding: null extlibs: [] forcevercode: false forceversion: false gradle: - VanillaARMv6fpu gradleprops: [] init: '' maven: false ndk: r10d novcheck: false oldsdkloc: false output: null patch: [] preassemble: [] prebuild: sed -i -e '/^TARGET/aexit 0' -e 's@\-d \"gradle\/wrapper\"@1@g' ../compile.sh && ln -s vlc-android/$$VLC$$ ../vlc rm: [] scandelete: [] scanignore: [] srclibs: - VLC@7491a5f subdir: vlc-android submodules: false sudo: '' target: null timeout: null versionCode: '1020203' versionName: 1.2.2 - androidupdate: [] antcommands: [] antifeatures: [] build: cd ../ && ./compile.sh -a "armeabi-v7a" --release buildjni: [] buildozer: false commit: 1.2.2 disable: false encoding: null extlibs: [] forcevercode: false forceversion: false gradle: - VanillaARMv7 gradleprops: [] init: '' maven: false ndk: r10d novcheck: false oldsdkloc: false output: null patch: [] preassemble: [] prebuild: sed -i -e '/^TARGET/aexit 0' -e 's@\-d \"gradle\/wrapper\"@1@g' ../compile.sh && ln -s vlc-android/$$VLC$$ ../vlc rm: [] scandelete: [] scanignore: [] srclibs: - VLC@7491a5f subdir: vlc-android submodules: false sudo: '' target: null timeout: null versionCode: '1020204' versionName: 1.2.2 - androidupdate: [] antcommands: [] antifeatures: [] build: cd ../ && ./compile.sh -a "x86" --release buildjni: [] buildozer: false commit: 1.2.2 disable: false encoding: null extlibs: [] forcevercode: false forceversion: false gradle: - VanillaX86 gradleprops: [] init: '' maven: false ndk: r10d novcheck: false oldsdkloc: false output: null patch: [] preassemble: [] prebuild: sed -i -e '/^TARGET/aexit 0' -e 's@\-d \"gradle\/wrapper\"@1@g' ../compile.sh && ln -s vlc-android/$$VLC$$ ../vlc rm: [] scandelete: [] scanignore: [] srclibs: - VLC@7491a5f subdir: vlc-android submodules: false sudo: '' target: null timeout: null versionCode: '1020205' versionName: 1.2.2 - androidupdate: [] antcommands: [] antifeatures: [] build: cd ../ && ./compile.sh -a "armeabi" --release buildjni: [] buildozer: false commit: 1.2.3 disable: false encoding: null extlibs: [] forcevercode: false forceversion: false gradle: - VanillaARMv6fpu gradleprops: [] init: '' maven: false ndk: r10d novcheck: false oldsdkloc: false output: null patch: [] preassemble: [] prebuild: sed -i -e '/^TARGET/aexit 0' -e 's@\-d \"gradle\/wrapper\"@1@g' ../compile.sh && ln -s vlc-android/$$VLC$$ ../vlc rm: [] scandelete: [] scanignore: [] srclibs: - VLC@7491a5f subdir: vlc-android submodules: false sudo: '' target: null timeout: null versionCode: '1020303' versionName: 1.2.3 - androidupdate: [] antcommands: [] antifeatures: [] build: cd ../ && ./compile.sh -a "armeabi-v7a" --release buildjni: [] buildozer: false commit: 1.2.3 disable: false encoding: null extlibs: [] forcevercode: false forceversion: false gradle: - VanillaARMv7 gradleprops: [] init: '' maven: false ndk: r10d novcheck: false oldsdkloc: false output: null patch: [] preassemble: [] prebuild: sed -i -e '/^TARGET/aexit 0' -e 's@\-d \"gradle\/wrapper\"@1@g' ../compile.sh && ln -s vlc-android/$$VLC$$ ../vlc rm: [] scandelete: [] scanignore: [] srclibs: - VLC@7491a5f subdir: vlc-android submodules: false sudo: '' target: null timeout: null versionCode: '1020304' versionName: 1.2.3 - androidupdate: [] antcommands: [] antifeatures: [] build: cd ../ && ./compile.sh -a "x86" --release buildjni: [] buildozer: false commit: 1.2.3 disable: false encoding: null extlibs: [] forcevercode: false forceversion: false gradle: - VanillaX86 gradleprops: [] init: '' maven: false ndk: r10d novcheck: false oldsdkloc: false output: null patch: [] preassemble: [] prebuild: sed -i -e '/^TARGET/aexit 0' -e 's@\-d \"gradle\/wrapper\"@1@g' ../compile.sh && ln -s vlc-android/$$VLC$$ ../vlc rm: [] scandelete: [] scanignore: [] srclibs: - VLC@7491a5f subdir: vlc-android submodules: false sudo: '' target: null timeout: null versionCode: '1020305' versionName: 1.2.3 - androidupdate: [] antcommands: [] antifeatures: [] build: cd ../ && ./compile.sh -a "armeabi" --release buildjni: [] buildozer: false commit: 1.2.4 disable: false encoding: null extlibs: [] forcevercode: false forceversion: false gradle: - VanillaARMv6fpu gradleprops: [] init: '' maven: false ndk: r10d novcheck: false oldsdkloc: false output: null patch: [] preassemble: [] prebuild: sed -i -e '/^TARGET/aexit 0' -e 's@\-d \"gradle\/wrapper\"@1@g' ../compile.sh && ln -s vlc-android/$$VLC$$ ../vlc rm: [] scandelete: [] scanignore: [] srclibs: - VLC@7491a5f subdir: vlc-android submodules: false sudo: '' target: null timeout: null versionCode: '1020403' versionName: 1.2.4 - androidupdate: [] antcommands: [] antifeatures: [] build: cd ../ && ./compile.sh -a "armeabi-v7a" --release buildjni: [] buildozer: false commit: 1.2.4 disable: false encoding: null extlibs: [] forcevercode: false forceversion: false gradle: - VanillaARMv7 gradleprops: [] init: '' maven: false ndk: r10d novcheck: false oldsdkloc: false output: null patch: [] preassemble: [] prebuild: sed -i -e '/^TARGET/aexit 0' -e 's@\-d \"gradle\/wrapper\"@1@g' ../compile.sh && ln -s vlc-android/$$VLC$$ ../vlc rm: [] scandelete: [] scanignore: [] srclibs: - VLC@7491a5f subdir: vlc-android submodules: false sudo: '' target: null timeout: null versionCode: '1020404' versionName: 1.2.4 - androidupdate: [] antcommands: [] antifeatures: [] build: cd ../ && ./compile.sh -a "x86" --release buildjni: [] buildozer: false commit: 1.2.4 disable: false encoding: null extlibs: [] forcevercode: false forceversion: false gradle: - VanillaX86 gradleprops: [] init: '' maven: false ndk: r10d novcheck: false oldsdkloc: false output: null patch: [] preassemble: [] prebuild: sed -i -e '/^TARGET/aexit 0' -e 's@\-d \"gradle\/wrapper\"@1@g' ../compile.sh && ln -s vlc-android/$$VLC$$ ../vlc rm: [] scandelete: [] scanignore: [] srclibs: - VLC@7491a5f subdir: vlc-android submodules: false sudo: '' target: null timeout: null versionCode: '1020405' versionName: 1.2.4 - androidupdate: [] antcommands: [] antifeatures: [] build: cd ../ && ./compile.sh -a "armeabi" --release buildjni: [] buildozer: false commit: 1.2.5 disable: false encoding: null extlibs: [] forcevercode: false forceversion: false gradle: - VanillaARMv6fpu gradleprops: [] init: '' maven: false ndk: r10d novcheck: false oldsdkloc: false output: null patch: [] preassemble: [] prebuild: sed -i -e '/^TARGET/aexit 0' -e 's@\-d \"gradle\/wrapper\"@1@g' ../compile.sh && ln -s vlc-android/$$VLC$$ ../vlc rm: [] scandelete: [] scanignore: [] srclibs: - VLC@50accb8 subdir: vlc-android submodules: false sudo: '' target: null timeout: null versionCode: '1020503' versionName: 1.2.5 - androidupdate: [] antcommands: [] antifeatures: [] build: cd ../ && ./compile.sh -a "armeabi-v7a" --release buildjni: [] buildozer: false commit: 1.2.5 disable: false encoding: null extlibs: [] forcevercode: false forceversion: false gradle: - VanillaARMv7 gradleprops: [] init: '' maven: false ndk: r10d novcheck: false oldsdkloc: false output: null patch: [] preassemble: [] prebuild: sed -i -e '/^TARGET/aexit 0' -e 's@\-d \"gradle\/wrapper\"@1@g' ../compile.sh && ln -s vlc-android/$$VLC$$ ../vlc rm: [] scandelete: [] scanignore: [] srclibs: - VLC@50accb8 subdir: vlc-android submodules: false sudo: '' target: null timeout: null versionCode: '1020504' versionName: 1.2.5 - androidupdate: [] antcommands: [] antifeatures: [] build: cd ../ && ./compile.sh -a "x86" --release buildjni: [] buildozer: false commit: 1.2.5 disable: false encoding: null extlibs: [] forcevercode: false forceversion: false gradle: - VanillaX86 gradleprops: [] init: '' maven: false ndk: r10d novcheck: false oldsdkloc: false output: null patch: [] preassemble: [] prebuild: sed -i -e '/^TARGET/aexit 0' -e 's@\-d \"gradle\/wrapper\"@1@g' ../compile.sh && ln -s vlc-android/$$VLC$$ ../vlc rm: [] scandelete: [] scanignore: [] srclibs: - VLC@50accb8 subdir: vlc-android submodules: false sudo: '' target: null timeout: null versionCode: '1020505' versionName: 1.2.5 - androidupdate: [] antcommands: [] antifeatures: [] build: cd ../ && ./compile.sh -a "armeabi" --release buildjni: [] buildozer: false commit: 1.2.6 disable: false encoding: null extlibs: [] forcevercode: false forceversion: false gradle: - VanillaARMv6fpu gradleprops: [] init: '' maven: false ndk: r10d novcheck: false oldsdkloc: false output: null patch: [] preassemble: [] prebuild: sed -i -e '/^TARGET/aexit 0' -e 's@\-d \"gradle\/wrapper\"@1@g' ../compile.sh && ln -s vlc-android/$$VLC$$ ../vlc rm: [] scandelete: [] scanignore: [] srclibs: - VLC@d59b81a subdir: vlc-android submodules: false sudo: '' target: null timeout: null versionCode: '1030003' versionName: 1.2.6 - androidupdate: [] antcommands: [] antifeatures: [] build: cd ../ && ./compile.sh -a "armeabi-v7a" --release buildjni: [] buildozer: false commit: 1.2.6 disable: false encoding: null extlibs: [] forcevercode: false forceversion: false gradle: - VanillaARMv7 gradleprops: [] init: '' maven: false ndk: r10d novcheck: false oldsdkloc: false output: null patch: [] preassemble: [] prebuild: sed -i -e '/^TARGET/aexit 0' -e 's@\-d \"gradle\/wrapper\"@1@g' ../compile.sh && ln -s vlc-android/$$VLC$$ ../vlc rm: [] scandelete: [] scanignore: [] srclibs: - VLC@d59b81a subdir: vlc-android submodules: false sudo: '' target: null timeout: null versionCode: '1030004' versionName: 1.2.6 - androidupdate: [] antcommands: [] antifeatures: [] build: cd ../ && ./compile.sh -a "x86" --release buildjni: [] buildozer: false commit: 1.2.6 disable: false encoding: null extlibs: [] forcevercode: false forceversion: false gradle: - VanillaX86 gradleprops: [] init: '' maven: false ndk: r10d novcheck: false oldsdkloc: false output: null patch: [] preassemble: [] prebuild: sed -i -e '/^TARGET/aexit 0' -e 's@\-d \"gradle\/wrapper\"@1@g' ../compile.sh && ln -s vlc-android/$$VLC$$ ../vlc rm: [] scandelete: [] scanignore: [] srclibs: - VLC@d59b81a subdir: vlc-android submodules: false sudo: '' target: null timeout: null versionCode: '1030005' versionName: 1.2.6 comments: {} id: org.videolan.vlc lastUpdated: null metadatapath: metadata/org.videolan.vlc.yml fdroidserver-1.0.9/tests/metadata/dump/org.adaway.yaml0000664000175000017500000005074713303240575022753 0ustar hanshans00000000000000AntiFeatures: [] ArchivePolicy: null AuthorEmail: null AuthorName: null AuthorWebSite: null AutoName: AdAway AutoUpdateMode: Version v%v Binaries: null Bitcoin: null Categories: - System - Security Changelog: '' CurrentVersion: '3.0' CurrentVersionCode: '52' Description: 'An ad blocker that uses the hosts file. The hosts file contains a list of mappings between hostnames and IP addresses. When an app requests an ad, that request is directed to 127.0.0.1 which does nothing. There are options to run a web server to respond to blocked hostnames and to direct requests to the IP address of your choosing. You can download hosts files from the app but it is possible to use your own and to add certain sites to the white- and black-lists. [https://github.com/dschuermann/ad-away/raw/HEAD/CHANGELOG Changelog] Requires root: Yes. The hosts files is located in /system which is normally read-only.' Disabled: null Donate: http://sufficientlysecure.org/index.php/adaway FlattrID: '369138' IssueTracker: https://github.com/dschuermann/ad-away/issues LiberapayID: null License: GPL-3.0-only Litecoin: null MaintainerNotes: '' Name: null NoSourceSince: '' Provides: org.sufficientlysecure.adaway Repo: https://github.com/dschuermann/ad-away.git RepoType: git RequiresRoot: true SourceCode: https://github.com/dschuermann/ad-away Summary: Block advertisements Translation: https://www.transifex.com/dominikschuermann/adaway UpdateCheckData: null UpdateCheckIgnore: null UpdateCheckMode: Tags UpdateCheckName: null VercodeOperation: null WebSite: http://sufficientlysecure.org/index.php/adaway added: null builds: - androidupdate: [] antcommands: [] antifeatures: [] build: '' buildjni: - 'yes' buildozer: false commit: ea5378a94ee0dc1d99d2cec95fae7e6d81afb2b9 disable: false encoding: null extlibs: [] forcevercode: false forceversion: false gradle: [] gradleprops: [] init: '' maven: false ndk: null novcheck: false oldsdkloc: false output: null patch: [] preassemble: [] prebuild: '' rm: [] scandelete: [] scanignore: [] srclibs: [] subdir: org_adaway/ submodules: false sudo: '' target: null timeout: null versionCode: '13' versionName: '1.12' - androidupdate: [] antcommands: [] antifeatures: [] build: '' buildjni: - 'yes' buildozer: false commit: 4128e59da2eac5c2904c7c7568d298ca51e79540 disable: false encoding: null extlibs: [] forcevercode: false forceversion: false gradle: [] gradleprops: [] init: '' maven: false ndk: null novcheck: false oldsdkloc: false output: null patch: - defprop.patch preassemble: [] prebuild: '' rm: [] scandelete: [] scanignore: [] srclibs: [] subdir: org_adaway/ submodules: false sudo: '' target: null timeout: null versionCode: '16' versionName: '1.15' - androidupdate: [] antcommands: [] antifeatures: [] build: '' buildjni: - 'yes' buildozer: false commit: 0b9985398b9eef7baf6aadd0dbb12002bc199d2e disable: false encoding: null extlibs: [] forcevercode: false forceversion: false gradle: [] gradleprops: [] init: '' maven: false ndk: null novcheck: false oldsdkloc: false output: null patch: - defprop.patch preassemble: [] prebuild: '' rm: [] scandelete: [] scanignore: [] srclibs: [] subdir: org_adaway/ submodules: false sudo: '' target: null timeout: null versionCode: '19' versionName: '1.18' - androidupdate: [] antcommands: [] antifeatures: [] build: '' buildjni: - 'yes' buildozer: false commit: ab27f4dab5f3ea5e228cfb4a6b0e1fbf53695f22 disable: false encoding: null extlibs: [] forcevercode: false forceversion: false gradle: [] gradleprops: [] init: '' maven: false ndk: null novcheck: false oldsdkloc: false output: null patch: - defprop.patch preassemble: [] prebuild: '' rm: [] scandelete: [] scanignore: [] srclibs: [] subdir: org_adaway/ submodules: false sudo: '' target: null timeout: null versionCode: '20' versionName: '1.19' - androidupdate: [] antcommands: [] antifeatures: [] build: '' buildjni: - 'yes' buildozer: false commit: 695e3801e4081026c8f7213a2345fc451d5eb89c disable: false encoding: null extlibs: [] forcevercode: false forceversion: false gradle: [] gradleprops: [] init: '' maven: false ndk: null novcheck: false oldsdkloc: false output: null patch: - defprop.patch preassemble: [] prebuild: '' rm: [] scandelete: [] scanignore: [] srclibs: [] subdir: org_adaway/ submodules: false sudo: '' target: null timeout: null versionCode: '21' versionName: '1.20' - androidupdate: [] antcommands: [] antifeatures: [] build: '' buildjni: - 'yes' buildozer: false commit: 65138c11cc8b6affd28b68e125fbc1dff0886a4e disable: false encoding: null extlibs: [] forcevercode: false forceversion: false gradle: [] gradleprops: [] init: '' maven: false ndk: null novcheck: false oldsdkloc: false output: null patch: - defprop.patch preassemble: [] prebuild: '' rm: [] scandelete: [] scanignore: [] srclibs: [] subdir: org_adaway/ submodules: false sudo: '' target: null timeout: null versionCode: '22' versionName: '1.21' - androidupdate: [] antcommands: [] antifeatures: [] build: '' buildjni: [] buildozer: false commit: unknown - see disabled disable: no source in repo encoding: null extlibs: [] forcevercode: false forceversion: false gradle: [] gradleprops: [] init: '' maven: false ndk: null novcheck: false oldsdkloc: false output: null patch: [] preassemble: [] prebuild: '' rm: [] scandelete: [] scanignore: [] srclibs: [] subdir: null submodules: false sudo: '' target: null timeout: null versionCode: '24' versionName: '1.23' - androidupdate: [] antcommands: [] antifeatures: [] build: '' buildjni: - 'yes' buildozer: false commit: f811e53e1e1d2ee047b18715fd7d2072b90ae76b disable: false encoding: null extlibs: [] forcevercode: false forceversion: false gradle: [] gradleprops: [] init: '' maven: false ndk: null novcheck: false oldsdkloc: false output: null patch: [] preassemble: [] prebuild: android update project -p ../com_actionbarsherlock rm: [] scandelete: [] scanignore: [] srclibs: [] subdir: org_adaway/ submodules: false sudo: '' target: null timeout: null versionCode: '25' versionName: '1.24' - androidupdate: [] antcommands: [] antifeatures: [] build: '' buildjni: - 'yes' buildozer: false commit: ff97932761cdee68638dc2550751a64b2cbe18e7 disable: false encoding: null extlibs: [] forcevercode: false forceversion: false gradle: [] gradleprops: [] init: '' maven: false ndk: null novcheck: false oldsdkloc: false output: null patch: [] preassemble: [] prebuild: android update project -p ../com_actionbarsherlock rm: [] scandelete: [] scanignore: [] srclibs: [] subdir: org_adaway/ submodules: false sudo: '' target: null timeout: null versionCode: '26' versionName: '1.25' - androidupdate: [] antcommands: [] antifeatures: [] build: '' buildjni: - 'yes' buildozer: false commit: 33d4d80998f30bafc88c04c80cbae00b03916f99 disable: false encoding: null extlibs: [] forcevercode: false forceversion: false gradle: [] gradleprops: [] init: '' maven: false ndk: null novcheck: false oldsdkloc: false output: null patch: [] preassemble: [] prebuild: android update project -p ../com_actionbarsherlock rm: [] scandelete: [] scanignore: [] srclibs: [] subdir: org_adaway/ submodules: false sudo: '' target: null timeout: null versionCode: '27' versionName: '1.26' - androidupdate: [] antcommands: [] antifeatures: [] build: '' buildjni: - 'yes' buildozer: false commit: 743d25a7e287505461f33f4b8e57e4cf988fffea disable: false encoding: null extlibs: [] forcevercode: false forceversion: false gradle: [] gradleprops: [] init: '' maven: false ndk: null novcheck: false oldsdkloc: false output: null patch: [] preassemble: [] prebuild: android update project -p ../com_actionbarsherlock rm: [] scandelete: [] scanignore: [] srclibs: [] subdir: org_adaway/ submodules: false sudo: '' target: null timeout: null versionCode: '28' versionName: '1.27' - androidupdate: [] antcommands: [] antifeatures: [] build: '' buildjni: - 'yes' buildozer: false commit: eaa07f4 disable: false encoding: null extlibs: [] forcevercode: false forceversion: false gradle: [] gradleprops: [] init: '' maven: false ndk: null novcheck: false oldsdkloc: false output: null patch: [] preassemble: [] prebuild: android update project -p ../com_actionbarsherlock && rm -rf libs/armeabi/* rm: [] scandelete: [] scanignore: [] srclibs: [] subdir: org_adaway/ submodules: false sudo: '' target: null timeout: null versionCode: '30' versionName: '1.29' - androidupdate: [] antcommands: [] antifeatures: [] build: '' buildjni: [] buildozer: false commit: 71ced3f disable: false encoding: null extlibs: [] forcevercode: false forceversion: false gradle: [] gradleprops: [] init: '' maven: false ndk: null novcheck: false oldsdkloc: false output: null patch: [] preassemble: [] prebuild: android update project -p ../com_actionbarsherlock && rm -rf libs/armeabi/* && rm libs/android-support-v4.jar rm: [] scandelete: [] scanignore: [] srclibs: [] subdir: org_adaway/ submodules: false sudo: '' target: null timeout: null versionCode: '33' versionName: '1.32' - androidupdate: [] antcommands: [] antifeatures: [] build: '' buildjni: [] buildozer: false commit: 9d63c18 disable: false encoding: null extlibs: [] forcevercode: false forceversion: false gradle: [] gradleprops: [] init: '' maven: false ndk: null novcheck: false oldsdkloc: false output: null patch: [] preassemble: [] prebuild: android update project -p ../com_actionbarsherlock && rm -rf libs/armeabi/* rm: [] scandelete: [] scanignore: [] srclibs: [] subdir: org_adaway/ submodules: false sudo: '' target: null timeout: null versionCode: '34' versionName: '1.33' - androidupdate: [] antcommands: [] antifeatures: [] build: '' buildjni: [] buildozer: false commit: f2568b1 disable: false encoding: null extlibs: [] forcevercode: false forceversion: false gradle: [] gradleprops: [] init: '' maven: false ndk: null novcheck: false oldsdkloc: false output: null patch: [] preassemble: [] prebuild: android update project -p ../com_actionbarsherlock && rm -rf libs/armeabi/* && android update project -p ../org_donations rm: [] scandelete: [] scanignore: [] srclibs: [] subdir: org_adaway/ submodules: false sudo: '' target: null timeout: null versionCode: '35' versionName: '1.34' - androidupdate: [] antcommands: [] antifeatures: [] build: '' buildjni: [] buildozer: false commit: 7442d5d disable: false encoding: null extlibs: [] forcevercode: false forceversion: false gradle: [] gradleprops: [] init: '' maven: false ndk: null novcheck: false oldsdkloc: false output: null patch: [] preassemble: [] prebuild: android update project -p ../com_actionbarsherlock && rm -rf libs/armeabi/* && android update project -p ../org_donations rm: [] scandelete: [] scanignore: [] srclibs: [] subdir: org_adaway/ submodules: false sudo: '' target: null timeout: null versionCode: '36' versionName: '1.35' - androidupdate: [] antcommands: [] antifeatures: [] build: '' buildjni: [] buildozer: false commit: 83fc713 disable: false encoding: null extlibs: [] forcevercode: false forceversion: false gradle: [] gradleprops: [] init: '' maven: false ndk: null novcheck: false oldsdkloc: false output: null patch: [] preassemble: [] prebuild: android update project -p ../com_actionbarsherlock && rm -rf libs/armeabi/* && android update project -p ../org_donations rm: [] scandelete: [] scanignore: [] srclibs: [] subdir: org_adaway/ submodules: false sudo: '' target: null timeout: null versionCode: '37' versionName: '1.36' - androidupdate: [] antcommands: [] antifeatures: [] build: '' buildjni: [] buildozer: false commit: 70da32b567122b701cdcb1609b780eb85732028f disable: false encoding: null extlibs: [] forcevercode: false forceversion: false gradle: [] gradleprops: [] init: '' maven: false ndk: null novcheck: false oldsdkloc: false output: null patch: [] preassemble: [] prebuild: android update project -p ../com_actionbarsherlock && rm -rf libs/armeabi/* && android update project -p ../org_donations rm: [] scandelete: [] scanignore: [] srclibs: [] subdir: org_adaway/ submodules: false sudo: '' target: null timeout: null versionCode: '38' versionName: '1.37' - androidupdate: - . - android-libs/Donations - android-libs/ActionBarSherlock - android-libs/HtmlSpanner/htmlspanner antcommands: [] antifeatures: [] build: '' buildjni: - 'yes' buildozer: false commit: v2.1 disable: false encoding: null extlibs: - htmlcleaner/htmlcleaner-2.2.jar forcevercode: false forceversion: false gradle: [] gradleprops: [] init: rm android-libs/Donations/custom_rules.xml && git clone https://github.com/dschuermann/HtmlSpanner android-libs/HtmlSpanner maven: false ndk: null novcheck: false oldsdkloc: false output: null patch: [] preassemble: [] prebuild: rm -rf ../update_zip libs/root-commands-1.2.jar libs/htmlspanner-0.2-fork.jar && cp -f libs/htmlcleaner-2.2.jar android-libs/HtmlSpanner/htmlspanner/libs/ && echo "android.library.reference.3=$$RootCommands$$" >> project.properties && echo "android.library.reference.4=android-libs/HtmlSpanner/htmlspanner" >> project.properties && find . -type f -print0 | xargs -0 sed -i 's/org.rootcommands/org.sufficientlysecure.rootcommands/g' && cp android-libs/Donations/ant-templates/other/DonationsConfig.java android-libs/Donations/src/org/donations/ rm: [] scandelete: [] scanignore: [] srclibs: - RootCommands@c940b0e503 subdir: AdAway submodules: false sudo: '' target: null timeout: null versionCode: '40' versionName: '2.1' - androidupdate: - . - android-libs/Donations - android-libs/ActionBarSherlock - android-libs/HtmlSpanner/htmlspanner antcommands: [] antifeatures: [] build: '' buildjni: - 'yes' buildozer: false commit: v2.3 disable: false encoding: null extlibs: - htmlcleaner/htmlcleaner-2.2.jar forcevercode: false forceversion: false gradle: [] gradleprops: [] init: rm android-libs/Donations/custom_rules.xml && git clone https://github.com/dschuermann/HtmlSpanner android-libs/HtmlSpanner maven: false ndk: null novcheck: false oldsdkloc: false output: null patch: [] preassemble: [] prebuild: rm -rf ../update_zip libs/root-commands-1.2.jar libs/htmlspanner-0.2-fork.jar && cp -f libs/htmlcleaner-2.2.jar android-libs/HtmlSpanner/htmlspanner/libs/ && echo "android.library.reference.3=$$RootCommands$$" >> project.properties && echo "android.library.reference.4=android-libs/HtmlSpanner/htmlspanner" >> project.properties && find . -type f -print0 | xargs -0 sed -i 's/org.rootcommands/org.sufficientlysecure.rootcommands/g' && cp android-libs/Donations/ant-templates/other/DonationsConfig.java android-libs/Donations/src/org/donations/ rm: [] scandelete: [] scanignore: [] srclibs: - RootCommands@c940b0e503 subdir: AdAway submodules: false sudo: '' target: null timeout: null versionCode: '42' versionName: '2.3' - androidupdate: [] antcommands: [] antifeatures: [] build: '' buildjni: - 'yes' buildozer: false commit: v2.6 disable: false encoding: null extlibs: [] forcevercode: false forceversion: false gradle: - 'yes' gradleprops: [] init: '' maven: false ndk: null novcheck: false oldsdkloc: false output: null patch: [] preassemble: - renameExecutables prebuild: '' rm: [] scandelete: [] scanignore: [] srclibs: [] subdir: AdAway submodules: false sudo: '' target: null timeout: null versionCode: '45' versionName: '2.6' - androidupdate: [] antcommands: [] antifeatures: [] build: '' buildjni: - 'yes' buildozer: false commit: v2.7 disable: false encoding: null extlibs: [] forcevercode: false forceversion: false gradle: - 'yes' gradleprops: [] init: '' maven: false ndk: null novcheck: false oldsdkloc: false output: null patch: [] preassemble: - renameExecutables prebuild: '' rm: [] scandelete: [] scanignore: [] srclibs: [] subdir: AdAway submodules: false sudo: '' target: null timeout: null versionCode: '46' versionName: '2.7' - androidupdate: [] antcommands: [] antifeatures: [] build: '' buildjni: - 'yes' buildozer: false commit: v2.8 disable: false encoding: null extlibs: [] forcevercode: false forceversion: false gradle: - 'yes' gradleprops: [] init: '' maven: false ndk: null novcheck: false oldsdkloc: false output: null patch: [] preassemble: - renameExecutables prebuild: '' rm: [] scandelete: [] scanignore: [] srclibs: [] subdir: AdAway submodules: false sudo: '' target: null timeout: null versionCode: '47' versionName: '2.8' - androidupdate: [] antcommands: [] antifeatures: [] build: '' buildjni: - 'yes' buildozer: false commit: v2.8.1 disable: false encoding: null extlibs: [] forcevercode: false forceversion: false gradle: - 'yes' gradleprops: [] init: '' maven: false ndk: null novcheck: false oldsdkloc: false output: null patch: [] preassemble: - renameExecutables prebuild: '' rm: [] scandelete: [] scanignore: [] srclibs: [] subdir: AdAway submodules: false sudo: '' target: null timeout: null versionCode: '48' versionName: 2.8.1 - androidupdate: [] antcommands: [] antifeatures: [] build: '' buildjni: - 'yes' buildozer: false commit: v2.9 disable: false encoding: null extlibs: [] forcevercode: false forceversion: false gradle: - 'yes' gradleprops: [] init: '' maven: false ndk: null novcheck: false oldsdkloc: false output: null patch: [] preassemble: - renameExecutables prebuild: '' rm: [] scandelete: [] scanignore: [] srclibs: [] subdir: AdAway submodules: false sudo: '' target: null timeout: null versionCode: '49' versionName: '2.9' - androidupdate: [] antcommands: [] antifeatures: [] build: '' buildjni: - 'yes' buildozer: false commit: v2.9.1 disable: false encoding: null extlibs: [] forcevercode: false forceversion: false gradle: - 'yes' gradleprops: [] init: '' maven: false ndk: null novcheck: false oldsdkloc: false output: null patch: [] preassemble: - renameExecutables prebuild: '' rm: [] scandelete: [] scanignore: [] srclibs: [] subdir: AdAway submodules: false sudo: '' target: null timeout: null versionCode: '50' versionName: 2.9.1 - androidupdate: [] antcommands: [] antifeatures: [] build: '' buildjni: - 'yes' buildozer: false commit: v2.9.2 disable: false encoding: null extlibs: [] forcevercode: false forceversion: false gradle: - 'yes' gradleprops: [] init: '' maven: false ndk: null novcheck: false oldsdkloc: false output: null patch: [] preassemble: - renameExecutables prebuild: '' rm: [] scandelete: [] scanignore: [] srclibs: [] subdir: AdAway submodules: false sudo: '' target: null timeout: null versionCode: '51' versionName: 2.9.2 - androidupdate: [] antcommands: [] antifeatures: [] build: '' buildjni: - 'yes' buildozer: false commit: v3.0 disable: false encoding: null extlibs: [] forcevercode: false forceversion: false gradle: - 'yes' gradleprops: [] init: '' maven: false ndk: null novcheck: false oldsdkloc: false output: null patch: [] preassemble: - renameExecutables prebuild: '' rm: [] scandelete: [] scanignore: [] srclibs: [] subdir: AdAway submodules: false sudo: '' target: null timeout: null versionCode: '52' versionName: '3.0' comments: build:40: - '#RootCommands srclib needs changing on fdroidserver' build:42: - '#RootCommands srclib needs changing on fdroidserver' id: org.adaway lastUpdated: null metadatapath: metadata/org.adaway.json fdroidserver-1.0.9/tests/metadata/dump/com.politedroid.yaml0000664000175000017500000000640413303240575024001 0ustar hanshans00000000000000AntiFeatures: [] ArchivePolicy: 4 versions AuthorEmail: null AuthorName: null AuthorWebSite: null AutoName: Polite Droid AutoUpdateMode: Version v%v Binaries: null Bitcoin: null Categories: - Time Changelog: '' CurrentVersion: '1.5' CurrentVersionCode: '6' Description: Activates silent mode during calendar events. Disabled: null Donate: null FlattrID: null IssueTracker: https://github.com/miguelvps/PoliteDroid/issues LiberapayID: null License: GPL-3.0-only Litecoin: null MaintainerNotes: '' Name: null NoSourceSince: '' Provides: null Repo: https://github.com/miguelvps/PoliteDroid.git RepoType: git RequiresRoot: false SourceCode: https://github.com/miguelvps/PoliteDroid Summary: Calendar tool Translation: '' UpdateCheckData: null UpdateCheckIgnore: null UpdateCheckMode: Tags UpdateCheckName: null VercodeOperation: null WebSite: '' added: null builds: - androidupdate: [] antcommands: [] antifeatures: - KnownVuln - UpstreamNonFree - NonFreeAssets build: '' buildjni: [] buildozer: false commit: 6a548e4b19 disable: false encoding: null extlibs: [] forcevercode: false forceversion: false gradle: [] gradleprops: [] init: '' maven: false ndk: null novcheck: false oldsdkloc: false output: null patch: [] preassemble: [] prebuild: '' rm: [] scandelete: [] scanignore: [] srclibs: [] subdir: null submodules: false sudo: '' target: android-10 timeout: null versionCode: '3' versionName: '1.2' - androidupdate: [] antcommands: [] antifeatures: [] build: '' buildjni: [] buildozer: false commit: ad865b57bf3ac59580f38485608a9b1dda4fa7dc disable: false encoding: null extlibs: [] forcevercode: false forceversion: false gradle: [] gradleprops: [] init: '' maven: false ndk: null novcheck: false oldsdkloc: false output: null patch: [] preassemble: [] prebuild: '' rm: [] scandelete: [] scanignore: [] srclibs: [] subdir: null submodules: false sudo: '' target: android-15 timeout: null versionCode: '4' versionName: '1.3' - androidupdate: [] antcommands: [] antifeatures: [] build: '' buildjni: [] buildozer: false commit: 456bd615f3fbe6dff06433928cf7ea20073601fb disable: false encoding: null extlibs: [] forcevercode: false forceversion: false gradle: [] gradleprops: [] init: '' maven: false ndk: null novcheck: false oldsdkloc: false output: null patch: [] preassemble: [] prebuild: '' rm: [] scandelete: [] scanignore: [] srclibs: [] subdir: null submodules: false sudo: '' target: android-10 timeout: null versionCode: '5' versionName: '1.4' - androidupdate: [] antcommands: [] antifeatures: [] build: '' buildjni: [] buildozer: false commit: v1.5 disable: false encoding: null extlibs: [] forcevercode: false forceversion: false gradle: - 'yes' gradleprops: [] init: '' maven: false ndk: null novcheck: false oldsdkloc: false output: null patch: [] preassemble: [] prebuild: '' rm: [] scandelete: [] scanignore: [] srclibs: [] subdir: null submodules: false sudo: echo 'this is just a test' target: null timeout: null versionCode: '6' versionName: '1.5' comments: {} id: com.politedroid lastUpdated: null metadatapath: metadata/com.politedroid.txt fdroidserver-1.0.9/tests/metadata/dump/org.smssecure.smssecure.yaml0000664000175000017500000002011213303240575025505 0ustar hanshans00000000000000AntiFeatures: [] ArchivePolicy: null AuthorEmail: null AuthorName: null AuthorWebSite: null AutoName: SMSSecure AutoUpdateMode: Version v%v Binaries: null Bitcoin: null Categories: - Phone & SMS Changelog: '' CurrentVersion: 0.6.0 CurrentVersionCode: '102' Description: 'SMSSecure is an SMS/MMS application that allows you to protect your privacy while communicating with friends. Using SMSSecure, you can send SMS messages and share media or attachments with complete privacy. * Easy. SMSSecure works like any other SMS application. There''s nothing to sign up for and no new service your friends need to join. * Reliable. SMSSecure communicates using encrypted SMS messages. No servers or internet connection required. * Private. SMSSecure uses the TextSecure encryption protocol to provide privacy for every message, every time. * Safe. All messages are encrypted locally, so if your phone is lost or stolen, your messages are protected. * Open Source. SMSSecure is Free and Open Source, enabling anyone to verify its security by auditing the code.' Disabled: null Donate: null FlattrID: null IssueTracker: https://github.com/SMSSecure/SMSSecure/issues LiberapayID: null License: GPL-3.0-only Litecoin: null MaintainerNotes: '' Name: null NoSourceSince: '' Provides: null Repo: https://github.com/SMSSecure/SMSSecure RepoType: git RequiresRoot: false SourceCode: https://github.com/SMSSecure/SMSSecure Summary: Send encrypted text messages (SMS) Translation: https://www.transifex.com/silence/silence UpdateCheckData: null UpdateCheckIgnore: null UpdateCheckMode: Tags UpdateCheckName: null VercodeOperation: null WebSite: http://www.smssecure.org added: null builds: - androidupdate: [] antcommands: [] antifeatures: [] build: '' buildjni: [] buildozer: false commit: 66367479a4f57f347b5cbe8f6f8f632adaae7727 disable: builds, merge changes into upstream encoding: null extlibs: [] forcevercode: true forceversion: false gradle: - 'yes' gradleprops: [] init: '' maven: false ndk: null novcheck: false oldsdkloc: false output: null patch: [] preassemble: [] prebuild: touch signing.properties && pushd $$GradleWitness$$ && gradle jar && popd && cp $$GradleWitness$$/build/libs/GradleWitness.jar libs/gradle-witness.jar && sed -i -e '20,22d' build.gradle && pushd $$PreferenceFragment$$ && gradle uploadArchives && popd && sed -i -e '/5470f5872514a6226fa1fc6f4e000991f38805691c534cf0bd2778911fc773ad/d' build.gradle && mkdir smil && pushd smil && wget -c http://www.w3.org/TR/smil-boston-dom/java-binding.zip && unzip java-binding.zip && popd && cp -fR smil/java/org src/ && rm -fR smil && sed -i -e '/org.w3c.smil/d' build.gradle && cp -fR $$AospMms$$/src/org src/ rm: - libs/* scandelete: [] scanignore: [] srclibs: - GradleWitness@10f1269c0aafdc1d478efc005ed48f3a47d44278 - PreferenceFragment@717a45433b927d2f0dfc5328f79e77c9682c37bc - ShortcutBadger@3815ce2ec0c66acd7d7c0b4f2479df8fa70fed87 - AospMms@android-5.1.0_r3 subdir: null submodules: false sudo: '' target: null timeout: null versionCode: '5' versionName: 0.3.3 - androidupdate: [] antcommands: [] antifeatures: [] build: '' buildjni: [] buildozer: false commit: 9675ce5eecb929dcaddb43b3d9486fdb88b9ae1a disable: builds, wait for upstream encoding: null extlibs: [] forcevercode: false forceversion: false gradle: - 'yes' gradleprops: [] init: '' maven: false ndk: null novcheck: false oldsdkloc: false output: null patch: [] preassemble: [] prebuild: touch signing.properties && pushd $$GradleWitness$$ && gradle jar && popd && cp $$GradleWitness$$/build/libs/GradleWitness.jar libs/gradle-witness.jar rm: - libs/*.jar scandelete: [] scanignore: [] srclibs: - GradleWitness@10f1269c0aafdc1d478efc005ed48f3a47d44278 subdir: null submodules: true sudo: '' target: null timeout: null versionCode: '6' versionName: 0.3.3 - androidupdate: [] antcommands: [] antifeatures: [] build: '' buildjni: [] buildozer: false commit: v0.4.2 disable: builds locally, but not on BS encoding: null extlibs: [] forcevercode: false forceversion: false gradle: - 'yes' gradleprops: [] init: '' maven: false ndk: null novcheck: false oldsdkloc: false output: null patch: [] preassemble: [] prebuild: touch signing.properties && ./build-witness.sh && rm -rf libs/gradle-witness/build && echo "org.gradle.jvmargs=-Xms512m -Xmx512m -XX:MaxPermSize=512m" >> gradle.properties rm: - libs/*.jar scandelete: [] scanignore: [] srclibs: [] subdir: null submodules: true sudo: '' target: null timeout: null versionCode: '9' versionName: 0.4.2 - androidupdate: [] antcommands: [] antifeatures: [] build: '' buildjni: [] buildozer: false commit: v0.5.1 disable: false encoding: null extlibs: [] forcevercode: false forceversion: false gradle: - 'yes' gradleprops: [] init: '' maven: false ndk: null novcheck: false oldsdkloc: false output: null patch: [] preassemble: [] prebuild: touch signing.properties && ./build-witness.sh && rm -rf libs/gradle-witness/build && echo "org.gradle.jvmargs=-Xms512m -Xmx512m -XX:MaxPermSize=512m" >> gradle.properties rm: - libs/*.jar scandelete: [] scanignore: [] srclibs: [] subdir: null submodules: true sudo: '' target: null timeout: null versionCode: '11' versionName: 0.5.1 - androidupdate: [] antcommands: [] antifeatures: [] build: '' buildjni: [] buildozer: false commit: v0.5.2 disable: broken in upstream encoding: null extlibs: [] forcevercode: false forceversion: false gradle: - 'yes' gradleprops: [] init: '' maven: false ndk: null novcheck: false oldsdkloc: false output: null patch: [] preassemble: [] prebuild: touch signing.properties && ./scripts/build-witness.sh && rm -rf libs/gradle-witness/build rm: - libs/*.jar scandelete: [] scanignore: [] srclibs: [] subdir: null submodules: true sudo: '' target: null timeout: null versionCode: '12' versionName: 0.5.2 - androidupdate: [] antcommands: [] antifeatures: [] build: '' buildjni: [] buildozer: false commit: v0.5.3 disable: false encoding: null extlibs: [] forcevercode: false forceversion: false gradle: - 'yes' gradleprops: [] init: '' maven: false ndk: null novcheck: false oldsdkloc: false output: null patch: [] preassemble: [] prebuild: touch signing.properties && ./scripts/build-witness.sh && rm -rf libs/gradle-witness/build rm: - libs/*.jar scandelete: [] scanignore: [] srclibs: [] subdir: null submodules: true sudo: '' target: null timeout: null versionCode: '100' versionName: 0.5.3 - androidupdate: [] antcommands: [] antifeatures: [] build: '' buildjni: [] buildozer: false commit: v0.5.4 disable: false encoding: null extlibs: [] forcevercode: false forceversion: false gradle: - 'yes' gradleprops: [] init: '' maven: false ndk: null novcheck: false oldsdkloc: false output: null patch: [] preassemble: [] prebuild: touch signing.properties && ./scripts/build-witness.sh && rm -rf libs/gradle-witness/build rm: - libs/*.jar scandelete: [] scanignore: [] srclibs: [] subdir: null submodules: true sudo: '' target: null timeout: null versionCode: '101' versionName: 0.5.4 - androidupdate: [] antcommands: [] antifeatures: [] build: '' buildjni: [] buildozer: false commit: v0.6.0 disable: false encoding: null extlibs: [] forcevercode: false forceversion: false gradle: - 'yes' gradleprops: [] init: '' maven: false ndk: null novcheck: false oldsdkloc: false output: null patch: [] preassemble: [] prebuild: touch signing.properties && ./scripts/build-witness.sh && rm -rf libs/gradle-witness/build rm: - libs/*.jar scandelete: [] scanignore: [] srclibs: [] subdir: null submodules: true sudo: '' target: null timeout: null versionCode: '102' versionName: 0.6.0 comments: {} id: org.smssecure.smssecure lastUpdated: null metadatapath: metadata/org.smssecure.smssecure.txt fdroidserver-1.0.9/tests/metadata/com.politedroid.txt0000664000175000017500000000147013323655167022720 0ustar hanshans00000000000000Categories:Time License:GPL-3.0-only Web Site: Source Code:https://github.com/miguelvps/PoliteDroid Issue Tracker:https://github.com/miguelvps/PoliteDroid/issues Auto Name:Polite Droid Summary:Calendar tool Description: Activates silent mode during calendar events. . Repo Type:git Repo:https://github.com/miguelvps/PoliteDroid.git Build:1.2,3 commit=6a548e4b19 target=android-10 antifeatures=KnownVuln,UpstreamNonFree,NonFreeAssets Build:1.3,4 commit=ad865b57bf3ac59580f38485608a9b1dda4fa7dc target=android-15 Build:1.4,5 commit=456bd615f3fbe6dff06433928cf7ea20073601fb target=android-10 Build:1.5,6 commit=v1.5 gradle=yes sudo=echo 'this is just a test' Archive Policy:4 versions Auto Update Mode:Version v%v Update Check Mode:Tags Current Version:1.5 Current Version Code:6 fdroidserver-1.0.9/tests/metadata/org.fdroid.fdroid.txt0000664000175000017500000003150013303240575023114 0ustar hanshans00000000000000Categories:System License:GPL-3.0-or-later Web Site:https://f-droid.org Source Code:https://gitlab.com/fdroid/fdroidclient Issue Tracker:https://gitlab.com/fdroid/fdroidclient/issues Translation:https://hosted.weblate.org/projects/f-droid/f-droid Changelog:https://gitlab.com/fdroid/fdroidclient/raw/HEAD/CHANGELOG.md Donate:https://f-droid.org/about FlattrID:343053 Bitcoin:15u8aAPK4jJ5N8wpWJ5gutAyyeHtKX5i18 Auto Name:F-Droid Summary:Application manager Description: Connects to F-Droid compatible repositories. The default repo is hosted at f-droid.org, which contains only bona fide FOSS. Android is open in the sense that you are free to install apks from anywhere you wish, but there are many good reasons for using a client/repository setup: * Be notified when updates are available * Keep track of older and beta versions * Filter apps that aren't compatible with the device * Find apps via categories and searchable descriptions * Access associated urls for donations, source code etc. * Stay safe by checking repo index signatures and apk hashes . Repo Type:srclib Repo:fdroidclient Build:0.17,8 commit=c626ce5f6d3e10ae15942f01ff028be310cc695a init=rm -f build.xml Build:0.18,9 commit=a6c9ed8d06b19315df9ba9041324f78139f7d238 init=rm -f build.xml Build:0.19,10 commit=540b7d0522f4d67a4896697f7342e4c75b4cbf59 init=rm -f build.xml Build:0.20,11 commit=ddacfb856ad66c1c367e20c9cbecbfb15fe00813 init=rm -f build.xml Build:0.21,12 commit=49fa56aa6626a190f2d711120b69e435e9e615b1 init=rm -f build.xml Build:0.22,13 commit=a6a33c942495cc4c74a7cb6e968efe0e00815e68 init=rm -f build.xml Build:0.23,14 commit=aa58a8aad1a1c3832eafb9f1bdd6db8292d2c172 init=rm -f build.xml Build:0.24,15 commit=9b5fe2976443255b95027abd412f1c1e7f3d27b2 init=rm -f build.xml Build:0.25,16 commit=43977cc493e47a4dc841c4192ae8a40fb14b639b init=rm -f build.xml Build:0.28,19 commit=f881aabe5bd0ac94771b03f1318a6e0972ab4128 target=android-15 Build:0.29,20 commit=87b229b95d0909bfd05c65c5670794e743626f6c target=android-15 Build:0.30,21 commit=497cb19840f79b31ae9590f5abd9e4df832b34ee target=android-15 Build:0.31,22 commit=f99f8a544c7cb4d4a48ad09da00ad281af05f2ac target=android-15 Build:0.32,23 commit=cc3970cc243e345416bfc62781ece6eeefd11495 target=android-15 Build:0.33,24 commit=58eb580159aa4d54767f0af1736cad233fec2475 target=android-15 Build:0.34-test,25 commit=335d27b725b0f92e9e8804ae09518cd47bc7b021 target=android-15 Build:0.35-test,26 commit=a06d18b029392669e98359f86c07e442a04e6a13 target=android-15 Build:0.36-test,27 commit=647e230c9e888c04bb0554078c5aa81da63548a0 target=android-15 Build:0.37-test,28 commit=3c02e3ccc147a34af42cedf7d85f18dc75c8efa8 target=android-15 Build:0.38,38 commit=99b52c988d203811f434d6ac40675a63d5ae41ab target=android-15 Build:0.39-test,39 commit=9a7d0b9f10710105d51d8206a7faa4408c60c20d target=android-15 Build:0.40,40 commit=51a67efdf1ee2819bee99d9263b2980dafaf761d target=android-15 Build:0.42,42 commit=36b815095ef51ca4f21887d973dbc0a50575cd65 target=android-15 Build:0.43,43 disable=sdk doesn't like tzm (at f2109e4e0bf1597c625221d8d2d10050f146ba5a) commit=f2109e4e0bf1597c625221d8d2d10050f146ba5a target=android-15 Build:0.44,44 disable=nasty upgrade bug commit=0.44 target=android-15 Build:0.45,45 commit=0.45 target=android-15 Build:0.46,46 commit=0.46 target=android-15 Build:0.47-test,47 commit=0.47-test target=android-17 Build:0.48-test,48 commit=0.48-test target=android-17 Build:0.50,50 commit=0.50 Build:0.51-test,51 commit=0.51-test Build:0.52-test,52 commit=0.52-test submodules=yes prebuild=rm -rf extern/Universal-Image-Loader/downloads update=.,extern/Universal-Image-Loader/library Build:0.53-test,53 commit=0.53-test submodules=yes scandelete=yes Build:0.54,540 commit=0.54 submodules=yes scandelete=yes Build:0.55,550 commit=0.55 submodules=yes Build:0.56-test,560 commit=0.56-test submodules=yes Build:0.57-test,570 commit=0.57-test submodules=yes Build:0.58,580 commit=0.58 submodules=yes Build:0.59-test,590 commit=0.59-test submodules=yes Build:0.61-test,610 commit=0.61-test submodules=yes Build:0.62,620 commit=0.62 submodules=yes Build:0.63,630 commit=0.63 submodules=yes Build:0.64-test,640 commit=0.64-test submodules=yes Build:0.65,650 commit=0.65 submodules=yes Build:0.66,660 commit=0.66 submodules=yes Build:0.67-test,670 commit=0.67-test submodules=yes Build:0.68-test,680 commit=0.68-test submodules=yes Build:0.69-test,690 commit=0.69-test submodules=yes Build:0.70-test,700 commit=0.70-test submodules=yes prebuild=./ant-prepare.sh update=. Build:0.71,710 disable=Broken MTM/AndroidPinning commit=0.71 submodules=yes prebuild=./ant-prepare.sh update=. Build:0.72,720 disable=proguard issues commit=0.72 submodules=yes prebuild=./ant-prepare.sh update=. Build:0.73,730 disable=local repos broken commit=0.73 submodules=yes prebuild=./ant-prepare.sh update=. Build:0.74,740 disable=still some proguard issues commit=0.74 submodules=yes prebuild=./ant-prepare.sh update=. Build:0.75,750 disable=repo update progress crasher commit=0.75 submodules=yes prebuild=./ant-prepare.sh update=. Build:0.76,760 commit=0.76 submodules=yes prebuild=./ant-prepare.sh update=. Build:0.77-test,770 commit=0.77-test subdir=F-Droid submodules=yes prebuild=./ant-prepare.sh update=. Build:0.78,780 commit=0.78 subdir=F-Droid submodules=yes prebuild=./ant-prepare.sh update=. Build:0.79-test,790 commit=0.79-test subdir=F-Droid submodules=yes prebuild=./ant-prepare.sh update=. Build:0.80-test,800 commit=0.80-test subdir=F-Droid submodules=yes prebuild=./ant-prepare.sh update=. Build:0.81-test,810 commit=0.81-test subdir=F-Droid submodules=yes prebuild=./ant-prepare.sh update=. Build:0.82,820 commit=0.82 subdir=F-Droid submodules=yes prebuild=./ant-prepare.sh update=. Build:0.83,830 commit=0.83 subdir=F-Droid submodules=yes prebuild=./ant-prepare.sh update=. Build:0.84-test,840 commit=0.84-test subdir=F-Droid submodules=yes prebuild=./ant-prepare.sh update=. Build:0.85-test,850 commit=0.85-test subdir=F-Droid submodules=yes prebuild=./ant-prepare.sh update=. Build:0.86-test,860 commit=0.86-test subdir=F-Droid submodules=yes prebuild=./ant-prepare.sh update=. Build:0.87-test,870 commit=0.87-test subdir=F-Droid submodules=yes prebuild=./ant-prepare.sh update=. Build:0.88,880 commit=0.88 subdir=F-Droid submodules=yes prebuild=./ant-prepare.sh update=. Build:0.89-test,890 commit=0.89-test subdir=F-Droid submodules=yes prebuild=./ant-prepare.sh update=. Build:0.90-test,900 commit=0.90-test subdir=F-Droid submodules=yes prebuild=./ant-prepare.sh update=. Build:0.91,910 commit=0.91 subdir=F-Droid submodules=yes prebuild=./ant-prepare.sh update=. Build:0.92,920 commit=0.92 subdir=F-Droid submodules=yes prebuild=./ant-prepare.sh update=. Build:0.93-test,930 commit=0.93-test subdir=F-Droid submodules=yes prebuild=./ant-prepare.sh update=. Build:0.94-test,940 commit=0.94-test subdir=F-Droid submodules=yes gradle=yes Build:0.95-alpha1,95001 commit=0.95-alpha1 subdir=F-Droid submodules=yes gradle=yes Build:0.95-alpha2,95002 commit=v0.95-alpha2 subdir=F-Droid submodules=yes gradle=yes Build:0.95,95050 commit=v0.95 subdir=F-Droid submodules=yes gradle=yes Build:0.95.1,95150 commit=v0.95.1 subdir=F-Droid submodules=yes gradle=yes Build:0.96-alpha1,96001 commit=v0.96-alpha1 subdir=F-Droid gradle=yes Build:0.96-alpha2,96002 commit=v0.96-alpha2 subdir=F-Droid gradle=yes Build:0.96-alpha3,96003 commit=v0.96-alpha3 subdir=F-Droid gradle=yes Build:0.96-alpha4,96004 commit=v0.96-alpha4 subdir=F-Droid gradle=yes Build:0.96-alpha5,96005 commit=v0.96-alpha5 subdir=F-Droid gradle=yes Build:0.96-alpha6,96006 commit=v0.96-alpha6 subdir=F-Droid gradle=yes Build:0.96,96050 commit=v0.96 subdir=F-Droid gradle=yes scanignore=extern/AndroidPinning/res/raw/cacerts Build:0.96.1,96150 commit=v0.96.1 subdir=F-Droid gradle=yes scanignore=extern/AndroidPinning/res/raw/cacerts Build:0.97-alpha1,97001 commit=v0.97-alpha1 subdir=F-Droid gradle=yes scanignore=extern/AndroidPinning/res/raw/cacerts Build:0.97-alpha2,97002 commit=v0.97-alpha2 subdir=F-Droid gradle=yes Build:0.97-alpha3,97003 commit=v0.97-alpha3 subdir=F-Droid gradle=yes Build:0.97-alpha4,97004 commit=v0.97-alpha4 subdir=F-Droid gradle=yes Build:0.97-alpha5,97005 commit=v0.97-alpha5 subdir=F-Droid gradle=yes Build:0.97-alpha6,97006 commit=v0.97-alpha6 subdir=F-Droid gradle=yes Build:0.97-alpha7,97007 commit=v0.97-alpha7 subdir=F-Droid gradle=yes Build:0.97-alpha8,97008 commit=v0.97-alpha8 subdir=F-Droid gradle=yes Build:0.97,97050 commit=v0.97 subdir=F-Droid gradle=yes Build:0.98-alpha1,98001 commit=v0.98-alpha1 subdir=F-Droid gradle=yes Build:0.98-alpha2,98002 commit=v0.98-alpha2 subdir=F-Droid gradle=yes Build:0.98-alpha3,98003 commit=v0.98-alpha3 subdir=F-Droid gradle=yes Build:0.98-alpha4,98004 commit=v0.98-alpha4 subdir=F-Droid gradle=yes Build:0.98-alpha5,98005 commit=v0.98-alpha5 subdir=F-Droid gradle=yes Build:0.98-alpha6,98006 commit=v0.98-alpha6 subdir=F-Droid gradle=yes Build:0.98-alpha7,98007 commit=v0.98-alpha7 subdir=F-Droid gradle=yes Build:0.98,98050 commit=v0.98 subdir=F-Droid gradle=yes Build:0.98.1,98150 commit=v0.98.1 subdir=F-Droid gradle=yes Build:0.99-alpha1,99001 commit=v0.99-alpha1 subdir=F-Droid gradle=yes Build:0.99-alpha2,99002 commit=v0.99-alpha2 subdir=F-Droid gradle=yes Build:0.99,99050 commit=v0.99 subdir=F-Droid gradle=yes Build:0.99.1,99150 commit=v0.99.1 subdir=F-Droid gradle=yes Build:0.99.2,99250 commit=v0.99.2 subdir=F-Droid gradle=yes Build:0.100-alpha1,100001 commit=v0.100-alpha1 subdir=F-Droid gradle=yes Build:0.100-alpha2,100002 commit=v0.100-alpha2 subdir=F-Droid gradle=yes Build:0.100-alpha3,100003 commit=v0.100-alpha3 subdir=app gradle=yes Build:0.100-alpha4,100004 commit=v0.100-alpha4 subdir=app gradle=yes Build:0.100-alpha5,100005 commit=v0.100-alpha5 subdir=app gradle=yes Build:0.100-alpha6,100006 commit=v0.100-alpha6 subdir=app gradle=yes Build:0.100-alpha7,100007 commit=v0.100-alpha7 subdir=app gradle=yes Build:0.100-alpha8,100008 commit=v0.100-alpha8 subdir=app gradle=yes Build:0.100,100050 commit=v0.100 subdir=app gradle=yes Build:0.100.1,100150 commit=v0.100.1 subdir=app gradle=yes Build:0.101-alpha1,101001 commit=v0.101-alpha1 subdir=app gradle=yes Build:0.101-alpha2,101002 commit=v0.101-alpha2 subdir=app gradle=yes Build:0.101-alpha3,101003 commit=v0.101-alpha3 subdir=app gradle=yes Build:0.101-alpha4,101004 commit=v0.101-alpha4 subdir=app gradle=yes Build:0.101-alpha5,101005 commit=v0.101-alpha5 subdir=app gradle=yes Build:0.101-alpha6,101006 commit=v0.101-alpha6 subdir=app gradle=yes Build:0.101,101050 commit=v0.101 subdir=app gradle=yes Build:0.102-alpha1,102001 commit=v0.102-alpha1 subdir=app gradle=yes Build:0.102-alpha2,102002 commit=v0.102-alpha2 subdir=app gradle=yes Build:0.102-alpha3,102003 commit=v0.102-alpha3 subdir=app gradle=yes Build:0.102,102050 commit=v0.102 subdir=app gradle=yes Build:0.102.1,102150 commit=v0.102.1 subdir=app gradle=yes Build:0.102.2,102250 commit=v0.102.2 subdir=app gradle=yes Build:0.102.3,102350 commit=v0.102.3 subdir=app gradle=yes Build:0.103-alpha1,103001 commit=v0.103-alpha1 subdir=app gradle=yes Build:0.103-alpha2,103002 commit=v0.103-alpha2 subdir=app gradle=yes Build:0.103-alpha3,103003 commit=v0.103-alpha3 subdir=app gradle=yes Archive Policy:12 versions Auto Update Mode:None Update Check Mode:Static Current Version:0.102.3 Current Version Code:102350 fdroidserver-1.0.9/tests/metadata/org.fdroid.ci.test.app.txt0000664000175000017500000000007413243530567024005 0ustar hanshans00000000000000Repo Type:git Repo:https://gitlab.com/eighthave/ci-test-app fdroidserver-1.0.9/tests/metadata/souch.smsbypass.txt0000664000175000017500000000271113303240575022757 0ustar hanshans00000000000000Categories:Phone & SMS License:GPL-3.0-only Web Site:https://gitlab.com/souch/SMSbypass Source Code:https://gitlab.com/souch/SMSbypass/tree/HEAD Issue Tracker:https://gitlab.com/souch/SMSbypass/issues Donate:http://rodolphe.souchaud.free.fr/donate FlattrID:cad90e036b975ed129a3ce80a0750466 Auto Name:Battery level Summary:Filter SMS and show them in a fake app Description: In order to keep away curious eyes, SMS-bypass filters incoming SMS messages before they reach your inbox. Based on bughunter2.smsfilter. Features: * Discrete fake app "Battery level": Long tap on Battery percentage will show SMS. * Filter incoming SMS specified address: redirect the SMS to SMS-bypass messages list; remove SMS arrival sound or vibration; show a discreet notification icon (battery level); vibrate if checked in settings * Add contact from contact list * Export messages to a text file . Repo Type:git Repo:https://gitlab.com/souch/SMSbypass.git Build:0.8,5 commit=v0.8 subdir=app gradle=yes prebuild=sed -i -e '/minSdkVersion/amaxSdkVersion 19\n' build.gradle Build:0.8b,6 disable=don't build, just use as template for AUM, correct VC is 8 commit=2bd6164ff6391906af2af2b484de69a4ff926a01 subdir=app gradle=yes Build:0.8.1,8 disable=mistagged commit=v0.8.1 subdir=app gradle=yes Build:0.9,9 commit=v0.9 subdir=app gradle=yes Auto Update Mode:Version v%v Update Check Mode:Tags Current Version:0.9 Current Version Code:9 fdroidserver-1.0.9/tests/metadata/info.guardianproject.urzip.yml0000664000175000017500000000277613323343071025070 0ustar hanshans00000000000000AutoName: Urzip:本地应用的信息 AutoUpdateMode: None Bitcoin: 1Fi5xUHiAPRKxHvyUGVFGt9extBe8Srdbk Categories: - Development - GuardianProject - 1 - 2.0 CurrentVersionCode: 2147483647 AuthorWebSite: https://guardianproject.info Description: | It’s Urzip 是一个获得已安装 APK 相关信息的实用工具。它从您的设备上已安装的所有应用开始,一键触摸即可显示 APK 的指纹,并且提供到达 virustotal.com 和 androidobservatory.org 的快捷链接,让您方便地了解特定 APK 的档案。它还可以让您导出签名证书和生成 ApkSignaturePin Pin 文件供 TrustedIntents 库使用。 ★ Urzip 支持下列语言: Deutsch, English, español, suomi, 日本語, 한국어, Norsk, português (Portugal), Русский, Slovenščina, Türkçe 没看到您的语言?帮忙翻译本应用吧: https://www.transifex.com/projects/p/urzip ★ 致用户:我们还缺少你喜欢的功能?发现了一个 bug?请告诉我们!我们乐于听取您的意见。请发送电子邮件至: support@guardianproject.info 或者加入我们的聊天室 https://guardianproject.info/contact IssueTracker: https://dev.guardianproject.info/projects/urzip/issues License: GPL-3.0-only Repo: https://github.com/guardianproject/urzip.git RepoType: git SourceCode: https://github.com/guardianproject/urzip Summary: 一个实用工具,获取已安装在您的设备上的应用的有关信息 UpdateCheckMode: None WebSite: https://dev.guardianproject.info/projects/urzip fdroidserver-1.0.9/tests/metadata/apk/0000775000175000017500000000000013324115531017620 5ustar hanshans00000000000000fdroidserver-1.0.9/tests/metadata/apk/org.dyndns.fules.ck.yaml0000664000175000017500000000223613243530567024317 0ustar hanshans00000000000000antiFeatures: !!set {} features: [] hash: 897486e1f857c6c0ee32ccbad0e1b8cd82f6d0e65a44a23f13f852d2b63a18c8 hashType: sha256 icon: org.dyndns.fules.ck.20.png icons: '0': org.dyndns.fules.ck.20.png '120': org.dyndns.fules.ck.20.png '160': org.dyndns.fules.ck.20.png '240': org.dyndns.fules.ck.20.png icons_src: '-1': res/drawable-mdpi-v4/icon_launcher.png '120': res/drawable-ldpi-v4/icon_launcher.png '160': res/drawable-mdpi-v4/icon_launcher.png '240': res/drawable-hdpi-v4/icon_launcher.png minSdkVersion: '7' nativecode: - arm64-v8a - armeabi - armeabi-v7a - mips - mips64 - x86 - x86_64 packageName: org.dyndns.fules.ck sig: 9bf7a6a67f95688daec75eab4b1436ac signer: 9326a2cc1a2f148202bc7837a0af3b81200bd37fd359c9e13a2296a71d342056 size: 132453 targetSdkVersion: '8' uses-permission: - !!python/object/new:fdroidserver.update.UsesPermission - android.permission.BIND_INPUT_METHOD - null - !!python/object/new:fdroidserver.update.UsesPermission - android.permission.READ_EXTERNAL_STORAGE - null - !!python/object/new:fdroidserver.update.UsesPermission - android.permission.VIBRATE - null uses-permission-sdk-23: [] versionCode: 20 versionName: v1.6pre2 fdroidserver-1.0.9/tests/metadata/apk/info.guardianproject.urzip.yaml0000664000175000017500000000116713243530567026006 0ustar hanshans00000000000000antiFeatures: !!set {} features: [] hash: abfb3adb7496611749e7abfb014c5c789e3a02489e48a5c3665110d1b1acd931 hashType: sha256 icon: info.guardianproject.urzip.100.png icons: '0': info.guardianproject.urzip.100.png '160': info.guardianproject.urzip.100.png icons_src: '-1': res/drawable/ic_launcher.png '160': res/drawable/ic_launcher.png minSdkVersion: '4' packageName: info.guardianproject.urzip sig: e0ecb5fc2d63088e4a07ae410a127722 signer: 7eabd8c15de883d1e82b5df2fd4f7f769e498078e9ad6dc901f0e96db77ceac3 size: 9969 targetSdkVersion: '18' uses-permission: [] uses-permission-sdk-23: [] versionCode: 100 versionName: '0.1' fdroidserver-1.0.9/tests/metadata/org.smssecure.smssecure.txt0000664000175000017500000001042313303240575024421 0ustar hanshans00000000000000Categories:Phone & SMS License:GPL-3.0-only Web Site:http://www.smssecure.org Source Code:https://github.com/SMSSecure/SMSSecure Issue Tracker:https://github.com/SMSSecure/SMSSecure/issues Translation:https://www.transifex.com/silence/silence Auto Name:SMSSecure Summary:Send encrypted text messages (SMS) Description: SMSSecure is an SMS/MMS application that allows you to protect your privacy while communicating with friends. Using SMSSecure, you can send SMS messages and share media or attachments with complete privacy. * Easy. SMSSecure works like any other SMS application. There's nothing to sign up for and no new service your friends need to join. * Reliable. SMSSecure communicates using encrypted SMS messages. No servers or internet connection required. * Private. SMSSecure uses the TextSecure encryption protocol to provide privacy for every message, every time. * Safe. All messages are encrypted locally, so if your phone is lost or stolen, your messages are protected. * Open Source. SMSSecure is Free and Open Source, enabling anyone to verify its security by auditing the code. . Repo Type:git Repo:https://github.com/SMSSecure/SMSSecure Build:0.3.3,5 disable=builds, merge changes into upstream commit=66367479a4f57f347b5cbe8f6f8f632adaae7727 gradle=yes srclibs=GradleWitness@10f1269c0aafdc1d478efc005ed48f3a47d44278,PreferenceFragment@717a45433b927d2f0dfc5328f79e77c9682c37bc,ShortcutBadger@3815ce2ec0c66acd7d7c0b4f2479df8fa70fed87,AospMms@android-5.1.0_r3 forcevercode=yes rm=libs/* prebuild=touch signing.properties && \ pushd $$GradleWitness$$ && \ gradle jar && \ popd && \ cp $$GradleWitness$$/build/libs/GradleWitness.jar libs/gradle-witness.jar && \ sed -i -e '20,22d' build.gradle && \ pushd $$PreferenceFragment$$ && \ gradle uploadArchives && \ popd && \ sed -i -e '/5470f5872514a6226fa1fc6f4e000991f38805691c534cf0bd2778911fc773ad/d' build.gradle && \ mkdir smil && \ pushd smil && \ wget -c http://www.w3.org/TR/smil-boston-dom/java-binding.zip && \ unzip java-binding.zip && \ popd && \ cp -fR smil/java/org src/ && \ rm -fR smil && \ sed -i -e '/org.w3c.smil/d' build.gradle && \ cp -fR $$AospMms$$/src/org src/ Build:0.3.3,6 disable=builds, wait for upstream commit=9675ce5eecb929dcaddb43b3d9486fdb88b9ae1a submodules=yes gradle=yes srclibs=GradleWitness@10f1269c0aafdc1d478efc005ed48f3a47d44278 rm=libs/*.jar prebuild=touch signing.properties && \ pushd $$GradleWitness$$ && \ gradle jar && \ popd && \ cp $$GradleWitness$$/build/libs/GradleWitness.jar libs/gradle-witness.jar Build:0.4.2,9 disable=builds locally, but not on BS commit=v0.4.2 submodules=yes gradle=yes rm=libs/*.jar prebuild=touch signing.properties && \ ./build-witness.sh && \ rm -rf libs/gradle-witness/build && \ echo "org.gradle.jvmargs=-Xms512m -Xmx512m -XX:MaxPermSize=512m" >> gradle.properties Build:0.5.1,11 commit=v0.5.1 submodules=yes gradle=yes rm=libs/*.jar prebuild=touch signing.properties && \ ./build-witness.sh && \ rm -rf libs/gradle-witness/build && \ echo "org.gradle.jvmargs=-Xms512m -Xmx512m -XX:MaxPermSize=512m" >> gradle.properties Build:0.5.2,12 disable=broken in upstream commit=v0.5.2 submodules=yes gradle=yes rm=libs/*.jar prebuild=touch signing.properties && \ ./scripts/build-witness.sh && \ rm -rf libs/gradle-witness/build Build:0.5.3,100 commit=v0.5.3 submodules=yes gradle=yes rm=libs/*.jar prebuild=touch signing.properties && \ ./scripts/build-witness.sh && \ rm -rf libs/gradle-witness/build Build:0.5.4,101 commit=v0.5.4 submodules=yes gradle=yes rm=libs/*.jar prebuild=touch signing.properties && \ ./scripts/build-witness.sh && \ rm -rf libs/gradle-witness/build Build:0.6.0,102 commit=v0.6.0 submodules=yes gradle=yes rm=libs/*.jar prebuild=touch signing.properties && \ ./scripts/build-witness.sh && \ rm -rf libs/gradle-witness/build Auto Update Mode:Version v%v Update Check Mode:Tags Current Version:0.6.0 Current Version Code:102 fdroidserver-1.0.9/tests/metadata/info.guardianproject.urzip/0000775000175000017500000000000013324115531024330 5ustar hanshans00000000000000fdroidserver-1.0.9/tests/metadata/info.guardianproject.urzip/en-US/0000775000175000017500000000000013324115531025257 5ustar hanshans00000000000000fdroidserver-1.0.9/tests/metadata/info.guardianproject.urzip/en-US/video.txt0000664000175000017500000000000613243530567027134 0ustar hanshans00000000000000video fdroidserver-1.0.9/tests/metadata/info.guardianproject.urzip/en-US/title.txt0000664000175000017500000000000613243530567027147 0ustar hanshans00000000000000title fdroidserver-1.0.9/tests/metadata/info.guardianproject.urzip/en-US/full_description.txt0000664000175000017500000000002113243530567031370 0ustar hanshans00000000000000full description fdroidserver-1.0.9/tests/metadata/info.guardianproject.urzip/en-US/changelogs/0000775000175000017500000000000013324115531027371 5ustar hanshans00000000000000fdroidserver-1.0.9/tests/metadata/info.guardianproject.urzip/en-US/changelogs/100.txt0000664000175000017500000000000413243530567030436 0ustar hanshans00000000000000100 fdroidserver-1.0.9/tests/metadata/info.guardianproject.urzip/en-US/images/0000775000175000017500000000000013324115531026524 5ustar hanshans00000000000000fdroidserver-1.0.9/tests/metadata/info.guardianproject.urzip/en-US/images/icon.png0000664000175000017500000000260513243530567030177 0ustar hanshans00000000000000PNG  IHDRw=LIDATHǥyPuƟ{².˲ 8ႈ 628yr OCM5V^ʡbY"0,,{DPXϟ>ߋ4zљp a22x@-q &6'xnب4Ռs-<!a^zD\W6=YMQ2ɗw|՟-f̶vJA؜s1Ym®n>/]ҹr8୔@(r1.}j:Oi> DowJ'CRRVJ eMPy|{|7sRNQy(KNnቹM{p՝Ғ6Q:h++-LxȄsՆIT~M≹\{V{TTX@vL (Ćyq]zAnBFZmHocs  Çd6ihh CCfQ!j2OPSեlUY G?15t"GUˢy*(M6\$""DJiujdo5GcF^G"@ Vx\|T$SgOt ::erOK\]Ϟb¶hӫnZ>5^7 S~6B3Щb#RجJ[ =64%1N ('5+٥bvTD%W< `y*VnJK6͵[h8l3PA$M;QZ1[,U3|.nlIuG2 3 eb2V'0`ę&Uڂg ,.!蒎Q1 F|UJvuӆaL06 cLzN׎zXYٹLGBr8#0LmMOS7onDVv͞} DLژ.C{e 󳵴&cY,ZKSiZ=I`҇6%]Nm},ŅU5SN܈mݷ<65}E޷'0CקԄf.̙3;EnK=_d*/r.Ѵ#>)?/Ԟ H\o7aU%(|${hjǜIL~ cS/LҘPPX"1sgsLuP!!"@&849^1|'3}ȕs_-]$IVM1,,D-aEDA̤rIENDB`fdroidserver-1.0.9/tests/metadata/info.guardianproject.urzip/en-US/images/featureGraphic.png0000664000175000017500000011176513243530567032210 0ustar hanshans00000000000000PNG  IHDR,D|bKGD IDATxg\]v齋RD"XK4D&4oF͍=$zcE Ho"H mYyAvXl}_c2; ) >OȪ?VWW掎 CMMM]]]]]]UUU]]_544/5776l|`h>X\\\]]]SSS[[[SSSWWvjkkZXX 6̬0077766fٌd2@cZ_x%%%t'&b2Zi\.VUUVTTx<999&&&%%\ }}}OOOOOO 333,?Ct+++bcc0W<^^^VVVVVVffftdee}wޭ522}ܹ¼pH~SH ***222RSSRSS@}ܸqcƌ ck׮3U>x뭷8P $WIr EEE]]]t9pǏ߿khWUU}'OT#G!(?^y;w<tВ%Kh hiiIKK~\\ܓ'ONJoĉ61_rC$ eee$PK222vUWWghh8yuֹѝ  9Ĩ즦&5jĉN J?7mD@;2>:::***))DԴǎ;iҤ@###Bfdw5k 2 'zzz2ϟ?ɓ'񹹹fKKKIZFC @Ucǎ#)(v(d+((8uԝ;w }%d9rʔ)o񆝝Ţ;"͍/--mmmp8ZZZ666...NNN:Ѝݹs'>>>//CUUUGGoڴiVVV/ՑqSSu}ً0Hfeettt0L ccckkk &|:GSSSqqqyyyeeeUUUMMM]]]kmmr\.媨ꚚYZZ:885j̘1#FǪ;wDGGggg777wvv،5j!!!Æ +zzYuuummm]]]sssSSSsssKKKww71LMMM33#GΘ1|˝ׯ߹s'##f] '<{.PЌWUU|7558p+//|ٳ= om۶}'ue/[죏>a![YY 2>ڵ={ܻwL&3((hժU"| صkϟcww3g~G zڦ͛'o{-{ z577>}ܹs8 055utt|ϟrO>Jsׯ~~~=zHr666^uwwONNsAIjwxcǎ&66_=$... ] 㭷ڿ*6l {FǏo~]R=]x<ǜA?#,5222,,dҝH544oߖTC_WW߹sG4449h"!_/ӧOtݻw'M$f“징}Ѷmۨ$9O?ݹs8{oҚ"IAAAvZfMllh-XYYEEE ze.Q?޾}{BBBUUՠO6l5k#CBBJKK%ئ?KJJLRXX(Nw |8}ŋ𒟟H|–-[>Sz/..R{{Y~71 "00=.S@y1 { 555۷t:555ssiӦ;<),, ȴ?g~UUDj/+RJ@__ǎ[xćM,+%%ݝItvv "… Lbaaadd^]]]PPJ?srr\]]{{{d2#""fϞgjj\ZZ?dddjOիW۷og_~ɗioo?e+++9r$%%^{ɓ6~x777SSS6TTT/prr"?y…Ç744lhhuӧIntZkÆ Ç700PQQ駟N>Ml3gN8BGG633ĉN" enn^QQ1. @s ܿԩFFFp8QDDDBBGeI~h9rq~Ϛ5Kн>>>YYY$9rD]]]6l^lႚ=w8-F/}g$jkkwuuIwr${n7ཽ~I o .OJ>}'O~Uc322\%Ղh{|>Oٳgv:w\]];efftիWG }qƑ7"{yyyNNN&44˃@{֭92??^)ꚙ9d///[8_ Ν;'꯿"TZZjgg'hG; 7oN0?Z~-[Y]]mbbBrM6n(Ç###In' @` /Θ1x;v̘1Cmґ#GHݻ䷯Yd6#yūT[[{䉠BwwwBB›oH|Ky._,YHN?Ayaٲe.=|PdtIme= 1Z9sFХӧϛ7Ov-Z4m4AW8.###c]?eAWDOy___e˖Ȅ wygIIΝ#ٰÃGj8===T&oNR#蒻PWx{{ : !&AӶNNN.c SH΂m7!I_0Tx0>/]_ruuu;wmqKK K 1SХǏ744PFm%y>$}K1  z{{:~T(>lYYYL% $%\_yyy 8q<|h*+M܅?ZIL#Δ;vرv޽qP ]ʒv$esssݻ< `]z #Yˡ]R Y(󛚚n߾aÆcǎaW){?ҥK p0It$|CrTFFo&NA%Ε#^#;Z|A0WQQq?޽{ 6Piii_|O?TYYHKH6Az{wwwtܹs b~ꫯ\}wi_iOw5$kܸq"4]*..2 #/yɾ}6o,O[YYٶm80KIS?#U#ft ɔ1rqqt`ƍ⴯&L RNNN||Z{Q^^ǏRk o.a{+ ꊎꫯ''D(ϟ۷o׮]ɊEppݙ׮]+GZc$WwASD2 hÆ Cj?tƆð Ym0(hoo_6o|e@@uww8qb֭l|=qDAWcbb>3&ݻw7o, tI$`S__믿~q1{QBKɓ'lQQQORN$3322 rΞ=_ѝ߾}/<h[˔%K\ݶmۊ+Z[[ ;;;""Bޗ.]Jr?߲eBuU!`2۶m#y]dIdd8G.^NIVoGFF _sΊ+]e2$WVA| kjj=e˖l(RRR6o|Ѫ*^?o<8 8t萃Æ \nmmmrr`gg7n{XXNJA_~ҤIPRQQ~oooa1pvvtg555B; ѣvvv۷o6 tttܷo)_͗-[&jWWӿ[AQ7̜9dEY[[Uxzz EAJrR||>ȑ#GytҥK :IzӧOKK oj$OWZ5m4===.YSSSRRFrbT]]gee_ ͞2eJPP&쬫|ǏƮ\Z&78-UWW;88<"bԨQZhh +**n޼yԩԲlmm3ux8^z߾}$/YbԩSGYUUUPPpʕt39?s vP [b<[JG 3ܹ/^3 IDATl.]5k֠/ oooJQGGGAA:tHJt?pЗ`T{>}*Yy2;(/(SNm޼͛rkb Ν;*fG$rss˗:JӦM׿%f3"lJZ7nlܸҥKX%`|;w6mty9=& k׌$ئҥKI#ƠA7n 9v@|ݓ^رcl̙3LTk.(+./xY@Zӿ'Niz5=== )|E1z{44TB,k yɓ]]]E0[(uu[nMr"`I5(蜯=:55544T"] YpAocbb555"AZZZn׿%+W޿____R[PPЕ+WP,(W޽,@o]]]tg]TTŋ}||}1Ù7oޣG`So޼y̙A`A˗/t钡 __dgg/_|H 3g=SLEEeΝ111n4 ggwŋ;wҍu-9S477ܹرcuuuJ% lɒ%|?(OOO4~w8 N >LHH*))RUU>|ѣ===ΨΝ;|dW Rqǎ'N@i1 ^{mݺu$E)>l֭^:|pdd$y@(~PWW_>}^X `0 _}Տ>Ԕ8R-蔫"#QE555[n=uFO>_TTTLII_= ._,h?zhP'Ϟ=ꫯ.\ب_& ՍX~;t?1"88~ȑZZZ W\$isk֬$>4-***lrҥ&E@d:::ӦM[~Yd#iff/ճo@^@*JKKlrʕ&,jiiqA6mߗl۶m)͛7Ow]mmm7oܺug%%%lp…/` ٶmիW<8YKK˵k׶mV__Ow?HcǎIAw U<|ǎ.]jnn; ȇϟ_paΝ +VܸqCUUUR Po=sLcc#Y@444:uo&$R8;;߾}cqF3H@WWמ={=Z[[Kw?;;b&<<֖ ^UUӧo߾}#GRBk hooS^^_Ђ`XZZ]vŊrrrKJJJJJ;:::;;UTTmll\\\|}}2M ǏرH޿x Aw5ϟ߽{waa!F &>{K.ѝ@ZqƮ]#33sΝnݢ;Tk߿stIIIٱcGtt4-'%%ڵ+66,bbbvؑ|>???wܡ; (_Xb F … R/\?ѝ@bhii9s̱cǺgϞmmm; dSu,,:tM|An .}"rccc\.Y%{DwPF111~)ǣ; X+..oܸAwP^W\9~xyy9v &@mmSN>GwP^'N8w\CCYD'@ssիW9NwPv  ".YN4)(( /knn޿rr2v OxԖE}}}SS.;)TTTtttӱ%(Țuuqa"8)f0YYY555tg ogg@o)5nܸMMMfΝ999xJ L NCwڵ ~zzztgxYQQ޸qd= BKKkAAA 2}޽=; nڴivvvt@YY͛g1&,8ĉ'Of0 330www 8p ## /dН`UUU7ort y-щ;޽{)SA6 hoo߹sgYYA jDD?)_(۷ӝr?n;\+W~N 5mڴ UUU ᫯jnn;AkƍtgZvvvee%Y^GAAAtg''MOwOiiitPf/\à /q,NA O>b ?~ `0 .bXtg@CCÁp,K>nܸO}CCÅ H/xg}}}KKKCCC--- MMM--fi ^DGG[nӦMӧO`Έ;wuttH/`2L&fZ[[X[[[pCUTTܹFf,Y"@ :;;xxxѝ@I_.^rJMMMHwhhhIIICC`0l6p8##cǎ7nرZZZtP( >/ږ,Yr힞 ͯ_ RRZZ'@d CUUU]]ʔ)^^^ =z/_?'[lӓR/XYY-Z\}P1EAAA!!!&Lѡ;Re˖EEEjjj/_0a񶶶FFF޼y[}0LIpp+秡Aw."'<YYYյsNigoVNNNnn90TUU G1iҤ)S`;NH(--rJUU/o7o|UT)S&NXYY* ٳy?$? rΝwΝAAA%,+222!!!==f <{lOOO =e999o߮􂼼G?p8%G;wnii)+2}aÆ1LC$s۶m&pܸqc̘1Z7|3&& Y:::ƍ  Į>IOҢq׮]`Re򪪪Xϟ奦Fw"HOZ[[Ǐ777b6}̙INsW\acc7g___ y1I @RRRll0 \m|||%a@Nrrrqq1HuuuNB͎;w KRR҉'$߬Y0;E|a޼y֭[#""0#{ɓD!?aaa!X|yTTTFF 6lxxĉNC&'w{H r6668J4Vڴi… 1S)rrrbccE… 1111bg!aXVVV-ڰaʕ+ ݡ@D{'Op/ojjڽ{1cCNOOgZZYBCCGAw> /**˗/D'N>}: JEE!22r/@1/&&&55U}]PPyf׬Ys޽Ri%gϞ=qDĈAxyyG={&N#}}}?5󸸸,_ɴ}w?ya`-\tww_p!11Qvo3䈪ϧ~;︻X,UTWWƖWTT|Zm Аdrssۼyʕ+?bȈ`.ӧOKMK./pO_ϟ?}@[[[BBhknn>|ff[;6l2''' Ak׮ݰaCPPq " mmmMCz{{%YZZYF lܸô"A`|>?+++%%Eiݽ{޽{!!!R/oKvmݺu̙zzztg^ Y555Oӏ痔;v[WWWJ`llvXjv ÿ)Shjjҝk׮ѝDxb NI!J$S{.^H"]5vE=zT}qϞ=~~~Sy̘1oA@uuuƍC4'ݙXY" JWWwŊEq9rd+[[ۯzѢEtQeddkƍCٳiii󇾾VUU &H/EDTT˔)S榢"ckƍknnNOO; M__9Y@A @^^^\\4]cc[)KSSscǎ/͛7oϞ=,,@ M6X 0d|> W^q5|~ss3ϟrO>;(!<(//?w7N}1L--#v"/pssЈV o뻹ҝ>^ׯ_ͥ/ccERЗ888ݻʕ+?SN@aGGGVVӧODrrɓ'rȑV#)ܷoرc044\x1A@(MMMt'lPZZF!|=j2hkkO<$` 6l߾}ennnݺI&]ZZJw {%%%ty!==mmmekkrJuuu ;wl|ۼyѣKII;= Fi!ׯS0xyy͛7OvJQSS[nɓr`oݺuĈtgA466>~ *Eyyy׮]+///KKE 6f|9sѝ ?~  HHH;ȷ >_UUBAA˗/J/&9z7xC'ӳXH {555d***y+c5++4¨_322(4<<͍D`0֮]Jwc .\x1ɲ'O477@mmv 5j? ڵk?p8tgbccNrl!#ϯ/޹s'::O}ikkM=c0>>>aaaT`0<<<Ν@ __y1  |hooOMM8?~, ן:ue+#MLL^yLaG Jw 3G_jj۷(mڴi,eXӦM h?Ύ x0T}}}ԧSww RSS)OMMmԩliaa:j(iw@n„ X ,; {{{d'''4+((tRee%}مIQ3nܸPv0(##pﺺ:;;dCo޼ѣib&M$Dí|}}\RRR(qd3%%(R[[{b 2559sUWW 9 #tttfΜDw]zz:\,ZHJll;w('$$HΚ5DsҤIR*++`3P/\.777W޷hoo?qD^^fϞ!3ttt%,g͚S;;; 7^vuu/\@͖F >|d]`dԩSAiii(@xɴDޟ9==G}3fp8I;fI5 Al6{...,,@<`@[[<6gϞ;v,,,̙#-A-,,% dY[[O>ӧOtf_ ޜfHܝ;wݻGy cʔ)AAAⷦ/~SRb kmmˣDP )SRR|>]i$},ZQLMMM&Z@z̰,Lw'11(R~yj5 sN{{SJ*00 rcH =|paa![...l jhh8uTCCC [[[ooo<61NuuuI,--_}Ue0Ç={6vXfjjJweٳjx ={699W}1̹s;VUUUuuu'M$#g#GdtQj</77@ooo~~>Q}Ԭщ^yIPa Ť5eggS(<ɡ1^|&L0yNVWWquuR*)1cf.''/Oݶm[CC}wyg^y rgذa:D //((--ݿ?5-Z4y'O^$)a0f*,,;ȁ >_QQAy{RxD_CCAN999a)0zzz/x?A{gll,̋q/&9{l===(llΦ7 e\EM_sp8@͜9蕓G$O}G===td2?cihhiiiQ @J|}}tS=}5f̘sjhhFSS3<<0RLR' .jʎ۷?{#F02 @jHO@@6QeeNI/**fJ쨯ߺu+5}]A#55L0b{{{(\l~/>}Jw8q"%%/^d2~I]]}ڴi 555S(2j&7bק@wwM)K]]}ݺuMA `JKKQߟ(111.]St. / m~/([+kzzz曪*j_l/5P sH~/NB>_PPp!jV5*22K$l]P&88XUUJcrNBǏ?yV\9jԨ;zhj)Tuuuww7)@1 oUWWgjV|~X,MMM K]===i9$-zzzn߾}]j3gNpp0A*** il6J 9&AJϚ_KK˩Srrr(`ZjΜ9X IUUOꢠ;++իWS-Fd2N***2Iwmmm7oތ/aiiIAG@@:LX|>رc tgo(HwiL>O7򢳳3&&ƍto8 J~ c777C֞9s rʨ TRp܌gϮ[NEE8ԩu#==PSSSxb9::bA*- N2J[ _~4i/Y`0>s-]`迟KTTwaQ^g* X0j(v( ֘ɮ61\OwKbFSX@,("vTDi˔ɦ*u9Sϋ̋{'ȹ99x!y~*Ryƍ~"tXZZN:B_HI&M>ʊtiy8:z1 :ǎ#94M;99%&&&&&b^J -rqq#wt c`566Π޽gϞ2AGԫD\SeTotҒjT{X,$%%V(J*ۓNaPtÇ:G: !!@7꟢(Q&tt&/^wVY[^ ]/5LF:1]<\MMͱcDzHao{tzb1{;xs*ڵk3“1tT*]paRRξwsN1'-x%'O 윔@zG Oikk#t @W1H4mڴM6;F{f.Y|>t](='SSSO>(: l H4eʔ{a!\.t](^VVF:NԩS oUbxɛ7o6n(D tRRRN:%I bxӦMSL1]Z%'MB D  SRR_N:ɓ:%H {OB:;rȉ'I]!ccc {O ! hjjڳg˗J%,cٿ (>zGH!b$ד`;t@3JO?ty GucXv#YSUQQA:1 '4(55u٠j"ȀO|*DxIAMfM:ըVE=xtc,#_iVuuΝ;o߾B}G،3D",dM> #O,LF:A_H90sL#"(..nӦMƶm,sss JKK5BA:D7n5kQuH4s̍7_PTVVNa,,,HG݅y/_>p}*HoΙ3HVbxoEmm-n&:-@Rvu…6YtT*ݰaܹs ~M,̙a)RP(ZqÇ(sskΟ?߀H$[v%,ܸq/au)lҖÇR>|}AwdWS9r1\N: bP#^licwIIIv `trrr222jjjH6@w=_Xd\.?}?~L: yꚐTJ:gDdG8p̙3*t0 JĉGōԺ&""B"N@(0p݅QyfzzݻwI?۷/xf`X666LhmmHIIy,`ZZZ;vvYOhii@Y(277b, t]uu?eh˗*++I 177'RG@,8/۷o/_& Vmm?Nt@ 8pX,&RGb3N.geeڵt0L_yyy988P虎 EQVVVwܙH: 4kBCC-,,H}IJAAA8hBgUVV~9994HPdgg8pt+6aeeE:N qttc& tJOHgqOѿ}|A@_uR( c \._n݊A#N:J)**Ύt c++mZZZvر{Y@ڵ &.+7:/\.t\ccG}L: GOrI=y(aРAڎTUUo;wNPʕ+}\.'.""ޞt o]*6668 Hݺu7э3۷oߝ;wHxaaa~R`ٮ!!!NRΜ9ob %ϟ?sN\]]l6 ߺT(rqq. RRSSyRTT}:AÝH`iihnn4)۷o*++Ix#G$ z(E㏿ZA@\~}֭8_XK੺Wi^Ь7~w:x+WHgi:22Օt0(;PBXnݾ}HgP(]_ & A&k) hCkk/k.<*++۾}{yy9 Б(OOO)@tx<-mhjjZr?~L: ٳt@ tss# D P(RВW^y/x,+T*՝;w>fY# 2dn;r_OHgАqIA#l6;22@]lmmJT>RYTT__gkk@zr/._}ѿ"Ǐᇛ7o % JO {XXX,x`7|f͚/rY\~;v055 uww' JO x`J:rȊ+;D:0?!:/ I[}||qRT/^\r={p4QikkLKK#:fCBB|||HC`nn{u}%%%T*Uii駟~N: t!88P5`P5WYYy?ҥK tЮ֝;w^ptM;4944Zi[O|@>O:tJOG/`A EQB5//B@(ʚ[nY[[K$ҡ{_{fAs}3gNHH `4P(277yfAAn2HݻvZYYñƣ}ܼzWrÇŤ!L055&cCR?~|Mu 033o[lzuΜ9U)E_vƍJR#_tP{{Ç +++-,,d2ի$@{_z%\s=]vm+fff555ZZZJKK lllb1>A~}1O/ϟ?РAQmXiں͛Xpƻw566ؘa;^kaW^rÆ [x1v4V(255mooǛCR=y򤸸իΝD) 69sm\//\0""?;MI322ݻҢ Ν;W^MIIy'OfIG3^>z( </00'EPuj ~Y}J$??<+Dսׯ_z=)))44t0?1:::,,޽{)򊊊;vfff;v\|Y.I# L{5q *ѣG=*..trr9rdllhΝ;۶m{ %α2t0"Zikhh}ب>3tǎ#GD1DTG;nݺ?zA 9t0.Z)B0...;;;??__R)--=qT* 9rdtt%tZzܹ'N?afӧECCCaasrss/^X]]O-,,VZ꯾ ̂ޓdƍ & Ŋ?|Gp)tL.򦦦Ǐ;v~ۗTPktʕg֪3+gmYr+3ׅA 4M{xx$''< B(KKˤ;wܿ_( BXQQE4>>>>>>nnn2qCCý{nOqqqqqG}Rٕ3v|||͛'4 [UU,=kky999Fr|ܹd4M ,--LG( BRlhhQrGCRgロ0aߩT^xǩz :tϞ=h EQ祗^|rqqg1m]GU#ƍ꟢'Ob/lmm_x 3BCCcbbh355]f 3w644|7of`@ 2dѣID(jʕ̼ @M ,fNJ{K.k{h5kHcPpppHJJ#4%>>o]v'x33Ǝ@QT|||``lgٲe)wؑ{Xl Po36aƍcu9rG 0X( MNN`̖,Y1??Y{<oѓ'O&.E-]4<<_i:666,,JѣGO<بY{4M8t䭷bSR888̙3n{qD"ի]]]Ie˖0?@x<ޜ9sԜ\Y{4M>|֬Y@(*999::h0a5_~!/^{5.K:Po:99A"hܹ}e`Vcc/\,=>rJAL(jV hСC &=HRϏ=,Ј脄)X(j…F"lmmg̘\rY{:>DW_}ݝ`r111 )333333= z/^8((t Y(]j)=9qDf^e{nZZ͛77bĈENt M3g7nebb2i$lnn8uB,=OOKRAp(t͚5#BBBFџ׮]KKK+++c`T*]z?E4rJHD: @XYYM4ۛYGe`͎2e !\I&MD:@X,Vttttt4UR?>--ڞl2333A:(TtR???A:裏10 zennn:NW ^bD"!|ѣ###y}:==U۳BaRRҐ!C\.,Е@Q@ ;vY8Vgƌ[ngý:kС˖-0`hYhѠAHg,ӧ˞8zs|#UWW;  3g\rD"!@+PEY^|Et1++I&00g`tP(6m?O[[[YE EQ,+>>~ٲe...l6 .d`J*))裏" 'LvZ'''Y EQl6;))iɒ%] .d`Vcc~XUU,:@0zW_}ݝt2@Q]dIbb#:t@  4iT*եKv,:>?bĈW_}ӓt3@Q.\hoo]AӴwǏmmm ̂.6l% U(+W?-:tt̘1 RTǏg`tϏZn]@@, 1@QU̙cmm`X}Yx13РAk׮g` Peee~zBO?Ց1bԨQ̌;zS~0Y0@QU*(iiŊl6q\.g`tL 1bÆ 8x D?VTTT*҉$7{lfT۷_tY1P8f̘0r>m۶ݽ{x/h ܻw- 'O &L]<PūV|q +V0ommOKJJ ӦM[n3G8#*ED ?ٳÆ efVVVVJJ veffvZGGGYtqX,֔)Sd2ه~xQRI:0r͚5BY555| ;'r޼y+Wd^0sYXXd{ 9sfxx83w|OzIDATKrrrRRX,&@KW\\'l߾t:OOTfv߾}{/^T( _lY\\'@5wwW^y/ f/_տBo '%::zcƌp82ߎvvv˗/d[l}68- 6m3rrrRRRf'Llٲ(E:.2@QL&J~).l2HfffWd jhhغukii1o#E(Μ9s~~~X< EQԩS%ɧ~zqq@&O(''uSttQLMM#f-EOCRرc]]]ݻt(P?իWqo.Zhƌ̼` o߽{t"ԩS|>>|Ff!6zMA 6mccxb͛7ggg']`gg7o<{{{fUVVٳƍ 2B2,..nٲex@PzN(>>صk.".!!LJkwY [zɓ?0^p87o~wI1jǏg´4q &&ٳE"Vڀ[4M&&&nݺuСخ@JJJd`Bؽ{wvv6, 6|Wx@{P4bEFFOo3{ƌ3h f|833]۳ MdҤIK. `X&MJOO_z64k{ll3JKK裴6ҡ Ǜ0aBXX'N>|X.k{!177?ܹsq'NA qӦMcǎ.^CRI:~߿رcuΝ[n100$'';88@6lXPP?gϞ7oVTTtL$M0!((YMMM?3 P(tvvHLL d ybxѢE111wNKKqFyy9~*#""F)ɴ=KR奤TUUi{...AAAӧO6l2@Ӵ+&LgϞ#Gܸq5/lmmǏ?`f;v̙3 _|>_􏍍1bD b^|Ř}/s .;lذh>Yr… onn,=KǏ9R*N]s8N~V^=~ǏTWWEرc10Kp\̘1#G$@Gq\__߾}3&--F)tȑf~}uKKٳg:B |Gicc;} N9vXVVV^^^YYB iƍe`֝;w[RR,}! ]]]{9, >>>ǏʺpBIII{{;h 5jThh(N8/00K/D~ 4(**K7\?sΝѴb7N$i{R~]?~Y/44tȐ!AAA6s>}ٳׯ_ohh M[ƌӿfUWW20KgX,++H???0@/40yA]r%77777ҥKw0Ϗ5j+W޽M۳tqpp ׯ0<(zȑQQQ7nܸt҅ rrrn޼J:fg„ ... *//߳gϭ[k/Äd#GϿxٳgϟ?_[[džJ${nС u|̙Cbaaa!!!mllHB0,)**jyyyYYYwcC}||&Olnn;vϽB0 """((} AAAC 8qb^^^nnnNNNUU}mcc3jԨ20ȑ#YYY "i{{AEFFzzzZ[[B0Xl6}w޽}˗Ϟ={ܹF:p8ydPYJh۶mMMMڞEiPPPTTTPPP߾}|>P@ D~~~~~~)..=}+Wt*1GGlj'ӇYw.((``A```xxx``YKKKҡ$ZFT>}:;;͛:P(ݼy3SO?ڵkͤRnnnqqqMݺu\oTTTxx5& t r.......]ξrJmm-TRtĈf`VkkkfffFF+,,,<vvv8 [wrÇW\9st鐐-[10d֬Y 8@vvvVVV<t4i~pccc+++.^x'Oh5I:Ei׮]/_f`? ۷L&]'JRWWɓ_pHfr8课N_T*UaaaLL=h  JD ^.*RPQQqs޽{_yƍSNe`Qظz:pܤRH$255Ň(JƍyyyW^ϯQ*BpҤI}6R{,b999y{{{{{{yyyyy9:: \." v@P[nUTT߿<= /))a`EQ"H߿XPQ*JT* 򆆆wwwUTos8ggg֖@s HQQQppp_K;@`nn.,,,\]]]]];yX,Mfz y뭷BT*xm|>_ ,bwW|#x24ݿIENDB`fdroidserver-1.0.9/tests/metadata/info.guardianproject.urzip/en-US/short_description.txt0000664000175000017500000000002213243530567031566 0ustar hanshans00000000000000short description fdroidserver-1.0.9/tests/metadata/duplicate.permisssions.yml0000664000175000017500000000015113323343071024275 0ustar hanshans00000000000000Categories: - tests Name: Duplicate Permisssions Summary: 'Test app for all possible ' fdroidserver-1.0.9/tests/metadata/org.adaway.json0000664000175000017500000002623613303240575022011 0ustar hanshans00000000000000{ "AutoName": "AdAway", "AutoUpdateMode": "Version v%v", "Categories": ["System", "Security"], "CurrentVersion": "3.0", "CurrentVersionCode": 52, "Description": [ "An ad blocker that uses the hosts file. The hosts file", "contains a list of mappings between hostnames and IP addresses. When", "an app requests an ad, that request is directed to 127.0.0.1 which does", "nothing. There are options to run a web server", "to respond to blocked hostnames and to direct requests to the IP", "address of your choosing. You can download hosts files from the", "app but it is possible to use your own and to add certain sites", "to the white- and black-lists.", "", "[https://github.com/dschuermann/ad-away/raw/HEAD/CHANGELOG Changelog]", "", "Requires root: Yes. The hosts files is located in /system which is normally", "read-only." ], "Donate": "http://sufficientlysecure.org/index.php/adaway", "FlattrID": "369138", "IssueTracker": "https://github.com/dschuermann/ad-away/issues", "License": "GPL-3.0-only", "Provides": "org.sufficientlysecure.adaway", "Repo": "https://github.com/dschuermann/ad-away.git", "RepoType": "git", "RequiresRoot": true, "SourceCode": "https://github.com/dschuermann/ad-away", "Summary": "Block advertisements", "Translation": "https://www.transifex.com/dominikschuermann/adaway", "UpdateCheckMode": "Tags", "WebSite": "http://sufficientlysecure.org/index.php/adaway", "builds": [ { "buildjni": true, "commit": "ea5378a94ee0dc1d99d2cec95fae7e6d81afb2b9", "subdir": "org_adaway/", "versionCode": 13, "versionName": "1.12" }, { "buildjni": true, "commit": "4128e59da2eac5c2904c7c7568d298ca51e79540", "patch": ["defprop.patch"], "subdir": "org_adaway/", "versionCode": 16, "versionName": "1.15" }, { "buildjni": true, "commit": "0b9985398b9eef7baf6aadd0dbb12002bc199d2e", "patch": ["defprop.patch"], "subdir": "org_adaway/", "versionCode": 19, "versionName": "1.18" }, { "buildjni": true, "commit": "ab27f4dab5f3ea5e228cfb4a6b0e1fbf53695f22", "patch": ["defprop.patch"], "subdir": "org_adaway/", "versionCode": 20, "versionName": "1.19" }, { "buildjni": true, "commit": "695e3801e4081026c8f7213a2345fc451d5eb89c", "patch": ["defprop.patch"], "subdir": "org_adaway/", "versionCode": 21, "versionName": "1.20" }, { "buildjni": true, "commit": "65138c11cc8b6affd28b68e125fbc1dff0886a4e", "patch": ["defprop.patch"], "subdir": "org_adaway/", "versionCode": 22, "versionName": "1.21" }, { "commit": "unknown - see disabled", "disable": "no source in repo", "versionCode": 24, "versionName": "1.23" }, { "buildjni": true, "commit": "f811e53e1e1d2ee047b18715fd7d2072b90ae76b", "prebuild": "android update project -p ../com_actionbarsherlock", "subdir": "org_adaway/", "versionCode": 25, "versionName": "1.24" }, { "buildjni": true, "commit": "ff97932761cdee68638dc2550751a64b2cbe18e7", "prebuild": "android update project -p ../com_actionbarsherlock", "subdir": "org_adaway/", "versionCode": 26, "versionName": "1.25" }, { "buildjni": true, "commit": "33d4d80998f30bafc88c04c80cbae00b03916f99", "prebuild": "android update project -p ../com_actionbarsherlock", "subdir": "org_adaway/", "versionCode": 27, "versionName": "1.26" }, { "buildjni": true, "commit": "743d25a7e287505461f33f4b8e57e4cf988fffea", "prebuild": "android update project -p ../com_actionbarsherlock", "subdir": "org_adaway/", "versionCode": 28, "versionName": "1.27" }, { "buildjni": true, "commit": "eaa07f4", "prebuild": "android update project -p ../com_actionbarsherlock && rm -rf libs/armeabi/*", "subdir": "org_adaway/", "versionCode": 30, "versionName": "1.29" }, { "buildjni": false, "commit": "71ced3f", "prebuild": "android update project -p ../com_actionbarsherlock && rm -rf libs/armeabi/* && rm libs/android-support-v4.jar", "subdir": "org_adaway/", "versionCode": 33, "versionName": "1.32" }, { "buildjni": false, "commit": "9d63c18", "prebuild": "android update project -p ../com_actionbarsherlock && rm -rf libs/armeabi/*", "subdir": "org_adaway/", "versionCode": 34, "versionName": "1.33" }, { "buildjni": false, "commit": "f2568b1", "prebuild": "android update project -p ../com_actionbarsherlock && rm -rf libs/armeabi/* && android update project -p ../org_donations", "subdir": "org_adaway/", "versionCode": 35, "versionName": "1.34" }, { "buildjni": false, "commit": "7442d5d", "prebuild": "android update project -p ../com_actionbarsherlock && rm -rf libs/armeabi/* && android update project -p ../org_donations", "subdir": "org_adaway/", "versionCode": 36, "versionName": "1.35" }, { "buildjni": false, "commit": "83fc713", "prebuild": "android update project -p ../com_actionbarsherlock && rm -rf libs/armeabi/* && android update project -p ../org_donations", "subdir": "org_adaway/", "versionCode": 37, "versionName": "1.36" }, { "buildjni": false, "commit": "70da32b567122b701cdcb1609b780eb85732028f", "prebuild": "android update project -p ../com_actionbarsherlock && rm -rf libs/armeabi/* && android update project -p ../org_donations", "subdir": "org_adaway/", "versionCode": 38, "versionName": "1.37" }, { "buildjni": true, "commit": "v2.1", "extlibs": ["htmlcleaner/htmlcleaner-2.2.jar"], "init": "rm android-libs/Donations/custom_rules.xml && git clone https://github.com/dschuermann/HtmlSpanner android-libs/HtmlSpanner", "prebuild": "rm -rf ../update_zip libs/root-commands-1.2.jar libs/htmlspanner-0.2-fork.jar && cp -f libs/htmlcleaner-2.2.jar android-libs/HtmlSpanner/htmlspanner/libs/ && echo \"android.library.reference.3=$$RootCommands$$\" >> project.properties && echo \"android.library.reference.4=android-libs/HtmlSpanner/htmlspanner\" >> project.properties && find . -type f -print0 | xargs -0 sed -i 's/org.rootcommands/org.sufficientlysecure.rootcommands/g' && cp android-libs/Donations/ant-templates/other/DonationsConfig.java android-libs/Donations/src/org/donations/", "srclibs": ["RootCommands@c940b0e503"], "subdir": "AdAway", "androidupdate": [".", "android-libs/Donations", "android-libs/ActionBarSherlock", "android-libs/HtmlSpanner/htmlspanner"], "versionCode": 40, "versionName": "2.1" }, { "buildjni": true, "commit": "v2.3", "extlibs": ["htmlcleaner/htmlcleaner-2.2.jar"], "init": "rm android-libs/Donations/custom_rules.xml && git clone https://github.com/dschuermann/HtmlSpanner android-libs/HtmlSpanner", "prebuild": "rm -rf ../update_zip libs/root-commands-1.2.jar libs/htmlspanner-0.2-fork.jar && cp -f libs/htmlcleaner-2.2.jar android-libs/HtmlSpanner/htmlspanner/libs/ && echo \"android.library.reference.3=$$RootCommands$$\" >> project.properties && echo \"android.library.reference.4=android-libs/HtmlSpanner/htmlspanner\" >> project.properties && find . -type f -print0 | xargs -0 sed -i 's/org.rootcommands/org.sufficientlysecure.rootcommands/g' && cp android-libs/Donations/ant-templates/other/DonationsConfig.java android-libs/Donations/src/org/donations/", "srclibs": ["RootCommands@c940b0e503"], "subdir": "AdAway", "androidupdate": [".", "android-libs/Donations", "android-libs/ActionBarSherlock", "android-libs/HtmlSpanner/htmlspanner"], "versionCode": 42, "versionName": "2.3" }, { "buildjni": true, "commit": "v2.6", "gradle": true, "preassemble": ["renameExecutables"], "subdir": "AdAway", "versionCode": 45, "versionName": "2.6" }, { "buildjni": true, "commit": "v2.7", "gradle": true, "preassemble": ["renameExecutables"], "subdir": "AdAway", "versionCode": 46, "versionName": "2.7" }, { "buildjni": true, "commit": "v2.8", "gradle": true, "preassemble": ["renameExecutables"], "subdir": "AdAway", "versionCode": 47, "versionName": "2.8" }, { "buildjni": true, "commit": "v2.8.1", "gradle": true, "preassemble": ["renameExecutables"], "subdir": "AdAway", "versionCode": 48, "versionName": "2.8.1" }, { "buildjni": true, "commit": "v2.9", "gradle": true, "preassemble": ["renameExecutables"], "subdir": "AdAway", "versionCode": 49, "versionName": "2.9" }, { "buildjni": true, "commit": "v2.9.1", "gradle": true, "preassemble": ["renameExecutables"], "subdir": "AdAway", "versionCode": 50, "versionName": "2.9.1" }, { "buildjni": true, "commit": "v2.9.2", "gradle": true, "preassemble": ["renameExecutables"], "subdir": "AdAway", "versionCode": 51, "versionName": "2.9.2" }, { "buildjni": true, "commit": "v3.0", "gradle": true, "preassemble": ["renameExecutables"], "subdir": "AdAway", "versionCode": 52, "versionName": "3.0" } ], "comments": { "build:40": ["#RootCommands srclib needs changing on fdroidserver"], "build:42": ["#RootCommands srclib needs changing on fdroidserver"] } } fdroidserver-1.0.9/tests/metadata/obb.main.twoversions.txt0000664000175000017500000000037513303240575023705 0ustar hanshans00000000000000Categories:Development License:GPL-3.0-only Source Code:https://github.com/eighthave/urzip Bitcoin:1Fi5xUHiAPRKxHvyUGVFGt9extBe8Srdbk Auto Name:OBB Two Versions Repo Type:git Repo:https://github.com/eighthave/urzip.git Current Version Code:99999999 fdroidserver-1.0.9/tests/metadata/info.guardianproject.checkey.txt0000664000175000017500000000060413321215145025332 0ustar hanshans00000000000000Categories:Development,GuardianProject License:GPL-3.0-only Web Site:https://dev.guardianproject.info/projects/checkey Source Code:https://github.com/guardianproject/checkey Issue Tracker:https://dev.guardianproject.info/projects/checkey/issues Translation:https://www.transifex.com/otf/checkey Bitcoin:1Fi5xUHiAPRKxHvyUGVFGt9extBe8Srdbk Auto Name:Checkey Current Version Code:9999999 fdroidserver-1.0.9/tests/publish.TestCase0000775000175000017500000001353513323655167020417 0ustar hanshans00000000000000#!/usr/bin/env python3 # # command which created the keystore used in this test case: # # $ for ALIAS in 'repokey a163ec9b d2d51ff2 dc3b169e 78688a0f'; \ # do keytool -genkey -keystore dummy-keystore.jks \ # -alias $ALIAS -keyalg 'RSA' -keysize '2048' \ # -validity '10000' -storepass 123456 \ # -keypass 123456 -dname 'CN=test, OU=F-Droid'; done # import inspect import logging import optparse import os import sys import unittest import tempfile import textwrap localmodule = os.path.realpath( os.path.join(os.path.dirname(inspect.getfile(inspect.currentframe())), '..')) print('localmodule: ' + localmodule) if localmodule not in sys.path: sys.path.insert(0, localmodule) from fdroidserver import publish from fdroidserver import common from fdroidserver.exception import FDroidException class PublishTest(unittest.TestCase): '''fdroidserver/publish.py''' def setUp(self): logging.basicConfig(level=logging.DEBUG) self.basedir = os.path.join(localmodule, 'tests') self.tmpdir = os.path.abspath(os.path.join(self.basedir, '..', '.testfiles')) if not os.path.exists(self.tmpdir): os.makedirs(self.tmpdir) os.chdir(self.basedir) def test_key_alias(self): publish.config = {} self.assertEqual('a163ec9b', publish.key_alias('com.example.app')) self.assertEqual('d2d51ff2', publish.key_alias('com.example.anotherapp')) self.assertEqual('dc3b169e', publish.key_alias('org.test.testy')) self.assertEqual('78688a0f', publish.key_alias('org.org.org')) publish.config = {'keyaliases': {'yep.app': '@org.org.org', 'com.example.app': '1a2b3c4d'}} self.assertEqual('78688a0f', publish.key_alias('yep.app')) self.assertEqual('1a2b3c4d', publish.key_alias('com.example.app')) def test_read_fingerprints_from_keystore(self): common.config = {} common.fill_config_defaults(common.config) publish.config = common.config publish.config['keystorepass'] = '123456' publish.config['keypass'] = '123456' publish.config['keystore'] = 'dummy-keystore.jks' expected = {'78688a0f': '277655a6235bc6b0ef2d824396c51ba947f5ebc738c293d887e7083ff338af82', 'd2d51ff2': 'fa3f6a017541ee7fe797be084b1bcfbf92418a7589ef1f7fdeb46741b6d2e9c3', 'dc3b169e': '6ae5355157a47ddcc3834a71f57f6fb5a8c2621c8e0dc739e9ddf59f865e497c', 'a163ec9b': 'd34f678afbaa8f2fa6cc0edd6f0c2d1d2e2e9eb08bea521b24c740806016bff4', 'repokey': 'c58460800c7b250a619c30c13b07b7359a43e5af71a4352d86c58ae18c9f6d41'} result = publish.read_fingerprints_from_keystore() self.maxDiff = None self.assertEqual(expected, result) def test_store_and_load_fdroid_signing_key_fingerprints(self): common.config = {} common.fill_config_defaults(common.config) publish.config = common.config publish.config['keystorepass'] = '123456' publish.config['keypass'] = '123456' publish.config['keystore'] = os.path.join(os.getcwd(), 'dummy-keystore.jks') publish.config['repo_keyalias'] = 'repokey' appids = ['com.example.app', 'net.unavailable', 'org.test.testy', 'com.example.anotherapp', 'org.org.org'] testdir = tempfile.mkdtemp(prefix=inspect.currentframe().f_code.co_name, dir=self.tmpdir) os.chdir(testdir) with open('config.py', 'w') as f: pass publish.store_stats_fdroid_signing_key_fingerprints(appids, indent=2) self.maxDiff = None expected = { "com.example.anotherapp": { "signer": "fa3f6a017541ee7fe797be084b1bcfbf92418a7589ef1f7fdeb46741b6d2e9c3" }, "com.example.app": { "signer": "d34f678afbaa8f2fa6cc0edd6f0c2d1d2e2e9eb08bea521b24c740806016bff4" }, "org.org.org": { "signer": "277655a6235bc6b0ef2d824396c51ba947f5ebc738c293d887e7083ff338af82" }, "org.test.testy": { "signer": "6ae5355157a47ddcc3834a71f57f6fb5a8c2621c8e0dc739e9ddf59f865e497c" } } self.assertEqual(expected, common.load_stats_fdroid_signing_key_fingerprints()) with open('config.py', 'r') as f: self.assertEqual(textwrap.dedent('''\ repo_key_sha256 = "c58460800c7b250a619c30c13b07b7359a43e5af71a4352d86c58ae18c9f6d41" '''), f.read()) def test_store_and_load_fdroid_signing_key_fingerprints_with_missmatch(self): common.config = {} common.fill_config_defaults(common.config) publish.config = common.config publish.config['keystorepass'] = '123456' publish.config['keypass'] = '123456' publish.config['keystore'] = os.path.join(os.getcwd(), 'dummy-keystore.jks') publish.config['repo_keyalias'] = 'repokey' publish.config['repo_key_sha256'] = 'bad bad bad bad bad bad bad bad bad bad bad bad' testdir = tempfile.mkdtemp(prefix=inspect.currentframe().f_code.co_name, dir=self.tmpdir) os.chdir(testdir) publish.store_stats_fdroid_signing_key_fingerprints({}, indent=2) with self.assertRaises(FDroidException): common.load_stats_fdroid_signing_key_fingerprints() if __name__ == "__main__": parser = optparse.OptionParser() parser.add_option("-v", "--verbose", action="store_true", default=False, help="Spew out even more information than normal") (common.options, args) = parser.parse_args(['--verbose']) newSuite = unittest.TestSuite() newSuite.addTest(unittest.makeSuite(PublishTest)) unittest.main(failfast=False) fdroidserver-1.0.9/tests/org.bitbucket.tickytacky.mirrormirror_1.apk0000664000175000017500000001600513323343071025671 0ustar hanshans00000000000000PKTID"META-INF/MANIFEST.MFmKo@; ߁cDM}mӤ: n*9 5V]@AX~ \8ݓ/d.${]ӵdkHR 9c2Ow]e'B{M.]bu ^} Ks2P`rZSQ"O+>G{QC K839ERH+p:L8+ќ <)poPK"PKTID sb!META-INF/E16A6514.SFmKo@ཉet(j|[u ̈#O 6MԸ;Qx DZ`4 !ڬo6㒇2;h& JN!c0e]_m#L6x}k6 ڔ/]^F„vE_+_Z| OrޗmXNWzZ|50%AJz(4 /z(*؜8cMY8f!3V!ok)N\O_N%X@4B ClYǴ9W Z7D Ʈ&|{^-RwzV]G^U(H*)A.tvFoEs Cog8 cPK sb!PKTID˼h 44META-INF/E16A6514.RSA3hb5`jhδUѠUѐπ"`PǸ9٠9ޠ}3#KO xjZ 8٘CY؄B y @af w6񸄹R3S \@0f8E8K41*!{(pyاSǞ9_a #O-9_{Jy_1o\*H)O+Y^wٗ#[wqao޳Wf{t7WVߒwlѥ~,n~KClիQj̊ =3\j]\>RfcKCV`ES&=of}<3#bEyY`򱈱Hfnh̉- .+M3(fEl SUoK kNpf\1uG;kn5+/P')vfyuZU^fc/`I-,|U{J#^{KOC[o 3YbYv Uuz2űJ4̫dO o-l{fӟW!7_hz?qJXӤ~ͳzc_5|lrY׉R%JIQ!j Ԕ4;޵;|swf߃OyS=*S6=5#SX>ַCVҬX|# 1=ݢG2s9ۨlRvtV-W~1{3jC4nTr&dzmx<֕G·kzoe-] =>w3hTUk*.$l>tn5,{#?=zӳw:EQ~,]v?s^<y{ kocdl~86 վGrYuJ }YdGmG,wh=RAn ϱ΅͸iV3>`צ^ܤ_:ggM+|'םo8Vh[} S Vh(hx_5tnxe&l&Z*#3$Y JTirdVY|<>Èo"nDmC.{c;Ltп7~?+~%ҟ\5Pֲ7\D1x56 pb[~EEr\ d _N"Ǔrl={2p5 i][5:tds,xKQ~~Lğ9Do9-Gze-Jy*y]wVhsw1quoOJ|q_PK,lX{$ PK n=Du\\resources.arsc \p(5res/layout/main.xmlres/drawable-mdpi/mirror.png Mirror Mirrororg.bitbucket.tickytacky.mirrormirrorlP,attrdrawablelayoutstringD( mirrormainapp_name8L<$8L<$8L<$PK n=Dm[[res/drawable-mdpi/mirror.pngPNG  IHDR00ri["IDATHc<@`b0aTèQ F5jQ+,`IENDB`PKm=Dad# | classes.dexklW<}Q{8N@u"Iv5Nli&xwbǑjTm$RDTB HBBj UH@A !R! c0oι;wܙ5[ӹy+u}o?~tx}7>SKT&-E U !#4uB 1?C _???OǠh;87/A(Jl_A=8APEP>gsp\W}x~~ nJ%zݠ QP' gy&A4I ցS`<2ATV`} T6 "ĄErXKX2ԁz@bAHfVUJOUUPώaOTIVթ Ovz/ꬕ:N9R^OT*RU*}KEX uv^.) ߝMF#;tZ8өGqv]5H̢WW:c|5~X :^D/F#O ̩RMܾm1RleĨs!&M<]eҟeo-}GqkI<ؒrӒB⽨uʱrB_RKi\x1J;lwg.zJ {bIs$}{=F^RIɑrSpKv!kyߞ.J/%Ƿ?_pڳ]n{[#h:Z]ԾPet gLSk (ZLo^.[k~ڪ%.[piPD3u&+yzbb]Լl>O4B \,ا|ӷKNKLM:nCW?`M zgɐ-Do6oY.2fCئ}e͹;)vԜo┝]s*h}60mg16gv1 ~5Ϙl;Mќ+MO o.JUG@\Kh?~~͑>CQ#mr5y XO:HyY(\=)иI&,8-.@kK.KZE,OJo rVkfУ<")8i>)66&("K)qYMU ҧ N $)|LZoQܹ@wϘv.W)YjYb73EgRr]H/-jʋcK?⚎Wd7-/b.[2 $K!*ZgQgX~M'o *A/o}R b{m6|SܻcZX٠bY0 >(ʹ{>xos(LGmR~oSKJ!(<9vݟ= ̘ig?W^(#Np(ٱ1Z[;B+_ ii; ;>W_B@HY۪`|m=AP6hC->tL _{Y=FPbQ:&z#̀w*Nqv2ةmŎM7PSF=YQ(*Sj_7457|Yg{k+1R*j3JV(ո\6-{`ПO1=n5kwk4%GEVðD_ _TǰG ۃT˰}Hߌf')ɠB0#;F1}/ #˾!qۆ}HPKad# |PKTID"META-INF/MANIFEST.MFPKTID sb!dMETA-INF/E16A6514.SFPKTID˼h 44META-INF/E16A6514.RSAPKm=DU res/layout/main.xmlPKm=D,lX{$ AndroidManifest.xmlPK n=Du\\g resources.arscPK n=Dm[[res/drawable-mdpi/mirror.pngPKm=Dad# | classes.dexPK fdroidserver-1.0.9/tests/extra/0000775000175000017500000000000013324115531016410 5ustar hanshans00000000000000fdroidserver-1.0.9/tests/extra/manual-vmtools-test.py0000775000175000017500000001203213302025213022707 0ustar hanshans00000000000000#!/usr/bin/env python3 import os import sys import logging import textwrap import tempfile import inspect from argparse import ArgumentParser localmodule = os.path.realpath( os.path.join(os.path.dirname(inspect.getfile(inspect.currentframe())), '..', '..')) print('localmodule: ' + localmodule) if localmodule not in sys.path: sys.path.insert(0, localmodule) from fdroidserver.vmtools import get_build_vm def main(args): if args.provider != None: if args.provider not in ('libvirt', 'virtualbox'): logging.critical('provider: %s not supported.', args.provider) sys.exit(1) with tempfile.TemporaryDirectory() as tmpdir: # define a simple vagrant vm 'x' x_dir = os.path.join(tmpdir, 'x') os.makedirs(x_dir) with open(os.path.join(x_dir, 'Vagrantfile'), 'w') as f: f.write(textwrap.dedent("""\ Vagrant.configure("2") do |config| config.vm.box = "debian/jessie64" config.vm.synced_folder ".", "/vagrant", disabled: true config.ssh.insert_key = false end """)) # define another simple vagrant vm 'y' which uses 'x' as a base box y_dir = os.path.join(tmpdir, 'y') os.makedirs(y_dir) with open(os.path.join(y_dir, 'Vagrantfile'), 'w') as f: f.write(textwrap.dedent("""\ Vagrant.configure("2") do |config| config.vm.box = "x" config.vm.synced_folder ".", "/vagrant", disabled: true end """)) # vagrant file for packaging 'x' box vgrntf=textwrap.dedent("""\ Vagrant.configure("2") do |config| config.vm.synced_folder ".", "/vagrant", type: "nfs", nfs_version: "4", nfs_udp: false config.vm.provider :libvirt do |libvirt| libvirt.driver = "kvm" libvirt.connect_via_ssh = false libvirt.username = "root" libvirt.storage_pool_name = "default" end end """) # create a box: x if not args.skip_create_x: x = get_build_vm(x_dir, provider=args.provider) x.destroy() x.up(provision=True) x.halt() x.package(output='x.box', vagrantfile=vgrntf, keep_box_file=False) x.box_remove('x') x.box_add('x', 'x.box') # use previously created box to spin up a new vm if not args.skip_create_y: y = get_build_vm(y_dir, provider=args.provider) y.destroy() y.up() # create and restore a snapshot if not args.skip_snapshot_y: y = get_build_vm(y_dir, provider=args.provider) if y.snapshot_exists('clean'): y.destroy() y.up() y.suspend() y.snapshot_create('clean') y.up() logging.info('snapshot \'clean\' exsists: %r', y.snapshot_exists('clean')) # test if snapshot exists se = y.snapshot_exists('clean') logging.info('snapshot \'clean\' available: %r', se) # revert snapshot y.suspend() logging.info('asdf %s', y.snapshot_revert('clean')) y.resume() # cleanup if not args.skip_clean: x = get_build_vm(x_dir, provider=args.provider) y = get_build_vm(y_dir, provider=args.provider) y.destroy() x.destroy() x.box_remove('x') if __name__ == '__main__': logging.basicConfig(format='%(message)s', level=logging.DEBUG) parser = ArgumentParser(description="""\ This is intended for manually testing vmtools.py NOTE: Should this test-run fail it might leave traces of vagrant VMs or boxes on your system. Those vagrant VMs are named 'x' and 'y'. """) parser.add_argument('--provider', help="Force this script use supplied " "provider instead using our auto provider lookup. " "Supported values: 'libvirt', 'virtualbox'") parser.add_argument('--skip-create-x', action="store_true", default=False, help="Skips: Creating 'x' vm, packaging it into a " "a box and adding it to vagrant.") parser.add_argument('--skip-create-y', action="store_true", default=False, help="Skips: Creating 'y' vm. Depends on having " "box 'x' added to vagrant.") parser.add_argument('--skip-snapshot-y', action="store_true", default=False, help="Skips: Taking a snapshot and restoring a " "a snapshot of 'y' vm. Requires 'y' mv to be " "present.") parser.add_argument('--skip-clean', action="store_true", default=False, help="Skips: Cleaning up mv images and vagrant " "metadata on the system.") args = parser.parse_args() main(args) fdroidserver-1.0.9/tests/extra/convert_metadata_to_yaml_then_txt.sh0000775000175000017500000000054513302025213025725 0ustar hanshans00000000000000#! /bin/bash if [ ! -d metadata ]; then echo 'no metadata directory present' exit 1 fi fdroid rewritemeta --to yml fdroid rewritemeta --to txt echo '## stripping maven, kivy, disable buildflags if they are set to "no"' sed -i '/^ maven=no$/d' metadata/*.txt sed -i '/^ kivy=no$/d' metadata/*.txt sed -i '/^ disable=no$/d' metadata/*.txt fdroidserver-1.0.9/tests/org.bitbucket.tickytacky.mirrormirror_4.apk0000664000175000017500000001467413323343071025706 0ustar hanshans00000000000000PKX^D``META-INF/MANIFEST.MF]MO@; e%`֏V(\̖]F`]_/FdɬH_lv40UFZFWpak'w@iFiʚTܚt]U&p-8ZtO0lg{}®qgJ~`R g z6whGM3w6O?D^)nnvL&n꽶[  m88,q8›̎wNhOPK``PKY^D v?META-INF/E16A6514.SFmn@ཉRI@Q)؈G }ژ&jsCr$+ jD@Ђ[JGӛplwW!Uq@Ja)υJ=(ݦ`$/͆I550$'S@Y,%N6` ')=̓IOfg#bs 1f h){<,h]Exۻ+WQT!`PL- WD#!&]6`\:Vػ1 m ✨ (@Z;p$f_+ q*e/?PK v?PKY^D74META-INF/E16A6514.RSA3hb5`jhδUѠUѐπ"`PǸ9٠9ޠ}3#KO xjZ 8٘CY؄B y @af w6񸄹R3S \@0f8E8K41*!{(pyاSǞ9_a #O-9_{Jy_1o\*H)O+Y^wٗ#[wqao޳Wf{t7WVߒwlѥ~,n~KClիQj̊ =3\j]\>RfcKCV`ES&=of}<3#bEyY`򱈱Hfnh̉- .+M3(fEl SUoK kNpf\1uG;kn5+/P')vfyuZU^fc/`I-,|U{J#^{KOC[o 3YbYv Uuz2űJ4̫dO o-l{fӟW!7_hz?qJXӤ~ͳzc_5|؆'=wyg=Q.ɮJ[+mBmύLix^|D,'zkjҔ}N_wbgg-/ ~ZcOO^7NoR?_ ͍Gjz2MXիYqGkK6mQ}I>{}PK74PKK^Dټ{( AndroidManifest.xmlTMOSA=壔Rʗ@)F5lˇ„4FkK[R00.\ +`ҕ?Kky3ssܙyQppl'pOCxE%S'7DL|%N&_SXw7'w\FXDy ә>G+ -xFƦ@o3ƪ}R滏yړh3nʱJ VpݐhW[xF]h " ^pÖ]*=28TXW\pUURĜ;dtZWʋUUsyV[:͠8 .~?%Ax WO] P5:P5me',-aKEm'iPO/ dR "?Y|J'\ /$?{}AWqدMG#~-DŽ^Z35Ekr|~Fѿq?Z>C|_k>+(_v.$_S:ʔT 0.~YŮqC||{\FQ"\J.ee .4e <ϑ'2Nޅi=7 ȴ (2#}3 u{JƸKaXjl2XFEIA$*KʸQE)M?]^eTQSJbc4eɥ<~Rp´'<, XФ'k' i/dSG.]ix&esڰJ<\&6|,RBpƅ"*R\1mVbOTʮ7[bU§NXQR1KᚔrikaAt F Aչרn˭S V~r)֪f7H+( 2L{pǐ(ySbWT A?) ބ:mLROZEoOP^qIK_h!;(nEenۯzUEkՈܿ|W"o_u%/~u%/I/S:E|EJ%`"4%ԥ(jGpkQx: x6VgKxfY2ݍUeCU9"$cҴ)$T~]gZ4=w&p#W%5 KrbҿcV\nk.IuT^U fZPf%m5UYžo)=%@sT{BwEðw)+܀v/lב["Y Bsbe؟w6$7PKOp <PKX^D``META-INF/MANIFEST.MFPKY^D v?>META-INF/E16A6514.SFPKY^D74META-INF/E16A6514.RSAPKK^Dټ{( 9AndroidManifest.xmlPK L^D- resources.arscPK K^Dm[[ res/drawable-mdpi/mirror.pngPKK^DOp < classes.dexPKfdroidserver-1.0.9/tests/repo/0000775000175000017500000000000013324115531016232 5ustar hanshans00000000000000fdroidserver-1.0.9/tests/repo/obb.main.oldversion_1444412523.apk0000664000175000017500000003376313243623367023763 0ustar hanshans00000000000000PK!AndroidManifest.xmlKLW0CBEAy 0T /i 0‶iREӅ鲫.jLirU˦kϜ+;t.ԙ;ι~a*!j Q=XA6m}FC[ǵ * } } ;2?tB3who@s%T! =J ޅEDOb)cK[TFEhz ? z U"t ZBϡ_2 z 5adh2*DLS .#2h~[+*J:x:GZZ ,UstG2$qwF(hA).,Ӫ- g15s!ښE`ަ8TbiΑ;Ms [UԵ\mL|Iǜ1>%ḇ_|K-%=Lb"5 %xV1i5/exdT"1f@ Ct樀+Aehmݐe܃*frz7xt̽]^ew&sxW1D<|h]e U6lbKj*"f%UJUP{]9]&1s4qltƱFwAiwp>8ZvEơ(5B 42])&"|o翉Xe0+>^f ?3kÓs 3YL[@t+3`mwn';:, Ѝk=왱5sQ': ,bGgg/~i@8APu Uּk^^C8Gs7j~ChS)fW-1!Gfb${UvyeHS*: T*fr.戨xm@Lmu+aRQlb>O=9rz8"9Q#GGѐ'GeU9%Gcr 1s+~Tr$1s}<&5I̮N.|УfѬxjJkV>aُզ? {@볼*~"N*Vom}k),Ã7(As} oH\uziV3]wQ\ Kgy'byNa +볼S,oЃ^B\ yF7xN{F7xxƄ7xzƅ7xy&7x{. >˻ޤ>}*>=*W'T!'nPKr PK! classes.dex{pT}޽z] t%$ i,[  ɑFpW+eB$`ǎ v=L2qұ76ӘN<̔LqNqɴEN~}~Ǧ劾;^oұ߼}}7^~mo%I{A'Zd%("K t~0' Yx   ? hp= V0  =%`Q`\/>*F <NY&/h'8>2`|<.u:x9KCSjjz}`78x 9p^[} D&X z &#8 ΃%p||sp Dj@$8 ΂ I%x ? Bh]`788cH` HFœ v:tM`3A#Im;}``| c`?wxTx-&A}T{Ы4tL i*]+ߞqi|^^+VLڹ~]YcJ?r.u옚Oҗc+EJW?Я~#P=?CJǔߊuڬhC =K|d)yx,m&]"H!1 % YGOu5X*ʊ0rR#[ J~MOR /7-tEuU1zQFM YA'*MJZZQ YEL +yI?$ #B jZeŮ&bEcv#d0gȗo9_M煬?1,-!kD\SNJz"?G|'3B'DPS JnTy$R}{s);w:PwX%Lߙ?89i^CU3|*xywѹG ƏnlW=g "z)!-"G¢ek39'$u*z;P"mLrQ)Ԓ8o-ˡ;G=99?&8qw Ej)yJIO} T^TUs%(μӏNӤbDTسN.ױ*>sTZ;sQ{SjRP(bgg%B|I)̑O6}`%PTrrhFDҤ_ Nް={z>Bs(::92regGe7Q5_]\hy'w ƕU}mX~W#T.!jLYx1a,ع~M;prIgl7T*i.`f 7CaW^>F\ͦsTNS~2b!oGWX[x43&ÝWjpKpW:G~ikS۸CEJR T\~:8\J>RY{]Am) g\!X^y.o{*2(x8^BqP'Y1McΌZHa ">P 2)u-d Xn!.٬ RE\9zRPEz%J˷)ߩukV2%7ҹ56+[+z|庉%v.iU.@EE+gWYKacÆΆL(3c ]j|%. MdVKVMDCBO%'FyL5T5TG>O=أ^BA:NDFRe=X]{ک/cr+,6#uslأ~ƞa=-u:֍zҵVTa04Ƹ7ln/il>z"m'&\؆kHWK \5cbݮwf+.bN~k#vezfm4Y4BQ)gg}Uxryv(kj(H3̳śbY')x+($EcQ-cUMԤXF]_'Ϙ8E?b2*hZ=ƼmHG_HmeQ#D g}^g "l^ͩe2 ;㙛௠EFɹeA6%FwѲ3VnQmG-:"+u`f>(iߛ<HTa 5nĐ~h8Eo3V>J{^7,c؃^CBiZּ%+͔5GV2{h:*)G#TV!E#|.1~.iI;cR9f65]#Si}e ++YUAq껮ѫܔ٤4\G򻎦˭,zֈV/AƼ_D{k4Mךti~z A?cFn8'bk;5ܸ[B4CFY#?%AxXS;يX+V׼{!s7CF;2)667omk ~c omj  H;.  MNO544 ,,-111 &'&&111*!''&223&(&&%000!"&%$ !!# [|u\# RST776#G9,  -:"%*   1@IDA=DJCCCUUV{xu~754,,-{yw}{yZ[\srq[]^zwujiha``79:542\`cKMO988]_a϶^_a׶?>>hkn@ABvut788#"!$tRNSL  SZV6("Vj.ڨTr5T"\r9EhqnnJpDACAD?J?J?QG4V,vRN.=wIDAT(c`@F&f $ّ98/\XXDt8!!9SJZF.!'?k"pEbɥ@Ĥ+WQ$%%38$q-3+dyNn^~MĭBs6LViԃ`P^"qY.P:T =nlb@`hnyYkD{GgWwCo_k$ SBӦ30"pU(IENDB`PK!res/layout/activity_main.xmluN@gmCR"EJIRSYBBх(6<£@KtV 4޽j+O$S_&n7>8 w:TZ^&zԕ.h;6W:WBO>nwǻ4Yy)uߒYjQh#+rK]ٮQ]oq$tv^0jm2Gf&jj~*ywM$,x󎳈sC~]jV%e/i!_[ ?PK-jLPK !resources.arsc 0<xres/drawable/ic_launcher.pngres/layout/activity_main.xmlOBB Main Old VersionSettings Hello world! obb.main.oldversion l, 0attrdrawablelayoutstring08Ln ic_launcher activity_mainapp_nameaction_settings hello_world@L`P8@L`P8@@@LX8 PK!TQMETA-INF/SOVA.SFmQOP{65Z) Y$zO9z= үZr}۷yd#Q2P#`ZS DujKij-VDA?g]R8 %BPNR^C̥߭]?ɺ.ڻ,/IG5K1eIQSF4YJ ٸcul_^cq0E8]#C|:mcx1g tW9Ni|s:ݶm'pl8 EuQ aADԫ 7ձ]1ie4`;Ey#b_a;{"x* D)>wPK!g*qMETA-INF/SOVA.RSAWPI@HhbhҤ)RI/#""ń*"J'*E6JX@ E"R&_srC!<*))qE!x yyUA@In.4oFD ]A "r! 0Lb2 A) Qp؍H Zb0x 554}T'"\G:pM5'/MXWeDdm<7tUPW#(mELbVq3sJ]]p@Ca'ŵ#LwQy +$h*BdvfW]Xŏꕙ~ +xkRHʺ8BOۿSB6Wf R끕`@"77}bXwSRQB&/CS7N+nFO0Vd \XVDKO?ˡeЈ `1bfeYmb4_ρ:R;YFn7w \8odx6kB#c3qͫs6a.^ek4}u[)r`3-vp J کtӚ4FاBnyۆ ]e*u%S}r?u.~HFޘr(ylQRڪP<3. 8`As摝8?p~u#$0cM;EDt⌗]7t4y:=DBNy.! Ù*&ŚƀY:Ҫup>MP9KZ?5jRvfκf.Q{8VxVcV:)׊ "܌W">c6h;UӚ7F*^3KB\*W ŒYCp݀Jw!2<ϒj]uC4k\X!2$U秹f$Sh{JEi U5#NnBmb6*}tLkoli<Ϋ8C^> ?9l/D W-A83^7<%{ U=y+{woJ^ lEp h]Q_}r(=.Ϭpσ K=(k/$Cפ^ sxke;L`v2>, $wa Zfe$vfB"Dc'$pGEct~@$( 5Ki!0kҊ'Q3w}vt??ۉk2 Aʿ[ц- ~6ğ<'$5X@@5-PI$f^)0m#oBpr#{ tj FP"YhNS]eTsÎuTaUs܈-bƯ0HgYM|  q  ALH@si 'tщ6iVbhY?~\eSMNs9l"П 00ɠH4P0  *H  0!10U F-Droid1 0 Usova0 160823133116Z 440109133116Z0!10U F-Droid1 0 Usova0"0  *H 0  "IN>ҕ HCn\]EB_y?֣C0$6؏S:xvEݰ l*EqMdZ3>as5jxM3'd\aD\?Ѡ 9/ }3%tnӐ{nEdX &8$TX-:Ff;-J!XM.A(V[B k!㌙֐JK`VAjR!j(Guߋr_s~D%0(9C7&n 3V2;T[ɫG*~+hsLO$;ʣXn)4 Y 3Hi: 5#@*g*:$Gt]a#k`/EixSO:xQm_Vsv^eA$1p<ۣq^lfbO=^=.mJƓ!,|ַMO!00U+7PF.MO0  *H  t?|VXӐB_>Д%fp){NiCFW;7\OsPZ~‘6.d6)6CyƠp[cJ^n_8C-=yVUipϺ)r:8Vة黻5t[)oWK4u xXL[ 2"r$Zwqi-DT%%cTi"yZ,xYY'c@r,+ѩѕN LWVd;JehD-Ӭj+Wbr(#773̬QwƼs}֌~]c߂F V-@'e ݰK蔀wI#&A`* x4D+'^^MkQ@cS.h.oC5G-űB F:yjY3V|'tQ>}ZMsoQ#e$FtkGzmk)+{ =qȜSnۑ_NkW)ԿJG= e:dQqY_>Y O PU,ҕ HCn\]EB_y?֣C0$6؏S:xvEݰ l*EqMdZ3>as5jxM3'd\aD\?Ѡ 9/ }3%tnӐ{nEdX &8$TX-:Ff;-J!XM.A(V[B k!㌙֐JK`VAjR!j(Guߋr_s~D%0(9C7&n 3V2;T[ɫG*~+hsLO$;ʣXn)4 Y 3Hi: 5#@*g*:$Gt]a#k`/EixSO:xQm_Vsv^eA$1p<ۣq^lfbO=^=.mJƓ!,|ַMO APK Sig Block 42PK!r AndroidManifest.xmlPK!{ _classes.dexPK !=~Rres/drawable/ic_launcher.pngPK!-jLres/layout/activity_main.xmlPK !resources.arscPK!TQ"META-INF/SOVA.SFPK!g*q#META-INF/SOVA.RSAPK!/k *META-INF/MANIFEST.MFPK 5fdroidserver-1.0.9/tests/repo/com.politedroid_4.apk0000664000175000017500000004407113243623367022266 0ustar hanshans00000000000000PK{Ae[LwMETA-INF/MANIFEST.MF}Mo@&AJJ<(QWPp}AM83ϼ#8 gdl(x9->7:%*gaff9n6€J;V v;5h- GeRuoSׅh!yUwB@|`ahXMsJ3f[[@Mt>3bYBZzkWG4^J%N!p`Bb2Smp=lR.ݻZ|m6pk\VsNe ȃll7!u{U.~1vP{w퇾e~h_ƪ]#gѼ;w:1`PKSJ:META-INF/RELEASE.SF}M0߁n&&@¨eS@ e@?8jFo}/']@^R$ne8'#Aih8b\|JHU p3lښʞT㯍YZe^(~ϲu8 ugB(gڒ)EO0iSȯߛfc34(bRRAQ(">b|0ޣ^\.Xn}G(Ouq,4/i,9vZJזۦ R$qP` 9i$$UQ,sTdwFh#/{¥A KȏSq*mG\S{lgդٱ`ׅQͅn8p3ۯ\^ow e@}{Sx`@?O!cW @EjӢ1 fbPKSJxMETA-INF/RELEASE.RSAU?ԋXc(ˡ5:-d_&df4֐:5}DKTFa.%ƒr1B[{98?>}^K0J  @XȅQ8D_-@*<(0 CAi)Q#p 0 7AI"V<Ơ Cɞ~DIK2Z } 0bFJbFȝK !JڄxȠq^2Sª*᰸yX,k?,(<7@2qdVMS'NPdu  ՙ|ӏՓ_5hj^ <ň:?3Z {:]!u])һ20dU)9CԊ㼓$VqvܾdU./+Ɗ%$ .J vX78.]F3;W :u;U<8UX~Zq.W4W10& ϳ.Ʒ% aeFJMgSxϊ I].u%RQ42zreD8'{{c8h3{/8̈e3VtG Ne OoQ'0i3Yi_žO+n֦F?)hӬЍ\v -*k4<sYT*"[ýi uKņMI&u?JHwu|9HvWc(s"O3YYHқ×-9g89Vˊ1hzwy.mwl3xLmD`mɻYS*r\t| OxwOкA;;L[{ i\]Ԫlr'Yw{ M?2@l*'ue{AE!5rŒ॔VCwn9(u [x7V~WZ5ȩmJckN4)-?Vi9,cywh 'w̪Əy{ɦR{ucw$y WK2O$6k1V݅GSV`V #>/>{b{ Bmߎ3,18_n(=Yeu rL1tv`T @v(&Ч8[}^7R5PЈ3y]v5KӚ#Ξm˳U@{@[:#>OVh veU:=e7V L!۰Pʶ_a@W#`l_s}?(^] WPKՖԑV +,)=Vtg|QwE}gS S&K893]'DR#NR?9%|}/yW7k- +|!1ۜVLx&F󝂹~kZqyB_t7MNl [5URײ[\Y$ Wy\B#-Q[=oW37}7_ung,]/͞d6ná[2q.s\˚9/,)E9K٪ik:ꫤ_ y^2y-_~ղW {PKwALEAndroidManifest.xmlTn1=IۡM4} ! ,*VU(,RPUYB,o X >߱I Ɍ==G!q"z}C[=A$~  b߈ \&EN|&߉_5Oڨ: MfgIO '<Ƴ( '[_5:[ \:|ҝՀ-q A}y+J@SCMp{]<g%;5q~Jv(5DG:qs pDq.o9l.c\"u/dm$kۛ-Ha||:@Cu<_%&}Ie7vav Z7wIENDB`PK wA22res/drawable-xhdpi/icon.pngPNG  IHDR``F PLTE---mmmCCCFFFFFFᏤ9݃ל!!!PPPNNN'''vvv;sޅ[[[CCC:::AˠCtRNS &+, PL"+$4*=/DCI7M%9O8&:Q'R~\Sji]p`}0@s{?#cglmiIDAThS@iM V`-ĔRM-}+xpC+*K95%HlRhL4yM}2dH,/p09E-=[ O#mV‚cLzt;4,.*tD]62Ke%'6.' S^Q t/BF0a.Su ѩ*L& V0 ZILmmtLTv);.tv%]r@OWp.I^>u@oGppW33<'η7sבvoD7hE8B`)0n@08<?@wp </d5T=0m hc"A`ڽ~1]=}Fʯd -1SXkKaI=;n YIENDB`PKwAA2 classes.dex[{`\e?ߝ;L&d҄fh;7I[2H4}"hdnɝtAE+.*>'*q},*,ʲ-e?\|Ws9|;߹&i6l/e員'u{w.y'"cC>>^$[~ЦmuAOMV [!zAt? 0 X1`+p)p+[` |x @kT@ ǀ~ ^^*W `-pp1ہ{<|x t[@nn> << ='ׁ>& v0 XuqVN=g?~ D j"`>|x m3@ c@ x>aQq)Uh)u9La&l6 .@Um@?vK8>pp.WWU7G0@(^{Ө'),bL8~GJ N: W3_x )*%oUKZ1/ΧSmQK~JF7;~c-رԭhQi&(dfo)~퀃ϐC~O:aca~;=}ζ(1Pm^xqCg_rڪur-;WzzqLKVotczR%BWc.I7O%]O >^%;>nл$?zK!zԇSVPAt#ƭt=(i%qNNjUwK>(N>'i/z8gD青Cd琏JOIj 2=ϫ1OSOo')utR: zJ3}P>/UjF>E/;%VcF oIYb;鿈sFNTV;y?H~i  V{wD'8qA??".#nz\RnVhF_#Klu ޫy^QUGQM/;znVwp}*@{E]u(RmO">*+XDXHv92Skݯ|n? .- :j\*~a#FH(f/ z^Oͺݿ.mHѮKXVj7;yyQ.>y32?z˶J,>QKz+e_HЍ&fϨ9/w L!^?qZ!ynºxn,a衞#l)^E%=Ar5W"ϧ_%C_w gNy7Q&Ը<'-HqT܇s(GOzYhnS§W*NQIwz>F'n6rˇҊUCՐƲ7&si;]jHSKτevp rugdnj,Y`/ݳ7ڙ^9m;!: 蒇 A?z|{Ko?jq4vS_x;mgvUB(ΏyLk\5 2*iǿx$<)32Y,㸴*jk6m/8oMYToAZ0o W0D^ &jĻxqߺ<]e[hȭc519H., |ڞ}rQd 4\ɻpzT~|r"Z }5νy\{& L\ԍ2%鰦KrMo/UXM9j=㭒 xje<5a\u͍%^T)`~Lj^8ꂻ_t(p\|wC+d΄i<`X|;AGPy7z7=>]b3R2nI6O]Z j fPۜ]Yc9h1ɕ+]pb>ƺ}= [^׺Y91\)5m+Uscn8\ jgW( }%/+\s5?vUa=@W*Ow9}5|Tb&Bzjf6##c3>7ԫ̍O+*h ϱsjy◺ZY_uFi{fKfߪ[T㼢?l?WkVgSȧ2|CC_g/޳#VKV >iwakd];VvnPu:I]'uqRw%ݖq]:'5ݐM{H$ m#t%Uطwhޡ#_q3=3ϗgSm96Gn%Ri3ŠkS(kaa״i(^kd=MXDִFg.5gdl_UkSqqr C`d@Ѓ{l3 ?,:DV6JFSSt";9fl~g*Όn/I6im25N&x=t,~l A)nfD.9jg_4a\&-M/f-97K} 3蝧3̎%F}`!OȤFXR9X.<9{h<@0$cM 3׺+g0sg͕HXfy=3" YiPf2OGw9uY>OaYbLB2)ZkGy꡺(n/Xɴ\TiUQvAy=Fr|{hBe~T~VݰЕg;85MCUȧRyEaA^GR\N'YDqdTͩ4tj$^pcXO T>v${֍$! ;VMKY3G&9hrX~@r8W#|s÷.qjC̜®q`QVq \1ow''RJHΎ]_>8w$)Xz{# LHYx_N\ Z!B{i8' ?$'wǏO7ڊ6w/PNi⛭Ј84#Y-.Jܫܤ5"NOn7CAOnmS]7yE7\!ʟaX?%'EŇ=A; SW՞Ֆ<5~H΃)wT{7*݇0!wo41PK{Ae[LwMETA-INF/MANIFEST.MFPKSJ:META-INF/RELEASE.SFPKSJxMETA-INF/RELEASE.RSAPKwAP= res/xml/preferences.xmlPKwALEAndroidManifest.xmlPK wAg)HH+resources.arscPK wA %Cres/drawable-hdpi/icon.pngPK wAbeee#res/drawable-ldpi/icon.pngPK wA7T//%res/drawable-mdpi/icon.pngPK wA22i'res/drawable-xhdpi/icon.pngPKwAA2 -classes.dexPK >Efdroidserver-1.0.9/tests/repo/main.1101613.obb.main.twoversions.obb0000664000175000017500000000000613243530567024550 0ustar hanshans00000000000000dummy fdroidserver-1.0.9/tests/repo/main.1434483388.obb.main.oldversion.obb0000664000175000017500000000000613243530567024613 0ustar hanshans00000000000000dummy fdroidserver-1.0.9/tests/repo/obb.mainpatch.current/0000775000175000017500000000000013324115531022420 5ustar hanshans00000000000000fdroidserver-1.0.9/tests/repo/obb.mainpatch.current/en-US/0000775000175000017500000000000013324115531023347 5ustar hanshans00000000000000fdroidserver-1.0.9/tests/repo/obb.mainpatch.current/en-US/icon.png0000664000175000017500000077402113243530567025032 0ustar hanshans00000000000000PNG  IHDRgAMA asRGB cHRMz&u0`:pQ<bKGDC pHYsHHFk>IDATxwTEv9sA ("Ą"((( P* 9 spstNtzq&9yYVws;w]{"( Bo!Ah+PPCO(PPMGnYP( ;P( O_ChP R]y?Z~P( ſP( 2U DeX.C8y=ZB+QFS77ϻοӅʀ_$"=/fu'zG<|޽w BPF% B v@߇?8y>m9oYȀ^B2P]hPP o@>NȀU' *ԋ.~O8f4. z~r^&Xd!GP( RP(D+ڨ,TQG{ +\q'Y)We-<  ӄf 㟋||S\޿BO='4+~|[Bz&zFh?Q( ⯢ Bw"KePXa. ģ@8/h,~b@7ZOhi!B]B^++d/=,A w;^>^Y/rEt2~B/ Mnq|7*!ߏBea}Be"_*P( P(vW6mA?ꭿXޞ/X( ZSh;ꈱ,ŗOX@T^qp黼\BeB&d+]nߩw;.x+҄P8$QL\%xE?81Lϕ|D?,QAcy(⽋?:U +[ B/FU( ş:V A[oztd}=x3zNmŸPY BUһ?Hq9%% ߄dWBi]qkYrBe@o $;A 'Aקl 7BX~d$3AS( şUP(n_^*qw[Ie !W y;vif7FhSre^l@dW˕֯E//B+U$.ʖ{po@1 ˮ \磊)AVA+[z!:OvXP(TBPt]^'J?IzY:/WJ3<_P1OPJ37s@I*2 +""ʒr Bt^d/ dWZt ;A+A$O<,YqOxyuS2`+>h,ϟ\ϯ580rb,+T\Vύh^|*q1`3?@dw{ ^P(T@P(=n ?ڎ,xe'B :Is;hZ ˱y\ Y-eB^ͤ,<A#Rixܢ x#!5雔wh^ zE7 K3"j#aigfgo5ֆNQ c~2g|H;Dgdڦ}_zVK;Ek\;-C3hnlFYڂ4X,`:Di;i|MGB`6hDoyC=LIڅzDͤ)1OcE4GV:EЙR(NG='Bi>-}dshO#1z6z:5 hd$# I%:,!c%c&~>s0[1ޞ5<5y>*ޒW5<7|4`$vh{+= T7>GC{}#25~^3w0Nbʼ pD&>7x Y hDv~3u#^0 f;!|9,5c9H!.xyOgRiްxABྂQO]?} =PfvF4z\y'#Ӻ\}?u ix=G$4?j|+-BeŊL4Ę|q -"t@i;"aĥYL0*[hdbM& |AGK{o BP(/`T_D@)\A N$Md>N9!+bޥ D ۝뢔ZNaDbp?x/v+ݳ S~e>~:i|>6"ll5m0$Zomh[lѷa/4lJ|4Lƴ&M͖m-a*Elգ6a& S(ЏUEGl+D] ƒJS ڎVXi-5/i F[K؄.Ԉz>CCt\z%r5ZT^ 4iLǫԉ"j(44ԇh7*#Ip,17 QpBF80`ބoAv$w܉9x]ޑOm3C|}c'/D1vX!6LC[?G`|4cl4SpKyC/񯹓!|Wc#~柙p<=mi/򚼽Ƨm36Mj2͍&3f'f{a1e0U7{ѨtqB67{.=~cO{WX9=?9x?RV$BeH4ՔD'deL@Cb,+M*+edL+eM]BP((B"W_yPoY^V EO>er2+YNe /'2_%'F'j ]M)KXϿ}wtdsj>Ǚ7}Fw-_okg<$%+m?Y-ϴ{|߆Z>k!޵Aҝv"Q@ЪBeސ+wގq/. ylA~pLVyeJ( ſP(r,qR}B/WKie@LK˓rpPY RYq t{Gb_G_q,e?^gY1 KeŀYfjwZ$*HvCTM[\h˺;2z*>%ؖh;jԹoֺ6eg_֮,=d@)>viY/XkZSVR5,1VLcJp ,8=cxu-ZXEP/gBGxӶ (iFmMq2u+݋+[  gyk7W)TJsY$"( +UA=C?hif )lJ,lDoAgeP qp4ċդԟ:믢Fa65Q(%!76  I &;; ^hDomnTZp !|+7x syGhlv;=76-f| LC{aPK9aRP]0KYiy!DYw~w'®F sW[0K5_sɳ(%*-oj)F^nϷ8s#4&4xş?7zwox:yJ(w{?Y|_ExуE Ԃ5ޞ5ړp9^9j^'ۛN/x2zN81]`^'^'&3Ȥ$a =!L`ȕQ_0 *Fǀ B?P(q&KՖR˕ +2 vi'{} m9=%w9+qr(%5b$VQfulIOjI86,q}b(ͰKβ&V-l=ڲ$Nm~IoZf7{zRKN7ɫoQT5qdjYzBB ѽJ%-iKKŤ촞.R-;KQ4piTBeD%\}r+$8%! MQ9hIWB;04:̋h0D$eZ$"20@UCUm74BPK(JЦ#ApaP;Xj~Xx{B?3\Sů/$ߌߍ28/an'NMp r 0͕&JoF&Ldi~~ش_ (K! ;q,BqH$k|'a78]8kN[?a:x$4vzt>=? @ 8?9;8ځA4?ZoDQ~ )_2825TB42" E{Ai4Q>ŨKbx 4ƒ8{u_ :H@'!ɷ}^ BGW,/';|S|3v@؊߼7._̗o|հco>ܗ)D]^aomVy 9½46L>it5盋;!Fqy&z:.:![[-mfQpg^ۓ^7u9S?ϻ /bn'/dIBe{!j!B o#nu!1-J2@\zl*[ D]d@/yW=)MJeT]  P(VXjwQ=h,o/䊙^}_=:4AA-,R,-)Y 8y=ڗVtSz.*cС{*gQQ3#z%dkWr:~r qV[k<*o-m}3K4. 4WIE?H}zgѬ{]M]Mu!G;8ק;k:CB޵stwtwܴ^:WZ;?{!] tJhagKt>l/P Ob|Ft. ӷ!z @e<$tO@Ģ5 aE)݉,DZ"BaRmNQ 4*`CAU &}&@ OaOa F` Ӡ +,:O LP 6:t XaAUthTPKW {AF͡ B :+tQcq?`%x )D`NpsBc?Lp| xV| =Pm08 !pG‡Ïqnq?Ä ?Ä~>& _^xx`?A`0y0@a0S/F, A< 3g#(6!7p;^ _ k_T\ӱoe*|oR<)sxQ1 'bL^#y*I|40Ɯf-_&xu.>N.l*Sm=ޕw.·]o{1T-GxIxQ˱Kv 4M n;l)PY9*4/ RBG% ş[ȇU^ܣ$T& S~X&p1^.TʕZ&k)C}܋J QE=)rln q΄cc_cXoyfRߧkzS}EK_zu gMX}cZ"Y`4IXE[[>vU=;aɬ2{ʻRWc']})}^ c@H@/C;Q+D;TE(Uሣ1ȅ idP @0W!J>SLQ&L޺7E [OQkьOy cw“_F~/9؜1f%|yü`*6f]y ˼ΣyESu_lf%1SKF??ڟ7wSrşF'ϝv^o|tog|YSHr+wfr}-+dJ`<^^r] (8$P@]47hv)P(:B#zYj_V V]]kr>%Mٕo(8~Y QoEŽ0.aCQmc::"˜ۭvk+[#vL*9N0sc6Şc_cF >|x{/ oϦ){>U3}wȱ2qCwzp8Y|Ib6x_{5Є7ϡ* o򎼵ۋ84!rAN?i؏/8y~)d#b_W ,! p} 88{Vǰc[a;u>!~o| /2C3oh*Hurf|2֘9yƼj'}Z4OuOJnXyii=YUˢ<'=!ť}Xz*|oȄ@zH/QP1;o şP(jv{J~M5B[L*%'k|( ]n=ai"hr҈!QOE=ῄόICuHhd~6^ dGт?|4ԬR/:NXYU箰ִ(3==| ;#2m4![)u'h@xkjO}CާO]>zcLHDQzYT}@YԲ& ן@`0lXXaFOBуР+u!pEBYWP!p"v*lt60XiMSJc eee~ ѿjF\`EG^7 xx5x;A ux|!\  Qja4W8 srP/Dr? _L\~$~qF*ɗ~wK[|PA2m_EOJsb>]64;dW3̍F} ;ڨ꿚7[s*rEݗ+{XAW.:'8Zcrffl/} ݹ,ZXUaK^WUN n=gv^9'2{^v+;-k(]& /7$XZxh\fJn*P99av2 MZ_?P(gT@P;2R}*'FxY :>BVOr%I/Sbjq?m 1e[}7kjEGYaWjLR}vx}]CKm/-sC^,=;m_?//[9kϡڻu-=m˪kMCh2O?e{6b%R45#[tRZxT::o:fc)-h$ م ;†hﰀ{laG K(90hJVA=fI{@op~yXr)ˊ[#Y!,J *L@R2g>T" /Ë+8886¯O1޷;oE,O?>x!o .!J_)MW(ܭCv]&Y`A  @Zx @G0_9!]JWzPR*2Q,e/2 BSn/ BOGM ſ*]k]"*KYXɧA*#(S寈`+%ŏ}Ρ]czbYq[UI?DŽ z4blkYOowxF{XRyEL7(jP|N[N۴hW4V'<90<阀ԙ::bPQ:5P SP UQv?5D4AsjAM,/9Z^KY4BS4lB)TBU1zHh. y~Z7;<w 1RK*_+%Ppy Din3fAM$t1f%&wT.xK>Wn0y!DWk5\%I|Nv|w{'ca6{NINf{`)'Gk|,S8C1?Pʿ`r^S|E.~>'6sFf%qK{<[ݱEٕkhuEZVCgg㷌*C{__^zG_\rm^P2r@X;xyp4r{P(4IPENG.z7ySuMTQAɵ`aGҕhV`h2E$:paCF-> #""KEаٴ.NX1>25eBaW{3%,սt5q/#WF9gM 8xuu. >^vƣ-s,m-_|V9cYsxAr9; #<1]O,>_T> cog?xӌlY ̹ ?-tG"yyѢ`! :  8wXkο:蹈/|n"bXqJ *8֏V oB 1Gw~J p pBcC[=T=N(E)Q8bPC Jz칇={? a[߶ݎJ(9օ%#IS[#h tV /4L* ȥ/Thp!\ B4"-oWC4½4ra(Bgig{$e1I-=5%2'X7-yGi3+ͤB2̊<,x)"gk7-p^p5 T[_xٙ{.9wf2ߋxzb2 ڇXVij!T^9I\.]9Beˁ" BBGBe^M e%ݗK[ҥ]++1b?fN\aW+Fh CCZ#t5i1ui$ vi=H4cOթ3}s- UQ,H@YI> z {~q~v*W(C_9@8ixlxK<8F X@E. dEQ!pJ:rHK:]A"`(Kc-li{*aàq=9Y 3?`q6KǼ/9| 3wY* XNi0ss٩G;Z,M~zUG=6?Œ%1 YktgUߧ] JHS_ے=f%2𗿷r_'zS Q- n]u_w_NdB@OHDtgPkg[Q 4D/P{7dOr,s$cm Ε,:f[,l-;zQ[J-ݣp_|Dܒ3<䴳t[+V3Q;튝5dqlHyTbceеZO6#C<ԊwQ@OD"}HXn .DhyC<"qzC! (!MB"Ǝ n ;]6X ,j0K%w;TBg_@zܾcYA + dxy(D1B3G2#H7zH7BQ\dVQb#5 688y|^qTiq_^^E1=xO#o,2/ObV&0!W- \W D,^ҔPz+A7fW(%BFmBe pKFcwe?ON`dő4L*{{lxzziHKJv\5ՉҊ&^Kz@_! =ֵ tU =$ϴUYZΣvcY~kwd}3R;>=ʲ ,1,̰4ޤ!#c0FREjDM!E(BbzA*z/ %j]GP;eȈضPV0Ԡ*@ p#!HM^.||_xfOx+Tsy8o݈rSq'wd>S<51ms1"su\e#-m4_6zGxz;NT*Y[4FὙm=pcoNq)5Ǖ2^cY 'g= \&獬!JA~(BB ҬO0^ƒ4"4Y9/THȕw ~솿&F%?\dTϨף??\̌a-o;k[޲菵qZۈmdԕmBe(*b5 9hg]i,0hK#4WAK ۗ(hD$<"Gw <g=WBO=F8n}ob `QVA - aB4T@#4u` i-:XyŏKKi }L|6_NB>Sp Y%^>mp,oo>ikUig--[mݲsYYl?C'SvU~x#@.2.ecB.P؋ Y RxyroB񟄪P($ =rN-Yo-U Xz+:Yށ(6+zϷ޴)G2˗pjWѾssXH6o-?[)m_?_ԗ'.blt^e{teF4Ё:& mP 5PQ($2x}!⑌-1HB[#A C@(54-1ń[BP mDofGwVݶ;xH=L=rp]HGO:Rqݸ+HyY^{3_g4[,-__N9e/w毘Sͩ7F]??~#3==捜7sY3>}g98-tㅮ (ҌP& Do?/r_nE\-zJYP(Q ş+^C4zSh;/Ÿ>r@ȁ~vM_j5oSO~e7i{E; s9wu?ɱPf׷;j8w~lm;>bja]ߊiµ4w\6@ۯpc/Il6[$ajoW ?DtaN-yϖ ֣~!`G@`xBLc34|.&KA` $ y  2f vH$!mD8j*&?@SK#y=h?.iNoTz!^hEC%4D-O4w삣6~ݶQTT)-蜭5+fc٣Kgfޮ3r>|G9{o{vdR9E +?Cs.X\ܛh.[7 g(# Q<AB'υ5.z. şUP}w_.KeN ܎/_%}X$L1JZv[@aM_xPUfaGX;p[-w_Y>.w,0SR `; hLF}HvFQQiMfۓ,Tbb`]A2M>tfzh{, ePb&b(Y`^PBcm>چτ$3"ԷBPUL FO:tX@|OÎ8qU܋k d`/(%>uxO~oG(8eL4/kOa s>"#h1d1'sּ8,[ %L,}7ݖQQó)ל8~ݑVb>BP]1#TX&dk0'Dz˥w]L?@!We@/4t\zA痮+&T@.z?&H|OkL?cbbݜ!Fv\>Uٲ#Ң׹n69B>HÔKO'!Z㩰it/ޤ.~t{;E4 P;\L a4q}腎6**QH@fJH/Mao+ڂv7R( &KF k CzOD˕!:b PEkR0 yޤi9c}1χi&ފԉOɛݧ5cI9i'rrY3 ƬnM^J1(k{ج:eOS5vS믔HXnm)x+*wϑr]QOol-8.w8sr?OJ(T@ ~_r~@HhIĠ S?ĭV0b_(@4g=so 2ʌlgQVS˿ֳl̍(6GGփ7%O>/_6GD[%>i3isxJ5*mcٺ'Lv1%R]%Aՠ !jJP ?=R-Abk.W+q>y4%$Wp+IK${ԿF}7N9qkf"DEjh0wxͶȐ*a\S4kO%ڰٜ,uea M5%Rۄt4}b$ F dOA\B&2QJ&->J{` V `%4u]U/1l$z+ s*{L( ⿋@ʖ8Lp\ÀuSV>!] x=Ґfc ؍_}XܽoNʋxs=߿62ۛU2N7~0e_-Nrydo/U(XnL*?oa~+fAӼay٥2d56eDF87ט{Ήf\?ɥiBE]?$r`@=lf{ B \.wAP ߈J(y{t #He_]sFB6}P0]|ǼVvuGQp0xn^`=?[+mo_W( ;% PS@:ACS@`@AE64KN$U؋]5XE 63'C0-ok<;yqFϛқG:Qfk7 ?_o~~ /}QT0ǼydL{J{\ Դ+NQC‹ sqPa.X/|d4%#Bf RyL(#@C+Weo~PQn%r_B^d.W LR-U~rTۓ9 m\!ccnE|qi'dŽĎ4F݃}9M؇i&~ Ϣ:- {;qfU,|EJ9N 4Ky~>љH`L{KJJR:r+ şwvo ɳ ,ʡ2ښp7-Fs ?fE>FoQF`|0 U4csiIZM;' `?a)1ʥ  í.SlK^Ex Cn%7 8G2J:;!FTt)}IM)PEf'#-.>Ezfbzs<> /ieӎ}(ٱB-kk邃|B*-:\:$ed⋙[m@o$ Hx$dkVP%bA@z?2QPZ ̀e%L(@!?oBk =g?8c|D2_\yOTv(ZC06!jaLr.kQo iMŏO {(筬,3?v[GQb {YU.dkeL[s1-3--ϴR>Sm5[Z!֕^\rGa8C>hfC TC2( aNvXIС ѫ[Li,Hw B/'r]^`€+~>2p[^8CP/" אj) ؃Co-rk|&O9<,}f\ؼl2\`g^O^]p7Ʀx3{P+7I8\7z+rKGvRO_ɗ\q״x\7{G2;0sQ/*+'CeKLlr|`.O!nY01)hL*7`C<`i&}& &_@p,'tBP(0,QvR  'BD|PF~K x~g=ZHiq밊`էZ0%3eFlf\]=L[ej-Ʋٝ+ٮOz #4AU#\N ^y# vުd%UrWGdۖ٢mh[K)e16+ue+TǞ= S=M"b&a^JMh3:/GP Qr?Hc(vnx@"i"є>HPI @N Bmp)C[[EB tS Lw B"Rh!qA6vY4ٙʿ%|U\kub{|/ن0;dK2Utyڕٖ֓:a]§P7_4~y0뀫gԚOHBnˊG?C; I\kɳ.ڋŮ%sHDD U ?5iV(~P-H$/K{E> t@-Y9@ez6ש]UyB#!++) n=upaia;Tuio>oKoJZz泎Q2:dOӌ):6&s z4=q?9CTA-݊D  :46V`90X` hpXA@H[ږOP(Ȋ[Ʋ7)0a`w; p ,c9s|_xIyUӗſo1~4F]:_-x.^iW\ZFE_|QC޼zE9Ͳ+e^qwzF nOwGyjxaF.A瑐_v'XLK/z#g/15CK$ڰGR&'k)$?Eř>}MQq@3)aHaTz2FX)@>Eݍwf+ O^CpN.@ @6rq1~ꯅM؅EK)1|dO6ӇխrF1(N 5N̟Ϟ /*lXxg5}VԲ~o˥ >9ʼ)2SBvr+B ?$QP ܎P"_r +rTVϿ mGˀBn :^tgv*ZHl9=EĢ?#axʖzb%:=1=#ukY&mvTb}Zb"4դ&ZMG|t#M1/~4=Xi\K}VSV$|.샬/͕l8_wcYތZjյ6dΐl6 %bAޡJמQTm,՟'tZ@h Z<#ļ"@ʀ_οdUR.ĀVPPT Bq yf=LlW*0#Y/KEOG-]9сrp&S#:@ _*Q(MJSXKuӈ񍼁YKPvCvVۧc?-5$Tβ6.-UK==KbLc#RF14]JJ~ Nqx7=)<µ#aA4Z+8m `1haj=REdV B[^)  / ?y)xA?B""@5ӼLG[t?C؜91GSS44(ubMm?w\xuANUx˧/Ϟ{Ϟx=@{F;>yE_^KK|mƕg|dڔY?VةKVTx3x#.q؅ P Ke"AnWUA @LD?J(+NaAZAh´d"@ k [y{#"sNMߺ~l4Yf?M%}[-z[7-bz}=]Oq>b [G1---'*kV!%gYGl v&OR_ULYތ7gn} \mל gj1ȟj_{{j%Ws/M\|nv߉zǺyww9e3+P/ ?]@2lм @D(aܦ/Mn'[d/=l浀p yyuo2}!R9ޮFajFͶ~f=l͊M׹>r @[B1 dS;&$4c:JZNCzaF*ccŢh.SA(`C1B0c|0`p@6}ĵ_ҍ BPr СBVX8 N"4OEi sEoЛ1莞k[e`>GwKiW*{URbOo&Eޜ?#' =lґNFVqVG.\ɗ":X胷= )PY VmY>NLTY n|ֺֺ'uuXhKU`p3H-E7:L>b\V48ac-gQ 0Egя@/tvU( Bm%2!`$  <d@Ѽ@HC%js)}G+ :@sKi4Ϲ=#9)b,Ludk)iW+'m =b/IM__p03.ےu#P](Ȓ%y?TxBϊ bڈ] BDl%4+Sɹ ~gwQ_G\o%oqG&J%TV tvYJqL$uM]cC-fCKEnW>׎IXZ}rBWGH̾sGHhC6tJkl|z e/$fAQMh IhTr4C7tǠvшD<NP谐%R+ BW#4/70nmC1𚧐,dCq pҨ5XW4P<0=6>LünX%uٞs idzg,zko(z䴃i}C ?d-Ʋ+7ݸ2Øz_ZRjY,/QZljGV1o*+~ ^Kd"AVwQ5QQ =DLJIN/^& =ٛF+.z굁mkjڙ9k_ 9=q9jXzNjewQ/l-qkQ֑ɿYYv[U2ֱSl ;_S>1 XI?E/D4Do56Iż y3N) BO`C'@@@>C.;?`Jro>b0k<1'?5_||!Es|S7{wy^h.rw.ύ-l[P=9+-âiycrZ\My+|5Qf[qfգ˓Xi!tP j2a ? 'TT _>Pz (ş_B#JW/We)4 P?1 Tl?E?&T2-= .ޖtM6&{kKCچ͏n32?Pk}WӬ^RsVgu6'S }a'h8^qBC<)(TSC94E(D>t0`"o\P( ?2 Y 4Va(N8nP<,*+}h\bzBZi&`"^1 *3M۪,.0uGhboa)i;٥[n M/Za@`9^hCY(@5G;}Q )sph`S/g{ bxڇ5ﭝg~ch@b;(/ Jă oy8"T&3@S&.*]ҕP/zK.G'G/G* :J\IC%I))SJ+*2.MVF4rmQ4L (RxΡ?ƔU]/#Jm/,?M.z) }E룪܃.!eP&lKbYV"aH Qayp" V"nY$Hp110KS BP(l؍80$rV(䍑<ߑQ)ue})igYxTk5k"ʂ)ݓ/h"ֱ(i3'q$\yX} BP%vPBUD P vÇ+|:')~ۦnMviQՈ3\\n4_c|N[Wޛ~㊻Aq7{mMp eһ{VG?fՕi};R{e-ob [Z.Ji1ZX-m6q.ˈq4 :cM{>z{ C@4nň<8'+%mLw3 2P(  ^:t:48XFBX\@ 0l^4x~\6NړxHfQMjA;4V [ք|ܶ60=޸XI_ќɯRׂZe0ŽD@N)1(ƛe/䶃|\K. tJ(Q ş*}aWmp/1.J/Bei$kj1Qw>x9!jmx«*Ctm!m2Ok<c瘞t1+Q"P>|.F?ƄE4E5y8,7B:n~`~Y\BP(~oȴ S`?P7HCⅈ\@_<1zJoN'irۗSN{h=ӌGi#gSZ_V!7`Lͥ}[GD79ϏQF׼Gvb#6H]VBFhs?G6>cqf3#8/;Rr~']maŕq՛߭Zb+n޹[߰yk7Ӫ I}y ?`~|'xc0 bţ%dP3-*oBVȀ_G%TJw~,rPi'+/A\>2Yze0zæ;kOja˔eڔak,s~Q/zLtbJIDATTh2֕֕6_״!= ilNZHkXD z5I~_Eb q=lKB E! mCkxPsQ@ EFc˟[ BP(0  1(`%4 ې3- 7|[^E,??in7 flZ9?~>_g%Oº}lVLg ŋ7+}.~ޱ;swMIk#Z:XFvr܇b܍aRiӹ' 9%* ÅYQ T`@E9``0" H0ө]gyw7k׵:=y D53 `0U4o<@ UbSЗC;B\y&|-%SZf}*Xs޷]V3mXW;M]kйsC;K3ȬΚ1N=,劂Ca/$j?q^'뱎,mwݥ}j01ÿ D[Ͻ6}zzZ:K~N5JX:\wܞ?%-Ω%87xS8޾󆧡ls޹mFً ;̵ʭs[-A2F/In隿B䇌(q,W?%#U-Kma#[`3PJi~oN `0s~JST=@`4Rj2j \QDK,$O嬐C2^k}fm<-βlmgGvx{wNۇzCރ.|qJ;(z%/\vE Zj۽=j#GOe -:GZWwAzn{RqGuD9iZv~n5Z{huܐs!>9c‘ٻso[i`=j{ɳ虒9`آ 7g/hWJ/',m~6EҊ}{m칵ͽ2]~)[6ϒ{+7ɂbH&09"6-)ݟ Tbĉq) (]7ת `0q (2PC^'JWe9JFiu]uޏN99ć񉉹kDEFf kS֮>lGmUԌQ-u^$dk}76_׮e vyώwUY4}&ҏ'뿨;Ci%@z Zjto?SGehu=.TסMmtN[ =6vbpVꩃ zLӪ'򯭘6SSwf>uWorg*|swoD[㭱%F~y#򠼓y7p6SO3nh~R.==E:@\@5U@Gא3 F5>ƃ-6$L*B*\ȦU7<)Sz\}0Y"dX"bu?`s,?ڗ8WFXii;33#[pO^Mi3ڧu)k;;{#LJXZ>.} n՚ṳȥz3=^u֝ZݟJZqHkuC$Tw۵׏km5C?N?"ⶽ . \ܒ:cNnΔ9),*xF={(X~"ksrkq)"Rp̕in& &vp 1ȗMٔ+`!81@LkB%twYS`0 ÿ;?~!ĉ%RT/N:+|/sh/Wȵ2K=JkkQ4iz$LU=<"t{*zss!-mc*-Ecgmg+v\kT֍O#z#ԏzFN=嗿1vp# U̙@C+W8CmF M\]dwדVeEiJv1݇{?ps ϝy[䬧O^69WVUa(JK9:'!D?;MdqZN'}⽗"ha Tx$(x%Y=7Y,'A pɿj `0g :%~ȭ%'<!갉Hg7ؐg?e)^-&{Ք9jJŝmۗNcm5" w7~[s6xm^zg K^Ңnw>cN/r?9Dqn;@7EuV=>`Rn@7t~R=~u)*&K֚ ׆!VWk=Sϻnd$3g}guFΛRY=$\vD|{y磺vmp|Q9y uBNMN(}UiO{W俳=^yE,om#S%$}|yX bsS;ӏѾh! >fDrqb*_HGtCs1 `0'p$HxRXpR9wBu~耼C _IkyYA'+򂾧|{|z轫zTq%M2d̖S19/0bgeѤJ@B5QȾ/@+4 =H,>Kl<@TTgxٕ8jK#!1״P*';G9N5$'~OĎzتVSwca?ΧN[{/"R57iuV9)UCxVwIc0b-n,[ZQ*T埛< ̑+{sYeIn /=Z%R!qyLRhNf|J?ydO>!ӟ!N2ߔp1 `: *ypbZĖTk^RU@Q('EIrfXYZ)h,1""{=ړy3!2OSV _ʭ?9"ͺ?uc7ps'fDQźnztWEzF!n-03RNuξv}\(=?J*_$-yhi= ;ow([RJi%/g [T÷׮$;e:Mj~s<.As'ȇҋ73irܐ8hGzߑI>?%NA$T uӎ`0 f~rI>@o t(QQUm9NN{^EeWYsdltR)vj}ɖ^d+0ޠO"ERۤi]IѪVěY:pdʧ}g2.bݝ } 7uq7psZ5)*y7QdZO,s剼킈D ^r=S]]{hcqY˙&z̾!+Y87)W;^mY=*[f~*ܛm,\µ/Lw:xK!p_h%q*(,2f `0#8(NlNBƧbb˛jJ2hI)[e%Ox[QIP }%V]aw` c1u 2e*Q{gjzfG?QrMyVdv9#kܸi#cwp^4v|7HmdUbֺhG]ϻzl|NOo-~@Wj?N.}sy EќطΏIm5z+6Ym[ UVgnr zۭ ƚ ~]@t?ߍ~; dYk4M'c|?"\33{d<@IWd`t{.z>:#=w)YXvE%sω.J~v~C9kvxN,bΰo8&-zɒJw+ۙ滌R*s(E̾T2^2P(射81nSnzeL`0 ?}EG[+`Q Cv=]І|"1L $rn "U:''xR+o?VkZҷƲ^Io&vկH6彆Mjk^7uv/CtnL qjnq~MzwC-EP:[5Kvbh¨u_ڗ-,tƬsYzujUK ~ (ƻE7{}}TV:j[6SꭶV\"^S3?;  oś\TU>`0 @Ӂ$wqr!RHQBЛ!JĊ+.kMwl:VvrjǵjC^AZz =K1P~3 Lθf!J]uRzwshzz. Vu=e͌v=[ԡ~Gv-y2|(ж5Y;}?{)l}`͗Y.cO,ySȬL&sm ,ic&D6qBKÃ1^_Z0C`0 g~Nh/$DR$*PA;$ChIgL@:2O^g=8c8عzؚf=TzM}d7wxM)S Ck* .+wTz?;*ꋽ:|tUs¶K7_xgh=njwV/h6v)ZS$Oq`nss Ez<@k=NګTJ9KpFձ¼YwzT} FlȬ|%uo}̷ww-u5lTr}urLpBn۴fzyIc<:?o }Fj`0 0$9i1>1TV'r-vR ϗEYf-ux_=i[_B,s|Hкȑe'?׹0 'Gqq ow8+SW#psqմzcOWwԺNVnbw򟫵Vד8H@n~"ZOJ]YiY~КDnmqW`mڧf *-s|oh]iz-g[XZ%O[XG[/Tɸ{q)C4@a6U]L)JH:<&`0 ?}M5PI:52@|@\m/g3c՗2K3NZHY9INgšKE@әi!i.:Si~BO8Mm6޽X8. UӪPuWA{@WuV@nP3ݣյܝW @{V?T3ݎ IYArL'hj'V@+ZWX8cPZQUm<+Le ?.}^[z)ɀN*% aF.+q(!pT:&`0 ρK|&*Ƌa)6UP']3QLK$dť֕Ӿ5.Rv}{oC[ vEO;tu<4S♢%75lr9eɫhHugpssӎqrrp }q7Fp^w ~7 u 4 `vg\C=wC9Bc4+f #=wIBy;=}dwҳAaJ2YdI(sZCgc}O?opųҳ5g*W[6<Ϲ\ƙM_z}%YvbJ$:q'D7 `0}܃"/>x1! TEtֳ T:oYgãUUwqHLGgu_6\ӯykUwٖcjYۚwybvyvغqh㭸9}:D_EzxL?ok\Jn:n0a"s"-n{ؽ$m_Z;:ź϶rr͟dJ()rVx]w@vO7[Wu~R%'˄9SV3<bC?bJH T4l<8o}o0 `"z(( 2K\L}Ĉ<ΐSc|yU捷N߳k}ݡrTJ`(j李]'.=Eh~['uklcrQM},iwqX݈*O6F (G husju I7<==\ǯkXYcU*R|'fgdz)<\rpU`sgm}-:նwTkwi""2SCAtтrɲI']^,Nh819s `0 j186=G%UK,m89J.`_Bdm֛VP>~3vɾtF6G{RVgߖu樌?|~#<޺'(٥u3ߕe^>sowMX.pn0b"31v=|9ZO':ԟ0s6[`$ xW:t!~it4rVv,\a~otw-bI|U ;3{J=k=gx_oug?ln,.V [).YNyVMiLd{Zю\{>d!,8OhC *8e `0QH4Wnl@ dSA@F2?B亴C9*d$+0ʹ)弪6(qfЏխSK_={_|vc,ltlٵ;b5C^uSdWzIj`rr鴣Z^~bmzY}nm3m^,M153p }cC]*Mz|uw>7ӯ]6w|iT, |?0\ajYe˽3eJ꽩'l~3^yRZ~!XNf0\Bw0ו H'1Ш1`0 F@ ֪kވ]ݼƜ8uV^{SEʷZ9K'&.Z"ꏴC6UeU_zoǸWn]^}Ά ~]Ee߮fY{?v7:߹J/.K򨤨{r=syS|=v# ӺFkznAEp tҪs zsB)~k]tI;v/uC!}˚X~.z;gy_(_-]##qUCs9Aj!sF~Ù\8O?O< ȳ.& T__}'&`0 <rU%y_Mz!e)s)$NaTb5ϰ՞}[}ǔ) x, m_m-oHvz36WE>S '{tװw @q֭Zwj5S?wӪC9Bnq=5MŋKۖ__{A[yO:.}{yE1q VyVz{G o>o(j"֐B.y'_zj  mV퀦b]v@ϻ\?uV7 o41?6(75G]_ˤC^ZmFv@AIlZ)7VkI)WuO{*DV)|Vޔ%mr\%ī|(Ʌ2I 3\@1e3 I*i‹ Xbaꉿ4U0 `04ߗ&ՏG,l%I-j#`rL>RqKU>k2Wvz^=ߗG}{J?cCVo)2G=7.,m)~ƓGE::- .e=4kWH&}fnmZ]GA_6~qj-NӡM9j!=M'n?}aRqz/;wݞ3{g=zoJh^)]S}U˞=wy({>jm-yr垼^"cn)N`7^ :YK<PꩡBdѿo\`0 5ݷƈ'z]#];rɥ\%l %ce&Sٴ2)r5=ɊmnHLH>J^r{WWZ^fh/ ;gžu^zWRtCSqFncnȿ6؛r]V[nW7/)V{qr UrQ2U {y(#" KWĉ)_HMƐ`0c_Ǔm]F" C0^m}mUG FEQ@-1Fxg6oj0 v$T" H4!Lr)jzG$9QP 9[k-_;N{Ss^g?zgj`uhYֺVql]zMzQk?!?q~\-o>$ô)݋goxEϻ'xSF@cal홛c wOI?'E9Z]G.-p}qtr-'ڙVᄢɵ`0 Hk9Jlxb Or:1p ~%Hz*/[حjZTćxN_XQ}h~3jzvO?>.ljl ,բN|c-oܓ~7->B0N?5=o%j 4]qqp?vV*:󵞦+MʂWXMeɪ;TvyzjiCRO+:ooW}:ϡu MVe 6% '+ʍ2KLhN H%,Dh0%A{ʿ`0mܓfpŤ@|@pYDzP}e`1A,TQ V o~O-1`01% Tl"L?pH#\yteϫ|jòx5.Q9=ꖔԔ>^_0b]Njf~5ᙢ%^7EZA\W0ئ]bPApyEDV?R?Zjw[KZ 8?{ҲBl'7xx^Qjk{mV]~+ܫe<(sC8˘O6]pP*T*I΍ۃ[=`0 =+*@_;|d#@*g0 j ɢ;a->5 Ar`CW&Oej#Oo9#rZO텵ރ D[@HP@8]N\?:n yk,msK;wndSI [|CcRgӍ R6zkIzu"=w"n2៍q1pCdrC[o3um][70^3k}.d5=۶ZVzff,ʰ2 2_.=x߭c{~{=۾`kgŊw~t99&d:Y.ӡ  CM]q Cz}fևU^䂼,wS r7Hu X^]h8:~5OF{GX"; 9w_yz˺BZB6WGY7˻=5@ޡ cx~)\j[ mri ßɓ~O!NPG`ȖL9S9W8_"R*Y+ƿrU%WʑnKᾡux,sNjk{oƞ暍r_l3W]kV5Sk"GeREoV_룻VߡzoCi|*_oئ?}Fϴe߷m lIK?-}9?{x{_.)7ڝEV5:<]F$9P^d~ЗDU=T;DT $'oqҔnF`0rHnq:݆/FR=!gCݙB4*t62 lʫ>1 6MHlqt}(I5Bj*8c@C)ZHv`0|_,p,o@U-v"F ws0C-e|u5úI+:]>jw<}$h&%/Fhra`ӺN~ٷKֱV0q)S]ֶZ]]⎵6 vkvkɘ[{F{s(=>C;GXb93CtNkyA<۹?/f=mH[2Xΐ+ ^~y9r-|D>81VdS:`_߾`hN6A$_Bb䩉z[WQ`$ TH]*HU׳:=yQEvMkxٹv j:K+5bp5P̅. :}L@g8wbt@,v8(i%>klյLO`hw}s ԩbs]:'i'}C2*Fn XXO:9^gggim#w)/\|E;:v_~uFr֤%诽MsVX'^[sl8_rI']ǎԺA_[ Mז wkn6睊qsp=\n[!^2=NnY=ݶCiZ\K[lu-:Kܙy?Ϝ2uZe9ɞ<gXGXsR-dD4yDR9+L.d41Xx)#ڃۜc  Oz2w^VH2RR@:JxY&MVIl;OAyj;_ 97¶9lZ2rzb `omO!REr$֪8|dLz|fijg7u8'Ls)x6ȶϙzb=?1j]Gk k4W?VfkaIzrv~r_U{&=m 5·>eܜ(6i3FWfnhqs.OvZT.Xg+[bhn N1NEr_,xpVuvý/пYO\;F=vP9U?];4g>6-ɿ{_V7 ѡdk1p /}r?L: bA >HyGMH ~ 8twwoV{<qGSkaOZ 둆 N?Ht [uֵw85qglm4pyr~ӝ:a#u}/켾*T7: PsY4~SPT4oՕjZ(OF2uE-LW`h[# VS-xi`;? X;YnkmI$s$>jڛ=խUKSٕDsܣs 6vܯ/۝̵_.=n.*MF&F檛,Qխүg!zڸ3v뻫﬋9aO9[c 5lAkyKo Uaw$]H^ ֊ԧj z=L/`@ BQ1+КRzgr:'rV,e6! `u\"M묈Ue}WG<9yۋRHuW/cFJZXuu=kh(~!⯽~K?/R3_ˍE];Fn[յ\5(0`VF[ -&h1>nkk]Uz|Vppf㋤(7e`Zv׷.kkest=ߤ}vyFg/W{B8P8(f7xn*xWry}e&Z,7ӧpSJ{070%g+> €R gi9 oIh?+k}IK= & $5Y'_Jx@EMgj[ΝxH@ GŰݩ봆 _Ù 5'&:mWtvqHJb<85{9"q?dgl*P=Sm qʅ`=/n=rV'r?|`)sRrɢ+:Ta|"$# &zuI0 $NqeTkK1[) eC\M a^U:J*NX/,o//\=P瑬99cCeA;|&zc)~mcAID2g:Z$I,ҫ쯵㪎x߿Z3uV!kȸ[ nhyyݦuiR]z|VavQF^뽼+ n yC|+qhm^KowL yNJv}b*CYyCH%I]8QȤ"k Ql,֧Q"$&s ßa_Φb_v$[AN.ԗyj$SKx;4\?@ n|V][[d-ksS>|닝 > Ԗ>Q$>T| >&YII&] Q3*TotȷYjL𭷏g FxnVxVpnmmZkboa3ܭ{sUj[u .] O_=%KіZnK-mynJ#͓viwٌ=a+"r%@N(rz|Zr]< $"@Eh৆Diԧ1J9ͮ`0L4mHJX,b$9^VkT U-,Bieqr9/oQaHzvP?Os>k7:¶S:>yçjk|yj!^,RL˯ ,|IN$7WPM=j?8C @uY$W_팂'|=!K$BH7Zz8'FB2b[} V̒nQ;U x@JTXdAAըR,a0 %seLJF*!Bb!XN d%_ʒ5ͪ;rur_I?⪯Ӿ1_?ܟR4KҖT kuVO>8ώ)}~zZZʟw Uz zպm\ ߠ(w, -sѪ=WD̐V! nMWO+祮O;5-O ܕ7,),)~HНX8-|̈}C0k]a(YVNkR$odTUio;B*RLMSFi0\wAnA|ilp Dq.N-~: uٰi 5q5lʪy6yjtÖ @Uƫа0GxKVQ$6_N҅[ΰt 6L]H%8;~h%хP^%u?l[VPasR9g&`j1bK>3N@X/|A5I*>pYw@ 6{o%g;Y 1āTIT< R㾶d91>&Gd ;agyᲒkJM\{"l+޺kpRKi_PQוKꩣ^MEkH=CMWĵ\;+tuGq?6$L͈"PU{jt|=>0S-%YO*y>.k|/CCSvݝ؏.\X.Gʙ dl'Df3iIq%TJZj ~RNfe0 pӷ60/qNGH|tjh8!^ޙCmV]g+)0yCºn՗$F̺T/wx ]hA+ubVw>C9*iE;9yjN"'ΰ97GU8ֿ] q=l\g9!Z"_Uugm{[ܧoIxtꅩߊ[OA@kvRj%in_C~=qsNZ3h-Z[P(=v#-һdL,ߵVynu ;]4bwŵY|Pf^c'x^V/` &ΗղS0<9qGUCFH5=@pH `0 NPV m2uz99x7F Qr)|JueVԋ̆Ca5Z>6|RK̀_ٹ m| k·TÒdO@6 _{?dJL8Jshx 6-uFPTi%i [waW!G{WZ%8:˝v<Ήj4kN h搊jr_X{_ $N\ŁUK-PQTSF Jl|/k>Hm#(MkuuM^gk?k%7lY0gk`M6천M[bP;Znة.ouf۫\1.cEYVFw hjߧ5AnM4Nr&׎r*a]i q?Hn; `Jkn?)Z'n1$pa%yŖ-TTrڼ>RPUpL?bzk=3Eސu7ryʴ0lWIW‡lG jT!NL@׮WBxӛ.WO#u jS e"ė, jT1tnO [ϭkpvN1^psT ܦHU£%UThұFb~ 'OkS~؅νuςb!)v΃% i}/$6gVpj%c hjY )/z1G=s[h7Fj8{lnWѩ`0QMmic@&\ɖB:D&zOm(M'r{FuRnf^Wy={'\u4Җ;Rzcߔ'VŌӺ%r^IZ$cynw|V75lA2`4a_d̟Qo[Y ß׀&(K[;4GBb#yrPmM4Bqvo`뼺U·ᕚ+`+;ˆ=PzMUi/Աx {@Pd1#K&r6䛛v[]}@SI T\MSU\B#KU7 2%xM;>,䫫aus?. 1J0"$ ~sB68 `^"d|F9:j%׭u@uU5f0<}5A҉2 Ҏ^ޥNc2YVd$!Viϳeތ=N^lUq5gEݢ3@ p '":_ՏߤǓx~>mr罿MZwhu-h 'YZ[ju[%)ru?%Fxcj*kC9e֯ *? I)L9G? ,7/3>EBf[sVyBN\:S蝣⥚$.79b ~`!U%$dۿ@[JsQq[ >fmtSά{OqNջ\aݑ{w'֌j;):Y} yd >P߱@;t7RK!eh@ӵ~5-R۫Tl{,]k`[L b!ĎOLV㡺}dT{/L wVNXꯜ`{cN tMp V<|خ>ue8Hx߼}15 i5Ĩ*vK Oz N%}ivzO*. \Vst(P9 Pdo|mjMi59uЎ,@1Y0<@[9I%f?&ԟpؔ^;ݙ˪;'†a[MiPC]IPU5:<,TRHugH[tK"XL _+PUԱB4SL}2gr-1 KYVߒ5vKPey("P)mXZ:ruZfPb~'~Rk]`=n[z:"SQ]uVmw5a.k\͵ 0,u:Pk2rL[L9]jч''zEb|/z ^\QDH2 hl f r%ԃAt3YP7*6P2R#:gŽ_:]`u3,vpݕN:lSt݇4>Lj-4d|^+Z6P l(j&'[1UMeB-qQgR* $qnEh!>Wh*h\LN!N'>'Y7ɂwׇ.kuC9n|_--\ZBts @]cp24 SOOe o&;@^ $BZRl_&'YrvLYduAdk l]=[]}ξ.4=\&mYWvϿŵoN1w! [5{W(ߏD=>NpvkvkaЪ?XM+kL"6@S; ̲_3*J[vز݅NTNhl< G3A-v(aK_1*@IOMg~o=`1uPD1%TpN)W^N)ddd329j~*rOOk*02!㹢J)nqZ)>6߹moɞ${^[S-V;]54e 14ü0nhiq:f?#~>}$N8߹G=SO'Դ2GdwS /m;g 묗sFȏYe,?1+#x9ryo'le!JGUF n?eBX{#MZA*\D!X:dJ 1F}2?.ޕk@ pxmljYn^obگĥ~c#"а6zCrr$j!ujZbi\:G`7}Ek$nAGb| ԏl//BE >{ToDꝗamuŎ Ϫ^>wzb:,yMIp6=$"mr*%`,&Pk$w{\; bĀ2,i=M\mjY,wT!fg==~~ޞ=W64G3O|%&-=QBx krʻ2,qiU_RDkuMvk ǭ=TVrkj&\re N#˱rN+7n>k}d<9XUi֩'HB~!<. ~`='0aqZCzS#Nw'`0x34, ݪyK-*Ts<+ć;D^KPkUgl~6tŶ k>N\[]< ni5soJX&Ab188TF]{}Sw?}  ,XHLV6AwHDbQ ;olX &r/OBvgطI9%=AsCPb%Eb O|a#d}L_,Ӽ3BDžfo <8p/@~lֽkg9ns+XB ~Bt}OrWK6 T( S'2L ` K\AR j\˝pw: jFǪs`紆N.lZwSZ95}V}I]{|@:=U+ 6HEci*Q0W^z;ͮ🅧Yod/ 8Q:dJ^ẑ`oJ iWHw!XI!C%΅>͞x\ r5g9LPYFr1A=WFtE|; ? >`!6^r 'D/)"bƩ 0,Y( ԭUmUٳa2> yR;936NO3RҟH;-6vFSZGx(X5]^[u֭ZwjҺ1?{W[u'narM4+' J_ ˕o W9lpV BCx{FEUaSly 6Wf&^ml]NCu͌P +1E3(UP?\.w[!WH^an@P ˹ i+5NթmP([lqյ}jKmE'UFQsx:Uw {zIskD C'iG:mWa"$k-m dxu\'7猱ߔIվ%W@FI)R(ɪm?iudG=Oۓe]dvk]yځ: Zݐ[m 9nQ vZF=cRs/z*|h?|#xt譔|gfOYR8кʚi?Sg}m)8M.+R%T=ljf/\}'`0w]Ε!žU'qs/,n&_npNj_rMLr-S:8ÎN i<ř 5NW@x  b娯Ձ%˙q7ڼl.U 8(qpNQ+g: "w'&Pwjt~,v&·wR`K#aӘ)=ge;D6T)}x顺\Vl c'߼9a~|N ςk4 vkT' Mjlȕ)\&ʵ2iyl/ J'g{>|],ٯ҃归fC}z$`Qoɯz5ǮaNs8Fkv_ƿW^k hm.Zjn4z|Zj& \اvˊKz/n3.Mxe{sZP?_aqO'Lkuuf& Qd' jPmP1P=3j8$,ÉPgTA} lXLaκK-u8 a'Sfd=4 ;8ǪqQpW"j8L^ٔ(] 5,~(x[+ =r c=W@ I u S]kmðN6l }| [Nw;P}j;5Zת!~SP{U*݀]|aYCI(Z`0SqunqrtHcWd(&r%=H5Ey/ގWhZ v] /nS [ϭXp mh=9Om\#5Am`Ή IDAT YrVе,Φ>_=tP$_xhCV؝޸[ԉ =3 lmp~8W{))6VCdgOt' &WR!ǐt'_M~nϑ2ߩσ6'P.ieJ.(blV[w=):K(6SmMyzltiZ58u^ ׬ ht_W0'LrmM׹$b3QLN}2U'1kz|%]JsYGSDOVm'Gs^({@~uUerÅ_#C9 O҆VRN>4z$iM USȢ_PWl)#X U&H?~5Y7yՇ#f|^lMn3zkCE&::w0DKU@uj_Ӛ~ UQX9j5 yP6RkxX`DR3U?H~f@ji)2k6 M* aߩpP*/1XFwY`/7e86lbMPG07ꒉR澞664A&($G'M{Zٝe's'1.\'eXXkn?f([@pPwp jǴ++ǧ\|TIeue'WT[#בJ h6Pj]dٱY"{fVXkHY+X¥r-Ӈ>/#ab "ULudcM 2v@э PN H]{jRo@z[e+JjG%rCPQ š+<kέ_T=MQ.$Odp~uRm K|2]RDuOS|os }vSY8[pOp$JRS1r;bS7 k5욙ko· ~=>@lP }*.nU^~+ꀶy#d왝WfYk9Uw/YRryf>MogpWrSvgk5:9>jߎ;]T#E[%~ԟjBT/3% `7MhqFי4DOlYȒn16'ZEM;ikX냾N8=@P>p9OJﱿ?hUX] egY2Ps|siGZR$I4$ǟ@& &m42yՋ'n#XD׌SRzZ뢍VX96w$_if?q7P'q ]j"S-`^78]lwׁfss6Y"-7ySKs?pɆ2/P==; NY;d?Kn=mv<=kGgic%Hi-E[ӖV/9[Γ ")/X-XVqŽ~$W*X|>LGBןF?nq5:>H'eݺcbSCE3-QԜ켑O~.ӶcG7}۾Qҝw>kMniRw ^rle'Cg1UG.Vm)XuFXӬ F)`Q(Y)$_FWq+l?&6|O715Pd{J'爵k ̃ݙj<4]j*gBulc׻By&7 /nu T6DwvCM^ps#Y+@!r7ܥ%( %s-id8O8d.W'Kzu4+X֐J n (]!l{sWC$׷C`O{O# _v^n:6_#Pil=<<<_15R*L'_ >rщ@jyDfvƥ&[l_Wfn[Xr}ᯎN:K7Qsa٬_Oks]&G&7~g_[> 5:e*_\. .!&DmM/A]&vXyCm{+:^|_ة ufnT0*&e;xwy#'{|ƏOp!$p74Tne ӹs mC6R'!hz^=U}cwAESlXwN3˰!6rmxZN (cn[' /ofq*o'Ϸ#qPUA LөNuӰX{+/kFj!ԹQ~VCղ@i@ّkKh*ަF"; {kFRJ &B}IXS(PQv9}HdI4u,.8`j|vK}:9Ivh5͂vN*E꓍z{ޛKج1NMczuzTэFG_2y読7m~VO sJt(]URIQ[8Fm mvGDãva:z_RAz{f^>+6[ws#nj!]`DI?AikkV$H soh W {wkG;ɯ^a Ul+(5\ub wxxxP(\FÇ_.P %r7TΔe\nk.#8{:F惶NNщib˱O7MZߪKZmEWѬz~сiktэ-kefW!WMUH'h\u>Ǵ`WT>9w};~ҷ=ߔj{Pu]ehb3ӟ \ʥ$\? Ά(UW5{ Bm٤n϶F\vLP/S jK ݔ<{-VXL]+g9VX{ lxaOv߂dwx%Y)/fse2P <;}}Zv0Bve$+3cP;&QÆ~Mub@u)2'ºO}R0[!vZG5R/`7^ohdt|Ae-9͎  Z@`aa~)'L>ED(QӃ vXNp'^? Tʃ5='_IEdiy__PqiWek/~L2Wۘ&[:QzltхF'#rۺ쿉dh[9ݵ}C[OLH=!8Y[`^>~rv%wt,rnϏ< - <<"pMKet>mkk_RdQ-9^ӂЅNq#bp Sr,=i Xҗ p  p;H:'!kfM3RPwUz TN S,ׂ ]X{4zwDivܠkcZ{w|M̓(2BG6S&J`s$V74Vڳq Fׂ?Z./qR;6|$!UK y)&B>V'әWr)'R-R5ښQZ{ڷ׹%/ ?&dŹ_*WxzSCmSڞNǦхF'htѕFgݹm5ps"ڶg;mwVW*fOǿ9O nt4SF^:hPP:LGe|s|KV+ VQiwqڇ͔S⬖0r"sd3q%ULWL ]trZChT=!s8@r{!Z:NnYPysT\ )tcJw(T CɛU $_wwHLWmx Hr>(vQs-/ 9k`l7R7u%j:cH4w6磠`/){Sܷ R rv̏^։>W/}VR='lst>cIP4GPEQl/#-uJVǴպ-6IU҉ncJpHT$g+aJ;879oqMjZWJ4U^u m_XxLxȞz'J>Wo=vLэFGv Tn3Cȼ_nלo&i`&@D0 ]_]q*pg`S B[|;v)\g$j^<1P>+E\8bJ(6 .. A-4Z:<<<<$%t" P>`0Akg+6cϻ{/aCgOÆךVy8uW$!j'$v yu~.Nw6ݧq7!{^^͞'wZebA<kΜ s '?WCn(Xg5n!> ko~{CChBz[s aRayhUfҨ籙f_cZij:Gu1pEZ*eSk|WvN6:vNV/M+ rF{+ݔ5JwoSu{i;B[[fh]itѝFnso۪wDVښړ#n>bNm[8sOK9c|wg:EeYkVVd/k5d"y2Z"DH 1DA5D#"[[`ܝVsS)Y GQjHmĥvjԭH\V7^ \67UP}J|ZJ_Cg52W/7@1A-u:Q=:henn΃9/tS j4G%7 $s~sU{;ڽ6{#&p5}$Lĉ%14J<<<<HR0/WΔpS{tu =DoHMQCMAulpwf.{q:T>c .}7C:A>;ePW srA V5 ,<2,`ˈ@҆H`6$KGHyP=@NxT/2|?D[!9u'29S&S 3d3ڨR |}9S /oBR뚨$„ +Cٓa.+#cdG:QuV]-|?gDAcuQ/>g|  v+;.?uT oE;ijJcF, kLd]Yfm+5<-0Y#愶 ߣ59.vb{)k%cwazlt򀹑 k ˋ/ʛ{ԷCVtdBTFҔ7XnEr;3ai"$[xxxxU0%2͵Dt?Ì"QM.M][Hg!~kfG4vOUUPZz~A*v&hW#o^ S) 5 2%.Y:ߤ$@~jF5?syȞ&}^yT3X gi'D \^ Dp;BMInBU!PW8H= M*vT]nR<)yQ䃌E#u`j`xM~=</r[X)]|Qv*r]ܭˢmqh(K^1Bdsp58rlfeOn]ۥ& *7n D8pY5 tA8~.Q1 s8r'p 큍4ႺiR8z<<<"j9i2@!Eȑ@.Ӌޡ2X2˙efj/orr.syn:Mb ;Ԧݛ mz*n(U ~|-GRJf_kqqɀAQFGɫc8IoFqG]A \,WK79Yn˟lu-:&8'V̒Rܯdls&|WUP\x^`QNkmr; G:HELznt6m]^[i]zC:Tޮs:0Z|jI="AN0ЭK:7|lӒ|/?jlͲ]'GIuoQr%S H-<ֳDJUZvAQ CD`*eDPltSo @:2T@RQa2>d8s:b\}X6Ntbu,n|5.L|~ ˓g3NWx$JE49CS<ܽ*[,<< t~n]zI͠0RH'-a]ΆP4=z.N%K[>j-8+ N;kv xl&iP@אeg Ai]!;#P @Zӆ6rdVNUg^ 8K^ߚmw+oDCLjoSW\rޛvfkcSz{Fgitѥ[ [ 0\tքbs4@mu5H9ZgzOz^9mй}B{H~Ȼ"040/x q~`wv, HRir\8PAiEO˵RN)O Bc\%S*/x&w*$"R.H/)XLhmu& |C?P SE[iFl;6lŭ6F'%}FPe| 9 D(z꧎ nOI}LdG7lqsྠ?WfXʠDytbl5mraMϻPYnZ n:Bl.LzD~E .[BJ@I+m$"6[NᱭG:'z$'Q@9$EwؓaLrIB,n`gTwl7.85<24<}s"hgtެ Ml֕Zg6NC.5:Vc7nZh-jMsNi`B6F?Bh{z-k?z.FЙGws--=\i--?Y8Y-=C9AiKk,|-ЖLQaKL'=<qmgjBHgMd'Eamƻ`'yVl:Wf Htˠt?nQ=ڨY40#Ed;}J-+HǶJKctE oZG}xpZJrYYs}ta }ђ#(5吞NWoA2 QPCU6[4o{vk*7v{DW S^s&R h @'BlGɜgsޯ\ϋC)LzϡjGZ޽U6Vzputm|wǫ L?&@{ FmǷ|C#ӗ0ПR|<<YἝ7ךhϷo+ [ϔ^8kP\bve(8P5PC-zj$I{xxu0!Nyv;g۴ɾZC BedSyVz A^T{=w۠rzBw4li6̓â1PJR !qzv&:EM'>~ 'oYЫ5WmsR'[y=r_vz=/`@bI u_$D-masMaбiʅѮvPuc|{*ԵNORAGj8t 3lܦCj=WUŖ[y+hAoSyKm4Z:{VC7j)`N9Q|"mп'ﬔ w \o^腢/w GGn?noϳ_ZO[9v^}Qζ-Hk鐗#9_EB%Ed "EpnF+*%W9k(r@.){ڃ >T5LJ3`}Ij`î o3Sac)n=.N,TCj;H]G,V{ݞxkKy/󠭞Yej9_yu:fJ~u84z ½V\74;[8P$Ʃ& FXozxxh] Nlt&l9E~$X\\#qjk'Gމ=ko?sLdrpu̎K,+/Rr@¥_C,k]_2&|k۬;[Fjtѱ[]4V18;izl<3gikNB(VZgٗ 7YZ\pwѳşd~ 9MmZkl>0:x\;[e+-)?O򫬎,UJ^41ٙKrʬw$(WQIR"i/`'H)40b,@Tohg< l~2v3 V[JfD_s`vq_TM,R;| Mz6G\g`MnqzތMJҏ%| qPR|-XwBH=9j`=Dr;d6\ /A%Ac{PgHkDuU~T<<vcͰ9/Mǩ0dƨ/y؛;lPtxww-eivzfNlAlp?Wނh0uO RލªwCa=oC=>|[-xm$5RՃ~ PO1I^7:יW /C@gH|s"]&cdsΌAr<-sqyWVʊdow_s v ,ު@sJ N/-*OZỵxaɌvX <{sq@n`FGj]٬3PKN5Xk,\K4mL9mC'mhC[sBcΗ2lN[[!qVᕅË.,97( γ!YyF|D6ʹr+Oe?NdpIFNtK eRdTȐViV0+-ېh]Tm. BB"fHqeMRo<{*K}W?uæcWP1m?|rlW3'Uc~;"*h>'dx:kֱ$;UC̳phx0>gG>P7 EPC=oknvV'}:}xT.wSCp.Zlᱭ`tI|MQ&I/0:Zr3 Lfr`̐;#ؑٚhMM6}~r^.>MٰМy] Y';Ügdޛ]mm4:NC.ѭF]ktѽF0+8Bkm{ik)P 1D[Rmワ5>u٥j{n}`~ZPƲŹsMk'IVjg@ޑy;<ь}kJ/zՔҚ֜O3?t. \zU=<<5=+۩5鬗\՜DXO[t9j5H2r4Rwl:64v w7C.P?΃ڙ|h<0@j  w3Pztґ8d}g'=`<|PyFtj%$F+KDCF%*uO"5*ӱ2ظwTlAA*ɲ*1+K^Rɔtב:Q_q]{h:*uUWFiu)IO{5WFɣY[My~_ł"s?+pM%596˂cK-d7 ڤ޼֗ͺ7PKNm֭&u}o6V O905]Z}9Q1'ngmPꟻ{P[kڒJwB~, /.qVq*>[N+J:EIW!,:?CP^_E={W3߆,@X2Nnk VC|\f:j?f@^nn:8~PAj1$dBL@5ܓDx0p'~*O ۓfޔ, jjKy8dFB2p9bP.6TN" !gɯ`i-BVu,@MUXϵ~Hցut-+'Vg qe7=<1pU%];:}l*&d?T=Vѕv;z{K]ktѱuFE[֤mtV9P&„Fd ?]YY.UFΖkrN=+㳕jݲuvr{mb-~ޖ0DL+ ܡUzqO0P9&POTPFXlJ6PI*ՠ2lV1mcDi+7ewɓkkCϾe'su=ްZ7"TU5!\NF?9c=X.ӟ7$HvntѥFRϮ^6)6/i gPsMNkޞ"MF&sY4,Y{#M=3?? tq}.q(:m.~- ox_]q$g0k,cI Fc9<<黹#T'tݙ:ªVTeif=ZDef66|?0O]:LT{ğHh84y v9߽=6C.@l(BA_&/c]$¥`)Wk=/ X@5q]\#fJ`zxxl+d'Ɩ. `әFNJ[9z`m7]j': V~UW <8/_.( ;2{T\Ycu ̎MySRSnBZ5_oֲye3mL?Fs1.7hXBO4=ԉ#eOw}3.u[fͲ6Y=wn d\ vQܡhbh@ᱭ%:F _8}D@-6&posH:̂hmNקUP"Ύ-sMVέ;Ğw[A)pHݦwo6]?y-N20;գ:;ApG!ALhAŔpB.syu⇢BHw(y5LC |}<Ƴ &9S͇48T=gy<<<12ZWňJp/e7]F.&ևwWfK Zusasr.%}}? I|kkBu&i{F.5_kty5w]sӢlR&F^semzlw:2Xӹ9-xc#wv:БI֙U}2Y}psy?BLxse"c%8z峞$V&YMKӭ0hXP}iu7Tw/u'Aj4T}cP}gu>29s7}tsu~*o%!ǿʼn';e_lԞU;HJ Hjԏ:rscq U]!gu p682d;yFKD.^#no71;ᱵuI!M@\/UZva#NgC[ğwuuK+uY 9{EkN'eXv<~ܥʯz ޜ s.؜ntѩFktmKY1xhhjb1Y;~+C&(0l_l R\ˉl4&q~ G/?X֓y)V3O>+$yDd?&s>d" Y\\/c`˝8pUJ*r^EFUdK2%h> i"w3l#Ukc/GBānhX<] #U%N̡70IҵswMvo!fg'T$̻vHekP| s;GnZe9nW78^qZ_KnUݭso8|ƂՃBߐ"pfJ"zКP_.PcFt*CVV[ZB\;?9g=]ΐs*]ar)$OcSyZ!֮ڝ}H{C|C>QcVlZUxnv[}er.\)sWFЛK^n֭F]ktѽFݲG[)2G^ 8&:Ѕ->|%E?|3kᱍai"7Xr%(sz$"JAX~A)>0;6llj~kh}6kr#Xu$6e*9 =Qb=\;R: k~S$?s->)ց5M| op9645fۀr+kjW@E@Rr%i\H#=<<,}pkuiNeO "DŽNn^ѯzǂzا8|#]rb.覦gbDF2q&e5F;5:^?; W[f]YpmWm[k@du\ÎɎ;K)]Cv́K39?~ u-_r_R9MFGngd|>D3KWp3ӊ f"GaPNF~WO[",m[^vn L1 A*7hJiq#w)mhr>͜ ~h͝ UkjĎMUCS%|@l|;ixʗ']<h^TKjؘ:sT j.Ϸ 3w ^u}UM-P_["WL1]{q_Yo@ChE{J (Վ<(rz&ȡIyΑV{4ށeWC{it(x_N.sWiLeϚH((\XRދǶ/,%WlHܪS1PSԀ;^e9d3xf3 +:j kNl<4s+pGf ?%wԌ?΄j21, evj7T `zxl yh楙z^-a,l\Ա=&WrO\\&HicJs>]?N96o|Լ֕׷zz70, |Y#ѥFjtֵ:^.05gr!mOmuNh;\}ǻfzL7/G>GF l, u U\z!|m]~yoY`9\6H{6pFqsdutZ.E4F@\2WTᱍOC@JqP^CnZbBt{5KWPJ\Mu!P1i]~uTruDKj }Tf%E$+g>8Ro[ߓrnNaYC,HAS ]J52%\){%;J(98u8\N-@0J 8~bOe=|K,v |F@.1bʋXؚ1޲pHK.I{zO>BgYT739]TwY!?iъ[}]YΚOR'r坝6Pؽ5t`:NJLJ w9H[K1zkkj]ktn'm6Q[\δ7T9ږkkrhs'DibB+i;I[aa1a% v>3>p}1xRt{}bruUn(3y(#C؛}Doz'QB[Z91 `gA4OLO{xxlmLPL,8 8bCI;Od;F 7HBh/c~_|$#g/A@rLjlScsǶK=w';Pê2߫i̇}%٩#ԯO>BMq8C Aļ*+Z]LO۽:-79i} tkh bڀ[}Gb-K׫}jl"VG4ݟ`Ä[UcEаC@%!@$6@uXZU/꧑)WVw716_?v\llڠƨp!k^?"}wCT;]]MQ)q7jΡ۫KG_d]"tJڂ|OP;qk@m:S@)-~sc+Bg)dvd1va=Uy^N >#Zz7قOg^1lӰ_ܟ&|{o;MGH6I[ѩfaZGzg[ѹFv; mWkkͧ]?`vVS,99P5 Ӵ=DoնҹC]·  Mo ʛl_&8qdsO~@GxJ-XsZeۖK.ȯO!2t VRɷDiH[7~-;J͖4)ڍ5#IAZހ;АGmb?S`â12CEmJw>ԆU U[!:A 8 P 2rUX ^˩%4Ћ$A͵TB1xǫ.hRCnNW;8,{S 3!ḡܸ7u NrdYe>uW_O)H :%15 IޞK&]dݮQ7ȡQ>q9~7f앿3wK^J1>}3Tm9Z۽Zy1 -ѽF]l"LjxGb=6snG=Ǧ-Bm?g,xȹ.q6ڮyiϐ䡼dlXNL@g,ٝ;i^ֆjaX HG 7A 'ڪf<5_vG!1(Ӛ)OS]=];߹APѧ]NJ+$j3pkwv˟f/c93Gߜ!=]}92eO3EjuѥF6VcmֹFjܬNnFG߈ӫ,qa̍7| b_mMyhPm.vW?g}ʮ{uk?S sۗGA]>W 2b9C7Kݘ-]]k3g95{] @} 3ţ) 9P1~6][vֺ*j'wOķ*{dQ炻P U2 2/}ܟ'D+db=^l9z{'_O3Tcmֹ5:R/ҰS[޿@/lRL_D!azlB-66xh#e.I.y͒*;j \-7e|x5W4P\yNy#̑ir 7);\\2zYq[+-} 굺؏6j!s{@|ZD  j;%{jأdw#TՉjԿĺBp;xpϕ\ |0K$(]1Orxym}OY#0odV_wA=FH~\̥U9P Uձ\Y7ŖH(( t:mOf@3yk]9x^zdivLo-syxxlҤI]uRNkX%2BHӛSC?K#iFI9ZXi&Yع{Ƀ 7\jFğR@ 9]^ @znh.}^Gu` sLiՐFQB8O:)XHC;.h ?p/--Z{{K r!?H̒7{d]^uXkHԁJ0m.S怘~J˜} ĄHsvqƉ>QaY%o.*ϵY~s/E> kp`_2.<, $_Γcqc{ Co`s]D_7r@60T>M\HTw@ݸG/z[ oXknȸ@MϸmT$zfi3{Pg6:jI߲ФLWLwsđǟeit&;2^dfp4yYPVK+:&4JXa#}~XڶldΔa%n3*'i5ͺu+ѹx`nmtѦe Q(Ei:h)g<"͟ (\YMɕ{o{nய\sK7*pI?֯V~p|"(B<|nrb?M7(CQ"$`aӞ iRdNxxxxIHd8MG2jȀZ.Q=A} s~H~MM)WCM98&n.5]VƘƼ*yZ9$ۼF\vlW[fe</xã:0E9>{݌wJ169bHoV{ 4QCչQaQӢLx *ߍq@L1h- Puu r+}OA-V}DWd}}c+ 2ZuDeJ /eՍr\}܅V)V*X/J(c;ܱݥ_v-;J/F5:Zsw`hkkoW`ˢ~F/V: =69jk"hχtbn`jpty.uzUtn vEwo^ne~;i}k]N2_>.˷rh~f9ݥ'o5$TQ".!L3jxxxhYt6;Sx)V2ש| oBL{u&4KNPBMPU?bWㇹPsz| N5Nt+]Rq`R`ZvgZ^D5GXnR ,,5YMyCx8KaPVTLӝ1*:=-vlb/caȗA!%! /P {m=<<;]ReCHy<*B Fs)D7rT5rUn?0KkKKC9Ml@lה#zfG6gFF[ތvWsꀚ-U+wFZ5AZu䀺H^ÿ`v&&d-_}7Hؤ/8.W:ִ;/;ZŁ:kpq޵ jϚhc'p;7O9V3G&H`\ 6\& S؞XrmAr0df+yn1=|X En007:gj 'iFjGc`&]UkO[|Nc%f=<>^z;~uAiwz L~T &UT[Be*:ׁeni_fBc)2/y d 0Ly.`mm<>ש 1m3^z86u^)i-wО$nFkW9(;#)xpqdvc2?tguTxZ*15m5B-qeb]moΉh&87Ƥ GI0{ s@КpI.huU\ƶou8Â-%[uι*<^ߚ_&LT? zN} ə}<ӯ2 jM|^Jou?7.M7bz.n@}֩n H\D9p=>dKzKmH`t}Yؚ2ZQh 9ON͔r\zܧ]JV:0uLv(=uV' ]|_i}q'm5:{k|7T: m?PuСϛІ h.`O6rCXPWhg²Jnjy|/og{O)&cgD2eqHz^@ Pd~-al^8Gy8XC6ğj@gqVw*c!$ous~dJ-MscO3'_º;BmuԳ_W n?n3cu|J-}4+z/=<ט8}' @M('|N RݛfT@"<-z#?q8 6͏aJ+$fZsB,{b@ޟ4>O=ǟ׌sh'U=QD!aNLN/Sc¯ÝOS>.1E,v)j_& W'% =<<4uЉ;s˹9,"{003?Fqִ zY:qo7Ywnt3ejm￀Їx玲h!ϳF_&:ׄ;١?70#pGGs3-u}u[,,ۇgq&r^:ЉЅiF{xxlHv5~`Wj(zյj-/ҍ`u$rc **vӰyX_w8Tɵ2A%!r2/r#KH4H)6j9+\GJڧt~AݣSk ; wC*Uvn|72\C/cwԞsBΪ _e>R'BjF=gSp?Qg׬' >`/ݍDċ05RZ%sI'[.7pA]e`{h WqV CC{b>+>ciKB[c[vЩblMd],{6kc(x6vhqZCdC[G.?\^:?4N@s_&=ɹ͙Z큹IV,T%tJ!sHhOPlH؟B{;nLx$gHפֿ H~SOUP)^ UqDZ+l'$g!MW :*PQ:`~ܴ==<²W^[0zND13HAu/B>]B}&_́ͅXkwl7z 6uvCۡQh$|Lz R!u1)A.F%HZeu`.=PnMIWiҾeȹ‰8oo|w9.88<*tCmZѵ ߽zk۬MNښoZ<7 R-~x&,_|vSR(cԳP=^ԴWoW*`J.nPd|D5F. !-<Ǎ)涐#Z&&śNM50:p(d |ɯ3z\}!Ϲ_% ގv/ܷSbu6K?Z.'}^k;ZgST_~/.u FllwAK7$&/{ϓwt7tz:bm۹9K~Π|_{Ł=+:P ,~hn0B|oo]G7Gm7kk?m2X-_8ncoECR9Esu/UeN376̎ڎ}m~kuUuuL=PYpx߬w%A\;?wKIG4٬{g/U{4FADT@ Ы"v+vb+vw7v X H< w n|y^{{q<2|$;ePOª V<7VU'{YPU te: m {ipJS!l ԑ5 lC[s;pe_f5 " `M9[L_rdf({rԜ_B՜R+%{xAɨb #M9r< <4:PȻbpb]`u]dDQN[["Gr.)}ewxi"RyHcbbƶD<yA&/T~cֵmo=o_eX羾 i6Z[`S%l/׌IWƑsk5)^˖7mH9yKJH9,v-iGD~*)ȐrKY cjkM7m;GE.TwGg2zDZ=,B֙o87_x,٩.6ŝ2X>2]8oK? 99ؓ wp!_'q,%jU&`ǏA#~3&pܾNj',&9 A$L|+SO'gbQ83`qYFLX]Xj7/fp#o,/xti@ޏs@&5u2*iJ;xأ+3);Y/En*~ %~ 1|\>mPLOוtLp,^sF8^Ta8?Vi@IDATiȴb݈aR6 MmǮH~n+x\Kf9̴ gZړ3ZXVpX06>KoC*s%Q)w|D7SY:Wc׬ ܬ%:޳mifKrp:9_;%w72۲*oRXGۗNfzHȖ~)O}bVkSm6ƖܭHO[}]sw+?:`}lJBcۛ+/ =Z9^F-o;G&io;XZoG9X/+zHyٕ)XMiM1w@.p8SM(BJ3A{k4cƓ^e  C@{=\꫟fÁhUQa Vސ#<n )|i(ȅgea:ģ}mk]',\Zk?sKy07tY1hU>s2{k;Xeb:=| (|mQ_Ú{@r1%nKec 8ǿ;0M4cJЈִlξk̩8OOפ\Mw/#{J:{D~Wrm?E!_k~kѱZc*[7{u6%XXho;>KTF>Zދ}^f_z^AΑSUZf%NVl,sDȎ{!-وVr('eA.p8Sr@FJ;l&Ix$A/f?@,| 3=xIu ueZUyDFe7þ|DpwXSjBrB@P Љ&Abpڪ˿?:{hA`~n[s}mhC[|׳}t49m x(Ց,L ;Šfny@QL}^ᓼz-3xH NJh#enLP80ctДh"[βGd98yWfKUQ.Urw^\U{-bI{d8vXU,sqmw{p%Wpmτnodlsxu_ߖQ 5ƚHXn"5q96ѾFT"DGZʍ~ß%2owRi/^#d"scríO؃#ҝ4 iSvcy4!fץ 8M)#j oBps=;go=D2ÙT}V' aU*Y&[TNK3?@Z ? * s e2,Wp%MBZp|e@.G(| M3mkZa$ oU/ˠMPw}jN΅2oұpOS}ȧ$يr!&0agZO:꺌yVYؚc؍ߓ|n5 x i+)K2қPTL ?ɟwttT-b']΁)F sW`=l^i )6`|7cM KlCsyE' ؈E1->.65 oCo,&r\Y.ʴ%Iя\ǃrU>0]PNSyKH!&5GeW_h:y]i|iVA^C:)㠮e&_j?y +&7êMPuFNLK&Pn>>w~vojk6ssh(3?Onnlslzy_k3m%1 Sl A]޾ޡ6g_i eGM.{o-w޾?"K#)űr{_Cr<?UNg_(۲l}F \V䯟\D(C֖ 8 *-YDѴ',ch\ ACV!s5}S~XyVbp8VT' +NԱN=P_f.l.nIz>:SO9@6ߎ v6޹q'm r]5?=~כ Y@LPmbV]l +'$HX13ql99IPCv6p׃z3D1L0ydž:RF(%h.YF1@R\2! C*J:\)m*ewY/+mX{Ӊiҗ8msl0)v:ވ9ovcW{xv MmfT_1lGtA4"G֕{壥촫fwzͻፍz7? } Δgy%v)r {sb=vOo2Jʥ!O,Bp5c`kmk:D9qfBC`'R}rN,wAp8,x< {$3S!qvvKA?4 l‡=|W{$"?¬ҹϽnVCxV2.\ ź3x鶺 VHχ} t7 .s =ؒ20fx@L- Cz8 uVe8 )<# Ѳ gWy98)9U'zTocl/l+R_yLFwknͼcZumiw[AǗ>'#E'nzkm/ͱ̱gu"3o ,xѷ;6"a{cmH˂4O-:9l6ɻӜ[2ͣW6*kbW#w^5Y-;1Xz%C#Ҏ>t3oQN#p5>iD:dž"7]hsiEx%fF7:a(<5Gj71(<t;L[uo]aYzgԇ+fzh^} tL``*ө'/3up8c?ǥfU|C 8X 5'Rσe{5UO'’m VQߓB͇6: =CtRtJAfr %ȇ#CԅEދ#NTҘ&5tec-8C#d^?.K}-ݼ߭nۯWz6:ɾM_b\sƚ 𼰷Sl@ tqYKh6~.3,zxdfݛf;6"!6aq7*o9Ͽ2-*Ҕ#QV36sjؗ"Ė|Mq8o)|ؘ]&A'QJK҇@Xvn XԾ,<]?>V}%WgԾ, q8>&_>O( p8,EbJǖlo?`HA]̻:VIުA JX ikI#;IƝsu 8H;O^?B*0 r$:Ǖb: ?{BhrF'(# Ӑ7Z6̏h9Me|tw?̿*>i+i{l>- њp^VSmAnN@lp=-Wp%oLVۂ9ncJ~7~: 4a$d:VMO^K2,E>Ά`͉$.L@ձp~]Pdr~KnjA1q1ñ!ZOȒ D"QA"N\H?r77Dx*ߏ).6mF:UoXHn|WV.ގ;lʾB`7ȇzKƻl }ff}__}}ckkx&xrsɷ?s6i=f՛ ` ݴ/Ck0㠦2F_gÝ`73ãT,|Q%\dO[ J>.$qNR銐=ɗf"a5Btx$bd$@rOҿoRg?J'6xCd*G42s+;UB6׳=6l ^׭:rӋ 'h/X`lX&;1 2T^ hsUKUk0>hO$&јIbd'R@xV3p8o':RLb;*G)`a%dÐ>x['3BX3= UCU%` ӟP{s B: 0$/] mZi\?7I0bQ"va.da bv2ӴTH`M]z~k&&J ԏz:d*-$ޠytRM/ƣYG-“cb3iӍi"(}hD'o-u;Kz[GĮoV/z5x4~eeᦍn`^uo `v ̈́ZmuVw[^|?+ ^g}1v܀iNc`f6`c6u276FoG,?b?|'W}ūˢu{*ȥV Ro!?pl8쾹=nЗ9f 72k*A&~ͅPNdᩞzj l+&?P51Qxd##BjD+ W =ovћXŝwȤG]caG<tNU+t*ua\W .IZU{XJoU3j^Ntdr/WrDC(R ČYP؆=K)-iK%Jvo_;.i΢v%SB|Iʍ}||ŕw{;ľ٬6LZ\X`rVg[muV[nu|a_^6\pb[1F4F(ljƶ2HxT)}lr[ )/F㊏G#EуECe׮h23Q^Aڳ_N(%g@WذHLQ9>Lh@@PfA:Bݙ{SXB" /\+K)X}bp/#7ꕭ ;q D_3+xWטQ34KpyʍGhbGV͙ PނtlƕPwAf3FꇰbD ˻& $K;6 58T/CYg E ȁTNHӕl: Ջ ch&Dщl7˸R^Mfx\=75v\I1>joM9hjgef)y1_lo,BMTy J,YU@czd ;r<kMP Qk6o`np^+~mXDxZ'„>Aw,^5%p ,1Pf@6D7amJ(7ӡ2҉rblEPM"@Qk]ݹñaX;&0 ,2YH70/v9En Kddtע! EQm%JE_/dFi{hCB^ voWFV07\*8^m5ߧZ?f.5pXpQihjrͶ#>SlB#~} Ҡ cӽ aEeb7 ˚ֿ ˏH&Mu2$Fg_)ȼ7|O熫 \NƋ9k8:6/c->f)Yk|KC݊yPfi}&k >?OPqOj1 \=A/MȂ<(@wUٟ,up %Wj@THlɦ_*#xы}J*^i9<2ؘXجE^Q.EGTKѝy\c: {ҟ~bJBCp8E.s%9>D@9bM:TP<΁&V’a;AG;AUIJw 18Ew,1d1qyﺮ+Cs?_e'_>XUN>av%]:X>1qnkƤ.!A0 쫛q1!,K lLl3~09 f@ !h(GZ>}}V4?[FEF[ƿ(zc#âF7VZlWn)ymtu^gۦV[]nut|eX wPHHg&vAإw-"wG}ehm׼a3?F\"E3㽽wSQ;M6z!G)e4'A3pbGΫ.PI+h=03Բ45[탩7RsBX::[_,?*TMߪAJ=2ڤh1s h-r}Ǻo 5ՠ@9Iאl_k^4;˅(Mfe hJr$^ٖz ~zۂSdЩ, 0i,Exk4-&#X%ki2hLJ-;+#}+y#zwys3esу#CD5];6XCoȲ%;p۝{n-p[n ΎX5 99M 4'cm{C60O7Ye>Sdћ4^7w. [ycrwȰة\\ i ,emdp8~&_:KC"@WSD'Q L@g) _7)Bݻ=t i>FU%o oUKPuvps.=U!/!,GdG/5լts uЍ3A}Y}R? H_o[>͓gKy6iQH].9#Gxq}ؗ%ZH<`k" ɂ~Y'YDz1kJ2\s@bi 5d|Oeة2DMgxMFtN-u.} sQ{Ŗ؞{V{[otg֫./kg2W/jvS` ؔ Q .?)rL􍦼#FnW#$Yk?>6^'%4zR dd| MDM`4ћ`"RZŕ,`T_@x>㐸6moԥ쓚)X327][k{2T*=!Q猧͍jL"Y%;?#]M;ѵ"0%\C^Дmq.oa?L=Au5!Ԧo]PXC1?{w\& hM83z 8?Hhtbl~ ʤ^6!lEsU9ZZ="ߟOO/,<#jdb)淓ܜTVZFZluVg[muxaaԿ* /`k* ) ͍5ShdEDGwl<]赏x =➲lϼ~clG iDw!Cp8"#O S؛JzJݟ! .ZUSEz'<9CUd$<֌O5 WkJd ~ +aДNj_g5Ьۿp^ilJ{gJ@ R6/! =.^ o{{+LJ{|([ȥb(y-v EL2Vڹ@00~$QI d7D9k@z26g9q j^Oo a։a9W3a9CP96Խ&\BuoI .bm;uL!ٚrfBjBZ'@~VV$ғa떰i7^!F&gAֲh MB+@r;vkrC6 ҀJ^ rVt+g@ZI;\,oExyM*zobggÍ:P?u`u:P쵙V] ny`soF0|c+Rva Sz9Ge7%㵊!7˧(ڙ&y,[AH[0[CeTȝȚHN2ǯϷ+FTE:4)]!9$[c =D`w}/@=X:T>3I" h&% av5gdɬ}r*i ҇A w 9&/2MǚJl捈1rwMB[!Y2{ٔ}[2g(y]mtv^w[nuV ȳmV`S̍.az퍭1/x}Yv^>L%򘬑f&0ˢ$l'3~ ю/{X\"\'!YK_xn(d#ݩ}YVzNv.TcH fYfj_,#M3uF`ͥôl!*{*L}X+2$z7z_ñ~S?)E>װ< o0o#??@gBu*uAM*6څю2J{AIE;؋\ c]X؝@6edƏRX`)M'0P+E-,a\>`E{t9FGͼH?E8SoߘhM.־tۭ__@&/c6'P|+ g5J\. rJ~yVy9KI'0dߞQt1tmd{JR,Gl_,4)/ p8%DEFp1C)iO|'Sg z#$d͡COMՕ't*|eEP?;s6Ԍtu#L`N]`{g5MLbW/M[7R\ft'}J!$_@s e͡"-ң{y04^dFu.$ Z[/qiG>p>C(v Ev ʩ٘^lAÑr\]HwY- %_$#5޳B.e+s% =XA6?R`~&^zc3>0m˭γ |M=Xۥuo$/70,x|s]!}7^WY(w3J]W|(c-R~>gr13ۛJh!O=Ys=\rK9RنrM-ķPpzN^Y \@)p 6}70^5r8mjP0 IgBP.1HFwP{Iz}YZBb[(3DCW[ҐȽ@%IĨ)(r8p[!0р+'[IKZK=z./-}|"U{YoOo,fȕ"7sUƚ N.lgUvGf3rӭnXo>F\`F׵ˌjY@R#oby8G&{$كsr>[X|d8{\)&Bp83ٌReo}hBg: ZP's.%'gG`VqPI7W!g] z :\3xxfa]6 YlTCc K E:Tn (;ݠUKSջ${CU|.3OA`atw/ˋ; ANc @EΏ;;){˱қÞl#{yɅr LOxBJV~ol+`Y(;z{ʉyn\cm]zݰ6`2=N7@l&Z#6y|/˸Jnf }DY!i۸Tja&Lyҏ^L&th&!W#ήih,p8~ ZW,`t@"}چ!}XPAmDVoMυÒ×a$jiSH6 >Bn˛z& @-ƻfpo`v,csG,0U$x*7׍wu8 yDpGfէ`T+'^ _vT{i3x($Mp]hgs-~p8,ы\K_MZ9(:ֽQBmo.^HF+{5gr<R$.ڻec+G0ׯeK&%XF PLFտs.c@,鍙ѝsMه x 2 C3Ro+9ǧ{s`IA:+K6 C̈́̑z)4hGBpD8 1a&_*cj͝k g:guO%K֕nM!Vk ҍPo1CuXuCV(!""/Ar.E<B'*mh Q ЮZNT5w)`Wf팓F XJQ,ҁz1lᷠh6tS"] ym{Xr|\'E>^Zcmi|aA= UkKX;&'9e DW.+)yNpׂ((βHZsK>_ɚ \a5_IR:S \DK,* !_Arbp/跰bXXu 9NFfbn5%Ƴ0󲁱Ƌ1o7RҺF`VS)}N۳R+øjְrF} #gg@ѪyrT]gCx О Gir_A˨r8f0`7Ґd #CC[Dz4S&ЉZffO`%+L%]8 5kٍ*c6M}M GW/Px 6`#l&&bcȱ!OҚdw]tB5`FhF_{)e*{SB1{y@ν:*v5;`wv@[1uDZ߅dIp{B&z+K~7 M}aUaz;ԝM 2|Goݍɴ r dӸKp/y5SEUf7j!i2B.y> ~OF O>dE'@Ph`]?PT7xןPuSd%.gimO?$}AőO#ZzK9UxR#5;KOQe`6|5 `mZ_VDPW´S["`Sl$ثh6q;E~,fҘUzH&K!un u0dg<z>s22९o) c}_;8*#)U($3ߐ?/ _/.t&!qovQJ&AX臠8QN==0~VɶrִU4WЌĈSĉ49-dSӛ> =me;B.e q sHs׍uҌtIi~N5~L@m @{cm~^X>ݞ_ 3 xlWC7loT`2H@[.t`wƴZe7X3{(U**PD8 D ťCrpkjD ܏uvg9U'dۄK:#OgP[W=~"֙fR[13IOԘF=0b6Q-s.Ė<w[yR\ud v@\AoBmL\WCl`2.x8y(qz֐4# ,JBЯuԓukC/%㹌(9JBӖ-%?d(G0)/z٫#J- #^U6kcv xےbc_Th- ~+͎~># vj}E1 BOOјI 8ֲW.ci.ށ;-ChL_vRB b|'cq=DD4% -1򩡺%)d7 뽐>.ܗ!j.?Iiuk2s!LMU8s!%*{n~p6鵼 &Sw6-MX֥:X?,S73;Q VAp^3DٳAǙ t*Ԝ>D?2eP?:󄶂*@:܋3!;;@h/c%kS5~~a+j eD -ؚ^/UN`FI]A9)b;J=KQalmgQX{~m @t{T6؁~L?K}T糁(f90GiEcIzx;ҚNg>~7IJD-p hso p8ڔJ6u([*;!L73 {S%Ae4 j WewPw{fPID";_p;s)1o 8GLWM~wkVߤ 2 |ГM]a8;|~Gk??/j9EkZ)ygh wB}!]ct-E;, M{ ԚǟS2IUB<И^ޑ=dK(:aѿ -Zs!6SPngos ۵_zk ޸MMot)$3iئ6e ~FRƖ=[ˎlOL 3_Γd=OKG_41e+iA#ZH5qSN|JY@х8~up2muD?gR}.G? qbvFAz6d wՠW;Qx2x&ujQp8dT?Wl\nmLt&ɼ aK=R;dȎڷ2h56Z(9_A o=\!Ɠ 9M("P:q8ulEы ҂ y!FѴs-+mFَR) e'ّٝ,с*n7( ;߯5oVK[F]alJnf,rL@W*_/fTߊR},1û46{-J`z.p8hLlL p[PF~uN{ ~zfA}z+0}N&tWe'#o  >D˳CJ,5Tێy+g!n<]\-V  7z4$>ϾEK};7} oK, r>{w4y |$_0A 1O[n96)?'B"рriATHW:il31Є̓{?s?Y(8<7欕&VG۵򂻋M6[.fο7v|&Mޒe2ykr{SIݻv, L{Eҁ;?&?@_?MsJs5D(_@ɠO@gzT*o=R9R}weWe :V1zS(,}3;aV0Ur8֮ov=L ҷjvjA( :!2\^S!WN!EгY8|8.j<#.=i@f̖ Ji^zl!()U:H_Iїb~r|-GK6?%n7)-򳌵]%Y_}~afk,tII =虹@\HK`e|483":QB4$F+т*hC)}e[:R@iBwZ&A`тT["owM[s16дVkca{?6tboؤ<#\𸭉H˷,|.W\%'l)Gz}FцeM)HkJi!.S9ʱ6Ω;r4pK=MkA)7ه q>-rMmtK@jRU/W!T5X$S\';m!M؍A# c.*m]p8~7~qm4R:*>8omaM( NքCR'kPr(muz!ݵ;s؂r\@ wr~U6?V_}=!q| KQ M%Qp`9q|GLm2R/`9WWcmnZ~o%}cX[`ζo\):HLZ޵,='-)vh yve:2}~rb]G,f q1E W 0 30 wꢙOtg,OR_Pl`f[}9_%+Hm9+RMR zh;f[HVj1:O/UGljIfi,cq n C!64D S`m*omIؖ4?;-= ٔ=9=K4gs0*ĦKwVRLҌ(DI4`55.p5VaOU5soݙGYz {S*qPYv#+tTW_EPIm9d=)z>+HjpCKċBuHݓ=K27hs>?5NAu*=YW@݊LV;BjazOӝ;Ѓx ::`*Ȱ{|_T|! GlD`3@BJ jJHKgQ%߳&/2E_SC0gkk /o0 [;/=lkKk{ҎWy+kSGiM&vDhM e5M))#J D|ڭsg?p)ʵ}vR!>HWi$ M]S>?d wȼܠC:z\ݡ,S3K1$ofk{1» >C3{. M+&֨ြ_MMG{O2`7&Bwl dkc;%V@}-Rd/@qh[op"?gs TJm{x}"@k^%O*#+SEFk8N糜 _煿?l~___tsmz^~i?S{c7Ѻc+nB;c%Cr%(q9rpD)brI>ĿWЇfDAfi )Bо:e.T 8Be:tH q_v:}^3'ԟC ='xVpw@2&I:0hwك=$g7O yZpnюlBl( J^:g3H5lndH(#?RG5t2)WV[ou}X{c6E r[_Y*F0@Cc۱n݉-Sumrs6G3MН03c)d YjM,ߚC$k-p84v#1iEtWPЋtAvԦAِ(.Hy]X=z&;(d?7~-½\o|E;p85:9!.KxB}492ؗ7ZHܙJ;f?s!qJpF-_BQzQr#''߂(Dؚuǣ4#Hf>s?Җܜ~k&VWkuˍ 7/xؖƖ\uc/n;@랴go=ÇzL /<48Sa~>)c3XLt%Ii!KM @Q ~:c4(t# a.3܆2;~H\UP{Mnpv> /S@zyx{#p?fZViKLgTKY@ϛf|\9'cId<(~vڏY~]3;LO3]'ޔ.X!sF0[ ׶؝*=$#wlN /ˡ\p]].4Js0V̄ɊlufJ yN[IrhwݘYOTBn ! W7~ B"jz e5&p^WKwq~o=FuChu0{7ǽ_ema@[Ӈ=Bc9. ҿ!lHb~QD3,#CR(vn"TJғ"43^^=–ڇYy'[?ٱ[gj;cI`{х MӎL%'2bY67$̇A8U7;<ܧOB"@}$SPwSe'E~P2(a-9UP r~ :!@, ԑ$c uz7rq3>| O2A=_o#xh`@46h- fXy\xumf>a^fڱzт Ѫz0 Ҙ͵Y[3Dwӫ=+'O?m^#W{\aI<|s_ssvrN6;;f=tfA&nH^.=LSl \*50Em2-V65nryFña~u9kpv/O /zHvO9?^!mȔ_p7}s2R%$$dPԓdYC V泐;17u }^N&sުWʜ nV[o3ڛ& ?FmmV6сZ~Z@=UX+ xi kCGCQJiCk!*D2@40qO pfJLjDM ?bgH݊PtǡLT;AlJwL »GuI[fZئnp8W76!>3ICd赐XOA{2MB]L7ɉ٭2chap G" |As/ R@H- e.#ṲڇiLgؗ;ytZ + .NxM}o)mmT5LW˴nw3'>rkx< .P"I?f\?7)A@2c2/nHޝ@} uL@<]!}hwM0 1f>5:__~7E?l u2- u Ԟ;ILE a?, {BY^t8HGqggPR5,{>cu|KR$/=wn+z>$K2W[_?j[lؔ/36ֈ fct배Xntd`ೄE, ц~ETțO1CJnZe;f ѝ8fD^ p;݊!3:\7+X'2')^ol} 3$W~0xY&^H՘ܢnp86( r~U}^Dr~8Z{5d> sHݎ)P763P۲G)$˞Afp1C)59;=1Д*bJ,R:*,:*p2guw>eUx[Rl7^R$w?˹-}z6WXnu5ƮM257h_h/u#mȏ>UbaS|.&v'Oshla-Бe,Uis\/H؝Āҋ"`;1xR)$^ȞA٬Z(-Z`8SL5Ԕp8 \C2݊!#z7$ZuRԵA%'Av~x6s@8 ؙ#LF }+nt8"H~j>CoS*]cTO+ a*i+%B-gMoEGo_`l]Z]nuvo |ju@Q,/Az| 7A,z9idO ;s [0Dަ}d \p86(֯ڀk1{IjkZ$WsccRjj ),$Ѻs!{ Tp-}kH6џ +X;BvZXC=+-9Cb@! @@@o}oGĖ4u$:f8|9W2v?15x]zI0TGt`.w3to0 ~=_eXnf۷olSc @^혂@/ѿs6ctn:N,\,.I/Pb+XI&/-`0-B.p/)tfZBfU`H[ uZ0!Rx^ Sډ@z4]-M eZ 2:V_,]z$!Xؔ'Cԉr:o 蹐) X}t%i 61*>~^$Y,j3> d Sl0:x[ hT׷mKC oR9>7VWkucϷopM!Hk : Sv}79L3OYFnz%eAZ=W:Uix6{r|A#je\x 5}, Rzgb8~J" }hLDVQޫ+!lG)d;d|9 ?K S؍ ߱ v&Rf|Q+rFؠč_6'g=W} 2ܞo =C&l(<\'CGݸIWl&sAҌ(!)bt8q!BgPK^[e}6xw6Z2cuÂ=i 6|];ު?Sz݌mߍV[ou w`K " ~{QMhnfs4y5cp89RJښY 7z-C@5d/ f[r3H6`). '9zWQAȘ7Q"j5RLe_郼C>:y4{{zlv>.x#\)} \'tN>ϙ{Uٷ<ޠX;F$ <| Af<Q|rg_<lZ~Vgb # [p8Nf|TrB%VCf+'x1 2ʭ7~ Yc\6.Hfe8U0~OZK>2f)÷qȶ A: F-ςnǮL=Y ԓEnƟw(rOOa@ :2iz!yQ7Y:ul]]GtûQXNs5ntVG /¿vgߖԃUCVjxHo&^d [sޢтm®^ɩ$$C?` 2V?KJYFړ4IRdLMKǟ܂9VC8W/c*?|pSBvNSophd0Pɷf2cCc3l5QY#c l7 ln7C6n%)Cu=y &P\N"rWpe0П$RNDk]rNflDЋ?'}RO˂6:]ۆrҘN%s}-zAjc87׵c.3ؔ! TCc h=F7 sU8PoB'gr~FT^/]#w%sN6[g l_ߧ,:*ML@'Ig{Қ/ xSE_lpkmy!Lz>=A,dp8 qWm,`^,Cn!;*@yB]a~Ύ-b 4%?=k&:SI5 U>.9wc,0d?=a/i՟˹x ٜՎEaɼ_ />n؝(lN`KIڛI. ,<+YMCF=!)1g>pdm Ћ&D:҄8+!lm zv ăǡ|d_F_rDA 43ñA~񷹌6],Cv7a2d ok!Iؗ+!X!7ϗil,fM(g8?;v,)Eae0OY0(؉^ҳ8@g#mm5 R ,3g-,hMl ߦ/7֦vX<}_gSNӬ6G7* rv[.:M( g3CgQG>݈ 69tMm)+zQZg5:i d f9deLRf^觠ɝR<&иotñagbi[cp ܥɮy# ٝBv>h aKmp1ڏE\sgs{IUe>;$AP0YTsdcs@sVT̂(IDA2H9tpz?ލ<9uyl*[rzrJs4:]HwTijrxR߇5M,g'IUM#k: =2r+E+e<9Y Qnw׏͒dp=_I1PEk+jQ_mh q\LAr ! kCFwl+pGxCU&cL5M/ܷ>>(3@*s=Yva|Kxf'ؿIBC IJ)c9{K\&+MjJp_rsOto=Qk5%f*tbH)}\ ۡd ̍衵{{|q:?{wEJ;S0)q |由mҋ_d@b3||zL 0W/\QL$"U<yS)l`3@G[P4~ @N4p3]XJ~aH;,d &(VRML W:}|~Lϸ~/a$/C?*-du'XRo}=utsܨ[)sҧJVuVH\kRŪq1~YjRL ꦏxG]6vGyGy?8=32/h_{/a_(B dsSq=b9"BL@ߠ7Ǯ(srQeS VmIqcOUcE?fFZГx@ Z-h 4P@5B;]Į{4ޔdC`_w>7rYX缾^z[}ܺn;ɹ9ks/VSHrVh^ 3 :f s#kmus{=JQ;/vrV{߽v\"RS%,U$xe ?0E)ĥUC0A2CW5 ]i*I' } *d @Ur*%%C!ωQ>>>>)f̪-z&+ p(MZыu-@S<ei՝F4 F&_:0翀̺=B RL' 1rU6bJ٘>»;;'5Ksn\Ľ6jsj l6γdggDƑ7] MB. }PdtXaZ 3ܺ^Gvnwtf EOK^T?.ylXL$'Z5W #}|KpT;>ϳiJ:N.{yj3Oeyӆ;kD`\mYz,=XN Cg}!p5`]6|MoPH'PЖd: (` 8@I\2?wg\P7 gII,m*b\Y:zݒy㽧R\w{̽m0@]NZj5HƱk5W{y @vjA,շt/uV PS`"Osu7N4u>tLzLr7+mEr7~`[*RJR(-4u Hgm9ƥeu`83c Jp PM%ЃC$QcQ_0ZG=Tc|5.Qrv$6 ijEQWKe_6Ovfd L@ eROn+<2̖dFjْjvt?q۷;u)T07nc9I }5n-0ǦTcj5M { `M:?8? Q]cܥro.Y$UٞOqܝq|RJ$.?@M:p$p Tswgf:Gij=GA`j˩`W`*98JB;RzP h  _0q@PS'H ֗*ʹ_`4P=@j0SbR lց90PcϸRJ)&=?9{JtxɆ.,wuxY g@\fEIiѪfv_u"ygt{sNÝn4+szM v|&p}+xncR?BL}||ftu+`MP}hVg%'SjSZ:(WP #ɘ㸶r:Ъ3\kfm&kE!k6`GA`KjOBZ \<-jP6@6S ,H2XJ1eRnP>9>=B`= &_KSFN3;m_f_gሻ[[BIDAT]<9/iM$_?%uiOsn`;* ^ORVR8R 7uB0%,Wu`[+=>TWE͓@vp=;}km=4 Ŕ?/%kޓ8-( j5)T*A>>{3Uz'~!E8 bQz`k :!tUj4.ʸTWN՚4SWe;ۦ5]*wUՂ{hoԁS\ ށuzr#Q9UC@r{a&pE{ggg@&F|&RW"FyW>w_&[$'K\:ՇT][e{k,P&~?MZ7fDYsٮM5.Zu ʨzX?%u+ 0AKGi-Wצr՛3+fxUʇoPE DSd $+LQ|SG҈$k l# 䲑4Ј(XBԷE>/-9:J!}Ջ$ȁT:*5ȯKcVeajB.V/Tu:D r5 Y Я< u~Un1?6>>{=;uh"JʁSF7 rvpkONOJuL>Zyutőu:7;B|:Kl]ҪfgxA"4SfߌuֹZMӟ=Y1'iMӿfEy~WK.v>`(uFdSwpKM"t>p(H KDg>Q!D˻ fAg=i I'%]>>d2~KJ`֓rp"ԪmIo'7O)o-+Iߝ&o0Z͖QlP~QYCUV;ǥI@6(ʧRIe< Aa KWGrO1% dy} p 5 rtz"vczsz^ p$6Z_f4"YF~TsS)\8P}#~ɺ8z:L=BSn{1%ފ hFGVR6Y IY}ew9;SӉթەEK~H}Q2Μ;ʺvӡ2B> xv:Yj2z݌7~*Mk]94&~0cb2L >p[F\q^yp%Gj)[UVīUc^LNv;uSH~HC9Csv`{oKwCf AC!:Y(nVHgFfI@S .X ]zxB[Su6'2P5 Mh[R||||R9(k[Q*u4&DdžH8DW!):r2|Meircg>x"=,ސ9|(w|!Q钞/?"բlEВW qJ*+_R~W۾5.];9o2h?\̴Z O7~=ng"$@t-7: hXqePňe{)y7eqULώ;Mm6>=.|$e|]Cs*0XD$WBI3|||uӨ_؀ U A9j'CU-=!rj`!h&~b`yjj[n( jmG @.hDԳS/SsB+TP!4 |u6%J0ˉX ?? ?g(@-6Vr: RAe)r|fu7RWP~m'v\WzB٦%Ý͕O-ī~,=#Tn4+U73~qM/)>>\kC7~ӍnVgvȞ#:6) &GIA0ЌV1MuTH}ʯ+]^43zntW)]N7mF˝v¹,u,rals&Rz4$a9~" r@3|f{=2dcJR@]@:4+dj}HUv"-!>ikP"f"m 0<,+]i oᵁ_9WG@dY`ʇнjRR&̅-Ʋ4:`ɱː_~b=ӵƑZ5jpo0?7MLssLjI_&YS/snWgV҃$!éDهӮQIoM'$_Y&b"'ݖ$zjyQ8 GEd/X] ϞN^M)?r@?\6@pؗK :5 y"}lc`fKQL ԸK1vuX&9 m XiSA@:?SNT ʷ|zA@}ޑLQ.@+`pq"N&6T QR7}g)CN'~<;^}o+_T6]U|IֽaAsk]3G&@ ՚]bo|WY/,q뚅9fߌ'0 }>6)-t3y&=*5-5K>ꌪ I~rٖq:GvsyϾ>I&{JK;%cœv=!#;[g d+E$HP绕 :O/YoY |b:ut(s4@Cu'oB`#:Dg6XoUX  kjJmWu+B@/ZD͠FY   %c! SO@5Aj`/bb@hhAh>>>c'6TH9Bk(y6ȫNciz*9CpZyzjwgsbɹEwOX-zW֫-֝> Oj5)~i5ɘ7mpw[#E6'6):_T?#2Yu>-Fr\*V*6}dw#D% * 0*3aAt,ȴ=q| +YiD XC%#D 4 uQ ୼S7k!^fX e,ez} ||||DXeN-$8\`Rn֥ ˃w gd 5rk Ip0@hRBMd"p(R ^_ =*?HTK!&vE:ȷ򋌑rt(1-"i5}':oIs9~^ʛ<^mcFd[\xk]O}Z¤izkkzf=~VggӖLD~BLRVImБ Y RWH&ҡS"i;RI30g;֋zyoIO/J SiZX͡2^j9[(aUNSW "*HڸALgٳخ3>`#6< ID[,NSSh kU/ ܧ!P96&p> zu:O3TKB׌Ȕ F2ܝބ!pnU]Z r PK *Z ɺZfyh\@%j]>>{8JGU JBbe;sY,o*#xgJ6$gz?ɽ[`9AJI}iLrxUCR|^+}օZWI_G?y0YI7;-&feilw?n_o/iݠ4?0iZџgG28f PgxkZZdIfޒI[>>{<[0Q (9d2*e2a n#9RΕk#=:$p{߸/^Kl1XG?:T/6~˴TQ@eĔVӄ4/0) &<,:O #>&:w Xq/przzW'{H//=/eW)SNK; eY xĉdRCϿbrO녝^YXD[cľ ,T_AqyOꩭ8BpQMnI:mkt2=m0ϮvrgˮJX*A=ÁOtp.y)M y3G Ƚ;@AlUfQׂUhA ț@Qگ% *FqVeޓ2\^'s)RY"W-Uzuocgow{si>Lq9 }63ܯgf2dcj`y]G6~xڝ^\,͚ 15 5iv`pl`j"%&ִFW{3~=-s9z﹏W'f^QFկKRorX<Pr%T9Ew~T<,ӉfGYA.~zH= 3C=6 S!+3|UAxz\#L*{Ki?cH[3b4cM5F}||||βe\GU_>Y lg3%`h 9N^ }jAigU><HTZoZut7?˥V{@[{:;8ͫg=]-o79{C^^əW22kG9K;Cl]Q,eR="C Tmi M[A~'>ݧr <6Ќ!8`MWs2-Zԅ:k`m"SR96[Sڊ~1.hd j;^)R(ZAkƬ)/Кᐳ!tZyNW!ml=ܬ~P0p:7\-2a 2j =||l_:@(U2_xuxkd}dJov~ spNtOնafgsvxFTO}lvk~kl3]kcL&ҰEIQ0&",q:ksc1Rh=ڽ9sӇ>K>gO//v;i7.|"ʚɚh L,ru=F-GS(33Ց46) =;V摃A.U#i V/]nR!olU K稍=s3ZV_}ՏbuTu3 "ڟާ2ot|;998q;ion1'uhadܩpsL}6S]ckZn^O6~s_]gպddS.VIXD,:5A7 eZMb[ 4̜yֱ.`s}|(1-Y]H]H~4']/"+{o >z ^# <>Y:xmUTLw||lz9Z(\ocU +hAzBh=8PK R 8UÃ)w> uOK0 ~)7d}E}i+.hHԓUM|΄M֋\aj* ?QU9OU z 3 Yzx(8Y) `H钄1~] _ng?%(+_xG';3y5EoMJx]ccwY|@g}֦Z?jR?l>>>!lGԂ@OBGS!P/ !vxzrg*j>`u,[gJr@f3 L"I5*t/=ׅfg3e,eWovlxE\;~ 뫮OU{j˪Nu.lUBg_cYim1M`6~"&ʴfaw;녦K٩jҬ9Y_դT0]3 u>jk?GתFUܼxa|f**f^VY+9/2/>T&xWՉyrWSm;|Vb^\;P^>>{:fWpJ2F3m14bu!} ԃ`BEk, goSՉzϽyp:IOr@}=ϛ z 7?z8QoEo !p:"ΐ;!FƑbu1y yQ!QoAzH'K@F]@Ae^`?/@(&g"irW2 }&9Y^Y: 9:!.Pshrȯ 'T+6.P pzW \Gg~[.H[؝3vpޟP.3vF#G *ڝ#}SHPuTxȱ06QWp4- c!@n:X[Ok1 ”ygd_nf?!i&D.Am> r};PKLw.|ztGoU>Wޮ<^UT_ɧ SO*[_v="$],L3Zu{_;%K;Uj{/7~z2y?"{Rsͅ~fIYZiRH޸om_\oۻV]Uըr`oNϩлsJfb/e{GG6 `ͧ0sh WϞٹUz a@`AyՎ!;po@}uGc>(x39gQ3 ݚ9nj&Ig d6&Daly㳷c윱v(e딀: 'NXP^yT@[Pȃ{ x {tP2qTIvN1Ϟ"㧩]!2 @!1U\Y*Gke^S Ton>RʱVc[l۸nbkůxN].ƃl5Q0󦔞7Skl 1d 05.?F͍274SpӳSR[ֶglbM_Rݾ6Qu|%TN:x?{ȍr&,`)&NB>c *?l:PH{E봜h*@%ـV':"m=ի9\Ձ:GWG"Iu"C=>WJ3]dn6uWE㳗mܤgd)P\Gg8rP腿Wuh:j/P]!H"@X픭dy28;||>h_hϩ>Z\0E^g9Ny!RS J/[񙕷luoW2w,y1uW7_KwFj^G:GL3?Skoll?7;d՚/?{=?ɟC=\T 6)ki<ڱ*KTTLN ö|CS,z.Jw%p 5*5m_uW=^HMLLO^e/8[~t[e`Cl(:TSMO= T @pذC]E9.pL!򻺔OIV@[AQD.sUVgxO! \NF(&PFPY+[-zTo̧|m#Ԧ0p:` Ե3)4\ OF*fP{@4O-Z%^77t CkVM2 d:E "q$.o}}||<0]e6t]qjfHiG&ˏnV0=i(uS=ǽ[S9Im;zꊥ,Z,\;ovԗ}Fw7cL|寣Քb?3~񻳦3ϑOJg5#0 kzԈeZu@ͼwRllw=N+_4w+ʖrڮ^rt˶\3$]Jfke*Nc8s}CFe3]Il- ԑ  KKs=T/TdY|h+/(jKE PH:r[jo$Pq|ޥ ЖS=9~tM}||.,;{l9Os9cyr_~j(~@ F.Z;")u<wVe:Peӑ}[*@+S1~YPioq)U\~ew|.<\9KMdLSg'Աɒdlb?MmYsu*~xtClh|0)w}5SL<zG?ϺcMqf>q#GjJi5]7 DꯪiΉ2m龼-=6vm۴ ~fy܃MϽӒc@YYʱ*y~)g X)+pqYCHeT{ Jܕ O.Tl3?$JC1{T_֒Hu<~* z;/ JCЙz:`2*Y_efo3v@mUO %J-P`}.G* &CT&"Pv 5j-,V!P}ȇ< T5Qcץ/c(2&\}|l̘?㧅ⲊMeL`|.zy[j9ȑ&1^H,Kpf޹^[wMTo;znt5vmiᾓ94ys2[5uƔojRkM٥fpɸ7k+kNds?Skv7C0 MZZU|o;OǽލrXay&yWCB ޶}%umpuSujWh+ETuC9L")&}(Zuuc9d..K %c=홝y$@.;*)ZJȉuY "? u&>خ&AC@;k>:^5HPy9짛V U㳧b옱ke^_mYjZr$R.(])G&RPxgX j}Ά^}$  \b=Kt  3cYR `}||T_&Jh--f KY$13FHo9"UZD]>'\[HP6%Y3ɘL&y2D.-jbwݝrSIa=[oI%>2һUΨ:\DxUM_"-S<-Cw{pppXH9dAEߵ<٣RI"NiTSӢJ} ӭ\ чԗ7-t9VC(iC~~xy;*) R !(pzEVg5*TzAؤċ.||||1vwm6b:)5"[! ިA }T5B_U+/ lBT5DkoW@Q@=Fъ7XFTR~ge@j?n9+rNHޫZ{吪-s_L|9cI} :sK-i,IHS>3UW1٦םchV̆џYfcL)Oܶ?oj6g]ZvD.LMI5f Od-z{KxT^&_>~׫x~*V*^ԉN3>Աto{W^?װ"OU~H$Ǹ۝YӭYJC V1"zY5fрyUg"=헩h& 8?EWonq.d?)-<.TxgyyySaOSܡN cӫSg9+N<=4}cj3'k%yY.g)ЁVk~87#oۮ5%Zw mRsbwUդ&O7`Jß=A߰@ 0?M:;P{}tHpU;j{ޥrw|T*1AruVf3RlfC.9@b@@>>{:v&_J)ag՞P?ӏƠnSr[pα.UC΢5j%F#ST[}I=W9%`5VYq%w8yL2aS[Y??)T&jvs HzVVOܡ:E's~X7U :W=EҪ VBxXq0eA \u".("ǟci,J\ \a.do"i"]'x^7ٽ4ڽ=Й8y9Yھ._u[C47t;b4 (jvwL4v Nc53XS2 2C_XY+9K~ ^|T7]v(l+Yg7y3<ŧ9t* j-3%\i3||2FƓBP]JA>c)zĀ!¾ȵ.B}PGj۬ s?sy IE!37C;SqmJl"o&;@iHȰL!%*L@q5TO@AWPȩdmP!T7r!Q˾vf"\W V=٨eg/4LostM?*y'TqK`i;˽r;Z=#z'_ &RbJrk2t*:_kmVN/uuӇ:v9;[/+7yXx# U@N*St5UMsWЄCLC ~)Q\8 ɋ8$FPU: PtR@SAjEAb\xF@fJEܾԥ;@f' HvvSS9czdV9:XՓ\΃|L8`m ])sq*a~1~Y9bDɔw)dP-yIտxyeʅ.vWrnWu&R2},='][9s2eRMOw3bzԔ@g5jZMS|:Nf=n2gi d2(ק}lv3cLup4z:n]&%MI~~Z6NG> kz.U_XJ>>^] '\PmP\U`=Zʉ,Ѝp bWFHMusPP~a%9JNU@p˕kJ)7xY}D-` &B}ӭ:Q?XOcZcX@PS P.%TAI @tQ0~G"#P-Vw2N}GBB`z+kjla.p2],d'BPeyG +gS{O.yKiw|3ƾ>(P3񎩯Su7%KM亍X\Ӯ>٨6MLJI7zVqJLuծ*&+ZM?>& 2Ldd`zAMm `zkj.ʴlggTTUi%US'$ğJNߝ>kAOwޑ^C9KNSYbz3K.P4jQ:@a2s'`s0vJӡJ5HFQNfiA`jA7/ȵhw|t5YhmzVPX;2Z9Q!$% U?P88h Db΅uj8?*mvbbbbk+/' Mj#FVXBl6Amh(:7u4DR_ڟnd6f,dxLwOd-{|-㇅P:@CK0Ys'K;O:^UǷ9J'Q7-yͲ:ɞى*UUOyU QN}8Nk'ݳ"_~|V4,5~(0g̀5j slnV0dL:%yf>b z}AW^RqnDʂV-'d兩ƩSGuq;.jyUʹ҃.59b{ Gy:DL&Ϟϋ3\OT#oPL`)ڪR:BGz  WAݍ#ס~X/kԝj-D!9\[CtHf5 0X/u:JeV|:L[W?ءRm)ԃB9qjRPH'k;.:?;Zun*D U1 #NL;^_@ס/M&?X~I2;^ $WZps`U[)1:?qc٘x^孕W-](^y=vP.g;I2"j\?f#lj?̾F'0c {n:uB3]8xȴG٧pUв&eKn(y6NAAᓅ ]Ǻž.%yoBx\.9$c|$;JwJ?)lpqp THG=?֗I:9A 5$ڦI555oXc6PȹޭP0%тSiOZC29s V^~IϞ-UImR 6 U_8JlP#}}jD^Nh=zOI=,P_%!ͩc.@g_q5_M޹q?fZXK^ |ޡ>ry3B(^zB{sUm#z j^ G>W[!@mٍ_zFLMo8Z[Z߫gY r&&P"G^"| t׋~C}| N3mnJou,+! _Ē`PЏs O+7oeUN/]Jrx*-2Ԏ1[?lblWwpq9(A4&ٳeaq+E84ž`QUOVzp&AݩcШG?VPqw xӼZftLY_mKsfaFeϟ8!&Җ%ܑYJ%Raǂ).(%>{*ITB;Ie 3Dd%D@j_dM^ڤz@ݫX@!়ޕ) Q. ]ʦnu= 8RY/_EfBۡ3AYS ::b?`MZq^6hvoR4 7lX!9;TAhT] j;H1QrAP/AURqlcͿ@}|t,,, „wflfD({bf.T'.Uaa>8~tEUwV^iІ7_?`dz}˶^]][yrv޴Wˉ s}UZh5gG՛Y_=/g=r?&`vMjl&&# [aVdgh)VdKXtq~~fy߬m*e.\;>l¡*]~hK˶ko޻qdhi.O'd9ў{ X-ҤH1Q@XQd'ZY2HoƓ#T\<,Qu9J5j~C9V%4=>@hIQ uC3ݐ:NPՙAj5zǿTMJr4cecG]1v؝fu%unN":B(j`ڡCPwB tƿ.*ёU}&V+oc? =$H$vkZg!1PwIb<3cʳ s-'J*L^Z IޏU/^uXZ/8Q5+XzSl8m5뜋K1qGܛ>tpWc|SoV]/foY3nV&~Ɠ4| &%dG~jzԤ^q7;:p`f֑Zr7ʝ_]ݹYtyZǟ{gLXy^Ʋ+Qtanm(;9x=i&JJ/r\n+f $ICCNfJ>>{:f\Rj:{NGZaajU#At`,ރD mMށ9u" :z ?`u/BUDn V ՉSH` vmjk^8~#k]6W.6Xԡ ՗ 2!P*Pu.%h+Z WԲAOcZ@pjcXGj%Tr| "2nǜڌL>>{ ƯVLkI/wr kߥ@Ңxȣ޳I!^˯*(ab?W]e*IN[taGw~>}u-= W:w{VW3'#WOzӴOLq3{x/j2~[ݵW)jRfaCs#gd /D tÃE)Rf)Rp+׺CuӛӁÉ !Ӣ2ǛuwCFޣַeXckPzq>>;svbY&Sɨ:P_վP}8"mъ@55zum>zBu$kKZݡhyO}#CU)^XhŃ!Nh9S #opFa@\oPd|3-ӭ&C/^5;sl_I07Livu>I7mZۢ&¢:cAyT8% gw''&rNkb* msNp/*GSíHP/2<4CU\UF#j@>>>{&d;)<|G9bfꪞf `~R#A!T̺/ڧP?b-r^P5- jʂ W:c\ K8ޑ˗kUoP@}mM^~Rx|un"jDKYy r Q%P?r(Կ9gZ :tFBcYˡ#P|iRkh2xcXO d0)gW[3nW@%N)#=A-$X z/Nw۸Jֹ뜶A%=mMͩGRS*HDrR{\ SYVc]oRcChn}l:窱Y6HI)2x3Jf,). UKGxi쥜19-78YzM5Jx!(Z*O \2bowhmUr޶jUJ[{+'2'ep&25*A2]*M=$s/YIXʳ؆ 7PgV FqbuΏ-΍,BƱe:I ;HdxXyW~C69,jH'U,evS@('k>>{>;iĉ3xםJBnܙry)q'_o?o,^!}iɞp2$9+y]Uȷs,zڔtzCZˠ7YDo״#5֦d֟jr c2VPMLʄ温Hn5D~E5ZfU_ā_[CbnO/ |뀼.Rj [8y)H5ImR@!Td/(L ̖bQJzjL@^ZU*|pKCW P'@]נr5r~vKxHn R׸ pxCU+/n U%ǃĀ2 v62r5;1Ej!J"SJYNXWtՐ[?tzjP ZWӜVy&z!7 S!6'XCu`V+UoXV7LU e@!dƀw}|>>{ ƲVR&PF I zN_(j6.4Um:vu4z2[pu0<9]Vp]Eh_u'fD( \ɟ rNfI2?b]U_}@`e"S=;𸜞M#yfKζnbZF!zw~u;X[fnT^NxsdW.-m*=#GM}a&|H=%E2=uݨN)RuJnrI)%Ǖ.(XXPTc-]QrwN`J/}|*9ZkewSՔok5~!_m42D678@!1ctՏ+<^i h~RY9+z;q+ٸ!v}XC]؍y pbإ9T(M26yVӛ!A$_òY ?A?TϞs3:Yhƨ(0N>i`( A5Zj筗)?N!pGG+W#d>}Ү:҇HGT# orZmU dO>>{>!J@2mFXU:AD5 zec* SPk~Fu*[uU>4ꒃusUiVhl5##!62XF@C'~[M;ۦm]Qq/֟vLU w;nMHCݾ^}L7OoI7~gC/f1Jg1uucy_ǔ 6cLJ.XkQe%Ch$f"1&˜;kȀ׽KZ'G#"oe9?作aՐ4go/GzާgKgoL4k]qgVs*r~5kSaD$K!:֌ LVő`1x@Z/|TTKm4\Zf{}ç[gB7w #.`jAB>X$.ɧo?S].i̛l6'Yèj7ML[|*S"?7԰3?L|1Pp W9"[ԛDXԉP{ŜKɩy<3ZEVX!'|Smȋ R: sr4L#lg8acV._CW̗d,eRdL:z 6;[SZߏoʦWu ֭MNrզ7(;uy^cl2j2Ƴ8/ԪKk[_k?ƏclZFӏƑ77L֯ә5sM@I4%zѪL/e<&N+S_֪&y:?2/(|ra+uh:}mW*ܫ[e C,:y bHNKޗ8coЎt >>aı#0쨷.Ќ\b@>Ij*P7!x-C'IРwΣtpޑ| ;>*ۂoB_[O H[``/t=I.} 'o RG tBm=kzbCߧ_]zLmDH/@}:S TLuW!ejl^Zl+heM;'p47z;j݃)E F5VTp R GB&1e 0<$A@T88@,#gz0dқe̐)UWB.׻+Aq;iX}b_eʉ[scRl%%1=v ̐,#RwjMC.ZuwCVW?WohjhWeeZcDJξtE(#3L|&DMMF-f0I,5b^;[-^`Y-+:'OZ3zE\|u2gA*{ɯOE'F49n:OX.R4;2bTzV?<ӵ2&} d8Tu>S Q:0P)`tM:DH i$w'`Bߙ54UE7wUN.oT[;RWT?ԭTf8Se=m{V s5*gL cH}xӹKBE3dw7=@2?F^$ 722`&Hޢ5Vg 0RL{ t60 |do^zN~v7vk SذP@.ځY[Q}3:;G)`8r{T=U@J[VǃJܪgߖx}h+ n *6k@T.ҍ `M)[؝egBYwː7 x Ƌ2:Z Ϊ@sZ֬(4>$ yse3dERt!8h,f$C}ۦ{A}t~ӭ`мI7Kf!d٬ktkt| ~߸!~_ٚms&P`<i6ƛcO {GN5h@K;U²,MRʷԏmyU^N|@q^h %,Bmw,}+# ,7۴yt,r쐃>BK>['4,sڷ}߾:o;SN"h]su#|DZ|q A2:] uyz*Ml;uBu7>݃vRejR=i:t=POkr@=z_ !uɬF{mOXA>;9l}fSk-h-=!t}| G@zE6 )! j!d׿/I2f NOnw{#Bלr 70TBі:BV꼳h26wXԺCH[" S&|[- F@S3Nv_宴gB@(k* fMa'XkpAHYCeؽN9[8|@_Xx'T􍿪Rbr z=ftQyL"ݩ&KՉ!x5n\<\9%:1D*ˉlo>_7&j6+8gOnt6S)M[>]°^WhtF@Wͳ57MQsz7%1["S/yH{fX ^_l(1ߨϙ7__YsZ5-j.kW׼fV2opZ{3gۏm?;=n Fr4(>mh$#.--߬wK_w#k]SB_nEF~qA]$X,`ugFy}wr6[X3jaon=/ui~'yJ@xBHMd]-.[X e cb /P2.]  <k luS_2hO\OmvN*ZD_ɬ:NGw`JlV¯17:4|fmͷׯoJ.ltѱ ^^Kt @C]im)>LMhM ׬ Dz]esJ9J߻hUΫ6sw}h@^ps踌37s>Un232:?~5=8NXPpO)q깗QbrYbs66>R> Ãg L qFaNJ>WH)k<節`}*i VTssrOb,Će}c3U_f"- .EaB< @lPG1 xHVJP_Zr]JS݄5Wmq-|=a~t*OݵtzYcY+ t{FC {<'|V^2hfZ@P*Vdiz wTA `.Tp6Ѝh @* :%˯S6R@1>XmV[-j 8xX{M\کJ[x 'C)Krnci9poQ oL4͹>܃"LWAg0&\)\LXar8^m*oB;d,c7>kz6u$ҞsuZ9V _@݃ _dm+(op=T 뉢@}8Y Ǯ;S. lσ,Z$, |R|L)RԝɞsߨOܚ8V+F{W?ZvWq(º֪桚#sڎJ*hLԬSlͦ\+0t@uiݘ7:RSnFך{?lI Tc~`RM? جԛ/t[Ǎ7˻z~f0&G6P7ծSmWW͜nX;y2~YO=~rB)~p9+{Y;׭n.yON2M"0I&|V?r!WlUJ8N5Tfؘcc f`VMJgt&h6%FYsC=ktѽF Hj6֬t[1=C+^3} \ è]#ucQ0[!9+k/o~->3l ʹ2LJ;$U)WcwR(MhJ39hM b9S#]T=xgT'Rďhs`Y!IS , p%VG +.xZ4>g9I[?6S4/;*ގ֨ʍ>IW@dHfR"u 8J @tAV}ujҵ^pkNLi̙wtۿ4/ۧu t|&Rb@m7눎ҩ75-__ZNQ'y&f=B+_}Iu-tv|~.V0UB^eh[1.GuGL_dEƫO>iJs%lg;Rf<zTuK2WOA@4*'WCAw>o{`JSRqq9DLUj98}blSP zgHq{86ǵN7=!g;?vBlߢ]%=^hUu5NM "W(?Obki [\hOкњ4:RQnOj^٘ ?_dllXI d 3nf7a14d/UuW[U*vެ@Ϫl2z ښk7Jolw|U6n:;JUo9ȑ!Қғ1bd4Ç?!BT?]/7 ~o}ݎN]Δ sik2 @P-ʹ߅ y,"ȫ APcx`-PkfaSVљFwj&FkRK{0;H1@^ay?] f ̎0Uu(} 4PS7;{>YtQAy_(՟E-}V7WNlS@d*ӸsZV)ar=M f;Hd-~`?l,l pP?/ß n:a>47:c _PKr䃼`l %M@y,׫o}4ț^d uA*x[.`G9 .sA`Ʉ[R6iٽj^fAmD?d#\~`Kj˜*cRm/{V; Pyga`\UcGH~d?T}7[Y b-@g* ֳ2 sL̖!O [2r-(&mX^Rh;#,CYh/cA# ;B@+{9W|EpbJZ 4&$ vwv35ўe666I*UG0IH9,cZV')\JD]FD8Ӝ_N<:~E N]+J,?w3e*^-{K/!*bd d_ffw3tj@o\67zLltѥFjt93+:rtPuG\?ϴ DLccL*qe4f &?L|*-Wz;y˛Zl%vdpphPFUu})pPqY+/ 4"㨌[b6cx'mL (8,'J. F1ًl ^K$u#mZP@V:B:C@R%D /e"OEX,1`XiezGE@Z7BA5Ndo ^)B/V΀ь (-(,(}%<\Bp{;؏EF}TX] JJ GRw'%AFYh_vnl;qax@@y*6śR(Rfr8`d}dr/dK<,Mnh͆2;ZɧZ@_2FCȫPxyh ?.?B^IJH*Zkw9 IpAmTϰ4ΧJVjpJ"( o4Ht[btI(Qf5K-"e˾rO)Du~W_hf(093ڦHٴ;IsoͳZv/k6:Owg )(:ĸ<+yܤwPö  _s:@󑊂en+W|b|;֍v 7%ٷ-L.ܫ۸sz挫vܧ&9e*d::By'3ʏt{ј8f4'PWňadص"g6oK- @6lPJ{*K\:Q :̴3y r̆pR_19r;lp kUg?L@s:P_Yj Xٜ|,j$ ܃Hw:?y[`;'!'<3}zobW2@Col m.6৽c} @@>Дr2@kN V;^,Py낟xSƅ2h51Xlhme/FC?A2f(,td@Jv,@~E_;A>.Dݮ 0 d?/QkUb$NٍKI6瑆O{ U ! JR cn3~V=YPǫ#b.P5vtάNW+FFW]_|Pѝ;'W訅˭Y7rFUMmmrӵW&mS3%i)2nZ)]`L6coj5q7KN5ϡY&-ԳnR͊9zffk6of 1.{j6:c@=_}kUY}}TٺVdiav_>b>uߴIi(MZCQ{]P|dɃ<88>79zH xTzI<{7,>I|Vj`#H2 ! ֹ2(Yk/ }{׊ZΪݾUn=Ǚ`_`)M`Lȴ})PtbYfN 3| N|pR}ց*SwR`,_R lfolrlJ28ˀݓ@Ngcӏ~OqC¡#`zr, mi /2N`'t{G]fM$gZ@'=*~AAY۬Ӭh=4ChsUη(hzuv4:Dy% kA2^}(u2EͨS}e}}ne&OtMnbo.?R)Jgc2jPz3缠f]X5Pgj63Ӻ?Rv/SQO9zl@z]ϛhL!3M̊NMbCOUsf8EfOx&:~<9Uٮj[AT+u"|X tױ:pߔ쭭k8|Y?]1f u5voyjF-142:J* W5ȭ/z}#3 fYoJ>d3* ΀$M.xg]`-f32XGB32fBȽ-p%Rc}{HXWc`(-Hp)ϱ$IpZPKT1Iv b68<4I_yH9 ASB PqjtJ^n`'YW2<Ѣ|dx=«o,S/z(_yqQiq}rЄ)e&?eL&j+Ju5Lo=ޔWf!=1ntiot(40v]S0n&b.=C:3g{XGv 1&{팋z{Pl< k_ת̚#Oo}#&Cs BgӭcG sp//9Cv' _1шF645m@rj,ͺ~k^ ~kMjT~JA d0C|@{AQ.ka9[UM (\./C11;cynw8.Z.hܽ* ,]nVn{p{9ͫ%u75ڍh@y**Bv:槽R62``λo=O*mi߆T懚L9#^}\dj3?S;A.sُߒz/[7Cr.ĂwmPx}ue(h:X`l˂r ^i$F9.C2;"]I!kJ0 ~;p@%w_}@},Zd7I^Q!s;&8's H-PO.Q38#]bS`5H=h}oIi37Jgy"!S1rhBK d89 kl([NDOJG(<2tMgmg Cɩ/Y@'Z.4i9&@}5ՐU_!c!t};}9'HG e0І5=XB9p1qDYN X׽fDZ{%4M9EB,`ίVi퇄 h:/KnL]i&`<La)9Jh7z\wltaAĈSqm(:h^Ԇs:z ڲiֲ<|ģ֬\S_=j|jW֜|6ԥ̱sB퇭gv림*iY`ٞ\C#z2 p*0 btƏҗjzR92>}Gw FrZY!i]C竏fT|*dO5 8]$H.H,v>nPyScYn:-vfր{rP0V;+zĴ# H]EAC9!k0ҁcڋkP^LҐ Y-I6rOm׉(e,M:%`-F~ Xm,W r ,yl%f7 apQY _FDžf h#sUgg M_|Z MVdtf̶ Y9AmaX\2TRٛ p`I%Au%)!}ݤkuO,]=x/L 苔0ғELQ\5Oj!P+#9 U{>]E/WŲ6sjީffUY0n }&0wUMcZђ{)c;;G<3zt04ͽ5ҏ~m6֝Fn\Yřv}f7Ctd&&PT:#@L]=o7 `ЙMu;um*2cxjvKJu)(mt\㗪_}[[ed֞+}|-Upo^*^H,.Vצ!J5DH%$@?,tfCڃ'0r(.JrS&y2TIGv~" ?!A4,|S ]"9SšR-b926q߂셁e?<]Cmdi/S[~mLAx\r"u D/N rP!cst!Y>nĽ )+!_;uwЩu&A3YAs']:Ns }mɿfiXBgq Ð@w71lXصwgIIؤh^%1+סr}U-Տ5b;5oNش+)[u>/rP,wqXs &ֱ7rN\ sLvs|M}'$!W` ܶ> vFwNc(.ĺ Gޕ`K`FY}!s4kA%ɝj')l P؏gWԟ^ʣ+3<\v{!n=󊭯ꩦآVU-[)Qrgq3AR^3ԥ1UXU]²7WTRN;{ˇXsD3ێ2a7UvMٔeMFy#ͺ˛сh^ǔq/i6:/W tJCقI;*MIMzl<^{_mcd)^Ufe{ޫZ8=8)qO(uNKV#m}{L.̥Y+ݳkFZQ :AuTe!rMOFr\!2R7 $URuW /YaRܛZgDmVi'9bRjx9.NSAgj.[XW˗[KMLPs߇r?MRwCb[ ~ >KPuDlz *nPoBCܯ5jT~MU|?|[5S^kK*w|JPϹm;Z/N0uhVWzNlVM?ٮpW19t3M Ԑ'K ^O50\sJzNjeCX;Edu@0aW!sdAΡdV,x]T*Koȿ?xNBz򲂷HWz@5*}\ !øo[ʵ`njw:P4 j;q & 6U\ZjD< ͟_d2 Il@E,b>K|sꔨU3"ڪQǻ9a5'VfG/ (߯բU;{KU+ڶci&k{B&UgWsI_:h=Kw}^WF7=wnuWM*gRltљFwj^?_6k>ϻ"@C5ۀMjihJya\&^癶FbghzCjZr:yM7>\fd=ڷr)سc#k9*c+36+#ʕ lX7Yp#7 8yבd hA>PO-5@?aՉrIZ(P˵W4;Je0w@X*m&q`]jh"*C#O:'w qeT{4,V 9pk=?_}Y?܏ ʁcmU9dnJ&~ʡnFE Tߺ7 U;AչWu~FQ j WQ J=L nTWTT@ûT:uz*hfPd>  j;K-0ԃvwEEA}vPFXl{u:?<- ۑ &8AVᴗTiǞ@eoK9,[@ !dGDZ|( ʩ䃬e \EcIȋ4ه%$WELN Ёow=!:dB^[LC9 Zn#pEh5 .='á-^zX!mH)X2>as p(4!lه37S\B;H卤2P.0^| %]~$0d MyJ%@ؠe{/r#7$PG}̯u/q>^rir6^?/~OqO-U%[شk~7h]m{۲wL^^?Zu^E ʘ}ٔfW>=>by:i6A@SCFw_5{mMg+E#zޔhs@iWt7= JȈnqdiJ/kԢb%_ݹI*gp@$uY=&/=QM}3ng{H_k(9B-[9ٲA6fkiK{:1t-l?Ujvm<mcWyE=S+r!<Ł5+ul'YOXqĀKݯC:+)/XX K+jdU{Cn]@wŮQ;ڸ_e@-!ցP2]%Q93y mN q\ެ>ZwO+zޅd}L}~a:fW(5 f{yV~ܛթgBPUL% Pw>D=jJz׿ 7& =}Oh t@:I6v5K=ݱnlӲ yT>hKbe'Fǖ?S۾fmuڢmWn^,i! )oORKz%^ljy7i.o)MS53@0|f#3O_5а-I0GqupDjYQw|p"ʎ/vDAUJeu/7o 꺣2:>25[#òJCeD[AOzJu@Lo$uǺDkP- Lh2 %`MT#!Ur v{tu DNT{td<:Zi ]rڃ]&)૱f3R:ojʉj5 z !u,%_h?!B X΁iBnzھ^.wAClB|Erd<Xk%k co: `_̇}dd,e,Ȭ/Ȝ{H>}o˛qP|52m#҃_@6҉d">$J @5X4f6ӿ>xl<+`tB/@k؛%X ~Ous+ 'NW|qNScw jfM?Y{wd@x hiLMyZw+Фj64f6~:C7 X׊0W?_Mm:0D HAz<*&!̘tI>~WseWjB1+v4&Wr=8 Yd yGrER+}! [d$ފ g. ƥ.ϵ*&̕l| (6uNЄX /R L)?=U r uK}{Q '|m{%$wWBVWC8=ؙ~j0DCa'yjvb/%Q6&"HLP!mr Ojr2OV V9u?׹Q "0󶚨< N?O}RmU߁6o}T+x1uۢ-R;7@y2`"u)s9 u /'ϪO\O69^ɳ|FV 8Ύcַ^}e2dPA| A&mY?&} {Y[~&H |H6e-.U[=}d:[p /V_OJ._/k々r:u~A+),rH LQKcb'O M@D1.SEV2-]yÿ ::? (PST~F:n]hgmىsm#S#m^Q}5_]5ҭbEE#ԾT[S{Ys_>td:M 2~O5%ubZ&Oi6ƌд7:/WpW ˣ1_0Ɍu xfcaV)zDzLWzL{Ś4A|+|"hlihOT\Xz_/d7Z% oFHˍ b{n=k (YKzEUgCUbNUCPgo7Htg0ݳlpV8Ur\V:B}vPiW$g%{H쳥w>*'>r}R 122ǘ mѐxW6CX( ,AY]:@v

go,ek?VkYǧ`U3:Akќ G҉_82iGE|:rPi#~ __ aP"u3۰)xÿ\mD$TRX!eo5mlgV-9ҒH"HY;;nr}yqlIt][.*]솒oKFU(={~:9W^jj6)tg3怺 Hc4ux*F7Vrn_eO6`Sav&k)Ƀdׁ!1n?c(29B?~ʝ辮TΨ|wv2vv}m\TmydXn ʚ h|ҷ׬%wURwUo5?빈3KNΡ"ZciKG")YIā Kjx< F&%Qid! GHg|q#2d\/na( DM.S):e1%Z2vR`H^TC9g %UAƋT6d~VdVlj 7q K!t>^` |FY%`?h]pT |W[8[ /O. tQ}e2$-9-EַDC)dyMYYOsddeb<| ;|kd޲Gq; k6Ҏfp+1j35;ǙN{iJP3DkA@mPU* D"/}uzyxC*U݉u$g'D4yhO.YUKv,ɒ*.=ڢE휹`~jzE5M)Ror/3z%>j7+ CzS8N \)4T:61hP(~ֹa*O >{iAxyG%ds rAЗTB tyBns@ 5Cr-*!F@0>9bT;YU &/j?s>'=bHf$zAC[^!vOnR}ɥ^6"BU=L=WxT VK@5U k9/@=:Xͦ Xæ<fО7r {3 `H,<,j#f}\`͐# w%yӚmmm3|}t#ϱڳ[t:ηi+*!ԾOޅw#xBW f1ڳx|_Zd(3BF.<˰@Xz%Ā:65r90ID k("̧DʙNHMSc>=x? "laS ,e1գDnpAj_%fW˜ʂdž=TקG"-wU_[?-ZmEj=Ky])=6J{T[43u77u?_MFzl/k_h؏BZi~&EߩM /D9v=o+g/жg2dNv+o{}?\GJr/ər) ;Xzyw}YV˥3X󭯭iNd+,3Gήc.ʂrD!v"x<?ؕ \I)DZK d/V@J5 2A=FQr_'@n 6&O-&dQPN):ڒe֕ *U \{ ǁs{L)ւ3˽['tp۪m<te1ԁl'+YnSܛ)۹ݴ)c[u!dS|@@H@[WޠW퟼@B RO䃼 7$\9U&$.g)`# ,GvP R`eH={$G$`wԁt}r*uxdiq`7U8X˫`a]ɉ@o&ly5DŽ@Zv{-!ΠZ'f 1T>N&*ʈWRǝ^~vzw6;$*k{:ڷ⡚so-6ll^}G68o*Ƣb/ݳ]TH(<6Y .&]NgSt*{J_f&00@n~;GIC1Ԧlit&w :ש&uĘM(0+JpN:@nEsf]b"ODFS;voeSUx]e=}T'n#jO{ ^n[Bm*x%cnD{ovI_Hi[>#Z~>Wʛr/ƩRU{ ,9?>/s`vUz~ްM`_g\gD%p庿zW>|e' 0IVo:/f(zTN+ X':ԂAZJ`I@WyXP7uM)VwzP^%r G氓nҝ8$& tS8smt#|*Y@OΠ;>l :y$6 ep\G1332`+9xC")X)8d;YfR 71HcHIx:_m5p-@c|X@ Mp3P +VmxP: I᧐|k||&Q7pۦvy)*ycbeҳ+b_?|cҊ+_8||ǫ oyB_cWWTNƖGץto~{jhh.Ƅyٴ3o&|svxokn+^t:hٴg3q 6>cqP? *7o1x {y+ d Lf:SMb8G'w.LJ,߹}tXN쓭{ qQ%o[iy?߼dش?%.s;Ki>ŖΨS˯'X sW횃uʿ)V5밭:\?~lLҬ][zl<⌾3 xw00sݵ>6qM OYR/eBbf 0PzCXݶ2AtB;Js@38B~`_@>YX@KhBI}>D_Z j_3!n @ IKJUvh_v8)qJ3S{O=1P%յԼ|C6~"nXmT?RrΔȏYz}(Dw(%$&LJ_Ft"d t#{ӏA6~f {uV[շjnBrp渊_1omS]5xgJogG.Q\Y5J/OcKMe2olj_/<ŭ7&[z|ۥ@00oO k06)&e%J?3KiSaJtH́z?Zso:P $PZ8:`mMi|EUD>ƹATjknwͮlx5XSGƾ/-Ngk($N0% |#9A8(ex .ZրRHSIsjjEY|*Kk5>@6x(6D.H5"}뱀fdbkĂp\͙:!voiW; LHeܮ:`;" 8Xg4WJb$ *T!IǒI$9(8p+H?QLt*UWK* }j=x7K&B԰Z#&s֫ ܑO&{%LU]pwW.Ew=mUrmSbNem«aTͺ2B^XUF ^9@kLu vSp4L\R٘nӬ3O)JgJS/R+9mq=ցay$m=&RͣX#ݶMXgŻ w1}3CM/?hWu=Ai6Xv#:݂ٛAtLrtB1Du@.URG@HH35 ~PG׬H:UŴsɯݣ"=kۺoļj>>?#v:-0(wm襊sro{;;⮷oQGcO9/8LȞ'Wx$q1'Ӊj,iIkPQD2ttM5H' >|; γ~e̿</~ W i Jvɠ1 Vs~I^c"&ƏqǪuǻ[+tM|xXظv|󖪪ի_VX;n݂7R1)Qg/ENV[x˴WOkct'j+ʘk2_'mg2KmoFkt&sLꆩ0;HXjb"Ob< rIO^7\ZozEIe1m/t>~p<[%+U<]=樚՟W ;W5fS}ڭغSeDG5..!c{ƛOG2iG__5kcweN>O|YyJZXЅiE1ŠH@\UtՊ+CWgTnᖫڎ@wrxrKruމK=bϚkjڶ7X\3"ɶ'āJL(^JgN}e}WƬq~HOӬWM7%` ec=`VStt*7%Uz38AϛFZy@=zl<̊9L NIzXs38'<^NR&$%Kz֞n'Dd. Npp\Yz^kN, ȗ۪7njT~vi]-ݏ@Kq:Z+-oԬacfLԗy?JsOu 6 F`_/ #]MIC@}cz#W2U5v4,͊LlLVe˜'ǧ6Ň-prt #sG#VG{9-,lgh?n]P"dlxԺZU)r\(FCWzJq@z@T6 =qfW*uCh)"sſ+>;yA۾-WrΫwSp[h_>ywď7SWfjMinh֙S m2u\yܴ 4.2c]ʝ^x5OɪG& `45L}bMʿxcHi;Qf%Y0rR\ %߱Yϻ7s{[';tɯ=ۺoq7d&Ĕ^ɀ hѡASyp#Bs2NXP>ў{/7#|;sd/)elMyL*D2 ɁHR=|XK{(=<@%jVBuf'*;˜g%&'^HyJ:6?zYqGkW*Sc_V߹s>099FF.~ı޷n2+_ZY'uq7%Ѧ:m7F^(MltmFw jRdX1.:%W|L?SM+t[AQM̹zWTu1v[P/G-~~KC(8dSnZ;U~D('ヌs15QNdN`zU2du/}/s)@"y:.m>bNR'=xwr9=]_&N䎢ŪݶfGout˵_Ԍqx床7߿.[׿/-!WuWN9Ֆũfƥ?]I鵚M@{3.l&k5ڲ׹:nhrNQE *PPP0bBE sl:\9{޻zw޼73未®{{/!0Jk&8N! *f+½{$26/ Zb)$RHy< Ke: Y2_O7%M T䮢[ۺڪB6scf%O) '-qVڵZJˎ['j]ڑu| o( d dPzhD5` o!Rmj((((((((((*LHhHD2"D:4{Q\T~k5t"TWR=ݜX5+ז(J,鸼|{eœ~`Mɹמi])~(%nDÒ|z( Zs?X#qiqALRI=%S?Y<r*Kee>}̗7!G܅ڍq/nZFS$2F@HF,FJ `}fj*(((((((((Р +,)K֠2_[MtFX6^.̖?-_o[ִ .(m]ߤ⃲K+QڊqJsv{+9XMy1[q܋PgWE")訅SR]&&OCcA$HcRTst6 vw eL&b^,d~!Z?O돣^Rr+lRu=#歘_XZVo)E/BgDJ(:fq/&Az! p_#bQ ,+((((((((((HH~A%1(or-s0~FQ_fB|ٕf$UW{ꢓ'tᔃG =rJ עie><|wH ys/BeCRT31'-Q*'E$GE:HqiJ`s YZz)?+L#rxt]ޙHqOgBd^U*wk.||~۽ڨ)guvK%61qq_uZFYLN.>ݬ7Zgjݵ~-ibXMT)1苁@wx= 0aN P>3R l C4Fk@t8@< oDS;@#ϙ%)[v~18dB"0t}Iz'ZٽY{_)2Qq|:ÞֽUK?*Iӌ_> reᇟ$ڒ{S3)> [ɽ_>CkSHq^'n8&<TD2KQ[Ҙ?1̟<3~0`^[)y@,?6 IL H4gwB;́,g&2Zl~'KKhM؂,l6HAL7AAkh;z\qRĊ)Z5XWqA.cHn3{Rh5{qG3f)ov7=aPC3ۛmo[Ze&ډ>_0 c0Z[ Z΁hb:ґ.20 e!:((((((((((`%#&L55x  s|d^& N1pq3+ïD wg9Ngsvڻk KK**8ԚK3dg[Ϡ?w<>ʴdl!CҍTi2G~I&(%(e91ޒH K,]B)+ i#&$HOSpeV (?pϽA}Έ؋HO Kgh|\z]8'x%ӌ(8V׹ц-!F̰Y^xt<^8pEY^(nI'Gp,>;>1 1YɋlSAۮ_----R",bjeڢmb,& ^Ɯ ah/:,&dHA)zY'44(_P &pk4,䍕*R&h,4@a|0"ȱ%qyh)ϓm1FêU y+lwUz]/8^Z^R2|oY󪒮E _V(plX亷[4^ODJhX|qzG,;O?'%")3^(8rsJP  eߓϽ)) "@!M6#$l֤P4^]kVOzӈ-uO/<bܩX|(0*F$O2~nԄ51c>Ioyr5;yi!OZO,ZF@mEh܈[ `d!DS_LF<T௠gEVDzS: Z,BYLwT97֌1N1UVo 1TūJosUzjGwؑPӬqKz^PZ*8k Ȯ.osaNlRH72 G\0qQ]*RB%5p n 6?L2Ke(i],IJSLDZ>}#;L+_[rخkxAYfEct߹4Ъ,xG̳}՗$FSG"ǐ}Ew'fO.tḉ888H &™2q!s*zjzKO/%e"R(_VI91Tnq1?Wh/-TVt~lź 6ѦK=S$W',OXXfc#}bH>K,_E'0gb&1U>f+GoG\ C *Q#*D~|8ċDLN((((((((((A4T54>OX GFPbUn6?e3i }b3F^^,M#_6/8s9(<2Z#qGT?Jk@3c9?`KK<7`qNO<JNTs/ A83IR،lCQ*_7@f;uڞN]3SHֵ7i$ۃx"\ŵb^jwGchi #.Ys`VqN3RJt@gM`U,M~/N>t&TR $$HBRpZ^,K`Ew ya6x k8^$Wul5f/ /W5u!ׯ|uogr̉-JGy]Y> hn\V؎΀x .R'~u,¢L&nL?[brw!Ds`%1 .b8ΊV$(?B%5x b<"H Ch6ڧ}!^qkmVfͲ,k3RmSNHH?~Ѻ{]YLb0Z #;JE@STz*i3ϥ4hd@d ~\ ؀X#;ʇ=Ujkc:]ƭh#nexl8O;[UUb}[T?X׻dEu{V9K^-n >n1fhS?҂JL..f&2,&fO48q1]j*!:G n6b E%EeZs/ 74# pcT}G9O\tl}*v*!(rqغݺj[kf sO-zvmMw ӱTi3؃E4,%vk"0bD4\@-̨_AAAAAAAAA?>ߘ5Sέ|ÆpO)95Rz.m8l;QzH_#mg}מK=KVʊv6(jWސ{֎7a 'G>HZ%4%KStb$ؾG#8<mG=+U?so>?Tp]Yұ$W5| x^RyNTF>D{O `i ] _}\]wࠢF?W^l4:(pbEb0C MuZ'Z?H#^>2b﷾0Pq?J,H j-2EnlI,ȁCzKp lC3q5e¿ ΣߘZv^։T,y"!#l)p̩IDAT޸Co5fowcqٳm6ѵp啛Oxő\wnr` }wmyVU tP?޼5ޑVbP1a9ʜ'VqD )O=8G{p\e+?BQJ{+bOLFZOC%$ 9qx(&% eH%& F'1S 7$|ؕ MiPGۇZzK=ڶ6o[Ͳ5e2],,ra]NL#jDXVfL/2&U8!.2DFUA@Ap (¿A,bĊXġ0e~A *P.'.ӥ]:f`،z>|c |o5W?G^|DA޳eY__⒞.лVbHNRz*A̕~(Kb2cwK_x)fsg>֜y8R{wGIW ,gg=~K>M'i_0s >wF2g'I fOOZo>_?yJm.VY%M<7=B[$,Jp8?a+ qq.kS0 X&Oėb)r1aEGGtFOQT! *]"uI%#?Y3'BTd!< @zW4yQ^ɷ3v}f#󀱹Y. ,[q-tbSU=*VR>OsE$2Է'I"b*E My@Lr8=NJ)^qC`-1W 9n8J*K's֐ۿM,y5yD~Niq陯i]8mYV,EP} 5 zG~|Μ Wawot9͖e5DwRVsj˵WVb{r-Uk1 ~#Ř0 h S"^r4.ϪVXX4F E܄O ]9N^EVȣgfG3y(50^n,R]׻v}u˪ b*ڔ_i՞o{!Ov9cީ!.>mAωso5y͢ߓ~@b@q ,^CH_y҄pkB+ G~GM!ĺү/}KB:t]Sm]K͇b8)Bk%; 'Vh*ÏBI;$SzQkNPhQ~= 1O`?'z+`~ޣ 1e^@` H5mZ@Tlm&%2lVr4M!m⤨a8n RD.#^/4X``@@.CPn&,ҹҀ tLX\K^Ujyl+8Zx}pPu@kθo(`S{UAks{eS*9@ijdq}~PNk6)1EWxp99sK0K/%w+Ƀ$yE R21%JR߂s-d!i>/IigXj=6iFt[mxzA HK z pjqy|bvqYDlv(,3>1Om+/_^IkPxY׺XN|i]Vhl?C@" S+ ldhHHHi\]?DC,By Q*p;p/53ʵFi3ll3v8C=BW6-L 8/?V[V3J?*xSO}tX< ??H蹒qUJEMw'1ug.2[11+9ΉV$+ %x-1Ɉc5(K~b9O=N!Mj}rΜ[O7ڋlmOB Cjtw~iW [k\|'6jbcaSMA!VxO, :mFȂD+k&Lc~B;8#@a8X:,Ƌx|JvQ;9tȻN,cAЩR73I˹߱>S;zT*|vVyj} o:eU} #t@.EMdbHiw̦J"z')9qq %."* 6bͥZ#I_4Ac#}{p>MF<x| {ǙX!m*=yEfhy>vzZV})`sи<8-[Z7eiݗ6I7qV8Цjʮa1ccn}xP,uCcY%+-w"Fm1 9ݖ0aHHC[j PPPPPPPP{CP? ΍ 2:Q#e%>O7Na9^N9Kry1Zn#~SUx"p̿4y㸣{wT]nۓNu>܉޳J-,x.kuvq[w6Mo ,ԯ B6HFFdGKy)x_ǟX/> Gdqx:~Z#3psNa->,/ dxFzY2܋3њya&,cBx EJ4|OhPβ cXMʯ+̕'y"\9׸%O$H8g맶g'o7#kdu|dy3|Zv(Y%-ZӸC1J{IC,lb BD x AhtiJt7h PPPPPPPPPkRKӹvl6rPj>X_;`yf=34Z }J_\qC`]poVS׾UcV?^\eǗ^k閼;:kO8w >{;0ocýsL =!ve 9Aׅ-eI,p^x`L?8_=+da5]ٗ6Ң>'aVMI8-7r\`|sQLnȵg+XSD=hݵk DHVfhƖx'D $U3RG@3<If?7< ;ߞ|%L$LtDFHF?|N>+K]3όFfhQk ek7y.YJWYu+r'~|Wv`fMQ"MS0w`=D}RFг'W+)ؽ=D K{SO?XFqIٸQl+IG8ӷG>L9ȉ) D'ͽ=cL|vH$1W70}]1i˯/Pbo&(_S2xo_n9Eh'I؈wp||&{_B̊ŬK?G&ޒ<"q4\q >!EP ?6Jbq wx솸6j1ZSQD?E>EBcSK swߐ޳<֡'l=3&ʖ-,,ciOZO@k=OJGlUp1z[[˰ [IG7Y-+QH.&Ä& P*N„ ^: BDU؎؊M(/zg ;& %p#2ү. \|ku*-tjů~_8Z_~܇NꍕcLiLxC"G,y-5|%$b AIe?bVOkL?h_$NxH/l*q%GpܢP&f# $5 s_PoGtr  FIbN $I )#1c!Z95%$=Q꯫kws߭[0b?;(f}\ɘ{b_Ojd=aMKG{Xk,-2Z@KH\D((byL?<1v-hK8tB!vt8=U”388oɟ  VĊXؑ t|2!׼ fȑ Lx ,3Ls\dܥ[uGpF謐(}g/+?Y۫ϞB-ߟ]u=v[ܚ_Uw|^> fisN7n16.yYo8;\J Kn.c|-)s't}`Ny9OYZi_ч`nN[|\݋ u<ƯĤ'Vqr)#R#3"9+8ฅ?Th@1KylI"9 A$%bsH+yng<66YQϣAOXlE|'Ya43Uה#&o+05{kv^Z?~jTc^ :,ߜw}̠،C0X/hOY15bLF-QTdh# 0+AnPPPPPPPPPCM*VXa`G bP1F~8P% >2}O}ˌ$ڼpyxDx@w5c|zg< ;-ʶV+7[wT|-_HE|~l˞T {=M[stDߜ*\ȣ}ǒ9#@܅G d =\XBԛgmlvV`Q2b@x\'&qɁzW?Εb8F6hm@GtEO2HdcIGOX0kPPPPPPPPP?*0Njt@!.tԣVVJ ~XZWb >ODyyqGoR>$Dث+怟<$܂|>1߬ԥp1l ~ۣxgs|pIΔ cS~(|Np=>|pGO _R{\/i|EQI|6\9V^^ZTkx{³7[/Adz1<hЄ+8h B|̗u`֘阉GqoxY^+/%[IgkJghZqdm}ߖwԽ[߽(X;9;K-8[Q(ܺy;s+?YW`"6_.fxG1/ &DɜZEq*1sZw%"WӚ W,x=p%)C s`ac%@1{PH*5iMJvo>]"?eŝO=Bz@`i_rw:JQBTF;Wz]V{WF3%@OjiZ m3,uV˘;bǦc[KMVK-iod;"G۩LxHJ*g(;9Ɣ~_3jzG7,;q=5ysڟ|42ֲ5{]ڏM*ę_x $UZԚ z/[5iOpNи\bH,Rw&?)Ti܃JHBGL$d=G8]_`ޡ}2|AOъ~?QLL[{F_p0W=RnjmO1V?8)1r%x{.[|/vrleuj%p| [nZlg񜘧D$#UFe8+z-RT@$ ( JZ'VӁ3T aE8d  HD <NPbAXiO!b\dܧw7fUjjXtsO`LQ/[T{]V.yuDŽGs9PXQUׯqoOw̬`?W͒kh?@Sh֓u \/!8?)T6|܃C?so[~Ϟ2r陯'^[؜6UN7̹歁U[SS|AZimM v7s} ]>ݍ^k ϚݙQ機G< e*sDD3o=Wn׾Q,|̾J,^/ZF![Zq90! $?lwy )Ma1"^@""#s1+ ~0.vdc|D7ljm֘;>U7 -::8n\zk˚TZa/Z{QR_zpz'yGɭ/hf_/J]hW:gw}KV?$W=\=Zpp?JOӚql΅xBO kk\i bԈnIfڧyx)=o&=o<[h3IωpLO '+ aɞAK0%τ8si&]}]n\riZsv E. wk}ఎSϺs4yu K,-,g?bklbmԆ'8cVqC̋S.Y]q+ J""HZG!PPPPPPPPh5AepzLB́OBpJ~/1{(9&^X.暝J)=.uroHpV0owSrIm+>SnsO>1HN쎒K(ZwMޜsޮF3FOec#cњZe%+XKͣ)`yjH>wC|??Fi1i@d/g#@%`>6 d ~h&xAr ӚXi '*O҅m. ]~&_3t J{6{lUK[[VuҘctԧɯ[6CI9R7[eŸ_c*llhjZc=rvv}j<hQr4xYTHp:m"V- mD3,Nj8$HAX h dCs o4#啲oh\&_{ZwC7zSGB/*^4ʧx{3uu/[}5J:M'_OAt';S`QP!Mц}K-Dk2>mZ:b8AšpK+R,?i`VpQMϣ|% Di[lP :uxLy,yʌztA9d$Msj]^h0>HL2N;ɬ\w ia}ܘi~g>NL_۝|bī6ǯ_㮲:s)og[`6K{]ĊUbx]tdݑD4Cs q x!76~[NBbLD:2@#$"q0`r *P&ƏXUy1=rw1k36ޡS 7ח>m)(vWߦ^F6jU1G䧞:sE O+ߩ O8>%srXw ,[/}oobZwm}aOC++<:Zf:rV"M.a#JDZ7E> Eߥ-^_&\$fSsuzyHA⑨Fa(:ӦCG*((((((aEXqǟOv~.!!1_܈AF,eB#y|{L15zA#fnxHxu%hIґEg^\(-?]|tˡfzqˊچW8jTQ2٫KVrϕuBX!ebbj+nۜs<sω . /U{T"x^č{.o q3i WQp; zD)1> VPxIԚZS/ Zي)@YM?wo]8.f_0O~#Mn|eʒL}Ubo}Ym)Qۭ֦t=?cxO;9 MdcOe}ںq3XcD\| @je5*aU@y(((((((9h 6a*ґ FFSHDTG! :gFc']eIgYs9H|f+_= ]Q\h+m>缻 OY xܿϫ\~F#;ؖBSŜ 1~<y7#思<*ub2ێxm.Vx71"bV+͠ iEETM:`ٴfsRpƒ3hͭ.JG|ZSfRrlR%S"\?ov=ixO~Mniu:ZתjW}>,xu/sk\,4yOMnM7v{n'G6z<Ԣ"\XQ $qۉJ((((((( ssXtd脎 pΆ%(I7g2[^\o>h^'q/11kǂWZgkيkk>ZТ2ԥ9y<>D(6`7~.+qw8Ԫ= *'О_{[-.?1~,FxSs?p9 SpZR{G.O\ѧրG+@T3s$H{Y9Q ~l?) Sd"x,zkïw0o-+Tp1:hnkjxH~/os_5m/f͚|5ےD'"R" mq' 'sqID1AL]X6?6\}+((((((p9:t耤shp?+\1 焃2Q.IsYe~`>d d<w{v]~jEmlE+w)[Vu^²6?[XV{g6nPq~+wG<<=¯E1TsB'q7zW\MxC~GnP ~ `FEϧ &BQ}8il!@XP&U@GtFW;p@#C'xI-~ݟ7\7m9O-\vi|0p`Ls{^۾bv6X{2zubj65KeZ?4G^jNlZr)ܢ}׊#fhe=+0[AD8Qziw#""q% D`v9FuҁWP,)(Gy ~Z|mfI!KQ*XZhj\l$aãgT<X?w/RRwW}̜OO~Q~]c>wTjU1L)dV={-,ӬVb<9xȋd28}]S9xkqOX4 K΢5#?3>>oL|%1Y1x3PErފ%Jo 1T<2i1) ؝T|Gә&&b51%ן{4\  %(!Հ -:{}?3@B͐;\z5vf_7xk?,VKmi֖K))a5" E&sQIbmE@#\9 J@HH1` !7Jeݢh[a+eZh6h @kHȽX$_;p94%+4 tf6rM6ui@=K_S9cPlz_.^w žAE_غuksWVz䵢'bB$g~VJ:EI9s~cFQTb嫤sr$K|}6VIR)(P #+AdԋghI?<^ F昖=sƒn7J_t=qg H6Jpcz!ײQVNh~E-vJr,>" %L1\Z|e|(αp7Oh2IXgyFfiven7Ѿ:VZUb3~'ܰѿDShn%ԘA,$ 1T@ l-^5R)dUA,5wk oU +Jx.vʇK~Qpg]SN\uoL)@̞aDf~q}lǽϽ$(,gkg?zd-i\6([,$?)\Q%_Ÿ*הi_[wơ/ ,8Φ}8EZxl>'Hzʼn1Bo1G r_@̽PlbĊ}*Uל~Ozk=Qߜhtcw{6F7gf]l4)EJ{{~0f2mhq+ P9Qb9lh[\ <4G&@>xqzl Ip!*WPPPPPP"s8} ӹ)^(F) ߒoM^2{!ص¨1ׄ;=[wC3e:+n_n]qEec\un' k.D;Wcsc"K|vBs!Әk?ؾ>\Т)TRQϊ?!&%l$g/N \@-EQL)T@-܍Φ{,1|G*_5`i=ΠI%oz?aagB|ad%CH@+tCE5n{?mri_);ܖ%=h9sC={yxdm&5 #t|/j#}]}Ye/~vAiJ֏ep|mIˀ<",| As^;I 8?vHş-z1)i#no9XP+k b*z,?6pK')?h.%P^E|(4-ǫׯ55& ab.*_Bt|I-<$gYI| -ŮF[i+SkcG Z qş]Pړ/)s)}r%KiMOx)$o4=N8׍(|K3XF1'80 >'6(RGLc̱>Vjjb/?Ye>LP 'x萸(i1cqNw'h{G{[&QkwkJlͶ2~k3,/gk#񁵕+d^XPLhBHHh.Y*3V D< ?@ hTAJ@ər<"/1uƹIcCmXpfxvxLuV[~U.lEt^][mͪL*|8wZ!_ogmBows%8pQ=΋?'#,ŽHsJVnJkSbˈY)5O_J(o+,gE@Aɝ5J&Q1(b45VəF%i%Y8`SNp 斁k,Q:AJQ,n=EQKD6:65oTx Wo+I ]brm }pj]f,;RZIw'dž+*`F<%(DsŎ,Q/kĮعRq+:Y+[ 0hhPċ<z߄)DAAAAA 3^x%Z><"W،u؈ɨOJns+z~Z_Ik /h͉ 6cI?|.&e>#fʬ\%4/ 8*Nb'cUěh?_8)a!jA(9YKLLSr%qts k[>.Ɨ4iAӲ.Zdhw.s[j}OzeTIͣZqQ{:~0DP4be)x[E_ AY\/h@z dA& 'ȷuQPPPPPCD"4vCR$":588R?370*9\^*鲩4v`[jfifo?Kjz.+_^r::(|vMu~oV\Yּt|I]Nu|~W6?sz|z\bws@O-ΟdV>WSտ'}:J6{yZ5 4;DlQ~2hXEgl-e J16o6/>b07 o6$=&Y/OTU~{xOW򔺵MVSK%F忙ɹxѧM9@U)Ws\xpÇ1b2H;:Z-|)FqS^Cс?;f}tNHɭ?@81gsWB%`q9b1U#1 Δ8p3_[81&D\Ϧ q=V<&vÉڜ-N'#*yւCo\<+P`n?Tb}iK&ݗ ĪĻ?M-=b(úv"VwE/f.ȝryq,&c: vD"@J?L}]7"qjQZ{n˸ɲl)BWUÎd=E?by*jcc7)aNKή[rY|󕒦g=_w^&B=E7\s r>sྟ Rs=i 6Kz^Z Iq .̛i+T T/ f|NVM Vی窒Jļ2?]h$1hMU0Bͭ$/A`6VZӍDp&s"ϭc&\Fxǜ`yr#Ht=:y;{)NmoFmW^iK}Ϳ/k@M웚ؚjߵi~6-fnZ׬ɧig\i~4,s7>7WВਢ&okGW9YArIEly|R_IOKZ v(^HҎE 9U]݌c\= [ޏ== IuI=BOGgi?S-ٕ\{ٟlBMOQԟ\#h\O:JVrk%:"(6eģJAJ@>3K|&)Td:g|B*>Usr>+>}qsiMX8|lrO̽ys 1 N8`qqP# n;q^k2jһgu:sRz M=(5mU2,=[m\.wwʛe[yVZO _͐76arFE]pÁ_op^ҩQw;utj՞m~|ƽ&Ʌ U=ʷOXbOb` X.Iudr(f}b~>'(ynGOM'h<{LL$˿YOPCf Q|A]}z3s/xK8eMpއx?1I@D@)1gn+9!a/'hN}'1rP ﯂lͬjTjhWk%I'a5:]R)ƚ7'm}{s܄8{vF2ܖ_-3,2kٖW-hqZ4Vk5-*VAqp%@1PxuC ޻g@%2jl/7Ya@Ed"h4GD#@6 @V@nFcm >2CKoe~6<`nwg'4cX}^YK@Mw4΃%*6;w]l my_Ҵ9e|X4e9 cO퉻6meLlX߳n2, ;Dz[`-Vkevq܇ų1hX4X i, ;쀰+ 렑?U ht @ 6T#`_0C=PGbĚFg޳iPXU]Brlʃ3F>rq.V߮κ V"ԡ?.ZK9AwZ{|cg\<׬dbBl:V`yLuIy{ЍUz\!{2t|mfS}<<ˇ:W-^|s>ϱD.~˷^{Ш6_d̯[1Y06֌}Tӗa۸QNHrŞ͡y /G$Q@Jb\ggh# #N Mcj]sj俰2S?J(hvC{@ƭ&|fsF B-llIH6c?N8_ͨy+?DwĬ>7MH99Gy󷊘ZAKG'ըF%c8,Y!B ]X3{!wŸ1G @GtFWB2# ?b5>1`C6 G5N1Θm`ll5>3F8F3:P\pMz`9ޓ]7:9?]U;ce|,m}ıpOYvt{NMޣ}s&!E-|NU*gWYb12@uvgE@DEzn>ݠR.4n0AJ+} S1{dѭ`H#8'^;<_yɺo9Nn{k(w>2;?Hj2)ykݔI{/\}C]jʫos_HޞF||ﰲQ%?d'40XF*dzwz#'Փ"<{YfhQE.9 z$КܢӣVs?p";>*( &pznG=72_L `sjMaӚܳOIws @ĕ [ӣ'Ik6y~~W&X@@!`~.(Fdvc&fD~7$L]zl&wʵD9ټ[aԛ}̖Ƌ"=tw02aoc׭/Tj/T:or ~[o2Y6CXֻdo@ppȗM٦*R.<%K/̆s<s?" >R~ zds֙?2V}ķ>NFZ=\ʾF܏(6ON  ŸX"o'<°S8DrڠDCD 7 H;h7NN <aO#PF! ysgf=66|WQ291/ԉіzyq?A\E|exC=دSmkl/ۏdnyȺzOzFkeӴsI)m(~~MIEA\).E NlLC1e * @r@֢|@P٠ rf/f?ߢ_= -8=/F {3,AqBP/2(8)E:2gtiz`1̝.s#s{qhs.7YuMB|cS=vO*[W^|wesWXW}~coenydg 7gEpA lMýyH-'S G@t?>+5YGAS"\3##>W9ϝ J_ ,&f]47uMf8@ q+K\ALn%jҾ5Y.|#d8-Z^4V"܃R\O2*Xi spļ֬ _qiK=&MN)H^I|2q|ƏweLxlw\n[n˶ μgz[|L~f:sКhbRl0e5AH@w HDԢ̆_ ]`KC/2W x>*#1G< ӾVh6ҐLupATuƷXm%ohll=p;jvaHT_nS4\z(ԯfYhW૵^69T7QVw9ҹdosx yoZU]^S!ĤHD Ϧwi swSfĺ:d6Zy8s@sZZ5W>W*ZR?qd'͟Qϙ j_ \Iy5W~!oHP Ѱ"Y`dLze#Nżϭ8! ߐ ϙoAcmؘاcwwqf-IyГRyPN4kRﯺ,6髤Yɝ\7ɸ'ge5IMv_1;sS nM-CK06acg_vG똫bl+:.5Ѿ~ 1*:pe ;Gc7Zj 8=>0_~~atak0$P 'q~쒻NZ7>tB1;d/y@n j>cN5y)~Q8bw<;,?.}[\UzosjTV+?V*oTvޣ+>()xMA!cw4fr7؊𗖜Ej27 }tNTܢȁ3I_*1Z/#6cedҙkO /%b3ROkrgϦH2x\E~bb+.ϴ'VPB%J+|v+뜹ޮG@a?{D3O Ͳ{x|_tBVDyH9ͮ,Qc3@&ߢB|(V 9̾F,v_Ry[zx'%1K9uA~=xt;sH޶mhVgtE3bZnf k _^/ <VơNdrLdp²rM #qTl f<'ߖ81ELq%Fbe;.{]8=h(HA R/1A f l8iāPPPPE֢cK '}pYTMpq|ʑlwXU9]P7x碃IW y*T/7ȯ2/YcHPǪiMnOOٮew?xeKG^O>\%?ػd̖FUj\C~6W9z8h1Ke\k7_K);2B74A5*QIJFVt#6,B'2iͭ|NIknM4晧(ghӚx|K=l'.RFŸ*W]9cbğmSO 912h}ɬOp&{>J?+ J1Ix9[PTc#Η4Ĺ"pC<,>ЁVA,F_ܬ܄z'A#A߫23ꭍ8cQgX6=[7\e4{|_Wmg]6F;G;aWR-[KM,Oj%ZS :WZ-60E(%bvLR18 ]4BD$c|jE/TF%*nE"ؤ鴗W|JQGEt~=6d Q=D&8!>xԠV\~<{pHB`sd;2\v2)0¼lg#leN1;AjɌ5yMcyx}'Jhd躚Vy׸ެ(T{zc ^7muG+M~jHnM;\nOnh1h|9kh~8l|"6?(/6u ל^Qm܊u'ˮ=.q!2JwZNHz)>iii N$uHnK3nF|Qocݗu}}xMu }icVgoN|l>a6֏o6tJ?U * -%P8mW~koL͎ ;*G꾫P7+fu9;:YKhzՖ6+*v>w6 Ӹ!/w*Zs@&q$ 'E@\€gɅYKe-|ΡsOo9jZw!~x-=58sۯQm+4T@n@3Qs=׉='uZS!`#,C8}<(PPPPqZy h ;`KqH@k@$ IRtIHF@:q)Rc<%bZ`6Kr*}]v ,J LWL[`+;>kfy˘gVO5aghOи5~7emOڎk}_tO]ѝr޲5oǣIy[O?9$p߄xEh3 o q;}tϕzv}G*N%19nms$9ğ-TZ+&&1b6?VMaSgrȣ߯=d:yQ9v=qdc1/ p^seB(2>X, d.Z&:]dyy>|W1fZXRP`[nQ>|qQeWI`}%q=NHk *R+U؞/p2 Z9X?x B% -?QΒ:7۽M?g#O"3Q]PxFE7Y,[|> A.N ¨t2H5*@%*T }] Q\ ^ƗWqOfnt"۽@r>tvTٽf/.k.32sIeI6I}I؂|U@͚LUS]~]^{^q ѓjkWڭtUEcjyѦ~J*[DҺE]%W@0'%zfʥ}YNm#CX`XQ(ҜQԏzc(N,߇ OA2@d*kSdbk S}cG$@^/ 1e{gb7d52&#/Lv@OtY AgJ h{:<=-b'+ tp .hvhCpjfjK V?9Ì]VTS%~#s?y.77&< Ux:?ZY5$iqoV[ӝ3j;_4Y›Z\{@޴Gvv']9>GOA0{=[WkRָ{Twky\=ç`+u:UbE vE/$nujڣ3h* JF1! rmTW4&&| >|]/Zy]>KjL"Xآc +RX5uX9zsܨէS33Y?HNt׻⏺;3kmV+CERcRͶK\0qgmR6t{mK6 [[&]>cYکu\dyhSH-O~#~^lODۄ$ooNޥ ]߰>޴#ts]`1XH#|j|S;v-b/if #y;t7)LU'A@!iΣ$, DJ269s|ׁa3^WQ2~"=tcW Pl'+f(&c)i-稗6AP&>?,KD+A1e L<<`*jcz5x8h~ΰ&>zA УS8df3TzmQQ%?>\еڂw|/gܡMZBW.n4!20$pd ;QUe{}eݪWN̉(&$4]-RԚ𱘅/ip^Ujz\M ۓqVYu-uZD9U_:(Y$G@ uFu-pY] |{׵ٳE<5*Pʒ<A.7FJVl&@ӳxL?侄W9g+=&3SGgbOEtctKNt<]~M^gn;սv {S^̚'wʓmڔ^h#*^uDWx |Vqs_Nl[qZJCj=}Cb{dKb,?/cR5Gd/c2ac¶38JX*H~v sP^;?^NU``₌LvNIDATÇǿ|QQ%8mnX2 /`:^$e=_d枑Jd\7USć/ED :-b;t:3@DSK<؎Nn>: =/Ya:. U-V-uejRcܚ=s {lj򜲜E ?FQA`l  6.+na7.\f _gno/x*NN.pT5՚5SݮnɝrƩ 5: g_ ܆@il*, k @a+&ն΢\5F5A @Rוhԕ ?Ç=X__:~ 6lB@D*E 耦h2na!PJ{zwpwӃu{>~ɽ½4y{R_Wz{Mt3mP{ssKdF)ukwvɖdgW/,?4uUuOkLxh!5֢j*woYJlr_?(_gP6}p_̜3/Ɨ|<.jfޫ٧(`3OkjkKiA 8 p,\I(x 'd2|Cγ]>>|A~1rꬒW5l+("@^@T~!}0Bѡg)_T-)wJJ XI^;q_[ϗ@A z$((~ԩ7\;iy[ V~UQzx'?hF'7Ϋ!Fk );⢧ V_Э˖~#ru+B*ԭ$0?XlT6-,PRz b_=Z8Ǻ{YgZO[Xёi^T/ڣ F[kPj""X*TůLoCÇ~ўc$QA$t5"y~C @QVĄ)B!`f}휤|=;{;ݝrgskCDgjU,'g.\^"BIz{Żw$U윸4b@㵏U]oMD/ I^8&5vYK^z$mWQqYj㶎ؒNᓵS^j_580>|cI vAyiIhf>gyz9)ko.rv!<:ʘ<ꏑ1 dckǀE 9a%",]gv5k}>|+~PSec{AyuZ6R8Mm}?\tYJ?|KƏuEwHQd\RX{Bs!@FdFDI[D܌^ {!Ȣc+b558J-}pd?t5էd*gm|[isJySKs7{54wBޖ)fd| Zvt^xھ{ mzf+(,+EٵF~̹7ؾBovpmj.ѵ.Dl;H`W]UM#ZG!򐧚?U jPhfm%jPr!u]__E|ԕ9H4 42 $L"ɨ@9c 6a]Xe:X% ˰XX 3G^#9Mz"y{{t|O]sߏ^\p:T?\g=sNfLв5ӏ({2yqeKXXES5WO(;l[>8y㒵̩`mV._ց[7eJR7I^ἕX_յ.uXa|ء};Xqj+tN8'|#sXfiU_BtDtև"㘃Y嵯0 L,s7-Zqx04'#5L4 = ~Hqa2 7缂_BQ,}&Vc>?I>|y`;>Gz ^=RzG]&e,2pŪe,z /|j x3[̨=3E_ AQH2(d xXjE{%mv텒hg{A=rϽEҹ{❚,lעy)EÊf7/霗4s9 '''U:(bxP#{^ Zt=4=Ǘ#ZWoy`#uzJM 3p!η@ 0{/T}PG'tQ7C@QPH:# ggf<[>3"+8W78>|uK A~׭!0jsD[͒8P2 kBLguj}^q@.=LeC_ '`>">YyKWO] b[>sNqy!kM̌L7e_O^jgĞ}(:MUUVn+æO*:q_TߔϻkC_~LέxQE3B26jZ{g_jL"E뇵^M>k s{Ic)9{yj22*JYȶ#s)%ܞd C?e >|3|KV5ţI͛B(#vVHE c 0 kY],?W8a,~LBJ2ˉ=d& Z2bPu.8kR;^R||L˵CH`7sv4l/)\|awrwmŬpp2|xД; L7'sF^iߙ;>к~#wUmY]UWo:ɺ*ʻmE>yC!7zjțAֻs10;.]C0@'tCLb ؄@TbF5qʫ+=u8㯃: U'F(T P (.b E9h&h ؊-ʱjL'b`Eߐv{q$tp tKzWڝ;m>\սӝNwb=;&{3=>蜒[Mf<;/{e̊SwN6JL=zlm^^#*T^S1-{>eûw[}iV^XyAoK-s3]<[ɘ-X&㮟`^7RKsc,oOTO~{>Խ=6lv'n𳽞$؝ƼVDa%_IJ!3,؎?Eǟ?ǟ:[GZCm}nK}a_{QG;ASe 0"!@>'Gd;qٍ}Nt!@q &[rL P8Plw{~t =l ]6eUh2:/sJ&į*گuتG?)`#DU99D> WD<y!rWNqԜ=}nԼ᪂!_Bɢ5`yq$=xVpJXhR|@`vhkߟ]h\sZ[[P\:mTe*PmjEc db^(HW&YZ[?Ç*v}J dwM-H`Ƕ{ܾFGP lgAx3~c6?ғD\)D/ԟ$\=Ƚmאָ99S*XvXOlUwezej*GfLSyCNm?Y%:#\* ŎL^h؞l8*JtMwL옼"yQb}ھ55ߤU}SQ^NRѮ| SSWoqљ'Q JikPgɛ'7k kfY;vz {OSx,''Q-]~Q9_`{?ʘu3-/1y,u) Uȇ8E3kF@:7i2`=3 Jj PP  ؋س߯dԽ3N> h:x!IH  H P_Kبd2D5Z +y.lcx֒C7 .}:4Kk"K6~بo^peQ% (QPY4)yj47<,RUNzAr BkyαUUc#0B댜fj:AF/'j=hh.( m(F1J QRu QR܂X]/Q\.sja+-vW_}gwWGgm~2p͈JWazjR]Q~ըĝA5E5*pQ }Q *TR$2Qlׇa a>R_/:G ܌۲+qn 2^3f>Ϻ/8CjuZ9d[W)36SQ3Lu݊SG2k&l޵k+FUV[.[W_Q5VʲevOUT=9#315~>vY }]|S17fGњt1n0nf+m6[6uҡI_1>^ҽ~2`@`j?k!c =I|OOYyRc=.B|}&o,'Ox cy)3UZߪ|\>|+O|/r_Ьo^2JHMC%QSlD\(l DM o;5TWF!0U 2DOmYLX@3p4,pIE >teUϴݎo?n OiWұ9zMvk h2ٷ͛ۅKJ+ٵ䘼y *90s-4o$'["*Z@(+*WK/YyV0<u6*P;NQYmVSG \q%8W] qڧQ w18Yo8 '+u:Fj?p,F[Wb(F8/SuBWP|ВL RU3 QGY@gdꬃLv2 ADC.|XP6oY;lW#0~mg!ZDQ Xsl= Lεz~YOuOkǜ=2KOOb#<ГCCqn=n}(;鞺w#Ou&跓3aDȭr_vo5rrz8~]}73zS:)gG#oWx4^S1fTuˏ*pm+y÷7WuVwY4r.6ݪt׬m:Ԣ^ci{o{>jYCπ61&?`2qZj^yJ O;؎eL}&e9~jT۱aа,ed XS}g_|nHǟ*5C}b=Y kzq5)R&,F@ܰd ɉ%2ʼn1RbRXQI26YLr̄Lz8Ut,P6jV*[YRNg;/Hߜ]ꔺ<5ѻ?TS|atF#Us?țt; 6  X:xs{gy'oY#XMrn,[/Z#SPȣ5J}Z}T\MQ;`ڮJok1( VOG=7{a88GD--dD+@-*P:MZ5" &VC-A Ų4QRDP=IH+ 2E(A9աn V6E<@a'䣮@. Q (/v_ @g y(PR4@Xj7c36?^ Yatԇ=t̡z~Eߑ]5S}ppkT\׻'?wmLw#D{}ȹ/֝tw._#$&v1avBL S9>IQĒ 1b;G5jo_;xmXVX|E51{KoLZKX৹C3j֮Hfّ|)zC6 K]>H/K^h,ͣz3]Ų '彩d?߳,{v Xy*D&\7ŀTYN_d~I/?_|F/T1 &"֣DM}r5СD@&48'm9ۭ0uTo퍇gX Uhh d8em+_5\m ;TrwX_Y"s׳u_wQ_@!`*Q0 |=Q[}ĽJߟSW',=$1׽Xw[u!wcę|;崫4<[YQsll轙6齣kG*?D%%:Y/]{| ׁ@U\Rv'd$o~RH1O$pY 2P҇|-TF~Jz+LqBf*}f/dRIU 'nİkdHԄߋmS2 b&TfM,{Kk@mP23bݽ=mN>+Fpͯl|}y7*x'bnﴏ;!O,8:6BxtxuWEEoh|t[swLozXYE%TU`/l;.'D97樢C{7ӡB']85P8Pٗ YZhij' K-K4μ~ ֝HVWԈH&!#qu $hPSPGb'4A.@>ڢF#S})E>i(D|"G; G E">ad %ՅrLJũ{P> 8X9:׾2: A-Xmz5Rq$ǧ}$ 8bx DtETOH 8!bOE 釐&k؊jTc*q<^^}>"'ݩ$pv{?:FtOw3N8)\]"{Ny<0='b S6U O~<޸:v{5=j~rAEQy&zw}OalϭsvO<$y_"fdJotĻ u&tlrlsk8Kj[T3y4:vfN)c ّ+7"ӽz܍kp^E|r/94ȳ_hSeL*8^vb#wM\:1 9 4h氋# >XOayUq|ap>:0_?? `sr"C h (j Ptw־G%r ?V=V'.p1 ՋC!35!9!c)T Pˈ(T7i%:,߇+{WLOO {=1M]3%:'ew=OktxS{{sNpnn6NEŁ%Ek,<>sm\>->rKͤ;C .k}h]eOd]od͝bUٗYWηFXhuRJ5U.PY/qNMHu:~ 'bNj8#q:Ng8X18ُpu:1 0b:L~Ca/ Qb/^Yj31PR F@t/В n2o1C^f?]/kZo;a;v>vw\?RoɱرXCێ})e7o{˳Yo_Xa lD`#(FYe؎Vz^\|ɽ ||]~EvW}Ls,~ΝgE܃7 ^qa~I䜬_x9ލtsxmey:7E~TOsHNs797Ɔ8}ݝ+b9ݜ !M2j̼L(ݧvVjAdm#ëծiToŕGlnhW$k(wo/O_ҏ;u%Tp,FaN,rԌ)Cd_m "fಆ2ce,L3},g>ߣc0ѧ/ X,s$|>5%@i)8p.„m |3Kh?2|> |/d#QH~MD$Ӡ8M,3$R;i0@ǟ=K !@ "E)Qf79y1`28ĄD:6KLax E2!S"nDI %-GXƆ4Ř~ά=1qf( >[)y4dQbr{؅ޙnKP궒J/ktwW o)ؿaɼ+ ~+724(R`ljߐsޞ)j}{4Rdf?l/y*V؏E>ZYOX3vT}Bgk*TkB Ijz;|Jԥ[*UXP߄nRSj\Su('VߨC}'@@zVM >ށC`O5c0@삺e `;¯- $BumSH" 2N!%Z]ߦuK3H3JK$unQͽM=)z[KA@8;4@ dڰD}]vtX]}Yf[gK1@NAB+<1$"x!D7#$hCbò~$"aFe{!MbMD>(~OP=@|QߏizR?#^qܧc Zׇ)__ڪԿ7/uP/OOԟBw}z[Iuз/GOAһz\S}܎n<ӽ9|ϙ엘A[!ɳϥW':K?;qpnTx ZImk~T,|Tm]kYXfEc~݌}?|1)ae~.ky2*tI@*^;=y_y6:lsˌ6c\{OCF3|?F1oWo6 ]{{%33K{|o27)y~!(3s"BBU"u ,cf:H'f(6x,5 K!K 8Q5` ePQ"A9D`[&d'2'01Rv;WZ@e (EWo->9瞕WlLN^vwL-Yx]ѕk[U^:tA䐜ICBn{ڄ~'"$xe໡CÂw >l_40)|U*x@pIO#-[싃c>x()0'%pYn>^f=>Ѻ9u5 ƹ[VrsU[X+rתjc֋+HDsfu0|^?˂wGM tG4A1uHt4(\q8i$@@I9 @> lHaGz,dPr3.Nuށ`2!PCI_v&옉iW8cdzΡW8T_u-6(!q爃A~uClx9r_A9^H! B@;)u6'=WꞀ83rFzQOwoLv뇓nċG!ڮ%n-^ָ{/:׹;#VNxIJ:ZfpvK}v{oY677e?Ȝ헌fUvhf}1ٵه'7fgӃҳc'fg 3+SY33ɏFF&l^WXʚHֲnc/g*zmݰ%/+t-jYg-QڻP,.,loKuy ,xm$e(t)^itaI-^c9}ToIRjMߋ"n+̱_ϗZlsqd&PGEޯ~ xo7lYc+|7FI狛5bÆeTAf;35'Lj8ʘ'8E=f*R/%GrN} FQ':^O1A-@r6^`FO13E0Q@מL S}2(kTHO9pIĤVk5iCBKC,A ɑ{#r#"'FϽ#47'wYfyGZ0!(?Tpv᤼s?=rGF.D *1s)4(@^Qkwn{{dlkʭ |֝֝%,uET^]~6ͰS 4l(T+2ӈ KMFl6"-E!!J66lBkX Veh!i.mޚ PKc\,b9N1VBY_(r8y 58-Jv] ]A! 4r~  4".̂,I"%6+օ+ C# V 'pP-̇Ja4T*)aE^'X&8p`#\d8pb,_'vص¼X]gjo k," 1E]F5q&(a$] xdѯ^yIvzн#{;N=ƭosq,:u~||}ٔ6{I4a>32{d>y,9$x]j^ώ[vTt_j:Qy ؠCɇ'fOM'x+֙Y~O:&'u;2.uX2nNX̱⥱nѦыѽj׮wߪݽ&0{Xޮ/ ߅1+R燐(&Grfe [$cj⬭k uJffد7|WzF,)GƁ4kE#sY2wֿ>^LT\g}CְS]v`h( ,p#F%ZL7 + ) `5xޛ Űe\#0c2Wlo97(Q 0/] 8S2d yy%InMLlաd$gʰ [\]WA]pec]Jq| p k[Ձ^\p:Rp`uq9%y[W5~=~ nlKZ kٵ̀=;:ئu&hy .?3Ȝ}s&t ϋ?099;s_ ? 3D;`fO~`n"g:Vj(*TihP= FB;{5V!h].V :`UUO슞jV}Uk`wŮ^I]]uE'tEgujhvN;脞zz m6@sfD5Q)JzmmkhVh-V=fhZJp(F:6 @rp"P\5G.ZyE3"\@e#\e#Ǔʿd݅ p " 8F1|$: $5!E qG Ȣ LZ$p?2BT߈(Q˰[Y؈z$Vc`8a،rlc(ÉzlVlR*,b=+~eXEY*,/+J=Wrtga9~r*', G%,XOwz}BN",·z&~,pga {=[=9zu7`*Vb#:=3҅,}@oK䞨q?MNrw$9Ψxs3Й)FȮ.Όy d&e:=y@щ+֎>W[[uGў~Ϣme^n.Yt2+ӪꡕwfjT@LЁL'jü$y6&wE΁=G&ϼ:WZ^]>GC sA'Vyz|%!C͟]_<_Dh=2/Pt;Z|=~ό?\s}@mwd{0>Lp@fg-~J,zks% @ǟd\ŶL'r23FSLxp;'ZPoFF'phI+%f(`Xr7${J?)3'@tx.MW3E?/,i-3,}"ܙF,ܳCׇ9%z>gLyQipk"/c#q&N{Nx=:+TZKBXwۂTU5 LX&RƤ78 "<kP|{"G&wjzL](xzVR<xu$ \MR?W(\W m8׎;nUY@uOqiq%z~EmVԮo}Yg%q$.V:xGCVA8Gڂ-F%Q푏(TRN(S^ @;EKM(D!Z uTƨ.NrA2H PW#MjP (WGa ֨S F@jFBD }6Ҩ@>YZ6~\v1Cg‹ Xw,߻A_U[=`ү`⾈)N|o9sL(K\O1?/k'\0<暼<y{~,b{Zy]eLJ*xw kHX ^c\w:v|oJ{OÇ?ÇP%vX:Ȝ0@J%k:)&zxy,?B3CCS)E,6fh8! c68c؟{sʼnM#/5SK2b̌)2!ؾ,ѐZ/#M'J(X>N&zK*yR<9p'%tAdvx^q>W>ʹƹ(3sdW;N?PG;;;gdW89gepn$ Wf֤Iٜ~+uIj~:Zdf&?]=(="zS͓5/+/_voieÔהO<~ gfZg;83;T~̤bK937R,tl)r2,U2fKn0Ƥ3.}/,\zo)UMc2H'՞Wymx0K ~i0 +k `[AO ,UKEÇ?Ç33zfԙ1'8gfT vP&NJ&X`t #1fg{A:l\lPC@AMah (fd$cE1'R9f`cd|.U'zŞTg,kQm!5Q"r`i3,;-~6[KݑL$Vm{xK3}?0ErɽϚ""kȢogz:]+kmnwj N i 4Y^ L  B[ۅuxȹ9 B"[#CGGE&zk>Zx;T8|S푋+ '9"٧7ۏEfڧXcVw,l֪=ֽև{mjxuz=no=INU燆ԍH}[UWV3!*[`oTPn?TZm WcMq:XCGCU#53j}J T@w0@݄j(5RjQ4up_@.> 5bb/p_:'"Uؽ [T=O{pfa: lL|徢+ wJX!xMwM6gwA_s lg=X}e7c4 c-~zAw˞CL9B/-d"B}T=}>q/snyv:uS>\Jt8gO>mmm}#yRU)3۩LUtYjbtUTdeԊ$$LR5AٙԢ}4\w](ILln4S#n;1uHrJL77zbsIbI}bbͣj{̮qoiT}~U܃DȼP|8C ՘c,:dXy I?+c pj֞Wq<D)J>2`:SV#+St|[?ɘrKAloYN@Ae{>K?=DAfy_x/ y|fiv|Ç NL|2, 3朸~:z+v JQc@2:F ( b! Ě 1 $'jSѬ$E JU&^-c,= '2!(:u}}i80\} nN>|6:$fe}˾T}(\ xUl].NSpu'0u*2lZj_[8:JEf5 /ԃ8rVV'u^Xu5?GFJ7%E KdּN42пyNZ%C_7~yC\Szl܂]Ge.Rۨ&%xVՠ@jQ YmR3#XY7 j_U~QMՀjTSv(tLQݠβS +rCZP0O}TcT8 ADT+* H:;+hڢJm BJWD9zolkp P?\pbyҥ8L;kHy:@%>6u 7N S*XgWqZ]e7^gW[Uؠz@Y>Pg]:gf^s/3I})s;؝cSϹ͝iSWݓ˜RJ5)ϾKN6R {fKOOJ͌N~:?u~T"tɽ&S$Z^;,XS\Mu|K)-krצ>[oiN]*U\輝|'yw<-s7mOs/rw^7Ս]uH?+܅ Lӛ ޺P7ҷ-XϸOw~=T??ss zAח.z  LlӸ^瘋qb%u&e%_(R"ESS; {M&Ue;f9f;<^ K)Cj5RR潷v@T@h-!,) AaX!ćUP!|(kƈ8^ARZegwyTYf\+cɘsdL3d Op*āg_V?<P=!\oo2>Gjh108V?=V,F_Z 57bQĘ(SbʚbT2e0:O2 h镁;n-/nKkMW5zB?^_8鐓+?\q(?ƹ #s66F um :,T* %H< }`/ iϵw;+sV:,xzheXSjOuRJuCRmnPKTcV ^ejC,,Vo d}Օk2 8D nYݨRcuC0`jeE[tĞE!WFXq]Ľnc~A߫b{o\xWWOYR|Kp/R=Ü{twN7v NN_gtY7jNޢzYo_8)~νՙG{qv[wXdZwfYOLg&fcMns<`:!SQc̒yP}eoX]Ӂ@*>K"adŲKT{>|h>.P|Dfҙj"'@j,DvfPH%RdpbM,EmYRZ %p.)`j o-2fཉkdҊ5_X0x Eě"EMOÁ1 (:*X[o6B[ pˀ0B5vsJИ-3R^vZr;_.yї’c_R}<3c}5gI`UdM侜Ck?O \>)|fh;Y'3['xfp40;2ľĞHYOڻ#։:v4aZb1y+i]αQjVuY'ZqkE]gըcըJUQezXrkg5DTq,K耶T]q*W袪tEcj:[ݮ>W=0h5 {}QPaB z>z \W *}^wH;k`>P`tqnr}^A>]_?ތ} = Nv\^~v2wSc~}޽n7w.z;ڽ-p;_93ܛם SΫ!Nuj'$+˲e;gy9N"[&&sBfht(uo:gpkTldiWx<{%v_(KwڑN5/UU5ٳWeóUl/{eDgĖ/6mn6ʑoe@L?Ej0NXfWs>) 1@7|Ve?isÇ߅ǿ FWDNldWtD}xQy%3(SXj4=q=Nyk'Z wlCrֈe1gFga1' QPg@V&׃:?tEc)!q!gOc;B\ez>1 P&m(AkL¡خ?=xH߬w%z:5zf<@/]nRg"':1}n~^垊#.ܝtgPvwsCetw~8;Ynԉ;)N,{ }8efds3oe™2D&=%}d^IE![S9 z:y{@ra2//9?W%x@{=_W*tlLe!ucrυN?Dj&oMqT3 6kI7T5HڅOɘ5R9tܘ+ytd&nnG9Ry<>o6_^ ;af64秆{5с&e09)zHǙb_0>]D:tѱ4Ds L3Ab{'Qc*Reɀ=Ug$H`@qȒ"jh2L'f1cÌ3 xl2kĒJ 4k^zAaAMRzɘ⅒R~[}R7 tX;2VɘץE.rQBy#ciLÇ*buvǤOK:P9?2_#Xxռ~2kMZ;*kZ&z$s;&X')Zbdx[&Yu5RkU:[ SGcUIJ:S:pz@AsF݇~R>@KE8W`&F8}VfsS=8o諰Z_9zACFY}>\wa;c_S?DV7l}V:gkGKFg}]W1wIn[t' 9xG힢wݣqa{{IqXJhw~T_7qwNb;.=zzW7IwBQ|< 1#؎8{>Q˧v!]1pB,yAG)dJёVS"|scssȘ7<E2%xwi%S/0 m2e%e|0L?^2x8"?.KP{k2H!AlN X_χ>lh'rf~8qcBRm+^V73NXaDQ2}^mP!y Lh`mƘ]耋4)2c,3{J8t3BRs}y=xx=m^`۱[\%_obL'ؼ?8}EĜ 3sR`q:d:Mdž;R 1χm:L^tT&kƙK9K 5~c^,ۑz1y{2@6{ \bELJ߇W_a-=d0`gچ>H L9>)0twRNxwfVoe-;NKx zj?]{/ ƞ&$cD>@LJ{ fҍR׏snw?=N|k2X߇>m>|a2RfjؑI UXրRX:tHv7ʘ*N<30!(CľҞlPmLGt h{ P^Wj?ntt8f쏮tsOfF%f 3I@mR:>tLmz̉<%:Ht}(k&Ǥae0)k2CAGhr:nd`=G!p=/?Kv.tXcοu|L2`}ӑb $k27HfW1pxY{m:55N}y3S{#*hxxL&:,usO<^zRYs3wPmx9q)u߅g3ן 1> d0\!c@~f+"\eÇv>|'htLHqgN?:bt\KޛHS#&3I22_,ۍAy2ei),,!0kNY*Pž- q- ^Q\`MDØiRsF30@E8A9K/u&CK1vK.2o'}Ίblw_G(~>:¼p$^:tx~9XC2OXϋ_Wc=kMg>R!:¼2̘2:4y{KJZ?cjpllȰ<:thӡ'2{Sdlvy3p` el|fc>?yHNX)_iw ~\OI&O;WIMF*{=|OD+c>|?NT~g?sbetRo 4Eyj&TjN8Xâ,&}lǚ]~2fI4E:p;ʴN 3R<~_:^t8愞d3G%ˤ^Sܻn4[d71$@ImOL$kw"\4K(`Od0#|2Cǟ:t 7/:jt8ɔ߁Ʉ=vO&0z,c=e!L؏a xϏ f~y3`fdpU?H%\>pf6Tv9֎:xfy|Sw5Юo~:޼_đ|[d@7`O%eO)>o`s EF3w T7Ç>lYEs`HfիN1;H ZTTq3ͽe;fލfٖrGU~[fJfTWgƚXNЅR+O<o}`ZG4mxRfqf+,Y͌·hm"o3OF0G烌Q,9dF{2Cw%c2x߲km:gRg P1`xϩ+rzX}G;D}xN3c8>q4ko6$&KqS%MJ:χ5շz ׿o,_(If@ϓrc9A 1!˙sjyz% 82CF7ޯkĒi]q>>| rbjfDɛ*׎}cqvze[)ڧe쉮L6FSStׁffI%eq+fO1e3j1l E,eB'5aq=텅y:2D>cƟBO1c7%fQed08)GG3Bt\G^@s&< H5KM%d FS>ܟx~`hEhާF I󺚚,L-@ ࠆ y3@ >3q̡g<||?Ç; pL3j #eJ[ƤS$/8g`gCk@_"@!@Q>R%3X[L7Kpk%剣@2CeЙX8 ϓgm-%Ӧ(ڵ͸Nf~orY3`A;Q@6d7 :f?h3d,,.tpL:Ҥh]CP?5tP#T|jN 22DL=>M#7z:z+-wX3ԷLK@ëig&3ky|:w&x{an2 K5LM[/ X1%H%ߐ1dd|YA"?d& -h`qV~w"M0ұ3k鈰!!q8Qf )I2ґc -L5Ϛ~IĜksˉpX0l؏`fґa `|%3(x*B)Bm2D#˜E&kd;j0@o/ko(u#!<fm i ?؟w MMȮLQQ6b,%}y>,0/3fv 1>||w)ω3TYSg<*I%@2axܧkR^&fv}̶8Ğ8.-K >KHug`Y j'q@&8Fϓ^?qt?G9겝πJ`FJSSmmzcvg1c{1B>#D=!ky|7Z 1L1f)^WeXQu= @ǚ_:ߑ %kCό=ϋw~o?O{%߹83Z%h)K=OXR+'lǿ+ :>y>?%3Ç>| #Dfiפb&ʸXR{9g*R% ˘% 8<kg23D` 4G ulP߬a7K9dsU㱆 5?7})jMM Qn'V7q%",s2+"cOY1){s,j,5 3C Lw6wS]~d:n4uӼԇ2!/qt̯2+! I؟mÇ~>` )Tktd|eFذLƽ댧1 `Q!L:dL{Xcr2 Бh t(|k(2ihx˩= ?L:\txa 0>J9f88̘zL8Ŀ5H%g[Bf0i5RYm0@E[0S 7-kwHǞ5Npmqqxy??/YB[s9rrXRjLW2-?f2`38..a\ߔ<}Q%(U~fHqc?/>|ÀÇ N0Ȑ\no<{[b۫mgffx!͚iR$1CGwI,KkOL0žK5r^)Lh (_$uד)Bǿ3qn(@Ce_x $kaߨ~P)(G5,:Ofpy3LǛ5r{3׍ב5+g1x;wCӣޓy8>ɜDf 㓡 G}MG[{)RdbiY`>X@T {z vFג |<>|c:t y1դNsˉ-EH-Ȗ lCƌ$bc dY2[R^q`v02^RΓ5qHYcLfk~^RaT,`&̩QL*ߋWnG]S\˿#ϓu:j !*d0OGrfpeu_xx*$?cl/ۀR|L&ut ,9Myd`R 9lg 8A4d>|I>|'/73#kloR-)3GǞ-кvQլVo4 v5t͒ :R1-3tTxiH땱?7PR2(Go"kMga S[a>cPoצ1Ak^/sa؍Q;rRb?cӱߙ{zL/oj"pLHcv04o7K-vt٦7^G${<Ȩ>||? :*t9DiʉY_Z2&_(弝Xp% GܣKg-1EJcΛ߇j~Nod.4P7,? r3`fF@P (Lv׏uO7ti#N7+o'u0=)~׃3EjOmi9dT{F ? YAMqaj|(al?G5L5 c5"1Lt35kO*:L 8مF?>Wbɰ@ @G؟Z &v`jA0clPo֬u0Cf7,;530Y,dY4#jSӡe>Ry$#E"wn߼y|"PlIjvljf,!e)r(d{2$̒?Zo2Yx^wÇbń|?:&ҁeg\wSTMD< fK~hGHQ4"ru!hy,M"ϓ"ĚZ Er ό1%.oj`{4>˚v1S΀&_؟?ݡ9̹|L-tUS#@< 4K0L&σ^7vXhÇ>|{f8&3tkS:3a'u35o73q;?9FKu6c7|6 oJՠ{b57:ce܎Tu^w30c|o?ÇoБ"m15k15^g阛<̀ъ z27p|r?"Fi# 1 7w_f&!Ǿ't 7XyfYC}b~pHsfhZ} "c}go7,K~ V1+7(Ç >|?3ac 646P֤!e}_(΀yvod&Xgul߱ |4 NHW GgzR逳$ ;7,||Rɏ6p|'݀lhlEÇ>&>|? 2Hgm=k`߃Pqϗ-c1j `_7p-| KClf@C^fce_uLj>?>UEDO/13G.#GfԩOjҟ>|'ÇXͰtI7EL1@l*-dA2l'1:t<hiX~~C%6Uۤro4,d||_peuj ڨ5V:zt3a75 (6ü̶*h{5}^myg-c@y^M`$VX&Ç>|Ç>|ӠFEsh9S AEְ{Z46RL;3""վ>}_S+=GҰ)ci1Oσ0kr>|??Ç> 0jw\SQ~-TrEfBCm,4VN3N=f5Ƶ{ޭ>|Ç ;T xVq 3BS/c/,%tEXtdate:create2015-11-24T19:25:06+01:00%tEXtdate:modify2015-11-16T14:19:25+01:009_XtEXtsvg:base-urifile:///home/hans/code/guardianproject/ripple/graphics/Ripple%20Trigger.svgIENDB`fdroidserver-1.0.9/tests/repo/obb.mainpatch.current/en-US/sevenInchScreenshots/0000775000175000017500000000000013324115531027512 5ustar hanshans00000000000000././@LongLink0000000000000000000000000000015200000000000011213 Lustar 00000000000000fdroidserver-1.0.9/tests/repo/obb.mainpatch.current/en-US/sevenInchScreenshots/screenshot-tablet-main.pngfdroidserver-1.0.9/tests/repo/obb.mainpatch.current/en-US/sevenInchScreenshots/screenshot-tablet-mai0000664000175000017500000015536113243530567033654 0ustar hanshans00000000000000PNG  IHDRX +ڸIDATx|/ Eԟ] vl`Ał {b:(C/IBK s-˵?s٫.{Wl}gvvyggw ,%%Ei4ZڊF5 !p[n޼H?ZKј޾4Po?餓ݻwOf͚5u?ӏ:utb/ 9䐎;̜9.155Mvi%q?>pI&͞=^M$VP24Mbݡ ߠ|؜9sďy>.B[l|bɵ^ | .ਣ=|GtO/)v]w1zh\Vl6qDc@޽MEoyӥK"tiӦ;;jԨh[:jlRC}v)r'֤C/` )r'%r4";9#Q84 я(,!CӬY"kIa6֭3<h!.vYą k֬YhIhmڴ9s& \GqDwDY74M1Ҏ;ԩhׯ߄ ԫGUf/xOom+%ꪽBS hF"rpbR(Es=nHyر7tS4۷oNJ7@ٽ.)}my}T8裏 [5!@jjj59(OЄZ15M}]tA_PqM^bMYgl fӦM#xI@$r-"`UNBU7xv ~C<"w˞x҉v)Gv)\yI\ V @^({)G6p(̀踈pSl˃ӁT5JlSOaMtFDWEΠ|H DU@ ʘlU!Tk׮]pźZ$f!lٲe>}|m,СC+W;3~C%xWm-{hz!n#uvsbpqAj$sܸqՇꫯ3tF+[d8IGή0/ȥ^:a„C"=zvOB;4hV!<@sqljUHzVc N_ܽ/ةN.?6]tTʒA'O ra7(҂h[ۄ B# ]l0lذ76ЍP7裏P[o,tJxX[!̹瞋}|B(kBO?"#J XQv€ T/T55 QK/ulϐqB4^[8_~9hIbbCh!6\ ߻dS٦[qJI}}%Cq} XYuu]B 8uT]4P4a 9D=Q7{W?iӦ?[o!k(Md裏OЋpvZn-`(/q.(W]u:Թa WA+2@TDj('|'J6 v '$ *nB+K y2dBQ MShOd M"1`Çd׮]oAQT@kb/Bgw ϡ} >*W_cT{9}LKąuiq5WEGlZ7#KCD F;UHJ  >}ᅬ2WˈPOSc/z(!4(兵(Cmzx1Őۘo^ |FhC"Ŕkejh9~y8QnM%!CN?qEΠ&MR?Eh\x* #|rՈ# ѪɅs9ʋ6T޽;$B8]Zǀgdh!FAl?#TApf)†i&d 2Y }]ѣkG_S Q:tsP6[|JsqkpPN< vҥBq.Z"zkժUA d1SO!ꫯ!=! >鳧~W[{}ae]&vHЙ4B#AZ&'NW\t 959C7 ϐoVܔFܭ&'P/sA= #ۏ?6:g}62Zr7C=vm-9PV$nl"D-AaGG\IҾ}{D]@k_ NBЃ6$3X.&͉p{#>~|۴Au5ph3ϜJ`͋,@8ꨣЭPu icBԶh2pk:Z13rj #S84 ׾&Μ9{3慅l2Dc55m_~ -Fhԋ?~hdpI](InA3f6Pb#zM1ߐ+^ڻ_w2T}C'uj6̣oOMP4$*y518B.n_N#L LBt)?a0rbU!@׾c9Flp ݖ&x뭷a=4->+PS}|;O@ ѼFې}aؠKヒ$^{'ܤIwyGUA0h)Nq 8(d20UQ[_|1`GOa!Rw Uu+/`#[u>?Kξ@B. &;"bj7|VxĔNhm,~!d !ju]4yu@7Dxycx>=@S>5X& Ǫy @\PQP| :u[ogx)Swg# ӆP54"վ{a'tu_|1d&4l34 b?#L|xhCF}S7S'@9.vU& pm57Roܞwy(RqNHdX>SXA3U"^QTBEOۍK!&^fL CB4G惵Dgͅ[TGx$Y\bVCB^r6 >UmkMhg}HG!# WM̯ܹ3TV-3<0F=46lܸq96B^ 7S`I>׎ ?~x>8Ik # xP<Ԉ%(}"4vS޽!&L@p.pZqpb ʸxVXCnL<,CBŋs %~vIͅ0 r1cƠm4M<%OЛFVhK#t_JG$a8p*/IJ}=]v?3ό0!d^QFmGꫯ!~ûF&05f!)Sw #"o= 1:a[ d\p'Uk[E[P yj2Zn">ä5tUes=f**!&fc/;SEk"B<}ᇟq]v|N=T(to3H4*-LA"p~;O>䀗8\+#*.o1E / hIkMV "8qGbp5!D"T{%pC]hfxN/5koq 6B8OiکS'4irYg?Xs!D b; {{0t6Q?x#4-Z;ksiӦ=oG! ⋤Q)ܡ+rmYKK^1q_~eübFo'^ V&Tܧ~_D*zu]5? D b@\>l r@Cn$E1ֻw﫯?;a}WL"GyE9֚o>_F駟'|rh4Z%Z1Chzkg>!̋i7L[MBHH0(Q(K!4<5Χ}9fB!$y1,4,! EB!$y1,vҜoBA@wOI*E^znBA'5LH`X!1k,q"Di.wqZǝoqvkJ;S!ATx}"tB7]HG8y Dq3?B>iu G ]Yr]7Y<~jչ㧑͞ܟu!M{! 1KxŎ 2_世-]V%P W+_.ʔmX<,rҜM8/t~ەVl䪃z?K ..suib7CCB"$ʷ=A-PPo疸ytrrHH')i+lwN-tox4<.u5C S] rT-3!  X*2ǭ#\FY-&9I&oe9BBBt*5Nst[xusN{O=@9D^#j'А?}:/[nuװ:&mȡeKWP !:zrsqFh]!mG/sTO(,/{@^*j8~] SC IF;;[^(a/\#{@.TeUCv6ZɀFg ˫S IF#ʌtP?b܇92{BoV5c۪Cr$,{^y9$$T`Ek&ߗd*WfL*p_h"kZHU >lVuEfkJZ+ZHX*GAI_Xp㪵PAWNEW s+\H%$FD]o^WbX6$e>U-TrPBʠ!\eYޙ` v`ۉߺ]V"Uf!i!1Af]|MZylK_nmK1[ %68ϲ%VfUG,SDg8kl<>ȕ0йT500U ,WI b QBCK<,|#7tEl ۱?TpW UXHB(;N)Kj~IYD.u߳j1l3{~ˮj?ѐjTvaBiUU͗E{`BsVL(ePH{@Hm>5Qu[j{D̴.\!MwP((nv 2sKUΨܤ;Ġ|WqüP46Ҝ6ʜČxvlod۷-{+5GUjт4]`]SQtB 6QibtSfHG1.!luȭ< -.(oձ k O!$= $mY_\_`4a{9㪂>-<{B۪zhBo* !&$= $L4)K%;,{R--G7wζl3#mg;XScMH/{@H 2i3WT*B(L8O ;-ӱ˪Ǭ󞪳+B2^ĀO/^U1uS!D(\KM % M|&[蹒BH?{@H2gzW䊳ppA)Hcu?(I K\WW(|RBE#T,-٤&[+mG_8 Prfc-)wߐaKBH/{@Hx?+OF~t&ze&u8dhɹW0Z(m6eΉDFoʬhBo[<lB( Z,=j[_4#uBRBE#V{{mRFEFa%O,XS{wWpA%chl}L~h/.՜CJ+!PI@!J{ڊx /:~[ň߳@!phQp㶵;R܆Fl2Gm`!%x !\hm5BxKu8׽s,OIhM3@>D* nH5oJiœ*M6M̏JOL+#BRBE#׬(uMۥ)ƔB`N|N>{p}S5eaohQg.ruQq,!sDyPT:n{&-+u^B!$= $Z4Bx*ˬt.V,a dXo[QSVQIGj!!Pe/!ţ+_fNQNcht[n;-6+~ňD[_O!e1hQ>~"GT:>ؤڎ]h RBE-Yoe 8-OhAaISv9(l mBRBb@|~\ 閸 J)5yS>GoӬ=G!)xUB~k !KV7􃽕ҲBC5CK \yMf+BRBbͮx~AYKM3 9qil& !'_eVf ό9KM))_PXPy"7;m"Sv91C_96)>_@.2*3e8esP̷>zKș2!ĀF1]̔m٤瓄-F|ڶ!`fXajj |yۄ] }5N|A+">_Ps ӌ)*8S4P̷8xWvk~]Δ! = $6ͫh5xZ޸]VϜA!Tg把?$O/b9^*X!NK+?do3շ mϱ#XOP@nf>l[ /~>ME88,ye(sy\7I@SO75ɪgdWQƃO4,XF79 B>AH{@H̨*1?,nsG5$~LYJUj?5q˦w Pڊ B BjEP8lv;*q }7 [e;|G]iAoN7_nZfc(i8!A}RBY](i!uiY'-yw6K_Y@d=?V8AQ!u:@|^ŗ-+jZIwZ=깤Lu(EICG9P|I MQt_incg|?ToPެZ7Ø2$B)p0Gך9smN P bkM(%EI<hSMg=ԙ[@/p 2yr)Tpӻ꠨瑐r{BZ!Z6`^grSU!`r?zyk$ {@AE4<· P/o;اV$ɅrQ'ΨHgdieSDȹ^SD9oNqʬA4!q@$R9.#^I{0̂',%鬵RK->S] FAX/T7_LIԂ7>Lzwy# zjްURt\+-R Ikb?r|C7Ypjy2i̵ۤM6]{UgŨ{֜u[/?Ղ*4R o<8)זhw@};|ZHiJy;til&_mKMU.[7wJ'n|wv`%)Eӱutz]$r]}L(S;R'[JHSKwȇƧ)Yxdt޺sI}|Gɻuw9zOh#@Jg #Yl/q7dIȕT( #8b{,G>++ެ;nr}s g:(`絇F9_"%>M071=j6~it3,.}*de^s UbIA)|:z&B}xOu~)ؽ5.~R!eV ǂ~Y~zzoBV߸"wE5-<ʖ7p#/\(6_PZǶۄ«+WhEXI-\Kѵmۜ* ^t;L$TF L)>˓@DfhI-]KҰ}X 5 /9H[%Ww1/x2{'Wf*5=:/*]rCG;j8R{%GNjMҗy*(gvys%Kqk,QxSYW|YN\,Dא}|]"%sWy\Jf6(BZ* AW(kX#-*<#x%Vny_4Ni>(aE켚>CI?goх}"n.ڃPrO.RrwzoʨT8MHXSgaY0,v)0AROނ|UlP_+X\+1A[{{*ppRC!#ʭ Rb5-_ZgܩϾۑ+|p5Wg?JѱJy!D!{3:-}Wo #=I UK)m!Xȍ#\/N%©P:13:T1XjtF])SRPsNDUU4b9+΍gN$˰sTM%]3Vȣ۫+"IJ !hM)Ur,͕DkNcVI9ձ؈@c~); ģ }GJmZnz' XP7m]2NeP,?nD0 apg,{OWOGpPlEV-b[( d܉*ӿRpYPDpa/ ,|FAui|tf0:PO'^ P.x=A (1ÁFUBf62MB"+~D,(C4ʆhP{1\яhQ_wPb"?6bYjz[-_mVrE%B/(/?7̅$*e%G:5=puY|B-Yjzy nTn8וzw!E*jN>}OnĹU.Ď}B& k̹@9cdK:WD\ kkd^%ܽ@!'|Pqr{n4\>zvB~AʠhYQ-Wǟ]ҞJ^!]UCœi'XrfPbPl!eVBn!Y;!W_i+(ꇶUh Y7Ԡx㠪6^INVWqZ*^ȣGh wPyb0U( %ܩԙA'?U'na!Xdu}~9Bf!Yt Y`H@s:[+'-~u BzU>T4AJywdSQG4¯\<]Z\.!asb9캬j!'{![rFٴR+?d9GBBM:jNEtoB+~VT,`!,T!Bja~ҫ>~+p *WmGrW!V! 8DjӉjhT1M i+(eT*#HJՅcbyu[l "aP/ѣjsBl,BC,mVKJSTvC:q+&n#zbH=1BhPEb_'\ Y)G'J ?엧+B8Xa[=O-9bSK7 qD,ػ,4ʾQc.WˈB6]&cZ X.o3@|w{u9W-9/bf;e<ؠ"2Hc_9/2 "b9lrVz!fh RЋ w<(6)A xǮG †]˚ aY. S,.|1/.SRD&J?CK 'W BXpMaj.t _(ETQCqEE%";㰠&P:@gi)>#HQ+5ON U}^ydn7SΔ*x!U`# aȆp1"%dcTK!D*70S^X{˖Wsʣp26WQlmˠtݦ ssrn7L1( 8Js=0)k8[ 8lk)_'JyZWocByX~Z)LZV<2N 94 QmI-BG+J{Wifi"YXԖ3ߡ9 kL.}]򨑘Y Jx R9։0h|P){uR#* ?hȳB޾0*T\KhR# t '+)>h#5%fP'l.-vnAFj.Z &EA=ʟh2,E%)##hlVTTE진Y|҈ EIA'mSSӶ8!+^׼I Up у:vE4>K*]MgPde)TYkX~aD.xjCA2zeށX>`h<_2Ȩ+ Ao呋l v˳Cs0|ZrSH$ʉRg!x@;\!59ty.¥\|". %V[ְT#NzpE\@Ucv8 6]$6'dkROyrp E,yD>|o1|Fg* tdWO4-GS*Pf+%RCrFr~[a (j3)m+7I*;_b#PE՛aIE)(7B.ve&y˿+KseZ\mjKrnrN4P,q( e6C z䋕{@hs[%z .-O\Bёvɇ g(BHC#׭j-lg73B  $vUۂ?(h"vc6 ߒFA_ltЀ!w$Bvmo~궭4R.pg%) o,\RԥRB mEP-Umߋo )oZj 0WyҖ -M/ps.@}E ߳* _,/54m9Yeg~)E]#Bvە|k:Rj?ʥ~/E57Ћ{+cR|Bx:e:jVYA$^cVcWo.Bhw-Zo NT5(ɧnQ.+FM} ͠L`R;P g+_,`])9䷏>M:%hB!$4:mM]%~eP`+W(_ʩ5ة*g˱r'ⓒ'}B1Opc?G!Bund5:k[5R| _- "{WULc_zxH}~"G ! L-Y-ByJKe1gT!Tnurй?5B݂ j"X`Xf+A ]3)w_BI^AGy+V+}0;g|gN~k`<lp<JV<%{]bQEQ|.nWsyF#|BHGGMv1=!;j!B!:B!#{@!B!:B!#{@!B!:B!#{@!B!:B!#{@!B!:B!#{@!B!:BH͗]{j BHN)&\2˥>MʪJ./;A:U;P,:W&P=:Cٽ0Gך'%!vI]oB4dR)KhY <~BgV]nGnr[ ٽM/.*6T4V־fYzmZl1km!-Plu"6]n}pG}K}Yo\TlbUUzf;wwWŖ!{.Ӧ|E({fjlP i4-ՙ*epEBۈ{7O3MGx~Cl)֞6)L3)][bϿƦCM7㲿+⠐MQ=k Lץuo.{=j{ڌYݗN.?txqH:^Щfek9kOٰ߷xh`Xr1kI1 o+B"?X"X2JΛ o$ݳeS4h4-bY@nic(mE㳽|&'6V4nw-zV__bm<͕bկY=CMAHj:Y&AHrLۉ/YJ]pFAvUA^ʐ?zӄS DQ&q۬Q?_3ջ%?ySŪ oۉ?GoğCdwgy\Zh4-bBZ!|O,TR=%@O]M9&Êv]bm;5CoZU@)%CJA{'"cRRo(4$ul9rm鸟KpD^Gg<3]BK6o!(ί/v,kqP&kתCBN8Zgx۽h4-bW[3*niB|Md!^Py{PB )Bh[&*o?к]ޗ{H1B.),bZN?wS"˟쥕u\1\FRwWAeKiڟ6VbD% cGf@Y路*!=ʗdUKh s e[キY,E  cTb_VuNw>>Uٟ֚E{BT>\eR$Jz0dF&d3 4^̸v FB!o-WB[OxpY2F[ _;XHYA:PB}MBdhуsM.y (BI4'l)u1ӄTYg{]0f 3rB**OE6ZU#{R5˔2?Fт΄pV<-sгF75>XkUZMV;Yڀ=*]! LŽ芿C%hɿ ||ʕw.#!yү%Ŷ4T"^,AaYeli#41L,#G(hH_l<; b|SN9>4V/ !V&i}7e-5gw#wݮAz=zοo}e[=z7(v1mg7o-3 ***K/!tH 9 ! fី uNMBZ4bӐ~FuH! xF4;(Bfl6޽{??P$Ow5I Y3w廋HۖVNrL6NY^(b<-o _|E?뮛4iȑ#_y(4 ?^} 6u]z3<3n85M6 ̝;733rۯ_?,;v,_Ur !>fݻ7O?4XgϞw"1cV炅!/.3gKM6aߎt<<מ̙n:YaF^MmzbF[ǽmVڪ%Źs,]l%˖-Y+wwiIqU~ϖEU߶~2#C+]k۳ƃ5L:~xM7ݴpۼ1W\qŲeD#L>}q 'D@){ٳ}:}tիL= b/_O@SNE~aW!!f}V$ԩu7Cᆱ, `niiX)޽JzȠA!AȚ(dBHձ ܲe%W3gmJ[6gnu[oޱ3ǖuXhqƬVS{*goiQB.8[۷/T$f!"w^׮]/dΝwR:t^4wW PSCh%^z(xꫯ|{gq DH"]uUk֬K/^ ? ~hR"TJ7fMZZ`+WmԬA {}?9^sGI 3" :=EjEWr=Ӽ NDE)IRQZNSIm$@ըrrj"E¨=3h[ej[8x>!!!k׮}WE Ǐ`UDR;w̺"?Q>uhh~&OW^yz6M8"Ve0jkraNr m[2:?#dھ}; a>1ceRhMue.[/B";&BRY,μt\Z\ZȢ= 4!%j*&\(fRf-\. )::.Y|fcɒ2RfP E즢 _|vTTm\)K/ľ\feeLO)R$'k֬1!ׯ_OdS]G3rPK#GCf ʤa:$AA.CVUm, Az?WfE%e*! 铟X^{YQU*+~+xch% sz`FFbbѣbhGT2bYm۶Qӧ 6Ex*xwAۇJǎ˾Sw6kk.Vj*i<9/F-E8mڴ7)܌U6Mf4BuLk)/:깷W j;gCIcLieũ>ngĕ CB*կ1?k7Ю8*j?ٲiªY)#?~ЎTRfJ>m/>>>"T(R]]][o5lذRL4w}W_(!C"3gϮzzkٳMSI6Dz5W(W'A%Z;^q%WY*հ-DH+rJb7-pp Ǘm(bbcK [,\x YZdܠ5r2UNJD땭gT /;3;%AS_op„ tϷ*:R,fOjo}i(Y?z2 02:AvC>cxr$y_޶m@t}߸q#i5k,]t] 6Pɓ'8pbGrcܸqQV÷zެm)B7m1+WhH4~Ν;IC ㏩Ņ*""駟V,Ugĉ{%۷oڴiԊ n)DɂtX"[i4߀FP)@$B+BS]]]HhآO~;+_T\n%܌;RXx0%!I%erD2 MH)*.2JSG&&߮S444Ѕޣ:{ 1}wAq*P\ȽBDagE\b0قmsSf/ϼsUDxu.L#;)S^xz[bQd_TBPвN Bd4ikH_’_֧>g\MT IWOdVLSY-d\Rӓ?'P0ae,6^g6mK6&6VW/I =VҘCbq_]QQhB$Y@A[JJz R)Ԑ٦NB6uss -:#j:nN,999Q`OiLdm r.4P]QO=}LwERZRE^b 2,<$eƎz d5e&J7oO~ IbIaXxhJSM@ƈ~HRP6]cn-Oi•SMONJba\ye'f+*[F*ݷDH:T+PII)ƨqFƽmE3{|~#B-o5ZEM"\!y[:d8Sz.SAcG+BJM[:&&/Ꚋ zqa!lg'߯F۶b2=A]ovWuuuAaSW%~ྐྵ\,IJJ,q"VY9f7o<ѣ~e!嗖'4Ly+hn5Z̑"/YD(sE"n[{ =EK76(8/’֒$€pO%3exed[ªU*UHD4u$Vm,(*.-C*J#߻oO?uaQ_gDXQ%|_~)6.N-ܹYߒj`I@wkqD23•e^]|Fx3R2Rk*udZil`ƳYѳ3r:t'(7]Ȑ=-tt:(t^*rEs[wWZpݾ؂а`R^}􉕫ָ^zjSZʍr[*,ܦ(('n޲ij7@ikDB,CBT ݊ZYPXDðMl/-mW?1oCYSz)@so3o.^9[U(cb%&w;w<#1KF=Gzk\3[V{晧Ǎ{!$4AV6VGL3NM};**!ck&UM9pȅWoAłk+¶6BtU/\9iɚx3gO}vs=O,g̘ǎCG[֡4rId )%$ŗ jۙgʌP(gSMէJZ+tаŷ\PhθBӻ֬&z+=_/fi]~!=#=|}TMTԝ C_|q<ׅDAgb?s_-l֥ d|/j~Vv@ZjΣO@:g>cr1͎|o0]ʦM_#vNbmlfNEyyLlR%Ikѣ>J܆WF=a:,/5gl@ !Qkp_7t64+* τq_/ш/^ϖ N/zGJ"4.P- W+k7.^:g6=¥s 1e%$$4Kd41ūX8t746VVKs|#-ܥWCTKDh0Suuɋ^>~ʉVv^*,Q+ټ.zEIYqXxXcǠQAJy9$?ĝ6&fm;Ӄ} jZ\QV^QXXXT\L"KM9o\/˦}D~"3+k؂©nⓔJehXHYy1ᡒeА:zh+ƛ#Wed5RNMMFll,_Mi^^^CC\*3~_joݧTWRJe"J$Oڦ iL?U/B"|k nylL$R\W 04VW܉3Be2}EEE]6I\ PYY8%%է4Y1O}<v^$]qs o&5*QEx_5V%*M ^ #c/D5-Z;GTLuwܑ> ެ(88r$ /BZD7nw%)00lb.|mty"2N|blYy\)X6&TDb###*+e ۷_gIa1 ڑo3EGGwTR)3>>E'##о})BVoccP(!.<<4&6($mEDQ5UcKdYÚӏ4/(YwcN xpj:]Xdrr2e"~Ehª*[Kvyp0cS8u`epZ*SK쬨;&Fމ JTTijTyIcwuRIJ땕Թn*2HMMeaU~l D`HĔ=Wfx(,w.+"J4bmTW(ƝK]"@L ̣s%6!%VIM!a^^V !C"BɅ---uuʢ"f"w4#%}pDT'R]JG{f)N121YBpFLZRRqvkIk%/<9'3)ƂS)k~_325qAKV46r?"~GOA>j 魲"(53/6%3&9mdUUURF{x]{FW $HbbbCĪ*V"~GωA!tm455R&Q^y'S߃,JIi܄\o@Eؗh?Y5W'''b~aPPYϙ!M BN D85!"@Spj BN D85!"@Spj BN D85!FP8185!"@Spj BN D85!"@Spj BN D85!"?R6q`z:gGEh<ΠlW*D6ڠV0g}ڵkرcZٱc#:gDfh $+YojnP_5MkײZ $mTg]V׭[yfun߾=hР t#G<|Mh>!W5h t׵jcZvY`J.,*F)HQCj37RO>9vXu.\n;#BNw!nBacEH!^6E7toy[ŤCLN){":@gD@uFa]Gy+u􏍏B@:R ? 05W>Yj N!<+ዐk24 !@j١YL4!"jV"I_׻|yY1)F||hBKCqh:#Եk>|rʏ>hܹ'Nj۾};+DXUUsYfM>}ƍ`;F}R!Cƺu)?00FDDTTTرΘ1cӦM999Y05 O?eMh_fLt߶m=N$'/B TM/.5iOԟovFo&c'={vРA9a„w}wС$_~^c)7xNs 8pܸqT8iҤ'LĉSRRwLL GI io2fքr ӧ)M2eSO=e6fp,B T .7|]%pQVKL6+eRQ;/.+vAF"?*!PFuDH"lAZQ)rMScsHn_ilip./K+q!n.`,YB"<{,Nyyy_!;wβ[cZT_W/%{t,PM0aO%i]>g..Ƨ\p고Uŏ.1yyU5uG"S=߷b&_~eРAB~i۶m+BbԨQd\DHc&yO6!B@AVkѵb J\<%xIYmʡǼ#R"Q5'} me_(_iA\ MNk5{JZrry-yf 7X?&N:uϞ=?_|1f̘.p֬YTmҥﯮnaELy}|8;ӧ JOT-,i}sv9KQ/S9ZfGj֨ouWS,F!X)hlu^"$B2j]? K'G]NRv(IUUUbbbAAmTL( jk6qИ{Mقz{fnTm|B߽Oc-5nHV'l[sIzSg BdՏ-hŘ*ݤFH9/SQ/*N`ÇTVX[$ܰi{!j O(3%ojsӡY7e6Ztm{׊'ˊ } AݍGE gCEz@u/~P``'e2իWǎ;hР۷o֐:$ ɓt:Rye3088pwD&@J7ˌҔt.B|Vm9>Nn˛A`E۹r{M0eO1(\\D.t]E$!.aÆE}١C~n:۴A?So aʖA-߂&)/?{3'+?K)$,>2_$ [UVfpWzu6=#$Tޛ,sGwed/'+qӘ>3%LS.!ќ)hH} > 50g")|iLss_  -(XVB=r]Oi:Y&@D_k;XJo>kSWoq|~NyZOQu>2&> }lS?rP[ ?8,"geS@rt L,\AɂL/~E>l/St!C2KЕjz'_-:"liiq,uixIZ_$ӼDSJ2&> ya.E_ɂ،s. G[-Xhޢ<]Pr*ubAS8(XZ沼l\]Nnb{Aoi˕ yyK2KqM}{L[[ۅ٣T02 4zɂ917c3?i2XR=.) 2 .# ]Qv:0+(]WMr6[ڑ 6 E5bMCGkn)k[k{"Db 2$lN]+!Kʌm1" r᠅I+ӽ(@ @Em*>U\ㅆ-%ćBsƝ( ޵fE(4Y[|T^MڗտvPО)-/7YДH/9ڍ3YÍ?y@)) >h?n,/r$:~DSssU(;;{՜GMtx|bC`M1;tY\Z-R"/9/I7_\>Om.ϼ9`qLb{dX8H"tYZz6 G Š3!)o-WoKn4$W%'S A`_oWO}'vP1.7tY=ᯅgcyQ 2\,MQr֥WT!;j բ⒬߈=iˮfy9w7SoD$dfP)!k:W Bvkڝ2ܙ2(}g?߂3& ,omṽXpEţ+]jl5׋+p9"+83t%jRDhr(߸^١L²J"nRZQeƾ~Oi={hS,fbA.nUf k76555o/f?i!77Jh;//joXR]JU+Ē*>irz}DH465_.u*ۀ{N~GcAƂƛ+*-RXV]FEE]F@@j)UVVrPf`` mg9>&zpM$Bz)l-`"\-1k e;(׊ł$BW?JoTwd2Қ۷oSD"a=EV(ƍnhv#U5TaaJF!XUk{.hv(/4>tYQ>@ryvg.::*,H,/B>L0cOO}t3ݕFUp oռY, ?؛WTF; 3 7j2992Yx@"4:9Ņ;Sݾł1+*eUٌ9%y6S]PPPTYann.{f@ﰿ %e;/emmZMgVM^pE[տXX"t e.lUjj@?!"4D飿-xCj mEn"7-/w5,5dwD9JM NgH!Bw8JDkk\H)y1MKDv^ƶ,8`emVT>Io%gRWx*,c0-=dc@2)Ky1ykaLU5.Vk_ڞ\\ZF5N=NËτpLo hhhފO/VtKHOϱIVM6pK.9KD{0<](tss#C=gk0ګO]"ETTԐ!C^{5PhV}O?t˗/rVJ֭[m۶3gΚ5*e~bb޽R#I N&:u*7nb8߈#h3f9r$m/]U8t__?~[o5x`!qfffYGo?S,ɾIzU٧V_܃>Y~qq?O YNEEٳX!ɒ"EK(,qFZMRʼz}2uS׫|WKܝ)k;yj91N1s"Ȭ=5ܼy3?3##cȐ!cƌQ("$,n۶PTrG̭[q:OսMCvmXW}f)UPNBhsb)J,KONꊈ0gAaHHwS(sVl2{ Cs"TۥO)_{ vz=g$ 6X0n8*>n:?w^x2=<Xxm\p]Ъ7Ym}ǍE8|b֠+V%&O>mxx.X.~Gk4ʧRG"{]kd+!7$3۫3i$jh"ʿ~"N7N(W'A%Z;^q%WY*MS[,CNJ icAuRކMHK[lQgժUTĉLBK/Q~aa"h:KE*՟vX%u\dWHTM(:Pqݷ h|֭[ z뭷lp` O()/d_!BYEJl[:S*8(q<%e)RH[BPw#n33/%qުozOdS9NSL8pg}JJJXM6/\?PhzjJaff&@{MRWO4(]M 9VzQ"T M.k|ky*iӏW1w˜B8pرO؄{.߳)b"ܹs'DpNTZ}5R/laɯLSHe& Z*LzI6=RQ"ԞծTYC㎟II( ytut_BBBUUU2̂e[d>ާ1$Qr-ȹФCItE=l3RcVI-ZPE$b;T DHx^!KJUmeO7J9ኌMЂ,QHA2k-DǨ?ߡP> r1vWMߵwk5L믞ѵ1R*:S @_# 4RYf<|Ps $j^oߘ!"??f5#)^^mzeOϕiυs!Ɖѧ=jq\7cPVS8[x_$uG3E;kAH=2e4vqᯖnںwrWRg χ6?>D>r^o;Y:"IN245pi:CӔ푵zsQ"bH=oæ㭁>Rی"|ߛZc6>|ת U3R:C @ߠh1G/\d]=DoDr.Rcd;2\O-+7tC{*7U!GH ړmq"cكr)e .СgT;?S7_F%߈P5}kxURJN .7"̔ (s3mz}xFH-"ݾ.lHa{"dkܟ,fuMraIҿzv|֨rNg߅rJq[66,@c{% .^rNTK>BThnw̎ ܝ{-@_zҖ+yu>ԛe\= 4~f?\뛻 6 nЂ!lbҕ|٤)g]mc8XpPT#44}a 9f}m~Uf Bw`QJOWxaoI4Мq' ȅwYѡ) 4MV{8;7_"n>oxn,0NZ"BSssU(;;{՜GMtx|bC`M#S"C:T rbߕK!BGaEe~Aᙐ7X%7^ūvْ)yTSS_#4K\Ya_kp→.!Apd,jQQqIVvoDeWjΛ7"2s5VK{ ]/3.X(..a~NNNRR]ԙ}%''̾lNV클KVVe\QV^QXXXT\L"KM9o\/п/{_VHq 9x9@0!!ȸ~zccw?2+(({?wvꚚ=.ۣFSj2XR%'mSN@7e.(Q}EX[[{݄L&Wf@VH$6t B/16_"LKK }vffj Vܾv["hHEtZjjjyvڙQ=lMEP4ӄ>t)BuVnn.YCDCCUHJJ:rZ-3^JJJRRR !Qijjjaa!ɢ)DFPC]EEECDuu5U`{d"lii18(tJb(jGLHHB͹tPEUUms.T6EtDt\t&+oAF_vWų D@EHIDHmʡ24 mdee7`͛7mXv:'QguGQQ킆T*(&aP|ꡥc'Re0$xTaِ UDH+BX!Rhf_&B0ur6N D@["T.,: Li7]:I, PdCt)$iWʔf/NL?JvOβ!]N4[O"Φ:"Y@uKڣN؄.;6DyΝА[q)3O%X!R5:|2Ҁ- }t,w?:&mѱc'^ BjGp'Cn*iۻy.H?tqLNNNAN҉bV\\\={ZJ-p" :57{ ,1nq7ȵIJ&$-!İaШ($ZmNՠA"$g8iVEH,^4/!5xZrVfq'"B5.L ªawzYE򸹚n l])<"-|-4ThYJkPeJJoaD`_OXlB푎r8I~l~68 ;4l"eU!BnL΋-Oɏ6RJ9߂;$$J 5aytIDH*?Ør__j5?KbZVyLA|()O@)6A ֬_"bXڠVy& DBJfw2=r}Ӆʖ^$$$d2{P(,C=S4n!{i6Ķ: Fuu\. Ԝ)"d#f#狐O:SjDE as;!?`:ETƀ2bl1ՄGtWD[bXӚGHuvf#k*yWzx-G$Wu7 q%277'ݸq.\`꛵WTTPTF,Ƞ]SdJ9 $i0zBL s2 ɏ5K=UոfțzENElwtVEh8?&%Eh01&f>NS:Q[Njt&է/*Ә)ix4 ~DTpeYiK;DRQ0gvoAW[*h4;`ZpljXC:٦?$dYj ^e*p@{@O3>'2YV'Y)~/"|8 >atsrrLpA400_J_>%83Ñg6Wt:P^Ž_m"33_ Spj BN D85!"@Spj BN D85!"@A "@Spj BN D85!"@Spj BN D85!"@Spj Bsڵkg>vXe^oB\\ܜ9s.8 6}VW,U6I5uD%[ԭm-TGoݥRi'߹sgڵÃ}ZK59OPv'Y0%%zO{=R, /==_'88xРAχ=-¦fUn~i_]Or[ߠt%mO~SyZڢk&L ]UTTt˗}{nĈ9|pj>t<<== ѣGپ&O'+M9N@zH6\ ;~ )_L0MabDۢkzf+B3v^]DxuW_}6yڵѣG<8<<@zBt!>iɘcĿvcKR &tH.tF6Ir=ו fĉ 5+0vAc_!B ^}ұMKFSjYq^Y<)h]}uh&uEDDPΝ;g͚5cƌM6XmVUUq]mذ۷Ϝ9*^n H4dȐÇ!uNc`YƬs)* =<<?裠 gV;i ̂ƴxf0w)?MVkq6!ݻz1cL:uȑ;֪ ;o /PW#Fƍ*<e'xCWB‚n r{?k7< #mU+W2MfټC3)b/<~z~ݻ}%k׳gvx,f"L7g=r+ ف,Z@!"55(Om_ђ/&zM/]JJJR*MMM---:Nj4ڼ#g|B#tևέQTU~7|SkfagS&j3kHHN`` e.[}-;omm5*:L.[^awy 444ЅN("!;|/~o'90,<頙!RK/daE(J)sر+I_G<3 S`g6)[p[߹gRhل.I?={ĉH~Lq!ɏ6zf1\p5%%ϟ?|fYDgѣGD";9,e(AMcIPlVW\UJ5zӄ"'/Ƿ`1,x`ǎ?tʢ+BZUB3նmۨ… j570>c 3y1)߬s&K!!–O@;BVkѵb J\<%xIYmʡǼ#RО" ?.y>>Ri]oܸqʕ.ڳgΐ>{VPq]7o'߿o߾iӦQNll,WNȜ9s(sԩjv&l'rAƍٳǬ/QFmذaΝ_}Ր!C_).q y& ҥiA@WO4(S)ԂZ9bDHTtq|~'';PְZ~~Ǐ>^4HO>Il%BRH{Efdf"$y{{_`G5FD.$GR5-Wӓ,Eh9윺9r$0i$___f+V80 KէI[C*uʴ>ōY9KQ/S9ZfGjM----ذtLO#9)=50g^ݧ 3eggٮ^V+ꌌ̞|: g]Tm|B߽Oc-5nHV(9\hҡ$zBWE(_JVVK wGMnݺEkSWoq|~N:{._YyzQ5mL;6 ^>AɧBdiܥA+OP!+[9{cєTGW݋-gPkWv £G56=-W6=-}7˸zJ/h4}2Z6嫞?_x~hjj2Y__"<}TUU'5JWgwVvB㫷bBQXhM:..74%ϛ*Ef5.;g[0!TZ}5B [|Kϥ;Q@.4@dQo狳s%R_qv^/.)̃-R`fDgNp"44R1 \U-^wQ]ۏǝ?`~V4sm[L2jۮjj Ȧ!%AB @ I$d,;J*>>*::UY %u^. i^]9XlQ4z,0qmNMпYYYYgS>\ۄ~3#ofcm'8zᛏ))-+]8kM<"S[g:#`ljn`f2>)u+C;WӾ!81555oW^9EWmL͔| FڑGTٕ>zYր9{yaK3Zmj/E34;} I@|Gm{N>}R\xu?nI֭[' N6mS?9.W(dsgyD!ĉ5uk.%ZyczrOa~(qm8iii7՜5== ciݛ?{ ّRw`MmEUuyEZ"~Qh>7?qʄ%wP)(\t^zxoωƤ{9KC334eirtH¼8+V(ڄF.##C W\YYY-Co/E?W>|6gph;1*3NyU]Tƭ' Rx)Fw.u6l9#ʢUViIRR666z{ضm/YĿ[ ACp0a 6$ik-1qivsZQӦU97V=;_?7̿vhiK.u\Р jazz[ߎ;\;`IرcldֿwߎO2*~W%N]ZZTmeZl27#*NKKd拟$Z n坥WS3O+tEE,f^幷ܻz#̬9OL:-,eV\1!y; _;bwmW'Qtt|BPlCxd㦽:~}n"&d&~W-3m7 [ܨSfkV__K\֭[tAEӉz#IM /4mԨGMwWwqCyO!ξ]v=o5`Ԃ __PÄ FH:ѣG+++y}ӧO:{⋙3gΝ;7)))--mϞ=j6ٓ_r!/$\=*Ǐ;vL5A,(uAcֺ޴i{Ӊz ,)l7˸JM1yyy^2 !:{^ꂾmA_z۷WUU@!!4B0L#!4B0L#!4B0L#!4B0L#!4B0LØL#!4B0L#!4B0L#!4B0L#!4B0L#!4B0P[[[Wݪ֮ C+--0a3[PΝ[sWPYf ,tڛ7 @TP&-̞7+s̬|33c響 'ԛ͚UEN»-w&L6V^6- Za{ *z"༙QHi9v6vƏ;6t՘1c!4_ԕ̠ay_~z!㏵}WWYݖ6^kEEE#G|Gz!sժU c= XpmRRҠA ~rJm;p|0991hUt] z"KD3eڤODqWW[[a3B]Q&ʆ1bΛ7O˵faD._kHPu=>>>Airн%\n7y裏ڿW^ym?sm3|oѽޫ(~3]8qba'B̌XpmwFqJOLLlnn ߯ 72+hlͨ/jViF755}YUnaTYӧ_햤i0J-˻6`nIAA{frKBݗZnTcؼyM7\¦caǢKIIɳ>&=]wݫ:gΜz6.wuWG"}7=?'u}Сʾ}nA󆡛a|WA;v6UGv\# /wtjk6s. O嗕E aw|ER˵6n'&?f//=˒=BM®}4fPu?n$(Tn?Lmj >YW6uM=u=###ƒr;6>u3ƿ!뮻8J{ uTRۼ(!/;=p:dFT)/^\r 2%F%̌P} Ü(SL aw>}z߾}yoyЌ[nj*foO:5#r9s?ZM[g͚{w'ahiՕme.U__sYܩYCI[JtӖm1r4CN_^{~Ɯ/@_z饠3w KOOr{'tpԨQ@^twzaL#t%''sv65\rcRRׄHZ~ܼy; vssB=RNMu8ҸK&V_Wwu-2FsDm|2f-f760!T-~ioÇO6MxwГe!7|S ov ?ٿO?_Ncذan a7#EK~X un/fcQAwxԼ9Yȑ#_|ػ3gN'BaYn#>>DmfsoRzM7yC;L}kLG麳Z䪫0`@QQ?SO=6ӧϋ/XRR +onSvBפIcЭN 'ڳjZה,+9.IN$_Q{Ys ?\W^꡶kQ*! 4==}֭1Gn۶m CٲewN;vhWUU]~Y}%1Ea`_Cr%;/{;_'uF.rrXZڬ=Gԙ c[0;[]`C87.S{ږ/ppo^xtM5)쿴6g-Ypy;O#J&pq^]Q߾}uO>xIޤPOwllooB+Ie% {E*50<`뢁K[Aw<4띵;hB8Vvh_fB8(RN;_ OIu&sV!Qt%/\s aNv%!֎!CEמSk!,]UB81..S|!oUSK !\;:RÜ)G]wNR[#{hM(E໓ež,T-s|\W^2 >k4MR%$яO[Q5v= E 'tI(>6wGQri|eݞ^-[ZSWd?PB؝[B-">q'7\W3o^2C|Q!LXeAAmw*tRgjaWowN_TXQYthG!ܼ´B7kk8ўYݺ75zYր9{yaK3Zmjpף!ЏO }co9F畠N3¢͛7?i~nnmۢ2{"pO݉'~ti׮]?(^@mk/-,,,*.]t]KǏ SBCgḱ~mꠗ0+fˎ;/^|$\2*C}%''}EcǎRjjڵkQF[[Rw`MmEUuyEZkmУ!1pݻL͛/}z)V!V?bNNC7+xv'@= 1RhQgdnRrС] bc:zRRҲe˼zصOCmܸ111qӦMnzÇ-MJJvNhG/rMmmm+4Zw :eeeG5 /y׵Co%KxUEPK6%D?[N{CONN5˳HP{sOg趡kݣӀ5t[l Xm9ג_|E‘"o0=3蠩å_`BBwWlT&BMVjvmjۧ7EB֭[Kʞ~tTeߵ7݅QtwVuii~TVOQ'-))q?߿_wy7 Qwf>-/jawSݗhH^pxk]Zﶡߩ]WߺOTd+Bfw;%Q'GqV\\~qV5%'St,v/fF^PZ7 ]Ҹ^)4EEEzj :XN:Vn?UUUC|] MWSՎaC&?S=o{MԴ6jOw=k/K4C(okA/%DQGС2e@{P1 /5-6nvڡoy!HWѬK ˛te׮]] XtR2l=*vuu+EH`C@{8ydW]#nl*jr:! BMXk~'B6Eu/պ9NO}Y !лD93;rrr7ѡSp30 Sj:*Z]uI //.?yyyeee5Çs#ԁXq}B_!׿fEډ7 mVU w‹pe8B87lؐu:wJBypB~KBfzABpG\c^!лD?򣃣U>:tHWUU =..{-w:|!]7:-6\!q_M:HkE@TЌM6ahTe*BƩ]~ F!T5N4JXYsIϹ7-AE7BI \k&/(@MMoʍ"@M{A!KCW!wECo!$.Cc@{E$ h#F@@@G N#$Ht?=$@WD]$:hiTt !@+@71Bא.C$:'43t &ڏ@pFx*$ZjɣU HMf$@+hǛrUsh#-B`^H 0o$څ@ XA,Iv tH4X&@CQ`hh6 D`UH4 !j$@l=yDH4 NQ@Cl=yCwP$`'9H?# $j@S?5@ b& z>OƅM>/Fa)^V?ٕ]X&ӿ\#iTvZrty&@DfHM.oK@,K$iH -uBuUO?_;WFzb^ VUPo H?,_~/  ۅI#bxb꣹.K # Z$Vo|eI2# : \%=eg]=BBdT0~[  #GِX KFףM5 X>f,?U~cp5^ %b&XGP `H, ?H<HI! ,XC %- f7K< `H,?W$IŢ`xoFLVzM aEGA XT,چ~~Jڄ*!ڂ~[HhA`4A?l$Ich*Jv~W;tDVGcV `H ?!D&" 0? ?&y_H$P0;VU* pGZ#p$ݑǛr~̊D:# p7 5C. NX*f?:!(TfG`P7zChZfA`x7]l 0N [b**'`@`U=HX57G mXgO2קguG `4V*!p@[L&$>.7A` >mg>X87C5Xhh;,IÛ]qK~ ?!  \+l=A`!(EXO]" mV}?Kp-F~XZ.G Uk?̆ǻhѪ@QwG[ym(p<]:p;UIj7KE+6X,^ ._x7Ǫ?n/`MG5r@g]n @Mt96LpJ.u-`*oxg@:]s .iԀh ҵ_X M9 <{Uhk{k_tUժ??WXg.ҐNP`%oB+@7^(T5Ot(\S.l @/ !\&3.Ď?7Q7E\$ųZ Gtʌj![zhՇ`(̂$6he`fk/$m&z>`?t@1ZX?M捹@ u VH$nj[/,?=e tS۪Z`2MԢ@V$=mhM;>!I[Kvl=ޔZb?.m3Ix߆ՊhOvLURWI0 Vv#4IK O?IH*F'XڋD$vkr/58 #4Iݚ\@SO8ڀ$^MEzhՇ`{@{TIۀij@#M<߳Jh̤gڦ1iCh3@;5q.]M;FQ Ǜ>sD@4 Q @[$UjL`f2+":$.MhL=ttIЈ@;0Ah hDxIK H4?Gh&T>?l\$|u'X# 4_ݫj`h.n$lu'XّUM4?wGhRM[5Θx?$\ue' ?@35]`ɣU["`qHT*%v\# 4Oc%4?C]*@?,IYP@N e>:hŸIl=\!gOYy`NUIxVV9K5Il=ެIp9$uE@3!j`?$ uXy>!H_C@m}´$4@?Po@,w6VP'Ò*VV  _~ύME+Po-=+4IYIh@}*&h)H?ڊ*'(瓧V- # 3,?AR[O-p nzYvR?*>Z;>(heUKK? Gk[o@袥$(ꁾ0*Q.z .=P˨X|*TךC?@7,4x`" ޢ[@?R٪4 ?Z͟`%X h%(VӨo`U+Xd*(VpTӸC?VgQU`X JdFXX*0o$v{`5@k!h*`3RX>V2T˶56VP,2(pSsK̻4(@\ J 4-@QV*Dzh UUb,o#m=P$ 3ڌ{nX 2͸snW@?0wd@p̟KMN bd@p `Ȅ.p%u9sE_%,)el-}^$FAkн\M~5U'_n.EI1J.W/ζ?1iԿ~A!2 7O+2@?JͯM |nU2sI7 m+7^$a4!~fI L(Wʄ'[Vo;׾ަ>yy:hb_fod2?E6!hSO}E|u!0,&mꯘ~ornߏ.yL X=I*`L^#*xchz*7,g擲~IXwە_\Ŀ㽤 A0(h*nSߜ7Jɀ"J1H b8Ž0_`.ک KVO)+ 7=oV{E,]~]>\x4eA*EWL1b8 zb>I 8u, `xdLʀ?̕I~Я_=7s wggRMKj (T(% }'C?|%UiI,gJljO˕Z2{pTM\[*0?@|) >XZp?+ >o;9*? UK}iM m;X(-~6%.)  &+ݫWv)tg 9 &y#!y9L0a Ve;I$aUi6]_5^f>Sf27cs6Is7Q!깩*wT-P0@`yLl=yZ79̤I`?xܞo<ҿs6?om!H>*v<ʝ@Sp'peM`>Xmzj?3R" x\0:Aܔy "292` z h6P_jf~ >.Ct/߻/A嶊e{@?d'v(ܕ$PW+A X0VI HLZ`Ұ)|ԧ>\{jwM]LtS6ad`[@?0Rgfv~Ͱ蟙Oq~T]Z:ҜS0WRLyFP=@=pUs[!pwY i-փk#HkI_o^w^7i#H2z& 2S/T3ų;f Z2I!LK=ߚvH A \Cz<a@]p, @+Rp RLYp+(Werl K?L`[5࿋Vs ̵YX5@ Epwϟ< ; X.Ԫ* T(.+;V~M!zr7&1 dG`}[l,rU+nk{ ^'>A`L=i?lamX.`aQ2пtp 3'lyprP,Rb4V5g~pY%ެA$C 8]#Ǜw@?Xժ/Hec'$-`L^H%!6n.nfF,V/R`tϟmۏi,U{*n. b 0GSm Rߤ̵, jˆcV>v2OkiZ )1Qm,U\|0#ޠJAꙥR$c/h2V|t/v? l҃?ǿT Yj(Ү*\<V QW5_aeM]eI;JIwǽ0OcIL܉Y !MVWL=I%VNѳ+jwE0~fw$0;Spej@ep@e̤+xo`L7L=|mp M7r0FV!<{J)0&҃ʦ'#=~'I4r<@ 1Ta}VHe`0[4V}3ZpT0Ix)`6 @`*_Vd!e'h9zUL,L> MS?K$! BۼLdR0׹L$K `F732ޣSUTV]/zsQ̈PmeJ4i]y\MA̎`!BYF(=1Wɝ2$3gOx +FS2 s0G5 L`ܤ`7nrLdi?cVL2\P.H" KzA+nd}F&ei{@!~̤,HkT3K+74Y땕4Ap;T@??X?)=Lndrzhb0Ew?p;$33K7_}3++~<ҸzfRp`v$3~H+2*T 6Ml`))=`]S2\*#iMwY2hzy^OGSSA@_O% J7fր$7B:pRRVV:ͥW'Q[:׋B/ON҅*^]ꇞz!Fi`ROiMn(ۘ\p uA=)P&)J:- U*yu^(]TI"WFd#DܛY //(rm,#x/I?BHO7`z%қSN H.kuR6zғ,m덠LܔIˍVH.eJYHLkjFݸ.m~Ao+wk#='Ѓ+9̶H&P~B4Q'GM:;vN]gE[ ΙBNrà,H9)/FͬlT$`<>`^Y`22%Mo _r\?:}uKV"JL6M&gkA\r;i;t#CdEfR/LAT i,ۃ绅+asW߳MG*tg݃~(}nZIvʝ\]x?Lix?UDOIv V4{?g:<~<.m+ϴ˴޳t,~0\V {9r$LT*z1IK'#듨 }&g;ҪR"i0 ^ГuS{}HՇ+$H@) i` Bzy\D9qKmpwқ( jk'T `щJcDfJQ99t (3AA Lnt}thb)߷s9+=UUB f\ _m (ZĔdF. t +LraпǣwRwNrIZ['HPtWAALz73HԉI0Etw.`h "}Ks"C^t;\NGJ]#i绹Lg Z0J/\Ѥܶh;wJAg<uPngQt>MKo^r87Q}e6LAjV̕I RE:l_f>^!adl\3AL G%@=T5ff*,m en!R^Y_3_xL)8қ }S蛃B?DTuXe)IԷI}SFP8s\RWT}\!jۿdJ[N>sOQwr}á+.p=kTH0mU|7ZOZL^(LI%rD\=OUŪ T5VAuO]_\w 4N+Y wN?s}_h4LL+Ӫ?n> PL mgV{ʂ5i XSZ?+Ө }[Nj\{_c;q~{ F=3\\(yp<Aqot)UKO#X%tXns}kdpCD\ L3F!?Dkd R5$+H !M7Y埤a7#}_,yt+T{AL<f0SÌ+G4̔JՖQiӨo +~7&7-P(JO]Q~/p`z+X3@+ 2oPmy˘,=_Fmmt;QCW{>v7Qg瑷*yoճr'>@(=cX5eS+~X-)F4~:vBNF4*W'Q[ۅ]ǣ\*b#gJs@zUI (e>`BH[MnXclΣkXHN;(bзϧ@]QH=~A2WFLʂ'W@$]{!:BzS_/Qâ[T3\Ĩ^~s?gғ~Yȣp,Bt h1+$K:Sov >:W˚(4˽BkAk7x\`RRf>@6+WYfX\nmKC׋B+tz>)eks$@^"j$ŬU[M,M ;/\G#㨯 }[q( a!|~ezfzзq+IsCHNZ ljd [j{<ۃB;g;FO?뻃B[۹+~vtɔFY9V$Qz}\{맣Ex}Z6DaEB{d@7v HzaN>D`Lfµ{8nv m3N9B?E흧s akCVFy1zD )mxe/DU+COGOpu<,KtA,  B0ez80e>/JB]z.w̿빴{z[F[`ҹ5M5h5Rժ o w {~O)(+NGo K/>\3 BO*RB@tګ-sn:I/>(A˓ák*:^D}{~N%/Y!mEMuo+`]Q_7?(t2tcCn FaO4Ȥ@lA )FcZLKDf?tVHoN]/vs}H}AwrKx]g霚Yr\ A *:K%-gO^+4z I }Wh4jD4^yvN*B箳A(/ӋgrI̳@e>` rOoUjK@$Q:~> èQ+v}u4bGQ8,}802^L `&s* hh,)X.:l'绅^D G\+( s듨绅 LӃ~6> fRpS0O uH@ˤ&I :GQ:fʱC绹zAzn/>J CH@ 6'_jJ}Q!m~8,~GQ'yy≤W(jWLo6~Hi) M^;Dڦũ*Osi,\+g߭ȥ'QEZ&=^ק*},j<; h!+Nb}OFx}cDOS5ŗ{A=zf=,Nj''-DHoFbεtLQkge;-ha 2i94iYi*ْRD(]WQLCu\ۉV} "-bnbnL pޜrU]x Ι뇣4 prfަY&ܫϝY?8w(èݳQ#Q!휥6Xu>\i`( h]};wwaԷ+{*$.P&d]yL\9Hf@h!鼸sQ?s̚[w`0FޙkIwKJ h+fS=Gw h=KC綧qn9ޜFrsu1,H殢j}qbb6n@V}^#.p:4L ֍áhM[sYDh!*E|WyNJ2j͕Z7Fi7QUո_T@ېbnrΊTR>T4K(害U<fLQ!->HܽߖKi@^ UTWZ]4oXH;b̨>%Bڄ)c"9JEvE`VI? h@dD<\iplEΦ7̪UH@xKfMf5t"0dN-"ǟc6 rN8yy(ܘ]*)֠Z yq"Yf)`Q4ߕ ",_>ܾ̤@,d¸J h"M^~и>`zA0ɤ^H>z-",MhʤP6U`5RG 633eH@D %L` ()M/Lv0*څ:/xh mؾk69 &3i2c! LR5).O[sIe Z_pn#N mUIC `LTN>5P隭ROٹUy]Ub$EX WHJ{}Z6)'GIrx.̪$څHڶ+e}v} c% L kvrU?MoXu MaU %oT̬ چ hdYĭ:fكؙT!T@qe}qsdLki\fV^kb&mKv;D-DZSh \)\ILM&&KO6>Zr$m͍U0ֳ+HL=?}F L:ʕk tޟ_E\MR;UUP3ӯ6aǎaJ^{Aag3pBE <Zca^W ۻ綮$<ڼ/eWMo3?<*.$YÒ7[X Zz7[MGg&ZR.{['mY$RfƤF |o+>Z{/eD?+w+iv{V78WR[ӣovJfޮն! ,3*`KY$%%>Mz:J:\/&-D\g{I5Ă1f7'%VI6{O=o`4sa%i[/4tisP?")!_w^$tsh~% vbk`|s==r.b˻њ>m[=k5r߄3ql:$Z+Ceo Xb_nR.b1Θ^n}oFkp;ieяM\,eЅh0I6>o՝F$6}㜦b H zI2rvְ6&xяϋeѯI\z-7пkNa6ŀRจH p@Rr5nwMs`3hR\"梎+&ӝu9hnz$\.]%XBWZ|]H?`dj,Z>NVKF_Ʈeո{o+雃F;hvF[ }ӤK)UAV V\ٌSKpELzZaQ)a5 ƴJ7L5A6?.wՉk /utInѯcW$NVq~)EI_7F&=H4Dz~V$7rteZIbD%/nt#ZoMk4e39h?&\ sՖc|}b3P*n Xn%K}o" 8R*;Cӗwm]"=uF%%Ov^z8IM\oU? K+ nBԙɓdDffjMjp+F/;Fk;Eјwgj/}}M΀g࿘:&+R')4RsORѴH i1u˨hRD;ke{kI5ZV։U]T_W4V X!xӟK](>t+8hIYz6vI鯇E/'uE נXwo3铝ꛃV6ttIX$PG+cj!+]JxT噤A%4fD/\] Iiio^p6h;ighj F=6]HV `η߳ ="%5`٣XKLu#i{`rqei~>*z>&YVMA#m MI5V$1W,%_^?3>8`p `7RJ,OƋ2lvm%V㝤KяfE?nNp+F%}諻mG$?3V]R)(b5%V 3XHrIԁ+ٲGSV}p&8;_2lX~5=Jn{LZR+^ZL:)*#+,˧Uw-A_ 0lVjc}cZC_^􇟳?-eɂdm^wm& #TN}WO.1sP+Y1,ɼkپu5oMi4lbo'Q]Z0l[%)ۃn?hVn'وa7ҧ{'?. lq@s&:}= ?bnh dҠiuoϲyяϳ觗_U'nKO|_>nv;>MzF;DTG0œ$k1:@`Ux nXE]]1%U[c. (ȵ}HwדvIm>iO)믇E/&2/{oK6]`,lL75͝F_Gͤ&Iu,++l%YPYLsW*A_@l%u@PhFlMwM$eG_FEF_''|]wZxK igh_K:X7=Lh'飝834%ťRb.\nXy$(q1SX,bZ#=L&}/EֿZ?(zE,"QsZxԿs֣x{[I7́iTNc1|+IUV WF *?5jS %mF;ҳQѣEl(fO/~9ֻu뉯ru;_(hjɾImT5V{[Im'} GII͉N,^pXL; @&Ik4A^k&eu)%E<ʮ׳?Ʈ_F_Eώ\Ʈg_1,b"m/;ˉk]ɝ/}dmoivL&c0iʹfYv& E\X8wĥIv\H|^Ap bUy:Ű\M=b!y5ɤi5=ت'5QѓâvzzT#&fIHt,$ 4Ha0ݡiotgt7'mL&Iz,}X>ђ=Hvr(#W\ G-Uf1/]3]Kz iR (A2oj@W)S _r]kgg8~Ir8zխ?lߘ]AWO?LJs$3)*Z)!b${:qb&+>=!(z1 x *ƁU\I N,x^]#("j^m2Gp*wl|~-D <"MܣV#xRVdӁqn+mx$oTS2WJq7%IHxo-Cdp1#?NNk_s:& Hb 6To  646e5ގ-XZs:울)=oFp&fe}@&3J-M?(;lwH$נ$s*韭}˸&EjBP\\$6nKNTc'{&y6nOJ\%s `R%ԝn?)a:oR<ˣ>n@ՙHi`6IL-jb&Ű?E+R' eU[TTUT5L.sS\ qxVkRT?\Ep~e\\K@6ʦQ&P4s.4iq%}??pu(.o0nDӋkT\4EA/@\7~[<&0K:쏒`1(.(͵n@ +K2YF$sɸERvפ?[%j+E*:騋9r8eag:f?)P\ W8˫:%w'Vb"X OiRQ(ƱcKGxQv'l:ʮq'7w4\s_9WWׂU.p=\RWKdvLgyQfۤ_R.΄q\;ejObg7&%,dQꦉ'٥Σ$w5 ^EQ=ʮzʅl_4.9U' W qW_튠-Udq+HJf;+q*wIf*+oREn z帒AP\?Wh}6.1mq&E*VɡWy2ΊLU]O N99P:EpnVTJEji\CLFM&:?N# Е%Ap8.؞ROkje@qc{LLIqc-`x J:qXb* @p;S'utQqMj HB̈qve3u6BAܰ](6W#rhV%]ׯtFw7M꼈0(o<տܻsݏ*wW1DdRb@L)?!RNl_?ɿ:?ŀ?2:mN=ˣ }|~'-E5ho9ěbyf ƍ x]>ԚIR*AY?gzs$ŧf?&w} iő=x$k@ ϭ6)3S#~xXwo!Zf~%e$z1jC k)sI"O?n WUk]) ,[,;+WM[-dFяjRդ&">&+e'QlswEʊk?~o{;A pMhKY*5O-6mHV &)pSJz |{lUGƗLRYDGoRɚ+qOXNׇpM(m|UNW=鯽Z Mq%դ47E@<_`sgecfѱc'~Ձ~R^OUO4BO` >/9\D’I 0;ik٬=R=g`mjϵ`jy\>{D}8 #/Te>-}`5:_?yrIENDB`fdroidserver-1.0.9/tests/repo/obb.mainpatch.current/en-US/phoneScreenshots/0000775000175000017500000000000013324115531026701 5ustar hanshans00000000000000fdroidserver-1.0.9/tests/repo/obb.mainpatch.current/en-US/phoneScreenshots/screenshot-main.png0000664000175000017500000012767613243530567032543 0ustar hanshans00000000000000PNG  IHDRQ5IDATx/lۺ²t[ZtU]TXmp^pprmPERP)%~xf{~Wg3ZkoͳŗnfL# `0 F󥳐}?g6ǫ7ݻ > @/&c 0^7&洝?t YB.{C E`A~OWq'^+[`\ϻ@ZD~~R?˯C[l]`#(9&x30o P9gV&3xb~͏ x@W6>lhk @sP׽_Np}mo:53:9܌9H'c֖4?6  /( 4 m߫yc3hT7%?~ĸǿYkE5e‘V)| @go&_ֲw}oTlqwHM@f `)"pJD`s4Ά/"v Xbw:3j;1]:76DO|NɢgbwP|ު scF0o Xn`tApo r}n({#kg$u @,"e7Xo`U^}o(vB>yJLXh on< RI&i}0o:#!6GHnOGVmi;/3Ŀ% Pt*G _rcx$ @n)NQNooѿxq<e^ dsN:I6X*u4{=JUo)cx$* m̟v?߀Q'+L@ 86+!?B4X0`IJg Ҟ&ho@j4.p fU؀U 1Fw'ekkz?ߧw&`v7LBoyux$i<DZȤ`}bөi`0 l60 `05<#D{& `,X l\J l Y3ŀn^e낫.M?+9Ĺ9ŹmymK/ϲ<7}~MW1Sr>f(}wqύss<0?&7_΃]7Y@~A7$wτW7q{))MV[Z`WmGp<:H?&T0T|XPzAxؚF .g$wttH剔#h:ꟿ'N$5f}P@B/tH:31~޽[MA __mm_zC}:Cz# ,{+/F|1)?SwN?5(7&!+oVwL.1cOYTPaoǬv_鏊8,U÷mo_@4rc:ӃdS_5BIE]oEi>cfHˏokyl|h<=X'sZJfG2/Yؼ?ݰ賟o3arwi堩fJ ȟ2OӃS)Atg7J~^8}}~i <"]STgR5i7`>QB ?>7{n0PP?@pq@y Iw|}N <\߼woN blX |Ylq}( P6,?fr_QDIOT=K~,ʆx``=}&e=oT43 M K koQ1nлxq?X~_)?>h'-(қL}v?ލ1 QQ%6y**HA)A xWT J2ߟXf1>3Hb`]G)GXڀd].§X?DzDY"w9e0 )?;g*yT JLE ,DcA8bϾ371)?+ ep5Ypmo0loVD}Y9F~b/mb7^FڅXbl-v1}|{`0?J-l% 4:ۧ jG*ER1.~m #Z?Z1Q/?t0P sW7& n5 zc#0h3ɒ2x eB l֛q| ~?3~$\x]o{! {`</_f`|6 "`.**#P$*+Gyqo=Be `=w(}P]X02q2.{lFnol]3z ( 1|ѭ?BGÛz^. >?  0 G|Kբ[3,dS/[N'tYNa^X#2w%?E'An2|Ŭ& ( ࿽/0'/)x\}5GcAZc BU u w,]A%+fqLkY<\o`Oo w5c;v1_}* 86>#>KM@AޅT GZB'Db,fvgOıYǂÁ{{q{fA0R , !bF?뱁mV?JzVUgA]k{aYЭ^d0?=ۜh;ExT^ޢ:3㳭Xע˳^ [ %HC@Sm~ߟ֯3 ό϶(x oboa*ԟ{݋$fW2 zW_.V'vَ{/J`뿹% WtrEş&yN{/X\՟ $bW_T_6]ELJM@{ﯳqOV`0^eU s;g;;ϭX]6ދ{řT ٦__3K\wE 6wŢ`_W,h1 XGV'6nhg]f~۬3Ke88Wc o@w[ VϨ#Xn q_~>_& u(&a+- p_Ik<0fJGՑb_ Rz ^[gQpb0 W`/e`K@[ ?d)R>V>jqn&%,ɸ7hϏ,8ro-\:.;lT, Y-y_`0Ԃް4T{E~a$Ţ\UZ ܣ/ y @;? ^ſ+OM@[cTG_]sG:Y.:fvŢ~{5%?g) ~Z7Eq`qJDuGgY?5T88bcfi@EE <#}UVsgǽ ss?h;Dոg}f-@->?6x/goy=W`por4rM@ܫqƽU ]}rcA/21ro$>. 0, @.u 䋁 0dCܿ W%r?/+g\*P\C\K@/YI0ry>KXQ>e/Kך/(8!%鄑\q?/X 0aܑý\oz>-g KJZyIb``ſQVPrߥo=$$\N*Y~10c Acv~̪뾢Σ75@qҠ})ob1p[ @U(ojK5IyJwUU*R M 06DŐݳl/mޣ,9KiиƸָf&` ٦`] __ ğ$'kO7/KʮWWs`l߼A'QT؅ԟ=? 59W=b` 33/8[nQàwaoָ` j2=v 3Q1$f #u@bԟS&9o=^Wb0A?Us5#,g 2/6Yo :=(06d3Q%d*"_́zUلI -MřA_n10`3Q%$Jt|?_9(\BBcF0s`a? ֻӧ_ֽMm-Р]_g zJ @17\,6eʫ5g ڤ d,hz~ ؀N"Bb&?} Pl9 ` J@U$ xBSY3moWŽ 0E~()m-@@/@?xu` jGi7Q Kh7'ſ+Smmmmf;ގ׷l 06-3?ݿ7,{ evF!p?>6D wEvR{3`+n/%KpOH{=y`47bqſvfg{ mmm-@@3` @,|qUbZO\*9oYhhác\U (Ɏ ,;GTlӯ_\& n94V @606gD]O @ cӯf܎smmmiAp{ i@U Oav~d{. @K. a5+E[2|[ 0Tް>Yv;pa,݁[1e{ܯ`"U ®v|w*o{Api1}`l(*f-iLe?Sgb_hhsi°f  ;??wy}P;18Wzwn6q 0?ƹzW_zdmͭB(S~-x7j{ò 7g[/6O @1` @J W8<:`ޝ8as/z ̗Ly[2h7 l (y5RPޝ%ik6?Qv޷W h`C @Jαjt,RGGD_ 5aQ϶+f}`d1 M2 Ǯel m}}}efZ `lx Sվ> 0} @aTQJ7n_ 3 vQdſ*tApAp! `W4[Th? J @A+ye0VP~Д 2a/ʁ3UeH4ߟ{_u1 ]@P&`<1pݳ AS|;h)&@w}}}̳006* RsN߲ @ z*#@kTx Ǿ7b*5/>φ`}[jXN`# 0YJ0yat6 AEI905oޏ06\G @}pxv>nʘ 3?o 3=P=c#ణh]FιJ>aj 3 s   ׋`ߕ$M0pDD1 @{>}`lx3>1;ݎ @=e?/g06h>d@1WbX;Ȟ 0wmv &w?X5?jqǽ n~<4+7 @q3`# ~!0 c.J cϋ03(DP+[ַ) xZJ@ UAà^G)uɇ q+}06k!,8Ҁ0APs\~OX }e0/>0 @qocFHx7, L7A:i@}}e^{~=P\o4x9a&s>]'1`3 @IgO?d{=0D/:ӡu,S76@#[ 0 wmGI5ԏ~M_}#+[}q'GJN =e~06tuc3s`8ObD_\g}Tx˚1 oa]OzAԄYn폼R}}}}üVט.q  cP`;+ bG 0uq'KhK%]( :O).P QϊҟZ`&X@n A0[v<>\fo?hhhhC~gwb?``GJΚ Wcڽb=016{U1f/y4sqƽ `/N6tm$}FW?@bh#3s/{)o"xwŌ眕f&(2?6FGyYcmvh{v[ՀxEL p F_E .Ahܫ; @4| 7  i_"NMͿ `G:~' ݂eԺM2[bya]~.,0Ҁ V'@*#RjDy˨q]׻ yj~]Ehh x{2fNԟcJ) 8t.`k7,K zm5ָv-m:W?@=B9sE 9ߟto\c\k\&f2Ÿ'޳@÷4am91Ol%Y|;vcrh`l-Aq|+wۀX [gY$ך8g6jq-{1r޴/@ofk"$ȉǚT37o`p1H l󰨕{]J%=8888>m?'=`Y8Ů 21%3#G=n|"ElQ'a?@[oրycޒ6{-@VC?f_'31_( fUX[yYbo OyX[@߳@%bT `?_ҰM0-@9(_ T k?q/Ma0 T,~8 \`orP}}VOlNC[_ ǐ ?7; L߽+?R0>(Zbs7%xXTT=R8UKp6[ <\{;NI3+6e̋eˢ``ܢ߃?GE՟S   eQ0P^F#X+XTt=@74ݛEҁiOKX?P ae<He lRşOIş=D z3> wAe1c|Ojx x#)8J!z<g c7Q``oLn^!(]`'yQg 0в 96WYspcK‚v|X{oy| 07[.Mhi&1c-ܖ g+*LcAIK2ɺ3 N}bE6f``5)Aw0|+ҌKU~``` /`'_ :I :0 ?1bLO  &`ۀڀaQ8mw| | 'ԛ)-hd@)5c3u+c)gkz⬿x:kqT=l3_0 rYOG/:Opm@ 1\ؿ*|.@~S1DS³ؼ/D_yo Ńwo7 L؛!ߟm;eR?o/7i "=D#paAbރliLgzT2XQNH."4"o}>'(7I lqח;##0n|s8r#@XxG5'Z^H)fY"6y{Vs_ |+Pl06d(+z._D<4O U&ٜh"޸l?07 , &_;+-?DPˏ-:, E9SuFAj nfL)JEw9|q{ \K\S:?۠v/VgZ06ꌥ(5:2BٷyPSp}AƠ!ypr;~0_[˃7gAOL8<X;g~O=f7G̗~46^u>a}5iGo~?x 9gG ~_gMv. 0{?(+\ Ǒu?ͫ2|v]ֹO:}zsrZ1oKv\Gs,~yY}VslMk:ϱg4WbGڎіa>})=m'-Xmz|14mF%;ٴO^v7ӾYkV昌~;ꎞ{1&}N[yڬ s+.F:4}.ý۴>g<)ߓ4.գu<5+~ncLgژ,/ZlY>o рjn~hϚ<<_ja P:'=pzcLFy1rڃ?_I?Uk*Fo(Zn,Cx vnb_]6<5/UMos vnu*ִJ\mIz|M6=ii`v?7s=iܘz.6}6i=Эu i\Xۤ>&~Y5X3kt-c&=?~$.~S4GcEUu1>*K/z M/XL}w9<}RK:Y{O:&5~n:&iR߄&ԦmWs(u i\X;o?4}5&~Yg54EgʯƋMc_:.}5Om-^;n{Q|_mT|WjnIXХ}8q5;۴O_U&uˬ5/~n:&sor#@x}3iM-Xߐy w퇦ϳE?ڻˀ.ja @CWYEP_~ΰ0 էN S"bﴽRw3`MIHsȼNCuEFD;U-b[7P56_g_m<~n:&s@ڴAIY1Ѻ\X{w~h:x.Mu7XCPUZٽM JvszMSVޤ|xdYjv/[k买{w~hDin:61jW`D۽].r7Sw|VRӷM, }VfqoFsGZ6=~cەha"3[mbܦf?O,x㧍y+__?ϽA$?x笽gj6KRɭқr`n!M wCټ9SYVhҘ7nCu n~hj9O?6}{}MO?_yja @갧#3|m=DcfÁï}oݍuʯ'帎pH:c=;us4LMN+EiVW唹ni>Qw ʆު_g_³˧y?7Ÿ~{vgy6K}ο!>mMcy:mja c nx%^|N~v鬋d⁲u5ybἷW5YhWWU?M~~ <~Q|:ӛR1jYxWg fNi^ߐY v6Um<_&nײ !^+u5lڰhoY)Ďgwӽ` EJJ珶V:G2GxAd—gwp`Y.: 6ҠNwIPEEgniiUEYNS)/tN'BUvmz<gwp`4ZW}SQ$fj"g;r4= cNsπ{7 `gqX2O墽aGǧ8^*k 0 S&?~9<ǣ8.v,}Ԛ  pӳL!6tE7;>6oiyOvH;!Hׇi*{S!X) Qu3BdFbDq~0 [2ϷOl.fU|9/l7\<[K>~llIüm.m,ag >(7o<ӯx/fk7x @ D7.n!/7w7L&s'ͮsNqzdc'APo6q?`h0SL5RY|NeSA^|Ms^Ze7o5ާhy!A|]8ߘyyl}7W3c11[ɤhɶ&cX>N3GnTϐq*?t*pΔs9V]tNV-nr٭iZˁQCvrNNG1?c7qsMlˣ)my>xZت{g},gU),Moy6LkI8Ϙ\ŘJvxXjˢOO˝w,=E7x`: hU +fRsR0(}`1qMElq{#hٔ7,Svp/830uR~.Q~NWi;*}5~6SÛ hK:&״m9Kbqc}ck5lkNE{u2!6gu>WVejt[crUc*qWsh;Vnq1"`l(nȺ4x|?ac~s]ciڌH|gtƟs9=?0nr@&fuw?8&M:6Y~bl\:o9HXؚ,0m4eY{Ƿ٤\kNMmJ۫qidiLy~t5-ӱ1ikXj h2M}nzQʬ7S,y{ @߱:mG`$bΊəeǝC6-*zc^[,\{[\KՂΤ}gqˤamYitXZ2kz|[ϳ6t9n2&W9ԫ awSem`"[\ǭ*ؙV`󊙒ʯgH*MSf7O|NȬ<hyUlifXZ0݊ԌǷzYwM*V=1MfGn'i8ax7hrɹ4P+&N,~8zy?q߳/nVՖGf`QckI{75<Ƿ~i,ee)ױ-J =ݧjY!oƍ^U#}1ؤv*iZX4jz.uۥ>K&]~ Gyi^xD%oOXda, !/g}EQ - Y `4`0 `0`0  `0 0  ~L>kKX"H?C/೺~~1e?/q|s/9.O~-IpE5҇ިYX?Ћ:-h\q]Ot,WWѿ`߅i+oJ> TT]sXX_(I=G?ʯ*R0X,Fۘ"jr-A:؝-~{0X(俏 ?f 'AOs'@ |,-}ޠy!qҵ3 Aiao:L>[5? V wβT*vf櫾0X(x2)@Ú 0kxp7랲aH @yV )O);W7i#e@,F`G Ό>IC3qwtQz?)0 Z"$Tr?+L@%`6V9xK3#3ag8=ju0X*no ^_f()L -3L8cQ>t}໧ZP1mmz@DDD0)dVP!6W٦V7AN۟WD1m31X,ھw o|VѪmiuĚ80Eu @z7d6f+_ TFw+?XfbJs"6km:կJQjO|>ɕ کho5m"""`\eRENyk&}޴k']cki~UI6;OkSmm`ޱ@DD ;]f^Uzͪy8kQ|o[N(M)jYm2C^>[`֚_m]GlnPgxӑ}j\g7>M @(~9Fgֶ2E n @dO*yiڎm^k8HGi3-Qf^utf}wNQT-nM۹[x9FgֶBʘQ-W3 >UTcF5zk_m^0+}Nw|Nyw*ݧRq~EXOJjJ;mD[}|oog6bJ8::#Y^MH:9y@@@@@@@@@@@K͗ANr[w&GODkIyc@ݏ5p\_ :&'u+yՊ'GiYocvڟ ;_[u'-j 1]s8>Y?y 6O?to'mQH}_Vdw:~P[Kuxn~?*}px0ٮTl@qqGy=y ̧m;l-m?\#iW7^IKQR [o687y=yg@K#c=h$W|b=_T(4).Y֞R ֒db yG1 $hIנj?d-XٱcOXjSl/3ɒ VC߻o!Gv^b>uS#LQ'Ns(T U'G폵㵪y L>#fb"wBG7F{덱zEЩ8|/_ZXSjC0?\W3 Y0s LEtgu V3 g}旽,ٻJ7IX<>*x)?x`uիy=yX~kƉɯZ~,)\q_j;I\9 a`%Xv;J&պ2P^-Oɿ6dys$i]F193I},(``a;G= dY'xI}I޹&<^߽ Gz/ٻ,io+.Yya2ꧮ:`^^Slu}V+Uo[|=6ʿiHbTu~0s ¿l>$ 6M6|5`e@:J!]`̲1#֓XE!wIγ1zG}xT z<ŝ'`~s[^7F.>L!`uva#̟}:t= (bEai@qĹ&`4Xe)Z'=~"xWi?9F>eΎ=O00s pm?R{gVq_r0y®l(ƵLCXEq_wć/O㮮d#Êvv8nqR(1"<)@gQm79~}쿪e$/:^ύs(KBR \(VrMkV9mH' ty W xV'F D~FRLVG~ldEvfؕޜi9:9+^U,G?^c?qBUċ|NZH5x2Ǣtb@yzߝ3w/`0֟,@gFh_..6j:M1`&hq{q m@N HI+WCI z v}Y+_,,Y8 :NI_N9d &7 q`vν )XtQ gv55DW-`Q aKVZs!$X< $,aؿ_ 0 _}>xNZX.f hv: F۽cnT z?dWcXX'3ϳ6l Kv~9rXd¶>kv% W hF kwf@+>l$k/Ɵͳ G{?n3$2v#|`m@rVzݓ2L {{gx`\ pPDZ 5 IO c\g8`i3(Wz֣V|ټXt uގy !݁s"UE86&;x8 YB P|0|N@]m@׿"fZ7_.v0f@DA]WBa#qZ[6IUj j= t_Հ?NޛwקZiE&wQ9.tx ˿Pv|LѳM GWgw+~kd}`L񘽡Ӊ:"m!gsbO@a> dP?m'^WbmI @q'UoxH᪢@ȿ}xA< \ٿg߿*wF^XOԛX@Q3g?9`.za/gρb`qU`wW}'. f F__Y0s:€p _?]^X{g^^AV3]Xnj] XF^`M@_ugKe,tr%۠ec2=7XQn{Wyׯ,@Q{hͯ篮u^`=Б-:I1^6/Ѳ4ftx0[&+2C68׸u29;J}էF>VsauLQZ)jus093t̓?ỶV5 Tx}1{>aMb_ ӺWk\yߓ`E(|o# tTqW6`)~Y}@|ﰢxHy:p{&U@uyKbGM<2f9|-e)5s6LOƇ*+5s_cYx^ޜ6T}Unǫ5pIK=T@Xb;MU}{^FI # ,#EmrTxuy6b]OG Dž}EI\(|YG8J:=-_ld?[-@/yIDAT^:UVⱍ I٦>]Qa͸]<}_=9y`&{ZV-m!+=7WP©ܚQK-~d,ͮxu|UuoI2q5$^-`;ׅVՖwY!-R}pA Q]V0e?eT>Lk/WP96q*iuxyӜ`T+w/v]xm?u['SFE1xxux(uo>V,d=G Gv%K„|KOV?ş߾BO3 F5Guue@VYtT>5G-+;,vG i1U"ߖ2j:WG(NdaTuZXq6QKר+/?ҙN[9~n,KNx ڏwq]}/F}Kt+SfEBaN׹d"{ҵ=(UﻯM<)I`LKqB6" :wxubШc'9'Gܫ0e&a"0J9n_Ap[w= 'gW:ʾo]9}Ǜk\}}^@7-2},#ֶOJlLYSǫ+4 \lڊPd/|(*ȟQ,:o"U1Jk/U^ëKD* gʂic;Z7׸oD}ʝG Pq(08-+?Xxub[|\Q'ǎR,y9\V U <琭,-N({bUBe\!<"|=L4V:.D(^yIy,@Kz޸X&y;w]q]Y?/zOz^@/Y"lq(tS,ʆ.)ZecWg~!$lʣ7jj(P XckSժqaί*'9_îh][(L.[IjCǻ׸Ly,I.- R;閎'lNT]xu,/I{q$yF8~uI{ٕ:F㎝oŤ削qwQǸPl1> `Y0Ruoޯq=y~ňŒ>]ݾ{R< 0IUj-[UAՉ> mu.͹K}LQltr'@@@@@n'z` `           P~f'|t޿$z,]z\x3e+f=;¸wt>PGI7 ſ"}>W~J5l$5Ӈ \DŽ_=3'`&׭{V~ @' u  o D!ss+~y7~s/zeH XNnvh <6_-&_Q>m$v ӤW}GGIǽX Y "< [> ZEfW'I;ãjA :k&yOӫ> ` @$yL&&=l9~v-H|\f:@_h/ g緝d^|ќX֫ v'Nv女@`=A 伆+}?|sM9vEm7Hl5~n@t{xo䒧^|(6 &.b^xpG&|;H|,-z;@G7*~pa Gw+ 4n|ݙȫC#b:b&-o(8UoE}>|u'JGχqo7XՇ#>~,W\ iOTnWk)G}px0xGA] QBtdphFˮH7ծ Wp_ُ"yŕ&8,[45jtu/tzŦ8vF\#'Ns!B+?X|x߷Q4~Nvȭ#H4)?H@BJpB;+镁(NP~G sv2!`飣Uz< |XG?xYCjWK( >7a'Baܰ¿q8f5hC _>ˊ{>mtB? |`xcphmbF+g}~38q8vYpM|d݉IJ+zohOӢ6쫈@^~o~t7F>(#uEq\r ־諗N/{MN?[BB^J?1ws}:s~ &N="61/ IqL\>T~=7ϵ*;]\NTsߏ/]a9Yl#LtP#rW#vdk*FΛonr`U/C'Iznܘ5_?X~4?9T3@`;gEEpVǟ2?$yr91Xs8yZ!re1mBS6JZhȮڀ>\d8~vnFscbXv En?+7̱"$!`jE7;.jd\Ou$ꅀ03hy^BPEnZfͱz/J{LbO4F[i^$__ZB1`R3Qgaz|;0UylGD^#WP%;gkVkU+TY5\؇ʣ_mW$fn_HC?n @m.?;7Ħ`|@`W_(^Iwh#́0J1`z`Y+]sQ@N|~ڛY|h}GЇx㶧4u' 3o4>]BJ1`q@gن`@b _C X^,,z 00J@gj{h%yol(bL> %/d>Int^{ tQ;]6`..B@E:}ݮ\_C ~F`]`l_SHۀ氚NL; 9߹?EC d¶>kv9y5w'G]B3}Za#y^{!'7lm&/t?ߜ[ gO)!k=;l'00׫`+Pũc6`N.8s"pgdBiH[ӝO>XGGSP˄:C<;OɍE {  7r",s4>#j87 @\X]ccgs-{ׂhOrN@]m@׿"fZ7_.vZϟUov.k-ϛIpu]x kj:oiHWEnY7uj||ſ̲-, D{~UV&G8yo!w_>h% z}m<[r^=o]˪?oR "04_4Frx~{a_'l7nmſ,CWh3|yl Z2Daè|>NhK~>8Nv7QՁ c1qYo,dk$5_2?ɮ\1m{Ljc1+ Xe&>mNh&ſ,|pӥB߽1ٿmqc_K/ds~W ^ &gdqrQ3]^qvW?ſmljc/ȿ}$ӥ,KV2ns'?(-vώ&;^_Bs{Oַ3/`YC@%(ݡEopZ؏M \ϲ@1|.е49_V&n #|џ@/ sp^E+i|rgn2lUĥI]tc>d.~{.W}.M/2|Ȥ +3E/OC HN_Is-)eWoiۏ +?9 >|a"=U) 6~~$'pUwν;^t)0: 9&mnr(I~@ys-?@ ;<r#]7@a79w&tM{b4bRO9㎗0* 0.sFſ0&" rӤB})wY8@XËWR@@J(-Ο ~G=ƿ09v9PV-|SX4~3}%eg+~9{=,u8<+lj;Yo!Vtp^\QJZg>tܞ6m/FZ  Tn6Mn}uWx'ݴx(@icm`^J'G0(swB",@* ?^l&V6_l%6.\ A1ys~3DK}wv@ ?.rYv('9^we#i`xY@$ᕀ 6:?-U6UZ@h6NZ /R(XLN ~HM X¦[!v:J_ևk+t4j~X@% Q_QǜU@@@@@@@@Hn`=Ne0@@@@@@@@@@@@@@@@@@@@@@'@@@@@@@@@@@@@@@@@@@@@@@@@@@& XN      @E-Xn}q+~+U0pn~ir(tnt:ΗwロFri7y3{9` {7ٽWwv?77VB㛍d$o?{<>Ha&j}.C`"7gJV=L|e;}E`Q콓~O{mV;So|4l޴[9?vWܧ ʹ[~_>QsZ\\MA+"";o3iPgܷ}тph+0wI[}.{( }`/ߟa"wmA?-u9*Kߣ:fQ^w;騦%q=hn3Z",. 1G@Kgz{Ruof^֫VyO;/>pVw䢨/}nn(}Wf1!8eKfKU! Ãtr@EOXUvýƟ(-tw\[AK-FM:V}&"(zol^+s=c}tbE៵*~뇭#>e>ϯ{Q?O> PRB#>ݳQ\Tم g:[w=1 ZA#V 'F?+|v|٧2srE;cU 5_VB#X{xD|ug" \+k+BuYO͖Gy-1u\GB.o}ͫݹ}| ŭGtYϞX>rR}{qߴn "g``uk~XX ̦ZeͺQ|M V(? I|¥(/qޞ7 s޹ ^!1I1+l~@/ MDKEKNo]uMi碌zGcp#G+] abrT @(㽳TnOg$Y7޳qt (jv{7*C;8L?o#}Wrˆ܁ 8#EzDgA"=n!}֓AX{[F4f=:# ,Wb|JCcK>J[qoC`H/}-(B9Y!h?oM6Ln||#0~iXȂD1LD~@|;i1?W\D+Cq~@lh| lWغXq+CgKPjMٽϜU,       p-?-JXtIENDB`fdroidserver-1.0.9/tests/repo/main.1619.obb.mainpatch.current.obb0000664000175000017500000000000613243530567024434 0ustar hanshans00000000000000dummy fdroidserver-1.0.9/tests/repo/souch.smsbypass_9.apk0000664000175000017500000023661713303240575022346 0ustar hanshans00000000000000PKrHQHEcڳ META-INF/MANIFEST.MFIsHq&6:b0 $BEQ@U"׏Lt֕|/_ ЃElATYxA g}) 'OB 4O1|nB*u^|0< xA@%wx=3T-χA%(O 낢Po)p p] <mV5Ac^ %/M -yRJ2kš.>4˨zI`x۝)P'Ue0v jB%HCenRS+ qqȬB,^*>SURM,ls)H>|JN = cӝb)wW%fxO@QsQyŅ mKv/~a6(<Ԟ<Huڹ]jmPPR.W>+ښmJ`ZuMyzC[0ȥ;XW4EovNBRe~I="S14*~NdGhFX/֎m5QD%LNdx G98^L}g^u NavhU(zƍň׽9ݑ+RRΆUi-,xw3sLʼゥ裟Z^{xvy5Wβ"'7=eҵb=F(9ٚT}}xu >N ]s"q UB5[xނ̖w+8'5uaGҰr ?26TKe F]_&U@pP3ci$Z97zH{o5o9KYAI nxK/zG@ [k7A GkKŎMmbo"}t? 9Z!҈Y1n Jw|h,ސ$?&&i [νyq=4S\'s0==ns oe[l*eXOAa}T!e}?˴JW&3KC䞠 B(I 9Zj LmiѲpc?ZAPZt3⎔keYPX8sF9k;W>o~@fZ~͚duk;U9 |P>3S|r qkdijI" ~e+,atU-fYр_o֐J"L u?M,M,N&k86{ LHWfc-\ 3PSLkvnYK8 ?FMhJq(u4fk'PK) K PKrHQH+0.META-INF/1D0C682C.RSA3hbbjhδUڠUѐۀUIqAsAsAf&F&&i~0r$M`eaf 61q8a_^Pcæ%{$kLr?lrCGwlE;aV5wTv2D|je^& 0i61R70/d>-C31RGM,M {KghqK`޲4:_3BdRwߜgm,u,wkK`IO}<'r|[L)Z>-_S3_q`w^׸?(Ɉ~fK_:.(A}b >:dso̼7oZǚmju|wۑ]_:HkzK㞅oG]|ͧ&=P*Ѐ"Fa@2Ӑ-PK+0.PKSPK A`))PKS/4? BJKbcCJ3Nh)$k\8.\;;.… g_RɹK" ws==G)Q{u4/߁I*~6}+ H-πX/߀b~"}DCT@%2UiMU>1-&=0G{VA%0rkGzMν ΥNovӃ/WZ&QGURbD6Suv3&; ;ẅ[`jkdT}hb5T2SUh9]+A ~n%VYxM^{3ż؁ek]soq~V4q l`j<k?.{>4.W"jǎYq>h \>q}[FBנZJ9 {XSW1܂dDw,Ρh<h8k[g]?יs\y@EβYa_VpD9秉's͠jL}57UĞ0sOF#s^ϪwɳO豳Yiey@y(ɩ9z~ی|E6Ik8UTW^G d6r.620y7.f9>}mgQ[7FCރAqeV7Vݏ8~x>%{6Rl&n&z>G6Z0oV?5IڀAoYLRp \".)=>arw,%-rQ1*.)\TFQY1]* %{ךi~!ΊY_:߰ +?Wg·dupQߘc\qpb/(.|ϩyfnſW./Y~Wy?%ği_0_WCx_P:/v),zZp#Z]ߵ.~oi~37\[FV7+~a:b%!r,1.+?Wg!2Q~-W~9ŏ*~I[9VPK6u`$PK NqyxI hPH&(ȭJ m۞Y0s6{={f̬ogXS[C7>("8瘝9zΝ eX'OwTLt:>rk-Y,zu+a]։$Un399,"B$diJedYF$Ir0%hhĘ-v&I$ADN@ISBo1V :AD08޽{(6UG! "Lt:IF/%wy1 iňKD0Ƙ}]zy+{,}nw1PUʲ$EQ033~uB9k|(J#U`ic!/,]vEQ쟜099ug-9TJTŇ@--0Ù1ηt|].[#I!+ ˻7Ƙ VEQEA$}s cdY6/o/arļ/) Q9igu͑^CGڊ 9_ 8.^q@6+Ϊƀƀƀe h h h h hK:'HDH"H $c=k@U0b1/ D@ʌyƌr(!/ XB# hhl1 i"OiJZY<- bz4@B%O2Ps{%-8pzuB;!(JKM.;t.k ֔sL \ @upLۊWfr :uuEek4h Z]RvIk`"# ;ٺFCj5Bu==U FQk'%TEA9B+ϊE hRQxN |UODڬWU4ƅ4b}y|h@31;K4wߺ⒎5bD+Sb(K =^/%_6pVţ޴MYrsw㷋`+'=sK7OwCΦ3 }3Zեނ/~i]'eH8y[,A^Vdu):i?mz3ٿ{~m N/X~w hqg!L*]/ypg#k_8瓧؀T#7|n;>֝ye}rb'rU7=B5nUO^&'>?qk  |S04ןyp.□8y3}ɧvͲk8wơ X`sC56up>o7 yVPʲCl3n- &T m&~&-K.my q61g7Gb#|̒yZmZyA+kSٗO'%82*9)kt'%uX(1F2QQԄep j^hվj~c` F7xZm۶MYko"ƈ1 ;|T]446\ͷхv9kj]ׇUa[t:껭s(PFUΧ 377wP&oM*x=q嗿I!ӜIENDB`PK N!1)Դ̬ܼ| ̽R'L5aIENDB`PK NG[Ԇ K, SOXx2]'T Rk#"v 2~ҹq;, ze^ea %zb=w1C2εuY++zEr[kzS$z-16 4iF 6߉} Qx1_YŸI·&Bą@9Ἷ<') \}y~RU2)"}yca4AZkUx:OR+ \~ctb^,D čSR=֒ǟنg_&z;+" oVˎ+!2]DmD&8'ŴB{okMGUZ05(2!Q.p3,UZVMXx3j9Rg^A2J3/}Gvn(bb=-vO9}LIugoM1:o8'xWEKg iyiMd+Im˙sϾr[F>IZxC`)'{>g"%Kpp]5"O=1>rݼ7~c" Vin2i m$6h9Ā31jcF|zoddH&Z*6Y13fuJc}FE JWPSm !3MڍqF[ce^M"ls*uKl'''E=y H % H$1PlJ 8}={(UY(j:TUE9=1ƾ(RZ=zVo] IENDB`PK N  $F1Z B})" Z9uavOOi>=]d&{fϬZ7k #*oN3k}㺮Y>HTu2z)fy!w#)%R)?UVk#"c Zmԣ{҃Wjf!~RhiᓈYwߵEQ\Rq#HeXk#"W|sDCDo<0,øZO:ηEd9ʲ$Ĉ5֘̕%UUQ5UUQU{TUʲpr#">w|g,7βGEQؓ\"6!&xWCgY6  !=sp.Ax 1jURV@ꆃ1-ɽRjK1W/(֭[Ekm Xkx 8vH nDadʣoqq-Ci/V(q 2euS:v>[?H\>ImMW' s6ʂi 6xTԪJÙQ"AQ7dMɳ6ml}0Խ )q7K*7!P%e]RVW9zn%%xAD4E>Ad544-|H}\%/Xt}1iuqUs~> EK| 1 4<2NLMLŚ'zc ,U%KUIFM&{SW{>T/%SER mEQjOi}H>&5MZ+ 0woާ{n%H9CL$bsT4ľf91At0@=dVCf_VaQ vyx{t+Hc[(a m]E{NasY% _5OS|m[lK4~M L ZըV;]#G#J %;A]5}G98DQ\[6D^d6QJ ^~W;phL!Lސ@X{p޴+sv F~͕x{>OEAYxCy;YNxۿMH~MeG/c >ξ?\nU=cL_5K>-_/{-z|/`r᦯wbG>56?b?n5C[E1G#'A2<ݛIyYn'$&g3ͽ}1"rNH=߼ƅ2|Jp)& i=Zgʟq4n/-e.rq(/k^Q"ODNiuep? CW^BjOʚNA@>W ~ +;XZVrc_69+f~K!iZ+VdFӲȐ;C?9@dZӶyJ0is&ÊBKH¨QE !sr &Z-&Zt&[Lb`9lfB_LVʼ6⃧/꒪vƊMZD7 y3#k5Ť".M 2v튳su]1mb/dYE3eYs60ZBhTeY"o&aiRJoSJF/Q%IENDB`PK Nn}:Z{FN77@JBC=3l rR1nUYWv0ZRxV}%r<ǁD#31eS!]Bj"؈Q[;k-O g@cNmԇR+)+Q<}$^ BDE eoWf335(Sly_+Whe{/ / / / / /\]Ma{*g fb<@L@+VcEnǮۣSB r޽R4_s}gs)tBUQOQ%91T u)38lrsGUJ)'ְaնm ҡ9abTffjԜp)qUș:^*UA Q~lM|/}0 B@UMU>K)B`)*y,>e 994bIENDB`PK Nhʲ,K:UpXȒõ/fs] ~[n9㦛fssϹu6<<"2R{OYkJQ8vs bu4#1c$6iYx1gWߋ7n~pmֵԖ.˲?Λ&ƈk-!* YV_B td YaDbf4 RJSᡝ;a֭ڹ۶DlϞ=E=FZCĔІ91f_W»y4{njջ8 ֽwlۺk gYkY14441c-I~iX~GfQmιy_`։Gg5'9Gew=Ϥ1ZK0y1!&&'ksipx " V>[g]m(SӋBה :ietEeeL=Cݷ{C: 0`@ h 04!˛+%$IzBtcEBJ"$AP Dh3M[ȀP!8!T!2+,'|Lp%1)1D‡z*z+PQ /Iѐ~#E(PjP %9Lg&H@T)c`.TT%O(MEҊ!x*B=39[RV1ZbA ZP'XTf.ף! U%4bNT>H&">z *X"1?14fȐ4W<*c=y"RHD7UiLjf(6b#=S攔t>Il7"g½(G մDUvwj.q1E?Tkƫ4W45e1@^x~uÞ}ߟ^6є~D47yHQ/=6Ig2,RWi_gbh j2.NxOɒ=2z$ϏOs5gbf<Й,iW7UPўb㾠yU 9ꮧU_DEc zC/U$Ti^cPW]*?{t^$}ߛL]b XILE^)*Vl&cG=Rg_GwDb#{|b#(=&`WPTPx1wZ(IA@=gGg璟 VrT4; {zS'b0|Q/0f*C/rgq/E `?ѯIVuD < k94÷9[ԇNöo:},{xX+Kq7fۖM i-q m}={cIRl%O~-ʩȕ>U gqח곞?a\>7Un&ЏfySNF.Q.f v` Eۑ5DzR,揿VQNF.v+wlQ{2:gxR|F. ԋ>]#R3ugUQ/CU>`v" :7y_ e7pGYM[ .șcyк;7q6>Հs-s_G?8ˏA l.U93o]TnO}J|{/y _1*+`p\͎B {1`VF?&e6s^Cgg>@V$RQ~!3o/tVi1T>s1;p9cY?q>wG[~iqo^u2g \p6WN9+l_\hzX| .!Se(zNC{K#.,]z 4SdvG!O I-^QbFsR/'o0u0 ",8#5k Q})}w 25ϊY3k w!YdƒYGR3DSAm#Y Te RϷ̀s2kɬřz[QM+Α;G QA4A0_, AiuC-D[YFgV1g 9<9rp qpK:c)r$B$&Y!X!{x'-LHɐXkԋf [h VPvZzk6oYFiMxf(T`L)Q #YAnr4B h4,>d K|hT)R.W(\E+趋e̽= J]W 'y̝TvvVIIQM1Sb@g"%Ab]Qj8p6k>sdd)U.d#g faMcV{%eYn0Đ^OgOؔSY-RW5Ħw$j$i]5H+bwl{MnJt-Ղ!PA֠099ʚJ*ֹZ" &ǶTݖnm±QjCc)j];{7v[xh> [yf^x_*_FFF>eZׂ5U#u$b%2˰,9?8{/UeQgRsWok 7.{_c|Fv[qcJt:.^O^SةvӍ1 ث.vdm;o3~pm(IENDB`PK N\"T!P#Y-kAXzй{',ZMy?]"U"Q#~Wwи{,~Wzwи{'Vx~,.aZM]#V"R#Z.mB[|ѹ?Anh[O|4v3s4{@Umѻ޵׬͝ǘ•ƞ̧ϲ¼»cjtRNSDay.SSSOKTST9-W^__G^l IDATHc`$-\<$i R'A-J*jZ:zF[XZY;8:9FPKxDdTtLl\|BbRrJjZ:Z22bsr S RY RVD-ZFjB3-Z**RU(jj*s[Z;: kq0q)SM1s9̝7E,]|U׬]GP 7m޲u;w޳w1e)*IENDB`PK NYR%H, b$avisSSd!Ġnj|s}(EQuJiYUbwSVz-@kd #R)gR%XBTs JX NMb̌T}f R}k]j G3{H-@Wasss͛7nVpUԧ*3H4RBD(PZjZ9rh߾}""F!ϲn զ'8!<: ar Ν44u.7o[aW`333{s{ͲNsnt Y J]K)_vq:k~t w~G*{! `4X/ɾ)UJ*Nw.*&ɲ,#a!u5Uf>M0*lpnEKTotmN]~eHǸƉ]UpyOQW 87?=I){&+[ f+I*v4=]*J71I0X\ړ8Z Pk-@jjZZkjZkjZZkZZkjZZkjhjr7en7rr\e=2&Vm'X_..E VDkRb Osy bIN1ur,O9GY)nU&* 3E&If4FS}F%tq\>x,KagvN3ET 5HfȆE-HմD .Si%wF ON $/|F9 d>=;}"%z) #P3tpGLK'd L4)iXf1TK̚1 >BDYȂy%˔yy9Ǒ| t-$gvJ~*XEOLJR#K\H5i9GDԄz*pb* K VlG!$2i]D'3#t2蚠N<ޝkeJr/JDł8 F%S"3YDt=f:Gc&8Z< V*jRcGT&#ˌ(Q!DU[> E%M) *"5Rҡ˪UqOcΥ~AoЌ @!d L `8yRyAxq{x % ]YAIɈI8. 4TeQQKR &Ej@Ӝ2k`$-ݒCI(aDù̧t0̏ɴ,;(TIJjV-ziPKr)գֱhȪ *RE"H]*'%|R|JLVãc XfLT^-Dv}V3U<_[OoZh| ӕ]րjS:l1[qн$ҚT4\W|BU ;2l,Zx089-TBk*L R9 &U ¹S}^|H*=cĭjJ꜏`&O+egя|kP!.(_Q O'g^o3oװV^ [^}TsO[_8˺f1еgywJ]8vpyXP f?=)^[h{]oOs.'||[J?%q'󗷒bu#eZʨ;sNpa+F`Uclkjd{u6&C Pk-@kZk-@[tb_9"EO'FZ֌ kK< ymU.O~zCO>YzIxNL Z82_ȋ}?W uRyRQSW'^ZV| wlb7'IQ[Zh#}vfj$'~6U*\WSxųqշ̟N_4s\ YGaT'^^lt:v(#̶mff05㗷!"'[s>y! \ ^ $qE@9|Z6nc +w~L>5^ HmxDʟo#s{ qͻ-@ [g0_:}Mx,D$~k~.7b5Md HCs'y滇HD {~tdM+X 2Bp~2npz ??Α q⚈Y3;r)?.m+gWyWW%p3,&BDZBODP!c t|k{Y:x<ϱ}&Oy[5ejsv隳G=~w^]6̹v0-ن iOpӖyd?y[>]"RȬξpιqjo讌rPrZ+L.?\6Ncg8uKxvݱt]qj3זɟ- v/ogmSl4X8vp}{7r;zs dz-3K  Svfo  ʀ|68OоE/wLɇv0;a^ZГ瞙?3=fw G_Zƴƻlޕ艸';qvE=: 2- lٓOf3Y>sޭ?߯Է^Ti-<@fƮ[`zs€' ?vy[σhۇs+i *  Wx[P\vٲ+kfL|w&8K~g?81iwA[\6m 8/4M|7>w<1q?(S[J5{FF (x>'o1$>neӎ6s݆msQ qo21]E?x>H' Nxo3Eԝ̾g>8>3?~3Gxe)66hnz_Bp})͟rE- /iO|w{]~LD|oeN{RZnk+}z[{"Z,( Ώl_uPu}y~k-@4~lZZk&o6jSwH64Aktz"c/rn\n!]盷̎lcWµ?ZZ> 8{*5?vMk d}]-"GOXИ iTx(#V\8 Wo-)W"iU2z!7'պam~>֤)/R3 A@ư$4࡬93LhQ.Pi-w؛gT(1"dkRm;Gkܘa,SWJ_VwpbCDG0pʰKEp(`V Y}NS]J`;2ȼ'^{{DujOi.y2Rp+ h3~)`dT @Yj'@yɂ'<C \} SJNm>7+ *xr!P%踲҄P=HHHсsP8zRmTA7KJ)#Yf,3:y9 ]O g] W^Ź:!C-NjbD]N'4PT:!#:GB򎘄ybb >ObV)1FSE:5@ge9YB^Aɲ,| qF5@1óL<5))IF:LeB6z)%4$&R$u:R0hf-3E dYs|m'@HՂ23GfaԪRTuYHIRrYf%hI/]j_LFڠY@GJY}Y1:WK)%z1*YJi<;e8=&1yHE7 5Tc7\wRAwO>;뵎zh޽ {D @̱8Wr__֘+>@WlL@WT*6Thlwi]VoU6S`sss{333n;T1RTra: &|\ KJi 85 kNGfE'jcoٿJ)|Z<8 |cvvyVκy;G^Zs4^L Ūu)9?ALնf'{/y]?ll>uefSJ>hJ*;(~S5a[})% ڥ/bJ4JD6}_y衣P/)uȠjIENDB`PK NKꉿ?;D<"Ske16wfpcg=x7o|7"sHJ0)QǑSDڵؘDd'ՏU;~,T?rGn`0#9r&O-DMESy;@WD):UON4@57U1t ;ѵk*x6E", O?}z={DDR(9fϝk3=sz\=zcH "T aW+P C`JA2^o()tMO@wD3]p7+ D_FUsZaqc rJ\vmy6b fp^zwIUYysJGjңRJl$PU9v3nfwzv}˧e8~mǿ5cwkhx 3O?W^yQoܸe#s;Vkhωhn/o)7@M9~zlZ aDO=eB7o޼R}U~xl*88bHaYRZR8b+z=3;Ծԇ?|i__%Uxy(lmz",RJgCDkqzohB;s~7"^{aׯ?RږRl6JATA]렾V~ ݬ]ݠMsxRD~3?/ T})%9/<k8.`E! *UEE~ڵko)"RJ) ð2*eY1ڥ}3=p uK=XyAZZ׿)z;~H̙ⲏDE{Ә2햇]ku6]@\% ð /p ~Uuu:@]PWuu:@]PWhc}:_wʇ IN.]1=3my{$V6o_9v[ Zoפx{ ,gTEUNip*G;m!6:N47" sS3 <ﱼo U LL-SI22oG{A nWū78o[`dyGI,_a6-z]M <<#I UBb 2 %r()i:1Rp,_dd4*u㤞`A HxKBk`Ә5`~y:D u[HN9Urdl\())R02lC! wuɫƩב[))3ȆAv4TxܨnJukMTk9o!D wiǚU6S!gږs+ƦC <BQI$}m@}Nũnfj夎:ՃjFKEN~n2Nێw;Nv>@Dɓi9X0qHITwd.}Os-EWFoS֑ՠZ9A̗5<jۧ#'fPLR)9AP2š`8B&T+9e "0{acK*hN#Z(ޠ@澬TUt4,Q1$!VR͔dC(,)U7Fw̢9 S7=|˧zi-lsnTD@:شnjdN2#W $@9=d)6O>mTqcN+w򅳺NѱzX+C΀n y_zz q44xrr?3!tq :@MiЛ'|~^a@oz=LGw…k|WEg7[S_zaC&]U+PWzuu:@]PWWuuu:@]PWWuuu:@]PWuu:@]PWuu:@]PWuu:@]]PWuu:@]]PW荒<@["!hRߢs|z ԯ+< N$gH%a;[jr|y~ |Y}d9H҃ve!jH9 &.9EGT@E\@K TATN-75 < $UTFtr"p9>sؕs˺9OTJ%O3Hzt>HaN 9(EP -@Sjs@%ERG6-%3<Ӂg. !'%'$Ds'DKPD\Xɚ()S, N4A8L ")MH$hO"(Yw!kX6N&@n0<ɺz9H4 1O{m Eŭ(4?7Ji@HZȹ@UIS [rkާ]<Ý3AyȗTn3r )G.Ex(&h o0-c=nXl^;e+U"FB

R'_n SLe3\iJala.Fmd _Kga1Ar7pf8^ͻձ+"~ꙧwW^y7n0 ?4;t;ܒ*v}gY=63bnxkyA3(iz'"ЇZ:}aN3K֘]2rtt_4-gXPs'Χ{ݜh)xGy櫇a?IENDB`PKSϴ3٧(8l?ƾYJB" Ogz*C—"rw|$Q#o 3!R˄Тj0"Wqg!S~V9M ^ӓJN/R9"㊖وwa.Tz xʻ0wrD9+!Rߒ#E}T@sFY޾nP? rf7cg5"'ݾjNz)vȧ1smFԾg>+юRNqށWYGf:Wn"-nu^꼬b|t7U5B:$Ŝ'ZW~PKNZ! PKS]qBpGZT*ɿVHیǚ;a;OTr]!jZhS>!mxa蹩A:;T.b}3i!;i*ؒ|(k3M6cMNCe+ V`ZASN4MmqA+ F[\ }jn3y4oZ"5J%B bx͆72b{|?wa=!Əp|3o}TѣvfNT5Ou/5#ZNY{k#o]P|,H2ڿjVjVbghWs[R8SJkR-NR|բ~F)y63i8eRF)-ceo_zQ}/_W􆬯ԧdnC9$oo(z^}klJO?PK6{$PKSȽbFƽl{6lDgIw Qv;"w oqGmtэW;iqCȲ}94&BD3Z'x1vv4Ǝi ua!@~eTe}uQeWԾghoY[!0T]qJ^#ӰJ}[&= fN)?+=/幜sU83ۅa=PK.'u$PKS[[:!N@Ҳ?6AZ-KZ'EpMnP@^2RNJVM5W奼OޏkM5EgGo1}njNTXi6LmTQӷӡNKO{Τξ$j_jGk ' Zy2Tcs*z m{?D3H):RhD0z:>+ۯUH:SU:Ӣ}F_I+ib:z>FW~PK mAp PKS"pO{'gz1ڠ #Z'O^! n`vS0/;|_WNCyE2׌NG*VB8"[˖$"dʩݖH yZH̔ߊ2,.a"gQLX<.ƋQE >'/`B4:PJ棸VkGwҔd\|Y@PcG falX~b+>juhW3Uueyh76]=߷9N9Ƈo9Zj g{.*rݚߚ;Ws~ Gge/}U5 ߭/5owwc{ 5tPK `FPKS_bgb;@\.s.YRI1Dj"ƈSܪ [xl0K )@6P*Y|GT.˯0OmcEX^j5þ9CNԴyิڎ;vcɘ=T|q﹮C>2XcD\HWX$>[f?T(:]K`[~4+ N0|n<6ASwwZCᵢh3ҍg{ݩ=yA&>3 ozRb|M9Sm?c_.c5Sp;8诃?O|i?j ,ჶ>9y߂yY\%iҭ.㌺/v?$ ˉe%RJ?kˇ.WʞDj"o#彝KԹ+Q1v__*ŮY^[fJ>)rJ%ձ77EP 7//Y gWyZۚJyg)[>%7PKvXjPKS\ryoL<"tKyZK[iBM7X֓/[/PK쐉qPKSY/ս$<'ːLLd$4Ƹ@f^ B9ɱ-lme8Y-e΃@x\q%OyH1Ǚ30WbgG|? B'Է3t 5Z$ڭU𰎥kgU<vF-1b<<:[ۍZsT>^&nկ([^wW(rrlŗ/PKhc,PKS(8ocg:dz|҇Ah'ߋT5w㘨l:+LIA[.oWs33kfپW99 G=磞WBߴfg=-z[*m>`Ν+hUs_ ~uWKhRdz̴U{S[652cZoPWO?-謠PKw2PKSlG7pQ'd1K膞i؍;s$~ ރ{5;пD j nѠ ]%Re EQŚzc|i#Մȿ_]EJ+iu|S,]ߌ:&Z1֖Tl6Us5kSjޜf}ΚeAiJ پGz:[yl'Z٣xV'iz-H.-R㝎t):THJ<}m=w>ii7V>zTڮn^sǶ.|{Rzk10{ i9q3-wm%FwE.rd j6[ZH]D紹Obj [Hx3Z}080>c\ay?7ըO1*qo?W`aOSz(Q+)\0W;%|1ZSsyTV/]Ȉ?LyU8YN%ųYk.0X{zj]Ly&]ɈEpK0_VF[R|\iһfsS3u.;Z*ޤ~~fJ?[M+qgy6qE|oPo2pJTvnhFqhM%8?(ųPK/8PKS1ZmdVfs)I"FY6x `>#ps,5h4faE~XWzlbIV} z=r\W?(UV8 B)C CjIUFwN0,\eЙiZRqw^v<=MBvf:xDG"{dc,^3tC;_%?@ w Y5/Rj-Uy7JJi֊9Z9GDTX?_f~_ Io[-)hGA̚7r2b=Ҫ9eoo7PKoȯPKSI9N'OB~$+4@)N(*"Ir3۾S-V̫I,6ɷfg+S8.R8[z[RdD~Eas#"_?w/̌kd:! Rnxp2 s[o;:otjUZ~7'PKKPKSvfq7qARdD"9'_|7>NeB& Rqp2^Y??PKVDnxPK OL\d} ic_launcher ic_stat_alertbattery_facadecheckable_list_item_2content_filter_item filter_form filter_listfilter_list_itemfilter_list_pickerfilter_list_picker_itemmain message_listmessage_list_filtermessage_list_filter_itemmessage_list_itemmessage_viewersimple_list_item_2filtersmessagessaveBlockedMessagesversionvibratetextViewBatteryLevelTitlebatteryLevelText howtoStartfillSpaceTextView closeButtoncontent_stringclear chooseContact filterNameaddressaddContentFiltercontentFilterViewcontentFilterLayoutmessageFilterList messageListmessageEditText sendButtonlayout layoutInsidemessage receivedAtfilterviewdeleteaction_delete_allaction_export_messagesaddaddAnotherContentFilterallMessagesWillBeDeleted appMayNotWorkapp_dirapp_name app_versionbatteryLevelTitlebatteryNotificationMessageblockMessageIfItContainschooseContactFailedclose deleteAll deleteMessagedeleteMessageFilterdrafteditMessageFilterexportFileBasenameexportMessagesexportMessagesError filterDeletedfilterListPickerfilterNameAlreadyUsedfilterWillBeDeletedfiltersWillBeDeletedfrom fromAddressfromAddressAnyExplained max_versionmessageFiltersmessageOptionsmessageWillBeDeletedmessagesExportednewMessageFilternewMessageFilter2newMsgnoAddressSpecifiednoItemsSelectednoMessagesToDeletepartOfTheMessage pickContactpickMessageFiltersreceived saveMessages saveMessagesAndShowNotifications sendMessage sendSMSFailedsorrythisFieldMayNotBeEmptyvibrateSummaryviewAndEditMessageFiltersviewBlockedMessages viewMessagemessage_context_menumessage_filter_context_menumessage_list_filter_menumessage_list_menuHpP4HpP4HpP4HpP4@HpP4LHt4 0@P`p          H4H4 0@P`p 0@P`pZZZZZ !"#$%&'()*+,-./>H >@4 0@P`p 0@P`p 0@P`p 0@P`p0Y1X .234 5!6"7!8#9$%:&';(-)<*=+>,?-@[A/B0C1D2E34F5G6H7I8J9K:;L<M=N>O?@PAQBRCSDTEUFVGWHXIYJZK[L\M]N^O_P`QRSaTbUcVdW HX4 0efghPKS~w,d2IX!AaS  Y$3AwUZZZkE qmk~j+{ޙw&>9w_=sLkxSVt7t_rְ=Gqo|BADL"mCN%z Q@hI4W'=y/рiW,  | ||||Wy (@ P LXl.`^9_C4X ~<x8| %&'&`3p9c&Vcg=>%!9؅D`&XV@bYbrZ[_/_Xq)@ x>Q74+X+| d]Gt<0X | h(Pt?_yEM?*n*@ލ+ h^> ! ?!:,ۀ+ 1Kv,2>] &@3pp;'/agXnn/;[!xJt*` pp,+3j`.X kl| g'W}y` 0 8 T @ \\ xxpDX4<`7sy-@LNB`3ppp=pp7G`&yÁ@5[w/_·v@DVg?^>0F}0 Tu@tW7~| .\BpO. wwN0 3T&`RI0 f"F` @8~ycp&Z$>"Q5L!#,/= ^^oooowC{G>O3s//_|  jXL!K%H/%WJx7Uj ߊl e+ȥZMiy~S$Z p@2  Pe<ةdWfr|.-9c $,B_%a|e:c^-IW9e|^|S1.s_!Oma._I:9N[RuU2@ 8'J$ Pf"12O,$*H&la% 'Ix-G\"d [˓hnk++qEϖ>6Kl'ϰWylgI8dks|;5L9բK QwDxU: _mKf,KJ&[+[mڿVe _u527t`Ð~cAMM7}dZF |4Sz|^^fLMzJѹI5&Y 44=Fѫ5h* oQAkM>/(b0]E:~>:5f$QW&KohO@E+iɴLo7u~ۉDU`G7QCӟL#ɏ"j2ME5:!q~.`17B(کڋI{q4ChLߖ9#zߍBHP=Mߌqv~$BSCnQ""*JYWTLx{\,g'lN?tEuH*KSJL!B$&w'}-~)\ HBS7 YBs/}U~#BMBg],t6FFv8>7CTMBQP-' $tB ]$TuB녆.04u =VACh3NP2bM8ݦg|g6:}U|+=6zD跊>HOI?}F蟄1djItG~ ͧBQ]''ӕ*qe|L(EQN*r=*i0)~a2LLGh -Ľg үT4a*ڟrE=&*Iݞ' \P3~XE8E;9>XWo*:X|iǏY iPTOn7g%]hhCE=Jp|ҋCŗBXo+CvFc~E$xEHI8໤jzVb;>$:l+F93^M.3_LO|Sъf vHv%z@r3^5qw0x|7ժ$OQ'E3)-eH3h]Eq?t*My@Qt` :tߝFTY2rrLϡH Bݔ+whgQ8l2+Q/W(ׯ\ V`0WoeSq]J&SrIC=<*Rt *I0qAw+iD5hQ{eE>UTws.,n?RK=*|8L' zj!, Bdk`q"ԍz:֡E&ӹt |7y/=dpJ_ y`j|㦫e2@MG9ECCR0j5@ª\EWH{+03 "Ts:=-+OKM;NRtf_98=H0_ݥkBKgߺ[ś!k?kNR4LA E@+MP~/n;x89* _ońO1[LĄ/1!&ɼc2d1oLNu-B7J|#8'"_$7T|3ݬM9mmgm߶FEW(x 1E5  mnnn9**rGފuxR?%gPQmGou*UeV_Kw*~)sϒ9~gzlm?Psn.]gvY>e}z/ M ]֩~֩7*zZ'7 Bz@Q^=^=^=w{dzdzdzdzdzdzdzdzdzdzdzdz%GzzdzDODVT߹+ŧse=vv ϥ?wvvwȼ9}Z/qqqq'|.c1E4dAAS0=_] BzЋ^"R]%~K>Aw(ROL+?j;C]vrLj4R cEP@{hKݹ?AEB4NT*NNUtZd)z}_zkwSCbEJZGHu\zS݇"GW]!srpVwߣ+:}Zn_)zJW?/VԤaj妚="@ե{Ѯtz-V#vgP9߱B|~ , Z!wH [~PhW?|~'t)5]V*0 kmWωy&mV_%]8!w{jVv~ z H'K[>#G$d[#oh8%o[L{&D;|D?xW88J~,Ο]n}} M@ǗZԿFhȿ]ϰoqF7HqXoB~_t|k93旃=䟕6?wKiϑGCN8_JqpU{3Fmȟ~/l]wM/Oh>w~g$ DUw]9iA)%asXh;:o;rIx)Vt[8p;MۀO+1Im}~˫WII\&Nw(9cmlᱶCqD X,;]+tV[j[:[&[wHwX}Vg/J߶j i ;Mm:Vh%B =SUBozjT/hk02o.bM h["̤vG8^dK`HG䳥ڲq=k'=16N?~_ķ-dS(ԓEZijoRS:oBuyb:+Cr!>)2z#͉Xe =8ô9бCe Q91&OK*T|G<1 2_>2y=ߟY[w)6:'Os]^*,Uftda+lN3v{ z?SY|ʒZ?Y9}aK$}?G=1|/y)ՒQIr~5dȀ.'}bdz\ eyqu@AH_K.~2Wh曣TXY,l6f㜓;J(g~nDJc*Tڈ8}g$V"WQ_~V.$ci)͡P)fcJ=} kv^'C$kH氮 n -%7raZ)ܡq`YAyiYnzcEBp)mR'j+BG?21 `yT3g f`t0k Jx0f?,xA7|g*ݜ'ǰ\򣾋>#2ƦZ' zrm<٪*/WJz=`1Ȧw1usJ՟}vOGK>Iq^]li7ܫumx9WJ~(8Dv'k%m}|ǓtoMwaF)]ݫk =>ofޥv k?/%H1ԾO$bò'dclfl3!*e.u qTRYKNA2˩ӆpvAOlvT-?O'誕P%}Y&q8qTUBGM%M=9R;uNnksU @!ۋa=:"r&QɻNY }D'H0Y S9^rD7R)J ,<}n:sRO'}{ ςy3F)eiD~wC9?,s6( z9FWpwz;ѿ[Ë1}kt\!/ij7ӟ{c}GU%\w>Wh4Ú()d8\ϸoӟ{1~F֬!JjvRs{Dj~JjRYʳ`zTIԊkGeQlT5*540a`ybռJj/6( 0ЮjnD #UM^Yr.kOܘG@sU9Wn?ݧB#N9kσ6R' uɡ+t 3ODOuHQQj_T1tq+B7L/O\TyĥWNrs7sޘvǒQ9d.џE(kW5H<1:|M鑶1Zؽ:f}M"A٪yV|?ygCchyBrιq,]hh &FZ#yU^F0TrvsvypuE|G7H4,;R絽؉.7W<7UaI CɒOt)mTpp'hϳ^lubLfM.I#\̃7\/+kǩ=Fi{~#oS~]!5'Np!E̢Ehk$eo^^|Ls ^юr&}T>N<%O>yL[ m +aij\cy؈GMR>#8#d|.B;L~ `ljd}4`թ70U[{BF;]0e72ʞ._~?RmK{NҔrnuLI?JOBܪ3Aє8#zuZӾ>ϧC/=i1Χ|Zf;<)S*Q(*KFӨ %qQ=X݆>t`Z;`KLŴE%Zſ!/Z”žϻsmfʹvbUv/Ԧ&L%/Zz)IϢdpY 8ELQ(zGd4`h=5ߢu'>/Y_)L|J^%_ Q)c"Ka0un׽sdMY-Qm02۸eC8,4k|j=we%Qe^i !EXS:LLTiH+t%G>ŕ7my,(j;lO^ڟYϺ 7?jdp*-3%8Kjn͠|˺ aKR˓::8j 1+NW;P1BH UT:x;:X^HMNQtքLJco݉Pӗ{6h>j!ע Zo6-06[~K.KyҥsK7..Y ]ERD5h3Hv%˯A[ Kp^%x<§3_5uq9*YUB<ެ oc^*T>/1mdķ141^ՉyբY)nH;KKx:R#?~Y罩): L:[g+gR,66Co=܆78tWfٕL]ԁ.R'ZVДJQXsSx;kk =:ej06 N?Bxݺ, B'V@F9XVD˘ʣU0ZgV:[7SɅ!%3Pr,kr^j߶֢>[y:[SV3D;Wv&%Ymz6C3}GW2(ab`:4i$4=wrPDZ ֽy XޠӅ2:ѰV̟BKaP #>Iy'?.석RH~Yq=]ʃ"5&eRCBzLw ĺ0O,,hJX߅?e!&n7*?1'O uo旵^fchh3[I {浇/Zr^fYɣ|"2GU&8[~Qe>v5u*_gw{Enmh;KZG/_ȆKDGhUej.PJhEt OxQ(ivc iʳ*c?8_U+ؤsWUd}*K^~U}y a{]}VbPkgXw15I}eF N> }گ9> Osw~aQ[,7b P / (6)`Nw&J'yv?Hёk|ˎY4qVg[X *_3bjtZ,%lezCo ͻh\Jݴ_۸ 2Zn62^6ѝЬe+eW4(t_ݳ,1꺊#vInO_IE/w@SMke:~b߲{S<߳yy" ,O=a@[< XP*6΁QSWBY l~1W*KI%tRY=EIՔ ܰ (K#CWjOWK9 g3Y!l5"* ߬Z6 m&q)v<;/;1ٟ(D߿̨}8?a誇x ջ#YW#}Otr<.Si-Ei"}r։T-x )E}7amEOӍsJLs?̃;w@7cjF?jOߠ3H.^2J~ό;EmCε4ՙCщQQ:sc AxgGxBS.h%JsɛV)|p_Cef7gH|}sȅ5uIm%9@~lr^x.O#x&$9n3:e} \֧8_O ^-^|HF~LD^[m+^9W#ګh9Zs^FK|9i3ESG|D?}ˌX6 u[iVɴh=<.dZp uZ^[5:#]~6١R8Yb9uqh oN>]~؇ϩ_F?#/O|Lf^l9 ieؘ@3-'؟5|0gG8lXtqkvmם|t<26ŸqW!QyЕ?b,t*>%c_5.Ik.}nh+C緩cX-FrEAYk˳g1dz a!wz?%yyء/Xn2+k8o B_~^#/0 x6֦i>hfM%-o؁7|X>C}|۝^Du im77A_we_ jt^_~ կkO~]@)?~^{/?JFܩ5 ;{BG=zg-Yޫ {õߤ/ όxFJiߔz5iosrxJMfTZrҒ%0'D=p_kMпGVHpC^S'F`*KgC%X},+o{E෽lX༧$?`R?:|xyC=`_Ťu,x};U}q[.NTɅ&`We||@>4"L:_8}Y:Zcd}PrpNss>57f;z?2tOwB/8^pH'2?vP1:vы΁2 >9P =vkJ벮 񻊮<¡ŕsU2a֗Nuwmqw~ lɮ],eoB;ƱZy2R[__:ܤN}Mݩ>{qgDZ^mڰU:=}i\+!GHw[ׯY)tӱ<{~W݄$h=YTbp9g6յ⽖>Y9ɩWϚsQ8%[)>9y^?B\6[gh= > ^꽇Ncxn)0ό[@Є8˜0l') J8'pG+[Kw X/u}_2;Ra[z; Núd:A ϒPfGݘ7XWo=Mϵġ8^q*%J;Z=tB'߶$~ҏz.ǠYC(  Rzs韍'F`![9fJW\_4l.Ta5捦`Dv8Mݦ/^G̹+rwnBky{Cc'd92]|8"7.t{x377? T%Kag}~o?#`{7n1RT3w22#[嘾> iWu?VtOWn{Z^3Xo˓ǜ7;MggS>Q=Ծn4GjYX<KP7Vhz-ϸmO$>|Н|NkQ_ 6πVV3c:R(B̋oʾ9֟ c˫A+8+m,%C=^ONVy򖖃zi$߷ 8FhM;F55kj_\{[XJos%[}ڎ}Ɯ%VbWQ]?m-)Nawt7~״nKajաj?ȬٴjiJԸMt7db[~MY~:~Ȥ'3PVsUYu;tmV68BhYx]DS#9#&tt]cyh}f_ |uܿHogrZ^ϾzT~[ ܴoپccw@co9)6G"o9f)mfOliBVMT7Eu.PO tde';g-:u(F)J /3m}1tm.y &"p*] >xӨy%u[a{kof ]ST|}'ř©Y4n+A [l ~SIOudA7/!}{ ^/mr?J*oF!*:J~r{xe6[w:}}˴čxNb\Tvn+ *̘.1t. gq)gOH)?1? tneUS՝RwZfG떥eYj}(l ^M-+&_bf+: ?'-~ɴNэHuZj?wMӿgi5 iエ~?M+(~FuNOKN'MOmy.;-ִri3ůNk&ִrwI?)-~0-qZsZw>f/1ZͿ2i0Gh8c]Y^g ;BU3tr?QhBPa:Shm9$*6(tiIw *dVYia(;J_W} 䓾-Ag~;ސF[ԡ-Sc['侬|u>m<7]ƴs|lb Sw)[ij}oMfĸ=B'H^W+oڸoL5OObJLI %iɈ{Y<5v B3 -:JʌÚ2ӥߓԯPiWKl[Bw!朒,/Kȣ^BOK*+T瘕Jcfk= VG$FQpk B;T-*l.t=dGq|GBvJ& $L2Xb,@+]%cnѻ$ T747w<\,C7#.Y2QoB'DαMq2ɘzIɜqehioO" MM8O>j啡 T/m_]__>2ʫ/lt݈Xr(|ѢښrU ʛ]Ț``eU,j -[TMx<ܵyvSKSkx캦MnkoFV)JM gԆPVY01T^QaY\*w1)22д>X>hYkqgI[̙Hw{; \Rն]]M[:@@m[$U۴92'ˌ]SUɕW7.(_MDtIu]=+ϡ,EdUՕ5V.]XGU5!n& 몰3*Q7D +'sv-gז/Akٳ 旇QCӑѮ ) < )J/k e׆7ɨ!\55z̚ZrZ1y(;Yj{^mJ fꝫ<1Grz"xHHسCJX݄yk0v뷏(kLv9< Ca"X-uʊ`imjضrƵTGZڣ1X(e,tlj"XyidhìU6QH}ۚHS ϭecy\[t 0=;7mH7E֌+G]jKwuEFLN㍘L\UG؎ɷْ7;.mF:|(3~[uT-u[uH 앖xSo)u' 룀 K54qRjbRUG4"-eF>bxJXim5oZZIe3Su>)[Ex*+bKϮ䣥Wb_~:o#yG͟:Gl?Z*9Z67ϑ4tIj~\}9SK{U\kq4G>$UE;z V`tu|B_VQ5Cߥ؄Vlw+ž .{UK]O^JjQBt +ͧ s# oj:CmkGԬu7(Z19{kd~~}w{rwG6t+dureժ*/ +K,x<6&O5Ur;뷥, ՔעP6`4lŭ+JI$W/WDBmSAJ_/g0)2Ӳ폆r,yE啧4uwQM)l2DՕϙ_\ m\ .\@:];7q/ O]\]wUՍCsZXVJV]^L&Z, %26p[ %գ52xi'Zn D!v,Sy(5~vW st,HJwzI٭mX x{%uAFkOΐm3ò C ;QS˅2oSw=F>MkD+ 0_?7[`c&le +KV0YI&qKRAj\]{b*]M12VS>%pMdhe{S7"2N),V(.otn^CdɤxruZ"^Z4ɖ(3aZ&ţ-ߞҡG޿w. %:LFRwb>N3YS8bsM+:[%l4Gc8V E!b'[JE#7A[)ouw4n&L)ײ-A~끊8.g< $WlC#TٗK͈QJQP+\N.G"5&Wqwd'Ӿf~zF$= 5|ݳ!ytUZ?`k} 'pHRQj ꉡZAۄAD.wë!8;e%RDb&8jzn5G!6Zj1j"$]AYÌuR,@yvϾ[_Jznm9}16i,Ӟ1 u3=a:>I?b<|<˵ё5H6ļSҦ-ºM4|vQt+zY,\WMʫ6vT`fQڠ͍80 EpDlm.7յ3R,sƲ6vǙ(Q?T'6:2_~:VyCoŽ湥D2ݔ^FSܳK,&tf6% R*)\K䔯Gq#-ÚGr;%:31NNHdIMtQi3\I#Ր]#&GOiie = Z{߸uuQP%I:D̄79Oc#u u7FcZ+rҚ0jJp')y^:8)w( [g;]"pЕN%뻭ӝz^V'Hr;8|Mr=l~ZFNoX.чsK8f5݄4:1TSGvWLE[ܦhNc^?(N[xǜ4~~z´K0״G99UCQBc[Ʊd՛zP$X+ڸ78*?mV :Eܢi3+u-F pl-s%>.ً方,-xZ .1y-nIa–N/?^ LvDbS=/&ig,2Y`[Jy'n4OD omii.YfK9 B յO70HH1eL4O diW<u,JBniYZD6ѢB,O=j~ vd PڳR|cyXkzu4TΊkV3lĬV 9uu:Xb<TAݢ ݰaTnϼ\#% TɑBE`"ultK̋5N7,-a=,YNrS)g^j˰oDu34~O<=wK= Dy!Q0F8eUGEg`<Ѻ Sm]5v,3"oڔiαZ.UӻbEN>o?=H?~7Ze:rӡFN4S٭}ЖPY<) !]ZsLJ1ׇܶI_?5t$b=QkȁpR㻫ͧrڃ骺941tܴ';WFMXnN'H5G}V0cZˢn6Ւ?d3LYlss>k9NaL &h~DWpٱʸuɤFW[eIj[oc7nϪ5UyLӏ*kY'}-:]o-Svw9|n ܆ӱ[l6--ݒ$xůQh ,Nu:?lх]1^AvC݂=''U+:#f_*O pgE_) CTL8^ i%=̢8׉]:O-eG*ǭ|5nM GAAЇ@B= .^Wl*l,rE/7٦ТION]Ju3)PZZʚ5cpXvac@:ů^PFc k8e+3 %1׊ƏxWFCn!^Kix-D?ЮN!4.Cd`Aɭ. $=*&MU]$tgk,|b $Vpq@}6b[31-$QE~# :W̕[dҺB:kJ>[d Q(Ke,aSmu AR&(&8W4m:KʪlV p5f JŪBX5\Ƅob45 ū OV ICxBK6z=J* Vx8$lP?A˗nGUjWǂLʿm(b!6Q~%Rۺ BIl}}zX;o/&#]pw~#8ctp SP3؃iP I[\ʶ|z,+F`;i}dzAAusC_=!0nMmlAGʂ=GqPWQMA]UG( %9l lYQ*P:fEop.G.FprH~VG2SY†X{E|!w[zUY |W&y7:+},kG[qdՀroc+bcyh>d!k6\SZ1[D`.Ԭ0@(`l?WN 3',c|m4h4]p!-jJ{:-OEY^kǢ JSZwCe_ӭ9(w՟nmN#oyEn0ʅlר=bHA݇]|zRPÓѯx Ww^NOKAzG1 0auÆdX0:la= Ir;O%/p(gk0]Wt<4Oʋ:F^ONoQ`iqke_R\{c'073Ft$0!Mbʄ|Ht۽{[#2Jj.%RLʑJr# .1n=OX`'̕9zcMQ3^dEXXoKgcdR4 Y AGVI ,UnP߆ *pA%L+ݨl-浯Ww+E8q_-J$~0M{7UFk a]:_1T P y-ZUĀX8Wi+=)li]X\ѱ %IB}}JD6= `Py˔ 61',Խýg7Fۧ9= Λ^C7q%ISMM 5 5da\kq beAu>AbJ6L+@>q.%0@-r|9;rv6U[/j'}Zi91:F (~i@Z~/å\;Cz`'RuZP`#F}"u.*UO{fWgV (ɫprRؘ]dRhB1H ^)ֻ [ fjnAz6fB X5 ' hQD7 OP0,Ӻy⤰+^v) rްa ,r:F e(Y^$1$}&*3heMD.SFsPvR{`Zxw~]8=ckwe!Yyƒ5T 5)x s^3HB40;D2A 46XaQGsS&Ļ(|k&[ ҒgX^ i@.9s OS\!Ev-!(ВGok(X٥W(h6-Z4f'/ɝ |vX<%+й|Εl+,<דZx8ݍCHwJA~$,u[P_A*jG=R #wv $q\y܁6i7rJU-~ʸP`W3) bR(B&^e)jp|XM*w9b*hptj>j_(Eap?3 *th8y yE~va^٭rO HFW^W,YD&@ AS8S1M e by&Iͥ2+ `&rV! /'n)aBV8#5` *6< b王OkQPNSKl>F&58wt ij@w$I$P5 5x0pya! $ hFE7\;m亲%=uCǯb(yfgџw8le{[[ov9xwrF!9HhRJ ,פoM)Of|订Ewuu-JbK z "H*GI'^;o(]}4#RupB&} JP$\$$Br)1j\,0^##]1~o@.h"E @><#/ 0# FՑazw_yGEguGܹ8 lAu D!JA "Z$qı,ˢ,˺lTԨQQ MhE(@&P4 MhESERZEUxEkTE\QEP=EUQc1N&@#}6B/I,g8G|yˬzY}Q}8B/+#N>Bʏ # p*E <+y !VpTwy`9{<=<D0>[D(]do@G7FMqNjk`[;X"sT[0C[˿6I [" VGo`n6%rspFAo?s>ЋZFA̰@Q պ]Vŷ|е5k-X atCNQs|ްQ%q?_F|tpX05q\S sz"!]XZw'X|bكq1I"9H\O?VO9l_NYܿ^+9]봸_!tK4"XaM"{&Qj&5۫'{q>ޡzB=qFQ'c;禸ia RrmVf"(}Y:B=K*{5p476_$I4E0/>u6!]O#%&;qWM(xX. ,iܠgamjIjی&l۬Y$+Ȋ}5+ӷ 懛̚ᘄ)&wZt!xJÍnp/ E(;^> ddȵq^#ּAA!d're7IޤۚUZ߾5]@o mH봘]z]v!?!6f܍c.9^ "meFNGzoGlsq}T_7cޞbJHC@6_Qg~6#Cp 6>$B{4J{ >Oe=@'=l^{DGz׿};?4p?!W X)!!X7Rd\KG98 DGZG!X׉uGJuwr u?"\cV;Ex_I|.3 KvD އ;p0tv/("V(s`w/c1ϼG{!╧o;w^y}3 峰&ރsͼ?{[q.?q.f{f3"'c PKY;oPKrHQHEcڳ META-INF/MANIFEST.MFPKrHQH) K META-INF/1D0C682C.SFPKrHQH+0.3 META-INF/1D0C682C.RSAPKS;= 7(rCh ڄ~~*=z{P5jO{t۰Y*=Q3k1k"Q ŧۧg-R3l9xTijf *ߠ/Ƕ!=akm²Ʀʇ=؀o #Q^Qk4{wUOWEc \Rեڪ,*lN`6ڙ1mjّ guak7LE̖p:XULtZqR3z]{!ߟBM)QZeա:S۰quGs}:?Z +;=ygϏSNn7z>@dͻ+Ova..x7}ZQO峎U66bSgݸ 6Б5+ M7|4f *;=dB#nԹ-cGn#v-KʧYyS[̙3E9ӌ aFN:$L0IL2hzr' ]"q04 '6'/k\Գ aVWA~y41es?(<(ybabqqH$[Iq}Yؗq>f&78>d6MJ.ښ#F7F-D޴5^K}Jx)ggq\_p͈7b֘4X}ʲ7i%oп%C7^Fx7ke:; oNq>o ϶s^ /k$yYx94^+兗x +\ o>-b޼5^+Wx% W^I-o«-oAU,Eۯŷk9{PKm{PK H=-res/drawable/ic_launcher.pngPNG  IHDRw=LIDATHǥyPuƟ{².˲ 8ႈ 628yr OCM5V^ʡbY"0,,{DPXϟ>ߋ4zљp a22x@-q &6'xnب4Ռs-<!a^zD\W6=YMQ2ɗw|՟-f̶vJA؜s1Ym®n>/]ҹr8୔@(r1.}j:Oi> DowJ'CRRVJ eMPy|{|7sRNQy(KNnቹM{p՝Ғ6Q:h++-LxȄsՆIT~M≹\{V{TTX@vL (Ćyq]zAnBFZmHocs  Çd6ihh CCfQ!j2OPSեlUY G?15t"GUˢy*(M6\$""DJiujdo5GcF^G"@ Vx\|T$SgOt ::erOK\]Ϟb¶hӫnZ>5^7 S~6B3Щb#RجJ[ =64%1N ('5+٥bvTD%W< `y*VnJK6͵[h8l3PA$M;QZ1[,U3|.nlIuG2 3 eb2V'0`ę&Uڂg ,.!蒎Q1 F|UJvuӆaL06 cLzN׎zXYٹLGBr8#0LmMOS7onDVv͞} DLژ.C{e 󳵴&cY,ZKSiZ=I`҇6%]Nm},ŅU5SN܈mݷ<65}E޷'0CקԄf.̙3;EnK=_d*/r.Ѵ#>)?/Ԟ H\o7aU%(|${hjǜIL~ cS/LҘPPX"1sgsLuP!!"@&849^1|'3}ȕs_-]$IVM1,,D-aEDA̤rIENDB`PKHS Lres/layout/activity_main.xmluN@=[$BHA"5%$ 'Ql*x$ G;es;wofw} ƘMCt- G«& 99w%fmF)B[nTχUПg!F$~"u.m*~RUx:R}o{EO١R3~`)6d?Tޟ#]{ȣ>64u6Z?p̑?gqդ~,ᛙPKS LPK Hchresources.arsc 0<xres/drawable/ic_launcher.pngres/layout/activity_main.xmlOBB Main Two VersionsSettings Hello world! obb.main.twoversions l, 0attrdrawablelayoutstring08Ln ic_launcher activity_mainapp_nameaction_settings hello_worldH\L4H\L4HT4 PKH<>Z$ classes.dex l[u}(Rz"-K$ee[(qDcK]t%['Yz6HʒMӤ k,[:4E--@[-Z,, eAYs{{T^E}8~Ч?߫|-VXoQݘ oYA҉6@y &dʬ!66QT9p\EuS6xv& `'W?wA 3 !U&p<^~ ms"x | ^FQ8ix ;*76xxw &0 )`*> ~\O?_/W 6x0:ZZ 6!p+w"8 .3yo B]p-Ȁ ` >nA ,w+u`)f}`+10 %.Og)E&ՠbMa8.FJה|BOQ 'l7~Znz\tȨCkŮ !cJ(d>.dF,}^߆&;%KB&J>cK7[HveoǮ#žP&m!>KgNQo鯴jy![3"e~7FrTv%99Bř"{,o#\'|ܤf%cDcv'0{3 1W0 @n[m6vO o BF3"ds}=*5A'/":ߌOey:ITW ҼcL')wNf;?r7tH#7KO!ǺpKa27imTJ sB|pm|TZi ˱)ic[D|l%1-(ZM1$9*gpZ' n8 %7`^QmXnљOw79 ~g h3iy&:B-XKb9h#{@͛Q3JzL{d[q-#rJ7E?NK̟˳CaZΚ8c0`ce]}0?ޱd>LFgʹ\s:c5 *{X'Y+bV!3-"Ct\Q[??BźkVexL˳k ;TJuOջ H 54b;,rOi/Knh65:1]hnCxLq}y1'ױuo^u﮲o*T[¶UªWU{WwX7.שmJnWWɭJzad"lS{SL}0&Rb,9QDN,:=&s攊c{ʙFFԼC-=j_t,{jwÖxt+zԝve1LߨP?7&4y>?u[U"#WgO֪F$L_]7194kӮ2{^0_JRK;m! 0ulwܪ`_zDD S}6[շf̀w:ED[[}Kv619SEĚy]+_G[@._=硕 ;q f;j:ER3^ժ@Ey:)2Lɳ2|ԾdئVx=e)vc8O?V*?I;>JZvҷchZ~dU{bW[{R`S)b΢M!~gjM6Ċ*ZUڊv݈x:bUI@EofSj1"8}ǮeZCJB!~wP·&4Ѹp#svu?@+ہzz݊D`SH[D(*ġ|x5a[ÞodVe.U2i4Fn-xMmlm^n8(I?DgZvɼs-]b(Ý]zP흆Mk+*[RwWC;mhȚ]6vX2.~A/2 ]/0^}IC\5A,bdC/vO^`:}gSwZ42Lt-kLKg2Kn c?ncnCc+^h_Yǭ>/ =:Aڔb?/DY~O ~qY{N+7ZC-\nz8+̔$N-+sUy.3?[(jVD[PK<>Z$PKH1META-INF/MANIFEST.MFmj@} eD ]ؘh*Fƍ̌q$35^}چn_8g 65QJsZo["`nT_ $e[3glk9귚]C]S\|[!C<^uCQD{X RF\*نAY*D JAVnoh}09D;nrOPK1PKHݕ"6META-INF/CERT.SFmKo@= e% VܘFC__G/7'D(o ¶+(L ~B( er0:\-VVgpw9/9_/;EA@ mW)MY܁ kr/,?AMv==kd7TM *J89B8끞fCsgg*H:#K?iD-՜4+NH@h#kl]s8tUZZa2:H @Ha_6%qQgu;fPKݕ"6PKH5k-RvMETA-INF/CERT.RSAU?ԉ0J 341 ׺1jn6E)W02*a60|~w<$ ^~dBP>X! >0(D%a80/ B8 ( OE}Mw8WF/@JL@1@dI uCC>% !z955m!!/0(2A}Pe=а`oeOg #%UPCb쥄@4ls$? I0W^FA!^b\Mi43 oޔ,f3"io,VPE9#D)OL=>kiS3o{B''WŚ}@VfUi@y`oU$<%7]ܢ/@Z uKZqZM8_EFJ!c|t@䋮/UP jUs2O Eb+#||S.*QW4o\nT{EwdwGy[`'3JbuRGA]ue}]gױ1ur:-_/$OnOh[r\DU>BNT:$GsY9\^H"1`E3vn:܂B;ʸO&1cwɏvWڥr"q6B{䊤zVbo/b>,"OGїKש9cuń6TҴ Ah<+%Кء٢7t Iz=mm=z8|-ebnI\C\zbnR8k;LiJzhtYzӫKW#V v&?G9`ڂgGj>KYg ѸC,w)Dqx\}t9:  36n;pУHwwF <͢u'c~٢]fMf@=%mݽ|#)B{H8XT`Vo"J^rMo!_~MD3+_PK5k-RvPKHm{AndroidManifest.xmlPK H=-res/drawable/ic_launcher.pngPKHS L res/layout/activity_main.xmlPK Hch) resources.arscPKH<>Z$ @classes.dexPKH15 META-INF/MANIFEST.MFPKHݕ"6!META-INF/CERT.SFPKH5k-Rv#META-INF/CERT.RSAPK *././@LongLink0000000000000000000000000000016000000000000011212 Lustar 00000000000000fdroidserver-1.0.9/tests/repo/urzip-; Рахма́, [rɐxˈmanʲɪnəf] سيرجي_رخمانينوف 谢·.apkfdroidserver-1.0.9/tests/repo/urzip-; Рахма́, [rɐxˈmanʲɪnəf] سيرجي_رخمانينو0000664000175000017500000002631713303240575043451 0ustar hanshans00000000000000PKAHDy+AndroidManifest.xmlKo[UNbHqrc'~\ǏѴ@*iEҰp:džU5kKuP5 ?ss=gwf{sDũ&*Sv#; t Qաcg/T݀ЗЏ?D( }5o("jA'/Sw(2D ݅c 4!\R5ۂ[*^cȱ Ft^Ѡ7)kwUWA}M>TOsI֐j+?DS>g t[ZgglgTC̾t%v.9RV*{݃&}9ޣ RUDa))k*S 5VUs h:xlU#%J K#!);΁k >K^bgv]vOyW]ki׶yx,3¥C_>ۈڢ눋C(#t*AGnci\G &]U>uӸ;6-vb߆T|F0їsf̌qazN4#f|Gs}G$߈& 'Lq9Cr BI(-CYbs~=z75;*C7$}d9Dbs?(xAՉk΋-b57!yTgǤhylJ,^cu7uSFP[cCo;n ([c0Ѝ?"܏zcTcϺ󉋏K¾njx57'9gy IMm^r֜6탷 7m|b^GKh<3;r- oIl|$Ŗ֘7X}>7)%oi-uߺoYx/i-w*"gy<^XxxE5^+Wxe˳sxFz+;gxwooa^PKDy+PK AH=-res/drawable/ic_launcher.pngPNG  IHDRw=LIDATHǥyPuƟ{².˲ 8ႈ 628yr OCM5V^ʡbY"0,,{DPXϟ>ߋ4zљp a22x@-q &6'xnب4Ռs-<!a^zD\W6=YMQ2ɗw|՟-f̶vJA؜s1Ym®n>/]ҹr8୔@(r1.}j:Oi> DowJ'CRRVJ eMPy|{|7sRNQy(KNnቹM{p՝Ғ6Q:h++-LxȄsՆIT~M≹\{V{TTX@vL (Ćyq]zAnBFZmHocs  Çd6ihh CCfQ!j2OPSեlUY G?15t"GUˢy*(M6\$""DJiujdo5GcF^G"@ Vx\|T$SgOt ::erOK\]Ϟb¶hӫnZ>5^7 S~6B3Щb#RجJ[ =64%1N ('5+٥bvTD%W< `y*VnJK6͵[h8l3PA$M;QZ1[,U3|.nlIuG2 3 eb2V'0`ę&Uڂg ,.!蒎Q1 F|UJvuӆaL06 cLzN׎zXYٹLGBr8#0LmMOS7onDVv͞} DLژ.C{e 󳵴&cY,ZKSiZ=I`҇6%]Nm},ŅU5SN܈mݷ<65}E޷'0CקԄf.̙3;EnK=_d*/r.Ѵ#>)?/Ԟ H\o7aU%(|${hjǜIL~ cS/LҘPPX"1sgsLuP!!"@&849^1|'3}ȕs_-]$IVM1,,D-aEDA̤rIENDB`PKAHS Lres/layout/activity_main.xmluN@=[$BHA"5%$ 'Ql*x$ G;es;wofw} ƘMCt- G«& 99w%fmF)B[nTχUПg!F$~"u.m*~RUx:R}o{EO١R3~`)6d?Tޟ#]{ȣ>64u6Z?p̑?gqդ~,ᛙPKS LPK AHresources.arsc (0<xres/drawable/ic_launcher.pngres/layout/activity_main.xml&urzip-sNIl(uW[-1J;30@A:8-91(J1234Settings Hello world! info.guardianproject.urzip l, 0attrdrawablelayoutstring08Ln ic_launcher activity_mainapp_nameaction_settings hello_worldH\L4H\L4HT4 PKAHl/cH classes.dex l[uw//)R$u%YCuEKÎءؖe[$JM]җ,AdnlA IF!q [[lٖaڵCVt]6 {tV[tE =H]+[ ?=,8K۷Ro}>yDc]/Vh6RKDHڇAH'Z efS81GWYQ3&ʁ*8.'wOh%j :9$x;S)(x|ִ_?yp |:{ ypg_Ou$`l[$8 yp | *x5[=pSh d@]`Lx< /??p( @.U 9023CnpS`Ti[7߀8(&ʂ.N 5m` u`=6!OF(6] vN$~|E_b*ГJ:i*u]|Ry;Ji*O O^eoSuU!S<*ƽN\ֻO(/`з}o@PNϺ>%U~ʔ^9-*檗EstTGRLjX*y !b!!WżtFi|1FBjdtMDdDCFhA'>+J|}r-JJ*٦$JhZ2d BfBv)igW?,d2Ag, N䧕|N(߉CBaO){ qm=Mc:B&F)eqvD՘~T=|_2I)ּlU2Aϊ}8kdĹ#Dgl"ܣa%%eB! _ӻ%Ϗ`ݼn/U&m0 K]rh]ҷ q%ώyHϟ;!sV?m|{"SK@@}KuXt93< ߀MF쪨 mK!bvn/+ /$|T)j8~v~{1<&Qde”4-n޷WD|\щ{UQnΜB2Xek=nvG6 :+5+a6۵wF3`;ɀ&R>⡡ό^-jc͑ۅ^ BۃҞ9wd,-|s'ޣPyn c9ebbx?%0-j-W0`|J5}ZOF o'ge)i)3H]{j-֬."1=b"?B]r{fLL2T͆=&|xK> k=EQ10n6VM.ֻuڴҙ65c+VHY~pELFGVc]O"N\U JnTr@Jz.ae"Rv|w z?b}@h ZU lUKib#İw[Ůؙ'sO-JiwnhSY^j]u[ כIcS|[t,g۳"ixrEl $$1&69MWKna.Gv[t>[W"O TG;%qPTJ͘TEe۷VTj*UE~$V7&cXcXɃ\@xڌr!RS$w5bB]L OfE(.83M"p)\+x[$c.0B`v 4 6Q Q$ɿ0HD:e:Sgei]ܱ۟f΃:]X\aXX۵Fހ #4ĸ>^Ft$Kq+vfszYEnyNgK'YzR6ԵG٦~ C;HS,qHa=;iݸֱ' c ,=1ƽaCukV.mHruxouag6I;(C1 S M>CPDuηdӄ8y BBp=Zw7:L'% "c"2RQ <ڟ Gr$Z `% h(`$z27PF(D7%L?BB?9`{O{SA8 O'< -5j_9Axw6G8,8 b @0hvS'^w1m6]:e5DKOܹԎ< <{&B;Leoέj,9x";$s$>檊^=֛V_s\Ξ+磨vWb,"9 0#|l~⥝݃eͿyg4`HpA__)uV0icၬ7]ئ1_ >cv)i*c2>ұ,ChJi 7a _^kmv$*eǒzNPIc*1 clpIV@Iq0&s8mFJg]:Ψ^[F,t$M -~0ٕQ^hk5qHLw1[~q1{}=t1w' C+EjUʯ,wG7Z!6g[1K;co;pm(['}Ȟ}*nY=2p)[Y7"kdc .!.LiL 0 BouL#X#|1⚍,>0@TvVʪ ;(lZZ#ӺW7l+>c o"<VzezJ(qeo9/ ")oxlxv ~7FF>[_CR g5(&hL:g3igit@ڦ ݴ鞶QI۰ujaL8)gNTd3VhGkmrqA|۾tPc!\J*L1W_cǥ`ޑ! _JJ?ubC# ϝ;.NN&FP4~R! s>#g07e?amʺb}.Za"V1Mwgۥɤ_>uKZaOnMAgI5x\Ķ_(˖Ïeuwnd^:v(Tzg˨ <'Ee;t)]#gw5/]5|iFg~[dS7PK^ uPKAHDy+AndroidManifest.xmlPK AH=-res/drawable/ic_launcher.pngPKAHS L res/layout/activity_main.xmlPK AH resources.arscPKAHl/cH Pclasses.dexPKAH/%t/ META-INF/MANIFEST.MFPKAHr5!META-INF/CERT.SFPKAH^ u"META-INF/CERT.RSAPK *fdroidserver-1.0.9/tests/repo/main.1101615.obb.main.twoversions.obb0000664000175000017500000000000613243530567024552 0ustar hanshans00000000000000dummy fdroidserver-1.0.9/tests/repo/duplicate.permisssions_9999999.apk0000664000175000017500000006546613303240575024441 0ustar hanshans00000000000000PK (k% classes.dex p\uwjwZza[~H+6zŲزd2b{%]{u,C 1 7jGNu;It24ЁyR2${W^T99]e@I0?|P9yOϫ?j% Qy]^G"4*Qېuu=>UDo( b`H: NsOw_߀?O^0> iG_!),x7G;` , }]K $ȁ ho x 1x~Aԁ I`"<W9 x 7>MD փ`; }Hc 8.?_WOO{@iFAh[`|  J>(2x \/@U 1f`̃$|63]k 'x^A- L $@;zl` :J> \7`n)n`7`$8 ]^wDBGX+a/enfK\^x3^rlJCg;~+%O~Bg;_>Lxu|LBgx`1!:,^ZYY~KilRVKB^X 9&佐ӀcvOӐQr = N%H}ȑEڇ9) ^ iY5KJ F;2'l È*n?'FtL)-1-LH:Y6:*e߇ b1+J!lu(vGv2ӧ!ORVӳ޼żx=Z0# q2]ҭh)k7 ۼx~܏vBvxwNj2]E ;_$+ޓ<ѓݞ "׻XB| ײѽž<Ꮼs 罗/ .;潺\:_3_ zi ۫je. 7j0y޻?(q[< y@>P?R?^:NJ!ByΣ}^i~m~͐F:8r .؎wNPi%vH݊lF)YTERKfVI0ւ"ǵSb'gV= Bb@W1OTS)>B'~Mcsdzuqԋ^:DjRԨG:v@*۾yojO#h{sx& Y [v?|rNyu9 rZMh'tuwnFb1BKXG+N$P*k;PKe5W3uem(O {GN:()|_7}×ODku݊l>Bn8Mz5ʺ6TL||ʾ-n'YFn\}<. v=;:q؃')99;1'%p1V{+]lԧ1^yAr0 !"߽hVS=*j5N.܃ىNfr"7Amj;w7t};!% ?@A?gyGKʉH1u>`u}j⾊.2^?B_mJ瘑 9F߄MF`AK͊o&cXnA,2>| *U(*5+V=`z+~9gqw ou>6^þmװ︆=/>eخUWWX~{U^j?[o' vO[=i.4a{9ů NY%CXـ%)8_~ p_:":/-QfI$ISU&gZfq]JQx`bb|lh`ra }b"%39sXz)MCi+aD1E#58aZnR<#c; fHE'y8M L8Hb1fԱqp'8+0mf|>9j53U4brLխx,<)Zb Ɂ)+3.Ҝ%+3R]1f.9nϧc<-Ǔi i䈕LP.](#Yx3g XYVXrгG'$n79;9_J;Y3m)&K]f>/mZWgt/zؚ6yږ䯔QiN_.iܜ1+_**"y"WQR];018NE>rÊõԻ\ښOvH_C+V=0!E U4k R\QµUk8+}ʧYT2JQkQd,P B׶>q\z@iL(]xYN٬CU؎gA>h%,Ki7M'TIMDl&=k̖6`0xP8kYy>LUL R>gf^Ŷh ,0ȏcY9)Sc, kG 5٨FqeeUj`㐖ˉ+ OA2'e!څta#9c,=svrxTcffr钕Y&o3k>nۊՃndsĄvv. HÚw]SeJ Yϥ{$wQUv iEd^Q@]!E*(GY*BzE<+%$DR:R'nel#?H0%DVɩ"xRħU咈޵WBݫ %LOWtu(ϋP EEaVSrlc]1U|Z]RϋJ[g?zN_=Vb!~TiUQt MULSUq]U]o!ӽ/^E),==V<^o&ĆZPc>-ķ:[o_<*]UD+khSp};565JݲT3JͬhVV n9icӆM]qX4k<8HӏǏ|%7lVq؀NQ35raMPV[kqhęګ Bym?+>WjQ@9*1UJ3j{".%U:|7h[2_[ WZ@\DCBJ;+z CAC?A-U =^B-1%a(}=~~귢+W(QM>TCi ݦeZ1DsK״"S܄=oi,(-KZZp@ _gE#+PO5/` ǹER%V"GGŵo%{h]+rK-*eQr@JIs2>IKߐ*;о ,VK5H}W(Vо f%8(d~3Aeu]MF.]yWDITo >s8*+4 y.)d/"^AnZt A`")e*A~|.:bOidjq~)_p?59@o˳4lum:bFtUDz)iCtđ|d{zsu$1_E.lJuk +y]\@GY%߮o[uKZk^y<+.{ d]Ȟ~|Zݞw{KAE-sKY3hu:%TڵP̩e]OuoMkQ{M82,h&12x724:b.~<nW_p晸wߤTaZ(' 8 ed7Dù0"C~)COӣ|YX' 래--̖;˶4=Z=LϽ4 7M0Id7I~dEVx^-"yq~=~x^l:N_|ދ7P`v\oU_kqug ?nw/\١7ɜ[|mob]*윥*fb6jV^Ѫ_11˹doQ1<-FDft17g^i ց[vkZ ΁Gh: ~M+7d#+)[2+ȹ)$~ck qCj`|@ܨiKf?hѮb+[e)Xjm1C5vQZaS>kkh[qmmU/xGGH_ww>+[:X/sG6G-sK:~Kw[x=ףLm![C|*_[U^k%x Khwܡ3xRn8x'V`~8CN\Ni1-dBǼa^ia Lx:UOkm|C'Cy=_PKG"vres/layout/activity_main.xmluJ@O$=A桇g HoK`kjZ=c8>!,vv30#Ż;V{crI=ɲyպ]^/l [J9$._UeѨpnyu=+p0U mzek\s;7|`]UR y"r&"+9OZ\Qg|O,?ie%!+'ƋDP/qoA:~PK=~ res/drawable/ic_launcher.png5PNG  IHDRשPLTE)!.H`D=768;er~D?:E8*  2GZ'  ڮ,%!)68.# JKKA@?#  2' 3DT ...  .; !&1 ///*6CC5'  ]1121F;2)667omk ~c omj  H;.  MNO544 ,,-111 &'&&111*!''&223&(&&%000!"&%$ !!# [|u\# RST776#G9,  -:"%*   1@IDA=DJCCCUUV{xu~754,,-{yw}{yZ[\srq[]^zwujiha``79:542\`cKMO988]_a϶^_a׶?>>hkn@ABvut788#"!$tRNSL  SZV6("Vj.ڨTr5T"\r9EhqnnJpDACAD?J?J?QG4V,vRN.=wIDAT(c`@F&f $ّ98/\XXDt8!!9SJZF.!'?k"pEbɥ@Ĥ+WQ$%%38$q-3+dyNn^~MĭBs6LViԃ`P^"qY.P:T =nlb@`hnyYkD{GgWwCo_k$ SBӦ30"pU(IENDB`PK#J;;res/drawable/banner.png5PNG  IHDR=2 IDATxymYgܭZ-P$;`YI` hqx!,/p !lDK ~c0hp](Qrȼy(YDߥWh>1_A̷0S4t-?gzW&j=$Hʕ‡}܈@k粙}i mY zχbyf3ǙŎy 1SQ轧<<اeµkі|핃"bǼоDBcsŏ/_aY;k)'{oZP*?N(NXN/JX^{;XXIJE9}`ʈ-U( /}Xvqv0_%rMoR#}EE(tЬuJzXJ1#} % (Ғ^~JuZ|Uše$kHxS|M>3@~^W3Z.בߞHH c&HqHEؘY˰Eǵzz֙@ G<%WZoA Kss,]f\#3~V\c+s^&TfL:~=~˿Ԋ E>7p+ F1~'DžԵ *Hasmܟhٺtm] =ز ! nl^)y $/Q~8O.}P=z•U~]\[&ī*{|NhFZ۪f~h z- -663`D, X*/s 碔Vzd?:Xt Q|$]|ዟ|r{|0{w_jk6vi|sG}tJƁ`Auh*alW^W^CeW*EN}&ADDta,̼f3C"#fr])o=7^{cc~ E׺i$ifQ]-(P/|9wׄ:M$8Q35L57Q..*XKvfxk滳y4N~v%GW?[GIwVH%#Pq5|yqfhm*7W*QM]~ }-xظ3ݶr=/_~"*ضz67u4`5lPz sV@깯etAF!;܀ `$Bq>-ov\LDLI'c"itZ|Prm0=LxNXp>?8a/U;lHr]TP,ƚ-,I"lFy+a"MHdfst~"e)'n'm>I"sVy0hsF TJ4Uw~?ru5YPvrbku݁ٱ>o+ˆlFy^$Rc=~&s~fwC{oIq}w]|QvI'oЬ9/\>M\V4Er7nmv}SF9k]LD!R1Z[QgyYjs2[|!3 u$܄A›Ǥh<%|x7. (H@Q (Crbi ,[ܾ**w]4yđyz6zh2ɶ6nWnj>(ԨYVGzD$]!lIT67.^biPHl ]AX`{YQܦ-4@O|ȹV4\GF^#X>wZqw֫gؠ&Fo/yTJ%jIhBfȴ|#o9'!Eۼ7`avWrM%8@wH+ v'w^ߍr]*4@KKIoE9q @٤VRa$EJ}KW+mt09ܳƿKFpLdXDm B1zCܰF4]ɫ=g}%n+X(aq ۗmutk0p؎77,T"B۾xZ!9Њ"nBض)б_en:Lw:o_4Q&%ٗrJ܄@oPuji;Ny1X7\yQW;Vv)߾h: Pn8]vĜu3 0Y-!0  ;&0LHY5e b1DgiΗs RV犳 94-Z{C݀y5?cmɫ;<'fc:&DD`-\ /c>7H2q :N Qq-#G kt3/8$®۽7`z@R"g' iR1eFIt AG( L^#S0p}}m(α ƘymXo;o cOnssn(Rez[g@ % ^֌Z5I,YY#޶F t@0dz Ix؄! & l}rL3{a F 1[Sa4 F3̢_EW, 54h7`8FI4+ L5gd*F75Pʼ E!x Gt: 4Wm$hl+&}@=5c`kI!S`[ x:Vk0w03砥z`6pU_b68C ж D=|XiVZ$Ѫ9 sz׃ ;=0' %}\(~\(g!D6  ᫨tŝ擸ChA@F0⃏2%jEura꾏ġDTx7+Pޕ>"82GQ¥+f/v]A9ʱǢ+D1ys_Ƒ982wJCof)kǰ|HEDQ pQ|@$2n~q(lx;Ċ3%_(e* r$"/C3e8H-1XȽP`~e\D)gq,@YL" L 8?_ Ĺ{օx;ty 7:-X5O c9xX̽c,IB뱜0{ީx #ƥ_!ș@H\=RN6(} ^ NZVx<3o_M<r<`XåoA05ʺ6m$ 62佛n1 9ԆZA}3Ti,fܷ]均0{o@G7"fL6Ȩs6?*dƞQXȾM3x)4ك&]6Sed}}Bsoyrz^rPy뉌7+ O,0uޛc_K?'1CŒzr |5Mt-PpƘ#aG-(מ@ @AInSf5Sqw,GUtX1{-[>wԬ0,b| y5~^ -v$ 4D$@q[d3wJU0N؎$L0աCz$Ns 6jS뷳L,j3bRYutdܪ:H"1!Z<ӕD͊-/|1_uT@ HC9 ; & =M8 ><-jc㍶`M.ŽD>3AՋ@0d%F2m}RRh+Zƛ:,/+e c!48yOi 6G7>|r {ULBH򶆠czo<-7g%a:՞hkqѴ #D,~>[0hAӔ;>,󡙒a,~A1ZU^R]7gZI4îj5d|cKKt*J;y&\RozGxW' 3׵3B!Kq4ե'GtGΰ6A'EYu_޸?w /pTw5 Hn,7u6ue2.!",/K23ڈ<E166p4?:>gDϣ}#>t@| LV'ǁ^mzf3 ES܁@l-•V+t Q|YٲcLYT`y0Vgp-`b᪳N 31 Br" 6mkcҚƭ[6њOH)ҕ+™[PڲK2Fl|0{D Dv@1`@D2H@(d  :BFƆs=ꂈ=P+$*C^-e!=e_=I15Q7QuQ90t"ļd?N::$DN9o..>qM?'CBK$h@u}2|G֨$ ǜ;9e{uIT_K7D;U?KSb_t-_{_B}-!5Ӱ򑐪ÿ2*A9J@O[4@`-txcM;Vm@0FUV"d0ԓ4yxfePZҌno)/HXNb$ j`Z 倄dZXkz=Rf51m!98s ǙOJ1F>?FdcydL꒕d6 ɂ<BdhWPfj #ذ {QuzDLvyBi6w&Unw~,%B>d/Hwx+BHu͎YC8i[-p8q> ^"KPbzo>j8~^`첅nԑx8)A~** 2{j,ǁ Ѝ:L ԄL6 ,S9SMh{Zj*x~YB4q9Ln6w&L05DR s#^_9B*jR#-I`t/Tyu]FQr:I ( @H*r \ɀ\/`.@R4nx}˩ S40ooL9" %mf(m4aϽnh9o9lXr_fNV3?j=pR<*;)n4HJ,T8p<;M'HVWF]dW ^+е*I6I58>`>@Xt,™im#^ZIXZAx6ljn" n4>D0O q j™_Ax@7YPյe { D+wzG2%/'IRy:0OG`]Bn5aD=ffssWW~}bOXq'm}ACOg`RPت:p-#؄n6Hݎ7U~;Gv:K!|ĩ6k ?/@ zm@@>~}ئ@WЍ㗙lOo6-zclL}[rfv&!tes?!7=d65 ?)T݄f!`A"PtL cDz"Wa^nG9S>e;И!!f \@@k-5l]viNF7yn]!2H?sز[b T}$D)@YD|v[>,T {}NI =P) Zuq\n T T}FlC}*­\e]R( AMyמs98.,!ZCQmǀ3p;b z1PBH40OX(#n 3=KFJYNgLI[,ܥsPR ޿vƞ %!DvKiprY[Ɂ8IRi9FNSo @FcuϧTpLJpӄ vu s`1T 'V˱fa=P; 2Y|itsTUq*'&PR9M8S,I`rȍBD ;&{`dA3<[# PCPt j> Cp\\w54;z  =,M}"IJ@$'!$|"fRg6I`uyS){Y J[W:fLY{[8"I)Ł4?v4P!2qg>&;$JZj?jX(Rm]\J[<|0\8 pffGBRl>Bɥ;hyI,}} IZ 98KˠLlHFd2pD06t߹{VrHƿ'q2C|z[ ;FCX繁RH*=Uy3 ~4GGgnaLQdc}Q|>=rJCVXo$$yN n!܄|?󐍖Ԋ(2Z-5-pe2U3P33[M+ۃΞ5;wTu$[ִ2۬UA57?]X栛MfE[.c<N U**Qf$ Zu`ijf&MyZ O2'|Xߛ$"F&dBJНtWBBi\"'^C~?8O({eO{S }{.-#4V%"[GnRBpY 8a&Ҭ^k`=Ҵ_~亩=|00kCs.- L'|}لljq ʝF@VVkR- <2Jr2x_xfPy/ ΁}0GrptogN)>R6T+srXș=9e.~>xȻZu[cQ3PT휱G❔J]Z ] whpc:LqdsRHKU,]Z>U) )wؘTHjW6`D6{V$ph}W[=w 7? yDNZlc}OO99W6qq] Tf\ =#4/}ޅ Z!Xk0d)=ѡݫcԙ*HW=w4G@{߇{4j& aV@T+P3iRr=;[Ԙu'=8=ׂP2ܥS'xh~y|q6!╕^@m2'ҟ<@&^ֺW7`Z큑&&E 53 w~:iSa"' ݔ9HGtoՠk5@9iN^}o4^vm[S8r/z4-uǒ,R9keD.ZM ֎)ƶ@5vpϏ$_*lQgH<XI53 g[MfPֶ $}[dsPO)W|4!@YJ{Z ˃gR7nہ ÁO#7! }"f4[xW&F PओptY'f~rO߼Eg -8N}WnS) D}+Qs[>b[) $ @H* t7Ntx6J2^OK-|?z7mi;DZ nE R9L҇V_d_pGp".Գ6hL J:j5RYVex71ubc=IqdBPTO+OMGM!ʗD hA1ԀMN֕͛OSIqmQaC:Npc)tQHw* g?9b ѳvE>`7nGusT #k"-߶h4ѓI6 =SH*rl슸v nѰʔ!Ԯ4@t{Cvې to'sik[lY0M@# L PKp#vj/B܁pBl$b#<=h{}6-ҝ2kO.uքih(}$p;IdJD1h[x ʔVWd1#KJB#Cqt*3&Ӳ+6?^hmcLs=t!f 4 -٫NHJV~ԤK@IV; _; W,o%6W{-XZ <*{e59 ]kW3ZjG t]*!T ',@ㇹVlvpV8r[ϋ8.y x@~÷[xcbvd8^i 摓)PKLMETA-INF/CERT.SFuM0;߁n (/T⢗I]Dk&3̸{k4X I[8d$:rK$T2}W[(JKsSRTMqx%- a$<ccC{%0G Ë_-bV(Ʒ=%%,H||:" *iŽǦxhǩfcXNf?4C28GX$3VO Ԟyݝ.oY }sxuՅI/G厀=k]|7[wk,AO_MmcqR_FwK!X9#!,&9aLrb9Ia^8ėvq,ԃ: ד.yyD~5N^sX߅7^M ^`it@OQ?7VxkPKnWiMETA-INF/CERT.RSA3hbajhδAO&FFC~^6΄6Tf&FVnBM/ f&F&&[ a@-l̡,lL| 0c^JQ~fHY*Tn 'khd`adadhdf`%kB8ٍ@o1724v2562ljf-Q?nf:}`ʃV'?VK5yʮAlMI2<;lLsids>|WoNB.]EXGj1sfG_dbfd`Dv0]}eKOdU֯'"nUޓf#f~Is(* ޫy_l^\[|ؿ)' Yҫ2"00NP=7h0  *H 071 0 UUS10U Android10U Android Debug0 120828212600Z 420821212600Z071 0 UUS10U Android10U Android Debug00  *H 0U>MZiQ@:ɧK&e7.]p]Xd-Fs_ȩ˹k#K_܇Ԏ L؍~b4G'8]&\[0  *H m!y5Df3:{.ȃX%M#fP<+7eL|ȡ),'J L#ORqq8F#"8[2bk ʳM@ _MZiQ@:ɧK&e7.]p]Xd-Fs_ȩ˹k#K_܇Ԏ L؍~b4G'8]&\[APK Sig Block 42PK AndroidManifest.xmlPKnWibMETA-INF/CERT.RSAPKL`META-INF/CERT.SFPK}^META-INF/MANIFEST.MFPK (k% classes.dexPK#J;; !#res/drawable/banner.pngPK=~ res/drawable/ic_launcher.pngPKG"v res/layout/activity_main.xmlPK9TT Nresources.arscPK Nhfdroidserver-1.0.9/tests/repo/obb.mainpatch.current_1619_another-release-key.apk0000664000175000017500000002445513243623367027546 0ustar hanshans00000000000000PKcJ&AndroidManifest.xmlMo[UڎcH4͇6Nĉ? i *j"JƁMu VKXw?5B,sGz}H4 ENGԠ+rzfP͌`ò tQl簷->C8M\瘚g_Q=T3T|G_!mQ=`kmrCm1 ؂o#v^ѤwwZŵk*ۇ"|'VkJU)XUN&:Qft3cvNt3#@r>wv%:i(0`-* u**k :51 oߛ*{e^?1jcW2*'EթVUrgQk5qTsqDRSlw9x9%NU/5tkj;@ּ?rˌpi[]hKkgQ;tq3uĦ q #70n4w"}&/|4f*}w6ۢ7wnؑE~Rl;|}93zj8g0='{z3#پ#MB$߈&c9r$4 5'Pǁ"<9>{kX_xq_gDFcM|7+ :sBcb{ MHw/'[x`x4k\h+jW+ J^YxeboEZxUj޹f#} 6]|;cPK&PK !=~res/drawable/ic_launcher.pngPNG  IHDRשPLTE)!.H`D=768;er~D?:E8*  2GZ'  ڮ,%!)68.# JKKA@?#  2' 3DT ...  .; !&1 ///*6CC5'  ]1121F;2)667omk ~c omj  H;.  MNO544 ,,-111 &'&&111*!''&223&(&&%000!"&%$ !!# [|u\# RST776#G9,  -:"%*   1@IDA=DJCCCUUV{xu~754,,-{yw}{yZ[\srq[]^zwujiha``79:542\`cKMO988]_a϶^_a׶?>>hkn@ABvut788#"!$tRNSL  SZV6("Vj.ڨTr5T"\r9EhqnnJpDACAD?J?J?QG4V,vRN.=wIDAT(c`@F&f $ّ98/\XXDt8!!9SJZF.!'?k"pEbɥ@Ĥ+WQ$%%38$q-3+dyNn^~MĭBs6LViԃ`P^"qY.P:T =nlb@`hnyYkD{GgWwCo_k$ SBӦ30"pU(IENDB`PKcJS Lres/layout/activity_main.xmluN@=[$BHA"5%$ 'Ql*x$ G;es;wofw} ƘMCt- G«& 99w%fmF)B[nTχUПg!F$~"u.m*~RUx:R}o{EO١R3~`)6d?Tޟ#]{ȣ>64u6Z?p̑?gqդ~,ᛙPKS LPK ! resources.arsc 0<xres/drawable/ic_launcher.pngres/layout/activity_main.xmlurzipSettings Hello world! obb.mainpatch.current l, 0attrdrawablelayoutstring08Ln ic_launcher activity_mainapp_nameaction_settings hello_worldL`P8L`P8LX8 PKcJt$ classes.dexluޑ##u;J\RDI$eG6Y"E9(K)١Kޒ\{ڻ(հdՎH qep:.NAiQ m@h&H@Q ;? >޼ćo~Vlqپ^|{q=}JDrlgԿ.Hڇ@D'2d7!oPj$:i3>7m{.0ڈ@3h` fiq,*76`48RD.pS?F  ^ohfAP_/ w~&H4{A0Nsx<\/;^t^0n{$8 ΀Ki%5*>x wl#`?L!x|| ||~\ tm`c`c2,>_/Bn'0l -@@7@%}` ~lT$p n]p'`7)p~f+|WJ z[4溮GL2d~/ەo~*\* τ){RPu1ަMj[~U B3}!=#6?kTW`ҧa0:mScN`cס>C|dˇ7932nRl؁HөMO2ozoqsh=#Z4[[Vqyn:|jca܊8^]Qˤof ԃr_bjv>[vj@9 Z~n/Z [mk7Td qr d#h+n2ZH"}'҉hi-YIcs u31|Na4R&ke /*lImm [<07k7}QЃWoØR bdNdm<%7b^qmDn Kg3ls0ɻ0fFYy&)V{0^h{@ f<+sޭPiO'ͤݬeL?Fن%Jc\b\Ҳv¹E{ce}k LVX2FMFͬj;lT>V EgucSN{*o{{ o1].І<'P=7?,ͪA{ϮT,{?[\o/T^)O:s|58m[?V7JNзcRAHnS*ip˻>|>?Na+U+ViKܑkU+z~(N__7yhbe)q]gnmo!?E^mCCM'CC|#zwɹI {lbror/!1DEDW]r[v.qh˲y!+_GW ^߁ʑ+qʟ/!Jven1?W sC'_:gW*s7/u2E_庫oRbCm<1GԧMpjojż,Ŏv 1~ǦʏҎQ B:c-:ܜS.&/ ej凮(;~V='…Bme ^r( Ew١_gdSΡFy'sbMnDT+㊠?sG*5ԖC1x6p2\93W`Ί[)oj{Є&nlHre`_]K[mwji~Ef(mV[A?p&2Դ3~PR;whWExpy7ueM.cM8mY94OR/cOl%t]{a gA=v ]u/5/,kݮ)C3tK44xnP>gfT2-~42:8Hy>M[`[ٺV#aG?З֠k0ff}ZY]tgZOoM Xg(Y_ʠ}u큺`],E:tnw8N1~^/0>37^ GRL*y/5LH]̋"/w E~_uDGҩGg2U땬y# 4]2h 9j(os:{ye=+5 52cXϿI2 Ǒ~G6ۈ uZ!֪Рտouo[YQK~-)Io%sUy~aoêQ6eoPKt$PKcJ%!META-INF/MANIFEST.MFmn@= &]M n0P13ͧۓ/@ `.Te1H6=О,rFgUQR<2MTeac݂'Cw鿘 j]kp,*I$9>BT~\ٽ3" 8B.P(&pےr6t]ŝtm 9pHA>F5 bJ$%5ּ$J@ۢM|SKs|-NK/nWPK%!PKcJjF9META-INF/CERT.SFmn@= -TX5P6fu?gO_cڴnnrs䐂X1e$K A<8& qR,ND^wqK^܈bP`$Zьg%H!|~DN.C@X>xe-<uM+b,A#R`O=r!"S8v2=ƀ"Vs+*Xmglo_& ~{PKjF9PKcJ΅>SjMETA-INF/CERT.RSA3hbMcjhδ5ܠ5ѐۀUIqAsAsASf&F&& xjZJ&0 39Ep8NQ 0[~SbL-,\Z\ % @y%E E9ũr⼆FFfF&Q&&PQ 9xY\LM [o3пJ!fhβ v]ߺʔ fN9ݒ=tuuIM:b'sͬm&@9kuCfE-N1gwJс[Ѧ3_V|nu/8aOeqqC޻ì6('EɵVnmk5{Ӯ}h>rqdֺdzs^?mu I]tpowdZlj O='ٵP~C+bKho2v;1.~jVG&fFŊcc{=xޛK YSu>ehiv>J;'c{.߱n|*_znqw}"Ô8uZ{W?{mkq_ߝrq*|j,/̰_?Yo]0}{Kk~Z]}rM i>0 LHjbgibdضrSjPKcJ&AndroidManifest.xmlPK !=~res/drawable/ic_launcher.pngPKcJS Le res/layout/activity_main.xmlPK !  resources.arscPKcJt$ classes.dexPKcJ%!META-INF/MANIFEST.MFPKcJjF9!META-INF/CERT.SFPKcJ΅>Sjx"META-INF/CERT.RSAPK  'fdroidserver-1.0.9/tests/repo/fake.ota.update_1234.zip0000664000175000017500000000035113243530567022411 0ustar hanshans00000000000000PK McI'fake.ota.update.placeholderUT XXux Don Nov 3 09:45:02 CET 2016 PK McI'fake.ota.update.placeholderUTXux PKarfdroidserver-1.0.9/tests/repo/info.zwanenburg.caffeinetile_4.apk0000664000175000017500000002673413303240575024723 0ustar hanshans00000000000000PK|6JJ>uMETA-INF/MANIFEST.MFMo0;{G.F`HCڤ!mz onmBȿ/mWUJ{d̛b(܀TL1] j46ALu-qH1T`ktM?VWWvC]gW˸a@umQd?:/*j(aR'g lV<R@ ؀Dw,WaT&ףݢB7Ħ*-HFάleDB\xd}G,@YX⌸AN1' =|Sا*BVtgxǰ^$C,ҟ_Oݽ['Y; ݮ0jNs7PKJ>uPK|6J\w META-INF/F981D5B7.SFˎ@}'˙Em/,AZ1Z }O?NO&l9䈗;k |"H^0$p$,9fma㩋:dJg48;7:, ߖ S į7?7 ǕcPg-tfsBܹ' ex"(y c&K!m%2M5b%uvf5+@~ =DXyDΝQbD& |@R7Ci/8{%DuXRےKiqٴkl0g+3^Ű$i0TH|G187>p4nRQgRsP S6NmB /ލ_1n򫴨maX|]tm(;еT^6*?UɰCW7OPK\w PK|6J'[&4.META-INF/F981D5B7.RSA3hbbjhδUڠUѐۀUIqAsAsAf&F&&{|p5@- `CY؄B y @af w6񸄹R3S \@0f8q8!K41*!{(drKTmL*3[3g^^k{1}a;zfPYU^{2gO_fq"Ï_#5LW:G'r$7MV{IOEg盽k^t6uƧ[W|￯RYQou;D%2Ne{j[?MA%ik4 DtDS"'Bs';frt/E'ٹsO9?cO>ߣ4؉r9:&~`BE ڧeh&F 9uU}7?)(L1~Xm.{]m-aʹ9͒r*>qlj ~or>}?{L{2"_(<6YsD-)??j|TȡfuonZ_6rGIٛ-xqvJ_\ɀڻ RbZgѬme/յpDSk'k:a_ٙt-ɶz'8(sȊuRڻzPK'[&4.PK}5JBW1))META-INF/buildserveridA i 8 ?w(pjr%ҏZ$9>PKBW1))PK}5JBW1))META-INF/fdroidserveridA i 8 ?w(pjr%ҏZ$9>PKBW1))PK!ƈ{v  AndroidManifest.xmlUTvUnA}-&1K I ;qa %bK@lƞ]@B9pȁc3pU&n'RbFUU84>rv}u]1xA,I4{@/HĀbEL>@ zA-L@1H!$hIQA Y#Ӹr J"1ZFO2$xkl wiZTݑEwcVTԦ2TX__WӪ;+V*YHGSy1kM|L2]I]j}^Ѯ3˴s_he_ڱd$kSsc}Oi?O~JraSvF֥>wMz+.;kI=~v ( !Xp5T7.8 cʌ+ie_F<0Ij*M} u] 8cK`?9f9'au&t>JV* 1|gTށZ4訯P9h+OJ+rco~X50r~q Byʌ~)TS|=8ű;y9(qxs11΁cH7Fl76y&fIel4(1ڵzVVmลe;qm5tt#0.p?n CUsb$_u9ڵ9|wD1LYY٥;1Kָ2f{@&GǶbFĄŔ{̮$>k1@ѱtWЃ.f*=xN;3s"ΙjhiN%{!kw U%o[.cqܞÉ7?/ PKƈ{v PK!W0! classes.dexUTvZkl\u>s7yIM]R(qWm))ɢdqEdܽ$ڽ]RRnjJB`*B.FR4F N[Huwffw/sfΙ3g93sbSεءtf'o?{2r7"ѵHYD_#nD>#j Z=$PGt&ډ%k@Q Y`$E`yp+߀0q`(~DNo?h&: | @M>`(o?0\ 3@NIׁWׁ_|3-m{ ؏}(0fX@ =O!`p< p^@ x =o>>jS@W?n?>~ dAH%!eO5!\%LAPAeI(W@F=(8յ|x 8DGOQ1u$0%SG4 FPn3|soWmW:ZUaj&i:&)uڴx~c&Gڕ.'e<>5ߢzA&?{ge+*~Zyi=5g4ox]U;yx{isyiO?ۏk~;>?F3PB˒6м] ~zIO釱KK02p,tDQX`*StT>'i^ h{U~cZdv{FÿgewJv5 q-Ge HSd{i}3|9Iyyy T%m#G_մuMH?4FoH?">3?C.%GX09۪^Zu4K?Ă/g\V$m9"fZT5Y{dNաjʟad$T뺽J|uA^/J9 &nZ'/:hlSp;H|^u W${4Y{wp$];<$ V|H˅GGZֲGD#Znz oT{X=B>#!1-ߣwly=ǠI-籿P>ђ:Aw{7*5 0 s79r,،09!4Zceݰ隿O|C$ ysUi Jbvnj,x>"}bܪ5V!ק[mµ%!aazY]s7gu?> ys{F I;0_e !_N*诼f_j1gرNF_(|k|LõDkƸbiQy\?el⠟ >67(O a_ώ-0vMT`~Y`5 YoCbFB+}o鰧ksg盦Mcaq?wSB]i >ƺFYb+nzb?;S]¬ϝ^֣wNjj-1W^[ylDWUuQ}G;dvL>SP9rOWQ5!b: ')qYX#|,A'Rj;l:Ƴ/h i)PIn3[ 5FϺ͹lr='+us%UZƶCƽvOrY)8ұTK_e, lG}AJh!)Ͱ/l4hٚ5ǜTs|׋#Կ` h;ŧrmϬ\'*5egt^R; {{T61D))WI̯kͲrcd>>Lk>wrVA>xrrnAs%O T6Ӡ?ygx߈UӖZlgT~GݢzG}TX߉ݮM;[~wK[<M5Q{ { n -3_]e#?hTG\{=d9kr{jZ5xzQiW&=_o4TX?VYcgQGDb$Rd&K(xTQ5MKKNuR:P۩t^޲j=n䟎OOo:''#>>Ll)n]T!NE|>z2YJK')Y-Mgl^v Q(nц;ATfz:LPҝ̹% Nrv*iK^g۔r|wJ y6Ѵ$4)3Lg]G/v.%I9nZe'.bħLNQ(8E[+H\+d1*WQ,Nt:hɴ7w ".y{/:]'K^bEk+#JMtu-RtJ%b4浌}JAUװ2/;egWJ6g>zMfrE"!:3Ni%ۮ4b*h#3NvQ+pw2^vZݥ\ Wmŵr|Hy=eSv$UNcW-Y}Y3\aTXe#5|F5nG3Q6OWpl-ޜONyyi6dɗix&c/NbSr:9rEXiyza|v^: E29aN:$l6]dKti2H@#);y͗SY]3EKT씴tR'}wP='scdeJێfjp˝(?[A`+4553]RO%LfNȖ[^dG]d5O TSpL>c#z58ޣ]EN@Pn9"{YyCMkön5ރYs_]Fד]c77}ݑol׌dlW\6{Hl6AGCot0iߴ;[w@MP#76C%_vnX-nXo6[=A!n }>!Fo¿/|`MozVՏ}ƭݰs}>pL@3({,!>`O4ܴЌ|7so; /5 Y%q+~h776fi񼫔i7^]?ϗ[ o };Y}tawݰԼugmMPKW0!PK!D| res/drawable/ic_coffee_off.xmlUTvT=s1\珀ͤHjr|5P0d!xbf<TԔ >|;IVVҍhK P8ĢCL%3"#btFBQ.hLz&hLn@_h$6\ ޘ̚ד#QTΤ?L*!(eo >J bcɥ|u EXW"L4vὬZ'Z<,1}H/֣չD֙'Hh'l"+3U?U,k~! VWy3Оw*mx~koV4qT)wCeoϴXyۥ>S{.\D;^\'>sFMB)U1^m0qs'|r5k7Fiڼ4A*,u6k9|Ock֜Q5t[rcwVFݴuPݲF85BF5Fשjx38yPKD|PK!t}"h  res/drawable/ic_coffee_on.xmlUTvUnA=ky9"E$\#z6"Q:@HPpD)o7P ~3wf̜sΎ=ETЯ0(Ȟ5vhi/hϴo_ߴ{?>VF8[c,W32s5ׯ9ɖgyj.}x}/>8;1sK9fNcY8[=NRBqw#4&SrR9}GUOrȈQ_z̨"`m3-ɧO$.ʧ6E}1 L@t*^IG:J1}DVPTL6Y^6^ǃ\o1zK FUܾhuMETA-INF/MANIFEST.MFPK|6J\w META-INF/F981D5B7.SFPK|6J'[&4.META-INF/F981D5B7.RSAPK}5JBW1))6META-INF/buildserveridPK}5JBW1))META-INF/fdroidserveridPK!ƈ{v   AndroidManifest.xmlUTvPK!W0! 5 classes.dexUTvPK!D| [res/drawable/ic_coffee_off.xmlUTvPK!t}"h  <res/drawable/ic_coffee_on.xmlUTvPK!)< "res/xml/prefs.xmlUTvPK !0$ $resources.arscUTvPK *fdroidserver-1.0.9/tests/repo/categories.txt0000664000175000017500000000012313323655163021125 0ustar hanshans000000000000001 2.0 Development GuardianProject Multimedia None Phone & SMS Security System Time fdroidserver-1.0.9/tests/repo/com.politedroid_6.apk0000664000175000017500000004030213243623367022261 0ustar hanshans00000000000000PKոJMETA-INF/MANIFEST.MF]o0{g1E+م9dNP7vTZlQ+%;3ǝ˾_>4!DHZfAs \ ,ofd " 3$!l1]ˌ4vnnFʷ9V/ḵ((?Ses&hj3<{!{цꇮAシK^ ˺VVw}b'Ȗ]AwUA^XheϢJfR2;.UM'ëbGB0FpAzx?E Iy0QٲmPn7^m@ ym(Bqt4ت:v8;Nz8x0sPKCzPKոJMETA-INF/RELEASE.SFˎ0=e+rEEHtbSq &sZUAt8Ȍ#u ,)FSׂm.HH u秼#sk 9(")QF Ki|/p7ukm89ٮ%~$/KH%1|PyxFVrp۹5רKUS*pdpiYeCj#T%rF3󲶽_| darwԭ"/*pNNm7  +$կh]<+Q/&ṖЋe"t ~:mB^m&%'6d7IkY‚H&Kz4eK<~V?NH퐇 Sr=wtx%`AИu 0B^:-Kv&z$̕NdAXWNgjfɽeNfMP3w1dSvrfZ-jwzt8?+ϫ(sZߜ&ȫcܶ:NGL^uW3]pQPH*;8o_Ϧ@ ə_۵sފ@Uϧw?ɣlꂤzyↈK#K4M؆>,n 6͐Rvйo;ظפrbW&[([ŒB) )s/WmFFÒv:B4dn[l #IE`炍t}k()JĻצq|w}s=F-\#έ?>:mz5*OuF}2N S2Fs?k*`>{mCQʼnwLGY[lӃJF]WmSn~)2V0M;#` W/Ňzq[z*O`{/Nt ā/sk4č(aQtJBg>{&89n|R;QI~ ٨`!DSAIkNwx|DFu$StlZZ< SX7JUq9aEdh}).ofXg;y?i XQO:Ěw<1>+kt~iu+ PKJ/vPK4DcFAndroidManifest.xmlUKOSAn[ "T)R^&G(T( Дqqa\Wҕ W\4n3J7_g7|̙G# Hj30$DkPuSJEzU >(6V%Ğ*ޙ* e%ܵf=jZGbzӸ.KAgZ,sdMՁ9"}4G_3Y3z13'gr;Y5L) /8J$D+Q$l#lb0'g~ilxoVmXtr[A:~q+ƶµw+wLbT4R0n#qhS.p's=i=#pbo[YT mBbQ\ymՀ-q A}y+J@SCMp{]<g%;5q~Jv(5DG:qs pDq.o9l.c\"u/dm$kۛ-Ha||:@Cu<_%&}Ie7vav Z7wIENDB`PK /DcF22res/drawable-xhdpi-v4/icon.pngPNG  IHDR``F PLTE---mmmCCCFFFFFFᏤ9݃ל!!!PPPNNN'''vvv;sޅ[[[CCC:::AˠCtRNS &+, PL"+$4*=/DCI7M%9O8&:Q'R~\Sji]p`}0@s{?#cglmiIDAThS@iM V`-ĔRM-}+xpC+*K95%HlRhL4yM}2dH,/p09E-=[ O#mV‚cLzt;4,.*tD]62Ke%'6.' S^Q t/BF0a.Su ѩ*L& V0 ZILmmtLTv);.tv%]r@OWp.I^>u@oGppW33<'η7sבvoD7hE8B`)0n@08<?@wp </d5T=0m hc"A`ڽ~1]=}Fʯd -1SXkKaI=;n YIENDB`PK4DcFres/xml/preferences.xmlS104mkBÉᆖ]$"ڨiRNǀ/@$n`ab}5Qn8KO}}v<1zHyLQ{S8g+\|h r]XP.%6h+"!g<^clℯc]Ɠ0KJŒ˞.W~&dߐ1|e&ND&M3! \L/wZJEi""XC,EohR(%3I{4ЭX$!zGT;c'XLP36zfnS܉8|CN0Yˍi4({ \o_1+_:?أ\--b44ym33Oךui<-^ )Mw߼do{7O;/"[{陏߶Mw{~ev4]"9Fsrہ\DWU64 zzDuaz@8 <<|.2c ?灏2cp%~ \F>`>O'Dǁ?>.#Zl_5 -#/vp;Mh 8n^Z6 p8 nnn< .A@`?p@8 |xxxx=wm) T `9zarMǁg׀w_-@8 L7w^5? hA <<<8k%Z4Q)vA19U1P{Dp={\2W JЅpm יV+Uj`-p9(t=f` &A/;Ĉ3 0{}00&0 $ ) KNs>@>f;RsYc&~#9JIЩ#g>ѩ,JajY,Z%ש: $_/ |]IBwJycz%ܣ |WJ.<ۧZl~G3%<}7Ⱦ $w{$k8$y^aɧJsH.G%!Kl_,_+?._}Dm!\]9&`s߉\ڹYe֒3*2MJgwcoBJGlqJ K.:%Vط9Sv$魂vWJA?h:j^ "]VYRNjzA H7苂Wuу6ÂF%I"koW0wzcmǗzqlsNI6}5Iw$}8O}(D_'S:=F~ꣳ:IyĹyn$-LP_]ߎhWyY =:~B鏄_O*iΣ ?t*_ v+hX;p!wk௬|878qvK7OQ? ^A/7mez쌠K$mlpRAIEq3n!t9= F.J:'s^|9.rs} *۵YW6~DsmĹkJ柒+duV/YUaVS}<`?Uؐ?n:%ݩU mҝe=Q:`kK?N ha7ϙBm*Vo]u5`iJկnV=qvy69V> ּ ŠA;Us݊q -JE^6D/= #hW2ĽJ~Pe@l}/~N<_^|Լj6 κ*GjԳNdtŭ"GŪ} >"Tj`8YQWI^>T+E˟_DGDDk.Q][StmEShMCyk7aoHs9YCKߋeW!t?bC̹]#+auLKW1&BmD ktoJO3,#nɌwS kNGDzK7gʓ=5dXƄiwS6'djbio.JLt:Dʚ=Nۘ2l7-|I#ae3*{q kbʊc)!)#32}fLI() nc,]EQA}f&c,OeȔZfF),gNcVނ}̈KXCd67J>`"͙w7Q[gŜI6{miV,OdSSf& k,.wybJ^#v>QEF72f/ggx|MWpXИ2 #=O.2ef#8Wnꦚ(x,BnjRQxI_Ze٦D-u2EdbqO>`eszEwck6̔٬eaSXj*N!^3RӼ?7xf|f {!7l&X6gy{ldk쒭љkms: ?6rRL&x*;g'M=c$x-ĥØҖp)IsHgabfډ51S2dd')T"3~)ƸgYo1mu@i#>X<ӅN{F7l>1ӆm *H(Py"K"kGwoz׮1n"dA280 H#u 9| 9|K:]áyOE Mm6n oya$C*⣭`WEue,3욲l ;'ϔcf?๤l;dxRWL/LQ~D >wgh4UV˝i+<ǜ [zv^<~\3xv@kJylR}=;+E9vF;JR^:*^3:XRk_ó)D)0qw-#] {F~C5*F%R՝,tPPK U>`|)PKոJCzMETA-INF/MANIFEST.MFPKոJMETA-INF/RELEASE.SFPKոJJ/vMETA-INF/RELEASE.RSAPK4DcF{v p AndroidManifest.xmlPK .DcF %Cres/drawable-hdpi-v4/icon.pngPK /DcFbeedres/drawable-ldpi-v4/icon.pngPK /DcF7T//res/drawable-mdpi-v4/icon.pngPK /DcF22nres/drawable-xhdpi-v4/icon.pngPK4DcFX5res/xml/preferences.xmlPK /DcFiV resources.arscPK4DcF U>`|) r)classes.dexPK =fdroidserver-1.0.9/tests/repo/com.politedroid_3.apk0000664000175000017500000004222013243623367022257 0ustar hanshans00000000000000PK{A@FXyMETA-INF/MANIFEST.MF}n@&6 5A֢J*f]vq+, >}mCkǙd8QE14eI1,p5_}tLr(hD!2$߶[&x q,ƸSŒ*LXnPX4:-H,swqSGQU٦?Id1CXȧe$|t{JL7Un.WT1f,) [{>^ #{#5y0|%.\ъ o;3:XXw{d֜_9A. Wz<(5 9 P ټBg>p p3tNޖ/ .]tj2Gbұ7PKSJ4ʸMETA-INF/RELEASE.SF}A0ỉn6 QA)BJ-0L[{ͷ)M CV㊌9i {K)NaK@0wכm`=f 2ٽ·;Ew=m9}Q8ft&PO8y`40'K6K}[33*F+s~[9kXeAI ~0V5{ҹXt|q@˻NV3 ^]9mfjJQҵUM  bPz t)4#3hve:yKQkM5( a?K'm8u>+xC:-آg嚫ZvY#`u|C%'- #mxm?".@]oi (H4g4*PKSJʻvMETA-INF/RELEASE.RSAU;ƌaG.I&AQ$ɥ5ј[ QKLAn<9߉C$ .8!}g]Zzֳֻ@ JB/Y.a MpJx 1 X<YfP>(_ 5%_nb(,N<( c'4ZHhL8 *$r6~82L@o! V-<$iVy*Nd"p 5B*KC264 G~ns,@Â#a K,+ڋrǼM}235Pl '9e_M20oB6`TRFg82=ĺbjRóDϫ H2mnmvQӛxc]Gζ&] )΅kjsU;Ko IOJ arK'w}^qSEM U GBv 7[l 2ՅMOQQE`J:#ꧣs{Kf`HU {L>(ZkqV4Hgd(~s° A$<2UUvnw3Ej~;yXqfM:gq:!^M/W;O>ڃ>x]v,8?Z[|akCɘ.ZD~5<)y{m o`J??1^yXq~I剫B$;%2Q7Ň>Y2SBw s4|@a}I]FLIL"n[9tQ&?\-_jSWPH_ʨ w<VxkIy ֔w d>|[5ê?6՛ vr+f8 0Kk'P} k8)j}`ҸOˋ ΈvJhƹKڵ$ bGXg`EmR{qj'˻mNE `#)''}6ؐv1Qq:Cq߽* SrUgf J9b nB+A绹LyBCWЈ7}|^XV({b>t啿vxXtyŅ`3BXA0.0ǎQ2`Z%hbe_ ~EX nhr >[[sٻUxh2ŗzyxW**h/B:b囤]VyJY[JjnC7*<&f BB!kjakJtM]=6OIMw c7c2t~ff *䔏 ߜ%>8eI2/'޼]]ޗU ֹFEm-<:E%Olf5k4V4DxΈ"Q?5AlO\ҜZ>y .?o>cDHnEk%'ip[GH7I)|,1vj6Oʉ PKwA{:`res/xml/preferences.xmlS=oA}| "dFTABhپ$&|TA/B 蠠@ެz#`罝y3of6@OU@:n&kd=W.w{H*W{"38%Cb3PC`u O)yҖ2NIx̒‶< 3@wxDNv/CTW>a_zDWV@Lu}?⿜ j>a o ADoL[ڗ'4Й|]rrO9Zɔџk1y2]g1:,]kc<_ͻTy:9JmTw3=I"F%B:ncufN=Χ( R3N|R?#"}7W{(gڷ-,kM>ũN`8K?)X9 1B Lm5'~ ,unrշtkZV.e+dG*xb+Fө{sZ5M}MO}5kGwmݖGnxՅ-e,7o}Q_PKwAsAndroidManifest.xmlTnRA=[ʵRG11^qaDhIm.UD`cWuʸ| 'pa|wz30LA{9;g|gfC7'\_q(ω{I&&$A L#DL|%k>p(8B t@ M-Tp(=3|6 E7d+l%d~ >Cwwqw{>dd!*خu!WWY M%G.5CF8ڐ[-2?kysTB (ףM*Ȯr"+A+x%JǶT]{?$v,?JbV.Q*MO]} {'jȹSPtȊ uKfUPZ}jgjS15 8w`5yy"IAXf?59MūkY~TD)kΓUTO G"nZ˚ gg}_3z 9摲<A/Җg~rIB6;1f=6Z?}_"Zkh?3V叛gf-~yފ[<ç v|2Y|nzU˫?Wy>;/:{K>Ûo_PK wA]a( ( resources.arsc ( p2j 28>Zl4tres/xml/preferences.xmlres/drawable-ldpi/icon.pngres/drawable-mdpi/icon.pngres/drawable-hdpi/icon.pngres/drawable-xhdpi/icon.pngMuteVibrate01 Polite DroidEnabled+Activate silent mode during calendar eventsSettings CalendarsSelect calendarsAll day eventsActivate during all day eventsBusy events onlyOnly activate for busy events Phone vibrate$Allow phone to vibrate when silencedlcom.politedroidx0 *8attrdrawablexmlarraystring` &<\<r Fhicon preferences calendarssound_profilessound_profiles_valuesapp_nameoptions_enabledoptions_enabled_summaryoptions_settingsoptions_calendarsoptions_calendars_summaryoptions_events_all_dayoptions_events_all_day_summaryoptions_events_busyoptions_events_busy_summaryoptions_vibrateoptions_vibrate_summary8L<$x8L<$8L<$8L<$@8L<$8D$8@ 8( h$ 0@P`p          PK wA %Cres/drawable-hdpi/icon.pngPNG  IHDRHHb3CuPLTEᶶ9tttwpppfff8RtRNS Y [Y".!:9&B+H*,KLۋYIfe7Ow%XdlprsAGJ EIDATXkW0ZVD`j.v,12&l /jlwd<"ǹ(/1agAbG9ґDBjk3D F6L"Jm)Awvi=(W @ޟ)j:@EDUKA)M#6ӈBoCBGY ِp|#  EZX8hCqoHu/t:3his+] !W?.@6B˅&mR_,qHB3@˭BeŞ4 b;b+fpHq?x-'!8y= HFKk䊌Ps1s'"nr'Xbmgή=mfrO,+Uk4VMϊC)XoD±lՀ-q A}y+J@SCMp{]<g%;5q~Jv(5DG:qs pDq.o9l.c\"u/dm$kۛ-Ha||:@Cu<_%&}Ie7vav Z7wIENDB`PK wA22res/drawable-xhdpi/icon.pngPNG  IHDR``F PLTE---mmmCCCFFFFFFᏤ9݃ל!!!PPPNNN'''vvv;sޅ[[[CCC:::AˠCtRNS &+, PL"+$4*=/DCI7M%9O8&:Q'R~\Sji]p`}0@s{?#cglmiIDAThS@iM V`-ĔRM-}+xpC+*K95%HlRhL4yM}2dH,/p09E-=[ O#mV‚cLzt;4,.*tD]62Ke%'6.' S^Q t/BF0a.Su ѩ*L& V0 ZILmmtLTv);.tv%]r@OWp.I^>u@oGppW33<'η7sבvoD7hE8B`)0n@08<?@wp </d5T=0m hc"A`ڽ~1]=}Fʯd -1SXkKaI=;n YIENDB`PK wANph/ classes.dexZ x\Wu>oE4I^ƖؖK#)^FxwȶɊc4O҄if$'dm]H  R .P(R&$6l)|M!PHBY?7qs9{{xPśgַ+_%n [x͗&DDt|xc߷ۉ6~D7U2 ʉ#z ' XOTlp2rH><|x 8)3'_|,o ^2{&``7o46]w_^^j 3ۀkZ^`Nge x=ނ}ʁ(6 \ 77wGǀO~n%jځ6`;F)`xp/n4(4E'π_%;PĀN`p0dہ)' t\l 9[#cggo?~ b>(nN^ Pކ@FI <<< Y\ `[KF*%B5X;u@p1l  2\\ lv;]|=^`p\;J*`a0\ `i # %g_w-=K>+$Y+E>$mq, )t@>W=%Lul[!m%486UҦQ?jOj9Uoׇ&3EkXe >_WۤjJgY"}r?qٶ^M\0亱o=s DZQ),h}U6QOE{OZ'E0?V"\=*h;}8_Tmn"h-}8'n!c+l˥|ܟt/%h}@ ZKt}VЋqAwҷ9F亮 9I t8߉xTدBqqh; w ZCٟ:9NNSxgAs"1>O|z4u 2nK!߭Vups휋fى+͸ԉf|_}8ϯw B?ξ`VT@|:CWҋ5J$ـ|fs MzzAZqwinjoYRg!qNI8fu::0&V}wӾ ̗:F\7b ꣏E"Kc kc9/Fȹ7}l/hA뤞k^ HANd Rxyo:~o'^C%ڰyhkm\3OC4.;aD70@ 8W 6<..w b.O5lhp9F3ؑK.ۑ-ƒQX~Ӓ>/5z#5"CŔcX㰱ZĔ#΄1$ M˧ڿاJQ9Q,Ld36GEV1Cَ*g-Rswg5o-2i'Vc]iΎvve_3CZVL evOy% hnց!R+z CTſ9~ "ҳΚQ4PDz~_Hֿ""+,ٳX :GU! v=Ts v䙼eLy39]x&1-UD'Mym\6QId8޷ʅ/?\͈o”ws ѨnRbkZ^)yBQ7궘z+Swkq~JF:&FB-eYpx݋"Waq$vAJeҾ`o +{hJYR>25xgbʪ~*Y7$*Bw Y4"Ŋ/4wS( **Im2u*)y{\6gM;7mf-{Vi%uAU*);71+aҲ);N٩%uh鮃:z>%OXfreS-F#%k|*cf*m%m6M.<7\x#X+}L?>R.'r~R~!C( rGOz?Pͤqsz:#mf9ae{awtfyl*dMө1UTXє=g1j*(2Bߙ͘13Rswv9*+I s`Ms^橏ÃE*gnavgԮLjڅ?Ү-hC+_H38[|Ҭ\d*@/PkҴ'{Q/Jys+k6c/sbsy)+2;fL!]V>)FPBUUD\|笝L[)L s7{:huKmwΥ'zh ]s~el,[|*ߑgSykseәt*o9FjX>4Ģ,ҘK"Ͻnx8gkjzэ53Z9\W`fŅO ق$x'e) I,O qJ&mrzEўcִ[.9#\#efOԟMF<$ (42nn6?WaL^N7)h `>#,}$)Z?k_kfEicti e*0ǾKO#u-'j|Ukꔻ}~PS {ɓ{+ڼœFE xQQΊ3k*OJ }(~x\S}bJL:?ס mzS)yK =QXU&f%f-[Օ=ߡ:fpS=u?îo%wJϡNvۋ~DPK{A@FXyMETA-INF/MANIFEST.MFPKSJ4ʸMETA-INF/RELEASE.SFPKSJʻvMETA-INF/RELEASE.RSAPKwA{:`< res/xml/preferences.xmlPKwAs AndroidManifest.xmlPK wA]a( ( resources.arscPK wA %C6res/drawable-hdpi/icon.pngPK wAbee res/drawable-ldpi/icon.pngPK wA7T//"res/drawable-mdpi/icon.pngPK wA22%res/drawable-xhdpi/icon.pngPK wANph/ k+classes.dexPK Afdroidserver-1.0.9/tests/repo/obb.main.twoversions_1101615.apk0000664000175000017500000002633013243623367023732 0ustar hanshans00000000000000PKH@AndroidManifest.xmlo[EnbF1n_nb?) TҨIKH(u&!!9gs!qп!77^%yv3('r(IDj]ysww18ڃ?P&DTA]{t>;= 7(rCh ڄ~~*=z{P5jO{t۰Y*=Q3k1k"Q ŧۧg-R3l9xTijf *ߠ/Ƕ!=akm²Ʀʇ=؀o #Q^QkT_ZŽk*'"1|v.RmUh]x6@ZF'jm]kLնqF5HW᳉?W񎺰?}fq:XULtZqR3z]{!ߟBM)QZeա:S۰quGs}:?Z +;=ygϏSNn7z>@dͻ+Ova..x7}ZQO峎U66bSgݸ 6Б5+ M7|4f *;=dB#nԹ-cGn#v-KʧYyS[̙3E9ӌ aFN:$L0IL2hzr' ]"q04 '6'/k\Գ aVWA~y41es?(<(ybabqqH$[Iq}Yؗq>f&78>d6MJ.ښ#F7F-D޴5^K}Jx)ggq\_p͈7b֘4X}ʲ7i%oп%C7^Fx7ke:; oNq>o ϶s^ /k$yYx94^+兗x +\  xE W^Q,Jo+ o^-o«-oAU,Eۯŷk9{PK@PK H=-res/drawable/ic_launcher.pngPNG  IHDRw=LIDATHǥyPuƟ{².˲ 8ႈ 628yr OCM5V^ʡbY"0,,{DPXϟ>ߋ4zљp a22x@-q &6'xnب4Ռs-<!a^zD\W6=YMQ2ɗw|՟-f̶vJA؜s1Ym®n>/]ҹr8୔@(r1.}j:Oi> DowJ'CRRVJ eMPy|{|7sRNQy(KNnቹM{p՝Ғ6Q:h++-LxȄsՆIT~M≹\{V{TTX@vL (Ćyq]zAnBFZmHocs  Çd6ihh CCfQ!j2OPSեlUY G?15t"GUˢy*(M6\$""DJiujdo5GcF^G"@ Vx\|T$SgOt ::erOK\]Ϟb¶hӫnZ>5^7 S~6B3Щb#RجJ[ =64%1N ('5+٥bvTD%W< `y*VnJK6͵[h8l3PA$M;QZ1[,U3|.nlIuG2 3 eb2V'0`ę&Uڂg ,.!蒎Q1 F|UJvuӆaL06 cLzN׎zXYٹLGBr8#0LmMOS7onDVv͞} DLژ.C{e 󳵴&cY,ZKSiZ=I`҇6%]Nm},ŅU5SN܈mݷ<65}E޷'0CקԄf.̙3;EnK=_d*/r.Ѵ#>)?/Ԟ H\o7aU%(|${hjǜIL~ cS/LҘPPX"1sgsLuP!!"@&849^1|'3}ȕs_-]$IVM1,,D-aEDA̤rIENDB`PKHS Lres/layout/activity_main.xmluN@=[$BHA"5%$ 'Ql*x$ G;es;wofw} ƘMCt- G«& 99w%fmF)B[nTχUПg!F$~"u.m*~RUx:R}o{EO١R3~`)6d?Tޟ#]{ȣ>64u6Z?p̑?gqդ~,ᛙPKS LPK Hchresources.arsc 0<xres/drawable/ic_launcher.pngres/layout/activity_main.xmlOBB Main Two VersionsSettings Hello world! obb.main.twoversions l, 0attrdrawablelayoutstring08Ln ic_launcher activity_mainapp_nameaction_settings hello_worldH\L4H\L4HT4 PKH<>Z$ classes.dex l[u}(Rz"-K$ee[(qDcK]t%['Yz6HʒMӤ k,[:4E--@[-Z,, eAYs{{T^E}8~Ч?߫|-VXoQݘ oYA҉6@y &dʬ!66QT9p\EuS6xv& `'W?wA 3 !U&p<^~ ms"x | ^FQ8ix ;*76xxw &0 )`*> ~\O?_/W 6x0:ZZ 6!p+w"8 .3yo B]p-Ȁ ` >nA ,w+u`)f}`+10 %.Og)E&ՠbMa8.FJה|BOQ 'l7~Znz\tȨCkŮ !cJ(d>.dF,}^߆&;%KB&J>cK7[HveoǮ#žP&m!>KgNQo鯴jy![3"e~7FrTv%99Bř"{,o#\'|ܤf%cDcv'0{3 1W0 @n[m6vO o BF3"ds}=*5A'/":ߌOey:ITW ҼcL')wNf;?r7tH#7KO!ǺpKa27imTJ sB|pm|TZi ˱)ic[D|l%1-(ZM1$9*gpZ' n8 %7`^QmXnљOw79 ~g h3iy&:B-XKb9h#{@͛Q3JzL{d[q-#rJ7E?NK̟˳CaZΚ8c0`ce]}0?ޱd>LFgʹ\s:c5 *{X'Y+bV!3-"Ct\Q[??BźkVexL˳k ;TJuOջ H 54b;,rOi/Knh65:1]hnCxLq}y1'ױuo^u﮲o*T[¶UªWU{WwX7.שmJnWWɭJzad"lS{SL}0&Rb,9QDN,:=&s攊c{ʙFFԼC-=j_t,{jwÖxt+zԝve1LߨP?7&4y>?u[U"#WgO֪F$L_]7194kӮ2{^0_JRK;m! 0ulwܪ`_zDD S}6[շf̀w:ED[[}Kv619SEĚy]+_G[@._=硕 ;q f;j:ER3^ժ@Ey:)2Lɳ2|ԾdئVx=e)vc8O?V*?I;>JZvҷchZ~dU{bW[{R`S)b΢M!~gjM6Ċ*ZUڊv݈x:bUI@EofSj1"8}ǮeZCJB!~wP·&4Ѹp#svu?@+ہzz݊D`SH[D(*ġ|x5a[ÞodVe.U2i4Fn-xMmlm^n8(I?DgZvɼs-]b(Ý]zP흆Mk+*[RwWC;mhȚ]6vX2.~A/2 ]/0^}IC\5A,bdC/vO^`:}gSwZ42Lt-kLKg2Kn c?ncnCc+^h_Yǭ>/ =:Aڔb?/DY~O ~qY{N+7ZC-\nz8+̔$N-+sUy.3?[(jVD[PK<>Z$PKHt|META-INF/MANIFEST.MFmMk0{ߡ /Mء˜NVJEbkFIO?a[Ϗgc)p6zk@a}ӷ`=x NУixl璚F2z݀0:qy(~a8%^8[ X+Z[աѠN<^`[ 7P#Qz[y3~dj fj]B*.W K [ćP/MA_@:O/R @KA#W|IװPKt|PKH7META-INF/CERT.SFmKo@= e"$]hUV18̀\~}i%ݝ|( wPaˌ % y ܓCe\ -y`t:Q(k/GmLb!B~D#N悚]S5h1|V[NFYCkک8MI/quG::Oz\W)Ph#ϭ!Cy \SzȥbrMyx,RUÎcq\ ^lkC}*JJG[#j[)Yc0NQj_\vgnR="1gc0ۨlWȒ Z.?;prJtf;oAUk7WJY9y%7^C۩w)4ۊN#e;,N[Uq4|Wt\Qm42g"p2[׺切-+}-Z~Zwʹ]!]™Y^oɧ Gf.|VE$t%"\\XyO!i+lƾ@ pE:#;׉^hML_FY=s 󭨩kfV!ݬ2#Q[nV߶pEqPi7 =FZ zKL.MH쩉aUlka=ԅ}Ouz"R`>h^M=h柎uϩ+7͎twZ[XOQP}sX5퀝qllxj~6VwTӈ 3g71Sa\dևT3T.uiASbh;kdOVy4f3=Σgxf_q=h$D3N6u֋{bi|'5-ۃ^q@Y#?qÇl nuI57h2ዑ~qp !/?Ÿ AyeVKMfj(Q^z"sڍn?gWM}nP ]!n7p3{{[`i4-^|TbA\ :"T=00+0uTXH\D&J\w(G Š9Kś##ؠD@!|V/Sź`q(&Q/8*!K\b -r=M^· =~o}A7|@pKۿKNtu^cYy5/MS[h,]_y$Z9琗巽1ef}˳vnP]ѽ*_Sz"U烉-Fݒ΋$EO`'i>J|rcW^aL禉cdC|(i!FfZ$ @classes.dexPKHt|5 META-INF/MANIFEST.MFPKH7!META-INF/CERT.SFPKH du#META-INF/CERT.RSAPK *fdroidserver-1.0.9/tests/repo/com.politedroid_5.apk0000664000175000017500000004460113243623367022266 0ustar hanshans00000000000000PKYBIj{META-INF/MANIFEST.MF}Mo@&A@MzC+ԏ-Z4+,}ikZ3<̛q%Yc')(k(~C.(+s*8c)x.K|V%k8h;?ڗV8![lmC.7S J ֮ƥ9n}^9&pJHJ㖪]!q~Fm+FDEݦ jᅨ@VHMYΗ] _OPKTJ8ܷMETA-INF/RELEASE.SF}A0ỉn "x@`A˦B ؂ ~L6[{ͷF UM!!4K*~0?zUQ+ȦPb@/hRnX`)7Ae_BOibGM,2cP*G6K}[R3- ե{﹠SB&E.ƐBB6ܯ)Qe` ]%rtQ_8a7yr ^V Hy릈sȷiT"KxVyV䉕2=\n-qg_i.qN׃Mg=ݖx|;1Fw}VTM.2B ĪQ;zHM?( o 2HاhZ62G9`DteVlܵS)lτ?PKTJeuMETA-INF/RELEASE.RSAU?ԋ(K"kc6 t&l=>(Rp8!ɞm,E{rr{~y0ԡƱ_x@!0!R#a "x!ґ ^%ؗG|K g- Zq$nZFzyBbŃ0 tݠJYҨdH;apܶ^ _HldQ$^ V.H('l[}aX{iTޏ%eR (%osI-^֫v,eCwIQ-»d%0eˋ4%,M'۫^֧Eaܤ ʯV\L,Ƨ<v1E3FuF*\@_yݻiv8Lt/љx(~|}W-d[ET$7|6L+c-y'9 jRU@f=#ǥʽ6 {vMaW7LE[QxAaKV?8ꍎ\oky]葺i$^zS8S(ڶAU?\$DM9p%jhG6s Ij!O2O{HF s{PKYBPres/xml/preferences.xmlUnA=PhH}J&~l[޵E j J*D?t B4pxVNxv;3"xXz_"׈bL<#^?_Ěn{sq=%o7C8dVZCbkSWPKՖԑV +,)=Vtg|QwE}gS S&K893]'DR#NR?9%|}/yW7k- +|!1ۜVLx&F󝂹~kZqyB_t7MNl [5URײ[\Y$ Wy\B#-Q[=oW37}7_ung,]/͞d6ná[2q.s\˚9/,)E9K٪ik:ꫤ_ y^2y-_~ղW {PKYB?}5WAndroidManifest.xmlUNSQ].2 FMƄ<Tj-Rii/#ġЁo0~_Й=m ܛs:{}>HO00\G|O &qD|"߈bSDs7(l3I">pxG|$Έ^F+8>Lr(H?"&+ U%vתOD5 ǶıXwJp}*W9Vd .}|kޥN5@"i*mkoօDhdiY,ܠj>ଋd MZ>qtAe<BƿU^5js-Y V2^q5Xeo[WX"pVu[g-bYW·$kcv}p#)U5G2z|aoVcGUJ^bup!~IU^PGlfek2zVY+:YFk1dЪBź?fU9v*yDQ!|x^ӘiR ݦO~ __FJ(ǫ55s*+T++;\kQ-T4Ռ!ېzKU/E=z~X⎞KJ8b'6nFfԷa6{sM4?sS-ؚ;6j6N͢~Vo';Mޔ`$˧"u~C?*}Z _V=5gLF"9X~4-?PK YBg)HHresources.arsc H2j6LXlvZn,jres/xml/preferences.xmlres/drawable-ldpi/icon.pngres/drawable-mdpi/icon.pngres/drawable-hdpi/icon.pngres/drawable-xhdpi/icon.pngfifteen minutes half hourhourhalf dayday900000180000036000004320000086400000 Polite DroidEnabled+Activate silent mode during calendar eventsSettings CalendarsSelect calendarsAll day eventsActivate during all day eventsBusy events onlyOnly activate for busy events Phone vibrate$Allow phone to vibrate when silencedUpdate interval&Interval between checks for new eventsd com.politedroidx0 *8attrdrawablexmlarraystring|h &<`BxLnicon preferences calendarsupdate_intervalsupdate_interval_valuesapp_nameoptions_enabledoptions_enabled_summaryoptions_settingsoptions_calendarsoptions_calendars_summaryoptions_events_all_dayoptions_events_all_day_summaryoptions_events_busyoptions_events_busy_summaryoptions_vibrateoptions_vibrate_summaryoptions_update_intervaloptions_update_interval_summary8L<$x8L<$8L<$8L<$@8L<$8D$\     H8Pp$ 0@P`p     PK YB %Cres/drawable-hdpi/icon.pngPNG  IHDRHHb3CuPLTEᶶ9tttwpppfff8RtRNS Y [Y".!:9&B+H*,KLۋYIfe7Ow%XdlprsAGJ EIDATXkW0ZVD`j.v,12&l /jlwd<"ǹ(/1agAbG9ґDBjk3D F6L"Jm)Awvi=(W @ޟ)j:@EDUKA)M#6ӈBoCBGY ِp|#  EZX8hCqoHu/t:3his+] !W?.@6B˅&mR_,qHB3@˭BeŞ4 b;b+fpHq?x-'!8y= HFKk䊌Ps1s'"nr'Xbmgή=mfrO,+Uk4VMϊC)XoD±lՀ-q A}y+J@SCMp{]<g%;5q~Jv(5DG:qs pDq.o9l.c\"u/dm$kۛ-Ha||:@Cu<_%&}Ie7vav Z7wIENDB`PK YB22res/drawable-xhdpi/icon.pngPNG  IHDR``F PLTE---mmmCCCFFFFFFᏤ9݃ל!!!PPPNNN'''vvv;sޅ[[[CCC:::AˠCtRNS &+, PL"+$4*=/DCI7M%9O8&:Q'R~\Sji]p`}0@s{?#cglmiIDAThS@iM V`-ĔRM-}+xpC+*K95%HlRhL4yM}2dH,/p09E-=[ O#mV‚cLzt;4,.*tD]62Ke%'6.' S^Q t/BF0a.Su ѩ*L& V0 ZILmmtLTv);.tv%]r@OWp.I^>u@oGppW33<'η7sבvoD7hE8B`)0n@08<?@wp </d5T=0m hc"A`ڽ~1]=}Fʯd -1SXkKaI=;n YIENDB`PKYBXW5 classes.dex[ |\e?ΝG&t2ivh;INi !ii2iCh˶m20LB -DJ, "Z]e}ʂADPw;sꦿιuI'eWMvT,;ms׎>{Z":Է&D5Do%42hb"zo=;/O^^ DDu@'p-p?SsL3 Wׁ7e@% `N Ffcmq^+@Q.!iU%6SS @ s;')ppEq4:Xk@x;p;p/U)E@Y_f`w| M{?~ xPWyz\ Kˀf @x%ˁ5@.W&p5p A'OO?^cD@X$4w<}h@p Ɓcm=#//o0X ځMnL&VNsǁ͘ [; x xm@n> >NgXB[Jp9IR CL)jhp.m@;/N 6[ۀ .`p! v}%`/ `?pH=Uہk#d'%?GCK~X>TsurXr I{%cIHt%$.mS%m%Q)RU'VʗHA)g\/5r(pIJJ{}Kߖmc>2R&"y[>&?>9fO;x{>ͲmO;!ɯqk><ױZ8_XquH?*yN$s|u])h};hp=~z}>3qذKC~:sm?WKc5?%u z.p׋}KnCΡa[]!~HҏH?J5߉o A$W,#i}P}NTGJ z.}WзѯB['w!~c yk藂< zetOː~N|ĹO / ZG_!K¾Y^A,q.tLJz8UG>-Ft=, I_'We\E!+w= hDƸ:ՆU<$*z8mĹl6O9Auz8[4O7,F|oI U/0H_"nu^蘠ςΥSZ~e_먜#z^Ŀ_{9QOwV4u0}Ay@¾=[a2-ETvc j{k1k'7A\+ΡO $~,E|sOJq= j٭ -:D|oQ1b+q9~FZOT׈k*o]"5~7CbѨ7c%]*e󿋸,"/V Z4 X ꡯ ~K\. E{}95ֳKʹ^)WK}oLjYuQvHoR!$7H:I7/A/ٓ}wc4N(2͓yloк wb81 ZRMk:ڪjde"Ϣj꣸=-?j{*}IUU~+ɹE2<2qaMUT!|L>yᓮ:<P[ԢvPk h\zq~UVM8W!Ǽwz1_ZU_|+ժ"v E~gTa0JW*VVc//ShQ<Q#U!?p)4/K0{^c/^uAZsgn 1aY\vDw>6XiE]𫂝h;RĤRaHZ*or1'L'LCXOF xꭘ 3JqQ[ܶ]/ӗb۶i.m}hm 쐋+XsX`£(hXd9Bk0qz8fZ}fk% >((*V~(N+-ʏ'iSB/Zk㱽5kgc~3\Z)TΪ~ozᢊ)肿y-݈[Mޡc [Ыo*߆ +h]TqaRy} 0VPnĮd`[ }D鼺%׮r>nTe9 [5͝/VLcQQ;)V G-/cIa) #Esnw@\\Z-#maw֛`]iVu8"/77rO~UO5&Z-\3b/O;ziѢ{w+)3Iٻ78_ڭ%uXl"K=zB^z=be t?#f~q,pe UݏRò<~whaiX -wcY:l;=pT9C{4k&>U=PZl{U؅J yoU9N˵UVކcq1V93A:'9:cT=`Yx6!88gMmVH gE:9WP QC7 Hw! [-!sޣmoP_|`= ˧&zDgn{^WiLX;-Q7qGqh}!MDQS}FdFni=17CZzUl(4 ]pϸt?~ZֺOYnvèLWd ZWm>=D-B` QWs9`ŵ-v~}~_PD~-V![J nV~DXYBr46(7`[$n.gM6V⮴]ԣ z3G$5c5;xMQxF\1M̥zv\Uz1̈wKyD3L"QQT*~?*> Pz_aPTNU[%3b=*־}#fVܱA Z)|cz!ZA11 "LfRU%f$")oq%ⓑ}} +~V>Igx\ߕ5aB+(v@a^ o{x9givR{v 1\^W9]A<; _?|9}9k_V7:XGEs,rac1dq=Op q>K>}ςG̭YT^g_o.ň}lu߄ֿ)>S図kY?ܰrՑEc]? ՆlP+|#Bׄ&Y N]+2Z'd ]2pka]$tmIA[դ>м>0mlDG_ksk(ٶ_9.K4.g;wdﳾMcV46@ؾZB8vQycYn٘"TzU1N $9c^s@̭ڨMحvv{֓fJY$3B^!`uɌa锞wr!mJtR]?fӬX怑]9dkȤtay-JtlJt^J;n޻.j4 y~ޝKG:h81 ٤L3F<ҦhҶs??ƒ-Y`.g֭E\̏$s9pBhK3/m6J]]b&&O)HEJT% T$n =R$HKoOBhyI [.NŒ##L27ܝ4F"tF9d73)67dd$H +e6j(*B۔&S|a1`'ouZtfɂLy&aSTxq=); "rMjFs؋_:Ek1AH+FqK*]bgaÜ,JFiS=6bCa_Aɛd!ُyLs}ŰJ'cctjMBjl>iLe G Jl% :pӅm _vr10ҙXGI`2Dv{ ;f~3Ӫ[9wz6}.9\(.3yogl|Km[j1:FXJH‰rZ}XQqPz`g CzaaC !x2va+VL2gD[ #V8]1*j NN!G9&DIw0!S1Qf dNT}M"g2=5 YQБGjJuj 4T>>~Jte{5|j3FlibЎ u/ $˱̭찝ɝky-͓jH.;Fy0x{+Ōh<(8=\c,ڕ$1s!Nm\rf9L#Y*w)ĢJ:f`hE4b1ĖR]\E?y yL.b;Uf亳)fq\X*ŊHA~)uǽRc˔'eCvv&O:ߍ+2GGְ oq #q7+j&f2Ŏ=|v2ʬi\;9Sl"!Ղqr5,TVLh܋#iތY *w";kT=ILslȴ|Ofn9{a$A >A8X#cHBnda» ܟSyNaHxFU;LΦ3d}?۲פQM&L[?ۋ/SPKYBIj{META-INF/MANIFEST.MFPKTJ8ܷMETA-INF/RELEASE.SFPKTJeuMETA-INF/RELEASE.RSAPKYBP< res/xml/preferences.xmlPKYB?}5WAndroidManifest.xmlPK YBg)HH]resources.arscPK YB %Cres/drawable-hdpi/icon.pngPK YBbee#res/drawable-ldpi/icon.pngPK YB7T//4%res/drawable-mdpi/icon.pngPK YB22'res/drawable-xhdpi/icon.pngPKYBXW5 .classes.dexPK Ffdroidserver-1.0.9/tests/repo/patch.1619.obb.mainpatch.current.obb0000664000175000017500000000000613243530567024607 0ustar hanshans00000000000000dummy fdroidserver-1.0.9/tests/repo/obb.mainpatch.current_1619.apk0000664000175000017500000002632713243530567023621 0ustar hanshans00000000000000PKH&AndroidManifest.xmlMo[UڎcH4͇6Nĉ? i *j"JƁMu VKXw?5B,sGz}H4 ENGԠ+rzfP͌`ò tQl簷->C8M\瘚g_Q=T3T|G_!mQ=`kmrCm1 ؂o#v^ѤwwZŵk*ۇ"|'VkJU)XUN&:Qft3cvNt3#@r>wv%:i(0`-* u**k :51 oߛ*{e^?1jcW2*'EթVUrgQk5qTsqDRSlw9x9%NU/5tkj;@ּ?rˌpi[]hKkgQ;tq3uĦ q #70n4w"}&/|4f*}w6ۢ7wnؑE~Rl;|}93zj8g0='{z3#پ#MB$߈&c9r$4 5'Pǁ"<9>{kX_xq_gDFcM|7+ :sBcb{ MHw/'[x`x4k\h+jW+ J^YxeboEZxUj޹f#} 6]|;cPK&PK H=-res/drawable/ic_launcher.pngPNG  IHDRw=LIDATHǥyPuƟ{².˲ 8ႈ 628yr OCM5V^ʡbY"0,,{DPXϟ>ߋ4zљp a22x@-q &6'xnب4Ռs-<!a^zD\W6=YMQ2ɗw|՟-f̶vJA؜s1Ym®n>/]ҹr8୔@(r1.}j:Oi> DowJ'CRRVJ eMPy|{|7sRNQy(KNnቹM{p՝Ғ6Q:h++-LxȄsՆIT~M≹\{V{TTX@vL (Ćyq]zAnBFZmHocs  Çd6ihh CCfQ!j2OPSեlUY G?15t"GUˢy*(M6\$""DJiujdo5GcF^G"@ Vx\|T$SgOt ::erOK\]Ϟb¶hӫnZ>5^7 S~6B3Щb#RجJ[ =64%1N ('5+٥bvTD%W< `y*VnJK6͵[h8l3PA$M;QZ1[,U3|.nlIuG2 3 eb2V'0`ę&Uڂg ,.!蒎Q1 F|UJvuӆaL06 cLzN׎zXYٹLGBr8#0LmMOS7onDVv͞} DLژ.C{e 󳵴&cY,ZKSiZ=I`҇6%]Nm},ŅU5SN܈mݷ<65}E޷'0CקԄf.̙3;EnK=_d*/r.Ѵ#>)?/Ԟ H\o7aU%(|${hjǜIL~ cS/LҘPPX"1sgsLuP!!"@&849^1|'3}ȕs_-]$IVM1,,D-aEDA̤rIENDB`PKHS Lres/layout/activity_main.xmluN@=[$BHA"5%$ 'Ql*x$ G;es;wofw} ƘMCt- G«& 99w%fmF)B[nTχUПg!F$~"u.m*~RUx:R}o{EO١R3~`)6d?Tޟ#]{ȣ>64u6Z?p̑?gqդ~,ᛙPKS LPK H3".resources.arsc 0<xres/drawable/ic_launcher.pngres/layout/activity_main.xmlOBB Main/Patch CurrentSettings Hello world! obb.mainpatch.current l, 0attrdrawablelayoutstring08Ln ic_launcher activity_mainapp_nameaction_settings hello_worldH\L4H\L4HT4 PKHqbDŶ( classes.dex{luϝ%KpWԾ(qH%Zʲɔe2,բdj"#rjvz԰dŎqqmXp.y4IpQ#uZH1&6Z)NF.GD7s{̲䜍l~0y;zjɶzpvp Q5ED/oh+mD߁C#jYEd4Qp\OW߁W]0:h 8 >  9`;5USx%{ y0.-"Z> e2G`߀ p̀Sl#`;(<.+i%p || ° &ʃ@=dl`#6!0Ip+ >0 v;.S$|WJz[4溮4GL*d~OW),)\* υ)({JUu1ީMj~Wz7IC!֐3 鉐 ЧBeG> (S&5f;F|$ui.R򂈥MԪbiIӽ*Pi%kc!Wѣb] :)ִ2?DŽV麒ωr Ѣ&0 Mtz5RfhF82dJB1! JZbkD$;(dN)Y2MTsJ>E<ֳDŽq9aTN?-)o ;]g)ᴲ_12XE|KU;< A_1,1#Bv*N_qGU!8Sd^/ωEۇ BY_%+AݭE RA!`0#ߎWN{B`-32|FDLvKٿ"C_P7ȯ  r̿ +ȿOy2yPRCւLQP`gnD~w.Ψqcҷ 3h~ /1cm9};-;m]젟|ЇVmĖ խX#A7Cyy{(ڊۍ$)@: _E+VX"||;VjdEآ-m>cBy9f/zqSFLU~iu6:+j} ~%exד>0v`;À&.VU<]XcԆfzǒ17m2:mkv^V2hgY]xo>;DGƣq~uʞ)/ϮiP(ҴGO0/;Wg<=iy {ٮӇwYa<)V,ջsRxLKuyVkŜuv7L+MH߿"]ZH?"7H_M{ĺqFmVrH^%7)9`={X20.`ꛉMXcA}cloVǝDHl'Ew[EڮQ2n4{'-'%gy~͚ X%7}'\o^&cG ̂[v,l-D8?J!۽u.:7QMVpbY3d>(N`W2V`I6Cv_6dUj;P9rEMED]Ů-Awn|B۵ZK&mݴL>kDꛔDxPg8%OR{&CD8677b^bGI;(?SBG i(}sq{nΩVP*%{ǫNUjx pXYjA{ܳBs`n]r(— 2)PEJvͦdɩU"OzcܩǑJ-"P \JW!}֙0[U)oj{Є&nlީHqe`רHT;mwji~Ev(lV v8egUj[pe?(ru͝;^Qkr˖-Ԏjm:8UJ͸T;1VhT?ګ5ۛsxqDbA9 ^yRk>"Ÿ#R 4vOsYY1FTU*|WJ|Pz=p-dXt!:ƙEvvl*^NXnjNi3{FמeΝuگ9}Ξc?.F^A6bEuڦ=>8OÌ8^DE:Ŏ:NxC>快\~<&kicCu!u?2-q#n}Ngt%Etmuu7ehnkaɡύjX~fF% 'b;G;>V'ti㱗:ZC-l-",W#;fHf[f(chmIJVhllaPˡ}M큦`S"kF~eqv? zQT<%|>r_<6DU~JcWE"e^y]|>.ɤaOk֫y-f4]rhlVf?*0?F.d>5c1o៥-9H'jve qN;[7D=;n1K~w==joc%3w Sd*/~go<ÒCU}.;PKqbDŶ(PKH +META-INF/MANIFEST.MFm]o0s[sdLqjļ@mAl&NUR1VnFORД_ʯ`ݹHȽi2ڵnſ9KMc6}_CBP buz맇vknIC$ J.J 8${0ku\fjQS(EL a=# T{zAKL R gp-/Mp%S{opRWseZ 7G@lPK +PKH|e8META-INF/CERT.SFmn@= E-(I\Ա ÈAf@ԧ1m_YX]a.H,EZr PlDϲz$ƢP}:X[A1|F,j4>}%Y[ʯi4y-e7 ) #%7:E3ⰂamX2\;zx}1v4{prOv; tVuspcK*ŭPK|e8PKH3dxMETA-INF/CERT.RSAU;NbR%Z̗(UZ -.*-R;S E)c_2]6`RZVRƌZR2u{?0?yyssPqAdOP$PBC]i@  PC@%4x1H4@@mP𗔫 J 8熑R eD ȃr{e$>? !.D`$@Q10)Y+|py@X`xDȕS!0*ɉbNzXu=`@?? P밠pCB B*&ˌbΚgj 9p[vnl wbR)FlvlClI;@7C(l)Z^w߇A+6XX[ZU ɕV%-S =^)TUA!{8!9EPEv(CwJUԺ6FUC%%ex"}۠[ws$Jv^x )JjK8 *:MG2ֲ]p>4z ow'd{vs|Dьc'1B׏{5N'A;Wm5jṙLl@lӂN0;|Z=o@"fni.d2$!Jƾ:eo6򲙚\]. &:9l'cFhb>C;6 ; ی<8sGPܱWcZ4"fHı> PyAHM $k'pΖS] lsղUcb;vaAoE[:K̦֒]s>Z쾇/[|t|fbWQ4L] n']@8r5qVx7T} fu1^=isxq u=B՚&qP ͊7HXx'秙M3C9®1QU7"S%|ءNoij\/]lHi7u4G6> }V _Y˘o^l:0<dl+2tXVw=οX[Y@1&pi'L'T&_$_‰;-FMɕ b$U_&>[.F~'Bze漴꒐('_lbffalQʺա-MKo$ވ=ʷvbZ͉!X1H0cFu-k}"aGc?e_d8t? VSgj3d.rA(5ViUpETa8[ksߎ-]Jbzm'Qze/Eɹ^c5 -va#v/*Dd >g[ZgT{z-( fAw#bu֤YϻƟ[?!,nw%Zs̚--Q#[x{-џ U_Ug|vnoH"ŋDb %6n<J|}KgmT2r8Il4t=}ZJ 5_Y;3ny[:q-Vfٷdfd:S@PK3dxPKH&AndroidManifest.xmlPK H=-res/drawable/ic_launcher.pngPKHS L res/layout/activity_main.xmlPK H3".) resources.arscPKHqbDŶ( @classes.dexPKH +/ META-INF/MANIFEST.MFPKH|e8!META-INF/CERT.SFPKH3dx"META-INF/CERT.RSAPK *fdroidserver-1.0.9/tests/repo/index.xml0000664000175000017500000004471413323655167020112 0ustar hanshans00000000000000 This is a repository of apps to be used with F-Droid. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitlab.com/u/fdroid. http://foobarfoobarfoobar.onion/fdroid/repo https://foo.bar/fdroid/repo souch.smsbypass 2018-04-26 2018-04-26 Battery level

Filter SMS and show them in a fake app souch.smsbypass.9.png <p>In order to keep away curious eyes, SMS-bypass filters incoming SMS messages before they reach your inbox. Based on bughunter2.smsfilter.</p><p>Features:</p><ul><li> Discrete fake app "Battery level": Long tap on Battery percentage will show SMS.</li><li> Filter incoming SMS specified address: redirect the SMS to SMS-bypass messages list; remove SMS arrival sound or vibration; show a discreet notification icon (battery level); vibrate if checked in settings</li><li> Add contact from contact list</li><li> Export messages to a text file</li></ul> GPL-3.0-only Phone & SMS Phone & SMS https://gitlab.com/souch/SMSbypass https://gitlab.com/souch/SMSbypass/tree/HEAD https://gitlab.com/souch/SMSbypass/issues http://rodolphe.souchaud.free.fr/donate cad90e036b975ed129a3ce80a0750466 0.9 9 0.9 9 souch.smsbypass_9.apk 80b0ae68a1189baa3ee6717092e3dbf1a4210165f7f7e5f2f9616bd63a2ec01d 81295 8 18 2018-04-26 e50c99753cd45e2736d52cb49be07581 READ_CONTACTS,READ_EXTERNAL_STORAGE,RECEIVE_SMS,SEND_SMS,VIBRATE,WRITE_EXTERNAL_STORAGE duplicate.permisssions 2017-12-22 2017-12-22 Duplicate Permisssions Test app for all possible <uses-permissions> duplicate.permisssions.9999999.png <p>No description available</p> Unknown tests tests 9999999 9999999 duplicate.permisssions_9999999.apk 8367857fe75f85321ce2c344b34804d0bc193707f6ba03710d025d9030803434 27446 18 27 2017-12-22 056c9f1554c40ba59a2103009c82b420 ACCESS_NETWORK_STATE,ACCESS_WIFI_STATE,CHANGE_WIFI_MULTICAST_STATE,INTERNET,READ_EXTERNAL_STORAGE,WRITE_EXTERNAL_STORAGE fake.ota.update 2016-03-10 2016-03-10 fake.ota.update_1234 Tests whether OTA ZIP files are being include <p>F-Droid can make use of system privileges or permissions to install, update and remove applications on its own. The only way to obtain those privileges is to become a system app.</p><p>This is where the Privileged Extension comes in - being a separate app and much smaller, it can be installed as a system app and communicate with the main app via AIDL IPC.</p><p>This has several advantages:</p><ul><li> Reduced disk usage in the system partition</li><li> System updates don't remove F-Droid</li><li> The process of installing into system via root is safer</li></ul><p>This is packaged as an OTA (Over-The-Air) update ZIP file. It must be installed using TWRP or other Android recovery that can flash updates to the system from the /data/data/org.fdroid.fdroid folder on the /data partition. The standalone APK is called F-Droid Privileged Extension.</p> Apache-2.0 System System https://f-droid.org https://gitlab.com/fdroid/privileged-extension https://gitlab.com/fdroid/privileged-extension/issues https://f-droid.org/about 0.2.1 2000 897a92a 1234 fake.ota.update_1234.zip 897a92a4ccff4f415f6ba275b2af16d4ecaee60a983b215bddcb9f8964e7a24c 233 2016-03-10 obb.main.oldversion 2013-12-31 2013-12-31 OBB Main Old Version obb.main.oldversion.1444412523.png <p>No description available</p> GPL-3.0-only Development Development https://github.com/eighthave/urzip 1Fi5xUHiAPRKxHvyUGVFGt9extBe8Srdbk 99999999 0.1 1444412523 obb.main.oldversion_1444412523.apk c5f149e526f89c05c62923bdb7bb1e2be5673c46ec85143f41e514340631449c 14323 4 18 main.1434483388.obb.main.oldversion.obb d3eb539a556352f3f47881d71fb0e5777b2f3e9a4251d283c18c67ce996774b7 2013-12-31 eb41d4d6082bb3e81c3d58dbf7fc7332 ACCESS_NETWORK_STATE,ACCESS_WIFI_STATE,BLUETOOTH,BLUETOOTH_ADMIN,CHANGE_NETWORK_STATE,CHANGE_WIFI_MULTICAST_STATE,CHANGE_WIFI_STATE,INTERNET,NFC,RECEIVE_BOOT_COMPLETED obb.main.twoversions 2015-10-12 2016-06-20 OBB Main Two Versions obb.main.twoversions.1101617.png <p>No description available</p> GPL-3.0-only Development Development https://github.com/eighthave/urzip 1Fi5xUHiAPRKxHvyUGVFGt9extBe8Srdbk 99999999 0.1 1101617 obb.main.twoversions_1101617.apk obb.main.twoversions_1101617_src.tar.gz 9bc74566f089ef030ac33e7fbd99d92f1a38f363fb499fed138d9e7b774e821c 11481 4 18 main.1101615.obb.main.twoversions.obb d3eb539a556352f3f47881d71fb0e5777b2f3e9a4251d283c18c67ce996774b7 2016-06-20 b4964fd759edaa54e65bb476d0276880 0.1 1101615 obb.main.twoversions_1101615.apk 7b0b7b9ba248e15751a16e3a0e01e1e24cbb673686c38422030cb75d5c33f0bb 11480 4 18 main.1101615.obb.main.twoversions.obb d3eb539a556352f3f47881d71fb0e5777b2f3e9a4251d283c18c67ce996774b7 2016-01-01 b4964fd759edaa54e65bb476d0276880 0.1 1101613 obb.main.twoversions_1101613.apk cce97a52ff18d843185be7f22ecb1a557c36b7a9f8ba07a8be94e328e00b35dc 11477 4 18 main.1101613.obb.main.twoversions.obb d3eb539a556352f3f47881d71fb0e5777b2f3e9a4251d283c18c67ce996774b7 2015-10-12 b4964fd759edaa54e65bb476d0276880 obb.mainpatch.current 2016-04-23 2017-06-01 OBB Main/Patch Current obb.mainpatch.current.1619.png <p>No description available</p> GPL-3.0-only Development Development https://github.com/eighthave/urzip 1Fi5xUHiAPRKxHvyUGVFGt9extBe8Srdbk 99999999 0.1 1619 obb.mainpatch.current_1619.apk eda5fc3ecfdac3252717e36bdbc9820865baeef162264af9ba5db7364f0e7a0c 11479 4 18 main.1619.obb.mainpatch.current.obb d3eb539a556352f3f47881d71fb0e5777b2f3e9a4251d283c18c67ce996774b7 patch.1619.obb.mainpatch.current.obb d3eb539a556352f3f47881d71fb0e5777b2f3e9a4251d283c18c67ce996774b7 2016-04-23 b4964fd759edaa54e65bb476d0276880 com.politedroid 2017-06-23 2017-06-23 Polite Droid Calendar tool com.politedroid.6.png <p>Activates silent mode during calendar events.</p> GPL-3.0-only Time Time https://github.com/miguelvps/PoliteDroid https://github.com/miguelvps/PoliteDroid/issues 1.5 6 1.5 6 com.politedroid_6.apk 70c2f776a2bac38a58a7d521f96ee0414c6f0fb1de973c3ca8b10862a009247d 16578 14 21 2017-06-23 b4964fd759edaa54e65bb476d0276880 READ_CALENDAR,RECEIVE_BOOT_COMPLETED 1.4 5 com.politedroid_5.apk 5bdbfa071cca4b8d05ced41d6b28763595d6e8096cca5bbf0f9253c9a2622e5d 18817 3 10 2017-06-23 b4964fd759edaa54e65bb476d0276880 READ_CALENDAR,RECEIVE_BOOT_COMPLETED 1.3 4 com.politedroid_4.apk c809bdff83715fbf919f3840ee09869b038e209378b906e135ee40d3f0e1f075 18489 3 3 2017-06-23 b4964fd759edaa54e65bb476d0276880 READ_CALENDAR,READ_EXTERNAL_STORAGE,READ_PHONE_STATE,RECEIVE_BOOT_COMPLETED,WRITE_EXTERNAL_STORAGE 1.2 3 com.politedroid_3.apk 665d03d61ebc642289fda697f71a59305b0202b16cafc5ffdae91cbe91f0b25d 17552 3 3 2017-06-23 b4964fd759edaa54e65bb476d0276880 READ_CALENDAR,READ_EXTERNAL_STORAGE,READ_PHONE_STATE,RECEIVE_BOOT_COMPLETED,WRITE_EXTERNAL_STORAGE info.guardianproject.urzip 2016-06-23 2016-06-23 urzip-πÇÇπÇÇ现代汉语通用字-български-عربي1234 一个实用工具,获取已安装在您的设备上的应用的有关信息 info.guardianproject.urzip.100.png <p>It’s Urzip 是一个获得已安装 APK 相关信息的实用工具。它从您的设备上已安装的所有应用开始,一键触摸即可显示 APK 的指纹,并且提供到达 virustotal.com 和 androidobservatory.org 的快捷链接,让您方便地了解特定 APK 的档案。它还可以让您导出签名证书和生成 ApkSignaturePin Pin 文件供 TrustedIntents 库使用。</p><p>★ Urzip 支持下列语言: Deutsch, English, español, suomi, 日本語, 한국어, Norsk, português (Portugal), Русский, Slovenščina, Türkçe 没看到您的语言?帮忙翻译本应用吧: https://www.transifex.com/projects/p/urzip</p><p>★ 致用户:我们还缺少你喜欢的功能?发现了一个 bug?请告诉我们!我们乐于听取您的意见。请发送电子邮件至: support@guardianproject.info 或者加入我们的聊天室 https://guardianproject.info/contact</p> GPL-3.0-only Development,GuardianProject,1,2.0 Development https://dev.guardianproject.info/projects/urzip https://github.com/guardianproject/urzip https://dev.guardianproject.info/projects/urzip/issues 1Fi5xUHiAPRKxHvyUGVFGt9extBe8Srdbk 2147483647 0.1 100 urzip-; Рахма́, [rɐxˈmanʲɪnəf] سيرجي_رخمانينوف 谢·.apk 15c0ec72c74a3791f42cdb43c57df0fb11a4dbb656851bbb8cf05b26a8372789 11471 4 18 2016-06-23 b4964fd759edaa54e65bb476d0276880 fdroidserver-1.0.9/tests/repo/index-v1.json0000664000175000017500000005411713323655167020605 0ustar hanshans00000000000000{ "repo": { "timestamp": 1502845383782, "version": 19, "name": "My First F-Droid Repo Demo", "icon": "fdroid-icon.png", "address": "https://MyFirstFDroidRepo.org/fdroid/repo", "description": "This is a repository of apps to be used with F-Droid. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitlab.com/u/fdroid. ", "mirrors": [ "http://foobarfoobarfoobar.onion/fdroid/repo", "https://foo.bar/fdroid/repo" ] }, "requests": { "install": [ "org.adaway" ], "uninstall": [ "com.android.vending", "com.facebook.orca" ] }, "apps": [ { "categories": [ "Phone & SMS" ], "suggestedVersionName": "0.9", "suggestedVersionCode": "9", "description": "

In order to keep away curious eyes, SMS-bypass filters incoming SMS messages before they reach your inbox. Based on bughunter2.smsfilter.

Features:

  • Discrete fake app \"Battery level\": Long tap on Battery percentage will show SMS.
  • Filter incoming SMS specified address: redirect the SMS to SMS-bypass messages list; remove SMS arrival sound or vibration; show a discreet notification icon (battery level); vibrate if checked in settings
  • Add contact from contact list
  • Export messages to a text file
", "donate": "http://rodolphe.souchaud.free.fr/donate", "flattrID": "cad90e036b975ed129a3ce80a0750466", "issueTracker": "https://gitlab.com/souch/SMSbypass/issues", "license": "GPL-3.0-only", "name": "Battery level", "sourceCode": "https://gitlab.com/souch/SMSbypass/tree/HEAD", "summary": "Filter SMS and show them in a fake app", "webSite": "https://gitlab.com/souch/SMSbypass", "added": 1524700800000, "icon": "souch.smsbypass.9.png", "packageName": "souch.smsbypass", "lastUpdated": 1524700800000 }, { "categories": [ "tests" ], "suggestedVersionCode": "9999999", "license": "Unknown", "name": "Duplicate Permisssions", "summary": "Test app for all possible ", "added": 1513900800000, "icon": "duplicate.permisssions.9999999.png", "packageName": "duplicate.permisssions", "lastUpdated": 1513900800000 }, { "categories": [ "System" ], "suggestedVersionName": "0.2.1", "suggestedVersionCode": "2000", "description": "

F-Droid can make use of system privileges or permissions to install, update and remove applications on its own. The only way to obtain those privileges is to become a system app.

This is where the Privileged Extension comes in - being a separate app and much smaller, it can be installed as a system app and communicate with the main app via AIDL IPC.

This has several advantages:

  • Reduced disk usage in the system partition
  • System updates don't remove F-Droid
  • The process of installing into system via root is safer

This is packaged as an OTA (Over-The-Air) update ZIP file. It must be installed using TWRP or other Android recovery that can flash updates to the system from the /data/data/org.fdroid.fdroid folder on the /data partition. The standalone APK is called F-Droid Privileged Extension.

", "donate": "https://f-droid.org/about", "issueTracker": "https://gitlab.com/fdroid/privileged-extension/issues", "license": "Apache-2.0", "name": "fake.ota.update_1234", "sourceCode": "https://gitlab.com/fdroid/privileged-extension", "summary": "Tests whether OTA ZIP files are being include", "webSite": "https://f-droid.org", "added": 1457568000000, "packageName": "fake.ota.update", "lastUpdated": 1457568000000 }, { "bitcoin": "1Fi5xUHiAPRKxHvyUGVFGt9extBe8Srdbk", "categories": [ "Development" ], "suggestedVersionCode": "99999999", "license": "GPL-3.0-only", "name": "OBB Main Old Version", "sourceCode": "https://github.com/eighthave/urzip", "added": 1388448000000, "icon": "obb.main.oldversion.1444412523.png", "packageName": "obb.main.oldversion", "lastUpdated": 1388448000000 }, { "bitcoin": "1Fi5xUHiAPRKxHvyUGVFGt9extBe8Srdbk", "categories": [ "Development" ], "suggestedVersionCode": "99999999", "license": "GPL-3.0-only", "name": "OBB Main Two Versions", "sourceCode": "https://github.com/eighthave/urzip", "added": 1444608000000, "icon": "obb.main.twoversions.1101617.png", "packageName": "obb.main.twoversions", "lastUpdated": 1466380800000 }, { "bitcoin": "1Fi5xUHiAPRKxHvyUGVFGt9extBe8Srdbk", "categories": [ "Development" ], "suggestedVersionCode": "99999999", "license": "GPL-3.0-only", "name": "OBB Main/Patch Current", "sourceCode": "https://github.com/eighthave/urzip", "added": 1461369600000, "icon": "obb.mainpatch.current.1619.png", "packageName": "obb.mainpatch.current", "lastUpdated": 1496275200000, "localized": { "en-US": { "featureGraphic": "featureGraphic.png", "icon": "icon.png", "phoneScreenshots": [ "screenshot-main.png" ], "sevenInchScreenshots": [ "screenshot-tablet-main.png" ] } } }, { "categories": [ "Time" ], "suggestedVersionName": "1.5", "suggestedVersionCode": "6", "description": "

Activates silent mode during calendar events.

", "issueTracker": "https://github.com/miguelvps/PoliteDroid/issues", "license": "GPL-3.0-only", "name": "Polite Droid", "sourceCode": "https://github.com/miguelvps/PoliteDroid", "summary": "Calendar tool", "added": 1498176000000, "icon": "com.politedroid.6.png", "packageName": "com.politedroid", "lastUpdated": 1498176000000 }, { "authorWebSite": "https://guardianproject.info", "bitcoin": "1Fi5xUHiAPRKxHvyUGVFGt9extBe8Srdbk", "categories": [ "Development", "GuardianProject", "1", "2.0" ], "suggestedVersionCode": "2147483647", "description": "

It\u2019s Urzip \u662f\u4e00\u4e2a\u83b7\u5f97\u5df2\u5b89\u88c5 APK \u76f8\u5173\u4fe1\u606f\u7684\u5b9e\u7528\u5de5\u5177\u3002\u5b83\u4ece\u60a8\u7684\u8bbe\u5907\u4e0a\u5df2\u5b89\u88c5\u7684\u6240\u6709\u5e94\u7528\u5f00\u59cb\uff0c\u4e00\u952e\u89e6\u6478\u5373\u53ef\u663e\u793a APK \u7684\u6307\u7eb9\uff0c\u5e76\u4e14\u63d0\u4f9b\u5230\u8fbe virustotal.com \u548c androidobservatory.org \u7684\u5feb\u6377\u94fe\u63a5\uff0c\u8ba9\u60a8\u65b9\u4fbf\u5730\u4e86\u89e3\u7279\u5b9a APK \u7684\u6863\u6848\u3002\u5b83\u8fd8\u53ef\u4ee5\u8ba9\u60a8\u5bfc\u51fa\u7b7e\u540d\u8bc1\u4e66\u548c\u751f\u6210 ApkSignaturePin Pin \u6587\u4ef6\u4f9b TrustedIntents \u5e93\u4f7f\u7528\u3002

\u2605 Urzip \u652f\u6301\u4e0b\u5217\u8bed\u8a00\uff1a Deutsch, English, espa\u00f1ol, suomi, \u65e5\u672c\u8a9e, \ud55c\uad6d\uc5b4, Norsk, portugu\u00eas (Portugal), \u0420\u0443\u0441\u0441\u043a\u0438\u0439, Sloven\u0161\u010dina, T\u00fcrk\u00e7e \u6ca1\u770b\u5230\u60a8\u7684\u8bed\u8a00\uff1f\u5e2e\u5fd9\u7ffb\u8bd1\u672c\u5e94\u7528\u5427\uff1a https://www.transifex.com/projects/p/urzip

\u2605 \u81f4\u7528\u6237\uff1a\u6211\u4eec\u8fd8\u7f3a\u5c11\u4f60\u559c\u6b22\u7684\u529f\u80fd\uff1f\u53d1\u73b0\u4e86\u4e00\u4e2a bug\uff1f\u8bf7\u544a\u8bc9\u6211\u4eec\uff01\u6211\u4eec\u4e50\u4e8e\u542c\u53d6\u60a8\u7684\u610f\u89c1\u3002\u8bf7\u53d1\u9001\u7535\u5b50\u90ae\u4ef6\u81f3: support@guardianproject.info \u6216\u8005\u52a0\u5165\u6211\u4eec\u7684\u804a\u5929\u5ba4 https://guardianproject.info/contact

", "issueTracker": "https://dev.guardianproject.info/projects/urzip/issues", "license": "GPL-3.0-only", "name": "urzip-\u03c0\u00c7\u00c7\u03c0\u00c7\u00c7\u73b0\u4ee3\u6c49\u8bed\u901a\u7528\u5b57-\u0431\u044a\u043b\u0433\u0430\u0440\u0441\u043a\u0438-\u0639\u0631\u0628\u064a1234", "sourceCode": "https://github.com/guardianproject/urzip", "summary": "\u4e00\u4e2a\u5b9e\u7528\u5de5\u5177\uff0c\u83b7\u53d6\u5df2\u5b89\u88c5\u5728\u60a8\u7684\u8bbe\u5907\u4e0a\u7684\u5e94\u7528\u7684\u6709\u5173\u4fe1\u606f", "webSite": "https://dev.guardianproject.info/projects/urzip", "added": 1466640000000, "icon": "info.guardianproject.urzip.100.png", "packageName": "info.guardianproject.urzip", "lastUpdated": 1466640000000, "localized": { "en-US": { "description": "full description\n", "featureGraphic": "featureGraphic.png", "icon": "icon.png", "name": "title\n", "summary": "short description\n", "video": "video\n" } } } ], "packages": { "com.politedroid": [ { "added": 1498176000000, "apkName": "com.politedroid_6.apk", "hash": "70c2f776a2bac38a58a7d521f96ee0414c6f0fb1de973c3ca8b10862a009247d", "hashType": "sha256", "minSdkVersion": "14", "packageName": "com.politedroid", "sig": "b4964fd759edaa54e65bb476d0276880", "signer": "32a23624c201b949f085996ba5ed53d40f703aca4989476949cae891022e0ed6", "size": 16578, "targetSdkVersion": "21", "uses-permission": [ [ "android.permission.READ_CALENDAR", null ], [ "android.permission.RECEIVE_BOOT_COMPLETED", null ] ], "versionCode": 6, "versionName": "1.5" }, { "added": 1498176000000, "apkName": "com.politedroid_5.apk", "hash": "5bdbfa071cca4b8d05ced41d6b28763595d6e8096cca5bbf0f9253c9a2622e5d", "hashType": "sha256", "minSdkVersion": "3", "packageName": "com.politedroid", "sig": "b4964fd759edaa54e65bb476d0276880", "signer": "32a23624c201b949f085996ba5ed53d40f703aca4989476949cae891022e0ed6", "size": 18817, "targetSdkVersion": "10", "uses-permission": [ [ "android.permission.READ_CALENDAR", null ], [ "android.permission.RECEIVE_BOOT_COMPLETED", null ] ], "versionCode": 5, "versionName": "1.4" }, { "added": 1498176000000, "apkName": "com.politedroid_4.apk", "hash": "c809bdff83715fbf919f3840ee09869b038e209378b906e135ee40d3f0e1f075", "hashType": "sha256", "minSdkVersion": "3", "packageName": "com.politedroid", "sig": "b4964fd759edaa54e65bb476d0276880", "signer": "32a23624c201b949f085996ba5ed53d40f703aca4989476949cae891022e0ed6", "size": 18489, "targetSdkVersion": "3", "uses-permission": [ [ "android.permission.READ_CALENDAR", null ], [ "android.permission.RECEIVE_BOOT_COMPLETED", null ], [ "android.permission.WRITE_EXTERNAL_STORAGE", null ], [ "android.permission.READ_PHONE_STATE", null ], [ "android.permission.READ_EXTERNAL_STORAGE", null ] ], "versionCode": 4, "versionName": "1.3" }, { "added": 1498176000000, "antiFeatures": [ "KnownVuln", "NonFreeAssets", "UpstreamNonFree" ], "apkName": "com.politedroid_3.apk", "hash": "665d03d61ebc642289fda697f71a59305b0202b16cafc5ffdae91cbe91f0b25d", "hashType": "sha256", "minSdkVersion": "3", "packageName": "com.politedroid", "sig": "b4964fd759edaa54e65bb476d0276880", "signer": "32a23624c201b949f085996ba5ed53d40f703aca4989476949cae891022e0ed6", "size": 17552, "targetSdkVersion": "3", "uses-permission": [ [ "android.permission.READ_CALENDAR", null ], [ "android.permission.RECEIVE_BOOT_COMPLETED", null ], [ "android.permission.WRITE_EXTERNAL_STORAGE", null ], [ "android.permission.READ_PHONE_STATE", null ], [ "android.permission.READ_EXTERNAL_STORAGE", null ] ], "versionCode": 3, "versionName": "1.2" } ], "duplicate.permisssions": [ { "added": 1513900800000, "apkName": "duplicate.permisssions_9999999.apk", "hash": "8367857fe75f85321ce2c344b34804d0bc193707f6ba03710d025d9030803434", "hashType": "sha256", "minSdkVersion": "18", "packageName": "duplicate.permisssions", "sig": "056c9f1554c40ba59a2103009c82b420", "signer": "659e1fd284549f70d13fb02c620100e27eeea3420558cce62b0f5d4cf2b77d84", "size": 27446, "targetSdkVersion": "27", "uses-permission": [ [ "android.permission.INTERNET", null ], [ "android.permission.ACCESS_NETWORK_STATE", null ], [ "android.permission.ACCESS_WIFI_STATE", null ], [ "android.permission.CHANGE_WIFI_MULTICAST_STATE", null ], [ "android.permission.INTERNET", null ], [ "android.permission.WRITE_EXTERNAL_STORAGE", 18 ], [ "android.permission.READ_EXTERNAL_STORAGE", 18 ] ], "uses-permission-sdk-23": [ [ "android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS", 27 ], [ "android.permission.REQUEST_INSTALL_PACKAGES", null ] ], "versionCode": 9999999 } ], "fake.ota.update": [ { "added": 1457568000000, "apkName": "fake.ota.update_1234.zip", "hash": "897a92a4ccff4f415f6ba275b2af16d4ecaee60a983b215bddcb9f8964e7a24c", "hashType": "sha256", "packageName": "fake.ota.update", "size": 233, "versionCode": 1234, "versionName": "897a92a" } ], "info.guardianproject.urzip": [ { "added": 1466640000000, "apkName": "urzip-; \u0420\u0430\u0445\u043c\u0430\u0301, [r\u0250x\u02c8man\u02b2\u026an\u0259f] \u0633\u064a\u0631\u062c\u064a_\u0631\u062e\u0645\u0627\u0646\u064a\u0646\u0648\u0641 \u8c22\u00b7.apk", "hash": "15c0ec72c74a3791f42cdb43c57df0fb11a4dbb656851bbb8cf05b26a8372789", "hashType": "sha256", "minSdkVersion": "4", "packageName": "info.guardianproject.urzip", "sig": "b4964fd759edaa54e65bb476d0276880", "signer": "32a23624c201b949f085996ba5ed53d40f703aca4989476949cae891022e0ed6", "size": 11471, "targetSdkVersion": "18", "versionCode": 100, "versionName": "0.1" } ], "obb.main.oldversion": [ { "added": 1388448000000, "apkName": "obb.main.oldversion_1444412523.apk", "hash": "c5f149e526f89c05c62923bdb7bb1e2be5673c46ec85143f41e514340631449c", "hashType": "sha256", "minSdkVersion": "4", "obbMainFile": "main.1434483388.obb.main.oldversion.obb", "obbMainFileSha256": "d3eb539a556352f3f47881d71fb0e5777b2f3e9a4251d283c18c67ce996774b7", "packageName": "obb.main.oldversion", "sig": "eb41d4d6082bb3e81c3d58dbf7fc7332", "signer": "818e469465f96b704e27be2fee4c63ab9f83ddf30e7a34c7371a4728d83b0bc1", "size": 14323, "targetSdkVersion": "18", "uses-permission": [ [ "android.permission.INTERNET", null ], [ "android.permission.ACCESS_NETWORK_STATE", 22 ], [ "android.permission.ACCESS_WIFI_STATE", null ], [ "android.permission.CHANGE_WIFI_MULTICAST_STATE", null ], [ "android.permission.CHANGE_NETWORK_STATE", null ], [ "android.permission.CHANGE_WIFI_STATE", null ], [ "android.permission.BLUETOOTH", null ], [ "android.permission.BLUETOOTH_ADMIN", 18 ], [ "android.permission.RECEIVE_BOOT_COMPLETED", null ], [ "android.permission.NFC", null ] ], "uses-permission-sdk-23": [ [ "android.permission.WRITE_EXTERNAL_STORAGE", null ], [ "android.permission.WRITE_SETTINGS", 25 ] ], "versionCode": 1444412523, "versionName": "0.1" } ], "obb.main.twoversions": [ { "added": 1466380800000, "apkName": "obb.main.twoversions_1101617.apk", "hash": "9bc74566f089ef030ac33e7fbd99d92f1a38f363fb499fed138d9e7b774e821c", "hashType": "sha256", "minSdkVersion": "4", "obbMainFile": "main.1101615.obb.main.twoversions.obb", "obbMainFileSha256": "d3eb539a556352f3f47881d71fb0e5777b2f3e9a4251d283c18c67ce996774b7", "packageName": "obb.main.twoversions", "sig": "b4964fd759edaa54e65bb476d0276880", "signer": "32a23624c201b949f085996ba5ed53d40f703aca4989476949cae891022e0ed6", "size": 11481, "srcname": "obb.main.twoversions_1101617_src.tar.gz", "targetSdkVersion": "18", "versionCode": 1101617, "versionName": "0.1" }, { "added": 1451606400000, "apkName": "obb.main.twoversions_1101615.apk", "hash": "7b0b7b9ba248e15751a16e3a0e01e1e24cbb673686c38422030cb75d5c33f0bb", "hashType": "sha256", "minSdkVersion": "4", "obbMainFile": "main.1101615.obb.main.twoversions.obb", "obbMainFileSha256": "d3eb539a556352f3f47881d71fb0e5777b2f3e9a4251d283c18c67ce996774b7", "packageName": "obb.main.twoversions", "sig": "b4964fd759edaa54e65bb476d0276880", "signer": "32a23624c201b949f085996ba5ed53d40f703aca4989476949cae891022e0ed6", "size": 11480, "targetSdkVersion": "18", "versionCode": 1101615, "versionName": "0.1" }, { "added": 1444608000000, "apkName": "obb.main.twoversions_1101613.apk", "hash": "cce97a52ff18d843185be7f22ecb1a557c36b7a9f8ba07a8be94e328e00b35dc", "hashType": "sha256", "minSdkVersion": "4", "obbMainFile": "main.1101613.obb.main.twoversions.obb", "obbMainFileSha256": "d3eb539a556352f3f47881d71fb0e5777b2f3e9a4251d283c18c67ce996774b7", "packageName": "obb.main.twoversions", "sig": "b4964fd759edaa54e65bb476d0276880", "signer": "32a23624c201b949f085996ba5ed53d40f703aca4989476949cae891022e0ed6", "size": 11477, "targetSdkVersion": "18", "versionCode": 1101613, "versionName": "0.1" } ], "obb.mainpatch.current": [ { "added": 1461369600000, "apkName": "obb.mainpatch.current_1619.apk", "hash": "eda5fc3ecfdac3252717e36bdbc9820865baeef162264af9ba5db7364f0e7a0c", "hashType": "sha256", "minSdkVersion": "4", "obbMainFile": "main.1619.obb.mainpatch.current.obb", "obbMainFileSha256": "d3eb539a556352f3f47881d71fb0e5777b2f3e9a4251d283c18c67ce996774b7", "obbPatchFile": "patch.1619.obb.mainpatch.current.obb", "obbPatchFileSha256": "d3eb539a556352f3f47881d71fb0e5777b2f3e9a4251d283c18c67ce996774b7", "packageName": "obb.mainpatch.current", "sig": "b4964fd759edaa54e65bb476d0276880", "signer": "32a23624c201b949f085996ba5ed53d40f703aca4989476949cae891022e0ed6", "size": 11479, "targetSdkVersion": "18", "versionCode": 1619, "versionName": "0.1" }, { "added": 1496275200000, "apkName": "obb.mainpatch.current_1619_another-release-key.apk", "hash": "42e7d6d2f8254aaf9fe95ba6ecc233ee8c3cd543a3e4f3f9ebe1b638221122fa", "hashType": "sha256", "minSdkVersion": "4", "obbMainFile": "main.1619.obb.mainpatch.current.obb", "obbMainFileSha256": "d3eb539a556352f3f47881d71fb0e5777b2f3e9a4251d283c18c67ce996774b7", "obbPatchFile": "patch.1619.obb.mainpatch.current.obb", "obbPatchFileSha256": "d3eb539a556352f3f47881d71fb0e5777b2f3e9a4251d283c18c67ce996774b7", "packageName": "obb.mainpatch.current", "sig": "4cbb9827107da5ab4f34228fa997fbf8", "signer": "ce9e200667f02d96d49891a2e08a3c178870e91853d61bdd33ef5f0b54701aa5", "size": 10541, "targetSdkVersion": "18", "versionCode": 1619, "versionName": "0.1" } ], "souch.smsbypass": [ { "added": 1524700800000, "apkName": "souch.smsbypass_9.apk", "hash": "80b0ae68a1189baa3ee6717092e3dbf1a4210165f7f7e5f2f9616bd63a2ec01d", "hashType": "sha256", "minSdkVersion": "8", "packageName": "souch.smsbypass", "sig": "e50c99753cd45e2736d52cb49be07581", "signer": "d3aec784b1fd71549fc22c999789122e3639895db6bd585da5835fbe3db6985c", "size": 81295, "targetSdkVersion": "18", "uses-permission": [ [ "android.permission.RECEIVE_SMS", null ], [ "android.permission.SEND_SMS", null ], [ "android.permission.READ_CONTACTS", null ], [ "android.permission.WRITE_EXTERNAL_STORAGE", null ], [ "android.permission.VIBRATE", null ], [ "android.permission.READ_EXTERNAL_STORAGE", null ] ], "versionCode": 9, "versionName": "0.9" } ] } }fdroidserver-1.0.9/tests/repo/obb.main.twoversions_1101617_src.tar.gz0000664000175000017500000000022613243530567025230 0ustar hanshans00000000000000X1 1ԞbN M2m PDa\Fy /X⦣YI_!$C-S_D't.,>Ԫdӏ"AtF4mqn2(fdroidserver-1.0.9/tests/repo/org.videolan.vlc/0000775000175000017500000000000013324115531021404 5ustar hanshans00000000000000fdroidserver-1.0.9/tests/repo/org.videolan.vlc/en-US/0000775000175000017500000000000013324115531022333 5ustar hanshans00000000000000fdroidserver-1.0.9/tests/repo/org.videolan.vlc/en-US/icon.png0000664000175000017500000004042413243530567024007 0ustar hanshans00000000000000PNG  IHDRxsBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org< IDATxw\W}3۴*jud5r,wlY.m@IH&!& B0- `c .ؒzu63X^I[fv~hW|vwf{>;k@] @"Ig`ou"IT0)I-Ky@$)#$RNkIvBT$E%}E[]2$Rwͮ 0d%3*Qp2GstS%uNFUo f"M-VehvE8OJ2 RTi)>ib#ɻ.@?Ta]/woEK$CZ}o /_HHN4`s! o`&($]iBu*i,qL%3F{Z@m@|?L_gGC w`Z@@]ejDz}'c}Kc 3@<@V;3[&)7"_Z C\+VI dQW'Aj =gH6T6I^U=e^>G\*O^ih>Z'FsNp뵒׽JľsJ|Z $m\pR0%u'j<^ wޮFj =I(6p2Bo{ _I8Ws~8p㕒fշDȳG n~+4?Ro>z1$"Q+){_}Z&_PtkTC;+ɖ]xk@è%`E!u JL1R@ǣ DD\8P0*`RqV# *3NuE_z I$>M"-Ic7(5 Jߟ1"BS-ٿ1ר`3ܗԽNTO10$$ulKGt bEiFµLҴVhwXo."[^9WeI x(7`"{B5LNjL=r??fK\2ISZy"@nu]V <PF1?1 5zj G`*UFc  ]r}ZQ_~Fc  x,p"@@v#AJt_R;c +#_v$@@J`S+wNNB a #c  nKI9@b +%ɖ%n0@G?z:%$/0DTa_Jb` ԉ')I'OR;c.`JW϶mT"&Jvd;0Tz!kD*J%+I-{޵l}`/2A3;sH:m ձv+?aѿ[>U EFT*}^һs}Io![9eEJcCJŝ}NYh_j,ǶJ/2F`J'i^ѿu{] &%'Z/ta )\dGO2gR@px?6uqh uH~u/5nʥqF_0FafϪZbeink8yexPa=RVݵhshi1ktp89- oΨc%@@ji#1kn07&kWXґnQ/ n_yvYH'2]㰷k?h֑m em=ұI>6ʷݰտCs3焰6I#5Ԁ[Q*Zg`]0״ޟ{fϲS g0j@jhZ^fCc:[KWֿ$omN䈝V+i ,^5@ @ BkתPmPy>CRm7(wJWd.5,z}{ݬg` ԀT)H=m.֫t}(gz7\lR{*ѲԵO: EyC5VCkm׭ e\S;+gg_5ٞr1 p ` 0D$YGR1@iR)'YG@qb L# Rǐ Ȭ\gfHz"WȲe."L8;@@Req3cdDGMcdY?D@V1Id12,DwԄ12,1@)1&cd YS `hcd [r0@%1 ?A@&d0@fQ-"3NcdG5b L hVzdAf cF#G@] 90Puw8# /F&H3R?F@eP0@jfQ/H-R)N ciEAa T" h#(JNciDAc ! 21@*.s]$҆?-*M c A!c T! Mh#lI& R7J%~o"x #h#"\A@ZGT HLcb$D1R$u nݿu @ @x5'ضy3GDR<#V{K;$` &' >pN+ڼG>뒐Nf磫>?e|f1w'.յӪs/9*w D# NO9/^,?g:6noŒު/_!߬w(/?rJo9/W;¢?\cw>ڷxO&H0 I1[XOS=UQH_;TclH,~ż~Rh?x ;՗VO x CCwNo^W~Ϳs?WJvsxw^\{2axQ@HH+wsXN_b " kYuY÷y+􄔼Ҽ?+>7q+$ZRH<#m5HQVt֜ ʋ:wϛ=. pUHR+hd^νs{ܽx\JClY8! DS0_κ@jk/-olOY:}l['/4u=tCi?ߺH^㉷ E柳gxz*l7`=X⁉xkX^Cgǔ;]W&2E! QTq]FN1nI`K<(?7 ?%hh0@G p1b$ sp;rIGJiB@Z j3OZ#U1Odh6 q a xJd+@ 6?^ C tDpp1BG@h/I~ua?^c`*\0 T5`pTM6 ,BVJ*_B 58c PBhW E@u pU|$cU0yNKu]1G@Жuh6(FZԆ1Ń ߘttT1E@@ ?+Uc V[1@`x !k#! (\'+P;mNɬ%zAAc pZTz$뻮u# 3x1@x>A󣂩' cԍz'"PEVt %/u!kū1Fz1FF@`[\Mm;Z$k`o^ $#b'l;N/H^U -<_~nT2APRʷbYx@RwMdSrYmV /_ȥ77OE0'3.=-uU<>bLu0]wmO|"&/2iB靛۹7"&)|qqWj 9;E|cԌZ }y߽r{X2G' $u/KںHScԄZUK?n6A@5:+-\./&Z$rߞo,}tlkO暤gS`uW$2kR~]vڅ k444<JMH:Eo;{/$lKQi޵ecԀZ1뾺rwVuj}WL*ugwl8OFjP`*]_~Y%Y {$kD7|xVc d0P%)RK+z5n(w?fKyv@1DU)J"YØ:~o_6޳DY;ֺJuP֩xT6wF+o4_ b8{Wm~Мz֏[}@\srǞ/B܅1?;9~2_pc2&}&@8ʎH| t0P}ށ[s?nu_~a=+%gf_K"ڑ1En{dd4%upN0Z=/k!o{Øo[YjE77;1Deܿ?=SU8F*]Wht^h//QSX"`PR~Z:UJ! IDATr[/+gTUJ[8 VڳVH~Õ|t;zdŜΆ?v]Aš?rW؝xkxl5MT= ?\;3f.f0(z=f/ΖnVR&U v+vE \Re};zf7cs#ۤ=@ڞ._5k^Rj"`@nu[_}9/k#@-*Ww]08IbC+O-MNسJ'[# -\߿@sc$?Cʻxk?#ҷVz}ɾQv~V̴S꺚0I8IRCms/ӱ IsP:1-\V.51I8N1wxO|nB1lrdԹ;7qY_% c㤪?rw7_f:pK"@zw.N0q8N*U0;Ysf g| }ZT@5}r/Uɡ0qxQ[ Ӣ#( %i3!ɷOnOS/XE(SjvpY9aao'9$rqUg7xF"x/j*noO֘5߫}/ŝ}Z&xS4;f) )xh/-1mJZ/t8*.SzY+nkZ&8Y7;Yi*uNg@߶_Ngl5 1$p[s.'9,%b1f=c.x85 8zR1aSy[N}]e@+߲N:k?z.x ;9 F|e-fS{to6'==#j׎}YNZ)mv38&mO d`|*k=~T{.ooCSWJߴJPCN:/豓)KFIgOmNՆ08@VϧJO)ܧnQOG9XRzM!_=}=l{بt$RgΔd}ceG8Ѿmk4Vjg٦7i\mנqMjl[&Spn(08@'$cs:sGop]'fKupmW?^«$- ;lOHKO"db i@b Y@b Y K~75x\0k$}QҎbbqMǽF`. IW;&7?K;YpϨZ)ǵ` [RZ.D@R2&INT07H^!)w Ǽ~f7(j1@oE +nIMK p *cc~n HRxkq\Ij [R88f"}>~\.-)H(I@T0K2BAx IJuIjv]D8@=R<M"\v(3ւ#cIjVE u*Ή@| I򥂳 fRhs'c3$ud7H-i"B@R>.IYUd@d` p]V 3Z2e)cS$O% .@ֿ~dOv] Y as?e` p/(Y}կλ-cf"P0%p]FX'8ّϑ`Rcl\于" Z'73<Ẍen @HgVKE'E ;sBbit]D fB:md!dkcN}|yI>lZkFƅO2_P+3ukQj;Ip|pxL#w;F!D: ;`r^庌 ^?u Rz|-@o>:iBt]E-`%]1:ײJCȄS:S$ﺈ?HW*fg.@/QY!;#/c{io<@™Rgu 2G8n."LHeTTNC2J;LI_/os]lw!R\d=szn]'ˈ78@dGZ}--i"’w߼"=ų%U\ ǿcljRIN1?to:6> gla=uJy IuQe$t]֖W\C]vuaHg軄EDs?3eH>K{dyp T=o6{uXw:I.^_/Zn|;P-J}Uvy݌u]D f,WϺzNٍ=_+\PW."h }nS`so^rq] ߕ/.Ot]K n ^{~.)0o=V6unR2]`R٦G{UzL*>P~\I\#fw1;/_vlu] xW~E{x0-WMp] r/S AIyi!cƦZ?#}zb*+\sTE%=`KJ奦6ߔ}zg=wZf䚤 RoZm*w\ ѯ?ZERIAB応k K}O^Ql7B:@V;PC@ߞ?k>oOL_+-ǀhxՒ\4B)_jJ]\4H=zgUqb׵$\*:i ap,H&>9n}b޵T~Ik/%LUl*dZ.'_fM%EMuP0%p]FV9 @w/}ネ" ߽qr3+ N P?U%?0&yP%HJԽ_CL^:?e&iqVw/)E]IҤu!#@L\+`'v$Yק<-6\G'o qB> ] 4P-{?sV'f[6roOW/Pgr2&cd [ns]F 48uã7}uƤX@O~1F?#=vIֺ"I#iRn y}>'Ќ`loё=ǽ [WG]1I}8Gbq1~yb97Ψk|fcx,}'Z@bI4d_ajozzn_igmU~Y̒vߺ]׃$<$VJ:uY38%eoՏEj46ʀ:QOBI\YI[Wu@ fMȪ*CdLwϽ5cq&Z?ȗϑ:w[Wد.VIpcX.,}rWҫPW~Wلw]?19HjJ7AkA͎Hغ. ,iB$L%Bw cdh2/+~~b+\QFJqcZCݷ~VkHvxwzB{hۮ9ΐ_^&jI I|N{\㍴Qr?Н[ijH'~?{֜k#=ֶ \Q$ .';H/zݶ5w暱9RӏWti+jET+Y`Izu\ !@dJfOo)fٳ( ݱj}{[_- h]a?뺈j%-u]\8jgsǻg@WKf[Wث]Q$] /7.{ߚQ]){xi,_8S4up]H5 fJ;2)ǘve{$5a`p}жs%6Hͭ+w]Q$[%2PPC11/ܜ[މޙ<B8u[W<6u?[ɽ*vET#Ik~u]$!/_--kqrl4[X[ghzKҴ?&#'i)KD5.[]fW.caxZ>ͽ/Sw뒐8.b8Ix8'HXJ_kO2V3gŷZo[N5^vZDU *WU#vV,/jII.s `.-6ߌ !bv-mΒ\ׄxuuIJxLRe  6lι[||3~6aMJojwi7*[9uYH-v.d(3Uv y$H,C@mfƒ޹7xga?uIAq^ܿP?CDkJ%}u^C@ -;swxνL?W;6g6?Ckw>3CSŋ+-Jw% #Q!x{4z8wuAśwh3ifœ9xaX}͏[km̗'. 8A Xr]` A>IH#rXM7sYUS/k5s.n&-./+*#mOn>d*v6 .)/^`&Iu?BIz"WUjBL$L:q;ꛃ#Hk&6]{@s'HH HBM;N 6$!@XG@b).`fKeL1#䛁 Xtb@5v`%] !@ t"JI\"!8!@8?12n,m(E8B#ND & $BXVl7c\m.8I/w?2FI׸e\s wh#nq H&i]u.4qv@W?b'DpB]Xl74P0S%@ "IŦQ^ZED(θ@AWMƉ6LWD'P'BI4 ,HD y? d^Ԁ Dgˢ,P0$-l? $! eWH BDv$#D% *H"DIWFQTk$5E)BE1*G( Nu D sfQ؛ f!@@BGL!H"B:nƅA`&J(="C^ҫ u!@B}p#k&)#0Ea-fIC\HBfFHf*ĵ"AhW 3@TiV݌ cp@̒J@ZT)auxT cHT6@ a~f.ZcѰR`X4)u#80%1D KJT`CHB2WҚ0'a7Jz,!_+0^@3|[ !ȜZWZ<p-)d!Ȕ/x/y S@&l077aJzJCR$p?2և[WG$o$ #IwFFT0z;_Ҽh6_r]6Q`F]d@Rf+:7M9kҩcwEg]]E54jvHOw$#rd}c^h.6OۯG\&@UrKWa?3%}ң\@3Zu"g/Uz4u-~SyIDATӠ˛q]pLyز^])N$mr?;nw]O f+u|M5r faӻ vˁIENDB`fdroidserver-1.0.9/tests/repo/org.videolan.vlc/en-US/sevenInchScreenshots/0000775000175000017500000000000013324115531026476 5ustar hanshans00000000000000fdroidserver-1.0.9/tests/repo/org.videolan.vlc/en-US/sevenInchScreenshots/screenshot17.png0000664000175000017500000004075413243530567031555 0ustar hanshans00000000000000PNG  IHDR65fsBITO IDATxyxTy?mf4hw Z$@lc/Im'n6^i~I۩44m4qj1 A7$@bhA+5Fr H0!;wG{}_B!Lt @ @~R`BQ4@ ~iHa@)(WE;Ե\Z:u,tS,Bc,7F2 >~^z%m(@\dC|F: ç[pW}|H"P }ÿ乘k H-xPp#  !l{0~E_ v-,!s u>y>_t&dxK a\ejϗWAkJ!k1+o~ڪ`Uyep z v|\#߁&Ƚ җ>!(@tEpeHEdOw{Y8i Q 5 7Rc%|t%nS<un  x^LG;2{t!4 ?`CE[>UQ3g j, ]^|pV|f-MPU :O~%W PPH)SPR#I0\ İ۠ X $PzAS: ԃT)ޔ !yƦ/eLXq! 3zu>;2Bhl*ЈEچb+eR7(q ëqtox WЮ3)epFp2/ }({82G(ФWOmO_֧^ Ҹ,O~0o'9"wL>i_-`k@ PT V Įm @j{:K`m(nsU7o_ Mv {_{;OP[x_#osEG2{<,WRu @0Q.󿁘U T4y40-@ X:h ;^HV82,78}Mo Ő "@v`~}?B%pWBOZWzab]6Qc:WAHw)С   ջ|~ ]B޽ >x a]>p`2߃ȹj#8 019@1X3`KqPxZpȆC tw@AO%cQ {Nx4qж~:vs@́M-4Ao@N΅πh(Ix7+Ahi07,X ^'_Pwf? v} Rᛕpuh; ۿ tv?B/&S a`=/Fk ' wA^]4Ÿ C3Y !"_a 4  ~5z= *ö'.@8. J^xqa/ cʀU?c߻/!tc@j_)˹}P}*TpVRTu>u_%YwyAh^OW? I3=zZaAAx}qTê"'8?t;Bh8{̫‰QnHNa+k4Q93+KHkG 0`r>~ʔ)˗/444,Xf?~tgeeק:w^պ`tJikkd*//4Y[[[듓u]$oEСCN>=>>СC燆 [ݨ,TUUEUUUU@Ӵ *I(v7 ---+VXlYVVֲeV\ܼet5klݺVZU]]zqx뭷|ͅ FEE8pĉgϞӧX"++ɓV"'|+6mD)+Wܽ{joo_lٶmDQ={]/WQoTU5ͪ:FM?,~Jŋ9EJJJ8니(++[ngnnnf _|QUը̒;SdڴiSLEرcsERʮj5&!>i111.mE" sٳg ^\#&B-))f΃((f]Y/qF) &  f!(Vv요c󚚚>㶶e˖UTTŋnfx,**0` [TxI5vsNUU(999t]z+W,..fp8^/ ]t:mۖ`-[8wܼy0BQJFYFVk$IAP;88|#G8NV<< ?RXX8wW^y;8tl1cƌ34MϏpEEQ\.ŋ/\ߏ]TBc`v#bu^w999+W2eWX!BAAALL%%I/~aZy/..~뭷l6[JJJ[[[uuidYu]4]׻}ݢ"X~c|B( vZ^^>r 4x4Q[[c2Y_(SJԤ(ܹsN(Y JiTTC=(zG_ݐ!(&i…_kmmmmmm!mmmj6771A׿mhzzzII(DZ+`2AdYE)(( Eqɒ%}}}7G']׻bcc|G(5my~``yCY^͍jf-p!4gԩSv۰ <^SUn;yd{r rBBBP-b7 !466ZXX8ri؈̿#B$Fil㝘hiyL.Э! B(`! B(`! B(`! B(`!ͨB/UUBq\KK'|']d2G+1t!8ndwQm޼51][ZZ֮]{?4..b/2W·_b5 Ճ~3[1!!F5V8\E__XGJ(7nqimmMMMeY>ښl0z{{{zzػndeyYpr:;;%IJLLd)V5,, B,˭jA:oM4UUYwA85k!d2n.wޑ$W^a9OB[l1Lj{{8{7$I|׌FK^~吐˗/<ܹ;v8}tww7;7(aѢEgOӴ\A\.WLL5kVtttIIh 8X~}TTԆ t]?rK/TVV6geZxć~RZ]]=}tC={vIIIXX!l6gdddee999f7ވ Zk}>ZYY9X))rpp0%%ndff1Pu]$UU$I:{lxxxiidzgNUUmjjjhhzؑ'JiX&fsݔRY].WHHȌ3چ5Rꫯ DGG>|xݺuV߷=n߷o_AA󭭭C=Įau]7L!!!gݺux1J-Z4=BC|8&cw#+`k;ؗ7n غE .,\PӴd^owwnxgϞgϞE N:RZ__o4Ffknn kllljj-,,NLL4 Νc)Il})r3gf kF4mK< /.Xkܸ֕q#^vfeevu}ʔ)ymgoAX4ubUX$Vҿ{/h+^2,jٞBzG֕F?*kQjkkX aoy9:|}}}cc|cMӼ^;?~\۷ ^UUrӧO pٳ}Ǐg+._\SS9sK-!n]g\\ܰ-0>{zM˗ҵ˹1477XZZq˗VZjժ͛7˲y}-][x !\;ySDQ-**2L,8zoEQ$?퍍={vΝF… <_pa&  q\RRҰb0|,sOoo/ki:]ѣN3t]߾}{TTTbb" ]**b6m6 {ikk8 gYt]g{rаdɒ .Bl6[zz f֭;uTJJJBB,ebBBB$I!X"4pv#w_vPVR@000s!DeEQdM$x"""TUe}4o"f0tyϷ'-en/!4'N充8-*EQX>7y &v4M$I$EQ؉}&÷'BARj2͛g2Ƶ~jccGX,ػ!4^gxñE7BFuހGB7.[E5P\C5P\C5P\C5P\CQ7`U1|e{,^{Ǐo$I^x݄Hm6ɴiӦW_}u```Ν&mmmM !4VWpX󡺮'$$DGGϘ1#---,,0''W{$֮]rVG2ߔw}u9s˿/700ԔE+BcuWIg\SUuܹgzQQQsqF1%%e!8N*rxxx__M&Xz ㉉e9)))44ws!!DQF3l5VBv{ZZi u\(F1!!AQQٽ3,geeuvvDFF^xd2uww!sg/---^UUU`4nhiZnn+++ޅ nڴRz:uRx瞭[H IDAT yЂUUYB(zҥ4vSgؔh~V <df(dDZE(:Y!4ϟ֒*p p6#zVVփ>8} ,p7˨Aw#O!nQaf!nQ!l0Bs !l0Bs !l0Bs !l0Bs !l0BfxE*O#n sgڵ=+_Wbcc!& JKK5kVQQщ'X=՚;00fff&%%رboڴ୨ǫ RSSٞ{5 dan… |MsY_8"nQ(Ξ=h4tRM4MX,8CFBhMLLzmmmXtC=TTT&L&(Iqqqr0BdY.-->}lu,<[,򨨨X^__Z^^~fa"&##̚5wk*Nbx/--ذaCuuuWWi f944]/9wEW; XDDEEIt}YK*㺺TUu\ݔ)S444ьRn4}[[[M!… SRR:ڸ8*::Ο?Ŋaaaٷ~fYQ46--w3j?78Ȉ6t:7n8VUU8sLM*++Ey~eee.k…v=<<\愄a2Eeii)s`}Vñ`^ 9KJJ=(111555-bmZq[,++<:' (^_9 C<|!k#p7d ?2 a6F~{wH y vkފ1fffBhg]{q8|!49:Ea=P\C5P\C5P\CQyxWE 8tp@w?`/=@TYVU !45 #q!9#s#BFhCMs qs"Wp_B8*l6˲|O!0<(sB[D%mCLjyVRINW7GC}yyyJqqlՙEw ~Pj2i9da۶m XVu#hooe955|a$:BA)53gY{ĺ\JyBC8bMřC,mfo T}(j:\l<ϟ>}z֬Y6lp\$UTT pᢢ I>m۶ HtI'BuyxyHWr.h hTQa5BHwwwbbIMM:w(.\:sTUU͜9s͚5]]],x򁁁7J؜@W{4V)|,"8_cTrd]ԨNUUUHJbMKKeQ_SMu4]1[BFUMWu++._O C !txkdj:t8tmU5]V5FIr!4"NRSRTSi:4,IeȚ'nh܀)B6jDo B(`! B(`!u{8!Px7G8xz---7B/su]nrC2ܽgwjjjrrF5BR.@M">o'\:7?Go_O|l6sdIi#1aцKf:^#<֪B[P=K%XWxIBXDŠ*RBR?/Jk̒bcJvT=gWȓn4=92V\\4V-RӴa}X1pwe544̅288pwyollĉkx"$11?Ӌ,Y >]xb )*33|0{o'gLYyp{" /m/I޽{9kkkKOO-,,,++`yC=c{\z,cɲ,Ii!,,ٳ3g<}4q.]>VuppP+>>uݺuaaaIIIwuWbb"A((QJ=rb K8 sH92Ҝh MMW~*xz\frRz\\\s>kFIOO_r?,DEEm߾;8ydFFFHHH___gggdd(o|>(++EԩS)))IIIǎXz#| 222&&jFGGbqlNIIٹsg^^^ll`l}'ӦM!BGQSNl6Iq5㺻<7wZ{V "pR.2qy=Gwt~c{TTPз8(lr@4A4M8K)kcUUٚ ̀oVo>u'[>]fIkLOgBckRG$#?9ߵ)K)96Zx]MFd4BhRN=%y'~̾ŇOY̑0I  F+|ƞG5fev<Ϗ|0Wq\iii{5uuu 3fw޹;wUYYi0 !LLL `  4-22ŋ<?~O>ܻw+vڵsZÁˌ%>PGf_d <'M}3@V/*pˊ$ dz qSJW\yСiӦEEE $ÑmZ=OYYYff5kve283gNyyyYYܹs ! ǎlhhɉ,ҥK~6EQ)R:uT7::zٲe555ӦMõxX_iӦ<<s?m|`ݝ}. !>sK.痕6ͦ( kb0l,F#(rnnnxx8q۷o?rddY7f$ʊr3~FiDDs疾?NkA/B xÁ]BG~TK+SEBBGNBN'BhkW.\0zý^! h9`IHP\C5P\C5P\C5P\C5P\C5P\C5P\C5P\C5P\C5P\C5P\C}BhB p':P HkIr{*~ 4J%i<}%hrʮ\KG`6bxyPpMjN)5Q]N\/nذA 6\x1>>~O?;}tyyyyySZZZrss'mڴhIDATr/K/4ѧs}JKK~iߗO?tii_7 -۷o_jD&MjO=TMMMCCo2&ٳEQo~F9sLY]/Jhȥh\~׿8'JII399yB}N`Mjw}wiiܹs!rm>x_lo?zԺVZvM6>}eڵk˗/g[߿k׮=q\tty q>ƍ;;;oO\_~uuu/Du{SB!B!B!yȔFyIENDB`fdroidserver-1.0.9/tests/repo/org.videolan.vlc/en-US/sevenInchScreenshots/screenshot11.png0000664000175000017500000036566613243530567031563 0ustar hanshans00000000000000PNG  IHDR65fsBITO IDATxyU'zNrګT*j%ݶmlmˀa`af0=, |ٍݍ{UwխUJ33?ř̛VI-ޫ]͌8q"28x[ FD--刀.ǐk^HuuZjKXdp+d]'b# Hx!-z7:~ :C!B54 1žf4 LԌw[E0(2ll(xPB7$|ZwqWGdْ'BWu@DVP.8Eⶣ:wXZtOfDV |@܆q\ޱǿx}it{ O?x"wgO@ c$D o}?x׫_q?5m}7PtٞYi6,4-KC"̺EiSR6BrePz~j{3'NٯB\?{lQ9;^7./<~1Mם3F_ß{'/ LWё1|;vG^p/թTMN9t>/۝CI)O41cUZ([IQܬ (y3zzeIp相]`Jd㠷W_kx-U+sw~X.}7?R,Yux7_ ?aH[}3ȐiȴR_͗uRz27mx2@IG8α^觿F%|c^0ܻcn\9M{ϋm'| 4dr[!2Cx-@-=}OVUZ/O cL㞍蝄O(-($Yoegu$ߵٶDi$h1D>4Zǟdo/X!"'Ԫ@BC"ё?_" 169yه?巼]V@ $W;'wzv:<+tXYXio_Vi,jaգEj>o_[U}.Nd zf ԚbjqPW3 ,X_kձ^}o<zs=bV,~7/S{f:٩3}!c W O=o<~Y( ^׼-}A4\}ܶ+hHD?sܶ[#if(v<2T_\*4}yZϥ䟽пH ֹ%馌M+&Bg7TZ[?DtC=@wM{n>P5Nk cY?1]c57K'ǖ.&FȐյCcF]rBx5GP5="@2I$īΔ,ξ_26]അ8n]1q?_ԧ8xUcQ$C\puH&s^0 Fu"crBDCD$A4}d^Uh5grB̜JI!J-%C>hrI$r3̀&S@9̩7{Dk%B<@+˒Z,+_kxdpEsPrɢgd#  "!?CT"S$(@V@SBHM(xX[']gclñpxmrH$LBP$ĭ}rJ0bޜzE̜\u;oK[@a $&VJ}-C[syScob ]裔Kh<L0Dv n%v_uMY.)>t`a_MࡸN! [gCƴӠ fGP~FFWt'Q?rQ2N[!c!Px=–d7"%x T*it{lnqDdap49+.ءLYt9bdQKR ՓMo""f6ec9hER Vw,~g6t#J~ 7Ѳa*7A5M])֕0uG8aΩ+JzCnmςRVBMgOnVMIf#{"#<a-F] z]sȴBX62{"SnH)řf-V_WKb4:Vљ<'l6mӖ2>~R4???33B?~|||hh(zNDA:wEZgzN@G)KC͑]slj@;pO[ޱ^bv(j|w uFVd7͵Dw`?4 M/]pA˗/ Rnժc D7yǏu];vM~cǎ=s"6MVWWGGG`}}\.m!z: ^iS $~Z`ˮf%EFDW"5ۧ/\қu:[םf3?v?/諍3` ~Vɲ76mSjSN~BgMMMpo&ؑ#G`nnRLMM5 xGC\{t]GGG˗u]7Mǎ?Cvرc=6`SA9ljX.+jz@ꥮa*PT&Q`p,I 4!xpE٬:}}C Cng id+IPit ܦm*뮻z;S\.u4-BDC:mU\%ԩS/zы[m_?zÇ|I!Ğ={~a]>&k4RqRSx^P+_L1-Ŷ{HdClL_ {%$}ӿofp J}m=şNdžެce'5}M#χh3(,O_'ϗC{^M۴UsQT,Z\\uRD={n .LMM1 p-rsΎ,,, 0\nHӴR{n]{J(|ۑOtkwi}'>~'%(mȮ|n:MHl^+n`g'JxrNžH茶M۴jZ&'sK4Dd&WZn766v!ߵk8KKKϟ{9;w)֧?~D{)hHDZ>q9׳$hKZt P8 ?]M0r+hlS˗oxG{omKlܹ3bڵ :ÇQu]&y||/dcϻzhRk/P6t =B)4M\KLzdwZr"Cpݥ~s6m5&MܵSZ[7_=0ئfH:у/!FvJ96~_ԥ<)jϗAQ$#D"000,p'k 6EHm1'y75"_ HkH8iQcOn6m%C ;_CfNۮE *'<a_y2sm6mӠ\}Z(lk[v%_{0&P #?6m6]SBDO_7|;,h5#jiAHMY>u{&&Pg  |>֡Y(ͩ15yߵK?ۖWoj{uh0Bd++fd#+CiK}7]C "4wH!+fuTXc5Ĕ0Smw uLȞP&2[:_ Vѵs3*(eJ-(%\HDQDžT#UNNDf5-+*]כBJ!^(H c/޲<"{xĠU VshQGSuobP·RG DYg QF%)/Gʬ )Kq$vy6I\y@N hڼ/f.mC,U+fD?BNtް,JOJmJ__CW'?jCpYY TD`&reJZz 14"S(TAiA7)uS6$kLz%џ=FXЖOh+"/&MZ;9u3mQ%I%Oe.e7Tw1CaA0PJ籜1bV2aJq:QA&GΒٿ@[sr^u/'e tks#OHs# YT}"ׅ3)juW9 `ib $ яk ̝'SlgBs?0GDe@̽Z(݃ip"O2=?)~(IuK$u-Rd}Ҡ˸' ˔BD 'Vҽaɏ}DPl`P)n 4J9Q([\ӻ(8 Z~^"A9q jyf89fz spc͖Zo^lCM6նjfUGIdl;!n_fe)qJǜ߄WˋQĝр6G0rUU O,jl KMU_%%4ܞIpD(Q* )M=0tT>ܲ]hfȸ76\\?}qdNIP Q>B=||.$:g6gˏj|W< +'T?;b4֖"of'iݗ$)yM q@}"=]*-m'ǡ@6mJ8/zWNBm Uv;oK5/-4/].o86f hg&wTvMMud#z7OlM#gf)}"֓UdKQEGT1FQvaEa"V|JY3ٔ(ֆ:!VD~qq嘵%CS4-)oՆ*c/N{j_X۷ZWVg&4И]+d7ϹvM{'q7/>Ifkl!Hmrb=?Md=qyI\Ev;عD _j=|u C!<0s?øݜiml8=Ȋ?ZWЦk FCPd\K=Zɑ}o|YuVhLc9B. ]7|f»O}}Sh c1O g9)pMJTWOVo>0ٗ;V*gR1m9'yWHLF) P~58<ޠ9wzlكj%_{!!SbB_rFn9/43ҚVOz.ߣX Z"'Y XHj :tjNOhCl;sh_Dr l6=#A>nAjGWT8Uyq Kqv`wF3^f6Dl"iO=7£%}>̊sfY<пteKCfobq#[<>ce``[QIYĔoe/'g.5:*ڶĝ!ɩXa2cVs [69X3wo?sZdw#u#,?q_5-w ߰?px4y7rXYL^ .#)% P"'M5 tKK$B$ggGt\Ӗr&3>*MkP=ɱo3^t!" k D"BL 7AM2?d;7wƟfR1"(RZ^s!0C|^'0>$9p JW_sRFR O!rYeNMz{ܓ{ dLz +TO$aa@s}W6p\(%SӠ9ۙ) Y0U.n噅CMT)ONw!h4 ț-p>@?BCQ/z5"VM AAxzBlXH9U CxV*m}?L{lFEܘ@U hD%wʘ\`hm EJݦ'WA%nDd )2̨}BH("~G@7!ӍH\5H9 Bwُn索Y+,;2X{'pL~Q)=矪nEږ(h1bDL܍X⨊;F c֜tzc塸4"18(vrcQ7:ӗŻ}9\=4cY}!tZN8;E<}iw #UJ% VRRk@qt#Wmcl5Q @ V4v+Gc n spr SDrQ{BȮ&6''yd4"gJƄRNi^f)ׇ'{H%r_yz'Ԯz+Or^xt7̈)2$'p_@F hK1`3q`#0/Ow{y0]x;ȶ4ۚ}\FZB^_PIdbg:} Gylѯ .m{ C{${̩s3o LK|EdT\iQc*s[/=҃'p=k!̑˹]o%6v?`NBr^Pb&XYQ؄:="#_w毉CYt^?q>V2 P bRw"A'@|*#P|~2 W{?T/3X> +0]I?z 3-v.mIa~zMuV/헵r<@ysް~n?H[@]ktBlݜJnѽ(Rl2aB< }VorZݛp}r|j>R:FZќã7>}NXvx.k B6ʘrB-uY &j&;qe)T=BoFk3ѩ}OaFf{6 ű?1v˫LW\;7-e5k>Z Qr\p`8xx .&-SE")3d,8 s@gٺy=R G^rm7Tf&gєmC7흸Ƨ@ JSp-/w,X693 胎|܌5d T,\z~ۻS<'s !qCFEH Ǭ,{?Jg7L Z&MC6SMwn^2dQA*,g뭅/=ThDvc͋W"Ck9gjw%Fw)PDwU 2 c ` * ]DTw.@ gs!AN5-@FB ,R$u&G@R(rA5fFIH_m 4y^G[U 44qܗhZv':`ЖY'_r+3J?ݽZ\C4Ә#żƵl?A|Qx&:v0R';RCQbAE&L-wD L'b]`< ͧD1]W<'Ic! y0KU,#qU=Ε=RcYG^16` }ғN2@% <#Fm'4"V'AL1fz U#L0*%JUbc%sw>/P? PTX`N*)]8UHRqR'$a)^?Y_2P})gZ/4b:1_L"rwĮ^)tcCWTfr fhwܲ5W2C_0y6S6%ATC%6#ؔHUpƥ9Oe$(N^l<\2K8$I6 @V˪b2Im/D><#cHg_=(gaXpL"o#儶Y+C&=#Fo9ˏ>j6Z<ڿg"lg7smoDԻk[nv>\T[g pRXHsqN$%3An$T CA:WC&\0?zIl+S]_LZ ٧%3>POԟqƎ`כ%__s~V_Az/;O_֛)&-=y8:Tf-êJ%!.b O@BoTTB [yEYˎ,(0G&@`hù8z`=2t!Cƈ;RmaY9D Jq,kMes?AdHdAsˊKuiBirtLO_1Op,uG~WЫz=\V~nK:kػG-t\ ߢPD*% 8KϝOtDXhN3z)&-4(%#  {ΞL^dwx|W4NGA)ǻJ}t m9yD+C>JJ !;3*!c"i?O[nysUL=;T+!0vww̨_A-痁`ОGOio*_hJ]%Qhi6EFQME6@|q;DtᄑI]=8 ~ P)I>J})>%-l'&禐U>253/E1.H'WMk)5zv1"!ʻ=쿂a9v;nzG>gBl.,WvNzh]f&i~RGQyQybQBx QL{I,gx)… +%û>wc,Ǿ| qnM p٨xnFj%QD uՓJtHRCWdFi%>$k>9LȬ*6ަIA )G>|"DQF{} nȮ>;`ťRRO-=O.a 8w/|~G"T]B@FRxr'S{łlͽwż yKRZowN0h^\0 -nvv -lD1SO[RwG w7$瑔D´b)lR0.FOI !J^xù׿R5<29S6_6_덹70CCDAVY@q؍$Ay`BoU$B#H5v2 mb݂="O9߂Q߳:=r tU3A IvbDM4F0k앝/S/L䴻N׾8u)m f@Xr@J rT$ 20ԝ;A3+BQ/g ;9s\6͙ӂ ]*]!A^@^V>0>VbbSzO5mx\>YaGDJV!: T*\yzQ+]~-RIH:f8q6 {uJ??—CC- Q׍jɨ3C7ȧ+:u7*Knٔ_t)e)r㥅CĤ"@#JѽHP|FO8 )IdT=BM8.4XXW3 K@S̡H`J'gQVQu[!)Xb̻gQ7.-,|^+GX z30@uو&D=woG6u9d8Qb\иm,/ SJ4rLqZ7!T\;%fSiFࢦ;D"v=X'"/8.BT xz"qnIL0T39L bce. dYiqjE5Q؎}K^03s8͵f gE樬Ȭi_ۥzxJ= q8o (ɽ'e䍫P DNMѶBD@N2Ȼ@]"UUHm* BhւdLr/$tCRnɃ֋$P3譵eWLrcee$V@mB6ua;5ke~g CK/ʽ9{/2XD޵~yh4~h$RmtTe!j>:Q):78KgAH A,<(?ܲ"1($RTÓB3/)K,g7c,"?0Eu|H*JyXxya ANy=!8$5(w_V(QR1a%!!;87brYSܗ*ҼrD*f$_ȕ8(TueOR"bPC)rz!nܶawu1ۣ0'uzS0r<zXX{~J;[sKG˽z {". &_Z JS닼 \h1 <( ?d $ 2NPz8cR%ub^ًe &(ǰ%q cSz!:8VؐF ɛUpOH $sۆ៾@Z_ Xʞ@dYϒa<Tj^nP*1hr)yx9Re~v6& 9$))BДK lU;c>L l#{9c`@+1 M^aG@?A'+ȍ!x+kыnK[ ľ#qqnuSδaiґۘ/? Ȣ B!+MYi9TȅTB&]oMw $K#_UP[+~ -C,)RW[A*nߔDGLyO&<1BqK2IFQ #C/e[l{kPαIq)'룖M}Q"vM/c\>8!R30Rd~jϞk;JՓJz5DİVT9HX?zX+*aLⷦ4HȥPcH{0^ @_%w2Ȭ Pg~J/|J ^Q"xnepIm \2pd1K虱ӂ<2PZqHr F[JҊEԴ8D ??3p~qVzM_(I!QgOE ތ}lqE-qAH/]S+'2]>K*H*hr 1.ze W1C9XK xEJ&GͨLc †5S$IH0ظ#$Kէ6@n]]d m\ PQ@C7< tAAʦ|!Z=xW>#^HR hHs(66pG`'4=],qJud[b@V4W[:  BuJJH(bH_]( N"pJn4e8@â3@ 0c|ƛܠ g6H:ذ??!RwQc<>rCN&90xvKgh,og^tdE?A{7PAe,u@ƀ8Kp]0zߞ(F؋c f BA&RE<$ (LS IDAT;2OGl`@z3pљ.`^AEo`еC\ 57mG1N` ʎ "uhzٹ\v4 M7 Cf=\6wNF۶GtླZ(Wx4\hN@t;i1F:.QC FƄwtF\ضC3@(h9Lq8rAkwmIT3cR̉*cKD@!k$6j #P H~"?gEu1764 L.M-M8ם1%4 XoY'f۶m"%/Ttвװ6nTX añQGbH\mr(DcclPIf6V"1ẆFAM +%\o #s*KZwlgGuT8˺;[ mtT,qYmSdc$ܽC@D:HjIYP8w$%BA3kidr*DXjdO/J 8ϟ_Z[XM\]{n8Xx7/ԛ5KQ.sa#kf6u+\ulP*UV76r\u۶jjRn[V;Fڹ>͋ kFS!>R0FK3‚f4Cu&&FfM;;iȅÓgWC|1ؑ('BZBΘ?-:CB!@p_Dj < D 5ܣ+ɍ#2dQ[ilTfOζGfť7unsI: G ;/Ut{oLYjڕ˟l=ASCpۀ!cS5$S נ{n}ơCWcEh\歽ZS-Ww%qC\/:l}rz6w[)vMOZi ]cw51WG Z)x+ 3:l5}l#E˪{ ~#7i|;.h OBhNt{D]XtBDDՉDYW9NȂZBb@`K+VX3xm$1 V4>@HJ{R3GJЌL xnvm L YP,hHD7;77dDCCq!8i qVIƫJYs,G&x=#efw:.9+vV4Mʌ nB0墩#@LWn2V5F>3Z)FRF./ uڮID9 &!; BpF _A{# ;@ D( {X  #C!c ̩z\{lh?tHeSh{mj}4L&:g[!CC}Pĝ{&n1KƁ=C;KfyD6{ũ8XY`-2Ef+-gvVֻW֑s&t.Qz (W{r<|zczRT "෌SO<ژkӌk Rj0 TȲg2v7e"@a&*Lnp@3jbI,+F U哨g2//usL4:fK*W+CbT*덎|qeuZ8;weu5C7  9u֮g*/,έn:2mЍBHms)̉Zqj$N˲mR-ֻ`rwiq`]ɑuv &rJӴ.]Y,hձrj- Hѱyq, ߕ ەHBM(5 ʄxs"2f5 &t B$Uۗ&5^{thsg:D&1֬_2EV&*pi YKE*MX^\Y-GKݕҁSϬ -wxlfx|{G뭍'Ҝ}py.ݥklj3K{wh}DgA@F%"[ %q\n̪N^˅+&1%Gw3q .y!ZS:L "Fg !`d ;UE6@^TJҽ+ +^nT݈x]\bKbA̻%GD+ yS|2kI7Fs)|qz~\*Wk]BwYE0L/Lb4 CK"U4n˹S4 ܕpqb 9,hf)G~&Zo֩FZv;ݨmۜw:6Ro r̹m!rN;m;͍y KV0.M!d &:S^=o{S9Gc0 Bo"1_Pt5@ՑʬSlhKcP קqC6UE֭Tӝ+mXZ.9k;viiyiG:2ŵK[]mسmUu6& 3J8^wN2ݵݡb}tǎF[k7Zy+CbY S}@p}= p$ nhǞ~}i!2BB ?,cccss)! ꊣI Lya a-Hn$fdBe eA|EZe_]%GCp~:AE #qIb1H Ι%DcK: A0  # ! h4fFkf}+ c GuNdZv7^3nbm8 4 &]`NLXި\cFUEv d9Ͷhw:wA*K+덥+˗vL޷w#5, pD.%vl' Y1,X1 !, ݧ2/~ e<~-|wկ,kX( `BIB顙ەzsMph?8xQfΡZkj6>٘ԆFأOz }ŠenY.r|nYZwh-.\[i])`-FrErK]c+8iRӱz/.2xs3'iGE0ho*]3]3sܮEBML cVv{4rdUcivԠhl"< Dvs=u, ",TkYX:D#V3s<KmJPаQPQ\Bጞ()_o, 博bi9MnZcY, \8ftlٵZL,b+F˾6w \!: *XY aby-ږfe]׸mwFYo[7U5^بw9:hYq,7۝nqn1Yzsy^ovZ}7.`r:]ȳon_zɷ(@}bFO r$ "\C]D 2e<_74رWZvpZwmFvS*65'fg}͚dI3s|-V]zn @`FhLA@L&ӳ^%KOzLeAэ۷no9z̪̪ /9c᫲qxO׾&u'/·w7V63¬m(>+QT*z-7xe= C:"n=y:_PoYdZFUed_7ߥr/ 7>ɵeOD>ݍ!0w:NOmU /E][^z$}:RC/a}wLInQs5=p&u}Wd--8Di SKwKSk_nv ZsԈBP9apUAF"RnwVWRb4U'Q@ qP0 "B@OBUjzi(q"A sS'XF0   )P`YXڋ,)ukwґֱ)2DЂqE@\A``p΄ d[PJ4s3<4"yo;\) F6`޸>>܊~7ߕ 09xVqa }v㭝*sg\}8Q&{՝R^ؓGPĖCEyY{X7:]'Ftt\dgI? "dgwvq|g{Ȳ) NPN}t[ 6_v⽾l8] fYt,ƲDq.|.7a ^<B x3;c9s7(NypqB\GrQKfl1sr)o58yv/7e.myiA^vQ@3WܺiKve7Z+M0]aYrI<8tM[V@a G0F30&W "4 DB0@ LYY6.K9`kkV#iɸo<4[-IB!P Qf0@Dk P6Q^VJq^'!#"k'Z慔I# C͞,yOg7z;,$3j!~\oEͦ\YoRĝv7Og; Rp0LV0uD{GOXwZۑAn6qll`znxՌGU*^J18n+61K0WJ;͑项 :L* \cݹ \9ʪGO N 0Y4_W?1hMNa_Jy%ٟ3e?R٫p0aBbہ/-NDXxc-uz!Nm ~v xqł^mxgݴ]^ϥR̠ZS{GFb'0 $R24hLRJ*yW$Ӎv,~A. Zvv?8DTU%"RYUF#zь:ZR,s^==v:T(%X[N h)LUV;|UY D -8uii-`&9~@t.+{2J3y"uY{||쮯b;qRwI=(+g|cTbnjW j݋;[]郿?mg3 JE#GO&k:Ras﬈!j׃2zWdQ@Vpw/'G-fKtVA>pyOxgv=Zw?z_}A~6:Zi_ Yb"Dv]R Z߾;G1ș!l 7kn^ML_au̸Wva%ǹD%݉7Z93,tP,aܥHN2x1Cb sj6Cx((0P`@(jIMI!*Gڲ2 _-W6tAmEĈ0 Cây )tV@Zkd1@JUيA$9Bxs0˦5{rҁs4@YMڈ #Ҳ @/5 (PLgALXOwxN4^m51[_'x~UbkqNj7hA/&tz,QaVxO>y`m*8?TX ?q:#h`W;0TV;<7{[y9Jw}w'٧x w\a|f~pﵭovk/FJ^V@3a-BDm5:zU ʝev/,[0]@nꪭJŞPdB$EDB-R+m IDATs#y@g)]LDczOx r@ND$y}~2q٣Grc-vąMg,_=-t!+o$~\ƟheAJf0 /F }J\xND$:]'sUDn:(ǟAGTTVЬ-XHٿ]i7$ӑhBD I l8AR:&Cڮ/j Uorɖ į:0/FXձxԂ\pI ~"=OgD7sxj ~al;g1DZ(B!N87\xFYZ_ ^ ~Dk5Wr2۩g)ܻߌSVrt)y8, H`bRE7kJsyo4ٚt0 vA/g%Ron~6 b-Yw BJ'BRVJAӧd޶SE8PJS-ق 2R| 9"-a 7k.Xlu(.~M ^ba\Ʌ\|.FJv:A/Z QBmovȔڱ>(QTEe< (Lݦ>iiY r6С3$HZJH)5Q { BH`'""VZ0qZ4d֕E3Ei⠒22TZ+qJP(B Uh@ɴ($h4+Y#b60m|/eE иsqqX;'=ͫJ޶n ON>?j/F'2_ybt˞a j0+v OڮdD2D% X& egc 奊pn#nmO.J QK%'i76O=)Wwu5$eM'%6ݵ !M@b$g;A,.]μ{2! hW y-3$eYHDuH@m8T6C\ߤ7߅S_y6˜pNd)h@WWk!̰֓w+oް1͖ჯrS_N0}5y;N5Y3j6)i>j)9<~w=TilFRGֺ ?ёPwrm1*GpvTzVhPݻsGGdoqQ=otr;VG n!@ZHk]YZ"Ui6 TPX’b >jzwIfC  Yb_zt.)4~I]*p>~U 4|0zȠՉmn|e͕ޖYUYo֢-tRE+0I 0 b$Gh*PH'Rp OBL okk7-1z0_RqQK_ùW-k- .-.u , ff] +((2&Q KNݯiEw~# T T̠.KB Pκ@K)3N8RUU !jIȃ'DT`$k@n(ڍ&UUVYβQJAh=q뫝,g$jc6דfU׭ akc$;ogy-ZYtFmpQ7T'P"1#YG H?MƳҹxٷxs4,S8;t2`dTprn$w;:۽7vNV*a]},&5fpFUq|QUys}ov9lEx^uׂHh&A XZT3S$Y㭱RjuPYGB8̝Zo=*o)"]eT=ڮmݬt;fܡi&z>j X]r=>tju%wBNRk+&wzX9)mT-h Bp\x f{,ƫ.ÒPf_&ܨo5: "ϕ:h",;Ox[ Ӕ,rk!JO^P[T`r`4g@) THXS!RF(j!K Rɨq6sg@v^, Jt(a ;?.M'@`ZOFilweYaQIc YOf+ ާ?w6J_{~7VRfGI#j+{ѷW%muMg3U$!.-k xFxleޯFk}٭ԬOb2nWO6~{={a|~ɢ WeTka'EӪHW:ds5XA>(+mն_םnc;ͪy%0:8K}hAuYNXiLUJB i;+BrLYE Ba%" K(58Iu~F߯}5^q>vKкC|~9^(xm)\q /^VN7崨WTZ+'+S.ЭE{In4e*Zoًiʧͻ-MvC!- l8k7wy}6;;S'E?E&?L"qZn& AZRޤl^Vq0Dv=%Ubr4)xN'B\4w:q#'fƃ(Q{㝷t^^v@`cѯ?I~Ecpmưqe$kGPGO?cNyy@GwLj8ӱ+{#yp?v OGE Xinx2.k%mjT lYPx2L*z{ѻLJ VVdхG@8d 89VJȡ)|$4մC!U ua,UA"(f- F_vl~Y~8 9\?Dv~D$|ih}YZCc^3% >_ ׏q1-(s57<* ҲuDqDۯ; y[ӨlҢݮlvwqҺVQH D#I^״[8 ⲻp,jIJC% 3M r$OOtm J)g"/'eoCfAڌ㟽Q4ho~#"T+;<ʐ0 Vڬ1#iK 2md +QAɲ%0F*7O(XQixpj P).,XC!: IDAT8GNǝP5jQ>XgJF<%+ϖа(Hˇy+'jwWj&,ݵGz]~ Fԭ-DW/E.wԂ֫9^GE; ÚCO'UcƩct5)lyMܽ{/Y 1Frʃe!@ !pHgWw.u5+Zs~h$kJAh$/i%XuZj5dQ CP_}3DEcD+kzCCay%R.V)2cš3 RYk4.ELP*PBJgKBe,%?΄R*2.ɻAѵrS~U?EN"Փ+"/Ir<k3[:2@#Ы䵻ۛka#Feu|QnJ0 zzQOܻժP*AWW7?|br(Lo 8{`AT#|mMA؄$rK7/oN\'$I )B ^|kCo:z~R_)WūILnlD}{9M2UXpEQ .V l-W(2*Q(Ip<V1 y]&CY,JQ+ +}i& kޕ%HMlz$T!XGj,3Up5YQ(q>`L]Pxw2[rVA7AuAjZ芲^F⦅nqmu^!$)J0Lyb[>^ΐ{ihg\rVjSswwѣ0PȤv΃`x]壣vff\ը#rQB QjɤD[񃵠VɺJ7No ;Vq=´kjRp5fĉA&zK x0.{FA%q}gQ]ܻ ݝioHUxݯd[o>{QEfQEvvww: 4/ҵf uks*<ljj߷SoKs-F ^סC ~0 0A7l͕vˣgֿV[92g? -RfdjfVR&7> OΫzgW t-%yHdT͚ɧsT`qvzD-# M`}H ".yfDž i8 B]K)@ p@» cI!(x<N~;h4LoD/ɯ2۞[j 㖶| 0WH7FmoP\oSP-Y[7ήlHEQ1S$ 쮯՛*Ioh3Sz7IpfswX"wNK(z{|:oU]mEֽuVC N꜓y(Q(bD!"EȄ(ű5:KuߚzA9v!x7vFzpQKX]熯`[Y˾EP; ';đs=:>}O&vNK'!"BUhsڼqR7swo8LM'ʶݪ}@\YjɢʮYy3Q" +ZG^mmySm_t:U{s}i)U d:[mRHVFw:n37UCƺ'(5jcc]po\ۼ~{IF7?RcԉyׅB`e43EB g3>ob$cԫk_487nq{!p2퍟|g#_IJ•3w A3>1w۷o]ɖƺ{~f2HvtJFO|o ;agykekK$*9|76xDɡʺK}5>= eFJmuh#|;!弍:IQ&T#+9Jk/h! $KRGmPJH3&u'JvƏ&TyhO4kggLJG⍦0yKMѫ/ov׻{p,ɶԼquPb^6|w8vq!e <жNxXKM^Gi)$* {)NgGmӾԹ"d"]p_QZWF/˸?_YOfʃd>mkK3 F,W_} x}ϫpk,ċD樴gPVWWΛ]%k.c@ҵѕ/7?+MwgxkIj@ "0Gܲj Y+ tsopW#]]mh}O|ݾE_>`d71̊GyeAfANRQ̮ᔤEim Lc e[,kuPR( \BlR7s6pg42Etd" A$8 I QIŮt07`dKDx^t7Ef[lS hE=|x ܰ:ǻ3y+mQCMn-?Uqc&UKJ2'S{R?uMz2|6L$_I3{M5غM9v~?cz'k=qZ[N!4gPO=? }= LD\ӧMgzs _ۯ^YMB1-^ȃAo++Zp֨yi7]gt|4oֲKd GR'&aFe݆غ8+T덥Q~`2$ƪi-5zl7¤j(pkmkk)r*":zcRU"޽[YmIvu{ɟ).=e*$رeN!#RʯQTy7v؆Y ip\Ծj{w>M%/;_]'Mw8H B8V0%&%G=|gWV~otzl~_im`Y\h;/mvlqRTmmJStZ˻)m63;:`('M %*(:$R!shtCD&$j" )4-7^ D-= -bdKF/DBHD.q/z3tЛqS(z\qZl˘|qgo/@aĥ013~g0G'/9|1$]g{$(nuDFb1XBsra]rlމ~;_Gu:y|u2.8\΋p)Kux3<| ,b"i!DwzWj꥕tZ?|2&A7"R65!OlJgkui2G[[+~tc-ZhgWNE߷c310;GpWumNNԩK8 u>RZd=ܭʲ)Kl=n[WvG#DITTiBmYڄ=HuUw:1ァXipUe,;KTR+ 1)mTJ@$$uN0&mҾ1F2rDA "F`A,&DYTD r$@zD:: x\2_NXQwI `N`m1Qť kZԋ%N yL19̋N}94̀ hm,w1MX$ӊ?^ n89Puo^zWJ)fDđ@ؖ\ .Q&L~peI_+߽Y=9Z&Fj\z!(Lؠ ş}#!>ܼzƍ++`w?zKRoc$6<QA۫W__BGfF@yI +audɭ)@$^&\7p:7i׿Ʒw'w?{_/gx+6:xWo:Eۘ#Jܹg?=x~vgoÆ"2YR3XGLYR.H>}ۯl.-i{Mz n'PGZik)JGn{݇=l^I $rO{M8 L1oTiD4nټs纂3%~g-)6Tvpܮ5~O+7J<|l` O'KtC0y V'Ҍ&/̒ kTA+`#c3ykiw`)CI$bGo:Li# o aKU=44˺EX<$Mjt ]$ U&Gc \VdP!GP 3?]H|^IԈ'Wu $`g М 1L*O D =,\j 0dgFIJ IDAT'|3{^H!9gsLgztX_[XqhI=OIG5uˈ(ql Bi@l\_{kX? L1F40 {$Ie Upm-[hp-zԵ7ݽa;rDO5h- M [YM4f6zzTO)A5_"7 AVR`:jrHR﨎aOż?WH&\Ei_O?M[ Va`X[yj_wIK>Ϊ'w`?lu^qp[WW^Qy|;|D)5#GCGWj}ˬAVc!x0=8Jf/0S1IrvXtaD)aj±)C.ݒDZȊ;Mey9I;D(fM b'´eAdpNAd Q8 BZ!)p>rr;K_ј3b@@ 1f>cĸpxf?^tD Q /T 'oҽȜxN@Θ+"⣮.m0y^sB$l Rn7P֦(2lY |ýaOCl#fm7v|Ѕ" "2ɴum4h "F:&1rvNzngޮdkWKͯ(wgQ飃xswkci{<'")"֚! LΧ~m? Gt$P>SLZ NBȵ-0D{!  rF??|wzuwz2o;^d4LPڵ냿>Hz/,~:o?}2n5n8пͯW67ǿ9g].,JmϒaD4; I}0n'qM+cձ}H3om$B`cCQDB9B!6d04#W )3r}$f(urp#ԙyOy5H @)I,t Xq"т):5v k(HbP5"x!b/Υ Ƶ.P4) sBh!\@yG9tZ#rc%'D .\J!Q ^vFQf&pV/WBk5Q-Cg `ǬgBee7)2%B!)B543M]ݽڿ6{0;lfr?=ZX%𣏷OenvBhmd&V4Kl8iݛ͚(42JkB͵b%|lA !Q :>> EQ7:,֒CPUcدvheV҆}rA܀dfebǖN8RYV+:(I߅t"8NZ'rC=7'd"Ewk^ZMڪ 26$"*%FBa>#f !D7mFiS#@zp۶DV5qFr ~_rN|: R'S p ׽Hܺ"S0sFZ8QXx=v[\ɩs^p m2EE &k"YfNO:MDcm) g@طXwuڠh2$FȮWVy*yb]kp{oןφw&xp7ߙU˵uҘT^/k L)7 +wfuyRFiy(&Z%\GX)U[lu:m!@aS,!k+ۙ\[v&a3PYbv7 g`&l_wvS-&Ivj+Tdh63|u8>Hi~߂ REf <؃I$bWJٜa tb$!Q7b>l,̾-劑]b!fy|;y5*+ZүlH|_ $ՀLxD^CJ(H+#cL$$D:)x/Pl5Fwm}$TUB֍mAJ !"B!ׄL:׽|IS1<@/ 1rZv2u0> CgL[|b~'C,k^{a92~zZv=Y |X9F8 :y,s+ˆC\MrSNjR@" Be ZpYfEGJ. $fzo7޺d\(ʼ"T~'Kޖ*1:9m5y D>7{߾y脘cT%$R+TR(ˋ,~i9LY+tE|c}dْWV;hj:F}@kYKt/I* qr#u'I?{trwq)TUf @TRRH3ql^ 4>i-CӶoapNH)^ed~W` եipMVq-D8LepF3Q Dub/Cee\Jp 1sBٴdHLD;Guō@1RJ)Uמ88QtL Z[Ng"虐Ei4z $5o<h۝畾 ^Lp5\4.f}zJi/SdL[))!/˰Us?}12-og~g)B|&݃YI?X/~^(pWV>ܙT ]@3/L$r"`H*B+3#4)͸O'Oof*z꠷=h]B$кce=3|˶1IQP`p>DJJea䬝bnoFj(MH"w5ișTGmTYwMU5Js+ٿ4*-e1nifMIBL۶ñ0zENBFRBlR#E5 FDOqf N/TL2J]pc& bk)0(K8#q ت!cUyU`ʵŽL~dq ]k$oʖWcEJ s2*-#*@R P`R$%WxHRHˋ<8H D1IeRo N7QB-%n3F$y(|!822Fg$3C]_J-D*@=gػv).d`:73* _ &z&|EN |I^<?:$MY\dF![eI1.{^naIJ)rKy#4Zn=*:?LW|hvOc{@x8yƺد~iD*Y3άE +ݹ>y_ZbI #Dmn(ܩYM -֬`N5umsv%e2-u9sYMnL?cZ2h) qxXphYԹ:> KV?][]$etd4NfoW;R+ Ĉ,tk\B|/@1ad!E mZ !H k-RC%hY\Z8gF! `#aʹFTR*8lґ(xEj'vG]kѻd2BC6I##1cd@= P!ID0֍'hp>/GL[GDLVuyhZx_Z.n ZZ |A}.zIӪ1 Ρidy.Btv@ʳ܂9mQ?="3.ILPl_494/|D䕍Jgl#Wzy=BHh2Ӭ;.v:ZV|>$Ovg[Ku:Vq?od$"wf<=<ԎݯyT󿠕9LU'FFZ[/ݽ{o]݊:?8<Mu;M2m`bʕtSEky]Zv G1!ub,U5v~OI|gdjF$5T! TTB\`c>3rr,BsJ+I%Ǹ%Ns.mF2dY$]Z mY3F@HJS(1AumxP6ql{ <0(rJ_7շ޸nS4;޾q"QPD5DI= ҉i"2R>6(8-$ȋ@yޓyוA $ NDwDOBJN䅞O,lCCFDY$3 9˳4(Nn|(o^_vJ;U^Uţ?-z=n=?pgX]~(qNa"i) [zsKy84i"$(Ki5lvRRΫj<-oҫw>z<4}yegU@LRHD }]־q~/nܺ`8QrM7ɬo/3z}eyyy-~~b/yyǻdriWnGOGUm7;퓪ٿ^ye?X."?׿)@ZM]/ @!9)e5+ mYOyZ7OϪfF}s]̼ DPNbp"I/-Yp5%CEQ?;HT7IȪmEV@RL9<ehtX̦ɡ~^]J6j^=tZuBZg;<2y煐Y`<01+7PJOƖeDio)s]o(1Shv-[*Tu4Iж?$F&Fju*ey1I-8/# +\OMGDq/Vh'#0܍Lh tN]dlUJWi mM7,\8Y)Uχ3{s{I7O^꿙I P5F]-Jg#1K8)`>y7fyLv:(,>;1n߾uu3rͅ@Bj奜}3ODOi`n_cڕ~ ϻ"~Ο׮\XZ^J;$H6|ș=�|ޔlUच|'qy3(հj]=;Nÿw<EֺM|wtTyRkZ*`|yRThmVQ'"&c;:"料"PF ZaCPRՍgM'#1A%YEAnXUVnyaR1UEc"bMGfKJJDqU-Bh {Ϥ|暏~=]H + D/S?჋-x<\ʨ_v'fgvw(x]$F7,O e:sók,t;_ sWrwWm IDAT_^\Y2K` S,,z/R!hzBJ|[{I>|<j}uYIF7)1 !Fb:™J9lAlҋ֭K];# };<.\T3/c"`r1Ѥ>KJ1/gV_{ 76~7]M]B}2;wRΟ[tƹȴ`ٙw$ƾAy/x0J0!dOGw.3W.ڽk&4@L}06-;'`ye!e^;u2tz4Ω媤[_\X~f@en쌇k?~,j"dDrjь&z6(Hsu孛 Bd8[YρBr}U:Z0 ȭ7attH7SkyHSB!/d"6{EMw"(ΜOR%sΉreELSB& w˥k4{ŧ͔]_UhiT)ˮkuu@YIjbJp!)a0i15] Oxﳜ!1:I۳?fm3B91x_ǖ?Y wGj8x8GIt>quN%n' }֘)%)( H꺯.&ƗM?oX3Gݝ{VI%[cᣅ9h,!CsJlkP]慎 3)Ɣr9ښP+ђ`2)wx_r7$]?_֥2W>e)]|phsR !xC>jr}}v,kq Ee1f/5W^]ۗ/+չ|2RJ ܹ8?5~׉{Ⅻۗzq ?q$,Uͳ4i%(&pE39 pIRP !QۧBՅ Jp΂us_uMhc5 YS^ CѨ1/ 'nXptRMkmb azcM<ا`9Gº.LbBunPhBԚV!JI `?em3B"Q6%)HӞ5Oc֎'@3(ugIOa;?{ *lt20IїR:J]{K+yB p6[z$u G }ObG(GFkRA9WQOHbJvJRdm)fGr, u+ 8%J0.)r9C Ag٬G{#H)? PNyA(Ø⯼݃هӽKVV&+\[}w"ޛgˮͅJ0޷51=|0^y+_̳[v?<74ɢo.!ѮJ5٦P|ɰǻ2 xvp2w;O_ CUQHPBbWՠUY(K5Q<LpNJ.%=!q)+^*$R BJl TKUꥵ[BӾG5ɲ@y^ Gw\LE$GS^SyT9wNɃ"8%w|?<'OTqȱ('zc1S?ΙuvX*W")Զ_|ts[+e`PXheRP?fn>o_RE#ZkuS|M<+!F2":5Js).K7s]X]<4 еuLm&2Bz1MvTAVݦkF2ɘ J!8'&O`pz@SI]{LQG1,yt01(Ff'bwh'}nHL!CGP@θ>/Wy D@q<,5f I|{s7kmhw9µÒOF`R=FYYz $UYdY{?3{xXJcy&\j3c!TiPV$9(M)ƔLx绮+(8lpLSY]ꤱv\N6XUՕ/\>wLVd{{ׯ݂ L4rh?Խ~.siv0sCi.tm;66lƣ,S/6D38GƸw%q˩@ 1C^d]!1Uv >L(7.8z].L7ib JjcMZ1<+8&+7>꿷l`z{pBeE2-͎|u))"@M kLJu=C}0>P(-Ј\p TGL<L"wq!ٴkv^뛚F*6UJ%O@!o;[8'3gޜ?0ۇ5)tnjTs(rθ 6;e6{eŴhlL>DB[QR0ֹ2|pD-T:O$D(6,`}ͻ&.ri_N25=0zNLƓjp b^,)--q 'ԋPTecR٢K10)A.4|ْmeeJr$DB+0}ˀRQGiݤ#@LyUM5><#nكTa y>"=9p1'ENK)B>YQu,y%S-=}L)< X_!y,Oǯ!ȹ3k06kUٴnkt>#|inJ+Zf_ta5,=~w$DR !Z5L ѴmA$B@YHRo1FqSd9:!,F:UeugTJ))tW9c̸xtlY6՛?k|̹[߮|SXϿHe܇D>(8Ѹ]N߷z0ZܛχŚ cq %3yp޷ޕoq_M&Ձ{(@[,DZd9=+T|n4X_d{9.%# .ELV'5mydPC˅s :/^V*3Kڭr^N@EB:Y1 |B&BkNYA*>DCF9%`j^%@SYV˶(AϹS!<π!D4*ƠnzCw[ku*cz%!I zࣜjOgUDt ɡ'1w? 8'sNqgc >9yFOk4;quy1p]}|R ۷ Q[WίWUlE= F_Nx[ 1"0o1IIΌOq)%C¨94U"@.BH}PK!%$1DJ)yfFNpN) #C]X-ZwBfjfU ˊ,Ӭʸ..fXƷ}ԂW^ϝ__wrz5͕+g\=s0scCKQqx[u.SJ1yF(StyY?6R$L@XL5a¾3s)X^|ûk8;[&vU7\ߛ!FBbsB韝;ov3-4$6 zQ{;u]Ǯ)A^,ifG lG@!i(c)aS]V}oDb$ƄkyS a)TpFetJF2Fy2DFcLbe# ! AUZ r$Aj91V'af}tY"l6 OSqq<-HBT Ϣ,I)eަe_tkϝh8(R(a5nHBҶ錭CoT ,BǕ d˜;{Ͳ;zo,1,69_&zEH@4HkbWSoW_Kwp|9-[R/FY$!;  Rd|jy0tTIk)2ϏCMHaLŷ|2\8kr]1,<cӴAe])$S3Bpb e@ ;d%NeheY'$5%w"Aߡu.dm(hftgƃѴ,ʶ5>$  :%5,ʂ2NiB :WigUQ: M?aq2i18~ZϊVGOD3v W괢';41EB4. "` BC")!7wJ }xo@gc-IkLNhy$ι*g9BXt__Ϯl 9<"'|16&իg"! 0B!玲B*f mյ5!]tH!ֳ"yvx\L*B(HqlV…F<]̋앋n&+L )2I=j8,];wl75$nR1gϯ/ԣ_sìmCA 0JqR3&({h8.~C^9ۭLB  ~}mmJ%(WѢ;Qo-RV`c0!H' %N!ϲ몢$4b"f\3ƻmQƇ,k)(,WQ-M.!!1&F]s$Pvwk!$|}]BBc^骨zk} xs-A#"#s183OB> =}?)dEOu?+{VG>e =|$&OE9);9B(m;].卷e^ JkwAeKy@ep:އB pDpjƥƔ5ޙ@Er狮 9g $\L{-6/^15S \)NY+43SRp֤r~̅RZ* )wb1BT2qSuR(kRh?0^X?Ah"XEQr9!QFxdmMn<<:UBy6oyg}0cRo(J^:ƁD`J1>hw.vfS.xHK n߫ƅՋΜ8e5y^qowî"0ֶm[oLARP8$Fbi΅i{rJDGΙ٬ t<&vPA ))"S\qH( eYk{Y*bX IDATcRCy>t6ڮ6wiz+, {j+|┉Lyf$;mq姽x ?E|˻ؙ֏B:-TFDPNMs?WLvn-eLVE a0ݚ$Y}~sC_/6mKF(ܛK)Д"QSBB>۳y ѽe & ]ʨ,xmiL"5#"s2wm+_9 66G6[{˃鏿7x*xYyGB^[o^ZyDͿ{~uLe_UkB%P.<_ Jx3*(|/a"|@H[,+W?^\D^>llH+J<-"$\kȂKpew?xh߷ aR]X_Q謟ˍ7^}i],5/̿|il@A+.c!SJ1k\ VRCXU KR F<=@9k]rJU)n0J7۶E "σŢN1>ӷsA*մ1nB )1s3'aii[tZɾG ??T%KOq !P0pRt\+€뀂imccdkuHڮ=ڙ&zRfֆj7چ "A !(7vͥͪƘ|\{uRJ.y4 !F"0ywB^8 !ކ /2m+|19!Ư|}0Z/{v? {wɼ,?ʻwvxvh~#9n*QR͌툋)$Tg $}~Z+ֶdxf}Yk<)ƦY'K2U"Z]_aE=83%m9琈Tژ̕"8\&$xLSTIUnoyIptՇu~!Qvk/l3M)]%r /W_|\^Oo-l\0DY̚$Yҙv!4)AD;י+kƀ$+2(H)kPj͢IH)0 OmoBhcB$c3)d[6f3:cMdJx{ya?Y{2x~}BKrg1gca Ps;8yqBwZ}D;=?.q?[+!($$bY9[) oQRJ!),(v>;~IvAݟ^UYrʚX礐k,umR+JR5Ȏ}kFXJr-y.EŔuL1e\" !%TC-;*,[kc)"!1*$P@HoQݮ \zD2WRJūbTqQJ$3ۘR`Xw4[;DȔ\?]?}筗_]Fv6ï}nF5h;s1b6H8N}CDH(ָ{ZJ{0σ?Jwnw;75\rVXhM1eR1H4xGRP?ˌv?$[_yK/o~j;,tȄ!o}+W&g Znzg02nz'az0q8  vRPlVE{J|X4B Q뻲̳,3&!sm;x2ABH"_מ<Q )$BTBPF(eY.7eFQJAk|xe= 9;M><"$aגRLvѧ") @+ S;c*lӫ=caG w'}H1scJ Jɲ鬏>j뱳ں)ueƵ`-c@>Ȥbku@b26uAʘ>D p~m6#]Ubqc4\:7V߹7}@} -2"Az*suv:y1R"ThL A 1* l n<- @ n~׿sk#Y_k^^YA&5b"FtԖݝyEdB&n<ō) 6 =4t~0,Ξ29)2F$%Bh Q cq/k3gG8\T˲~ko|Fa\mi-'8ȍA&w>4HBD@$p:*B3#0 @Y&ֹCFsHr2 ]躀D6m+)9Xcxjxkd*"HJ:YNTAcO)|(}JoSQGj'nJ~|2ɡ?Fa6˺^$T&Xwvmieb)yeǥmnlOvn0އ7, %cA Y/Ąde+3k0SKΧDRu5@ m=yT=[6͗J1/8,wzū0ʋDRk|gCJ)uW/z0&\oT}K|0ԄzgY>drS8ԓ|*֝az~Ƞ;8UDžQ.]#PʜJQw}or 1Lؙu5`DS\0D"89nq>8znJ$d쨡@!J<&׵ȄԪutm<('->;GAiB! JRF11DdXye8!& 7yH"~W&H4gF*5CtX.1F.n`ӛUE?oͥxpʣ/;]c2:g 6]S*o~\FxG H).e3ȍ? SX]ƣqYL&+c;ek"GG{?-g_~kW/?~G˭5=*;w^p}WWn?f,B )`5H'2dkT,F>SB:Szm'Ra"\ΗUp[*>Q 1_b<=q#ǐicog x4 ӭO |\,|fj?F1[{<'I0w?|gs4Xtkýy{\OU2aOuRժ:R%dMo7/[2I2\ֻqx%WR(Fb쌭[Zxo`Ȅu]\\(I>`HPH25\3*$ŨRloFɢ\R)HYDt{c1%T+A)/bY3l"XB"ЃޝkORC/A[FiH01 +hB{}HI#mݙ덍UbW^w0A,ÅU1΄Eo=a غ.M]2\4B^~nu8j{MRp >¼3:wwJ>cѴvϖ @ȾW&!:b*WRH.mgV OڛʒeakCLy;TխjvMR R$ӐAl7 ld,~l˴ ΤnM6{ꪮ;!3cZ~;V{nĎ=Ű{=́T{Fdf;;e$AEc S9ueEkբi(գ's(E|KW\sѣӔٙcJ:ќ3]ŝg8nkgnnM~uތkt|n+hW07^dxW7D"k[!us_/KzKzE^[ѓ@Q95 d~jMŲ*wgQuy03{3RbH 1 !(Ɣyd(r:,48f4H%+ #<8=^Lm#v/{{QU.^h.9TUm /jU\B !yDR$Dl,3bQW77CEEsc0)cLL1Ɯ պ]=Ds:MŪ[RJ~~z~駏gÜbgÜag""0 f;fŔa;g&⼱q~hxwC[U8 1z{;o{wªzӾl,o揟=;y2\1 Z@)%&1W˚P ioq*)Xm]k OWsd C 2j!TBih}3N,m}|VMXyꇱl=iɖ0r|jLs7K I[v>7 ^^r0-鯤 |a9[;-[xt/ڥ]|vB:)s)kj|s\eWuA^k\m<8^nw/T2&ƻ0$e) J!BPuUi~[Q S<=k_۪HI19k-B-ص]]8S< } aǺB)]e/Sf{VJAp1#!DX˜gWKqm1m-9o?M')7|}|ggI`;̀0R}k]8§?ӓSU0H+wδMm1t|xԡH%hf }~hm>yzƢmΩlC KW{uޚY{)k 1$9!/`RBO!2 ")h.%̀ƺ3sfñ}>{o?v_Q򆰮㔋˒J%CVk"BBd$$P1d%kJ@C6ͷzl-W(HNFu*8=9;[ @19ISnUEFЛrx7>wX\ o__:_ݾN~cxyeFu_w/Vf:OBE7!)Z_2b[voEg-s4(7 r:hCMݲf"zU§|L/*;u^JI9{EDu($UR|;a{7;~O2IG)RD2)"TJʂb ܂ZbNsxgod7hQ+Bo?{_iPrV`+"̵X RJqF]]9֌?~ @#Ӯ1rfO Qy4Ukj,YUGsvT9ޏ!=#Dm3+/oɴ?LJ,>4lm ǟ|_]=jLqn;nS{M 4E9("`!BFRACsL߉dmJKM@)hknd8Di yX-TrRSR[ɾ하ِnWP捴ە#Z[_dXJ7 MV.] b㿰(3Nϼ{3sSJ<+1[8֝}EssX-,֙\j13ΐ4!ĆIrNbcZJfwW5WդlJ޾|r[tQԺ$W9gqΊ 1rDf6rAe?~qPq׾RhoHI9̪ZDA5[Y3m_nK]W2%H_9_P1"f36Bu+dQ4~\TEAopmaqaBD4u]FIyև1_ů;wbCtmmeB7qy/}-VZ>I%)f<Řڦ-Z,8Fin)86uLX쟯7@)r''뺡SJ]0"f9e&#E0`\ZΚJֺnb|ދk?Tۗz/@d^47W[ ]} h){Œ_ܐZnn7c =~ژM?-0+RV89,ڙeGcy\|ɓz^ 14qkGY%/KYAٶ賂PSR ψs9Ǧ,%w8GDZ4OVzS9P;m IDAT?ڷ}X"HA@JV ~ĠМSTİQQ_~vsVvʽ{ί݇S{t-*BD9i [o Z^sv}bX7X~nY8t9VۦMˬh(%9Yog)B94<ޝ;{SY(*rYK9߹s65A>~+w_<"w~koo>l)mȆ׿|_WeEϬ00lu$;^01%筪A2~0AfL0h)dg!lr.㔭Ðs"$I]6_lUijVu+n?1sPCHErZ& 0KR9r/J5;WЋjNQWx8W|+]>^_%z\a^^6LSF.YAa\΂<s,搞UlwNȶmbc0e*2#C1U+I_̜DU@̌Z^<"hUZilږ/"Yl-;kr.qA0d)3ٶm HaLSl!r`RH1Zk vth/~g $ʚ6YE/l q0zwx.s? 0)X$0U߭m)Wua߾qӰ]5h~#1ם~SU7pށlIɛO?-) sԜ{>Yda9 U>ݶEK)9YgX[Uy߶ B64ޔUyG[,f6ENO֛qNR))~ S~H}?3Lfc8&l_W\A ۅsjgVه.BL8k-y bz6z{;רJ` cW:ܽ(" %?9vLaT£4I$"@Z$Zoes la;"P.@r!FӐSvL"!fA@h@K)@P DMs͢*MD3mJ9sIZæ$)9R 1Wb@0)BiKr|OzUuTHmubJ4gsKPpmL9Os@+$JEi:[X߫Ҵ$N-&ârtm]?w&)?;9ΓT5{i,[0޹ 4 ;h!ZjmJȔ~~_Ow?.6);1OsT~|t\NVdPȹwv; 0[-SfXw *E«!nTpvp%%/ .+O7&C*tB7o6n RBo/Z E&)sEHy|r WfVSdL?N1e R.zQBI)amFDQ]J[JLEEq:iȣv\.i)"-0R$$((dΆi\h]MǴTH)'a"@l$"1P1TR"M-EA@V-Rj F8?[GOOĄ$fl NMm^ŷNŔ{5j4Ќv93EsBL9o߾wg~muMȔ0Ϟ&ǽӼ@?>>@uNcx_AsΥ!"al]|7~rӶh\螞;:.lXcMm -<]FP=SMoT7\[Ϟ/vI/:^}޴酿Ð #F@_/֟kۏ%y*^ .?7tp+ⱨZkKKQ 1"*?4d1231!q)c̛a-˽1Hì MӜmR4=;$`C_jI,smbg sp#U"6X -xclDʻ a]W9gRrsL"B!EC)Zc"$dbdb"2eEk H%}Lc l (Tgf%EuUS991 OW].sP5Mـ Yc]Κr汀Yԧrə SV'5"gqңaX>yzH8 ϼgFKٞ1 g6)ϨlO:MUY.~"rje՝l)Uzvk Đ6*&p(Zr rx\9#j\,{_jew,1) Ma^}?67aG~~X. ǜc\#H1b)U[[kLKr<5U= !S8ヽeJA3gNeS:O 1;UO֫MfF"Yђ1 Cg&6PDP@vJkHB "b"fbⲛl p,rpDe}v.]׉6L0+qƶ )ŔPj}36mSDl4'B~Pa+U$ПK{mF5O$?z U%׃veqC\44b 5N'UuhMcGE;amX8ce}St:;b甥.*!Huy6Zhkw\a ,0sɅQvKY#d$"DTSQ1d뒢!alTZڦ\&iٗ7pSz.9!i|^wON@ha~Lu]ʏt6ѪY4M}}rrVȄ'^ؒL)S1ت}py5JbG3gm9 Ugˌ9W|XVC%8g!8W6L!h%y60tγtu1j)eۏNS-['O(^kWeߦ ]tUnv΍z]S!oKUɗμKxMAfh7y7uHJQ"~1sfE19\~82fBRy1LdN:8LƘ('|3Z&YumۘJLTR`8朶M]HaB5޹=9Dkhs{eDxTEJΩv&Blꆈb{c\!6\咽rNH9@sr:3%P2lK9璒^L,J]ŚK"Uc)3gwc"ZU#p[LGO]x|䬉c”x_;5=|v6Mb }! f)Nd[,BE)`jhls,Y`>OcL[CVZĨŴ-!0<H!NȜKi8 @3M-<9?TPa B󆜗PK_@UHHwq5{{}.s )1ˁe9n0 sΊ֥mRyAUUbi>ltպhN2z<1JmY_Cр 88Ɣ}gOp=*JUUY*!y?ϳ00Ls#q^tӼzQ#S2e釡vG޲O4F)_jc.nacU^K s(V6rF(0@)14 +x׫~[G{G}c&5?y6k)ƒo+;ȸ _  ]ZFBɗ_iw7nwPȿv%/ʫ5^7F5Ž}p7h7q x xx/X m(p\E4Y9oiPUw06kZ$  B }Syg 5 *;T 2O\Y \U)g1{ZR`Bgxc|r6$)j5lĐTD98\4 %(v-PrꚆ٨d"P@bRDTȪm^r"(& ĐJ*R\e 11#n nim%4RJəT5/> )5\J!")s(s A2D< cPĕsoO7~ȒJvTwzCĖ%!,+ 1')!ŜxCќ qbnc6Ꮼf@!FD %fCDQ-lM9 Lh]ux'2xјYD@]W}W[vÊb^.*8M-]7TWw%PWƻ:1Zv>P|=Yom-uU.ܛ6z}-5U\uܿ~xiQv!.aӛ{r .xՑk\UGnJ}(@I1K.)DBșC(TeOFek+Kd8L*9'|zYTrJ*CJa |,<~pwӹHEtCS_>XB~sA:||bI,QIH2+*Z/eOO-=<> ,QK #WƐ*c(i.EbG  kMAB)@E(H3!b.*|`k_ZEDel79 )5߿׿9P[aK.dui:ǙC@8)O1?YopXo'PiE9ǹI?;3tݪun IDATmfחowT9妭l*-}uv}Wn6]]/CΞjdLQRT"MyBiVAo4l﷑ (L9C؎)@a纪QPrLf1f769>Z Q5qFs l/ oL"P:KK johZ W'.WDRʥ7V{K[jk-ƫלr!xZc_wMVUL%T)1FkmV()3*,ڶ@[N4+L9 4s/idâ6UYswZ ƚ$ytRy1)IH?;>8m E@aJ€{8D Ie9f 8oTehjߘ/}wv I'c>Y .Ƒ jH6Y@0i,cJH[2,) lبf* e\f}ZJS7:="6sB{ 4+*ְjOnjUE*MݐkwS]?r?xRW QM$Eas8g}V?+(\a-R!AR1S\*1&M37g9?;oW6KI1}àaq R9-=R]7v1ֶhJ5vY YX&r^ӷ 7ڋ%Fw['o־tm oq-tMZ66 K{ٗWc۵Rs!vk 3!0 +fDtgA~ʘRB Z5 sݘ" *%ggvڬg50"sؘ1GgÎ1[UM)SI egOl'Up73AU9lq669<eBLp]{o\TDeJݍa@R@5," "HdֺB@)HH%PP%3"uYLZt9#mkWi"ךꃧOS6;Ծj릶,^p~|/!pu8C]Wyz)wIߺs8[ e[gg㌝"mޤDzmI24Dwo^v2+3TT1`# ~?AbˆA"A!@PL)!^fv9Y1Ǜj+g~ofl1>RKBk /_T˝2ʵ:`3b*H`XK|SY/Em/Q60^O΄~rp9QCvRio~\ zOS?:o(~O{ޥw)׏eOn',U|d2<>uh'ރǠ@O7r̹(2T*pqƊ4} XWm[Gm("5TK-U5۵.xݰ$b1}[K5,1/NVMDL]Y ( +lAQU R*,8棾ݞv lBkPSIMEkPU5c-0W!B2fWBD@(ZRJ^@H,Cgfڶi.ˮ R37u3XG֚\*RWGeFҮ s!Xv/{+8 M0}Ph'mv|3eC>boyv8Mic4٬RjmB(Z0]3דmu7)Mq%vo yM<==>>=fmxm:Oe8D֛"d>ɳ$X] &2[PS쑰>4C|F}Žqw{I!|=<-f>"xWnG=byQ>0hɂ"DKqy@seh@q]cH `aP @Kn 15Yk-Y ) +("2hJEFʉsZ \X$gYDQEPE\A/ߞh7?:K`Q-5U`HȢޒ1 *הK-e)κ9US)%9'{ZJQ%@MJ"+TJ'_+fէyfe؍qWn}qU$㻶RRfUϷGGۣuM_'yQ ??j(V>8ڷ^DcXo M,׻bzTIKxwU-9s:y"k3H$g15DuZ܋UR#twѾs"ߍoxUDP/~wszƮvI^@ȞjXDƽf_Cyb5/}zf78]w3{ Í/[K,{ )gVxa9EB1vI]JYc VPa֒2L#];*چR ` 'O-BX&V y¦!n;Y;3T DJ!"0ж@U2 *xs!Bk"ZR-}=6nh|e9h Zp$WJND$D_ZE]j;kHAXc3 "ܞT **3W$vo2ǒ-AfJ."LͿo\~ze_f_k;W:gEI*כ?W1_C$R קǿWEt)ӓ*םsԩdgwDOkhӼzݾ{w}ٸ<[ ,ǧG߿:Y5G׿?fUKx`R:> v*݅PU ?;Xw{XaGc }HҞ!pzWaȵ2kK9K Z Sdð?:CĹ~hyT3Bs$c}˵F[fϪ xw/p  "tm0ƔR J@ њe mRw:oD4ݤ@R(w?x{H,I+2oDDB)UjX~5VX( QE~1!iIE@}ިu]府ğRཪ &8DDAɑZ$+R|}5dhɖ%C#2D_b{.obC|ymC` ԁRp3I,O_LjlzZf&4Dཛ rʪ/ULQi;'Z#˾I%55YX9vXrRW͛#ռ=9)mN>t؁B99/.wQUm}X__U޿XSyugb+,<%s@I!4'}y?{=`d-^(d sqSz6ҧb?d4儸hC 5"9#"j[\dɒm}hsU30N zgtl7\oYzqDHg;:sSi823=}9 |K/OL?ne.\pm.PJr圛030]nٮAa7 1edVadgZ3T Vg}+scK֒ͩ>xwisߔo_^^/HW7{06gCgU5owJVMnƑh+m))Xs@Ru9xCDZwEYޞiDt lHT2 heHJ9B#"z*KPvDIivC{QD?a6lNե*+қ125!RyxݞRr]JS4[s `qP&}{O=<R#qc1QU*p9X6 jبXtDmBIk Lq8v U%R* Ihh*4iZ[opޝ 1Wm~#RXT(1]](t^ 9RQuyqrb^ӻۯN)/)-o $thDZ afU0}L /f2!1@R ̲_a^^*HSօOR *csLZoaccrUq%2!k}hERxߝl]j/ߪI^]]-dQ\w#:fMn\AZrεVc 6l +1\mxsUu}<ݬ"iH֫ZnmE<~Jqx>:usDל~fgb9TnyF~/'m?I>  }vw/G=?OA 37x]!▼y5a_9WBt֙;BPu-3N1\fLr7G}Ӓ7a?C$cfؽ8>2"xCdYgj RbOU F`φ9;w6mdj]N`AػŋUu?1rM)Ucǭۧ rNJ7-" @D2dXZH0(Jd5%+IzV]0 \iDs.yJS)z~׿ھ1es bg5T7sΚom^hRs.N_ڍÑ1'~_AQ0`0Xd/㒝olJ,JU Unx_ĔV"U2cQ*'nRisi.i5ca&raAh߾r㬟|M'WRW?XOWZʓ.~<_ Sw'>ӡPzF'{>>cOW׃Gzfiǫ3*"?q[% y!>xJR?4fگ\ "z$\k)%oOșUj-AўZtAc׍.n^uu+\QĈHWtGvRyw,(A8~b@1s>TnO6!"2W64M{7o5n.|C¬b7jq xrRwAΡ!uVYj1%b @P1ڦC,;eU8ZB $f8]5_ɦ_U*;!5 5:w.PJ/jpN$K%eNi9f+5n7*r2 ׬S!w=;}ӆG픦oܜy^BhR>h0`iSEXR&))3(Ns,֒(,RaPQ-η BOlU/F=G"n?Jj~=,ԇ O,:0z5Յ{!DUGfY>Q}B¤>;}ֻʃ6RP*)(,ZJa<"">8"ޱ~'a]B2XS ;؞|vd@Q1;uR\bQw֚"PEk.G$")& p!'?G0ミƴX2gU:9s6q)eeZ˒yFRE9',h+#"b1:GJ{A")[Ej>xo (^/|>Dv΋R2} ,{L? Gm]4CyS3#?7Gsy X޹Mpܪ5-%"ለd44p}%ցud'Tɥ_M5˛%Nʹ6Ոg2 bJ9gdjNxI;o8::{#"xr&XQ `!.;(Wֿ|u}. E+U^4;,`03ׅ͉Ha iZ摙 X8TYEFT,·gUMނ]Mdgb ʥE9WP@ۦ+"!O #\[R7m'5ݔ0Dk1*3[z9};3BN:**ԢAL.#ݸ|qvOqƶql8~؏/^H*5WҴG1NZb7̩m\\ߕs]l6ַ}L)Ԇ|w sl;,;< H} "h IDAT>}H>M,p,VP''orQ,Ԟf\{d**@3BX}g?}NϿbW;9R[t֫$,u,u9^\EpLg.bkO1 qRsMNzKbe> TyZ p0,DZ " HefP,rm۵mrpnqVsck*a)z"b!Ș~{iڦi)(E2PTAPX@JEvlUQ%Up*9kPAφnޮBf?ǣWM 1%Z1 Cq9:o-"PZG eW^c)>!YrnG(zfN_6Λ"0'n67¢ !4nlMc6KA8l]˗U agKԒ{t\_U"8F[mD9 +C4>o3r@P~ w{XG~|S'?sRR!V&6|^D|f yx3FeI:*mcOAlV=3)TYA E d*UM5)ffRJ\n!jPEkPR3(x6JnPJͥ,\.x6 Y"c&cպ5ƹ"AVQ!RƐf 7Dd"kT@E@}a.D$,ZUK-qMuJr=a>ωQCd,0S)dE$~q6Vq 5a+۝ؼ𽨜lp`lIi`o./14u߅`(Uzzw] vZ2NklY\Z 뫩yV%K̥TGRKp]S@oÒ'x7@no-OyP { Jz/%֩nIųȨi]t1*,:RE?rGm}t|bsNY|ӟ\N_ gxUSfICu廟3C021GfV c !'[bEvC$lAK!"Yk`xIs",ʼ9v5REJh@,5%ϲZj[jT%XpY4h r%kIJa+f BΈH. g̋I)zwr},~lETVdDdIZSEseJ VuYT(`R{OD•I~e2s ڹ;кrk ҉~{4Z @n~ǨP@iEj*$bX5 S׮ ,gII.x,z5pPu]uJxT+;B[Ln S)ġ sZc&BjrZd3 s8>cg9:zu2MڑKy(y>=Ŏf>ah?ѫlf_^tEaDBPn ǐχM}sFВ ,@Mwknؓ҄ 9G9R!V //7N!85fSY,8Mΐ b-jQCS+x9\bB* P,TA֌@ɠJ%j@Rh䍒͚9mKGp}ll TC~J*u9Ruƨ1HH",̢ b}X¡*3Yɉ3ƄZkN AUڴ 2:p4iBQɃ}Jqq> `-Y8qց 1EfޗݰkBoH]kAaH&l")ɥ<c. !&zz|ut[ (YY70GNsX:!VU~AYfMB;#8ǹ?B4Ʉε6y[rM'D~s'''109 Q߸ܶ5vITD5beZK4N YLX J*fŌ{Dzo Q>*c(5EͺGȶhH5%vcxC0CDP5)q:*E5!YUbE5VU $PZ1Jec,d@FCee^n?ϩ̕7Fwü6p)J1V"{d$v,е@(Zˡ=GLJGK}=ĩ\!:=FOlBM7\i>o(zL~E$[ ED@֮7qe.\~.o *uK!0Xb^(qd@žr* nٚV]v%ƜݔcW#1ZRjz3o^B\jWR/Up15:9הʪoqV* Io}٬79Bێ` s>د<H|RNʹXn@,BӐJɚ"TS&ZoAgId}ڳχ|a?$<|frVU%oy7pk.UӞ1RGT=l,n}`܃ ?6/yt.3+mWSӄ_x27sat^՝ 7oލulx۵?2> 03*hAl׆֢hIo7] ǛSۇh1M><`uK6H#udbιe'!cǒ'$Z< QEKR1{j--edκ(&T.zUjp.{OGzWMef?mE:#2샙Z2n2GW7ut~uޭ<͡3HqZXM?͜r!n6[2^>׻+9j* m?MӮu>x9i~DJTVU44Ϝk%5q'ҼEuT3Aej(QX],n 6AYCWGQ 4GY>eLG째>z߿pq7!y^7s7>Ŀ7uWg}ebϮSSc=Գ~GsJ[$ɨ$H{t<[j2R%@цͩkߢ1:uK6PTkB]0ѲTX2qz*<ʍbMEH۶8bO[o1BcRr%ۛ^a,~9f 1$d4MxkL܄ՒZހ dzUTD5msuuqSc#WؤZ6u`W;Ynƭ@Ag1N4 ym ǁ 7+|phm,vPDp?9XK&~U[s~vu-KZ{o,:1f:خœWq{^T^~cbĂֺح>UUe|RU*Xwz  }I/"_xۿX_q>w÷Buv/‹םm?FƛHM]Zk"u6Ekqcu߶ wL\m|-ޖd~zyǂ1$AOfQ\@4OSd& SzP*Ou:р xdGPZ uƟ~/<>8MU]g_ 5_yӦw~<û…_?wᱼFAΏh;"&kz0 ѹXQ֖+yvpd w][OP }_Յ@}ߔXN,CmC]BFpOuYJf4SKSP$c#G;^:j ZfGK%3HE0tqЉ}!p+Lߩꐂ Y̸#Xk g LȈ >L(A V ^I+&x'q`DI >--O8Ts(LQr|9;GAo0R-)芊,4ܟ%_ß/|*wñQ>/}RO\ +-΢u#7z9w[Y9UKǀЇt͹uz-啮x:ԂRhxynR݋?|oq*4PxaIw+PHh,X=DϠ DI) ^5S ~,J]o=\ֱxgh{;GwpДtmEi:%VIlcqldmB$EM4P(!(읿\. P%VOνX~} wzĠuq<Xrh)@3tdzavHԀAGDN[ji9\12=jq&gbqzubT$!،q5 &MLAbIkS9]()j/ĚУ0WaD68gJS䩪t8I)}1t,@WWp/ڼ^og,_WgVCӝKx8iU)VRiqn>d !xj˪=w?|9zm%"ȧ/OD 0/*tϗ v ^<9O䁈9W6gm7:=w=m@=J)kp~}6xY:F^NΟ:?$/:zTݚC{Lm; źE=\A8n,e<5UtϏEҦi>~^9RZ ޹Azm>0}~QEru[]/__׆}\//BHDy|p,JF׋ij8|J=EQUU]o$D%5O{wxwnJ||h>|l i}1()+h N@a lq\`imBtq景 )Dˎ|fE;C{MGo=s,yguysO`ۂ=gM7up0zȢBd@@!9{SRZi|u܉ө8˭ROO Mp%{֥S=D/P FM}6e@_TFCry~ B_/~R/Lu~`t]w/m '$L}szstI-nz >軻xv, -t)Vu_=-$Wi% IDATr}ypGQ7ah3e!+h}wwdY 3S ^?p_a d SW(4ȑQJcYs48 8yҾ1LOMrpހ9-TsQA1ܒ-Na[Ry0I\\".,a–Q&6W `9cִ}DB q1QOm؎!4[ ZTW`x>Ox>=YI׻Si৿zTaPvp:RQwF"mw:VvʘBCp$`Cp^_Z'g4xyxw`GBP(>LJj( ENPpaWF]3F*;:xBbYՕ }p}ap4 u !QXQҗϺ L(V{wQZȦa(+xGa< ?zPG ¢UYhHhLw`^h0Eo ZEy L_^(8(k9lnLRY!e__~ ΢0C Dk[;0aHUm ,7zi!0 I)sӉs]{놮.E !+S ]k}QdJ0U ;NWp(|xLxR%3Ei՞'}g0xe)!^kƤ#AdŸjN uxXc֌qccܡ4{ƵI9Ӎ)l\O1%Uq:  pa":JԵ`ڈ6uS,[DziU1x]*@?|zUI x`f !0X cMIݺ훺yyH)ORr{t=}}9!x|zޕL蜵ε]/ wCeUeF"P@4FBDtX(x:z)e|B~SvȪm2.<UUvRJC`mD!d}º,ͩeg,Pf)C`X&ix71K qtgqG8+Ł[q:}8n2#3]Zn U )栵jwxJ,zKux]4")[w.2;Tf|UWV4`M@Iq%{uYswXk(?vJdP PLi>84Gp_^^.2 Fe`hړwח2Zeaq^^ʾ!e?t~g8 Mmp}qZt.ԇcYp]7mg͡TZKcj`ٗ'WZC`@CX|d?EykC;=p l_h QsvP8;}8TJZS㽑 )B{RΑRJ)9֦,0ؾy Dipv`Vڛ"`koݭ`!03bk-JTárkD;ނ)O/cQR:ԖM$E2JjK;I3د&13 g[\1]'b'm(p[%821fFmFq="Yx*:B^ ސ%I S`sws݄Eg-4;r.B*CM є婩 B #zB`ҵi+=x^.vD^ȝύ1RJ:wh\ RH%@ >a| daԈ9g^/}\iޒMOΟ>ILTUPe-9|>P!V֒T*˫T im{*U`?uݭDٽTTG`R m;h g FKmDYdyt ~@[pn`ovwnM!+wFB32}|/ . (w#P|:(uB!(TBn\ڠ)RHD!pYPh#m{ Bps(D=!ܮCۥ;w{z · Z۵O\ھ6&DՇ0ޢ}\C_/eYEf>xSo,'(D%'#~ו8Sl+UDaƊr$@3stG+ 2Gm3MMxΗǖl(ƹ4,]l3Z'q:q3naiJFf!eCB~( ]]ei c43Ԯe xBBjϡsí^/~ZDVJ uS s3R|p(Ⰼk޹X0+ZJ䡩JRRBӔυ %> T,@[%HrEQR )2 ϧc4ގ绪*rR@n(SuЗZgJE\PB(f(LyBU DH ڞxlyf<m{| ӹ*@p*4_H 7ԚJaQI6Jj-š9uE!4MSFMU@uq:6u t!,(O DKC]|5M%׶}[\&ܺy:?8uíuqٗ׶A\ۡwznaB^_#4#oGinMfyQ{ʠ?W9H23l7;d(6OY|WlY`%q8q}| R(6.3Bp^xwbbٜۮ;ž?~hVȠ4B_oPL!NiYA@(jSmoLP2b! 39?( v(0$OBj z;uB` P cQg?=WPC_UT5{;2RhtCKx|.F#/VHb%P$[;tC}|x8\_A)u^o+oT>xr|8B6 %{ڮ̠PѶ|v!NE@ZR Rj A5Uh+uz@\h;@)ޒ*F 1nC ຩT8໡L@J*UQB?|`֑GܵVJlPCeBtH x|pwV*iL@ޘeYH`_Cv7Q?~x-+#]۶7FyoDtھ$P:O(<)ֿ>Z]݊q.ӹZ:oTTR @iǝŤ'd ҹAt[bF (..tsPC_M]ZhJXqpJ|P 1 8ޝ@1.UHvBQ w߽s2`)|s۶UUihe_B)ޖE(qAyGu}de*m$R:K۶R\;w:{G>s=޹l`8b @9>Ke"qLXA%af^L&ZE*xЊA8.y&EP5W'la\%ܦctB0xԵ@-ON7sgNs'S(e^"9Ί~Dl,F'JH7cښGoqZ?~ь M58+Ss\/^iQmMx]et@wBp| Rh9X+P[]oyB 䇇{"Rb\Cu4";Veݶע,n @>~l (mV*zf0yΔ4|YuR*"v.ƌε=?=8m7^BT_^tQx~~A>s' ZW%[H8޿?4*{}lʲEYTUpTnV}zWݻhݠ$ Pޒ6@R}n(8ֽ}d۹BʌBVEU,JR\YBHp>_??/a م|o췋o1h^3)XΉ2!@c#Y1p|莁}ы7M'S1aaAbfQi̟W6rL!=cO@ (-r2:y(iKM7q`Ly EYTKPdj) %p%Kş)(2ź`=u>X2 Pξ<;)e˚/ ;t(ҭj*a% XXBBbJtz<䂷'~@l ]˓'o]o˜Ϭ`Ђ%By}==޿ݵH68SK}-jyi?_FvCOLBVҺ HS?2VT?>Nj sKziIR %>|p~(*vs5W:"tJ邷vz 6 㭰cqB;#0h>IIP(^?ET "ecྒྷRBEɭ:[UP4}-?Ļ(,`MQs(WJ*-D`hMP#jB#N) H<Ac+?\YjւY/ʛQnj^V.3U7~c*|>4GҗǢxݡU6 'l~oH{#yۚ'iaF[p:R!FCF2h/q:f LP=oWLA  }ILj(OD`BwO[a`FF""D/2X#ޱ'qYjB8#a6M*\r(pᇧcYcKN$M: |) R (pT)1txqaKy`ٶ0!#QuK3I}1M\3&ӅqbŬQdF4a*Yϋ'vp~؄Q;O[ ,1x!agpƎ+G-iKZȌqkJo{s^#؊p+lu('+)F$rUF8L=] 87Ƶu28Ǹ4̠yff d<(X\FKq1q.ٹ*z rY!}MGƅ4fLg<%D b6(0]8icԖEH4&aaqBD $3CKyK/iD DK?#e9M#o8ލsqeCOT6RVJF]@#[{7$)ǘ>mZ%='EJ1 @)(IK,Uz|#fgOJFȲ)Yh30 e P8M_+>mOY(q~SXToK% /: xK'[ajy'EvIM6׍6 ۯLocQrXZ&kjwQ:HHeŤ2묦{<‰#$Uܑw@) :1D0GOa}qL ,-L[%9M˄ٓz>N]hQ[n߼ :JuaVXFqr,%!K"BOȵl?ď$'\T"f5f|N?3 G2d2lH僻i͛3=bb)э0+e-REm>GI!0gvK5ĸXF&tgiJXJ%6 {1;8X"ft(LђF.e`{:ý IDAT.T%B';\|ƭ`$CaZ-'a"wLlCdF5ܩ_3SHl ^KE]`=s4(.HLwu6F(eh^o)æ_:~O3&<(vD,W&OZ-2QAN:4X͜s".6o(o0Kp?Wq%U$o83k tP"oƍSW*m*&Z:40'}$zNFv[~ǃD)K[iI:`q_ocN{LU`Da 5z{މ7:|"JA 䘩m@g9d!MPZQTyBa(5V|X^i,yfIҙ((j Op^ݛ\EKS{]# cDә~eZMkc L!A.75:~L=~y;/7vtV>-_#H!$(^ xSoujzRaI|tց\#ۣ4dLp#ܤ?8b.'cjf-T :R3@ikW 7lLIM( [QBY!*CWf3ўTmW;"#nx0 %]LdUxS+xRB7ܥ||U7Mh[]A:g`;T{$ ߪ02xbpkyZT$V1"p,L>6zdtbE.yd槱O^ QY\{JvDͧ\~_/ `N(΅~z6?^]1S]g"5Ջ7Eax?%IS?qz4l#=ZRd%˶|0ZHL>o* oC?la?^Yg#DN[R 9G-aEDE1PheǍKpx1@)D{0ڽ4;D[;8vr  diz]c=eިJ5O`,ȧbb=.c a͑bDoɞq2fAti%6<rL)I6ǜ$v)ynrN@?-`dLnfWUc,m,53s^V Eyva S (omiA-Sqm߀DN7 B"/yc7ʶ?|o7KXO<wRu4+s`>x{/w 2aPh/ p%8 RRo\ȭF?K){LJJUŦ:KV3kZ+k+B|_ ql.p0^X[yN䍣U ,i& WY%B>U vEݜ1f 4%k]JN|6T6h7}[a ']۵`g_ȝ?;nH)df?ず?*ÝI\%YsՈ|fJ=޷fBiR!LE'Z"ElKayZpWyc߬>YCsȈnoضIv-Ij6%'PZ2L+m TT7&ґbV ./_!gl@x(?Ba&xb qij[Ƅ9r,[X`|K`3LqmmlƳy۔&ji|=t'3/|1L/-%U&i'=XA{=rdPf/nكt3Y{=x95L["Xkt"1"~HZ!-6C}Sf8$o Ֆ!37Vu lqݰOf֙GH-F2zk@T+?]n1`Pbx}?_^]nVy|e@ XE5?Sd- gW+c|p%7|۬g)®ۧMv7#;hڞ-f 7N|bߘpK5ߩBH|iHU(~HTYL<0l8J4 -;9{N @q\qD%^RèXG,h5 ѤLR1\K{ioDBP2Bĝ99H)pNͨ߅lb |TS^wӓo22Ct񋖺[NFKexx'Cc=e-,j\#3FPXDҩ(Қ$DzS02Q-־p2 1gٓ&l F<w||$F NGDʉoc^?MMOFNQu>Y\= '*cNs$X 'bTн~-{i?šޢE8BtH#Q|`UpM UEm~vڔy,p 35LG!ĊhK]Jx s: Ա`}pDq}S)H:?tYb˦b5s5",h18^J[{H. 1fY+k I8+aF7eੵ;SW|2r(fn*yxsώ"zb}/{vpSoο_B?0,9!4m(M|5fL)_,/uFaeg:TX{^WV-O*m쳁 m[.El`ވ ODse+VPb)G#610"e>q#^ v^K1U7, K=uXH9zpig;/EX<$tXOQW)RK6F^ Mf~7U[{}dāD6ϱ3?{F$0WW?cu(įO sl3WJfH4Ԫ`ݤ0lg2)m4S@y&q|R,I4xO\fq)9Mrǥ')qDr&&1\Xj^>Ӎ[uڭ)qb`?7qx<ͩ'?ֿw,D<Ѭg(b}1^G:mvOu02]͇'fi8W,`S|0+6񜅕و4c; |Um5k[\6f6B0Y$~@wTxx9N]1 ˛CՐjDnӑXUR`]3b܁%^ʴToޤ>5|~-d7_\7K@__mK<1[PNڄjTl|k(w$c.urIY]v+[$p=Ipts#"y= 'vd>Pq<ێe1RB$7Ry6͆%iDӼ0:M]-Y3b*Y G  _z8AGEGoz*&T<8&^HrÉP <͗#K-e,P_@Qb nel<*,:3ݭoW1|fd؆yeۆhKiB J O Ӷ]4ܥ&ڣÖ{3[\v0a\xؘlA"G4_K<59xQJ̶X F׌=|KUWvqB$dȊ!Eit,c,339qKŧDD4 yw9{\J \9EV𓜋D.۲w_T޼<,pwoVQcv֗}~6m}7f5}~"vŭsG}Bv'} jbM:).'$,?.v#tbB5$:V7W|"? )ᨗT*=37GW9.yX ؙ#W\G$,EfcIL5$CK^sws>ɕ$ߜ$>^0=aVo1ۆQyr<9@!QWDdcܸu(67ZXlёK OI22ƌi: J&vbh[2 %8? t8*Z'z0,[ .ÐLYx A8M(0/;eqMOnu_W>w 5f8ZC$W6{mt>1ycC)|>wq6l[8X7zu8?v–L fW厜fLY &*oUK_ Pn%xKEgx5%7"b} ĩ TKV;qȸri#LYr C-f+6 X~t p~\]ˀ$gl0Wt!PM8oL$Eu6vYsG2-պlf(gm8i<Ȑh)cd=3!+\E/i68م|noGA9O+{f ]?/ifH-ΰpۉ!Nif= 15`\M)a|fF<'5)?P_@\? ' sG4Cf-hO64X6e+1/508zAv&%[dOҨA~Wy7k3sϝr3HH"&2* ADT@dv=QL>O|8!HdF$ C $$!̧Zk]9TWWڿ[5欟i?$[!S6Pi,nO%S;\6sE ujK;<7s;tS^6OIh{TxA%TD‚_7 ^Fgu:bǗlW 7VX rn%[wt1!1z0d>>WJs%ngaoΔ#>Y{h7܌zB=6{[4 Ӳދ"d&Z+#y3_SXOWv÷Njo=zthrrRsf-i\|)Q}۾~GhF*P Ӫ'JKE'C;;EM k,d5dwhljJ #=L:ԐH6ADp֍j{Sq:4}՗76-X|JjA4)׮A]Yva~uD爥qAX|s6ZrیLiõ~G=sN]ڹ;7}fW(g;}mIՔ ,@QfPvk' @<#nCh&b“(J? jy~N G;{:O&2 jIbw|pE̡!Y;'-Y"]m#އ; d]JQ֘z BwMdaXO oS)}O|qu<d{s ,E:{̉EY=QG>8ػ@\*mWTR S= qĸŸul\\7룥~@$O eAd'ǻㅃK~݋λn8G!賞/]ͣ~^h"aƌAU; }iz"BHB T#G7bԟ,_.DNkv{Q'tj[OY e}I*,{ݍﭬ.%ˊ@mrlUiqC2h$WN;7גWVT,b!-xMv[JY)|Py8Q,vr$ͭ(A"XJxv^xbӟr,S1&TlJUD]W8;֎Pם~hff?=h",:vj֜Tr N&w{/̐lIzwWaxP5 1{4bgXFIDVTy~3&5z4 zwc߻=T''sb"?Mr`u=8.Xy#gHԂ{n~~ HRҙyw^Izǿak7P#x(V>%ޝ)[Z)2y1IDSN(`m^WO[9t9qx!~ 7]tϋRblTV椉hS꟧mєRnbq%j8ErpZ:NӤs@HzO5@#Е@1U'{JoCIz3P3>yLPG>V0.{mP~[I o.+=o5ՁRz<J`XBBp IDAT]k7ϻa&I#xL,9ƛ'?x`n4:m /-//?~|~~~eeųD]0PZmѥ074{ҔX8IJ,YKJXKF|\i!4a3mFhԌx4u1vD[HIVZR'c4 MB0jF''%'e,R"cF\Mshee'_zJhj_ھxoV*}{xgSM$  4H"vI^@x2G=>5/_+ 2^]w&J UA wǜī`!b!f&fDHp"fJ$m[#I9z5Gg̷m33_W꓾μoDTCQ#h?@A#iD#‰'FZh- l[s1wZ)xF̬6H{+ؿ$אڷrM0OC o|zGAp4JBl2kḒ}ysξut]77{lmm5!,ƠO$gF+ at.ɞb)PA2i)"B]VeoH! t+VRq(U3aǣ$u8NL寬H-, .KO|(,YZ\[n}hks2~?0?W4Q풦*疽] ^5O3t=~]uYkС9?cG6enD6ƻ;ul՟^ {uo[ۂI8 N,"~Q/}0ԳN}3}Y6C^N|g_6 8q(=h iLE$A~ܗy^#gJPK 5e Om`F짿O!UV6 c{k3&qW5!4ىD22A)N,9y=˗!O#?~|!,Huvw/>'H~)lgӜhej!v]_Y36%BH+k??3;۟n߱ybԌ-H3aWZ1rݒt;Q^Lnm3/-,c{\wώrh9Хf~?XA.2#g ;m8' FUbSnNȻܼޫS|nٔ|O㯙ƉމmgsDD!H$,չ,T, a~q>_)GϿxx8=?@=r6s+;̬IPkz \?S5Hi0uMXI/پ9fгen>nN}ʡn(ˠ&BJq n8-v7'q?vǽ҂zC~;wL/"%Vz pwN˟)/S6Ms5Jë=I.mZ\+ĺY{a_1  o.AGr q=|}\rQĀƜn#H8L  ̕81'pAn^Z^םuΙDyԃ@\7󕝿gNgS@ULViK Pp3LQk򱋋W\됴&~ew!}Q߿sS=AR';qTv#?\DQJ(*@:ֹ:u-ۧ~X0t4 č^vE}=$ۖP\QTϮ; LT ߼wo~ |ӨVܯv+9؟Yco{}3B`?FviQn ;`UennO==.6 Bi: SW[ ʟ:n/KOy^̕Ģ!KJu;c+ӘHD" DADup?ƺo?qc+3SV.-D xԜcm>Ý#3?Gē7<{ o/xȺ) 9sZIi05U?~M w; {@Dn)U܉uIeW%Lc|}ސ-98# qfܻciv,E}[$uBP a.}gn7&O?suǶRiZ!r [w)'YBrC@vP`[{;N{gv2 d{? {~cI `'~uǏoe"lI]U^Őq ^jJg8-Oֆ<7&,ݕK,"Q1Z@v6\aAo'Z[-gu p͇^O?E``}~n{h-&ƛ@Uȩ$LBȦ!ݣXukbwʁs+X:w47/{샚7{;~.=z{9vvco_5{: K1v=<o%2U|{O g1 QޫE'ۿyy]*lzӄXl}m5NsY#nv*=+94 ;76C\[G~h?OZꪉzisEɎVq5}JڬB:jGŶӌ M{h.{FhpAv s1  jzvcbqWB&ܽ)c`= cFM:8xv&X%^z/ou.W!U7Hq.豃kn߀ qAA$ЌP l]ɑ&IBET'^-|xquq4[_Zw}On{237uWb4u{^q ׫/ MKc7/!qѨNیnOt:)N +Ⴓᦵ_56Y(!=y~MYˏQv{ole֛fW5^1[4.{MQ)m˕c<~O==[g\t%$ٗG_v߹qvv6[pEI=}Sɔf(q=nF4waX){[MBRV[( 3yF!&(Qb)(v/6K[LלƔK>'E H|UUzh405r'PN:ujV?5=fg+/Wᱏya\||ǰHfu@-{CXc >Y(HBu6z:23?ߟUSG>Ït4+x&j|~u$okfaŪ4Sp=j zTxDyD>Z*mwX;$L  q>_ zG;ڹ0!{dé2]V*\z A6wͫJW;.MX'R縜/s&o}څסsv?}6>{'^";n'N8p@=VfJq w՟ S.ϷqQ;oa$ 1O'ў/JL+Idpq#~Ed@E}j #@4S.~j6!D %%2O`0 iJP+'$XЮc_s[0՜Q4wpxt{c||3EqDY-O#uZ>kKk7r#BPΪ<B  e^24?3:m]Z~w{S# n_߭G&{P0ߟ zUa36:1ff%&Vf̄:|sszR21'cj j=۽!hP s3ՠ_>Rt7s8pNI(hkY{0{KP_# [םy7^" 05~MMȠ}d?[r s=Nhk a8"UTMNu g }$@VfvdhR݁+w^woݯw@@QP5$= 1uv#qf7Ȥn᥂*Dl6-%ac42;;; & BJw:E" `;2nSoG[^FifXGI!E H͍֘oD4}yy腒, N3SwcK8mLi%q>! UF+n2#$ѥظ[_uj_2dvxG)1$BHIvW qafq~0ȜO0Kǽo}ueܚFcBHAי d󏐌v} zUU]Έ`<ÅŅfPӻZ}b ݯ{qńtDDf/yss9li>;o__<\r4Ej !0 ҕ1DT0I/T^jDpVF h p+ؒ&t G ?Hblmmo:L5UL~*C PHI6sw-m^ЌUz4ĩ;wRw~"nۇ>p͍pUUcL)H^lBϯ^gW{ZU)\S]G:5"諪ȅ?S;Pse[- D]H|\ޛad,jdgbNa8$ 䕕w"'UiMSdk@1P@1ӉQlPBV!@]MzuhD2zCHX|Oj~官дF&p~k/|ҵë6d/eEX$[يΏ,lB0~bXׅҋVW_\Z st.`fHb(B`+N)@ؙ(PJ)YZ D~YHD"#! <+a@bX$XórB!D jP^ UUB!8mP_;HJ_נѕ/6ɑ_U^4AҹH>JOWLﻗӛ8\CEtMq$nXhpmvL+-b͝o  H(' aSʔ>:p# pso{_{ޕ޾ja4-=oaYy3d ;Mmkx9 ۛ,J695DSD$)\lzp^|ﳊ@H͚x%+k"`n ZiF;bR@ņMO4JA?eFUI:)5b)IJ7DS%۶4q 89lkL>$959CLɊIYk;sjRTrl}/jhدK'IHVjID;Ǜ}х %Ga+ lWG!p݌RJj* 4HcU ; DT35\8q#0KI4633NQ | fda(C^fd*B9}&h~O={ 0ŧȲi=p+|k0@Egu+h,eK䶸lhC,?1;[wn43H%k+a6Mk!2͞U<톅K=Qf>=Uyz)$XFLX ˙PB1@8qINf1안610UPFMԳ(8R  č%%V̜8Teccgq@qᕖDdPSt̩ (U=yX!*7' ?dl\-  $`Cޏ!&y" <=JRY71@BP]!űR;_QzO$hagq $yN~dKLPQ+$zӠLݺ6y5c$B^/Fhg}SscNTeo)u/ORf? q,RJ 2ZɃ'GbFFT!*QE$1" @ @!&(:69PPsjG}73+CPyRs҄?̪-lG%H8)ħH$ #|}(`dtDP7^P%.Zq/Q mmJ/c1M@l+L?DR!L p:3:9c%e+wp[ U2H9^hr^G Yl:)1] T$!_XBU|6ٮN1Y՞1Pi\F%ɩkSywcgJs.ͭBLpN>zu0E$̽^ijH(ף*V9VU=5af y%f!4 9PhRBш HdbbIDAIV@` DYL$T>1_ʮGhP0{| D>(Uf@TlY:dj %U*1;,jTA@M!0O\Xu,tlPku=\4KQX83220jJaE4|5gq0ѩG6@-R)\;QQ{fL:j%h'j{3g XUע˼ѶM'v~gqi^U\ QS%P 310sReҒ}ޖVH'H:nB0)ca\Lm(95/;YS/V\mbUUKD(PJ*z?"DƹLli|Jk`A߁3d f.ig" (pSp&UHsE o2(JI-H(L} rAC%0۰,>4 (y6OӜ2‘d&M+و\ _8H!CBcDXSi_f1[N=k*#vnE} k8 ݷu=r~Sgćf|mr)R^mo2PZ;jԒLSnBimUP[˭<ٖ(UAKv !X|MgjcJјQCB(Q0(fis1BiD$Ę[kc - Dڵ:!# Yp@Pfn'v[dq݊\HƑ EC*Q̼E"P&# &G!#4)@JM eF+,ubM|IfnGrS5G6DOnl1C%, ERjx[3M0˳ J7- hge)dVJ.;"A:%mK2''P:5cKۃS\KK-Y./A 1̧ #yRg'-GU$d{2TKiWa{AomCYMjD dY^ }]MŞ R~tY DA#pplەC6> EW[N6)4BȆ 6ǜ> y ;V`|"RK*Mf~jk+Jפh'>wuOӣ8%!hõ^ #T<&c:-B C .>Q'SB٘%~˦If*r3̎qy4S]!ul^"Yl!! 0:ͅ=6,{Xf9l7"DZG-~bKH(-R1#BԀ8pҀiXRQڨ;bݘ;t!6M-UTQ.9`y{$?Ȍ}oJVJ6]حM,?=_[Pо $HUQ8&q-;DAvj%SaNXr/ S [{ }b/?w+$h 04uaBqdoQ |K3QbKPނg|dA<:H^ n9@lE s֫מZBYwP,(1ܚL4.T Em:d/L ڞQ+hY$R3gjIC9LԬ<32ɪv63 GU"JpKb'R+(Q(Ԍʙfoh)P0P`Ҕ.^@,)RÁb f/ AiC[ԗD),I$X0ܜQy 3O00ʐ[.ƺ,1wtrM*x$P#`RrJj#8Oh|:6{G:w8*e{KCAmܒ?Nθɖ&ܹ@ i5{,NuqY's\,LpF; rwdt4bz.1S;]m|kFI5#N $x%UƁ'͘9@}' 4*HKs9'*eq.hqi?eMf/[Tv&|-a)-åۋQj&5_`MeW%>6U%G,êeKp꽬cSTѽ!\ 韐M& 牘lwad9)s\!FkWR >1[j4I7k!2Y*=^@h+\oU= HbQ:]#?([(_vQp|پpߍdD\Z<_MHmNn !w֓Zg}]MImAۜ lP%#i&3"`>˼ÊD'9,x7 `&ip;'33ki WIm-H'3uʓ{1 FʌŽ8RWB_NL9Yﳑ&QLI80׽H?O3(_#KҔD[F,yIc,I] /ObFLA KviMAdi; Ժbq y6ć 򂾁KEM\Ee$ĺpN"V[3vJ@DrWsit'ۮV)WcnZ+2jČjI=K,^&b:͏K!F-# W'Y^9-4:@@ԣ*b+FńJi'HKs(˔+ZCG3d*,ȕi=?Q\᷌/+T8{P{U):LZ8+>H!J >ħ:^)~~@$,d}Vkh 2"270tAr2ЦEѳPn>wE+@+5SH= Ԋ~|7!B ,\jL9:E֖UpDXGõm"8L(vN3W 瘀+Ɯ9C-DWr TC65ۼ& ,I3Ž#`;6$EgB$Đ [(b;"՚C4| h5,j#.*^ů#[mNgs bo6[uy8CȿQ Ez@-ݰ+t^5 R1ָzlZ}g җq|`˒jXr>%5KR_fg'zc) nY!'蘰( #J#DTGfݼ) s(X3 wۘCmI*v"J]ƒ^؆-em` %(̚^Y6]ִs;":Ym ,լG~B[m䭔%\YL$$Ⱦ[C;D,$t̬U$e+f;ڣ _+Mi5%6-];JXhӲVk, [}{Jp$AP˅v:*bcUg߹+e]7:0R&*53ߥ |2d׵N͖[B 7>=҂ gpIyJԳg)us<1O䂵sS&.WS )$kVlmH_gNmU \2&Dl_4 -T>?CaS[@Y2Tb Gl=׷s-jc >0A(:UJd-8r(jƊv =g~GX]jmB0/mV,8IQdhynI6}=R*+d뮭] "kR`-wR:[GPTNU*mHin#C(cBy侧 Dj572Tc8j :J0ַvј՝P|[R=K 1# exCZ@JhswFu_Y8Բ¢<*VE5웉eS#A{<hldQ7,~:Wg#+Ue ҦQQ8;``j =|,QU)Hcm݊-(me zձN%1]ji< [nvGh A'Nh]lVɘQvj" ,- ~\9X4/y/o5 O? e' !0F}Sw6@LCj9%d1iͽktn7;O?.g~Xb 5ʎZ"B CZQTR] Op6+% ;z~֦&K?}V UfVJ RKi(#F4ɦṮ nP6]1iUQkǸ&^%פbq˒Yȶy-],n 9۪4*ȭSK)Eu˒tgU.E5J^3GK-a"˶uy.(> L&@""t\6na :oXCE,$7>҇͗[]|eiY9D9!@E Xݭ.@Q̨̎Vou_$Og?wӡS?x_s5\x]>x7Uee$hMJ=$9ϘrfQRdu \ڕGxSAn:t }3=)֮gx8/9qH3"MH B^QM_1ŭR|Y ~&:]2).ν≵V[ [p;%TF|De]M6XELڼ֫|aƜD2 BuNNg4JkSvM;gozt9^rgüQlf pn5Eֆ7"?SKJm R|֍['y?;xpFE8L A;TD+4\m<&V][[sї]rFOحv([~>n\<ِylSTK帔qCJ-gPמ̓XPdQpAst$zl KwŞmxdBh&4)5"f3:bj5_#{xM/eqaey7W~4.E)e9y8*bSM^ veM^Z *FW4(M2[ad#@?3'dYMTj_&@GAtQghYp+.) \} '/+r?x X\Y}"m[}*oX%T Xz%m$*R:"Mɲi1C4) 9%1{УSOwđ w6($>A5h"n2 tNIOM1aNى@ĬfxK!qR*"q}.AaU[dġ7FIwo~ׁ# 2,[64̊y''NN9]|v<$ ך-xRG]]M+R9#Go; ѣgqk8>"?.:}Y7-'rކChoL:=u贲G237lX7O|-yE 8p]lh^iFh;-dVq F8CO塴JR㪣] )9Oo{[yGÍmLjmx`ų7m/qhe@MiXhO+`pm7x#s2hR6IRr?k5^B˄'&3{U'f! ŷ 7r/}yr(IADb}(ft"fsh A+$6k#-WW]\Qps'??ӯ `En~gPd,&ZMy冐Y/.Nu1mndY IDAT\$̔,)RDɌhR#2P¬}!w}o)1Zg{Ӡ(ж“N|<&ǵ~TGڣٓ$t6YMomzS9,B[6r0%'-\=L KFPj8tI¨^U8h*g!wM[kkdr6{t6y`# HR_lC;v#'<)/ͷ H#4rx\]PJ[(Xz$O Qۏ}#W\q啟njm`+?+8zêC@E-HNkY٤CMqm(p/;%< ;HB8tAƹ RB!>1C-Oymk t3Nf_dM)Q^v@_,9ъQC5wnؒ#6YsZ)~%"l'e1hi,@@+9hÅƞ<f16[GXDlt eSxVd2@ھ"@n-Y)G ݄r+i옙GŦS>қ[~l/ϖ7GyK^_B{bUx R*t3LoY}H.$2 mS򓻻3wkaxh8cSnD$t9ibQ7w~?>Aiww~'NTUW繀O;](vyC*Do A-y}=VIׯ>/^:<_ؕJRp[`6Nh$_ !s{evAꬬ\kfE3̄AmW:!I z#1* 5DbYWJ,at6ɒ;{dY0· T~K(bMڳyqY"ܮa5Q0C6{}4)sPUm]Ga~iO^?^N+!WS Q=a+$UҍD+p~~x^1ݗUgSG\i Yy]RWKk{6J~߱n*z¸kyS%5UL>kp-F\:a(]b"MSCp6TL7Dᩩ‘`9`w9_5zUHv(C&B{^( uz8R<Tf֑G͸ E']O$lJLH[U\MygΙټVuowvCVz#s5Niamvr h)Ptd&ق= 5JH#@j. Kb@l>GVm臄+ pQ gw#":l<WRA^V'3Ltk Q~e–LjWEG9j Ա[A*Y9i6}*Æܚ;*X9c+qLe+2y54ٱAF4HS1bdk~.'cNNBd']3z 3˪2nק1#}.ZE'0cG0񧒺XòGv̾!NĀ]a0#A  .TN1.%o .'ޭ?x CŠ +2l-QYz}`^g}#ۚu\A'[ϻPW[!X'xAv%x%EU}8FהL ~DyB@J_٬{3UEqgD? d9^y3HSvnÛ׹*ľ r씁3 Ez8AQ)Ж֡unLM9;^$\P ?R^)L94;مd/9 IENDB`fdroidserver-1.0.9/tests/repo/org.videolan.vlc/en-US/sevenInchScreenshots/screenshot8.png0000664000175000017500000022742313243530567031475 0ustar hanshans00000000000000PNG  IHDR65fsBITO IDATx{mWY/}cε$! HK1E%4(47j*ReQ^ M \e(".]4hٝ hTQ[ CBr{5?1k}vIN99ך1ǜ7L2$~h˩z0ww>N2$4,{?\vc]vA>He}uʯJy]]8$L2Ї>O@^{{{Gґ#Gboog? :Զ_Ox'Nwٟ/[f~~pw>vm5|}f;.T^|ӟKsmvСg?{{/~p}s??0\$L(<rs_~??/|a\~__}p뺝?>}5|+_kHbI&!/k~eccOc~x^;?1]u?_?W]uU|2/?pW8q-oy ɮww7O2~:3L?x!97 P~z{|۷}ooK|kI&xI&dGL6$\l2$LrɄkL2&M2$L6$\l2$LrɄkL2&M2$t{'Mwwx_;;^-_o{۞??|׾r3o}.w/pUWկ[/7U^7Mn? 77__cy뮻mo{}p-<ֳg>n鑞~^$__o??O|}CO$G~G/o~Ӟoy[~n馛xg?>z+_Jozӛn xyիn?꫿~}^ڌ/˯yӛ׿w~wu{=?ﯿ8O|zPnnIOz/}+^}GGϤNrɄkFy^k;g= oE/zW\'<;yc}^'>$_ꪫ>O}3|~f[n_g^q>|򓟼馛[୷O{Ӿ_:rSO~hQ80pO}Rg?<2 |M$Lhx_~%o\{|;777_Ww}ߘs^,_c^nllloo}Mɓ'wvv;`>kovw}ooq]wsx[z˷|sb/yK5y͗;7^uUOzғ>?w_,}㯺+}#ԧ> {=;Ʌ%~OC|;y;;$69&ۻ~~gl'gWvew}#=  ε7I& pms MrNeµI&bo0$\l2$LrɄkL2&M2$L6$\l2$LrɄkL2&M2$L6$\l2$LrɄkL2&Sߖӗp$L9 85K)NtFVs?A ##% pAb+]$[Z񩑠$AN`"#̘ Dܸ>HY]OȔ..IX,Id%/@Czy[m q!^h" ,M`Zk2/e5zoŅLY Zd) Fd)YJ)4hYJh&jEw#2t w$9$ "KEF)яK_W`uLi D (òL4 H[[?]}Di$ .$RXej[Z,VFJ$ h nH`Ҭ"qErYϐE`ggr%,(nD0YM"`PhB:Ǹ]6r[A4/I6Rg3&$KK]9ͺ33$d@$R/D 9nx^z^*Cr/%ܽ,ˠ}|}dµ3"lU6 {]?[z3: -iTڵIKNBCTёMAeRh:O`H_,檞cz7"4ϊUek(j5x_rG3?~^٪ .RJrw/6ĀRPxCvuZ:-9dL %Kʮ@k>[<6gda $J-X7@tԋ`Q#YJ :z㓒Uӹ)MάN6_"h.FQ y_J [Jp"` m0H2h݂ILd5@[W{P,aKWPWf#ƀ5Vd +h\Vܫ}=[TyumMu fL@v]W Fp pN1.`K)`{8 ]f0SY$H1l@Zuz (J1LvZ2 P^ٸ f7`hb榇Эpc,lMڡ=m 6`|>ր̶1VnlZ񏙥|93 ٥.CF8˱:4GV28GSxPf`v^(LŢpHN7J]=HRX54!*Sp|Y?vٽ`8dP p&#2Jp$] X1 *qSi&w)C3[i`Yy|(Çhtw=Ě93ڐ4 IR,YR)nùVJטcM 1(@GuY{+Ŀ !@p8"% 4ҘdU\"i&49kwlaS-umIy'aَ`Gv9WT.fċcQR$-CV獻Sӧ`dfhKeC۾}B*s'Jjih5Pao8(I8d&wRu}/\*튋 xSc>BtI4@rQj< >~e{UvTi47A'␐:\* tw+.h A<%)foe4lFZhaFs\t*N$OZ (0UQKVFzb\E]X4y5:ܜnT!`+.O]2KڄzPK("薬Mtѽj/U "$~J ŋARׂM& qmG@T.ϵsre)4gxiu6"4(Gfժj\Qtd3[AHۀ5R"ka:&1XbT1/Bx2jL\pc͛LX ψzC ǓYb {9&Òc @5\r"Pяr `Ky1ɔdvwj}J Wbnr1@AېCH>pCJ}uMpHW[u0,uJKBOs̽ zIɫMgh+J@8)vaьBk-(T6åRdD[L3teQ)9WS.9JVCkuM Z/d& .Ҍl4I.)b1Z$ u Kdr9baF{TC䂣 *p!LE uds z/#hm28az&l=Hdik (J2YSrttK)=n 1uάC")/ E{Z,.f݀J_$ʓ ='PR YdX-!Z83 {b}@Rٓ C%#-r,\BWu)v2<棹xD""! h{G4/8"Υ3H1y$O5^ I8 Y*d\$ŵ>{nv WjL$r.CQHhBe7C Ž 0TXU Y=  >ZǐՔ]IV`0U@g)HC)/$pʝVжSkIȠMi榘jI, /ErSIX I zg@7Ҳ2*5E)75wA#u!.LY NJ9, Β ȴƁ %3 ("gDbs#1 %e\tHȚn#rU4$;pVqeU Tvq,dL)uЀK)@ZRI{JlKzm\| I`Ib6<53-8nN̂3@F&U=wWoTtpX\w 9iP .B'@A1"j%G_!Ng}QkgZЧmԨ;T+D+ LdJ S$ddQ%X = 4(򆚱Q3CF:j::`1!lD&T"G$i%#zJTs)F`\s\)ujy t0BIQ^BL,K)^e9|81Ya \RG j ų/EM esEzHLER0] &^&,aL-df -.%,@ɬKIJ!YpEF#0I*A pEbRdGBR5RK03cf%`FThHU)s9 4,YtzOV.<},ژაB'hz8w.NL2ڛLfqZanp-Q:(, Yj^R2KY$Ҙ:KaCЀhdGuF&UV Cp$G&z7HH)uaw)ijΓfUqAlzM4Z)2%wsi TpUcW##dT i^ݮ]]IUC[KՂ,*Xd]W:jYRbv\xvv@o P4ES^ ~JC5T1!P ^`jDN%\)uRI<E* 1bƄ +?󂈵-AR"ܫz^u0:;I#d~I*Qmj-̊l4j(@FT-"`TBcP|Zm/"vO]: Za,EB8$ *y. Miȣ < 45d_,[/#{kDД ֝jcARRT03@􈁍crl."IQVrRkߪOaFN]5[Entt30t}:3a5IyIИ8"|m>[imkmkߨmF3!" b{]E ?AC SK{M @pZf VӡܻbjoT4t NG-Q$#SNHwIVBke3 e.̫4PC$r.,UGr.fdJ[RkBO̺KKH|8D{Ʌy2S4z |Ek,8m#tH-+"$Aiފ ̇l/bx8XxL/"<1u4PuI$-s)}GaBXJR̖$yw݇P|) )L rKjM K.I'a&lX,C\>Z`龫6lh̘\wGp1hgo*jep,B$%u o9OTguQZaR?^#.Ò1ט4*xEWαRbנ5)Z\CSܥ e0dHJRrcK`dɥ5{)pڇ F(-I_:Њ!FzV}zb^k䈢QgK0%+[Pjt2`Bŵ OZfß@0oZnZxGY`Uc[ vdl_f Յ lgZR.@Jc"I\8Š"K(,f]t趩o(d6 F IDATɤk T5j">[ǘqX_7="zAjFLFᄻgLz\g F8sQL/ѡaµG-q.eZë%Ԩ0&}:fX%H΢9C>4(`(oWK0=4*:)șq>?ܑ=N9$axkQu1 ]ţ¯ɝ躾^|=3]vlk͞ݜR_y0;HYr :Xy7UƮԗ1+0QJ&􀢯_ &D[P+^ܢ6["kkXcyjf 8˃5Lv$B UH]0uXvD)@*>"s0mX{a []K2bf*5"K3f}[R9x8j`zmX%gE;SK<8uG C}K{d%j](^IA o3Xiͬ:AFzQZf(,6^#JGPOIt/J1B k4MMջcl&8vw* {'4RTo6 *eX3G:i8,VJ5u84ܩj&g"VnT#ʁ5-|v^Dv+}mDZ#h "`f HR$RVv؞(^T}rMR=vdR?|,eFyt=zf0)UDW"Z[,Ԫ S9@"S0«* >QBqSCe g ԰۱6X#m׵T\aѹzO畲+>y]\2uK*i}ÑGmġ.EęZu݋nÏh(<W܀! ]i= 6j`L`)^g"d)5#>qr\8([OSgRoݬ-%XJaFf#%Lde0x8g #5n}ҠbKxQ蹊Q-u0Tm"zԋF3T} Qzs2,&9<<6Sp"gx}^_SAoPH6ʦƽ׆*?@)=k2i*ֵq: T-UX'EfF  #drC?v}\Fؑ3u^G1[v=Qb3Ej{-E52M\go;=ci o8Xq/}Àk{3i/*Ն3U  0۫Q%(Z7ݘ*A0[ (mp QMXSUХaK0OL?)bscO,sIIW>~k_`ژmR$] ,RWk)^x)fd$(M\*D@Dqa'==?km:[ǵ]^H&[Ni Zc<"I䮵T!}&hkr/^hϟ/ n̾8x룬CGRjuGѩՒCU1j: T{vCBR֢妙F\wx^eΥ- JJR[jL5t5 )0Ԣcǎ/| 9Ϝt!D_C]ܣVl*E&s^dk(88ɕQ#{ъkKŽG3R4g+ߛ{4@&YD8vPN7$rnsӠ˖ՙQ6R[sF;a3tڠ#) x YH8*suN%Mo;nz8ȂuZLKȧDs\=椚@(8 oUU :vC9Y-=L`P]!DjWWi[s+Rq"$(7D"qղ$FKG%O) (qL){юRW^bHv])|w[gJi=T F P̄Vy|3z\EVNKft])VKEk`}r2'/ *oiӓk(~ F6P`Z'jW >mmq9OACfHy 'HaWMp F:Nِ!E fE=ĞhuOY.wv䞋J|٪Y?77燷ɊJoHC+(Z6R _Pl xypmXߢ $ : 0 rU%٫y1, "=3'ԯI)ٓ3ĵV/Z!KV>(jYkVg  QRCdob-ܩV|`zB u Vim6RmgF:J]'wS9Ps{$C]r?~r{'YʞiKR:lFX81 Rýe0' yrOs2dX{pֈ#+TxBsLŗ5a)ú*.@mhʑ 84\o+58R1r'@%xڹ3hB( ݙBc`V f}ސHEeD3ukGhE_+=D3|rCZn@t=c|5HU=%Olns.E@xJpgg`cc|"XcB>zbyhcv#:UjuDhU7Jp:^@Ajݍ-RdWXbttRJZSH RP4Kf tCYp Ԓ0SH1ԉoh{*Kf_k޷ @V2&&V^6Ԏ-%dgɖ_f/dսsVq gߜml moy葍Ç@xA&},)JGg"40k9mq| 8P"h14*($RT6ժpDQ2q?!u\{c($jU\j\VMDecW;+M{4_/3@Tܣ;rsv_rq)sk͝-;d_t8"LіhX2giFZJYu]ץsl[Lf}\Ǐ&q?tiKወ0&wK5*s13:JM0N/L`*AӊI(5YXV-d$QjҪ/!kA)b e0i1^Y3s8skE$b[:Y?u5n<j֯k6O(ۿ^m{Jcj רhsΙLQ?/\^ d6S{J/oIH]J]ژKJ~Ovѭ:r'+-u-!ZP] Kpw@֪M6N;h+VѬmV/yOP\_yk}L":ak'^|@uv}Xӝkkq.NQ*)Jk  mLVUhL)ZF"ʙ㏽X Ĕ$S:^$1#-勂% I: {N)KH4%t+:0G2CJ3KyW 7Rb(9w}ݼ]:~!;Iyg!yA}p+ ۩A*9,d 8HL ѥ.+;.^MXN.|e`jysȚ\0 ۫4`ht`CSbj# ռk .i読 R b٬CtYwlh׆Pgl-Pv5~W"N\_V;:T.C@) }'pp١Wsl (QX>eE--xCPxjծy킗Q{#q\nwa,հܨ]"^Ɔonl(δ&WG1@\k!Q.E|k#~{{{\1yLYW)=ewvt߽v/9|Tu)jSHJ顝9LDnT%ܞ-@9e)e\X.sB9u30 Ւ7}I]כٲ΂f#ΉG_q# ""O?KIflQZ91H[ɘ\IɒF{ФԵ x(msŁCEmyXJ?Eb"Gs2Dfm܎9pGp{9YNC9߸6ȾslR`(i dL<Ĉ68!^h)~*Q#B w-5v%{; @%Aݬ>)rwCMRTwLf)uO JJƮjRJɥ,Ur^澟]s͓'Cy,0%y{C[}I˒%3uf=’Oe೪W+Ѭx4L2td<\P!k0\rQku4w98~31AIwv凮hiP l)i`m{f- A<Eg9=kd| K kZP\-m#6F-g(CR^RK)R~hDt)FX54H!%vO-uܹu}uve/Yוe>qWœ;;eRr)Ac d_,lsagw}|KdYNFZQ d(f_4jH T{hz+[E[(rl(p@嗚zB<;[i}dTծ`—h ^Z*]BFuF0(?!SMgu-l Q!vN9AEpG)c'0؜'[ i*or/19fƬl>L5V4v) ''@\\;e*Ήww×^o\rcm Vc~5ˆqqZRj#* NpK)'9WF: 0S7ZDu.2^G2d=慊kgs/+V+?cB&Bd-QD."G[h.If}Ҷs)'N~sRYleAdk; pdO. # #}+_>zh䊖Rv%)KNvQ/x䞯m]rEښW=d& siDDs{غ6u@ZJrƅD6eyJzջwVVjӨ 1{~?CpM{fŇmš5}fTIT BCS̽bhI:$pre9{%/ݣɤwR Wb{2Hn}'h`V"jޡUA`R}?KGIlls~힝DD3/%γrBR|cyѯwe]?[j(둠aΫIXqZARG$LU7zGFg4]ݴmd/\OjHiMngGsNW\{㥽D?շÚ9BF]HXQVOXig43ձ I.H\ nҩH$6aEϴ(uJY6J*AYKO.`VI"’tIDD&DRr\r5cKqi}o}Uϟ' fYקX3/QKנ|nfRbgیs͑RG1Lf@O5Ygf"+٢,}Q,$o8 IDATuO#G4+UZ0a(^cŒ0,JJuG4PwL 5௔j4txa"i^6`W0CJ !@h]B_ xݰ~X- d¨:f4dūɚEhȾ%˼%(mWYnol>ߴ/}~'M}OZ{?<#<)N qB,jgMIiƦ-FTfz: cQh@]"gM{$K$AU{uE6Lb1 Xb1lfzyE֑WD?SfGFeVEv~3}zT+1(K=}uGf=3*]f='?yz~qgϟS{72.H8{eu 4Ff5mdgzf o:aA_w}UźG`S}wٶQf*V"ڥ2&DT )KCѕ8/P1kvlHFe6xU_Cύe,!; [@@JGsGpob}Ck%୧W.5 g>P%9)2ޙrsH2erHX6a]оGi Xޑr7]DDŋFg?n?|_-Xs@E{Y9rV6_,J ^NQAg= 4G *t|zg\#׾n!8l.dƺƺ_Ok~;f/X?&[Mlz}Y?]^^]"{S0œǟ݌KBm{O>OoZHٜ< ⌖9an/m8ᅡ9*Л5TѮqݗ>Kt+Q?:K߿ٵƇj>*6f0٪ DQF84D!ԽI0ӳs<ʈX#{Q+|~эYoDM~'g?7->HDNk4 +H:4o^4biîGG|Ͼ/7''`V[hV^IAZWzr#7(TN? 09Jb9gѽWfT-W7朲#/ ;; c ?opܿ7{7n?a `2'Q)]V`U7<+frrD ň}H@ K>h5zu]#zdfE( 09;vgggeͷ<}[DfKu|ifޟ={Zsw7swӳG~Ol0C=!*8  ˏT2aU+eCE,Q1epPkL VƤ.\eJ78+X01jqnsxG =H/aϞ<B^֟z_CxмfG ..Z.xp?*%RL bstW_:#Skh[kde%2G}OR -Rngg_?lv;ﶋ/$Jn]Lro_ѣ=~,˲Zkm{psp99-=R ҅4ѳ.9+sC"r!ӒFwvUx"+/xLJe2#$όpA2j71tCh1{3dL-` = 5 XtI }J4.WA/`e-صW+{ϕ8vwowTB9~*(s&?0Ym2D%r T8P?IMV%sMRdCc}Be n -'LU^Ur^hӳӳӳůΟ_~7mbuEts_vϞ>}ݷRd{nFvzyxK 3 6N3(m5 f)#2 y[f7-@荔ݍ8n67,dYm7zj|%pcG;޳bn}\ުi;l9JfoU*ف7f>EB4r8Yd<:!4To`0Z]_cC(I--RA(!3>^X36'zy9)gw}ݻY3r?};n_nv˭_^~NԪMgbmC gXՑ've\}E0fRW]4r犃stL3W/1F/3j8_j9^@2zΓzih/gD ;j(̂+MfN53K )Wi%J s6B߭=Ʉ'%'lBxq˳?G^}{(>?{̚2皠R\L}yŋ]b{ H6RAc8& %"Yw 5ړX*JX0 9݋whyG+/9sݹCGjs;ȗ[zJ6 F҆2Xe&˪PeyeǪ$'{0& 8cqS`1$`z~-sNԈ(,vȞk<{|O>neوlwk@@mH ϋz7l==}+/b22`̭GF~l?ۯ|=5Q#b_B=ݶmU+e6XATG- l^X26m_NVvhmSϟ=a7|{{ٵa+ʃ|`i&h,=F77fn}tîUH*X[B={:8sR Uʯ4he "3!7[v6Ϟ>/#3=!Kk{ >t[kj'}/0Pvof9ypƶYέ6ܔQJ)'C R-iU*'1gyvո{;8qn45PF^<1ڇ0޽m}+v~aw9s_^v+jl43$K̬fpVR9aYA}WwHU`*|>2Hdȵ#QkP*bPI ٴ椶f===&G.!W?Ylxdx䉤>Rqf٘SҠmӡ eY$(we* 8bQb(JRQB|* Oӊ5/%AȍϞ] ܵծKj7>|8Ls/ hX2O7/!؜Qj"a̬*2HD&M9nUO(XuU^ži˲,wIE"%$2kFg5Ka[lqu/.v'ϞxqϑG}FӬ2-$ҥHw4i.XYߧ=?i'gٞ>>=݇8ۓY6ޖ!k)#2#VD C1$QXFffIL)uM[qb뮆_Qf&")u$T,k3!2|Ify4g1+)>2w{ד=wbn ?`"to 2ۘR`lA4cE5vލ\|f0W, к9a2c3ve@,WCF RXw]]dsh>ًHE#D5)I]VY֋'R04~/#'ϟܹǏ>xO>>tym"S6^dF9Xhb‡U:T-u1=oe1x^̨먆=cc %eadןǨtޔݹ޽Ew=뚶}*:􇊿ړ1gj.cdӔ4j2ܜKցX• %d,Hʖv~gD.;ݐ+2SkFsNa+MQ(owmGFA- 7zr,t;]_l 0 @#\DEe~JˤYΌjJeRI'") x0и{}0`o;~w'W`ZEǿnfN7WR ,CNHV4bltbBqM PR%Z$2cN𣳨\f@3SKĤ(jö5$i|l*lId>OO7E*)ǹRszeF.͖怖5v뭉fSr0hq8.nmȪQ$K%N뵠Bsުpx~ ˞QV;\ceH_x'3 7qwܸ5~XM[7op2#0.SfT8%0}6*Zf9I > a f֌Q1#IoYs>tArn2{+,Qg<5"tAѤ:7CV& 98$FEk1&wnl7 fsWck jʉ8]N)"F}AXI4wy.Gy0`,jL$E ޶D@갾߷^˭qϝryom>`,pèj2VY1E㪨YԀҀ,M~1!Sj39$#bce?Mp$veU ֈ~/);"dVrSOd"PRTOipݼ5kn&妱Hm[##fy{xDM3F=t ε[A20:=$tydnnxz>vo?2k7t"AҐT(&$tyyɳ=kuy_x C~oGDʑMnѧ X3D 1%2RUCUGȖ To@cڌ8 g)m`2&%Gx6g&d )t"30oZ(k60ues4)b61jQgHhK,&uO.K[Y|>TS[CE=wy2huITbɷ4nNAT=e%sA$A ͦLv٬!l1'> úߙsnZEXHh lIМQY=j(~լ+zHiԣ=$d`S4n/xo]YwKR 3G`ɪOFqrnT25 '!/@HI$;FcdQnfޖܻ>$( ´(C̰Tn=p:bnaճ%2 4HH'džҀw*uyhv@M>wI#WhdmɌ,M`& fbpfnJ47qw6G^! kӅ$rvxk'ɻ|@iZR&a,~yz/:IR)$*3, Jil$$2"uxZ[ F*afX]y+k`VKeff2Y1c Fh6ԪݎѠG#R1.R)X=A*O,غ_o7{5~7¼E䠕F(k#}V}ƖfpQY:~ԑ^)f@"LJ! ݿt~⛮b=ĺg_>䬹O9N!Tj~"ٻ2{f5p/EB)V N2D*G4q2 2cfQ4%uU,80@*ϨF2F6 Yiڨ;[feh/`4)wwDѭd,W>H>H!IPP36 L9;ܼqO@ "jANw@A9ԍr瓀e0~OW)x|Uyokq< IDAT lg_tʌ) (bj4o#Ш9&)7ӁeKk͖M{F̺U2(8BaU*$]9IQЕ:"MGa1f&`KP@c ?D 9KMF4ԡ}wb]l!#Pb:g>o02ـ IM\9S9fr5P-^o_{A1vTKG̀U.hyB,,C̈1~RU !Bt6 $|i=#q`\ۍS*0) mLJZ|-f GHw>٪ !r=Z˒R]^lveFdCG3/_k#0fsܸ:7l5d]{/}7>7dJtrNڵD!ˮLD"8,]"Hd )VZ%cm8Նg$HBSl^d34EHNbN '$At*U&<R1 !4p]3)߯IJVJ-`\uG91ه;#R&=-~8*<)Q7S.w:Z"ZI$8ስFg"{Ȓzwe 36w2c@kTOzmilI&9_?ѸU^z`.MM92EzYԩA%H#@o%s?F +ybFw+[7,%Fr+VE  l.uyϗfJs>-=53F%%Wذ;b 4x}JI~~Fό/1'pkQ=Du=9=aL/ ǗIrd`GA&F9c4urr9;.N8$SEE"9=/1jW̬89g_Ӓ{oj*F}e^l!AioFqFg?Tko| ޴ <6#Gt4LpK(3#{ѣ[<*Q@Vh`¼yYH5e-Vd2FqY_2i!B.CYi)N(07>Y#ő.01szňkoIvٵ 7 :qDSa8 2$V~Ggfލ-?^^?۳_[o"V(N-)ԽSJfc&1$%u &qLMM?vir^xW-Ya/Ң[_"_(Wwt#pR!%* g~sT 2mU0ctsҹg26"<#SEK0-@Pt8Z3ɞJI@V,gv䯕Pس¾Rwi.֌^Yφ-LLLAak4JTE28FʄQꊘm<kށ#4>ڵo+d@H(k#CB @=Tdוoq=]m42Jc}j@I$3,2av2LI*ԾGޑУ4ZyIUfa\ڻ#}Eb}{9ux#Y=kH'##"s~&T2 L8š&&ᠳOϛZ27ËF߾]Өoj\d_"ԁBRjiU5LdWr,JU#0L<*OQf*:Rf47ݦF\]W]JD; a`k(tZhjܼגg  $,X  e ґwD-]صܸhQle8Xr5xDdFJ̴ᱍA!h0q7䪈k^獩i$ 3ro/ 1 ;z_-dMᠫS ΅LDG芪aV V}NTg3*_fÂ2#""{td6gPHC*PEO,D8̬9J0WkvL*! lguOH-; ~⾐iH&HKF"Č/($!yNA;}޸x{oVڟ2@]3kcr9fŖ˿[^/k8ra{>,& |îE*n"FNsm^LtB72 oQU<v3E>N Ym_ii[NI)A)Yb%Bt/|0mק➹,6qj%Kj#zCQ[HQi5'?"wGs_!sͯ?^i{w(†$A;kp;+SQbSU9db%`t954TP"'zFG%{=g&ӝ4zS$u][(R+%Fȯ cDץW^0F GU;@ggR Y"`Iϕ" '$bT Yxi_ㆽ~ɻ CoѢ+ko~0! 6z5f *4Sޣ9'J 2eTjH$7 .Ԅ[D*( VU[RR"a(!,E!U/gTӄAe& dYxH Y8콱Z;)mfxŃ!f=9MPr&HݽּF*VE"!SVL;cVfdKh Go@͘ҙf"=N֢SLo(*\FӮi.3I0PTl`>I) I a8CҌ8&xF+Kcߎu|]=vnܑ&DH<?jb)3(Ywl9~]EFIEd>:P; p_$]>)VHrD)_LP#(J"2Sp'%3.IElxl.‘$S(U֜D1CIG^иrF:TFsLؚ243qJ4_9BhYț)2G ǖs+6(D#sRrٵwʴ`V/_95P#2j(6Kλ D- $< FtfQ4H4 hi]BF7@29Iq#oA4jlϰ@0YZi10'Pe7miC F"Z\] ҕ-~hMa6¸mڎo7v!fX/ӆѝókڨug) ESst )͔-ʐ60 fsyqqq~ыbX+QzLC^)TV 0+\U Բt~ ^1C=% U UhGTMF9YkL3s6~{P9FY1ߏq#TXI 1)N)ݺWop=h]{^re>E&U_LLIYj١AVgɬ Tbk=M./=224 2g̛#)^  +b0Xꛠ6$47YRezH!<t].T^ lYI΃*s7. ai43:hdY^f=OWQXEG"lG}0Y^M{. > z2$G9xL{MW/oy~x֛`Leh4S›JALdR&sFZnft2zFmV;|SW.d"zz(Zqu-mPf?#{15b«9FE2T˜F%Q1@IiI BdLJzN z1z̠yd> fzź_ۃܯ4Xn2.D7,Ww6kz}UveFvHK5f-hf{&U M(ԍ9S=/VnPQ`(ΥLmqOjH $6޽mUAk8^D[=tB#Oo(PfKeaVN[+f/s@l{s3`Ӈ'_7OkB0sUAʵLȚWݓ4m`!)0Md 5Z"Fk%z<$07fhWi@!,/Lf2z/f5ziERffE m=}inN.R%ݗ/ۓ~NIl&4ż-Kآz_)W!,q@fc92ձ4X\iu2٢tSKbN"2lffEB=nHYF06pm5޷];XЧܼ={b璼 2p d=_k^|7F]x}bql=޲Af#e\֡,^q5_ūׯ}W#<|~3G|PV믙]/ tp:b^% ^ HrD%^7)w5/aq6s=9}NG;c}߽ܽ9<_7lʴNё[8[{tT+xf^y>nxKCvۼ}l7w0n6 /,^|}C86k_ӳ_d Y&jfBJ"0B4g3 %_Vu {Hf={n|]MF?|`{bϟ?|vO=z՟$yzrѣG}?""<ͷ\^f oAFîym"ߖtRL!Rq k~(xO=_k[|7>2$1Rpbݴmq7;i- .ŵX|60՞kd$Fs2s_hȾwjyn)FPA{ ۯk$Pv$gnO7I;;;9=;;;;=[6t~5ׯ=zB5 +r)T !^WLuEm.l9\UѨǺuݯC( "գEqCZXkx,3j{}q=aD[6g[o^}( EfO|IFPXwO~Wߜ?;$o!".../f'dY6?x,N<8}py~Gdo˳OO>z$rg<|w~/曯ޑPqYќFwZZ2,NԹ9`z,I~v_wx?ip;j;g}c!,2I1 zѳԑ2Е{DX3{f }0!&TfATei@d&C\C{ESLviqe]k_w~wu]ܭحF]h}2LN-*I3Qb̕w5{u}FfDR2RZ5sDFD_CP1P]EW"EFTW.֞A FD+]Dg#- ni٧׿S6<ߟ{~]v{mk&x7_7~vmg@Ťnޟ]{\̿ѧ?;pT8h>z JinܼnWK, 連1Tɔ\݄mACh>ba9vfU+Sy`$O ϡRZ̅O)-ViD)3dE$ޖFyf4G( (AVUYV^d~@aƯ7PKQv(̫Flg?{a7X_?{OR3{prz=YܝkFӳ>o~|GnN>O>OϾ/X6 &0}},] 0gi~9sr*W)rUcJ?nvn~n!`O8˨cJތFYW]銫lfnVZi3=2zD QQ6]3F5C6Hx'&ʷIHYʓ >4M ,)?W& kf4smZݜnͽހ{[:6BF9IT1~DJR upʯ#5B}>Xk?l ]\?Oxd9;=}xdY6;3գN7'ӧ__~~/_]8pzG_7q(n7|/Ó'-e,7t澮Ryc=lƭWWfL :mx`Ga?&1+ IDAT|}_]gۿڂ?;$2d0A5v:ute X!D%ggNigP++K>¶? Vd5}gdeŚ-KZ[N66-m֬({EW:JUaìh%r Eס,r]˚pzt,aJŢY|1[dq&EZks~tw^i̫}weӯV%wV]wYrffӰ_lz׾wv)o4>3 {X)^ۡeZ1StmyrNajj/7uO_tBX ^VWa8k)R{Ìk/{ǽ'(WiGw]Dx<*1^K0zLWҕz))P+nVm *4m-HC,9ҥ:VRrb΍4LR<@ւ%b$dxSG4Wgwݹxm!ddZ;1-0 \JM$ 0A)IJ)ӐH"DFn m5UN1_r.ĉ#T7b9E`Ĕoݸͯ^ZRaY[o9OgI]]N]Ϋ;׫RȪMכr0\]p{4}.7xcv)盷n_.֩RRL躒r0du~zvx;[?RǂZ\5@i iPiҢ#7}9kƞ+]9b:D9ăXHxh"6P$(pDiԚEdP5Uk5ԴVo-xoُͩ "QqΩ]וnUq<@s=i hB5ۗogȸ,`1 N._Za3\ˠ[X $D 2:@$,Y$ܑ$I"il,~cuhy <%.9rsI‡\uKf׿ɰZq|w\XHS)+eӯV*qJXDSRNVRrVq%7vsN|wajdفDrR-r5ӅaeM`ժ0[Ai1z޸v&@Xx(R K|IN, bi@,m/ `iZTs5ai`q+t4'fbhI9sʜ30Kc3[يì `j\n52ZCZy} .-cGGm1yi oWő$Fb4Q+%sr*@$u)PbƊƓYr_?:ll?i"xn{٬׫t])z}ׯV[]U".dNJ.N~_r>8:+oݺ1wOOs)Uo6V])"QVfta qfI"9K9DhNOq8=:>>::y}Û7oރN䰮yAXWv;lC3mAN-'abܘNď{kO[/ק536u)t# Z0!n #$qʜ¥ "r&l bڴ5xfdյPgQedD4u㱅B%`fb0ؙ*nf05Z'؇>ܩX$%IR&NqBRR<:ALGD K25B8;}֝_~s֍8f^u}R$$ȡY sYRKu}JΥBlզ?99y~34p~?萙id7=s@vKZx<}P\>>g jOuuN3X #gi+5lԉAI23Ř]aսHAY̨Elj7-IE"cL`& 3$ζL+ {;{l!“[XKQx n#jyUWk=Goedy1,qUA4!$L0sZtVjp"JQgC%jPCw[rZz{eZ ϘF<\*~_KN28:<̫n}.)zghfZ窦 E <<>s9ũx]u<|irtRb{In@a-ևW Qzg܀9=`[<7Z@)nf3 "詵OnnZ"rϱbO@}vg1I\ܕs&\V٬HC 1|cXg4ƫeQrhz5E]UI%vN$%1',IzWF[ΛyR )!by5WjV]KEDd 9تR0 ̜m~+_Oqew|LҥYsJ[zUMkZk\C/TjE:ܳd&a}W'ׯOfGG4wy$7ouR:>> &s)egb'}$Z:o*yZ϶O^νMS?}~CxcD${"Rɚ;NjZnիjpZ[s]X_Bqy,[I#ĭy<30HZ"j\R))'aj>  CbW2ksnY_L A0rB70 ` /T@}O -u80g7w$昈%m:fşlv4u{v>INܕs)0ZA֦lfs5 Nr27k~ls|(z9:8_^\n=<=3a:?=?\ %wM)֮vq}ݻ] !KP[@xHɄR<^>izmE=?Bى $ )\9;h6p#2nsSaN`K828c`ݙ)VwgŰخ(1#nYTrJ@BIYI.f psu6ք'w'ʳ{r£5Y`fҌ)QD@wRxd PUK8ڴEKHԽ:9ԁjnnLShs4Ǧ1"_=]nF."a7O~kӷޜ4nw[8_眻-4=h.aʾ08h@ 3r6lnϷfS$v^ҍ~:?;峟9<::?;#b ]qJyvN\f~|p~qVڐ9vAprnHG۟~8)} 㓎GO`" >s&UNZ)HZa՜Ĝ98] & _TB)sX2-m";Q3$#OEx7P ;R.ky0<))PA2 X \8(WmX;("i$E#<"`lGuy,+ss5ʑR^ݵ!fs~~{~~z~q^z~qQ9\J)Ơ;Y#{Mhtf4i5l9J,aw;Sf2y֫iv ߬%f]#WiAkR=<<*EBeozl;=l|[cE{u?R`zS}.}':- ,XNoFђ=[ f{EMb0cjJIXğC8$e)]W9w3-].6sOpCU31A&j&ȣlz͙``3[m;/2nP*yc}ǴR%n\|fDYlGH׌$26YKNwILjNf !΅WtuʅR&U-M2BkےyA5zi8)V!eY6)$DσB !HU0؛CUv;li ^\QmoH$gɝB֪ڕUjub&fc3r#[8jj_Wbku9Iɩ"m+, D& <s! p\ ^kAa 0O4n6YEYrWpsppp~~Yotۗ.M\Jђv?r1&J!FMgL?ZݍBR-"f"sa l~s///"]=?|_T2HK% @0 . %'J !gRfɍA#W 'ұnw׮t]_,%kGGGe iY`aT~Ws5r<)1hq慷- 53V:`2l'>qADŻ{c7Kh9O"b*ԃyh,0h='L{) K"ڼPEpI$7hug3ZcP-ee9D `f5Dꪡc ^`&Ⅲ 8nvB}) iK,H٣ @!7nFpPgjj L̒ IÅIJI9yVstg>mky>33̹!nH`#7(K N)RU_^\jW23o'Epi>::|DM)}JRJ7̓a&́8TeIWZ0V%%WuI qgڳWcm1ڎo j#! qb16!1Ğ$ ADR"N!"RyVwYfNL @tW8ѶYz}d#3 *YX-~|f)Dh`N&I2xQcGM=2"˕Ѣ_A6v_T6yIWCFDXم"_Tx݄Yh훯}v0LP`ӯX@0$4jA0\8N)yil¸ S 4Y2s!ɒJ.YҰQ_~ 8v]w98;iGaXi&֙9b ;yhWXJ̶f!"ճj]N&0\F {#fptCSK~q 3"iwo i\m OK$҉vFN$]'ILqy2-j`!!F&d1J.^]1qrμi*HKJvrzI"vTj1h'd sPBܺs ZZḾ?uq|aDq|?W᧬CǕhrLɉv'rn 5b73VBs`"]0mTjV!%-C&:drU'`$18$.Nb&|s6fVYAtrFjĒԪM["j,B$1_T Seq2l HR9 9Bs ;ȕ9f;J (`Շ2mG-yE9,⒙PJL),Tya~_[wxG?ۿS*t|փܯΫuΙF9p3y8UHr.:jdՓSJuM.$q)EL%,5#-"n`uxfUh:(3s8!pF򈪒\JB)Kf`HHB7#z'0pClS:`@86eU!&5*i`W\u1gRF}6\:  9.%Lg #b3%RZW՗_q{o3MJrvz6\|[V}Oa7?i ԕﻮ"4 ^Hck} ?0;}yS]vծ&3iP &nrn1@f5ᨨp٩ěZ]j%]971$WK(0P4rZ  $CxӏP' @,j!1goݭ6n}{U=ñ8M 1%JP4 SQf!fDmQ^NPQ"I2,$GXYgV}_}޿ރ] ggpsƳˋv7i2BuG'ǛՊ Zk&~BʚMNURJ+"UhU{ P) 2jZ+唄4,;@j5y>so&w̥eA$3"AK M'>J, 'SV¹>*U90 `J¶d9#@ Ƃɚ 1M5jH䵉b  %Ȃj&:SSFPR*ʶh HJRJ6C lky %aa6fNL^3\[k 8E %\Clw.MkVz$a$̒(4ނ PӪsMD µ|Guemˋat}ZV9!K*9 ߵZ6Gժ)1sr%fuS( ɔMu) @,əW5AAUk4$"&G)ED湺KX(ǎEtr^d mﺩ:(o 4 0Z]F)Q{'՟G<'/}=[A#qSU_2IA F?Z 0q%KfI$< ccn ѐާt '" ԙaT֜x9`V"IRI9t\[Cq q'NN)9Aݴj]UVFhZ,% $WwTu̜Qf(譻B ,9]KIXLbUmYq?P'U'e:ë]?9YޗySJ"t\^nw0 ONK.ﻎ͸F4 *I \qai0ԭI++5-0:眘aؕ"ۭ:,I$B%si.ZTyAqXUS({I_#_DhŵXWŠ39B&`s7\Qmi.qT݄jub9,̈`(=6H؊[0EW2^pUdI9~Uh5[_zW&/e!r=bg31bNh15I Y^]p6%SuV&uHłUo V ?< Hs-eD$Rx]iʥ@k'n; Zk5f8Lqr|rrt\Ӵ~4WJ"i{ש]^zL$Q4Wu4Yfi<H< n];f\8N|nYrG3W)!Pd1Z֔_$Mà ø܍S8\F ٝ]OTUi4 Hf aaq $ 1DX?V\{,@|$kOk :&a4.NCq2$-*M 1Tb:kؼ7FlͲqaoQt:S$\էRLID. Fq$p&Oyk K &&FlQk/SB5I« 1.-ZG PbJ1N 9p3?~+F6kr_uz{Mx%WǤ%\;:xW:nl~VR`AZ-ޑiy^aZ ]]sʹu]1NY=ib@uqJ@)ySfPg:aVz_nw++߽w^.ag?ߩTEl|Zrxn^;9~@%ӳ{is0wɔ/vwmr9Zu]ŒRWu.ig=wXUdbNQWt Vg8LS.'QP^x4a af{RETYI""2$fHd:,bQx8FXoc+Ll#T] x(Ix:<< :YYUPD(5?*u3Pa I\-k-+,/$ILNs,땮L(?V$nza NE-IoO?'rKNvlۏ7^/ݹqxs8`*K/k3yg`spڵpyw:s>:L9VzsUۤuR55si_뤦t)4 I$7:_ ܯr)vfFP6[qߛݧq)4WodCW3@JH}W0VN̒{=oFHoxB 0/A .PGt9P~Rq>K@=QLj!ΜB0Z96`1-@\2 s&|P jx:\_R:KD8qht"ZI܍JZoG?ʗ|`ܝ*}a*"^UǚXnߺyMzxu8n˯lݻ{-Μ wXV6}uIm64Ȝ8LœӺ'N[(|2!ܕ,b\lÛja&:ϩd!2a_zar7Ljb[pv~r.D"+aC9KdILBshFpAƤZ@gg~~{_ϾS}뷘׿.dUJɉ!Kʜ~8LZD˺/R6k'%%׺]wꖺ$,pstSk''DDU8w[[o \rvRXhgi:\<׉᫮'n;JE}UkNM e\9ژSO{9;Zϟ}jճ햛0.7M46$ ^K]ͱxF2%z̴1F=c_\ e&Fzj>.sFMWU cӓ]UqtzMj)=쟟}1۲ ل1vNh\V޿Ͽ_9;va?o\{ɴˉ$4);$= jUBr*LfN"M̬jVFk&ΓqcLa uݼADVuK9$!6Rrߕ˭ZV+e? W2ٜBi Ƶ^Z3m(x_c]/}|ǿ,?H,/)2cs9s1"a;D>$_3bfUM@R( ")D<*b6)TJ'4_L|???j5 CJ)>==W;; 68o88...,ٟٟ真ED?7^\'X"lU_v?\=}8{!~~a>OS*gpiJ.$Ҁj3KIiuR?Wkn\vt)>lجV]aD8:tJ)cfU-aD܈t0>xx;YL ȣƈX &H /J,g8O9<{`"<~B)PHn7-d_•uJ4~j,IRJ$Er.%Pm$f H8߻y___<==koo}WWַW^Ν;G|??w~p^|~ю˨Uk=Eh`FƠ}7UE`츞l{uފs_N`@\I)su]DGRWQfL"12UE2XQ4(vek+H"u/|1WUA@O# f68EYhfŒ`5'Xr`fAl;Rjgh"AnN.J!I`S=W40dDLLYR'IԇP),J5HJfr. `PŽKDbfK]n!yPsA3eS{yI,;5yu;F Qo;WQ .u c/@;N;t!$FbC "SX.pv!0F@!1uʷ4//Cz׻wx~ݷoߟٟ}x?r^}cwqOBeYý{~}~l6{_O~5y#Oef1t-\2 )0HF EJ)/ykkYN2O3b(t86!bfb<7שd43M@U0ˌI)Vi%圔⌰WԺ((P"RjE0qUW׵%M C,{؎3=g6|$gvx\ZD(pEp:.Ձ *hhBnPl (FAI V`@Ƒ 9rTQSΚ%甚,*QјCs`&%$̘(ڶ-r>_pG%^Mp3OK.~m{~\-C IDAT]Ó01#3"B hfNB擶l{45+:|fO;p_7r.ys?z_ahrrG1F&`3()3Cf24d:9u։lj2^T5YEESJM=L';x62[{YuQ/ffib(E]A*hhu]/Ty0&o 03+"a &jdhG=5?l%׷{ yLG¥lT{S(CCV NI3320%%$0vyoݖ-K w Cn芾 `.":Pժ˲DDI;رc+++)b{{{eeŖ !2"2Pe$kH^'@* D*n~[ W6!LvGn>pޛѶOl^Z+bj,E@2P76# F^P1EL(^\mZc\ܷpi5YܺrnJny49)-s(x# M-1C,E")(YN9ze/[/>: q 6bfFfDB&4$ CUn;mjoOո˥f:3ܴmn)"T6M&`,eeCPk˒ˢ jI:]`PSRR"e2P+cBXDF51 ȧ$g>=5 C__bqI á:  "!uBCg\;<$apA'.Oc:9<{Zfg2ϱBSNE3VofUѪi1]_?l8ܷuȱmю0zahP!3WE`,|>gO{ڡ~QADiYmJΈB,"MӶnR2 U1q!ޜSjڜ6jiSVŢ+!Q$":\WBAXqx=:0fy낓vxQ~ Ow8q3 )u``F6C?{#'_NNnsU [꼺=54.l:_:D#)yegK]{:aJxC!׹ğxcPRΐE bW\xDPCDP#p* |;vXqePBrvȠzeUz_ԯr#. ߊN} q{gv.. Kd  tiE̓D$ :v N` c$234[5.yJD7U[^9)e blW>U/{#tUE+bEQTWY3TtsY9 KnSr !լ^̦̏d:]cӺj^eTӔr m  TXMJm,0GH&ԈsdI鼿XhSEUm^ot5"dC"""spPA ̖!*d*vn:=|km>AY"sRC/'=%g5ƀhKZ3󛚚2  .'R40PC193jeZkj&4;O$He bi0XT<=R4mZԽwl{s4ol@N98"N ^+9Б;|ウ٬, b2 mLf1AY4KRCt/YSjIZj,'2ӄTuMEPPff⺩QH ڜ9^h]UI!(ލ}M}*D`Zv6  MA$!2CX*&]WU:8@TD7菌Gcii:}DjG3H]^^p2|<:qbm`0dbbWVVÁ$ =985fYZ"TUÜt CSD5kS"YDLZYrRmRۤ)fѬn! 6_gESScH@-GM$7|Ѩ HE/D_jlhhbFMskgURIzNRy;tKk*k'8әywHx'dэTL+]`=b@nf$#w0D LIE-E`db>~b_;lΧisJd1_/E/zQvo-| .awހ}bkX0X~m!窬`lشX :xZ(Mm7MܡT:{phEJUC R es$&$1rW"@(J̦y&.fp"ۚI6bOǹ߱q1^LomĆng`znB l#]YI;ȇvnW"*BD* h".@IJj)(*|7)Z:(d*%\Rm.{kfX4;j/yŏ^|%4.:t{?z#EQݳgmeuPT$X**69|jU%^ѫ~Pa`= +b2\WZd>#4J)ką$-2⼆bw8O-XH,0 M"gG`p(eT7FҒs wW: 4l8w^ċ'kfSTtZ ց"bj`Jr xta]HN#ΊI0L@hQ0"f1Uh C5%T ƎBdf6y^4|2=yB;W=yW۷mhgX4h?Woyvg %1r@$smBYbV$z+aY@ADZD ,(椐э좆n$k11*)]@rΚjnW׆MSJ$v3o@*Ju $IsfC !PpA(Jj b(v| |СCY#RG:ż~t4N̔(BD`5PA3  r!D $ƢBM隣 sx@^lu׾v||S۶WW^u%_'ڞM^gw7<|=ǎ",!XTUETEÔ%62 {CCH۶N)e1He],'Z1=`f-giX&H4T@s7Κ (e1CHټNI)n t ĔGl=|K3sPyDDYG D 2w9%)Q*hxa&;sn/BnSTS4EP`&9""):eSJeYʋZ,{])%WM)9\'i*".`d $~5?=,*Oln?ztb^B !<mz 鳟\0U%6aJ[1Nfz4]LP"eJdR1ČVZUm&)RI$e׏=i9e5UX۶I1P@ nM޽$bSHbGuԑ:ZɢȪh%BB3P ɦz\OZ; x}r?qy J`njHLeݽ-Zh-w13S?ckhSڵ` #ShS&p1B`@#H]F̨J.yֳ|>wl6{Ne?v_|u]կǷv.mKD/z -}4#׻#f$bW/g|OM{mfhkyx2g30l6:qbe2(Cp߾wd<%mjd2lm泅dm0`$% ML?WQP,\-E Y\"Y!B`LЦVTAGNCUSU 1FS.!0 PAQ рEl7>Bu8^O@=qI[~wB DD:*Itb6q9-D24Xr:] RV'E,1@ 0Fc*C???i9/馛f7tӛ՟?Ͼe/[U/F)!HЈ,YȔbƫ2OfDybxg4:yt4նi,yg4FkfZYY%AoPU^`xWw~s"lmnQ(*ZJ9*Q`єf;@EN8D1" 3@f#V7pynsJ c C$QYhED,WWVFYn-ֹi'j*)%HPG5OS<~r-D0@r ~}S79iڙx'j ^A!!!11&}6%׉ac@*h W$~?o{fѣGg[k}Ӟkn8rȳ/}KN8ַ_Wݻ]zǟ:Y4t2Q==i]['dx{{>5Y,WH @qexȑ"`aWjo߆ (;a}c}c!M,imj&E=XTrpvmhIu眓e61(39 OWƥ4)-a1|h6=&!}ytd$5U7s6UM) o>wu77s|>;6=pO:yDU5fاNp3#Ԅ7 \{םO(-ǣc(bZIDH;CB+m{[oqX\q]tQy05k>\tE!D׾җt^\va7B,kj4efy^7uCIy6FMN+kx&H1\߻o5yئ)cU+}{w-30DR$1E#CDDSs-2KbD{>CSZUq0u ].YJ!#U1B4A 䧓 tfFHW%CIMc}܀#Q tƵs74FD0d\[us5TYK :"@"P@.b@Bā峚\ECY޶ϒmZq\Ue!%zj۶ibٌbsf,NUUŢ,RRE(;i )p(0[~Q=$y6|>UJʈhL!H!~U]wT6w>RiJWe`O'^Xht>[,ŢST(FBF \énrE,jH`ѴO7A { @{p/m4IzE],yݴܕ`&KOi* r&IE[:bxew%w;7.}Di2z \E028eRl ֚ ;1b`bbdv )A|gO(K UCUfE0 N(rpПO}Sid@(2F4I X$-x:O-t<>r0"[[" ,Bng\| R_o~ߟs_y?%I7NkMzﯭbQMLTikuE&bvY,9mեs,)9oLvvR`^^Օ_P[եb0oLM :vw ec΂:ãn8B+.MN u`vl 'mL̨ΒbDg"$㹣C`gljlArwM IDATO33UɀĂRo׷(ue"N9bQVE](Umg4P6]|^y}G+}UW\}5}{^CB(42mJʢmm*+B$"SJmNYvB ]9"zUXnEH"1)ϿEqj1b'̈3o]n03 F&it=B<:3DqҒN@~ Nҡ|st= ssLHltpY:t97 y%Sյ()9nMb6ួ9뼝 rNlomonmL餩EZL!#W6M[ےSE,uֵv_|+/CQҗώMdmYI-fȁ$|eBD60eӬMA$JϋPjJxy  Z/ %+X82m:),Kld(K4Mrg] . ۭg87x>s `/8~8mL^:FB#Qο߁FC| @H8p1jΒRpG&!-e_(+brxu)$y]/j0h쌏{}?ϐC,+Hy6ܳgxżt=<Wʫ.{8rC߹*ݳQMTeYEDTu|Y6%isJ9ۜSJmʒ5gmff4NfuA]۷ouR+m o*4M""R={ LgEr&5P_U .Α^>pkXbMXaAxs~3/z4GOlݳABA 9)e1c"5jU6u6)$)&is΢"Ylh&  "YݻQu.ʤFʮ#DTUU b~2ogiݴ.5 f`D4=['jp.3Q;',ηs z֡OX } f!<]2בvET)AuTکO%9&O "(%ɚ/1ECT@R#16xp@zl^7mr OE$|`h(5K-CU q\p?vٕWm WGirs=_?vt}uxA pL5HNuIm53" MNMnsr,mJHۦ,%۔s`{*pK (3_Y׫baN&)gUDd t- y>cvVsKzƵGׁ̏`ޱpdzv+%@T}.au Y<"Þ~J.xڌQVV.dCizX!h'i3cPl h2O1 4=e7,xeqϝ_~g~!'^x:8ʢ(PL@p 03gzu ĺ Ի"+T7H0e@|JK*tENfEO ;X$: L̥[ b%31Xkg]솅u3ˑp>JNmJY$m` "iueUܨB3" Ny4ohm"n&{<&"2F=N9Ue,b 10fS5#uӶYLD=ydS/#"k"pЅ^?2eDBDlHrլ⵭fbecD\'IYD(¾=k)9L @>:.YʾI/]eS e\;۷D|3 @=åCyPԈP=ޙy2  &/ ;Ӭ\D@.|TB)7)EaR;u!7*m[肃ls")IIiY]'E 3s,8DF$v:h2/q(`,V(ֳ;*1@yt-(Dvg ީEum0nQaBE[__Y] V^f1XgSQK)mSe$,* b5mڶmU аHz0a&@NE:dX ۘ :~|i:v3x=Cjד(kcYE).8mhh77G,D 9 D4kN5zJBOrtsBiֆ냪'fuSJZmYƲ*0pF UP%55 -$rѶ߸eoaڡtZ7I@T d]MzG>zJ;}3k:OhȆ HdHLQ&8:Sfb D̅]:wD,wL}\55PU"\f4h4ڽQUrH۶ymsn|:^s50 6G_fV* Đ!(Y]G?^UaP+*ʲ(cQXH (a AŌ"JnrF[SU`#Fd@NS""L͘%-}vR@+gKL@>#/d1EUŢuEUi۶"&I];qͻf&,o봵9M!t*xL(}W.! |T}N垘|Y/=ds"\sUttuR$tux4uju7XGPu1Ǻy:GwvvDo4|#7pCS!/|~o~?o߮p |M7jUU~ggww˲җt__zYGDzp< E,Rِ#a٫Y5"( )biۺFiCj6aw$S|vh#ETL50fpXe(s$*6O̦3pdϦN!f,9. DsӢZpl6,bݓXT0 ۣosa.s\{ЧzF485|ɻD`>b=s Zd`Jז9 m7VzֶD"஽(AAQOsUA7ys??;;^}o_bqO~~_W.ꫯ?=NW~/xW򕝝￿,˪D|>b_~u{ 7|^c?c'>;|x,MM2 P /UU3A'Dt2-P0鯚R^P40h60IiDi[H+f@jF*b+sw8ۙ]ˏ2=֡U枈u23wڐCzщľ]9"3: 1zHaI&HQP<ɪg8`CW`'{a—}svp8|6>wi="rwo_җTU/rγ;СCkkk{=tP|eUUsϭy{ލ7|ƕ!7__cǎ>|n{82]yZ{sԔL "^4(*z[b5miOm>z+\6pE$v@HRIj8kxk}ΩT0*2 Uujkg2?w߽hѢ:bGHkI{O8@_oO')K!&KuڬWcZ:+AQIDI,eggXEff9kݺuȦ.ՍD6UJ % zhǕ0y} mBzG#je#*RBXc^4Ru.Dՙ֪Z_9 qءqġpTYc&).#>7f_on%P3~Į>n~ $r,)sCfb D$B삟 HǺ3UBxŘd'rQ|)RJ Zx2-Z o9VZjժM6=6lk$ټy}7::z5Xv`xx__.Äc/9$II),[~??,X^GQHaÆ/}KO>m_0 ,/9e} 4u$ژ4m4\);$# ` kjm8]VK118N$QB Vf hJټs.3$imII mS$r4M6̨jб/%B clL*eETI&qR*%q[* V6mORQZ;pft"vƱ;R!9̅8$~kzm_'ں7/SCcUXb!'>1!I–6D^FHERQcqUJ}w_[x_\T֭[w7va~Kҏ衇N;JR_/[/?ׯ_bEǾa›5k֬Z޺uwoҥ5kRDZ61.N(&0H&8)Eq9$muf2֛& ̹Nmlu,REqS&@Bkg5|"2V$ *G ^pWR)RJ*%T DyAR`AfZ˲HH)|lW46M6zd,JRMRO$wh6qR$gUzfU*C}=ϝ7^386(ԬYIR*~%k”QS_;̐A!j>! p5o,@+wa}~@h#tRJ3y&PCREJDi ĹMBy5W_7X̚dDoU%0V&2o[Vm&T*icR===[n&q眔{h7p֬Y۶mIӴR%IqeZk)|a "pLMErN^8dLV`mZ^kjV64e8*+qHRz1^hfVIE$xFGk hz ƀ@$XXEJJAX~ Z˶VQۚ*/L0ƤYVOz=5RT"g ?9JI* 4&kV?LZAʡYs?@YJ83+%1cU=1k`<0wp@8VT&3c#57{^[ni쉧W?aPNKxmF3kI'݁]Cwyذ&"prA. \ v> !i ˔$ebg}DMljfr#VJ&REOR.XRYL:"ѴٌgGpVP$II%9qo4z6Ξ?w``Ja7w_a iUFkR/w{줷ao;%q%pps@Di0 v>!eX}+h_G$R;&X»;Vd ǎ3g $">,PjX _:iU b;ܙsxo6NE ܶqS\+mVK4kX3MjUV7Lf2cX*l9imNF#qeMMGU]:3$A~q5R %Bu*2E;C Վ F:$8.9gx%ZIJ% ʥ/%)FF6nٔY$nvBQJe̺5kSZ| S?>YR!=P"mfLhgrQ0G1T^qx* _0[&E.l̡!X\$:% IOBIH I"(QKSxQ0 x IDAT }}R 3f֘O48z[GƪY5CbBeYmv&MScl2fVot~ЖBY , TREJ"dPWB5.<(RZ-[G*v!YGzjBDR )e̤e0_fdsͬ ]|Dm"biDV1ވ8Mj[#R JP\I2k8N,[kcRknTvƘ<"^Y cT DB"o&R(%2n` O '2oZ` $8IR8뜶Z70_)9FhLkHHE*IJ2Ri:RqldM_6՚c)E3&q I1R0DU$:) ")HIb$0ȅ%ݭ`&G i-oٺY}q$dq{wkG"J굦I'TMn4\QڔX*dv6ų.zjZ7g۰axITX{%!EyK)` E%Q:^ʾtC >јH#OO=ʀI-RIgsZZH)*{js9ׄH\J"!Kq2v>}c$3kظ͌$qPLgʹ)GHĖQfQ:ga,tzAD!^j 4]YP94|`.)|ȴNo>DvJVD:fB0`aæ&]aାكJO%@'JIa Q%q{F۾ʐ5eHQ%Rlj'ȶR__ YWRRE*2kqri2Y,Ia !ȹ]gIA3տu^FyȎeR0{Wz2q:[(5J*! Dp`XDA!Id[88gJȼDRĂ""$HX4ӆ.3f5$Jn޺7Fs,RE0LG&igPX4Wȴ꣣ͺ-}=A2x ;RqYRM(9J)v%Tug缻\68Mme֑EМt$,F꩞J H v6JFZk4$ɨ erp۔ ȸTbijeaFjaXh},1OMY.NLHDHTz7mI]֨5,d3n -t*숼OUa)/%u"ft[S0sse5ng$)%!"!?!Og/| y#<`cG.JǾe9C^w5hcBMv!k}`otαsNk3SP,ʏ;ݔ$");M ծ>@}KNBx{eDPoxm6,SDQD$i杽BjړZ-r'TB@ZU*=RI\h F#˚dLlm)`J:y~s0~9[T*5OAEe0;92/T:xvP-Me@oOJH)Zl42mp;!iȅ,cٱ=C>Q~rΰ8~ !|oI,b@ #R=XJfIM@y(|+6q"q$a4x$VJ$mQ;v*,;(:acs ǎH_m7מ.B! ]0,5e:;~vBo#}Crj-P+*dc2[/D9ˡ<ݴՄEF>!8bΰ5ZHHH8yLnU~Ṗ0%vl[_;z3 !9clqT.Ǒ֦> 1<IW!D\$p.*Rhlш8/EQlLfSuN)v-x` cK\ IιGjQj)rm?z~3Ƚs0gq)wZm7)'y³nY21jb, ·6B^,F"5#}M]ehH%(RiO:W6R:UEdYc+J6S4mf(2GB2krNb 5Zѣ o5 [P*P]~߶8fNI޳}bj9(cQg.=S%׉""ˎښLkm67\i5̗-`EEr.ZZ+Tkš2CaF0rI1XegӖp*p )9HS-DS({{*pfYPf3-DdY(JJe_IHb+p_dٱɘȱc$BdslWBma *ž3W"SGWtoN#GSCCgy||zzz|1?/f;666003{ö/ADZ\.D8>tqfksWRu7l[ʅ?,}cF!r$ų/BqŦ>tcZy˗Ypxxxx;Ri~=蠃,{#kx!`ϙfsk!r6qao6[&yށ"DV8 L$5"" '"OOh6jmVo4L[rDcb.XgeZHi PW)G"A*VIJITJ8H ﭕB*_E;#Â!z⤷\IJRf<QO~)l„+xkAi.6 plO-vCv~ a\:D.M3.Xk'>QT? /]9wꩧ6͗ygڵ .|gq[l9s. i>c>򑏔J%KJc9f .G?zGy_W(Zz 7}lΜ9Jy]}Ih4}E~wcB? 5V""n7fGN-KK!"!($qF`!9qpbǰega-2mzeXT^pϞ?oxxx'τu}sHoy$_Dpmغ38QR.ˉ%&)g. ~khM61i{fnu:C./GnP6Hs̈́rBs ,+W(}ڑe~{M7t]w-_NXt'?O<=yǞx≗\rIew޻gy榛nz+<.-[SF{.ҷ-{)200裏^ol288x[nݺu~nG?˯ڑ??q OB`4Y.'5u6t1x;mL#Zjm$ײaLC u2Kf' V$BPs9oKm,|:TkzXu|t4MmZ9u[l6O\sX[ yރsĎj`WUOOoTCn)f]~f_˟f,#Ο;oGXe&\P܏~5ۇn(.99-`vP뉳g޶mۆ oٟ=sWX}?Zb駟>44d}+^bŊo.hɒ%Dtgs= !([.袟sέj͛}oFFFV^}Ο?hhhٲeOK.|Yf}{+-rJ$IR[-r<׮];gΜ{ _АJ |۽~:y䑅 ~?~>WJMLLuRnذadddr.{^W=O)᜛3 \XgOƸFa 5ޛr] L=(1KIq:nj_})##C|CΈb|ŏhr0޶T*HD ޮi#ڴiӆ &_4Ep3xM'V]\:E;'}8.uNۿ=DmB!H͇Xfܕ ?ʶf6:m6E:]gVy#Ʀ-& Bj h^ ,dZ댈{fݮ}vhd)7aJά dIY|cFav&)XaBf *jVeH{7d\$ES;7UE"M'$O}OQlM OkLڥ}ˢAMzNݾ{bvH2$$;m㒍|B (VqÆsn)Q}Txn'?: R$~|HA\N\3P;P?km λgݨ9G]RQQ,^M:&^^$c fzRT5ibL}VLkNt'jfjM|^/ͯotDL5(jm'b4F(Ue`FQ.)ëZ[-:@喯_&_y@rAyYgPK0ubBa F(|{"L)nBpyS;r9 qk =M w.9 ^%LrYB)%++G'f|/gH.L_?0gbU*x}ø`B^* aGK~ԖaEވ۶oGއZ;2*Dt`Ǔ'aGÔ ~kԚ9iWӿ/OCM< m>%ڦ s)wvh8*gpAnb<}lFAr;(%=Oy51CX9ž}v8&rs젮ᣎomb Q1et*[~!Ϙ&]1 )Ϲ_kd`6F͔@Psڅ53rQ_P웺Fp# كё;b;(4O_9җȵ8rmO^CbCq^t֝P0*LzƆNeS0\J1µu"Z@]v*Tr5^;\DS8Cx9ImױZGLOV)-O.53ދ*WrGsϟ; Dy27n.@O%ڦaX[lVn۩Rz֘P{1W<#"!73[ǡ.n+ ЦnÅJoC &|XjMnݨ}r[$A۔TůރaQ1 Z0bE:4x?g׸Mx /Dua us80QBDS~1dY']I^&'JRRnPWHDR)-׃wkQfl1jc^8 R%$?wbR9JM8#II+9[A1h}mc6%O)Y/::+v_[f]~VuOnySPMtqS9'׿*( u"S!cv,Ӎ)SRf&pt N+]O7W/b|-d@}]ejK補A/ 55KV)pLPN1$oӱOrJHTEq)%#`J%2|"yxkyo!mCʹb@o) C{.jh5LY6~\P.ċh('WDnBh泂 ZH MǯQokfijvj{~vCY#}A)DMka +gYSpٲe=P^K}QE-_|k֬ygŊx 5l_j2X;5UƩ=n};zwWM6fTh [\[dvn pjָv>^pȏ pLz_lJRH)l8p"eADJBJRB()$)II%) %Ed(ӦG_Y ;Znv3|=i(w@-GknNS.xRs-I-<c ޓf2:Ffrʭ snsnjڟ&讍:ImQ嵾 V8Ȗ0,h7p#0~֍abE$ A²!ܬڏ32]{Ʀy|8~d9e']P'{e˴tϜr#slGO #x~6hzJ,⸍:e*Vc?:J{<r?afC /EC ɭ?HBQjɷ7XӰ_IDATpsN VYXihG_XC馛N;XlYZ5|_ꪫ;xO~?i UP^Ooƿs;ƫcAy.=H՚Aȅ*nEY"xy. d ͋Kqc$?-sk 9 (%{%uz4y{D#όDNؐ57lև$|_qCמeA_8$5qy+GP|-b2 } ) _QW!D563On/~>"_2Uhg p<snܝ'^K XDG_Z92?5}_H_/<}6vC?_}P8ҩWҧ[~KInj%+\?#?Ǽ>ة\{$ m_z% @aξR W`S1(s߾$wi~P&4}6(rek`gI]]q9ElATŲo:{ MA \i>o'M'߉d<l2j;U˅L}b=lߧVX'gAqcz1w_I)i>҃A%Z_QER(pߩO-Z4% ̚k#m`3ְLy=q"b-ٓ_z}WJ z"\xL]@]^)9RrbbDIQ:9<#g?yU{K /?uj<8[=J@:ݜ2BtBESq2ksW 7o/~8wO}Ss嵟zOsg4ף5 w0`(;sCdގ VN' Dow奶H3HʄJpd""J$a-$^RP$({A[%4_Ff@XZo~g7΍#O`3S56Y门ãǙMe8n.嵙n 1J5j$#R%/EbiҝA@85 WpVg@,i>*h%2AHP\ʞzh]aG~)Vc|9fۖO)|D OE14#IdJ\u\Vn7Ts:P/]=tpד8H@ȶ/@=O݄$k׼/*d}+*q#|DAJEQWc׉>T=3ĭ+( \E P${zqϓxn@ ~YoX7WC cLkf tg C]"{gjad=S1p vÝg}xϽ "FO~p'2G ?_)tl(|i?|?YA:' )n~j J?<{8s|) ض|T??kٳ{ =Z_B@"x Ό5G▷!z_z0Rқg22=m}E$x7ڙ:߽; MV!,=}>{u쫸i~'P%D N??<PfR#l1S'}j+ahmAFj3u%_[3} !V¯㩭3u>e1TXam|?']y%8m!<;R?ً Ɨ߀)!H ?O`='BK`1/9>Z3wCfS,ǫqOO/nڴi҇6mZpn.tymXhѲezSN9^'#{Gy$\fGy޻qеɠ͛75y_m\rݺu{M @wy=W3=;sttt/!Ĝ9sO;ITzѭ+WW\qu-_|5p 7om4rW_ `/m a^e˖./tymo|pppth ]?vϱw~.]K F {wk]tž?..b_C׺袋} NmIENDB`fdroidserver-1.0.9/tests/repo/org.videolan.vlc/en-US/sevenInchScreenshots/screenshot3.png0000664000175000017500000045521613243530567031473 0ustar hanshans00000000000000PNG  IHDR6WsBITO IDATxweU;fXqOuʁ*T$I Dk]#Wt}۾ҦHEQUEtrgs?vT~->u^k5J5cE """"饗p8{ {a<3zX/;_K.;t˭/|`^&"""ϝG0juժU_iv]w!^s;/YxQhiuY]tȈp 7|B8pw7mԘs_p[nm?t޽{/׿,k[?[ҙLcQ,k9$IDNLL|;yOf˖-[n`mݺu̓xpmq~oc~>Ѹx7ί{>@&10woBs='.]G9ַ~_ַHb֭kmm{SjZoo矿k.`۷_pDDDDq˗{_Z1111H#$lx5~S;@ܷs2 Ơ{v0;UKD@=Ï6B,hY΅D]v('CzGDD@&I/  @^|+ v+)ӇoU+:YI<  EG#[ջŠk=lyZNfc:X zdJ G6 "LqMJx ~ }6@/;9tzfd._~Edz:F_ѧN jtˏ_֍AՆF}2 =Aar@'GګZ `9N^ W8&`CJ>8o`Q( ~:a@J[w. {~ hhCp]/06oWGwe(>Bu `y`{V_ɋ, /( >?nHd@G 4# =""d>Z3@_V$.s 9g~~Ǖǘub@-$#@%PI2yoL@D ݥΤ4'!>~LωWFq,3AhoQ<9t|d͉ zDDDH#"""^'D:C~GDDDg Jt zDDDğ7\.`x zDDDH#"""^'D:!􈈈 ǼmQu^DDӄ0y'!ȇK(aiWP\^'Z\A RaP۔RAg`F$茱{СCoMGd2y 7xGB?j/X~9!P(g?{ݫRK.Rj߾}c=kD,몫J$hƝw9::tTgg祗^M?|zÆ 7nB4pjz-qEAP(ի-z-ַ8NP(˻vS75⡇VBq',YlRP(A|Oݢׂ뮻.ņuuu[Zo|^pms!@6UJ\ _|qk׮]bI2LTJ5:H)ţ\K~18qqP'!Ԃ^i3ZȂ pl oԾtQgb$E f̢ά3jL٩B@RbMhED@ɐLUǴl)D<Λ6[PfebD J隦(%05JHRG$QBJێ!4~ҫ%L&VhZ0Wg*l- 7 Z vB ۯ!N0 !n,BD؇>;s~?OApRJ7oҒH$MӬe9ð_XB:q+(v6t8]-'O=}T4LJ;34 0McJI8⚦ *@sW(:SV |$Gm.4UCcTpfQF0F9cRBLW0  4Jsl  Veib!!hXC2]GJgbl N y,cRҚjXPҁPQFlD)$.o[ e{G:o KH))gu8R!󆸟3 7% ˲Z x≥K^}BPO.:ni*3?p#/B%8k631:u h*Q@E$*B(EI)׭XAnW;smzS$T~EV݅5\%`œTt䑛#WQG# H0JSaAwv,D@쫆sjh eLʴm!%2Ԫ!2~ϺN }gj*߲toNEzPPBTzVAXÿ) H$(pu;J)QvO+eܠ!ux<>00k׮d2h"4ժJF|;iS8 {j朗x<kkk۶m;NX`ɜݔRu]_4oe^vNBêN: QQ1D !i+[mJ>e+3S M$S:Q޵o|*?笻tמiPF.͚-{PG v&-i1x]O6p*_X 4S˵x>7,Zuۋi;aښ;:r-͏lW23΢JlC  Twto\g-nP$-杍nL'PDqlfjr}b.[=&>Y3frb1ﺆ2&c'} @4z h|'<F>0`x ~4 @Bu#ȣ @Ց*'W HC P$9#jRR)R@ΩM#0Ie_Cwߴ{``J nMϺu"4Div< %$UV*..倎f2at耨$DQJh!$w$R*~="TIE)eR @6EW@ @J$@!BD/ tgdd"hVVoX,f6!1F)mnnnH o_r!d>8]XzRu7JS / WIY;aL5:M53.øoOon8έ[-LLG/+ϙkSդuw 3x=H=$Fj$611y<ɕ*CCe-_wa FP5bǵZ)+gYK-wsI,nC=d}Vz _. @Xldu&fT#I*V 5_:sbgl- C׈Nmș EPJ0¾diLMmhI'bɱZl1M|%K2wS !K!)5'8Rx4PE(V,5jjhVDerKn0CT=+6WyC\!Gz)|Ҳ, 05A8  \hߖ93?:40]=PEp(#.E@H(P@$JNQ"<8¶]kןbdB!f2|e\J@Mu׫I_j0kkaR7DD'&5MfRSgPwZE4 $H "%"A#+_ti=9575STjhqq-gqڕU(D\<(i0z)iFf*5%9[v{% PTC8 %$Z;3jn8#z8- ((.xRrf0P"A&% E k'HPF 1Mca6RO7MsӦM1ƘR4MDtgvvm^_:p\|/r;HTQ,c{1o߾aJikk+OF/СC=X<O&xܶm45MR;pᛮ.^-O@ޔMV rLŭ;²TSSiZck=XV+}-?g Պcj 0\שV+d)K@MR??ff-NLX&ô4M!*)}OA}tp+U{EG|z\7&f|OMΕ4;N5LO^\ P]LBE(DN W B(:`(mB&] IDATV*xZ[hߊ>l9%z&gn()8BFIud #~.gwOBGʑ*P % 8O0 ^ٷePBH%%Q"H((" q2:b[ݜ00B) ҩƙJ밴۩=?$*V 5 ,d2~8uԒTDg,ôuFCs٩39Z<֚z % y[_砭=~$ݭB (,&Q,x%0 ȩ8>c(DP7'Pɗ*===޶m[Cƕ 2̶m]4ءCO~R,9 GÏG}hh{ yٕRjRt7fnf*wڊ*6\C4b'֪t'SسHplmO0ܼ^n涞Sn;087]܏n$ZP#B4a4]~jO8}إLN|,[dQP>ws䙧_\#@*e i!jֽL7"Z4 ܽוpZz&Lc\e@ ?`(:%0넷?Y1HF Q3ΐ鳣%\KKtmдcq*M FM\h#ڔ*ӰCwrﶝ7;x'ԃs+,k՗??{1ƹ#!%F Q PU-w4Bu6>Leg$U[cKz5+i´ d.V} .\ÊYnR,k|lδ. \182bo_R-YFZP-^{ /57w34; pC3Q li=S#Sv=42jocbᚐ(ϭ^ե '$]m[C[uEav:6[Dr޼:dg2d/kjRa0M- HAPQ+h[zWʦf)xo{ Ht4 6<5 xrhz/U:3=x=0(lRR &tu"$Cԙ^z]1hB0DbH =g"BƎ,p *J ETP)P 9U0 -M߻#c12OǙN!Tj=шIh*E+HO:57zB\b9TÒ}] U(ND@#SEP2YZ-tJ@SHÐ "RR"A" 84;wd2ǥH)O;4D, a /~kjjbغupbѲPF4HxH$(7|/ mgggO)jd4.bVٳgӦMm^јX,i'WJRL&NcX[[[ 9p8U}l3m3mǍ\FQaFqLlaCgR]0 b]ό-V@b]˗-T<ٮEn%b\)y;G <͇ML,'S3mlRhi2JӘ=gN˻( fVNwG|jҝQ}A5}|nió"p9@@1 (7I{t׸i[-鎥kp*,W"(eya  !(oÝ]C?{Gm&܀hg;ڳ~{̨ @(Bƀ)@8ryy!@[P9da@J睎^qgf'bV[(tvBR(iE@V k9ռt݆xbU4Mfi6'H/(p=F4shhX./޻{3de!<ԯ>|C_nXCGdTD@0T*A R+.Q0' T \m^-t}2xz#Z@HG:͔@ܶb0[[#F̲S ŨB$@uJ1YM?XjM暭uxGi# #Zãۓ'\ʶR+i2)[& #,l %@9T҇J d{%JK׌!Pb4`o*[N:nJ$/c <{P@qAR6d< eر[(IRJ*-Mm D6Q,^_nQwʅ: [t"Y#*G)&ZB&HD*D HU< O+J$Ԫ2J!ATRI%2B%`xgffbؼ% Bd2~C |>O?d2I)>yfuu]/}颋.[5Mk1p+o~X,vZMx}c?7暛o9˽=gꫯ>/^ٝTΞ[$0By`TWo@GXȧCғWݥ̔)jФ$xWJC_Vرh1iWJU5{`fCR /͕JՁ:v4e||{:DJy*Jd3e`dϦI+FlbxnjV7IZźZ6M֭li*̴֦cXGGZKGS |b=TBN[f[v~POoO4]|Nԛ,&[ t1[@ OO;ޟQys囷|#v]ygCn(IVY;5ݢtd;V6ZBPi(L׸5eФAŭi[yUo6_6Lȡa6ByQ ƧWR 0TV׈[UԿw%31197ֱ"b2F|j]r\d}[k]yeA^|t8=q1PP !>gS%(; Hꄺ.J) r$|s (, c1yx̮8cʺ_ %`hƬ)"F(0%\_O\kZC]DK')MJ7ߒL::gԷZug'0-A@eKӕ0PPSҫ1 !FwBzK[zsuYu}3EV! s=V\ SK 24t<6Sɀ2J1H HAi$DubL>xц]Z~TnW=i%Vrla!3]W@% &(vRG2dRbkx,R*uBB8A@ 5Zڶ=!I\pc=%ggg7oޜd(1]gff.҉;v@RYhѵ^]738G/~qu-YD_mmm-Z`XV)mtZ}iv7|aT*6,J<̙g)k>~K_ZxΞ&AL_n{G[5l Pt@wם f[cuWb{qEG?=YԜE]M۷x{/_bV#@ BXyR[9en/]|3gLlzbtZRnzfxݕ$dtxL3yS"9Ҏ-uJ^5Q 2m6_)Y)wޑȥT5yբ>L>nۍ2rv9@ʰ8SV]͕Z~f]q]~)kߞgmjih yي9[q#ԧc Vuwl;@%!T)0@TŠ==5<$K'SIJ,u੤^KlS;>Bs-V{MZc"j|)(W݆\s=fg߁g0DK7VZWj ɮ;{w, \) d(E(AJT!@P RP)$@!J$}B9S#QylgNͯfBZ8IB9<8Ԓ肾F) Ƒ0F9 &%'4| "c\#La~rJoX53=ͥж^v6gjrZ'ej-;MugZHR2T Jhi&uF| Ո&]*(qFB%LN΃P+^1=1e&@G)J-OL*\ն-J`TiL74Fÿٱwpl*a뚤"\:ޞ*ViîjxR+ T:}Jy/^s,$9"ѢL:4| Q KŁjH' eaRTTHT(PB/ kjjO6RrΟ|jpn4!~k_3MC)9g>#4H$RG۷o[;::,Y2222>>Ų֭[{w۶J\׵m\.{0,sǎ~ z,K###SgӦM6mcc`(5<^ӥ\ކLp77< M&3 A8t}i}ekٛ {\Ӟ{<9M^߽#^S={zw3Ք V37Neaf;Uj^rZٟQ~A''F:yxl=^{ NMUF;mv c֋wjqxiRm=jIbkӢFKs/׹=ll)-٤rUu3e’'2~ϛg>t%mZ>oglJLx϶-٘9G34XQNUN)+*C*5%i'F~;6m}sf =bA@f[Ua2[L %3nt ]Mc978= ȵO5fku@\q\N]"8o p@F9Adf$sj14JPK6A,f⩒ׅO{~P拐AtY1F7ݨcERˌEMˉ:Uiv_"_ tB-#%(9vz :-@JcCCC?|<rbŊBHu10>Tch{{`gggCLFc=~0jD"QVO?tDlnnfb1BHggg.RÍ ޘ0 ۻbҖ0 fzK)ϧ(2LV{9m*ߣx;'Lႃޜsfh^@8ihoY;PTҩDѣ/ Pjʱ?<56?<{{gutmӐَް씊?ox=rlk;m*ss #&j-O9:. SaP&Y|q98ؽov|j+?Ouꚩ3{˚ֽkz~#fӕ y3Q_>7,N$ Qp@=7)NRJrݠ W CH ( ?4ʒ:gCΙYT%4HB<6`0zyn6jOo-a6,^Ƙ1l& ,BTU*+w7xq"Uů2"9ĎDhmb"T*qHJ).T " LaS 4 T))56 tl&WO8T+H,ԃsJWx`\0,Ed}cx{\-A#Cyֹ?[ܻzpqwUMFơĝaPS"`Y37Ҕ(5"3 ^zr6'4ER+WA. +sDq `FA${FU鹋ʥ̌Ǝvć,1zCpdLGR $FLrÏϔɝ92t` 5XH! 03PBH+l`4:hHcjH04aD#0B o\`Wqu8^\\gq7 yeAyJeYR,ԙy䑯|P(H) !_U'zB0\HYz1:6IIfOݴwGSIMf|>oOUY_ O]lZk_~j8^in'ym.tC$N8Gmwep߼1Ź *9` I)YE:a:3ǖ !L(0qmq? 4RqιG Ŧs|$U2B3 Rh3[(%8^XvX|Dlt0Lx'Tz/<ORQ@ʔ}wkQ,Dآ9Ǝ1-l"T'T TV)LQT۽`xȶ q%hM5 0ȫX.2Sr<vyr9/tI 9(B\fg8J&5CÈkk't'I(# V* 05M#=5\߸{YE6o IDATZyz[.TZKpi 4HHO 40ѠysQ zr{׻{WWW~aÇǜ{fYvԩo_׵Zя~W~WƐwe~ٳgBB`p̙}ollxQ=Cryaa4={4;. 'N8t˗kXJ?[o?gϞR/}}?".]u 6rLYF-TkI?8 .qoEkQ2v C'IH#s+<7Uٳw}[y.6;+W NDH1q;*3ns,Q,5]#,W΃"پ}kk+"K)LfKj=+qK%#% .43ɩ矼tnzXĭ7(=s*~/*L?A=YHA c%JI˙ĔI259T &QV"PJ#Rcr-@BHIyF^*U (K'+%f3Mr1A/_Fñl5 XMg/X9w9M?2 Da͍Q\8wqtxtw??g0YQ9m.q@CAJ} P)-WBLHϕ b:I# % :5h cr!rZԨB40 SP"@I$[|ɥ%29 %gCKe,QJTFKKz^RZ5}akRjh L$Bp"Cwy5>KSqq݋9$c˜K~FQIؑR)ù(Ǽ>RW%Db.&DKBJkdbh/5{a !F+RTya%l:mYFRH hr^W1!q3IGYFbK:4z /t{ݴXA0IPT뫳ik @ͼDD2]ZEH܂x S4R6$敀kƧ>8ydTw/b.JRZ-B?$I7| 899я~3p8?Is, .o_Z6`TJO?=99麮/~g۔Rkkk _ŋbj]_l>{,r'N\-)28zkGIGY#heU[]ۡlL-Q3RG<\a/tnbqb([7=[}sǭn xF{`2Yh1OR=Q7yj3t)aN2&mV1 nAEFVL!`"v0i !iYY*Jirz^,~Pt衽 Yv:}/><-_?wpWzFQ°7?_D؉gF? H9E<7*v$2\(!X# @@kcSc%Afgx`fmmԥ[3|d|!39,eTt7W10RtcPJIƠ3lAW2pWVҰ9ӍFRmmݽû'GQFq=ueW,~nP52nm!1Uv tch"y'uY (S1*HLDQI8$L(fW(SOؖW*=7=i[! U<}ga01FKm4;=~ ӔK$26hPvY "mAQ,-) PӚ`$Оm1 VrggbiimۭV+>|:ki4O=˘~>N9-M,fgg;NZ˥sss0Ǖ՛on}P(\wukkkrmr0}sۿt /!(W;)7 ޝc陜Q K b)[q():LM\ R0gSs?'W:hD=G6޺xB%ʕNa>JC Xpvr *r~J2צˣ` .uzEt/uBPgѮ{nݷʻ|r^- i0K=#nKeRbɅ<.?XH".bʶs=sg)s"P )(!kg\)) Q8{mFfIPMd}3L0?,k4CF Jts"Q9L/LZ);p'V/|nx-_]5TeJ* 'Zk3`A0G(&FD 527,w+BFQL(%a"e$\pU*cfqJ,:=QvCVNQ%GJR 6RT"Iq\:3Lz jصkp\V 맟׃I6ڍg?op;,--=vٳg{o}bb/}cr\g?~gn1z3ȯ]ժ8Ia.1UFs(M!YtOͭ:;Y{Vg˷\w}{F9 u(ӪTOsg/mǐ7#SAg&Ο@ 0GGag8TlhF5D⮣L2 k}l4j&tے bzHsv(>v1e_*gwp uT F)ԒzˍxnfE՜a{.=h\xFs79Q_Di{~VO/T5*ۭBP[ɉJ`EbZ` (BTJ? 8ɔIDRSa%l(9vo6ðG4ΤJMS9H%ЫRtwzDy*M's/}Q+ $hP # &,G_7L Ȯb {n3:At-X!0q]_j]g4xQ&ӥ:瘽#R`(5X"tr4t&2IhYJR(Ipt{q;ԣYXcLQD.HYskkΝTKcYY.v1"saJ#  FŃ0Gqp bz>tqnV=7ZU%$&%C핦OmR21R !H`?*X,~SZiƑ#GΝ;w1Rn7I?MO~sBb޽G>0(2MsffX,+ѨZvq͍1񥥥Oǎ<8 n}sJ!!$ FDZ{\cG;'fLenV,Ü.vc±{q?ѫsaoIKS!I@29A.G&S)G7ֺK ӛ[{G#GR$ a:9Ja\eD07=|{$nX˗rlV¥ *ogb%]Ò2k"J3cBkKTDiRM(FRC HY[wȁK0 ʥ)aZc`ɲhcEʔm~;$UJ( qZ~8b%wܵɩN"4W+o\URJ@kiZB13=Myb'YF)-luİ h4-ۀ064vip-A^bER ;:,׷W6kSىvOD9BNQ:TbLDqۢ`tz-VDZ sFh`b!)4BB!ZcR'ZC&DF"3VkV[^4L|YU[+V9hP?tB1VQc$,jR֡RHZa쟞Nm!4N7lv{}\7oNUa=u7{E5A_ڰ._KvC[ eC}2,E)hsnΦṈ 4EO@)h^4XiF2reR2=SW_z\EkvifW\^vQ8RZNN''B 5M*,a1Z]o^(Jnrq`QТt#X8 y fؗ$!@ˋ!$$1F Hc'$J@%c᫆71No97pѣGY8Rv^ @v({>яՇaǶmqؿ`0{VWW}ٱlN}OJ}s{n!X$` |C:۶Fј˿[ouUWWĠqp-NcNT`6as|cԷ1tA68`=f`Ap ř0k'kAgA7cKf A4Sl矾x`(c6Z!Bd2Cu08az53eSۍsK5oM77.t/\\ħfgFM֡@Z'YTct+HbFV@J”R!a~{y0P"M٩bg{ow8a3(羊J!& 3P Eގ@k6pb+'~[n7n'pI޴z$p-qd7{`˜~o0863V+%-I0^8~C\Ap$Y1c!<@`4 5b 4&7SY7 ¥kjPQl6,J\ooz/>sW=sry5{-:Cf-T`9 $'Vk Z РM@CRPNtF*#XH+pqkkp(@)sWi[[[Nj8ws>77vh>Wkk׮o~w//$I2;ڵo;񎱡XK=}#KzN+2۶_V{D$Vhn7O@M+@ lmsB5]0D~KLrٟ\;mPGx;/<3]2`9sk"/_ت.R^nb>W5CNsʅB=$foOFn;WؒJKɰ&X~y-0NY^¹T(^?P 1%33 YgCn4Լ9UoganxGڽ&I郳 s@>q|Dv;_Afa21 ϱ&V+~;i0YbJFx,9^i!DTdH+$X6[% 2LZ6Y%P@j- R5RZcDR &a>rspd~k_{<ԙ$jDljuW[}!:# * F(rel]z]ف]G*ezQ'1T4MV&2@pũXI@9WBLp!iF!nA1 ^
I2"TyL`Aٳ)*弩d!N)#k r҄5{aft|+l@`j~~ Z?ctⅵSR$'†peP8:yt/G*OM[*j;7UzXJ~?|᠇s91˖֛nWEYDc?_ (eh@h J \#4DUa:q,.+GЯ}Ccs>BpС\.7VBB9hպk>[[x//9rdLjWB·!fggq'#8|u]7>eG()?OL Ybbr JӔ^7J[6L)V꼉E'82Oa(eF70CA-=~ִ,ƈivϳXy<Y0ZnjY*8j  IB" b./K-2lS{H`BX# 0"1f˥QhD8ln6:텪:5] Z @Oxym+ky?x\ ?/ IDATSNa|+xȦ IFþcI´Da^YS!eJIIsa` AfB׫f}"oc7[@k$CiXX L""^o۳{NJ:UD66*6|t&6M%$eLoy}24[Xi3zn/oY[˜p.21Ncd Zmy꩙c4nAw)se25 Dv_wB,)`t\ >r-"b3 J+'hf')c,YmTu{A0=U+կ Ӣ StW?ءkJ9o,wܒ.NƖ!S4c6ͥkVLL7!1C㠷+WWewxw) ZeP t;Vyog떅T~'N2S'OLLOr.^ZD)Q0W6"Z9dfrf]NHu%09,W9[[4NVq%V\yJ!6WWq@')rίMqu':Nh;θ }FT?H)Md<Θ~J1f<WKdC1*RPJ1Y/7ۃ(j6&V!B F gb 2!IgG]~R FalyebřpYVg{) P(gX/TI,ސr(ltD'Bk.(.-LvuŢyΠݓ%!EYfep-&\j *Vv˵-Zˌ1 .M>ۘ_}ZjɸbgI]l# X<兩'fVG?Ԩ<1bXh0Brްi+c/c4c@#!͈if&QFR6 d0* z$@8Hk5X Ra;v#4ylyg$fhHHVT]g^r'!}]Xi_Y|{- qex)SJ !qزTjsHʴlbb0J+5vg5I$S;p&5̰:I#?B0bL$b`admFƘʌ4"%Y6&*Y KABSi$Cd@LPK7?5qaeChnK:vnn>.I0OM$0آ,gdžAP=j6JW^:q7ҩR2(i m.4FK5RGR#0P՘j˯BJ@1c+QrW<}|Mgof\e<ƊHbda4lY=n8ӫkC,NWYjnֈRZ*B0:zi6qM w| ab4Wʏ8-|' @k-RLV V*=Pt@`L1QD%K>*1msv=>\^_m= ? A MDcˉ铇wφ]wOߟ/j9oz݈" UǑ3(& )0423QHH!MӶ-Od(VfTsV)Ots0"vhH#Deػa|f`FTr@bq~[~R+X!DHd2ek#ŏ?B={l"!{b;tǝ`p,u~)dEi"22MyE0"DcH*-BJKR[%dJ*ի1teJq9/ Awxmw~g&H*K1JI)1 d0Hi*aŔWɗ d*FVikrnʭ\{ GzGy#lfʶ^,EZ1) 3TQLZ(WvUk"h@1`DZa$E"Bh{sǾ+XQe債4;Rq X9:a{}1%0!ҭXm46<3hZh3J'nɳ- 2@4MAZc5 BHi(VᐨbP (3Sz%,^;(W ,<~R6: RJZUĝ_S̯sy}ͯ?zd+q&H!@cEk1QJ !LDJiikyTLS;|yySˉ2%Wo Z-)VW0h5_}WWfBL΋H\d1q2 8y:Xjn(傫N(NbTגn+.*tv .55aОm0EJ9/Hg)/.Zk$D)Rsǎ ?z8'ˎYq%Q0J/n=M;~m?֩xWJ#DkxqubN88"lll`RU ә<Ӡmfi]0JEi(cfgӜ[1[cyw j,8Z{qqmZ|h)^߼1JFgZi >*N`ދ?%{uW5( IaYfrBT";؜E:w~Ͼ1b4R3d̤0 5wꢗ,2 L:5s5Ov:s7X0PE@b^>dh Ɛ 4t"+|_hnP1̜qV(\\ssRCBph`0(qe\;off~곟<,qB2o¡oޜk+&SO֫pr_X)9U!UzU!,. Qms^8 zw!"Xd. y˳nTh1jc;&ygR}M>1nOt`yf(hR +Uln87^[rn~ڨl,RىZ;РC{ku4;O~aOCV>əٹ[[GrSd!Ox'߼:LިV*՘G> <#4>}lޚY +Qީc?q\O:BYL"8~Z6ڠZ J]4IErzmXɌogXnC(2>GH1b:U?o:=ܼz>Ov x`6F 9wlqԑWd5FGڳuՕyX7PY{ޙ"o.]>=HKy}32+p7D:Xx‹>~V[I lah FxҦܦnJPZCcri{_C:1Bj?iԺKO1E==J:2nU iZY^@{BƑViudd~ȑoWMU*%cHtZZc:o[pE3CT&BL#-9pYiFYn)b~;[ɛW.U>^ H˲R*aw AH竜qb-Ll= `B8/g#I|牿xߧK'GYQo,/ߺquj,7~=O=vߌRSkMךӵ8jԮ;[18s[$*rO(Eb6gqX- uZv'G͵fJrf+Wwn@B:dXϝ?9!#I6  wz.fʟ{LHY}⩇OU귟{Ƣ|b3'unǣ?>pxI yF֖S'OE;zKSr58;2Ae2G9'*9猵t_Ms9fdzX C! _.\q1(jBƬ\!紽JSpMZ) ƍz!_8GYg_l+:@D63}vsc>鯜 xɸ}d@ d |~ޟ>ZxaGW/0RR% Axj~^of>t+FmkcgdZsJ.;];M-U]~5h\nfNK&a55nעh7hx=a8KYd:sqo~?oF6|_zgo_ܒfÌn\[2̾gZU1j{\ܕ b7cNH#m˳oFuj}sP~C/ ,V(6PuBFʡaIG⅓[xe/sЀ IDAT[m2m?r+`<0j~l! {^{`'iM:)[ 66Ƒ]QPhcLmkqRfg/fn-\SYrMD\Kn4@dtv=QQ%m6 [󍅥viFjd({3Y:F/}cS- 7fNRC'G=5֚lw_wf'fȉ#3͆=2n^G̣Zz;J,fj=RidTf#FD$e+-zss󎧞g_oyFVA"rp`ߓb |_S9#P:'}ۗΑs@^*ghdׅ(h\X!8\=w \2xpZY=yhkxCO>>sy Wj[=5uWWhv6Xmqz\\oww>?ӜREԠ;HGE+,@%nH pnpYPg#ppeh3>ןhJD'&qhBޞVD?(sg= tMV㨢V`j=UAw{TC 37zY:"-H1ݬֻvkWsso\ FI2`P);?^}y/\\?_:E/~ۯc5 OwkG_fE~9uy0aìU󟿔n#-:v?Hl\6-Rrevk扃3)CoJ3;-AE8 bC -%w͵:) ".-r$15oG9m7z߯>|{;_^ wT{.Y@cjȘ5spZ1/16CZ%_۞kV_ҏBBY"@9#✱ sib<7۔2p~GBHhq>Y $NTjZV9Y2_Fkn9s7[e8R+W탸x\ov$),gEETON֪9Gzt*dzFwgyן=r tP' Ymj,,ssnWHδA)9 8췺@MwMt9 JaN6#G9昛l2)}ItsϾp^>^jy9V嵱VEA:8s:f[UcW6/]\~'ĴE2|:R1yq{(]%oxmF'.N`[ºd3'O6Fv{n^+It9M^=lc YOMgbS:g;=XIV0@/Y%p ~`篖׾r|Yq 8@ !Oys?s?N 2*e~ {z?fq쏊kWgaZ& :#@{>k=Gjiݞ4f2]dE?h-0wwzò;RD-~<+50!Agw7rGE#08dniwkbexR)q}dXm{V$ ݅>pzPX/Gըz_/cJE+˴(`av7d#]:ԙS{ ȫ“Rh4VJ5+4YFI 9LaBXJZ_}g_X LCBd֪IFz0d"ȵ7&O=_B;G 8fmC L+bn%}#zrXKݧ;I9(+g ':j/LeNe}V*OR cJ\\\ٞiͼ㩧W{q񳏾=/O> FUdƸm.ハu_)c5X ]dK[Y^ "bpd!L\a@tj$@wۂ0,D4`鎏7fy`%^I PF+V11t:/nt b0EzLMcc@,2kh(vQoұ/*!Tp_c)݃Ywš Ɉ݁Y LoOt{=CO_N=_ғTM\2ifbϻU~[V!R}~L3 O?eӞvSa=@2R Ba@ 0U-]wNkD fIZ5mPD  "Á/@b7Ed?Dٯov <"I@Y͵\*-̓]R+$81'C9G(j'so[ ;oEy+흶^mV #cGRp,gLn|/M( L82Io>9n:GgqІƼΑ2Gd7NDDd|rgLz4@ƘlT-ywɇUY J{Hn1J LMD>.%0+֧-83o" j\JY=O `-gվ_?FG̡ǃ_~9$\2 *%<ɳ6DLG La= I#M{:z;;u+GPq5fcĀnt]|{8Ҳ¢J`+c0SfI"bިKCejUAɉ@[ 눤;O{>qqo{4(C{\"hV+S3qƇN%c]SDҲ8]~ 8JtY eKB)DҁŤ??~k7wDoo~PNRޓ|G^97 *[b_95te_?m5;O<>Rb# 1@ 4֚{u3\&'{CCac33'`=GJ;8IrO/$<7 !jqTq8s $xgY>٪V4 pĴUD!4۽N?u2׫LU#-\- )Չ!"nhJG8+[DkYX5tnmSV7!3SM!"mLWo\pY֗ө\on(szOvDFˎ-}?'H[ms2^:#VnovLzmTk 0*sܛ;4g?֭7bG9UaETfkkŜ!yHꦴ>қcܸ>̹9:Q0܅h,! v#moJ)}R(M^j/}@M^m/ꁺ~шցqdu7^;7D$, GSV8j% zX;nPloӬ @0JDzC4*2M7mͷ=Qs^frٰրN2y!tI!97o,SWmofSO'+Wʒ8#jd8*CKQciɃٟܺ'V[+;~km+q]^n.1e}tZņY;g4s`PY˅A$YL /-TZzFαS~+#q&,89R J߶( Z8dViZ]N0gɴ Q%xX$Uk 3C't$@>uڒ9܈Rr7Z" H3(\TBO01 !"0ɘ Y3/6yA f0Tlŭ Ի~vk&^yΦ`CR D<]tH=ԄLG*#2n6] kϭ ÇLsdG}y~Tؽ\`3-:tQd;SBJisg,>"ȑDHw ʽ{io^o|_w/{9wτPcxubO yW8ϓ,0q;]qݞTf; lyN!deZ60 *}TJ( M)ӣ\Q'λ8h%Ϧg˲, #ag8MJ]>rt;+~=r [z~G]N4p8 *+_:ZsQoTp~gS.A+bw鸔;م7.ԃsgDƏ>oz4,<-:Fӳtپ9(^~$4[9\]O)ÚMSLz>\jxvEvӯ58ڟ{׿GQ 9gR "i'ţ=O:s@q M3|걃;}g T*Sm? {7s#,N6f87c PtgWIkCikiΨ(x\pp9}241M. R[m N̴#5sBP"ѐ 0EY5"c@z=f ,0|,dM6&"\H k1X"@O&2&ؼY eXg9u4;;[*"Q1  "(8l}RE~Dk}uOr&8CDB1'04Ȉ R+eUy1sUhs7v^9@ԻCǿ̷@`9q5LVh;fƋg_?u祃ua5|WVW^_z&z0bH:+QDd\lpry[=>=Gkj`:x}94Z.F0 E9e)Dr"Bd@h-$'h;4, /~~~Z/>䓓^vy?}"[,00@Aī…..>zj3|} WW"7v.gJmX6ݶ5՚cjy>bt:Eq}#\fKM|ˑ96۴W㹃E^g<_:uULJb -/_Zz sZmf>WiiDtYW吡Cɬù\v-F_zv݇ܩ[nܵ!INA=n֢hYTj4Ui cog3_ex;3#Yc49'=@qrj#K3QY(Gmf=jμG>vk7Wd Z3TaQfqP ]ZrF瑇wr2հN0%t؉4ZYg)3e $wU' &FȭU rRj\~zJ9*,z#p85d X@97U?.kIrF: !cvJEQVJkMK IDAT,KQ29:{JY> (Tz%o?\ jvjldy^p9dc(\I˗7#%,'0Ҡ0BbH4ָUPeA?u%{|m\4xAqlڹM Āq `b$& Sʊ"?կ/PJ~ٳgVk<sh<_reJ{"ؽw򞀳uqۀ~QrLi^:̑d^•9tܕ+lTø,s1`$zbfgw@&Piqi+Sn gY]Eēlg%<6=JZؾvukmu`u)d;rjo0:/_XGiƔ_qDcOm6\I}B0|RbQA Jy ^,{ ?.'=$ bN wE?_^YlNqBCd [ީC'رXyNLF2 9`~Gy$Xw92vsc{S%<ܲe!@!\~" g`eYdyc,1 YTj8|n@YQ~uo.@p AL=<9T tݎ"n #I`6I r6z#G2s;8['ȳ_Gi2ʔF0.q(GY@j_RH vM&/T!9rȥ7/ Ύ9PT ;q{M^!qiY#"GΒcBʫ 2øVWF×J3A&6͸X]_.D7nn&^_KEQ^{IKq|`i@Y {T=5cx8J@X,< *~k -"xFgٖCf(mRjNVw||?ۻj59 XS';jegc0leݔmV:;;Cˏ.?sל( ={j32S'zטAkM s }ds~'+; mkEPaRWI`YY 0Q+om=I۝?ݬGհYR^&+WˇP>4݈lnյ*Enq04j>;yZ zya'.22謓RsKι%p`i[mͧ;yC L^,ߺ8||C nOV^hm1no_s]^kmn(hOfgۂyOU9RzZWu.Z2~?ёCKZެ*ǥ3@h \(,b^7ZsGZ1ѿ8 gޛu]ހF7b'HQHm$DJeYGU]KURkSdO*UɏL&35UTRĞ؉%YlY%($@bzAg~׏UM2Ϲ@T, œ&OI(M m۶wtJŅ+#rQX6 D861|7&  qv& @ @v%H @>fB\!}Bzh$bN%j }t-9'3EMT+]lLjrGkDSPcmL+@׺P]-X%b'S-qObm۶,+^X Et:-+/{!d2l**ili($mž+ _p߾N)*:RԲjl#dvaVd橻+\g]D,;./}%:۶8#kk]7NLLИTWV+HuĶѱ gG |g" t[#|sGi•(Φeء SYi4REۢX*sljGds+\}݋>󜛟Kz ,Ֆ޻>|JQ PV9S-@YwlAGBV8P$A)OJ!- @˲<"P D 8OQK@CjhY3@Pm ?\?,x3-DRuNJ  ^)Ltt7Fc xj~R,;ՑG;R*;ڿcL];s.W]]ମrvBZ,nV وvx*% NuViǒRkOʪkD<ԞL/U2R2#]΅'k )xa 65W~;Z XEiIpKt)tJr#]ZCXl{3Hlnhh8hz~EU'0=-L:Q6Żv a%$h_O- 4!*qk8\k'JǑmѨ`-HGFbC\jt\P9̌XnoN?->3.,ّ.+6=.:;jHDffS'kyHS裷M#RGTj+_p#hQ%\d1De#! G"-ɸ)d+)#57Gʃ V(ތ2xGBܡR&3mnb|cScSI͏T*xuyv$BABslKN^竕%mµBh ibj&tb(%ǜ|TVV*,eRj\#e6qղR'U9W*?0;70?U488BXUF{  czV5AGDK/TTQ:H/r+ym[ SO={J4wExɊ`:&ҍ:pC=q ZC.D#`O}4RKy@T)| bHZi6+RK5y }@J.7_k99H@ͱh67>0 7Hjhtq~ apR qG -s S\A+(O:I̓@"2ՊWTH+,hT'ラړ-"lERŁG[n4%W݉RCd.h[RZ&,hH6ETRTdHC䟖6ZeSKBWs'?htT+^xE`pCWɍj6M>0_J7˼<;vl\)`܉PW?671၁[ܹO oG ~L['XV+y~3˿CZs"՞ NmqkΞ[շF&;q| ;fW0 nj0l,2vY}[w*h{zz_>; *J[[[F8.S7cL&oVԮ]?1=؁n*VljLRhtTwhl`nll9C\. ')ecc'DT(C\7Ԝ烲B wy^yxsKRe|76:k X+WKW`MDZkYP1_Paw6ָXӱ;[ʶ'Ojo+P(ǃoӧgϞݵkm\_QR+׮]R&IƑٲo>w W`#zX[Dd8~=_~ԠYɠ2̴L,> lێbHsԶǏ~ )&~=z ۶ms]äQ;ɓ'] [08[~(~|V eYsJ۶ rYu?jjjZXX,+KKJor{kƫ{%?O{{{W#uz={Q8N"XQ. #-z8/`cO5"ro/_/cǎ3g455E" e=į &ݻ. \"fmq^:33d9L&~顡T*;gΜy'-zx!*^xg BSSSO=ԫ088o?MMM######RʆT*uǏ>|_r㛔_sBwڵpݻwΝǏ%VJ755=C㯽O?S&''yX,p^{m'NҗfO>}=ݻW_]ZZFN\r} >|xtttffü֫hYV<)k"]paϞ====Ǐ_XX^z!3gvzĉbOLL|_\ZZD"R'Ntuu=CDtObB" BlADSOٶ=66{ر{,+9rdpppdd$ ܹ>ػwsqz{{-lkkK$t|8wŋկ2o``|T*;wn~~c=vرl6ONMMݻ̙3|zX7440 ֋۶m{7Ν;yEMNN2]\\|zJRӧ~!ɓ'oDٹgy&L=zRnHSS&%hD޵kK'ofP8r䈔ٳ/_noo뭷Į]?w={'MMMO>k~sR/c=fYV2BΝ;x`gggP8yd\޾}K}٩/}om@Y200pʕX,&rSO=ь JzMJ)SphhHk=11;v'tR\޵kožrB0??/7߼|RxRٽ{KOX\zٳ4XuʕW^y%wy矿tro_x1s/;wn߾}۷o_XX8{$1c̻otuu}Gp&=ӧ/\O_rP(6~C&'';::ܹsBGywޙ5Xuԩ^{gllP(\t驧:w=qlj?с:u[V>Jo K8055yd> .<]]]"VǏorS@ cǎ93==J.^o]v^kjjڿK;v ]]]J)ɓ'y0^zڵ;vg?JRGOr=s{w=uooyg_71ɜgU=h5744H)h4ݶm˗._ۻ噎9|P( +&''CPww7ٻwJg?77cXRuuu566rnnZ]vcoJ{>|x`` NG"!(U IDAT>|8JMNNBlBT"mX,> 'x/wX,jll îd Q[[[<gF:{ }lnn.D8Çmf:|RO3?~}7ڦmlltѣϟN:ED{]Ѩ<S ݲ/6667\}nncQf5 _ߟJ}v444Q4-JgϞRNLL\~ѣ[XXyDlhhp'Vs) '1 T.;;;7C(ZZZ㥗^H:} _|~#=ꫯ*xG}tjjjzzu]Vy_|<^xZ%X,ƌpϞ=Ba||i!+֡Pv M~]k-kC[Y8:gii̙3O?4KF`M-69sf߾}L1W0?Ök^|'Jkm۶R*%k'MTI۶_xᅯ~,&þfV|?Fv*=82.<ܓ`"s [;rtttiiisT*f``Ǐ?aB_+P=yq)/Ex;=c+;_ Q,D<|2 $R˃ML"kttt~~R<㼆9^ M{~֖ě=FDz[5J3g{,McLX F ^W~@ aJpz*ǟmQ I)p}` 0Xn?pisb]~S.cدuE b.b7V@XjpK&tcUgGWIY0O{j7 +@1??_*juE-eY 6ɛzM-{DWE 7g[2/{KܷW+~eimm:w׭)'G͡&ABKf6g5 n51YF$P?|^P˿IgNۂ-؂-؂_ll[} `  gA-SYq_zͮ~3!XRf Z~#^s%lwnzMz+`%AGD5W2uPVB6j7l֩T#8 92L6UJilv="JL&S5J%F0,-- !2\}!xX{Nsyʃ/|>9(6T*`n#TB iDfrd8YQ(tX|b&|Kc]Vk~R)ųa bo-Ed2rRֺRSɽ˞JέZkd8>:@ /[MA.t::/ ol6dJbuּV2^TkcL.rf1 "*2L&ɔjfרXV\ёJ"=ϛsV=YB|Ge-,,0p mۅB3::%rTV"gX@P(˕J%JB!f|r>|__yL Ov:fJTUX\\d2BWT[t]\.OOOOR0oL&xbR\re۶m׮]rRR,..Vb\eBfxrl6 RJ˲85y7;;KD|'Ns$h@TZ\\Lhtffy )J\'1d2T*eb*r]w~~~ii׹8&A&r|\.3\ +X\~<&\<).)MLLp XVdö%cؘsYK׿"/B]eKnBDCCC׮]?77SFWW[\aNfRittX,cnĊDg.ysd2Р>qgܹ3qV:59ڵ+N`4C.w{BQۧnll,JR)wvvZ}x<ݻw|[%@W}]w)J/_Fĉl6{5"]+*eYwFX,b]qڵd2Y*vڵo߾j*H&'ֳ###m 陙t:JX,d2\9RjppR[Nxggg8D"\ Z6miiRvwwܹU.1;wt]7qׯOMMy7>>~ J^u8s.> om Dqrۻ^at^BT*T*y("NNNMo{5444TUf̼SOOOC Aj XcWVjii1.\aLf3r@~ͅBKuB!6>eYbu] 8s60>w+a% &MMM\;pc|_JH$n6}wXsŋڲ]WasW2|ᇭh4Jsad2F[ZZ "ZH$B Z\FR.Bŋ;c[ZZp7FFFxSb1&5l.őN84nmmeUrݜ5Sr(*|AZ>lZҔP((qJҒ8,1ZHgr=TkCºX,FQֶxP 晙&$ hP(NW*E)VTVk1D$ ۂru$Ydraa!BdJ)mQSSS>Rj,qBK \+lflIBP-XX,f2۶yp^Bl;e<;r]2v|>oٶm4bM%0Rf2ncfk` LBA7py@< $5ujA;%2>XCM[ѱ5[uG|A'W,Ƞ|A7^5۠5̻ƚaMփ7܁OCowG 7iC*5䷡V{o5kBX_׷~M fI2 cAq ;neCm }<(-is>:o.sٰPUQʠ[|'>XVll[} ` -[[p2z4h9-RJ%RrB!H2 B1S"lXwy+w6rҧL[gg/?cWj* ٜ,Ne)?~/z"<<)$/oڶ{󛃏}H(v R}}}.b?D"7ݖokR__rjeYJR' t// ΙK333o*<5"؟O8ի#R^.G, <џMڣO<σV_#an hWC|d#ղ&?JuzzgffJZŢtT*!u]#}k2d¡H__ߵk 10kFCԔhnNrR.\P8g @k ^MVhD={g9Lk/O\-.esKKLZVZ+c&2@Db"&6ԲO.`k9%y"E} }>HUip# h2kTܘ$cd4Նkf `H 1]v+|wqm VD 6_:E~{7RֺoO>5ݻwddPȏ˕k׮--- !V\hwUV!h1Qh55547+4r4Sk @j---l:>9 Lm[ ^DA*? 2AwZ=rH[Vƭv8B,Z(%hКQG}jƅ̈ѧ5 sU/ږeYVRBJ!/#^.``͐ %s b@u ceRڀ2,4|25LZ+Cd'2JSo%LBσD HiH'KEhYA<@=vYB)" ."O7h-$vH(%Xli$"_QK5 ;@^%0 2o$BD(@*J=]F{^EU^2kdsP\lql!i:p2F*U%ƀRU@pBzH$H2en5FZ)u0W\, oR>7CX'!`uR튲\0rur #`@ghʋ%2x@^(P" }G|U2\#,+Svp8\zBH˒m`[]-2FATSܠRHOD1 @+QC@C<& 徰^7↗HE R#& "")V-cLs2y"(b[zFc<*R\q\۶BBڎ%dqC#mAJ)ABHDdZH)(%$宠0HCXUjmѲ2S \ܐ J+q"Zν3mu]7 1UJņ)%_BZhHVe)놌1iF0@h "RMO1P P#~<w~ )ars RX Ҳ0h A@""_ :RWl՗ج ^$%hm@XY-qB.iK fd1C"cΪI)l90"(Q$th+4@!(_ f` WI% B$a@$m5͚؉{]5`LUwx\_o2kYXTHi!֬8Vm %M4r7h&%K !ےV"PA#hIUSɑ ?[\g|5$mK 0@ͺ*Fqc*9"F=?75(e,K:6dqB[JQ?0::b0k9L:`""-PJ>Uu_y.DDP(LDRT*km2PsT}@TpڊЎn`PDs6hɀG0߯W2 ["&lD_@\&aN";&A?m>rЗi`{C}=x@kYM['D]^+\"D G 鈌ѵu:8 )"R&SPg$ jC)m@k$Ahjo d!2$6'5Ұ/K0(ВmmHAX U"o.bӇA5iSY@uLF|4c1י`4)|Un m,ϭ {`d ܘ*l$~-V'M0gL<#"@[x@0l5RKFcXLQEC;M$X#%B"C@0 !Ffz_ܾR\QUϫV=bv=ژFo*JpCBͺRiےe)?vuax в,_ 5wîL rjbKDB@a/w&T6\v'-K ^y`Lkkk[[" UUlۖҒRjn!,+˕P(!CDTBąm۶ %/(5 T*y^50A)? E߭?ē$ض#%m) R$"iIP@~=aI@ kWk3.jV 5݊}ݾ۶4nm׌&5vMJDi YCR1 %t` PȠ1 x `PX)?=A VZiMLS(4@$Ts6HưAB }`Yj^FAmӵ'B05 Bv9 AHl +ܬYKc4`a|77J (%#&}A!  s$$`OH}D&oDIi,9AD7zk!IQ FZZ@ J@UE Ј* J mʂQAh! Y34 } A5a^-C媴m!-7*(Ӡ6Z)My/<~1 6hOWǶ椮$ uB(yjBη-f|K44jV1@!8'7ܘ}O0V}W.7ě:Zh"dݽ~#O(e|g3t"HSDXDժe۶BJy^Prdڌ\]X\hlKq 0FR)$I(?kolug_&AH))qJIdɥ$N %HN4q0"(qog{׍*9B=6߰f'OS=KDҤ!i-ܸJ(! Ȉ@y(,a):DD^|5Bh2q D(L ("xQ uQB'I!RwBAP7 H Cg@dFQ50Y/"$FeUol&}RphXcٗ,m+5W2R8a `O∔BmGXYئ8)LgHBIcC_BBJ?Pu@*7@ف "7Pվ7D{J  #TY𕹋i*EZ68%j\Z2HiH(P)#e3 jx#'Vaō >FeTMlUIG㧞gmε{;oxADȄW%ݢ((A$.Kh4#۝ݣGZk(8x<^_ߘB"2|Gy+D¡y8L:Vӯ^:&O`wwINX؋lDQJd2y=}]ιzJk}he7߻z@Qd7,GEVD: u{=EEYB1M C+>ȴ/t~Pt{ϟ=s4}$ZD" = ʹ!IeBU7F HBBF0pZ^HKr(ʟ?,1+ `+/h݉=uӓھ%Z:͎9 Ż jDBb͊WC. H+9GkȫoLˮZ$BCD(@U굤°bO4A0Uo**pR|!("(2B=m:| ! = *+üU dd0 "urS4 x \xfeƶD&,fOK/,Ͽ?_aCZcy>A 8Q ̟8qR(/b0./KYxc#zy+{7%Ht׮m;ڳϿvY{o齢pBwh86Fl>xy!Hm(ffMEڠR WMfF!Ͼrj@drXbZK/^VtfE ."*8b5p";vO@ŊA/UidbK<;$P&!eft J*&"<4Vott_\]@UohZU k~{̹W. (CssH*,h*|5MlQg_X?s*;gB@XPpم9C8޳)[3=oϾ(pǏ;~C}Vhcc""ZqEQAE Q!z$D)}'=)aLԩS_4-"yu:}r~]g!.w~wq7s y_t]"?t'A0E&JH H :280 (U'/K;[/;Xkk R⧊5XXiAAZ7A@bDt͟*7̀ # Tdۈ=0XΡuN[{tY{?Lvgg$q u*fk g֞[f]~0/8VB,{Rf$ yX7PXr1Yl 2JIU%ꮫ:肀B +b`#hJ~ET)1`n *$Q;T°PN[$P[[uIS*Bfgx,@ Ra]뀀(PM:i\V%aat cCv2̣E@T=B_ǞB~[^D&%<NnͫT$3zB5ʅ* W.O\13>x`_w"2Q3-Hj HBbٹ":d2SZڔ;D"SBfFBy*3ié|"_GQSZ8!yyyyu?+/[o{O|駟~3Vk4-//+g~1y^8o[ I눢ַ~l6E{?77ۻ唊Μy *ƅ{VM<і}o6?-gw3 \_2O|. +H@J,aV S*% Aa)@|h򪂮 #BL+zS՛!V* ;dX9BF`J:xz!2eXa:hW}s@h8gBϧf (Xkݑ~nkv0+yG髽gj#PU*TRD+@&M57<" g@VN)@X{С?wF޿|Iۗ|i9πVK$pJʹ^To9ye]+` ) *NwUMA8Zj4FPkrTYt.aFj̃?{Ნ\ze87<ϝAWy/[[;ns~sD €,g> s}bvvvǾ#;v|<EeKolƅ%m$U$# oz@)RRu.xJ?JLjNeM"XgnD18J*=4Sd*bՙA0 {! *TiM'gZ;W׏[9u 5VV&[Q=Wͼx!&a}Rẅxj|R*tV+?c`=( q&o}=ڕWt^]]'6(&`R;&ɡ:mF{{;' ?3" 4T tWi {nH:[="0z:Τ:ᕯ~k SfpQh\Q)uȑ`G Q'DCO@^; S{¶>j4*70g[X5!yվ] _ә7/V* v,|W<0M`WJҚ4)xfT9ge t#;"$$DDݻxrq}7uR5b3F~oz mȉvg'Δ>V,d􁘙",Tm0) )#R4C1{& S$ Yi}c|BҜ&IdҬ$qf@ GzdjfRw{ӌo;}m-g`3!-A1 `-Dt@CztP,L?x$TDei* :wu)Nd@J3NS "*1 Y"aJ/0AD<*"!IUK@adTHBIi0Nle,r| y㱽4q*s-XٸZ3)4y龎 J`aD 8azUP#D 9W{[ϋy D((VX.6V+;z嫱Yff$ {ߋ6f,9j@ # H!ԯ݄&Ղ` P7xhի9pOQNHB (5NDVY^ĔiCVBZkhja& PeѿqڜOhqÈ˫&+, @ 5S"02r;3E=/̷hԗ:c#5zB,rea~wgJQq+Gp ɋ;-A@`:/?w>wɋ/./^$ բD!icNщnOlq%i6)G/28iCXM<#"v<RZU@!## jIL#DZk7 3pnna{?g>xϻVVVtxkk{4+Z2F>77';"rJC}zP^|lXXg,Zk#Qk86ַ( x>}:and8DX) jnBBD̲࣏>C:uj2q"OG`5̴AgZ !!g" ZQ >K +$ F`ܵ_/Oؘ|h {7^u'>~<| 91GWVJz@:Kgq]7y?(I~sρkۗ<%OJlWZQjrG*gه`e`5=É,2(&BB@Tf˱/yp3 ?SKs셗[_1XGZ)aY`0¬,\REΠĹSJa#t a&Dtd@)U)\7jNw[qiF \,Ư'W_Wo}??Hzi\!yԋo< 2ph-9$k׮۷|i]^' +ۅF|l|g?9fGk?5J;㓟}ݷz_|1˲[KkƘ`Eλh4s(~MqEYZ\A Bc uΘXU!IHF(Z[|+ȓlr'xqcqx[rc^|uQęfƵ+Z9Bz_βs7582F5nı,.,:uG|3yy"[)l(=pMvJkeZ{چ-7(¥+G,_8\[:txC<=&cVxdQ <xfTE77E#+/=!\'@Bl ~E6R(`8WW{/,OudLbDK!*l1/ <g UV8 L<@V` juLI8Q@?-0 ( (CV;(;r` 0I:\"_ڜJy$`ήsj76vjI\Iޕ8HŦ`3]TkLP2^x8+ҕRya4Z&QGۏ>G|v< MQGiGN&ыGf E))@HQ XRFk@.CJ+V*%_C}+* (d/Qɋ+Kx{<·gy˧n?~a &2lym5bbGlǚ!+H[Tg6 @ t@dbs\/nP+Q4:Xce;[f+';fb/ 'wr}ѠglܷlQL)XR+Vsjh2:Pu{f . ڈ= `g gw^ݡ# RsW:N1t= CwHwQ"~~?}HP 0Ĉxvȳl\+KY+i"/|Kh4,"dBQ+R4hMݓ2PU= BdϮYi nkMRm Mg/;hݙYcXB\ .-Bg9 F־ݢB'%đ*_+/o -WGB˽f(C)QHJz-"8"2QPEI ɈbHqlfk,($x8~i WϟE`D(gN!#HbIҊ6[R'%{Yܸ;z'`(^Ж{Eyc򗿲vV3RJ)#{_E00;$"CY^okkkii @UfKAB%€< f ZR__oX\\\]]=}`cvs{!h4;ֺ;_wѣѣ!5{w"iZV@$ {NC~* jq꼳Ίa%0{Je?{Ǔ߮%RDQmt]|.m5ſhl_#=W?qw9l8\pä{-~J\kѰ?pD("ɢ>/.SLi (! |p׊R8":ND&٤$A *8$sA;,__NIuwwMk*cR>tCPO7w.\8_7Qkݗe\O%YQx6h78B X[ Y6 - ~=c_&<x~{xukkWNfLD8FsssϡCG؈sLS/5]\Q7vd?V؈H# ;LjOՐ j_&BFbDh4_I|zLK<_7"\{mN^"0̟Nw{ՋmYEJNM|EA^BzN#H^`uӚ M>QQU*b[fMs3sEYIeYmsyFMEBlwaϖ',1[WwՓdrܹˈ>8Rńd/f(Y{'.5icI~o[;};??pyh8գ|* "4xA",sW]IRKkgfǏ5( DR{0"elpi-{l5 ;_+vZ4PY:qNBȞV_q5l>s'_sKHl܁>;;[G g H< u΋ga}p /,=z4aeJ4]\\|?sZk" c^[[SO-,9r לq]qfD~ff&^K1dTEZ-"vK^O"4 ,]QHVf5:b$%?NblV3ҨGZNj5ԤdI ֶU :2xɔll2QwcS'9 {GwiVꑇ5ˋ'ꩂ<6[nR`˓IcS1v+ͦ+xZaoi1A)2n޵k]km<ФD-vfnA1oM2E_wˡ[޼+woonvrgcbzmHHR5sj j٢PAAaGOUFVAd 6TD-m/?/F5i;fP (Z1~Um Ia D *dvf W۷^[Gi1u.(:C4RecP7[3-{F(F1LwK(ق1o_z;Ù^xKk׶:Ɠ1(:v1&12 3F zʼn^ҚANzq\ɑrB?KDH 얠A%> IPS0 (EeY*d?f^yr2y@$F0xdBA!z=mҀotdy+5/MZg8;zã}cm<3M&nwnvv,&(@!(9z~<qMzgwvassyDQTռɤ^yiR/r7Qp8t^N9z3[*"E=e1oԃ `yy9Hr,{pzAGD}%2+GiФgwQ}V7GYqڵAl &a8x<7 yVRMmȳ/vh/́(9"## {€1"#8F` ) B+ RjH>!z| ¹b= b< [ Ui <?ōݵ}FQN6kˋsF{|hl2TXZjZ2,A5 j[orh'e7/[hO&΁p{ RD5%fN/J@ f~{fDkQR8Xv1x4GgΕ8%Vk\@^=x(-@d2llF(K((8l醽a:&7>b̌Tf*5IJA6UvPՀU\2.0`bHhR))'t}/2rUqsOa}8v`&R$IͦuZ9o SSw }Q0z:y ׇ5[ba0H~c~Z3z,ݷo|f_W0*MsveEacO,-.:Z4X=r[oUO~2IqfY^r7 TxvUT[HʒD3{%s#cY,#'|k $I?oFj:㗗(x@BHjC#Xc.KRnعwm_ϑ#)Vy")JI"8١TBJDK@Bn6w]Wv{}{4f3u:lYnYޯzHPȠBēI:BvG@A֪ek;wU}n'=WVo?{ Hܺmfz~ A}?Gp8HB}oLNg&=M?QsF%3'<7*+kio´d@chue}0X5E=t%;=PѧvPFq;iR9󁒕j-ɋ;wכ͵NױD:chiyި; ky[6Yl7j5W=$R\J"tP*I2B8L((@K.UJ켷buEw55ַn馥ΪҁcȋȲ0ژʤ=??75=YEYιzwn}ݻG "W*OqQU*Qdιk-oQSrqK%d (Q(سRR !QFtٛpRK]$$#^ ,Jh;`䀀hgzazRjZQOzZ> zVRڬw ;ܯDBbWku^{onRT)Ȑsf=IR+`ՠb5E[p#fom,AQ!J:kյU%U.'V{bz3O~ffj8mz,G XEvt i8c8ڳgz R6'a\=z쉬PV+f|]u{[ˉ{v/7ᵟ})9l6CTbbDL$N+ed[v a@s4/YV TrH) u(d@NPJ@@YoM/*x$d#xɵnevl ڷwV!3/l6h..ޣYv/L- _]I(Ypevx7L pA:TaAK` v${ #J3λK!Z-3(ҙY!ZS;3tP}ō-{aG^>_GMw[:g%3{o7\s׮_ RMB)OaXVxcLSSЇv _>,M 5?K[Ը13Jq%45%ݸvIPTب2Ҙ@,.k_B+8=51ezye?20Z}nnLaAw5wuWp?:kQZ (ęs@b"Ϸoߑy&yn֡?-4'ƕ/a+o:mT1?7]$G}c8PVۖw,/:J2cH arl0 Yk8G_۾}deå\OKNo oW>=?լ[>)bŎw# aVtcDJ2@DQ" 18)8#Drr)ln ,FPwX {D+9D-IƦ#+')JCyVI&HR"eV D`%;p4^kʼy$m0*o En$ٽ kD]UJIUyzՂ^61Y[Y W_5[oZtPfPZJn3O~Y)Og~I5y>\]Fqx<=Y ]'"@ P+Qè;sr%JeN6Vw0Pvk}_o}ۛ+v CmmQ`(3%ed=S0w]~m=ooZj._Ntr,q7JBf8tG QTmZ33[j:HZ)=o֓O>4W)Hf%|8Ls0IɀAT-kGwo{̙O '  ;\ESjBijl4"/B)7Mtd"c"*HԳ0 ծW_|DQE*' ' A*@%5+wٿG>٫5fL]9KN<}t_~۵jO0Y^?p-ԱYe' Šxv?=sgr&=ɽzp>K_3\v|t2;xD<$kY^93=NV2;߅QS':+<Әݳ2< p.MlJ) e9'@x_ZQ䎈*8D($yG±2V!tDfu3JpNED)W E.{:,¦@)YYҺE38q>8b!f.oK|oY$\N/zy^)zY(5^`{$#Q^ G܈h+Gc-h ,8č1̔]\ܐ)r*2Hl)ۆij n5oZ- 谤a3BBoJv^FAAsZa 2y^PJ{v/cO=] ;"3ynҪ7OLL8aݥr.Q,"VP9w0Ŏ'ۭBZo~fĊTBSS\oyȠB°o}㾇{vtkVv:z}J^T}Y#j||+_YT sZsAPyItnJN5vδ-)3H!kz Ky2/ðR4tDcկ~M)mLn(ߤ| D쉜Y?; 3gO.-yr⅓J%όb~ێ~o3fcao̩3rx719y9&PjqSy3S^7ht$ibSJ{)C}# BӇ>?yd¶옞GZlݱwhf]he޳,#m1y]@D??ΰ=;J3ϟzԹOMf؛ ^m.v2%*?7wĶmo{޵e٪9o&]îBywLocSxn2֓Z57hQdi}3gf̪E%u6'O)][Yy2=B.$LI! 0ˡ@w%5$8eVD@d}0;6*?r)|d9T;lR`5"-\# Dv12p.%ȉ.d)(؈/40e83d0QV##:JGnѝjc0c6x9"ؚ?/O=e²Ґ]aVJrjᐼ1:+ŕ*0P>hN oO) `E1 PvQaX?t;杵)SaK!D`ރ ˼w1Q>FfDkj; RhFA(:+Z |V#"_r@ O>SvsvlY[[( ZX h%E}k˞?s=IB%;y)EQT:ePeq#Ž2k"]vRJ !RVZA kPy)G>O}q\sy}_ X^Yյg;ui=|DͲ:5%P_~{Ϯ0 $9dv,7ԟkj/Z"}*1B`Z(ܑa "(֪̒UͦɋF58wU{o7"TBI(PPIHQ-7}?Nggރλ^_oa[D &ٳsKq4~/?zM ˮ۱ֹ_O}aj1̶e5Rmsw]qgNw]W b ")N8c]{''@UP. r?0_JO bQ&BMItEAq"w̒PT̖ '*E:U*gm&YRu !gɲFV(HDZI%/T:He))zD. 0cDz>zP 6 foN>=g;9oJK+2RJEi=qVWx8E"6ߨMajb/=t$"*(RAJ(@_f_^o67ÇvR 57E tjZZ9HTg H\5&{GQ%0K%DUH$Qk^_~h8kPZEɓ(FQ.h[W~~b8J}/ژX\Y\AE8[S9EQ\3. /ja[[Uzϕ{w)@bQԤ$i?lĚQ֏ c2'Q`io, {D=(F d%{#@PpP]"$ { IDAT"^8$@WFJR2D.ނ? ?Hlm)*&X"U*I 8&#fv^|xd뮇zZ?~{>K)O_9sv8}?x;g,0B_暫$ɮoP%?tCd`kmEV$!nphhsyfLQc`bRsޒP23D:G^3Z,gg,+r1J,D%wPp8̌uu8B!T{ W^[b, (`QzBP#,4,{i {0q-rebIL}ǟ#s[ISzQ+_}r0|~]$twoiA"<>-]Pb-ksijI.hJcbݦ.B "jVݻ۝NM7x☥ .НoY8"0 ėX0D`a-K=XΓ),yЁNY똅$Dh <) NL`)|`c' R1h "< سgJI)ui=i&bgYGXpDQ)m6qX& \cKQ:U  qq/AXh.Rp2[v0 TZY 33S'=q3y60O`/ ۧx?rѡË_q˭3ӕW,R2>Ʒ^H+#eZfoSbL}zZOڹq^okF4\{{wӕM {Zl{݁K;fՅwήj4d .CcALH؃vk+%*{ؐBy@ K 2yJ D2KO@0Kf!d)&'BNJFZwz@)K,re牭 C3!7"?}#㢔,Әnl2eR0setDSDQ4쀌 %(,N>mZeyj]adj}w`J(3 Sq;v<看hǎe yOB(Av۾/ zK+~?ndI%,Oȋڂ̼#gAl  &KRm1Dhx H*`F`$W=K2!+ 1x"F@%jΔ^\n,yy!˳+2nZݲe̹gϜhŕna3Glz~?ٙ:ؽv5'}N0oUӼ|r?=Q \Xd &뮾#+bnn-^no_+j4;;ټcoѧQݹE7{oC<} <8谂l@P <{ 5+)SX&A=oX)P*,A(,+˯K) `7@`E d# Pcȥ𘰗,zG70@&V~q ҅q#&&_}0 X 770y1l7y~6J^`~ءhn( %%Y)I> b2L?LMOrzv~FVsEIDM#}WTĤ,MQ l5{ٙW) f6 zݻ8njJF< ]>lTfV}NNMd(1Rubfv`^]Zl; :$Zl9˒vjiz cLǥ-(yTX29"AaNLL0SZ5ƔrZk33D{w}W_8ydV6"(%wbk^ݻwۭ*S.sf B׼'|#'olz-S{,3EnMnMn k /?oOBXLca$X(Ho z/wyO%H؂ED୳äǀ 'L$IH4 TRZONH *0y!W֗.&gϮ p?}w.y`|br6X\\޹3օ">uuN6(' g8D"sn~?>B׸g&'g_<¯Ɩ-ՈMw٣+S#m[]oM5EAOwcMټMн 4sh|N.OMnF= VsD䋌7|p m\sDQtͯ OAiʞLQ\sxr) Dc~{3XuMMokŊV%ronc $tlaa˜"+K)gͥIBwΡRu'w.lݾ=&O޻R !=x淭c9ѣa{՚3O>uvKDZ)I^ ^*;///'IcaEf~R* r}߰JKUAh0 {f7xشd*kn=oz^Qݹkh[k."CwZx[;._Z 333W]Mwݚ8˿JgKD A 9R,fQv֖ҙ)I %32`*ޝ<؞ 1!o5(Lp~m'$;L{,m:35i"&sK,A䳤[z¶?剶NOJQa^ ߿'o暅7;mm}yD}lz ao\ / )/jsG[6;ͰQ.Rn\EzE޼aF71hq󙗹P_їk(ø@ǟ(sV9zdyuvzd(#QW^uk_d?yS'kAUמ:rEqN)YA2,<8o'EYf:t<=J5wޅ~@Y?477WդRA6X[:zn B {L[njolQ%d+Z:thjjVYk7\-RK%%qEkUVoQrΗ%EJ) .,{Tr%@ $(%(MRfqxs;DR2bcT1"Zm%/? dfF"9k*cmOL%>Kdig1XjD&"ʓhZC:$ɲRTH鐘v8JU*kzGNṬC~l-F@ @D` kl93g֘P & S kF(g3a^{n J38UQB_w Y ' u+<j QA$ QjSX`8i0ҾۿKs[Ad0>Gx㵝&HpsvZ'&=j$8RU_w?21bd~)/Kr]vYts/˄/=楘Ky&X7]JjW+1;^kTP+- b@k5ҚffZKlX2%J%T*:Okx[o4q=8UaZkabsn*e[XXسgOeY[nm6û9eePE(K%(.=e)d%Qk$⒕eC"[_~0cFWv^ ð 8gZ#-B FxHcR (kS=rǎ/ŏο/Q8+mzE"PBIcpE4KVZZ)RRZ3LM|DT5%1rFhWWاΝ[\^fFuZ2f@GtIujό YiA *A _wuMS!#U2J"3ׁγdb" r`5IWn`}P?Ԟ Qt#Yzvo `\k0F$ɓKsŒc {/cJcec=w&(G:Ѐ `D'0r,y)nw޳ԝW T̔Eyņ9B],y9GP-&~Z~~~X^DgϞ;sn Y=1;kR Qi31Z PZ(z`7{$q -վmIEj( oF;Ll1b'̏اy;vCfFD A$ 4._umf*H@uխ4'Oerj${t)R5t#ts)À钫u+BX-v oW$P"Pa1*<ϲ2ah8tXdK%كsH9(y33t \,Ju\XȞ2sW<4r{}ncB UVG@Rh|{o.`*G|R,cg| }NJ $Wasr)/hXg.gj_TI@055왹eb|ljD g:)կٯV!Cv-{nURwDsXknc\>@|.Ye;o'?YyqC&s=w7~!mvtBqOE|oF70KӇ֭[oamSo}[{7ucccM|"e_ p{zzCLG,79!r\D TJi<
}zJb^{T*BH$TG>'?|>b$TkItRBvܙH$6l5;;֯_ĉGy$N m۶϶홙SNJ2??z;wnׅR47kw,BQfןKW[R6@󖍫>ƣfE}(WGT*2 ~ԵMM/J*~T塇8}t6 !|ɩS֯_&]Wu \:%xP?~nYE, th/}߼y !dRuZ¶m<9/---X,-* lkk{wڥ8Bh4`kk䀈ѣG !\.-k֬9tqι*~zӦMmmm=֭[ZJ Sf9rh%T*J/z6O.+J\.W,IUa"bWlSg3g.8%7]\ b}ڙ3g&''/Ӿ;x DTAh[J}u]MP(!zzz|+;V,/s1U*g)|T*U} !bSU岲9g2E{ +J.S$Z.Kw4M۲eu||<*믿N)]~}$q չ488yޚ5kx≡vDT*N85Mknnu=oݺn{Xkkk$b:"RÇ={3MSJFMrΝkmmKR[[m'O\XXرcٳg暛 ÈpC)eYz.&SJy睩޶_[[[K__oܸq`[\\O&&&*ӧ7oެ 1Z^^11H\ I$JsU +ax7窺6ՏT%.TM~eO {+u466LYUBW"bR@inn>|0"y睽ӪMΞ=ёH$zzz[ZZԴ\_sն7/&kvѾX,l߾~} !JG}tk|Me`zzĉMMM}`wwbWW /P(p*bVJdZUKV.]l1nRRf15[P ¾}z)C ![Br&2;V >jPMdb !+033nݺTFMTመf;/9;vP(d}{a899iv2OQzDjZ*PSMԿj…fWMkPC]0R{3C/~qqbx<~}裏8qe˖'ONMMٳ?}w5::z'|2LLL?~< o}[ǎ޶mCCC֭B??✿K;vwoۻvT*CCC>O~={$Iqvv;יּ:TRo: PR{wS[[P*aR"ľz$t&AFuLaؕҤNervGZBHTU ]Muttd2tI%xf2͛7+jǡZL&3 !d޽w})s=LfxxxݺuB_JfmmmJު:|ن 6!٬m?aÆk& P>G4ܹse}333÷v[kki[nT*b?~8x\v٨c ."C5R\JrgZkAĵREo'ι{1 ]J=66vȑkNOO_ݴi,..Z6mtT*~]v*- ۶mKRʞy恁;w;?%mٲuxxxhhh~6ݴi3UX.|5B {7V/}?mI}ڵsssR'xbvv7H$r!eWbcBuxT*BL&O8100p[|Æ ˥Ν;޽D5%8cvOO3>~u],k``7P7O۷ɓtW_U/^z%ejF}zӦM*$߿jj+_Jcc//}Ed6=qD___OOO__ ! m+-l蚦SSSry֭jR:uL&ݻWLGFF~ae߲eӧ{o/=s9qy䑚@144f͚˴?0u7xgyהQ|MFJEcDbbbliik֬QiYO~ꩧ~ߴi6==w+ b\ڸqcGJeajTͬ5qU5K+ 94m>(Tm3 t!;L\]ՆZsmWXVQ6jfETK)<#$/5WdԈ8::t=sU:cȑ#gϞbn߾}߾}]]]sssX̙3O=kvڙ;w.,,Xuo|/R$raZݝJVnG}ުm{ٳB.0~ ;贚#0YxDQNj4բԦZkK`yYo~PJk~^7=Ԡ~Tr 1^R{キzzz8J ;xwǏyQS7 1F5M FR{drݿb~JBzzzD]%K?f}߷m?y4t+9Wb|(ҿϜ9S*kUL$LDZq>~eRJe.fkh9=Yjo.3qAc)#MMMZU6O=]z8;\Aٻwox[J˜ /+~.Scyֶv7xc͚5es]m6m444(+||q?H\L+=J^IgNjY2`U9^TROjhbhԶJcCax񎎎ǏONN!444?77788r}mڴqǎ>!bkjb[[[o'<3+W"b۰aCggiiiڎ;N>vaqqQ+}ddyvvvbb"LNLL h4G)EXyH$U"L"P(DWѨgϞdmY]׍D"-,,444 X,600JNMMAPT&&&+J YibnhhϢ*J-~ԳAXV1vY۶Ksu%a*Y$j-EBuը~*F4 mP(R)Uj[ MOOGaUfSYaŠB,R]B9;;kY1 rY H'''Ux:.Jdrrr٬B0>>de(s'ͅaf͚&dfͣD"133D2뺍|>L !V-J)3L"8s‚H$bf\.tZ}ttt~~>ɨnjD)]VwcL+ m/,,$rJT=5*kKәLFt]_W*)* P553788X,޲^ai(JbQtyfful6!*h4Z(TW-RJFGG B$q]W)q[-TL&2778*$RTiHT*MOOwuu+ypppzzP(3,acur[ZZr4d2-˪owww&1 upp0n۶Mfsο ]U!q "fYU|vvP(BTer᜗JT*8 UXW*&WԖ !3̺uUmU^CcS%;UUV 0 q 6+nݺ Jٖ̌JT <644,..r9qԱqeIԤ-z9N>H$:::fffS*|)aJU'\>onnV]*2mrg@5ZuFCs뺮늵Ѷ6u555)XMn/J]]]r9+m1v%8.RRTYiQaaبpnX,NN(ب(jEy3== ZD"ǎS33#Pt ٶU)5]Z5>>^_os@uMeT({8 P\FMW|3gpU"J)3uttT*|>D4M!7b-c5Y}5ڲnyP ;vL)Ԫx|ddDP^(TqSN)%0LTVQ :JvJuu]TvO< DBIm[)!ֈVYi]nuhuB+X,zvl6ޞdXWBt:=77̛dsL&x6-mmmx'*iJ\izum٪j۪nǕaET2%)].C@a)AJYmAÐ]xD Ԡ&5R)AMU>T}`r8te>Rsx5@-ԪhR?YD/nVv%Cu5JǡssP è/{Rs"eյJBǡ -,4_ J܄ 7V-- [ nn&ěAUY59G}]r=G},4 E ʝߨP>TF|~YȍbU ʱRڶ{uzmFZB) 7|ȇ?U/@\G"g('rwp= d2lvffzZ//d2|^ طo_Xd2JwwϞ=2ww{yUbY7/\.gpŶ#TK4@"H@@Xū_=D9GâL %`*rH/!a )@ 0ol& 1Wtb1; )* .!1* @$!D}$ MAcD$ P*෶iii3QR  gH2.矔WI}^j , TJ.DYRi̸%?PmڇB0H)o5Cggg}"w"f5ynzP^(Uw Bm ) EjRJ!e1RBQFYBZKۭJ  YJP)P jL "uv4yy$JǕ$G`S@Hb6$!AIJD\'T 1 9WS-_'eB"D!԰u}fV_3CvaM'FJnS^ȂA 87۹Icėҧ! D"d؎nK0.Pb@bpW^{Hm7EHf5'PXWNDD ~)rՄ A$RT ]" NTsA@GXZIt!y_M١H#f\D.T2bGfZ)e%׹mֶD"Pb4??_SɆBP,ۑiV*$655 !&&&|!tM7ux4ZT@$RH F5MRX;T*V$s<ϩ8b!HDcR8NK) \<2Nf@0HGgR܆DP8JĴ)c\H˨'u]kmi'#ǩEr%y;'`@n÷I7$ MW |w28}00wAtsjnMѧy4x,"! 4&lvs0tCN)C&ϥ]Ѥ ΅Oy'NO|ȍ0wL?.L'MzW]F/ T/DVY+)Rn@ J"z*AD8+TY(AJSH$PEj#D}rkoB!0b۱D:e䚎vt~aN&t8~v0,Id>[Y@X,^*yaXL5Fi!ur)H`IHf\>e%42 ˕B.kQ)x(+P<ѐH`4>{[zwkJi$z Rt Fnk(/ (@HdQ($LrORAtF3:8t>޺cFN5/$EHj@ee;9_ L5NBwLctd @(J݉d?>~f:\H$ssc{HB`Y\b~#HH\bBי p-|v}ecZ!#|kH&#ƙ'b@{D堦_܇>"NfBj]>]p0W @F$ ?LJy6 OdL@10x{ywMvo & 9rJH%"Rr^x dW.BPLW/~~Kxԉ{ERٍqJB@S8z$kL3JC@( <ǰ@`hHH [oF-3Y˰t*J) @@OJNJ%(M*iT E;سirrj66[7?&-> (nI% TR yƅJiY4=S}ݿmK[ZeP +,CYkL2tPrXƨeRdPF 1\ $D XE]\[3$H@Rױ&eA槧tî/LQ1yJ(Y>[, MC_;Ѩr%5`5g5*K:!X:MG2VUHq-$JA(޶fM,TzwԷz$ڞ?|1#U ۬TJʷ[f YN`!JbHbNCQf) t(P ]טFE 40t6Ǣ-jRBF4J -jG>9vĆEjqӰ$BT nasN VnkdU3 !# 004 })@0 8QT%ŐYֵ61g'&}eedcT$)X O\ r(@$KR( 8_=/?)wЭsg|_q-ؔDӨsP&M.NbYȻ>4t4*\TQJR$P$ 2lpT$ m뮻w֐-K 0 B }ߩpRbrp6I )eR PX~1KxPJa:$Ke)y(ED V*bD5 1&E4$}"TCcN < wN t(B@a %!Vvť%$0 uQbX yxlCzw5/ eM7gg1Q&G)g#HJ8dC<w ӯrXfFcӼ'ml6[(;H E<* sTELBx(̨|Xl7ǿ;?|t~z>|xo}˴e ]iē 2:=1TʍMi .(Br? P\C Iߋ5e6ēl(9 "M'a aʸNS t\@䘤k3}'ܒAl.fugw]Xj9eZ_y|˗O͵ZH Cj\@40a{BfhRrᡐ ED 5F" )'DS$/SliPH aH %H 'h0 مlE.S''\aAfę~g?9*'b-ͮη橫fI(1Dّd) 8yK Mb˲MɊPKfBH3 E֝3ӞVέ :^÷ E#x,o\QjݲSD:/?۞k.-4ҬZo^GvLVO.OXXm=Gx3k <Ǒ*B I?ʡfr0{! 3}^)98[~THڣQ7?q /O/>itݾo~nX  iB+- Y3$|gw,<ΕʹǞ< pP7f*u`dq,8sRD!&)  V+J5?ttFfh%BHj輑@JC`i׾tvʙqt;'pՍ{?65y *6Lb)},m ̒H(T1%pQi BI, iww;*˲n5<:J(w6L@Uiӑ1dbّ@㼐IjB6~EQUm$Epg IE1@DDeݱ3p IDATu8~[.H)#$'O ˋ”E5-Ň:s󅩣FkRTi&(2MLH>xcۍGS_ڟn޼y[/_ݵ;`k(fdyk nPP( N h&_UvF;+s}okAN(ZHx΍C+DԈR,VGT4S cbpFf^eNB ¦=ь>>kQ $BT%}^8G/|-mbhD Ǚ pa68$} MoK Cs]G$ dH!/F^|:!JDL$ BF ="蠕Ա&Kᑁ/ al`+o+gn_򱧞c }γHkD\p2q]A S{olCHGǙPHRHZn{{r4:̲)iE"5z+0@\ِ[*S%KBXc7FYF,)#"&Yj8ifgO߸rfEaX)D*k6f{iiIH'napggoh~a`x'T۰4Tmu(!D~ic!gD ˓ɸO\qԩQ]BIhKnO81](0Sl; L74C‡ϹdŒch$xSplAZ@}~`M*zIIRiՈ]CTS4 t8X[[8#-lGso\ˑE^ҍ*mə76w+=|F#A@S HDRKᤂ`:س^[{%.{^k2XqILGC!4*ڻ$MΞߥ 1 *[v4vZc_L kC &pd2Yn +$jckͫ'ab3CV޾?4&jP1Zl Ij*g5(^]{!S.ny>nθo _ڣϵys6̻[A@-B]W<7J6l$}++woސJյu?|E" 'Pryq?O}ITMo>ctJebIef\ʔhPkiuҙ '_k5L&f1Μ:Ѕׯߺp[U]+O?H*JqmM-kćr 3" >zN;vXyWUdG~h:e+0pĬ1mƛۇO+s{q")?aIĹs7ַ!0Cig` >P/{d" xlxC&y%BR]Dク;z!V b 4ƒ?dqJGـac`ˢKSʋO~ǽ!rB(rŪl6'I>T:t4{VMP)џkhO!GK&>?&n ͸ZiH(P "Im=Mg14:x7n|\(r͟c_v2>lxsb[ߺ4(N}[_{sW^xZًyg( y7?9lܽs'v۷nf*/9t/|n*Jhf;k6Oqp_]Yُ߱7:sı@@%a>rZH-~HIA('Hگ'7H=3/da~[\`Pȭ3|J%I>6:H o"P<YQ:`We.nT;tͤv&F9F-%eC+)m78S 'BHR1 c\YԮJ[T # b XT} {jy'Yҁw!!8mtk]=@R): x@DJkL#p}sw ޕY#`s 9@F9  Q :)X f[I;٢sx"ĬԀ蜛LB(Ĉh< gQIA0N7q^hu~$ s/,(!{fzv#^ۍ!5Ey퍫̏MMUL&/;8d!#} 8RO>՝ϫh0PDvww$WU1cZCE1%5hƵW2RIz!(Z ! HR,˜u]'iI1}x `@($qmis86v6+M@v#ukǤn;TeX*'HxkwΝhIPm\jn@? X5tqpgaM@c]'yMUKYy3^7Fo<;Q9Rfos Fs~[yaϜ[}_~777gq#KoGi(ll׿}koGV+8qEHӲQG.c[{eJMEYŃ/{}h5/蟬mOQsˋѤ^F͝3N&c! 8k-g?Jpf? xlxa]S睩g S{_=|n߻z#8M.u"9pX ^^j A f9F@~W?9wa<94U~w7wko+>߾-s"S١{Y4 2uQOG_id'yI(֚IA Q9"D33ѯpVBJfkMĕRNk^8V: "d/%O!"lC @HGi`{v{{n3YUx4*Zi휛1-f"s}$RQTWyUN:f\5zX`/I;,<. rγ AIZH*i (; Dts x?>Dd9y\<KIcjc"z09!iEZ߹KԳSdYR(UUlokc!]zrI_hBfd:-#I(qQv'ӝoݸKo1RjcGY w'E$ X)0 {[$AC5Y`h&$fv\$O;L`襪g,}J>s+W+K_sϖCY`pnؙ*4n/\.uamU sVe᤯:R%A SWVȅ[oKT $UnV]>pCXJ fK; 0{q;8VXH(Y(l>#z}3w$!ǮJIpO-HvwNDzpX%@%X:_|{ߛڟc2+(ԅHj"B!u#K 8$ΦYL(Lmwҿ6 IK$t!10!#`B`Y6)Q` UKlj\YZbpZWO޵ߗ~/eCpp)Ns X)i 4DD%+}fSVh?|3&qV;/gO6}޳p}2R _Kw'@;P{ntP2[7.U"[Q PO-  0Jl !888Toٞs{ϾG++ׯ|ݻ>nG*V+VR}Y tlAXͥ/JGq1#:Zp4\X_huql~ 6V:mRVY5+WAI&)CNF1UYXS|S 3])lk(?!x=B$M(0 yBiY&B\:u( DwXk9,CD1׫X$èVn.`d+uhF7?5d{oFNjǼc yf~#~zٙK)ې#N*(IHO?c/9O49.4q;}'+W!A,et筛ozL986QN)E2߿s|йq?(sg둋GĐQ@H>|("#R>(fE A6+г@A Ҋ[˿p=_:R7Rv?S5,뷜Pg@ prF`-A1XBuV|(|9;n d$|盫["2 :u׿DjB|3TyӚ 145J&A(Qe2$FH{$dm]ۺ(˺z'/ǼCBljZ1"+ xk Nc(l]W[Ik (ʤ`^ 71 U5I6FjDz_T]0!L~NZcDk!l-h62Y;62Kx̺(@PK:D9(=VeT^靃?̸=k3ॖUY<"cGGۮH(Ipr Gs{;[K ;ueWVc~as^Z%1֦ldh8K+ˋΩ_zsxYk^yڛo,/,SSVWfWV\Gw`og2AD)eEQqpGxgwהuEf#75뽇A0SZ A3Ir IDAT1g3?QIU(vk ``x^zo>ɷă$"Gݵh4tA+Nuc]-t!HÝ7^}%Bmu]㼫bK?!.lXsSO$1"ӔhO7޺ 9F޺H*D1-~yC{Y$"Uڝ4Io\{Z8~$( $cp|"} zfj(ܥGN_7w^L|[0_=<*'P r 9: hfRf=ǬXփ|#Bf^wDoie\Ulu/4'GJSgò*`oUm;pk^?Uh6VWUs[irF 1%u Hw΅$:ڹܚ4/z<-&I]NϞZ]Yś!H)wZBVVIHZGJ DIHH33Eg2Ke]e%cĖ=*tu-jFlzb1f8zXf #Tu5ΙD~ʒ(t9+$"% %I R2 J㤑i &S9j{=Tk>(ֹ0q@y7cqYkR pu}>$IBBzP+kl`>ܻ{,N2o:u;+ ֹ]RRH u}ݛn՗b4>}dl{_48gҤl&IҥKʲx 㺮66HcZY̙'NnegELC@(MY7nD&D+T>pA "6Jѣ|< fTKVy5>퍕ۃ:[MC/7ӮTzB]K5 L-[m ?!fj#VP^\F/ 7Z8kz$Ff9\Y?=p2{;'s=v'KҲ8שֽf]߾y<(DZ ،RX˼LXY:5?>2wkS?7% Ѕa_{FڅP1zdw߾uǟ2z {Vii,qzZ 7;6ɴrj}m/?w >Қ_=+#f (0`f 8$/ ֳ bSUQ""1Ό[U, _ʆ4&̧ui1pfN:/~ǚqm hs09(Gcw mLl+dXW)P2üc%!ږiZ1Rd:ͧȳ4;U|!!GJZ2$&qJ`IbJCIep< [xW%K@ZJ' ΒV3;NCપy<20,Z礐EYH&dl7RIDH: ^ iA^+PוBKIQTWR ƹYeg+("vF@%{@"$A Ã5߃g, 3><DI]UV`wnZcÑ{ΟɺAQ=Fr`<2omO#$jzq>)l]x}I==:}.IGJHF3x3N6֏ZHh7"f(R;=k;ݹ#֜IB2$r A$!%9d􁽗{JƵׯ\8V6@ڪ}h.UuzS7g&>"ᨲ[ MjgudU,} E,^ Ǜg_z :f(M)ruOW׎ wNBpm n=<: A|Ӧ4MwmkVzZY#A LTS/bIM&$U3rI[[Wfc >y.rއN_{᧞:O7*z>knܻ70:W>cHT;7- <"?pvLӧǎHh 5|p"(Ir0s?h7j|_wӑ+ʄ}w٩ G>n^X'̌0̏c`5H20H9[cz`$e}FO-Gu%U>gVq; sFEv{hBjd, չA9njG/t5Vɴ"Y0Qn; @ckKgOʲֵEΦuݸ64AI@±pVHDB PfLx|\848bmkj 0|?J6F}5A"hGh{$LHbǍ4"R#Y5ݻ*$pY2RRyYY5R<;uDu4('Q) }!l6[F[cX,K"`߳EYJ EX3<\)RW$otۓhڼ"AՓoiomQ#Cx0áV5^7trԹN'z+@4Mqv#6x~nq<_3N\Kh5,#J,k!Hg(Jy :R:E- `mo*9Q"= ŀ!˽kkI(YGTqhͱwkA}˄!!L']vP,i! RV y["WiR&H[)4&UQ+J{F\(w3W^V_=plN`ʲ(*C`"?:𞕔QLR !$ Pҍ(jf֣^߼y.rk98Nq5e dHɲֺ( S0$MefэC BP^ AK(8̇Bx8/-hh SGqUE ,rkcG 545O>ħ^t<><3w4u!0??:+BJDβ$c"ǻ;>/fTC! :ϋ~5y_@v*Q(~֭"F8@UyԑRQ%0*g- PBS"@0gYpL&i]~'F߹pQSa\G=*y va3*[ &." w4t}㜺/ywhɣ+ݲ :ikfAf}_fVUU{OφB . -*De~~_ GaCdrH $%A f,=VWwwdV7ӔSUܪ{ɓ<Vw&XfD鉏0u+{,fOxgc8 ]LDkٞM,@ Z b߄^x(BkFT²N&xx6LA ",]spbAX6S1??7W:C`ah'e5Η?y/~}F)1*@D" - Y'g 3y .GʪGͩp, ]sE/ D("02pЈ5&vvIYǠA0Y 0(, D׀ȧ9LwMF.UK7LuƵ|l~~kܥks82ES%5.|4h;GݟÅ ,3ϚU DB.0oM/?;AYV%{'ǧcW^ $ICD{̰H5hR[2Fb(y2%t癙}|Mɰ8<}V L w] ¤~YS$5ׯ^K׮-K8{r4POE[uZLV)8I+ P!5 RO>=6K²̻֊D FY5F?m:/2YEn U8Ԙr0 O(YNNffޅmA!ŝi&_7~3t_>xɸ77y߹{I]S(x1V+<::XڕX/ރly^Ď-#vӏ޻}-OzDfƈJ B05)LHf7FCjU+38ZhB΅[Mqnį2EQzNSK*˃e6_~{' ÏVU9V+okv}/GNJ #Ҧ~Xv vѺn}PFkSѨof̓ڮkfNjq:LruHy"|txmҭ\[vH"'?`ͤI~'{}ͳ1F3 zӗ*/+_,ADfiRLm W_y{wn޺5':l?~o|B Fò^`I,oGGG.+ө4R״_x*j%YZСQh++N=@'B@ADGk.ΖVM}X栕Y,\9n&єaS o&'^oO"ٟ$})]պ_Z/ xe(/r+GY*m"N$&6?SNG/ԶhTc]y8=>}ӂz3/KI%iCX̫˶]xZ;չO{h4,h8^t]Ҳbv5omY>xАάC' 9Vw"HU  Dۖ7&Gi>pZ2 z1ºvqFGD K@m-:#Fk$\gtq!@<ڸ_}ݪf}Qj&&f;@k 3r^ YtbSR+B  MWuKԔUztzx2=/ Ԃ[Vj|b|։UATɼevUНԮc(TB`?WoܾwE_3>;qz0kG7ϝKDZKUYV<˭(DVm8:]6̻ VM??^mLw8״\֌lj]E%F>(st:CQ@$]9m50R<7}x~2ΝީgY66RPDcn !jU@e֘`0[d7gGdz9)z:?+7Q#[/U;I/gMhOzɽpgww~t"j0=>6 G8"廞c@DB| a1VqSZ]֩NHU}ZY1:sܸA)P*9UfH@ʦI{; |1$Jm߷VG/Ngo}oS&hNA~j\ˆ b5.U/;f*C\[/U&FfX|r+Z}jxow-@A1Y3g9Hg`5)- @E>)O9@iҍjrZ7/ngymv9޹pircrG?vBϖꣽ P;oX4gދ1v"jL`2!1vP6Klzj*bt҅.wGLBm͖pف->r<lt qɓ m_ k1zk e"y}שКm\4=oDCj12)s:AĪp@ ߽wgsk'3&7ʲyw?@Ḡ (ƈHI"n3XDBsY~|޹ݻo}JÿjuwijܚޱzW**$\A WUVUSZp vs#eEN6ZTLHD ( 0 Yj"(g :y3Q@U.z6-;Fn]ôovPm>ytgBV(6= 4&"jRڦ,2OA\`导ti{\bTyZ[/w>8w97$ݬɬw̔7,+I;gxSGǏNT 'c:oI$%њ $ET >* $b97dyDߵopgsXVFUy !!$ !Mѻ>Fi2@ՍDFG׺{{IK mZ9X S]$M{P&VUS{r5U}5kE"2 6I1D&/fNi$~ wK)\uW]nn֛DcQl(sGⱁW̛]nk9J&W&:S.O}5O·^G2I s5_k!dѴأmNX [@ѹ$˚*xZyqm#s# 0iep2v뻞Ό%c'{~[N" i]>~P;;煥:@!kM}1,=NRwHd e\r{q59[&Zy ƚӓJ5*`Dژ|2k<h8ɉYη-2 PE۬,jWKHueM4 4 Golo{pNʡN4#u4/m^ry֥K*6J 7& 0NQaY <Bl@Cϧh(h\Yik њM1Ԧ`ةƳ/~7 `cs'xkk9_(x)'Tf^)0koLbFb $&;Kܾ?nc~j%4GL| Aa6]DwTM)Q μ+:yOku %k3 B$kA)M P ţ p憊d"tc:ׯz1 2*PDOge2gInUU !2a`os (I5\kv\9{D@m9Wa1gsVy!(*aq} u|S}}g UF7&`\ksVض)FMx:Emֻ:! "ƅv&L矛 ZO5IJe?{~hF5rA bjMˤ<@ Z C$= -BGUBp^~җ擛7bBl_xG?wQq_l7]3T WWǺѨ̴|NCA!,^<3M[$6m`&e\Q8Vke\hIlfXDiwr1m[MqYQJlqrZE!̸nh9 !((휷$!8E "]gMRf +T'eHyf & @F)%ǧkpn2ir~|xﺶj2LO}]MA8 6&KzخVYQjXbf@nΦb+W?M7߿5Pe61I5<{Ab._d+.{`/[5iYeIMX, V]p#sJx},yb⹁6E L0RZ ,LTRzTbnU*}P/xޕGys1bXۦЁY<3).Vu"SmO< }MJ3X")DPl%T]}tشl6|p|1C'w7HwՀ$?qw}cY-[g.{&8DbbY? =('U6z?=ۅV`\}?m\Ԉ YcP8ʊ*B!}@ퟴz27'i&Cm@Yb E'EZ;k00iUVu!"@9n͌YƖg8;a#ˠVu6͠,?=>QXȲ4( $O=֫,ϊQUϖ^y'GJoǿ;˺gP.tUU键h4Z|eyW>/>{0_-;c0Β,/Ǔ Lgn9"iR2Niab%q?១-B@PNb5X!o*C (sF`s(EQ7ɥBhWOof| U'>XNW;TJnD~K ڸo\JGܵl\+'ݠ+Uo<ޗtQD OxFaCfd2`ùiD %G}̫)lSS,Ti^x룽?{Uхe~~|ZDd3/QAk{uމi0GAQ۳P"1OIiT'U,h{3 ^f_HT|ݸedA ܷ5KM`CtFUPG) ULx뵝7NH'{{=$wcR FVW}ʊ2`vS ZdzrhFԵ!|R^%[RV`sb'&ty۳}@삵v6_$ư|fѣO6:C3ƚc29"Aژ;1pH"♭5JN%dx0_X6dV4o]r9>31ZF[+Yf%$wUzAn<{W/|/͛ {w˟[vwܻ{}8eY*GΊk/"k;?>G! Gq5OQ^Ȳ<}5B0Xu0dKWV?DU@&H|m%v %`T[*M+3>m߃p`EDT bnfA҂E(E P@Qʫ}(r޺|mKD5ud`<YE?[,U^._||Vn#]oP,ΒXq$"1YI&%cx0I|Nh}l=q 3D\ 6V^<`ch\gDm?5vʚT ,+*3'9rj@PB<#<GY7QX#" Q@"?o21z3&Q@VMc$D!BPn>=&$YYsIjcyP5A*zzb۳ͦ颮u9g*k񩜁=U)#yeYMٳѦ aVta]h|͋.;w 3o>>"`8\ߝĊp}DCbth#J_6=9hƅڦ^M퍉kH]rpi4'@YYe>>yIL,t(EQ->:Q KT%zRvZkλH4As x&ZzC "P$ʼnң<=wCկݫuػw?; (FGvi<7.O^ox[ܽsEn_dv_Ȭ̃Jpuf׸͒wkzq;3ҽV8s O&%Y×Lک:.wIN0~t+uXHD"RJY5Qs(m9eb2m8N'ܯoׅ^!K6zE{$΅mUU!BР}DhdK`_,ɕj4v@+ Y9Ȍ=]oN&MɅKM_eoҞ^3Y%FKic\חaz~gη/n1ꥃ : DЛ2ݞW0k<r-QN=ֱ;²J@zȢ"!'$IdB!J:CTB#6e??{3:Ivvw\&}Mi{VC* F0!F D#q<ݞ|bdkSmçw,6pOݟ>p LAID)Vǧ_J!DNjfث{@W$!͹M; p`>D^lKEY[g:?F!`h<ˮuNPi:"I,DAs]??\/U.Xv^A}Ӷ'e#5'M*KHpOx+#Eqrx0wݵmj3e !Gc ֦(|]$SIMW+'<gk0!覞yG0:HiM욺@^H"$!Ja!Mn{|>;Nn|h{ IRt\._\׫l4],fC߇Q'QEU]F4GQ:QEkԊ6(FBڮs?}L5c,WH]v%FǾCĘ|KwoܸQVG}(~_ zwɛo$ϊ*׿+?G끝,)ܺa1)b{{"b.7MD껮kGxz7/@ySfgaa8Y 6Qf`  A1@/Piz7 8Mlk"k hJ2Z+O,"hQl #2P3w.B ,>D@D\ly:rV~:&1" GFAm"Ơҷbo (Mx8* 6S&m#'Ro>9=yc^O=DBg6"\o/LP֢R ̬1jӿPwC,@LY0xZ7_v)y>jMɱ/OLBQ%ob8Lʒ Ǘw+Ϊ qH IDATdc\npwں;QgDӵ!2%6諪/]eŀCH )M Ez x4zcz-#rz[(Lʰ:$Jpj~?,7^W_ևʋ/;wݽo_?2if@BJػ!C̠Z)6zQV 50?97J71GfpЭڃ:EU~b9ϖe#7ݾZ/\^7;7kGE^lnl__o={cUU;;w6٘L^|E$IEOˬ,4ˊ M:sٻwo$MMuR #D@FYBzU/-sБx`jt4K`2AF"B<" M~ΧܹcK &LW]۬ZڝXޝ[N\#Fߓ>w F1j::Ri^:Aݹ}c͂:t RErDQ8snxb# ;O~r~g ;^4h $(pw?TrPȉ><Ω̬/Lߋp1*CA((  泠x;P-G#W8vGDAl1aA@\p!.+2RT T`ՂYT0G- 6lPBc@n$a4#nvW6|Ec4ṶVRMGbdz~4T :' @v6re{Qň1" N8ɆbY`/ `2AFxyQ>MЁp-mvmwa83EJ_` بϴՈf %p әZ([n鯴m2ﵫE3#&Y6 ӱcfEQ.n;VCcCГKc_kSg_tbteO" 3+*MyXCZG";㔷hOi;ES2>a8,@a\W8[7k߮3'O5X,Z|DZh?&6 ۧ*EQjFF2Mp#+Tw}q#Ez56MFiw:3j)*F)qJu˰mDfǧTfyy2 l._ʍ޼&F0H*jX;߿ZOXo}ssz,')e "1 MӔz\r:N,`@1XSD( T"Q&l۫TʜQEwI-_8 -:hAx'@;mBU P#jtϱùöhVq +p@1N_XYĔ11bLIEO~-KOH>c&@Ƶ_"I3햪O@5@p1^8}ڿ?`=2e!P`cbrks"6׀w;eLK+B  8T1 BPXTpTj9ǂ+uMW J6 E@SLB .,-DS6VTBx :,.]qTհb FBH"#ƸSD ]"Bx;~"@ #a$8 cHݪ rtu0*hW۾&N[k7ufQjٌV[6!F8WFD:Ёsy5ZH.T{3e\&@@B0Ze(b8"„8,WI0Fz`u sR ^-le[jTzr#PbNH RTFDR85Y̊DA%Ek @pkb;gPr``֒mO$ +ĊE83_(D OV ``}Pn5SU58c)zU֓//ߺy'^_y_({.x/"֨m( HfR PuAYEHD-F W4m%J9"+$vťh4yn,h5-4ETJ=<9Fj4Z"x21=ujŒiueE,MU򛛍zc3s6"H`F+++_Ո9<08:28qW*`) QezoX&&XAU;x:XVQciw0 @KRwM=>M޼ƒٌMϧr@s("AY>,M'VU|sĨapƨO- ѱ*հNg[D{}5۾DS f{RqSjEq-SQ@JfȹsJQqRDoyL#ˇ}Jƺ,9ǘ؇ y7IV4%18<Kgg}< 8L%410pZj4[U+1&MaEU!ζa) 1!R@D"| .E!cPB1pA H)#h? \&Kdi:WJb&2 SǝcölY;1A1(s*+\̊&wb0OGWv@;I߆ZrLe.v`2 ]L (Dab) ^-.OG1F2߰\SˎE^i23n3gzbp#ޮu[vw?x7~lB%$M/mVVj-a9\Q!U"4k1bb"ՉBN'GR}{~~|`%A|/R/51TF'WD10kHGTbs\*WJ"(0&=_ӉTp@ $=?McwLi6 wlmw@`*A1Mbদ}[Uئ*r<ΨӀ#!H<`L4M덖ykq$iZvEd!iS\ZKeﺆe+=eX)MMO!ebۭN>g8LIéXVۨ5I&Qi8ʯכ-Sҩ$QhF9Ģ1Bh[먚(VO?Ct)@TUӴf(!N~}7NTSGusV!q0iLb%rnU!|iL-:袁7げƂr|>h&4ҿIzMjb`"xvƍ>k c #g_`+S2ܨhg#+ ƹ \,ԪIm@ca&OrÜ ZkkJmd7m@3XTr  0f94x@5B @D`೎ <vnd۶9\#yA0G|""u~ލk޽*< nEM(iJ&Y5Qh{zD:3ݬ S7/r_*D8s!8_ 1( .f\se)1t(P4Em+DE8ec@*B(vpd.,WUB`$ aߓFsʵ p.\ L3N"aBS8Tu`Ęh;R!Yo !}wXzn9c[ x `,W{ p+ՊKT;=DR$<8Oe\VkЀ<x\NkN#EcrY8?xdU(lkՀd:7s.'8Hf4]щVXηm &Dt(f+:tbtKFhFED2Z^ZLg3p(0wjf:<˫ӎFcHiD!cΘ㺪**!`}rsЁX걨CW`Tb"`ʎjY!AS0.^O3abY#$ۗfi''<>^;H!$Uo`qªzQU0 Ќ|됱V" 0W\ s\SI GE; [4l6=C PJBQho@pY)I"݂ӀwQGx_;SGv h6 ~8ږn "Ů ! X~0ޓ[Y`0xE;z[f|2a :N5=RRDSO_q-9H<52Q`:PrN!. +mO yOv ӱd` S? t1'eTQLfHR=EC :m&#=q 3U?gjo>:o'׈jÉ2[ᄦԏA iQaP!CV'51[I|m#Էqۉ"t.K dYbW1hOv ٮۏsH{~{M@,pIDq:Ө jB(P_Qp؅XКGuij=QMY Npzhr׾'8,(6me+B0B\HT\*دdx0tmm$fOx$b C@ABH&b2 B y:Aԝ* @c7B H6B#h.`vwV8ڳ$"igPwVW.O!Ii;/K{=!{z /c;yQZnF^kĩSK+aAx$b14TE1Mj4|[ŢBTB @XD%h,pLH:bv햢jx(JT:5|PTQeܲz-S 5Gu4Ư7Q'7#H0HUճx Γ%UX(_uZ=FM0ѿgr(Ox*IRUzc@Dǧ!h7QU?r݇>M{'̾7aL|ƕYhtmm<#$0  HιHO]6!K)FR׹nC}4ơA܊o+:o! qQǓ۳y1`0FD^=eS,Eg.!R՛7_VWKN*e 2iWJ .X:0Bl#V]z [zShdYu+J2jVj|>Sa2k*RBQ?0 6U+ORzgF' yVՂm>akrjNg並(wVۿjZ/*Ad2A5Mya) !t],Klf2!"i溮8_^@,aP+FZ2jI:D"UU}i! B(}~:#b/DKt:)i_^#8v{ۚ"!54DžDBVb?3%y\.]ۊ/%Qاɗ)`/;uwMHwI1cK/ruq>#zDkJOBH>zy }1;v,CRZ;ņ^}Hmaߋz-t}J@\B{7G ! {Gd D"F#JZ-Md䭻/ܿ/Bdj:::*Y$\B !EyPk!yDJDE"us!wBj?|= sd2cH$L%5!BϴB J)<ɔ]=j5 F nnvL49_!._jnݺoH@RPU\e77˗/ˀLht+(" -z2qN1VG׿n6Vbv!mۜV*X#WFMOO_vR:==]V)ιmۄBd>UUڶjm+j4ɷfSUչ)4 !g"<@q'ロJ~G<$p]Z]]_~n !!#{NV`GqOMMI%Zpw.%ڵk몪pOӗB,cgq]N~q}{xܶ핕t:9Z\\, w;v8s0,zgff?n 3MS2k&ObX,6???99i3<o=z4뺞d$SZ}m_%]$hVkhhW^m6ʥK4M}'>~>s>66ioݺhRzҥ b8fT*8q?i<'X8K/7;;2ƞ~镕C}2{c|'Of2Rteu/^x)BUU#iRҋ"4zh4^|Eqz{{jX|_uy4뺳2?[֧~HQء?{EnB,,,Ȅ駟O:rP6u}yyY/' HwyW~_EQ4KR8|st"f7nH 'OfڵkBztt:VWW_~^xann###Gw+u{{!m">$=~f ƸRlll<.KwgՇ\M^|ʼn|>(J(y0;wiZZMӹ\W_}նmu !l!8::zIUU-!D|xzw}z~鉉O`vp椰<#ElW^1MݻNs.? __|c\V17N>mѣG_}RJ m:t^ǎg=z5,+liiad5ݻw''' !ӔRNNN*"S.agm }g~D7t!!į~L&sѩ)Xպ~'<ϣJODѵᕕx<{KEzE:|@9}3<e}JyÏ=ثiܲ'O<77d FBakkkdd/¾u~Au:?׮]k}gMjq{dۻf 8sj6ra'ƸX,~׮]o_·Z믿.E {l?99xwpy*kTCcғ`YO?|cJeyy _xqbbbxxRR,2cLQJ2;;{) !Jx<)݆r΃ Nbm۟l+3?Rn&9x/8:: L&뺇:uwFl~ir )RT*ϟ?-"c_etW\ېكZU׷n߾}eygR:Zz4NAшD"j\.[[~\xBe'(wi:Bh```vv1v…d2j+ʙ3gz{{R&cǎI͛dO<חfDX @JNWGQq.Flȑ#333l6 \NollǏRL& r͛73 IuwYa𮉗^,7xd^d2nkyhRj50nܸ100y^\bfsccΝ;'N(1Jmx\dz!D*84Bjm۾yɓ'cXPp'VH$|t]QT*J"x,˒f\nZGǏo6D"+W;vRd_\iu:0sH$H$ BF,;tP*,, +៚- !t<DL&366j Boo/!$zH$92==jj4RzzzFFF~rcccBaxxxzz駟 6yE2Ee@!wޝ׿D~_?7\YY9pUMhtnn^3 ?y,[ZZoO>Ç !.\_Bo~CBRz#GDp 8aaP$ 6x ^,tqQ薫WH#E w YsNLnBȾ2f577w̙2J ].?7|3L|>>>n۶iW\rdݻ###sss'|ƍ_WJ:k+++9Y !+++VԩSݬ%#Zt~߽+++r9>o:ujeee``@n<22iZ\6 _,/_NRl7?7nd,X,~TUΝ;wճgϮ9sfvvVn\=v؍7Н;wRDeȋB-KS'7 ]NfE{A6AԅŒK(O0R;mȸnh4ڽRE K]Bqk;w싔Af9R ?܀...8q"EIs)|||_]&HO>5M,+LzwكovٔϞ?G9vx\T*[&IJR]04 ۶TiBT;Q=!Pn=x:Й.%S=z1dؽj:~.Î"WMUU/\0<<\*&&&Ν;:8ϷmMlxb&~ꩧz{{z)E9{K/tʕwyDzw,5W<H!PiaױJΜ9sv-;KKKgϞ߱1',Kd\.KHBH9===ΝpႮkkk/^|>99yر$F!oVeyyyzz:4Dٗ"H.AꯙB"nF;;vlo0/xR$U=iކ/W)AApX,&o+AR) nݔOTUM&3_*r|>z. cldd$JMLL$IJ;saɲryeba|>}222kw(~۷oKdVXn6c¹VKyݖ,ftZyz]"* HTRit|U,;N:+ MӶVWW%&˥R'NJVUդ}ցCq|;h4F>ty*X|%?ȑ#aErJݾ}$BHǤv0ƾj5(Eٶ-crwK)UU$0 chh9ÅBh|_fj'xɓSSSÇG"w>d錏L&cX"u}ff&9s&ngG)rnG֖mۣ499n>_]]ؐͭՕk׮ [2d{ڵ7o޺uP(,--E"K.˗/'ɇ0ƥRw9x`%H$$8q4d2dѨ_p!JR3g-eY> ,+IlNZ\XXn(kn#xkk+8p```,4ٳgE1MSJSOEh4J1MVE"G*#(-dzzz9,Krc.NÇKy0nl}}r\({7|뭷?44tեh4zՉK.V;vX,?m4W\iZNu]]%zɓo?ItRjC'͝={R{V155y}/~ [>~3777_^,]o`` ˈRݧi$Uw,nJMB0\"8u:ɥs )5xBWfw=}$c̶{R4MEQfffo?k۾?At]{'Nd2?xg$KΜ9rBPҨ?rr u]œ\}gb!Yt``@BwG+#GEQϮ"J!T;44$?[!B޲\.9GFFd`iddD뚦69rL~2/N]۾ ]{h4(O?8gϞ;h4cNLL,..Vs?~|vvѣ20~W^yecccyyʕ+g BG~ ]P賳êdÇߺu+\YƆ^w688(3gϗQu?G JB(~(,'_^D9p@^\٤?Rh4rw7fSĦ%RΝ;wΝ#G<ӑHDz'`*zLA|>/`_Ν,Fcqͻ&] H ^?ؘĺL^"4.8sw_‹a—r=>B/y([o3q}zMB|I<"]xlJtf<ohڵkaDѷzKnݺl'dE</˹\lz׷[.>r!/..r'Nj5t钮?;<^fxп\>͚AxD}x-wjCȿ/uS ;?)=R=ByD}D=/ c]ib' q\0!$3t”bI[Űr%O!˲0tK_lvw^tm C*LqB/zwˏ;IջRI7^ENzf7SϸxyWgaaz0xor0 ln;ftsBwK|PS$N!P5ʉ~{ơ177'1?ӬK{P(,..H$rZH$Em{aaa~~^Q9]ם }߅C[[[@(fiyuuݫW$&4%ݲIYߎn;DnmmɌ]8t])SSSr9,U!HV!ToܸQ,5MoZYk!h4*z4T*===b'I]IQU1v͐% sj2Mƍm{9T*kkkHDZ4T*LfkkT*e2.)TUUQYsDظL~FANi<;R:33juqq1$RfJarpfffq|z$M!ju~~ݻ\Xy_x͛7{{{,˚-aHdXvaqqQ4ɮ+++dR2I,m:VZ^"pRP(t:]ii'a=ϋbdZ&3%.+;?%1"txxjI"DD&''$c&->iOjL&yr|f8`l4vm۔ҁnIDAT۶eUEqt:m۶L]\]]B:t(7zǑ0 isjO*f$: X,&accC{'RT8XL*.e5GGG?Y~](JA>|XeKwUU]__?t萪===ccclX|^އe9@Y9/}}}htcc#X|Сpэ3zzz 8r䈬:zyto?155뺴nC!PBe, ǧR)5BUU%[166fyeYccc>Q - 쮎+f|VJ}/nϥ*|.K|s,ZnejAh4:::ST Èb LLLB&&&I$s \5b,C- HRH[[/gnK>=]3A7Z_,KJLRΰrXdJ2Xjy/$v[芢lll,G4%UD|*<cemllȥE722R,e?GFF|ߗGdb(H$벖^lY%4-2LTEn^SJ5Ʋ:>sﭪ[]U鞙yc&bM'q@EA((1aG,@$GN@J" 3JX`~w>c?NW$":us{Y{=q#}cȷPCTiB jo;L.3gΨj$7qXsѡSW6 /"jgiJۭ7c/_nҍmshZٳg?~yy&tz^ڵk8<"=zfYքЙʕ+M2Ԧb3ɝsMhFcj^@ki(dkq3sss!N}N>}ر2WnBJ[]]-ryy[z퍬=7(z-o=#;}C!vlyW=Ƿo{:m孆cݰvN[;`{MO<:v^[ X4omr:[A:U<40Nz/nˁ<1;;=Eϴ{h<[n>g #LoÔ7Ξ[$ݪ3ݱZ{4Wݷ<׽`Ƞ[yGg5azbv:>h ZgTscfު jءgzs{!L]-vgs{7{=N께}ƌ3f|rO(,3f̘q/03f̘q03f̘qpt Ƈ9n<]&:9]5EJt֝nȌ:⋗.]ezO}Ʒ矿#ayO^xÇ{t{@쨾*Qm>q! @  [ ] wƛ)0 (ARh.4p@"(I-~Ȼ)ܸg.0};%䡔߹xzD(&q]6=&2ֿw+!anX(78u:4J.ʔav.՚EUY% (4QTR +*%/̓^O}˿$ȥΒϝ˔4 FkN{N/ K#EBDPP@@l rDPloL;݌3>)zt% > {= bd``frQ0UB#"4 dw/~> ~_ٿߕU8M8W8ę=M:/+_u#:dSf"tcP*z{T&WٞΘGa@?td0d<&,!>"iad6M *H *AՊQYr;,*KTch¼!vCGm'C ˝k ƣss,q+xIG˺\ jcYICgܩU#I0m5PH<>gNwo:t?8m*'=pW5 J4 WMKx, ;Uꒁ+! ȞTuIWO8򾍍9sn4WX=NBd}IB%Bf9kF ibTO7cEWQAQUUIۭ/B>/\/>SL?_o_xjIL kWze≠ISI bRN"p,+w-`QGL|9  aB DUpI8rMY^oVb({"Q)C%ӲƠA /(Hals<ձ o*QE$8\fƽϯx#;qcp|k\"Κ&ƸP-vϸwI3äա̩P01UE8Y jP*74>CiA`1??Qvٻ/s^sɮ<|`0YG?]S9k!hRb@Hf^`WZ}+zP`MTAx# nL NDy_Zyx%T@O8䉣o㰿V*{ceEJ:2$Sb'_8X7&V%VWRU&D K"Vq<(x`|Y,ZzâY3VSq\ #]YK?cG5U"j#">8}_+6:+ַGĦb[`U ľc ϸ!pgaN>DNs"b $@DCXm(*mw)F?r >շ\xI`C*e1^ٷx+͍}Np4XY\8D4 Xw:,[czUِ:61 alakC@ 1N@SI\q z=~_3/,LB6 "T"}G~oW r`ƌ`$ZY M|?yt󁽃6~djV’:;m)rIنFtFJE %foUzR>4u&m2Zh)[QW~g\1b_ dYzS栝QO}qhFQ)c L2ah&gC1諨Bn<)\^IvACbAT4((ֲ QkW._B풂m8Zâ9,6j-sZ8|`q㏠RIM%9PC.IX\lbc(FFKB༕#x-:{3kUB^2[r {G=z⁥nqA0p]W^ׇ Idhu_5G{k{k`dm`/bE0:Cu<$1w]Ϡ}h 5f jЖ^0L4f&7 4Oboqi^q5, B5x(.OchA|Q"A7G/VUcK^rli>(=[ꕣ}UbdZ" KuXRϸIly0kk@Rj2jmWEQJK&"Ahb$eGv:kk5֥/GĖ8bdLa^?(?|G{­ST"yB"ilƘPWZUUF#5*D"EpWiܹYMVyiZ.`ҹX%)%F* ~ issQ5OŸd咵}KG LZBjkRZ =P %sq9~-rTVĩ^}V*ebV^s*몊wD1"JXDQ]!bĆ9Ak= IB%^0u)kW7xd?1ID E@\x@?'_Jh8^M &Zb3{ˌ{CIENDB`fdroidserver-1.0.9/tests/repo/org.videolan.vlc/en-US/sevenInchScreenshots/screenshot2.png0000664000175000017500000040417413243530567031467 0ustar hanshans00000000000000PNG  IHDR65fsBITO IDATx{mWY'=Ƙs~>9 $$򸐶}` `7냦 ZXҩKth v!BD@뜜~Zs1}>{srNmUk9so|-@b)ƶ><ݥoxm3;SL=r=W fg2cؿ72czL7:{}{|xl76+ongggweYK_҇>!&ۭ??Fo|?OUURo%)7n۷OF;5<|!x}ryyy0w'ջᄏ?kkwqv]FDo;??|+Eo;N1)OO;wn.^su#|T{{}7C=|.--x㍯}k|Apnӟmz؏?~{^o?| ox^W/??s[~677w񖷼|4'WĔצ؅o??>?r~\Hgs$Iy)slTE] B]  bfLGn@KJL["!E F3*!@5-=Wu{+Dbٕ5ȽL,j1U"Z,2wc%pu]#(VU uT#&5PUh2!%I`F1S0 "5ED@t]:U-bsCB.s1%Ǯ:Of LSQ5WywDՅݖ `mɕĞr *G0C#@jM'520|䗾8>1RL"*PTE0D4,>wS۞m-϶\G+gbp~}}es:G @ =Zo]sh;ɵsҙ||qhXˈ1hp8ebB]Wp4ϳVgk͝tZZm>zj^n+뵼$ڿs- c3l=^vf_:67ęNdͪ`#<;n/}km'^u,N=ǐgtF]Zt_ 2IIU)b;+CmxjuøŘ,ZYVg:)cγo坼0E^?0[r5V6tk34|| }\/|?ybŅvVD`mu]aݖ3+a(d|՘"oqJd+qP8%KIАw^Dر)"&BBD5E @fU/ڿqaϞ:@V䳭|țƀV840N=?7B,w3Ks].>q)vhg⥄ˈ[xQ՚ؼ%oB,(tQlLqc3@QM$ABk# }eNم٫Pxc^QHnl/:A6#o֑x4 펣\Ge, yToH2|OpqP 6$B@K"hNRJ"S:TI*bB'`!,qq0!a WQgUCr)b]<,-,wﯭ\n1͎/zN=5!zʒ 3/=c_{,s.CĘ" w @U bIuI"E)ǃRsDXVo;4<{e H!&IJTP>!P#^^¦F-1.8{y M4Ͼ.jnRoozsO˪p*XƏez 1wu2Q!"Qu"` DI Q5́7p1 XJE4}j|3T4 ciHݥCE[3)g(D0/,qo#/?b-Ϣ1J<U3Ke[e6ymϵğ\"˘TlV$qKIE AMSEQ;׼7"ic@rf.<*[^ BrodlfL|w$5ӫ1Y+y~3ʲ;ngy|ܾT&4{?#LО7ѬQH'?ç}}M~;Ų= ĔpaDe2 7Cxu~:w`E4 -`18_W }9T8K km8VAڽ<˱rr" H h%$i$Vl8Ntb@$DD$$XH3kṊ#Ve)A)vs-v񛏯G& H ,$$$RUP?5m-./-/XZ:xbTn,͵Cecê:Kv]8791,ːy11vUs%+7g@H`!F33Q@ fBHb䔬R:%%(b " ϋv)r4*,Oָ.Q5ݹӧ*nVv&2&2$Bd"Ȟf7ƨSO QlfFD&jSEB5+l}0(^3 ޹:f $SÂEL)!3 2!*0y"RI.@dC0Coj6~FUAT-nX\XZ\Zyfw칯=hd-P(/ם1j&2D=f,a9j,0Y T!l"#"V30˘fUw65:!j-"cSRZ>VzzUƖϨ3ޢ[*ZE.ӮD3] ,N{;ilS1_;˞;^d ɨV}}:0B<:|uWCt6w|o`8¯| C:P- 9XƾѸ\]mZ>o|[ˉTRM=ѬV,0 Fyr~\G,9OPv8sEC!TsDDJ7s$VuVV1zhq/\oA0՘3q(C v[3Nkx!"Y2>3kj `l\*_#;F034@d0&@ ٖ:fK)*"IUYbhgrDs2FPH(J0P(e]rd) 5 !FfF!ldz u B{؈Ho%3S'NruY[3u&V/_7Fuwh$4^JU֜wHA ̶| &9ff93A4R0[jlQ͑FD Yo~3}  NhfCkˇgcٞNϨ]hjZcslenoa[Jռ%}.۰yr/HB=`[(C lfi_}!1 F Ѭa4;EAfMF*HD.VX0ϭ-eGiu^aTյƠݛ1$PV/+ZbDCYVhonVUϮ<@$h@j<ω9`(F֌SS IZL4aH$9gBM3wC*EgvkqiWF?$0@&z3ēՕK!:gYxMs1Y0SEDv k"$E1Ef&R@^Q'%BT) D6e檪 Uc*6BcWV"/Nk{2F:r׼6s<Chu\h^EaHeU!ͲTPVu@D&f$cAF44 "ՈHDv{훛vO?.#C?_*쉔/htU7 o99ֵ$uhʹLj B U\׾X/蒻8no_C.,`^ m[f=%i^ugI&cQ|%Fh/8/F3s_ l/jH) (ppn0x0Fي,!bof ,UF,,˕3s0>q'ϫaQڐ{5T0gf$3$-̵fdn(2TѢ""He缘pJ'bI&=:ÆT|:ѥH ,^QzT'Qʻ9v~6ko&S@$$Q1$j# UˋD ijlkIMD[eUhbF@8Չ\b;s!sQۍw g I-:hךJBNWo.tOJ"I @H)"DDeڶ; 2a"0jsrm\Sg7'9WBvz!\㤀&u 1pdljH 5"33+A @E@̴\nImllĀ98{d fx_U~a٥W[ھ3<믏WW6}-u|Q$2 IDATOmeq%^C=|14= 8\B\˸ZGm(0mwV>`"[9zw[/?ܛ>p'Q=!wZVGe-\xxpX!ZG9 b l2!(c͊|rmwhn暛^o*:4' euǮ>ʦf; "j 숄]0U4#DUr]9!م13DLbN-eҕA6GԞǬ3a(DS1 !22sCKĹp$%%D T1sӉ PK&)\H1$$ܫЛEDnǕaF[9 YΤ/ĭo0@%Cii20wqT+E}kqMș2  8b*ѫ 䛶D,R8QVUU'qdݶZjЬˋ 7OuL,~wp`ϱӰIi0oh,dFaN*jfb@$!:eDk29J vxi&Zut˺-hp|Թ*DDD33bF%CjtbBbF['ΞqҌ CcdPJLWYV&&R09v&IP 7bl T Vjb5E"Z4,\ (R!us1`o)!ƌ!J) 'Ad;V$iQ{ pWij]@4mh%ŔjAkJ\Я% ˀ<׋R2$bLe9̬Qj̊\T̔jb"&Dhb֌WxPmZ`wbqRȤ t@C6V<s:͓`+wvsm4 H@ Tҁ{vnF=.t3[7ʆ΁+P^|q@hhwz_CgD>OVcCVXg|#iYJ{h{}_CL@,yvQE$:oQ8aY ];k6N|QLԌTRaTB*J̍(8)*^S*8 336PM"4[_bj3R %AKΘ[Ď2ך"av:on+ou]qRD&n#I$ԩ s9t "KJ"e>bU4wCެhwY1^QY)2ȝLZNIpb"tE,5mXMmgSʰHʰʺUq#ÁEHĩY̔&F%B 30,/shL |AsL&`٩hA@F*fEh0掰R4cKh8bd*zG13#:Hm}''رNM"^>O [WYr}ڡHLj[*O6 TKmpuTYf٧q)FqT}ǤE;*YJĘp)9y Lg1'Бׯq$3ˁ0*PFqB斗|Qǣ0G1^vX}*AQ:X%&uz\ozvio3{гKr.%?dos-"% _|е]~ N=rmtg 1K> guhAGF`B2c`DYas3Vǥh\@hGSQ Qn!;c䘧SɔhCWݐid☹=9Ę$qv~αZ UL ֦Nct! bJfH>vlidUUlF:;hB 8ƪa7@ !tα$Icr\ΙQCgg3bB5xC¼H1䭎ׄ)s c0C] ALXa+e9:4fjKGC!7_n옘]yBbuẃ_~Սqb*Ǝfvͮh1ϼbyf>_3383UHDcT3IL` z3s>v๵uGͅMB,벿IZ3`< 0V;˻ƴi :K?R3`$"#ۙǂLioWo x^.fP@\ww|ߏz/~O9vUqd<"nk\!Vf=$bP$ (hF.,k%TZ즙b>m]EATL(\9Q 1:jUi!4C74u{u(iZ a5jm;Q, /EHE1F4$0m͑(mO*Ƥ[c&;Gi|TcA* 'yU5RDf'*&"x_TU ;SP u`J^Tsj=g%tMv!f:_ fJYTa&,LLԢDLARJ!˽wNF#FS'hT&l[s+ ޶]`H06r\2%WܵWyG!%r#>'7d-T0f"U5Ju cLdd%ɟAKZ 5{W}RUPZ5K7}J(>`Bìg5[g-F xZ3x* t"I( k}o;Ŭgf@\D~nߎژqUЌ]i.HfG}SLk3RDD5#_ύ!; qbQT9 HR 7\=x'>c$T("fj\ t٢ I #W]52 E,QVס4Qe*Ϯmb 8.v+ |f TR&%5RIAEvF&*;n ",fR2v슢jXX>{``̄՚T 7{NΝ>=91FPsUĈwD$)cD4UM '.jȶuR#n.s !<@}@s4 dbc6BDhѐ5m3y^1Ϸ-D!ZJRשӧW>OsEDu," |>"2p-t=vD8{&HH8uQc&IRUp9]Yy3UZYYRGܬ:"VT:UYUwslBJə=e1z̚h-cQF|kZl@gAU ;g붼?qd-&j` fMA&-y?sf=cl ;31 9H"QD"iJMR@jLq<gy> iL01>TU=jɬk)fyELvXUQGxY@` {M/sڛX%a6sF)#ZlR lj!- -h_i h-Bl5bvWfMYY1Go9̴#|jc׎}6srVO|^@Eת 挣zV}=c!s!"ڲ_:! Drąw09Rc<9 pwg:}/MMض۽[Lˢ9u}Ej?o}!]E<Q{n lVfuL$iƿngN73_vznMWs t45QSS4%P]kjݵm ;~r!X97شh\Ly+J.uq2Zculƅ02e!"d^$-Z;2ppТJPEY9]\ ϾY5~>3n5W>w :޻mDw}k6ج0.BDMN  *40:J?BwOGm]S iR9!OFU #r:0Y$ff\EPTl5kg7lٴSr՗]`)(l=߰~g>=}V~L͆O 5$H)j$)B)#3C&S[Pӻww*jhL"A 1ؙ YlUQSO7 ߭$DO:Uuvrh=S1m6+UpwZB`Jc物k;Us/ш" #~a.Oɸιk$15^<0rȹ;_I:f_Erჳ8W64PeBsMĎ)r۶9BѨiz * $3Uc島&m/3<1"Ɯ* һ;.lul\}+vwwܾ]",A@[ޱ\M;EVϗ_S0MI;$+@;y5CT_>>fF9)+fO?~j_~y0ܝ5_,?\hDNqYϋR}9r%è\ݩalQg 6 Ao*:mܥE1ה/\Wr]7췅 U!h!j\ I9QaUS3 en=)gx4}qX4&x6* ڞk'8KW50$&C#@d2PLٔ!8)Trf ĐAPףb4DBp˶#Ћy 6*KXT`WX4޲rJ*D`J:h!Vs{Kc6 ٻ]lEXmugm̆;ȁ)cO~~}u׷v'3F۾1veU.VRVE$DHNrT3Q-E`9@)9"&C{޿~q3Ou" {ܟ_YFc_ÿ}qzx$&pd'?3IU7;~dշ&#FQΩFt@ l82R A*>qMWE/4.\V0ARD %'y"mGf_ݜiw*Ⱦ:{hěŬ|:>^,{Q"kݹVc>ޔdZWfBO"p֎ȶutb]!a ͆CYLDOSN&/ZH9v΍G{w4G/{>H=qy;v!ciA l SUcb%"@<Dq>8fQߝkKhغl;{׎sYI(x͉"37,Wgmڔ0H\ۓ$kd)]v#H>%`^JB~-uN/lxy5JH|DIչ aP36oJz_/W?_flc_9$1)hQeU瘘QӔ IDATL$X{fLN0ivx~ztxV@u`522M<2s^wݳgsӪvD-I٭N[Ό& !¦Y߹6.U5>wT$EpQ{Ł+>h9NwQUNkPO^5s; sŨsf/&{G MՐX  "Sv0/fYXȌ ri2;f,s^r늲TU#2o$6*nSy:081weYޚf!@^ۭgm\<]Xn^6} Tpk uq?$ʒIјx绘4RQղ YTDDT |Վ#P`̄"h:0,TB fH}ٍ Y( #@td(3kz {dl7׭xӋtpfws˿ŧw?OV8p)t}61g0,vJq/" oyrgXroƭO~\ɻZ :-|U_X=>8 E m,%D1 }JT荛w>Uk;sT0TMШ($r_]^zՕjWmے•Gvs`pʾFj䭋4C20U H~4,M9ƔbB'OMAlKw>€ 1vdEɫ1B9C0(}ڍ;je+@@d*IIe f jα0]16};ε~p8Zl~=oF?]i߹P%NJt 6{rr,٤ $i33^(I%'G$Lh41.OgIl-~cGe1g@NDz"BpvL)!#f"j`h Emp-EPb1R0K?d T'uY]EobJhjS}DD%KM0mo\o7볽[^LE-/b݅{\Szӽԏb@.{Tsbd35v[y%DTKA7:礪'Dbk?ex7& 9e56qQJ+q[&vwLewROF3)8MOOcmh.XV+PQ}q団]ʸ|F;~ݜϾYmaFn|<8s-`R ;صw<8kig;Y\]A*NVE5m64gɂ`jeI)gE$&ʪ``x&*%Զ=?eD~6˿kB6Q2*ɥرQ49AϏUOFȴJج\?dS$+W̧u9CtcuM .!3:]~T^6~sɱKG`OJ9HWLU RD}(KU5Kd`9wLS㜕HIٱj:Y6x\Ԟb`d  QMh䧣QL7 NZπ3_3˪ޙ=: EZJ veDlVlTCO7g~g9v=?Ӯ;;@oN;{L7zz^}mv;u)ʎ(d<{ޏ8ưBP24_۹[ʉl%H_:>^p7,Ȳ7@ji]˦mksRY=tK?xhbtF>b2RVU˓5A(S*JO%;viSj$A=d@} )uYKyɑUCCQec3ˠe"1e$̹|?y]QtM&L;Q,(՞g`h>a3',*L@zg6[ǜ:QDd lZL{O#;Eu5۝N_Lgh(1"Du*#dQ3BJ*Α&`f4EDC.L4.Ɯ A[ʹdG2t' IVE듘cfieŦB/ otrry)y j0xų) hp{|``/ƐiTUfb`Ĉ@='Y1¶XhDHjޣwIơJUcOL館}nQD&g)nHɴ8-x2vYG=dz1_/# K|%Xw3ҷ|k<]YZo] K<a(Ы. `rF:~uIӿ??ӯGϺE?v4) ֭DE54"T٘ M@I s ͸QFFmRd 3A3s HGSY/W]η~w,"Ĥ]$xlm:8^-> mwf{%q9?s;卝rVFRRղwnLeXz5fvnfX ډsEe1Vo='cgjČ3;IΈjuYց=C4 r٥rN`1uY.Q2]U ;11 ̄f($[u r:_#$P8)o=%pt`gWU/a DZ5ǫI<4M<bL<袇AAժFāj/ }(cbDd ,@!;>އQ]d/槿ŲaWeIƶiC(Bw 7vcDŇj^ֻ# ,ffVj2u)ulßuhs4_sӿg[]bſewDD|˜WUnv~KvfO՗:<ݨ|VSGT $L L,*jҘ`+3֍ǿQ՜y֫vQ;&UݸƸ{S5ol6M5.M)f$nfn= G,כK`s.xBk;yO"h(!!CRSfUd*9G6.X]$"#2$Ʀk#r 3)DzSjP%8 *%v >X;Ϙ 0# c"b#6OL[ u`-P*/0{$f^uQ񏞌6M|wifΒE-h좨!-"n^aQf@gثdS( k|tt&ie}]TWtԈ}v!/J.݉U<%qmm3wh][}~T?Rްŗ=prDK`>ٟݹswǫޝ)@djٯ֍!J"$>[LLR}Yo_su*䶉 6 ?כI&MMA3h}0 eUAPG;{wkqrd %͈\@ǣ&.--;ٳl7,MI~w\ֲU ٨F6}ĔG>McӴ0Ⱥ1s |6٩FDdi DU33. &Qsr.1"]B?31 2DEl6нȇ):`55ET,4/T0q+*Z;>wx+A[-.s>Cd<~f=NORQ3ssg@D3bd1r=L8 3䢪Fui8`=}=w|.*ͦ,g2UQXcsvE/Ʈ4fDЬΗj#u1 ^簿ulTWL7t[pAR`@>#4/?$s^5vpy=jR =Jîӣ/~ѻӛ)k=E`yGٝ`9}U{>z9TM4yu/|xyMf4& 1L&6м[ܻĎ/[!MC`,` h( dJO셂|a'69nzcFd H.>6ލti7M쬬xTxi I0&-BQVeQ:5[meعsDMlE" WpѣGO<( 9O} x:J ƅ gh.83Xj` >رC2U@M9E(i=3BةZT E>[K XՐٜZ:sdٓGuJJͥS/og i8h4{e'b:zq$c,̮;ljlh~NxXTzV}?/>ߨY:p{?/kiIy ē{D\D<Ӧmc/ieMGuDztqs4 esp둉"iy!Pa,sj5>=Dܟ??8|]]@QEUSqEޙP(%.r]f$bü.E([q!¡,*vfesdblesG C&,r!8$3$`b3+cp974X^U!dksr$1ĔZ #HIB@Buڜ[:PbfS"7e1#Dv,# EjșshHԚxw VϪxI_a3z( om bRUu=ZAsP@MQS`aݦ3;ѬwG,Og;z?9xܨlRy^u`ǵ_==ѭnzR53jBQ[ӓǿ2ay;٩\Y.OyijRԦ/=ykcg8 . ϕC~D~~~7jO,*;g_?jȻ~[aBC>jYtkU7fѕ#F-䌢,NdNTr^B?SÃ$3jΈPS }jh|{tN&K"5Dԣzbߘch6I3rRld j+J&mHeMܲiV.g!E1MGgMrYdDpf#"̒5,YDqV̀ 9ް,F2(J̲I{PDєr:U#ΒUlyy<"iB5fg`9z5)wGLc2S ?aͪz92v {f`97+zz%0Cv ")E$CY5ih?ȌfE1dn}"wv>{^op [U!PLHFq=׳Rɡ !x_" />es攞-zrA|wx]]op!}#u=89 ^ԛ2=xusG<|_\^K~Ͼ٠n=/3rX?nqn֌@e{0gCMbWiu+#dRM w 6V;=Zoֵ`jTpvŚB=$!m bIi2`ܷ 1*y\=xۮdK^c RGt|Nܭ}(FA=*zeԽݧMY"3M]כ226fٴPv;_bn<ˇO*x0@"0˪xJAĘ hYb"U)A=q:dmLAz 1R J2""fEAfUQ2^S:\iج/gI**`̤E,PhL=|Q> e^1o2yՋGKq~gp~a 3eu+!1#N@ET1 D`B>5Ӣ~=|Vޞ ߿[vMt`D7 US(p\z\PJP-zSt=Yz6^޽}ˏ'1_4O ^ w x9zxxõG5݆W҉/MK_Y__/?6B@{7&HZEf$gF]k&/NS] )BHuKN:F1k.YIΩQQ' O,j6Tc0Lt?[RABhndQ:Η眔 cRY1,[[RY}?*ԵQcfʯ[uL:fݯ7Ih($99^swVVT$"1ƔF8ECQ DKiZ:qh@#p7{*"uB!P ăá<Z)*h6tĎ(gv@ D5xY>y^y+e[=o/w&%pW~0hk$ USIMД̝@SP2 G¡-(rwwģV]jbfm}Z;iBbVݩ#_sE`.-ɍp>H8J7n僧zO{<|r(A_V.7VW\e/xrʵ\h UU5#p>Ds{d}MUl6cBh>Bz)JW5gP8,I3 aTs"&OF5͌D ˲0,]9BD@M'vS*|TR7*mSl6)ɾ*X"Cj("}۟n6).쉻?9^H\؇b:ޜN>_dm[)>EQؠ1C"b犢}R2>kDT(\z;;Uu)`#Wu+2Tכ00 IDATլ*RLE(T_REtsM;$Kxu d&#d"E>W%!lT싫BlF]&@1a Zz*ǔɳsEc$ $e9OVUmI۬ KUx5LT`IHav7Q&[/:?|I3j)Oãnr1r:!H=(>9|vz|oWCo^x킯9p%zIczk{EMEDҋCN^;kݙ]Y|)+`xuC[us-&FL ČFm'''={`,˃f>Bv6 \F$!+IgU9gI%[71##(HPUU jjFD]+aP5URB;7'gMdED`ڴխ7h/r- ]q]q&A"Ad>>>l " >ƣ{g"{! 9U3T$D2u Bޙe"<:1>8&6,}{p S爲(8"Tctђwlۄ%'er, (cGIQL bO[jΪ;㣍)!xd~JOsyW Ϡ恃\\49/[mq99l3~}{m\ES~/E$so^7׺.tkrAΊ?;ڟ>A~svET~d "9e09F CrH1"gƀhuN)Ŕkjwgha?i]HM޿{qf*fFHܫ>1s(kϔi4jj 01%~wɟǕ7]6ST?m^٢}E%w]9o$> 4Sy_EQɸ?Eb, H x 6A͘L}[żf\6ݺilM Q:dfC,r*ˊF$FI$rΈE#zsspqU7'{vv]ˉu[2*K^ 6/+Cc@ثMc@iXob/``m5INg<t)<1AZ2Axl1r]`nNfr2h=C u2<{q4ݽ΍e~|7/=?1"W6؁r&ub頜0۵o˽^~tᦽmz6L*8y9^qS_sI[/u|gLږͯQ;V\Q+(@Ew1n* 4ctXt\1t 2!+:j 'b97_cnYδlk7ƚe6;7>{~XAkz@* UJi$he*)觋ܷ]ts6(qɪ۸Pڴh Tl/rrTĢEUUj6}ee]Rj T-gmYQJNU"%":Bl # zeN=CAuT-CY489(HTG&UI2c6$Ȣѐc6'=ApZptt{cgM͙˶fMdǙ/g{sʪ7 Aálh1=PHoFo2c3jDʆ")r"AA[ݵee]b9!nVeVUw9aiUyo879~}Z]n%6^ =]뫈z$ڜ)R-&U%qbNeV<:sx$5E1%X7e8[oixWy5m@ zq ^#VC=·vɍ?Ç=:+ز3tޟtN0թF+sW6u*^|-⧥/:ֳ /pWh9=qhhYꢕ{ߺ(z>xԗ\P[S鷆wWSlkפc)uJS6SU mQ4l[>܏~ 92KaXTT9>\ͤsfv3wN8vTh, ՚%Xs^:,R[f>,A0MID-!P!cCc$Ô6Tj45!گײ^My-MJcq)gj6Gw[O=~ZhU&rDY9!hb*l*rprɱ;LuU=#;س[9Y=3W{gu_moAUp^1}Xƭ `Tt֗U6!|1W'a>>Á/̘^u𞃘}\g\ x=Q\pg4Բy÷D bM6~Tj){KuiX=<'oH]D3e'H!M\!v[I&ԃf*L dun ͊i-o˽PSf2."5un6@f8Å/oAӶ1"15讞  ⑙H 7qpz?'p|}6ɳ+QS"t ΁2Q:U Et"EZkݏȑ[DT )A!\)y)HXr9\j4"\O0:V9pA0* 6MMm g8 J !?o)ٞY/\ tGdpjOIpR{r̍͌.,eL'/`&br 3+ 9T viPk}KQ8kZw땣KnC:]YAqLMޙ̱%3{}xﭏj t%5{4M·U5dֱȕS-Hًgk꟱^ 1^\RǟgrI3tUաj Bҳ-?:}osVҗ33CNdJɵ7l|-4 ^kirӔNWt:|i?C^~kbJ*GfEg1=z55lXۆv_7PD 4 qe)TP%stƾ9;vJWui\ÐPK6CSŀg%캅gnc5=x}%8<<:;;y"(yttG8ƋYQ!睏2M"*C!4$@ŹTAؠO٦.&(3fbH+L-ƹȢ['HqTE}穠CU@3vXR^-5+-&IjA2]<)//'< ]b={~ <eDEq^;QT0׊:#t "9Q!Dak9gBV0ˍRPZF"`Vڻo\~"#ƉKiSBw -\?UUUM4{CEveTq佶ȱoC߹CPpٵ]԰&zЙp?4O*|'ϾgW l.+9R^ܫ7O_+tgtm|C٠".jzZ@I٘-UrRJ%''8^19`F"W~^U" 8bADMg ȵ41 yT}*#J͹dPQUg]lc-fƷiU41rȋ}%| 0~T6.t琚9"V 9zmY m̙(E#U33&g⤈'RmRBJk9`UJB)8F$1#|m;[#2!)wjt{fmχGTrퟲsf{yAs?qkDjEX`֒@U3 W5j c.p^MBݼu]A ՊDq55m7>^&FaJDM]6|/_ֶ>\21wPkfAFҠ޻R]RǹLSOa澈L=93}vZt8 "/99}|ktr?ߝBsl/goػfRa#Ra(''[5 Eh@7gc,*W3UcFhji* ZpDP|$_?~9D)g?6M, >ZKZbt1ժԙlBEDS dhDY+OX8Gfc>^~K]snZ P5$ ZLR}0T)sBLRLAH#:Vje@9;@CBdBUpރZz\0d`ڏŌ`*Ef>mw`b6S+e*Tt/F`'׎^~o帍w[9?4\a(ÔƳhb#ĎrҔo,ƖVq񛔦!Z0u2Muoі-<GU;[ \Km۴#Vj[ X=pțW^nnlo? Bc1U)y  :UDEMJfDo0#w" #ZcB_r{tVv!&3ۂ9RJh(8vsEz~"JL`U0;rޱ, z8ׄ4c *Bu ޻TsHfNLptVku;T1:X4F9{tq3$3' ؋>r]kW6+# bH)1sɅJK!$1C"l*;O 6v\sK]8ZIYDS`rtH3whq_xEqm\\ J} ^Mچ\<i&B)g=Z%p*MY^H~~ޞgw3ϵETwh?o ^*TEC040w^Yknn7Ϳ?~η{6/?|to}x$Pe$i[/Br֣VX'HnY^9K yZӸsO9 h\i\ Hk\j- 6CUthCP{;W+7Q ]X#byn3(y2302s>T! C_JޑxSe4gӔЪI)HRB>I m[ELmلϾv?ǡ,wλ1{ACo]r5C$B%9ih`g<:ȳ oZ܇WpN7PIņis0u.7s4t2/#%Zx~!@hB`Q,ژ ZD,Y9Ŋ,.磟_#lnWJۑL/_CK8.6fTk۱EO\vtkB,\:9TeڎfZOfJm0p!4 Tl* 1Ga#~_9~|]b'g*~;V1V15Ǯ"%2.aoI$%Uj!wn^}\LjL mFf _?}lv1e`L< %f 1IR-2Y;gI!R 6M&94MlvLeۡ LJeS$IMBC 6v$u>8^r1}v>wu_L䠧#~vGp:~6kAUR&vETTf7Uu8]U116C9Z,X¦շJ-߻,.=;ݖ ]ӘO6{. ,GaZ0%h(;1.kf{lͣ[KьM֬U?=s]F}ٵ5/K>wѹ˹J;^`gy|o7߾qO t_ݺ|}*%C=4%gjE?>y)Rk-ܼsb?yJppx@Ku;LC2iih !nzm'<1CbM2m(xShd׾q͗nANiq~դ$qqۺLUZ35t\?9O)kJuRns 8gnUI AqB~/{_Ŝw3b`#>]@Ոƫ$\@O:om !!2#*j;9;i:S@5FfkXsr>j\)G4pDSou*J.)ךѳ5Z D9ǝް9fCቊ"~\^o2@Z5ddXh8+1~RJR".t A@re5M+CiWGVY%tW}ƾnzIgLٗW^d^`ϥjIvQ`;#5i`7~;G9璁??_t&ݮɽw^~~HݧtZpG;nZA cDӔ {&)%/i`]yp G{m2c20;:s^;~7-3uft.y6jΉ44\i zKwxqxU!:e݌9$CPDT:GĬJQ0tSWsɻo qǦ*žqp'4\8Ƴ'],\w@BkE8ꎳpgf+Gwpy}lTfjP3-^ h=4uleoF^ܿIs?8d΃Vt ygg3W^>wB1[^է|x5׋8gN8[4"D31{|P`y|3ΏYۛ:cՑŜܼu+}?8to{׾FGCgтTlv(vP*qٹֻI2MpCiOlo5p=:h`REjVkI) vvFoUHws׻nlNʀLVdJ)/UmP |vdF\ -1LDWs; #E@$l6Og*,5M-]0 z;bѽ>vqU{ 34G~JjۓՆa!^ţp~{=x,%iW#wn΅ *yA!_ w |ᵞA`ws|t~wWoKU67׮U3@RG'ۆ3+1=xʵn1l@r`U.*b u-6~he˘[: wU Ik`m[Z, F44қo1wx|mׂc%"q\S: S5MyLXqRˢ%U4뇲81P$t4L{GDfR*)<+ T'$45|-eL;wZT) !V"JQ23A/C<ҵu.2ڒQؤVF4SC>e̩4Msff( Tեjl#ff1PLEfFBq)263T:ylSy2yJT{~>\r/dzr1( ZID21Bs! D1ErLbZZr>zޭ;B 6s"oa䆪3 @LG waIz/oM=#CC];fan8n:j22Rcs6  A%1ꛟZ 6'I6 U3S"$욗~WqҏW;zw܎$-Z ӤZNQG0Ӻd2lRإA*}8]6 O%S* tTqb)*L)bUZ 8GU[o&SIEH1~FxV3UQU0@`"v#;E[rn.zsqiqdD!("22`K,y @zއm,jh@8'nIUT@EɨZs"LZ+MSo✢3AXM}Gܰꇔ[\ʠh`@r0 utuziV}TMOH <ɱ-›|C㔽g59#S:xGBWg!eE12`9Dg4QMc T3:s6Mpq߮MxqɁKÀ#3@\PSVɂ{}[~N|zz6qoW!_]%>xFx23wi =s3nigfhlt~jp{gCִ7W_ /ǽck:% 4pNhUۍe~VfZ&(SC$e3I5mhmbcZo_"vscaQ""xj[iaw- kZ_D`*(a:lqf3 ZVQ-jAŴVjLĔRsYm8b1!\ j*ILE{s#d!>կ/Oń\R*ŰN*].ʍE{ ehZĢ\&JATQ "H!3@D&3ΛZu*h]T5plKJ"+$y4?yx {Rĸ~ e4gR@w8 #GǕSѪPEĔ K1dRC]͕5Mh"T5)N$d':{WM7 w.L+yor֟=:ݺع./;7&G.&ÿaOQ7. >zAl6>.rç_u/_r۶^-x]S􃺭۸LŢ ZcjfD" CB#TS}N@$8Z f 1\i"(iLuv`D}jA}-XmZD,̾ 3o23ժJ̵vy_k[w#[r}Je()wmo#' prL73 I!<~X*QUH}1.ttQ hZ6Cy?Ӯ)R2&3ת{l:W13g1<`@9~!qYOʛ?\S4<.T2f~S8̎qN\eqLM #ýkGjI|ɷbf}l! Gpj"^|pxpZ),)$5G{):mtUC"LX4l*i,ȔjGT-PEJ.ea*o E1RDfV,}?n #KCEFCP005I)k))* PٕTlYyoÝ[>}x>k֜٬'KΥ"AMۜ e1@\̐@\15kL`0Jg"1#"K5E&J%J*]+:Z^[*XFV \ׄG'X FOƵ[ Z nFD6?~ *"c0C0U1UfU9OPsbBB$inܘq2WW;Ě!n^{s:&ZCp{՗!iM*qD FJ`vmn3Ll:9KvkXCF?iH{aBh^η^͈2\NioE3K'\, Y~~v=Q5!Tıa{f!lu ^Z<~pDē2]rz" L5j54@jTXlJ}vJ a -X04eC0S0HÔȐӔDMfvp|2Sn|lv(fA:h:3*iZR?kڶm#6۔s!!x^jMSڎ$#D"+U@T3/#,9:~r#"S"pfgPKt hLƣBB }a*ff$2"LDL*j-@ЧTjiClAb Zze' 7ۼ0;n;*lx:/9N+YQoOS? "9fSN͡'Q`Z WaBDΑa _xyY_ תF-^hW??{8L@zzYw^cQLyqss#.%p}s^byg"yRwb9gK>؊~B_(ιMm=gK Z 6MSrtɃ6~>]rǒW.i)&EOAN/qLsb`08,yk\@QM@QPK13=cbU? HsxwLE)ǧggb˘JcA*!RSq~L5 n7^Jb`hT"CtV*TY?6]@ "䉼s Y~%PUYfǡVTj!34)%?W\TDU\VSO.dyJΥm![E˸ܺyC=s UvlvӿoV3cf0)#)RCO3DD r+$9:_ErHzq9qg s#zv yx?aӸ.if ~ ?w7b7pyЅ.f{BٝA] \^3p|+9=< "b_(ׇ;4zBT3+oW/?'\d?o$VŃ3@6\VEb0*P,YÔޤْ:;p7ˡfP (65jIfdFd26Zhe/d 'M-$*PBM{w ZX䋗yp7Ή3~*冯Vl>lTJYob8fTa?XZ}r]7%S 1( IMUI}gb," m0Ѥшo yu:;]ro>kSDnܸqzz:fc1Ī"!im1WCt7@H)NNnf+E +C`N( et8hQdT+c]\0oh(s61Pp P|4/ `6ũIfۚh'~5Tw{nj'$4v.pǀ?K7V Ժݪx^\r~k_y+eOFm3TtuT@S75 ˽v}h\H'y{Enm0v]F4[Gl9r,Rbr5W DFUsw5s7BrDh8 y臡xr LaXVv:ꦩCJH,~zY,L5Ħn\ ~)vfyԂAϷl3c זͭ<.ӥ+^_~z=__HZEp'xg7;ٞ0TGuʹOM?ӝ7^<&D]+NGtrsf?gK%C@DBb0DFB&oϏ/~~&%_!t: Ș̋[ BLq6aہQ:j]Uv6gɹ+WYVn(j %\5dwä**ZQ (e!g3)kIfF4K;"81aNyT€@H̝}? ۾[Eǀ<򡗡oæ5ub8;?[o>;"E)js7t$!r Ls1)8P16ÈowzsaȆ̳DD`:a횫 `qq"ARוÄ !RН(\̡©vEU\ͽOeU$$ǼhyFQ'a}d$Ȉ7gp]Xk : ㏿Vpu3VPH/|~ IDAT gGs?}c,LfF*`wCh)j2(E@eզO8}/bt}7C;߮0b.ooζnlH8jU !:Sw ~#e-!UrĽN7̣Wm> >Qs??ͫ[Q ;ݯWd?M(z~'vc 95/6?}w1op'uz;88:Jcw%:z7s-xV7c%=2LBܡOa]ATL-c TU.=l^a+r@p~L U`c fYDDt}_LL !D,!t? mgm; n~Hd΁6Iysz'?yϽg%s,90}{}7[xAnܸAD"2/|HD)U"d1(bbZ0&6З2 L7d;JiOaWـ"39;!a):zM)`LbLL*1fԣȉ|ܮA{@몹]iw|BFOO~~?99hdUӨ"ڴ*ךRW4kA%@ba-:bw0<me7c[8aM8NfbdHHȼޜ}z_s}z'_@v|Emѩݴ)pŭ]XABUmԫ0~d_ ӯ]~|_/}ך[|7>{7zt2+YȀh5# Y-'U2zLB(ĵhH89hfVJTUё 5dȃ0,Ɖ` 23a*ƶMꃃb4zq(ّ]gׯ?#GW[/V¤TUD]<ի]ު* wOΚ Ԣ*Pb# c*9R8x"&";-fČq*ײ B7ʦ/W) !":B#}z9ZF-k`TMՅ0#1s[oW !]Hw T\Ld*"1jJ̀ս&\98@S7}`˗&Gٮ|؝)F~\q?yO&HyqD!=[V74_rGx 6xh, ~01g#^oˢP͏_|K}%o\=zWn~epq="ŪAH.n7u}Q[/70kgۦD̗5$`Mb2!3:Ĉj!<_ƱCª`o~t4;:]=ۛ1})x@@@nuK/c"ܕDR\.k_(_zvfߞ~)LU5Mzh"5pqHDuDפLy+@`([" \̌o!ywcETw,6j*]?/:0@1ga YDLkuq> 9!@m;޶^ƾoݧ(9;٘f0@LPAݻCs !{`Bw7MU ̴9r8P8--y])B7/;a{ǝHἮ[:­&*f+$^H"2K/=|阑=rLd5|Bܩ\/yw o3;w>~{{6g^^^-.g/0;8-W,[~g{\%ĐUUH?n\lHR[A!cQ2:jy?l-عNLK^6D gua0psGhX4_/-1@h.&﷪ZJs/x|>7RTnf!]}Ŗ+^g˯kc "DSMzղX;" |]k??;!J)HȀ:f]?6Aܺ#F^zr;8 MB^L'L`b3Eb"솮)P X FQuB )RL *8Zq`ȼq#2DÔsz>ମ0Nx )FšIaŊ!qЇ< rݎ^*]\| :PNFunӳO9%@p~:zo:%_;|pp4:'Q)Onj±}҅N~7?H@I \~JU_FH)k7_l֞"Q5*"DC)ݠݠ^ !@un͐BR:J"!(9Bn XnP)S2BbLq9% 7hګ^?<'~ooJٺ UYϚM$GG[n;::r`5 8s\W,bsZ_\"3ׯ:9I1UUUʘ<}d,+H4Ue5fs< @ `+]'Y t.;X v+DDS$w+2j3ct'5= yA`D hJU(٠6X&6ٍ]H{'j77T zU;2!B 7FSvY&F5#3Iً@gX6D\T T (Ƅ8MëWwvI߶meqay'YCi8A"-U U՞{k?_#@ `ɗMҔ8 [&%R @9sPa̦v˔b0:>Cwz6ke,S-LUlx :7?|{rQ`V/fBL=aN4$yB7~w_~潟 n &F{''qpb5H)pͽo_şcqQD 7щHsUE$&׉ aF4w緶1ֈnff|ם҂谫UB0's t\I)EsHs)`zeqWi*Ds@lGhHɊ_?oO}{Q ܠjuޘ*2%U3aR1Dd;%hc%:ڜu~쉨J:?\.0gĦ^6ӓ~ejP:Q~mVϼtmjhE\Iۇw_CV{R*iIIkFxϖ7ppX.t@1xwW_|[K'6ڡ޲I&S/WC=KU#9wqBLA3Ɗ0pB9!Pn`a۴82)|8thqt5(>_{;O/A3oro>[*l~>v4t+Mh6k$Ο&,fsԕ嬢Nh"0:@Eő`v!M7 2qwf&%&sg՘bDdwfB2X7DjhnfJL(CZ&qP󨦒ITU^\dHV3[VCqT7" uM".C q>u"?zw󍪗"ne, F00o[$pS)Y!@DHQ1%€,NMjtu`14rn{Ghv~.ש!Iiqttpێ{Wk3Fvcau%?J\ظ>\}q&JH>vϾ2Oͱ<@px& uUa/6(y9zUP5tiUP(TF ":T U}ܜl lqS-a .E`jS> DFwҚ#cqhG7~?=g&_)C.gZ,43r.#tr>]ɳWݷ?D^νc60BWƷ~QZoa~f\9Aj fC)Vtx|/|;w:9^J3ULV?A"*ȧ0;CсBH)vC]ߡTUH*UDF)DU10D FnfRD\$dȄ>QfY?~w?899)fb概dE &Fd@0\r$*Rtra'~:)Pqu% *16aSm 1-M[ $ \ ޫ@.ds/v8+on1.붍DtJ qsWj/.P Cw9 0!|x34i-q׀]{ֳCo)0nmue1 {85꬧8΄: 9p0S/bC$ =sn!DD)URJ S`yӏ?+Ml&tՃ˗7֍WU|ote٦KW/šcB \4FZͫv9ۮh^]X;>ڔ!gЯ>öaXuJۦ  :H?db{eӔbsmzGjjh c"DmS/FLXYrZ3]F1d9MYHDSܧ N}Tff8u`5T3+RLSH n>alNT٬z4p{A9eߞ=bJq9o듳7O>d{znLU\&~-)d(pB)@^BcJ`RPՉ-`pq]usT:U\d 8loe芝IwÓzY[(HpKgUO=IX?ǓVb~)_+QB7n}T-R!4䃵)1 vD#cSe(Ū 9fx>ov\px\90|uʡ2ҏ|=RLa N/O?"wAw"/m,+{< 1nRSM 88v.)T_[?>0ϪSA BMMN$` ‰ G0s!@̨:b΂`dS``"hj̨qT@d!c 941t2 nٸb/bn.XE̹p,}7/딴\DXzcf!Tfjn9'SpIԊ;:a1AT@3FBA,E&Bw"mϛ&hu P4)n]1"7:q"{Gwl4W98 Չg=8)gfv/;Y#".џ`0ZSjx Gzl(5k[bujEʘ L ÷mWgG_ټ^6G^:|U! 2܍y*`E+Riږ$˦Yl?޹s \k.u]k##y%ƓO5+d\;ĶdM+\$pR?^ܴ)XmLaKRce "LD0Q~ZۑDp:ͯw)]-NoB}_F-02Bss08)@Q;_ouDPzU7)CFn(ifʸ^[:|ʕܯr>v6K˫loi\DTUXFm_Q(S7D&PY{ɃȘ},Ecdf,A h5DAƐN3k_Oh*H˒!M.cUPY jى|DI8h0XTytst脪wI!8B'Wq">HHa>esLTdGhC`dcTqUrA61T"F*9"(h`&VqVWBɺ!T-k<4㢭gUBS #~;_I` Qݣnߕ6/^q?̻#SpAgH!gO0S9'j|;!\,#x+ pT6w,}naRQ'=d$S<_1 q<^nt}6vU]ÃYxV&=!HWr/k.{ ta& 6KTճlޚ}ˠJ.)&ru$`bBU4_z5m("!hoopYMB)N9#!F#R wY߬xrj(]Ĕ-6ݚc$-N؍qɶ,H;%w@1 $3._{嗾w>p1"V"R;ݏȌ.;Ni@.Уt%&(mLN)Pud3?W"7al._F!E"'6ر!W*wQh<'n>xutXoEFv)Y"ĐRUqwuXT)E5@j(""#4#"%l`bY}WK{{GG3BfULD&6RSu焖NrR-&Rֹ#R`/TME T+81MĐU rXCPs lnNKjR!1"X&RjԳPFuS;lЍo|y@$N!DBYEnJnDW8"39ѪXrRe5KuA޻~I'VF&TOTOW 6>cf ';Iy;o;pB;*!"UWn7M\m[o&nvs q&CUmuokIi8Ý2+nv%Yhƒ [7~3lH(Q(]{5!nfPy3m ynĉg cZ`>< e>`@I" [8 1Qp?@ΰ2d ,ox.o~_<>\dW)?_Y>3zQ6 ֠Ҋ6` 8"{'!y) >Fhqc9LZ.jm:pʥinzRm˙Ҭ tOru‹d62 Tw*FTW@H`.)vլa=11g,q?|0z hZ0JJN LIRbJbkjԥTj=# ˺O4^]݌'y$s@nYdy{v2|c!Vþ5ߠ<}5^^n.%U|z5{qɯ./WZEhdlس* XQWMUva`wq0y.C*^Mb@F"K5Oh4s[I$"& >#$2Ի8Uy|9~|7M1.>zp~?ݎg@R3DG*L 5h*jMI sR&",[}G0s3[esɜ`nsVA4֣Ҧjqjއ011fNԉ28S "8$fPmAH} R$DSMb~~rvĪ*HXL ᡶ^36cZI΂H#F~sgHNY2jhЛ-?TMv+mo;MOa%mciOdfAq{L|9:}ojR3wa}/;ٻ-okxTzu/F ·Veכ9rv@LIXģsN9V(W`t57ZJSId{jnm*C6i%K' ̗"$Cnj'Hdxa}ܮ<;1̭PpH3~o d`3X*1±C改+Xӡ>Kd$P7#^=>6R?\+fHpJ9;hm?}pMnRxMe&؜g/"YqPK_U;z^/ zmI4;_%V ,-%4mG["&պoMWui>=]iA:̌Mbؚ̉ \f I"P:BD$RWh6 B?O??B ^?ih\}~3?GyXt6GA…l‹\~Z Ъ,uPDI;"y愨nMXD]Nӣ'T`g{OL*)AGzNRb03p'I$&p"̉]ڐ4o]fnd¼4(@O6۪-16WTZ pAϢ]j풻O醢]*$Z[s"^*3z:v*^:!RZ+`&o.>8)/Hӯq)x#q+xz{fws rwtˬ'"E/_. |G`+zo.9a@n>8Sm<>?\?=?ћ^Vd9̱Y_wUdyZ 8 Bhn¼X tCeUtv_f4.(%Xy1L ) JPƱ̳IfmI9IbIHM@s3u.LDA0yoxs=oȴ 1'"af*bM 2 -/pEi` Fxm{}Y:7DB SL clA$ͽYwYn{-T=VV5MdXVK_˘_q"!rge}5^C\$$^N?9U׭FU+%60s ֈeޕp:Xj&N,8ٜvspLЫPp? E[=3@`.oNf?w YWA3ԫ6J`DHm-u.//23qr]cD,&D8rB`7Q=O솥V&$xJa5_XKG .mޮO00P,),#b$ UpsG[$m LCeI$P{RRutiPaH0a @" 8JTI3M\hGSj XD<陫bB7CZ ?Ӭ:_?f҂100, 8q,I(z"Qm6-$wH) "B2Rc ` E*:J sb4\úC)9a#knz$d"FE1A@r| 9 oepjjUB @f@ S%0,KW-F9έIj3t6çq,OϯMU!MMJrN fǽG }^q* ,!)LLnaMrι)2Rp;fYbZ}my˛m-C_HNu+^"ޭ#g/Q;WVyPܜ r86xذϣM(qVz=&%Cw??RMk@27mhޚZi-8"bu&,hLfU\j-Vu*f?͍>;Σdc # AwBrG Zjjg 99I"Nb[LT U!$Jz'_ONi@H[kt[f r!81/}T,Xs&hZJY=S5se$Ԛ+Epʍ0",8t8z-t0jDb$otlt]'N'(Zi5qoz׉YYg.92w:!Bx'N z=v)N~|˼Fk;|9}+^o>B=.,oQ@bB6Uƶz!%}nZ8!˹ |܏jW1b[\50 pR54Oq&mm5zA@ġF)8\ȼkn|zPiQ/Z  ! d軎YTͤ$L:Fm{rr<K#*q"Q) MDJH0lS?Z?{x}oXQffFD \Y܍ `iŦ*!HJfʴ] #=<\-"2Xiuq amBL·Ys>dHRmԴI:89r~i0̜s2GfgjػJ;.į˼_ keo[sj}/ksx]\";bQl,ILOux}p!Fyu~)va)S-1493M!KhFXzoW!,r6׏.w:@躄Ȼ]֐@ҴP6mXJ!&@# B H"" `ۇŽ{̓sx!A")id 1!JVlFf!PK)%%ְ]>*TDV5ZA|XRa"rYb!n9eͽ[ [N iNDXpSEIDĈ]"CZvU;τx>)Q/dё;*%06چܫ*832*I8:t 6ĦeeIᓟ._´ʉ}};s%w߳˖/{/fM+~LsNck,WOOQ`v9SHt2ոw0á|Y移s)t$ шLUf||}Ji IDATDfOkX;잎75fNͽ>Z0_^_j tK3PdӦ-#k%L9'ڒ䓋4ibZB  55&k- wHJX*Osǽ{zDprޜk` E$ &3#f5]_-!1bDD$s'3_~hf)"%t,Ds)q>oW(fFPWIO""F &jRbwhAl~;T25#榓u'qNT',Rl?_Й5y^m;&ۤ~E"%eA$ T6^eC&um}=Ajm`8}Gnq!}u%kOӯ} [f_km.{r I@BU:YN &miZUS`"_u0Rfe0.%dqA[YݳZjДd7iH"fmA<Z"2":DD \Dc@0c-$`!fVYar3#mmtozr]_nD{ӱ0}ʹ;ÚmS?͇xڔfZ 8hAf݀ȔכO`/S_o b5+w!OﶗP/Y Y=­^d~oqf/7v+x=zOoj5@tD3@1ّG6"ּ`P~7=#!c5] 1M4S4;6 uӦVoo?M:\jQs@ uV憜Wv͔DߎrtV+1n:Sr&s::E/c'D00C4ʲԑL рεB J%"nuKMћ.w}"42N[hyZOjp&  ]'aHD^usnf: }j6V[ U߳pf$g9:pB sYH^N:w(IZ\[!}?|^3Awٙ/mї?_鶾j˼ {k-^{g'/\{jyV;nN_]V\ EPk$l UTSNTj8 ܬ5U:X7}ɩ PyZuҚ'qnM@G:DjuT4N5=Ԗ)쵪n?짆J"%&Z ÀpqGONNXNR Y*b*b0 zipb-c-+aZcb f8;?\M01"x8U#D? HϸDnffR25D$3&JU@Fb fqbSfPDci@YX$ѯiU/v3 ־ൖReg&sDiI13"teE7]b!r9?쳋(mZZG5^ZUi,EcF/yRw|% wRZr~_?R{7FpoK,WȤGPXT(ܦ}%@6"oYQ,D 2$ij ZӹLVtÛϓTF3w>2".R5 \6׺ڍilN8! Վ ԤO1fl>.7X͘9(>"qtЦL|HGhA(̈`B;4h8]%A+j t:0jsPerA6Ϫs>9ZD8']76i6C Ps @&"`V9tN\L8os)ū{RRCZrZ,%9:qYL,ew}8߮jy%N31_gf!gW_oN^|tW Ns޾{ҏCX+]9z6_o+R"*0YYx+4Q׼Yu+M]c_5J5Y[53d$E> V-St]nOɪ۬Wt}W>;LsZKQSfa!7Er D!g 7EH$ ~pNOni楶RURiy᷿}2 4ll>qq~O5u5E QDc9 jA,M#qZEJɑ"V%"^HMְXgIikZ31"Z+FyҎ$9gԦ|@@ †p@Wp_j@b-Drib)5Z HK<}D_cH${B|N~) !yۅ{:pjLYS,ܚ9{<{f:Oh:uǁcR+NJm@Āf)IqNКv}]. C:;ۜlpW=p6N5x<ͪPcTcR<9 Q͝y -?K<#{E0y$4̛̈X1$ᡣ6\K]#@b1hI1o$2zVǧёs2?=vqN]}C'f%{ ϣ׃mrzk8?+oH]WNYvlN 6%?g>qnj!̓Srf>s\Y B:"99Pk@ 9 9Sjݧ$]ק$ՓO~?7{tl<ͷ| Zq !0 B`]+)Z[`DDr҆af" F7 m-#LQ)q>\\|ᠪ¹Yq"Z^ f'rwg.v4pp"^ڈpjDęX+`fH,DxKTD. "W!SC)Hx=1.u[1gC9Mu^%y~z8vXp">OnvWuk,ZF9lfeV6A 9"2Y=S|%w:Z "|O~u^ӓ~xvzl,0zԪs:7uJ FTح0u ;r4L2IM30-u[aEiƒ- ո=Mj"9Tu.~>G_wWRՇW)!6:[ $ f"D$՛/J2ͷcb#,<9wYդKu`W>ː3!jknS+nW;<!Y:KzhVI[Ei Mw HEDd,)<<<iJ#‚XsNLDuVؘ#4LV$0, nvC"e:jHItLGfb6b9*E""P6rFPiMRGZƸ,U0VE =͝q]BT!f$ 0M #Q,+ m@`,$h0os/3)s3b}tQlޱϼ&"k!ňgm4RPGfa❊pCx)~@a9Fn{]>cfS|,n|ӄ㻮li#,}%OqFVQk}ikW/} fnf2KVKQctASj!n䐧XXNiǓ޾_߼1&BD9<&s RGTf‘Yff@q} ~HQY>t*AiC"3Yܔ:I!98f` 1"`|7滋k !A#[ohLTq 3x9oe/k-އ7<۲Dl NS$y>ܷRөٗ?JYC#Qp-.fDL_*Nm?ij[tjpjw~[[3$9(fϤakh]Z`yoYnn079@ ڐmC$İl9Drd~D|-V$dwJX=jII/^=yD=!bïH֩f*7IF2#ٍѣhUuW*m}-3mmt5imkR"oi>=# [Suo5+ReUOKۻ(_Ջ\/dr w'HJ2R΂J0/.n.h[$a,sM0 2ҋ˽H庽wsQ%$-f4y Z;*ni0VFNZHS֗M,qWШZ m]UAMq3d="]Q 7DW;nGeOvZ˗ٳG닫ɕhÒݴ&_q)<>yigؠOOmm?}q3}q;ݝ+aN:4)ň  #"1;n"Ci.䵅9hkjEkyqޑC[ %ρ"G)9Zhb̭1`i(|2@03 9Ԕbvq\*3=x5""lnF7 e9#6 ҲєMۛ?i-#ztF6@hp9zzD8-(&u}qn']Ms]s[_Lhkh433w @D!+n%uYVRKk,5k84 H'#S+FF)(eRK) A6rFiS)'wslm=)dW?IوNt)$#b'2ri--[t{ZtQ,ffF^۬й;Vֺ&o~߼swx`ZJfP*SB4B5Z{ }JuP>W"RjKզ:M3T3e1Ui]O?j4l)P=d:'F|=L?sc׾cлw_N|jշ IN7sd?Ο>Gxr=׿+ŋw;J5p֋,\ʞٲ|M~ٲfi P#z?%kDBHswI)96G),pB !{;[4*vhRDfBa1¶"Zl92<(6DO0zRI[ado.цQu㸤ZF0Lax`BP*%퐧\t3~9228{_2FJúlm,`Y[f_뫫ں.-Ԛ Xj2ٯHZX֜_\ϵN?n<|ܜ _QӧoY)'?q_jX٭O\Auޛ|WT$!֖X: ǷoH^Y,;yk4Ǻ EٖT-u h]Y6҉$sj,} 8Y0L $͉Znut7Zq/F+I>42CcQ> m$Gf4zI!lqކ :s<2"htr:L-6>r$F%Yw9&T[3Mi?W%2Sqk-y3D.xly\[Z=5 y)EOSK?bT\^w{wj>g?:#L@S۵gI`mSLc|ȹx27wsb揟(vhT\}~Wjc[CB)+kz:ӠFn"íM$h7kTkxh^TK16Snf7TXUjW R|cn~A10<i$ {K@[MR6JB0rK/ж dfdBj7f.$FJZ{HFSH2a Cnj6,]dp3nN# @SkfMIޯ?Mw}5X,){}<U,^T SqWԩLWWW  0}Wο _C@|K@PSo1%AHF>EϨL T |z_ a=dhLS-AMLeR[[G*18} KyǵzseMHcmZ# D"ҋf7wj`^f#ݬGȩ=8%bp$mDܑ4 g̠Q !G0elVsRu`@a DSY G2;`]BsoЍC!6ed\)5R+˯~z<~o@5VZL'oޟ>_`*ui{Y*[krq#oHKe}~y{n2ꌰjxʌ+vS@.eC rTiJ?GwbLEHӬKͮB]>:ŧTV/[fc&jJ,=Z)}&F >4c)j&h)E"R!RCL8MX[s)9>t#!KYKezL4̕m$$6̇aԽJq,430^0Q۲$Kd!#iG)̑gDo=us؎@f.%̍ =ED`atͻJH@,̭ɞs Jr"lQ̑0uM Lƀn_7i=~cqom|y*m|1.IRuMF^fxosR^^_'8o>\H}ekwrIB!τ5GX:Z  1i…2H\ JJ J|:4^_qw e<*GDtw{PZ("}JiC#aHA{]澮k ZZ(#%P>8t EikGvd)^KuJUhyעMSnWOrRL xt%a ,F-D"YFÁC#in`0)D:pD¤٪̌Ȱ4 omAd$5lٙ7GBImda=h dk4՚wŻ5FR>YHe*;:/.i,(ռ[3eER̅͏_|WXf1UxK8C~>&dמқл2-r8TzY`z#M3gCz4NWcs27\ڪаizYDdԠ(: ;6!GW”hpD몓H#ۚJ"3zWj=p/x)\湰\Z7#RsnM (HTQ`)ȡK$"P &KI^ٰц#9Q ']僴=j=|r=Ro440Zwt:ʼI˲`s!`^_x];_2fF?,G3ǭjUj}{:\a2ctdR'`6ZGwT_~U^(Jh~gzzA_]{|_> | |nc2Vw+,abI|D83\ض6kT43 \DOr4$իEu]S ʴ|>h9eԩx֮t:-)̹X}7ϷxnM )̿˯~8s߿@nߕ8e~*!LXAi#1@):Eb7dm)/F7vwota:I/uW̴g~lwhH!3#*CJx ] G|FʉZoJBXX[_3`:ZT5\(\5Ծv#)g#>nK"!}ƶ6>Di ِ&#ss߆O! m6ii@ ir_}k^y.^%7&\PxR6k`sToݜ-Z7meEhGt4ի/u-{T)/}0?,'do]Mz|ڌjO:S1h0Gg秄7b\$:':=sPW-t8޽oM{ZEI-Td*7@#מf@dD2z#9()G7hQqjGB(FΥbs?juOEu hH"2i14첤e7lKm8?Hr:G)![B&FC!#;טF>YFִkud9iZo6OI3Y@jԤDJ^a)qP sdbp?wWeϽaqz}<~y=n=h4ޝ޽$~*eWfY}_?~8mY)9C:>|*ܓxv^nj^;f#Qݾڵ?c/:x\|[I2I,9\'SQ]B<,9tbs5Dp`İi^cZimNtǻo_kmb4Fbwe"C"s I`H"{{PV2_cFH97 0\\^~_|(DJ@t<شIo7E"m*uh{qt7a$嚃Ɂ͕m2=%3vZNvwN i#F.b,axZH|IF^x ٬nkIbJ347>?/SFq#:ndk ϵܦJ͌ZȂ/^wp}?0yx_}y}jXXG?$~Tg׳ttp!eOQP,X/2:OG-BЖ:^)pBc+<;ei˵]67m<ҩZZ>zz 1Ǻ.};ys?c3@>qڐsz4=2DF Ԧ{F1CNR7R. ܤ8=[y3r4ʔG Z ew%5O&2C:n I\>DYg~nB##>I3ü@Vl323NSDAȭ։-Rff::Mpx*JqX[A-H;wt&TfȈhA#^ܼz7b9E/a !zwm)hW>UN'wOO˻`"#cC4Hx*#~4O a}WQ"FR(۟90mW@%7|r5yE u}k3QۂO$1DO? #7S`xz z9k?7ߵiM e"zJ$ b}U0P*sKf Z?w)'M4 Ri_yӶJud9M޼N4m5Zޢ" CUpT9y$EՍhH-X" )93:x4=ƣ<Ń2KP"cFԖn7ˉL^%6Z6^4<$#ш$ GE@y@v=_}o:vpZuMfohyuMdkuW?ocyHVv_Q8zn*UЦ;x켄NK!y>owouNCc'eOzXOHwEGʬևpG4d$@7GDEǥ&7b"p(rPC2~_>UwCq%2ŎL)!'৶zo Ƒ~0.&R$B0FРp.=Mv /\`;IKۼ֌$F:edN^w!j@C-B y F`!ƦaCdJ-/%4Z쇨ShLkM*G5 F{{XGe]O IDAT_OkZ~o3[2Bք&odf0)$Ӳ(s8FP%,6O{HG4"|1yȭ&[]&6QIvW 0rr m/wy'9)q% %B͞zr#,\eZ뺴ǶڲKFѲ늈X覌> a3 qaFf[%"/D&e$²0hMzIe)Sz,|$ҋkCR^vYv<~>[HRtφ]h,gB07A`|.y93읂9UJ\3p[J%=akk)ː1 2Yjf;?&3{rm'^^;8 KF,t#Uto~6vܣ_~iY @kz k)KsgH|:Nr$;1&+v K L$` !UyzZ.Aax5XŰayP=@4@q1V]6pt4hk7F=VzpP6=B-3>e>b w]`[Xᩳ"c8ξG)#tYCjsEݷXgik)ptP{ddz/~/wTyy{譔RTͪaW߿^-`23$`I]x9yQ'< rZdcR,/Äڐ @Զhvq6O'A=0=7@ydLƍh$9'CBr[[.- ܏I=́GGخkT0p.XRp86#[?e¶ dߝN {B`jO(1@ht1#}l6[F(V;axm-[k$1QoA'0aI=/˓.oH̶NkCOk3ͽdfhkp6ϳd=Mpa4Mv,n8MWi̍ђt3#]eX8Mڴ]GFK`r;Wl/gױ._g\I[3RyvvxV6¶ ٽ>5<\|gS>La @Y!ppA:/ɩ=[6gU犨8?NzyΜOO(ln G||t աytލWAj[>IvN::M#){vO;nϐ'ǻ|5;;n8{_g耰sj8ǂ!H#bqvZz@%z>粜NḼ;K[1&)*(!CSJdHiH`; 3*aYbG|sɉRTP*6]; X(z0Sli! FS*th!@7Z/׊|J& Rz9ߜ3bņJ95}R  p4n-{{,#,$r7{Dd`V"2SR * 7\Q&D+#7uaڪ }uwwgVK0ꋫ}bMV/3޾= SZorZO_^?z lJ(l<z͘[$D8_iǏKz|m>?vl. CqkKxv=Y8O/m>KP5#=/gG8ar\C:.wwwp5ǥ'ɔ+Yx1[Fdn"iC`DW#98飬503|=ts=Ҭ=jY#HG ٠ l!ݔbJ>X9"G'XN| OX Dq*R0&Ms|9<7Tw&zNwx)H r&" JdUIP*VG B`7AJ-TJ2$D9bnHa #sepP{764L0Fk Tg5g`=^tS>؛TEc٭oufV|6o}#ެ=woDœ)AAdi:235S˚-yvP<#&`].ݚo۝` ]z1Αz@FfZDf8+IM*^mQD|dDdQBWpvB3">X V13 @5[mIl}s?9/%BC vq! mWG@L-8Im"绞l?{Wg;/tt @޳X%^ B혻 fi9q1v[mp%sEd9j=RREfRO)CycG7ۭO_rodۦF]E8zo56 $9Q@U8n" ae)nh`BG$[{z?w|/oM!K+ҺtSAa}D&Nv@y=i@n]%6rs(M=d-<1Z* j""X̴5k[>0K=|7yAה[X ݺibf"5U]Xƙ gDMqF];#'DdN89є5 =k%[t02#d\XJαbB4Yji*-ݘJVFˬU*BHYMͥ7F̜o[?"Tcdb#0gH`"z)1&YL"djL55噮 Nlܕ\PG̴ZD133K៦>֛}oo1o+smtev-PmC o};Lx݆xjZScɐ4**cO˗_`3v`doņoZ*m9,Fff [Ddg"Ĕ0$?]Սd0RA] p̧ z/s BHI)`DP{nqq+,d~5|P6} zSC*@yz|en 1ɋz=/џ!dL tDsԊ?ǯ||x| 3!v7Z" PSOH+O)@2DE>főg\%'Bdm2g#0mwϜǔ24kquQI"RںHOVvDd''DlQg.PNOʈ譯Nrq̒^M7l1}{<-o6}~?8om÷6n"c QQ:]"{߶?EDkff]3[L29"ބY șdx1=?<\MӑsUq"@0O +ìƩ}iඖbgeL>qD$DI7Aoe hA-T!%?@S]⭊:|_2@RQ+w+eh< Ǿ[W!H<>c/e2#no-QsoSM[k>M~}#:@fJYo[ sN׿cqdxװ/WLePN3 G}w˿_w?'?;1rJs1\Yq]OtɈȗmd-W9dgvن8-IN<+LE,,Z]8W}eIP%im΋_ДYgN^NiŦ`tEkR.y\Ǭ0ob~oo9hzoc?"1'爣AUXPᤈ9h)B'3@I2E4=fn8/g_"c,p!<Ɯ! &iuI5F5d(`]3LvCoo$A@mk1nucE/2DMVyɌywwc95U U%(p$(u~o?o_*rLT͹So_E=ӒU"X =?ɢ$ )!Z(@Tzy5"22\>z9_KFq&ZSԨ"9,fZLEV+?;VdQ*m(b)F#G4˦-M:W}Cp%|~\{.]Īn-z8~Ln6 "bszx#3{kQ+ɡ&ˀ`v4Rg*_P tm^@YUP!6 &DHJ!Adz}2km]!!:rznmym s}SSEtyCd^ jt/j2hۺRGd(#ۦ2M>"dnpie"StFz>u᪯'tRfAs(!(Eߙ@q->^˰$Yb)%V~nPp,u6&HF"QYYyĐdIfFSj#e&WRIkJIUirʼn PNs7 R#TD)"0d<&ÅF3TjV_8><"C8}!̮ju$ J|vy>%Z\i~^+KDƆf6*nPV ȄѻF8սuDHR>be[ZW3[p\tI%Gu(USYn;dmB[r* ^^ėLzOp m6ݻT-SǾۦeyAp?5~nA~~|o>Rl8s hdVl"Dˮ@ $e?g1*:RGbqgPV5e{`ċiq Y,tt@P,W3'DDDטV扎g^G%_\Pf@T`[+4aV-{~Y%TxFZk9W;Ǩ$NnVp LDF(HNAB"-2BDz$LK W5dŬ5Dβ?~~F @aqsY` c#}}@"o](X=" aFMq_ JI{d0ED:4QDŊ~Yp^+UV֤ @J&}B)l7HBUMFy\f 5uV\[65o\ϔ c-:sy"̧> *dq)@ϡ"LY~`>ݶ>#$3v[2%(fcn/cL-3ǘ$末RP9'4z.ZӔ||>Y['Jj]qIKTV1w^1ڤhQVɏĒE+.!YDYL.L@2+qNK_7_ O"TU1ը,vuu M@iL^py[ |&Q)#}I<_a&$U-9[W"N,G,Wv[%qW̌LhNY72Ss  $ܣ5zCJTmϏ9n{b}43wG֬LHTc20"ַF8TĖ"B(vʛ"D"ZѴtʮNmzĕ~Ns6(d5Nk[ϤKV#'Q⹗ggd-uk|ۧI$@ZQ-j1w[>J`\UE"DzYٽ+x%1-NA3@YԻ(6|,KE 8Az!i&[+:Rw o9X*T TK%#3)Sbf%vÌ IDAT˻N?DJPd\xw A!$ "XN ) ʐ /#f$@Q} JQs1UnjFpUgG4IGpڐҴWEjؓˮ#ϘGtq轥{fn[1Vڜh[?7kmo_쏇5cĠAv6| Gd HVaj qi5䪅ˆL}ֶ>a?}<f>iS~M(҄]xµ^P| D,O%n'< _B Ъ?eZsN'W4`ɍKRXipM*%N>`緩I)WDKVתF)pAE4PP\PsL+:1/w `F` WuFI&Db %DHC5@Su{^zSiW]ߏ9késZNJcszKhkAD839=s$ G 3~}ߵV5jXͣѓ]5>k( dyNhdrSUude4U^DD6YDM3+S f|kihLL$W OJI)\LMMfZ@>Hd:c1c1 nC+Beb@ƈ}7Uix /_}w2{ t'#f"f*0q44ivdzp1 Ѳ/i+]i(. U}.;ۇ|nr`hFhY?zя~KfS bqIXUan vEĬ"?7BV%ȕ?mӅ-qm^F-U' שUp)^p}gl$2N*JK䫴0*S# 3E|_iN c?}/}N֛Ic?2cՕ 3{Gݧi?A^ZIN23di!*`}7Kp^?'|^r49 \d\ E{zWt*J>=SL5,^%6cpX OHmp5͓DJ xN( F]Nt ҽzɸk+;šbsBePʎ1U~i _z.H&S%;総* yy(wtg#W-'c_~Xk54R=]EEĜTLH.-|2HZf$EZm+h,s&8uRKrwQ 0[3jmfu+JSDA) Qh*Xs+tj˓CG .RbqnI]^k|z<?Em;#l[x|ud9]m&LmZ8q9gT`3mfjJДimM Yw73ZW@Ȋ)z}|ΎP έLasw( k\z _@τk=K%Ob%,qa\/P+s`kmD$22"֚Y3mUTe>"ZC% #Q Vl"P*pr! G.oE S./*=Hr~~~,)c9g"# EѨ J]j2h,IAYIOc"]E -o:*\#+\&Q,wEjcK֨ 9OħE%#d3EMxDasN2?XH(z\SME[>F/_:fb~<*mS}1`o䲏pO5H=iO$l7]`2ia!ݹf>X n⎜E3'LEx~M(yQpmWFQeק. j~x}=Ah=ܧ( @dDFiZAZ$fT3!мs(/.NﳶZHe%WY#W9=gӀ0s֋^XõFѼ5t=EוtIjƽIuU*}~?d6 |<~o05"L=E2陈Ce!b''G;VixA`0Y7m-w9kUQxle: ScL`_VԞ%-Bd"R1"$S$N'Is$:rko.*v7kcjUsP|~7|[۶ErcZ2o-"~lۦj9^&eUۦQȄ5LIt=#ܽ먂HƘCM|>[kxMzv^Ry5r/?~߽%]뇾lg:s9J]9Ufnu`h Ht[kR5`DUUmڽLnۻH#FpNї]L]Og j/']~ljH]3Uu'3! @f9@´##:̌5 j[͢?wO@U19#sN'%uS&lk+O$t: د gPC)&7*[BWkNjA*8SuuDp&selM\:3#ӤVDm\ 7QUuwcD4fY9MܧYs٬Kq5ՈLa"Aeխ9;5 ڭYDtv߿~:ЦN3[k&bdDe dyh 6eC[[x.JF/Wʳ?@p&DD;'Wj3)8\JΞ W+`+X",l 8M[lw#U5lvYwHm{ [nw^#3۶Ҟ_VT `xzh0qԝEr ?7H$!*ﺰɜ ey|~1"Ib 9>8L&>##|{[߆{$|dSM \4ˌ)c1!Uޤ)O bJP/Vӵa,̚\Qf8EL1-A(*&umukuTkt,Z煥4U ~'d۶Bmfj}@Dfo-J8Q [k۶A )3n7msRY}ogM>pћ"*k U"1F  g\\Wy|} KYXݺbd{amf*yr/^./iHLkH ES4sM[rԚ2bf'I [hv1_J Tӭe{{SC;\߹߬,HfۄԠLΚI, TJ&<勥~EujR^,מi9-sFzefD1X9<s83yD1'EQ_ fjD5'2r'D+E'v!}J`Q ͌.MԄgy$Q׆.**P keRM ʫ"KQO\fZ0Us=BUk^p 3em 8FڶVPYc Efz:fosYx0KaE`5ݽ.*1߶nf[>>lzkǜSTi}k[3"32/G f#R(vdb3Io2־t6(O⬕0}R"t& C=+JYK%#+}g寗ŵ]oUU1ɤTpT) mzOWk֡{Ƙ%y!D)"{pxQdn%5KC*j&6z[M`f[;LQi/kZI35DYoB՘§A*5}ɚ%?;XHHӆS7 L&{۾ f0cߧ8|zF]"#tIEP=e꯿mk*M% ݛ$X̔\l,a&RkP9D^THdKU{ RIf8Pm QެB)SF0s-[ҘSpMܽB1l̚^wfF,mA@kj&wm7OBsVaXkp lZQYS|fcn7zjA:QLK걷~Cֿdy^z /; kkiI0pH>Gr0ʪS_I[ZbELל$̩joNuVOePh(bZE9Ll1Gdho 3&&BB /9C[(eQ5m&7StGnw$<ӓaMuhԪ~fZB]cGNmG δ&!_Ѻ H9L~s~#PU؇ 8pӚQH[BDל$~̻ӛH(.hTXJ߽uu/-bJ|N\h;q)/~!}$.# HfE9K1129L a եfMA@/d\^-ݪ?i$d?ss !Ն$[3gA!eL8֚1"Bm)+wse_ FFVG1F0A<3:~|~vּu"Ղ8m*&On@צ@_MƄ ,ځBVyzc"L-]cRDpN82'Z04h͠DLBqB8 "B9oc|䶽 P*DTcJd#tcep*,aJ&&A9D`LMe&HYB Zk*fR("،lf}'GsEXwXS5FiSiLdж~߾m緷w3w~.d +i$Wx5Āmۦ/qvk)1c9#ewQ #t|#ȱ1<#}(;F$e_>~[ ck\ՓVX7yoM5@,L9gQ٭'O4ns^Yޞ2<-J$*Md`xWJͲЊf=1g>}RԷY[*p֠RĔOZYr٘34m, DyE8lĥ9oÚ5j"LmJ.cƙ1wYۮt8%!0 fp 40=2EEhə9DL]pf YOr!I#~8#g4!^-88[wj.uZڛZW"=c<-TZS1d(Eɭoݧik5CAm{,H*MLUMafZT %AvWE"8]xjv #l}nb$!diifRSI:T..*3a.[c433y[Q!zT9bMm6U93'eh]T!2_~ُju(LsDJ?@sf22!ڦ/S}|>nW|fZRuq+Y\࡜\mD/G$>njCUGvջd9KJt? &,#M.ш{frg%9GDy}On"0C)"3T#w?&0v9ŊLH޵o8\(s k[>>JfpSu1#8a*XwrFQ[y W=Y?W33&l??+5 Z{#[?˩j`9h⪶mM*ycJ0MR} Y}J/yQ(@ wwkoMWl:!8|0UfAwNA.YoVTLJRYifπIVÚ#(ҚX ^;IYXiY*[S!2 $.3(J!U[SP2ғ5vwqiJjk$eNflH"S" nLpk/)sLM3}I+ƈZۈZ2Wu(``'`Y7|җBYn^6FEw0CD5uiH5&MKS/LVjemuE ykϊU,Z 5(K^4YKBǺGDxHskVWMR谪:j}spњ1ǴH aZr1c5q{;cczaG\* JYEV)iEUJaJDPnūEJf.Rfdyط#ν9f7I) CM22lS @/ ~3zd&iK"{bWהY7='b5aEܬUBsODַ=HW:)bp(%T~;b, w cp9Qef ֘í(f^k̤&[lx4mU !( gfs4w7 ˛@:4NђN3V1*tL!q7N[1%&gfǿttm1/y&m{h;) apr̬xՆ]Hf>=m_&TBx1mX8'|D"2~XfMX2<RyezM-'8wUYkH3=i>lE䐣O6eY=DGw̗˥mULwȩ9QDeQM)s#L6VyՖG"oSDDZH5(Zy6D-22@Bއ9ͧW:Xr tcDP$^W#3IYz[HiDz*q4*/k#}; l""1iѕ HgaQ2Gӧ3(SA|TH~Ms 7Ĥ)u B`s/cLq(mnH~XrQS|w! ((㠄4äƬcq)U4IUgk"3c^۳('2SU&43+`oZ>M|ۮu&/zl9gOn1?^cۼ/H!ݞ1ٜ"Q xԣD<8 sLc2H^G4ưEb 7*ix5AP&*SD$=[&:uȧ,jx~`Xg"p7Uz%84Uoz~C> cNiGmuc ^U2=n7ܶ}];cNƴzm?=nTy]eFum.s3D#OP*cl&07,E z-s̴fTUy~; Yq|!O!5 wc2Q"iyyg#2}m#ܜ"{U/^=>>Vĉ!*Ęs(.~UkcDU~ ")8RS#BpmHZ>loo])23mE}Zt(0m֔)m@"фiѐK_dʌ@2(iE B}B80C\8`Qͤ4g0HŅ/m]:ammtpgnX<]D̴aDL$[\ڸ_a>^{g[c,O ջ)~n?Ŋ^* =Pp$8IsڜM;3 cmJ̥TλE|78r ;* cn+ HS6Lwϻm$d:#aM۴m9-4P82ݓE@3:w:G0" .6yBZanËpJA,g6e8pt[ߨMQ爀g*7!ÐTS+Rm_sQjql^pm}TЯͬNB@͙aE+[ w>x%{֤;L b9d滇i]mzpk=3}YWF|\Ӵiۙ"r؄O; 7ՔHφ4E ˓l@ S;cprrr!PFZBEs#}?oj]E2taAo(c)(32}1Uma ";i#It22%j:S$mEQ gRLkNQ$%dm*ӌD<0xQ47aw{uk nK6+&o-[z?m^77=a gvҷȰQ )N/u"1!k_2~I[Z`܉n=mv݄_nK$d W "ѧ./.w2sG8si6oN fGD'şٿqߍ}xtEwf i}@*ILTb&J,Q+zQCOʚJE-4 v1gDuf^WgYix|͍&eYܶ/m~\ZӆG kӒ(˺1CTU)~i1uLen~z%,2sQmX828AtEDZdmWHÙ3dB(e~_Sap`BTI[kRZfK9xY/i_/fR,ښt8]8֥8\U[3P=ҋKo`S̹MG&̣%8=[  HI `UΨ}kxz#?ٌn3#n~O֟%mᷧwnnq 8XPk(Cy-ZìUp+oGdgHև_qj#F[Dm~%*Mk&}<<!@|`Mqd^Z"#ǥfRJ10eBI9gl{#̊skc>UùW-]%2U`x>=='K]۶^aZ}kmeQc\U|^{L(1J([Uv#a8|p*ҋC4FeeNsl Upv}?OdYۥKRTjV)99[$s:z[׵ em KB$cwwݲXxp*O`F3־岅'v](k™@*.3ݩ(~uΠy7/~Lplp#7%oKywO#6/͛/<ҘHDx 2ÅHZRa",L "qT Uz(oxNOgH+'I 0ϩɲ ʘbLڿ◉w^}}16&{-@Q3 uK}#IRRQj#X{vsp `>ӉNq|^L\$j :tOss+M̬\1/- yDqeJq³U-*t pR3aX?skRqu:l6АY* œŒ=8 y.p KLG N\V .%ϱ LŦ04gg8",[5\D,5/˒u]T[ѡXUiOã)Zk"#3"Cy839wTѳeTJɇ-q*7qy#YT89'gQI ~ry ]VYzcA͢J;*MYUoLtn1H:so.ڛt&Kބk,B wKG'2Aa=2|#2L&:Qpw+N@N3 Gp(S"N_oE_Xəa.)b}*{-%q3eЄ#3%^I DC8cr$͠R2qb" ?L#_2BTj!tOLi3B#82;nOO~}=91YNsKZ%FqbYX]…=`ʈZfn>t2*>F+]#"f8™)*6=F$bqNx>.f)sq Sf&5!ӉF$ϫU!3jFd\8,+ [ctstq +80wV muu-NB$^R wξ^D3"w|ꫮ@s{$&w *Nl=)ceG'栤EF"y$~D.LeKѐqhcDвveäy;QtU ͼO27]#2$nfkqS&q8vd(Ez8w3WSCY0$|RYgxwzj (-32yAnu2Z=šḽāpGqIRBVQb>v"¼OF*Xɾś#v"B*IE􅀢̳= OJ倌cN[o{>cLfTF=""ZQ[ꡐlM eP >Xp IDAT $%<#wB ؜a,D'D36"qOdV'BT˪_LH{Qaڈ񄣺JpE?U5{Fl#3ʸ1$Oz DDry3̲2S(Z̼nwa[׵/w_?<]R2e:-d[mk#ȨhMY֥b꘳$"d0ry[(U^dsfO^a{p/pOkkDd2=[O.Z_-r8fѲ27ֈc.\kȤ֧gD%˥(#7a {Y.M.MTuDD<4| >A;Sq KLg_V1B]7if. įPޗaps"V0Gu۶*^wֱ6AQ_2s۽w@ë4,I*ʂūyv.9EU8`"^9&9YE0B$N`d]f K:([ Q "JΌE &RAP-E4"61uۄu]/szGFD7Ubn$= 13i=T3?Ld"ڴ9^G>TV`ç, k$|,zp:JO~$(R~]DҤ_<.e;Y{\79)!3ք&9IYLz:HɔqHb 2GU-EweU}AㄬR7Oa IE?˿'__ݾm>:,3afBk=2@qp婔z擘jYWLZPfAAp/nFwV̑2a8Be" b;2_31VVX[lwaD^Y9AĕT}߇zg>fVV3#PaxHσ֗"lKkMk_23#Zr/djCfxh*]B-"%,\wXLf^sxU|O%pdḋSQ"^L0Qj'HG\F{m"F"6ǃ@D &%0bdΙ (i9o*]Hs-GDzȲBABKD^Ҭf{7~{q{p[8A32ҝ"Yץ}o3(̜mdm8^˝t4I{6Vbn̶]:wSg.1C#S'(  "߲{6M&?R-s9܆%#U1jt-( EsiF#83;"J[`>I6N$GL3&1O+v^&QvPLߛK8e6D0X #¢52lrd,r$&H'nn]I"^8WQ.׋3vZV{a\B;v jíV_E,9j4fMUU;@nxAX+Ul.m ۜa)<"|fQ)T9jBSsOSxE SLp.fŧ1F ]X X#p~Z8 ,MSKV OB*A̜$fcmiuW-gו0cx]PXŝ374  BP0#^]{~؄hU`~\w߱>cF0|rIl*`2)vKh.}[}D.5(Mx5Kas_MO)JU} i̒UW@H#tF d ^A` đ/YWۃ}KxD3Kk8onJI"$L̘_g~m有g^NtnҚXXuQK:ĨA"auFW!& f8nQeDIҴS& 3r6hﱬ|5Pճ5w 3;G)ɓG^P>ʏPTۃ9i%*ry4 5@zk.~I !* KgemnGY*12CU@U֨^ɰ^-vMnnf%_v "diZ08g%P&3ץNϊJLuŔx6L5\{/g;LmnQ ۴)rϸvfmF,LIMe_sbW ]ks}S#HU`is 3Xi9Fdd_GS^IC~$>ǙuՔ^M~ 3%K%hVn~[ɟ?WK=P%WQ9 bp ` aP;@K5E{wWP1q=PE DE싟}x{nsgX/TE{&X"➶`av\*-ҙȣ*eMm .HAEg}0Y :m6mE(f#EL#(#תpr\* Dak|X{~37KK ixܟnWC՛m]oL. 66e1|l{DNs<ƕ}Ӎ.k>xrX"ԦDJJMD(e ^7>L[8 XȘv {F~aݛ/^(Ǐonv2j^!D kI*s9f:*$h0=D I"$.Ҷs=B2CeKPFPB}?O{Fݔ 9zG.T},b60a6pg؜u7-kXe#La%4Rf.‰EEdƈ򄤊F0fubJdx+IsAu:Y,k:/R63KbGY&RU㶳D\BTȎs!R[ph+wi`T:zYP$qx.E5 Y(8=@j82#CX,Hw "A(ݑIi\UrQ7u-̖z#@PۘzRvSu(*~1a gҳ8l@QcYJf+vdBUw|Jǎ>#jO>zoDGAͩ.2#c}HOw|0Ʃc2'?_/42s>9<_?5„'s]F_L'K`ҧ קXZSiDP1g_{_gOuwA<*_5c "]}/ZDNfNhMWN2`e-]"$k~[_~9F}} ͶTYR2N`ڃu.J0{v)`pk99'M$ɲsTcȡ2k 4 KR(Boؐ 4 ].TUVgnEHdG;4"9 'fi&-Z#ЁK!Nۜ ^C}bїd~ 1WƟ([)5Z3۞:Â8Da#e3<ޙ=6cD}ĿCS7r K}ΰh +ϐxe|G5V|_>oUn~M^%-"&ܖk<.]~XOnYmv'%4emBA,.p70(|A g"?@Jvo7g4QJ/~_?{>nnL4JKa,K)@`e6G6}Gaޗ~ M$U̵ܻ9YX-ܙYL}~i5z=@MdE9;a:"iE(mƲf\li-S*LťrO34ߟtKofS/Ǡ?ri[K9_&`ƴdDl{xzn5߯}tFvqz;z~բ#sx{qf˫s7&I/ԉcGq'f],x¬@Et%; LwiN 'j˥_^H }m&=3s>.~\_=y>:(rg##r,<}$.W}m*.sFaKHfmzM^g?h?rC#TO|q:F5Nj*$*4b7Lg!y%3N4ODGdz_LMؔ]G̗Q*PL}ϐ8t0uxEabd1DiI".p ^݄ 0UePppٜ9U;W+#=A0{8uۢS2LY%UctQ)HEl"ޚ1޷x6IUì["֦[kf}DW֖܄yYmJRf>MaIDuU |N-7Tim**o{_zHqtcFcRHt3trL0Knz~_o ,,LL>"Qk=g9sθ,Q1nU""Y\ 7 H܍}wOoȇ.ܯk.ׇ鱽?ߎ6:Ar]?ۆlk:sY"˵vK^ndD땰ooz޷Azq}LGf6 ]dY5c%Xws&u^.=wE&7&}t1$eC[linON`U,a7wW{!?x[E7rJqy/i{a#70ecA p2BKdQ1)!"b*ksz_/GI?U; iӬrO%O9tHxD1Sf-'9=e[Y/Nd0ʊm.kYٲ5su]*V$mmKb2D;Gf!cβL~UNCnqp:OLOw#$)">'gRV5#1y+ȠS&av1 +9˾^?/.fwVd8/`փȥff޻f6_Vc[ q`ү!KeeXh VH\uYwG>Av]LٚrM%E'H:ѵsiIٞ$=+Agޙ.*:݈y.d\ }iI WbӈB $"&ִd7-m힢V({oKcd]ĔWg{t%_{?VG_=~I^\eKC,{оz՟yYv*QYH@x6dRFc# *^4V7 L65HFƈ,2nC-LF"Fcr)UpZBF2AI 9l}Q[L1ݭ"gNf2l@4iO(ņGtfDJQ}(Q aF IDATK3TV`RF}"qOˈfPš>$"U)TYB޶֖N4'gb?`'U- ?%b(q!mR_zX<ݛAcv> O>wmF3da!'4>+;.$4!8?[dK`EWRqJ^ڣ6#¬xUV.qZ5x%aqӞ&Ѧ&}dW{gxbs[n>- NL{ۅjf,ܝb.m X 3ATmL>$2JK˺=^:;zkeDjoY4S<{\}{? 17l`y{K[}=u f6Wd[cF=AAȦl3[ 2E) ^!KTE\׵h)$AB,jUBe&ZС iBDB5-!Y32rp`&LV[Rw#H8LaS @\)jtHQc9kZ;R mN]5fwxa o%OEhTb^ %!D/KVlP 7$a`=cLT`:vL%@\[۷Ƣ 9̌on8?J9 OnƔ,>EvȤ҃9hV[(@] bb27 cyXKjd.UhL||_$(T"DTuy, ZW[~W~]/ME@Ud #:M/'r%/Ko)9s/ÜJ^;M;38mmz *އo Kg7`hUUFu;4Li,˥=F)#Y gFED܈C 7ZH3r I;3И.{_AdAF.ܸm)RwuNv,3"28Q~ rn0ae:3DTfY;PDUBwڊhi2=XB42CU-q@P+OAȨeߑFHlʍ$&! 7RNK13I p/|!| iZA 4(jcbWȣŀ83Oe]mzYby!m#ds$OFGάi/LM*/Uݹ>ZSX V233D=ib>-UEElFgfTXbLWNxO~gִ3#iGSY7/H@0nP /Au1Cev3ƛWr}loK@02½kSJ.%2%VA[^{eM,BZdALihv])骪r-oTN 4Y{9!Ծa}QwԐt"7z{ a6mk|1] ?\f>-9,TF&h[s"EV= ?13-)Jc UJQj M&ʐ|gӧ9^ץd [-< aBPԦ(1D=apSLB 8ߵ^Y#bNyaV޽_4B,?,sγLr5U:iUFG%={,+H &2 &H!P&P5G'JeC@F$#'L)Ǻ.>`gBRd-Uo23U - /ԉs~2; BX~7Dtsn/9q(=&fdR&GҦIc 3ϟv)**d1*׎U}Rg.k_( yg.-_gIDwyedŸ+~*߉(:.!ZG-5YʤR%2jcwQ ܛ#%3)T%|&ޅ.ĖnJ5LўϷ?+s<)qs [2A٤Aygu|z3&j$P'NaZL"P%!DkWwcJVe)Duۇǟas⏙rI@ Je*vX-"M[Eè̴rq-˺mwL9{_1ed9#qTRP fQRQ~" g =lj@ ;5/q~&MrtLSbBƴY)&.\DJCY`nyx>|aȴgFGGo|yj4%drǕPܵ9AT2q4~(ͮmƶ?ud<Èn0! @W -},ǻ\ QB L% ehd"A2%Y8$ pTɚLI.$m %.~==b*wa) A̪3=͖WIOC<,4,HpS[[Z߇7Vc~X6VϫwFN5FdҜƈ*BA,m eoB `V3gl_zl'f 13}Á7F=, ,&%l>o~|>K{j ڕ_@P `fUFIݒ5F P"C*D[ KmX1FL'&Ur RPAxfW҄.LyyEM=9tT[3D&x;fs}i' 6''EX/o 7pCNp11XZTΓ 81)8?gsLsO 1SDW@>U“}u]=HB5bY ww(a0E/6N{V |As1Ҁ_ʉWJ8"Q 6M9ST1e9KdGx /g֧BA {w"M99no>}deY"Ҥo.Ec{.FD:epq~ƿI}?"SE7CFf NBv.23E߶&&LDT;ȖHKWii[0,'k;.$Idʴ E8(m3YfHb#mSz%YA#҅mDDs7oj6$!@#ãԬ*`p8sgV~wۦM#PiOz9nTfc Ȱ 97V4*c9iƙYSDd0%*l̲oW>Z >sKStm:ܖ3THEjjݻ(erj2V;d!K>D+TIGY}o@vHeHQ/QJOKOZx dDǖ3Ȫ(OϡO \RE*Z+IE-y̔a}j3PA^6:b^'*uSIĥKg4ÿ($D4A$=~JZfY ~^?o).r蟵-]ٮ>'z^YfN"@z0ER`ǣϜ? 30} 6Fd%# B !@ш{<~xEVGj}i]yA^5cFHWЈ B?c H(rBcV x`D#F,kB͉KG9g6 Cmߞҷ݇#IH |GRDΚ2羛ݑ!$i|/>{ݐC$ X3,Kf+S`̼y4cW/sw7f΢2Qt}faaOۇOs[-01;4 MnqQQ=< 0Orӛ3jƒQ p$r+MDY[/ l wn`TH0'"`#<6FKr*#iT[ZU, ^Į8i(8"a`pTa娧huEUY"@"{,~kgkY? 10>jyDAuPkג8BZSg-2t .}bDfsTBI򟼔D`j}q} mx,-\4ѕ֑w&A&Zk $3tfMƞ2\ߓ||Z_"$gQdNT.H Ѯ7?wx `.q 6FDP#\UV[׶0P.] '$gaK1go~seuY## <ǰ& # ;x`ꜣAJgt5R0Kl,BD*=Z 2|aErJuDd}C\`5ѣ*CU@J|o cLgs?tC/%:ͬ'QBen'5 iG_Ӟ9#A(T61O;1< LbM"C] $puB.`rSE3#BV 4GPd2߁>F.}Gq0D?k~w74nL (.} ),}>.?vص 4nBkӹ\{]}WoN˺$:m:N>F 'knb@Xڒ. o+&1feZ5#bxk<ヘ99e{@Vt01Yc~Q\z~CDHu.Lzu t22c0O@F$R z*5Bh{D]+9RD.D bt8(pNv}:)> 4":j5g.@UՖn5Q,M @9l9ZmY$@N\|S˶Q㬏O:ZTuAy0_)Ad{k4d CUoKFUAyIqNF$scMv9z~^}?fr$#M.5FDD*`N'ԼZ`cEqQre# )Ypۅ @O)AH!bMgDln>SLxElxzKKR=vZ 흃(/H U@6ȋrK\ھfummSMgz[>\iIBia &D: !gKEL@<)e.uAXG$;c@dMPwUv7fkfYD-x BL#J(Mg6c*3e:pL4i11UhRXe/6E9<JRx/Ik~Y/t71T"FFP"#>G<'aDZSkBq2rD$Ow%n(LZ7( lviOϟa?JuwR  LD iϱPLąo:RDGtf9C|*KsOL#'2<@TDa T2<dfXE"#Tx8(/U)/ڍw\XIHO+I_{~ǃZyﻟzW/opTZ[%k ,yֹRjNȍN Fkx<0dD< QbV^1Yue[%yįqU1GKcLn0$TYYt{xk٫0ߛg0V혒yun31$asCbMuV+Ck@LB$byU``F9h2@ $72Wb|zhd9d)QmNHjUY"hJʬ*AI\ɠZ2kjDCf"kQbt4׹0y.Tbӱ̊tRx94(=8Ԧ< gvmBU7lAҢģIpjZjՊj:(SjE͓REtFb(@ bDZd,M"DV֨TCMuqd!xmmn=y[T0h>}-j"Uf&dVIPisUejƼT[#%}244R<2ݠ4/~cnA3ra[ڪ7+ҠXU)}9XvLDyc0 DXR"raNyڕi:̗͇s:l29dfRAC9%|$*HcV+B=IXŝ4\{86$tQ@Es@nnp"2>T뱨Z#Zp[zV_dGy԰PmkGE]$qQz@kRhaDˈ` D'X{_ 6p\fY fbFWZlj̒F"RE5.׍@\Kx ZPwok9bjenhhW}fH >\Yg=kmѲV†2dG *Ύ:1'b|a Zye|'?LV uLĉjefNHJC|Fa$L՟b;7@fǝZ.؉4RqqM%Sb''4:{fZjeiCWͳzY-DΜdݪV.FuDC5u^Sԋ=MIy "fSfU#ӄnwvC "wgha*w.Lv'#\Pj(c7ɏ]fQR1 n=9R.LÐaO*ڝB1FmoP7QsqDÂmJk5T s`΀;x)lIm+ _;1FծtژwHZ /Mс1_tj"c!GqQzP}W6 zX󥢽[<8"p"-ہot\KqyvfyAnx}w0<#OOYd7OSɭTRs'HEPJIKUW"e&\$%b ƃDVtr:Zp2 yնBh5!,FGieE\%Wkx%\}x[ܹJ­;/XuaY~!Xܧ+/70ʃ­QLSkhnNvtxr14"qN", ωm>ԍG]/YARLmCZ@+RTꑈRM)̢YǃkAfra]Ne@H2K9Ov9Jr{w8*w4H>I:;/O]T{{ 6 ꇩâŭ;du( adqv /Ewc0RF(6bogiK!r,a57]4ö{ѓ/E~m VZ i{0uŨ5Uk] V շE!)HjMVB0,8he{6qϢɮXv]\L:hjЫTcM_^n`{_G$n㷃+z8CBXlLͧxB-+\ ̝TʑjO0jIff$B2r$aiwnGߝ zDBqSQ)|yyr]sT),2 g"kydDYqw\/= F#ʲ]]sǔyɝc!ȻyGGkp2.9MWʳ9Biَ2 ABE ha*DZG.gXq) 9c+V~ņ8.TQb6oQz+t-7mI*8U|dq2s0 37`+"ePp;u8B棖 qwZVUUo%+uP[jbg+!jdy7 5Z=@.y- 4[־ A1>nnPF|Ah^8>-::(PQ(+X'Qjp+r{zN\) r}o/+L};+͕VL|7%d]+&Ƭ2}xUNzwdžFڌT=Q?mǑ  D6; > "ٴ*bUIk~#RAGӻn4CgIg)l8 ĝk-!Ztf)p3deu1սg`HdNm`Vj^ͪUѢ0h5=<"Ta)1Aث|7d='=Y9/j,2raPBȝʱ$ \j54PhDa@V_bl:fRC0ţ .lAqxa: ']%-TzihUCc38ڈsn~˛Сg7ϝ(uݺ[ڶB y{_j^{p9<#ޢR3 j<]յDlK5*w$v4F$)-N%R14T"sWF+$ N)DBT/)(\Mk!aG40+8J E=R,gaVtGӽi nыjLN䬳ldOU5U7WrR&Ff얲X(gN9sɚ(ߨ*:wwi:< M"̴(L̻3TMg:qphUҌ`d ?`7ªYl6D4.ago^GDbDx߬ZY :&usՉvDGD/,deQ߁-K:->("+Ujߦi/ƍVv!?įq&~nC6[ȲUt~k a69XI">)Vu7ɔhGI+LNVh< C2#7V́8fpy7_ ^=<QRU}(V<]b02T]tv>X6+5qV3· Jjjy btʹYoX-\p.nbŌBnP'cdt,tRQ 0*0vԨ=zI57 $8d<5$sTjMImosWE;ePtͲD."Lb'&# Gqs J'H #)P F"RrTpΤj²K2 2GN>fx ֢,*,ۙ(%&"R"v1' [:^Lryg?v&B.2`ҁl6]T0=];jaG1su"$At2x6-󡌻P9+j,}[s^}hZ$AR{fΚ0۠/)C CJ-h.[f/z<;9cJ+o)!?̭bj!R;qHt]0LUb6 [i/2NS0C3>k)t`SpC]r[Bg| ]U%iYn?b7|\fA^7ncrnv8DM[PnWŬ?VzYwi] 5*1_pO`UpCVQsq%3$^|p|nsg̽C1CѢ,I@@<ݍsvɉ(1t9'\]磟E?DH/~>&dIvySm!BifFjVUM5|}CªZ.C!{T ], @n{(Yѕ^;*jnt~:hс:37Z Qy<~JN2WqDER2Q/!)F&f+&dvvVԅH4OvjAr} q8 0s: 3 3PK/}g6O*)rGrwI<ϦN IDAT %6R{*K;IedB"7|$vmG@$&Sw;Rq52,A#U*!wplj-ߐ8;*INS݋$C pxS#z8 Q5vo!]Xk9["[.D$I$KUNb"v0>C/l9l͵ J|t)tiQaL4ONɞf+P|VXՐsҵҦ fZh!eP0p{qsn w۲P,жBU:Vm(~iBȯB(HAgV]3^ય3nn ɠ$Ds18JPF5egjP;y!x< R$9c68X P:č;;yWD<]Ǎ0=ǽ`.fsd-FL8l27<9{:9!I)V3)0L`Uj)e4BAH2ִX@InĮ (nJR7ͥf]?S %!3x˾7CFh##cEP.]%fFZ= ?P/< fS0`o<^}w\&>^,UG.4jCZ-4ƖbH`yֻ*]Ѯ}0>JW)2~l[LlԣMQ{o-djZ'DpFݪ7G;{kHWWjpXR]LjRs#o%ꌜz(d_cRknP sS?{ŠB VuRNYB F` Gˬx  1?KiF0a<(zd6}r*4ۑFBzXDݟ|f$8AHD& Ȓ]lGd%CQl@| yNYds)7P"iDS\He_Q&ՠZ]vuw0+4\1B[fǦ6d"qmM;>ӍlM%#oDhMU h!vz, -V%ߗ/W:y ј{{F-B;c%WnlQ,T7*mPoAD,Fz53̜U)@ Sx 6&6t1W3 %ݕ,[d .d@[Q <*ܴWn6{UJ8qV0nBaqi@fޱKfRIKuZ ѴNѬ& ZQ+b3%: =4U'RhuUo)(h|y2zv  S⴯K[n@:/ծRӐ3mVܭ"& CWt}R0Bܸ$px-3짮=0- :SjZ{5)Z +"Mu!Vkm%lldt"XǾPvW<:/ܯp^َA%zQR~4.o.l^?X mIkw%<]B*@R)iZI/yȵT6t3.6}PAܝ\6l\p}QW4ⶇñr5grqhi"!JՈ]UYaywKVRLT% 8٘ CR* #SN娍x݇̔T/ATU(^P-]`f4N61$SrdTV,%Gj3H3AȔ!. BNVSJHСҗศ?Sutէ;oX""oy ,GUlPw0W($ȠHRa''PJ6.8QK2EEevY&zѭJV$[2V4F7ӸQ Pw.M-;ojʢAPx|~.^OTNwOwَTVw/ Rv y/ͤΣ"Y@<~hY!fƗEnfqE?w\AW*.[g}ƹӶ -+-x=/OOoo|>sOco5ݿg{w"6fpYA VbP2V~L$2sɊ ](kUJ jF ,P-$^#-@DbRaGIRkeqv'$¦ZUiiyZ̴>\znn Dd% G1"}IK{OOe_6}/_ċo37?A[;%bj1G5WD©@hl+#wL8$㭩SM9.*WG(,FδxE/l3,%`--oXPV; .j>dWԇ&0 <1;?%^Lhּ ̯|_J[V-s_tۅ>4Ggƿ8v,j *Nw/9_@G][#Yxe6'qBaj;c$J-{k~wwߟi?p8~pyր|m*^t>"DH4C `Sm,L~d|wZLzZ UtILF6kP qB%j<iyF5u \9!e6WbìrϡZfQy ;9p(\1EKLRJl,9'fPDQ O]uw<{^wi߹o?`$u8=vj֌YFI ON/?eGOµ.<u SoJEb ;+շ~jy-}GOݦnXL _<=LBTG0D2Z Z_HX?B}?Exx;nElGN)L)KTyDRܭ5Ͻ XO>?#SHB~a_[l(nʍ #}Ͽuإb&`ӏ|;nSUs]фУ@f.$k\rF &/#/q@ HiItmgD0&h5s oIJ/=g_57G˔h{a(t}5;G_|p.ƧO_ -.6og;4]͘q[ i͊? o?DO~'_C?}|~oo?_oҟG~\=T 9ER U]gutǞ2CN9[+^|>8PݝݳJplPXX| <Κ$tm4唙% ;K '@Vk`v7B2RJujJHZaQݯ%w]xjW\{x׳}g;Mi1p]2L= uʙԺ#Ӧ7Z_arJ'OTkA-fO~˛]:٤W][CVC]M@XL$xvͷO2hC1&Ixg -Da`S)`Y8?G"/{k~V,=ٻ:1GZ᪮X fxCfj\Tu8g[x>O;۳p Բ%{w}9ů[ sEQr5~?WFOl:w[ժ}_)A:r5Vks.:NXGnO_/w|w~w|ok0ʺKf05+ɴ'L {/+ekH؍=ï~w>ZP\^Jf(Y"_O5yvREXܭN3!L hpTOC]A\ɇ1QC*9sĂtɞVjq\6¿|&|h CÓw''LJ|~䎔?ʙǓ`Zi-6aEmW5zdf+fa$n7vCb;SGwOj?Ng{l)?ц B@w|k2O2{Q?Uc<}ɵKfer(g6d`duY".]zƙݶʆٴ9cؑ 0NG1xHCKN2|vzgnn&ftw~Dnxs%>P"NbY4f+Aqۑ@kXjWF,\B0yIwDpYw}'~{H0|'\LF-tmz4`@K}?|Vx=klV_w9ʋKO1 4rϹ a̟_{O|'ܯ_v=Hrӕ΅lUӌ>_ZVw%?Nx|z\[5o,ǶNt>ߜjx!  :ko=gϞmnw}0 ./_{u{ι׏8 h(40^T 6 ԉuCيJJ5iumEԊQi >iV%դdyB'1;^BUTv>BB]_s=9g. ~/Ï}`0+ 1n0iWeaoEQ7qpDClˆ3k Jaϗ"/`y357xD js)a)RuЅ"jҐ ]LϋV) &|L p=L{l Z@JC2!CZ8)kܫB M:\bR9X!ꚎT O[&nuSfQtIDAT2clijtd{@o j:S`D'E-&V?pO?]UsvJGj098fn;U/*^HIK7zh)HX,&z{[] nྉAfr=fexJWOӠ$=czGZLZ#ÒbˀWɜ~F0[k_b\@k'uwM+o\F@c0ۂ7 ok33٠ ݀76{ @ҟ(fS:f,V>"Ox.2 Pl20( &TBɢ \hI5%^ߒ~qq({3qfzJw]dȣFеS9*k,fWrڠ t`kxŘ*]wu3\nUΧE$ZN4?C ~kV?*cҺ/˷p@M+uyS_5${ oww¡&8꺢\Ce00 00;p0; |vC*q)z=;q212Q&я_k%|Ѓ @)&`W1l8c G-G髴Wtf]Dof-\ɀY&T@W`T0Lj.58ր[4ڂߏ_~/WcJx%ޛ'@^+G:  _ yv9\æ6ŋ'bx{ :xZq88M?1itE.Xo(1%xj |pÒҘXwY Px8#V<|? uS]ZBH:Uu30*23ؠZaF?~syq:&#kCQ`QKxX5ԃiȟ`h@>g k 7VY)D"N zbhDU3{7NaQpÃ_żI<E`Vgw[Hb;FuEhvk 5<>lbLf?cQӴ ,Ά֏5+obj:C23p`atŬF'!rxd2SnE.a 5BH%D5BH\#$5BHI5BB !$PB !$PB !$PB !$>2t(ܱ1U#_YH7?xLu$u0]0U/4M| .<3lYxsWdVVV}}}AA(YYYږ… mmm3U+4Mdo˗ a" |Ϟ=Y/\ 75ӹs}Eȑ#q,&&o$M6544̙3nǻCJKKUUϏwiwAJi^>B)(ڎ;ݻ}xMy򝝝qk 9sիϝ;`#TUUSKUUUq+݇qZbŪUjjj2'`nrٲeDvB8NgEV >#1?Ѿ l۶m˖-%%%w6]vڵf͚~С[0%nܸ1Yf| 6tww*50pnwX`Տs*5s1`X4xb2kdCC !Ɇrl(!!DIENDB`fdroidserver-1.0.9/tests/repo/org.videolan.vlc/en-US/sevenInchScreenshots/screenshot13.png0000664000175000017500000020315213243530567031542 0ustar hanshans00000000000000PNG  IHDR65fsBITO IDATxyewy}Ruk}QVB@91!ENx'qb?!㉗؎xl,`&# Ivng-qnWwuW#VO9}O}ϻ_ÀP_4ċ~P x99p Om< yK(ZmC@7ÿ g6`R} =P w91x0~۲0݄+5 `W̯)N}.3oOv@ S?Q GP2]nkvg00<[$Ǘ%0~Kx@%?<8 и'V'k"ϡ ?y ޾H'?`%!c\1wN߀dgf0/;F|Wx [_" كLu_!\6߅q-&E-mWkat|I+<9}ec\z*{M84~{&F\nփoSGa` EoŽYTPxJcnػQȅȿX<3:΃B) 8 2`Vx=!UjMH !љǟO (:u:KUvrb 8_H2+ed+MD':׃:A& 0EtI>?`/5x g$5`]0`ˍ 0@ rck 8K^ݕ]09sEůVu7Iϛ| 5 0!~_ c'oY>M{)"@a-f?ގ/YK[ Ak4Ձ _Jyǽ7x#mbW?F3Ot;e8| *Ym$wĽs?饍?i- soq6~EXŧ~0_vuF(@BPϫz $Ϳ^KaQP݁AH~^|2w<WtT}B]_'HZ(Z@ |"ww&.79 z ?nzC8% [_k߉_*G8]o>)uW.osҌyrwoi~<rWWѱ@gpW5]/_3k!gl=I 5^O24BRc+pO ^|?:f<___-wۯPs߷zi7;Xs4}/FuU ÷H$׫h%?ކα3ϙ4h~y >y.~Qt4ڳ~F\H+r- Q xho-p:Am͌q%z&~PZ}#Bj"$k cs}18/E6`󆈔p\y 9YUk o0`]0`ˍ5!3t 0|̺&PJ !0TJMOO?#B D9< !&''?ϷZ'~ow ,|J)LJh~xÇ~W{"ޟqu)׿kV} _ 7q_=>>Z[jy_&q7 GJpkyr\s8ɞash5vR|3{y{}(IPZ{4M'&&sqW:55>r6&mDK)ŏ~R\xȑ#/㫟8޽{7ѱcǦ_;44m6!bf\ԏfV;v wΠkq{_nᆯ|+ιcp]&''7qպ1wя~Z{w||;aUOGD>苶 /s<#/~\pRxC-[o|p^ lR^?y^p(}v,ܲe#!xU~9WFu^L㑙ayGaz84}Q~.qΝ29W|nsw~iyW]u>nK.y[r7M<7c_$JRT՞Ҡ)k}JGZVh޽zkoUދDtZ622r;\GV;w CjT _wLKOFkXQ@8Ǟ3BRˋv~v߳*I%ȳ\0ƙFUEvLҪAvKKmDDR 3aA x IIs\V#yeNb-KtIyfwzﯼ8^#UydddttsW{Nιꫯ0 fWHWL[TU@)u뮻.˕R{+\K䔢Yfz<RVV6Z1RJ g01qᤀ8o cY'TH-6+1$M$VL;߶yX@;vD^I3 1w$ssPұN*I9gJ@TpW+_ Thf Bp[XIN¸zoj.m&smUfZ,ᙅig9Գz֭nDRH!NLէf۩ZiW ϦmvQX&{i>A<ϳ "c|Bcӥs^8sܟByo>բENb5KdoSR8 l9X.7863f&.N^}uЈkaJR= ,XHPHL^R(\ i,L6Z@gVJ܅BNou 60=::ph8ԼG݅E EV3m.w#aH͎R^ihM @ =\-R -..$ׯ&D4??g-zRzkqjo߾xӈNZiJ)<>;ٱxg O0޳sIMYgp8*6UoH!utp\ sfp7$]kɾG/ض*W}۶O IvBhbZsfR4c*ss[%%qFjqtqADf7tWc(,9Ϧΐv%ϥq54'hتpKzau{v:x^R՘HA xA,{9G-4D3?rm۶^9r݄###ڵkW py~ff)^kc u-2܈HJvhz|pZ}*Wgt,B & )e(ZK)D7V+C_i$JR&@,/<YT6գHIU㫮lb|wN16*-[ҁ4M:N4LTMxX&*v0<hv+div7oav)FGB;]==fnyiӪZ z,WOqKRT=g. !Tv;\~8NvD~kR )dWOHD`+*E+5 "0@` XfC0D ίp$PVe2gnn3>>^t:d+7βp'kjVRqnk7(vrr2$I><22̖aU@_^ d-v*tuZiL:o[@VřVq..NSާ&6;HƷnB?裮`]qIU.l 0 C!8`4MGDEQAp~,jsoܻws,BT*j}wn޼,={%j'V tH'f4D\ )04ݥ(P tFATUi&Qe͜;xH^쟙uʼnxՕ=z$p߾'/ rֶĬ(+rKPg ԋmD$ ErT:n1:IIK9 J4j<3W#x;sQ@'a C==55::42:֝m óWRw΍,˂ Z㬅=p s c$CJ$xK33`+7 F+2»R =hiREܬy~[z衇߿m6)\eH/l_.UJJJRZRy{80??СTғe(ιٽ{v:\V+{}-˲%Y9rdqq{_ˣ`%if--7j9c{8! ΌsClf\3xM7;hayGi"H%_]q%Z2?4\g N #q$,鐦H|llH3:'$B|{aK/sd5^ YXtLzGX/t(v橛_ʜ%JZ}מۯgNa-1RR0 HPT:Oܗ'Z_h1' opa Cbx 8*}̕MV} DzRdAdPOq/c%R^gff~D cJK)OT@=!9 X8MLL 'ʏ"pDZm+2EDϨ~n APV(?]VeToefޱcrbbG*爔2*snƍfرc˹xUW9JY1kh+ṅJ)kZn6" BЁ@ psK kj"ѐ5J xW "TpX~fY_Ԩ&߷@:l6yAiWI:DRr.G h[PTKf' (aư P")Eȥٴlu`%-6yZK@4<)ZڈdcfYEYK]uR#GUѱciKYD$VCK   H1 Q[Ә2Ffe”Eġf=@}A$I6n8<<\~SSSJC۝sNJYKϴEQhUW]uVTVJ^'C9Fa~~\*|СCd'|R)l6n:55UH믹 IDATuseBrcαsvn᜝jԂkQ5R{h&}&*՚^<<3}aLl6z/H3#*˜qFFxi"o՚T Vf۞}XQn%nfH2rEF|n  *Qv YXXdeFL ISSzZҎwdAXH}B֌K|+]g%@J|cXv@,c<@J!=z~[m10JE &* 4d̉Q -(B ,[ɲܩv. ^5 !~unrrRQJK3 Ace,^vsR,$HHk:4뵼(z[:11qVU9j}׮]f6|8x}ݷۿ>.ݢ Fa9:vVB\ RXATv2_-r饗vo_h4nik_}ջw޽{wX)޾} 7P3i2Ȉrxx䱔'{nRhh/v=<<bzz4_<}Sa94<{vca!7.Di{dBz %n*$$2\Дõ@J-uVhT5NL 0׬V"WRFA%εB /")+I"BiqMZ( AȌӂ% ǒ`6so0졃YJԘA^\(uJ7TZYg\RBaM~: !5)Fcdd䬬Tz^6 ڃ!p?^J"ʆabfUZ|@L$ 2`o~saÆ 6A霻W~WkvԬ2x\P|4j:22R{^BoXn3333<aYV^va~_}eг"+ez_]~e.h$IR([#:Kt:Jb׾v2sZgffZV$F00B0 J2\IPz53;g`dmu}au{)H UJRВ Y! y^xv8GOz])i10.-|Ե|k<:?L:iǩq4gpNt^< *\)J]キAI͜Ҕ@jU)gHh`는/ TJ(x8N$˲"BVXғNݲeX+b˖-vAcrc\٬j)ceGK۱cݻK||P*'$RJ %36ynD+t4­jN88BH i*$N+k $2-F"/bdxjIGjYB8=cAX")Ta8Թ):;$@§!cЧ+'8]z+&A99Rh @kvoR1{evF !ʍU @5,5Dn%'[i%֑wX\lJ42hvaB¤,$Y+`~6TnX"1T^ vSc5 嘍1a<9^8|v!Ɠjhn ea"`tLGAH"7H1N];,2%j'H2?pe{0@c{CC4Ͱ];6 aW-{ c0{[>fݱcǦM}ZO]D߾_z?rrjunnnllljj )Cl%Ƙ$I.lrr򩧞曇VEQh RKB+mSZQTRnw|.5q,JҌbH)$gdYZ@Y[DiRc @Ttk)r: 3 @q{.Ƴcr3{_ʽ x*p Egemju[Jf'_KFƏ͛7?ofzJQGfÞiu4ve\p{ާY$!rM޳ 9еs;D' Ըmfǔ#/8 zRfY )ll y8}̼aÆRżJK.YebzQUNZ'MӲзne_%_[eĭY9klyGBJ)IrkqLƆ.1C Qȃ@i)2 W:e0ijlT1iL$B{&C =1 O֙8g IS@mf$S@KIhR!,2H^w0G.YSVXj&&&tlٺen~>R ":ժ)ZiΖ7))Oa#h\c+I-J _}q DgZ^@^t<_USOOKY>`,sS:ZxY旟߱cG9?,z__ \my'{Sޯ&tHO>Rv9;;;99IDCCCjhֵOzܓU y1WZ04:B=Z5]V#m3Z I"" ᘄ TJugwy"3HazP$Ht2"*" ñ1:= U!u[. xg,;`>;7::Vtq8焔³TƚZVIo"{%j$ȚKλjRM;[Vg:7^<0,`|lЕQoӄQʷ͛sl/Q?M ʪsiSYu?|ι{;9$EђH[H^"c ~[y by q"C?0$˶lْe\ː3{uU{nw9dI goWݭ=A( ˃P)Nڋ08D!32K5{AˁDE)$Dc ;.E!0Rn]aAVRjgJfQhJc1| DB93CJ穝:tv6 mL%MM Zb]u-C^LoYތ.$8uϺ&B} tia@ZI`9CB8{!`Rc] V$>u./@;$KMLn nzeW-ۃ8 8Qǽ#BJg-i=_! \*ueJ2;[ peuea90Hc;|PΝ;3u.k>MѶ3]q֭]ZgȾójH"z0PP"H8T:ϰS^Yi2`A{  [h#[P*:Ǝl?JFDޭח,xggffs~?˲MQQd.ߍ[.E:'d ΍s^I\bBMTFR),ita 'b\R'Q:@0.w@EEds!\ X%"@`˃ 6\laUD@J*EP:5b(jy IDATFSGׯ_;t@ǝno;`cReRիZa脛ȑ#`mn#n DwD@TATv¥8 k)l]R~ݮRӟtZIKFD>+J"Nz/Ao_5 ݜ`TH ! B_!h4 Hh!A,nŒ z_/aznkIin z7R/#g[-Ap[cecOs 9gHxp9DJuDa$YALE8X% lnRlQQ9Ṅ-), Z3;)X,0:BrAV**&㠰n* ; # bȃYRl PJgYN*Ja,(`k05eq) ," ȨPY /R" cg%&\HߐarFٴTȆc+O>~l1ɩo_%nlIOkOx;0µD(F v+rv"YF }G9S耇7^&⓰ܛ q0Aqm~6˶+בIƯo&;D;$'`Hf˳.faEʛ <"A:DAyRĎ0 ,1$QsQ`Ddz|Y]X aHkv\X *Ms{VZ7Wo48"*"<Ϣ0Vţ-7F NJ'Z?_sxGΜ9k_#s8p[˗޷o߾}~WG?zd k]ztU3H4e0 d[Q -mVgѫ]V/ur+LƜ-" ;$,!"Hg7a%QFi~an{N2\IKVCk8[ CH ύH(ZP -Y&‚H:k9 ,DJ(ˬW&( RPV(4lP.L ƺq\\N} 8$AĹJf}߿>ѣGKC߿|ȑ*]8BjaFOS(883Pa)]YquAB 0tu*jd0lfRMmU'Y1#mcj-vcmn%Q!"!Z'aLI-/7j f+ɠȚlK$0P@,Ya#cahBǔM+&dP W@%I,) `00Mm)(ey> YHV#ټ V6҉K=kJ7VOɋ|~zr3D[,Y5A"ٴf:qkhLLaHwRxӕ* c9qia Ũ0*'ID\k>|k;yơsV~:3;K[ m^̩j`FƘz?w΍ DQ +3;vbvwBʯ@`Uʑ\V-#ShR1S"MzY[qzݐEc.j7ިq \ 3:6ٍI֯c8?vfgta$MQI` c!uX**AiZˆ(sjAX`0^[ʁKAEQnj51:ZCEqWYlV3nd$d "(SXheYIZ7q3C 'BX7p:kJnNO( R"Yf'ƕGM,B̎~k|Kvgdܕl:pøN65@ehf9cfΑ1V c(h~ˤZp!vz驀 i^&N˰(VSSQdn#J\zlT E/_($YB J,yKGDsDXc2S6iD zoKQ;?n؆Qu#.o\$`' "@R tP:F8H1a{tJB}g1r98$tcDXd0=<,!T+oCLEH ",-&ZڡDFn8Auk"RMMGk2t/bݣZ [|wi6^ojX^=Jۋ+]9-  Rðh&6>]ȍ>/ ( Vc`]N!DFO2؊ig)@XXĚBJC"ZO9& Dt@n6jȚ]MTw`õ[Ay TrZu2؛ pn,A3>?ggock=q1 `0N~bnpq[&cnL݊r0ƞvphHӟtToֺ($IUx+t(b0 2s*Jc7ڻׯ_T*z!#}ck]?^0 {r={|]kHw{w5wgDpiU׻wPyNktM);s=7.ˌ1:?72x}b3^04]=7qau91RdYQm:y8 ι:_=BQFc]xs~ݽz:w9C`//O?ÿۿ} _xꩧvywD\[[qRJ2L`wN?y/SDV<%Cuw7&v1G˯kM9‚/ nRΝ}z//^8\ /l6_>N>g?Y:w\+8Ϳ[J^xnoJ(j:mƽiNw`& ׿7pqͲjz=Dr i:s|q1gy3d;wQ휧( Cz\v… gϞ"zȳ>[VwG?=؋/h9s̕+W\g?}O~jK_G?x󳳳Dt a.--54Mv9;D+THxsn0snOOOoCFkkkZme^]\\wқ*JR tŋ8}῰Q:thnn~,y?/rEZ(^r!"vZƘ0 }˗/=333ۏWDQNs'J|_~9ik`0h6=Ѕ DĉjZͲv۳'O^zi|n{̙g}v~~> ãG?ĉoδv:k+ beGY^^>u?_;NZ'Nzjۭ^[\\j~0iZũS$I~"~PT Ν+Jz}nnܹsGy8 gffvy6o{>y{fStrpqqZ^z+W^3#\./]/?-رc^x_|7n\x\.?;tmG@DO:S'Nf… GݥYmLx ;&wLѸqƸ٥Kpo8f>~Bպ~zfQΝ{;nO:5??n8nZv.,,9rdzzv; /I<ϛfV~xoCD+++j^|9//0 Xȑ#^^Y5J vv3f}^Z׽n$'Oĉ>#Gxfi޿b:u^7￿ɓSSSEQ|xGh0sRYZZii8pVWWժwc|Zh.]:r `̲luu՟ p;j'4zSSS^4><|qrKeIj2L&'o0ûW??3߹5 W\)Jju~~~Dx}џ'qگիW~ׯGQt$I5gΜZ?íVj=CW\9~xV{;Y.O:tڵ~^l }ۋe 𩧞 $(v?|t$>[^^x2"rι sQ)FٜYYYi6 DT*07֕JeqqQDhjjϟׯ_j^PJήe_~[)V&IRզ6doܸE:`zwunnZOY?(JVxa9j=j$5"FQtj7 ωA _89ryGZE\j^f,JI0svǏG$Iݮ jϗJ%/;V0==9yQهRL^>d⨈QD}6toV߳u5C0:OZ7y7y&PZ$ɓO>Y*`Rϟ_XXmpۀ7j MSǑ[mM&w~>[*~{dm&AD캪 v;cxx,:5~n~܇O/\pԩ!osl+菜݌ws&)/Mw:?M똄H>7jnko6vgQa{۰G=mأk{6ѵ=aw {tm{݆6]unlV ( wx9x_xأko bѨT**JƘZh4(V"REwΕ4M} 3nt[mZιz>("y> b,Jޯ\.(zh40A^ZT)?-onZmUɲN/%ƘYkggg8T*~uJ4Mggg}; ̌/x(6j~|hV9I4Mgffy{r>*z=cL>w@ɳ| "͵Z-D p]8=Cvh,//7(1ׯ__YYIDnfz>qeeezzo>g 6I嵵,ˬwx ck-"cTkkkz=v|&"^[[ 6͹h4ﯭ-//Zk&".FDsssf6u]7x G8H:y IDAT%Ih4j3E1Lduu5 C$I߁R>\o߾~(zXV`ٵ\.߸q#~$I$˞ uDiz^@)5??EQT*noMUL0Zz֎7 NJR)6}+=CDvV)_reox~8Rimm- Cmacg94k_˲, Ï~kwZ-OMM-//+LQyOMM>{nnnݭqmmsvɈ;Dt*&r{;NyۈM~/:U4~???…'>կ~u3BD/^|+.\xꩧ|B!cZEim?9Xȭ[ŋ4u ,Ї>TV_}W^yK_}Z??|_/}KsssRiii'' uy/b]?^;蚈DQZ_ٳg`-oqO|kOxiJI uہN(]ʡ̃|%PJDw12o "`0]oa>s=?G4Mկ"q=`Uեu9w]L׵7)~K#o ʷSo"?ȰxB)5ﺏvΗ 41gg0̭j'2NZsfI|S<&ձoijx~O}ӝ^u6R@oHQ_ >eu}˞u^6ILטyaaa;f{{uC@Eʼn&e-"c [m={RI $Dh ] %(Z1h`QH"r 1 " X@"DP@1`nfA Т L@ Xsoأk{!3 Za&$AB%R% TJSw_Q@k"P)`$Bpˆ1;ъX"BAL*b%P")0h$ 쉜g! h@Hqctm熾pO ((4|j@ctLrẻ:31 ep+zu / '~(B A/ 49oȳtH̖5&L׼w /pƍGy"P ޮGîE?EeJk֘  \J@" ̎ XY4 0{fn;Ywk}xG~__2$SI=,x;:ŎtuTNP HʿIٍWΞ}G[c×8ԁZZjbGyԪs9&yRo >,B G ȰL2p/7.8#xVeA!\P42g2 m2ffHvQp)8 )V+P1gbJcM< ؙ"OGETD,Y"\8) p Vā09g@%"@ &D" Z# mH)FZ4P8$x 8phDFαcVDZo}) _9kRJQT "Hagu5oztg1u[ '|raa᳟__>}?teC=|NӾ믾w_RlS"q%(* +kJ&(TADDcr9GKNH Q9P)ְqM(ŁrXlDTCۘd8< ⨙DF4o;+pi3Da`PH4@H! (@@@BQ8VDy9p`Jz ihH 0  r2 56!:eDa¸̠p6p6ǒ\;G’򳬑DPL^pB˗nA q0`eWD(l9f"&! p.rqz  jLDQ+CEH#BZ) D$BB$rRuଏDNkʋB%q<|X M\"DT&;/;k0ֽ^oy4m6EQ\tGZl6wߗ??wЇ>/~qffɓСCڎ @P zCʐG@Ad  ^;(0LWN@v&}гN73  fDÃaƜg {2dpĪ!0FNA`q^.k/eQ[ (P1˭$(dhܳ(;<ŕn&&AD@E:F!4l B &<] N^>eb@+" (Tj$v;]fP@H"&ydDt`2=y>,쉠F:ϯ8 SJEύJv#gqx"fZAHQQkHȎ!j=]SJ}߾rӧ'xMV}E<ϝsn]vѣǏ\r̙n/a}韈|#2{YJDӺPAM’#, dYfUZs``S{Ax=L<~x"#8`P2@b ㆠFro_1^ / hx1DwVΓDD!xÛQ!P D,nlr&F  H|p`Ms.gFc'iꦓ\D9BЁhְ؜A- (~ޜe:/zL4u"F&Fpv|!24FP7g2`r~Fwf0diE8>Y@Za8@Dhq w,"a (Z :‚7U[Qxb0[`;f>++q3oo9vժVt7Ɯ={'~泊>|\pnax~\rE)555K;t d7`,3Ȩ6[}< u 9"R 05{[  njL[F}@p~ (B̵4s+ZZt  @H)kYc FD@) a$_9*C&ĚZm]EGf0(8(TM3"P%D X`$5"19/0 <üpBkE(s2:GHEa$ 0JEӕ~D12J.]zdO?P1sq5Y+ ¤}S*xT_kbƏxL{h!"R0-(c?&_MG}(.1kmW֙,@# )0DDZ Dd$1JRE Ʋkg9^.;I!( MOaHe, C %"dvj7+4L>2ԢWs{&9A$d%% H'%.CZ ]\ U"5S@*$EB *r#@BPYP!KE0I{`X![WHҹYr%* Cp < #"z͋7L0|@7" TF bdA??]-^?UDyJu k "DTЊ I%Q.ZsNJ q@f`Lz3 31 FIL` x<$@(*& V>'UAfw _|.ԺMk?k]g܏~OYiUsUǜU,]P^ސ5+C9ddZVkh,ѝ]X: @ Uƭlg4CT(vľfcuD؃&/6?ϒ1O[\8ڿOr:L\dr٢QO51T 3nݽ1b8UFB<0ԑJp5*ݳ{SóR L0S#G`!dqi ׹h!S jDETv;ߚHܧ'§Ol 8d3Vc"I)_YΚ! * |ѭR5ppBIDY$dKDD.Hn$L9y%=&F ?G0P}pFjJLL[: )D!Ll3MsWh Jʧ_9 GHR)x 9+ &s{3ks76S>PX,"x 6Bb Tld\\O#V1T0;zK scxt;Nnۯ7"fE Of]?#2\ 4@'={!6u onO^7<8H1c%`ץ!ۢ-uKP7P.o`~}ewP8_iDk[]ǧC`U?l* V("A8 i1 #fY)N1U)?T56} Yr%}G'MGGYMUSNH|9#.- S ͬ(gWerbJV{Rf ̍]B`)P,FnJT\3U"!̛ca^dL+Ve?$RrD́8Ԇ!Xy=O2W*lytx:),CivM[6=Xh0X"X^s DR𜟹zi^WoߝD 1'~7g&b8 Ðy*f0Ռ4唵Tl>o)oaTKj vâF n*wf#hu1tK9pkN쳛0Bq<=P"s<&Sin`'s2in"咍;{VKDONp3f(1uO~E.նټQI=;p%CBEdjbӟ϶Mt2ar{:Qz`ږDj5+B]ѱ3avw 481X$;n@@9ccAmDO7o,gRNdPV'BVncu n@,1tMSfs& UD)A5u7zwNA5VLAd1K]MBNZv IDATݬCq$` cQn/$4-pHpo |`3흨 Lo'e^0NEvd/8m`C^UAD:XV$S%bH7:/$S".Cs0D 7rw5ZNyOkEQdbD"`$ !wskt$@ꆾP_YO4X뚭]R C:0Rdŗaszrt3bBLSITs8 Nq;L#oB/Q)wRb1$pGJgf}|AYfy7nkr65&bv͎KfDzSJ77u]=_!ob S&|٤c.a Lz8L cK5t؋7"c ggaq@︹4;vm j^%=+f6w&v! 1?S{ԑ-ЗT^ F/BdDow+it[,fϜ=ƚݻkC8OvUU'G'Y\sNn(as/Ԃ.myZv#fD`$X3YSJ'&g&2~{0<wATSY#wB+%l৮_:)K3}{- :UMUJ9z A]̷C:v0m!= I  s'Mm?2#=ܛOT*Fh`+Ðۤ2BS{![|&`C+WT׋q>#cSaǬwCr04i[wdTוaPc" Xvu]}6>S@ȖMǒ}7x%s"8$Dzͼ16#p0-`˫WYefLs:X]/ǡONNW"XQ U]imo;"M9]pj.""\Ũ9Wu5'rYI<;W/fHD0+!,%Iْ$45n#a*Djc09f)ew`[4MUf1S";DX@nX J@>굧{fu: ޶݊9gUsra'ղ0FQsh& ]y-jm)bO]4b4uRl}ow\S2͡L՟~`]*闎/ļlBy٬O8э߻ynPX F h<*[#'ZpLc+0u'oh"aul5ͩ:k<ج f]͉E"-Exm7MC^X7v:Y}v1bIp.@1D:'ԛR%4erg!Yf+0Z ?X,jN*e'0TRh\D/Lw:ZeScUj'il RJU%W,B4Pl6#aOv[zg߸{37HfH$}A$nrѭ['#52Uq"3&/ד;mjT$f4*)9֛OUa1^]B!!i?`I2 1|TqSq1i3 )Dcp{vv=7LYmvR72pW g][_;k١@V {aS:Xxҿ^:\D7<(fu9z>0D(s6Ǻ:K "r* :ȬjOY:4[G6 0tm- "!\ gRCȋ[]]Ϝ'@#FBb|#i?NĻn 0L c#gx U̚i]Eۮ뺃@e:T b׮Sa{B@f(b>ڶ4m:ctOzސ#TGu*[qXjɘܬqw@obe\ځ(jŒsODcBZH. ?mR$1?Yb\GΪjP 确UdWU\pqDٝKMi$Ȥ?Y3@"{J9]fl>吟PzPC5R#IfffNqDDiyc!P ,Isi䌺jmnSXC(#C͖L/mdl4b&fUZIXΥ6ͼŋWi,Lm?{ZUUqmwڸ!㳣b1lu4(<01G]BKC"fMC3mח{=1j !UAI!nZuQ @DkNЧo]6,LtRޯVσ^6BF4A-3!ל nj0լ]d 9SrA<053)(4 rx,ÝQD *Dwjjz^a apvS@N;>WY5Xf*ы`.MCJ6!G4fԻp0B\3B.$\hxl[͖6mNξQ*qGLTl}OD!v!/l.OkS<Ʈ+} =NA,Ð4[YƾyevvvO ]2b!EeH9Ѯ'ӡ~| 0Aj?=kqٺ Uf׷q<4X]ս5:?r7C>Ua^rS5 fMh-BgイĒZ`ND|$B`v X7zk'd&C瞹zimX:L31Ъ"! E!k"R*9xPW@ji2G!P!c$S2ns:=!OQ&ͻaK76\~X+W6&sTAܘ\ܭĴT <{کn˽B,.57MK9N QWyLԋMnovstaFC T\3@[ /}L2& NNmw髫;8Pj !Ql< Fe:ƪ"ٴ^0{TM'~6"lwl4t=\>t+Oݸkd*y%&GٍyƘ;>|R4 qpq@&#4 ,ǦcskcF<]_^VnwA:]kbs B}kgy2e1 # L4P(R* e 3fb.c;~ɺ-\ZL9rc*Нve1ck{^n {_d.{\\1( 3;u)|vMnOܾ<\vw{٤V`)B8Mۧ/?kWN!'~{k~c2svXɣ=J!!W/˘+"bV7gM}ߺrfG80kYN7gv6;8-RաBpd u61*W9H NI߽=_1jc,"39=yv49 g.7WW7^x͛+̱h">csLf>!1l$L57&Phf"D"TƂRTNC^6&@;u jy|`3g5gWs֤,0Ӣ\0sI, h(#BߍHJ/ B }??L(„>ȵȼ @Nzw9ހAs:x,S{V888;zI LfJn;!*XG캌qo_[,wAU64Q8Ʀ+|35*O<,;Ll#{NSO[2wgb^/}YhU\,|uD=[ 6_|c%gf}9fO6˚BUP mܠ88_l<p^J~m7i1Gr(21yqMڛ3as׬ɱ63U#GU8[6O͛h{$3&33\4U+B5}yĊPG6{fI/ N*¿Cqly<:ڳҺT]>aD}*M! -ٿ/5"zWW~WK.pvv/AXZQ& "rKkD@"+x"An`d԰Rр3:<.X&sNLUuR& %)R8c>I;OK}&gv3.pbBs+G] w+)|4QbB0HeK#)c3SelO^&+XNQQ@1 .m V3暓W16MӻXqFVKe#j|ޝ7Sq<:[/1UV M`c{fqĔ~W8% N, UYnWڭd̚ŢbkMsJY10Ä́í=^| _/}KW<g>/׿7o+gggG?ɟI۶1'7v/| 9O}S72mMÐsVсvsׇ4kOo_/Z9׷~9.XkW0vK8<EEj5;9!ȼVslcL(Py vPj%ӷwb0 *H5'f b2:iBgRD,y|}KRWzwvi[w6pCJVD7 yë1M2%OC~U7:_k|sszեGe3MYpko׈˿,񺮻zիW?m893ٟ7x__^xᅿ`O;]M;5/Qpl`9 )g阣 8eRa`Y26m[}<)*i~YH{}C>psd~Д}Hj˹ f; 5hH)X-=­m7oݾwn\lg-t}C}6_W^ydCЭ[>OSO=4Wl"訤*ϮVO|??9Us˸Ann3Z5v)HEs{3=Bnj2w5BܞE5@DtzPڀmYgN$hf?Ga y^LlnsD(VaZ܋!5Eܢ5TT\!fefoi$L( Qe֠)DT*q1t:jHfSRx8 nɪXl]kWNaEهR)晕1.(2d:j$Xs}};8\M\o߾)B>2 {dL~De$#&C^RxĶʈ[b3Iլkwf&/T tƍӓa,#X8r#C(~k^z饏}cg6>ܸq˽OO?}C//~K_zwݳ>;ϙ=y_uu?>>b忯 w+C! sv96+ _|`5/C*5[`42ޙO IDATVBk^ yٕeT#|;YiGᕰ=WQH$t "SN80% FIaS |/.}Lu9 M VUۮ_͛21)J0#W"!ps!I)G*._}?{W)i7A]ЍBeW2s8XJI@\$(oxw3o/\RT뇇0RCfa٠J6uy,g<8xFf݅1]Ws3c~(s I :BUXaNFbH)OD(D`J]q dUzD2 RJKs}|W_e/>Uw饗ʞϛ>/~mگrMwU4$7.Yۃ={&0KsUC8sr`9z{`}xFD q'w #̜Y MlkS@lMO:ۭ鼮`8%Eq Y+.H5MoDxʅXjd,@,["g/x^r泬6(a3fT7NYA>a/oOnWo^4iYȵ]n(\tgb#>m(j"rZa;9=TUٲ9B@<\/]O}!GO4TW9U՗-rγ2X->hZ)𬖍T$XuY5&4C=k_J4jHm !y{y}{?྿Y>L6/7ww2*륎k%0ܴyXYUNtG!o%\a4d@bfހP0a˧9H)[v]AN;y`0 A Čy-iIDMKɠfUyZwwg9' Q4gב_P>͝Հ!½̧k$HjUZ%b8u)Ī2uE澡gݻyHm{ b6zp2{A523aPfc[w:sK?Զݝ^sN{_h]o_[Rs k\kljYl7O˘bvn}Zzqa(g2j7 <܄xL&MC*VMmdHGicr ѻʦN1;"13E_p8 !i4/[ QU#, 1;' قqJx0{fdɶ|r>;̼K>haX =<">G 1Lt3P$nUɡ)RQb&2n:3d"5W"l",Բ8*]@:-Yun48Gw9[Aȳc_V 7qv",$jD؜,/L37g{Nnv؝YMDv0Sux rwc~vncx%C5L.il>,[)@NL e5w2!Z <tfo뇜ԺdǤ>{£z_^Y =^oOqG.Lx05Ϝn?݅W \ jQ(-M|W!!_okz=x'Al2Apз)%?wK'Rer80){ggV˧aD>P 7WX,s櫢<1܉m3 AG$ |ўvㅞyWN;zswOvAk[4Q~G/_YsVc?;B }?}g*8E?OĘGmO;o>Á9wl*n'Ѕ*yz`/ۓr^OZK (qȥ$f@:j11`U1fU"1X8(Nѩ2'”] &;Sa*hxя.p%fmch.v]lauj׬/EzO~HӘ=NwަKbط[[M[[[ewQtH}SҊMRݫeC@^iW4y 5`T 3 :b@L0Q\Oyȑ&ҧ-Qab} ,puDrwb_ͽŶzzOE()Nq|# Wx~b}#_/ه|M=eKa8!nw2PD0ݽHHVg6rY8LNE.22;Yv0%8$3cԟ@d@ElQip.,AuMJBb\DL* {Oў\TB3kCz5%rY̗d" rW2("iuz$#8< %e!1'99>q9bra+xؕ}a/f #س P}ڻ'0c e,( )0AD9FLg!#)c)`wKQ (iV`%Pd6%"R528[sNr@ 1+9tۻC6"yO~NV?@y qW`?LaQ?n69w`Y{|ۿ۳٬A]۶!a/l6,cfvvvV Z8o^,wwy|Q:fC2:n}e_O?1yy7l ߝ7.|wHmw;kG_6[nxԍ1~wi?O|haȭ. P^baQ34ߵ]kk}{׾"|?ӦirJnKD}{k[=qη7o,.Vo/Gj/aJ* ǶmKDt޽ŏ}7sggg??o޼y/0|KsA[G?Z1i/gYu]37|ooSJ/>_yf13t}s>>>`f.u]y/֔T1Ff?{odq {Df^)QьEr욑26zdOIzу 4;Jw A F7z>TU1dqyr%jnٳ(\/ˋ/ n޼[o]tioo֭[D={Vev*E1{rs,_J^7mV5?_|~<_rG?wG_?Ǐ~looZ?O^*I&I_:MNz\+MP>\|www}}=z>ʲ7M;,{ie=pj<גCoVt[!n߾ڊ.aՌƘϟ۪뭬\vٳgVd*_޻wxkA"{Fic<_YYl8v${Vtd2w^竫ZW\QYüBa]@l#>,>>wXQOdr vҥK~ggG766`:޻wG?9ӟTG oV7^7n߾{@ML˗/WVS42ߟ$vε]":>>y?fٝ;wL;w|'0wvv[[[[>[nmooO&˗/߼y>޾pl^k"o~ᇭVׯ_OÇeYz666ykkK+gccO?7nlnn2]]]Pŋꪂȅ $uVF_YU[]];֡=|pmmMy»Xk777{'|BDoh4z۷>}{}/ffj}לs?üV\zzʲtΩrW ~{Zk]Jzիjt:=::t:{{{nƍ,m~ڵkq VGCj9+ n8mllT"D2t޽%t˗Ed2zҥf3+3[o>V`ZYY)͛^… zccV`}!dYDFacs׮]SSNÂ0-H<]AFF~Vys͟Ϳ'6sS-l~$Y__Bt|PݮVYդewvvWMrV{V~A{-&[| mmmV@'9IblիM**:"9~;w={97A{{{ӎeu3 t:՘4;ZJluIl  BfSi{_=_iirWcxUhѣ,G}dywO5V""V_6H/u&_VTɿv{)KyRjX,t:O>]__װlVl6v]SDyk*KHDd0&I$Fp8P;wt:'׉ eז3߾}{޽{jv"*eC7xc<k&"&IojR^,qm)HΚeƘM L8}⼊Gm)|i26[ K\[RjYY$yA$хu| ^Szo*'cOvK\"t]ǽ^/(677,,4EQL&\۝L&+++Dg,4*/Iv{!<ϧޞ1 N㽟fڲ'IQ{{{IdY6ZsլJt:88jO[[[+b:}pvיNV5N5"L Bt~9q/GGG,z5)"Yi{^YY[[[Z-Zg=b~cDD:FeYZMd2!"nBDGGG:Ydbꆳloooggg(,?{^qiz^Hsh%lv||tsh4:Мv:`{$ZZfF{kVǣHgj<̬ Nvvvvwws:g~oo^d2Az0\|y4T<A)"˲ uO+#MMtmW}{#MpvfxS93+/^8theƨJ^sh~i׫ޫJMӴAMz,o2ņ34M5j)/HU-)D(nk9Yf3-vVMD<~bheeEz5y>K ":<<,R0ΎƔLgwwf:ΟuL ηWHl6f"i.\Y!j)k*(AѼ'Ot:=݊@퉈..xggGQ[)*3'IsM}<5>ysSW%+EDx4MWVV%k7`P˗u!.U2t"28/yt:g/.2g Mj48Tlsœ'|rL\pW2/-~i@pb&rZyiwd0/ G_\yl|괗y)7G] 6+~Wsk ux߳-qEUդV "SnQzJf<jDŧZ _2\H|uN_kmZ\KjZ1.Kɲ,˲h*mZm[&UNon, YDDٯ@{W/55My>RA,&K\[Rm}EW i,:[i M_M^g'/q휅z{jL=:nj_Hօtf}nݺ{cD%Wnx/޳$Dy'(i19DaS.bK &fr:Bq`chw9ĵsDݻwO7~_oܽ{W=}g}vyno޼~_T߼{wW8/'DAAĒ JΝ Ϲq}18fY@`\[SN ݰ oeY8{kH\PUïxĿݒ$IYet: F $,"B@N Y ,LLJ嬔I)EKga`V>$( >!s*J|RPEYK\;g[m"eY:/w_|LB&IJ8~e>`("yj@FHtRbyM^SEM"x @MA%(9fn8Y9-tφ:Y. IDAT~hjp'r-TY$o=_S|%$Y e^ 3mM 00~&F?&'ůʀq*TLֹ,^Vv"" X XNK˜i3,GŤ``HXht!'gX8!rֹg}% "6a;VW:ǣ<XLsY f\&1BS Ry!UXtȆ?RHPsF+|Trےy" ݓxgT ""`P*D=5K!,CzPwVN%ݔF؂Mp0' `M 9Z@-H j' Y%my-EDDPŠ5 m>Ti<滥M 0f T†,GZ&SHFҼ_l@XC%}=ċ' ϭE@dtD NHs\ sKh$0 uAGUd16@T_Cuxݳ)jb6 5d穔31$T {$00b!B2Cc"QH 3y!b")CŲXKlG GFQeRs_+.qXCl,]]fe7?H)F]  ypR*ZDjB8 yaxbI@Er1;; xQ&aGd|^b0nUn6g eX`6n,s00"# <C`enW;P)\q~9YtpWR\O~~49Kpb$V J^wb ;13.'9EZiiA;v?{uaŋm)vU\hX g9Pù+B8w ¿"':`PNw1djG 0:@KEƧ!FyjOx]C8M& 0 TwqT ˂ y:(| lXrJudp[ψA3SR*=RHX wngh|¸ xʜKMR^iq v{ǻo\C,V ˄ A ɠ 9B Ođ Z$K:ɄIPPH̊|<%d5z2] ͪѭ0&M\ߚ(Γ<Ś1z T(`6=b 0Сn\mQ/kPBZ Ri (@37jefm̭!3`5;SKceHA3PxlPM( w^n:~/I2"  ZF@0ۃq'HT8!DD"gߦRV@=YFBY9 /.x4tR4 2"8xf2 ΐ C"`бaFD2D80TG6. ō@byhWTK+$aFc؉#* KQC@BEHvhzd-[(5j k K@|ff_$a92UD,$rΖ.*7,폊gφtR1( ]<|7mB W/f >"X/D f&2+[߅ U]Bda_In<-;i&X"!( EȋZ./쑄sr-E{%]Çyj3FeY=bƨ:e @=v^D8#̭!/T3R!Y(,nv B"J}-u_Rvr4vZg: Npy p03f$0otpoOg+ LxG( Єn!֔).ּ'q cǍ<+&9UϯbuJCMD"Qke>s&Hj8 `h EM/i:hf!.]WJBѫF]xDfV"!C*4wG :fb$s3׻0_N A^zY`c8;WtZD\T E~A^d1ƫu*e[OKkӑ0"}Aݜ4tsqVun[!VT Xиon͛cQ+j:@JZxYVMMrޜñȡR 2TS;Fb|O! $U:i<%@m/(͋ksN"ܡl>ژ9eP}cK$mY$Pٔ r,qE W.],/NK,Ɉ5we.8F9>% YpoBeM4"e uF j xReb :U\=IvDմpdsOjm+s7`FŗFN`Iթ^[G5P"nkKa4Hq*W+ս~9S]^DZ&/J-h-g!.GE ݣNZ,I-mvi;BlmxREZEL'=?>z( $"(T[Q; 4<_ K\;gt[q&14.19IDg]H&l:d JB X9ا q`l$#@Ȥ `(8F&RO9582YATM5Lf^"rNlNeW8 ň%~ D{\QT/KPG'2ʬ(vȿ+5Yr*/V Rt hJBC fdRQ"dꯏ"nt|4$1<0v#($/{cL=tdd' 0o $sOhA5 \?34Ѵ3)g~a"$ s.giM [N}x-+`-甙%DbU$7̩5j7V&U}Ojsn yR"[.j4ԗXqW\ -\pimGĊ`}tue2ZVb1d/Sײl}D%Ӂ5?tJil^P' YἿϋYPrA3jIC`&`D_Xc$bh B ^EE=Ru{ jXxV1'ZwCzY<8umPfE6] 6kUΪ"VUFLE&vwPĠɺ`$ Z1Jtmֳ) 7K$|Y@lEH /p}w-@Yb2JHIRUO1HRXÁW+!D΋a`}QM5I VL3O%Z?l¡X[CQ3ŹYΥ3IvڦcSf20+}ڝxvr8ɓZ3@Y`P,/۪s#ϱ&DUCƯ5 |f)Ѡ+۳VU" U%n)u16sDB vHd`= gfU8u$"26{;U:kqΜ+!hAśNNx  :R<B"JzvL  G.C*@R2qJ1ai, N&5ķ"HRO *BVo~utI  ^^WnFqlaDD( ӪYɟ0yṘߨ Ekiz!΢'@Ţ_9Kކ5ek/dh<^te36hn% BB'iH:a5# D& 9xϨ2Q\gdOHU^ц?u= ۙ4=kox2N&,DI u9uu8)8X J @.d )X+` eIj!!te)HTΦ-M 41Yb My4K GKiQi*2Q`v -fw=I oN@G+WĤrky*SZ.1sG"ER錯Oʂ[-a`@PQ@=u;PҎIV K"@A LN"=T=HEQd1]+M\+|2YZ"wyYWzE^ RLڶ8{8XSe7ѕvnĐ$xtˆ7פzFN'=hM VM 'F#ae IDAT'VQzT>Jt9*"A] A'擼&$k@$ɒrV"JLbYnd:zngӜ=["S%cn% ̥+)YB/fL'SD1l`(3}i4%׍6Y!%M;%B.0(dTBf_]CmU$PUk ADz]Ww4i$!^t28&ޭ˗{" AtW_H<E30"!Zd.P#<@[HH%W@ZM[c> 8/vF.e=-,~;\lY=WF!a&f%}}A  B@ ! @fpF:Bh"D8uAH!D1+ɰH;sv1eHB`dvf-ҳ@$8Z k,LsP{$$"ֈ80tי:ZBQOGŗ`Q,(ȎZ?qمO/,PíԮY|f֔B ,5 C k P^|3G:]W[l+K<Ųĵ>Ƴ#_޻sJ{l<3Ib0!l Z4d"5v[˃2Hi>OswBF /W V/+GhP0 cK+̪9a%Iw!m5$ %{S˝~0v"B$2tIY Ɋ`PC48<5e$(p:,DއX$К"/PA&Iޗ0kX2qsG#(=_|MІ!ڐzn@q{Cz$ID9@,*9$R\ @KlK8vo?y&h:*ciTZ"p.酲ĵnJKi3\cI;揸=yE1dz?e?"95pcmbw\>Kdp<$ )BAQ8%06@\L2-(9.~xƉ0x'J:}6ڊ" H@d! S+LȈ;-8iN$,mL .ά&΃a;k{Pr5}J^:[cY%f.R1 fVX$Baa  5otBU,~:]Ps-Ueh= v_6oKO~3;c)(ypYpٓݹzヒe:MC%LC!h"%ek/A>\[I컉5D`%I*u3#bA:mpbH& Nv6A 'S~f\;uBM%x! 0#XcD Iq@ f)<"SeG@9ʡVJ?$)ԈXrۺoҹD~ JiBֳyU *٨x^K{CvMCkeD}L' "!Rt̒CJX5{&jtLjΏNIy+jx!M,(,,DD<I İ vjv,<P D I 1{أs1K(U jM/.gi5ʜSYDIUea2QiwD.d"c]Cl)W4 zStҴI.P5!CDA!5lVB&A"a <~" Ze'OE4_=%ᴲfALf~xk(ij Vx59$$CUSb:dm,!adcyl"@h1d@Lt%AJ߸"E@v1:5Öxm:Kt!`zcH f+xaqpraX_'o^gktMP3ZwU%_Zv(Fg%E&wmk>ZUO(HM 4wa Cp7fT6дkZ6.:E&-qEp0q)x/ dKd,(Ea5Z ѐ!C, ', &D؃G` WNQa,mozgrT@=Ѥ YJ@iQ^v9%}D (TEQIn3ΕE9gdaO ` 2 1h 2C$¸@) І  F2aUZ"@$@P͵U&KV0 c ` D0M(CRPNljx?0 >%UtnZiֶFGlo1SAsU7B`+Wd7R PP <%qk.V;|V(JL*vWUWշTz[pd[dbU #''qk֏,`o,(a!С]#k7N"bzCBjժ7(TA%)(!\i^4LP, 1jՇ!(F_ZA>U?};?qݳ=\bqx*^z };?~qS‘f I-bTQ RS)*} F43WQ<=B.0&12)g:qlcٶeQL(!E'(aL8a;49Bs9BH&[ԏAO4b@%9WC~ځGZS0RWwou@;t0ƌ~$'-n^.4M4@,0 j5UU5M+˯h# ~k6vB 0M qݮVgj۽ n!_|0ǏAF388XѐeYųp'&&*ݻwm~,˓v۶rBc˲ TeB&eYFBaeeJ&Itss޽{{{{D"NXu cBkkk6Vh4nX B`qzgٯjUEQCPu}yyL& MOOl7вEښ(B9UU ! tZu˲&''4paaX,ýK@vГn㨪Z* 4-uM|8&ضr((yy׻w̝2o=9GA>3MwDQf$ /eYi @)MRf &qܹ8N&iO#+B1+Y\\\ZZT*SSSW+ )'cpAx&I$xRJm4+++m/..Jj(V+ϋhvә]YYic=-*Ãu(-rm۶L&gggz>111ۓ$ɶmABr]A8<<$1fz]J455D&'' !f!tz~eP3`x쨪zVgڶ],@s ژBiϋƆ Bannn2jڹ16778SA圃T2+ljbZ͓|~qqRz,p}.wi"l/iCˁ1bx14mvW3cssspUU!$LfUIܹCEQa"p1v!0~k-"5MV0rEzQι(t:ͮ#!:tN.FuJf;ɲ >q$IZZZZ__,--3BOӈEIFCPVaǧ|uu^D"RYHd`(xZEX_DQJB(JJ%]a r5;YS!4RNMӼsh`IeR)GQA@}e9_m7ba3p0 (ؒ`9 rq$i6rynn.b,+ LOOooozD"IPj^1SPu3ЖNR#ϷH$L&bݞ4-JI9OR;;;n7wb10|& pV EbH$a:Ò$ERt4!;:/pqyA7<厙p8_t JRV B,jf}﫯fz^GQ䇜'\/Jz$(nab2!4777=ztjcX,NOOV c0k?QM8//|cf\ry1I[4j:trrrggÇpO<]plx#˲J s h4z2.7kc&?D" `M$渆alllTn+= cZf2 rm5;$Hѭ$D">WR"O= k}1prj{r-"tFXݻ1x c|f`9[T`ဎ=2C5R\Xk3Ba~~ޯ{By4 ÈbWHHU\ussgM*J&iB |7?ӛ Ȉ?!\QC`kZ.D"B<`UUV*FPUUaJzZ5  嗰{Rr !dkk+mnnwtd[i4R RxheYVjiVV!0Ǝ<{ >_mcnX,G>cݮ8SSS|&ܝiܾi\z!3u]u= 0^(V"%k,vRIQrH$(<\m#stpPJݻ+IRi6(BaF/L$;;;m7 ەJøj4Fh4^xJ^|)ΣG{ :QEQn2 BtIfffFwr퍆1~/IDATn ÙLil6!&c nX,L,CJtk\ݼ1wz^*5333j5JUU,˙Ln[eL&#H*i&p8ŪժiZpEnwGn\C'ko.055f:VT@~A%>`չO>}ӧOXK㷿ȿw}w\ 8@_w}ѓ'OEw.~Q?#G}$[o5Z]Hdq'\v/˸+rIlR8XTR7@hVVV~ӟ>}?!i՟~O?t,4po4jwO~?{P(Fl~'Of9ފ]BH&я~ !1 \T?"?믷?qWg?{<~_lF3F@@@@@@@@@@@@@@@@@@@@@@@@@J9Ė>IENDB`fdroidserver-1.0.9/tests/repo/org.videolan.vlc/en-US/sevenInchScreenshots/screenshot1.png0000664000175000017500000056605613243530567031476 0ustar hanshans00000000000000PNG  IHDR'65P)sBITO IDATxy-WU.1gUfOrҜJsy{bs6CQDxz("Ҩ ^]@Fc  H }rfjjjUɉ9kժ5k֜cA@ ڎJ뿏 !9;#YRЀRwCodG:kE s I:bN@ 븬D&*`{ 8bHɳƯ]ѹ g͡#QoLcӺCc}ejoByn7zwxM6uMϺǛA=̧hL[FC& $DCAN1k(kF&ͫa_[fYW?xhJ {nSWz h7i"#T< w`&RM-95ܬ27H=&nVL`Zw^C-F)%0ƽ4ˁ֒w-Q]ITb-5m"}|HE =ҔJu3 kw')CUO1|^j8lELإ6C\J)( +0ze"0x-T@@,gk?"b@%tnKlmze:z~$8Hd"6Lt(,#6}Zn֯f`KKϻJ n].4Pz<hPgC-0Qck@ nB*hɍBն_:\A ܋q@'{tOMrQ"+R_<<{PIO\&*VA$` DU0>PEllaa/Hg HcfU~5I` D(NBi1D0CPi0 '4X#|&@"`Nh+Gr)Qn|\SL?t脻g_:^a"sG)O\im-#9lvrn Iҩ =3a JcLoB)ٺ{|[ߍezE39/Y!j-"€& cljI2@! b &Sy72kU\KDN]tA8 T|"i 9mjyZкa k-Q`ld].k3]ioD$•VcvA7 3GO4r.?2vјՅrla")@1$&`Lޜ+}1AҐ͐ 1p Lg Ӟ{=q`(:0<X-Wzb ` k0<0qѭA3*eSy:0k\ "h0psQP(1!p=qq=+Ɲ#5Mcn5v A' +m=(z|VԖ93{鳵Z-46ct|:?40GJUUP׬?dC (/2:QZ H A,fWGKEօbf,"7CAD@.r cq0 0DC\T0=SYyLh'^|TD6o>;S{|nم"7El vӈ-Tս8G$[UX[E9ڒH w,֓Ù lX/A tt]4a|?`AP[{A q o%0~!~MA`Dl79Pc7Y:t4yc#ŗ4 |ft#nl8aљ(:#1qk+sgtaHLAH C;utޯu߽GW"֫ؑ;3{HUi J+ۄO)"\'lC@#! pRALK#7-!l͉B*PTV8V%WP4Nhv1?ցDi06ĩRb-`|?Js(/blv{@lrލ 1O& 0zC%}dl Lc3@2VG_C̔+Lc2^wn RK؜[;c"sp HI6_0GkKGorzꀍ֭0md!@k+p[߽,ժ5~PVB.F\Exʵ5S {G1LMk]mbFPm_;)Z}f ԍ.bY=2[96z᮵%Y60 iNLivG`æѤ0IlGlm# W1#;OYB- F4(a j(E yH5AQ,vG:Iɷ׵^1PDg0><_nVjW7k vrF-*Z"ආ۔FRސùj%"61yanzvzgN?t({#{S1ꒉ;> ewϮjZ@*ju(%  :3^kQl2r352B~փL83´nӭ.nĤRux߈r)ZXw 1iD`Qt (h~",4Qth?N>E02&!'Q]FqBJcxgxݍU_B~Ls](FqL}6>H:pclNgUD̃_iɷJÕаRZkflu3κ`;N:|f0V1ufn>u#$zr}4u`ˍOkOޓK)ۧ0*$Uk]2335dVOnH c#űaZ|{sJPhmT)}!-\X);Ƨ]vS@8h)"჎ 76D"514w C֬\YJĔH 8M7CE!TN@0~2Y-ip%hc9=݀< `k be iaHA] k48o"Nst(d;{(]3p Mc\^ #ba$5>4`j-M۲$Wn}!hwa%/t1\q4dX3 v%uNW;F' ©^av<\ yuw<6Bo MR+| <3XC(9\v㝡`%V[:$!g ΁X:ѥ3Wj8+AXlYfϢ>~`t\$"uH8A'm$UR ꌉoXQJV$d4O%]Ym$EFet1pkYD^D&l@:4P6XQju\%__mtP2(C:=c.\gKk{Cᡑc-UZ-'F T`R{MMPqh߽;Ϝ u0~T0\rǒR&>| V**Kì2/Sq`=iLxXw ԎXHmءAyEd"PJ*h2Ri_dSȤn`4¬kG$\g*ߨ8Uau!NٙOبkqto:_Z8i/pKoA amWm+"A^4kj~:C⎩39yVZ*Nrl7ޭvb&w ;Ѓ|gBVW˦R%{>f8qvXW)Y:|ЁK/Pmg-s-'M*OHg'Ca'J򼊡LDQ4#FӍ%}ht7]`=BuɦGg\W)Fk j=Ah49@$f̃z4MjW}fJM0ձp AR(ePuBTqxjߞsՕ\qدᝐ)@C(;?w[uTb0T(;:>ԍj?q Q*ŎV`}KRLx>Q2(΍yȡ P'j'`ҀӃ$$2rcҾ _ِx{7,n=hZlCVΥK uRsIQp`c,aɢԿHev%-s1 0TZH8=9sΡ]3|bnx*r1T(dd͞9qӵiJ UTXs֊4L\QK nImmui/!Qـ(;!Q6 D|(Qj&"$0} ['^L?6dDT|ѲULK@@H}-'aE'UyM횷r.]>oǽ94fJd`0`EwLp #3˕czz饅y8N~|z҆u°\.8yb2bW*_!VBdXB;<:|ʫ(?fMȖna]:b8^^;56GK MHHcNpaMYVЈڋVsכ&ѽYa 3zmqd9؀8V't =;lD 1|^:?ƺa\c|C8V0d-x+LFeLCc+CSv,?P_])͟3jɽLn:CG{zilt­zLOຑgU}%yp%*(oJPYB0_^.@Q"Tlp#NOa hLMO-͞]YZ&Vr# Ugم++ZZBC PR0( q]r.WG}$~.؞ nqwI襪dk?q0u4B@ LrA`R-4?r>[òytc6)b}|38kxI 췜BRFԓ [3sulk738= `Í7`ʎtHm0,QE^$3-9fHP:n f cI˥0\={bίե°q)nՓQ5 ݡ"|fnan>CӫKKƄlQ09 % a8u1={w_tME%Y 7zLN4Oj`iGV laQP{qTަsPśfxۣfcH=${pkg;i\K YfLI{4 iR+J7$(:>`flʙa/Z(D(ڔ"RiD$Ea(Qib(8e0&6(p7 BWs\ٺ#^z̲0 ֊%aP(z f+e7[\[U)v#<+:+p!FA9>w12Ck('IGwZ@uxUk|hH$[+S]#t[ֹO%)A}k'Q] @ oŝ(N@6GN+zKI tN?BaDwֈKޏbDxS[Ixv"`Ԍ!" ՈQP3 C'= c[<@ (%]pLGY <BI<A/MI IDATnP^ T.N5)IaV Y;37w^뜷R6Ed++puk.Ka#e50YWDA!/*٧ȴ ɲ![kBb>$IǺ(:2຅ S_m0H9 $?J^XORWj9sတV_c1-W~S./>-umGZi Dy]M0G >F"35 [! Ax,\XJm1q=cz DCb~xh|ͯVF&MI83h84?S.HeyyvvmyR%0AB:XW+\obz7" $@PM}Ȩ u}5 %1G:EZ].h9lڴڂ +Tn͸( 9vr\9߉{ޅ?[)|T9!utu33 DiFgmu{I\rN[/'z8 \=-!Ve !V29#P:Ш؂b(a$вRLʂl@"fZ-:"fA(/7<69wfA+Ư-|"x͇ix_suN[׫W͟b)ALy]QRh hS㜔?wͤ>"=NfNsmLk\ctWP9 57Gwvm4( x8xa5A]*A~0mn D;LKw`$~2wޫ " قĒefOIr*hDxiы /4ۘY0bc #N %*`o(ޓ9^aͻ!<iLk142V@mu٥e{?uBfxL.yEEk3<.\XEE,Y|L*Z7"]dFD(ߥlh4y`6J ڠP_-/л\_+|l:Vq]*Up%wRkmbw@8A,@ tRAbhrAJԒfy2=8Q2r# GS[iyk8\ur|ԩǗK|pvi#DWC+WqLمU\t&8&;uQ# YS=A"z&{T~Ka5<;[z.~HjvCJq`}XW~1sգhlÚg)VV;o!Z#RWKJ"i쉕LZR 1ͯtUrrϗ5c@0P_v+RJLmmĩsdmZZS vRB>w u8+I&;=ExBZ3y@p69ĵ0eRNV=چRT6~7߁۠'z6xr[\p AlxDaf ~y&ֱᘐ RJba$b̀U$ 7H Uҹ䶍&Pq9؃ Yqd@Ͱ `K<>V:yUŹReUB?4;V.+ў{K]]6=Yac Cz]I :BjsrEhKu*pkhbG۝\)'f>Nto5^)~-d}Ҩwߏ'|k}<ٮLHJ[QA.,EDДvM[}fADYk J(魱zuωl+kNji[I͊>Ar]:0A`V X !\;rtnvԂpqўR]uuW^~ (U0΃RB$ g1Y#ۖ\&6.tR3/iS!bQ 8saD=#x#8D\E=u52D;C.cȫJ%GG )BTlS $""BaM vï=!pFgFڵ2jz80nJk] S*޴d-`&[rV9uʪ_5Ǯbf' # 07$ܶ *#%2t&8VTYop( !P`foH`B9zK[ #}̋tLvNGסͦ(qRM(ٖ}6HV j`@>.ڴ[b8Ut] lU{zxC쳑}"尘}h6lEǁBUC7^022 7Ca @p.-.u.O"T L?>4s(aR)U3eh]ibǯ={ɳss?4<:bz.G9ˬ&wzӞ:{ LQ^/-I45K7m`,( $ y?:GЗgyqPf:lF{Q93z}jn Rv$p\لG U(6KFݶuӧFl57xyza Vx .>=gYW=e/-ZD/| k:/}iOzZhBf\Ң  u}3??62:'4 @s,###o}Cߠz綾F6Rldp6 P°rmĀCk0u+pKF [K!  No?C`JgR`Y;Ԗhx'pPvBO)@V4 ы~>v&;6 Ҫ](m 3Ң)ϝ:q̧ܡ{oW1kV/kT3AZC)^Ml@!(B4&N䌵vaq\PHpĦ-L)Ʋ 7/B}lpMufy*iMI|_ [:,!I?[789ZTVz'uQםKγ@HtCd驩 /5?T~`s?|EiMP޹k煗];s#nu=ӷ8s C;f~w_W>5r[ߺ;*Ԏpë_z%k D0666335k~Ǐkp+ /ו+58N}#VV߽o7ὟWL-E0C^Dռ%3/o'12{^߭J8_[Y=u?G⪻Wzg=3g/{9JK"{DŽ~{a.u9x:M寑i)C&y;3=>zJ&r}}'?ɰXXZ8rhnGo~/.y©ZOZkneƠu// 07o#2ڱjX>MʋF鳷s"z7%9'ъ?r'YgXGy]Qm0pcݻo>gx_~K{η PS9cHv }o[obK+7__/[_/N??<]g.nx]_X ddb#c& 4֞+:!y8ᵺ/F6 0%?l$-Hⷍ%vR*=FeqX )0#V~yᎫaڛ\AnJj ~햇mZpMC5wۏj(+~š+wy?~/ boGoDG<Og>b:ZR@kf]_G&'JRY0?7ۯx]__QvM ׾Okx;,vHU/Z0< տ?RSg篪/>~3ˇ>3?r9qs5;җ'󴙙ɕO/_vxyu9/?9?e]O[~'ZBqSUOw؊#T m;nڢ<(DA$U#!on'3r`Z SlF"D> 0P!}eڑ#;rɍAzʑ[_E_5)^;VJ/kwÖٕFFP0 s:?xjC}k߻/$S& ğ_|EK+>_{cf* `CfˇԂQ__}ы[vNuƧ>>.U7ٻocSPb&&!lR^zܥopVz3B⭏fOjƌON윑R pnhnnfBK˫񉩩O}|u/W/Wn>_K䆌T]z-GMINb_1^Aζ%`HR ]wAN5];{$` (rmQJFA'hnǀ}L|s[ "~笷t&3Kz3EV^!McgR cjtZO|66KkmMȪF;-7~sOs7kCwU~e/ V\rٓ/r-/x3_ŧ\{{+B'җ+ffzޣGΟ|^>?s&T+>-6)CK`D9& JDOæLEGH/4b: PQdR}ܱɧ;n(=Mice?GaGf+=ܝ Wn}- N2mkkpG} :9%]['ՖKoxۛnj7o>G~<*Կ~`WVRn2-_}_;zVcjt7~?t{w~CwNwwst~n W֋o|s jr?7{w8>C'gjro|wSw+[>[([u7<£w J/=|ǧ>'K `'կ<䥯s=/}k_g^ MÇw_?|}^w Օw!u4?_|%XWg~Y. APUSAiΩ!0m~j q s$5Be( `Y%. Q̫[ޠnqbZS0<0ŵ72uI$#s}7oF O?񎈈<}\) ]l=qdP=syG}+BJr(oT+cjĘF,--}*J(YQF O Mfm\G5-7=pl4bT韇1qMvf+{^7/BOC z~~R:@4c{z!JIRljȩmo֯5o{τ638$v"hh+h25HҟGLa-:TsX~k?gI8١m,"ǑÄFI(>'Jb kfi)6j]p `fuUSe6xCf\+pןBcj# p#o;lhɜmsFE4@Jq Sܨq$i[Y46.؎erP]GjjC,Y2a3ZT~=u"bU?(UkrE'9ԃ0 Ȣ\cbьRKg1 8>;MhY8qiS~cڵNZQV"AkU_U-1gA8}vꋖ{a+5mk&)G6tiߘ3}bp3 @P3paS rpsFLR9d :DͫV>nDi c @GTnkbɢO[}(kDۖ=LO$ a[Mݯzzչљ鱉Iurn+lIJ XAhC?j*0& ޛJeoB9^37EDUYY5PA FWnPK,X@,P+cĆ%BE Ģ1t̪ȌbzwsX?Ef~ es777;;TվPs2if\`vV]Q;:=WIj^?x5|+\7d("ŠE;uPD)uƚlY9nPЌw1/OQ+?ޯ?Ǐ<^{59,a_9x~Z?7/'o$fߚvܫkimښvnQ$L:0AJ!ZoQς_tH_&nB&+A<<k3=w;(xqrI'rSE̕ϧ9e꺊шǰ\TULXM-c+x\t=sTk.A?rVvA*Rx,kD"z=\kz@3 Rݠw˿/- 4uM9 5ZmBc%q^,/!^ġmXQe#Zz }bilx-V8bș 6Zj?C!0yfoX2tsX9_s+rˆIsr?WNf'Gю;IJdU)M'M3Nq>Q5iiӓGoyotcfm0ls)!ԖGP/&.r8#>\ y Fܩn~omR L *wѻA&5ٻ!- n$T *=;;cvȹK˛qM^W##qj&{4ǧ057sJ)OS*fR_>Ϗpcǯf]/nQm6w[ L>^aprw%Ĝ'XHQvv;]G+H몧̉4yyCxO& w.H}ԍGUU 쾱7?*>}[hhfG)i6=??/ f^leZ fNP64RU /? Qf/0k ;bxޏ2@\[{Sck3 جn݌ET@K J@ńE<pV>,Bn } 1r"v3Svr jm9LmN(J_ah(foxJzHhgcp ʋBe&!wG?O~*xdT&w''(?o/Wpxh4l"Q](R<:'6JW2qfnJ4:|/uEJNL(N`9LI$m5MuB&Hf2 ڲH'hYP M>q8A۲=Tn\tJuItBVUO9; |T7a %HVy'9yc'{ӣz7sf:~LHIS6wМNQ\sKn)ރ]pG`T4Mq P8ۿMU7|lrT`*-GD "zZu}G2wtw}c<=6 BfT@WLhv @W&y D$@ ;>p Ois1a{Mj$ʛ@ UKIC߻- ̼^Wqwg$%O>鍝'_t%UNrtMA%TQ څa*H15M)T@U>_?ɹ:S|榾4kS}rgn1cefk{Zf̆p8'>];hy)nF g.kzArU;SGv7|8cri]!ti;<`}Kg}ח.KfkF][F s;hn;6L>K#_q;./G!Ŀ曇oC56GǓ&qL8}cT2݋(%g3L4qTx|>jX*-*$8u?vġt2O[h4e޼8R{.df,2Hޗ;,=S? vM3d4ԁnr7Wĥ1 r,vKBl,CB/lG: >'0#`m|ApЯ)a9ga9ef,sXj'/cy9`֑fױCwͫF|9PY`O?} T`FU$H<%' uJq8#&f@ADV/tbp3c`MN1Hxg/pLӟLW њav*8Ĺ]dg[J"s`ev3sF](ΫX9uk }QY13Rg冟 A mHl6٘tp)8!CLCz]ۮQq{/3pkaAI Ӡ"{G;89!EE7Ovw#͊%(5bm$\ GI,`-ӎd |J$,4={}o`LԂE07<<-KjVl!>9zMe uH}-N6J6) ԫo8$ aɧvKĻDF?WFlLPZ[f_N)h2z6.k_ ap Yw G@eO/ӓb̑D!SP 192\JID5F㚪?~qpob?Z䉯ͿC:ؓf/f9lY9s-}p;ܻ/gئa< ;HKa6ZzG -R^oms@r9m3~F3Gk;v8[_2]cYst0) 붤 Nsn00b LF1}ã'~7U{;q5 Ɖ21LTfY8p8$Eu (ӜCJ`/^S]|gޫߟ7/1`+e)F<:1t*̏th+]:3Wg0z>WueާuK~[[c SEpmDZ@ RH>ofytNoԓsM =VybA.uyPZgJN?Gޭ_+poo[,&/91Mj+Dgl^PJ6;#`TS1 ;[w 6Ѣnvv6M "|p+-y؄_xJԺg}lMζ u5_tΜ,(12. s^Q,pF&?z:kW=zz|z:MThѢ DTKuOSnDP+AJ\4-)gRrx(0N}ߥg Y/Wh{+Jwe>\տ e¿}up~̂,Y<(/+Uf홡GKYΕ tUbJT}S0W+E@y@-ͰNNHFho_{/1'wSgs bi餎$B-"YS%1 Y,Zh4L×/LO^>4:~ª P#b_P=8=O g#ήKhyg.d hɚLjkೢg-S: 0ĵARm@+О;?8x%wJ0tnOTNS9@ze&x]X>+ fbÉUH8BB$pR\V*ŜwO%UTM&|hwwD'Oy8x|3dY!)I9KUb+ENy_ϽUI㰼ƚ_RgXܠ v]s lkٵ7wc"} 䋲72g[٬3+(TqԜqwoMNNh$b 5)D4,FB,NCGnAd*"|xA䮟S ᭷ߚ ]t^QF?ൾU\^"b[? ƙzkwLEOffv v\ȎԫKF B 3jVL /ɴLx~|x2L!g5;Қw@](>~PeMj:QQM%dR%ʃyv9!sEy3s{s^"sg|Gv6TïwRgBqr)B??$3k.Q\ 餾~]b{wMH2fi)fx8/s,B'trxtW d]SR WhQD -͍EYਦ6H*^RIDBG㝝ɉ?~{`f>: y7 u4֫Ͼk fֽUz9 &[^Rg nqy \h~qNo+Y-Eu}RS)ij4fŋǏ]ĀEAP3'riSRԊzSS+4OOvvDd22񣗟=?0n+r=:: !f( p;:+ yEb:xSSXܒ/E;]u)3'>lVJ!N sޭնnwώ%c) V%uMѦѵLަbR3*M*E\K;+NM.%hR~'?;/&y楽z!JRfD"#mFKvj31=-ZN)Wa29[iNjP>qN7Uu |YUtۏjꦽ.iw}uu:mR}@,yt۽ %~UCTs;\֥F98cVVv\ho>ma\PrVpm5WHũ)(i%NSHl2MoןÇܛ׀mQ{ X7p:_\g.n]gIyڞ3wsθMjyJóm/[rA?W6]=X {l >M0 R@i@I'jXVbiX.G?_R?o\1$0 bqphG8X%3ѪeMRr>U%JUf+"}߇x_krbTns->7gk!oWMK[x/̯>&`:(2(0\!ֵdP.`j IDATWš ܵ|ٳYY?<+yl~Ï/Ȟ[[L@1Ud-TRfl7Rœg?G{ "g`+3\E]'Al^77w@@DPG.Z %u3RPSdN)sNO<}Fq£/Nݯ~7s*V&bD`0CXB(m*+MRA 5-e:NFi< R9+fY;o:otjZ<~УYͧ*kcsy-QW$yf^?d\NmV@ v`UI.m˙V? MDgEL1DkKi0܊Z)jP/J99P,'5C~Çp_<~oǯ?-0G p;՗[r `L+_nbDjPϹL&OS IXy r3OʍR 9O42}\gk*"DNŠB=+nLCPP[.?0+K|j,YPR;l"8gC׈~+p#Jgmufar@3 35גv7cDΟٗ_{㟼77?_RCP!8xΉcLBLScKh\4-9ݝ)̑Pn)<%{I"ެ}5Nmcpu$YB]ظ/\t+sŷb_NX&[XG 'ξl츯V[A0pWɉJ2A@C/>x?_=uTo5>J]zxr2LYJHV&TDjn5*}GQ ܘ8W6jUUIi&ш$Vɱ 9SydRCDAӒ炗u6ǶVʭ4lyWk3fmkmN8#1xVaОpq0Ϙi .t?mڞ+-1K)Y㸲\T f4 %kє5kvkvAb#?ɏOȬ4Ѻ&,T, &U &xPq P nKv" [uiZbe2ƻQ(H45uY_*wx|6l-'wMlrHŗWm[:+P̯ 1({SE=W[=KK-I8w c얽:Њ9Jc -P-b TT墮k(8HB8 p8bFp I97(\1bt!wr"+ĽU k$@Db$A$U5hvT~ɏ?uPep29X}Gϰ.h:UܚYY&wOxY}dH{ytUug h֙F}"Tm\P#*=:,)Ɋȭd-0"nj~{[S>}y(% r25 q,"kOm#C" !Zn3DmOPF>0wSRfjVekMm@:zK|ǭvfi\*oNO^<!H1%8` #vZ\a,RURfBS \c 9z]󨪺&:Ե $4ٍR%uFjB `@qڱu/RRj*fv#mm2OLZ߽^=H  W]6Túel܄>xE[gam`y,eʲx5A}˂lr|+ Ȗ{ʆr 8" QY dϩ Ӝ \sULs6IYWN78Dh6wH蹨9tﻣO%58a! g4%uB$믘E}?C1U|nT!>붥_Nk^ w=q. ӣaL#`rwV=ki'ȅBdw "DF) ?0\WI͜%h+̈"DatkM0bٝ-<,#UF$QԺ1q!e%L'L⫯SJ?Ox0WQVYiy˼Щ% s[{Jw:Irg\gDw80#/ޚ-ϾTjADJVȮ(fJabP,.KN2*/oj얚 0YrF* D"`Z*`*DD4KB_!( 8c։ᆢ`ECiJfH_/.{o=n]B⋹n|]p]V<;`%pߛ}X AqG@|8pB6=}7H4M)q*pL`֦q(i3 $7޸W9Y+ned́ybnr. Z @d$u xVb8\{)jhsv8O{:w'$+<tY$-PA pwR%)KO?guIsotcݰڝ<.=:o 3Q2pR{J<nKºVC"œiitF!8  2q6嚺'R5ރz4& \FZRIYp!c" 5WtVGh\p'xVss5mOCbAgê9ԑMaV8Dd 2ָ*fl&zkGq=l,fJGrxΌXIK 8LuiZJm lAayt7fL_VRg&<ɋiIٲýd !$n n0afmKq+l " wC!m9*+ xQj( LJW+RΤjVԡ)gwOdm9R%!TmN @BsrՍѨA>Y5>؇C5ܿ.Tb`ÉA\|\a_Hػ*\wU+ff=E6soluu뱜si}牓^#LUb` \9e^{:0BݼϏ^ɥsN96h+N wUF3*tY]4==9*)khRFL;$!X!cw%XDT=\\S! (yYKNrTHPv"PCIϊy.-Qdl3<2PhAT"`D)Cˉ9 0D L6awLϾr}زMaXD\).yt.uaKNP &|qzrRNIi:ƚiNRT]AdPjp[۔;P, D5533/[5@ HB`p+(vԡP DD,<\B 6> T  `8Z5`x%Btl^R4izzg6/zK[P]E|lӪ́XM+bgٔ޽DސHdW5_5nDŽ?;=:T-i6Xɮ&MeFѦwrhq  )yy0*@vX$8 9e+YͽbnnnnZD*LD!sCL+ ^S[El6)0j1PqAR9 ӺE%F;7.@N>7N0) x5ի/ -vGʻ' FHFAnH*eRXڊN EgEx}Sژ N}6kY_P0TzAX xmcejp ܕyD|ݶP.Yhf:bBK* f6m:f2%!7E]Ji BQ`.SP?mbpCs01,-Du]*@R&1:{!Бܩ81P̽L6?mC( uDf.""UAjTTDUˏ jr@@[`BܤB7j:P '犒䬮EYyzc!r hQIi9'SaB)i %-`pw3Ldm611(Ơ EBxY n yo-ڲ߳y{)r|qXu@e8 [0cX(|֑)1J 'B" 3LXPF*U)QRCNzEVd[<$&ߊӕ'/K.Ȯ+^ jJU%%!+ՒaRQTs*tKd @puS%8:u`thy 0}|*  Pe&xq),hY.0shW!ufM ok=p(+ܳm04z§MC1-Wf'/ިRVCPYQQp9k".ewÝ[A0FNUUer 7[9Ps(w{ l L0d8̠ ;#*!DaXV&#UρлS3p6v\PZnNĮN`j$_&c,dwnZç- yܳK]s,;RO*wMP?gCsZ{h\Ш ^ 9UOTXk$#X-D!'5WXȻ$TF܄Ak[Z+'V퉋I2w J  v%uJox`u"P(̩Q2=:vsW2f{M Mt&i:f7v7ez,{|1Ȏ7?{o%I\+j4h,poy4zp3UU3_3*Z2t]fOP=0CXfDֳ aѲ1Y[;-k-_ ? BRJy-FI*#GU} Bf4ng0aJA E%6dJOkPt%D IDATTπ b1/ZEt(t9zJ —V2sˆֲF W^)?aN(;`_Vޞkc 10 ޢ4>`%͹iFX`]V؅YWjO'ն{̒9l܌:ITή-޽/ie"y׆QX=Ƒk";V؛kmȼ[ۧg?ƭCc#Y"(d=^^6zFvFc&[tNՑ׭vl] }Uz~>eɨT~NJ IRRq1-Uk }e~,B{I2s3ZoߞV@ ]yt aF  !J"fL tUj oo~O~_+ Ce n(B"T\سS޶X&P?Y%+{O\K}/; &|DB.+ S(EֈQW-H0XW08͒z-:_w+ˤ,?_hĎwhԒ/ʘAGvdUڸņdIi$N`B[w_ŷߎ5N\m)bЖRif x )YoHVU yOzCsJ$G5:TTZ3!"[ mi^yKYV 3QNvzg/03PbtS3@زOϊ/'vT"-/t}ȍeÏCM[˕K㣇J#U+vJPSmOx):DuQy},^.&eϒ*+kΌ:JAxt6x7Z?0vFg :+V{x;:D x^?'di/JoWpF֣E99rݣ (d)/o?|.vHd&m;7}5}]L2q]"RfQ@DٷIZB[lٰci3ūWBc" ~AwE0NO&[6\A?6n'YҶ}7 ^r^=׷A3O;Gm_`X/?4r}S9و=dAvh[v .O m@ ;ZV+ײ-Ƚ.)zCo34TvnC94vf]+G%n' `.՗]_Kvܧ?EXwDk;ghPYd@d*Ay~gE\%Ln #չgC܆4* DflP |juuG![@LXյņH+>-i> #& Xʷ-4G=R0ē`kbY}wӿ(mؐ3vWF&Α QA0 /9nlAv>c$( s$r]DBA>E [iBE8v'vqwH86t@zΥ֓>s |~Rљ(O?KGt>'CqP(sqSޟK$豞 )ңoh]Ai}IG%fE\ൔ?RYʀ 5 D>XL$M ] &yPa) ]DDZ-#{FY-TN.#\ PX)"JKGVzk72DVF>Im)䖙KX~O_g{7UGȡ#ŋOQ՘+.ŵ7/}_ ]#v※|=N`1T$pszo;^=?:aeZCREtYO~-I.z"vgι"B:b`AAKAtD$Ilߵ jjY2M`$֢k3fp;0D)K`3pԕ2"kPv&Ժ ELTbԇOt:iIy9~ +!pT)*[mo:: Ğ ʤ1$#sTU^#ww7$BOLOZ^_?'|(uDCvwm x^o-*a΀DыSck oo}0<umqã6Qi giL/?4g[O҇ҽO (xD믯D޽1-}xL.q MA@ -z^ҚK]@h L5V) PC*:H)̦ܦ@GWu@=aɁ*eL'XrOq4-C0^\V P rp&&O̔DL!z<}}ϐG.v cY+]lNR_W2`7TwQԠBo9 !~4 La5YM~4oܡ\Ea_~It<Ӽe|>"'<k9DCmQջ$u8ɍhh4o P̟j2sk붞_T#K)/C j wnVݷ(]̈DdGD ֣WL1 E)ZRjNR)ܜMIR2H"Fn 2P~ s~(.t0jv>w<ʇm=rD)]l1!Gе|$Aеn$n?gb{ّăHuH?,pRF0 %2h$a^6g$ooCø-Zbf`>/ɜ7:O |sW oeͳL5#Wie Vφѐ UY!(M 5{̶ikm1J=TA C a2d)D"I#Ek[ft)`tZNOϧ#\ hfc:ƭo (f jOP5D\-UDJ}-Rz]_UPFp~+lfo?6 O5fhp:89=5n=&<`ɘ$Kss to9X`=M8<}Lw QPwlO?p}m`7_O"n6~ΌOR{=:޳@HG:dpݥ:a (fKDnpYX(@Pܜ@kzZ `)dWX 5}>{A dlyz]–b-Z l}Ȟ1'$JOuy>=RZ4/ :G֡>Jn6>{ tG9Q4R8b(zk8\)>F_ïo} =4ܹai]sjW^w҃8aZry.~VQ_9}G7o` {x[X /޵t Ϻ pc$; ׋'f9~NM&=b|d"ռnC}OL>ᢈw,G3T~<߾o>"w(I#iyq0ѡ}n,E H=;@3hbշv ʑG@lBnyD8+>=BFD[t def""K6"]Z Xy:lE݊R 0rmm椘ˆwc#6BKL6rX}q5Zb̳D\M=z_|myU?0 .E{ 6K3#v ؠ7,i#{n97t>3R}b.?Bydm2= 4Da?Lo̬Kݎơmח|L<(ٝD܋yp|ZGfɌ]\_լ.կOD}DP : d3N2&xQYxZ>x92_&(!3|>_LoA:) @oֻ(xĈv>/J_RKuX:J9}] j!wRnE"\* 0Y޺螥vv5#y298nh,Dr1>:pP(U$IKJQ(ڀZ$*d_-4,p`mk=zVv1ڌ6$z4_ce@w`&TsV ^Tw+4yqdT)$r.Vل̶9xkmFT#*txWZ6Z^~oW?3(Ɲ3N4qHҢ ʄg@:3_V+'ڌ4BVᦫn@0f~Sd8Fx'G[{8{ (`7C4Fduz-B hR7r nPie ,*j"Z=xjY XZ¼x_>d=QU N@.SEDǶlE,32{|:y0,mo|:{LNbl\BqB"{wV)r8,@n/d.f-dCl4Od_$įE!9o@Kt\&$]`aEJ@78%ݕbPrB pGr%6v%'xYCߡ1z3dJ6Xlr;c* t,h,^#fBt őB8[;oB).92BG]QzZF&wHdHJjRH4߅b+H8ON Y /i" Vk8v5V H=:M"X@ \b5V"nqq&.\`c)&Xk_oWکn$t{îȃ`'|`x9n ]'I3j{_N€W_qC)4*5]T_{X2ǟAeiפwS}$^8}m]OK3=RKy*EwIh{i7 0hk_[*6d3I:PiJ3o㕯jg-ɞFٶY*c/Cd5Xn" XZesU91Af_b"_.!.8!S«_ŋMw-ZCpa 2CՍ)  j PV˵7?Xk֣!hmɌ+' 50WĤSVdC Q'cТmuɲm $4&rkۀpRmtTD*ٺև fEHK /#A+)&-ff6@cHGf' YaQ![64JS}6s> ̦d&%mR@_ȷ['#4m~tlcC,bTm8=,%5eЎ>CO`Fck ؤP=\ST7,k=C9p_pۮaa8rW}#/Oo)dyu|؅0ߟsurR2Q8$a: f߅ǻ$a=N)Y0)Hk``531Ӆab^xzsW>{ǁ}GB~xn/?)!H#"' &RN&ro<_~?\k{陱m 6bVR˲uD*ssuOd6X!2\Tso3-wI˲lZZRBBJEZjf^d* i:XNnujh/#ڝ2=vQ!2Z%$2D̑} Šxٲ9LEu0 pA*)Sz!8̹~_~vtjī#P|3jq _@$:rYx,}_zJޟ&ؔ6|<  FEG@ \ksݜz@ IDATx@g&o{`x#lz2Pi`񈻼~bfR˨a at(|_8siC幥jtA(Bؼ /P{H|(SQ 'qG*qyƝ~mc|ެL;JlW|Qz__%LZܖ(my##qJ5K g4GhS="^QȼCd_pu+?fHj;O<ͮp'@=JmX<oaA욐XC=!toQFefgS>}3SC @^0%3X |זFisnǾ;2[tQa8x9-'衃Zh mĽzD(2ZMבiL~"׶+ py^h4ߖ~)1s?Sv8k˃?޺vP?`}.q}=F{?dCº1%d<`HC)ppZjWC&: t'm&y\z~]v~GEH>0citq{ ~ 4z% i~/rp΍irh &?2kwTv4 9$pksQC.ca`֑]V$@{uCדF+ `saXx$+.ђw" "%B *?wCĊc5|ѸUfPm^"r{%FB _o7^~yhŋmm]<򴝷qV[n 6"]" DJu8Wa:D2܉$c 6_j*eiыyMF;- Fl`eͨVH.q&5*^G0Y(r@"Jl9=ZϾ,f ){ZUXҳQ [luՒKTYf*SMl5z,'jK]j^uH p=O 6޺/2ouWy 4+Eo 8wsA-,?7b%F0"Bj%1=U qqv!ooӵ5zMo}Q`()dzBCށf8P]2 +$9z07{fЄw|g8PKLY8 CzȼV4=3ԇcFhI*,D>Z%᷏ϣ1ZCPjJ>9y8Km]_u[nz>l)#޶u`.0&5%\>)deT&cp/B4k6"`%[(NRBa5^$j1A*HTD O>z܆]Q`;Z _kdPQ"#j6نv3^/*v9"DsTvr =C`뽶3Nrfġ c[A!yQc熆iJ G!z ߣ=`1>\)0L˙[¥_rtʧ@^qU$uaW3(u'tP]vaـ9eri SHSx`<|1lS@^kF:Vy{@-^ x2w/NΛTi.P1r>z>CͿn[׶۶v~ٶu}Y1zSYٔ Dt kߪ\Z}9M(>1Y2%3pr5)4gD(4 LhdD EvNz?퐙GD gf%ץv31wO>pi90]ׅvβL(v}jn%g|4oeޝ.=*Y]a;򲞷1;_Df!wz!JiP0в$#I (t^X۶n˫=ק_<=|Z2@Fzk FAPʴZY֐탕Jc)jWF]m$@N}K? g}Fv@vS ';|1o4@ֳ> `ĹR+ާ9XOt#uS 8Kb/;>s݄ cneYvwmpb~o^vriiMrsdIuPm&{F!  E\n,N53A+ow`Na ?1 @mٻ1ҧ# є%t0^_֭kvnu]^JI~]7ezߴpea2oJ#O. uhtӆ+kAkʉ/3F@#c8C`gÀYt+ ezwp2 bo40axȶAc&)( TL▉0Y9 m}׭mɿ믾>nhi(=GI-j8޻Wkk'iBO1/MI3sjpXq4܊_@G*'wUP͌QХNc1ks[h^k5g̘#7rL4@@N#8)#`=45Ey*G%I$x)`Y||#Nlqb^l8?$T>bD]~u%bc01v'q[c]jݭ{7kZ3y5;[7U=R`i#H \0-9/Nha 2HDLhI'w`< RL<ŀV"C-4KQ $G->70aa0YXG$ :(ŽIѭVkmi\?}vusɣBSj !.9Mg jmͧ)|?Zv熗r.mٗ^S>6ыdxU|4"@7nM=)U"`: @3 0:qhk).70,ڶp dTrr܊Y@s*pJ^B [?۰/&6ťS>Q$4A)eK@0\%99^"7N:.nejQ\de>B(S @!9?Xyu% ^q._E뵶úcmV[?x_{3 svֺλO$~{s91<Qև b8w(FĤڣuCss*TAꤓnQ"|oM QQ!!TᆐC*TbP#ؾ-h*md;s. ;Ar4aZHd D;߷V[;S}fZ2d4'gĦz`YA 7ajBDFw嚓8ͣ_$fÿO6q|x7)߶O@"%sco9+ Xb6U9 颟a-`(5ug0̰?+0z.%OyflcC?9.LiΏ58ٳaw؆!UhF7ڍ}~Bi AU@L|]?-̟GOc7L9|oc!~$G dVr }ny"ytR<* 6# 2N9oB 8" Pt:5T.w6f9r~/O/[G JR)s,z:˳D'k5R4QInmq"ڹXoT#.FA8,ęMMtZ"'ғ/Y?Z=CkY=yu[kkW*^)I*Ák 2 "p!7]0%bN8HV!3 f#(ðn:6 "M$9ew#4i\mO79I[!w@ Y 3hC\5̛/(4 &R-.'wwZ[_/{&ͥ] tQPs' > DYi̍Fg#{X3榯 |?ǰ\l/8oy3#_y~aj.g%A41hLcB92zA ֶ!z_ D@m"XK>҆艪~" сia°1]$*?U: qx 12a9ՀTt!E!J.%glgxo0//'~"uBlt;= IAtn=$T4|XDͣ(t v$.DqgȻx\DxN퀿$P[U" IDATSޒcMsA9a,[LvNսG2AN.o,#n};lDq@V~= ]|II) ᧆ7bMo{z]E 1sy>cVǶkݚZ{[ifBH J'{cWkU>d ^mn (d*$H@5;5`lPކ |&ȔaPYh  i (!.jH޽;Z C3ޥ9#%9cպ?շ4-s.l7@. f384JDPrry5oz@N^fwju )U٢qOtH!%)ܺfp#4{OZTTSy쳵'kYDMJMINO|U?]YP?YﺤDZ=$A i!h,1cnj趏x'1 IC<#of1ݰr A p:t?wϥq]z>% R>ͯ0; LoC4' ip}Lpއ/*pxcƮu+Pdv0¶Jvf4뽛YoUA'NJX8Ż;^<{ڭk\B¬ T:fŵxGgϏ"Uߨ?i󱨐xJ[vB\&&$)/+d`7Ϊ'StQ#vws;[779Zn.݌#ZI8f6#f͙w_nPaഃ!: +A &{IUu*Hc#ENgn7Kd (ܧcxަHH>*NS"J$tn_P*' HxJ5QeISWqgez*Y?v\d]zwWhS^5o)ɗǿ7?]= gnOGOYm+;lt,?4P ! 0$\ <D&L#8lA&[чPGƹ gN!0^I$o۠]84Id v1Sqqxh>{d |x_ҿ8V95!^ɥ" A=uϏ*AFp$EQn{Y&hCիew΋ZtYȺŔ]dpSfgz-Fg :Ni@'qf'1gwS+tt#{Oެu VF\d'D:L=VL[_okﮖhNw롁ѭ5 RnRN)s!C} L=Zn+ׯ>~9id ґvИcLop@;Ū30am={kk, f"D*߀RD"G]d`~L_)+O_详TK۔<)OOUUxp>oYD5e%yOڿwϿ)kʿ;} ,ּ&TRr;Lf"T8(DJ%e$nIrJa d)E RMGRD9' [ xwD)EE6SPf("X2"D&ATgth\ ΂S ,1dEq%[֣qc2ڶ] B"X%T!_B(.!ހsXeK5_5@D'yF{޻yC[׃ qmZݻљ<So6?] \nv;}♕’s7džWA$n$q2HHb8@Y㴋π R8Y %"[b$ሠ(hlhs)Nz5ލ6ba"dWIE .M?_gOrmb%Mҋ'Ϟyw1_(ooS;_ې,ߵu,o?w]pS*PXkDz7K`2UaK&9.I$"jZ&iDzT%-!*æGƒ9c5QQq)yw@2"' I8*)La$0$vR/ttJ7 Dmlr{2}om39ɬזA8>msSn55qp͙?=\CxOt%B6ZL J}K_mV5,Z`) 3ւ[wx"y~}}=-%/q "y3xYDD3S\\\UD:BIV# ~X M%s~ )w"ydd NvgX@s. b-e 2 w9c?76Mjc[搨n5Er~xß+5)VnsHN[˒enh%=$Z|=*3yb[D;Tmu^#C4`_pS)F2^<-` Fs !_YeY!ӫ"SiJ^hn [Q;kuFrq4pgjE|Wk+ثYTAn:B£WRS7;Ux} [ Uϼ? G Tp |̩O_|/Ϟ=&^.0~ N7M=Z$yo]pN]6_ڱ6[rGY I\JRDuQT,ǻc4Z|*R-) 64PY1tz>msխE֝޽޻3=,}`Jy^nr.S$C[s(iT h$M6DsFl$gLʋzJ,HB̬85 o /vG~x fnA2  Mq{H{tT(b'S~=jd+~wj"<ݿ|u'z%k=ZI5M AGuhF?4N|>C%#!A{rhAh9%n'@uYN ltox&YiК}Ÿ7;Z\}k7z8J|OϞ}Ve0Őz\͝׻} 쳏423 ITS )1R&:fKRFr;!e#u"GdH箔ᆤ-nf'NhaҼc$!VDs F[6bU[t_<-+CQzW@A&KTPXllf 0WW=ݡVh\#׻F&;tCc[5'[xAz ljufo~wD'D y\F: DةR| `@@;]z $m5bYcbꙓ)(MVVT$QDT mt* 4?)""[oxGoگ"/~{~~<--X{~Zz&k2)TrQeC?}ο+O_}Sh"dAc$"˼iݐ54TGh)Mn} UU!kXPsZV+4@߁]td0KH?qjS˕GCWWO$"{7 xBܭ/ b7Bh< fFeĺ+SeMWK;SDa)%z=ԁk$/7Snn)Ix{΃%)&P[YOG;˒5Q%ΐ IDATVHHGoL@Bdx*2n{v{֣\׫4+x(kJ IF -609Iga ꧜ُ-R\g̤ p3ז+5ktk+if"5FdZ5 ݧcOETa.TemnݦiIKrTW$k hk<$vu3$ biV{kx1QҬ]S&y\&^[ݽF4dܒ j^kϧf{WGabE'ȉ)U&h0J*cxՊs)"mo u=t2kEeN C{/^z,e)l$Bq?tTQ]<(˺>ӜYtp0uW*R |t2mEa@)lUWZ׶Zt?KaH3UbY^;u]oZNZfw3,͝pC=DwyKPp QM2QVY!ĩ85}"\#__vO}E߿}u]EJA)35S_~G9,"KI IR@|ʔSN"ӬI SjG?zVU( (4u6ZD淐 W6vRI@'^f0EgUv氻=gELSL n̻-DrC1-DJ*HSwA-y+P˝kkHYLLLѓL3ʓI "C )]-e )wˮDMȢ tmf$M4iYI KAjd!]PRFJ ݓDf$Yh@3S7)?ǿ}/{kȻO*tJ֩ȢIotgYHm#8>M%E[fVo[!H/?mu!RSR"\]hdtc!э|*i)pz2KҒŃj,zzR@zU -hOLNWݴW%z5kX[#I'95 @R"9eY5!Nu+#4by`o[CD6ĺl"$ء#%XSfy~ɺliʳ3ENT.[dk, l%3l_T81Ͳz($:Pc^vD/1G ?lV]$" P|q\Œ/[cg1YUkw&ձc[JL2 $w+n@" ! $N'Vnw^kU1n1/K%9R;<=]}i i1 ITɁaB(tj@yLPۭO/w<.kmKp*L H,Zx @z $=-:ϳ N}W(!!=weCQu,M h ᚙ6 -7|mOuf2CH(9_?S/S l] VRL^>wOޜ_Zш0f-鑮s?6_])D%f6,TKkNyv}c~% 1K xi$,/e,]uL=mĉ [`LDBnݑy\sZWp! Cjf+iP`ؓ >wFGa!!k@yv8{݆BAVUʡHB2D=sl]m~V/\i GRHj$X<u PN\0lTW.Zdh 4 BzO!YFVkm/ogKgBdEgxx_W?ëtk$M@g>  Zs MY==)oOj<-e횵eD'ΩGn:FV$.%S1s8$Ed@U~XxZj @gDчr9)2Ru&e#HR@Zks}H,4&3Hf9O%|%39Z2^Ԟ.}i9Ql GFc1#& n6ϩB2mrE 6?gYC^yiB]2Z@T>P+\DcbI]3L݃<cqR߉yL*rސDPCO[x< 3+l2au/Mq3o;N]VV9]|.{wBX2w cJwCidŵoKm6|HD8GVT 1"{)b U|dR {D NrweBOfFfaT[,_"tn)4 9(-ql׋HK12 ,Vy<#>4LMp*cӘWHfD$`p*@vH#{!d$Cڊ$#:" yc|)̙qwxvz>Ca$M t/}/} 7c_>e>pZ1wO|_?}}K/8A2#-A"ΗH2ËJdb$L bD*R&sY~^`uL9l7wFD0pB,:T! 朒AgCW7ḍ@fj$& =J J^#%pا{Vlo: 4i: C35j"FqRFsm ~5jMj5gO^, qiHđTJz2:E$$&RԽϡjiz s~p i(B7L5q; j*?XExWm@Z7qLTy4,4Lj|n"FMyUne(gOO~`}G_@6ƴ1|L&Nï??>amm]R3/Anۊ(ei}/ݻ͝HD@֚Nw>ՌG !WfA2L7HE]J1V{d1v HژKc(#[#X&:4QjHR $Lt +'`7B^K<݉uveB"AZvp á&xBPZ}*E}>&*,+AMJu=NQ͔4ù]jTK@1 Rj6wS8'`b ,Li̙)(o9D@@$ {Cp)/{G^~_ş7?y>_ ;ĺg«%M'p$.%\K+oNn3%1]B]iyAs fF 57vGn 1m9CZ>>"xz8eߥ_7?P3L,˜&a 9_TPx ҮIԶhjAӧRW#""P S7vX `˦\ BBLDS nˊ޷/}Oݕ=v:OqڇAO@@b j5pm:@DarBNdLuµq9ydߎ C ߭K-lxˆD2Ђ"*UF&p7#L؅މ*>޺ F@j h`xK}ywŦ@kN%y_ p@ LK% @Lлx@"&k?x?y?y1uӷo~? >/[ߦC8"7~[og?xwwq=׵ H[K+,XOC#Qb 79>|?[SxdK w~[z"mM72"؎gtKNDH)Xm& r$Rrʱ99!"/ |L0mPn*DI*02$>l!Jt+3';ҍ.fBŌj-tABe\L 2c#p꾫gMtA3x08mHk̰XD̴tL@$])iFbc2ffCb^׾_ϯ/]ǩ}mwǗ pY?M R8j:(Ti }p $bIvX bul9˰ҹ.S22ʛPm1cCnouYP۞Sg]v9Rċd: ̼v)CnjQݹjbz;}Ck^o]>ANG!:vR0‡Sw͕TC<)O's"E1nwO;sߞOǜ@\{fCt1fVDطOO̹_|z|qkB@aI_r ׽{[$"hmYͷC$$شoXj[錁p3Ҧsr(DF۞D?:^<.O˶McEj XXՋ2uYK"s13ߵ tTxfbbRVɜ$ Ej"Cxޤ "OYДBSHށwDѸo) i˭ct(P"oҏN>I I3s3'Ϟos)oJ&~__BOo?9iv̧~w>{ߟt> h^_7]x|u-k9 BVfZeYԉ棏0 -mZsWﷻی Z`0|1!#2#*,}; g#jA˂32Yl(;;4p7 Jh鴮.™AmK(u,P $RNB8,u؟t,%3ar[q` `Z> tsON@PijY0Pmnxh C(1Oc<<{&b)p.N @ L)0Y50܀rӉ(ε".ǂD]mAx Mb&zۜ2PL2;O[_/?;c_7xՇ3 uHsŊ@u."竉뜞h}/R@ )O(% kL$3nLӌLyF |z:1ױL}NȠ—t>D,"u9n"Oz'tŦʙ|n]әѯWsw3gNz{ݱ7ӦD^׆1"`*Z&}S&&1ue}tEdp\t .yt4C7_P"|T*R{Enmo@ 2@bp@׋7|ZWK^O˰ʘ43XmR#`^Bza'1$ E̡`$q_yO/c;z9ocYꌘa{880R5ֆ)]5c#CJSnkA@fF><\օ2"Bjf PBNDT ""s[i wOdvӞ2֤t@fx~*0fh<&Aw~uxxb0}  t1/?]סK_‚p|RH 1ǟZ/|8kY dd RÝƶ"ferP+‹Wz݀2R|x hXpm-$9=nܚ rd,, 1fF&POT^1;J+M%DƂ "Ga#p^&EV5@IG2`iLp}DԆGd!p/5&j%9WFQDs[$c!ÆB2",6 'ÒNEU;E؉ǘp@ 5Rjc9#ÙF2P"t/b@ oHIͿw6Y v =^|D򉇅o`q&SD`SǻV׏OCxl=T`~(ȭɑdMf,IoN5S DٖO{"nc},@ C22*j_a]v3lq>L|la`E aArܶUHr}`dDX}N%zeY SM܀(]ϩ6Aa'ys'oNԁn1KN IDATH,="Us*N謸b҂W2 z0VK~'̵yz*d:벮#w\#< +ѹ|~x}Lଈ:R4$/W?9>zsO2P S\G$CNm*BeY/kB^or n6M#|!xb+` KFZ)L$@(H Dt;ڋ$`]&̪ :N AZAd7$DEHSE !3k>Jdj""0awzc~5}_7W_r>$ 0:U#,÷_g~r04bڑrG}{/ $R,oߜN\%!K+-`vh\!|:lrk6j -.U), qsF"Df) bf-8ULX؝ரR)HmOSS* HD rGg/f @ IF0yKLJ$L%҈:B [(8@A[sۄH5PF>oR$X˺_w7rB9PBaaB)2 LaA)r  ;W QAA#b]ftZ%nIEhW*6 LdMe  JWɷ-bs{ci@OͶW/Λy b3.[R~\LcO}OO^KtCTGs@BGPws@ީ}k+.)T* f  xwzCz&@K&B@&FVA L+y<"5 ";l@BdƁÈn;L i`yK[|_r!$bDy*%Ͻx2|qRQ_fc)E|Ͽw?aPJk~/K-,bmrhTbVFhϱ2lñ,B2AG/tC[ 7X@NlK͐<4]^,Y<$!_2N0=j"~VCGBYFd/ +`I=B#p% 2GDFd! ߭s(w+/ӳ4a!Ȁr8AܻM!RHX[4;R.30X֥.O8TcDx8@@YUf@$=- eGd̖yc+K]N4* GLH ,Kݦ@/gޫmET8%͆Z #eaֹFRm䗾k `ehAXGcYPmD&*ے+ 91w @O֥n:niH9Is)ȾPlz(㪌Q0^}*lcA/CO͐e1"O{\Of{O.m3n")Dic]d">wXm>&iX"LS#1ǵk}Qr3(|;N%*%xtPXλY|c:ͩ%iD;zF&5 A?iw8PuoSu^!!tH9W }tnc47tŶ)1ov9G;Xg{B }#Dvf[ޣnp8,0tNi >- BH"7޼@[ 􏜌;+3IG:T(92 Ϻ&d"3JLMcfčF|bd}m9gxRETDƸQ>B|aat}j1fwo&k֩K9{Σ0{qm#S7X,SBhЄPzr_9#ϡ"fBSsG,`3 7NB5nLSz3 GPbi`6p/iwx,y:)vHQ "-vG$nVH!B46Y Y_Cr'H(Z!*YD;A#ɐH#rw0LH C![3,+D8< L"|$@Id@^V 3@-_|oyq7[~;]Հxq8Zi4}n;p-Tcw"jpjX(\e$r e3sܧ3qt#8ek-]sؾz@7LDM=Ct*$nƌtL狪:%cTpv;uu[$Dꚮө/́EC< ļ~fDp,Kaӝ3i}\%ѻ1g]n[m+>-Z:q$ $˸\{Ḵr}@ ΌHclAН@Gve֯ %lX{.̨զ#`CMm +<@jtJb]/;/t>^9ca>U!=1-00{/&F<6]."@ Bwwwww3 ܂^ AQ-Gp MLrI?yw]+Q f2r65  ( !ϊ=1(B`ƚج 0!'x<>>u۶]]2* 9`zDDΩPKWXOPɞ:R2 僇 IKP#E[$am\^_1\7CD$[7 iRt$ 1B9!pZmvMgwu >DHyLiIf&X|._f,c,CF3ܱK1&rO <,sZcx׋r)vӥ{!M9XqN1R}x3ӰbhnnKM}Ӏ7m~9yMu[ѶL6mO)k"<<졡`H% $RH"W޽ٝwDƃX08ΎXkXY\="̩w c΀9lW1ThNUf 1+5cm H̖9@~M2nǏ>??} QYrγ{JU3l_z3+!a OnB4IZgXqcLOB'5"+H w"n@bŇ76bdqI-P30vMg\` 5sobD4le-BilZ <%*RM)4NԄh[BTa ((+JTҶBt)NK2>FRW󹜠k"T ;mn *o;ALFf1mgVߙ,\ExSrcKߵfTbY9KaKek%Œi1-7mqt{~+n'*,^V5(!1%0{P?$t/\Gji QSU-\\D,sFcF9IccR-Lai p̑v΄Vf\3Gr^\Hsf#3GwwOL  Ep (G$Q,Lwhw?6{Q}3jHQ(1cJ˜ݽ)Oy" y}o$:I`2:&!O?|Ko?|{yx>vԌV8sSFK&Jrmofa=4 08 \Тg?ɲm$EEHT Jۭγ{cOauD]b#@Za TjZTO&g9 IJf`$0!UHBPMH1}am1+% `]))Lڟ,3=MZb w)3rR:->>VݻYNj3v*1GXgFB",Ki ċpi2#/]>qAVz/Z)U*'5ٝ~vw 9L&uN$(r8۱GoVEZ77˵ݝyy㚑eA(xlw(AyXkz9 H@蕳vDfQ)O'vRifFOLncNiD 6QEQ^uj'Y2Sq\/ܯa3oP1K_?<3uJOsAf1./mq@rݗrb2X[[N獘"d`})$a"3 3ihM$!I.@ @n 1"}Pa|%|0qR H&`B6 ILixfҍj7۟qd'K'rE)px bcLt\& x(K)Kc۲"!za?xy~dBqLp?F ݈ b]gGgJCGy#a4$0*I3uQfb+0gIT tALqè5G%30}p ˘$j a^#b92{q,>9h_BRUj Zq\DWRS"T38i[,2sMd^k"q_pF}I,uQpyrE)qZǏrquc |%e^^\B1-_ 섲j`PdaZ蕥P+JB1GAPj[t"^JPemK屶e 5ɠRRZ2+ Gm*2J)VTpNZ R*Vu?./WbeT<B,p @)mZֲMw,ozL ⵭K]"-x rni5݈#3oG A `6a-xnp "0z IK)nCON"$#'n SVa!n8$) IRc$!`'OP @oG ?!Hq1,wt]^y,˷G{iںED33L^/雙^fIYZ0V~,9-\'9SuMv%LBJ2 f(E(,ij'"ʔ3iopLL/I:SKT@ sIB>cZ#Q8|!(_"HeYK>f$<\b-La1nCjFR^U Ltf}9 IDATIlvjӝDLCqYNKeugՍf9()40Kg#KsZJ3 Kr@#rH[!2tVN$Sp$ruS7(3(fƷyU9`QR˘/'F\}nY,AwKZ< FRNO{U|*XpwW&.qzZtɔk-u=e[֦2fWV-Ekտ>tڇT_{:HKx9M^4R-~%Lb`[eV9[)eX.gKm7o޺imFW#ebP&5E Tdi"9r:5s>4'@˹պH?';ӟ?|~yޏ>c\㲬+g"D #=ܧHJW_~xyv=|\`-,yYPt&[UarDIp Baݚ] 0"WA bțM3z|[0$Iyk1PqžWpߴlpMc:w~Xn  IDD>_ 6 .at|RWw#9HQ rPM( fܯo?ȼg7 dxq[ns̜vcB$$!HpUUT=U2{S%҈-=3y䭑H2YUi2 %T ,(-q:>xuݮEre^&bRk%Z2ka0‚21G&~TfJ+#H8|*5UICY!~tPlېZ-wsƤ1}dB}l/;3O>ɲR~!EjYBjoVP5ͭGΗT۾鴍y@ykOZcnkMI\5rby=hTTVy-c˜."DpwRX 4x8sMR 7O"qy( $pq+ѫ7UedVNN=Kms>9['HG?ӿH}s:ϺVmT../~?GAQn=2u &G#beVPe.wVQ8D"Z[Md2 2 T%x?|[L3bP)"lΥ6g!(h3@ ")HN2AQ]w;Fߤ:Rẻ1崔,FP+%$V-Y.tR98b[ټuI,s"}yn$ɣֶPhB.H[2 L @J J%wH"R%Ƌbtf#r-M"Et/벭GBi]'ZkI霐0@J~ys&g8@ fH8s݄EbsJMS%xz{1.-oO5Iz>=~G9߭|)E~GZq03/UoM>w^KSd~E=4Rmw'w[Ǘ7OySI/׻ȾK#l bsoܩGM/uaJsݯL/^dH~1B0?1żq2v$4QܙIO+3%?{۾|[`Ԯ/vwydSN2_|~zC{*mZPG[8.Zt"sײUPk=d!Y?ׇ}}Dyis3P]={jDPRO2wI~ه&5T-ڿyx< IQ8##^Z]U U[)H!b"R!J2JdBZ|!o"@Vs槪8"FI0xD7WH8_KN6!qT&6GҭH&^!H , aÃ2S2,r88#Ei_Ozz5!\[Y֯/OqSXQ Ef&#!AD"*y+TIH(CdNbS*pu}̬U`8xDq*sQZ̔Lvp$B+LWJ"J1}X% ETz/w6&]Oڏk˷"J 0鴨pU"-[ 8lٖQKW)Ur*˱y#O" 02u)0Tʭa> V$3Cit%.{$pۈ0$nea VMH]R"U[2R~+J|[ӲjCDo%Yh޷M_~ȗw+"߇iߏxnkƯޯg!j-~ZIyDBpr*~޸~[g߲ږߝ:Fy{8-vvUF i͆CI}v>\V1~n9Zѫ1|wsTM$i /\ kSm0DUcH*Tb;_/tKe p"\zl|~ޯ#X7~\ys:mu\ƑIy>-f7z,OE~Y+؏{Lv3K:!$>F)Ņ[x@8uTgWY?6 ) iYMk*T)Z CDJ F-%bRJXx?/snOOe9T7&Hө#Q6o=s(t:x[qDd[.i:"B0'EӧW0?^*t$݅= dQAJZ|ڶHik%J Dw>_~?>/5_*^ɫzqno099&kmy~[miYG`&e bdx?pvrt^ϝ'͇g{xɴZlw밫#!|/Y S [#lw||Ϸ/it34-MygV H\P\Mam/߆STH KnLZ ke- aQe5@Qx|3qp@U艄1@:rR53U83E #&pd׎-v^>72Bk!njAs 'ܪ0O @dlLD&#K0Be= (&R`gK?^P~M@;-ة <ۻoemǵ"o|;Hhx<DcfflRa#ӧj aAcFy y[h;6/;Z eDXB/J Zeaee@JU)LLKwJ%:Fw!>/ņ ɧVG2IoCCzDdF=!9f(5e]Jd^/T\Kd΢Ť:ˀpUUV HE+5e:!9TUcm-4a$SP)9mEOEvbR|\Jc&-s]T4mDYz)u[!o*$*'΋^_zn}_|;>_s)OTk}unܻ(h^ =YKfz/zͻoy<7*LssY3^?vZ_,! bEe _ 3~p^lou#TA$ۻ297o@/.ߕ˾-UEm6Iz:q|~13}x|FwcN1k]zm ܣtD5b]o[D%+k)EiY499fEu+EIF\kI"dR( MUtSf6.*1,2 EǜU{8:}(ytۥzZ)!Lǣ+ }w'X[sG~*n@um ᗗK]gz8A1rV &gZk2G,ݽY 23 {]j{شT3iS.7jW"^ʻ?SoXx{xDUٝZ4ZZh ̌ $zAhqA h~}ZjH2VQ$UGe>} ?>mYTdOӌ;1 Ղo2KMUI F*p$eNT  ̖~*6`PDLxZ9cIdTjFmR>,cD>a{Dhh8ӼLT/GsHaUΧ"%ׇqstEc*SM)wRU^|Eh>E&BUJarH*"A1!n ;_Ggc 5(D ƂCH1=-#3f`pC'~LH h$e!"2(<~^v CN5FHt"p)/!Y!%[S1At;<xO A̓2E`J5PBE]2!c?(SbxDv?:(!s>п-Q37Ks\v*G@/S -0Us=b6T’pcR>H : f~MC#ez6J(}#T$@9K `Pfml$;saJJ$2pkLMyn9QHbgLJ% 8'Boƚ250({x  3[+4i2 5S|?\ nG]?2N3 k8vz>u~uF29ѸnȥmIh}i\LK}k}W~?cVTz?y˻S9sRyt|,n6٢\v]ٶNN!ZvvYX뷷<۾ioeNlݮXػO[oc^p|}mL˺#H&[V5ϿP]]f_4 onEGGK"2.1j!Ƭ!Cm e^ReLH\RJfb:+ b@Ֆ,[n nHLbpRTBlf"ݘ.z1"2D~hi}޷= +x1S(Ze"@"&D[{7GDLH$T̈`a(""ԄD4p?rA3 ܛge &<?9h33g@ Ò95>T4%Z֊u1|u^oRkBdȌaSnH*|m L{=N>"2TC2Qӏ{GD wKÐ$H؛@xsMiޏ*Hz$133 s!{/QAD{JI: b 㩨ߦ:"z>C_QNe'|*ȎB u<:|w*ŠB͠uoS? 9dDHGLSݶ[F&wѕ PAi>Z[OX~?(ZP"/7i0/ EG=ZL\f#_ XtQ t>=>i>r_`Nj IDATtۉugy},^^FFӌ3ӏ#чc8&(JኽTU}Ze9DC1ekm ,(*M THML@̓44*S]2p84ͳtNJlnɆ!@eЈ `f•ʈAߧ $B#_8 ${l2#!F@"+@ ɗPjqO~SBSEY#~@$JJ?>!CS RӇ?2- !4j>R5p(Խ? K{;F$a8[W L(8UP5) C 13MkݎgĔ0`.Æ;$! S e ֏GCtsԥ Z [-%xJo9!Qk "I>F83Ue1Kע԰ѩck"2u46&Z[х֣Kn>DĒpG+6%=@ 1wan8o*4)DH)#GΕo[zgOW HdGܶZEmc{}[ Dάݔz72s.#b^}FNJ_pʔOO~2SjBy 1M><.]n=aoǎtisՌ ZI>?y:?i \G)Zo3O_^4}8?x`QxlYF礜J*GVnC'24Ta#\(`;g Pe||@F}4kv嶍ӏiؐGl`^Q{ö}#]ULW-)<4"mݎmߺE:DQe̋U J͈) w"ɢ ~m7L ,ئcZJw0,[ f,DBE Yn`@DGp( PGw7 BS{{.KhW#=1qJcjB:"JDEH7=P2S"Y )!7=I H H  O?N,{rO蠬·ខ cW22E(Er`3펀ݤnp#*@9v dozfBΈ"W$.ݰ3 mx ##n @a)zJf#GZDFU26H#1ɑ3F0K&DbZJm2rHB2hJ`f9g@AVHlΒ* B0u L>³ípo~w눥|8˴VHk_^UVaCoYMæZzBzÏ *h0skS1ZOHEֆrDd?Sz1F0"&"r^)+0 Jv C>x{Z5Ӈu2篟?|bdG+92֝| nF~v\{'k楆ۻ~9vl L 6M0%ƆenG= Lfx>}g=GRmiYEO~\{kqZxqN= 2zt~n/q6\,1oh+dG609T,-*Uā2a8AQDt \i{"4֓xgQE( qw;݄&H3RX~(CfphX`"$HdG<  0d8iFfqO9c@2TU L`!` ju?'h#"}P Nc_vU&d@>awbTeZR>_۳|OB&GRF"X'īgf7@ >F#,l4U]Hj,,+;S.@2xx@[͌BE3Mvs:ak' ѽmVT'YBR m{*#~cXጊv8ܝ([1#2rbXqi֑ax?[mGcyo4]n̜@4OAE( 9K$MǞ?̌o\B2}„@,^LT$9ͫ-5s'Fwka@aͧ6z = 3vQtΠS-~mqjm ZN$T<Ѥ { qi]=Q} 9zяl]r`t6@tU2鴾]&-|^@.w<|؈ûg^0-Ab&M2~)3`w;nq ٌ5)$߿6 M(U'~j֜ [roȯ-o_v}1`_8 鱜GdcӉGT4GN˶Ly.ot]mb3Gy<֪ͅLHL}ou;971/xXҬ.R/݀&p; .'z*}y¢4ɤ؉=-*LT*7BDH"B"*B);(j $0B&DI)rg)~oD1)2%!=. ! bD Hw D`*Ҽ3%22ѯ@%9#L*1MY*@.Ї'f"2B1DxD%Nb $dr;>??W~lV~z S| QfIw==²<s kbn"d;"3 u} $H2)DfuocGD8u]GkӺ`[GcEH(e|y޿X$'Yf\=AG@Q cއvy!%"v>2#Q0WEI+ـ?}|Fx|.pc,"r fw*fcZ*n[HjCX$*O2~Z+ е8nƉt>)$IJMx8m@BNS1SiȌPwtn{;Z2CtѯH!ݬ*O2~d DHv3ARTx-2M~u&6^Fچl9qZ@Y8К˺p^vU0UbYo%PuI}tٲc3er:/E0w$stom^ r3c*%Uu?Um;3lo=ixvbTfCeOvda3j_w?tCC//<=l.x.Q,u~(?7z>i~([۞߮0P?~<=\W:L߿[XKck]+O/}p;Y-˔@-uYO7fAHDA\ BM0$΄RC.䝘3ʠI=rb?,BɈD?ڈlѧIiӒࢵK(D" ^RoE#$fAF@I.}#cEN$?")Y ,@V2MB1 j aޮm1"~.8`ՈtoNKQ,8"'&(scy$uqs{Ƶtå,p샑a%` ZB&VHH6,H &$ID@"4PPI"CX, , i<XEFrAL#$#_9|x#@=ҽ PAI>rxbdù #!!0Q!U" Aqhd\ AܬĽ# $JȅQp 9֟~:-O[s iu]uˇnmQ{F4n DN^m#AH` {-r1Fu-ȲGV1BsQapL{R Zۣ72:;=ns?y’"ڭC=f$NxOEPRe¬=|p/4i<M= ip>.e쑡K1< bXG3XiR(L.\K1&ȽL 204: d1e%*\1yv? ( HFMwEGiHi=NSlleւ@F"1 |];#\#f!$Gv,d;T"ǘ,`DE4LVIYdF 0@=N/ xo6KǓTHzm8jо,LrDEU,uF%mhގ&UL_EDLzJzo7HcӪJ%:1?Z;:IZ z9)Jo>i 裩,׭]oo0ȌvC Jx^G?5p, 3!'Dǧwq4)գDawO0I0:釺v^^:M#2)"U"q;H#&&M1m?X%Y1-m\tm[Wwx̨K|fv\o۫.x8rk ܶI-~Le_AT_^O/_n%9e,CN>p7\O3|xF(̵Q͌}?0<D)]pE1zc@}lH6r>G:lR\  H`~+pD~:ٯ778 O $E9,2v'ݝ6Z#ݑ"(3JeSN3v%p.mjo}0yoNC mL0?ca|urNLfɛa̓(.UX2-DaTNBDp7DNL1PH7$EK}A=ݕ7 <bD~?[;EG"e$z$`'@eqD4XNH`E@&:˝%hx׸f3eBaJDo Ihf 0W@"OHR:K!J(PԇE` d֔\AY}Q .0͘56AC]݉Z< O Vh[c6,DX}i;QeeF:[v 5n,|~ݻ߶T+u)*,GߋL1#FPU;#EDH&*HVdb>FHطp. H P'8 )MU{; I S\= =gr>Mgu gg\6*}#LR}e06!9io Lmp5LOdPHȤDE86sێud.Ӳ>V2q̧=FaTiբnT9cFoܙH"BwŬ h'^%|^w~Z=iF$(W;?dZkGs9`:6un#\Lx5Vn`"aÀ}6 X[;0Zt6*r`o{}kyuLCx?ƜQdo6a)YivXFЃӥG3pCy%,mM咃<.~4;IӺZjonڇ![#JhVsaQZgՒC$@J("9" wBIJHB&dF"!Y_&D)D wL"I1 IHi 0wCxa'W԰) L(=< cpU6PFڣ!"F83wBHsw61$F$"DT@Y0!܁@o6$ !vbaa7vb IDAT#Ec>ZFH͖Y,;݁;tuU-Ol N|@[qn{/ȩf͡wxtSDR8Osp,ScdC#=Hy-3|'zB잀.$<0HydcyτPSTͯL]0H__~\v3 lCUWz=ʄQ1liȯcc-j(D P--.WVK&獆1촺J@;-p=!M,J#pҖ$%0d_OVY|b]ץ}*wCʲ:aC^tL@RsN4cS&1.ߎv.#cR!d$tivDk mYFY }x^-LjsY z߯0;Tj8`s"Ba(D,!O+7L(t @f^ >Z׌u8:\VPs2fFx-vt7L2𒉄I6}_\4z?=B>18tFPbTOR9iZV9wx6A Ak_'n|Y׵Uv:ѻ0ԒK{yyVwmqZ1\Vp|( =;7ls:/X;}%#!!$f%ʂDM)W^iuuHgʺ^k Oz{υ4Ƹ\9AmP -ig[. & Mg(a\&A9,/gwa  .R1e-O0s4(E3_Լ қzbHP}xoO)HP;}|Y2Z{__=/O/_HR"}S U@$_# "Cf #|A&}`QFGhA$*hsfz:J"d, >8yb&;apM, iLL91fp DnEMu  6@Uh Mj220''Pp )Kk,#v@&$1 @ۖכ\.l:= B<\Uf%p9%CUS:LPGAObӦ'O5 cz#xNRljÃN?q*O_PT<H=u@f<,5bѣw̷[\Pm1s֚>byZ#iXkR(T<幺.\ǩ"k7ΰD> 9ͮtJisB;SKmNuF: }LƗCp!ڰbJc8! uP㲖>n=پSBq4,J^p ,a 4O,K W1"G Cs^k^/ufqZ}2P 阵Odܫ Ky^[ 6omiM@Y__/__ݣn+S\eebzz{i˺& sxoi߾ai+޹>tm VZsa'z;_; 8o84 tO/^FqɷTmq$ L;E>x.rӶ̚~~Y#B>J)[vĴv;<gYwwƕdZ31nu[]6ZI3S }}]?~>}_y_ڶR`{çema)[+-=Zk[WHwUaf%xA@$̄injG}HBGM+ G"8#PP 3 ! 4@xz@D#K@IA(8Dh)BD &Q2IGe6D ȌD*POD\$#Y!!{q:GLRxle$K(f:i PEY2 ɔn(21}E#Ƞ9cZ&M"uC'{&4zpHDGN\hD3Y< 4ޏcSMcǙ03 yLRtLpC5*Enƪڰ9-i`3#Uyst{.g7Ș}|_8-eGe :2!JlmRYC{rx;CӶ;ң ʊa0ceCv' G87؞OO6Xu^6"^>lRJKuӮ/C>mLT6>,8GN6_Ò]n7{x||-uA+2ּ4k|ΗЈ#).W7:J^"Fr}`Z#ppHR6(`F"%  Rq _n~uG5Cpd 40S "#]<2$!]0&j")uJ0N0p$tP 1k*aKKO}NP]d0BG< !#`eS *f61 I˘NKk#2QJNl 1&סi괊e#Gnf9vl\؂VJIZ}pFDM%#.uˎ d`6SLS ht{vcڶz9F̉d.zfLV+;"ǡ*BDaC 3ZdbGӵ6߇'R#Zĭn.1e>}ZaB4pN]9 pR\"GgEБ=)ycη2/0ňOzyV|B>u<DKQDp4<*~av r!~9@a?yJcGz"< ӟLc[̛}}6u<_c7|1'd|GŖ_^^>~nea ̂KŸ?ő &Kgom𼮋=2#wyϟ@\inϯLg #3' c)FSOb.mI><x!nmSeooǺzu3Dc2owvQW>)'eM, "M$*&<Y! #ĜtL!]٣)SP,*8@x'AeBDT}t\dғ؛`qA`7LOLf dc32AdLO|$xd@ٸHPA>.ITFxI"5ohaK[̽6{{X"0"e`fgfJ1V},z}zݪL4-U5Fe)=V=4ZWcjyk< )?\/\H$v^o_>~n]b @{WH #  u)$&C+a phApoC`,(A'bx E*dzڨȄ4"3xbH *Ğ?$أ}pZs75'@D~)9 <|O 't?9\H PT D") *a$B`L"JH*u/G r$i .FLJ`>ᮄ""eBN"$HR2(;81"'}A)e߽UJ%eZFDBj H(" O K-PnG75%N2r9gOsNKL>Y]q(2*Qv`NsE`. ~.2ΪӁ)@<#jxN騷Sckxy?0S.c:QY _v!9 CY8 Y2Ms*CMPaD`*˺qnn,T$EzaJE3Sr s.OwJmO۶C@7~oE];s}EM8/Ke{Zj8ߏc߿Sd9Ξs:@o.-#0˘r*|=吏^$"M׈P׵Rk1c>?H-ˆ#28q]ת1#.mZ61U|hW'/?QY*ʖiV1n\O{\ۛۉ@cƧϖHg{baZcl#e5§k,77b>Λ|ȟB9rꮶq;;df |?& ?Gjk@K9`*ԴYOTBՇA`ertF:ֵ'' 愀 ߇L>fH#SfKfS^?}=݇w`U~y&\׫H1݃,~8R}Dk2j@:z\e* E(`)H@ r5B>~YiQ#1C\n_=4UhtB$aӥ4\{ԧC>O9S}H&u)O1nvYXX).HL Q3?uc+n <9";UhƇmYRC?>oRpň^>}n_m^Sl1~<_j-BWF"c 1t hq;:p |{_hJaN [_JLgzݬ )D[8"ȓEoqϛ0~m>*?VRum>ֺ==#!e199=e%L ΰdRPze]< I]Z9ǨX6,p^j+>FTvP)!3N"DD4b 2 !! @1vLA88`! ?A3< 3 ѡI@i&03NVٸY$!?CNw"&䌐 dD>TM!!%$#cfc4 f.$a@ qʣw f}ٚOղJ< DtE6*UT!Yf-}]yʪHJ$g TuSLlm=Ns\[&Ǵ xh0< f fF">͙Bh:+՘st!c̺9z #(hFp >%J:MZO$}C$rytE2e֦izbOCSq!!r{}8DV ̌>J)v w SoXnxx2)ώ,-2!4'q app++L_1@A )Yc!O}8ֲOu 9cymmn3&C+@e~x^ז_:B6׶, jN`~Ӈz]Zy'ޅ IDATy= ~N^+Ve!>=#seLo?o_[b|H㲦Pٶ(\mO-Lćk~pX]͢&|c?˿|-^ttY/2|뺕Brãk~`d"KQ纮Yq= Q> /YɵO˗?_J=/|{{iо~ZΡ؈k nσnc1l4EA>T- sea&D1 dĐiQ𐨈 p̕; ̈́*nX yf$BD jzfHVP=?V0F,b B"}%P%"0@u0J"#GYMl"4%2BIIvnHYÝk%&u)>J OTl-2V@@vؖz?-&&&VʊTG -T$JtJ |g9 r_[##М*!Lp?fg9OӸH`cLLM4 1-G),cs!D,Ybtw@.4' DY"qN8Y U>wČ`TtLׅn~CcR٦aiQw;hvH0 8Pk}J\*9I`XjE `V4p` 6{W9ޏ'xu=υ!A\δ_wz]/_->ԟ.L t1ގ_wKMFuG@!2'$ѡHB$2qONnյ|!#]C- #oO~,K9T}7e4K.mُ",qւ9X/lmb! KH;RSyATLi[!o9z,]RcmЮu].[G[ﺔ<{42|_j痄tYCs?yRRxrzK^O_.6 %hMj5!Ϣ_V]yLoBsFx"G'@pEBfz|w o"tC Tbw+ p Ui"' U B v] f\DT->low]B}y۷ww( r|a1 ӆE@в,yoxzR{^I7hoEyHk]1 2))L4w3B䱟eNIJ㲖߿ݞ^spߡ^u_}ڹaC1>ގK#|Iqv)~'^n!S!CԷ۴Rt׉\8*<⻽s"̙~Z9XvVzhC48}X",25ӎa`{B78/˧MdYuVL zY$[O&#Y]=< @n_O&UgUWf2pa`bws9a$2Inڳ"$Zc^rA4}7UpeVG\Q%K_}5j vHX}׶j~R:\\6K,4&ZD;<đfn1݁ -LJV1~;v=Ɛ̈;3nc ;Lif>J1dd c%#9Iw љ(8qIp(ZA@8);@f w@0ǒd ~,(9)zM$_W"RS*aa1M"b<P@"< 2Si&AeʽcspaU'2eI$B09%DWsPf!)w5e8(@N4G&hy{h`ӸksmK::rڶ5 PAZS։*hLjG>cc*'"݌{mM6/ܚsmjAi5"[5בs͜Ss Pg6%y z IP09  PaoN@-躎e:o?.2Ox{]oPЇeLsI%3v{!Mޙ~˙f=zGXDD8O.}"G5][%c^uOOc|z~=vնtf&nޛq!9cK꽋 ~\w |nǾ4q YE~}lx]קԂliYЭ6t:)-0s>W7(Ogr6"[doMzV|z~k;n@`Ck /SyK ~yr,9'Zg.72AJ0[)ӗO JM@Pۻ͜na=@Aiɓ0"%b3s 7faZsY8Y{=@tdHQ]>tk "hHB` `+8Bwt!:8C@q`@?脐4<9&x=`! 1!B`"@`j5;@0D$HGE)~p@"pF Bf""80"T(Eěk$Č:tDK&JU"IIY $bA$<׃^) "3tWd.2FdBp'K@&`$n"C x#{W3AiN!pߛsBa$P֭# s!zoLsfSnF,YbGDsKlnA@4ZGA&S 3iƐkz\׽M%QJubBࡁfڵuwږfàka QlFhf }޻PsI#( L s7p(_ pMgN/SaC4k[o;.[ǽTy>ӧ֞n~/®^bY^^n1!t4F﹞Xc$0`-OK>(5?V ۺN7G~W#Cm8M wڻ:JߚcbuR%ԛbXư[WOc 1hۗv<kPs˗IA<=oFD w iN{[K9 < 0,=L(U` #Ѵ!9yƈcCL ebwW fڻBp::/5@r)cLYRjʹ@R#k'fah0bbvpts G5w 57,Fn T oy@)G1)C(L\$`nsLޖvF ў>izӶ{<{3ለ9mW {&1?JbڑƘ(:,@yCA>`ֽ]s#GxQ{LSHknm76ɕR~<ؾw$v&m]{>">/&r0u׮tѡg̳ {#R&PrBr"~0@`4ϔG taaNNS)rt Lk 4U5'BBKD!߆ۦ|~Fe@xZWH,6P/1{˜4OS1m(jWJv%RW]%ѷQnC8s0][Q$IMInoCfܶmSrFnZ+MZk-"1_5 F2`@!}t0'1",4 b4D3KЏ&p,,,@3ʰ !B݁#G(52 )D@N @$D8@D$$@@Yp`!֙rrnH"|(!HP: @n_(RoxAɣJKx7u]m$V *"\:'f0۲RҶTW撒; ` 2*qeW)(R9lh'f̙)a9B4ELs"`tk= Eqp"N$HR9s Abɩ캱1g80 9PD )G0Z " Rda )XN\]_;D6BhjsBM- 1!gBGn:Q@w(yݑ(l3!dbk<ƀa$뺺y1 =bh8M#?F'$ m s)yCc_COy לoݷ.\SyJFowtrs_|^~\4?ms96: R$R 猪*gAZ*2"KoM:8U^{7o8$Cs.NO_j׶i"0RxGʈLA۷K-MYRL)u)?\RAOn 1줫 DJؤra`ά`sh#dBBvuG22N`~:͂  nld 0H3 hLK;;(3! `<Q !hP*ё 0͐>FGG˂ h4I9܏`LxLhB4Qz38x6ڭB#@hO}<2s΀8r᠀M5jMZ{o,Ow0apbCH"D&ac>UNI1) I(LyۜppNBasFm攉ɣ̈r*E,H> ?NH<`X.5* }BZ뎜тDP]]0 @RWlN߇d LSݝ7uP#G"ԝ!,\}O_.њ>jڝs_Zoe-'|򮬠-FCw; v%޶\<-ߞ XLSq}$k’n4œK}{- aO 5xSČFy/>sҚsioYL Q7`|/K9QYϗtAnHEPcB0 @ӎ IMCh(%A@8.H# P ` @] ݂ LB݁Z@axO")#0 H c!q?D8RBN>sbU$A5 Dd¡L 2!`$HBLE_|F!mc)#oDU:'}>H .O%ToM4Mp0moLmmXN٬Iכ}1KYiuE浍@|mt9xGiD+%A,Rs7]jy>eێ蟞?sE*"2f]:l-[d"#&x0@p8lpр< `EA=<#uUDO+ +#;8G 8:qG$ ;!fQgġF14 2Q82:EP-:TNJAnGG"a  1"!!S$*V IDATD@co:}?S+Q.zYk{Vku%! -)̹q;Z}mScbud'?cn9' #D%Υd!ԎF"@9 s ݉1 TKn}Թ$`әXӊȒR8/͈ KB]-tQ!JNs9i3FΧSk= zc߅qiڳdȜx*u)Is}^r%1uJǭT~>.֣yHEJr9wCtVD̎6r: -&@F9 ᒸ{cw,)ZF[L9gfP̂(q!PdPȕu}m$OO<="$S76qݾ~?o [JiAú67yѮ3o~nۧ\h~Z>mۚDyzwl[cu,F tƮؘV0Z`!sd@͙XPN5P$D]z1TW@fSKTLY>[ p_[Ҷ$J宩e.KLVqe.a)4T %H$-u9KZD Sͪ+& DJ$)E)e;_';',XXVfH1 CdYbb9p<$hL.y"RSG,^o[B7\t90/ IdXGO9z{?|^.R?%'i>M?ͧ??z T1] ko_eT ),Ag{~ʿRІ=/$y̟`.mOoUdjl1y$hފzO'1V ]6: {PjM>}rľmή{I {W\{yp]|)\f"]zۑt$K[{cnꯞmOx*r#]݇lGZ>۵Ƕv RZ2MN^v[>M…#c'1-o޺!3=}916w&t@/Lb!ۀ#U}6L(f f '"q S@D &wECp(91;, ,ND)w0 C,@A F [@x%vi#~ s2Q" \%% B"AgOD)n_:&8BA# ',߯}&qPayr6OU}pp\r7ΕRh'YЈADrȎ X62zRe3pE Rш0Be*q\"I4KZ:I*;(HiJb`l<A{ 5\eF\2Ok)E0sڦ)^i)N!q=GʾHHfQk,,͵==/oDOw4-=O9K>\xHyf)jcO @dP'!2NsSxZ=|)u~Zx'#@ovdEڏ1+>cyDYmUi+jDE;_#J웏0%D)u]=Yߛv.mhR)߶fr׼1{Gfs|z\7L1`p| U\q[<OxpQj08p~L݈)#/]nj<@p cG|*!9tsK(|y3!3HaqĴ9#J!$LĊ݁P62|(g`c$n[bܶ2uqt$BCuxTPSH!\v 9c_G* lqӱ 9eZR39 )5y Ƙ'Tc%+D*d5џΓjVj.%lq\xUUZBJѻwOFKęq)Z|m{+ppSy\)/EI$`zIp$1%(qZ\r"T+QD4'j.TtsO.Kt~:<0Ӽocr%) Iƽ#urR\sO+6N=甄 ,1R.NS*5c26yynCG7vm]il=[vc9}-6n&I\ϼ>$%Od6T\1nv4,:ZۈETӶbq]C>":!ؾ{?Oڶ>?v:sy<&Q&:6*v_׮{>ȧe|]{چSSO_'p䗷u_o] 0ʫo ~mNSU7s7Vn=-[S׮cxp,VRsJ8hQqLG2{SU р b4t^.ݶ*0T2<6-̵@P)nmD2BFKN)A焺2iiJ9E+I$D< S}22DeRcݞ>M˗z%g l]ّ/u6O2̵H|,;-=>iɣk*( QGNhJ*#%tTeؓՒIY]AD?_R2}ZN* B0$NsNM/iYu%̈0O7qp*P4~$,4Mrr#UmLDm$I찧fYU3 `y㍿'@RHP v;]_fȪ]8TVU{{T)޷CNܳm[|{ZN[snfP|yYWy:ۗwt ookku]t.}3?Nkpzzr{:sq9k1Sf.jmCˮ6z߶[u<(0d:]olg >_ZO1[з̪=:oKV [+َk#Gz9__7z'کELEM8:@?_#G/bVH"GB@A:H-PcA }7bkRR -"HW-614P N~ԳC1+،Lj:~E\{kTPƲA⥚yD%W%@1fuE.ŕZ`&'D!Ur\LDbvkzw$kM)."n7V[۫(梪bТ[?VwMZT\LJ')K۪ܦ\ޢ.u0-0H&7ZܪmxzyRtV TiW DdYe t*Oo\D%Uh:raZr߯IMO'?_gd&ӆZ˹]EK-e>T̆t@RBt!VD=J&J ̴6eZf ު:uRLta,#\U:u@͡J5?,'qY()׌4\"pmO~:JeX)|=3χ}-NV+"jVQOdkOerhAR/ovݼ $3"exXrR;u|nok)e en߽< d_M/S_.ۗYYLȞ<my8,u7([G/[0{l{ժ˩xjm|WxYkzZq?o<-9c,]-cUo^WQ__|!|u[NK9_yokw7d[e>lZ~4LZJ0hO$bǧh 5SJ4"hf]8Ҿ a21;zKF#Jn}сM 1HddNgL G30Hx #aR!La#LJw\:j݆}~ 3 >=m8*2ժx@M>M3&t6ufw7} CbtiZ25 2yzTkYO/ᾮ"a:gNts|Pf?˗R4j[TBԒ}7sh(e]i*u&EVz n.XŝP.y_k)Z8岙{kQz)nEQCǪ4˛suy!J낌y|R [)<TJ2E=aa=Ud$(X$T:YwIZmd)N[c9{euHnnV5K]~-.ER'uIMӡlIu\/Ӷ>|xv۹?߶IlL=>|<{)ȬuUjE[,S^8=/"b">|" 3rKQ'{<=/.@Zf׷O/*-ZvlO?L"f/>=2eL0=}(rx|Zל,?}r6Բe;_)5͵GLft*Ls)WnZsĵkuooD?i)O?ñmޮ/'\Z9VZ)O2"[7^oՏt4#ynPn^$r^>McPy;çk)|5&e:$qyu]*Z&/;hkfJuaTe}C0ef $y4x&IUd&uZ3A+ {3F* Vځ}3Z @bt7@$!AHd-l6բ\nwpOŖgۂ[NS^0;Αx^oV*ǣ p8ٶuK)Z5-U{(>!$[ޗye0z_?r~ײEǗCV̧ M3{-MʶneUU ( r>Ӭ)ZԦ_Ħ2R2tA{dZPTW7aRu 4/>޺)H/ڋվLV$qHu*[Rl"n!JlSI+.ftt/Xj+sTk|O3^{upJy^7Ns|ߎP&^H-k\hc`uolyZ7~~;tdޚ t;0zF '/ ̸ JՔǓgb0vakRspy /)ǐ"2O֩ 보0keZTŖInVyRJlŭG[f|ђRk7k-n48e)&&\rP\M_N4UӨkA5?z =>kk"i:QKQ%4Sr[뽹6M l\[kpL|jfݐI9EdyL`5m8r=RS IDAT~?/H -Cm6SQecrݍ{:HLo"mˤ0DS?N2}x:޶f-P'7]v4je)*MpY5w T\Oե^&$Ԉl "`-U%*>ç-."(|bmOl*+AOV-Զi9:MV@nm&7U4zkp\2vXQАu]^"&@ֵ/a:+0_zq͊Ȍv륋h)YI؎%//k88v8$\ͧۺ_zoZnښ֐2]~2teKeQc{{yynou񃷵i 8W=FTn/5-~+]^>>]?vR3xK}i}(zI}_WOfa&TK9Uw_T$eO -^w7-ǧrL"aLw TU!^רL `Sat^F\O(w/hUܕ*t܄\Z&oFd"$v9F=X֫z0Uo0OC\ڼTZjVoMLzTUA T̸sxm?.G/;&=[Jx4M[Zu Pe۲V7S&əErKߞ/l}o*vSR^dϞM6)mk=wwOv2Mv_#fsIdm-UNzT\2:Ϳ^b,RL?)E;r^z]]$Z|wٺ BRAN;b+q9ε뙨Lܑ&8*"3MRZrYp:P,emPK|>{dg&2r^o-%_>v6[~+wVzrm۲)=G1v{|jf/&Dˏ鈘W*g_Ɠ 8P~c*Q#d":' P$>b$k(N`2*Y "u83&SRl\W6n[:Dzs .RIz]p1QU!bku: ,2wǕ%?>3* 00Aƭuj=IA`/ ؍2|:ǚ/1MaO\PL5>;r<` "CX#'22Ed,e͞wd|&aЦwz@h;®%G { WˀүL:4 { @VMs\]7%ֺj^c >n ( TTa0L$͵o^J]UaRUA@:>+SwdN$$ HcE&{5D"keٶ5k\>T5WTAN19(TTJ2P!0]JE-# 3cֈ}XBJ,[UvՖ$Q&aYDL2~4S+-DKGĽ!!HS`d9LJsib> 1KoH.O nU@|Q9nL" %ErS$D)P^dbW} !3(VAf y3cR\[T*2FRJ$Bv=);'_ $ADdzcrԊ;\pb9g'T%EI3G0vpw7"zzPDm,=ctJԌ8jd$ s'ɤDo^ 6M#cNd=bLfPTKl$zr<3HԔ,T¢SUU$w/!nnGx|PDrw>b &;x۟oY{67Q6C2ۏk'L^wk5PCQ|=~Kq+"hQcGdh(HDr9%TpE vH2qBTDXEoN Us|ݻ]#;+iFaEH!RLfܒi@(| H3G!#;HaG1aBT aYJmHBML5Ȍ!H'=Vir@Zq.yMFT""HP(" IqfJ|넞"FaK!Xqa[pP޷P!M,*<#B!|q#EHPc衊G! QH2Dnj䮦$DTERbg0atIh >Ak<+ 2@Dfb6BQ CJ&UTM=f K<;k!cDX H&CPQ0TGJ!sg-W_4eU`7gNI 0!ƌa%A :cFj0e4fFF《x|%nL1y&Ag4`)27 oy~ @Nw 54F=_ɣjah_ |=7ƒۍ$կ̝A"I"3ST2&EErqP l3Ý"0ĸ?D=jut8GމȔ51RDUMQWժZ`0Zò<%ZRZӼ6p\>㧗ӡX#ܢ< @ZjCWem+DD(jӬf2:H.;!"2/tfb$M]Lr 1LJDH7]7ܵAG6J0SU 2F$"o<.Z# 3A~ǃ#9ɍ;JԘi: 1,"Ҫd 0*RJkԁNQFlc9h$.sk5u`7vRewp$ANM i"_2ERM"6*32CD\j1lE@OӁ{WƁ7}U䛟/iuIv}#wH'NM0!@=`35/w/v@뱶Gz<) >{: 2F5.þ.S fc6\#- DP 1-Ly0 ofEzfr X";HZePd*R0LGXsb|qeD FF$)D""#LW0=P"PQgZɞLw!ܡl,PJ@.#BDDAyhEtlwRJ)[/w3P+wjak 痺mk{1\L$dk[vSdQT$\f&`p<ؒl-U%If=:\ȶd!#)(][hSW}FIL3wn,f 2c j&"SAtyb|LcWJ0P(dV RG<)[fwio& :kBH9XȋJLztWSU{7+I}@D<`)ʇhjLA.d)QYjSeKhC^E2fjL2R #>E3RGf#xF{{B}X0E~O{8*w:v/q<܇E6MM{||^G5!wm[9Ͻ:u_x@cy͞ :#峗)K[o"όm`T`CM4@`ܕ}GGB8jUcDpc[g #J)c/.?T~ѡ=f%s;5:#xlбXu1h~3=bmB2i=d{Ũ I $e8 j-19IR3SBP.a^0$x%H;R:ena*KuI,?]#ۚ}{=Up766 h-̀ !![BB <1`  1i!cZBB hdUuuydF>ߑBcGaE^jJb#u@cКvMFn#Gb<"L5֌EDF T,2Ơjn=U4D DTւ&43 SLQLf2 r3bXIH\'eDD;L5#3+h#pt0$`_Y0E(1:A d]!HATktE25E0R2V7s9h^ xEؖeB}ɳp~.3KR3 DI"3JRˎXch &W IDAT01"d#PW$#ԜUdrA Le]UUFLiF'WGz9dp&'B8kHf'g')pOJ{̞Z?c|:G`,+B_B=Op?#iOQ+>. ddK+^b&' &IWUQYt׾ UYI&TH&]9'UpBUdU$w9K}QEf 2Dz.QMԦ7dL5u*P,Gs7L3Qɥ-\,7rrD'\0ĕOjMr y-8Ȭfj[@&Rd-U$޽?7.n[<4>­XkK3ۖj G^zHiܬ`//vy@w/szJLd  p/$ ѳHQHe $@ h%1: ҡb#IJ1Ҽ(/4ѻ:cԨF&TT0:f f:z2cָCb60trcH`bQVyRɈh[.fQei0޻#暬k""0rYZ!tr&.?DD., SE*?id56A7dsHx@A6Q05ȤN'@#I&,S#b"(ʂ2Fo)̡124/<{U-$vC|ݖ'yV:+:W&L'yMml9tK|.N9,Z(JW}pHdDN1F$eukբ@TjUЩv w[3uM0ͬ9T5P՚\.&QH@2QZ YكԬe@l%Xຆ/[3MJ5Wr r&@dCFɜCĄ2:Y_P"ZݼtJUQ15R$kaUidd bՖȀ2B8Vd#U [dT3h1水4B RiM%%-iӲgrڲ[b'>mB]8P2R֦@!HTj>#1UݞL:R^RA~<.|q8W"Ͻ-Cr\V?w_m~a>q'?Q͗eS)%q^]3f1Dn:eY\$@/ضLPtL`V.f裴T"paiYPH15S5L4S La&T&ՁM1b8?G$)ޤ"•@n6Ffd 98c\}D+ID:09p=J"VH2 %$TwtHpȢ# wx_diDGvfrd{}# 6A(FFR$2u@W_vBQ[N75ThaJwA>2%|VcΟg8ZOvɴ*;@1S'8? eknxڷ\cvrdz|~BW{W}ԽpNF+H{=Aٮ'"!AmJij9kpBS^; 펚z`FTMl&:$!4á(%B#>%TUHM%DoB9@TF dΩ (9#4)2D6F0GD2 mrv%zmMT`m۬Yhͬky,^H3IEMX(T1VE>fJZ-mI/9O>[K?0|}~z0fd8Ʀ"MdjXO]N)+TR&)0h߶vXshtHH "ۅߚ8G*B^P&B5@ANWT0 ̈́1*!ZH̬ZL"cqMʖmVqVT[Hmid{yU5HaP#*-J|)PlQSdt7-i JF4YsYLQg*׬iy<!}J@EfD%2ӛ3m$5k]W>̄*Et7Pm!ova2׍sHĕO!o/o\/"򝟼u9._;+26gַ?݄ҏ:=1rt7\N͖cVA(6|ui~:EO@v̬ R$곬G UˮDǤSZ"&=, FYר0G]p#frCD|ƔL>]bnշ"4ZQ 0IzQQj"&QdiUF\ Y0h&Qz_aD@CS(&T&)ZB$@S#db&5Bo޽{wyCIJ['g3>ifb4@`|"*,4#&:S*7 lpY4&|L'B~Oy2f!$SD\\2G 9f8ELUn= <7! )V6q z@UG 5#A)3#咪sz6H. 9xA[QL+nzS v'%\H)(cBeq2`:Ff3 X/|'?X&?Yn^}Þ5:>tړޫ\cJ&=W|9WoTK}OνR=ȳ̖Gd@/3>q#[/)`ͶvOE"T,XE oo\2b8.B9 nR*LC+fEQ}L>Y Ta s7s<[Oi55sqo.lufV<,Zy @a  bdpp3]Ӽ[ǫ"Wyq\nZ{yĩw"tc5uxfPYʸ[,i E*âmm] % g02"Eὧz˶p rٚ"hS`ٖDz =rD5 ͗%ʡ(J~W(NFjaLDe9֔1(F(DXjt#0%(LY$nrX*&3"DM c NL7B}n[*%$\{V@2&E*(4жP(Y#_pk#"U5c쏜*LEly ]`U`FBҥbp0,MoaB@"aVSM^1O7oje@Lf+ePQ_('Ϛ_,H ]q}<'_0W-F@ ),HhtMKJqAe'ϟCh]9C98?P׈x8],Kφ2֔}4[9{ﱬ&*ck`.n9:2!zOSMHsaflmM #)sZ"0rHmLo6um%$JVwBUDӬg@Yi*SDsYtuE6s5r M镕T/sBc4ITiBGaətsٚWN1;o,*DDEj-l|DS6ܝC:xj~|y{/q9?<4 b8,Ӻ/ǿ90U;Oip\o޼ү^؇~)s8yTWBDK*L2P )EU!b(y(,A^*TwYw)ofMDNrIVʬiZ<(iuCꈑhAXcH1Sj ^K8181!\QZ^caVZif⊵juP!ݩeib1jJIa kEDz|NBd$yD۲}z/"yFڪ'z|֕ǶYϞ[R+yV3,nf]eJ11⊑9"oy"psFV)fr(;e1p/|7ި_GZSҖut/޾|fw:n#>?/?oo>_w n2.ۣ}Uz_݋Wmsn+kUȋw?F`} U322SȜ"!*2BM I%ꄉG87ǧpUU./eBPͅ%,BM)ÄE*L=a6ITwiQQ#uA*3"C9b-QVJKV7d5n U`Rdri-"f2@ YXrUրZJ &/n~k۶>(ۦ"l|x'dDS5Ő r v3"_ߺ߻?GW`"ýMKJCME1hx!Ӫz5Ѡh#\>O ̝M'{r'Og`.ICI +rQ?Yv-z}kݧIŽ{tq$뗅oͤN-ME"#jn"q $d]TץִC aP!˵"bk J.{iSETBM@fP" HB 2RE3}Lqzky)s\XbN̒4ՑOp'k IDAT--K[2Ǻ. Ӂd$M+T@f@ *`e F6Mgf,mCǵ wrs5a̍6!Ha" u1!x|c}l7їqi\7q>7P[[?_8]xw`k3*5㺼}{*U-Ǵ'&c%VMj}"*ϙYR~ICT"PPE c('SQk P2fbw-"yh*V2aU1ja*W{OU`9DEʴ"Rl8_మN&3iJ7$OZi0䗾9?{#<#?yW]X4HJ Y u2x"gh&{~'V pL(2y]թQ"fuM$GyͿs@\Eʥi|Z !cn}.OOQTm& {r6V{7A&Skȯ>(Gs(T#=#w7n2\Zj B^ORsEULG0B|if ՘L.!Dt( )u̅XYr*jUP鹶MO#vJuեlr!15eﮙ@)JѼffS/-jiBK"uYf43NUh#㲝?՛`_%2ҡ_gn+}~7Ư_9QS޽X?]!f /qzo1wY,S3 4{LD4oބY&b j볜0&G 5(s)b;\ʅvn1!k$TJ'TA){i"f̌@H!i5~V!pLHְ12UU@(M-s#PE f4Wd6#k̗q޽v 9 teQuQ3|?I[rjp %C>9Hd@R"Q3lP[?8LOK@RMTHJkE$Gfmkرk/O0G~@nvYLqc$d_ĄhVi+/pI^"q|l 5Ci\‰vJq79M!jHN_0BG`UfLj`faW0j0cA2"J({:1G.NDƲغr!DsY[Fk2)cn/qo#f9|s38/?O+_w>|/߽̌^9CŨַ!zB۶QHmB(_Y XW=@qӶbh q6.1ӭCffIVDM1pPa)&*DsˈBY\u#`P:l$"&3G`xƠ#I 瀮Sz3,IJpDI Sv ś{8E9QSq lQe1b*mo} $0Slj8OZHWZ mA=y?=G1Ͼo>O߃cL_m6Q$N:Qh cLG%R̩Fp31gp95Pr1{bLs_qj_ d+O\J6<8XWL^=5d}¸5~HlF|iJQRyۇN,VeCv$bbY6vδ Ӷm5˖n ޻hlc\T YD l+޽}{ysH7>F UxJ@8 m.'ۯԒPVf~mP6'dU~uМu#!h$O&`#2.ا6ZSkIR?&J;ծ@#3cJ[r*dzLBE"*8^}dNɌ0u0,f4hojp};ձ?sGa"XV۶LȋWHR F::Xkvc˽AGjO.yR۬[<_q謟~uѹ\a6N{o ,RJV/rp:&114>QͲ6i.YnYHM LwEM)`8L>camz޳([cXԬ;neAW.4H3},0S aFL֚ F ʌTe1fy]'Yuu1zz&H5%з<2,`lɥ.1ҽ)+aI2\޿|󙟽taf&*؟o77T˟o7G0oCkN`i\/ǻ8xy8wkt9{0Dl0I"]$e]>{; ^}9W5-X>O1]5;} {zߞ0ͤr= Djx%)NߞUQOy{8PڜIq!;wfr⾆NIT}SHF$YDE5-*Q%g+0(/.78! r2g>I -®Ns)?*a /oWoK˸9zܒ7?Yk7%Ǻ[߹{ɒB!p]Z#j ׋ɜ$']0猀g}M#b[pТ Yj/lf*Gw׈!©L!5f^.Ͱmp Sd} gh0'霥 9G[,/otm il q}\\ըu۩ן+`Ts-U<ƌ]@WsMbոĜGHF$՚D;k,i>>W1kw(N?{0/Ya`|䔗"_,HlԫJ%h@s +M2t~aj^66ErC(=PM7.k#̤DDYيHRְHVPU!.c­a v'=a:O>3Pl™Ys~EO,Q0"j.! UYК%9Z3WqA9y^3AՇF1DFLۂQ%@[Q$>:#jā XјuD&enwO[7Bb~>y{~տg?hk\.և}'[Ɩ#SGF8pJzߺdo_+G3懊/f!a`L9`MȈ$#`ME ZQ0V&Y^$#EfA58ubٓBZVi5FC⥃Skj&dqT<0#H;ZaۣW=vXx{ÂŹ4DfAEsښ-K[/ܗ y>ߞ3$IǨ0f2#II`d'{ן}%$˶nCL#oOHQ̉`Ɵ'O܏袺Ϻ~ί$+aem^)|nb;tְz%IXKR1=")^0fz)鯦ҽ]ߒP!]WUtfryR;tz f+3jy[o40f3[yyVN.:CI f*VɵS[VPiu`2S9+ke@@*zÅ7X[@s1S"pLuzq)!&n*8zWQ66bؽ$Ka$rMP-vsYY$[!u-ɲ鎲,&QTB`ms'|@>q!o~~w_ø\狈lNe=|> oTGEd֛8 _5sҧͬVRf`e{a!Bd)̸UDDEGue?u :_KDԼ4B0"Vig^%IC1UQ7?}l[m?_p,tKt&Yon4?ww<>7)Q;EAh;@tڞOA.#nvca,E[[*ͯh+S7#˕)gS~en*BRYmiɊeݓW'Yl=ZkխijqXlY 0 JPUCzԉ:)dݔ5g@{+1&(*Huki!F1ѵ)jqd2ދ͑oޘN҈j[έ3Iaz/e9LlS 6ífĭ~k?/_JYO$͛1,qٶ*&S8/(9fKdFY0 O^<_{:Aʰt/OIw-ڸ R޼W^ko1K~~x⯠Kɑ?+euo5N'I_}hicdTtr*ж Qk$J5iNS" QKb,AtYQje`M2@lApTkRH@YW=^U]5Rʗ$ Ksg҃RVʐTY e dDmHr)J~ۥ}{7VJ]"5(OX"ۧ'_knnWrEo>{=/?y۞2GR~7otPn0qD1BD(Sʚ !ִ03$bU)BZv:]\"6wkbbJ`YX\]íBe,Msi*֊P: C)Lb]-VHȼT&~h̀ X3DD uI41 uffѭDðz0ARp>)Rʤ/"Elˠڌ QN=)ޚU\qӖœЇVA6Ӿq۴ C _?$*20QdO!T3=kmB[ƈb!6`B! y&EMmJ &Drn3ʾoDW`0@r,2{_U/ܔmni)N|28+>,ELa)= lw-lc|T M~><A,]ES$X"fTf9Mkmoٳ)d$TE!TnC}B_94I*%+*#U$ OO7vaHPk>R7EޗHd"EQ YTabtM(펪DD}EeDɶXdBk鹮1F,Kq#]7J3#7+z#㗷,zo/o߽% n g~~}z<=\nomy_~_k_lۧ|Í-0ֶvF7LJ샤dfeH[lP1D>1TL{cZHf q>ŷhtGkR1қ &- 2h2hCۿn80,VD(c9j76's;*"3̪+LIpK&&b,X ij ,b@`T޹?@3UTLz zuar\Z^mQ3=m/f@nEƐ$:8"].u-A 2Bh 퓚H~1&kN&}k mMfnٻ71H`2"bUP첚RQ&8}) dڊNhi+耯wƮ ̡sx~UI֩xt]+wҟxxf«HTEyɭ )>ii&b8>ؐMm._4C.+|Ss1F3:83V˼@#412LQdtRtrYݽk\qxsAמmJ@^mT$r0[2`.EMvºIUc$Pe 3KtE{k-#+NlkXL۶J5Hq-bCMMG %v]&#ǥw<=\ڊ&=yV?O4ݷW;vHm֡M#Ã&'3][p+$O/:G E^EHbٚEx1d"Ifk-sy`sd?Y0ɥ - ö́tۦnusE3plBbEb@mFU82Iy; M1/݊-A#jbEyЕIo>ƐᡋSR>'AQp4xS}aVlLVQP@j"}P q^ܚ{`b,eN h \~c{Ȼv<.I.zXTDǻ"}m}*z8E^ EypcW1դg5(S-}*e\w9.ax] ±ׅ|IdQ;K~\_'Z[^ ɬE$sa|70W),Ы 3p&ε'`Z7+Z/*!;*'zsbciҜ:D3iJxUUFRξ:K 1c1rPCRGs HM<`G3Y}]i{j w 1T=+)(f"HVɹHH#T3)%d[n"!?&AR*4Of0EúFtmYzB"/^ fFy륟~:mY]}T532y:氾|,,o޴%ެ3\%4z m-A7s*o=.|>u4[U|>/q cxE[&>\2d,nSF1=ASd͉QBHsnB3EFSfҚD@jh^ B=Q)<=+YZ&~@u5׮ BofYRj9HQ.SܐZn (PA@&`#Pq P PD07QM!PHN^ z(N$pZBT$L5]E"JTQfy>"L1H&SiǰEAKnݢ_?}z^}mҙjjQMGYM B'd`W@P/WZW!*Ib?_ZjgPIԵUS%;yyނ4{ wǨ ]q//F`3{ģeb.mTYZQ$o "s]o֠KӛC#Gk("䴁/D,,I19IQc;cHX̔Q•m0pLb[2pmؐ#%4Ow##M+V+HTtsc7&8rCH YA5ln,c+V73H4Ӷ(Le,m%$R uI1!ZJ-ܝ1ÌKD"KH<>?w7o~q޿\l85i-JdOD?_x8o~{5Ewo<@%6OrOM~wLifJ@UbO! G"{uTcI{&T3:9S%qp3o]Y uXꪰ,)3S6wxɳ)hf{Mij:CNsP SuN S)A-GH3SMU[9le;sDAHB*@X/|^=ɼ t q9Zs s%br8. L^}lhKôqD,zc?r`NUn\߶L6]znn-hMJ[gZBռ!<.?0DToH\%(;esh;V#nb Z;?z.s_^cׇ/my"Su[få5c#G 8iE(qD,wvޠwoLcX3@QNхz8?]~ϔݿ:֚g,3sFLDfšs3IW'{jBFkETf$2 Ph y.HmE2u߄Q+a~vPzЫo7;e ^ r؜jZc@"A0#Ouq;XTw9:QBK!ش'GO˱{w;Sם (X\H#ܥ a7Oeif.J-`[eX;2R'7@[kM Mmq1N (sj N /Zmܮd"̝7? ߧ}kѹ9`ZO})Zh_7Ō=5\xͦQ9HW5w}b9c`FF$-#sFb&1_.ѷ694pL+ڵ͆x!waQ'(HFp"04v裭/6g_ٸ(QDOI.OW7߻a0z )ՕT M*1^KܼV0U!(H)Ƭ; i*Z"2Dhc+,cɉEI@_JZ]|"ߗdMk4m'V'Z'*l'Ry xNUZew2ŵ|w~~j#<Ƴ P5A- v)T>C[P!hLB ̶x&F'%2K}cLj̄<`fkjKRJѭ粘o涔~\KRt5A.n[&G&(.H@ڌ#骙ncHE$3{HNUbMRf9Nd̩bx2i="_bsĕqq3IZ[ E>cJmIDٶovM.L 7j|,vbD\?ݛM>}:y޷O~7Mլ=~<;bmymQUNq_s?nLJo@2pe,bb:Zhr<͏oFQ05"NѬAG"L3͵VIF% c„*& jDBS*uj&Jl:KTEqR 6k>̓G3E4jiP,Ž`gcq8"RܫHԃz3kGQ%1=|ט (^ 'KoQ)`V2C1Nl2%L/X`"WR<[/FvIOOTq$B HU.:.y9LHLLJ` y 0#Dc7I,vMNEm.b"221$L(4|Jv"BJ0끂Q&kՐ2U=D 4}24 t5rDK bD EbMj%Yxr!R4KQ@|YUmE"u7wLIȸQo7;ww˸_/~~{&L?@~zlq>?o\8n˰/?_2Oe{nv]}z.-׾!HJFɭČm.l73kfF5`YL@f!jnjJ^btS6,5Pa) {"K5{xβRjQLvqӧ9*~+* #[1Ȟcm|u ěؑM7Ͷ `T0\Ź̓q.D1Z ${MUu2feؚ!R?!'i t/%ca([}!1qļ@vQR8jL*7$& 8>Q$Pas0T2gaAdRB UE/TMEQu&!zUW23MH=AYV-w y4_mclMF?.=##B GAQ`Vj0Hr!∄xt,H1# RMQYBx]:diCBbzfA*j*G$ࢢ>"U-rTHd %}@I3#0*dRFfփkuɦHXyDZRM#:DLfy1&Xy:LA: sr;opݮ{mw7[~ջ؜hOղ>cߐO ˄/tW]J;yhZLR*ܷTu}) RM`Cs hBtoa^G$QU{T0isn2QZ!I PCc̚B@EW6vHƈMIR;397d$d'eN,IU##{f+9ϧ{?Fړ}o1ؖw˺<ٌv5o<.?by|^q{.=<1n_N}q?NW?5>DICEjݬ @31b2(X2tWחg(Tf`@eKr~*@k0煖W~@n0R25f\uNJ( z"Z IDAT'wTt!Fua+G* :L$%I)S"eBDE6NE/rnJ>۟>tOzWV; <+h_޺2SSH Q()@.9[LkPJY*`IRإeE!^' ͑[dٳ[ڢ?Ee,)DeC1K׀$ncNޤj~lrWPE"M^8+WKΩ}Acr ָskKᚉ./l}ȰeL$r8U|İ(9`- 왒S"ɤ2fn S<2b/M*=V]CcXeN'\QOᚪ&"#1")-)0dXӄ5I(֖=C{L(EF`Z>8B`rH:iD1($lYr 1)}SY$2Lɔ4dI"#3GQf9P}uYL+CAGd-a1m.o;ۧ 1\]o|v\u=X[c9ƻOiM/o8>6a[W]]Vr&lT-TD( )&6"[P7T9!~BDkQ˯:&TrUk^p'aY>KLjb8"w-Lw!#Z!  AP"ᒣ,40X BsbqYǺSq=^Z۶q</qxxfT4#߬_*(.Ogry#zfR*zA֞?Đ^γ5"d\y^Q s%.Z$QE*(>hapndKy1deHHswѨ0ePԧcIbK}.eMF9u@zb#L@nB.j٠^E>-!{jpǧDŘw.z=o|jC쏶7]۷ou]7?Op߭4ݛnↀd]\pS3a&[j,Ab*WD`ƑŞy [-@LJua9`jO}"9.oRKReد';0!@ LTk2!4/FB%*ˋ ѓ"Њ f ԒE%5u uv]5헿x2Bx>_zM Ŷa:ᛧ<o&}H[dSHt*41z=Xey@A1>\]0Mwo:0/HrHIVQm9G?z&u57 LD`D@Ƽ=BXL{T9@AE lÝe7_ou|~oxs_?~ =D3"%Hk**E"z^L,9*EDƽSܵc_gqmS z1վO< R+(/ڌj}m%aID2Lɩ>gQ7*9Ȍ&P' lh܄SpQ4@GD{t %?yz!Y`SSuT b¤Yu1ı`#3&3R͙}E)lUwE$1_lo)7aR+jmwwf1s E]K]@yȅJ-M3RmBN}MZyWgOk;3NR3$2=&uB{ʶJv&[4iTdXQJ/)q[DV4YeuP$~=W;w>yךf5qfgvJ/NWĪLe*xѮW]#38'q R mHZ5lX t&0Am2dD?M$N=Ha8b " X8Pm:O"$&9$p]D ]h+yM+4ɴad1u}TK5ω=vhfڣ:1>PjT*jU2gpW:]}8ftM^?=[9DX+HRUZ+bqc6J,,XB)ݡŬ=7f)kdeC5XMCu@`;kJG1SI#wTu%y4I)^'@nJ {ݑZ߰Ȗ/Xhoxݾ>sr?5t()8pB"4BʵQ(#E1M߁Gy@GXQ48R:Q A׎ꃉFj-U5cwgj̢a@LL!w":UFЅj\J ";gDWDXO,n>MN+i F[(1#QL=>jCޑ! g_Ws7gZmLY,ء]- Uj1er胂g뎢`KE]zb.7wsI(ꑥ 9]3 |c LfH$]ױ _~E߿K/~BX Y ._JC%9O^3O/ :}1G< ;ۧ^Z84/M)0ajHgtN'N7jM:L9(/#_䲵}o\\LFn@gB;[[&ڿ!lALpe$9'J%-'m\90KWTE >xսv킝3ϯէ\xp;5/ǭ3`\38Vc}lh[yMܵgK <LCBl`%JK'xCJJ 'd~DBK wucR $≈h$a:,s"RTHrڗQJBEIciZ8h ZվzUQ ,0P*ެZr1R0 jFnfjj.uB4\;{5vMNѵz]4oˠ#NI g^4^t]UE\f8]At27`Kt/`y^@<JfcOVC`nduQkq#˕,\լPs0Wsu!E%Q"uZERj.q, ǀvᄔ 28Z:UՔdhq`$dNI؈jPGS8X u1!ߘ:du9-X;/WWjP4"n,W @0eAD4zcU 9zO[>zH3ו?!^,J;w{UcpO6K #}:Ax}_YI-" }3GE8'.ZM继K:v&+&Zv%EWOlU謙:-pO0j6f'DdN[ Ӄa:0vX܁Zbw -a4 @I,Ӏ"p&1 dϙYXR}σlxr I<$&NooV)lEG9iG +Ta NN VP}P{QS$baš*琋?%Q3T"2 jn4͙y9yZ;YR Zەm:Mӷĝ{57PĊgi|H@;}mǍ ',$9IjݜvԿ{uzW>"G `N( s3{}!77sU}jt 7ZS܋kj;%<-)*h<aOi ƨ|`t,,&U1. ZCD5EE`*:toL",`1=zF@0NQ׌$?Dx0%/S%'`W-yǖVrjH0anCQWc6LU͍%ƈ?buwo9c?s)g\s ?:| _3˯x`g}cG/xM۸M;;[z/_;~я>#D!$!S#7a᪕(2v9Lھ$F{hJ^s}W@LA`땑6{ۢup,jRmVJމFﵯkLƑ4AUe:/l/ &T՛ǯ؞)̴8^vO5lDpW歓G7u%@{BvF7_Ƌa8!H[@b]=. x:osx@Ew9;˂Ҏa0wt:488-XKl%V)-})ZlLm,CL8 }Ab~>ӝ-;~j;?aQ06ۘ0C}臜JYDU)WnfLXUUdP|Vv^̤Nwnvn_q)^ pq ǁy].eILRx35DQڽpbD.(ocoB5:d<ݟtTkZhynEwf5D!   +7ZNة^O:\ mP"°֪ZlDaoB{R [NBg 0# SړsP3#%=0-Y.8!$fPc"";ZՅv-3JsjaYSir3g'_l"O%,Nxõf-ܤ1"rYCl6EafgN{{>oUkoWƛu}=v/^,`fkk'gwaߞa3, 1'QZ뢭+U,\S7ҥ&Uۮ[PF#AbQ}W{tUw](yzZKiQ3UsΪ%TH :;1j[ﶪ:]m}fܺտdDg}ho"( 2appf#r&2s ;3<r BQ Tsl!BPw(AP# q|`/ u:8lN:>˭gMְ݉MF{Np)3:p ܌Jכףst,Ԡx~^SK齯9q'wq.}.mL OBUt&#H͕${a, `|]pU~Q|2w;F;#)'- }vp]@!L SO 9OjM&3GomczjxCwr*;,p^h`g-iPw\8yӘiyENoϽ&JHh4[,b9̓$U" W03EQZ^gғ}kϝ>Mύ :^Q5᧾,x)sA$:RlO"1ybvP(DmDٮ9P:\6r9NT?s?zBi.kk)7RԶ31;ZNNBȍy;ViCXļxk؈)[=ץdQMØCkwd2S)k;?O-:bOsKpɥ{%hB-[NL<; ")YPE{4kJki?Kd4+PܒvEۮJ;/[gh4vZOmWVcɪsTڕQוTK6$ٺ ^qŚ>^'A؞ܕ3S1OMkKϼoMv0-P86;D*$ ZH5Nj -3f(Q2Y*"#V *7b"s3 /_֯ؾɮ]}}P]Cw.+(oxӋ\X딁( 5(TYM͗Vt$E÷|8BJD^eR r D6j%"5 bjv7j|ej(oÙQc'g:HRsUoD""/&Kv7y0N$uSCD5䎔r~C/.e=Xn:K3{U+_w~ywYƴE u`&N XԐ: t2wI9W}3@inY/o}a|qPxk$;P5Qef*FQ5G UHN7Fڙhm#9h?}c{˱u+T.VzWO48D VMG)24hc20&rd1U\+T%ɔrpL=TU}㒘58mj'޿rJU!nKN甚f]m(Yԋ S"UvfˉoҦ7YfUskAE#ҽ|5\׿o~=_]wO~Ck ._z^y͡CJz}c7>NVƠ B v5Kfj͝3wG ܷ2uJ\JvYowh8Դ]I;u+ v1Ƣ+-ZXJqJ%JJrx[_Ʋ3;}u_=zaSa~cvvܵgv:V.v*G+0(q Y+G 2GQUja,syc>, V 3#dN-C/Np"W?gIԩ?אw]>ݷ|mw8l^a6Xϸ 9nHRJkH(kLPVUy9rY-h52~(~1SL~'߹Kٖx5'v9NLflVDH9DgF)zMI١pf N?9W8H8 IDAT FDWx=g8xA_r$ HۏWr;d7zDw1~E U#s=>xŃfObX)ZK"T!]z9zP:usfY7z3XQwNyYҐXcݍGݦIK PX$ b.\jHBp1]$ $ s~5JlN+ 0ǵv?G]{ˑ[?6.dj,ӕdwgr[Դh&AfD \_N'hϖќ1s$\93W 'fwr׽U_~'>p|n Ӎ&7洲W.puzq`_~oS~d6ۯՏ|og;xԣG祗oٜdQy'"B`IiJ;XtV6-dwVۅf݁gUvmJܗZ)9瓷6w^\XsU[;7/lGڕvc߁yGu= :U+zϵGn#'%S-F kp[kN`3t=J]zz}y{=Tb:Q{\J8~RhԪ6>j2Ltw49YU[pO?nRt;[ױYj' Ͼr'YT0R[PSsJ4f$ sffϙS&|yx=O(6qaa^+!LjyO90=^W̿u ^zZ5`pO&iΛ-DpWu=֟f;e9FʽSOx,XQ8՚@W&{ s:(FFVR 2!S(~^7_Wګ}y)~0GQr#.^OBSNL5}GT(a[|;mDCJ|,z㯸o0W=[.W=w3dj2]IDdnm vIr0UEMJD hVKQCd,˹Yu<Uf bҒq,/x=JD? wְX>s4~~GR) x<;>()2[ CURf,";;mQ5Y)FSs_;}kbޖZLjW\F3ۻLM_u6U;Uޙu՜ I&7EܘX~`U}FCl=ݭC T|y|{=GWݵhѣvf4@NBܰX[|$`Sm27y2qLc{h895\mfo(uKV+=yp\c/U'5y;/b(nEM|HrFfd2x,UՋ-~]Pdsޏ+Oރ !G/|OU$P1!MBL*䪍[vLjEK|!oo?=;tUhs2& ]-'d<ɒi8Ir6#&va!Ft:߼u(moy ގWZ-yRO W+̓8Ρx8h8^U1_n~潺})F+=<oaX4ݼb1:%D!|M=R~Â7.\=|}V9- `NbS)'2&d݆=Auo8}nk,][HѫxtSP_+'Kkk+M8<|sûۻp$q@ F I7w&'JOY(4M}1Rh}udo V3'SԪ}/W_}7?Ow>W_uxֳ^=y}}67qe{cnGrnf``!.}tNK_=3z|kwSINsUU+]]dszhu-Gu{tH&hvjkf4{mD2Hf4B㦛BU5\*W_om'?0nnebݚv vTFF"N2"e4* bNM6o G[M#ei;PtSZNhI|/Gd^[;:*Jh?6 m1C썯;x A!`U7}+167kki:}}2M'y:N( Α?v}ʽxߩqz=A bWtqD2t> 7. pWX_r$Y۟*hODZ;6qI+3Mc mqLRe$ ׊%',8|,bxjeɨAUk""sgv"?g^[;^? I{ɷ9N aIaNNfF4ENPVuUiҸx_PyvΫ08 u9TSǁq7J`B'fZcR 8Zri8'yw6G!A a/.‹z,#۟k?ъ1bFSL(/OF!{.=cZ(tkOGh{;e,.^{/@r[VZIg4&K ;br^_5.{ղ3{m?M躝g}MMeofT'feiDR N0;Hk!EimIϾhLA r$lٟπjtẽŏdu$5pb+SDzmƬi%> {f՟{=dM/H]tH:HB~Nk&7?L9)jU%Zj3jj9 +"E @jB-BuFz)$p N@,G5)妑>|C^z~.>x?~яccc߿~'>#}g>G}V}߽ίߺ~9q Ij3#olljڛjqD}˴LF\;;k:AJ&hyvM'I'IYj259{n51D }Lݑ^ePw4ӱPY"()'Hb$ ç aeKfTk9`$.p&!k 3SR8^쮄5-;"*C6~ΊǾrt<-0x ΄=mM03N"5f↑W8%&.l]/>Ym jt̤Y'R{ྲྀwk,j1(C s؆[B$ 3K)0/^! i#r ± ȌٽJj$` 1S%Jlh~.6.M7P95;?_|o7g("R ﹽe fBqHH-Xi)QR n\zV;g?5GFG=7ˬ|=_Ki"3<~`><`y<aNkazw}[E_v,LP)|m0-i J&b,o?y;n4B* $F+~>gOszT DLv|-*]-#gx_CfbW'#z U۪Kȴ֧-˃o0_Fu=,Z#vQa/[K$1g _hoTs@_isK 8u,{?UG?q:9% KID”R| 3HxV/mAV Oѫ19I!٧nRԐD$Nj2bۺsVw E xZbaid׿yOy?P ׺CcQrbX-تU뺚Iהg§^y`}[/Pyyc)w{ItGVsY 5(Ca1L>{s9 \li~u{k= Z LHw aO q_; [N>]mNݮ"ed^BIΗ}DgDPx84w6JH& H697 [uW"bZ'f>_9-Ik|2-:U_߶x۬1.n^O. G g}6v784&!;Ob@u=&ʉ$}gC#ؠh䜶wsnS6BRfv s aQ؛Fۖ]aߜs9v%P/ BQHl 0aNHF{#$ F0 `cmX4P AIBBUSxռzm{9g~̵Ͻ% FΨQۜnfo~Q?qe_6=&8_bf"qRT$D`f]ε*,c 7#|K a3WfԊntx|OZ;Ѱ|<]&;^eͬ%_c.Ib5 'hR&@w_r/'+;R.n^?[{.e% $Œ9\ @mD(* \ܡ wy`nF Hf!Z&oF!Lbi$iwSI x&*E< q՚s,gi\/#0Hurs/eF8'Sy~q"9G*>[SБsn~ge/^֝V ͭRls#*,:5U0h/z 37;~ԃȭ٭1O/"-^-dWMu %izFW/n9]8% R_Kgv=ndINR8tzDwV!jU@ɍ75|/WW{^7ؼgލV-J)nu5u23+6r:$ta}Wx旼a.'l]Js FP{v~*Fٴji \"j,rݍj܉A _H\Ϧ6iH( D pCa\Ra*IhsfKXIV5հ MN=҆P– 톚5U/Y%W3$^ r`& #E߹U&Fq# Yv!.9' H2S35 3SmEjl9z .I܊A &o 3KTuL4çBn 0Iic`PnjmHzDUnOF4rInMw_9:~۝w_]_N7ӣr{)!J YncuZ"r3u3RrU7pSi=O&?j04~Y#7"bIN09\#d0 M$Z# ̻YF,?d=$ [;:ӕΛ33VTr.OPj&,۝ItpEwz;??:טhF+TPs[rXysO]qSnM"XFU;/mۡ-uzTf͛hcV'>BEG]8A<Շ.Qߧ0$/ eR ol|? _[)}XyCP b_IP=bj,ܲ͆>?yȥC̷8TU߂RЬC\ 0;1O&1X̞01b*BFpqfdVX21%Fw37SIݎHU3ir $wYo6aY2A;If2VX$I"LM@LM$.Sf͌ rbuڐۗ;+?=y?qCwisO"6.Xe!jnjbkGnL/?3/RnΪf(;Av̳R72"K{kӑmTKjL\kb/< m灐MUxfdڅO]87wZZ+WwɉȭȐTbC K4:ZIh%E̻݅9. fnG2Φ /a=+ƆzSޠt:.I^nf#[aa~xl2$fI7`}}%KJw;mX^Z~ͪ&kj!gUI]7O?s\쯖8Z.t0 c˯EbR.~dLEl6)fw̩tb{{ S: lMl{qkH2Tp*H_s7ޞ,2]UZ-ri*}XS9q.HE'I$@1O滩߫/|啰ڽ[Cog>ҽؽԇ~g(5K1 M% TSj3cIO3&< reX@-?D7o{s2m;֌H@`FFgXة pv) o3VMIҺ`;i mrWU'&Tbq(EĘL%c5a9d$GNIcMDS5Bs>zag*+uLCrKpx uDN 9B2WÓ;mpCp01 )1Hm· [(@ dMfV8G3{bŘcۜDI (,Ltj*j\tCN#{ NRDjvY ݛ_&n X0$J̽!vd3G);غ $-U4L; k'YԪI܁8ӮzI~E՜x=M6 ե{\֍nDdnaLT'K`TQ]L+ȴ=L1r}r~0'+8+i}I0[RӐshO9*\R) ,k;Z>OHNRը_vrNH BI)DBAqo0L=; 3c"YhơB&jpKw%eak0.[_We7?~ߔ>I&JD eyn.B@3SJn`o^#0EpEbD,<˔iBUkU5䡛5' 3VY4,KTIB' cST*(3b%yUY+)\dT^ ߾קPYY;N&zbaxOu~oGT_*wϭ8HZpD?{S܄&ගuu ]ߧq*F@BT͍]̊cvx53È,аE@2ļ$gS :3 !ƒL3LaD,u$@ŌX[̧ ,8qὬZ_@ Onrϗ~>H۫S `v$B/y!kh3w~ʹQ˧n|7[ͯa10DvN,8͵jH{XsywX7g\ tZhw6ph&͏ҿw_:ow'j , Zyq336S5Ij5 OC?E$٦ͽ?2~^pioϞI>sa!vDZXb}|lݧjeYŋ}3/[l7puJDO$2@*’a 'eTbNo-i\[[ox`{߂ bL_Ls}Q}|O8 c%8q)I &6kLdO)wLVDrj|}/?g&[K cwү福4lLn}팲@.3YVk"Qwe,!G%VՂlZy^&U6ȕdfJ"nJJ0U,1HRC&2u:.j&b\xkh811C"`خh>b{c)LR݀`?0~G.毆bdabQzREOa&"UU3s0N׉:x%%* '?s 8GwVt德ÿ2|Ïɋ26/HM 'W5ef5XQ͋9\c;3`Gynsp=⟑8்$e/5 (5&G hlb)U7i1k+nNb>6t6{) OI[, acp \kIPe$IMC:g71ώpD w;I. @b\n?}  ͗ߎJbH"LE[4#Ff P7ĮM'| SsZ^/7]r9t"ٞ<&v&]*R~D\jIP-3úɓLS'2bDǦM5 qdaIiG" ]UUC: iJi4x;ziFXȒ jS|m499Y9,ir;:Yr2ܡw JP?0ZOuowu wɍ݃ժ*Y:"o&%q׳y7UXn4N.yUJj-DhFjX{sttZoXuOQL֤D`. >@8 `P50̔3Bd]\ 'gvļRK"Ӑ+-(eIcP"%~$87?9Z)9>C(_LS&h2q-T^ kK/}Cys}w4y>-b3=rb`}hKTku@өKÃ!`z:,9gK`O7v}SFwa'B<q;hMX6* P?_ogOL߂@zLMϭ݄hJ1YoـjjieϏv'qr6w+KQ=㷢ڜHqgSaŌ9ĐBTmUY؂b[2K P@JQJBjz{0X@ \dOVj۾E|?¦hF&oH/$ &B.€Hȉzw! c@$c)MH[$',qzB`$q&JF9HYSV4w&Kvt:q5y,-1B3,wwAY{N+6d_=̍bL]422w0A;“n"k-zp@}G]TƊ.w7Ű6r睭5N'&֢I 59[אj0 151sj7b|d21 M9 $lZA,@3\%.LpEQtF0k 9E.re Xu?~2<7 1`ii%bk;Сc/u[ Gߖ?ߞhvpo7•~f159@F$ƜL]L'Tm28W. t ဠc?~\0ݳk$bnV%>"bYMT |{Fb Ŝ9DΏ>3# cnFD 3O9FD]'td13a}V̄*=F( MH&%s럑V]ݘk]"[)I,g>1wU3s$wEVM%0$qݢM{7JqϤ$0է[u~wVa!wF!'!v3[gА0Wg'kzY+7˾9򍔇|_0( Ɔ?q~Խ!ʼnv#CRJdpwIT3]51TעOZ\Ʃ-:hɚi5H/LEAtynmL],j9:<>rf׽NRӕ9YQ#W+$dԌܙݢ&7Wls9Dom{ s͝chs khijfL(RU9h`҈A8>mE@!Aڐ-%@.gF$kglA6!@*NV1X-̪4]=Vs]>;ρ$m~:xI;TL.Hr/O2t@Bxj?pSr׭gLs'v')${ͅ84ڋ}[ˮ46FN}%ώÇ7?FuaFDd`Zc RB{6Z=ds" ؅?l5.Hty&H| M&d?tzf/o9ܴ) EyAuH"ί&ֶAP?Nyip"Njab>=О0{ b* s';zI!@408Fom77_uS gVc @0ӈOm(ØLELwjJ w iQuU;SJEYO_tyfxaGd˃]Gf)'5#-{<;qҪ+ssRӘ.~՗9nexHZ>ď-KS^{odPP"Iw^]i57bNXI4%V`k´ɭEu{̬T!Lښ1 #aqzr);hҚPXo2uYjk7jt6FhbJc)a*9<>'wu>R-vtfՈysk p jaM!IΤM9>?e4&*V59)Q&;esp9GX\X" ,%C%vy jm&E-G쩏$?9onٍkKul8 8<ﯠ 5oo/=2| PB @^ٵo~5~I׈ןʢD) 3 J$Fx$ Q^gpNd㮣~Ǟ]{XXOK<@Bf3_~lt"f.V[F IDAT&gC$IJR͈ub8>I ~N#/FC_/{,5'y"Pb\=?]`N./;1I2A90RO_pp ZX6,s9/<3_>w9Kl68]=˿袃2 gLUZ=p`NZA5WJȪu/\1miVrmUb}O'vWK5I])y07C%,I͘js1ijmyCM{OO."%۾R]ԁRGy'xB{OO)'JI"Pp\ 9bkф{HBI4"ndQ۔=_z%V $1ub6Uo_Z?i#94*L+'ս;K6弖ԦSE}_+I~w;26xȃ$̜l2lbՍ("[{wPoG_OaHS-'4XXTx\kW[}k t1^*NMH[@I2m1fAOp8 ]؄KZf{ KZ'$&5Ϊ_ Lw,e(h_}^y8? yppMxplrĪZMѻԣaU5KZpNZ( `>|{^tm\-P f~n^xTs[?g'Ś%l'$!a&}`'gɚ&Ŏ\ mf 8՜ 8+rw*rF,-u?7 s.|;/LQ5P ͐;Y KINëo/u"7$aLJmhO=*gH\دwa*Q7i,fڥY.%Z-NiA3ܱ7V G秥ҭᗡb??|;՜@˺&31+6P8z'ȭ@[pwW]:޴m~76$?xñLsZj^k%[Pj|5`FG^|p~~)|~iCZ'qr ~(-Pď,⵲0(;HDL-t3vQ1M9q)S"-q y7 { 5DfjIlq;$p #Aj'wJ9Rk .3TX̊`=Us-eNlN'nz⳺q]%w3wnur6Mbo*X{p${^o]Vp9X.2" )qJqU`'C3ܴ E@')[A̝ z̀<ٖK0t *ھ ǍFSu3),=vtS:L{ϭ%7-3$KNN$)\Hsu!  W4j!mPvKL#&w" +xN{g{{^A <×>|륲pbIͽ"BLFr vAͥJ''!W~Jx5u?nN)Ks:sJȬ>zP-@04y$ss[ EC c_yGކ!r Vz&]P6x£;dы=,00 _p=w,ywvyoo[žSf"OYGVLϓ'p}?}]nO כ;aj0A(=h3 Yc.؅$2rf??Ƌ@돯~a2eNIRbfZ2gzY.C03AE('^؃I.F9c`Bދ~0}_7yg Fs42nSYynD >SgʝXD/ݞ^$.{u=x !3QjTf1s5SS9K :'9}]9pXn{{i۫AȬW?}I)04DM˵*q͍B(2;\xhnDܠ]g)5;vx0-7b ba4a-i &YږXJ l9K-" Sv9s"5$a,l iX*8ˠZ._޽qFBfBu\osGNxs-URV2n}31 x^rNCerSQ)bnPU".5|*"L0 wH_;<=ZibP)C>uBjP5bR@\ьg8 bY멩D`BG-T d5y(@;qbÈq[>vE^6⠬Rf!mR{^ꓫч>- msklQQJ fd"%)0'2{{?P;vwFHhiMolg|)ԉ$fړ0̙x1 eh ~4WYdO, ETK v^g 1TYmş$^Oy_0N"̈-v==wm\/\Kl,20;܍`+ԬQ44N*"\f|ZWU-`Ǐ_b[O⦦]t\e~Af ޖZZa,r ˶B Q+Kݼ_ݝK}Ml~f wKAf3urf7X 5isשQBJ2'.FN/2w5 @dj8*7~5m411wiX%uZvUup SQ3I 5@ '5K1"f gf-qKI' dy)%(D}N#`hv9%7cDӤԥ4֒( (nnDș'$uqNI7opАy:f*SӸG&C~WIҥrvwr6M!TEeٺ2 T4N.ܠPB%BV̓"7ԫZ<_y-y URTU?XMaQ a|94 IXgQ@Z(5WEJ40>~S#/<dz+ M]=p#=tꋄ!5#vW3@N$%"9$̕ ް#oXJ*_x'Lw.J7GQcawmL ,),bLCDV KK@BZ-,!;CȓǏۿ/-//w-t'3r͙fEhlk(x$CDa`pET/yg!<=eW3A ND"Y`6 _siB̞GG՛ڒeiBNs׸{DWde$()jJ$&H$$$$F Մ $T(JJRVI$޽^k} ֶQRw;l7k}orrվ8g7wϻ/e]m*N hS(DF¥c}2o Jz ,@!a$fcn'V8>a_8|wt(T6 u[8к;Xգ1eL9DX!zAsmQU|??㫝qv[!\ʿU뾰G2wR@pPz]ŒPjZ\\U@LssHC2 EȒ}|R\pD7n*2F/*@)3@81T$ex(p=,yS-5;^ARy7RJ8fO;P[ÇnjpyuA٦i7?˼̧ETIJX2;S-7™$Bf \P;kݜk)Bn"MUòQ {򿰺ۆE8Ha x9 ܳf#rrRJi3&pȢd-T8B(Dw淋7~0a0D@9%05+n\QLL UMU17.e;e!/ai:LBCF϶5:sGdePQ.,ID-,q&905RE9q4W`/>}%F8Q*mY"ǁlu!*ǺkѶZLNL\玔{hAz\"hI|Z*V%Js:TWeRU#FM0P1i'$`sg6JMED!bqoUs CX y-i9y7mkQ7x Y#f TRXS:_DBCK m>=]p؍L!n5D@ʾ3+XWAe|JfUh&qip~<񋛇{+30f0~_AUjIH+N/)so>k#"o?Z3IE#; $ٳ'H: L9\8=e)q72Ť˴=+|f #sf[;(AJA*{h~o޹#Nh:TTDIAd KG( vJGűH10*aWvLAi&)' m${QpиtYjԝbT{wC["0H+Xyoo8AEf( $yJ ؄ DM}SM/0i ,^ԀgRbKE"P)B\*F2S-*g4qSK'1E= ^2<̴.^aUUk)CuYΧibXxe^X*輶a('r}}n7x`p |24_(xuʪ9ȿFӥh-iuUA Hqs*(ixyRd.Ze%sI1k)Gc@'X,]4B7HI\b.i& < f.5b%p-R!N1 $< r$]rA:1f4;{CEZnDFނ"䭷:%hΝy7w@\#wSՄY\i%@=`}YߞA/vνQgw%["5}Wan b'0{X@~tv0B~_79M9+GPDP@U"+HRb 7W k>RTr99=1al({<;CUXeyQ #0UH8ZRs~'p)H&Q\aՒOX5UMcˋ&۫֒L{/TWcAH|p3ϖQ{5%G!>*#^`Ny+\{ ֲ$"-BD\zq"?~16ZGR2=2!H5ޜGE9%!(Ak"< r32[ hd݊h-,*$ZQX0 L%Zqs}e0JVz'&aNV8f8|fejKYzaY3(+HErEh̴-B9Z5߫0ת, 3q߽w3eėrR Hr#Q=RȺ)~c(EU_{sQHIyR^p;@ Ef?:gSKAUdq:LFpCD"m-7zvL?OăIPH#?mR8p8$"sU*fӄ"8?8=]%W)%HJa0 ݇9ٖ2.6e2Pe(^'x(R0p CϽmf*Y9խqdf&vft^ItƏ;}NN)%S PiQ(J WsaJa){7rf@9,,H0 [!Siwvf0QVs8iO K6E9Y#<3#HC-*}\x-rpU4@f.12! Bee[.EPx alR'eY pPH-+Ql [W:-˹ֺ0f؏+ ;ёk .|(S!^/k;y/Ni0G(lVw ϋ%MDPaJ)NPTl ȋSҎD (  }1d0\U9 84VN[D3zd T+DUt΄6nv] Ij2^"D"TJ\!ZG[W2sk-qDŽR@g-{7r?EyЋPUR  Ph+p6BD\0Z 0:Bh6;5"/Cvu*ޡ)L c& U6yw/E;]Ƹջ}q7~L90!(!?B 21*Za(=9I97ּ%90{YP6Mh 0ϋpZi1I.K~+$"*Zof\T[CZyPO"A֬hw.6O_7z;0RW f%0Ol-%6<4TȚ u>3"3vbhND:V mѹc- $v8{zs ϥIۜ pHE= 21RץkàAjxqxyu|9>%pKMHDU-BE8NyO;R0 Ϊb )fT|ݻ[is qwɊ5UD_-D*%F3K-L!¹t 0h-|͈VeԂd'(3o"9m `2yJP 7rD \k),HK k`DTW( 7ew@AyɕRHkф߉}0B(V(iKXđ`n:95̙UJ Vð+5 I5=2H9{@RwՒ" .KКJSGHFHJ1H̚f)b86=QP,L͖qXgRMyXۣjw<סL 2'G&$#W=.˺J!i\lfu&kr[330.D $5 K)Z#2 6UrI^j*z-_GZ@)Rxj$` sRT-VLF`8*` dvD ̑dyL̜X;Ha u6'+$9zH.1xiT~G"$E EaanJ˥rDjI'D&Wg&U-` 1 W0dѐ ErԄmQA"Ǟpa"VԃS3w +EA3 %!te%qDX#τli[]d7 E.Ik"*,`f3'"UD0,2^"k"B]"A=l(\U9DmOZ3RZs4 `7Qe`ye*ZET<֥INk/.#Z#r:?3Ee%1" v= | ARyr/ҬD!:I]e/%?qނ(ra;A^у MHа 4D4ҝydo@ԣTeM~%i*-J'9OD%KB(؟Clz^Em ;k]D݉HU]On/:"D4uR(p]O7Rd%В DlӶ\EYK+Dx3!Gi%) luE 3k8'ӕYrjE)ZeP YMjE@R0DAHLYfWE_{+$W)OFWW斧ذ:gXNɋvw#@9do{eL}gjѢJȱz?=$2e"0- &ب V kIuZ( z Rgv>.pN"JDD66KXR_T́(%#Z̑9'd_xI "fIHj[rDPKOqyRs7w1l&,93%Hg$jyp" sݓ2 I3B\L]0BHouwDkT yĨ5a^m2yQňUj3k{:̰ivOwaxjeY R @v%!c#VyKϢ)TX)bnȟz]/nh1-̱=AƔMKZ)YsDD8qsp]se& ͂ND SeK)`ο4YAz13n,mג2OHzڋ}8Mnm*cw",Y4n} M=Φ!3ΡkB)US@-ZJ@=$0qQ-2*3EQAEe32>u7|"yaJHXU2$8AhBIE*٫]%"BaR3`t^4rvL abgX,}cۍ‰tZj D0k*r^|elY!{MLL(^F!l};yw-?gDh)wSgR!$-"$٣lvsk.U^[ LAHKxSuI]I.Gt|,0Y,t d]@0{FWl9xS$T|ּ&D1 @,Q9B[KdلYR"U DRe^Z.U΋kuYͩs[%awXZ4#kA´FLf+A Ģekv[>f"BYDE6ikD9s$@i0M6-h-QkqG@"2ϽNBw?..jWQ=3Oh t8³-5(gZ- %b趛HGLJ,QL[IʛEeW"q˗#[ w>ln=2Rr|33 (W햩]ugH(@!Rd+¹3lJ:Jf:oU.*X02F-ެmה0qxT6 ٨eH*Ȑ o0V.dXRT <) rJQ-u/H N,^R,y"b-t- Bj-B+"_t^} Dj)Ei+RTR tFmf<"%"+Vlkܡ 6k@6!2!rcεy<B9v3DU;A楐S?JUQ6K7_Wc)!fE\RҧNyVIץCm ppk$2DLA&SH*#66h;]`:z38@y)g(eEI%;˚pzbͼE_[E–h+ ky&q:4Cn<\%&u5j-)E/ oyHܓ)E$[<(ݸãZ k{[ܼwEGNd~x D2אWWbhA"΋1)^,zJVy;YE& h_iɥu9h[Y~y"ǩ&ܼ$m'J.saMXX4"Y8"\y5kUk\DxYJI [(Z7z$ n^Og^X:SY榧Y3w.&֢ IJ4`^eY"Jfͽֺ,k*yK58 mUskk%a-YΆT5hCmoCZM IDAT0<45=BL$-Bj^UEjg+ aW&* 6kdeYܲJ@B$ǿ{\83-N ǩ5>x1 k+Z%֪u ,ND+)[c֓(zvRh˲2)|Z 2N;ҬGxY#,'lmV.swckg3} ng<kZE'&FÀooW_}߾ݼ~r-T"X.ǫo??>}nW?:ɸ{𱒔a|!n_~˫š8݇}xsq|5|z8\[u.v#(VLopuj~zF4[f0yYڲRj[CG-!~<|r~~~2MqwuEN+q݄%x7[ow0&N^on=xz<ʏ?ޏ=t%f<-V?^/_Zߜ~][)ezGwg~y>װ{q:xx~q~xWӟ/2S8ϱ>{6 4>=~qno>̞7_'pBe7~{a*tjo^Y>WUD[[s;=ܫq~Rݻ*xN4>>_]khxrzLJW/k[ϧ),\_0~|n!׻wo_}Njc&:p~~WN~| >{pva:/^]֧|X8.?~m}w1VۃN( w~W7?͗po#p=/|7Loݏ?~VIno}g=w?ٿ~o}Z@Uz4E,?op8Dݴ}}~z.C 4ND1M% D{|g޿}x|z>]o~Yyxw~:=~xqoXOw߼wwt??>?_LROoO÷_wjcՔ| _݈v^Nm:Lm]Upm!b??fD 0/y]\:b?T>|<`4]_* B!C-Exڼ.&p1q8Nϳ^q ~vG {8ixjx:7o'.2-V9e9UuZ|. 6Q7G.nWha>C'8w2m ,ԄⲰ4RB..7k4?iT=1v8ד"v WׯՁЮ_ ~>oh73^\z.Ym͛ix=\ POi:Cݕ<秡tk(0 q٧t=?}}:? _|zca=>y}XtZy\\Z?L7rP=yu9anoyeOvUĮr?<*;l]0L}vi2Q/qYߏwCȧov5ouTv;%Jq}axx"z<^~ F?9AfՅC⟼7ü.;=(2\ɓCU0C+[t~*4S[q8Lz'ُǛjr7"ˋ\qzZB޿ώww@//~{p=?Nfq狲|y37v˲_GZo_펗r&wͫ}n.wWף;uxp_;];\X ;s-Õ:+dqd^ˣގOͫ%Se&|0unŕV?yuQ|y9-pգBv]^_W2O'y\[<=/Wo=\̧ed}^ZOi=-VOOm<= 0@fledjL֐h=,.I4: 6ϛ^ͬ(i:_ <"IENDB`fdroidserver-1.0.9/tests/repo/org.videolan.vlc/en-US/sevenInchScreenshots/screenshot6.png0000664000175000017500000043210313243530567031464 0ustar hanshans00000000000000PNG  IHDR6WsBITO IDATxyE?oUwIBHfaQ@E2̣faAf}%F !MrR?s2 繐stWUWW}V5@9rxA@=ȑ#G?!E`fu]]]aZk5ȑ#ǟ$ַO_lRjll쮻cN8ᄍ7ٳgٲeK.25lk6`/ܽ{vpppƍwu|_lnRYfʕ+͛*"QU(x&/o~vew\.o྾/}{{I'3>1(G9r̊C=V?8ꨣJR\ظqGy$}+Vl޼]TOӏ=e]MeժUgFq뭷j5.\X,?o}[7p9㷾'pB@9ȑ#3w=q}ѫW^t 7|K/mjժ].C{W^׿lٲ+bÆ 78vto ছnw_W愞#GpϞ]w]Z;oݻw?_#kڵp׺V\Y׷lNIo\zzz#QSry;qW^T*y;w־u;ㆆ/_H?OEdҥr䄞#G?/-^>"X-_Rp^&&&V^=>>^Vƚip ===7x~ׯ]X,~~eٟwW^s5coh/B9r*R*|Wn$1Tkm7|V`sȑk;! ~z9r@k9rAN9rAN9rȑ#G9rȑ#G9rȑ#G9rȑ#G9rȑ#G9rȑ#G9rȑ#G9rȑ#G9rȑ#G9rȑ#G[0WWJYkGFFUozӛ1u’%K[k^իWoݺu?YO)/G_\+a?-^1z뭛7ov__'tmftN;+V(1###_vڱdɒZ,9眓$Rj۶m]]]"RV?SFFF~s;1Ƭ^Ν$mN;쳵Dm۶[n38裟x9ȷ}aMoz3n;s?'_!.kq]vپN{Ǿ`ۿ[O.\oFD"f͚;NDFFFfnݺ 6z===IG)vZćW4\r%o~ED3|ɇz;2gΜ:c={r!/2-SO姞zk_ڥK"iW>묳.:/޹s+_}r<xVp뭷z뭯~z'?b "ꪫ.ґ{/}{Gʕ+?-Z( ÎeO^ϝRn={֮]C]~哓gy5\swi|T*۷oG_W ޽{կs97te]Ν;͛O|ׯ?s*믺*ð^xwyI'Oc>c7W}{ڵk>#< .+>`D?e˖k?э7x7Ο?ݺuvXw~Iq|SN}S?Ac̿ۿmذaݺu֭;nF+-[y޻~Dh4>}]dIGG|p$_~>x38cܹ^z]`۶mg/_~'^y啮_W7? _vip5,X K.7_W-wyٲewޥ|M7}_\nݗ}{G3dzB!Ù'tҪU暁m{.Rtw{r+_W_}'*|/˿o=܅ "7==c?Ͽ_p^zg}.\>099r Oԧ>qgFQ|栃Zbw}yŋAb ?|w|_>bŊjphS(PJ~`…r "߰aG]*z{{<̫=kfdd3׿'Y9J)tww_uU^{~.xy=ٸq+1U#8o|c__UW]5>>~7o~[䧢(bowunٲ_bEWv<~'Zke9Q*cݱ{ZA4 N.Yλ b bIرǃ hײ$xy38P(N8?qVs&IBD??7|?N8y.[nӟhoK~c[ome˖޽{]aϟ>;]+GDDt^xYge…DN( DxGV*oq׭K 5k/}yQGYku]wˉ3~ W_Nڕ Wy'|VzmZk J摥KNNN>裝GgϞ˿z;Q*]?O}}}7nLKYk׮}^~˗>z[c9y#ro?3կo}͚o~k_{_'t=hhhh{VnٸqzYTw,YX,{RڳgϮ]FFFժST&!n߾}ttthhhT*z~)Jgxr<00 "[n[o^bX.cm7͛700֭;S? a$||||ll=y)""A寸袋򖷬^o}wE)ڟ/7 ]w]wl{99Ea#o۶裏qvڴiS[l衇صkף>:00000e˖;wFQ~?CCCs>vqǕ}sCCC۷o߾}qƍJ+W{Gk}a5twoݺ?;gΜe˖}ݼy5khѢb{87mڴy|pӦMQmذapp𨣎/޽{7l0>>C=m۶U{ pf$Iu;vDQÏ͛7m444Cmp_|LXo~sGye766ʓ$ 7ܰdɒuw}[l9xo|;w\fMwlZrYgugy]]]7nܶm֭[]ƘcǎիW+w>cw=99#0-[6mڴs RZ)JկvOz!f^reGGGwwg9ȑOgq׾?.ȟ.;9rxA`.J/G9rȑ#G9rȑ#G9rȑ#G9rȑ#G9rȑ#G9rȑ# _/hnut x EU3ßәZ1(ymgx'Dz)bam==CZl3xLϸH^î,cZ$u`_[I8';e{~F-L{d^_{xyӢM?3ul*\[1Y͑IzZ-wYȊϩgS<>O=r¬x~ءOY=2v]j7M} d\dz|;P!9(<18cpL;;"V) S IDbٶXi= -i gsgl%a8(f-"pYJV8H$!B@ p)% )#aE#PFw 1a8R"H%$:H@IDHHDmT-J{miV׫a-$Rav!,h$q QR{~$3<, `5Sw"VA=\*+"=_{J( @Ψ` 57-f M=gFkS42$3>qr 2㜙 χLmb`J=*Km%:$U쁢 `FX|/{&IlM\ RagwufM^=) /7gGG'ŀR`Ӧ>DHTҞwwVʥ7k9"WbQ`9 #d`Je ѠtpF f7/iP`2LSϓVE2 IDATQSY־v/:'c HDk%1eBuF {kP/ if "A7(B(E]2@V*I&RDȝ̖luvRA"GJ)&) DԀHRlC I:g֘$}Cљ. 7́1K+͛mWz/)t:,}Ђ^{vLp_"soYjIH,KXAMQ@k"I-T.0 É ύJEaŻG%:po]#ŽIoo(߳yŠ_ OֈYO Rl|HA,&ܞV8S:`j111YlZø&5qbDiLPDHik0!T6BܒyڅMJwa_"y~Q(yDAiOG&&AnaNUV3E w(VW1&A&CNDORZi[dNXtqrɠ؄@)<$ ( Bd,bI1S6jYE[/2c90 U 0nv^ InI'3d@TC@ab%*bC1+dډX CVט2"ZB&$w-)zj- OAҰ ,8Bo~eK#Cqmbr|\)PH1؎Jyr9aq@91A NY(k5ĞcR("RXpiww;m1H~*审;w_Padb@/~ݻ?V&Im(ZQ4qtbڨwwudu:wBDkdurZGq {fY0;%%F@t|[4/Xwn%*rx!VZ`D~V$AWn2z"nO4#%'ĀQ Xh͈.*Z#ZsBR .(s>XaN"IuESE݌y*'IOHۺU 4Oy>A;iЋ mȇX&TQh 66̞<#liokꆭ0 lFOyLO]fZ +?HfV̚5'".O9@Zb9K'%(ъ_MIXiIj,2[c (g[kE\ 30caY؇N{ *qHM)DJ 4|I;:Z֜'31"FTKL-Nq ~iDȾzNDAN%f9s Ocu*%K=+j\ZPLAT(J[W|"R_aP,PV .x"MZ<`0rWHQOHALٻљbprŅmC{FI Jdl#+'_0 ?&k` !aN ZTsa (َ8RayNAjHhAA!|Y+}۾ 5]Ow+ DaN]whszIl'Z2$JR)!PQŨtZ1..Lo{τM!lvh{ f^B@snfȺlIeBZNBT+,]dxbd}-cl@LNV%NbD|_qGI D~{S&$iC$Cf6x ҚT]VnBc z]ꉣp'vCݦ}`uܾZ9y~T|OZ|/]QYB'OܱS5bXЦ;vUFRJbi!;TRBw0*Ւ_YZk KX@y}.T*JbP  IO۷-]>Nv QQd&$#ЭltA4E\bɭo""dڴk.iF4vD,%[iJ0Aqt x }=dtaaM6i"CKP E%Ynb(7X^I!`E HBQb 0cpVt~2,NW'Sy.kx?`ZfӻZTlV=4ے }?;.l4~wC۞\v+Wh<$2a4FjTǠ: Q b 6e8㴹vm׊#dAR :]pH)*EF /&q8;찱ñuc $s{o{t=jo1o^5/>]Wbb8nJ 0H2f’8R;mѾV\;G9ݚHD)Qnw.&qВ%ӁxU(.Z&̘n+#‚d}OZ)MCQ)BTN%Aa"("b\$C8FܭrcWb)r>9W̅0P2Ch9]M>-ψHJ)XMaڧ2)%К)1Xk,28S?$}/"2<5ݙݻw_HQM eЄ0@ A/ll0DBR,ؖ. y_ݝytyTUf?dVݧgg^JT1}NUfUVVd/"~aMӜM~C'''^_Nl_m, GhW?}Q!dz;qTx_ UU9R. bD Pi LMZÊWݧ 1BHZX4x66u]7u!xcc}0Lgg&!Dxm4.kxa=?7޿w ^1jQѨr-H(բZ y2]]Wϝ9׺LHN@ s`,(}uΥ`}T "K-%M%1`_B!#.%$ Qwnt I IDAT2 Mb-BqIbC|4p1x۽^O\Oe e >JI.w>SÓϖ1:a[ 8 f2gM HH SDI1!w m$RS)Y03ES5K¼MۘH& @!q!0Yi/Uylg5ʹ[A,A3- \nc!Ͻ 5z+ɶu.kYl$O5-ѓÝW=V /=sT] mɥl=q\V݂a3WE7˿oW#ƪ"\`oov ٹAXm g$ ʲnP`B s(4Χڦir (_ :OWnm9[g+W?;<82U'zއۿy;7?7_ჿ:sgr,BljrM[ӶmB~%33&*"-eSI4Х;QJD6."EQDr)$2P3і/?5U5*aYBH}85$ϒ5̔uZ@f9i%1X&ѳ}6MӶm۶fhۀN̫HUcTxfҹ@g;*R+_Eu.~si_K$U]lBSHi4 f&;aNqI(gZc}Ps"#/00k|^VP+J;f!&e*9 >S^?FdT&}"8[<_epy _`5&o En^/ZsNQy**MWkHcGMSSFiuYmYf0EcEՙY@Ypf_i/<82^ZtGiu 5o{r5Nu4)[NM;ҺbHϻs^IX NG['+˗7jj8.+cr enLS\S4~4cd]Y)^%'D#`r} {3bB1"Id5F)1IhU#u6+u-O!miJυ-ڙct0{q*)F$W\舝9ᓇB]nt6e  I`KBM B:x1s)1y."⻨be)t"@洅sѳ[<4Ȉ :*84ԂcLcd(g]%D;z^a5P HX:[= k-M3C8d̢B۶1,;=v6VɗO!zmy{chh .fIui i!+_VNDzL7h_ghOfn|cc??Je(R$DG@&@ &"(hv:R:RaGG JcV&AG+^Ï۽^k@̗6{6cH^<rp[7nWo_tmtk t19 d9Q;'Od0rP:3'`"V]ٿzx8e m!  | &E$b~糋:fygҨ}U1~G*l\҆89e3|lU։j&3?D823#!IȮzVy7#[ŽX銙1BP&((D5Jz ֹEWms>2N?KtHҔ|ix[?+aus`t"BN?sZCOyw^}ݻkSX6P 5]$^# W ˒,*BNZL<϶A)<ȧP^',"LgmRWy8J7_K?~W֊&ͪ=|hcB&]U=6@7~Y3_ ˠ"vz{].j;gc̈ _~c<Ű*XL/S ["sl :NJaYj 3q{c$4CW# NVhf )")V;^3eTm&m+t;-r?V?-JecǞ}N}g+Hu,`+Ċ{7?>u.7󟠃GIW_?[_{Om\ã?j'S8AQ/ bd"T M4m]1jz>8sLH-Dy[@cD\l!W$f!rFO[n b2t-nwllp-rt L6=>?|<:9K}gJ4l쪯lO=sgW`PVaUbƤ+J Q"/)=o  m$$BքT81$1\.o$t<f)1%yeʑ0$UC'63[COYb'ati|L}'K32p<%bvb%7`ĆjG2K'w(w_`g~WԨܴ6SQ8S%yD,¢LuDBgMp]}%e9Tc:#4݂QFnæN l@猞[]Nɚ*4/m';iIW\-iT ,=3sΙW_|y;'$,EȓB dͨG{Z3 83!,.(*`M!)1٢ɒ=4AE6K%9cB;?:w=rV@O/⢝9gZ/־Hv-䢮Mյ#-}1QW/YMARΎCw⣣[ ׷vDCw?zC8)fTm!3"G!MHр],l,t>jĤ9ǎLm]d~Λ7n,j: ._?A'uD a o>K>zt_ڗ{嶙@S]G& `q)H;qȔ5u*3kDifd EG,ƨ1ZTfv9yk\LU/e1TeYpVH 1szRG sHK~JJ^DH!jL.1eYtzuo"O˵vo%+/lIvqy,sc]<2o2lvY=`}lE0+`.~]1P}~{w&4}񛯼z>.Z Œj CXAy 8F-0ۙsU\.0X,FJ1zĶ!RhS3nW3Q˗/iZWb m '˿W^6|ruk U!0ϘO0=2)o#Cj #מB:SwvrsmT,ڪzaF%/ VhL &)j/Y)u  Td;8>%.j@'55=23Kj\>8RQȻuuη:!;{O,;fQW9SB2^93H9; ml5/E8.X챫N Z)ғS -}w p' 1ϷOl˓~q,$'uF g=<7/omo=sO^1Bc^@"9oGbD1Fl6Րm+S"=,UH)o²ECmW򼳷OET0dkscH)T&u;6'}ڃGFؽ~uA *[*(uFS(Ĩ(E(9f9q(jP5Eἴ6wwDS01 F5Nŋskei$Vtz~n-'I`.K@Ӕ gV%f$BC_ٖ֙E)}ݧˇ}z<+ E1\ rΉ40/+X*BH3)A@|>vE"@W.V$ U"< _z%G''`p2u5FИ F E(k1lmo]{{ [ 0TV1UuDB16Mt("I"Q:L Su5,I9BdЅ'_WKDV^U9YӉ%JKuFr։| K8j`E^|wxs$H3o-yҒ\KƑuu@2 FlYX?LH!D +t*`pJθ0aYd`!s-=mP>yZ%L{%}mǬs4Ĵ&}LI0Jr\3Z&Ls,DL=Cf,ڂ!5&\0[-W>䵷yt2./_ޏ~"%m%,KIAi6wNw{T#)(+G>ݽwoz|U ̌ȉ`ȷ!w^\цg>ҳ?ĵU9/mümm{gٿ>Q47tňerέ/llm=[齻o_WW߅ "ް$r,4=#&5WNJJw7VUS0¥w9 4eeJV#Msӆټu[CA fQAڂ%;o'YS GByUpFo1ERWS!"(c`vG9\:NbKf8/nI&)غx,j Rt|Χ([`LLd~" P#"JsY 31ZS/){H 32KD4uv&bTL&)zG،,ZL?Yz,K7j,v̋>f S=B?94ES<݂']8hb ɘKI/M0a)enBJ_wF&Ŕe$fՊ?d3IŹ(!Քj/_٘M}_|Kޭ÷'LJf s`~`Zha<2pЮ}!&r08냪)F<g]Z3O&SfRDi0 իO /Gb6Lޘ+W\ylv0&qP.K39z[߹uw/+| - 28Y>`a)@6d!*ZѤ+ٚNqcVl,LUDFj4i=u]71Ƣ\(ؑ`LB$?8KoEqT%锖bv5<SO' xz]QeXǞqBQ+kqyrY~AJ-@w=u"i!ŏ],n=>_Y8vLĉs".Rk=]c8_ Ͽ])moMP}\Ob, #ͪM*S_dK ĠO]߿2Ϳ޹uW_a5_T ;99!4kgjlM1k*'Ê=vA5^ݏoL&Na-rKV KLVf)ej۶k@!\!9NՂ#ym]GbJ.q5wx`FõjX?_hs4ѱ'0bi [wr&hZD31VTʲ(;*|ቋ(@):MstSNe:tBEAFbKLqBbJId„Nm]plՇvjy@*H(D)jycH9cĜ9]Vfvag/`=:ɶVhIJG1udybq9ΘZRi+LUG}&0T\ɟXX]`λWn̆k8P^]ܖQ^r_a*JKebL ]a^@-'!6)(]$Ȟ ̖l<|[_;w|_+|w~ݞO=MBsb8O H5ԳB UHNY=ӄ/m'.#mPo'h pN;bv#M'1DCNi<n|p<5 IDAT ׷܀CfdTm JrɋJ~[[{xΥ̓܉ mh%$_zj5df$G9F!3h( jTtMDfλĢ1pBP^$M'd24Ǽqԕܑh.Þg! c*SVF8bisZzI,Z{ 2ysa_|FMt 狄  qFVX5RB%:Z3(΁"vgJ%@Lif8]7);S}\fCTwBL=Q%]=I$BC[ I3ғs\ڇ`VXݯ,zTENUhήvfk[V;*[)v2K(dnc; !XwUYȖrAm'8rRVa43 8Іqi[𗛶EɥkѾkS ! )tüF5'@`dE˲rJüq ЈPe3R25Lg DΌ]' 8kb3e@c ҨM&hUbmcs^{ :99hD[NE{U $Dmw>k,, e w|ݽ+ROPXZ$Uɔlڶ͒AY lhZBazqL\hhffF4#"fu=h&ē,jfV541Nx:6`4Wd2~4&diEjǜ=tuhט삟S0OfJ?!ifɴDۓFOA̅+r= ջK:= m 2l{0ZN+BV 4NPNg/ % zFE' 0/">u|VSݍ>!ɞr7n кEEt[Ys.)P׵jة"T*CY9[US+96=Eo}h"Јƭ:QrŝYsRМ̢2Dh) >哨Q@"%=Ruם]+Lu]s+FYpMكVbPPb]̥YDDuӘ&vzP*n=JafGvt w[аV:҂)J;t.d֢8|l6M kRk,a* qv \035"tBYAዪД]H6<Ux?{GUzxhү}p׿`!{k[09K (đAh6m66F UI!DIQ!ADD"ڕf;ifcgiUwE1lV׍"f'lk}zkd((ES Izi%۳O]^ܺ{iEdEDuG"=3*H)`f!Yb݊Q d&53%OV&EqSԺ-"F`-_\mզE uK-|bjnI]ң D'9Ηe1,[F~@sdX}m~RM=Os͒{ڶ+NCbwSl Ő 0ͪGf̸maEu:Lɓ-B`K/g׀s j X8|ttaQ 77+?_c4U"A3a&.b<43mlEJ_ ^PEAg550S2 4甥pNDpm4~}w<mm̃Wm?|t/09^x/~Yt4F[t;. /{=kg_֥{3/< p"'v^ibN ;{"yvi_5LՒ;WX iP^lfl69rmT][,4~JӰ6ZWG5Dւq-WxfX'h}=[tC4S|Pω8:J4'dG? >z1_/ov'|X/`r"JRsyXV- Lոm q[6LI3m?,p _y<]pkg3;_ĶƢK£krevwUE:wgw$9,A{n{N%9/n6ҧ̥i:'+EÇ>|wvyz2ytp̼N!/ 7L&b,ʊꗥLDHAstRӹdC!õj<2*p8 xoX:_hszG#䄎6[7v/67߻A8ƨo+Z_DEYs4^4OJN樺0m!o, 4M*s{cDsMJq2@Ӫ}47'X_؄ZY>d+D'hퟠ-FMx/ڗH@R59v5A@PĀAt~ABsNdYQTH h0y/jbTk.h1ZY(.mhC!&FRm5QeFfVUU]׉#Vld,}Eygm%tGRB\;G֒SeIfK(Bɶ(C-Ů\b=χK]~NCAH>DZ./X<n/|D:QpW _nÓT=9yAk SD:c1u7I`dK,y&mS0 ^8 !V66*LB&dٹV~o___Q1o_{{ň6/ovt4)\BpPDңf㇈J'ޕUXlv8DB PLd2RAD)4S׿X ۾deY7.ᣇ;k#":ܹw;o|~Rտ~n?xc>*֖eak}}G XU54*'&YQ `8:Kl$LXhYEQ8)}T5i' Y]ʪ֙2fc_QM 3f:3K A~_TC?y"R8nPNq+*XD_Eɍߍe*ÚT',H$6@}|.Y_S:4ED&"3 wsqNz $S>;I i3) pz ?7ܑQ,̃S9ߓFS5CϑmIITV`cccWnu? tbgUHyoOa$z~P)ZE:*9L[,BͭWjǣxR Why]߼oGK3aG|/)h8<~TUx:9?r›;WN:>>>9~xmچt46F.>|,Nې- :Y͕(׈,L s.fO2NRQ811ȋzIkD4 D,Z!PQ)UcҘ{ӭEYt0 lbȂ5`122j?9V' :/-Xƽ[SNIO7h2ѩ)[*]`F[Y7 ƹa%_^O/>i`9|)u;_.ř“lq%muK9虢 G6Q+o~xZ,(hTkI~v! 4Oykln_?f X+9n8|/VȣAV `Bl~fu,ޠdR@/E+8l5d2''߿^o_/WC?qz1ۛΎ|X䕍Quٳ+|"jt, ACsPMd$QbF2򥔷W8 !J> !dRmZD+WteZ @dDu]ybdHM]qTLf`gix#LX)6ϵ B VmM%:hd%&HQC Μ2qj4lF9qyD){){3Db;C h$K~XKjF|e=1(*de.9/O{Z /uܛ]E>u;(=`GN~o鄷=n~%]G.;? 0|.fjOSS0 PϜH԰7ڼvTbдmqP ֘sv]4, 3ea,%Jп[gF鶝>~IٶSsα٠Xf5q LD(ڶ-5Se&Ǣ2Lҹ-jt 9aKoKL\eY:( f\i{X[ @(#$YFnԩS>㐰eD"i%cLwͯkK \FDI@fus]ih7 Lz0bv&ePڕ0(c76vMoZ@0b#h`$hNשKx@FӨM=pmR"Gqdd?ԟHB0BhWM&`:Uqda'>hHն^9tx-q7x6"N^n'^[q @"sH PX>G='CƎNa6 1XHs`-:d0*"J1bN1 V!aLT;"D$ǎ<!u1US &|dTV`bXtέ hw$*#^}mo?9rZ0.;ohtރ9>u.-/-'6PϬ,Y2ܙe8<cR#-m!` Nfk?Ld+6.h !J aAV< 0bjf}`jwuS Fn?I" 'EF!$=k3[ 1Jj2F̩T`ŀ<Rm'6PhFB)R,R/ֹ xbhA9&kDCBRBvY*3K-!#:BVgD  +`Rn#1VU:yK@#@TUD# FP@ l5 N1 &W-ʅN P%iNi,&6#lBzAq+-7|70.UAIX1 O)mHd4!Ҽ} X쏫DCM\V55=}t S]00g~`8b@jj"()HS( Q<â\yʸ<Zٝ;wʲ@$3rx 7kaκ? z dԙזVc~<W `0ٽݽ`T˯K>;szy!2ޙLoox>Ź_xKx]=X0ED+N=}K330Pj\nsy}Q~J!ѧHM ̬"SQ91+v-dUPCMB0S|B0{\3s+WVq)!DkإD[[ Ko~" IrBW^?On\J3,{6q}p;oݿ~7h$"U(vD NK(8ȝ$ebݝ(dI\icOtiTaac~].o/w\xU~`ow~qqaRe¤ 1abEh`!`ya6N`NʲS6bR MCB#)`ANq)(8Z)(XmYYd)8IA.kjƈ7!F$&jlF߼^F!$Kflf"M'M$GHi Irxb-I>hLIM&K= Ly";NLMT!hoӱMr'%L70 Q SJ`[XaO5Z? 4y1}E0e& 3_ˀۻ7ߝb7VB`j`*RxT6tWx8(C3rѐ|¤j<8FF,w.˲,N1@ ®(I`XU*U_=$޺w1EED,A=$Dzp}H&*SpZc)sytu {Fs8'm\x. 5-פWVN|6*!DU DypMGJBj6.I(^dX㾪VR=M`i]1;vg#vss+ՠDwy;֝==@# >}f8έ[EB(PTA*E a,P J&K # K"rڸuYB&0 OM=f]ҤZ6Wc4bS5uy5TAPREhhɺ(Cj=Rkg.qWxnd=`uel\TՐ̐껨$ F T5E3={  ЏcvFehlTӐ۴M  u*Nz[77 QrlhFszl6ae=ftqĕD 2@ jh.=q2lzMOkBA-1@8v $*1h(R+6H}YVU%Q\*:|~4ij9ԛ5DDBjn'FfAAUl(j@(*B4T3n0cf*<`BB 17i nMh0-#hT!ԦS`%f5ɧW`* i׊/ 0(=1Mg>v`gw49+KSƀ"kO͈('8gFGLwɉjF =`Gyi3?Sk+&?GOkT 'CBK%E e9*Je̱Ffy׻u֫[o7{{{{wۙ A½w[G}Nkfg;[ݫWv|X4bh.,0nQ ~jc EQ*w~7 Fqr[͛ XOk,kSTLDVg]`x sKkO 3U1`3 oCX"[\`;yNN;Na&BR*E5uLb *VHgQf0^d'7 NdfS*I@1 c-S_xYC)Ͼ?{H\g|S}HHUc% !FU1 %}qmmg{fl}i2pC@;}ͥ/Ů>rƝN5(` i< <{liii}}ckg[Lr0l)2^DyX4QYh0vl?7)Ơ;׮:aiwʍ |ןY%cVȮq;;[9{N>V}~QI )1e(bdf]*"By׎:Dy"ZHqfV $tL[AI˔倚ۙH,kH ^3!#Պ4 omz,I5sj`CFGze&Ok̘d;LNcix%n}{}vnz)`S_LǬtS턠_MR1rDj酝pv&1q2pUIּQOaSN "Sjcdg3? +V)Z{?6"J*V U D  `& "<㯼ʭ[I1n}{Goܹs{ ݵՕdrڍS?pf[/]/ɩ=:L:KL$F g.@: Ne+ s7o?O޵kW]ʢ, BpoӱCDkȖ͌K-9HzY?u&v;vxqyݷ^+ntW疲N;z 7u|_]Zܼo{3 -ӭ6ND.:{fnf Ѩh'o2v.Xz(zVSj$(T[cJ6&Y$hqlTG%iTT,ojHDjH;g)w2 Ę3չ,H,K)+WM>!iأvF1Y).Y1rdΒT j\oA]e(:#G6Μ?8C2[7W"TŹ gώ]^~ڭ:}ԹseUY--.x|ouqT߾s7\Z8{vi|bg8ěΝ?szƍGN>}[oMcfZtIfz7urO^1ƨ55H !Y,郵fh)%e$2#US !L+PdZ !"YKIhCD̈ҟQ1:攷%24y\ M`E=1H! * \G hP]E?<!̓4Q攉15gLfkFVRyR.]-EK~231ɘQj[[c )f3N3TÍtk}4 d;֠trlfxHDRW 6BF`@ jFSk`3կ~OsX &;S;<쐨*Bj&iUXXX̰ww{g3 IDATspt:p;}Sy_~xᕏ={ޙgu]v纽~w`FmO[;z}ks \~jaayʣNK™~'/^Xg|S"~Q E rjwm1bIX )iLv\YhFhV#FfO( >db+;fNIjeED S]d.[8ʤƊ QN5!]B" -LY<#_z4Zs il|sYR9SbvOAmv-i"|zmmqiL#Z%`=DVUH, D avT[[kkk+++{{h{0Πtswn݋MQg3`R;WzZjNgyuuuy*ä<{tnqѧdv wz(p7Q4;V?e.rHNWC@3h$YuL"۷^~`SWO=sWN,={"_ϟ/Ϝ;uc9-^qhA* q3yw{se 1DdqY\ggT4gS ]N4='LTEBPJ51LDDDvZs]#EQ 8X9-0]wy3"HCgnX-ʐW0s#FL@c.%tAN 1iRc bZS+ydR #&=)a?PDMԢh:)f՚[y0kx3oMZUO$M @ L9}3$L7FJ0C81!;&)bd\qQbj $lj]A:#y=#H$NjfF.j{]e0K>Yu3QCT՚VSFPz7Qj (˜ᨌ14uBDl`TihW]ǣ`B S&E9v{챍+WCc,`4_rn&b1̡qFNq1*#iPf8Nlm"TePu|2Bl:uoxa7}"wN-I;g*t{}Nn?a(Ft#4P'ío/}G]60D"޹w|/Cux߽g{/<"MIcw* E LSa2޿}Zk߾qǟzP V&j4)@ #xDi6PQUa5C`DvE5%M↍?DX1hJhJI]Ԅ s Hir3v97v%=1XՈ9'*K)9`Etu˴$\d5! Xf)Z0 fb)2"]_XBccE5!)QZDa<)U50aTca' czfl Fb(JH FTy&H , h4`fo@31gdB`IGE@ Zm7{\*m1cTJN2I1V5;베իgB0< ZĶ暨AJ[0lv')ȓ?/%pI= D$2A}dsMV0TDTK<;<bOE_Z9hR_HT,\gnn.gf Y[ߺ`x_ӿ~_DsRʡ?'ʙѕ*Cer$ eE%hwwgoo0dْjpPl^`[wܾko]zʍ+W.9q:ƈABYUUY/8s.3rY&mE3gh{`4w/wswx~PyW? X8}_U #v.&%9nN~s[w?{ 1u;U'ИIJG 8:ɉz:R :() PB*L@6QB c3՘]C$1Cr)wH#cSj!Y͛#r$ÕO"-aCcb09vUeEtd!e42004TպơB$;2k<L- ET$XIA9i6dQA9n䡗u55*iM*j*6bȦ6XnhQBtH{e5aYTS?D-}qᏧEJ bna:;VߔP1 5% %S${{Bo`}n@ Pz=UU5BtEY@L4˗yxumm~~~O|'|*xbc0%I4X (D=SUaB (˫;E9 e%1t x^(&fpK!J?WL7nҭ@,ǥ,(Ͳή @"_aTXr}32zAcw{Ɵ<f ك?Is:tzxYR& +z孽փwz*hBDAAq޾z2z7nx_{{x/<}έ~ψ~-R,NFRgm 2O` 5R2MuF 45cRKV+hT3O@\@" E%H%> 9\fM[koxC_37 (a̜wr ApFi\5H _s5z[/:1,%j6%>]Կ)'XY?a4]"t5&i ѻAg_AL` ˅b66pH3>S P͡L-`( dIy6Ej]Su|F1dBҩߠ 1s)tpgUMi^FUHAԈU{/{4E#ίܾ֕+.:y⋏os$)җ5f׺>:ݾVckkׯ> CRD2$_7룃$LYBk=};|ݷ|.^z[i5&ByU 2&eCd0%F2565Z:v ؙJs9Nh3:صd7(hE縊f䡦E! xBd'Tk> 0T*GZO!TUUeRrWIA3(ctbuE(3e6YĄ,7`j2*"@E$!TEU(ܪ)Zĺսo論.&3vL\A U7%f)]{BID ]G+b]NPD[ ԌSa*2P1DbHNiikIV`u鴞D&(X-i6띫wGOU_ @P@N&oL|/>f~ȥGzOO__~~oاG?Pg? ,ff1t!/}|'|?[e+JQ<_^Z;QǁI%D4 D@\~j5; dtΗe`8sn@weQ33d{Q`<p`wބ q;Q`&5Se1β;7,#Ǯߥj-,L윴|_%KW\~@]`VA...{QTrog?oOOMƃ7oaukۺDPTS~o}m<7`z=zf&^]Z~'.}셨{bwZr۳Z0*f@a=NI33Aܤw\+!)+֍}d=h;Ϟ9RVDCٹΡ`D"SZ1Y#i ]S`&1!0N=(ȡ1(Q j1tkN}ޓZc Sf/uБK'%F r+[71 WgD05m.@>Q1 01ϐI RV_?X `0Do!p-"@xD(uFyѬi2H u̸d]hX n2''o\_k1Yв,ꗯ*Kړ?own [_`C`Ud|N2}>奥'|n޼O''o#HqpqcôSh+L"HwN;qh⹳{ݭuͲrT"y,Ve99fN7f@DY}˕Q1N`d1JYEU,/4E*v}n8rP}ͽhii ѪX\/G+ H5/Vy'TVgŹDg {<_r~>?/;y4 :O}򕕅?xw?KΩdOtfٳvwB鈫f*:I=Z/6 ±gt5D1Ar L՘ 12"y1AD U*<3)G:Uc`68-K_UEUKO~ִY{Ea%$_u;f>3<30}[$Oa(`juMT}9 !U~&=9)1S}C|L2'tHM1m7_"83O;{~[;{#Z =/^zgy+W;ssk/p»;Kyҧ~4~_{~^/߹u{4F\՝;OWWW~G~GWor2ܔ m KD-LE^ッRpiaA&ۂ%a<&]e Ae! #f1@O}8󫄲D&8U%eCqT=KZ\XF2ǎϘhR8Gb TF {|on8nlUY%jwNW&1u}_8{ ɒL#ޝg]}3s$0x$\$V-ĕlw+Id#d+QFI?$ӮZ++FHEf蹧ﮮ̪<ee=3ܘ/]y&7>tչx@ܹ3Z~?sZmk׮lo8x⌵v2FCXWZW|'5iAT@F_F=]钤4"dv P)pikC l_3_ |FJAzR:v  }U#sN)-Z{z3sUU*"f ~D\5VD*Bexrh p[G8^ˮS#NA4KDBVJ+kĈd(먔Xei0°,%gN28H<'( d<rs H,ČN*N'0-gFշ:ͦ-f{ƛ6@9K(_/._&Bq=~g~B+!Z)#|z͍VΟhk{pՕrU Ž x5ٟ3$PCkv03o7lZ.2'R}Br(B_-D0@]032WH }r ")&bh*9 Jsګ9\~2y=or9Nd"3JDr-7r:uVc_v(}+Հ);YԨFc|oRPHX7ݲ $6(W_),R#OW]a9?*Yƹ4@"=۷9J(N*g$kŃ++D\\,E;@9//];_}ɤ+~n5%$sلݟ+T5B߇<φA)t,u7.ه=DZ MB ~j7;aak1ƛr}·1&F;ͅA, vXƒa!=8 l]ޏ`3y> ?to?>z!Gkw8 4ya; @ S @JԉI)¨%:RՕ n]>w|evo"juuV־(Og>_wկ=wfqV6/95Ik9POMP~_(,BU18k=!U)EJ Ǡ޸^EU׋wߤP=L{c&V8&D`x^#ٝsLH~?'Q2 `JA`NsS@xo}ԊBZ IDAT]Z[;A޻W`z P, _}g?߽)l$eƋ/?s?dw[b< GtXȂ !@hT=fXJX9(f{M+k'D(2а3kKDAK;UUi'eL! 0j ,= &A1 i/ UNSO="Io?N.^zg>g{9w,mN0%nYZH0 X᠀i[í~'mʚmcF@!#J3,), Dx~u\ p/--Gf;$d6Qk 2#VUe ;D)b2 o ]z$0jftuEQTƘ䝻wϟ?oyQ` dƕeΊjjA.=_̦n{{ζD T@k']W~'Jnp0ihklȸT '%fZ$!DcO{Z jsH 3 !2So D ,"StҾD{`NVLшs:WU=)Qs(DbA"v̾K4=k(S+%붑{=!4ϝgQ>,X3f:|756Fw8/mǯ2}!=l(m2XCF|Bht2s]N< bӴ~k9l0$ ֓|f.^X8Ze2rQFpeaVIa EQdhEqDwg(p9 8qk8s@,lZ0IZQƤT>sMDi ar<Z[#7Vi2HZqjwW4ܺwvv{_yʫp1qTSy  F\>EminF%-F) N7 ((,ȋ0{=!a TCEAaUG>ؓCc$Y@њQ}ЀG ˛:oE] ',c`7CIy`}X|``d4v`na#/׶O!r7Á >lD瘈jM.5TFMGt\}~>WOk b~12O[/mj@#V>;OB7 Q~ob YʢDk4a;Lvʓ(߼}7i73PITbX s;.p6vn?[?ҙvYGzq7@( Nsl, v 0sW/\N0N&tPO6H90*McBfO\ ,2A;ټ%auӉa0 ʡk16ʢ<W{NQ;A a$QƸ8I!ii 8olrs`Lqb]y"]Յ ---W NT%ܸRrF3 (p"l*@)JЁ$*0l˪p++HQ @o"Z-|-pٳ^8C)IʒbqG-0-XI(DRf{!19$I z6 C-R1x^M2\^xXjD4"w=H,jPp Rh!"DUTr45yMNbns^)nRz:Sa'S rd[:K,s"̑bDg$^5̋>;:WL͙AT;rASNT[Y|hAdpJqUe! b#@ /VjM"A@ :@T*hn5L~A.U`Q! HJ)0W2Uhd1|;0a?(/8 bj6${Gyc{J3! D)H!&|c-xWAXSU1+/ǞbB#v_\RӟܧӥR &(ti;~߬"Kd'O/ctR?t>ϟآ4scK˪9Be9zH/[ۺzU*MZcS"FFr Gu4M#r ʩvVadW3릷F5ulûRR- 1ƣYQMjƖBu:]_Pnw)T: 4!A4cn%H1[o+U34i-㨿d" )޻yuOqy RR: ]cc 9F-HI:Q@} YY i,RqowkvNeNdkqo㍬~ډޙV:\NVUFb"JvWk6.i㬔RA&ZCd Y {?] Cf)Y L>K"TbTkbk]h2gDd`E(M%"\?/~3{·?MM+_>r:Dsk>M!K"Ήcz}<zm@}=^߸&2ɷ/]7s>uT?ES eliu~3' Ui0Ne0vO`Ɲ;{mJǗ޽5?,K Ja;&@xaN W:<<[ B =* #csff ГHQEEQXDc Hmv67[Ry^r(0W% ^[V#'O^Z^ImРvD*˲,.?eރr t-JCSqi\'qKhw:ٞ#:q48:Zd!-]Ea( C BZ1z3cdm, f[7o֍ϯ. V;eYvJu*@6L+ (^IA՛б (H}jL~tTl.8~j#2`shZ ֓ge1R߯t`u'P[1ߑ|x oqC8Ej|,o9՜/JN$ަ+ۿm߶xQWM߷H4h9wPwZ% .z^v\PI@K 2PӒ55pr?8s|?GNjQА\!MBk\/~;Ŀҟ /o~߻q>7|ɵ^8<'Ye{SТ?I6YfeYK_z3ׯje,ke'~mO?}凗τsyūԎo޺ẓ|'^_lo=/F*8vM0XgH'$)˲g,RDkE\YޑR.U׷d*G!=05V `{.?~*(`B̋2$MZ$`JDd-J_\n qvuc ZY1B*cYsֶluZ&2NQ)[AQhG蜅Μ>u°ɋp;yփfoi(ԉ/)ҲpA;ϖu<0hEr M/سc CjѫвO-C@s>p,Ɗus7S +L ֐"G(sN$A^ @s.idG<ĩuYws`! Zpn+t.(BGȍ|M&A0Iq5N^W?3ަ;v ..C(B#"iCYkhc(X^TU}F@Z~g+*{% ;"]8u0EHlyߚ>vt?w/$`7'o.,!9x:p5{8v[șg_ܕV6q/|ݾwꪈ-Н+/|񕕵t ݻ4={\sqI1S13khZ7;G?gʉ>^r€X~Ǯe/UVZ,fYJV[㬙êa+fEKY"iiһ[;+*Fxh jwKg2UUQ ګy^\8qfPAe b)5EZ<)@$|< $H QT*8 jTDajs0`%HgN:1f:*l_YESjV}_Kݥ'>pW/_xG=v:a eUc " +։ l<55d[\|"b Q1P 4Ljuѣ\x1L|Gl'x3]S)|WK\t"بb- ٰs`,|ۆfC.`gl u{\DΞ:=3Hpϒ7Y'?iVtS Uw ~׮czg[ĹqUݸq#p$Y+-v^|qccޯe kkkϜsU6M6Gmnm](˛7o+c?|嗀]*j*s+Vz ;QܝNg1E>ˋ, C8tU3zwm-f9$a l:s֙ øqiιVUU @E珟81-ˢ$ҡ'fɲ򱓣XZqUUB$Meivsyv,/ =q~@t, 8&cf,Iv-FA-3v6ׯ*ꈜ+_8VZ_zEgߌ^w+W.߽{mNv[k8LٹO2g/Უ4] I-F>|Gpppnj0i1 ;FD. ' _AejeϽQa@š6pKh|1)AzuYW BxBeE 9|5QkUziPMUoq\CD4"KqaaԘvK.0ЁRb!Q,/=Y,ΞpդKp,: ~|鬕Lˆa>/Gw}Ϟ45Sڮ 4)Ⅻ?|e2߼u`j#x:߸%fk0Ԋo |VNkn߾O??#@7u; yȡVinlmKǏ|w$⺰~̙sUU&I$HxC1ZTeYfit,] 4V[*J;mYvv7f.A1 *SM* lY KYe}6DQza'uPHjSE{ֵ7^+iFiOtvE4:qhc=ޝh-Q--o و1V'MZݼԅOLwHst[,7_-ݫWE^fYA9N?I:Vu9n 6ApHXw8k$ȏع^\Uj?'WeOTl45f! P5[o:<PFHf,lM eA;n'#bN)߁ȓXPy/D+auv&'6+8)A >\r+qܴ, ׮3ׇ5`q2RP*)Bn0y\:(P71ZS)P<af[91#uc ;㈑}[dχ&Rrͩy׎ff@RBQ$^!`$FUeRTx@30\}+嚮i)X5bdYiHD{vV}̶Ai'l 37|fS oG^+WL4_5Tn)[j5'O]z}[UdAtyٴ̽.ʰ]]gYxwŋ:wkVw+1aZVA;-%%P:(aDeY"43( n\증mۺ@(T% 1nZKnr:ܤc+-3 UTլ7o\ 80 dwZ@_ \;DZ5MڬP@V4Uoi anma\ HH: 6B+*Pyl?!E>o|ދ$V9z@kCӀkZ7 f-@@ i|I_Ƕ;[ĻDݯ* ;Ca+EXjqX8}X;;_3=2c{`s S/@MR,Φ&wE|5C(JTbuzE}!,;_|jl8W2DT Y [@"E>40)8X~Y9"*qBV3'Ω kν`Z7ݹűr4vn Yu<Xaej W@e\1寿/|͛jN?vt~.99yLRYi< \|~{v|\MֺrU\l\䠕X)A y t7΍77+ H=zdF67Adww0Kv6[#v1L|tPzK]|ZCGuʈڝLwFpYVoooY5Rn>%"b鵔D&q*P9GDI+YY LDbȝ4QP'Y H9Ἠhk|2k'E&o1ANo]? # V:4M-W)\ѷ+k q9q {dV޸qkg<()G3qvn:u̚(,0Le>+Sd ¸#ƽʋ|pɹw>ĥv7oooGQ}ȓge(jkskyy3w_J[W8WUa;NHΆq JAYZV|駟x/\vK/O66ͷ_7on߾{ͻ8ϝE[}a"MЙ4IYg/Eq D;|58DPw~/ʪB^'"A "3/fi[DHؖU@0HԺrT3\zILDgKյ4p.}tƂtZրn $"㜩 tʪa,"N!GUU7ozvۻ{FA/o|'C+DDKÀƦa2:WZ똽@- pM 2 ; 9;AkhN C$]!_E5f|=Y =\;JYkpAm68"% ;}p4-u 0$DdvRJ">̦?᩵C Z6"2J#&i<榗34IEѣGέ; @@V#*믊Cu ZHNM: v 9CgTL`c,ziiۗ|W PG, ϋ,,9:4Fijeɶ @Lnt0ؚmU-K O|/S}ʕ Шb8҇}׎{gΝH?[Ub:ucmӌ@Hcric'.=vG{M/h%)7onF*`K/m?@z\Hq>OwvvSI 7qB%UYRTq%[vU AS@ A+@ck (+E4kd6-²w.;ޝsv'Tj)g8qU+7A' vD@5]z>+/8@L>RYitq1F3F ZS_[C}&"@<7/l{G+hk\)ippX}pa-Q25]aO+/zNp m0ct#34M¶9FC@W,X8 spe'\o!Dv G=.t}aE5PV.}55!$眗UDT&iE!N8S?OoZ8C9xf_U$(H 6߸yrO@^zck}C)":$DF Pk=,a`:wݛ&w!ƃqpY"&N-jPPV.c'׎/\9}͍=$cg}O,{{qݪ,LeIjgy>r!Gsb*j2dYf2Z8I0\YW@,-(P9 ,tATr4Ð[_lueYx6N' ôݭmZXʪǻi1t܎ׯv-B9sLz]\P ,Ɛ˜w`cou$Ru@h"4-܉{Cw8X,Xo><>9!+drRCGa&LQPw B[do֪^aE$5;~%^~d2.菼'׿W #7 9 =P{"HĮRlfU+u~dsMZ=I5q$iJUUNgV᠜f2n p|uEH<7aWO|8dA00Dzˑ!'t$p-uLfܾu''.^8w [4 @P`cckccg{ͫW*R{I$ֺr榮* ⺓)(ŢޯO<vWY+sfY`E嬵 T(5"vY>X$;N+ 1/QJ1EYEa2%Apjhc$V+?3ژNW߶Ƭ_Β7^9ڙ,fSv3 EżZDVe%I&qWSgK/w:VuرCޣv2Z).wBd"r6Ȟ^ $i1$15kxA}uaF`{V,0 qvgV▢(LnmkݥcY#:Aɲn^\J_wګ߸H[[G}VM5z[^=s̉_6.>v3>y]z`ovnB۔(:$ W1(?rpQG~ívo}}5=vQxW6!J0:%q2p{lQHK>;U,nu)q^ɑ @6 @HlhSg0R´Z"Q/];detX1xm`6Eƒb uFtaiGK޹ss2.R؍{(MM&͛;FIaBeAvhE$vz>(DMܽn4v>3T_G:{HJ+RuF6O|Q .d[O$k ]j:/loXW3oǽ_ !8GXo:"@X 4Hμp/%%iwa Hf^M@8rqX[; }T@"H@ m:֮', u+&{J,`C87 108nj"wNP>b@_:XD)E5,D-6jdVDb`b hU squ? ||i2 T_uQSz!D2pK'.LF|`F;;Yv:Q_EQNlUtzv'Wa=rΝ{i|0 g YW+ʍ;ׯq 'N[]nݺOC'}òC`p>4߾`;gԙNu=fX[<ر+/^{e-8ƉNjic˝^Ey^ܹw;F@pɽ{P(  AHZU50 @k 脒.O<`4M~O3vbx:M& #Cu4$I@0"tHIC(Xl*"JӔqQiAAPEҳh')Tj:;s/ҴkaE$M ޿ƛߺ 6hu#J)TaŠulJk(Jc'OFijWuq-iґX ggww*kk skfO{9 ؠG?wWr4bpw ^ t~h6R! f_2wQ`iZ hzRO|͛7al: C/\;ve_3-zJD @`g[Zr[+_X^];y…;aWז$//'G;ZG.N6ܹ=_/ ۫x(oW>hí;_X;.<,q\,k'zv~Y>ә)O:2:. 4mmomm޹3 ]yta)E`@A5%i6YU5hIMwWHi-2]Zz^RC:ćeN'(H)jhLqkYWj`JwF7k,9="vrںnhhVRq8Cq=$=phI@zуL&d2HQP#Ā @/%*3+w?KD!νy䱶[w9k*}#(H`fUWUY)4uڭc9wOOn&$k^b\6~{d2nFBzLzv`E*/F?wOi |ciI˒txE$4Ozbii3[ Khv^:(YZEΒ 7 ŧ aC+K/:!PPo9W!cꜱ"W7\UsMx2Y^y+XW|+)2F+ B5ĐF Ϋ wg 7y v P,,  _MNP7ݪ/D@-^h/2v7:OE Ga*޳\fHݻs<3YqՊ^I>u]OkGCBZNFd2w~UQtEce&A=2F++H?0Ig|ŃBH<Uw;3DZ D9-/OSs,qlL0+ְq`"6g^P)zEAi}'94b3{,=+ a?8Eǧ,K;+N.moK|^xv}"k/b=AIMnl\~>}s&\S>[e*P-rZz;Kcd4(NҢ.&փC 0T Wn[,ݸvw<|zGގprR"Ohrrr];|ʕ+kk$t:HQCY*cb`q΅6VYbQXw: 3彷QKrJv5x(LeYG>m=RHm+}&-!D"={%\Kx҅o4XdJ`D$;}]U S,X4R,vKԌ-0h!.1A7,ƍqGRAօ)\&J)ޖH!ak -f]HʈIo_z'ޚPJY:붮ng3D(qȅͭ͝4N9ܾ٧8`M!EHSb"X{>';<nm$h PŔxE"`Q"-y*Yq@ {p8 _(@m\N[܅ o+(:T7ߺ?|vdqEƓ+xq"ݗ_~O>ä>9="􆍢Tyn[!b 6>:[u]1[g]#V""*k]UU *ŗ/(RJk&qeVx`hqӶ2cm=SuyLD"Rx?͜,'m 3{Yo߾[Y!*XsCc~oLH@"#3 jK$"\RE J-:2О%0 )P]-  IPΚ+ҹ'p xn@eyB̖ )ȡxr#3؊w"$siX/LD! P\` ܦS4Pv%Ҥz4Yo381e`yD Mk B<+ba}X_zopVD ց$B#` @AiV՘I!x/( H= 0h5ȡ`L8X;H7o\R{byR NB92By+ViV b9xk;^qര(F)Q,@ri Ͼ>?}xI2[Oй0 &YY!" T&4:9O2t8'  $ݶxLaq{E{,Do5?Aq2\^{{ X>k<:~gkm|{/U7 ׯ^tE;.,nfUU" nxZ|Q)yx2,*I“*,KMgƢ!bw;NKSe"-˲~Wߛsp8LrVӵ$IY1H'ރ=2vϤV&YݻW]c@J`4BN $~iK84covڴ2^H8&+O ׮}!h=ϙv2/2DφHSJkF`0ZVVzlgb% @*;id%2B:`KUe]żjg`fʳ58{C IDATA ֹZo2H7ˁX@ը=iJ|E =7TnEJk: HI3 3~+ I}gBks繲:<e_;+"ɔY1 jxV=\B%qżm]MV!o;7'lw 6hp@^ph<=1Pnga]Up +U'ݻ0g֕صo? m^yc?3i1 imc ̋Aos(dѱژHiIYZuUUUQeYj<':y;4IPŮ~2wm tRg2GoVLJ3;-ZEq||B.:ݞ1jc<1@դA5E' "Z߿n/l] ]W*rLEMxE:y,Y4]DD_Tc^ |AEΚH)BD/LHJ4"cLOTe.h4>:>"D+AiC%2b9jmtzEE?" BgDud0I-3' @/믿vONNiJ)XkM}w&"k&!a,,Ǔ Y_s`DH""HUY(߻~eɭ5$q-8*犨w]YNۻ{I]+ 0X__{h(0ֺݮ'{ u,c[|dʣ!Dm,ݼr~W>dtOn?=nj!`b@My0 <"Wf&,*8F#w+wֵ ڊK>bPQ,˲,C׎~0J)/n9ӋUDjP+ P+s 0L&޻4*_|vJ$$J5txt G&qeh$AcdZV,3{y/a@hHP`' lskϰ_{i(iZ0y!RY;+ e" 5(`mygڕejD@*`BUQ#TBPdkCrY~# L$4(z+*"ݱTe=g+o3qyϡSˀN@ieqCQ[q^HPJ˲kx2%AW wdߐ$':D\eV+ISv RJ8q 9cD,Rk% 0XkvF0YȭT0;=i@w^x/GL7v6 qۿ['K/ܗ>۷?L]ջi gvq"X`~ `*qu󡏻EQǣiybtok,"g*K2"9$IZY+c+묯˚(G&䖝]e!$03 =ϫV5 nzU鸵s$\:h>6: _: uNDTiGR6/O"X .rV -+XXB_2)\@E6,H?әB0"#Q5eq)\7s3ɒ%M5 & J"O{ǜsֽ4\e^$i("bz4&nE-oye"D$qtIEQUU;UY"bd"dRN =.`(MPZ Jh8%HV"p>toWHqgo<5gK> {;$(" od:-{rֵ1 'pxz:kk7iYƇQܼy߿wOvQȯ0y 3Y|$3ކV*Ml;~ҏ~ݏ~C"1 ^~/n}rZyE󣃐uSwswO~2`[~:)/}WO=zݿ `h(ZJ[R` SqU*NNm|}cVu期L&P,tڳWJiYdVRJS(RuYUEd&ȵ&keZk@iʲlpz"b|9Ϻ',IJӎޣD) 2dߊt4^eyy,EЬW{{qrA㼞3z@ceS axvυk*"Fkg}U" ֎y<ٺܼL3f? <״/??XШZE _$4ф{Z'/9e?[C՜WBp5`:>?jEEQyn"Xo0"c t>,C*x"D FAPݛRarhTW@!q I7nxvH75'R"຦#Ǿ ^=1HڤJP%n?z`AuR,ش K>MS[YGFJN  BP&I-llHz1dE$#]9sD$auAW;&`4\6Z׾/?9yίn^lxQF$w^<Wr+GUҋ/ڝO{*6~i.Whu6o˯*N. DAള,D9ON+dxnqi;*꺶l<'^{4u( N$AǾ)1U]J"=;@A@˕1٤]O[K$"EQ`2Y(evN à v> $l] 뺶ⴠpuE1 AaV @@ Z ( `i HΚ`-+e(O9nfńd,xwrjqQܯrX:xso,J&hB^{tm:ml{؋ .Y+B@@LDJ+TDJAsKY8!!V\⇚HR1+?V̪*?_ŮFaE"mgr.+*7(!F5vފ"xflD ~5ND{BJ( z`lbc"D| z"5s!9  NEyf1< ehks3[ϐ&`'G'"mY#ɳL {Av =։SeHTE%`xTʋ1KWJYWq5|bPj6z:Ng+iv-BBo*ϗ_ Ɩi=zp~!Mݿ:]9@zA?)n\&b:@9W];.fw.< \**2N|;I[?zӡ=Mvd@_޺t7{ݵ~7I x2V'q(2Zx\Pg(ʲbIFҤ$1'<81Ϙ&2@l6+( 2-\iILGvhMA*yE9DAPh"џsu b53[b=iԨ^[#``>E3h9l!r#P9R)D$sXVᙙTCr:_Wu]וVYY~%0j@H @U:^-ܷe"BTxf(J(*6Ir0C1̎'GV bB)H)J- /q1*MST#F`Ե 8B\+ؒb3VM!" ieHBCLjEilizkk//)"E{{{XUUNAK(%eUyKҹ|u/xRVژMEw^U=>yEqlr{@ti' 4IzU Q;ֵֺykgoڻkתW^bC@N#u o+W^Ϳ{ V1N$,+3!w~~g8&ڟɷ2F|ᚎZW}TcwƍNҞT W~w?8؅D`һ} n Ie8l\~񝯾s`w$am/Hyt:q%@`{^zf-:1:^i۝|6Koi,%I(nHY̆'IwNϲPX^ <ښҮ"GgO暀*>Lַ~꯭%quUx2"HxfC`!A>ZpB /)x$Nؿ.M-\.HhZ\_s̢Zyh|4\A{fϔ rt<٦-SZF&)(44C6J렎3sዳ\ 7 *{PA֓WmX)( }ZK!Tŕ6=buFDrvU#`DЂ KXaw\|ʛoiz2BG㒲p;HcOg3P<d2j6/8m%qŭYYj%qE_[l]֕RdJQFʍ't+/ڱPn`0 Țh<=iO|G???+\Yz@̞(Y1B ]:kyo})t<(,C@$BH;{/׾jE ,{Tzl,:JhΕWxc>VQ#¦O~'VZU*˵D?lv:lYEV[tRXY7Qx>_@ZyVUU]U iJd2?<<Nt4SHD B@X%DB IDAT$ۨQd1l_~_s0|6y~ճM v&!mR@:IV`(-;؃m;.soO9ۿAFp ?"-4FUӽ0yxko?_^OG{~=F(/^{7+V{Ou;>m3FʒRe5n]BTxY DnkTosM4M"0x|z[-g>}t#l(ON嶔V#<PJ$58p֏Ien{ܗT++*ZExraUN[iڹTEbIE\ӁdۏzѭVF٬ yJf (b (R&ֶ)Yr0ƭ6}jj8:8Itޔʳf$Gݍ^!kkUVUuw<8Brs"g˞-B.=O{]yiJ[ghG~K;ίo}?SQY[.FN=}to_;o_Y+_zկ~k__UQW/M ?:<>޽{h(+,2kaQstTeUW_7Z1pfvٶ0'A|+޺tdFV_[UUo>A!h/!ԫ糺y;oeYߘlRf`t![0B{}ś1y;s@s[fo"cl8Ng7| ٺw^QSH}]XV\ԲRFHm1s˺ ` (lyQxG~Pje6z88zevޞr^/8)*͢+ҊAA5@kcOu,-% X.+<x(Z 9眵YVLx$*ZE8(JrAIY1zQF_ P)$plpM# hUP`3!Go lGtJѬU)l Qdv&[7(2.>o{ΥI"k;3HfEn&ʱx@j7O@MȨ.@iēgoYɃBD֑xAD,`è @$JMoܸv>6EUwTY7wNEuP{^3'B8;9}Fx2Ywn}} ê,kW5s6e'$Qd'֭.ᠲnr: x_{-2@p4ն+Wђe?OڛH]wb^[WWdhDclð1 c`` cCcDQEJJ&6{^k[ËȬnR-PȈx{͟?/b1y;Vrw^_~"*{_ƽF'_K{z\z=ڪiV9x\~Ye\* Na o|j|xxn|=}뫿P5F!ͺ[(pW =`ׁ$5goO \ET ,ۺGdASEQJ&)EU" ú,8MS=VZ u7%0'[7ya6_<<;b*L&٢(Ha%|;i6==;}xrw~~ф r`o~K5xoJ)VD!4"У6 9wB؞Waf`Ϭ)|?ATCF<1yC \Yږ˪E4"'/[vv`&ǫ,{`{v Mݭk# >)h{[u3&1 Z ۇ):0F鰰h*B`RI#@&$텗B!JJ%%rCEu F$-/[0xSwnÞ<@>ٸjz;mE\,sOtmvPȦP> ʏҭE * ,n{砱 ,X'00@ˀF*Ia-W6lɚIIB(*pέtFV\y]VXhWh4N٬*ӉG"ժPJ@U5*0(aLc,|d"߂e܋T=wwvAfVY N 0[O`o`re*˺nD7~G?F.!I)sU֕j~=@ _v_&| ~\WhO op0/On?>z'n,*Ľ~E͆)Dԡw( QnᲨ(xO5M==9.&("vĚkRht@oeEc-R@Nʂ'lʱ%IAEZkk- (oӬ2muE=<%Rb׉;w]x!{g2.{OJ*ʶ+%d9)<2 }A/ Î/Oi%о?0>4Cm^\;bd \SdјJI%H}7(e0pcwHJ)Ѳh%E ѐaQuuBR#wh8@5 s)]{ư]2Qߟk"0q*E|E~jy+R9b:$7!zfA AZ* h*Ӎ1%qôᝮs^5eOJUI18MA, lVᝳx{{',˪ʓK! (QPښL`䆋T/e QEQVUcP2z6{_8p{{;^y.n|qoyѐ)*U>mK*DZU0au*6NZ{wٿ ?/ǣ|/|_vvv?'ÕtƺӋZFU~vW`;){'Pee>ܿ R -X6XV7^y4@o]ruog{}s%Z=/`sBXkEM@8Zڲ|vEb:\rA^JGQ`5橧泩G{Ysk~E9N(<t;i2/L]Rk%U 7R(l%gY˗Ҧk-qP)MGc6M4gޓ-`$2 tw8toj]#~G:}hQqapyl榱u] w3ucOQ @zd쐁@mG9"etG)f͸[kRnu@R4;kBc`D6!jcX*Di\*'+t2Xb 2QĄ$Az3h-YcȽF\P*-0X_%Db;\ݳ|W$T`rmF U"_c83sXvϝ;vY_H`ɭ.뺼{.޽)ĩ0qaC4+jJ1PN@깯+Jn^j)•,?QOU6JL'2uZRJճ[^T~[o!aX V+<{&%no>6 3BQ#bPQr2#b[U~{G|SO?sr2 ٚƓp =/*O(k;_ڟگh"V΁`P/s{]=:}_[4W~{?WPkY*^~9^r Y!u~;:_la-4\7nXv;@QR+7$[9;Xk\DAa, _\ G\5=  @@U2e,Xܔa**"$W=GUU<!<ʼn1x'Fo2[.(&*Q(ԡfv l$ r\m J^@%}кh|L%ddUp2]c/rZL !> 3D!ڂ6^7Eѿ:8h ]+XTG}2߾Vqɷbn#k ]BƟo/5w95gٚ@R"x4HYw/`t2tyo/6104Tt<9>38rw )?wL4FW!-`3Z\ί?a*+-N:>~U#PDBpin7=;9J׉}@Y`);. Q AgY!]ϿO>Z.2sע\&ư#'^nן\n~qjĦ4ԁLN%Z[2ks Ƒg8)V1-RQw;]-w X.nEU ,3޻{A_l:y>qY`m. `d_CN>nC+tT#ԇX, jf |x7k 0!֚ )%#_Bm \cB+xiYh8Bjt [!?gu-XjX~&֮빶8QMFdYn6/ Z[)f/ht~Y} : IDAT%";)Fml,luwϭ"GsASlnș̼ʲ0 1Uu\b򞶷%ZK)RtMPskkIzιin><999=~ ZV񈘗ˬu+~|ŗ^8|7O@V^w܈yV $|^>x؋!`X88 uܸx4kה/W_{Q?bQ51 ;FݻwX|S{yx獿:, +Uk B))2ZOj!+T-kG(5ܼXgTdn}i%ҵ6B\[ߊѵ.;3Sl'":"5Mmmk0UTU^ m(g YH@'_}zZog*=p!QhYiX`^ PQgU qJeI3 w@US J5VCGGui@yވv]K0z^eVJ 6í0!|8n{:y郥|>+SW;w6ˢj֍s(Tfj؞;D 0u];[7֖EXeO7n<5VUe`4}/t\-{(N9,??_HLeUWj !4ל&Lz|d9:։ih˴U+ېzo_gw͟{e?7D 1tH"4VR,!w''?NO3qs*sãA_ܽ{P(CS͋wa`$JX(*˴A`~>́t{Qfq<>xvbQ;ua`$IYj< ȖvjEƨ(V|ítr7U\W#~r26X@ xEfB(J1& Zd[[`p$2(T-HɬVG)3 ),TJ5mU"PkBRW9mt[F g=PCРhx{_puKn(Y2D%{hs_/\1SM52nPq!ԦFN&Rq訬c/UA腃K,=31g, o'舗[u:ŢyunÉ7KKy$nBܹ{'ԃl\zqֶP4M;N4i<(b.Rv:J)$Te=oѥqnT ʋ ru 'zd[gA+ǝ8̣nks*J)eƧyQ+Ia,E\,W\:6F t{qZ%^E6LJmF'="):g&Nܻs|8<PͳD .u u LZ0!z&Vdu1Pa  ,D[OEIb~czth*dLlt|e,Uq޽{Ԭj5RX0n:/,`+mT&ngdNvm4(VZM3 )y[iVÅ@P"L_&vdLmVnYȯ2]_R/n̈$KR9h![gkh!AZQ)zY'@jRZ9&l$ ZJ" fII}lA V2BJh+d!Y(鉍2Bx 0[vXf˄={O8UV TF:8mBu@F1N5HB, ".(\+ = @DIϘXlwpriv؃%\ٰ0ȄRIHM~EKdZ [lpBǀ;Z-PpVEMeӏi9- ,ϳb9?>o<i9Wt;sN1.R@CM8N_a2_(s|%=߾b9~u@{Qb2u\UNgv:ިbc`_э 3[{hr@K p lr){SFnZeZdX;gٯrthI@% :ݽ_|iow=|9bx)G?=;[3~}͂qԁ:-oT2H.1盼k@E ,:DA<1s\-y8ӄui<" *L`H?op?̛֤O{f>xkٔ7ݏ %[G[' .Nds*̎Y RRGg DךFDΣ@`+tH hCmARfh`E`4z9R*)(6iB%!"1@,"KE1ֈM$c"E}QȐMS7eUSu[y"k;P)(BHL.'Gn鹙mXyNil-E'u(ԾV*$B:rmQRj<۳ie | 0i%%U=h XMs/O5h A7UUβM\,NNd+];'H)u/ Paޡanwgg»ZK=Z<@iS% P:nI;&I_ycju*E'[[/'/tI(8={8OTbs5x$M snS+ p1~nm VI2>o>o|}k3L(R,DUCͳ_r'Q>1{@ؗ k?=;ɤY@GLoCݶwKU4jl`P!ll YN&vP {ʲ2y;AIvwhk`p'0^-i' _ż4IvE1WJ`B%FDRF[& oktxNg(Q4 -l\>$:7exjA,0<˥V1z.01füHmBke[ 1 ;E?x}#^^lF;>rK3RrH Yi0Z˖UJb 또YVvС:b1FI&ԚIDbD!$ơ/) CmcZCP떘Rp @RB+QH`HkCO齳Zp{s9kj[Tr3I뙱fyI°"\i8^c]Ż {Eyh a=0 т`,i=-\EC8®6\2vM;1 1 DMQe+t'u&Z2uUM0## *nװ+WH)u`B9k^?(Z1{]U6@D\$AI)˥:" ^E^/ ~'unݺve zXkwڵowENO~W ]PxX޵|ڂAĉ]-@g@+K{ۃ.:Auv^Waze\Nxǿ{+o4RycY0o=J]Zt" 7<@(EEƉN:jt 3wF[HLD6;Ja` {<E*ˢ/r!e^,5hBH@y"!BI:N'aIl칪WABQleZy!N.Kh<0 " XG'U]Ӵt<@q.RK?lIGJ2۪NQX+Fa(r>Lӕ,6hkkKkoWIu _kc9b?rujXpgNZTo]Xv! PJB8&|żhCs,U( h-RuHR8t [AMazZ+Jif2^'PJȸVDbk@(m* M@_/z&&QQ;ID(K4I:jXHFbom^(JE7R-6hN4j+ןw6&~޽12^' c8?Tn($aXGI]7@9U ,l0pjz>H9S 1UUApuw_yEsXVE\20Uu'JJK"H>C(W;iQx 8pBBDvN옫i NEl @W%-.EDQEUz;q2].bn泳̖TI'qdm3E˟TiD(%3]nӄw5c\.-^I7nxƓ cO,Ϧ^wH))Q1úr5`݈Ih:޽\ofoZ0 %Ԓ,`,i3N 0\ ؊:?Jx @eE/;^ϋx\ ̻}Oԛo_~6K,jZNw  :w)h6:ZH .lx[KDM XThl *"z@>?SA,5M 0TRR*\'VZO޻p:Wzٺ*EUI ɧOʪMs~~JJI|""/.ЇPG?0(>Vm!&:1DmHPeZ ;/OW( d{ODT(*+i׿!xh>B nE{#jqԣ a&$}m 0-T K@("Z㱵E:,,uN&{{[{:0QH= '^~??{8O˟|q>Z6Nd k0_[ _}xzN|+Jt1 IDAT(0A0Q-ʲl4u!$|8p9. LҎԪ( jl-ڧiߋx:9-(HQ+@̳̳tzxxkJd(mipS,K"bcI_ٞ)Q@AAA  0 HPMŮ.]ν_fu79H$̺;bŊ/04XRJiп |H1#2 ~@ bA@9(x"P`'(HXcDDd]{RBRR%Ad<L:@!cC @5JfBxxRDc$I3>"KD:tj0<;4iR0$b1o)RJeɬ08@ bL>r 8M8Eϙ2 fN!r ,}JRþS;DȂZl"i"B}DžUFK}Ab P$iGTQEZdsީl;6@-_OwͺQlxOfK9>[1|,z1,O LHM&}s.|~)ʗg˔hui!Wwq4_ܿ|m*<# ]wu)( 0|(6́8IBDRt6뛫g3Z.~uJS g>zvu]]|rDOOO>?~_߮^||/ 0k\<=?,ʢ僇Ajzd_/3tX`nvŋ/ P19yjYS[嬠Q2x!)"k̒rF~,/Q8BɣGOc> ы>?ݭkvCR?,gέ2u $JQtfo5H $پ"4I߁ ^ۃsPfvjnf_pr^uyox WU]JqLv {yf|6M'F+m4hkQcQEXDx=~KP!aJ0ulBFRDJLFP b6.&MA1Ō[hRZF"$2*r$c  wʪ41D]hI(C @ 3 x~pҊBB >Hf2 H,{XKD`J+" EQPo"eYJqZ< jJ%L=!6! vItS44>&UPgoBRDmuLHZ%K^~)Y6$i&b`KenˀL<] ?pຯ&ŭV4aE}J1Dnڦi1~* Nf!vu|T6d\3~Jm]áfLsWv[oonj^^nvcI=@t[wꫯo޼Z'_\\kƵS&!1pbXC (TBXH<-f)ɣCiyzZ˟][OS,g/}S_~ɧC_~v:{,DfW:!>FRi;3ޝLytzƪbٓuҏ$?UV6INI}4 .'#hգIUIFhUKVZcT{rS7ڶYo)E"cgF=bns13^.p<E}Ń8J+L&DF{cZׯ_u "}muuh4ʋ<˲tuSU}yUfUݴ={ֶ$! S"%1(  Y{2! `,UeU:j2ybZMOꝵFzy~FJsRz=~1N?#dn/^mvrT'?|b:կ>ozE}nZ j|?KBP܏^)\.~òB5Z̍1~OZh3$ oV]Ao[G#Uo޼itq*I xuy/>֙>}͛+QBf/[ݭo"5@BfY5Uc`1=fjW:@/^@g$!b"2EXD9OЊQV01(fC>\;<a{L)e"H!1 BTNR y(/DP<@8_fΥ2Rqba("s˨~D2wyޏM3EGbU }p34F` z*1iRz[o#@J%R"g6<Ii.R[,lvzvcnZLggggDS$"ctJ~_wwwDz7l6kv;"'''g77NXn}/MdYNaY\ dtg铧M]?}>fs}ӟM1vUegݭ~_1Nefh]}~GAR&%H&Eٴ[$bٵm^kϠUJ D:.A0,xYi]o?on/X] ˳Gv[ŦƔezMD}lC؁*wTr< y"い. wp|[cB.Awc)EEFY!!PP$r)Y6&eA+cb;]ߵ] !C !v{k-!E (!I!iP2EO(QX(í25(-ID繁@ ):0CBR3 P+2hFuP4%$f`6 PDis2]z5"+P9xs;HCJ. g35b"HJ #k2 *,m1G= mI2YυUE(ƘG KYְ# hهur#n׫˗N_o׊Pe97͆993|ObWpk kTG$[]~?݃Ǐ=~8/飧Ͼ~R/^?ˌޗz2~ѣg/_7`ƀRd@}ɕ_gEbsv`]1j`"<_W S1&@"L"\<\?7 B_ڼJuu*nTѓ|'/%d̕ M<|Xm"eHbf3NҚ1VMFz}>ģ Q1%(;-\V臙B@$Pݸ涢kvz{ QfYEY _ݮNKRY($$RDJ! 0'NiGb&f^;t6Xihw}7h5<#xJ!VJ'Q$X)1&ATK0rnRcO)y#@L$ ! 3#(*<, CI̜ʙRbƔ0 ;𛢚fCGDcLeKF=5F);Mt 804QQRF[BQm@眱&ONEŃXmFkIkAa ba-qDAvn1umٹEɋ2sfF}`PC 1+)xTmOLvu}D6ݝiw]߃@&25>}l?g˗/nk&D"6Zc]Ӵ}߷m;1λ~B"֋"2Dx͋jLG}}LAy5 /t.|>]|~|?Wn 5*g=xxz+d%Vu@]t]CBӏ@()܌U4՞1F@Jq/1p LCt";¥@'Dj{Cw^5 Uj )JZkL1޼;\IǮ7>͛WFd3=<|Xs5"{2/bLCb.e iaNE1?^hx ~CM̂eBJRm1ܖ$Sc Ġ(ҒUh`6BRe'΢Oi" b )0XGCk"f zR01["HZk":ZmC(q|I%t h0qJϳN l>j]/NC<)2bG'rE8pVhPőCD @H *$(P"fh\;/[N ԔE2Pgc@Jg}@{þZgYn5Xk?z$)]\]FERFpOgZl>N,"c )R >(R){YB kQDF}j`9BDXW^W5̦eU뻓9a4  *)w^w!HowOEu݉ +﫺@r;^1v-GK\-@^]py_mW=#|&XkreI)`7o H3&QZ',@i-c),"jfEibnno///Gy GOѣxyX1rJi~5 #p|b`1tB1CdPeGe}lӸlOcR&ovzű몕PR >ry{<)Rr"pC\w^+ @HHe21RH 1ZN EA^.̷>2O]Atl cH61@j@y wiz*/Q$D>$ uڟ;!%*YLFZq\3>8F։TR4 HJ3 0, (%U 5$}Nyƪ=M\>R(dNu#)8[G~WN7致д#L3NkmmvvHR[zWQ5M٬EIɤwa`~<*D`2>.EQ65W nW>:!7oxPAgTׯ:MFr>*%ԦLNd cLӴrb(V$ @&,@+Ud6} Ŭ,2vn`8o{!A]xg>g?{왱yUSw=럿k,LVn_]A$uwwcBs׵GOȦO+${fĻM.lrxw<=_N'iw<2ַfOO=z ? W@z=[vi9/{[ }D@0, ڽi҅oz YP "ZLl<^Fc)E:jm=g@8)1k"HAgNMMYŴna`R9`7)eRAq2 FBP sԁ!@҇aHX8bi(TE:'ѩ vغ.!}PG  bL$m뒲еMb}9/, "D>cRy_\!nw۲֫>̇;78vu$(̻0c[(x坟ΦoQuMaCn4M׺&Iy>Mna:-sR7F/zx\Xlc RL!QY(?%ɨ|Ç_~uړӳ>xgn7FyY&1`xg mtDtAMW1%h O}6C$fm հ*Fx'ԓ\Dێu5, `0fOEIER=clQks()?}7_@%=/ ߵ~A4<()7a*@ At3=OO΍ݦijWo^H4̚B%Ba5NZ IDAT{@CIii3~m &hs^BĄ4qHLiC: A= !Fg%(ƌJBR2kmjd&HJ)1ޥRZz$ RZm5RJDBo":@N[[Ba&!ttXi9r RJ"C8x op(= +Z563Ejև$x  )|`P923$QAIPZS"'J)꼤0>, =3 =D>1sQ@:B( ޏ@ R6[:Yh\&j}˛U!Tڹ@TZ~MǎLNs(2kGՋ 9X9|`|p$z՛b>16xȋ\dsB ](otK x2%Ddw&9GaEKuVv7o2k C[Wo8rGb4b]PSށ.@ @C'!TU] jL# I)zwm(a3sD$LR pp÷6t4##I,b9$2J0!O1VPb@0ae CX)R=ṓo ȁ9ۀ!EC{ %ۛrD Sh!*AR1lPxBt^gU 8¯j7QYey>O5NHcثGa P.I @H\[7A]d*)nQr0BK ?M4כڭ1 sR,6D&l i1/DdTUγ{CYVEѻ>}7HI1tqzzwh2ML0!꺾\F2k67DR 1heET&1ӳ6:rmzfWmD Պ`2$϶OO_fUW~>}?'JQ%؅ε5aB847P.{W/_|lGϊPO(RPvBYg?c|7ggk(G|Qz_XbBccTA/ AIbL] (8 "%v ~}YH I%@D/}KH CDz?vZLo!H, U>26ψ(B;M˓ӓQYvMs}}[x`FP*(Kp{glQz}fu[WWds7K?99)bӍYY })Ym=7; @6F5A@Ї# Rpꪚι;vMhC@Ʀw!=`HGF2( ǰ?L GH[=NR zwA[$t9%D@ޚ>DZ򌖢@#*2;N:y:"ZyݫAbJ "! xo+K]]BAtGpRSO.弌~W uM]̖yU} hg&Fc*8.~rj>xDe1x@km~Gʊx<:dYMGj[p"  >`H ܧ;<Z?iA#u0߮os\@t^;Rl6EC=[I/eKchm2k2s QD%fY bJhTPwm"03DTQd%)FM}smifncYcLHs H5EIRJ)彯jw>Pr\ {Շ~^߮Rr:zQ3Oѹ>Cmu(xh4zn˲M1h_gybGRfNۻ̦(Q#I(`%)8{kN~n۪nnoogx1[Z5=+0t4w]۬LXdq2Myܢu$L@?`Ъ-Gjժ/;W7{9^)5q!mYH5E`FscmRnxJY6!āۮuAD1$P(JerI) DQ9f@#$ xX{tU:p@d: -:cuuv^CA:oaj^-[ j1Z@ҳ3Q5xA6VBUaO!R%Gҥ)%XCYHn|<εdEz{UwꝩltPhۛ7:vJ fÖLN棪VUf{/"@TzיIq#GqMկ^~ >|Q8y/'ehPIwN[t7kჇOӋWϿ}Wo{Mx0.@vwu)mL6~$Ii bz>Vhls{AwG ~-(dUDoAT B\@L.RHrTNЌ|] Q"\dNllrKcQY36v-Ow*PomAA Ѐ0Cdv6nپzvppHrPAXCXYqLQ)aHDz~:ӅB RBȚl4>X5snuwwrreRöYv[рFԛz cܶm۶] wGM=8  ax! bMFsTZ7op~C D$LZRP12m9 cBpJ$&@|=)!M4tpSa8'q@XJb0"a)q>bbTXbwP8 &}w}>1Ґ'RJB4FҊ$(T@gA5eY}TbҘY0KJBI6!8f3H +0>^IUX߹=t]k:Z4 )@CNn.eYR]onw] Oo?o_Vuu5${83g46H{-?i#h `4#P f7)9w3<"{ .=ws>jSe-9m;7R< zfuT͎ӑWQ5MIVJDpqpWN5tu}hS՗_}KFSzYs8ĊW!LW6F J'Vnw3=mgL,~"P.Q̉)N' 4,fp< :@]`~ڌތIn:ъeng5c.bFKn8R㏟ꯉ/Z[ǔ Ł=+V"]0*ϗO>aUD݅mM|8͇hua̲MSU{3ڿx3G$D,Ӭ)Pky,oEqwnaSΉܦ]1ͣSSi_嫯ۯ?1Ł$rtBժwgWVAkjzѳLp2RlBRvwĔ[[}fQYJd܅Z(Ś3,x)Ԉ*2-ܡR njeX^iH) ~tn^JR\gIi,prhqf"Ua껶7(Q)SZ, o\Ȧba1Z bum6n$^D~UZcq1ch%lL ҹ̝+sBf!$ּˊGW9@sǟ4|EǗϿ9! 3O4jVQ]D3uSRl^YմZ=+@{ !F1kR-wc鮧 A<'a;}Ds:82w/_bL{Rץ2]7ȋ#["~G}th=޽?ן|O>ry#r<7o|^|9r8:"m'O8/T3W=zhiJ>3,Ax8m>HK7 r:ϥ%AW2RK~2e IDAT'}/9%g?Ȳ6١WAOQ&: WO>󿹽N1T3*9Ft9 <T}77(wy#i{[U*z %NcaܙRJ ^A 85z`.!Dg$L^0i-g}ͫ.v6mwE]7(vQf`Pus"i~<4N4U391qp CrJMa#b>eyvp{w:d.!Ԗ79 r8t!ܿ=e}B͒t8NX#a9Ix2fD 50/O'u>$)z:M^+%YUko?z w_}4U8:Hsq2qp6,nPA YqhP,u Yw&ErbND\O7l]b<~DR:Nhpi8U8~y?p2!5sr,M C:"0*o|>Ǐv]z݋xyx|rTm<3qdm݄/}GnTתj)u0s%s4i i$r滻@K̍<ڻXiqaW},)(21xϴ{ V/Op'7 +l08x5!쾌]:8v6gKDK;EÛrJ77w͋_ v]NnF;Ss#"&d`r 8j DF 5N""sD[5W-fجfAYԭ Ѱ.0[s1tn9ebRSN$YNC;y6U8mBD1$" ^ݬ[  1K-.Z$-V'D@j)3̅ܩV7/y"z/t h+Il  uw)jBrOR&b%KEXMǽ8"S2뗨qJwC F~!E튗 s0A@v^^u-xffF ¹뺔S4:7!u )ܣ9a.yy98*?|q᦬|~S ƹY>ow۟W?sЂ;̛$NE01;R"aǠPa3R5D)tLi:~X173v[aBؖUw"n+xb a(biKHF 4 )1}N3%:.N^8:ٙyѓz*Ғ=Ab(ӓQ=$-rU&'fU 6d}J)6jnݱ4H"?_miu;մ2;G -`,Vpקgÿ~+$NhL~iErKJ5eT  6'6P9%qSQUk@#N%TnOˉ1#?'bLġulaFK gaAċiGQzeB:gDr= CgD p6"8@b&W_Xx48؍Yj  QhJH_#8(Kvxe9mnsGp3Թ拘)#!%|*,, h78\< _%%Q+IXTUE"tros^}緷?˟ ! !$EX[熋Ʒ>RnWҤ-^9l͖d5=%uc^Z*7iYUCW\ XS )]f(E'`CltN{u(Vk]iq=|@u,7@s #ƋoW}@L@m7PӔ33 nzjW[n)2!y"ŵVsZ%Q\"q/xIsݕS@|J2O̔j[C֪j{Q8+sU&bf}3q)sī6!DF=TȊ,/$4 )"n~1.jIQ;suyuAW/,̺~t]yLknrkTTRLbF|H\B1- (HA R 8$ģ=\"-C4ӼwA,uC⪍S5D'Ek  5IV%ҤYP=Qh? 9eֈ;"UUWo_MF3f6aj;%g*SK|KlCQ *F`R#3jp!3o6vvGŭK T%xqFSDvZ.K@o|L`5gbwk8y83!';.6.Y@ٳ6 q]/솴]wֶQcD# "︿~iq.U6?f!2i,}W(p[h.?c-Vj~/cKFl0"\o6,d`abZkՔ".p.5W͝%a)%3?N6ZiQ}$2P s!Jw@ ` a@}= K&܌`r ]k);NyvmͿ̍@" r&F"9EVo*F76o=9ͅ ]rmplPJn_A,k0Ə?g7OOg_|x(stO#ӁUhrR)0-}__lueC~lv)ebN]$IIy#t("F{\ӕKHu9XN[Dšz.̀#3ToZ~6vKj?_ V"P7@FkaK(k$Kqp- IRqpisyF+sӞ Xܛ!ss/kDxG"0w+/Z| 9QJhq$mj3lY :V$"$e2Yb m qpXc6azbV#R,wWִ*+6ȸ1)Hoo컹ñæw{!bwXs2n ;^hUaEՇHDƝ|GavG"$ y%o$bfԾ9Ox at歹QJOL[ZXheb%Z81a]ӯ?g<(XIhhfaNapV k .rj Ik|<&EQ6/ ꌀwEin>ҘԄK5-xT40zCyIITAiVsE F-9 s"c˹Z IZ%Vt(;EM{/F%^4O^Ժ?TJ")% 6orj5<ݿҷ/iY,T3DjH1߹"cirׅhd.o6nKrelrQtx8O"^|~h7X 2S$9kT0DjtvC]P3 *w~#cۀ_k;t]GLc6NL"AMm-`q%Le*HhX00Z}N-ICu93KUe|{7Nn$Ǜp(2a*Sj #] *D pPS+v4o^8C3K&NHI`f BȨ[픻kX?5{T" ~ w]y.E≥/_벗o,X͢a@;9NJf7Wsu_!0fZ|pf!1RG96[Vݨ-:*LBnDZMQX0FQDRwaf|)<$]RՍS궻f{:Ϫ߼|>ºn?ۗ_Śsk%@Ra#y:PFm s͐S0au9]۫ S6)%UeaBn\/>kceBq$]\Ž4C,<| hKN?||hi VAXYSZE1N@q]^M_)+ooYz@-6]Jz?/xCL*fK6HzY'7fI&%r:j6v7loq̩KRAw9S5_ Km[>Q#'$$mfZ[~ 7I,d(x}yq% ӗ厨ƯƋ,2\> 3js;yc$IĒL\|I0#25OΫ=<' w3fK&[E(s])mZ9X(Ek7jlǔ4bT'o*s!m߾{W/ͫog'bIy۹ZkZֶ*, ]EDXzP%HDrʩ ðiЊ$/s)oY:^q'6#_Vlc53 pN~j,-c&QGd~LT.J+HX|:ęW$8+ E(jtV'&։ɘM5-]iV?яs OI{J @haI g워 ,I*6Ud̳Y-E+˴8yXTq)- L!JcF<`0I^죫+<EXuQ碊RH93A|"VHu~:f9R X}kժ5H^d^ H_0Kl*tpv IDAT$ p U<p#5#"W8y4+&bF2q@D" µpYVs gtA3S}TJQu8eI(*ȩTuwd4P?{Gͫ^*n; WWW?b2:M㩆I~eu $u䒇!$~DR)b9z<3o۔1_#̏zKCv_|?[-6/K‰m63dd~N.b;7șE*aSn™NH ң]ڋr@8ss~ف?|gw%ߑ $wHNDNA7bngCDd:ɝܺ!vT.umxrRJ0,0&7uC,V#>K K44*du.qw Mo|f5'9p94-Q7xmǔ3| M*Vi7_>-!)qRbyV7c.2I_5`ŨIJю\o3Q`3y]cM;؇VLJqq >:9re86 !% LD9甹!v67qV钛GӖ "e >4 KaWYX#ڂHsCVV'9=""bƹz?i:u#Г=y N|=oq-xp,mY$zRie/b>ZM{ʻ]&.:I~Ya>w1%ID!'39t+vRӧ*9dڸ>LFr~ ]pyZP[.yEZop"_WbG4};06?v*+lkUdca9srLTk=SmhƈH@0! wcUZs%C$)+}qRnr,U֢Mwo,4&~VΡTF/ʡ0ԋe Y@N*AP<-[jU.j3SCrk/I|311Zk5x D- a]AhE~\ "DS)7~`"1oxgo+.ނ] IL8-^>H/ׯo}0 o7Mh9ar]|Ѱ T;~JKqה7$r. x ~C?i^I,`tcXiXswNMD"^tJs mpi"dC3oq<76}]y@ H0r,߇tr8E #bAOΓ.$/r*wvo}~>=?ş4@At)ej-5\6mަk`n R4BbGx 'w&% _&M$Mq,|eXRzU2ښ qwfXL`4lz8Z.Rˢ[җPBڡA=`Fb=2/C-U96 b˞Ir/Cy=`N:usG1$SNA#q^0A^W шˀinm;U3E\5NS ~}#w:M۷?'_sɦ(ofлytV+isy3cC7ZKt&s9K@$%S"v_֦ aҒVxr(o& i^q"z,:erxJ>~#_$g8]L` I`3Qm۹}1 `{rs\k}^Iˤ||&ssN]/˚%謵V͜…%K LU3vRfaK5sw@+lrP黾ˉ+ƎXĒRJ"0tDjj1=YK)s~ 䁆=Ǿ8UgZRՊRϢv7o W?vTӴQ5;rzwss4qu5d.jգ%'"2 [[7ĸ%wu.$fyk hP7hdgMgw2s6w4[O YVI$g߲KPpF U![Ò 󶽷 6&k{.BL4@M NBN^G`c$vݿi䯏AW+nj";Hf5Z wY%!)0Ý%hJ}QSM""(JFrZٜU &)u93j6Mvy^k.r@qu;9Ԥ0BHjg2uUyBՋ!9 "Q㲂D`h%H2E]lv7pLshkz1W,1Z 3="KpRD DĦܯ8ޟJ\ڵFIi͐$Z"7S7r mDB+m6xrpEk ͂Z7!`[nD*W&$1ᑀ!,͓q<wog' ,HO>;dZG70s-)aK6'usRwwɊv*!%QJeRN0VU$dI2 ;?! S^|9;7}ߧw;SQD@;9ގk1pp(I8XM)Ǒ;Me3BT\IoK,z+55 c.Jf %b!f0V= ́.pGu]>Ut{6}TEjUn'GU=+Ejy4ԪԜ6t0V'm׆vEՃֽެrʢB ڦrZbD}?8svc=/6MFY"Tșkibp{t2?J?yfsDF|z{d%R-BNjX$GE?-x>}?~!O!]%g0 !188jJJ"I!ejqF:c{>Ԝe (YDNۭgsɌB`PSzR>],'''P^v.Fbs^$@M7)=<Q4S<0$"2nTK Ii}tx۬|S3H|~ӧ!PrM⬔Al#[5L"9Ovi}0&Qm@>)D?1YQ[ZxT6; ufD0f}Y[ZYOZZ ;b,Wbv:""5es%iHDRjBJ׆ap}iDI$;gUB";$gĉAEFfm9W;$Px&7mB!R23Jy_p=#Zĝձ#==\0쪙7.ȴ-Z=Po4A`vlSJ8H^a> 1"x*5 1y_Ӗ{Q!86<:0f^ĭ g>HLªL4[VSV'M) @rg rP"3 Я'G) MjC 6}>`fqegD4zو irɃ۟ya5a4sh;:};%!,%PUCߨyĩ7dx~? w)ŦqMaoY H1x%UӔr!19!0ąvTRa^zaC>0dWg]ѧuzQrT4*~>>tSWef^ XGY/~r9+C.:V81&-ӠsAscKB/c2gRb%3)k&J+s7i Ȕo=_.f6*q9-dTk,׵z?u!B &)- &tL̋Bn $Ȣb&AfaC쳏][WK!01Eo" g' wI}C\LjRJCJ;0^JCl4ST}3suqY"??m*'LzmQ?Ln0PPI9s+ ThLK=ˌǚ1"Led"=`˃n!lY4=[(T8C ؠJS*~q# !4kfrdm[oZHl6buCC8W~URUeFD4W6zTtΠ- ~3%X荝\ 5jlܥ%0SbbJSb!g137MK9d<ˢ !`JDޱ^<ř[ߌz1[uTS"Nw&\˹R_Aѣ1QU51Ǧ;3 Li( qt;FA͒)ؐRa%`w߹{7s<ɊAx&R:la/ jGYP `{qoڙ,5 /QL'55|/V!(8/8:3?`È 6a M䮉.,:n[4^S>G7.Aybq0Ŋ{OH&e"#F Ч@]۵mBYŠb0͉C4SFSB̤ LY%ݲi:ɉdFHܞ %:Zv + ā9 4!NrnfR2bQSs֮ubwwN9eMFEdN6vXFHDI$->R U=*ߩ,YSj*OȭJq#2cdxT*jػKFN%.K95] 4h=I1r:+cයA# E҉(A ޒ:fNpfgZ{H)@f@U,`",;:> ic:AD)@laJ:cU=\ׯ[OKa9OWW D$98c6p@)h#&cצ:JyT QU>?g~T~iMƺyshضM׶]6c<^L\RRˉJm `"9/TKsfjyHC5 )%"2XJiDh-ؒoc9%f.dqfrҫ >l3s7#=)̻>bY(ܢ^ѶmmAkBΙc1cC۵V&jbTeMʔBLDv:HrIryc-ॵи[H PuG;6+ePVr`[?Ҙe%!p+ eDl8D&VsP}tsLʊSӀf@YŌYI&gY,[fS7gI?HԤ ܵR΄1gb9+ a!UY\P"1dm٠ήu>U:?|(4Ί@< ]?0`)RQ*83 023l\f3eQ*3RmrA:}KVqLHeLD6kuDԬ/o]YuU .ˮ֫X?m>d qly>gnȚ%#ndFU"6c HMhmwt"k; 7VG~~>٘AM!ɳW2=Bz#HK3Pi [27eoyt?^g|7}>v~iѧ}~o]>f^j6:T/xeSyrM=&En/&{hNlmۦM xQKa(d6!`/0ЖISaH!l"IȼweV FP$s^i3 IDATДBub{OyT 3c0ޔ$0k8Sb'08>bI:r51,4"ފLa0ol: CuSA%þfj*40[C5tg a T3z "I1]UHx((qm=: 3%i=z99;QXF)tZ`qϵ!4nGBrx15sQ,`dVsn W@5TE`d"jQ с(y|ة]2mO~plį|񎯿}o' ~]zWGTaF&`fS"3aȒ7O{N\pc(ّe~IR~@9! 9Ad(aejP2#UR#SO||Sr ᯾UE՗q;WDŽYA4 sxß恕m}`:nʌn-wr7<v|$ *v 6EwgguY "C e<%ڠ&*"Y%4T^ q`985VNjӜ0®Q!rZʝΉhfZ&֚EdJ$UWsJuS:lHOwb4xlR GarF |;b`3h(:0R7s 1JEiu&nR8X2-$3+J%kou| X gf.qM۵ݢk[YE˫Q?KK7;_VuH"wh3zUfnܞٖuZ$}wgy|'N^qUz}ٗ?_{w`Z21W<BY6p i:wp^> }Z69EN3$#eM80=`O,϶ yJ>Qck/d<\ɇ'7qc 0y H a^/忩>|[c˥c!Dsd%ݟQ_s\LrY)ǀ *Iv`RL)El",2Fb@@sR`1FLv RNi)6!g0~UE)k0&^.a*lDD^\3 9g !g"Z ]+rN ^eULjb YQkt]"M#bmdPlǸ|Ҍ9 PjM@`U Bٗ˦g`0+MRMfC5 (iD٬+41TϰLg*)FpyDfKu|w LHF?kB6I tpxS>mo}7w>?~Z׵=b?#ۡ2Fopao'^w+W\tiggqg?߽"vzI[ n8DާaS<` & \CLyQU\maFf?H|ѫ~p kL¼}Luٸs%DΧkZ;cɏsٶ+}-<b&XG3ll|͹1w1Cp 'bwyY,Ml֫u1ղy gx_+=eV=>)QA0PV͓f3R*KN Dsss"5DJy58Ӏ:s3^ui2 {&3yFb#9Y퓚fS"oTǚ*4H6PRD(9{* VL_ETkg3 1hyqYmvH8Y4&"vvvB''k3qsfx%僢J0ZQS5l&w yc>W]ֳ@ 4m~7bpwr5ؕ+/ۻ#<^] R'pFJkBh 6}۶i4gg36lwTQG 8o|9XCOߡ/y.#7<~53NsWb|daڇ6oZ"5`X0X4^GfVJ9Ux#4cmFf|WcmUiH4,*DZ,!Vcs8FfggWkOCyŘj"dq|ԩwJ5mBKjs]:*m$ -L>V|O+<6ź B|[ p'˛*n!AFج[92ȧӝZo֮fٸL\Q%bl8p ؖc>zZ#&u5y£7o={k^@5sH1(d(OM/=Rh }Z[sB 1ꂝ&o?K{oz>+{'^#|c}?[4%*W=>zՇy:$>߸~'>p6Xb9s#SM 䋑C DXͦu/* NMt\?J]P'S0Y1ڬ5)M{׸90yV`YWSvիW/\jΒsrMEfvD)ɚ&2_CUqaIl?H2sȌr}ߟl6D0lc#`9[:a kk Db-;m'}YNUSJC`fQ)!b)gq SUfԎ. n4-ʅ(763o|ѲMm%ԯm˩1攻"&(yФ$9X 1.OF/a/f _``:*[79+tC `vmۆ H*I2v\!E9y~uO7 "] e <>m4v]#w۸"D~*z:+ފ35)ж椮GO 0RTK 2eZ{T|&fČ. (ddcV΂KiRd"BuB?$ue׵b臞AcaIrR{AhP0"-N^N0!9>D4#` Dir}NP&1'- (ʂ{#6kU?<䙑F7S$%L.`0ۆ!"RZfALT%x 1;แyfVK̭mVp|"a%*ibb{&; *lY 3%tv#.} 7; aR=\̤jpc5u"cpӎ{R&"!PlH(!JzBH"ŲmvXm6sdrnl9;ȴc%<"2)vCPQ/13rVWGw߼x*c 0wf_@Dvy3wT-Cr*u]tT829ɶ,, O\;bǸ+ͬK&/o43sĠ0>^}m83PbM눦&bDNZ=LDd?H>̩L<Is :fs>,a^7m !b8f-Pjm&fb; 7y1F"Y3MdHD_9 Պ4,C4n1wO_N(:a>{Oظ1(*hƌDUYY ]h8 3fVdZ<҅^ Rg&/"x$63ͭ1Th ;Vs`]!0q0C,M IȔrbQmCUt,2wm"R!=,۾y[/桷m,bfY^T3 g }!bص% O{<!V9D1LM*?514]!#aC%0cs.8Dw)GTcg=O\ӧJ R%PEx %pe,WQAL.*Eәz\qqhRe.peW+'O,PYD*Tg ڬ.L$FFcmu-v.u{._qC0Y#o/OI۷,a=>a#|<=^3F?[7*;DK_37tuTh"\ĥu=={XlgmQʮ803bp)vdTOO8/&n4,YӶq6~ـh/3xp̹xY+ݮW3R,fI;x0 C16љYFODG"L-]QMa,fuϪI9K*O)|ݛpq~2P%@_566Jɚ Dcﳂd11T2w3qӅ8catPL|R2A96|{N.vVo [8\+F_hN/26E{42$Kh˼u7sWJKͫ4'3mE2n&Xv2QIc9KPbsB[qӷ<㽛-$ *ž@#,7< ˋKW/^ܽ Gn}#yņf}o-]\.σ\Ʊ8f{ŇxE'Qд"l4g9w5fycg?K!;ku~CcTW]4Vz놂V<oUI2%DpȦS:"{5%KQUڇO_'֯mV'6rYx9}_q xIQ1ph`ӓPxU71m8 C)f&"u F:m&}"9K<;_񱏦 !4D}PՃ2/m N·hg s5mNFD(| a7Q?9a=4ټuBWɗ>U2k& >r_Xӧ{F Ѻf9n ':Q)y!f;>"G| sW拭zdǾP"R;~>.^] f^RWϟ].AթכU9'%E-6Z,m}Zo-=aH"J|oƷnEpX&!|f֣pR B!1SjmRhL%K5LVPҔ`5k߄or;dVLI(nֺl1"".76;ݢz0oBO[|ރu|h^B+|[ [4X*U[kDbѬa*YqC8ZYPO7z+Po2R6V%TUcdž|C;N'WCeZIjcHZG*yVٵD|XIũVQ9"_>Nx~M5VG.w4bHE L@ı].wBpdxNVтA@%YUNVM?dQUMYRfRN)aH9;%!Iڨk%MT~ B}"H(L !2~-> DDdxt}n鑋:$qpLDqc4 6;Pujl^[ͱz %p@֊66T$ϗ][{W,wҐuP(,_^z'!y]? $$ԶB43k:m{Q4ɝ4}NoP/![vl ިVo|Yw?33ѷ}=Mw|+7>|”]#4J4)%@mqCUf]q1iSun>r'YށWoZ"Ko!?IYri<ӡi۝ݽƜo)"1PJ,Y_ kN)sNwݫ Ty}cHR=,]|rrcTZ\L1|CQdaV;u m(tFtAq|Z [3ћ_fIo|q `_2yqZt &"È1&+C6loֿIOB%Իfqr]"~zіҿ)H 5kk^AVtz Vm-I""7o/|c){"NvC*K>:z]=xOz^' vz njVoA2Nd?pQէR@u|Uc &5\Zn~1[C T'+128eq Z@fNdtOԤV3P}~qo_+ʆШ$-[%$fBH)3cX6]8Yd,CCa-6 I%(mF;;jɞLOqaq:\FM9ۓyZMm=}sDTB\3)ܗk+ß߽mh.>^˗_' ~#4_  _mob-oiQS z>*\U7xvo.ݽ{g9Y! ]|+? of5~X=H5}lbw+}'4߿̷oM6׿p)@CA}bpV@1 #%20Њy¨iT s' GՔ4qI' {л{uz1< (./~?u#n뺑~qlb4XJLиRHyȒ4{1*1 lil$r !,S^wo~SUĬK|M/L0,uz;3(;LR vnl/yM{xo>\?kz̓/C [F7]-*s/"(1-d9>nC`εoz 4,~ /_yPT-CSa2hJynDr۶n!9KY#zP"R6~&V\"Vg%LmXPG/I]ŵ[wbLisdbڶ!.e&}ڱL5@] V&^WХD:.}ZwԃXz2HgC )3 /n M6/^yco" K8 .ZN0kb+3![J ݍ" V J'23*}dnD fhvߛ&frѦ~u퓃;{wd(քQD7_{dQs33]$$vX$ %(eD&!Uq㤊"$Į8Ev\e;QY$` PZiЮVyϽGw{c^YΝ{^}5:l['g4"ME4sk jT+۽ Dp+{1;tlQvv]STG$\p4g8+WRkE"]_:AOdǤ8Q<~ΪmWJ6f;)4]Мj61@ztk-b8u!]I$>\J+xlN*>8#i>}+gFJQii#}”Q]w+8DCELC!ߟ6A8ַnߚ闦oto?/~-TgǟF{(I=M; Ggw9Y wwA) Q,Iʍ}{',t67Df DU-AD\{"GLjlyBnYs[ 9$Da"h/vE@̊8άwýr $jlӸ4+ڍ4k8*4ظmǪ]:UQt}SJ9weZ[xQ!zz Գ<Rz?MoC(ZmKv3sohh!V+03rS !vq67d!'pb51x?@i~3*H?xX C Yҳ`%=|EB Mlj5R1ss p &<9R`"#HXkbz+ph'9UըBXHv*\kfϦ jX`/ӿ|eov&PLZ=A.3yªgNi*Z[!Ċ4c"ٛ#Zr$&/ck44Ku'4ת .Q\2a0aV*= ͕%.5A)I1Y{%@5)˷9$0aӟ7]<]X"$$,y"u=ba(!Gw\@? eF̀<5WV 1+g lMcĪNAs45bd6FGǷFZN;N4GS% fVx}ɅY͵i(N̼aW3 #PwonyDX2)ŕޙ1Tش~!1Ep4gnlMw<5&^@i3mS2O$@"{B&ByQku-!qITEAw W0DÑ4ۺ]hOv|z a-NKRJWVt'¬ֈsʏ)+}h]Ka{c/)fBԜ ߚSAhL2tvR笱ȋ!s~CHìW^۫YUYb(/|tfP-^y!8Q[__xptwhaW+K 2덜Wg£WR.Ex/5//fNlolt@tB "1ua@˕Wev䃾1 %fvBn%2kђ8l4(#i̘c葉ز}ܑ䉗Ttlil6Yh5 `\k焒 F@V8Q[zW!][pa\=Jӫ= MS pRCJ3Eȉ#"񾆡[ɔ`/%=/|{H^)&ppNM.&##8#"ҙS#<;N|W&9:b.jQPU/W q5=b+_i*qr|t^cSiS a_=s4зgb,um7Ta̢6Տ]8JtLjWr\j{2]ӻ^̀4-7281u!uUC&Oc磽[Bc 0wea" pO <3@(ґȘC*m4Js% I TS |ɦln7om^>1uvYNdltE1u|cʯr*V9c^kEu s#A_% 9CX|Hq?~&w|Q[]9S!(lH\"qF88r)z+[$0Ir>4ίh'g)fBVi#?9h?%x±[]HNOQk94Ml+-kAU|[7$I|LP| ( p^)F42l`$Σ_?iaN̑/?%-XbsO@' IwSj*$?IG$\Uά/EPi@"ODNr@܊ǟ?^MXG{!N=h}?Uw?]U2^smj-y^?ZBg]$rYUlbG70ˍ@k$NJXY;u!!lqЋ5Zv&F-F{q063u:XX{H_oU $tRM#*U܄`r<NFYgvGHs`(#_@ 叾KU\Y)'~-<=ڂ(рbi<+jTwuEQkIڶ1CRxÑ+bw.NRZiA*U "S?ҲE=:Y'oESw)5GYaA=N,a*8f"w=ᠬX8k w~8_bUZs D)QG׸,V㨶7ྃ_ug-0Dy9Se|dϴ"Jt8ȷ?N`A3@vӓA^nC#xtsE {h9u\]gĆ"gb]V<7b97, 5ԚB=Ա֦Mhkqa!˲v#Nt(WC[!;@>YIL]j砤UuHkbEJ33bR33{źX#xEaZ-~k_<uMיB>l i}k4c qP )|P⬈[AUB0WdWB!쬴R< 7*.Qcȡm# 1/}O_Ti EݾP5c Sya1 _x&8kė}P<wwobf*93%չ0LNgm[ 2mЃ{I SsoC3T ֚qvN.WvP]yVᚋ{qD |onq" XtXS/?Tuז'N×<]5-mSPv~J?n+17q/ 5UZ!f0]#A1AУ/IDAThPE+TK˴sk:'6F3Mzty8Fsd9bcKG&'̜TYb*4%hܬp !w܍?$j T[*.njD tY]:av&w>5{Y91Z9sARL9kD\8c8Xx|Ԩx%71ݟax6 ~wɪ3$XQ;t{VUޖ< ;Bc)^3FH1phoޓ ]*Ti=\U-r@OqehOw"m\O]dPZafbtwPNƷtvaSX |B-k5Kh8ltw38N]ni QX^^smGZoxr6hOhᶺ8U pV$iHb²ry**DO_:"|rg ט7lOF6^~>-@X\XlyQwwȝ8&X'&Y)_|+ %f!8 yE<"ECL ;yo;UnM= J$M1&ﴋbM}yrTrU p&1_snЉ#"0ؓoNIЗ9t8JR\s9?1/OBJ;]穒Q;U%-M\25 F˂)) C|i\k+2`Ni#m^ZPk5Zq\84R:ɍmgs&6_87p'N/܀Ee:oϷ`龴])~kJ kGbmWRW+'wpթfUѲT{u¶f\V<j׊Rt qc-D0 i# .T NLڝNA1)Z<7rS_keoDf$"l`?׎r{cd͗I6.[BO!HEDBLy*uGD1J'zq<1q L/{g @qz)t`#S-AʪݬB(zpf-s`o$ @a`y)2qh[xBsljRI3_hML9gμ)W ׷I:(l.gy=G\&f+l͆&1O&ڊDwXOƊ Yy VSʖ1l>G!]waB`=Ap 0Q3mi6b  [U$Ď5J :r֙mN[ $lR43PM)*%' M`jip4 'qQ鄰Js+;Y{ k]pR00xz1 k`w)"%?EC¥'M8PYZs@YJ. ɈVMF2H}Vˌ .OOd# aDiNlfH(:++k'MAW e*$v5%=wxN )$*;tKX.(gSYI<s0eUK@B (Ĉ뮇5+re ~޼C8 ~6A,v?W5nAΰJ8+0Y7:B7^BW$Z"eP?S 9=3{Trw]q"ƈw k<a)2_T)%p…- c"` u6<8y}0i*MwY?,̦ }qXB8uAd_D+qҾtU=d6SHܒ@] :^^›ʐO˷kZU.AIcke3[X%N%`߿V񸐓Lw4y-b@?TH|X|XLs ^.2\t6ʪpVY|؆5N;ؼC"B>h9 +{~ӂ=j gP [FsġղKw^s>a+UkWVy1W>3O LG5 e $Ųz>Wnj[Ïz5jm,Mp8yU\` ZKIM6ZM֊ 5x0jŅR) ?WߣuOk1ԯvU.ykrUq<hWU.'$<:9Zq1q. "4j~q^8Bw\u6L/jE5`ǎm;vZٳ'MӥNя|#_W ơ [l+w]mr~x͛7w[$I:GD7z[ ˠ&5O~-r뭷߿@܏;wu|;o5pye؝-)LOO\nӟ4DTuŢ{~ /c6=za~p寻ꫫ-N_=qر}]wu绉h߾}'N8 [+&'';,..P/:v[ '(j朢d$:q_cQc(}٘siFΚ:_c=Q5jxv[QF5jԨQF5jԨQF5B;־IENDB`fdroidserver-1.0.9/tests/repo/org.videolan.vlc/en-US/sevenInchScreenshots/screenshot5.png0000664000175000017500000040465213243530567031473 0ustar hanshans00000000000000PNG  IHDR'65P)sBITO IDATxw]u?קrӓL&Z(;"`.ݵ+kE]a?Q]Wu]EQH' !LϽsicfR' $C >`ryO;0 x"(}wHPa˞:aNJd02g,p^ГV @^eoV{9:܋Ǡ㟨N~6ݏ)3 Kv[HP۸0Jl lߝz7}o+38̅?\S ?%V,5c#7_*༼bρ*q5t C ͨpEx?aH;p\ > ѐs/qLz=8곸Cx{ﵡBw`R֖ w!}߽ݳ2a;_2}|ӮU w{Ka-li5 x" ۱/a1rFX( MPh9y,f\]*0omeC̼oNL zz#퐅!0b|6Gdg;íb j']7+g Ѐw.{4,@ ȵ>7kr7Dўz)(DSf3;[0 o\:uH #}) Tv_%3?I:v1 ?4.$g× Z<7}4s?Â^+??&R1g;9-d@)"^™F4P7aqs\'=,( o {xi^3 !5 9nx96;X1?K32!n(# !0 8uuPg k(tc+|pAB>@'NmKq፠}x /UY`EB`9}/dK WSOx <6 nDێo ⲯ4e^Ēp 㰝IЙ\m"". 4LۚaXވ:P#+h ߁ucW~q\\^O.pϿbxƖ|(o`h-)|Nj璽ǰ-p ()Nǜd|)l|W]1Dx^ѡm"Br}M2Oߢġ̒a/W`/w c4m@Ac7?8}_ZgMO"ր%bx[՞ny=ڗ8F< s"`k(x4eyFi`O܉x#:Kq 1ލ?}&<+q.7`iX$ŵ;!p/0zE&|OǗNC sj0 NljV ZXN/YoCl>]Ķ';5Rn^-4-Ň~ q{=cvJ@4{k&}0;F`t|5#50}U4::p5_mD%aG,=sB%2x}-ӉLtK]1L.`=8ۡ3Qg-l>,gNTjO)@/W%ab*caa~|aR(! aKLH8aqd"/lL aF30 Ø>&aD0 ccaLu 0ca1}L1 &L9wx1aGȓ1M:a @LlDP'|X"BD/QLw x9OW R7][ƞH6 )~Bʳ?*Oz )_N=`]՗: aIB3$Ϲ^ϓo~ zr:.w#7^-Qfl֩cߡ}i1tD^c0Ը}N}|prrN9L~jg/*/<4P+o#+` Qr sIi!o׀xÝzѫ[Izy, Еa}=($ȥMa+B  ./ ~΃Juƿ?> {p΃ t,wu 3n\=6IW&)ѭ!]O;gG ۅM7a*O(v_ϓlg"~wȯ }n>@A=.7PKko'[~bA@V5wANCw*|`9S|um'ZL_H>G]R8̅{Ne\p-FvqtfS1Cł [iaݲH-xr裎,`v5ݱT^|=: dB}5Q.p;pwc%u8Ǧvvyg=ZNPQoDv>ة2|yU4D;qCˌ'7Ӏ۩ EZ[!;g /X;_>1c'{Km͋t|Rbn@y~p(8{ӧx x367 ah\FZ@\w'} &,/T*ʆaY:Z"LC4g\|p>@܎!/ <ѝ_C}_|M#ǒ!Ŏֵ;b`y 8C0.@@Xtv&|3ah^ @Wa2ĥ_OMÒ+Ѻ=~z%05ØH=ݔw x۞P +1kR'gvHݠ٪S׺ԩ 'N@Td[U-$ n}pndJQ@t0#$m1Yqu8.B4N}"S tN| \G?=|:s-wqS ԍRǿ>%R߭<3!%YwAn !q ][ڥ%ճNQǽm{4iV 4oIOers-~ (dQXV8ܠ>k}ȝ}+B`h r30(#U H;~ ]uvPȶ؟>LMHy닭0Ձaw1{˸sES#z?͡;"݁G~[(P+aF4 1@>΂fHw3*݌O02# ݏ'خ}:r  U2KCAzWc %/56>NV8}ŶCd9 }+VPSma{#ZcK߯PTۇ[_| p@\~-aP xǸxխXu;N{?J[ѽ *}h?  q knaM^MХ瞭=JkNAs%8d/qghV'~>e؀ v@B^oal aq24?yԙʽ "䫦vmC6޿ Mye!|8FUl f? Yp܈?ðxs*DG~G?u?ˇ8lOU 3EغruQڽ hn~W|#7O1O:0 cEг_%k0a|xC=*qx/j X.' tրբ9#vE@lDϔ`tXa,Ļyy.@5y[l E O}m`{~K2VCc˅-9h:cY#w6 =I @#wwXaDxBv "/'z|pz0Q0Ρn:g<0 Ø>&aD0 ccaLu 0ca1}L1 0?̟ujaRdzypa!V?g>O~j=q"!n~8pa/t=6mbl;Z+:::c]]]Eh_0 eh?5ɤ,Js~{;8q)d0 8RPJ L}Ud>K ;_\2a`MҮ@MnT&U._' P2% ! ;W}to'@ǒ&`)ߟO)!58>2f ʽݾ[vxʝ((W@NSDFG< <̑1}-lGjmfm_z#hW^hRd?)B|my]TjC] P{yGruwSP{;RzjMg q9H{tC  *^v#5?]K2]V'(w.kt#15Ki=;~;V6޽ FK`2^،j,lȉH0Wv;w/v0 w_M޽dp;WѝOG+; RD R#iLmHIh̤TJJJ,8SJA5g^$ jΥkHܲǎd䅁ET8SJ3B,FRRT|H9̢R )%QTJ(*TeYB)#Ji$q,@eɄFtyC,qvD_48R jlh֣qPHRZAK=rDiAV,3JRiM!y.H%b6㌲HDJDrfSQ~(TxLASJGp:Ɣ)5Îr)=ϽV#W{ﲄL~#Zik `#8^C]9~P۶j׳G7Z'b@ۖki#EL^ ݘn{ޯff>yɶ[lQb{_OcvuBQ?R+r;$2!jJ1)Z) BVZʪ&Ts8cRR#EVDqF0Ki "t¶\@6A"q馕Ϯgo+'2_0q:e\k\s Q ƶxUjQTWئN8[ ,KAm^aㆶPe+V654$loj#+h,:@+.BRtQ_v?rsZP=oT -I 4J3*֒c6KDa ܎|ޗ"s9ou{YVukiiZ\Y )f;] ul[H&(Qj^TX- qᒘ*)"Hq1̳z-VPM!3 ]9#BQ)I2M%*#Kr> jŝ(cvΥ37=paYq nkq6|q;vƹ˶GZu"lAl*V2HZPC x* ,!ac;J+3ʨ&DX3RrƂr8w^~{5gNjIKu[zV;tXTܺ惲ܐ/tұ{EUĢGΦ_\7NeDh$RE @H#m(бZWJ]PRR%L)"(4!Dk7f^:q#jֆü*PanH3.ൂ-1#yKSn" (ל^XrLv9- zpM0)W RM U"`dx  mISSS<#%ܶ0еjmd(A({tͤ$⮈'ZFQ*u)4dtD{AZ?cKP)Ue&bٙ)QI5훇0wph!ݘ#7 qnX9I\Q8+u!@]k WJRrPue Pi(-Ak1-*a*T#hE!")VZ %Pu?mM׼d:6gI*#Bo̖#f_eDƴ#9:зŋ~,RgsaFkFZ-V¢8q\;YH]^Z֙3;$rON:fIl3bg^cT=wJ\{^M1%[ny8AX||K:r2d2৻K>𚎙Jrggzf{u[JT<ܻ󻆆kocn6fJjE0q&szvٖZr9JQVEE jnIƆ>g);ʯ妬 V؛EɦM 3EDG`ڊ)BRj0qMTR4RyvMq9N_ǨXonsgWA]i(i9i>T=usoeKV>SN<[?־ |e[v+J 6eACK%5%rFA l+ Bct!JI"jM sгg[tg<Ù]*/$@[֝DcӆWPB!/5Mc Mcq#G $1ia_5]LُM؝y pχ: RR)"%RDRBP%!-BBЏRP802kn100\PpGѨ~$P),oD3%|qm[wa!r96)U+~ؔܞ+ YΟ17YOhp¨E)Y羦YD991m JumNTU±z{OsZQyd, Q@ P94G*?jgRqU5tLgvT*LQ0-kR5ѐR=/H#J9$w~=ҘM%f4u˒+ޚeِ#1:VyuPKƣHJ30Jڃ ]C[6gm߿K;M'jϬєk۲(AhjhH4VfRض&V !-@KQpJ@{j:rl PTBȿ<_e0k!1є5%ɤWWNgPFJ1@CʒX,h%sV ^7L8xh2r&s! 6SNT"@\xFTip&4aPJ5$$Q@C0p͉vܸ!/TՐKe;g56Ͽ3P)K~6}~wƨ}3zyT{9. ym3/k.[|D?ݚmvd|a򞌼D1J3V.Y$V H *w{ ?)V,tR2g~9&Hܞjjl4("LvV*ẵ[:ۇe(HX "J6 ߑnX?-W,}+ԞZ:$#ս 2,eR*W~>"Z,V[ZpҒ&݁X;2"UMD1bEܑD،TX,_,l8zQ N:9cq▫g6Z:#鸓Ԥ_HyLR7,F%R.-ИVDu`wXT[f:=-nv2Zs۟uRnc`eG`A] 5^aպO:80G7-]r,;K~|SI#64'J:./{ԚShFRӸk%E]~H ( 4)!"J _XwКፖ4\-[0DQɊ'[\wbq)á9zk%$k/tN߀:7d"5սQUZ jdt"lDZm^NLT#'X BHtfmڋ_ӊŝM$4WAX-F`/ "ڛ-J$; TPu֡JrmJK-T}j[gXw+WOڬ)q]d?n;[{VEsRִݷ5ߑerqDQ&&;Xиv D8ӄћ]:㸾 -&҉kV]Z+C1A/]rm\gek7[ d(`&{񍭳:. s/5+-< jUJBMH RYQV|B^R:&hGFM±])^k0FI@9:Re S Z[zc\S]9ZInt6588϶ʈv2딪Tbppā )c)>|o4E8և?pu*E*T+^0WUjQB[sN ֌l6O8|~x؉12RJBVZ>*H:#"-PH$Z q:=[R 8RWAR+Dd8pqժj(Q~k_r+OZR͙Jj-D)qsR-(q %h @NAhF4UBkJQ%LH)*&RMh;a1ljkBz Z T*%"eRRk P.Y&V$B0ةD2/Gm-MO TgVkE9 V\t.{kyҬo˦O?g»zAJR)r3Z2]'?XJݗDETk¨ I+%(R0:v_O =6K!e٣hgM-ˮLw9+*KU%$PT Xtja˜pܓ4tc;# iE#˖hJB5Y97Owg7Kv!(:so=g׷}RPŞ' oJ|}g'9}}c/c7nl55!IgyvН(uf,LRvk5|]N?sc٥0,7iE&E2h hE"I"PqEg֚x|p k$Yb+Bfg[cJd( la #vF[mrmiY 8DD0bmSP&+'^F![𰟃 w~^wto֜uaYu3U I!G"b ɰ#d"EkdS&RvX2*K˂c27RֈM& IFk],k-Xv<!90C2/ ;fn>DfUui (M:Ȳ\օ.JPJT$EÉ@R TP ю=vnnvwtj ]1Ǘ/\sYo;v?hiZ[7 QUB'j=d`Zoڊ9Y_4 x\Ea `їU8 3 ӢH)<Ymx<͎G _UJei$VߴtOYIF$K ܕ˩W"ONKpVZ4%V: ρP"'@TC*ks9~8zd+#T9X F&0R5lhu:IlHH: [G=d%XgIIoOܸz냧~?Wj t+xqun鯸OG~u7~䀘R8Ģ,9B[(; !sZfhAsn  @RmfpO#}{Ue4.`[H(T8Fv2D'"<ɲ"M7+y 0#f"Tֲ16ˋDֹsA٤q |Jt9wP+JIk6%0ZNJ (=?eBHUJ)u.@P朱nfqMEnWZS'N?CE~L;iq "SGkw ]n1E?qq:9ҩvYvhnmcX^dlF.GnoWgceB ~eŋDeZ|+/ƼBeY $l#)jT3 ; J.h\ +@+Ijn4`gg O+Xi-x%ӓ$d'@;&g%J)!c0vQm&MmJa֥GN<;ӧo: U/Azi۝qb(qOJ[^QZвVJ kw7F3;+dB,З_+2o_][ۨޑٗn/]-^2c+\ԲwLkPX /KmQ9-df&BZ<&y +3$^/Ԛ@! ja&V`qVPrvA{'D1iqU [@yڱCiC阁$01M@tEλl3 )@(s[x,;t BJY|Ij4$|Gs"!{`bЉ fc=N׋҂_eiє V+bEup^P'JBw.1@f PӲ(Ш kcgH(%}Xk`&~MS̀1:,Uxmoܰ,,̊{=NPQdK3HJ)A~QPld$iz3Fwb 7 ;L"XT|OΔAAYSDrc[1V k-"2[ØV5fz=הWK,ZjKJn](/ _#*njc?l^+8lO?0YꑲM߉N}kF"2ntg+չ۷ot\ˆC=QQO.wDmgfwtm9˗<\cHY!EE-jnV֟#OP k4ťUJn}gyuSD^vaj<Mۗz;[)/|e˒; _=(_9=[4Fp^d Ĉ15 ̝c0B :_8wp4iB{}HUl=;?ZVH"||ƜMj;l/Fa4")ݍJ633Z|ٞ:p͕:y폔mo?e9T.EkWY`Re{zW:-,37-+z- r(̰N#")Cs8$."P@(>I'C#x1=i;ZϳA3?r|Lc4JV U (ΡѪ wphY8t16,-RcԩqH@Ɣe)'^q+-!Espti8YOP:cJD*?O?[':hHqa@[kk误H %)/+o<%/j +Z51ooX[:aBf!PւٙƬ?3k <=שyV/Xd]yn^tJN"+*FZԔe~R]j?z6XiE5p2hqvqkXZclmG.ғĽ"P@@m-dYIpPE揇ewt<ɓnW=)2ɒ 5a-7vΟɵ|R?ٻp y9K<2󲼺Zkݛ[pd']C TgQVQ*c $Ua@RH)zY cW 8]T KKCSP^6dȮZQԡ2IiA(7iu8b1:78 BR bd}E,ؕJ I$7Ӭȏŗ^?!~I(I!5B =i=R})vjυ޼%ޕGpΰ ??iS_?qNAϬy/t>;%ie Z$Ԁ=C$)-P8({ b * T@F HJ˴p` Kv֕E6v m"Z8 p FWփɵ$ڮѹq<[dyU-THF]62IlY?9y(3 j,ߓtwarxk@`o歽j!mgګ}1|xO9{uxlٳ/_glٙ[X߼wwg_S -H(԰}};VM`a@rNUo΄ w<՝q }l)w(å~vF9 ˋ:&AsQ(PlXב| qʚIeet!0.*F% JuyY , KΌ(8~˗} f*(FAxǪv;+ : r7Z8a Uw$wlx`(%WZY $_y߉MX)ƭfz+K@gng/n5aI׶{2d8~S"bH@W "v!Lt SW8R))uZ(v.$iHXQ)ӵԫW:iՊ2ISVY&t yZ](˼p "6"RI_ *@{Sa͹8q;+ɧ~o9MH$g R Q՚,:Ĺ5F[+Y 3!xCӹc '۫~ .??quGmo|b5:ݸ[Ԗ*@"{Ng !kc) /X D@1].A;)$EIDc! Z(Kv; (A7%> iw [fĺȫݹ~rhA:p|3`g@..̥ 4j-^UUse x~[3v_r)P*Ww չ8褕OƦجLԓ]t?/O~`Ь…fU*YZ|;ssвKJeZ  w uY6a`F(,,gnU]/8_fkw{`""W3_=kW @,Wˆz0h5ĒsWz+Vmn֗ޜļO߹HhѣG?~E%K ґYŽOE.8=;szn4fPYp=NmrSXsΝӉ +ɅKG?_~zKLDȖ $'* +T>č (CO:c⑌*RqQ8ٙi\2Q`ۻ|Sh`=k-8tfN7^^96kj#FEYyWO;rt.jqbq5k`UTQS}ϊ8QO0EEzRz{JJ" "QP:$$4})ŗ_xɗW" pe(<_[V0(9puir@ )hw2;b[J=68rm^ j+l~O:S~dě岏 ء `;aF0奸)u'( :2@"-[b PPhgE `c`&c k 5)ay}99v`NdˍjO}"J@˝fݯǎ6g$ wGgW^Q{:ēGc=?NVuv,J=~jMLC}۹үҕW}w/"fàw+wGOz F?ʯٸfz#-ɬf?1;sxt먯G7gҬ6 G`Wս8 n*8`3;[Ʈݞ(VOlT[ 1PF\kn[@aXvQMJWG~ґP!#pDLB([^xzVXII7==AMj+ L uS%Pf}( Dd,pƺJa9h I^< O,xHFۻ=O9_ 5(V.|q/7a1 0qlOzFnkAPtLѠ]TH#;a7R?($Ƶ:;F(( # Ĺ#0ey;oa[PĐSQ KKC sC猳Y ,XD$,GROGPhZ%Š ^ԛnM.6>=fHa/jz?cq&\hUiwT",1`2YߓQdbZ'*lbpg}_GfA5Tfo U(APA2)@,ϾWwwXKۙ՗/=wHpsA%(Oq)*Q&TBʋ 53ZGBa)A&Ź~lFoaX/ |yQJ}Td,733 5!\Ymo{1מnXG;=X&yj{l{֊zcV\|i&Pq39g껿}_?o5[ܭkX^Bsq՗7 %;k;A)(*PՌJZ|_yvnH3 &rƷKn6oz#la<`gѨAdb|$"DFFRҸd]?$M5Zؤ5+Z22Ps [zg.(yU!x=UF9 mn_X+?6JŚ_ߋSQtdڤ[Yg/#OHİ&?_m}۟?S,xR]Y{T"ĬBɚ.'|Ckkm]t 윝?^97/zm{l^Fn~; k-s:@bAZ4"S@>Ecy4)bE~QYQ0T%)]"se|B$PCfk C!%РmKSGZuF,,U]o0U|z9X[-mnc];2#hֈl`{9l@> =DTd3"QXxA*xZu2looY6.ب g,"^Y4/4ϒȭ%;meY&1:9xY=ֲU+Bk*y"L YQ Vg}`TyP*p+_|⩧}y{/=q/|&iVa.ӌ9+AK!GATIf#`cy5EJHAkcD .̖B$3wk}2>,{EݴxӑД̔qLc<u(k cIP8t r>P X0AUd] 訁è]OwA n'D}=7zhpZpzS4I^JA80氭.Ө~89 {ҝdZso^n7s; |wIV҉VgMJ*W21e^3ը}OBP0qG0Gqsxks; J͏ùfY8Mn]|z8;rqA,)$Xc58 'gEP W~-Wjpbf3:d\_V(z( 83xIQ򨰎 B\׫A+w;{CWx':5d,kRbK ~2*ʃI1v@##V<|lf>Ȕ(`3'|g 1̅jl\;oYQ`xkx.;(D BskS3'sVHS\j NΟ>qW;|o|泿=e9t PG"k%&t,.bk)P!@ABcvL׺qap L9B08Κ͆edcIʯ(Y݌T3 Ij-簷x>q~Lf[7<_{CsC(vԚV$N;3$Xʚ%#cnKݳ8. 0Ĝ_82  Hu [$z0 Z=~YM$̘9"Wy=gIOՠ4V뱦ao>߼ݘ_7YT^sӺj><-2N<'C[ݸn.YEzz(=c-5B*Z7%ΐ kفS"d)ltX.AHf$F""bkiGƺ C):GĈVfgu'THY|t8U ݏ.N'{hvYTKK2/O߱qͪ"lH#sKVO^X=ҩKGf0HxIT$҉$$ bĩ8ˣj鴤2Kƃd0%XBI2i~w`LU080R;c1jkI$;gE>~Nm,'drdrjY[n#Ds@L͘j `h!/q`c V\I5 M5֦-iC$54X PR1`@t &ڻfȘͭWZү9@%'[jZt^^l =58Մq[lw,-8Gh-ڕ6T~oxO?/>?Mr֢_Y:qn{`kspk;fW "us{N_Uq:-ТPZժ9 r8^J72H61DƏJ$#,&74ι۷gV^,$% 2!ʖ,e!Cŀa[%Y-H!MLrP3][VeU.~]CTlɀQC<$~_=,/*0@#cI2CF$IĨ[Ͼ1 !wT RO ;*mK+턏XXP2n R0S9 c BZ؍Ϣ_0.!+L!226$ؒTfZi^G 4(0y3q_A {c3CQ@Q!TKߠU"9UDSX⠋~|xb8F {&QK%5ujTOx< M+drNCɹ@RIC` AIF)p+P h ]zm3"R7Ub1=g q޵k̗M*{gM~spt꯼ˆ~P;lfJJ="b6?!0 !$tq ")(v%LDZ'ZGi;&G+9W (DPc!AF5ȋS?ro=x8p ( "y)1i.Al܎c1¦>a.8~W'&N&FP Q 8d+ۓ~5PxA. B](`zxgN;k,Mh^M TVp|PAн׏=g謚4 AjA_k@0Aݹwoc{Ť*HejN#lp#?ZgOeOo^YރPc'K:zQ7[pJ2#<{T=>;ܞgiyIB+;Ա#uNw޾|Ķa`%JڅD?wSj3n^?s hG,JvȥB+0FHN(Nei"ș A0dxٔVd:%'#(d =,*a  $F(ut|ago\8+:;g[jG&TNs|x̋d2߽[_ZCuiH!ч2/Yމ\`$ MEYUSVM%n:qk#TdLu)Us[9լZQ"ȇeqfҞN8:kLLZC J!2{k+diF7޸<_o;|BP6aC`cP@h7ތ?[33!uQl A"@XjyZ $@ &b?(2pcg(lh<^fC@ڥ4BLfˈ>$dR`M՘(mrsW!)VI:V!뚝`(dnj.=^9IDo~g3.yxP-H!jԏ(KfM;"]]_޹tl.VJZ):VY-J. ;1R,fJ`2kgpew6(NsZv/wS*)Dexx `20a&)yd*کٺryr&φ;Cǔ:b6t/d۳{BoyKc:Yqh%o۝+[݃a}`|e6O|_SZԉ𤒏ޝ՝dzSjddNg:e=>|8>;MB+)uz:=yx]?P 6phR,M*z%9$FYI Z,sQ@WJpP$QJȺʇ&4J  Y!B002!BP+%VQOfE4Yq!<>>D'>LO|'>o'%#Vq{ۻ1|=y<:3%}Ơ˪ .#@8E(8]l]eYt~Օ @Z)hx JEQ{ xJ*B x7~7nu~gFe|w׹w%:BI"Y:qޣqPi={oTQ8R 67a~R|5eBl2#0eX )@AdZV:j y%B|@(%cmCǨ\޾uǹK5F]`XEXE;Z3[(M/g #YAlbw U 烬+',l-h F+i [YƽGt]U,JE1) |ǶlyTVFŤl:]|tMdPd`TZ@ yzxőM ཟj2_w"fLZ8o^uƋSYooLSjk~>5Mk߸ V$J E'4\~vm[€&;h ؍NGIu<_0`)K }5B P*D#MA>~f$dvՍuŬG O~V''N]SkƓ5X7޾K:k7.ǻi*p$:{|f6|Jh U*v #B5!43rRe{x=n[-֪ *Q`JAIi΋mi -(?~5qV''o`e4KJ>9w E/n'a xdBw!$5,1y~zzj]uZ v$P 'bN[-&fG@d>:=ƻo=b?ů^o_xv6O|xpuy V94rq IDATRx}lVU6Um"`#O'0MQPDpX8 !b3 b !R`B~@o(%l|lLW矊B|:%JG^keXȔe72Vd `Ƀ4)̅ple` aH@iԱ1ŨF"K[K,^$雺\K[Z+]bv2xKw6wjʢΪ%*(bEN`g7H9?ow4 X? bRG1b2@Omtz{1 :*n@k\j'b6t;3@~?W($^ / IB@D,Q Ysi%2vu-(t7!'yk1N#rJ7W|W}XRa/ϖtt;ےݹw7nuQEYĭ h &"͍4ծC!lliMHexZ 2!hPJ(NVu_Y !PHGxF|b0"DJ!VμZMr06`.HaUqdN&)ʹ RQߴa{6)GG`ŇY밠 [B!PֺqgȗYd*mudH(#Dt#T%HGBKs"z啗\:2>`6Mgo~:͖>`TEweEЌ@ESgOq1SFFF A@ F@ ߟ{#AքNؕ! j @!(@INVBH@~i+*棏>;]TqڳibiK̲dzzwcckBI'y9.X岱e$%ZiS@jA@^˺Sׯ9.;| F- 3[lH.w~`x<67}#ߺ}ӝ [7njzb01JxL("6 cmSJ0)"/P"(jE5uqD g3jXͲH.TY‘4a#X zS$bw.rVg||ž]Պx@r h$ H2 ypS6׺y7H"I'77\of~rR.nݿnn7_v+5^dcʧz8ND@4F Uֹ4uQՋj㞖Zx)ۣK \UtiP ZKD80@Y̖R4K\m(J Z5u>KD3Q<[WޘmC؃Ӎ@˼q?|&6vUY5s\2'ѰlQ,ͲV֎ JD󼬛r@D"j׷̟}PMU 4NwصaOSMgN%[:q; Ϗ6yŦ #E  q'u#N@,0sáj DC,RBH)V>2BhdUrևZgQ;PiaGv$ɑ3 sv|vY0o=^. V!1E]k%{dVRfGb ޽;EW{b6\pmv kc6.D Pyµ֚z/+w|0:=ﵸӎM"Av^il_~;<>?$L|sauʝߜH[Wwzuƣi=ܟnuRCEw^y}snO~gLƈGh}#'IA>0 B:I=ZA=G~߽J\L8 &IE$P@Kj90 fA}@ED98ƨ--$nlz^hROFÍ[|m-능U>PPYs}Cm_jYkn\<:Lk{G BtNI./I Ȣv w4phלfzޥ~!0)t~ccKyx^BjXxGqT, w[r>>;y4/_"7΁"-|q/ߧ Q Y NR,4, !P^ kW'' BT7hrAHMfuE U!>Omn3@on+߽VG%Yr~>έ;|[\3,9ߊ,^Z?yHGn]vZ%:Nln5ٺ MQX24NjodmlgVh,' @(i* A bFZBD˿3PpJ?5&:P_s۹pʕ(^'޾+o=vLN顉:z[˶0bÇ_gxj: dГ {2uk&4@13G@b\iHX dlD*@ AiS2|@ $/ekBJ8ZIB六: $LGgg=8;k!yQkeT rkG {vD ҫC5;_^6|.#7T9_ySHMYͫ孍A⎏O`k/t!N20r}ͫׄp V[;J$dIΪN*n/Fz ZӓQ9(ʅL;]G'G]{vvfQJu+!L;=YڲB)6ԎZNF֛bDirʻq!H E @00Q`ur8>:4( 'Z%>|Xpi(W/2~/S2ZyTQ7ä]c<vEZB8w0AG[+/<_? կF O'uYJ(TS9xԝ$5fk++RC`@o #!`0 ADH?@V_s)uQBLֺ,KuWNRUBuѹ?rF/Z|\J& ibk(s߇Mu8?abvM;D DA UeUJԆ.C][Qhn|Y7Rv;M] D2.]ua _C]AHI%(IFGOJ:_˯?xp-eXt6v6,\BIv'ΏƑg be)ı_{d6ġ%2YĈP<>ђ3D)$tEfe"_- c̨β1ZwKe־.BQGBH2kdڤv/m ~s"4@bw=+-1xR @yVǭz/\w[MdygU&l5s.+v8t2]` nk9;fB57[Ib"Nr%ʲa 2)GHUUU[Euz|>=QϞOgQl犦)&%k]Sɼpue.WucHiIe[dTRX*YEyt6T$HAl^Y+*R*ROp?LG§_Q|J?U&! Y0;ŝ^|7鼴Ťu]FXkd$po2O?C]Usې J 12V )4Md49&jg`VbeCJF!(003a=* !Bfu$QEu] iŬ޽u(o\@䲶Zr]W&hqnB}Ƴ:lƒwP:Rh)b2JiYXҩ~yonmq,k:Nf"t;MYN u# Y, ai @}sY~t΃ן9QMYTioi6ý_YIO]ߺE 0'&B$ KFD d$>Сp%jz8$:uI;X<)S:_^gߚU(hGmE$=:S[ww[OjABMsa,c@ ; Vm^t X2f|BX13Pz|`k(:*U^r X הy\gnfM#fMdS-uZIY,ʲZJ!֑!12bҪ%&k%r0[Mʪ"||+wv*jvw狩w4s|sЯse&d65Hr]ݙ {{^fQi<4)E^ñ|Z <:ZKR/*'qoQ]5E܏?_[etpx6Lcˍݝ*I;O);brׁ4e$,_RwfFI!pE`)@ ZF +&bLoڹv}^EC.\J"!8Ǿo}7?yw>1ʪpe [pycš}||W}od(VR-ѣo^y/__/ Hie"UdTE FRh j7LdžښoI$͋& dMTMI@%KgcqFxۃ/'q4]dL P-׾zw]/,!I(ꀠՁz[^)rfbBk8/gQϭ:4ͯu/^ /(|eM"46<֖`QeSBr`> >|Sח 5| BE`dsm}׮jgm)$l2+SlwRͅC"]BJ֢AZ d!I 睖z7y]@#AM,4o|;Z M):ۻtf˿-Sv9{>%uUơbYE;ۛғ*f[^u3Ց7_{ݿ7o?dYfb* Z3H:Nnj{<:͖:RL Bbl`6]΅(dNk{퉻V1 T =7P/q3jUT3^&ggear^G :nűGѼ;?zoB\|}t69=NbE@eL,5ĘXlX,''JkO,sU\7~k8 |,޹wqs! K'cWpgtzR\7եpztm [GNqSM j2(!'@O67<6}# + 3"A;!H)=0&f"` 7@@8D@S bdjhei`}vvڊ@HTp>/˲i|xj\/'|RX Wlcso`f y<: ~o9Z61Q8>^~=zy)"q~jQ̔)o[$hk/%[%T䁗ŋW.վb-pz~%lYZ#h5L>ԵC)@Ad;lFӥ^*i'L-e&K W4tQvzn<$$;3!*NAM*L %*BgD*AB @*._h"%pais杇vkw( oŲʗKrl[? IDATzyUճy~2ee*\S0uY?gz׎f_otx2FeI&eqEie%k$۸E0BJH`sV@ҫ&4ڸVBpޅ" @Fu;|a^Te;9;m%I,N[N\gylX&vw{/:?|^`[-NbX_kxtw4) nu(2F-Ԡ|]<[],.ޚ Ng7^.vnZe+T?\jʚrhʻR+3.DEkס=WX] ڛ<1yšnoۻ[ͭw卑֙0;Ch~ssc^Vul< nZ ׷2KG0uh&C  3 2J!Xb6wn?yD$t0ۨ{v~mx:{xksHfg_NYDquc}(/(,CӪ?W{gT޸_Wjy((Pl88($ւҺU=b"W@{5"AD"``̓1 @d{3ClKNzvg) M󫻻oBE]}X A9pC*`Zlp/\Bt֢"m$qDZI]{#`xbqP4b8CQbDCšQu'Ɗ@"#o AÇ zJAs/,AP騩ݽwƵ^u]+W '!+ϴϋvV"bk/Ǧ{{Y7~c/XFҊӌ|9޼=fX>Ne0R5!xKa!4i4v^-)J/ SP{ϑ+}D cD'gkL_tZId)}v1Z.8nt8B&΋[t_[(+@ z?!y^y}Eu\ݰ_||/uE;&5Yk_:KݎV-+t{;zu+ׯ=ׇehXb"pyAD9 ^ʪH-åi|2\g?&|EPюM,tY&Yf|^ XC( " ª($A!Rǣm\D9Q h\,JC]F7ytkU9[eE?T'=(mjg]HcEKWryqr*CzYMFe @hP F,?seMI.t~<e~qgF1{;M]=};/aeӗf?W8n{¸iy偝h =:IA W`ǬaFQ`HŮv1@fD"AfyBva ȀaQ4K3 bYREQ$Zښ #ΫZ>MNF<3~ߺ3/* %z0q&@`@ U3n.2%9LN{ ;g Ά_y?*[wnSkȇ^__4ؾ$΋>0wq*5.]Ua[W8)gv;|`)D{Nb3,~ۯnuX_]鍀Tԍs766ҭ~8>?fioVMF~1,?wi+E2.P8-RQ?%BaRޖkG|^::uv+~ϟ^{rш*]ҹ}w8]jq񣧮]><8ώ>jDkGڐ ZHEyy{cLpVt>:z٨^vY宭%ޤmd7n=`4ڹ`|#Tr1c< xi C*b*>@!6@ފ `}0` b0s` s`8ikBPV5SJQ 2e0²Cֺw^|8%!s@CeCpK C"%OJFlYRyQk >bYjW/fW6;'7?׷EGgXT4Z,KZjLTŲ.d ؉R$D\nm9̗KlXQU73K @I!}t*$Txd\{|Zt7.cʲ|9/*f\W,sP͂m*\EVE!wYG# ҴI.P@,h(4E_M|PF@Qש"x8k%ZEgŲͫC(6Q4i=92Ji|Pʌ6<:&q+rt2*;?'W|W]j"H  2xL$XH̞+("VjŜ ?1zBZXĘ.Rj%QD(ȃY[YukZäHϿpZ5MXLe{WI /=~h,˪g-tG0I"gK$yB˴Td9_cpǏw7 =x<;[wh"M& W虵Iuϧ5U!y'Y9<ߋ;]`zmaa t<*ngnepm"$ "#CkBGK%h jlm,2 f!X<߀W~|t HΒVQL^'t6ud1X+ڲuڝV"ôo|'/- !IEh"ZQJC\Rċ;CALG0.4%Da MvŬV DNo7|sxt+{{W~~^/[u]J`*b)n44ҭVn}:k\j|:@&IEg]QW"FR2[.*'^OO^qs{4ܽsrv>⼲q=&AU;wƖ~t<>>,Ӿl\]9۾AS7a:QIX"N/bM.f;_G=A"d.'JH5 K\V쭍-SȫA+\ʬ06 hS=ٹ4ޥm|1)Q]iE*$NTk)ډvB[n, .K;/D)[_-"quPEQ;F[9qXŽ4?~k_ՐwDU{A&uݔr!IXA@E'hER1wZ'ŷN&uLtR F'E{PNKD8AD㏏S$`0/|Ƶx9.+\(B}0v[O_'t(*wGW~n/J|je_ʯQƯ}O߸՚B:#ӭ~ڌ/o]uάj"Iyw:(\0iԳo r!>oUkQa `;'en?{l("SD!m$u3(QTyuXj?W.dY D"% " il \[Vl=ux2۽lme j:_RD/?o_X W{i4*`&<-2pZk ֺfAρ B&֝|ۛ?o8Q=\"ESB!&%yh<:lwsc]?/'X袄NGB{,lc4\ډEo[B$ AŔ=h2ME0Uq7M+"fΗ<3PGr87cp(_j`I|D- &6O7N (5$I[,D`1(gt:s!tyI(NMҪ`YoUli &B3_c4" I>\c`H@ D"4q~PiAT3d>`G6NNg}qlb# +՟xrF1ȭ,ٽ{7yjxvX\rZ[K .MUd+/w'sH# #8V;::x~1ί| zO_?Z_vsm7S?M5ys IDAT<aS.$uqZy\L a Zb:U$]y.}>n/:lGRG꽇yQuy$b~mvG1wz] 1Ajs@ɧ#X?PA}}w44}y0My,M=HD*h $ 0[!,I@Dw9djegg-R4KŢҵEQdIς (Em՟xʝlQ@;NpQ3(j94ySUlyxt ! 8&[Iυ,6-օ,X4XR "8Y-HHϋHi6]p h=Bcˢv2;FhklkE=:>ZZ'^̚Aw ΃G!"Z[yׇ:N(ɎSL295y9UC, [Qr~d"O<B'2VOF `$+>#?~jKõ^>X'iy?=ع~q~&,1Yng*ӕؚ\@'Dz8QD@(I%QGQ+Vyz6uTPF>F89( 6~:=L3zxƍO͵o|_zG~ _D~;mZ'(-rx1[[v|lɨan ARF~Aցtt;_l7Or*HW3yrAVz"VBOjy[_S2ל,_8nnfsM%ڐ21ـY|`YuVn, >0@XV jeZa4q&4Km.6EaOHDL$f(A{x(ŢlZ:1T̗f u]yh?<֤]\r'|6'cל5 ƒ$Ry4>xOmk܊T+&DR7?AA@ PJ-pu+e a&_S2\Cn2c ;_Q<5y*~@]H8xVC"N V ؇(Tއ@f D&e1kBd;wl(Nz^v[o|H֢h"lL>]?Q<uX_eVBFgBTԥfI|i+/3ZV[ZG'Vuo.B2b 6R{СjXX87Dl F:,גɡ<Iuk[;:}à E/ƓgS5]ͼcxO uEC6P|C DE1 L;:OYah\FA~ZI4]_GJxP,#`A;#/8Py+8(Jwwv;fc꫿ 78yr߽կ ?CϔoNW6|Gɢ>/#?;qL[j .畒v2,+!laa7D"tHtWzNA4?v\Ռ3GK?&hO¢b`FA  @@ @D'խgxŅDED/xk:Wiq`@PKAc&BW[!Yyf(8/ZY.g"JsݬZAS9.B u?t3:5u[Vf4g)fZ51Ō {aɜllV<8˧45:3n`pz^45+"Yq2Q^.k"4ZI3f'kkMYK཯k=te C wR̥R}p۝N2h:U]{=+Ѹ;XLMYmnnnR4N*2b KWsȘh4.rE&y'FeIH>Xnll,"EHhjK':rZUebejmykۻ? ?4 uQVpsVJFCĕR*""l y)"#,ޖuQXD=UvcaDu]#rDZ?|~\(fZn\$@} vo7quZ۰o拟>__J0?S \MinQܽ3jT'VhFEauy5¼p3QAz8zss>|soߜ^4dU|Vt޿_[,OsBB q`-02!bQWՔ |AH D]~` )&~z(q,j~BZUaX9!2F\V>:"pVxi{ ӊiVEP*2s$om`MʻNAe1\;:4Ұ˺,UvZ&FE9[ MTjJd@d~ MY5E4gyz|EmQ&@m},FDJ+5X-lpkk]Dܿ}0Xp\_~:/Llclޟ#&IEԾ8ncֱB0i"E3/Se~<=<<8]{*#45NR=< o ZڌX Kxx?hIֆCP~G {A|sDh8 ^,dGw~r:*2~Dt<\_kן'z7ONw;ZS9E0iY9޽zhiOvc9[W_;hSW ?>Sh}'?O nWSN'F9# 8A~K֘ŀ OdeDbo8|-դօ̙HQV~ʎ+u uJVXšۮWaV"lVҊZ?>J⃓:v7 ʢO\ĂJV(pR!DZMR fV[ZELӤnm$QixAD2=Xlm,M]gN g[.iU9&&q ug~ 66eyff͂5ˮ:tosʼ9\YJ$4YI ZfCGt?@MKmV#IU%BUTp|=.?|" 鋼'ύgeleݾun6.*7n#,JQE|m'@iuZNz{{é-\ vluiܖg vR ~!O]H;m3UNE<.v 5oݾ H bl2cT{dռ d1 o^,jZG皲k;N(6 U,?7okXSNý[oo6;fRv<-郏=4 4!%" $gg1b^Dij*XӴn\\pi@Cv:K,Lyt2w ,`#xSO?/0` ⾢1q@Gk9!i4 ԉ͍,nӹv6R9{1ـqΝs $X9}UBK3y^9j8L|KX uER:OO|^zm#rwg{fSWOA#J`!.YyYcAmԣ7<|FIY/-Vɮ [vNޭK;{yݽ'~i,(O671jj)ӆB,!N l9sN2 dmIa'#_ 5>z|7-ePhyG;#'?8 ! pO`y ȵ!cV3?innoZ-Ӕu !x#Bp T$Hr@z92%;7v,8ZkIQ K<N4RJ( GcEY`^r &pk[/uh32G3:  <ԍs{nӲyp#J~i?Jpgwul%}ۦ,;;(R8>$IUVkϏz LLE8*VH|ZWz+{ ۹:RvJ.MýR{wTr6ƚ~'y]ab]vz8)51b Qg~80TtOߚ]<`4R滿ߌdA$q;Z=$ƁLP@)xE NTe8G PMhk>+^ziӹ׈; I??C!|r\  .5ޚp!nM w !W<@( !xB%ldw;]@>XʺCSPkW{~0+$L/>d3mmhu?7}[_z,9||uV̿ݷ6>@ օ&@|4k˺'./}%4ݷ4Z,3~ΫoVNݚ{7l|}s7^z{t2`A IKk9"F"@8j! p Q@X8@C8 >MaÞi̥\[a9=N9! 8Q zJ`W m@o<2Rrc)e9,BXUYN+#ΐ0(1!V Yje( 4͢$x͋:I%$bcmmggT'V:ΗW,4Jz~ iB>6YZk1quuNjwv68HQdV.-/I,y$Pu 85nvU04m_/|c̺ @>ZRe @JӸx>>t2D{ʊCuSt׍FB};c~gNn\x7k_>"2z?y~Wz_?:yK]NnؼKo~Co@zp1y/缬kkC]íCj:RdVg"iAL$Am<RJlEa5XYY:YWl2+&9ZkRQ^|CF;[ȄB ED+=kA&g~uc09hz0MA(MY>XU)]:xɨn8R\0 ͋X%0v"0[wX\)lLҪ%y`jȽ B$l ~pg"\vLr2ju?qMz h5XYohҍ=$7ս{qB禮%fT:5 o2MYfQY5UCTjP76/zj38d>(w9 W:[+?~m: ٢+2Ԋ-1 L5vsR,1E<cQ2FGq0gxM]44Ѵ,b#PI⼶%['7{Z~ׇzgw?g?[k;ʷ⟖f $2HH@@DQ,uKT#Ƶ$R1 wmu]> XRXF,MeKYy5``H44})nɶ;7zytsN^}.6H"F GP[T^cZ>VmD~8馬1D@Ѿi4 h*B6˶(| d2.u7%`ĢrdP*Z[p&K3 >gH 'îJte<  Z $f,搏`B`US<\zyL̑5onH(@(&leO CV_ӗ4ֺikRZ`YIS+?nWmpEU8cwȚZ"d cYJ|gt=kC;ݪ{6oy3K7nHN1 mͦݘ7&TBdz8Ya jh[JkK!)]م9@"Xjm`^i{0zcMoSJ $2e<<.1< B ` Z["hcE` 9"@ r9 B=c{Oчџ eXG\h&x$X#ǘH0u4yP7u,mßCY1zgh4"!֦~@8iAYkx I{ۚǔױb'c`:,0N"V3yエ>p.[QU;_ m7x-aOx'QbNrA!0<ԍFs]aUV۽3Ot/',|ݏg; AN ,`uN q:c\&M]3$d,mmQuڝ၈8 &Pyl#6e|k{g42|i@-ĵa@n[K=5Fp$dx>fcJ9U])m4L0Vux/?h'lnR`j&V-n?ĝ~rR`wbaeMvS?y߅7L"Mep<-!x!CAqD$s`9ͩ(Τkmބɬc=s;FТqd*EYV Vk\SUI8cn,zc-y@Ν=sC@? Υ@9G2@2$_^_?' 1X 3Sއ' ,E»=ikZ( 0=yΤ`^aipQB:t^"z7~U]ǒq#g!G>Tr $v!S]pZh Ν{VWh)G|tݗF@%[gȀA)a5mw>WaZnfUWxu|(ۀp6x*j˴ }[w}z{[_z x=qϹd9E` 'T1C-dM]Ljg|2o\އ*Mԧז$Q)Q &CBX:DȐj [H_Ux@ *]ؽ1\ZRRRu^7ArWJ,@8ni7u1K$BdIRvuvG1QΆkÐE8.놋gtlpm_# q֘@~{^Nb@RdJ<ʪM/I}؉Օ)j-y:4ntι:VZ>~E]#/t}Nb*Qwb/<_㨽0$ΚY W*>峂+.8>|O< )M_NJ^]S_i@uXh_ۙ9|3YՕʝЇ&Qs)y *۝@Rmcr.b4dz Qwe9ģPri9" x82ΙYQb"fDRTdLp`8\1~HI~Q crP;Z]o#BCӠ="g<s&B`Z.p뜓R2^J:76S>xa?!|?EQ|7wxMwqF@#_$(!{YXĘ8 J\H3{/|ƭV/kgduL yЦFH&.)+CDz1Ayr:9gSQTYaI+rM9 Rfwn+Ӽlϊ=i]?9 RY?g3ORiYٲHü-f׫۝dQ4V:iAY) `慕^ΥFdG6W, =\8G$PP9Vxtm2%ch]ؼs1iQTs!DSwvnF+%5JN8M*Pw lQœA (5{ ,O?vm+鼚:r[1+i"Ւ [il➻_0O,A>iO8]yѬzt>Z2Nyɵh~|57-ݺ|dr gшD!P"gXˑ1DƘ=!(0 g̓ !ΧxP~>o\"6 Aeq3C ,5Bн[91rh<1VH$oz|g>s]wݾ}sŋz|G>3yMӍ^ySZpTp Eږ^Ngc{g$uM.Ozu*<|ᏞZd4rm:@ֹ^^i 6@${噭 s g<-3BBeq8sf*"#@ѹ qcA-g˃~W_O}Sʯ||3ϟKZu*8c>8,vjjm.)ΫX nl/~~fE1~+_zWY.ę9\@OB͍2IɋC"iӵȇ H1*ӥpz ` 54X1ֲYSkz{c드@W76 :=ع3~+8 d'$ȝseҹ1)kjZWꉅ=wx/jj;SSKmNq0 ML.H.t6Ɔ6vTT5 ڎft `%D䝷` M7 xc! e<'˝e[EǷ{7gk˺q_zj7IB).z-C=&q\pai[^U)ľWVZ#n7OKzw~҉άlVnjjmK"bR6M@)bDo|l{>7Wo]xKY+3>Z?}AݯGGLu֩ʐm [swmUȅ76?t6͆uH[3/ɤ#)`Ō &:8J"gVitgӃN]znK+QʈGsF\W֝%DpvdT3 @Q(\0T^ʺ-{uѠuW$jg PyҔ_26F;@l<ߡ@ BR6ژ,KhpHŝ"@#c 3 TFcn7MH7O}رc'~?//#ŷz-wQ2! 4yw$Zq<{zd4ړO?LN)cr=:8~b婯tVzluX[` @ &uR0%6f*jGX^i*"X ye|6UHI+);[XzmBٸܸN"3^EN_ӇeŐ Q"Ōuy(A0U)r_Um59H|6i- 7^*}*R}8NZF;M/N"KWfGY1lKһrWgoTV~Q*op[<#OLbh1So{|ls=["5+muW” dVwsHp;LF$no;Q4z^'oe)QId1P{u}kȱc|w BڹaԆ6DL$BF1q )@p1:+1w˝{l>u?ȄQ׹}F|D%Y;UUqc>'^He'ZzT$8 "r΀I ^gB0$3 HV)IJ{bp&F|7b=q疳wKZVذqE2Nw]xBT*A7[dt8kqm6HD<㦞+k` (/cТ˛ި5[ :>}w&a:,ͼdg)Bسꨩo>rrK)AhJnvFN=P.?{ }Z;Ѳ~TE.8#_XdEi@B] Ze^x oQRx 1$"l@R.^p@H U+@ӿ@\j V@ br />c7֖{KҠ2{Fki8G޹v+reE@R\ja0Xi{ GLVK-XOmov[D*MY#R>_NVcd%zA1.XB9އ>p),HO#_Y^tW[`˺n2x?Oŗ}_'?\rjy+NOpHۿ$V?U;{E^p.=zƹFZuqƮxcNs'wN˺CbF IDATeImuq.nҭJG`]JW@rK{<ebF)NXCNxG@ A0EaqgӺ[>ܫ 6/Ra$Ӎ5v_Eusg;mwNG|-[\//3 i5t(#{{lDLCqw]^Z?>vWo7zNM n 5&j39Fӆd0?v>9Rr"O8,<$,!,5SS&"QڊW"J^Q{..4߼6twlqPʓ1ldV߸3Zh*mRsO&>8g[6z?u|׉y]N!R5&ئO&NcꥳL"RrPӃ<M) GXRw{Gl!$+Zi!"Y> +^ wiڑau'B̋ٳDo~/SNŗ?{[^>s,H._Htp[O]n0/?b&___0>:{"<u,eu&" 06O]UZ w+dr}4iJDl,Xp4LƳewL}뽣ý֙U`g]$hTu8D;I@@Щ?yqS@X`rN89i. Xu-4p=.K$ Xi#HX 3asj)DTͥkvΤ ёL @X#J$3TUD"Vimcomj͑cB5JUIukjqhmHl\1P](&b\'`Q;TXR@nOMBĭnjpST7"[5xk>ivٶJ *,3w75Umk Z\ͥyTJ'b4xbk.6-CD9[sY{n|F 䊶. `n쌷CM+JM=RX`Y\̌DvwDga@E`u4-N-aLZi.ԒְíͲ=k2n"ԎN+ *W:ZɶI(V]n? U'G'a'DSJ(EX4ED2)UEQ]V/ x2ɘ6 B)HṮk䀹m!nӚQgT%RD8΁BNp8@ 9`堩Q[!erąaxLح kDo&ؽ{7Bh„ !=Z&>tn'N8wK"O//.=ϥ_{E;؃}/jQh),H4ls۶^^۸ikՀ DPq{ Cj"cfR#(8kH2e6XA H$3mg2Q&q]Fz1c}/YWm4SbOCx K+U3lARF|PAPmˆBJ 7V̫=vNԦ6$*1uj{bѵՉMʆmMqvJ0lT[#3C+DIBSUҌ LyL-.P(U /-3gZ'LkgXP VO pR'hR륚70* , V4}h4M3NEUy4Ud(5BS3mð zl*iA9 S7f`#cj VU٦v+e)]s+Dg.=ۇ0!DÀu=˧t#ut)f-#JvnTϨԔ-#t(H DEaL8 N>o,Dq.w:@ $:@lN`[&XT!8#* ٖj:Fض @C@ ۶]-.ti9lMة IfvC_uދ3gμ;l̙l;tn'88 !`(U! qzܲޭeԴbD~E,klRPo=持.+#BTΌ@-8P|> mܼD 8X@dУe87=#=^4HW /3tk{, ښɤ1 e\ R5`\S1BWUAQHִ bn34ɨec?(*.KX v4??X:L[}&^b R ]̣ܺa&JC%Ef&A0WRlRY0sS[ D"qp :bM/н>͍)ma"X᜺]ZQaព$&@B^`0ckS )e@UQ1 64UQBfr7W%4 $l*YJE$%4l *+$1׿̙裏qLs}UWWۖA0!`KT\t*, E#Dc!&q0,JV}cꪂh-faj8L ٬A9pd66iK˘d D́BP6 LDMDVmFbK mPf[4F&)H\fZhoX*PIY+5*&I @pmS2UPP}[rE>Q=qUYˢs+>_וX,12 b~I1pqcS, GeRuLQڈ80Ո6G&U 4XWFO!Y@4p*-xHtXtOS|ͶEQ64[s(e#Au*|.@@A48`t¶ 2MSpd4 F4c+iPyڂu;e[+.]Q?^d4ȨA|>ݭ ؆!RT^Rگ5jSyu`ne9g1\,,D&7/E׍ _ $EDHDB y#A:z1 R11aY#ۭcY1DZ\VOccz~F_Ssxׯ馛K qoXVFAbۯ,ڦz)=2LB[%eҴ% _TLG2 nŶl;5i9QrZY(ň#WL&,B qpAm BP(ugňq1入v\;RmM$J+ڸ`EmxC}adۚo舑*7nuWc$LPn a)'inA΅M8KL+  !K08w)B`l:ɀ+fJ3PYKRsûih*`FmE0K逇X܎EHU2dV*u[[Pux$ !@@t:f  T6mQiTFbCH(gSL" ۶  qRZ0 0(`%m2˨GV#qFH4ױW_}uEEٳG9ߺu[oLl`f"&tw Ol\(„qH3Ӵ s.8ٖ\3D̠2[N2{c (G"Ʉ@Sjk[MnߣjĶ(pdK:\/TNcFfQNڭi<9㖂Ҙ#m)%PlPu{ MMNTq*DS¼ !AffUjE!L@k]L08`[? 7١ Ď-ی@p+9n@s4,ܑ04QJG;JLG{-bۜ@*!^{=Rl69 8myAH!)yn,bTh6UxI/5$",3P'X{$QXE3cƵe ,6M8&XU0p02; Pl=MQD׃PyMU äGS}HE`Hsaxb1BABQnх86`! $@ceH $8hGg(F<ՊC.h*#ϰcX8^ڞHjJ#mlIWnNc܇lغ7p eun((wHJBn@p& , Cmȷ'JTGP6AHp |bHG7|N @:WB[/h}& ڹrBBSW>p=v$Aw=&a>:8x.30qhXqȟ{/Vxyzuq|$ fpLH뱮{BZv%Q2t# IDAT/#&`6ߍ^ޖS-z`Νv{D=mUUU=d<ѣGnzݷ>d9g<)EG>uBa<Ӷm4_b˖-=ii^s5cƌYbŒ%KB-UU}Ǯڢܝ{n? s^SS!rovm<.9:tyW.r9*yX,fY__QQ:EY~}}}^z\eP~7уuK.rVYO}{.X}O?W\Q\\GO ;(Ayꩧ"b7UU}gΝ[RRrj("bĈm q . ֑ƍ1Ɓ@ng/BiZ{H5 (I³:kÆ eaEyWn}].r>ӊ(*ip˘} ɉrΜ97p޽{vH$2`Ylv׮]ӦMu>H$w_0|)wﮮ馛{}ѷz븶'Bc۶m5lBDB .`˖-#G Ë-bӦMSeٲet?qqq~kqΧNz饗۷o4??kjjxe˖qί3u}/ow Dc !~a0$i{f̘[|W^)ge˖QJ9Ǐr.|9眏7.3f ,\o+&OsϪ*++ gfFss!CzgRe3g0`oQFQJ_xw}r 7\uU>;^xo#<_u_vet:`3W^7!{H]]{#رc7oz455ROqUW/Q{YpK/ m`[ZZ"x׮]6[e?1xojkkNtҢ}{p_-"#~hYҥK:Xj|Jp&_ϟ?qD/~1lذܸF_V袋d4iBs}vXx}裏˖-;߽`N$k֬8qG}4`9{s=lP(OرrnѣG'_+8a+m8筭eeeEEE'ldW(++|PCqw<=ɓ,Y/Mwxl{7`ʕ3f0MS>R@ p@=``-Zt}xέJ)1boҧze%>}\ߝuY&Mb744رc~?clڴi6mB<C!|>$^ K,;vlqqq2fBK/TؠAN+--mii!u]okޞH$pw}wy_:c !tW^ڢ0 o^OcX~;L2s:B>B{n4]b9 09yBڰɩ6 `(Ci˖-555B@qqq>SSXIז-[1hv@ 0snrHN8q\V4555ÇY 7.{`SL+Q/p ,BBC%K|[ߒk>׾tR8ppBVQ.9peiVz`O~l6'N|d+T*֖bǗ۷ŋP(4vXWzǏ}Ν{wpoF[n„ g}ɓ_]FS)sIkN~T*zA͛78HP(iZaaabwӟT'92DҬC^m z뭥7nj>UW]UVV3w5`_(>lqqԩS&uׯ_z?n;ʉ!mƍdJKK{\]:,l4-i0vX!رc\֓|"74:bꫯΛ7/d@fB7onjjBwU s>u!,_~n;7֤c˲Fώ1⢋.:&6lp8xVЁ H{{{rA:|Yj՘1cjjj,Y"7 rdٳg?lZ>3B|44Ҥ cկ~_v\?x42\ܺ,sΝrz˟|n9sWqyyyaaao>Oz.\xwW.Ϛ+gQ]] ֭[(ʶm. /|kM8QHɧ2[+.zy'g؍(m۶;|ywoow[UU즄PқSva5І b BH*ڱc bX*@ `xƍ#FH3UUyt:m)Sx )ʟ~+++khh755E" 7/\wH!W9=z~;(09?weGwuF-\s|^n#Fy睆as=ѣ9EEE#F+@ =;<_ҜZ^VVccj֬Y۶g̘_ɓ'1⡇u] 0 @j˯ܑ#=x8Ae^.s%Ku}xC猪&zG?mEQ*++*/~z>Ǥs'|***\rɓO>ywK~b?τ .~P^^^ZZ:vXwWy /8Rگ_kޚ={܇_R~@`Μ9{oѯ_4URR\G?ZB ҆m=ّE%ҰWdƘ+9swA7tOG^6$/+77u{ !xKx;;wfL&8tY&wn$=͵<`_Ct{qRT4u,_q!m0xǎBNOPGڰ%IBcx.9r^Ӵ 8)Dn9;6NN,rBC9H{0+1c\SSذ9\qt @tM?l9 [ee3$s*, yԀCG^ǁ>p8=8\ǁzq8pރu8pA:8pp"!үb# !AWP܅ s14VΥx1!*sz"cK `? WEOm#TU rvg!)ݫ~S'7ڵkW\o|Cf]9OG!˛^P&YzuCC{c 0nܸ-[lݺ 6jԨ 6e2;X65|M9Tjkko>-L03Xzu{{{<>} z5'Y-NO4) ٙH$jkkǍs#M@_~ڵӧOׯc{aaa87oioFqqq&KE ].׹瞛s(@F8p?P(ӦMK,_җއtwtRYE]|kM6`7o޼{T*u~?-[&Mtr!ѱj*UUO+WFDbʔ)|iHdڴi?9XlΜ92\`G}$8_s5---s|󎪪x|Μ9 9a+۶ʆ*פx<矇L&n:gذan;Gu֥S0lv„ :w9slڴ ֬Y3wܹs~'nݺK/tܹ˗/7M3J)J͙3gƌ^xaee 1s.Ls3f̝;?<&d˲fΜyW.[DvڵuV!Ķm۶o.> 24D"iӦSru ҢQFYEYvg} 4aݺu\pE]TRRԴrK.dH$477K项f֬Y3fF?c錱T*'̜9sƌ io̙#2t 2̏ s饗~k_[t)!$nٲo߾uV6leYDb֭w>)H2 frQ1cƌ+bz_ve˖-K$ӧO2>FRiii|gϞ9sgYSS.K.dʕiƍ~nNU0ڿ9Z0ƻw~***O>X¶˗o޼|ѢEPw (** m_~R۶ XVVV[[[___YYI)R5MBho !z-%+V8qb֬Yh4ZVVNe\!dƌ"੧r\ihtӦMTj͚5LׯߦMNpA0`،cfioo/,,ܸqc4moo/))I$G`f7onkkm/ \傞i&_?OrzT*nݺl6jժl6 /رs>`rI~Q^^M6 >\Rs^XXJBK,d2 7V9rMgqFkkk~83Kn8WpΧLRRRrg=xDBvw5iҤ2c扫qEYhԩS l߾}۶m`0? x>s̑Y"24ҥK9Kf~ ,wޑU߿䘔9'O.--noo?UXI=m}>D"۶m'2/^(ٲe{E:묜"\Q˗3c\XXX[[iٳsas?s0\.֬Y #G8pa_YY9rH8qbYYIDn|I_2[|dEEşy(mmmPH!b؎;?$OGn|ˑCt &k׮/xڴiv4Ͳ|eYK~LYnL1^hѬYE"Xǰ= !-={\i@񒸧OxBHkkۿG}4{>{ܸq7ovr2Nbu[!4!PUuÆ n{СYj~/4mذaҚ &{R!: IDAT4sa(^z8p`sGݟ',B護ޚ3g9s.˗~˲dv3MSۖ$V7n@e-^x޼yBgX?ypN.c,w!{|+  !Rٳ1{Yz 裏ϟxbJ)xC UTTR={躞JZZZ>Cƣ(,"L644~QsD$ܨO:+_yGѪUVE"5k֔TWW/[,-Zh̙.k͊^z„ rWnժUuuuTjqkk'8٪[i.Z(/Hí]vu6REQ{\nu8 I/?JQW_}uРAXcƍEEEeee6m }ȑ#_/BbcL !?qҤI{iii(riZ2u]h4d H$@@*R z'l!ܜf@4mƍB1c=Ouuu44vR)p\DB GGnE􄔧s3rݚFtE7vr|Bpv*=v{$t|Ni|2HTB(Ձ4CMޓuE,+gOAZ$%!IJ,-ZO-EQ qZlb\8W/<h{  IC|dE:C赻=tí[ ͵L8`By޽9$g]ѥ2>Ł蚺1!,BgVla5"!B`h爐޻Yr]k3O=ݭnud=lɖ_|%6w.\L<=aGzyamԛ EU1ȩưh`P @/孡f&N=~{D*DV tBhUAP UJGz0wxG~Gya*P4M~߿[O|bvvk G2ڔ'z*ʰ ,ISրw{k:?* XU\pg?x_wW02EX՜?Z"J1S7T~K]D }*uQ4cLAJe`hWuUTHV\;լΣ|0!8ś+!|Kꦌ!*H>MǭNhNX0V8 tL-ްcBHa,ƍ҈9R0hDư0"Z$@{ o@yUJRЖ.U@X@*|7M ~oovmyk1zQjLDNc wn, >WeҏW4_+hw³wʯת_s{ P(eVľ `A1@^ j@(\)e HDX&@/E@V kF[͛n>ߞaNXɠT0@BD1ڈu$ 1c.T3| |:sӭF/ D6*KVyc(8;@*d#!l$ IU0 "(SK( X`#VX Q}x ^{{ND}zo:)Nhj6CAe^Y#לjvZ&0!eʳ EEPqB i톊2" JD Ν<;+LtQnl7:Y HƆ )"(֎XU@sgy0ZU4(ªWvO!;4W[ eȨ@XQY:ϑy(sg a8f;=u^UDrڠw1dWQ:АL6^~k]G-xe?HJ4 9E&LDi!(0߹h˦(aiOTQ`dC@DB%$!Vv?ЏڷkjH3 $fvͬK9ː c06fe5l(\[_ٿo Ew/t̙b+1YrȎjPYC4B;j$ -a%@ @ JhbTU@9vލ X<n)l_VM+V:R+Cn;U@ -}:jZŎXW*N;*+(WjcN}ΓNȻSϙlۯa._Z$o6_zg~~Ͽ<+|<~w՛gz!Nk?1lt_W?ow&1npccjj[[xnYmSNIq\SOpEw/~öVڙK;o7:dm0`noo}{=ШǣHh8&W/\zozw"!~~wVt8޺~-7yaۤ^Z0&5"Bd}*⼊σpx |%wߊ?#?c?Go8c#.~OG.xcì35ݘBRe_QP(Aǝuc4R JDDJJ*:!?^$"-AU)B^+c}˷wp3Ȩ?6szccjgCWZI DƢE3oabyJb5hMo8b 3MÍ7{fw;u1bРT **Q5h%2AXR$DlPjҐc;Ӂ̪p@P‘"*r`DP {T3?IB`acT  F嫅YTi T8*BcˊmCcڒ.c+n>Eu8oˉciRc})ϔ9R8a J̠"VvԲqCTr-z׻~~Ph z#fn{ɣHo,6 Qkˆm_[cʂj6Z\YYˆSq 2u'v\< !ʑc|K+/]wM6xϽՅ̽o>7]Rәir?Y1ԛ$rcFͬ?T4 s&HP{ψSc"G^3,́YE|9IBD{Kyl0 * 0TPZ4&c^o dxm}mm6aesXDYeкvM,)5U4 (J>x0&2ZQڠ*()"г;&Vy sh>s~/?+(>ػ">7#r/ߺE *FE$M$ޛҪ%xtq#jN5B ?I"܌4[i}sOm5p<XH!R0d8[MHdwjj׾ݪJBHךAA"ļAڔ^pU(,T_M-{RRBбMV"5DD,Ydz JX$W4P&\N0Ј"D(3N?2]ݛԩTu!e7 DQw^p‡>£=03lPWW!$bl@cHkLS\?<ڽ^{X[z[tКA]Rⶃ` ZKFٸ=ww?_y+^V< ́|9sځ{KmqцH8u[v}eK!T=@Č,yqhCȐ(PQZ.QRX+JeiDH$\}/O+2"HٳbRjr@AS@p-BUad1FB-B`Eħ 4 F8y&,ɿJƫr9۟7R-,?Dow|{󞗿<___?k^gm Gno[Qqꕭ1s/8[޺OsșsӳC/=)wn;vt<cldZZ.#B6Oys_ζF`gw= ӻפiq `nxpZ|C=+%XeQj*!ed%5 ACiCI|0>c56p0&R2h@" "4R"`%9=D]N n#wszl=[ȁD> h,Re= R",8hE Y[RKqĔhv0(M;B@%X1fXtm{j.GO5aV-޽k$ /M`F辆hͫ0OQăoONOƖ66{ߴɂT;W%YRUPnQ?Ƞ"{`A*YBh<_}]]??ַ{__:`}6 ǹrrlr6%OZ/}қ[Wl6^w=Jb~iϡiǢ>N9ts IDAT/FSOfrUXT?nW;'N>sN9}S?zvxv>;7~o(l;=01 T3;a4,!KD$6u̵Z#1Kd,@ DVTDC:ۿ/vannmK  Ԃ6\j'?$~/ }Ko4*h]{2vIdƦpy 9~bijY_:ԞFqk xm'>oßbgoW~=wvA~r3qL bE!C""!!p (|B0Qd8EQ{g:AAuBBFf)Z8k1TziVH375pD&yDԀUBk r,oMZ\0d噯՚ͫk!PQ@s!kWd;UV3jG]@R -'4lvn}=wcGQOoCjo6 BBmĤ`0L_?go])MJlԨq\K,i+(]ߢXpӯ5g{ig2b Hj@ i-Qp0d Hq`Tb#23Z)Ikh5ZPAP1 Pz6k{cH}z/A[*&愅-q"sR%QD0DB夿PJ6Qjn61m[&è ZKe_ɃJT'@dB6#,Qb2W`&GLxN;z(8NYH-!nY4"E ??w7>w'OFz%Zo W7܌Of\UUDA$b;L?3paW |!ݽz֣Efjzz͵)sjGv{0ۍh!ĝv5C_k7 ?83X8QS_|t+o9܅uu+4  .YAf@VA4Ơc"Dԍsy!D8=y ; }i'ȁUQ8G`xЁū\Gkq #E1Žf-/o!Oue' ")@FcNxD$xUR!1DA@!΁V1"ZKby<`ҝkghЈAԘ jX߽;nkfkbOdL$@-tLP/]NSFӲ޶ f;20@.VJO bi(Nƒ) 'PBա; gO=x77rO>YC:vÉ(1Ә:r'cq#9u©/?я<^u6ѰITQTM XD}H$ȊhEz,54Ms0ƌcDfޫb,1`8>̂(d.̮vZU՚c޽{#(~b5kXcs^ TTYP`fAk-$&R?N{k[è֪^pi|ۿf?Zm0x=]45p 0y5b0A)φWDyE a{v=o/vQrTNDڍq6F1~[/y-:()G1CȪBdE^EPVM&vVb- Bhv…׷,cO-D |uΡpR+A$ c{)r(P(CE`PE;U&2Sq(d|~+)]] RD=&Iv4Qۨ-ܶw#PV1klC! BgiV iPXyq˥**P%-~VYE9DTz.Ӈoxg~g~~(`5z>60 <{[{g.n)kx"b'jy66]\xnB0|0 .<{rEx|G-$>F;}-?[q^?b^-r˭AG>{&|Kn޲& 'Jp?v[ Z8wmx DUA Ҡ`[uFAYA&$bA}FGGG'ZVYs$J*dhl:;z葳٥ѨTy}ݲAMŁ G'L"ĎQQĶΏM(Ƭ86RbcJA5I⩙iMb$}N?1՘k3kF/U5H^cbU0T#k0uT&Ԉ$ (bi*vF&!X: )ɫUPErJ `~DO$%gP0e>-l(,ԶR++7 dXP@2¶^:X.sHJR*]Q*{\%Hk,K˼NeA[rX#)˙v6w 4~<^XD\$Xyi`?敷5:{Nmeh)4nLn3 2jp91OX 2dN,b31aR/KfJ L)9Fg!7}/?ٮnhqKUaE@ EjX @ȯ{$DHUvZ̴Z+b_A XXJm >:HL PVV\!uB` ,m%r'c \Vm` *%(8*8*R@X{HKV*)uB0g+s\֖_Ҹȁ6״e^E-&,K0XCL8n;i$@:j |Wt[ϟ9p;37[5ϯȥՕKWΟج5rp(J_~ s{$./oJmL3_h <䓻H r6cO@0EXU JT~~yfɺ&54MkMd#HU<FPT!U$6#{vߝ9:8r3Ĩe,8g" -bl_e˛f> CF"8؁pg~㩺Bns"T ڒ (aB\ LxB t\U$uX\Zԇ AFSxZegU"R%Xtr(me)24Uǜ\3UF27T w,Z@^UZx*Y nrgnKWT m/^G<my:PMW Ik,*^8g/q6Z\#)Y%x66\Z;|=klG|˿Zh5z+4F#zp֑٩`GYOԿt~%""_/{ Տ||+t6;]o}͗zxW EÊ$ªS栂d]wߓ22/5^BrB!sG)XHk5 \{OӼӈl|,B47jSY8T@V3FME@DB,LZHB< nuM-?~0b-0DE 1heBcH2G%FA0[2i<6=?Xj. !H1 Gz;%A>6$hf^~ß7L >[_ϝz;_\V[d.Zqzd V= 3 h@AH-rz#6#C>!1A>ӎZ 69b\Th ŢnAU.9(%`Q-i*\bQ_U ^l-3 8Hh *ZUԀJdl!PRO>ATޱGVUN X:!8=VI-LR5Eki@LթiՑ 艫f`A&zC6?'o%&xC!!xr^m`d[yu҈Sn6ڪffQvƆ841`b8O;x.]Yd#k d}}5;{ر맦C3RםkԒ['БÇ;5t9k3i$[Vn$%DV)±,GgQ8QUfmZ<(#c-kxx%`X$cQVYAP^ص%/@Z?Z9/o (pD8#Dd`PC O Ld )Hր]}J'(`e3[ѹ+^Z[4240Z߲:Ҝ$Hnxdz LݵgǦ:PUNcW#yoկx~ )6iV:fӨ ϩb5~9 F;͖~sLj96#H-f"aTijLLr5fն.^4oVR ,;2 RDKFI9WR+=@ ]?B]'}xpI(a)m=2&yKY)3 Ȫ|dv $E8*`]bv ˫ l]bsQl57Q #HU EFQȘ;w~ks ln֌ BD,`ܙ Qc{۲N Wn5Lì;90Yت)pe>0&Ls:ҡp5^9=hRuDX/ޱ b؊ZjYV9㵂´0XJ٥YgVH2zo5`3GD~K763RlV xvEn='voX]8vʥkK{CvWZ[MCJH`TK+N?@92x{{(;V8N:ݡ;[~S%ۯv6kiiwib*_v(NyŃKo bI`tOa'%pH" Rk]QnHS̊(NUmǥHza H%(Qt&X:хFJ%bg@NꝐ7m %QWbDDޢ!c(3Ԙ!75Asbh"7K6h6&iUU[ZEtyNjลv(R"HD 0lدmvr7#\oub`!QQLp۝%Z9=)aLnyh`s 56^5A`=(\(GƓKKkwϟҗ_3?7W6' Õե\xUD~:qZ贗űW+cx{gaaL[xj&nV(rOvrQ3gq[i`1VVXŃ8 {/ (EZgju+E=zQDXXUb`QX)kS:gI)MN8fNY~`}@g GtnLm܏zU3ŽXp4x*xv8D{RvM*CHK6aRs-"sgw_z==EiTaUiK"#w3a/ݘLw͟^JmIgV:r3~Wknne~*t} s+sd#ĘFt=WN2Zd5D()DbE͝4+\IGA^/JT"UgVTm9Qr`)nYyJ+XlԄʿ%aF@PsOiq6 ^yRFdՌR6ԐUB@,Jn!: P'T;j'+D`':A@@BhZ5hVcN6B MRMqTZII!>s13wU؃ `+̹W^{(Ny&;Bf62DX<0H3id#P:UlPN(}S?ʭW/_O>@ׯ~OOufN;}wgSâ(>Oi(?'[P_q`S8ϔu+5 A1Z몪ăNfƀDEXgl7u a$wI):w5Xk"̂ǩ1UC{ EgG(7c-vpVgRz r TQYC,,NqZǑ! :g1gl7o_W~.\۽ Ͻ}q,' ro:Cc^L}fɩ)+CMG:[X9̩F{F;xc/$rl vbuE\/@tOftP78ҨʢwDLi ii:BϪ1Sc؍N9riZ@2%I}j(U|W3(+Eb F* QoaBD #`R ilo`5Sϝ?spJc@c8-P@5 E¡V)DjM KQhf< Q[Ve7,hDTgW[x4SaIk1-##{UǵFh<>tG:Ai9@ύe7./E!zOkzVDg(KFj⻾ǿg .:?9TQ3ϭ ;)TΑ콈w`p{ΚJϼ;W`{OO}6Y( 26#tD۪d ]mXpλ_AO={_&f{f`/iy"|jIHǀ@HH$L.ǺBJYVJkG(,8O,7b)Xʃ_Ζ{Z)T+ˇJ,2⤫8Vqmv{vO Rp1 )IQ쁷hruU]4F3i|~_]=^z:#Sj<>@*Ң}ǶOtx*LJ[/]kxzs/ȃw/|u׋N [C/"oH+}`PW]i5-4!3JKH"{B#xzy;lSWn`:swu[w,AEʐ>mm(8&[V1d yURQ &TEb!RJ%:""+";c? Qh&谥[ʾm0|JG ob$ͱ !iVpLGVoE6 ƖsB/> U 4Vqf6uN9ZQs{IWz1O11auzkǕB"RDwY+\틲@g zQ+Y[uml1eY`l)c,ieU&0:ɓOc<"7aDZ[k8xrW8P aV)J~{?ɒ8GG~~w~{Ʒefn65pNkzCI1R+/weܚ7+.G>"<{BLpצNαus71u=C$k-`.J{]Y7wXk1Xt:)3hRq8PžtVV޵׮rPV)20CG :Dk9!DYeiflw~v^ֳj4uͼLfY'}7лc?tϏV?鿲@TYRē?iEiKf6wѳo:e ?ۙ% :ʍIO U ʨ=#FҺjyMʩT^{!Rlj4>{NmEO$"{_'N9@9ݿWzmy9^L{eu]lpx(M]NӚkgBYg ۍ[^XW+'YtʃgD Km.BMmCklԉR-^ \7R"H & 9E^("{:*KN? f (ܲ"p'+pEQW:$~\ĀY$K[k} BH׷fMKOE[^/Y~Ҥ|{tg߸>'w_/_dpgP AK 0tJ)ͳ~F&la9j6= v:tfk5JNst6wN)nޛ|`P|5ke?ɤì3LkO[Wo/vw=~^N+" >(ow6dvTFiEy:eYCS:l09nT)*'{ɏ_"kiZX׵s Ii V9fQJ` yd 4{`P{B B?]'Niu"F$HukP 96c¼zi i Ÿ-r״&-69%EQp-na}2o2c I(J`(p`g6H;:;acP0ӭ/4Z,Ic0tOΡB"wx;u_RV!x^2.jR_?gז{iϲђ$5\u=RÀD3{V $wQuPx k4E\H:4g.Aʋ&Ze?#jV}?gղnkWuN#vN)͞Zq[;=.Xsͳ'T >I @-gfPUAgׯ_;}jڵ2 N)5D&f񞅃39Hб"?foZqu}GT]yyȻ34K7WKWhwoo\t7no~+_uy܋嵕4nv^|ʚR<3.,.~+_|nӏ4l==Z=pr9EH6E'ɻ%h0azw`Ics4b ZrDq6.829iۏyi?CC"v 8]js`{=n2k""MYjqjӯvY^Z!4 H(vh@~P9]LlI7-߼C~zŋ/7ʢ^_-vG XUvqi{|[۶VN?q[{ V"&ޑ>џR4HWn7k=,drxskƕiny*Yy!DJ^\])'{Nuzډި!pOfl#D sNr:, =9 F`p>RH'Fmgh{Tf5/0# ̑PWilATt~|cӯ~k/._=q+slж#kNU!&*G't ^-ߴ#j>mM6@JۄCK$64[m?o+DQ"2d[8hN0̥ &OPO'_zNEF?JY.~=YN'z Hy>""I(@9wm_Q6)lŖ(BM:\|1ٗjv0y*s/[Qʛ(J[ϽC*Br֦h;  U~z0H$EltR EF`wnnwo3(NR] IDATw~w;uqX^Zy.8vfA%]Q |E#JQ̆{`X[Yzo.]xʇg_?x޻Ai$Eng.B3 knYw(CR fǤTR 8S./ F*J3#Bv8uDĘ% ;}AVb :l5/Dd Q SMsDcK^ QX!!+T&+Enނ/Wz&Q,⎹yѴ_ 2 $rG'^󏛻4JYL? *9PMc!C$1Յo[y'Ȏ}J@AfD%h,!Dc' o؟`6sk[\XIҪHUY$S*1u""q)<*f}#ɡe**bD!H\9NZ'N[d/|rZ}w߇ZދKZ-TYtׁGDfv΅;(*g*cq3ZAZ338Ͽx 7u7qBXx:_~J c/(&n!{-6Ek/׿𻕕;$ʫF˟{0w[, c,IC4<krO--3ooo p4c~TeM[׭1"$IӍ>wL^̨nfkk^( *Rq `=AVbv)g..oL6T|/=Ь8(w'HTf=<8ظҫ/{yꩧx$[` 2cgo$CNءx Hk3*~R3,vE7[*Nc?,QYt꼡;nYuDc:v"-G܄ǚ`B Mi!3hǑ&c@2s$9:n<;/NZڜenffY "զ pLlB8",XBN.i;gmmsZW9묱={! {FQc+(γBEHQG*q(ґt%qCIBCu:k"儔T[xf _׺q7*S+҃0jL(I D ":g1?w7&^]]? ~{?k_szky}'M=ޛ {s_8<;[IIpWD9$RIxl o cH֚ZVJEq Ν 5*̤^ 4o7Vޖw"EUN$X V=)tv\̺8bRHPbҫĹ8Cn7᪪l;?+rz[[W$+ dr:C@tEY?jM{Ӽ '̰]]#𹅁EqQ&A,BPǘv̡=] UWRbSk],>H FQ|ʟ~G}W\옲C[t"k*8yl0y.Ζ\gb1(URުj/OujaVVpP*aYc>2(oBm]9ǡZ3Qi՞ At@({~}sakV㲯,^9aĘ.̫*˜uHEҚT i EYL]{$RQԦͦ55%T $J!gB LG{L8WTFj Y^Qq}MZk,HsVr?^ 7vmQ)^^^=XSݓ$/fQ.?G<ĵM[Y㙭\|,.B@Ʃ9a}<ǑaEJPbb ET}tȍXZ&=0Ӫ4ACe@aKʷ\$0f(9<=gcL" # 8B}M!e1a`SJ ǘ$[Ah`@`˷:^ 7sلBݙ3ib@9 SC\Unݸz#HFBM D,)٢H(]s-c kA6Jų|s)[>=/ZP>0s/\[_]T:'ro=zadKVJ)2!_;kk"Q޲2e/(F9 )p`P yi6V* gwZRfIv흍ⵛOɲ,$vwwwo=pcv5+>n_VDx$$ޖS%,UYCP,(iP(DD*\ Qٓ{ɴ]uLD#wtT5KD.H½qdiyeڒz:%U`otҤbTƅuj+Az> ?$?0/=(M  CF6 "JR4B@B@RHE,قx+" "ue!XVꉕ^{=?e{ٝ۱NYS#?+Ő|w?zz1QCjGn5DDEIͺg"Y8,(CߐUÐ9>BS 5) 8hs[P#̱J϶8F@3! B7nD<9ZUnoE`=%ݝdH _W @벀1l@T6T8hxD9O; %,?ο5A! IwQD@Iv4= j3?qSuݙՍ0UR?§|:~ ĠQ9DE\혜D x^}c֠0d I9WeBO&EY`wڬ(o\z2K'y@e}^o;Oj&+*9波VXwtyyx^sމ3@,u8L&HJk-![9D;jD['PTsς2O@8M˛{4Y{yx/[;{`8֨:q::u{>c/W:H# 4kVFBDD :DB * ž6'DiefYaeMEťSi(p~ _t_joq-iEap/̽H""BJ! za ,N F+N; V( " CO (o5ƲqcnifD9h(䜆OCCHw~R38!:pu_OfF]ӸBbgͽk=c$ "7"2 /APѱ᡹6p$6'G[9%(@pSoxӡpmex;{{6X AbuJ')S/|'g\>xe$^KvЃ8m928=C2Xׯl{C_lJd,8XC5TGUŬ.48bfV.%mQL;_)S%K ƻ<;vzCIEA6sւں^O+U접m4@fnl^E!wӋ ΟrkxAD?qxӧ?4ܙ}?*eQÙxv=0? *bOBRa9Afv@L 7BtyUt{N6X#(0ST<̊)yy7Q'xks8\ :8%;BZ^XHҨ(+H!gY[pf߲"Ex$$7ndToi[r im6BE )}+ h]h&Zurfx$ ,21= d̹&o~togfoYTcƏXvi~iW4Zb #H06i~bEaDA_NM K3# rFЖC޳( ^"Rigґjqqq#rfmYf.sH#4a00(b'Fdӵ/ze'3q'li _y{{F/64˲,I,sk,qZ1Ni6;vKÍ_)eV@,KPqvt=Zk}qqA{KD9VM!(70ցY<;yB|[[nLw\4;EvX(fbb9,r%/^XE4x& O>)ݥHIU}gNX8E{[Ue^U]u=$YoeCE2˲vniyUDvv7b8 SYF Tؒ"1H/uìƋKybHdaaygZGq6+|Dx9ˣp+M0tbUu&2}];A{ˎc:i6N "v"!M)lF#Ye^FBT0W㰗R/mbKo6Es~:_j8"ȂN·åvqu_I=lW 2$=f֬v)#8֎i Mo}KA 8&ۚtO-^7 `!9Z9GAm0X[t fSmn`ӊ2 ;cSP׮sSjUV h4i5mnޜl!f^]4'^P:`H>qulgi9aM5w9~w`00 $QK*ʉX.џ(UTq9?(\ĎbVJ K) 0r>;d0U.r`fܹs>+e>Ą8u\JLHTUe*t6VZJ۶Imm~~wj ٜKe~ڕѢU2ڨ^WX3$ȝ*zjFjʈy3fjiV#'{UCBݍǪ޵77U'WĢb& _pι߻Q}+0Uqf \DT7&6;J&㺞AQ`yT43mݰw=-bSO͍w /yBǾkPwE{;ˢLWwNqYL)alILChE-/VE3Mhфw?9sɓT"Ǵ=@T m!W<ĘwI0F#f@rgd찰̗58LHS<;#/)]wnes-u A'd9HRL4 b"{g6 -+ ,er !/l9^c|xL YnV.Ԏ|tFF 4Y/ B8% F4o h=wu ![S|I,޾$~Jh^{{ o|ʻ=T0Q9{_{V[Aj+h\ |єjS\ FjU!rޠ:)$FSbbis/#ݽqǚ7jFOȍeQ$Ib eXT@0GdVS;"$5QRT | ,5CSw !Q>rQP*_ƥK?/_z`bdGthRwD$6 68,+^(CJ0}hnuEqɵýK%\᥈H \ye79% GG5#z>WD[U  Jo!e1YH{z}'_ziw>xxAEE2*<1"d@3t92!$iaC`ؑ័ : dJ]&!P0 (Cv`-Vcӄf>|^4i$BDVѶmBhi+ό+?|j>F+B;Dq]T"(:zn2@d53n3D;Z:VI f:m 9/G Լ q )*vو`HhQCfV. Pq>uH(4O=f osTw#0W;?ٗge,'w7Fwmm[ΟCĀ} 3Râ1R]yrL1F3U3rf@ȭ ׯ({8B;?B d΃ۿO?SFAa kNڄ"-+qҐUTAю, ^PfQI jJ)[7s%QzD1" O;"D.V''k~IѾ#RB7fF`?uN`Ms&r1;fʗ 9ӰGTRjwoQVjZEC\CŔQ'^AA IDAT͛>k7\6uG|$ ^S_r#4bQe1 A5SǙiVsz߻q'~O}iqT8'E B # *d2n@eFa!hWƻhd-Q^,|фEh- W/Ԕ*[I< a&i`<b:{e$a݄n4VC @0Ysx165,W,ܓZ(; -uZeD%y fK%%Yx恺iI:0+2YKTd6ɺd!sү/:*fa.bȇI ;hS!%RWtmKڙ֋kGyxHGG_1?$ \V Cۇ|=Uk׌/]8 RHc_!S*Z-k;3ih&!ԋy !(L䘝S3JhB+]3Rt{yU2@ cX*4L1&0AP;` @H 8mD sAheZA;2{naCPE>)BΪd";A=x7_?Ƚ_Ug T ++'9;@N9#k%#_V!3J1e&9RF(SXvpe:nllH^wG_#[~uo\)LtƁQ4eAͨtZQLNvn"jN?o|^}w}$3g 422~;")₀:@>P3}"6`$ŢIIi:M'L3;e"ׄ@O !bGeo еNChn޼y;#M1yX2z8 R#QmBl-"hr"Yf%KT0¥2؝"V3F, !!+Mʹ FȚ7\ʒ-Dr\2i:ꤚH{-ߙ;Bl)k~Z`Es%;3,k^,$ W9Ҥu4Rn}_ӛSb Zyo_%8qs|H>,$mufbG+{mw6ƳzVh>nF޹g}!t- Ĭ1^R[1$5dUR2>F@MՔGԁ)"YIDDuvȪ*O vK mC &-R׿m%HjfT HCgn`( }QATUU3 I!@#" $#?> +Vom ̈/機|7^ݽNZOɩC2U``j #XiBvB`*8k›(c_B%'H C%4 y CT@dDX7^H[+wiL=AA4G,U`i Ŭh(x7M&V3EwcG $ bQ"U*cIT @=7I s|SNh ,T/e n,Gd8@G @6N]( 3;KBb(CmFQf&&+#3AL=f\%f^ *avo 1$C壠hOIGyouimek2ܿiOeo^ Uʨ{bg;NO?C_yNfhp{ϔnm %Hix?뿲s4z d0.BjmRZVԏƯ՝T)5fӄg{9K)tv奇- A}g"IQ˝=̭%U#<&l]5tD-dy04L W{&y%غ *嫼\A u e=?SDCzE3kfDn<}jJ"VyK/=񜝾FGYxrT@Ebuk/>3)J,h``F`Ԃ t0+x㜀.J9go1"PyU43f„ɁB 4A`)(x!,!G`t)8f CHΐq]x"1F'j^~:!:@$#FQaTQ&ivlM!1EGCQb03@Q,#e5L5dy9@mq6ŢiH~O}GWn~KO;So{N>ƈ5i""Wz'?_1ĺY&Gt/bՕ&v~$dV/ GP.޻}hܙ2ij"Թ)hf`*Y$*"JbY߭ѦmET 83X&†* r`3Ĝdz)Uc 2$ )ju@ u!vp|5wqlpE0L g.-ڦ?trV{h|2 0y=3Ї>3=iJ +.Drls d'Yc|7?='_zqT W^Ylh,jfؓS~Uy$Sg!@DR|U 38Ua 2 QLwC ,;{,Ea@!9DFp{67L@3$v(DY0oX;?ߩCzB(R]'>x_R j1E"o4cbm1 *jĠSuĦ˺U0D@"S-ʕ+9ʢp3ϔxr} VE! IUAA! a>M ܿuE\xDdRcfFȤ][buc [zTTY8bwTnqXT~U^osub9|͇VGpB-Ex6.#*"%5HHlTT7xEr"ChI 2>GHӈ%FAsdDjp PEaUmH+BANĖѭ{.2'Zpg?r)>c55=ݰO%Ij%qLj@ޛHN$!LH̄18~)g٘S!wd 4:@^T=tm0oVz:40+d>L:dҸ1G$tQC*a̦O'iu yIvī=pi=]o]k{'w{}3v>O) Hoa <ɏ/$Փ$i1cӶY|>iS/b*i6GwKp?kΜ9y<~桋ׯzb`dC#4z`ɕU Tg1e(sXf# `* JTDC4]6ǩYR;Zu{m$Qtc2x_=nĬQHe?*וlĺ4M߅a4`RDC3CGs\9qLMD WРt>\UBӮG+mm?T0SE= w1uzr^YED͵M鰉L/ iѶmG, y;|sj0+ٷ_5}Y Mqq4a6ΧżmgfQ64mjж1$I `o_Ef?7w_y3NWucu=Kzpggɓ^ԷZ6IB\xt{ }{FW.¼^S F]A^rU A !2#]xO˯ߜńBK@бβ1[ܲ K,S1Y.{!hFUwmJDLv薣:b>VVϟ>ڥץ xbcgTWw^O,<'CwoUEs-]y bNQ}.WV3Ubt ,bX00`rٲ^/41hZZI gUYyVVc .ri,3AfŠK51t  g6ˣ* *L"L$S0U360@'/~R+Crm Qr`ysG?pk綑EVU,jD\([ LoeY-rn(Y>z+gyʧHF) -2]KE/N j`ܖzX1&\O*!cj8WeE;n"LoX6jc(2Xf$"s$ ߾޸Nͤ>g{N|hk,8u`5Xx_v8wƦ͢x-G)uDc)4)JAC_)~7x.^peqptqeZAU66K룻Οy?ߙ꯬}'~߾ ?؟.&#$`@fdVz5"T5$=^vgғ}v:HD Divӭe `x-ݺ]"o>b:^@-;v;.n['f@EۜކТ[NT[zꟽ]'N>}|sZL+ׯOANWWz̍|ϽJ^TysXX2ֆcZ=gN_׸3P ɕ ^%w=uv֕cD@3V)酪 pܠrvdY*"ݟh@\9P(وXՒd@ (fLs(yl6ïɮ?1L!El҂ayX~_W.|z&f\UsDJHH3:,`[;LrqH!C3Rs SZr:.d~Ȳo6?j9z@r>A񙁱ZJvrE&`$'lqA](1|X4JBAQMf;ܜ')looArBB:0 h ^//[٘lxo=^/Nqr]QM^{Zt$&64h<M"1iJiPЦ( *mh-p7Gdz7_}[*%`>׿{Os>~7n4u{_.\/> W}bԫm͗'p=`){Q-wS+~_zyCF`Z]a.?Ĭn?Y 9@Ms2. iڱR.AʡX)eԲu148\~x: d6Zׯ޹'o]B;b;'$z䜹;~@b,p݉O(w?%0G(j^$#3 &5A?P;Nj^m6̀ͅmhzv^I%\NsRw]A.&yr@&F$MIID34sIEF4, EQm9%FRT*CMr`;?{wNJ`v$ J*y Y@qA4W74$KI-L2.c-[95o!ځa i9/ѮًѬ8;yX0U1[q9?A\ beX~Uj.1P_ѸnbgnS*l&Bsxy&03#50P _0u{_yo?}l_ħ~?M7⍕Ν+Bae14EScE,,;8GLZ4*zjgL?:(bfIELt!*2%;O%B"@J$9kگ<#gxd**&RGq-e/V!u~@\{accʐ$4 @9&,`BD|A3! e&\s 9gT 1M1Qy0Sf*JT& <.̞H  BdQQ;F`d xf;]0`D{vR"S̘nH$*s;QF88sXD L?㮃u"JA4%  K7OwkiDhm}D5?iH Q%XتԆWnɬ\Z׾/XPQ n0I`lx52I5IJA3UsĠ ,b"\4^={}^ys;ttrU[L1|>m~G??SϾW>OloxpNãz:T&K%BAi7 IfJɹb4ԔX!3ۙß ]f|);r+Jڝ]Zdom *њew7k dv'bHa^{Rh\QdR02ƢK9 I6+e7p;k;Ft^r0ćx]_{}FqFmh Qϕhs܍1y̘Sx%aL"q_$SE Z3_F T?vL;'1Kwؕ!+鋟~:_~S`{+:+Y۴QLэwAJj wEἨ$"ֶ E]Z?--sLrqПzp)nw}[Ⱥ/i<>$2@4kԥ 9'3#+=v%{v8k'LTUQ(s!:&&G jPme0 <aV%3Pɗ$iFΧkDUf>UۘY3M!X43`fD@Đ)842%]6! "Q*!xiD$%1‚ D1uay^r=gV@,.UTdZc$v\29Em yH1(9 $fo*wI QLMM0""pίBjT-ryb mo ZJLT1*.fѢAH}L4b7=( "`u u7hu 67OM{!zA ij:]`}^q|#9E* o02hD(76wh8'Yh7)$9r ~R)˲F:qᑝE#& (9LE1FR2JL (Q+ l`jha tmW|JZ-&7Rb#M ʆc$ER""sوU=U-R6v5Лu>,ҭAf,ʱTwK̃ݧc5 "$4PGGG;;1e$o6Rj(z>wHjGs̤a#"3*WձT!?b oyw(m8Z] . JjB1AMIQc.aٗ۔SQ`iB4:XQWpYۛ[t>޻2"3@)Df{_* #ރcE=AKMhN}Ӂo4BYT}sB])%\YeY糩3zyB,=X 0ϸ$ Рmä^ uL+?UUY[iw!װs^TԒl 9b_õ. YxD 3cSL!yb"GdЄf*`A!jL NIiRgd Ё!!fJS(I H-Hjs uReBJʖmI4)?EI*L{ aI8UM*fٓ*C^$J0b 9]f1@PhI?b5is4@p!W5|l `څGoo5'v7M!M1[LTԒd"1b؃w?!޸vf1w~w]6xA'EJfwI^o!1 HΓw39Ϯ`=)DEDD4ĠH]"M 4A$ (<ښ}]oG6ᴞKF[ןܳo/{&jb)0v=X!i̼ hm uIn秹Cv&dDjFE((y`@j9%b!),'͖ Y{v5MNƖa^V;QS,T nyPRjIr2$VNŽL- WߞeK"gwe*  d8<>]߹pnc]=w~wswoοqOpofưvш0AGECN;!0r2SD%Rnպ%vT;KIٔ\şB9s ޡ;fyr:lN6Y-e67ٛfyW^yt~8;zᅗya[{`6sfT&Y(wN 0_d]r<_&+f(j=ѳrVVp8ݬKيixKTSWjye϶t'|>LJp3cr?d'w0GweF/IJ+LU (z]7OY.RYaBIX y [%,* sc<]_4mg(AsA:f[[[Gq5A_Q 8v66<{n@5u]M !fsg;}<ݭ .']~oroׯϒ╗gO7ikiX""P#bV FCRjI(8$BVlv8lu5!iYRd6Q,l RJ92*Waȩֵ>M)*6+3,h>ܘLG1r!.?4P%q5LW5VkGtZodK^ٻ;z0<6Y_tq4'k ΚLGGG=Xץ.(2dwg0ҥ<7ˣbhKDFjpw^xO_v!GY`M۶={]X( oy8[kwn{=TNIb WD n 2ln@L 1fT8['N'*xDR6riT1H! 3Q!b5 "aP!Rmdwh%Tu}V}0p=NwSeΗ[B<-:sN۬ZڔjV5Ez"g{ޘr1p sb~.s[;&͈ܴ'y}mgp l7|KէӫO=lb<:<\ټi,n"fvқ-")4_|ozmm2[4丳誺ߓ `0b .ώħZ5ybBER+`ROX*ޠ&vV? ȞEDEƈ-[vEf U L Q(2 L0#g@>+c)l)03yF!gw EA* frM;0S 0{bi$ D ĥȳVК!s1-l'badN\|J$b0v 5?OW|WѼt]znݫ._<k Ukƍ{CU#Myo xۦ T Km-g|aYpkskN5b,}a k<K/7ōdypuA LꍔzibU!e[4RW:E.,LD?tΖSgB1ƪ"rK)%"AM ALYՌy%NGrs)pvm3p=EeSn\ Ad+3lnnVa@UU!]`|t8sw,*䘶rK1`8*a"TUsQN47S1A:Pm}4Yͻ&cdf薢xəTWڎt۷n փ`6 vCn]6fRcBRwM!F"0ᨊRvXCg"ܜ-*4{LꥪPb0[1ƄŔw2f"gAzKbTZxYKcr+ (Ċ&EnFssoO˅7Ƞ߇iDp3gи(p+@AO3X}Ո6i.RᜩM}qo~ؑ'_n7^c{oCƭ){3X'0 PqRջt2Re9/RJ 1DBUכ06iʹi iPױblw?=?3[|֧>/_gp˛ N9k㦰.Rp8rFz;x8qaL7sk. ti:8J13*7&(@-Q_=tc//wFY^qccgmu5ԍsOWeVL-f0fMjb*ڎ^IBp':Or8u'z@,kԭX.ox/߻{7Ɓ)ܳX47cs0_{?~W?6@IDATi/V'|CO|ǔ >)`j]!5Q]p0a$'/u:_|$sS=NlPm „) s#wRjKnp.[oƽ<?ͭۃÙ`8狣Fc꽄uwXiKK#RbYMרgK`̄B?r2mFU']i@a bqw5fz8'x4;c1_/K3L&.z=!@t*Yc'?'+ꗞ}bXON&k?nb2 :_,ڔ_zŭMmԃG'x?/uD{{{߾;(kgsS>~ʕ'oߺ٥_}|cf^O`}YY)N!7#fv Vvvˣy6Km uX V )3Qvkز0wX 4_,f)$Wfa潽ckHDʑ|R,gY,ND]>paj{~_umZ[SO]y7oAR֤*q ׾/ϟ|O{h ELd!||+I]m߿3_,86m/^ڟ/Va\c(snޘpf^1W raUsId͛esY/)^0\l)1sUUtfKeU"Xepf1F@zTQ9FY|b,邈޼_+J%,LF_sd.7mwppvM62ڥKF_{'kuU]L5̏.>x8oTzځg羸lgۇQ r ,y;-  Z4mqB}ߝ nm|@8C̛e܃]z9f]˶S 1H:B*!3-ZwT.yGΙpuV"+:"Z9ҞY|,ũCz47ٮ}7o _x lqt8V4ARȕD{G7dR@Vq5![wnOƓ/[o ʕBm53uX$&JJ7޺qxx4OBżMG`I$9NI,:RdLM - 0d]_wjR$eY*JJh*̅ QB1&%S˩sbf6Sn\>t p,%βY6^l fn4?`ccc07w7wo5SO۶R- f$=ӡ߮d6766~^6kV1:Pp853xS4꺸"-Ky$IF΍~V&xi֑*G1;#[L9v-TBو ܣb "j{;8SH >3;wk9 4elHUU1BDbi lLDdf"FԝeY9_hR jyT *g8;KW(H]*m0 E$,s׶V!Hcesz7c׭1̘8BJ0&c`Ae?_Ժ}9;"j Ke罽i gv2:ϋ}Y.`3]VROШЄPVjkgisMi8QWߓA{bg`)ӻSN.mGq}۪(8O 6Mi"V9 mG!p{}DM*$wYŧ(βY| Z ГL:"8-'?4ytV* ?ܻ0UdA'kG|3ݰ:ԉxwCΒY|J,G 7K6* #yZ;ىtxo>rT+l_7>jv2<򂏦wx$glHq,YBww7Bpwrm=g |߿n ۶T*|g f /]zQ1::J?JPذa[n%6mu]$w q򖷼˗ST}t:>vŭʏg]}+V|h}{}(x[ʖ-[j]veضMl۶ {yq hkkCk͓O>l RJž={Xv-Jd.RJRqLEDQD'u{xͮ7255O<xBBBB W_M.?)mmm3P.K+%7t}}}A0_ZkL=yB8n``}Cٳyiիg?˗e?8q3>>>OnJիWsW;Qa,C)jR}k իiii!y 7g>CTⓟ$k֬0I.C|zh^z'A;.BnRgxǏ~#ynvV^\}!sNFGGٶml+VpGZ]0.x<ʕ+gg(,[d2>Op]w{nz(Jhioo'~>uR3WJ?y/7M!lK|`.m˹K, ۶gOHHHHHx!뮻8se||s9m۶SO͆ԧ>_L ƣ&_΅^Rj=xtM!شis{.\s Geҥ[ OO}Sر.h^z'ٸq#z .qN + 4riqm۔J%30gF\n6o_r1],ٲe ZyzpUW-B*hW8;HӤR)R{.]whoogddd^z'p0x[UW]5R[ou33>zW5%c۶m? PBBBBB ;;u~C"ERJ 0 RlyGTbŊJ%rG?(7t=> 'wWUޱcs]t7|3?+]s5\|ų,}o3<+իGJIEr̵T*N=,uQ*( Tn^5RJv xBBBBBB‹skI/'Ö̴L'✐c!cZ>`pKOHHHHHHxq1c`Ӧx'$$$$$X9F2Q/$$$$$$I/"#!eoFpYBBBBB).GowDbϑ;(+Jo *G}"߃f:gb*N!Y:gf "ZB_b˄bK ~B chiYW׼ovw/bZVT ԹoG?鉸Ƞ\ }C0t܅t ֈiC ا @v#~/MN z΂3[}=~=0h~YNX^xsj5 /u?;0s-o@q+y0}d~Ѓ߻Ttv=E;S#Yp۾}nRvsۦ wpRBu Ʀ.!p·`%*ci[sYa=X4E=YUp(Kς >đ@yJ?˶7ݸ8t;4 /"Ɵ zP4??Rhl|a8#ɢ:xۼȮonMQO,󄄄G|+1j`: pu[Ywo"\3w#?Z]?{ Y\Hjf,~/Cϫ.'aDS ON$P77CЀ_K^ xWkл*KMоG{|~v]" gn:>;G8ֽߊ(C蟙*[.V]F!fy'|u|,~ V[_Z?mXX_\vXNxW//?v=Bp\_ :.$F^qf.th>Ǿ! ӂ\<L@X~6w>x),YOMY'!  zP5p)"r~cw~ 1u5q1"8t/b|Mݽ*EGC7;-gP8[Ԡxvw0ǹ3xWয়37\4pA?eW7߇<o| xs3_CqNr>|>Q hȸÐC Tss(Ye=մ2Ǘ%0[N=BߝJ_̼G ߜDtcWO-IDuNBo;ib HfWxxY,#$)/t‹t$$X`j}z%ktӽ>AAǸ{qI*JE(R(1 gJ򢋸馛Hm7C>_X8>񖷼믿Dܲ,oL&9L8S:+hvc?NKgZw}i%rW Bh4կ~8JXTV03CAR;\\%,&^zRJ&'';)W ɻn8}?iۙ$r *c16@}8ZPwvYa\X nǮs➛v<@65l`A<TJ(.Qq4ȌE"yu5\|8,|ܣ S6gHx8Ӳ5Մ,}sı|4I}q<+kTR9' Us~Z`L>期9f18s?  @s ΦuC] V]Ĭʰ|ZA-LDn)ގp#]m\C=rq Q2ld/sY8 ]tZl>g-[MFt&˾#U~t ʂL("BX)3aHJiLCb)S'~ "Q86-xn؀% U˗g(O4 \|a?[p@Э!C#SC3G9+ RH#B!#C,)0:Q#2XEٮc2ɤh-JzmN,+A5f%cHWY=0K|r/ mP86->eIOc2<H,h\!Xѿ+LT D^v8oFG}Oٶ ad(vE>R*)HSٱS5Z 5CĨoY'^B}bK4u|*&+2˖Skt$]¿=1RTMG5 Bq}e CFY ڲ3T,1rYetv-Gq ­n Ѡ!3Z M!NјH9) r KZdR=:L1(Ul?ʡ)6#uns| +/?ǏCvP&(S|~04-"_]'m#R)TJ)T&MpY׃r_=: TJSЍ!Ҷ)Ҙ1L !>mPG4fX^ 9c1f7L$@4Rj6Q } 9uӑi}̿o%H1yMpfI޽I4"1?)Y3]I9g.`hG4/f %=}g@3YQėJQ Bun/.G#"4܀RFRgj*h2#U*RɱUjL>-}E6 ]Lqxx_`[?C>?f tlE9*UmdRaCwq'tdrTV\T)㹓ll7e݊6FSj"6(+f54 P86|v};ѷZCcbs bطBKg-% Oy986{0GGL M+U8RNEtd~| S^m-@$@)J#ܿ}?GbI6t"aClذ0 ($*1- !!KPL=D!DdhB2,N,28tt2й}b꣭lHI& F|}`7?w>p2j#eL4q,p$e`*I[>OkC +Li NF]Ͼh b$ #v;Ba283:V!(2APo44b&*!L!,;GJZ$Fst|òF / n8~ BGD@r:槹/ű:{1?)1RՈc m"ytʃ8g,B,ǛǷf\m=q  ~,B9HΔL+t^3qF՜M?.3lK*8̆:V&7v[>9 Xqp ;51ʵ2&jH+%CضM)|'Y$c0X&^Wo|bЮѻ!BiNŁWamFH}$hDzmӠ5ԋ-F% VHtg# ^/?}0Ҵ3QDr}t5 "Nm\ؾ4=}D%ӕ~U2l31Wq%;yjo}acU_^ZX%V$#>a,Xiz՝揰 IDAT] M`Ms/  dZ6@,AJIP:BV}ɡ&:NV,'NYD~&RxQcXӢx8yшqd öLrvX޿ےE*C8pZ:H;uJB7-M<+_}9՝1ʻ_w[6߻Q4ȃC`Xi(򱤉m($ dYA(ќaJx1)iR(;dxlUQz{ɶ\v=mu<niܘJC m)Lib:Ps[ҬTԴ&^Y=":Ab6Ә_ftxv/TH RXE̴x*F A,y4#-I-RyAK1CAfЎmK[j.^CRSOfcl ~k?Ǫugqpr|ۼq^86xIt1g2X+9+&%d-=qkX Eja9 j#WҵD02:FڂZ5dnrEB[?Vn0=zbF#T 3Wl GxbFd0vv$=+;~!{N1T]cO\vqcC>`:492`GSH!&cS_a.&SF<ps1#SuDJ X"Q,be,| +[قsD-x1 V CONꍀdSi^}Ui1u՟[A~a~# nƴ vdX5a胈eSd3i ilpNWZ!sDFcRD"Gشv)j`[lZvk P9L2E2! ћLLN" ׋pGGXabq-㪴$;Bǟx9ino<׌?}ܦcmStYgoٝg?#5OKfypi ֚L:mrEjrZͥ<5=jW+Xfӥidi܆ztvuނC(2m|? Zr((B!%e:h-`‘&I.~7[uŅ^4$exp <ǐ&t 1 Qhbc KI;)D,HZU,AO;!)5nJhR9Qke[QXHLB#ylƅ$FJItuvE'j)?rPQRQXiV}"c"* Xb-0m]!k69=p,Bi ?pu/Ŷjq$%p啬]M_dEOc.m# wV8BZ'_ Xl)}\7V0SUBl:O/28Qbҷl 'ގ&`^hx!=}],>HYؖi84}}K/m3plP~a.|ZMO)&0ЄxxQjndCu ])01yv;4؆%Zqqx`n']4B#{5m=M"~rmw݇:9̫V$tZXm62 bE*c Z E9{5_M4Nig2cb9):&%AWwܳ^*FLJ+RL*J18JJ %YK#k(MKBt3ǩ1tSqgvɴ"mC%6mXA´8C hI9iVZYV=ؤYT!e(۠27Z3]Escs!2Da7]% ZzI8=d:bTJ!ݫh_;ѽZx0{&"^~2mж&ӑd!#Mt53i 7A1Aײ~1u}=<0]mS bjD6)[e0s-cR4~Ã!l-JHݴ M##F@6J7]JE͕H#61m 64J>AGu2&ٴ PU^L-C|/Dc7$a# zkHla*JkE%P. ]@z)՚#u@2Q+|K\֭DGBK URVҧ_W 6aeSY46y>MW!W#M&퀊,Oq\l(R(@0ql'"I a[&}** kS(PHcI5lbS24Q %V726.mg3CX>QA a fUW)2+B Dl`zd:TgvNd &*+;H,F +͗S*GbaV `!n%nqD`O?{QJg-m:=O_ όQ0LYe" hE5߫ Rh(&@Y)a$w(8`-S>]l;o;0u2^$H084i YQ$#pCrH[pxx(2QK}` dwUgo{޾b>c۔رV |,ˢޜ* Duu˖QȤ bP;hW]z6~;huw\Ids1mxX6|'̓,9nozfgA$EQd1*rd9)٦"%U\D+XiK%.6 HFl3 ~9㾁U9o_۾ː8 0 %͇X%pJehr A 0(+aV ,pZ`cIŹ ts걿bSR.b}gF!YѬ7Rc]\u*Wz#Dy1(d4IrS쐬xӥBIMs|()E-zG[mA();.ZsP בQ졳,)X?KAzማ>x9:{CVGJgv$gQhr!8DbAdA3>a ֠/k)FĘN!(VF[LZb F<`pb<ެUY J%3p}EjqW.{D2ݚƒS&CʮRq+93O, +T>dP ԌJRYe{W/~h4|g$7C=Vf[{tcV]˸&Lr(gtC) '4o]Ikn8'V)Z@0d~Jܪ`fEZeڭPq%F@R$9U=x&p]^}fvw]k 66ߡє|ɢLZ̓(Ey/p0wX6UxDN+p*O!%B[ ֶ f'&Bi~sAڡ^Q!˳Mˀ~j(9o]{j_3K:| mYi㚜暜Lz*IܤYBJc-رt[QP[-&b!28:xA0[M21'O48y)0 \afJŗ&29v1[gw0Kopua21t8#nMtYRjg|,8(54;vwߋ_C@Xt"a4ԃ8dQ!s=n\_xT8\ÿ??p*l87ŗ{[ؒv6ĝ/eP9ma4L"q@rs,C`%ª>>#;R)"Vht]ɲ;1/ 9/vܦ6!yɄCV}ģ^1Ðnac~>OT ȹ^h?qu3?}W^}51ltE]ʞC~7K=h k{SjǞHw2cfyb>mv}CTepF{sw5T.#c{]&j FL4Ӭol_K5+tCgZܼ'߅0"K$O%ǎ7qCjX 9ѳ\hiVR=F}ATg~1ه9Õk[N8\^fk{) Pwaajpk8 yKkr䄴f*Lϵ4* 0i(UX5I$PVgrvi}޹WqYMWxWOoxU^?s=Ud.z͇pk օDs}v x_\itRɋO6ղ$t88W8ͭ]l\Cd |68L0YAP z}iRSg^'/!_(Qw P˨17b%^NY8QNIec+)(QE%MBRkG+堍bllROY^pHցc K쳷azʼn bR6) & {,w$;a\Z}|[|ɋ M7*Gu=+-O},(J?xyz|^wwy71nU*w^`d>#lJhV;%q&j1Wo3Lt{;Y7}dU'\(dn2gA +[]xYeO)7\QЋ50x촇,YZ62޺̯ܣ|\JI@"T*VEzwJ9&/aQNy8=loLlmХ ^Z3x,J w mR{ȫs稷O=;QYhU9|\ev%_5~0:V<lfunM )lX&8#OSXEH?I?Μ3(CN!=,3x^EdΑ&N4k.~Ǎ 7Ĥ%6MFh mr9z9o*x+Bp*@n~5'WG 17Y"u%%Wq,D+^aHgDf o\k|ŭ=6W:m,*"3EJUTB 7yZ2_ۿ'o._ygko|Vǧo>kv]$/t"L8jFx@MC^">j6C{}{:˗7` Fe$J@m4* ~ɐgzu\n^x(f{gOҜlo9򌋧Xr|^K7d20WR,6,Ofyy#F%}ROfEXv};@ Seغ1bp=趥{$qqѣ ap#tB2[$!_g.2>;_/"԰Yg6H+ıa$aD)|#4{=ΡEpd8hjHPJ%RJ6%n>+'X]y,i5\>yRN@Q-+[ƙ9,$;:%Vp2OٌSfNT̞ bp8 {18s 3q]wcӜ???繱ʍuyL3L'i"I?f H򈙩I\^LL󔧞y^.QDVo1BqyFi)Y>QH0X"B ƀke<6\(ޏKpsQKlHiX\\w,Ʊ&G!Mz`^?\<_I/52騂-hObe!)Z e\TȐ]\Yu j5@۴@KCQ0B4#ђ0߱2'Il,)[iy_yM>FŊ>yE~#咳Aܖc_!+MkœQÊ51!!A+TV8nb-ƺEo.S.FHa ;=!dҪ%d q˲7/^t-fw;ۊz(4eZd]$ G9=${@ o+nlrĄqNVtlO} cnmouS!;Tڝǁrťߏ s(O)/y2C8{9={Z{5!+Y];BjNq{,LJQ?F[iҍ2W*8h s t>WMBDxq툣%3f5[6TRDN/-qCVY^^FBń"^z'>b=䕫7wTQiYXz&!GC2㰼DTehF0]Yq]+4$B`3L ’}v׷0B#q]qP*(X,FgQDZX 6(!"!m4@`eF8,i!P1S5--@;YURiZT%09I):˰VJR sZj£ dnF{{(7hNNӬ͐I$( \ySuz9ˇ$3HiQݸ#cnB; YY ץC.VVtxᇁׯwcjL{,:_ ;0nmo簾!hU q1Ls6K809=}@n'L_$fQWȱ0!?هNSɎxS _ xs\~T5fsAC>* y|KC9t⒌|@̖K̔86V~H?yyz,_o醜>YF?+\ڸTȍF"\$R 1HG Z1?;a爵(y.yRE̎GާÎ qa  $/,ψ!_w"{\|ׯB^_HD iM3ﲹru\{@k'O Kd$QBœZAR敷WIcqH?>aG)y>[/|GzԦL,p" #t7't9~b qPY|;rSu\*?Ewc?yfy"^L0:Xf&kͿy+$pD8-6a9a.lGZfjne>H)s끅pDV*FHj{WmzMkff"0 h4X!i3p}%C.z<nGZu|4DO-c5g9L*qV%퐛⅊268d*浵kwwyǙUm~};Ӝ]PoaZhR5yIk! s5?\h1ynHFsKMN-rb~vFgdFVS*9亐Mmza}/ OE UVs8H k޾* R ]XCTNc:$=m9'wx:?5rpÕ[GP-0n;2= #T\WR:j8Rćp-nKǨO:Sr$3#4%RO-ɻ&liՈ:9F-\lJ&>V }z#V{-?DzuB QFq?癝=Cs&6kot<5E>2p~8q͓?89r=r,OQF " @rQK>5FW8<8 B$y H EfZ1EW^\l ژBt- ٙH9롍ϕkf{Ɂ4bvNڛ kŽ32B9_%&k1خma/⻗)%iH.,ʑ|-ӳȒ7&ז7֍5;<=<Ĥ~w0kFka8 9&wΝ9S'?~?Oר9VU~nE%PFRqD20McR0µeЕ7n^ 2e\g 4~YձdBE1 i6ACl4K b2G^5@w8{f| zb?s7z^ PTI>S-7qE5Z玅RI>p\Q-pmz.avvsx!-JAœM\LʌOɅ$g9,I6B.@193L5;L7ʐG8ҨoSX?Xx-tZ.q"zئRriSNr6&lbI/}^<ůinsn=$Ʀ:yVM 6PBʞOqv9u2ab(?}35E'Nea5MTc$brxo챲4Ej lya|lm3p <(w6ނb={f^Z@bu`-`]2<JJXB}I zT(M7's8?@((,E=qTl83kњk/"ZT8̪҅߂j<))dZ/A>(4)ј4E)(!39Ɉ5rŌAs]V`-2>aHd6ph@)ҭ.LO ujbvͲP(WbrT$SS(%92EZ5<\@Y;ɿz$n) ۘSJ(Eks꒩AZQd0O@ TVj;D#l%˼CYʒ{Q]eI˜Z͈sZB$Ks5Cc6'(aSKYZ>pqH(/,^ %lxLiy|He# #*粽K?  H1< cskqy-E" 9(biE81\aIX" IDATb=5qsu+%Slo0<̓C=^Clc!75["1@ ۘ{%;B?( Qe2^Dߥ\.Ӿo\ opmmDY{z2IR[Q>=b ?/ׯ񥧟gf"qgv(R@=Zk [!8Hւ60Ve "ӖQf p" " `A1\[ʥʸh*ie(%C!ct `v*!z`Ȇ=m)|Rz m!ÄpD$Ԃ +)ʕz^KsHteF$M-I볱M\!SIDV=bb+2;s+"#L+C9_:"uǿ(:gbu G`qH}ˑN+=9F؎j@Q-AϏ3~V։SWrEh)$YCg6q 7Guxp{N܇5Cŏ &=%wR?x=4:Q%:cǹqZcN4\Y7%r![`$*b76%4EJI$'q\\)D?uB_KB#Bes(ϒ'I2tF#/Pk4q]p}ZH!y,ad\vWoX%|UsH Y 3SD0{}[Y!bnZp3Ch^1ьT,F_9y؀ȭy_Vqa0"9Hb(!6Td,h? 3vpgFs˔!sVR;L+"+8x ?lI#ܲǔp)ĹAgFT|jeXzGX~$uN LrȠ\(x%AuV憣^tZ:Neq~ cS&b-Zkg>wj&$ND٤(%Hb<8 L2 dY%E"űI\|{=א}y.Sa >ddhaQ!@bB0"e>d,kvcrVQ8kl.q:KQcm4w`^ڒs7NE"5^Qs1 g zm"걻sP1ڃv{ ?R/10/,]ylZW@[s F\?C/\.ƎXZ۽ȳ8Ƥësv{ln}ffs|_3)H(()Z4aÇQ8orP%&o={4@>;s6j$4:IQ=Ǻ63)Γx"$H-24V:qR-m)[]e9|x "þ͐5Ʒ~wڛ|rg(=D*xȠm-h,U :/WѺȳE[R%U J %HR-nڡq\l:S * âs:TXvhz8 WPAUeh4`GSN`KZPU9e6vNȺz(QiMAdK˒/}7^C$MZܿw _)7ńt6gu30YAh!=8=|YQNB'aE1Nxv}h8diI<3H/,ʫ̞3[B4_h%v8;b{yIC֖%秿ʵklYSِػ6apen^}D 0f^G#LY2YNʦ4z͟tEE+&"y>%R-$409>|qFASzm>|µNHX< BZG'GTcXcZt=Nk␪*C VSR&)66(g9hd>IG4{]%xܶ.j 1h,ݵ%VU@+cqfLc]^gtC@e`{MW>,"xdBǯaFG>FhД>BSƔVgYVxB:y Ȑt& αcap\쐂TZ~i ^m!\dfc'FVJu s5_\|jepPWo+ˊ*Ѻ"s -6[~_ҕKRc$i|y)7|x@Q;K͐IT+k}tiI4/_g>fy2zgϮnqy8~֙mZZLHC;w8ߎ.^|mWn'fy!"1 ijfH˜ ,r=<Փg~~c>/q:#f` B("z Xb%RXS҉=z<&;G S<0O)*V;9Ra{Gʺ ek mtٓ;(O9~{RZsɈ h. /nFXmsr%B/%PB( ўJMSg9ͦ=OxvE/lZ<8:tFUU\<{^+Ə@٤QТوkd뉢 מAΞ{B0C@ HB'UaFQ̕zlNΐB"s=+yNnasr\!R\ivNؽwVG3JU RpooѐϽwOup{5N9EfVEJ\嘌 /g&_4\֥Djrt< ey<g*.k-nJVm)ht%FCs:-sfsWF"ް#QVK\tebAJ9b>=/b k z< A,=No'9.<&_>7}rm&'#zҔ+=Ȋ1e0-oRܿǙ-e*+l!u. `XKҼ`2$FzN^t;' ƫ(WI-bS>dyĢҊjpu`5 QŔ<$^]-U9T3AȒ5u)Ȳ&p3''YA1$`eel>`))&tKR!UT!YTUTufs)^k;K4Vg#x=d< ϝҹK ^?ʅ |tp ;fEZY' V 0(x um-hDX Qk搥ЗGA!в!(@z {=R?-=4Ͱ)A,h%M3G)Y(LƔ!qr{/lBn*4r܈:w!L>7ݣ > utY,dLlt6?p2 G'44s7xBOk*@iIـݠHOhH8݄ _Y䭻eiy%kFf}KQXp~He,H?IM(-YYr: d3'-`3uj#egXsurWV*)(FڜL4Xt'|?կ6i6x499b敫wXmIA{c~vb'sJ _ 9?A,r-QdĿΣ# FV.H ]jըu5^Y<'+'s³ -fD<|ˁEbZB5҈Ƨ/DAyV+.)&k!-44puŢ~jx`sgWw$QT> 77XY[g>?f!oxjMM '% qwKVELj$ǸUm⥧VXi'l[t;ٔ"Jh \ s@s f ,B14ip:'!3lQrrP7< ؤYx6_PRVC) DI05_ VBs]s 6W"tpd#K. r!ib\4HYoVp dsr|1As:23fy>ƕ`aXzc@7߼F\cr1leMױ~4gUQʢ)խ^!GUy5 ^E3P:P㶐^C#3 {~_{ 3,q5b?6aY0gk! P)6qRMbpz|64QOpa9W\AF8g#NNOƛ4?" Д!>S 3\Y^(Xe0ص)N•!B)\ēXYY Nrڂ5.Pγ{|!"qtOp!>fHk)\tN&ХAy:%H$1'jT8>dT1_{!- 3f#'G#fs~h4pIZ&+K='9H>'#f݃!͸Esp뀥6v9W,UvJ- IBdy1s }f&O8* dp0抓)N!7iLg9~Ҧ2@IrI?;'%lz A.[H’WRI p%e"- 8 ogu96+̫ck? f,yk~\YF)SJK}o{N122tPv!oܿ wp OxO8OIE&40+B*Ö玨^3O9RT$R :3!9l)ߢq%N_e5˩czqj, RkTdy덩/#5٭iiB\}&(#XئB(vEs]Q64}yM{YQr-] .~dqeF5˰"b:M,,M\y$ek{ոIYZ=5TFz%V{_VI(APt㘸ѣhW_7o*#paI fw_vlQwg&IH`>Or^?pXinw>Be8*gMY]8^P$R(ѥsk\@Cٻ~$HgB#JJ uԹ^LшYqcM?o4:RU<Ɇ3kǔ@I,BCW%F̌4M&ۤ*On#Kg(!(^~/cvȃ}:II-1a8+isg^ڠIWI|Km S͝iQ!K[!<O dwxgt0`c-…M^x1M 慦UYJBV$KҰP0e+KxOQR?K, ͲAψ6/޹GgC f83)/n)1},lZv([gҖQ[>sR'4[ehZYYs&q!<ܙ3=Et^bh|>Ǖ.<"-HE hP}a+3ڭ ޘ<˸{VI@̧};$=ӄ$N`DrgܺAR"ǖrB12g=jmhnD$9/3V/A4d:#--* )M]nswd<X-|FSiԣKI1Qk(P$b01y=e 3eՓ XVQ@]$08!e1Wq08&l$a{')'#[!ILqcnE~׿^xfU e(ƌ'yNϬ2Ϫ:ha2+x}.q:2V6W) Q("(cN8Q[DSLRңlwٽ}Wf߫K~"qE%v#rsǤn%n6(Ӓ b3K<&,u>su4<}׸7⒑2߽zHLL>Y%>x6V(FZ~9aCaAsu<BH$6tz MS z2zr{ CHA|¤A~|V'č.Uh}N1oɘ9YaQDǵ{א%t|^3K:N&Cs IH5 L®NF,` Af SZaҳbNO +lnxB#]7`(&^t#uLpdrr:CW^L9JDs.r2g_3kFF#c<8wg9Lj$))ZEZ0(-&htp'k/q5"!EhH!tю Jx4b=0[vx!r6$h&tqR>ٜt4@e!^[?O^B#Nk-ɔkhKX$T V], T,aJKt[ܻg%?yMIO^-/_ ~/5cV;ll,{?ns 6q6ENCB)iO&s C!b~gnq! 3jyFFJ+ #󿔪NCr;]=#zAaĂ\ G:U.3t>A#lw:0FTyJa9 bq\ltKLf#r]{X$ '3udO9a!H.WV.yd`Bi.raC3 M9- CU̬`^Z>iUR)ȴ`^Y(U/H Yhtբ,|-^}pL{|S}'B tINo@昪+EaBwi $ex5ar:8AG` t:8K74J =f4p@s۴)T`{̧s<kꂬɻ^s~UmXP;jXfo.T{wh4bځdF2Jyh{ф()R)cߤ3x{U&s4"/]LF#^|2'=Ie*px$Ŵ,ny9J3{n^.Z*BT .JXj5dW]9N (k 8+7 RbB}9?Ofb?BYEYŜ(IsMŤyVVP2V}8g7Z\r7p|! Zi F=6 >NL8=FV/S'3V&( / R8Ңb.I]ۺVVea'PNr֢7n31P0 IO$ U6hp. X+8tk|b% i9hF&RkҬ}_yiMp EH5u*O glpKKX3F4ܺzc8JvZܼCA F@UC-nJ8P4.<^<ϟmGPJ;e!qHYŢ)\ږJ .LBvDA%bRT/l&1/ ^|Y޾KK ~xu7?^q|6J)vw,<ƨ76 Nؽ;)a ^/ wnr;[g;<ޠ-"j (/\&Z~7ݡd<7hI3O;* lR0 X^YRˊ(QRar˸șL'~J _+q |8- [oÍ|O[5 5=nW>קomZ-kMTΙxM|U$tYy i6ڍܽshJ J86~+GgD ?a$q*8:R9N!>H2w6pcpwHPГ=6A|od2>l, wG &՛בc`"~*)(r+ M1ӖTZPZRafaP 5zɋ=~=CVOb\LuL F9Is28!n14Se9k[4?9FW>@JA%iIZr*0B[,0דCoMU$^}&G%ou^pvs/tKμ3qRB >xpʣBUiU2 EYKciU>ZLQ\0`(UG,߻аÙ,."#- $Z'_`8rugf×٬|2>a3d27XK~^;8L=E1ܸ~.;Cϴ.+ 9*?dn;^G(N$>$~=8{)" Eovx43*4v|y[UOJwFRe.Ȼwd$,ER-3'.vZH"ڐf3ZO q~"[Yq8;(yp\]|i_b0"$K?±HZۣӚt)$޾~8m1?R)QXrcnO驜b B~P+mЧ3?ƫo3wuM9R4i 2`8<˘M,7bVZdyd6e2>i6% (mWՒ QEA f̙-f474|3i]gjPU ԙ"s(;U7kkq#`]5BD~ϭ.`8j(+vSMƛo2Vx^א윖q,x=R8@p>y8"N=sa#s9#$CwA\G\NQfɴC mږGԤ2!BatE C;(Ҍ0 |zenkw~w"H?Ҏ<2#aDSCSYJ`zXL^ЎYIDɝ9`*K 1)<JjFS%P^ L1a<\h34-!J/1FSpB0hhDЋfcD^! yvUJDIrL)ݶ>K.FB%+k>wx>9ʫƢ SGMzQ~vB:)JC\ZL^8*,w$Ľyi^yͻ9{==Y`a I" d[v# Y YRX;s\=QWVV?ެrDDTTvdvVU}ߏ类zqtzwT5ey_CPkoyՉi~t귎䪗+no(P#}?{^uj7oLǎsmK)&}#kSt lƗ&` |Zl'-,p%̓9&ƀ%Zu?{D Mʉ& Dzr\OҬič6xiem`62a+(B02ZbynGq(G2EWpqC8;d6V:5c,Ɖ"ɬ֖ yeqbZu(+Ğ4i"&>jqJ2fÈ$Kin``sE3UHj,BBQD^1N@Vp%s}saO9^[R 9Tr0R6ʠ*up-1N)]H(ɵp8c 1I CgꂛvKM;N IUweLB3|Aw9^ev8~l 2pr}wMoӻv[kr0r ĝ s5e!N!c7!+f0!Fؓ?Px!eg98CnBf >a-N8m&1f f@F$Vi@g3|HHÐ٤ns|elvI 띘_{}lBLƖkd);vR &Hi9er&pOYy dNfiU*ٔ"d+J#dv8 oj1Q'4,4%j<*\jVOܸG;,B#ş/c-#_j>_m̑^%otw`iuO~_mWŸ|5r1EM t@J(X=ɌYwy兯'In1Mƴ|GVL± hVIaJ1 A^č&I^xV) ]ɌDNd $̲Y6GTEygN[ս=VV#djhSUtF WL8̽NoYgܚMX68ija uD 5|⻞$.ڥ暃Y #fHhDO(r+D% ጽ!}wOnC-m_q|H4޼=O/giNVh =ՌȲ(+հPN QۄeYzT`E9q;Lf+$AXZ^l63a{՝!NQ~k)Xoޙxd+Dv Bb(/W6W_x>_w=qW_:08DG IDAT0bn t+6QpxExkPLp|˻my X33Oɳ.k6IgBd^[;fGΝ޸@Le'ɲ92:Ku%âKUB` R ;ZB5p*67Q 66xX]mq uvlfۻ%50Tr8R/΍āfuAWiHuʃMspxG2;Īf Q贤jw.zv:NK^C Wٱ׋ՋSǗ/xe?s $B%J> 4pvX1@ q(fVZRisF:"8U}:BH+bXPJbi{;YH d>'B vA+deW((8s:-(,i3Ƅe5RV<(!VHZDTZL&ݕv:F&!d!- .F8х $$2m+њ,t`FNdDh>c'Cb sz1_>F = rͤ FiAfl18Pf%q>.ںոB= 9O48Cn#bӎ=j=?S%z23L(!vIHΜ9S_ 8jQb%0xK)Zc&|c,EZP\xOY.NC~I:Zz]{ KM|/P][S爚J8) ^9yX }X5d P(*1()0]\*9GI'p!ᑇss][\pe ).Rє.EDZ'ymc\~ Xy '0t8gYf^{ ?$Af%KqoHm:'v,->7ajJ͌}Yݪ1EǷOvvpm{7N8UGd XyD%H!7((V zw-ý ՂK̟ lT;ڏT@ŁV>Pb.:Kwi `dQCaٜFsrs2-5(!,2z|D1IsxxEJkh8 uRzSp2`V(O0R&R"E[#Bd5sV5+EQK|^P:h2[u _^ĝ6qdTI{C1;iNL>pUhcqa4yE޼JnNϼr~[cзS"z>V _!Q3\G[h4ێdxAfT|ϣ^ӭ6B!q(PbE-K< Q౴Z0e`2J]\6&S[lo\|-@dP斣KzT'R)ӷ1t2)A8t^nӈ0x'GCamYm/ZNz ]jIU@*9,4eoū{hr4,V+~~޼|.ٹ&y1AHFJg#|߹P_m?&xcOuQ"3g_{";xOOֈ 1'4J㘏LZf+++(O|i~.,ڑr1yBN+2E5*!·*fX6@(*P[TEWA/J ׌1n)*t }|:yb>c&Ƿ66rom5y}^Ka-y3\Qt?4o^xSNsǚX}e 4"LlfICm0o!&cڐ޽1onYα}<䥁!Xߟq8ܔ:s?"H٨ Mr?:UҵXXMT"EnQ5t&&:uveB|/4#+e "r4~8'(˜"9G{B^ǯ$Cj^R>f~D- Y638&aNDVNcj5-UHȚ"KiVZuP82kAiYZ`y UǏ>IPgdYA$ 7m9wdڡ]AYVbˤ!)cD9v(0KfL)_"2؟v.\"s91H&ױِP\m*C\ Y䈃>:ЋR'9,tw|\d:0Q%'?R'(}.Tpo,wl.VNf8ءۮswo 3'c1I@W~ OZO(rl\7 PRf)JwYm#ac#m,Iz;h[㏑ٜC^M\k>%?C%6ܐdl)')?=8֯1ϦnӂdFz0=YmC97ݠDa[ES'y?~[.S H3a(Qã( Y2YIOH<)UI{c4fUJsi(Qn[VK})VVƛXc)c8p0'(۾y_E^yqBޠ,!7ן qFጚ>6BZ[:@a+Ks!Ja=p!\VaA:Qo\MKVJ(2UeX*  q ށ !IVpqdxJ )S/J℠,-ΕL#Z:2g(rb},ɈOڭ{<.]1MǙNX,_jQp'MS EuU=GpmzEqH 46 L&҂Rpg)NTvc*d`k mHs,·4;9&9QI4z@4ؾC:I2/) )5l 1XW.ߠDRi9K1+ʂǞYhl)1ge3*no>KX5O0+Me > K&fPH)diN8yt;K4֏s=*p@ը/!Kjl[g졋[ =qD+%a *H#}E cX&lt,$9y`>Yg ﻋK/0=KyMnH++ҧZzFʊV?d'ʎ ʢ:3;j%0 (p4 ߻4Z@"et"<>o2MY>fq";c29I6^gyh?q?Fx x[ &훞靃.S&%՛ܸ6dyiR#% :gJ믲s<y>e~~؇\&W^q^ i,QhqLe-5ݐ7g&2K΅cr%Rxuݻ›/~=8{2f$5TI)~RC8X!Nf8/9x؄R/ vR f$.һyᅌ\4$p1 QWYnM%J`u 4S]F*X鑕U>86G}IjAWb8$ |m k1I}ЂYʱ&]6k4 [Ht\k\|QXֈg%+h] . Lgsq8ij>51'dE_%En81"gssuRd z\o0 qA}s\zf'3PGi3O: _.Qf'WI8qN ;pD;c>ٚkгZZ0UYjb8Ly詏ȹ'I&{`\҈8kw1x!b114x=[K$PJ<RZpBJB/"-;lؠ3Ҥe%*Jntx6% 4CIK|}4|g~:*ԥxbtHe%PȿVJ0"(Jlba]k\ >(DF!HSܖUa+}hnMGU¢UzcI=X^A1BUUFW*IK^|G [K)t:]+wHCxO~dӿr|B{ΜajN6.WǼxilN)<45y. ,Cs4EG$RAg"K<t[M|Ybz΄H(˜/˜>~~n\M6KVA?mNh-xUamIR2ʭKR yV}k`8F`)˒ՕzLwiLbluƒ's޺IXkCy2N & ya7815Byf JQ-$c\38kCE|N3K `K|fA]k0&GwB3:+ fern]˰$ "npfe(2 Ydi˥+89ϨjBzP=T(Lۄ>*teiZ` hx+;pX8&IAPusO-֏t( ڐkxV&dimxڜ߼ʒHxcȔGN?W<(rf#+-g}jQiU@d64wyl6eB2$2`-FxU~Ezoūt~/Q[¦#تT XTAlFahԘMRS:q!.@UhnAQmyCցau]~T͓]Pl8 g z7vD9ҕ(SBFIɡ#lXÉNWo@XyOkC2K/*-KK-atTQQF8O &Bb>3RGY:!>K lIxSS+xDc [,|ژ]V~ga.8f/$/8R: Z(rkgOrlx8$(,+g)GP)N^OH'"nlslmf-G6ԑ3P ;~8u$iiG1FwPiQҌ6;=D!1ڑsdyU,ޥ(c4[MQoL)sDrpاխQfDl9a2LQ~LYGOfDAi9iR"."e2+"DJMM甅a&K ^!T,<-BZ8=b^I}σ7r'{и¡sp^iNGNx}tZ yc5ǘCJ9(*W(0%h\spuH| n~ݕ.j3#g 8H45 4Oy`MU!- Sxs+PF$gooWFgJ4=^+ ҡ4k~*~[7FeJ[\:ƳPs1E^%)1WTzǾ/"7n-iQ$wHOE>e(#؄Mh=I«/1:cXw?mgKG~.=v^LX+༏mYf$|vJC;|,e 4}x3k7x˯"L ʤk6xwFY Jc}xϣY1eh@%԰Du $!M&,{'5oгogx?2 عp h:8[KqJ-GezQ;>:G/$eU7XXm,ȓ/j!. VAQ8FB[(^FH[=@d!4Sc$fw`87Q8<,Ą+<'M~jQ!Y$L356 /$*2D6yaOi 5$P AtWb"s#=6R`NaF~`4e j,㮸CΎ>pNoΟ`2铛\@ F)[?ǿ?c8Mq:JPHIu1/81xyW(ågY?5X^W Cf;mC]laY[]>$'贤H |c]DbCzZIڞ Cx X]_K6Pz>A~#t?7o1aKY`-~_WJ|B/$|gk`ܑ\934wH%J(crfN LJVT($g>ه)?ѳ\}<6ajHmQ n@[~6!#VM?c<.m<ʋ_qE?csv; :Ԋ.6@h#ML{4bsm:c%afh'|tTnV  @UV,z*]֝gN$p$tJR FO@Ѥ,&- S`1@Jf"i:+%jܽ›7{6,YℤR5ϻdiϽ,gZͫ_ϋ(R5+ >gsCW{ٯ^+άdwT-qcO}sݡωWP:I|V '<ƮsWje]"Ge[cȭdڲƉN=``fL 04dI7Gmx,G-˲dGeZkX9}U$%ږIj$ v=ww@cG?ÑQ&x~ߧXTVA*U56XJs6n}n ˍi$X.RhTi$Q k,,SNw#m[ig33!0IX* cV+ec;.JTo?WIȘ,.1ʈZ8FlFblуP5@tɀQVo$Ɉ 6LBCE!JC~0124VgǾVjZJEbmuDaNa5>wܼ0qGS+P ;JI!-r"ض\*!ksX’DzSPQ &1H--HIÐ4qFmR"%,iQ(0H̴GrN1ѣ3w֩:?d*H"ҁ&d`&㣛AxWK7 MB>B!]JCǶm "5.1x]Na8l1 i75&aC%sH$-pbOwhU'OhjRq0IrЍ-TH`+aoJz brw;*RԂe+`P:v6BdTĨ,%2LZ)ov* Am ƲKb\egnan~d: )L],kBhQ5qsecH -r9bI^-%eACsikhwKafPSmfg-eX X8e_iL__%>QNn].X[> $[1&^ZDcmc<"r@QB&i(E8?/WY;Je&1m4QXʅ2c2KG7)-zƥF:&ÎEiywܩ+("Rh°#-zbI,F'D4aN Ht=e4X%Z8\IѤqLZ9/۹8vrHeAYKj1$*ӶFYP)J0:c3K@R)'[cH)|U0>R.|Pn,;YwK #,4V z!IOE4Mds-)y6avh+琯ٹs'O2'o/V0),u,/hŘ ST< FbHyRHuk&MP)mȢ6t:ғ̀X_$I:șν. Hudﻝ۷oo?ˉeqBl͖RdžBB=Kdd=񰤋mkIkD-=JZa[,cTaˎ]mzYrƈNZ N3eWb.N-0g۔MJd$[BRyʹVlnC-aζltc$LyE^8sPU953T2;w[Qd й!|1U"TS/Wѥ*Ad(n"MZx&A),MJSAH!oez UfoD.,RBxYNF~,Q8-kS+DK1'ODNp9LP(x]Kϱ6_ro/HKOs+)'3=R[Q+OM3-I~w?Cq/3< H(Ck?8qCTRi!)0qPm:pm456Kʳ0{LgG@e :$rLoc[jNrJMko`$_B;;ҢJZZ,R*W t^|M[ 2,wz$aQ-q]_ǭw܎z Z + ^|?uiӧpf><أiFҢyҰ5䜔"<5t~f 3W,io]pe_1Uz/W!dźvK#QxUƆTFZb"$V/:hp[n؇1VJ--[HeI]q)X`ےf'1 6c%/ϕ}b"Jةi~آ VB)_ י=Lc9E[ Yh6"+(o-mN<ЍTktR~>U˜_SMQx  cj9M 8Q^-S䘚3R+`EuiDⷉ;v]Sڠ; S,%1dFk5`r]])!eg3nE m+ {!O5H7A%\pr~| G)r+u8]MYQfIlD~..Jԇ8 -HCX! U+kP̓I֞"3 h֩kEf,SvFۘl)dܗz x+A]d2_x˒$βL6L&ƲEL \ch̦0, "z-xtl]^^Zd@*l;h@F:ŷ $b+ͺgr(M" +-T?+4tt̵7|ĹܰΈhEV@CCUV[Hr'06ZgX<( ML9#z=@ht,AhJm43/0Jjԛ IDATﭰe033MY !ª8,7RyKĔ.ա!:69WS+g@igKZ$%4N-F,GsCwN"~grʷyHdhuVX^j3\.3emO]X&Q $XLql0Sr<O̳}Vx=̜cGS)B~@|ĺ"QzqELX@wTya(8zN[ʁVsU7O H/WI+lPƐj##k K`|z~_1=L3Mq 5,MXKx`hأ9Dg8|s((,Fe^@u|Ρ\xyC'MlZ, #QJ:V^dx ߖD'Z4͢f]hI$1RƺBCE4$Gtuʑ-D!K: {}gz|&0DRUmOߔ ~??jy p5+f?9/e; /i6f ~¨,'d ¬&QX\2,%xjڈ(lpCltI%_k#Բ.lQK o5d MS<# F&́ߥ#=XB&gKe/,-iP&% cl#RHeij39QKDQME̯mfVIضo;N RO;߶IbHp+n۷YGG$ءޱ ϓOciڱ |4w޹-J(HS"faysP/x߁8rdl* kkݐrc4)1ťkD-FGbc!EZ˜ZDW%l=$(`ykJ˻\ݭx ̢R&8\rJ9oChMs:FkhQBe)\'C 㦽uA˞F;#s\Igchz ):t+Ң0J tVL%oS)%\(P1JF(bt LQplML ̋H!1:FLS0J#`&(1ml fMTErCrn?06l+aܵ䠩6\h/LEJ݅L\傷7k.i̹hNdxmyqkHlv~^ПFw|uxk W1ꀺ_X7^zh\k]Hvq"=% "jôR4m Z)^fc ZVz1 fۡX.(M4;m Dv{`Yh%ma{1'X/p+ Wo1cV斩H@t:![BѮˋA{'[8KԱ0:K1Y_ٱ:gYml?'=QǦt@A:΂c{˂v0Ro>~Ņ>CC%AN5g+)nq;fN*ny@hE U@ b7Ick7!.k-?ey-SM(0A Ohc!Q`4vRp% F@X@8us]*ňyS`DpmO/~vo5O[5nڳǵCuDmpLo˙Gx/ c~*##b4mee!bh>MH2cIf)aSݲ2=FfaYO,E&̸( )yjt0fl%_HےJUEFjܫ}ͧm/tG5~?UoӼNW5.8MWiu%^JuWݻY:G)-D(mXY3PSgKh\[9N#|`lirt]lʌX^i!s%wSPH7S֋yWٱcK+ZLݣ #}IH JH8948<ĎݴZMj"C?h *ryl+EbQhQ5mۢPa1 E9_]Az)I!X[ VB/}\>-7YY;k,=ñ%%BZe0n0fS>ž*8{q$1` Pi%], U)QCڵuC#$[($`t H-FarBƨR)i N@'}Z~e"[wO DJ!^<6sUu1فo=IR\r.0N1l4 VQrRe? k݀NmzNCV'U)&=nA)렌"_0DȦr;vr5\3X؜m KU&EwUM!'h4RBG!':(HT=E.1=҉EXF.B&zH7IJ$}|;N,NͰuZRILRҴH:P C2aq*G7ga ㄱ]%bp*Zbk"RyQz6T\'h9BsgF-\$.q ݰK/ Xi9’WGG, 9apeա>Ad !"FZ6ƨ,LJ$AuƐR uJ^+gAGMa8p4[]A&6فoGE$qk84.؞jOdIZY ~@dH4MH. 78BCUN/xo0H魥ABO)Da&XQLql\ёWYjdCJL9b*[<$t|81qi9ߏi-a$*}(!4|z8YTB?js.b J┓s]S|p-ᘔ2%qԇE<[cbƤhT cP*AiOI۬p]>7G츣ւ\jnSG'-& 3:VS.ba[.;?1>}N~F Gsli W DTDH[a!b<+%  RWDZKZ.32TjRE;JMTJREvYZEiMl7qY\Ff wb@RI_պ8. 2 D+8θvU p(Bлt_tpXX78 $ ! #.PYąI$)~ ش] X2D mT2im`:Fk%eJ41d  1i gX]W.A5foa6B80%/򽧿Mߢn{AJ2J/o@ j j#2G-4Z)(@q,ҵT9M7P.gڨRK`u9࿜LO/s6' "µKȧ(I`R2 nqϹ#/>Qj + { !- /) 7JBs:DAM*3u/)I)H$# AWH~1_4 i8/p]Rp{/,Maeqqk '2 ^ bzI ¼&uASFv@T)Ҍ#c`$rbQa/"ǚ @F1uce@Xڠڂ\ͅoD_`K7`fqm_~1S׸=ps(D,-t~♗,fgo< }?r)kx7:7,D74.ߔbKAqZsQ%ef\Le?!^Z?Qza, ^ 7˼0/Q\; A^#M\#\xvjy6qquZkyq] k 5j5 (@[ Zk&''4oެ Rݻ;4M9pp&|+h4Wmr|5VghQ(Q6q-)NCP ]ÒmZ!czUDžBQ6q-!_q_U=MkÄ5ŵ:~jFX9l[עϳYo=\3B\1Zmb&6+wMlb&({6'O"odll'O/R)%gΜajjj,3gΰm6fff8wPVY^^P(1m󶷽^xV+&Vٳ^x4Md߾}hv|[ߢVw)%#uW}Fw̞1 g޴ѻ(hZLNN^]~gEz)ލG}̶mfggö7}Fdattc RM)z377GT~xǹ.{hy'1ưeiqg֭sJ)i4KH)ٿ?ccc?rez> xG.{_deeZm݆R'|?׵jiiz~ rrSO)wu6rot:TLc ۶mchh mWi]C=;wooBկ~{}vJǎg}/> J?yx≍y}k\wu߿{255ŭʋ/(]wv{nk.=Jx㍜:u/~awG&˲c m7"RJAq8K6\7ؽ{7|Ml,ٟƠme q4MRn |Dz,1DQD/{F(,kcr@rqpc`x5LJI -1 7P.ٳg)ulY<7x#\??u]e^Ǒ#G9|0O=k\8)%ϟxֿeY+cسgӯyU)EE)%A\V)Bfϻ=.WZ7Zkjw~\औ|_禛n"MSx}Iz=,²,_e$٘H;$%YuVnV1/n3.noϽduOkZkFFFعs3pc ^}aY=qQJQ,) ~a<+++l۶f{GGP(m6nx <ȑ#|_2m)'yGhwc=O`6Zkz!Y\\d׮]vM~rIr"Gk7 B&ڵMy|$I}Q>o~ӧO.;vhFFFlٲ~ϭ׿uwvIu]ayy~|@0155N`aa]v199G?Rיc_җ4M>cn?ߏ֚~qXXX[naii5>O.> jz΋/= {(BY]]e8sm+uP(0>>8Ht׾*Bn㎍zy,/y "~i4?8BNn4b!c&###$I8<3:u c ÄaH/Z')>|᷄y:{\\遗+m/"̟ɟwqt:>}/^Nyan#MSsa>V믿~c$>(뮻//?֭[71RJxFGG)|$VVVX]] gWJ|_j)rkb3x%RLX}{ǎԩS|#O?4'_o|__gaxx~8/̮]_5nʳ>*w}7;áCBR;}C Μ91k?w?w?KH:gvv/~ӟ4xlj'߿q>_Wy衇W­<|#.qS,G?J.öm:N#G022q_>g>|I>s 7p9~y뭷xEի\t&nj8x s<ݻZ'|??all,; ]Nݻ9pV{ӧON_\7"֚]v/}vMP`jj~zQz-ٻw/gff??ԆA$IT*8z(:uSNq &&&6|azOQݑR^xop!y|bH&ck׮U}ٷoa> IDAT ;8uRR[_̙3\tz( 1w}3N0 3|ǎ,,,o}T*x ( Î;زe Bj>,agg\x1 Klڴ Zz){9/'\|СCܹ3sS?O裏2995 mCCCY2TXkٲe Rf>9~p~~-cFj[neuu5ׯ_g|| v[kٺu+KD|_ezz4VY>ǃ>SO=6SBJNl:3"ٷoccc|_k}n͛ c;688$_שK;v6mt֏1~G\#aV׮]˘ |+_[ѣ=zl8jʋ/Dˌ((a&i5.X,fRD?ccc,//s![lj$I6 SkiX^^l277Bۚ1V?k!X\\dzz>,< W_g'nl6Ue>  5s-g?Kh8N@ZgvQuV*CCCgI:.SSSYܺRpeY1f;EYYYa``/pرlϳw:^yL0c~U8V133CLNNn{^CcA@__$I eǎxQٿ?_W2fi|'.<_Z333RvMZ͒/^fMc>jRJ(\.#Om6$,O3334M3<88˗iۜ;wa&fu=]q%Y>}Z//~T*w4Gς~bAsNy^u~Q:_טWWټy3.\//g> poIccccC9ѣGh>X)y9|0W\aT*PJ#>* l06<Yɓ'y7xꩧh49㡇"IRJFGGBk..^dɓ'# Coߎ֚Be |3a||~(J޽"Rfw``r|C{f4Y3O<{oY;::7M޽;S^yN<ə3gMt/2?0۶mɓ'y ÐZ?ɓ'& C$ᥗ^&"~i6oK/ٳgyؾ}{6?pP(d0bO|zÇJZQTUq^{5^x>Ocpߴ%ɓ[l޼9NC$Lm i*o6O?4PuﰰsO&"CCC'?믿֭[j5* .oFf]ve/pEVWW3~ꍰ۷cP(P*8)* j52>pȑ#;vm۶BdXݔ!s֢βKfA'}9gc|/(h2+oƭGϜ9ý[|2.|IY''?4χMϏOyzbѻݟy>яm۶5Zw>ݻ]i7dqE7v+3~<Ϝ91_~~ݻ7w~ݟ~=s`Wq<<32?._̷-~73w3yݟy&i!ҥKLOOg7:W$]?Ƙ5ĉH)?LY8y^M~׀_y~~>}cǎf2&NBJٳg|WniwCd'E!XXX\.O~oqv1>>~Ǚ!Geǎj;?'?fff8{lYhth6 |7䕖'|\nEO^?< 9^)Wp8tib~Zl, #'=mFὢh-i~Rond=C=DY=C=ѳ{衇z=;_;z衇zsC={= z衇ރ0u#J?4`YC;ڴ+ ϑtv;򍰾*y阧y^'yn4 de+Lވ>߈V7P?y#$ ny{:}? sl6ّ#G{fqg]KE nqgzz .P*سgǎj1>>R3gP(x7F'Ona}C(xG9z({Y/8pQR޽>w7… \rZΝ;9zhFfɅ T*<YEΜ9՗?믿Ě>—T*ΝCA__J)* /^d۶mY ~;ki&'ĉY󍩩)6mĶm۸z*s׮]GɓZ-:;v`rr-[dU6/sNRr5Μ9Cǜ={6g.\Y3 \.3550KKKݻ~)efffX^^hm7of۶m\r{wk׮#pQ&[lV177f&˻dΝ;Ƕm8<\ze9w\6Q[2={ dyyAя~PH\.ST8}4ǏT*055Ŗ-[عsgVbT*Q(2Z`FFFfjjΜ9Î;8~8\pEd׮]:uꎶY!?O$c\|0<<5V)j5>$R$IXZZbӦMw},//# Crƀo' fIբpE9rٳβ… سgǏ#mȻA2Jzɓ'y׳.j"F>\jf.h "Ape&&&8vɓLOO4wAdtt~LMMelR(>ȅBYjZرc|zy>9Ο?+_BJAd ]JIرc<裙l5nH={h4~:AP2R|`{>ę3gxǹ|2;p,dl6T*$Ifff<9}4?0an&$I8t<Bz;ߟ>(F|iӟ4ȱcDz.fZyG,,,pߟuTFajK)3\,޼Z RJ >>qI8x K/eBYZWtF'!Iv /;vmΎ?*N'si왹l|Ѭ5oa"̾; 3pjZ^CkϥKxȑ#<Ӝ>}L)R/SV9|0;v7@Jp{y9lvhyz,?VwyD"DQz~GwGףO_{Ӎ,c_'{~y57qwz݃^;?d;~6D{ޫC=p_{Ip8݅n7r IK==[ |VM'Y6^OXk{4~Pノ}߿xoz衇!zz衇ރ z衇zx'{衇z=[FA)^otqz]*Rr5F^*o; !XYY7:pw|nNE'N)jw|INߒf!LNN 6o|sR={+W]5۷og7SVRi}ٛh w[bAp1>oQ-h! q7Æ_l6oA~;aGGLLLdM~Zܴڝis7X$_`5VH3*=羲2:?eaKZm#г^lT۞wFѦ^*o]V#<ͬ6}? O{cݥ6?%o 7C8W'FFFbie@)4Mq͔EVW4MWTTeRHM"Fq[k,Z[lsƤZC&Zk X:FdppNk0bqNf.ݻgʔwLo4,ߘWK<LMMݲ~\*Eu=Ll:ٽ?o&;}DHdS@JZRP`Ezݓ q1kWՉE0 Bx { X:-C:Ϥ~m ? t摞g}Z+Jl<ŋ0FÂ&IK È R o /qu277*bOkk]ir{ owhݹ16[-y+p_u{3b}f=geO6QؼOYւ-CH5d6"ZeP*I_(k1B"(!` 1V,//#ZcVZZ! vM XB"Vs)@혿gE7޾16VB(HRTPB".3M #j, mB !qna1̿cDW Ίw~ܸwrsdJ)0DX"jrqeumB1`E汒B-sZְDpΣxVusɌ_KyIv_kJ-Z}o,u0Ʀ=RlHϢɎsC57E Λ&P[b wR:Â@`fn ziLMM$ m…c)eWr $JEV@ 9ߒ:ߛܘ{X7׼2j9wZx3k]k)ԓc &U4X녵!3‰ݍ-[mdDX Blb#q"N& M0.s^MAZ+ FN) U$aD_mc~*'JPAp? tHuJaDm-6FaDvs}nG$IH9^!j4I[$G(mDSYf& Q@6ԆHPHD4Lɝ[I hk*]r}R?Y)G@5? ߤX,@I$*0x;b3%MK*NvRBir(0BR B %p1V)Ң\XP+& n=(2Z*3hN+]sya4H똾06Y&s?L0kSj612TcbrSv -xJ3֚^{Z֭[vQ ÐNӍfRg@&dߡ)Y.gxFc0,d¯kѳFP"AJjjA@X>b0B AbbH$d&'$RzM'**ZcSFrwwB-wD `ZuŝkiE-5D fF($E*J6m0KZj`j4)S.9/N'.2iF;k_b5LXEhHi@A9*i4Э[l3bEh*zv+,-h̢ ()!J@T`m-X鄶H@Y*52Džp[pq2Z; n$ֱxxg[; #A%B|a q> TE +h00Xݎxe0*I!R)B8AP2SnXM+AR UPZYHzzY?,ͿH;N ĉs- ':q>)U0 Rb0x IDATc5&p޽{wchhv o/t%.\:C̸'pTvk' !|Xywwvz4A`PJj5$خnghZqKhs14B}|VNqCwFxIop/@w!fgJ]Vֻ,v~.T &1PʀZCF}_q?X\"Dhh/Jĝd&+H 殷XYظ5Nc7VFӴE$6@`ѩ<7GX).8N6Nhtd-Fᘉe!t[OZ? ^}/t7IR #l8f䫾iAD`$ƀv Ù',6(,5YT~:TBT.))$JJgC2~4ej+!1|0D(Hi T`=2b'y"zwf.UgY*%mb%J.@ &}I)Ģe|&Xz5:I\(CP ">###E(B)E+̓$I*`v:Nۍ Q>^ rMX^_"NNtd9Msz᮵fvv-[EAFЁ:R vz_{Ʒ-ͯEGO)RH)Il8YYY!^H)$id)<ZX?F%R2L݀tųb.ǖҸ2 JID@[e$6l$ /D§WZX@;YYZّ6"@"Z`,CAhMdڌ !ؠ ;2aT*TL;&%vR-%0CTqX2DΊHpBHVgBpk؜hBЂSTd=n33@ǠNBd00֐ NT2[+_}{GyDAx5l? Z6BJbㄋ.sqД&PyX0BM`d U O}wiA>-lPX'% sr i<_D-;צGZk4 fBJæd$2EXͻ}fvY 5 [ņZnYEpi~ܵZku:1y&#P(Ess sssXi$ ּ@JE}Zf Qוo5u&ѷJPΝ;RfyjC T xE6 |P߻Y,~ eF>Qwn) n8 ګ | UYXn%06qDZ2xIB"%AAV м@0D5, %FBBP"ҹKBcw}NZUGX#l$: BK{@51*}ij+P$0@C"@r.+7o8^t.VN-)X? kw+Z~ r΍g|9,J,l?N]Tf\[b=!1U2}~v1^:_ֻ#ӷ&'6Nv'1-6]rRD'ke6A "fGO?O_g{XjROGx*J9Z26UFL(P*`HLiYkT(# DȀNo*QH"BȹͳSJenXZ=M=}]+ᣀ3%MH/zBfk | &9rJn.u#`zcx L Cvr<, C2IjuBImTڵ)HPr.$%ZAZ5\k"}}}ٵQ 'Oĵ$I0YaeϠ& C(rs"w1_65 O~,e7[HbD"/(-0X+ ZQ!*LdLЦڦN8'R\ niE.]硭*2Wۖ׾)*/0vc@LoTh0"NL:kuVM=Ů{v Eڦ6p4e (a(\P(` "JcQض!lB;i 5F*T7+Hk@lq |!I%o}bXkeF|z옕)S\q-/lzF9[ ˇ H3]aʄzwrhE<.Fu`o7t=0bAdkc޹ <:u!^RJʕr摾\PihCKK^'tX[T(Ra*AVvh,& .fuYvK8;e&i0arg)e@TbTo#`f%x#1sGl_Y~ RʥS ue%F -B  4H mQ(T4  eڒճ[1V(+D r#+Ha X%)hE b>DY*VEņRVaa4+,)o,Ox.SBlwwK󞅵-FB6d I,̚YSH"'2eK~ӭ{tѺg0^K06J(aa2뾛j={>=dޣa X2}cvcQHZ" #TWRQBJBڝvC'NHLHb5v TK%)WJJ"Z+e7y7G>L4B8'%ц N$(ltBQ(a/\c~i ;CVDň r*Ds3rwoOsmnY*"r Ʌ wʪ"E ak2~/ų,;0N{ ȹU ˗/3>>:OC*qg_(2OD'=¦K¹ӝ)X^n`-DQ!_]~,q76gټ'*ID pd26 s}v>h &VJc&-$sE7"BkW)XrCl<7cuP%Yy \Zt!A*.n68;y@ Xڠ$f)J$_ox:R9b\hXBHDbtd':Dǡ ,.0_6T $sgORc YYe`'26ROTXቾ[wz뫔e@H C$,b(h$pL?h%$icW& &)[@+LR TV`Z̝;]Z䉱{ܴ3נВ,]Juxt\oev'_tH50iS?LBGXrsHt/'LzL=\;b>ޙc-[@L>dԵ:G7@!~Olk?ۯIn㘭S4Xl6Kn!bA_!b޽|{}{r)XtP*0rWwl-#$Pn3 $шTERT#&!&_^}{TAHǨ@D2cҬv| zhZKkP5“AY[t-G! ]IQϪO]MC$^̙s4- DaDElڴ#G|$KrB}}*H2 4tn tO9x%MV:ݡngnޅN/--144)kasb'h4@IrX3wThc۝JHـ=k:qj|[6 $$IΏ' ա9Ld$Q0q=4αB'-޸]@Hj([lP C*"p:+miѡ ډK*{>ΜH0Qv:-dĘN)@29-ô槉EgiwP)D+q/~O|9^: f\ $J& !# ҆H$3cCLucc Ic$$F’B/4 K"%DQp$Y6*,]]D]XD_XB- p)e] Jp|oS9 4;oM:%b,+E-~!]RH2;Gy˾nL=4Fϕ;w%Wp֮ɼ'"Lt#R+E|1@߈DEk rzi+jct'FkM$IMX'be@Xa:g%&"A:uccnnP̔@v҅l$PE&jKt {Q>L*˥z кX'*xKK'_ sۑZZMپ]5cl_[I,F7-2>>o% C>Ì133RDX&ֆbރMJN,--PP*ZvGkV$m###[e 8,/-i Y$rJLB!W萶:[&.+++o6O?4?oЩk9oAO[R"-m# j0 %TpctcbCT5/Ł*}U:KMVuBqd~ \:vw5rtqe]~oLTƧn} Ԫ kGFHdM#*gނ[ԟιY/^e!ҸWvTIax?^! i !$"T()a@ds.u%}-Dв><~ÄQN[S*FXx2z?7Sk"e jV,Nt B#l2N+捣xͷxx}ԥD'i"VLs`<*u-{Ȅs:^7sZ>w;N_v@Qߏz w0n;uzrk2ťU>BX]N__5K  …m!Nb´J襄N.?kU5Y ut5ߧOдYBe[RAOZLjX^^Vsk:xxx.^dyi t|,y\9!I7MdIh&''9qĚ$|nχ>gYYYfdd-JYJDP>Ӥ(#He jb ik褓JۄVТ_7Oӹ0`PWg@Z<O>* e2+,&L@_CӗhLL(z("(`mL`%>F xL,-;uNؤ/c2PE] q!t@{],˪ Љ+b c ȄrTGS3?C-[[^-ѼH$Cr%rwa _(2]Axy.i&&s&zk6c+ǻ1)ԃ.kxVOpIO%]7u>qxܪ땒?Vd*׎#.4DsTHeކ N@JWB<,֟)U@r"XX#*ؾL_$@GduuZKX .@ VQ)Z8tgNxzMǑ7OB"K++ K@RX5nE(62׳^3/;|J\7d*\9J X/W\4VՅYV}_BQyZ+ [)8YXeaxx3*BZR)$&+!&Tڭ0P#,1V`aaf^|tM9p ~闾=Ξ=z9 Q,QJ1sssi 4n9|2fҢ)lC8?bwwŗ˥|i>^uc111j/No^4ư}mE;X ZUY2T<ؒsz۷7;`  "Hti+#1*[YJQ"ۊdWĨT.ɢ$aR$!$ bߛ7o{^9{RU3rW 0޽}v}oHˆ(EH58B Vk6 B9U>ݜ|iF c AJO 6K4P 9 ^5fcwgRϴHmF<&dá1@Ŀ7^Bl#ԡ(5 Fc=Ƈ-Qk ;ӤsPh "ӂxXiBM 0'G1uLa"ntsC$ ,ʆ %e^fw*Bou`ܧ B ,j *˱{fiKWUKVۺxpd/5+pc8ߔr&q_XAꡋwV!jIETP:UNVU[Ӷ5yɱ}u^Q&b_UI IDATVaNҬ "%Abg*L'Q Dlre5k3|(!D B W}~hDQ3jM ~ [WHNԀ ڍ?2B!k˫=|.vn !-B}}I4}7qISG[Uz@! ffWCo0$͠A&2^xvU=݃+Sqz>Bos-p& k2 [F81F+TF @Z)34䝜ao@k,hHI׮9\xmedea%N-4 3fffQE>bC1Ac]mc-ݍg?c?Ƴ}?^>_l,>aF YK@B@(sFjC ẻeD` F?VRӂPJJhŦ=N12'|P5-Ǯ1btՖ f+ʊT x&&Ս& n&}s%|^ :XV=kfו1M})j5):bRd [WBtAԃyU_9};;^|CxSF{YSE/g9Ea8{,/MWR>{kk` 6pf)<_q$J^~Ja% $VZx >O,Kvwwi/׬@AwK?`<Ȳ1so- Y~e.It|yQ0$e) Mh6bѤAƥf €P U -KQI 4W/$!_lbJhK#DJXdfa>~f-?',NIJLrߙcQ -$hw^ouΥ30TR*&뒽xvm Ge~~:@dLH'2M4TB?&Zk%U $$X!{(I^F)QbKZŠ !`xYk Sgy`AxqVW99>vy'8y$/Ml8G^<eAQhΐJCk{SωC2nM'Tt67*J*33u]K^{uVWWm;ֽN~wvPJՌw]SO=ŕ+W>@$ORfQԭ(j_fdj ˜]wrCHlB茑2*7JqGICƐ DXy^hhe(ь-_8O,:KsX;J?\FĂA~m@6Т ni$~,4"Bw(}0.QLwH8GjADeNKeF6 3ffCV%$ 3)QlG QnVlot([1ah' = ȥF8 7Jw\ul uum>Lf§*lDYjw?M`7 ScWOU&VXQJ> SɗTsFY|kh4kDe6v vx+hn67q[/Β}\DxѲW/WCY\\$MG"8K39Igw^yg濇.p0G:+zZrCn8pb)F)sq\A4숹 jKl2I(cЂH[9z7n3w'mLڦd_Wq2O3Q. PC̀Ri8$^Y>;a ʇ,J )RY`c.Ѣ11(bԌ̈XEKT$A,mCf7(B 4t+K\ocxJXª*w7+'#=~[ﲮ0e]?8`kej*Em |ռu+)^ QD OK,1D}%-U&rwEu"~'o:rPkPࡻҙ԰Zc'"#\]字_’Gݡوۣn:{^:0T\SlY'Q*jQ"ih$ 98?1l;x8^N K=$,nVɔ~Z?Q0uqƼsLI]`yyWy%Fđ3h-$0>A*Ԛ;+Ͻ//*Ԑ$Qzw5e8Nի Cq%uDb|:&ʺTp8d4Eb>)˒M<ǔ%[s_ ?;>:D'~};0 __enn,n:z dF#6re655 qbMljd@TZ̲ ^B7YdAhB)hcMaJl mƛ7Ҋۗ8~ h*>~1,f|oeEeN^a%>Ar|SDqsƽGwp LkiLX@!!NF.##cX&+V`/b:HD~Q^2%%)re,zKsFk0Oawi^$mH,JId$$b=p"UkgRTX#!Q=QUY ?એXUr҃;IH ?}E] T\Vք+jXX}ӞW0uB]cMJK0:΁RuZ\]ã0VV W'S8Ƴ><d眾4aQdgոw%gs`KTHbG X$3g/^ͷϱ\= @hoRmoK2nޝ:U{ʠN0l]ba~/_r6a@6J.ŭ'}s}!IreGnsUF)P7UǏʕk}tHy3h5 *ئr4ޑ^b5֞L~7?ɟp ll\c0ޏ!/s_e{1N:Žˍ 8 TP w^,,,h4z*֞S>B.No^O>8ws(=#e7X(°I*3"6FF"Ős(5 DJVa@7֋_fu~Y@<-A?׿Ƿ~LVh (2#JҜ#Q4aMAvG|Wm.;!/JL2䆠XOZRQSL:$BYQMD5>rྒྷF 3@;&5qa9Q`A]:WwQ$T ]fm#lBIMbsΓ)@RƮ:t7bxLվ!*S}l 蒈B9mx04nϕ%+[ɣپ xSjj/Aƫ`D$o! uk7z&זu/vv]Ix{.˿>${,;xf[m{]j7-5*ZO=p!6tfО_#L}}+ M9nJu8,UBgj_uѕCj. $32. "yF(D\hd{O&w#G Ào_k LQutϽww gn߆(ӭ!)lКcWg0sxLC3 DX,V%n49R~h6[8uؼ峟7h(Kg:IgD66P$s+dBd]r:sj=d6_71Fp?'^1avexiACМ!B:4(1"[0Oa%~$Fx%k1؆ׇiFSw@٘! ( ]VULs^UU(+ kQfh:BXv4+WPwNW-A R PA qB!URL)O?u,f3KXپZcެ1ju5f<뭉 CpMW>GrZw)*YNւ4(d9fZW8`oaO8t2֠uA)$ ѥ@kpWZrsK47h5Zs,/18x)cJ2~*$hei0ғdP#7ZKtI WƸg1ZRP.)Yz^KQj /\I)ulnle%o:__<>~A5}τwmq eZK"1c|dҏZ{>uЫ޳#S[[}Q͓Kơ8Zx{hu>zwLjU^G8s}|UoZ(Z6%U%F!v$6K+MbZR6n:Ph(B^a52j[Wk'ݹι pa"Ï=[ނ+eߧH1*Iу+7?=HkVK|}xv;o.a_B.*HغÁc|ڗ^k@9>`GGhd@ZqRc$fv~"rJl8F h{>V l7XQpVEscyehszKW)z{Opc|iDK"1RI )02.Nۭ m|s_]wR%e1mN88XIni:F0to~|?|S?ӧi._L\zgrE?;ސŵ:T cTL=!yEY:)'`ЫZG^4@G乫(ݰʿv8tk "ʲt:Bx)XY#?$z0$ϋZNUПQ=(J~>ȇ>A ]ȥK}7}u=+wHoA 8~VqwHYBo첿Aʐ(<+)qΕx;\ʫWh1IF9K0KX[\kg^@(H3ZsgrG>Hؤ,%hnJfiuxh33n7 ,@Ń,2 /wwxAk+G hiGJ0;7G?QcA<Ӭ,SOMZ#9!>ѧкDkϿ,/~|b!:cc..헿 /|N6quVVV鬪P"CHꛓ( ]t*SJ1?ⓟ)Aeuu"/oY},ZfRr0A~I n IDAT k[7r"#z>-G7K1̹zi”,.>/b5}yσ[-vvvy]*DS@bM,Gfٹmp=YP姿;0m 1:vH T k{׽k4=:}7c+mNfue;dՠd]7 ]d.KmO Q Id+ˈKW-x5H)1\gTϱ[݄p+HGb?!ꂊeY. U ju׻bpx'F +sO*=t/Ð޺ȯ~s?s<4M8… [O0 y缐IF TΥK%<` "%ty*ͦ+jlH( a@"I0*]1ڥ\p8ȇϟ_$cшQ"c,/r1ffn9s~_b<SzK\ H^ϕ+W_PXh,RXE,,@Pbs a eV`V{[\AF^8I{9*1"F^FVdoEZHfc.߹?"| JaҰwcwM.r(x^֏0ˌF#af,s >>(}|g~U^yRl!盅ghltYPEQR%eQpvRȪq6( $IbဢSs+J{ҙw}TcyKUGa $ke'nBP%߮j6K`|6P 9}|?Ovzj'.m ( _Uu`jI:UBERq0\% ȋΜah#6/]eդniK95?- "6=fmI5Q)99Ր.(ʂѫ B7A~MXvv )ij5J6M g5*IӔ#i~o`eΤEU}jU/cW}$ ӧOc inr>WXZZ(ryGYZZ ڈ,P.RxNAUݖm:ё}d!hJIdrȠS]0 @;h3)tv+,8 0a4:!SG1@) -Xo`l-tf(JŘk GW :UWbmun(S);.ED,q'h#wZZgxs֞GG׿ƺh2H␼3rYV*pfR ~*UVB(ڌ ssmtQ@ag<d3RO*|EeV )+rB&&Q讵JLe5R#~K`^o@*ϾBp4z>q@Qhd)ao HuoYNl1˲ࡇ'?\63{\Ps흊]%~dmmWe mEN!i$Ŵ 59Q: "9w{$i$ ˗ɲ1eYwrj^I =Fa  \;@́[TB BIeCst쿍˛px;o?׿"if= `Ԏpvn+ ,u7 A[(s S/0)%EɝG{2)y0M {ζ8~d`,s#?$3Kuy?L5K wQ]zΞ b֠Kw,=dh>TҠ(J1N9) - r"RzKK՚(*qLI[z?t_"9OO u+s0}-&g-gYi,ePO*PIYJףg&N\ĔT E#ts#DXS?,> 5[_|V THosbi68v8jxϡh(lvhgRqcQJ(y>Wȓcq~V;% ff EN.^s^{ɐ(BeNz0EԞGec!w+㔰! ]ȗQJݠDayqVk ʯ”T c,L2L9Y{t:0@>8NgwgFh&TFBǘ8ic 'OⅫH255feyxL;b4*N<'vJ >~! Oj5ȉTnWrP ׾ʃ>{?<'hΗ'੧>M$OXw݈,s" ;ww`ii;+}PҹsuVqP(Jtׯ Ibb\F P^w_9mTng lll13;OhArSt}{A e\6ۤ\JxU87# S2t"оRV+@(){OTŸ7|&K.qqms'􃄦4׆<$3wN\ nGd =)e;@vrJP`K!ȅ :%5u_8}TKsw(EЭǻCfS65(?8U.+kӒFs81\ì,r(ں[[ :XCŢ6BmZxmv1NoIv*ܾ*_e*zԨaN~FHw]b4$#$l.B!FlgOf֏C!<[,/N.YB82=M{9v/,K8s{%X$`U罊7:r(.\1|Agk4!;6 K8#u3.T4s>v;s_ӿɱcǨ)ܱ_|g[ ^eq"/hZ8q i6>pmUrJqX]qhcF;U9N޵H:p?{W4#E, BZ6Ɖi(E8l yFeDBdY2^cH1XA4i-.Ӕ"yṗ]^/^}$au0?trOTX1 p2r ƂDRjf8wZw BvX|&֠AySy<$l9.|WSP&* Wq?PzK>Ut0NVWV}R;2Wdww,/IIC.vDg?~j51I΋JZ}}6&?_ʹ#3Tu뛵! VJSYk6YFK5qL0I#$|4BɘǏ2!y )MI5v=w{G!+%QJ$$*P-ʼ #FR{IEAƄQVI:~| DAE^P#hyF vvv4[MfFD}Z&hT8Ľ( .cf R'I J)u:ƙhS>8#-rAg)(0$PN]O_{?}vq6^fffɱK~aI [Wu e邙6=?E>bl[I 4.X][%3]`~~4Md8KUjo]nx̙3ThUuxk8+S wg-|O{H@,-VVV8~ 8I6..]$ǜ={voﰽ}õ1K`@Q:a‚D?<5oyE:h MB"iE!J}Qg9:%9#K\9̯84z] k cKaH;S ˔#-眛_~3:PmYVJlYG%T0K<ȮUg$Y %$CiD @t7:7TMЬ)p>{o}_ܗ@}tZm_&;zFM!4aav[;N8xZ,--ac6/! sNQ(2Vؼ ϕ f-Vfؗv:g-8!J1uiUJ[ʔoh nxa4Z c)"7bjInqx JDW.ymM^H ,I"q$J^Xh? ka] ᏸyM1$ٽA!$BJ&!ksѠ7=5d8{EXNW3(X]ZB)I'ȧ>|z:ceEf8q3/<Rt㠵!*iMi]P%E4m]0)sNto`xD,/-!SR y i8m=PNuF;Cʪ$y=NQZ1Lt,,,а;.;!uQ$C4s \٦h܀dAo [[IptB%[Ui8d`K˫_};1oϑ"js]wO(!>NHRd1H!c2!EAUch4 6Ņ fcs3??h4d +W.jPUu]F)^BZgygii*P*e4su- B!y.^D&\z%V *"EJU(1* $o/sFrW\{$|BoZhY B!CS9ԥ-}:ǛF{nO)[ZЦ6A N1֖P9`6ASlon"TGut, Ewn j0EMOG v}($5[,/Pymnqޏ\Q9:9y]wp!BJZ*'=>C̵[(J&I8cZLhwR8 JK-Lpdv2-DIYdCȒY!3816ҧR+NVj*aa6,xfUQ*NPMlO W.3s5~)>#K8EUÇɨ538!C/@ 胟U&G릕ݤcil.iGan;ߣL|J+c7`na|:JY$ss&^p ȧt:]vt;m,Z(N-imLRg*)i b$JIV U]UkCeB i%4c4=d}s c ssN[ZdNd15^k:7z+7nyY\\`0ף+sI>W.]bssNy!pIH2z$NZ+dgg4*DY"N jS֙odeeVg_p)wt\lRὋ܁ =֋HIK3V X,օbk Y2 7A^%>\ǟ'Ǟۙ4>z ꄛI H;:ak&Зk--GHB2,I@k:IFe4/W9W 3-TpFcTM k+kVj+ڄRK-MJQHϵhBNjjE9If~yWx$hBk\/e"-T膩1aEUGDԔeɴʱuEh c-K"F@ѤbOn0a<"2wZ! F1ш((*W[le6'J2߰, jo+-m(D+4a7ֹ+ p%Cu1ې 1%؍7/*?d- "_[{̺V7xxP&tpα]CɄ9=, OUEfc{V Nr3n=Ƙo= V›z~7 w2gš5^~G]lo0 ǘ[n!I5$*2%Xp"B`rtyΩHcm3L١۟Ce)_?y3~֦=,MJ*:vǎkU]8m&eQ+WZ1Kcqg??āEj%YuF;#$ͧy]oĘn /ܳo>?[n=ŧ>)[6Nzj‡B9R _P)b2'uߣ*tCU._OLPZ1ڙb( 670֠T(ϹsY__c<ְ=w:2Ԧ(U#wnvGv﫦G;eS@QdYp/VQJLKߥI"MSzR$7tmo #_JU NNa[eD<}~ةIKX!Mt%^2B0O(x3$єƢ.&PLl[4I/ N3Ʉw>y<ӥU.rb_{ ۚ(ވdq KRCHcF@eeǤ^^٧^?^cde  m<_ts P4!]HfTmPa ]7%~y{K<ϙN'CIH)::/$-vܥo0ޢJO`<R*СWI=ƹ`= J Ȑ2pT2 _{[,#J7drcH(&u j -$%"+S2l͛ZEd1rR:%B c:Iq9 HYdƓ4!6A:4I3`IVhjclu(ʒ(ٹΤogu M'nk_25:Wt [;_U(Hiw8HUU\z,HYUsdx&%4&IFiGyHH1l]/;Og0dYJo~^x%q* Ѻ®Htvn:6Vgx}9<~У?omqpuN@)X-YB$NԄyϝڵ,/p-aИv;N8?q'nHONa"Zm4TC SJqEsyVs0A?{]$s2hQ:a8!$Ya"/;yT@{衇P* |Iip8>p8˜#7[On=cĿ="O>8R >p5{HGfqqk {-&(%IFediy$ m7;nBfm`G 3KK7/Wڋd[1O_*@67 'O!T(BPQk%^(/()J&T``JeXP1HITa@0%@xq vQNq$ar~돞?{nnա׮M?1v΢l;RFPa9M(f1-Cwޓ)Z *Ge|CXJHN$T›9me|c^^̌Hk23 ^bi3ɧm4 {F1/g8MeV@ 鞷}gn.J`nɴ`ya[NB]HjhE,[cl dQs54a4ڡ보DQO9s ;!y3.+dk .V$'Nۚ^A AUN˫`k$M:L@\[gkkǏ37??O>P/. ㍵ iieO>_gbJ+HuLnqi'7=|O= EQJp9}Q~~'OZ3xsΟ?g?{/7=cvA$MS,ckko-rdϲZ$ŧ>I~$? ސ(-D/ EpZđxok`cfT~3#ğyt0Sr>@RMFi,nVA%,SzK "Bkɾյv4XǗMn[HM\]ZF8$ScJtA`B0E{K˚g?ǒy]?{n'~N?C&u6HLQzI{' e .L9҇xnn.n@*@07)DIH8 OG1Jx_"QA u2Т.tD"3T !5ViT *XG+*k)S 3%MzZ/v5K2M{V@-t` ϩMEUH8PYTZcxOphQJty"Bi" V4դiBLH,)T&&a[UR!i Bp pBvvv$KpN̳ϲ٫8|d}}$˸UFKK8iՇbq(& B0QIFF9M #ڰIJ+ p8dnn#uTYK;mt3Ou(2iE^@ꊖnEARvʲr,c^^pĠףeTeHp2ag2bПc7SOqExye~4ɸp{5BPU5`ʖ}?U4Iu!(s8u}|;Zk<-,<Ϲ;OƜ},J'LS&)Y>LݙDvcu@4ͨx"u^/?n>2{?U L&cE)Jqί%i2Lx׻[TUAJQt?30 @&c<طWZ^%(MF9AK K_üyUu3&o\\DdEO:+Gga.D0:aqixB5i7C YI]x7;p]~-/ojò,9t-Zt %-VnwdY/|3KW1: pJ=p6nq1ߦt#U᪪f4 "r@C Nbù'u hvb M)̘.UʐB#fu-;TCrą,1f(L1JfX"@*,x_ZacҦWA'^9u*x'W[tp@]2QˊxR`⥠NLM Wvi? ndg$BaLhv!Nq3!BUJxxN(Ssx|28r&: &#*S=̡Co桷*i)E4wz=}ibJCI5xx2f4iwXY[e8UNHJy\[۬_'4x m!%PE7{B,'Id2{~闢Ba;њ~~{" +pO*x-ٷzZ0BbMdDThP^Bh-ӽ-)8D$^&PcEReѬˑVut= ra6v,1`Jn%?OQtgt>wxϑuzrYjk#uYO%#AMD*ރi**<^%Ez1&e _uT%JȐPN!c% k}YRHO)t?;iIM/T\iEXfoN`ƒ 39W#MXv DasL4.K"DM69u^m׽C\8wck.]}kX]]c83ͧ\tzGfnKϠW<qe & )dmOc ;_U=JKHRɵ(ob}c7u>[WZl]5nD,8ʁ5<Ǻ bʚv 틺N iQ2j%AB{V]<~GЯHӔ2llnRV%ssuɥ˗1!bs8f8t!^x>wً/N6LG6ohh&\pO?bmmcp?f8N#=Ni*~%ZkRf1I8ZGlmmNYKjM@)FT/_2T8yN <|+_ z3 6!j{?>u]LnBB8N=Y__[nS5B&#1ޓZ`!.z5#>H7dd5G矩?쟂1sT_ DŽea@yOs-q-_}Ȱyi:ƎFq~55޴}]:|t@%}\ RdQ6-2J!UX Y aX`XAIGEnM@LXcƟ| be>cg< HAG[h =5A׊+vH}X*UIU2A+ B!tX3 Of@Ŷ۴IDŨu&J1":wXmF'Tu*iѫG$"!Րml^ce'` k8<4$'"Pe8##&*.3"7{&\ t>L=y9bGRؿBcaWz ^E$;[[;CZZf4D$Rx]n$\D"F!>ıC)&CI":iMt!IӄVs^8fv.Yyų|տg1HC5utA N4YP(AKv׵L6ltRZk,/c#$0%4s ԕ?ߞKYBw|n48qӼ`F:LIaVϾO T*)~ ox>U)˚,^ [9oJ=|iH岳J~F|cc~>́l͐ va,p:fWryPJ톙ok-:lL3E3=z~;vlki /<LJ>!&'OwōoHJHݦ4-\pX<{fۼߍ2Ȕ*dOp ͦ 0.a~fvBRZTy,MxP$vd} IgmtFepi/٠YXЦDRlq^Yb.dX zEZ9je8N}M4:QUt oɔP!Lf}aC^Hw&2= Gm}j" jCNSh4ȶ(˒<ٞ%Wg~(p4ٗ_n:ܖm8qg9{N?񻒘ȼ:6*EyG;ṵݸ9}0 ymnF hτ;` '|{^zR^Fb-}m4't .^:Ǹզt-#ɓIS+*zO/B"ulDGP5崤Xh%+!:Tnw>&bZ`)<{usn*%Md "E хG@o@idf{E2F68[-~0~x߻P&" &7Q~Ϝ?7~R9u:2bE5jrޓCvvv$TU4B0sힻ J-0?qiLm(i8焤=kfgXJkd 5콈zOJwϯYYeux!YƱGOڌeN"k%TG8(4n@k[u2ܛO={^31ճ6(&$fly=3 >$,6b^b{ChǗ^G>zL4IyN<V4QZ\Xu]GWx'>A^ּ'OGtCS9_z}kIћvx((W|v Lqjl6*1#5Ff\\wT0ˬ`$H`a86PYI h!DTHB O$ ႟/ZT)T9ʱZ %X- xsqӴaoI'B(4%kB>04 `s~V0?ݫ"(F43aSHeIRO][QpilUlrU2lz /Vx\XP C2kJWZ(Z"ġt8#f˒,Ш`Dl=QbDj lkld[B]:UsvE$x3bUt#0-+sc77(rVIEA%tݠ5>7hC*ʪ;Ϲͧ$ џ[$ }jo! 7:>KUE>P97xd̑7ν~2 *&ѐgF(I A)C16ƻfBHT!RqLVHtf1HZyt*gXlml KRvCN0J铵0$X/a߱PmW8"kw}wpa{c.&5EY'!+n|Xnt‘+P%uX G# 0BP%:F)R)+ggk1dZ-sf)*5YUd*CG4[ ғ(ajK*0K=*8~D!9e !q;RM(!auFN" p&x*F8cIDdPBLN!I1VITAOILUx~auNB%Rۚh Ypʑ@BDglڕ.@@5k9$븱9 0"4 <7=<(i$?7ρÇ9u]ђ(˒pI·qV`?i8?):>B£~7{o;v4oOWO@|5KF,1õ3 >./pAKD(:BdD3i;8>sn;1lnnR%J)>O} 5.]F{x?3۬ll2x>67~!Ykuz@T/[qIo/so>GU BY3"b|6Ȩ!. 7t;s,c!9ZiZ-%ψlҁF{O]UԮ@T^R ADUmjHB" '%#_TO!*QA8Fje7X/Z4It42T(|| u !6G'i!oèćcohF3U.j4$u C)paCTJ͈κ.H5xx]iT`{CC_^.+<{}ڇ!"(ȶJwT&u'ke112Xc'9[[LS^d:͹շ㩸p8N; !ѨDr5,W29LL˞'ItC{~~ X6VZ)p'-XGUWd8Ru$#zof &9>H >)$lYV㸩y=? (RCW)"h(ւ\ýÍW_?| cSh)`}}??֜>}{yǏg:yo#qAB0ޝPhaHuם{m$wY$ɴX$Q,+,YA'HDJA^$yssnH'v2m+*-YV^).)Il]r{^O˥%Kxs~w~#J`Ю|!# v5m={qr`H`;,I8Ș$`̃0B!6mڄ,5FQ%ծdqnV%D 4I ,^r* C )jk!d3WXHY_yB@@,:eD f0D%\lfN,DDδd'R0L/4;4T@-TYFAD,̢IX㹮: ȈMeYDt$Q')v2D4ͰBQ-ٵDQb51pv$,BɩdC&(dIV뺁ޞ%Y3ډ=ղl/u KCEҴ_If٦2|>t{Ǥ%L֎w~FXBP|0E50 vx[:%vl4*333MC"ytѶEP !ȄM]-xy3W:NiŶ*Zw~_%z{{hiiarbY9%Ks8sn09uMyaGQ=ʿ˿P(ةe۶]* ͢89UE\XeZ[t?d*, C8*j>EQ*(ck2 f8sO-dNy S3TZEܵj[B׍kBw.Ljt}vv*P(L$L*C!K;EI'*4ŤRɮ!Th$p,dv`&i% 1DтM T(4-L;S+U XAmܶ}'|ޮˣk-.ڡ(] *0 i(I4$25;IҔ+J/G+2FH8^.X* i;XΤWt0M Dɲ%;n -; Hj,,,KB7 VKlp*rČƕ9>  XJS*ڞP? SpE[g8ZA˵J(j)+l7d?Z-9% vųozq(Jjf膀($\0|eV~ @>g69eAbUb1b(ssYq2,P&Znጋ͠z#P`0zzض|&GS~NT.T4Z @<' VeFD O:T*!sss *Fgg'zɵ\.311A,# z\.x?),A۱iy (DIAuZZ1F3?7ON(*O! bM (IYVmL|YX,{ ZZD?l?KWEFpìHlMX}1L  {vQ2 rː'2bqt­[naweLh$_[gOA30L4ViϮ/XuJ*tvvp}kEX,5L`[]05/e0.F˜cIbxh#o<`D5ege9b`yB5⸬Ett(W E}}T6K>edGRaxtM7 ɩIDQs]7-mmdSiQUDC#zQԩX۹@^-\l^]'0R)^ۑK#/ vAQ+*bWTU~(dY zz6 Ir\:k;<" D#hZG0"uuQ/;O>4}}} ;eaj"n'~nw'lٌeA:`k_-xekL.4ͫh}Lc1g kslŽ+heǫV)5a'(V4B>[E|H_ءH*/[mYR(4 $;װϐJe/ %`9jRT%25n{TUUQU?@X$ʚ5M'QdJBL6Bt@fE) ST@8n &ǣU\eM P-]W֍㠧rQ0X~M(J$\*YH.09;A,c"mvTZVءDdvx9ԀIP~vld8N?eX T8*V 3gNq[YBT2 a;@bEUgn~;n#c&ѺˤP;j['+ (nH |(Y4.·'urEt]gCΎNZ6$!B=,7M[I fJ*@q>s9J:X.ױ[H|}>OG.Bܔ k4QdXXTU[].Zl S,.;+vP` IDAT1]B0z!TUE4DT$D´4oy|0 di1@uv:˲|*fwo!A&baaM7<տiͱ`!b? Lh0>U!P*!Pټ~oHʥ pcaxGQ"Tm0LJ劭REk&rD¾=2ZA?k::P7H=?l1QM62vEIV[}Y* 14IEP$q~38U0W;4EAUed ,JdHja-$E&  Ecb1B$d'8a;nS NKyJ$ЕB"cXK~_M%k/n¨>Xi`ciK/'y#x[}c+0̋FX;BY\5z61==CSc#r5DBA6[ZMGTd djj` A `.cf!Kn(|gD W(fQJ \>OsS3"# "sA(3$Iˢ.# +s؇4iǧX䨿#6!)m>II&Sy ]g.eLMMek.dGX>ih;og~~y~?χ^x) F FT!^G<(ljbQCRIDQbdo,f,B>hukRAE&ۍDS UvN`/4R(Q8i۴LS]A KDɮ.'>RáMLt=47Q.~ j[@4lS#133Apy, Py/.]slr#44r P*Ub~~P(H8X(tQP @gGjX׻l|sڽH$B IQ%-l:&&΅);nŐa9At]' 4b( hI9YEl Wv 8">EC hg/%YFQT,LTg1|i˴%KpdX&R;v}Ύʥ"9 -pd"0?S9}n޷m۶oNShc- Ϟm1%&1ls ,zݻGRa[ '*'Y,>ǾIRܽm+:lXC@,VJB똺N bǮ}l٪PTƎ^{h8<S.,o즐1:>_T1(̱@^Q YYhڪT4h#e Wk,T:ÑcǑ%/, "1&1Ad'lB:iqe"} {EӼc _]ۍi[^rXV(ILOr❷ohCNffH44&DGc'n'X%M;jY&S6 Ό289E(BhYtsYtT`ئn 2$*rbHTsyr 4 [aL#s)ҩ4= 456q0 sضNdmZ>}lk%8d*MReMdKVcEpt,$`9{l:z g=-!ִLZ[شygrvtDR,9q`NO.:5 K!ʒ*fYPȱے(ALð(R?{M8VYo|-[6Q*P;[^VEdUDo$ݨ`Zfݾl&C(sg2Ԭ;p3D)d9 ٳVXnsa,.K WٲhZUx0J秣@@JI PI2B{X [HE+2(ю磱 l"3::BCX]5MK%L]gPDI&T4T&k ,0`%$IƴE50dD,ʍUA4T@5:::%1,kqH]O6/ Gt'YƲSN:*&5 ^fluݜS\Lx%uk,I}{'Oo7FDz,f'(KLN+oPNj_:[mbY&]lذP(a9T@x<&HtӅ=VnrEQsSpBJm&qqV*A{D>C/S+v霩aa$ IosIWs,zYlSbU{tΙ(]# bz& D!0`\F,ykS߹(RM,ɤ0LP H"w]H*yf'hNPBwl,nI˚"dR \هO,ٴK*y]ǧ&T4 ]( IrKvi\5*Z[ՏSRl(lffCtJ%[*Ü*H蕲]}QC]pC ضB,V͍NVݨ̆P(^%E;9=Cɤ uRJ$l}n޽+3w+Gp"\.ʒuVZ&xEG9)$-6c:뻻v.sʋpȒ#IJs$Dt"ˉ7$?_,;rsQ*wk8Es#s/K*0e"'pAT78~% ҞH :U,cZvIN.۵> N!,(Tma~gȲ3;0&SgY*s@{_%h-~`ƥ'na>UϾ+1J rJ~9q jǁqn6_:^Ip5xbqג뇵Zޠzm.j_TOy\p4y O:t3 \Wq;7xj7Kh4YD3>En'GeyJl5 vs4Őg>+U}r鰵_6_#D?j?[Ug/,~ߥr2tI>9wչR+>/o/,>ېn/cyֲ?Ng y5+=k6?V]_ҩ^'~uvs۱M(VZ>,p ͈+cr|%I׋i/"7onzVj\.{e[D"ԻVBH$*s ؾ};`pzWj  hT:,}RލM[&JQ#$-)Y՚cYk!)t]d"+˹QL LJ]}_#5P ˴k$O͔J%4$qinA'd||_|!N>ͫ###K;v%[nRz)OJT?9T{q]]xAN>$Ik$I8 ,sa˲puF _gXչZg,ֳqA㭷bnnRĶmrۋ|󟧽X, w~w;inn^T*ttt0==͹s != yGB]]]^}bYFT*aY|+_a޽?Mxwۯ(Հ(LNN[oeZ3fu]-o6bJU@$9x a\1-˺}5\Mf-~9e, >jMK ò,֯_0䮻\.c&?>NTcǎ166vޫOz/)/y1MnvE &\$o+p{9OQJ׸SvfڱRgۖ+T3+Ѣ(rLӤ]v!UcOAPUuicġC& y>uN"x%ihh@Ο?O4e``'NDPUAΟ?$wom\LrBC4WTLE:ģ>ʶm8z( dY=JP H0228'O }}}EZ[[ghhJ#IDTcǎy4sss8qIbzy&&& p$mmmLLL011 BD"dY7䗿%<5mqjJEt0H.H灲,200@kk+=jxx3g *'OOL&MCCGellX,F8Mؿ?===LOOs:,x|apqO<GEE^z%Ν;;COOO>$R Q)J|ߤǏs֭[s=G&'X,H$x'$SNĭw%}}}KOÆt]6|Aڨ4M]w1l`6  Fukb[lg͚5b1֮]1MK5t]gӦM( i|;su[IHi!NSWWCu:;;F$NEǏ{Q9uǎرc?8w {c=F?rs:|ikkq8@X?k׮ɓ|H3d|A^|E&&&ذaΝcaaǏcB;3׳}vR---Y;vp!ضm:TA쒾ɲq'N pwr1$h4ǏGu/4MvͺuX~={/]]]tvv@cc#;wdȲ=wulRtckYuuutww{@*=8M㖹t &igTkqn~;vVr"W}eYK~7ӳ_,D"qJ{n۶!2CCCtuuy5eY܃矧\.sYRi266D{}˭wN*0 vMWW[ő#G8rHD6]ٟZZZf\A`bbg?f׮]swrIr455|;v "cccp1A`vvnC `Ϟ=tttm6nOs633EfffczzQy!HP(Eټy3===۷vH={az{{&͒f9,6Qͱl \}V ܹN%i{{;>,ŚX IDAToMoo/[n\.C֝哢i7o&oik׮e޽477S.u[iYn7n`ӦM|{9s ۷og޽{O94M7]׽XRDcc#/ݻw_'檈{{{Yy@IxW@$:::;s?KyGd[믿ѣGٱcsss4~zݫ=0EOd(˼ ~k~xL$HH$+_yWW]uUU4 UUٺu+_җ(J|>y=\&ՐR~>N[[5Aĉ9(:n,ށ,I.\  T]u4D"2a055Ewww >}gy 6?X\155EGGm`Y`}?d͚5 >}][Ą׿:ug_ٿ?֭cddݻws 7ÇihhX\~$qTUɓXnu͜yZAfK Lg9s/| Ez)Jtuu[oq2 {@%Fy饗<rEV0 {9֬YC6eݺuٟ`|AdY{5wfY ]XXXA$0L&qmiGb:DQZMwJy5r9~wXE.쪰adX,qn،w*"؃Wpʷm{1 /9HEYEE9u[lmE.EQ." ,o~G}EQxټy3@ڵ<333CWWx_[n{}kB!J1ᚙtUU]Qj o),{{X&L&㞤Wͼ(KTz{Z(riؽ{Z]W%Nqux9DsG5]בet:M0\T +d2KNv3z6EQرD"A$Yrʲή%$Iرcβo߾uf,˗=ǫ]j_ U.pxwu^\]jn2 -y^!h&hg/sF$OTՒ LӤP(D(f\.{E.\f<477S(8{,4g2==<|K.~&''y{)ˌyioogddl6kƽ54Yv-x;D\Q(o^THj]]%]޾磹UU/TeMkkBЧH7׆[-hiV:;ab&`pp9mT J X6/εa6 /Q׭VCI7~7-|>GK/ĩS0 I`qu9k[Ԯ4:>Yi>dY<8]/ qJGGpCe5'J5W={nG,|>5s`(TXq/Wk׮%vkc| i,rӻ\zRAQHyg?㮻СC_o&ez{{9|Ftvv.!pM,&3==ͭJoo<ى$Iל&nwY hRGz$+zd>OcW^õմުMMM^8X*b͚5;wIlB"`nn>hhhɓyLLLD&ыIu?B!yϛs^2QIR^үZ6= kհMI%JT:1q7{K{Vʖeb۶m^d~Fo~͍҉ժCaM:.R\ʋ}y^j 5^u ˲Yl 5Pkjj,\6.kj r{u.K]K] ,oJ9`1OϽ7KB:c_K]wڨe%_5.g1sqe%:j|9Ծc=ǫ&gY27DQ$ˑL&uX nZ…DQ0 FFFqJӌx###kcccLMM0>>,f]ljEd2I.0 4sssvȈ7d%E]Oy*.\;L&$.\p˲,RbQ\pȷ|O(pírfffĞ?ޫ|yFGGcaaMP( 20Md2y>WcwNNNz=]4˲d2yDQP(po&''D$Jϟ=ld2J%릦s }97,V"pccctvvR.fȲL> =nv$w>CƮcxxp8̙3gBLMMdBؖe4M#077煇mbڵWjԠuM?==MR\. H&J:8O0GQNǁ J%>Lcc#ap)E`0 ps-( b49y$~A8{,L& py|>CCC~&&&hmm4M[91;vX,ٳg"x*D<'B@X)CKMoGG&p9 hF>ghhx<ٳgihhiW>wbbϓH$'044kCCf+[N>eYq y)RUUKj W466r 0^t:i9wD@ @\R`YW455y{{rrn>x7p^CUU>$I={H$B2ٳXʼn'ظqM]i9ܴtttilldddfEOR"6mF&''|~֯_Iݴd2.~> gΜS,9z(>'OaÆnRH$B.# АWdttP(D8fݺu @P`vvv* R(tww300@$P(P.QFjpY=1HP`llQRG'''YXX L266F$eDQ$3;;ڵkiii!z ax56n< 022! 199ɭJKK uuuLLL`&011AKKU!.av5@o( G% 2< ~jȲL `aa5kڊgvvOxqH233eY222BOOL&ټy3:4ud2q G˾zzzhnnfƍKrwA6nH XG_רg*tttx 4W8cUU)Jqm8FUUOJ_.\M(͑Yf p6m"xFٸqM~s{ss39rēF]ƥZC}v~m6lpQñ\.H$JO`4VJ$ׯkײe;===K͆RūX,Fדww(HWMUUN8AooEjGZkii:6nܸwcc#7oL(73ŵ]s娫#HxfǨSNى(LLL܌aȲ̑#Gغu@6VI:t]lyizE>:Іa0lW̙3HD>b( 133C>P(x,DAԩSuzzS^-UkՑd0 cI~jM$pIx1Ml6K,c``;W JU% |S3~W4M|>Mk/[ bP(D.p8D", = (OF$X,Ninn^R[ySqw~RD X,zX] ˲pS ɹ9ObrsUBfoyBG ]?\.GKKg{{oNV*U~rLX,(J(JEQ}3,rL  N{EQRJ& `zzD"eYA">MȪY`wQݞ|޽{^8{OFDX\\\9Nc7abB|an}278:6M]l|>[˛2q%so[sO_Wzi\9:go=ex-r_hPwoo=|c|G>z/~A/VʸxząbJ}u2G^h^7 ./[|gLRc|.67/6_W\_кؘ^ &roVScRǚ1SA3W/vr(~k b/_Uۥ፥]k) _؉1neQւЌf|_\u4hРAoРA A4A 4STJ3W/vbьFI\\"hĝ8CD6%nEQȡ(o$yg_y6dv"2> ՇGKKmW{90 ]O` \.<}{+rYc$ > gv;,/]9>o:9g?Y/Vr<>ԧЇ>A%kK_Ҷ*mpe1o00 xwU vG1kCj?#ٳgjU'>o8L}B)55*A :Dɋ6QVQe_Xٺ\X Xkw&U cv&?ux:!iDA-("&3 a(M hc8U)!2(P30OU(+Q 2DAx|U @-CՎBD+Q'A)cc![Q÷DJaxt (X,T&ڊ30b`PHa'[`Qq0#VYmw1*KN//%-zB<CP^ I7P{{н]w2|Y!HD,qx`Pncw:&:X-w=~?~Uo[;,{D y)2(, %n`C AP(p%!-a%=oM%)P"Pbv{2#Z#.,`FKJiez4hp~lBOӔ^7>^r 1ոt̾6Q˨LJJSAT px֎N(VQX`atI!UxW&O0ܗ"kE& ͵a5P(uBL,cTBK[5:TAHjo#N(c%HlcIELPKMq`$2!j%)dnHub1R-YUT F)&Z!(c R)ъ [ѝ:"ދQ[@own8@aiclO,ˬoqVpn0v,ib(C*t2GЉ1vT h_RZ0QPBGchbKŚeZ_TL˱WZ^ZYkVhc ,="0ge68LxZaYж-F(5!6.D (9"`@Jq2ٔأ5*贘6R^ip#,o= IFv%* g<;T`RJ޺C|N_pQ9 jJB!P f8`u4;7Ǟ BΈB1.`{iB(ɒn >?r;Y_z$xl(8x\S13冡M9eJ'1x%'9-NXxzC!ÜG8]XR 5}ž2!x 2''x9 <=n6) "_mcRld2N: WV/R!Ah̦$6zĠb,@) ZuDW_Hn!3-!y]E^࡜fjA.Zݘr/Jl;qdV)㌠XZenԌmݗvFSƍ1Q1%Tjc7$cAAcCcAAKI}YjUr`\HVGd W]TZeT7`kx "uEU!C; ǺNo7ti.tzڐ /rvr%W$ŏR6r:KJe0oC C i\a[ j 1l $hY6NSy\aMHg)/8F`i#dcK_]@`RNzφZAFNI<=]! Jf/G=yVhG￝QZr/O=}Qn&Ct÷n`g7,:O/37ѝ}[zU99Lc眯B»qT鐭}{A#jLQv*i+ia A U3 SqT9u;&AMM5r:Zlz?~![ۡXWYo1R|g U4TiVG(x5[ߧ5&%Z!(bO@ "}Nvb'xx q`W9ڟ\qbbDMTjU횐qxT.Qwة!\mGRӚU ̈́~ά2ˋU'e-FenG!Y'tQ|c Ldb:iB ae4 0(ϞXHđf\zONZ-r&Kh >ܾ|Vc`dx^Ivje}o"d=ZIbljuh!XA@1p GrOAs-"PkLT3TDՂ(PqK#j9u1ot۶4 c23\}(1Y٠&ZAm$w5(j͆2DaNQHs҄:h[7?XlbUc ZApcv׏{Lo늂{ҞhIǠDu}L7Y9cG+B3!jv3NΓQJ)U Ai9xCfkr.!ytt],=e`JևD t2OQqn:wkS5 pˁx >8%%e}y{T<.Y -rEXupfAgYhQC(W Jka;>A溝1%\VpWg`tgzϽH$)A?*M&4e4oOr~]yCvA~SbMkRCBS[_[ViTmT%բכ%sFEZ1?>`ui?gLe`7XKjQN>>CE c`e8p.+zA*3FasC xA\\WC1]1y Dzc4ƫo(N$b!Hx djU+?ӔK]s_S *3+B3)P!R_ Bab`[4g !`lT¸# * 'XGq{ U7%CU ]|M,CPݴ kyqWA < #1ZbaB+_PR>ȯQufT*E0T ޚY܁ByaYZ^%i}/)"M:]NN|-tY[_BLp4$ -etqiؽo?gϾL?OҝwQB0C[8xV?Y YiG 6Z}tb2c #KiRF'#.@[X.=MclC .A9f%on{tWC mќ"3~vwg686Yc`uG//wK?}+dJ$ s.,DF|tBlCZx OYc{ J]~U pc Vg][VBA yftW LVVzrL[R'˨Щ T'\" h]mj^ 5/VmɟWV蘚Oz36*52|F4!HoWjXXJLa+j<cEl:_HpT |qQTނP&Gp ެS*x4(jM5W6/qlT4%*811H-kM_B}صbPSԾ0 *6Ȉ0v#0PG'IQ^>~AkkC"|UVFz(# 9mC^i/s˭{y{׏{K5-WX>Į ss d2$Bn%)NR CIOdkUڜ!0oc_.BsK'k a#I:Fy]>M,# "~p >s})'dPRrLab%(%[81R H3HrŪTϤ1.UeNQ1b0__/dY:Y~#/)uI#q>gʗٽά((s@g$IB$ttZmbDzV6-~ER^gm bqk.Ic1Ԁ#r-:TIaꘪtR%gXu&qTdTmm틘j%0.x^M4m3HS im6NzlmIX$.޻bp %-zT4 Q 2%MԶ1`!C|L$V{ʺh0(-\3RGNB|q^QW#zخҗ]P1+jōϪzzVEj>D2qKPVV[%X,ƭhT}}m pY(r|n}],K'sň4MxU,fqZEH`@!<2|/~K>iFڙl ) zl˜La1Be82,!3!CkԢL Detǝ&c,Ib< 8UK ^8WOҗAN2fN. :Wɭǫ%O `0{oǹ@`mt2;8̡bL$ 0J](&QNvY' JY(Jjcuj>Mч9⌐&67o=Y1y2-+wGys 3a>7_ oP(O'iSP#h)BJ"Q)A$R=7FڿzfTM`&$kN<ӜY[gqW7pAMx~M(g"'OL1gqÎ`˒ ]aB`TxhQ0 G8N1.m7ڎ~سos'Ycuu}c]/Ɔ;KDLUҙDǭLQ[ ENujQ,m5QklW 4{ȁQUITzѰ[$IHN"&0j}k_FiKiQ=#T[ƚC̢-j%`Pe\àZPVƽ>< 3rۧPVPiႊR(? &PBRbZP,_%i'=HR!%ZlDZkiw:@ ]]ǾYkH/<]^i3ZiBjh]E K3uhȠ(%Śik >[YY^p.^j2hw{d}7pIfI ^m9"g|':eBц)mR-8qlvݹDY5d"aa8X 9̞xAoԣlRfx Lk?}NM_gw+CL'&"c`KHGwv:̴:$;]Rf8WC%l.%:z8f2b,rsmw@&5 7ֹcǐ|^Iz*,e9!`PQ燴or:2Y@,FZD;H4 UfCѐ%ؿGɟ'~n&'?{rc]BgF7کevsϽ7)A!IL؄a8"277^~꧶-_3KMo} [Y)!ʿLu+0.߿{g,d2(?U8R7:}<ڼ%nz^TR꾩NuhD$-F+eqkæ Ձ:CNmblp܆?ILkR5 ђ05n;1 зۊ>A cb̷VRE".#O⢛A%LtEt7ҙӜy8s('E(h :c#e.3nc!p % L@[3gYl7VNj2cKS9I(H!0,zY["a/9F#R>ypb_Y!|Zz΋@"|G iňRVҏ3e@(R"Nȃ0%(Xc0K_U 乜3?jE/}d#+;~@ď'|_zZi2xw-PN :CxIg^\vw}7( z)/|gӵoy[Qn6$ѣ|_Ge4Nwp-oy+4U;3w]kѴ //r=LxqF#yנnf>Ogy{1~9r'NWW?9w]q)).Ϟ=<}LJ?a~7~J6A1xcؿbr}sGG+ʫ۷O}S> > Hk8ھyꩧ.&Ueaax%ޠkF7xM*Nz?PO0F5;ZK/\{/G.Qj`Ш ^S9s|'^oor+Բ xVtcSJUoԩS|ӟ՞E-3\V1Xߛj{??̳>{%ՠy Y^^]wM7ݴiUU,;`vvvmI|US$Iڷ033ýKex}o$I`ccJ7A1x[ߺʲ駟?8wyo-vq N<}wɿQUx+ت .fY 4hp bkРA A4A 4 4hD#4hРAkoРA A4A 4'-CIENDB`fdroidserver-1.0.9/tests/repo/org.videolan.vlc/en-US/sevenInchScreenshots/screenshot0.png0000664000175000017500000020646613243530567031471 0ustar hanshans00000000000000PNG  IHDR65fsBITO IDATx{eEy/\kݻ醆nAP0A `=F%ơ㈗1!a^I4j"z$ţnkͺǯ~_t{GUctY=W5k`2)2){Pi&`R&eR&\&6)2){ZڤLʤiek2) MʤLʞV&6)2){ZڤLʤiek2) MʤLʞV&6)2){ZڤLʤiek2) MʤLʞV&6)2){ZڤLʤiek2) MʤLʞV&6)2){ZڤLʤiek2) MʤLʞV&6)2){ZڤLʤiek2) MʤLʞV&6)2){ZڤLʤiek2) MʤLʞV&6)2){ZڤLʤiek2) MʤLʞV&6)2){ZڤLʤiek2)2)2)2).o|cc,=[jbԺ(fK>^kBlσGezBc"]&c4\Z.dSlh~ZϋƅwHVܡJ.ɥ1`~~d%d|I.:*G4A_sg$vpƴJt &EqswhdL%YUcez1OStˑe8Si.ӱPg5.K0(<䚐?2 mFo&ɸyE3INGMycßn텒p8G &񵸸(m O.ཀN-]7Bb"CY2enBB"T#,y}2bQ^vEBG7"T-#ԊHbZ{,@}v&\t Vl| ]rmfaLs>7'F%k5AH89yJNYnn,4B r<)6mB9/:w֦fӶmZE-֭,s9f4QtEp!2/}ZmhM wu+yrQjE0BeX.S+EW4Z1N>/~%f@cn@Cla0}wSXGzG_^ccPcrf|M2X0H14Wj6EхmAPjSl<2&\Ahb% + bDJuD^_/[)$)~=SQq!*%:e#P,b?Uw%o'P!V.#˭Lo&`WR n 1E^&Sְpi.EB&V*,`X)[/R3R`< #4` 1Y \`a9) AP]FYw60.855%=ڱd9n0&[ay/!""$I܈bBϖBV[O4ҶC ;@pÀ@kBZf(LaH(OI>LX|e3%XG|)cu-6Ee;/!'s] b"yI'bZ~a/*/"0bF "^Ļ`) _AoV~1/XE~ՒܜEwVrf˵O6Ivr`0H=0t7={#+2?;IX,|~ ;WAgfEB,m|3ſ&KӾ"83KZ05Re>[kRӸ7q?KAv?ٺ_4+$yqfwD88 mS>O!wlDLс/ *0t"IiM$L#.|< +pO=B߬uH\8gm6XQ}02C}ͅP@w;DN.2t)v0;V4هj=1{Υ{׮n+,B܇"@DH#q )F!FjpF7"6v`^  Vxgu^&dQ^e@Xi i2/s&s\KEDw)5Hao7y |:)arbJjW`uе=t6Į"'R'y\T.!^OS^4 ,zA* zk,{F xsTC$$G.mJr+S/$t;7=P*)N}I$*YI I[crN-摗/4$ၓb:>Y=&0 ^7qEv K2%p0![O(kbvE#%6*z…PeqbYl'"kݶW -i3HK/(!i{)6O1 ɓ%>P,m7M3g)ë50)䙬YhT1"K^l$m.$dX^Œ!t9KAjVM)j4$I sNkC>`I̷e^/[zqJ0\' @Lq5 לCyBYH*9   mb6PH@CcvX}~uuFm;lL00, "ϓʶ[ޑ##zIwӾ?||bҶmMַQVF/[ڏnŎR^ y a/' ,tHe&T+ N#y25‹\kby{j x>|=\q ݑVB) nh' zaSi75-?br.K@)JS\DJE"5+>IoIb}53ۆ%d! .b3v~95B'|d @02HЋYhY"VCXVˆIJh0֝rӜgf5F˽ᾆ|)8G b|GQ*/UyÄS#}cN]D%L L'o#s/5eaPArެ?XiHS$^yd?<×(VA'zlH=FH¸;ć``?A8#iu @@URȶ{ѢZǤiaa!t@UD%-6OTf0ƹbȺ1<=u\a3NqMŷt V2MwBrBRdl%,vG~}eVؒ}~ş'[bL!zM"wa{dK+fyꐭS^&Rr4V%TF0=z>fd 64%SsX4%rfTj,iYVs7UB[8kuW2bqh@FbjjB3lS]X[?8h#k40|*/)+UhJ}PfQNAa, 'L8DbLOyepiTZf4R@zL<aD e.xתCF$&XƼxo/V`֘#QDbZ[ЅLe@Ҁ>ix0݉lm=ѧM1:]7Mh\1V)D=)*yLJ)ec+)vwOczDB!˝!,:q6sōpdXv4S  Ѐ+ }1 &_p43H\ˤ^=7=-n+HF[Tܒ 4)Z${3B-ykbq۱5qRri4H;>oH$!<&A0a5O 8#H rwMU[TN!QkErbVf -S9j]!Ft7[:FKg4i XҮ)ߠorrk4<Lr8_OWP8rܥO+9@W} ,k-0 bI 7kRϢusҸ9noA{@T_R´g*n3ݤF$2P{.9ȒeqǺ@®S+f>?F9dXܪ8?aFk~$ʢD*<9A[E |zmqEX, 4b6 ~ a=C̒wAG0.Xu>f޸l%sk(f 4磅bc~nWNCWyhBxv43H'HHKWt2I@&ea*'Y5P8fTQEGm4%Dyv c0LFkOA%eI0 uPR +T^πUqNDtN[lXFaN(& b╻(BB]qi z}g[e&V2e z yPȺ(r@*&- "yAC yήwp i5醆zA?#V;`f[Gy|_Nqѷ2҆@xfCgK~E%KElM@,PpkEg6[ڨ /|Q,1e&*h?v&r7U>`sѝhA}4D7=/x-Z@ 3GTF 5 K 5#5!^K ?ÎVsfƍ}  U/Xx&^{P]Ɲ֑s9C9_ˉ;{"X:|Śtڜ1WMP?C)d}/Œ?B~9;CBa4n4 &ĝ6jR2@c-HSùBLYb~J}pEid‚W_y`t_aռZZ)K(iV`S;Mt+ 6Oh0x2Ȃ޵X )+̣Mx_aALspʨj`M='tb+E(ruqB[ܘ-,1 p&ll٢7¬8;} 9c͖LЉdS6!Jq<%XhsSSSXdדYLPB'!>$WK߮2ƤV  ; )нRwפѢz8?dӾ Tfc5GEjd꽝˃ll"ې( H?kO^Mq>s -߽ay"_]m<0IBQ3! [,Ը-hm Bv0F,YY BE}D];<ºC8.?n%},N-5Ɠtp{ ؈=~1pG (&M;-+a>ye @##[! Fؽc;>,yMaBn`މ1X9{}$摐) i!w xdʞ|OkoXK}SE2"%DO܍CN+̝ k̯TLi,}`Scȡ IDAT,6IHG yP,ss^-EAuY6Ȋ<9EDwA.& B' Q\Ym/t!*U "Mq`1/ BrF'H"Iӽ.ً.OmКn/d!zu+Z rJAJ@'(&L~UxJ$kK~e)بƤ=|QDfMع>7҃VLRʜg~PŁ7V+T Ҁa)腕n8%v(:vuR,Y./~sX,Xlic*7;䥡w$£ZLa1Ӄ} =2Pglde# Z IB¡{ǖ5!>`&YGHb?1Ddd,zT#P-Zx%ɋlFHQzo oλ)PÚ~݆н2^&:2P^rjk* JJQa@유  PҘbFPzX5fz7m$'h϶WG}'к0s4I,v%=$tgn24yVWh١ɏ*9h5"Go oA\h›g o39m"מ0̼A!LxKKh͊b&40U~#Zf.S2_d)gO >Jmt=&찠xr¼@`_"U| 73@8BÈr܌ Pw;% ?Ab}) q?iV BXQA`'D7{ƙ6Q@P"F5݇bL!3 Sw)a[7PęS^Jˊ"@9l1T=$1)b ~\cA&ˡ8 MNv/ P˖uާYxѭ,O0sa>@#4+tL)CI6x&GZSl!0SNi:#3~Y'xwMt(۸.)˜E$ßٺ^_<h 9@A< a<[Sk8%e33^vgMl7`S{v<5&Ȓb` z8E߸1Kn7ɾ0|T7x6g6y{dxnNE}P{> b &)GioƆkt?$G6E #U [/e0_%x!yu0Q( /Gah3Ҳ,\Ic=HK<%U]kHYr9kEY` $!x8Dۧ|熭# ¯LDdȘL̽,eM g> x'bsLi<AtbC7$k&Ϥ-95cL;R& i7I"?)*i_. śB|E?nr[B'b=lξ5/"# &#vZڠұ1*appW<% ") qW@ZK$"PiiSKcu?c>ʃopJ R[z-[o-orhqo8)II 0FiwvzL-[9hahMu`5ukjS@̃_9My ]z=BTƅBd!q0)ch s@?xu_C;_SHGI]xȐJƠx5oFށY$汣H>e6quqp{be4槢lvfFp_)ܝ_R@\na\<\ovG/1`prASb<ەq?xsXgB鼬XJ ,@a;ߛqo2:s%狈=^6fS zIߣF`-mF"3by0/a 5?\xN#< }ڭ@ž$uZEX'4E4pe}Ex%YY~@E& /QЀHafpލķ-@DLd]#vYiadAbT$axqlԺ)/K@[]I 2Ӧ $=e\<1=~X ([," Nݒ!Wgl \[~hjb~Kp :b@ӻw>>mi}\b-ah+2Ebc$͗h0183RG&>#SMsVw!4Kh HVa"[XXXbEcBcfNÔ|0T)QXUŴbĔ2ّ TfA/I\MF"I֍L].kb[Z5. e8m2|bH (HyH8AM @&,8aFdG0Y9q0=f?|A5"Flʊ+P,0ņTН9S慅ya (uvoO@=bmZ əBіR/T@'?n_F`1E2Y$&CY*TOFX,b `d7D)̋k Κ Qe#'Y*`LX_Y#Pe28v(^*Ca\)Vi]kEPi d2dZ;OHlF-z֒CI{z6YE>] 5&] f @ƏFC# |`Y$vyD"*6 ?GV1 GFgK*W^Y{$+qv|etzğH?I4OSȖBT8 YJ8 jBd=&')J/ `U$4cKp&'_AJldiبisи8,!&Sn!(ȱdgyw4ƆKN>f!%\obլ#n(B~`7(/ Lxu|hyBѶ«- t)x\G pk{B)kjC$RIytz,@X<* # "nQ> YBh%U$Oo"/#m7j+. eWjQ+ÿmw{~~އf,R\SMp%r Szj4}c[~=࠘! 53 [9OyP4ȿh{60L^rrsv}+s 먖hw0^ 4(p{H 3PN*jb] DR袢2)٢ZƟ̾ NqUq$; ϯ^Z1 ׊l_|fO;K)5{.ر;ܸq#\GD]!'g <4g:"b #$&aO 厓4qxFܧZ&Fg1^["q~[NBzSȮa_hic18Eb.[ wx31_43݋xX8K*"snBF\kܜ]7ɇ_D-|hE;E'3qM 5Ir_p8fV{i9Jn %S!DĄWaI1K൜Zh۸v=?K1wʩ"Ф<(j`߄ <icQe E=-GGHKynPG1V*\Wk 2 !:6o"@- X~At7*&)p~Wz x%RDe6yNʩ=ȁS+wFb@d)tV9_/: YGH6_,,r QQШ n0_{(E,G -D+PoEr7N >61$TA'`MyYp* -mA cAx4Q)Ϟ(i39nDz  1Ѕ'@tOHbA3*{iZӛ_I<0""cymĘjˏe^Cvmh(NO*g4_q? ÂM6-kx+P|nT YXK 12凗6c 6nٓrŘyb/sK'd% l#l 怾P)%g l |^Xg-vG< )ϧ]˵j" ֓ hhTiW)QYmwi z' 3^hm1+=*qZx{ 5TL^1|N%%pj~JL' ņ^\PnbH&taKzGO# O)Ǥ2bˤo7,@ hgLh[ e*~[+7>AB7Eh,Y#;1IHC*i)Xt`(ٻ0-# a㊅zmh |l}Ė=s͸Up,J@t>TmX)UUEj5ڒtF~?TGlۻT)tf(hΒ[#Uƺ p/Lm<á̑cڀuӠX\4II<|8_/PtozO_Vҙzn5S)P% М'7~4ހHAGF+02#sqַF6euQGsū/6>'?>|Aw+ǿ;k܌B0G+;v8ݻ/zG1??oK-[=;뮻ڵk 0@$ E*Rjc^Pb8Q#C F^,{Ur5 ϝ*zy^NUnVff8C'}e`9OUANR;D`%Y:J5O@GϑtA-7x-u`7y)&’ϼnw>mjomG\?_}m&:}~~SN?ömz衵kNMMy{nذ֬YO҃>x%tI<>|+W~YgvښҖ98jA1 +VEBa8,>"P?CbpS@XN)h)[9USİk:~36CϹϽ_8_?Wh~o 쿾`qaz"f7??z?񩩩;_׿U;1ݻtI7|'/}mht7?iӦ/?iQc%/֚C77d 1B 41ȄFFF1u|$3^=(YYmawJsa %@XlC !bˇT{gh .yQAҟfF6Q'qSTL/MqsA xvc8Ͽ_YzcawOZUwok52ipժUo}[_|kfiӦp>Dy~}~E,..p Vkׯg>cfzիv܇n+LSmTvxLaPc" 7لMI̱y׋] ;$VG9 PNmg6"cl%7?\WfX9[bflX,.A#]rR)bS+>ro,w՗~QCXDXb@x<~{ޓηr˛.hǎ{w7n߾&p3[\\<;h|ݺuwumڴiݺu5i1`<Qy㦤&/"M۳*43p-_ (|fmCA>0:3 R0NC4+H!8h =4`_CjRS0Hxgk~#hM ]+sBVFx $EAyIۯ/ Ȍ3L7';Wy>3O|g5~3X9GǧdYIjvΝ;wܱcb47nܺuiveqVvp<9+r<կ?sN_03#mdt?at@S|j  Xz&w sXO!#&IFq! рu)t⢜wH##evyvZ]ryyxL{+fɱ0OcB?z%yv!W#arkݩ hS~H4bAS+xt9[!oxZ{ǑY0Wtʹc6m a,MuֽMoZXXH}]w{W\q駟f͚ZXXHE2hkpx뭷oۿ뮻]zATbN؋W)9p+-ay8J v. YRcd-6&=ߓO"Bu@؆AQ5D5!C ֑'(<1߂-<,v AOn)M0Җtt͟T遵o{dwu!X!=6nq333[nmf۽{C=q+V|~=y5 -ҕ֝'? @g7dHvub&и*ty;FVQ䍥F)݄O#ףm*NCTZp^AGs;%hSbW|%qZkKk~pBҚl@H#&~%ȑ};!(Xgcx;_ypշgjSm5?GW C&%6`>묳:__}QG E͹s9g'pۯgcݼy7ͯ|+[n=3ggg}#.U!aK4xCO?@O6n"yO7\;43 B}ɯ4}Q@'aj*C_In)ûExv;% _ }.D#Ex zX9R4'elon =,5HXctwx֚v\ UٺEybB *t!4M| BA9h>h&vxzOLkEYy*QTO)wBC :]mN(/+ʰ# zGU0aΆvxWj<2 q ܣl?}ͭu햽c|ZSFM7t=_W^{~46lk~}9=Kk֬.6 C⫬VtC'" 5o(GXAO,hbHHCACd3 `GIh2*~&3Da\s# bΕtC6R5Lb0ѽ\@Vŵba-Nkfɋefay~@ZqgJ~/6,FkBv "'__W^ݣ>mzzz}'֭y\R ]BhqB4dy$ _NܖJQ\5Ĥ׺/ΐ'^;;Sh ?yYܓ=Dq-_;fDOovqE)1kXyS_9>&gdމa#L3~sre`q%}y6Fiܭ\k[ϱxklOTZ ̆` xGL\Ta8K oMm ȵyEڟs-^T Zh˿j2wB^L03}zu9&ȊoЃt-"SZ~֐kI6w׆%ɇh-`^ h{gfnGn&ߖfEo4+%n۽]$o۽ S 9x2~c) HHƽ3l2Q5, ^D 4>X " +!^pɼ(ijzg+"fwOLE顖EҽF@)s#kЍRfmWXQӒq[K~٦呬r,ChM1v;[5AnYT)T$pʠc"ŠSD䂧2ZC>%Tƌ3A06`7&эn؀q4$o[z %F gQ}E=Lv V.p6^y<苳c,Cu&ŇÂ|ˈ>RAHn3ALEkLNjE F ( ;X9ŧT؁x+^pa~Yb- @u,W"4s4VcĂmBX="5?@+,)[\/^!I=f+("+D:&{iMˉw< (3zɄ4- IsÆ ~M0;{󟿸8???v~i^{핺ذa˧&W X%)h$s^FC3kf4|?o)v3[1<1gJ lmW~`+C$L=Ph'S@ bcS~?Voa 1EC n Q{1Րb醑:brfMAHGAT6nZL1̼U !LMMs9ӧ~k_ڙs9gvvv׮]gqyw#+~>w]w%gChQV=jg Ѩ̍mM>Ѕґ&}3™_x«Rˈ`943M4-ts@l )Bpd-c3=r)>kE8UyR*-dߺCCG̏|.ُ bh v`\G͏`K>]j܊+"lzdvvvjj*wnQ:hnn.]ּ*k%,!JmW,2Lܹ=y '"[C>owA، ̆[K?8N$1N5.E}؆3g >6I-# `$ j0/(%+B=˧YPEk\ۻvP{JFɥ@} "|78fO1":dM :+48̙ :tVnb-&sxΘMw D+Ǐ╎RLoIG% \\-@S2H3H5R ) ssCcR|%5pbYqD]&laaiM)jCG!iB`ՠH+*`6䁅uՓ&j)-Y~ yT|VȖ6[!.!BbN@ԌZa`I>)9hJz~bgE;sf(OByP`Ynm~ , i甶zT]8yVǰ"f)me,μa~NԴW`9ƘP1:52o4六HcIW˒:׬a%[X0[SܩeY:1^BPn^\`%3D1qF^-A1/{fdCdo]"9»kJYm4g2QH920(.fWY^|&O!u칱}<@o2 &,(:Jᾗ4)(E:ĸqr?)`M/48#˨g98w³l=ALӠ'HȤRqo"D5( Ev|1^kjdw=| W)q@+&jMH\ Mב5~zJ]$hnn\&*vo/f@kAaC &|!aȳE9T̡#bpr %d)̎H]ܓ[$f1FV>;;~۷W{ċv)k{ZcK ˰Y>n&i%jdiʬ$jiG/-q``ǰ- 2DIgB*F=RX]V<#?%iǷf=q4ܱc 5KB>y[ @&a[g.GqcĥaU|/%љ5@18+2܎hf677kk|;>8O||6UV/E;j*fa>;߶vjFZ=L rHEI*m~N}R7H˩6i"ÒdXT-cA;mMLA,BMBOV(~ ox/] 5W`ػ77O9/x K&u+SE 5E JJ;imrL$=rrgE} z9gyC@t_dvLOO_r%gug?s9g |ꪫV\o1 <@ kҗ433S#&՝mm ='z-X:K7?QK$QY#! tax:(# o끥uF  m!\݊7JafgM66d-aN5W|+hx=|#ٽ{GSO=c'}ܷr TDք`_I8O0ݓ6C>|X UG"_'[,z דB=Wuꪫ fvG^wywuz j#vllq÷]Z_zEGݳevGaUֵmzl?\cq&Sx?2ᗁX}_LNeQq ;$+1WX-mxVTwȏY:8QI5H,YO25 `W4"PڶFuֵm{}%\O~NAu/ܛhܾ`t@7s(E} y!għuػDt$nSXqՖWپ}wϧ~xz衏|#oy[6nxwA.]w@R'k_!{m/*4.dG`wHZ#)}:~!V)r7~_|p}!~a#n(mQP+!͟V?>k=_9i`;O{[̛N}S/?_u/.zKG8gS"F;J(:=+q& c4 fC@UZ-$gdt;@{ɔ`= t=!Z}9] Op8{/CPF@zy@nF?uWier1;v}ϚgZZkg0A%<9o~/+Ͼ[VRM\-TJ:_1q=cؽ88x]o^<7h_|Ła.vrqtϺ5>pdu:#H_{j/p(dzeBJb OqPώJ 2YF&h D`-ڼ`7 'mBYnݕW^MƟK"yJ*vg9YN{ڔa+c5VҸQ[4~k1"P(ɂ@ X\ !_o}-/| Ol۶7~7Z*|#G܋^#Ta/Hw_^8"sͦ{1kc9X9 ɼ @gI#z?)|9?;%/yR4Z|Kp%]xcb/I,5 $nЦ_㕁Zj̏rQ5~?+"MHQ-V?կ馛 .`ӦMzGy衇& 7o|ms1;;{Mt&QϜͷM4gzZ?8a*̯w0TSHc)$.+~NVx_E40UۖoLa E9B!HFS,F/ġ+>ND|{`}?K/tƍJVrZˁPFfWQ MO_"`o0>Ae\sI& efzֳmիW_tEfֶ_~'ܮ'92i60fY5f.Q+6]A4; Y9f%c2fZ #"}&3"MӤC5&H RX1y E=7ț@)n{]Cʸffw.8=Μ/F.r_bEr3GHf7(dU n2¦oFG kmdJK/,s$+W^ySFӟosF3OBk+>1N%,[ʁ;j⚙mܸO?DjVL_BF]O_SZP+m?ŠI/X؅X&i,WdZz_/{|pz>0{7're_tE `G[.38{u]vZnt\~/7ۣ+ZK~db`9"Q!?*skj#\!vEG a $pvGIMO;3c OX 6?yzB7ntƐB_H\Vd( xr=t(gwŖ$oK$ /ׯ_+ڼ@o t>z`}3L& CIE`(0u ޙ)inr+狞`=55i&6g>sW/BMlذ+*Q?pƗO6?q܌ч-i!eL_EGxHJ\.^$ReZ-((lr. ˍ*/2K&8 .JRƲ@83P<1XzԽ۶_ZX!/@Q큌u\W;*\-#K;l75#08?Ru\4 6oo|cjj(7ի/?زeiMRA .Є{܌㚞Zs^XX_C9)fGj.-y&,zas4Sk$Rz ̐Qs.6~TK(O*-r= nAȷ$;K $ラ]vUW]cxsw̙3gs̙3ԠEp&>&Kl) =Zxt BJȓW^>^q9?~ɀ 2Kcɤ1aRTsAa$ڹ)NV)|ε;&xP x#26!a 퀘{ \LH$7lJ'){.'|"%CN`K74/CP/ pu 0tĄ=,29_ '~%=EԞs̷ÆDbeE:4YR4C)2%dJXT_'RMTdxsqUiwI4ʠ%s>gF31bDwwwKKחBkĢE<dk?POSM!r0{+G0z:2ai!b+Z% VMU:Roi%>J"e wAB\rr%/?g] Jc%VpVĔc hqrRe=P8bqջzyBHAYu([YaX'Hꠣ///:uhlmm=uԷ~{@ {8ټo߾zoåYYYT*(I sՙpD)IP G& ?=" Fv ,JH.Kx 9aP DV$HdS$qse-tBB8q?Pi FvSH94<NNN 6AMTI0Gp<$%կBT, prw!S[XK*f vZJ6 2ƕM80;}tggfcp,dO~dBFF-ـznLqX%jOp#  L+1*O'.i[\F*\tI@IB\7c,nW)-4nVp|Ǟu?1$.AA[EPNsnF0 aj\'o%^u+TrCUWayP&r770G0^r Pݾ}ۺh4FɓkR*IҩSۼyn0aBCZ悈A ?=p50q]lH\9$2r \/4Џ`0~(%"N†?a?S f8+rzzٳ !^n0`@GG7 h'a9\|Ŝ3FڎYq1;f{,f\#^%4Lqi\Lɑ\i ]#NBQus8$|SN޽{]]]ݝ999Ç2eʌ3n,˧O1cnW_}5e橔z`}L)Jb(%l?'H^:_(֋kfE _ُ$ sP#,IG 캺d:)HIpd͵Qܲx<}>_uuuIIIEEŜ9soH$2qĂܡCb>V{]{D)!#},&ta&bjP(TQQl2Y^^>f̘ÇDML GVwe!#K2:L'@ A $vX99SHF`,.$^hdYZot:{7gBwvhTd2E"!C(pLbiLa/6xJd0 2u+7E!>'jZQo!g\V+b NJEܖ=cE>9ɑe\YdYbÇ/,,5jڵkٍHh^{m̙a瀌 sx_ \H)x<֭[z5b̜9sÆ 'O&Md1dp#T"+k: 夸Vk2p/³ʲ;v>א KubxPFi$a ;j00+S x/Rp q :VRuR[hb`OT}@&I$%`I0qr0g(_A K/b+h*%0t4QS|?K.X,·SJ ѣG'Lt:%ٖH__p @'hhF?ϟ~ifffZZ[̚5۴iӦMl6[VVR;C]\@NTdSB&O$IP }EV'/NXEcJ)3 PCF&Mb03 bnDVI=%8-aɱK*q"'1aJ_4uiii'O8p7L)Ν;JѨL&S,! {gΜ9EEEx DCb9)'@"BqNY+++׬Y~LZVcvvʕ+}ں:v-[6dȐ P!K12:% 7ܟ.<89õ`p(Hq +gXkƞW8y/!UB⊤(R"nlI(6-'\6$F9qCֆf\)avv '0TAĉ @QP/ 9C &+S#aqlƒ=twwFܹs.\hXdYO=T^^ޘ1c`_`0F&:Q !s8:u¿B2@bd iiiP5D"WHXfÌ%LAkJs4MѸs)qB͒J\o9 )-hO0Dvh %+ Jb0%I8{5k>3Ϊh(&pر.G}g333 C{{.[nA`@(Dq&XB,xPa 6)t9V1FZn݂ |[n> 5>1c͛E4Rn\ɔ4*LC0e$YQ[ײBlǗd=5r@N+d{}# 3tI|+(8Ip?afB{(r݇T*^<*HnxEjkk:uUUVMdɒK/>K<`2oŊ;w@M7sI QB ((8qkQE K3DzЂ|'_jvf-%8c<+++z7n /@1) gڷoߚ5k?B999/6m nFe믿/OFUYYɎo۶o-//z]SIO*L-[6||tzj׮]lSxϩlX#Ιr[콂.É^ X'׻y ¼vm6[ZZll~ܩX 6Q2Vc>P06HTy+ 0aQ$ۨvuǤtgIF dfԝHq( $ ecŎaSC!,oAEõZd @)ڸ8I@'h,M#LW&A I02TPjb8?F p̙kfǎ TD)5LnW^lF &===--ߵkΓrgϮv:lno۶L&Ӏ8$':(zرcvzG}>cf[xqSSMuۏb Ab 5rꫯ~嗒$uiؒs= k ^Rm& %=%9eEEUy.Ol? t6ޘtG1֟ER66Zw$($I>QɲFYN60&"}`I &4b6e  KB^F%@|c`& (H-{ [<ɲl%I4hРAz-,effnݺK/ 0t:l~{UWmܸrİ8K_5\O8!)@Ϝ9cZ6EQFcSS_򗺺P(D/Nq( 8a"ڐꂋ0̜>vإKK5 b)PB |n=%scqJS/=KϟO$JƝ#:M?=X>>;\&v:0*D6RqdR6)G܉@nv{j @!6 0%4\a䄍} En b.bjfh*EH\' %Y].W{{{{f6`/ 3f Id㏯[.//o<Ȁrssx<۶m{FZAh4گ_ov 7_L;v #F\wueee@W<(h7@HQed$E09i⑉$Q8·Bkv޽---SLo=tHر/W^"=UDtTI(h0N}:uP@LbW?qVQCX#L k=aP)%ѪKKp*8I0$%؋e9 1c"b䱙Su: vܪH$ү_B7mڔ~li/v_q2gϞݲeK<8poݯ_nI4T%##( ?sss[ZZ^}krEQN}e˖oii͇3:6 IM,?>h7F+a0prhDb¤l믿cuD*&9s0*H&&I&yoTzkR뷵E.|ΨtgIү>^&<QuFLx 0hCgN|\)$PҺa( U'QaΓЮ(& qag)1'Uq <0gL()9n8@ c%I|x^8WH$p8>\PP jjj~FHX,H$PJ Fz8(V455E(Gd]]]_l^DΜ9ѣ/Rww7wƤh4;x/^m6χ7 W,jOq%SZz6mzGه5K577T R{T7eZn PDZC=-LQQB\ȼob;J:Mb?h{ԱF4FtqP]vmC<\ <, D:Ilf\ k&(V!'ApKAlCi ]s43=,a/㵎~Ŋx<444y<* F^Oߓ,Y,;9apС7xcӦMNԩS3f̘?q.] D80((ZœjR S4v"}dX>@ n:&FDriJ);ioK,OXzN>뒖LɗQ)o/Jwt>4zqEm?V\j *Rr%qgj!Ir@F \-@&,>g_)p7JS®A`琟)?@f/^IVp PB~ܹŹ㢋.bq{hOOOSSӖ-[\.!)gggwtt$; Ji[[[]] dYZiiiUUU73EFC 9{l$)33o/ ǎ[\\iXb{' 4m4 ѱnݺwy'0Ç,XOK/f2MeBH a#H,c>??䓩Sm޼9 h+-+o78?<۸jWB,]Vjj7KFI!X$gyo2ӄRvD;`0W ^l\4AO! 9b0sTB.nYT]-ZY8ӎ/cgOq&g<p]]]PrFmf3 R??Kh4??ǎ0 L&$IYfszz: eYo H`P^w8===ӧOO0nyWy1=YU{{{lٲ|򆆆,ŠtǏ/zرcWv;[ir233?䓻kؿ &`ہսVRsNqUV5իnmƔUV9믿>''Gk<\4kP;5=*(*7\sXR082jK-UK)4Wf~Z9)Q'@yi@CblA @ȆzG|oqlॗ^eWdee={]SpAj5{<vZ+wJb9rHiiu]W[[y漼E?7gToGywe1]q6ȌFVZ≮qvNbF -_49C'wb4 H]qwYfIIU, 3 X(I\XѢ ZQ]RY6j%@*՞1=m_b3? &E` p*cA [3ccG)c4}B0Bz{{ꪝ;wr $S>p@Jissݻ/I&tP(#~{[laϟOmKdY.**| RXX,,de9''gǎFٵkҥKKݮ222`ؤ_ڵk~g}]2 :u߾}f8,]bcYOK7?ZmꖢvMc.`AQb'ǔnzǙa9C7BxWVoDp!Z?֛DX Dl%pS2Eh $LAZ$4,{pu,3au cߠA<ht`iȑ|F e(xb1۝~zvP¾) ]y%%% D۷WVVBْsԨQz+;;U[[˭TF9sΜ9sp8qF"DْO#RB.ᗜ$3&g,XJxcld" EF( @&&b k%JD Ux9& >NT0JjőJ1y)t.f),CbŮ8{,UUUuuummmz ? Mɲ'rCC`0iii6l1cƔ)S(81ߎwIeg%ܛ RR$t5 _MuPQɱsJ؋) % }EF_$dv{( Ò$BKysN3@J)$g?ٺuzzzAY=σ>xUWyM4G:"r5APzH“TAE HjHFR/'v ,P# "B#GVTTL&xXFàA/^ ~tHfb3g|lSqs7t۷o?pbv^V4i-EQl6[GGNs:_~% W4߿zz:$iKMϟ?ܹB/1۷/??g'yA%xfé9EJR)})\\c JMĝ3,.Pz7eΏE/Nn:hۂ 2 IƵr*akC%=TW!ѵ2LAcW7%T'޳'˲b&d2B!R}N0oݵkWzz>tP~~6`GKF9~+W;;e/a<憆+h(**>d,>ӥMMM{ݱc(f`Y IDATx:p@EQRi2vر`Fvx"+"wHMѮ vb1?`bq`"!ظq!O Sn?'։$K|D@f^qPpÀR$(jd$K70n uqpiTG)cBbؠA0$ 8M&S8^wwqoq=XV٬zzz|o=33fᄐniҤI[l/ϟ?Ғ]RRRXX8y䲲2m4a  7̯( õ8aee Ďhoo "ҦLR^^ݿ[[[9Md! 䘵Yh&R LE5K ]]ʪ?U` 㢸&^*hD_HQ2EMT8AA%GqUMc:SpbjK\htذal]Y[[l Klb RRRb>\]]\g8;~4jԨ2/Yyyywy_/p EEEz>33즉4IQv=sccc߿S$:t_~eNZZZۛKEu8BHWW%8qjBuA)--u\@"V5U$I~믿ްaC{{w1o< ‘}D_[QsL89E蓰j<RSEܘ((Ku FdY 0~i@Er $Hd4Rq&C RL Lo[ FFIe9YI^zpl!h$5ꆢ*\+v1{#laf( lfD\^^>x` h4.*))z׿^uL,p=8f( MQ31v0bʒV#=yyy~!+* 9dȐx<Ç۷/ ^|g)IұcppxРALnjjjV+0@ քwN5\}}y>e˖577,]?iQQф W_}jZ<( /\X_JH\MD+ TP:$ ~*Ï'[ WV&d(JPiyŵ~* mW71+ ;E{?7ԁfj6xIII~~>g;Ǖm nlr&I(ڒpfx %"9Q)STXD/"&i=OxX/-j`p ׌ J}1[e+_u!s/ ӕȮ_EiN"t:7yd'ⶶ!D"kvڴiZXR'Ys\<|QFUVVVTTz#//k^~/v\h4ˬoŎ=0Ioo$I_sssxM6\.NsӧO?~ڵk_ςH)z›\ \>IDF11 %`5Q!Ȏ9jP\bf)|eպaMG:p =ȍ#+@~z] @DչEў s +a(Cu̟Cn 3R7Ok===#FH)M&a[,^銢x<1 fh$X,x"bd} rff/f9W^I8%ÅdF)fH~o)Zp3i [ s@<0o: z1*tb10H*>YDPxp^ahOWz#M*A!<Ea[`qxDDk@T;k ̤`L(CB2Q]]]nRzɓ'eɓW\qE i| #DQKVXdo;ح %lb,++D"HbXAAsBEq8^Z L,qEѳgς49au---?#Ȉ#\{ p\=Xww?$Ta2NM' GEkK$I*++3L]]]`^r%̕PFRY~߻\_lElK.$2qb #,˱X;cfeez|w1&Y^oVVVOO[˟9srQJpOOϭ:uO?/ЃH p{СCofVVҲ, I  ;::X'6 Z_ƸHF)Qh492 ;w.tRTy_z%BHaaO8o߾_~9//N8#:&ND!V| m-iYY)‡,'k?B3^}1"iCWYé&eBkiiq8:t vcb={vڴi"ge@w]b3fL^^^$z@1GPc$Yl6;;; \.|۶m.1wO8v{cc#6߿뮮 FQNt.YW^׮]7|+3~3}ٚ5k|Fqݿ/&N6|aѧjbsBHR~:}B+&ō|En6kkk|I}ӦMK.>}:6NaB+{IOO1c.t:w޽lٲ'xl6Ǔӎe p$ 7+L6^""&8%I+?+0hȯY`di:吴~xV`Fmiv+DGBt y]0IT[[0EƖZ ~?sIL"ȻSO9rI;v+da 9"j,D"@ 9rW_pɪ*}f훕ݍK:NכL!CBN>M;Əspu/3|8ۻaCu:]gg+^uBȐ!Cf̘ظ~z0|ܹ QJHDɪ/ EXracRJ ̨b(NPm^yDq|(nHHĈя9'dY[şڬ<O ؐ)Ū0F 8l' !$嵶⣝DK.RJoFflV>e---h4r;r\yyyhl„ &Mok4Sܔ0LwyG۞|ɲaÆ1dzuVv])+ #G`óc[;:r4x&Cːn!ɒh` `(JUUճ>k2[?ާ~W^q\p8C4^СgyfϞ=ٳg\;vaStKn{!(>^zz(2P(z"y^B}86qK11 To΅08&񾁢(q uttB!<8s&{RD|5[hb\.XN&[nήs*!DQ]PP ^5QWL&B\tw=qDI뱝Ŋ؝~X`H9 SNNƍ~8IeYl7n,++`H˲e˖^x9'Κ5kܸq7o>y$cZB{nɒ%1|sͧ9! X$Ȫb[lCb6#ׯ9s&E3J T+DXl= 1mX?ă|%\r̙gbGjٳg-Z"p8͋_OQbF@;6$6l;0&*oᆜ]viӦx17I?U i1!' :PqY&$#D"~M80auG_D)eVs5`P(XI잪221,cG#Ѩ$I M&ӠA/2Ji0 wygWW~aP^^[QQA\X,UUULm'M4eNzod>&I~ɓ'o{l'N3 fׯ_kkkQQ# NJC:G\J Eu)` {/\jՈ#ZZZÇZy$wȑ&MzVZumAqMp:ZIIɄ ^W^ye:t( ڵٳrK$r6nXPP@0 +$'kepcC1,)WEo'ljjb+$w p=u:]UUlcǎTd_9,ᔦ [-W4ohN} alFp` /L SORgAbsrrv{yyymmeNn,NYpe2) R:ߙO>}ذaGaJJJX籅 !R566UI)HRVVhOgϞgϞ~z޼y,8g9kZ^ FՕ] DC(I=\]WWdɒH$rem޼~堵P5===MMMtն ,XrE]d2{1! X,;wt:gfw 0+h g*8 A;z;˗/ba !3gΜ0aÇϞ={BtB/) k0k; O@-*9 \Dq$Z IAT=Mno_s5Ν[zNݽ{k? #G .-0Hk===]vÙA$ (:.##]ZG3iٸqcoow͌xp* ,8NBQֻ#ѣG/^|Ai^̋{bfyƍp,Iݻ>`ܹ,.04cCNrdt4Utl440t70bYbk{TرrT9!\rѣm|Ʀڶ69: X,]]](N\Ya v)6Xvtt;w0wÑoX@؊,M΄#ݻ&LȀKacX D .HT{l(RV$I}t: 7'TWWƅ\jUYY-܂PJ{zz"n(`pر_~9[& xy,4^"};w'p:f"Hm@OFxk/z}WW׺uX0!ĪniiMVSSq]vKu:g}6w5k,X]"N*h3s,'`3t$†,R AǎQ#%y(hl6D<khhhooQu IDATdZZZt:]$snRz;UZZ:n8!#XpN: ݌8^re F zd2 ;,R\K݉I0xt:]4n_4Lx.$v?3SNZJiWWWSSѣ{zz! #Y(S 9ggg;wrG?9R@W &][&`,L?b&K.ݹs=d,666JrJJ)GOT;φ ̙{y `2,Ts`;N! e]h࿆u^"fȡwDQ ;\Հ֘ $>nw:,ODw0ӂNhYTX, 41[y_I LEP܁`0l֭/nᆳg>iii84Ud0:::7xl⊢_{o&eu߷f_@YD@4FqQqLph411:3qFPHF"qTDz齺?N=<`s=sΥ؜LI'HL񔖖aya@);;=ÖϚc3" ^ 5p۶m??P(X,[o5//?2vQp͛7y6l83] N9kʃ+[ VE^ jd[nTu(8˯XYQ )kQ9cE!ю&Fvo5~CCCss3IkYOMM yyycǎ‘ܿ)]g)I -/x`[n}ᇋg̘Q__vZ2)##?o~s=0R X06)(z{{KKK]OOϨQh=:rHrrv;l3)//~3fǬ%9tz';;;??c3;do;Æ +++ijjCUUUgϾ+H}}+ ̐0`pƍeeeyyy't:($;E$uQQъ+ƍwW`+(hff 7ܐqϏbBZޒEp_SSC WuS.pذa6&|?BY{4ݵkƍ~666Ι3iwB'EJJ ew۶idJJJ$͂|PYY Nړ, B+W\`l[1*tc,alh;w-t\JJJ0$4ډmYr)'(ϸ eBݎD(0x.p@k| <9/{A9!sǎGQJh"1.=^m\ׄ"\UWWϛ7/;;Uk=u}-Z衇 ? P(zNJhS ˂4Ao̞=;E %\zWWysk_Y  %fc-ڵkK/rʞvEK(/7|7⚒(ѶO>SNIJJZ~Oӑ#GҕP('''557ޘ9s9B?@:33_[^x"W-E )0 }Qde/(333^NMM0BI}8F>O25{JψsTbz- &W^2gBd91jp^gc,x)>g{'RX?>%%O;i`WlOc0D)U\\nݺ-[Ν;_y+"55oNjWKA ^{5۶̙kkJaÆq֖&M-(2_D͇'t/~ 6eeeQ~z?ѣmXgDP,R}Ϟ=i}%:qcяV\p§zꮻ1;h,(nQ,_C0(H$F~__ߴiƌdɒÇ/^X\+~COWaଔDgȳeL@4yɛ ocpe+{Q/[ +񃋰,RܮW-ݻW)UVVFka*YCTey=%ѣǍGtuu.¾>Zزe ]:xGp?Ohjj0aBggrCy8XaRSSF"aÆW؉ܹs͚5zmmR?u(jV>{|B>ԉ`lsseY|(ȂV4}Ç/_oxA3F9%Fnݺdɒ-[б4py~_ooow.Z(55rrܗC<3gJ' \4b ŢAJd 6 oC\`6ʰ<5H,+))Ùqso@g 0K`8Tv,Ҿ<55tᶳK/m;5T___YY-r~EEEs3%%[dMC ]z{{o6˲7mCSooo~~r9X⩧+,,?xٲe>r–hnn&P䩵}VDRSSZCݻN{箽Zq&٠|ͳOӲe*J4Fڞ/+3Б NLڗ?5 < +db kA۵g1jԨ;Oh#M_PS#MW -5|AlJykPt8M >0uhL8FO=3fD"VZ?|Cjkk,+99.iݸrYvtt!0Z4a Q'Ϲh˲ݻ{>aرF唔5zDFGHD---MSN17e2l0[|9ҤdXlСՃ,eRt/"˼W\ʁF6^^xa(F]]]uuuwޕW^f͚?]]]C wC;flfˆ;Y vs_|T?6+u{{'| 7߿,@Mq˗/?skc5h#/x6ă$sMw@gdF b&XTgM< `ųM=OC0H69S:J |tLrrr,KIIR'p`,"ϖt3j#/j(cTmX"y@)gGGOض]RR!qc0\Q}333y"99yϞ=lJh4ZPPPQQ1M9[> WXǓUšK.^jվ}O?`0aÆ|;3g\x1|divF6JSX4?_~ɒ%tAA0bg}YV\{}>_0e˖'ϩ\N%Lf3̐ dܣ!2h$luW.-Ë$?qBOLCa2 簴+voTdYRRRjjj~~ɓdG\ guXi iM~xc-rW?A4}Lbs)kiQ[v) ʙ!'N12d]l M2BJI@Zkkkss3`3ek~rD1okkNnѣGpE9^mmm456H ??Ahg; .^D.۾}g 4rL|nȐ!oll~E& 7z{{wcM4 G A l1>pz)-!z :aY{Ո~\V@1l |o f"%g.HJJ֔YrʆhN iEme2 6zs5rAiqFFxz|PWWGkeݬm; G#ȑ#4ʡChQ;[[[E](#M 5w]R===]]]A~i՘$vwwqM8199y߾};w|?'n۶$r]Y8NZ{G)P, JL.Q<12^"Rt ?O~_M0!pP_amaUg( -J@r/D.| , fڂNߢ!@gC:ětoqv낟yAV(A ~$ł]wuYg&={UUUt~qNeiJ(==ѳp܆-|}M818uuuM4L&''ܹ'33޲ 6kO?/xرh֬YIII6lxꩧ(PUQQѨQjjjieYtS'o'F3 . Zm۶O? IIIv( |)))˗/3f zԐO<s^ṈgA @P9f[A@Q}NtM^#DtNk7Qlţ<^SJr,X0Lak_~E'싳EfBmͥیs~FTVVVWWڵY899 sδl2a„O< .O8NII9322:gϞH$Bfղ,3OGȑ#wލe}> O>d9۶=sLZP^wiMIjFǎ[WWG0^?O aÆ'|.{gWXQRRgq i.R[tĒL`P,,bX L&JY]]?͕߰x?L P hS0W36*p6^AB[ʂ">'d m)hf{"!G\cRRAQF )Jhs(`CI;SIOOqƝy晖ef+ T^^~{N޲_d2N ܰh1Rb1z@fya~38Sbݛr+!7TF+њ=X &"#xOOOEEMXEbjD4#Gz?f'''ݻ7Ν;wt"wvӅ2w} h 툥|k׮UJ&M:sCК5kRCmw2 b,=wuI=r%YWIcX__EE˻6M6p83fԩӧOO>dŊ7Tp1eʔ 677۷ofÞG~C⿦Fz"@.aoȆTA+ >ʚ%*0 ?j+G4Z΄EP6+b=&~mbeB1;nICgQ_Ni^E4(3"Chic{N IDATccmm-DJZlPW\qEmm JJJ=BPwwweeessRp޼y\pٳ322x,ZG; yyyTTTٳ; ^===f:x _mw߽( 7=#Ӛ===UUUP[o>}],Yy攔4t_UUU^^3ό?[no~;<3H`{СǏ3feYHzh]x)͞ Lh|`,bk:rQ2.9d DqZ+6pgO9Ckl'bGf+x y2bYa2ed3*F1_¾,`axf,'̙3wM hWٓ%%%GJ)wtR5n/uօBcǎ7.aCaX<0R룀(pA%WPPo߾Ra`?6mڸqh mn9S~+++-ZtСla[VVVVVVKKw1u;sĉ<@ooo,gsfi'feL#jʭ(DN 2vE3`  QxB6>ryER86ofagT&3 U nBe\_\5RKSf(jGz/-[?;Ginn.mBmNOO_`ٳW\vZZuKi]ڇ5jE]dYVOOի_~_) fϞ`SO=ALdIMM)++۸qcNNۏk,>lĈ4HpqM6޽}ҤIgqƌ30v/yH$\r͚54 AsQQс{BMRS%۽{ÇkFGnݺ;㦛ni82î|{>}zaaaKK[oO8p  7|scƌ馛.bL==h̘1K.]fd % EEE=XCC~oϞ=~R}_'ܘ&9E8X|ú+/Šq&7!O49B*l&,w3[ qޥT;fIhif!aPcVPۅ8R[pȐ!eees48p\锔-fBz$&''.NJ/==}ܸq&Lo߾ck7dE-6755mذbŋϜ9bqoT!H$2w܆1c-T{{;Fyvݻn:2C0 mX8XCK Q; n@(2oo :a_ |1 6 4u:k$vfX{2@D@CMm$l3BԈT" ^TгQ̔BT}aE@8gl$`[3Ġ'Eaf&~Oetift :F"ꤤb ڮdض5222=LOORs0kaRSS#Gv<2226os.Rx{tTLNNϧM! (~R/GLPh`uDayMy+=˄=642q7dx=f)Y KgcG@݂Y! NW'f6rBԌ?6%W!`i  &bar9`I+uPJCN0! (Fl5\L&''OAAywnD" ͛1cƳ>w/%'':t0󎚉 ##c֭G:Sz%$ ɳ9!qC#4afs궠Cf?.`߬|R\ƺ ⟖sErbPbk8Rñ0n%á J`p+`-⇋JMcqs3\wOCZT_ rW4Td'rv2^\1c`pt~+??ꫯVJ544444twwSlklU;h]WW󚏶mN۔W^yGI'7i>;w%K#,ˊFesd`g`i MIG%32gb2E_N@HlYPia]RМDu,^b.9o`U9b ?#8md;GVJxLgx}N(kä<`FN_ tcEksss)п^zС]vݔ/>|>_cccKK ]hz#5)G}4~o}[Fm޲N8aĈHO>ٸqc w~0D #6̴||xXEp_TTT[[˫tˆIY.|º s5Пxf|!+6N, 04q\?IQ= P `gWe,whb,ctrQE7buƯܰ%9\ S*4A-Y1eT)0[hhfv]eee+XkW__O̜9-+f ))[жmwɓ'wvvrի;::233iଳZz`n1!CO.--b(v;,h4FupI,}퐊M8fOg SA1%Jmb [Y. Jwf+L.|h4J!t,p[{( +1 i[ƐaY#Q}D.>؅|SZf bcCU1̂J3%Kwih/>1i9˲N=T CZJI,?SG}Ғ`[܂;vdgg斗IIIxf@)yW냹ov40͓^BNFsrr@oooII ݡNfL)z)< %dYV,>|e]NO0u#Gx~%:ӑU|j۶<2)=mX=^oqRc@`S<h9oa`i8Iq/i11E<s]*G]%<[7҆wv+0S QV-54Z(*+8ቛxV[-f+v!b':thiiyv{mڴх)4!EAk&M>Rݙgx￿-''Hr Ï<Ȑ!C3¢ؾ}3VZ%lˆ)+T,CfuuutB!1w@ؤ'kÇvPn]W1r [f)$!99,Eۛp6 A1CupgӞY=Wՙ .Pe%b/=ptE \ +2 9D Bh pJ2d[ߞ̐Ģhzz̙3g͚E۷Ӎt]UUcXqq1^x VXꫯҝtnϛ7ovNqnƍ7oުUBYOp0ɲp8[#ov6~S8(X,̓E(Cf'Qbr(7X#q>\=sP`?gŕN|%X;w.c/3ggg|_zzzAAAQQQjjj$CYDO)߹elR65`m@D>UVqJ _@Th1OϺ:Ě`4ßfE`.}ס IDAT8l a4O#plr_yd"(Ŷ~6TV,7&c!0 a[Y4%d&yN>:(QU"-- /B=:Zrs;===)))999''笳Κ3gNrrr8ollaʭ+¼=O}ᔍ\`7_ =eQbv8D{v 33Xi6X)8p~=p3ȉ83E& +J^b?& "džPڀT+U8`V4{6f)!%o>? l(Plt 8:NII=  g*rۯe1Bb:;;cXggg^^.V+I1%84a(OS!c%-(Sx,YfH}RL5 U, >QM9i bZƤ=[/aṟ6Z(3Z138gLOԢ9܆pP"sV)B 9c6?!'* ˘\Kzl=qCXF4c[]1f08i"y1` LІOp?0H C&Ỉ:2JœgJR69DT!VnsB2C{T|F>Q¦0~4m^= h N5;fb0 PbpA=MV;_H^wuua:o-x h>g8E*[W\@S:f#Z>ۤ*{h'b畴[)D uƼ2h'=eAL/$BC zJqʍ>4S@L~`?|JǕ*)E<@?Ť@ m^jt;Hl"303v+2s9J2֑Ve Jޘ O \mfNgX2Lɳ>[1g~.bV,MpqmI,=(Clb)L[5Vʂa}@rr2G4A#g\sʭܦxb+/-#ja$n|Xke3o \Mե8C0QB̪^í7Rp"fV,`Ho8ʯb@r3ySr YAᇼ84?7DjjjVVHKKWx Vu;pv%(A :NR*m JP+>H%(A.%p-A JF \KPtQo%(A%p-A JF \KPtQo%(A%p-A JF \KPtQo%(A%p-A JF \KPtQo%(A%p-A JF \KPtQo%(A%} $+_.'d^,{lM\-AO41BZ)utLVJxW_}?s1:j͢8oRzڴi[lۮ򪯛D|III////)),G=pm۶m۶mݺfҤIV-Q-_ɓ.\x9PWRO?vX3JcǾ_#Wim Z;|(1LVSSywEkjj9)R֑#Gz&DXzȑ#PE|>_AAOOIIVJuttY17cHR{m裏.Yi5Zx_ W^}]w)*\qr ;˖ep ---N-Ycݭ< 9ryx 8j [t7P " :(k JP7J&(A :(k JP7JZjڳ[YIENDB`fdroidserver-1.0.9/tests/repo/org.videolan.vlc/en-US/sevenInchScreenshots/screenshot21.png0000664000175000017500000010625313243530567031545 0ustar hanshans00000000000000PNG  IHDR6WsBITO IDATxy|ŝ?OUw=Ҍ}Z2؀@l.&l6&ln{r쓐@& ` p)|ȶdK>dY}>~%Klq 35m;o A. } |>TU1[#_[o 6l< B{=9O$[lpח g,ASeeW^z ݻlq_oܜoۄ[>Mпo%k_{W_ o{ĉm۶AUUsss{{{~cǎۍ7ޘzꖖuwym ڝwy]wT*n\^zW^? ='SK_R45,id3*++)uuu///?qGۗǟc,777Ϝ9lkB,v`:\u08wg?93ga^{?. [nrm޼9###33'5kn馱.,,TU sY|O|0=|T*uA3z ,8|,_?~-'?9zy ~JiEE-blWvnᦛnZbń;o؄̘1^>3Vu(pw}wTVVa΍7~ _[bم7BTU}7+**t] ]]]o|yyy^w۶m? <φ ~.l zsUU+VڵkTe.r~Ϟ=ӸVbq#ȏҏ|#M)AŮ]!>@ccﯮ6---]jUaaa$9d2~r3nx6NCə7o^,[|jI_lك>o߾}eeeu]a蘭e0(ٳgc$E#; }=Cw ?>88 ''gѢE_~ݻb&=ŋ9焐y7oذf˗755}߸qcQQQ4'>1s{].htI뮛ol1K/Oee]n_OX,@mnfsG vmf('D}{y3AgǏ߲e 3xN룩Ƙ$IRd @R:6!iӦ|+?o|o˖-w}i=+**}Ѯ^{m )v۪UKIRO81vu-^xls+444mڵDZZZ*bՅBlr[[[q7A.̞=;G"9SJO<~ pq#WOgZA."d;A=o١ 0 s$+ bvFoA>xƇnp.pIx # %BtAK 7. ]{m׻w%[uo7gA0@[u^~8'GiͿ.3FxviC~ -wù "|/<sd7mA zR }aㇸ2ҲIQ$it*7>Y-npW uIZOB ӌp@F`9@\|0 s 9$k0k19 »a\]&+?-.f77& HS,dorg κ@ŧŝX=)i'hɉΘ"2o2g6DZP~{ t1Pm @Ax8^)5@:wIo}X0͜MǧddPٹSNz 0R)Sgn-0&SiN3!ևأk#{>_]TCpcz 5!Ё(^@iJ7Z߉$G<_d (T1vUdEN8'LY ԀC` 3З܃۾ѱkqh R#tb׷#nļÕ5x|/xvΟbwL4A;Gu rf~$ s ?G DZkAeHL<se82%I8_#ٗg# CL(`TÐ4.6)s-AOz?/Y(Yys rw^@5K0 *6i׏ȑ_~L; jwŏv!d_G0tСBt!4&`Id3@) QL/tQCvٽj=8}?w@HsO2[}sP 6}'Дy3@ɭ Tow'o/рYw"ԇ H.;܊ OUțhx6;l9pYԮŠO "Y,p OɸiiHK[A6Ig)*W4Ac}7t1 lx˧ w,b$xt O sQ~7?ȼKPې {#>^w.Z % м?}WA&dVꐟb\ia\}AX`76Yzei`@>Em|92h4 sΙ t2RnYaɌ|@}$o.- \ ,"vR,V3#һ{gt޿ vH]! g1@>yAK A." \"D@AD.p]! %BtAK  ||=DhjOʄNȹ';IdƷ-x&?hMKt>fw.H.^&UvAd$;$;$$@vBvnJNR@l : L#@k.&\IrznP5畔(d,$ d'ȅ'WMe  !`dkm"%ွ>UAdH/`s#ԏX0Z:;™ B0 [,2tݍ(n ?w>F2W|8j̻?uPUDG_pzѲ3W@d z'qVc+<-.{X1WD ڗJF7_P[ˮYy CqHU^ϋ┟~Pgvظ@i^ﯾ`Pt.qb\>B"cs5Yyj$4k' tA"#Du!,Y ļ; 0P0TBo<>BK(ʗ g89pi9SdR {zfI"8 A=oC q8 }b*C*o% 8ݑntP 9 o>3\>83b+/{'Ӗܕí^™.7 <ȫn dvHv^x9m|]zЇg>Ak_2V esn9UCWJ[@6Tlߎï2PA?NDG5$+f, 2S0ЍBp#8H6HnA?"  VP{Chʼn}"¥}KoNV'f] n v:0sP !Ѓ s 9UG!Tcpp'fCW98  :0p LB$ =ӄU>ҡơ*= O[<2q6y ϛ˽W`$({tMzW_e$Z#dlF`GH=mڴ]_c;co-!5.+̀Ã* !>9`CB@Af |C1̽yI8x U*| YA n s .X B2ρH!d 0cȟ P TIAȏn\zS;̀DZ&n8ȹ<`JBD,=El$*8j䯮asy_%p{IK-ϟY\gI3t74IRQd_#%mKB~c3K:*V_=x4x9#-"Ŋ +P,8Q#( Jʮ;'Y yܔ̊ YW[uι81 (E0pivd 2o a @̊ZE!E!xJ`h }`6pc EN碳;$4H$@={#AtqI`t ]prLNO@b|U-zE 2/V#m'&S 2}hN>ohJYkHK2h6^%)H~ 2] :xC`EPA*g:H !B4h7Rqh*aXp{UK:VX  YB! Bf`u70@Z4+謃;mrKЍJc31 Vަ~BdLɝFOBG>z|0FG W8H4X*@ \(0@U1Hx'AaLu0&MEF{6mR!AD %BtAK00e֭6Y \Sd]vӕ&#$Q )0k`0nٙhDfz܎@,j,'?JXղɨjqU**/SbsZ/wAdur{]`tڹsC`(><JOKsv{n#::[p&d,Jwv)bկOcds;P"1Y@'`DKѨrux X^QdqI cO*̪TţIErQUzd TAu]ӴrcLUUS!Tj-Rjnqa恆!2EDeZ둎=/ OQ: j$KRn(EC!R4|8`錫o^*ΜYUU7G(gϞzMnT*5k,R]9YxjoιU)===jt:ovJ$If\$Iunsx& JѣG%I핕aȲ k.ϧi%B AxI_.D|bN{NbDV748 2|n+0̗ v[ZHsg3TWW/]n:~xccŋm6EQDL5iFb`(,޽{pp7ljjr:? '̟wu%4#7&UMLe¡Pt([D`0 4JyDW$<;Ir9fcv'|0,\s\*馛瞚]D"رcV\lٲ|36mX,wyW\zUVuttzw/YۺuwXAAANNNzzmfXzzzZ[[biv5הvtt !{J7E@w8i޴p(Xw*F"q*S*`jڮ _K fQyխW,XS]2>2Jec <13nZyNby?ϻn3{no vs< ΣM_-n=n{ҥtGѕ+W\.C#  l)j@ oFA4LXvxva/vves8.ש暟U.Pˑ[{#i,/?˄UDfƍ=mF97nLKK16mΝ;>|;v8tPyy믿^SS_o sp8 1 !oSO\2_UUUUUUu=L2Ƃ c| xٳgitSgkf5,),9=5w٥;+:[ܲͲ7LRi}?/Њƞ8eWq#E !d2 ȰDsp8ۻ,YbXdMMMeeeaa VuΜ9fc2FfFX,v. IDATСٳg|P(dZ)xrJ,K*:vXAAAqqq$1FBf3Syyyw9s2+ͺY8e f՜V 7C} W+Ur9>!!MOm=g,?8W4辆҂-qEd:, !f6f4s.Ie10̲EfۂyY8Zh^&[̣ѷF圛hnQhn˲lhļc {Ҧp8\UUe7OV9w<~#­=l l˒d[dE-Q"q~z.E08dV 3t6k8u8doQ6cL(3ZQ>[s09皦n [`&hx|Ƙ/я>!. so[8k?B;H !*,Ps0 ]gP.F 4KcS<Aceee5{d)Jޮ#.׀$Y9Pb>Gep 88fWuPpMlXV7{2lf:żi͓]#̾M W D"5N=TRKsrE%B @$B),7{Y1p0 $jwDG1\"HEEŬYF 1Rc?}e&͞achԬ}4w-Y12 c͔ҴE%!~?++KtA/`0t:N{ClvEuHeR(%眘qBE 39eYXi"j8?o(۷o߹s088XXX(9vWhά9Fa .(--d2YRRb>\n9KUU࠮'===[ַ~{ҥyy9#pq =4b:t jPI `RZRSjZJTUSSZRգT$Lh<&ñd4 CX(r:]탁??PJC磔^ZQmݺN^Gۿ?dzꖖt S__ؘsȑzպm6rرH$bVAxp322JJJqҔ !h2RŪK܀&qB J,I8D%J 隦k)9HM8:EƘf;yY^UUezWTT3K5͞YzzzGoo/缳SQ]Νi&m6Z2늢vD&]ѻH$8D'Ѱ?MPx( 2]cbQh}hJd v yf-Ul.[2-c,77̚5m``pHz8FE<Ommmss륔Q>|x`0##fnO:h"IGzzz$ijj✗Y,G_-pLV(IrDb4ce<bAsVŨD"Z5.BSIJ}Y]Y,#E(Gg3+ׯ7G񌖦I}i9c %I2Gn6b~Y mA([',w/eIB1CIs]3*}#%tJEJ$ReJ <OY)M1;O&,[H54ی^{hAg/Jf7\)*qJ\=mL((WOOH2"7qv!?{(œ&L7bͦo'5sNhA Sq5 ;zEe>]皡,TJ?65 ;ݩTMc` ǒ;i6}8 s΀sZ DaJ(EV,fR@-fKF2!E&q]3ɸ͂ =tMS5M}7HAs% \"D@ADLrx )pqrB){w> 4+kN]ɏA.".p]1EʅB5r`sfsNF2 }g* LjN O0-@(1Trz'>p{i|r Xԉ55AM)ᮺCSj0-Pk?;g`0:vq@5WZk M 5  1E%u,tǑВHik~ h< }aiRFϰQtۑ\$޿xȑ'f-6D 3CQB=3]y,tP'W[:8qʜ4=bI܄PnM;|$c[fW%wh*h"7<)GCptX|— 0uahN8 h8u%:@PUejZE!hc뚦M9J0CQ IUTXKiMgEJ+|liJm4L4NX݃-߽Lׄ(RSSsAM̙s 7R9s Ls8sm'$Ax|B(pɘK0د3k:I7-r)VǒO"NEZNCY Skz" 焐ڸqcIIIqq$I'Oܵka===_Eݹsg$1]mmm}}$I,=zt޽f7ӳsNUU:s \ mޣ>uxeqq۩tD{:_;D?W\0ӹFʟ`]@?!xGimm=vX}}?9OOOW'X,9'X 6 رcǎ'Odp8| E ;v*J z2mK2EEifdJK*r b]{ܴ}Kon~T½P7hPO\97"kIѨG?rrssgΜc}#?~<߾}u](JCCç?d2R\\$Ow(ȍ-X"|_fvV̊r{p ?w_1'O_>=@mP/q fF|.vca}#inn޲e<97,s%Iu<\$ι,999/3g Ø9sf{{bYhQaaE^H p" <~jonf&uS&P}졯|oՕ^Ɠ?-:{DVvx@iPzY2'˜b!wTѣ۶m/nݺxp""Es^RR2k,6~dD+?O Bw>tY%AtJ$KL=ʏ[_޾~$T\Lدz"BH8 "<--ѣW]umiiYzu{{ÇWZnpwmۗ/_JmVRRmX8?--СC˖- p") Yz ,ʖ/O!A)8C ?Y{;=yY&x'1ڽ@;I PXmrI^)K QJ.3c̫0(RM̼ !Dusvo>z <6ͦv(8PB1͙3g) 2=ݮ':;gUͫV{h+Cv?V)!tޛ =iСFI4y7t]WU6 Lؠ94m4nn< E坩mW9dI]d링t*aBM< JnXv_I' a0Ч,I_a=AsLuf eW"A+//t#EEn sr,`w`=I/_61O=Ϝ̭HY>}-*6IPj&R(gAv#H#&/sA.fx<>444~=tC1tI&rZ9nsj(o  ;!HYfL4 #;;6 ]63 Z[lX,ҭ[b۷\/fL+bZ'O644R۷Bg}1m6]Eڷo9 EsU^^>S:L#X 8P_7@Cni׫Oo:QR_?esE/ ߽6,E"* NϥiW_=44tȑF <Ouu_3fhޞH$̴$I]]]/fٳdDfΜ9wP(b֭[?G \ͣ%}n,Vk"7qI_} _lnFnna_9֍/1g(pqq>~EJmV^vڗ^z)Uy󺺺4M[ti{{3:t7 WnFAA>T*eND^ifhMj[le pɘYzQt: H's %Gv^5窢™{Ӄɤҧ>6oWk}X288$bJinn]cs xjkk<OUUU}}}ff !fɜEUU0c;pѣG͛gFfff+**Zxݻ48 \&)*Jލw@lb`REIabhkWOg:Jˎĕ94]KA&ul/-S9}ƄE}962z02pT/ p院8יPU-7Iqx;@ H2ojL)Qڙfc~O%N)6ëYh8ht>us3^^`~"Dip`eMKS ~xP5@QG4`.4D@%>n2^I/_^QQ?qxxokjj222, bEɾlN/ 7/7pvZe %7[\0kOs@ss&p*kЍL#2`|47IdXw}С7~_ P*F? 2&s@(jvayiwgX$FS9c_o5x6zB&z6L`SXid0a 1F)_s5k֬Z;w\~ӻ>)F>3z{^+۬6k[WʌteNFucIVuTuʸrͯbm;#=tsh$zC!>pR:00"33sںw+4JM |yiƘ$ISV@lD4evb8;kN'ޢ} O^~<843FwZ0fp,5ebeggfs. ?!N BUUUV|cIwH(e ]=28,#%s9zegfmݾ<&n/4a0OOK?oଣDcF` u0A:Ƙa3‚H"5YT9EZTVJH=9뺆V,ȗtnf9lGZ[ ':F&A&4 €+]=I9)O,ƛy`ȑoaYA폛wgK%B0O0XgM8ڂQ.BH"H&gOH4U(DcVlt+ [7m]x?7~{޽x^0F+ 5ҡ:UU-[vĉYfegg-Rs::{l33:1!DӴݻw'IEQ,YnޗD"o~VUU}A.B`0xb-*vWm9K RnH=.3;դj勖7僇 }]aY,fY{JRYR.y|Uչ - IDATt3ϐ@H$L2\VשzUp}k'zZkmJւ 2H@2ə=BHuXߏ|N^{O䷟gص뮳Zv2 /Kx`4=(mmmIIIL5M3Mo-))Yxqggg^%$$X,xv;o~p>vr)ybCǙJ2C6r9=B6wr:jraSo-ywο޲*A8 G P$\rMӮzEQZ[[{{{Aعs,ˢ(ر#o۶tڵ+#YaUUU麾gϞ@ ={ Ðec߾}#|`Qcǎ'CǓx)\H BRIsj'9ɵ}ErrMaѯNC \@֭ۘy5b$ 6%t]_hQ{{{ii0uT˵k׮ޱcnܸq…`02 >}7PU[n)))9sfrrrcc-,,x<@  mܸ.ل\H!` hkxA 隬X^:rQs<.ҙC]'8afttWnr릡1$I͛7\Ey޾>bzaa!XYf566]qH9jԨkѢE̐xmڴ={Kpp82ä^oJH^N7)&=)f4 R );>ya?i1ww8i[a-C[Au$/'QZBĉ,@ pq] x'X+[oZt-bf[[ѣGEQdbMپ};twaBH B!]CP___mmO?]QQn-kGEQQ5kְE$)//7 'r8_No}2ӏVc˾Ϳ @ǍvffMMGAnjRoaFt(J՚p]wN IRggᆱ(ƍ`ՑHDMƌꫯ666G]f_| ppnZvr]cG40TUmjjںuj-..nhhXzK/x!nz! ,())azCCÌ3~{0y`0tsʰ`A-MOOu}Ң<h'p J YP{W5rw|[G=l8k+++[noܱc{311+xGpz˖-[vٶJ\Ӵ_wlt:A B?pBB Lu];yd ذaÕW^zRRR4=pĉgΜYVVt:V%Kƍ}!;BN M)@`ʕ֯_z4Y l1cL:U$6Z}}};vXxj=tiiz<^.P___SSӥh _He@.ȷM5zݪ% K8v"`151_zG߸fryWq\xS]H`0ht]w8j&M ~dۣ(]Y3?0zN<)BZZ~1{w9o6N>} .dhtƌ<o /,ZHQ_~y޼y,۰e׍u4p2i~衇LlhhسgOo|h0 b~7[?Lv:>hjj*p> =Obbf#rʲ, ZU_OʂE{{|O -wu `#F ʙ A'x}Ysekfbi5^VV6}tM|>ٳQ̬fvwP(3LSSSAb_>(1G ;tPNN뚦7 p>PJG(]r?(r4e.$IJ:eY J 8 1A ?[k>q)ֿ|y^/!d*1uuu0qĴ4BHMMݻ.\DltG HIIA|UV\}՚Λ7/..b@[[[RR,ˑHcĉ:tW_)S$&&ӧOggg ?ӱ0z{{333 !MMM(677޽{ƌNRr,Kssѣ{zz.]Jnjjf۷ooii;%Ibb2zhD"gԨQ'OYd+άQ`3Ă <,<6g񱣄_W7tSBpQf2_^sB)eG9;Plr&g v62vlA?49c|)SXX(jjsh:mR՗}ZVQRJ&@V$I(Q7@PVbUe-Rc:cPIo);bGccЋfty͡uƎ.{p8S4MFȦ(RBzT3%k<;0 Y4 `@S,r0[?{קS|p(FAmrrrx=ς2qD~#Mڪ =D, UפAH QNHJJuJQDG¦EQs7GcΪ s_\5b#cϑ}YawqKD"qqqpT!$)úRA#$}}aM) ,5Unm0D #GjP{n0DQ\vM<9pnNMM|aÆX}Lfdh1dHp^YO8[K_n]]]]pIصki` X"?_C[oݺ5VL[,K| 9uTUUU`3B3!HvD#fMIq iGmOחlzTLJt% zw~B[zak+))a,0P(YrwwwccEfϞ]\\,bggg}}=vN:.DNQI )JaQ(T(>EX8qbԩǏwhevzz:`qcuzOOϜ9sy'$$8μ/55inxy! zzz-Ku%׷ϟ??v`l,&E X:e[[!|.lϹylX%%٨XIH RXfDUh;F{dW.";1v[g\͛UjHԭV;FrDĹ;$@D# {eY:U_Ep6&ocRHlfo12}$g2̙p8bY;O ޏ 'F'ĀUv0X*i3Bt&yP(5+5]͔U IM0t,Z^#A-Pb'FH&%/b60iiipҸ8 gAZEEEv(@4ـR @ 7BR">g9P>tF/C(4J(+6qp8` eSJEa/ \9cD>t|%8 9s; :p8 t0>8p>pp8/\9 0.Q00'4X9b(A(TI[II$ n_2p8czp^Lv£_ !p8ނH`YM@Dw'R;dr8'')\icƵ\9 €йEzYO /Ϙ̥牢z_ٿgk~bQ˭$ (p8<`#(PL({vIM+/8޻%Lk飢0#tL!0. @#exki`?:b `t:SSS{z<{g! =sXۺu?;w666nذbررc cf͚;w˗njjz~Ჲ#AxW9|rQn;zg_~W^yw߭i( IDATw؉pFɶ:,; ` 0 ,e?wI9eNd' („B B}Nθ?bGstBLErر~7pEQs8}}}w>}cyo}[7n4 #fdY<~Ç;::ƍ;gϾ{,YR]]}WN6-%%aҥW_}ѣӳ0ϣ>ZPPR__} htΫ[kvM7YV^rBE<5w*' `.s@"pmCC#@/VӇ϶(0 X4.uzsZU6Km6[4u89h4 oW^+eYʲ,i,lB]ׯ~޼yG޾}ĉ+**^z%ͤrEQvE0SAxKKK5M;!M~_jJJJFFPŬ/33s|SrBYlb2XԹ>J3e'z7^At`PƄp!]]]'O|7.\ZZZ׷e˖Sifnn#GMǎ+--MOO?zh{{}bQ***g̘ PJc[lKvXBH4=} gsߟ6{ld|ӧOo H"> sڶ ^jp R:ˡW(c=vc֕KaXz " [ȴ\C7ƚ~2#QJn'NhZw9o޼ɓ'3al \sn6mځt]׿jRRRii ƌBst\'ONJJ3fǽ^ŋv()))nr9И1cl2k֬(ϲw޹sfeeM4)??? :vu]׽^ojj*&|@D &usi~5ICdDQ__߅I]N}*<JchA?!5C~ X텞una0K_A`s,毸G5M^iR68+/S;ga-lBHh1yobc!KT7@=0Y pEo8߻d9č$q>sm @Rin-GM`Ls (dhF갳F:Bp8/Aĭ~sߧ@dr`.Z @ E|t#.{#b.Cm=،{䖜IoVS  @ࣵLi¸ .`dgg09 ŢV!un(:D/@>2uH5fMά7 գ/ē>2w= Pҷ47Y_F︆0KZHwGc^V1 *7P;|&}2p8B԰}^kܾ m4gW zZÆ=+n 9D@5LMy@0|wP?2MGJP8GE OfnnvoڴiӦM`F!c 1zl66els]k:ù< D~m ! jt< c _BuBi, `^A.\.:L rM7$*` _D\S@Ƥ|d_–$EB={,X`޼y%%%ax<0jkkDQ 'O B>?zLEQq^^^OO3Z6k BWŊTTTxޭ[۷B$IbWBGQQF`0*b9vXGGݻ٣,a?)@ bC1-nx_|nad2߁(> *pG9}Egy&M۟2gA`__pe1744(Juuu,c nݺeMƍt:}>n{>Ur\ SLIHH`'rAp8 0ڒ"w|ڥ`耇c$p!#.|Ic 5Fj ׋1z`XBb!aLNAF=eʔ竪b$6biookf^^^QQ}Qsd2!s+ *Fa4} 4uI# Ap-ra$JE^܄ICgޕٳgceYlN3++k,Ej:UUsssn*W^BE#Geee͚5㉋c[<$IGel6رc'OaCD67 d҃WU]pĸV|{>MG3O f <' SU>uw5/8; m+90)I/ S0b5Ί&JY,_#h!̮3og39&~e?׬#˿b66 v:t82p8Jl%ϷtG̛aׯuyhlvC(ikagl(G]YC:p> dQϧ0P. +6}`@!7P㌋j!$HG9Sd@~u Ζ bD p8/ $mRu#7ُZ(b1/C}= M{ =9ʀB_3!EP8 ,!(Ž N0WO([68ЁyZy3ρ!90m}%=#{$xCY蔂Bm坠Cp8U7v1շs@gohWR&,|P p8_x0BN{ջm &ԍ+U P>Kp.3$&L-x< &4'P5bSC ,Ut'FE) Oy`ԨlEKC :!Pr8%@m55Īo_HN(8AZF9siPٙ~RdBBvkq2G&8c!.\9瓃{|pg@Rbt[iD4Ĩˣ:g c,r j\9Sz$A  -L ,)V͑rT"K0.eibp8_f(7(kQg͏PE Kp&p8Na-pqX[t&3~Xm0+c~@'kp8: :+0BS`M#ii(H$1p80"A #,90#džNFӤ4BЇj- l ֞⒉5-BGRbF b;L1QdQDEZUns8 Dl9NSQᴹ\ qCU xANj h#T 6o4L{ʨkBBm ԑw=;+ϝ} aK\/!pc#{}abAm[|QJ !~_3NEp.y‘Hc9yP /WWquu+**Z#" D:0Bc2FH D z(%EZ@u @I7λB8iD(t#^QSj*r ï$޽jwy:?ZGj ۱`%'!t=7O\>z\VHᘠ~]֬>RN8EP(h0q  ^Ւ 5K?i@ ( 뿇L_X2B!],~VE 1< ?$:`8gr8Hg4nL.I3b3"Cp8p8/g n f$g0H{)dxRgq# B( "Q4! T k!MDqD@ B)!NDIMSpD3t lu}Ȫ/ӿ`ˀC0 CLʿ\h~muhr8Χ9.Mm )p%"3Q=Vw:8j p@H7u{/{#@G{챜3C@L%IӟT]]m=3k,@ŠB0L `P(6p(m?TUXWQ, +̚gs%%'+#ct~rX0 mmm~!RUUwbV8E׿~_u}GYI7lP^^.IRUUՉ'֯_xbUV ƺoذa߾}aXb/w-bWWתUA8zhIIIgg'ȑ#_,IW^cuZ<{] | ===l1P({eOp8d[ǝ>q&kZ^I}ך._޽ q`k6ib<>Vٞz~)E }'Nx<@ }[nemIIu](JZZZfffgg端yh40;=zCIIIWW?~~]F4_bwj!DeBH[[ۓO>/677DZcdYB(kn޼p|ߎD",\QjӦMjXss[oO>iO?DW\yisY(E$ |*VS޾섂7]=}w-YL\ثy#ݝqIٮ1}PO?Bm۶WQQ!BAA7կ~Hym67|w(R__wvAvEn+gjiiF===cǎ3gNFFFvv9sۻN:Eiii?~}ݗ@)0aB^^^VVVqqeˮz`;v,[l&%%QJeY-'[xqjj*!_w8'N]`h4&%%NKK}P7ͻ{^~eAկ… /_Cki$&&(z衇k&##=[R^^=nؾ}IV3~op>W D@yN,@(Xed$)(?7>>vggg?SO b4M"I҆3tbū*?x{x4+hUx̿Wm]cm6 V5TUe(%55~/Zh̘1)))[{{$IɡP90+E|̈VUn`SRR#554;40Z[[].W\\\0TU5Tf'$$|Xc8VU=-u]We͝7YV].Η`M8ӨM@3!񠰛S@ $Ku]w.w͏=O~a}`A!-:tؘtD%sgefb5hl^x5{yacBR"RInDYYYIIIl'OdPJ322 !LX VXRt:.hFFF~`4iii,h2''rBVk&$$8N]].ѣe#CUն={,Y!dff\.ΗD5ېS|. J JTXЉЩ`FOQFktwlu>|?ٲmsWͥg-@rr@L 3IDATuՕWS5[fRY`\vLψu[u;ŎN<^gu}Vl󛦙O_|Ak45|Q5Bi0{6\̻\;0Z y}R]W'ϭ[=NSpv|RaJ{ZydE>2#_iCwD8? Lf=w jϢq&~/BpV2a  B>P7jʎ-Mv7Suȇ;'b(;-'9 o$pj {aǒGEYQ!C#LӴ![ʬ ˲Vڵk R 2b)e0k,<兿]&:GGCmF'?5i?Hsl==}qqh D*bEQ%5MOO A|ᅅH$L&۷(EQLFR566Zt:Dduup8H$zJR(2LV{^ray87}q$^| 0e2١Cߖ2HN>@QT0V]glnO|rbjY%]u)FU/bimm5n{mml6KRa4ӧOvNfDkZN755%Z-ETFQ\nz}((j555HEb"|(uEZxcH$>e &u ۮ);{?mՆI*vnVa߯Urf9Ig3gvȑo#"aEH_lר}͜| N@5[roٳcǎk/U`Ź ȽC|36_Ⱥ?3%^jeU\t ޝa 7'?̖ll09GbCEtpfՒJ** U:JjnnZ===,˺\ɥJUvib„ j;wnnn͛2HjxraFBvq2Mbٳg z0ĉTʕ+EP b$Iz^2iii9xM|>{t޹sgwwd ###@@8d2$;ҫH&Nn:uP!V[UQ$i'af۟?~T*%XxeR4ѣGK<66666 իWkkk ]vyܹqW__T*N'?NUzqp)ϟw8w 8m E,[5G/]T޽{)>PpB^xj~g癙 @TJtK$5?~`^3gjkkh4|>Be9RŸ |^VVVVVVr]]][l}9JAU={ C80ǫcEQR988(JևeٖI&dR ,:::rO(fǏߺu:=Oggg/AQvGE%`0 v{n Z?Ԣ6rIENDB`fdroidserver-1.0.9/tests/repo/org.videolan.vlc/en-US/sevenInchScreenshots/screenshot19.png0000664000175000017500000004075413243530567031557 0ustar hanshans00000000000000PNG  IHDR65fsBITO IDATxyxTy?mf4hw Z$@lc/Im'n6^i~I۩44m4qj1 A7$@bhA+5Fr H0!;wG{}_B!Lt @ @~R`BQ4@ ~iHa@)(WE;Ե\Z:u,tS,Bc,7F2 >~^z%m(@\dC|F: ç[pW}|H"P }ÿ乘k H-xPp#  !l{0~E_ v-,!s u>y>_t&dxK a\ejϗWAkJ!k1+o~ڪ`Uyep z v|\#߁&Ƚ җ>!(@tEpeHEdOw{Y8i Q 5 7Rc%|t%nS<un  x^LG;2{t!4 ?`CE[>UQ3g j, ]^|pV|f-MPU :O~%W PPH)SPR#I0\ İ۠ X $PzAS: ԃT)ޔ !yƦ/eLXq! 3zu>;2Bhl*ЈEچb+eR7(q ëqtox WЮ3)epFp2/ }({82G(ФWOmO_֧^ Ҹ,O~0o'9"wL>i_-`k@ PT V Įm @j{:K`m(nsU7o_ Mv {_{;OP[x_#osEG2{<,WRu @0Q.󿁘U T4y40-@ X:h ;^HV82,78}Mo Ő "@v`~}?B%pWBOZWzab]6Qc:WAHw)С   ջ|~ ]B޽ >x a]>p`2߃ȹj#8 019@1X3`KqPxZpȆC tw@AO%cQ {Nx4qж~:vs@́M-4Ao@N΅πh(Ix7+Ahi07,X ^'_Pwf? v} Rᛕpuh; ۿ tv?B/&S a`=/Fk ' wA^]4Ÿ C3Y !"_a 4  ~5z= *ö'.@8. J^xqa/ cʀU?c߻/!tc@j_)˹}P}*TpVRTu>u_%YwyAh^OW? I3=zZaAAx}qTê"'8?t;Bh8{̫‰QnHNa+k4Q93+KHkG 0`r>~ʔ)˗/444,Xf?~tgeeק:w^պ`tJikkd*//4Y[[[듓u]$oEСCN>=>>СC燆 [ݨ,TUUEUUUU@Ӵ *I(v7 ---+VXlYVVֲeV\ܼet5klݺVZU]]zqx뭷|ͅ FEE8pĉgϞӧX"++ɓV"'|+6mD)+Wܽ{joo_lٶmDQ={]/WQoTU5ͪ:FM?,~Jŋ9EJJJ8니(++[ngnnnf _|QUը̒;SdڴiSLEرcsERʮj5&!>i111.mE" sٳg ^\#&B-))f΃((f]Y/qF) &  f!(Vv요c󚚚>㶶e˖UTTŋnfx,**0` [TxI5vsNUU(999t]z+W,..fp8^/ ]t:mۖ`-[8wܼy0BQJFYFVk$IAP;88|#G8NV<< ?RXX8wW^y;8tl1cƌ34MϏpEEQ\.ŋ/\ߏ]TBc`v#bu^w999+W2eWX!BAAALL%%I/~aZy/..~뭷l6[JJJ[[[uuidYu]4]׻}ݢ"X~c|B( vZ^^>r 4x4Q[[c2Y_(SJԤ(ܹsN(Y JiTTC=(zG_ݐ!(&i…_kmmmmmm!mmmj6771A׿mhzzzII(DZ+`2AdYE)(( Eqɒ%}}}7G']׻bcc|G(5my~``yCY^͍jf-p!4gԩSv۰ <^SUn;yd{r rBBBP-b7 !466ZXX8ri؈̿#B$Fil㝘hiyL.Э! B(`! B(`! B(`! B(`!ͨB/UUBq\KK'|']d2G+1t!8ndwQm޼51][ZZ֮]{?4..b/2W·_b5 Ճ~3[1!!F5V8\E__XGJ(7nqimmMMMeY>ښl0z{{{zzػndeyYpr:;;%IJLLd)V5,, B,˭jA:oM4UUYwA85k!d2n.wޑ$W^a9OB[l1Lj{{8{7$I|׌FK^~吐˗/<ܹ;v8}tww7;7(aѢEgOӴ\A\.WLL5kVtttIIh 8X~}TTԆ t]?rK/TVV6geZxć~RZ]]=}tC={vIIIXX!l6gdddee999f7ވ Zk}>ZYY9X))rpp0%%ndff1Pu]$UU$I:{lxxxiidzgNUUmjjjhhzؑ'JiX&fsݔRY].WHHȌ3چ5Rꫯ DGG>|xݺuV߷=n߷o_AA󭭭C=Įau]7L!!!gݺux1J-Z4=BC|8&cw#+`k;ؗ7n غE .,\PӴd^owwnxgϞgϞE N:RZ__o4Ffknn kllljj-,,NLL4 Νc)Il})r3gf kF4mK< /.Xkܸ֕q#^vfeevu}ʔ)ymgoAX4ubUX$Vҿ{/h+^2,jٞBzG֕F?*kQjkkX aoy9:|}}}cc|cMӼ^;?~\۷ ^UUrӧO pٳ}Ǐg+._\SS9sK-!n]g\\ܰ-0>{zM˗ҵ˹1477XZZq˗VZjժ͛7˲y}-][x !\;ySDQ-**2L,8zoEQ$?퍍={vΝF… <_pa&  q\RRҰb0|,sOoo/ki:]ѣN3t]߾}{TTTbb" ]**b6m6 {ikk8 gYt]g{rаdɒ .Bl6[zz f֭;uTJJJBB,ebBBB$I!X"4pv#w_vPVR@000s!DeEQdM$x"""TUe}4o"f0tyϷ'-en/!4'N充8-*EQX>7y &v4M$I$EQ؉}&÷'BARj2͛g2Ƶ~jccGX,ػ!4^gxñE7BFuހGB7.[E5P\C5P\C5P\C5P\CQ7`U1|e{,^{Ǐo$I^x݄Hm6ɴiӦW_}u```Ν&mmmM !4VWpX󡺮'$$DGGϘ1#---,,0''W{$֮]rVG2ߔw}u9s˿/700ԔE+BcuWIg\SUuܹgzQQQsqF1%%e!8N*rxxx__M&Xz ㉉e9)))44ws!!DQF3l5VBv{ZZi u\(F1!!AQQٽ3,geeuvvDFF^xd2uww!sg/---^UUU`4nhiZnn+++ޅ nڴRz:uRx瞭[H IDAT yЂUUYB(zҥ4vSgؔh~V <df(dDZE(:Y!4ϟ֒*p p6#zVVփ>8} ,p7˨Aw#O!nQaf!nQ!l0Bs !l0Bs !l0Bs !l0Bs !l0BfxE*O#n sgڵ=+_Wbcc!& JKK5kVQQщ'X=՚;00fff&%%رboڴ୨ǫ RSSٞ{5 dan… |MsY_8"nQ(Ξ=h4tRM4MX,8CFBhMLLzmmmXtC=TTT&L&(Iqqqr0BdY.-->}lu,<[,򨨨X^__Z^^~fa"&##̚5wk*Nbx/--ذaCuuuWWi f944]/9wEW; XDDEEIt}YK*㺺TUu\ݔ)S444ьRn4}[[[M!… SRR:ڸ8*::Ο?Ŋaaaٷ~fYQ46--w3j?78Ȉ6t:7n8VUU8sLM*++Ey~eee.k…v=<<\愄a2Eeii)s`}Vñ`^ 9KJJ=(111555-bmZq[,++<:' (^_9 C<|!k#p7d ?2 a6F~{wH y vkފ1fffBhg]{q8|!49:Ea=P\C5P\C5P\CQyxWE 8tp@w?`/=@TYVU !45 #q!9#s#BFhCMs qs"Wp_B8*l6˲|O!0<(sB[D%mCLjyVRINW7GC}yyyJqqlՙEw ~Pj2i9da۶m XVu#hooe955|a$:BA)53gY{ĺ\JyBC8bMřC,mfo T}(j:\l<ϟ>}z֬Y6lp\$UTT pᢢ I>m۶ HtI'BuyxyHWr.h hTQa5BHwwwbbIMM:w(.\:sTUU͜9s͚5]]],x򁁁7J؜@W{4V)|,"8_cTrd]ԨNUUUHJbMKKeQ_SMu4]1[BFUMWu++._O C !txkdj:t8tmU5]V5FIr!4"NRSRTSi:4,IeȚ'nh܀)B6jDo B(`! B(`!u{8!Px7G8xz---7B/su]nrC2ܽgwjjjrrF5BR.@M">o'\:7?Go_O|l6sdIi#1aцKf:^#<֪B[P=K%XWxIBXDŠ*RBR?/Jk̒bcJvT=gWȓn4=92V\\4V-RӴa}X1pwe544̅288pwyollĉkx"$11?Ӌ,Y >]xb )*33|0{o'gLYyp{" /m/I޽{9kkkKOO-,,,++`yC=c{\z,cɲ,Ii!,,ٳ3g<}4q.]>VuppP+>>uݺuaaaIIIwuWbb"A((QJ=rb K8 sH92Ҝh MMW~*xz\frRz\\\s>kFIOO_r?,DEEm߾;8ydFFFHHH___gggdd(o|>(++EԩS)))IIIǎXz#| 222&&jFGGbqlNIIٹsg^^^ll`l}'ӦM!BGQSNl6Iq5㺻<7wZ{V "pR.2qy=Gwt~c{TTPз8(lr@4A4M8K)kcUUٚ ̀oVo>u'[>]fIkLOgBckRG$#?9ߵ)K)96Zx]MFd4BhRN=%y'~̾ŇOY̑0I  F+|ƞG5fev<Ϗ|0Wq\iii{5uuu 3fw޹;wUYYi0 !LLL `  4-22ŋ<?~O>ܻw+vڵsZÁˌ%>PGf_d <'M}3@V/*pˊ$ dz qSJW\yСiӦEEE $ÑmZ=OYYYff5kve283gNyyyYYܹs ! ǎlhhɉ,ҥK~6EQ)R:uT7::zٲe555ӦMõxX_iӦ<<s?m|`ݝ}. !>sK.痕6ͦ( kb0l,F#(rnnnxx8q۷o?rddY7f$ʊr3~FiDDs疾?NkA/B xÁ]BG~TK+SEBBGNBN'BhkW.\0zý^! h9`IHP\C5P\C5P\C5P\C5P\C5P\C5P\C5P\C5P\C5P\C5P\C}BhB p':P HkIr{*~ 4J%i<}%hrʮ\KG`6bxyPpMjN)5Q]N\/nذA 6\x1>>~O?;}tyyyyySZZZrss'mڴhIDATr/K/4ѧs}JKK~iߗO?tii_7 -۷o_jD&MjO=TMMMCCo2&ٳEQo~F9sLY]/Jhȥh\~׿8'JII399yB}N`Mjw}wiiܹs!rm>x_lo?zԺVZvM6>}eڵk˗/g[߿k׮=q\tty q>ƍ;;;oO\_~uuu/Du{SB!B!B!yȔFyIENDB`fdroidserver-1.0.9/tests/repo/org.videolan.vlc/en-US/sevenInchScreenshots/screenshot23.png0000664000175000017500000071176013243530567031554 0ustar hanshans00000000000000PNG  IHDR'65P)sBITO IDATxymYU}c̵>4QD`C4 ()᩼ƐEl"h{&D4jL{D-Rz:n4{5csn[ťsYk͵s4o|>37zɳ;;V͍#q 0;Gͧśnz0O~l|SgV{ ;;;7<䡷w:flX.ǷƇݸfF^kc rCcNUe$V-jV8@?oޏ@ d7#i##%$PP8uTkO">3cq#60;F!ˑDdfp3s#ˆ0BPIfFt8R٢eಐ-6H*;fe~@\8?<`}t+yt}eveK덼/;KUT`LʕVҬ5[Ьp>Xgco)$t g(p>vM(n@zð-`QtCqҋ@!jbT R e)$BB2hs÷6mII YP ^Bвih2JHeqPM F1w& 34A%v2 ;ˀaMh >Z[}*2P+H3jSLZzݧÔ nF(|ˉ3X~\{} ~ai3[| rXo0j~%VW~G C6Gpf[Ch]fjlcfJmβ.k3/&g hu5:$[((R*WU*?vմm&JH0$q,Zz]LP  d}( 3I  307)Q[2Rn@ I)N֪"BIsx"kMܷ#7I!qqPD5cPkB}cu#NËj/hFtl 8i {NOi\BquۏÏ&N;{=ezѫ?$'|dq$Ơ<3:ZEPܡ'b$X=g0\VFZB (%Z6Nb2zнz-hګ:[i9Swj]؏ eq e2E ֑ ':YH2PrJq!&7h:LY 65dC)nqDtT<_BݒI憡?S RRp7P? 4s mCe)N #$S=EX;3@w fq.¹%]|KOxC{v0!` ,MDS(73%+ ]HB̄gD Rj55O!S"`-3B20|Y[@&k"Bi<htќpNrU-a+Re6E`q6@0Ð2 BJ&`=8讣(Q0Mh-b if>LRmSČ`Gܝ0l ̀2mڔr))37;O%FR:JEXX)JHP15(U96;~Õ1.aNƢ l85n$u9eTWח'FA#[Ɖemխ0+e Mdc{ߩ^+ "F3T j(s1JE»`R`,hQsZ4B 3[QJZdAX 2u4@TiRrޝ`_*ƈz`+? qɹB㒏w s=I Y yb]Ι!Caef .C]zFVlc5W+e& 2*AK0; lQ$&2m0!x1j캘)py8FP[ejKPj6)y1 x(jM%l~B МYGFrY a(@W_ R^c,6FB`"A?2rJ b4it$3۲گ;:Ύ:-}[-0v賫ƑJ{IjƧ"JD@gh# GS[fb##hX(6N3Z/N& 03 TR S.@TB wKHN3F% ņɦvG8ہh$+8;h` Z:';e#%H4t*0B9 CLDsgXZR&0Zmղzn9˰V߭eSnΈ-rj)5VmjLPf*jZSI/#!XA](3bH8i9߽k6f&[NVSlYZ,bؑf&\_ Keo?:5g(kjmC)Ung˳{˽bwO0jXZlm(ʞH@:I(r}mJ 77٬ueb)2Z2dpZuϞ]@y#ldSʶNNZS$BBE8tNFv"8xH#D-s}i ,"jm 1(RFcqW̆a<#LǶ`'%#ִ=g\a#uPg sqa.,%k̹T#cbo: @# e`k8Im5AQ3f6,0)T#׊f(DO0oUP*o{w tgrS*F Hr hU&9%E$EF9%Ԫ֐a2N7sFX`R Nf M̥U88fn4N-# HaVZiJ(AÚԡ\[>A~ nT2SjBV U;;}b9A$˴ZBuSޏ]JaG_hK4SP6折D]M㲆h4&:if VgX᪌LA&pmgэ-3*٣iR U,CU݉\Ƈ^5w+6+62q( E$Q΅̡TJI CU䯤duAُ`$ N#!ڢjSds2!:@1}^[fBdF P%h@"cDLed@$ѳSmf"DJggfk2#YHeAr&.Q@ltrvonnG6#6fÔrc)! f=@RsB}kssH-#2kk{17/PܘmU%e02h2<QpggȘ٢XnaG_xSO{Mтn:}ߩݓ'OY.NR2=Ody\~?/spp7t_tJ ` &+ 0 fB 7Ws0Yr 3 ӄV3'D$ eaXǸƵ̌mL\ f@!@#ujSbF&="$VP (J Bra6Vld)4Lh5a9pV\aVPFww/]פ8U֫`a0iI`r=kZZk0DDvSFe;(69-y[nD5t;@,< !~+t\P^tEXMvWwYmg>@ce 2 B)6/[QI}N:ԙIgRkםtN~fYo޻n{O?|tי_yͷz=;T{G5'~vNS]䟝k G= u%#ss/dI;f_4vwYoyW|ӧJk W SZodsP|\z~>9+V f L1a'LZO *(a(mi^2}?ˎQf#}9m|W#ǮW_yMLu5`艪?[#ñ)>VW+e98z 8{_D:Ë7~FOf=ך&p%甘Zj!8 1ݑ4pG4k613rJP!*(1XADF(#`UgG$]yeВ) ĴNJb 3QhW:S굫eټTC DK): άͼ.&&0$(t^a7ZK 2b#Xe7=b:[.M[G)?u^VRg3$B"AVm笮2EϝVw1آVy8$3 #\s\>sqekYleU%Av\mw[E,ZA_]vCnbXV*r!Rk%YJ1wHANm5#ED,L- PbI Z%CXvs3Ϝ<'=>W5o ; )o}ȍ7ΆaO}g=nZ跿;n?OG9{|q꾓ǎ/k}?1ol6W o:;/һ_s{{3_K7|籏}^󎷌x7V>1_:Їo69~n=v:Cf|;ox;2TkV=w~0?ǮEVlllhM3?~%/cW]_}xGOѯ|Kַ|xӿ扟G}kKzϾ=˾O[[nyW>__/Z.OƳ'|͗y?Uvi'=/zyJׯ(!e媦'p\gV|}jϲNE t'k [)RQ!EKьldk,wePlDe; PpF p k d˩FNu)I[*̦h 2J I s:L+GLcTchEҊ+F B֟ )3kT}ޗ]szA_EO{/Ƿf $ X:K֠,=ZBm uo1;}t:t d'ޫQ˕ѡaYϳgk)s!ձ6e`s}jmjLgnBXN ÌVuef 2EǙDburֽWSƲrw2e}zyjіIi> +ܹnA @Odv"U'N|~|On{ϜcN(eܿ3gN?9oOolhf*i]szfDc6կ~7}?xZ.^c/;sp"O|;c=IO}6vPDd{IhSUm0J):|I` ,[\Fi1:( aYJNs&e2aDT)q(=`1٢gAM @l(3Qb `k2V(Q@d0!ZuDRC&E" l5#ÝY;Z (SM)fLuԓl:hP*{ɑ9!ۺImjMGLsq#GEsW/?Y_'_[[~e/ܤNucsC6ٺ?Mwcyv6D|ɗ~?W_}EYMO_ ?|ӿ9<&t@9A3zA7~{xC|3g 4=}Ǯ|n^_[_ƛiZf BtHsE.:.E.}{k8Y3/kpދ{ytɋ Emn6""EbG6-IS`0U%T!DSF03-&'3!0Y\gopY3a ) fR JvMVXM\YJjs|PhI T"`0AZi6/ M ,j͚rH!RU<DԻe a u42W/&){#mʜkr}coG|0}8^D{ {{c=v?jՅol txr9nsC] +0PCqxÅzitP"'A2UVuj`Ŝey(jbm7WuޜVLeEY)elR܋;iZYTa10 Sk2e2hBK%aÊ8lyp`B9s{n~;яx/ȏޭ_9uf𮷽q왛?~:rtj"}>q6?替[e5<}ϼ}u¶6|= ͌\,OMdlf ~6pb~Vmo 7{/{?Ͽ?_{/ogםu)8N좷jii_/|k~Wt|W}'^+a6xr?`!\9}*6v%M@>a3= }J&fb [1C""Ig6ԛ)d͊z@:iRb.2aRLIn̳'].L^VwݦH MK uTC/a12 k =rBhL7Z% kx huz^")zш05(o` z ]2G/0 ̐qxnWKᎻ>0%F<4x3C uj29-97;VV!WG $5P}As}-2ekA_sFrrܺr*fM\08{Dm6·^cfRRdj5Nu4+~p [/7+H;wy=X\WNѣwvW3g{?/:zZO>?}7 {~pםw&a<|+~'رco~n>5 h0ZfMas:$EXCny=?oy}ۭ%_GG^zӣM;Z8l`(Ƒt掏G5yG[9~Dͭ%A?}P3|:V >x'ϱcKw[;hᢈrOh]iU\Ͳ$=w#1U'u;bRVI)-dn^N&\2[]ΙO-Z*h=C3vuI+#e #LZf 8FYTVM1nL֖-H읠AJ^Ceݦ'é5 jł@nN˄R§뚃"d.1eJu]Ps7fp)i}MiM07PڑP2}Œnj9UMb[4"uXs?B.UoٯdZ1hъE0<:|>_,vVRQR&33gϜ8vb=9V]Lfdd$TdSJ.2(k(7}7ʟ;z5Ǐ`ѣGnmot淿u6IL5mDrɓFsU_̽imYreZ{;K-Z`ۘI` 1(a$1c˲@(,$!&3bllZjMp={G}}WJo8}{_~Gsǿk~5_u_{xxo73?7w}Ck!K$Y<1>s~ү_wַy7/7_LŊ}oosM7o?dS_&mڸK[9.Z_vٖ[C9}N"=Q#G[h*䜌y-@*[5y`KvGp]V-{"jR&`z޳ƞHHk@D T&#E(pۅpRۢ;s~/?{-//|-'~ykwYu]iO}S??/V_kWݳϕ:y_ 3 a^{:կ__afox饗ݽ[T?#~??|{_~5?ſ{?gw93ԺK>SQW^~ǿ{_˾䣿#}O%qt|o;ǥ|W=ڍ7WoXCWƲ@=Te)i/@1)@Y3-Ia;3Pqe^$X]ԄޣT ݏ6±_dG_TTi3H9UdL&"R4dFwDV(-OAYI =΅ ÑA 2b"[WRH_|xpm[z*LhfO| /=xǟ>k/vXD֮f/}@+qͧ}ϧ~=}|VvYxg}Z)'o=wr?gw_A3'?nZ{OO||ݯ3֭[~OOhz2@?yL]9\5xe ztU)Nڱ_Ehk|gJ݁N~&KT&3@othVUuqPLӗuWDmisc]"%yVf\V#cM5fŲ{7)K,4E̮Nv;qrqeR}we3@TL,@D`Hwaӟ> ~oo qABixDkꋧ~Qٵ9<~b*>a]HqSemS<,{#F;S&VTnҟT,mwܯmiks*(+&ÝpԳ&f-$ښ@5SFhILf&U9<135=~syږ _@=98'AƨObC Y֬ aC&,fO?7"k7O?{xFD)YNwq^88<|3^5}UÀޞ{ϧHv(eɟAy5RQtm}V)"O?+C^I&[^fL붔#xW>@Cٔ z| s 3).XUf }̙XXN`w,ҝ%DVr;т[#h  ɥ}`G0 j"d uUEG!*TG4G bhÈMV$4!Б%;ͣH8mQs^2xd) ڋX'wiMH,{{l=P:PLBAr?$#̈T#f:E!X=Wrȶ=ZxW 帨HwSzطfǺfBȐRlisgo}gS:]~Z? H#LUͤ z3L։`7x48*dJyyMS^M=V`*\TJOE")6֤dlٚ 7\H0tOGw]~Ƴ!N7yw!]j5r|uRF)TM`z6*%[>`>|v RUeM,!zbJXIٔ4,&a҈d#&g] aoV $y[׎@J"ULJE6-%euTu2',e '&T1.Tk?_Wk=q ۈ 9=s @UГAC)2LtVGܞ6?c#&4&x׏(#ɬ _ۖ-BX-Ŋ+1M<?[RHOx},ᡦ1)A1Cwla3CGl~ېp$#LIl{웯˪׎Jx(ZsS̹K "z&˧#+IO,w:ک0N S-DLTKIP. EzYj[l$ ޳9 IDATZLP+¾1lI%*2a$֌iWw/藘ꍛO{/~(L-c73h< ~gMV5J8ؗ "PNjt0WS Ygbz# jJr G4xS6Mj(&`Ah"ѿ1%y-`fܚ'eԶ">MTRrLf+UXMjAKs$B=TU%`*Ѹ.*b4 M^̿ZAV'tݼqOm*IXUIԊ3PEb2&fHXOjȁ]{A [ICMOU9B<ካuK)$^fiZ[K-U5M ߟNu*eh""RkgBTλyjRT9*[Lջt\t48JHh┱>JDv,ck=9ptSzpzq0 &'@5w CHI "zRDsAOՐ=?ppRXJanP( D`f'FGHG ~eܞ[bFKF ȵnMU˲ &W{{?2.Ck@Ć+ol懮\jtchɸz pAh)jFQdbHې =:>&L .zJd0u (UiwEPE,ͽ{^U@r5@3<4EKc┐,$̺\}Cb> nn$ rՅe_]ՍaJZ`rH lR" i""taǟ\wIlf7cNl+N2Mbݐ{w<D2Z}S&-UkjRgѧك_&Ts>srX>>218ѫfzFW.5[Z) r NNN̊b(qw3l$yyyT$NOƏq4M\>ܨg>DJd z5+6ޣ 8ՆzX2:Mm;ٖHjuJDdU憪QNebf**wV*bŦhem> I<SRUJyFbt8~wPթTlAZ$K.LyO0UqDN'pB y H8}&%Xaܨ2)6lsC6=Qi{xz, %dy !|8RYZMBhIz;A:QJ!@!B̻w璖 LD1Ià8HGҔKR$,Q?YFR{>< ( RThRuO~6h*Pa sEF a$"U3-"&RN5h1QF oVLL :wɤja{oA;QDeIA"'"j`5=>MXyֻ<L-g'8A.@BqIb,jS\- `zNZ'#M,D&eL*L+N 0J)ksS XA`GÊr0>"oA*YΈpHl7ѷn~V(buuv {K7BQx7QN`=[nȒ0 \-J5يl. NbiH1 qXD`?@ f%3iO SF"/e)3} ?P4I)*} ^"C( |lY+#1nM LM-*@6DN`;A~ G{>/uOY3:P{ .ȀV&Mhj$]/OLbeY;f*iB rIrRrl.n^7ZG>jBRb@1 Yjj6YT wxk6XtB20BzKdC fVL!pϺĖ4Si2S=b-ӋT A) W4pӓ[n[?g_r=}wG[b\m-L*T&Ҋt0bOS \-$ݎUpPMDU[b4kE5t3I{1 1IЍ=+K_BIxYP͑^{`\xy2yx-t}1o?t,z3Ck:vtH)!jwI[@ ~4jh-2h,SG뽁bDE ;! xVe e*h=g^DHK+:cyy} [Je DDa65ɐ"3f"[j5ޑw/i,P}tY:qHa,)Ip9??{^ |/WwA@ƟC5e.IpwSVzoV hx,}mg޾ʲҖ.)TZƕU#Sb3P,"DF-I|D3Z:`o " %ڽZCjGxWF&E5D1#Sj0{ 5ම>uv䗼~`_ݽ?}W/MҾۯ(/яDRv%tf vDZZ:$ylhG!. tZ̖ ";їh PU&-j&Ԉ8۟rpx} /.si Ү;11zp]3c/@ }EƵKECfXe0u#Vbfti7ZA?:FH2)f`@DUM6Q U*STf8f}L((Lm遈-){a]dQ=T Bd6!at(PMDdƒN\Z Nax^0$jl*QjꪯSOM4Ow;Vы}]^D^|\5Jvƥ9"Q`$SM&@ڎI|h><S}D~R J6 pe%&T=`(T"0uQeDwCAwH}emI"Ku]=|Ӽlks0Q3B<`{6}̉Y4'opݏ?<g_l~#\|cуC;DD*Ӄna?ԸHJV%{"uZ@ZFg̨݃@U5֢# [*R̤(@,D-絑""h-)mIsfU* sYI]Y}nUxJy u  DT@?aE2F.6tnv?_I?_=oxL4|pedEgN  `h&]z[p_|b9찖 r=/# W'sʁ=ã=~iDޫH ;]C쭞D2΢ Jk[&m:uej Zkz`g2ZJ!]$ ޅGws){D¦Z "(JMfgl={xdC;k{JI⬻(^o//h7!"6"(P~ZFV,YI4$[H&B$Gjɲ6d@Y"on67saI4,un44+zx,sεGvYȗ<?ɐG>W8{®Kmuei`]{$>f:=ŠèpOƜz*jj($P QoHEqj3jQ T: :!!tE1ZXlGDfli@} PMd B dPV!43K92?H V< AƘH$ ug]7֥uwPH,k{{ӹHz'Mu5ӭz>RSފXPx~Y|b^J5 %ZtWʴ_xl03=sFΰ1,GΰCVNZ~/~Ww'>VʘY$uEV-z;>>$B%JgD1Ha! <<:t{TpE:B`H QUמAL)wU]-e], Q…:.RIُx'clۗ[3zO?r[-r?YDExc O}멣y?/K"*%EDjmF(E//mݟo_k~+ܸqWi~j5c&j6?C`DnVJ2)Bx"ib}mZl]ك;^Iq|$2%Ch&' cf9$7o=RZ-#BBeYe<QU Qq6^oɍ[|:eE\ַ]uZܷw_#+H D`iYMX9yFt/[iDh(Xg]eY o$7+aBRh*EQ`({t5dv#Qt*@RRӷj! ˊ,aMor$H%9$h5C8ސA=#D%kӑ5\ՂUBdؚle0p- >@(IRY9wo,s)q8={9zkwgSݚ2= !z.6dppщOlr3cET̪֚hA¬x:K5Tjmi5*Zikͧ=LGx49[z9XN IDAT-t Qh(!hHTQh)2=xi1ͳT/B^n߼>;wNjyp,9Z_Q sQ@zt*VTLGLvPj5fd{2@9J)\SfZL-eokc7jԜ< ;]Ao=QU&DMmX瞮Ŗ;{8<Ŏh@w=~MGxFA7pq8uo/0}]>@ZJDkI&YK,B5:TUԊx<B}=D#-W0İ;G gR`EJEba&)ް;رI.zwP5Iv [gXBiYw ö3)DWMw U| 'J.) ElKG3;OC )[}@>6s+jE0{*\)_8ŰL;D#MDLA Z@+2ɠ2oD-3 ZL'2Opn]dQv~##Ex#b]QwZuF<Σ8(k;[ΖjyC[Ԋ㢷|qHtۭ`x}3R{X[ۈCa[iWO`v{d'2MifI(lt 8<ΓL\sQ[@!k'w bTfVk(fn,i`ιj9 oDh!I;$P^Pm2 lۘJpiiJɬUYPSd!=q7p5孍BG^шb~շ:ThbRYu N$֢Gir+fIm{qI_6znr"FںD?9q-$MS]ET̻RR{6Dr+roa˾H ;42󫍍:4 "eI+C%J)T35+LU T B ͯx`6] =أ-]u~Ss{{sX?_-RLf:;I \lta+%R[)!Plh :WռlLS!"]ٲM蔒i~"9&Py ӓE9O8v=wkTL& `SQ+:reeRN˺昻׻37;ROȨj=v;Ww83oVيEOEUN] 39ڗF ƳTX+5{-G, hC0m+My|]\+C$6X$3ic=UVgbUk${z[%5Nظ0eh;O!t@r,_'Z,o@w,Сuy۞1A B}&%\ڇ^CG9Kqx;ȗv̛ L{c|Ua}[A"KJЙv! UVCG_p~s!B8Н4 l1$JEEd jRD@f5Rj*3PB Z@s!PgZܽymWU's9%ĄQؠH} bآ~CDĎH Y*Z)ZZeTzL ^{=֜c}} ={Zkv[uAF.-\TC# [ij@:b( NppvUEzE*8cr jn*QMG̒5yE˻֖̃mgGul/4}х`w%R\ȳv5s'SnmH;V [ab $V82Ku^be.gZK"lgTaZ$%XR%VLdDњYN3euD<..}Pt}[T)o0osnQsiq:$\"ת0ZGᇅRRq;|Vtٚ)lړo+FzpK AC"lM354dv[LSѪ$╈Ibu O"ͪكus;^~gopwb($rN$v ˵[0֒0' bQf2/AT6|xQ) nXj*^x^L@*7$(5 ]F%evZ}|#o lFRL$ERqGgvsSr L!XT"#CfUÁsxPL PZfh9o}Z4 [`'rv)T:T]\S, F;joe\ ꪮ~nˡnq^lGPK2e!7^ANs_#)B̴)IuWs3>dfNq8\.At#tمo碊R5[2SN^I  |ŬZ)x<ԔFݙ\Hp:}&fN4P8%c{Nrg\oy7vpbbІ}\ooOӴԉF+Ze*0Xiyfa]t~ٺj*gDL%6cJ""bUݬ2ݠ^eF`N"Vvb4_eLѧs5VVN$ OBsU]R&TEVښPKe \X(uYZ)5AZO[U4Si -ehpfCN>YG8fً)HQ w6<$wF9 l½gig7hh">5T)X?-r2'2~ 7j<\ZBS<䆆iD9ZGKP`Ƃ DBLLfZt" ])BfP sD9ϻ"yObvB0iWA(”|9OǖQb,B{v NbZWT/{ysȬH.m_:&Ω˜9̫8V!I+;jqשӘΓk,LB)XG'N mg{웧N!t91~,0sURrc⽽U%"2qTjj8u99*Qސud>yY¶e29wӎ7ahߙHA^kD8IbhN")Y Dfk޶OaXcaYY'dmOwfZ@lD7J.&zbn0c  1ĹټemjT50f,O)a 8 D /MH{79)VE PCXslh}ӫӣpΙ܍Р߷fU$HyJ=U*ͅfoB -+̧pUhu5&@m0)lʟ-mFS07 Z9$G  {V'$)h<*MN_ sL/0ZRH@@"G>z]C,V:hmٟ{k7t{3j}l{ȳ$T S/ZKwNV5IW$"Z Ybޤڶ/۔ ;0p#ߨbkeH"BY?JN<^$?AppH"!םT\JJe 05+zV t}67-g>R*{HnfbREr:dhTwh|޾Qn?plJlt`av8L,VMaJYʨ^ܽjБS"2ήj 4~sb 2j3P(~Ք=IڌܬdeXCFRrżbz3u}Ino]nL&#B4/͡rs)(Tw=us]-8XH~ij,2BB vIǪ!j֌x*ANwfz 70Wx034 I&jnTWZl$yfos7ncH'bWl̜rԖUUiZh& /`{;VV|wUN,wż?5'B1s'|'Lpb+N#L&hXd hew m'o#6p՝]4DDTu{{Q1%)g2O}-Ek}G`UzmGZ$5K) cA83ZsdU97pP3 4ca3@@_;}r 7'̵nr&L$!j ;+SD< D$V`>A:fd/ی9ι[G,~o~l~w=o[ d5BS7E͵DZB D* 6P% UD\8i!YrvPf"7Ռ&i%^ Mޘ%4Խ XWkyFHA︟9@" f3g aa6ׁTܢ|CXͼZ8@\*7߯٨ҐN3-79naD,9S\ctnTQ+e,9>Z)Y@boo}4Z-9Iu rsj ѪޚFCۋ[#G[toUn8[v?.FC0C(#Eb%FF7 @Y׳D691e~LMؔ@"%!Qyi͛JE/Dp-2!v4k)awF˲V͈C3A6p&~u8zP u*ABUK3}D{DwM;Zy*҆X~DKg2%FM#& l9?z=QUK "^m-}SJNZtw9?:; FaST%"3%✓$$\19B̅s( 8<%gY N"HĈצuG>qwL=gl"iJjsmƭlrZͭ;uǁ ׆߷H2hL)U2!"zwqw7d.Am_˰mig8#'p33ƛX.$A,6#вUX m\n};QsJݡ>%KxN,`¨>ZQ' w6t;9g"BDմ{`!UvC\6LB,$[O{TZMr)SB\L!1jA4^uY@MPm{_h'kipm%Os 2X/d$y 3}*GѽF0U&{c`Px{Q^SRVS|F7q|Kmf&%ʪx:pr$,H\끡vӸIt,c.'0ZV|>_V~zgʙuYeq:;к$a 9QDhfba&6U݈"Rݻ"wIҠ6ZJƠk7qb{>Sp@L f٬ 84JU,Z`Z `3M)UMܬjժYD/H:M7C=T[> rl{Sfy~V-&TÉ8鈀LaD,@b&0>OW[ۺ@XO@4{7RjrHnޅV۟wh?;֡ 9c;Rn}5j٪*A :"%Us5.sHCF̔M& 9 ^m2qn'&ga-0ɜ0 w5 U 8$Q2wZL °1kesosIgJ d&x{IDa(jIyUHhGM~Yf[Zbk+Xڪ8YRZVu}_Ո(LD!9 ^SkgNG 'C<ݦiHם8syGYdhZWȋGu}߄Q; q"r2jVDzZrJE%x0o -w:Gun29:^28!NQ7[lfcHYrBÓH$k1! 6CM㶂]HuPM]3ի Nq(mlI&g~Sg[v6c$|0SQ-KPuU2cyUrHL qASߎΣ2H7;-1ƦzZԔ2 Sr;$kNaDwe= 2wu0YBu{2\yY>õx{u0-=uE폌iZɜD1$XN#I6!ѧmkQPAKD\P%T;3.#+;{^Wcc)(F$Ĥc[g=KS5i>;2r#q܃,w~&)Sa #LDլ ִۛc`UW_ һ]:A.'w%ŒW_=.KjT)I29w9uɛ=lqX{ݝ_z;DVugo)u=C; <מּO}"iȱX%PJY^כM;r[aX`6ΌXwµqT5BLmZk}PURXVc*XRk]*ȓc=ЕyG&.ky+_y|ݵ\S]-lm'}\ZKS-՘#Vɵr~ã3?8^k3?ϋ}啟sW˽b@_` b2捥{)cܽnw{|1-f4BM#gffz^c)ZF!s?+zi3f-P %,Ne=>yz8srh]0L<9㦵[7?_Lv>x}$9&<%I ILxVMW0IGVjèq2JJHHth! 9skmIF4}X{`nRLX: >Vƕ@P)<1r%SXu򵍻uq-j<)e$*Vk-ăPٙub,e90Ե> ;qUmoٶmlKnnU;6 O`(8b^b朳c7N tLJ?u{_sW$uڦEͬ'OU~{LZi¬ju])%uҋ^Wo{w@zl}nU$ꍠZNY J];z uu)!JM5&'ΉL]Bb'0qvʃ+7ETp˃KӓV5q|R E[u |?H&HE"E,h4 3 U7c39R`͢ !#\ԮDhi0L[Ҵ@ױ4/`u&7\}Ϸ̙SB.7„{,p#%k[աJYC-d-9jrΕ5c j6ݩWߖ~0W k['xtCfɫ7%qn5 xdžmmI 쉑!\f?u8A N`3Bt/OPWsJ2"V,7WsI©#WU-jj5Z >*ODfjN ubugrc砹0~+^yWv]#?|^r]o't ǯo=7'|%_w|>sRױfI#7~㟠fH ~~㯽_~ U\<˿a]wK^˧O™_Y>.pЇoO|~[7һ^\KY=E/ceWczluǿI'N׻q A|WO^[o?_Ͻ?E?=?_;nIo~˻;8}“wÕKD\"DXWY57s/TuS+!@Ȫ&I9wZkiNDw|L~ϟz;}{Xmf-#PG]JjN 'ɺBz@P:v1 Vs؞*Hp4IMcx8 stCۤ ΠZNUzؘ) k"%8S'3rs,4gIpSD84fp2i_ JbGhXK%umɽMGr%|FW{g'aRWDF3r(g0/4BLu%SJGxRb=kʩeOo^/!e,!ӑr'$fDM,FA|&s GS!J#:K%Rn?AgRJΩݝr5ZJYHZ'Cy1Nf(D\BIU56ծ)NZj]qk)-U5 $-PjP lj=._|[淾_7fZP} s.R7\G=A&27f>4~`)q~R?u]3j}?Y)>ۿMoW]󶷿'z_wH WL3:tY`j?ñcǎ=׿~ou띝˷}7?Q˿۔|oz%\zeW\ _#~o7}G<ݟg7^o35}^trw~Osb\ΩSgΜa=0V5P5xRDE, j= GF [ӷFJ^g6nfJ[}2~CQdIY\mtlFҵ~ww%Ji)X9QL(BBƊZ׵;K-¬]O)ЪeSV qTix2ju31LR@AJ2z->Y$T>020fU'IOڙD@ SZT8SSKu9_^| rW}ci`h*9uh4  ^!$*Se*ѼRø\0.ݽt};[^#ǎmݞ/F֝5-1q%,џKipWLR\OtD[}Nj-㨫r6u]7˝ Hb3 n^O!S^UkZSNC Ȥ$TuT8|al{{n'E?2V{:)u>;Cs-,)IΩ\܊`[×;[ƨzfo!TAZiah"0Ёk؆א}7-!W$)IJ) W[1"$ocnpO~SOn_]ԧonڅN{{C۞o|߻i>p7O9rz^_1/@$"Vk7"G3N: `6=+b0~ IL]-wkFl1bjo~w}/_gS$/rh /|[޼pƵp p]pN-n8Tt}qg|mO'>{_GOQ-2&,S /A7RN-с Tۣ8;_b`Lm&sbs/o j<$Hɳ{cK\cybL ;9e2"lEV!uWj) W"(%$NJuT Rm]dIz}o>?|O꓿|aγ_y]N7xTȉDrhP)zsG?||Y{Yןux[oz>q'؅;zqK3;|Eu߿x|^?я|kgD-? [Vތ-]?V9w_}?"zהү쥯mbޥ֪,Gܘ(%)mmmf}듢>%Ks`ۯ!>ѴDSԢMA t谻aā2RFGd(z쉎d{#*34Y`[RJsXh²T)!K2F-4I%U9EhPQ1dr|Sjc"b c 쨲3B-܃؃WBSS@D;JU݃@B{;qG[kM4m;;xC >r/}?tY[zA-AJeTw`z޴Nt2j^/RJłUՐN,eERsf9k[V93D;Q[2ss jiRLC7~Yg9>}mwwoa&"g}7;,|ȱb j(UY/۟R!*Df.qKJZusiO)]k_08Yޟ},1 οKOozWg~k!{~r}OgR_ x3oP\~28huF^M7f{'N5{gf_VVeZ${c*8 j]~С,"1b'noΆ11G5Wuk{IBq0$quP3[l\TRAko3 +Hը8kr@򓲚Z KmjepΩh2ȟ+6Pt^x`Gl 贴 (˸i<]{*̌ZPŷ =iZ歴4pt8hH!E~/4DdGBpܺ~LPo(zeLHkTRfbƩb( g`de3(٘ ƪHDiXglwūBVT.{># uLSpiX]prt{{_pg;rּﺜ7dܼԪf",N8l>3ID@[|1ﻭb~x{vhk6$תuwwWW-؍6Q)423Atھ Ow^W꿼W_җx7>I1._?Ayȃ>Kr^z/~}>ozgsp]b,U9ͺٜ9Z͂ w9j𾈘h1[H#3bxoZug1G IDATv|0j$fk_oy/W^w?>]nvϜ~Su]wOe^r ^SN.Wگ=e_Pgq@f)/מ8'a_G>yvV-ֱ8i*'>>̈́$RΤ%I[õK.$I+weYVf<:2K64cfPàKEa.uIR:3I Xd-2b2ZtLO,x$͖6LpBzf 8hhCYzGSԐH 9#%}C=[B%EPS*ܥ~Auѽ  N (U.t ?]{һ.qyfbu n1K}uc+ؑ#GmQu}{{bFU؝ݝY1 $M֜ ʮŬ_INLR~:P-XðփUUt]yNZ#[QUGSЖ5S 9a|xرWګ~ũy/9s[)O>iOAw?~?S7vqHTL!Maj$֫3OItݝݝC[ٴV>ǯ{c%W]3we/f w]^>}R:cٟ|?~_?~ {u/zU OWG/2_W;oz~w: O|"oawwԩS 8.{ /t;O{ /Gz~6F0Yu ﻮﺾY9 TC:8t=7=o76Mon\M Dʞ}St.IoL j5+nwx6)U#mcm˲1\ksν}{``;r( H( "J XQ̏!|ۀ v!8nGUW{k9c}ޫmuk9c¬G " KXx۰RbRJLI@P$N9 Twn,*Yt')$OG: -P27!R (M ~G!CuԠ6eܨ,6DC NlZbM{5 Xy36&ԭ1Pet'vdVJ> q`u]FwT7z{,V3;N"reW8u:I{q||kT#e}:omPχC 7oK.>{vW8ɋ7Q}߽s~棏=_yuJqYWoG<؃w]^ww޾8wx}}VOmnK&wk=IqZJ֜5;n_ˋ+3Pug>ɷ޲ZH |?Ou{}'b'>v޽ǟSeg+%ŝ2ͭqiTPFEO%UEM:nÇxxZ>~½_[˲w{FD[Ͽe_ZJyeN{ofy*7/Ri9-ˋ׮u{|w>rO_ؕZy{w?}v^s矽w< ơ_o.D*pqg{>ڨ>(H|?#ٰȂ/'LrTLySEDf?wwx 3#Q=ŬTR.(o*\;ԝi^Yh}T+zaVZZPgXt7!4*dYgbM:"9Ͳu;cfLL9atKSHw]ڨh4*/DTy%# 3 U`e] 9TQ-EԔ`цT(6Q0DnHSP )_7?ǿb@L-ˮuЇר($}R˔tҙ hp=uCh,BW?|[GUgn^|VDe|mz L WQЗwvܽVlͫ\hV'Y[f5kG - ?1I`\k zO0[,r`DZ_afK1+XײLRJ-EK)@o0h;#/`|!2DEp8+By_{Ib&SyƛZ)Ac&tt8L@vŕwG0c_ \.>?;[of2iJ݊ɾ=TGx 7I=DquZ,z{ZץX[׷y_xtNwݽ3c$#wbrxE>Ox =n7J/G_nROp&TsYr )9x拝 CBZPpTx +rqQ!$=$R]"i}>{wy_.dXU@Tv2W)Kx0Foԥ=ڤGްa4CGƹ6;<- Jҋ)?>p-\ƦC|ܞ/jEͰ([д%aM)!(>8 9JD @N_ "~WՏWU% JmD5(VY*ʡhΐ.2b "M#n^?zqaٺQvӻ SN5U4/8'{ /(B<9DUٖP9P-kPEoS)FA~j*t0QK.=-V~ޮ+nUvsi.>{e2MUҒ9UKI 70ޣئZh E:l4) Tfٌak:{ S-f:e*zҙ 2HV8EDqZT֒Ҳ:ؤzNPTeʲ.nj,Mumkk*~Rk RL?{R; S*D"=L4TU*IKEIBDy˘LY1XtLh t>hb]6A'\4r;[) u,pJKl\Hm7\d0XR +A$zæPYa %)3Hlx^ֹK-:8SV}?ׁg`;Z4.E<»GOe^EAciœ{&t !GAQQ DeH%LL!"0o6:Mc\g|q Aɔ,9\13NUTI1-=g۲]>!j Zn@lvi 4PN!7 s(鐝h:OnTXP/i}Q?tSx>Ḷ;"bÕfb34n~'Ms}e#CiRdVB6ݮXM:ݬ|zYX;Z\{;3N9E۲ި/nnwaJ5zLB ;UY6͊AhIbfS5ASS~8Sg =5IEiY }.蠲PO&zWU͑jwkG1bW1Gb(AH3HXQH=b)XL4IˬU[&.y y[o̦#J-T)㇪:pGxϭX)ŦbsuJΘbO _}I r;8yyG&A/^\a.~+T?+-!bf ;G TiǑDAwIuK'RueVS\e:7ҍ0*@Ql.Z2Iίt'AYƞrz n4gL=B"b"M, O68c ںL鳭&IVÀd@T،?KqH˘jU+5GH8[b#ٌ|"Ze*TtHr7R#s4D+H'@tNu(T*I[$F~OzPzGDxBitLBtZ <;jdU()&VPwrѕZE*LjX)ZlX_ H%ZxE A\ J>"МRF$tUTS 9)EL([rsq m0EyH ѣ77ykZ9H68mIZDE5J4"4&U|YDfk-Я㺶^AC{mmb#P4Mу;>SUizpyqa?M.Z[5cxv;t ]'鶗y'u*4B<`"۵:MNڛ.˩h-Ek;IH0(/+~}o_׭yk-$7տ]}_6!i0o͹k =j)j`>M;E(u^[3=Q:F:@%s6t$hBjFmεܝ RxZTl<+1Fqݜ\)@;$" "ֵE~Otjg,ݮJjj& Ӵj.?!'3㜉WPICSܜ䰇`ljIsOdi`-"g6o.‰W QJ*;<'ɊT_6ʾ̳6~0xxuFPU}N,<}inNQA ȕ"!9L|@FI_1iͽu2wI7%< 6'y9/Ns#6D6U,\<~}~ס<CKSc;e I ZU+iPeΈcOBLup5"4a C 7k>k'?i]Z3ISb3ɎxWϟ\ K>zj7u LHˍ8NmmǾ:A;[sOnkRTP.AkEN;R/Å9#NGi*"-b*݃QD[[o- ^ 7oL?=w?OB:M,0[{ouudz)5v7&Q,H.l IDAT !`@8<͆0x:sE'"C)~*hY9 \OFTq%~y}~jlu'V|[:@I f'f"`'*<}TC1!P͖!9 ;ʼn ĨCEPC!\K_.j:(Ueb4u-VR#rC>nnyoTCr  ͐ta [&OA*t IBP%9<\]OW츇B!lWVo4qcIp=vGFˉ֭u6 Ѡ"dhփJ8:LojKoQWJH!AuGD\) PPhz"/XGQeENTܣLSm+՗;UU.\.ͩ $p_wGx#{d _E˵`Zfw&e.sNt/ʕnjݲ w;woRJgAiC?w{iOey[??C?hj[_oا>5}Wfoj+:՛dc}%_K b%\Z33BzCߤujy5f@ie5ne0s zUqUSb4+G@(X:uYTL f4kJYzWR )U46bi"VS){$LRTTZcZop_Iq?rrO[LGrB*$/x i_bZj2(ז)=?إV+Vp)V *5C#5JRT+B/ϴ,:3PiaPh:uzi"TՄѡ$qo%ւ֤/12h}V:)(TI_i'PSԿZeTu%/Gַ/vfi= C"Eۇ*2~iɹA$!cplq!7Tѐ҄eޜ?1il>,jww^Z.j'|o޿w2ϫS;\c.b/'/z_9%3bFAg]N4J,QR9~ƽ悥C)S ;O E0pYn}`Zßx~73\N'_Wߚki_u_~obf&%ֻwv$*!Qi:pjr,:#z$Ej  H52hD@Xu,q-ΛDѽ~{lE EDĐU]֥M.WR o}7յuMs,3`DD)&RҖ5TGL`%c<"DK| |16G+/;_/86l#`:|. z`* GETPù0Sirygi mKJP) zCva1щ"tX@<ɞCZT^b`xgLl} Iz v}FtP@eLH8-Gع},|Mك_GW}@!"$nLWlZbcKTzO&A o_NC`pk)f(^νac!:pȐp]40a(93j 0Iln9$)?tx}}=OU<3]Mz˱'RHiotTn9^sYzpw䵫WÇ4rZ/9r{ޒۺ,+`l ռ O4L0A5@ -& t-**%E4>Gd6 W]^^ϵ_M?3?Au]no~;wU` 1`CUTz_K `&\LnRys;$@s5edK,x adaKЊZR`zڕ 3|,VKYEe7ݗ֛36 Պ4 7 XbcX%Cgv0~kl: 1dP|22ṯ;caԉQq& g$$(o'17Dz^yZwSE)~b'H#]`YDPzM#2Q)*ά{N©n(Fzl"ue@DKWf+$DyIۮoZFոA1ZDH ^ Hr)fdrIG[nkh1Z8/PȰ$V˳q[Tw?&PE"ͭ19F_tpŠrˆ %HhB  0!rp "n!#_LEyz{{cx|?.~=8xBΗOFi,Cu[kw.|tݽE +?˫zsme]֛`keY)1CoqYEՃˇJA a%ק'Oꬪ-oֶF *z߿{ovqyUo~o^{_~G~7||7>xWkVE">9Cڊ((S]wvIG<_nNX..*n;sSNSw*u=g˧~omH\ #l~psAзi[ǯwɧ?i?M33<Ў"2O3ĠD$3;˒Δ3sޠ^Tl< ,w!/r=ZjRkE /)QAv4S [/@u/E=2Ov%A;3פnP`fq~f4(/4 j#g 3~e-h[U_#um]2?lJr4DD`AQp4bW,*SS{;o( "ĵEښE¾Z s@ޥCŰ+RmOy[ң#GK#VU 3ӓkg+G"7.j8 b; ϑmV֠_-;B3P9W)g?Qe,DC߷:D3T6*vFa M(2P u8C ?:|DupFҎB '0D 9#y$D\?_N2.lq||QfWVemx{s?"y7XGl*ϟ>}|͗jyvVf3-U{;n#ݻWw]}5y:.}]emPȢ}nu9{O_o.֎yzZڲޞz+z \Ͼn90)w~_{ l `(d߷Uc7iLHFL*& ׵MF:L6yeRws5edR6QG1R4hf=5u1@k)1}lm/@`8ʖaAԠC91}!Lw/x~;g@Aׂ-"xO.1 *Io$+rY6{3 չB ;o<Baj&(*EDUmFN)6|[1M/k >QPH C{) BT8!^y[S12IK`jU5cKE C#x<'Cad4VSGPg2ޮ6ڶ#BXtJUlmU"*JB5 QSH/1"h$8Gt@@t_7Yq UT>%kozzގ֪TeryA>>[߼]QIu)_xxo5m)cek|e{k6DYfGקzEon{K;ї"0ѶNYsnړ؝h& Ϛ|_;}k~G~d:!Btq'"q+Q-]\Ed &Dw谓U%FwH6Eu[N%КsD( !L{~ n (E5H4O-LEr: :=5GRI[0ֶzٴ.'`xNH4ʜvP9 pJ@$+0|u:eH5p<~c3UtZ?ye_ y=gZ]^x]xPp1ɟ]tv:jVu˫zMz>yzz. t{盏.ҧutwG$%i"Á}Ta*eZ䉉eiAA $&.@&QXDRn(T{DȈq6=Z#\UZURYVLj+(P =hb 7p]LkRֺ YjMIW1R:Rb]3(ݧ:C7۟#4لAHI^s9۾|/ӟ 8q/-҂"$qwYPd*ȋ%%I# <+`"E,#D^PA" JwiUT$zJ-S*e9 TMLl@ ۀv0<(K"IB$Œ&DP!҈ s1#/-f,F%[Iβ 8n/7_!AK2x#.r0;C`ybج <=A 1ZktE@TX択vJEˢ^|Fw#k;㐥X{^Em9ꌷPD X( )-}qj{o^T jÞq~wh!2׺YU#BY[ Cyv:; A4%r5$ IP3oԇOY +zcO9\ [꼋d 1^Eyp8 ˥X ZCeE5I vv=v=ChżZVcЪO~wsL:ܵu~;>f ћO}j4.Vkhe(b}&nG'CeBb "K``ڲZ_z;t'B,`g$%QpLTۊ\2 ]Bl6UA4._f0[NUU=LӴ^VE&0oVηgݡES L^!9wTkʒ%Hkrse/u -de~?栩pQ%^ٔEDDk %臶m*Z본2j6赐Вd#{TIZ4gaTSY9B' IDAT@IP(BLLJ\.P6#"t }&5zhOE a*,:-BtYЄF-AdIKrV%zM٣-hi0L5(p1ȒޠAw4fDy "' Hڔb$BoA8TԊ@uȁߠ"hly+InUsL)|rrhW}ZFn FdçxsԖi1j&dw:_] ))Ҽ)-+fVr֭$pk; ]g1vUEy:lJۖ7t1f=@9UoQFݯܟdN0@_h7$HJ3R6$YcS9(*ltaЗe)]@ZktOC&N2"C<1klT 'ZgqfifNo.bl[Cm%T5,D^aF@D:~^>6@pXNmDv~c eS=$ w> 7G#yi_ptX奿$d9x_$Ԟ@. aR=`9".L@ƈf"&PQ:m[bzr&-=Kڡ!(/E4Y4 R. lsn 2GK9^f6fd xDg49Q1QD$r~\2pBB.WQOFE@Dr<#=`vGd":$eܰSw7 8kM=dZ~Wt׹$"Ztz(!=Q d12=8JKbXFG˯6fFo<D)%<<<m;u)A_@@n"Ygypg I4& SlPԽ,QI?3EݛPOS9LIw)e@!BS)QZn]jה FB\ iUo\:FjcӔV"Y\[7ʲ4`py?2A3aQDdFMTK8z*J)%"a,bf6#!Ӳy7ퟸWaka[Rvvp8o=߈uڎsLN) ŶoZEJnwڄVJƨ2g۹azRJ7Gy#kbeJX&BKJb63g@eV90YBGCQDIFKO#r  .~e) /K4yR-Qnc]ΧW3l JQmب4oDqs 6RS*T‚-"~Z-ѿγ9Q]0}v e)pz/B+Q);Q̴;Ry%~\W%/ԷuzvvtǴ叓DO}Yݾޅ`4$5TUYnڨCv/$8ƾMnw{,&hEME"+ŊڑFpnH~FR^.Ο#TT"]M{L>&>7ovbH_!Z5ܑA,#@D .&n8#=In3Je8%%N "b%Yb4Rs阁Hodw֑M؊ZZ!0 4DRu hM‘ЀFM]Fxݽ] ,ql5G#ġVp_Ytˀdu\!e1 q*ba#,+MX45BbAe(Exl2R\ʬR#9&"HKo~6;ʨ:p1j<b<>Y5416CԴ"iy~_y:*~X ,a(כE.A&UJXc4Y|jIT2x4 .P&/5CaR4) &>,\ycV!`"蘘 r6&Mc1vZ.5M&1F.{EVIJG(TYѢ&8PjT6ɋGgǶh>]{<' "-&z) 7Sܤ:Kiyf;?pxcd,DD9v/ $`, L0U-^4o?e&oxv$11{7Ckۺ[ԽAC,ef̌ }*%g  ;}тnZZ:^y7Dh^]$DJC.&uȢ!TmK!7tu,cO/JĂ%+f]7eip!k߀]`s%)SQ ¹IH,1P)EHC}"4S.`DSQ!3JU RH)Au굢ϴ _f~o(ET~1Y+e~c\"YV)zrخPpթ{wjp,JkG4A1 Q<7h%[o,DQC4 1ļ܀k\CN6F=O4fd*G&{NL3wTIcSDb"I1Ub R|ԙ#i#iUd(e[ۄ'HMBὤ i T:7[qhO~U_>y-1͏w ?^ X<=miAp0Tbu6o}D6v8[i֩}~)ȡhdh+0tP<3z23ckU}f,EĤ$\(V.ahuʛ8TLKZȬDuoyz6Z6|]֫ZY9;]4ljk5xx7e畷 oj4Ef9ۧܪa H.i筝mf6Y{fjVF:^C1bC䣈ܘ}y^_Dr2Ig%c!ld8CG9ߔ ۤZTRVEI L nF'2.vu[|vٮWP T(V C³B:OVRYnb˲;t|i̦TOCnl$h1VV%'D0t6:BiJK_Z[k9[0SHXD5d8/,QVki^S1l%O>_&9=^- zqZMrw|3=]( uM FafQ'.*Fw,$)$CT(DZEc4HB mA8uڡ" ܽnI;?lٶARD` TEpF/gサN"*D8!nWspbVn1]8 "|a>IYD%h.4y2MG{(eKDr87(I*`H# iX1"& UQCJ"M,Peq;r;)b_.qU8_vAvFآsl{ygD P)"֛*`CtS 6P@I6UI#j*QQgFEW= 0b*^TXLw|؄vn03fUS^{:c<\cS/ƳW'Qd({hh+Frf2ԝ­Vl]8+Vvks뱳}w !B\ )։"9xw{"erLMe.䤊=UDJDxp(:AMk)I,3#l;cxtqը+#HŃQpt̩ ^?4phLj8y8zf0y`ٵz2bp'C ^ c0ݖN y $+/w|ɷc |en~уPKit)V@8g%?:XDs푿s$%|Xs3]oŤdm$GmLDPc]EӡAɹ8E"^xbRXc96{a I\StX *d;| I-l'aMR˧A'x љD7o>$yūIm!1`n&Np™t6 UQ  V(Du'<%pEe:nҫ !2qs-5MB"2F0؂SB) p KooSC(=I.h}tL Yڂ]8N1% PxuH)LvcqcW;yFTafU9D2/p`7rCXV,ڵ'IG.g+1ZƱr<{/߻.g0ӡbW]'܂Rj#47gcxx| o\ĆS!WLk1<[1† 56:n3Q7r}p\a{1=dc"Qs?wc7@aQ7v^9xoS" !5Pi5R-<;lӊV/n_x}?Ǟi}`RpB\M ! ٍ:_k7ۿ+_*D)VJ qi&>HMOŴ.xs9|ɿ|)vo~ANzp__h?ǘrSyIwy(2Ě>iX!07}Bٖ"""aE5ݽ+cf05@&)']gdrWZFN$ `Lޮ"vI$c"LjQӗ bĀǕuQ;` ?B'6WBIU"3xd-tBE@u1G+7-o"q"8KE voY6EP)hrhD=(El)vQY FQ!opH#,{^d^6x q{4,2GPc_ja#'-àbvvk_1Msgomkiٹ+inbv 6V+)8T-AiWd7!*B(&ņaUlU*b|i۫݉w/0PI^Ǖ3rԹ7>C}ѬZUkϽxbsWS[dԺ{!UeHWaZ e-¯/_x^0N:J_{mO*\}׿kV^:'xѦa};O\m9rsv!@kse8\N{ |Ͻj)øZ_8]<1àVĐ|potP:.Ӄ'3=ZavC)yLB7zɯyoH. \/jhTi%ǀD_NbhA{],"{Ng!(z앀VҚM$?&wt$R!ˆIuK6K#pCw$Ma䰆\7Vz1̢(%,= E fKV/HI"H&Ba: e9y\^`5a"eH΍M*fj =\ZA4BeDAUVF2&8aDr D~(Bܑ 0›K@ ݀rvvZ4MӤ$;al1 /vZw{U" jb3q]fHyص0&0<5fifJƂ:ٍ4R+lgqK8nk[j%Le_sLKE ,~++_𚧟wy/O>q]}u_7 7߾uuݯ|O<~q{Zm_{_{?7}oֿwSM??sټ|[o|᮪ .ܯwݾs}|cO?`eR?>կϟ;~=_uX_zݯO;ˆ5ȻϾmɟynh)c)u[~{"җe[!MhnG<96/5 v~}_g> W>tLX2 zDLS\ENt3'(1$=L?bZ|rd?\4T5QXZ7ٸY T*,)y(PFe Cd"A{+ghFBO44T3@8{槩ߔ2'8$$) B )tSA}F7ٰ׍ @0Zd>L@D{eο??QmSgX|q)/iQ!9vQ4O e-C̜@i(HlU`lgiu C{߻g=ERz5<9ʝmSt&^2\\Tʟ ]nO8cafnw2$($0 :'x.BY6{يi8 "A&~nZj0}p`m@ظZϷ*N22Ϥn?l]WSĜX `>?O~7V/]/~{~ӛ>>u?w胷۳}?=1M_ ~?O|տ?S?^u kg~[?g3#?zOgi{K?S?Ə׵ΟY~m_~{gO>7yg}>{"A}՛~? <*&#G)(qn[;3-!\$T_xػx?]BWl KaGN45GpOtBCɌ,/Л#[Tg?R6K6,h(KFFH`fņ2ɽ,R8I]hq2-{A#@QEH94`_.}az|\Xr,SI~~wBB54藚EdetaOMhc2U]$sّȡ>7k_:qc?Ev`tA &ܪ uᨹ@cG0PP(,.CќGl 啁u b%sKcS7Rt*Ac[׽ Uw+_y?7?]?S;?O/_w5To$Xٟ{g|֛?5W/܍W}9w?}_0 Gyѕho]#Ժ`Ns{Y{ăxY#r!Yn&˗Ex/7@zi1PŸBFdjd' YegDkIiT=BEWjrrN8PբCf=BO"0{өT.2Gdrg re^\f_>8a$ɥM5#0K)F!REs!p!!"PjPD"VtKkbxڙP O: дi*"Y oֆ,H,f5avu{k鏞 *vRc8#WC Ԋ)j)bdƙԩΠYQUcml—>(\ FJk1 2LU3 &QPwl\=q]vY(SrN20ZkmuZ`ra7mLt ܷj"e, ü]mfnщ{QJ1JVRz@ ("j$ XeVquhӡ2F4"~g?o?g_%_WP}W۟{s>sqqgs?77߾}_+lWgO}_??GO|~;g_{om[=nO'| }Ш6oȷ}7?v5\#hr^^3?o?gUg{Dp}w_{{K?~0rgS 2aVR,L|_0et% Op9/M̓xstKY t$uw:,vrNQT{7ɋ B~8)?$(;3uC1S֥?vY0bP n!R{TQRf[T4HX al֫X":7we+(R::AK,4]ќcmۖ}1k{o( Jl0^GDG2AD˼@r w_9^AϿW=|x^|+-Hucnd>??_?O~oA7P~3 Oҍ@w:^]]N[~U5AuaqSuLez*co8IT<έџ^>~*lL!ᦛ pM[%8HN%'Ό(ї ,@=Qp7`i7!|_qIv[fKk-2˃#iz+j|Q\UZv@\0ݿ[AJsrն,.ŝ0Y&IB6Y80I*f40؃R/z͞!a$ap*vM+‰<2,>G!^<:s2(Da=e8;}xRŞ84&tB#- /m?J_rܓ$gp EVk:S 8,+@DY0Қc;M(̗"Phr=+$։tERj̦#Bbq>G;lQl5``j >6{LGi" ${` b>'.h%|dܻKݍe bQ"5dãG_U_o6M__%_Mr4r)|*%ti%_w/gd4{;kG}/N> oɟWR<~>o{/mGq}/^O~W D>|s/wԐqGs /zkw]o)^~'}_2, e\-:]Rܽ!kxn;NϠq+?O, Jbn=im'EOu 7x#|:)1s|"613CPl̥VYuwPXDXVEY[ӡ.Dt6 <}~ ]}9ҺHi=FAu?A8wߝJIi.٧8| '҆r8 ! Jm%cn:A(ƒH`DDm숊ǑzhN.cZ8`B)Q(;,ǧ0ܒ%3(S|zbENgOf\B$Da 3I1cs*}@7LI¦ 4}An1PW҈Cֶorwݎx4 L}Zu 3 pA%pnЮOda2pa2 CJY/{<(U 9^ܝ=>Lð+e&s\PaTR&"c<>>|ZffiSJ2}'_oy?գ_]9G}~g~ʗ~W#kL'B'bv_~_/ڏ/O~}o~o7W>ޥ a>cpTU5b6s!-F#ܖDcĸOn `o]cm5"N7x)Hf+'ē'N[W[o{V61`vz,n)la(TXRxCe!W+˳OeO>P:P-xMV򰴫wqН}i>/OM e(ErA_|sm^wðh,i20VGQTFGY0j:9B@)kS1}fa,bfdJR㚙Y@jnF * 85VZ|j ]M,(YJ/Ͼ?yG~7z]fi`&sp},૾{||??>CC'|ҧik~}0 u//?D38@Y½N8\___?y'>3>|؇ǿ{~~Mm]椨 IDATrTeY%,>3_ C^8t'~mf/}Ɇ<Qݎ/SвosyrG.OlxbM6Dt֑2tEx.q&4d-'CW_Xӷ*Ŧ9|uᶋNGppr#wR`2W* ¨Ld\H);)|/lD4L7T "0ʳ/{sϽ~ CrNoYKvϼϿ0nڜh9J@ IJpB{RXRV@ <v& TC y#y2!ZCmj:!G:$WrM'/N"-1߶[O}a~~}%Aw7: 9B#}Q ZPF X +VTk f6C+Dj \]XUKi+IYnf-4̄P#ZWfpb0kFp3з_~ۻޏx|/pqqn _qbEqAG\ٝi`$"Fׇem_|K_iJoy? ѝ(/;=/ݿ 6ype `4/~}+Z2zMaUmi4/7i,A<XJp37,Dy*KS[eys[wm9UQx˛/xwl<ۭ,06/C=Ʃ-W/RϞQյ:s.ׇq72sZcUz{`s]q:uiMs|8ԁu]-˦X=oLޚaĻLq r}7v[ڂDlx m^6S&wZduAp`VV8;=Sa!& D hliǘ vU:|[ I;:',M,~=+OO"?Yytש`~N(w? $LH{ss3+LKcnbaJ,@paC !rkzDjw4-E{)Vwwb 3Zfdj=!g{/Wx9LǕ>>zy= /XFc%LWcva˹:6u5kuUb7\솦ѝ{) Z 7j b <@9*W{ ~OrO8X=) 7EaU\'(Ng~ʰ{UnF̻mTPơ~»fA~8LÀ)"3Fnff.<ӯ:^NqPVO5t' <Խitap*:C]V6g%,Ivz=U9=@H/:I$)wq d$wv]ڍa(@sC3HE!@uBZJX~YWZ`22__ڼ}" RW W"Ҥeg©~±4)TIF `l'hHު'"|zېKvd'-)FhY"5( [y,h z&ZG1I_'4EeyaCf%NR2i268Vu"QkqJ:<ǚ}][kBL1TH0#a¹,<i' 3 iXoeOQUCē(Ru\aB<ȣk[̯5ݛ2Jk3. KzР ʥyZUumAغ4k` f ykŭq04o됁U'gۡ]GH_T6g@8 8P#6/>:<0 0uD$y\Dn,U; ;d\J'R` bqWRc>[+8eoq~ 6;EFH| CiQMbD">ho}e&pa.%!uu1FHUQv&R0x)?p a"]kiF2SaJkJGbukzqvq?FAVp)`0 8Km4.bP$k2N u!|h=vuUCO!y3:#IHB"B5˱bDVB!""LP9eb#܂ EDͲKé+  qǦYtf$< v0ok }!-Ϯotlr`mNg3]RDqh#3e{w]Cit1n&"m$+](!C|`c&0Lj7z!&Zq+7>vh)2~$z)X q!qp U/!ymU]\9T"l.=M 5! D,ŚP@%\7'b)t1Me`&g( "mNw:-I[ydlC]4s )MmY΄ π;m)ʒL'(2tǝP(Dw;fɡSqHN w([G4"{=u%ӴO\R̨3>oeh[|\ "E$[[=!H]ڌwNE0S3sf,Dk-c}CӸ0GH.DQ@6,xtP*q!jq$PS@-J\K^8<|^۸"m^J)M/U}i՚-~0Phؼ(0RŃ /vto[k$<?i(Lj YT`4VN" Lɩi&VZXXP5UmK df(ΐLm8܅b?`nZjmԛ US>'@]9#%dNn"؞9]S?"p g(8ĉaAdk<,܉jZqdmFENNz V@㞤s񨺖aZP+ 7wCqHH09݇zσJ..]tS 𤎡 g SRs6 NԌghތ $m@ "@"a9P'5lqXD[iM`ymUF(ۢCr,A0Er7̥=ASߩrAeC*9#T9ԴaYL[…NLUXi6cvӺfR|dmŴSӡTq<6n&fn"0X5"P*03Jqa 5zyҋ֚p/ǁ#`kkֻgǶ65mTL܇i寮LֶV8ݸ~\6 8x::je0Te eRjjƥaHhD[#bbE|Ogn6 E}(4JHSMj)LHLAڔS9.BM[&ﱑu8;Nq[_j{0c{1GZeb> ڡpPd 3Ȑdl Iu3aaaՍ=CdB]jC3'H*oDz˻tWuc~B)s뱱n}_޾Ϝ.R}a$tbO|Hq*}\LfA{9y!Bf>6/mxwg 09961f`0Y>w6REyE) 6nNB@c>۝Oׇt~3jGp`=z+,66tSD=}z.7woO:e۴D6֧O $[[Y:̮23#XmM x G6)N׭&E nFUf GvV~?PeDžc5: ̐kZHLݕƺ"D\ADH0qqSִ҆T A.h^*j%W?75f7"^ļ2CFum #h5[=v#Z|5a8ɬ\8q^EDv]*zTbK[%GDxbhj7Pjwq&Yj ffS ww5.??qP],ь ̍aIm* A2wS,]~ppa'ExZ1"pDH1SfAp/'޴d}!ms7;9,M!/7xADMkNHa )K"S9OWtn"ĮJ4a !oB,,>Rgy75y]d2}Lp4N['j *JިqbĩbYO?px[Ie2 ".6ݻ;%mDiKDQe@Swp1n;< `B4Zxnܝ &׮YA . vѽe+mde_[4$=cXdsMގVOvj? gNB$=b&JL Y m'^[?ED}M+_M'yw[8s(/Q+9LՈDT殮`6#}ߔ8PZ3uvs5sW3+hT *ٟ6 I-F bpeŀõGDΌ2Rbݹ(Rhs9尬I*ꁫEg!&I~!^xD4|.㱩qQupΗQQJ`Mf I)e %w h F,Kkd)0eM-/.H . ī6U#l"Jf?+C~'.GݐN%l݄ť隆@|D~tluf᜜ՠ-KC>a@v<(q-Mhe/pReD[Lv΃/#_5|_y\b76+Lndž7A #U_6Zdž9 TMD؃kJ;]MJLAAj{1ki*tY-d`, )C-TZ͘ WS*^H 2ppcH.,y9=Z[[i w jhb7>\ڠd~4Y^eWJ2qLý9 0/yQ)1 W(w WƼ;ji296W5Rwu׎??5y/OA쥯cѿ_`qS"N ՚ pT[U IZmɝ5蕛gjiZn8gr Gg"gyb3JUtny3 '2 ,b*|hUʜjG1&PA+c!)aF/"5lXJD/VlLVx |=`iF[nMp:"Itiʈlp |ue4V\=YFH2OJd71fn(c-TFRj nxҷ@)oF8@8.v\\5'";R tGWj`+7Ǭ?~2,~`e;x8qm4Kiׇ/?O/sDk#_E _GAo?Bx[C <~HPj[U՜MކZ;1>$[08uU昈 0d43Odoqrso8#ba&BmWt~ndK$LЄ8V!Jnm ]$@tW颎$9iӕ+مJ&6X{7rIm]4J T2s.tPyju$'ell%)/D2l+oz%hPG!"<ՙzm@li'RJpNp`n@)f Sbv67mfWR&9 xa3p R[ k̮ 7!`M¶Ļ t8jѵX'TڄmJP/+"D= Bn ^I#N:`֩'Dw4kS䥓 lꝈ<;ﱞI\ itZMѩ.DŘ=EE IDATՇ:"DRA@쥆[>oyLĵ#9YFbYdV AQJ&Ӿ|l=XVJHT/<2LgP,f|^DZU^ U4`sh֨G ZeWwWՁ[)S5DRjW1ZbEݙ|uESpd;w?oG1/{C>C _O=?{?WFg_Qd$#4ʩ:1QSEjlt.988zZ0@P$ 'Ph5m:Ѭ">LұQJD̜6"+{ w.m+̝Ђ͆]@ox(;eFc*C[)xuEͻ̠rӒ4rTU~Uh=Iu4܀}jlPٍ! `oNrؐt=xGNl9h st0|+PU95ԡԅÑ )p&';y0Munmm,v(Ի213S"[O:<""!L>3aa >ih4 n" d2nd,GY v5hd}Gу. 7|1{%^ BՉN8]_ipXfgw55jSb?]qk@D>Ͷ D \TRk*)ĬH5c W)61`o#fhdY+,H9db'[E%Wܛֈh1[9؁ͰG7It @XtG)M-ӣ ujA#ڒ:ZŻmllpg*T&ۨ<7c2KiPmn6k3ozzoRmUrbn P#wb K_YuZPkk0P6}D7{ rPJ/̬4\C5 RObKy9kxwcg m>@~c3ylp o< G5.)*<ϾOw@@nhoMODM,0"՘X4n z)fu:V≅ӂ:XM !saeEQ+<% JT O{FB b0K-e!(Ahp03-7h.~\""0EN$rl18Zhggmyq݈SmTx\=9SH E,lLTB0mpqq]ò;wΞ~n~Xv8.%pwn~'֡;AlLeyteo|og}4φݴ,KjPU:"\\K -;,BVR bV`5a@eQ< 2Hrtෛ=mq& @S 2χbJLIFR6( DЦqzg]0!3#JHmy3[V{8_d %ƌKQsl5$ʲ]# &MV`vb.ݷRS©{zoˎLFh>%`@ v*N$!6E=@:T61891ެ2 N`z)6"'jMmUmUojI PS"xS 1s@N&=aݰqC݋i5L$/!p!P>u˨ w3]͚š7D*vO'#]cr \q['zBCF"f֠Ȍm!xD߽g]1@:kBSni )HBӮ80Vbx`:i0 #ʰ,ndĚ4R* .cu J"&*"abXX)R*!*0fv29EaqI8@nw6n7%.efQ0qaZJfj-2wt(%eYȄr.cJHYu]EY T|BF9ʜIjWojۺ=1ks7ޜkcBh_B [ 7Q" *AA$ UEH QCPBH.sk9轿B{{G}Oi1g x ,bpN@#Sf2e0*LTiUԿL"dn26v|G*&~kL Qr65ͳf3l6M&Qgߍy:)E{iyᢂ$q'd{:fJ[p'A2c%矶܈( ԰,$7J4N z~2Ir__|^PX'tXVCE,(j,0Ƕ0I XAHasL ̣;G6gE2> l[?_2-\X,@ &$gjBEZkέ5jWAML*IEX>jp] @SXB8=@8cCʏ| !KN@SB48 MF}?!| R䰤$L"a)~S e\Rm1/|t v#bRfun"W`L栲tYr:8j'z "*$D,) ,WV[AL\h݋U?&qTY2fen2#͘tR! ـem>h:JQTL ȰKiEp%p&bUʉtL/'d>-mw̝zߧiji̧S9Dcd.5"f%6oeV% .nNn*wc1V, /3 [˻ox:20Ef0cjyLJ5uD@!^D%Tl"H㺘zà$r< q ?."HWฟA_^ dyp S3z-£"D &mD7Ԛlael,YPD-TY"d|ifsC%Zi Y`![cUI%QAKbКhC1™n^);ݙ,T+ 3lM^.NBS345m}'jp/=dLp$rZ2Br)N1͒0YBDhLܦK.DU4M-FM1i+ΒX4t>;}x:IhxdEUb}E$<}37ZKlt>oE1 o{|N[S}memG]NgQyy|̭GN}շ0?HO姷uUm]۶40gNin 3O׿W?uhU=<2 B%%)k?Kj" 2s]zqKdCFB뜋Jn>d@HYu3aY{VSO ^e63yL,w29 {۶G^Tcqp{L-?/YQQ`i#)j r+N 6HΠ^0>8G&8@J(TIf`2g(rQUVAE6i ,E=®w%}L^*'}lPUi(u݃@ DZx!lYb JEGtn̨BS$(yhe iM 0 Ӂ/3{O{ `k"E=zxW SE7 > wDqXFE(D a#єp\iONGx#G3sBIQHI8A38#^LL1*'qx: soz,ǣdOLMaB^! 76 $hlDXqH S)ƒYzbwoM FBmҗUgv[IT>k\ _8m{Dzsح;?n" ^`d-29$&s.IiixnlB3yWUFȈ!(Њ_5P1QzLShJz5Gy0ieL;[Y0)11ww!! d!blE1LC+@?(Wc-2A湬̬ k'™`j"Ad:6 UﻪfDSa3ZQ,k"ALY@k=s0U! `PE(2@)U|gpX5RVa/}G2yF !LMY=}.V/AH sPCX4pϯ/N5ve7P -mj=}|vB0)Y৾fi:4<6}?ЇX~w3d*q[o?~kɯ_~}}Yt2SCrH<5'mM#&zitaCZ2vߞo'nQVVK%9PA T}5MYHEaIz"݂DDZkOOoo; .#̫,*iby q!97wdA!2Ş o%#n,"=hu^ I)"`Ep$1/Sޯ"r|8\E~8$ , QAd\%uѤA~QQj(mj:{O?Yn.//LFx r&^m3feȤiG/0n}uáw;,3MS΢a}Tvvy ޔͤf)3{6OL i0Ѣ?fpKok"2s#n׭wֻ7 DkmOO=72-'Vn?Ӥlo}:5kSd"2sJnm뷾{DǢO IDATm@ZE,cOs~8mgj%c}ff6%Kd,3wϽ#gĠאcT~8% deR" FTRԈDdՒcVR|;vY/ Ԟ*XAexQڷӃht--M-瘛;%u)"Bh:MnD˲04}f'|ywX1yRTVPGڠ)$3@Y  7c*#82jPpˀ4r\LHr+)U$Ԉ|@~ ̯z0GRq\n 70nD3@G4E%ʍ|tB U$@g" lE!5(3(`q^o:jp$N<JT%{:T*q(UREG&*W2p:کĵhq9P}: ڎ;s?n L+s&"y:- v:efm,y:XNNl)#;N8[7ļqM7eq}Hz,7!5||^l]Tu%&̋.kM&L& 0i47Ua&m"wc$mLm>=]m6eQƑ؈jMzI:~"iO3)-ih}q>9DvvdFf૤ϡ0\ Ffu߶~ĢaV/䈠ZG "#dFߣ|l8HP( 51a8HBQ':`EJ xPeh^ǛcLRvsf7 (C9!\$0Ø+C 3)VXXzTyFQJ$+ϓQ p'C:+e PrQJg 0s*LBnGl 2U%MQg͹SXkuȭl(. 22bWX}<8Yh _X4FoÄ1FCR%YhA>OދU`*S8'mininl}{7')ЉT~Ƥ"mw7כ/sh}߽ڶͽgDmMĺk6 Kl[;G2(r>%汛GF}MO_~t:O>&ړ)M"V{RQt^rYX0Ԁ%+|y /n(F=3b ૤~.c\=0ZpnUS;NN >}|\Χr:~HYԚEw ,@qd^5UQI1a!73'#Ղyt.%F1LQkX(R]$AO29>Pӟ%Ersţ\t>NDgg&{`c/'Be""=iDk OQj$ f  T<(纆S=B')7jޫxvר.G0lA<.z)I"Ujԧ3a˴L&i6֖xl*`3]X1>ؚZq,c@¼~}zΗMv}{R~踱`S2O!\< sԁ" ="U= @ ̲!EM;s#B"ï>;1#(HŅ"$" m>f𽲗c)̐F2D˞۫of+TF+.P3mg!:}nQo^6;s;*!SX./?IdݣarFq 48R{6U:J8))i5n [_8LU4T.jB]ޘ%%Qrk$eܣ:1:YP@?FdH#WD#s4E2n ֻNP'7-I9X}D{Dxm5{yRLr`uU})RLfd{I1ITDi5mԦl-E:1qZ%ҥ55$M'p;6)#,y7ȼNJU)Rq|T3y9N5p,F$IRD r$<#R8tA""QmJvg*?30zʢ+vbdQvAGs}pݷ\t:-Ha4n +T&!ٌ[<0)cUf:dy(tJ1m&sȠ  p񧟞.O˼@]ݼ?SAȊk\6n5a%,-a2rnz%K|\.AkYF$UUO9@̙5"bw{k{LM&D*)")*de"=%KpSj*8I/2A| 阂Y@LYķ&G\"y&^ǰc$, (;.hY#erDHE"I@AӇ<%o[Eí&UY[(!$z<+Z݇<=ZV@8lI&ڷHwLV}H޷$ط^3j m7*C˅ۤ۶m+{ 1E`3E2i}ө;R"O-D=F}gYv0HLH="t֦˧1t,t6zp9MS(3-2B$EtwwN8]17XS(()"7:|n$[mo܆,)jRgXZ\4eaE%Na%1.y4˗僪nҚRF8<r,L&zzyΌҘL&$tQzRfȱ:VPeTvJdAH"j#u'r𵘅5_]i4(<۵ߥna TFf0i\vՕY)񰤈Y 5v"yaz|o<ǒR8*V[!z?Ek!AJRKKxhFzgfIb?G.`IQfbG‘T!BLsDv_u6!V7R[ɺBTHߺ0~=uC̽)wTz;_\‡J^SE@ӣz%Z-ΞDz>&N|pCn6lXWG"vWn9uviЦmuXqΉ)/ZUQscjnmKB{30;{Ы'.jqP`H"prvROu?\u}?}Oa|絻3FFbhjૌaޠj*ښ[~x^sۯ\xV7I$n1}$UZ8*jl4U;( .'QzT`nHDgt4dV4Q$,jiv^-Ѹ:Fet Og qP:C+U-7LLK: Z(bՖ f{ѐX;8ܧ<p"f^F/åOF{4y|ѴYGWv@N.$,hySg2(KeR>7g_ diNDto.ECY0c}J/ urk@@2:eD GQqbRu <Mvo2(]]NoA_8sJbVȀޢ{0%Z\ ~#mnd4 VJIx 1tܝhI]PSqa{YXɑ0Ut13&,8Z`7êJltW7Q"iȩVj%uu]|9WND"9Oa:9SUNxpszٌM%{zrV4u>՝h0J^oM<ԪVa4 9A7mC2댹zx*m8Hbx\'B7֓:)y:+DdNOX'w~n}'wCV˄ͯ>?W> ^J>yA?AcG3۳KvP}b?=f,m}`m. ȽsƏ>\ GvoT&7~tQ KJ=Osʨ?]7럿{䰾qˆ/zi~< #Ͻ?}k!gWl}ZVW>7w?pmru‹?`'.`1Kݻ&7 MG]Q)EPi>ޗp1v)VV=zwAGZ-@_S;_^B"%a]g@^f肃)T j !j/6]!Y 7(p؀S$C ѦG7n'OgZA9$a3.g\ɰNm!,w[ElLҫV;AfR36pRB'xOcZė|6UHijAT0\mL,t=6hZwg\wەeYX9/پQZx*Seyr+`D (E,%Rqeڼ^PWHNaUmN>8:F@`ś 0ZYvwBZ\\xuPwU+-f(yx-SL''$S<_κ-R*U=hsSa9#"91͊q/sՖa{Y6Z9. _?3NJpw5re= z:ܫZUVenm*|vrI)x b#oDqҊ1xU riݏ|,gNm|\%z2f cco}?x>-w?繏]_| /:?;o>W~?b9o~՝W>n("d&㏺RL<)_=qVS'gНͫwu/?،ᏽO2yUGҽ[?o9Sqk|;/~R*_/_}W_/Vѧu1u *'7 XOXYeBZ`ODwk~ {\YELjE/l968ZT%xcb 4fJmZju¸:.m[)Эø.H,q\y21P{ArH ߥHq닿a:t a:s _h ZJ<υ9;zkP%@ZZclOKi!ZiԈ,9׫|65Sc<$wV;}1R'6K(c ymmgw̋FUwܙ<$fi&;kZTە格ZaX)^\\ΧҔ.boϞflkI'%J̥̉r73d.I{( FP75s%Xy!CN_xܲ?ο~+k+//?55ɾ %g>7ǛRaX`=^{[KFՀLCln8kկox_5O_okwWm?y^(gGm&Wo_?}7?[.Bi0>F:o~ӃCL>g|+~o|O?Ÿj}_o|Jx#O~8-9 ɚ!iD̺ F gJ1Lm2f^k V{69t N@bݾEݍY@f U1V%Hz8 cЪ~I|Щj+hV].ã*&8tw8Ú# !\j$ ӄQ%" 601Xu=9#ƴ;q aPd,!8e YV2maHpu/-),(b/@}_.Hm>>:$ j݉c1'Gt=ӅPjqpӚ{֓6զ*TUМ1ǪZ#5ot5nW &jJֆ!55BsQ1 aC8Z{-2MJyPr9ZKU:`5 3ZU'uXsrg6M9#eJNIZiw/yB 3KwlʥU/vpV'9 ڴF-.s*̈́@!䎝wՑDv/?^zwܒb˚ jEIwc#y2 o'V|{ű{O4?5<;Hr4loQFHv3ܻYd8>.vfsc_EDž`jWqdp+~!W["J}b])ZX_q%]{yKtjĆX;K Rkv IVs?y{6i ( A śucs'$8$lizpjhu8{|ˮ-R4l8R * 'XUW> SͰ{^=$TÎ3@Vh<2Z@hNVvlrZ0%%,78PS ]ܷA0 W~]o?)Iw}spJ{-XQ}N]&Z1 PN¢ͭuK{9*)\k+֘ٙJ)J<䬪faʬRm0q"H[sDzJ"tC"";JEI W,:2A(+sUj6s40DysN`y{yJj`Y$@}WKuݶztx]9\BLJ+[9MBjmrf^oȉad-i3&y*V󢴛*EQ#^i6+矾~EVތ2nfQj1~ƟH9n7?͟1YG0s7pd;/Rww> IxC[w:)!q&7?yy?+?7>ƌ},`w]foY*/;>x9qLQXQ@5d&ŪGݛen zs0\۞X]_+O[=gC֜)U:$9NNvǗ3}hndRE3k[fm'Ąqs 8j#V[;:c}A,{7X[Z~IzgҢ>nNQ3E]"Lv\I 6ǽU] ~`y3;O& mq8Қ 6LYRN3^qΥ/y/t,zhԈ>ݧ@D[omW1^ [P:ƽVFJyVɡЈ>mJIJmD>f1SR3)sW' :j=/Z-œ@0S3: cJVA.M"xt9RHvX2#W,k_S)gfbqYY&/Ksq~y;~ഴƙ-8.qϧV՟si` Npm 4d)wPyX0QNݻ)̪9RNҚȤՅ.1Wqd3&hcyΏ22Ԗ8z'4oi{AO)%W"R9TMUCmfѩ2ɑ>7 bHzF DcZ];}x3^lw~qrJ Om8r{ִ5._ ቤfԢt6f[d_mPskF5/"niWSW_2QuRV;Xw"q 3S,ŻJp'Zkk-#oͦim˴?r\~MOn~/^=~p91kUޚT6m7\Zk51`5o &AJ䮦ΒH-V'ژGwk]gmj*uFr1rjLZk=;ۙ@Rh|NULjZ}ڕz]:|}#\WYDn>=yO޸yTsan޸G뇏קW2ת&mG?3vS"(;zn)F)m?VWvsrp~J_zr{o;ofTOD933;BI0t'*,yA?])àĐ|:нٺ$Դ1T>ɞSQzep[J:lAyQ0DPئo+ثҁ}.uM< c f^c$"rAk䳧Avc-@OT՚ZaWSIskcrvS-j53NL)Y7T17rgd<ԎGdfʜ>̗"Q -@Jar4, ̱Ҁ\մϣdIsҴ|^ }b"r3dQp6JJ`r-~~swyh!f0ED$*{v"k ðߨں%Dpjai2d8+Rr3@b@frdY֛}֊'p0jӶxC-S5{ X6k $(_9~ wݼ痭0ؔD@ suʋ;E Tk @4 >uM_,?S|H=9/]Eq3ssǧVs"f*wxr e.URY@8y״ļT/η)z.λI~y7ZQ{eBbR7"Y*Y2,xg3]h3ϻ]2MU܆$GeZŢ@nQ'-29IhJwiNx0 Vhjqbn;vz{z.ۦMi3ڧ3޸Z-GDgUU3b$"&bGXKEѨ{d _yonZWu# 4nNx>IF0~U_}g #n3'0=$=bKmv";Ja4&F_|EpѸh+斘J1:?kMrU$LIȅ1zuGO<׋m-Mhmށ$ĴNCix֚w}1s󙲰A̋XXr]~vMERb"Ն&M<ȂY C0A` -t1 ZM "أc-&b$*GI8fgy:osv֗@NhyU㴠}_3"{_סE^@nWu[XpsYzVW6qؐI_p f/Z~%z_?~aLrz`JGݴ=۩ ͬW!d pIb{煨on|K[k((Əx._צ4'5?ߛ,@+8;TIϡ-&߶l5Tm5:12 9 #(Z-( 9 tewTJmm[tH$}W.x_P]rA˒] ~ܘ<:lj3wV3󟳛Vrbɹ658eMcv"i%n! {fsZe=lLYq}ڬWf;3mrps)4$̆\KqRr{{k'a\D \خGfg./[Ց}R+!prOU[k]DV_mXieNa 1݇.Ӂ$!9)I2&MP?z?&*̦u#-ݴB%=~})=-%Ǘ['P"?b^j{'"+"dҽ=wzܑ܉lnJڦzs~ s SKm^_*:n70!un^ZkYQ愹nc!y2kWŀxmH=]+N"*5tM$@磏XpX^q?'&4{7vԭra). ꭨ 6<;9Cݝͧ_5ֶ,;s8n` B)J(qPBb@d "D8A Fb-H @bcĎ#9~y=g֜1:Tսלo|_/+H:SH h {'!2AaQ2 P΀1ED f*8v8p< .uE.W R}_$wRt8C7z/~#k2 =]nnmswi%#8"*mۮ%Z[D\7^W/m\25!4aajmfu쭒B{4 E @HkXE`b&Wmy>NfZJn:OT|Xzu3/fzؚ-E A)glXJ{LCk6AP|tNd4ojneat sXխ)y f&?mP,cgmid)'/%v`J>I$Tbpi?Kg4{ɢijwp˱$`-H rkW9chB:U]7׃_`L@!G`R:9-9ḩ?חZFK;tN?djspnm*,j0W-f:A"uwDevI6d b*gd]O  w =ߌ6簼7HDܗ,9H60hް8aNLB8fVϹׅq i,<9Ga~Z=Htt1[h{dܡ5ЍӔk{=;ua0h`, kkꭶĸ+"^y~ J[I7~D)xRz Ytx50Df!u]0\LìBGM)mk6 ,<.aaL2V )jᰮ+jaDBonՑLE$"Zk!\TDL~$DRHa*VMnk>5YikU#)V=2tۅno u[-2:BB&{۲Ne1L.oً'k~" R "~{?bp?Ӝ %ث,[1H\X{ 7557h)DxGLR4M7q1ͨ]R#б d6F@?Ǵqz ijpo:i?#b\J8m1J+ހ-'"$fFLJY|r_73psN^ =ck^\;"fi9 j6"يɀ4#qwsPO3cw`{r&@@iJ)YkD `nr*C#NDnE:s >vecضM&I4U[ | Լ61`шw:@0E'HQ\YbN$"@rH'jhᡵeO7BD5z4@-U탏^ ;à ͅJj>2nN"ƻȽHbbdFf{ȓ̇‡8rVvI4;)W,cdM *it4`ɸLa'FH !# Fg$O|U+t$$BLO&Q~YmD+[H+s@F&4hSUC&  Z3ȲOM9b}|ȹ/[<)aDxamB'/ؓthf^LLFrΤfaăA"$K-ygNV`ogX:bȹh x">MԪc+()QRj v [ǼM#HQ-܍iyf9BmEEt Gcp 0O[m-_{|yz55mn̘pyG~m7_{?鑞xG?||y'wub2}Mx;4z0 MHC4a֦4&Zmmf^f)K u"b]Z_.Vc"Dt_ ~MaDD"cu2 qOuy+4s?|ywdᲤ-c`$z]oO kxLԈ$"9$f7+,{3fdEV 0_UJGΌQtA.*uٕ!G bKqRFg ne`{ xՋq,2n=GY5Ͷ7]+ |][/u&ނ~Sx5BU.nzø_2U7a>t` @7 1,$Wš|瑈U@4h< w@LW+#g1ogO3g$BfX1;o# 2#o[35UkDHɔ:*y8!KLB6Wu55h2GZZ 2D,BTF"n9t,ʵ - $en[-SZW)l X˗/?⭉|jfz궱Rf‡yFD3&ڵvkj!A4_"DP MIЫ;JSmWzgn o{?'?zx8CO?gϞ}?77G0#<<=t [' ́rd8 s|.|ŋai*S)e*AJx{L^_+gABNYO ?5vNŸX)|C^/@0_.ܾ8E^q.ؚ LD&b&fH+e9HaI퀒@ fF CjաkC-Gq0ųp }؜=N9{c"';QƠzp]De"se$_{9~wwOo?7>CDIEdBaPD%hobYעP)¥j !R nvYf*LȄB0>9DϞORC!"lr!{ɥaK#:gFD$ R'b:,eR×W-{]^7[X5mS)E@麽ÁL?0Bڶ6p.B31SrU/c="g`ѐT x h,{ ] wcn5~X܏(ճ?PM<@$RJ".;=lPrS50Alp\L$  vQ>]"|T :h 4Rkm\q6ɴ"u(gaR79! PQ] EUE"@ A'8+F@撇0Rxc^/}G}@@|zܗb#r? "f`C2(1;Q%MF "pY"T7TSXziZJ̉^RNV7z.CFJ+z\_>8J#p˦6!dtFe)HnK)>Y͑tšfjl\8,LRݠ7o^X?;> @.e6/Ưf/Y__'_g7~}N" !HXCyq"0 O4 0jpAG[SPgsQgZ`XӧwO= +8s1bb!Na[$7CrG8 L-t<e*$oxm;jOޚ>_.o?#'$i(-Ux0!{EZzuPJ)cqxSxt5z{z t@s]00}}s7)z˜YVɶl9e]Wj wY{ƽVpT,`N "6iyjV6pD d,GVP   ?rˆ[o;̔_АĄa!KLS۾. Yv i !p TXL8a v BTHFK)ϝAcf,κT`*Dʠ7?תTgn a@;D(8W{edbihp"uqfh8g/^ "XZLM55YuTmɽx $ʕg gLɉ9ܽ1U$Rkm\YPkӦ431X:$P&JNDj%|*AtY6V'kJmmaY0j`cVӭ)}r<)Z&<0ts𼙹;zPxxBk2L/r & 6d[C3؈R\ui^/ȿ}¯}x#|O?/' Ͽ/~S_y " )`բױg&JF\n8`QDH8Tz1@rY/|R@?={z9_]/m|^"lȼa;@Ci*zS(v}P@>y]p`&k~cQ6+~NJ@jBpc*3=$`҅rp4K&G$ L1#A݁9^D$!Z5#2gw#bg^tp2gAp!.Z۔)L69%Bӄ /׋{Ǯdf `ADf 8Ɲ7AqGD[Ô\fjP,лnXH*ή= @4!ǀ!m9`FoT3%`fwrO˚`zyp Vݡm TMnUVt`Hfn!p۲z)3| & :M[zsZ#BiʛbM(RɆ<p8-̢S!A.rnAQ̫Є}aSuOL5 'f#Ԧv IcM3ǍlEP"bfZE[+%"@6 #V3KӨ5BM rگf8Q_?|]&9ޜ/?}{佯|x|؏^gϞcW'w9"y3Lw0$\H ƲDBauG`@CRh4d񱻏pE9ݽGco^7"\|x""YDs!c0@ӹ)0r]hR!m~{$ZExmrSuT{@4@p ȆCSf*ˑ'W2 E$~Ro͇gDFeMD.?K`Ġ'cɂ$rk_1욐rr}h%"4/ly"=/&Kì h#` ;cqH٭{Gu ZLm3ڤL[B9]kkە;\>_zf)uӶ9%zMeK̨u]ʴE;,D۶t3jai=E&^*󂀪ʄ*S"Rʻ_G(WO=E3!0B p0N͓x,rbG3HR=3,aYp.Hr Չ=P6q9,u_xrcjmcfDa -”an<1P8+n/Z$| 3#—fd T·co5`K)%;f@eA`sΔ:x:ҟ!0aqߐ1# g,/ }PDDd G\ f@ʶGfuN;2$le#'D(L"_uv =OdˮN4LB=v IDATحLZy#aBj,ZM-u7k<>6@ a 7C݇bcjV-<0(xa$=1˹~or33{$;~66Vr C0 9cPJgX$#GxC1{ ZkM!ЬcxbR95$$@ٶL\͍)I0afZIԪf[DuA,XVk3kjPMUVR|[[ՊHf2 YnnnL՜ZQmc<T|92MebFfzgœ85G*t|r:"ҫkk]Œ  ^[S-3cYx `0s ښ3R{ 1;-I!r266̥'Iҫ T HaC6ffA@fB,VH^߿퓻͉cx対VëgBNy]5o n@"ivBjWFq\泯[PH eKLo/?&+;7$+|5``tsUE]0gZ%}  Г@bFN}bRQ?${;O\,޽=$Cz8WɹLe%;<%TsKw6J&R)2S7`"(E# WGC,[-k}E 90 ; `aRZ#"p&>ᾶAfG }18Lc[k1^sD$D)BHox4-L'"@PkST =(@\(zPs+)Dtl<_Ϲnu=Zc:ΡfR8"u[WiFk" ɚִ~%)iT&w<@hkSհjh{n[mu5M#|׭+0k?ۦ-ef61?9,E|6&4I4)b3vi dOOfYڹjigpi Zk t`b)L N3\x}V` D\Fwzя!HfBH\H",SrM1005Hm7:Ƭi/?"XvxF͝ +4T<384D@BH7& MICI14gGԲ-+>sls%!̮7=9=kDx8ĩ?wL0 !(h2݌̠ND@q [$F#ùR؝zUp! @b@n$A-H>s!:)yzzh^\]U ": &&7[4.Ŏ0G.d } Tc4u{p_A#X8 \5DJl՚8>Yfb I>H/41EbݶJB$$u_V+5\[KpU[e3;_̈XYk aC$ B`VmmUW6Eiv,6 \R""Rk+#Lb:x+S Us).,̬ź\馶L|ۇ^4k=TJl U> U^LtP/,5U\hD"!2!5ԉ 'BPUn]}.+GTɉEV7z Oo#Q\W'CSUxTP8#rB:NJaY2^0۲ AG2sI#'L R~@ @"@^9"̝E"Fpf[ N} SK~(~28)P7gB]XXrs^kԍ jhb 1Nu{ay%Aٲ n˱kc]0ƹ+0E в0\k)Ċ큶ZI1$$w 'm  YMγE#pZ}xx^:i{,o3kӨe}u0y.r(bf,O:MYU B5&<f$#%@,p3?oznFǙO <9_oRYhAA8gAW>NR:4\M],?=4~vȞcpd1#=r_T=b{GXʑeXc1VruێsD"Bj9'$_JHDx6Zݬ+3auɧ)D1C$FJfLڎr*Pk!".Xwd1AwϿLC/G*Wvݟ5=}@خIJMqHڈM rDLӔPhyiKCF{i.jZK)ԵKU;@bb ѻ7eaL%.5@b,\9we2t:Epj :L<-VpȲ}s^47Nڻ[i7!y(}EE}kN%|/|bjv2ss `P@.9T;nbsUO1P`p֣?<4Ef5[tFDRfUZC-Y#BB# v9k4"@SuHA]0J>(H# @ @BiMWE{!0 cS"閡e';AC Qu0 hpH X psdx>Du (M˩aJ\Ұ%(w곞w{hhcP0Ѳ>I`f]]C8{E+Z`l!*Hqmx8/؊P$x릔8JļǶ,o{ͷ/v<#I7Q#agJFISC@6[3f06ly:cPF,0FSqu<i!ֈx5"0lZe`NZ0sA!dfs@x$Ld$ᑆaJ=Ja#ci" n}eۗoyftiFPF:.-vꭉJBw0HbU֌f䁀emq&L׺F_)zU`fP@*:NڔBZWW \kOkS#pX殓OkWWs´:ĸ !f5*;o7qEepR [e;%Xz&G <*YL6F$ d˹_Vf 6\l)q6-RzO @3pLP5!F9M0\qʚyS- aRjamjpRZ(Gpk DxÍ|"9?P,8GWC+cenD58M%nDA@o6ٲNSj5{N'p +鹉DuW5aAB7o܎^jZA _"8=L4l?< (ӧel t>Ff'Ca !د\@ [ms#,՜<8/D<{ ؃9;m H>` `Zrs0.TJAu%^<"r)u/NRL5"u6#qެ/fbx&E`#po_remE"; (] ҈Tu>p3 8"y83ǰP$ KJƦck=A MdyhV7Ttɝb^1;{ PUo4MAq'(eގPx R]T5JewT"Ճݭ<ש0bP]W?-fO=r=!{7͏!Dмޛ^wn]8+QPP8uŚVi*iS7 QYL",,,"Sy" W# 'ʱ-QmC59:!#ѨǼ1mt٢9jM/1ޤ= U!,(acPp=SN6Rr&[o̬:ݼ8̙G83c ;{)(-]aFD]*l(I18 RwOvA$L,sxtU3'Ub{kW)]3A}-€ #)ruqg[ A.I1´̓nᰫ|z2^% -Jozd]&ޢwDa9*s@Hvce nb!!t Kn-ޠbi9Sk_m1pMrPKu,tE0wMwmYиpHb^3;S^Fhj!bp.0֦ "w&7sBJN"a'$ @s;Z*)lLkm=Ҙp[IҸ" G Ҙ9?Dee:y)|3}2{0>2˼yWUҾSA (eÈbv-2A3p=6U FϵjCQs]9bB m])|bqw! TwR#LJy0SӛⱴH5Su f"]" [c/j0MSZ#8pτ/xkn ͨ+BaB^"vhUU#T.#d"ӗ@IF$U5.a8`6>D8 C?nkRpq2]cs}LnKaHB(Hz֚6vsW5Ps@fw 9$)D.C ;aj6úM{yț13 2o,%]?53@9nK9x?LWJDۓS>4սS[s.ǭ=BW5 VLŮJdr!<^}C!{Uf'{AaHc2lAD4…̴p dDlce6 c% p< ͈ؖ}3霜P!" ì$FYFD>ԏ z'%!+WxL sedLؚf4s-!a"##GO٦CDp7$C*Yfֹ_3Lj8r"ƈ?uk=7Exn$|go@-BMHMYbi"HYѠ1QXՕVY# n@ N-֏&@4W74YpA\^#Q~ blpG܏3+/ q4LgRgg5efI \läL fU­&8բ=0A$ EK Z~YM`?h IDATNDGe[ B7ε Y 1 yjj"3A -dp\;G(kG4wJx<`<`XT"nf&TD (sh O2Vxkq}ky{n8)_7HjO>qgp ꄰ~ F-f *)8 N]4r<㉣qvC9eb&1oV*=J&p'\)bZvš$鸌= 2"N#o lV"$~¹rzݻjLXfb'!Yo`9p鱡_CF"!HigW!xc`,cIx,D}HQ 2mabj^uLBy0{&Xd#9j0&ܚW7RԚ^?8;hmgaG !@޹sqss$?T`@QiWDւHjfvssݮ?>:s y, sjz;t*zm:O6S`ߺ9 "8 J͔LBw//8rqkDLžƣ^DcYzZw4fa[u ʈmB`0.Tj_F%=0mka k8dg# 1Q| 7B Rk Azl2af"L<8xJGI{Ip!"Caaۼ101=NSbDĈBU*!%")6"i$vKH|?tPʂ%79@,KjKTKufab͑H2@Y-TCV*sm]l#dب? :=dڞO<ُڍK"@AKm|Df&fRJM8# mCčlc[m&1?Cͩ.{USFlgvȌ*)"@pP4)`3Xx !QɓO6K!+B3SAH;H/efj=q@Q3UbtGBB^O 0 EItXڗ!2RMxdNVTYڂGIt%Ucz[G6ņ05(on:MS@Z;11Y#4YJ H1C31ȁqNXץ7M-4;9K# N,BUia7qv;q NSEGQoWAF†P mvrK ``᱋}!fB !1rl;Y.z@B,ԻB-Չc/' JGǴĢGGDܤQp Z.TdJX&վap,xpgf7`%lsÈ p} rօex47\#{5. 4tKetE2K 98az==!{W+ 0LVFިT{stY4Zi5 e٧ Ә;:$g406l=\0p\W@a#\tǸzI7V5Í Jxeʇt U 0vc3.У5=5wFxFDI Jpq f h$"!1Sɻ'K"ylX$yL:Ǹ |ux1\$rgp!ݏ% <DH1e<\]a*c?<ܚJ y"ݽ7SԥiVDz8)ZOkD8[7dk:Ou*;vRp2ioνS@ɭf"rWtUh[a\z2HQCBg>W~[?#?ceG^\[ZJ!3,wޝy>>cxu9ܺ[=x|[:Ϗ=̮պT z~+髿]Ⱥ&0aSz ~"=L~8S^3h"@"ͅSOk K)̳x2:o1Z7z`Z'URxRN590Q[;.i=2QxTznnnrtRk RHXmS#$K(Lަ:1owUn_욙ݜ"GqIIו%"@Zh"^vཁֺO>yFDPՉֆ ̙By*A}ϫxO˾꫟>{[Rj_w_]/s7o{kz-Ęz3w/>g}G}s/W /^^/ۿ?]ܵ<گzK;z3X "+"/>ۏ?_/?˟g^䓷?Kǟx_}w~cp7}G}?_C9,]u(wrtP&q\tK,0! ng2 GCh7aƅ2x*saZ =: p89u U0bJ 30gi '}o]iIaXYȩX#]r_:bmEăH4VW6D)eN}jy|>h+ץD9'w4Bp^nie,s!"4sW@?n_á kf榫yRJk|4u) Þxk"p]{&Uy7O.EywJRD;kW/yWeeo{_n_-xq6xs?|Oh\Eoz=yۿ__}>G~p駟?zK^ͯ|}Al}ޗ7<7UqY B{o{~?x+~O<_/| 7G___Ǿ;^.o_~o?_{ÏOw>>zk>MZF8[;nEܿIbofp$ԩpFO87>MM6( P:.#@|_ʘ76@'uss>sV-#`1h*0$\Hܱ#\!@5?[;fȡ`ߊj2ظZia$ȉTM#er)@f)/c0UіujHR{p٨M"N7 WAeǘ5760{0# !9O"9"CT(xw MER[͹ -ܝӥ)Cw@"?. z/|}˷٥<ў)[^1 }Y֭Zyc&$"A\eIX,.XEh'SےY {Ed>R d|د0j-2׺\nu(Av-fnew1K ρI@fէi^ͼ+3 Ƚ>_lzt<)vkB(I9ñ62xVww{.fF/']v;/󺬀hFݕT!`\T ! Z[ױU!ǯJʩ%Rw| .w?_o!|i̧i+}N)g|Yk ^G'o{_OO[~7˴ßOoׯگ_ٟyg~s:_| ~?L _E_?5o||~7?/zOB퟾|B@@Rw5?GDO#,]#ܠAymrMƃ0r7*T;;hN>OP@H4,̅3q閜n怎fD aP%*\Da'CsлߴJ)ޗmPaJ'Z,q'@$jpH yS@f;H`8 #Uט;JgY{ wb)c4pWn̰La ""ͅY!D#K)/]A;&"=2V!˼[EUq8a"R!R "F@rP:b$a Bľց {DBUhoph>FAr8Rֶu8A#(-S-[䤃4;Qwc<HX5$Io!:Ti10$L>"ՊTR`5DfbX"Θ~Ov5aWfݦ]ZvN7.B:Zx\k)ig4;"R"NnOۜKsoC4/+1on£RJ9&[l ,<(L IDAT#;Qܙ-K DzeAeeֻKڍ@2=S dk[CRpsݰ6c7<3şzm;OOeg?C~)F|Qp<|$^ ohLKBĽ{~yyg=xnoы^ijz}q7t3^)?39_yͫ..ww-o?Yyw}xso|w~wc>Y{ۻ/j3` \t&HDdYMӣaƳe RW@K7>|>_g-lNͿh)oEd]nLx=aWn!Λ/$?f+g! !Zqu" df S$IGZ"`dH@FrsOUܽ NI1ao ZK10) D4YeY D:u 11]ܺx챻?x{LD.K "n$[3I0$T֭[wNnv򒫬]{Dڀg3^gC< R* H%-̜( 0{roO|~~:k3$[ǻaI'"iYTu5ҫ fVi ,$3 DT9"H,mHXN,_H{}s3BRkRϼjkcBdbZ:]xK֕7qxhj 2[w_Uo:Le~p}7mLu{we?><ϯk_ ڿUso܇8|쑜G3!"2TjYLӑ#tĹu5jw`P[4GS[ 0X,lU2yJ`rZkڼ54>Sv?"JC""Xݫj@pwcd8fu@$Fjk\%%((` 굔# 8vK+EHwY>[J֖4HKF.`jnp5xu TA# l[9'>_4BpG{dlښz}0n<'Hf^+am58D@ațiqvNt$"iJ\ x~~OVsӔ;TuE=>G(tBTQ;B2up V]J}/-˼l-?7Ýc/sJ0..RCr,EPزpX lFԪZ?f4Cil7aȃ'ZxTHڪeaX%Wb-4jiK ZUss\ԝX$ywV)"uiࠦhlJTq- | R7MDFWs'7-ETAo|-㏿=ﹱAPB8ss8ʘ/T}_]HRǢ, K_R<_^~ݸq7޹͐VX8z)mQ;):ˏVl*9<W N[+{ɘ-QBA4$T"M]׳1u p܌L˟!8DSSnM[( ;8W=Ǣ?*DLDfTpC/ )FF$bt8l:'BD4` Z]Xݜs114=q=к1tٴE9g)E$)'0,hX!)&GnadS/~β,v{ƭeɃ/rX*]q"}챜pvzz=x[<4NG8 $adu\.e_t\i C}泮SYaeGJHg[gl`w=ΕQ!#ϧcjԫjiza/mT]m<òK6*'>pӒq4l6dsz6M7Φ픶9m4 yRNbNecUjh fiAg%gpb]J]U(271e7\i!YVdmjwav+|I Vؠֺ!uܪkm tVusZB6tvIRb>lMSַz[fFeY2,h\ü,Lc͔s>{~eōqp ADED9R:"~@; &z4o1eAwI DFIyŜ)@D}/vs,Rq\JcQ9֚a,Rj%RKӪYY;5k,!gnƒ(ڼK5)/f,V.K]֦,W;T-jkaD%r8̼KLN@JiYeY2h#bI̜"rQUZQV`ܽ{+>rDz[^W8s+`Qy3棧_~'~gYJ_S?oek{#Ӷӟɟ|woo?==dMܳ`xZ,?" [4y+_დ{_Oas.knCƨZYa3g"/va\_@(kחF?QXǏIg 뿮u«BI2]7ǻ=Бj44:;`7 cdӓ%DLƓMy.iҾT\Fw%M du L1a"Paxxwy8h8V1RqhN`w.y)7nxii˽Hj3DPTIp;8*D9hV"AUR]df6ZINy_!b$ 5^m}s>{?a?x7N6xCs9C8an|2\R]Div] G3OwoMOca۞#+zuƳ2}֏+([fܻrf t( hL]tgCœb-I$1gB7cjMkY9!1'A&WBT f,e^۝G?JoǕƓOܾYP붪$"Y "8.˜hjxhYlލZt1]{fqcYГqƜ0Dlk5sNY^]^R[-gv~.J̭:lLD P"fCD$ue:w{VJ ӳ7ͪ&jTxK"ZZpW3Z6,*܌W~g|ŗV$_RFVpm_Pj/]ɋtwϻSk6TONNqU-#lƲaݿwy^<2fU8i$*Ky;4/ռܼukCC5 agJ"pLFVm'lLJvLi{w~PJAq"9K窦&]]TiK)lZbYOYyt4U0f"h`l3akfKHi69ŮHXd ڴ9c}лPN~QK? `<◮;z_K[x߯,?/$~É x爘Dz?}Iҋ(2;QyOo ynn61@cO{()=3pH>z\~Y2ݿd3sX6qm00aKJ!dŮӑص^bV$a\V=DޓQMiL&zc]/uت54 E12z`}wiuHQSzfJՀnlQ+ 2T e\X(thOdަdfPcvӎ_ 1;y˒I@H Ww3ürYb7c]f6)-;*Lu@1":Jw# DG)MU M|J}/5rnma9oXbڪ6Ct+Q a0[kR`-+Gx&]`'3(dY4~!x A'h#Oj$ `kV/Wa?p3*cPd0u0Է/u>g$Y23%npܽ{fR8 d.KU۟ Ci{x=eNKlv%eΉvV,4)u_Ym`jXYZ x؈qLv<\̓HQ81ɝs-%"VRJ"PJ,O4eYҖҵ5զAbilͭ%I9loڢ)^CS ;A‘SfpP[] alj\Zg^NIḾݻ`6?'~'wٍ;竵 A9X",/5VvgN;xLqz+pj{$KJ,Vs+U'fNk.DM]vճ'Ӵ>A5I@ x9x |Dj;cU07k˿">ǟyj= b7֮mL!@fH1Vc[g%l{I3O@GX 0]zvv =wJSqgbh?P]j,5LGp=UEb@fuet;FlN$XpvcG rj5RnJږ0j V|ƽR6jpFP c>/%O)y< &3%* CU 'IrLb< $c-3! Ц 2! ]N^X[ е)/>X z%$a.溪i",uLj/L/#'/|^waqҵ{Ɛx>J\ ht]Q֬d,5#izlpMzq#fRαdژxYZ+3/,B$z\/zdq-D܈&'M0I!o68`ċHvY5n8V}^/XWun-fBd렽7WE2_; 1앬1l3^"B?c!VG"fJ(U\%+0,_Q5>2â'B+丛7ZW)!]Czr3dzAip-"y/sI )=lw>08x֔)vDމ~DHB쀫CcV)o;pN (ؖ[ 2Ӵi ނQ 8<%Į5@HᬧĤ݄V{X_A{ G޽ rk =RZLAP̄v{TzNo[HWNL9gm!>cρt3mC&7m`B闎 DROq=c91i#P0PxO"1̐RXFW#ǖ,<!v;~f#'tzy޳'''0cV+ZKknݹ[YJN)БCTԈuMM#@X`d< &K1o7Sf;`ڈy%E4XQ26x%XLܔ{3i)5eHYIլ4bJ)u b\ '$y5gs*H9,;A0 \rtfb<4 ]ˈJ#VKSZ-{=VJjY,Dcޤtײ7;3S8z){<14&+h8 oNfJ̄ 8Eu1tBp®s3G-T hZsu2] :u0D`W8F|aKӯYl\ OL:73Q9cи _K?1k E+7"]c $-"Zp n- h#5S$B ⻘]9;5]{k*f G~}>prkӹ]<U8nAOlňB$n wͥ1VZVnIU38 Yպ$EGB:P:ϡU_$pDZO㮪9ԬA‘pzWkXlZnQO',IDj'BƑ_!G >/ϼ敟{>''PD P?,8$a0FIVeN@2.g'iДfܫƍ 06hܜ.uω*˘TZ%Qr6IBӔRk]'e9es7In[<8Noڌ|Lssmr"TUېh?iz5 Z8;,<%Z+jv2Labզ.:- Zu?旇r~(.]^.д!r9aXG$,+ LWW?Sy^K?U[krwe_U/{G]W՗ܻ ?ÿ7~z=fAk5F*hZ}*>/:W+3g|M'^##ǻc$&n⍶F Jߡu0ogŔ|mG;Y|}=]1U׳@{bfUa'W-ܵfeDz hGַPU!#sv FVb0]>Gh-!1$9IZ5ΐZ鱲( Sn[Ѝ75mJⰈB*;d,\aq\tcNW;Zq4]Hdz;hAv^aL4u z1qRJ)ji酹Y(^t̴c4' }o+qw7֪PA [Bw'B#w ; U~= wGQvTF6%8c6Lh:0QZ 8 @Ո䄈L5 3ᰏ[eUSJO)cbqi@7yKZk9%Rc!}9R<,biL}JbuUۼ,Z,QjmVM)w;+Zs s >{ RVj+Ι7Y6# 3CQ X4[PzVPVjgtz+i{>~~ǟo|ɍۭ>=zgO~O~իX> Dc^1q|Zp⾒Ib# h=»fu+BciIi= z_aVgQX,F5+bw=pc>G@ZkZ{GKbZzXSeg=1 ̨0aZǘ=PtH&d!xq{hYŸ S pAC&q3Ngw;kh$jzwqOd氫Wͮ/cX|ڍM4Ŝ5sV3@CN)nA ]ݢ7ִo8jܵ $748O)EH!+ȅ$w!7{<kt@lͯ}u\fַW~0fq) HL9I]Dh) n} ~L)gb ٹ8cjM{nuYn[1ϗrN 3Sa~OrΥngۓVK)©VJlsJi7/V`[k5vD\eg3xNxCDĻLf/, ñiRMDw;.'?//w/yK~53@Оh.u@ &m@^I^c!D) 5rՀ(8(_i} 9#YQzl>2,  ZpV|+Lu\Z8]qt5WN}?s {L7.F!T~h`.椞NNOUv*ޱڎH &$,5ĐkW{X B+fjas$'͸y{$i^=wAXd?L$<ܠ A=ʿ*㕯 ּw-N AruwYA[+^01cG0֚)Rr_)1sXR@&)oLR@,w pTmڬ40pfAhƽ Tby7ow?޶ۓ_;7^Y[5f S -29im DT47捄^ΗyEsm!RJ3f6fnFtisyq9 r80Npo?_yq̵t[2;盛&J̇V[ '(:͏cU,Dj2 [YzAaZkyF J[S%D)ZkJgSK5}p75:ªxne+Yḓ5v a\ecx;?Oi{DW9PdI)ZejkݽR0czv'SuZ95q,*\s&?dqT/kxK]sQ]o)~MLB!=%ޚ4\*_;c՛K{LT bqYHAO'ehakRP<"ObP,ljaB(tΔcOcOnynM,H{k R٭cFHZبRP31["1E!3rӘNd\`NL[ҙͲ)Eݼit[;ORn,ZN绻C[,.RMM}7UeuҜ·&|.^ߟӺlLv9?j Ãxmg_ʲ`[jֽBKUY2; ;v`nVX7_Z>pZimT IDAT 3;3nɃ >H@9#5uٛ/ݺ*RBӺ@fl͛z7SK4<|o3?E)/~/W}o~ͧO?XDN?c?_<w?m Dׇ tv#!L]Ȉ1%ËL #f0.L0x?md EG.wyI HH%k B1R/^!>'9 /:  AL0_p'd.G/== ws5mdPd C:IJK"b 9TRpy: IMI{A$ tb@`98`┍vZbf1Fm Rc IudBjf֦izX==9ȤGFL *Tk)ZzPŝpjj5rm4)djĉ̎E2Hr鶱Oq.ڄ4f !U͈5p"23&Líι[bh}T aw^SYߚ1OxYǷۦǮh۰u5K瓺;O`sK]_t>LI3<~~XVrk[kֻtS+UѴ>ڙ{YdQ[s^sCh3OS x0fr"",j:5ܤ)SF~h@p^K]>85˖#"oJ Rp5 & JHqwaQZ6.NjѻS B 0öZov\z֚^J{T Eb 3SH,4Z7U]UtX|>z-vsǭ52lE7 x0Z Fe{WUjkN+-uS4f4O` Yj=ըx^E~)H{,?~zSO_<r3fv^qY޺xA d]yө|j GhS>?55;=K܌M<;edF~-da}$LNp80;1ؔU\aC{a.԰Ih-^$_Gbx'N?_k Q>9 0NQЇ/ퟓ8g3Bgel`{ꍌQźPgw a6Apj]e .٣wMsm̖bfa)XS7[2w}\JDc}(xGfU߾Vw̉]@] C?NOU5uQuj4xj3sؐ0%S av;9|Hպvr3I۶1*EB \Ơq&@C$ D \3NіQK,ڳEmL 1X(g1! TD0"Rm]wH@W5shT{wHLDC"4u5{)e]mۊmZnooDgyeg݈P_IFo.nͼ\f$(C~1!.4h;җS[# ]3aYme裊P 1v"L!].ac)fͅ6XSaqZ7Ms|:pnUnŵʨUpZEb:F9N/Rm˙ UOȳə\zAC3"@!ٍ3S%uU4|yS _x¸ƸP_LԺ^an|@HWfqȃ@,l Vv0 춉.%-EY7֤ BdN' *9:E\ēM %Z29-ESvkۦl:~HEƫDωH֔.ݤ-C{9=*7SEO8/z;f A)RԶ<χcs"RsVSE)Z)($>?v#OY$/s:ihkY9L""1 w#L骦VJ ^]I0FxTV4MKfE}Eœjj1L3 2a#vRX FN^L 2@2kĺ7'f6nak3*ET?#T Q{e٦h׶rz8-K擩0W ч;i )TuAT %SmYZR]wA_4Le,˲,w)ںn˺hHxm<;ȝ6uJgfB6@j* {X s~5^FWc&yHW> ±Rij=#%6j"yOu;d HQC8)dECM_~wz+}.:W;³qxx/k842gvAAx(+:**(Al{53Eo])bLV!=%ffTs\J1WUb58jrw(E>yZ+q;!#TT?E`yG@^4`.zc͛BLTվP t^ζ7t#n-MԪn58j6ҙ@ffHVn}3sN}rZv︙6.G(TJfw Ó8(^`?Z4*h3Z=`ҀW)\wf| my9e9E<{ Uub鶵mbZD0˲M=N·o.}[ջ'P6wyE46LJgs WWXZPek.S%ڱ9YBq/ae( FA"oQC`rGlu-8&u]zjª,D fw-YK;.Y2+Az1MU+*%oO(##WNЍ`KywbFfrRxR1MSM9E[ǥlн2D7݌ ,ѷvSiэF#RH @j5EF <`WOEx;y`B",=U@"Kkhk4J]T)EͺZ7"+!oTT=!0 "1e)a\ l2G{GN`uًMyYv^reHX*Ix;3CfPQJˌ)TDyaӧZIR8ƚtC~^Lyf%%XjqD 08L[w GjNfNE٘=@<N58~0st6E{\~دpl' sћZ7gytWIJs)2Mxܔݔ@t:E_kVj)v½LS+-w4b=@l֗9 dii|nQqԶu[$zɾ=U|X`> YeGeuVՍTAL9" T(n5c@ #y\mx昡 gY(-"T/G^)qmw0q7`n:aF1ĽT-tu-tqG7h0 Ft| 6s@=(. <0`SPs pZ摸.+N4 hj0:)41vWk)#SW i^E.LLff$Z ,bZDWNS7C;'J]ENa(ڄ:Opr3 ̬A.1e9HRܭqD!65NNRDUCQT@p&MJްJRo2O"Wkz|\2s_zj ֕HX r+Vk"fډPc½[?OS9joNn6 ڵQ_L=ztS\LJtpx$;>]h :qs6Y\ݧZV'O4JhaAugPja"sb_d7@Hol~n7sa Yud({& qebwdi%`/nL a2R5w/ZBoc|ܕϺ GgNkt1H41?V7ő`{:T-  om?rmxNAV>NS-`)rasÛپV4-phDedUWo䜾aRl+rg d,9eAJpFf2`lHgTcT.Y7'yn[#Po}pG0&Jk[CNZ~3$jL3g27'PcVu&-2w5DݥZ 10K$w)fƌ"R҂ ebj ],#' f7R'av7Z/|YA&ę cǫOfARDCR* !g!UYJ9=fJDu]C|{g7b&'ftEZjmѮ|P~֖ňxdKY wN]3'rw3miy[1r5*Av"1UrJ9SRy! TQ' ~ZIZ ?:TR*b,e^r<уga|/؀zefJVND awL7e88_.0Ptb=Rxt r1Ss;)yoi ߤ.[bw?rd!f4*HObl) ڮuq9reobǎ 2YU55Fvqa9bf$<+9!eewkw;&&PJىJ_@H23eAP 9kw{:čs0a0"ȗ:8apcM#uFvG\`0\'I4iN`r=JL!RC5\.ZpgWT_,.ǕCC+3SA/6>HR,"^(ɜ"ϸ:ɫԇsb Epp:<34]U:X69ɻEmO YG8%r8[GxUB3kLe; |T;1TJ1 jDd &wa!7'żsQ9 agϚqDzl޵6S) JEZq8,TL|:WF`jڍB,T+kwbLRRfn<.\{#XftO:붢7P$4L3dgZ puux3Չ|KcO#13gЮz9bk\T;]EđZy.R;"8y8KАP:S6lmO{Lη~Q]W`$ V\T.%g"#17'wAq6r}.EE h07xyVWO8Ս^y8ر/^}+xy$u)OY06eA"Ecw(zS{S\xWrQ5.1h5}~/sht]=?j=Rqv8g{DF3l`rq2T:i83nê+Q&f>bP-wN;*3AG"b6]tG]՚h -rF2q-2MS T.n mɘHk&y2p{@Lc@J-Fm Qoc]WMJ_;8BLp,Npu:N"$& Jq+($!PtSAmܼHA=*"M{)ȘN=`QK֖2ʷ> ko-[$Rc?nq43 q=Y 3I' !HghOX3#B #qˆB9 3S{GH"19L}i94/2a)Syٽe]ا Q-'8GZk #u'=xSe386XED昚H7)TC9c(~ g ZoBRJɩ"[ou wʒ |x2MؑU{ n97!Qӗsus&&NU"x=!LZ_Ey%= h]TkD i*SbK33s=4M+J)"1]FC*K֛n[ۚ! &TW_}؎7H˄"xm+S{\uqá:\LMfNLB-M#o4#f &a#PUtHv`*^>> sTE LRkBkM`&&MY#UaۦD  VoU vx~c=8j5 RF/Òx|X@!,+=a.\(8B`cؼ3?0v3pA@b/Du{dx ! 2 h۸NVB^za/a73" óov wQs 藄QID9\U/wn$EQk5[O5VRG>0ezQhu%q1Wzkwz@+J6 < %nI'"DOILDn&R{T3E ~{% K)jf^K!)fAFw8Ѕ!d(32 Q0ʘH %Ʃ/7ԨFqsJnjeT-wY03zI@Ymt_cv^p;S!\^t\͉ۛӲI^jwjVzmú)Jxw*e[ikO6ag{ñ=:l[adępU{CـڀP3~XTqq 8iK a-S |=L._S8Ε]X1w>x(HNaTC2+ŬHdKKCٿ&e殎n^XSsw7j>p0-0ݲQOy&nYLӌKIͮi7]HZL'2C;+B e_(D0!~> [wC!^VDx\>ET#V@ d0iX=)6çjd2g(fXl491kw?|:SrC1>#~e!EܯFs7/erx]W2Ȝ)˖kzp'ݱ9m맇L$[keIZDܚo[WAC뺵{6ϓ6[5 ][vS_fTZj絹x)Vr:o?)S6ɶxhm&1Gnnv` nf7u]kz賂Y#[ccm aĤED)U={ZDy!fܧٽ,[u׸MOT&d|_T}°K lؚ{ WK8#1j~>Lq여FeS n^ݒGat́}ID]ߖW{ѕ&\p#xl4a>ƒ:ѺǏ_-/]e@u5xPZ &aO4Vk$, M`rZ-{37ɖ>N:2ǏY#~`.|IO zzyfjZ/ՌemE FC=#dd|19 u7iߚ`Yvh[ζO)Z:vmu)$L K\ӨEΒO ["؄lKhrI|_D~73Wd=\[ԃ0(v>F&p~D 0wǀ}OżKZJL)2<|~tG^܈|RBգ1HHAC\>W>x]c'9";RJ%DD6ht8{NJ~cjٵJU+eבxAD*QA{;HG玓# A*n   j6{GDR0w5Q*3.Jn@$E477i)l+9[ P²/sF䪺,˶mDl {-j2MNSW"\j8 y):^sHpK נ͍Qt21GZ3{wEutmjKfDX ֶmǃE")hM}m[r+,L/3P/UkƯcgO?>ߞOl9Irz<'FN_3u<=) _E ׳)7^*"5LwF8Ҕ{3XսUޣ 0sM nQUx #|Is.pp uab?Bh@F]mhe̼Fw:R+Gk UxD`9ajb1)$+bfj_977EVwb)hLu78V<ȉjAw6%i,bw57mQ. RnM!)~m %ލ'tٙݨ"nHƍC/ұL$+('FV:%>Q8b7j 1TcЎP-mPݖ3X*[?sf^N>9ުnBNmˢuQ=;[b;8i[7x9i.OOGĹ͡&<}ZΧ֬z8Ѻ@IJn[3[JfnUYc9SUws.AD7b6 ]{m5QEu[ pLuPA4J #.pڍ&Pa=E"+B)ܷӺ\L_y|{_+?O3lL.?O?j-_o~_]__U~_Ǿ?ǿ|oSS]~|xx7/G7/o>{C?myו5N7WnVMl`G~/_cHQ"2dW-ǁJʹnuMHPLnH3V>+N0bA22K,\o=& ֗E>]Jy|ʧ~?Cww??ٟMɦ޼/}{~O}? oC/O?kۺW>>r)e}ƇSk{}g~oo{W;˩N|shPJyt9֍ɽ** ogbKG< p '/ک㧮fC]30Qz%(_<;f+r6RUoՌ3n!F[TJ 1(x)"%J"ޱQ EAys H%pk ~"$"6Ժs.łpPR.rMsyô~9 7琨]0) I0O!rJE;ٝds斳tN5=SIJJGUzmYՔC.a}V>AJe~㍏HJf-C4pld"q("efnN7MmHj)@ րSJzx'<Cm6iEsN'bf9B} p{hYӽGwZGmۦOzcbSR0pik}a: ̀BK;4 w 'kHm65spp2ѬǼ&3ÌA5pI7L!LU|mMʹ hiL ۸FWP0S!fwj:OԸ8hzɿ_|߿Oty97|Oԏ|׻~W?''~~Sdz?W?w};<_tu9/g>?3>3[owOOO|'k9;?o?S>wo^ C՟?/~oy7}nvcwG^^v .Ŭ=+ 1fR7y! E'rpIƜaythTiϑٕkety煷fXiM]y|3_ytSca]Xnn*߯ ZHGwnt2Ϸ7wp{ش>ߴL,yn w߾򸃨 6"n7k/goޟ:jkoؚt6i?9NTpnp3߼|wve-q*d{b._ckuc򛙱Se9^w8w{Xr.,S 'SsB\ 9`mm o|O]Db){mM<QHtz?s~c?>/Us>wͣǷ'}sѣ~oǼ;>>WuG߿}~~?|wW~~?w|f|"?AJEk}Qzw8KTڑ7 }sjDDQDgaG4G.]%ǾY/mHQ%'jaV!"am#W ϸ4]O]MjWmo]tkڶ޶f}`\]""1НH0}m-3yώ=8ҐE*G#f SrEb(5b4כݖ]aks7tVnuKB0`@@H`aSS8fHĀm1vlʔ 0(6A1@ e#&YR4~{9{VX{{F7|sZWC|ֵMDjS[H24<9͗䜽¿}n9w1 pttt|t}8ڬu; juhxgJ*jvލ 2GH1EFl&%0pB1DEU|Cs '| Ui XVyhZ;"B*W}W|Ƨ}K_SgT[VՋ6ac<:kvBc>ƵM@[ub"qµkM͆~nqL)k< Ԉ //{xEɖ$ݜ4i*4i1Әq@88%Jϳ!UѠ<=˥t](.UK2aӯNGW&)r|!s{8^O๏>y+ynLy=T=ͨ宻@PPqT5s4nk d*fڠC0KEDjA833b+.ZJI9f"RTհ,V3^NtM5CUCY$Bĺj(:.x>%O ?yܖon~?C0{}?_s{u7,ϣJiMXnRZf^mW뛹Ƞ?\nq2]tu:ifyUp?C7qvuYB̫ ""1r`UC%shʁ{N#4i!-s4咊L-䆸Mp,V:7o"Qc!F7f")r*)9 ujbfE4DJ,58!0h,% sJs)O }`\DDvLӔ%yBe`jg/ vRra'ޣ5R9(5ի*b;ZJ2 ɒAUJ52{v}C ` ]? w=V}vO׽J'pzm˔d߼ 9DW aD!oðyӓy&ތ..ǜ-gAk㘷49g٦Ya{|XmR`8NA:K=)')RJYk5{ysf-DELI2SZ/AQH@\v㼛S,fV O1"s*Ӕșw˟ !Bɣ"km6GO~{!CED6{3`el?D^dy/W7؏)T9!x‡Z.ݏ=_7<  Coc/MzZ\x|xi*'7r9:r.zvvϖwDΪc'xBbA7|T672a9RSJiг૝8yi<C$v줰9KBh."[Iu%ҰPJ?:5ƛ~K3?J||_ kl<.Tau/|՟W/zoyӯ}=y@|zK*1xRByɗ}ܽ?'zW |?'_EJt(s]yi`c"٧8[> k WL›5=NTUQ4X֣YhXkКZGvU NIejoFxnP^.w27j n=Bޥ+o߼JyW濟G)*[RxU0\g$7aXa-)c .8v؅Cb͟PRnm;8iΥ @E<kN,3{uC!s? ̔4C)'Ǝa8'!`pVD!zp^<uM~h8%<}ߏԛipzr}:֛hj%!Bwyr(G9v'EqќݸqsDl>Q..1vnْ oivr;fJKrLDwp5JR%S@sRr0Su]bbu]C? }r隽ڹ Ő&M ݷ]~'-o®+?W؇NoWG?jq?ɏqN?ϛ~C(|W}3<|K?O}yBHz슼ks_4o_U/{Uz/x?77>Z[DʡP[ a/vj/J4ބ?!Ƶ%4S B[$\D3Ʊ"vXuxED6 [*Q33Vd40ڵkyRdM?pƩ)"f sJDqsa/@m `F]^˜dr߯6G'O?}g5"@X )zdh R)zcs,Rx+t􌄒(+ETbJlH3S1o}Y M$"cU)X9ijgC^9z!@L?s>24M?s1QJ }WϿ~nۮכ}_5st:+Bx/;wN];wo[c`b& ~ Ιjy7c̼}f3=q˯ڭ1c9K0%a =M=KY$lȢ0\O!aH`L,*{-h!,і*]}!`>ծi^vEQʇg/ͯoCٽ YǠEȀҙǻp%yK4^֥#WҴ t*qg 70Y" KEs@;|7N`MO@!sHL1`R!Ō: bY$hH"^V-"m8oJ)g3:3HEwE]0$$OGBb%%FEFpZk]W (h*G?uXEjfh[%!Q1"֭TrJ"aV!,RJ-bI% Ŭ y¢䚦,(D^M;c%bX HLƼGFA3:SgyCR{fdZ./ HF,^;LO6 *Z&r2 MȜS,n&wqDpdLMD$Kj QLjFCwp5 nccVכ_}[~kxc7֛ ]oW|Qp׼W/G>ۿ =v_:"0 w 21g\r7)#R磪s컧;QJ`E<''}w_,}!`TWd%2* F\~՚~9pwZUE͎48 T?}]Ihu\}a40Xf|E$$B1RC8]m>h%U 7 h !H%k0+!`8NBgZuٲ@sVQ`"DArNk(! 13FR# 'nܥQ ;>Zwi<c͊n"q 7MMwvɆD9t+9Ԍ*jȑ1u'`P{//O?zDTQj<<\DsUZbY)4OE e(\(<<f9!œ`Qe'"F YE$\<b9n3 =uNbXdrʻ< lׯ_P!tv~sgCRrf{T<{\M.w;R$Z(u4ބ2 =&hOrmj<p*B\jUz[z)ZZC? HqYyُ|@qJ` ׂZJ !7@KGLeRwYf$Pf"U4cģM'&)ςdKn J+F5TP"zcgsr_1ľ/FDy"@`mU$Q4Y7sf̜r2stߕՔlIWhR|@EC`38l)P88/i:)b%x>,p HN46 EuLQJNɈr;1wTJ>;.9?OӬ@<ΎO11ٔR`<"! t0piLi[.#O_\?yr>{~}i4Ӹ# 84'M 9,$TJ)ʂ}#B348xe_]Aas.bSUT4da;H癈'*g_ mQ 8☪^ +.{=Dc5?l7d@/Kf&kk]qPiSP3/zģzׯ,D ,fuTZ4ǻ\H񽯞"0siY-p}5'$& Mfi9bH;fUX}϶b84x\yUP@/h +UOD2da%3ErPX;PU,gO8TV[kj-^Ljzۦ -?[݆[FϫuO@.)#↿!e#U7L9a,#˄^} a@6 JѢH * s#(dC Z D"HeS) :D/bD[:~ʄST{c= jU! 4J0Cf!̣>wc!"129'5ku+lP]4˔HV}.BR!%KId Q2ӜZÜJ)6l~}ww."4e6<"L1Hqwn];YR:Wȴ;o?uo i.t9Dvc4 TClqUykw"#jO*Vɪg`!l`^iH Y , TLEʒe!Fj"5ڃ5H%Ⱦ Y y{v.P%ϫiY@DBb'셂_wH3@ig07!M%/x>dwXZفQT* 79B,(}`N@JziChҵ5 fܿ[3{°(:\̒ſ,F۲$ 3[&`?Ã&pW][h v(ŁmځZPqH[Nam07ZzϏc]mT)V %։ϚT$D!jFBPb׉\P!rTtY35DebRT ȎCmjfTM[%o]yIPSGpI0P d ÈS 94xjpMEke8?a5r˜SlG,R\! Rc"S7lqO/%"Q)Ӕ1r1IES*!w>s6RH`>FR|^{Giwv~{!LywoV8]LG|Ct%" l7Mr&`B`{/a?R{ ޿vp}@ "sQQ+1< oQA)ŃKf{T5{J6Za03ZJ!kl2U&I0#K}%\;}ː_ܫOt0BR!&2e jK IDATUeZ5[Xk.Hj:0LsbP4z^ v(+x?zv,ƃNJ jBا(%ucA{5/a)թ۰Yq mas 1q#읕:c3AU T3jB`MKV'kQ)QjOllekb' x?@R_#Ġ )HZD R`UPSc] lS"-n]/Pd"\'T٥@=gd.:fF"9v{-9sCx&7@ ~NL<5UD|,-D])@ qK*nM6\9PNԩ4od@LE!Q)f)g$EEA ,4,Fa;%%D.Y,Bjv} 3R(0y"s(;FJN'?TIVİb"bj6vnc'>S>w/Oy?xOyF̞DزԔASjcilJ^%Px f~Z)Z+$~@CE$X8+ 9 ; HeC08rVڽm[tBSgp?w,Fְ콁.L\ U*ª,R@fvI8h2  .9|h&ڶA.-זKU{͈v( VDwړ|D/jm{>oQW_-zܢrߞ5E|pqh"HSkhK>l*Ol^Md `o4p8k \D/*-\9KX>uZrjᲄ*.ubxYTIJZ1&4އlKwƑi]L&֜Tn[q}rg:SΜ7E/r} irZ Q2jEPln<>Qq.ʱv3RB!n/^|$Y0t֭B$EPbR"tw]ud(H=<'jaed Bʆ:X)]3HRQҌ (Zo>_w+v>/ZrW~闽^DZ{⥟n{겨-[ WDR1"I۵m5-Myȶ 1l6'bʭU`voutMXljiB5v+s S薱!sWC" `ҘDt1nh=T6Dz~U&XMC=rRѨx5Ww pż׊Dتۖ[=#TM] ]m DMD@ D"V$(X6Ъ&z6Zl$\L%hEk\+Pzh+nf^R[gLhtoc*ưC%B&jh 3Q4QAzƫ枳3} "ڇW]wO\"w* y 8˪-lL8H)4\dI'&P@J;лCv <3n%L(&y供ْt]!䀁 ]OƭOKU3Rb\.yfɑ$(F%]^~c㵓M0l'52ltP 0s`3}}IXŔiuj@uL[w}\ cЯVl PV%Cms[JaJʉ6)%˚`MTi̠Ր=JwG.~`+KZwI^daLvay$lSb OˀU6!R?Ke7y>a46zk*cu T{i%5wхM[0F}G#wL*Ӵh]vI2ؖg։2qRDEB6ZɤjY٩,T@MZD =m"Z P[ +kl<̼@p"f,m̚w۶ֆ- vIn8)!Id?ID]w7~7?C?3?tRD@x떖N9 `ӗ2Q `%3o[con0dpN:o|{y9/5PtK%'+`Wvﻈrvkes;)DCFli.n!.eӄ\nhEfwZ2B9:cP-Cy6Uɢ)gkUcӔ(>٦Rm<2Rbc9LF+fPJ-s1͛= `@(E-9 !80sʛ5 - *@M{j@4}ݻwK_*".̈xyu4]Z?OԠ \` U/j+ >`-r([nbY mgC؋yrx]a,P9W͇a@V5aaYr8-]6OP?K[ZyL["ܫp?62G[ ߰Xf-ΰ=kp_ѓ%+ofvldp- X Ā@)&ĈY**[~#I+` Ynst;QLTѹMZXB,kizB1T4gȪT ՋfqB ̂;(h(SAnC 5?JDƭ{ԥ*!Y17aNf}#h_C/VEX?" ,fH ,68ͫ8='LP0žz1pRe1H(ƅmv/?'+d$FUBWOX޺u#ۥ@L:([?6dÚj󢈈l!tB[7.C;2ܯ{{ 1eU1G`Vjd,\0HRL Si2 *z ]oMq͊,@(fŬ6] KDH)EULTlN|{W/7W1(!Y)_G^?}}qT=I-#3AFG̬:\^Wşg^iz(\,g3hX *rܩJX=x- seUBCz?o²[EjnU`ZH/[KJ[\ lt&xN`b.2oz"Ț}(ۂ4o0e%6lgOlųYS BDш`  ~ń} };"w֏7O,,Ջ2Djcu.]a&ݑ^;)j`ߡ /䎣hJȠ Y! ! *S%0 }bd&:DTTt2SY&[pâ{dԒ^PRs)2Ei8|n7'}wzBb%ոQD"-8*0SEҌ *j |:A$qڅ4Ʃ+m=CcR( uJA@D,gg۷UlkL4cg9v{B^vބ_--;9j_>\n D92 w""xA!PRăqSHq$vN1nsg_VU9Øϱefc|u&raΜ%3#MEkqXD|>η'^x?W,)G$yd),VqwQBuH2:=*U;P&UURNiVʒG%N@*9;aX5lT1 kw߯]OiV8|?|:Wo~=t?d%P5NQk BѐV<+ɼ̭x]ɾ/,Ncz!(l/? Y;I>o[Yh=^\cpE_ՉaץT2l#Gy+1hhgy+Dx%<|[W|kw!Ϛҥ D7 tHD4.wѢ5} [h`1gU"p%a10K\Rgn@e0-x&c4duLM{IE\& UJ8 "ދprfZ׭{w`IB1܄aF`bURRε&'(8Yumrz D`y1q/8T* ܈ᥔЍܕC3ojRRauu="c;}7wbR}?u$,x|7!˼CMuR3 Ӵ <œ csO~ɣᒏc%e]RnaZQJSvR+!3 ifa&0!Lnw?A}ُ}?/o/ɋg42,O gkZ*ͺ&EuD)Q) N[$5ޅCM6Ȁ꠨gR_0=7_>?W?{~~~Gw?ǿw_?>uP`h[7qu'&aQlcbRʰT}k-J %5e*˳i?z\ǟ7~'C=>$Ӂ4ɛAn|8\DuOƄdT͊VJ1S*ժ2Mi9&TX']3")4ŝT╉,ŀ""N(߿͟/?Wʰ;_~ͧMY)CpNKwPs`Cnw @ֲӽAFsBȉUY8H ǹ ;d#ɁY^L鸰h".`)񺀈Ux~}i^y.uw]*ovV!:ǷoOYi-qflI JK^Z@$䴮; jQF?^CNlJLrG}i`w)x(~0|>{9eMLW/ch: OhExUsLVU#+\#vlnueOіA/ĉ.Ky6ֱq{ԊAw.""2MW:C n HBLI0aÍRzs;£a2sU݋o^8c~サq$MjOyt⺬UDwn>t^yzV:VW;͋Ya,ZO:sr%s߶Cpzy1s "TM) cRZ#6#W n2UoM Z,~a ~ߴ¢*2Hݦl }H|BL~|_K/O :YEa%9;IW;i͕ݤ2:޾l͜<ۭw?w֧_=ݘ"حE={t=P'ʷo=89y>^kqw7eS!$ pՁׯsK7O/ΉTnHH+Nw}Nò,LJ'O& v4딇4׹$Ra(ny!{$R]yϚNU֜W;|d%|*V%1'IJ 9*.m]#0?asa`7+ope͈\zN_0쐷0HkO\!EhfN*f"겸9\0@;$PVWMG: ?|~LD uzUܬOT D+]]mQ`"wOqYafk*vэ^xtח aox^jNetG/Aqw1C dAq^޹V GRJđ Bma%*WUVG!Q"jޣ50@jJmiVV@ lLqJ]UlIk Z87~0 NN&ސӛvg)h}=<;?YwCIuo?yu`'g;KaϧzkËRS5iJ|^rV3~f^Y:I(WfB5-~|I:d\,< p> }k&X5qf`!$:c]&Tu<:m:=ŲZZP 1rJYv:LDvhQPcsU :VR͍ r?8kj~~fwGA89֭p5B? dcac=3\#V7GLG7y="U׽1]pAD9޹n~][oeRqsψn!L=~5c`3X@ :.(+lu\(4iS :1)VoP oaL+Bo #ͫan> oP/FR_57P1ZbkA^*jj(sԂR׺V/իCj->7n'b"fɚDT-e陶mN,N"slC>9ZB6bH#vwcj؈4EtJ"ACO ."r)3Iʸ~|FLL-یm[C#q$*"9n577%{wYC̒T$C%UI p*daVpNwF@L9vpK.~~w= _yw< ?}ۏ;jie)OLiY r\D\ MP wUM)qt7Z&$%Dj̟ePWX?zӲsG>y9wpR.U RyqGOiƤIAXbO,@#^Tr%c  . zQ8'"fzm&+l03I19a4Cs7$IYT@Ο781_M]eآ~ɟ__ӟ7XwFo2p] j0EA¯QBH6SF.lR%_Ë8m1( s?[ǖFT-_q?V>#|֥뿙É9J DF 3h4 .+@!nr@~UsxI(S cP7R/Y*!UJbh4Ç,J̉f$M`VarX!*#eX`ѣ_E1TISmix+ʃRoÍT*p2R) ٘\لJ|unRcp;]j;Id"g_z:dؿ؟n)M<}՛O$Ou6ZY77|>Zu2V=0 Ju=AOgv\k#>yXkuJ̖2YagT_}b>7/BUmƝI=eO~y^V[׿Իӹ sNB:D]\1N2{ DsJ* 4_tI*̜]mf+x6 b =SV X],7av>k*>!t~H^]6,3[mzIB.,GhjL%o=Mu6/n&rC}4D \'5/FNTNUs0b΍..v5\39="t 9$SO^EtҨ&~w2@!u$`"k5~9ZV^Ll-lք= g=[È[%Bm]HKl,JЄchiJ}R#[D*"TU *ZۅHH-r8e"'QcwU!&NRuxK.I|dLRmeVɅRR*QA*\H4f>& #}G!H~2؞Nq:|CPJZKeަ/URZVw! i?My1eYXrgK|U8F?OybP<jRe&9Rz7[@ʜ^G75RY+d9ٙo?4dwQEuYEsdu%-mu:ݩHIT6x &iu!ZVrA?%=\HbLeI\ܒ$0eZLJ48T1,I0FznCYG9^B"8Y D\Pw|pk( z g"@ 䭣-tB"u{Bfoñb.2yWms<{*F,]<#х%.rsq(QyK._'aր2|a]Acd8\<9ˁi;3X •͔Mkeb!wGur6G Ɣ+U0ƺ0iv,AԽ E WfNDTAntM V٭#1 Af GB ٌsS@$eL"c2 (xj:+?PhD< SSdy6_%kIUe1H\u-Z/RffSKjNJTEB )T~44^h'~kZ*@d8q-HooCVN¹ !~Cra<>1dלS.)U^D̋ÆR:auw>z[ݷY5&&Q%bVv9߹ëe48@јsg{E?}! $ 2!רG  ve9f*_5f3Pt \hk@t ROst&''58ye_І8T;ieY:sGۼ2"1 mc;9lf^qE[Q7e۹#I/qeLBt#3?܂ʒk kU,jۋ b`RI5iZ9F-Q)ش>&%E'UUm؈%B- q Em\Su#80wNT Պw~_=Lg]]ґfnBv~r;}4\uuźz DHc]OfV# Р)d1IV!x.WuǏ_ 2Rm-"pgo>pG-~iJ`5\qusT&34iK?&W:)zUC{kAiw)~ǷcKb Q3hB*DZ&0ՉX!΃n4 Po.ޣ"*=ꪭ6KJ>['.ܘ|]<:J;(uiڜ@Z3VOp"'X6̬Ec%ͽEccoݙ@};V/:(bt/zF0y˶unX醴I]9iK7ln:眴 E3=8H&Oc.Z;;|gfe13jpc@#_nx/2*JS%7r;Ma[Q8^] b2}Q[1QWɀqGbb=S>ԋ 9aHIE=nBHXC9ml6]rG Xjl^W5iV0,k 8{1&N''IҲ.:V1-ֺ%-N3gtʕ]eJ-&HIX2vjVYS<дLJӺZ:0.J*A?AaAr,ŐZ,;+;8˺TO=\=;DUnn)nI rUa?&㇟|WΌTZ+*H.(8D$V.]#WV{ pk@X$R"xwӱ@NƦ9;Sش⑎,(:;kn:T%^8 sK);,"*JœYO AH)`J{Z" RAf Ppw1nr*V47IgDJFILAʆ , RjZ܍%5"9$!JP B<1)jKD-eSP2Q0Mli/I`i 3mzt$ߞlݹttIm' 5jőW@8oV=*|1w+6 U0(%g7H$|)MbA qAl|86Ɗlt!5AY nj;[X 'bH0V5'w3p zԑy)| pMd^ <5`3]V`(Yi7sW9s+{+hm3 0XT!B Gb Aa'a%5 <e&BpQ,|_5{Z=拱ݬ1XE' @h"b("Dס!lv|㯨~4{@녢k_y!܋U༼{NNWx;v]Ϳ%z vv5eL# #? cVvs@g_j Eət鲖:ކ8% dg(h|2 ﶽi0\pIPM D[;3uI q\%UkK*"n.")Z-J{[ B<s3c2pRb|rtbTw-iϫ-5j#bU'MD.ՍOeTVW<6!n49'"*^//}Yp%Q^C /޼6#=.SjlJ*,iԜRCbyM-eODd+$R5kt's Xq Ɨ֬FGzXYț80jכT ҹ6C LsOET F^PC.IQ1`db"!RaAp؉\|Ci03oZ VԲ?P~{̣̉o CM~1C 0(("h j@ RLTY3"(;7I'ZL Qf}Fv//_1BL}[!.0=P݊/A@^qZm{%7;mK6gKmS82 V\o汙-],3]8`ao; ⠋rd1ц LA qO ds KJ,̰ 9cMTJ!"U)fs2+R/'%bZM8[?9rߔd[QJ,rLMޔI5υU DL!3&"ecF6h3YM#g]L4|ʃ0ѽ䗈 }۟3SZ̒vYTle)bUk1f 72#wZr<߭Zk%b%N*rխR2W.G8ⲇ``lVYb+bMo~P"V!UdPg%\%p%!0ABvB( 9M):4MK|9euʃL;zکR8 IU+CNSV< o\GhT'oE-UZvhDpvQwUqwciWa!ZϵSA5Y|E􊊳"%*aC)vqv /6n;cB ih U4e"-bz_f=7wͨe%Ե@.n6A^N7͗l@.#v+vEWY Zmq1 7X tZ.֋slmCڲR%mۚѯ_}|WVh !Fxs@R-#j;!!Җt9Ugowaoü:rG'Ü d"g%qA>YH\渰ӥx5DV[fJM"^-0{H V&S5QMT< XUSxJ&jF Qpq# Pl !0iLNKNUNZ-+*ʰoޜk2Z&vZ%Z++~zOYB" ZSݭk9y1)48Nni2*KA?2VO&# J9`1>4*"P3%)i{AI 8O!1ƌDfB)&, 5m6+%/y{C$G2{} ۯVFI0Ѝ2\\.7(}є&&-DZcf5؍f7gRCZ;Q<7ȵaM-s%f.X5C;xہWi;jkܼPM{+fiVH ,`0A3 Pb0) 4t.͞HI."7)efO1E1"dA_BPZ-խmiulMRRw7qlI Aj; v9٦xk1v] pv#pZauZ+鐧0LyLJP/K]j rss "7ZCEZjjCLS}JϧUXXجٜͭWX\!Pbi/a P꺮qYdLiyyPIxJ>eazw~_?3?vw B$BsU1&˾7w>w>^~ūuR1HM,]U;*>, KIbak=2:S Zŭ/D>Wϟ^MJR j=ϟqrk>ϟWZ5TY$BkY63{?~?o?%&UZJJDkYj-ZSKbzob/$y~# Ͳ.t~Sli-w|j rݏ>O?cl*q9:;f! 2l2{0ÅyuxN 쒚Vds9E,u:R6L}F [c|jn16s$vHD @3o.5i^Z@M#HV+l冺q@N DŢ)&2Sox'I:$ Rtؖ!!P:HSV8rʒ"{E+V&A_yQw( 6Fm4.,Ck &䥜 Ajx✳ǘ85X&Jh#R֧ܥe-:fWniVK)pTimWU&<9Zkg6M# H`.  () ǦO),AKDKDHC tO^k9c̵oO眽s*Գu˞HJSǶA UI`gkjh(1IX籎< W@Hޡ#j$QSr-0!QMmR"xTJ!pԈKMޱz}D6 M )  F@YPE"zpX%3;ۦ|ߚa )I8%xKצC?89 QQVt[e[=zԑ9,fJwss"M+ -j4j d >s`mg^ǎcW%`eo~IAй*/}v^3}o&I?{7R(/ܗ^}]GݻIOx`0\_xO>ޮ@1nSǏew߼+|akpU-=9{}јbv-4?AUWkӶ0~%?8|k_Y@֡'=>p{G]@NQ'+眻>g$xOÏz3.!_m7]xM+~H?ňBкyꓟ]w}>lmMD`%:B35,{0J$h;և~?n`iFU0!bHI#^dÜ% D (Zhl۠ (Ym z{GN$7S(v?v( W^U?uM5[%t$PfPAU% 2AƯɤ͂;ch%Q U n;o "rLUDO!"$1ݺ aJ)x'n+ljc}ΊIT3k>ޢJIQEsw dTU_{K˲溷=~#"XQ#mk%q|7b*WUbnʦ։-$ڽ{rd)XBM41r)4ӪWgL1ZNm6䜋)P{eYlmNsTVc$1zgYgTERmq˂E|ZbN9;.z>%hG6ضb.x1'׫PzB63b<4u3nCQ R۶\ gimQmNͷd{kJeo>m>8Ɓ E LgJOǎ|eڼ޻lyCl>$JD!x mS>kb8̀pfw^7=ztyy{^ԟ}ذ&m{߽=뻞Gij"zk^=Sls9wmW]p>.zO~y6ʁ?/\z]_Oz W;vt<^z埿zαo6_}X[[7}?|4yk_W(Օ>gm$Gg߱U︃ASĝ_ Hۘ-9 "(r6!"H`v%ݢӳ˹@"\@s5M"ӵF }(J5@gNok7-0-Uɜ@ ;;D o.~grϾfO6n\a vLTgG/D@a>=h -Ps )&#`!1m4H"fLyFI> fV^f|0+E:6 *up0ONݾdzlAS2-A8tvwYG*ٲZI)I<酏27b4XA0 C4ݙ=KǨUJTB F^?c[*m籍)!"$ lmc F_1sm$J Eذm4m+L*"lmoE۶,KL\Eq=ClV39PT%J*<4?T煙 D K{ע숨Wv\Ab8aΚzjˋOo93nY|u=MS_߻w%z'ӛi}}W1.˲׾S1] ]|Օ^׫浪O8{h47S/ݽ{ŗ}OUSW?[_G^kמGijQQ`midǏ8yĩǏcgfInb9 PAeн۷~9x}.VG={V}Y,ΆaPhWhv< Bի1p9bdp(>=EgˋW$}s}qC} ͞e:\w}c}x/,-PUUmMyzH"BHlAVWGgNo!-ʒ)V=117kM֝'o.{}mf[I1ۙ8s|ZeWvAXݷrE o0ef>.֙:t=1?|s1¶sB6i[z_rԉ}}{*@J"wW IǏx;6vUUyAfȏՁ!Tu=:*O 0/B;U UO{׿գǎ<?WV">y?wwoc"e$D)8d!S@QD 9S5VQgKD&є:D-؎H@ԝA%N +tJ2&CGf gf si@9m`ۑAZ0`<$ԈDJ0W8QD(L̇S!* $쩐YUD"yJ9_R4>!`߀$b=]t !r$H  v""#"!%)BM)`&gy ~} ^Lc}OIf@HhB )AQ괼񖏉Jg/exq *cb掭"ei՟ Ā&@ղ*UU|:߷oW9E){7%L"6hwvl6c$Tewe6\\US7TEAD!vΧ4s( H"*IqZC'>5/ <Tz?^96m~ԅ+wˮp}}*`{\=&U9w%(1sƛ>wӃ;}-_

 +ppČQw1X?F@u.8owo~UWa>8}ԩS'WV{>}"mk{*/XjADD?e0 sصgg󨟾x#*Z%r]| , #2*\WPLPlC~BsDbD(>8*uIȨd(4 R2u"1BB%RhEҢJ$k4F+T1 ,t=.s`&Q,:U@QXOSH6AcۙѡG[Bfb K∤LI`Rj`>+[PfJ"b:k B6Q^eQ\8SUdIJ)uء"u@2+[,s@I")aվ!SQ 735 Tr'$vUs`FJljB"*HRom:=6D6s_~=PQM޳s.|۶uWJ2H*Rnʃ>z^QTstVH)&DŽkv:k{U3ZPvz+Κv:o0U,V烥A|#δ0gQzݛGZMPijJ4ƦUNƕ'zmmՆzxo\;ٳ5S|z}SO~㛟?{W?8C!@v py{^-R//Q:,Jvr8 1#f̧ӝ x/ Ik!0Lᓇ8q]{ۋ|p9yk%:nFy??O޵m'n©S'r~y/~߽A!3 EY:bK}[~kػgF=W??~t'OE\c_>[G襯w?^um}xdzp@79W\u@EKE.%)~#tw}7 o ~&&YOyM1LFC^ rKGūDSZdogݮ$Mb¨D&qљt*Iwa.o!I5W 5lb!{vJ$"ݷaG#V ,^~}2[')C$&Sz/%JH'Q :$H)UU({ t1&I6MuTȴLP1B8 8{vZ#"=Hgw$&f"@5>x˩dL'{!ZuL+&l{S` U)vNVI(6m`Z[Df!PT2kk;;#Gc-) KAQML1ͧ5ԯJMJ[sn鼎 З́&y=s6Ub)+ƑKLyDahc @KQQbB$B!e Tj7~˟kwo6S{FKٽ>D'wd%R+K. } w^NwGi=n>ѨZ^-#$s]A< ǣsP}Wn^{ı'BN׾th H-_lso~;N:}]C_M|/x?9*Ұwp{u?[n⿼Y WzcǏHsy<}ʗg^yȑCw!Dokf<co/#77/}SKo{^u8瘝1 c8ln;ey{ߣ7n=^{}A-0MsڰG"J9V'ݶlIg1&Ua&h UE!SQ "A@2WIU`[l5[%叽Nw- ,8|. !3AMLЈY@%60[VYjrh~β,ۺ0:&)kF$рqUyP-FU)Igfk ٨e6jE,-7 ekt5bHReVȚ̏GƄFciXcH<ݻx_.~sJYFD QeYA,+lSj>kPFv I#_lւrHD;[V7h z4"'#DMEQ1֎5h:|tCKr>vR~`8ʰ<>RTK`‚QY7tٶh]"q]aogI3ޏJoϫġ epg󶦧bQe^"HkW]OIШ :yV]^']!?W3I.dlLvOD=WϿ?GK8tUWmܙΗ7~ӗ_lg}o/\`j__rCg^xE?os&M;?y{_}%{0y//uᣟxtvrMxS{-Uovkz>cyx7"?y5_f{Z]_ԩ:^> AG?qSBxxd=udc5⽋X+QdG#fMEw%TyrXI",L(Is(R.UOg}ƌFR< ȪjRrCvܦhˇ)۫XGga`ʭ "{V"sv+E&T{9u.cw`C-ۢ<@2-+ o9sDuE *1کs(;JL6(/Q1cDcrA@ͳ2A 1BB$bصZ[gwf Gm0h1Y*ZYV$FC@FQ30a~fncK!xB$LIYh0sS/2Yw/z{}[o+7j3]tة)ƈRcL%"UχwӧvV"\J ;r:uݖ3Ac6&r =7=#Q;66M DTUUԾDZE=kD4 ff}c#h CDe8S˓bƲ0*$Q%Ljl:ﶦ'q?mȅ;ƣ(S0r6s?ұ1"QU ?}yZ^ZVjsELIe~x4 r%%v?[?:woSٞ `?I)UR :S'ssUӶ ·>񎶅k6z+έeSL@JkSW_&~ey_ $~FO;<]@Pw0XikSM"EQM\4옝C3"(u Hۂ^ۑ*.RwN@ b]Y!PZ)2pUU<ɛ,gZq_!9@4W+ќ$ЂdbgYEHa婓;;ӪKUu8犒{O^Y@#B+vN|ؤ~9 8GR JDعmEMӊhPh6Gc O%Y|8( t^ E`0, %6PTܴ۪l'^W.Lm9,.h;Q WڶMwa2n왔Ua#ٔEPN[gaYV DrWߚա\^6} $T!  p& n'2Cm$@1c \3k0*e :s|3~bbl;{ 6A0Ir Am\^NtzU!D4F&Y6KBiղiLв}߯=!4<zS`Us2g<;3̀$%|>Q_&ι}0>:/Ey ! r1Zr>zA5) 0 B, . G3UX]SDqti</cMZ !۶uUVA9 W bKiNMz"Q4 <VdKPˊhL iL۝=鹬x➶Qh9{bڵ>(hPg|iϧXUkI@.fW1!:- Pi.q2%hlU@AT}`sp1j*#JcfyvΈ1I2 dBjt`Ӛ4tJ 1IUH"ٌّIBTda4v@D͘VƔ4 ɶuE)Hb5)ؘĨf,If3eĶeH}Xo*fk.4#ResGdN"Dئ`ٸ*@mَKDhc"FIA 5DE0)G@%$@D]6YV#ͧ-{e)ĊN12aB O.P%I5Lډ!;Y]P qJVtBL!d9DVUDC (] U~AThu q]*y%'I$UL,I59c( 96.3+[f] 2 Il}!ILBr)hF"gM:*G3d )FYP,lX@L6 8ۡa.5 W `mӁ&3TƵ[BO7{ӻBQ# dl "CH 6m4G#_[MƓ0dCz2;tCY}ƮQ sѓղXڙs :EI)r \ߙսM+4=G#Ϫ"N]*:;QT ztriқx2 =Ma᰷yfsޥ= ,]P FCs_oM);7^핽bJiu}lPv[kU*lgDhmuytclm r"zg%w -Xވ e:H6XC]S^GbXc{ pYhQӾjR놙*JĀh=dJ]!)tS r24bdYs] $$7+)+--JÜaw47VZг= GqKwUv)3XEm,{YQs6Md̫Wdc|0$#)')Q$;G +19\NfBgdD lr`܇Ȏ 6<VTb bP}6B6(6(w y+,M;RDh]:]zsӑ]}g!g3iMf>hFLZtPbgN4H)=pqF7%# lhQ,T@ȶ12J4,(*hjN;^$ 0 I~?s<'PRYqQ`Be@ A۶"mJ,=XcLơ4w4ZӢ}箷E`g,U J <su!wf{W~GmPƒB 'Gz%˻C` Tq5.yVUP&UYfP8(pQjXJ2Ao!(IwyOeWGdh8þIĴnr5| &+T^d h23 јSVpΉc6+[$඘B`UI)і`Hwk3& , {"Qe(7QW*c 0UQ "U]dE)[1Yh9 ~p)?Qc"SKX *f4Z=]T1LjAE;d809$`T v@ؙ2#ECv@'6B @g q4]z| 3uD5:>0*^dI(I~4rI傥y#up,O;i_<ˑrA|hsH;]Q]z@Tj3ҧvs`Ѥec+,CC狓:@Ju%/V0"XdelX1Fm;GsL몏@DTh*x[ J6rfPh4菊PT8YmOw/ .T/B+ =_"@"l>v\rHpT_$7lgSDHy4EYbL:njmB/ %]Jw%?y޸е 1(>sA_ٞn#USJ۵gYUhEY1sHd[[(j]CDlƘؑ-5f 8LbQbj8[vIPH"-)&nhG=cf[,J^y# 3,l&ms3י9e)澭+2wڽPאtNP^#%鞜^I` KN%2@]yG-p[0(6v!")e:Z IDD)c0HL 11yD!ˢ5 1!;0Vv|'I|aj&dvӺg!!38]?dz9&2g!WPs1 4[lQȨ Rns x%uN/=,<'Mm|4cԝ=t|xy`rʙ &`aXnY*-Eg j3 ۝˃:9HP-vb2rT%x~o t{Bɐ (u;ML6Ŏ1noGKs쬬q"yvmk8j Hr|K;{h* V!dRj7lWU5kX ঙ)jsuԖڶ[] T1 #F"MšCs.XL]Wvg<6gpLjwC{^z,ƞqڌ]h]83+ɠdel@ˁ"E9#`%fMZ7۳UbaJq>?~~5dmKzRU{}tV:HD!QbD B#h/$DTDAPQbKD("M9]}֜1n6u{/k9.gLJ硟)~gSY9̦,̝Dؽ3,J @tUK/DQ)!m,wp &S/apz2k}tOLUh1C*3jDXQ,ngC2[I &"nKUzB&9= s~&)w0Bsղek,!nĂ̹| 9bbt[ȐyqhKCr5ƍ"-YYqU^Fam<Y(e;Xޠ,5WJ-5i<)6J r/r%K}'0@~MkS_fJR($a|g2 /2otlbbGllgBS]u8,o?0Rsg-|9.+fܲICJ}1qJaG7-8Gb"N5N'SuP˧Da$^oȈh}ܑǺ <~nm pnM4`̮~!eѵ_]Zkcx -uip)>3'hB|Y/Q[5@D5>mnfH(OϪxzzZ^^^RLn/?ޞj*"?/hw8nH"}~~@˚@kH}.`1r8<>> YMaim-r6}կu/E1acͿ7]|xy+#ʹ dK+81M40_~>~ ]DQwMX~_a{lJe,١o1 \ D̃)˖|,X%ͬ#'_W__7+??7˗LSuxDN;SNCҟ0 PvwϢ^g@.[0:\/bRuU(}Rl䳝%?v6vc̛ O*Ax3%@lRS_ RP9͝8=ohM JU9k P@^ D$Nd* \~ H]P$PHDxfTAѮiH> -4sڵgVBԇ / Ldjr&I0s;K3fS^wԈ[kvm]pI+cD ptIq҈ɹ:y~i} k*%VYzq"{&тDMHUWxElag7 ?w,LY>J($݈~4i:4fmV߿'F B&Dfc1!@wlZN=3#jt> H8ׇ-lc.>|Yl @\._uk8^`-}q9 3n­GWvY؍`886ck^\vāAޗC ^Z~v *+lJ]pW衴ai߯Bܘ5ی1_#db]7}ק|؏g (J6~|JfL"Mjf (0dS_g)ͨ!2MAaK#D Fk12*8&yƛNAMSr&R^Pj9'l=<ڦٚc7!"SXޮFhO?~?ܶGO+IFy 0p`ޜ:69{Pض A,$h Sߍ=p?9w]:IE"y:Cy,D@c[ze}|z`5Rem}E!A,,W^_o)X-n}bz}ơe"j8Dc'~ُ_A$!fl _Gk_|0H'wKwpH){_^ey2'Wÿꏫe@q$ALKI#9P=7@PH;;`/&qL;L,laiR9I$E ;/NXVT'x6+@xk. M5*I9 H9H1'a9m[&lRK? teM,>K:NqQ|$1. 2Kk34r1-Pz{X/0F@)33K_xHDb+~'_K/_m_Mf`3{r.(88ABf7gAZg4$p:q}TT"ٮG<3p&0+80NIs'7Gk H}3c32Mg9Y\)PZ ne[š"$ZYQ?KiB7Os5L?/_c?ۺBH[QD靜qg,+-DHv ӵ38B^'9ȯm+}Y8ؒZߢ Pdώ[Ocli4Pd قު.NfDh,JH\f{ j<^ia)zufc[$4ҡW91-Nc rWJbR/'5y'4۹9ON~ٸ$g)HMZ#R* )ddܲD Qf35%Xm͟ewwァ%#'探25\ֈHF~h:!T͋ &L m$"g! @|/֘ TH?D2 2ޖ_0Gp! $MI,IaoNEizkiQP1ȼEd {pZے,]EVGN0p1"AWGzL펵1^v@ T㶏z=zBJ2G]LC: SO] 5w &W 6|Z&,ߖnLj6B\1;"DB.5=+ B&A/&tXMGeIbMZk{~׿v~/7~?;O yF*óDio)|:G!bq h!6408O-kXf30e8I l+@<>>7](!/zߦy/:P8#GD[n>Cc 8Y];fS|~9S#bǽwԄU?|x-՘ǃy11bcP*Ұ4EDr$#5̎@ adl')J$f`B14r-LE*% @0s' B*,zƴ=jtܘEz)#+P%#82[k2Y}( W"6-jgs`1G[0G:#ZϹ<:."NXRZ`)4r@̿К0[pDJ>t =C$g(GYJi17'9eĈ,)1">Q ¢5&pF8&\) C0&BtU\jޫ"BJIIGn1' Mrff10U^@# B >mTyaAEY*J9}H0#ED(:4f/Gipٚ>sI`gu@4v3Pj%@r w`1)=zq)۾wq>˅fDn!/mt¦#tGFlepU?}zy~.u{yCG 3cxܣC9߾O>H[S'@DޏwX?3B}֚yAdc!1ҹ,,Vasznm2ܣ$6LX9:u,ia ipRad &,Z\N%61H C<cr[jM3H$&`ϲԅ&D~@\^<*m 3AQ&̙ڳO9`$ $f@*rȴ{2 ]rڑDQݤID`"=$z&9DW U-&or.%yhɊ0 f,u:/Dƪ`fh'1ba<)CoZCH^IS"Lg9=CD=Dhj9N7 S@p `"S]TQ 1,9Z,r O(S14Rwk  oڻ=\wwSDӊOppcdaAMǏ7a~wi킂З&HFȭ˕Ǹ HU6!ږU+r_CۣF, :">HkC{|BA @&ǰk GP0c ٮ z*Fffa@ j+ʼoјY5$љe%s6gdD JxHs´@f$&[m@p*[#I8 |im! \BE  DrGwA! Dbp@flN!BIyW u8aupLKI3МY v9A^(rʳ1`n{"l=A=X aJ@S[GVUkl n@©N.H Yr ݁r%[u)X'"y1G4kEWN Lzz^"ɞT6\8K=\AHnNIfiT)$#PRLs}Gm<j+p@Ĺ/Ms$s&  m@n %KZ5\aXfokFF"hOfD3%a6yj;~s7fm aͼ7 @ 2]; 0Wݹ+C#8t~>l >Л7^s郏r#F`ÝeUNqlOOOqDEX+ضE_۶-a"tnMp17xy̰n巾iT{L|mzGp\}a_|v. پy.M̒Ng2YejD&Po5=DLghK8-k,ړ&4p b|%Y5beYʗ J_Y$@("s$ҙp3iJªy`DzIզ%M&&JGO0ZmF‰!@-T 2P3@i=̋盞:1ifow6g2OZL+x\p}b^l9ׁ"4b=sm 3 9793$DrqH̵g&@"mŲPs2kO܄7YSf_'D8`j:ln>jyGO9 JSvOij0Uߏǡ/>aBD}Y$Xow{}a@\#< ZkH1ۺlp>o"?~h ~"wq?l_u}iCO}ߙ- `{:yeͳ/c'9PQ)WWdapDmigTu2'L!i9^ GED@&D=Pc8EEչ#?y|[49P"1<-T9Yl7N4 jvdPJ$YK~/kg"䢵9,n xRk=$F܂uX@ 0"Pxгڤ, S#)E!BDX[&羖LcL(4m& I JEΊ.'>#]3wu99H%R#Vyg pjFJlIc$s+%  pgW҈, 2KN0#^sre,sFtkP^naE02{a_`I$iSaMra6"m6T] ?u301=t%jq[a|DkmkCHs8M{&뺤&TZHݩ10pW>:2wq}ZE0 uQzݶmt3u]rt]#8wxYGBqo]r^7fAX~{x&T _6P@6 sr-0Dt*G`Σ2ZO_ϒ rL|W.gMHȿɣ)"s nYb{*&4$4*o2%' "pfL91Y ^&X1dzExͽ,Y5wC@`"wgf ZI9t$uDa$ '~C&p:kJN Y 9b9DR# .DQ͐Jʐ9>" "0Kc.4w(5p,HädXdVQQm'#bYr98s Dz\ |UpMxKYzY*9U^RQL[!B[D>އϿ; x);9[դpv|zci퍬K\r2"B`aDEcf\nQ6e@8f "1Aj7R땯љ|] /B`?B8+wݖ%<Ƒ .t3qҦ޻kSz )1o."~3U\7@U_faǮn4>ҺX 'uauW2!&E``44š/sQ.%:3'&q=P+:H fI!rT4&3rE2^3FDvg|#f_6I*^}*>QHdJI rb2iڱ^E+Μ@& 9;=o[LaC r~}#%C)4mI|یwg8WsIa>uPU3*eO*-xcnݚ+`i21E쁪[%eY$7DJ>e?414{%e.̦70&|y7+DԉhJH y.(y(jh6le!Ob ($mU&V*v3T}4YR{`̬#tm̤> 34;)N$WB}M}1}k 0 'S{eݼA>>^eޚP%RWY{Wu#L>92C_͕WY/m]5~D1{zzl9ݻ秧|MA7~IK189@I+zƿ QS2+x+ƣΚy:*J5ivT  fᭉ{Y)u? fDSp4,N sB841̮Τg&KT/2Tz;ٱA.ar(c!1 EbŸo"}O /ʏADIy&ٞ,xs w0cTGÕqS<'BDosa}aސ72PM] p%6Gݕq~;=/LΖ? 35xk#_TW72<` CIJ&:߈I!,`4pbhb.ES"ܚ䫽p}|"|iD>}AIe-֚ gKBM5DUA{,ښG]D0qh?,km!H0v,|,0~>n񭯾E,π‹!> ?n{ ] }4i^fC?]6L= cH~{}] \V0}/nqe>(|Bx|RbPE@Wa6w(륬t<9B6Q(A majِ¤W E49q@viDv^uyn6QyӞ(PLin6sQ'Nv^frQy"j!kY) E"1Y ܹ >W!rqndin4~\Da߉!Q4),=*a:#cŲy &ǭ}+e׻\phDc(튡αujjf-aAkWP[Z7=]BYg=co:u|}W⸧IDmŚ~֎>p>eַ} s#&v^kqjF>úm"c0wяޏjf%UA&Tx*OρY3W?W_V#BH-FYj/ҹY[g_qd1m7Ӿa3#K 0aj綺z+Q5:1Oͷ^6+IH|6ՊM=/tJ{r4`XOK[j='矉:+PUe"\|U6'#L ~p*%@6úqF:n, >|xa4wc17 F"@LYoBDJ K@m]l6!|]u_J$y=Dz\__L ].o~__>޿sC3׈EDp8 ,cݶf ж}>}iG1COTgnrQ=]}o ұ{k$ Leimɲ^ǗomXý,8ew扊F u08q dDgZDrug"G, OeoI%㴚աfCTD8Es1 ^̝& R]$ ˉz_'i9 { c1} &]dg?\;ޗSd 6| KBo--5%CaDU=WZ_?XXu ʫDO`f@804U+.s&N‰c *{MK[ . bv{'b3%"F9K;ʊ% FstYV0l۲HfVG ϫ_, K#/|)?UY,j?"mPăi j C$u6 ͌X aX̘9V4`n1E^^o狶ӻ4fCq0ʶnˊ`fbI/ږK[uCK$ .FBׇvY" oק〗;@[jf?yz|:iߏD.HG>(`X nac[Ǹ^m> 1=G}Cݎ|eeCwora Au}W$4֧~^."a d K$#goc9 Ź-H`"sO޺-8Ƀ8]F sds"9{s0">c"ԐN gNZ+NR$dDy~,R4Nq"?JP  U"Ɉ|IPNL@ I:uyb6#xuPUŬ`1F泫Md 2ՌJ5$LL%D9-$WBmZ#eeωeoB a$#ղjPU"aNΜIZf] ?aJrOO)T+F`FZ,bj̱rn5qNUk!j%Z%lOea7ʇ29Q;/$5ZKA1ApHHfRg2I8AqUҕmD)p$IqiX5mFnv1'0& g5<xpazDf_= )`mp4KҼ!u<<mmCVaEV"PFA槇n]8:oqs&7۷zp={|^o/"- [އ*ԢH$ ~ @' v<zj>Lke]ɒ# Œ͙,V>Aphl鑛J>Y/faEԶZ8O80Sk@3 "}X: Jh!2W5>WS2xs RXA7m9s@"RђՂ뙪GNsѧBH yTѳؠJr Q eL(cGXUFr֏R(B)ĻEp{|7Gfk7(w  눳?[༁9@tscpS!̂cpĈ}W]J`"89=FDPhuv9ZL.)0%g; 1@*9㌘JR%eiɦ nuK#сP AbkWTy8^)]R ¿pb g΂RRbWorE&vd{D}aÜ\|w8}'A0SiֱAKl=NqM{aË<<1MhS}8|<Ktgvf$lKQ,-v]?' ԧ0$40%aH)uhV 뾧NiTh$MtrNX>9Tf˲t+IENDB`fdroidserver-1.0.9/tests/repo/org.videolan.vlc/en-US/sevenInchScreenshots/screenshot16.png0000664000175000017500000064255713243530567031565 0ustar hanshans00000000000000PNG  IHDR6WsBITO IDATxkoU[>3H @IK`b,$0% I#HBp%L&Cb*N\vW8q?{^ݽz{5pRNI9)'夜rRNIyˇ~U5(<'夜rRnſz;[{ww?6Hyȏտ?{o'/vws7}?xμz߼ ꤜrR+}{ַ^t??wyww _%Ph/'d{Gtp3ys\7|^}~^jtRNI9)*o^^c/~;ў?o~?<=ť A?)'夜??{{{w}?˗/R&) Hwp;7_~w槟|^{~̫_wwU9⤜rRN p7nvޯڃkW_|pO|g y'~4/>|n?7n/w}OO;۾矿;<#_u_wow~闾뻾#[֯x? wuG}~뷾{Gu}]r;;'OZ9Oʟ2Mә3gGyoƿWCGy_K.}SR|~_O?;wןx;%_y{^W~x'˗~i}G}~~ҥK㞏rRVJY(';ߟk~޽w~W}CO>G՗^x[wׯXNMЛ:oo[e/O?k3?=s?j=='';?~PDTG[m{ Ri\T$Z0Th 7.hA@3t ҾخoA.>4pn(4XAo*0\&X V'jy xZ<2H^Z|{?C,_/|Ͼ5}W_~C_UM_|w|ӟx{?SW~~u_{^?}Ճ_׼Kww~7Sxu_?Gʇ _#~3Ӄoҿ[ֹf@neDZUb,,Um#B3}1*фsK;`\>UgѠ}(Lڦw@ͮb_UmNJ ;\GIRF]:q"$܇:6OO"VP##IP #A۞DfdB#""؁R"eg$zH~k w)*G^V[Uǟ}H*tr} C[ ejEo]'pv_g?W}_8u _q+m?/yK/\__o_75yorWj>~׽ _EN_G~Ǜ>'^O='| wݝk@fߐk8%|]ͣ :HgPI 7I}*}Ϋ־ۺSC*z  A2.}V6$ظ >A*jBy>Ҫg@J/VRm$VSo%MDZkۯOITT@!QuGBI5UJ}+tB)" +܈9H Os(II.-l+g/ "I&,?mD'Ӳ 趜֭HbLږb9#wb]MUjZk)BMYJγ5 MuELSUk-$RoVU)e*Zkuv\ ?/|CnM*Rz#* ULV)+E6Ē(*U)+7Fܪm60([+4H5xufUQ(^<rNYt**TURLY֙}Z?'`hnHsU%N][vV I b!\և!Taᾈ,Ǧ6HB!]3h*S*Õ.U@*1Td :Oңذz=dۖ;pl 6, W™ufob|ږ5W2t"FC@*"ѹs(0MS6ĈUYDDyvօBb̆P>i IkB%G:!gz%E1χ\tYRPg靂6 A2?`aݰ)?%[}ֵQ$U\P.\ҖuUkWZV]uaOK_C׃.60oh Y+LP Qqkq`MH#S<NPD%!^"`DQ\ID+Rd]ڷhNãtɪ@%S5Fhj XNވ[*֊HD{e+U4-*:ȑtЖFO!\63yo N ʻ4[eGY!Fxf٘J2C!Z#anYBTN(N\;M ca+W)$It!^m**R&J*:aP$Ab3) "vKTDىٝ7$`Nn{4gWfQy[}ǧiAŹ u!R  nId17agL(fqyAhgR/2iY i2} vsJ1wEF@ȑ:RdBطÝu!FtӤH-z$Ǡ-G͔Dle?ϘHye$It\D3Cx-欷%ZttY o2+P}`Do\#m/C^Sڊ[$@['[$Y]Y!*I..P7=xK d05Lh&ogk.ʦ%El+p3-,  fGNgUcDz 0-ŜSS$R\j U 4Jp6ֶAG *XRb䥉 u IU ::DfFJUËr RI4C }_He{WT |V Rc ?!7m u=pS %QGLb2#FLPhj2o$@2D3G0ߚѪ7SkT@,jl+[J:Uj_ڨjx7+wǝgv~S՚r/KMfH ݉币!ɳ&}}[}JUy|8KOP 6};^ mBZ$U* f=\ێp-$ni-.p/cxJ0Xuz, 5j W_sK*)btGTU1F$q[CN;0q*cK7;%FR}P$ FOHl)00fVk)Z>g tFrLgdgv+*dkwhQ`! apK.PtOLO;d/WU6ܺeגkO@&ل(j"R׾*N v™i}0IUbҩaԀ8ٮ+5e AD[Ywp(QA]yXS5X6mA;[Dg0j- a1X\$HWH",*C4/JVEbXJL)BL܉rҟh8!S>; 'ч4PqxIIZ셯ZAV>VpgN2\19mFhDŃ.T' ?`s.if*w,b]iۋda)NIGS3$9*3T+$64#Z8A5AsAFla~`Dʱ襄<t<_dBoT{,Aݑ+"}L/5ցV_h\ FH%3tk0;XBD@ mH+,w΂ߓSdE'4hR\6 l`Jz0c̓SMTi(}ͣ``=͢sͻoZ1Zv=>W. ѳej jBw8M0t P?w<~ ꙪU`#9s'd-n>>|YT4ҜL{dY$ 6Bn=zQ\ś+fL r__lA*Jfvu mrr}'=B]ש $HolI{mʫxD>R&ZXѢ6Ss܎o(Z=s8 .V kO?E1+ږkx: A$OH:VT Bi0"aRCVo%;X#Jy &zd\e mQd]h: fAd-ˣETIvK?T9@~ sNxݑ 2Ihfy^Ag)8ATeS2%QMp>KI,tRG DzR=)Y%#k? h=@hF(hHGc,fdYxcO3ǡO3ta>-hC;myY;N?iv*aqc*wu2s@Qx*Bh!dS*/9uܲ(3Lօc Y;]NLsh:U?WaGR$>IEP[BgDs _eQ)=}峉cHu%RBU<%qP'0!Ӭ3[۠,mO6$eU]t}4v%'v̦F6QO'.ʒ۟Wf+"miڂ#Gdq|ǽPY ziY'MƷ䡦 ])5/rmf>V$=M9ʴC[q~I}rRʰN6 RQnmDfۜlñ HZuf#aDmHxY/c܊49|EaɌ0?ܘ@bbWtDgK߄p啫dMZCE/c󪊂~е":G\!OV7ls怄m/WlJ⧵z܈\e|lHd xTOIC8:BWi@ω%ZOy;)3ЌwАՔ~tR4Lxѻح}fp俢m.~EXd(Jm,Iaյ3&Oŀl&48'4J:閙xq78+bB[6\:{wV`Jۥ`9PCQ6O#1M^eKy)V"d|ꭸ-" Pd3,bR-1IUZ!TE֤uuQ??[gǖsT]l1}p}M j-V;-fĈ쬥`#hRb9TkOdI;`IX nƛ`PqW?id"G]${C}0\ Ȕ̀0B,VxBp]YRXaIlAOK\V).!:Ni|V3L |n~ m,8oPJRO{Q&bx3azA$7>9Pd4KqҪѡx 8_ ȗt(tIc͵jS޳O`"3ѱوI<}Xݷv[ֱ혐jALΠj:Kr)Rtd 90E#j(}eہdu51&t|G&ѐwPl2џJ;5:l5yv"'>0'CY66..c 9d<5}נ$͓rH+/Ԕ{lbj^#8&$ijgb2nVDz~O֋FU8&py2V3-18%%DIixH[AT,Nf3t Ou2{< `3ba?Fx GRqvhu I`|ˊ[(ɽVP-e VOŝ6CV-2uBNe..^UDJq+ԕ(dslV!-($/k[ -P'_(V9xKȣQ[Vx-ڲcI>OS\_<Џ#m]eoH$`Կ-LEV@L\2't< Q9~D"Ejf, 5m/>Y>Fr:H"]ɒ>9\B&W o=Ry/Vr0N|FL?z*SYi*K$=iȾrzYi G0phb@f_|h2BGloU2I' )ڬTR˥LM$2,Sm#CF⪟?o9J:I~+ S+b[nhVOHҽM߷ӄ۱;>)qc' SHg,E6J_qn:[.ĵN0kl{%nŰ[pڛYqYB߫1vY ׍nu~e6tY9@-,;ǽR}0])9kz 7@N"fw_*TR;.={/)H-}SW5oETuRwFN)J9ZN(p|SH1kMOIIIJ1%cn46*2:agSH~l >rʼnzq3jԪ,ϾtwC޲mm/i[Qvd8ֺigݮk|x ' Io.SulT'PQyB YɒDSssš4HJElo#EED-A؜ UdLʳFTwP?[-if'C.Z&ZQ Ď]Tq<`ajP mYWa:-݆Ķu V=(ZK$%VܞWƤF)IkN=C^+,(tGޠ|]`ѠȫrMR393[mQZfQ?4vMd,@E)-`F " #cjHr]Op8@}{CK"2JծkgK u9.uAk ƃ^$ h]63t6RG  ҁ83Jm9-_u1/5gRt!eA@8tl밎3JD|Ր'u"z "O7y2`%`yZD ZY}4JQCT]#:aR'2r&MlXO{Ͳ+ #`P f*%j '1Ή"l;;+~_'m-)SWgPE)\2Ff(=c~( ^l}.eRPLV DO4*fA%D6ucВ$|݆. OzGWt OR nm5-K.6>em,cVoKtm cRHcGt@F;hyPAndgZWWhΈPQ84,E RDuWbZۆ7} :B-Ypvߒ}[8z:(1ZQߺnSI" T o-|RT^RY ʤ5a%п[4p 1I~8M J8NroU Dp. <ҞWv"Mi,l94hⲏOX&SǎBr2fc^Fy6Su\#1*g"aªd&xvkm :Gpi#MNO2  9c0M^-%N1[V`%!Ϸ~˱5P+lIʄ4B7k'Nnd''> Sw څ˟he .mKJ$)&Y\KaFlƄ ga3A ,旴)xW_s֯/?ɒtL> zd M!;vߵ3RH`%?؟DXMhС ["t;i/U1ڔ-v%-s9"Ƥ tAf_,զ#) >JM5y 6I2|<'EhXiL-}6?> <ҒM9gGdL_`6u'tjH2U֍6);8qs"Ylp"D-muۖFϡq*A!JjLYr1iIW 25LtO|pB6FF: ~I "1FEq@rZǀMOBw\o@eћt!KgSggoa*qr!MqptҊ*,[~]029̟S&u8P,l$?'m9m,B!D)WF!f[1!P[ԿRdT]Q%6b}Q]W]jmJIx-ȒͫO4AXL"OjeG]Q Ƽ11)ݮ9ס}u% D8,sKZr- 9ޭB@N3F Z )"vbC](>rL0'w6Qa$DE3px[b4N87n'"g0Hl*&&c0zKgW4Xk#뒈!U~OMXRdP*ֆKC.M&Dt >VumDB}P3/wQ.)űffGl9gKQj|2Q5 Ks'S'*꾑E%# !DUVD2o@6Lbp|]\$~!5mza]|"X/))*^zr<@&(U,H;JBaWR.>^4O;qO#Xo}U ."H$RH_-`-Sq!sefTKQφQ(R L 0ZQI7IRtBCK)- />UF)j5T=u#18u9i?Nvi?#Ky:pARzU]^p3}sϋI&i'I0I_[nmzfk.|;jSEtҁF0sYN7ztDY=M2\LxGE]*)KUaXqĦŖ Gr]6ԦE h!1q)>)QuS''#6Fhq[Æh]Ǖ'v&>"̍4. а6|]%ʞuX/cPjE (&Pɯ@ծFIm*0&p`bUV!= -Sj|fjJ)90B=JU`ؐՓ.5Rr+Q@%qSodLv ],R\D|xzݐO4xxNɷ2҄l-d}Ig-Dž#. -PN\KY,`=dh=l֏*tYqis}Iw#isMU\\`ʽ`9`X㓧2&gڎGxO =/VU̒%10++&z \-_tiJjZQU'Gq F*j 1;r@F(cK- `&ETdV˧"͢NBn+1 v[A`9dsܟ&p!R*+N\f1:kGi w):G7^|)}La 5{ひHik"xTM8F%0 HR8hE>_0FQ<ʔFnsH;ml) 2A/`ēZ3fu1ݦaKR23ǚ'9"HFC.JQJ+ֆIrج(\b8x+݅OCCI n6%#?Ds ^x21p3OzȀ,g vN$ޗ :]` fD}".!4\xEVE|i'6{甐I]P|5(^0n&A9/?6υ<,"PE44ik N}x#J%P0drV+L#AB]KGA {<> v-EQ!s8.E?.;Q3tJUDwNפIsC\tTfmy9ә, yu(ukɶygtDH` I`Hn^k/t?Í|W{1w8ѐ(眒0[P7 5*nq ]FFń5auWu\A)žo1`d'T-@d}f$ 9[]J`[n^rleWSaOT;Sǐ>h?T_0B2ߦ4'dfY7= cJa1%^i2ιɩ9˖37޶{?X_xk*=*(б_ ,ԚY\!fUY$HE"͛$E*Q8X a^,spY3Y5a=шϐ%\VL6ҭ-6"͵?v1"VįnoЦvV K@PiSB5Ì1΃:|FKNȟ- 9GӷᬍU[GF׵K[m=j8~솗mNUO2}I#j :aVC`KRHלa$s#[uY4%mʖRG)cT,$uvJ Wʑ:7Q#1Т2  =]h8Y#j!d#Q݀~2\H$K*POH|d>oxE4]6:+R:=2V:ms DGB 3ֆʨ{(牔~]R.v7Bɦlc~<2y !\Ū;AVOhV#ȟS&6nմ96G 2dL%[mjxbbȿҸef1s+[DgvՎIĽ =~EZH`y%uQhUlO'2S&DŽdi*Q }Ԋ$7fFw|Z~ n&PnI;^V 6aIܬ5D6wbfhXdr oa¢JswQRHgEX2rV8>C8N ۽BI,ۅ@6S\#Yvp4@nFZ[,CM˗BBݻ DĜ 3Ak 5#(Oi ʁipm]qx cK"TMXW;)tex(ڸbu9`ܣyq.6<(U;&&^a r&nwxݔbf^S_ IDATMEHhLB*ZM:$K?n(e5!}Son H_p -JJaQRPPԆ'"*SӸ7 )~a#ޝ&n1aO|t iA'꧐+Ylbb#aeUU%|Ő8lt γqd:K^=e1(JwFw XsnAL+MLxK߅WTpoh삃X }dR%I%) (S u6#q0a. k*댲Hy^.V-<ހ~e)rkhޏ0c#F1&}e ߂5 ILX>l>qO"eHY\711 K e&)l~/{-KNT_H*Ɣ}k2#W?Qt `0㠵{X&\8FA(Ԍ[ cmTiR kK:Ɨ=x՟lItcr=7Cucmo|7Rϴq?O*B8P$F9ҽ-^6uY-2nsM3*5XNÆi8"Y*%Ds­uvafh[Xv`늎?5: f{([dsqCfE{莪!Kg܇9"qoE t*.#Lv`<*.I(k!n!!5ؚTЏzQպ`r!Jf)4R\ Zs]J%")MjI<-wڞEцC' %Z+, lBb0VD@*o`^vCHx$ y`8vbe2u毊M"lvXܤF߈otmڹJ:Hq=E׎F|veEJK.@a驰2HT+=C+ƕɔD*$J z9rUI?$~F՛8PTctsno4+٩,&cWI⨅kqĬUJDV5kKې {6 5WDD(#3Wqڗe;zpbYg=쓞VV I4(R;K#-=N0m$he 9(*T5jf=BCRdFl<%d Sp )pr64r$C0:\l`U 5+"J)th%BK-?Uxtٚ%j+.X)[نVSDpJ7XB sbĶp*b*ٳ:>X/62lm0! "`^+CbZ $zs aif! aְDܴl %%;`ڨl*0#Nx.[PAr' X0ApR-Hi$vaV.U)pRPBd$0$Z!8:a$BSzKSBK6,чu?tp$}cՁqmj m]ADc,nH8 p7ZM˺Jk+E D-})3AfHlu(@dAVW!H{-aE&Ol"7ԈA1aKP{SmpJgXNb"D'f7'ܮdmn?8>7iZ.K(TKU ?>0M &w/)Sq ! hGtr׀CO1BS SR&2CnO;ĝG3C.S}  cuevc9½lQ R7lg 6Kk6KJlWz[~lA|8 m-rVORvnjn-/$k7.gts~A{ī G"5:S? ')}ai۶DR\T 3)"l/g׷FZnTBml*fU|B/Օ\:٢"B~X;g^;VXxʵu &1L\S#] >w2F~)4(QQMI IhZ>{Ԁ:s%ٸ MP2b$:%ױFaˮj̅?{rR| j`Ɔg1WS{"I[ F hR2=PqJ藁[sż<[0 *Cx߉˨3FF E tqaae-@˾Pv&R!)t0 <jqlr}:e;9>&KܼJЖŷ=/q ֚p)sעxϠ F"yv=F: N2kO %'ٱِ{Ǖjm1 ajd*wNp }) $K~cpx=ۡ@=pd $KlXsg;|QvJ'rDx3j| w9vީ9eX%/'\茮AI| 8ϲA0 R֐x/&'^.in͘Bq! l(&6!l]BcPr2qCBi3Q 8 u놈j teb9ֹY>0Ctr.Fz<%r/4HԊt:˱t2Pk];ltg} &Uq®O#"!Vͺ3v IBr) ?,aZH^U=:mXEaؕ ĀgY?'_Em&Fbޭ,yIGFeh­ ˒< CltntCsU8srUՇBtC9%dYJea &DT/duږ0l Aw74MB֢E&#Ikj&x!b;Fͻ*i U&H#FoK/l͋!i驤zQ|t`7>6ArJRcf+ lo|.ʰV6r.V.)vHxv٦E*+ 6zJjZ5,(~8ͮU8=Il秤ILb,SuWDV6VܜuVM45. :MWI0 ZE悢ZF;W)M$MS_ή.xmI1 +}[EjMg:Zk;"?QDmKXI}r8[4vvְ~oS |ӱvT7Yڱ…{ʥ3U!EbL1Rz䘖)}N*iehƺqԽ$L@cjbGD4ca_R#ȩGW^9I+NM2WZQ *&L!P+&EQL*""󁩢M8uJLp>ӗ{cn:wܬwjw]wo=[w?4ՃK.v;p٫_s禳Q׹:R'%yP1)[mshGl0XUL0yw5ܪWxY'<2{>Hϓ•97E",ሪ1Q˿q^q?_pᎻ."7 iW p"b}EB:pd$.lfjz4ǓuH36FBwf1Tсt2P5U6c17ة:)mUa~NzyWZuUWvD֝d/ԏ[Rf{Og_[y9‡9^gd]Lw$k38Aa0hd~i [ be3bڈmH<)j(?a]zh>zW堾+n\7}:Ϸo]+^q񥗮\~n\!2]|֕NΜ9sγ锖˗[\vի{;\xwq;r|g>u驔soܘgrw?g_v ʙ3gϜ><{nWN9P3_ w{\;:WVJU-ҲjP~C7aZx?#rZ5%7^'5>_<l dbrC m`bA* Qou+t:zK>Wc=>^x}T7n^pZ_2vwuqWv/]Zn8{=wSo>3wp{zpkW~~ܙ3vLީgNv{j}o=яvrZwgϜ}?w}97n^|=tś/\2s=p^ox_/_bWʁʬd" Wsl,9Fѻ|&]Yh8\#dK>_ ;lƯ7lcGWj.tɻcYk%sA W$sV>(pҖ_wKW\yy"Ξ|nWJ9P˗/߼qީ7鍗/_ׯ]~kUTܼy2[șgOΝ?O3go^yw_I!r칻ׯ_En޸'o|?Wʝ."?=S/xKk/^ҍSN]BWRUQkx`s{/_UzŻ_qŻ_pλ.\^އ3R 4X$uS4]^zGUdnthǟ. A6NPȴ]rMB^xG>OܸqSk4qQ޴/9oN[/+!ZkUOyݟdif Cc-p<N5ڮY UUJ)ΥwD Dx<6J5 k샻wȹYӔ04V_|K 13hU^<ϧUS[kǣч}\Sܾϟfl1 )cl7 38 ?zd8xgIUx>*Kde$iZkjƱrzq$0ɲ?{`'gf<qZu}GEmXܻkUꪾ}xK[7Giqպ{Xvy%'Y>{ (+K Hb^$(ʓ,B 2xUnc$ΪmTκXF6# d(A&sa/Icq~Yjko|Py3KCdKSr'Fk'm_tٛn = Om9'7 gW+,5@<$^7 V%qק*!{Avu&&S1 Яݰp{__7ۢoc{q.޻~HU۩Ҫ{HqqxU1zm?'dmu'|\Ƕvc}B_t}o7k~|tS 1(/o БDs _-WOf.ֽ,͓8(fw曋r]Wgx9Ξ'|^1=Pj6ç?ZV"_׿;gwPk6<br6dƝ_¶r зl 3[^E.>4r{Cɡym @b9[CpjC@|`!!{p\yDUU1ˢH҄sI(ozo<=JDZ)ֿTKctۊf,n [kz(Nz馘k o5Z~5&]~>}T޿pL^^C^Pְ П f32y#c ۶SETbY/f7Z$Aۖq(^48U'M>/U1 AS)߶x3_'E3I/yK(s CTZujٙI uΧsmE gCv\rƩ+utyhf: 88w3nrUVZN[~W2><701#(C9{ee~QXiSѴXg )0eF`ff Zf>msZ!/M?{|fҘ[G $0qFҶ9& B[w><< P9䜇rUuh{g TH1͍uYjUR2iD, qR]ݵ]_ _ڗ^}Ai(K|8hk,OѦ:\ 2!Ѓ<14J!$ oMTYM^>{w{9u||'l]%$%Y$)ª)b DRp!;g[]WzڮeD 齟eY'k5q;Zc୯|νJc@h  6^kL 0X1 _okx}$[逾-N/d>,}6m}?WI/|t@ֵɏ~8q.D_{fj ¨r4ΦqrT3w ˜q4iYy=R E}D r^1c%G;gzRiSqy(;50?.W9j`D I k}YƣɈz ,><}{4>:]T yZ[0+)"ai8PFֽ$3TƆqU 3b)0 wLUF)[KA#Cuy$P:皺P9@Hq2M,Yt1B q;k,ۙ7y XDD6K{ijE1@FXßOӟjcIC1Q5U^q̘v:;gȤ185u]0I4˺ 1keU%I(|]WłsYе흝!eUazgk2fGUlc@{?U#!c ^7š~i/w$=ХE«# F[Ķͷo2EiSK Hs^Ou]-fUYzcq{+ɓ'HE]FaQ3_"r2dtI|}dy;d'kperU@ PX/^g~`n8NbZp6JYq# 29^1\V2NC'v^qpFwm)F9mmM!uH9DQfb]C2C·ǷNt1+{aF=΋<˵3OǕ#i0T`;dqEd0:)RMPI?R@mQ(^˲'``P*5spuljU{8JBAycx쑭k휐W Ģj^>qҴeEIYlHaI-  =>9]az"yEN[w PUAZa50y;wܹ+j7_>zxj#dPUl:/h4dz.!wZm"6u=6\!9oj:EsisZO`hBI:d"8"~׭:^I*nȈ8!ɳI׿ŷyEߔl#ƘspzܦZg;. ]r-( ]FcVnc΃"ϐ .5 ;@b.mܫBRp6XY\HxYtYT J#yʈfyb>gUtW]LlD<ceɽ֊1$ro qby˲U]G@rrX/fk^ @xF(Ya8FI (RP1&LK! $X+349c0P~oPd42OsVkA 4MGIESsi Bzi쬝OBtUTeYw.cƴ{K+ۺY:Hauw~Yjմ]u21 <@:`Opww2h%iHf\hAv4u,Ӭ?9o?}#M{j"ڙ?JҔ;;Go_z{>;A/'ǿ4 έ󀸑vwqY|3O/Io4^0^Fq#w"(@D7>Y,]]q;~{{GN ɥ]W`Z^YBũuN0I*۷ˢ[ VkM,Kݻy ZgV 2K,^YZ h07{덵RRpTJu- UQ5t&e8[ B J"E*!c0ln4Ty.8Z)yBeؿ?ozLV<.W猭*Al^-NqX-z_r˝˜Yt8M&֋UmSwy2[5a,eLyl" G/{l&Ɛ?tRFԑ0h&BVeST QaȄoxB!0 1s`IK9M"l*7g!Gpŧ!;6UO D@K`<@PF;ÉBr⬟5MӖ2&jln9ɘk^`cVgӎXq@ޠ'10t#G䜜GQMFoVeFui]ׇnyƟ>yvϞJ[d޺}E~Zu3mh2ʭ^{i}0N?,j<GQDJ7mk506mwݙHm-+4:꺪9?L$LdXLQ7UidY^EUWl'&qEU-vQlzr~"9"eq# I$I8F[HD5FyX.|FT#O򌈾կ}N٣G ؙ~kg?y[w! aRT:&.9{ 2s6neK2R=Zo=1fLK2$p?g_0|A-l(0 j5sƘAWrȓ'sΓ!֫"Frd:k4Z1*K;X\L(|<(,֩},W&y l@wđ!c¥k 9; AoZ8t@B.#Bhm$tcmךXP$KcF9]IpN/Ϊ팽󜧽~šL4J;7w~k_380Rxz@$W&x=Z?n,tsȥ =?OǣdYEQve8ʖK?G򽟾k dC!h`sZ,KZU <ϛk8 ],z1ayu(8'<6[===VC+Zu#VJk퉼I;aej(Ck p޾ŬPk_u1̟gat2 mZc"s!*YƸY=8QJꚕ4 NO{j%Y%AH}[.sw4# d]vб~̀<8Y {$.y<ȣXåqkg*i⵭Tчn)(<L?zVrhx8*" 2\JţAF$iׁ.N+!y i](\gMk^H)l1 ([/CŬi;OdZ bj&!O7O/wI,`ovO)c 9d!ds=s <I8Z[m:QyF\/WBଶ'IQDTeg@p4w6_,jZf}]9g?R``Zy8zqik].M !Sy]FHF=y4tm;mG0Vu2 g5Waݽ`TR+w9e!#OOwww׫ݴMgNp16]U8q ĀAz괞f8#rB@QY\po{aZ>y/qK!2(@(c8x S)9@2S۶4I;"HSd)8D|2jVu6Mo9ʃopH{> V˧!"UV׺AdqQcϻMӘY,?9?J+]Qj9׭Bw DN6'T"7Q@JݶI'a)g6JcyAHQ(**:%y6g$F[G:X۵ { Q3ֺPrġjD ɸ0lUQhtC){IҴ]g')Miy #krEmэm <@0~Ѵ2)ccA"w 8|s2@OI3y m A"ߤ !P B'GV4t7p!ڶk%Q۶%rkC$,e qZYc+;g Vye0ЃAG=SP[3BϞ_7_lW,;_Z~ɮ,6U&-A+|'A/,"A0IŪʬ.q)P<ČlSo>\Ca:=9}{X.NN8cw8na QKEIey7&hDpu/Ͷ1`iVtZcBAٵJPnWUM{pf 0Jk: r6s_?1 "ΒxXei;ϟq IT+}ws[?\u,Bq UUi,}cAƃ0fYv I`\̾~snvw1Gyc,d<}J)Vu(_|Ͷ,<{}+9֨?, Y*c֛mEUU\<}~T t)o/(|b|4>]+Yo֫h8N'U&?w0 jib0 J+j2 n8Dl /m4Iֻ-x ]K( uLܩ7FTs!7C# 4 @P,w؁lFѣ =`?[r5'L, <}O#ڶn!&ZiexJjhh:% F) F֌PoL/F0AgQ'l^0"7V]_;:(%HPtzX NڮIBK9 Dٺld߅"x\)v99f[׽V:؁9[pxxzBdF"`j!ݮM'G>|j=||Q?_=4pj<} :p-8iݾ|d&w@@@yo:iޓ& \p mF$ U#D;98310mTJkmr Iш0BEiגyI AґPYdXM^T}vvG`/aXjy@燓PgO_\]- @ZBziDXF:S96w. #Bx!"Zw%<#f 3)R#v78m#ze:<@PT5q*9]%(K"!d2 IHfWj\QޙB~v4"EL"O00KVx2I۬MfX)}ƞ`#7g6˲*k0("Lhxk_{qx[5iGi&og(x֚þ<9ㄭ[lߵwy&uMLCBYevYcK``2=̲,"Mn,l:FJVc 2\jn7 i,j$rۚ#ByR@hbLMyt~S.s& #D9g3ZkS3[gIa8=<8{(嵱iˈ5~/1O *!=F`4~omYSսQyG0ւ i{>b,bm{O1(k,P0J ͒jW%yj#` )#a/W8K۾O2F`]'5U8(()uM$"Gzf6/x0 BYBy&ZGЀmzդȐm1wP, mTO @x>a{<(Q"!=AKSJ)Pdϋ4T5"gݯft28IYԻ0 a Hjl(q (eq8VJu#J3@cavB{yD\utv6eCa#eںAQFI`AWsG(I͢ڵGiR(ڮD0̜&+ C@Xz8L^w , U(+AxDQ'p>.#1B9 E;罳MSQ!!hZ'y= IvWGad۵9UU0H(uי0ϟ}h4vyiE}bT|xw?rF#9ze R0BFi:gwRUq0&x%{aB1`&<# ֺl |( EjkA>_,w(IǧgI.u+F 'Jj1aSJsO#>GZG`WB!$,Kն1.Zdu.+riZiYoqJ#<Q (Ɯf%SFGAu\1jq-r4ZkmA\0]X^/_|{usMйv!<Y\Wt9&y:nx5޾__eq,+ۺٕc Mnל|dTxģ4xqt8}qE!4R1*gIU#=`nfqeIzuy:$a1A+cN Ww N0N: * ,MKV[@$ DĢoE¹,.>md(3oսeQ 88ƃXqt뺶MX9D #yqo?8!=B( ¾rzpQbp:|7~[Uu߫kb][Dl^+iGӃ]ٮkh{OԵpX82RʶNOS:5I)oDrFuFK?ќ"G4>AE n*l4T!(f4I]"1Qu}D.!/&GJfJzFf >8#0 A+r^Fqھ8'T[׃р1f0?Gsk´0qβݶ`mfQwM)^1 ]!c<`RrV2I Fo7ޅۺ >fYEn LTp }8'a1I8~:Ʌ3Wn;%onl) AwV|B:'G˲'d`~ʴRbQgϟi:>\YZdW4a! Lmy(9Y.vM0Vr!pzw/nnnafuO˺<ރs)eaAQRlc$diTBR7Jcrq AiI2"ݻw{Q bxYZLh_5  7>>?cGonj5ُ 9k-x<8 @m@ s@)6aY*m}rx4]@p#ӷ(i-7" ^_]*Y|ӣ"6ǓqvҲX,.L<_.Bp8;Lq~Zʓ8 D$& f~]7]JPE@yDM̮WM/WUYu@<"/׻,`;X%n|nt8 8??\H V"F߽ g_u]YL)Qre)Zaduq{ QƳ,mc1adږ!V;jSyPZ8㐥{'HH#u˫fq?6=DhIg<&5#dP^P,lcer5E$γD+BkѪmֻ2պ2 #iT'(/ro]+9N1wo_`mw@ AT/(m{q[6h:[k=zp!ܔ'f? R`J|dz͇u F0ȓ,Z;ZM&sejGfA05FhNriV{Ŀ}ON>?o/S6% ap)m[0i%`hkwƂQN>GaN4uU}7Isږ lwb*38@ţ(Ӭz˴A~prb: /zg c[90%zK8?e!MYnq9ˮ6öVwZ!$0c~å10(*ƣwwS&6u1&}YHmyzWޯ`ʒnU,HO4|x(x e[6}++q03h.@giAP6 Oh8 ݻAr#Nw^0<8y]GGclkx?YVs`ڵpz`]^JL߷A|`d~x3MheY18U)kqfѣf3̊JlRս$9)_ ` J*@}.>k,Bc8 ~$Bk"ΘQT,˳⇫Il>g LG;mnʍt:]5R!ctQ;ЈAqFo+&ӼnO=ZśwWqQUa1ȳAHMخn*ii"0bv]+œSJuX&yw$I10fjeg-9뽽rY_~^izy?z%t#;1#x{}$;@ُK73bq{ p:/ÃlolO,7v(,Mݮd6[qgPhL\Nju+(BL<ײC4!V`,{n2֭|b\ J0d\1FQ-v;I&ബv* @Akq#HoF #Qoۓ6ixp#azN#4K|B2JSb0  Iw}NĦ+EQxW7US5SFt4Ay3˶Pm7"Y'E_KfXyFQWz\ץ 8`he뿿0 jZgZA%g#aZ{ vc[1 PNJP#M14y2Mւ0B׿z4gO]6U]߀&rF"lwx<]׍>FpaJh>"lֶ=4  ~|Xq6TQ `od _/a ؿ!;#z#;zoF|"b&Pm[gGՋ4 7]7k:zΓ< C l€m4Y3Ƹ$5mʭ@@3l۔Oڮ=@c Zqu= B1 a,p2+1> =B}2+48`9:-1uiB\}+?(a]EE:EJK}yL ?9:Ԫ\B곇ogwY1l"B |nvǘ3J :'#,P&躖X VnD N#B1c%FSl:"_ߦQT,`"wij¸nq]ՁO{ya07;qy;?<Gwg?[,NXX,8UU'Jڮ޼QIC3oծM8 `"˵odm{@CGXkd:-V r 3dͪW}}s{;9=Rx~e<0 >~B(!@]ʶ_ktGHOMiSD9.|\7?|<\a^w͖⸖1!?No$t˿ݦow%Uo,__^ 1!ȩ4/~O"##P0'߿,"Ñ _A10r'mo c^h4"`޻MY-0cBfLJGrdUVL;?緷3= ĮmNt߿ywyP@. (!$RUm?$%&|:^RdPOjyyy8 C&a%ٿÇ0wzZMզZ,]e{tSzUU%"D 1c"0UU-UU$GQ$e 2pigcƍރ7bL9KU qUW Hj(;m:!Z(ŒN]YA {w߼|=~:Ͳژ=MR%+a84zISoѽEYVR"uA6ů~~X ׻_}1 8I~j%pÇ,'+7e\.֛y%MPJ_|Y S+1PM]/@0ZUU]^^ߵM4A, ju;ph2źzyzyb<99&Źdvmڶ9==,{nw;|2a{^YVU]C"OҴ:C7Q˫!>9>V%n0.^Џ4]GaD}to-B̦xlv۵L4m.n6]tt4*␤[: ]Bxq67/iDgmv{?O~Z,Va*L}xlwž u8,IVO)Rt:|=,::W*Jp ji:B1͵*󦉫3vL-f2nR0@(98]}Kvf**m(B5iYMBDBI )#=wuuG2-3현8&t4%mG 1}Eta$UQۣcAqd膮Eu+Y՝8!m0軮JLRSӪ& hɦ3)b2>r';Ĕ@7v v6?O8,m:ðn0)۶>dI8_[6FeQ\]W@pMۜTi~/G77i<|pROOGdRVUi <ϹP3 5me]wu]gN6o//tM[V( E~+)ё)$dٵ=9Y\{^&B(+2 z˫`5gOʢt=WpHvdDRP{[2 Ju]21?;9u]7&Mҧgb,x6MUם &AM;@Џu]xg:&>VMRڦ1$`>go#qEZ:y:NHߛs4gGk)UL5pBqj) Bxl;!e@*Fi !{A8\>9 }h1 ,]t@$1Q@AALDQ0EmReYqS׻k\&\a:U]yS60c&fuA;&!l.$׫麢wm*յRjгǣM@ 8@\]]>zP*o|Çyq!Lm[u:BL$eӌ4DU:RXabFi+ۭ2Mm%e4ovCV$O~||rByִ\Hkf:dE5]-!EYa/Ҵ(C׷!\W:eڌwW\ʨct{اeG^KM~p~ľ+✕ESvpyS7ߟ'4*Q&eKYQϫ)- HRJ8F#޷J s4z)B(W~hއ$0}|^Uu2׵ϦS0%B~zL0 Ӷ"/<pdp g׿?.<}ٶmYV)M`!g9ò,#H7-$˛[ c!$@H400\o6b<<,˺ApdYO·77I::`QiߩZ `;y 4zhzE0B[Ltt`2>yQ)7=kZuUWuUtfǗtu !`:at]%\ :~wu.@@4Nby>4vۃ^QE.9dWl8&/JJXwȯuK" B MAɺ=DLK:&4Lb¦:BnmLa5@-aM+huS(H|Ϸ,Jyٸ?iF\igyAtlnjS-Ӳ b2M]yQ|Gͦ l: ysyEеf`%]�]rB(A l:v`۫>:?9?4_Wl֔ Z!PF!cM?>:RAJ@|z49:&f'_{ɸ0mw00 |s}Xsy۹Cq4K0Ii!:B0n bBBC>ū7^8JmpyK??ks{wYg0B$Ii1zs8d `0eyEU])|cBSueeYTv4YAkfr ˶Lg~7a4!`eI ݰ -kZYUFcm5nT02;l)+}Msy~SuÐy'%8~o Ώs)~[,:}݇}h6"xf1v`t2t]Wםe9eΚv<ܭVᰩkƶl۪78yz 0eYٖ;ۯ4B4MOxz`@#fًok|eѐ"^*Bh`6e΋+@)54= M笩VH԰Kqg.J]#߲-Yoph,S?߿z}UIJ.mzxvjfK ӦʏgmCDFa3햗ޤ?~_yiF*iZPPe`\M3^pH*!Dm+f !y&&d؏|ǡà"Ekp K7&g0ECoHGLaM)A$Ȗ!O!!D UQzi2ۮۤ"q$~HtFxsW,PoN}6MٱŚ+8G)}^˖"kmBhv4.Jl 4Ӻۤa'>\r꺌t8ԥw+%x-{b@X#t~N-bMSVBcQYeY4mSc]3.L~<i9h:.]ԏ$"%m+N$h[K Ldf"Y03 3zaسfK@lrXUu>!8 C@Ixrg~_(dXPr8 €qw[]Ӈa&i 4k+:N$ʊr,McviYfRJu]]riA n߾ny13Hq @߲lq`cqikz߳ mGtvMi<%n-g_Qā|h0ʒzm Gt/|'-eu' ] `sR2)fj]Ͱ[aY(t2q\Pu#wqҪS?.oi$s\KX4lww[HǏN&4IH!}񗚮Iۯ(IctDܫoQ_Ӵ,nP΢~۷Ƕc~@DnAM}m[!Z!XQa|w<~!BHd(d9]}K˴lmS2QUb>s7\Af #AY^M=%qҦʋd4a)&kNNX9 w4e5{}ƴC(,pLavR;p4bh+߄Ӷ.kEױ۴Ɇ+ f]g±m&Xua荢b* Z.#yiX0NLClw~xrz!./$>@ᬕ he"?n?$6`ntpлzw h4}xe]?/Z4]#qz)/ٓgGWWWRw߼} M&]nnoR@)uo:6R!|4 )ijLp$GGR +TRO9Kf3iS՜wEU:ccL#N2IYn /~䃏axvz"8 AXM&C_M۬7Q5x0<=OHH0΅h<(mZ!TJ2VeɼI:&Gsuq/`,6U)D^mf'~UմUS2(RxC$넊44@hG@Rht| |ŕ`FPUwY^B]^~6@,C4g-mco'v&mln;;Fp\s ,R!DJ)w# _èNY 9(gʴriAYa醺 ps[HY] ${ck\Q4πSzAxZ9ׯ.ku7g~x-77ܿYu@]nOgct 1V9#5~︘~ɋtWU繻:?!K%U~4XgBb \d3 FÁo^j8ᇏn֋~0˚/Z+; pv:?x$x77wa?:PtBf؜? ZNSΰat,Rv}s PӴhx{XoV#S: q!E^ԋ϶za@ m;0-Bue.mec^7 W23E0޼xsBFa"~<8y~w:D! ˤ;>> )nE0&afc C!W4"ϒ898˺hvJ3tq~zrZ.P^VkmWbD0w~ms(NOGyu]GڎS&ihUweSYEQ4q!x۴i"(<y^,KYUUEQfgi\%BX*q07OO ]rER)i6Xl,)2y>Mh"^VeYf3=C\׷L˰LX]B]۶u@W^6ϦP~8q]Ww0 G!I_|Kwdgfr `y{ԯo/,z Ƹ,APW￿Gɠ][ڶ`~Wb[#DZ<8'H1[ކa\Mχ"$Y,jQ2~w{Z,@\"[' j9zIxֶvuYJZ3@0:3 ]0Mt8c)>=H#Ắq۶R<#2Mg$\rڮVd˷ܱk$~)( ؖ}t4u7wG咵ovd41:ֶyQĻiZ)yGiEQm(jʋ>$< &^S'1˪=Iq4NN$R6_l;t-dDh6{ys ruW C1MW7q?}o>kDTw55 Ctt4 W5-h풏N䗷w@'AA77_q]<a `4"n7Ar\=!iWySJ |SU6]WVi~fh4Kpۻtl7[!%C >Bh;8'ƣ(/뎉$-onWYx dv]0ć=P&c۶ EQo0YPjr_ 5ʋ>|ܵ]u !bKdrLGgi Gw߿v_s\p }]Wo߽=tq ͛\ɢ*٣Ǐ4/zyG#S?~~uja[YuuU̧eYE M.eg6A8=_1攕uC@Ȅ0-4uI@vYoc ɀ(ʺ]۾~iYMnt|߳,{0<qբ*hc+{vY}mɛww0ӟO ,׿4O!*GǗn.0RcI$>`q-_nm,Eb4|dm;>FHpQ7 =϶4۵(z|6gq0Xk[ڶi͹#!Yci:/!F?L*ڵQn-s {1T-ҶiӺ=@A4oִ000 òi0nYiZ!@Qƪu(M)OI5$i25zieoۙkyїotb=ONM]Þfhi% _*)40?lݮ֎LFc2;ƾ}x~7howqV Z{c,bUU{sr4]8}M$BYUTn୓sQV_q]PݵoM G\N Cl /^|fQdb7f7?3@b);9>KY ǹ}~}{uOGh <[,i&|ǣi Wh%I2臺 8UuE? Ç/ aqPatKaXT%6 BB i4"~}l2=/^|{qvq׵QzZˊ|2mk۶kgϞN ĆUUSqX{x2zA>~_u'?R*2P! R*KQ%oo!AO.?x? tꪪilm[8 EYmvzGiM#_>$腇8/~-0štJpnuz!N\Ǩ:a0`hW׷YIږb()ǝnE9%p4 zeϞM{1u- }FDpI0@QBvH lwq nUT=T@*x (y?An[vzC m:4[.׾,qp: Ye{x~#Ң[d80ѠW6q:FiQ;Vų>LkyY^\7=.j<:objiEAYW8/j*/ k6ۧyx9!Ƈ>Ň& /+K#M֍'`47jxף!f6 ծ qe-//\ASrIq"}V*]hZuPEi]R |j9n$fqBit+)'0r,!D5Qq-l~z~}V`tTsܦ}w})@y#OtwF0w"O?~!zws9>#P;p8XV8UTmA8_l:R]\.V[ mYkPLfCʚtN(#iR*IcD0`3p6~b:y )Y&훯bDS?}Ns6.>y4wF/ < #s! n3 +5ۭ"O |ńmYYQٓgOn7߿B:<xzz$qS 8jV}nw˾k8&/~k;^TI،$é9NK4?O1 Ā H)몪ڶY%秎7* |(mϢy7W7yݹ1BY&xBM<\ۭ:$tl߽ #ضBcZ]f|28kbQR5צMcе q#lױvQjFp"Lv}WoYVi:>\g1ƤyY2,Dd+)nHSwb~9!Jhl w(!]c{yȪGY`{

/()̱2>lwo;!N"!t~z𣗟cs\,ȋJjC\]]ܼneUK%0)z;ٽZہTQVe0>/_@o:<7]/褪}[/ESB ݻw퓳_"H~ ؟MG"Tu:+gSaYfa`>\i,h<)wΨh}%]v8q*U4]Ϟ=-mzd"`z{[-Lwۓq,E1BieQBФXCc!` l'>|&#Lp40ƚ_0u}vkߧ~0Ӻ~?ܗl<~JqAa%@mUavo !5M綫tWȶ(Vu]sܾ-nA+BNZ~69fBn DvEYsj4a, Qţ;xw}@8tȱQ0)%6E?e `N`LAWa۪̎cseb`1ep$dY ׎B,ve8h~4Ic,el1MD{kQ IDAT,+fЁ}ǃfo%SnEE"ڞ[RбMas'ݕu UX'RK,˪ϟ[+z1|v1nB}Z52]̫}~~~2_eohe?{ +9^hBt|2{MSՔmƘ_/mດRXHƸmd}?L((veOӣX. Īo-;+zot?PQHd[ezȳMƣ$qݾ-"sw)&t<ʇ^~˲ Ef6NH)>\_믌Bg}A,w }X(QxLJl2M1eu燎ض;0ň0V]i@J.5I(7wmM FJizWwq2M7Un_/?]o:/)!N7ZD=N"0ݧ8{vp ü|zu}6IPJmVJ(Y_Pԕc ).B0m{Ji]VCzs]Źڞy޲.^A0toE9NɅFxu/w< cdB9|1{|trDI]׮mE SjT^Gyl==M=}zz:$0m.3@MRdY4H`:ac0-kyUǞq$e_9R}zIYv7`@ w!WJN(Aj說w|1)쇺n0ܲ|F<םN'zLgol_x{^-o)0pA20#,XRu3L[VзoF7(n:s+).Aϭn(<;B@9Riˢlbu/''ym}Uwe]gLF!󬲬y`l3aOtΪla ێ/%ֻMڂKaPDQp}' O'Tu[E׶ٔRemmxuJ:~}{P~ pG',>%X#mc˚[áupsyfA~8X b:rvmZ> #[n>(BErWiC9[ 3#^_Cz%5(p>E gƞ뺞4uUrו[?_xd%:™04b2K o]OEs|xz&iVV]>Fw7B㴨o,M 0xry.buU:6/q{g #Т^A9הywoC8/~nYftM:eLM뾟N'~gsכ?h M?|/_6x2A2&n]ū^uyU]Nע_D4s΅Q-QZ68/ʶn68CTZfY}Bi k#FcC,"nד鴭2Oژ}YH~`uwU5&][s۷wZ]},P~YVh aJKV830ˢl;훴(d Qq BGZOcJ]B4x88I4AM1}rlfwenjf?0󟜝M0шrzzz4Ǜvm4JWMőX}kP~d @=>o:g5u;?8"hm֫GqIMU7xUoۚRtn p8g.rݦگmA8Omno f9(s+Wo,_<;+W~9wmnq vvYsssg(\]WdPV|4)!cQ%4WiS4O?; Ʊi9޼??8JwONZmdS0@srrel~ ]S4ݧ.yVYYfTBEx2Ƙ~}sN=.wZYb͋S&q"MgB Jq8RU {n*#K?J'duCRИ R.&8nBHP[ 0ʸ>OFw۪$|sDW12vZPߧZ+׮Q,'*D>kbaH(=ivrzzzzZuӶ,{zǑyBoyYU؜gYZlc\yQRA 4v)fofm;N!|p|gYgA8l eu a8O?]oVQWH?aQ1,n ` mٔۛ[Wh;q`bX.ﳶJh^Ԡ 9$ 2^@1He2l+㳺*O>c/Jjp3Ht:i:a/8Bo^ lmNw]/?\2UEhѦnWj`,kU;c;b$nvl:Oa8FyƙcSw4 sQ`- Wuw}WW%chi>/d:'Jwe~nlk2MBNhH ٙMŎ#e-f bϏny۴-*8dkjY{ M&u7\^/_x%}IϋAA[.mm,7w/?9:f۷b~ܶm@²nniMmߟFަ/pN/i}C5&ߕ!1!dbqzy|lrB@/5a}IGq+ułs^j)J!v# ^~ W'Ћrk8S^o o޾'Ta;6Ѹk[ Ƕ%r{pXl (,vFNcqΥFż][ő;BH^Anv 3PfG(N(' Q,q*F`ױ-A꫻5s,]<eBHiQausK|4]zxcL0*z4 (!]S{#>;'u[qxpafyy6ZcO__][#=?9l6$:89>/:۬^* i/?9;8t6Q²C4 x4lKv]mS1F ]C=gqcٱY?f6cYq m'c[ŮHw|T7c TѤl+EGlmhϹMrOp}y]-?:Qw”_fug(J9A  % '6eVzh4-Aof>PɚU/@ϩqϷ[Tr[EÅMH`A.P6a]\ BTEUٓ3cRz2RLqϦSen{ٻA Sы~>G_|z9҆Z8+wo.y]^\0 NeN>b~}8[" ux=yhF Feyש4Whm[#DDSKD֏.ʪ||4 Q瓳#x_*-KǶ J׌Ѽ(fh([8/cn6s>el6@Ȯެ֮J EmۜZt:F_~9HI)ڶLMYRM'(&$IT]}1l4uaٗUUS+(N Ư_ƨF{\L80av֮ˏOk̠t2a]ijqfq+IbFy(956e{yj@k,VZ0QlqޢiAJ﫦k[1&he=? d6ov;#eܲokϵ]',#/'nܝ7wڛ×g8N}9LJ{۶<Ten(~2N`P]WQCgl+{q~~^7c6y쇄*|5R^`$F*ݍa_>{rëȡaCW\^>q| 4nsmÇU'>Yo@\)"Z Ir25 8CGapUUvmNBo:Jcf >O붡t,lϏN/=Rhl"0;v\`4¦05Jjl:~xُB?hR)]ײ,ꇇU_˗~~UefW8^9m3(] hڮp0AR Fx:]wBTRx0w*mm߂ٴ8~<쩃㐺 z0edP6}eeS0LKݽ]i0' ( ȶ^5ޖC'Z!6{ az=H3` ،iS$ Aʡ~%﾿Ͷxݐٳz3_kDWiKA:cu3F*Œ['qm|f<e;}'|ZT.OcضO Da/Dw}&MA$MRTjvmy?>:$v|enYU$aYQD&IZx^H<˳/^!)^Mӥ ( CQcVRyQsBf|z}7DQ4i;%h2~6I8s:!|@fid٥kT{} :%_~c:?/7ynVlƗ3t8HςQ{~yYQt9+Fj}'18VMUnX`Tfx]n L2#D fJRb3SWR&~Y7R*r{8+ˊs$VeQjwA(AJ?8zyvp~zS>b<~}`/~cP>A(\oK[]oea uvSK fmQgi7FNGRhVV9p:QJ?{?;?OiQnؠ@EƁVk.NWDwBI1e;$I߯7t4U5" CDNN\Fyeq6݇ Awb~PkU4I&TR1F˲=KUHƑElkP&,cCbhʡw|lgQM?9d<|6ٮ7h߯v ^(CӇ.*Po~rro*QTϦJxAvb<wbz{}ͺǣmgc,1C+\ccN376Y ]Ee'eãzjnQ(Л&$bKGMfj0vwJx~rtjYVۅ^.ĵ|Z׵E36WZ+`W'NjY7O.ڶbt:gin|?`6w}g+E+Dp}qv7uHr6doh4M[miΦ~, N: CuofcBho~FayM̲NGͯvZSFA8z6 :`& IDATI9\̊f7xvǓwwg#Jݻ׋d:Ч 9} sV6V`04! Hk~#EWe.O hIn>PՕR&sNb}+d/Dp1>jOiq<ûkڮ?p~vpC~stq|ul~q~ۯ糳Zbvx2OaS4>~URHĀ!Jo@f @3#NOlt_@0B9 wM{ pR%ǖ>~w^l_m4xC*3TmONq/nn,cx6RHv1$\w.~r8} BqU4C[vy` 1lj4o*-` F S <ۦre>}Vӑ{w{U"qu7,f9a2HHtmU5LValdo&,dYfǧH"U󃛬:Ӷj٨k,(|r|g #`QWuu2JdoF(Ij:ͧAUԠ~#w"{]/[qoD˳6+ ]2 G/z=;Zm4 ` Xrѹ]IHFw`Ψgھ3VY_iC]dٲ(@H9te1j$P,Nhq~, jksֽ~\8eŋ#K*lw$nN;k4dȮmbˈ 3M=w*(ZH6g~{y'[ M[*#!TJD7qJttYP  !G@8ӏ FX9ecf;1pd0gCs/e6]`S!J)*$G~0d'i7R@@l |>hRP|Jo4=_Mru=ƀ3 #0$\ R- Qal;*sdWt %ķ77 `9`T2 ,Nz)0vPEO 0`uZrs s0kyE~Vl6;s2hwlk!uE5@0x(Pk 8~ZIWsϥ\I_]EiY7u8fVS*63/ XkWفvmpiCӴm+MǓRa=ȡ0v凇Brq\ xE"0b ՃȊ'q<_5g`Y*ǎ}z1y^6TOA,KwQmu]ģdC,ֆAdW/^<;:8q=c* Bׯo_<{ѵ}]Q;`68\m8h#7GccmY8 YG2W7 'ONǣe6̦ʧOapuKq4A6UwŪB,߾z9 zn.4eS][},I#X,"ߧt2L WWxtg.D'yﮫ>T$2dJЙ;.+Zu`q@q"kz-a1AY@R %*VCi0E@ 6eF0A4X4`A 0Fa11 %B%,$8w C=6z9[9 GqވQx9k K4vvv,Χ^8 $b>lV:qdm]["w(`JA0 Fߘ4l# q|( :FQ `&n~#T'A)@%IhMcRгrѽߔKm50R{وRV`10toa4Jf3|4.)_|vًo?|]Y6A!#)EQUՉ~W-0:IJm1 HC(#,2ȀATQq<ͬLuPW7 ZNkc0n+n_%q\]ו g,zx7i k룙;(mkZ^jbW^GFAj5(mA%`*- <O[JmHi;ȀBeM=۪+Ola yq[GdootE@ױ`b~׻WP@\ʾiP[\X򳫙ٯw]uΑO./MM&fZoGEqGzf}/?3]sfo߼/!a'D4u(wc.릖 6˒Mg?7x%}% Mc/ϭ`#t5YifQ'Jj=Rł-'>ϸB )@;@b 1D2`]@pHvM$ΐ(HDH: (͔¤dQ>@$,Ј|s w2{o a̴GrЕi=@tzחvaN'IZ`!@ lD(d%pt  RZGrQ0cc S }CDM @""?[9cSDĎ]TKLy Jf CDB`Ũ 6P s)b [Z@ƅF1d$z/7myM^cB(u<0kmhc,$B$ :ZAy<ٽZcMeRfGR$IUEѦ塅rӹ<2Y-ZƲ* !H0<׋X "A"D:֓>81d\qJɫm:1-s-&.x%%!]:P@Β47b6 > S~_f&:#Vwyt~:ˇ(İەys;pE/<*.y$\iAwBۮIrDUxD|i ޿{/>G6n1{n|۸Hb߰HWI2͏Wg/ÇJt9>p<9W~lN!>,uYYzqy)6J*n|izXD`:Θu?o?{,F nˏ?h8N2@,B= ^}4M2uBlŇںo>H11FFa<cϾy<noӤ?L޼}?9R06C0.q.Yo[m?zSB18: ȁ}& ;cM/GOFg"q[ScYHg &Y졨m7Ls q69.jO\|hU$ xz謉. Nٟa,5` K1Qo]Nl\eI"x(9`HtGfZ9OReɅHރ,)PA iR-EhZuE>tG]y9SL"BU bi9 b~t"5C |6rKt,PCH3.g_X@ R>yv9Ll5{nXq!ORʑ0??{Qe0ϒD)1RYOeΒYk|!$Zey@ dGr>i2m mtmmS4]L]DxebZ bxxSn^]RɴB$3֙P7]Q7>,uu.,]iWZjDgM/nnnFyQA?I~^N.w5RaOe*7Ey?5u˗_|[ں'z\,O,0ĺmHQw{T_d|\H]mjYo_߾iOdzyvw82{xtJ'PeIյ)i͇r{!D0׶rN1dj@0O"@p5!y/sXzl  8o j!;te6H1v"rb ` qF_jcHeaVl?̈5iq[Ag)ȆQw4Piz|r, "kŸj[ e}Prq~K%blCP8)r3c24J]ۺcAmb"BDp&Z{7!߼~=\]FM ϸu{yv\3չCL󴪪l6޼} N?IE#\=:=O3ӳjdba~v6do*N&Й>PԊ3\lz6]]'3@V7uaw4?Z 7F^<}"H%RI92(ڶ2m[DgLݔYp0H^12{fg2tm4\t|(lއ.F\g9 Y_ht4M8HR6/&g$Kl׵sa`83JU>fJŷ#rn}΢!,{ ye)ooiɨ.rLz6.ж=Iax Nm6 ΣHA;` lLBC_1d2ͤatmLRHFaY(!WoO',ò88(Z.ӫljմn~y⁀&(q9W'xRU`8L;4Z%nԗY?-6W?{Qgl?<ͳ:~_o6#Qo2̵#.׫i?891&Ř5tH0c+G,sr2_lu_\]evv2&o\m7k\sGP%^~Du_~MLHL  y'EZ`<v] yeYU"%i:Ki֋TjߴMw.8?BM  d @p7I>BdBb$s/(  Xwjja?v~"#%)R֘c#Ä91ĺ( [-vE"u@qqqo}RQކp ew9c)"Bt\ B7. })Zq !#Òp]Y5 ^{Z>QdA&RVA6u"bЉLZ@|rΟN~rquVd$JFs!G d D>ГP38g  IDAT9@!%ZcI%i ebû `'\͔ʙhxwzӤɱ,G~󜹶*w`*DlZp4~Q~PHdynYe3?=J ZcYB~R+9_vi-^-$חRJ:)E?MbC>MGgMnc|YVLzd8m$Tlnq{+B@] '`q?,d3hwH!U3m&)314[WVGk|z6B GskobSgy欗pOօ~/c M窺OCC@>E TK9 }(l*I'EY}u" Mo0ɳ.ED͸ ~us.(E/<~붪]ΦIRw @,2lmU|\ XD'xge\)$pu'@!9k-`(yF0jhrEOP2be0p!W$Ҍ3B iE@Ѐ#y||2.MC RdDgC Y5 {,j%#'ɅB tƸno014;t`bwDoRFY51H$kG;]Z2 \ibqt\#Ѳ4\8K^{CeɉB \rq cNh{7NG3t JINk(D"gs>+}b-#+ˇo1Pm>P$Fg1HIdv2D6M Kn:)81dhLp("7"ʺ`)wB΅XJ~ !*)9"C] "qlñ1,cqƚEk]"YҜLD:nBK4@x07w4ϧrKz'5%4Y/K!F9fiX_U]Y4NWgV]vr2O߽_F}i9gOϹhJyljⱻ8ƿ~p/~6R֋vϾ~FBT1gy-/~qrqͫv:|zNf.N&tqɉ_}( UTMe.9򼫍mSئٕB*ɣ?BϞ|Ce]U~0Ng'rG <_/YX./^`*IX/zy<^k3)ɬ-iM,Zd\%v4\xv~q1;9sΗMKa_~]ː Ns뚲h\_fśE/ӘgQwM[PC˳Ӷn :z}LBBpHq*TmSZ|Eye ű8.kFJz*YBʥsG$ELNJaY:M J3t9Ȝq BH)ƭw;cA2(2Bh EH1 w1\pཌྷH0\Dr-c1h9ȹ]*`rǨ2DL~VԐfB+t6ͳ4 vȹj9PS 9[G%Z>mEDdRj@;S8eRvn Qpy:I!'D Or9x:ɡ,#tJtۚbWq@O /2:A tZ{΁;r>RsJI7գi/ނVyfu] !U slh[+z]@..Db\ h"Pԑ"cѹX0hB錋ib@)nw<ֶnDOLوfѱnIf'>x{:N&SxKr%h8ڶjMжm$&=Ň劢0]wr>k6n߼zAći* Vp& FY~ XVBcҶ==.wZhy>nJ(eZh-08ΠHRg>F1b1 1Ĉ~U2-X_ 9w"}!Jy)3Y+}Q*i}I%D$J4Gy@ѵWU9֙NL+ 63F[#=8_JN9~6ՈXTH ELS"J)Q0E1xc#c<2 OTZa! d,J#g!FB1q1Ǭ~<>zvγ\޶e7CyjʶiB 8GN<>6XfeCmu#H"!r\~geQ}|(%X!>BGc ޅ9d.k "8Se4F1F5IQ r1Y* hbRȽU&݇byK_\Bcdt< OO2/mv}7"S1xaESYI ~cJq͂`8hYr0(|_޹>lɌsٵIo(36~n}c /'Ǫ M"_} MUDDv 8pxLr:ƲD0,+o(13_E[77/OOT1opq4 )޽}L3 D^w6!tvh6ۏWO{^y8>zlU_{{84UBF!Rr<>,9cBɋ9v!|2MdĐN]W1Ɠb}r:PLDL1X\8;$WZZKΐ.mݘjN&d2 5ux RWLsƚ\0FI?a)"0F 4=rK($sD.qc  =@s^Dȑ3΄$g!2Ti_ϞF麺b\KXmg#cY7'nW)bs!8

\máϿ?l,b8 A ޮZsEȒ$?;>g}ݵ뢏 UvM$",SZg:991^>}4ִjhdfzx`$4p2%j˃Ï^<.8kNRʮm?u#M'l} !cWO$՛Ǐf'6M<ϋlLWO{ñV!H)~/NU]vM3ͺ>|H?q.aq]?M<>IbEw.!>?uׄŇB8 L3^K.֘O=aB5]S;=Ⱥ6u眉X{</=t$rm]oΧo*rC$>dC<=9rl76O~UoZvMHeA-"ze&ͩMZ8T.vg1"Pؔm*&:#*{t24``!R@esid6tGrsA$cB1HOM Bt!ӳb{(.E|,I`"g tEm_A&y2:UUnPOZHgA1j{o, &^?2'fMduW/()WM[Ψ@y]ϟ=w7`H Tx Ig Ӻb*f>7]OHTb,ySl>5"ň0ͮ<97?_?vwWTpmk ¹ !MԚxq69OP姓Ϟm%_|!YSWqY'!_w/!~/KUUuzz\<ت@ X!tr|=~vΦؔ:M9#`߾ٳf3Nt6X.n>?ȢAr}qYDY^|2DUU=}h 1C }ۻ*4q¸wnJL s0ˋnx0$U%Z͵o$/^rkPϕeYe KPjbaK(uCΤT SY\`wQ<ᮬ%%g<b&*>Fׁ]9>}Y`@@BTC3d1F O)m%ZY*@hsY 8'%cB$׵l,E?9 dg`q~C|@$ק Mtcluۢ۲0'wP?,O󜟜Laphlm!p m7Ǧ<四o,|,R9o-[AqO)2gyL01"D!2!p!1'vRrZYݯk:Wgٴ'~œdMЊ; ɉFOnZ{TIuoºI N:n{c8OgݦYwEUOʪvF) F5D'чg;~\F ,;޽blV.YzUeQȅhXԓQvpju:˭}oީGv .Lpae9v c4*`4IVkcMaTUe5@$]$R`RȠFf$MZ8Jn$!B>1J)A@b >0dxT($7:# C 1l-DL0b I5mg*"JAi@H>R℀$$, D@m"u~ ^]׳E9Hq>Ve3cDElRi(5 DDҤ1!qB,SY唦Dq!1Llc`%eBcti-N['6k饽ݤ! {eǤ-{ C`<4DC1n g.*%N P00 G@V1*Jz2$!F1l߇AW[#^ѧQUէgG'wno2H0a]ے`\"F* ֘;G2 )ףq9;_U=}7\lNr<[7&eivgwOF_β뫳O>zݴ,IT]lݻ_<>:j}3=}Gʈ5˫ӳWgE}}q*׏ vJ`WZ*D 0( $"'a 41ɻGU=N)qYdLROrŇwf`ol޹7;~$'O~ ǟ~zrωQν!\rч0Kι;"YY^@j\.gWry¿'{U]n^P5f3?1I]_\K,%?@ڙL|}ˋ޹Ǘ7WʳGVRf>i`o<^;"k ?yN}YrjԼ"om\ O[~(xuq3cf_LIeV+)tMp~/߹7%p˅{ܫޫ:˽>;;ݻ/,JJUJ_7O.Og:a ('חQORd>/!hqcɁoR!+*>yTFǮͪjIwÇͪQj?G/>7g |zpwwwg\C,nfbu }=w&򃇏Z~3j_|x~-zz3?{/s|\/ݝqh%%vзa8suL]R1zw7M; [6Aa4-R&7_ot lg1u XU)3nI!D-jiAX;kX쌉zyA07+f2R]4N=SΘ'mm?w!uEЉxvwg9xl ';F(r"dR@!u !ŎUQ% >%3L />?1Xʪ2N>خz޽@ܝ~L{ߩfuuy}>N&?K:RbSU˗/̘!/lU2TJic3[tu^dJ?G l3K򫯟~Œw騪Lx00ū4MiU|eӽٽw $+ l@z72l=M5Dx6 J*DAb%e@B91q Z X-/wRufBHC)%[Ν 100G ]⼏19Ǩu4 RJLVS00: TʋI1N~>ޫvCSՠ,3q"AQϿg4 3F6Ke{M cD'FVERc f Ax^,ad̕Qy/CVQihV#n^>tWjg:)BU&m6 +X~9vmL2Eq "δ1P(RRօ.E ޟU#N;v;WXvO?5Y;oˋ积/Ǐ>8{rhu_?}zq{.x? ]_X[/@Fƀ2wy9~lCN|^\]ӏUl6y{nhWMs7__DV9%PI0i=ΛzTGwlw H POf 0r5㓃iثe^ӗgW>§w}sݲmoMQWh<ɲ~% YQ&^P덤ֆ6G~;57WW:l"2&&)QEv$e8NbbվA<"#$4FiAՙVuQ&gTU ]G"UF$Yjīeimto @Hwf2)E֪kۧ7 ~?5u^(bcR@0(JotTThbTXS~]6m6)ji>z"b2EI@dK( V&110 FP 5ނl-ٷفo($h @BT lAP2B e%'#i65)\|ڒB]~0Z%Aˉ({E#De P)eR@fGa|sщO?1LI%J .uq'O.>Ξ/_tZ&G ARQ)mI$5@{LVbFwh"iz7;-6p2N뙦~i񳫠eJm'p KkNGyբ; >,ZDȪ^,~ѠH@ 1JEblTfhw_~I NiGci;1y>*vEWF/<_W҆}&WWe= >x>tM38two@xvq]EEպ, kL?.nh7ɴf>s%=QA)|߹wYFNr\ fɉ*ˮـ/o TY7ETp`VkCz^nUi?4p6wΜ;y wh2yq| t@mUi164vJ ޵$q)DnpGN'g9i@Q).Ġ5Y9Aaa_,ӊ'ɿu"#b&ZL"J  ߞ5 oK}P V4c7OO/՝Q() I) a$@ĉQn;⼽|Nv y5t~#|g:V_n߼ؼr8ޟ8n}YC.d7Dϝr,qjqyP_] IG *j3m0*쳳$ͳ|'?|(laNnx2kY UW*w1!鋫?|owg>\I|7F;GG.0Nң?픛uZ4( <YյE<_,aV^6O{'w~kozZ}GN|;>,3_1xf[n2w_ 0Jä@wz{1j˛Շ{ZԊzڪ]=z!Zy}1PwE"OVmSJLPUe5( 0 xvзm iŐ@h4z7^\,K)hu)(!QHUY#n(˫kflp%r=BH$(ǒ|Ob89 @s"Y0Aڠx[Y) ԣJDڦ:FI ^[oWYV;sr^]/ʢ4{13DmZ;eYM3?xtdlӇu+uY{O忸?rDbd@6μ7 & Q@H Q pt;IE= Q (!P(P:`zF z|3Gۀ*~x7{d}"UH.-o ɹl7߾g $[@,Ƅ:F"BBT b4ZF7!+ܾ@!*@'|^_?կ^o ZuFÒ*%)*og gݐ+SPw_/4Crl2>77m69xGbӿJ|b,~R""6]*QBu ǔCbb raS(GO^EY$aS]}?W*{`$-R #-1 +m?[nɃ~W÷J<G۝MHm׫ iDBZ$c ܾUBðh@H(BTJ@9"6"C$BB`8%vzپs홁$]%^jAog,AH o>6"ײ@>+İ>?oO_7__" pDCD1ĔRmO,Wȫq4f!@Q&ۈԇ{LfRVh~|3}iNv_nS7Mx 4@ Fส>:>_}]ŪL3rvϊ8.n?B@G`=;?'6hw:J96M;tsp?pzMVgUߝ9:wr?l<9Wb;IB ]?,몪w|~qyy|tt/ۗ(V|4N'kD.?lږ6MO?OƗ Jr99[HjLI-G_]bys3?{{}Sl8{؈VN!6-5@r]~24k74̜8qbDA8uY @ !AR/+UVe>^yݼϖCӬ{=ι7v# \n*3үN/ƶ"1?F|ѷ^g!) M軧mlCgγ>2)=~~{yu8.٤iq<<'dVTjcͺͦ/!e^PRYOo7<|7v当헟?]yQId|oʼz>;Gɹ_E*E~fM~p_hw|u}S(}?gkDy0uz1lɸ9]}vt}1ᴪ8ڴ_r^ [2]?l2 ܰF0&)d!@&DC K"2S S2!&"iEAm CʇMcR̚I]h??zuzy7fxeFJ;w֥&1]_\)Q~g|A2s,>&t~a |hdru{:3Vĕq4RThuF8]DhT>6um"N{6mI?FJ xl֫z4&q~; >`dLSɇw+DJ# &VNzM9}0ѠVZ+|!mkW D;9*BB пw#Qo$?ÛAت~$ AAH 4FQzW%R%.#@"A"= m"φ߽V>C|_tFv/uoG% !p #CXg/.yS! ^RLKI$1#2CZ7amkT) 3l6N >i10`Ϝi tΞ۵v> h THq\7ͪ%(C{EWE?߼ޓ~yvVf\*7A,qg2^]O;{YQLŋ;7~Tgphݥϟ>;pղsrWWyfٌ|X^{[nzw4Ev{G{LJyYonoИۛkcl:w}w].WO^F/n_H4-z\},YNE=gR||6VYM;ggƣ|;ә~^L6ฬ-G%HeF&3!Mf! "* tٹ(2A * Dk#"1L qgi]MwyplNmfep"mm9tS&3dfȁߴ=I>x}tt(Jeb\232ڈ.mdR+/ME,%q +2c:Q~\0ɣj _H~i1\w. % @Smgmw9`>=<ϕ[,rMfհ*Wppoj,oG`f<3BR|;u7O_x<J٨Sfr7k]`ceݓ7ˋK {{;Ӫί>ѣF_xaH{1vw:}WZ.|NE`~xr['#$Yjvxj{rnGw\nA`/Mh=ĀO/wO֛M?PglVe9rUיVݦo~\yfB\.8^ $oC0b46K1*Dx[`8ۏΡ}}t|R5]m&#(33Ъp gޭ74K.{lgVVV6=ݳlC D$H  z t7*Ȍwo󈌢g3;عofr;n MJ֐kͦԱJi4M"k1.<I,JZmR(@t;wMUW֚^j*ߠJUbd A5u(d痗-$X5[6~?]{xHdUPِDh H;@:5P;|i#wrikfaQ; hnKȭx`ǷBXFBZv2 8Dnyca`i;npeZdm¹ tSƾ>xww߮_iAHm  r7nFH Qk.?/ծ*R!F6I$8YCCZkgY4Z۳ͫ5o־Ӌ7/Њ`g8J񎾜- /D'(B}ô3Y,͋"r\x7Nt}Ÿw& &M'{}]gM^ի7u LcA16:u p }:gz @`6pٖ8<'w*mC[Cb5ngٗ/zO߹wt‹| ,ů_9~zMHEȃ3U6iϞ^3O69X{),J`4F2aw`"dVuΦ,˺|6s6;v\WE5>~~n5"_ypP0@JQ58ebKiRQKӺl.W4Mݞ5v\nR\m<cBu-RYUh6 b2QT4e'Ҋ~p.*STEmױ!(wӦx'lt g6z)"k:Yr(KVjicQ*"&p]5IE8;j.Lbk4@XV$/jdobyu 7a+4J@GqG=v9DIPxh-m+@A P  l{kٴ5@ l0Om -+Ţ\ [-3m K*yHTp7 N\߂[ lX5uϻsEXNRѭ t oޑ7U(Dnoo (oC =\[g@zv+("mH|gjvF6Ҧ(7imכl'X7u&8tif`l~W*m闥g*mQ .5 L,@nU^Hy@f~7xQ$۟1ڮ@6K}^?돺4W)y^9O^:M^//s#,KM^z%c#T|4m`\>L%c~<|ȬDKL꺩֫7ZG,2X\.adq&to..O櫓ي ʃh=UU;N4ݬ^UI^l,|̥ <>߹s&|>- ׬UkJ$EeqNIgeI(Y4VLٓW/9G1vI/?yӬduh|*Wuղ(8<_WI'=QT`'"EuPbR[FeY[{g<(Br ~>"yqrƝ9M"nzv6{o4Wn!iq2噍N'Ym!{{{ii6.7X׿AH:XogoΧwCmtΠk ypIo<ƣǁ`9_<}h0]\^fi(٤ {RtyyYB[$NuzL_~_3uҝ-7yo0I:|*<` '{Io =` poη?a[|[e]ԝ7ofrt(V8EY,V_|xg&6Z7!|~~_Ujt`r~1ET a !a/'TYGWuݼxFk=k*̗7Ho>)W~ujQ}@`;Q/A"js]@RZa\@TUӱAl(AjGWՕ7Z)N4"|>}?j|G7gY7޻swyt#/Y6ޮ_74G݇0erZmn\xK pƁR_"1Aoߜ~ß~3i?ĝӳƻWW/tOl7[~s-Gd$NoBރ50I&<\g<^d]NǫA`r- ŵF2hyצl =7wDb2l"x,*#p/04&6UdAs``4Q[kH%V٪3<~>/:~>3/ *ԑyS(2UQͳ{'t60஛wdali a_C;ږ[!2-҂F@DfDeFiHb Q"$ JEG!(RҞUM}: kEA?j*(ZF)FBmD17ZIEDu0U;/GOr낄m,k+Q@λI`ww|h3ArEf!lx,2P᫟dq o E6"Pwn(MUHZE\DT{)]hQ *b,Zm[V2eݜV.hҰU91&z횮Бb3G6 hP=ߦ@wU8LJ:v]^uys5[O_>{8MP|L0)ǽŽ~:A LX+^m+hGtX gI{|~ç &rq h]ZEufYYSȵ #F IDAT;I{uv>xMQx4(UQNbeȘ|j $6&p<kvpP{Va]Ŵ1Ǩő"B9rK,!r|HltfZ<_nmBezj? /M?Ňw퍄9uU&VLUQңwQ8ui7sWU)Qd0GIzc"bafѩmDbދH (+lCaVڔo0%/ ! Ս!y AE;t ~{ؖBucU tuZi Y$  V&Fժuz3eCo_mge"3o_m~uW _Qxk-8)oe}۽8gx;y !3+ O?hX!l|qE!<: //<m1Ɔ~?+vzCGlISGCn9+W,}4 *+"ky+˟؞gIj8QD 5TdjjXc¡R]uNchƃ?>E> X{\uݴϛ%7ի7ϋ;71huu:E"ufZ-*NGŀD"EB,k99`գ__NWww{{vA:η~& W? v4 J(RH pG'_F$@Yt̃ @uGSGk\F0K2q*/<і91FNJ-/7%<OЉRjW,$eժAr^^% ?NfEip0k®!4pYE?~3^ .h|4뤱Eҹ:#*fqAK&o_׎_/?Ŷq4Ox4OFq7я~}7O>}TT~oX_xyMiҩ}k#eݻD|Oכnj6I%UR kniAޙX`g@Hv$;{cw+A Ed {󊨝D!(]&Vٟ_VUwק5ZkJk_ )"r,+FM,g=bvnARIi:[V^\PtUV}Q!q{ 2v~ͽγÑEPIl:M{nh$\קo晵{Daw;4d<#j^.z#!p8RJŝ~Źbv#NƽݪbDTqgU.˲W[ mb72NP\E)R$>ibFքD(UhAݔN^֡ؒR|-5AGW4P@~wXj}cg˺n,6KJXm7@` 7$Rj5_FD$\pv"eg"Qj`U5u<o?Kl(d_{McȤX%m&~2|0fkBEͦ(K16JϲNZM;JiϢb'I-ڹGYƽN`FQ6(wQٴ8NPF,-c-QMDd+f\Z`5fF((4(BTPBmR9IXI|y].2榋&hhryD(/u1:ժuɟQ{^0.XCMȂ΁g~{.Bκ|gb;[ώnxiD(R^(SW~:N+9>d^_\ FC/ߜMpYU>K P A@@9 @D(,FXl֗Ff8 DDh*ck猵m@M^s `:xa WEI?IM3l޹MM]Wvr9N'Mѳ;6aړ8;uZ 꺪ˆHnRAVK"cL^ot~r2/tgm]wGO%J/,m ƍGG^hΗ1Mt"sRuX Kd?O6b1GؒQ?GI4l"3ޛTέy!U7?~K j偿O>{^i:@B؉i#ឡ#vE_x6 ARBJ" 2R0FF"ӦĴ6|aH="f[?!lfOj[^<   P+Fk &`agbpBl[h V݈p,(˵w x% v1 ?n!"kkRעۇ3 j@B VIǿǟ''TVMu E[5 cCWukL굫jy7"\W^iպ^7Έj_z9զQ ,_.WGl9[l6 D:MÛEz]ݣZMKtv0F)4qlOr7Zoý!N.:pw P^UVVȚEUS_\ѡW٬7,W;G|UVjXkЍ '' ~کW&_+a;82JnMYXWXԨU, V g1~?bźje^LW`o22:Z̗>84:rSEMneݮ(2*؈m4۬j\`WIURR[V*QT^Dk2/@kҞGQ4uq_PצZkwPŶ i ,{n֪̋9lw}x/il4cP5|?dze"cuz)4jř%":U]qx/"DEYoE'*D4_I "Y#k`t^5 #}'˂zBѠ"iJRybd$E@@D p!"T"O[ "QLSs+2Zqg6]n$ =[+#(lLһx`~:|]3; `7^&FFig2[o*.VJao)/.V9L'ge!M.fˁ [Ϲ cY&&yYYxTFqVR:ԍTՃ8:vzA4{q?>[7 ;e,n">|}u'e,@IgyYgcu^ۢz]7M]WFG痋6Ϋ[v{O_<ؖ?y6w}^^,7GaoTyO-΃&5&Omr d)#\.9rUqT{ŦnZs,qä  9"cJM'6"r:E5J5Q h;Фi."HnzLT0\e}j-dqƣ2Qcp8|5n7{o.~6wMDJ@ևƨAٲ+>:N/߬|7ߣD9kWkFw{>{uz~Ѱ*ˢ6KōhLzQǪGA_~qTIΓȚקUuezi؃e)A8NڻpcsHkl42"n`VIt60;$BxP`g!@ HzvUlƢc?G@Im 8D{C@",$"H!.}m!bD7<p`ӇA)c+(rDt@Z`!@R m@v9l ˫~Ǔa! 7*l pxgP;% $bfwlWFhVj@@Di MҦ6 2h$exk*moqW Pv^IaQF@"PbV!6Y.CF!8nb]Eq'IR؊MMSvhQ`4bnR< ʇRJ)ɋlq+4{$qɌ,O{dU՗z`E DzpVL!t`5K@<?ˢfN~zw=LR%%B^|u\9f.{=|Rx>-4ۍP]N:"2u= z  juK:-M=R|sHo+\nT ND<A@H)$*tUz^\֧_48 JrU~8H n! 9f{ l!J!?bPoOtCDK:.;i Vnlu] EڱC a.- 5B" Jq߉ʪ&Zmʲ/Uɰt==s3I"m^tzYq] ȵ~ykaEwh4],ow=}R7}g;ni_3cgM]4UQZ5yf'of3v)d`{Ѥkǝxu6Jjϊ(|źk0p1Z59ı>#!he~meokOQF[cցm`6FURkK "U iUz]eQoxlݏAo-Hb\$3-QK^Z}c/V/^6<@p٧Gvj]xbrYrئۓvNj5u%ţ{uQUtY.{w`:< z}+PTkNkU_lQͻnf*ڜ_hUDh}uuE@ {{ *U5սw H! <B"5 "~~F C|~:}hij prb `*B`A h0vwhHt@HD)F8pP1"Fr%!fPf5N7+ZE&]3Qy7s(NdDRօ?yٲԌ,(F$j]@P`g߹ZQ5[~yvěFjj@PvNiTx!jӕo+" V^,(¼PC{ NP(HJV&D4 .W7_gG_Ejݬ~qyWtWbjeKͦ(E" $A"EomNCR|IļۼRGF@Q2ߌz`*yh:d,Ez@_4e޳z)$K\g+⸪*}_/_E}wۭ7jij9_\>ff_o6OqTLw a{"HқFڪ IDAT<̋ÃY^9A(䂴CDId:^v>ԽW_Aܷ;iVx=+vվ7#?~B@ݛ_F@@{{9@`x#wW9GpޓAcro~ G%G8~gn_.磼T,7d9ƛP 'wE\:Zx>+_W% }R$Ѐr $c/˾Ӫd|a頷{0Y5ݿbuUSɷǙ\\$I^.#@i8+˻/ ž'󫻂A{o\Q9rqQ$":!f @ xDmd[wM]@hֺ{IŀhOC1whgG)Hڙ (/ 8R2b9;`8l)xrvXY:=>Nb( Bۦ&mӛYm]7am{<ꋧ82ˢ$FG]`y˘q^DY% yP<85Iprt'n]|yX/56, y7TҘ3Z:$QY=L-4x4zrbB}LE AKMC!TF@[cm0DBDY;@rȐWc!'DLrl/O3!pȘvpqXtˆO5 (v!y%5qgz4k=TRkOTaum?)dGM>_^-T|p & $I2F$\|mWyQz@d 뻾1 ~|Zr& َE䘀o|ZGDR; ܼW5Ď={X 2ړ=l2DF%|[_Fm߿ n/հo?~\^~D{#9o8 ~OA`,"j~|G X3TZ,PN1 !>#;@ K @ A/DP tP 0jģ|7fEeg(T'YtXvc`IvŬ%CDUͺ:.K7"̓pPRA=,BGs^^~GGyh@>{丮vۛ_>d9oMa0L%'kK8yv0N۶3I:9o3E|₇LTw 0P Zpt`Q2+fBl;nB)!Č P2Yc,QoQArxm=yt|qNȇnHʈ?A M ͺH2wEQ]õ͓8wշci)/~;oL'(+.OB5_Y,>nHq<avnhonv H*)yo6 ..7_j A `lsvnA>8F{p!hC$`?8fXI>m福yP띉#}FiX`ߘ$gywz:rAϪnG Nx/)vޥQ|X93ʻr2 ۶?9<ID\FJƁljMm_3b{,/rrO~g@inO'}tZ;Dl{r]Wuúm,Ѩl?7[mnfky˼vr2XXQ1Jl4,MFa$ġ20(F[!y8,8Q5cg4GRI cGQqtpPDYz2itVD?|[!wݓi>0i1WfL8vGq5wWb;4ά6C?rV[ZJdE>M&Lwmj9ą:>9c8QE—y0D(]o;`=8;點vۦiiowb'%yiQZ&u۶o'E_=}5*̣8G8XY:CmӃ 8z\ ' "9rŐq"fȣ5R BG/otön1QD!Hַ'y*+57vVʏL$i.ۮi&H3+Ʈ] HQn9{"G3,yXΆN8y'ExϊQ9`=o>rvh=3~"lΘx HEoj]1v!xtp\#ok Fwf6իo$Yg-wƦLifӶݪH~ ˫]}#!XE\؃0 $ I6MO,$ YgT<3HPwa8bbyE.Ӄ;$ Q*L!4͓_q^EZiqyze9 fX 0 dL7tC1M?zYo64ݮźHxͺM=RƌXŇ/Of1Pfǹ",T\t]/i%˄co-^.w͠<Û˦j Cq n8<,z֝ Bo,ϛ gGǂ dQr42$b0)''ѶnP8}8  3dVaf2B F@֚kR\ d.kq5+rƅr캖!2]SQ㺶6D&Z,|ׇA׽`v}8 D$ŜS:3]5bnrk:r^hT?8)FiIx6 `WWȥP曯/=zIzoF;3*3$snq7׃mvj?>,C.jebv19uc_ݮk@<i|r|Tđ|\N(IPwr[O zs֢~4T=yK'r{g#<ާѽK{7I}OɁ;r#{r~h!'{o׆?(p;"OHt{ FO;Lquuw+I4T"8f #ۜH !2uSߓY[ 45f@Bp چ? #z8 ~Tt(;EAypI 8$fj@ s4̷ұd4ޭwqe10kѽԭ[9-`Cl{W2L!v,DH~|tPWշɀy1FD̛Q!փ|:b[iȸu3z!ShlZNG4T̊$P{0KcIQDdybn1GiIyF.狛~ ɰ{@vglguFu֦mQM\ Yo~{oeӣo}*zwZ/&eo*0m4K`Ͼ7d@`pkܑ>dAν7K.䌴,je%YW_>Gښ,I˲V ͪ,r/~tR׵I$I< ~ܐeT]oEvs}#UuiQ^na(zt[mQ;`9@P 2V3kmˬ,59d2#A(Ct{! tT&졕5'1%8}!ZA@LJ;B!GdspP IG`Zw߉g2 |DB.ٗO8W9oW7]1~?yO8 nm˔<0ͭw~%m=0` !LoDa%9PM#V<9V4$ʨ.pzP:kX/67R|4CR2ѓ'xx(g?XҝnI!Y@LFd2zPp-8I#DN3Ī& gm!z}bXpvp<.AIL5M5_\Ũ5]UuOOMDQXރ%aDsi:g qlNnqŅۮմly|<+EhQqs!1=2|O'~ !IKcsW|d@R;6?Q{8r%*0z+Ziy܃%`dPKҶ~}s'H*:}߳ƚ.{W%wB;cpgY7'8H%C"g8I1y=k">ɳvUg, D^lfcU#yė?Q*fLF/nB$b_u juWw30"^Pp*n M2v)Aʁ>.w>8y|ֻ;?3%`Th윊^nm;lvټ~K97 2IN/4n@I 1.K\oO]XBŁf$+s (in:e3ۦk `_ו=3% 2f [ݯ.nB{C ! à (F]GE0 =v:M!جw M記*a2y4=ȳ䷾V&b'/4yïE5`||37ѿO7ZLH=ͣg|?߸dV2G:ߩM7}>+Oz">q+gRə!Pp&<`̾ 󢪪ah"Q6*mF >ObY]<GYd]nFeJnGGՍM&9Xջ:=s]P(`| P8Pºˎ-xBxGcɣHz4>3|aϟH)g_s~(MyDAFAFqC7Ax'Yln//>V}% e)HbksȥAD>+F޺B d2Me-BJDhpuuy' }6*[%EapuAm ^f{\UM5;k=@ 588ZA0Yj'Q]\#ypͮ񐄐Y?/ &jOc>E]>b.ntU*n.os ,.M׍ZE>r4`dOg~i8 v]wC΢e|v8o<~$8np1\i$Iιtijk-3q1 ]qFX{ۿ4ՌH2˒Xƒ+ahd!ԃGӋ.;u@tu\- 0MgmL !\(yQJm: %sq} \,6imkc횻|6+v@蠔 0!&q(1lc<Ί7, 'P՝5vtTzu[w2C7,yRk/0Ey'ag0 UAWU-C>X0 7+|jյ٣ǕoרԤ_ LyAicPV9C\0 rƘ`Q2@cp#pzUoK_!^3L .]~1ln3J)[3pD1 v9xݴqƉ׵&IxAD1M߶'9Qi>C T(Nʬp鸐\]lo'ѲzAx4Inim_s((q:h@xٗCP 6rdJIdEp( $,s qrx&Q?뚐_dG_w(ϚM(T1KQQdF\n˛mnHBAM2Yc8̊Qk3 TԌ,?ͤPnvٳgp2zo@$H0Bkt'[m 8gH:gQdbBA 8\nz [\;{?{OsRM]5] @XPd`-d N MD" YP?Brl[g=f;=ΛژR/˦D_}FG3ū\I:h 7V4z~;wC3 j8x~|<_\nrdW<)L(quuXwwY^Nfjo:y֚QQlf,M8g=t>:'<9>Org_T=&4Now&`r|e$1"ov9=Ur܉~¹?R )sι " 2F.8g"c-pƘ^w{=Afrt]miaн{*'B2W}߼Z. X'zXm ƣ$ R0QBhc$z0s!nۦQq#}; (Gŋg:͢޶GI(:7};Y"P 9_8:#,V9z d\q@ fT8 8hM+XvhT1R!(GCyw{-ey5; -Ɋ300%TaCpUif˫n֛z:J%%gXF13~Wuu]_] Pigзi{е*HySUH){X-+g.p3~'0BNRfjtNY_ =:'G>;ߝA&^(;{^/y\-7_]~$GOҹV;9v9xz{j'y뭻W_߾{:( j8bcU)r) ~<;<҃.6ۍ2Lz-]wnݮlD}ygR0tf軆<@(aS2⦫$zoM<"IQƛϞ^|X4 aח77x6+—.Pp9YzOWtjr.͋󀇛eoF{ipH2O6vCكY24hlygG'ƘgxEFf.CX7-x7%fwv-6#?`-i@:S]'"vƺ^Xb-gz}^kǂ(02"Йa(INN{;>{sx"7͖1N)Q0ν[KD:/׈332%QȀ C,b/s9Br9kk a\{/:m9*q{C߆K$00mݨja-fwOHI2o88F*★Xvb*H1%﻾.T^z[;2{[4>iگ.ugFG@ӒPYcuyY6f_~~ }t#32Fd)"Z &lc n?YWsr:*"ض WmTbRvuDa im`{ KE7)5Ga\Ymy~skݜNHHIe[l ;#;? woE p@,N$-vUNv_fFy9&x ?zك\xL^MsEV >),e]"b^*K2^o~O289+q,]>:yDb?Ҙ-Nl%yY؛- qմyCZp9'ZA9VIwqD(Bpc3j<'z 0,~ÿ=;w}]ɸ~QJ(NWk vWa,' bĨBH/ϗחo(ꛦnnaRLS֐Hz0H6bsmpy' A9 1gι0,q'Y/~fG ٺ ,W0$I%FZ9Gрm `ضqH%bcFIhȇ# R{ GCPeDFy)q 2Hƻheq>`7R߁ R'!=F{ `! wH;o`> 9k!3yQy`rZ+J׎bKq.80&rXiE { !L:F"(IVWje~evY  xu],θ 8(:0Ab\.u&M(lQ4P,vz$SY s#)'UX)^ICvN{q6-b>I4NC׵]uEVizQC1B"eFju 98祱0`mdIJBF`魧F !f bgY6LqsmTfCP"vq nǣABRʦir\_Ng$,kaBojj2A6Ѡ,EC٬۶nv4Oq1眵VR ~~y|z\U5@ YFVvJ{(Di$Cţi9HA$7Аx<â rssQJ4LvW (ˌ5eU2&xٛF>7|>o6Bo\oM9^n|Bx6e4ꊒ0 é4vԫ c)bXUssE1ELI dwW2DQAGzpknoQR(>w~mAd8EŒ&E%+_{ݛv_7Q'\ƃQQ eRJ]_5OPj[uۃ#OC6|VޓUm#f"0UG8-P`EI nXxL,f"}xURqsƔ]ʁ p8(|};8ah:!lm 5ۀm/^[ `I,6JǧӾ};(i docථ6]c] `h2ózAdsFzs(8PJӶn9K1ap c (]U%ι(\@`xu1Ɯs}"V{v $zʈ'-hf A0F!rhYީۍZX{oxNG BTgaƹZXSM*i,(^. ѰN+"q@H\wXq$)lIk. IU7Ͽ0ǔѠ<8,Nal#Q1`L `-h3F(׃'1AL4N8Rmw4I%%o^r80LH>dߴNͳh>bBw,+c^b=@j][Ғ#[$|rdS0 5m`|~Ⱥ:cv.rgJ} EDM]#'T=v \0{eFvN6[P@ ag$IX Njn׫6bU$\,UFgQ!NkKq7>,MoxQ"k@sWSI%WbcBp̨΁GA+BFXPrZ]7&8B8.XqfG !`y~*,bVսDڀAi6@EN)ȳ`1CླA*f\[ܼ׮!gEY A[5au0@ >4;M80aٻوS) 8] pvTDDZtw!KR*|~vZzpM*ל4ɛVfI uEAqƳ,ic(9!GL1F9;c8A,bvqqv uJ#`Lp'(ZYt$_?O)U׵ȇQ ӴkBlTvFNN,&BxPmwmƑPʺսGIaE,Kh>yvo[7 a@uw@;o)M8dO.bH7Vq)-|YJ菾wOog?onͫV':ӬFV zU∄02JQ8N(;Q\4ŏ8⣏xSqqo7~l2 7r`Yn"}8bLP Zz;wfխ5PVQ>nQ:]aqob|Z!..7|~>;>N(4:l70"vv=ym+۽$1@;fQbsFTZ T۝Uq`@ Qw^ʇ`]{uLHn q\7ݶ-tN lP", Pvd8[g`]ZZ'Nq8K 1뛦B`9L=rT c[Wk'XN}TVIٰ઺=&nw__\dp 9gfEt8 ֛ x:9/R^848RZ8X+y<-j֫d87 IDATTUo8Fo7%vSE1vZyW˛u\1l):M0//?}Z/?7۟y[=:+tϟߟ{VNfۿymLve dI/޿X̳{oW=h6m]F94l9b#mdWQJ85 zFE:M d\ܵ]n/w@azH!׻z$E&"K r~4Yt^$ a,(ȋahfM<ɲl~r| yVZk6i Aą vFHA(B]Q=g/ۿV\k'HFe B4x Zqf_; N4ZU%B(BRʣ,\ThMSL"C[ NEH@wvx̳2ӽ1v!筵q=N~k1GIErY5]t"@\1 (`9 \+Aqh8 rPѵJɫd2B1q}ө}]W\X!ɐjg姶\pC00(¦`q|R/1#d4aWWQYe̒$mni@)Gڪt;Q1yj/ep׭|szvqr1͓$bY1ȦcTOҺ/~IR \W;'X c|TB!<,ڶh=l'1}TU#Fz6Kpf1}l"½Q mdjZގFcfWAa\u*t10ńvMyzzR̆kiPBvƹXآ@D9 q}ӣ//J”QDol>ӬZ oPl̳rm[y'{tuyם;'@ q&pӔ1@amz{{]Y R%#PV?} 6aVLQ8x{4^m G/ۚL''",A_~~S"KX(J/WDuʮ2,,"O;n(K2Fy{-ܷW-~5lKGD(I2qT /TjM|[|1701Ɲ!Nh KGOJBu^^V*c10J']g c7C `qw6<{8HJUo{r_b x2n/W=$&p"̀^_5!,R 7,Jo;;=鮮`G@~2Nq%4볔YT%pҲO_.{vrhiF|D⼗=8->9e0RJKcN7jx,vd=Fȣ/~Kɐ{`a 㓣7+}Mf7 (n@7Mx6B}SL$hҍv*?vmP`@ 9+8#fF4b?N (=aϣSмnш8B7`ౠ9TЎa)]zó`:/Uv|:DEbt])<}סY{v(),!rmҴ@̢8(]+gS1"DHG#Ҭok|SWJW_;i<- D3nz_#3D4r[A0Be7FwFZ9wg(!>L@ h>߿w$ܘӷ5&2/ !JQWהm+%u6ϲ8P!$Ϣ;FbSN lßsu[v R.Eqx0\a>y,us:Ҙ1 ެ ^!cLfcCI~-TD񼒦w~8OJt/oeb;|hFJIi`.MSF=e8s 8E(Lf4I?MN`蓗篮ԢNs유h_՝t J'IipS u#ez/hr2;;Ҫ0BR|v}?TPGT:r[tn$%1o>yOgyvGy@\$6_\t4(``-|z2yX43ګ^@?yu[]edBg "ײOFyQmݭݫxLsiicaDOM0s<^Z٦ *5>41:)>ZvE$:lG{$@#L4,v>,yu]G(7M`d80#l~46۾2R%[z#Ed"(8c꽷PDJCL|sXmcj=(={b8x{|c>Qf/ Ư~w 6OAS%_?wC;R7HDj>4O} 1f{g$Uj !G "hؾjء6,re,E0h0pt䳏VwtUc$7RZ|Z L(iNgQ @M#Hzx (E^~yQ !(Npƀ8`uE`Y^P!ܽw Xy("(`+uxza $Ji !3 u4s((!Cp1gS "IG(M#?իk'Ǣ@2/ֲ/./h@.⍑2/uSyo= {VݽX/?y}b!C ge$HNDL`HN)n7d4LW)yiĶҮu̐7f4(RZkB6J(%DH9g s>v4=yz" VY?J;nU^ CSxhw!ɽ!XMWWxṘNY_uWecV?'@= Qv1p>l|: gFM (N#¢ͪbݮ.JyxC{ѧWfx<>qjKt'e!Gx)FUBxG7vo=T mzDr>͹ȬOs7t@GkOmdY: RRf6dynGZEg^4jys4}ϲyCVU)R}7,@$0)eSB'BkvJo5F{811!edIJmw>Jy8}43&N8{@@0=7f[s [-(n){."Bvr81&M(Gck-缪jhn}tF$/g8< 7?NUװ$Q{m|o*kZ xQT- FHĤs."}4aSD6}_,d(\nۧG ZR3e^-]o~`ĩ k}۴ao6yqLh'1F8b,ԭ6W͎ ̏n?Z1>E2G4iZ&BTKY/{v>΍3JKB\UH+Ifw=޼K$Z!"9z%=o9;5)Co6a"P&yZ 1b2(͡fx/Ks {L!x8*TYQ GZFgqx$Z^-__ )z@2&Ĝu9e"8ƪC38~ OOr&,6n_~q|LU׵P7؝0brm&)4(gȶLtg_^܎p 1.u4M'+lp auѷ?oΣIO}Ѵ~fȋ/O, õk䂌_-'2X#{<^%BM_^UЧCwS?r}ky(d'MZX\7>,D AR,hW_^ώf a }B@w qc'畳 $Qt4({T}:;+Dʾ= $aX12DE9Y@M]"X#E1cQ+2U::> P.Q,m8}h@1ZLq(>TUS1catG1ZD,-)4ʨGg?|-?˘1[xpvӛu1̇bEq|]1#×7NjqVv㣙j r>Ϻrk2@eBwG|p6Z,gf1yųH*MQBPQ~H:QDh!Y'fYnZɋ] \Y #ÜAk`:{<f[xOߜމulh8Äbv;H"v~2>7iB`qcB"*0aFXYgC୶oև[pr$@$z-*RI~祿n7ʸPc00 !p0C)$,(MZ8(d 4Mtr8G8ZGcHh:2?0"V=Y_7ݏ~ŧ^t>1 O~{7~}gE/[@F}u~S"͖3>|9[pV9)M5`ͤ IDAT&F%o0BDFAu^\bJI3 %C?MC< HTLov7'r4>bJVLJۮ{՛?7h~r|Z)*{S,c)(b"bi0&;buzpJ…5iaߵ7Z%HX%`}!pZ;aJqC"$(^WVyq;(ظm14Fz/X,L_e|PEs8O\Pl!& #oǺ@0NAm4pi1.B60C!P&"s1L0_df? B~TIa]!TcI8&i$RB@s}v,`b:J(QkDЮ8 LSlhgqF%BV#Ó"mFk1~2-PFq%]S.8[mnoY>ȮW"%%TkzqܔMB(8}OрCp]\Qu SBQuV겼FpD"t 58P`>)d:zmz\A\(kUiޕ=89:([CMC{BzmA91LJ31!pΡ((E\L&b2#A}ދ(Dmem[ [gFƘ*'Y<- kmq^ȃw.Fx FI!H]oCpĹHʍ$JZpxG)-rI'yەMSգi㧄(%/X!Y1xZa@SB!JQTǜP٬ooozwgQ@PaU( ,rRpZ#\*t#F|W_\0!&" j0ȸOBLl"z'ݻNݬݞB)~ȅaG7;̂c P+Hpj֝я>\_~ R7/uOo~?_-hȓNʪh Dn;8e  -hl 3w+rz¹@*&iUoG Ø1UU$ PVJ!# `C$A(滕$fᄣYΔʺELEwje$AhF]Qi&c/(1&y6 QZU:{ES-W$θqp6e$&mM4-EȢ8 ð~/n,=<[5ͻRzsА+FGWn[s?#[ :X#\dAHv ̳gyHj"yyu+%fa(d x>;\5j; =`m49 #aԖ ,K8~CV]EqvXX'g<cYaR2ޢf})Hd4Ji{$o_(V91 GjcVK+ş/?tOrqDzk(G z D$AXch00F:7*)%Z%/{rF1.n[aBdrHX7/ɤRc0B:{%mꦉX8c{q#03lQ;cknmk1x>;>;Da|p|$5k5(yb}KL< NqEQ'y:8I!gZX1A4vIgJ`d?4M@QͶ|S+|/}dQ9뵬MRLH1Rvn-s0Aio$xmFdh ;yOn ^d"ٟ{QLT P`חݓ']Q}~mē2w89ڶVE;G( !0c)u?<< a(p9˻no@$4Ktmk|3AcطHj SOӡkaC%Hm1 1Bi;O?b~}{3GgP Y 8T1Vke)GWu6UsNqWח/ܽ`z]շR= BfW; <9~zAVMٛO?8>7zpb Ax$KpTp { t,f޹ i,%6 Em|s5jB1l}7@Q* 轇)1"DJŗ$iZw8|2%J{͸Z9罉o?L ZL,gznR8r3(81gon޽U|=RbbFJ1hdz4HBuӏ]9 e¾K ?7_nj%G;g>xj{ڱSՅc{By˜Q 085[#I!%1 pF0a2NA`Bm!;0BY +aaŔR@iGBSi_%1֏2q@4, ÐR# \k}Y8pmwݾI;b䌝h1((.b1 k/u_qtm4c眉8EG1tRxg 0!Bp{{Qn[L#m/ͳgOS^+GyE.c_7.~ !LQ,"9

No description available

') addElement('license', app.License, doc, apel) if app.Categories: addElement('categories', ','.join(app.Categories), doc, apel) # We put the first (primary) category in LAST, which will have # the desired effect of making clients that only understand one # category see that one. addElement('category', app.Categories[0], doc, apel) addElement('web', app.WebSite, doc, apel) addElement('source', app.SourceCode, doc, apel) addElement('tracker', app.IssueTracker, doc, apel) addElementNonEmpty('changelog', app.Changelog, doc, apel) addElementNonEmpty('author', app.AuthorName, doc, apel) addElementNonEmpty('email', app.AuthorEmail, doc, apel) addElementNonEmpty('donate', app.Donate, doc, apel) addElementNonEmpty('bitcoin', app.Bitcoin, doc, apel) addElementNonEmpty('litecoin', app.Litecoin, doc, apel) addElementNonEmpty('flattr', app.FlattrID, doc, apel) addElementNonEmpty('liberapay', app.LiberapayID, doc, apel) # These elements actually refer to the current version (i.e. which # one is recommended. They are historically mis-named, and need # changing, but stay like this for now to support existing clients. addElement('marketversion', app.CurrentVersion, doc, apel) addElement('marketvercode', app.CurrentVersionCode, doc, apel) if app.Provides: pv = app.Provides.split(',') addElementNonEmpty('provides', ','.join(pv), doc, apel) if app.RequiresRoot: addElement('requirements', 'root', doc, apel) # Sort the apk list into version order, just so the web site # doesn't have to do any work by default... apklist = sorted(apklist, key=lambda apk: apk['versionCode'], reverse=True) if 'antiFeatures' in apklist[0]: app.AntiFeatures.extend(apklist[0]['antiFeatures']) if app.AntiFeatures: addElementNonEmpty('antifeatures', ','.join(app.AntiFeatures), doc, apel) # Check for duplicates - they will make the client unhappy... for i in range(len(apklist) - 1): first = apklist[i] second = apklist[i + 1] if first['versionCode'] == second['versionCode'] \ and first['sig'] == second['sig']: if first['hash'] == second['hash']: raise FDroidException('"{0}/{1}" and "{0}/{2}" are exact duplicates!'.format( repodir, first['apkName'], second['apkName'])) else: raise FDroidException('duplicates: "{0}/{1}" - "{0}/{2}"'.format( repodir, first['apkName'], second['apkName'])) current_version_code = 0 current_version_file = None for apk in apklist: file_extension = common.get_file_extension(apk['apkName']) # find the APK for the "Current Version" if current_version_code < apk['versionCode']: current_version_code = apk['versionCode'] if current_version_code < int(app.CurrentVersionCode): current_version_file = apk['apkName'] apkel = doc.createElement("package") apel.appendChild(apkel) versionName = apk.get('versionName') if not versionName: versionCodeStr = str(apk['versionCode']) # TODO build.versionCode should be int! for build in app.builds: if build['versionCode'] == versionCodeStr and 'versionName' in build: versionName = build['versionName'] break if versionName: addElement('version', versionName, doc, apkel) addElement('versioncode', str(apk['versionCode']), doc, apkel) addElement('apkname', apk['apkName'], doc, apkel) addElementIfInApk('srcname', apk, 'srcname', doc, apkel) hashel = doc.createElement("hash") hashel.setAttribute('type', 'sha256') hashel.appendChild(doc.createTextNode(apk['hash'])) apkel.appendChild(hashel) addElement('size', str(apk['size']), doc, apkel) addElementIfInApk('sdkver', apk, 'minSdkVersion', doc, apkel) addElementIfInApk('targetSdkVersion', apk, 'targetSdkVersion', doc, apkel) addElementIfInApk('maxsdkver', apk, 'maxSdkVersion', doc, apkel) addElementIfInApk('obbMainFile', apk, 'obbMainFile', doc, apkel) addElementIfInApk('obbMainFileSha256', apk, 'obbMainFileSha256', doc, apkel) addElementIfInApk('obbPatchFile', apk, 'obbPatchFile', doc, apkel) addElementIfInApk('obbPatchFileSha256', apk, 'obbPatchFileSha256', doc, apkel) if 'added' in apk: addElement('added', apk['added'].strftime('%Y-%m-%d'), doc, apkel) if file_extension == 'apk': # sig is required for APKs, but only APKs addElement('sig', apk['sig'], doc, apkel) old_permissions = set() sorted_permissions = sorted(apk['uses-permission']) for perm in sorted_permissions: perm_name = perm.name if perm_name.startswith("android.permission."): perm_name = perm_name[19:] old_permissions.add(perm_name) addElementNonEmpty('permissions', ','.join(sorted(old_permissions)), doc, apkel) for permission in sorted_permissions: permel = doc.createElement('uses-permission') permel.setAttribute('name', permission.name) if permission.maxSdkVersion is not None: permel.setAttribute('maxSdkVersion', '%d' % permission.maxSdkVersion) apkel.appendChild(permel) for permission_sdk_23 in sorted(apk['uses-permission-sdk-23']): permel = doc.createElement('uses-permission-sdk-23') permel.setAttribute('name', permission_sdk_23.name) if permission_sdk_23.maxSdkVersion is not None: permel.setAttribute('maxSdkVersion', '%d' % permission_sdk_23.maxSdkVersion) apkel.appendChild(permel) if 'nativecode' in apk: addElement('nativecode', ','.join(sorted(apk['nativecode'])), doc, apkel) addElementNonEmpty('features', ','.join(sorted(apk['features'])), doc, apkel) if current_version_file is not None \ and common.config['make_current_version_link'] \ and repodir == 'repo': # only create these namefield = common.config['current_version_name_source'] sanitized_name = re.sub(b'''[ '"&%?+=/]''', b'', app.get(namefield).encode('utf-8')) apklinkname = sanitized_name + os.path.splitext(current_version_file)[1].encode('utf-8') current_version_path = os.path.join(repodir, current_version_file).encode('utf-8', 'surrogateescape') if os.path.islink(apklinkname): os.remove(apklinkname) os.symlink(current_version_path, apklinkname) # also symlink gpg signature, if it exists for extension in (b'.asc', b'.sig'): sigfile_path = current_version_path + extension if os.path.exists(sigfile_path): siglinkname = apklinkname + extension if os.path.islink(siglinkname): os.remove(siglinkname) os.symlink(sigfile_path, siglinkname) if common.options.pretty: output = doc.toprettyxml(encoding='utf-8') else: output = doc.toxml(encoding='utf-8') with open(os.path.join(repodir, 'index.xml'), 'wb') as f: f.write(output) if 'repo_keyalias' in common.config: if common.options.nosign: logging.info(_("Creating unsigned index in preparation for signing")) else: logging.info(_("Creating signed index with this key (SHA256):")) logging.info("%s" % repo_pubkey_fingerprint) # Create a jar of the index... jar_output = 'index_unsigned.jar' if common.options.nosign else 'index.jar' p = FDroidPopen(['jar', 'cf', jar_output, 'index.xml'], cwd=repodir) if p.returncode != 0: raise FDroidException("Failed to create {0}".format(jar_output)) # Sign the index... signed = os.path.join(repodir, 'index.jar') if common.options.nosign: # Remove old signed index if not signing if os.path.exists(signed): os.remove(signed) else: signindex.config = common.config signindex.sign_jar(signed) # Copy the repo icon into the repo directory... icon_dir = os.path.join(repodir, 'icons') iconfilename = os.path.join(icon_dir, os.path.basename(common.config['repo_icon'])) shutil.copyfile(common.config['repo_icon'], iconfilename) def extract_pubkey(): """ Extracts and returns the repository's public key from the keystore. :return: public key in hex, repository fingerprint """ if 'repo_pubkey' in common.config: pubkey = unhexlify(common.config['repo_pubkey']) else: env_vars = {'FDROID_KEY_STORE_PASS': common.config['keystorepass']} p = FDroidPopenBytes([common.config['keytool'], '-exportcert', '-alias', common.config['repo_keyalias'], '-keystore', common.config['keystore'], '-storepass:env', 'FDROID_KEY_STORE_PASS'] + common.config['smartcardoptions'], envs=env_vars, output=False, stderr_to_stdout=False) if p.returncode != 0 or len(p.output) < 20: msg = "Failed to get repo pubkey!" if common.config['keystore'] == 'NONE': msg += ' Is your crypto smartcard plugged in?' raise FDroidException(msg) pubkey = p.output repo_pubkey_fingerprint = common.get_cert_fingerprint(pubkey) return hexlify(pubkey), repo_pubkey_fingerprint def get_mirror_service_urls(url): '''Get direct URLs from git service for use by fdroidclient Via 'servergitmirrors', fdroidserver can create and push a mirror to certain well known git services like gitlab or github. This will always use the 'master' branch since that is the default branch in git. The files are then accessible via alternate URLs, where they are served in their raw format via a CDN rather than from git. ''' if url.startswith('git@'): url = re.sub(r'^git@(.*):(.*)', r'https://\1/\2', url) segments = url.split("/") if segments[4].endswith('.git'): segments[4] = segments[4][:-4] hostname = segments[2] user = segments[3] repo = segments[4] branch = "master" folder = "fdroid" urls = [] if hostname == "github.com": # Github-like RAW segments "https://raw.githubusercontent.com/user/repo/branch/folder" segments[2] = "raw.githubusercontent.com" segments.extend([branch, folder]) urls.append('/'.join(segments)) elif hostname == "gitlab.com": # Both these Gitlab URLs will work with F-Droid, but only the first will work in the browser # This is because the `raw` URLs are not served with the correct mime types, so any # index.html which is put in the repo will not be rendered. Putting an index.html file in # the repo root is a common way for to make information about the repo available to end user. # Gitlab-like Pages segments "https://user.gitlab.io/repo/folder" gitlab_pages = ["https:", "", user + ".gitlab.io", repo, folder] urls.append('/'.join(gitlab_pages)) # Gitlab Raw "https://gitlab.com/user/repo/raw/branch/folder" gitlab_raw = segments + ['raw', branch, folder] urls.append('/'.join(gitlab_raw)) return urls return urls def download_repo_index(url_str, etag=None, verify_fingerprint=True): """ Downloads the repository index from the given :param url_str and verifies the repository's fingerprint if :param verify_fingerprint is not False. :raises: VerificationException() if the repository could not be verified :return: A tuple consisting of: - The index in JSON format or None if the index did not change - The new eTag as returned by the HTTP request """ url = urllib.parse.urlsplit(url_str) fingerprint = None if verify_fingerprint: query = urllib.parse.parse_qs(url.query) if 'fingerprint' not in query: raise VerificationException(_("No fingerprint in URL.")) fingerprint = query['fingerprint'][0] url = urllib.parse.SplitResult(url.scheme, url.netloc, url.path + '/index-v1.jar', '', '') download, new_etag = net.http_get(url.geturl(), etag) if download is None: return None, new_etag with tempfile.NamedTemporaryFile() as fp: # write and open JAR file fp.write(download) jar = zipfile.ZipFile(fp) # verify that the JAR signature is valid logging.debug(_('Verifying index signature:')) common.verify_jar_signature(fp.name) # get public key and its fingerprint from JAR public_key, public_key_fingerprint = get_public_key_from_jar(jar) # compare the fingerprint if verify_fingerprint is True if verify_fingerprint and fingerprint.upper() != public_key_fingerprint: raise VerificationException(_("The repository's fingerprint does not match.")) # load repository index from JSON index = json.loads(jar.read('index-v1.json').decode("utf-8")) index["repo"]["pubkey"] = hexlify(public_key).decode("utf-8") index["repo"]["fingerprint"] = public_key_fingerprint # turn the apps into App objects index["apps"] = [metadata.App(app) for app in index["apps"]] return index, new_etag def get_public_key_from_jar(jar): """ Get the public key and its fingerprint from a JAR file. :raises: VerificationException() if the JAR was not signed exactly once :param jar: a zipfile.ZipFile object :return: the public key from the jar and its fingerprint """ # extract certificate from jar certs = [n for n in jar.namelist() if common.CERT_PATH_REGEX.match(n)] if len(certs) < 1: raise VerificationException(_("Found no signing certificates for repository.")) if len(certs) > 1: raise VerificationException(_("Found multiple signing certificates for repository.")) # extract public key from certificate public_key = common.get_certificate(jar.read(certs[0])) public_key_fingerprint = common.get_cert_fingerprint(public_key).replace(' ', '') return public_key, public_key_fingerprint fdroidserver-1.0.9/fdroidserver/metadata.py0000664000175000017500000014161113323655167020774 0ustar hanshans00000000000000#!/usr/bin/env python3 # # metadata.py - part of the FDroid server tools # Copyright (C) 2013, Ciaran Gultnieks, ciaran@ciarang.com # Copyright (C) 2013-2014 Daniel Martí # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . import json import os import re import glob import html import logging import textwrap import io import yaml from collections import OrderedDict # use libyaml if it is available try: from yaml import CLoader YamlLoader = CLoader except ImportError: from yaml import Loader YamlLoader = Loader import fdroidserver.common from fdroidserver import _ from fdroidserver.exception import MetaDataException, FDroidException srclibs = None warnings_action = None def warn_or_exception(value): '''output warning or Exception depending on -W''' if warnings_action == 'ignore': pass elif warnings_action == 'error': raise MetaDataException(value) else: logging.warning(value) # To filter which ones should be written to the metadata files if # present app_fields = set([ 'Disabled', 'AntiFeatures', 'Provides', 'Categories', 'License', 'Author Name', 'Author Email', 'Author Web Site', 'Web Site', 'Source Code', 'Issue Tracker', 'Translation', 'Changelog', 'Donate', 'FlattrID', 'LiberapayID', 'Bitcoin', 'Litecoin', 'Name', 'Auto Name', 'Summary', 'Description', 'Requires Root', 'Repo Type', 'Repo', 'Binaries', 'Maintainer Notes', 'Archive Policy', 'Auto Update Mode', 'Update Check Mode', 'Update Check Ignore', 'Vercode Operation', 'Update Check Name', 'Update Check Data', 'Current Version', 'Current Version Code', 'No Source Since', 'Build', 'comments', # For formats that don't do inline comments 'builds', # For formats that do builds as a list ]) class App(dict): def __init__(self, copydict=None): if copydict: super().__init__(copydict) return super().__init__() self.Disabled = None self.AntiFeatures = [] self.Provides = None self.Categories = ['None'] self.License = 'Unknown' self.AuthorName = None self.AuthorEmail = None self.AuthorWebSite = None self.WebSite = '' self.SourceCode = '' self.IssueTracker = '' self.Translation = '' self.Changelog = '' self.Donate = None self.FlattrID = None self.LiberapayID = None self.Bitcoin = None self.Litecoin = None self.Name = None self.AutoName = '' self.Summary = '' self.Description = '' self.RequiresRoot = False self.RepoType = '' self.Repo = '' self.Binaries = None self.MaintainerNotes = '' self.ArchivePolicy = None self.AutoUpdateMode = 'None' self.UpdateCheckMode = 'None' self.UpdateCheckIgnore = None self.VercodeOperation = None self.UpdateCheckName = None self.UpdateCheckData = None self.CurrentVersion = '' self.CurrentVersionCode = None self.NoSourceSince = '' self.id = None self.metadatapath = None self.builds = [] self.comments = {} self.added = None self.lastUpdated = None def __getattr__(self, name): if name in self: return self[name] else: raise AttributeError("No such attribute: " + name) def __setattr__(self, name, value): self[name] = value def __delattr__(self, name): if name in self: del self[name] else: raise AttributeError("No such attribute: " + name) def get_last_build(self): if len(self.builds) > 0: return self.builds[-1] else: return Build() TYPE_UNKNOWN = 0 TYPE_OBSOLETE = 1 TYPE_STRING = 2 TYPE_BOOL = 3 TYPE_LIST = 4 TYPE_SCRIPT = 5 TYPE_MULTILINE = 6 TYPE_BUILD = 7 TYPE_BUILD_V2 = 8 TYPE_INT = 9 fieldtypes = { 'Description': TYPE_MULTILINE, 'MaintainerNotes': TYPE_MULTILINE, 'Categories': TYPE_LIST, 'AntiFeatures': TYPE_LIST, 'BuildVersion': TYPE_BUILD, 'Build': TYPE_BUILD_V2, 'UseBuilt': TYPE_OBSOLETE, } def fieldtype(name): name = name.replace(' ', '') if name in fieldtypes: return fieldtypes[name] return TYPE_STRING # In the order in which they are laid out on files build_flags_order = [ 'disable', 'commit', 'timeout', 'subdir', 'submodules', 'sudo', 'init', 'patch', 'gradle', 'maven', 'buildozer', 'output', 'srclibs', 'oldsdkloc', 'encoding', 'forceversion', 'forcevercode', 'rm', 'extlibs', 'prebuild', 'androidupdate', 'target', 'scanignore', 'scandelete', 'build', 'buildjni', 'ndk', 'preassemble', 'gradleprops', 'antcommands', 'novcheck', 'antifeatures', ] # old .txt format has version name/code inline in the 'Build:' line # but YAML and JSON have a explicit key for them build_flags = ['versionName', 'versionCode'] + build_flags_order class Build(dict): def __init__(self, copydict=None): super().__init__() self.disable = False self.commit = None self.timeout = None self.subdir = None self.submodules = False self.sudo = '' self.init = '' self.patch = [] self.gradle = [] self.maven = False self.buildozer = False self.output = None self.srclibs = [] self.oldsdkloc = False self.encoding = None self.forceversion = False self.forcevercode = False self.rm = [] self.extlibs = [] self.prebuild = '' self.androidupdate = [] self.target = None self.scanignore = [] self.scandelete = [] self.build = '' self.buildjni = [] self.ndk = None self.preassemble = [] self.gradleprops = [] self.antcommands = [] self.novcheck = False self.antifeatures = [] if copydict: super().__init__(copydict) return def __getattr__(self, name): if name in self: return self[name] else: raise AttributeError("No such attribute: " + name) def __setattr__(self, name, value): self[name] = value def __delattr__(self, name): if name in self: del self[name] else: raise AttributeError("No such attribute: " + name) def build_method(self): for f in ['maven', 'gradle', 'buildozer']: if self.get(f): return f if self.output: return 'raw' return 'ant' # like build_method, but prioritize output= def output_method(self): if self.output: return 'raw' for f in ['maven', 'gradle', 'buildozer']: if self.get(f): return f return 'ant' def ndk_path(self): version = self.ndk if not version: version = 'r12b' # falls back to latest paths = fdroidserver.common.config['ndk_paths'] if version not in paths: return '' return paths[version] flagtypes = { 'versionCode': TYPE_INT, 'extlibs': TYPE_LIST, 'srclibs': TYPE_LIST, 'patch': TYPE_LIST, 'rm': TYPE_LIST, 'buildjni': TYPE_LIST, 'preassemble': TYPE_LIST, 'androidupdate': TYPE_LIST, 'scanignore': TYPE_LIST, 'scandelete': TYPE_LIST, 'gradle': TYPE_LIST, 'antcommands': TYPE_LIST, 'gradleprops': TYPE_LIST, 'sudo': TYPE_SCRIPT, 'init': TYPE_SCRIPT, 'prebuild': TYPE_SCRIPT, 'build': TYPE_SCRIPT, 'submodules': TYPE_BOOL, 'oldsdkloc': TYPE_BOOL, 'forceversion': TYPE_BOOL, 'forcevercode': TYPE_BOOL, 'novcheck': TYPE_BOOL, 'antifeatures': TYPE_LIST, 'timeout': TYPE_INT, } def flagtype(name): if name in flagtypes: return flagtypes[name] return TYPE_STRING class FieldValidator(): """ Designates App metadata field types and checks that it matches 'name' - The long name of the field type 'matching' - List of possible values or regex expression 'sep' - Separator to use if value may be a list 'fields' - Metadata fields (Field:Value) of this type """ def __init__(self, name, matching, fields): self.name = name self.matching = matching self.compiled = re.compile(matching) self.fields = fields def check(self, v, appid): if not v: return if type(v) == list: values = v else: values = [v] for v in values: if not self.compiled.match(v): warn_or_exception(_("'{value}' is not a valid {field} in {appid}. Regex pattern: {pattern}") .format(value=v, field=self.name, appid=appid, pattern=self.matching)) # Generic value types valuetypes = { FieldValidator("Flattr ID", r'^[0-9a-z]+$', ['FlattrID']), FieldValidator("Liberapay ID", r'^[0-9]+$', ['LiberapayID']), FieldValidator("HTTP link", r'^http[s]?://', ["WebSite", "SourceCode", "IssueTracker", "Translation", "Changelog", "Donate"]), FieldValidator("Email", r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$', ["AuthorEmail"]), FieldValidator("Bitcoin address", r'^[a-zA-Z0-9]{27,34}$', ["Bitcoin"]), FieldValidator("Litecoin address", r'^L[a-zA-Z0-9]{33}$', ["Litecoin"]), FieldValidator("Repo Type", r'^(git|git-svn|svn|hg|bzr|srclib)$', ["RepoType"]), FieldValidator("Binaries", r'^http[s]?://', ["Binaries"]), FieldValidator("Archive Policy", r'^[0-9]+ versions$', ["ArchivePolicy"]), FieldValidator("Anti-Feature", r'^(Ads|Tracking|NonFreeNet|NonFreeDep|NonFreeAdd|UpstreamNonFree|NonFreeAssets|KnownVuln|ApplicationDebuggable)$', ["AntiFeatures"]), FieldValidator("Auto Update Mode", r"^(Version .+|None)$", ["AutoUpdateMode"]), FieldValidator("Update Check Mode", r"^(Tags|Tags .+|RepoManifest|RepoManifest/.+|RepoTrunk|HTTP|Static|None)$", ["UpdateCheckMode"]) } # Check an app's metadata information for integrity errors def check_metadata(app): for v in valuetypes: for k in v.fields: v.check(app[k], app.id) # Formatter for descriptions. Create an instance, and call parseline() with # each line of the description source from the metadata. At the end, call # end() and then text_txt and text_html will contain the result. class DescriptionFormatter: stNONE = 0 stPARA = 1 stUL = 2 stOL = 3 def __init__(self, linkres): self.bold = False self.ital = False self.state = self.stNONE self.laststate = self.stNONE self.text_html = '' self.text_txt = '' self.html = io.StringIO() self.text = io.StringIO() self.para_lines = [] self.linkResolver = None self.linkResolver = linkres def endcur(self, notstates=None): if notstates and self.state in notstates: return if self.state == self.stPARA: self.endpara() elif self.state == self.stUL: self.endul() elif self.state == self.stOL: self.endol() def endpara(self): self.laststate = self.state self.state = self.stNONE whole_para = ' '.join(self.para_lines) self.addtext(whole_para) wrapped = textwrap.fill(whole_para, 80, break_long_words=False, break_on_hyphens=False) self.text.write(wrapped) self.html.write('

') del self.para_lines[:] def endul(self): self.html.write('') self.laststate = self.state self.state = self.stNONE def endol(self): self.html.write('') self.laststate = self.state self.state = self.stNONE def formatted(self, txt, htmlbody): res = '' if htmlbody: txt = html.escape(txt, quote=False) while True: index = txt.find("''") if index == -1: return res + txt res += txt[:index] txt = txt[index:] if txt.startswith("'''"): if htmlbody: if self.bold: res += '

ZсGXctOR^PەͰٍ >Y18UB.}AOYrAݾ98dB4!i`B;RkR8rUovf`,H9 zI 0Γ04 =nz0Ao9b#L(F;h%ZƐ6z (NaM0hK#zfU+Cm=BC趫Ty#y<z͒W45KZ@&B1*~r~6O˻mk;+Iu$ؙ fkڷb(@Ta{;?~SUw;7O|˟|}{IelPppHD"aтC?~p%9$KCh3 8DŽ` 0$zc6hpRj!97Uڀc3;;(Y7{RJ7J )"a$qd2J8;Ky` i+JZeD`J0XZۮH?88ؗUG"1L)icmR8ڮJs ]ǀ(&9JѺ+g q.$0#vvr}?8m=8DHƒ&i&ښIg="j//|&y,@L+5"[mySer<}]7lRdAE1s6 XJ1V&GQtŨ.wIʇ$Hdٖ`ZYx^ZL ɱ`4Z-5FC<4L 1(1Ja?8#Yryݺ?ۢ(&Vf.nzrdAT˱nO- oyq) 2eh#j!tø۵7Ak=@Nx7 pk3 gyp""RLp ga; XOl0SjyqG< f;Pe]]' yP _FPL/~ScJ׫m>c'7}^77rc@; XS ,)fO擣 Fh)UrYڲ,s)54 ,.IS[Y ]݅1<8F59J!tc0rUƔ4ǏVɬ9x{e $ 8OVWWןk-f(Fӌ0ROn,fa!N &:#s&g$"FPBZ拯^;p#FуS.X[/k8ڹQz !޻'qMzo iy9S}ܗlmVǧbח;e`c"zNk!̜?KbA~w޾|ptA1vY16'axJ.U%y<{)&T3'$ !a{~&G2BI9:g !)푷{GR[G 2N6M=Fk-с<Rr0m;rθT8  *( w*G<zܼӣ ,RJo/|٣SyaRJ1/N<guq3Jw}׍Rqֻ(Xߵ֪IK9NY$ \YVݪ5SF׵5-!Ǫo[ou9 ,"Ww'G3~v^"?:[7u`mpM]mCX4Z*alXB(ߗ6IMۗo;~!0a+,d9 ^ʺnyJM,5A{'c  k{ByzQa8 cF76BY^@[t ?^LN0c:Bw^G0<}3%]-G1GET5.OjBN" E4-xq]U aP 1Ƅ !Q3QCNZydvRC]iB=9>!??J< , [\Ti=ób6+}t2 ;qg8Onrݴ;,fLw@|[;K$˵u98ʹF3|$І899]EYgyE ~_qW[t J mx 6nK<NS'ۦYڃ8wCH4CAx |Zt_7׷"4PyM;4E"HH׈B///]a ,RYUU]m7{+ux9u;t ` Sx ? рA/ViR)}/w('}Uze3SFB(:IpQ0zzxBX}7(óbZ{cttgF0 u$IV%&$`tv{rjB= !a3k-„1*D@r!Y$,2or* E uVK7:紒]ہG]m,:eno~%cH A1O ?/^|{WnO)߬FB03T:c:@0X{ &(-Ⱥ]y/?)d|k8"&1.FsQB@U쫶aXM܍xsWo?=tWGX7*zYD(CĸH! xe14l[w;ͫ[#V3 F;4ͪ~f@ :Pj2zFiF1M?2J(fRAadBBǂaƉ59G01jMA'QE $"l]HGp7VI5J0 CY;! 38H`42.0bn eY;Ge~1$ς<_~QeoM1LKc Hv0IO.p0Ygv/o_f_$.W0 X pyp>;YFIKɾިj7?~e NkGQ4Zd(A*-RZw][rJD۵;$E r0v9@e48YWJJic0 hkzQ0(ՌNi31F)9oqy04Mf'g󢐪O~rq9A rh8ƈՌB/q.K("G' wm;=¬7|X}0"ξx cw%ӏ#Wf}q*FV"0lCiU!\eY.&6ASF8fBBpvW:F92J4 aZvrɪnif{|k$ܕCR=SNsBpOSf&TmFu3f}uQ*ofn69H^]*V,>zn`18e䠵62d4=*r C.=qǻQJmwuE!I,㳳`]oJq׫t:I9FQ zEanO?^]1&4wPkJ8 g Ȣ"@xoGkJXE)}SlnmorcTX0ޘs8 (/;y||dxgôȒcc.`TFwkp\~===0l7mդq콋nk}sy1nzठ:2(xx-W5O>޳ v]}u_z~~ruZ`źxaXwar%v$gBb80O4zQθc]60 F9oqUvvzEhs d? )'?~z~E$eվ^n[a8ɬ mE1L)##/G8~jGY ʢ~0Z;=r#}@BB{`HѮA ?q0lVy" 1~"f#Ny`i:@z&8F @S98!selc`kD0}J @42!& - aqxBBFnm;9 ] 4'a Zc[5K9;x8^ob!&)xS`qv8Agn7B\4 @ɓI DV߾|=n{"W^8aJa,8m"a<~ \jXs}?Jڱ03"KKC"NO=rQ"(=lZi)!7{ HJ=zc"<cJð;ϨA"nI9UCMOWW5m zNuP$g;3yRrn]UV.AQI˻K5O~~ww'EQ\0]糩1fصtZU&#B8缳="X6z1n*q6aQai!a (:~G0u0Ā$ij&ipNkF0ň"vI-mfNώ(wmfcя;39Gu7tm'QJ)$l&A~]-mq\L$  $+@bwl~+]&^T?dqb6y<;bľK8 ۶]4a{凜Ji=eC0<#о6Ph^|4ϳ8:͋rQ'Of5Fr %j>ypM!etɊ R?S_zVQAȏf/nwfq àa `mof Ny ~P%b;K" bJUCb“4Q`(j|2;Y(y*h\Gck`ɃdyB:d˭Q.M4ai1{+oGGxOf'q8_}}ݔg='ś}˗E>9NŌ)WONN, Q.ˋo"eӃPFA!!c~ rQJrʝVx^z۲$Kl_wᑑAfeQJbS9#`DȬ̪l"o<_{֌u=<:fwefk91Er:;w۶Iӱ;FB@)I$D0'kPVx?NbFV ښ~g6BFU4着1׿i ~/_&Eaaawϟ|||TJMg;b!awZnPl>!8,}RH2EIHSHrƈ~DnBF[TM8&DXH%c Eι(mN'}sGCOq # "~wS;PץB휫jw}]>e3%E.ų'?}w̾O2Pu<1Z .Ic[䓉!0VZ8p-' D>YLkR;OrY~ĿxY*h$Z@9?6q9Xv]D-+]O04eU*ff17_ys}ؾ{wTŪ ӏ^<̵wp`ѷ>9[/?=?ݯ?{dӧϟ=@'܏Ŵ/ۮeyYNr} r ܚov֠xVՔ)S3"TJ'I1lz#P0hcP(4 e5/ω23=uuW9)SҘ'M!1&lG7!p[a ѵm`¤8$@,HpO>zxxRP)aNLa;R)3!H&̍9<_Ǯ 4Vu]W9%%q) ecN'S!U?﷛n0;;U7xjB)*l +YK$"eRRTN޷,e<ӳTnuscK-Sϼx^_fRXmsLA Q|_~9X0V (w(˲ZZӶC~[k]umnvno~(_|_<}3C_<1=6SE ׏Χ>BJkYQ {gsqw$:<*w! sY*PP#)Fb 2Y cwQ&d X j4(A}L D\H-l,&e-L5b:H!3b13 rN 03Bmps%Znj!N?E#+^kٳٴBղXJo1&QrCl6ǟT,/$f*M{8տ0w//ۯ}.8qR÷?~l&i&D?0r"!RQPpXTwq .&YSVRx]\w9b^|f\ z.\UCͦxרgcLՓI7î j}_~1zA3D#T\(+3 ,@mR+K1CGui)?h9GFdH T$%DC:#e2srg?0Jl_B$L]f*ep3G<<1ͤ? p`N-a1QQX?x"SbM&")@`Y´Vt߶M;PY-*hJ|LbV<{4R_4Jä,rmtb@fe1&8ܻ\hR*'P"(>@Xĉ- 47}{ ~ `\/^f0 (Ǝ2Ӫpn9[H3WU,i3ѹ wCFVus"'olD76tV|QUuWR?r~6b_;wee% cFQ1cTP6V 腱fr"Oafw}}V5ɾ~{g~ɢ1i~rQZE)?ibden,R"]fsFx~?Ǣf3z!}rs(͇O. oG,~|Kr9ª/?0F[i;;kL15)=W45EF Y]Lv~#Q6 K[̊Br-gRf3mr tƑAx>LA@)dF!DE68G@$KTs,b@)>dPBZ#u l=C0XRƘ0ɬqLCO(>zٻHy4ӜR!dS`B1g=>v1Uj\ic(=*NR1~C_ ΡRŤ] pfA=@UI"H)!'Q2 RZean~tF< Umli43=׿-Ϟ^UUlp'Ujaw(ˏۮ=1ˋZk)bCo~W(jZȔ yU13%OL l؍]JaLQMSʇ~lnJ.|8h"@JդTq@%oƪҠ _{U]O1GbU$dfb+Z=<ϮtnߎH"4%X-eUc?vGS)DYuW3͡dƏfӏwly_f=w ]"d|:5;H KիkхB iåEÐP7œE%jRbwws|}Z^/f_/V|a@̈́\7rzZB#sL(@F xXP&P i|ې9BYUXz IDATcL&m¢ .nŲ|/ $OUαCs.0}}:[U! w7O/!bq˟]]Zfw&KO+=P(RBٵ[. DF eqaD((!!Vǜ2@aT)䜢@B5%,YIvx"dI`VҢ4߹U w~4aCꢮkeL7{ BY4q@PH1,|:_!sw8]C]fby5Uݶ@QuŐR)MbV3Jr }L1`$F[6LlNǞ ! )=:rXbJRZjSd3E8rvV(EiF!6fCwCC/PׯlBP2r^cLC"eL4( l>(;N.*RP bS'u=}7earu5ڣ.Q`B<”R2]#g%H?yTZ8s@KR `k,gʙrȐBΦ"64 gn >VWRK}y~r"c`Md@>\8[UInί{ze#{9$Η.lf6)}!e`ξ+&)є!I3!GSq49QRJ? b;Js,%bEeJ!8c ]3VFM,~*TŴ(RRZ%Bʋ3S& `Dw8(deއ aLqt솿v+̰1ff >D.ϭ(w1geJ6v6;@y5GO|֏7ik/֕~8nwPd@)v?vc]ZFPԥ(!ĮƮEaB9P#])z>fA@S%q+*bZ!hBH^,2UzJ'8D7o޿x qPhP|uvq{8T~#NWWOvCp8͞H!?&x6cBdaB Kϟ.^ TWSSWR ~8b⢞VERhJn 'ѻ߾ĜkΖzoY@Sȥi) Y)(frvZ6c,;Nw솣R*U]-gf!NӦjX PҒ( Uh%r4ZVBhm)nTI!~×ꝏֶ.*v@hRh90J [m̴q" @hʼnHD@"``H⤭%Q0 , B=DL_͝i=Uf^+HCBFMU2y6Hx>ϔOTzZ]lL&) (YȲ+!&ϧL,=7l]b(c?f5]Z]nL99 6@C` [) NNO'c]X-퍒*XD;w8:^-R>|Q@t#rnL)`ZB#w}׎.fӁ/z~׾'g>uY912FHϛsJ}vv?޴B'a;bVg*΍=ZL]?r.2!%TD)R JPc!2c1 $ #8OIiRv1 Fy6z}$1>Q{u) g ~q 볕*kb.0DeQדy g˘ݱ}dB3k||F03))l臃w^6ĴnO.cJ?8Ss3*1D(@ Ĝr@A ?Xw!^ Y\U16 npN`L IDdz6mfJtC!z-Ebh-a͆*_g]&?.4nG\J%xKTC^ ZM) 7I,xn/zص,%dм=<.kﶣ8 P R!N캮(q-נ囮sa`sNRv-Rt^&& d"'Ӊ 1d$P530BiaQUiu#j{B"><<3ͦ2՗޼yj^'wHq cB8(-1-ȔC\LkW_~yCH2ebbB1!$ϐSfHN&r^ɟ|Z~?tBQ:|w[!Ey|FWV___ݠQ[0RsD4ɚq5RfmLn{t7X^(%1R=E`iUv;`^]\uc߷~;n@U0RF_Jzĕ>SJ0JZcT8rZ)%BL(VV1|g[M &[.LW_=>hp3Ms aZ3aTtwb:M~0VCn>{qݏ;(2>ry~Յ:x ;AZieA Dd0&OJ xzXhHFH \eftFtVT@e5qDYn]ܻQ3ҺzN9My} EUO)B_fkR]4yt/uq%QG+-(kTOϯCo=a>>[^,yS_QSNFY(V|zppyq1 !iun9=vBEBDxPK5Rle{s4 %ܨIUXe]z <d>N' aup2 s3դ&m5_ZjԅeuUM,Փӿz%/u\9BH, *FL&C_3l/̄D 3` _`"TiE+()Ǡ;,ˉ),'MMnmш}UK !#3$1t00`&)1p}ۍ|J  S(nAi-FU]_4J⤱9sLgg)|TB<=|:]]\cws{ssʹOkk )es,TJ01S&D9'7 z: D熱 v~v?c 8Xk8Vڌ.6k4!d$hk1%¨cߪui:tGPl> L1Mlu:B(8чRI"(RS)4U])窰!w)}˲6 @ԇ8-ׁ (P#pT*לOJVx~qH>g8\|Rnz/ u>xz؏!g5x\aep!%bb`1I]nCQ~<5 z∀ J̌ ?@IA28dS:&ZE.mQ~OR CN+a s]\ރTU*JX|ZCS=k%٤v.C<, @q0 ׻]yG#DZZ=eWw1X9W(#@34H!tscη1o*]j=5g]6VhH9*2B230X)(Y)]hCyO,01EiVRbfnCG9h5I$`Y>čs @$gRsQ ;(! s'9v{PJq#F̤RdT,~2ȷfZMk)ʍH%\DXR0z  !LR9L&RVRbJ#Q$ w1X PcJXXe| Adg c~T;@P@Jm?}rۇ)|2VB>đ1 %0Z P>9_}G_7O1WoUB%9ĘcD@v!dNRr)@! !Bf"ƲA \ 0Ƥ攵L$q1ReiEarݦuWϮvM ( KcU7nL"Nh#"$t_Y+ !7-&@O'\D22(lEf EELŤR'udj<A49 8`R0"K,s.,.N.bO޶_~**F2'Ra&@ $@lNXO( 3 fXfLɆ\Սǖ!0"04 6b1e*fBv~Hɧ {~@$2ʈZKM>x@!Y(d$! `&&A0' !@;us]N]]m{۵$ Ϋf3`J 8x EYiehz1OVHmHE=S#2G%0/LYR8`JaLQg2Vw7w))jϦc7]??ΥJf|4eq}cH^竕}DbJ)m@1GJJJ+MuιT s C|LմȔ{bB C?!=t1xtsļ\?9+(!{ן |>5ɤiH}?9;r&fNsi蝒J}Ɛxh*5FhRZSl_ Ϣ)%I*=.":03E mq`XD BLOtlN8؉P-_Ip<cpp9i Ut 1&F O{Xb gӜ\_ިZaF4Ѓ~.Hf `tOWW5ulm$uoHv "(SWTo}>C'WU7jAVr$O"A8)fU"'D٬njEeĤ"Pݤpwd" zUŊ/QaY7!.މ 1LUo(fl1nJ %V Rm94*VMX}S߅ErMj4t' x<DBF:4oё !zquYJAEÇwS7|in"As~G*Y[Ƨ)Yr3GZZy"I:rAe%fzRՎ'6"m4F%QJX1K \Sp6q!!t8B 0S qu\\}<vUUOZ&-" d MX$IU4#sٲf09VS V!MЊ~Rnfj?cEOPE:-㱗: 㲪\#U1r}Dq.,Wͦ/|4X ]T҇ۇnjۦP*ƺi*iaE^/_|+gRNc?eb^5 >|,E>ݒj6T*agCyqRW-br:Rt݃yxm6ӷ), ՟|٬ۡ>>jY/\6prUEDTDyf㨢uhf:x'v],֏C>jp:T*)ǡ$`"9?,YnUۋ}DzA2 dPaAT`=P)rȉqݧXëgE[Y;NYrP% seÐVb7d]wE3tyٌ+nۦ?i@j5ŶLm G\ 4MbS*%P3E(O F0)5ҜA v[[~(FL6 f罨BX/l6-O߽})`:T/7fpw=|O,&y#,ղ],5K"r;%7%yG=0ΣodONqvLRyfhn?|]_|?9 Zdz&.p#*0 T}23H~h^^\-c<%OdH@29p ԠS!Xyݬ:|8rNأ u\?S247coJ, eUpksSIbQzQLD XX 8b߽~\89BsZlbEs( ƖLs z}qQ>}5qޖ)̬(d ֛C:YY_\oMhRw?.:.6ۼ_SSİMKd4L)ڔ2%,7u])XC ç7'>˗x|<cuu)R̴F(HJ)VU ]$]@)p:S׋ESjLL=uyas`\xZ>կ44»pS53K)%g5HrYӔqwĻz8??*zr]o?tHDc@9uJ>uGդ`vU]dedy 33⇥SN+yM!:ཕ)?pPKvIhs,JEmtVJU[6c߽ZU۪r ݤczRM% `vE~SC7w y /IMj`y $Ӕv!tyJD DjU<@5;|*;su1˪ޮ֗«zv9}I3qsonYU_~iI'Çt8]<7 ;;昺'0|R񰯈kH˛+Ս˥S1UV\^,W˕'RRuC`daʓqJ~^5庌j񁼫4L˶qNa40o͛lZg>< 'v)#DjO׫Ã_iHL.!]//؁ژSvc?h1(:Vq9|:\/:@@Uet94!r1gϞM)-Uլaw:^o w<[^^󰟺Ε]kEܣc0A2=9taF࿹Yz2z\^l;~cpi̦ff00y3}9BƑ 1^?}ss]IJQ<8U1B ֍ӧ`߱ ! s4"$QLSɢ KC6V d'|)}י0ر*<P! 5I2WX6ĹgvYTm˕6ԏS*I莧cׯ?9$USn?~W7o׿!?yq^k&/]lC^U]d2 =N#~z0T3(v~RjΥ|c$K& e~/_-֔}J勛"Z7pϪq<|7/۶}wcO1c?>)rЧ_7{W;e0Np8ԜK.`Show7U)9)@ċeY IȔBQ1©?\T Et)EZ3gQQ+S1fB>|1Mic&ޔg}>!\n~N N7.!Ckl5/2Y(j2WUH&Bi31g4W/xxC_]/˿? @ kj^qDLRq5L8<\&l_Ə{Tʂ3˪= |?>oC*-vꟷU}7_[FؙNL%{`Uƒsz_ _BǓCgj&f@7`M~ v88蝚S*wT&% 쬔lScwPb 1a7c!;s3Ç)5]-բ]#N㸽^ˊ=!1PşiS߼w{yFAL s%Sԋ j` *6N}bmeZ }Z>yY/F)1ݎvQvSZbVs g Cٮ }m6?_o.ۺbj1+@i?xz+Ug!Mn^E SRUNc?i5cX?m''=IyjsNןZ4!FfS.hЫ@H4&3Cr .TjiE9N:-9Wy_74N`[1l~O2tLӘ* c)ޛ(2xeFD :¬LYeTJ(d$8@48k9=Q% >I2($I*TП..=9U<^TЕ_o7YafQ0כ/2mMCI;1{~g~"McoL5EQa7>HʗMEW/~xc)eHYC ^S)j\:d+U/fDD9t s.0-Enw%i03 9>TJH1%V2DK4Co꜇*B4oT #8U! 3IyꪭcҗVj&秜 (Yr. "W9:vSaTw}/cUTU0 hj:kXB#GNhU50Ώ<쎚D8%)V" ORl " ]NIʘ1FE6Mɧ)I6Qa0A{pXX.v3vEmI'7˵SєRev y ŠHUp}("YSwL@tl,b&\pjG4Ly*9S2Ui0x`:,p<oS`,Cx}qbv9M'/|~ncL%; c. %'y޾rbI 2{O"Zʗ~'S}6`oXĪy Oz"ׯ7kU}Ir? 85rZכ墍VCh˶n+JDĻiJr:|ŗD]>)k]tB :J"~̄@gѮ5"b}]i>fkiR^xV6j18'UT2U=]/a߶v4cK8zh Ī.VH1<[P/Ԑ$Tcc1ԏyVSuyK1LTm? CN0(>E)E(LC h xTK_8YձJijW EgIP!L bg~~?$:tnCfb*#@e6p+MUV!aiUEPSmꐻvR:{ƜWǏi-|k2K``Qv*]T~y !82aUZr+&ZT $5c&bR'?{a`#%r9*z]RE 9Q)Y>JdͥwaI1J."ybhNDTJd eC㼱[]Vic:a2^Jڶ+-ő\l:͘"$7WUK9Oԍ} o~= Ww{ػusƅoհO2|@~)'̭:i?=-vR2má;%bЧ9j?y]}MSǺnrBrN9Vf&""))4Rj\,El4MDiιLSa梚L s*S#js7~m8oO.d$-jF͢%ʴ6u;SNXb1NE=LJj>ZUN"Sߏ!{8as|LӢi1F+M*TOjf1GI(0ꏜ98 5X =?\':'̌@T@ N >xBt+ iWxdxFbCv~]WNmz7ct,OIY_m Çiw޹*9U}ڵ0@,:3f>8"g*ً^?t˪̘He@tv~}p<*rN>P~wPC㧟}Nw{#.j1iۜqH2J1c6"/0}hTP;"Opfc'^<؏8X6֫q$b)^4x-5 PT^?]/mv 9a(jLsiH.9F3V7xlZ~ I&zY!q$YD'YB31{@MM4&A8nCTHEڶU"2S&6C*BLDU9!ٹsӐlē}1;5U3&`~[D6~OLyj 4xY=9M:%""SLKsrysQBZ_ YsX 쉙2{US,Fj&IDfsk$=W,eaL({(LXfDQ\)0LTT=gA|^D@23@ٔ@'cS93;nVS`SuS/B FLD#3+"Odc;%&U35rNUh֊:,uQJ>+Xb"*RΈٱ ޻컥)݈Jv@|Îh ,UԢȪY'WQ˦OKxf[Ob3^J cgDf3%gv?p{B.⼯} IJ s'bȹ:p#̎e6~ק9tn1IJq1  ޱwDD 35)i̢c771O޿cO=kɭ}?r|!`b&6S^D9954ك̀ƇNIL0w.e~նˋz{Eϓgt^1O8ӓ)''B*@N931{U鼏iF3H~ ̀0YڪDS΁HsUׁ(z?M)T5u]UF *˅rN DL\M!x0LӉ9b68glKQ+ُ eD O;#:G\"_ss RO f&01R4o+okٚ}9ڵnDb,Hd`a#+Kp$B!! ~@ Hd%REQuQ8s{5?.<v9$*թk7 DsfZwigFFDFI@9`pFQExwI &f&Jw4$YgDl9+cMH(Q$jdhyܺ3#"!#Q n쿔e^0sY7 wn6OMyݶny"F6g:A,"[p& 퓅s &r'dzx{ Cel"+j+IDՁEU|^qBLm2Envt04:5"Z{6!e $ֽ͈]y),1[{v} y#CDG \vT)xHA.6dpz#pwx*斉ȚWr uz{9OSkixd{t<h]4Mク5u]'_0Vxͺ]F= aaʇ$8 'K8qe0S\:˟qV)+e1u7$ʌR' `m"ȠJ e̚eZLd6ۗ~c>w{6@VM 2NDy24/w@7Ƿu=/ywNdLP礈a2DN[Hjp#<8WDp0=s&dg08B"7nn։Ot0pXn=3s]7o^'NjCQVzkfRN7ձxĀ3ScnRjEf^. f(W+, HYjs#=8DPmGXErbonlG}UL#qSIŶޘgeUE0rV1W}悆j-YFJӢO"u[0 D2.7#kW88; QR-"e2kJ daD~7ܽo&d"677 ƞRE&<ܝ( NvdDfjj"sk4oBѽb Bf!45f([b4^%y&[ֻm)/N `-`{^v:>Š[%I .0{'!L{mZ~la DOO?{'"|[vg2\ ftu])`mjzS9.۹ܝYt40eRa榒lʑ´!uu[U8 AdDbĘ4=@[myY'"anFԾNj;X_ș%8L>b#~Xyn{; ]1MʕMH^%^N# ̸DUWt3].Y'œm LI9U1-HX|fpvg-#RQn75DE*g֛6}mY2鎡N"Oz}>wsrI "NdBX 4(4TAs5'LDBњ[[kUhx31iSqw>o1C A83"f f2&,ɛ6yp%t g*]^/^̜N5rEVH¬"t9ʼY{otzHv0f͹ݺ<)<)}l~cUB36  ,„a;lTx}ҺaQI'"rw&UeNU2RA77S2|>oۚ޻WˣІU{I&I M"VK֋MejZb#\peywdʼn 9?865%"2;=bG ](V5 ՍR0jx؋>[S޶ D b &dFrҁI^D"ާ.Ln_~ L*ʜBBAB kMfQډ(#=u+=CӛMDX}TV{3L UtNQ9,K̨vx"ec8PF­{R"rܚ;sU`6E B)s֌#JξaL Ӽm$dr$.70аLF,S~)> ^TDzuU˶_!4O_栱,)9ܘ?',SI蟽x@L2o뺮[AE4#pO>9^TNk 1PXEr)6Wum{g!2M ;ߏ_>A?qeRZH" yn1^ ΗW%\ yig˝ꐙB~%"\[u_`Q䀴ſ׵.g HĈ,btغݻ{EA5\U"ܼvUxdl}$,šxލCD 8/NDY<""s}fbdIC#Qw]<qG`F%4 ՙQ_ 1]Ҫ~90CkB}C&7EFw8c/Ϯ@BDž~tu$[5gdSB%YT O;zT@ 6j D*\Me;%1Khݛk*\}9;S%W>cTX<0!NJ w3,~_a IDAT[o o´S=z5X4=ެmrY;q}W  '̙=/Y0^ I<wݚPkv̾o >l v;Eq{j{w\2=޷ąHN{bb9NνTCPFhPAZAGTcrp}^q|cK;zǧofb|Dk5\`O]jW`&\cM@_Q(#}ruc|$ϋA+ٽeḒIlQͯ/5@W 0#rX_ 2[#IImXd hg:?mEG2("sL"ʌTQw?ǠyN}=#oڇx-ҷ~kVG%Uww;7[߶%@EplC?(ھx5{l6|9b<ynmZjwaIע7ieP<_}T4!4sVh@IyyD?t:<9?`VT!u`Z"1H="}qvp|۫-}A[[^ym{|4W/_RCH6 _s=ֈúv=n8MD;ѳXF$" mQ 17&,XXzjeg{'n٪+'s#tכB\Y.&HqV=)"^eʤ%mDD$.wѫS>ۇ^{ ?Rh';7u3 hò[<qza0(vIYW#X>ŷ=]h M. 7oN$l*R  `3Q5` L- at{\^i0tM-*OIui4Z&?se:42̭ qmtvX|"bSzE nK)O"3?-kM }Z׋Q5RHeV4<*@@)I%^K!3x>?֦ϟgzшA e,p~)UB;Z4J @i҆ܐ߻}>OJZ4b[PYJ<:!"p{za!Iz D#Eۺ֪N(5<-5a /-myiؿN>!A`ګv"ڟ`9i)jOPC}=C5n奄8` 7≋S>14a=1>VCI3SXJ}jĦ9JPwG`r5%y~[xo܍$DyjKkKSe"{jvlȗ@Hd.&Z7nݍ0L~Ѻ5!LufNO |Tvut5icLNeZt{vsͪ|直 6V$pfH׈.4ܖMu;)"p^ʹHH"VZȌ|{D1U@퉸1Ș- \jPU 0$MT!V\{5K@w3t'bN0wcT2ȐFͲXՉLT=mx >'W2)SݥZؾ̭d٠ҘmH"/JXxnm:P:cYkW=k(I>Z`J̧v?䄭$R{#csjP0K$ Y~ǟ[^bMŽk0(HLOlvhbq_݁$qI"_=AkFkʪn4LDIV' ,"7τ^|9|~x85##Z|!(`T唾x#_4@Ya6Qi[&!ݦ4y!airw^OϟOkt@PydbV}sdbUomfq:upxq퍈Kk{pHmQ6`fMeR=*>XLLjF8~MdnEE{wjUhp.BI ')a4s'h(ud!?c@(CcԤ]Ԛ>c&wOyje ꉃ 'UDFң17w:";z~{94@V CTߘ14YTY7b & $܊{M}^5Q,R#sHZ-­)Ex uՏ v'-l"P5/6TRˆνʲ=Wqw_NCU/^cffHb$ 1!j#U05%2r,#z@BXiS2aRi2p +}=xO6#rlHsWxt]T2i&iEE 9+E6&D@Ď?oo^bw̭ry}3Tyٶ EDE!B&NIm(ev3=bt>FLd $24M%M yYX?LfzUM=o&m;mbTh}իIy]׾mBHX[;hkR,ċBh(D ,yٳc&EY"|Z{PdPV޻{RrPbE*2O=}|AdȐ|S!9$ HYkx%jVИ yP w-OLF4E͑@F?^LT4-dfYU2=C*$D(;M[8e̪9 mm_xgYpBYg A)DD҈N3CTUq(wZ"3 UL!pHtv8pL9.rC[ "oL<U`S2$xC.G~Y %tc<]mWdý"J% FtV!A涅dRJX"%>#IeRt!&|Z sD DQ7W,/؋k\ޓ}r 3%} HDpap[&U" oML'ne49S0D,ݪŭ"M0$awG ɱr'e  x"fV۶ZdD'ddнW gU>kf@c{Fh ܈b'd 2C_Nm3ȕ*S z(Lf=܉t_q8AnoúE"=v̻6Ke{&5%,*ZL<[_|CɧE"94M֓7w_Ä2,!sz X͘@m!Uj[z(ͯע禞nSkrw@Ĭ#ZZu4!s&ESX'I8"-iLOm?ʇ'K< mjq (:ÓAַ3ք &q/%!PUh!9%.d;b ZU[D^NN#)ȱ Iiv"w>֢ Mo)-#ՐJHk8'RT4Cx1-rD(5snykJϴI⹯ֻR`o*Dޅui0FlqšH7'f"S1"?Y ħyyWk0Y (Zi@kkFf X?rY+#Bi჌[M;Dq9$P PX@+n}̷B pU,^mk ;١B󼜽 rZ&cֻG|tp6뢭ȴ뺭fݺmn^mjZkE#63RF sЦf˲4mQm뺞ponCaۈ) 6c^I (h=Ǹy{"݌De9ny~i-SS !D,I &rS6M.@٤X yd= 4՚aMJC }m%eS{uգw[TF˜T%Qf{_NN攑EFfj4gb||h #<3BE^HqߖRMA{QwQZ.ez(N~7[AS](I!0QWTV{TIΓ6aa&6M"LPfi4-ҭ3kf Q&GHVL"5&O ^5X~Y e"RE"|:,Mʇr8,zݎNk+.Jj_0 <oS0*nǟOv!_XD2MmF,I{I`Umk}h*EFxQFŽlDzg}t&aCfoo7ɢWqϔo?VCc?`/4ݝEd 9=Sf /733QU,tt:mۖ'U+N&6PDL$"M{˝fD"E&fF%tBz bݼ996f"IhK} #J%4ۺ|:ߟ??NQJ%, K,|2<̢Saae|ȾpX̬oۤxUb VyXUSS "2xiy`@4CD JӀi(#"ܴxF%" wdOk?o}ܯʯO|ׯ |i5?] 9_'?7G򅣿wߚ~_Z`x`P|W&qFl vyDDe{"ͺW,}Wd4{vZңELXxD.^,֑ADeyxI/^0YU2[R,T#FVYQ{"j$si}g‹at>UyxMzoFD!2mfIÞR=-1ЀGX!R=o2L0E-ԽHa\1˕ :ovZymO6i, }W>Qߞ= Er1ԮZlڄ;J^܋_ b%k`޼Ħ_?~4:DEgzd7mik1S[yȤO==ۺjĬ;V+' p2q#` cHrlwj/JT%2=igkMDٻOMk̞2͓ΓRBD>fnvV3fJ*+֞XOٽPҳ":$n&v,LDZSx*.P1#E&޶NE")V 㧠}"!KH~#r!5:3 ٻ;;,a.b!yأ? 1S/]9x!`} ݑ@L=K#Dq:oFBi6TmjݖINP& %٩.5M23 G@fK7^G*4)`ZِMm$rw՗/7<{fޯ]7 N$Jԙ!xDhDѨ1R4-2"E!Gd =BI){O}jѝ=azESI;*i;lQbHC)K: 'KqԘKM¼[ߟV2^oXƬq[;LKg7Lp\wg*QnbnǏ^Զu;jXt[ @#P[ӧ4#( IBqཆNVώԦev?GnrJ(L ?6#x1mT5 W/ekgEP ??kܟr~ fބ榳fHŀQFD旺=0&'g_RKU ņ'eHgʂ6j]Zʚ8ІLj%<@/+t" f/=/h@غQL[87&p7kB*J:5;/rFzu+뉸"uh4ik^Iw Ud"UHg#Ϛ$U>|h7\lDD41/62wd>vBtԂ: IDATB*aHJZfQؑ;MP蓄}$!Z:ܦIKmM ؜mfNDj1 qNk{,P%c"a$zՄA\jn9ݿw9x$pkEJ Re91Q7=SJ o<[F,fZOYQ[hd KJ7B:̣ ""s32VkC!,FNFOg/Eĉk3fe ,sT ii޺a3e*{ԨBz;.fS师LLΰ4ni 8Dw}|V un{5DNћ^,48Y:Kj2~_9崴~0m{S%!⎠OFLAL6@CE,@'.u!e vXNTy}޽kRեa2jP0!VD IMI>TRǙZOIRv]]j` Zn9L`1S%H,I%~2H-#$8ѝp4Xo5]'6+#MжzJksg$Qn]cp' W9DD'%*vrVoeRs 0)vwnNDDu䜴k 3s^Z>6ŪeQk 0sJ6S)7C]s/"&ۜc GL(0u!F @Oj^%qiwaw+y".5r8HN}$P>ⓖR400IЀTXrS`wtxLWR=g"d@J*&DL)`G3n>Kf3MWWW/zڵ,pt baoǸV#\&X$D.,1s5|JsRrY2Sڲ,5ʢ:"!j>eÀRESܭ~\Sf9 q٥W9[IcbB꜓,ͮN% 2Tk)1CI9 )K޵u5 m63qou]awo#8)ݻ'%3r"=hYrP &dd@U$Z% n!\klkĉ;Q4)JLxּ{\*d" 0!~у 3G41StѸx (6h4Pv.c~M׋DpGo^zmXF}!`df-05CI ZcIhn<.PZ13T5!UT8`]-ΥH8Dj6#+ 8L 3'L4s%fg \ '6<祅LH϶n|p޲r7.{ --wۨԘWi' n2MUaS)n4tUEj_xh ($> %ːq"b!M[WdII 3kL@1YYu'Ij&L,.aښjww񰴺t,Xb0'b^{Qq z]{!YܝE 3Z9ᘄ耚̚8į^30MvʡD14}}~{1$@c̺w4di $[n)['&pw'bޏK}7q#mg 919Z!ݦx@~}KpxH^7-Ob<]%\L^k"p~[@VDID-wQL,6!zCrm}~g#aQ`.Կ!+,t" HRJδݻ[34U5b);R9yrڝw.ћ6)1h֔l޴ZٖY ILwS]v{RV }|`'Bbr? |wcυHoZ۲4ÌYܽPرq~> dy@OLVBq"]^%fz_Nmu uxMlRdDn=@CԎ݁Vk7bª-r\7w !P_E0m0^k7p-DEmS )`r?;ߺc<9'gj NHCj "Lܻ<;ߞqoZuPUKth݂Eq10m&c9,<\Zo''j"ֺ6oJbV7-Ir@0//.ݽv8$0s'߷DNƜ͆L4\{bE`cX ]; mQ++?>xow~,stltѦz?SG$!ngdΒIMsJ|<.KmPG> 1L;2 }ތw=z ~)jȧN1CbpxvSm}問#~v?6oΎa.%IJ"ESv7m9LS()=]U3PJ1t]L.sl$fh0ǽx܏/ԧx5uN,Ltllϓ[G7()!`_kX\TDrD``YFkEcȺL""8>tF,eӏ|Y}=;.X-S»çOpDXJT=`P(VNp}}kybZĵ8pk݉H7% nY=#,% աI&bjhJ?myϣo|]qJVr~t;nDJJ'6Y18̣3޴\$݃Wa̲:5 7zq-efPئq; ڛЊy۵~8 Zk{߽>o|eKUE,.vL+:/TUo̅8!kl a//K)p<\{p駟}YFdg&u魚"#ַh}Bk x}2Ժypq]%km%8 4\FOb ZUtdkD@bIКUnB9%am1wa&Rkm ew n|Gk?/:Gэɂm0b]@;%<3ĴSvZyJ2.SNi9k֚z]jқN䒘k7VL|5%9.)ZW̓T͜IZ,rN涙gU0sk̀ 3௒/F|>Mg_b 08]v*tqRΫll~R5 O̓Pu;,)\?O9Ar~);wD@ma˚E63jӵ85]NO|P]NNDK[“= ;w [}\%IN8@Z)iK.mƻ>p,F̜8 E wI``YRNS=?Uo~ɶ堪gFT%)sڴ%s?,y>,K7gެ7^y~zt]Çc׺<'0#jD1McQ m0NfB}FɈ ۼrPu1_bJ,DTR:DG|])Ww TYΙvX,&Uю!"hfހ(k )Q4RʶJ r#j[D,`sj ɇ.Hn{!_ݶhӁPR:|kHԩv };{rz[Zm9)i]"R?lf痗)At=K9zy]$)vs9m$m%4dVXpݱp'? nfja@$%@8ГAh#NZN)lP}m`߽>DBlmgDUXnβHRC͛ei2~ES_ð+hB;RJURr.i w-Z{m"ZFB<-cE/{ Aoڦig2TJ63kNvGksWuY5ZKk9v3GW<7nlKojH"8Egk/|ZOK hF q-ef% 1rSai& z.`U|Lz{toXy8E &DhM|X_ge]3 .]B=ESjY_ >}sQ9Eu= .i|9J҈W/?? EҰ+1 &8N {KI9ڛvla0Q0tt7}3Gau`(j9sLy~5k*k.'M0f10fvw^o{?.O˿[>wxK ?E|lLڭvq9<-Ҫ?wطnO<~}ss~v>GlĻλm߿V]Nr"#D[כwG @ ԊN8+" x5DJb@ +Z_9*@Mj wv4vZ\,B&2]#@nnun4! KӁ[g;uVpgA?_]}Ww~|ٟOy9^'y3s)Sg۳.fs+IHZ7Tmۧ&͘<scD?wV$ww9o6Ft?.fn~b< l>IB/$Q IDATci]HЦ,rVc+-a,4#"-9%QGUG?~^q+D{yxOSW#{p<`s˲y;ޔ$MѻZaKȒڲAR"noJuvߛ 6-ܭ)b;]nϚ~W}]ZȎU ndg3Mh--2YH݃));⸾`֎DC[.Ag; >M@XHC$ؘvrp;;//Mpg~2h֌~̃otޜhX̺2Kk4A̭ T7eY]rqIͩ\ss3_jM9MeUK zwj, ;TuA'/={[ iAoh PD6 5?]'vP@T)./b87E+Rm F//R1PwxNyXENٟ߈ _?ȢddT%&IלReq&hښ(vB폌 bx(b}C;>h_2~C>|!ԏ?zwsr0x-Q;:_wЊs؄:v֯xUf ֟~wz!f>0:C cmOQxr/tVe!,6}/_Jao?}s ]{~E_2{ޚH nJ쵶yXrkl[[m\=sXv z}M{,*?,j~R9@4 ő۹LB }4VyVBUYmXĈvxZ߰B\pxsɉwO9齷Vu<ɇ.x#w6JDàN-}ュ0K/@c}NwY_k}^ g0E/ۏ{//}>󿾼5jRË/Ժ{k"DfZ&qF䇥;4ا) X81=Tv#E#ҿۢO- YI]ICyo\уñ{m9&?7ocn{6 d*jyνU5t6I|///fܞahlM⮽߉>8Q7?>U gCK,,DS[Si rpkZ3{fvX 9_WvR3faٔ\oZy3TyvxpOܺ6&eъ(_wk{~1e5vcT-<~1mn[KqY,4,d%E*oww7lݼi7wbtkZ~ގͭ)%IbQ& m|JrnϷq$J;Ae7I2SOȻߟ,5߿pws5TK89+-5d=<`nf1"6P%7 J&F^$I' lHfL) :%Mi1nYhIZrv\J!N9qf,".M6u/殝çI@;$X3iJ)%|<G/8%3G1!D>h!ϗ*)eͧ~k|uܰ.lB0$`}3@fRNf ̽՞Koϥ$+P/UDX°zswǃ.55=1tHdimQu<2 f ņa՛ZjL̅33GV"4k{CЮ~=h[~~wГ7X-n~wC\?%ɔRbI$f DpYt5I bc[7 Q؟l3>8 NIZ{X tjI4A_~/\ﮧ3}'IK4efdfA3}ȝos (Kw*':M'Nb-vx,MT͌)̞[Hxཫxc_?aO, Olyȹ0[)8lQUMg|h]pG̊u? 7bin̸nY<=7~C,E&N 0]ZVUZL]k?vXRaj>V#QW;D%Aaa OTǝw˃D?+bJJ)//;kTݽor13s$Mr Ir|)\{MbyC}n7ow-󷾹R {geLB[:&͚v[Qk "Z맹cTi81[]ǒꦷ?xM7|ID)ЫJڔr~yqv_a+Qk Jl7@-DBx'$auo; >nw և mi,O=N$Fm_Y3v8tgÏ#dnדzgbF1ZtGXr1A Z)LM 7)f ;`ۂd.ݜ) #n:LL=;K!fs z sH4TXۊ5x+/&48H70g$J"˲D?$ >0^B V&"Bk&XV}15 ;X|4ڭ}fՉQ+:=3'$]aVƒ nN,bj*"nAD9pwb3甘< k>%? '_ ư 9*_+#=ܣ47"&xH %y*f{7,rɁ'zZ)9E̪&|\j\W> {=M_ʿg eă>zd&z ߍDSP?}9I@Hc22MuLfXBD@wg/oS"FEBp~oٖ㥤\Z>s}ꈹ}xns( (%ZiaA^:0/p*v笅~1=~]k?veY?ksΉs"22"+ǺTAab Z\h~Eė7>-ҍ>C#/%6v7E2̬^k9aωȬ{p8֞{9?bڮ@\8]O2<#TKly{x@O_l49$lCc1sia&7ѱ0 2i/U)MT-bg_)'3K?L~@ChR&Q WƐKQ#UhDSP"A=쇾 $f HO!Uyf7W]p#vn0D޾ x&0Ml3/ ']I䆤 0E _m@JᏩB>afMìB$vX'ŪDӉ)ua`#*HMFYW5OD63!UPDULUDkQ)68L`]DD[2[vǪfF[-s.u46wVU T3;$5LrӏjU rqNm'»3:ԑ9F|ws2t85Km=hH)"RyǪm X1a*R&}=ZVGD"L=5ol\䮾o]>ṧp;Cm[ED@PTxLirsoB&2Ylalk#K j3H.ÐĠm2bAb7 ~6]!ha~Ӈr)mH Ɏf8GĨj94`0@ڤRɆ8k>g)9zjЏx9~M;f  `(*$[v +&6mI45-Ȼ@L5혀ߴޓyO{!AmPkh7 BeB<-R%T++a1x&,Ø-D5xEP4 c9|.3`e7sabRͼÛW4d۶n-e3TN;_ƊDG]=PY b6q]N~A-r60(!ڶUٶn߀Ec)YwzqY<jف'rrDN `0b,4L, &19FL{WhRj?un;|8Qbe2QĶ,߼JT3͚@*ه=T#t\1L<@Į)jjHi(͖wFTT-) "r>`T&[Ooـ^zR1@bDFߒNQ W ]N'A>3_V#lC XT=蚦av9J9ÐEjV0Gx`9ƒyVT@C0ͭ,vW^5U6c;DC;bukެ,Gk$ Ri O>f\w`Sx7D7jk;IʓQ+-^DV~SR┖ETٔ6,0RJQSf~,"BlB J*ŕIɺJwsú8>BWoo޾%jWC%jS>NLPd0V/կk#$f"EJ|.J DV jĩEU,[SQip S==yIxŝ|эgvrۅznϼjwXoWw{n[>9{9Rؑʽ6&&"tm+^c,)09)9X6%xWrJCY;ºP6}&1y_r9u]35>*H8T1cBYC/S@3jC38W):Ϭ={Aի* ajRPQsvwrz&ATjZZ&/ʜA"@e6]en1 R}?2TV)E5wmڄ੆dٗb^ jv"^!~&*H1MʪfjB5[.$LFK\3ˆwDԼ51zGTbV:`UP ii@kvt۔Hm6M,HȔN$f? r^ѻH%"\0чjb:9܆h[)B]5B[njj;d:2UrG{NRik;m,hD4SqPJP!B4mlM̀[_k acICAsyߏCE@bvALD+Er`0#VV"vDyL9UZ1]s8İ9iD߫<۞bەc@;"w39=bpUU!ƦRvѶ1Rn ZWb*6j`E.u\^i}=R@9ȡOjUFyO+k8 l}q1ŮeuDttxH9o C߯발¬[7Ǿo Xupm\ʓ3$7ڙpK&e[BLp *, 9Wc};v!2;0,sN4 cfeז\49Ib%Y✋Ȍb"̘JV5 UDL8`1w ^~wi(]\cC8{( Mh!rRD㐔 X b]g}nfal{=:/7lPWPdL {24-9!UG$&%J} +V <vp;HKWۘDz0&fC.l"wiP2T8Dݐw߻%||i!$Tfɨy,2Ŷ bZl/6kpDgLJ{8?e}IP].(\Jmˠ~@"vAdRRlӊZY=9Img0cG(KR !XYƙ )7Fx>Jqu i3fOqIKۆU/Upޞ]<m6_gl xtp'@qc %C4rzfZl8wa||77^qyxrܶ]T] ktm_o; iۑaz9aFqQVi]`Qs" +by|xq8[\7y9>'w̛MG p4_DZͺ / Y<j}`l_?>Z)_̕S7_?Gⓟ;syN?ꝣGǧBTyfP \R% 0bީBʹ`eײ p TT0PèHQJ-H,RJ0kAŲEJNdsq^8 $X,$\LJ)ȵ̤\(B< 3a.b҃mwaD$*WdUj 5lE*%G&HV?`R98$*Z*bX/_m..NMoy;~+s|H9_?9z &Lz7K`zce>C|FbDv1m64yHߪ*" @0z#Bm6Vy!/杩4x}I.^C]zL jL(tzTЊ"d_2sF%dd&:},oo'o}+C>z5fa> w{7Cx=Zέ cz.20N@TZvE&Бm:omT |HSJ$ŶdsU'n%$l(9 k>[n8v>K{Y?̼[K*"mh*InwO_1|n'^m-iWo i^vo8Y88;{oϟ67=\.\Ӝ]}|uy5QXp]{?\. ?+i;/6tٗm\Mڬ._X,16vn-rv0ؓ|z/Ԭ7^X~x̍g߁+fAp·H:yQ%y3'4g+ZN` U@S@ bUaL}SJLܶ흣;yIycl6kf Lѥ 'lP-Jt0N׫Ag'}EQ o];mk=Ri,۰\tA1{ "5B* =8`T3rĒRNP!}΀|Hvh\RF`1<,g^%kC}Y%sd C2wr]ج6 r!)JڈdH3B( >?4﷞5ݣM߿gg}8>>9]]{FIe2FsɋLJ~9zu`_7 =y{W ib'W#XY! uE nޣw!;\/fΔ;BDחZdۓC0񄁠m%aOܻ{|ݣ7>ÓǗMy\شUnv9-y3$PJ{o{aƏE<;oi8ϒ<2MY q31eʹ(f5n 7{8ԛ}~ٻO/ f1b?w]ـf>arՏ[f"#hNT:OT_ m;b_01yDIc+ .+fؙ"d~A-ۤɩ|xx|guy]bh.r~|x[ߔԷ_]G.\xxsy1C_"#Z"K{k[& I7\+Dl6uιh-_T;a5 lW }]<}zuuM1c RC?,b8: D~s~=g>6;w$(Tle۽pg/=sXc dju 1o ֫pHb wӧ{6"*0kd ,Yȅ0})i|>W6jDֿxӳG?iL @CV䒵3Yhgl<\6f3^&GO}}_m כi@3ޢ/ "[%6ȄHClOjozr-w`%xߧr%<>; f2$bFHM׎CR yTu@~v <+;p`)eB=u䱌is3oJb-!l3AF|!QZdӢB5]΁]]^heo}>I]>Lv \:@ر:椄*j "1I l(]6c )WJv1cuݰq,n~)g%ɲxbpKIDAT~@޻ZM Y ",fbU1P1tH`R΋'yWɺ/&ydž|m'F?ɏ3ظ-" [#"\\\5Mj Z}IrW׋-GS7[`./ׄpt v֭פ4 };k"QC }/ߗO//oV4DSl6f _?y_m?+_G6*rDaVՇ_r?ӏlT{!^sossfۿ>ӧOO>OگGW~峟2|K_ i/?|W{K_~ ~~#8o׾q?T_˿}77OG9~[ouppQ]1{;|C-|ѣ??߻wsuG9@G6*?9C"xH{!BX,>OV"V7Q_'>U_Ȇ?ԧ>ٷ~^e/{^e/{^e/{^e/W\3IENDB`fdroidserver-1.0.9/tests/repo/org.videolan.vlc/en-US/phoneScreenshots/0000775000175000017500000000000013324115531025665 5ustar hanshans00000000000000fdroidserver-1.0.9/tests/repo/org.videolan.vlc/en-US/phoneScreenshots/screenshot12.png0000664000175000017500000004674213243530567030742 0ustar hanshans00000000000000PNG  IHDR6sBITO IDATxipu5^UY;jP$j.d^Ԓ([V[Rd-#FVLX֌p=!nKk--Mvs_@6AX5++qDMh$`/w"A|>u֧P($aEnO|◿$I֑<Jr;vEW@} G#غuz5Mz_=裥Rĉ_6o|}{xYȑ#~+I>~O&Ν7DXÕ T*t:i޽{{{{?AS@2\~(EQ}}}#qp~nA@ kSO=E NQBhӦM.\8r>|pnnnhhɓ^׺32M|>]׭d2z^ 6oll:裏bj"Cqp#G$ AoW'xsBHӴ`0aH*b_٬$IO>d454 60 qu|Ϟ=Gxz 3 rEaY$^UUu\ccc=s֤`'Irtttxx=yg>Zrn7M!#D"0I۳}gF(Vz>\6B0v&SU*fgg=ܱc4M#ٳpg:tIL~(CCCBX,"O?].CPR7iƘyoFe|>/¿˿X<|2MSE0B 0 5Me>SŲ,|u]up(5mrv`&0b ð]kީ*3~[7 ,3g8rD˙a$A0D&B 0]-0M0 &0a"n07|OC#GtWGTH-DICA2:_oӣ:AZ-E婩pt]`aT*n$!n^I $IXjKK ܱBAUH$#⚦]vC o!H|^zgz{{Ϝ98N^RT8`f<[ZZZZZ&''|Ml6 _zd2~U՞y晭[˲,[<{Fn{hh(~;΁j]@>|'L(J4}ꩧ֭[6 i`Irz3/#U,A*E:T=rqfao)a D~Gݵk׎;^k>smڴ)_tS8.l߾㸏;v ¶mJڴi)ڳgOX47Mrm۶!O} !nݺ@ ?cry߾}~OLE>SO=3~|&0"F7+TB155(JßHTE=ooJdgrٔBPxKPk6;/a´鮮.0HL$!05MsLӬ_}20Ap|p8 na?0P߯={ PUm4&&&u]\wv׃aT*599)"Ġ_~剉H$ryi# 0E!d"00CƮ q3Ms˖-E55r9;oj7mCT 5E3wjRJjZT br9@~a ђ Bo"JR( Bi H!4;;L&A݈ӧO@ /yW_ݼyĄ(x</^ON^yf7f^ݻ:,Rz./CCCgΜT* BgϞQ]}>,aeq__{ޗ^z 27`u\.711lnAYh~eggg(0J%|>xJWX,|>$`PpEeMhB'm(jmRAS طo5O mth1vldj$Ix`0h_VxeF㙙EQEQUaYeԼS$IQ!sR1 ^[$kVMu8MHTU M@llB8^i݃dekkeC>aeY(znaYS j>eYEQxGGiTjݺuLc jMӠqiZkkk>w`ͦiaagɰf#M %&EqjjJUUSBl8!ID(#fz0㙛kkk (zMLRmmm!Q9Jnc 2K-6b;kiiE$4-2I~? "@Z\.0Z0D"AdT"^e1jrYUU0ņxf$kK+\#XYbSEQ/AQV`R AQ4 Dpq&Be`^&&!-/C#M-ftK<}Ji|[X1lst+l)Wڇp8X\R%psٌe3r"n `49]ˤLlwBl᷎CbŒ4;,[ku)M{鵌l9sFEMӢ(B Ү0Xlzzz~_Z<4VJ&@$fUU htlllaaA}E1 8V5;jxu]?z֭[!;00h.FeOQLNNvvv&B`P{f٣Gnذ7ntMӳDGP a}>q!Pr_~ffFnxY/]qXX,xdȲ׫lVG:ɕNF1Jv^]'#`pyQk9:ppeXjUT!΢`U@Bf壥=`Koȍ @Ұ}MӖ9kV# øpB(T*$A`t`=:33cfTF`U]#O8}B PsU*H$an\?~ ZD{VZ2!9oMs$I Ns|ddD .~===],b719X VϏc gF[ŋP:VGJRVY]XXBHaQX\7h]ׁ l6 ޴[E'r'h N$x`@EJ'I(9[ x |QXF,B $ZVծB$Ip8C5 `i @–$p8 Ν;UyO$PXT*J?t.%~_eQ LR@s$ o---Ѕ=ɻ$Z$6hll O$p@aŋ^$I˕93 SH4:::rp!4fY6TUY!v-[7=K̈ `0vWa@]8UUU8E1!0L84{zzUrkEQRpFM$`aC} s=)%OB,D UVZiC׌1. pŶDK -5-ںiw+ _UCu p"V!:XM8UcFVfdiA'u15 yY!ooɆ۬! Y}mǰ\:ƚ]t$Bfgff fEFsrGysjL&322߱[KÎƜX ˲~ddd׮]333n >orrX,s=`sjTΟ?NN˲O޶m[yɢfF{{{ޭ[J>ri薭j^/ NAe *b0}Ǐ9R*NA4MRA%95`aADQjA]vq%MBP.ih4 /r m ;0 cv eHbaH1 bO9N};vxx(x$IryfH~,yo/߰e}β-n \͚]7_̈́;l6}K_Rkk+(%$ZEQ2(}}}eYHt\/}q <9;j7 tA3r"w à&;~=k1!Hdm OUDVӴ*xxH}X! 2$ ߯뺢(rzZ?>_^7P.X6 Ki,;00pرt:=<<766L&=`ooՈDUUxᇡ3rZr9͞?;)(*χZXX`y* |4MkD B_~nPxO~zƍ΍F@#I8ONN<ikoo8nrrWsr(׿ԔcC50<ϗj裏r 4d!ؓV,,΢i΂`CL&\DžBF?ςucHoj ]o h /j;5;^\P8x={54-,,6Be ЃJF$ȌB7t{Eu%R@oZ:(*˖aUUy4MAE5qp`aEQ`#EZl6zA?NfitkVAcxhnooWUv_pyT*jZ Q<2q]]]^!$I&f]4!a]ʫժ$ILazvcF p\r:Af-?\. fggyD"BAu(jVӴT*j@qbd^\b,5cYUrzVMӀu˲,0!*iEgFehIގRU5V.aAUBRUUq028[<taSfYv7Q9@]O?F.{k5hȲ2 G*!:X8iG4vp5nj1#l҈"(DP]1 #/wVAA!Ь\Ɍ0A7)\XᩅTzaH B "iDP&"L"TRm YDX SG1 *\`Xq%br!bS77F!$*}Tk,Sٳj Oʞ[!Mg^7 ڵ~t KgϨm A\ Y$cFxֺr#Zd,mXR3g/ֺSaLd¤nAj;{d:IٵkIb4c~UQ{?5w (&72?G6N³dYK+ a&AѓE$mn-I jA¿=K6ծJ>E)B*&84+ܛJ# +,y@r gb@L+52&0ƈrq4n4! ox-46 t,M\ V^08=ԃH _0Q*s$zVxJMrTE$sإR d {N c]Fi~B,"dPkstHAAx.\m^bdRBߟi8T*y<ITU5M3Lf2TUUUO#oݓL}$i(hEQ p5M50.0 êr755Eq :55ښI BsssvwwEhLS*:0|j].Bx<@ $I><7Wi%Y :B!8eXeYI`0D"K*A?& QM(X,z^] s\d9\z Àffggg__|5KTU8d`Š=@+jAzl670ƠlIcEa!jI0tEaNYZ5hU$/.`-VeR2*N:pCೣD`Dއ `X r-BNW! h4#I"HCԬ^,CHֳV Zn ,+L,l1VUsss2MҥKJqm ;$i=Itݛ6m15 2ЭRf3 NAYnwСCZ'ݻF" #®`+r,`g` hqsF ZvSgw`ߩp&GGك.]rh:: Kju||>2X 6}r\5::qIHdvv6ɄB!UUeYT*iJ%Ţij0 ЊFB {A۽aMK\nMT*sssFl4-b1ЩmkklXVEA0 aZ[[KRKK 8 y5 X,B%ǹL&#I"qt: |\IA' iC۷cGc2^+jUuT*,  Av vjrR DQMH3 |XeY4ӒiA OA f= f3TU-}aB@".]jVi(.K$ -5MspaR%;WW"n 5vn,Z!Un 4#a [M7oo\頃G*l䘂\6#'z 9a8nj74Ų]5k臨Č0ƧO.---^CbZڵ BՐ)+MaqKG$9۾}/:;q h%ujJqǎT*oٲ0;vTt:](6lؐH$N>i󍌌@￿Z{ァON!]׳l^LKooo&y~ƍD±Hb?dn`YJR x.^1ÕJettTl6;88(˲t,{at$\.1љiu,ڵ~EQM&@$G?  JK*C4MT*ХKEٰat$v;vYnyǎ+;֭[9 GN Khԙ2swڥ( i-Kjd?b%Ix힜4Rk힞r!`zR)UU[[[gff*J4MR࿷Zt: إRI4AX,r9Я3byv%02` C\Zva+1,u@:N$(J8w#^ƃ ix<c("0-uekHr5\{{%ުݹa$BReIDmL\կ*!8X,4nn`eBh9X8f`hFKخEt9gg_be )),K:0uU/di5SUٳq̙H$244i(3 sP(tywH$2???99)Iұc8MӇ6 H;La$!D;;;g,;t萢(ϟeY1 :::>r(xWj,kii B(>?4tw04M͚fӆ QVcY6 %IUU4GFF@qtttrr!)EұBltl6;99؍95%ID"@'Y\bd;laeB`mcўD"L&x ඃDz1X,P(o>HVXSSSX,ZE jiۯDp6tkvܜr`_ ~} 49. tEaY*AfaYȺ\.8TI + 01d2Pn>GpNi,u򵗐heYr(<G(r j|>zqQccc~d2iZ*Zn]&BZ!UU۳,q0[ )q Kz]f-M333[XRdh,OMM)q ---Z !xfffCy).bYe͵uQ^܎XF 9a,Q[ආ39X8f`Ш(?+:!b8Xw>WHӴ'N`y׻i]A (&rX :mذe(Zۉ IySߘ c㦧[[[O}W^eYeYh"k. 2h$8qaY;va$Th%˲,qϟcr܋/xaU,[,yO E@ïZR9u(A\īzQ8CA`L&S("uڣKؐ _z%N:k׮Zvɮ4'Nx׻uԩz>22222@aȻ?~e^wrrUQuMMM <;z_zv4{zz*J"(J{eP(Ȳ<33m۶p8,I֭[>,I[ZZBrZ}vYtKKKR$ 8ak5KDZBJ'|_.J?x0MӦi4 ۏ|#(|~aaA7p81d2x\љEQ`pzkz=$gBJRI{V7oT*@IyX,.IΝ;=޽{:YoٲnSl]_UQFoFWWi'OE|>5M}}}$Iolڴ &,&}>Hn۶m```ttŋT*J222R,3gDQܹsSUUVp{zxdG"\!EQDQܸqrLBa󡍩YEQ -1i&I%b``@UU (Bsc衎?BAZ ^xdYE@HKDV.X,NOO޽[UUA4M|@| 4o(òtgw;駟fEK_WDQD E t ZmnºEj) ]9!DlggEz~~`aÛT*SSS>!d 7.jR\.#b[{{(w\Wss핵j`z.ӁSR', J@0Sc6a?n*=ۻPqѣG@X;(j+ϻ\zD `eY@ޱa`PUUؓG"suwwl2L&Rbv r`$IvvvR)LH$rMF3$Zx]и1/±cdY FGGUU-Sd2###$^P.T*B066vرj JcIw- FGP(N *zbbbvv$D"93gttt'N9<\T>oϞ= LՈ.NTUkVf.e{v3$I4x}˖-,36d%-u}Z$XcL& tp3agf<}{җ5/,!*NEJi.K$QAQvj& EA(S u]zcccd u-,, L+r,+ VUaZ@3a ._ͥNC}(jH$R. ÈF\đXT:0z! i "0Pٔa p(J.yi ;N\.(JvכEQm5ԠN vj<JGq@`&(. u^4MUz( 0rVpMӠ4M~?$X.ƞ!@ :C9x@_tj3b.6e'a`njI(DE8"[4MMxFh 4_+hW.{ڝ-;7 EeR-5Wc%ʽ h> 6)8Uq>\/,/֙.FΎ 1ÂupU,TrEo8%w<+~8iY= J[nUUUӴSN޽cUU B"ku>,$A`yizь(fx|'L۷'Bz4M板UƸ^R)ӧO:u_J#,LD[?AŌ$*Oޔ_sss. С+_,$ϟ?A6?yۮo}[)J?x≝;w^Ռt#7N-}_t=[ Ξ=w_}oS6_V۵k__@'N۷oΝr;5@LP{o̞{反Ow#nY~ ֭[oVU۷9a{Aȝ;w>˺+l1FDMccfzJNdzAݶ5[}{ Asssyu%ڷ Tg!cקC'N;xQ˜vvv;v _˲БVԍ鑑'KD\~嗗oD7wݟDi|'O`-̈́i<q/} }o]Peƍ?Ϡ|ComUx0FFaO.<j^inBHUva0 OLL!Hc9h~5ov4Ma֭>(_x<gviG(j:jd8i"tJAw_2w]; … 7n8p;lun0MƚN>o~#-d2q\޿GΘeU( ¨%т ʩMƖ~O/hi $JȲ,BD½g(=~ A,t:{[h4dYpv9~?EQ4Mj$0i~49g|Vfi $I0ri6iV ߆|>y /a à(ʲ I"eYCg!\.ciԕaAZj:Ng?ĥH|>oF۵& uP(zqo P8{ $IzL*$E`0$I۔+l6a؝Ep. #Y6EQXQ%Lڳԧ$Jd}I_/qimӱ+J,vlTP(T,s7MqˠCvKor8 qcf3v(:JRx7rt:DCM&'ڵַIENDB`fdroidserver-1.0.9/tests/repo/org.videolan.vlc/en-US/phoneScreenshots/screenshot4.png0000664000175000017500000005175613243530567030664 0ustar hanshans00000000000000PNG  IHDR6w,>#sBITO IDATxyxU?Zztҝ}O EAAAqq;883Νeq:!kg:NIStNT`<< LP IbqaŁ`jPA3m <ma/a`aaAxk5f+wZSiω Ð ?6%k9s9hD}]v`|Xbxi& d8KYU%-.&@o7BP$``ubn} P$܇5G~[./~7@(ÿܘK;v:W5c~%qeg]yW3?d0PA k (c"0w &ƀ7XBxaF^ !@ĘBq"E`  1Fa =)I45y[=JhRE1&qBa60JB(K|CEQ@e(S^DcйY^I./- nU츐ڮ יL!^i_|Mp86lؠR04M @4ByBYHRχL_D,H4M#h&kmm v:oGQU.\P]]}~^{R뒋2 s}\.V~z ,_IW#mЅ'CGΞy XUu%NP!mVZ7,mt:oc₆ÂV)j^}w}<eO>}aefsqqW_}eXX-**"Ђ 6lؐzᶶ⚚Of3˲.k555^^zifuuudgΜqF]/_ꫯȥVkGG˲4M<7.7X~}oo~*++m6 {illd1sEa̩O͋ iIIɱt!=gćX *`f(P0AnZ,~W~' ZZZ?ł1޶m[^^ѣG +?BϜ9g۷o…}yٳg^lx>^ŕ+W&''_wuFQ?/ȑ#}ۋ/&N \V^m۶>qɓ1}}}555wzv VdRV]]q-`Ebc4m +igo_8QSWJ E/WDԩSJ>AAAOS!bDDDLLٳT{rի6l "94aO2MAAAn[R4lM֭̈(rWWWϾ= sзzDQ}&( .x6~c[ΟL7 L <||Gnv~|Cċ844w9rznxy׭[P(DQSRR8t(_OJ%M?ϟ|IJ?[ny' x޼yկzDHJJbF2cccK/ۿ JTTs͝;geea Cbb3˲OvU\{Ke׿n޼g}vw@yyɓN?͊SofȄeⴻĤgEQuuuDkcbr(` A;G삤ȶlR\Ճ vRT~ޚu5F5ï2D]F<[aDZh{PUUU+x<}#G444DDDs80Ds?|CLfV`dS1DzZYcS>'N^qJfҊI:=5='&Ecߍ!<_|,Y//^:y$BHקPFQTQQ鎎SNϛ78pKN~@P*z^є^XX89Bmts|[8::3`T ` fXIH*V~m#>mvAI崥+.2`5gzzVںu^_r… z{{)"jeh߾}sqyyysν[?䓫vWZLŵk94ؘ)ؘ)5c_D_;"9D5EQgOR#&ħDTk;^uCBHvtp4ߓe Qyy[ۧPa:#^ӧSSSZi-ZD!.B,O~zw)-~ OV)B@4( ҄EtYYYmmM77k֬Ç߿ʕ===I֦P(BBBDQ4p%Kݻ7---44>-AXjձcdžB ,ˮ\0?Ͽ'[i?Sl0'Q74\t1!C?}M=_+7 bNtU͘vCr:N9}5sk}CS0 S8("m6f̘v[ZZnlkkEh4"l68>>^T$$$#*++nӯ޳ o#B@F.Z֐͙c{7u=Me[_W19gV_g_}̈P\Pyfg#0UHH18.!!!11QR&"tXX ϗf" ==CkWnIuVUj6-'k/!n޲EWl>R[ソ`_;=Kqdh/ocC66ߋ}jw-?t( KXAٓow=gF`P\gu Ĭy...v25"XW#. >KSŮTkU2TWӆGQ݊$$Ă x8ln0L&NJQ HQ (Bm!N$lZ EItw~2$kWUtC||ې/Ƙihhj8Wߌ1B d\F>Ȣ Yd0(4-}Q i?dԆY|qeq!('N*JKJJF("d! h.,,T(EEE4| K^a'-- !m6kjjJ%a:XV[J%8//OP,P(HeKKK2U1EUWW/[,***66 JeKK~30)))^8.77駟&шJ`boP-M&!i49mڴ?55 AKKK׬YS\\\YY9cƌO?[n[pE]pa `JFөT*U*qR* ,<<8juvv -YrWnۺuxDQE1--ȑ#:(-0ڊ%;i$CCC)y>&&&((HP$p2.Ē#lK,!!d(@rM":sLPP=cb۵Z͛|If``@Yx,E`O$ \R!F !F2AI`T$})ȔAH18֑0zfv62.0>o~c6 Q@ t: v joooEEISWWN ɔA$n=vi#x_jUFFƌ3s-jjjIVXU"󭭭E9²ZGuttguu5eeeᨩirֺnY.cVOLx1jEQaP[[[UUw=55!Vܐ\VU4M={655877vtVVv+++ϝ;R^^.;>UvU\\|@ԉ?}cqF&1 @={ !B;xG֭[R⋡!a~4M,[YYYXX(wJp8 `(r:СC$~8-##릛n2#66̙3#!!> 0LSSS}}}{{ںufYvppt]]]~iyyy{{{dd$ p\}wϟcwޭV rӦMK,ywKHz@L999򜜜ӧOKB}}}0tAAڵkZw]XXHdNh4͛4i EEE˖-NOOHV %%%WjsM&qn '+o |w"B`{ cܬjLfՄ)zy>+++&&ygYV FxZv{<%5bFcWWWzzbtYYY 7lnnˉd.o a>ӊҩS, {EESN E;|Wrss1'%ygΜiӦOmٲpdggK*jٲe%Qil6ڵXoݺu4MgeeQum۶ ? T'Qn˗/ &$iZph4bt:20̀cc!¬Y!mkǓRz{{U*̙3j:ujvvZ&V"cZ'M4wܡ!SbŢg͚500 f;{,h JKKfS"gggO b&ɴ(++՞/t:Os fT^9s洷GGGǓ>III(ܹs9g+ ~8 .vRy oDGG7662 t:KKK̙SYY 111RI! cC" ø\.Ҙ,Deow+NX,(&'';ThiiVֆ1s:SLQ*vZ&)vhjdd^6m4-l6~ ☹s'QUI Õɲ՟>;O)EbAK 9wٯ 8, 2|EAMٵw`n4}V.?z`GY)TƵV, 2|EA(a\Q39a|&W&,}$ę]FI|QT}}%GL\c2Bӥܳg)6k.avGQ($ -UaHoe+ <`Y/$)IYڲe W_}Ih,2 sQJEkeLq_/ZM^PeٔJǷo߾e˖Zw7|f߿_R677+477o۶mƍ{* 1)ۻwC1 y{L"oh42*Pb6o޼qFBX~WO'O\fMkk㩯g t]VVo۶d26Pxx~G;::?NQULMM!44t+Vؾ}ꫯN2Dܹc\\\sgyp|Dzr@tKK D믿Rd(x@V%?uht\%%%V:zL7|s^^E<qo 044xbccz(999w(&I/8>~?A]ivӦM  4pItUª&7ң ߹s̙3Jӧ׮]zzb1ҷ.sjjj~~>B0uHQq!**j޼yK.%nX&+ %''l,Q/~1 `  #M裏"##Fckk_Oyqbb}㎆SN]"%jZϙ3СC5553g4 A׏bx @IPeXZ[[{{{-K||I Ewwj%k",y?8$$lYEj0=())9wSO=%q#I4)kLHR?DOy~ԅdSrtΝRY8r=iiiXrk4oNg&Z˙ oTK0 L9T)yԹ$BSHrL?le~톆;377,"F=quww;N2Z---D:;;;;;=ja%x}:44d4ijj"s|]]IQ\\l0Ο?_WW'媯'\766z<†cY6??d2?8;{Dld#_)ӟt3FGG+ 6i$V;w\bOIYYYJh4666tq09p .\ZJxz>oJ,>.rs"k#+ڋEIћXTizGNHH6(P4rh%^>n7u߸tOY>GEE8޾zo b,ҏv.jc0U>aqg(kdd=,E(>f 0zl1`ćMV|\6.iPl" A`feerf=UFW杺r~V 5{x{'@QTFFP(ߤ(yD@Xmj͙7sBJ!h@4`nL+(wf@1(䲉8h *,If)S,0J/‚jȏn(y$xDe8NÌrZ*T hLcǎUTT1$.]jUttז^wVdTTL+4_L ~C"ŝHbV}< X9ɹ#nd)pѐ!Rc,1Ov< /VJ9 F D6I2 bEp<3gXEbM& IS^gG!cѓCRQ}) j"BOOϦM1x Lx< bڴiuuud2)Vccc983&& $ORȞj2HRMӴ2L@fEĮ~p 73^BsrrDQp\ك}}}SNQT$(}}}Euuutٳg766VUUeffG vΚ5ekii),,tͥr)Զ| c&$$HF#q .\$ghh(q bƌPWWGח[__nXBBB9X,sέg+x;YzjU(SJ%G!d2Yuf-,,DDEEICjﭻY@*LJ>#@Z.POOq!!!ǙPNӣjjuOOf3vl6O4)44… YYY#It@$sN0d322(t(t:9BKA0.}ֿD2HGG5R)B҉tGRIWJ#}l|2|gb>Ȣ Yd g]Y>Y>Y!2|EA(a"Q/,'o{ q9޸m,z<)z;F+IX%?Poo: p}K;=p '^u&UjRII] B$ TT&C+U=u$yR.釜f  ˲w&QlܸDJ i޷oy6Ι3w8gΜ1͹.cԉ]`AddÇ1IIIVn:uR;-ˡCX뮻<G}]wvϲ5kFcGGB(**h̙Ǐonn^xqtt4Idɒ;$9|hhˇ˲ڵk ˲eeeAAAQQQHBػwooo… fnb*'8-33nkk[lY~~>e6KJJOcm߾r=3zMMM{#Gf̘nݺ?<`hmmhѢӧO۷oŊ{oEEŮ]zŋ744FGG>|j<̞={iȑ#|믿`Rv'$Q0[n}-[v!Z]UUU]]O~裏v޽gZ}ȑu}GD҉?O>䓫)@K{$+ N䴷yFcXZZZJ%! Wh<)LQTOOOxx8qE*AV/hHbHd! FC\>b9.{>bRbZW#`.ba:4V('v^YYIb/ ǩSH7_ٵkƍ'HN%=s̵, $JgEQLNN^lYeeҥK333I6^2˲,٦i3NzOcHD0VCG]tiJJʟ'L:|BO?4!AOۄt+PDQԖ-[hEeYeLeYBV5(766_~Ϟ=`6uttݻ駟BBB͛700f6fs__ߏ~Jѱzj èT*FrJRan{ FƫpVӟ+'`]+@c:tLd(hric9Rn+Pss3BHVIl/9 ëv5䨴A ?wԍ.D&d W+ٳg?[Vd!;1z>))bL---!UA7LfiRSS5MEEBhʔ)BZxn755|}}}`0$$$x< .TTTdee544\Y8y~<|vvZdYcy\G"cvtt`Bz}MMMyyp\v<((b?>22R_p!55UpEEzbg\p`0TTTt:A0LIHH zl+|s\[h% "%Y%E/] lA>Ȣ 赋Q\rڅ\rTie\;F>Ȣ Yd Ư/0e'&$1>@.3XX=vyV~H(=ώ;H= eW~KEQ(O޳g ôڵiRT* Js>cRu=2.crrr<|^/˲4 vۛor>l߾0vRWWg׮]gϞk}TWm+!͘1CPx^i޴i:ujbbbgg{wwp2 $kxm&%%+JZ/+ hp8Xmii!^>HJBs==k&%~@ٳgO{{;!bbܹsǭ\RV744dffnݺUPdggϜ9!!!K,9y-{Xbǎ:nҤIgϖ {|ˎiR J -F(/( %L'a[3@cJ~RQ~gRRRdUQ@;B^¢'w!##C|#&NR2c9uTB:lBpd%ƒ!g9*KrX+))))EEE !v.\xYϢ-R^1==!tiNVM&SSSIFx@QTCCCTT!PUQQA%$$rV -he7D@QEQuuuiiipW ƴtREf"5322I ˆ~jXG 6Laaanh]pAVZMtFF, B\rh4ZVRI$3BaVzJ[2229y$ nooSa===aaa$)91STsP(3gx>n0&&& bʼdZ~r4a#[G#~\SC 4JJ"DMXh&5%D;9t@ A@ A@ AӘ(!A0,x;eYDuH?w@T  -%.*>p\2V@ L]MGw͛bq4i0CL&>&B 3Gb#~8 6<2șEuy3ߓq+V `pttTѐnAs"NѣG}>LWW ۶mkll$90O30yԝ6u9#@ *9ĀV-6+WL_~YV`6Buuuo^SFs (׻vj}ꩧΟ?_PP6vn?׺PdIJ7G1+˲bIIIR%Iںukoo/\`$''mٲ%!V;==m4322{_L22ҧ1y[4e rRfr#HTjq!fUV9NNM&SRR'|ۇK DA홙---,ˮ_pD,_p+|+[\O! -j)f tww@½<6Z,QwfI)&Y?!8smc?1qذ,H"[t:C A Uƀj [OO Pb@@ A@ A@ A@ OYqXpqH $b,P MeWꡡ!RĉD$UVV&%%af#GE ):[㸘HC!\em6ۅ RRRFFF&&&HcQu:]jjdQQQSSӲ;:h:󟏥WkqgϞȮ/$vaZJ.4"z(FcXFc @Ѹb  gG<\|0^d|{ᇟow_1_dubDgg2;;ܐק_QQaÆg```ӦMo<ܹRR<<痢+J1 bxwG20mǥM$3s;ac ㌌aꫯЮ]Nv,Z322E!UӅӃrJ@!AݐlOaRE|m~Ue֭[o* |<|={R`0n޼MH5LA$gz H$l\ 81D @`׮]s:z-e$*b<KGVu᧟~Gcq`lvd,[rdsċܹ/nѨJeGŋj^B>hkkk{{疱H&H I! 8R 냲nt{ weY\ti|||llLɳ,z@DS%@ `d@ ;8H׆:%%E8pcL.b!˲ <޻w*"АnohhZd8݅F' 4:`:A܁XO$-d2 r;wl۶M?~|1/&% ZzΝJȥؘ""1R]fA4 ASwXR8F#Ihs\=͓%*81?sdPƌJi vѐA` aGZ\p-go0:iNzYMMMZ^};x߽{_|joݺx KAaBr\\gs@cO q܅(&''Gcݚ [U4^?q2CA4QJčxޤFt(s$-E ݼySm( BP( B,OT[o;vСCjgΜ),,D]z|ttT-K6nQ Ǝ=*8_xeٚR$++<С_]u֩eOEEENNT~^ljbX<SΞ=1mmmUUU#NS-{Ξ={ɨk׮(cr{r?CP5bZ2rl6bҜQL/bEE;S^^cf͚>/;;[y{ If7n}T\p80?ƍ2棏>ھ}pYET+lذ>~ml^{mǎ 477>}ZEK1QX޽p8T4BP( BP(XB!?yIENDB`fdroidserver-1.0.9/tests/repo/org.videolan.vlc/en-US/phoneScreenshots/screenshot9.png0000664000175000017500000011121613243530567030655 0ustar hanshans00000000000000PNG  IHDR6sBITO IDATxw}{rU8=ӓ#AN$$Rťey%N-]}Gڧ۳|'}+'ٲ%ˢdJI < 09tN޻?j"AhI^E&MTR8>fBȲ{[cǎ[u:/^822/u`˖-7xsgzz~cӝwY*;gΜ64ZZZ#Gj}C>lԧ)/~xxnappNW|g?F޽{-O}*U*[XX[x 0އz(N={FX~ZZZ=MRd24V"0c^otgg͛|.^;;w\WW`0 ɟ lذ _0<_,:.˲iӦ#Gs=zK/tm>|xppP$L(~u׮lX}z~^BuzM|ȑ6UUZ>8 9,//<faSEQ$8|Їb)ښfoBH8T*eiJ%X+FI$[BϜi?1òmYo#GWr RZ֦&]pԩBV(X~Z*ápZ]\\ .!Z/9mێ3-\T1Ѿ~bT8 ıս/{bPJ(BBc  L ZS@@ c@cˢIA,Q)FMy슚3ֶ>,jEM5}] طޥ @?vO>\#1kJzezH{qA4s徿y՟]WgP7{%k7wpu\q* `^q _\.P6ѷ&@XU^!}yN_ h5#UAU?uAHm׾x /ew_]07&, @hޏw7Qp(l gI曻Arr՟P(8OC莇ɮ_+#zxLjxeaak]~M2!;  h Py|؋B݁ P_M!  ~꧛>@ T=[kF0h/7Ko7z;(uh$Z| 1̛vj @5pkWq!pUρ_N +8靀e8s~. RE ^%}l4K(w޽(w \e܏??AV&~*7@|Q`9my팽 6Z#hY`EOYoq`I)xQpW\@da.0kP)/Î@_"~x&/1^so]ۘﬠWh4ԂsgoIMI 4P{{-f ac'F`x  `bh,{ `b0s >򿁣)@)858oYml 4 fI`BOӮO~QSrDw:>OdCtC_F'2Ď [Ђ( u#GWqoOuA K0 Fɥ65VohG5P }lyU pdxl-6 1\LjN .zR>5evĂ[g*~}hι\b&ܷީI7vJV9z+0F }6Y+cH&Bٵ!M3Tk@S\V'_ àj6M5, :E9̐KE1LE( Bax<lB`0!jUQaRUUalAzeY4"8PSJ1^BOuB U@9sݻw p$1?<7> {ZӉ`$lWŲ&n$XZD0Inh /ny;s'%=FDm4H+>bݕkm9R2R'F}fYX,.---..M0ַh47 (Bȷ͛7?EBӧ !drr2LRu=z k7޵S\0DBņ QJ!JbM=2jhjlJ|.4] b0+.%,8w &K4H*h.);k/1)bYV333{D"jczRrZU*dYmmmyVUUϧiJ4MRBC|>?>>tZ677e ~ll̲+'xu1,Fӓ++7 HᶶDiI_\BNBy82p&m%q( KIj&$ KZGB93 cT{'wwwݻ7{S9r]7JYOvmlܸ1%m8˲޾wx<~ 7eu[ZZD[[[^ooopK/411111MqXd/^Ske)6zHJ< &NP,T}J*`[cٙ RzgMh)ŀYz)OV$ \3oǏRtT*u?b@ EQlhtÆ hX.(F"o/jVVѕ, Ȳ4ɓH䮻ڵkxkkڼM.RePXB^8^9"V-i}_ ȾʼnIpA! sCGb(`r{(ϡЇu\ Z 0Eb/':!@s'.|"3`BC\apqgOӞ°VJ*}|(!fsss>!T꥗^3,˞;NruEwJ \X)f8_. yЋx@2iU]g0CY:Qv꧰s&.ԩ\"I0G\ʲ1Ce9q]Iwg(,˲,UDEQik˲u۶-b*t߾}KKKPV P(T(eYT*!<\>P_%SIS@,zcgo$ʲނgNz=AMCc]SEFNSz\<+r`Cb={2x_[_e5YSb*Jړhoٓ+&;V0oitt4cyW7ZL(!>P'k<xCluw?׮Ex~EN}}1N%{wٺP4rMr)y8W sX0n,7r"pD[׍KR\XG.SZrDee o*,ev%[G5cb*rfm5ld P5"[-E>y^zZY*ͻwt5ⲽ ] &|}l[$@"ǂʤ|Z.%8N|0g6EoDU^ͅ}ÀH3 1LE'T VuYuơc3loz#Hl@,Ęi[mJHIUٛe7ȧUlmBtt>]{hF*^7A c{}=CP.raLSl0o2֣Op_WtmwȢi2=} ɰoB,/NlڻJ\5*w-ºY$Y%/Tm!txPJL8I9Tڣ̦.QH8 }>% [N^8q`BwebRwem2?z87."|kė](=>>^X0 q[#e Bc+``^hFc*ʕA| 됯WR(LbFmM(K!G).XyW~}Ǐ~"ˋ_+,C  1( B(j#&=2}]C=ccc@@Uh4/o۶0͛7[533s?~<ڵRTgyfӦMCCClԩS^@$eyrr2ڵW_ۮ0LOOϕFp)B1>c<p\Yd2̙QI?|/_'?\`ѕ \Vb`;::rm%QIq1 h-,, OOOo޼9رciiIU;7nΟ?7;v[n)J###m߿ԩSL&].oqܓO>y=HtСj֦z3O?~|ݧªbt&c|X%&p2S%0)?6$7WmJ,4Yp疊֗3 bñ3SjVIb!$ !/ݻwtt4 J9R!fggٳgy=r!KYYY^YYQUճ,+˲gna/n߾dMϚsNl&0툈@r"s5P/Cgſ{8,bTQ\t㶀XDa )$K%9roiiiT* yfuUUG>"8Zm֭b E1JybnOOaDs5ѥ%߿}vq$ MO>{۷_闱*F sPHxJ8"f'"#JT{T8]m =3‡eHB$b,$Y8UVȵDFH)m;{8H@*jC#R1Hx6nJi0 Bp8X襳 6lظqr2D6mf1PA{JR-'WTj~F8l)oZ72L(/2V_\(UJ~-* lD+k-վζ=lqpG vm{۶mm76eC)|g[[@8JCP@ԖLQ璢ktQW+ -mL~E+eBM,TeCK.઺c9ժj,t(o#z x\"j(6SVU38̉lkPp@̩<<1/)L{JRk X+W&,-6A]xI}M N<ψQLDK B0 eXa󆵡#+ka#CL?z̑6F՜j5$Y)Eu-~cJ^6"(PdRЪa^\^j. )(U #n؊qNLeX % 㪆9_5 "TV;ureN2X40ƖJcC15eׁCr.7rU^ʪQ͂5L4lU5* +IboAM 3)n;Jqݕz8drԊer걀/N0uq$Y{1^v"/kw]={(=j 0 1B=V۶=㒷 2_gjUx |Ri>IȬ I`J2Xj٬#$a1vPͩQ|rY0+Y qܑ#GEimmmh`R1MѰ8-,,h4|>eYޙ/o]!Ŷ[&buݥ| J-++jeZB 8l0Ñ?AB>KRTq, M|-c>ͳ/(6%D)Ue``[E[ 0r\*e[;v~E{~Lpt394f '$:(p^xe*"pu+=6=|Xm:;;?OyDcn."wMYyYWYek)!ĶN}MAZMW#gGW긔aWj!zIF#J%!b`iu'Pǡ#A(E?]BlS[x6WN3Dv>9Dҹ>ŧ_@ !F)rq ;Sԋ/-)ð6%k;50BI?w, _lϠsaGM9ʹ+wtv}^>6V {WNўm1 *}Ρ`WPk,ؐ'JE!95?']@F$4+|\}qPzq a ױd&J=mE/3./g[b]KMLLld҅|jڠ \jgFsڡ Gs練e!?`2\\O'6G6L窎jY[Rn61k6-T #z1B?x5eJW3DDn#\'{5PK*ytR}zp ᜳs3&ym[ӷv$LDeՠ P\RGJClVTuį'wmUfBq,|pfl}8132_gW`uq~+pW-X.qu5˲6oeu]Wz)]EQܳg_!d&!$>880i>h0L$wKy!Y<Z#gHEaFf&ϥ.`@^SzN;q٩_y!b>u/=?0#;B9hUB u0X!KV*VXAfk׮ӧO+[nMRm۶e'N޽uݹ9O=zM7y$LfttddDQjiŽ6mm;m۶m~~~iiVy ͮЍ=-87k]Sӎ _:Z~ a2 @fZ,%-S1Wx3 󼪪H^{x8Ϋ?L)I&{U'hmm |>(+++JRB|-T*rUnkkb$=sy^Q3g,//{F'躾zLB:\ټIbJ(n*eN-eYd|l[sxRL5풥@\b0 PhDɫؚ19_rɚ44 BHK m6==ND___"h*i O>}#<NODc!MyƘϐ[6=vJUv&{̓J{kX+ӅZ/F]1fQd.e\!{P(H$#醡KOfY$Ih8Q={뺭,۴\ 8H-3".tc _06ULH7M~apܱP/ǟ?>}mPqZT0P!]ڶkfru&S S"J<2XrmZI<74ߔu #T@ӡO.۪O޲.}&>x?V܌р1Exu*RvmH=8/P B#8DY Q8EU \5C~},JOݪr ҭ}97W',;{D+6oضy}6[t,O=žLgYjzEf)0C0a?wVVV΋16D-d>w],O/,bvwɅ[+Dnu0xŨ- }/:>vZѤ@C]kq F"tp_!ОںV4RP(@H{(F"aeY,B!d2|KKK"<@"*=PuvE4`g/?o߁XԪKMO=~&sYݒ0 86JXL۶Ͱ=l .Xe1ȱCүT51wtgLƫ(˲,˦ir479,RӓM,˪Q(z=l۶myyZ^VX@^[&"ĹQ;;|~0WY0]cGN|?HwlN:"Fg*<6|bjcoR9,T;| @(rdTZXٖoߚiPgA|Pa`0ؔkZh4Z B2 BiiLՎ(˩T2 .5:/ћ:J!޷bՍZoxܩm;}eVd\R%ðah[,08>Y[{W^PO70ׯ\LJ/@)M& -?-(^3$+ë~ۿ Š//R۱-BePfA ш Z26Yl!ԩo~-3o+d1K'bM1zxw} 5=Os&ou]K_=I|(ǎkf y`x/,,\ϋY߬¬C%MRXRm$ ((:.kZ{{Pfo 60ͨLV$/NWw MB$H"vwI>yOp-V?̫g66s<ͿQ\Kc9qMSW\v^}F7I o9l1; rjY>SG'RZgYݛݛ>H(Mugsu-᳣rZUŒZ5Us(XeeeYkuVMOۖ*,G"!yΝ4yUA=;gY,ˋ7*z^'aA.^A=m0|Y@)ҼbB%:EgjX1nziyaH 7ecێnZC]ڮ QU4lv-J辻ܷZ][\,H'OFǏ{.^80NbYV9񫯾jY###a;v̋-_ZZ*~sT*N* N8nvv XOT*`lٲn@jbIxzǿ?_ʟ~˨ji&[*մ}ܴ`p*N|[O;vm0=e[2%av)"ڶCe;mMr< n8@,q?|Q7!iρdqqqyy9xCBH{{/o9 wuWWW,=== /a>orrnh |xξuW35EY^ѯ795=;^ ˬßn{6-Q+gj+kڦnFnJu۱ %Ķ7mZUj "~Q0D"~a]קo^ew|86Mh4+x9b1q( bYBp,bMiq]\.H@vyW) ]8;^wr+7u~QmZ42ya(߿8^}o7)>h߰y4^۸sJi0 $Mwк/PX@(P]bif.7:13[$YS>Z|3D|qqbk6 LݡԶSS@@i8Yޱ-rlv粢|kc[tv.[yY:u%On*=\V3DyԽOqhAK=z諯s-{Y^p?:<1rcxҖnD }~|s?"iI8&J!l۹5y?аJD(FѤq;afCEi'?#tr.W=H%0f2V۩WKQLoemĵ˲M-Ǵc^>5 C  u,~ڋG~x[ȋһYR];wc|..K"MaZ1"Աmmp?8!Jm%+ F~}=ZfϞpӞ-rMMTV9B6W)U$E.Uo{c5>Y޴__>d9EpvY*.+!wxB˲^ 0z6E4c\g~ξh(gg1 RcjF07+c3sk5or]JE>}^f)E|MswO}y><>-ib^qB:8N^D"inK%I B'Nhmmy~zzzÆ KKK zgj3 EVņzsmr6qc,fbeR [$ 5UGK&PvhUǭLؔm#4q;]XJZ ^vxC (hg!dҶy/xʞ)7n؜g]CBd2d/|UY'=|G\uנLӴZ E1"<>CE!"Q9`h2n$%!d,^6L T[NNN*aT2nлMxr%kVKR|~ee4{7YefXL&LNN^[RISO}󟿙?gʕfOcù.ű$-!D653o֩漑xdo zۤd^`ee&=5 fiq IDATTkݢq.Ϝ9S(nl? [Bc W&8- fˇ>SDJe_{H_^Rt5muvQ Q%$!$D.AH$H!$%Dc&[%7p˂F=I PD)"& #sd" …tWgLkXÛzxV/i[jF;1 QF($č킵~jIJN"@JA)D@DFniOszj##?[2̐Acll|!錂2^ŘKpEq¸fBE[n붯ōdɹ !J&T2Fu]3]V}CV$ +_F$LVwװ_*s1JM5+iI@Sgz.mU -}c?UUEתO{)%du1==קZ.W/C?,/1}gbyfܿ$HT-?:?Wδlq{k*u>Fv keZto/\.qn1< Z;wn֭jSufJiTRly"<:ujdddyyy``@@"o.;V-//oڴݽ!uT*etB Ձ(߯9\93o~Q Ie0DϭRM6sb%yDT#tk(;S RɤSJǷmF)*mmm/^BJ%կ~윛S2͈877.sΥJRTժ911h4Ԑ PocccOrcccKV'pllڡ J)`[6p$afReK-o.O. `MO۳{zw.gmUDh"3 ݢ@IbE]V``()-sZe>f.qN8y3uw]Nִ%d$S Urm6ĠQZ3 !x)%|tt_'?t:[,MTaRo|۶mSϊ4ۗJOt޽]]]7o޽{7\04!4MQ]ٳǶL_[;;ѧz @._jx Or[)9Y~k Z\_//k}p/^]6-X\iZM8ԩ"UJ IfJ ntZ/zkb'Ndx7_,-T"l1iYn^ӻGz+Wg,JnmKg\ܷg@{iLVfŨQ`zݲ;b1JI=_[Z@*pcԝSb6}jQfcιQÆ:X(jd^BmNLL v7&X,*s-D)ɉgЫeruHl93ɴ8-z75!1օ.|C ?|Oƶo27 Փt VD: Q- gRHB֞M(CkZմZw5z_5E&' 7nZ.v{x=Q tmyH !%15&y"Bٜ4u QS۾>G4Ν]q ݱ H R@aJ:7毟o,2R8fѵy'F~mU-iW+tڭׄm(Htx賁}wPd.MM VT +DABuՖeB4R\@OP$vR-Զ'1ӕmI$bZwuX~\!9Iq{gNJ():ȃ>`@ƉB RJ*b]j 4 s hDh|?låJT,J߹BP/b1ݦSk_@ ){Xs8s |8RJDI6Rr%05RHџlK~х&)9jSg,JR'}YnDO[b$H{(]n8BR:B<3MSI [uu] u) B4ʃ(qJ" ӰJz[|l5FQH$m hkkj7 円.^}J~Xlaaa˖-JEMwqjv972H۴y+*+Ӷ\2Qmܻ}qaJ'Cci<akDYq- 竍%ptʫSFHB~iLFN41Xb13&_aryhhhyyyppT*U*d2#$I]UB0007i hm}m^Éj-wCb D)Y k-DSg ""P@"H"Lʌ!@$HJ$ J|TYѤQ7Qb1 *`6iPɓ~MMZBR]MӡV*f>8ѬwgRʓ'OڵFX#hR2p\'\CP#ЈԈ0P : @044"5: H#ycGQZGuUO剉 JŋϜ9=~8cL T˗WWWC|'4׎^p18!D4REё#GԷ"hlպ4Z=%{f4P(BPRH$H)!PM`Wg7$EXT`D  k' (#Gdك̔Zun_S1X t TY  a5I$YEЦfH"@xkV% [DRT*zj5˲ӧz!5>ax_~;;;Kԣ>|泟,!T+R={H)Tkӧd.{fggU*{ff&o߾] @;e˖t:=99ZoرWWWϞ=;22R׳fz~]qml0(XlK[#KC[#FlJlF-: Y23bkh15bSh3(X b: M][feY絷 |>ե"W\i:6mfm?~;N8q'Tچa۶m>|\Vkvwb޽J$MNNVU%Pѡi4 U$jbfNNNEziiI P`uC}k/|+ ABEB A\s+"R02<4kZ GP8jRŹD PGQrlYV{nt}q:::lۮVej5۶ R0 ;:::x^o殧lVT,w|5"P(ضDX,@gggZUك @r|رfYMӔ]ZR:uzq͌~tBnAt$HH %oM#g.L}ٿoX:CA9H"%Pr<0 y (5MgL szNY&^4ͧAjfP VU'ͮ[mA:)[ }?J{0(*ͪY70D"H@'j@JطmBwg~{ Q z๵( "k}J'\CJ_L.u{b|ۺ*Lo}xm׾W65opuFd3Tڠ @(Ey}E`sNh-j$ud"5h A"$HeO noQķ$Xs]uހF!_LR7'˵b>k+ZyaB/x Y_jBk]UY 焃F$$D|Cb? 1y^J 吥) Ju2ep.!oI;_4fFP ȗ#(ʸ:XY4f0b/a:aѾ=N0!QJAB$0G?#@BkDzG塮t(0am⍊(SbB(D$)k ?6ZOuB7^Q@% =d@   иGKCG5.}&< ;Q Z= !D'͛U]E)bqrrv&)]UGqUS˗/Z[%fg䤚 溏e $g_SD` H5E lC(C)(86FQH k[@" HAF}Ƈ0 @ӴǏ' 0 ÈeAŔ8;ط5TK|>MMM Y5;;dT}cBQ)UFYXXVRK?O>V*wq!%}Syd| ER UѣJQDQ RƘy*;aSQ-ڏMq7w$؛6*PmD\)Bϻ W9XL] 6;Nsk·㑼{P\T{F֬"-vu^lK|>HsKCY5$.3P_w L>O_Mnq9W=_Ղؐf:RR24]BM5ZsD̎l(R\(DB 5 P R 8( A9Lgmvq`O-ښ u@P2M } Q2nRf\JÐ $ :X1bTT)X@W7J_ no1s-bىLF燁2?۶4Ws"b}N)@e@TF%BF?(a 9JN4Trfa.!ҪLOߠ @8cۙyc<{^nv;;z\877w+s~D, DJ!K@&PS39o===r9JI)~uuRdޓ'Owtt b>WɠuVV5!D7<$?̙3wu׵rBkaĶtkpo֭T<+@ FGG{{bv<~ˠ < %(lP_}y"Rof5MwN;V*}yؗ3g ?AOOŋWVVj|9SVKJ}Mxgyf#򏇔RJR]dLJ!vgFPt%B_P ٞLjn\Ӑr "!J"@D TYY\,:w0Z+2ɄCU5bDqպK4jy]]]Lf`` |?}ĉ sss/^ܹsg\G^BsܹY`Zcz~; (Q % & 9t]"" r ٥e .HF% *u),U`ƌkӾqG0 o*#iZ, @.>|јPմJwo˗ȴえ׭[ $HG(8qx_58|c  24va\ .N"( J%JXʯ0]H$-^r߾}_(r]ײAR.G?XW^yE+'N$]v꫱Xl˾!T*tgrmR+:ո09_\>pygԅ3SHIvBg4T*rSWVNj=%Rnh1)`Ts" O!K(ڱcǎ;s~wK)l"l=]5۷oW?)]vq[fY6С ?j&k53W|4 $$ \05~SuRq;Q#꾈"/[(܆ QRu3&:ӀSdF?~=oFwu世ݺC!0sÆnԲwǎM!yx`Z{*E)S2T:H1 duu8u~RZaX# Z,0u( {2.Erҿ21A)LH.=t~H%&c0~0y-c EW[V\Ylдl^7Y^ӊ+5I(e'㱑AN( ݆[o8Z5i/w1ǭ1vƢH Jԟ'fԥvk[$* IJjvv4nuUZMaw7ˌd2955|^5Rvwwb1qbOO; ә Dv=²c: (rn%mK!ŇERPCD EBr.Ek<]z̈EJRJ]+lb*8N& P.14rd:::TJbY===mmmJ"뫫۷o_XXk]-9HV5u3Je4m{ g\3@ }74b1 QOR(1@Fʥr2'ȄD"ݯ pa4X˯bQJX,nٲ\.k633ٙH$Tc@!PEax=;;;88h4cj:vÇWVVLloorJ>#XY^a~OWW&i3L vgJ$Qܐܶcadtg{8RkxeNjŊiiLNMnFRd62kJHRB H$eeYBH&u=N[67˲J*WMB5M{G\f-ZZZZ]]d2m_|o}lT){+sq;繮1qmvuJ.kQ0%HB3P,Ug@fib}}Ƕ-McARYEu]S$_Sft#5vмMyƦ"x?yD\~??_M@[Zw?N1Nj5tRrڲa:|mG.Պm'54$@* ")j8\Іs{`QenoMm-cj{啣*Z5C*ZzW{9ע)B)=|Fw[jQ략I[zĉp %4BJ۶cfP(s!(frp0LӠ拫Aζc5{BaX4S}}r%.]cT5!H) ( HBHy# ;?~~|mlGG]:<d23l:ni4Wj שBX,R ׫ 0 0"."Σ^)WWjF '"F3##eC(D6nz[ {@IҦiڶL&-2 3B!lQrq4 .Bt2Z#K(`#x롩`kY?j-,Nלj )(% 4Z,tQ 1 Z%SήObajQ ĵβIc[=(O5.V] ]]]קK)T*+-HYJpY*%0 C[^Ωu]9%lu%f{;gd3Ja@ECtW_UiZvFӴ_Mk AuֆnZW|M?^XJh4GGG7~* #[gJ%uDsCqJJ .$啮\.lmn~G6F7 uvkBH0)%u˶ťӧ_x2h϶^r'xl۞ \.'ɑ3gd2ٹ U_bN|sllljjT*9tU X^^f[l9{*4 cûɡ&###]\FLN:;<)fZM)a9:"B.\ϫ7zuwjrsMMNg;zٳbq|wsި{kλ]wr+<==Zyޏ~#MlNӗ/_>z](WR,ϟ?ȑ\.u偁p,Ku޴i`bb[INOO͍yqvum%vi?$V,~Ǟm_I&x<^*̙Ө9%)8 0doohCwufSO=91{yyYӴ(=}|>Ie2g=/mT*K(Rǎ0?;+ CگʡemxI("ifŠp+Wâ1ǕhN(J}}}enYR,R==={}B>}Z]Xe};M\O=c=R,)af2~؋n}቏<>;3{9X\DO>Qs|Gatww}xS##َ-6EQe5twwzŽ{sݿr===RM6 !T35mДU+d2ŅW^[1S}>rR 8~=[{'NFQq`ťž6?}oxxpvnqw7fo͍ kql[~rLL \.bPt?H^<3MҥKX^^)WJ++avٲmC=l1!Ԅ=|rcx ] Sl,}+KK϶K={!Jd/t42LRF?_|e5K+D^wK}+ic?8"<_|SD熆5f嗾O oonf_|o~[p۟yj.^Hs ss nðVs -yAVeҫ/j>?sAONN~ _t;;wu tq+Ouݩ\FnÐu aVK/ŗ9tD"oߞS;zqǩF, 0b_}X,yBJ]ABcS| _,KuСC Sw}GjdTtUh4ƪ݀J%QJU+DJiVK$*0HoR&jj۶dMV?R 'O4ԩ7::::::b1cpp`JE (J'qƴ={v>ѿ痗;#1Rr]~seA{=sF|[6y{5 ,BrPhooWI:ιH).m D\\\T=fffF\n4B9M$繮;??~\Bj$u[FM1>~~}{:sdR4Mgx*idc'VWrRJoN@rFeyy\./9~d:vqqX,0(R ( b[[[.K$ÅBA]Uf)^xqvv0l6[. cffbFWe˦ KOSFzԸi)g}40 GG}-7}v„ hx=]zdW&ΗkxE<䑠Tk7ip===ZͶmu1VՍ 5H)=]XXPZfF&a{ҥݻw͕JVC-fTu]GB`f!4 @j%I۶ JyM7zv}=CT,~ .hhUVDuPMt XH)MB188y^"PeYݍF#JD!dtt4u8ܾ͛2W&04i1۶um;"!aL<0t:x⃈$0 {uQ> @ή}'NtP\&|cS`O<8Çya)?5??{CRw|j"c) !e( $ 50}B nX5GONL ܸec>kgCWj %J(r%XlFq E4ŋJsC /pСfZEA񥥥d2麮RTj4mk+++###\n~~~Br/饥{=z^WښW2>>^,>E׺ '?S]W "ضvn#gKϼN,Z 4NάX<7>շe~sB^H(D2s R#DE1]ף(Ryy˦#@1亮i͟TʀRqs*-JD"zL*AP Ta:ȑ#;vT.jމѣh/%mF[Q5u) "[~Ѿ'fGrٹrTY2a#C z1*G4e۶5lE.8Zm!j:ST޷bW]J+iv۽{TG=eCp.^%tR3@hN e8Ht*gT];߉'b鎸az?+kR)N7d&je_cZVmzL:}֑՛ۻo{Cmŏ7#P{tsD׸aI DJd$f$|īZ+d2B PBt7Ne׹]۵Y$f$$RV2qYtk!m3۲}_fSlqvޗqNtT ) ESj&ѽy-snox3"Ht3F3c8%=rafzQ/mm"("ZD$I w=Ạ rv^n">!d|||ڵ+7x\0x74kqq1#|Rtvvdڶy^&Yvl__3[z#BKT:=;S k. AЄO_U˅l:@c">QA!h!82 q!JbF(-7oh@6RhH$TjvvvΝmc[ZZ鴮333###ׯM8;nZqĩg[>X9Ns\` @юD)WeDQR!MicM!  Ķ*˦iz'9,r]W^]ȮrL&GFFl4 c,)7c|^ri d2}v鐤%o&R"ßß2}SBLXIDAT\PKK"|gL(DAq3JtuiWSzcHZ{׶LRz#X W}&`0XV-b0ƞɂAT2 RD"%o$f2.Ȥ>Hذ,grT#D̠),)'(`Hp!|367ej!$9`PLӔ| c0 yY="?qJ¡L9L8 f~m5b H!Jl"{/F:"/[`LZ~zzzWX.m%3B1F?{0%G]Rq_cХW^YU0tM/5I!zs.@ L:n֏* 9 b]` !8!uƸL0.$) 8 a1˭$`mLF) 33ƙq&@p A0` c3.\c2& @38g!i7 ~5qCbyo h>p`>c q\0©css q N !@L 47MP7lU1Gcc 0"@s>gQg19 81@ X9' 0NJ {m305Ε*ͪc[/GF{AGy$XFUe\P*B#`(qN 8<ưT0!8eẹ 8BB)c8rIr#BTehq*J(T˲(:[jK30bQVRWWW@`岮몪 RmeDDKII4p>WU5WUI2+YcVV 7.@ B ]SÆ!t]: j4 `4xm>l㞠,2F4uP FB haP25+kL`@Ugy&OOOJl6eYRs]U*Jd(!$J&e7ɥB-fV39UMDY"b>1hծ*Eֈm _Mi5J0Ni^}]ẘvu͠yNb Q`؈cL3N'~y[[[/[}$rUOLNr E+Bh&MDmܸQ4/ykTP㽮eUJ"KZnZ?$L!Z*/רN>;FL$tj)TEK5-c8z@ +f>VwzԽT1pOO{ח/áh yUa޴*t+i[e+[im74 l.U{"O#y}8#uDApm~Z;T]Sg>--cGtKGU,&p4~DbAhRW'j\0u`z&R>-ʉqEP%`5`O˹5]1 5eGg&Ϝ9|CZwm –[o%( ˕Z=_-zgA]YӴ 5DWNVg[vnup_8b{~#̳9¸/\xaMG\8zoHj8Py~m۷{yrM&R33ԏf֑T(SȽ[4rhEs(ʔCS[taD |%NMug?+pίF^ȝw_)sf۷}?ۀ3/|F@D X!:zFxǾ`f6gΖ #(MCgYٛΟ?- R9Pӛ6mL$Buh{{S1`` TQb6繞=3ag_{_ۻ?kUwn!ユS J䕮O᝻[蕗>z}]&?qOuh5cldddbbBP,3'5:vbC;v)eݴNJXum۶l˳՝mo[e6`f6셽h<Șm{{{&ikkmP(H$lێ333ulێD"+Ǒ0׫rQk`fjvΞ l*:~XF'OO-_Qq}Jmugh1,EV>p+~ﯾ#dr?eB)hi,t 㴵IߣiZoodm[&V#"wf E L921-k D41qiry܅ӎ[^*/$Ϝf;jʹ )ZZժj!-N5/W^]K5E A!|+CF^rmZ2ƾ{q[=.c( AR*j<Bp꺞O jubb <۷H F9qfx׫n(@ x{2hxxXWAQכF 4DM4DM wiwu޳gs=ʯWk׮{#BT*ݻ7J]UzRСCWc{+k/}K\NY|rt:o߾a]ׯYeX T*_W^bשr~nV^;֯hqt:-Wҕ>}P(\߸N}Y>*W[ZZN}z8Eȶ1s󛪧@---`0xޫJ4M@p qWGcǎRҲ:g`Y|~@`vvqbb֖d2i&)Wwq,}}}`0xͽ?_W|۶m333.k;v|lMgאָ`6?e˖W_}_$Ie4͇zH]q_!UUU7n|衇n~|S7|;tk_Zoo-[\/v|/ƍeY'|rbb"BnfXў={mۖL&ݻw{o]Wڹk׮_yw݁[nz$ !OYfdddÆ .k޽pW@v޽}d0~='ojl|챿)xWyGLl5?z& drphHEũSִo۶ H*|upQ,޿I=i,i'7 )C@G s={B'TPL@\Mc.)9"BxR{/u . ?_qKHt14M77_cbܻPa*!x=Pe%1%FE-%z^`颃n_ j59y@bVwfz7Ҋfv/{Xw8!Pf-9Y|rZ~\\7p߂ƥ{mU h~ X HDL Э@ӧ RA Yv#\v@epkw! f6]FPp|n.8\ Czl"z  { &H|NJ"\ǽtɗ!niՕ^abdƁYR`vh5 ;Z8*3 P'wCC3H` 1@߷ލz}RԀwg %nrS){2R N`"^ rCP fjf #PL1&&`vOί= P5w#4~Bj#߬R#\^Lf]25C=)N~Lqى^/Q @vG)4 eF xPgM7\btƋ< d$8,/#~'_+_f3%_,r/ْ/-_%,̂wddr8 Z`Rpg3H~PA &q.ȏT `h(!_)8|.qYq`7 GIZC(Z./(UnY  ԯ\0Q  Z`&p |Lp8ʃ+$pzf"3 D *>z 0!3@vCn|B2֍pMJ#ͭnBJ4w\շ@n/| u`D @v\5`1 d >Arp5 5xWAfw3  pDf!pAz HG8jBW+;dJQ=y]UŋyieBm8 ez3theGO=ZN֖|-rR_~- k8`76HN1d-fԗ/Dv>#~ bY $LFWؒ$Ry7@,3oAby1 +JDf{]{ƹ뿁YYA0V?*gYYRFsbz Ta.Y-H g,xUÏ0ԓ/ ` 8Ɖ#%F,$362)7jFvsT LM\֔w7 2Υ^q8ϰ,˔DpswۖNeI 2Be˯ܟ?֌5we^ zZ][tӓXBF"J5` `JGjCفV?ћRs޹\.aH7*xVL$$b ʐXAaX B!s,/K@N$#1\$!$I,#1wArIΗAJ5Hfs؝( cM ;8cJ<8;;uV߿{.v8,{<!U*rũu!PtSfYptuK+^3&K4/נt݈M|@ R^v߯*`)EczzC!?7NM ۻ/AR:Szs_;oM c^X5@!i3DQd\ٕFepƖU3sv}[˩MTY,;;ʧ xtQJ Ð$4MY-˒$1Ƽ^ܜm |>?77W__fBlZљ~>ݻ]bsvV_(tHY la~n 1EBo9.g$ko3Ua_u8UcMsC{TYkn-ȨG-#+{.?2:=o߿u؉oKBly'W{\Sɱɱ֖Z?_\جSUڶ~؁_Qⶆ&;T6Ma,K,J)&DӴ .H}-e\V< d$8 ʈptGO#BIsa)!4NI'ERl;,85!w HY+(:B@%z@̰.RJ 핮b3)%1 d2wx\\3!S#.+1jsZ`Ė6 3.K~X P;݇B~&.o"_lS课Bt26 StHJz#Do]NO_uEot0U,$$(,/6 E0 @Pd>t|U`$yyBHO# vϖX=3ڣOj`oA-1[s1Ƅ˲ʜ ۙ8_p!,KQ%ϖm`nZO@Y{ rB^XwBi!Tꭷ޲+UUUEUUYcnѨN3qITU,L7[oΝ;1?rDt!c;7b^6׵M:hlk]M0`jFT*L&IÇ]'\W^y; رcͯ͛[ZZѨi|# ]1\* 6kzc#m_8 fw}a |ww߲eu}֭^W:EQBmmm@`ff& R)!tc[&˞-bKF+<81do/VU1eNÿݮɼ>G;f5MӮASH I`j0O JeYe=?(UJ uP 9$\\/u Z[\1BH!ڎ-L)޻BrEgxDrbfPb@:2 s2KZ Ūb޻L}CXB@\c32~0a=!(}p9SZY0|:qQsf Y=քXTz[u֠"Y,Ȉ2990 ΩVL,0`ղ̯}LS (ZŖn}nnWI |çu6f.6/ \nːrۨr݆u]&*#Jڶӷ׵^uW7W仿#e[oH톾: ב%3ӣ 1gћ[Q(pyg {&[ ,o΅lvxv UGz6ݹ*Q5-AtJtӶ?t;?Bhvv~mڎ"$BP{RV[e-lٿNLLvvۅ}:ۥ.]tw Jn]>nf"x<֨-V{Z[,l69>vg6Tr}A Nm|0Xl<ܹ:>=GYpIv|ᶶh4ZYY922"I$ISSSv[zUU=~w711qĉcǎmذs>11d?p8xuuu0ܿkk={t:flwwSr}#G_ѣ EQ~WUU۔[oѣ_eYhԲ@ ѨaRsu]pkvd2x<,z))sj(ZWBZڷʲ/:~:5]5ua~+ b/Bccck /@)8|޽{9i,#͎uuu9'NxGb^w\nttc,?gff?p8v577x&''eYnjjڳgO4M$p:u/KX*|gzzzL|禧N端jY֫t: !/š5k~8q"=x_x뭷n!sz,[(T0=3]_t;8*jE*?y`_,J,iUSSN+** A3hhhPHQYSSiZMMM.xG[݊p5M|xĮiB6>c.+ήZD)|O$7t9\.&ۖ,ˊhfAyϗL&UU5 RJiDlVUՂe,ˆa(N]H2My gc9pZhVRq3"VMPLii4o֋ա?ADgubKkHm _WfkMg/eujw\2u{  8%Oگto4Vg鞩3om-0a@ @JfδF.4r$9N˲(aBdY>w?FHmbNh9,a&١ƧyZ`Ld&0+7M$iϞ=`1Lz<˲٬x< طoBP(twfYI}Q@)5MsۖML`l,՜3rtVgғa%mbsmGBH)dtdUTTد;;;m@UtE9e[C i iXMeSz~m0y-UQVɒ^SNjbp.gz#Og+,%` aHgIDATe#NQ3TP΂<q$"c-8Xbb%(m`Yp[.;JLlXNB6IMp2B%!scI! v<,%ib2%H$8+KF$8,cq7O##+,$YY4!`+2Us%W%Cū25%l#A90Fc- f {HX2od yǍa.)!|BgNB=Q!X1=BHQdJG\،eQ+\ŔFͦ3GOZd3L~U[#fuL3<0bm#8c%ovjZ6O&5ƕb&(ccL{oޑ]Wb:%'Ti覲 bDR(! Z>}6eÍ2Fg_:d2;=ŗ)6MN[!,Ʀr9cnvCCDlܜѱ8 W4V,ڻwo4RJք\.$I_lmm]rttk۸q"ڙ:::Eʑ< 8Lc^3C+c\Rz8pr8q" B!08($#իc cLUՑsn+x˲lׂZA!Y$ WEHws"DRط✻\. nvA}}$ImmmNן662O}cvʒ%O&O+4x $d$(tAB4L,!l* lvrH(l\GG!AM6B1sAD BFr؄l#Rv3^M2K_y0W\Rչ2̒35TgjhXq m,i8IE@*6&\R`@"&(#S!V5r1PqLsąe02o2Q0ɱxC9Ķ,Ƙlg2dD3x}ƖjөNft~7:1:ͱry?[MIoD?d݈H6R53)C>ǡafQ\eL)T" ӚERY-YΎfIAMug\Ȉ]+R8RQQQ$H]u;^\v^dpž %;z'th/wnzBt]׷oDB.+s+++,ˆa$IXeeizNsk=bxb`\5fY!18ntܬq[V|r|69]PAdfjt:iӦ 6CCCvx_{{{OOi+t;?˝7bG>>q"PIbCL[6 m0:lM#X(z7eYꙙӧO^zjjRJeY㶶6BH8uaϞ=4/"ͰzUln$≃Cu(nD&0s8aΦƢ7cFʳsO>,˲]֮c vEQlQ[e_.\i[lmdQ>ɹtRLD$N0P.11\2&0^خ jdkk+cYoPł(.=DF*F4E3q).' xv+'& uyrb?BDMuX ;,iRoJ8h (GHdO=^1Gٜk<۫n'jRJEBH--|:`XR^[2oaG, BF2 Dgg85dfqj0 .BԈ$Mpsaۈ(Y 84F@ĩ ΁ꎈc Fg?p*YŅJe8F+" btqSPR8FKőe Xc$ m-(Sg]D1aY(c Wt8͜ONKKs{{w("d$(\"s[lp?6{'v !D1ere eJ|I豿~zTUpDQa #K/74ڵM MfnMdcBލ$xC[r%H$0Jnw&ijnSpqyk]ןx7|s``Bf~w=.?\iG(Doss|zbbzR""ĮX Ú?7NOO~ E.BaR)y"a YRn$ҙo%zj[@󎎎իWSJ#XfPee($v=jl3+IW$Lj[lhL#طcyA)v8>/y7"bdr9M]n- TUC252@e0-ˢ OPB -&, ټIR109Ls;Ŕ7Š *g1DYcf.#yjvh=ّů1ƌ#e D|.:(37 q>0h<\.o҂Y1U%NgYI!T.'I\4˲dY&EH]K~S E\r(T dtNE:[3ZfNH$vuu)y麺9ƘeY@EQ˕cTjӦMc! B8kĹIOD`ɚIz^,vʼeB544LOO]w ٝS65Msw}O?]QQؘfNgҨeyQoq&5gGRѩx}SU:mR`(ͥ0qdi#@ X86 #_>n4NpxÆ 'XUSSH$FGG[[[W^+++(8H$2]ؕ;M44't|N FxRu5ͼͤc?nB7kʲlsnc˲l}Gl{HuIJŅaY.d,2 r-y|aRD;)%Eb*%caٜR~Ybگ Gly"4"B$Xl/@OD(̦,n嵜#18(5~UXl9ǒŜStəIa[-Sz"N#(c6g^8(lr*2_ YTkR)8V^|>"Ӧ,iJIkeK~SQVLnKPB0~SF=ċ d:+ndQab (KdR9ޙqK"V gmA&6q= #ڛ6C-OJS6h嶑 Ɓa iLNOg .:~g9wՍ^uN'莩;gC/ x/RU5y;E?MkQJE BHӴT*UQQqY#-_lاPNE7Q\|ȉ\?Y9_]p8|)TJQ@ Fׯ_sζ*]]BcO@tޔc&t91w333T6'#G۞!twJi>zK-]lD30 &LRja!-0"ȯ~d2qԩ\.jժg(g߾}lVĵ]p%Ir:5XQjt /2!SW4 EsEQ6o\UUjժz*7M;4l"*\ V(+/&[[< ,; *~1M1:3hw 6~1{]3p,l#*o^54@1is0/rgKm#d VW{Li3X) f0r(7%0$0x qSvz&:A5C$B0A<[r*4$(|f-,7 &8 !QAp,Y!#rBIsd!$9,Od٢}A17b&8gG0J#e[ `+&\(ZˤWGS!) |e!ɬ[B=L\Rp+LT,%)ML#)Re35g!-*RAYXY ?=tXdPUͫV 74A1e2/h0\ﴠ3_zo؆56_WpaRZzٛ;_^gzkwmA (Y7b #dT"zo}L57=#dtrҢs6^ꪻv%^PW֘3/daCH$;,cUUN$]K ;r =oPb~1C#*du>ӧOݻWӴvp}kFQjfV[~{a?H_I07dO244tر UU;fY>\.'ƾK ;Kr!%2"׏Yuwk2VOK=8{ΆnK4hh[[۩S| ؿ&QUU]2pW.=SO7ʉCoۏz#Wo:Wlt>.cWnC u.BL&՝= ONm"Z?}HUnT&{YSod D|E@RӾ3 ZW7޻|t$j7i맽c !ˎ+ˈ1FzQ,wT:H8zMpS2q>r۝DLjweX 1u 5A QNSVd;Ԛs0`yZ?D &״|ŋ!!#y`y! DY@Pr1OkL#8gԸXhK)v~)=BٺK8T> %kb8/0*^FHK ιp @gB3pw8 J*d楙>`Y8 ɪYr?*S9hHm,Z9Ͷr)T|qdE%Ev1`4tFD$w^q"g7~wwt_n}gǕ-plO~3?}pF} Sn %ǠV(rMJOڑOc C媛7^;("d?{*VgBF]l=!Lr?egD]_"*_7{Av +B l1J#9/Ւeَ a1 !Rm8}`qB;P ΊɞCA$|N&3p ^pfhcNs֭CCCSSS?|]]]\wyriMfffc۶mH${v/Yb`Ydn;?}㙽gگj+dN3f4W:&pt:k ]vjj޲[nennRmFUU7lp8x>D"$|>4)'Oܸq#Bh͚5x^Y`2{+ س0 r$7g鎎p铧~o| %\.G)B`PUU4].5\cFKK 8g25kdYnBڵk[[[1Ʀi`0 +***)x@iP`bW!ݕ !^K$<,˅ eI_{t:mWv|ͳptww۱v(՜sxꂌBSSS?O=cHa(N~WIp}:k?z${˲bX J9d2x4jJAEovE"HҾmcdYS8Xu[[[!ނaˏQ;9BsF9!4R c!(`e:ɛSIENDB`fdroidserver-1.0.9/tests/repo/org.videolan.vlc/en-US/phoneScreenshots/screenshot20.png0000664000175000017500000004233213243530567030730 0ustar hanshans00000000000000PNG  IHDR6sBITO IDATxw|]uff+zH콉TDuYU׉ž}鉓N؊lYnUHD8cG pP"H|?>gs3kZ ÙPQu] TU}g+W\lY2$i``ߞ|w}Ǐ_sK.ݰauϽuM7E"[ZZ;~"%o-Hx㍯z|1[ZZtMׯohhxwr.{>+**^oCCúux زe˃>811ž nݺ_T[o}O8˗/ ツo*++GGGu]ϝDa1}tWUU+Mp.g}:Jno|b$Ip6 CXdI{{{[[۝wYSS裏:k۷oҥfȈ1f۝NaOȝ\bEEEE27 uM55F6lS* @ >W| SGU c!05(! 0L!еsaF)c:77_R Щ/ hq83& :#` wEG@-\21Zذ\ \F(\L9ALo*>]aN>lhؒYuPfpAVyq3(26%>y]?4g:%?f$AR#(< l3_?~z1W@p+$@wO\"(ï~%W,TMAӍpz;n y04|nշX NWl qzF4o`KnϾ vo ?' Hd{M~yٝK&ߍ uJ}l>] PPB,O&2"@(m)PY _6t`;!>mdX&4с s4i24ęGt<? ^< p ]a|ιp3pq.#]'];bk _;iO9y1p.D,ȵBEǀ@/}A!f`F`Pv.HS!WC ZX8G@$e&Ѝ8Bt<ޘAN~ M3:.v+vcD~¹z8,p8p122Y%#"mWmg&f(ˆ`9KUDUfׁ^'\C&#D)cYˁP̝Ȋ) >X)>~ 0: (_|Ւcb#Qȷ0?Ay>T!4U;qHV˄R!3  4Dch EnA).Se1J26U8WC)_c(*5ÜbVfe-4k5n^|cǍFȡ_zĵS/ٱܹ!s9XMo7:ydT RRʞ\uGg0iikAf #;A,`C 2lD13Hb;[[SCH'N3:Cu1C˒!DV(BJEA\l,LFBs٠:!"L&bz'ˠc " ]b,B$ir%] hOOϜ;F 4D(UDsUS 'AKjX1X`Vak!xc˖-3ssQnᘳ9k͗$> 2#w/ qcaOXdL0EU4k0ƙL&'X,[kh4QZ#beq5 :e(#3H"iidbSJn7clw;x<c|M˓oCKp*4yRj,K~(Εc,2clv$_dC6@ZXnoc /mb ɻBB؈cvnc)%J~ܟ0T {NGw`#Yx-||1E%m# V'X+!I "efba<*'~# rVčmB\h!=bH.~*Kf-{,xʈ1@X>Ac ØBBJ4 !WHd mșH[#>mș sk<2[ÙrA#tm45`R|lB&( zm6b!N,V@*4U eVI8獘juxťo7O>'_>[ohi]$bQ-VMUU-ɗC2y7"q cc}+XIt/zW_|NQ-曂Hιj _W'DA߇H0**(J+WTcQ8|5O[vʕ(3 <؂@lV+ı͊dzm,7v ?ݷ[%Ϝ@y#0˽g{m &{KWë<+%˲aK10(L!D])$W bX$}N !I ~oP2hʆ٢EyEd>b;rrKo\ӴɕkaCCC^OOO::p8jy뭷~?tz/7!>{ɩ&6|߾w;NH:ڙLzdK^i^UYX/~CFJAΜ9S__F}ٲG677˲.ڵkǎ}xxU16{ٙ:axxO|t v"HCTT ]Yj}V͖t]ojjMR`pɒ%T 4M B 2XAB6v nݺ.'Я*l4uݳ{~scD{$:Q-_HG84&[oh-7|}br4P2կ~USSr7|]]]vZh4H$2L,K$qرGνۮGiiŦ!O${KV5ջEab"\Xǭ,ĆJ'bE"I[(۶mY|f-^x흝$566TVV;w:u{ٰaӧNIH$1/2u&Jwު(GÑ񁡟hMEC#Kk-6;tz^}#ۖ,]H>gd 秒; `Z(m sǜS4mŪ>/=5 =}LyI%KX%Uqcl4`:sB>cHcI]?򶧡.<:\t*~{V;nyGTL*q"Ę iLWxp8 A;Ll`ѓ=sPOO?єMgQjb#Rɤ(d*`^7,bԠc@E@phxa].cL550@/@'c\W~ ιjQclq8ρKYg2\Fy"d%wά)#Ie80w/5,cͬ2B)@ʦy+L&#&RZݭ89cA,2B br˩g٥|lyWB$9,̪q6n9|['?>10FB1nq(6uuZkG3"3{tM2bC^ i-.P=-0 0Ä \+t7Gvq.  `jהSÄahDu=&_~f`ø1lm3UFNJ<6iQ_De i>?2lg whU 78<ӏ"{?;_#oQ\AoeYlVIGn\I}l*Zg2Όl*c55io E> ӳAF `?[\:GH0~ L0Ќ q1 $&*!̐~`J$x|43tjx] fnb09V L&c`3OLLh01`]$dYB!D4(%G.w֨٭6.@07-a<5ϥ}麾cUU}cǎQJ$I;d2 T*Jmڴ)<37|,ˑH7o4m``  ٳ%},sZe&!(-"@b1Bbq:/l*+{vQVxt:=>>nZ-[k׮UVUVV:M|E9T*(JSSSkkkcc!PQիWKTRRѨf!'&&/^<.Ze7,G+4nYOxעx>qC׀`:X{=δ9 ΈRj91$@uUf*73_nȆ14Ѹ0kf泂'/ ;]7mˁ!@az"5|9yaqcNerӋMι2(3F$((@@ϝ߿cEFʷQPx4Hg sd,AVC_' V<ۢ+H@- &@oDa ! -u:ɗO \:_X䱍tta##srr>9+T yC5E<1gBahA3'rIgrb2SedXyG}n0MI#błU˄E ,ꊂ%;‚Yd'x <=6Yt]7X,htppj"hb^h>joo(p~Y[?BH\KL\^lYXsbi 6h0 LS?UUUL?y 8uT }}},766Kwq{DTU_ݻ?DART ر#Lttt={ċ/b6 (FQqַUUU%r<|wqǓO>)q{Yn]@4߲eoҲo߾իW 6[---EEE(((J&[lyWp(; z?я$I 7xvenEO$}}}UUU9/O;uח(~ _v8^chѢl6K)u}[n=x(--ZͅT*%IΝ;5Mkmmxin:zҥK=,^wbb,in0T*UZZ(Juu5BvjۇNj"H**..6 _\t٩a;1^~ݻEg?_~Rz1yX=C=$7EOlE`MWwx'yf!0nhݦR4/LFs-Ou0I]M5 $)ava93f=Swya1d2(Y(CCCwnll\z5c6˘U.14=[&f"r6|w7ƴL̴MG`E.0{IAubΧ1 b65r@bh4ZQQ!j* X1Ivu2,Zdz;:e49fjڦe\&;}L&p8Lw~ *ȏȍ.g/!V55ՔQB 13WX;s,>9 gQGZ9 czw3痋%?B璔!4SfZOGGh: 4ynoIJZLK=H'@HUcX%23jQAijl p-dmE@ ʌVR͹]S9Я넀BgzY (t@vw+]~M{ĉGMq( fI ,26Ԕ~+Ovw҇\[LN2 y:f6j7z[gBC{ÇX+!adӀE)L'\&k9B(J%KNQзԇb1#SjPULoEQ\z,Nt-"tww[TU={xަ&39ڵkeY^~=ѣ[lӍ3 "zfSVw'%h: [D:UGLͦGn]=iAs@4MqM %c: `MO\nV4M4s+,h:a7G%vm5T 0͊7-<39L`r''eҋqj\ s O頍ÈuHc F *Tz֗;%` j!xsp?Ĵֈ2zZi4a0өS6TA2(bFLMeNp̀%FGJKAAB$ _)c3= >uFESۺf<s?P^\UmUL3DηR f˅nh\M=c|0 yˈ3pq.#<0[D0932kkNpR-gFflwV>d{;86<#gf&8ޝY q3WCmLEwL.#%oHg_cxs1HԵl(q0ɳ4 0,0,s46:-gu!3ȅLFN1La մV_{:l[53<MRimjN a!3#4~˜j0 ct~YʐY˔s0SC(J%Xh4TUJRAf1ͪJUUESXdO}9k4&f䩓֯4|p?)*&1ŌMr-dmT*X#=c}p|o~V`]diP|U(31yоϴ?baG^?g66Q_.ٱI$ 2b5Й&$X -ՒOuؖ^eݲ^[GNv(P[K'B8cPX ]!i=`}}ڍ[*b%w ?FĦ"BffgJh~l4fiQ/)kYTRdUU#TH4[Z\N/Z\y._$&I!d w8vٳdrhh/>~媬b}}}y^I)//㣣Db<>ĕn˲<*O>5Q\5SC=׆ |gyMIDt;ccv(drA:p@EE,..ꩧZ[[nw:v\Xj9:jllFH$L&D"rʉB ƚfWNMfLT}Cr;ѰIzLs˒[^ۑ MfA@Tb֭[WX1<<F].W8>xiv2sgd2911QTTdZB7nܺukWWPU{@ss]rk9W Ƙmhh(6g"~xŲqY|ȱRdI:8 'Zzplf` 6:u#~6llL&n [f͉'|>|k֬`M!CP]]%&PX,[҂CPxo:;w!KVVbtblڴ (ׯuRuIt]g\_v-!p8֮] c<88t@ `˾XlayZ#Qev:O L2ηÉLdl(/he!ݖ' N!e.,_ؔ'_E)-***))]ś $ɲC7>=xgLZ;?3/< &oPҹ8~LF2wdLJ<ݏI../-)[>C-p~j1E bfDC$;d"!ɢ9uLcccqq 262Ys?Dgߘ ]y?lRzxVz8&<g2\Fyˈ3\e/Oa. /6gFfc>էI+3) D~0)w:aJ d!3ɋtpW6weq%fcLr -$lG +`kYJ3ԽXfKot.h0,`d"Y> f0Q!ra:Ϲ`hoy%1ܥS4MFLT==磀v] ,S6tNHr-6T6MLm9]\Z ][3y.2`9]#4"`tRaYlL/^ 2%ЁC?˪}~璕6ԟUtϑN*U͗ E>hn7P 6s!&`QB$Y0%  kNUKk+[gBT&N2_4ӚjxBeYk|oB@(p!Ay؏b4m8hZ,eh4tt..DI&Tw2/q>@m-dt\P ]T,ȄH`wLI] JO` Z#3%>Y 1H$,6mϘd}Şqwq1;;V}VDGz6y Hd2eeec31F10K]1Ip4ㅅVrs WP:BcӧA5n5OvQp{\]1ͺ<o$jVJ߿``ٳ""H<BcR_,kؘ$IoBȑ#lv``RjO?tN cvWWWY2Ok ӿjePrM+ B0txo@Ĉ$!*"JB%R'NZ1SOKf t Ji>w޹ۺ3g ca3g,oyϞ=%%%#Bxkt@B2+ppʚk߿ɊBX6mrߵe9əP$;Nifwll, F"A&&&֭[=φ Es8f\2Q#-2 Cu֙d,X,\FW][[Q|G?@BC! Z0F)5 FE wv~A8=0{رիW’3͛oԴ|򱱱&bEEE{{{mmm:--- ̎9`0h۹T*WWWϮKc#BDBLD1BraQ`<,/jy3ٜPJ)fP@ L g>a hfYC\DlƘiWFń\"L&(㙽dDXx&CvI$JHQ400eJ6Ģ1-\``X033#yˏ J34Mhktk@1Dp&vs(-L(i~#"J}J`M!/"b-Yj_0lө1A93 A^r,۶Xny1t@3!'4PyF _xz捋!)c#|ah84:5cL0 o߿u}}=ݫV J0`9f Axcz'f.kϞ7ↆիVY0͙AFD`ɤ???RXXy/wDS̮fN|20 Y@]==/u8Օ>/L}>36cM?ϹQUU46{ٵbo_yƉPQqq}}}&I&a`B0Sl#3Tc,5Cx d29888gɼ?'($qHDC==DbBFGF$#I P0ƱX'8|K/D1 Rj1C 0Ɔa\zQe1x-Z4gF{I=D4))-`1FfժUcccX^$nWVVF@ k׮naƍʧ:R̠`pN%F""$w/f=YN&߼eKssbbbx\t:tREQ̸}Db?eYޱcFUᐤYQFfHj`n6Gzpmp8|abFBui3D$Iv]ӴӧOK]d2P(4g|CL@p:md⦛oJ뉖 zIDAT;~o/]{>r&ɍ7Cab(]wcYuG!d15mŊ?{i@藿xw֮X6P2fa<=a5M|Z1p8N眶G4"K"(bB(16 : |!SJ 4=!dA;gN &8Kyˈ3pq.#N~\Ni0&9QG/=n0B"8y@},#Wc8yAl@H(p8` s ILv89jw;w& rFEW^yehho](nR2, ʩ-jjh lli Z"(( +4wp^y_?Gx\߮zVqi^Vd2N.K F $IMZŢj4MR~Z]f_=Av;v=laMAkaUUtD"p$I➪8r9Yq:Lj J<GQveYV?p8qn[,zH#D<HQhO\gQEIENDB`fdroidserver-1.0.9/tests/repo/org.videolan.vlc/en-US/phoneScreenshots/screenshot10.png0000664000175000017500000002207013243530567030724 0ustar hanshans00000000000000PNG  IHDR6w,>#sBITO IDATxy|Uչk}$!S $SȠP )` NUZ߫חWmV[{ZV%`g%L%)d d:k?! 䄜 ~a=kz/@`%,] nDw1jj-Ix\ [ʐlHzHYԱ@X 8!kZPz @z@m)) 0vMd nO& !d jPp{Q/ @X`K4_~ kz/__@|BtJ}/FcX| p7:@& JbtD'""\>قϖj0@;O7&Dƿb1nbXp@ m01˫ppoJC p`똷1XzOS~5kMixd9d(J_ ."BRT""р0 Q8a1E p!2> Qbpd o־,k_ި^ a17cyq#  QwCp!66Onea1lX2<'c88|HQz,&ܨp!>WPy{;73]pU|@`iB8×dTFu{Z5l¾QI3Q;H&>W v  Am,3& LL[h YAv~h+`4L^㔮힦?Z>@j}m2*VR@XrQLLhNke tgy}6YXQZu (ҋ{q )$€@af)IA1Vow[8]×A R%rHՠ0o5[ykZwӇKkP <%L ><x>g&5`4φ>'Tx< s y=XBg| lMԆyԮ-7Bŏ7q~׵92B"<kÓsQ$1伇z#N15VL܁M)O4fX- )rf0( ;:W"G:j #3v!>?˅ɂSkQSx2F# $KŹh&|N, ÿa80` "b?cNmmSоH vLdՓ8d.s!YUL|{3*]sJ! A~(!1Fhd}ÿFX a.}/*O:>@ҝ`;Q[ qMnf QH2؈氰G +~k8|0 / |.,K8vMM h]dC IF}!'H&q3/ {r ލ•$$ cیx[Ť3a@ 1HA`\Hi8RT ̓xd D`ˀ?I{t@^bNSCپN2+G}% 7;:{_C!, W/g89珨@T|;V\ S:38G#>'P-:FS5e[Cǯ^<3( 3z7 cdC.}/oJs*E^u`bЃf&~*@rfsI|ߏx5dOß|ɱc|>EQ*Ic1iB$I޹W&dY$$&*rH̘H){Hg3/9+**zWzd2m޼/Z/__z6L/^Wx<0e977wڵׯ_vd6'(s* \v][ݹ>z4m`^WӴzѣqLLLaaΝ;O>$55uҥofffEDze&N3Ϙnv2<##ĉ[n=zhff&4%R - m֦:wܝ;wsǒ^tjnٲO>w}nݺYE-Yj. 'f@Hs_W}b-AU6T|޳>K/,Yd޼yyxxxttthh(|Ĉw}wAA>*Iɓ+++UVufXuCVUU@f[S] xcdW͵Τu&Eks.Bhf6^"xNp9`Mf-0^*{+. <$*:+kRhy7csg}ޡqbE-M`4'ܖ$}o+$€@a@R he[@@Ֆ(H D(SW[%=jiH+L|+qB6YO3dã0/l17Z;yٴIF&&1וcL'?kCj$dY+&F37 7:Epr@ )*=F(0$ H I0 )$€@a2;Dj'5cn\ >_1ƪv{L$nK-aQ43cL_fw &: I0 )$€@a@R H I0 )$€@a@R H I0 )$€@a@R H I0 )$€@a@R H I0 )$€@a+!Q[%<sŖzwh#VN %Ԓݵb= Di[!ɦ9ҕ @Io~.Ch߀ ߨN W_L *|`Ӽ~;@AL^REXkσ ȁ̈EQq >=]_Nim/X,0*NLsNHAH L %0"rDc 9.$4it)0McG9wE ~d{>3뎧\"LR}qp`Ty!+L?gҲKa29^$Hriϵ dsФj$!xT2phh&N/|;64@>8KhI SxŞę^3j:Mh9zUL!ި{^4I{t4zzV )t|$I999 Pe׮]@M|xȐ!='HLL3gӧVk||r͛79rTe۶m,GEE͙3PwB ?ٳzШ(y]]:v|BW^|y׮]YYYm}QQQ ,˫JHH6m_=iҤʲ\]]i缶`׮]6mj ƘnOKK7nܱcx#G̝;dUUU !TUu:Ǐ߶m۾}!D94hPvvvCCCuOgrٳLR__?jԨ+ڸ6l111BXeeeNNΉ'c3fp:)))BDDD`jjjIIfSeĉGCp8 ҷo1cƴ <==}ƍSLNIIY~2Ley߾}999QFɲ ͶvZ9gq%I2^WgϞ0.=v@l6*Yo>o޼s14M}jΘ1cҤI[7} pYn:k֬R=ӧgddʚ>}Bicի_~w]___SSvc^w3f )+++((HNN{۷/&&&&&(222444""8::ZM6}t!7|i&c.\HLL]K}} /++ ӓ1cƔ)S4MۻwAfs;X@TTԡCM&Ij NDDDhhE/+B$%%:t[VllLb2ᡡ膮^*IRxxx^[[k6KJJn0ai6(RZZ%IQUb̘1G:thZZڥKbcc9 GFF !8W\IHHh{YEFF>|xԩC=pɓO p3du+w=Mw?"zTinoNj{z&5MeY/4*+=qm7bh5о!5qj(w^SUU6[#ιCB+30^itt`2Ǝ2g[OnBߥ;v.MK[1b;e˖ϧ !N 8/++spܹY9r۷5blڴ̙3>/>>r}G.]RU566&~˗xb\2!!!,,nggϞ0`Vk~U?~$$$Hg:u*))f>}/OMM3fL(}SNl6oz꼼ÇLǏ9r͚5wqGZR6(ѣG#$ zXpӧOKt+V1y k9s~l67zO?4-55u{Z_reB/XnqG/)כxm۶Lk׮ tLP˗//Z(??_劊A͜9ԩS${gܹ;wl7nܶm[&c…ǎ3L'Nȸp$Icٓ&M:p<;;;777AoY 1c|駧Oֽ\uu7n7iZhh;̙H7n 5sLB!fSN?~|AAA@&8)))7o2e \UկjȑȌ+oى NeMNeYGsͦ1zހGCT7zX(OӴx헠_U)$$$s= &"66Ưl/`rYfz:\x0,e9$$իÇ?|YY޾OUՋ/z ^n˲\^^gU.;v9r***ֵX]]]QQQ>}JJJ Ξ=NIDATnܸ133] Bv}Ij1vܹS]]Ѵ4;{,}軬p4 GN3**^QYYL&SrrΝ3C-//oo IJJJ>fejjj')^ŋaaaIIIW\Glyޯzܸqqqq555#F4pWVV%$$?{lfffQQQRR>\t40Pnem$IQ^bۻ: UUϟ?O&AAAAܜ.a}W~_dee=s]}ф c~竫*'ǏoV^x@͛7///o[l ߽{w'd222{͛7]=جY$Iڱc|Ѕ93蓐0KAAAq#CP&IENDB`fdroidserver-1.0.9/tests/repo/org.videolan.vlc/en-US/phoneScreenshots/screenshot15.png0000664000175000017500000012400613243530567030733 0ustar hanshans00000000000000PNG  IHDR6w,>#sBITO IDATxw^y6~iooJZPC$!zw;'.Kĉ?!`cpc0@HBHZJۻԙZ* {kyϙ癙gyb@}гAe؀fy(;Dӏ? 5WMX@p>P@-.9(`gS7#'Jң5Ƌ12%G8I>c;OTY9n,~r9؄8wsRDzcKLO<0u -_ǷN0]Ýx߰2ʖΟk3'* -6`#BkP(_%6am,Oo՘A4D/ sطTF0w2'z ݍV0WôswpR .Q>K>J7:0X@t.$u ӄ=_ubJ{WkXxlԍkM7C~8k lK^`^'O5!&XDÜU04.:K8BGfdz k>˃m':~݉GUT  BAB;6*?bW._mp'13/2Njc_5w֟w"s0B*W7-//"@J|壮&T5Zο %SM(A$?#}Xm|e;[.OŮA,G"Ǻ 0 cf UG񃋎}IЁKqGPLj.C9l7 $— c[6*ahՑݛ$ 8 : 8*>`blqui5Ǵq~}NmyIW┞c򐝨t'^#ۀw&INj&:5?;LRac$0IIa g9I*p ߶Ȃw_/}K,YwӄxG Ggĉvad;op͓p@mq-7|:>lZN3a*$`r CEb>[$z_={԰}㳢ay$̌\8܀_ލ,oO\(=|q 0/ƾ7Πt<? "l v 0"x@%+T6`߱ٗw|/., H\a?M~筼/Ȟ 2`g߳׹GǦO 19 (C|'Ϗ3a';@j@h>݆0$C~>D~~9Xu_0 @wѦ@n)gt [~(=qi45_1 on OQj'!4} _7}9,~b`@<@=P EXH;n=/GnǀwX΃ > @4 Dʄo>V(|Z 8)ʏJ~ 0|}Z}0贞 r.<)Z0rZ3.囸^S~*@_ _#T [a~zt۫?&.!/꯰?,3W!4>o}Yr!ïC q.=X~Y'3'+r!%o | `"Gv|`=c?@Xi;3wipK QsO/__r0ohŧ䕳5<-w5rXs):9%89|A 0ÂaQ tx^QT"{I3SyJɩ0 Wv|:&av;];3m8ԠgyK&01LRac$0IIA‰܉ i8!{܉q9>NI12L$@zb81LRac$0IIa $&1I*Lb G+RY>#m{ ˲8Nb _g øfΜ8q:!y$dY~W^=+x<} Q$m# $M:GBbrI]'>_7N*;iY3!dI$vl{.6wѡQMUez=H#sM,sDH&Ɋ0s)@L1o|Y;[Z{G]V-jżnVS ڂQ0̱`T7A%ztS'LL(KBmSN/+-OBrxwa*@SX8h GxS‘^r+bla\RFJ#3O|NիB%Ң9e9T|^^K<Չ BI'Ԍ/gE)8y&ɔp\h۰9l1dyx` !N]sw(%;d)r!M@mA+ yØ`!"55 0i f޲`p5Mp<5-,)p9m!\c "Ф%HZ__?o޼\Ӵ !$IRTHZiJRQe˖zϻ8o(eWJò"dX>H& d;0_ #z [ySEU!u5x,E0nTOYpP @=nʂB@9XÎ#1HDCc{inn;w.\UUV͙3_3gΜ9s~2,//'tuuuttW^y%]z۷o[\$ .`֬Ym'뮻!߿ҥg^r壏>jƪUMt1֮]gϞ?>駟^f{קRӧ3~%K455KT 81Ox`9,T=zd--|{}ޞxi4 3z>E" }"TYLP o|zT#ᨰB%.5UPG(\ض!3n[Bp"Sq ~_޺uk"{1˲[MȈk' Ø7o^WWW}}-[/^9>+M^$X,|͌nk׮]bżyV^-IUW]rJ˲dY޸qg>|~#<8r^y<O l2Db1.x/OO>sw^SSF܆f˖-XRN̙se|xWEN@6n۽aob{T*|.F"s- `_K[f4Lj654Yڳǟ[lzqG, +e^ɭO'B9,~"`-+p1B@fϹ7n-r;8L<5~ee:1`۶19w۔[wnRmmͺ)$5B,[%ÌdљM61Nm$2Cu!أ~;p>J a.(mZO!儋Gړe^KWϾifA'@BSfbXt笛į?O<2~[Tƫ1 ijn:GƓu)<;W !,XpF3v*eSTU67OolݑJyS(L0i{Of]E[/VnL)Rc(;?6׭MƜ@X8Զe &uսwp+**k8ΛAHWz4mԘ,JiLp;LBҲHǎ}^x._eS**F!VS?`os5W:Mx%CX iZJ(l$[A T@F3)J˶bh8SV]U~ױl& {| %},[ܼpvLV=$9 |K{5xCDXY!%DxJ@P)[7u0Mò S7|A/ugw[_8l0L>H*g:9.4zɅ%&WBnjH~;z!'ύ<Oj@tWLR>t-!K 8 cB4>Bd+sI_αaRƅ-x?p}>;|Crc P}m$108]su5ukvawvX?+0>>47UHZkwکiH um؞UE:N#*pSJ#;BHNGR?h'=9f&A)!Lb(k Wjd|SωĶ g/97|j<:һkmH9kv[`+Ä)^lץ[dS><& @Za .;t$(1Bb/mhXimX 4ƨ9on- ݑ(T2)xw_]W?7RbdQVbH@>4<QYEI]ȅjstv;)cQ~>_}Y`A&P(.BM^~eJ+FGGt]_doח#H:^d \.g+|>ߺuR;m۶K=@ W0sCe3mؿsSNi(__4,.EZ6gd<hPuSb?etg#HDR7gNaw IDAT׍R>8Z͹3c[Jt2Ӯ #+D)T qc%0^ve۷oohh?m,2Myڵs*pg 8%%%$ ,,˕r-###dYBݝ]v|ݳg͛7/X =Ж=CDzSt|?BMMG3 f{LoyYۑ*x{{oȇ{}[^-(\yP. m`A(# !qhôBpIRp(b8T={9ݻ> >7tbÆ b(ʸ͛9okk+-- BSnc&z~7{Ovh ؓ{rבk߿?-|; !E5vE ={Vp_dxٳg馦W_}U mڴ4\.z[[[}>_ss8Baƍ۱c… y+Nf ۿ}}ٷk^tE)Be rkٲ}TW*xt"ݗk|5QqbŸ ;Ҙu9Y}ԓI%ܳn}8M,jOI:b[rIx>9\qp2O6SW]Fp23hVY)E3TƓ):J+V/ofΙ^Q\5yVIuB0A ==2ӅHf(OT674Z62z{S5ޠ_Ժ ];'Kԧ²~09{\Yj$mM T%*m Y/Xm ܜ̌ ۶gdHb䎆< D"Y[ U>c\R|dV\kL eB>o2;sZv]Ѳފjh)PӺ]%[;1LvH4਀"Uɯx˄ZK_(6!wCkݚDv P"ŗLluJ1R2UpŪ>u3cz46ёBY,2v>rLJ4~55Yi8>KRꗞ7Ke׷36w($3IpŚP*"z[; **B1g sf .i [WktYҍBJʲM ++;JZ}Xљղ_>s]=*cςT:x#1Б4JްZY^*Κ ԀḦhVgזl°mR4T5-A9I8$n4Eڲ#3-*#éڦT`OBʃ{G dhSs@[ȍ"iP"fTm;trc뽳'wh+/@#VbugeaIi|`v`9[sBwgmJ;[E%2kJE1?. cx~skw 5pLc^X^aޑ]\9K0rN&|iD0L}C}y%O*ȉd˲|fppЍeٍ'˲H%0$IrC$;pCɲL)߶m{8,wSv5;T/?^mBY|EN APԊf'39"YnڌiCQx}@i( u-e-xB=FH"y 1IB;wm^W^۾a#* '1X3jgY3Ruu43j,6qFԦhBzhu |p0g\ܹs};SP(tvvܹr֬YO=Բef̘H$~隚/x֭}}},͝;W^kh[[`ww%I"<|np 5 /W^Y]]gϞ}+Ҷl6{wOSBmH`O25ݔooϾؾ9Yku%>2MPPn*l&emO?ͮd|jI'f=?+Ohy]TH {d{:|ԊEyud U5FeZ@Jl4('X-I3<~X,0 cշvO>}#g?;Eٺuy`0ʲ|w^MMM_|d2'|Ͽ~{;Xfxr}x~^$?>1BBW^y5l 0Ax7t!6Ǝёڑ?t;Fb>@T6]#=[aعs͛/?lbƌBS['R@B>7ՆBaiWW캃él <\&'CRFvhp9@E H&zS_Cւ5Ϝ^%uD)F1VsYVP9QCʜr DRʋ@6b!TbjVugn4Nd8c''>[[[GGGeZr˲~_/\fYY#}z*bǙ={~#Ji"( ׯohh8a=۸qcUU͛?Ϻ:u]m=Q }>_SS)xDڿgKJ#x$>:Z :Fa8a2 0f#kڴƩ5>*+"5Ua?>:H;sz2푘\rp@r项e%ͥjcgR`׾pЧ ՝wKnя~tw&} ֯_ .\xLғ߉(%TTbm,3.335ᢘ:vO_*f^Q,ƹ^[l5F%R7T"%aI҇$˦yBdJ:.DtS,ln8`OrZM ;o ;²3ՠ?>4[ DŽTu|',ιk6&61 pt?nx:݉4Xb1B1a%5`f@e$,7VEu5jDd*Wf5–> =kMm2u6vkhVH1 K^SE/!P{(-PZ[\Wm}*Kɢ'F#9k$YwiSwN9K߇7} K ` XWe^X4JBM oIElR%eS*yz#CSk W},ζeͬ~`=ܦ\HenkOyNe;%@rzo4j U( !I5c aT$}ȃ*K@7t]H&( +ယ֕ -~W'H}AEN*񏆔݇FGSYr7_^=G5 ԗ*$Q,078MӲ9'Da7Zz\xׄI%`X#&U0&Pxj28Ƴ'lLN+ fh@@C$MSLS `p}bL2ż"{ GbAERwҖe\-(GZZ$TB}T<*1ଐ/`1 c2D;f֍b +)pBF E]ȣY#[zT2# рL 1kc`WQsOqi,,tx<3z!HA[0NfGhBR{+ 1]B"1H+e,'bPo_:J&d; -;vZ\)3>:+$K,d EG<>e.s𼮧lAp 31ET̨'鮭N>W L>ӝ ͬT1W|~Ӟ'{8kҬJWf覝ҙh?S0t:P&f֖m4X°iUG|AS@5lA& [B\Jx:ҝ^)7WK'!qR}pUjp28NEIyxN`re;F ]rܯV8mq*Fҙa tf^oEUy8$l2؆. \J6Mfs/EJ6W'LV#$B`"+ b.*8UDz)q|f$S.sҀaZp ֧-[Yt{777{(wy饗!fRUu۶mZcppPUŋGٲe$Ix+xW455Eї_~Yrʓ 6E2ʣݣɌdjai^0}y(m=^JєjfEC3&^3FOCy&Ct=irj'n#R.DC>37o4`P1V\-[jjj8c/_ ŋ{<9nD-BHooEBЋ/(K2̾}ĪU6m4<<  ./L&Ν^|EM.Bscf"q|KY=~%'ndac 0,Iԁe n b IVdu;NkN$ӌHE{Yo25"Dh%L!\.yT4"^Ztl4^Wa:R?/R;D|(ODXiSfͬ P9 8v`s>sLIn:;w.YĶm߿lٲ;vtuuy˲.͛7W bZuuuPh߾}ӧO_x~zjܹ[|>׻k׮ 6TWW;PVVF:4uT5Q c@n5˄ &.mFXZYě͘##_h;ʛ5nLK5N=3S,a¡av] KCW/_n;Ũibn3Cغua|O-%-EswBᩧF]]]pK !:::d ~WZZ>mڴ͛7oܸM&b^|oX$K^mIĬr,dzT(I4,ö G&)DwmX\wť;qw˪4C Ӫ=}T!*JG{{Ui3`1ti۴;QTgrCuT#9GbD&Ȋ(?vGs-qzo!\ZIb<eR,˲kJJJlvinkl+L1zǩp t˱20  ,EeΨ$Byxm?ŀ"/m`ze3^_?R?l!ԛGn_DQI@Iԗ>[ 4}~rSh6cmP:{ukΦj߉K8DeûQli{IJp8Ȓ0qˌ8;:ňǍi E4&F*h^EQҹ!#CI$ў=D1~37 SqD2{;\tk0(R0Q Aθi ׅG IG'I[|y:~֢q 2aD]2AyU̯ K?:j?qvm?r2_UĄ9JOM2ؔ!JKjy=܎:Kb=Txt !rPck8\1OsB$F` UU# &-nPA5aOf1yqzCVf4ZɰyxG;~o߾}o@MfrECޡM=Gwx'ht[$[th"icNQf~W:2CW`ppcGj28H96Ƒb$` 0TbCJU s{ޒ~{7H ,]=,G+++_Mg3 6o\VVQd(++4{c.Rf3gl}[ g.ӣ94s&0WUSbL*7&cSYTFU]}C!{)cv1'ڪH" Zvo<@ٚn[pϗe>pqEuWѼJ$fî~[O] sU FLBėuR=$KQVU~˲{?iMM… =cǎYUB>#|>)cض-hOOB^ZJR^{W]cy\ }?::zqYmv]wݮZ8Bc\( ؽ{,8eڵk1 !L]F555$'c{5 '$15kt5ؾO>T'S9sMuՑMӟ寿5s[FTH2$$˛dUBP>B0  xCGƸa92&Nte?Q7ٙDz,q֯_W^yqq՞P$I}}}{ݲeݻ(k׮=rU` ðm֭$G$ޱc޽{Dѯ$]6JB}{スDgrJKKo?,Ik.M6߿lٰ)Z_"UH/m,Ă9"mK"Ua/;}3; _ν_\_jESGHrMH4RLOA pF^ȹ0Rk@wCju۷/xt^{3b844ꫯn޼cy!lٲnKo@ pUWӒo߾nݺ~7t%Kr-GE}lkkkiiرcMMM(>gΜ ^}W]uo~/˭w믿>k֬\.K/zv79W OJ9"oɩoӦM˖-{!/H֍_&.Kb^sY4U 2]1Y卋;eR菮4>2Z)\JWep;A T:W[1L aZ/}d*e\p` EU]$B 2vI6W_ocCۤj[[,---/ecfuѢEқoRjժ[oUUB)=`0hJQK.3 $͝;כy9ng8˖-^[s.ΝD.\xر㊢pΗ/_^[[dܹP(444L`H #M2 8􏥀`kCVUmrwl-)lS.K++>DZ 8B\[_<CGGeDD{]qDdIB@ 8` "#ò%50@!Ԕ䭡q6+3P]]Rǟ}YϷxb.pΫ]ιw(tSLP(D)u;d, -[&Iҹ*#$aHR$T$\0K篐1-l]tp+ZԄ-Ҳ"]o&oydvcC8|AG8*ɸutp4(3A0fs!,34]T1 SILegq^?Dј8;4}ak{Nr_L#g{Bm6{S=ˆ(w hfDVr0'olxevї^|-^߶OKOyy﫯{>q_iLV$[ټ%!PFc$@!ƜX@,¶vzncjι7`NE B9m b@0*؟\\we y :2N!@}u5bl o~_=݇wI-A$lYq`4vFc|&♲`ЧPr!Bcs.8h̘0ׯIxE7`޶[q !قY %9:ߺ^M8rb܆YՅ&eSF8 V*1t*WYáP`&svxeӧ(5&@] B6M5GK@ĉT@o8UK;CjZX>%ѧێԱ\gc)Xn׾CSP5PV #:)V>)E]YA] }gO?;db{w@!$_ DRw\` ER/~AXTxDeԞgv9s- &Y҄apǭ(kvE&K'\*Kʻd 5U%-M|`<|ptrl$vߗ10y!YS dUNLnEfg!`Y5!Je&w歾2SUM N VGI29,c KuJ$./,1vL!!Qeeɞ_~solݽG*0EAhnpdRž#"Yƴ+o*kJrz_Ll-_2z䧯MvsJŠ$`_5Y&)DZPOeG&}_һ4"1~2C0Uٴ0QɏN"! إYjG]ĻtYUzq.o NLT|1HwiN^-KOFwln[()]b9 1MuUWU5eXt.)$SY0&S:5O&€0!H0I&4]IJ/7]Yp@1譅\A\煣Ptwix3.[V+h~l 4;}\щ;?rB0Ry?T7ykڰ?ja$6>8widRء&3(aivsiMdܦ-ݟ s+g1pB`8ԧV{ފFٶm۶mۼBaq 4{ߦy_r]w׮]^˽{sӦM;ve9nڴippkou;vxQlڴɲ,B֭[w6pWpT=8k ڰZ(@S{[6r,1P}A 94ipHm+֕\3I'SS#G8b8u) 0( @,=C_%\)eBX, @' ;5|=Bv5o޼ݻw9882guuuC]6& OfrժU[nݼyʕ+[[[{zzٳr\.YI6]|%K B+Wn߾}Ϟ= .lnnX9gEpE?>o !Ar&" 0ݦ*y@θ۶5M |~Æ Hcccpd2wnjjڼy/={iکNhdssǓ(--o޼y׮]^ID"FkkkSTyyW+dٷO]LT>~iQ/w~2wp|"))=>0]fRzUU]UUyl"`]υeӥx]RV5d%YNnɬKۃ\hhv=?TuO B,Ӗ%@ J"K, ,0BTIU|Z['f%8]vن i,577+2::JBtvvB"<m{mՕf YkkkGGGp׾}6où!*) Hujr&';ZKCgck](l7SOBhy,)@ue 1#J!brqօ J[f^}õ?‚3M]cBW)e0 0>odd$d2B<3zW^niiG=o Rlx4[\t|- BEBm2xA :r2>>ȋ_Z|,cC0DJKBzGu$"'?&ʰ;/[ 8A WHAkޯ7n֐*IHpHp@Ȉ`1*ʜ!& ;c8|I4pqwwܹsܹsc^>/0͛wAXws˲:5\{nM,X`Yֶmۖ,Yd/_䤢(-tzzz$I?~ww,˝o;Ws6,VRV JbGcysKj*E@ePmkV̛۴cf 8<KږSZ}.5Kš #L"S FQ_'zs%pc =%%%P(=缤Y !<]]]JE<„$IW\qE1P9{qHUU{;g8Gw`,m̫'/+,fG5u~_$tWTFޕ[ԦTҵGW^7LMMhvqtq|֚Y:y#c@ʇQ=ױc>s;Wp_%tro^ݶa?]xi'R0! ct&w>L>pMY,XZF$v`OMMn}WbClO4P|";FEkx/qY66r`TW•lא+!ɗgr T00B 6)62fTlZz}7ب+ ϗJ!`ri(Xs 28pBx-*ąk9\M $ic .Xs ӇsJS Di]xkWiR@xҘ#Rʯkԥei_""]0:>5kS~豺U-U#\ץ0-  b\0l.8gs#蜲lnlIlc"kq{.2/[}y^3PWm !o /^6;n9s>;%a -4]u]4JtLۦǎݹT*SS# IDATұ Fo2(s8,`L`.F@f1cXFsE\sinZpWjdѣ&_{eYg%IڵkWl$%'ڙc1NREysMg›.KN](7? )0<;:4L[/mH PC?60'RY<} '8c˨˅0 E4-6UK9a*aq8 &xMKmC{}Ӭ/xEmץLW=DEEO>ĕ'm6}{ob&Bȿ8pq!͛|Rn8xPfS lW508PPmиK%dr%[^ܴ"\|}F=-{-\Q&n 4";ܰ!#o^R͆i J]Ƕ8P˴u`Yy$Ll>а{X,o߾/{^WWK/ӟc{8%IR3od;O7fϞ=44|œqy/^~#w\f… >\[[ieY>Oz;wۿH$v;q#<*6p*ѡo~7"zCcў#2!$aH:-fV|ki XMŧ}B~`Oo R9afu]& ).C/0%R75k3cۮ˼F4 ,\ ƨrᜳ3!֭c 7c$=.ޅd <i{{?V^}}=>`YY޽{m۶xbػw 7C}_N[nY|/o1~;˗q}ѻP(̚5ҿB`06M( A!3kH @ BD":nT~Hc[bŢܒނspR8cmYe\PN@a:9-sAca3؎6?[[z~w~? Ӽ.z*sWW]wi>dRŋ|>/~N#缲rAP 8]9UU]ַ5o޼{l˖-{+Wz:o̚DURF̧)ZP..:җ| 5TEqv+BYb 'ٶƚ TmHg 3w%Evm[ \3p l&u:H64V!ll8kl>w]wllr]}]]]һqO_?gEQ<ʕ+{}cO>w1}}}՞_*t 0UZ{vk-SG97 B8l! kbsKAM}Usk]]C52 +.h"ZU09vX&뮻<-.lG_y^'F+**p8Ңs=WWWWUU˲뮻{9 .ܲe޽{?p8~4%D"ޱ1PaRVޟ/BqT*8gd1}Di !Y"B\մ3ΈjaL ~eԱъʊir-nV446Rf6>hͦ3J[d!ar|>uDn5!/@H0"Oܖ&Iw_߿cǎʑO}S9ݗ)*z޻(rz<-*9Op.~!466z4a ޴(MA #\Bӵ[n[*DtՙFI8pHCM座6d,t9r~GvĖXY"?BX%u)T"Чl |5B@o0c<I9cr8XH)mnnT6gR§+[묲jӛr/3̙n*n"ιB+#8p*xUfseP5M#Q}kpjPhĨMմ7%JFPLf!!A]0BR \2<-)+/SdYpe1F=?\Wc>|C{(\Jό'~<9i  viݽ綝d͹C՘ pm}zT)6$bV-WuP1qd$7R{z♼ش,/]X#Iu9- 11ZsURY$#fBȧIIқbΘv._9=8NZ6VpmrGMϿ!$E 93 yrˢXl"L齚_/ Ҭ#d"F s@o/ȈgB !<GGVqDMG[g}S1.଱6ʥ f*LN”eU%Ci ¡2_wi8( S.3F]꺌QνW[+X^)A\I <߫9 yoCWo?_ø$Ѫ?yVg;IdbVVմwΝ?BVeHH.e*L80%P` SFlwӦ@0%h4\ I,(3:l,_c/ۮbeMMsH0v藾Ї# p؉(ͤRT?E"+5eA]F\!$83\ `vBV1x7> $ .}L.pP2f|"웿YVl6oM7nVO_,e[W'\dkqfLO{Xm1}c|^Ń4 >0YV̭47OL CҪZJ1֫!tr_RF ټs@'N02p%bG"էCTBB! 2˔1f J2井A: f+.ግ  %aJ3| 1soq||S<4DBMMMׯ ^kuB /p-;vlbb²,䲷e ãWڵkŞ /p 7lذ~).Zk*:%4L$z Bpfd鉸օBo1t;AX2DD$u\溄 ̶I"!u2ΘP5U$u LJ"4!@G>yF(+r7´ l,ޅ^{C_ y=-`ǝٰaêUBX oMp o箾ԓӖ!ļΛu`pΝhԫW^^Ŕ+++9纮{QGsut'|7",YL&7nXSSL&ϟ u] [dɦM!K,y7Lz֭g)hESx3wB\q:xŽ=t;xK…3[woyޢH9+OB.bW3/$9// 3sw} 3ܓELcL ?,~IlQK @`"~?LDsL'ٟVh;z㢶 ˲>ϟ[>Ě5??zg;4D.`x 3uƦ]e ʷ $NVn Qra@\p*Bq!@ +oH$ˆ#@Щr!i3|A;U" ޔ\Bެ @ЩH #fR0l Dy0"@ DCtJˑkC#A@#!$8@1KiN\.(g.u(`>B`=r@H`& ! @ JHR|/;71WƖ7T)Ɛ;5I]ʦD,͘dNB$wLrrT0$"aB$d``s:tg@`$0Bxr#>8^y8BQ葞EFݒji)s\$̢ɩ.DLZVVm>Q@\1SLA Yusĩ$$ H:0.{)L""FB\po@Gf!'&kAI]Rܟ*_+ǖ!E𡱆+&! i Y%d$'Ða\`Md́ op?`3΍O D}`20|=sTTSV[ MVD+P$Y W Ad~]Av`&?dbe RM#}C" %uP|>L $HvO%rJF2ÃN.[?o*ѓw/DyZLBf9 6CÖ"\Hk 0FTL909˅`U`p=|l_K/&U@4b|*Vc9$y]|)ɿzP&jyHP5gx)^ċ0ھ}{ 3gb@s3N & 0+kٜe ~+_  ˚Gc(&dV,KT,I]&bɾ*c dC/H cHR@#nY_Q8|Z.Vݽ#iz.CpFI`r<߹7oކ VXZ!$yz XoM!Du[.8\as!afSj؄5A*! kixt6M%nS#u[-hN"%Rd#**eyT5`"dFCOr] BL_,dky_yOȲ#L6BrQ4^;wÇeY.zQ!pJOxzŕE{GyB+W.Xܴr's21lDL"Ødr, "+p"=z,r 4Ӷ>d…˜\q`vw.fؤ HB1C`e3L;rThDe>!R߿Ujjjz)u|uֹ{+R^xaK,B?3yuuu?OLӼ/^\$O?M)UUȑ#7tg֬YN[[[:Jak֬Q0 zJKK㎟󱱱|0LLL0***;訪oeI c9ZjRI0۶ ,T&$%*s2q4" rดunM VHS>yVv@e!;<ʪ{}νW<@UA S*"N41I:Cwј۸:ײmLIwV;m3 j$DEf!Q梊7{9z<Ѵ!]?*ݳ9᷷ǟ[=f.ꄼxsEH:z,؀P-~7#)?昨( +8zd+W[>,\R$+xK.?n?}.nmŊ&M={W\a5{즛n|᧟~f͚O_x≖M6c7nv7:t(JTL&~oNx>q?g?__6uc֭[ߔK8*@$b 0$H":7Vl9ЀDl6+Mv}wk?U.uuN~WGs򦌤cC& D;ڻН5!G$ kްMDt/ELiD"?00o߾G}4 ɓ'&Lrnڴ ؑ8*n_~جjTq9ro[Tcc)S|L&s[۷*6l5TTT@4 czW_}СCuuuo_] Yf뿹(0C  8M&8Un@vԲ<${mgV4_ٰ῾G2"\_~ϸd )~RDKX wLDFdA^$ɓ'LpEgqTss>ذaW_=fD5kV2b6Z7 Urysu#; J$o*[@^ IDATvHbr`6)?9׳X@Y6𑦑â *<Op|vvxS˯{k?mYp9gq #=*irBfa2حu*0!=2.$VX2a 2xEUOT4룭V^o߾M6544=GݰaÔ)S\׵93dk1ƴG?ڴiѣy̘1̜L&ǎNm{c8<+я~tڴiO=+Jƍg̏]w?l煖zu[ZZF/Yѣmmm?I|1bݫH&Fz;;;WXq7UVVVUUc&MNJVZu#F9YtKn" ֤uh 9764rsA*SUfƌoٵn<‰̜3e|)-]>--UKm/__Q]0rȚ۳?xHS)󄨊\?vx#dJ3/7Ov10J5dX ٲgeRG"_0+PI\+Ej*o-54|;~IMyGoOx>) o<_xDdCsc1nh!p:0BWƑU*y@ N%~O}(q+●kK~MS4,9kVUVO=k_I\!E4 0ecS/s˴LѾ}F':yHc<.ъ?'A4-6pUfckBȆH9F^Yw$ OyEﮫ?O$*AUfzn]W;NCyk˲R&uw##nT UڑYeׁC,7ns[8AD`3`P0L!Mԃ` f0p@ nbgP|٩7MGDӁѾ@iOH3 ƒݾc/Y)WAưNi{u?4׫u 0Cl8JML000 v"Ξ" ,/+A 6 02 eYDy\L:KM>0c|mizIG.&P2G#BSȊݯwIt ICf2&l.L:11 FK.1˶l Uk6 hm+BbL<3ZB+H@6UV՗pJf j#:Tr 1o7aoB="Q?M: 9BAh׷~:q"HwYQQK/`ٵk8[n>vaÆ1aԩS u0* r@o޼+W"ի]ﯪׯ_ѣGqKztwzj!ĕW^ݭjkk}ȑ#555tzԩ`ݛs΍FVJs `ƍf:Dc ߹@nTҠHG±u3bRDcM͇:=a "2+Kq\чɃאH\,|UpjAR60 Νe˖QFmذAkAkkkkk+ZZZsQ*)ʕ+/L&SOa8cǎ 9zh{{^kٲe˔)Sb͚5ӧO߸qcotRoKnDLCBA+0РPk-] |6.P6g<J:^(PV@pںIm$e\2>v?0DY)Y9;.D^JA6Z`-[L0!Yn`fl@X۷_tEVðKy{*^7*6YU|蹎[k/߸.*pBW@xijjEۯB۷?6GJYI~w},)+.\(B؄be 8_W?կ~UJCT b b}1d`0 [u+"+ ~F jb,vg[_ f(D  H)7UVV$ ̼y殮"ZdI"#G[ꫯa Yu,^osM6 wرcǎkdccc{{{yyy,Jo_[[8ÇGiʔ)ƘC577IƠ(S|W8R@ Dev$v)6rA\H#jl/-qYBdD>0>Y_җ~?cOOOsss:]t??{wu׾o۳R`޹sٳ صkמ={ϟ}ַu>{udcǎAPSSbŊ믿>yx ={]LfϞ=w(~Ç~iӦe"ݻ@P ![J_?`D*0l@!TXp@ E Gdd;G29uO>D'۶m+6e,0 -[K,ijj?n;wv9e+ s̱/==3'ι8H$lٲE =Fjgʂ;ʑKaWJDQ ^PЎ#Al<B) &%TZaPk`JO=PU,i_Vf2|6 Cu;::*++Kbh3ۋA8c0 PA#H&Zk˚cÇٵk >" KDT%GY!!@UUK*` bYaԷbQXn!v` /d d0F`O;Eo=gcm_'{V$ r,Z$+.K-TZk]nvzꩧ򕯜slLl"$ot b_ !NHHAa>'F"킱0  #mBd"A F{d)x6#jx`NU5gq zFuqJƘDǍF"YKDO$0] + I"`* vAb۠TD$8aA#X>`p(b6ml~ee%}򓟴Lw +L!ܹsgWWgׇ<,q~_p gVΫ,;r v=`C¸#=a<.'Iv$GGDG%F$<H!W"бY}%`)X D(@IhIGK":@G)KaEoo֪k ^JL&8`~DkH۷qގqZ{ک{Οn~+@ĵk8bw p#rb+,Dv\0"@Av@`mJfZ:>voW^:Ǒ R޾]}=ݩt*dV\$:A] 0O(GD?)uMct ӳkG>N09Rvxbإ^j*^<]'l6Uu;}'|rս7x97u<@J8\!,X :#ޱ9ܽHFymKn?[쓛ׯ9l6 Uٌ}d$#ɰCp\)C Ppj!y$86Ϟ=GxuY޽{7mb'gyFsNKkc$\tioo˧Lr}}c5k֧> H" &&!k~׹[`G Pb@h_" vp]ǟ]448iA c'SX(XXMpa6uЦD)L.3X)NV)zɓ'7551ի VYYYWW^xᅩSF^m^}+._@7@P*$A.t2.{eL&N$YcTWג1bf` cQ`8H (@nL %|KG[jqdnW]uU1QֶXVVf)V穭-n0sEEu=Wo&Qΰ}bJ%y?H!deYԋH9u=z IJAUG= *Ҋ5(FWЎrWv4]e5Ykci}@XdcuĐ03a9toČXKүYa"aΛ7|?K9ҜIZ !N@#$ c@q . W4AgJ{57]~ڈAZ ߀Qs==)WK(8BH8N$8BHW8K䱐|),ĝ{6&/,ĉD$&u%0"2@B15:"! R>B0JT _׾|ᲁM]kYYa#@ȑ֫ (* Y0Xo s70k5("hhKƇd ІaR" A: k/V8e]O؞:ј8R * Hd0l ?hb 60Tc|y fGsq)d#lBcqA¨ ]Ҡ' "HUnD4WƐpD.gP@h0)$D)L`40kB ֺ.I abH]`}](uWXFѰF-j[? t9\[2023Z%a(%)e(BFVIZ66hV +Q&PHfc݌ C B"!\cQIDATX cUXN7nܨfүy׮]Ǐ{JG+ 7lp饗655]Vk]^^>q{NJ9vD"~zc̼ylƳgƍ'Nliiٺuk*6Jy1"<$0P*$@! ah$k`hd.3LBa2@AiD 0Vlx&;vD"}pnllL K7l`k`#b}}mۊZFzb3f޷oߜ9sWXQdP9sr3²C u$7 毜 Xr@f'QГctE{ep+pFÇ׭[7mڴǡRnGvg_}GJ.\8wܝ;w;_LRsYlM7ݴdk98ɓ_xᅾ>Z[[WZ߄{;˗ϛ7Ζ)ڡ0ϫ **4!D>Y~#YRT*H$gD"a( P|"E;m{(]bYK$2.R|IX7^©8CpB. 3g ᭠H>}zEEEuuiO%nzk/xcoCKx1D"Y >w y8br*[g(Kuuu Y߿/~o|6?|UW o&=m0! aC0!\8g ʯ~~ nsxg͚6l[ms3g(q``K_i9pR_;ϟdɒ䳌.Rr-7tSv4iҹjm6vl6"L~c?jҟuuuK,9zoۏ<ȹj+tϝw޹e˖s՞Gy?i֭[?Q;Ύ;`\9A]]]KK˝wY_zmmm[[9iE;iL?KwG?zm}߸[ό]kmm=9pDaϿׯ_?k֬s3`͚5X$444,_|-Z4a„E-Z׿5 2%+</.ݳ`ue2sD< %FmN/wݻw>|'?sx-Zd>gΜy\sMWW ZcƏ 7\,4N}wݽ{wwzsۘ1{zz-Zt4! aC0! aC™'NIENDB`fdroidserver-1.0.9/tests/repo/org.videolan.vlc/en-US/phoneScreenshots/screenshot18.png0000664000175000017500000021774713243530567030755 0ustar hanshans00000000000000PNG  IHDR6w,>#sBITO IDATxyUu7}x g~jzUJ***TZ~Z X4A愘L'g~{<<9 ! Rk]rg?{^kkG^☽gv9 s@"$@"fDx =B A9 3y$"tG;c;E湳yn@@{@Bό]x'DDݒB๗ƓGs)IJ%T^ P aEF g"`ƶO"x P0x(kM> 03RGBT$ $Ͻ00 bx 2@@̈'жޭ[2WPJͻ;50V?1vMCHȲnJ NGB$R]?!!"B1qI?usOnuucOH)8vjo6u 4j"[디DGR0}C`ރsEA&Yb\F{+kdMoz)b1|CZxq`s-oy[ooWfc̾oey;m뽷֞vi~ҥKʡaޯnƌ1A^5f?=3C蚛rmR*ì\ŢH{ ?Wxgp폮y򷗨 hW?`A?oy?>9]FL;Ef$@ tgOz`DO!]4s^p[n]b"u]rʩuVx^o~sѢEp /{ˤW2|s{[:22q|g;޸q=ӕ=gyfUW]uGXn_J)c[7~jGKRJ) AD̈hyq?VV͙wN|t:6>'7f QDQDD?x񩧝?zp)/~vAڙ!) KIDHZ B/$!!"@ص"& TwpA68/i^_|QG`z֭RJxm5S1':D~Yuˍ1_Woypu]}՗\rG}'pW/7 _}NLLcHǑ{ncX_kJI> (w/^ӷoR+ ,[Ɵ\_TRw+Wyg$! AJD*RZIAȂP"!,9͏ٚhFĮtsӅO<\~sx+_ڲeK X/6m򗿼gðmێ8∉NʕRz׻;^׍{⦅gnַ;C? %DrkS??{?We{ ,% ʳ/_xR("#AvN~i oŊUֹk_j}LZؚjj$j;D̎f3As|{{!D+M5Kï&aJD/x۶mW_})r 't;=s;+bݺu]>wźcpu⦛n*Jp_tE]vُ38㦛n馛N? ^s5+W<^c\XINON>tkyfBR?(`n#8P`RF nZRzv0$yݲjLByLi h C/2'Ha> ;`q U_>8czʻs#0iߛc̫^f[-M;#; ~կ?C)^8]ǃ9*[Bljv;K;y8csףF@B `F&B"! oM"JEG `ڴӖR (I Aa`y;9AH(rkc5'?qɞސ!\ xJ_ro*VD~e˖:j^@@/6m_fMڸqEFFF6nܸt$IfffyE׺/ssn? k֬977 ƃ'DX<Y<>ِZ .e?|5U}7}oYibf7> f=>.޽;M#8?)8qZ6E_s1>h79w]w`.-1\Eh5sძAf9LnOY1K+o-NT5kvl|a?؛cU7Vܥ?[6DQ#c/\ψc)@)533Eѩno׷Z[onP#Xv̢EW "֭ <33xbx ^P7n[~_m޼9p-#p B"*;;gff֮]vڃ')8=+{Bn8xIUQÈ⚫j|}|&KymX=|?K#?rw:ŵWG>}իo]vիWK)… ƆCb`n[ӟSN u5]v{챫VmGuTdZ=#Z!;w۷Ffm7[e9H>M YBz#Rȋ5RZ¥D<{I bJn^73?Ң#+0:T?YsξO?kZK./[;\lYoeuykK,ٲeK5v׷|nz/;Zmٲeo">o?s~r~1;R0@')xaG.jm_C z[y  Њ/ {twW/KvxDHm׿ؙ'\A}djnZڵkӦMEQTU}/\.yaÆŊYy;v!ΕJ%{gӦMZmҥׯߺu… w====00t~_3"Kn޼n4xy?ָ}I|^7~q~"̴jw. wn2134j{`1sa~V1uEY1uz[ ݾ<Mv2]m=X{'Ƕ><UEV&3xFpner9<[ IR@^XgB]4]nfZƛ?)R)BI {IBHljjTJJ(bU EqRe\Jϳ{W:*A\#x0ҥrErYR b@DJ)B$R:i`;SKW)g R !.q@~)rk8RJf5TRWuk+HqHDQ7$/z<`e^J{[{J8 fޯϼFTfDUZvvffu MH{!w:M#k-YjR :CDB@9{XAR%I(J"UJR{ i"5i]F8REJ*,+\>TM<(TqTⰷvREJifTb^/+]± 캼wZgj=U*WJD^@>T#@PZXU("i!P:Rv#]yfYR(4 zc!!TI{$YEHR /]Vm!{ﬓ:τ IDATb@,IDq$Kvh4<4K-8ZyffX2RDXDJy #tWڀڰ{"OG (`Ӓ%K["dF$J {9G:. $IYXKB(ք2$eY3=9.tZzvju!G= H"!T\l' )8sjwJ)l}}Q3CR*/r$c BDTwZ4v/lVdMQV$J*lwʹ LN0 !b=95j4{@d g:N{s"999ZNDW*,$(byh% vK^JHټ B@!dEQTF@I(ӍfTI$" yag5ݳ7'ja s.߭ӝiA;;}dn!z}<%qIII}"x\B lDŋ=X^12 o`ٜZ$Ԟ,LEq E  Y୷ (KHDH(R:N\aJ%hLV2E5ziT(٣sGJ(lfNkݯ}z=nu_8=HVE/xDhVU+E&'zڲ}P__"3kJ={"ղw^HHJHd!u\esFEQFc&uAj8 )(QU VI8XD@8))%3{?335>:3:iVYUk30jh#"B{w{?׾/~9?DŒwL= V{jZߊe yܮiݛw7=|lƍ7odgٳ}/ly_W?ݯ멩0giw}O8wxS2*ל  o~t{fhwA ?uW,鸢#mۓ?dRty+%T@da~`%c٨blUk߳{`]&HzcE c]^ yGЧhD+TΛZ?+fHQ9H<|s׽cSN *GAsRϑv۷u]333't҂ _jpޥ3|Ӹ !J&Ѓ kx`T5& 3&+/ϼDSS[ .Y6RqsCVTiU#Պ~phϦ}PW3`HljR!WTe.BKs 0af9":rZ%2",El~opYeéAH(;q3l߾}dd$m./|ʕ7nS )eI=J$Qˉ!;Uщ7fظ),XEƌ}#4[y OM I*O0xI53hEj%!*&d4W.tMaB"u;Dl0S bZ/ɿ#:lxpɒD :@#BJ@bd$bmu!W^ {6Novkv3אb3T>рW^ye__~+ Y!d{{ʤ}R uuP#Qc֤` $D:GVVje5J)Iq)%3{ʕVj_iEJluRl쮝;yLL7[ǧ9^jgF"dR.菞sZ=҉"AUVjZ @g=мe 6@O^zŊzjA藾{.3;CܹIE3cq}`()EQE^&!ZI)j^+MMzJH󾿚$an {s䁁{oG)/,;.U*%)3[ݙnBR볅5&]tIgE'_xCvYrw^MS*IXRu @tZJJ%g/\buoe")S TՇ-lQ8cZ3syR):RIDj9I(Pz&/\B5y 3G oxܜ]„ओNK+6l dz``mVRZp݅ L]$E֙E^T,^0)r891>961g#+T*l6ޱ:,p5YՋ׽ug.~Zkf+]?5磴E&c}ޞI"Y)Ӎ-8B!ں9ZP|xu}TJVF'ǦSL+[?:#+VeNt#˲<+b˲,#DpyԞk\%.gEFr9ésVy[p;\ڰZ?#Rl\T9ޣ:oh/<3o ^sC wQ??\rM.]4ZjUxk^m۶k>9眾+rdd_bw)/V0iC!Iњڝ- 4X-ϴ[ l6fu("QFJE1zI9YzE$p6VGw+H*iD*KDcc :[JVURR>95>{˭)%Lpֹf| fY{=6gJ)裏g?|ଳ:묳zg?Yթ[fYv'$tv }}}FV]tEzk^ve#r!_n{djkR#KjC8sB ԇjt{yKɳՇQF,$ELfYxxp727wF*)u3PJc-UcjHZHKkN%ZB'1;7'@D)&/:- oC?gRjyNZVsZPZa9,Ԧ[e˖뮻Ey饗^{0'{ynLD[C~>e˖dzŸR 6uD |,&W|_Zi؞VkR$vv3==mB d5{筊GeKVm۹{ᒥ"u)Zhh2==#(gJq2=5᭙ڍ8.9oCs%"IXGZGQ$ID@~M(-46J5ZMg= f~xՁ;l*H&&&^?Cἆ>s=묳-[v'o۶ޱc{i?۳yk_[x#-"QiI/^ ILOO;I兎4u7 {盍5ceN8! !w{ :(8餓^WЧ0,Vw{8{:T ܷ|p<t@wҍ{}"=th3%IJZ?=wleվK޳ycQ*ڍXB)"x@k{c)*5$&?lϷnٶhE#&v R%ٲik_tu9 W#<4O7x#h% `DkxoSO=o~y# 1K_ʕ+OC<68䓿կ΍7)wT+AoZk県(F ]5Ʀr!%g具\icG9j8k-[7Îĉ^jG6Q$%,y7L4xkq$".-:| [ ǖxSO 3=g\Ab !*/zыK|'BvD hu"[tD ւR_9޷^&sJ-YJK:GE4wU-oWu|>3A,[}m-h`hwj.NcșBGٰiL푱5zi4Z)s$1z9T{%# ~hd#{.YTTEH%q<0T߾cWPP-NN7vm`!?ܞ#F,d$= cdك Mmlݾ}s:Ω\;/uCxN޻~k}[񷌑RkxPa RZJed6χ/iss??*_|w,_^cqjo4V)⁛ 6oaP(j;nyFL_25zgJ3< U-˥B@EO>Ͳ#g ҙz{FČ jK0T#Eyb(M,ˉ5,cՅpF{aAEaMh VYd gL,&ZfJ"ϥ* R4N6[4,|vB:u4n1V%f0i5m_qK.Zkz$ih6Ifݞ$ZJ)I$hXS4M.둈4Xb.,xsk'r[њ 8A5VkƘZJ qa 4흝Z9"Ɠ^7K+^ݽrڨAsAUuUdݽki#FiLFV㸎+%`dCK^N=BMhz_N$ =ǛƑY[kz~ꅓNE'EL?BKE@PA?#q0oi+4ݢf(|@|O/& ~Wt}O3(, Gsx˒ZsđW_B)i4gqRΝyU}C??.m 52~Gi?MA6Y1v8FeDZ'y"TQTh T;{#O65_"FIVV%!ZZB}l7^YIYZ KzlWmsƌRFC8p]@Z!8 BG)x?hz^׺1eQ$T4(mK;yCsW[y^P(Et,f dr7?#? C/{ޯ|+{{{p(@<> (ߓ̌[N/3g[H)Wp4$,G Hɴ N(dV}iHVXu `ThJ)Ui}?_$I~g1<?pZx[̡Moz;y駟~WWz'|rVP=y4dT*%t:ZZyB,R&FSq:z^+ gF5;hf`5"yl4Ώt9??O;KFSkUvg:P8 iQ*Z"$ Gu "ES 3Gpܪ0waxg׏˄ ViDX\Z"Nscz/˗)?ʯ89?x̙f|d{{ӟ46J/4˲//0W %_׍w~ !Ǐ_\\1uuu/}驧:{l~Wpx[OҾ&E;ƘNC<'LL= @k{IJmQidEJ]P_ڻ{}qPQV`ITg񣫁^9wy<&kF{$\ ׸_X\xy<s2(ңX7 +BBjsg]< ͧW>~qi}-eZ8>?~k_>G"%JMoz8eQk_ڿ˿lZzfY^\G/.h\֫^$IʾVe8'yYJioٟ 'xbYLϻ0a*-x|yk-1R[@ȵKϏ'\InSi2Ҭ @2Z:bwЮzr !gRYӪ;B8Ib0"O ZJp:QE{ly0jqeiS )}j>}˗ZFirmevf[ke56 kt2Zx<'~Gg=sՏ|݁8z駟|O|ϟϲ?d271[ʷmGy5yTUΜ93+R|G/;v3=ϛYsW^x__omm#Gw|cviyiX{s!ŋSzǞy晧zɓ>¼z(?rvrȋSو=;hyi/`]vvFrf 7wrΕRҢ(JlTH?$+t z"ɋ0RcR`TyA٢ ,) '[Hb<$vh\I% Y/Z+ԅ8jЄk,Xp\G'ً%GK^vee}b~AibtKCXٍ ]9FiЊhaHB(3R(X+-u)apΔ2 J{|)EJZ!ZK03|ϯ 9VZ:c奥[ۣi[\][k&##G(B{~ ZJq"EqL<׶(ܢRV[+TږS *E{x؄m8B,$/YwtBj?k%ח)y"(ݛ`4ԑʥQ$(8l\qVh5\lR@00ʡluP@%T/ @fQ(eNZqVj҆p*R&8X7, qk Xp]yLCxFU2Kju%m )R V $` 07yblc|PJZ` !u4O$-yάŽ8/DhTxۘ۟ -r/$@\QP0ڠXFq9]mVjpJ*- e\hDK)8GT\"s9Ods^w;']p¬h B%*alɵqR\וRfE~`$H#I8A<(jAbF>c mQ{]\%6fU'HCe ?֬ZWs8+s8BhV!jQi L&牊Vk5{{R\۟,WT2\?x~:, )hǡVKJ0O#zq8`h,'Yڠ:Їj 8Rq`>qK S._ڝ(B]ʪ" 4 f2T*z "!HXX\~~w wP,66W,;{QyH &p9ժH 8Q!F6s fV;) `˃a:a-!P< \?;X b =Jy1_;o(-2 !9tQwoVu4Me)?l87۝瞏汵FN{׏8Ats4׽Zu݊tƅBcA!uǴ !4 h@ ߫>lXZ,5xVewLL9xZ"\4 կӮh&NLdUNuuuyia4]6NPkm]YX\Z>rڵ+>)P#varH })Q,/WVTp%]bZesuye}[R8~$NtЅZÝR 0;?Mv>8N,Z ,oMQk;*iYR\|9q$h* YPj=buת.RՄ$w8ЬViTiċ+Kj+xKQ J5[q$Q'cJ!|g3 #+K=56⻢Po/@hk ֶ+8!p=ݯѠ'{\8qjAb8ZcAr?0cL ̖ e> /Մ6y^wt KʄWayajTw}hkq^^&JVIe"vSV%RхM$)q5%p0\Y]\7MJ+Uou$L¸B[R\ikLk5()ǃ&k1 P* U9F<o|01{xck\0bB(-R`Xx.qxQ4UFI<Mfv\nQG0V4j4rkm.0O;|A |j4j?~2"*Xp"isaIKfj7Vyy8WQr%\Kiu,q@ع*roFP֔w,2sΘvB;ϙ?͠,ZˬS@^d!HT4h-\J^H}7pI?tO+펚M߫NRLw458Ff`$e"W j\-X`ժS si4A^AN b&,"4ٹ6{8+`dE E"A4Z[RJ`1 "Q2/w^>v!d;LcO T%%u"1R2 {}AӬ̥.EԄ:dR ȍ!c\Gkɹs牵9LIxRV+g)XRh .x)1 &FIHx<u<ƨ!LPqYcւ!>dYjUpFJ!b)ƀrk cƛ7|O>|ZĽ#RGLLc;j( 9 }ϥ()eI./^vyisE?p\\XX j@\XXa,J4+K)8N#Z%iőHRTy^ p8\Zl"(덶,ݽ0nMRmA?=_CPߗe1qfμI%Zr8z|7h4Zp]#PQ!Tj6Ȑ0< gF kkjӨ+՚5}q!hq={\,b2Qi_xi=gΞp>L(vLIVQ`%BJ5$J1Ƽ% 7P*R7#w;@8NmAk=_&9O߿!z4:yZZm7;xuw7{BM4 'ӪFC0jg`(Am )7eFJf[j`lR$ Q<5F3Ƶ(@ * K^XY"JK4Vk淖ZZJ`0-B#XGi&ƞN&Q^8$yaˌJe ɹ,S9(fn7AjyV RM`fn/Ûƃ0'N`R+i!5X[ݭa[ݽ [4ɒt8FqWx.TݕjB&q=ZKeQ }9ߋr2\BK`ja{y4*RЬX%ѕva*,3ʘ6EƲ(Y4Imز nT.SR8RrPe:I;Cb%Y|"[yOƓŕ k`o—1-HmL2J:$zljٺͪ'8EWpkR]TtƤi꺾^J,*M) Q8}}O; FӨ7Ө^iYcX8G0?85`\+'Yb-lw=azan,"Zh{vC"@9ʲj7թqqp;U@_d'A-Uz8`g딋#O,-%Q*bs}y׬x) ZdQ6q:,RT,vPbG2 Xi"]o0ΘE VWW;zEbwk' 6L{pƙ2Tư,/BlS7BfphJ߃Yx# p\hx̮m5hzut{?'?zj*+'(&n;i:2f0nmh4Z5*>ø<1bE!@`@DZ)^cQpiU,TYv8Uh$"Z>U nFJ+DH.ĉE,Ɯ /#c= Z Hʳsm;Ϗߺ/|E&R&:>:mIdf,iMF/ڽWt[xdS艦zbu%ϑ8> }GCמ:/T GQLGѬTUl}t!KmeAВ\])o~;͵rIkWMF3!onEq\j`"q3+fMČ-ΣnVew4vegq%WABsaDA4^<;&DzR @Z Ǩ9LkLKuAp c ,<2C *^Xu?|ЃU0^ QTfq\T3u|-=yiJ߽{(h}'O>5Rib/F67D$"aݬ"cb O3CS =KcknYjotu9ZI{R{Qeuu9׹_yg@/,MF+}K. DR8_Vn$gY!2TA 溉mى>ɲfUm4h Qjsel>!0Q(yW,(c BUhG5ƘV$ - O(K"TzBRpԢ@ @?񇵫$:㭭Qܺ76&F?g@)8NP̚(Kۻ賋Qۆ>blRVKlkZCq ~ x$a:k(+fSd!QD\d'DD[fQjcLHY#l:WlL&Fq*ml%n߰h%0 FZRKy7(B[Yӎ"MZEEi|l>uk- :k6uk7vGI|4MT4E4ud;ۻm;DWA\gC]V^k'in6DhHx`\44U"jO]2I @Cc""k2 xhk"ƦXJ)B ('0(@"(G{E6ңy}M999{oxǯNwnmMS5XK@ވ8MbG0+vw AUln4O_ݾ훀dhJ1,Jh&&+?[՛N}bfB!A$ B@!(RMNc(Bm l2YβlU&gh j"bo>|щ,T%@"L#绷oTU]Nkzl2=hwMT6wtqt>(Mٟ_dYw>w7x!t`~}4t7xW=vZˋk&@Da@}C;/r䂰$2VGJ:faBTcc,n*!5|Z֎ Qa#6Jpݺ.@5M:y|Nni([Z$|<'E1"`'t>==[u6H˗Bf@q!˽Z\=^5nzd8 06`nUkE{9AA9A E1ULJq"yމ^JV{onhugg(Nd<(srXUڝEd\s?֡. .P<{_ee]u[[6_ .rͫDI4|pnC!y+)W+Yiq{zRCmh ѐ4Ybn'qő[-E@i1)2ԇT& IDAT nϊ2ll}{TJia  eU?7(&eXt; B297NRn?tb~~r9+(U;8=uoWPP*4k‡DHD9h@@hxrBVVU/)6 ,jBGrkRD!($Z75CMg׮vBFiG/^N[ *ӧ2+UUTMUi:o%I`XQGnܹšyl6͚|˪|p8@>M4MVZ k9H(B7 y=K,,!8L ]@JeVi_&\\V P4B @bVWU DWy\UUNAl9e]ճTk]UUw;y'SDD'gdxqȚ/_=ӄT]m"e>[r0Cp8o*tޏ(0!{4ѯ3"@UP;WVt‚"`(X2\Xuh[g}:__Ez~iB!$Qд0G"5:\&7B,nw#e iž\ b}{XSOf:ӱp:pyc|<:w4.ՀCBPw3e98-gRIEAѪΊ{Jjzf[[Ñ'|ק}g+Q,} ^ BjAM d5qTse#apü+$7wvmjYŝ/^߾}+"YHLg.keY#CEkkjByR)lf[YX:&DY\(,}/jW \5x,e ^Uii4ws hP 4}&5zM<] .Rϟ~BZpr# !*%D"T^'ILǂ(C8Tss޷L.N7<]]Ez*@A! Z /ꬒ30 ڂR,4KjEHrq]@wӻՒM`!YEd)WW/"4>\ A_SpMKYbsA&qtD`@|nl (a!@q(JP@N2B2Q\hgvn"ɧogIqj mTXumSF0UBh:bv}1^}'e (_T%,JXv؄e+!XLHS'Wk!?-۳"kZEFnZhDhu4jWc\4 C\jM^u% AX@p$haD!TJ Ih FR#HҤ!h`mwZi_$$IMy2G.տ߸՛7{wQ-'\$N :3Ѣ)@m`qtV3Xa\6ȂJ.5[ߥ׹x*oAm(Y-r4k%W];~a?Qno3 PK1o~Z򦚏@g$`[E2Vi:Bu5c )"ml믯xJC-|0 QQ/_;9"(5nm}}c2y|<~:G$4?gz :A guF5oAPY#kdL J]mhP5 BV'A(EEr@Q(?e*F/MXj7Y!,@DZ(S (dp @!/L,DƜ"4mZ\Fq) "YUe ػqVi:%Z:/occJo~o[q{`Yo~L* ʻ$Y}_K擳,fe5S6`ȚKC "\W|kh- w2uDqa?:0SD{ jvL5/q BXɊJ VHYDCDvY6Y82YDrAZkGe]EaL&a)Ny|w'oGϡy,Nlz?{㹞u/lT=)x8،2%t#j]\pQ*Kԋ!t^b@$x+ K sOe]>[r+q] (f0Jף5ڻ>{ܻM,$䄏7A" S)l$Q)B`PRi#6l@LA!Ң\&v?&KyMg>ޭ8NLr;o?Onѳܹ㟧{M;l1goѷ=yp?/|k\ :L돞Ob OͽR? "᫚fy.{F(Mׅ^@ */r7zaԛ^:tP0 bYU=,$-/B+Wo?L e%z H;O񘛀1>|E`{FCWW Vg5z{# jrkV*JvGh5 )0\U\ CA:!6&keU]+[vݹ^\\nWǁU9=@óc{;7wjl<:'O_]~ѽ㗧N]eV~rQoS:(Wn͍X4֔ UϣjXQJ7x"VV^pz^% q`MƷud2jeIDkYZ54! {-;{B\Z/ ipiz)bCߣDc|6{+HhE+!> *ah(JA(֘k[[[Q")"iv3NNqrCU4 V_vr2Nώ/?yQ۵'yl$꽷{Ygr<JqUҸ8 wF^8T0hJmmeܖK/UX.]`xLb i]e%>p'~B6N=}nkkV&烍mBuq~nrpb12?szS-SrzEvzVPyPm BWG>$c]}+-R,W$h0λMRT]hELԄqHemUo7ktΥouHSiӥ(BJcƦG!hDi *( qdZyfw gy6Ylڨٹ 4RPw 1q6ѫz܊M tpȕNHC"4fxj(WJaJ1T۷񇳺R5aQ{g^W&Rwߪ߼ۻ8"(jgCPPdxv{^hXezW AvB%'F @ <B QhJ/E lXڄpn{rE"&Ӊº)8 Dd T|M-oG[%k6V [=U'1V SgιbkN^}{&2,!ھq{Gis>L'm%S4Q%}M=ARc?b 3p@Vkv( t4<}: UurZ0=;~R+ I\Lót{ڨVK26Ƃ꺜3:I|1]U͍Mnf4jWf,ї|01IKKCBǀ@ &_K뿋%i,JWAg*9hVߴV @9J[-ι8%TBn>Z(gGk/_]&eu]'CR6Z?u>8ob%FV:`81 Eq d1邶En[P ڤ.~Kgon}U5m811^;,N!()Iv/S ˠb֗XeaH8 ѓG5+:=+wHOh/ZE;ZB>{hX䮗}-;]|eJc)U4FF,K1SA `9{kqe1^}f`~kz^>\]H^>6ҝYC$`k_Vah{}hL1AfNblkj`Ŗq%x_K?*}jЗiENwǛx:[Dgo &~0 WݴXO^: 5RCE"lil8M[IQVE:VF(Jb?^^nm||EEtf䴩ֺjmmoMSm K4;;qżGQ iNy}cKtX碨niCRBY֭trgo;'|T>~bkx:I,ND:]#xcx2A=$=wn] ض/ueJ+khD!̵{tfkeV>Vf&@+ƫD:9ډnpIlvZ1٭.j4N{r [ Jڮ_+yY9O Ud:oy;=3Fn'6ب g!x"@E@<Ƴj0-B:::Q*Nc'"1o˦͑bڭݒ_5"L/+E!:ɽ{izZMx&e-D:s7DQYL(X7z|4q/޹9WU] ٳGdmM/#BTFylj\d)nFD(dMt>=$V/c՗t|?4gT%Ee?s1<2%g 9GiaA@X,K1ִxFܺYfTF1,E).K|2z|f]qO/u}cMֶ6 `T}Γ3AR=oodoi惖\~o䭓IUOAۨsYUcSDi;Œ"^ɻFhE?Db \,D|]*:HӒ B!DZ+ -^ !L.Zr+p94Ѥ IDATQf2wHƦf2i%B W/.?(˷d4 %]_t.jRyu56>Se%`",|\1N?xp!6i6s. 3ƝO}b#~R 'cÇgv}~p8YVvϡ!IUͪmSO0}%z*'Y3*#f3o+7>%^ Rɧ?ݷlRH+PilNAH\Ewu|6=Y3J0%.qCcy|tTDgɓȵ}vʟ83N b4vIyp2~rp*cj u4UQtxZR3/'9ļ JKVzfL'٠ݰY %VKеssL4 "R׎AI!*DFуUvq88DQQd\}цM%(UbӸ֗7}BfrW76i-!h6zGkwr=Sg<WVp\fo%aA/* Fl6 kkN7Js1\h9)8P<ݛI6gIޏGN; :ɼG}5x4Ǐd!#s^46DG .9mFDWez!6?QU4h8ÙB$Yӄ{7ox!9DXC DDK ,*n`R*Z!ټ?@M|xWڿݑɸy_Y3ΨQ8(!Ag/íw^VB|^-,~kMͿ+P^6N󼳾RQ" q;}'IijW_fr6lp9Iڝz|q]OU̻i<"Yڵ()n#𠆂:]WRKl18s|ZH 9..Ђ+كG 5xſG?5YV+WUkiE Ajqb-yL$b*vJ |5:/k@Z8{T^(g :8q!ަ(=` "5(ekwBXp,N м^0.!ƙZY{ͦ-.ڄL pj686ON/숀ZNw>q'Vfq;O|ix˧b(°L!˃E.VxЀ6D*'Lϭ1v"Ζ9 ,ȦE*12, 4 ;IӪ!.NWHJդ $#Zd,JhѲ3NhJgᴊJ{91K:5ȓ}/u|DalV*}bpzZodvFr^=*3S;P m0!bb\x +ǁAB 8,LunRD*γ"$EY6`ۚXϦ3ppV?0://Fv~ pVR֨<(ɊZ5-CNIN$ټ^>!iv4mR*]isFG e'|ۮ7*2 B#;Mb爭 mz(Jc90 ""RBB`<\Of}rɾ{>|*M7|Ñed]uzQgi{ ^כX^ak}TUnߑ8HȔ%E5$ I o1-H^ ,qdXH(cwWx=}ZyKRqPS88﷿akϟ9m#(%cZ;cb)B4f<:}y9i{g{mzqs]" (D uQB[)@AH:5<OTnmwGG)љ.*amQ5?~7}"6B Jb埬wC.sŋRx}՝쳌,&BL ȶ߹V^nC-R.HQ0!g*DpzqK̜Q`J ֘ڻS(JjBNSi=Az0F"+B2K".R(5W/Cw՝CD"#1 D~ ;α8Aj#P2m ڔf>MOZ ,'f~v]׷?7lఞ`JP3̴>P:i2KunJp@>y/_ySeSQ9ǙAS7cUJ"o4ՠ(UJ._Nf95vLT([]'2W?}zsR|"TA܈rjs bJ'r?|ku3 0D7_}pyM?+I.9<:G puoe0ǁ09Q=13WD W[d=*?W(;9۝Dʘ([Ȩ$@}-c%~5G-*B#at٢`D!@AJl2M2q$@Q*D*S[ϯW妨ENsRa`eL*v! mqis~g-N\UhjԶ,$ȩ P2.S=T>~ҫ1!k;uotV׉}?yo;75RN1E@9KY(S ʘÍZC@'b# &FXGFIz<~l}iXŲ~4aew}woi⤙7') ϝ9?|B|qÏ8AA}L1 |u"DV@P̔AW((7[<%a pKu > ExkY)q 6WM;ik!JJJgKIџ~y>8*Pzs:[~תJ#~'O.\YR "Bdwn(0%„SJBȜpN`3J(#"!bU)m`{!cB4tJWgdN/v{xngT:ysJ~$kE>[SNEϏsAĠ>ZAwJJ]V8n1+(  ,*YGG67WRWޜ۪y0aP S/j4ddJW3fB[լOOӿ?֟_<^ %DNPܑ_;9;ߦM̂US4ַOC0D~ՕR*Z2 )|y i a׍V+] AD1%$"d7 ǁQ&kC( @UHt8wuxQrx@ 3.?S6gnv(ڋcp_ ':?4ë_{}D~1wJBb@}D$STZĔ93!$F< !,*qۏ^z4tlQ.Y]_# PLK?7z/}W~g_O?O^9n0O=~tw<0~uP|]/DW~ZnRr܆EL3{R@ɥh 3M $ݩ'H.U*B)tFxY^ 3V0xRF.T:R鹤)ϾtqhpL*(YNgNO]K?S`m.`##bksXq>9{CЅ@ 8'ȉL6e E1[o7fytD"3VEYp^*ePpE%/77ٮ_s9k&umR)̑752ѐ ^ɮ]Wnx/򣉐SdNV3 njSJXUfFl8gb R2b'0ʀam(T\|Ym鎵 #$sMЎ Kub?o5n?8w/Mu3=h|k 0'ݿU唇o&j"[) 0 2 rp>~DϞ=11Ѿa0lfٵ9U5Kb?_V=:Nl }s; )YJ%]"z‘D\_W/7?o R`9y}v8()ŘfwMjI!P n[ֺ Nme$`ZH=szR/"BF"G2$ NH!b+n2MH!KK(>)ʙ-@V f.U/@dAIrG@9f!购+j3 !DI!E8X~{ue9$ dR0b1œD!^?ǂѺ)k%/}3ݛ۸71\*|JX 90KҲ ܾ!!Dįo/_3Ns'J ybp.fꝋ3{7w "V#)oaXi0Q&;uR?.nRJra .>?_}IwZ @T@(( 'Ij% Rz I8Y2 1b2jt3q8EQ eM#qj B&"9 4* .W^|㠠 Ц*kB1 BTBBDFA)ɼ{L \ a@&kbt%qbN6a ftU !p$ 2x7" + oUU4@HF|}!+%!4)Dqt$2l_7.jIJ9Ő25ƸYJ'_zw^)|{yQ0L~]FKйdt!r&6J*I}U+CU4 \ed4h-Q1$1[p(:h *fOB(G]*B;3EaO20%D)s78]4B6Ry81C4eꪌ9w}_o~>Rf{br4N no* B8!@ibfR rn JB4hQɘR"j׶ "ZJQD eco~%%E7}J̌_&cΈ,]HDY >)EcLD\Xm$0q& 4"nP[TZ)'e% Pے֪((;dS̩g?c{8 O򳦲~MŴR>,~,SAIwAFҌ"$"eLMQ u]jܚeU*ID 9zD ,1ƔIKA]u-w< .GE`I{o->xXDuebZ@JH|)R"$)ܤ.nV|Qڣ~CuSem&9y_L93NO~?S#+mI1˧nEYf9cQVjL,B1sS t!38++Rg3f`ZM'u׹9 je@n^R#HU .{_>'em{;;d~$2d uW 12ݭk꪿ lV.8%&P s]!y;C{ %@RPrtboDrY&*ҫbT]bNFI 1Aat (`B< :W6 8D fЃI75$N \NbQ dlI7;H|}dm8?޹ݺu?~VP%*}~ ]E3眙(S9}X݆1>eEubVf 0 7t-6}o\XQ .ʅ$, ^vo\,CY?lq9&_ɪQBcQ(lY@RY ,d"VJ3+TRua[rR5݋뺪 V["J)s9e Dʧ~_ p!_FMl;MطX(J!Ko*NaBT1 N Ŝm`LtQ/K}!T\miGBXMUb/nR.`+B !.+rSzn9Ό޷C ˄9p;0LjǶ/4$3i||8)JZ9ƽK>p tb /"McʅP札)q!5#O6iehd' Bt@J1ٲ1E!dEifD@Jh! à!SZ9vͪc}YY'wM|Ye IDATE5&3E΋iCt'U` B(D!pƦf$Ӳ^ yC j^A1bQBiRB"d Y+~MJe~WjyaZdeB;O)sQi>]_Rӷſ?ln$N촤˧%SDqgS , ʛ0jGbkzH*<v(qDʅV8* x1Dtل#. 0)vtVgu7Y'7UdDy~F$ĪJUY圄TqJ0.޷z{}6Y8[Y׻u> g H j\wί.mǢ[*BEdeLJmR`J]BȤ&BBtWXmJ}DEewk1d2%Pg"ntV3ҪˈYI97x k2"h?wO%gB|']&a? t"WBg[-m!g3C9ma?/F򦍓ٔoBHau֖zq9PrҘ%-KӔBn0<|pc6-$*IBi; `3zb?~as¯&R~<Ѡm6ϺH#{wU4nd*) HSBF!ŶEa J*9FhƆ,nV5 [m4 i#Q!f` T>_R(*E10ˌJ/'),A9쑊4ԍuit1+B#3c멩O$D=wxyY')K7};fcBVEڐst5^ݮ*E<RоqTVx;bf_4 2ss*!Ei@YY6Yh)U&d`vۮKcTNc/J[CW7ZR 12h:yY!ލ aq$!b빨RaYQd 1Q]O޿|49J$+@8U \ˣ#V~^b#a^֬ІCJݴFRe?Ҥ֍Ua8;*?yl 9,w~qS͵G Q* o"旎w`TiEE,$0d ISƨk[f!UBLJ0=8 эW񽫋 #nJYZ&%{q>G҆UKk!+r^LwUŔ=1?VQj3qPB]LGKk=2H)r:%?mm߇ʜ-fgӹ,:"k&`%.PiiLI w2 D:s!0kƑ,s`WX.:PrGj b`T1뫶4RN Jͤ* ެ;-̡ P88~W6A0(!c 9 ]ڃ׋MF1ڮOE!DgP4.-sgžO/}'1<ʈ0DuJg Z[Z\EQZFf0m7XZ&umoK )ݴQ42#ūuxΔ&@ٺa*mޱ]2Kl׷OW\nJ|\9[]ͪ. mծm #f1w{P(tQ>ݐX*;/qLә C!ma{smh*;»'s).I)HD~1}~&X],88gxupY oZqK,oכIeM[oZǭզL'F7U 03ʞ݇)H">z4{iOM* (٤pq5ٹYE'ɑ1h abIyd!)ʢ8>Z7;nܔ%t\sa>Y?{:u 1HoHUY BRkkdV HRH[T֨읗y !}&B^o@<2sLQ(rΥ-q(QJRU1Lռyy̞>Gme1*(BD-JVٺjZ/׭#HJ׫ZҪIz>x:BsƍL{9btBr9pu3 ۭTYșs+1Y|پrV;=;WV*ɓ,mj$}ȫMlA>.&1>ү<ѬZ{GElsaC![$`mua>+A5zE*ӛ$4AnCׅzדyƳ 71 BT( %Ȝ)Cܭ}o&ո]I,`,B(ia}"c}f9'"; 871D:]Ή^r,_uCРʙa]ϼqL-?èj|GGK.?[T1_:i1%'K-4 }YT)Jvu1 4-I c2ia[LE`m]aYTʊ.WI9/]w,}'lϝh[&$ʲ f23EI) um(j5DY`H)tqyTG59y}|C=+7I4tY?L1\Z1a:+\)M!CxJY}^՞>,bhljs7jrݜkCZ5go;Ԕaf7jMrmb!ڳwGU;>ɳ{QZ1&e#(c?~' X3:$iW[YhBSG [ҽ{"ʮoa'"L(~u=a~@O)j[;MU9G7ۋB;0XBJDwa6v:_MCI``*#B@.1WK,vSu(Ǟ8>:a1[=:TV+tvTÔ9%G5pM*m*|i쇳EE%Eѥ<<{%ƍbVmL>~t)J)(BGuAYfNb߷ӓy|y)J(L);?Zk4 ĝӫa4R2 1b\6,mYt6Ie3ɽhYU^]<\^gu7..- Yt>ZS<8+79}(Fλ˔i> U5"Pd O;6eXB8(%r)ϟn6mۘrz Aٓ'k|F[F;WU@k1qq?:?GOg~]mmwf1h m덢Qq}MgmQ8ڼeawtdzlB ]=!zV$0􋃃^) hkɍQ䬱eQVYf Dtwc&HL!&<89ʀW7C9/& .CxvHm{x;- Ri˂mYƤ80kׇXm>NJ(7@$_nJMaJ@2)"Wp~6ǿ pKLեQΟ1Q1Y0XSe]JB˜3_\]ٻo$ 2/ =ޮP EVE+۷Om( l<jmnv}J~#c닫`5O'bnZPO PX?D*QiSp4!㺬næc%V>z 9뭛UY,zt.lRJaf:<ܸ} `qvCooҚ;J!|:N T].ɺ]!{v#ӛK|zo}1qULP哳ɾiS8 67cF5jZowS$A1RHTR@L43Q1#D20'nq,N*Uq q ~ PX]F ct phݴ)' +?GR_<=9B'iL޲qRuќ,gn{eыm[Q>}>p8FUWx}۶LfՏy6;]۽уYn[zdq&#]BS7m_~8bB>;2ɏ}oz.aPaڲѦBT,2,R<]޹(=e ;2X)! t%b(qR6hÈݍ@fVϥT1EWX٣htvHIFjֶHcJiخu2J[o0itȮ)tQWmyYOWƳf(mSv>jT˃If74Mv^cnxtcCG'ܛvUu1\kw]r]i D"F2J@P'@ h@SW !H $7Mr~sϹ$Zw{wZs41h -3{V=5`"s mKDuaU䖘f6; yAȉVwsF0d|xd+5jh5gmn&M 8{h%>~7+nyseQF3ȘVgniϞF)Bdʦ:U/\9Eyjno3OvWϱ\;A QxQ щգ[UTER:F`CuŹGCJ::*u[lBFıR; G׊oFFcn9\yJGX'vyĨam_ud,Uc듍>{`kH6zr[]X,.&nد9W0ۥ`h&E07/R'rtMk}ϱ鴳ubksk8[kvɲv,?rJt0!cW:lm8XZ,dnNgWƮd~.兹sZlk[ F3an62(e9%kʳʕE+:0c]ѻuOVV΂ǣ\3G)cksyPG,G "P.M#dM 7Y6qdLޘH?oow0=joR入GW{ [Rׯ:-_Y={ZÂz`d8ol z|sW71)\Q*rV~R,I1Y6oLR}WלK4zfgTcv4qA?6\]|M7pWj-+G#o=x{[eYhþ>|谻ٟLf+ pnA:X_s1v,UD+HlnҵZ͢,6{E{+x4.Y++1sB\)p$ɠWe97%Fđ{E*щD"ڝx/^ª ꉝ*{dIќ?ztco FQ=1нG6/Ņvv|}n.?|dHYuB++<6Ui(OK+\1VĭfvYM ;1 6`j[qYLJ5vc}ݪ*unڿe\v fG#gsSz؜PYƼuo:M{6Nf}wvY8@ IDAT✇A;t*r5?-&7j5Vq?.Ys_Z\{[E7x<3[Rrkckkr4.7f_hvKvXPya0*xhw0NJ5)lv,0#͵[1\UE|MUqK eUGd%Zh;|`hT`U0p0X Xk•cY]?{]=[wf(=gb6نVsb(;8MYk2;QǺ5FopށљN*2@v0t..6F%wl5}*,N:Z{'f5iΫFcsolx0'o;VU+(wL+fP&ٙ6YmuGD[ZW?ѽqQx_ QtYiB4{#`Ge{;>{$bx IQBx"ڱ8aQ AEDCqE";ޱ/%y JqJB&1Q"Po 1ɤʴN O 2,NT qX"B 5XzrڌhV!g ɿCԁ 11b)NT,!^`gLDT;bջ{5TC`つP;Yq!g;F ҫ 3̲ HQ~P5rfָ*ǽOAByxVTʚ "4J×+8iHv0ƪYwG=ɸpJ܃I $`u@a 26ȅ|p[HB$DRT8&TpCR2L)t\!A9Â@^K΃!d@` ˭R0@yjRQh Uec'-A(B^4U *UOUi#DY&Ԍ$` 4NLH(TӓSaTp'-g SrAհYV*HlfzCEJ/l 8:(FkYe↵wU!XEBʨ UBlA`^`C2x.0" 1!m,ߗvLm[r7:k SeVXo U~ʻ1l/D<=JQE8Ok8(*QlT| ** r^RR0V' R2TTTf0g/_6EZ-$t4,_4 Ɉ1Ƌd6GV4 VJ)YKgIT8%ɢ,3LCg&ȿ"KD~ -68=)At-@H $Eɺ$QO|,#X u*&E2HA)I'JiJJTL*?qJr*c1{o̷&3)`)R%1DnQǕ3&⩱J.ZA-PKY|‹ pAI`tK" TrΗi(KF*CQ !^i;9n$ |sX/kL |0V@ ^@{2 */+O*UX@e ǸgkkTxQ)SfQaT!A1W. 5R8P-LH Q;O̊ Z$%ttu3ק1>JGdA"0J& cZv6\ 8 ̀D2Tuf*B)^,P{FLʉ;L,KښNQ G(Hd ELmru. DVF <؅EG3j[S PJ=rI%T l@H%V#L0Q QZFD`^1!BLR*[k%@ɰHBNT{ ]2fˠ3`f䌩o YމD`ԍY:0=ʣTQU_cԨZOUB=EG{1dY@VŇy\6r6'<Qb Z@:5@Œe&6}$t%65E3C$"0 ݫe p 1 (5Spv~dP=AL(g&,z&Ruk(e1yUYVB(@*1+ CU$PlA6J8y bq1jă^4I (K)My"m(Cİ`V3^V% me{YmxAeG55qZX5lHWOOXTawV)iVS *4 5; 2paYKY37yf0"c`3 f` hS{.+}ly]Nj{yy,-K+Ҋ_A3[ w?c$'hkz5 u]^y啁o o|S~~CC>H_&4I8xE22ndƒ14{?<3XJmdC$ a-t"vީX0-%B׉R 2zJԋ+5VleBlK7E]9!UaRO{fk5ok, [:thnnNU;E]^\pŅ^;OU:`yy9#///#}xx{0,N,S0!@$+^QX&2pMfݛD)TO! 3ZNz#(1Ha&})y%B,2ݕih O %<૎Ή=TZxgn"`.ҩ@#`Z)+,7r"m yUI^]ifEXE[3EK+M 'g=:viO귏x#|#^>*3J"ii4jJoc|O΂ҪRJmc֐I}ЪB셦Q2%DUJQp^ *Q(+П%5yZd'ea-6^JU ` <>0XNWdWR8wJ1%<(ErkϒM(b$x';m˴k XQfUQ(1[k )9m\+ !y+|t"֫ #⸕0YCc,q”fDض d@dVxhA/r@LٗH&^ Q4EL0 k}+,։tfN zʹ:1WVE˪+p-bRd*BYFy3AO]g5!8)ϔ a 䓌d!X4K!|tm?U¶ޞqP6{YSP(՟'Fƒw1Dj j6>b G^O#&F0&T*Jԕ,ԉwU)5V<6ШuعǗI쩪 VT J!bhC.3Id9@Rp]XSj' QD(i87mlI8,`" *yi?5]pIJg(DsJF/ * Qjh(1SH$Dw A fӗLH\*@d joWnC8̇?oάj,#x[iFUDKj"T'38, )Uga*Aɉ'@8U= sk'SMTbF 23/)ުBi cv5 Ӏ JTqnNi=4:S 5m@_,xt AgǀT,ι6 B b1YC{2FESSAk`Z#N+ (zÍjo~ sRAp_jbf]®K t0dL\4$Rvr[^" CdL*LCZz&V֒@H"(JU;f(sʔUUB&TO\oUW? 3wm`0v{{VTY댩c"ՊzxiA֢X8GSsZaMۄN3,j% Rɻ TJW+APmg it*^z;2U4}MjP2]B/wFK~?tDTC1Z{ǝw~n逃*0dH1^c =A#`5<Ά;3//<N1gTKբ?ĉ7d[XCyd;ѡybB8dU(5=8U{4QcD@5L%g'0_YԚ[|i~%¤&&c0 NEAơ^{Ep($ ['cl?|}^ D"22-+ҙx.>nn-)M u謁N|yΫh x "cqw:OӤl>~:X^)iu&t’qMA1~:HxWu_Kz{Ož7YtVB]Q`f\{]*Jٗñ Q2Qgw>+o E&* lXь`DN>/ŚKuݛn}{߇?a!t6&l'%hT^D8װRdym#X׿'HRh >}]耇ZOf׮bKiUl,Kg>󙛛;iRHo/}J'$p }fT "߽o/%K?gHY>\Mxo?bCtP*F9x!&U{e2J_A0M I<$6Lkx'dgy Fz0{fB(S,AυdOG?h4:eYVŏ~3I>iVWxc9N0B IgDwL3>7?=jϾf骫QOP-QLg^Uԫ:8x([c%Oq`ݮF5Ň$Ch`M}uٚ շ9-T!0a|]xI9eY^q_p58CryPUlQF7J^F7 ?)&R\ZӁ9TU y 7tPoa̽7WXx>M+W=ry2׭Μ;TjtNooK1#z1c>cDך-fZw~:SpnguE#I_N1?IDAT -\A{+FW=G!^d~jQĕl4_bo9=W}\ٯ܏d˵g5. (cQf"kGD'_|ܚ'c}!_1>β,Kλ8 TAAY]_tE;.D ~GF_VGGx+^L&"g?_nt*O7|7]Pk?ځ]Woc_;*Uutr#v 8FR &̏u"Ĵr39p'>ϷHe}&{KL&w_2hݼ~re83Ń q($_DBbqJ8yCqT6JL^Wl\v{WՙgYeK8U1oho.f@Ǡ62djb&iQtnn. # /g-"V+|jDps]uUCgl-Ѝ-}t_{a+~VgC S_Swiszc:ϣ*TK8G^#y/'B{[{KG_'>_unjG1F/]^zV:V@gtb<)5$Ped@xn߹/`gטw_|qWz*@!3O/>PKcyI|FV7c=__x9`Aƶ_oD^kہO^_5&jHBxT\jm՜D 0ၞii$wShwo{e>?>A3Obr~N^9neYFCǜ=$5 @FExP  l UUsm=_F[ڶai8:k`:&ti'ۦ ;oaTz/Gzl*=Y^wu{"ʲo, u]vkJn[Uh[o]2uZº8av `\ds&}U^;Q'Orn6Ƙd27 `#V>(WG[Ȟ'^9/ 6i "1Uf&VrtPv@[ kp"ޝ;UzՋ^kh?~iO{Ӟcǎ5kE/z+_p3qǝfQdgc=-})>m6:P<ѿ]0{tLNRaee%ΝqoX7U|ݾZh,$3eo.S"cdҡ3ՐΝt<{ p+p% o/e/M7|C$#;U;;X˨Ia5<[w}neVAf`ܙ{ z)gIp D-{=W^ۻw?CW3眻+vCZEАzɯc UU௾d>Aᣃ xwUvAWq*j錀ٱU5˲--<{[ͦ1p;%_,)Ajk"PL_y^:OGW^<=7G кŪ,1A{\ em|mcccyy92.yqiKHΛ[:vܴz4l0-܂/| 窪q9GDe `C,ß秳\5U:83Xm?~wm:vp yy7S:k@k[]uoZ ~3vb%EzE&X) 0NfOSCMo,9qXmU) w5soLofwZM*-'Udes^y9*zbz+pM_G4%P/[?w3`C]W^g7l:ésݫudx(_|kg3nЙM5p lf~1ߏs/5UKez y *m=l &r _mWlzL;/V H{ ߺ+:`pw}1%pR~0k^k]jJ>cAK_?&%'gHj%gG^;84^`_ڬEJԤ0=G^Hct$Nn=gPBGc#fr^QcE ~+Sm;\ԗ{kҎt>5ʲ_ ]/8)zY~fc̒BTtKj</@>c0gY4fjELa<ͷU`az}ġW4c8DEF@x GĴ+<{DD{򕺂m-`4d-*1>{O<;f. pT[?~8<\S9`3+159cᒅ=vmsP{-hͨ\) ڠm_)v!?Ӵ-:TpQAh&1PHI9h>"bG<ǪZyА6<XQf&qB .a3!A5ڹDȢ\rB !Q6.D Rh/TE=3t1MZʬpc.}^)moy*>j2T I8j*EĆI؋Be0|%գ= ߥĿi:s^߭'aSgNi @xz ܒMfvR25ٓ5QcHU3Õ OO\|;#@)] \Hf1غhZdKg7lh@Fv̀g!xmۚ3s?XSӁ쮨Zh1&1heplΨS%ޠ1֫z/jpp$h䠓z:RDWÌ?P``t[0 br`D\DR\gX'ܾ% ePM9 t}t5K>M+V5)zC5CDKU`3ЩH(YN)WN/Md"mcФG&4K$DrKêB]l,\[BD9x/j>ղau2m @R)EH(!N'Y TK sO&Mg ;phnC 0XiifWZVR8qNyJs!)7[2D0D4 }1 &gym( D4_A}âxj-^YBep5j(xjX>Mo(bAKb!Lݥ" L! 1S "e5e 2d#QƀH@FkݒB1׉XRHnH E=t?WefTpI Fb^B>ݞ!(Pb޶3!D hQa‰ĉ,J"U*$Hؕmcsm\ }mV&&I@fh @LE ᢇșX ňT VH$=܁SȜ13sTZ'Z  &q*>j:2HpK]z*@0)TiNJp!U4 eeMS~ 4[BRB7 URN0\ əU=TU*XxQā 幚}0@Yi(<,B_N7iXkto߇Ҡ$&AD=\L]J0$U_VhCV  35uj!IPV|EuJM`LwEuPk=EL̘vp ~ծz~\Gg.ЈjoSfh!H!P5v2 ^ۼCx2DD$rZf %Jt&d31Ǵ!㖟=B7!jv3,@).i kgC}a`ժO:6aZad⚦/uU:pE0 MGY;Tūw*3yggzB A pY1-| dfcR1ڦdaUH'}CB>k;fG#탺o[z_Vm)'-lx8kތ"0 N*~$D@Ch9&4XR)JC0ş&s 4K.5 [&H!A;M8ocw4Fkp:h_l)< uRJU$ۻШ,{UNNq…lEf2fP" =D70 F'NqB1.2lGdE w,ν/tZ0#TBխ{))67D$"%ˆ)$1@[v 5lP9LH:y H~[Ӡyۿw[n~@Rlo|_{2TDdbbӧN:tԫWΝ;;w*[ # IR+rE^\\?{{ӿǞ={jJe$gϞ D~*[7+wxTNr.K@KN@JM4Zn!6B#"LF .$Mnykl:g_55Zbu eEImuAeQ("& 3JEr5x i+䨶gS(p(<|I} Oޕg CFUyƈ$KTl̎g{=ՠ 4rՅ:Н~vJ dT7ā@D(Me{<@s5#sBITO IDATxw|V?{7 IY E.ں[vVkZZPPAEAEII^O$ϾI#BW^y|#XXG3!~e!3-2wAs8`j )h@xA+s#oсp Er Ŕa-jW`Ko[(:gžE3>+ Kf.AdT?: jH /2z1FD4Ƣ?iл@,|s۪}/eOw35 c}^ g2lE7ZT > @x@(\D?RۣK,4+bs1n @߁@e|Kzo XfkK7d*6 ʷ0{@z!wARW@G]8Kq e=οDfvb_rMtt f\GhvPk"4e_7H-S y(ܩ3|EQL}!@xMpxLYe`]n%88~x>5?߁+y"5([t ༻脦 5nnÊ!;ARyz5Tg[nغʪ y3Q_F0Fdv+~/o,B9o0K3?@Sog(џW}~( j6E q4U"> `™(\!OK{J?c4E?@@ 5crS#xmԜpZ>4~b ƙOi߅ Io@H {16G pFƩnG<[ljЁb]|;@z ^u! !9' d N<ʾaV]{~*Q8M8~DŌ*&^b?%Sq+ٰ>}6`9w8(@l4,P5??y0 4K@wh w{2Ȁ%=9]iyO@cH)P1~xmGC;^dEO②H(ō_:@$\G0Md%O".ǻ7@h}}S AЁُ@}1iM?pvRĹ_63i>xjJow?*6e5` b)>/] VPsb!8\wk%7b'zWJ Ҳ ~Y0Ӂ F>@Jl|̏aχ $~ U"# \nq)P~ѯ1,;?? -9?@0nDg=:@CGv)@f| /Gjaj_TO wóJt|P:cKIJy+}]9.A,tԢ6 m;Q]9#g!)oAw;_s_!/Kc2.gbl|H_&F'.l` T®5,B>l &Sˑs*q:F>(fmߠx!ې\G2" &tԃTBr MƇd"@I4ȹ~žU&!X+{ %w4zOäzOXsP B9 vМ?nLʥMa~y6?:{#1fg,Wv?E[|y$0 F) #塌 ;p q3 @əسJF讵l' Aٮ94W5t=3 B(xCHB0&{\ODER 0 Ini @^!IPʞ~ QuGCꓝ(MJA_a` I:D Dk3zѸ{b !>R L%CJM!IaQ!0 !$k8I@̇d@h*"$$B-ۢOZב CT:+=W=@l" !n ߘU `bjv&l^ȿ;;{K#,G B jh?3EzoGM[[5*|n^Ȗ$pUHN]T0*۝o׶lRRpʏA(,d tT!C]M $c$h; /ҲcG+ď@{'(0,rXR#.̴ۇM=` oƫkF޶H_1>(:" 0)7Pk_)p$)E )* OE v^) ͙6" kL\1*I~P B)aPHdPJc fBchA,+++,,< KR$)sTBy?{krɲ`P$xJJJTU=YȲ?rz)ι$I/yge!?`!PO?moo?f"A7_sν^_[7!D,ncVhD:qG!FιMIIzBŋvO-sMHgy<4sff'''e n?]wiMWWWjj*I!<''gСǦ1I R`\P SBx`f4+64xwjlO8Un} l` !WM^99OJJ:Ap8 $ ![nE41LLL: HII)..NMM=prӯjw0e+ PJSQ1'8JШcSYK'>1 =>]CQ`I"%(,XRbI"%(,XR28BDG>C><& !>(5oFRqh0hHAԸ>R[D9\>V_'zB@C=u0;( $ :NYa A\NBS0apN ),K99Npu-1-+%&9EUww jVS_Y06;wPX#CA&gysYY XapQ2V_|_}{!qssA[SXwJ)N=-() q3a(lF$3>s$sՇʺ[33[ٖ7/0Q8 WJY< % /Ttg;vg3{'#-lm liGm]Gu)cp 6M6%#>ܳ{L/njkkyFGt1Tl []@`{^pj,lJ)cc p7T޳+5)~զIZa\ ;;'&&9$iz;?{➧S#MAl-O̜ԄM| IDATC'<jUTJLj HH6wdkNU>q6v'7Iߌ:*Bn0& DOHH /ҜL9wt-D_wionKOKv؇eɶ_T7a6+Cب(@'ŔDA4Cdx};l©&;:-ndmFHd{nkD(ءJnlG *5cl;dB^޽{]hSv ;xooMcKGSK1N@?~ΚrAA=V<3NsņaL_9oooOJJ9sy⋕+Wfff\r%7UYx`B\TTtc mlhMLrЄ~xd;5/edihj#HKOZZ J߿po=33L!bŊ>n뺾|O?f1z뭵kxG^~億Ͷqƕ+WB1-^nD"/_qFYVVVVVwΝ,ZNv(f~ӟL7xJjFWg{7g?9y~ےuqj+P^v) 5wRq#K-8,Ҏ?\Q>ࢋ.?yzw}. o駟.IҎ; 2ydBȖ-[N1cyiӦܶmy/ooo߽{ O^^^z_|[ne͚5nF?sJibb,~@kn[ڭ[F+.EOK_3 rthfwCx$#=vx::HloDOgsRhkk ÇLMM]t띝ٳg/Y555uĉ/c .̔$}۶mVVVjv)ػw*,,MOOçrJaae.͛7_|ńe˖M2e,gB+--thX1 57vW:;\e74˧Y.ӡ +z-Ӧ.)))p??&(޲mGiC0C !v1tkVQwq?ϲ7O=T^^^`/2ͦ(0CΘ1fB!]Gdɒ4Xbb/~'xrOB9m43_ҀTUؤ) Π\t"BU΄|ߛRvWFFi`K#9mx鐳G o={6o|嗧<6lB曕^xaǎ ,HIIyN;4gݱc+**ݽv={\r%K]믷lӦMKKK[nPs߾ʿvfeSC~0Jo lѭוV8dhI6oyr,-EztUpu;kwoxD1|?M4{lfEιfzj)4McEix?i,;?8Ɏ٘,++hNX1\o4'"~#?Z˜7=}ۯfj8)n]vCUU]׻Gܬa&{ڋ"tBew\U˪w6O?&[&JX |>crCeujr|wݯ?,:eMfNsrP$+'c- 5qr-N)ۂ0ʹpğ{V.esϽhʩs+jpge쩮 5oz`w3 s}׎Ͼq9El.tסp>m+P% !EC̊hkͱ]0p9.foMffNuuuQX[ AVW9㒮w,tJ5pHv$&gvu41%wl dkjƹ;܏>p gwۉ;%%%!..^V|IJ~$ۙ$KL$ӧiaۭ:74CE vu{ a99Y2UBBa%ťVpsQ8=C;-|tpsQG2} 6QcI"%(,XRbI"%(,XRbI"@@eBv58XHxڤrSrn[bL ,\_Y1Z)FR dp0BuVo}* ~ȟ%!\C . F=7Gn+ApJ}4i 4 lL/^#>?icY4 (w!Z$i_'!#%?ZdĒBDQ@wwUnwVWjtr UM01j|ќs&m-(HNy5SNk '>K@͍hܴԜ,MjkJ͞;ܴ] q-uv =rܖN|b o[\'ajUycedDp|},]ӸδH$V!nʜ 415|u3K 7{mo`ނcN)2fٓS=eki4{%g&9rkkՓ?\6Բ>\ uw73UݾHsYVY k"jg{73Zw֥g'7nni'h#hV^^e1͞;:n@ bsSlN[ݞ&Ԭ\xo|SLp >l$Yhajnnnii^ /֭['Olz!ظqx vW_vԩB3gx]]]?9snZ\\8㌖3ϔ\{'$s3ƀU*H|c v7SBr3J&%/*7 1tNLho'*L?XREQ"M6]|7|+UV͟??iӦ;g| vۊ+M6wٳg`e˖}/--SJ?^x[o]hΝ;g͚~zI^o0qUV]s5---K. ÷~?66uT5cƌ4Tŋ !^ڵkVv~FFmLu3BNv5Ȳ&B e0P B{F!oiع5wXm|9EEE{~==:>>@a_{k&))饗^ڰaäI̜;VӴ˗vm> K/5Mr{1UUo]v9NM.䒻+''4)y䑟'}'P(k׮!CH69F QJA#J e 0 9 jf*vC p~8E,I~a:=q9 mSJ~Rm.2{t3,˪;1o߾(''g@CR6Nf$LfPB13 sC ssaV뛽i.7<<Ў|>_BB^hO:(j ._H`6dY1I@2(! `H`pP(*٘JXe2u4%B s! ӈBf)Dp N@)2иA(\HX#\!.[ PvDKǍ\D ;0CQ뚑/ 2c,H!U⎄F6-(LLXrd *UI}]a]q6$tu'$%ӑT4v q9/llF|O ='I9 &2l#B@bvZC##n'!2(Ev8Y nt4u]qv=GMZ2bS&첏]bHN0R!VokiI )jGQoX Jsldl4"vœ &&4&qkke:;1n)-ѣɋkq5|Rʘd>CS$:dJ I@a '>l9G},Xg-XRbI"%(,XRbI"%(, 0/ HB.nK r$,+ p)xUVRhQa`01<`ZpVZb;w&[ a`R  =k4A ya-BPX')q1 ٬`P24bBC2JbV +eab`Ynxc䎢V^/3'7Ӂ<߱ \S6S)ݠ~k|}:{.9)v(.$r&׏ 81N($G_"a}y8T~w /<%%i9}sZÌyfs,Ę` ||i>4]]w[r*lIh`>C!DӴڽ{VWWkVQQaSJ,50TU=fʺK㎼I&;gv}ŊuuuNs'{ysssZZnзØ0IRBG{)"/M9mf$yk['bB '$I/>sffիWϝ;ox<GU;3 ͟?޼yMMM]]]7t鬯 x޽{655 8l`V޺uM u=aގ5k֮}wmIii!;~RU]5s̞}0~Z/Zhƌn^̙3#Ȱar\d,ˉB i6"1F%jQ ;mSgwyFzy睓K(ݼ鳌 M7z ι(j ?^oB!aE .˓eْBҎ–b?O),U$_lf߯[ormmɓF%$vGrrRBpPkBHK[M߾|#yCƦ4gN\s!R!@=pR`Ob(jv!FƎ<]f4Q=!{N|#|~̘1%р?H7xOgi!@0¡%g) UTTB|>ߦ̝nw8t=B O$0C9$ .ظqc^^^jjjiivyMI sIDATB@a_X#SAoQzFŘ+G="7'2џG׏<-lqBqjqK'AgŒEK Q,)XD`ŒEK Q,)XD`ea ! k`bALG:nOTKBXI ([v&=QΥGsX (gwҍZP Rv=w&dp0 PgZDtU0{'tA€Ę#dQ)S%;VY d4I{;x<3LH@(I) jW66]U( TZi@*EBHHE*FHPqy@4(2+=e$$iL=s}eo@;Ta< |WFiIaQ_?/eUzn0e_(gDwLg#:VǺ(=cb6:aOlez \Ϩ6bJ+$CJ&ۈXi<&%J3Jo#@y/_nzi򾨟 Mc``D0JZП 2Kx0yL@ Hϟy;vfŋA)@2ܺavCJqI_zO ""R PHlG9\J.9+Ge %%**^ء`|>1…t"8B)%Ѱ8Ҵћ0 )ܐ\.(IDz%ȅ~F(prrPPm3F >>Jl>}*@@tRXi!J!i>TʖATKʨD̈́R1]P iᯘeY mGRA? @JN(e.zҴ{I$ҙR1=FfD3ƞ^b_%C %i؟镛FpB1w(D+ kOPIy@FPatSC*NOC !dσnr'n!%cO?4{q%N/\H!P%MKRȒٹ~ߊvĭqkVQN8WG!!:r~B_?.8}4cǏ4(!ڵk捣SJsF@nܸǧ{0M~oX LK9Ssp\ #P^LP<]p[Iq#mE"Zsη~t݁@L) |>w9 5Z;x cF/]ikF傈R7ӦM+***-- VPJH$PR@F4JeqJ\$ |+@eqAń9ARzĉ#buuu^^СC-ڻwڵk]Ʋ+W4445Ms7<{;EuJkŋ[ZZ(/҅ ֬Yssmܸ>ZjUKK ,_Ν;/B8`˗KJJrss5HDN p@\#(i;PJ(B!TB1Dz-FvɤTyyʕ+ƍ˗/#bOOڵkWX14 vݺuF+)۷_|Ųx<~ĉڶ۶}޽ XԩS+W=}71Ad2iLцBqo&q) ܱ씑,QIQƂ'LYi!_͉UJE"ޅ nذ/n/پ}3g;uJ)JmۃIJuֹ֥hPR^^~ἼʃwHgb~Jŋ3@3Zrn rs})MÙ~Rpner0c}isqLF293/H֌!(ib1ڻAXCC|[dY83a88eYBYfuuuQJe*++o{EъsuwwCCds>psBm粹ep,軇=ws |9>% #{T@G41˜p6RqD?YϝR)s)?ﯮ>/LBT*ֶd@ӭaP4MMܺ=#\ Z[[ΝK Æa~Ji<ɡΛ7BJ&{%%% ̘4__T*Ez OyL"; n'&!Q 5+52\ܧD)ĥV]rDF];߼y8 ƍ ޾ulb’ŒC:#4K!P>#A׉eY‚TrDضۏI`uvvNd֭[?æM6eK|555x͛7?x [J.]:T~fdcUV9r$///\̙F5M۴iӆ qlٲeKEEaCboQWW-I#G{}%ӍCKmvlٿ~:ŋjfdVصkW{{իWgΜw^peٳgo۶mhaccc$Y`AV$)F1S}}-[>͛7gf驪uHo޼y3P(455ս555iN<9cƌGˋ=y=?onnnnn>p<-ZZZ:4̙3d2+zܙ;# BofŊnz뭷N:UPP,|WRҥK%?;;;jǎˀWXdɞ={>gK;G۷/J\1CDnnn΢$tN3UTIENDB`fdroidserver-1.0.9/tests/repo/obb.main.twoversions_1101613.apk0000664000175000017500000002632513243623367023734 0ustar hanshans00000000000000PKHUnAndroidManifest.xmlo[EnbF1n_nb?^l) TҨIKH(u&!!9gs!qп!77^%yv3('r(IDj]ysww18ڃ?P&DTA]{t>;= 7(rCh ڄ~~*=z{P5jO{t۰Y*=Q3k1k"Q ŧۧg-R3l9xTijf *ߠ/Ƕ!=akm²Ʀʇ=؀o #Q^Qk4{wUOWEc \Rեڪ,*lN`6ڙ1mjّ guak7LE̖p:XULtZqR3z]{!ߟBM)QZeա:S۰quGs}:?Z +;=ygϏSNn7z>@dͻ+Ova..x7}ZQO峎U66bSgݸ 6Б5+ M7|4f *;=dB#nԹ-cGn#v-KʧYyS[̙3E9ӌ aFN:$L0IL2hzr' ]"q04 '6'/k\Գ aVWA~y41es?(<(ybabqqH$[Iq}Yؗq>f&78>d6MJ.ښ#F7F-D޴5^K}Jx)ggq\_p͈7b֘4X}ʲ7i%oп%C7^Fx7ke:; oNq>o ϶s^ /k$yYx94^+兗x +\ o>-b޼5^+Wx% W^I-o«-oAU,Eۯŷk9{PKUnPK H=-res/drawable/ic_launcher.pngPNG  IHDRw=LIDATHǥyPuƟ{².˲ 8ႈ 628yr OCM5V^ʡbY"0,,{DPXϟ>ߋ4zљp a22x@-q &6'xnب4Ռs-<!a^zD\W6=YMQ2ɗw|՟-f̶vJA؜s1Ym®n>/]ҹr8୔@(r1.}j:Oi> DowJ'CRRVJ eMPy|{|7sRNQy(KNnቹM{p՝Ғ6Q:h++-LxȄsՆIT~M≹\{V{TTX@vL (Ćyq]zAnBFZmHocs  Çd6ihh CCfQ!j2OPSեlUY G?15t"GUˢy*(M6\$""DJiujdo5GcF^G"@ Vx\|T$SgOt ::erOK\]Ϟb¶hӫnZ>5^7 S~6B3Щb#RجJ[ =64%1N ('5+٥bvTD%W< `y*VnJK6͵[h8l3PA$M;QZ1[,U3|.nlIuG2 3 eb2V'0`ę&Uڂg ,.!蒎Q1 F|UJvuӆaL06 cLzN׎zXYٹLGBr8#0LmMOS7onDVv͞} DLژ.C{e 󳵴&cY,ZKSiZ=I`҇6%]Nm},ŅU5SN܈mݷ<65}E޷'0CקԄf.̙3;EnK=_d*/r.Ѵ#>)?/Ԟ H\o7aU%(|${hjǜIL~ cS/LҘPPX"1sgsLuP!!"@&849^1|'3}ȕs_-]$IVM1,,D-aEDA̤rIENDB`PKHS Lres/layout/activity_main.xmluN@=[$BHA"5%$ 'Ql*x$ G;es;wofw} ƘMCt- G«& 99w%fmF)B[nTχUПg!F$~"u.m*~RUx:R}o{EO١R3~`)6d?Tޟ#]{ȣ>64u6Z?p̑?gqդ~,ᛙPKS LPK Hchresources.arsc 0<xres/drawable/ic_launcher.pngres/layout/activity_main.xmlOBB Main Two VersionsSettings Hello world! obb.main.twoversions l, 0attrdrawablelayoutstring08Ln ic_launcher activity_mainapp_nameaction_settings hello_worldH\L4H\L4HT4 PKH<>Z$ classes.dex l[u}(Rz"-K$ee[(qDcK]t%['Yz6HʒMӤ k,[:4E--@[-Z,, eAYs{{T^E}8~Ч?߫|-VXoQݘ oYA҉6@y &dʬ!66QT9p\EuS6xv& `'W?wA 3 !U&p<^~ ms"x | ^FQ8ix ;*76xxw &0 )`*> ~\O?_/W 6x0:ZZ 6!p+w"8 .3yo B]p-Ȁ ` >nA ,w+u`)f}`+10 %.Og)E&ՠbMa8.FJה|BOQ 'l7~Znz\tȨCkŮ !cJ(d>.dF,}^߆&;%KB&J>cK7[HveoǮ#žP&m!>KgNQo鯴jy![3"e~7FrTv%99Bř"{,o#\'|ܤf%cDcv'0{3 1W0 @n[m6vO o BF3"ds}=*5A'/":ߌOey:ITW ҼcL')wNf;?r7tH#7KO!ǺpKa27imTJ sB|pm|TZi ˱)ic[D|l%1-(ZM1$9*gpZ' n8 %7`^QmXnљOw79 ~g h3iy&:B-XKb9h#{@͛Q3JzL{d[q-#rJ7E?NK̟˳CaZΚ8c0`ce]}0?ޱd>LFgʹ\s:c5 *{X'Y+bV!3-"Ct\Q[??BźkVexL˳k ;TJuOջ H 54b;,rOi/Knh65:1]hnCxLq}y1'ױuo^u﮲o*T[¶UªWU{WwX7.שmJnWWɭJzad"lS{SL}0&Rb,9QDN,:=&s攊c{ʙFFԼC-=j_t,{jwÖxt+zԝve1LߨP?7&4y>?u[U"#WgO֪F$L_]7194kӮ2{^0_JRK;m! 0ulwܪ`_zDD S}6[շf̀w:ED[[}Kv619SEĚy]+_G[@._=硕 ;q f;j:ER3^ժ@Ey:)2Lɳ2|ԾdئVx=e)vc8O?V*?I;>JZvҷchZ~dU{bW[{R`S)b΢M!~gjM6Ċ*ZUڊv݈x:bUI@EofSj1"8}ǮeZCJB!~wP·&4Ѹp#svu?@+ہzz݊D`SH[D(*ġ|x5a[ÞodVe.U2i4Fn-xMmlm^n8(I?DgZvɼs-]b(Ý]zP흆Mk+*[RwWC;mhȚ]6vX2.~A/2 ]/0^}IC\5A,bdC/vO^`:}gSwZ42Lt-kLKg2Kn c?ncnCc+^h_Yǭ>/ =:Aڔb?/DY~O ~qY{N+7ZC-\nz8+̔$N-+sUy.3?[(jVD[PK<>Z$PKHMETA-INF/MANIFEST.MFmAo0; #t:!Ŕb7B[@3dM'9bp66zk@aԝ6`frrb\Mn }PKPKHE4META-INF/CERT.SFmKo@= ef,ICQDCJЍr__cDIw'_>9!JT-& CSoʔV$} 3.aIÖJ)hVlM (l`mW˔@[j#hU-*m1P̵wLM)$*A6%:blڋWs0Ĉkd 氯BIKx/ )Љ"ߑ/;sxV E)24"jcDkZު0hw!cW ݨ}JMg%~/>[PKE4PKH(tMETA-INF/CERT.RSAU?ԋ6"9J5 Yې,#%d(!,:r,YY"f77{98?>}^uѽu>(',Q0(8 p_ͤ#S:2 C20( 8 #%6A %3CSGPɠ( r@q /nxB"\AGӆEȠ$ qdE}"Ǘr(%x TaA5e qSAa a ?xn0ߵ!1uXž7s71jiӅvx4 ;YrR`T:#ߔ*V >||U>TW=kE`otP}8)bGB妀96B;0BE#sJJH>Im))- ,Fu\JkO7̛{(- rO02dM{ݍ! SqVyzHJdmhɑkDRYCD79Δ=zVoܞz6Rfǩܤ&^3SZT]PM7UJLm:^G)-4G]3.Skca)ZЬ컠Qx`e1oh+ Tw?A4ߥ7-#Q-Ӵbw9ꈽT.n{YPx6'ǃ=a^ҩD-aTl 08}~"I#B:ܬғ837DEn_.~; |?`?5 ;yfb|H~WZD4L PMH9BZk$}&ޗ"'?(IR9'(C}ס}'Q/hF=ȜM{Ӧ. <&wm/UùO-8a,\Tol[!0lYӖfRH3SrO?CAqJTF|\š:b䬟cKZq҉/Oω-TłւOѥg_Y H#FmWnfʠTwu+[ q$ZYH~:o%)(YB{эۙF7Ż5d~ZK)+2/Fl[O#趣IO2zt}4Gw\ˤ% .gx6O7 k+6J5(`:h"'&U0L~bN gR]w 5S^ ?bj%Xaں#u5fowޜXeLg&vCO;=/||WuJgPwd;ˑ~ pr)eۡ׬/Szjۯu(:>p ӇN PK(tPKHUnAndroidManifest.xmlPK H=-res/drawable/ic_launcher.pngPKHS L res/layout/activity_main.xmlPK Hch) resources.arscPKH<>Z$ @classes.dexPKH5 META-INF/MANIFEST.MFPKHE4!META-INF/CERT.SFPKH(t"META-INF/CERT.RSAPK *fdroidserver-1.0.9/tests/common.TestCase0000775000175000017500000011542613323655167020243 0ustar hanshans00000000000000#!/usr/bin/env python3 # http://www.drdobbs.com/testing/unit-testing-with-python/240165163 import inspect import logging import optparse import os import re import shutil import sys import tempfile import unittest import textwrap import yaml from zipfile import ZipFile localmodule = os.path.realpath( os.path.join(os.path.dirname(inspect.getfile(inspect.currentframe())), '..')) print('localmodule: ' + localmodule) if localmodule not in sys.path: sys.path.insert(0, localmodule) import fdroidserver.index import fdroidserver.signindex import fdroidserver.common import fdroidserver.metadata from testcommon import TmpCwd from fdroidserver.exception import FDroidException class CommonTest(unittest.TestCase): '''fdroidserver/common.py''' def setUp(self): logging.basicConfig(level=logging.DEBUG) self.basedir = os.path.join(localmodule, 'tests') self.tmpdir = os.path.abspath(os.path.join(self.basedir, '..', '.testfiles')) if not os.path.exists(self.tmpdir): os.makedirs(self.tmpdir) os.chdir(self.basedir) def test_assert_config_keystore(self): with tempfile.TemporaryDirectory() as tmpdir, TmpCwd(tmpdir): with self.assertRaises(FDroidException): fdroidserver.common.assert_config_keystore({}) with tempfile.TemporaryDirectory() as tmpdir, TmpCwd(tmpdir): c = {'repo_keyalias': 'localhost', 'keystore': 'keystore.jks', 'keystorepass': '12345', 'keypass': '12345'} with open('keystore.jks', 'w'): pass fdroidserver.common.assert_config_keystore(c) def _set_build_tools(self): build_tools = os.path.join(fdroidserver.common.config['sdk_path'], 'build-tools') if os.path.exists(build_tools): fdroidserver.common.config['build_tools'] = '' for f in sorted(os.listdir(build_tools), reverse=True): versioned = os.path.join(build_tools, f) if os.path.isdir(versioned) \ and os.path.isfile(os.path.join(versioned, 'aapt')): fdroidserver.common.config['build_tools'] = versioned break return True else: print('no build-tools found: ' + build_tools) return False def _find_all(self): tools = ['aapt', 'adb', 'zipalign'] if os.path.exists(os.path.join(os.getenv('ANDROID_HOME'), 'tools', 'android')): tools.append('android') for cmd in tools: path = fdroidserver.common.find_sdk_tools_cmd(cmd) if path is not None: self.assertTrue(os.path.exists(path)) self.assertTrue(os.path.isfile(path)) def test_find_sdk_tools_cmd(self): fdroidserver.common.config = dict() # TODO add this once everything works without sdk_path set in config # self._find_all() sdk_path = os.getenv('ANDROID_HOME') if os.path.exists(sdk_path): fdroidserver.common.config['sdk_path'] = sdk_path build_tools = os.path.join(sdk_path, 'build-tools') if self._set_build_tools() or os.path.exists('/usr/bin/aapt'): self._find_all() else: print('no build-tools found: ' + build_tools) def test_find_java_root_path(self): testdir = tempfile.mkdtemp(prefix=inspect.currentframe().f_code.co_name, dir=self.tmpdir) os.chdir(testdir) all_pathlists = [ ([ # Debian '/usr/lib/jvm/java-1.5.0-gcj-5-amd64', '/usr/lib/jvm/java-8-openjdk-amd64', '/usr/lib/jvm/java-1.8.0-openjdk-amd64', ], '/usr/lib/jvm/java-8-openjdk-amd64'), ([ # OSX '/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk', '/Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk', '/System/Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk', ], '/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk'), ] for pathlist, choice in all_pathlists: # strip leading / to make relative paths to test without root pathlist = [p[1:] for p in pathlist] # create test file used in common._add_java_paths_to_config() for p in pathlist: if p.startswith('/System') or p.startswith('/Library'): basedir = os.path.join(p, 'Contents', 'Home', 'bin') else: basedir = os.path.join(p, 'bin') os.makedirs(basedir) open(os.path.join(basedir, 'javac'), 'w').close() config = dict() config['java_paths'] = dict() fdroidserver.common._add_java_paths_to_config(pathlist, config) self.assertEqual(config['java_paths']['8'], choice[1:]) def testIsApkDebuggable(self): config = dict() fdroidserver.common.fill_config_defaults(config) fdroidserver.common.config = config self._set_build_tools() config['aapt'] = fdroidserver.common.find_sdk_tools_cmd('aapt') # these are set debuggable testfiles = [] testfiles.append(os.path.join(self.basedir, 'urzip.apk')) testfiles.append(os.path.join(self.basedir, 'urzip-badsig.apk')) testfiles.append(os.path.join(self.basedir, 'urzip-badcert.apk')) for apkfile in testfiles: debuggable = fdroidserver.common.is_apk_and_debuggable(apkfile) self.assertTrue(debuggable, "debuggable APK state was not properly parsed!") # these are set NOT debuggable testfiles = [] testfiles.append(os.path.join(self.basedir, 'urzip-release.apk')) testfiles.append(os.path.join(self.basedir, 'urzip-release-unsigned.apk')) for apkfile in testfiles: debuggable = fdroidserver.common.is_apk_and_debuggable(apkfile) self.assertFalse(debuggable, "debuggable APK state was not properly parsed!") def testPackageNameValidity(self): for name in ["org.fdroid.fdroid", "org.f_droid.fdr0ID"]: self.assertTrue(fdroidserver.common.is_valid_package_name(name), "{0} should be a valid package name".format(name)) for name in ["0rg.fdroid.fdroid", ".f_droid.fdr0ID", "org.fdroid/fdroid", "/org.fdroid.fdroid"]: self.assertFalse(fdroidserver.common.is_valid_package_name(name), "{0} should not be a valid package name".format(name)) def test_prepare_sources(self): testint = 99999999 teststr = 'FAKE_STR_FOR_TESTING' testdir = tempfile.mkdtemp(prefix=inspect.currentframe().f_code.co_name, dir=self.tmpdir) shutil.copytree(os.path.join(self.basedir, 'source-files'), os.path.join(testdir, 'source-files')) fdroidclient_testdir = os.path.join(testdir, 'source-files', 'fdroid', 'fdroidclient') config = dict() config['sdk_path'] = os.getenv('ANDROID_HOME') config['ndk_paths'] = {'r10d': os.getenv('ANDROID_NDK_HOME')} config['build_tools'] = 'FAKE_BUILD_TOOLS_VERSION' fdroidserver.common.config = config app = fdroidserver.metadata.App() app.id = 'org.fdroid.froid' build = fdroidserver.metadata.Build() build.commit = 'master' build.forceversion = True build.forcevercode = True build.gradle = ['yes'] build.target = 'android-' + str(testint) build.versionName = teststr build.versionCode = testint class FakeVcs(): # no need to change to the correct commit here def gotorevision(self, rev, refresh=True): pass # no srclib info needed, but it could be added... def getsrclib(self): return None fdroidserver.common.prepare_source(FakeVcs(), app, build, fdroidclient_testdir, fdroidclient_testdir, fdroidclient_testdir) with open(os.path.join(fdroidclient_testdir, 'build.gradle'), 'r') as f: filedata = f.read() self.assertIsNotNone(re.search(r"\s+compileSdkVersion %s\s+" % testint, filedata)) with open(os.path.join(fdroidclient_testdir, 'AndroidManifest.xml')) as f: filedata = f.read() self.assertIsNone(re.search('android:debuggable', filedata)) self.assertIsNotNone(re.search('android:versionName="%s"' % build.versionName, filedata)) self.assertIsNotNone(re.search('android:versionCode="%s"' % build.versionCode, filedata)) def test_prepare_sources_refresh(self): packageName = 'org.fdroid.ci.test.app' testdir = tempfile.mkdtemp(prefix=inspect.currentframe().f_code.co_name, dir=self.tmpdir) print('testdir', testdir) os.chdir(testdir) os.mkdir('build') os.mkdir('metadata') # use a local copy if available to avoid hitting the network tmprepo = os.path.join(self.basedir, 'tmp', 'importer') if os.path.exists(tmprepo): git_url = tmprepo else: git_url = 'https://gitlab.com/fdroid/ci-test-app.git' metadata = dict() metadata['Description'] = 'This is just a test app' metadata['RepoType'] = 'git' metadata['Repo'] = git_url with open(os.path.join('metadata', packageName + '.yml'), 'w') as fp: yaml.dump(metadata, fp) gitrepo = os.path.join(testdir, 'build', packageName) vcs0 = fdroidserver.common.getvcs('git', git_url, gitrepo) vcs0.gotorevision('0.3', refresh=True) vcs1 = fdroidserver.common.getvcs('git', git_url, gitrepo) vcs1.gotorevision('0.3', refresh=False) def test_fdroid_popen_stderr_redirect(self): config = dict() fdroidserver.common.fill_config_defaults(config) fdroidserver.common.config = config commands = ['sh', '-c', 'echo stdout message && echo stderr message 1>&2'] p = fdroidserver.common.FDroidPopen(commands) self.assertEqual(p.output, 'stdout message\nstderr message\n') p = fdroidserver.common.FDroidPopen(commands, stderr_to_stdout=False) self.assertEqual(p.output, 'stdout message\n') def test_signjar(self): fdroidserver.common.config = None config = fdroidserver.common.read_config(fdroidserver.common.options) config['jarsigner'] = fdroidserver.common.find_sdk_tools_cmd('jarsigner') fdroidserver.common.config = config fdroidserver.signindex.config = config sourcedir = os.path.join(self.basedir, 'signindex') testsdir = tempfile.mkdtemp(prefix=inspect.currentframe().f_code.co_name, dir=self.tmpdir) for f in ('testy.jar', 'guardianproject.jar',): sourcefile = os.path.join(sourcedir, f) testfile = os.path.join(testsdir, f) shutil.copy(sourcefile, testsdir) fdroidserver.signindex.sign_jar(testfile) # these should be resigned, and therefore different self.assertNotEqual(open(sourcefile, 'rb').read(), open(testfile, 'rb').read()) def test_verify_apk_signature(self): fdroidserver.common.config = None config = fdroidserver.common.read_config(fdroidserver.common.options) config['jarsigner'] = fdroidserver.common.find_sdk_tools_cmd('jarsigner') fdroidserver.common.config = config self.assertTrue(fdroidserver.common.verify_apk_signature('bad-unicode-πÇÇ现代通用字-български-عربي1.apk')) self.assertFalse(fdroidserver.common.verify_apk_signature('org.bitbucket.tickytacky.mirrormirror_1.apk')) self.assertFalse(fdroidserver.common.verify_apk_signature('org.bitbucket.tickytacky.mirrormirror_2.apk')) self.assertFalse(fdroidserver.common.verify_apk_signature('org.bitbucket.tickytacky.mirrormirror_3.apk')) self.assertFalse(fdroidserver.common.verify_apk_signature('org.bitbucket.tickytacky.mirrormirror_4.apk')) self.assertTrue(fdroidserver.common.verify_apk_signature('org.dyndns.fules.ck_20.apk')) self.assertTrue(fdroidserver.common.verify_apk_signature('urzip.apk')) self.assertFalse(fdroidserver.common.verify_apk_signature('urzip-badcert.apk')) self.assertFalse(fdroidserver.common.verify_apk_signature('urzip-badsig.apk')) self.assertTrue(fdroidserver.common.verify_apk_signature('urzip-release.apk')) self.assertFalse(fdroidserver.common.verify_apk_signature('urzip-release-unsigned.apk')) def test_verify_old_apk_signature(self): fdroidserver.common.config = None config = fdroidserver.common.read_config(fdroidserver.common.options) config['jarsigner'] = fdroidserver.common.find_sdk_tools_cmd('jarsigner') fdroidserver.common.config = config self.assertTrue(fdroidserver.common.verify_old_apk_signature('bad-unicode-πÇÇ现代通用字-български-عربي1.apk')) self.assertTrue(fdroidserver.common.verify_old_apk_signature('org.bitbucket.tickytacky.mirrormirror_1.apk')) self.assertTrue(fdroidserver.common.verify_old_apk_signature('org.bitbucket.tickytacky.mirrormirror_2.apk')) self.assertTrue(fdroidserver.common.verify_old_apk_signature('org.bitbucket.tickytacky.mirrormirror_3.apk')) self.assertTrue(fdroidserver.common.verify_old_apk_signature('org.bitbucket.tickytacky.mirrormirror_4.apk')) self.assertTrue(fdroidserver.common.verify_old_apk_signature('org.dyndns.fules.ck_20.apk')) self.assertTrue(fdroidserver.common.verify_old_apk_signature('urzip.apk')) self.assertFalse(fdroidserver.common.verify_old_apk_signature('urzip-badcert.apk')) self.assertFalse(fdroidserver.common.verify_old_apk_signature('urzip-badsig.apk')) self.assertTrue(fdroidserver.common.verify_old_apk_signature('urzip-release.apk')) self.assertFalse(fdroidserver.common.verify_old_apk_signature('urzip-release-unsigned.apk')) def test_verify_jar_signature_succeeds(self): fdroidserver.common.config = None config = fdroidserver.common.read_config(fdroidserver.common.options) config['jarsigner'] = fdroidserver.common.find_sdk_tools_cmd('jarsigner') fdroidserver.common.config = config source_dir = os.path.join(self.basedir, 'signindex') for f in ('testy.jar', 'guardianproject.jar'): testfile = os.path.join(source_dir, f) fdroidserver.common.verify_jar_signature(testfile) def test_verify_jar_signature_fails(self): fdroidserver.common.config = None config = fdroidserver.common.read_config(fdroidserver.common.options) config['jarsigner'] = fdroidserver.common.find_sdk_tools_cmd('jarsigner') fdroidserver.common.config = config source_dir = os.path.join(self.basedir, 'signindex') testfile = os.path.join(source_dir, 'unsigned.jar') with self.assertRaises(fdroidserver.index.VerificationException): fdroidserver.common.verify_jar_signature(testfile) def test_verify_apks(self): fdroidserver.common.config = None config = fdroidserver.common.read_config(fdroidserver.common.options) config['jarsigner'] = fdroidserver.common.find_sdk_tools_cmd('jarsigner') fdroidserver.common.config = config sourceapk = os.path.join(self.basedir, 'urzip.apk') testdir = tempfile.mkdtemp(prefix=inspect.currentframe().f_code.co_name, dir=self.tmpdir) print('testdir', testdir) copyapk = os.path.join(testdir, 'urzip-copy.apk') shutil.copy(sourceapk, copyapk) self.assertTrue(fdroidserver.common.verify_apk_signature(copyapk)) self.assertIsNone(fdroidserver.common.verify_apks(sourceapk, copyapk, self.tmpdir)) unsignedapk = os.path.join(testdir, 'urzip-unsigned.apk') with ZipFile(sourceapk, 'r') as apk: with ZipFile(unsignedapk, 'w') as testapk: for info in apk.infolist(): if not info.filename.startswith('META-INF/'): testapk.writestr(info, apk.read(info.filename)) self.assertIsNone(fdroidserver.common.verify_apks(sourceapk, unsignedapk, self.tmpdir)) twosigapk = os.path.join(testdir, 'urzip-twosig.apk') otherapk = ZipFile(os.path.join(self.basedir, 'urzip-release.apk'), 'r') with ZipFile(sourceapk, 'r') as apk: with ZipFile(twosigapk, 'w') as testapk: for info in apk.infolist(): testapk.writestr(info, apk.read(info.filename)) if info.filename.startswith('META-INF/'): testapk.writestr(info, otherapk.read(info.filename)) otherapk.close() self.assertFalse(fdroidserver.common.verify_apk_signature(twosigapk)) self.assertIsNone(fdroidserver.common.verify_apks(sourceapk, twosigapk, self.tmpdir)) def test_write_to_config(self): with tempfile.TemporaryDirectory() as tmpPath: cfgPath = os.path.join(tmpPath, 'config.py') with open(cfgPath, 'w', encoding='utf-8') as f: f.write(textwrap.dedent("""\ # abc # test = 'example value' default_me= '%%%' # comment do_not_touch = "good value" default_me="!!!" key="123" # inline""")) cfg = {'key': '111', 'default_me_orig': 'orig'} fdroidserver.common.write_to_config(cfg, 'key', config_file=cfgPath) fdroidserver.common.write_to_config(cfg, 'default_me', config_file=cfgPath) fdroidserver.common.write_to_config(cfg, 'test', value='test value', config_file=cfgPath) fdroidserver.common.write_to_config(cfg, 'new_key', value='new', config_file=cfgPath) with open(cfgPath, 'r', encoding='utf-8') as f: self.assertEqual(f.read(), textwrap.dedent("""\ # abc test = 'test value' default_me = 'orig' # comment do_not_touch = "good value" key = "111" # inline new_key = "new" """)) def test_write_to_config_when_empty(self): with tempfile.TemporaryDirectory() as tmpPath: cfgPath = os.path.join(tmpPath, 'config.py') with open(cfgPath, 'w') as f: pass fdroidserver.common.write_to_config({}, 'key', 'val', cfgPath) with open(cfgPath, 'r', encoding='utf-8') as f: self.assertEqual(f.read(), textwrap.dedent("""\ key = "val" """)) def test_apk_name_regex(self): good = [ 'urzipπÇÇπÇÇ现代汉语通用字българскиعربي1234ö_-123456.apk', 'urzipπÇÇπÇÇ现代汉语通用字българскиعربي1234ö_123456_abcdef0.apk', 'urzip_-123456.apk', 'a0_0.apk', 'Z0_0.apk', 'a0_0_abcdef0.apk', 'a_a_a_a_0_abcdef0.apk', 'a_____0.apk', 'a_____123456_abcdef0.apk', 'org.fdroid.fdroid_123456.apk', # valid, but "_99999" is part of packageName rather than versionCode 'org.fdroid.fdroid_99999_123456.apk', # should be valid, but I can't figure out the regex since \w includes digits # 'πÇÇπÇÇ现代汉语通用字българскиعربي1234ö_0_123bafd.apk', ] for name in good: m = fdroidserver.common.APK_NAME_REGEX.match(name) self.assertIsNotNone(m) self.assertIn(m.group(2), ('-123456', '0', '123456')) self.assertIn(m.group(3), ('abcdef0', None)) bad = [ 'urzipπÇÇπÇÇ现代汉语通用字българскиعربي1234ö_123456_abcdefg.apk', 'urzip-_-198274.apk', 'urzip-_0_123bafd.apk', 'no spaces allowed_123.apk', '0_0.apk', '0_0_abcdef0.apk', ] for name in bad: self.assertIsNone(fdroidserver.common.APK_NAME_REGEX.match(name)) def test_standard_file_name_regex(self): good = [ 'urzipπÇÇπÇÇ现代汉语通用字българскиعربي1234ö_-123456.mp3', 'urzipπÇÇπÇÇ现代汉语通用字българскиعربي1234ö_123456.mov', 'Document_-123456.pdf', 'WTF_0.MOV', 'Z0_0.ebk', 'a_a_a_a_0.txt', 'org.fdroid.fdroid.privileged.ota_123456.zip', 'πÇÇπÇÇ现代汉语通用字българскиعربي1234ö_0.jpeg', 'a_____0.PNG', # valid, but "_99999" is part of packageName rather than versionCode 'a_____99999_123456.zip', 'org.fdroid.fdroid_99999_123456.zip', ] for name in good: m = fdroidserver.common.STANDARD_FILE_NAME_REGEX.match(name) self.assertIsNotNone(m) self.assertIn(m.group(2), ('-123456', '0', '123456')) bad = [ 'urzipπÇÇπÇÇ现代汉语通用字българскиعربي1234ö_abcdefg.JPEG', 'urzip-_-198274.zip', 'urzip-_123bafd.pdf', 'no spaces allowed_123.foobar', 'a_____0.', ] for name in bad: self.assertIsNone(fdroidserver.common.STANDARD_FILE_NAME_REGEX.match(name)) def test_apk_signer_fingerprint(self): # fingerprints fetched with: keytool -printcert -file ____.RSA testapks = (('repo/obb.main.oldversion_1444412523.apk', '818e469465f96b704e27be2fee4c63ab9f83ddf30e7a34c7371a4728d83b0bc1'), ('repo/obb.main.twoversions_1101613.apk', '32a23624c201b949f085996ba5ed53d40f703aca4989476949cae891022e0ed6'), ('repo/obb.main.twoversions_1101617.apk', '32a23624c201b949f085996ba5ed53d40f703aca4989476949cae891022e0ed6')) for apkfile, keytoolcertfingerprint in testapks: self.assertEqual(keytoolcertfingerprint, fdroidserver.common.apk_signer_fingerprint(apkfile)) def test_apk_signer_fingerprint_short(self): # fingerprints fetched with: keytool -printcert -file ____.RSA testapks = (('repo/obb.main.oldversion_1444412523.apk', '818e469'), ('repo/obb.main.twoversions_1101613.apk', '32a2362'), ('repo/obb.main.twoversions_1101617.apk', '32a2362')) for apkfile, keytoolcertfingerprint in testapks: self.assertEqual(keytoolcertfingerprint, fdroidserver.common.apk_signer_fingerprint_short(apkfile)) def test_sign_apk(self): fdroidserver.common.config = None config = fdroidserver.common.read_config(fdroidserver.common.options) config['jarsigner'] = fdroidserver.common.find_sdk_tools_cmd('jarsigner') config['keyalias'] = 'sova' config['keystorepass'] = 'r9aquRHYoI8+dYz6jKrLntQ5/NJNASFBacJh7Jv2BlI=' config['keypass'] = 'r9aquRHYoI8+dYz6jKrLntQ5/NJNASFBacJh7Jv2BlI=' config['keystore'] = os.path.join(self.basedir, 'keystore.jks') fdroidserver.common.config = config fdroidserver.signindex.config = config testdir = tempfile.mkdtemp(prefix=inspect.currentframe().f_code.co_name, dir=self.tmpdir) unsigned = os.path.join(testdir, 'urzip-release-unsigned.apk') signed = os.path.join(testdir, 'urzip-release.apk') self.assertFalse(fdroidserver.common.verify_apk_signature(unsigned)) shutil.copy(os.path.join(self.basedir, 'urzip-release-unsigned.apk'), testdir) fdroidserver.common.sign_apk(unsigned, signed, config['keyalias']) self.assertTrue(os.path.isfile(signed)) self.assertFalse(os.path.isfile(unsigned)) self.assertTrue(fdroidserver.common.verify_apk_signature(signed)) # now sign an APK with minSdkVersion >= 18 unsigned = os.path.join(testdir, 'duplicate.permisssions_9999999-unsigned.apk') signed = os.path.join(testdir, 'duplicate.permisssions_9999999.apk') shutil.copy(os.path.join(self.basedir, 'repo', 'duplicate.permisssions_9999999.apk'), os.path.join(unsigned)) fdroidserver.common.apk_strip_signatures(unsigned, strip_manifest=True) fdroidserver.common.sign_apk(unsigned, signed, config['keyalias']) self.assertTrue(os.path.isfile(signed)) self.assertFalse(os.path.isfile(unsigned)) self.assertTrue(fdroidserver.common.verify_apk_signature(signed)) self.assertEqual(18, fdroidserver.common.get_minSdkVersion_aapt(signed)) def test_get_api_id(self): config = dict() fdroidserver.common.fill_config_defaults(config) fdroidserver.common.config = config self._set_build_tools() config['aapt'] = fdroidserver.common.find_sdk_tools_cmd('aapt') testcases = [ ('repo/obb.main.twoversions_1101613.apk', 'obb.main.twoversions', '1101613', '0.1'), ('org.bitbucket.tickytacky.mirrormirror_1.apk', 'org.bitbucket.tickytacky.mirrormirror', '1', '1.0'), ('org.bitbucket.tickytacky.mirrormirror_2.apk', 'org.bitbucket.tickytacky.mirrormirror', '2', '1.0.1'), ('org.bitbucket.tickytacky.mirrormirror_3.apk', 'org.bitbucket.tickytacky.mirrormirror', '3', '1.0.2'), ('org.bitbucket.tickytacky.mirrormirror_4.apk', 'org.bitbucket.tickytacky.mirrormirror', '4', '1.0.3'), ('org.dyndns.fules.ck_20.apk', 'org.dyndns.fules.ck', '20', 'v1.6pre2'), ('urzip.apk', 'info.guardianproject.urzip', '100', '0.1'), ('urzip-badcert.apk', 'info.guardianproject.urzip', '100', '0.1'), ('urzip-badsig.apk', 'info.guardianproject.urzip', '100', '0.1'), ('urzip-release.apk', 'info.guardianproject.urzip', '100', '0.1'), ('urzip-release-unsigned.apk', 'info.guardianproject.urzip', '100', '0.1'), ('repo/com.politedroid_3.apk', 'com.politedroid', '3', '1.2'), ('repo/com.politedroid_4.apk', 'com.politedroid', '4', '1.3'), ('repo/com.politedroid_5.apk', 'com.politedroid', '5', '1.4'), ('repo/com.politedroid_6.apk', 'com.politedroid', '6', '1.5'), ('repo/duplicate.permisssions_9999999.apk', 'duplicate.permisssions', '9999999', ''), ('repo/info.zwanenburg.caffeinetile_4.apk', 'info.zwanenburg.caffeinetile', '4', '1.3'), ('repo/obb.main.oldversion_1444412523.apk', 'obb.main.oldversion', '1444412523', '0.1'), ('repo/obb.mainpatch.current_1619_another-release-key.apk', 'obb.mainpatch.current', '1619', '0.1'), ('repo/obb.mainpatch.current_1619.apk', 'obb.mainpatch.current', '1619', '0.1'), ('repo/obb.main.twoversions_1101613.apk', 'obb.main.twoversions', '1101613', '0.1'), ('repo/obb.main.twoversions_1101615.apk', 'obb.main.twoversions', '1101615', '0.1'), ('repo/obb.main.twoversions_1101617.apk', 'obb.main.twoversions', '1101617', '0.1'), ('repo/urzip-; Рахма́, [rɐxˈmanʲɪnəf] سيرجي_رخمانينوف 谢·.apk', 'info.guardianproject.urzip', '100', '0.1'), ] for apkfilename, appid, versionCode, versionName in testcases: print('\n\nAPKFILENAME\n', apkfilename) if 'aapt' in config: a, vc, vn = fdroidserver.common.get_apk_id_aapt(apkfilename) self.assertEqual(appid, a) self.assertEqual(versionCode, vc) self.assertEqual(versionName, vn) if fdroidserver.common.use_androguard(): a, vc, vn = fdroidserver.common.get_apk_id_androguard(apkfilename) self.assertEqual(appid, a) self.assertEqual(versionCode, vc) self.assertEqual(versionName, vn) with self.assertRaises(FDroidException): fdroidserver.common.get_apk_id('nope') def test_get_minSdkVersion_aapt(self): config = dict() fdroidserver.common.fill_config_defaults(config) fdroidserver.common.config = config self._set_build_tools() config['aapt'] = fdroidserver.common.find_sdk_tools_cmd('aapt') minSdkVersion = fdroidserver.common.get_minSdkVersion_aapt('bad-unicode-πÇÇ现代通用字-български-عربي1.apk') self.assertEqual(4, minSdkVersion) minSdkVersion = fdroidserver.common.get_minSdkVersion_aapt('org.bitbucket.tickytacky.mirrormirror_1.apk') self.assertEqual(14, minSdkVersion) minSdkVersion = fdroidserver.common.get_minSdkVersion_aapt('org.bitbucket.tickytacky.mirrormirror_2.apk') self.assertEqual(14, minSdkVersion) minSdkVersion = fdroidserver.common.get_minSdkVersion_aapt('org.bitbucket.tickytacky.mirrormirror_3.apk') self.assertEqual(14, minSdkVersion) minSdkVersion = fdroidserver.common.get_minSdkVersion_aapt('org.bitbucket.tickytacky.mirrormirror_4.apk') self.assertEqual(14, minSdkVersion) minSdkVersion = fdroidserver.common.get_minSdkVersion_aapt('org.dyndns.fules.ck_20.apk') self.assertEqual(7, minSdkVersion) minSdkVersion = fdroidserver.common.get_minSdkVersion_aapt('urzip.apk') self.assertEqual(4, minSdkVersion) minSdkVersion = fdroidserver.common.get_minSdkVersion_aapt('urzip-badcert.apk') self.assertEqual(4, minSdkVersion) minSdkVersion = fdroidserver.common.get_minSdkVersion_aapt('urzip-badsig.apk') self.assertEqual(4, minSdkVersion) minSdkVersion = fdroidserver.common.get_minSdkVersion_aapt('urzip-release.apk') self.assertEqual(4, minSdkVersion) minSdkVersion = fdroidserver.common.get_minSdkVersion_aapt('urzip-release-unsigned.apk') self.assertEqual(4, minSdkVersion) minSdkVersion = fdroidserver.common.get_minSdkVersion_aapt('repo/com.politedroid_3.apk') self.assertEqual(3, minSdkVersion) minSdkVersion = fdroidserver.common.get_minSdkVersion_aapt('repo/com.politedroid_4.apk') self.assertEqual(3, minSdkVersion) minSdkVersion = fdroidserver.common.get_minSdkVersion_aapt('repo/com.politedroid_5.apk') self.assertEqual(3, minSdkVersion) minSdkVersion = fdroidserver.common.get_minSdkVersion_aapt('repo/com.politedroid_6.apk') self.assertEqual(14, minSdkVersion) minSdkVersion = fdroidserver.common.get_minSdkVersion_aapt('repo/obb.main.oldversion_1444412523.apk') self.assertEqual(4, minSdkVersion) minSdkVersion = fdroidserver.common.get_minSdkVersion_aapt('repo/obb.mainpatch.current_1619_another-release-key.apk') self.assertEqual(4, minSdkVersion) minSdkVersion = fdroidserver.common.get_minSdkVersion_aapt('repo/obb.mainpatch.current_1619.apk') self.assertEqual(4, minSdkVersion) minSdkVersion = fdroidserver.common.get_minSdkVersion_aapt('repo/obb.main.twoversions_1101613.apk') self.assertEqual(4, minSdkVersion) minSdkVersion = fdroidserver.common.get_minSdkVersion_aapt('repo/obb.main.twoversions_1101615.apk') self.assertEqual(4, minSdkVersion) minSdkVersion = fdroidserver.common.get_minSdkVersion_aapt('repo/obb.main.twoversions_1101617.apk') self.assertEqual(4, minSdkVersion) minSdkVersion = fdroidserver.common.get_minSdkVersion_aapt('repo/urzip-; Рахма́, [rɐxˈmanʲɪnəf] سيرجي_رخمانينوف 谢·.apk') with self.assertRaises(FDroidException): fdroidserver.common.get_minSdkVersion_aapt('nope') def test_apk_release_name(self): appid, vercode, sigfp = fdroidserver.common.apk_parse_release_filename('com.serwylo.lexica_905.apk') self.assertEqual(appid, 'com.serwylo.lexica') self.assertEqual(vercode, '905') self.assertEqual(sigfp, None) appid, vercode, sigfp = fdroidserver.common.apk_parse_release_filename('com.serwylo.lexica_905_c82e0f6.apk') self.assertEqual(appid, 'com.serwylo.lexica') self.assertEqual(vercode, '905') self.assertEqual(sigfp, 'c82e0f6') appid, vercode, sigfp = fdroidserver.common.apk_parse_release_filename('beverly_hills-90210.apk') self.assertEqual(appid, None) self.assertEqual(vercode, None) self.assertEqual(sigfp, None) def test_metadata_find_developer_signature(self): sig = fdroidserver.common.metadata_find_developer_signature('org.smssecure.smssecure') self.assertEqual('b30bb971af0d134866e158ec748fcd553df97c150f58b0a963190bbafbeb0868', sig) def test_parse_androidmanifests(self): source_files_dir = os.path.join(os.path.dirname(__file__), 'source-files') app = fdroidserver.metadata.App() app.id = 'org.fdroid.fdroid' paths = [ os.path.join(source_files_dir, 'fdroid', 'fdroidclient', 'AndroidManifest.xml'), os.path.join(source_files_dir, 'fdroid', 'fdroidclient', 'build.gradle'), ] for path in paths: self.assertTrue(os.path.isfile(path)) self.assertEqual(('0.94-test', '940', 'org.fdroid.fdroid'), fdroidserver.common.parse_androidmanifests(paths, app)) def test_parse_androidmanifests_with_flavor(self): source_files_dir = os.path.join(os.path.dirname(__file__), 'source-files') app = fdroidserver.metadata.App() build = fdroidserver.metadata.Build() build.gradle = ['devVersion'] app.builds = [build] app.id = 'org.fdroid.fdroid.dev' paths = [ os.path.join(source_files_dir, 'fdroid', 'fdroidclient', 'AndroidManifest.xml'), os.path.join(source_files_dir, 'fdroid', 'fdroidclient', 'build.gradle'), ] for path in paths: self.assertTrue(os.path.isfile(path)) self.assertEqual(('0.95-dev', '949', 'org.fdroid.fdroid.dev'), fdroidserver.common.parse_androidmanifests(paths, app)) app = fdroidserver.metadata.App() build = fdroidserver.metadata.Build() build.gradle = ['free'] app.builds = [build] app.id = 'eu.siacs.conversations' paths = [ os.path.join(source_files_dir, 'eu.siacs.conversations', 'build.gradle'), ] for path in paths: self.assertTrue(os.path.isfile(path)) self.assertEqual(('1.23.1', '245', 'eu.siacs.conversations'), fdroidserver.common.parse_androidmanifests(paths, app)) app = fdroidserver.metadata.App() build = fdroidserver.metadata.Build() build.gradle = ['generic'] app.builds = [build] app.id = 'com.nextcloud.client' paths = [ os.path.join(source_files_dir, 'com.nextcloud.client', 'build.gradle'), ] for path in paths: self.assertTrue(os.path.isfile(path)) self.assertEqual(('2.0.0', '20000099', 'com.nextcloud.client'), fdroidserver.common.parse_androidmanifests(paths, app)) app = fdroidserver.metadata.App() build = fdroidserver.metadata.Build() build.gradle = ['versionDev'] app.builds = [build] app.id = 'com.nextcloud.android.beta' paths = [ os.path.join(source_files_dir, 'com.nextcloud.client', 'build.gradle'), ] for path in paths: self.assertTrue(os.path.isfile(path)) self.assertEqual(('20171223', '20171223', 'com.nextcloud.android.beta'), fdroidserver.common.parse_androidmanifests(paths, app)) app = fdroidserver.metadata.App() build = fdroidserver.metadata.Build() build.gradle = ['standard'] app.builds = [build] app.id = 'at.bitfire.davdroid' paths = [ os.path.join(source_files_dir, 'at.bitfire.davdroid', 'build.gradle'), ] for path in paths: self.assertTrue(os.path.isfile(path)) self.assertEqual(('1.9.8.1-ose', '197', 'at.bitfire.davdroid'), fdroidserver.common.parse_androidmanifests(paths, app)) app = fdroidserver.metadata.App() build = fdroidserver.metadata.Build() build.gradle = ['libre'] app.builds = [build] app.id = 'com.kunzisoft.fdroidtest.applicationidsuffix.libre' paths = [ os.path.join(source_files_dir, 'com.kunzisoft.testcase', 'build.gradle'), ] for path in paths: self.assertTrue(os.path.isfile(path)) self.assertEqual(('1.0-libre', '1', 'com.kunzisoft.fdroidtest.applicationidsuffix.libre'), fdroidserver.common.parse_androidmanifests(paths, app)) app = fdroidserver.metadata.App() build = fdroidserver.metadata.Build() build.gradle = ['pro'] app.builds = [build] app.id = 'com.kunzisoft.fdroidtest.applicationidsuffix.pro' paths = [ os.path.join(source_files_dir, 'com.kunzisoft.testcase', 'build.gradle'), ] for path in paths: self.assertTrue(os.path.isfile(path)) self.assertEqual(('20180430-pro', '20180430', 'com.kunzisoft.fdroidtest.applicationidsuffix.pro'), fdroidserver.common.parse_androidmanifests(paths, app)) app = fdroidserver.metadata.App() build = fdroidserver.metadata.Build() build.gradle = ['free'] app.builds = [build] app.id = 'com.kunzisoft.fdroidtest.applicationidsuffix' paths = [ os.path.join(source_files_dir, 'com.kunzisoft.testcase', 'build.gradle'), ] for path in paths: self.assertTrue(os.path.isfile(path)) self.assertEqual(('1.0-free', '1', 'com.kunzisoft.fdroidtest.applicationidsuffix'), fdroidserver.common.parse_androidmanifests(paths, app)) def test_calculate_math_string(self): self.assertEqual(1234, fdroidserver.common.calculate_math_string('1234')) self.assertEqual(4, fdroidserver.common.calculate_math_string('(1+1)*2')) self.assertEqual(2, fdroidserver.common.calculate_math_string('(1-1)*2+3*1-1')) with self.assertRaises(SyntaxError): fdroidserver.common.calculate_math_string('__import__("urllib")') with self.assertRaises(SyntaxError): fdroidserver.common.calculate_math_string('self') with self.assertRaises(SyntaxError): fdroidserver.common.calculate_math_string('1+1; print(1)') with self.assertRaises(SyntaxError): fdroidserver.common.calculate_math_string('1-1 # no comment') if __name__ == "__main__": parser = optparse.OptionParser() parser.add_option("-v", "--verbose", action="store_true", default=False, help="Spew out even more information than normal") (fdroidserver.common.options, args) = parser.parse_args(['--verbose']) newSuite = unittest.TestSuite() newSuite.addTest(unittest.makeSuite(CommonTest)) unittest.main(failfast=False) fdroidserver-1.0.9/tests/urzip-release.apk0000664000175000017500000002621613323343071020561 0ustar hanshans00000000000000PKbEDy+AndroidManifest.xmlKo[UNbHqrc'~\ǏѴ@*iEҰp:džU5kKuP5 ?ss=gwf{sDũ&*Sv#; t Qաcg/T݀ЗЏ?D( }5o("jA'/Sw(2D ݅c 4!\R5ۂ[*^cȱ Ft^Ѡ7)kwUWA}M>TOsI֐j+?DS>g t[ZgglgTC̾t%v.9RV*{݃&}9ޣ RUDa))k*S 5VUs h:xlU#%J K#!);΁k >K^bgv]vOyW]ki׶yx,3¥C_>ۈڢ눋C(#t*AGnci\G &]U>uӸ;6-vb߆T|F0їsf̌qazN4#f|Gs}G$߈& 'Lq9Cr BI(-CYbs~=z75;*C7$}d9Dbs?(xAՉk΋-b57!yTgǤhylJ,^cu7uSFP[cCo;n ([c0Ѝ?"܏zcTcϺ󉋏K¾njx57'9gy IMm^r֜6탷 7m|b^GKh<3;r- oIl|$Ŗ֘7X}>7)%oi-uߺoYx/i-w*"gy<^XxxE5^+Wxe˳sxFz+;gxwooa^PKDy+PK bE=-res/drawable/ic_launcher.pngPNG  IHDRw=LIDATHǥyPuƟ{².˲ 8ႈ 628yr OCM5V^ʡbY"0,,{DPXϟ>ߋ4zљp a22x@-q &6'xnب4Ռs-<!a^zD\W6=YMQ2ɗw|՟-f̶vJA؜s1Ym®n>/]ҹr8୔@(r1.}j:Oi> DowJ'CRRVJ eMPy|{|7sRNQy(KNnቹM{p՝Ғ6Q:h++-LxȄsՆIT~M≹\{V{TTX@vL (Ćyq]zAnBFZmHocs  Çd6ihh CCfQ!j2OPSեlUY G?15t"GUˢy*(M6\$""DJiujdo5GcF^G"@ Vx\|T$SgOt ::erOK\]Ϟb¶hӫnZ>5^7 S~6B3Щb#RجJ[ =64%1N ('5+٥bvTD%W< `y*VnJK6͵[h8l3PA$M;QZ1[,U3|.nlIuG2 3 eb2V'0`ę&Uڂg ,.!蒎Q1 F|UJvuӆaL06 cLzN׎zXYٹLGBr8#0LmMOS7onDVv͞} DLژ.C{e 󳵴&cY,ZKSiZ=I`҇6%]Nm},ŅU5SN܈mݷ<65}E޷'0CקԄf.̙3;EnK=_d*/r.Ѵ#>)?/Ԟ H\o7aU%(|${hjǜIL~ cS/LҘPPX"1sgsLuP!!"@&849^1|'3}ȕs_-]$IVM1,,D-aEDA̤rIENDB`PKbES Lres/layout/activity_main.xmluN@=[$BHA"5%$ 'Ql*x$ G;es;wofw} ƘMCt- G«& 99w%fmF)B[nTχUПg!F$~"u.m*~RUx:R}o{EO١R3~`)6d?Tޟ#]{ȣ>64u6Z?p̑?gqդ~,ᛙPKS LPK cEresources.arsc 0<xres/drawable/ic_launcher.pngres/layout/activity_main.xmlurzipSettings Hello world! info.guardianproject.urzip l, 0attrdrawablelayoutstring08Ln ic_launcher activity_mainapp_nameaction_settings hello_worldDXH0DXH0DP0 PKbE_>P classes.dex{p\u޽j%Yڗl]e,?f%XJ{-]{u,9 6!0 BC4fڐtJNNN6gڴ`IBﱫkaHs~wd/FnNګ~'-ѱUo]MT!:H]!J>B:ZoBB2!_A0B4ȌIx</ooo_NtApLs w a%7}6c`v!0.ς~]Da4 }x "D V` -`; g"x< _o 4YPVpA0 >WW7wk['=%A [x@"x \/???ow#>u`wU(x 6x|| cm5}4CD9X-@k@/0A(\` `6`Pa0f l[p(]v8  _i#jSPRJ_-@Js]Wz'TLcRqxMڹS77POw(]U롔yU\I{(}UjY~P怾- z<ux6@~'aSRr6>ǡE\(yZ 9GyJ"Ra%/B2D,$*WΈ9M/SqBH,+̗h "OHY=M!{sB+ח,צdJv%;㑲[4M Bƕ SI}\ȼ&}V(߅#B1!tVɲQ%?3bgDnR'ž {Zӈ#n2! uN/#-Ƭ?/kI-楿+d  JF__8wd-<ۂ{4wR&5GFm𿔗|Nc8XyyvSisb0$yn:Q F-e_ _v5$|#+V_ST ȵ^7Պ!rhz.k-}Iˢyv8+h]Ti}8Mh=)>F='d8T=Cr_`1:F*fVqrsfdsr=u!Vmx/@:7!Q#"jL-wx}vn;' /$|d-j8~v~λacxy0&!r-b~Y>ţΙ-Mm}'XGd]O|89yW+f0ڨ`dރt<\? W ݏBM=/nj dN#J ,30[rVѷ"[8c}I԰7gAOOYf効AAڣsӊow |pl&}[ #Yo;ɀ&R>.⡡ό^#jgۃ^ @Ei75nGXxGx#z*{T%\G(8#|.1~.ύiA;چ{%ns w +[ӯk V|r&SRT?3_SZ˽l5kV:WI!V{N #kMS3Wz&\v><ݛ+w+yr4s=J!FQ*#i:ֶR69:::&ǢBsͼ|w m^ޱ"oE+%f*7j="S|xqrmRrܨ`]Y&b/eǟz7`꽀#4q >If3I*&]qv"FN4湧١3ւEck^͜mf%7)1;+ƾ{Pϸ{y~)ۦX4OS|i$v NLPĐfuOXnҰU ETL>5ۭ HMk׆"u5M^uxouɝguE Gnliל7[D*/8g-A8 Syֽk^?"݇tZ9H6NCg,؇# xo@ #}4ȸ>*,;IzYq*+}VGvf3z,{˴=,3lˮaI<,n\eXHצ9& c ,1ƽaz 3h?ԩe6`$kpnjcmEXCkю}MTS{=E'iϤ2m,-GSC}Z 3i=}KzgzkZer-әYw<#"/%FPӋ,=&޺G..w2tAih/w&BbtKc/w'vx^%l7g;yn~25t]^& E2n7|n]J39Z{O͔'u_|gP{)ߋQSwPK_>PPKbEgyMETA-INF/MANIFEST.MFmj@} eDB&jl֪3_Ǒ̌+" ݾpN8+ wZo[7RP|o[5C έ$7=̶A9N|%fG KX|q$(KT}Mw2<=tOϗO _v J5-v Qj* u{/zR/(LAHFt{ǬGFǃ _D!.smKo{QQ=COu PKgyPKbEպ7META-INF/CERT.SFmKk@p">bBNhJ%n¨5cbB tw9p>w ")Due#YET[ 5G32Vx= !SQpq`D$!fغӾcK{etv;VI)< ';*U6-u6^f"D{ @u0|+!Y"؎}f}c#Xw4A i 7" xQL- ̽0??+!m@A_Cpe0P{GtPKպ7PKbE.1wMETA-INF/CERT.RSAU;ԋb!CwƮc)nBFa !K3h#K Iy/V'!BM9Wʸu{~yy 2QZvB2& DP( #b0@A˘(0z \SMP([J*p$ z/NaQVQ8YP;%M Ş'E)FSBNA!4VM)VڎcM !+yƇGĂ 283'dD p8h{c<,(c{ x @! H 8/Nz<+IBÄ5qJId)g;b9h`F;|``#VP7.KNE ӿ*65bDp}\}Y[Bw\vFKCU+Ure{gl:g6O.?ת}PpzS]|BdJ6a''QQC~) K 玬r]LIMvKJiP#`n0VS5$M4pCi N=An^_JO'W|PZwzՙ}Hz>,GNn+SX[ 4>֜k㭖dߴq ||͹,h~^en2b<0"g7?AN%76W-}*nݡ{mJv=|K2}J;L1 !ErJy^aiTROǪTHbpiEJu9;9Opvп\xp?%5ub^`حkS?z^yg ⣒pV^X/P2yg7ޅn*aAMDe8lϽ!tuND{ hվ(I؛6;&^n8uĂWl+ 9SB䠾rz|cy4쪅JIax_8īO#?Wh~~^:>4 4ܵ= 5өa=KzF7 4|3o>[Ӄ32Xz)*iK^Y$S,ߦeT׵`+aFB4al=;\J\XUn>5җF>wnT`*'$O/~`.8 b~"+>2ȦĶsP+TzI\ ujrk|Fv~p-^'DkmK[e|*Vchɡ+~^:]#e3ym\ɬtw[ WhjVmr\{vF7H]Dm?32$ts$[~P classes.dexPKbEgyMETA-INF/MANIFEST.MFPKbEպ7@!META-INF/CERT.SFPKbE.1w"META-INF/CERT.RSAPK k*fdroidserver-1.0.9/tests/gnupghome/0000775000175000017500000000000013324115531017256 5ustar hanshans00000000000000fdroidserver-1.0.9/tests/gnupghome/trustdb.gpg0000664000175000017500000000240013302025213021431 0ustar hanshans00000000000000gpgXI  uf:5q `o2ܟr޺mCD[efdroidserver-1.0.9/tests/gnupghome/pubring.gpg0000664000175000017500000000132413302025213021414 0ustar hanshans00000000000000XEUݺЧʜo#tV"ʖD-oY_)H8СAuIhG#r Mbp% 0.bN<|to?1(4X(p ʴnf 4'rUQFake F-Droid Test Signing Key (never use this for anything but tests) "X   q;Wʼ`~IH.3*>ׁ֦7֜ F"$=@0_h r +[E&wt |;dDcs怜^j4R!D}qw*9^XȤoWUV[gMm2xœ *e-u_n/Qx$u1R;ZvNsg S‚]6k?DƿΟA)iοn팣C52 S X qnfEtz 36[\M"CS 2tM1PȾ* =DBxxǛN!%1!:D kW?m''] ).-fdroidserver-1.0.9/tests/gnupghome/secring.gpg0000664000175000017500000000255413302025213021406 0ustar hanshans00000000000000XEUݺЧʜo#tV"ʖD-oY_)H8СAuIhG#r Mbp% 0.bN<|to?1(4X(p ʴnf 4'rUOwA6'3NcZE]#^63c(_@7z*RST^GWet ̺L. t果g ym #pk!IQ.("940R& 4~66. gH_͜o.)XGl!;b8`$H2l5hXFwdئІHQag'S=f(~Ьp`lZ,$K qS:AfMy7$mT#rT?6>TG_@-G7\@ձ1Қ>{-CM> %P:QFake F-Droid Test Signing Key (never use this for anything but tests) "X   q;Wʼ`~IH.3*>ׁ֦7֜ F"$=@0_h r +[E&wt |;dDcs怜^j4R!D}qw*9^XȤoWUV[gMm2xœ *e-u_n/Qx$u1R;ZvNsg S‚]6k?DƿΟA)iοn팣C52 S; b4} 7ln~Hbf=21ºfg z6w$Dm۝gmlsoQgFR Тiyv5D9%<8QA5R"USǻ`%'4-7ffV,kޘ?}S 4k`,Ҷ#Sa/9ԛ*J_+eKYjjN29R <3#qA7D7c|j ۘ_#)ynF(HE.{=j7GeɁu[9Z5A qؙF? ؈ X qnfEtz 36[\M"CS 2tM1PȾ* =DBxxǛN!%1!:D kW?m''] ).-fdroidserver-1.0.9/tests/gnupghome/random_seed0000664000175000017500000000113013243530567021466 0ustar hanshans00000000000000].)l$*aqyF~PLs5?=X:j'3`mDC3E UYX#)}tپ2=K- U[QXnڼpMpA5#r_ xK!3@wl;/V^p*"ʧc͈꧇{ʜFՅ=P 4YP2G@iOJs,T'vzv`ޮ*vSEza8S'`uphR`Zp?1>xjw(QzLr *3:t `ZBDr|rWZ!!C"$dC[| S!f\X*A9> l7c_m$wK9l? 05 &xd~'_ڽ/'B5tVQܟj> fdroidserver-1.0.9/tests/complete-ci-tests0000775000175000017500000000407613303240575020567 0ustar hanshans00000000000000#!/bin/bash # # this is the script run by the Jenkins and gitlab-ci continuous integration # build services. It is a thorough set of tests that runs all the tests using # the various methods of installing/running fdroidserver. It is separate from # ./tests/run-tests because its too heavy for manual use. if [ `dirname $0` != "." ]; then echo "only run this script like ./`basename $0`" exit 1 fi set -e set -x if [ -z $WORKSPACE ]; then WORKSPACE=`cd $(dirname $0)/.. && pwd` echo "Setting Workspace to $WORKSPACE" fi if [ -z $ANDROID_HOME ]; then if [ -e ~/.android/bashrc ]; then . ~/.android/bashrc else echo "ANDROID_HOME must be set!" exit 1 fi fi if ! which pyvenv; then echo "pyvenv required to run this test suite!" exit 1 fi apksource=$1 #------------------------------------------------------------------------------# # cache pypi downloads if [ -z $PIP_DOWNLOAD_CACHE ]; then export PIP_DOWNLOAD_CACHE=$HOME/.pip_download_cache fi #------------------------------------------------------------------------------# # run local tests, don't scan fdroidserver/ project for APKs cd $WORKSPACE/tests ./run-tests $apksource #------------------------------------------------------------------------------# # make sure that translations do not cause stacktraces cd $WORKSPACE/locale for locale in *; do if [ ! -d $locale ]; then continue fi for cmd in `sed -n 's/.*("\(.*\)", *_.*/\1/p' $WORKSPACE/fdroid`; do LANGUAGE=$locale $WORKSPACE/fdroid $cmd --help > /dev/null done done #------------------------------------------------------------------------------# # test install using install direct from git repo cd $WORKSPACE rm -rf $WORKSPACE/env pyvenv $WORKSPACE/env . $WORKSPACE/env/bin/activate pip3 install --quiet -e $WORKSPACE python3 setup.py compile_catalog install # make sure translation files were installed test -e $WORKSPACE/env/share/locale/de/LC_MESSAGES/fdroidserver.mo # run tests in new pip+pyvenv install fdroid=$WORKSPACE/env/bin/fdroid $WORKSPACE/tests/run-tests $apksource fdroidserver-1.0.9/tests/urzip.apk0000664000175000017500000002336113323343072017142 0ustar hanshans00000000000000PK OC=-res/drawable/ic_launcher.pngPNG  IHDRw=LIDATHǥyPuƟ{².˲ 8ႈ 628yr OCM5V^ʡbY"0,,{DPXϟ>ߋ4zљp a22x@-q &6'xnب4Ռs-<!a^zD\W6=YMQ2ɗw|՟-f̶vJA؜s1Ym®n>/]ҹr8୔@(r1.}j:Oi> DowJ'CRRVJ eMPy|{|7sRNQy(KNnቹM{p՝Ғ6Q:h++-LxȄsՆIT~M≹\{V{TTX@vL (Ćyq]zAnBFZmHocs  Çd6ihh CCfQ!j2OPSեlUY G?15t"GUˢy*(M6\$""DJiujdo5GcF^G"@ Vx\|T$SgOt ::erOK\]Ϟb¶hӫnZ>5^7 S~6B3Щb#RجJ[ =64%1N ('5+٥bvTD%W< `y*VnJK6͵[h8l3PA$M;QZ1[,U3|.nlIuG2 3 eb2V'0`ę&Uڂg ,.!蒎Q1 F|UJvuӆaL06 cLzN׎zXYٹLGBr8#0LmMOS7onDVv͞} DLژ.C{e 󳵴&cY,ZKSiZ=I`҇6%]Nm},ŅU5SN܈mݷ<65}E޷'0CקԄf.̙3;EnK=_d*/r.Ѵ#>)?/Ԟ H\o7aU%(|${hjǜIL~ cS/LҘPPX"1sgsLuP!!"@&849^1|'3}ȕs_-]$IVM1,,D-aEDA̤rIENDB`PKOCres/layout/activity_main.xmluN@=[$BHA"5%$ 'Ql*x$ G;es;wofw} ƘMCt- G«& 99w%fmF)B[nTχUПg!F$~"u.m*~RUx:R}o{EO١R3~`)6d?Tޟ#]{ȣ>64u6Z?p̑?gqդ~,ᛙPKS LPKOCAndroidManifest.xmlKoSGϵM'ǘR"!Tmqh˦E,.. 좟U V,*枩'|WϽg͙3sQS:AQuS8OA MzQz } }="4TCC?CA@D_@@/ 1eh ZBB/} =~z -Uh%oriG{vhxlإi٧*zb#(:bquT;8ؾWgW*} ۺ0qUaںʓ}Xo-V ^QwA-ܷ}5qm { hUBY- {V越UH^ʛ_U?|}!Q*2`1kQű*UЫW9tO#/");W `WKz: ԡ:o"]sBֻZ%BKo/D]ˈKwJ(Tf@hUwӦ)}*k[mWh -чo;EuĮ EFo>¿'z=zlNsq:t9vMtLI3ds&=>yiBy @Qhf[)fv4ώS܆B-bng$3ƘI܆CF7bTިF ^K aoބ؎i`cY,mwD̈́ߤ2iqoM5C7e&az$yώӼ5wНwӷ>\?.>уl=?ȿ|㫝D%"Z+Iz$4_׉!DW!<# '@vz]`<s"x.WWkSo& ^@w3N?~2 Z=A~:x|wi#{ȃx|?~| 0A?#` <΁ge m{m:1oN-`O<(3<" p~|>,)`<  2x| :'`C`^4`^"#t`,&Ly@70A%97` `lwmj] ;Np' `#S`<)pn"jRPJ/@oTz :9i*u]kZI<+8<$\Q c*{RUY_Q:Հ~Eݨʎx մ '`ˀ~-_Я+:? 䙂>߯i4-*ʤ$ǩJrVpDɣJE,[eq H*("8-dqX YO{,Ec b!uHr հ<+s>:>,|ƃ2t? C߂/!}!Tv=dsk{}1YoU)/^D^ʮпʺ{w!W(S!ȾwUjI#hpFϒkWAzk5ِF9"t7Oky>ZXJn:\MlAbZs3梛h@O b1:A+Ml#e?ON{LFΑ6~+vǩfs;E{Ȳղ eJ=(G|>#f2H!pih 4vF <|p;x ~6j'>EEDy>l q(هSWoG_(u'l܊ s㑭9io1a3iFgGy$⠉8ı&JF'B VY]cЋ>hc(&5( Gt.φpsOkޭoҾ.mq\ˆ"PxVD%"<\ Ӓ뉢?WFy_ن]͛?;m)zns,?}3&6ܯ5UϓY9gY'sS!uVJ:FuP9&6uDT=WJ5{L8JV>׮W̝Ϣh> ER%{66o6=C:Ӓ鱨\l  EoL'֥;ץץT4?|LĹoxp٫|[C-J(-3S2c)[U>s95E!\!5еYj܂9U*S9;L=ۭ&ǵ+G}gj&_>槭@A0UP)Y3V+N17ST*.9r wE[+Z0u$Ϥھ^<2Ȳ&Y:UY&;S;櫖_p,{'|%WrJHrw-oMVS3|uv3^f+W|Ĝvن)w;S*&ɰS_+9CTl.Ljhdwkp7NQi0}c޶or.lfi/Z|n󊶵V0ṄO΀푪[q[8& )ZP:+z]œ󟌪eJ1!Ч5c :2TEJv)\-x["c*V1B`t3wĬ Q7ɜHNsi6e3k "{괬k,fCXX; HSxGq~IK e;W#tdh,*38gq sSE^]Nz}J6q(bݘ3b#QRN5EAr^ýs*^5 vx;vΨ7h*+>ރEM!b2 >j2,4X7$+a0shNbk(-f_.|PKl=T,7PKOCMETA-INF/CERT.RSA3hbfajhδAG&FFCnN6Vm>f&)Vn"M/ f&F&&FS^FVs ̡,lL| 0c^JQ~fHY*Tn 'khd`dhfddd`l%kX@8ٍ ̍ L w;',fڦQV^:|Ʊ  F;f\=oOz<*}yC7Zl//23J^w0ɯy_U0|I7'ܘvg&ݳĽ hA t/'k?LVprsV7Yʮ}:FKO6{Ul{[kP–k2ئq/2klj+~=}$!ۿ*%,sҸ-}&c˪ޠ^aKaZj6>1h|Ld<4} %'h`il6Z&G}U&gk7ޒ:!r _{[սrYFi3.WݫegOnP:g؞[7,|iowi^ί-x΅ǟ_.6PK _PK OC=-res/drawable/ic_launcher.pngPKOCS Lres/layout/activity_main.xmlPKOCIדAndroidManifest.xmlPK OC?} resources.arscPKOCT~ classes.dexPKOC,bMETA-INF/MANIFEST.MFPKOCl=T,7 META-INF/CERT.SFPKOC _0"META-INF/CERT.RSAPK $fdroidserver-1.0.9/tests/run-tests0000775000175000017500000011526213321737333017175 0ustar hanshans00000000000000#!/bin/bash set -e # quit script on error echo_header() { { echo -e "==============================================================================\n$1"; } 2>/dev/null } get_fdroid_apk_filename() { if [ -z $aapt ]; then python3 -c "from androguard.core.bytecodes.apk import APK; a=APK('$1'); print(a.package+'_'+a.get_androidversion_code()+'.apk')" else $aapt dump badging "$1" | sed -n "s,^package: name='\(.*\)' versionCode='\([0-9][0-9]*\)' .*,\1_\2.apk,p" fi } copy_apks_into_repo() { set +x find $APKDIR -type f -name '*.apk' -print0 | while IFS= read -r -d '' f; do echo $f | grep -F -v -e unaligned -e unsigned -e badsig -e badcert -e bad-unicode -e janus.apk || continue apk=`get_fdroid_apk_filename "$f"` test "$f" -nt repo/$apk && rm -f repo/$apk # delete existing if $f is newer if [ ! -e repo/$apk ] && [ ! -e archive/$apk ]; then echo "$f --> repo/$apk" ln "$f" $1/repo/$apk || \ rsync -axv "$f" $1/repo/$apk # rsync if hard link is not possible fi done set -x } # keep this as an old version to test the automatic parsing of build-tools # verion numbers in `fdroid init` create_fake_android_home() { mkdir $1/tools mkdir $1/platform-tools mkdir $1/build-tools mkdir $1/build-tools/19.0.2 touch $1/build-tools/19.0.2/aapt } create_test_dir() { test -e $WORKSPACE/.testfiles || mkdir $WORKSPACE/.testfiles mktemp -d $WORKSPACE/.testfiles/run-tests.XXXX } create_test_file() { test -e $WORKSPACE/.testfiles || mkdir $WORKSPACE/.testfiles TMPDIR=$WORKSPACE/.testfiles mktemp } fdroid_init_with_prebuilt_keystore() { if [ -z "$1" ]; then keystore=$WORKSPACE/tests/keystore.jks else keystore="$1" fi $fdroid init --keystore $keystore --repo-keyalias=sova echo 'keystorepass = "r9aquRHYoI8+dYz6jKrLntQ5/NJNASFBacJh7Jv2BlI="' >> config.py echo 'keypass = "r9aquRHYoI8+dYz6jKrLntQ5/NJNASFBacJh7Jv2BlI="' >> config.py } # the < is reverse since 0 means success in exit codes have_git_2_3() { python3 -c "import sys; from distutils.version import LooseVersion as V; sys.exit(V(sys.argv[3]) < V('2.3'))" `git --version` } is_MD5_disabled() { javac $WORKSPACE/tests/IsMD5Disabled.java && java -cp $WORKSPACE/tests IsMD5Disabled return $? } #------------------------------------------------------------------------------# # "main" if [ "$1" = "-h" ] || [ "$1" = "--help" ]; then set +x echo "Usage: $0 '/path/to/folder/with/apks'" exit 1 fi if [ -z "$ANDROID_HOME" ]; then if python3 -c "import androguard"; then echo "ANDROID_HOME is not set, using androguard" else echo "ERROR: ANDROID_HOME is not set, androguard is not available!" exit 1 fi else echo "Using ANDROID_HOME=$ANDROID_HOME" fi if [ -d tests ]; then cd tests fi if [ -z "$1" ]; then APKDIR=`pwd` else APKDIR=$1 fi if [ -z $WORKSPACE ]; then WORKSPACE=`dirname $(pwd)` echo "Setting Workspace to $WORKSPACE" fi # allow the location of the script to be overridden if [ -z $fdroid ]; then fdroid="$WORKSPACE/fdroid" fi # allow the location of aapt to be overridden if [ -z $aapt ]; then aapt=`ls -1 $ANDROID_HOME/build-tools/*/aapt 2> /dev/null | sort | tail -1` fi # try to use GNU sed on OSX/BSD cuz BSD sed sucks if which gsed; then sed=gsed else sed=sed fi set -x # show each command as it is executed #------------------------------------------------------------------------------# echo_header "run commit hooks" cd $WORKSPACE ./hooks/pre-commit #------------------------------------------------------------------------------# echo_header "test python getsig replacement" cd $WORKSPACE/tests/getsig ./make.sh cd $WORKSPACE/tests for testcase in $WORKSPACE/tests/i*.TestCase; do if [ $testcase == $WORKSPACE/tests/install.TestCase ]; then echo "skipping install.TestCase, its too troublesome in CI builds" continue fi $testcase done #------------------------------------------------------------------------------# echo_header "print fdroid version" $fdroid --version #------------------------------------------------------------------------------# echo_header 'run process when building and signing are on separate machines' if which zipalign || ls -1 $ANDROID_HOME/build-tools/*/zipalign; then REPOROOT=`create_test_dir` cd $REPOROOT cp $WORKSPACE/tests/keystore.jks $REPOROOT/ $fdroid init --keystore keystore.jks --repo-keyalias=sova echo 'keystorepass = "r9aquRHYoI8+dYz6jKrLntQ5/NJNASFBacJh7Jv2BlI="' >> config.py echo 'keypass = "r9aquRHYoI8+dYz6jKrLntQ5/NJNASFBacJh7Jv2BlI="' >> config.py echo "accepted_formats = ['txt', 'yml']" >> config.py echo 'keydname = "CN=Birdman, OU=Cell, O=Alcatraz, L=Alcatraz, S=California, C=US"' >> config.py test -d archive || mkdir archive test -d metadata || mkdir metadata cp $WORKSPACE/tests/metadata/info.guardianproject.urzip.yml metadata/ test -d repo || mkdir repo test -d unsigned || mkdir unsigned cp $WORKSPACE/tests/urzip-release-unsigned.apk unsigned/info.guardianproject.urzip_100.apk $fdroid publish --verbose $fdroid update --verbose --nosign $fdroid signindex --verbose test -e repo/index.xml test -e repo/index.jar test -e repo/index-v1.jar test -e tmp/apkcache ! test -z tmp/apkcache test -L urzip.apk grep -F '> config.py mkdir metadata cp $WORKSPACE/tests/urzip.apk $WORKSPACE/tests/bad-unicode*.apk repo/ cp $WORKSPACE/tests/metadata/info.guardianproject.urzip.yml metadata/ $fdroid readmeta $fdroid update #------------------------------------------------------------------------------# echo_header 'run "fdroid build" in fresh git checkout from import.TestCase' cd $WORKSPACE/tests/tmp/importer git remote update -p git clean -fdx # stick with known working commit, in case future commits break things for this code git reset --hard fea54e1161d5eb9eb1a54e26253ef84d3ab63705 if [ -d $ANDROID_HOME/platforms/android-23 && -d $ANDROID_HOME/build-tools/23.0.3 ]; then echo "build_tools = '`ls -1 $ANDROID_HOME/build-tools/ | sort -n | tail -1`'" > config.py echo "force_build_tools = True" >> config.py $fdroid build --verbose org.fdroid.ci.test.app:300 else echo 'WARNING: Skipping "fdroid build" test since android-23 is missing!' fi #------------------------------------------------------------------------------# echo_header 'copy git import and run "fdroid scanner" on it' REPOROOT=`create_test_dir` cd $REPOROOT cp $WORKSPACE/examples/fdroid-icon.png $REPOROOT/ mkdir metadata echo "Auto Name:Just A Test" > metadata/org.fdroid.ci.test.app.txt echo "Web Site:" >> metadata/org.fdroid.ci.test.app.txt echo "Build:0.3,300" >> metadata/org.fdroid.ci.test.app.txt echo " commit=0.3" >> metadata/org.fdroid.ci.test.app.txt echo " subdir=app" >> metadata/org.fdroid.ci.test.app.txt echo " gradle=yes" >> metadata/org.fdroid.ci.test.app.txt echo "" >> metadata/org.fdroid.ci.test.app.txt echo "Repo:https://gitlab.com/fdroid/ci-test-app.git" >> metadata/org.fdroid.ci.test.app.txt echo "Repo Type:git" >> metadata/org.fdroid.ci.test.app.txt mkdir build cp -a $WORKSPACE/tests/tmp/importer build/org.fdroid.ci.test.app ls -l build/org.fdroid.ci.test.app $fdroid scanner org.fdroid.ci.test.app --verbose #------------------------------------------------------------------------------# echo_header "copy tests/repo, generate java/gpg keys, update, and gpgsign" REPOROOT=`create_test_dir` GNUPGHOME=$REPOROOT/gnupghome cd $REPOROOT fdroid_init_with_prebuilt_keystore cp -a $WORKSPACE/tests/metadata $WORKSPACE/tests/repo $WORKSPACE/tests/stats $REPOROOT/ cp -a $WORKSPACE/tests/gnupghome $GNUPGHOME chmod 0700 $GNUPGHOME echo "accepted_formats = ['json', 'txt', 'yml']" >> config.py echo "install_list = 'org.adaway'" >> config.py echo "uninstall_list = ('com.android.vending', 'com.facebook.orca',)" >> config.py echo "gpghome = '$GNUPGHOME'" >> config.py echo "gpgkey = 'CE71F7FB'" >> config.py echo "mirrors = ('http://foobarfoobarfoobar.onion/fdroid','https://foo.bar/fdroid',)" >> config.py $fdroid update --verbose --pretty test -e repo/index.xml test -e repo/index.jar test -e repo/index-v1.jar grep -F '> config.py $sed -i.tmp '/allow_disabled_algorithms/d' config.py test -d metadata || mkdir metadata cp $WORKSPACE/tests/metadata/*.txt metadata/ echo 'Summary:good test version of urzip' > metadata/info.guardianproject.urzip.txt echo 'Summary:good MD5 sig, which is disabled algorithm' > metadata/org.bitbucket.tickytacky.mirrormirror.txt $sed -i.tmp '/Archive Policy:/d' metadata/*.txt test -d repo || mkdir repo cp $WORKSPACE/tests/urzip.apk \ $WORKSPACE/tests/org.bitbucket.tickytacky.mirrormirror_[0-9].apk \ $WORKSPACE/tests/repo/com.politedroid_[0-9].apk \ $WORKSPACE/tests/repo/obb.main.twoversions_110161[357].apk \ repo/ $sed -i.tmp 's,archive_older = [0-9],archive_older = 3,' config.py $fdroid update --pretty --nosign echo "This will fail when jarsigner allows MD5 for APK signatures" test `grep '' archive/index.xml | wc -l` -eq 5 test `grep '' repo/index.xml | wc -l` -eq 7 #------------------------------------------------------------------------------# echo_header 'test per-app "Archive Policy"' REPOROOT=`create_test_dir` cd $REPOROOT fdroid_init_with_prebuilt_keystore echo "accepted_formats = ['txt']" >> config.py test -d metadata || mkdir metadata cp $WORKSPACE/tests/metadata/com.politedroid.txt metadata/ test -d repo || mkdir repo cp $WORKSPACE/tests/repo/com.politedroid_[0-9].apk repo/ $sed -i.tmp 's,archive_older = [0-9],archive_older = 3,' config.py $fdroid update --pretty --nosign test `grep '' archive/index.xml | wc -l` -eq 0 test `grep '' repo/index.xml | wc -l` -eq 4 grep -F com.politedroid_3.apk repo/index.xml grep -F com.politedroid_4.apk repo/index.xml grep -F com.politedroid_5.apk repo/index.xml grep -F com.politedroid_6.apk repo/index.xml test -e repo/com.politedroid_3.apk test -e repo/com.politedroid_4.apk test -e repo/com.politedroid_5.apk test -e repo/com.politedroid_6.apk echo "enable one app in the repo" $sed -i.tmp 's,^Archive Policy:4,Archive Policy:1,' metadata/com.politedroid.txt $fdroid update --pretty --nosign test `grep '' archive/index.xml | wc -l` -eq 3 test `grep '' repo/index.xml | wc -l` -eq 1 grep -F com.politedroid_3.apk archive/index.xml grep -F com.politedroid_4.apk archive/index.xml grep -F com.politedroid_5.apk archive/index.xml grep -F com.politedroid_6.apk repo/index.xml test -e archive/com.politedroid_3.apk test -e archive/com.politedroid_4.apk test -e archive/com.politedroid_5.apk test -e repo/com.politedroid_6.apk echo "remove all apps from the repo" $sed -i.tmp 's,^Archive Policy:1,Archive Policy:0,' metadata/com.politedroid.txt $fdroid update --pretty --nosign test `grep '' archive/index.xml | wc -l` -eq 4 test `grep '' repo/index.xml | wc -l` -eq 0 grep -F com.politedroid_3.apk archive/index.xml grep -F com.politedroid_4.apk archive/index.xml grep -F com.politedroid_5.apk archive/index.xml grep -F com.politedroid_6.apk archive/index.xml test -e archive/com.politedroid_3.apk test -e archive/com.politedroid_4.apk test -e archive/com.politedroid_5.apk test -e archive/com.politedroid_6.apk ! test -e repo/com.politedroid_6.apk echo "move back one from archive to the repo" $sed -i.tmp 's,^Archive Policy:0,Archive Policy:1,' metadata/com.politedroid.txt $fdroid update --pretty --nosign test `grep '' archive/index.xml | wc -l` -eq 3 test `grep '' repo/index.xml | wc -l` -eq 1 grep -F com.politedroid_3.apk archive/index.xml grep -F com.politedroid_4.apk archive/index.xml grep -F com.politedroid_5.apk archive/index.xml grep -F com.politedroid_6.apk repo/index.xml test -e archive/com.politedroid_3.apk test -e archive/com.politedroid_4.apk test -e archive/com.politedroid_5.apk ! test -e archive/com.politedroid_6.apk test -e repo/com.politedroid_6.apk #------------------------------------------------------------------------------# echo_header 'test moving old APKs to and from the archive' REPOROOT=`create_test_dir` cd $REPOROOT fdroid_init_with_prebuilt_keystore echo "accepted_formats = ['txt']" >> config.py test -d metadata || mkdir metadata cp $WORKSPACE/tests/metadata/com.politedroid.txt metadata/ $sed -i.tmp '/Archive Policy:/d' metadata/com.politedroid.txt test -d repo || mkdir repo cp $WORKSPACE/tests/repo/com.politedroid_[0-9].apk repo/ $sed -i.tmp 's,archive_older = [0-9],archive_older = 3,' config.py $fdroid update --pretty --nosign test `grep '' archive/index.xml | wc -l` -eq 1 test `grep '' repo/index.xml | wc -l` -eq 3 grep -F com.politedroid_3.apk archive/index.xml grep -F com.politedroid_4.apk repo/index.xml grep -F com.politedroid_5.apk repo/index.xml grep -F com.politedroid_6.apk repo/index.xml test -e archive/com.politedroid_3.apk test -e repo/com.politedroid_4.apk test -e repo/com.politedroid_5.apk test -e repo/com.politedroid_6.apk $sed -i.tmp 's,archive_older = 3,archive_older = 1,' config.py $fdroid update --pretty --nosign test `grep '' archive/index.xml | wc -l` -eq 3 test `grep '' repo/index.xml | wc -l` -eq 1 grep -F com.politedroid_3.apk archive/index.xml grep -F com.politedroid_4.apk archive/index.xml grep -F com.politedroid_5.apk archive/index.xml grep -F com.politedroid_6.apk repo/index.xml test -e archive/com.politedroid_3.apk test -e archive/com.politedroid_4.apk test -e archive/com.politedroid_5.apk test -e repo/com.politedroid_6.apk # disabling deletes from the archive $sed -i.tmp 's/Build:1.3,4/Build:1.3,4\n disable=testing deletion/' metadata/com.politedroid.txt $fdroid update --pretty --nosign test `grep '' archive/index.xml | wc -l` -eq 2 test `grep '' repo/index.xml | wc -l` -eq 1 grep -F com.politedroid_3.apk archive/index.xml ! grep -F com.politedroid_4.apk archive/index.xml grep -F com.politedroid_5.apk archive/index.xml grep -F com.politedroid_6.apk repo/index.xml test -e archive/com.politedroid_3.apk ! test -e archive/com.politedroid_4.apk test -e archive/com.politedroid_5.apk test -e repo/com.politedroid_6.apk # disabling deletes from the repo, and promotes one from the archive $sed -i.tmp 's/Build:1.5,6/Build:1.5,6\n disable=testing deletion/' metadata/com.politedroid.txt $fdroid update --pretty --nosign test `grep '' archive/index.xml | wc -l` -eq 1 test `grep '' repo/index.xml | wc -l` -eq 1 grep -F com.politedroid_3.apk archive/index.xml grep -F com.politedroid_5.apk repo/index.xml ! grep -F com.politedroid_6.apk repo/index.xml test -e archive/com.politedroid_3.apk test -e repo/com.politedroid_5.apk ! test -e repo/com.politedroid_6.apk #------------------------------------------------------------------------------# echo_header 'test that verify can succeed and fail' REPOROOT=`create_test_dir` cd $REPOROOT test -d tmp || mkdir tmp test -d unsigned || mkdir unsigned cp $WORKSPACE/tests/repo/com.politedroid_6.apk tmp/ cp $WORKSPACE/tests/repo/com.politedroid_6.apk unsigned/ $fdroid verify --reuse-remote-apk --verbose com.politedroid # force a fail cp $WORKSPACE/tests/repo/com.politedroid_5.apk unsigned/com.politedroid_6.apk ! $fdroid verify --reuse-remote-apk --verbose com.politedroid #------------------------------------------------------------------------------# echo_header 'test allowing disabled signatures in repo and archive' REPOROOT=`create_test_dir` cd $REPOROOT fdroid_init_with_prebuilt_keystore echo "accepted_formats = ['txt']" >> config.py echo 'allow_disabled_algorithms = True' >> config.py $sed -i.tmp 's,archive_older = [0-9],archive_older = 3,' config.py test -d metadata || mkdir metadata cp $WORKSPACE/tests/metadata/com.politedroid.txt metadata/ echo 'Summary:good test version of urzip' > metadata/info.guardianproject.urzip.txt echo 'Summary:good MD5 sig, disabled algorithm' > metadata/org.bitbucket.tickytacky.mirrormirror.txt $sed -i.tmp '/Archive Policy:/d' metadata/*.txt test -d repo || mkdir repo cp $WORKSPACE/tests/repo/com.politedroid_[0-9].apk \ $WORKSPACE/tests/org.bitbucket.tickytacky.mirrormirror_[0-9].apk \ $WORKSPACE/tests/urzip-badsig.apk \ repo/ $fdroid update --pretty --nosign test `grep '' archive/index.xml | wc -l` -eq 2 test `grep '' repo/index.xml | wc -l` -eq 6 grep -F com.politedroid_3.apk archive/index.xml grep -F com.politedroid_4.apk repo/index.xml grep -F com.politedroid_5.apk repo/index.xml grep -F com.politedroid_6.apk repo/index.xml grep -F org.bitbucket.tickytacky.mirrormirror_1.apk archive/index.xml grep -F org.bitbucket.tickytacky.mirrormirror_2.apk repo/index.xml grep -F org.bitbucket.tickytacky.mirrormirror_3.apk repo/index.xml grep -F org.bitbucket.tickytacky.mirrormirror_4.apk repo/index.xml ! grep -F urzip-badsig.apk repo/index.xml ! grep -F urzip-badsig.apk archive/index.xml test -e archive/com.politedroid_3.apk test -e repo/com.politedroid_4.apk test -e repo/com.politedroid_5.apk test -e repo/com.politedroid_6.apk test -e archive/org.bitbucket.tickytacky.mirrormirror_1.apk test -e repo/org.bitbucket.tickytacky.mirrormirror_2.apk test -e repo/org.bitbucket.tickytacky.mirrormirror_3.apk test -e repo/org.bitbucket.tickytacky.mirrormirror_4.apk test -e archive/urzip-badsig.apk $sed -i.tmp '/allow_disabled_algorithms/d' config.py $fdroid update --pretty --nosign test `grep '' archive/index.xml | wc -l` -eq 5 test `grep '' repo/index.xml | wc -l` -eq 3 grep -F org.bitbucket.tickytacky.mirrormirror_1.apk archive/index.xml grep -F org.bitbucket.tickytacky.mirrormirror_2.apk archive/index.xml grep -F org.bitbucket.tickytacky.mirrormirror_3.apk archive/index.xml grep -F org.bitbucket.tickytacky.mirrormirror_4.apk archive/index.xml grep -F com.politedroid_3.apk archive/index.xml grep -F com.politedroid_4.apk repo/index.xml grep -F com.politedroid_5.apk repo/index.xml grep -F com.politedroid_6.apk repo/index.xml ! grep -F urzip-badsig.apk repo/index.xml ! grep -F urzip-badsig.apk archive/index.xml test -e archive/org.bitbucket.tickytacky.mirrormirror_1.apk test -e archive/org.bitbucket.tickytacky.mirrormirror_2.apk test -e archive/org.bitbucket.tickytacky.mirrormirror_3.apk test -e archive/org.bitbucket.tickytacky.mirrormirror_4.apk test -e archive/com.politedroid_3.apk test -e archive/urzip-badsig.apk test -e repo/com.politedroid_4.apk test -e repo/com.politedroid_5.apk test -e repo/com.politedroid_6.apk #------------------------------------------------------------------------------# echo_header 'rename apks with `fdroid update --rename-apks`, --nosign for speed' REPOROOT=`create_test_dir` cd $REPOROOT fdroid_init_with_prebuilt_keystore echo "accepted_formats = ['txt', 'yml']" >> config.py echo 'keydname = "CN=Birdman, OU=Cell, O=Alcatraz, L=Alcatraz, S=California, C=US"' >> config.py test -d metadata || mkdir metadata cp $WORKSPACE/tests/metadata/info.guardianproject.urzip.yml metadata/ test -d repo || mkdir repo cp $WORKSPACE/tests/urzip.apk "repo/asdfiuhk urzip-πÇÇπÇÇ现代汉语通用字-български-عربي1234 ö.apk" $fdroid update --rename-apks --pretty --nosign test -e repo/info.guardianproject.urzip_100.apk grep -F 'info.guardianproject.urzip_100.apk' repo/index-v1.json repo/index.xml cp $WORKSPACE/tests/urzip-release.apk repo/ $fdroid update --rename-apks --pretty --nosign test -e repo/info.guardianproject.urzip_100.apk test -e repo/info.guardianproject.urzip_100_b4964fd.apk grep -F 'info.guardianproject.urzip_100.apk' repo/index-v1.json repo/index.xml grep -F 'info.guardianproject.urzip_100_b4964fd.apk' repo/index-v1.json ! grep -F 'info.guardianproject.urzip_100_b4964fd.apk' repo/index.xml cp $WORKSPACE/tests/urzip-release.apk repo/ $fdroid update --rename-apks --pretty --nosign test -e repo/info.guardianproject.urzip_100.apk test -e repo/info.guardianproject.urzip_100_b4964fd.apk test -e duplicates/repo/info.guardianproject.urzip_100_b4964fd.apk grep -F 'info.guardianproject.urzip_100.apk' repo/index-v1.json repo/index.xml grep -F 'info.guardianproject.urzip_100_b4964fd.apk' repo/index-v1.json ! grep -F 'info.guardianproject.urzip_100_b4964fd.apk' repo/index.xml #------------------------------------------------------------------------------# echo_header "test metadata checks" REPOROOT=`create_test_dir` cd $REPOROOT mkdir repo cp $WORKSPACE/tests/urzip.apk $REPOROOT/repo/ set +e $fdroid build if [ $? -eq 0 ]; then echo "This should have failed because there is no metadata!" exit 1 else echo "testing metadata checks passed" fi set -e mkdir $REPOROOT/metadata/ cp $WORKSPACE/tests/metadata/org.smssecure.smssecure.txt $REPOROOT/metadata/ $fdroid readmeta # now make a fake duplicate touch $REPOROOT/metadata/org.smssecure.smssecure.yml set +e $fdroid readmeta if [ $? -eq 0 ]; then echo "This should have failed because there is a duplicate metadata file!" exit 1 else echo "testing duplicate metadata checks passed" fi set -e #------------------------------------------------------------------------------# echo_header "ensure commands that don't need the JDK work without a JDK configed" REPOROOT=`create_test_dir` cd $REPOROOT mkdir repo mkdir metadata echo "License:GPL-2.0-only" >> metadata/fake.txt echo "Summary:Yup still fake" >> metadata/fake.txt echo "Categories:Internet" >> metadata/fake.txt echo "Description:" >> metadata/fake.txt echo "this is fake" >> metadata/fake.txt echo "." >> metadata/fake.txt # fake that no JDKs are available echo 'java_paths = {}' > config.py LOCAL_COPY_DIR=`create_test_dir`/fdroid mkdir -p $LOCAL_COPY_DIR/repo echo "local_copy_dir = '$LOCAL_COPY_DIR'" >> config.py $fdroid checkupdates --allow-dirty which gpg && $fdroid gpgsign $fdroid lint $fdroid readmeta $fdroid rewritemeta fake $fdroid deploy $fdroid server update $fdroid scanner # run these to get their output, but the are not setup, so don't fail $fdroid build || true $fdroid import || true $fdroid install || true #------------------------------------------------------------------------------# echo_header "create a source tarball" cd $WORKSPACE ./setup.py compile_catalog sdist REPOROOT=`create_test_dir` cd $REPOROOT tar xzf `ls -1 $WORKSPACE/dist/fdroidserver-*.tar.gz | sort -n | tail -1` cd $REPOROOT ./fdroidserver-*/fdroid init copy_apks_into_repo $REPOROOT ./fdroidserver-*/fdroid update --create-metadata --verbose #------------------------------------------------------------------------------# echo_header "test config checks of local_copy_dir" REPOROOT=`create_test_dir` cd $REPOROOT $fdroid init $fdroid update --create-metadata --verbose $fdroid readmeta $fdroid server update --local-copy-dir=/tmp/fdroid $fdroid deploy --local-copy-dir=/tmp/fdroid --verbose # now test the errors work set +e $fdroid server update --local-copy-dir=thisisnotanabsolutepath if [ $? -eq 0 ]; then echo "This should have failed because thisisnotanabsolutepath is not an absolute path!" exit 1 else echo "testing absolute path checker passed" fi $fdroid server update --local-copy-dir=/tmp/IReallyDoubtThisPathExistsasdfasdf if [ $? -eq 0 ]; then echo "This should have failed because the path does not end with 'fdroid'!" exit 1 else echo "testing dirname exists checker passed" fi $fdroid server update --local-copy-dir=/tmp/IReallyDoubtThisPathExistsasdfasdf/fdroid if [ $? -eq 0 ]; then echo "This should have failed because the dirname path does not exist!" exit 1 else echo "testing dirname exists checker passed" fi set -e #------------------------------------------------------------------------------# echo_header "setup a new repo from scratch using ANDROID_HOME and do a local sync" REPOROOT=`create_test_dir` cd $REPOROOT fdroid_init_with_prebuilt_keystore copy_apks_into_repo $REPOROOT $fdroid update --create-metadata --verbose $fdroid readmeta grep -F '> config.py cp $WORKSPACE/tests/repo/obb.mainpatch.current_1619.apk $REPOROOT/repo/ cp $WORKSPACE/tests/repo/obb.mainpatch.current_1619_another-release-key.apk $REPOROOT/repo/ $fdroid update --pretty grep -F 'obb.mainpatch.current_1619.apk' repo/index.xml repo/index-v1.json grep -F 'obb.mainpatch.current_1619_another-release-key.apk' repo/index-v1.json ! grep -F 'obb.mainpatch.current_1619_another-release-key.apk' repo/index.xml # die if there are exact duplicates cp $WORKSPACE/tests/repo/obb.mainpatch.current_1619.apk $REPOROOT/repo/duplicate.apk ! $fdroid update #------------------------------------------------------------------------------# echo_header "setup new repo from scratch using ANDROID_HOME, putting APKs in repo first" REPOROOT=`create_test_dir` cd $REPOROOT mkdir repo copy_apks_into_repo $REPOROOT fdroid_init_with_prebuilt_keystore $fdroid update --create-metadata --verbose $fdroid readmeta grep -F '> config.py echo 'repo_keyalias = "foo"' >> config.py echo 'keystorepass = "foo"' >> config.py echo 'keypass = "foo"' >> config.py set +e $fdroid update --create-metadata --verbose if [ $? -eq 0 ]; then echo "This should have failed because this repo has a bad/fake keystore!" exit 1 else echo '`fdroid update` prompted to add keystore' fi set -e #------------------------------------------------------------------------------# echo_header "copy tests/repo, update with binary transparency log" REPOROOT=`create_test_dir` GIT_REMOTE=`create_test_dir` GNUPGHOME=$REPOROOT/gnupghome cd $REPOROOT fdroid_init_with_prebuilt_keystore cp -a $WORKSPACE/tests/metadata $WORKSPACE/tests/repo $WORKSPACE/tests/stats $REPOROOT/ echo "binary_transparency_remote = '$GIT_REMOTE'" >> config.py echo "accepted_formats = ['json', 'txt', 'yml']" >> config.py $fdroid update --verbose if have_git_2_3; then $fdroid server update --verbose test -e repo/index.xml test -e repo/index.jar test -e repo/index-v1.jar grep -F '> config.py echo "servergitmirrors = '$SERVER_GIT_MIRROR'" >> config.py echo "local_copy_dir = '$LOCAL_COPY_DIR'" >> config.py echo "accepted_formats = ['json', 'txt', 'yml']" >> config.py $fdroid update --pretty grep -F '' repo/index.xml grep -F '/fdroid/archive' archive/index.xml test `grep '' repo/index.xml | wc -l` -eq 2 test `grep '' archive/index.xml | wc -l` -eq 2 cd binary_transparency [ `git rev-list --count HEAD` == "1" ] cd .. $fdroid server update --verbose grep -F '> config.py echo "sync_from_local_copy_dir = True" >> config.py echo "serverwebroots = '$SERVERWEBROOT'" >> config.py echo "servergitmirrors = '$SERVER_GIT_MIRROR'" >> config.py echo "local_copy_dir = '$LOCAL_COPY_DIR'" >> config.py echo "binary_transparency_remote = '$BINARY_TRANSPARENCY_REMOTE'" >> config.py $fdroid server update --verbose cd $BINARY_TRANSPARENCY_REMOTE [ `git rev-list --count HEAD` == "1" ] cd $SERVER_GIT_MIRROR [ `git rev-list --count HEAD` == "1" ] fi #------------------------------------------------------------------------------# # remove this to prevent git conflicts and complaining rm -rf $WORKSPACE/fdroidserver.egg-info/ echo SUCCESS fdroidserver-1.0.9/tests/getsig/0000775000175000017500000000000013324115531016547 5ustar hanshans00000000000000fdroidserver-1.0.9/tests/getsig/getsig.java0000664000175000017500000000665713323655163020723 0ustar hanshans00000000000000import java.io.IOException; import java.io.InputStream; import java.math.BigInteger; import java.security.Signature; import java.security.cert.*; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.Enumeration; import java.util.jar.JarEntry; import java.util.jar.JarFile; public class getsig { public static void main(String[] args) { String apkPath = null; boolean full = false; if(args.length == 1) { apkPath = args[0]; } else if (args.length == 2) { if(!args[0].equals("-f")) { System.out.println("Only -f is supported"); System.exit(1); } apkPath = args[1]; full = true; } else { System.out.println("Specify the APK file to get the signature from!"); System.exit(1); } try { JarFile apk = new JarFile(apkPath); java.security.cert.Certificate[] certs = null; Enumeration entries = apk.entries(); while (entries.hasMoreElements()) { JarEntry je = (JarEntry) entries.nextElement(); if (!je.isDirectory() && !je.getName().startsWith("META-INF/")) { // Just need to read the stream (discarding the data) to get // it to process the certificate... byte[] b = new byte[4096]; InputStream is = apk.getInputStream(je); while (is.read(b, 0, b.length) != -1); is.close(); certs = je.getCertificates(); if(certs != null) break; } } apk.close(); if (certs == null) { System.out.println("Not signed"); System.exit(1); } if (certs.length != 1) { System.out.println("One signature expected"); System.exit(1); } // Get the signature in the same form that is returned by // android.content.pm.Signature.toCharsString() (but in the // form of a byte array so we can pass it to the MD5 function)... byte[] sig = certs[0].getEncoded(); byte[] csig = new byte[sig.length * 2]; for (int j=0; j>4)&0xf; csig[j*2] = (byte)(d >= 10 ? ('a' + d - 10) : ('0' + d)); d = v&0xf; csig[j*2+1] = (byte)(d >= 10 ? ('a' + d - 10) : ('0' + d)); } String result; if(full) { result = new String(csig); } else { // Get the MD5 sum... MessageDigest md; md = MessageDigest.getInstance("MD5"); byte[] md5sum = new byte[32]; md.update(csig); md5sum = md.digest(); BigInteger bigInt = new BigInteger(1, md5sum); String md5hash = bigInt.toString(16); while (md5hash.length() < 32) md5hash = "0" + md5hash; result = md5hash; } System.out.println("Result:" + result); System.exit(0); } catch (Exception e) { System.out.println("Exception:" + e); System.exit(1); } } } fdroidserver-1.0.9/tests/getsig/make.sh0000775000175000017500000000003413302025213020011 0ustar hanshans00000000000000#!/bin/sh javac getsig.java fdroidserver-1.0.9/tests/getsig/run.sh0000775000175000017500000000003713302025213017703 0ustar hanshans00000000000000#!/bin/sh java getsig $1 $2 $3 fdroidserver-1.0.9/tests/signatures.TestCase0000775000175000017500000000462513303240575021124 0ustar hanshans00000000000000#!/usr/bin/env python3 import inspect import optparse import os import sys import unittest import hashlib import logging from tempfile import TemporaryDirectory localmodule = os.path.realpath( os.path.join(os.path.dirname(inspect.getfile(inspect.currentframe())), '..')) print('localmodule: ' + localmodule) if localmodule not in sys.path: sys.path.insert(0, localmodule) from testcommon import TmpCwd from fdroidserver import common, signatures class SignaturesTest(unittest.TestCase): def setUp(self): logging.basicConfig(level=logging.DEBUG) common.config = None config = common.read_config(common.options) config['jarsigner'] = common.find_sdk_tools_cmd('jarsigner') config['verbose'] = True common.config = config def test_main(self): # option fixture class: class OptionsFixture: APK = [os.path.abspath(os.path.join('repo', 'com.politedroid_3.apk'))] with TemporaryDirectory() as tmpdir, TmpCwd(tmpdir): signatures.extract(OptionsFixture()) # check if extracted signatures are where they are supposed to be # also verify weather if extracted file contian what they should filesAndHashes = ( (os.path.join('metadata', 'com.politedroid', 'signatures', '3', 'MANIFEST.MF'), '7dcd83f0c41a75457fd2311bf3c4578f80d684362d74ba8dc52838d353f31cf2'), (os.path.join('metadata', 'com.politedroid', 'signatures', '3', 'RELEASE.RSA'), '883ef3d5a6e0bf69d2a58d9e255a7930f08a49abc38e216ed054943c99c8fdb4'), (os.path.join('metadata', 'com.politedroid', 'signatures', '3', 'RELEASE.SF'), '99fbb3211ef5d7c1253f3a7ad4836eadc9905103ce6a75916c40de2831958284'), ) for path, checksum in filesAndHashes: self.assertTrue(os.path.isfile(path)) with open(path, 'rb') as f: self.assertEqual(hashlib.sha256(f.read()).hexdigest(), checksum) if __name__ == "__main__": parser = optparse.OptionParser() parser.add_option("-v", "--verbose", action="store_true", default=False, help="Spew out even more information than normal") (common.options, args) = parser.parse_args(['--verbose']) newSuite = unittest.TestSuite() newSuite.addTest(unittest.makeSuite(SignaturesTest)) unittest.main(failfast=False) fdroidserver-1.0.9/tests/metadata.TestCase0000775000175000017500000001427413302025443020513 0ustar hanshans00000000000000#!/usr/bin/env python3 # http://www.drdobbs.com/testing/unit-testing-with-python/240165163 import glob import inspect import logging import optparse import os import random import shutil import sys import unittest import yaml import tempfile localmodule = os.path.realpath( os.path.join(os.path.dirname(inspect.getfile(inspect.currentframe())), '..')) print('localmodule: ' + localmodule) if localmodule not in sys.path: sys.path.insert(0, localmodule) import fdroidserver.common import fdroidserver.metadata class MetadataTest(unittest.TestCase): '''fdroidserver/metadata.py''' def setUp(self): logging.basicConfig(level=logging.DEBUG) self.basedir = os.path.join(localmodule, 'tests') self.tmpdir = os.path.abspath(os.path.join(self.basedir, '..', '.testfiles')) if not os.path.exists(self.tmpdir): os.makedirs(self.tmpdir) os.chdir(self.basedir) def test_read_metadata(self): def _build_yaml_representer(dumper, data): '''Creates a YAML representation of a Build instance''' return dumper.represent_dict(data) self.maxDiff = None # these need to be set to prevent code running on None, only # 'accepted_formats' is actually used in metadata.py config = dict() config['sdk_path'] = '/opt/android-sdk' config['ndk_paths'] = dict() config['accepted_formats'] = ['json', 'txt', 'yml'] fdroidserver.common.config = config apps = fdroidserver.metadata.read_metadata(xref=True) for appid in ('org.smssecure.smssecure', 'org.adaway', 'org.videolan.vlc', 'com.politedroid'): savepath = os.path.join('metadata', 'dump', appid + '.yaml') frommeta = dict(apps[appid]) self.assertTrue(appid in apps) with open(savepath, 'r') as f: frompickle = yaml.load(f) self.assertEqual(frommeta, frompickle) # comment above assert and uncomment below to update test # files when new metadata fields are added # with open(savepath, 'w') as f: # yaml.add_representer(fdroidserver.metadata.Build, _build_yaml_representer) # yaml.dump(frommeta, f, default_flow_style=False) def test_rewrite_yaml_fakeotaupdate(self): testdir = tempfile.mkdtemp(prefix=inspect.currentframe().f_code.co_name, dir=self.tmpdir) fdroidserver.common.config = {'accepted_formats': ['txt', 'yml']} # rewrite metadata allapps = fdroidserver.metadata.read_metadata(xref=True) for appid, app in allapps.items(): if appid == 'fake.ota.update': fdroidserver.metadata.write_metadata(os.path.join(testdir, appid + '.yml'), app) # assert rewrite result with open(os.path.join(testdir, 'fake.ota.update.yml'), 'r', encoding='utf-8') as result: with open('metadata-rewrite-yml/fake.ota.update.yml', 'r', encoding='utf-8') as orig: self.maxDiff = None self.assertEqual(result.read(), orig.read()) def test_rewrite_yaml_fdroidclient(self): testdir = tempfile.mkdtemp(prefix=inspect.currentframe().f_code.co_name, dir=self.tmpdir) fdroidserver.common.config = {'accepted_formats': ['txt', 'yml']} # rewrite metadata allapps = fdroidserver.metadata.read_metadata(xref=True) for appid, app in allapps.items(): if appid == 'org.fdroid.fdroid': fdroidserver.metadata.write_metadata(os.path.join(testdir, appid + '.yml'), app) # assert rewrite result with open(os.path.join(testdir, 'org.fdroid.fdroid.yml'), 'r', encoding='utf-8') as result: with open('metadata-rewrite-yml/org.fdroid.fdroid.yml', 'r', encoding='utf-8') as orig: self.maxDiff = None self.assertEqual(result.read(), orig.read()) def test_rewrite_yaml_special_build_params(self): testdir = tempfile.mkdtemp(prefix=inspect.currentframe().f_code.co_name, dir=self.tmpdir) fdroidserver.common.config = {'accepted_formats': ['txt', 'yml']} # rewrite metadata allapps = fdroidserver.metadata.read_metadata(xref=True) for appid, app in allapps.items(): if appid == 'app.with.special.build.params': fdroidserver.metadata.write_metadata(os.path.join(testdir, appid + '.yml'), app) # assert rewrite result with open(os.path.join(testdir, 'app.with.special.build.params.yml'), 'r', encoding='utf-8') as result: with open('metadata-rewrite-yml/app.with.special.build.params.yml', 'r', encoding='utf-8') as orig: self.maxDiff = None self.assertEqual(result.read(), orig.read()) def test_read_metadata_sort_by_time(self): testdir = tempfile.mkdtemp(prefix=inspect.currentframe().f_code.co_name, dir=self.tmpdir) metadatadir = os.path.join(testdir, 'metadata') os.makedirs(metadatadir) fdroidserver.common.config = {'accepted_formats': ['txt']} randomlist = [] randomapps = glob.glob(os.path.join(self.basedir, 'metadata', '*.txt')) random.shuffle(randomapps) i = 1 for f in randomapps: shutil.copy(f, metadatadir) new = os.path.join(metadatadir, os.path.basename(f)) stat = os.stat(new) os.utime(new, (stat.st_ctime, stat.st_mtime + i)) # prepend new item so newest is always first randomlist = [os.path.basename(f)[:-4]] + randomlist i += 1 os.chdir(testdir) allapps = fdroidserver.metadata.read_metadata(xref=True, sort_by_time=True) allappids = [] for appid, app in allapps.items(): allappids.append(appid) self.assertEqual(randomlist, allappids) if __name__ == "__main__": parser = optparse.OptionParser() parser.add_option("-v", "--verbose", action="store_true", default=False, help="Spew out even more information than normal") (fdroidserver.common.options, args) = parser.parse_args(['--verbose']) newSuite = unittest.TestSuite() newSuite.addTest(unittest.makeSuite(MetadataTest)) unittest.main(failfast=False) fdroidserver-1.0.9/tests/dump_internal_metadata_format.py0000775000175000017500000000642613272566407023741 0ustar hanshans00000000000000#!/usr/bin/env python3 # # This is for running manual tests when changing the metadata format. # The idea is to test changes using all of the files in # fdroiddata.git. To run it, do: # # cd fdroidserver/tests # cp dump_internal_metadata_format.py dump.py # since this isn't in old commits # git checkout 0.7.0 # or any old commit of your choosing # cd ../../fdroiddata # ../fdroidserver/tests/dump.py # mv metadata/dump metadata/dump_0.7.0 # cd ../fdroidserver # git checkout master # cd ../fdroiddata # ../fdroidserver/tests/dump.py # meld metadata/dump_0.7.0 metadata/dump_0.7.0-179-ge85486a/ import git import inspect import optparse import os import sys import yaml localmodule = os.path.realpath( os.path.join(os.path.dirname(inspect.getfile(inspect.currentframe())), '..')) if localmodule not in sys.path: sys.path.insert(0, localmodule) import fdroidserver.common # noqa import fdroidserver.metadata # noqa def _build_yaml_representer(dumper, data): '''Creates a YAML representation of a Build instance''' if hasattr(data, 'append_flag'): # for 0.7.0 and earlier, before https://gitlab.com/fdroid/fdroidserver/merge_requests/210 del(data._modified) readdict = data.__dict__ else: readdict = data # these key names were all renamed in # https://gitlab.com/fdroid/fdroidserver/merge_requests/210 output = dict() for k, v in readdict.items(): if k == 'vercode': output['versionCode'] = v elif k == 'version': output['versionName'] = v elif k == 'update': output['androidupdate'] = v else: output[k] = v return dumper.represent_dict(output) parser = optparse.OptionParser() parser.add_option("-v", "--verbose", action="store_true", default=False, help="Spew out even more information than normal") (fdroidserver.common.options, args) = parser.parse_args(['--verbose']) if not os.path.isdir('metadata'): print("This script must be run in an F-Droid data folder with a 'metadata' subdir!") sys.exit(1) # these need to be set to prevent code running on None, only # 'accepted_formats' is actually used in metadata.py config = dict() config['sdk_path'] = os.getenv('ANDROID_HOME') or '/opt/android-sdk' config['ndk_paths'] = dict() config['accepted_formats'] = ['txt'] fdroidserver.common.config = config repo = git.Repo(localmodule) savedir = os.path.join('metadata', 'dump_' + repo.git.describe()) if not os.path.isdir(savedir): os.mkdir(savedir) apps = fdroidserver.metadata.read_metadata(xref=True) for appid, app in apps.items(): savepath = os.path.join(savedir, appid + '.yaml') if hasattr(app, 'attr_to_field'): # for 0.7.0 and earlier, before https://gitlab.com/fdroid/fdroidserver/merge_requests/210 app.__dict__['lastUpdated'] = app.__dict__['lastupdated'] del(app.__dict__['lastupdated']) del(app._modified) frommeta = dict(app.__dict__) else: frommeta = dict(app) with open(savepath, 'w') as f: yaml.add_representer(fdroidserver.metadata.Build, _build_yaml_representer) yaml.dump(frommeta, f, default_flow_style=False) # if appid == 'at.tomtasche.reader': # import pprint # pprint.pprint(app) # sys.exit(1) fdroidserver-1.0.9/tests/openssl-version-check-test.py0000775000175000017500000000161213272566407023056 0ustar hanshans00000000000000#!/usr/bin/env python3 # # implementing a version check of known bad OpenSSL versions, for example: # https://support.google.com/faqs/answer/6376725?hl=en # # This is used in update.has_known_vulnerability() import re import requests # this list was generated using: # for f in `curl | grep -Eo '[0-9]\.[0-9]\.[0-9][a-z]?' | sort -u`; do echo "'$f',"; done versions = [ ] r = requests.get('https://www.openssl.org/news/changelog.html') safe = set() bad = set() for m in re.findall(b'[0-9]\.[0-9]\.[0-9][a-z]?', r.content): version = str(m, encoding='utf-8') if (version.startswith('1.0.1') and len(version) > 5 and version[5] >= 'r') \ or (version.startswith('1.0.2') and len(version) > 5 and version[5] >= 'f') \ or re.match(r'[1-9]\.[1-9]\.[0-9].*', version): safe.add(version) else: bad.add(version) print('safe:', sorted(safe)) print('bad:', sorted(bad)) fdroidserver-1.0.9/tests/import_proxy.py0000664000175000017500000000126313272566407020432 0ustar hanshans00000000000000# workaround the syntax error from: import fdroidserver.import import inspect import os import sys localmodule = os.path.realpath( os.path.join(os.path.dirname(inspect.getfile(inspect.currentframe())), '..')) print('localmodule: ' + localmodule) if localmodule not in sys.path: sys.path.insert(0, localmodule) class Options: def __init__(self): self.rev = None self.subdir = None module = __import__('fdroidserver.import') for name, obj in inspect.getmembers(module): if name == 'import': get_metadata_from_url = obj.get_metadata_from_url obj.options = Options() options = obj.options break globals().update(vars(module)) fdroidserver-1.0.9/tests/androguard_test.py0000664000175000017500000000572713272566407021055 0ustar hanshans00000000000000#!/usr/bin/env python3 import inspect import logging import optparse import os import sys import unittest localmodule = os.path.realpath( os.path.join(os.path.dirname(inspect.getfile(inspect.currentframe())), '..')) print('localmodule: ' + localmodule) if localmodule not in sys.path: sys.path.insert(0, localmodule) import fdroidserver.common import fdroidserver.metadata import fdroidserver.update class UpdateTest(unittest.TestCase): '''fdroid androguard manual tests''' def testScanMetadataAndroguardAAPT(self): def _create_apkmetadata_object(apkName): '''Create an empty apk metadata object''' apk = {} apk['apkName'] = apkName apk['uses-permission'] = [] apk['uses-permission-sdk-23'] = [] apk['features'] = [] apk['icons_src'] = {} return apk config = dict() fdroidserver.common.fill_config_defaults(config) fdroidserver.update.config = config os.chdir(os.path.dirname(__file__)) if os.path.basename(os.getcwd()) != 'tests': raise Exception('This test must be run in the "tests/" subdir') config['ndk_paths'] = dict() config['accepted_formats'] = ['json', 'txt', 'yml'] fdroidserver.common.config = config fdroidserver.update.config = config fdroidserver.update.options = type('', (), {})() fdroidserver.update.options.clean = True fdroidserver.update.options.delete_unknown = True self.assertTrue(fdroidserver.common.SdkToolsPopen('aapt')) try: from androguard.core.bytecodes.apk import APK dir(APK) except ImportError: raise Exception("androguard not installed!") apkList = ['../info.guardianproject.urzip.apk', '../org.dyndns.fules.ck_20.apk'] for apkName in apkList: logging.debug("Processing " + apkName) apkfile = os.path.join('repo', apkName) apkaapt = _create_apkmetadata_object(apkName) logging.debug("Using AAPT for metadata") fdroidserver.update.scan_apk_aapt(apkaapt, apkfile) # avoid AAPT application name bug del apkaapt['name'] apkandroguard = _create_apkmetadata_object(apkName) logging.debug("Using androguard for metadata") fdroidserver.update.scan_apk_androguard(apkandroguard, apkfile) # avoid AAPT application name bug del apkandroguard['name'] self.maxDiff = None self.assertEqual(apkaapt, apkandroguard) if __name__ == "__main__": parser = optparse.OptionParser() parser.add_option("-v", "--verbose", action="store_true", default=False, help="Spew out even more information than normal") (fdroidserver.common.options, args) = parser.parse_args(['--verbose']) newSuite = unittest.TestSuite() newSuite.addTest(unittest.makeSuite(UpdateTest)) unittest.main() fdroidserver-1.0.9/tests/org.bitbucket.tickytacky.mirrormirror_3.apk0000664000175000017500000001572613323343071025704 0ustar hanshans00000000000000PKλD0#META-INF/MANIFEST.MFmMo@; cP+&(jm-riVvI]"ڦIu2# !4 k`wŔh.9߫,PF Ҥ0QUy8M}ˇ1ط`;\۱]ð^k<9zyRJjW=(b" $d|CMI ( ߔ")/& ^Zn9-z=ue1Tu*ў=9 [ނ[;њv{|;'PK0#PKλDb`!META-INF/E16A6514.SFmKo@ཉeJmI@j4hifG;CQ}mL5|X#YQ?VbjF1:g)R P`H ,$"H 4]S34.$ V{?ߖM%Qr O/lq䛍qb+@}QIj;]=`L2+iG?wC NWQYUST!a&(ۍk䩜n43|}:# q0]yp?u#Z;W/jgDd:ghe^ 7t[vk9i>PKb`!PKλD)HQZ44META-INF/E16A6514.RSA3hb5`jhδUѠUѐπ"`PǸ9٠9ޠ}3#KO xjZ 8٘CY؄B y @af w6񸄹R3S \@0f8E8K41*!{(pyاSǞ9_a #O-9_{Jy_1o\*H)O+Y^wٗ#[wqao޳Wf{t7WVߒwlѥ~,n~KClիQj̊ =3\j]\>RfcKCV`ES&=of}<3#bEyY`򱈱Hfnh̉- .+M3(fEl SUoK kNpf\1uG;kn5+/P')vfyuZU^fc/`I-,|U{J#^{KOC[o 3YbYv Uuz2űJ4̫dO o-l{fӟW!7_hz?qJXӤ~ͳzc_5|O)XvcJ|!gob.+qJ"IL|'~Z}xx=Ju!ՙ&+ >^:t7R茇n{$Zpc{lkֱ|E%T-]K2=J}7BWhW6/ w>l@}$?]FGj}7%+/ Q$uBr Z\]3/ V'[ve5{2N~[ xmM3֥Q5vU(Q/8N]p0'LC;J5~ n_-p|  >CJ@'ȁpNW>x\W;x|Dπu`+(`Lo6 >U#ʂ` @Elk-&bB)oa: N, Rw;X:@dR "?V,X>/ƓE.Ѓb<},z@?-K?' &BmO B~3bl> &_Ly|e,rRx [h qc)vO1i-#d+q*ve80v\<(bKL/rA.Ctr#!󣅏Gv1omNdNge^=\hKFx~Bf\*d,u7' $mػn?#MWͨO`4t?G%6߂qJMߋٙY = a.%ۚkTbىVbS&4FMk])&C5BWN*t2~ڎcu$mОZ0la#He4/AǓZE1"ގ˽ZfeY-Cd>KEfb("5kg:tyRyLæ])އy)fIET{mm9=ݪ5Hm.ȝyخc]oez[דI~,R'RU'DF}B玳-\+]ZՆ1d8k=8_GkL!ǤNS,>{vt39 NRkE se8fߘ2x:h8P5σGl,ަfߜ PK@?t$ PKλD0#META-INF/MANIFEST.MFPKλDb`!eMETA-INF/E16A6514.SFPKλD)HQZ44META-INF/E16A6514.RSAPKDU ~res/layout/main.xmlPKDBJAndroidManifest.xmlPK Du\\5 resources.arscPK Dm[[res/drawable-mdpi/mirror.pngPKD@?t$  Wclasses.dexPK fdroidserver-1.0.9/tests/import.TestCase0000775000175000017500000000417513302025443020244 0ustar hanshans00000000000000#!/usr/bin/env python3 # http://www.drdobbs.com/testing/unit-testing-with-python/240165163 import inspect import logging import optparse import os import requests import sys import unittest localmodule = os.path.realpath( os.path.join(os.path.dirname(inspect.getfile(inspect.currentframe())), '..')) print('localmodule: ' + localmodule) if localmodule not in sys.path: sys.path.insert(0, localmodule) import fdroidserver.common import fdroidserver.metadata # work around the syntax error from: import fdroidserver.import import import_proxy class ImportTest(unittest.TestCase): '''fdroid import''' def setUp(self): logging.basicConfig(level=logging.DEBUG) self.basedir = os.path.join(localmodule, 'tests') self.tmpdir = os.path.abspath(os.path.join(self.basedir, '..', '.testfiles')) if not os.path.exists(self.tmpdir): os.makedirs(self.tmpdir) os.chdir(self.basedir) def test_import_gitlab(self): # FDroidPopen needs some config to work config = dict() fdroidserver.common.fill_config_defaults(config) fdroidserver.common.config = config url = 'https://gitlab.com/fdroid/ci-test-app' r = requests.head(url) if r.status_code != 200: print("ERROR", url, 'unreachable (', r.status_code, ')') print('Skipping ImportTest!') return app = fdroidserver.metadata.App() app.UpdateCheckMode = "Tags" root_dir, src_dir = import_proxy.get_metadata_from_url(app, url) self.assertEqual(app.RepoType, 'git') self.assertEqual(app.WebSite, 'https://gitlab.com/fdroid/ci-test-app') self.assertEqual(app.Repo, 'https://gitlab.com/fdroid/ci-test-app.git') if __name__ == "__main__": parser = optparse.OptionParser() parser.add_option("-v", "--verbose", action="store_true", default=False, help="Spew out even more information than normal") (fdroidserver.common.options, args) = parser.parse_args(['--verbose']) newSuite = unittest.TestSuite() newSuite.addTest(unittest.makeSuite(ImportTest)) unittest.main(failfast=False) fdroidserver-1.0.9/tests/org.bitbucket.tickytacky.mirrormirror_2.apk0000664000175000017500000001565413323343071025703 0ustar hanshans00000000000000PKVIDJk!META-INF/MANIFEST.MFmKo@; ߁cC &oR@ʥUhO_4i5Nf~_@6TjHQ0wfR)k֌wR*}P\eIюT)TT\+T^N]CG=.ӧ6Y4ڑ._ rF?a8cFŸcvuZufн'LErG䫝? -ra‰CI>MIR ZF2 =wY- p[}e&)U3r`z9j|{f|ɭhNq3gFY4'PKJk!PKVIDb!META-INF/E16A6514.SFmn@ཉ D!U+j70AO_ۦI5|䦂X%d-m6aв3b{ Aj͔og]Tuhn~j6B`X}~~t:C%TT>ޯe7s?Ii'KvH]f0S).S_qCTt$暈َiYs2);΂l|yo#wqao޳Wf{t7WVߒwlѥ~,n~KClիQj̊ =3\j]\>RfcKCV`ES&=of}<3#bEyY`򱈱Hfnh̉- .+M3(fEl SUoK kNpf\1uG;kn5+/P')vfyuZU^fc/`I-,|U{J#^{KOC[o 3YbYv Uuz2űJ4̫dO o-l{fӟW!7_hz?qJXӤ~ͳzc_5|UYo,|Q_Ymv:g$>1i5=|ڳgs+g>+kqWۦ{vmxm4[}<!;kl _uM8~ӂsMvJ.XbQU?ler\Oz~_jRl.9O%VsrY܌YS?_YĠ-(?̽4eIvKy?PK/-54PK=DU res/layout/main.xml]J1tBRDą@f/]\f.&&C&*|k=)z~7䯠 }1mPeA5|C7x::Z郞_Oﶍf\& Uvm*7F6_Ʋ ҫbW։|.[b3|G/4FTa~1.sfΙ, Yq`g)|3PKU PK=DV( AndroidManifest.xmlnE8NH"HdqHVPP"Xg.6i%68( ,+ <,XXsSc.]USjz봔hY+5 Xs|~v">]3+.|~_^>߀o`H!EUUVJ"BPD%"> QJ*!VJT򿏵7~s=>{)Z];w̾X}>I[?r$&l& {;,D 5ȗ!ÐvPC0N3E0 ΃-pD(yS[pP(zpx aA4x>' Ff&ݠ 8N`\W5:x ,_G)P#`x`\_QhxgwKUe", ZX3FB8EP &$ֹ `hA<2Brl zCr<}z?D-Rg?'^Ym۰GjtRO;j5rM`3Rg}1|X<~H1ln.㴟R<*=cvHGIzyE9UyqVw/:c@dws.U:esa.4eFLq|8\F+|kp;؏~r]+|n]RU9o!Rƥ*ۉwQ*m;8=3v[vٓ۟2gMR(waRI %Oj~Mb֬T =k 9J eǷ?_tʔ]Lߵsn{,X#h:Z9X2e9ӵB 8 Ӆ[fi?G+q%qֶGw9!&umR; |,糦}ӷNS(=ۙ-u'?fMO ٪gK3=4_*Rj̃OY!l3]ʲhgNf'lbp]8dm-⚭IzFLYͳj}{/9۔̅fQ6bs&%m(}:hEe1S,,/E{:m 8Q:{R, !sqMZ>qYiԄ:UVPTʮoOKf< MYOMb5;Ә9#e׵Lߢtٹs5]> kP^Vbw;\yRPE +C +eqM+VVL1m7YRصJY䙳Vq|)X>%̒uDScӂrUA׆ok{wkU\-iQa6v3ZJRV"jXdl-RFT%P5hZSM]Q>unw .@pzIoO=Acd͹*8 :عU/gzdDa3iswMg)O#h%Ow/\BĈ xśGnK1U8h/ҍ&*kyP`r6]LQy(茷 X¯/9BS( =,Z2[ 6S~'fc ;[^EʠCDr-|9j(y.C~^L5t^楉 ׬mي*S/E75BpHS=sCwb43\G!H;Hb-d7 s%CTH9T_\OqfmohR.SPdܟ:NGdev$]*{(8'Z-fƨe1@bTwUK@G<Ď#-#V'B3CD-VUP'iF*Ƙ@(COC7S- wJC؞!hhO/q3/3WTGt;!NûY(e7|j̢D֑ UDl1|Rܰ4u$p @w\Gg8E"O<ן2ALGw+~Siu1/L_S(i hGAaꯇu`1| Xwb%?skjUʞfrJ~Ajbe:R: /5UŵFEBpކ=]myb\reոІnڡ~y$¥!00UbO(^ ZubB20  *H  [XXX ff6 T l"jVJO?,RWlAcppoԌͻ"TbB*M i/)q$<\0`w8%/ 8WW'g8K0g&t = H#QcT͎J-Ӫ'K"H#l $ORzch~I"Pp #+kW^*>9buÀ(XTξ.E78688a0f]7L#00 +*JbhXF~j_ ܐFY!}E^ 㜛C 2}u3KYBj kxڣ=^yf%fn(2t P;*]b Xw$S˔MB]S  L8^$Ll,)[=*_"\R=$MRkAQȜ1觴Txf~%3i->ə x\=!O,;M%aP6w&t\=[J?'ɨj)D&BzQA@[q8bE;W愪lG;-nƹ|>uf#"?bw.+ D))_-gv˺?*e1ۘ9d:~?Q L 9ȶ,L1H1pi`)[>Lp5@;l]T#[]%-6v^MPUI Z< 'dPg .Xm2: P CLw ']]/oHk ү,`Wmk<"Lt6?6 Yi5_%3-̬KI{ܫ'㴿[&+  4ab~v@cX.50900ɠ-0  *H  0!10U F-Droid1 0 Utest0 170704152811Z 441119152811Z0!10U F-Droid1 0 Utest0"0  *H 0 ,/ϓ 2ɰm H3یu&É6`IݨoΓ9<в>v1+nۃ( {l 9y-.smm=P!r+KIWmU!|*.g (Um<*6I0[1=ڱ F"(gtB1$v$O(8E'&K@<} 򃗵UiդXZР9w[4W?S,<SRNy?Ŏ|7^Q07؝p]E8clI]' Q/as9@yKurepokey]2ʶ}00 +* }zEךT;‰/l+p)DՐ Ѧu)+^Jgn񯞏ȑV]ZL8=5dc9H?gt]ƒ0M&"re?"PYL }̶ \ j42,r"muI@w tE?2倭4+u'hGR#ֵ,cV kYrbYD%8덟qfѶ.CcU1c?~s_9J;yݼ CrfC);IDfojxƙcl: Vh$>Vyvr$u̬[жYe)%h "6bx'$;S֍ꆱYRC'_ixYA4aSn)Fm7}T[iޖە$t֔2́LiY#e\۳7mSJ{XQԙxS?܊ C=rĬ;$>`ӅMMz?nDWܤ{LD?iV 1izxU6QXȵ\%XmQbq[JYBcCt>Nxs6ECTN$6<7"P.nqc$ V aJ+Ѭ60QO&EX,a؃Ų(Gޕtah]@NLEl½njwg!{,d ^`N5?AW+iҪEfX.50900ɠ|SY0  *H  0!10U F-Droid1 0 Utest0 170711175532Z 441126175532Z0!10U F-Droid1 0 Utest0"0  *H 0 +2!ChB^ X Cnqy:8 /qifOZH71MmS#/CB՝*A apk3s'S.ЬeL[zuYt{YE4@?:٤6%<;j} ^ե\zR3v Z1|~`.SL&w\r_ȄaM~}pd7$"/3|#m=};,3!00U3 ZϣJ'*nE0D?p%pTNGU1'pH(u8~9`&RtV ,Eqr,ɓ8xYEĜU®%Q~?PpiPL A?!gXQ@$2}?aR\7 '*] Hi-pм~rZt4 oY-T_dԚy>jў]Htl-> (N*ȧ=sk0N<'L"QV$ LDgye:D5մ@K+K^"i&̊xYY a.uq93ħAA.؛eEÔb& i7] ӛp_mSn1BN8锨x Iffl y> сtz;a= Mrإ/]Cjb {/op^/'ٳhB[o2|H߿ TKoc:u?O\W  )1-LrB-B7@ ݮ~Md[FZbg%" PA SwQ_^6)׭~(`;Xړ\W=YvG;%z="1gգJgZL9J7(wX%$(1m6u0j_qUD/ c.>zЗ19܅rЊ-CՈy8YsI4סf030d#gs-ᨛq3I-,e¹kSw1cZr'e@p Fb@_Qn|לF,m9ei gW ><޷VWdf@Ɗ?on=jՋ0 wXEʥJ02e- lYi`߉z 2U(urvqFrPpC̟?"N@$IC!GfĤN#Rr%t):z>^ثd/jQW୞z4O2`D.^{-X.50900ɠKl+0  *H  0!10U F-Droid1 0 Utest0 170704152800Z 441119152800Z0!10U F-Droid1 0 Utest0"0  *H 0 h"E~QˈDؓi_fTIW nmuUk0z/p܎m—aX9٢B8;pnPל@ZSQ|2n[ ֯g {ψwu ow)?H6_^ABs} L>wDG]gN N$:1nJƍtJ⿧ˈE.I5Ukw@wfDKLr6DO}ٙʏHA!00UQrr@3x0#+R$~0  *H  *[Jb/%) bKL'8Q˂S1]Vvmj:FUaǪ<$i./„4zp o CC5:dokc|{G腅xY:WI]0%5*,QP3Vq7{$~nkq6\^rTۤ&f K 'IΏךYh?e*thT//nfl=!by>d2d51ff2]600 +*D .qG ` HBx_3}'8au?56@G^Á4%{@b5 #j ^Uun4cU? ~nIw"zxm0d5~ه₥^EM# VG}B#a!m[4Dz29jʊueA|n?!^mu~A@Ns MkTTTI_PxҸܘg<޾ܘDɵ" } 08MB8wgVHJ qG '^B)8'`dK."룻 YcVUubBn3!*J >r6+:C;Y)}/zwx ߥm$GvZl}l{*&gxhU %U-q27#o VGEǗƆ,DBeWw\L27y] 1'+r?Z̑~|s:eؽXH$D{K QRYN# #(wgO^W[0 NIG=ȎbѰZKu 5rI6_-,np D6L'~"eTޯ uƵ+ÒF @{+@1d2^?Ycm& 1nG~]nO^pb;6D3y~m#bC.SoK)Z$Բ,d::"@h숚YqiN|oEEw즌'``$`lk@Ceؠ\6Z^t/?I/#*ֶY6{=tf?<<el@^0=>b)Iy_jnt3R1]lNzӾs/Jji=^7m $>E{O)n_FV%Q `p;UWߜ]{.65qǙ"wg|5 ^(t埭zvtD԰Aw jz'8?0)$7EK;Ib=ŐR7 Dz4P;;"13TX./F'VvBih`ԳlԩD9ՂhoPzTܰ|*KGQJe+LX.50900ɠu0  *H  0!10U F-Droid1 0 Utest0 170704152747Z 441119152747Z0!10U F-Droid1 0 Utest0"0  *H 0 7<1|bEqB .x؍~}U_jMGdt}qt:?|ynO($MP 6kf<)p -ewԋҴ#|>]{ >y4ƒm4S7,.:p7s^؝J5ϩ^D^nC/1yt yӀa M ɟl@ASFB͕%laIHjMRaA;HkyKSQȊ;![!00U؛z:&Dnnl[0  *H  [VR sC ~H{uE"W@Zl9 1-Ehwfm2ڡKVoluX̃j yԐBP3(鲢2ֻ;6X`r[NΆB}D8aJCTNr5)dtx,54xyJ,Rl[(lCֽs̑1 Ց#nf[POTRaY!A4_0d7', } anywarns = False for warn in fdroidserver.lint.check_regexes(app): anywarns = True logging.debug(warn) self.assertTrue(anywarns) def test_check_vercode_operation(self): config = dict() fdroidserver.common.fill_config_defaults(config) fdroidserver.common.config = config fdroidserver.lint.config = config app = fdroidserver.metadata.App() app.Name = 'Bad App' app.Summary = 'We pwn you' app.Description = 'These are some back' good_fields = [ '6%c', '%c - 1', '%c + 10', '%c*10', '%c*10 + 3', '%c*10 + 8', '%c + 2 ', '%c + 3', '%c + 7', ] bad_fields = [ 'open("/etc/passwd")', '%C + 1', '%%c * 123', '123 + %%', '%c % 7', ] anywarns = False for good in good_fields: app.VercodeOperation = good for warn in fdroidserver.lint.check_vercode_operation(app): anywarns = True logging.debug(warn) self.assertFalse(anywarns) for bad in bad_fields: anywarns = False app.VercodeOperation = bad for warn in fdroidserver.lint.check_vercode_operation(app): anywarns = True logging.debug(warn) self.assertTrue(anywarns) if __name__ == "__main__": parser = optparse.OptionParser() parser.add_option("-v", "--verbose", action="store_true", default=False, help="Spew out even more information than normal") (fdroidserver.lint.options, args) = parser.parse_args(['--verbose']) fdroidserver.common.options = fdroidserver.lint.options newSuite = unittest.TestSuite() newSuite.addTest(unittest.makeSuite(LintTest)) unittest.main(failfast=False) fdroidserver-1.0.9/tests/testcommon.py0000664000175000017500000000207713272566407020053 0ustar hanshans00000000000000#!/usr/bin/env python3 # # Copyright (C) 2017, Michael Poehn # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . import os class TmpCwd(): """Context-manager for temporarily changing the current working directory. """ def __init__(self, new_cwd): self.new_cwd = new_cwd def __enter__(self): self.orig_cwd = os.getcwd() os.chdir(self.new_cwd) def __exit__(self, a, b, c): os.chdir(self.orig_cwd) fdroidserver-1.0.9/tests/config.py0000664000175000017500000000214713321737333017117 0ustar hanshans00000000000000 repo_url = "https://MyFirstFDroidRepo.org/fdroid/repo" repo_name = "My First F-Droid Repo Demo" repo_icon = "fdroid-icon.png" repo_description = """ This is a repository of apps to be used with F-Droid. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitlab.com/u/fdroid. """ archive_older = 3 archive_url = "https://f-droid.org/archive" archive_name = "My First F-Droid Archive Demo" archive_icon = "fdroid-icon.png" archive_description = """ The repository of older versions of applications from the main demo repository. """ repo_keyalias = "sova" keystore = "keystore.jks" keystorepass = "r9aquRHYoI8+dYz6jKrLntQ5/NJNASFBacJh7Jv2BlI=" keypass = "r9aquRHYoI8+dYz6jKrLntQ5/NJNASFBacJh7Jv2BlI=" keydname = "CN=sova, OU=F-Droid" mirrors = ( 'https://foo.bar/fdroid', 'http://foobarfoobarfoobar.onion/fdroid', ) update_stats = True accepted_formats = ('json', 'txt', 'yml') install_list = 'org.adaway' uninstall_list = ('com.android.vending', 'com.facebook.orca', ) fdroidserver-1.0.9/tests/urzip-badsig.apk0000664000175000017500000002330313323343071020364 0ustar hanshans00000000000000PK OC=-res/drawable/ic_launcher.pngPNG  IHDRw=LIDATHǥyPuƟ{².˲ 8ႈ 628yr OCM5V^ʡbY"0,,{DPXϟ>ߋ4zљp a22x@-q &6'xnب4Ռs-<!a^zD\W6=YMQ2ɗw|՟-f̶vJA؜s1Ym®n>/]ҹr8୔@(r1.}j:Oi> DowJ'CRRVJ eMPy|{|7sRNQy(KNnቹM{p՝Ғ6Q:h++-LxȄsՆIT~M≹\{V{TTX@vL (Ćyq]zAnBFZmHocs  Çd6ihh CCfQ!j2OPSեlUY G?15t"GUˢy*(M6\$""DJiujdo5GcF^G"@ Vx\|T$SgOt ::erOK\]Ϟb¶hӫnZ>5^7 S~6B3Щb#RجJ[ =64%1N ('5+٥bvTD%W< `y*VnJK6͵[h8l3PA$M;QZ1[,U3|.nlIuG2 3 eb2V'0`ę&Uڂg ,.!蒎Q1 F|UJvuӆaL06 cLzN׎zXYٹLGBr8#0LmMOS7onDVv͞} DLژ.C{e 󳵴&cY,ZKSiZ=I`҇6%]Nm},ŅU5SN܈mݷ<65}E޷'0CקԄf.̙3;EnK=_d*/r.Ѵ#>)?/Ԟ H\o7aU%(|${hjǜIL~ cS/LҘPPX"1sgsLuP!!"@&849^1|'3}ȕs_-]$IVM1,,D-aEDA̤rIENDB`PKOCS Lres/layout/activity_main.xmluN@=[$BHA"5%$ 'Ql*x$ G;es;wofw} ƘMCt- G«& 99w%fmF)B[nTχUПg!F$~"u.m*~RUx:R}o{EO١R3~`)6d?Tޟ#]{ȣ>64u6Z?p̑?gqդ~,ᛙPKOCIדAndroidManifest.xmlKoSGϵM'ǘR"!Tmqh˦E,.. 좟U V,*枩'|WϽg͙3sQS:AQuS8OA MzQz } }="4TCC?CA@D_@@/ 1eh ZBB/} =~z -Uh%oriG{vhxlإi٧*zb#(:bquT;8ؾWgW*} ۺ0qUaںʓ}Xo-V ^QwA-ܷ}5qm { hUBY- {V越UH^ʛ_U?|}!Q*2`1kQű*UЫW9tO#/");W `WKz: ԡ:o"]sBֻZ%BKo/D]ˈKwJ(Tf@hUwӦ)}*k[mWh -чo;EuĮ EFo>¿'z=zlNsq:t9vMtLI3ds&=>yiBy @Qhf[)fv4ώS܆B-bng$3ƘI܆CF7bTިF ^K aoބ؎i`cY,mwD̈́ߤ2iqoM5C7e&az$yώӼ5wНwӷ>\?.>уl=?ȿ|㫝D%"Z+Iz$4_׉!DW!<# '@vz]`<s"x.WWkSo& ^@w3N?~2 Z=A~:x|wi#{ȃx|?~| 0A?#` <΁ge m{m:1oN-`O<(3<" p~|>,)`<  2x| :'`C`^4`^"#t`,&Ly@70A%97` `lwmj] ;Np' `#S`<)pn"jRPJ/@oTz :9i*u]kZI<+8<$\Q c*{RUY_Q:Հ~Eݨʎx մ '`ˀ~-_Я+:? 䙂>߯i4-*ʤ$ǩJrVpDɣJE,[eq H*("8-dqX YO{,Ec b!uHr հ<+s>:>,|ƃ2t? C߂/!}!Tv=dsk{}1YoU)/^D^ʮпʺ{w!W(S!ȾwUjI#hpFϒkWAzk5ِF9"t7Oky>ZXJn:\MlAbZs3梛h@O b1:A+Ml#e?ON{LFΑ6~+vǩfs;E{Ȳղ eJ=(G|>#f2H!pih 4vF <|p;x ~6j'>EEDy>l q(هSWoG_(u'l܊ s㑭9io1a3iFgGy$⠉8ı&JF'B VY]cЋ>hc(&5( Gt.φpsOkޭoҾ.mq\ˆ"PxVD%"<\ Ӓ뉢?WFy_ن]͛?;m)zns,?}3&6ܯ5UϓY9gY'sS!uVJ:FuP9&6uDT=WJ5{L8JV>׮W̝Ϣh> ER%{66o6=C:Ӓ鱨\l  EoL'֥;ץץT4?|LĹoxp٫|[C-J(-3S2c)[U>s95E!\!5еYj܂9U*S9;L=ۭ&ǵ+G}gj&_>槭@A0UP)Y3V+N17ST*.9r wE[+Z0u$Ϥھ^<2Ȳ&Y:UY&;S;櫖_p,{'|%WrJHrw-oMVS3|uv3^f+W|Ĝvن)w;S*&ɰS_+9CTl.Ljhdwkp7NQi0}c޶or.lfi/Z|n󊶵V0ṄO΀푪[q[8& )ZP:+z]œ󟌪eJ1!Ч5c :2TEJv)\-x["c*V1B`t3wĬ Q7ɜHNsi6e3k "{괬k,fCXX; HSxGq~IK e;W߳hcUS(y,HPU2쟇f۶=q! E B&YuG=wbI"B^\K"_+֬ Q 6c8'ʞyPKOCl=T,7META-INF/CERT.SFmIo@;cmMz`"-^0 8:l3K/ixM pEUV:I(<;d1. 5&VOLtO|i{>#tdh,*38gq sSE^]Nz}J6q(bݘ3b#QRN5EAr^ýs*^5 vx;vΨ7h*+>ރEM!b2 >j2,4X7$+a0shNbk(-f_.|PKOC _META-INF/CERT.RSA3hbfajhδAG&FFCnN6Vm>f&)Vn"M/ f&F&&FS^FVs ̡,lL| 0c^JQ~fHY*Tn 'khd`dhfddd`l%kX@8ٍ ̍ L w;',fڦQV^:|Ʊ  F;f\=oOz<*}yC7Zl//23J^w0ɯy_U0|I7'ܘvg&ݳĽ hA t/'k?LVprsV7Yʮ}:FKO6{Ul{[kP–k2ئq/2klj+~=}$!ۿ*%,sҸ-}&c˪ޠ^aKaZj6>1h|Ld<4} %'h`il6Z&G}U&gk7ޒ:!r _{[սrYFi3.WݫegOnP:g؞[7,|iowi^ί-x΅ǟ_.6PK OC=-res/drawable/ic_launcher.pngPKOCS Lres/layout/activity_main.xmlPKOCIדAndroidManifest.xmlPK OC?} resources.arscPKOCT~ classes.dexPKENgW2META-INF/MANIFEST.MFUTSTux PKOCl=T,7 META-INF/CERT.SFPKOC _!META-INF/CERT.RSAPK%$fdroidserver-1.0.9/tests/update.TestCase0000775000175000017500000010165413303240575020222 0ustar hanshans00000000000000#!/usr/bin/env python3 # http://www.drdobbs.com/testing/unit-testing-with-python/240165163 import git import inspect import logging import optparse import os import shutil import subprocess import sys import tempfile import unittest import yaml from binascii import unhexlify from distutils.version import LooseVersion localmodule = os.path.realpath( os.path.join(os.path.dirname(inspect.getfile(inspect.currentframe())), '..')) print('localmodule: ' + localmodule) if localmodule not in sys.path: sys.path.insert(0, localmodule) import fdroidserver.common import fdroidserver.exception import fdroidserver.metadata import fdroidserver.update from fdroidserver.common import FDroidPopen class UpdateTest(unittest.TestCase): '''fdroid update''' def setUp(self): logging.basicConfig(level=logging.INFO) self.basedir = os.path.join(localmodule, 'tests') self.tmpdir = os.path.abspath(os.path.join(self.basedir, '..', '.testfiles')) if not os.path.exists(self.tmpdir): os.makedirs(self.tmpdir) os.chdir(self.basedir) def testInsertStoreMetadata(self): config = dict() fdroidserver.common.fill_config_defaults(config) config['accepted_formats'] = ('txt', 'yml') fdroidserver.update.config = config fdroidserver.update.options = fdroidserver.common.options os.chdir(os.path.join(localmodule, 'tests')) shutil.rmtree(os.path.join('repo', 'info.guardianproject.urzip'), ignore_errors=True) shutil.rmtree(os.path.join('build', 'com.nextcloud.client'), ignore_errors=True) shutil.copytree(os.path.join('source-files', 'com.nextcloud.client'), os.path.join('build', 'com.nextcloud.client')) shutil.rmtree(os.path.join('build', 'com.nextcloud.client.dev'), ignore_errors=True) shutil.copytree(os.path.join('source-files', 'com.nextcloud.client.dev'), os.path.join('build', 'com.nextcloud.client.dev')) shutil.rmtree(os.path.join('build', 'eu.siacs.conversations'), ignore_errors=True) shutil.copytree(os.path.join('source-files', 'eu.siacs.conversations'), os.path.join('build', 'eu.siacs.conversations')) apps = dict() for packageName in ('info.guardianproject.urzip', 'org.videolan.vlc', 'obb.mainpatch.current', 'com.nextcloud.client', 'com.nextcloud.client.dev', 'eu.siacs.conversations'): apps[packageName] = fdroidserver.metadata.App() apps[packageName]['id'] = packageName apps[packageName]['CurrentVersionCode'] = 0xcafebeef apps['info.guardianproject.urzip']['CurrentVersionCode'] = 100 buildnextcloudclient = fdroidserver.metadata.Build() buildnextcloudclient.gradle = ['generic'] apps['com.nextcloud.client']['builds'] = [buildnextcloudclient] buildnextclouddevclient = fdroidserver.metadata.Build() buildnextclouddevclient.gradle = ['versionDev'] apps['com.nextcloud.client.dev']['builds'] = [buildnextclouddevclient] build_conversations = fdroidserver.metadata.Build() build_conversations.gradle = ['free'] apps['eu.siacs.conversations']['builds'] = [build_conversations] fdroidserver.update.insert_localized_app_metadata(apps) appdir = os.path.join('repo', 'info.guardianproject.urzip', 'en-US') self.assertTrue(os.path.isfile(os.path.join(appdir, 'icon.png'))) self.assertTrue(os.path.isfile(os.path.join(appdir, 'featureGraphic.png'))) self.assertEqual(6, len(apps)) for packageName, app in apps.items(): self.assertTrue('localized' in app) self.assertTrue('en-US' in app['localized']) self.assertEqual(1, len(app['localized'])) if packageName == 'info.guardianproject.urzip': self.assertEqual(7, len(app['localized']['en-US'])) self.assertEqual('full description\n', app['localized']['en-US']['description']) self.assertEqual('title\n', app['localized']['en-US']['name']) self.assertEqual('short description\n', app['localized']['en-US']['summary']) self.assertEqual('video\n', app['localized']['en-US']['video']) self.assertEqual('icon.png', app['localized']['en-US']['icon']) self.assertEqual('featureGraphic.png', app['localized']['en-US']['featureGraphic']) self.assertEqual('100\n', app['localized']['en-US']['whatsNew']) elif packageName == 'org.videolan.vlc': self.assertEqual('icon.png', app['localized']['en-US']['icon']) self.assertEqual(9, len(app['localized']['en-US']['phoneScreenshots'])) self.assertEqual(15, len(app['localized']['en-US']['sevenInchScreenshots'])) elif packageName == 'obb.mainpatch.current': self.assertEqual('icon.png', app['localized']['en-US']['icon']) self.assertEqual('featureGraphic.png', app['localized']['en-US']['featureGraphic']) self.assertEqual(1, len(app['localized']['en-US']['phoneScreenshots'])) self.assertEqual(1, len(app['localized']['en-US']['sevenInchScreenshots'])) elif packageName == 'com.nextcloud.client': self.assertEqual('Nextcloud', app['localized']['en-US']['name']) self.assertEqual(1073, len(app['localized']['en-US']['description'])) self.assertEqual(78, len(app['localized']['en-US']['summary'])) elif packageName == 'com.nextcloud.client.dev': self.assertEqual('Nextcloud Dev', app['localized']['en-US']['name']) self.assertEqual(586, len(app['localized']['en-US']['description'])) self.assertEqual(79, len(app['localized']['en-US']['summary'])) elif packageName == 'eu.siacs.conversations': self.assertEqual('Conversations', app['localized']['en-US']['name']) def test_insert_triple_t_metadata(self): importer = os.path.join(self.basedir, 'tmp', 'importer') packageName = 'org.fdroid.ci.test.app' if not os.path.isdir(importer): logging.warning('skipping test_insert_triple_t_metadata, import.TestCase must run first!') return tmptestsdir = tempfile.mkdtemp(prefix=inspect.currentframe().f_code.co_name, dir=self.tmpdir) packageDir = os.path.join(tmptestsdir, 'build', packageName) shutil.copytree(importer, packageDir) # always use the same commit so these tests work when ci-test-app.git is updated repo = git.Repo(packageDir) for remote in repo.remotes: remote.fetch() repo.git.reset('--hard', 'b9e5d1a0d8d6fc31d4674b2f0514fef10762ed4f') repo.git.clean('-fdx') os.mkdir(os.path.join(tmptestsdir, 'metadata')) metadata = dict() metadata['Description'] = 'This is just a test app' with open(os.path.join(tmptestsdir, 'metadata', packageName + '.yml'), 'w') as fp: yaml.dump(metadata, fp) config = dict() fdroidserver.common.fill_config_defaults(config) config['accepted_formats'] = ('yml') fdroidserver.common.config = config fdroidserver.update.config = config fdroidserver.update.options = fdroidserver.common.options os.chdir(tmptestsdir) apps = fdroidserver.metadata.read_metadata(xref=True) fdroidserver.update.copy_triple_t_store_metadata(apps) # TODO ideally, this would compare the whole dict like in metadata.TestCase's test_read_metadata() correctlocales = [ 'ar', 'ast_ES', 'az', 'ca', 'ca_ES', 'cs-CZ', 'cs_CZ', 'da', 'da-DK', 'de', 'de-DE', 'el', 'en-US', 'es', 'es-ES', 'es_ES', 'et', 'fi', 'fr', 'fr-FR', 'he_IL', 'hi-IN', 'hi_IN', 'hu', 'id', 'it', 'it-IT', 'it_IT', 'iw-IL', 'ja', 'ja-JP', 'kn_IN', 'ko', 'ko-KR', 'ko_KR', 'lt', 'nb', 'nb_NO', 'nl', 'nl-NL', 'no', 'pl', 'pl-PL', 'pl_PL', 'pt', 'pt-BR', 'pt-PT', 'pt_BR', 'ro', 'ro_RO', 'ru-RU', 'ru_RU', 'sv-SE', 'sv_SE', 'te', 'tr', 'tr-TR', 'uk', 'uk_UA', 'vi', 'vi_VN', 'zh-CN', 'zh_CN', 'zh_TW', ] locales = sorted(list(apps['org.fdroid.ci.test.app']['localized'].keys())) self.assertEqual(correctlocales, locales) def javagetsig(self, apkfile): getsig_dir = os.path.join(os.path.dirname(__file__), 'getsig') if not os.path.exists(getsig_dir + "/getsig.class"): logging.critical("getsig.class not found. To fix: cd '%s' && ./make.sh" % getsig_dir) sys.exit(1) # FDroidPopen needs some config to work config = dict() fdroidserver.common.fill_config_defaults(config) fdroidserver.common.config = config p = FDroidPopen(['java', '-cp', os.path.join(os.path.dirname(__file__), 'getsig'), 'getsig', os.path.join(os.getcwd(), apkfile)]) sig = None for line in p.output.splitlines(): if line.startswith('Result:'): sig = line[7:].strip() break if p.returncode == 0: return sig else: return None def testGoodGetsig(self): # config needed to use jarsigner and keytool config = dict() fdroidserver.common.fill_config_defaults(config) fdroidserver.update.config = config apkfile = os.path.join(os.path.dirname(__file__), 'urzip.apk') sig = self.javagetsig(apkfile) self.assertIsNotNone(sig, "sig is None") pysig = fdroidserver.update.getsig(apkfile) self.assertIsNotNone(pysig, "pysig is None") self.assertEqual(sig, fdroidserver.update.getsig(apkfile), "python sig not equal to java sig!") self.assertEqual(len(sig), len(pysig), "the length of the two sigs are different!") try: self.assertEqual(unhexlify(sig), unhexlify(pysig), "the length of the two sigs are different!") except TypeError as e: print(e) self.assertTrue(False, 'TypeError!') def testBadGetsig(self): """getsig() should still be able to fetch the fingerprint of bad signatures""" # config needed to use jarsigner and keytool config = dict() fdroidserver.common.fill_config_defaults(config) fdroidserver.update.config = config apkfile = os.path.join(os.path.dirname(__file__), 'urzip-badsig.apk') sig = fdroidserver.update.getsig(apkfile) self.assertEqual(sig, 'e0ecb5fc2d63088e4a07ae410a127722', "python sig should be: " + str(sig)) apkfile = os.path.join(os.path.dirname(__file__), 'urzip-badcert.apk') sig = fdroidserver.update.getsig(apkfile) self.assertEqual(sig, 'e0ecb5fc2d63088e4a07ae410a127722', "python sig should be: " + str(sig)) def testScanApksAndObbs(self): os.chdir(os.path.join(localmodule, 'tests')) if os.path.basename(os.getcwd()) != 'tests': raise Exception('This test must be run in the "tests/" subdir') config = dict() fdroidserver.common.fill_config_defaults(config) config['ndk_paths'] = dict() config['accepted_formats'] = ['json', 'txt', 'yml'] fdroidserver.common.config = config fdroidserver.update.config = config fdroidserver.update.options = type('', (), {})() fdroidserver.update.options.clean = True fdroidserver.update.options.delete_unknown = True fdroidserver.update.options.rename_apks = False fdroidserver.update.options.allow_disabled_algorithms = False apps = fdroidserver.metadata.read_metadata(xref=True) knownapks = fdroidserver.common.KnownApks() apks, cachechanged = fdroidserver.update.process_apks({}, 'repo', knownapks, False) self.assertEqual(len(apks), 14) apk = apks[0] self.assertEqual(apk['packageName'], 'com.politedroid') self.assertEqual(apk['versionCode'], 3) self.assertEqual(apk['minSdkVersion'], '3') self.assertEqual(apk['targetSdkVersion'], '3') self.assertFalse('maxSdkVersion' in apk) apk = apks[6] self.assertEqual(apk['packageName'], 'obb.main.oldversion') self.assertEqual(apk['versionCode'], 1444412523) self.assertEqual(apk['minSdkVersion'], '4') self.assertEqual(apk['targetSdkVersion'], '18') self.assertFalse('maxSdkVersion' in apk) fdroidserver.update.insert_obbs('repo', apps, apks) for apk in apks: if apk['packageName'] == 'obb.mainpatch.current': self.assertEqual(apk.get('obbMainFile'), 'main.1619.obb.mainpatch.current.obb') self.assertEqual(apk.get('obbPatchFile'), 'patch.1619.obb.mainpatch.current.obb') elif apk['packageName'] == 'obb.main.oldversion': self.assertEqual(apk.get('obbMainFile'), 'main.1434483388.obb.main.oldversion.obb') self.assertIsNone(apk.get('obbPatchFile')) elif apk['packageName'] == 'obb.main.twoversions': self.assertIsNone(apk.get('obbPatchFile')) if apk['versionCode'] == 1101613: self.assertEqual(apk.get('obbMainFile'), 'main.1101613.obb.main.twoversions.obb') elif apk['versionCode'] == 1101615: self.assertEqual(apk.get('obbMainFile'), 'main.1101615.obb.main.twoversions.obb') elif apk['versionCode'] == 1101617: self.assertEqual(apk.get('obbMainFile'), 'main.1101615.obb.main.twoversions.obb') else: self.assertTrue(False) elif apk['packageName'] == 'info.guardianproject.urzip': self.assertIsNone(apk.get('obbMainFile')) self.assertIsNone(apk.get('obbPatchFile')) def test_scan_apk(self): config = dict() fdroidserver.common.fill_config_defaults(config) fdroidserver.common.config = config fdroidserver.update.config = config os.chdir(os.path.join(localmodule, 'tests')) if os.path.basename(os.getcwd()) != 'tests': raise Exception('This test must be run in the "tests/" subdir') apk_info = fdroidserver.update.scan_apk('repo/souch.smsbypass_9.apk') self.assertIsNone(apk_info.get('maxSdkVersion')) self.assertEqual(apk_info.get('versionName'), '0.9') apk_info = fdroidserver.update.scan_apk('repo/duplicate.permisssions_9999999.apk') self.assertIsNone(apk_info.get('versionName')) self.assertEqual(apk_info['icons_src'], {'160': 'res/drawable/ic_launcher.png', '-1': 'res/drawable/ic_launcher.png'}) apk_info = fdroidserver.update.scan_apk('org.dyndns.fules.ck_20.apk') self.assertEqual(apk_info['icons_src'], {'240': 'res/drawable-hdpi-v4/icon_launcher.png', '120': 'res/drawable-ldpi-v4/icon_launcher.png', '160': 'res/drawable-mdpi-v4/icon_launcher.png', '-1': 'res/drawable-mdpi-v4/icon_launcher.png'}) self.assertEqual(apk_info['icons'], {}) self.assertEqual(apk_info['features'], []) self.assertEqual(apk_info['antiFeatures'], set()) self.assertEqual(apk_info['versionName'], 'v1.6pre2') self.assertEqual(apk_info['hash'], '897486e1f857c6c0ee32ccbad0e1b8cd82f6d0e65a44a23f13f852d2b63a18c8') self.assertEqual(apk_info['packageName'], 'org.dyndns.fules.ck') self.assertEqual(apk_info['versionCode'], 20) self.assertEqual(apk_info['size'], 132453) self.assertEqual(apk_info['nativecode'], ['arm64-v8a', 'armeabi', 'armeabi-v7a', 'mips', 'mips64', 'x86', 'x86_64']) self.assertEqual(apk_info['minSdkVersion'], '7') self.assertEqual(apk_info['sig'], '9bf7a6a67f95688daec75eab4b1436ac') self.assertEqual(apk_info['hashType'], 'sha256') self.assertEqual(apk_info['targetSdkVersion'], '8') apk_info = fdroidserver.update.scan_apk('org.bitbucket.tickytacky.mirrormirror_4.apk') self.assertEqual(apk_info.get('versionName'), '1.0.3') self.assertEqual(apk_info['icons_src'], {'160': 'res/drawable-mdpi/mirror.png', '-1': 'res/drawable-mdpi/mirror.png'}) apk_info = fdroidserver.update.scan_apk('repo/info.zwanenburg.caffeinetile_4.apk') self.assertEqual(apk_info.get('versionName'), '1.3') self.assertEqual(apk_info['icons_src'], {'160': 'res/drawable/ic_coffee_on.xml', '-1': 'res/drawable/ic_coffee_on.xml'}) apk_info = fdroidserver.update.scan_apk('repo/com.politedroid_6.apk') self.assertEqual(apk_info.get('versionName'), '1.5') self.assertEqual(apk_info['icons_src'], {'120': 'res/drawable-ldpi-v4/icon.png', '160': 'res/drawable-mdpi-v4/icon.png', '240': 'res/drawable-hdpi-v4/icon.png', '320': 'res/drawable-xhdpi-v4/icon.png', '-1': 'res/drawable-mdpi-v4/icon.png'}) apk_info = fdroidserver.update.scan_apk('SpeedoMeterApp.main_1.apk') self.assertEqual(apk_info.get('versionName'), '1.0') self.assertEqual(apk_info['icons_src'], {}) def test_scan_apk_no_sig(self): config = dict() fdroidserver.common.fill_config_defaults(config) fdroidserver.update.config = config os.chdir(os.path.join(localmodule, 'tests')) if os.path.basename(os.getcwd()) != 'tests': raise Exception('This test must be run in the "tests/" subdir') with self.assertRaises(fdroidserver.exception.BuildException): fdroidserver.update.scan_apk('urzip-release-unsigned.apk') def test_process_apk(self): def _build_yaml_representer(dumper, data): '''Creates a YAML representation of a Build instance''' return dumper.represent_dict(data) config = dict() fdroidserver.common.fill_config_defaults(config) fdroidserver.update.config = config os.chdir(os.path.join(localmodule, 'tests')) if os.path.basename(os.getcwd()) != 'tests': raise Exception('This test must be run in the "tests/" subdir') config['ndk_paths'] = dict() config['accepted_formats'] = ['json', 'txt', 'yml'] fdroidserver.common.config = config fdroidserver.update.config = config fdroidserver.update.options = type('', (), {})() fdroidserver.update.options.clean = True fdroidserver.update.options.rename_apks = False fdroidserver.update.options.delete_unknown = True fdroidserver.update.options.allow_disabled_algorithms = False for icon_dir in fdroidserver.update.get_all_icon_dirs('repo'): if not os.path.exists(icon_dir): os.makedirs(icon_dir) knownapks = fdroidserver.common.KnownApks() apkList = ['../urzip.apk', '../org.dyndns.fules.ck_20.apk'] for apkName in apkList: _, apk, cachechanged = fdroidserver.update.process_apk({}, apkName, 'repo', knownapks, False) # Don't care about the date added to the repo and relative apkName del apk['added'] del apk['apkName'] # avoid AAPT application name bug del apk['name'] # ensure that icons have been extracted properly if apkName == '../urzip.apk': self.assertEqual(apk['icon'], 'info.guardianproject.urzip.100.png') if apkName == '../org.dyndns.fules.ck_20.apk': self.assertEqual(apk['icon'], 'org.dyndns.fules.ck.20.png') for density in fdroidserver.update.screen_densities: icon_path = os.path.join(fdroidserver.update.get_icon_dir('repo', density), apk['icon']) self.assertTrue(os.path.isfile(icon_path)) self.assertTrue(os.path.getsize(icon_path) > 1) savepath = os.path.join('metadata', 'apk', apk['packageName'] + '.yaml') # Uncomment to save APK metadata # with open(savepath, 'w') as f: # yaml.add_representer(fdroidserver.metadata.Build, _build_yaml_representer) # yaml.dump(apk, f, default_flow_style=False) with open(savepath, 'r') as f: frompickle = yaml.load(f) self.maxDiff = None self.assertEqual(apk, frompickle) def test_process_apk_signed_by_disabled_algorithms(self): config = dict() fdroidserver.common.fill_config_defaults(config) fdroidserver.update.config = config config['ndk_paths'] = dict() config['accepted_formats'] = ['json', 'txt', 'yml'] fdroidserver.common.config = config fdroidserver.update.config = config fdroidserver.update.options = type('', (), {})() fdroidserver.update.options.clean = True fdroidserver.update.options.verbose = True fdroidserver.update.options.rename_apks = False fdroidserver.update.options.delete_unknown = True fdroidserver.update.options.allow_disabled_algorithms = False knownapks = fdroidserver.common.KnownApks() tmptestsdir = tempfile.mkdtemp(prefix=inspect.currentframe().f_code.co_name, dir=self.tmpdir) print('tmptestsdir', tmptestsdir) os.chdir(tmptestsdir) os.mkdir('repo') os.mkdir('archive') # setup the repo, create icons dirs, etc. fdroidserver.update.process_apks({}, 'repo', knownapks) fdroidserver.update.process_apks({}, 'archive', knownapks) disabledsigs = ['org.bitbucket.tickytacky.mirrormirror_2.apk', ] for apkName in disabledsigs: shutil.copy(os.path.join(self.basedir, apkName), os.path.join(tmptestsdir, 'repo')) skip, apk, cachechanged = fdroidserver.update.process_apk({}, apkName, 'repo', knownapks, allow_disabled_algorithms=True, archive_bad_sig=False) self.assertFalse(skip) self.assertIsNotNone(apk) self.assertTrue(cachechanged) self.assertFalse(os.path.exists(os.path.join('archive', apkName))) self.assertTrue(os.path.exists(os.path.join('repo', apkName))) javac = config['jarsigner'].replace('jarsigner', 'javac') v = subprocess.check_output([javac, '-version'], stderr=subprocess.STDOUT)[6:-1].decode('utf-8') if LooseVersion(v) < LooseVersion('1.8.0_132'): print('SKIPPING: running tests with old Java (' + v + ')') return # this test only works on systems with fully updated Java/jarsigner # that has MD5 listed in jdk.jar.disabledAlgorithms in java.security # https://blogs.oracle.com/java-platform-group/oracle-jre-will-no-longer-trust-md5-signed-code-by-default skip, apk, cachechanged = fdroidserver.update.process_apk({}, apkName, 'repo', knownapks, allow_disabled_algorithms=False, archive_bad_sig=True) self.assertTrue(skip) self.assertIsNone(apk) self.assertFalse(cachechanged) self.assertTrue(os.path.exists(os.path.join('archive', apkName))) self.assertFalse(os.path.exists(os.path.join('repo', apkName))) skip, apk, cachechanged = fdroidserver.update.process_apk({}, apkName, 'archive', knownapks, allow_disabled_algorithms=False, archive_bad_sig=False) self.assertFalse(skip) self.assertIsNotNone(apk) self.assertTrue(cachechanged) self.assertTrue(os.path.exists(os.path.join('archive', apkName))) self.assertFalse(os.path.exists(os.path.join('repo', apkName))) # ensure that icons have been moved to the archive as well for density in fdroidserver.update.screen_densities: icon_path = os.path.join(fdroidserver.update.get_icon_dir('archive', density), apk['icon']) self.assertTrue(os.path.isfile(icon_path)) self.assertTrue(os.path.getsize(icon_path) > 1) badsigs = ['urzip-badcert.apk', 'urzip-badsig.apk', 'urzip-release-unsigned.apk', ] for apkName in badsigs: shutil.copy(os.path.join(self.basedir, apkName), os.path.join(tmptestsdir, 'repo')) skip, apk, cachechanged = fdroidserver.update.process_apk({}, apkName, 'repo', knownapks, allow_disabled_algorithms=False, archive_bad_sig=False) self.assertTrue(skip) self.assertIsNone(apk) self.assertFalse(cachechanged) def test_process_invalid_apk(self): os.chdir(os.path.join(localmodule, 'tests')) if os.path.basename(os.getcwd()) != 'tests': raise Exception('This test must be run in the "tests/" subdir') config = dict() fdroidserver.common.fill_config_defaults(config) fdroidserver.common.config = config fdroidserver.update.config = config fdroidserver.update.options.delete_unknown = False knownapks = fdroidserver.common.KnownApks() apk = 'fake.ota.update_1234.zip' # this is not an APK, scanning should fail (skip, apk, cachechanged) = fdroidserver.update.process_apk({}, apk, 'repo', knownapks, False) self.assertTrue(skip) self.assertIsNone(apk) self.assertFalse(cachechanged) def test_translate_per_build_anti_features(self): os.chdir(os.path.join(localmodule, 'tests')) if os.path.basename(os.getcwd()) != 'tests': raise Exception('This test must be run in the "tests/" subdir') config = dict() fdroidserver.common.fill_config_defaults(config) config['ndk_paths'] = dict() config['accepted_formats'] = ['json', 'txt', 'yml'] fdroidserver.common.config = config fdroidserver.update.config = config fdroidserver.update.options = type('', (), {})() fdroidserver.update.options.clean = True fdroidserver.update.options.delete_unknown = True fdroidserver.update.options.rename_apks = False fdroidserver.update.options.allow_disabled_algorithms = False apps = fdroidserver.metadata.read_metadata(xref=True) knownapks = fdroidserver.common.KnownApks() apks, cachechanged = fdroidserver.update.process_apks({}, 'repo', knownapks, False) fdroidserver.update.translate_per_build_anti_features(apps, apks) self.assertEqual(len(apks), 14) foundtest = False for apk in apks: if apk['packageName'] == 'com.politedroid' and apk['versionCode'] == 3: antiFeatures = apk.get('antiFeatures') self.assertTrue('KnownVuln' in antiFeatures) self.assertEqual(3, len(antiFeatures)) foundtest = True self.assertTrue(foundtest) def test_create_metadata_from_template(self): tmptestsdir = tempfile.mkdtemp(prefix=inspect.currentframe().f_code.co_name, dir=self.tmpdir) print('tmptestsdir', tmptestsdir) os.chdir(tmptestsdir) os.mkdir('repo') os.mkdir('metadata') shutil.copy(os.path.join(localmodule, 'tests', 'urzip.apk'), 'repo') config = dict() fdroidserver.common.fill_config_defaults(config) config['ndk_paths'] = dict() config['accepted_formats'] = ['json', 'txt', 'yml'] fdroidserver.common.config = config fdroidserver.update.config = config fdroidserver.update.options = type('', (), {})() fdroidserver.update.options.clean = True fdroidserver.update.options.delete_unknown = False fdroidserver.update.options.rename_apks = False fdroidserver.update.options.allow_disabled_algorithms = False knownapks = fdroidserver.common.KnownApks() apks, cachechanged = fdroidserver.update.process_apks({}, 'repo', knownapks, False) self.assertEqual(1, len(apks)) apk = apks[0] testfile = 'metadata/info.guardianproject.urzip.yml' # create empty 0 byte .yml file, run read_metadata, it should work open(testfile, 'a').close() apps = fdroidserver.metadata.read_metadata(xref=True) self.assertEqual(1, len(apps)) os.remove(testfile) # test using internal template apps = fdroidserver.metadata.read_metadata(xref=True) self.assertEqual(0, len(apps)) fdroidserver.update.create_metadata_from_template(apk) self.assertTrue(os.path.exists(testfile)) apps = fdroidserver.metadata.read_metadata(xref=True) self.assertEqual(1, len(apps)) for app in apps.values(): self.assertEqual('urzip', app['Name']) self.assertEqual(1, len(app['Categories'])) break # test using external template.yml os.remove(testfile) self.assertFalse(os.path.exists(testfile)) shutil.copy(os.path.join(localmodule, 'examples', 'template.yml'), tmptestsdir) fdroidserver.update.create_metadata_from_template(apk) self.assertTrue(os.path.exists(testfile)) apps = fdroidserver.metadata.read_metadata(xref=True) self.assertEqual(1, len(apps)) for app in apps.values(): self.assertEqual('urzip', app['Name']) self.assertEqual(1, len(app['Categories'])) self.assertEqual('Internet', app['Categories'][0]) break with open(testfile) as fp: data = yaml.load(fp) self.assertEqual('urzip', data['Name']) self.assertEqual('urzip', data['Summary']) def test_has_known_vulnerability(self): good = [ 'org.bitbucket.tickytacky.mirrormirror_1.apk', 'org.bitbucket.tickytacky.mirrormirror_2.apk', 'org.bitbucket.tickytacky.mirrormirror_3.apk', 'org.bitbucket.tickytacky.mirrormirror_4.apk', 'org.dyndns.fules.ck_20.apk', 'urzip.apk', 'urzip-badcert.apk', 'urzip-badsig.apk', 'urzip-release.apk', 'urzip-release-unsigned.apk', 'repo/com.politedroid_3.apk', 'repo/com.politedroid_4.apk', 'repo/com.politedroid_5.apk', 'repo/com.politedroid_6.apk', 'repo/obb.main.oldversion_1444412523.apk', 'repo/obb.mainpatch.current_1619_another-release-key.apk', 'repo/obb.mainpatch.current_1619.apk', 'repo/obb.main.twoversions_1101613.apk', 'repo/obb.main.twoversions_1101615.apk', 'repo/obb.main.twoversions_1101617.apk', 'repo/urzip-; Рахма́, [rɐxˈmanʲɪnəf] سيرجي_رخمانينوف 谢·.apk', ] for f in good: self.assertFalse(fdroidserver.update.has_known_vulnerability(f)) with self.assertRaises(fdroidserver.exception.FDroidException): fdroidserver.update.has_known_vulnerability('janus.apk') def test_get_apk_icon_when_src_is_none(self): config = dict() fdroidserver.common.fill_config_defaults(config) fdroidserver.common.config = config fdroidserver.update.config = config # pylint: disable=protected-access icons_src = fdroidserver.update._get_apk_icons_src('urzip-release.apk', None) assert icons_src == {} if __name__ == "__main__": parser = optparse.OptionParser() parser.add_option("-v", "--verbose", action="store_true", default=False, help="Spew out even more information than normal") (fdroidserver.common.options, args) = parser.parse_args(['--verbose']) newSuite = unittest.TestSuite() newSuite.addTest(unittest.makeSuite(UpdateTest)) unittest.main(failfast=False) fdroidserver-1.0.9/tests/SpeedoMeterApp.main_1.apk0000664000175000017500000001620313323343065022010 0ustar hanshans00000000000000PKjd{K;META-INF/MANIFEST.MFun@= MP.p (buӌ0̠9_)b\eT#ISz(%XJ]34nNa\ z n^D!%IvPGT κHCY r`Ώ_ǟs=!++W9VEW0T "%5WK0G8tSg0됚ƈ)Xeڀl76i|9[v5.k-Gh<2Ą-f *. c]5WmTM53Ëf3PK;PKjd{K΄hMETA-INF/E63748F8.SFuKs@VXfBlK* @AL5@#v3~LM%ݜ|z4)hȯ8J]BA- $OiB7߃!Р]N,]Ԭ~4Q23tIo+M$q[ԟ]3,H$?"Z8̉dU*v\]2*蟊K.E&kZSuݫS.Ddžv*ŐmgmrTځ̠s0 O4U6g͚^,] ${M^>ߪ`eRBKM!W2 i:]0i[ٳGb,?e/IwƬ.p﯒2fsd3X&v[:u Ö5%5`VA/߄ PKdz(PKexKQ *)META-INF/buildserverid 8`tOy;8[t82PKQ *)PKexKZF[))META-INF/fdroidserverid Hu`³Fnsg$:0[~PKZF[))PKexK(QncAndroidManifest.xmlSnAn v51AHـE +P0R[0cK$.!B>#|xCĎ]3]3!<- qωow(`x@;L|%%>_1y.zhbmTCft:Oh~AE/G.#xXaLuQj}-5.? mfc;T7h1:Ot br3ؤRcrutlID1An_U{ZqIkI6Mz6HNU5洉-Zl^NJ1ӒuT26F1OP: Iwm>3onw{Sg-'cWHnt4;UtS??PUq]w xÀ  J)/ObWͅ&9O9-pG䡜<$왺qV/w +9z88f{['7͘_lne[pj3Zy==kgqVoyG/gT /d0w˗0|oUPK(QncPKexKG*B_res/layout/main.xmlNBAz @cie t>&+%B@EioK>&&p/r7'3sf U $ =iY9`1 x/ | jIHuІ]K]hLג}}>עs삫0ꮉGTK)lS7*' z^ci׮*ܡkTUNԗUx^WU.u2؏t5?ݑ.=MM워}cV&ۉ:mbo"~Bom?oP#mRHIj6Z UU_J+>TM+EJT U}}HZCTk7ަؿ{=;q\;e-?@h?+=Wb/4hyQԳG@Ҿ5"| 2c=D[]' BzlZ! `Up 7kMuq-p N9!7u ΃/o_@8L0& Hd%_Wx@ha0&X_]Oacj:C`/x SH QaH.}E*& 6 @;=[6A'RCa<A?8Br<)=c~EN@W\wDU?>tq.tAOB?s~9]5j Ō<C@q!M*Y%jRsBd*Rҕ+٠d=J{c5֕*Sүd@hXH/ YKSBдutZ! !tV5E|O!H4&dN@6I9s"<9 ٪ڷa#b~2oZ>hJR}D^39$hp4߀] zPyM )?1KÿU ~*FOL|Jw_=ױt5+>Zc̋ârXO<"^roTIKTyZNz%J6+ɿ/!BD M"]Ț~Lz͈ eo?zyFQv[YеViա^h 0.zZ d݋0v߂{M% _T96ߐpXkUTZ*Tue!HC3X>l "t^?<ؐZ]vm"Z7AgאmơA;N}\_3\=]7ZѝSL.4ل;b;{Cv&5s|Es$p|pjj'NMM'NOO$;:}(yGbbcNc N8`|nf0168Gnr`>ߛ5meÐu Vkik_\-E`;xUF-mYn!*T89t"U,mG~i0oyx`ҵlwW;*~Er:9c"1"6Ierm=;ZW) wZv323K39LΘ"_nj9o?ne/ !-qә^0 S֥EIbeLtLckeƉ 6Rb{l<*!wz%aE7I wˮOe$c8FM`bz,A<|&}zv2FY)l838yg'GPXZZ3F3|H9Zu}+}(q)ϬҹBt)Pk+UXyx,F3yɃ'?|@:?̤ @#:ٹE@.XPKuti` %;eFy![-HSCΙ¦-K <{n?&V$h.Y1n̢Sӂ QrA!2H^ȑ.j`Ak33RٓEBL-=;:^yEr<20M[YǑ7nޤ,أ.h+3gElch,Ҁߗ^ Z䤇δypG0%5iz桒2VRN&fm[-o:nmyCBAC-j0_&J,׿XQ~zE͊PK PKjd{K;META-INF/MANIFEST.MFPKjd{K΄h}META-INF/E63748F8.SFPKjd{Kdz(CMETA-INF/E63748F8.RSAPKexKQ *)META-INF/buildserveridPKexKZF[))META-INF/fdroidserveridPKexK(QncAndroidManifest.xmlPKexKG*B_Y res/layout/main.xmlPK !92 resources.arscPKexK  classes.dexPK K"fdroidserver-1.0.9/tests/exception.TestCase0000775000175000017500000000375213302025443020730 0ustar hanshans00000000000000#!/usr/bin/env python3 # http://www.drdobbs.com/testing/unit-testing-with-python/240165163 import inspect import optparse import os import sys import unittest localmodule = os.path.realpath( os.path.join(os.path.dirname(inspect.getfile(inspect.currentframe())), '..')) print('localmodule: ' + localmodule) if localmodule not in sys.path: sys.path.insert(0, localmodule) import fdroidserver.common import fdroidserver.exception class ExceptionTest(unittest.TestCase): '''fdroidserver/exception.py''' def test_FDroidException(self): try: raise fdroidserver.exception.FDroidException() except fdroidserver.exception.FDroidException as e: str(e) try: raise fdroidserver.exception.FDroidException(9) except fdroidserver.exception.FDroidException as e: str(e) try: raise fdroidserver.exception.FDroidException(-123.12234) except fdroidserver.exception.FDroidException as e: str(e) try: raise fdroidserver.exception.FDroidException("this is a string") except fdroidserver.exception.FDroidException as e: str(e) try: raise fdroidserver.exception.FDroidException(['one', 'two', 'three']) except fdroidserver.exception.FDroidException as e: str(e) try: raise fdroidserver.exception.FDroidException(('one', 'two', 'three')) except fdroidserver.exception.FDroidException as e: str(e) if __name__ == "__main__": parser = optparse.OptionParser() parser.add_option("-v", "--verbose", action="store_true", default=False, help="Spew out even more information than normal") (fdroidserver.exception.options, args) = parser.parse_args(['--verbose']) fdroidserver.common.options = fdroidserver.exception.options newSuite = unittest.TestSuite() newSuite.addTest(unittest.makeSuite(ExceptionTest)) unittest.main(failfast=False) fdroidserver-1.0.9/tests/janus.apk0000664000175000017500000002352313323343071017110 0ustar hanshans00000000000000dex 035DA 9\*EQ5 cPS'pxV4pp 0px !<^x{      `Goodbye world!HelloWorldActivity.javaILandroid/app/Activity;Landroid/content/Context;Landroid/os/Bundle;Landroid/view/View;Landroid/widget/TextView; Lcom/example/HelloWorldActivity;Ljava/lang/CharSequence;VVIVLonCreatesavedInstanceStatesetContentView setGravitysetTextthisview>ZZZ?po 2"p !n n n  p 0p     `pPK }>* AndroidManifest.xmlTNA==fxc^Bb4Ђh5JT4 oLCtq/pᚸp킅qҕKwzv5SL:UuHsPć$0+2MnHLO_-AvUI_!+o.kTޔ] 5..R)om}q%f찭0*u!ɯ2$3z(.6Y=n[ ̻sj7ğ+{y<Ȳ^8&Ne\ռFfRt G@Bsطkgc1 s#f:\i,^-Qaw5+z~1|_#^ ;+9ē:t)*uE?+#sTٽ}_|8RU-Kՙ)^~HxNn lP..ItrUq֧dW|M'#z u32S6H (L)/j䡿h3lGԛf^Z)YVe"ˊSʩUWL|'ՕcwRiݪo)T&3DMIqyeٶ{\Wsl;t\qOΩN#f>sm h1Kz Cvio]^0Dz݆^&D/AGzzZk E+h Gz}^kZ/a54HnrM% BLTkW_]Ƙ 궑~B0o^ _kPkf#f(d͆f<_hBFވ|~ N>?3KVϱ?PK }L8 res/drawable/ic_launcher.pngPNG  IHDR@@iq ~IDATxݛ{eU}?>530 3 C-6JFGRVBBHkmB5АѤIH* CjiPp@2`{̽s^k3w^;wFf%+u^w=Z[Q>!]n6{w+^Zrg%ɘbf"_d""8S)=W|[dbƔ”D~/VBL4֞4zm.ۇo.}2ɀ3cAE "WP%O y؎/_RsO6g8*ImhJkk,3ﶆ L)x"P7Lk]>{K'Ɲ}glOHoxAdH5W`+n|jf^T {l9<=Y8?3`}Z~=Q]Dd$4_u68cQ /-`f|xW޾̱0,Qv%f:9Erם PFa Cb$MDSN-wxbwy?9-MI,qYqТ3e3cL&K'Sm'{~5iUK2T*|Q>BṿƤFާw2j=AReuqPbss`d8\< fczlT57;a_;_n#!R|dc¶6$Zp^$XRӺVҪÅ=mf*`8g.}1#X&`KceA@?#h/XGF8s폰2QԓX(s3n)NeʙcUsp Kֈ-Gܷ(0Z;0`s$q-lݫ);[C2X5ȫ *[V.NԘh &e{O!Z'3(REe}x .=hd '9 &g+vTXQdzU1⍘,řcXJ:t$T!ƾ`)d,BB Fp7IJ;S)Kuo H ׏,;LX D?d0K6 AJ \Zp>(wl(t$HH#Mt޺D I9Dê@"I,Lԋ1I$D(;abx*l D3ZA@%ŷTT~flFFKg, .P9=H8Yb7GIB_ 0 )YBi-r 9* u^ zZ0;j  3)'J{hLJJjZRed=!X%ªTO-e<4M[i9uZ9г"Ey_\u"ۤk5w٣VUv+.YW?)C0TdUlxalÏoARYOɛ6O)-II9 1mx稢ɦfuSJALJLZX{Rn~TviEn12%w+˔2l\qDw]Xw9BԺ*ؖTI1O)ojG*ÅJuaҍQ Ⱦ=xCG7U%EW6Ar{3D2ҝG`9{G=F`I79&,*b9 $Ţc}'ن~!GW{']}uyQx/8#m/7CcЩA,I:Q{!kYk៿s{ALw&~\f?n>{ArPfUWO6?bo^HGz+Z缏t3 xϒ! Or]ˡʀz/}s>^ٱt޻RfE`G.O(3PvaU%bJ]QUǶ0>1kB2ugoF.cOJ?P *Eֽa)#zGV2OE}?ێl9 "8<.kM"83rM5w9YpLC0 n;Jf e84Yʙ+ݴzp\]olNȒ?Re?QGq?&Y{S' =_?8ues_<$ 2|5~5wnqPpitGƵŷ޳5f͇l-S_U{_Z뾏2vc`|hӼ#?mjdkRwX5m:b*I/ :{{&L_lv!|M"uCHځMvw,p7 nNK,/Yygp;lU'ɐw".W眈8cq""s~#։]NbIMUM,&3UmfmfZEvO vݏ<WZ_⚺nIENDB`PK }resources.arsc 80<xres/drawable/guardsquare.pngres/drawable/ic_launcher.pngres/xml/wearable_app_desc.xmlvoice_transcriptionHelloWorld Sample com.example  8 *8FVattrdrawablexmlarraycolorstringstyleX D4Z guardsquare ic_launcherwearable_app_descandroid_wear_capabilitiesaccentprimary primary_dark primary_lightapp_nameAppThemeLtT8L`P8LlP8 L\8 0KKKί{L`P8L`P8 8LP8 8345PK }0Z#F classes.dexeoAge8y4\GQ \dC؎ !ѤD4JDPhM(vIޝKs/қwO_7~ow R"w.TIIT#?v+9Fd d>o`s\K`5x )lϗJ`JSڦ{jkwsoC1Z4ȱT:(*ρŠ3:chday^Qt<ݒ=C~?􉵨㠟秩7Ynx/הv,4 kkq|p/2 e.(v/Y_M#ؠmыxkE~o=:dtZM$n/8Ux |$- +h*T*a~T/%VYRv~+m7Q&9YPy,dY"PM\F )u Sټ7 o1{qؖqGF\?ٹ^O~b'߳Zw0eAWYEPK })pXMETA-INF/MANIFEST.MFUQo0{~EP\@ ɆaNf)J-G-'''%ݙ9(]I#FtLDC0F zm@t" (LɊ?uiь|~ȰgGQmș슾srjEy5%XLD\5k&OOzi&nc?:a>rX3Ǝp.o.]rwlL>9=/PK }uuG=META-INF/CERT.SFmn@=O1{ BKH\HT(f& 3O6F|3yKC@daJ(ͫ|Z&o|$K tFe}Bh 1. }`"S|l9b:9y*Lsi ﯍678ϕei6Afa"kX!$5NUsMۥ ^Gd?"~BKW [J'ֺU^/ 677Wϵ1b,~~1/rF#U]QK؏NPf&)Vn"M/ f&F&& xjYZ&0 3 8\y)E)b" fa^KjRi8a8K`x̟zWeriasbQK%UKR;~㗔fܻdhStYebAӶ6dї5or v$׼h(瓣}wf}w%E5;_31320!3]Z3^^:09cͩ]_$|v ^<4gO./^).Kk.9҂§Z r73zhݺ֛IˋvHlI[i34o:k* AndroidManifest.xmlPK }L8 res/drawable/ic_launcher.pngPK }resources.arscPK }0Z#F classes.dexPK })pXW META-INF/MANIFEST.MFPK }uuG=!META-INF/CERT.SFPK }5)"`"META-INF/CERT.RSAPK~%fdroidserver-1.0.9/tests/keystore.jks0000664000175000017500000000726013272566407017666 0ustar hanshans00000000000000sovaW%4 0 0 +* n5OhF]Vj:.'6%|UAHiQLbSgƑt#ʯh˵u-sA;r)X+hZ3wMQJK~/LH%Ryv]";2L__5>Eԥ3]F6ueXC+ZkL~#ywYq)m#<~*TD%2& ĮjZQZnUm|C׊iO[g XBZh G پp>Cm =+=_-ú_On.:6)HӜwcqȗ.dg ;Ѽ2Hs*$.=24lb{8س`۩ɽ% s׎A.-" TݑXHS7ꮭR7wChel_uvLƬZukQn T/(O0/_?%986W3Ioc@>r[<mq~.724!Η/%o!xg9r P>d_9=W7|ģA lŏΧ(D0Øn@˂LJ*}KIp q& ++=]bKQ] JIQ9&'kʈR% pk8^>?8D]'5͇ yU$XvXv&.VdXQr*fsn4IM7.vp_GQ%b%8 bk^Q *] kAYҮܮ(&:Y> `Y'#x;K뱹6_”^Kb+ӄ= %R򺦖B> d$b9D?zw@fB*WIL#yk-?%bzM"ϩxvdEVM%9V l,E JwI0f6~uwBV1Vr8V- u'r_ ٙHHALs W˱'~?Equ.@l8iY%4W_L[k>'Ld>Ă>,MxQ!l":r=&Svb@wJ4@lCMpF=' ˏGg= ht2wxms+c~qGf7&,kA{ܢ/ Wj"}]Pg1࿯(g:)k ]R)N%S:Ekotƶo`tIS&0&τ XUZU8jUilm7ܰ˱ Mo^y1ިWDobEZ]Ne(uGΤrٺщy_KG5G8rU QY2F> ✨ac/HARdlz?Se1Y'xәfI$;I bk직9NYڌ1&;{̦*"uen ޜhyq?W]9 o'¶vˆdi4ZDCd6'g=qo@A^|XwCڟL\ HhRK7WFl:ȾeV=JM'Dt!P0J4ntqNLN At"LT;`t}UQpaֳc)o> z1:7C<@|E $p--G| [f$aȳ[Rt#oxђccl4tXTLJL,.nozVӚᦜ|}zO%v#t©#Y#Ά`ΠXKo+]Q {ѹw(qvS :79ʊr2_ ީUj"X'oxF Rv8!OnH;Q˰>-ϼZ$N?._ϙ)ag29D#7Zq0%Pv-RB2I1gF%2G(Adњ\ND]42 6ԧ#&*oSaw6R`EhQw0i*';ȑ]?ٿZ>d$Zyviov[[pf"-C z֥L, ?̡&8,S򥆟ɉ>u_kl4j:wמe| R`Z.|KxoU\⼒CC ۺHϾpvGy2s O P8LG  ĞI 4p=#b\]P}&88xaAXr܁ Fʕtw1N#Hy<"qu {Vh2y \tJyOOs*$WLeV`3}p9`J@#[W_4 &jg)S-@V ԽMWg8K;P9c(N$ p qtR~PquQ*iϸ:W*dV JhZ3'vgsN uk+>c~|'(.˦@`rtA!00U‹=թs8ѦA 0  *H  XqFo$&$I Azwɿ-'% >aw<3QeAuEmxoOV8,+ۡ3 0nG$2^/nxu6SK.o^+NͰh"T&cdy>Je|19q"he8pWC_q_ Y&e'DxHx *x1V--;G>i'PZ]9^kEBp>8*!QGzMhr;CGؼFЗJ$)ThƪB ^4w0twSIdzJ%OL`u4j Vsc+6\Z)T`>hv|<%7J[n(oR И+Zlbm`Q3wVfdroidserver-1.0.9/tests/check-fdroid-apk0000775000175000017500000004364413303240575020325 0ustar hanshans00000000000000#!/bin/bash # # Download and verify that the FDroid.apk is signed by the right PGP # key. The gpg key model is to trust only the key that is included in # this script, so there is a test to check that it is starting with an # empty keyring. # # To be run in a daily cronjob at a random time of day, e.g.: # # 0 0 * * * perl -le 'sleep rand 86400'; ./check-fdroid-apk # # One instance of this is here: # https://verification.f-droid.org/check-fdroid-apk/ set -e curl="curl --user-agent F-Droid" gpg="gpg" if [ "$1" = "-v" ]; then set -x verbose=true else curl="$curl --silent" gpg="$gpg --quiet" verbose=false fi test -e /tmp/.testfiles || mkdir /tmp/.testfiles dldir=`mktemp -d /tmp/.testfiles/run-tests.XXXX` export GNUPGHOME="$dldir" key="${dldir}/key.asc" apk="${dldir}/FDroid.apk" asc="${apk}.asc" log=/var/www/html/check-fdroid-apk/`date +%s`.txt $curl --user-agent F-Droid https://f-droid.org/FDroid.apk > $apk $curl --user-agent F-Droid https://f-droid.org/FDroid.apk.asc > $asc fingerprint=37D2C98789D8311948394E3E41E7044E1DBA2E89 cat > $key <<- EOF -----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1 Comment: GPG for Android - https://guardianproject.info/code/gnupg/ mQINBFNaZBcBEADVyvgks2gjG9VrHPvulVH62pzN2LpiD7lqLhAtpXSN/ZNgtkYp HbRJfRcuZzBUVGhuMqIRb8/B4OY19zonHazstZAywD2ojToC0os0hxLDU2H7jVnh HzsAuEkPR4hpzsftia0fzD4IlomQ0zP/C5K9wth2Cw+GFmxhI1aBZcrxVJhuVLpe wSRShUva2iYNUIPvq02xFhTWwoIpRxGHeT/XdLEi+IHu031v3mlM5vU5zbI1UFMb I7AnNByHfuKQ6PiDOyp14QzCw57bgAS8aRB9UK6e1xsVOVYIGNKs9xnErdYKJ295 DAxn/nHD+oaoVHP/NhuMmcNKK52vjG5HeZykHNqn5GAJ4uPFspWxRNCF+PnEnc28 EGGYql5U3jbIwmcZnVkKRahYRmf5ZRMyXroloeDARvCj7nS89Dg7QAd1rI8r2PzY eIbyjrKTOiXUWc6N/07k6k1qfzQuMuBnzAnYxUxs5js2kQSZ8SYdZBmWOjUIWA/E /HmzGFEfH7+SgjhQPjb56JnUunhma1p+JF9ZfnvDQArE0D5rBQkDqa4Z7VJtBFzO ASUMB0EzKlCBN2g7KWljwbMF6XzCTkMPmbPHLiN1XoxwiBozBPtnBxPEoz+E0dIU BaIg79nq5f3hwWsFTWfyJ9fEfiL0hg4kydUnRMT0Ww9Xf8vWWLp06Wq0fQARAQAB tBtGLURyb2lkIDxhZG1pbkBmLWRyb2lkLm9yZz6IRgQQEQIABgUCU1y+cwAKCRCx l/qOkBw134THAJwOo/3U+tzdQbAvP+NL086c06MkAgCghhLAHhimF7A4D9tsei8f KTC51OeJAjgEEwECACIFAlNaZBcCGwEGCwkIBwMCBhUIAgkKCwQWAgMBAh4BAheA AAoJEEHnBE4dui6JMKUQAKq7//PyLxhBzLy2tT05T1FJygddhyq94xZg1QgWhbDn VNslk+eNwSxnp1LPf7QswM/1R4UgEzaJ8h3a/iMoAOYoX/leAepNSx9VxlnByPu7 heN6B+c61nYpV6nQ9vYwI3FiEvcHs2vxmPw1YijtlumMHcpr7gXAWgqSveRBArEv uqoPLPizYOJfh84NhV9uEethSWkaoM0XtXVmaDXOFmmkvsgqDxFZf5jU4RQnrxek aGGokhs7BCZ+Dvawnw1Cu5eP+gscbSammAtbprRmALf5EcFhlF4Ifr9vvytJd4pj MRmXm4PfKekyOmj8pPN+2dWXUiEwNpr7dwN19WhlyW1vEXJg1/RD6IO2hrV854oJ J6mVGO2RWA5exipDNPYffxEGTnMREQxoKLV6lo5imNoOvoPOoLm1k90COxX9d8IE puRw4S5KwkIhlqMYR3YYC1jgJl8eJz/3yPdv3FqBYWGObz1n64JWTjqAQkYeAPno mJJ77uv47jXbH5+IaM6NrZCxT6RD0s3FMzuROQyTwB4WZqNjTdL8X3Hc6ljlWRvA IqiI3jtSGmVB2ObaCykZCbh0T2PMZC0Hzw+XidUtuusK5IVKYzJ7j4pnqxM/a8WE dc8dZ3V+tEuaW37/4hi4jJD6t2mthQinLO+knaaap+hR9kG84hxAdH+QRN8t6dLQ iQIcBBABCAAGBQJTx4GFAAoJENqfSjoH9uwMBrYP/1Xy0rMk/az9txAPTnWNRIog JNM0Pz+VCdIbaEr3t3qhQvQ7zU+q62IrMPNjFYQGpPd9wyMvnVEZeZwcMyK3pV2S bUebdSbP3HjvtbhvG9vzf1+/mxUGFmlJiFCBS7yUr32zKQrgnCcfrqpSwby7bx8/ MRfsjvWQybfwK6Eu5mzVtnocfP9JuVrrI5/5Unq/kEuChOq2s+vkLhpfHUs2LxEO kU3w4HIgP+8GyuhypAYPb8ep3QqOim74BeP3vtnFcKjhgVvqMJa1782HeDcaY06C OZ81tP74q/dvvOm1cdy9OS4iodZ259tsc6giUsKomvILL4w2H5BE/IQpQ0oReYxB QY/cRgR5yy22ejVuFbkDnbWJGheQyCYmqH7LVLHqNKpATCL9n7Pc6JDZOkaIc4Oy taj9WNuLC5OZvjwTghPafjJ9OjieWQ9qMjTbl4CpIE1RHuoaP5GXqyOBZ+lNdI1N mW6zY5z5mTOCnfe7LSDimvhBucr4+7V2bTEhjbd1MxVgcpHWADlJilnCtbqKcgnw c9zAkKlLi3aeJMGnFEcmfN4fXKFU6OHqjENK/sEmP+OPuiclTvVLrbdhedNJBXVA nefQoKxLnx6XvFl6SqkZkGPBZhkPQIA0RgHf8Dfd/nptv2fIwO+CSmC9i5spuYiW qCLb6HZ4bWi9P72uM1/AiQEcBBABAgAGBQJUqn2PAAoJEBbqRqHogcqp3f4IAMDu 7DbToHQvtdmDpt8UnaiHf57JEUMinsMUADSuoc6XtzcYXHujdEkXqwEy/3zOciJq 41ESk3mjZH/uQhoJ7gdJIb3qQHmZZEXvdwj5TR/u4kdh3CcXPbsDDb84njZU4UA5 /wQlRoBzKkPPFBAqZuxdqblgkNQIG+yWpFcNKp7XXPXrA4PMFH74EuAoFZGgwgK6 egCPTOSStcDFfZS8wBPMuCl+dSD+nTrukwyyvZdKfO3QtsEQasm7D+uHCR2q+CFg ecCiVpERfuFQRA5nF3WOnhzZksyLVeA95par/BivYAFlQFEF9Kyop+qt6s9nlI/C vfuYawtbUEufr2rBTCWJAhwEEAEIAAYFAlTKEKEACgkQq9c4M6WG0OaexA//clx7 uW4EW8MHjSfIMN064aJeSFSbNg6g+HGGk9xtnxufuTkQzTtpO/qm1YSYyVTKtr0h cqFXA8f+umUm51HnpyDvmEnAaagoHgc4v7as6vMR83bXVN81o4FEP/DIyEBKlexZ a4z4RddPt4WpsXyzSFKjHQDgVuI12A17QVFfRSbz3bzJffu8zVFPn/7szlq97M09 OXuf8AgHhkWjWGrqPMFywGReT5pVqkbuQ/PSQKlGCLeUN/lwBcQZQ8UjyOeNMUq0 n2BA2qCuqAffbJrHE+RkvM4eKv1sB12SPHgzwWj5tT9TsKz4T7zvMu7RYW06mg2k SD0Yu5Hh0VPO7nnlDMcm33MLbFLF+sOGfGEDwPM5YbnHFgc6QBIZtBZSpgt7c1Cj IMHEAcsVNLH01z5tJK2Z6eg8tOaDMXWTVGTAO2IIrOmzIMBUSMzUtOINeiwVW8Hh qOBS+O4pUe0WL7dJ4GiJcugXWIToJBOIuYNkRr4kewetcHKDP8ym8e8DIj7Kx4ud 5VAtYFWkth0WlB3hcrh9M8Dkci3ruJQScwb5w0jPM/S6FwC7HMRB203m0B+eNsVW AnOZVgP/TpDnLjivdcAD6/vrF4P/UyV2vRuk2uw/eyzeqm6+ILXHSKRjjO7qZOiY ktEMjgFqlQjzqFujm8ZBB010HKAGGD/xfZQIch6JAhwEEAEIAAYFAlVPORkACgkQ JxvgDae9vcK9fxAAwa1pwEs8cPpo5MO5yi0gHCpRKJ4fNWQEYgSyxW78yhf2E544 d00E0xDcQI16y0CfvS/yO/71IKQVgdypYLUNaaIFrIgM9ZMrwWV5GJ55+5ffWB3g gSaWM+Ge8WcSsxIHLoTtsPSNo8JHjhlR65Hnpp/riXfl+FQnujz77QZ3/tGeuWtn g4QQjI0+xEYTBy5brRcbTScgw0jmfZfLrxGAiGV1oxydYhN9QYx0CLQU5NfXOFqA WjcfnB9ydMIgVTIF0AL1UDHik/wZBo3KKPJdDHzB+lpW7+bHxNd9wxYoMGzrxjI7 RdNRGkZGDsF27V4lv5d+duc7Drt9RIZjD2Q7LU/01aHIJ5ZktAAzTFkU++kc9BOa GBvE+Kbg4oCigD6ek5FT1Fc8UjuKkP74fIbBnm5Y2UT03rSa/Tj+lp0z6LfAhclE W0vz0p3ucD4NIVDsys9fpxmRRJROot8nn8cnD3lCAafHzqkCkIZ49G7RM7YVq64w HujaP+twBAGCwmlFv+z7z/Gg4xA20BuGk3PkASw1LRjxm9Y6qkp2HBoQORq5Os6D M9G11vcFd28VE6dupkp+SMCKwzMlSsnc7fFW/Im3wfTPJzbUAnAdxYADr0DGPplp m493mRi/rdJJ02CT9NBvHS7P0+kTmBX3IC3uBnPZKnhqHireBGQZvrySglqJAZwE EAEKAAYFAldKCa0ACgkQEIERPFzvsNBvBgv+I3C4rh32FEUvTBQIlLePIO0Z2dr1 ODO7hUf/HJzBbsZCVeRhq3x5nFH7F4301Sgn5NhkRYcjjKzTChqmzw7oX7i/kUpT kufH3SMHvS927Nep5dPB5a/RM6fO0mNmuV/uGzIIa/FcOv4x7gaH5iW5sqY7TBQA f33u1HQiRC0IRPCFOk1S9XV4bI8uApSQ1I5orAG/HKhxNVtCNPBOjGWva856Q8UM K0RMIqo5kzUAriQJRF7ktpJH26OUPAt8TbNo1AzEEMYCX3J6Ic6o1KRQTz2ejLCV HfTXXZF5Cc7wdDRfcP/T79uwAhhGsd001ejICmWkdLyEOpsGFMXYHJexTyvXuOjo psNHy4Bthq5Q2g1Iyi/mKGSlRaJW2KjOVhDcY9tdvyFtxsL5q7k/Fq0myItr6Kom i4O/xZr0vkEzxxvgr2zktPGwtdEgsGK07c7bAGDlXUJEEFq+8ikJdOwO+HDCMXFg /msY/1f12wv69oxlE2uS0pGQoPK+4ZD7K3GYiQIcBBABCgAGBQJWcwGtAAoJEAQ2 PoNkKGsHmcMP/2KkBlV+yzCs0lmkGfFS4v7p4UUa3mXyJ0NTge3m1A20NCE5XJF8 NsHQkJ84bhT7LZYS+GKj7uok9AwzdOU4TtTtF4PuLoc08A7ZPM6r6Z9Jw2ZsHFZ/ nLyXK1R9GaFWHE0SAB4JUqL6jqH1A+UCqtSQp0SHTkSp8+EyGrugphKN0EfoCUET RKX2S7f5gjccYPC7x0dAt4r8Ejk0t+IKOLhFGQC6NiGnxZKDC6wOsM2350de9zmg D7UEQt0Eam6JV7ntCRHWOtlK4yQiNsE++DHKEO0qSKzXF8+shMcBLWHtsRV/bgw6 PZmkg2dhTa0imSynkZIcJWQ62ZuFkoOC4vjelRQTgaFKgYi9rc4OyQV+UCTZ4HPH FCOcUtjv1KzcYWCPUI3eKOQSt7gKRWy8zLbQKw/6st/xBFAK8D3jWVcnLAqXkv32 8sSPAKN7ucW5SpOBmegNSo/Os8g6eQLLECz9Qt/Z03zcdg3J6jlk4qGSdU57pgHP Li0ZMQVcIhlIl+i3G3QT/V5W1nrOm4tzLFn55hjvWVlVxIpvCucfykp6XunZ3nq9 5aoa/9L0qUMd4v2J8mYCxYiG6Ce6brtIHBcOB0Uff0kjeIr4FjvpGG1d1PwggX6k IzWXu8m6dqKHN9lU9z4TVz0PsYP5/jOfZlLezP3CHAI1a1gKqCn095N2iQIcBBAB CgAGBQJWtHkgAAoJEHtW9SVs1DX9bTkP/iPbNKCIrx4veg57YSoHlSjMjRRNHbwL wSv5ag7Qdxq2HYBS0xksB/i0IcgJUipH8EVR272ny0SSKa0iwoO5EklLqqpRZAYU Mmh9vrEewOO6m1eDNSKrID3hdWRioBFhevztml+KF/SuKybDM39H72YdVg4ACbLY UQOy+h2hGAkb4pjn9oh67nCQH0FsA6usE1JI9zAqTJvlVW61CSok8bl9in6gzy2a iXOdmkhQoMYbCCCx9vSQPriVMzdHAkDxlNOqIDmolk8BJpTAwcpL7YeoAKW4Bf+D r35RlQTWQdBj19alofOORhXfw+qpdaynbl5ytFmBntgEU3IE0mBM1Da6RClLiXe6 wxn4khQpEhk5dPuSrcWma7+nkwCbCG+vfLqZ79702KTiZAPTZYArT7IvyfJi3NTL iQNxJ4qTQrucTUS9OCFEyH7P6uXeYvyI0B/7a7j7BKBKNZf5xCteJSESxyiBJRH7 eei/ytuHp+cZWzsZfWxSujeXgxyOF98tQ85UnTkVPcP8VqMKRxqIpg6WBFUSgQC6 gj7FIyoi0suuuDFXMSecHSpGjHNDv/720BEeMhCm9uwKhFo1Ak6FRuEjwVYP36ZZ slnhacMvYdS6M793kgzdicWWMhB1FXbAYTAkAPysn8Hao5FesOO6XrwoBym7Ohb/ ApWB5OraQfqriQIcBBABCgAGBQJW+oANAAoJEF0nuel13sQTyTEP/A+kQ6mswLIF 3xGSaNH3pX+S2kDbSHMf8J8lbvX73yRHGZYZlpm88A9kF86fMfqPy8tyBnfpYDt0 ShkZbLoaMUOAQvge7cMBdC4UKLmkHggt2MnR0kYd+JJHD18N8YTet3VVaKOVId2s hhlpGFFVBN/EyItfkM81R7O4cuxLIRuBuT0mhi/tdrZguWNhEZ/n4ETUmGiwd4+X yBOuZHouLZsTob74Igp/symrVY2CLCwc540VbSyEWxVQrRxA6VgUyicyPNaQMwI1 OftaVOzr74VxHlgtMrj4HSjQnZNrR7eVRhQmIvIVKWnPoxWQgf/MFitsd1avsfsR 6cwueTp5OFzXXKhjKXOZ0e+ZFGJIH+oVBGDk2I6tFGDGtTnrcccG+ed359bHBETX tkeDJ/3gz4m5uRdIUNZXkd6I2lgFr5ZGXPDBlsJuqWRKzdtkycHPM2M+0xuBUTKR XGSyL2FDwbMNwisUZZ7LzHG8iy0VOxcmbwRyTPDKRHVQ2lf3xWQX9hiM+lsQLhVi /eZNupnPx9Drant0+xMzS1ZqsgkmW117eMQ2Lm+/A8F4T0SO85/hRRmXOVIbxNgF 4U5jh0AtVyJ1AAyoHIen7n2wRR9NVVz3Ob+Fb/jSe52KbJmaxV5HhadQ3KfdtEhL RvRGxMUbYuMyE/Z9Ap2ggIhZeSiDQfJkiQIcBBABCgAGBQJXf9K5AAoJEELZgcCG uDsgpDgQALsXQ7X1mpMrOb+2xy84jyp32s387g2OinkzZuuniuuhZjKsA5LWwzJH li/h1Gm+OPBbS6v6pcmJnAniusLDI//DJ/wX9SWNJ9CCCwsnjaWQyj1xXFDdzuWh 9z5socPWgWDkcubX45oNfCf0mdZS/+UsSXh8rdB6CghXvvsSwqDtjhj6caKTwa62 4RDb+IoExazUj1iUkAf+Nea6YlsqO56KDBrsH8/FICT8XSoPwHTxWQ2RN9840nAQ J3FV2Xr7EN1bwMOQzf3Nr3pbKXnCekTS4dgQTFPM9cFYxb3QuuzDHkzafmqfCaK3 IgoQshjh7XYSp1joBLzu6YDNyBQgHImhoKcdq0LK8ichorq9tXhBBTw62eCfWVRo 4M66W7s7jFUc4TvxV9MGq3SWeMy3mrrdb12UO7jJGXgLlTW8I+O+AyKCcNPbdVcB cbBThUToGLdO8vH8nR7wG6+sQPl6eLDHh5w0uvelfg5vww0f1P0S1fvrWfzn+1cH oSGwZSrc736aFDjpusO9Bf7fTs7CyOmwYAVTs9kUQ9BCTP6+JpnR9oPgO/gm+Pp8 UkwZ2KfkxqvxRsxEDRPj8CSn3xogITBrri3g7YQ6t4cDfDEyAlBB/UalD+ljgxNp 5RB36tV59jKCTe0aohRgKMGAxKaublm+Zq+uJ7VLzDObV0waaKVUiQEcBBABCgAG BQJYe8KZAAoJEJAzkqtkuEQDA7EH/ittNLlu5s1+v4sjtDZvCHAseI5lrKEl1VHD Ba+geRyCXLAnJEAeaX1RxbIisM3omqLaQVkeJlQMDY9K/prGdgrkn4g6E4cX1qhC HIub/+xJtn5woYOBNAB4AQ21SkzUrW9ZEnujKvFaGclY7UoKKTQ1naDKFUsHvlzO fYWhi1dZOFS0mVsCVCo2+2qg6H+xfa5bmZqtkCNZbt0sOLWeBE8uLR24Ph9CLVt0 dL8rGb7fPECcWprlmf5GMLY3ok2zn5yjizyywrRMEDQQIb7ptLVtMkt38NJvYB7J 0pUS0SgH+MtWjWL238vwIzkbv+KIU3T9KMn4U/gfv9GRK/o8AW+JARwEEAEKAAYF AlifPWMACgkQHnSXejBY2HDczgf+N60hU21BgAj51/vS7NbN1eOpP7RS42bPSvxw EEgsy7IjEs7iICHJluWw7HM23U/jS4mlLV7qMqtCQDud5/3Jdz65d0QQxHRFmn3P BEu5w7QuZNEdGuu1EiGd8ROFi9IUOaJZlofrJASM9ywuxXzrB2hbmvt6RgjL4QC/ MqnvOFNBfCnw4mGhHn/B0MzIuNfyAD9SdnrrVWG06AE2DLKUkbTPkgwKmfPyTmdr kvDArz5CuWcOP5mc/kAM0BkakVW3Or67NIHzY1FqrCe5ZkDxcH7LqL7FfJyIBacL fASSpat954dGPWaY2YT+/Lp5JWVvg05AiQqnSOuO/V44Uig7QYkBHAQQAQoABgUC WKBTEwAKCRAiHht3HJDjc4V9CACcFsJE8LYXPRO5pg8YYpU7B8mUBYzRBlanEMgx eVdrT7QKB0FHZ2z9symplIITWPqaPnvnpy5U6KCnyiBcY0wXIZxwpOv1dU2zA0/i TqgUeSeZjRXeprcq7GKB0sRpOsoXT7WHbuaw8IOnQhXzZFAY6ivlZOk11wOE52Em xaQu9CD7KXYA8dAdIaZhZHvB1bSBS4yCCmZWs0qJJeMIQtaSmnszDjh/EWcK/81u HWHLhtYLBFM3Dh7jQ9KYCSdrG/M0p0cjmf6u5I0T0ErEH0ZJ0Uu7JXsNCMcdLM0O f3ghRveNEbqYprhDgdO3KuoLtC9RfZIWL8O5Po7qwUryq8N7iQEcBBABCgAGBQJY o0I8AAoJEAxiweouthhKMTQIANLPwq/565sklgMdeyuxWxk2XdHwjRuG14JRxowQ 1KYlwLAn/vKOi3o47w3njs/gxYLHFTfDc0LbKlIjt7nMhUBE6GL/sU5lZml8LXzz 8T5rEUWCysijXs2j8DITqhKVtYxW5Kayiuihcx991Idy2f5pBlUB/2V52/+aKB0M 04hOw7oBP9Z9MIDCYkMtru1Qk5I76SebtUbZFg5GyTj5Jc9U/l3h50JoYwm6r7t3 OceJVseDrptRARddxBF1l4adbRTuy4sx2UyRLtb9GN75Zz14bWBXXGxEi4NUBgix lqE69Q8ZjM6cnGqP+MJJDxEZZ6LUbYLZrNCT8Wwu8fz/r96JAhwEEAEKAAYFAlit m0gACgkQs7BCH0A9GPTNkRAAqiYKOMA6ZPks+h/SObsUg+MVlNB83zD8lRZ5sGK4 Bg9MLmp3FSewzVhcRRcQN2cxJ8REuDjxMg7Qv/6YuTTkWnvXdE+Y3dZxvtLyLyNv gpPIWJJRPTm0Q36NEy8g925oY/pmY5eIWkPQPda3S3E7pL/ULnc4i/VmdRHGna45 t6x4a6mU3n1Zu/i/eNrkbu5unXMdOXcgmvHgSUfcp0qCsuvdenCn9AHPJVUymPJT algyIRaFiQH/U8uiR3FIPqLGzU1RzgFIjSqEB9d8yknK8udzZW4azC2HSdWJWBTd r6yLsw6xAWR1gk90TBYic8v/loig9w9+rI/eQc63yQPLMoYdDqO0Tbm3uirURI/5 CnAZ0+thh1PNhfu5Xi5ZTmQJOXI0DTThoq9SfMzGvz97MpDpd9bSfq9QDx3o33KR qFSWL2jt9eqSxNIM41Y71VbMP5UxjV0J1+9uXrW2n8Q/VmRfTf/j8/oVQGG3n6A4 VJREq547bCbA9dSUS/xtwQjUoys2vxsgOkyNQNGi3LwERRnvNBGg3e2zyqMegqmI BQdc+ylR2IU/Ve2RMyI9CY0TD+haMRiOurrzGWWyXJxMw0tU4/NWtTGsxaAH0ML8 lRlqIa7oGITlJn2GngTWSZkr2axZbdu2V29Rkjde9vsUyIzPCDeZU22mI6/GCqie gu+JAhwEEAEKAAYFAlitplsACgkQZ3hMjjSDhOEn1RAAkaXYRQOIlC0X3CJ6ByJq 19KiypSZzl9bC56iXIpKx4fD+btXtu7/9pd0b/dSn16fkzNXf+kY50eHwkSGMmCl EQ5GGVDtNSdw6dE9uPbuTgBJWiPLyCfinsZQ9AFTpOcaKy8q4Clj7B8tpW77jDzj ojww7Bbqk9Fs4acSgdIm77jBkWiWbpXBO2kX8UL27uHCCwmzgHjXzsIVR4BBCbc0 SQ9Ty5ukcJQCchfjvtyRmSl5MOPFgtfFd+0uIxmFzfv1Z9vkO+MRRBm/CZ0YVPXt DZcFNB7JVcL8WQ8HyLlq/5gfrkmN8RzSEvGplQ4Q2AvXB4CyDvr1quTzzxX3uTao N6xWvQlSDpIOPkh5+MpWmnyY76FzuRiI34DL8z8hNZ6JypG4ls1YUJdWtq5B2Ws7 hazUt2YvHlQIf6HWMx/MEGco2MCfHlyr8sQHmyDlPBKHk2o1u3PJzHWH6SUy9nbk tZ3GSGGhfMcAi6U5MUtqKIW0/W6GutgbpAXKgrEN+PTIC+WhZcZoCW1Bd6ieoj6F M+fy+vqAd8CaIqKrhYbj6GiU62L4N0xmKMLAZYIYrUAC/EsRncJwBy3W+clw2w4N noUj0qblCGTcTeLBLACGIN1ZqRdpyaohotiJl3eRbh2k/kgPdnfDz6/OSdcNiXzR OG1a0KuHNQqKL82QhErMKVWJAhwEEAEKAAYFAljKce4ACgkQBPXYN3EqM85QLRAA vt0+OImADndNXZwps+j3xLa/yE4fTo2LiVXW7viW8gLeqO8UwUEwmELVnqGmseQn bvRU0/YzYRrxXceUvK1iQP/cFsdi7041Z58qMabboJV/1CqrsbBssQnLCwBF9gGD IYAkVJS/zQH0vqGF/EJAsKJ0nFpT4N6AxxuMYWShHMgQP2z4ooMGU4krTtNpp6Tz 8B5Y8l0a61SeoN60KfPrKXwRybCHepPW6nYfl00CSzu39jzz9DzKV52DKDjET8oo 4rxpcvsALRxAEAGaJUFxDcFx5DJv5+nJ7SIm986FM9hW39ik1PzMzzyvedF3+ZSQ l+ptcJN/1uac7r3sHNsm0VvMoo94gKMuIKN7eoM6QZGkTgsXy4Uqk6w5GTG7gGn9 UoQU5PLqIuTnqCYh+WyYI9HxhhyeSjJZLoonYqf/6WHo4lhWW6nlHeyj4dXT/2Vt KJxdSVWRlPrDnDaV9ZIqQ+5uOYXVQB+3ozPg4lVkeBbnjGlCjzb4qLSrzBduv7QO wTUe0jWoktH0xhkuUegvD8KU1NyKNnpMGN2aFYPQ2Ysqwb5ZgrJ+/ixvOw1/m+nF DT1nmJ+G2x6MNVk4aqsAoiDaz05Dr/FgXZhGfaeThDaR9L8ZN/LslMYne7gf9DgJ i4NMNoo2QkVX4ebqX5QAEwUaDCeXG5sewbRguie2/FOJAhwEEAEKAAYFAljfFskA CgkQPKgmyw9M8oikEg//edhVp4Okh0oolhkfoFXS4QvMT9OoYy9q/7V552qOhQOg Q8Rhe7S/+VKSAr3Flju2xjlmDV6YFWn9+Kv18LzpAIo5jcp7QEPmD5qGHxLYd98r h1d7o8sVMe6Wm1tClYqvEfaHZSJTRgTW9XZDfAWQkSNLanxbh9vsArP1bJYqp+m9 XBkHuewCwwMyU3ziqG4wBntBCOeyh/iODWHMKsIxjW5RXAklGTvZI1KyIYwHDkaw Ivm5RoN9aZ2WENGndc3eOdpyK/oaevsSzgzwtZqFsQjtq4mB1TFe66Vj3CsIe34r f09zkNBQiwZezPqm80OaohkF9t2YXo6N7fQV4ssSzFzLWsZp6N3iNASp4/DF74DT 9tLPh4IxcB74oeAqMlybr+8LpIRh/Nt+z7GKNbofnm0SVJXDEzAAdUnXlvlky1Ri 4xNr3MtTSKAOkdS0iIBPlmNipNstVBrFWSh848/i09cuXdm4/UqDEMFpUsH9atkt DGJEwus28keTB2swbY1c5GDNlwmlEJeSk4oKJHLuY6yyESj0i7v8M66AW0lpx4ff lyFDrR9d70IDwMUuKARd7RSlGpoe21SI8ET5/bIEvRag+NWQGFyrA4Fi1A/HvFa9 N9ozD4ceVV0XdmBZqf72Ma4DpPw2rS+kJY/yoRbYwo22Jv+4osfyBTG0gMkAu5mJ AZwEEAEKAAYFAlmHsA4ACgkQZ3uh8LVwoUY+OAv+MO/VcUq0xLtO5qefJ7w5dpWl AF7PNjsiQVJK2ACV60mhrF7UcY8OnvNGspET80Cl4wWyXybpTrvG29sPY2DFtr6j 5uZH7a+ElEtq1L5SYMBpzTo1CmNFT4BFKS1BHBQCmxKz8cX3KNp2gjSTlH9zz6Sj x1o2hlQkgSMX9UmfCx3Bcjat4kpxZiF89obHYNg80VN6zvUTzUwZCzSOU1vBJz2o 0ZHjclfQPr0+OUVrdNqqZ7xAMMdDz3Yyf+7uPR7njLMxtCNkvggPNGkBAmiA1jrv y+WnSR/COV6OY93N9gVECXaq7ZaPDqSCnOPbQ0+UIyi7zUvCQjhM3lEB0xUjFWM1 xz2BEl+SURs/0H+lf0gOID6RiSsvRhBRkfrL9D8dAKSgQ+jFDktyjrbFC6NupCC2 5J4PpZx0LmbbQuD1EDBl/eEQFtLBbot+7YS4+/xIO1inKfxxKjU9ln2IF7aYgukw 7y3DtA5i0Fc6OY4Fp4jZ3QTqFsIsZMeg/La/urDWiQIcBBABCgAGBQJZtcGfAAoJ EGKrbC2pNmtMrvoP/jr9mDhMBzXE9/JPuAM2BFFS/XgUdHmu7jaJPsWyuAgzkkjD hydC7FSKlxWOrrWt8z6IeKoWnhCxoDThi45LgMwBnEnJc7je3PpXCkoGtw5/rkvL ApCDHDELYsTvyZotv/t+iTWzbuweEZrQpWI9nKC7u9UNd4NdBEXQPPhiS9DnyYAR b9K0TKpTC1HPT2hQt4AmpRkB3QaXYvi0FT4Q5ZliWIs7MZe5+l7SQ9FZo1TjXQZi z0BmWt4zsHPbiHsk0p1O+P+4UrN3dco5vRR6mvhsjrC1T+K1UsP3Hf2pKLFMyftc PKPy6NgBUicbUNQa/LKb5E3GsPRunDkpi0/YOzs5I6eolSZWNclTRwezboTfW2FD jHZmTSyQH/RIccyyDRUwbEQJLVfBQLGmdWJOM8qVgzuZI8FqkJh73tUrZch1eGrR 1svoBIoiIc9ZpcqcwmLR8OsXgS585eUoSK/Z8/Z6KN2xkVOVAUbWZeyslk9gd6nj nInGAywwtdeZbiIwqsNKTokA7qQnxmtuPCB4mdusHmucZdAF49+oDpo3FiAeA7FU YLC/SOl4+Vdv6I76ov4Yica1YubhA75fWyAH/R5ut5olKoA7yG8MxIjyotU/Lc65 IHAkOKzxVI4BvTZGq49kO5VJZWfHHe2DW5oSGQwhyJAQvGHUH8DsGmq9VwGmuQGN BFNaZOIBDACgUf89FucUHUG7+L/YgLAIcYveoLia34qYPWcUzPMEH/bItXjLKmb/ f+m6+Ddv9NGl3N68IWFil6YohcyWwuo41XBEAxBn2U8Pe1Q+IVrj9e0dG8n0gWGk VO+xVRsVjSUm7NW7ruIC1kap93KAg19ctoDW/vTuso71IjWERzoUXpf6+Yrlicit LofFNTOACl8DARnEjxfyxve+YkFrGhKTWlyLHG/j0I69hgvdjqUIWMfZhItJz1/0 Ci+04rFujx6s5N6txliEiy31EpVJVkCF5lv6hJOrRQReXyesZOiCvKsXJTo8inU6 2zn5CnYL2ocqTDBOoY7rR9zkJ70OUBgLI+1zfbpAqm5m9uXJUEg8KRd2UlSJ7xFL 3Gouidf6QsUDmj4JPuC8ZhTzve+hGX7n68Kn2k13PHH/SJqC/IyfRSLgg4o273Ho Rlo3YyW8Z4emmXxmS11r3VALshcOMzdXK08y2GxEPivDK9x1MJlcxe858xGQDp1u P/oTS1muPWsAEQEAAYkDxAQYAQIADwUCU1pk4gIbAgUJCWYBgAGpCRBB5wROHbou icDdIAQZAQIABgUCU1pk4gAKCRB6Ap5U3V3OemEVC/9Br6DDPHc51pG3XzugBHOO w4UmZGQsiRnjc/F1pmXuijMiC26LUsv0+b63GH7FaKeiWKwGqzU4w1qcbj2BR86h w+JZM0nmH5lAoMMZ6Gp0twWPKELpVo6jSvtvpCAZZukTL2sYmUbEXFgo5XYu/slI KHGYfRSznXd+/pevUQAkU/ptqu2fJ2piME5gK9anD6a208WazwtZgzRd+89EroTX q+/lwSLmUpVJlGaca0kGEKqCSfHuUvtrmLjsWvpc1k+WspIRyJd8mh+bz4jV0cJI rxhPPTKSM7FaZcM3Z5bfGfkFBnfcGH+l8Br5wsU/eOP4l7RPodNbUWm+A+1l9kyS U8yTkN21WEp/u1FO+4BW7KhVKtYylSR8OsIsHQBTYr0JRFe+iQ6CcYAyLex4/AMA i9wF1Kf0Wb0huyEefogykxfZ8tyFxNrx5rN71OZHmNAbb1QBDUOCXmy+exPTZkUu 8ea5BMx9fv69wy7SSmdvPad15QW8fQJB4KknaCLnF54nSRAAwxf/3qRGPh3O0aW2 OYOmLv5g7eFIT2oZ1Hvcq3/5vCLKBCRkFghx2Bak4NUi91xFMkUDOTkdoYzp77pF q6CEzI43EiVQwtTaDbPZj43jx7U2/NMW3DBY1ciNvjPWItkCbqj8Kv4/zQQlbA73 QmnhHk/i3VNzY8Kx07Vv+8tYjw1lt9g7vkn+roH6kPgF6KxrmhYtk7FJ9ndXpumm nq3vK6m0iWGvnP0SNAXYw0o6scE1g2Sa7eqOU23T4DX2CiX3QZ2dG+tVRG1jtn0C 60BcfqXwSzmtpeu+thUjxNvPrnQYcSk5xRX6xbNNREuBHeQvYK6Mc6ybD7Lxdnrg iFZ5EoRQSmfbld6h9HVbHh5q8BKbifa7TeAA+R1z5dmuGIsPUzEPqrNavgiHPWOL XvdSyoBRj9f32oY60zqBEjvFbauvIFer3AIsIMTY2DWO0L0aq6Vb4KZMDERrkphT nWDUluvavGIsct8jVUsVnZmBVCm4WM3OnxbJZnxkU+FmOoQNzfamSEX/0cp32o4l Z4oi31R3uv/ZmkKS+T/v4gnGJdwklgLMMoMUFYUMbGP677P5jw5dUT2x5J7JT4Lb ea4V2MH3zNDt68YecYp3JXNapmQtw++5ax/yM6qNNDo9udM+UEOXn1Qg+AaDEUTX PYPIpki7GlneBtU5NYsYb2Muo6+5AY0EU1plMQEMALyM42uovSAmEiKnc+tuC8wi wBw9wCvGUCTGvrk+YVlA3YkfcJGUxSP7DkIgufScdw6e3NizhLiQpygM54VVmBK0 XmUmVvXc5OJOwFXHTHt5pX6HdL52fZ1AkGu5BJZdMzPq9zJruNszYTAkTk5fsU0a LHnYQnSwn5nIbOWhvFjYng8cYaQdAbGRE1SdOEBBoRhgaoqA+axpZO51og9le2wb Ij4y+ZbC3o80mX4UezYTu4d6jspzHhjuBPthdEhqQRxSy0VPEjOGIoMVbrIs5RKp hNFinLtKNb2ZJyjm1fViNi1+9lgrHOt5aQgAXiWlpsdijxsxiX4p7V3KHZu4vz1P AAl3Q1OJkvF6InNX8NPxf4hjMkA7gbacCJrtGkkVF5JlxK2eLA/QDlI9L7W0Q4G8 p6yrZ47+6CyKLwinB84kUDRBkL4Zt5gPf0rcPhfZ6IWsOkikFNGJejxvqO6aYC8J K5DVGdmZFwkycT96qnaEe6IoD5Dj/gJj5ZN/N+DbUQARAQABiQIlBBgBAgAPBQJT WmUxAhsMBQkJZgGAAAoJEEHnBE4dui6Js9AP/At2ag6h8PFPM33n1NN4eVMuP+Zh 8EknXzSdtSBwtdjaod1wkgo/D/uN6S5EBC2CZlg7bTxClZatKCY3lkn/osjf/yui rjWlAPZqw4PRVS0/nrkrkZkWL3IvXuW+rhpqP9Ktt+sYjm+eiIXuF0geN34p8SW0 g5+mVxE3Fje8HTtTsWbJpd0oTK4JI6qYmsER+ansZIknW9QhEyvAUGTWpks+Z2D6 XoV6JqEsvAs8M3PaA/e/+22iM0OIa4z+OeV1SYM9vyhCZCNNtBO/d1vsFi9Ig1d4 aAK+5Lc+9XjxzCaw7DJUyfZFYc/hJHpMMW0cfOjgfUdEqoXp5YuLUeZT5laDx38H eNUgVQfa6UJPCWgG5uNNxvdmHw49OYdfVf/GPqBv/wZKke1FRrBD82kfDRvmmGNH +w6vxaGxv/LEK/h7KUKN5adFGTH1qli7bophgwjmDYhDBwQQ3NckYXQIwKIcSPvo Kn1OkQT5DwROLk8r7RPwNxf4b1/rJ/1XAfLk/fLpiN0CraiY2Jq4f033z+9CfPO0 mYjk7nL5JYVkfXjThCF9f52gRVS6kktN67IGaayi8pgKgj4f/K4U3p0uAUgKNj4l +TdCymiiEvhqE6EHxGfmJaUh9IofIaqiURzZGxQ8FN1BuIvJtU4SbEyTGXaB5Ys9 893KN8JX2ozmsF4k =w75J -----END PGP PUBLIC KEY BLOCK----- EOF ! $gpg --list-keys | grep pub $gpg --import $key $gpg --list-key --fingerprint | tr -d '[:space:]' | grep $fingerprint > /dev/null echo ${fingerprint}:6: | $gpg --import-ownertrust > /dev/null 2>&1 sha256=`sha256sum $apk` echo $sha256 >> $log touch ${log}.${sha256} if $gpg --batch --trust-model always --verify $asc $apk >> $log 2>&1; then rm -rf $dldir else echo Failed to verify $apk touch ${log}.failed fi fdroidserver-1.0.9/tests/index.TestCase0000775000175000017500000002474413303240575020053 0ustar hanshans00000000000000#!/usr/bin/env python3 import inspect import logging import optparse import os import sys import unittest import zipfile from unittest.mock import patch import requests import tempfile import json import shutil localmodule = os.path.realpath( os.path.join(os.path.dirname(inspect.getfile(inspect.currentframe())), '..')) print('localmodule: ' + localmodule) if localmodule not in sys.path: sys.path.insert(0, localmodule) import fdroidserver.common import fdroidserver.index import fdroidserver.signindex import fdroidserver.publish from testcommon import TmpCwd GP_FINGERPRINT = 'B7C2EEFD8DAC7806AF67DFCD92EB18126BC08312A7F2D6F3862E46013C7A6135' class IndexTest(unittest.TestCase): def setUp(self): logging.basicConfig(level=logging.DEBUG) self.basedir = os.path.join(localmodule, 'tests') self.tmpdir = os.path.abspath(os.path.join(self.basedir, '..', '.testfiles')) if not os.path.exists(self.tmpdir): os.makedirs(self.tmpdir) os.chdir(self.basedir) fdroidserver.common.config = None config = fdroidserver.common.read_config(fdroidserver.common.options) config['jarsigner'] = fdroidserver.common.find_sdk_tools_cmd('jarsigner') fdroidserver.common.config = config fdroidserver.signindex.config = config def test_get_public_key_from_jar_succeeds(self): source_dir = os.path.join(self.basedir, 'signindex') for f in ('testy.jar', 'guardianproject.jar'): testfile = os.path.join(source_dir, f) jar = zipfile.ZipFile(testfile) _, fingerprint = fdroidserver.index.get_public_key_from_jar(jar) # comparing fingerprints should be sufficient if f == 'testy.jar': self.assertEqual(fingerprint, '818E469465F96B704E27BE2FEE4C63AB' + '9F83DDF30E7A34C7371A4728D83B0BC1') if f == 'guardianproject.jar': self.assertTrue(fingerprint == GP_FINGERPRINT) def test_get_public_key_from_jar_fails(self): source_dir = os.path.join(self.basedir, 'signindex') testfile = os.path.join(source_dir, 'unsigned.jar') jar = zipfile.ZipFile(testfile) with self.assertRaises(fdroidserver.index.VerificationException): fdroidserver.index.get_public_key_from_jar(jar) def test_download_repo_index_no_fingerprint(self): with self.assertRaises(fdroidserver.index.VerificationException): fdroidserver.index.download_repo_index("http://example.org") def test_download_repo_index_no_jar(self): with self.assertRaises(requests.exceptions.HTTPError): fdroidserver.index.download_repo_index("http://example.org?fingerprint=nope") @patch('requests.head') def test_download_repo_index_same_etag(self, head): url = 'http://example.org?fingerprint=test' etag = '"4de5-54d840ce95cb9"' head.return_value.headers = {'ETag': etag} index, new_etag = fdroidserver.index.download_repo_index(url, etag=etag) self.assertIsNone(index) self.assertEqual(etag, new_etag) @patch('requests.get') @patch('requests.head') def test_download_repo_index_new_etag(self, head, get): url = 'http://example.org?fingerprint=' + GP_FINGERPRINT etag = '"4de5-54d840ce95cb9"' # fake HTTP answers head.return_value.headers = {'ETag': 'new_etag'} get.return_value.headers = {'ETag': 'new_etag'} get.return_value.status_code = 200 testfile = os.path.join(os.path.dirname(__file__), 'signindex', 'guardianproject-v1.jar') with open(testfile, 'rb') as file: get.return_value.content = file.read() index, new_etag = fdroidserver.index.download_repo_index(url, etag=etag) # assert that the index was retrieved properly self.assertEqual('Guardian Project Official Releases', index['repo']['name']) self.assertEqual(GP_FINGERPRINT, index['repo']['fingerprint']) self.assertTrue(len(index['repo']['pubkey']) > 500) self.assertEqual(10, len(index['apps'])) self.assertEqual(10, len(index['packages'])) self.assertEqual('new_etag', new_etag) def test_v1_sort_packages(self): i = [{'packageName': 'org.smssecure.smssecure', 'apkName': 'org.smssecure.smssecure_134.apk', 'signer': 'b33a601a9da97c82e6eb121eb6b90adab561f396602ec4dc8b0019fb587e2af6', 'versionCode': 134}, {'packageName': 'org.smssecure.smssecure', 'apkName': 'org.smssecure.smssecure_134_b30bb97.apk', 'signer': 'b30bb971af0d134866e158ec748fcd553df97c150f58b0a963190bbafbeb0868', 'versionCode': 134}, {'packageName': 'b075b32b4ef1e8a869e00edb136bd48e34a0382b85ced8628f164d1199584e4e'}, {'packageName': '43af70d1aca437c2f9974c4634cc5abe45bdc4d5d71529ac4e553488d3bb3ff6'}, {'packageName': 'org.smssecure.smssecure', 'apkName': 'org.smssecure.smssecure_135_b30bb97.apk', 'signer': 'b30bb971af0d134866e158ec748fcd553df97c150f58b0a963190bbafbeb0868', 'versionCode': 135}, {'packageName': 'org.smssecure.smssecure', 'apkName': 'org.smssecure.smssecure_135.apk', 'signer': 'b33a601a9da97c82e6eb121eb6b90adab561f396602ec4dc8b0019fb587e2af6', 'versionCode': 135}, {'packageName': 'org.smssecure.smssecure', 'apkName': 'org.smssecure.smssecure_133.apk', 'signer': 'b33a601a9da97c82e6eb121eb6b90adab561f396602ec4dc8b0019fb587e2af6', 'versionCode': 133}, {'packageName': 'org.smssecure.smssecure', 'apkName': 'smssecure-weird-version.apk', 'signer': '99ff99ff99ff99ff99ff99ff99ff99ff99ff99ff99ff99ff99ff99ff99ff99ff', 'versionCode': 133}, {'packageName': 'org.smssecure.smssecure', 'apkName': 'smssecure-custom.apk', 'signer': '1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef', 'versionCode': 133}, {'packageName': 'org.smssecure.smssecure', 'apkName': 'smssecure-new-custom.apk', 'signer': '1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef', 'versionCode': 135}] o = [{'packageName': '43af70d1aca437c2f9974c4634cc5abe45bdc4d5d71529ac4e553488d3bb3ff6'}, {'packageName': 'b075b32b4ef1e8a869e00edb136bd48e34a0382b85ced8628f164d1199584e4e'}, # app test data # # packages with reproducible developer signature {'packageName': 'org.smssecure.smssecure', 'apkName': 'org.smssecure.smssecure_135_b30bb97.apk', 'signer': 'b30bb971af0d134866e158ec748fcd553df97c150f58b0a963190bbafbeb0868', 'versionCode': 135}, {'packageName': 'org.smssecure.smssecure', 'apkName': 'org.smssecure.smssecure_134_b30bb97.apk', 'signer': 'b30bb971af0d134866e158ec748fcd553df97c150f58b0a963190bbafbeb0868', 'versionCode': 134}, # # packages build and signed by fdroid {'packageName': 'org.smssecure.smssecure', 'apkName': 'org.smssecure.smssecure_135.apk', 'signer': 'b33a601a9da97c82e6eb121eb6b90adab561f396602ec4dc8b0019fb587e2af6', 'versionCode': 135}, {'packageName': 'org.smssecure.smssecure', 'apkName': 'org.smssecure.smssecure_134.apk', 'signer': 'b33a601a9da97c82e6eb121eb6b90adab561f396602ec4dc8b0019fb587e2af6', 'versionCode': 134}, {'packageName': 'org.smssecure.smssecure', 'apkName': 'org.smssecure.smssecure_133.apk', 'signer': 'b33a601a9da97c82e6eb121eb6b90adab561f396602ec4dc8b0019fb587e2af6', 'versionCode': 133}, # # packages signed with unkown keys {'packageName': 'org.smssecure.smssecure', 'apkName': 'smssecure-new-custom.apk', 'signer': '1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef', 'versionCode': 135}, {'packageName': 'org.smssecure.smssecure', 'apkName': 'smssecure-custom.apk', 'signer': '1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef', 'versionCode': 133}, {'packageName': 'org.smssecure.smssecure', 'apkName': 'smssecure-weird-version.apk', 'signer': '99ff99ff99ff99ff99ff99ff99ff99ff99ff99ff99ff99ff99ff99ff99ff99ff', 'versionCode': 133}] fdroidserver.common.config = {} fdroidserver.common.fill_config_defaults(fdroidserver.common.config) fdroidserver.publish.config = fdroidserver.common.config fdroidserver.publish.config['keystorepass'] = '123456' fdroidserver.publish.config['keypass'] = '123456' fdroidserver.publish.config['keystore'] = os.path.join(os.getcwd(), 'dummy-keystore.jks') fdroidserver.publish.config['repo_keyalias'] = 'repokey' testsmetadir = os.path.join(os.getcwd(), 'metadata') with tempfile.TemporaryDirectory() as tmpdir, TmpCwd(tmpdir): shutil.copytree(testsmetadir, 'metadata') sigkeyfps = { "org.smssecure.smssecure": { "signer": "b33a601a9da97c82e6eb121eb6b90adab561f396602ec4dc8b0019fb587e2af6" } } os.makedirs('stats') jarfile = 'stats/publishsigkeys.jar' with zipfile.ZipFile(jarfile, 'w', zipfile.ZIP_DEFLATED) as jar: jar.writestr('publishsigkeys.json', json.dumps(sigkeyfps)) fdroidserver.publish.sign_sig_key_fingerprint_list(jarfile) with open('config.py', 'w'): pass fdroidserver.index.v1_sort_packages( i, fdroidserver.common.load_stats_fdroid_signing_key_fingerprints()) self.maxDiff = None self.assertEqual(json.dumps(i, indent=2), json.dumps(o, indent=2)) if __name__ == "__main__": parser = optparse.OptionParser() parser.add_option("-v", "--verbose", action="store_true", default=False, help="Spew out even more information than normal") (fdroidserver.common.options, args) = parser.parse_args(['--verbose']) newSuite = unittest.TestSuite() newSuite.addTest(unittest.makeSuite(IndexTest)) unittest.main(failfast=False) fdroidserver-1.0.9/tests/IsMD5Disabled.java0000664000175000017500000000135613272566407020464 0ustar hanshans00000000000000 import java.security.Security; import java.util.Locale; public class IsMD5Disabled { public static void main(String[] args) throws Exception { String daString = Security.getProperty("jdk.jar.disabledAlgorithms"); String[] algorithms = daString.trim().split(","); boolean isMD5Disabled = true; for (String alg : algorithms) { if (alg.trim().toLowerCase(Locale.US).startsWith("md5")) { isMD5Disabled = false; } } if (isMD5Disabled) { System.out.println("MD5 in jdk.jar.disabledAlgorithms: " + daString); } else { System.out.println("MD5 allowed for JAR signatures: " + daString); System.exit(1); } } } fdroidserver-1.0.9/tests/install.TestCase0000775000175000017500000000300513302025443020367 0ustar hanshans00000000000000#!/usr/bin/env python3 # http://www.drdobbs.com/testing/unit-testing-with-python/240165163 import inspect import optparse import os import sys import unittest localmodule = os.path.realpath( os.path.join(os.path.dirname(inspect.getfile(inspect.currentframe())), '..')) print('localmodule: ' + localmodule) if localmodule not in sys.path: sys.path.insert(0, localmodule) import fdroidserver.common import fdroidserver.install class InstallTest(unittest.TestCase): '''fdroidserver/install.py''' def test_devices(self): config = dict() fdroidserver.common.fill_config_defaults(config) fdroidserver.common.config = config config['adb'] = fdroidserver.common.find_sdk_tools_cmd('adb') self.assertTrue(os.path.exists(config['adb'])) self.assertTrue(os.path.isfile(config['adb'])) devices = fdroidserver.install.devices() self.assertIsInstance(devices, list, 'install.devices() did not return a list!') for device in devices: self.assertIsInstance(device, str) if __name__ == "__main__": parser = optparse.OptionParser() parser.add_option("-v", "--verbose", action="store_true", default=False, help="Spew out even more information than normal") (fdroidserver.install.options, args) = parser.parse_args(['--verbose']) fdroidserver.common.options = fdroidserver.install.options newSuite = unittest.TestSuite() newSuite.addTest(unittest.makeSuite(InstallTest)) unittest.main(failfast=False) fdroidserver-1.0.9/tests/org.dyndns.fules.ck_20.apk0000664000175000017500000040254513323343071022074 0ustar hanshans00000000000000PKZuI@ META-INF/MANIFEST.MFW˒HWDC-g°x HG|  &CǮE-=#{Ϲ2.a}}^/OS IBR{9<}y2AI'D jTہv.RC 7vi&SGm's.~b a͈A"XV^PF9 ~)dOf8VÜ2UK?>HY | $q-sq]f뾔oۛ;'ݣtѶ'y=wy+7 0h_2_sH_Aa q=al41Xh4uY@ ~ QX ûPZ@ż ³]||p܇H[{HLx.ވToGJF^M;!k'Aϝ0Kgkhbƿ u$l*K0bg^LJ}9k5. D\ٳphNmטw5A x>$newB0K_.Z]N1Ggպ5J{s>}ZMɵ%%Ӎ}p:t1-{+m/#Ș G6F{FW 76?e2v&\,8N{-l#mQfRKnbO!d|w }-AuIU׵;q9'v3^XJ M%bWJaPK@ PKZuI[Xu5META-INF/AD1279E6.SFWێX}gb,@y䢀xx*_?Vw&Ş7B{h0epqz%~QrP:#*aB#(tO65hH3>~0%tJS򗁁!yAyzo/PZĞMk| $e $Âha|oOo/uջp*/uU/mCt|ޡ4hX3=FE=b< Y0FɮAWcgTxr!<м]*[:`(FP "Upi^&$kŷ*(jX9Yp3jMw 05A\E0}P vExP%Q@ǹ闃Sϫ"Y=X\xw~zgjt`F.nb%nbwP4OkX+KXJ1fUI|P#/&;q*ؖ^TR0?q38x]Bqz4_󀢄y{8#RZ*1qRyN*;;=["8 goAvN˩EK@"\\kݡљ1>Kh'ґF'ڙB#kEGyo{w냢ARi!",/v;W>l~ ʞ؃jc;ǥ#P|^7r> n|CqD"${wg{ow:Ҳʊ4#] WWb{cK1И5<Zkoi 2s`gn5Zْ3ųR`Xp ,xvG/uz:"c&%~[iGP2>L/CmQtKݍAǠ:fqwGs2ҙ~͵e~轀@X<0љ$YHT¬;_hVN?аwY61!Ukm';i?kuVSKlEE:|,$LW8JV,fG PK[Xu5PKZuI-U#  META-INF/AD1279E6.RSA3hbegjhδA&FFCnN6Vm>f&)Vn"MM6ML* X/0adjI&mcp3x %̕R_n4(- 0 y , M,L,yM \:Q ی M @q.&FF>^h'vO/ ^:ghū'T0&^-><_^M ޜOV=}:x-=i17t˦^ ׹[ҫkUi?OQX~[i0/Q!L)-T\׉{EzみJ3d}++oݶBIC-FH}sC+f&6yDg\rz%[$ dgL孹?>//X[Pv-a0&ܳW-wjVR7e7}^K_`P6k{v;Z;]ˮl_+\\e \Vp CƼ+ U-nY;1 n6m+|~u>ߢ]7q<]Ϫ8q-Kuw)܃}DĿI0dq! 7͕mO'ξ-tS59Qk}+{DK7yql ݭOInO]&~`*f4 'ThEШAU7҉z; {kp݃0K׵Yn_졲VNjLFoN~P>`n}M͟g::q,<{wOܬjWd5p.`Q9yC˼GX]~f}xd((rv3n,)nDBBZǬ*g^^_Mc9&g/tcaw]҄wzE5mئh->GHIlsSW=PK-U#  PKfAtIqa()META-INF/buildserveridI0 &"x0]u֦ARPKqa()PKfAtIqa()META-INF/fdroidserveridI0 &"x0]u֦ARPKqa()PKeAtI$ AndroidManifest.xmlo[Eq7M$4&iEĭ-J[5iC%0X+ym N{F=r8rCgǻz>G߷;ٗR=-IE*"KÛ/#/c ^\N$CW{ k`삟o` JdԒC9Ⱦل_# 8cf'HY,e>b3өdt-[jLgy1\ylKUba0ogvV첚`\];XI-i&xu'dWRg\bU6x]W<¿s6wy.;M!yPM+i/32}jv\Ԋrkڶ''\;FKtޏ$sLs1'ȨSa/g%ϙb˩$ܻ](v"BթVk#Y0TJžEfR hv;ۿhm^U.e욭f{T&٘lh[z*N<(rq>EptA^(90 VAY UރiǛ_4*Ѭ|-\tA f>wFw-3vW.ZnB%=)m4iG#Q\bnZ&)ƈی9 zVo ^)_~ \M=5-xq;;vZeO-ۼmrŠFjiUZLz6 ł^j9 zVo ?ǟR%gr_MGd? /!6|VݩnҌ.n%w]7mƨz}g8U(szKaEw +AM_woZ?PK$ PK !rsff&res/drawable-hdpi-v4/icon_launcher.pngPNG  IHDRHHUG-IDATx[KU΍|Vʅ[ݖc$F<-+V=l?,,FBhv$K4-X0 c3)pU>ƣvZꞩ+]Yqww=q<8>|wiooo͛bfuΝ۟NW@y⋃_~(~G>8_xʲ 7mӇ jv&B`:=~4M,] zoS"Li:ǃ H;>twh!H߃ 1VVV@Df?[=Qs}p$I)0*8EĎ, ,~ʙ':p먚 RsF{$>M @$H4?!"tg9ZWVn8>GeȲ eQ.<J)$I2([YY_3"2bs!kώg@4{tcc㗃qc<K41ϑ)4E MfYb{?ĉ )R G k=.Z(3/27Q--;PJMEshμeqԼ]DHkMEQˢ\)*ዙ+[4ݻƥK:(TŰyyhanR~Y- nP8Oԏ@ي4MEPA`*$k)RX]]E"e,OܡPmHWXUHêē򁉩ـ 2ښb0 Mv~%[p`fE* H-bj(&Jy4EC pQEQXVCbOکG|Kyy4Ͷ)$ѸXp p8l6_>h9I{祺ECCj $"͂(0]#,!4UҜ*I}8Zڮ[ׯ_.Y%kceY9woH'U z-apࠦu 5q/^ĝ۷O?g#8@V_iuL&|+$\ϩ=wFX[.&'{`Oc{{~-"4k C/omCQ8y&!YIhb4բ$#iF;Z (>%e?/ "((dyҭ[pܹs Tmzؾwϊ^g)uvRMW/R({{ "lmmassW\im\8O Ȯy>@⃀qwa^:ޢ(#sܼy6"fpC:Fwu7S /5ʝi.@)>Lpgp5Ϙf|2CtP=79~q%UهnG JDȲ `flmm( lo#/ aeYboo[KUܵ,ëwyIWk,̘iIj><Ύ-q;hpr"LD9!(™3g1VVWE!>(`0H+(pUozD Qceel+c CF#L@VcN&9d3PF#BDHR߯2}"([#s$I0 p}lnn?g}5wFH"_TsDX#=2o钼ZJYB|h"("΋<ǍO?.\̌sagg/^~'760ŪFwrJSp5 [s;T$7hR0;2Ÿ'~Ϟ=t/?pb2ଏ;{AjJ/rE9XxCףȂm\v :޹$I>#s={+++/w(j n9,GukFpl ?}ŽAD| ֌sb}}_}$H,HHV|2sep{2zn$E| ^yڲ[/$3gpy|׈:[R`-tQE.jő'Bu ΂B^z ,Ա]Z<g/ƍu NUjtK*5N@O\MZ)@kqrj-PdnYL&Ȳ(ڞ#̙3H25eջ=Bч |G*K[md\C DQ-ɨ01[<']=NR;P㥤`qL"XzHsIX O}K(TJ D$b"TaԽ}[7Nu Tӕ&{BGq`4MoiJ$- nɃ0bZGϔeكy+`{m}TM-LfREEͼAW#2?=B3x INiq,EQmy.  8&^ l>x$HTBߌՄyI40:e38I01ŷ qJ6R X*9MR{l@$IИgsT<uD$ & zUUKp7XO?@W^}a:b4}C6,z4GHEIPDRrABT0_zb\neY~y{;4ëBtrA0!GU\kҘ @Z%%;uND~ۏ>{aZ_szk_/pxq<: ,IENDB`PK !By y 0res/drawable-hdpi-v4/icon_list_active_broken.pngPNG  IHDR00W @IDATh޽ku米HK Ⱡ,J%d C@#@ĊRvUb$Y*ʖcDʑ2,cE0`@@]˾wzޛ=Ybrnu힙y9Gpl ;7>-ʬ܇@MhC< zÆ W\Rj:ZyOq3Zk,_~hii&s p oԮ]OR3RZNgRWiD"o?VJ灎EtEX|ym3f)ץ@z.qnH$2+3RU` 5===u] ?S,D!b B(RJeV⺅h̡4_m?]tw3~8f53~n{mM,o;^y~ ,v?|K?*NB :ib*L6S b @q~a`vR!3nzIvȤIxMMix2 _J<ėWJHu6mwiumpsdOqg g?X4y5FwSNVss`ʕd$!$R!hs-$kd}MzUZ^02)Q+WL&yt^9efؑ%<4x .[W{1~jRkT5RB۸5c׮_]kx; ſqc}zf~-ڛoٳs\NH$Zr*Bkeܸu60vz>u?E?ٵ϶lomňЦF2hF+Y gg֖~z˦=rkduᰭ4o3T{éS>oq% 0p,ف? P*t!9ОbK1s6&Ν˥֞o=8xkTɃa\nIe_߅߾LwKfN~R'%1 7Cc#?̴sYM}ֳ|?Np71gy.VYn/J㶗\L$jk;$Ҝ|{j'UUCGհ5ιql0-snoP?D!nKN8sw(QU>zBU_9m^5UV$RXV0R8ݞv !јD(*  xY1IENDB`PK !< .res/drawable-hdpi-v4/icon_list_active_file.pngPNG  IHDR00 1 wIDATXWKkQ$iR fT* *"]ܸsaqc.U\\+_RѮPAI)Ң1Mfru1{#3.'$̤;s_?⬸7뮀'~^~9o?r nH][3[N<C wRrN 6n?{'|SAsʵ*"fJ (T䯂Ğև{t<GtPAZ91oy5҅,e 0nS@? 5(*vb(0R>:{#onY0jُo8, BD;é#(fE`0p04.1h`5~ ,{*ʲJ\"su2yޜ4{bha_BixճN)*}>KT #-p!$/1sʈ*7鐜w?)KFU3ީp}(|GLġl7aQ)}Â5KRTԵ9Gq|Yo $s<]B!5~ݬ/^1v@d `,MB%s; Pʰ"ICe|IT9 \Aۦ0@h^$9d%9} NsFXG6!6T"t"Q>fE5tæI FfXYz/.aPb{ ZYzE|{5H0=xE-}x Û 'o{Yan*Ӑ;ۍGS>IENDB`PK !p*0res/drawable-hdpi-v4/icon_list_active_folder.pngPNG  IHDR00WIDAThY=\W];󰟜8 APH)Q AR"eH!$TR8RD Z')0m(ι9ͿD%Bܛ8?׾;f3_4lf/n^/B/tw.}?|t|'w.-0,<%'a9ןo~D0 $D 3@p2cG__}7-ɰS9_2 @"Ϟp_ߟ @0 }Eo8hr~gAsCrX$ y1sԕ?/$_8w(7Z^R`@ٞ@h>X`y|mratlzW|=vx>i`# `.j44Ħr3?+N̗{~]~4l6KpDO ڲTnX1?}enZC8a! ?>i B$܀HAEaxeM:¸J5 e&c>6YX $3v)IENDB`PK !@*QQ1res/drawable-hdpi-v4/icon_list_passive_broken.pngPNG  IHDR00 1 IDATXÝKl{gHeF%ǒHD-M70ڤAȪiM^uUE6  Ѭ} d}n(#5Տزșt!9/P/%,"Grhv|<<< v#H".j-٠MM <#p%;Ý7p.# ,!Pɣ}/\/hDgf#%MNY/7%eK`.NڼREm.]= \ RJ]}{'E:RRE[8EaU_~rؑp(qKMvhPA;.1xYFv}Fqh&'u\\vۘݳp)%h|zԶp$DL&MkiFC5el_m,O%n ;1H±=$ @?Wv;$6&X_T5ċHfSm*x:/>ҧ"iI :Z7?q#eǾ`ggid8sz딹&-ja`\_[Y|sq|,YWMR i|p2p4iSd8~˭K%i prp 4_ b } ?ِB'{6߆(s. r88h\,rʏ_y * RDK|lqXe_8atWeevY(uVQL2,p=NtѢ'``<,1*=Me|&D676a;|XEq$d= n1\:ݠ *(.a 2$ul1JxrR [ϭ%GjI.52G`0>ﲈKƧ>o;g4%sj6"i| 6i qmɊfF'.y1CNkҚWO:8&50 .Lr jG˲Ky?'s` SQ)Ff=jͪssy: C0|2ۋ%v*SO{rȡ!TZ|eyw6?l~i[rwm]l-p`oIKIENDB`PK ! oLL/res/drawable-hdpi-v4/icon_list_passive_file.pngPNG  IHDR00` PLTEIII CCC%%%$$$######"""$$$CCCmmmEEEVVV"""yyy555```333BBB222 @@@aaa111000111***vvvpppaaa aaa999BBBJJJPPPOOOUUU"""'''666bbblllggggggfffeeedddcccdddaaa111 999LLLFFFFFF@@@yyyqqq}}}wwwvvv|||uuutttsss{{{zzzpppoooxxxnnnmmmlllkkkjjjiiitRNS"'((# 8PUVVVJ&  9 Rv zr8h t ,ІX&Z`)[=`baV$IDATH͕SUƋZ**LEEFe*Aق2DāP 5M&IsIB%@gq "9y~dd@P!Ƒ?0L2ק8o8vDx<bղaK@0S9<H"LX߮of4oc<<;̚ JAhy>apfa<ƃ8#Ȝt8O؍j'67`QюX,Z7PjOOSKn#^ްjr >˼ ֘tĴ~ikl ~BWbXW\NuZr@oL3l릋ڔy1(4wp>/ޠ/ Q>ǣByD6oٺm{QjQX#\t ^ ܵ=ē+' (}@XzR/~iI},apR3~x xJ"G(#~9t$֯~SEGgΞ{ΞpOWKfIENDB`PK !s1res/drawable-hdpi-v4/icon_list_passive_folder.pngPNG  IHDR00` ^PLTEpppnnnooonnnsssmmmzzz|||jjjjjjyyy|||jjjiii|||{{{||||||}}}~~~kkkkkkmmmnnnooommmpppiiimmmppp~~~}}}}}}|||{{{zzzzzzyyywwwwwwxxxsssssswwwuuupppppprrrmmmmmmnnnmmmjjjjjjiiijjjggggggggggggfffdddfffdddcccfffdddaaa```eeebbb___]]]dddaaa\\\ZZZccc___[[[XXXaaa]]]ZZZVVVXXXTTT___[[[WWWRRR^^^XXXUUUPPP[[[WWWUUUNNNLLLMMMPPPFFFJJJLLLRRRSSSTTTUUUWWWXXXYYY[[[\\\^^^___aaabbbccc```ZZZXXXZZZPPPFFF^^^___```ZZZ]]][[[\\\aaaXXXYYYbbbccc~~~}}}|||zzzvvvwwwssstttpppqqqmmmnnnjjjkkklllhhhgggiiifffeeedddWWWUUUTTTRRRSSS!PtRNSo_(M J04-p 2a_E"zQ+G#Q5uy3f, #-'0qۨ-0u;{?2k (IĊΝ/Pp,В(,[cqN_HݱplJVN$e@F֬EaTy*$~7lMpڀ)tp*g#uIf(EMvZ6ٽ  Mib#cY@!m4?kkh$0CpX&"#W'D! xs5YÇP8}"aAv.= ٌQ UgK(\faͯ0T#Wp S0'*ܸ­w޻#.xǀyRv>{e͟?OrGcLIENDB`PK !4˖&res/drawable-ldpi-v4/icon_launcher.pngPNG  IHDR$$]IDATXXnG{wvfwˏ15ȁ+xHH+5rDBnUUUuǷ>={f=~ѣ֖uv/^ϓj^kDmbܠiARKKkkk<}4 ~{4ϲx<!PKzs2eQJnmm-jsVIGc;亮DaHeY)(:^@ ̓Y%Zkʲm ـ@ >+|!peC."ZѡRj$IY`؜H! <OeAD)4 ͺh`! Ã^12 3D($IJi"s0sG#Α 3Xj@J)i"y> eY5K@2j PJ!2c& E]) RtXW*-$:DDEAD80sM@& cxAKEDTraR ~RWRJՀU]Haai+7!t]Tۛ!cLMO0C?bwwyE00nygfnܸʰVR4|un#"I(y 3CkR|b1 *t+0\EFuu&"hB\dUMV"Ğ+w8[@)ut:R\XzȄe$"Rׯ#|ֺSy}ج@Ƿ,mnJ#[0׽ks#ABjhZxhCb xA_Q@^QHj`1-h+3e;L2;3 e6PǓW|x2~RJ)vuu}<44tdp &sFp5#@J)(0 nYٹnhhG"^122|ccca,MMMxC*߿dP@J(<|H&\ (@WT{8̋Yd KWMۍW]꙳Tu[7o=L&m)e/w;Ve&BWLвqfm[x'm݉SOe^d*/oAD"z E 聖sٞOƶ֕ܺ5ztT_ݷOH^׿߽3kGO*ַ~ݮO>~WGZN0IENDB`PK !UVV.res/drawable-ldpi-v4/icon_list_active_file.pngPNG  IHDRשPLTE FFFeeedddcccbbbaaa```___VVVΕЙƳٲֱݯЭתɨǧĤž6tRNS$(((((((("b򆤦R =WԎFIDAT(ϝVPE{])4"((6Dr ǽ:3k5LMm9u M-mo?ba.ϬNs%#IG3,1@#18fA AVt)N*r%Hߍ: ඨӱ۸.F`ŨbIf(caKXbX^8ZG1\Z<>MBq{^cٴ >N"1cgQVֹy܇!f$p>ç^87Yו5Ք4Y͐4ʌ3W‰43×U3{2”U{4t3~Gn2s3v4y4{5~7ɀ7΂7Ђ8Ѓ8ʀ8~6|5y5v3p6ՙ4՚4Ύ*΍)Ў+Ϗ+ώ(ȅ(ʇ,ʈ,Ȇ+gfjjiigjgSTFHH?>>???@7788889988ٕ5֔5ו5ؗ6٘6ڙ7ڛ7ۛ7ۜ7ښ7̍3ʎ3͐4Α4Д5Җ5Ә6Ә7Ԙ7ӗ6ӗ5ѕ5Г6ϒ434É4ƌ5Ȏ5ʐ5̒6͓7Δ7ϔ7̑6ˑ5Ɏ6ƌ4~2344‡5Ɖ6ȋ6ˌ6̍7ˌ7Ɍ6Ɗ6Ç55u2x3{4~66Ń7ȅ7̆7·9Έ8͇9̇7Ʌ8ƃ676a9AtRNSrtttttty)...---+** IDAT(c``ȄE͝&^ -  H1qDxDD$D!)OH%&%g@zzfDB1;'7/JJ!*eUU5u Mj ֶή޾  &O:m3gΚ=gDaCEUIENDB`PK !eB$kk1res/drawable-ldpi-v4/icon_list_passive_broken.pngPNG  IHDRJ~s2IDAT8uMHTQә/ #(҈i6-Mƍj}HEPT&* 2ٗ3h>5=w޽9m#&A.[»sI4[L 689\2tN c~fЂslP C,$$3(7dZ\t9LX,4s$3db 9U%{bKIY_'8 U{b mS[O>@mXNg57o >czh>Vo+~ Xoxm*6X_A益4p_ߌVwlh:N=I&s0gPy VʨIIENDB`PK !nZ/TT1res/drawable-ldpi-v4/icon_list_passive_folder.pngPNG  IHDRשPLTEqqqjjjmmmjjjxxxyyyzzz{{{jjjZZZooo}}}}}}}}}vvvvvv{{{ppppppmmmjjjiiigggddddddhhhaaa___iii\\\ZZZiiiYYYUUUXXXRRRUUUQQQUUUWWWZZZ\\\^^^```bbbcccaaaWWWRRRddd]]]^^^ZZZ\\\[[[|||}}}vvvqqqpppjjjiiieeefffggg```___aaabbbcccWWWXXXSSSUUU8tRNSrtty)...---+*."{IDAT(c``hLX$--,YXـ&e 60`絳wpv@ގ"!(!"h@T "! $$!Rnn(@Z"!aar o__?7-| ʶV>@I*DB- $ VP@/_++[M-@G+7XaIENDB`PK !HH&res/drawable-mdpi-v4/icon_launcher.pngPNG  IHDR00WIDAThYKoιU]eLH&L6H2#VdaDe*#!$@2z{NvٸDJ$_vu{ \rw+o>g{9aMTU0U] OAh?<~ϟ5oqZ{ƦT<BB\<(I{l|>crA-C.i귢610 i6Yj/F?8i<#IUU 穈PepꢟQg :F**TEv2X:`Xιh$HU-KD^Q9JNC *@Dt:0L|b7 "ΡtuEmc]pa\7u"uZEP8H6v1W$ir.چiUy9Fw>)?+[mdbѐAh[i-Bq~AHBA]wH  ÒEPUνZdY(:jCAHD6D0 UEX.o,YWTڰ rY]̌ eYݒ۷Q:|-ʁ6sPS)ku[59>~0 Zk-@I3a O<a# CF#q(paMA0 M&ATD@JaAPf9`"x4M1S<{ {{{P6DsMcXW& `)'-4F[GBH/_͛71 "N"JF#TCX\7qK!IK[g^zo~MS SFDԼ[uNw+aufQRb[0!1,޽N}iŸ Z.V3Ȳ>a:"IN N!Vgur녪<(OG)>uİla@ *jNNB&̀ c*° $@lnn"9I~Sh5Z/u%u !.ֻ֘yud,Sd6_u`*ODMrS՗FSsJYc@ctĐi&m[[[HӴQ`Lisْy/= c 1YC{U_TỺ>r6ǯmȘ efh%Axyu*cbS+ ,:UQPUbfQE=$MHD f> Ra37!5kRTWBE\EdCU2êrS\.,Rf= .T<2y/Jb6FEijXk?弇:yEA_BR3$# pu zu h6Z 9c0tbf\zU WsjdR:-1cӧOӅ ww1F1 }_XE4}Ź_~0ƨ*RRfRQ̩5uO^ UIDd9z!r]ջ K" 5 IENDB`PK !0res/drawable-mdpi-v4/icon_list_active_broken.pngPNG  IHDR szzIDATXí]lw>k;j(qd;T qDJ&UDSniR!UTRѨ"PC)JR!h@j }0Uq vNڻ3;;ֲ+r{gvΙ{Gqy@m7IGyT*-3ƤDD͵P7{{{hgmbbOMMME$Z "Xkg+jrrev&i&pa.+ V{5`Rl6Kkk@'(>C`˖-u RXkZZ%Zkiii#Imێ[kWcdI% jRccc={q(j*uږRMﻩTJR)}|<L]k#ĽP,bE`5ًck6=ggHjޮNEEd7{=<סW0׮Gq&.b4ǘ8Fet.GQ 荗ߩQ֎?|9ѥKxhkQAddٻ6$1261:FUVsҶvm9}^8.SsKcXϐ(_zxx#ގmaXke흋^|!\;4eQ(QP۾} }ccg`3THXF !iNIcG%dRT `,V,b,V]]'d}il2t):(û iq1A)D蘒ք:$&|d~Dy"A_O1ۙӟ:IO:\TseҝruPҚ@kff,$]]\)lLF~?sW0!i9yA:%29ȱ/BjOj~iFN >3u2lIDAT8˽_QBU,llFf!` hb\Ҩ?Ƚ_ysoKSk@lop]G7l܄ٵymw5{G@nwGO8x( 3,IAӻl>rTQ_A"|BxT1p,EQ)xv )4*@J8B Rd5H;~% RϿ@#>GO tӍ6t02E"d!aS%S}>G{,Δ.Rm4'zEs<}Ӵb׃/ھ-T`za1n+ Z5%?UM&3$pN su\$pF|,ؼQHy˙+WZŸ9W?q&pYOCFfXC;}G eᇏFF?yll칭/_xX=?{;}IENDB`PK !e hBB0res/drawable-mdpi-v4/icon_list_active_folder.pngPNG  IHDR szz IDATXVg}ov!; $(R$RT4TQ4(( :$:)(S"A(P%.po^Y߮}ֳ͛7-ߍ t7ʕc-.ŭm&rr!m=6<,g^vߝ8{{UZ d!@4"ۿr #o(QdCi –,7>y6L79(J3?Λ$[_ڱg1G6vKF;*̣+N0gKxv% Bbb]@Nŗ7>?כVb r}4S>LÁQj>@$>4'=XVk~ͅYS }tnnN ^441?sJ˨ d;`,a|b: 5حZdL*aN>Ӏ%" Ac 0z[ r_%p@} +@ ^ &818>"k3Js1 'A  # ̴"|a Fu;i5L *1J!@ARu4Ro Y{?Us0%a0{` 743^ #˂sp=XHizxlE"z @VZyħkݝ_^+%((@L[ 5*{6z^-ނIqH`4JZIENDB`PK !⑐)1res/drawable-mdpi-v4/icon_list_passive_broken.pngPNG  IHDR DPLTEzzzxxxxxxwwwwwwgggppp"""555FFFppp}}}zzzyyyxxxvvvhhh [[[)))yyy)))ttt!!!EEEJJJBBBYYYyyy (((zzzeeecccaaa```___^^^]]]rrrkkkvvvcccfffrrr555===]]]ffffffaaa|||gggccc{{{aaayyy```vvvuuu___^^^rrrYYYnnn~~~zzzqqqtttwwwxxxsssooopppllljjjmmmfffiiidddbbbZZZ\\\[[[WWW]]]}}}XXXUUUTTTVVVNNNSSSRRRPPPOOOJJJMMMLLLKKKHHHFFFGGGhhhIII===` ttRNSI.F P +Q,+R+a$+I(-$+#5J{t;U#G`cM IDAT8mwXqm{{kvdpJZp$ 0ȴLQi)-m1?:WAZiԸMf[7۴m[- !)P= бA'w܅p`ry<>AkzK  A"DQ?$?` OTa,O%ØA^aP(a `8P0lF&XF#k :=6`U07'K Psuj=نhj#F\- xt4hXm I-ƌ#p0R=?DBdJ-nr0%eR)S ahR-[J$NSEpsP^XT)Q:fϚ 0é`eZZ\<\g|c4S+d(5i΢,Bz`|MHu:52@ju:Ǣ [T6Ciֽ0K-H+(j ^brف9\Ui5깮ՕnEzmeeޛyq5k!:|<%I凫 ƛ J;C!rKb/HPCTTTĢf/vm m٪G 33>PMEIKJK>9eB@;vJܘϥnrvJxnڳw~ :|W ?ǡ;AΩYU+pi5Y;%uk>P ~=_ITV(IENDB`PK !<ُ/res/drawable-mdpi-v4/icon_list_passive_file.pngPNG  IHDR DPLTE%%%$$$%%%&&&'''((()))333777μ666ͻ&&&̬ˬ///Ϯ222ҵ®뫫忿ϻɷȶŴóͱXVtRNS1<;;;;;; >BjOj~iFN >3u2lIDAT8˽_QBU,llFf!` hb\Ҩ?Ƚ_ysoKSk@lop]G7l܄ٵymw5{G@nwGO8x( 3,IAӻl>rTQ_A"|BxT1p,EQ)xv )4*@J8B Rd5H;~% RϿ@#>GO tӍ6t02E"d!aS%S}>G{,Δ.Rm4'zEs<}Ӵb׃/ھ-T`za1n+ Z5%?UM&3$pN su\$pF|,ؼQHy˙+WZŸ9W?q&pYOCFfXC;}G eᇏFF?yll칭/_xX=?{;}IENDB`PK !%OWW1res/drawable-mdpi-v4/icon_list_passive_folder.pngPNG  IHDR DtPLTEjjjhhhkkktttiiiqqq^^^hhhyyyrrr\\\sss|||iii|||}}}}}}yyyyyytttsssyyypppooonnnllljjjggggggfffdddbbbggg___^^^ggg\\\[[[hhhXXXXXXgggVVVVVVdddRRRTTTSSSQQQTTTVVVXXXZZZ\\\^^^___aaabbbcccddd```[[[YYYRRROOORRRTTTVVVXXX[[[\\\^^^```aaa___ZZZUUUaaa```aaa\\\]]]^^^[[[jjjggghhhppp}}}yyytttsssoookkkfffbbbcccdddeee___XXXYYYWWWUUUZZZb/_tRNShf\neYYYY\9%F*FEEEEDCB@??ߨ$-----------/b3IDAT8R@K]{Rv)Qlbyywx xL8s̜A FQq UZ7(d2_PTBE´ h▨C{]bѲ{iݯ9BCw.e ~Kp1':q鯘%4ca|;q5 C Y`i+*2%LV X]K!L” P0ނ`{7(lOtJM.{GǞzF}^}ۻ@0 GC8xz.QIENDB`PKeAtI;&:res/layout/filepicker.xml]N@E&$v"DAA!* D@MҢ@JH""%5EC @3zΎgez,IN{Z:8ɭCt>'*i.qfUKyjU)n9n9j$VLyC}fwj@%ЁtC_;ZLg_!3QTȏpgx-\cbLn׵[̗#S_&~>1>ハ>|j1D~9=.8ǵ VQji!$-}ZK@ t=p x d`~T2ʀp < |g#kp:E`"bw@fh \nlZ0p^nuaW/?8 dQFqDqAuw4C4>֑Bڧ1b1ӈM3x\b<Ѻ<݇LșhәE4.ZB׺0ZekhqC%}`W#탺~=WIp+壸*7GbAQ`Nh?VUsf+UQtE^Қt}4">zĤĤF1CzJ9V܆Qm>ƫ}zjǎzKxo9Ý?lhձnӱBիRlTGHnw|rRQگ5Ok.߅;{y~IO5\ncU%5jhM }|juD=jrk|`Jb:ϭ{gMg@h*[~o{my<v_&c|P~*<Ϛ{9,|uի0ro_u볇·rJkV2'`TVz~f>W%IT&y5z\|YgF62Z,pZyrC&@S q؅(QH╒'O+^{ZmM\}:܎WBd]Qv%+"WG \_KylXŹm9C3sg芭#STΜ,ZY˴yK-mFs5 \М~^=4׬QsXhd͕9>=479ӡ9WhbUԜ%4oܴFyBzּޡ9?IoHQKxeO QK5RQᐵD-0V-JsPh }5ơW*a'&_~cV~ۙoȼ ΄;E|τzXmXzpδnVi@#k:pluȵՑ+q,[̑pN5 f5 ;' oɱe8$EZ>3;ZE/ʱni߅4e8L\bg2{8GpعLK*c{8㿡4o8s4e8F?;ḼJs]pعL|L|Bͻj>cW"~Qq߇XKZt Z*CCKCKi{x[;X>}i=»/{ѵUzk9 Uz(k9=cCw"w&wߥ佻ǻӡQx}bmauSǙs{h0-M>ZN-B'Ze.в]h4,_V<`sPK@ PKeAtIb ''res/xml/default_cyrillic.xmlŝU. ,EX`&H/KHi"* BkԨ1vbC7%cb"1D C,sΛas߻|9Ξw3}\Pk~EA5/YU:  l9`W(VWv}V 5X`6 lBV v>Zأ`ς6v׍)r VXC:6l$8`ǂ[l؅`[v+]`{i> W`߀_. 5+6 l4x)`Vv`W] v`wm 8س`/ػ`} `߁ Vk]X#`m:u6lX)`-[v*Y`] l`wm$`VX `= 6l* ցm{-wv}^V&X#`z6 lK ,`om l/XP`u+6 l4x)`3恝l5`]v)U`׃l`[ k` l7BOb`ZulHq`f;l ؙ`]v7&`> l^X`  v,`] im`_W V XG`#ƂB`^ XPj-X)`v4]CeY )͆}mP҂A`}҂ \9@UЫ0X E\2Ϩ 2 f/D/˂aW 's=q":kk>bGB9R*_>$Q\m;OjtpC}Vw voO=η}m_33v.]W]W~\pX0ַ]|շ=}˷M|[÷5}[Ƿu}[Ϸ}ķM}{ovT6Sz}1/շG(Nmo sپumoo|;ӷ};Ʒ2LYyAu3߷}˷wq߫b[n:C|ݷ=|Ƿ}}Ϸ|;ط)U-oooo'ߖ=·|{omUV}ǷvKVu*w}|u s߽?K{߾n9pTu]ag97L U|C#`;KT7:wY~,}}vv?"< hZv'#tK?Ϛv8FrP8VgHvoG"^hk߶m;/}{o^3w{F>qێ}o7QmWW#`+yH~oGE?Uj<#b.u̶mj:9 ak4u] ϫ74wJW`̻ss?&)S}>8UשH.*>˼`N9;{7w/^{x7<]ּyڗK}\1I;OlaۣSEE$]%gԼ]ykUxWܷubꊨ߾@x.X3找ݑww Gp41WgF=.}<ӕ *2]EW8Zt㕄Nkͥs)4RhEɥWjT9xRGh)Jܗ}Qj<]xظ.y^WyO W'uqxxLG(N-6d}8ؐ_5`yH]^C54jx׈.1xu &kxRyM_7^WY3u-{r81Zb, 1bX#Ő81`6,F[Q!F;ю8c'F{ў1ʧAFߘm*Z9?6 {z2^y vDvGuB^xkauA^Ɠ8x- xRy=D^4<ek <, B]/"4!^o6x}ׇ./&뇼~^[?3 @ހx70 84>>5;+уb>Ժv0  Ɠ8oxxC7^ɹORK^rlEɥ֍a-X3@ވx#p7y#Oh5$=]Z*zeF<Ʀֺؒq4c4c4I]I7yc ^;.oEJBxr-ezkHHcxԍgyHMɱ%ukƓ8țo&x țxRwZ>5> q2АK zLNa<;yG'ě<7W s%P.Vr rL/\?$kwh]bDz\r}rucnXp1MC޴xӑ7=jadE\f`.3"xBvGѵ߇\Fr}rucmX8֙'uƓhZk.0Y\r}r%@#蚜s32ΐK둆:cxRGh<2ske!'WZO'2?oqk:lc>\.o$;yxGx .o%;y'xS [xRyK-E4<yslp`yo8C~'D-C޲xˑf yb<[ V"o7[U'uqx'!滑x: 3DEedԝ::gi*u76'n]ߥ|E"bXsc\hC!"Ř3QɊq q)P0e,ND 71 Ɠ:YɜDޕ,c19_1J#) gwG)iڨ͍j]#~kO[.[bHVc+r}D(ugهӴQǑZ]#@?f. ].2"\iZ9WaX\2-"F]lзŐ81nDލln9P1lѷ>"KreOn\nasp+GK,>fܐCsiﶈw!?혹}Ei1d~֚v,܁; ]iO4mԱ}wF4?>([俊9Zq_Bg\#bkϣU&18wwwa<ۀ ޽Ȼ.o#6l PuJmX~FC~>mB&&~xR0n6Dރ'uqx!4<[z>V%??oFf>Yn'ma1A#1^z}(?M+{syݐ쓍w _b*l~{<8XDl$D_Xcc2| =BF<7=>9D|b QNNŸ9߳TOMb}hWr~{0[Q!u4Os{{ACEHr}% 뫝6s"^dk^bIZ zӺ6g=V%RZJ>Z>bXKuGy}>f>46ɹ|?.O0?)/_<%=Lp=edr8" ^A+޳ޫ{'אױ^Fİx#  ٪ԋdyH]ߑx!;AZ'WZk^sStc}:Ɠc;7 Zه@9؁s#i.3d}2Q3}:Ɠc;mCsi94 .;u`yHMɱiZk.b.ryא+- Y ^9':ƓcӴ\va. |hEɕYߏ +?g>6P/40he\iIZ4l\LZ~XRGcxrlCA+JK5#.}&k9s6A/ u`J]޿x%dR c|bcOE|}Ԑ5yރ=,}c'ú:Zsi]eZWEk+==EݷsO~XnEi1Z~#x֜"o/`?C#OŐ81en?bl /%M R53=(C155p1tlrqs}5$b45?614o^QYo9̯Oh4ɠ}r%!ka-7\,,`k)u46'v0y+-ʮ1?T^5.kR zFJ]%Z#/+4{&J]^UHWy_IũԆP EzɆKj"uqxZdEHHT3ԋ)Ľj&͖֭{$+NȫbTA_bTE^UbQdQ yXbHVE+b1jFB1j"&Q } :]yXI,YqbhuZ}i1(ΰN뢯.!YqbhuZ}i}OE=Ӭ'2'o}Nr,ЃG[dv{kh5[!I]^#UJ#}qWM2\#48B-d< Oԑoȹ_׶ B]/"4!^o6x}e.oV$+#uR/ }`Þ,R:0kpkO('sIRK!k9,lpC.O.n# k݋D('sIRKCra-u$FeF<Ʀֺؒq6Cix%!<96هcB|a͵g:06RGcxrlIk8ơ#CBYC#ڒx@O4<7 : &EǦ-@ނx=6xGxݑם.z$뉼ixs{NJ]vlx='xx7Y o@BGcC 84C~=4GunPl \4%I-g /8,üh3:ƓcKZ108'uƓ$%s8xx.$䝔o5Vz9P/k67uXR7y Aސs2d\ivȚcXst8ꆳ<.oF$;yGܟk{'WZ\{_9,1 "ol}r%BBÚkK^d 8țo&E_l{'WZ_\{M2ÜNAME s/JK+BJÚk)0ǡ8MC޴xӑ7=*>Ғ5_kXs31LdyHMɱiZk.0Y\5"JKBzƹt7t<Ʀ45\C. >ҒF俉k_[yysEzVzh8<{n3@'u76usyxO#bXs c\GC; :ᝆ{J]vOlx[5玫3Ջߵ6"F6-ېCsi3#ViL4?o{ u]FC.OZL#kCA4\Tܫ2\Ѱ?Bv-F^xuWl#_H]^IWyp^%G 5@]5B^xM{k'uqx8!^S5M#c!x n/~°@] 5ד81Zb,{h1Z1F!Ɠm0F-#YqbX scg1,?r}Z9~*PywaNw/3d8n5`{XRy {w/I]FmL#!П3R/)dc}:S'`hwOWZ~fXKwM?7vOoi<9 }r%Cra-!ҰƦ45O1O |eEɕ Y߯  sݿ[hlOMZsم2ǐ+-'֑0?_;ֽs^jW{^A콆,uqx}i xnN~0C 4|nZ:hhDL#!O}C{}gAi͆W㹹0Նʹ6G~VyѵX~~t.O.np1὏}_ k]'V0Th-5\˃h>Ғ0d-+R&lXK힧RGcxrlC[Š}r%Uf?_uָ UvW=]Pbr:hZk.o`.ox5 /%I5<|E5/&k%ņDNmm:!'kHZsysya I˴a!"ݐ˹!oQ-`|XnEi1Z~#x֜"o/`G~b1$+N 9[c ~I Cj&hl؇diex} k(cIŐiZk~Zmc~i#Ӑhf ^osxel!ZYW;0\Zr}r%ː,1Y >jKCr-wb; 6"JK6!υچ<:\!f}CsukoA.O]lxo 2𴿃8 )"*p4$k)aH]V/z ˰^.OlxZHˈ ~za?-Ľ0oΕW%YqbTF^e $*CՐWŨ,dʼnQ"j$&jW+M \sdX+f9KVZF_bhuZ}u 1fXuWŐ81:z >꧉A#B)z.ʵ}m`Na0p7phlR}Eoo'uqxW) C2zH]a3\C?5d=Xlh&l81") } 13h,F `1$+Nkb$M O Ygd׊,Yqbh} 1ffm׆Ő81mibVr8/.WaPKb ''PKeAtIA̾res/xml/default_greek.xmlŝ TEdzi.QTDD>DUShPQPo@DEQTta‹@ufg]םugݙ̊UEW?^fdWMk1uՍSؙ[3dZv5,`V8sQ~XcN V X v` 6 l<4`-l F`[^{ -`;؏`B`u5k X|~`C] 6 l:l`-[l#fm`;^vc//`2Xu`uZ v 4`[`/}=د`5*3X>X?a`#ƂM+ l r5`.`P rk X`cƃM+[ lj`Om l/~`G9X-`  b` -[l;>`V hk lP`= Q+XƜ V)X+``-[lg`G X|U4Sh3Aɜhz4̀?wfkgYّJr*3}9j)vmfAty)W&ۦ;l=SAd+4h_較{~h]6SF{5}u2Z m3]Z ~ZS)tzE&x#52m [: N@x;^#UW|^ n"Z6Y|=kڹgY{{knsj}sw;vTqq;:w|(תn7;%w|_s=W*w\Zw\aw|i:z<rim:gu?A|-rZjc`|[bಾ^9N1j|3HUR-8d{̛G%|!|קñ61٭ q5wl޶cHwa[3=/jEn-IjO7TM*vE#ZwiE:;gWhWx,|<q&ڗgɎX\&zѾC}{ ʔk¬^ÛVj`ewt?|T=7 n/ RckqǔޒF)zbGԜz̵쎏08\&Ÿ>P,X[Wy%m+rc\ Y^Sͼw r"VfJG۫?㘿8ozɬ%o'wB BoMrzQӨ9 : 85*x܆F#Uhh=sPY!MPq.jTJAY/oS̩)3eĮ//C\y\ey ^ x<.y-kV ^kx<.ymkixohJ<42e枡"v˃Dž#}xA;G눼Dž򐗗%^'uR(xy;/K.뒆GsMy@߿4c~iޜ盒kOs#]{Z(έ+zȻ KnT#q!%^OTZ)x^oᑿ)]Ɣ kO[E~b܅^<.,.BE ^;b]x\]%^_U+x"RBx/K럆GFMߟkL=H)NXަc;+byy`] H#yt}2TQwLbwS drq{ o1yCg)49E+ry{9Ü!sVq15zdIJԸӸ 5jeа}C#Pcq9DH/Qs ڜ P ==+;O{ у4y?)6|;}3h$ͯ"?>l~c7 J=Bfа|yO4l~c76Fȟo9sgDob|LVa*oC}^nEkAt6Ysh,%l%Ksd#v"bOYn>Kc\͍X҃ >kȾ˕Dž oMx <' z `-֫6zfЈobM}x)["E߯øu^<.o=gپ_,x6TRlڐ4G%q\ҿܪȅ)X{)eBx1KpcK=ZxNSA ٛ\y\Q=%c{L[mFfh}x|}yy剔F,i<OzOi47l iQ(i{˃DžA3Y=g{c1xq*8+\WL溒ޛާy mAڊ^nE릤Ata.ۼCs { ̞ {!Kw4>BG >48+Dy4b|o|?Cg^n!\z}_x!20Ǒ{=ķ<^R|k~AMyǾm;}E,o46/"֯=e%+L麔=eO})]R~K߇&y+Bx~xIx~xQx\Oړ( OړǑcSH64I?\?\SOڣDž=z=zx?cuA=o_2TG_צdm:,='ŹI_Z^7uSR+y\Oڻ2 OڻǑkVP~a<.,âxGIKF_cΑQSE^)ާA+z)q!DÝ/p;;o)+)˕Dž$zmhb'i͏=#֒^1z+^cDž=E޳x(ڐbֆ7?_Q1U.R۔g=׋uq!G[H$E~ h'~6grD]My5U1n J5-i$oZ̺k(?I'j~4gڈ{fŊ{3i왊{Y3<.Wߔ$<鳦Q<<.'}'}?;bm^͍Y/<.'KT/Qc I' #z!=]O+S^ٜ+;44nThh7!핝DCW6gAD.qes)fJ{esVv$RJ{eGiN9+DCSi$ڽ9" z6[{{eߪMqhljxKXG`SVv]` 5 ;`.^{lX`~09LA`<^% or8%z39X_/)8w悯XlɠxXt`&NTee*ZV‟yx |D CEMظ%6 9GKBr"3lܱ<Ϣ_Tf(jw7~]YzA+]۵eX0g^SAdדz],& _5/=h[ZDK~~jcj__'va]gڵȮ:ϮAukwkk?`.)~:jߴ']7z|ngs;o)}=`u6c{>~ˮֲۭkv훩|sG"Flךv}ծ}2y욲kYֱkm2suw.HeZۮخ1v$s}TPaϬ%Ykyv-gjvFVص]߳vl#ޮZծz|{\ۯ9ha63TˠCf'v}ZU;N"~/skb7"ӹz a[BV}=_9yc9-Q9__D"GY =菫bU*;Ϟ0\`ص.z[Lױ뤀xQ[<_O}NLb9Odvi=(_wzfu]:ٮ3E$N\z]eپ̜guڑ97'u]u]o1w6)v5"a63tZu<ܮ+Ćzg=X9d]Gu N2°Z-eQKYA `|$W):\* n j&a+pW}83Tu8?, TUUP|G8|US૎|>Wj06bpl<*)D\MG᫅||+j#_mA: W8|G!Q!|♗yqϏt>;By>꣯^q89`N#QMhh9998WGcM0G"GuE(\qr4͝-0GG:ÜDM-}sO]G/?[!w+G+k|k|m|u|mqq!_#_{Q >g.H;|uH#u #aSzǂ枡B1;qq:!_:#_g__q\c؄"_W_C_7q\=!#hDWh8fI|6Q`yLش KB !-kZz'Y n zvbB_?stp^`[*<&WlڃJǐ ˵ @-|C:gM=B rtp^㵗Z-Q`v -<&Wlڃ^ǐ ˵ E-C; #:C=00Qo8;:8j/KXeB1 -<&WlڃIǐ ˵B-|C9K=wBčqtp^㵗Z-ǣZ*\ic,cBK7CZ$,rj9!!q7.y{<wp=& njZ&*Rh1b,$$ -<}yvw@~ }S7qq!ߴB_1b,tt - ,`y N2Vǐ ˵,G-[|+BB znBJĭttp^㵗Z-P*Iwq7MjF-Z&*"aQ A5!|3>9S0)nBZĭutp^㵗Z-S|S|oq7MjZNShcHZ֣ |z z<nBmptp^㵗Z-g3|E ȷ8|g"ߙ mBM|1Er-gی|C?;~N=gc\swj9;s8.w~B|[oK|Ey i\傄.D Cȿ ~a=5 H"]8k/aZ.F-+,Vh1Er-K.3{[!-k \/ y^DrwboW G$>7 r%jReB !-V<\B"V(cHZF-WGe+Z/P'Akuqr\kڄC|(G>wݐߍwo&8|7# ݂|`<~ I9MV8|!m ݎ|++@;>w'ݙ]wtߟۊ|[#@>>Zs(c({s=S1b,X{Z6)|aV z&Fh9[PN q//-{crŦ=X^+c%y<3Y:7FC9%,\ ,7B Ky.珿VhDPN A`_.Z R{c%<W_b\c(|(/-{crŦ=X^+\crŦ=X>G?^D)͊۵)aD`S`yLشk(QZxLشW_CC Aעݤ1X_.Z f{c%<_;bܮc(8|[1ޣ|ao }Af-+)a=9E>|cT`yL( zRE1CO!)G{+Z(<&GX/,3X=kW3{qqEg# =|V> ,7I Ky&gRz3zq9:8.|B|ېo[\i -)|a| zv鋈{qq^B{^+ĽD՞M{|>^QhyI Kyv_ gfhٮc(؎9G`_U`y C}x5!אBD)-B uz_.Z vch  |oF𙽽o#p4 { (rh87ߐkBňZ`wUhމ|;@n9Wbwx/Q9"GD~qi}GRD1LJ!|י1tb><'a7ߏQD\/`-c}\qrh\rcc7vG0u1OFGF'$"Ga 3nj3 -@9 q~cHD-_:5/`|DlO 3OZx JF3_靖LO:fFNE\꓎oB^>C$lԱ`}o#rd ygߣہ,sW=G?~T} ~r8./qq~E_C-0~stp\ߑw >0|3q\|?*!_1 _Aϊyv/>~~.g+KsQ J99JtDUA1Or}}eW&7E;#l~ޑ/Բ8Kr:hJw;4RA5-iy^ީ)ᫀ|" Fw(ƚ^'(29&yri5>WJߜeXei+j_kUѩ=Q%>^{R+aJ(rTF{xJ/J9/'9O++]*(j徧 ֯E )}aqO{r.꥔#^r~eEE/?3I{c6s~Wf5&v!\CyOTjeu9>98._5䫖_u䫮ૡુ|5>sG"ߑ}3T3m)Vs-Q+D3dsAyjfyWvq\:W'!WWW[wq͐ė I9 1GafP] IuՏ+ĺF KzW/B A*0cc%#O+[[rB Q*8쭉bo<&_X75Wh1S~8: _kgB7/,[zJ_oHVԴ)ִSSI||oVjiQ5G$>7 B9ho/WkZ:8j%ZIXVU×VF$>7  B9記}bQM{.m.mSZ:)|a.^a/-*\i]*ZKW/,yz]KKz()ay?c?ڧK#_:쭧bo<&_XQh1S~t~tH%:FU K~WWz5=Ʃ)||#L*jcrŦ=X..)?y`bw,;qq"_ׄ!_>ˡ^\i;{Gِ }Q_G||||oqq# ߐ>żHpBP7qqC|"̹d\c%d[Oq14 ñf3i.} E?F o$LoRTFs:$>1G 3 ]drc'`!9_9R VyjԙG M@ 9YQ%l*ڹ\뙫yYݾyDMtjϹ)堏0VI$7)Bɱ@c2ѵMqrp89sf>b 52i!9ȿ32z+fk$yN9rp}VOK=\<\\31LkkZ.r\>y5Fb U W8|Ex*,+Gi^rǷ&y8|Ҽ' ǑϼTt6~h9s1:9o^B9#|'-PXȱ:9osɱ;9oIB9"R'2- A{),Dh\qrHs}! Pؐ圮DJ'犓CU[PiNOBI!9Gotlb~|^{c>x٬~4AG?k||g+N[iAB})8|tB|kpnP'>{>°Z-nTσ&>>/3 >Zgۛ1"SV@ 3chU?x+ZVξ9._kk_kCw=]q\nDC}-+Y8|SB|ﭢ*@;>w'ݙ]wW=y`p*D\OG9M⣏'>M{~b #>o_=qGx؇X+6ݏ?{E{_=7qGx$V`2XQ/,c{05I||oVejB Oz=<čqtpM{Z-ǣZQh1b,øC)z. }7qT+JjLD-Z)\iQǣ!|=`p/)METGᛆ|" =|> ,x]"k{UяY8|ov_ʇ}M1’uOP߃|wtpM{`w(<&_Xۊ^v0)zqKG{ؿ+<&_XNE/q+q7MjB-ZUh1’ Rt-::8&IXSQ˩ -ZxLwCEM7 n-@ |gD=`>^}G=s[1{,|wqtp\eȷ,!s>=^\i+!|g>Ú~ )]Gx$VŨb -Ẃ> _(]+Gx%V˕J/Zx i\卄D7C_o}|~j_ >;ޮ]h8|"ߵ ]|)W/q\!!1?x9?*9sg~Rq::8.wnW|>'zϼo8)aD`W`y C}}N #yRTӘZ+]+C9%,}\lchcc@B|o`{z^BsSZ)aDžGchc(chB|!q!|/AKgVKchd A5!|o虃F9+X=8|"߳|>Kh>$,zNGC3Ms =Bs{qqGۆ|"l4W!-k9 fGh yF^D܋r֊1Er- . #lUU;Ex 唰|o1\l{>$,e"BB uz_.Z >$,ո#BN R{ `i* }w7E]b]:Z9._;k_{k nr8.wsB| -!|9TK R8o}p\c؄"_W_ow3mE ݍ|w𑿏g^*EzP?yM{.Po/ -<&_Xrs)\i?2X K!^URznq -<&Wlڃz( Sh1’#3RM{#QHQ -<&_XrsqWh1b,X;VeB 'xz9NK96ZxLش{9 NRhc%DO/')z)=wfB `y/ -SZxL4E/LWh1b,;GeB 3=,RRz,+6^.D Zf+|a?˹^JacrŦ=XQ -ZxL_BE/,R$ĝ8ڛ&aZV -ZxL_RE,St9:8&IXPi -'*|aɿJ%YFmttp\3̄6!ߦ>SU|a=#r!{?`?~pr\DŽ(|P.Gb>ކd|*Ejs|Gs꣯\kG犓hh9R h999cb(r9vr4N'GS sO(GssA[=ۄktp u5ߣCީޥ8.|?99. _|Y^P#Jϗ%W̹(|W:":E;#C|HGye~YuZ:i|TPwG88|ՐZB|Ց)_qY̡w(\snXI,؍pﰔ|Lהg5?`j;8|uNB|unVf\qrTF8rLHr8?߶,Vs\7 !70ƋpמrTU+NO1ɓ#3/+OwW}1nW`yLIl==^OVT2|~|a;hyKPN _Ckgbo<&_X߿+[[B Q*8mbo<&_Xw^OC9%,؏S5A&|fo)c%<ݥ:ZxLش{{6/,?#E/EZxLش{{.eB xzGKuVh1b,e{NEkT K<ܫ:(\i#c*Z -<&_X嗊^J`Mqjqq:!_:#_>S1’kOϿQ\zm䷊5=֩)|]|"LSԞ K==As?*jké)|=# =|V>O ,?{k#Ͳ+Z)<&_XH~w\ozϤy.^=%|#|"b>7Cߒ-Hr$~fWGDl$7հ0|~їV~wS{7'7&D(jch6$l!Vxfb6Gc5{=D1/Gy8|opB|CoH˱ޒ:s:sTTrpqSs aZjZZ _%hqK$>~.|csx.q߻<c1X' sH9TzTEQPQN9fH3$aZ QKaW58ė C;CGxfZ-B{`|y7ѩ=碹r𹒰Z}{IoR>"d䛜7S719&?Gc ?y_c5uLGtΜI9> ' G:9^w|5wqOZ--PK B/,y[__@QXNM9&IX6BKC/,yX_1ZR+6^v^vIEkic%SO/)ze_OcrŦ=Xh--ZxLoe+E/ﲌ -<&Wlڃ썽읊F K^ShicrŦ=X~~h-i/,;wK=ށ=h,}wE?BG?/H|煿!g_9(4мv:r89:99'=_rHw)C~%lԬ=~"r䪯Gse}I9> ۍ!93/"nb<+a~`=_q9rGSӏsɱ:5p_D1>@!93Ws%aEx WF͕W*"Gd9W_k'"}ROjI A{A{!{x:}P=q}8._CK%'oOz-W+,+Gsӈ, ndqqyɅOߨ,I 4/Gўy=98slw6s7s1:9o^B9#|'-Pȱ:9osɱ;9oIB9"R'2- Ai!Ȥ4vtlPKPK !P+P+P+resources.arsc P+Wx6h8Lx.V8b* N b v 6 \ ( T  < z ( < p ,X(6l~4DZh~"*06LZres/layout/filepicker.xmlres/xml/ck_settings.xmlres/xml/default_cyrillic.xmlres/xml/default_greek.xmlres/xml/default_latin.xmlres/xml/method.xml&res/drawable-ldpi-v4/icon_launcher.png0res/drawable-ldpi-v4/icon_list_active_broken.png.res/drawable-ldpi-v4/icon_list_active_file.png0res/drawable-ldpi-v4/icon_list_active_folder.png1res/drawable-ldpi-v4/icon_list_passive_broken.png/res/drawable-ldpi-v4/icon_list_passive_file.png1res/drawable-ldpi-v4/icon_list_passive_folder.png&res/drawable-mdpi-v4/icon_launcher.png0res/drawable-mdpi-v4/icon_list_active_broken.png.res/drawable-mdpi-v4/icon_list_active_file.png0res/drawable-mdpi-v4/icon_list_active_folder.png1res/drawable-mdpi-v4/icon_list_passive_broken.png/res/drawable-mdpi-v4/icon_list_passive_file.png1res/drawable-mdpi-v4/icon_list_passive_folder.png&res/drawable-hdpi-v4/icon_launcher.png0res/drawable-hdpi-v4/icon_list_active_broken.png.res/drawable-hdpi-v4/icon_list_active_file.png0res/drawable-hdpi-v4/icon_list_active_folder.png1res/drawable-hdpi-v4/icon_list_passive_broken.png/res/drawable-hdpi-v4/icon_list_passive_file.png1res/drawable-hdpi-v4/icon_list_passive_folder.pngCompass KeyboardSettingsFeedback&Visual and vibrating feedback settingsKey press feedback"Vibrate/tick when a key is enteredModifier feedback(Vibrate/tick when a modifier is selectedCancel feedback)Vibrate/tick when a modifier is cancelledNormal text feedbackVisual feedback for normal textPassword feedbackVisual feedback for passwordsPortrait SizesLandscape SizesKeyboard layout sizes in mm-sLeftLeft margin in mm-sRightRight margin in mm-sBottomBottom margin in mm-sKey sizeMaximal key size in mm-sLayoutsLayouts for various alphabetsCurrent layoutChoose the active layoutOKCancelPortrait layout only.Use the portrait layout even in landscape modeDisable layout keys!Disable the layout switching keysAboutMiscellaneous informationVersionv1.6pre2 CopyrightD2011-2014 Gabor Simon. All rights reserved, New BSD License applies.Source $HeadURL$Latin 8@8;;8F0@latin @cyrillic@greekNoneTick Vibrate once Vibrate twice-2-101 HighlightToast2 lorg.dyndns.fules.ck F8 0:JXattrdrawablelayoutxmlstringarrayid F40F^~Hz*Dh <h"Pv2Nz :Z6`BRr( workingDir showHidden showFiles showOthersshowUnreadableregexpreferenceName preferenceKey icon_launchericon_list_active_brokenicon_list_active_fileicon_list_active_foldericon_list_passive_brokenicon_list_passive_fileicon_list_passive_folder filepicker ck_settingsdefault_cyrillic default_greek default_latinmethodime_namesettings pg_feedbackpg_feedback_summary feedback_keyfeedback_key_summary feedback_modfeedback_mod_summaryfeedback_cancelfeedback_cancel_summary feedback_textfeedback_text_summaryfeedback_passwordfeedback_password_summaryp_sizesl_sizes sizes_summary margin_leftmargin_left_summary margin_rightmargin_right_summary margin_bottommargin_bottom_summary max_keysizemax_keysize_summarylayoutlayout_summarycurrent_layoutcurrent_layout_summarycustom_layout_positivecustom_layout_negative portrait_onlyportrait_only_summarydisable_layout_keysdisable_layout_keys_summarypg_aboutpg_about_summaryversionversion_summary copyrightcopyright_summarysourcesource_summary layout_names layout_valueskey_feedback_nameskey_feedback_valuestext_feedback_namestext_feedback_values0LLl88Tp,Lh8x 0@P`         Lh8 0@P`      Lh8 0@P`     L`P8$L`8 0@+L+8 0@P`p 0@P`p 0@P`p !"#$% &!'"(#)$*%+&,'-(.)/*0+1,2-3.4/5061728394:5;6<7=8>9?:@;A<B=C>D?E(Ld84h@FGHAIJKBLMNOCPQRSDLTUERSVL`P8PKeAtI+a classes.dex |?~gLdHX"A&0! $$#L2PUԶVm]RkԺ+Z[W\Z\k-{gɂwν眻,7 &Eye/?GDiH f*\pH b`-ppp0Gq)Y%01 m+UhZ68l.n^ތ0x?8`!ۀT`x8v kWK;z`#p#,.I LV`7p  > s\`p >|fMsK1l:+Iw!zAG~ uj`   << _ҁQ fŀX4mz`9p:w}_bl~ ~ ^Lah`R`Pm@l.wC߀?9S),`Pxf lWW{׀ӣX (. jAIY>/@7@ T59j ;7?F?]x-p`y\L )˞@-@g(`<0j`%l^>>C@>0886W7_'Lr3E@X끋 ~7c=   h.j`p/8p8Lfe@5\< |Nr" hw^>LvÀl x@Xl~  8<<>N,=08d*`:`;p=ps!1ck@{$)h d@9X K_< | |$<;i`0L@0(ʀE@ 8ӣɪf..vWޕW{?$l [;6"l[ –-!l?[ –m l[OwMp n3M&חRIp"07=6%,22A03K0F0GsC0)s@Ƅ)G.aOkMH////W(:7Mm]>!O81 )9/KWH| |?@LV @$d`0 ,@2LhKWgCWf˱+ BTjW^[ToU2 g  ߛy̑cݤF9uq H$?Q9TVa.u)nfFncW:IDfgIt)jt‘>[œ*w:CL#Uن|Ux30hPi pJАvKT6JJ霯C""TB l9*lΊN!<3Ux6E*\p /CT ;{ ~aCQCEC!!|P$Y*p ˎOA8X> fN!!,}v{Pg i4m9Ȝ8_eyX3tȵ`*By.bTasv,i3^» |n%*O9sst&9)q,}1=> ΢kLk/5׊*;F4dbZF6AG8AxAtA4F%"*?ә= : ; zZyTnk1C?3=\N_hK h4 4Cu MوO@ ߠIzٺJ :t. )t>3EQԩ-ҝzLult=3LMcQ wJ+(tSʣr,7 «1O j(ﳐΣw-#IQ&g*Q9跩&ei<ԘN5:Ӆ"Jy&7I7R4:)de<^.T\˨DS }3]1|E.ƌ?9l%1ͦsL|>HhL/A z=(7AʹZgJLR,ABAsY%ԣ}|Ee՘?֘6#FQΡJZ)))9\?d!*Jq|h&;}PЍb{^wt> HcF?Lx ){RB=eA/הuAϧ z1>&~ɊVtI):LsATt=MVr E[Aê;쀧CēT 7JP~;1KJt=Y>H_)C25W5?,h**5נ_M:]$(s8(Qr]\ OKFh.2xED Go|$RK]t/Sr|taHzrtBީo DWQ>Jt56}ADE]NR4?Sd;WE7(QMvV͊nQtZ6Z1ͦgS3})\9cEOED>u"^F؏'&{7!?3=KT߂7G$} qy=LOϐqJ1]NUrʟ,qDIo!l]彗&X~\ޅE|gkb!RO4SJo!lG+yp+@C~gB^@qě^oJa{~w*}>(P C8ϟ_$ȿV.U>#5c[2pM!? cwsF_w\ޛ7@?g}\ȏg} <.!@4w]} ̃n^ȗB$Θ5OƷ*>W-*k~TUJ6]g{ %kTFmDfaR}K|%>N| a>> ە#L%)߭>:e~Ibq_+ rx N M;CՌy7L=%FvJWtgr?^щ=M*dH$"4kL3e䨺L&(f"7z|<',ǮS"tʸs>4ӔC\iG~M3?o5|Sm{u5?|rH|oC{O3y}v'gs_ΚO!G'{){۞?}ɡ&~cϳP?=q>';t14Ns?8O<ǝ1#. ?B?Ecf6d#]7%hҁrJX 6j޷C7io?үTcD=Ǘ?/"0^1ܦv;%˽@[MbQypv;i&J3bp$Ndgg%=6#u6@4ҵqZHnʄt7)I:yM<.zLC)v/k)GCVӁ8^cI5Sa_a.lgyΞKّB@ &DŽd K2[ǣFۨ[Vá7Y?d%7ꚽ6ҪV\'^<嚮Atd-m9E5-M`^W55 xLڟڜ Y9\dʼn63Tr~"=N<\F2F5Bn>)(2fG(xFJDcrCʑߑrIV4j{I#+6g{F]*^ ̱&?f!uBDM@7ao2/}f? =A7V:]e!V.bfd4qˑ~9It-p&ivJKB>iOmET)zyzzhUgD/8tǧl'×+%rp<2+Ȯ'iD)Ln`z w; zЫ):j& ӵ}K^ 4=2w{u8]Wq}\<}z9o5ITύ=so>ApMz J33wLn0pGF4PHtd$ 9R%퓹kjIǦ|߬w34j]xF]bf͡BCJJ&Ƅ,^ҭ(& OʫL^rgYH~e-۳Kupb,u"j+x=KӁJ@sซQF`g5,\>_~~)` *)xl<M݅?@I$>L{ܠ73=cz=m+0a^ғ?d!Pj!~&=at F\fH7\YԨ零i}z%RvVե)Fړ K  G؇qC!\ر(='EfNl3;>rgţ,7tEӝҙW5ZdQrgzs&Y`i/;vf-'.~) Qo}Y#5mn{J +UI׮E;*I d[}c ubOu~wf!ghKӼ 6Y9v 6'*vݼ/r?w@I𒉢m2XDxcM2"i/;4G}Efė طS9ZIZ=/—/[>q`͵)ni5:&TlwjgFXW{ְtݵh#aDt$Z#ϗ~|eSiDž5<%;  A#y:v]r䨴5 bD,g3&">˰=qߝGsRx(R GNvv+ \ԩb:>M{/;U7m qKж뉀Y=K﫛[n .tԐsom]}.O)ZL荗"gBb&[կK|e쒝3*i̼x*Tk;!s*E܋T/:|_?ȧf*kaYh;4ppR%oR|gq٣u'r2 l;fiZTaK >s-f,"h%"9x-9v-)Riڜo\}xY dQT6 ;ymUvҗyt䷀s\C=6^NŌMH G1Mp̡=drϖ}cYEqj+\%[np˭BZ*KurTZ:o{b#q"?jA7x Wz}q-:C+7r>|DaJm Md_~sŌbY,gDsYCޙ4v30Oe`fTs.D.C5kB`-sh3AR SrlB.^]d~t.D٠j9,m{0*fU?:B?"%/am2$"QV)WԳ Q|I?Hب-u0!+5\sr4\]<"^gD=գ=*\+=hG#]4v%4A+ K8V"cf?m Ocrx[X#]9]J/1U`k?bű$])8o[Dh,2swNbg7'#iqiV*pX9ۜnjn@M5ݭTsa; u ZF<@ *rɏuvmG9ޖ{ dA xΦKv'?i2D|~i.NT1M{KSϘ~d遞c]<֝$U汊 ê^9!:O - 6t4rۂk[^c+z۩Ԟx׵QzԦ='Yk({E ڜxFWo y 6&Y̨`ͳdj5BTݑSx.$'zxf|b0 9a.܄8MK%׻%, n)02–gay.O%#m4| { +=Ly/32u5IΑ x&=ǠĜ' U=q7cAJJpJX#47|An@){yԨe^dz/C]d7 w|GDi rS?9-_ak!~9>Y-2CQr$Sk0f!]\샴dE|ۗ^|G#}8-*vM8W4>"SOj)+OFq <q<~3@\P<ǭ'FS/j5 P7r4;K)Og,G>H]_9ʴiX:eML[. 푘uKT[%6+T[2BcT ʷM ǧSmLrٔSI91x mހ]%Owq8\%䖉3Cw@yw䉼cɹ0>%*g|bn-ݖ!c/OxƬDKUTsU{*olߵђ/Đct-Rre"7{$K[W.c5Tb ؿwt7sE3|Vr%w3Gz(VD02C ݽJHNCӦ]{b7䶣wVgT%FT4>AJ_A+E\be11b1UWce 8ɤMo>؋7bÄ-䓩qr!W_ {jإ__Zc/Z<_q5qo%/bY^g5ZC;|Zdի{nJ+ڹZ5>,CI 8gR\<*4xُw_oo^a]^0AbnȺ{UW_̃s`_*<>xM9c02W&rǖh{=";_%8Sh=i*Srjs{ǭCwE}cx ԋH߭{'_ys|3.NXیY枞: W=-@fFHʫ}3s3z'6ubMƘ"]|U6}5,O]4y~O|a+{'yw[yػ=vN+k~چzD]:8tu{%:gj&s* g@a2Spxb"ٔEv]Ba) y `7R4NQlEѥ@Mf*B5v믒V)ڭd3'zz>r=KEwbguu/r6sX#.-hEɥ\Z(Bϛn~VqWzٳY k?CV rqozOhf[S׈=b雿Ͳ&{_ȽajkviMZ]ՇջZ؛0];F1ƺyʮ}Ox/6n^ѯtሟ~#F5ӓ:cVvG*͙hksӌ&iۢR찴&#E;@<,qa"嚭ceZQ}{{Y#á9mz*ڬ Ǿw8fl92ka1yyE{6'|{:.g*ϖGn !۝a=B:j%m71#Z+$U+_K2Qr%̀ES+)uPQ(vMS(sVjױw8EuX+, s<ʯD|#5gu&Jt)Xo7}+a#Q#pqˆ1vpU5WkhrJײHja.wG">־%;~Dځj-팣[PҨo:[:*[\չMO皨~?Ȼcľk#}k I= ǗO0X~ˁo!tG~WJGwA~;K B}tD3Jf;iy<1_al.ir :u":#073;0SmTq vqɑ3F<y ] @}9c"ʫ)̢Lt`:]34^l]2 l>tG\]h-dZe?*ȝ95Yos̿77u]E%>XtTbPETې' Od6y=rGDXQO+sАNuyL⊆W l'}|}|.E/:>9h -!y=-/>IM]3ME]6ߓLPÜf:xfNgVZLի *~w!ŢE\e?/֬UIT71>:M"GG,b<(q!Ϊ5F{SiKhVwA.X zh*GRZvr/jx,(!\bmzG7TੂFLV~d3MfwU ْ3դMs+Y#|7cS;]o {R8]0 "¥{ Y꽯)q&r|.gBq1KKWy'53r)SD{4Nd\w{ߋI"/O [<",^T1|x!}Oox/Ϗw^S'ərnRp:x4a?E晆I~X36^|ݝ'ov/1[ľr0j-usxG.tANfm= &z)yϦgX;Mu)FJxBJ|dԛ|=SJoe%;dE}nbN -w`I2皥_i+[@閉"/~'F}gEK[h,H2cu[ku7TUai+yŢՀVπiśӏkbo ѓJ+="JqOFw"'kk2NBMv!z&~c7&?c_wX6گƮl_?ҠDPʹ)܇\p;D[a̾ s-v!_!@, ˅|?Nf٪-d߽S6JύSG^ϻђ nr}2r$U#iQҠAM 7XVNr۝668l~xy&2YJg τ#w-&-,}? }~_K8]_{?`~o0㾞rj@8Meǘh=<)VbՃi7oCOEL9!{2Lۓ\6u#:s0Yof!v?????OHSPh u!PS5ޖNk.ҦuCqS >Oq6C9dA0|ͧQ0e OItZ?IU7kGŁfocgݹ~Jin_8 TXѩ\\UB޶f}x5ް"9׳BwGU*ㄵΧq'V>{k (q SF ک灁2I+e5XiqThhu4lkiu?z8UQ@T֒OӾ-ӼoK`:0"QxFԐhy0hiFR]+plʹ8 JF߮]qoV؁+7Oz 6XrAqC:"Md{DWΐ ΁b `g}@Uʧgmʂm5QzzTD}6irۑOoQ['F#wbb41;K+]o"2M9D1:|EԬ5oI1t7SVҢf_j9,E'd CUyZ_42i.mT;ZIeGhh?Qd´6x[WW@}K0մ{0:eŐ@^kS >Ujx;0=͡Z$M.gw?8I~Xc\a>ܶ ,/ Zua;;9Uَ'\^]<}2gc5 \ ?JIE<]m9.ewhTaMx4'=c0[>> EM.J'`D7("M^8Ԋt v7܌E02:<^1gѹV;pzAS>`Ge!6<^뛥+v<1T^y#|lʃ& "jh5vbQ'nկVG<έxHϑC>}"gF4.﫬@5a>IV%\;qtRE{6q$I>M HFAV 6V&Yߩd:@$(QQ>|Tutܦ?V,ŁlN6 ~uknBkLV ]->Y)'QYz@I3fqdݐM[gK˴5YD0rZ=[KkCkEgb̋S_t6/ :}씇)0)]D%narB&L'ҪH*bq4]rR}6UZh#a6 s&R2x Ճ;DcyEo8TՉST@M|J2{j*K(?Ws/^Xl"R\xrŬ(\F "$N)9zF%= :[.gSK 5zPu`u 6 XNQ`+ERҗdY*mUʥ :edZZVF|hO)gN(n9'1-<|r//[r)Jˑh9ig C6/$ H0Ck9ƇAV v\ױ=W;v731Tz4I2\m J: a8+ [#\&oKYBcSeS+ 6_--KC܀l/39F# G0LZϤ: rg/8|EZ=%{[ZW?pq{nZ( U>GwDcga̼(O) X/,"*D'.XDׯ͘~}`Vk7F:y/L4g}aԑ,Q0 R%~vy`y`~kںBJW;[[!tX=6i(wP}gOEN7IER1WWa4dTGC{ǣF_k|}mB .Й bGA_#%^ȋhT=6GSz{H?̃5R&<023Z8[0hBePLqx?]K٘bdߛ|! 3L_;Q Du" >, HF'orP_w-d+ hpRMa}6K Дj l0 Ir"яi+~_ (fS:֠+EKփ*;,§&,'b)"f$ 5{Z)AX$#nїIa=)&1n:uWprr\ 9д61"Y VfG&5crVxױc4CyngǺ,NamqMgOyhm[e](_!'f~cOixLѐ)T^lXWJ菾E~>)^WY q=ނ .RFg)Y+P?\Wba28ae!?/U0*a]~BtZCyɴXQ֦a TQAVALj^ J⭑Kk8YMVRrW(eU^T‚$E\&QV$IY//k:X5aBZxwoZۃ6T"m(;NdbWאX - Vjqfؘ!,qoDM11W2,gۍ(;BAp=h8_Z58w]Iwmye!XnECJ^֕d4CW.qm' $d& ebMāq:SuLtj@%}ܻڐtIjwy}sjK 0p:p(R*S%2{z,ALWqnN,IR I~"bJ 4UTސc(\ب ՖA=EWm5L1,Ј v"dl`pP`mNvGyOz=t6O;+< åahm#{O%XQj$)5a}v[8T?@~KZf*&8Y//:,9.-\W^gz'@E>pc0,nؒt/?,O2)3z]H@7oǪ=57bSNCׇoZGx,fR TUP7Vm8w3Fz@p^KpRx S7WN Bm|s'((!DSG`F(yHA?HP> tdhdEU/_YKA/;rOBKg "C,fCI"T*(+TR^%%,npгKn"/+^aHaHVØNB|(1!xoԕ3 &@ROfdl떌RQ&%d q:ݴ4Ax"'G6>Јp f9W;p uۢ nF,6aұǡkڣvBXW/_'[Č]oeī Ev07Z99$q7febfar>_7и& )(,Bב/;g i]ȥu3] 4 !_lȺ#c:l ,E8 ȏL!z]RbvJBeq_'09y3`el'){ED6yW`/ e ;bnq'sl̝t)Oۉaj/fL?&%deAirev.Gj\Ac;Na6|[{PJ@鼐F&UI6'y-+{ɥp 6gr6GԾM2ɥ's%6jMwH#68&4pXmdv99#\utpm!0{!tRXE X-b=fq6)$'8';8O@`5GTMQ. iZ"%YI/0y>Yd==o/2o]0%L%݋W`9 }?z8reQ@NPԍ+q ܵ&Hޔ<ݻf.vP,&۳ل&\Yāwn̏7]ȍ̿j`H` u٣,ƭvrld],C/ )H=Fjιgeixanyť21z $pp{bnn" n|nGRkq=owT`?[I⒱jٕuCLaq%-N$`<$yɍr6"m@]rӰ.i~hԵ?sO2 r!@>V0Y lekU|m"{4g}һ5FdD} g<}dHD] c0& AiAJ8`ݨ;0fCjRYvU-kZ=$*v1p8J FӲ6 ]lAw!!<ܹ݈Yeqk1TߣʭL{ ?Uγ N*x+jzJ>Բqk~ +Oim0Ş d\T;qEѾ&M[neѿ]rE^Eމ+&/ȟN%_EËGX@Fкcx]m]u]P! kur~Gm^HYdid , )` KSY"f}$!8XywXwY{Ik>k>̚" IIF-I  _\OO'7ؓIu$4{=?nd0d 1mToDnI~A,@p2D` 0T"BPAB03BPA-"B G0|A"W!C0`LBBkXDl}/^,v5>48Zz^=^H._^^ߎp75Mm/]R^Rs>/xlX^yJ]tjp֒|m%%to -/wЏ_/'J'K#%PK+aPKXAtI"݀D:T5lib/armeabi/libsymlink.so[|TՕo~$0!$Xeu"D4ԲNd ӆ$fZa RJ4j?VAk?~>~Zw;Ƅ֡?Vs2 sr{=s;ZD$쬔r1&,]˦ іY2LVJcL6I^oXI&dv6oÄlLfi J H]??< +*_dBjHp5ֹ-/;>;=? ݽ+tyz9LfniA⹎1h .i?L_y!6lyO7yX@.,h6tlF=d :aSc=$/@6;:/r{ h~tDAWL tTD jtjA9 25۶1yiX}tmv?> o[Y } sVw7g,x+聙^#4cZhR}BߜF+ѫG@,tO-Н |> R8}ɒ1{A.sX\,ԇM^FN ZB_ ewW-f-5e6)\er"Prֱߴ5_%יƎ 茞``MȿPkޡ|2"7ɿ6jWnCSF@M|<*\Yz]f54ur}߼"ug?돴OWVj5ҟ0[\ؾ:- F/L( l GBminh 6ğLa}p:XHsGۣ]ܶ%HUT*W#!uD[穂D:AkBƖ`uCll"͢n3ظ!hiAK= 6}u/OhT`[0a//FZᅭdt[7Abo&0XimG")bLZ tDu_hm: Xۉ^l Ǎ2\lka04ARS$45|nj>d i+ c82*Jaogftˣn`wʦ -t&ೀRyMhkNa);?Mbf^1u6eYZE9CD cR[&Trb$^$ZRg~ۃ"ib58QwG*' C<;M< K&B2 x(}0`04ac0{0'c' >Gy01ؓ1W''5[;4o_3Ref);;VNXÖrR~ROZʃ+(;~'cLV]lk^-nvzv*~3؞/R"y>Q\VUUU9ɗsWWڽ75?J1-zY>U% I3 fiH&/-/Z69߯N3o7P c8v:yOg"*/alp*z9E/+J/l.^lj1?B6$>Cu[|[ EcE|ۯ.ժqTl jqWg}ݱ7|jϮ}(&Ae*Ix kOb~2}|bEWpsyǓ0N%ړN=[).u^%l@6kլ $`ENtS6)^6B_?cM Y*r” 3,6~٤Ù6!;):y# .GEn>yaU} '[䧵(o##lņS>Ee̘sY:._ @AnZA:-|2,wB.s= "yS !lR4~1oU$lϤ}u^ s#Kq OG"] geT!C.6ܐ)%/!KJE.1إ%*|S{ ?[#z~a_='{태KQ|yC} 0^9(4M"~Aurε)O|eV{Q>绗j׉r0_M{ל*5Of=-?: 9R|oQu2BQBk$?A,/aojߢ ?d|CV6EClSGu<8 mv-[p3+>_gdqx9ӺuqZq (,+[c>ZA٬.XqXB\d!m.kr%#:'я򡆭/oՑ>D;*?H0-@ĸqyM|0d?]m=S63P܉7Jj(& leYϹ8oQu'kPw4"mhۃ|Aw(MMS<[uC<ۙLM%:x٬3OFv㱭0{|4t";Dc#)}9DOuǧί۫uWvֶ@u8v8Mŕq` ַTsAT y~Q/ ]f 1H#(pB-o4ڋ{A<s4,;P8p9+w Q$k4a|?ЫQ,pc +OB9G{&~HJ XI}g(5)ʱ,h2=$ 6)qƖ(T6vgb*G;G″1>ypptYppTu,D-X7_'#FbF ӕxn x4O{!e/Z2h8y r(-B<.K(tq,&<ف\S<Hr"WCCƻ8n>tv#|0T_/Ln?4碎xn@ x4<#9x!9D9c]Ǯngnנ2. ]YvѸ-綅tvu[*ĐRܧ9y0嶶]gڠ0s䠌X seFO]0T[oP|r,)۴FN|_'cuazr>lw4;$ W-N]NK &^ 0!i#ނx<~󍍃'w04!q3v p tRGo}uxCo}z7.^|\n-,)*˥`K0ם%Oo׵4eܣSלLIe8\Rm(JӥB + 7#Vj;YYk[$XuCٚ 9&Vִ5q#9nf0=$:@nl[",P"--[j $U(*cP#FoC_blM8֯F,>\D"5"_cga PP]!9^I|Gbc ,R8=EG{#'>1>OL{GŅK2:f)Q a=.k8IbLj@-|\|ؘ}|v-;m{ΑI)3ǣ{L|˺sb cS6$;8_?ySb\wR)ʩf+M#3GE1*}_sk񿵑,3 PK"݀D:T5PKXAtIOײOlib/x86/libsymlink.soXQlE.r(HO*B%(9PLX*n-wzWﶵ%PrmD% P#4碏a${FG:ȤwYuX&-+vvf ̈́mm0;a$S;D:ÞO$\~a̚قѝ fan$ .B+)e*52Ux׆e&V(PyjeM>L.]*) 泀@=x*2?(g(XXC"H~(r)݋xQY4G ǟ(Yx_.OJ>\9-?wQ8N7""@+99Gi)]vPF9Oql #S&& }>K_@O Cj7&x]оh!`)G"FovȞ_5LchxxlEnGcF4wexwx]Z?), fz2ZaU3aG#D=*oI=e {[_=`MIwt}Ѥ7NiW394}7ޓf I&o=z'Oz I ŝCΧGu?di PKOײOPKXAtIz+" 0lib/arm64-v8a/libsymlink.soXolE[J[(R@ P@ς((*A?u{w'+P 1 ȟ~hbH0QI*JHK1IJh9w7v&/.soߛ{lqK_<-C>Wu a8Bi; %/(l, !_{TS Bg"{9΢r* g_y#χr-YNW OUԞS^_ L`oM?Q]<|_؍!;A~,|a-&1Fb]!츇0Ha(CAͨ!e#s):!dy$Vdj!h u~n}? OC`[&C)2ЮA3m hău8,76zmJl"1}p0RE6h f0V#] ?b7Uh¨gaӟx0[*cwV5aF*c1b4nuLj\YWS͢ڞBz]Y3zDyuo4Yk9ҫY>5;mۦϷ{lzɦj?8҄RTŬuΔo<&&B&N|p hL b,4y>X5Xu9Mՠce׈ ʧ42ϴjjS5COj}[}ۈ@.>W= !j=ڸa'`]VɃ4-lMVq66/D}AJߣM}{ch?oa7>쇈S|b_1~#[yf(M0(pt;EN:60`OnҋzK JZ0@{_/E "g@1$va"^/ƶ Zgff1/.mCy{ *)ggPwbs<(flL_Bm?MI?PIcMۯ86bJot`2<'qdR|[l]YuS%<d,-;92ܗ?Ż?¾aEoeoﵫ5X\NTO:2ы}*?PY( mp99rCDQw+?PRj4/:OwY$$_y?]FI󹢘dVO"ɐ}tN"i>F'1eg G9\=L$b˝}_R#$'e3dVTuF}Eylt儯r3yd/1淅󛾟^?{!}$/{/d;ƧO~3MhK~ӡ}m>u:^YtIDrN\3~5;=I3h/PKz+" 0PKXAtItlib/mips/libsymlink.so[lUih:-6jw Cˣ% -|M&pl@BLRъJ(* |tFRяe?H,HB]`Ι{'E^s3xP$@X-Ћ~  8\N B|=\h ?9cZG.7%օ6(_CpZh:n ,kxҶFwqr{glX قkLsx)|PO_:y0*0xOW%f򁪡l2r@;u9@pɼAT7]e*L&=6Ese]i]F|///d,Ai`/Un"`LƑy8$cU/5(D'?M3wQ:KCl߬|*=3(i{!?#xdD۾hG?*qɆ i\2^SN=SO7~PՓAd7D_7dT]=4R/ZX'Fy\s*rYoٹ :6ZEF|G|8|NKͨ7]=l9&'D|cGp-C<-ʽ:oҥFS?5t@h =Uڲ<)3O e[oJוCLlMu⧟}7Ѓ]3&Q.)RcrqCV. %}L,Gzk|]iWڕka@ǭOyw9wIw6ϩF ~soV3dv#ZtA3b,N \ȇ'=%zJdJT\F&WZuPhI?9ŇQI|Yֲb<`JXP-ByjtkmN귥o#}mR9WsLOvVhW6BZ(׭5-&>Jha$bTc`cW!0{>rF f97F`^Dshgd10J^gre)V V̠a\ob Ƭ=Ʋ&Sp<.`bcTc;8->xX)˽= Mx9lm^(l+¦rx#Q$>ڧ/V;~#qA~$stSw=  #giL@gk vM@| G5|ˑ<M8!g|ZKaQoWZ 7c%v?'쾉}е|wChȺ5-& 74z_k˛G:rsEes\_ė$_ʻ,ͷo%O_$baԋ|j PKtPKXAtIyL9 \5lib/armeabi-v7a/libsymlink.so[}tǑi/5Α# B"灭 ej%-h_iqD/Le ǡclA<3y>g_8˂±<^4ڈ8ɻ?^kxo_%'+`Ij9 Z?^$lK}I \'`098؟7X&B(jN4ډZ?P/A> U#Z&x8Ɛ_1Q 9~=,Hοm[[4ܸ&Ҵ!p՞mλ'/k|O\w_Jn)E)t1g2ll>07 k8}8_S6::Y >b F>gcmtmA Mmw@ч@f_]1o~&y2ײ;6#п'8=9ܱ-NEq<5 N&N3!CUӰFNӗ戥A~ş?t>_oٯ j=h?h;{@觝2y^#6 e@E)M)7A{1'> ~N?/L)&} ?86: !i)HS!0[{R-lk&ܶQg(nDWBͭ[uۚڂ6ۂw5 >cd(6}+Tmi ʟ##Ҷ6ECQHo7" l }4(Tgʣk+U4qR4oij ݴWmppc"Xvͮ?2&X`9hb{֭\*e(Vjҟ6nmƒքAH[pK4ܔpE[#xַ6꼥͍- aG,LmV޾q}%)9$>jA5TZi 6CM[[x[t[K8ܻphrdm=pm4\7nڊVkq_÷&^?h0x-]˟.Ko!2qL \i֐MSz2jڛ׆ +HmY(>ܰ:6Nچp{jsik C5eh]E<-6r\@/xP1]l!eÑɖ2ũVe+J̪ؕnacuM .;Bt@N| P2`>:_Vg mlkO>UWLj ,[[.9r9_X||gKGmö5]أ_'#ІcAL,3QC*x!=#o'K$?T:7 dWKO,ݿfa}(zOHk܁'{/,/ בfz)Plٿ0{h{%lQzCߺwf0ߖ}c߼ZkEa&>) ]T"jC=^*|%PK.OxӅL̀9U)>CrtGQW)19]?.TqWPJ4Gg-U C'ꎝj[`9GXa4hwm#4 $K^R*U=rD@Aci\{^-~.$C=,'YT.֣e?d/֫ &17>+c}d[6F?`+ ԫ1;19NJn0,y&#ߑ/ɇo?/o#x=NvtF"gHJcDp/uLRuH2|y~;F<ma#"Hd>Kc囫:TzYuÖ%O9֓M݆_0udW9#?E}ȣ###H#Y= 9?H'Ęo>Y;M |o98G\~MXo"?F%:0C =Sk bna%-4|7%*15ة i AmjU^-ڞ 3 zv\[Z'c8|?}=:xp8*hOʣqOB>#8ws- h*5:cimNi1c̀-]et:s4fo"bb5>mr*bMpxgKoSJ*90I3i("F7Ogz9)/eOԃnOÎ{ٮꇧ ^םͽ8T/v i}2Ajߥwlx?bU: oK݁IG|{%=@gGPys\I_L5DZS^{ԣ'TE1I滗Wh|o MgnY-f߁I>ɿ7m!TPBk;٤?rAƬo:!G<;zkrguBy1H~.'ުA g941 ;b(+ds.soY<:}Ƈ>/>Ӷi #> =) -;ݽ2<񔀜0wMʚ?b4Pk`4^6k0WS;bdO}#ٴLQ :)hn{ N.2|S$c!zn:7:cm6y< ;|c=֙}COյ q_-ΡR-_s,>F~8`J8BrZb`&cMuISz#ljR5k~d'?q6;F/Y8cuǞF$}k\-`]}kB6k9;!xITNzKg\TΘgء3g/3)CtB cߡGu3Y˯Crҿ?H1tgz[`}极/Po_)n쎘WWtA),ꌑ,ıWKzX_/e%ڻʴ4uI{r]Sq 2#>HZנ<;Em5}2iA=r|&wD}Q7P0s+zEr&qJ `bU6v.銹/,{ynmE3I~uF˔Klg.cQa"/kL& vYS\JTv2k,Qi l6dYؓffMGӴV[u1_TJkߏՅj5lؓyߢ0j4a,eeP,݉Q'nM%a^;#F;s{b+_TSB:18xͺ6? xUcP݆3KElU"wqbUMF:nhK┳ zcBX?~_5=jfΐip7v>{']~ķ$w@3aQ#- ]1Sd߆O<;p|1zg$S^xf?Hl#<0s(Yt7'>[L᷉ϵWc~bE`,>NKۥG-z/O?y\iH{M[ Gos(/%ӂ>_!|ԥ_U3#arz?s\?ן)ݟպcbcI {A2F}]> o_]n_=_;t?=|֔ yRreRAKk5o4םOwط47IEEtݣ.[9@w%IҼ%!uMq SBcsc ۢP +4Eí-9.Ҵfknqmkjhh++3pkݴ$`4ziihb!^hz.n4E6*MCB1R k^]+ikc͍ᦨMw2ʑP4 XX=a-EIs>oL⣽Bs.#thn¹9-؝%n= x98BwfC =E OYJ|;xhop9&pI6(O&O`m6>qo;&vY|-loR|)Ǭ۔B=Uc2磜]8ؘ5[±C|t~ϼ/7~%>?ٸ'߫=M|)|?cH>7V\{֚%^.[wJS罺<PKyL9 \5PKXAtIsO8lib/x86_64/libsymlink.soXklU(vZhyմdtEL}R7jQ XKB1M?MycL DqWŀ9g;sJ9|{>ɻc^؝lBc uʂeS@;d,xD;WXe Ns#:{kmwxHq{aW/WMb_X*,|+'?h,弎+ /*ؿ`gxߨOTu/c䆾Hvcv`*~kK&sllF:I%նw/?8'1T% <דpCyBOzNr6d H-9oBl 1ӹju ŧ >P#}62Wi.8}+/JE:m4 Cn;Gm %Aݹr{aw{a?Oe仙Af) 4yhB Џqwu-uri?:RTm|{`( i^Y5>%t6>pϓTz#u[Dum5jOy"zL펙?h槫56n4V^4'N,gש;{4%L T? |;9^>||~e sRߩ4~4k 7@mݾkB W`E_@:n ;,z;W\R*}{q?3DZV$Ѻ0t>iA5rCaP-ݬkX5tuJ̭&3$"HYT?N絙Ø?Grs<q=P?EԋoIнU3~C/yH[|ٲBa52%%zPx8$R =/;[}qPE#(/#29}rHdH2e,J, ؘ˰Ȁ`D&JVA蜍TExFLL0ڕ뙌E 4& 7\lXohp09["P_ү2F"s€4qaA|Z5Y \ʧyGHg2{NN j+=O0t~mUaI䷣NS Zvz 6tc4`nm:6wN\KsOpȧ/Ko39`oT߽ _e~A|~9@AQ0Z$;ǙI HvyP?_PKsO8PKXAtIi+[+Plib/mips64/libsymlink.soXoh[I,4{:s6Jꔋӂ/{+tܝZvSA`(8 4DTQBPVޗ *vF|;O#μyoo{k'k0E $ 9-} ǑQ C@.U> atio /5JS ¹-qsv[ŽXf.ѾoK.QxKاh-9pCMaEl.rx\R~b^;\ \5̓r5a5WgEb:Fe 5WB5|~V?JxaS.#M[ױmE]!# Isydv)MyP \37 CZZ CW0QC䔦SN^_&Ig4^8[y=wnV&z*듕kkG}|kSE.s\EL~Y?<[99o~s#0 (>E+"OPX[x|^m obscmgD?E^<ƴIw60;@-~Q>.Aӟ7ݯPƿ2n< 4^]jo3fc~MwϷP;"N8N+3"|Y nTǂ7Rh1 q}p߲ۧHԉ_6x2{bXRG|9_ :XskB`܌}SBBqφF{85W{?,t]@ r<&u 3)sHߑ?0_z>煮'w:]S Ε̏+ ]grs8qpj?9 mq>f`j/ASJgWAV{E20r>e`Ǻ9^-zS>;{ť.]Ne)E+zMwM鿪n; e;U >@Y=PKi+[+PPKZuI@ META-INF/MANIFEST.MFPKZuI[Xu5RMETA-INF/AD1279E6.SFPKZuI-U#   META-INF/AD1279E6.RSAPKfAtIqa()XMETA-INF/buildserveridPKfAtIqa()META-INF/fdroidserveridPKeAtI$ 1AndroidManifest.xmlPK !rsff&res/drawable-hdpi-v4/icon_launcher.pngPK !By y 02$res/drawable-hdpi-v4/icon_list_active_broken.pngPK !< .0res/drawable-hdpi-v4/icon_list_active_file.pngPK !p*04res/drawable-hdpi-v4/icon_list_active_folder.pngPK !@*QQ12;res/drawable-hdpi-v4/icon_list_passive_broken.pngPK ! oLL/Ares/drawable-hdpi-v4/icon_list_passive_file.pngPK !s1pIres/drawable-hdpi-v4/icon_list_passive_folder.pngPK !4˖&XOres/drawable-ldpi-v4/icon_launcher.pngPK !RYY02Ures/drawable-ldpi-v4/icon_list_active_broken.pngPK !UVV.Yres/drawable-ldpi-v4/icon_list_active_file.pngPK !F0~]res/drawable-ldpi-v4/icon_list_active_folder.pngPK !eB$kk1vares/drawable-ldpi-v4/icon_list_passive_broken.pngPK !ygu/3dres/drawable-ldpi-v4/icon_list_passive_file.pngPK !nZ/TT1ngres/drawable-ldpi-v4/icon_list_passive_folder.pngPK !HH&jres/drawable-mdpi-v4/icon_launcher.pngPK !0rres/drawable-mdpi-v4/icon_list_active_broken.pngPK !<ُ.yres/drawable-mdpi-v4/icon_list_active_file.pngPK !e hBB0~res/drawable-mdpi-v4/icon_list_active_folder.pngPK !⑐)1"res/drawable-mdpi-v4/icon_list_passive_broken.pngPK !<ُ/Vres/drawable-mdpi-v4/icon_list_passive_file.pngPK !%OWW13res/drawable-mdpi-v4/icon_list_passive_folder.pngPKeAtI;&:ۑres/layout/filepicker.xmlPKeAtI@ \res/xml/ck_settings.xmlPKeAtIb ''res/xml/default_cyrillic.xmlPKeAtIA̾1res/xml/default_greek.xmlPKeAtIT~I7hres/xml/default_latin.xmlPKeAtIres/xml/method.xmlPK !P+P+P+(resources.arscPKeAtI+a @classes.dexPKXAtI"݀D:T5jlib/armeabi/libsymlink.soPKXAtIOײOlib/x86/libsymlink.soPKXAtIz+" 0}lib/arm64-v8a/libsymlink.soPKXAtItlib/mips/libsymlink.soPKXAtIyL9 \5lib/armeabi-v7a/libsymlink.soPKXAtIsO8lib/x86_64/libsymlink.soPKXAtIi+[+Plib/mips64/libsymlink.soPK**1 fdroidserver-1.0.9/tests/source-files/0000775000175000017500000000000013324115531017665 5ustar hanshans00000000000000fdroidserver-1.0.9/tests/source-files/firebase-suspect/0000775000175000017500000000000013324115531023131 5ustar hanshans00000000000000fdroidserver-1.0.9/tests/source-files/firebase-suspect/app/0000775000175000017500000000000013324115531023711 5ustar hanshans00000000000000fdroidserver-1.0.9/tests/source-files/firebase-suspect/app/build.gradle0000664000175000017500000000015413303240575026174 0ustar hanshans00000000000000dependencies { compile 'com.google.firebase:firebase-core:11.6.2' testCompile 'junit:junit:4.12' } fdroidserver-1.0.9/tests/source-files/firebase-suspect/build.gradle0000664000175000017500000000027513303240575025420 0ustar hanshans00000000000000buildscript { dependencies { classpath 'com.android.tools.build:gradle:2.3.3' } } allprojects { repositories { maven { url "https://maven.google.com" } } } fdroidserver-1.0.9/tests/source-files/com.nextcloud.client.dev/0000775000175000017500000000000013324115531024501 5ustar hanshans00000000000000fdroidserver-1.0.9/tests/source-files/com.nextcloud.client.dev/src/0000775000175000017500000000000013324115531025270 5ustar hanshans00000000000000fdroidserver-1.0.9/tests/source-files/com.nextcloud.client.dev/src/versionDev/0000775000175000017500000000000013324115531027414 5ustar hanshans00000000000000fdroidserver-1.0.9/tests/source-files/com.nextcloud.client.dev/src/versionDev/fastlane/0000775000175000017500000000000013324115531031211 5ustar hanshans00000000000000fdroidserver-1.0.9/tests/source-files/com.nextcloud.client.dev/src/versionDev/fastlane/metadata/0000775000175000017500000000000013324115531032771 5ustar hanshans00000000000000././@LongLink0000000000000000000000000000015100000000000011212 Lustar 00000000000000fdroidserver-1.0.9/tests/source-files/com.nextcloud.client.dev/src/versionDev/fastlane/metadata/android/fdroidserver-1.0.9/tests/source-files/com.nextcloud.client.dev/src/versionDev/fastlane/metadata/andr0000775000175000017500000000000013324115531033636 5ustar hanshans00000000000000././@LongLink0000000000000000000000000000015700000000000011220 Lustar 00000000000000fdroidserver-1.0.9/tests/source-files/com.nextcloud.client.dev/src/versionDev/fastlane/metadata/android/en-US/fdroidserver-1.0.9/tests/source-files/com.nextcloud.client.dev/src/versionDev/fastlane/metadata/andr0000775000175000017500000000000013324115531033636 5ustar hanshans00000000000000././@LongLink0000000000000000000000000000017000000000000011213 Lustar 00000000000000fdroidserver-1.0.9/tests/source-files/com.nextcloud.client.dev/src/versionDev/fastlane/metadata/android/en-US/title.txtfdroidserver-1.0.9/tests/source-files/com.nextcloud.client.dev/src/versionDev/fastlane/metadata/andr0000664000175000017500000000001513243530567033646 0ustar hanshans00000000000000Nextcloud Dev././@LongLink0000000000000000000000000000020300000000000011210 Lustar 00000000000000fdroidserver-1.0.9/tests/source-files/com.nextcloud.client.dev/src/versionDev/fastlane/metadata/android/en-US/full_description.txtfdroidserver-1.0.9/tests/source-files/com.nextcloud.client.dev/src/versionDev/fastlane/metadata/andr0000664000175000017500000000111213243530567033645 0ustar hanshans00000000000000The Open Source Nextcloud Android app allows you to access all your files on your Nextcloud.\nThis is a dev version of the official Nextcloud app and includes brand-new, untested features which might lead to instabilities and data loss. The app is designed for users willing to test the new features and to report bugs if they occur. Do not use it for your productive work!\n\nThe dev version can be installed alongside the official Nextcloud app which is available at F-Droid, too. Once a day it is checked if the source code was updated, so there can be longer pauses between builds. ././@LongLink0000000000000000000000000000020400000000000011211 Lustar 00000000000000fdroidserver-1.0.9/tests/source-files/com.nextcloud.client.dev/src/versionDev/fastlane/metadata/android/en-US/short_description.txtfdroidserver-1.0.9/tests/source-files/com.nextcloud.client.dev/src/versionDev/fastlane/metadata/andr0000664000175000017500000000011713243530567033651 0ustar hanshans00000000000000The Nextcloud Dev app is a development snapshot and can be installed parallel. fdroidserver-1.0.9/tests/source-files/com.nextcloud.client.dev/src/generic/0000775000175000017500000000000013324115531026704 5ustar hanshans00000000000000fdroidserver-1.0.9/tests/source-files/com.nextcloud.client.dev/src/generic/fastlane/0000775000175000017500000000000013324115531030501 5ustar hanshans00000000000000fdroidserver-1.0.9/tests/source-files/com.nextcloud.client.dev/src/generic/fastlane/metadata/0000775000175000017500000000000013324115531032261 5ustar hanshans00000000000000././@LongLink0000000000000000000000000000014600000000000011216 Lustar 00000000000000fdroidserver-1.0.9/tests/source-files/com.nextcloud.client.dev/src/generic/fastlane/metadata/android/fdroidserver-1.0.9/tests/source-files/com.nextcloud.client.dev/src/generic/fastlane/metadata/android0000775000175000017500000000000013324115531033622 5ustar hanshans00000000000000././@LongLink0000000000000000000000000000015400000000000011215 Lustar 00000000000000fdroidserver-1.0.9/tests/source-files/com.nextcloud.client.dev/src/generic/fastlane/metadata/android/en-US/fdroidserver-1.0.9/tests/source-files/com.nextcloud.client.dev/src/generic/fastlane/metadata/android0000775000175000017500000000000013324115531033622 5ustar hanshans00000000000000././@LongLink0000000000000000000000000000016500000000000011217 Lustar 00000000000000fdroidserver-1.0.9/tests/source-files/com.nextcloud.client.dev/src/generic/fastlane/metadata/android/en-US/title.txtfdroidserver-1.0.9/tests/source-files/com.nextcloud.client.dev/src/generic/fastlane/metadata/android0000664000175000017500000000001113243530567033626 0ustar hanshans00000000000000Nextcloud././@LongLink0000000000000000000000000000020000000000000011205 Lustar 00000000000000fdroidserver-1.0.9/tests/source-files/com.nextcloud.client.dev/src/generic/fastlane/metadata/android/en-US/full_description.txtfdroidserver-1.0.9/tests/source-files/com.nextcloud.client.dev/src/generic/fastlane/metadata/android0000664000175000017500000000206113243530567033635 0ustar hanshans00000000000000The copyleft libre software Nextcloud Android app, gives you access to all the files in your Nextcloud.\n\nFeatures:\n* Easy, modern interface, suited to the theme of your server\n* Upload files to your Nextcloud server\n* Share them with others\n* Keep your favorite files and folders synced\n* Search across all folders on your server\n* Auto Upload for photos and videos taken by your device\n* Keep up to date with notifications\n* Multi-account support\n* Secure access to your data with fingerprint or PIN\n* Integration with DAVdroid for easy setup of calendar & Contacts synchronization\n\nPlease report all issues at https://github.com/nextcloud/android/issues and discuss this app at https://help.nextcloud.com/c/clients/android\n\nNew to Nextcloud? Nextcloud is a private file sync & share and communication server. It is libre software, and you can host it yourself or pay a company to do it for you. That way, you are in control of your photos, your calendar and contact data, your documents and everything else.\n\nCheck out Nextcloud at https://nextcloud.com././@LongLink0000000000000000000000000000020100000000000011206 Lustar 00000000000000fdroidserver-1.0.9/tests/source-files/com.nextcloud.client.dev/src/generic/fastlane/metadata/android/en-US/short_description.txtfdroidserver-1.0.9/tests/source-files/com.nextcloud.client.dev/src/generic/fastlane/metadata/android0000664000175000017500000000011613243530567033634 0ustar hanshans00000000000000The Nextcloud Android app gives you access to all your files in your Nextcloudfdroidserver-1.0.9/tests/source-files/osmandapp/0000775000175000017500000000000013324115531021647 5ustar hanshans00000000000000fdroidserver-1.0.9/tests/source-files/osmandapp/osmand/0000775000175000017500000000000013324115531023130 5ustar hanshans00000000000000fdroidserver-1.0.9/tests/source-files/osmandapp/osmand/build.gradle0000664000175000017500000002026413243530567025425 0ustar hanshans00000000000000apply plugin: 'com.android.application' // Global Parameters accepted // APK_NUMBER_VERSION - version number of apk // APK_VERSION - build number like #9999Z, for dev builds appended to app_version like 2.0.0 in no_translate.xml) // flavor Z : M=-master, D=-design, B=-Blackberry, MD=-main-default, MQA=-main-qt-arm, MQDA=-main-qt-default-arm, S=-sherpafy // TARGET_APP_NAME - app name // APP_EDITION - date stamp of builds // APP_FEATURES - features +play_market +gps_status -parking_plugin -blackberry -free_version -amazon // 1. To be done Filter fonts // // // // // // // Less important android { compileSdkVersion 21 buildToolsVersion "21.1.2" signingConfigs { development { storeFile file("../keystores/debug.keystore") storePassword "android" keyAlias "androiddebugkey" keyPassword "android" } publishing { storeFile file("/var/lib/jenkins/osmand_key") storePassword System.getenv("OSMAND_APK_PASSWORD") keyAlias "osmand" keyPassword System.getenv("OSMAND_APK_PASSWORD") } } defaultConfig { minSdkVersion 9 targetSdkVersion 21 versionCode System.getenv("APK_NUMBER_VERSION") ? System.getenv("APK_NUMBER_VERSION").toInteger() : versionCode //versionName already assigned in code //versionName System.getenv("APK_VERSION")? System.getenv("APK_VERSION").toString(): versionName } lintOptions { lintConfig file("lint.xml") abortOnError false warningsAsErrors false } // This is from OsmAndCore_android.aar - for some reason it's not inherited aaptOptions { // Don't compress any embedded resources noCompress "qz" } dexOptions { jumboMode = true } sourceSets { main { manifest.srcFile "AndroidManifest.xml" jni.srcDirs = [] jniLibs.srcDirs = ["libs"] aidl.srcDirs = ["src"] java.srcDirs = ["src"] resources.srcDirs = ["src"] renderscript.srcDirs = ["src"] res.srcDirs = ["res"] assets.srcDirs = ["assets"] } free { manifest.srcFile "AndroidManifest-free.xml" } legacy { jniLibs.srcDirs = ["libgnustl"] } } flavorDimensions "version", "coreversion", "abi" productFlavors { // ABI armv7 { flavorDimension "abi" ndk { abiFilter "armeabi-v7a" } } armv5 { flavorDimension "abi" ndk { abiFilter "armeabi" } } x86 { flavorDimension "abi" ndk { abiFilter "x86" } } mips { flavorDimension "abi" ndk { abiFilter "mips" } } fat { flavorDimension "abi" } // Version free { flavorDimension "version" applicationId "net.osmand" } full { flavorDimension "version" applicationId "net.osmand.plus" } // CoreVersion legacy { flavorDimension "coreversion" } qtcore { flavorDimension "coreversion" } qtcoredebug { flavorDimension "coreversion" } } buildTypes { debug { // proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-project.txt' // minifyEnabled true // proguardFiles 'proguard-project.txt' signingConfig signingConfigs.development } release { // proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-project.txt' // minifyEnabled true //proguardFiles 'proguard-project.txt' signingConfig signingConfigs.publishing } } } def replaceNoTranslate(line) { if (line.contains("\"app_name\"") && System.getenv("TARGET_APP_NAME")) { return line.replaceAll(">[^<]*<", ">" + System.getenv("TARGET_APP_NAME") + "<") } if (line.contains("\"app_edition\"") && System.getenv("APP_EDITION")) { return line.replaceAll(">[^<]*<", ">" + System.getenv("APP_EDITION") + "<") } if (line.contains("\"app_version\"") && System.getenv("APK_VERSION")) { return line.replaceAll(">[^<]*<", ">" + System.getenv("APK_VERSION") + "<") } if (line.contains("\"app_version\"") && System.getenv("APK_VERSION_SUFFIX")) { // appends build number to version number for dev builds return line.replaceAll("[^<]*<", ">" + System.getenv("APP_FEATURES") + "<") } return line; } task updateNoTranslate(type: Copy) { from('.') { include 'no_translate.xml' filter { line -> replaceNoTranslate(line); } } into 'res/values/' } task collectVoiceAssets(type: Sync) { from "../../resources/voice" into "assets/voice" include "**/*.p" } task collectHelpContentsAssets(type: Sync) { from "../../help/help" into "assets/help" include "*.html" include "images/**/*.png" from "assets/" into "assets/help" include "style.css" } task collectRoutingResources(type: Sync) { from "../../resources/routing" into "src/net/osmand/router" include "*.xml" } task collectMiscResources(type: Copy) { into "src/net/osmand/osm" from("../../resources/obf_creation") { include "rendering_types.xml" } from("../../resources/poi") { include "poi_types.xml" } } task collectRenderingStylesResources(type: Sync) { from "../../resources/rendering_styles" into "src/net/osmand/render" include "*.xml" } task collectRegionsInfoResources(type: Copy) { from "../../resources/countries-info" into "src/net/osmand/map" include "regions.ocbf" } task copyStyleIcons(type: Copy) { from "../../resources/rendering_styles/style-icons/" into "res/" include "**/*.png" } task collectExternalResources << {} collectExternalResources.dependsOn collectVoiceAssets, collectHelpContentsAssets, collectRoutingResources, collectRenderingStylesResources, collectRegionsInfoResources, collectMiscResources, copyStyleIcons, updateNoTranslate // tasks.whenTaskAdded { task -> // if (task.name.startsWith("generate") && task.name.endsWith("Resources")) { // task.dependsOn collectExternalResources // } // } // Legacy core build import org.apache.tools.ant.taskdefs.condition.Os task buildOsmAndCore(type: Exec) { description "Build Legacy OsmAndCore" if (!Os.isFamily(Os.FAMILY_WINDOWS)) { commandLine "bash", file("./old-ndk-build.sh").getAbsolutePath() } else { commandLine "cmd", "/c", "echo", "Not supported" } } task cleanupDuplicatesInCore() { dependsOn buildOsmAndCore // doesn't work for legacy debug builds doLast { file("libgnustl/armeabi").mkdirs() file("libs/armeabi/libgnustl_shared.so").renameTo(file("libgnustl/armeabi/libgnustl_shared.so")) file("libgnustl/armeabi-v7a").mkdirs() file("libs/armeabi-v7a/libgnustl_shared.so").renameTo(file("libgnustl/armeabi-v7a/libgnustl_shared.so")) file("libgnustl/mips").mkdirs() file("libs/mips/libgnustl_shared.so").renameTo(file("libgnustl/mips/libgnustl_shared.so")) file("libgnustl/x86").mkdirs() file("libs/x86/libgnustl_shared.so").renameTo(file("libgnustl/x86/libgnustl_shared.so")) } } tasks.withType(JavaCompile) { compileTask -> compileTask.dependsOn << [collectExternalResources, buildOsmAndCore, cleanupDuplicatesInCore] } clean.dependsOn 'cleanNoTranslate' task cleanNoTranslate() { delete ('res/values/no_translate.xml') } repositories { ivy { name = "OsmAndBinariesIvy" url = "http://builder.osmand.net" layout "pattern", { artifact "ivy/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]" } } // mavenCentral() } dependencies { compile project(path: ":OsmAnd-java", configuration: "android") compile project(":eclipse-compile:appcompat") compile fileTree( dir: "libs", include: ["*.jar"], exclude: [ "QtAndroid-bundled.jar", "QtAndroidAccessibility-bundled.jar", "OsmAndCore_android.jar", "OsmAndCore_wrapper.jar"]) // compile "com.github.ksoichiro:android-observablescrollview:1.5.0" // compile "com.android.support:appcompat-v7:21.0.3" // compile "com.github.shell-software:fab:1.0.5" legacyCompile "net.osmand:OsmAndCore_android:0.1-SNAPSHOT@jar" qtcoredebugCompile "net.osmand:OsmAndCore_androidNativeDebug:0.1-SNAPSHOT@aar" qtcoredebugCompile "net.osmand:OsmAndCore_android:0.1-SNAPSHOT@aar" qtcoreCompile "net.osmand:OsmAndCore_androidNativeRelease:0.1-SNAPSHOT@aar" qtcoreCompile "net.osmand:OsmAndCore_android:0.1-SNAPSHOT@aar" } fdroidserver-1.0.9/tests/source-files/com.kunzisoft.testcase/0000775000175000017500000000000013324115531024310 5ustar hanshans00000000000000fdroidserver-1.0.9/tests/source-files/com.kunzisoft.testcase/build.gradle0000664000175000017500000000420613303240575026575 0ustar hanshans00000000000000apply plugin: 'com.android.application' android { compileSdkVersion 27 defaultConfig { applicationId "com.kunzisoft.fdroidtest.applicationidsuffix" minSdkVersion 14 targetSdkVersion 27 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled = false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } dexOptions { } flavorDimensions "tier" productFlavors { libre { applicationIdSuffix = ".libre" versionNameSuffix "-libre" buildConfigField "boolean", "FULL_VERSION", "true" buildConfigField "boolean", "CLOSED_STORE", "false" // ApplicationId : com.kunzisoft.fdroidtest.applicationidsuffix.libre // Version code : 1 // Version name : 1.0-libre } pro { applicationIdSuffix = ".pro" versionCode 20180430 versionName "20180430-pro" buildConfigField "boolean", "FULL_VERSION", "true" buildConfigField "boolean", "CLOSED_STORE", "true" // ApplicationId : com.kunzisoft.fdroidtest.applicationidsuffix.pro // Version code : 20180430 // Version name : 20180430-pro } free { versionNameSuffix "-free" buildConfigField "boolean", "FULL_VERSION", "false" buildConfigField "boolean", "CLOSED_STORE", "true" // ApplicationId : com.kunzisoft.fdroidtest.applicationidsuffix // Version code : 1 // Version name : 1.0-free } } } dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation 'com.android.support:appcompat-v7:27.1.1' implementation 'com.android.support.constraint:constraint-layout:1.1.0' testImplementation 'junit:junit:4.12' androidTestImplementation 'com.android.support.test:runner:1.0.2' androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' } fdroidserver-1.0.9/tests/source-files/com.nextcloud.client/0000775000175000017500000000000013324115531023724 5ustar hanshans00000000000000fdroidserver-1.0.9/tests/source-files/com.nextcloud.client/src/0000775000175000017500000000000013324115531024513 5ustar hanshans00000000000000fdroidserver-1.0.9/tests/source-files/com.nextcloud.client/src/versionDev/0000775000175000017500000000000013324115531026637 5ustar hanshans00000000000000fdroidserver-1.0.9/tests/source-files/com.nextcloud.client/src/versionDev/fastlane/0000775000175000017500000000000013324115531030434 5ustar hanshans00000000000000fdroidserver-1.0.9/tests/source-files/com.nextcloud.client/src/versionDev/fastlane/metadata/0000775000175000017500000000000013324115531032214 5ustar hanshans00000000000000fdroidserver-1.0.9/tests/source-files/com.nextcloud.client/src/versionDev/fastlane/metadata/android/0000775000175000017500000000000013324115531033634 5ustar hanshans00000000000000././@LongLink0000000000000000000000000000015300000000000011214 Lustar 00000000000000fdroidserver-1.0.9/tests/source-files/com.nextcloud.client/src/versionDev/fastlane/metadata/android/en-US/fdroidserver-1.0.9/tests/source-files/com.nextcloud.client/src/versionDev/fastlane/metadata/android/0000775000175000017500000000000013324115531033634 5ustar hanshans00000000000000././@LongLink0000000000000000000000000000016400000000000011216 Lustar 00000000000000fdroidserver-1.0.9/tests/source-files/com.nextcloud.client/src/versionDev/fastlane/metadata/android/en-US/title.txtfdroidserver-1.0.9/tests/source-files/com.nextcloud.client/src/versionDev/fastlane/metadata/android/0000664000175000017500000000001513243530567033644 0ustar hanshans00000000000000Nextcloud Dev././@LongLink0000000000000000000000000000017700000000000011222 Lustar 00000000000000fdroidserver-1.0.9/tests/source-files/com.nextcloud.client/src/versionDev/fastlane/metadata/android/en-US/full_description.txtfdroidserver-1.0.9/tests/source-files/com.nextcloud.client/src/versionDev/fastlane/metadata/android/0000664000175000017500000000111213243530567033643 0ustar hanshans00000000000000The Open Source Nextcloud Android app allows you to access all your files on your Nextcloud.\nThis is a dev version of the official Nextcloud app and includes brand-new, untested features which might lead to instabilities and data loss. The app is designed for users willing to test the new features and to report bugs if they occur. Do not use it for your productive work!\n\nThe dev version can be installed alongside the official Nextcloud app which is available at F-Droid, too. Once a day it is checked if the source code was updated, so there can be longer pauses between builds. ././@LongLink0000000000000000000000000000020000000000000011205 Lustar 00000000000000fdroidserver-1.0.9/tests/source-files/com.nextcloud.client/src/versionDev/fastlane/metadata/android/en-US/short_description.txtfdroidserver-1.0.9/tests/source-files/com.nextcloud.client/src/versionDev/fastlane/metadata/android/0000664000175000017500000000011713243530567033647 0ustar hanshans00000000000000The Nextcloud Dev app is a development snapshot and can be installed parallel. fdroidserver-1.0.9/tests/source-files/com.nextcloud.client/src/generic/0000775000175000017500000000000013324115531026127 5ustar hanshans00000000000000fdroidserver-1.0.9/tests/source-files/com.nextcloud.client/src/generic/fastlane/0000775000175000017500000000000013324115531027724 5ustar hanshans00000000000000fdroidserver-1.0.9/tests/source-files/com.nextcloud.client/src/generic/fastlane/metadata/0000775000175000017500000000000013324115531031504 5ustar hanshans00000000000000fdroidserver-1.0.9/tests/source-files/com.nextcloud.client/src/generic/fastlane/metadata/android/0000775000175000017500000000000013324115531033124 5ustar hanshans00000000000000././@LongLink0000000000000000000000000000015000000000000011211 Lustar 00000000000000fdroidserver-1.0.9/tests/source-files/com.nextcloud.client/src/generic/fastlane/metadata/android/en-US/fdroidserver-1.0.9/tests/source-files/com.nextcloud.client/src/generic/fastlane/metadata/android/en-0000775000175000017500000000000013324115531033524 5ustar hanshans00000000000000././@LongLink0000000000000000000000000000016100000000000011213 Lustar 00000000000000fdroidserver-1.0.9/tests/source-files/com.nextcloud.client/src/generic/fastlane/metadata/android/en-US/title.txtfdroidserver-1.0.9/tests/source-files/com.nextcloud.client/src/generic/fastlane/metadata/android/en-0000664000175000017500000000001113243530567033530 0ustar hanshans00000000000000Nextcloud././@LongLink0000000000000000000000000000017400000000000011217 Lustar 00000000000000fdroidserver-1.0.9/tests/source-files/com.nextcloud.client/src/generic/fastlane/metadata/android/en-US/full_description.txtfdroidserver-1.0.9/tests/source-files/com.nextcloud.client/src/generic/fastlane/metadata/android/en-0000664000175000017500000000206113243530567033537 0ustar hanshans00000000000000The copyleft libre software Nextcloud Android app, gives you access to all the files in your Nextcloud.\n\nFeatures:\n* Easy, modern interface, suited to the theme of your server\n* Upload files to your Nextcloud server\n* Share them with others\n* Keep your favorite files and folders synced\n* Search across all folders on your server\n* Auto Upload for photos and videos taken by your device\n* Keep up to date with notifications\n* Multi-account support\n* Secure access to your data with fingerprint or PIN\n* Integration with DAVdroid for easy setup of calendar & Contacts synchronization\n\nPlease report all issues at https://github.com/nextcloud/android/issues and discuss this app at https://help.nextcloud.com/c/clients/android\n\nNew to Nextcloud? Nextcloud is a private file sync & share and communication server. It is libre software, and you can host it yourself or pay a company to do it for you. That way, you are in control of your photos, your calendar and contact data, your documents and everything else.\n\nCheck out Nextcloud at https://nextcloud.com././@LongLink0000000000000000000000000000017500000000000011220 Lustar 00000000000000fdroidserver-1.0.9/tests/source-files/com.nextcloud.client/src/generic/fastlane/metadata/android/en-US/short_description.txtfdroidserver-1.0.9/tests/source-files/com.nextcloud.client/src/generic/fastlane/metadata/android/en-0000664000175000017500000000011613243530567033536 0ustar hanshans00000000000000The Nextcloud Android app gives you access to all your files in your Nextcloudfdroidserver-1.0.9/tests/source-files/com.nextcloud.client/build.gradle0000664000175000017500000002110113303240575026202 0ustar hanshans00000000000000// Gradle build file // // This project was started in Eclipse and later moved to Android Studio. In the transition, both IDEs were supported. // Due to this, the files layout is not the usual in new projects created with Android Studio / gradle. This file // merges declarations usually split in two separates build.gradle file, one for global settings of the project in // its root folder, another one for the app module in subfolder of root. buildscript { repositories { jcenter() maven { url 'https://oss.sonatype.org/content/repositories/snapshots/' } google() } dependencies { classpath 'com.android.tools.build:gradle:3.0.1' classpath 'com.google.gms:google-services:3.0.0' } } apply plugin: 'com.android.application' apply plugin: 'checkstyle' apply plugin: 'pmd' apply plugin: 'findbugs' configurations.all { // check for updates every build resolutionStrategy.cacheChangingModulesFor 0, 'seconds' } ext { supportLibraryVersion = '26.1.0' googleLibraryVersion = '11.2.2' travisBuild = System.getenv("TRAVIS") == "true" // allows for -Dpre-dex=false to be set preDexEnabled = "true".equals(System.getProperty("pre-dex", "true")) } repositories { jcenter() maven { url "https://jitpack.io" } maven { url 'https://oss.sonatype.org/content/repositories/snapshots/' } google() flatDir { dirs 'libs' } } android { lintOptions { abortOnError false htmlReport true htmlOutput file("$project.buildDir/reports/lint/lint.html") disable 'MissingTranslation' } dexOptions { javaMaxHeapSize "4g" } compileSdkVersion 26 buildToolsVersion '26.0.2' defaultConfig { testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" // arguments to be passed to functional tests testInstrumentationRunnerArgument "TEST_USER", "\"$System.env.OCTEST_APP_USERNAME\"" testInstrumentationRunnerArgument "TEST_PASSWORD", "\"$System.env.OCTEST_APP_PASSWORD\"" testInstrumentationRunnerArgument "TEST_SERVER_URL", "\"$System.env.OCTEST_SERVER_BASE_URL\"" multiDexEnabled true versionCode = 20000099 versionName = "2.0.0" // adapt structure from Eclipse to Gradle/Android Studio expectations; // see http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Configuring-the-Structure flavorDimensions "default" productFlavors { // used for f-droid generic { applicationId 'com.nextcloud.client' dimension "default" } gplay { applicationId 'com.nextcloud.client' dimension "default" } modified { // structure is: // domain tld // domain name // .client applicationId 'com.custom.client' dimension "default" } versionDev { applicationId "com.nextcloud.android.beta" dimension "default" versionCode 20171223 versionName "20171223" } } configurations { modifiedCompile } } // adapt structure from Eclipse to Gradle/Android Studio expectations; // see http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Configuring-the-Structure dexOptions { // Skip pre-dexing when running on Travis CI or when disabled via -Dpre-dex=false. preDexLibraries = preDexEnabled && !travisBuild } packagingOptions { exclude 'META-INF/LICENSE.txt' exclude 'META-INF/LICENSE' } task checkstyle(type: Checkstyle) { configFile = file("${rootProject.projectDir}/checkstyle.xml") configProperties.checkstyleSuppressionsPath = file("${project.rootDir}/config/quality/checkstyle/suppressions.xml").absolutePath source 'src' include '**/*.java' exclude '**/gen/**' classpath = files() } task pmd(type: Pmd) { ruleSetFiles = files("${project.rootDir}/pmd-ruleset.xml") ignoreFailures = false ruleSets = [] source 'src' include '**/*.java' exclude '**/gen/**' reports { xml.enabled = false html.enabled = true xml { destination = file("$project.buildDir/reports/pmd/pmd.xml") } html { destination = file("$project.buildDir/reports/pmd/pmd.html") } } } task findbugs(type: FindBugs) { ignoreFailures = false effort = "max" reportLevel = "high" classes = files("$project.buildDir/intermediates/classes") excludeFilter = new File("${project.rootDir}/findbugs-filter.xml") source 'src' include '**/*.java' exclude '**/gen/**' reports { xml.enabled = false html.enabled = true html { destination = file("$project.buildDir/reports/findbugs/findbugs.html") } } classpath = files() } check.dependsOn 'checkstyle', 'findbugs', 'pmd', 'lint' compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } } dependencies { /// dependencies for app building implementation 'com.android.support:multidex:1.0.2' implementation 'com.github.nextcloud:android-library:1.0.33' versionDevImplementation 'com.github.nextcloud:android-library:master-SNAPSHOT' // use always latest master implementation "com.android.support:support-v4:${supportLibraryVersion}" implementation "com.android.support:design:${supportLibraryVersion}" implementation 'com.jakewharton:disklrucache:2.0.2' implementation "com.android.support:appcompat-v7:${supportLibraryVersion}" implementation "com.android.support:cardview-v7:${supportLibraryVersion}" implementation "com.android.support:exifinterface:${supportLibraryVersion}" implementation 'com.github.tobiasKaminsky:android-floating-action-button:1.10.2' implementation 'com.github.albfernandez:juniversalchardet:v2.0.0' implementation 'com.google.code.findbugs:annotations:2.0.1' implementation 'commons-io:commons-io:2.5' implementation 'com.github.evernote:android-job:v1.2.0' implementation 'com.jakewharton:butterknife:8.5.1' annotationProcessor 'com.jakewharton:butterknife-compiler:8.5.1' implementation 'org.greenrobot:eventbus:3.0.0' implementation 'com.googlecode.ez-vcard:ez-vcard:0.10.2' implementation 'org.lukhnos:nnio:0.2' // uncomment for gplay, modified // implementation "com.google.firebase:firebase-messaging:${googleLibraryVersion}" // implementation "com.google.android.gms:play-services-base:${googleLibraryVersion}" // implementation "com.google.android.gms:play-services-gcm:${googleLibraryVersion}" // implementation "com.google.firebase:firebase-core:${googleLibraryVersion}" implementation 'org.parceler:parceler-api:1.1.6' annotationProcessor 'org.parceler:parceler:1.1.6' implementation 'com.github.bumptech.glide:glide:3.7.0' implementation 'com.caverock:androidsvg:1.2.1' implementation "com.android.support:support-annotations:${supportLibraryVersion}" /// dependencies for local unit tests testImplementation 'junit:junit:4.12' testImplementation 'org.mockito:mockito-core:1.10.19' /// dependencies for instrumented tests // JUnit4 Rules androidTestImplementation 'com.android.support.test:rules:1.0.1' // Android JUnit Runner androidTestImplementation 'com.android.support.test:runner:1.0.1' // Espresso core androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1' // UIAutomator - for cross-app UI tests, and to grant screen is turned on in Espresso tests //androidTestImplementation 'com.android.support.test.uiautomator:uiautomator-v18:2.1.2' // fix conflict in dependencies; see http://g.co/androidstudio/app-test-app-conflict for details //androidTestImplementation "com.android.support:support-annotations:${supportLibraryVersion}" implementation 'org.jetbrains:annotations:15.0' } configurations.all { resolutionStrategy.cacheChangingModulesFor 0, 'seconds' } tasks.withType(Test) { /// increased logging for tests testLogging { events "passed", "skipped", "failed" } } // uncomment for gplay, modified (must be at the bottom) //apply plugin: 'com.google.gms.google-services' fdroidserver-1.0.9/tests/source-files/firebase-whitelisted/0000775000175000017500000000000013324115531023770 5ustar hanshans00000000000000fdroidserver-1.0.9/tests/source-files/firebase-whitelisted/app/0000775000175000017500000000000013324115531024550 5ustar hanshans00000000000000fdroidserver-1.0.9/tests/source-files/firebase-whitelisted/app/build.gradle0000664000175000017500000000015513303240575027034 0ustar hanshans00000000000000dependencies { compile 'com.firebase:firebase-jobdispatcher:0.8.4' testCompile 'junit:junit:4.12' } fdroidserver-1.0.9/tests/source-files/firebase-whitelisted/build.gradle0000664000175000017500000000031113303240575026246 0ustar hanshans00000000000000buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:2.3.3' } } allprojects { repositories { jcenter() } } fdroidserver-1.0.9/tests/source-files/open-keychain/0000775000175000017500000000000013324115531022417 5ustar hanshans00000000000000fdroidserver-1.0.9/tests/source-files/open-keychain/open-keychain/0000775000175000017500000000000013324115531025151 5ustar hanshans00000000000000fdroidserver-1.0.9/tests/source-files/open-keychain/open-keychain/OpenKeychain/0000775000175000017500000000000013324115531027526 5ustar hanshans00000000000000fdroidserver-1.0.9/tests/source-files/open-keychain/open-keychain/OpenKeychain/build.gradle0000664000175000017500000002710113243530567032020 0ustar hanshans00000000000000apply plugin: 'com.android.application' apply plugin: 'witness' apply plugin: 'jacoco' apply plugin: 'com.github.kt3k.coveralls' dependencies { // NOTE: Always use fixed version codes not dynamic ones, e.g. 0.7.3 instead of 0.7.+, see README for more information // NOTE: libraries are pinned to a specific build, see below // from local Android SDK compile 'com.android.support:support-v4:22.1.1' compile 'com.android.support:appcompat-v7:22.1.1' compile 'com.android.support:recyclerview-v7:22.1.0' compile 'com.android.support:cardview-v7:22.1.0' // Unit tests in the local JVM with Robolectric // https://developer.android.com/training/testing/unit-testing/local-unit-tests.html // https://github.com/nenick/AndroidStudioAndRobolectric // http://www.vogella.com/tutorials/Robolectric/article.html testCompile 'junit:junit:4.12' testCompile 'org.robolectric:robolectric:3.0-rc3' // UI testing with Espresso androidTestCompile 'com.android.support.test:runner:0.3' androidTestCompile 'com.android.support.test:rules:0.3' androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2' androidTestCompile ('com.android.support.test.espresso:espresso-contrib:2.2') { exclude group: 'com.android.support', module: 'appcompat' exclude group: 'com.android.support', module: 'support-v4' exclude module: 'recyclerview-v7' } // Temporary workaround for bug: https://code.google.com/p/android-test-kit/issues/detail?id=136 // from https://github.com/googlesamples/android-testing/blob/master/build.gradle#L21 configurations.all { resolutionStrategy.force 'com.android.support:support-annotations:22.1.1' } // JCenter etc. compile 'com.eftimoff:android-patternview:1.0.1@aar' compile 'com.journeyapps:zxing-android-embedded:2.3.0@aar' compile 'com.journeyapps:zxing-android-integration:2.3.0@aar' compile 'com.google.zxing:core:3.2.0' compile 'com.jpardogo.materialtabstrip:library:1.0.9' compile 'com.getbase:floatingactionbutton:1.9.0' compile 'org.commonjava.googlecode.markdown4j:markdown4j:2.2-cj-1.0' compile 'com.splitwise:tokenautocomplete:1.3.3@aar' compile 'se.emilsjolander:stickylistheaders:2.6.0' compile 'org.sufficientlysecure:html-textview:1.1' compile 'com.mikepenz.materialdrawer:library:2.8.2@aar' compile 'com.mikepenz.iconics:library:0.9.1@aar' compile 'com.mikepenz.iconics:octicons-typeface:2.2.0@aar' compile 'com.mikepenz.iconics:meteocons-typeface:1.1.1@aar' compile 'com.mikepenz.iconics:community-material-typeface:1.0.0@aar' compile 'com.nispok:snackbar:2.10.8' // libs as submodules compile project(':extern:openpgp-api-lib:openpgp-api') compile project(':extern:openkeychain-api-lib:openkeychain-intents') compile project(':extern:spongycastle:core') compile project(':extern:spongycastle:pg') compile project(':extern:spongycastle:pkix') compile project(':extern:spongycastle:prov') compile project(':extern:minidns') compile project(':extern:KeybaseLib:Lib') compile project(':extern:safeslinger-exchange') } // Output of ./gradlew -q calculateChecksums // Comment out the libs referenced as git submodules! dependencyVerification { verify = [ 'com.android.support:support-v4:1e2e4d35ac7fd30db5ce3bc177b92e4d5af86acef2ef93e9221599d733346f56', 'com.android.support:appcompat-v7:9a2355537c2f01cf0b95523605c18606b8d824017e6e94a05c77b0cfc8f21c96', 'com.android.support:recyclerview-v7:522d323079a29bcd76173bd9bc7535223b4af3e5eefef9d9287df1f9e54d0c10', 'com.android.support:cardview-v7:8dc99af71fec000baa4470c3907755264f15f816920861bc015b2babdbb49807', 'com.eftimoff:android-patternview:cec80e7265b8d8278b3c55b5fcdf551e4600ac2c8bf60d8dd76adca538af0b1e', 'com.journeyapps:zxing-android-embedded:702a4f58154dbd9baa80f66b6a15410f7a4d403f3e73b66537a8bfb156b4b718', 'com.journeyapps:zxing-android-integration:562737821b6d34c899b6fd2234ce0a8a31e02ff1fd7c59f6211961ce9767c7c8', 'com.google.zxing:core:7fe5a8ff437635a540e56317649937b768b454795ce999ed5f244f83373dee7b', 'com.jpardogo.materialtabstrip:library:c6ef812fba4f74be7dc4a905faa4c2908cba261a94c13d4f96d5e67e4aad4aaa', 'com.getbase:floatingactionbutton:052aa2a94e49e5dccc97cb99f2add87e8698b84859f0e3ac181100c0bc7640ca', 'org.commonjava.googlecode.markdown4j:markdown4j:e952e825d29e1317d96f79f346bfb6786c7c5eef50bd26e54a80823704b62e13', 'com.splitwise:tokenautocomplete:20bee71cc59b3828eb000b684d46ddf738efd56b8fee453a509cd16fda42c8cb', 'se.emilsjolander:stickylistheaders:8c05981ec5725be33f7cee5e68c13f3db49cd5c75f1aaeb04024920b1ef96ad4', 'org.sufficientlysecure:html-textview:ca24b1522be88378634093815ce9ff1b4920c72e7513a045a7846e14069ef988', 'com.mikepenz.materialdrawer:library:970317ed1a3cb96317f7b8d62ff592b3103eb46dfd68d9b244e7143623dc6d7a', 'com.mikepenz.iconics:library:4698a36ee4c2af765d0a85779c61474d755b90d66a59020105b6760a8a909e9e', 'com.mikepenz.iconics:octicons-typeface:67ed7d456a9ce5f5307b85f955797bfb3dd674e2f6defb31c6b8bbe2ede290be', 'com.mikepenz.iconics:meteocons-typeface:39a8a9e70cd8287cdb119af57a672a41dd09240dba6697f5a0dbda1ccc33298b', 'com.mikepenz.iconics:community-material-typeface:f1c5afee5f0f10d66beb3ed0df977246a02a9c46de4e05d7c0264bcde53b6b7f', 'com.nispok:snackbar:80bebc8e5d8b3d728cd5f2336e2d0c1cc2a6b7dc4b55d36acd6b75a78265590a', // 'OpenKeychain.extern:openpgp-api-lib:f05a9215cdad3a6597e4c5ece6fcec92b178d218195a3e88d2c0937c48dd9580', // 'OpenKeychain.extern:openkeychain-api-lib:50f6ebb5452d3fdc7be137ccf857a0ff44d55539fcb7b91baef495766ed7f429', // 'com.madgag.spongycastle:core:df8fcc028a95ac5ffab3b78c9163f5cfa672e41cd50128ca55d458b6cfbacf4b', // 'com.madgag.spongycastle:pg:160b345b10a2c92dc731453eec87037377f66a8e14a0648d404d7b193c4e380d', // 'com.madgag.spongycastle:pkix:0b4f3301ea12dd9f25d71770e6ea9f75e0611bf53062543e47be5bc15340a7e4', // 'com.madgag.spongycastle:prov:7325942e0b39f5fb35d6380818eed4b826e7dfc7570ad35b696d778049d8c36a', // 'OpenKeychain.extern:minidns:77b1786d29469e3b21f9404827cab811edc857cd68bc732cd57f11307c332eae', // 'OpenKeychain.extern.KeybaseLib:Lib:c91cda4a75692d8664644cd17d8ac962ce5bc0e266ea26673a639805f1eccbdf', // 'OpenKeychain.extern:safeslinger-exchange:d222721bb35408daaab9f46449364b2657112705ee571d7532f81cbeb9c4a73f', // 'OpenKeychain.extern.snackbar:lib:52357426e5275412e2063bdf6f0e6b957a3ea74da45e0aef35d22d9afc542e23', 'com.android.support:support-annotations:7bc07519aa613b186001160403bcfd68260fa82c61cc7e83adeedc9b862b94ae', ] } android { compileSdkVersion rootProject.ext.compileSdkVersion buildToolsVersion rootProject.ext.buildToolsVersion defaultConfig { minSdkVersion 15 targetSdkVersion 22 versionCode 32300 versionName "3.2.3" applicationId "org.sufficientlysecure.keychain" // the androidjunitrunner is broken regarding coverage, see here: // https://code.google.com/p/android/issues/detail?id=170607 testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" // this workaround runner fixes the coverage problem, BUT doesn't work // with android studio single test execution. use it to generate coverage // data, but keep the other one otherwis // testInstrumentationRunner "org.sufficientlysecure.keychain.JacocoWorkaroundJUnitRunner" } compileOptions { sourceCompatibility JavaVersion.VERSION_1_7 targetCompatibility JavaVersion.VERSION_1_7 } buildTypes { release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' // Reference them in the java files with e.g. BuildConfig.ACCOUNT_TYPE. buildConfigField "String", "ACCOUNT_TYPE", "\"org.sufficientlysecure.keychain.account\"" // Reference them in .xml files. resValue "string", "account_type", "org.sufficientlysecure.keychain.account" } debug { applicationIdSuffix ".debug" // Reference them in the java files with e.g. BuildConfig.ACCOUNT_TYPE. buildConfigField "String", "ACCOUNT_TYPE", "\"org.sufficientlysecure.keychain.debug.account\"" // Reference them in .xml files. resValue "string", "account_type", "org.sufficientlysecure.keychain.debug.account" // Enable code coverage (Jacoco) testCoverageEnabled true } } /* * To sign release build, create file gradle.properties in ~/.gradle/ with this content: * * signingStoreLocation=/home/key.store * signingStorePassword=xxx * signingKeyAlias=alias * signingKeyPassword=xxx */ if (project.hasProperty('signingStoreLocation') && project.hasProperty('signingStorePassword') && project.hasProperty('signingKeyAlias') && project.hasProperty('signingKeyPassword')) { println "Found sign properties in gradle.properties! Signing build…" signingConfigs { release { storeFile file(signingStoreLocation) storePassword signingStorePassword keyAlias signingKeyAlias keyPassword signingKeyPassword } } buildTypes.release.signingConfig = signingConfigs.release } else { buildTypes.release.signingConfig = null } // NOTE: Lint is disabled because it slows down builds, // to enable it comment out the code at the bottom of this build.gradle lintOptions { // Do not abort build if lint finds errors abortOnError false checkAllWarnings true htmlReport true htmlOutput file('lint-report.html') } // Disable preDexing, causes com.android.dx.cf.iface.ParseException: bad class file magic (cafebabe) or version (0034.0000) on some systems dexOptions { preDexLibraries = false } packagingOptions { exclude 'LICENSE.txt' } } // apply plugin: 'spoon' task jacocoTestReport(type:JacocoReport) { group = "Reporting" description = "Generate Jacoco coverage reports" classDirectories = fileTree( dir: "${buildDir}/intermediates/classes/debug", excludes: ['**/R.class', '**/R$*.class', '**/*$ViewInjector*.*', '**/BuildConfig.*', '**/Manifest*.*'] ) sourceDirectories = files("${buildDir.parent}/src/main/java") additionalSourceDirs = files([ "${buildDir}/generated/source/buildConfig/debug", "${buildDir}/generated/source/r/debug" ]) executionData = files([ "${buildDir}/jacoco/testDebug.exec", "${buildDir}/outputs/code-coverage/connected/coverage.ec" ]) reports { xml.enabled = true html.enabled = true } } // Fix for: No report file available: [/home/travis/build/open-keychain/open-keychain/OpenKeychain/build/reports/cobertura/coverage.xml, /home/travis/build/open-keychain/open-keychain/OpenKeychain/build/reports/jacoco/test/jacocoTestReport.xml] coveralls { jacocoReportPath 'build/reports/jacoco/jacocoTestReport/jacocoTestReport.xml' } // NOTE: This disables Lint! tasks.whenTaskAdded { task -> if (task.name.contains('lint')) { task.enabled = false } } fdroidserver-1.0.9/tests/source-files/open-keychain/open-keychain/build.gradle0000664000175000017500000000243013243530567027441 0ustar hanshans00000000000000buildscript { repositories { jcenter() } dependencies { // NOTE: Always use fixed version codes not dynamic ones, e.g. 0.7.3 instead of 0.7.+, see README for more information classpath 'com.android.tools.build:gradle:1.2.3' classpath files('gradle-witness.jar') // bintray dependency to satisfy dependency of openpgp-api lib classpath 'com.novoda:bintray-release:0.2.7' classpath 'org.kt3k.gradle.plugin:coveralls-gradle-plugin:2.0.1' // classpath 'com.stanfy.spoon:spoon-gradle-plugin:1.0.2' } } allprojects { repositories { jcenter() } } task wrapper(type: Wrapper) { gradleVersion = '2.4' } subprojects { tasks.withType(Test) { maxParallelForks = 1 } } // Ignore tests for external spongycastle project(':extern:spongycastle') { subprojects { // Need to re-apply the plugin here otherwise the test property below can't be set. apply plugin: 'java' test.enabled = false } } // SDK Version and Build Tools used by all subprojects // See http://tools.android.com/tech-docs/new-build-system/tips#TOC-Controlling-Android-properties-of-all-your-modules-from-the-main-project. ext { compileSdkVersion = 22 buildToolsVersion = '22.0.1' } fdroidserver-1.0.9/tests/source-files/fdroid/0000775000175000017500000000000013324115531021134 5ustar hanshans00000000000000fdroidserver-1.0.9/tests/source-files/fdroid/fdroidclient/0000775000175000017500000000000013324115531023602 5ustar hanshans00000000000000fdroidserver-1.0.9/tests/source-files/fdroid/fdroidclient/AndroidManifest.xml0000664000175000017500000005003313243530567027406 0ustar hanshans00000000000000 fdroidserver-1.0.9/tests/source-files/fdroid/fdroidclient/build.gradle0000664000175000017500000002017213303240575026067 0ustar hanshans00000000000000apply plugin: 'com.android.application' if ( !hasProperty( 'sourceDeps' ) ) { logger.info "Setting up *binary* dependencies for F-Droid (if you'd prefer to build from source, pass the -PsourceDeps argument to gradle while building)." repositories { jcenter() // This is here until we sort out all dependencies from mavenCentral/jcenter. Once all of // the dependencies below have been sorted out, this can be removed. flatDir { dirs 'libs/binaryDeps' } } dependencies { compile 'com.android.support:support-v4:22.1.0', 'com.android.support:appcompat-v7:22.1.0', 'com.android.support:support-annotations:22.1.0', 'org.thoughtcrime.ssl.pinning:AndroidPinning:1.0.0', 'com.nostra13.universalimageloader:universal-image-loader:1.9.4', 'com.google.zxing:core:3.2.0', 'eu.chainfire:libsuperuser:1.0.0.201504231659', // We use a slightly modified spongycastle, see // openkeychain/spongycastle with some changes on top of 1.51.0.0 'com.madgag.spongycastle:pkix:1.51.0.0', 'com.madgag.spongycastle:prov:1.51.0.0', 'com.madgag.spongycastle:core:1.51.0.0' // Upstream doesn't have a binary on mavenCentral/jcenter yet: // https://github.com/kolavar/android-support-v4-preferencefragment/issues/13 compile(name: 'support-v4-preferencefragment-release', ext: 'aar') // Fork for F-Droid, including support for https. Not merged into upstream // yet (seems to be a little unsupported as of late), so not using mavenCentral/jcenter. compile(name: 'nanohttpd-2.1.0') // Upstream doesn't have a binary on mavenCentral. compile(name: 'zipsigner') // Project semi-abandoned, 3.4.1 is from 2011 and we use trunk from 2013 compile(name: 'jmdns') androidTestCompile 'commons-io:commons-io:2.2' } } else { logger.info "Setting up *source* dependencies for F-Droid (because you passed in the -PsourceDeps argument to gradle while building)." repositories { jcenter() } dependencies { compile project(':extern:AndroidPinning') compile project(':extern:UniversalImageLoader:library') compile project(':extern:libsuperuser:libsuperuser') compile project(':extern:nanohttpd:core') compile project(':extern:jmdns') compile project(':extern:zipsigner') compile project(':extern:zxing-core') compile( project(':extern:support-v4-preferencefragment') ) { exclude module: 'support-v4' } // Until the android team updates the gradle plugin version from 0.10.0 to // a newer version, we can't build this from source with our gradle version // of 1.0.0. They use API's which have been moved in the newer plugin. // So yes, this is a little annoying that our "source dependencies" include // a bunch of binaries from jcenter - but the ant build file (which is the // one used to build F-Droid which is distributed on https://f-droid.org // builds these from source - well - not support-v4). // // If the android team gets the build script working with the newer plugin, // then you can find the relevant portions of the ../build.gradle file that // include magic required to make it work at around about the v0.78 git tag. // They have since been removed to clean up the build file. compile 'com.android.support:support-v4:22.1.0', 'com.android.support:appcompat-v7:22.1.0', 'com.android.support:support-annotations:22.1.0' androidTestCompile 'commons-io:commons-io:2.2' } } task cleanBinaryDeps(type: Delete) { enabled = project.hasProperty('sourceDeps') description = "Removes all .jar and .aar files from F-Droid/libs/. Requires the sourceDeps property to be set (\"gradle -PsourceDeps cleanBinaryDeps\")" delete fileTree('libs/binaryDeps') { include '*.aar' include '*.jar' } } task binaryDeps(type: Copy, dependsOn: ':F-Droid:prepareReleaseDependencies') { enabled = project.hasProperty('sourceDeps') description = "Copies .jar and .aar files from subproject dependencies in extern/ to F-Droid/libs. Requires the sourceDeps property to be set (\"gradle -PsourceDeps binaryDeps\")" from ('../extern/' ) { include 'support-v4-preferencefragment/build/outputs/aar/support-v4-preferencefragment-release.aar', 'nanohttpd/core/build/libs/nanohttpd-2.1.0.jar', 'zipsigner/build/libs/zipsigner.jar', 'jmdns/build/libs/jmdns.jar', 'Support/v4/build/libs/support-v4.jar' } into 'libs/binaryDeps' includeEmptyDirs false eachFile { FileCopyDetails details -> // Don't copy to a sub folder such as libs/binaryDeps/Project/build/outputs/aar/project.aar, but // rather libs/binaryDeps/project.aar. details.path = details.name } } android { compileSdkVersion 21 buildToolsVersion '22.0.1' defaultConfig { flavorDimensions "default" productFlavors { devVersion { applicationId "org.fdroid.fdroid.dev" dimension "default" versionCode 949 versionName "0.95-dev" } } } sourceSets { main { manifest.srcFile 'AndroidManifest.xml' java.srcDirs = ['src'] resources.srcDirs = ['src'] aidl.srcDirs = ['src'] renderscript.srcDirs = ['src'] res.srcDirs = ['res'] assets.srcDirs = ['assets'] } androidTest.setRoot('test') androidTest { manifest.srcFile 'test/AndroidManifest.xml' java.srcDirs = ['test/src'] resources.srcDirs = ['test/src'] aidl.srcDirs = ['test/src'] renderscript.srcDirs = ['test/src'] res.srcDirs = ['test/res'] assets.srcDirs = ['test/assets'] } } buildTypes { release { minifyEnabled false } buildTypes { debug { debuggable true } } } compileOptions { compileOptions.encoding = "UTF-8" // Use Java 1.7, requires minSdk 8 sourceCompatibility JavaVersion.VERSION_1_7 targetCompatibility JavaVersion.VERSION_1_7 } lintOptions { checkReleaseBuilds false abortOnError false } // Enable all Android lint warnings gradle.projectsEvaluated { tasks.withType(JavaCompile) { options.compilerArgs << "-Xlint:all" } } } // This person took the example code below from another blogpost online, however // I lost the reference to it: // http://stackoverflow.com/questions/23297562/gradle-javadoc-and-android-documentation android.applicationVariants.all { variant -> task("generate${variant.name}Javadoc", type: Javadoc) { title = "$name $version API" description "Generates Javadoc for F-Droid." source = variant.javaCompile.source def sdkDir Properties properties = new Properties() File localProps = project.rootProject.file('local.properties') if (localProps.exists()) { properties.load(localProps.newDataInputStream()) sdkDir = properties.getProperty('sdk.dir') } else { sdkDir = System.getenv('ANDROID_HOME') } if (!sdkDir) { throw new ProjectConfigurationException("Cannot find android sdk. Make sure sdk.dir is defined in local.properties or the environment variable ANDROID_HOME is set.", null) } ext.androidJar = "${sdkDir}/platforms/${android.compileSdkVersion}/android.jar" classpath = files(variant.javaCompile.classpath.files) + files(ext.androidJar) options.links("http://docs.oracle.com/javase/7/docs/api/"); options.links("http://d.android.com/reference/"); exclude '**/BuildConfig.java' exclude '**/R.java' } } fdroidserver-1.0.9/tests/source-files/eu.siacs.conversations/0000775000175000017500000000000013324115531024273 5ustar hanshans00000000000000fdroidserver-1.0.9/tests/source-files/eu.siacs.conversations/metadata/0000775000175000017500000000000013324115531026053 5ustar hanshans00000000000000fdroidserver-1.0.9/tests/source-files/eu.siacs.conversations/metadata/en-US/0000775000175000017500000000000013324115531027002 5ustar hanshans00000000000000fdroidserver-1.0.9/tests/source-files/eu.siacs.conversations/metadata/en-US/name.txt0000664000175000017500000000001513303240575030463 0ustar hanshans00000000000000Conversationsfdroidserver-1.0.9/tests/source-files/eu.siacs.conversations/build.gradle0000664000175000017500000000675413303240575026572 0ustar hanshans00000000000000// Top-level build file where you can add configuration options common to all // sub-projects/modules. buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:2.3.3' } } apply plugin: 'com.android.application' repositories { jcenter() mavenCentral() maven { url 'https://maven.google.com' } } configurations { playstoreCompile freeCompile } ext { supportLibVersion = '27.0.2' } dependencies { compile project(':libs:MemorizingTrustManager') playstoreCompile 'com.google.android.gms:play-services-gcm:11.6.2' compile 'org.sufficientlysecure:openpgp-api:10.0' compile 'com.soundcloud.android:android-crop:1.0.1@aar' compile "com.android.support:support-v13:$supportLibVersion" compile "com.android.support:appcompat-v7:$supportLibVersion" compile "com.android.support:support-emoji:$supportLibVersion" freeCompile "com.android.support:support-emoji-bundled:$supportLibVersion" compile 'org.bouncycastle:bcmail-jdk15on:1.52' compile 'org.jitsi:org.otr4j:0.22' compile 'org.gnu.inet:libidn:1.15' compile 'com.google.zxing:core:3.2.1' compile 'com.google.zxing:android-integration:3.2.1' compile 'de.measite.minidns:minidns-hla:0.2.4' compile 'de.timroes.android:EnhancedListView:0.3.4' compile 'me.leolin:ShortcutBadger:1.1.19@aar' compile 'com.kyleduo.switchbutton:library:1.2.8' compile 'org.whispersystems:signal-protocol-java:2.6.2' compile 'com.makeramen:roundedimageview:2.3.0' compile "com.wefika:flowlayout:0.4.1" compile 'net.ypresto.androidtranscoder:android-transcoder:0.2.0' } ext { travisBuild = System.getenv("TRAVIS") == "true" preDexEnabled = System.getProperty("pre-dex", "true") } android { compileSdkVersion 26 buildToolsVersion "26.0.2" defaultConfig { minSdkVersion 14 targetSdkVersion 25 versionCode 245 versionName "1.23.1" archivesBaseName += "-$versionName" applicationId "eu.siacs.conversations" } dexOptions { // Skip pre-dexing when running on Travis CI or when disabled via -Dpre-dex=false. preDexLibraries = preDexEnabled && !travisBuild jumboMode true } compileOptions { sourceCompatibility JavaVersion.VERSION_1_7 targetCompatibility JavaVersion.VERSION_1_7 } productFlavors { playstore free } if(new File("signing.properties").exists()) { Properties props = new Properties() props.load(new FileInputStream(file("signing.properties"))) signingConfigs { release { storeFile file(props['keystore']) storePassword props['keystore.password'] keyAlias props['keystore.alias'] keyPassword props['keystore.password'] } } buildTypes.release.signingConfig = signingConfigs.release } lintOptions { disable 'MissingTranslation', 'InvalidPackage', 'MissingQuantity', 'AppCompatResource' } subprojects { afterEvaluate { if (getPlugins().hasPlugin('android') || getPlugins().hasPlugin('android-library')) { configure(android.lintOptions) { disable 'AndroidGradlePluginVersion', 'MissingTranslation' } } } } packagingOptions { exclude 'META-INF/BCKEY.DSA' exclude 'META-INF/BCKEY.SF' } } fdroidserver-1.0.9/tests/source-files/Zillode/0000775000175000017500000000000013324115531021267 5ustar hanshans00000000000000fdroidserver-1.0.9/tests/source-files/Zillode/syncthing-silk/0000775000175000017500000000000013324115531024235 5ustar hanshans00000000000000fdroidserver-1.0.9/tests/source-files/Zillode/syncthing-silk/build.gradle0000664000175000017500000000370013243530567026526 0ustar hanshans00000000000000/* * Copyright (c) 2015 OpenSilk Productions LLC * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { repositories { mavenCentral() jcenter() } dependencies { classpath 'com.android.tools.build:gradle:1.1.3' classpath 'me.tatarka:gradle-retrolambda:2.5.0' classpath 'org.robolectric:robolectric-gradle-plugin:1.0.1' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } allprojects { repositories { mavenCentral() jcenter() maven { url '../../m2/repository' } maven { url 'https://oss.sonatype.org/content/repositories/snapshots' } } } // Build config ext.compileSdkVersion = 22 ext.buildToolsVersion = "22.0.1" // defaultConfig ext.targetSdkVersion = 22 ext.supportLibVersion = "22.1.1" ext.dagger2Version = "2.0" ext.rxAndroidVersion = "0.23.0" ext.timberVersion = "2.5.0" ext.commonsLangVersion = "3.3.2" ext.butterKnifeVersion = "6.0.0" ext.commonsIoVersion = "2.4" ext.gsonVersion = "2.3" def gitSha() { return 'git rev-parse --short HEAD'.execute().text.trim() } def getDebugVersionSuffix() { return "${gitSha()}".isEmpty() ? "-SNAPSHOT" : "-SNAPSHOT-${gitSha()}" } fdroidserver-1.0.9/tests/source-files/at.bitfire.davdroid/0000775000175000017500000000000013324115531023507 5ustar hanshans00000000000000fdroidserver-1.0.9/tests/source-files/at.bitfire.davdroid/build.gradle0000664000175000017500000000676613303240575026011 0ustar hanshans00000000000000/* * Copyright (c) Ricki Hirner (bitfire web engineering). * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Public License v3.0 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html */ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' apply plugin: 'org.jetbrains.dokka-android' android { compileSdkVersion 27 buildToolsVersion '27.0.1' defaultConfig { applicationId "at.bitfire.davdroid" versionCode 197 buildConfigField "long", "buildTime", System.currentTimeMillis() + "L" buildConfigField "boolean", "customCerts", "true" minSdkVersion 19 // Android 4.4 targetSdkVersion 27 // Android 8.1 // when using this, make sure that notification icons are real bitmaps vectorDrawables.useSupportLibrary = true } flavorDimensions "type" productFlavors { standard { versionName "1.9.8.1-ose" buildConfigField "boolean", "customCerts", "true" buildConfigField "boolean", "customCertsUI", "true" } } buildTypes { debug { minifyEnabled false } release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' } } lintOptions { disable 'GoogleAppIndexingWarning' // we don't need Google indexing, thanks disable 'ImpliedQuantity', 'MissingQuantity' // quantities from Transifex may vary disable 'MissingTranslation', 'ExtraTranslation' // translations from Transifex are not always up to date disable "OnClick" // doesn't recognize Kotlin onClick methods disable 'Recycle' // doesn't understand Lombok's @Cleanup disable 'RtlEnabled' disable 'RtlHardcoded' disable 'Typos' } packagingOptions { exclude 'META-INF/DEPENDENCIES' exclude 'META-INF/LICENSE' } defaultConfig { testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } } dependencies { compile project(':cert4android') compile project(':dav4android') compile project(':ical4android') compile project(':vcard4android') compile "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version" compile 'com.android.support:appcompat-v7:27.0.2' compile 'com.android.support:cardview-v7:27.0.2' compile 'com.android.support:design:27.0.2' compile 'com.android.support:preference-v14:27.0.2' compile 'com.github.yukuku:ambilwarna:2.0.1' compile 'com.squareup.okhttp3:logging-interceptor:3.9.1' compile 'commons-io:commons-io:2.6' compile 'dnsjava:dnsjava:2.1.8' compile 'org.apache.commons:commons-lang3:3.6' compile 'org.apache.commons:commons-collections4:4.1' // for tests //noinspection GradleDynamicVersion androidTestCompile('com.android.support.test:runner:+') { exclude group: 'com.android.support', module: 'support-annotations' } //noinspection GradleDynamicVersion androidTestCompile('com.android.support.test:rules:+') { exclude group: 'com.android.support', module: 'support-annotations' } androidTestCompile 'junit:junit:4.12' androidTestCompile 'com.squareup.okhttp3:mockwebserver:3.9.1' testCompile 'junit:junit:4.12' testCompile 'com.squareup.okhttp3:mockwebserver:3.9.1' } fdroidserver-1.0.9/tests/signindex/0000775000175000017500000000000013324115531017255 5ustar hanshans00000000000000fdroidserver-1.0.9/tests/signindex/guardianproject-v1.jar0000664000175000017500000004674513243530567023512 0ustar hanshans00000000000000PKBJMETA-INF/MANIFEST.MFMLK-. K-*ϳR03r.JM,IMu X*h%&*8%krr%Z)d楤Ver{8d RpsJ3*w )7, ru 7 I-6PKePKBJ META-INF/1.SFmn0EH!J-1 PH"`A P{@LsrY(aOthV0w<#9(W' /5 :GI^cGDUldNAXxiQ@"FaMqqNWh9Y/ έE˴ PK6|PKBJMETA-INF/1.RSAUWYM!(0 H x(qhJQj0j^F" %0.m0% :ԅYw~{; "qQ=B<$ iA!0\Ȃ,K턈nݬaP@v0Pg!ى ¢p4:Оo i@rB"I8odvQ(7|7H 'v)Tȿ@xN?%ACC=CMOY=,ҷ-@PD# ,T;%)@l79es^7&?=q }$5Sv닧TxemY[ѡN8yqضD_6†وO#y У6`IG>4Ne%4~qzv35\S&useK(ku0꩛g2Ye|'MI얕ʭ_nTŊ{.`#UeUS(fcI(aVA(ބ{#4bgW $l߻&Qn=[*˹?^U?b$ ~6sI ItG(KMi!8ŲbROpCsZ@# Bw#//mEr$ v~4J}! ۊ0QBLyWI'`;,*ee7S:U $bp{b=jIyj˿1Ա:䫴?tUwnjc-&kaj2ayWH<$P]qn#pw5G&;ZGUXA\x O̿cPyFTwrݭgwrsQ CtnQ!r p[wb2C7TECs0kqڮ}DJlr4 lˉlU'9+!! ,`%&wB`޷M ^}o_ + -rFRGqɮ5*A(O.ƑrnK]C7r+@ ɚIkz0  1>_=bmm'3s +yⶍ+T6UMVv~Zzt\rJ!da͸9jD.6 RhϾ;ȿ̈́ʢ˦qܘ6T&/:|d?vr0^Cb^DlOZPV} RB Qx.käDIKVsμE%f]h=u;K&S:dZ;Q(zl,ufj(F7UZӽLDAB`(r 8kE/{ǀ@zFs88mPL~yiNEȹS&Q~##5IP:³US_c~Weѣ~s/E:B2Ō:DV+JFaӁzj0PKgbPKBJ index-v1.json}rȑg}t3$ )z{."P8HQˬKjgg;EuffYΣHMR27Id]2ME@qG!by"c td?d$v} 8zN*t=w|}P6·qz1L\7I-&i:O>}Ƒ~dn.M؟|*Dd>]Q#6CpDC!zG j!}v`9cY%tAh H ?i# S '{wHʦ9\Xt*X=p3?_ j4=LE!elq6QȌcX2uoqlD.;xߞsϵPh6i; i$iHc_{>f;&IF1q4^?@G{%|l}dS gao`17(ءž0 T}ٌ+=c%~Jv6cί|Q1uC1E56ԴxQ#HQ;9D^` |=wa+lbU5Y7!~{Pl@a5E*%?8~Jpp.yCcBdډ~+\;GX87,Ös.|f l@f$E$ć„,^@S &haRh1S(s&L.|,"&x~؀0F9{l rKd=?N`#/I$o>ͣWq(@ \|:(vA7<|8O61(u.T}07t&){hy#I_>ud4^YЏ>v(29|;8b%loIҁS@$J9ڏ3.SqԜ~xWRr=3;M]Lς/\Κ~_\&S nӧS]k$J/`49izYw4|{d1rvǣ.ONf M.-2Ң2?HKMSa=Y c~!x,:mS \{g Ѯav #!S<Bـ J89 ) 0M_0 L# sc3$ r^P XUKV-HhD EUș>5\Pἰ! 3 X1LH5*(QKa"G1Ҁ ͚9gARmV%Mے+ҀAуQ؂f3i5l&<t0πV wX1<j#EKf*H@t tdKtP,Y8/j݁0vI*'G]͈'3~4K-~h2'sB ]ki!7YZ/MMcOjMZ]_:`M!OqagmW- 8 $J WWiNBpB>-#h&G|+ӼMRcov_wӎYqesT;li&fd *B8,J4 j*gF,z~&4[B;}+c#Hд i'+5 ơ`&cP_\ *>L6~ќHHvV߹n ` =lwVPoKfNVG޶Vꘂ ۧt~Khc\K(<zELN`J!q/ 1;iۙ +/'C'@FAV@O_s hAΠv*Z"L(0j! (t5siNZp$]‰k+d[5zB MDNvkEp2-JB(g)2,s2pVp_vF;p(ȡ/&-"Ȯ>T@U-&f8 6 dStL,me"}A t&A$X ~ .˘fn &Z@eFTUl7qmј='-z`Am )vYۇ\Z&e|eh +;v_˺m]i; pD6Xd7քL>+7/UNG R7.-zjv@JGĚcY#׼y>}<~Brd^ک|?MW}99:7ImK7||8NGþX;g5Onk6Qdވ+wEKg5^׫|v2qDfɢ7uI=ϒzt5oo2Wu1UG~rc>=?'98m>M^97Ҵa/"cɪH:ir8Wvu/ϩ 5t tDjL#j_Qά97"FZ|!f(cpI;\7=L9l K2D=:X҃4Qg~0iʣj2 o 2oWu(-( M;>.FzU{,8=AiǷ[8ܹמּOG,8_.l d[B!apf5Ԏ3zt|=B SQm dqЖ8k 9#FSN|`Bʹ:tl"'%KŵaXNꬷcYxZOƺ]ow ƋY3<?2: ^/Ü Xn\3JR0wХGn~Db+~%’s.N Hn'LoEb0#CUOx!GhSfV;'M'w19z-@eA/|#aq84F3##,dO΋47hن0)AA eOѝeo4;ɗ \3,0]e1⯰01[.gf.Zh% Q1(.cЏCrgE 2"1u r39r@ ԠFߤ?{{)8D,ltnDwMa:n·Y2Y~"3kG'x0S`/Sy C)&4CvbeNa'36tĺ*]ۂ}B Pgθƽpѷvu$z7*q fdhw dq(E/8sAڰ)Wn0!qUұ8kۄ \|t7S+p?.vWTmsbx z-)@&^@†fJ^Pτ:HE^a19FL]r-<ۓdfw)O@%q:p)ס:B\a<治{@e ?Zoy6eKZiY9AZ\M`]b-FH~9ss~=(S\3GK[ʣ@865()b.()u=gB,FrL;k`񊻒6]}c 9k蘚O  l6Se!PoC$FBAGb.5ƅglF-˘ X;^(;$'qlozC]i6 fLg:;GB2di,#r 'I)lX.(t_EQ7G.gakݷ0cEC.S%9s giGeo^f'V|P|w~_WGR:O(o:s^뛓WW 4+ѾIґz|J1ɒŷWo҄r)1˜[\Pftm.Wۺ8kMҤ@ޕ/dKKLbo0Rb1e$?AW4N@L>)u{߹I`VS@ >0H1 [0/jWnr1G-l#B{\28>{-VGBeyE6K93ybL+{h#ʑ[=-:#Ps7v~QK M?_~N4i'HϾ~8_>1i ctc`F؝G0Xiv֓ C ;cB-`WL9KX.܋Dx<`^yV;Ho`=\edteJ٨Fr[QS3K咯"p?ӧ`"|Mń|g4(g @{8n)%aN)1Jy@}?GtQN&tu!y~ۡ!zY5 6&/mI>7w&/1j'ڳ?qHde+bsOᏈ \/ r ^K gYstx,x|~OPOL-+wz͆ 9hBUog_ȃ87WuQ~.e|Y?]34t]d]x'yyvrݬߺXQ3}v2)ƺ[dz=Ƿ9кy:;۽CQK/{TVxR&e4jDjK?Kn]dN^_.ԺM–_aqHolW/p< .m݉='˦g7Am{T-bvP~_ w[['vС+X.Js|e}]r y\W̡怏31h, \*VHC!Gr`2x# #>HmSa 4z*[b `p-.ġ/{ ky` q[>g@5WswG?`yXż#9?1qV@86x ?փAlm:5ISN=aK\(L>gu*tjiT _vx 7otFY8E5cvڙ7=p9Pu4mh+bN<1x{@1L# w\;kqB9?xu[v:5#R>w0!Z)S~~7XlA9*.G#RF J6@wN|P/ak' Gf0'0.$@?$i|ذ wN<<~R-g{Y:ah7kMWׄZ݀N NQa9w']H8wdH؊v_' E60_ܭI+n bmΠ@Gsf]3NDɰD$9+Spd^${qFxTf6p@S]$BNuĜ0߂e0NJ'vq$FAlB ]᛻*:^p@Ǜ.0r]-_>S(ָl8! Gfk|"09!hѵ*Ia@\#v.M;bo(+?Pr<,G(aʏ`ai/=ڣlm{`U %goi45 u?v~3伡~+z!+BY&I ]nK(l.I;j-|juK}(n_-tN8>'IEuB\95r&!1砜r\^S*k0_Ok%iAȔ?Y9/8nVЄO3 DR~%Я4<毭?ⴒn|q}N~ׄB>VumhH~v[Y2aHkU*N C 7O\o35JtDe[xǥ/WJsSB%??GHJkC0Qy1J)\`jpn'6?ahYle+v{Vhsv1#b~Yvu}y J6㍸a6BL-QeـZ>2cRk+ iM*1gDoYwm LHNɳr饄t2b5 2fц4 i \t֔(I:+c«P=yyoX^i72v+h 7pzff Qy/u(Յ5-=q?߰ENHom6> |i7B*-k Q=thCpiUQ\pv^*yl -}1eQTl_ mzX}6n)d ׎YckHƣ ǹ|L:/  aD']|/̻2 BYܮ~.tkJ'Wq~'dgBvrBzok܍ &0E w)H~<s`'O#W:x :0h`2fyM?FqY<],lkBy`Fsfi5Ee],gT[fxקb^nK,sgUrj'afy2@Z^WBe+ X4La&< %PϏĆ3b0% sh(_PZyCiD /D"W ܘy_L%pXxI̓o~Ih:*me\.6p%=i G/JfE:+xQ #f/n)|gIᓙsw%Ḿg)=_Xv328m hpv=(Vg zr8}q1Aw1꫃qEj_?Fiv.f񛇋΍{u^6n|E4ŃZm>2'3`"N/Ժч]QhZ,/i]eifݞv|2dKV_+v  oUM}i{;{L f*k5c'~|c^8V.v]G1BÔ{fW,l,~-%]lkYކJx-b*RMT$ !h]ڝ虚WwL>n~c1fQR G"Xl+ ^:yRNwF7&Q蒩֦؋\Vxe I/۾ m0_yZ)'^ ;Ex_ HX%Rxe^ٙU>JwI,BwV0I>V kTd e[s(]@kme^$5?|eXY =Z$eՃx"H,JClSY]JG1+VOEMh'AK^`P;_w 43;>1,_&tXɁ(O'~8ع>5u}V{IR-R}=t.a _Q:{gZb4WBb5sy^^{ <*qa} }w̲<8P^ T`D>+akZ>a5cs,Ðt`UTt.dc.(ZDIG 3xo$o["JrASWkл AY>"0b>˲~x >fm$( @ߝ"\,oKh{ 9Y RNJ 0JX7x-4Vc1yyXINr* !?A#f16O 3UFǃMPɦ> ] {eH1iY<;ݥT2;]ą j7__.y{ɅEu^{T5lvԂd>oD[0cWHfۭ+g0|X./z'rzڞCVYk+:NX drW7{#BJ\RvIzRuԥkZ޻σ_{z/GuTv9m4WקƳFluVpJMylC}YVWӑJ#}|j̜m>}щxew֨)r$˓Ac:4Nщ/v`|C7iyz)6?vY;>]GjM_F_߇+]߶J FzX&k?ŜLHVjwNh|{$312:}>JN./I|'[:׌!&j<xKPfG|Qjq>L~V,2X9|DgF‚p(mDe_^jh^*6~6w *tAg}y;{$t #Ͱ.Rܢe0 *LuJ_ u(ʐa25m{Ş8Ur tP7;;av^8OI1+X݄uNEE@T'47?;r6> -x>coRMEMoyM܍}0)j~# :XXddD$^z,(mC9M=u^|/\{[Yxq7_q_Z[?f\[:zsn׿n釼2^\ ]HV`wW.H5VYPx'PYvG~v}SM U/:\^{['1I0bYlC%=`Y󅯌Z{W#0@1V}|;a,9Pq㽑Cşfű^iƱ]n^`~'?2jſڿ>D^4* D%d DaXYAQQK5oբ\ީ~~ޤe>K#]*<:q<>tվGj+ēJt=?'asgJv6Fg8NkUWKy~ܿ9 <~_ӡ^ e<8'-ylzke:։w9/͋S0KXD6NVӶw5.ɼkÛ͠S;nLWarVz榾GH!0dthˑtE}p5 EBmW˗]8 {<aJPlOuwl{#!:*.Vqw_iϷM&n썃f&GyOFw'YtݵlCmi_j=\K(ۡ3> A;6=dbʛ&m=r/_po D]ƅ-'ƅȉ#yv~w!=٭½{z]WR2voԲ (OK$̯ +~]IC"#355*V]~ i!N,pvS"_:nwZn6lw;o7wjQ ᷖUn [ۍjѨ]ovvu5vlw߲Cm&Yvor `ug@A~ ۵oi^ybT5O~*G؈ȢZ=+xlXh/Jb|6oFy5d86؆aتi Xg9(K pS"nX5ʦb)YYYkFy5ꚬog6kDSȺc:L`(,h*z*+be:ȲkRM/`WfG`M{x?jwI}??03|ڙPgJW۶ *$c=pO =JX[ *SM-XhvlB JǔaRZ뾃{ou.nhh* /ş$Jpsf "djeP"D4\ T}Ke{(TU;&ag"*!&VTq` W (l"SȞp\LpmQ$"IOJdn S7^=I^̼Mm13̙۸hit*TզԐ 8s&1lݵaȢFށ;uU|v%]StI^¯h!bf}ަY9'{]L@;,L14m_;A=(%gԔL4tQL t[ OT ,:e٦1eU%jOzzEf &y"Ox@Ǵ-IMٵ JbjjW4lѥ&am".[H~ n j&oۼ]*vTh!T,[ 92M]sEwDLѶtzp$ITXc1%Ԏ"L);J`Fvt˂Ԕeː$tfP%KG:Hꚶ{vQDe['K5Uh,1l,SLْN"EVuGupa2 (}l*R7mנʬJ+TP5RG%KN簨F}5ְ|<^=h_3PdQ4D+֗ SVm3gY;C\G'˰,jˊQJ[EeӁF "DT}JG~7lH"dU34fQN70']ZTj6-i/R֩n[Da<Ӗ50M*[+HHxx(+Лlߠ75\ިAКY (΋RG1 Cڑz$nekKmD5tW^}莭c(L"AlY[U@8b#+;:UE75`o7 Mdޖ;Pۂ._ڛ,Tvj6bX4lbRXDjbQo% ;$,5ieoꉂ7E%إHzisJĥ(h&:xTPKLՖ\O 0\]b|jϓ⯮Ag~'R,S ﺝCcmC/:KmmYH/"/CvDY3-7RؤTmP-Ǒ-W4O=ЈΉh@6d3C}[_UU4^ ;!B|1/ak|z:QHuJ%@x&܂NMPTb(v Pߣc^5D|IF\m\=Q *Q\50e1&XYaNf>{/u PK0CPKBJeMETA-INF/MANIFEST.MFPKBJ6| META-INF/1.SFPKBJgbMETA-INF/1.RSAPKBJ0C p index-v1.jsonPKLfdroidserver-1.0.9/tests/signindex/unsigned.jar0000664000175000017500000004714413243530567021613 0ustar hanshans00000000000000PK5thJMETA-INF/MANIFEST.MFMLK-. K-*ϳR03r.JM,IMu X*h%&*8%krr%Z)d楤VUr{8d RJv Lɵ0( (N.,-s522PK5thJӗtMETA-INF/SOVA.SFmOO0$|gL c*lRus m)gWu^L}\Iͭ3`z ϔ%:ƩFBgThGhvNEv aI=BXL p /!4$"h2\ԀZy{HSSQ&yN+^*Q7u PK5thJ META-INF/PK5thJ`ZK index.xmlYs$˒WGf#Ȏ}ӧjlg^`5]TzO|_hwҤgI2j1qJ3YkVf" {^\b=|wѸ7 /0pC\$_GÞjKvҗnpKg`nï {$'/9|A,7q DAu((Gib`J(;L1(SsĐ"%3&B F1?C&)'|CpQPD%gkw_zZ@Hmq14/' "o Eh|Cp4iij4t4xC(z 0C,`$Q&ZZkXZ v\˜j?  ( #,!^T^~=c(8L$Ap``916RD0o0'@@h D 5+:MehD9cSz-jNcL44p#08F8\BG 0/$$ch3PUADA \3y b$p:7gH)-,\E 8{h+`>R)\75@O@5G4  Gz yJ uY ˍ \%)f XA<TMA@8 ~ J3.Rzo'x#"S#P0dP0p/@X’ܐXA^{ rx' CC&@`%`\0uBRb0 ^D ` X:F=` |J&)V*fRA,Qlx*LL0a"TReZd @DNo A`H'F0FP@~+p+1 *EᘀցRS s=LV`V_:-(xF@ PI/Q_n&?|4d|Y/ ps_^aF \y}qwɕqo2} cݍ;adž8vg/uwwtT=LR)KQx#s=zaܱc[3F?U8+×A_yihxG.J2ZM;yׁvЭۓ?@\cuo76sۗSjeW/7 G|/nɆxjү^N(Y?67_0~θ:>42s=nA{ ?C-nL &F*PФ?.Ae%(lgPh O@a# O2(`C[`Z(Q˼PY؉0K[^KKEd .(/y O-ek){ #ZjVF @wgCz6fp*<@a˅?B Tx:gm [&Xxzϖ`Aj"xk]Gm 2Y˂Jf(qA`cAYDg2WDZpAQ)ʀMn6DM2Djב e1K?gi"OÍP|yCޒTX?ghO緍 Ǎvr<D5ȽF'Án{ޭST慭N|$gFdEI<ϰ&3ьKR3U5;8XF(M YH#Yd㪬Q ӑÈK_ZCD*345ӫ]ɹq=vcaiobjPPXA1)kmƩӳˋw'v/>\_YwWN>TXw7/d{qpr?^u_䕞?9ޟy\beJxl hr*xl{wpEü9oy.|:x{0mŲYM-7;"?9ؽx=?Ί_%4e՛G'W翝_/hԞOy{?;A=U?GJ+Mwû3hBWBR, ulo{L="]%J|[0`5;)9B'u}1Eߔx<OƷ㞛S{a0Yr#[7Q+AmE!4H&j؀̵ߡ-`iPVYx:UCZB`\k󣐒Uw4WE)8cքxcpN`i+ >h$58]ϥKҞ1vY3[zq.#s߮"NCrkظV.ǃj}sve ^>ۃ O?=Nodp64~fK0Ҍ c6+Xv<[kKY^RlW3>\e: E&g1AtpFQ*$% '+CkLo̘׷a)<+1-9l ڭAFլT$[sfbcᑄduSe1𘎺mi"FSXꀭS)^婥lM9PV5%cmQ ސv0U?#jI0MOlm2[Pw:jde6.MMwpdGOc`&iS+ôIGarfstb'y<~?RQf|/E7k1Ġfr֔N9{w2t҃C#h_zdusCS:0bR?≮1΅8 !@!Y`D;Pt+| ҥ& C^uQҽ|>ioйE=i\..R?LM#`;ߝ~ȹWDI^iJ5PFKgQ`2qZߥ 7EPR)0q/Aϸ%x:y.gǷ&:| |-g7 &Guvug:w6$gu>\=9?]ůX*qv=kſ؟}m~;],ݭ)}hw'W,.WX,/~-VֻjĪkq~4¿zü/Q(vް4.=FqeG{GBqx7X'~bbU;3@юQȼR)+\ؚ@~*WRE[2LϓG/‹ɋ/v^݋Z(k(p\$Y#*HH(rtm"aL3^+|[J`)bؒV[Q*5UkؼI%) 0̥058W2_nOm#Q W s ?:xw|rҰ{Ovurzqptw9V9/{]{={p|)Y<]$(T̗_O(tO- -{S fT&6PIHq|MZ|YFߞ~OokFҍuU3N9A>a^,eHgxÔ TiFMvӶ$"1V"j0C\땣qDũ-8X$YT*G k(U^0*7 _s-ɻC,7 //ߜ߻zw~_Wήv8VUރ-o4kjʆݏOvVPZ>Új>;-\aGp!3FLTȥ"J+C3S1qDU{ĪPYêI⽲ |XFpN!ַ۫pj+!\缈?zXHU LSچ{HT|l*x(bfWB;%cN,2)%MJ1Ȫ)y&p\B(L,3CS@w[P%J21XRz(f)0<***F-A\pςRRwQVO7oߥBFǴjcJ1%`J2.;|C[.-™b\@Ź`B7|Ç Mwt|reX9/nm]FT4x?ˇd٫bRWY*9qSEI ж(ؽұjn&E7SJ ?[pz+1sjm_߾ꞞS{ͭ#3=wcsWP66}|sky:e)ZVlB. Fd)Qǫ{+)ԁ=a8#5^ 9RJ ă Sn|ަLI2Zt<LM@jR?q:'$}2GTju'p6F7'z tQCtpxYo8u䨺 @ke~_ј $x{ QTW3?h4!hyCEXވ 21rPi2FW0AD\^¨i JneɼԵ, liõܵ١>ӄU˗R׀`qc VڑIw64 ]P9W&[ _J1\xq>hJc=!:`-R(NJ绥ܴɅ7,IGb4&LW*VŦl*nx<s w0 W$ 2}S`uYAO"/9ߗv˫L -0Gga)SR6WBH\GRhI;M"t@zEQ+ݣ˔+tuJ]ewҧ4.m$)NG\ݞ|!&8GH R*g8.TlTw bJ"owX`mĬ a6x1DHvq-ijZFg婧v"Od'B*"9JXhU!g'ZCrն!cU%PDIfm!XQ|QSse@ҶqIǡlEVe<fnbc*1t):FԁyݚȞ]nw15)c"9y>6wqt`D='Ә%` \Ym*"8vN#& ]?MiS.""ehtS&Ў׵M*,/AO>GX8A?_s3 ?'~c8+$ QN*Vt%4j |av{Z2dsyRYQ4͠5HQlԶcbuX[/Y10XT'WǏP~p̂?Bovz[VvFGZX}ؖhkFb xښ$4:M6%v}초gTxÝ JH&LyY<$!-NGcfo9kvbTax\< Qo*>;}=E=*=PcZz An {J>P.NNsU ṙi^Sd?Z/YH8Z8. RӇahIi*ӥ[%=[?CIZ&ZEӳԷ˯v6cG{ë٢|Igrfrxb5#hQAY8eNh6h Mt+J`I=}fSMut5s&}@vy{pv~q\C+X<;d!q԰uTЏY~TvRPX{Ou&͸7ap]B~o{f˼2n7'#xk:u b NDieԒjy'*(k.Aa2 |֕k')'c=#W[BN$8ucRػ<:촛{{r^ Nyan~̉c?P_({X[zZ5)g^Ά7yOܥ%tsk~j由mqeԞ?1CX+LեڜѴK64Da$*X)qRYlp^ȭ\F4QiP,`#*P9WOYd/e- Fxux^,Nld>.fs ?#SM M]~_Y̽ي~5o߯>uayJkm66Â="yfH4cID WGM,8 B%;$LtQ4* g"|s# ꪽB2ɤS 6)E'{^YMk\iS 2Z%By)"JIq -At<\JyαRqFXaz㯖)b*echŻMc> xspx;#fg3,yk[CȋU`X d=XEYwAMkV zc(sL6WJ 2HVi0jmaf.A*eArrE)+ ,Qk8G)+jVpy?`oA2|KgZz;-̷Jlf5AT}yK=,>`=MJm/S}g;:jWv9@:oqJ}Bwf֎-ۦˠOWQx7nz>\-"~vx)nOevBKp^P+3&< ԅ\PI~hPe6(F9SD1c )xo `*S s WazhµX:kPeh R׷-DKUe8Jxr2޿#ϔ3LFwL'`O`S`OH !wđVʣ e6s̐0Sg-iƈĊ1+tKI'.~cԙ\l`~oPRykk /gqm0+[a ̂̉T;rͬO3TB_%y 3†#O t& 4fYutB#e4(^UcR)ˆC[#b#L1` km̓LP[bbN R/{3GoM{YD+q8STãÇl,C݂xjZA-yLN2(U0zUp?% Z˚zD@x6:z~VE|hUuHը E8!XD_ ]ǵtN]-=M]f.sGˏUiVGU7lƴI(d,?e;|%dEvty{h\/hnƄsr"m0iivڜ$x*Z͉"xNpGK9 "5z^Ŋ3iy;|gVݶMz"kFz/19j VzM&lK<`D K_yG| '&e?_=v>mu; +D_d9N|skU fF[nQس'sKg"#u бx-S~bH/G(P:CFxNH>PaHf;e2ޕo~aϹԆSJL \UZCUJ <p7,4zKPNRZH)c$hJ$1齩SK Lop7jL@gf B$kڴm^};kz2Tb`V{Ak\{r({<9,_l tM'-uNqVt~fU3hccNUegq9{a\YT!Lm(I]d8H4N”Q؆hTO,RfA*`v#C;g;j?הuU9WxZqjb0!0RB@a05ؘF )(/g'ZpV>z8MF## dHUp]Yʙ~k͛kenET,`-B@^Z-ro7߆ 30ilvDw˜;`Na5P?>W{ ;;X3vbm{4a+0|$*)e$0[0 jN)"pߞ2mSG۲1oN>@.Ў3UGi㵁).&J26"+P, ;QjVmDV OLZX zCo Nˡ0wnxr.~;W+GQ~m-F[̏U'YD1qF& ۛmy_/)\0 ֬H}lA뢴T+Hi&J0JAP`k "*qTS""(k\:To>$xFAD,!Ќ 䙒c+eޯ=qE)Z!}I,V *[5 +b <ڈg_ ?n Ak8ך Ґ,&^)X1\geTBN"a)5#&RTzl$1E&PAJ Ńr,h0hMXiIF${0-'h3cD^{?~)ʡ&Oo IS6Ԓt`K!7;}"!>}n QFW3 ,/trWp*.60kl[*`Clߺڶ4V*@CAy:A%JnJk{W G$eM#`tRs\ $N'i/*Tya*WFMذH]<8-nu]zaIQB:a'iPy;ng\&@G`~ ǝ!JFngܛGZt=dI婥wL~d2W:383XԽ M8RW{VZ0@NtHE!\;I3E1nǡ%bI(E2(&`qڲ*\s7 ~0Dꂞ棼QNI6(7y1}Ѹ36t鍼pnamt1f 4ifۙ<0NT'Χ1P(ҿd꼻&WO05 '\œ]ࠕ/Ő[; )hwێCG΍fHeBC@v:0zɗ_܅=ǹT]~{>k@|~4UQ}"rmu mb1 3 X}?O.pt -cWc ]c@z\⬯7ChF/b4nOҨd{Тp+LA(qֹo+MCaP0@J(4MQ ym vFי-ЕM)x{لڻK,?MN(׃nk1 V6(#ԓuEy]a܅a@єbӞ,d} ߽+VL1:20 mkP‰s&MD֜IrCSCroI稧p2xPTCb| &1vnf4:nzP2@{4a2'N7?BkD0c9y`ʫ>BƝw7Alzӛ?s҃ɑerӂf)5ԯQ܏(3_@ʼYsNIg̱ڜ-9y_9$|͒ R YJ NjgѿSi/$\>:~k{9m*?I_Lf⯅hLx,͓e^]l*vOZkzD^˸/.ڱ7' oPu?%,X1A}Mwwׯ_^ R&,t"(`-ߛwb@Ǡs5#}sryѹg Kznm<Z^^\̳܄ #$@Gþwj9,`iz Hgy q:T V 䢵FqnsL:RjluaL+ 0'IFMIIA(9Pr<nxER78ZTp)^y_&# Z %v++boz.kj]#bAOųzӴ5 5^!JsۍfZO6-~HX1T1ARШu:-I^wqKBYҊZ/(RL *c>wj$)w1Ph\Tn|{=xŚ;Q#$LX-!IY֤Y;ӟnLsZ] L{߯Y@)zo߷3maP&.:awZ82g0I0рV-=`ji@1> e!IrFPECY'ȶ A$G/$ؠt BZnF bS. ϸAJn T`W.*BQb-b|< Œh[8X\hЬ7U~o5! ퟝǝ,nq9-ѨZa)=@_"`)(\+Pqi}CZ=# fnlr~vW[J%LZuJ˦JFy܀ D8#SI)NxRC/%fȨ D<~ @1FXHB N`E}5u̹nxR1 +ԼvRQO$%ۻYƍ˱Q@+/vTzꃕC{݋Tydƍt&Ka {w 51Y(Ӌdр 2H t?פ5.H&9s 39DZYEcؐƑd J[T+ fE}1iXxȍ(HrʜK)#fdӶOʿv {:2_D[˺b)GC՛wgr{MЙF2mAN9_Y٪n"]lܭfpl9?ZFpziFf}Eۓe)Ynq o.'|1Rl{FJVp=qNbAyJN QYEu9V㱏GD1ab c"W%^ǃO noXf0+@Xz5#*ʂ<)4s{s}Q?QI-GFag|5{%K(7}A"ʼn+yhq wq=h vM fN7u*HZ8WTJz<*&i"dAdQ*'viu"/$KfeQ%+msz&OE)=-Db@R ıșE` G1#dPMwԸtG/1FՖ YJЈzf,>Ab=!. 0ĸ beKMYfY`gsd[њ7!kz>{~%[C??Pƕ{ڤLg%hH&@XyIQhQKJt:8%>"jU4y G%H*ұ2X@*/K-a˘KPK5thJMETA-INF/MANIFEST.MFPK5thJӗtMETA-INF/SOVA.SFPK5thJ META-INF/PK5thJ`ZK index.xmlPK\Mfdroidserver-1.0.9/tests/signindex/testy.jar0000664000175000017500000005311313243530567021140 0ustar hanshans00000000000000PK5thJMETA-INF/MANIFEST.MFMLK-. K-*ϳR03r.JM,IMu X*h%&*8%krr%Z)d楤VUr{8d RJv Lɵ0( (N.,-s522PKPK5thJMETA-INF/SOVA.SFmOO0$|gL c*lRus m)gWu^L}\Iͭ3`z ϔ%:ƩFBgThGhvNEv aI=BXL p /!4$"h2\ԀZy{HSSQ&yN+^*Q7u PKӗtPK5thJMETA-INF/SOVA.RSAi4e!AUi1ؕ.*:QeSK R6m쵍uĴDc%kiQ<9{{=? ."b-$/hq6 B(=짂 l,@I?(P0+X\b&E HL$ @@0h 6GQ&Tc:ŀ$ @hzbHq|xrڑfQqèmh7 zto6,4K ?R}0hGAχ5JOxOXy3QW(&2ֶe%Zè,_?YɎݏr/>nʫwS~AڄtJ!JR^V]sh^DsN]S(nfC'W =H$_18=7C۹wPKLR-#1osq =ū#^?tCk tWCͺ*,7Z̈_ʚygbPOcxSQs2yLU+>op/^ae\KۇN1-ANn>xN wX-|FIr^sdw(a!ND߃*s]^8Ǯ'O)]'N[ukuhJ(l0,XZfT\`Sգ[3%L/:zAq\{'{śiBItdO &G|a*nga\n!foy{dFC͌|Y eIG*yH۸4W|d&D氩1g YW[cס^S"|'eFO݂) @fCk"KoSMW9szO"\Y| c~/vqV&}rDLX "E/&ڟ8/"oG!QGXDuLN}u.]=լmt'U+Խѽr|UVW؄oxQIXt>! Q87l/$y_,:]9dWG8Ƽ׉[ taS|jAEЇtVr嶰)CLi.bj`މྎԑ@ x&yg}M1ŖuauZ^MΘ.D0HPί`;ա ]Qs %:qK=_+Ե5b+Vf}v|2cPS^ CIt3rWm"*QYOm>}#mY1גǰzP^h|Cp4iij4t4xC(z 0C,`$Q&ZZkXZ v\˜j?  ( #,!^T^~=c(8L$Ap``916RD0o0'@@h D 5+:MehD9cSz-jNcL44p#08F8\BG 0/$$ch3PUADA \3y b$p:7gH)-,\E 8{h+`>R)\75@O@5G4  Gz yJ uY ˍ \%)f XA<TMA@8 ~ J3.Rzo'x#"S#P0dP0p/@X’ܐXA^{ rx' CC&@`%`\0uBRb0 ^D ` X:F=` |J&)V*fRA,Qlx*LL0a"TReZd @DNo A`H'F0FP@~+p+1 *EᘀցRS s=LV`V_:-(xF@ PI/Q_n&?|4d|Y/ ps_^aF \y}qwɕqo2} cݍ;adž8vg/uwwtT=LR)KQx#s=zaܱc[3F?U8+×A_yihxG.J2ZM;yׁvЭۓ?@\cuo76sۗSjeW/7 G|/nɆxjү^N(Y?67_0~θ:>42s=nA{ ?C-nL &F*PФ?.Ae%(lgPh O@a# O2(`C[`Z(Q˼PY؉0K[^KKEd .(/y O-ek){ #ZjVF @wgCz6fp*<@a˅?B Tx:gm [&Xxzϖ`Aj"xk]Gm 2Y˂Jf(qA`cAYDg2WDZpAQ)ʀMn6DM2Djב e1K?gi"OÍP|yCޒTX?ghO緍 Ǎvr<D5ȽF'Án{ޭST慭N|$gFdEI<ϰ&3ьKR3U5;8XF(M YH#Yd㪬Q ӑÈK_ZCD*345ӫ]ɹq=vcaiobjPPXA1)kmƩӳˋw'v/>\_YwWN>TXw7/d{qpr?^u_䕞?9ޟy\beJxl hr*xl{wpEü9oy.|:x{0mŲYM-7;"?9ؽx=?Ί_%4e՛G'W翝_/hԞOy{?;A=U?GJ+Mwû3hBWBR, ulo{L="]%J|[0`5;)9B'u}1Eߔx<OƷ㞛S{a0Yr#[7Q+AmE!4H&j؀̵ߡ-`iPVYx:UCZB`\k󣐒Uw4WE)8cքxcpN`i+ >h$58]ϥKҞ1vY3[zq.#s߮"NCrkظV.ǃj}sve ^>ۃ O?=Nodp64~fK0Ҍ c6+Xv<[kKY^RlW3>\e: E&g1AtpFQ*$% '+CkLo̘׷a)<+1-9l ڭAFլT$[sfbcᑄduSe1𘎺mi"FSXꀭS)^婥lM9PV5%cmQ ސv0U?#jI0MOlm2[Pw:jde6.MMwpdGOc`&iS+ôIGarfstb'y<~?RQf|/E7k1Ġfr֔N9{w2t҃C#h_zdusCS:0bR?≮1΅8 !@!Y`D;Pt+| ҥ& C^uQҽ|>ioйE=i\..R?LM#`;ߝ~ȹWDI^iJ5PFKgQ`2qZߥ 7EPR)0q/Aϸ%x:y.gǷ&:| |-g7 &Guvug:w6$gu>\=9?]ůX*qv=kſ؟}m~;],ݭ)}hw'W,.WX,/~-VֻjĪkq~4¿zü/Q(vް4.=FqeG{GBqx7X'~bbU;3@юQȼR)+\ؚ@~*WRE[2LϓG/‹ɋ/v^݋Z(k(p\$Y#*HH(rtm"aL3^+|[J`)bؒV[Q*5UkؼI%) 0̥058W2_nOm#Q W s ?:xw|rҰ{Ovurzqptw9V9/{]{={p|)Y<]$(T̗_O(tO- -{S fT&6PIHq|MZ|YFߞ~OokFҍuU3N9A>a^,eHgxÔ TiFMvӶ$"1V"j0C\땣qDũ-8X$YT*G k(U^0*7 _s-ɻC,7 //ߜ߻zw~_Wήv8VUރ-o4kjʆݏOvVPZ>Új>;-\aGp!3FLTȥ"J+C3S1qDU{ĪPYêI⽲ |XFpN!ַ۫pj+!\缈?zXHU LSچ{HT|l*x(bfWB;%cN,2)%MJ1Ȫ)y&p\B(L,3CS@w[P%J21XRz(f)0<***F-A\pςRRwQVO7oߥBFǴjcJ1%`J2.;|C[.-™b\@Ź`B7|Ç Mwt|reX9/nm]FT4x?ˇd٫bRWY*9qSEI ж(ؽұjn&E7SJ ?[pz+1sjm_߾ꞞS{ͭ#3=wcsWP66}|sky:e)ZVlB. Fd)Qǫ{+)ԁ=a8#5^ 9RJ ă Sn|ަLI2Zt<LM@jR?q:'$}2GTju'p6F7'z tQCtpxYo8u䨺 @ke~_ј $x{ QTW3?h4!hyCEXވ 21rPi2FW0AD\^¨i JneɼԵ, liõܵ١>ӄU˗R׀`qc VڑIw64 ]P9W&[ _J1\xq>hJc=!:`-R(NJ绥ܴɅ7,IGb4&LW*VŦl*nx<s w0 W$ 2}S`uYAO"/9ߗv˫L -0Gga)SR6WBH\GRhI;M"t@zEQ+ݣ˔+tuJ]ewҧ4.m$)NG\ݞ|!&8GH R*g8.TlTw bJ"owX`mĬ a6x1DHvq-ijZFg婧v"Od'B*"9JXhU!g'ZCrն!cU%PDIfm!XQ|QSse@ҶqIǡlEVe<fnbc*1t):FԁyݚȞ]nw15)c"9y>6wqt`D='Ә%` \Ym*"8vN#& ]?MiS.""ehtS&Ў׵M*,/AO>GX8A?_s3 ?'~c8+$ QN*Vt%4j |av{Z2dsyRYQ4͠5HQlԶcbuX[/Y10XT'WǏP~p̂?Bovz[VvFGZX}ؖhkFb xښ$4:M6%v}초gTxÝ JH&LyY<$!-NGcfo9kvbTax\< Qo*>;}=E=*=PcZz An {J>P.NNsU ṙi^Sd?Z/YH8Z8. RӇahIi*ӥ[%=[?CIZ&ZEӳԷ˯v6cG{ë٢|Igrfrxb5#hQAY8eNh6h Mt+J`I=}fSMut5s&}@vy{pv~q\C+X<;d!q԰uTЏY~TvRPX{Ou&͸7ap]B~o{f˼2n7'#xk:u b NDieԒjy'*(k.Aa2 |֕k')'c=#W[BN$8ucRػ<:촛{{r^ Nyan~̉c?P_({X[zZ5)g^Ά7yOܥ%tsk~j由mqeԞ?1CX+LեڜѴK64Da$*X)qRYlp^ȭ\F4QiP,`#*P9WOYd/e- Fxux^,Nld>.fs ?#SM M]~_Y̽ي~5o߯>uayJkm66Â="yfH4cID WGM,8 B%;$LtQ4* g"|s# ꪽB2ɤS 6)E'{^YMk\iS 2Z%By)"JIq -At<\JyαRqFXaz㯖)b*echŻMc> xspx;#fg3,yk[CȋU`X d=XEYwAMkV zc(sL6WJ 2HVi0jmaf.A*eArrE)+ ,Qk8G)+jVpy?`oA2|KgZz;-̷Jlf5AT}yK=,>`=MJm/S}g;:jWv9@:oqJ}Bwf֎-ۦˠOWQx7nz>\-"~vx)nOevBKp^P+3&< ԅ\PI~hPe6(F9SD1c )xo `*S s WazhµX:kPeh R׷-DKUe8Jxr2޿#ϔ3LFwL'`O`S`OH !wđVʣ e6s̐0Sg-iƈĊ1+tKI'.~cԙ\l`~oPRykk /gqm0+[a ̂̉T;rͬO3TB_%y 3†#O t& 4fYutB#e4(^UcR)ˆC[#b#L1` km̓LP[bbN R/{3GoM{YD+q8STãÇl,C݂xjZA-yLN2(U0zUp?% Z˚zD@x6:z~VE|hUuHը E8!XD_ ]ǵtN]-=M]f.sGˏUiVGU7lƴI(d,?e;|%dEvty{h\/hnƄsr"m0iivڜ$x*Z͉"xNpGK9 "5z^Ŋ3iy;|gVݶMz"kFz/19j VzM&lK<`D K_yG| '&e?_=v>mu; +D_d9N|skU fF[nQس'sKg"#u бx-S~bH/G(P:CFxNH>PaHf;e2ޕo~aϹԆSJL \UZCUJ <p7,4zKPNRZH)c$hJ$1齩SK Lop7jL@gf B$kڴm^};kz2Tb`V{Ak\{r({<9,_l tM'-uNqVt~fU3hccNUegq9{a\YT!Lm(I]d8H4N”Q؆hTO,RfA*`v#C;g;j?הuU9WxZqjb0!0RB@a05ؘF )(/g'ZpV>z8MF## dHUp]Yʙ~k͛kenET,`-B@^Z-ro7߆ 30ilvDw˜;`Na5P?>W{ ;;X3vbm{4a+0|$*)e$0[0 jN)"pߞ2mSG۲1oN>@.Ў3UGi㵁).&J26"+P, ;QjVmDV OLZX zCo Nˡ0wnxr.~;W+GQ~m-F[̏U'YD1qF& ۛmy_/)\0 ֬H}lA뢴T+Hi&J0JAP`k "*qTS""(k\:To>$xFAD,!Ќ 䙒c+eޯ=qE)Z!}I,V *[5 +b <ڈg_ ?n Ak8ך Ґ,&^)X1\geTBN"a)5#&RTzl$1E&PAJ Ńr,h0hMXiIF${0-'h3cD^{?~)ʡ&Oo IS6Ԓt`K!7;}"!>}n QFW3 ,/trWp*.60kl[*`Clߺڶ4V*@CAy:A%JnJk{W G$eM#`tRs\ $N'i/*Tya*WFMذH]<8-nu]zaIQB:a'iPy;ng\&@G`~ ǝ!JFngܛGZt=dI婥wL~d2W:383XԽ M8RW{VZ0@NtHE!\;I3E1nǡ%bI(E2(&`qڲ*\s7 ~0Dꂞ棼QNI6(7y1}Ѹ36t鍼pnamt1f 4ifۙ<0NT'Χ1P(ҿd꼻&WO05 '\œ]ࠕ/Ő[; )hwێCG΍fHeBC@v:0zɗ_܅=ǹT]~{>k@|~4UQ}"rmu mb1 3 X}?O.pt -cWc ]c@z\⬯7ChF/b4nOҨd{Тp+LA(qֹo+MCaP0@J(4MQ ym vFי-ЕM)x{لڻK,?MN(׃nk1 V6(#ԓuEy]a܅a@єbӞ,d} ߽+VL1:20 mkP‰s&MD֜IrCSCroI稧p2xPTCb| &1vnf4:nzP2@{4a2'N7?BkD0c9y`ʫ>BƝw7Alzӛ?s҃ɑerӂf)5ԯQ܏(3_@ʼYsNIg̱ڜ-9y_9$|͒ R YJ NjgѿSi/$\>:~k{9m*?I_Lf⯅hLx,͓e^]l*vOZkzD^˸/.ڱ7' oPu?%,X1A}Mwwׯ_^ R&,t"(`-ߛwb@Ǡs5#}sryѹg Kznm<Z^^\̳܄ #$@Gþwj9,`iz Hgy q:T V 䢵FqnsL:RjluaL+ 0'IFMIIA(9Pr<nxER78ZTp)^y_&# Z %v++boz.kj]#bAOųzӴ5 5^!JsۍfZO6-~HX1T1ARШu:-I^wqKBYҊZ/(RL *c>wj$)w1Ph\Tn|{=xŚ;Q#$LX-!IY֤Y;ӟnLsZ] L{߯Y@)zo߷3maP&.:awZ82g0I0рV-=`ji@1> e!IrFPECY'ȶ A$G/$ؠt BZnF bS. ϸAJn T`W.*BQb-b|< Œh[8X\hЬ7U~o5! ퟝǝ,nq9-ѨZa)=@_"`)(\+Pqi}CZ=# fnlr~vW[J%LZuJ˦JFy܀ D8#SI)NxRC/%fȨ D<~ @1FXHB N`E}5u̹nxR1 +ԼvRQO$%ۻYƍ˱Q@+/vTzꃕC{݋Tydƍt&Ka {w 51Y(Ӌdр 2H t?פ5.H&9s 39DZYEcؐƑd J[T+ fE}1iXxȍ(HrʜK)#fdӶOʿv {:2_D[˺b)GC՛wgr{MЙF2mAN9_Y٪n"]lܭfpl9?ZFpziFf}Eۓe)Ynq o.'|1Rl{FJVp=qNbAyJN QYEu9V㱏GD1ab c"W%^ǃO noXf0+@Xz5#*ʂ<)4s{s}Q?QI-GFag|5{%K(7}A"ʼn+yhq wq=h vM fN7u*HZ8WTJz<*&i"dAdQ*'viu"/$KfeQ%+msz&OE)=-Db@R ıșE` G1#dPMwԸtG/1FՖ YJЈzf,>Ab=!. 0ĸ beKMYfY`gsd[њ7!kz>{~%[C??Pƕ{ڤLg%hH&@XyIQhQKJt:8%>"jU4y G%H*ұ2X@*/K-a˘KPK`ZKPK5thJMETA-INF/MANIFEST.MFPK5thJӗtMETA-INF/SOVA.SFPK5thJ 3)qMETA-INF/SOVA.RSAPK5thJ 6 META-INF/PK5thJ`ZK s index.xmlPK1Ufdroidserver-1.0.9/tests/signindex/guardianproject.jar0000664000175000017500000003652713243530567023163 0ustar hanshans00000000000000PK@IMETA-INF/MANIFEST.MFMLK-. K-*ϳR03r.JM,IMu *h%&*8%krr%Z)d楤VUr{8d RH7K0*2,ͱ2.1,H-PKPKBI META-INF/1.SFmͽn0=Rc+j :8(C)JYiqmR*uyxʟ-Z ¢8 dtGpN@MgNgͫu|1rট CAo;Z^V[ Mo)'fׇ&KNhe7a*umVF!]C6>]u:Z o PKU%PKBIMETA-INF/1.RSAUWM!!$`@@!4AT"ŀ "Rq(2Rf$|*"{ "(FEa("Eay|o?0wݻι{ jɧeA,aP(!0 W#xp6RQ3soKEmap2RF!eD(xDcxFLv(gtՙvه`Iz_)8ǟ/w*Q 8׵4*5))1,Q 8AT$ŰjĽYdm 0A0(7XH2;ߦ}" + OWFC 7^}Y%M-j@ Cy`bUśF&V~iU m2a ȯ~FJ}Ɂ" Uj+ɟڽ Ɲ7u' |~-+69v!Sc/_9q*1 Tck yqPW[V~W׏N4h-/tCB]헂jdH>՗8V`IJJ GrF!Y~>sD^gM~PBN}Zҡ{tzDu`QÈc hbI&3qɥbme1_4 zO+IqSёƴ1\٩hk A@m-$߉M1Ntapx8dpGO.=[m na}-!\Zňl.fmj9VE]Ɩ'aAJ)e!ɷ Jnqrg֩e@]cg= @¿FpWN'T!V^'|^pq? (~ΘL|p6G l?=' _,@U hDa2)> + zԽ;_*S~1:i_>pJl3w?)$i48.5N(Up :˼22zDk΃מ{<k`BTYu 'CO/s}efzNdYRؘa$L}y?<@iYy\=,u'+$r{>-,z"I.k29JaS{.1{&7N n)-u}!c z6ׇÖP)}nTvE cq$H||#e-Ūֶ&N*Oh}gSR!mҡfv1}Qle8[]Ox7QtQR|t.-PWe/s47r A'\pZ}2"zc:B6N1~^haZD^4V*sPM% _\guKQ'[Xdtk^kmA*S '<}f?%"ApUg});98ݗB6%<_n 맔TQ$kdm;2y5GW7I?jX9Sxԭ9ʁ3!EAY=9C[#% x}A'ε>15*~) kxN7 +2! ׻Duȡ֍Bt gRv9[$:~4+ASEtYsYgYkdǡX.7~fƹ sDf%?PK+ePK=I META-INF/PKPK=I index.xml}vG衧{+U(JX9$ewu^j(4 E?e`f9FdVF qmD=#"|Knݰ.'>I\T_={2N>?A^Ж?Vuf$7곺rϞH覯nYr%ޗT]$'w Ks ̤)M4U4*sƪq6iAU.yKw'wЎ TR!cOIs2Ze+ZlJs9<Rx'6U!)2! КHB[ғ[;NJ,\"%D"3ڴϔ8X@wIF_ _rSyO:hRJNL/a4%)lYA(хss31 QTTQ ትdCfZSWpsi%&39h1R ϭ:eGo(!j|F45)1p<,U)c1L$ j$'Ȥrȉ¤TTZS<͵%Tc S؜ri&fP QX+Ta,u s0*@߷0-*4)[E2i+Jr0Y‚VLg\NҔq(*L(s@d 8j'(`rI&(P'c{ɜ\Ίep)r+if-pgaF> \2\a{Y K3>-:E3xh;/E&S&aP H)%s XrQ2} ChHVBQyS..P΀ 0)Y/i-s4W43 Tx](3ZC 8&\D`4P- rOay\ՀP1au(  gs_h X*F*Y[nRcӆI uFXT `22eЫ$"́%raq 6c16t` c$*BT[8@3-QIn2Ӕj \ 0cY%sYWw# $9I ;װ1ؑr/4MW&QRnAS3~۔fI   5HxA4 \<j 8.RǁaKjhi@""-TE `Vë.,];x`̥}]\Q G!`ip!X';8؏T=Ia`aAwoU`?|?77jxeY+ 7^Hp \}߶;@yTg0 џ0B'=@Vwur_Qf1?n"Än 7)1uXU8D۸:U2G将> q#F0}$^'w: 0;l7P ]UOw꾋 +Ybx7XΌ~~m0a20Zf+LT>!kۇ4( wX^P~,{=MN<03\rYҵğhf`nhD~ `W x~SbWne+WCĉ=|܏5OO.Lv ::/AvtJxq5sK]؁5L[YV(9<@+|[W^7_aLoAߌ{ q:nG _2KĔ eNZȾF ^/\7O~dV,3:JE)Y԰S!9t@{?ac$3K%I˸7FCn~Ycd?Q@,-||5uϋ3ƒ_ϑPtmi7.B,&z?0ji^tB7\NLri{$ ,~V`?y6ԠJ?Dʱ&0`%N)t̢Y$ Sغm" (1 .@c#l9XC`/?`u3?\х} x2{B p v8 %` 8,30$yFW)E܂lz>gw4؍b@~zF%{&rL p29aTV?!dv&Y'eK3P}Nqzq$ dnPnE]m:emQwc/|gC?V_C{|19!0nޟ!cTe9yU-ο߿z=* _  n$ Ȃ%vW:ÌNX,섎g:"=Qir3Z0M- MɥMA "74ܡ83Lf2NKNeg0f2vPLH568?_^|wUJ:Mv,>ܹQ;@#̲LL"u2Ϥ0EJ r!sZSlw9+ȝwm z} r[ެqN=t5U=ZW-'Q돒+t^V<<Ƚ:r,^d/oΒ? Ԏ|d踳UCCx/]lO `YS;Voh?N9uͷBb=U"NS vt~j, S͘8XnM%ȼy&RvR@nBB ;q}_P;Ns&)(ɀ7q5V\JlMO|07kF6JBq:7s+-K $Xdj֘{`Vt3(mZ: IoŽ:$y3-c5~bĠFwjy p[a=ax෗0|6D}evfťN_ BXK66mm[z4t&}njKg'H7EgXYcD^Q5`hW['oӁDMu/y{r~ %N~ף΋A5 K=np&ɝ[n0e|)x=\N[ӹb(ث׏.a\؏hHnL3%qiF 7"Ťa"̌+@$ej P5J >\0'#6p_/qVa GHFkXu.6XfBWG[bߢW(zF޺$]#!^PdW15i&$ tvE C ^Y09HR\O #D\_q2!N\PYhFBq#Ez/J0y[b)r}d]QNWv["G26v.A*c0RDž1R+D|S ! 4A5ÙL8,< d9|hWsu0e Ek C@P&mD.~/dji\Y'RL4,5[`/s9 Y VsbҜ<'[=n2GֺDڴVJ +kSoKjs+YNs,hn NP2BLsY+4_%2ГͿW~?^厅`A3PRZXP4L\QA">W̡F!{0sNgC_}}Q hDj˵CHt_c١rF7k;Տcf3`Mqպѻ*Kԭ*{_x=ɽhmZ/խd4&pYD*Z9nN qr^ )1FMC /HOεDP(22“LK[ ‰ZݱB0I6ocO;^ٳNkPa rINV7eyt>U>ur#̲+x?ct`ncrw]] mC|&c1z F65AV4UU`@6{I,krtunSRg q 01l]=0p2`V8I;q,^ i'&;:5la;[Ou |1X~z/PU?mmt,čLBs=$POP$Yª9muYzo>?<tTÐ }!N3T'i^o]֗Gg{Iy˫r?|sXHU`~w\Oz o^%` WF7uep4p_@돢 Z:Ol;R_-eʭc 05j J}w!v8!?˘a3ӄ@xq 4;88Mt֛NP5r*꠰ D$K9 3kg + ۈvhʌ"R7[ @FOVX)²9-(x8 Wѯf-} oGpAa@C`蘛;J IsʦYTsA% :p=,9> ~ÃO&>!Pvkb"_w"n۾RX}   8ˤs:l]VN~[t}g$yV$@g/ϷqlQm;lsI*wăY‰Rɘ%- Js+=/h!IZX0\BX9 p9*E2ZTi``ZQ%HFrQiSh͔~lb_E8fҭA] *DG:y o7Mgms3lPE-_N]@!ZA/o'q=.[gbqj2a^W -P]8vQs'R4sqrՌPF?Ġd-Y]ɍ]Wvdڨ>~* v5hXD;wضX(ԯRD6eޟ 4AEӨ/WzhyKP ec X/83@iDD߇6wl`I1/b&$Cߠ(U ]l7( }[xvKa&`E vP&! \BM7 %F\[ G- ܦj"Sُ4}៶* EBvwէR%%?`ϡi1᪃ %MT4M??@ ڼ?/jD_۰L 4YD7RW%sY^PN+MO`vAB93}$aw2Sߩ*-#o&@,&YeYJ<|@ydN*R]NiCIh4Ԁ i2.r\gnm2]N\aAwj%fauA3 GX)wALLq7dQʄt쎌?H -wu=m㶊M|”*dpeq#5㜤t3T)Xt4R;,m[3-*aj>WKֵyXt諕?5ظXhA$HQrnP|UuP'S5uasaApA:সFUm]:Tx}rS-9ÛcP`P7uPգ8}xuSލ TXٟ9DMo0^3BWxXBfs;à4a5WM)x%װ  ^L Ɵ?j\?0jãFUMŽFMޯډYE.:@VB5(ZGS5{8xtbP\R!2N5N}z/_c0>X @MpWF40d\oP~vH V揺 [']zДGj\vj *p6T%z+Ƿa% "q1*ic^c7n/U/X͝8C|\L$搸qSe"MBBm?_ q)(N)tF\L'3@t<( ^N16`/5DwG:߻^\E5lf_rYvΏ^[<%N:E.L!3Y+(xR0E-M-"LyM#|gE%Yt]:v6ƿV~RbiRa Yn1:Jԕ IzO^pҒ(\g8ݷ޷]Mz:hlf?"zc A|9|Ś@B;15Y23XcIs[+ќٱbsw/.^>rԖu]0L8B[N~=u] ?/_!/³/98<Ԯa`g-?7/Pz.$NٰXFwnY* !ѹ}g{Msk*Ms+M asxRƃsm3'YVE{ϥTx3D/;/h;%,U#"\qh+'=[m5Y"+ )^3MV̱`YD:)"c9qM(V`K3d u*k;ۼ~| QMɹźs!Kpeicu\,Pѓ?V\Do`1XIc6>Lw'`70oO/_<)L巧/?;7wS=&`PKXYen.-[,W߽=;Y|ȶ+&eȅЫivWn xμ0q9X;Y&=nMʤJF%&<۪;}_oJن{%7JaK}pSfq.4@7RKC#x%nj6(/T@#mU-фa[%Y;(G!SmۤͲrteO]aзX@ (TVԤLd], ]]Br5T&wtT k?%|bUkIl3!uJ>NWʬᓉNNg0""3>Lu"5,͍Z#Z̩KqEsRg8FU)""@%5h/s :zPm{Mq]j5?Cոoj׻օy(f@$18@>Ɗ3[X.," a3 O5@P޸XJQЌ-@l Iv  yXLf,>ie:_ `pC|150[P[ǃxW7ι4x/7XOEO \a}bkz6'jbOXE@XK;woU弗\h']`2|ۆj}VlE 6F%OO2b3#7>Я=5*03,z cDySPP +!fzXǡ(`$ VJE_w¸BMQr+(S$m\( uXt#$h0٦v>bBlzr27uZ+cC$Jc\n ][#UXogLG WE+J[RMd`ra^2`yc5DSc 55‹\G`x,FRmgX/pYliCC7 lwQk6*&e4n [U6w&xٻq+]_1?ڕ?b'q,`3V4&HbhpMr~uG^5I[-">r[{Xn<ӺV|y=0HL H"kXɿ|Kd-79٢_(Z;ꆕy|aKX[z0DldK6ٳ7 ?[`Ϟ/OW4΢`ZƺHȁCid>Q8cIP[_b 4!%= 2: logging.basicConfig(format='%(message)s', level=logging.DEBUG) logger.setLevel(logging.DEBUG) elif options.verbosity == 1: logging.basicConfig(format='%(message)s', level=logging.INFO) logger.setLevel(logging.INFO) elif options.verbosity <= 0: logging.basicConfig(format='%(message)s', level=logging.WARNING) logger.setLevel(logging.WARNING) if not os.path.exists('makebuildserver') and not os.path.exists('buildserver'): logger.critical('This must be run as ./makebuildserver in fdroidserver.git!') sys.exit(1) tail = None # set up default config cachedir = os.path.join(os.getenv('HOME'), '.cache', 'fdroidserver') logger.debug('cachedir set to: %s', cachedir) config = { 'basebox': 'jessie64', 'baseboxurl': [ pathlib.Path(os.path.join(cachedir, 'jessie64.box')).as_uri() ], 'debian_mirror': 'http://http.debian.net/debian/', 'apt_package_cache': False, 'copy_caches_from_host': False, 'boot_timeout': 600, 'cachedir': cachedir, 'cpus': 1, 'memory': 2048, 'hwvirtex': 'off', 'vm_provider': 'virtualbox', } if os.path.isfile('/usr/bin/systemd-detect-virt'): try: virt = subprocess.check_output('/usr/bin/systemd-detect-virt').strip().decode('utf-8') except subprocess.CalledProcessError: virt = 'none' if virt == 'qemu' or virt == 'kvm' or virt == 'bochs': logger.info('Running in a VM guest, defaulting to QEMU/KVM via libvirt') config['vm_provider'] = 'libvirt' elif virt != 'none': logger.info('Running in an unsupported VM guest (%s)!', virt) logger.debug('detected virt: %s', virt) # load config file, if present if os.path.exists('makebuildserver.config.py'): exec(compile(open('makebuildserver.config.py').read(), 'makebuildserver.config.py', 'exec'), config) elif os.path.exists('makebs.config.py'): # this is the old name for the config file exec(compile(open('makebs.config.py').read(), 'makebs.config.py', 'exec'), config) if '__builtins__' in config: del(config['__builtins__']) # added by compile/exec logger.debug("makebuildserver.config.py parsed -> %s", json.dumps(config, indent=4, sort_keys=True)) # Update cached files. cachedir = config['cachedir'] if not os.path.exists(cachedir): os.makedirs(cachedir, 0o755) logger.debug('created cachedir %s because it did not exists.', cachedir) if config['vm_provider'] == 'libvirt': tmp = cachedir while tmp != '/': mode = os.stat(tmp).st_mode if not (stat.S_IXUSR & mode and stat.S_IXGRP & mode and stat.S_IXOTH & mode): logger.critical('ERROR: %s will not be accessible to the VM! To fix, run:', tmp) logger.critical(' chmod a+X %s', tmp) sys.exit(1) tmp = os.path.dirname(tmp) logger.debug('cache dir %s is accessible for libvirt vm.', cachedir) if config['apt_package_cache']: config['aptcachedir'] = cachedir + '/apt/archives' logger.debug('aptcachedir is set to %s', config['aptcachedir']) aptcachelock = os.path.join(config['aptcachedir'], 'lock') if os.path.isfile(aptcachelock): logger.info('apt cache dir is locked, removing lock') os.remove(aptcachelock) aptcachepartial = os.path.join(config['aptcachedir'], 'partial') if os.path.isdir(aptcachepartial): logger.info('removing partial downloads from apt cache dir') shutil.rmtree(aptcachepartial) cachefiles = [ # Don't update sdk tools beyond 25.2.5. # Support for android update project has been removed and there is no replacement. # Until we find a solution for that we need to stay at this revision. ('https://dl.google.com/android/repository/tools_r25.2.5-linux.zip', '577516819c8b5fae680f049d39014ff1ba4af870b687cab10595783e6f22d33e'), ('https://dl.google.com/android/repository/android_m2repository_r47.zip', 'a3f91808dce50c1717737de90c18479ed3a78b147e06985247d138e7ab5123d0'), ('https://dl.google.com/android/repository/android-1.5_r04-linux.zip', '85b6c8f9797e56aa415d3a282428bb640c96b0acb17c11d41621bb2a5302fe64'), ('https://dl.google.com/android/repository/android-1.6_r03-linux.zip', 'a8c4e3b32269c6b04c2adeabd112fce42f292dab1a40ef3b08ea7d4212be0df4'), ('https://dl.google.com/android/repository/android-2.0_r01-linux.zip', 'e70e2151b49613f23f40828c771ab85e241eed361cab037c6312df77f2612f0a'), ('https://dl.google.com/android/repository/android-2.0.1_r01-linux.zip', 'f47b46177b17f6368461f85bc2a27d0d2c437929f588ea27105712bc3185f664'), ('https://dl.google.com/android/repository/android-2.1_r03.zip', 'b9cc140a9b879586181b22cfc7d4aa18b979251e16e9b17771c5d0acb71ba940'), ('https://dl.google.com/android/repository/android-2.2_r03.zip', '7c9ea1bd7cb225504bd085d7c93ae27d52bd88d29b621d28108f82fef68177c0'), ('https://dl.google.com/android/repository/android-2.3.1_r02.zip', 'b2ab4896d0a4857e4f688f69eb08b0e1a8074709d4445a92a83ece7ec7cd198c'), ('https://dl.google.com/android/repository/android-2.3.3_r02.zip', '54bdb0f1ca06ba5747061ddeea20f431af72c448334fd4d3d7f84ea2ccd29fea'), ('https://dl.google.com/android/repository/android-3.0_r02.zip', '1cacae7b6e1b5a5d73c06f5d29d2ea92d16674df8fd5507681290e77d1647a1c'), ('https://dl.google.com/android/repository/android-3.1_r03.zip', '7570c86a86488a146aa2141a65a24d81800959c1907ff4f1d2c13bbafab230c5'), ('https://dl.google.com/android/repository/android-3.2_r01.zip', 'ff6b26ad34d7060a72ba504b0314cef8ba3138005561705adec5ad470a073d9b'), ('https://dl.google.com/android/repository/android-14_r04.zip', 'da1af15c77ba41d062eb6d0ef5921cc424ab6167587033b830609d65f04802b6'), ('https://dl.google.com/android/repository/android-15_r05.zip', '5bc1f93aae86b4336ffc4cae9eb8ec41a9a8fd677582dd86a9629798f019bed9'), ('https://dl.google.com/android/repository/android-16_r05.zip', 'fd7f269a423d1f1d079eabf9f918ceab49108702a1c6bb2589d57c23393503d3'), ('https://dl.google.com/android/repository/android-17_r03.zip', 'b66e73fb2639f8c916fde4369aa29012a5c531e156dbb205fe3788fe998fbbe8'), ('https://dl.google.com/android/repository/android-18_r03.zip', '166ae9cf299747a5faa8f04168f0ee47cd7466a975d8b44acaaa62a43e767568'), ('https://dl.google.com/android/repository/android-19_r04.zip', '5efc3a3a682c1d49128daddb6716c433edf16e63349f32959b6207524ac04039'), ('https://dl.google.com/android/repository/android-20_r02.zip', 'ef08c453e16ab6e656cf5d9413ef61cb8c650607d33b24ee4ce08dafdfe965a7'), ('https://dl.google.com/android/repository/android-21_r02.zip', 'a76cd7ad3080ac6ce9f037cb935b399a1bad396c0605d4ff42f693695f1dcefe'), ('https://dl.google.com/android/repository/android-22_r02.zip', '45eb581bbe53c9256f34c26b2cea919543c0079140897ac721cf88c0b9f6789e'), ('https://dl.google.com/android/repository/platform-23_r03.zip', '4b4bcddead3319708275c54c76294707bfaa953d767e34f1a5b599f3edd0076c'), ('https://dl.google.com/android/repository/platform-24_r02.zip', 'f268f5945c6ece7ea95c1c252067280854d2a20da924e22ae4720287df8bdbc9'), ('https://dl.google.com/android/repository/platform-25_r03.zip', '9b742d34590fe73fb7229e34835ecffb1846ca389d9f924f0b2a37de525dc6b8'), ('https://dl.google.com/android/repository/platform-26_r02.zip', '2aafa7d19c5e9c4b643ee6ade3d85ef89dc2f79e8383efdb9baf7fddad74b52a'), ('https://dl.google.com/android/repository/platform-27_r03.zip', '020c4c090bc82ce87ebaae5d1a922e21b39a1d03c78ffa43f0c3e42fc7d28169'), ('https://dl.google.com/android/repository/build-tools_r17-linux.zip', '4c8444972343a19045236f6924bd7f12046287c70dace96ab88b2159c8ec0e74'), ('https://dl.google.com/android/repository/build-tools_r18.0.1-linux.zip', 'a9b7b1bdfd864780fdd03fa1683f3fe712a4276cf200646833808cb9159bafc0'), ('https://dl.google.com/android/repository/build-tools_r18.1-linux.zip', '0753606738f31cc346426db1d46b7d021bc1bdaff63085f9ee9d278ee054d3c9'), ('https://dl.google.com/android/repository/build-tools_r18.1.1-linux.zip', '7e4ed326b53078f4f23276ddab52c400011f7593dfbb6508c0a6671954dba8b0'), ('https://dl.google.com/android/repository/build-tools_r19-linux.zip', '9442e1c5212ed594e344a231fa93e7a017a5ef8cc661117011f1d3142eca7acc'), ('https://dl.google.com/android/repository/build-tools_r19.0.1-linux.zip', 'b068edaff05c3253a63e9c8f0e1786429799b7e4b01514a847a8b291beb9232e'), ('https://dl.google.com/android/repository/build-tools_r19.0.2-linux.zip', '06124fad0d4bde21191240d61df2059a8546c085064a9a57d024c36fa2c9bebb'), ('https://dl.google.com/android/repository/build-tools_r19.0.3-linux.zip', 'bc9b3db0de4a3e233a170274293359051a758f1e3f0d0d852ff4ad6d90d0a794'), ('https://dl.google.com/android/repository/build-tools_r19.1-linux.zip', '3833b409f78c002a83244e220be380ea6fa44d604e0d47de4b7e5daefe7cd3f4'), ('https://dl.google.com/android/repository/build-tools_r20-linux.zip', '296e09d62095d80e6eaa06a64cfa4c6f9f317c2d67ad8da6514523ec66f5c871'), ('https://dl.google.com/android/repository/build-tools_r21-linux.zip', '12b818f38fe1b68091b94545988317438efbf41eb61fd36b72cd79f536044065'), ('https://dl.google.com/android/repository/build-tools_r21.0.1-linux.zip', 'a8922e80d3dd0cf6df14b29a7862448fa111b48086c639168d4b18c92431f559'), ('https://dl.google.com/android/repository/build-tools_r21.0.2-linux.zip', '859b17a6b65d063dfd86c163489b736b12bdeecd9173fdddb3e9f32e0fe584b7'), ('https://dl.google.com/android/repository/build-tools_r21.1-linux.zip', '022a85b92360272379b2f04b8a4d727e754dbe7eb8ab5a9568190e33e480d8f1'), ('https://dl.google.com/android/repository/build-tools_r21.1.1-linux.zip', '29b612484de6b5cde0df6de655e413f7611b0557b440538397afa69b557e2f08'), ('https://dl.google.com/android/repository/build-tools_r21.1.2-linux.zip', '3f88efc2d5316fb73f547f35b472610eed5e6f3f56762750ddad1c7d1d81660d'), ('https://dl.google.com/android/repository/build-tools_r22-linux.zip', '061c021243f04c80c19568a6e3a027c00d8e269c9311d7bf07fced60fbde7bd5'), ('https://dl.google.com/android/repository/build-tools_r22.0.1-linux.zip', '91e5524bf227aad1135ddd10905518ac49f74797d33d48920dcf8364b9fde214'), ('https://dl.google.com/android/repository/build-tools_r23-linux.zip', '56bf4fc6c43638c55fef4a0937bad38281945725459841879b436c6922df786c'), ('https://dl.google.com/android/repository/build-tools_r23.0.1-linux.zip', 'e56b3ef7b760ad06a7cee9b2d52ba7f43133dcecedfa5357f8845b3a80aeeecf'), ('https://dl.google.com/android/repository/build-tools_r23.0.2-linux.zip', '82754f551a6e36eaf516fbdd00c95ff0ccd19f81d1e134125b6ac4916f7ed9b6'), ('https://dl.google.com/android/repository/build-tools_r23.0.3-linux.zip', 'd961663d4a9e128841751c0156548a347c882c081c83942e53788d8949bf34e1'), ('https://dl.google.com/android/repository/build-tools_r24-linux.zip', 'b4871f357224c5f660fd2bbee04d8c7d1c187eeddfd9702cc84503529e3b3724'), ('https://dl.google.com/android/repository/build-tools_r24.0.1-linux.zip', 'a38ac637db357a31e33e38248399cb0edcc15040dca041370da38b6daf50c84d'), ('https://dl.google.com/android/repository/build-tools_r24.0.2-linux.zip', '924e29b8a189afbd119d44eae450fc0c9f197ed6f835df223931e45007987d95'), ('https://dl.google.com/android/repository/build-tools_r24.0.3-linux.zip', 'f2c02eb1d7e41ce314b5dac50440e7595380c4dd45b41ea1d7b0f86e49516927'), ('https://dl.google.com/android/repository/build-tools_r25-linux.zip', '74eb6931fd7a56859bd8e35d8d73ca8fe7ba6bfd4b7ffe560fe58b7354f2e3aa'), ('https://dl.google.com/android/repository/build-tools_r25.0.1-linux.zip', '671b4e00f5b986c7355507c7024b725a4b4cadf11ca61fa5b1334ec6ea57d94f'), ('https://dl.google.com/android/repository/build-tools_r25.0.2-linux.zip', '1d7ac9b6def16fb0254ec23c135c02dd9f6908073352a20315a017e4b2a904b0'), ('https://dl.google.com/android/repository/build-tools_r25.0.3-linux.zip', '152c1b187947edd10c65af8b279d40321ecc106106323e53df3608e578042d65'), ('https://dl.google.com/android/repository/build-tools_r26-linux.zip', '7422682f92fb471d4aad4c053c9982a9a623377f9d5e4de7a73cd44ebf2f3c61'), ('https://dl.google.com/android/repository/build-tools_r26.0.1-linux.zip', 'c8617f25a7de2aeb9ddcacf1aeb413e053d5ed5ef4a3f31fe0ce21d4428ee0ea'), ('https://dl.google.com/android/repository/build-tools_r26.0.2-linux.zip', 'a752849fac85c4a7f9ea165ec8f367b0ebe8bbf6a1f33fc8605342be004231ce'), ('https://dl.google.com/android/repository/build-tools_r26.0.3-linux.zip', '5c250c602b1657c4c70a6078925e9e01e5714526b707309bc1c708be6137a4db'), ('https://dl.google.com/android/repository/build-tools_r27-linux.zip', '53d3322774a0bf229b372c0288108b4bfa27d74725fce8f0a3393e8df6b9ef22'), ('https://dl.google.com/android/repository/build-tools_r27.0.1-linux.zip', '2e8e0946e93af50667ae02ef200e81c1ac2269b59f14955397245e9e441e8b1e'), ('https://dl.google.com/android/repository/build-tools_r27.0.2-linux.zip', 'e73674e065a93ffb05c30a15c8021c0d72ea7c3c206eb9020eb93e49e42ce851'), ('https://dl.google.com/android/repository/build-tools_r27.0.3-linux.zip', '5e1f4fc5203f13de120c56f9cc103bb2e57d940959547506196ab10ddc9e6b97'), # the binaries that Google uses are here: # https://android.googlesource.com/platform/tools/external/gradle/+/studio-1.5/ ('https://services.gradle.org/distributions/gradle-1.4-bin.zip', 'cd99e85fbcd0ae8b99e81c9992a2f10cceb7b5f009c3720ef3a0078f4f92e94e'), ('https://services.gradle.org/distributions/gradle-1.6-bin.zip', 'de3e89d2113923dcc2e0def62d69be0947ceac910abd38b75ec333230183fac4'), ('https://services.gradle.org/distributions/gradle-1.7-bin.zip', '360c97d51621b5a1ecf66748c718594e5f790ae4fbc1499543e0c006033c9d30'), ('https://services.gradle.org/distributions/gradle-1.8-bin.zip', 'a342bbfa15fd18e2482287da4959588f45a41b60910970a16e6d97959aea5703'), ('https://services.gradle.org/distributions/gradle-1.9-bin.zip', '097ddc2bcbc9da2bb08cbf6bf8079585e35ad088bafd42e8716bc96405db98e9'), ('https://services.gradle.org/distributions/gradle-1.10-bin.zip', '6e6db4fc595f27ceda059d23693b6f6848583950606112b37dfd0e97a0a0a4fe'), ('https://services.gradle.org/distributions/gradle-1.11-bin.zip', '07e235df824964f0e19e73ea2327ce345c44bcd06d44a0123d29ab287fc34091'), ('https://services.gradle.org/distributions/gradle-1.12-bin.zip', '8734b13a401f4311ee418173ed6ca8662d2b0a535be8ff2a43ecb1c13cd406ea'), ('https://services.gradle.org/distributions/gradle-2.1-bin.zip', '3eee4f9ea2ab0221b89f8e4747a96d4554d00ae46d8d633f11cfda60988bf878'), ('https://services.gradle.org/distributions/gradle-2.2-bin.zip', '91e5655fe11ef414449f218c4fa2985b3a49b7903c57556da109c84fa26e1dfb'), ('https://services.gradle.org/distributions/gradle-2.2.1-bin.zip', '420aa50738299327b611c10b8304b749e8d3a579407ee9e755b15921d95ff418'), ('https://services.gradle.org/distributions/gradle-2.3-bin.zip', '010dd9f31849abc3d5644e282943b1c1c355f8e2635c5789833979ce590a3774'), ('https://services.gradle.org/distributions/gradle-2.4-bin.zip', 'c4eaecc621a81f567ded1aede4a5ddb281cc02a03a6a87c4f5502add8fc2f16f'), ('https://services.gradle.org/distributions/gradle-2.5-bin.zip', '3f953e0cb14bb3f9ebbe11946e84071547bf5dfd575d90cfe9cc4e788da38555'), ('https://services.gradle.org/distributions/gradle-2.6-bin.zip', '18a98c560af231dfa0d3f8e0802c20103ae986f12428bb0a6f5396e8f14e9c83'), ('https://services.gradle.org/distributions/gradle-2.7-bin.zip', 'cde43b90945b5304c43ee36e58aab4cc6fb3a3d5f9bd9449bb1709a68371cb06'), ('https://services.gradle.org/distributions/gradle-2.8-bin.zip', 'a88db9c2f104defdaa8011c58cf6cda6c114298ae3695ecfb8beb30da3a903cb'), ('https://services.gradle.org/distributions/gradle-2.9-bin.zip', 'c9159ec4362284c0a38d73237e224deae6139cbde0db4f0f44e1c7691dd3de2f'), ('https://services.gradle.org/distributions/gradle-2.10-bin.zip', '66406247f745fc6f05ab382d3f8d3e120c339f34ef54b86f6dc5f6efc18fbb13'), ('https://services.gradle.org/distributions/gradle-2.11-bin.zip', '8d7437082356c9fd6309a4479c8db307673965546daea445c6c72759cd6b1ed6'), ('https://services.gradle.org/distributions/gradle-2.12-bin.zip', 'e77064981906cd0476ff1e0de3e6fef747bd18e140960f1915cca8ff6c33ab5c'), ('https://services.gradle.org/distributions/gradle-2.13-bin.zip', '0f665ec6a5a67865faf7ba0d825afb19c26705ea0597cec80dd191b0f2cbb664'), ('https://services.gradle.org/distributions/gradle-2.14-bin.zip', '993b4f33b652c689e9721917d8e021cab6bbd3eae81b39ab2fd46fdb19a928d5'), ('https://services.gradle.org/distributions/gradle-2.14.1-bin.zip', 'cfc61eda71f2d12a572822644ce13d2919407595c2aec3e3566d2aab6f97ef39'), ('https://services.gradle.org/distributions/gradle-3.0-bin.zip', '39c906941a474444afbddc38144ed44166825acb0a57b0551dddb04bbf157f80'), ('https://services.gradle.org/distributions/gradle-3.1-bin.zip', 'c7de3442432253525902f7e8d7eac8b5fd6ce1623f96d76916af6d0e383010fc'), ('https://services.gradle.org/distributions/gradle-3.2-bin.zip', '5321b36837226dc0377047a328f12010f42c7bf88ee4a3b1cee0c11040082935'), ('https://services.gradle.org/distributions/gradle-3.2.1-bin.zip', '9843a3654d3e57dce54db06d05f18b664b95c22bf90c6becccb61fc63ce60689'), ('https://services.gradle.org/distributions/gradle-3.3-bin.zip', 'c58650c278d8cf0696cab65108ae3c8d95eea9c1938e0eb8b997095d5ca9a292'), ('https://services.gradle.org/distributions/gradle-3.4-bin.zip', '72d0cd4dcdd5e3be165eb7cd7bbd25cf8968baf400323d9ab1bba622c3f72205'), ('https://services.gradle.org/distributions/gradle-3.4.1-bin.zip', 'db1db193d479cc1202be843f17e4526660cfb0b21b57d62f3a87f88c878af9b2'), ('https://services.gradle.org/distributions/gradle-3.5-bin.zip', '0b7450798c190ff76b9f9a3d02e18b33d94553f708ebc08ebe09bdf99111d110'), ('https://services.gradle.org/distributions/gradle-3.5.1-bin.zip', '8dce35f52d4c7b4a4946df73aa2830e76ba7148850753d8b5e94c5dc325ceef8'), ('https://services.gradle.org/distributions/gradle-4.0-bin.zip', '56bd2dde29ba2a93903c557da1745cafd72cdd8b6b0b83c05a40ed7896b79dfe'), ('https://services.gradle.org/distributions/gradle-4.0.1-bin.zip', 'd717e46200d1359893f891dab047fdab98784143ac76861b53c50dbd03b44fd4'), ('https://services.gradle.org/distributions/gradle-4.0.2-bin.zip', '79ac421342bd11f6a4f404e0988baa9c1f5fabf07e3c6fa65b0c15c1c31dda22'), ('https://services.gradle.org/distributions/gradle-4.1-bin.zip', 'd55dfa9cfb5a3da86a1c9e75bb0b9507f9a8c8c100793ccec7beb6e259f9ed43'), ('https://services.gradle.org/distributions/gradle-4.2-bin.zip', '515dd63d32e55a9c05667809c5e40a947529de3054444ad274b3b75af5582eae'), ('https://downloads.gradle.org/distributions/gradle-4.2.1-bin.zip', 'b551cc04f2ca51c78dd14edb060621f0e5439bdfafa6fd167032a09ac708fbc0'), ('https://downloads.gradle.org/distributions/gradle-4.3-bin.zip', '8dcbf44eef92575b475dcb1ce12b5f19d38dc79e84c662670248dc8b8247654c'), ('https://downloads.gradle.org/distributions/gradle-4.3.1-bin.zip', '15ebe098ce0392a2d06d252bff24143cc88c4e963346582c8d88814758d93ac7'), ('https://downloads.gradle.org/distributions/gradle-4.4-bin.zip', 'fa4873ae2c7f5e8c02ec6948ba95848cedced6134772a0169718eadcb39e0a2f'), ('https://downloads.gradle.org/distributions/gradle-4.4.1-bin.zip', 'e7cf7d1853dfc30c1c44f571d3919eeeedef002823b66b6a988d27e919686389'), ('https://downloads.gradle.org/distributions/gradle-4.5-bin.zip', '03f2a43a314ff0fb843a85ef68078e06d181c4549c1e5fb983f289382b59b5e3'), ('https://downloads.gradle.org/distributions/gradle-4.5.1-bin.zip', '3e2ea0d8b96605b7c528768f646e0975bd9822f06df1f04a64fd279b1a17805e'), ('https://downloads.gradle.org/distributions/gradle-4.6-bin.zip', '98bd5fd2b30e070517e03c51cbb32beee3e2ee1a84003a5a5d748996d4b1b915'), ('https://downloads.gradle.org/distributions/gradle-4.7-bin.zip', 'fca5087dc8b50c64655c000989635664a73b11b9bd3703c7d6cabd31b7dcdb04'), ('https://dl.google.com/android/ndk/android-ndk-r10e-linux-x86_64.bin', '102d6723f67ff1384330d12c45854315d6452d6510286f4e5891e00a5a8f1d5a'), ('https://dl.google.com/android/repository/android-ndk-r11c-linux-x86_64.zip', 'ba85dbe4d370e4de567222f73a3e034d85fc3011b3cbd90697f3e8dcace3ad94'), ('https://dl.google.com/android/repository/android-ndk-r12b-linux-x86_64.zip', 'eafae2d614e5475a3bcfd7c5f201db5b963cc1290ee3e8ae791ff0c66757781e'), ('https://dl.google.com/android/repository/android-ndk-r13b-linux-x86_64.zip', '3524d7f8fca6dc0d8e7073a7ab7f76888780a22841a6641927123146c3ffd29c'), ('https://dl.google.com/android/repository/android-ndk-r14b-linux-x86_64.zip', '0ecc2017802924cf81fffc0f51d342e3e69de6343da892ac9fa1cd79bc106024'), ('https://dl.google.com/android/repository/android-ndk-r15c-linux-x86_64.zip', 'f01788946733bf6294a36727b99366a18369904eb068a599dde8cca2c1d2ba3c'), ('https://dl.google.com/android/repository/android-ndk-r16b-linux-x86_64.zip', 'bcdea4f5353773b2ffa85b5a9a2ae35544ce88ec5b507301d8cf6a76b765d901'), ('https://dl.google.com/android/repository/android-ndk-r17-linux-x86_64.zip', 'ba3d813b47de75bc32a2f3de087f72599c6cb36fdc9686b96f517f5492ff43ca'), ] def sha256_for_file(path): with open(path, 'rb') as f: s = hashlib.sha256() while True: data = f.read(4096) if not data: break s.update(data) return s.hexdigest() def run_via_vagrant_ssh(v, cmdlist): if (isinstance(cmdlist, str) or isinstance(cmdlist, bytes)): cmd = cmdlist else: cmd = ' '.join(cmdlist) v._run_vagrant_command(['ssh', '-c', cmd]) def update_cache(cachedir, cachefiles): for srcurl, shasum in cachefiles: filename = os.path.basename(srcurl) local_filename = os.path.join(cachedir, filename) if os.path.exists(local_filename): local_length = os.path.getsize(local_filename) else: local_length = -1 resume_header = {} download = True try: r = requests.head(srcurl, allow_redirects=True, timeout=60) if r.status_code == 200: content_length = int(r.headers.get('content-length')) else: content_length = local_length # skip the download except requests.exceptions.RequestException as e: content_length = local_length # skip the download logger.warn('%s', e) if local_length == content_length: download = False elif local_length > content_length: logger.info('deleting corrupt file from cache: %s', local_filename) os.remove(local_filename) logger.info("Downloading %s to cache", filename) elif local_length > -1 and local_length < content_length: logger.info("Resuming download of %s", local_filename) resume_header = {'Range': 'bytes=%d-%d' % (local_length, content_length)} else: logger.info("Downloading %s to cache", filename) if download: r = requests.get(srcurl, headers=resume_header, stream=True, allow_redirects=True) content_length = int(r.headers.get('content-length')) with open(local_filename, 'ab') as f: for chunk in progress.bar(r.iter_content(chunk_size=65536), expected_size=(content_length / 65536) + 1): if chunk: # filter out keep-alive new chunks f.write(chunk) v = sha256_for_file(local_filename) if v == shasum: logger.info("\t...shasum verified for %s", local_filename) else: logger.critical("Invalid shasum of '%s' detected for %s", v, local_filename) os.remove(local_filename) sys.exit(1) def debug_log_vagrant_vm(vm_dir, config): if options.verbosity >= 3: _vagrant_dir = os.path.join(vm_dir, '.vagrant') logger.debug('check %s dir exists? -> %r', _vagrant_dir, os.path.isdir(_vagrant_dir)) logger.debug('> vagrant status') subprocess.call(['vagrant', 'status'], cwd=vm_dir) logger.debug('> vagrant box list') subprocess.call(['vagrant', 'box', 'list']) if config['vm_provider'] == 'libvirt': logger.debug('> virsh -c qmeu:///system list --all') subprocess.call(['virsh', '-c', 'qemu:///system', 'list', '--all']) domain = 'buildserver_default' logger.debug('> virsh -c qemu:///system snapshot-list %s', domain) subprocess.call(['virsh', '-c', 'qemu:///system', 'snapshot-list', domain]) def main(): global cachedir, cachefiles, config, tail if options.skip_cache_update: logger.info('skipping cache update and verification...') else: update_cache(cachedir, cachefiles) # use VirtualBox software virtualization if hardware is not available, # like if this is being run in kvm or some other VM platform, like # http://jenkins.debian.net, the values are 'on' or 'off' if sys.platform.startswith('darwin'): # all < 10 year old Macs work, and OSX servers as VM host are very # rare, but this could also be auto-detected if someone codes it config['hwvirtex'] = 'on' logger.info('platform is darwnin -> hwvirtex = \'on\'') elif os.path.exists('/proc/cpuinfo'): with open('/proc/cpuinfo') as f: contents = f.read() if 'vmx' in contents or 'svm' in contents: config['hwvirtex'] = 'on' logger.info('found \'vmx\' or \'svm\' in /proc/cpuinfo -> hwvirtex = \'on\'') serverdir = os.path.join(os.getcwd(), 'buildserver') logfilename = os.path.join(serverdir, 'up.log') if not os.path.exists(logfilename): open(logfilename, 'a').close() # create blank file log_cm = vagrant.make_file_cm(logfilename) v = vagrant.Vagrant(root=serverdir, out_cm=log_cm, err_cm=log_cm) if options.verbosity >= 2: tail = fdroidserver.tail.Tail(logfilename) tail.start() vm = fdroidserver.vmtools.get_build_vm(serverdir, provider=config['vm_provider']) if options.clean: vm.destroy() # Check against the existing Vagrantfile.yaml, and if they differ, we # need to create a new box: vf = os.path.join(serverdir, 'Vagrantfile.yaml') writevf = True if os.path.exists(vf): logger.info('Halting %s', serverdir) v.halt() with open(vf, 'r', encoding='utf-8') as f: oldconfig = yaml.load(f) if config != oldconfig: logger.info("Server configuration has changed, rebuild from scratch is required") vm.destroy() else: logger.info("Re-provisioning existing server") writevf = False else: logger.info("No existing server - building from scratch") if writevf: with open(vf, 'w', encoding='utf-8') as f: yaml.dump(config, f) if config['vm_provider'] == 'libvirt': available_providers = [x.provider for x in v.box_list() if x.name == config['basebox']] found_basebox = len(available_providers) > 0 needs_mutate = 'libvirt' not in available_providers if not found_basebox: if isinstance(config['baseboxurl'], str): baseboxurl = config['baseboxurl'] else: baseboxurl = config['baseboxurl'][0] logger.info('Adding %s from %s', config['basebox'], baseboxurl) v.box_add(config['basebox'], baseboxurl) needs_mutate = True if needs_mutate: logger.info('Converting %s to libvirt format', config['basebox']) v._call_vagrant_command(['mutate', config['basebox'], 'libvirt']) logger.info('Removing virtualbox format copy of %s', config['basebox']) v.box_remove(config['basebox'], 'virtualbox') logger.info("Configuring build server VM") debug_log_vagrant_vm(serverdir, config) try: v.up(provision=True) except subprocess.CalledProcessError: debug_log_vagrant_vm(serverdir, config) logger.error("'vagrant up' failed, is the base box missing?") sys.exit(1) if config['copy_caches_from_host']: ssh_config = v.ssh_config() user = re.search(r'User ([^ \n]+)', ssh_config).group(1) hostname = re.search(r'HostName ([^ \n]+)', ssh_config).group(1) port = re.search(r'Port ([0-9]+)', ssh_config).group(1) key = re.search(r'IdentityFile ([^ \n]+)', ssh_config).group(1) for d in ('.m2', '.gradle/caches', '.gradle/wrapper', '.pip_download_cache'): fullpath = os.path.join(os.getenv('HOME'), d) if os.path.isdir(fullpath): ssh_command = ' '.join(('ssh -i {0} -p {1}'.format(key, port), '-o StrictHostKeyChecking=no', '-o UserKnownHostsFile=/dev/null', '-o LogLevel=FATAL', '-o IdentitiesOnly=yes', '-o PasswordAuthentication=no')) # TODO vagrant 1.5+ provides `vagrant rsync` run_via_vagrant_ssh(v, ['cd ~ && test -d', d, '|| mkdir -p', d]) subprocess.call(['rsync', '-ax', '--delete', '-e', ssh_command, fullpath + '/', user + '@' + hostname + ':~/' + d + '/']) # this file changes every time but should not be cached run_via_vagrant_ssh(v, ['rm', '-f', '~/.gradle/caches/modules-2/modules-2.lock']) run_via_vagrant_ssh(v, ['rm', '-fr', '~/.gradle/caches/*/plugin-resolution/']) p = subprocess.Popen(['git', 'rev-parse', 'HEAD'], stdout=subprocess.PIPE, universal_newlines=True) buildserverid = p.communicate()[0].strip() logger.info("Writing buildserver ID ...ID is %s", buildserverid) run_via_vagrant_ssh(v, 'sh -c "echo %s >/home/vagrant/buildserverid"' % buildserverid) logger.info("Stopping build server VM") v.halt() logger.info("Packaging") boxfile = os.path.join(os.getcwd(), 'buildserver.box') if os.path.exists(boxfile): os.remove(boxfile) vm.package(output=boxfile) logger.info("Adding box") vm.box_add('buildserver', boxfile, force=True) if 'buildserver' not in subprocess.check_output(['vagrant', 'box', 'list']).decode('utf-8'): logger.critical('could not add box \'%s\' as \'buildserver\', terminating', boxfile) sys.exit(1) if not options.keep_box_file: logger.debug("""box added to vagrant, removing generated box file '%s'""", boxfile) os.remove(boxfile) if __name__ == '__main__': try: main() finally: if tail is not None: tail.stop() fdroidserver-1.0.9/fdroidserver/0000775000175000017500000000000013324115531016621 5ustar hanshans00000000000000fdroidserver-1.0.9/fdroidserver/stats.py0000664000175000017500000002553413303240575020346 0ustar hanshans00000000000000#!/usr/bin/env python3 # # stats.py - part of the FDroid server tools # Copyright (C) 2010-13, Ciaran Gultnieks, ciaran@ciarang.com # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . import sys import os import re import time import traceback import glob import json from argparse import ArgumentParser import paramiko import socket import logging import subprocess from collections import Counter from . import _ from . import common from . import metadata def carbon_send(key, value): s = socket.socket() s.connect((config['carbon_host'], config['carbon_port'])) msg = '%s %d %d\n' % (key, value, int(time.time())) s.sendall(msg) s.close() options = None config = None def most_common_stable(counts): pairs = [] for s in counts: pairs.append((s, counts[s])) return sorted(pairs, key=lambda t: (-t[1], t[0])) def main(): global options, config # Parse command line... parser = ArgumentParser() common.setup_global_opts(parser) parser.add_argument("-d", "--download", action="store_true", default=False, help=_("Download logs we don't have")) parser.add_argument("--recalc", action="store_true", default=False, help=_("Recalculate aggregate stats - use when changes " "have been made that would invalidate old cached data.")) parser.add_argument("--nologs", action="store_true", default=False, help=_("Don't do anything logs-related")) metadata.add_metadata_arguments(parser) options = parser.parse_args() metadata.warnings_action = options.W config = common.read_config(options) if not config['update_stats']: logging.info("Stats are disabled - set \"update_stats = True\" in your config.py") sys.exit(1) # Get all metadata-defined apps... allmetaapps = [app for app in metadata.read_metadata().values()] metaapps = [app for app in allmetaapps if not app.Disabled] statsdir = 'stats' logsdir = os.path.join(statsdir, 'logs') datadir = os.path.join(statsdir, 'data') if not os.path.exists(statsdir): os.mkdir(statsdir) if not os.path.exists(logsdir): os.mkdir(logsdir) if not os.path.exists(datadir): os.mkdir(datadir) if options.download: # Get any access logs we don't have... ssh = None ftp = None try: logging.info('Retrieving logs') ssh = paramiko.SSHClient() ssh.load_system_host_keys() ssh.connect(config['stats_server'], username=config['stats_user'], timeout=10, key_filename=config['webserver_keyfile']) ftp = ssh.open_sftp() ftp.get_channel().settimeout(60) logging.info("...connected") ftp.chdir('logs') files = ftp.listdir() for f in files: if f.startswith('access-') and f.endswith('.log.gz'): destpath = os.path.join(logsdir, f) destsize = ftp.stat(f).st_size if not os.path.exists(destpath) \ or os.path.getsize(destpath) != destsize: logging.debug("...retrieving " + f) ftp.get(f, destpath) except Exception: traceback.print_exc() sys.exit(1) finally: # Disconnect if ftp is not None: ftp.close() if ssh is not None: ssh.close() knownapks = common.KnownApks() unknownapks = [] if not options.nologs: # Process logs logging.info('Processing logs...') appscount = Counter() appsvercount = Counter() logexpr = r'(?P[.:0-9a-fA-F]+) - - \[(?P

' else: res += '' self.bold = not self.bold txt = txt[3:] else: if htmlbody: if self.ital: res += '' else: res += '' self.ital = not self.ital txt = txt[2:] def linkify(self, txt): res_plain = '' res_html = '' while True: index = txt.find("[") if index == -1: return (res_plain + self.formatted(txt, False), res_html + self.formatted(txt, True)) res_plain += self.formatted(txt[:index], False) res_html += self.formatted(txt[:index], True) txt = txt[index:] if txt.startswith("[["): index = txt.find("]]") if index == -1: warn_or_exception(_("Unterminated ]]")) url = txt[2:index] if self.linkResolver: url, urltext = self.linkResolver(url) else: urltext = url res_html += '' + html.escape(urltext, quote=False) + '' res_plain += urltext txt = txt[index + 2:] else: index = txt.find("]") if index == -1: warn_or_exception(_("Unterminated ]")) url = txt[1:index] index2 = url.find(' ') if index2 == -1: urltxt = url else: urltxt = url[index2 + 1:] url = url[:index2] if url == urltxt: warn_or_exception(_("URL title is just the URL, use brackets: [URL]")) res_html += '' + html.escape(urltxt, quote=False) + '' res_plain += urltxt if urltxt != url: res_plain += ' (' + url + ')' txt = txt[index + 1:] def addtext(self, txt): p, h = self.linkify(txt) self.html.write(h) def parseline(self, line): if not line: self.endcur() elif line.startswith('* '): self.endcur([self.stUL]) if self.state != self.stUL: self.html.write('
    ') self.state = self.stUL if self.laststate != self.stNONE: self.text.write('\n\n') else: self.text.write('\n') self.text.write(line) self.html.write('
  • ') self.addtext(line[1:]) self.html.write('
  • ') elif line.startswith('# '): self.endcur([self.stOL]) if self.state != self.stOL: self.html.write('
      ') self.state = self.stOL if self.laststate != self.stNONE: self.text.write('\n\n') else: self.text.write('\n') self.text.write(line) self.html.write('
    1. ') self.addtext(line[1:]) self.html.write('
    2. ') else: self.para_lines.append(line) self.endcur([self.stPARA]) if self.state == self.stNONE: self.state = self.stPARA if self.laststate != self.stNONE: self.text.write('\n\n') self.html.write('

      ') def end(self): self.endcur() self.text_txt = self.text.getvalue() self.text_html = self.html.getvalue() self.text.close() self.html.close() # Parse multiple lines of description as written in a metadata file, returning # a single string in text format and wrapped to 80 columns. def description_txt(s): ps = DescriptionFormatter(None) for line in s.splitlines(): ps.parseline(line) ps.end() return ps.text_txt # Parse multiple lines of description as written in a metadata file, returning # a single string in wiki format. Used for the Maintainer Notes field as well, # because it's the same format. def description_wiki(s): return s # Parse multiple lines of description as written in a metadata file, returning # a single string in HTML format. def description_html(s, linkres): ps = DescriptionFormatter(linkres) for line in s.splitlines(): ps.parseline(line) ps.end() return ps.text_html def parse_srclib(metadatapath): thisinfo = {} # Defaults for fields that come from metadata thisinfo['Repo Type'] = '' thisinfo['Repo'] = '' thisinfo['Subdir'] = None thisinfo['Prepare'] = None if not os.path.exists(metadatapath): return thisinfo metafile = open(metadatapath, "r", encoding='utf-8') n = 0 for line in metafile: n += 1 line = line.rstrip('\r\n') if not line or line.startswith("#"): continue try: f, v = line.split(':', 1) except ValueError: warn_or_exception(_("Invalid metadata in %s:%d") % (line, n)) if f == "Subdir": thisinfo[f] = v.split(',') else: thisinfo[f] = v metafile.close() return thisinfo def read_srclibs(): """Read all srclib metadata. The information read will be accessible as metadata.srclibs, which is a dictionary, keyed on srclib name, with the values each being a dictionary in the same format as that returned by the parse_srclib function. A MetaDataException is raised if there are any problems with the srclib metadata. """ global srclibs # They were already loaded if srclibs is not None: return srclibs = {} srcdir = 'srclibs' if not os.path.exists(srcdir): os.makedirs(srcdir) for metadatapath in sorted(glob.glob(os.path.join(srcdir, '*.txt'))): srclibname = os.path.basename(metadatapath[:-4]) srclibs[srclibname] = parse_srclib(metadatapath) def read_metadata(xref=True, check_vcs=[], refresh=True, sort_by_time=False): """Return a list of App instances sorted newest first This reads all of the metadata files in a 'data' repository, then builds a list of App instances from those files. The list is sorted based on creation time, newest first. Most of the time, the newer files are the most interesting. If there are multiple metadata files for a single appid, then the first file that is parsed wins over all the others, and the rest throw an exception. So the original .txt format is parsed first, at least until newer formats stabilize. check_vcs is the list of appids to check for .fdroid.yml in source """ # Always read the srclibs before the apps, since they can use a srlib as # their source repository. read_srclibs() apps = OrderedDict() for basedir in ('metadata', 'tmp'): if not os.path.exists(basedir): os.makedirs(basedir) metadatafiles = (glob.glob(os.path.join('metadata', '*.txt')) + glob.glob(os.path.join('metadata', '*.json')) + glob.glob(os.path.join('metadata', '*.yml')) + glob.glob('.fdroid.txt') + glob.glob('.fdroid.json') + glob.glob('.fdroid.yml')) if sort_by_time: entries = ((os.stat(path).st_mtime, path) for path in metadatafiles) metadatafiles = [] for _ignored, path in sorted(entries, reverse=True): metadatafiles.append(path) else: # most things want the index alpha sorted for stability metadatafiles = sorted(metadatafiles) for metadatapath in metadatafiles: if metadatapath == '.fdroid.txt': warn_or_exception(_('.fdroid.txt is not supported! Convert to .fdroid.yml or .fdroid.json.')) appid, _ignored = fdroidserver.common.get_extension(os.path.basename(metadatapath)) if appid in apps: warn_or_exception(_("Found multiple metadata files for {appid}") .format(appid=appid)) app = parse_metadata(metadatapath, appid in check_vcs, refresh) check_metadata(app) apps[app.id] = app if xref: # Parse all descriptions at load time, just to ensure cross-referencing # errors are caught early rather than when they hit the build server. def linkres(appid): if appid in apps: return ("fdroid.app:" + appid, "Dummy name - don't know yet") warn_or_exception(_("Cannot resolve app id {appid}").format(appid=appid)) for appid, app in apps.items(): try: description_html(app.Description, linkres) except MetaDataException as e: warn_or_exception(_("Problem with description of {appid}: {error}") .format(appid=appid, error=str(e))) return apps # Port legacy ';' separators list_sep = re.compile(r'[,;]') def split_list_values(s): res = [] for v in re.split(list_sep, s): if not v: continue v = v.strip() if not v: continue res.append(v) return res def get_default_app_info(metadatapath=None): if metadatapath is None: appid = None else: appid, _ignored = fdroidserver.common.get_extension(os.path.basename(metadatapath)) if appid == '.fdroid': # we have local metadata in the app's source if os.path.exists('AndroidManifest.xml'): manifestroot = fdroidserver.common.parse_xml('AndroidManifest.xml') else: pattern = re.compile(r""".*manifest\.srcFile\s+'AndroidManifest\.xml'.*""") for root, dirs, files in os.walk(os.getcwd()): if 'build.gradle' in files: p = os.path.join(root, 'build.gradle') with open(p, 'rb') as f: data = f.read() m = pattern.search(data) if m: logging.debug('Using: ' + os.path.join(root, 'AndroidManifest.xml')) manifestroot = fdroidserver.common.parse_xml(os.path.join(root, 'AndroidManifest.xml')) break if manifestroot is None: warn_or_exception(_("Cannot find an appid for {path}!") .format(path=metadatapath)) appid = manifestroot.attrib['package'] app = App() app.metadatapath = metadatapath if appid is not None: app.id = appid return app def sorted_builds(builds): return sorted(builds, key=lambda build: int(build.versionCode)) esc_newlines = re.compile(r'\\( |\n)') def post_metadata_parse(app): # TODO keep native types, convert only for .txt metadata for k, v in app.items(): if type(v) in (float, int): app[k] = str(v) if 'Builds' in app: app['builds'] = app.pop('Builds') if 'flavours' in app and app['flavours'] == [True]: app['flavours'] = 'yes' if isinstance(app.Categories, str): app.Categories = [app.Categories] elif app.Categories is None: app.Categories = ['None'] else: app.Categories = [str(i) for i in app.Categories] def _yaml_bool_unmapable(v): return v in (True, False, [True], [False]) def _yaml_bool_unmap(v): if v is True: return 'yes' elif v is False: return 'no' elif v == [True]: return ['yes'] elif v == [False]: return ['no'] _bool_allowed = ('disable', 'maven', 'buildozer') builds = [] if 'builds' in app: for build in app['builds']: if not isinstance(build, Build): build = Build(build) for k, v in build.items(): if not (v is None): if flagtype(k) == TYPE_LIST: if _yaml_bool_unmapable(v): build[k] = _yaml_bool_unmap(v) if isinstance(v, str): build[k] = [v] elif isinstance(v, bool): if v: build[k] = ['yes'] else: build[k] = [] elif flagtype(k) is TYPE_INT: build[k] = str(v) elif flagtype(k) is TYPE_STRING: if isinstance(v, bool) and k in _bool_allowed: build[k] = v else: if _yaml_bool_unmapable(v): build[k] = _yaml_bool_unmap(v) else: build[k] = str(v) builds.append(build) app.builds = sorted_builds(builds) # Parse metadata for a single application. # # 'metadatapath' - the filename to read. The "Application ID" aka # "Package Name" for the application comes from this # filename. Pass None to get a blank entry. # # Returns a dictionary containing all the details of the application. There are # two major kinds of information in the dictionary. Keys beginning with capital # letters correspond directory to identically named keys in the metadata file. # Keys beginning with lower case letters are generated in one way or another, # and are not found verbatim in the metadata. # # Known keys not originating from the metadata are: # # 'builds' - a list of dictionaries containing build information # for each defined build # 'comments' - a list of comments from the metadata file. Each is # a list of the form [field, comment] where field is # the name of the field it preceded in the metadata # file. Where field is None, the comment goes at the # end of the file. Alternatively, 'build:version' is # for a comment before a particular build version. # 'descriptionlines' - original lines of description as formatted in the # metadata file. # bool_true = re.compile(r'([Yy]es|[Tt]rue)') bool_false = re.compile(r'([Nn]o|[Ff]alse)') def _decode_bool(s): if bool_true.match(s): return True if bool_false.match(s): return False warn_or_exception(_("Invalid boolean '%s'") % s) def parse_metadata(metadatapath, check_vcs=False, refresh=True): '''parse metadata file, optionally checking the git repo for metadata first''' _ignored, ext = fdroidserver.common.get_extension(metadatapath) accepted = fdroidserver.common.config['accepted_formats'] if ext not in accepted: warn_or_exception(_('"{path}" is not an accepted format, convert to: {formats}') .format(path=metadatapath, formats=', '.join(accepted))) app = App() app.metadatapath = metadatapath name, _ignored = fdroidserver.common.get_extension(os.path.basename(metadatapath)) if name == '.fdroid': check_vcs = False else: app.id = name with open(metadatapath, 'r', encoding='utf-8') as mf: if ext == 'txt': parse_txt_metadata(mf, app) elif ext == 'json': parse_json_metadata(mf, app) elif ext == 'yml': parse_yaml_metadata(mf, app) else: warn_or_exception(_('Unknown metadata format: {path}') .format(path=metadatapath)) if check_vcs and app.Repo: build_dir = fdroidserver.common.get_build_dir(app) metadata_in_repo = os.path.join(build_dir, '.fdroid.yml') if not os.path.isfile(metadata_in_repo): vcs, build_dir = fdroidserver.common.setup_vcs(app) if isinstance(vcs, fdroidserver.common.vcs_git): vcs.gotorevision('HEAD', refresh) # HEAD since we can't know where else to go if os.path.isfile(metadata_in_repo): logging.debug('Including metadata from ' + metadata_in_repo) # do not include fields already provided by main metadata file app_in_repo = parse_metadata(metadata_in_repo) for k, v in app_in_repo.items(): if k not in app: app[k] = v post_metadata_parse(app) if not app.id: if app.builds: build = app.builds[-1] if build.subdir: root_dir = build.subdir else: root_dir = '.' paths = fdroidserver.common.manifest_paths(root_dir, build.gradle) _ignored, _ignored, app.id = fdroidserver.common.parse_androidmanifests(paths, app) return app def parse_json_metadata(mf, app): # fdroid metadata is only strings and booleans, no floats or ints. # TODO create schema using https://pypi.python.org/pypi/jsonschema jsoninfo = json.load(mf, parse_int=lambda s: s, parse_float=lambda s: s) app.update(jsoninfo) for f in ['Description', 'Maintainer Notes']: v = app.get(f) if v: app[f] = '\n'.join(v) return app def parse_yaml_metadata(mf, app): yamldata = yaml.load(mf, Loader=YamlLoader) if yamldata: app.update(yamldata) return app def write_yaml(mf, app): # import rumael.yaml and check version try: import ruamel.yaml except ImportError as e: raise FDroidException('ruamel.yaml not instlled, can not write metadata.') from e if not ruamel.yaml.__version__: raise FDroidException('ruamel.yaml.__version__ not accessible. Please make sure a ruamel.yaml >= 0.13 is installed..') m = re.match(r'(?P[0-9]+)\.(?P[0-9]+)\.(?P[0-9]+)(-.+)?', ruamel.yaml.__version__) if not m: raise FDroidException('ruamel.yaml version malfored, please install an upstream version of ruamel.yaml') if int(m.group('major')) < 0 or int(m.group('minor')) < 13: raise FDroidException('currently installed version of ruamel.yaml ({}) is too old, >= 1.13 required.'.format(ruamel.yaml.__version__)) # suiteable version ruamel.yaml imported successfully _yaml_bools_true = ('y', 'Y', 'yes', 'Yes', 'YES', 'true', 'True', 'TRUE', 'on', 'On', 'ON') _yaml_bools_false = ('n', 'N', 'no', 'No', 'NO', 'false', 'False', 'FALSE', 'off', 'Off', 'OFF') _yaml_bools_plus_lists = [] _yaml_bools_plus_lists.extend(_yaml_bools_true) _yaml_bools_plus_lists.extend([[x] for x in _yaml_bools_true]) _yaml_bools_plus_lists.extend(_yaml_bools_false) _yaml_bools_plus_lists.extend([[x] for x in _yaml_bools_false]) def _class_as_dict_representer(dumper, data): '''Creates a YAML representation of a App/Build instance''' return dumper.represent_dict(data) def _field_to_yaml(typ, value): if typ is TYPE_STRING: if value in _yaml_bools_plus_lists: return ruamel.yaml.scalarstring.SingleQuotedScalarString(str(value)) return str(value) elif typ is TYPE_INT: return int(value) elif typ is TYPE_MULTILINE: if '\n' in value: return ruamel.yaml.scalarstring.preserve_literal(str(value)) else: return str(value) elif typ is TYPE_SCRIPT: if len(value) > 50: return ruamel.yaml.scalarstring.preserve_literal(value) else: return value else: return value def _app_to_yaml(app): cm = ruamel.yaml.comments.CommentedMap() insert_newline = False for field in yaml_app_field_order: if field is '\n': # next iteration will need to insert a newline insert_newline = True else: if app.get(field) or field is 'Builds': # .txt calls it 'builds' internally, everywhere else its 'Builds' if field is 'Builds': if app.get('builds'): cm.update({field: _builds_to_yaml(app)}) elif field is 'CurrentVersionCode': cm.update({field: _field_to_yaml(TYPE_INT, getattr(app, field))}) else: cm.update({field: _field_to_yaml(fieldtype(field), getattr(app, field))}) if insert_newline: # we need to prepend a newline in front of this field insert_newline = False # inserting empty lines is not supported so we add a # bogus comment and over-write its value cm.yaml_set_comment_before_after_key(field, 'bogus') cm.ca.items[field][1][-1].value = '\n' return cm def _builds_to_yaml(app): fields = ['versionName', 'versionCode'] fields.extend(build_flags_order) builds = ruamel.yaml.comments.CommentedSeq() for build in app.builds: b = ruamel.yaml.comments.CommentedMap() for field in fields: if hasattr(build, field) and getattr(build, field): value = getattr(build, field) if field == 'gradle' and value == ['off']: value = [ruamel.yaml.scalarstring.SingleQuotedScalarString('off')] if field in ('disable', 'maven', 'buildozer'): if value == 'no': continue elif value == 'yes': value = 'yes' b.update({field: _field_to_yaml(flagtype(field), value)}) builds.append(b) # insert extra empty lines between build entries for i in range(1, len(builds)): builds.yaml_set_comment_before_after_key(i, 'bogus') builds.ca.items[i][1][-1].value = '\n' return builds yaml_app_field_order = [ 'Disabled', 'AntiFeatures', 'Provides', 'Categories', 'License', 'AuthorName', 'AuthorEmail', 'AuthorWebSite', 'WebSite', 'SourceCode', 'IssueTracker', 'Translation', 'Changelog', 'Donate', 'FlattrID', 'LiberapayID', 'Bitcoin', 'Litecoin', '\n', 'Name', 'AutoName', 'Summary', 'Description', '\n', 'RequiresRoot', '\n', 'RepoType', 'Repo', 'Binaries', '\n', 'Builds', '\n', 'MaintainerNotes', '\n', 'ArchivePolicy', 'AutoUpdateMode', 'UpdateCheckMode', 'UpdateCheckIgnore', 'VercodeOperation', 'UpdateCheckName', 'UpdateCheckData', 'CurrentVersion', 'CurrentVersionCode', '\n', 'NoSourceSince', ] yaml_app = _app_to_yaml(app) ruamel.yaml.round_trip_dump(yaml_app, mf, indent=4, block_seq_indent=2) build_line_sep = re.compile(r'(? # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . from argparse import ArgumentParser from . import common from . import metadata options = None def main(): parser = ArgumentParser(usage="%(prog)s") common.setup_global_opts(parser) metadata.add_metadata_arguments(parser) options = parser.parse_args() metadata.warnings_action = options.W common.read_config(None) metadata.read_metadata(xref=True) if __name__ == "__main__": main() fdroidserver-1.0.9/fdroidserver/verify.py0000664000175000017500000000753113303240575020511 0ustar hanshans00000000000000#!/usr/bin/env python3 # # verify.py - part of the FDroid server tools # Copyright (C) 2013, Ciaran Gultnieks, ciaran@ciarang.com # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . import sys import os import glob import requests from argparse import ArgumentParser import logging from . import _ from . import common from . import net from .exception import FDroidException options = None config = None def main(): global options, config # Parse command line... parser = ArgumentParser(usage="%(prog)s [options] [APPID[:VERCODE] [APPID[:VERCODE] ...]]") common.setup_global_opts(parser) parser.add_argument("appid", nargs='*', help=_("applicationId with optional versionCode in the form APPID[:VERCODE]")) parser.add_argument("--reuse-remote-apk", action="store_true", default=False, help=_("Verify against locally cached copy rather than redownloading.")) options = parser.parse_args() config = common.read_config(options) tmp_dir = 'tmp' if not os.path.isdir(tmp_dir): logging.info(_("Creating temporary directory")) os.makedirs(tmp_dir) unsigned_dir = 'unsigned' if not os.path.isdir(unsigned_dir): logging.error(_("No unsigned directory - nothing to do")) sys.exit(0) verified = 0 notverified = 0 vercodes = common.read_pkg_args(options.appid, True) for apkfile in sorted(glob.glob(os.path.join(unsigned_dir, '*.apk'))): apkfilename = os.path.basename(apkfile) appid, vercode = common.publishednameinfo(apkfile) if vercodes and appid not in vercodes: continue if vercodes[appid] and vercode not in vercodes[appid]: continue try: logging.info("Processing {apkfilename}".format(apkfilename=apkfilename)) remoteapk = os.path.join(tmp_dir, apkfilename) if not options.reuse_remote_apk or not os.path.exists(remoteapk): if os.path.exists(remoteapk): os.remove(remoteapk) url = 'https://f-droid.org/repo/' + apkfilename logging.info("...retrieving " + url) try: net.download_file(url, dldir=tmp_dir) except requests.exceptions.HTTPError: try: net.download_file(url.replace('/repo', '/archive'), dldir=tmp_dir) except requests.exceptions.HTTPError as e: raise FDroidException(_('Downloading {url} failed. {error}') .format(url=url, error=e)) compare_result = common.verify_apks( remoteapk, os.path.join(unsigned_dir, apkfilename), tmp_dir) if compare_result: raise FDroidException(compare_result) logging.info("...successfully verified") verified += 1 except FDroidException as e: logging.info("...NOT verified - {0}".format(e)) notverified += 1 if verified > 0: logging.info("{0} successfully verified".format(verified)) if notverified > 0: logging.info("{0} NOT verified".format(notverified)) sys.exit(notverified) if __name__ == "__main__": main() fdroidserver-1.0.9/fdroidserver/btlog.py0000775000175000017500000002076713272566407020337 0ustar hanshans00000000000000#!/usr/bin/env python3 # # btlog.py - part of the FDroid server tools # Copyright (C) 2017, Hans-Christoph Steiner # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . # This is for creating a binary transparency log in a git repo for any # F-Droid repo accessible via HTTP. It is meant to run very often, # even once a minute in a cronjob, so it uses HEAD requests and the # HTTP ETag to check if the file has changed. HEAD requests should # not count against the download counts. This pattern of a HEAD then # a GET is what fdroidclient uses to avoid ETags being abused as # cookies. This also uses the same HTTP User Agent as the F-Droid # client app so its not easy for the server to distinguish this from # the F-Droid client. import collections import git import glob import os import json import logging import requests import shutil import tempfile import xml.dom.minidom import zipfile from argparse import ArgumentParser from . import _ from . import common from . import server from .exception import FDroidException options = None def make_binary_transparency_log(repodirs, btrepo='binary_transparency', url=None, commit_title='fdroid update'): '''Log the indexes in a standalone git repo to serve as a "binary transparency" log. see: https://www.eff.org/deeplinks/2014/02/open-letter-to-tech-companies ''' logging.info('Committing indexes to ' + btrepo) if os.path.exists(os.path.join(btrepo, '.git')): gitrepo = git.Repo(btrepo) else: if not os.path.exists(btrepo): os.mkdir(btrepo) gitrepo = git.Repo.init(btrepo) if not url: url = common.config['repo_url'].rstrip('/') with open(os.path.join(btrepo, 'README.md'), 'w') as fp: fp.write(""" # Binary Transparency Log for %s This is a log of the signed app index metadata. This is stored in a git repo, which serves as an imperfect append-only storage mechanism. People can then check that any file that they received from that F-Droid repository was a publicly released file. For more info on this idea: * https://wiki.mozilla.org/Security/Binary_Transparency """ % url[:url.rindex('/')]) # strip '/repo' gitrepo.index.add(['README.md', ]) gitrepo.index.commit('add README') for repodir in repodirs: cpdir = os.path.join(btrepo, repodir) if not os.path.exists(cpdir): os.mkdir(cpdir) for f in ('index.xml', 'index-v1.json'): repof = os.path.join(repodir, f) if not os.path.exists(repof): continue dest = os.path.join(cpdir, f) if f.endswith('.xml'): doc = xml.dom.minidom.parse(repof) output = doc.toprettyxml(encoding='utf-8') with open(dest, 'wb') as f: f.write(output) elif f.endswith('.json'): with open(repof) as fp: output = json.load(fp, object_pairs_hook=collections.OrderedDict) with open(dest, 'w') as fp: json.dump(output, fp, indent=2) gitrepo.index.add([repof, ]) for f in ('index.jar', 'index-v1.jar'): repof = os.path.join(repodir, f) if not os.path.exists(repof): continue dest = os.path.join(cpdir, f) jarin = zipfile.ZipFile(repof, 'r') jarout = zipfile.ZipFile(dest, 'w') for info in jarin.infolist(): if info.filename.startswith('META-INF/'): jarout.writestr(info, jarin.read(info.filename)) jarout.close() jarin.close() gitrepo.index.add([repof, ]) output_files = [] for root, dirs, files in os.walk(repodir): for f in files: output_files.append(os.path.relpath(os.path.join(root, f), repodir)) output = collections.OrderedDict() for f in sorted(output_files): repofile = os.path.join(repodir, f) stat = os.stat(repofile) output[f] = ( stat.st_size, stat.st_ctime_ns, stat.st_mtime_ns, stat.st_mode, stat.st_uid, stat.st_gid, ) fslogfile = os.path.join(cpdir, 'filesystemlog.json') with open(fslogfile, 'w') as fp: json.dump(output, fp, indent=2) gitrepo.index.add([os.path.join(repodir, 'filesystemlog.json'), ]) for f in glob.glob(os.path.join(cpdir, '*.HTTP-headers.json')): gitrepo.index.add([os.path.join(repodir, os.path.basename(f)), ]) gitrepo.index.commit(commit_title) def main(): global options parser = ArgumentParser(usage="%(prog)s [options]") common.setup_global_opts(parser) parser.add_argument("--git-repo", default=os.path.join(os.getcwd(), 'binary_transparency'), help=_("Path to the git repo to use as the log")) parser.add_argument("-u", "--url", default='https://f-droid.org', help=_("The base URL for the repo to log (default: https://f-droid.org)")) parser.add_argument("--git-remote", default=None, help=_("Push the log to this git remote repository")) options = parser.parse_args() if options.verbose: logging.getLogger("requests").setLevel(logging.INFO) logging.getLogger("urllib3").setLevel(logging.INFO) else: logging.getLogger("requests").setLevel(logging.WARNING) logging.getLogger("urllib3").setLevel(logging.WARNING) if not os.path.exists(options.git_repo): raise FDroidException( '"%s" does not exist! Create it, or use --git-repo' % options.git_repo) session = requests.Session() new_files = False repodirs = ('repo', 'archive') tempdirbase = tempfile.mkdtemp(prefix='.fdroid-btlog-') for repodir in repodirs: # TODO read HTTP headers for etag from git repo tempdir = os.path.join(tempdirbase, repodir) os.makedirs(tempdir, exist_ok=True) gitrepodir = os.path.join(options.git_repo, repodir) os.makedirs(gitrepodir, exist_ok=True) for f in ('index.jar', 'index.xml', 'index-v1.jar', 'index-v1.json'): dlfile = os.path.join(tempdir, f) dlurl = options.url + '/' + repodir + '/' + f http_headers_file = os.path.join(gitrepodir, f + '.HTTP-headers.json') headers = { 'User-Agent': 'F-Droid 0.102.3' } etag = None if os.path.exists(http_headers_file): with open(http_headers_file) as fp: etag = json.load(fp)['ETag'] r = session.head(dlurl, headers=headers, allow_redirects=False) if r.status_code != 200: logging.debug('HTTP Response (' + str(r.status_code) + '), did not download ' + dlurl) continue if etag and etag == r.headers.get('ETag'): logging.debug('ETag matches, did not download ' + dlurl) continue r = session.get(dlurl, headers=headers, allow_redirects=False) if r.status_code == 200: with open(dlfile, 'wb') as f: for chunk in r: f.write(chunk) dump = dict() for k, v in r.headers.items(): dump[k] = v with open(http_headers_file, 'w') as fp: json.dump(dump, fp, indent=2, sort_keys=True) new_files = True if new_files: os.chdir(tempdirbase) make_binary_transparency_log(repodirs, options.git_repo, options.url, 'fdroid btlog') if options.git_remote: server.push_binary_transparency(options.git_repo, options.git_remote) shutil.rmtree(tempdirbase, ignore_errors=True) if __name__ == "__main__": main() fdroidserver-1.0.9/fdroidserver/import.py0000664000175000017500000002604713303240575020522 0ustar hanshans00000000000000#!/usr/bin/env python3 # # import.py - part of the FDroid server tools # Copyright (C) 2010-13, Ciaran Gultnieks, ciaran@ciarang.com # Copyright (C) 2013-2014 Daniel Martí # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . import binascii import os import re import shutil import urllib.request from argparse import ArgumentParser from configparser import ConfigParser import logging from . import _ from . import common from . import metadata from .exception import FDroidException SETTINGS_GRADLE = re.compile(r'''include\s+['"]:([^'"]*)['"]''') # Get the repo type and address from the given web page. The page is scanned # in a rather naive manner for 'git clone xxxx', 'hg clone xxxx', etc, and # when one of these is found it's assumed that's the information we want. # Returns repotype, address, or None, reason def getrepofrompage(url): req = urllib.request.urlopen(url) if req.getcode() != 200: return (None, 'Unable to get ' + url + ' - return code ' + str(req.getcode())) page = req.read().decode(req.headers.get_content_charset()) # Works for BitBucket m = re.search('data-fetch-url="(.*)"', page) if m is not None: repo = m.group(1) if repo.endswith('.git'): return ('git', repo) return ('hg', repo) # Works for BitBucket (obsolete) index = page.find('hg clone') if index != -1: repotype = 'hg' repo = page[index + 9:] index = repo.find('<') if index == -1: return (None, _("Error while getting repo address")) repo = repo[:index] repo = repo.split('"')[0] return (repotype, repo) # Works for BitBucket (obsolete) index = page.find('git clone') if index != -1: repotype = 'git' repo = page[index + 10:] index = repo.find('<') if index == -1: return (None, _("Error while getting repo address")) repo = repo[:index] repo = repo.split('"')[0] return (repotype, repo) return (None, _("No information found.") + page) config = None options = None def get_metadata_from_url(app, url): tmp_dir = 'tmp' if not os.path.isdir(tmp_dir): logging.info(_("Creating temporary directory")) os.makedirs(tmp_dir) # Figure out what kind of project it is... projecttype = None app.WebSite = url # by default, we might override it if url.startswith('git://'): projecttype = 'git' repo = url repotype = 'git' app.SourceCode = "" app.WebSite = "" elif url.startswith('https://github.com'): projecttype = 'github' repo = url repotype = 'git' app.SourceCode = url app.IssueTracker = url + '/issues' app.WebSite = "" elif url.startswith('https://gitlab.com/'): projecttype = 'gitlab' # git can be fussy with gitlab URLs unless they end in .git if url.endswith('.git'): url = url[:-4] repo = url + '.git' repotype = 'git' app.WebSite = url app.SourceCode = url + '/tree/HEAD' app.IssueTracker = url + '/issues' elif url.startswith('https://notabug.org/'): projecttype = 'notabug' if url.endswith('.git'): url = url[:-4] repo = url + '.git' repotype = 'git' app.SourceCode = url app.IssueTracker = url + '/issues' app.WebSite = "" elif url.startswith('https://bitbucket.org/'): if url.endswith('/'): url = url[:-1] projecttype = 'bitbucket' app.SourceCode = url + '/src' app.IssueTracker = url + '/issues' # Figure out the repo type and adddress... repotype, repo = getrepofrompage(url) if not repotype: raise FDroidException("Unable to determine vcs type. " + repo) elif url.startswith('https://') and url.endswith('.git'): projecttype = 'git' repo = url repotype = 'git' app.SourceCode = "" app.WebSite = "" if not projecttype: raise FDroidException("Unable to determine the project type. " + "The URL you supplied was not in one of the supported formats. " + "Please consult the manual for a list of supported formats, " + "and supply one of those.") # Ensure we have a sensible-looking repo address at this point. If not, we # might have got a page format we weren't expecting. (Note that we # specifically don't want git@...) if ((repotype != 'bzr' and (not repo.startswith('http://') and not repo.startswith('https://') and not repo.startswith('git://'))) or ' ' in repo): raise FDroidException("Repo address '{0}' does not seem to be valid".format(repo)) # Get a copy of the source so we can extract some info... logging.info('Getting source from ' + repotype + ' repo at ' + repo) build_dir = os.path.join(tmp_dir, 'importer') if os.path.exists(build_dir): shutil.rmtree(build_dir) vcs = common.getvcs(repotype, repo, build_dir) vcs.gotorevision(options.rev) root_dir = get_subdir(build_dir) app.RepoType = repotype app.Repo = repo return root_dir, build_dir config = None options = None def get_subdir(build_dir): if options.subdir: return os.path.join(build_dir, options.subdir) settings_gradle = os.path.join(build_dir, 'settings.gradle') if os.path.exists(settings_gradle): with open(settings_gradle) as fp: m = SETTINGS_GRADLE.search(fp.read()) if m: return os.path.join(build_dir, m.group(1)) return build_dir def main(): global config, options # Parse command line... parser = ArgumentParser() common.setup_global_opts(parser) parser.add_argument("-u", "--url", default=None, help=_("Project URL to import from.")) parser.add_argument("-s", "--subdir", default=None, help=_("Path to main Android project subdirectory, if not in root.")) parser.add_argument("-c", "--categories", default=None, help=_("Comma separated list of categories.")) parser.add_argument("-l", "--license", default=None, help=_("Overall license of the project.")) parser.add_argument("--rev", default=None, help=_("Allows a different revision (or git branch) to be specified for the initial import")) metadata.add_metadata_arguments(parser) options = parser.parse_args() metadata.warnings_action = options.W config = common.read_config(options) apps = metadata.read_metadata() app = metadata.App() app.UpdateCheckMode = "Tags" root_dir = None build_dir = None local_metadata_files = common.get_local_metadata_files() if local_metadata_files != []: raise FDroidException(_("This repo already has local metadata: %s") % local_metadata_files[0]) if options.url is None and os.path.isdir('.git'): app.AutoName = os.path.basename(os.getcwd()) app.RepoType = 'git' build = metadata.Build() root_dir = get_subdir(os.getcwd()) if os.path.exists('build.gradle'): build.gradle = ['yes'] import git repo = git.repo.Repo(root_dir) # git repo for remote in git.Remote.iter_items(repo): if remote.name == 'origin': url = repo.remotes.origin.url if url.startswith('https://git'): # github, gitlab app.SourceCode = url.rstrip('.git') app.Repo = url break # repo.head.commit.binsha is a bytearray stored in a str build.commit = binascii.hexlify(bytearray(repo.head.commit.binsha)) write_local_file = True elif options.url: root_dir, build_dir = get_metadata_from_url(app, options.url) build = metadata.Build() build.commit = '?' build.disable = 'Generated by import.py - check/set version fields and commit id' write_local_file = False else: raise FDroidException("Specify project url.") # Extract some information... paths = common.manifest_paths(root_dir, []) if paths: versionName, versionCode, package = common.parse_androidmanifests(paths, app) if not package: raise FDroidException(_("Couldn't find package ID")) if not versionName: logging.warn(_("Couldn't find latest version name")) if not versionCode: logging.warn(_("Couldn't find latest version code")) else: spec = os.path.join(root_dir, 'buildozer.spec') if os.path.exists(spec): defaults = {'orientation': 'landscape', 'icon': '', 'permissions': '', 'android.api': "18"} bconfig = ConfigParser(defaults, allow_no_value=True) bconfig.read(spec) package = bconfig.get('app', 'package.domain') + '.' + bconfig.get('app', 'package.name') versionName = bconfig.get('app', 'version') versionCode = None else: raise FDroidException(_("No android or kivy project could be found. Specify --subdir?")) # Make sure it's actually new... if package in apps: raise FDroidException("Package " + package + " already exists") # Create a build line... build.versionName = versionName or '?' build.versionCode = versionCode or '?' if options.subdir: build.subdir = options.subdir if options.license: app.License = options.license if options.categories: app.Categories = options.categories if os.path.exists(os.path.join(root_dir, 'jni')): build.buildjni = ['yes'] if os.path.exists(os.path.join(root_dir, 'build.gradle')): build.gradle = ['yes'] metadata.post_metadata_parse(app) app.builds.append(build) if write_local_file: metadata.write_metadata('.fdroid.yml', app) else: # Keep the repo directory to save bandwidth... if not os.path.exists('build'): os.mkdir('build') if build_dir is not None: shutil.move(build_dir, os.path.join('build', package)) with open('build/.fdroidvcs-' + package, 'w') as f: f.write(app.RepoType + ' ' + app.Repo) metadatapath = os.path.join('metadata', package + '.yml') metadata.write_metadata(metadatapath, app) logging.info("Wrote " + metadatapath) if __name__ == "__main__": main() fdroidserver-1.0.9/fdroidserver/mirror.py0000664000175000017500000001565413314105437020523 0ustar hanshans00000000000000#!/usr/bin/env python3 import ipaddress import logging import os import posixpath import socket import subprocess import sys from argparse import ArgumentParser import urllib.parse from . import _ from . import common from . import index from . import update options = None def _run_wget(path, urls): if options.verbose: verbose = '--verbose' else: verbose = '--no-verbose' if not urls: return logging.debug(_('Running wget in {path}').format(path=path)) os.makedirs(path, exist_ok=True) os.chdir(path) urls_file = '.fdroid-mirror-wget-input-file' with open(urls_file, 'w') as fp: for url in urls: fp.write(url.split('?')[0] + '\n') # wget puts query string in the filename subprocess.call(['wget', verbose, '--continue', '--user-agent="fdroid mirror"', '--input-file=' + urls_file]) os.remove(urls_file) def main(): global options parser = ArgumentParser(usage=_("%(prog)s [options] url")) common.setup_global_opts(parser) parser.add_argument("url", nargs='?', help=_('Base URL to mirror, can include the index signing key ' + 'using the query string: ?fingerprint=')) parser.add_argument("--archive", action='store_true', default=False, help=_("Also mirror the full archive section")) parser.add_argument("--output-dir", default=None, help=_("The directory to write the mirror to")) options = parser.parse_args() if options.url is None: logging.error(_('A URL is required as an argument!') + '\n') parser.print_help() sys.exit(1) scheme, hostname, path, params, query, fragment = urllib.parse.urlparse(options.url) fingerprint = urllib.parse.parse_qs(query).get('fingerprint') def _append_to_url_path(*args): '''Append the list of path components to URL, keeping the rest the same''' newpath = posixpath.join(path, *args) return urllib.parse.urlunparse((scheme, hostname, newpath, params, query, fragment)) if fingerprint: config = common.read_config(options) if not ('jarsigner' in config or 'apksigner' in config): logging.error(_('Java JDK not found! Install in standard location or set java_paths!')) sys.exit(1) def _get_index(section, etag=None): url = _append_to_url_path(section) return index.download_repo_index(url, etag=etag) else: def _get_index(section, etag=None): import io import json import zipfile from . import net url = _append_to_url_path(section, 'index-v1.jar') content, etag = net.http_get(url) with zipfile.ZipFile(io.BytesIO(content)) as zip: jsoncontents = zip.open('index-v1.json').read() data = json.loads(jsoncontents.decode('utf-8')) return data, etag ip = None try: ip = ipaddress.ip_address(hostname) except ValueError: pass if hostname == 'f-droid.org' \ or (ip is not None and hostname in socket.gethostbyname_ex('f-droid.org')[2]): print(_('ERROR: this command should never be used to mirror f-droid.org!\n' 'A full mirror of f-droid.org requires more than 200GB.')) sys.exit(1) path = path.rstrip('/') if path.endswith('repo') or path.endswith('archive'): logging.warning(_('Do not include "{path}" in URL!') .format(path=path.split('/')[-1])) elif not path.endswith('fdroid'): logging.warning(_('{url} does not end with "fdroid", check the URL path!') .format(url=options.url)) icondirs = ['icons', ] for density in update.screen_densities: icondirs.append('icons-' + density) if options.output_dir: basedir = options.output_dir else: basedir = os.path.join(os.getcwd(), hostname, path.strip('/')) os.makedirs(basedir, exist_ok=True) if options.archive: sections = ('repo', 'archive') else: sections = ('repo', ) for section in sections: sectiondir = os.path.join(basedir, section) data, etag = _get_index(section) os.makedirs(sectiondir, exist_ok=True) os.chdir(sectiondir) for icondir in icondirs: os.makedirs(os.path.join(sectiondir, icondir), exist_ok=True) urls = [] for packageName, packageList in data['packages'].items(): for package in packageList: to_fetch = [] for k in ('apkName', 'srcname'): if k in package: to_fetch.append(package[k]) elif k == 'apkName': logging.error(_('{appid} is missing {name}') .format(appid=package['packageName'], name=k)) for f in to_fetch: if not os.path.exists(f) \ or (f.endswith('.apk') and os.path.getsize(f) != package['size']): urls.append(_append_to_url_path(section, f)) urls.append(_append_to_url_path(section, f + '.asc')) _run_wget(sectiondir, urls) for app in data['apps']: localized = app.get('localized') if localized: for locale, d in localized.items(): urls = [] components = (section, app['packageName'], locale) for k in update.GRAPHIC_NAMES: f = d.get(k) if f: filepath_tuple = components + (f, ) urls.append(_append_to_url_path(*filepath_tuple)) _run_wget(os.path.join(basedir, *components), urls) for k in update.SCREENSHOT_DIRS: urls = [] filelist = d.get(k) if filelist: components = (section, app['packageName'], locale, k) for f in filelist: filepath_tuple = components + (f, ) urls.append(_append_to_url_path(*filepath_tuple)) _run_wget(os.path.join(basedir, *components), urls) urls = dict() for app in data['apps']: if 'icon' not in app: logging.error(_('no "icon" in {appid}').format(appid=app['packageName'])) continue icon = app['icon'] for icondir in icondirs: url = _append_to_url_path(section, icondir, icon) if icondir not in urls: urls[icondir] = [] urls[icondir].append(url) for icondir in icondirs: _run_wget(os.path.join(basedir, section, icondir), urls[icondir]) if __name__ == "__main__": main() fdroidserver-1.0.9/fdroidserver/signindex.py0000664000175000017500000001004213321147362021164 0ustar hanshans00000000000000#!/usr/bin/env python3 # # gpgsign.py - part of the FDroid server tools # Copyright (C) 2015, Ciaran Gultnieks, ciaran@ciarang.com # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . import os import zipfile from argparse import ArgumentParser import logging from . import _ from . import common from .exception import FDroidException config = None options = None def sign_jar(jar): """ Sign a JAR file with Java's jarsigner. This method requires a properly initialized config object. This does use old hashing algorithms, i.e. SHA1, but that's not broken yet for file verification. This could be set to SHA256, but then Android < 4.3 would not be able to verify it. https://code.google.com/p/android/issues/detail?id=38321 """ args = [config['jarsigner'], '-keystore', config['keystore'], '-storepass:env', 'FDROID_KEY_STORE_PASS', '-digestalg', 'SHA1', '-sigalg', 'SHA1withRSA', jar, config['repo_keyalias']] if config['keystore'] == 'NONE': args += config['smartcardoptions'] else: # smardcards never use -keypass args += ['-keypass:env', 'FDROID_KEY_PASS'] env_vars = { 'FDROID_KEY_STORE_PASS': config['keystorepass'], 'FDROID_KEY_PASS': config['keypass'], } p = common.FDroidPopen(args, envs=env_vars) if p.returncode != 0: raise FDroidException("Failed to sign %s!" % jar) def sign_index_v1(repodir, json_name): """ Sign index-v1.json to make index-v1.jar This is a bit different than index.jar: instead of their being index.xml and index_unsigned.jar, the presence of index-v1.json means that there is unsigned data. That file is then stuck into a jar and signed by the signing process. index-v1.json is never published to the repo. It is included in the binary transparency log, if that is enabled. """ name, ext = common.get_extension(json_name) index_file = os.path.join(repodir, json_name) jar_file = os.path.join(repodir, name + '.jar') with zipfile.ZipFile(jar_file, 'w', zipfile.ZIP_DEFLATED) as jar: jar.write(index_file, json_name) sign_jar(jar_file) def main(): global config, options # Parse command line... parser = ArgumentParser(usage="%(prog)s [options]") common.setup_global_opts(parser) options = parser.parse_args() config = common.read_config(options) if 'jarsigner' not in config: raise FDroidException( _('Java jarsigner not found! Install in standard location or set java_paths!')) repodirs = ['repo'] if config['archive_older'] != 0: repodirs.append('archive') signed = 0 for output_dir in repodirs: if not os.path.isdir(output_dir): raise FDroidException("Missing output directory '" + output_dir + "'") unsigned = os.path.join(output_dir, 'index_unsigned.jar') if os.path.exists(unsigned): sign_jar(unsigned) os.rename(unsigned, os.path.join(output_dir, 'index.jar')) logging.info('Signed index in ' + output_dir) signed += 1 json_name = 'index-v1.json' index_file = os.path.join(output_dir, json_name) if os.path.exists(index_file): sign_index_v1(output_dir, json_name) os.remove(index_file) logging.info('Signed ' + index_file) signed += 1 if signed == 0: logging.info(_("Nothing to do")) if __name__ == "__main__": main() fdroidserver-1.0.9/fdroidserver/init.py0000664000175000017500000002737113321737333020157 0ustar hanshans00000000000000#!/usr/bin/env python3 # # init.py - part of the FDroid server tools # Copyright (C) 2010-2013, Ciaran Gultnieks, ciaran@ciarang.com # Copyright (C) 2013-2014 Daniel Martí # Copyright (C) 2013 Hans-Christoph Steiner # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . import glob import os import re import shutil import socket import sys from argparse import ArgumentParser import logging from . import _ from . import common from .exception import FDroidException config = {} options = None def disable_in_config(key, value): '''write a key/value to the local config.py, then comment it out''' with open('config.py', 'r', encoding='utf8') as f: data = f.read() pattern = r'\n[\s#]*' + key + r'\s*=\s*"[^"]*"' repl = '\n#' + key + ' = "' + value + '"' data = re.sub(pattern, repl, data) with open('config.py', 'w', encoding='utf8') as f: f.writelines(data) def main(): global options, config # Parse command line... parser = ArgumentParser() common.setup_global_opts(parser) parser.add_argument("-d", "--distinguished-name", default=None, help=_("X.509 'Distinguished Name' used when generating keys")) parser.add_argument("--keystore", default=None, help=_("Path to the keystore for the repo signing key")) parser.add_argument("--repo-keyalias", default=None, help=_("Alias of the repo signing key in the keystore")) parser.add_argument("--android-home", default=None, help=_("Path to the Android SDK (sometimes set in ANDROID_HOME)")) parser.add_argument("--no-prompt", action="store_true", default=False, help=_("Do not prompt for Android SDK path, just fail")) options = parser.parse_args() aapt = None fdroiddir = os.getcwd() test_config = dict() examplesdir = common.get_examples_dir() common.fill_config_defaults(test_config) # track down where the Android SDK is, the default is to use the path set # in ANDROID_HOME if that exists, otherwise None if options.android_home is not None: test_config['sdk_path'] = options.android_home elif common.use_androguard(): pass elif not common.test_sdk_exists(test_config): if os.path.isfile('/usr/bin/aapt'): # remove sdk_path and build_tools, they are not required test_config.pop('sdk_path', None) test_config.pop('build_tools', None) # make sure at least aapt is found, since this can't do anything without it test_config['aapt'] = common.find_sdk_tools_cmd('aapt') else: # if neither --android-home nor the default sdk_path # exist, prompt the user using platform-specific default default_sdk_path = '/opt/android-sdk' if sys.platform == 'win32' or sys.platform == 'cygwin': p = os.path.join(os.getenv('USERPROFILE'), 'AppData', 'Local', 'Android', 'android-sdk') elif sys.platform == 'darwin': # on OSX, Homebrew is common and has an easy path to detect p = '/usr/local/opt/android-sdk' else: # if the Debian packages are installed, suggest them p = '/usr/lib/android-sdk' if os.path.exists(p): default_sdk_path = p while not options.no_prompt: try: s = input(_('Enter the path to the Android SDK (%s) here:\n> ') % default_sdk_path) except KeyboardInterrupt: print('') sys.exit(1) if re.match(r'^\s*$', s) is not None: test_config['sdk_path'] = default_sdk_path else: test_config['sdk_path'] = s if common.test_sdk_exists(test_config): break if (options.android_home is not None or not common.use_androguard()) \ and not common.test_sdk_exists(test_config): raise FDroidException("Android SDK not found.") if not os.path.exists('config.py'): # 'metadata' and 'tmp' are created in fdroid if not os.path.exists('repo'): os.mkdir('repo') shutil.copy(os.path.join(examplesdir, 'fdroid-icon.png'), fdroiddir) shutil.copyfile(os.path.join(examplesdir, 'config.py'), 'config.py') os.chmod('config.py', 0o0600) # If android_home is None, test_config['sdk_path'] will be used and # "$ANDROID_HOME" may be used if the env var is set up correctly. # If android_home is not None, the path given from the command line # will be directly written in the config. if 'sdk_path' in test_config: common.write_to_config(test_config, 'sdk_path', options.android_home) else: logging.warn('Looks like this is already an F-Droid repo, cowardly refusing to overwrite it...') logging.info('Try running `fdroid init` in an empty directory.') raise FDroidException('Repository already exists.') if common.use_androguard(): pass elif 'aapt' not in test_config or not os.path.isfile(test_config['aapt']): # try to find a working aapt, in all the recent possible paths build_tools = os.path.join(test_config['sdk_path'], 'build-tools') aaptdirs = [] aaptdirs.append(os.path.join(build_tools, test_config['build_tools'])) aaptdirs.append(build_tools) for f in os.listdir(build_tools): if os.path.isdir(os.path.join(build_tools, f)): aaptdirs.append(os.path.join(build_tools, f)) for d in sorted(aaptdirs, reverse=True): if os.path.isfile(os.path.join(d, 'aapt')): aapt = os.path.join(d, 'aapt') break if aapt and os.path.isfile(aapt): dirname = os.path.basename(os.path.dirname(aapt)) if dirname == 'build-tools': # this is the old layout, before versioned build-tools test_config['build_tools'] = '' else: test_config['build_tools'] = dirname common.write_to_config(test_config, 'build_tools') common.ensure_build_tools_exists(test_config) # now that we have a local config.py, read configuration... config = common.read_config(options) # the NDK is optional and there may be multiple versions of it, so it's # left for the user to configure # find or generate the keystore for the repo signing key. First try the # path written in the default config.py. Then check if the user has # specified a path from the command line, which will trump all others. # Otherwise, create ~/.local/share/fdroidserver and stick it in there. If # keystore is set to NONE, that means that Java will look for keys in a # Hardware Security Module aka Smartcard. keystore = config['keystore'] if options.keystore: keystore = os.path.abspath(options.keystore) if options.keystore == 'NONE': keystore = options.keystore else: keystore = os.path.abspath(options.keystore) if not os.path.exists(keystore): logging.info('"' + keystore + '" does not exist, creating a new keystore there.') common.write_to_config(test_config, 'keystore', keystore) repo_keyalias = None keydname = None if options.repo_keyalias: repo_keyalias = options.repo_keyalias common.write_to_config(test_config, 'repo_keyalias', repo_keyalias) if options.distinguished_name: keydname = options.distinguished_name common.write_to_config(test_config, 'keydname', keydname) if keystore == 'NONE': # we're using a smartcard common.write_to_config(test_config, 'repo_keyalias', '1') # seems to be the default disable_in_config('keypass', 'never used with smartcard') common.write_to_config(test_config, 'smartcardoptions', ('-storetype PKCS11 -providerName SunPKCS11-OpenSC ' + '-providerClass sun.security.pkcs11.SunPKCS11 ' + '-providerArg opensc-fdroid.cfg')) # find opensc-pkcs11.so if not os.path.exists('opensc-fdroid.cfg'): if os.path.exists('/usr/lib/opensc-pkcs11.so'): opensc_so = '/usr/lib/opensc-pkcs11.so' elif os.path.exists('/usr/lib64/opensc-pkcs11.so'): opensc_so = '/usr/lib64/opensc-pkcs11.so' else: files = glob.glob('/usr/lib/' + os.uname()[4] + '-*-gnu/opensc-pkcs11.so') if len(files) > 0: opensc_so = files[0] else: opensc_so = '/usr/lib/opensc-pkcs11.so' logging.warn('No OpenSC PKCS#11 module found, ' + 'install OpenSC then edit "opensc-fdroid.cfg"!') with open(os.path.join(examplesdir, 'opensc-fdroid.cfg'), 'r') as f: opensc_fdroid = f.read() opensc_fdroid = re.sub('^library.*', 'library = ' + opensc_so, opensc_fdroid, flags=re.MULTILINE) with open('opensc-fdroid.cfg', 'w') as f: f.write(opensc_fdroid) elif os.path.exists(keystore): to_set = ['keystorepass', 'keypass', 'repo_keyalias', 'keydname'] if repo_keyalias: to_set.remove('repo_keyalias') if keydname: to_set.remove('keydname') logging.warning('\n' + _('Using existing keystore "{path}"').format(path=keystore) + '\n' + _('Now set these in config.py:') + ' ' + ', '.join(to_set) + '\n') else: password = common.genpassword() c = dict(test_config) c['keystorepass'] = password c['keypass'] = password c['repo_keyalias'] = socket.getfqdn() c['keydname'] = 'CN=' + c['repo_keyalias'] + ', OU=F-Droid' common.write_to_config(test_config, 'keystorepass', password) common.write_to_config(test_config, 'keypass', password) common.write_to_config(test_config, 'repo_keyalias', c['repo_keyalias']) common.write_to_config(test_config, 'keydname', c['keydname']) common.genkeystore(c) msg = '\n' msg += _('Built repo based in "%s" with this config:') % fdroiddir msg += '\n\n Android SDK:\t\t\t' + config['sdk_path'] if aapt: msg += '\n Android SDK Build Tools:\t' + os.path.dirname(aapt) msg += '\n Android NDK r12b (optional):\t$ANDROID_NDK' msg += '\n ' + _('Keystore for signing key:\t') + keystore if repo_keyalias is not None: msg += '\n Alias for key in store:\t' + repo_keyalias msg += '\n\n' + '''To complete the setup, add your APKs to "%s" then run "fdroid update -c; fdroid update". You might also want to edit "config.py" to set the URL, repo name, and more. You should also set up a signing key (a temporary one might have been automatically generated). For more info: https://f-droid.org/docs/Setup_an_F-Droid_App_Repo and https://f-droid.org/docs/Signing_Process''' % os.path.join(fdroiddir, 'repo') logging.info(msg) fdroidserver-1.0.9/fdroidserver/__init__.py0000664000175000017500000000120713272566407020750 0ustar hanshans00000000000000 import gettext import glob import os import sys # support running straight from git and standard installs rootpaths = [ os.path.realpath(os.path.join(os.path.dirname(__file__), '..')), os.path.realpath(os.path.join(os.path.dirname(__file__), '..', '..', '..', '..', 'share')), os.path.join(sys.prefix, 'share'), ] localedir = None for rootpath in rootpaths: if len(glob.glob(os.path.join(rootpath, 'locale', '*', 'LC_MESSAGES', 'fdroidserver.mo'))) > 0: localedir = os.path.join(rootpath, 'locale') break gettext.bindtextdomain('fdroidserver', localedir) gettext.textdomain('fdroidserver') _ = gettext.gettext fdroidserver-1.0.9/fdroidserver/install.py0000664000175000017500000001035713272566407020665 0ustar hanshans00000000000000#!/usr/bin/env python3 # # install.py - part of the FDroid server tools # Copyright (C) 2013, Ciaran Gultnieks, ciaran@ciarang.com # Copyright (C) 2013-2014 Daniel Martí # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . import sys import os import glob from argparse import ArgumentParser import logging from . import _ from . import common from .common import SdkToolsPopen from .exception import FDroidException options = None config = None def devices(): p = SdkToolsPopen(['adb', "devices"]) if p.returncode != 0: raise FDroidException("An error occured when finding devices: %s" % p.output) lines = [l for l in p.output.splitlines() if not l.startswith('* ')] if len(lines) < 3: return [] lines = lines[1:-1] return [l.split()[0] for l in lines] def main(): global options, config # Parse command line... parser = ArgumentParser(usage="%(prog)s [options] [APPID[:VERCODE] [APPID[:VERCODE] ...]]") common.setup_global_opts(parser) parser.add_argument("appid", nargs='*', help=_("applicationId with optional versionCode in the form APPID[:VERCODE]")) parser.add_argument("-a", "--all", action="store_true", default=False, help=_("Install all signed applications available")) options = parser.parse_args() if not options.appid and not options.all: parser.error(_("option %s: If you really want to install all the signed apps, use --all") % "all") config = common.read_config(options) output_dir = 'repo' if not os.path.isdir(output_dir): logging.info(_("No signed output directory - nothing to do")) sys.exit(0) if options.appid: vercodes = common.read_pkg_args(options.appid, True) apks = {appid: None for appid in vercodes} # Get the signed apk with the highest vercode for apkfile in sorted(glob.glob(os.path.join(output_dir, '*.apk'))): try: appid, vercode = common.publishednameinfo(apkfile) except FDroidException: continue if appid not in apks: continue if vercodes[appid] and vercode not in vercodes[appid]: continue apks[appid] = apkfile for appid, apk in apks.items(): if not apk: raise FDroidException(_("No signed apk available for %s") % appid) else: apks = {common.publishednameinfo(apkfile)[0]: apkfile for apkfile in sorted(glob.glob(os.path.join(output_dir, '*.apk')))} for appid, apk in apks.items(): # Get device list each time to avoid device not found errors devs = devices() if not devs: raise FDroidException(_("No attached devices found")) logging.info(_("Installing %s...") % apk) for dev in devs: logging.info(_("Installing '{apkfilename}' on {dev}...").format(apkfilename=apk, dev=dev)) p = SdkToolsPopen(['adb', "-s", dev, "install", apk]) fail = "" for line in p.output.splitlines(): if line.startswith("Failure"): fail = line[9:-1] if not fail: continue if fail == "INSTALL_FAILED_ALREADY_EXISTS": logging.warn(_("'{apkfilename}' is already installed on {dev}.") .format(apkfilename=apk, dev=dev)) else: raise FDroidException(_("Failed to install '{apkfilename}' on {dev}: {error}") .format(apkfilename=apk, dev=dev, error=fail)) logging.info('\n' + _('Finished')) if __name__ == "__main__": main() fdroidserver-1.0.9/fdroidserver/checkupdates.py0000664000175000017500000005732713303240575021660 0ustar hanshans00000000000000#!/usr/bin/env python3 # # checkupdates.py - part of the FDroid server tools # Copyright (C) 2010-2015, Ciaran Gultnieks, ciaran@ciarang.com # Copyright (C) 2013-2014 Daniel Martí # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . import os import re import urllib.request import urllib.error import time import subprocess import sys from argparse import ArgumentParser import traceback import html from distutils.version import LooseVersion import logging import copy import urllib.parse from . import _ from . import common from . import metadata from .exception import VCSException, NoSubmodulesException, FDroidException, MetaDataException # Check for a new version by looking at a document retrieved via HTTP. # The app's Update Check Data field is used to provide the information # required. def check_http(app): try: if not app.UpdateCheckData: raise FDroidException('Missing Update Check Data') urlcode, codeex, urlver, verex = app.UpdateCheckData.split('|') parsed = urllib.parse.urlparse(urlcode) if not parsed.netloc or not parsed.scheme or parsed.scheme != 'https': raise FDroidException(_('UpdateCheckData has invalid URL: {url}').format(url=urlcode)) if urlver != '.': parsed = urllib.parse.urlparse(urlver) if not parsed.netloc or not parsed.scheme or parsed.scheme != 'https': raise FDroidException(_('UpdateCheckData has invalid URL: {url}').format(url=urlcode)) vercode = "99999999" if len(urlcode) > 0: logging.debug("...requesting {0}".format(urlcode)) req = urllib.request.Request(urlcode, None) resp = urllib.request.urlopen(req, None, 20) page = resp.read().decode('utf-8') m = re.search(codeex, page) if not m: raise FDroidException("No RE match for version code") vercode = m.group(1).strip() version = "??" if len(urlver) > 0: if urlver != '.': logging.debug("...requesting {0}".format(urlver)) req = urllib.request.Request(urlver, None) resp = urllib.request.urlopen(req, None, 20) page = resp.read().decode('utf-8') m = re.search(verex, page) if not m: raise FDroidException("No RE match for version") version = m.group(1) return (version, vercode) except FDroidException: msg = "Could not complete http check for app {0} due to unknown error: {1}".format(app.id, traceback.format_exc()) return (None, msg) # Check for a new version by looking at the tags in the source repo. # Whether this can be used reliably or not depends on # the development procedures used by the project's developers. Use it with # caution, because it's inappropriate for many projects. # Returns (None, "a message") if this didn't work, or (version, vercode, tag) for # the details of the current version. def check_tags(app, pattern): try: if app.RepoType == 'srclib': build_dir = os.path.join('build', 'srclib', app.Repo) repotype = common.getsrclibvcs(app.Repo) else: build_dir = os.path.join('build', app.id) repotype = app.RepoType if repotype not in ('git', 'git-svn', 'hg', 'bzr'): return (None, 'Tags update mode only works for git, hg, bzr and git-svn repositories currently', None) if repotype == 'git-svn' and ';' not in app.Repo: return (None, 'Tags update mode used in git-svn, but the repo was not set up with tags', None) # Set up vcs interface and make sure we have the latest code... vcs = common.getvcs(app.RepoType, app.Repo, build_dir) vcs.gotorevision(None) last_build = app.get_last_build() try_init_submodules(app, last_build, vcs) hpak = None htag = None hver = None hcode = "0" tags = [] if repotype == 'git': tags = vcs.latesttags() else: tags = vcs.gettags() if not tags: return (None, "No tags found", None) logging.debug("All tags: " + ','.join(tags)) if pattern: pat = re.compile(pattern) tags = [tag for tag in tags if pat.match(tag)] if not tags: return (None, "No matching tags found", None) logging.debug("Matching tags: " + ','.join(tags)) if len(tags) > 5 and repotype == 'git': tags = tags[:5] logging.debug("Latest tags: " + ','.join(tags)) for tag in tags: logging.debug("Check tag: '{0}'".format(tag)) vcs.gotorevision(tag) for subdir in possible_subdirs(app): if subdir == '.': root_dir = build_dir else: root_dir = os.path.join(build_dir, subdir) paths = common.manifest_paths(root_dir, last_build.gradle) version, vercode, package = common.parse_androidmanifests(paths, app) if vercode: logging.debug("Manifest exists in subdir '{0}'. Found version {1} ({2})" .format(subdir, version, vercode)) if int(vercode) > int(hcode): hpak = package htag = tag hcode = str(int(vercode)) hver = version if not hpak: return (None, "Couldn't find package ID", None) if hver: return (hver, hcode, htag) return (None, "Couldn't find any version information", None) except VCSException as vcse: msg = "VCS error while scanning app {0}: {1}".format(app.id, vcse) return (None, msg, None) except Exception: msg = "Could not scan app {0} due to unknown error: {1}".format(app.id, traceback.format_exc()) return (None, msg, None) # Check for a new version by looking at the AndroidManifest.xml at the HEAD # of the source repo. Whether this can be used reliably or not depends on # the development procedures used by the project's developers. Use it with # caution, because it's inappropriate for many projects. # Returns (None, "a message") if this didn't work, or (version, vercode) for # the details of the current version. def check_repomanifest(app, branch=None): try: if app.RepoType == 'srclib': build_dir = os.path.join('build', 'srclib', app.Repo) repotype = common.getsrclibvcs(app.Repo) else: build_dir = os.path.join('build', app.id) repotype = app.RepoType # Set up vcs interface and make sure we have the latest code... vcs = common.getvcs(app.RepoType, app.Repo, build_dir) if repotype == 'git': if branch: branch = 'origin/' + branch vcs.gotorevision(branch) elif repotype == 'git-svn': vcs.gotorevision(branch) elif repotype == 'hg': vcs.gotorevision(branch) elif repotype == 'bzr': vcs.gotorevision(None) last_build = metadata.Build() if len(app.builds) > 0: last_build = app.builds[-1] try_init_submodules(app, last_build, vcs) hpak = None hver = None hcode = "0" for subdir in possible_subdirs(app): if subdir == '.': root_dir = build_dir else: root_dir = os.path.join(build_dir, subdir) paths = common.manifest_paths(root_dir, last_build.gradle) version, vercode, package = common.parse_androidmanifests(paths, app) if vercode: logging.debug("Manifest exists in subdir '{0}'. Found version {1} ({2})" .format(subdir, version, vercode)) if int(vercode) > int(hcode): hpak = package hcode = str(int(vercode)) hver = version if not hpak: return (None, "Couldn't find package ID") if hver: return (hver, hcode) return (None, "Couldn't find any version information") except VCSException as vcse: msg = "VCS error while scanning app {0}: {1}".format(app.id, vcse) return (None, msg) except Exception: msg = "Could not scan app {0} due to unknown error: {1}".format(app.id, traceback.format_exc()) return (None, msg) def check_repotrunk(app): try: if app.RepoType == 'srclib': build_dir = os.path.join('build', 'srclib', app.Repo) repotype = common.getsrclibvcs(app.Repo) else: build_dir = os.path.join('build', app.id) repotype = app.RepoType if repotype not in ('git-svn', ): return (None, 'RepoTrunk update mode only makes sense in git-svn repositories') # Set up vcs interface and make sure we have the latest code... vcs = common.getvcs(app.RepoType, app.Repo, build_dir) vcs.gotorevision(None) ref = vcs.getref() return (ref, ref) except VCSException as vcse: msg = "VCS error while scanning app {0}: {1}".format(app.id, vcse) return (None, msg) except Exception: msg = "Could not scan app {0} due to unknown error: {1}".format(app.id, traceback.format_exc()) return (None, msg) # Check for a new version by looking at the Google Play Store. # Returns (None, "a message") if this didn't work, or (version, None) for # the details of the current version. def check_gplay(app): time.sleep(15) url = 'https://play.google.com/store/apps/details?id=' + app.id headers = {'User-Agent': 'Mozilla/5.0 (X11; Linux i686; rv:18.0) Gecko/20100101 Firefox/18.0'} req = urllib.request.Request(url, None, headers) try: resp = urllib.request.urlopen(req, None, 20) page = resp.read().decode() except urllib.error.HTTPError as e: return (None, str(e.code)) except Exception as e: return (None, 'Failed:' + str(e)) version = None m = re.search('itemprop="softwareVersion">[ ]*([^<]+)[ ]*', page) if m: version = html.unescape(m.group(1)) if version == 'Varies with device': return (None, 'Device-variable version, cannot use this method') if not version: return (None, "Couldn't find version") return (version.strip(), None) def try_init_submodules(app, last_build, vcs): """Try to init submodules if the last build entry used them. They might have been removed from the app's repo in the meantime, so if we can't find any submodules we continue with the updates check. If there is any other error in initializing them then we stop the check. """ if last_build.submodules: try: vcs.initsubmodules() except NoSubmodulesException: logging.info("No submodules present for {}".format(app.Name)) # Return all directories under startdir that contain any of the manifest # files, and thus are probably an Android project. def dirs_with_manifest(startdir): for root, dirs, files in os.walk(startdir): if any(m in files for m in [ 'AndroidManifest.xml', 'pom.xml', 'build.gradle']): yield root # Tries to find a new subdir starting from the root build_dir. Returns said # subdir relative to the build dir if found, None otherwise. def possible_subdirs(app): if app.RepoType == 'srclib': build_dir = os.path.join('build', 'srclib', app.Repo) else: build_dir = os.path.join('build', app.id) last_build = app.get_last_build() for d in dirs_with_manifest(build_dir): m_paths = common.manifest_paths(d, last_build.gradle) package = common.parse_androidmanifests(m_paths, app)[2] if package is not None: subdir = os.path.relpath(d, build_dir) logging.debug("Adding possible subdir %s" % subdir) yield subdir def fetch_autoname(app, tag): if not app.RepoType or app.UpdateCheckMode in ('None', 'Static'): return None if app.RepoType == 'srclib': build_dir = os.path.join('build', 'srclib', app.Repo) else: build_dir = os.path.join('build', app.id) try: vcs = common.getvcs(app.RepoType, app.Repo, build_dir) vcs.gotorevision(tag) except VCSException: return None last_build = app.get_last_build() logging.debug("...fetch auto name from " + build_dir) new_name = None for subdir in possible_subdirs(app): if subdir == '.': root_dir = build_dir else: root_dir = os.path.join(build_dir, subdir) new_name = common.fetch_real_name(root_dir, last_build.gradle) if new_name is not None: break commitmsg = None if new_name: logging.debug("...got autoname '" + new_name + "'") if new_name != app.AutoName: app.AutoName = new_name if not commitmsg: commitmsg = "Set autoname of {0}".format(common.getappname(app)) else: logging.debug("...couldn't get autoname") return commitmsg def checkupdates_app(app): # If a change is made, commitmsg should be set to a description of it. # Only if this is set will changes be written back to the metadata. commitmsg = None tag = None msg = None vercode = None noverok = False mode = app.UpdateCheckMode if mode.startswith('Tags'): pattern = mode[5:] if len(mode) > 4 else None (version, vercode, tag) = check_tags(app, pattern) if version == 'Unknown': version = tag msg = vercode elif mode == 'RepoManifest': (version, vercode) = check_repomanifest(app) msg = vercode elif mode.startswith('RepoManifest/'): tag = mode[13:] (version, vercode) = check_repomanifest(app, tag) msg = vercode elif mode == 'RepoTrunk': (version, vercode) = check_repotrunk(app) msg = vercode elif mode == 'HTTP': (version, vercode) = check_http(app) msg = vercode elif mode in ('None', 'Static'): version = None msg = 'Checking disabled' noverok = True else: version = None msg = 'Invalid update check method' if version and vercode and app.VercodeOperation: if not common.VERCODE_OPERATION_RE.match(app.VercodeOperation): raise MetaDataException(_('Invalid VercodeOperation: {field}') .format(field=app.VercodeOperation)) oldvercode = str(int(vercode)) op = app.VercodeOperation.replace("%c", oldvercode) vercode = str(common.calculate_math_string(op)) logging.debug("Applied vercode operation: %s -> %s" % (oldvercode, vercode)) if version and any(version.startswith(s) for s in [ '${', # Gradle variable names '@string/', # Strings we could not resolve ]): version = "Unknown" updating = False if version is None: logmsg = "...{0} : {1}".format(app.id, msg) if noverok: logging.info(logmsg) else: logging.warn(logmsg) elif vercode == app.CurrentVersionCode: logging.info("...up to date") else: logging.debug("...updating - old vercode={0}, new vercode={1}".format( app.CurrentVersionCode, vercode)) app.CurrentVersion = version app.CurrentVersionCode = str(int(vercode)) updating = True commitmsg = fetch_autoname(app, tag) if updating: name = common.getappname(app) ver = common.getcvname(app) logging.info('...updating to version %s' % ver) commitmsg = 'Update CV of %s to %s' % (name, ver) if options.auto: mode = app.AutoUpdateMode if not app.CurrentVersionCode: logging.warn("Can't auto-update app with no current version code: " + app.id) elif mode in ('None', 'Static'): pass elif mode.startswith('Version '): pattern = mode[8:] if pattern.startswith('+'): try: suffix, pattern = pattern.split(' ', 1) except ValueError: raise MetaDataException("Invalid AUM: " + mode) else: suffix = '' gotcur = False latest = None for build in app.builds: if int(build.versionCode) >= int(app.CurrentVersionCode): gotcur = True if not latest or int(build.versionCode) > int(latest.versionCode): latest = build if int(latest.versionCode) > int(app.CurrentVersionCode): logging.info("Refusing to auto update, since the latest build is newer") if not gotcur: newbuild = copy.deepcopy(latest) newbuild.disable = False newbuild.versionCode = app.CurrentVersionCode newbuild.versionName = app.CurrentVersion + suffix logging.info("...auto-generating build for " + newbuild.versionName) commit = pattern.replace('%v', newbuild.versionName) commit = commit.replace('%c', newbuild.versionCode) newbuild.commit = commit app.builds.append(newbuild) name = common.getappname(app) ver = common.getcvname(app) commitmsg = "Update %s to %s" % (name, ver) else: logging.warn('Invalid auto update mode "' + mode + '" on ' + app.id) if commitmsg: metadata.write_metadata(app.metadatapath, app) if options.commit: logging.info("Commiting update for " + app.metadatapath) gitcmd = ["git", "commit", "-m", commitmsg] if 'auto_author' in config: gitcmd.extend(['--author', config['auto_author']]) gitcmd.extend(["--", app.metadatapath]) if subprocess.call(gitcmd) != 0: raise FDroidException("Git commit failed") def update_wiki(gplaylog, locallog): if config.get('wiki_server') and config.get('wiki_path'): try: import mwclient site = mwclient.Site((config['wiki_protocol'], config['wiki_server']), path=config['wiki_path']) site.login(config['wiki_user'], config['wiki_password']) # Write a page with the last build log for this version code wiki_page_path = 'checkupdates_' + time.strftime('%s', start_timestamp) newpage = site.Pages[wiki_page_path] txt = '' txt += "* command line: " + ' '.join(sys.argv) + "\n" txt += common.get_git_describe_link() txt += "* started at " + common.get_wiki_timestamp(start_timestamp) + '\n' txt += "* completed at " + common.get_wiki_timestamp() + '\n' txt += "\n\n" txt += common.get_android_tools_version_log() txt += "\n\n" if gplaylog: txt += '== --gplay check ==\n\n' txt += gplaylog if locallog: txt += '== local source check ==\n\n' txt += locallog newpage.save(txt, summary='Run log') newpage = site.Pages['checkupdates'] newpage.save('#REDIRECT [[' + wiki_page_path + ']]', summary='Update redirect') except Exception as e: logging.error(_('Error while attempting to publish log: %s') % e) config = None options = None start_timestamp = time.gmtime() def main(): global config, options # Parse command line... parser = ArgumentParser(usage="%(prog)s [options] [APPID [APPID ...]]") common.setup_global_opts(parser) parser.add_argument("appid", nargs='*', help=_("applicationId to check for updates")) parser.add_argument("--auto", action="store_true", default=False, help=_("Process auto-updates")) parser.add_argument("--autoonly", action="store_true", default=False, help=_("Only process apps with auto-updates")) parser.add_argument("--commit", action="store_true", default=False, help=_("Commit changes")) parser.add_argument("--allow-dirty", action="store_true", default=False, help=_("Run on git repo that has uncommitted changes")) parser.add_argument("--gplay", action="store_true", default=False, help=_("Only print differences with the Play Store")) metadata.add_metadata_arguments(parser) options = parser.parse_args() metadata.warnings_action = options.W config = common.read_config(options) if not options.allow_dirty: status = subprocess.check_output(['git', 'status', '--porcelain']) if status: logging.error(_('Build metadata git repo has uncommited changes!')) sys.exit(1) # Get all apps... allapps = metadata.read_metadata() apps = common.read_app_args(options.appid, allapps, False) gplaylog = '' if options.gplay: for appid, app in apps.items(): gplaylog += '* ' + appid + '\n' version, reason = check_gplay(app) if version is None: if reason == '404': logging.info("{0} is not in the Play Store".format(common.getappname(app))) else: logging.info("{0} encountered a problem: {1}".format(common.getappname(app), reason)) if version is not None: stored = app.CurrentVersion if not stored: logging.info("{0} has no Current Version but has version {1} on the Play Store" .format(common.getappname(app), version)) elif LooseVersion(stored) < LooseVersion(version): logging.info("{0} has version {1} on the Play Store, which is bigger than {2}" .format(common.getappname(app), version, stored)) else: if stored != version: logging.info("{0} has version {1} on the Play Store, which differs from {2}" .format(common.getappname(app), version, stored)) else: logging.info("{0} has the same version {1} on the Play Store" .format(common.getappname(app), version)) update_wiki(gplaylog, None) return locallog = '' for appid, app in apps.items(): if options.autoonly and app.AutoUpdateMode in ('None', 'Static'): logging.debug(_("Nothing to do for {appid}.").format(appid=appid)) continue msg = _("Processing {appid}").format(appid=appid) logging.info(msg) locallog += '* ' + msg + '\n' try: checkupdates_app(app) except Exception as e: msg = _("...checkupdate failed for {appid} : {error}").format(appid=appid, error=e) logging.error(msg) locallog += msg + '\n' update_wiki(None, locallog) logging.info(_("Finished")) if __name__ == "__main__": main() fdroidserver-1.0.9/fdroidserver/build.py0000664000175000017500000015570113323655167020320 0ustar hanshans00000000000000#!/usr/bin/env python3 # # build.py - part of the FDroid server tools # Copyright (C) 2010-2014, Ciaran Gultnieks, ciaran@ciarang.com # Copyright (C) 2013-2014 Daniel Martí # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . import os import shutil import glob import subprocess import re import resource import sys import tarfile import threading import traceback import time import requests import tempfile from configparser import ConfigParser from argparse import ArgumentParser import logging from gettext import ngettext from . import _ from . import common from . import net from . import metadata from . import scanner from . import vmtools from .common import FDroidPopen, SdkToolsPopen from .exception import FDroidException, BuildException, VCSException try: import paramiko except ImportError: pass # Note that 'force' here also implies test mode. def build_server(app, build, vcs, build_dir, output_dir, log_dir, force): """Do a build on the builder vm. :param app: app metadata dict :param build: :param vcs: version control system controller object :param build_dir: local source-code checkout of app :param output_dir: target folder for the build result :param force: """ global buildserverid try: paramiko except NameError: raise BuildException("Paramiko is required to use the buildserver") if options.verbose: logging.getLogger("paramiko").setLevel(logging.INFO) else: logging.getLogger("paramiko").setLevel(logging.WARN) sshinfo = vmtools.get_clean_builder('builder', options.reset_server) try: if not buildserverid: buildserverid = subprocess.check_output(['vagrant', 'ssh', '-c', 'cat /home/vagrant/buildserverid'], cwd='builder').strip().decode() logging.debug(_('Fetched buildserverid from VM: {buildserverid}') .format(buildserverid=buildserverid)) # Open SSH connection... logging.info("Connecting to virtual machine...") sshs = paramiko.SSHClient() sshs.set_missing_host_key_policy(paramiko.AutoAddPolicy()) sshs.connect(sshinfo['hostname'], username=sshinfo['user'], port=sshinfo['port'], timeout=300, look_for_keys=False, key_filename=sshinfo['idfile']) homedir = '/home/' + sshinfo['user'] # Get an SFTP connection... ftp = sshs.open_sftp() ftp.get_channel().settimeout(60) # Put all the necessary files in place... ftp.chdir(homedir) # Helper to copy the contents of a directory to the server... def send_dir(path): logging.debug("rsyncing " + path + " to " + ftp.getcwd()) # TODO this should move to `vagrant rsync` from >= v1.5 try: subprocess.check_output(['rsync', '--recursive', '--perms', '--links', '--quiet', '--rsh=' + 'ssh -o StrictHostKeyChecking=no' + ' -o UserKnownHostsFile=/dev/null' + ' -o LogLevel=FATAL' + ' -o IdentitiesOnly=yes' + ' -o PasswordAuthentication=no' + ' -p ' + str(sshinfo['port']) + ' -i ' + sshinfo['idfile'], path, sshinfo['user'] + "@" + sshinfo['hostname'] + ":" + ftp.getcwd()], stderr=subprocess.STDOUT) except subprocess.CalledProcessError as e: raise FDroidException(str(e), e.output.decode()) logging.info("Preparing server for build...") serverpath = os.path.abspath(os.path.dirname(__file__)) ftp.mkdir('fdroidserver') ftp.chdir('fdroidserver') ftp.put(os.path.join(serverpath, '..', 'fdroid'), 'fdroid') ftp.chmod('fdroid', 0o755) send_dir(os.path.join(serverpath)) ftp.chdir(homedir) ftp.put(os.path.join(serverpath, '..', 'buildserver', 'config.buildserver.py'), 'config.py') ftp.chmod('config.py', 0o600) # Copy over the ID (head commit hash) of the fdroidserver in use... with open(os.path.join(os.getcwd(), 'tmp', 'fdroidserverid'), 'wb') as fp: fp.write(subprocess.check_output(['git', 'rev-parse', 'HEAD'], cwd=serverpath)) ftp.put('tmp/fdroidserverid', 'fdroidserverid') # Copy the metadata - just the file for this app... ftp.mkdir('metadata') ftp.mkdir('srclibs') ftp.chdir('metadata') ftp.put(app.metadatapath, os.path.basename(app.metadatapath)) # And patches if there are any... if os.path.exists(os.path.join('metadata', app.id)): send_dir(os.path.join('metadata', app.id)) ftp.chdir(homedir) # Create the build directory... ftp.mkdir('build') ftp.chdir('build') ftp.mkdir('extlib') ftp.mkdir('srclib') # Copy any extlibs that are required... if build.extlibs: ftp.chdir(homedir + '/build/extlib') for lib in build.extlibs: lib = lib.strip() libsrc = os.path.join('build/extlib', lib) if not os.path.exists(libsrc): raise BuildException("Missing extlib {0}".format(libsrc)) lp = lib.split('/') for d in lp[:-1]: if d not in ftp.listdir(): ftp.mkdir(d) ftp.chdir(d) ftp.put(libsrc, lp[-1]) for _ignored in lp[:-1]: ftp.chdir('..') # Copy any srclibs that are required... srclibpaths = [] if build.srclibs: for lib in build.srclibs: srclibpaths.append( common.getsrclib(lib, 'build/srclib', basepath=True, prepare=False)) # If one was used for the main source, add that too. basesrclib = vcs.getsrclib() if basesrclib: srclibpaths.append(basesrclib) for name, number, lib in srclibpaths: logging.info("Sending srclib '%s'" % lib) ftp.chdir(homedir + '/build/srclib') if not os.path.exists(lib): raise BuildException("Missing srclib directory '" + lib + "'") fv = '.fdroidvcs-' + name ftp.put(os.path.join('build/srclib', fv), fv) send_dir(lib) # Copy the metadata file too... ftp.chdir(homedir + '/srclibs') ftp.put(os.path.join('srclibs', name + '.txt'), name + '.txt') # Copy the main app source code # (no need if it's a srclib) if (not basesrclib) and os.path.exists(build_dir): ftp.chdir(homedir + '/build') fv = '.fdroidvcs-' + app.id ftp.put(os.path.join('build', fv), fv) send_dir(build_dir) # Execute the build script... logging.info("Starting build...") chan = sshs.get_transport().open_session() chan.get_pty() cmdline = os.path.join(homedir, 'fdroidserver', 'fdroid') cmdline += ' build --on-server' if force: cmdline += ' --force --test' if options.verbose: cmdline += ' --verbose' if options.skipscan: cmdline += ' --skip-scan' cmdline += " %s:%s" % (app.id, build.versionCode) chan.exec_command('bash --login -c "' + cmdline + '"') # Fetch build process output ... try: cmd_stdout = chan.makefile('rb', 1024) output = bytes() output += common.get_android_tools_version_log(build.ndk_path()).encode() while not chan.exit_status_ready(): line = cmd_stdout.readline() if line: if options.verbose: logging.debug("buildserver > " + str(line, 'utf-8').rstrip()) output += line else: time.sleep(0.05) for line in cmd_stdout.readlines(): if options.verbose: logging.debug("buildserver > " + str(line, 'utf-8').rstrip()) output += line finally: cmd_stdout.close() # Check build process exit status ... logging.info("...getting exit status") returncode = chan.recv_exit_status() if returncode != 0: if timeout_event.is_set(): message = "Timeout exceeded! Build VM force-stopped for {0}:{1}" else: message = "Build.py failed on server for {0}:{1}" raise BuildException(message.format(app.id, build.versionName), None if options.verbose else str(output, 'utf-8')) # Retreive logs... toolsversion_log = common.get_toolsversion_logname(app, build) try: ftp.chdir(os.path.join(homedir, log_dir)) ftp.get(toolsversion_log, os.path.join(log_dir, toolsversion_log)) logging.debug('retrieved %s', toolsversion_log) except Exception as e: logging.warn('could not get %s from builder vm: %s' % (toolsversion_log, e)) # Retrieve the built files... logging.info("Retrieving build output...") if force: ftp.chdir(homedir + '/tmp') else: ftp.chdir(homedir + '/unsigned') apkfile = common.get_release_filename(app, build) tarball = common.getsrcname(app, build) try: ftp.get(apkfile, os.path.join(output_dir, apkfile)) if not options.notarball: ftp.get(tarball, os.path.join(output_dir, tarball)) except Exception: raise BuildException( "Build failed for {0}:{1} - missing output files".format( app.id, build.versionName), None if options.verbose else str(output, 'utf-8')) ftp.close() finally: # Suspend the build server. vm = vmtools.get_build_vm('builder') vm.suspend() def force_gradle_build_tools(build_dir, build_tools): for root, dirs, files in os.walk(build_dir): for filename in files: if not filename.endswith('.gradle'): continue path = os.path.join(root, filename) if not os.path.isfile(path): continue logging.debug("Forcing build-tools %s in %s" % (build_tools, path)) common.regsub_file(r"""(\s*)buildToolsVersion([\s=]+).*""", r"""\1buildToolsVersion\2'%s'""" % build_tools, path) def transform_first_char(string, method): """Uses method() on the first character of string.""" if len(string) == 0: return string if len(string) == 1: return method(string) return method(string[0]) + string[1:] def has_native_code(apkobj): """aapt checks if there are architecture folders under the lib/ folder so we are simulating the same behaviour""" arch_re = re.compile("^lib/(.*)/.*$") arch = [file for file in apkobj.get_files() if arch_re.match(file)] return False if not arch else True def get_apk_metadata_aapt(apkfile): """aapt function to extract versionCode, versionName, packageName and nativecode""" vercode = None version = None foundid = None nativecode = None p = SdkToolsPopen(['aapt', 'dump', 'badging', apkfile], output=False) for line in p.output.splitlines(): if line.startswith("package:"): pat = re.compile(".*name='([a-zA-Z0-9._]*)'.*") m = pat.match(line) if m: foundid = m.group(1) pat = re.compile(".*versionCode='([0-9]*)'.*") m = pat.match(line) if m: vercode = m.group(1) pat = re.compile(".*versionName='([^']*)'.*") m = pat.match(line) if m: version = m.group(1) elif line.startswith("native-code:"): nativecode = line[12:] return vercode, version, foundid, nativecode def get_apk_metadata_androguard(apkfile): """androguard function to extract versionCode, versionName, packageName and nativecode""" try: from androguard.core.bytecodes.apk import APK apkobject = APK(apkfile) except ImportError: raise BuildException("androguard library is not installed and aapt binary not found") except FileNotFoundError: raise BuildException("Could not open apk file for metadata analysis") if not apkobject.is_valid_APK(): raise BuildException("Invalid APK provided") foundid = apkobject.get_package() vercode = apkobject.get_androidversion_code() version = apkobject.get_androidversion_name() nativecode = has_native_code(apkobject) return vercode, version, foundid, nativecode def get_metadata_from_apk(app, build, apkfile): """get the required metadata from the built APK""" if common.SdkToolsPopen(['aapt', 'version'], output=False): vercode, version, foundid, nativecode = get_apk_metadata_aapt(apkfile) else: vercode, version, foundid, nativecode = get_apk_metadata_androguard(apkfile) # Ignore empty strings or any kind of space/newline chars that we don't # care about if nativecode is not None: nativecode = nativecode.strip() nativecode = None if not nativecode else nativecode if build.buildjni and build.buildjni != ['no']: if nativecode is None: raise BuildException("Native code should have been built but none was packaged") if build.novcheck: vercode = build.versionCode version = build.versionName if not version or not vercode: raise BuildException("Could not find version information in build in output") if not foundid: raise BuildException("Could not find package ID in output") if foundid != app.id: raise BuildException("Wrong package ID - build " + foundid + " but expected " + app.id) return vercode, version def build_local(app, build, vcs, build_dir, output_dir, log_dir, srclib_dir, extlib_dir, tmp_dir, force, onserver, refresh): """Do a build locally.""" ndk_path = build.ndk_path() if build.ndk or (build.buildjni and build.buildjni != ['no']): if not ndk_path: logging.critical("Android NDK version '%s' could not be found!" % build.ndk or 'r12b') logging.critical("Configured versions:") for k, v in config['ndk_paths'].items(): if k.endswith("_orig"): continue logging.critical(" %s: %s" % (k, v)) raise FDroidException() elif not os.path.isdir(ndk_path): logging.critical("Android NDK '%s' is not a directory!" % ndk_path) raise FDroidException() common.set_FDroidPopen_env(build) # create ..._toolsversion.log when running in builder vm if onserver: # before doing anything, run the sudo commands to setup the VM if build.sudo: logging.info("Running 'sudo' commands in %s" % os.getcwd()) p = FDroidPopen(['sudo', 'bash', '-x', '-c', build.sudo]) if p.returncode != 0: raise BuildException("Error running sudo command for %s:%s" % (app.id, build.versionName), p.output) p = FDroidPopen(['sudo', 'passwd', '--lock', 'root']) if p.returncode != 0: raise BuildException("Error locking root account for %s:%s" % (app.id, build.versionName), p.output) p = FDroidPopen(['sudo', 'SUDO_FORCE_REMOVE=yes', 'dpkg', '--purge', 'sudo']) if p.returncode != 0: raise BuildException("Error removing sudo for %s:%s" % (app.id, build.versionName), p.output) log_path = os.path.join(log_dir, common.get_toolsversion_logname(app, build)) with open(log_path, 'w') as f: f.write(common.get_android_tools_version_log(build.ndk_path())) else: if build.sudo: logging.warning('%s:%s runs this on the buildserver with sudo:\n\t%s' % (app.id, build.versionName, build.sudo)) # Prepare the source code... root_dir, srclibpaths = common.prepare_source(vcs, app, build, build_dir, srclib_dir, extlib_dir, onserver, refresh) # We need to clean via the build tool in case the binary dirs are # different from the default ones p = None gradletasks = [] bmethod = build.build_method() if bmethod == 'maven': logging.info("Cleaning Maven project...") cmd = [config['mvn3'], 'clean', '-Dandroid.sdk.path=' + config['sdk_path']] if '@' in build.maven: maven_dir = os.path.join(root_dir, build.maven.split('@', 1)[1]) maven_dir = os.path.normpath(maven_dir) else: maven_dir = root_dir p = FDroidPopen(cmd, cwd=maven_dir) elif bmethod == 'gradle': logging.info("Cleaning Gradle project...") if build.preassemble: gradletasks += build.preassemble flavours = build.gradle if flavours == ['yes']: flavours = [] flavours_cmd = ''.join([transform_first_char(flav, str.upper) for flav in flavours]) gradletasks += ['assemble' + flavours_cmd + 'Release'] if config['force_build_tools']: force_gradle_build_tools(build_dir, config['build_tools']) for name, number, libpath in srclibpaths: force_gradle_build_tools(libpath, config['build_tools']) cmd = [config['gradle']] if build.gradleprops: cmd += ['-P' + kv for kv in build.gradleprops] cmd += ['clean'] p = FDroidPopen(cmd, cwd=root_dir) elif bmethod == 'buildozer': pass elif bmethod == 'ant': logging.info("Cleaning Ant project...") p = FDroidPopen(['ant', 'clean'], cwd=root_dir) if p is not None and p.returncode != 0: raise BuildException("Error cleaning %s:%s" % (app.id, build.versionName), p.output) for root, dirs, files in os.walk(build_dir): def del_dirs(dl): for d in dl: if d in dirs: shutil.rmtree(os.path.join(root, d)) def del_files(fl): for f in fl: if f in files: os.remove(os.path.join(root, f)) if any(f in files for f in ['build.gradle', 'settings.gradle']): # Even when running clean, gradle stores task/artifact caches in # .gradle/ as binary files. To avoid overcomplicating the scanner, # manually delete them, just like `gradle clean` should have removed # the build/* dirs. del_dirs([os.path.join('build', 'android-profile'), os.path.join('build', 'generated'), os.path.join('build', 'intermediates'), os.path.join('build', 'outputs'), os.path.join('build', 'reports'), os.path.join('build', 'tmp'), '.gradle']) del_files(['gradlew', 'gradlew.bat']) if 'pom.xml' in files: del_dirs(['target']) if any(f in files for f in ['ant.properties', 'project.properties', 'build.xml']): del_dirs(['bin', 'gen']) if 'jni' in dirs: del_dirs(['obj']) if options.skipscan: if build.scandelete: raise BuildException("Refusing to skip source scan since scandelete is present") else: # Scan before building... logging.info("Scanning source for common problems...") count = scanner.scan_source(build_dir, build) if count > 0: if force: logging.warning(ngettext('Scanner found {} problem', 'Scanner found {} problems', count).format(count)) else: raise BuildException(ngettext( "Can't build due to {} error while scanning", "Can't build due to {} errors while scanning", count).format(count)) if not options.notarball: # Build the source tarball right before we build the release... logging.info("Creating source tarball...") tarname = common.getsrcname(app, build) tarball = tarfile.open(os.path.join(tmp_dir, tarname), "w:gz") def tarexc(f): return any(f.endswith(s) for s in ['.svn', '.git', '.hg', '.bzr']) tarball.add(build_dir, tarname, exclude=tarexc) tarball.close() # Run a build command if one is required... if build.build: logging.info("Running 'build' commands in %s" % root_dir) cmd = common.replace_config_vars(build.build, build) # Substitute source library paths into commands... for name, number, libpath in srclibpaths: libpath = os.path.relpath(libpath, root_dir) cmd = cmd.replace('$$' + name + '$$', libpath) p = FDroidPopen(['bash', '-x', '-c', cmd], cwd=root_dir) if p.returncode != 0: raise BuildException("Error running build command for %s:%s" % (app.id, build.versionName), p.output) # Build native stuff if required... if build.buildjni and build.buildjni != ['no']: logging.info("Building the native code") jni_components = build.buildjni if jni_components == ['yes']: jni_components = [''] cmd = [os.path.join(ndk_path, "ndk-build"), "-j1"] for d in jni_components: if d: logging.info("Building native code in '%s'" % d) else: logging.info("Building native code in the main project") manifest = os.path.join(root_dir, d, 'AndroidManifest.xml') if os.path.exists(manifest): # Read and write the whole AM.xml to fix newlines and avoid # the ndk r8c or later 'wordlist' errors. The outcome of this # under gnu/linux is the same as when using tools like # dos2unix, but the native python way is faster and will # work in non-unix systems. manifest_text = open(manifest, 'U').read() open(manifest, 'w').write(manifest_text) # In case the AM.xml read was big, free the memory del manifest_text p = FDroidPopen(cmd, cwd=os.path.join(root_dir, d)) if p.returncode != 0: raise BuildException("NDK build failed for %s:%s" % (app.id, build.versionName), p.output) p = None # Build the release... if bmethod == 'maven': logging.info("Building Maven project...") if '@' in build.maven: maven_dir = os.path.join(root_dir, build.maven.split('@', 1)[1]) else: maven_dir = root_dir mvncmd = [config['mvn3'], '-Dandroid.sdk.path=' + config['sdk_path'], '-Dmaven.jar.sign.skip=true', '-Dmaven.test.skip=true', '-Dandroid.sign.debug=false', '-Dandroid.release=true', 'package'] if build.target: target = build.target.split('-')[1] common.regsub_file(r'[0-9]*', r'%s' % target, os.path.join(root_dir, 'pom.xml')) if '@' in build.maven: common.regsub_file(r'[0-9]*', r'%s' % target, os.path.join(maven_dir, 'pom.xml')) p = FDroidPopen(mvncmd, cwd=maven_dir) bindir = os.path.join(root_dir, 'target') elif bmethod == 'buildozer': logging.info("Building Kivy project using buildozer...") # parse buildozer.spez spec = os.path.join(root_dir, 'buildozer.spec') if not os.path.exists(spec): raise BuildException("Expected to find buildozer-compatible spec at {0}" .format(spec)) defaults = {'orientation': 'landscape', 'icon': '', 'permissions': '', 'android.api': "19"} bconfig = ConfigParser(defaults, allow_no_value=True) bconfig.read(spec) # update spec with sdk and ndk locations to prevent buildozer from # downloading. loc_ndk = common.env['ANDROID_NDK'] loc_sdk = common.env['ANDROID_SDK'] if loc_ndk == '$ANDROID_NDK': loc_ndk = loc_sdk + '/ndk-bundle' bc_ndk = None bc_sdk = None try: bc_ndk = bconfig.get('app', 'android.sdk_path') except Exception: pass try: bc_sdk = bconfig.get('app', 'android.ndk_path') except Exception: pass if bc_sdk is None: bconfig.set('app', 'android.sdk_path', loc_sdk) if bc_ndk is None: bconfig.set('app', 'android.ndk_path', loc_ndk) fspec = open(spec, 'w') bconfig.write(fspec) fspec.close() logging.info("sdk_path = %s" % loc_sdk) logging.info("ndk_path = %s" % loc_ndk) p = None # execute buildozer cmd = ['buildozer', 'android', 'release'] try: p = FDroidPopen(cmd, cwd=root_dir) except Exception: pass # buidozer not installed ? clone repo and run if (p is None or p.returncode != 0): cmd = ['git', 'clone', 'https://github.com/kivy/buildozer.git'] p = subprocess.Popen(cmd, cwd=root_dir, shell=False) p.wait() if p.returncode != 0: raise BuildException("Distribute build failed") cmd = ['python', 'buildozer/buildozer/scripts/client.py', 'android', 'release'] p = FDroidPopen(cmd, cwd=root_dir) # expected to fail. # Signing will fail if not set by environnment vars (cf. p4a docs). # But the unsigned apk will be ok. p.returncode = 0 elif bmethod == 'gradle': logging.info("Building Gradle project...") cmd = [config['gradle']] if build.gradleprops: cmd += ['-P' + kv for kv in build.gradleprops] cmd += gradletasks p = FDroidPopen(cmd, cwd=root_dir) elif bmethod == 'ant': logging.info("Building Ant project...") cmd = ['ant'] if build.antcommands: cmd += build.antcommands else: cmd += ['release'] p = FDroidPopen(cmd, cwd=root_dir) bindir = os.path.join(root_dir, 'bin') if p is not None and p.returncode != 0: raise BuildException("Build failed for %s:%s" % (app.id, build.versionName), p.output) logging.info("Successfully built version " + build.versionName + ' of ' + app.id) omethod = build.output_method() if omethod == 'maven': stdout_apk = '\n'.join([ line for line in p.output.splitlines() if any( a in line for a in ('.apk', '.ap_', '.jar'))]) m = re.match(r".*^\[INFO\] .*apkbuilder.*/([^/]*)\.apk", stdout_apk, re.S | re.M) if not m: m = re.match(r".*^\[INFO\] Creating additional unsigned apk file .*/([^/]+)\.apk[^l]", stdout_apk, re.S | re.M) if not m: m = re.match(r'.*^\[INFO\] [^$]*aapt \[package,[^$]*' + bindir + r'/([^/]+)\.ap[_k][,\]]', stdout_apk, re.S | re.M) if not m: m = re.match(r".*^\[INFO\] Building jar: .*/" + bindir + r"/(.+)\.jar", stdout_apk, re.S | re.M) if not m: raise BuildException('Failed to find output') src = m.group(1) src = os.path.join(bindir, src) + '.apk' elif omethod == 'buildozer': src = None for apks_dir in [ os.path.join(root_dir, '.buildozer', 'android', 'platform', 'build', 'dists', bconfig.get('app', 'title'), 'bin'), ]: for apkglob in ['*-release-unsigned.apk', '*-unsigned.apk', '*.apk']: apks = glob.glob(os.path.join(apks_dir, apkglob)) if len(apks) > 1: raise BuildException('More than one resulting apks found in %s' % apks_dir, '\n'.join(apks)) if len(apks) == 1: src = apks[0] break if src is not None: break if src is None: raise BuildException('Failed to find any output apks') elif omethod == 'gradle': src = None apk_dirs = [ # gradle plugin >= 3.0 os.path.join(root_dir, 'build', 'outputs', 'apk', 'release'), # gradle plugin < 3.0 and >= 0.11 os.path.join(root_dir, 'build', 'outputs', 'apk'), # really old path os.path.join(root_dir, 'build', 'apk'), ] # If we build with gradle flavours with gradle plugin >= 3.0 the apk will be in # a subdirectory corresponding to the flavour command used, but with different # capitalization. if flavours_cmd: apk_dirs.append(os.path.join(root_dir, 'build', 'outputs', 'apk', transform_first_char(flavours_cmd, str.lower), 'release')) for apks_dir in apk_dirs: for apkglob in ['*-release-unsigned.apk', '*-unsigned.apk', '*.apk']: apks = glob.glob(os.path.join(apks_dir, apkglob)) if len(apks) > 1: raise BuildException('More than one resulting apks found in %s' % apks_dir, '\n'.join(apks)) if len(apks) == 1: src = apks[0] break if src is not None: break if src is None: raise BuildException('Failed to find any output apks') elif omethod == 'ant': stdout_apk = '\n'.join([ line for line in p.output.splitlines() if '.apk' in line]) src = re.match(r".*^.*Creating (.+) for release.*$.*", stdout_apk, re.S | re.M).group(1) src = os.path.join(bindir, src) elif omethod == 'raw': output_path = common.replace_build_vars(build.output, build) globpath = os.path.join(root_dir, output_path) apks = glob.glob(globpath) if len(apks) > 1: raise BuildException('Multiple apks match %s' % globpath, '\n'.join(apks)) if len(apks) < 1: raise BuildException('No apks match %s' % globpath) src = os.path.normpath(apks[0]) # Make sure it's not debuggable... if common.is_apk_and_debuggable(src): raise BuildException("APK is debuggable") # By way of a sanity check, make sure the version and version # code in our new apk match what we expect... logging.debug("Checking " + src) if not os.path.exists(src): raise BuildException("Unsigned apk is not at expected location of " + src) if common.get_file_extension(src) == 'apk': vercode, version = get_metadata_from_apk(app, build, src) if version != build.versionName or vercode != build.versionCode: raise BuildException(("Unexpected version/version code in output;" " APK: '%s' / '%s', " " Expected: '%s' / '%s'") % (version, str(vercode), build.versionName, str(build.versionCode))) # Copy the unsigned apk to our destination directory for further # processing (by publish.py)... dest = os.path.join(output_dir, common.get_release_filename(app, build)) shutil.copyfile(src, dest) # Move the source tarball into the output directory... if output_dir != tmp_dir and not options.notarball: shutil.move(os.path.join(tmp_dir, tarname), os.path.join(output_dir, tarname)) def trybuild(app, build, build_dir, output_dir, log_dir, also_check_dir, srclib_dir, extlib_dir, tmp_dir, repo_dir, vcs, test, server, force, onserver, refresh): """ Build a particular version of an application, if it needs building. :param output_dir: The directory where the build output will go. Usually this is the 'unsigned' directory. :param repo_dir: The repo directory - used for checking if the build is necessary. :param also_check_dir: An additional location for checking if the build is necessary (usually the archive repo) :param test: True if building in test mode, in which case the build will always happen, even if the output already exists. In test mode, the output directory should be a temporary location, not any of the real ones. :returns: True if the build was done, False if it wasn't necessary. """ dest_file = common.get_release_filename(app, build) dest = os.path.join(output_dir, dest_file) dest_repo = os.path.join(repo_dir, dest_file) if not test: if os.path.exists(dest) or os.path.exists(dest_repo): return False if also_check_dir: dest_also = os.path.join(also_check_dir, dest_file) if os.path.exists(dest_also): return False if build.disable and not options.force: return False logging.info("Building version %s (%s) of %s" % ( build.versionName, build.versionCode, app.id)) if server: # When using server mode, still keep a local cache of the repo, by # grabbing the source now. vcs.gotorevision(build.commit, refresh) build_server(app, build, vcs, build_dir, output_dir, log_dir, force) else: build_local(app, build, vcs, build_dir, output_dir, log_dir, srclib_dir, extlib_dir, tmp_dir, force, onserver, refresh) return True def force_halt_build(timeout): """Halt the currently running Vagrant VM, to be called from a Timer""" logging.error(_('Force halting build after {0} sec timeout!').format(timeout)) timeout_event.set() vm = vmtools.get_build_vm('builder') vm.halt() def parse_commandline(): """Parse the command line. Returns options, parser.""" parser = ArgumentParser(usage="%(prog)s [options] [APPID[:VERCODE] [APPID[:VERCODE] ...]]") common.setup_global_opts(parser) parser.add_argument("appid", nargs='*', help=_("applicationId with optional versionCode in the form APPID[:VERCODE]")) parser.add_argument("-l", "--latest", action="store_true", default=False, help=_("Build only the latest version of each package")) parser.add_argument("-s", "--stop", action="store_true", default=False, help=_("Make the build stop on exceptions")) parser.add_argument("-t", "--test", action="store_true", default=False, help=_("Test mode - put output in the tmp directory only, and always build, even if the output already exists.")) parser.add_argument("--server", action="store_true", default=False, help=_("Use build server")) parser.add_argument("--reset-server", action="store_true", default=False, help=_("Reset and create a brand new build server, even if the existing one appears to be ok.")) parser.add_argument("--on-server", dest="onserver", action="store_true", default=False, help=_("Specify that we're running on the build server")) parser.add_argument("--skip-scan", dest="skipscan", action="store_true", default=False, help=_("Skip scanning the source code for binaries and other problems")) parser.add_argument("--dscanner", action="store_true", default=False, help=_("Setup an emulator, install the APK on it and perform a Drozer scan")) parser.add_argument("--no-tarball", dest="notarball", action="store_true", default=False, help=_("Don't create a source tarball, useful when testing a build")) parser.add_argument("--no-refresh", dest="refresh", action="store_false", default=True, help=_("Don't refresh the repository, useful when testing a build with no internet connection")) parser.add_argument("-f", "--force", action="store_true", default=False, help=_("Force build of disabled apps, and carries on regardless of scan problems. Only allowed in test mode.")) parser.add_argument("-a", "--all", action="store_true", default=False, help=_("Build all applications available")) parser.add_argument("-w", "--wiki", default=False, action="store_true", help=_("Update the wiki")) metadata.add_metadata_arguments(parser) options = parser.parse_args() metadata.warnings_action = options.W # Force --stop with --on-server to get correct exit code if options.onserver: options.stop = True if options.force and not options.test: parser.error("option %s: Force is only allowed in test mode" % "force") return options, parser options = None config = None buildserverid = None fdroidserverid = None start_timestamp = time.gmtime() timeout_event = threading.Event() def main(): global options, config, buildserverid, fdroidserverid options, parser = parse_commandline() # The defaults for .fdroid.* metadata that is included in a git repo are # different than for the standard metadata/ layout because expectations # are different. In this case, the most common user will be the app # developer working on the latest update of the app on their own machine. local_metadata_files = common.get_local_metadata_files() if len(local_metadata_files) == 1: # there is local metadata in an app's source config = dict(common.default_config) # `fdroid build` should build only the latest version by default since # most of the time the user will be building the most recent update if not options.all: options.latest = True elif len(local_metadata_files) > 1: raise FDroidException("Only one local metadata file allowed! Found: " + " ".join(local_metadata_files)) else: if not os.path.isdir('metadata') and len(local_metadata_files) == 0: raise FDroidException("No app metadata found, nothing to process!") if not options.appid and not options.all: parser.error("option %s: If you really want to build all the apps, use --all" % "all") config = common.read_config(options) if config['build_server_always']: options.server = True if options.reset_server and not options.server: parser.error("option %s: Using --reset-server without --server makes no sense" % "reset-server") if options.onserver or not options.server: for d in ['build-tools', 'platform-tools', 'tools']: if not os.path.isdir(os.path.join(config['sdk_path'], d)): raise FDroidException(_("Android SDK '{path}' does not have '{dirname}' installed!") .format(path=config['sdk_path'], dirname=d)) log_dir = 'logs' if not os.path.isdir(log_dir): logging.info("Creating log directory") os.makedirs(log_dir) tmp_dir = 'tmp' if not os.path.isdir(tmp_dir): logging.info("Creating temporary directory") os.makedirs(tmp_dir) if options.test: output_dir = tmp_dir else: output_dir = 'unsigned' if not os.path.isdir(output_dir): logging.info("Creating output directory") os.makedirs(output_dir) if config['archive_older'] != 0: also_check_dir = 'archive' else: also_check_dir = None repo_dir = 'repo' build_dir = 'build' if not os.path.isdir(build_dir): logging.info("Creating build directory") os.makedirs(build_dir) srclib_dir = os.path.join(build_dir, 'srclib') extlib_dir = os.path.join(build_dir, 'extlib') # Read all app and srclib metadata pkgs = common.read_pkg_args(options.appid, True) allapps = metadata.read_metadata(not options.onserver, pkgs, options.refresh, sort_by_time=True) apps = common.read_app_args(options.appid, allapps, True) for appid, app in list(apps.items()): if (app.Disabled and not options.force) or not app.RepoType or not app.builds: del apps[appid] if not apps: raise FDroidException("No apps to process.") # make sure enough open files are allowed to process everything soft, hard = resource.getrlimit(resource.RLIMIT_NOFILE) if len(apps) > soft: try: soft = len(apps) * 2 if soft > hard: soft = hard resource.setrlimit(resource.RLIMIT_NOFILE, (soft, hard)) logging.debug(_('Set open file limit to {integer}') .format(integer=soft)) except (OSError, ValueError) as e: logging.warning(_('Setting open file limit failed: ') + str(e)) if options.latest: for app in apps.values(): for build in reversed(app.builds): if build.disable and not options.force: continue app.builds = [build] break if options.wiki: import mwclient site = mwclient.Site((config['wiki_protocol'], config['wiki_server']), path=config['wiki_path']) site.login(config['wiki_user'], config['wiki_password']) # Build applications... failed_apps = {} build_succeeded = [] # Only build for 36 hours, then stop gracefully. endtime = time.time() + 36 * 60 * 60 max_build_time_reached = False for appid, app in apps.items(): first = True for build in app.builds: if time.time() > endtime: max_build_time_reached = True break # Enable watchdog timer (2 hours by default). if build.timeout is None: timeout = 7200 else: timeout = int(build.timeout) if options.server and timeout > 0: logging.debug(_('Setting {0} sec timeout for this build').format(timeout)) timer = threading.Timer(timeout, force_halt_build, [timeout]) timeout_event.clear() timer.start() else: timer = None wikilog = None build_starttime = common.get_wiki_timestamp() tools_version_log = '' if not options.onserver: tools_version_log = common.get_android_tools_version_log(build.ndk_path()) try: # For the first build of a particular app, we need to set up # the source repo. We can reuse it on subsequent builds, if # there are any. if first: vcs, build_dir = common.setup_vcs(app) first = False logging.info("Using %s" % vcs.clientversion()) logging.debug("Checking " + build.versionName) if trybuild(app, build, build_dir, output_dir, log_dir, also_check_dir, srclib_dir, extlib_dir, tmp_dir, repo_dir, vcs, options.test, options.server, options.force, options.onserver, options.refresh): toolslog = os.path.join(log_dir, common.get_toolsversion_logname(app, build)) if not options.onserver and os.path.exists(toolslog): with open(toolslog, 'r') as f: tools_version_log = ''.join(f.readlines()) os.remove(toolslog) if app.Binaries is not None: # This is an app where we build from source, and # verify the apk contents against a developer's # binary. We get that binary now, and save it # alongside our built one in the 'unsigend' # directory. url = app.Binaries url = url.replace('%v', build.versionName) url = url.replace('%c', str(build.versionCode)) logging.info("...retrieving " + url) of = re.sub(r'.apk$', '.binary.apk', common.get_release_filename(app, build)) of = os.path.join(output_dir, of) try: net.download_file(url, local_filename=of) except requests.exceptions.HTTPError as e: raise FDroidException( 'Downloading Binaries from %s failed. %s' % (url, e)) # Now we check weather the build can be verified to # match the supplied binary or not. Should the # comparison fail, we mark this build as a failure # and remove everything from the unsigend folder. with tempfile.TemporaryDirectory() as tmpdir: unsigned_apk = \ common.get_release_filename(app, build) unsigned_apk = \ os.path.join(output_dir, unsigned_apk) compare_result = \ common.verify_apks(of, unsigned_apk, tmpdir) if compare_result: logging.debug('removing %s', unsigned_apk) os.remove(unsigned_apk) logging.debug('removing %s', of) os.remove(of) compare_result = compare_result.split('\n') line_count = len(compare_result) compare_result = compare_result[:299] if line_count > len(compare_result): line_difference = \ line_count - len(compare_result) compare_result.append('%d more lines ...' % line_difference) compare_result = '\n'.join(compare_result) raise FDroidException('compared built binary ' 'to supplied reference ' 'binary but failed', compare_result) else: logging.info('compared built binary to ' 'supplied reference binary ' 'successfully') build_succeeded.append(app) wikilog = "Build succeeded" except VCSException as vcse: reason = str(vcse).split('\n', 1)[0] if options.verbose else str(vcse) logging.error("VCS error while building app %s: %s" % ( appid, reason)) if options.stop: logging.debug("Error encoutered, stopping by user request.") sys.exit(1) failed_apps[appid] = vcse wikilog = str(vcse) except FDroidException as e: with open(os.path.join(log_dir, appid + '.log'), 'a+') as f: f.write('\n\n============================================================\n') f.write('versionCode: %s\nversionName: %s\ncommit: %s\n' % (build.versionCode, build.versionName, build.commit)) f.write('Build completed at ' + common.get_wiki_timestamp() + '\n') f.write('\n' + tools_version_log + '\n') f.write(str(e)) logging.error("Could not build app %s: %s" % (appid, e)) if options.stop: logging.debug("Error encoutered, stopping by user request.") sys.exit(1) failed_apps[appid] = e wikilog = e.get_wikitext() except Exception as e: logging.error("Could not build app %s due to unknown error: %s" % ( appid, traceback.format_exc())) if options.stop: logging.debug("Error encoutered, stopping by user request.") sys.exit(1) failed_apps[appid] = e wikilog = str(e) if options.wiki and wikilog: try: # Write a page with the last build log for this version code lastbuildpage = appid + '/lastbuild_' + build.versionCode newpage = site.Pages[lastbuildpage] with open(os.path.join('tmp', 'fdroidserverid')) as fp: fdroidserverid = fp.read().rstrip() txt = "* build session started at " + common.get_wiki_timestamp(start_timestamp) + '\n' \ + "* this build started at " + build_starttime + '\n' \ + "* this build completed at " + common.get_wiki_timestamp() + '\n' \ + common.get_git_describe_link() \ + '* fdroidserverid: [https://gitlab.com/fdroid/fdroidserver/commit/' \ + fdroidserverid + ' ' + fdroidserverid + ']\n\n' if buildserverid: txt += '* buildserverid: [https://gitlab.com/fdroid/fdroidserver/commit/' \ + buildserverid + ' ' + buildserverid + ']\n\n' txt += tools_version_log + '\n\n' txt += '== Build Log ==\n\n' + wikilog newpage.save(txt, summary='Build log') # Redirect from /lastbuild to the most recent build log newpage = site.Pages[appid + '/lastbuild'] newpage.save('#REDIRECT [[' + lastbuildpage + ']]', summary='Update redirect') except Exception as e: logging.error("Error while attempting to publish build log: %s" % e) if timer: timer.cancel() # kill the watchdog timer if max_build_time_reached: logging.info("Stopping after global build timeout...") break for app in build_succeeded: logging.info("success: %s" % (app.id)) if not options.verbose: for fa in failed_apps: logging.info("Build for app %s failed:\n%s" % (fa, failed_apps[fa])) # perform a drozer scan of all successful builds if options.dscanner and build_succeeded: from .dscanner import DockerDriver docker = DockerDriver() try: for app in build_succeeded: logging.info("Need to sign the app before we can install it.") subprocess.call("fdroid publish {0}".format(app.id)) apk_path = None for f in os.listdir(repo_dir): if f.endswith('.apk') and f.startswith(app.id): apk_path = os.path.join(repo_dir, f) break if not apk_path: raise Exception("No signed APK found at path: {path}".format(path=apk_path)) if not os.path.isdir(repo_dir): logging.critical("directory does not exists '{path}'".format(path=repo_dir)) sys.exit(1) logging.info("Performing Drozer scan on {0}.".format(app)) docker.perform_drozer_scan(apk_path, app.id, repo_dir) except Exception as e: logging.error(str(e)) logging.error("An exception happened. Making sure to clean up") else: logging.info("Scan succeeded.") logging.info("Cleaning up after ourselves.") docker.clean() logging.info(_("Finished")) if len(build_succeeded) > 0: logging.info(ngettext("{} build succeeded", "{} builds succeeded", len(build_succeeded)).format(len(build_succeeded))) if len(failed_apps) > 0: logging.info(ngettext("{} build failed", "{} builds failed", len(failed_apps)).format(len(failed_apps))) if options.wiki: wiki_page_path = 'build_' + time.strftime('%s', start_timestamp) newpage = site.Pages[wiki_page_path] txt = '' txt += "* command line: %s\n" % ' '.join(sys.argv) txt += "* started at %s\n" % common.get_wiki_timestamp(start_timestamp) txt += "* completed at %s\n" % common.get_wiki_timestamp() if buildserverid: txt += ('* buildserverid: [https://gitlab.com/fdroid/fdroidserver/commit/{id} {id}]\n' .format(id=buildserverid)) if fdroidserverid: txt += ('* fdroidserverid: [https://gitlab.com/fdroid/fdroidserver/commit/{id} {id}]\n' .format(id=fdroidserverid)) if os.cpu_count(): txt += "* host processors: %d\n" % os.cpu_count() if os.path.isfile('/proc/meminfo') and os.access('/proc/meminfo', os.R_OK): with open('/proc/meminfo') as fp: for line in fp: m = re.search(r'MemTotal:\s*([0-9].*)', line) if m: txt += "* host RAM: %s\n" % m.group(1) break txt += "* successful builds: %d\n" % len(build_succeeded) txt += "* failed builds: %d\n" % len(failed_apps) txt += "\n\n" newpage.save(txt, summary='Run log') newpage = site.Pages['build'] newpage.save('#REDIRECT [[' + wiki_page_path + ']]', summary='Update redirect') # hack to ensure this exits, even is some threads are still running sys.stdout.flush() sys.stderr.flush() os._exit(0) if __name__ == "__main__": main() fdroidserver-1.0.9/fdroidserver/update.py0000664000175000017500000025226513323655233020500 0ustar hanshans00000000000000#!/usr/bin/env python3 # # update.py - part of the FDroid server tools # Copyright (C) 2016, Blue Jay Wireless # Copyright (C) 2014-2016, Hans-Christoph Steiner # Copyright (C) 2010-2015, Ciaran Gultnieks # Copyright (C) 2013-2014, Daniel Martí # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . import sys import os import shutil import glob import re import socket import zipfile import hashlib import pickle import time from datetime import datetime from argparse import ArgumentParser import collections from binascii import hexlify from PIL import Image, PngImagePlugin import logging from . import _ from . import common from . import index from . import metadata from .common import SdkToolsPopen from .exception import BuildException, FDroidException METADATA_VERSION = 19 # less than the valid range of versionCode, i.e. Java's Integer.MIN_VALUE UNSET_VERSION_CODE = -0x100000000 APK_NAME_PAT = re.compile(".*name='([a-zA-Z0-9._]*)'.*") APK_VERCODE_PAT = re.compile(".*versionCode='([0-9]*)'.*") APK_VERNAME_PAT = re.compile(".*versionName='([^']*)'.*") APK_LABEL_ICON_PAT = re.compile(r".*\s+label='(.*)'\s+icon='(.*?)'") APK_SDK_VERSION_PAT = re.compile(".*'([0-9]*)'.*") APK_PERMISSION_PAT = \ re.compile(".*(name='(?P.*?)')(.*maxSdkVersion='(?P.*?)')?.*") APK_FEATURE_PAT = re.compile(".*name='([^']*)'.*") screen_densities = ['65534', '640', '480', '320', '240', '160', '120'] # resolutions must end with 'dpi' screen_resolutions = { "xxxhdpi": '640', "xxhdpi": '480', "xhdpi": '320', "hdpi": '240', "mdpi": '160', "ldpi": '120', "tvdpi": '213', "undefineddpi": '-1', "anydpi": '65534', "nodpi": '65535' } all_screen_densities = ['0'] + screen_densities UsesPermission = collections.namedtuple('UsesPermission', ['name', 'maxSdkVersion']) UsesPermissionSdk23 = collections.namedtuple('UsesPermissionSdk23', ['name', 'maxSdkVersion']) ALLOWED_EXTENSIONS = ('png', 'jpg', 'jpeg') GRAPHIC_NAMES = ('featureGraphic', 'icon', 'promoGraphic', 'tvBanner') SCREENSHOT_DIRS = ('phoneScreenshots', 'sevenInchScreenshots', 'tenInchScreenshots', 'tvScreenshots', 'wearScreenshots') BLANK_PNG_INFO = PngImagePlugin.PngInfo() def dpi_to_px(density): return (int(density) * 48) / 160 def px_to_dpi(px): return (int(px) * 160) / 48 def get_icon_dir(repodir, density): if density == '0' or density == '65534': return os.path.join(repodir, "icons") else: return os.path.join(repodir, "icons-%s" % density) def get_icon_dirs(repodir): for density in screen_densities: yield get_icon_dir(repodir, density) def get_all_icon_dirs(repodir): for density in all_screen_densities: yield get_icon_dir(repodir, density) def update_wiki(apps, sortedids, apks): """Update the wiki :param apps: fully populated list of all applications :param apks: all apks, except... """ logging.info("Updating wiki") wikicat = 'Apps' wikiredircat = 'App Redirects' import mwclient site = mwclient.Site((config['wiki_protocol'], config['wiki_server']), path=config['wiki_path']) site.login(config['wiki_user'], config['wiki_password']) generated_pages = {} generated_redirects = {} for appid in sortedids: app = metadata.App(apps[appid]) wikidata = '' if app.Disabled: wikidata += '{{Disabled|' + app.Disabled + '}}\n' if app.AntiFeatures: for af in sorted(app.AntiFeatures): wikidata += '{{AntiFeature|' + af + '}}\n' if app.RequiresRoot: requiresroot = 'Yes' else: requiresroot = 'No' wikidata += '{{App|id=%s|name=%s|added=%s|lastupdated=%s|source=%s|tracker=%s|web=%s|changelog=%s|donate=%s|flattr=%s|liberapay=%s|bitcoin=%s|litecoin=%s|license=%s|root=%s|author=%s|email=%s}}\n' % ( appid, app.Name, app.added.strftime('%Y-%m-%d') if app.added else '', app.lastUpdated.strftime('%Y-%m-%d') if app.lastUpdated else '', app.SourceCode, app.IssueTracker, app.WebSite, app.Changelog, app.Donate, app.FlattrID, app.LiberapayID, app.Bitcoin, app.Litecoin, app.License, requiresroot, app.AuthorName, app.AuthorEmail) if app.Provides: wikidata += "This app provides: %s" % ', '.join(app.Summary.split(',')) wikidata += app.Summary wikidata += " - [https://f-droid.org/repository/browse/?fdid=" + appid + " view in repository]\n\n" wikidata += "=Description=\n" wikidata += metadata.description_wiki(app.Description) + "\n" wikidata += "=Maintainer Notes=\n" if app.MaintainerNotes: wikidata += metadata.description_wiki(app.MaintainerNotes) + "\n" wikidata += "\nMetadata: [https://gitlab.com/fdroid/fdroiddata/blob/master/metadata/{0}.txt current] [https://gitlab.com/fdroid/fdroiddata/commits/master/metadata/{0}.txt history]\n".format(appid) # Get a list of all packages for this application... apklist = [] gotcurrentver = False cantupdate = False buildfails = False for apk in apks: if apk['packageName'] == appid: if str(apk['versionCode']) == app.CurrentVersionCode: gotcurrentver = True apklist.append(apk) # Include ones we can't build, as a special case... for build in app.builds: if build.disable: if build.versionCode == app.CurrentVersionCode: cantupdate = True # TODO: Nasty: vercode is a string in the build, and an int elsewhere apklist.append({'versionCode': int(build.versionCode), 'versionName': build.versionName, 'buildproblem': "The build for this version was manually disabled. Reason: {0}".format(build.disable), }) else: builtit = False for apk in apklist: if apk['versionCode'] == int(build.versionCode): builtit = True break if not builtit: buildfails = True apklist.append({'versionCode': int(build.versionCode), 'versionName': build.versionName, 'buildproblem': "The build for this version appears to have failed. Check the [[{0}/lastbuild_{1}|build log]].".format(appid, build.versionCode), }) if app.CurrentVersionCode == '0': cantupdate = True # Sort with most recent first... apklist = sorted(apklist, key=lambda apk: apk['versionCode'], reverse=True) wikidata += "=Versions=\n" if len(apklist) == 0: wikidata += "We currently have no versions of this app available." elif not gotcurrentver: wikidata += "We don't have the current version of this app." else: wikidata += "We have the current version of this app." wikidata += " (Check mode: " + app.UpdateCheckMode + ") " wikidata += " (Auto-update mode: " + app.AutoUpdateMode + ")\n\n" if len(app.NoSourceSince) > 0: wikidata += "This application has partially or entirely been missing source code since version " + app.NoSourceSince + ".\n\n" if len(app.CurrentVersion) > 0: wikidata += "The current (recommended) version is " + app.CurrentVersion wikidata += " (version code " + app.CurrentVersionCode + ").\n\n" validapks = 0 for apk in apklist: wikidata += "==" + apk['versionName'] + "==\n" if 'buildproblem' in apk: wikidata += "We can't build this version: " + apk['buildproblem'] + "\n\n" else: validapks += 1 wikidata += "This version is built and signed by " if 'srcname' in apk: wikidata += "F-Droid, and guaranteed to correspond to the source tarball published with it.\n\n" else: wikidata += "the original developer.\n\n" wikidata += "Version code: " + str(apk['versionCode']) + '\n' wikidata += '\n[[Category:' + wikicat + ']]\n' if len(app.NoSourceSince) > 0: wikidata += '\n[[Category:Apps missing source code]]\n' if validapks == 0 and not app.Disabled: wikidata += '\n[[Category:Apps with no packages]]\n' if cantupdate and not app.Disabled: wikidata += "\n[[Category:Apps we cannot update]]\n" if buildfails and not app.Disabled: wikidata += "\n[[Category:Apps with failing builds]]\n" elif not gotcurrentver and not cantupdate and not app.Disabled and app.UpdateCheckMode != "Static": wikidata += '\n[[Category:Apps to Update]]\n' if app.Disabled: wikidata += '\n[[Category:Apps that are disabled]]\n' if app.UpdateCheckMode == 'None' and not app.Disabled: wikidata += '\n[[Category:Apps with no update check]]\n' for appcat in app.Categories: wikidata += '\n[[Category:{0}]]\n'.format(appcat) # We can't have underscores in the page name, even if they're in # the package ID, because MediaWiki messes with them... pagename = appid.replace('_', ' ') # Drop a trailing newline, because mediawiki is going to drop it anyway # and it we don't we'll think the page has changed when it hasn't... if wikidata.endswith('\n'): wikidata = wikidata[:-1] generated_pages[pagename] = wikidata # Make a redirect from the name to the ID too, unless there's # already an existing page with the name and it isn't a redirect. noclobber = False apppagename = app.Name for ch in '_{}:[]|': apppagename = apppagename.replace(ch, ' ') # Drop double spaces caused mostly by replacing ':' above apppagename = apppagename.replace(' ', ' ') for expagename in site.allpages(prefix=apppagename, filterredir='nonredirects', generator=False): if expagename == apppagename: noclobber = True # Another reason not to make the redirect page is if the app name # is the same as it's ID, because that will overwrite the real page # with an redirect to itself! (Although it seems like an odd # scenario this happens a lot, e.g. where there is metadata but no # builds or binaries to extract a name from. if apppagename == pagename: noclobber = True if not noclobber: generated_redirects[apppagename] = "#REDIRECT [[" + pagename + "]]\n[[Category:" + wikiredircat + "]]" for tcat, genp in [(wikicat, generated_pages), (wikiredircat, generated_redirects)]: catpages = site.Pages['Category:' + tcat] existingpages = [] for page in catpages: existingpages.append(page.name) if page.name in genp: pagetxt = page.text() if pagetxt != genp[page.name]: logging.debug("Updating modified page " + page.name) page.save(genp[page.name], summary='Auto-updated') else: logging.debug("Page " + page.name + " is unchanged") else: logging.warn("Deleting page " + page.name) page.delete('No longer published') for pagename, text in genp.items(): logging.debug("Checking " + pagename) if pagename not in existingpages: logging.debug("Creating page " + pagename) try: newpage = site.Pages[pagename] newpage.save(text, summary='Auto-created') except Exception as e: logging.error("...FAILED to create page '{0}': {1}".format(pagename, e)) # Purge server cache to ensure counts are up to date site.Pages['Repository Maintenance'].purge() # Write a page with the last build log for this version code wiki_page_path = 'update_' + time.strftime('%s', start_timestamp) newpage = site.Pages[wiki_page_path] txt = '' txt += "* command line: " + ' '.join(sys.argv) + "\n" txt += "* started at " + common.get_wiki_timestamp(start_timestamp) + '\n' txt += "* completed at " + common.get_wiki_timestamp() + '\n' txt += common.get_git_describe_link() txt += "\n\n" txt += common.get_android_tools_version_log() newpage.save(txt, summary='Run log') newpage = site.Pages['update'] newpage.save('#REDIRECT [[' + wiki_page_path + ']]', summary='Update redirect') def delete_disabled_builds(apps, apkcache, repodirs): """Delete disabled build outputs. :param apps: list of all applications, as per metadata.read_metadata :param apkcache: current apk cache information :param repodirs: the repo directories to process """ for appid, app in apps.items(): for build in app['builds']: if not build.disable: continue apkfilename = common.get_release_filename(app, build) iconfilename = "%s.%s.png" % ( appid, build.versionCode) for repodir in repodirs: files = [ os.path.join(repodir, apkfilename), os.path.join(repodir, apkfilename + '.asc'), os.path.join(repodir, apkfilename[:-4] + "_src.tar.gz"), ] for density in all_screen_densities: repo_dir = get_icon_dir(repodir, density) files.append(os.path.join(repo_dir, iconfilename)) for f in files: if os.path.exists(f): logging.info("Deleting disabled build output " + f) os.remove(f) if apkfilename in apkcache: del apkcache[apkfilename] def resize_icon(iconpath, density): if not os.path.isfile(iconpath): return fp = None try: fp = open(iconpath, 'rb') im = Image.open(fp) size = dpi_to_px(density) if any(length > size for length in im.size): oldsize = im.size im.thumbnail((size, size), Image.ANTIALIAS) logging.debug("%s was too large at %s - new size is %s" % ( iconpath, oldsize, im.size)) im.save(iconpath, "PNG", optimize=True, pnginfo=BLANK_PNG_INFO, icc_profile=None) except Exception as e: logging.error(_("Failed resizing {path}: {error}".format(path=iconpath, error=e))) finally: if fp: fp.close() def resize_all_icons(repodirs): """Resize all icons that exceed the max size :param repodirs: the repo directories to process """ for repodir in repodirs: for density in screen_densities: icon_dir = get_icon_dir(repodir, density) icon_glob = os.path.join(icon_dir, '*.png') for iconpath in glob.glob(icon_glob): resize_icon(iconpath, density) def getsig(apkpath): """ Get the signing certificate of an apk. To get the same md5 has that Android gets, we encode the .RSA certificate in a specific format and pass it hex-encoded to the md5 digest algorithm. :param apkpath: path to the apk :returns: A string containing the md5 of the signature of the apk or None if an error occurred. """ with zipfile.ZipFile(apkpath, 'r') as apk: certs = [n for n in apk.namelist() if common.CERT_PATH_REGEX.match(n)] if len(certs) < 1: logging.error(_("No signing certificates found in {path}").format(path=apkpath)) return None if len(certs) > 1: logging.error(_("Found multiple signing certificates in {path}").format(path=apkpath)) return None cert = apk.read(certs[0]) cert_encoded = common.get_certificate(cert) return hashlib.md5(hexlify(cert_encoded)).hexdigest() def get_cache_file(): return os.path.join('tmp', 'apkcache') def get_cache(): """Get the cached dict of the APK index Gather information about all the apk files in the repo directory, using cached data if possible. Some of the index operations take a long time, like calculating the SHA-256 and verifying the APK signature. The cache is invalidated if the metadata version is different, or the 'allow_disabled_algorithms' config/option is different. In those cases, there is no easy way to know what has changed from the cache, so just rerun the whole thing. :return: apkcache """ apkcachefile = get_cache_file() ada = options.allow_disabled_algorithms or config['allow_disabled_algorithms'] if not options.clean and os.path.exists(apkcachefile): with open(apkcachefile, 'rb') as cf: apkcache = pickle.load(cf, encoding='utf-8') if apkcache.get("METADATA_VERSION") != METADATA_VERSION \ or apkcache.get('allow_disabled_algorithms') != ada: apkcache = {} else: apkcache = {} apkcache["METADATA_VERSION"] = METADATA_VERSION apkcache['allow_disabled_algorithms'] = ada return apkcache def write_cache(apkcache): apkcachefile = get_cache_file() cache_path = os.path.dirname(apkcachefile) if not os.path.exists(cache_path): os.makedirs(cache_path) with open(apkcachefile, 'wb') as cf: pickle.dump(apkcache, cf) def get_icon_bytes(apkzip, iconsrc): '''ZIP has no official encoding, UTF-* and CP437 are defacto''' try: return apkzip.read(iconsrc) except KeyError: return apkzip.read(iconsrc.encode('utf-8').decode('cp437')) def sha256sum(filename): '''Calculate the sha256 of the given file''' sha = hashlib.sha256() with open(filename, 'rb') as f: while True: t = f.read(16384) if len(t) == 0: break sha.update(t) return sha.hexdigest() def has_known_vulnerability(filename): """checks for known vulnerabilities in the APK Checks OpenSSL .so files in the APK to see if they are a known vulnerable version. Google also enforces this: https://support.google.com/faqs/answer/6376725?hl=en Checks whether there are more than one classes.dex or AndroidManifest.xml files, which is invalid and an essential part of the "Master Key" attack. http://www.saurik.com/id/17 Janus is similar to Master Key but is perhaps easier to scan for. https://www.guardsquare.com/en/blog/new-android-vulnerability-allows-attackers-modify-apps-without-affecting-their-signatures """ found_vuln = False # statically load this pattern if not hasattr(has_known_vulnerability, "pattern"): has_known_vulnerability.pattern = re.compile(b'.*OpenSSL ([01][0-9a-z.-]+)') with open(filename.encode(), 'rb') as fp: first4 = fp.read(4) if first4 != b'\x50\x4b\x03\x04': raise FDroidException(_('{path} has bad file signature "{pattern}", possible Janus exploit!') .format(path=filename, pattern=first4.decode().replace('\n', ' ')) + '\n' + 'https://www.guardsquare.com/en/blog/new-android-vulnerability-allows-attackers-modify-apps-without-affecting-their-signatures') files_in_apk = set() with zipfile.ZipFile(filename) as zf: for name in zf.namelist(): if name.endswith('libcrypto.so') or name.endswith('libssl.so'): lib = zf.open(name) while True: chunk = lib.read(4096) if chunk == b'': break m = has_known_vulnerability.pattern.search(chunk) if m: version = m.group(1).decode('ascii') if (version.startswith('1.0.1') and len(version) > 5 and version[5] >= 'r') \ or (version.startswith('1.0.2') and len(version) > 5 and version[5] >= 'f') \ or re.match(r'[1-9]\.[1-9]\.[0-9].*', version): logging.debug(_('"{path}" contains recent {name} ({version})') .format(path=filename, name=name, version=version)) else: logging.warning(_('"{path}" contains outdated {name} ({version})') .format(path=filename, name=name, version=version)) found_vuln = True break elif name == 'AndroidManifest.xml' or name == 'classes.dex' or name.endswith('.so'): if name in files_in_apk: logging.warning(_('{apkfilename} has multiple {name} files, looks like Master Key exploit!') .format(apkfilename=filename, name=name)) found_vuln = True files_in_apk.add(name) return found_vuln def insert_obbs(repodir, apps, apks): """Scans the .obb files in a given repo directory and adds them to the relevant APK instances. OBB files have versionCodes like APK files, and they are loosely associated. If there is an OBB file present, then any APK with the same or higher versionCode will use that OBB file. There are two OBB types: main and patch, each APK can only have only have one of each. https://developer.android.com/google/play/expansion-files.html :param repodir: repo directory to scan :param apps: list of current, valid apps :param apks: current information on all APKs """ def obbWarnDelete(f, msg): logging.warning(msg + ' ' + f) if options.delete_unknown: logging.error(_("Deleting unknown file: {path}").format(path=f)) os.remove(f) obbs = [] java_Integer_MIN_VALUE = -pow(2, 31) currentPackageNames = apps.keys() for f in glob.glob(os.path.join(repodir, '*.obb')): obbfile = os.path.basename(f) # obbfile looks like: [main|patch]...obb chunks = obbfile.split('.') if chunks[0] != 'main' and chunks[0] != 'patch': obbWarnDelete(f, _('OBB filename must start with "main." or "patch.":')) continue if not re.match(r'^-?[0-9]+$', chunks[1]): obbWarnDelete(f, _('The OBB version code must come after "{name}.":') .format(name=chunks[0])) continue versionCode = int(chunks[1]) packagename = ".".join(chunks[2:-1]) highestVersionCode = java_Integer_MIN_VALUE if packagename not in currentPackageNames: obbWarnDelete(f, _("OBB's packagename does not match a supported APK:")) continue for apk in apks: if packagename == apk['packageName'] and apk['versionCode'] > highestVersionCode: highestVersionCode = apk['versionCode'] if versionCode > highestVersionCode: obbWarnDelete(f, _('OBB file has newer versionCode({integer}) than any APK:') .format(integer=str(versionCode))) continue obbsha256 = sha256sum(f) obbs.append((packagename, versionCode, obbfile, obbsha256)) for apk in apks: for (packagename, versionCode, obbfile, obbsha256) in sorted(obbs, reverse=True): if versionCode <= apk['versionCode'] and packagename == apk['packageName']: if obbfile.startswith('main.') and 'obbMainFile' not in apk: apk['obbMainFile'] = obbfile apk['obbMainFileSha256'] = obbsha256 elif obbfile.startswith('patch.') and 'obbPatchFile' not in apk: apk['obbPatchFile'] = obbfile apk['obbPatchFileSha256'] = obbsha256 if 'obbMainFile' in apk and 'obbPatchFile' in apk: break def translate_per_build_anti_features(apps, apks): """Grab the anti-features list from the build metadata For most Anti-Features, they are really most applicable per-APK, not for an app. An app can fix a vulnerability, add/remove tracking, etc. This reads the 'antifeatures' list from the Build entries in the fdroiddata metadata file, then transforms it into the 'antiFeatures' list of unique items for the index. The field key is all lower case in the metadata file to match the rest of the Build fields. It is 'antiFeatures' camel case in the implementation, index, and fdroidclient since it is translated from the build 'antifeatures' field, not directly included. """ antiFeatures = dict() for packageName, app in apps.items(): d = dict() for build in app['builds']: afl = build.get('antifeatures') if afl: d[int(build.versionCode)] = afl if len(d) > 0: antiFeatures[packageName] = d for apk in apks: d = antiFeatures.get(apk['packageName']) if d: afl = d.get(apk['versionCode']) if afl: apk['antiFeatures'].update(afl) def _get_localized_dict(app, locale): '''get the dict to add localized store metadata to''' if 'localized' not in app: app['localized'] = collections.OrderedDict() if locale not in app['localized']: app['localized'][locale] = collections.OrderedDict() return app['localized'][locale] def _set_localized_text_entry(app, locale, key, f): limit = config['char_limits'][key] localized = _get_localized_dict(app, locale) with open(f) as fp: text = fp.read()[:limit] if len(text) > 0: localized[key] = text def _set_author_entry(app, key, f): limit = config['char_limits']['author'] with open(f) as fp: text = fp.read()[:limit] if len(text) > 0: app[key] = text def _strip_and_copy_image(inpath, outpath): """Remove any metadata from image and copy it to new path Sadly, image metadata like EXIF can be used to exploit devices. It is not used at all in the F-Droid ecosystem, so its much safer just to remove it entirely. """ extension = common.get_extension(inpath)[1] if os.path.isdir(outpath): outpath = os.path.join(outpath, os.path.basename(inpath)) if extension == 'png': with open(inpath, 'rb') as fp: in_image = Image.open(fp) in_image.save(outpath, "PNG", optimize=True, pnginfo=BLANK_PNG_INFO, icc_profile=None) elif extension == 'jpg' or extension == 'jpeg': with open(inpath, 'rb') as fp: in_image = Image.open(fp) data = list(in_image.getdata()) out_image = Image.new(in_image.mode, in_image.size) out_image.putdata(data) out_image.save(outpath, "JPEG", optimize=True) else: raise FDroidException(_('Unsupported file type "{extension}" for repo graphic') .format(extension=extension)) def copy_triple_t_store_metadata(apps): """Include store metadata from the app's source repo The Triple-T Gradle Play Publisher is a plugin that has a standard file layout for all of the metadata and graphics that the Google Play Store accepts. Since F-Droid has the git repo, it can just pluck those files directly. This method reads any text files into the app dict, then copies any graphics into the fdroid repo directory structure. This needs to be run before insert_localized_app_metadata() so that the graphics files that are copied into the fdroid repo get properly indexed. https://github.com/Triple-T/gradle-play-publisher#upload-images https://github.com/Triple-T/gradle-play-publisher#play-store-metadata """ if not os.path.isdir('build'): return # nothing to do for packageName, app in apps.items(): for d in glob.glob(os.path.join('build', packageName, '*', 'src', '*', 'play')): logging.debug('Triple-T Gradle Play Publisher: ' + d) for root, dirs, files in os.walk(d): segments = root.split('/') locale = segments[-2] for f in files: if f == 'fulldescription': _set_localized_text_entry(app, locale, 'description', os.path.join(root, f)) continue elif f == 'shortdescription': _set_localized_text_entry(app, locale, 'summary', os.path.join(root, f)) continue elif f == 'title': _set_localized_text_entry(app, locale, 'name', os.path.join(root, f)) continue elif f == 'video': _set_localized_text_entry(app, locale, 'video', os.path.join(root, f)) continue elif f == 'whatsnew': _set_localized_text_entry(app, segments[-1], 'whatsNew', os.path.join(root, f)) continue elif f == 'contactEmail': _set_author_entry(app, 'authorEmail', os.path.join(root, f)) continue elif f == 'contactPhone': _set_author_entry(app, 'authorPhone', os.path.join(root, f)) continue elif f == 'contactWebsite': _set_author_entry(app, 'authorWebSite', os.path.join(root, f)) continue base, extension = common.get_extension(f) dirname = os.path.basename(root) if extension in ALLOWED_EXTENSIONS \ and (dirname in GRAPHIC_NAMES or dirname in SCREENSHOT_DIRS): if segments[-2] == 'listing': locale = segments[-3] else: locale = segments[-2] destdir = os.path.join('repo', packageName, locale, dirname) os.makedirs(destdir, mode=0o755, exist_ok=True) sourcefile = os.path.join(root, f) destfile = os.path.join(destdir, os.path.basename(f)) logging.debug('copying ' + sourcefile + ' ' + destfile) _strip_and_copy_image(sourcefile, destfile) def insert_localized_app_metadata(apps): """scans standard locations for graphics and localized text Scans for localized description files, store graphics, and screenshot PNG files in statically defined screenshots directory and adds them to the app metadata. The screenshots and graphic must be PNG or JPEG files ending with ".png", ".jpg", or ".jpeg" and must be in the following layout: # TODO replace these docs with link to All_About_Descriptions_Graphics_and_Screenshots repo/packageName/locale/featureGraphic.png repo/packageName/locale/phoneScreenshots/1.png repo/packageName/locale/phoneScreenshots/2.png The changelog files must be text files named with the versionCode ending with ".txt" and must be in the following layout: https://github.com/fastlane/fastlane/blob/2.28.7/supply/README.md#changelogs-whats-new repo/packageName/locale/changelogs/12345.txt This will scan the each app's source repo then the metadata/ dir for these standard locations of changelog files. If it finds them, they will be added to the dict of all packages, with the versions in the metadata/ folder taking precendence over the what is in the app's source repo. Where "packageName" is the app's packageName and "locale" is the locale of the graphics, e.g. what language they are in, using the IETF RFC5646 format (en-US, fr-CA, es-MX, etc). This will also scan the app's git for a fastlane folder, and the metadata/ folder and the apps' source repos for standard locations of graphic and screenshot files. If it finds them, it will copy them into the repo. The fastlane files follow this pattern: https://github.com/fastlane/fastlane/blob/2.28.7/supply/README.md#images-and-screenshots """ sourcedirs = glob.glob(os.path.join('build', '[A-Za-z]*', 'src', '[A-Za-z]*', 'fastlane', 'metadata', 'android', '[a-z][a-z]*')) sourcedirs += glob.glob(os.path.join('build', '[A-Za-z]*', 'fastlane', 'metadata', 'android', '[a-z][a-z]*')) sourcedirs += glob.glob(os.path.join('build', '[A-Za-z]*', 'metadata', '[a-z][a-z]*')) sourcedirs += glob.glob(os.path.join('metadata', '[A-Za-z]*', '[a-z][a-z]*')) for srcd in sorted(sourcedirs): if not os.path.isdir(srcd): continue for root, dirs, files in os.walk(srcd): segments = root.split('/') packageName = segments[1] if packageName not in apps: logging.debug(packageName + ' does not have app metadata, skipping l18n scan.') continue locale = segments[-1] destdir = os.path.join('repo', packageName, locale) # flavours specified in build receipt build_flavours = "" if apps[packageName] and 'builds' in apps[packageName] and len(apps[packageName].builds) > 0\ and 'gradle' in apps[packageName].builds[-1]: build_flavours = apps[packageName].builds[-1].gradle if len(segments) >= 5 and segments[4] == "fastlane" and segments[3] not in build_flavours: logging.debug("ignoring due to wrong flavour") continue for f in files: if f in ('description.txt', 'full_description.txt'): _set_localized_text_entry(apps[packageName], locale, 'description', os.path.join(root, f)) continue elif f in ('summary.txt', 'short_description.txt'): _set_localized_text_entry(apps[packageName], locale, 'summary', os.path.join(root, f)) continue elif f in ('name.txt', 'title.txt'): _set_localized_text_entry(apps[packageName], locale, 'name', os.path.join(root, f)) continue elif f == 'video.txt': _set_localized_text_entry(apps[packageName], locale, 'video', os.path.join(root, f)) continue elif f == str(apps[packageName]['CurrentVersionCode']) + '.txt': locale = segments[-2] _set_localized_text_entry(apps[packageName], locale, 'whatsNew', os.path.join(root, f)) continue base, extension = common.get_extension(f) if locale == 'images': locale = segments[-2] destdir = os.path.join('repo', packageName, locale) if base in GRAPHIC_NAMES and extension in ALLOWED_EXTENSIONS: os.makedirs(destdir, mode=0o755, exist_ok=True) logging.debug('copying ' + os.path.join(root, f) + ' ' + destdir) _strip_and_copy_image(os.path.join(root, f), destdir) for d in dirs: if d in SCREENSHOT_DIRS: if locale == 'images': locale = segments[-2] destdir = os.path.join('repo', packageName, locale) for f in glob.glob(os.path.join(root, d, '*.*')): _ignored, extension = common.get_extension(f) if extension in ALLOWED_EXTENSIONS: screenshotdestdir = os.path.join(destdir, d) os.makedirs(screenshotdestdir, mode=0o755, exist_ok=True) logging.debug('copying ' + f + ' ' + screenshotdestdir) _strip_and_copy_image(f, screenshotdestdir) repofiles = sorted(glob.glob(os.path.join('repo', '[A-Za-z]*', '[a-z][a-z][A-Z-.@]*'))) for d in repofiles: if not os.path.isdir(d): continue for f in sorted(glob.glob(os.path.join(d, '*.*')) + glob.glob(os.path.join(d, '*Screenshots', '*.*'))): if not os.path.isfile(f): continue segments = f.split('/') packageName = segments[1] locale = segments[2] screenshotdir = segments[3] filename = os.path.basename(f) base, extension = common.get_extension(filename) if packageName not in apps: logging.warning(_('Found "{path}" graphic without metadata for app "{name}"!') .format(path=filename, name=packageName)) continue graphics = _get_localized_dict(apps[packageName], locale) if extension not in ALLOWED_EXTENSIONS: logging.warning(_('Only PNG and JPEG are supported for graphics, found: {path}').format(path=f)) elif base in GRAPHIC_NAMES: # there can only be zero or one of these per locale graphics[base] = filename elif screenshotdir in SCREENSHOT_DIRS: # there can any number of these per locale logging.debug(_('adding to {name}: {path}').format(name=screenshotdir, path=f)) if screenshotdir not in graphics: graphics[screenshotdir] = [] graphics[screenshotdir].append(filename) else: logging.warning(_('Unsupported graphics file found: {path}').format(path=f)) def scan_repo_files(apkcache, repodir, knownapks, use_date_from_file=False): """Scan a repo for all files with an extension except APK/OBB :param apkcache: current cached info about all repo files :param repodir: repo directory to scan :param knownapks: list of all known files, as per metadata.read_metadata :param use_date_from_file: use date from file (instead of current date) for newly added files """ cachechanged = False repo_files = [] repodir = repodir.encode('utf-8') for name in os.listdir(repodir): file_extension = common.get_file_extension(name) if file_extension == 'apk' or file_extension == 'obb': continue filename = os.path.join(repodir, name) name_utf8 = name.decode('utf-8') if filename.endswith(b'_src.tar.gz'): logging.debug(_('skipping source tarball: {path}') .format(path=filename.decode('utf-8'))) continue if not common.is_repo_file(filename): continue stat = os.stat(filename) if stat.st_size == 0: raise FDroidException(_('{path} is zero size!') .format(path=filename)) shasum = sha256sum(filename) usecache = False if name in apkcache: repo_file = apkcache[name] # added time is cached as tuple but used here as datetime instance if 'added' in repo_file: a = repo_file['added'] if isinstance(a, datetime): repo_file['added'] = a else: repo_file['added'] = datetime(*a[:6]) if repo_file.get('hash') == shasum: logging.debug(_("Reading {apkfilename} from cache") .format(apkfilename=name_utf8)) usecache = True else: logging.debug(_("Ignoring stale cache data for {apkfilename}") .format(apkfilename=name_utf8)) if not usecache: logging.debug(_("Processing {apkfilename}").format(apkfilename=name_utf8)) repo_file = collections.OrderedDict() repo_file['name'] = os.path.splitext(name_utf8)[0] # TODO rename apkname globally to something more generic repo_file['apkName'] = name_utf8 repo_file['hash'] = shasum repo_file['hashType'] = 'sha256' repo_file['versionCode'] = 0 repo_file['versionName'] = shasum[0:7] # the static ID is the SHA256 unless it is set in the metadata repo_file['packageName'] = shasum m = common.STANDARD_FILE_NAME_REGEX.match(name_utf8) if m: repo_file['packageName'] = m.group(1) repo_file['versionCode'] = int(m.group(2)) srcfilename = name + b'_src.tar.gz' if os.path.exists(os.path.join(repodir, srcfilename)): repo_file['srcname'] = srcfilename.decode('utf-8') repo_file['size'] = stat.st_size apkcache[name] = repo_file cachechanged = True if use_date_from_file: timestamp = stat.st_ctime default_date_param = time.gmtime(time.mktime(datetime.fromtimestamp(timestamp).timetuple())) else: default_date_param = None # Record in knownapks, getting the added date at the same time.. added = knownapks.recordapk(repo_file['apkName'], repo_file['packageName'], default_date=default_date_param) if added: repo_file['added'] = added repo_files.append(repo_file) return repo_files, cachechanged def scan_apk(apk_file): """ Scans an APK file and returns dictionary with metadata of the APK. Attention: This does *not* verify that the APK signature is correct. :param apk_file: The (ideally absolute) path to the APK file :raises BuildException :return A dict containing APK metadata """ apk = { 'hash': sha256sum(apk_file), 'hashType': 'sha256', 'uses-permission': [], 'uses-permission-sdk-23': [], 'features': [], 'icons_src': {}, 'icons': {}, 'antiFeatures': set(), } if common.use_androguard(): scan_apk_androguard(apk, apk_file) else: scan_apk_aapt(apk, apk_file) # Get the signature, or rather the signing key fingerprints logging.debug('Getting signature of {0}'.format(os.path.basename(apk_file))) apk['sig'] = getsig(apk_file) if not apk['sig']: raise BuildException("Failed to get apk signature") apk['signer'] = common.apk_signer_fingerprint(os.path.join(os.getcwd(), apk_file)) if not apk.get('signer'): raise BuildException("Failed to get apk signing key fingerprint") # Get size of the APK apk['size'] = os.path.getsize(apk_file) if 'minSdkVersion' not in apk: logging.warning("No SDK version information found in {0}".format(apk_file)) apk['minSdkVersion'] = 3 # aapt defaults to 3 as the min if 'targetSdkVersion' not in apk: apk['targetSdkVersion'] = apk['minSdkVersion'] # Check for known vulnerabilities if has_known_vulnerability(apk_file): apk['antiFeatures'].add('KnownVuln') return apk def _get_apk_icons_src(apkfile, icon_name): """Extract the paths to the app icon in all available densities The folder name is normally generated by the Android Tools, but there is nothing that prevents people from using whatever DPI names they make up. Android will just ignore them, so we should too. """ icons_src = dict() density_re = re.compile(r'^res/(.*)/{}\.(png|xml)$'.format(icon_name)) with zipfile.ZipFile(apkfile) as zf: for filename in zf.namelist(): m = density_re.match(filename) if m: folder = m.group(1).split('-') try: density = screen_resolutions[folder[1]] except Exception: density = '160' icons_src[density] = m.group(0) if icons_src.get('-1') is None and '160' in icons_src: icons_src['-1'] = icons_src['160'] return icons_src def scan_apk_aapt(apk, apkfile): p = SdkToolsPopen(['aapt', 'dump', 'badging', apkfile], output=False) if p.returncode != 0: if options.delete_unknown: if os.path.exists(apkfile): logging.error(_("Failed to get apk information, deleting {path}").format(path=apkfile)) os.remove(apkfile) else: logging.error("Could not find {0} to remove it".format(apkfile)) else: logging.error(_("Failed to get apk information, skipping {path}").format(path=apkfile)) raise BuildException(_("Invalid APK")) icon_name = None for line in p.output.splitlines(): if line.startswith("package:"): try: apk['packageName'] = re.match(APK_NAME_PAT, line).group(1) apk['versionCode'] = int(re.match(APK_VERCODE_PAT, line).group(1)) apk['versionName'] = re.match(APK_VERNAME_PAT, line).group(1) except Exception as e: raise FDroidException("Package matching failed: " + str(e) + "\nLine was: " + line) elif line.startswith("application:"): m = re.match(APK_LABEL_ICON_PAT, line) if m: apk['name'] = m.group(1) icon_name = os.path.splitext(os.path.basename(m.group(2)))[0] elif not apk.get('name') and line.startswith("launchable-activity:"): # Only use launchable-activity as fallback to application apk['name'] = re.match(APK_LABEL_ICON_PAT, line).group(1) elif line.startswith("sdkVersion:"): m = re.match(APK_SDK_VERSION_PAT, line) if m is None: logging.error(line.replace('sdkVersion:', '') + ' is not a valid minSdkVersion!') else: apk['minSdkVersion'] = m.group(1) elif line.startswith("targetSdkVersion:"): m = re.match(APK_SDK_VERSION_PAT, line) if m is None: logging.error(line.replace('targetSdkVersion:', '') + ' is not a valid targetSdkVersion!') else: apk['targetSdkVersion'] = m.group(1) elif line.startswith("maxSdkVersion:"): apk['maxSdkVersion'] = re.match(APK_SDK_VERSION_PAT, line).group(1) elif line.startswith("native-code:"): apk['nativecode'] = [] for arch in line[13:].split(' '): apk['nativecode'].append(arch[1:-1]) elif line.startswith('uses-permission:'): perm_match = re.match(APK_PERMISSION_PAT, line).groupdict() if perm_match['maxSdkVersion']: perm_match['maxSdkVersion'] = int(perm_match['maxSdkVersion']) permission = UsesPermission( perm_match['name'], perm_match['maxSdkVersion'] ) apk['uses-permission'].append(permission) elif line.startswith('uses-permission-sdk-23:'): perm_match = re.match(APK_PERMISSION_PAT, line).groupdict() if perm_match['maxSdkVersion']: perm_match['maxSdkVersion'] = int(perm_match['maxSdkVersion']) permission_sdk_23 = UsesPermissionSdk23( perm_match['name'], perm_match['maxSdkVersion'] ) apk['uses-permission-sdk-23'].append(permission_sdk_23) elif line.startswith('uses-feature:'): feature = re.match(APK_FEATURE_PAT, line).group(1) # Filter out this, it's only added with the latest SDK tools and # causes problems for lots of apps. if feature != "android.hardware.screen.portrait" \ and feature != "android.hardware.screen.landscape": if feature.startswith("android.feature."): feature = feature[16:] apk['features'].add(feature) apk['icons_src'] = _get_apk_icons_src(apkfile, icon_name) def _sanitize_sdk_version(value): """Sanitize the raw values from androguard to handle bad values minSdkVersion/targetSdkVersion/maxSdkVersion must be integers, but that doesn't stop devs from doing strange things like setting them using Android XML strings. https://gitlab.com/souch/SMSbypass/blob/v0.9/app/src/main/AndroidManifest.xml#L29 https://gitlab.com/souch/SMSbypass/blob/v0.9/app/src/main/res/values/strings.xml#L27 """ try: sdk_version = int(value) if sdk_version > 0: return str(sdk_version) # heinous, but this is still str in the codebase except (TypeError, ValueError): pass return None def scan_apk_androguard(apk, apkfile): try: from androguard.core.bytecodes.apk import APK apkobject = APK(apkfile) if apkobject.is_valid_APK(): arsc = apkobject.get_android_resources() else: if options.delete_unknown: if os.path.exists(apkfile): logging.error(_("Failed to get apk information, deleting {path}") .format(path=apkfile)) os.remove(apkfile) else: logging.error(_("Could not find {path} to remove it") .format(path=apkfile)) else: logging.error(_("Failed to get apk information, skipping {path}") .format(path=apkfile)) raise BuildException(_("Invalid APK")) except ImportError: raise FDroidException("androguard library is not installed and aapt not present") except FileNotFoundError: logging.error(_("Could not open apk file for analysis")) raise BuildException(_("Invalid APK")) apk['packageName'] = apkobject.get_package() xml = apkobject.get_android_manifest_xml() androidmanifest_xml = apkobject.xml['AndroidManifest.xml'] if len(xml.nsmap) > 0: # one of them surely will be the Android one, or its corrupt xmlns = '{http://schemas.android.com/apk/res/android}' else: # strange but sometimes the namespace is blank. This seems to # only happen with the Bromite/Chromium APKs xmlns = '{}' vcstr = androidmanifest_xml.get(xmlns + 'versionCode') if vcstr.startswith('0x'): apk['versionCode'] = int(vcstr, 16) else: apk['versionCode'] = int(vcstr) apk['name'] = apkobject.get_app_name() apk['versionName'] = common.ensure_final_value(apk['packageName'], arsc, androidmanifest_xml.get(xmlns + 'versionName')) minSdkVersion = _sanitize_sdk_version(apkobject.get_min_sdk_version()) if minSdkVersion is not None: apk['minSdkVersion'] = minSdkVersion targetSdkVersion = _sanitize_sdk_version(apkobject.get_target_sdk_version()) if targetSdkVersion is not None: apk['targetSdkVersion'] = targetSdkVersion maxSdkVersion = _sanitize_sdk_version(apkobject.get_max_sdk_version()) if maxSdkVersion is not None: apk['maxSdkVersion'] = maxSdkVersion icon_id_str = apkobject.get_element("application", "icon") if icon_id_str: icon_id = int(icon_id_str.replace("@", "0x"), 16) resource_id = arsc.get_id(apk['packageName'], icon_id) if resource_id: icon_name = arsc.get_id(apk['packageName'], icon_id)[1] else: # don't use 'anydpi' aka 0xFFFE aka 65534 since it is XML icon_name = os.path.splitext(os.path.basename(apkobject.get_app_icon(max_dpi=65534 - 1)))[0] apk['icons_src'] = _get_apk_icons_src(apkfile, icon_name) arch_re = re.compile("^lib/(.*)/.*$") arch = set([arch_re.match(file).group(1) for file in apkobject.get_files() if arch_re.match(file)]) if len(arch) >= 1: apk['nativecode'] = [] apk['nativecode'].extend(sorted(list(arch))) for item in xml.findall('uses-permission'): name = str(item.attrib[xmlns + 'name']) maxSdkVersion = item.attrib.get(xmlns + 'maxSdkVersion') maxSdkVersion = int(maxSdkVersion) if maxSdkVersion else None permission = UsesPermission( name, maxSdkVersion ) apk['uses-permission'].append(permission) for name, maxSdkVersion in apkobject.get_uses_implied_permission_list(): permission = UsesPermission( name, maxSdkVersion ) apk['uses-permission'].append(permission) for item in xml.findall('uses-permission-sdk-23'): name = str(item.attrib[xmlns + 'name']) maxSdkVersion = item.attrib.get(xmlns + 'maxSdkVersion') maxSdkVersion = int(maxSdkVersion) if maxSdkVersion else None permission_sdk_23 = UsesPermissionSdk23( name, maxSdkVersion ) apk['uses-permission-sdk-23'].append(permission_sdk_23) for item in xml.findall('uses-feature'): key = xmlns + 'name' if key not in item.attrib: continue feature = str(item.attrib[key]) if feature != "android.hardware.screen.portrait" \ and feature != "android.hardware.screen.landscape": if feature.startswith("android.feature."): feature = feature[16:] required = item.attrib.get(xmlns + 'required') if required is None or required == 'true': apk['features'].append(feature) def process_apk(apkcache, apkfilename, repodir, knownapks, use_date_from_apk=False, allow_disabled_algorithms=False, archive_bad_sig=False): """Processes the apk with the given filename in the given repo directory. This also extracts the icons. :param apkcache: current apk cache information :param apkfilename: the filename of the apk to scan :param repodir: repo directory to scan :param knownapks: known apks info :param use_date_from_apk: use date from APK (instead of current date) for newly added APKs :param allow_disabled_algorithms: allow APKs with valid signatures that include disabled algorithms in the signature (e.g. MD5) :param archive_bad_sig: move APKs with a bad signature to the archive :returns: (skip, apk, cachechanged) where skip is a boolean indicating whether to skip this apk, apk is the scanned apk information, and cachechanged is True if the apkcache got changed. """ apk = {} apkfile = os.path.join(repodir, apkfilename) cachechanged = False usecache = False if apkfilename in apkcache: apk = apkcache[apkfilename] if apk.get('hash') == sha256sum(apkfile): logging.debug(_("Reading {apkfilename} from cache") .format(apkfilename=apkfilename)) usecache = True else: logging.debug(_("Ignoring stale cache data for {apkfilename}") .format(apkfilename=apkfilename)) if not usecache: logging.debug(_("Processing {apkfilename}").format(apkfilename=apkfilename)) try: apk = scan_apk(apkfile) except BuildException: logging.warning(_("Skipping '{apkfilename}' with invalid signature!") .format(apkfilename=apkfilename)) return True, None, False # Check for debuggable apks... if common.is_apk_and_debuggable(apkfile): logging.warning('{0} is set to android:debuggable="true"'.format(apkfile)) if options.rename_apks: n = apk['packageName'] + '_' + str(apk['versionCode']) + '.apk' std_short_name = os.path.join(repodir, n) if apkfile != std_short_name: if os.path.exists(std_short_name): std_long_name = std_short_name.replace('.apk', '_' + apk['sig'][:7] + '.apk') if apkfile != std_long_name: if os.path.exists(std_long_name): dupdir = os.path.join('duplicates', repodir) if not os.path.isdir(dupdir): os.makedirs(dupdir, exist_ok=True) dupfile = os.path.join('duplicates', std_long_name) logging.warning('Moving duplicate ' + std_long_name + ' to ' + dupfile) os.rename(apkfile, dupfile) return True, None, False else: os.rename(apkfile, std_long_name) apkfile = std_long_name else: os.rename(apkfile, std_short_name) apkfile = std_short_name apkfilename = apkfile[len(repodir) + 1:] apk['apkName'] = apkfilename srcfilename = apkfilename[:-4] + "_src.tar.gz" if os.path.exists(os.path.join(repodir, srcfilename)): apk['srcname'] = srcfilename # verify the jar signature is correct, allow deprecated # algorithms only if the APK is in the archive. skipapk = False if not common.verify_apk_signature(apkfile): if repodir == 'archive' or allow_disabled_algorithms: if common.verify_old_apk_signature(apkfile): apk['antiFeatures'].update(['KnownVuln', 'DisabledAlgorithm']) else: skipapk = True else: skipapk = True if skipapk: if archive_bad_sig: logging.warning(_('Archiving {apkfilename} with invalid signature!') .format(apkfilename=apkfilename)) move_apk_between_sections(repodir, 'archive', apk) else: logging.warning(_('Skipping {apkfilename} with invalid signature!') .format(apkfilename=apkfilename)) return True, None, False apkzip = zipfile.ZipFile(apkfile, 'r') manifest = apkzip.getinfo('AndroidManifest.xml') # 1980-0-0 means zeroed out, any other invalid date should trigger a warning if (1980, 0, 0) != manifest.date_time[0:3]: try: common.check_system_clock(datetime(*manifest.date_time), apkfilename) except ValueError as e: logging.warning(_("{apkfilename}'s AndroidManifest.xml has a bad date: ") .format(apkfilename=apkfile) + str(e)) # extract icons from APK zip file iconfilename = "%s.%s" % (apk['packageName'], apk['versionCode']) try: empty_densities = extract_apk_icons(iconfilename, apk, apkzip, repodir) finally: apkzip.close() # ensure that APK zip file gets closed # resize existing icons for densities missing in the APK fill_missing_icon_densities(empty_densities, iconfilename, apk, repodir) if use_date_from_apk and manifest.date_time[1] != 0: default_date_param = datetime(*manifest.date_time) else: default_date_param = None # Record in known apks, getting the added date at the same time.. added = knownapks.recordapk(apk['apkName'], apk['packageName'], default_date=default_date_param) if added: apk['added'] = added apkcache[apkfilename] = apk cachechanged = True return False, apk, cachechanged def process_apks(apkcache, repodir, knownapks, use_date_from_apk=False): """Processes the apks in the given repo directory. This also extracts the icons. :param apkcache: current apk cache information :param repodir: repo directory to scan :param knownapks: known apks info :param use_date_from_apk: use date from APK (instead of current date) for newly added APKs :returns: (apks, cachechanged) where apks is a list of apk information, and cachechanged is True if the apkcache got changed. """ cachechanged = False for icon_dir in get_all_icon_dirs(repodir): if os.path.exists(icon_dir): if options.clean: shutil.rmtree(icon_dir) os.makedirs(icon_dir) else: os.makedirs(icon_dir) apks = [] for apkfile in sorted(glob.glob(os.path.join(repodir, '*.apk'))): apkfilename = apkfile[len(repodir) + 1:] ada = options.allow_disabled_algorithms or config['allow_disabled_algorithms'] (skip, apk, cachethis) = process_apk(apkcache, apkfilename, repodir, knownapks, use_date_from_apk, ada, True) if skip: continue apks.append(apk) cachechanged = cachechanged or cachethis return apks, cachechanged def extract_apk_icons(icon_filename, apk, apkzip, repo_dir): """Extracts PNG icons from an APK with the supported pixel densities Extracts icons from the given APK zip in various densities, saves them into given repo directory and stores their names in the APK metadata dictionary. If the icon is an XML icon, then this tries to find PNG icon that can replace it. :param icon_filename: A string representing the icon's file name :param apk: A populated dictionary containing APK metadata. Needs to have 'icons_src' key :param apkzip: An opened zipfile.ZipFile of the APK file :param repo_dir: The directory of the APK's repository :return: A list of icon densities that are missing """ res_name_re = re.compile(r'res/(drawable|mipmap)-(x*[hlm]dpi|anydpi).*/(.*)_[0-9]+dp.(png|xml)') pngs = dict() for f in apkzip.namelist(): m = res_name_re.match(f) if m and m.group(4) == 'png': density = screen_resolutions[m.group(2)] pngs[m.group(3) + '/' + density] = m.group(0) icon_type = None empty_densities = [] for density in screen_densities: if density not in apk['icons_src']: empty_densities.append(density) continue icon_src = apk['icons_src'][density] icon_dir = get_icon_dir(repo_dir, density) icon_type = '.png' # Extract the icon files per density if icon_src.endswith('.xml'): m = res_name_re.match(icon_src) if m: name = pngs.get(m.group(3) + '/' + str(density)) if name: icon_src = name if icon_src.endswith('.xml'): empty_densities.append(density) icon_type = '.xml' icon_dest = os.path.join(icon_dir, icon_filename + icon_type) try: with open(icon_dest, 'wb') as f: f.write(get_icon_bytes(apkzip, icon_src)) apk['icons'][density] = icon_filename + icon_type except (zipfile.BadZipFile, ValueError, KeyError) as e: logging.warning("Error retrieving icon file: %s %s", icon_dest, e) del apk['icons_src'][density] empty_densities.append(density) # '-1' here is a remnant of the parsing of aapt output, meaning "no DPI specified" if '-1' in apk['icons_src']: icon_src = apk['icons_src']['-1'] icon_type = icon_src[-4:] icon_path = os.path.join(get_icon_dir(repo_dir, '0'), icon_filename + icon_type) with open(icon_path, 'wb') as f: f.write(get_icon_bytes(apkzip, icon_src)) if icon_type == '.png': im = None try: im = Image.open(icon_path) dpi = px_to_dpi(im.size[0]) for density in screen_densities: if density in apk['icons']: break if density == screen_densities[-1] or dpi >= int(density): apk['icons'][density] = icon_filename + icon_type shutil.move(icon_path, os.path.join(get_icon_dir(repo_dir, density), icon_filename + icon_type)) empty_densities.remove(density) break except Exception as e: logging.warning(_("Failed reading {path}: {error}") .format(path=icon_path, error=e)) finally: if im and hasattr(im, 'close'): im.close() if apk['icons']: apk['icon'] = icon_filename + icon_type return empty_densities def fill_missing_icon_densities(empty_densities, icon_filename, apk, repo_dir): """ Resize existing PNG icons for densities missing in the APK to ensure all densities are available :param empty_densities: A list of icon densities that are missing :param icon_filename: A string representing the icon's file name :param apk: A populated dictionary containing APK metadata. Needs to have 'icons' key :param repo_dir: The directory of the APK's repository """ icon_filename += '.png' # First try resizing down to not lose quality last_density = None for density in screen_densities: if density == '65534': # not possible to generate 'anydpi' from other densities continue if density not in empty_densities: last_density = density continue if last_density is None: continue logging.debug("Density %s not available, resizing down from %s", density, last_density) last_icon_path = os.path.join(get_icon_dir(repo_dir, last_density), icon_filename) icon_path = os.path.join(get_icon_dir(repo_dir, density), icon_filename) fp = None try: fp = open(last_icon_path, 'rb') im = Image.open(fp) size = dpi_to_px(density) im.thumbnail((size, size), Image.ANTIALIAS) im.save(icon_path, "PNG", optimize=True, pnginfo=BLANK_PNG_INFO, icc_profile=None) empty_densities.remove(density) except Exception as e: logging.warning("Invalid image file at %s: %s", last_icon_path, e) finally: if fp: fp.close() # Then just copy from the highest resolution available last_density = None for density in reversed(screen_densities): if density not in empty_densities: last_density = density continue if last_density is None: continue shutil.copyfile( os.path.join(get_icon_dir(repo_dir, last_density), icon_filename), os.path.join(get_icon_dir(repo_dir, density), icon_filename) ) empty_densities.remove(density) for density in screen_densities: icon_dir = get_icon_dir(repo_dir, density) icon_dest = os.path.join(icon_dir, icon_filename) resize_icon(icon_dest, density) # Copy from icons-mdpi to icons since mdpi is the baseline density baseline = os.path.join(get_icon_dir(repo_dir, '160'), icon_filename) if os.path.isfile(baseline): apk['icons']['0'] = icon_filename shutil.copyfile(baseline, os.path.join(get_icon_dir(repo_dir, '0'), icon_filename)) def apply_info_from_latest_apk(apps, apks): """ Some information from the apks needs to be applied up to the application level. When doing this, we use the info from the most recent version's apk. We deal with figuring out when the app was added and last updated at the same time. """ for appid, app in apps.items(): bestver = UNSET_VERSION_CODE for apk in apks: if apk['packageName'] == appid: if apk['versionCode'] > bestver: bestver = apk['versionCode'] bestapk = apk if 'added' in apk: if not app.added or apk['added'] < app.added: app.added = apk['added'] if not app.lastUpdated or apk['added'] > app.lastUpdated: app.lastUpdated = apk['added'] if not app.added: logging.debug("Don't know when " + appid + " was added") if not app.lastUpdated: logging.debug("Don't know when " + appid + " was last updated") if bestver == UNSET_VERSION_CODE: if app.Name is None: app.Name = app.AutoName or appid app.icon = None logging.debug("Application " + appid + " has no packages") else: if app.Name is None: app.Name = bestapk['name'] app.icon = bestapk['icon'] if 'icon' in bestapk else None if app.CurrentVersionCode is None: app.CurrentVersionCode = str(bestver) def make_categories_txt(repodir, categories): '''Write a category list in the repo to allow quick access''' catdata = '' for cat in sorted(categories): catdata += cat + '\n' with open(os.path.join(repodir, 'categories.txt'), 'w', encoding='utf8') as f: f.write(catdata) def archive_old_apks(apps, apks, archapks, repodir, archivedir, defaultkeepversions): def filter_apk_list_sorted(apk_list): res = [] for apk in apk_list: if apk['packageName'] == appid: res.append(apk) # Sort the apk list by version code. First is highest/newest. return sorted(res, key=lambda apk: apk['versionCode'], reverse=True) for appid, app in apps.items(): if app.ArchivePolicy: keepversions = int(app.ArchivePolicy[:-9]) else: keepversions = defaultkeepversions logging.debug(_("Checking archiving for {appid} - apks:{integer}, keepversions:{keep}, archapks:{arch}") .format(appid=appid, integer=len(apks), keep=keepversions, arch=len(archapks))) current_app_apks = filter_apk_list_sorted(apks) if len(current_app_apks) > keepversions: # Move back the ones we don't want. for apk in current_app_apks[keepversions:]: move_apk_between_sections(repodir, archivedir, apk) archapks.append(apk) apks.remove(apk) current_app_archapks = filter_apk_list_sorted(archapks) if len(current_app_apks) < keepversions and len(current_app_archapks) > 0: kept = 0 # Move forward the ones we want again, except DisableAlgorithm for apk in current_app_archapks: if 'DisabledAlgorithm' not in apk['antiFeatures']: move_apk_between_sections(archivedir, repodir, apk) archapks.remove(apk) apks.append(apk) kept += 1 if kept == keepversions: break def move_apk_between_sections(from_dir, to_dir, apk): """move an APK from repo to archive or vice versa""" def _move_file(from_dir, to_dir, filename, ignore_missing): from_path = os.path.join(from_dir, filename) if ignore_missing and not os.path.exists(from_path): return to_path = os.path.join(to_dir, filename) if not os.path.exists(to_dir): os.mkdir(to_dir) shutil.move(from_path, to_path) if from_dir == to_dir: return logging.info("Moving %s from %s to %s" % (apk['apkName'], from_dir, to_dir)) _move_file(from_dir, to_dir, apk['apkName'], False) _move_file(from_dir, to_dir, apk['apkName'] + '.asc', True) for density in all_screen_densities: from_icon_dir = get_icon_dir(from_dir, density) to_icon_dir = get_icon_dir(to_dir, density) if density not in apk.get('icons', []): continue _move_file(from_icon_dir, to_icon_dir, apk['icons'][density], True) if 'srcname' in apk: _move_file(from_dir, to_dir, apk['srcname'], False) def add_apks_to_per_app_repos(repodir, apks): apks_per_app = dict() for apk in apks: apk['per_app_dir'] = os.path.join(apk['packageName'], 'fdroid') apk['per_app_repo'] = os.path.join(apk['per_app_dir'], 'repo') apk['per_app_icons'] = os.path.join(apk['per_app_repo'], 'icons') apks_per_app[apk['packageName']] = apk if not os.path.exists(apk['per_app_icons']): logging.info(_('Adding new repo for only {name}').format(name=apk['packageName'])) os.makedirs(apk['per_app_icons']) apkpath = os.path.join(repodir, apk['apkName']) shutil.copy(apkpath, apk['per_app_repo']) apksigpath = apkpath + '.sig' if os.path.exists(apksigpath): shutil.copy(apksigpath, apk['per_app_repo']) apkascpath = apkpath + '.asc' if os.path.exists(apkascpath): shutil.copy(apkascpath, apk['per_app_repo']) def create_metadata_from_template(apk): '''create a new metadata file using internal or external template Generate warnings for apk's with no metadata (or create skeleton metadata files, if requested on the command line). Though the template file is YAML, this uses neither pyyaml nor ruamel.yaml since those impose things on the metadata file made from the template: field sort order, empty field value, formatting, etc. ''' import yaml if os.path.exists('template.yml'): with open('template.yml') as f: metatxt = f.read() if 'name' in apk and apk['name'] != '': metatxt = re.sub(r'''^(((Auto)?Name|Summary):)[ '"\.]*$''', r'\1 ' + apk['name'], metatxt, flags=re.IGNORECASE | re.MULTILINE) else: logging.warning(_('{appid} does not have a name! Using package name instead.') .format(appid=apk['packageName'])) metatxt = re.sub(r'^(((Auto)?Name|Summary):).*$', r'\1 ' + apk['packageName'], metatxt, flags=re.IGNORECASE | re.MULTILINE) with open(os.path.join('metadata', apk['packageName'] + '.yml'), 'w') as f: f.write(metatxt) else: app = dict() app['Categories'] = [os.path.basename(os.getcwd())] # include some blanks as part of the template app['AuthorName'] = '' app['Summary'] = '' app['WebSite'] = '' app['IssueTracker'] = '' app['SourceCode'] = '' app['CurrentVersionCode'] = 2147483647 # Java's Integer.MAX_VALUE if 'name' in apk and apk['name'] != '': app['Name'] = apk['name'] else: logging.warning(_('{appid} does not have a name! Using package name instead.') .format(appid=apk['packageName'])) app['Name'] = apk['packageName'] with open(os.path.join('metadata', apk['packageName'] + '.yml'), 'w') as f: yaml.dump(app, f, default_flow_style=False) logging.info(_("Generated skeleton metadata for {appid}").format(appid=apk['packageName'])) config = None options = None start_timestamp = time.gmtime() def main(): global config, options # Parse command line... parser = ArgumentParser() common.setup_global_opts(parser) parser.add_argument("--create-key", action="store_true", default=False, help=_("Add a repo signing key to an unsigned repo")) parser.add_argument("-c", "--create-metadata", action="store_true", default=False, help=_("Add skeleton metadata files for APKs that are missing them")) parser.add_argument("--delete-unknown", action="store_true", default=False, help=_("Delete APKs and/or OBBs without metadata from the repo")) parser.add_argument("-b", "--buildreport", action="store_true", default=False, help=_("Report on build data status")) parser.add_argument("-i", "--interactive", default=False, action="store_true", help=_("Interactively ask about things that need updating.")) parser.add_argument("-I", "--icons", action="store_true", default=False, help=_("Resize all the icons exceeding the max pixel size and exit")) parser.add_argument("-e", "--editor", default="/etc/alternatives/editor", help=_("Specify editor to use in interactive mode. Default is {path}") .format(path='/etc/alternatives/editor')) parser.add_argument("-w", "--wiki", default=False, action="store_true", help=_("Update the wiki")) parser.add_argument("--pretty", action="store_true", default=False, help=_("Produce human-readable XML/JSON for index files")) parser.add_argument("--clean", action="store_true", default=False, help=_("Clean update - don't uses caches, reprocess all APKs")) parser.add_argument("--nosign", action="store_true", default=False, help=_("When configured for signed indexes, create only unsigned indexes at this stage")) parser.add_argument("--use-date-from-apk", action="store_true", default=False, help=_("Use date from APK instead of current time for newly added APKs")) parser.add_argument("--rename-apks", action="store_true", default=False, help=_("Rename APK files that do not match package.name_123.apk")) parser.add_argument("--allow-disabled-algorithms", action="store_true", default=False, help=_("Include APKs that are signed with disabled algorithms like MD5")) metadata.add_metadata_arguments(parser) options = parser.parse_args() metadata.warnings_action = options.W config = common.read_config(options) if not ('jarsigner' in config and 'keytool' in config): raise FDroidException(_('Java JDK not found! Install in standard location or set java_paths!')) repodirs = ['repo'] if config['archive_older'] != 0: repodirs.append('archive') if not os.path.exists('archive'): os.mkdir('archive') if options.icons: resize_all_icons(repodirs) sys.exit(0) if options.rename_apks: options.clean = True # check that icons exist now, rather than fail at the end of `fdroid update` for k in ['repo_icon', 'archive_icon']: if k in config: if not os.path.exists(config[k]): logging.critical(_('{name} "{path}" does not exist! Correct it in config.py.') .format(name=k, path=config[k])) sys.exit(1) # if the user asks to create a keystore, do it now, reusing whatever it can if options.create_key: if os.path.exists(config['keystore']): logging.critical(_("Cowardily refusing to overwrite existing signing key setup!")) logging.critical("\t'" + config['keystore'] + "'") sys.exit(1) if 'repo_keyalias' not in config: config['repo_keyalias'] = socket.getfqdn() common.write_to_config(config, 'repo_keyalias', config['repo_keyalias']) if 'keydname' not in config: config['keydname'] = 'CN=' + config['repo_keyalias'] + ', OU=F-Droid' common.write_to_config(config, 'keydname', config['keydname']) if 'keystore' not in config: config['keystore'] = common.default_config['keystore'] common.write_to_config(config, 'keystore', config['keystore']) password = common.genpassword() if 'keystorepass' not in config: config['keystorepass'] = password common.write_to_config(config, 'keystorepass', config['keystorepass']) if 'keypass' not in config: config['keypass'] = password common.write_to_config(config, 'keypass', config['keypass']) common.genkeystore(config) # Get all apps... apps = metadata.read_metadata() # Generate a list of categories... categories = set() for app in apps.values(): categories.update(app.Categories) # Read known apks data (will be updated and written back when we've finished) knownapks = common.KnownApks() # Get APK cache apkcache = get_cache() # Delete builds for disabled apps delete_disabled_builds(apps, apkcache, repodirs) # Scan all apks in the main repo apks, cachechanged = process_apks(apkcache, repodirs[0], knownapks, options.use_date_from_apk) files, fcachechanged = scan_repo_files(apkcache, repodirs[0], knownapks, options.use_date_from_apk) cachechanged = cachechanged or fcachechanged apks += files for apk in apks: if apk['packageName'] not in apps: if options.create_metadata: create_metadata_from_template(apk) apps = metadata.read_metadata() else: msg = _("{apkfilename} ({appid}) has no metadata!") \ .format(apkfilename=apk['apkName'], appid=apk['packageName']) if options.delete_unknown: logging.warn(msg + '\n\t' + _("deleting: repo/{apkfilename}") .format(apkfilename=apk['apkName'])) rmf = os.path.join(repodirs[0], apk['apkName']) if not os.path.exists(rmf): logging.error(_("Could not find {path} to remove it").format(path=rmf)) else: os.remove(rmf) else: logging.warn(msg + '\n\t' + _("Use `fdroid update -c` to create it.")) copy_triple_t_store_metadata(apps) insert_obbs(repodirs[0], apps, apks) insert_localized_app_metadata(apps) translate_per_build_anti_features(apps, apks) # Scan the archive repo for apks as well if len(repodirs) > 1: archapks, cc = process_apks(apkcache, repodirs[1], knownapks, options.use_date_from_apk) if cc: cachechanged = True else: archapks = [] # Apply information from latest apks to the application and update dates apply_info_from_latest_apk(apps, apks + archapks) # Sort the app list by name, then the web site doesn't have to by default. # (we had to wait until we'd scanned the apks to do this, because mostly the # name comes from there!) sortedids = sorted(apps.keys(), key=lambda appid: apps[appid].Name.upper()) # APKs are placed into multiple repos based on the app package, providing # per-app subscription feeds for nightly builds and things like it if config['per_app_repos']: add_apks_to_per_app_repos(repodirs[0], apks) for appid, app in apps.items(): repodir = os.path.join(appid, 'fdroid', 'repo') appdict = dict() appdict[appid] = app if os.path.isdir(repodir): index.make(appdict, [appid], apks, repodir, False) else: logging.info(_('Skipping index generation for {appid}').format(appid=appid)) return if len(repodirs) > 1: archive_old_apks(apps, apks, archapks, repodirs[0], repodirs[1], config['archive_older']) # Make the index for the main repo... index.make(apps, sortedids, apks, repodirs[0], False) make_categories_txt(repodirs[0], categories) # If there's an archive repo, make the index for it. We already scanned it # earlier on. if len(repodirs) > 1: index.make(apps, sortedids, archapks, repodirs[1], True) git_remote = config.get('binary_transparency_remote') if git_remote or os.path.isdir(os.path.join('binary_transparency', '.git')): from . import btlog btlog.make_binary_transparency_log(repodirs) if config['update_stats']: # Update known apks info... knownapks.writeifchanged() # Generate latest apps data for widget if os.path.exists(os.path.join('stats', 'latestapps.txt')): data = '' with open(os.path.join('stats', 'latestapps.txt'), 'r', encoding='utf8') as f: for line in f: appid = line.rstrip() data += appid + "\t" app = apps[appid] data += app.Name + "\t" if app.icon is not None: data += app.icon + "\t" data += app.License + "\n" with open(os.path.join(repodirs[0], 'latestapps.dat'), 'w', encoding='utf8') as f: f.write(data) if cachechanged: write_cache(apkcache) # Update the wiki... if options.wiki: update_wiki(apps, sortedids, apks + archapks) logging.info(_("Finished")) if __name__ == "__main__": main() fdroidserver-1.0.9/fdroidserver/server.py0000664000175000017500000010054013303240575020505 0ustar hanshans00000000000000#!/usr/bin/env python3 # # server.py - part of the FDroid server tools # Copyright (C) 2010-15, Ciaran Gultnieks, ciaran@ciarang.com # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . import sys import glob import hashlib import os import paramiko import pwd import re import subprocess import time from argparse import ArgumentParser import logging import shutil from . import _ from . import common from .exception import FDroidException config = None options = None start_timestamp = time.gmtime() BINARY_TRANSPARENCY_DIR = 'binary_transparency' AUTO_S3CFG = '.fdroid-server-update-s3cfg' USER_S3CFG = 's3cfg' def update_awsbucket(repo_section): ''' Upload the contents of the directory `repo_section` (including subdirectories) to the AWS S3 "bucket". The contents of that subdir of the bucket will first be deleted. Requires AWS credentials set in config.py: awsaccesskeyid, awssecretkey ''' logging.debug('Syncing "' + repo_section + '" to Amazon S3 bucket "' + config['awsbucket'] + '"') if common.set_command_in_config('s3cmd'): update_awsbucket_s3cmd(repo_section) else: update_awsbucket_libcloud(repo_section) def update_awsbucket_s3cmd(repo_section): '''upload using the CLI tool s3cmd, which provides rsync-like sync The upload is done in multiple passes to reduce the chance of interfering with an existing client-server interaction. In the first pass, only new files are uploaded. In the second pass, changed files are uploaded, overwriting what is on the server. On the third/last pass, the indexes are uploaded, and any removed files are deleted from the server. The last pass is the only pass to use a full MD5 checksum of all files to detect changes. ''' logging.debug(_('Using s3cmd to sync with: {url}') .format(url=config['awsbucket'])) if os.path.exists(USER_S3CFG): logging.info(_('Using "{path}" for configuring s3cmd.').format(path=USER_S3CFG)) configfilename = USER_S3CFG else: fd = os.open(AUTO_S3CFG, os.O_CREAT | os.O_TRUNC | os.O_WRONLY, 0o600) logging.debug(_('Creating "{path}" for configuring s3cmd.').format(path=AUTO_S3CFG)) os.write(fd, '[default]\n'.encode('utf-8')) os.write(fd, ('access_key = ' + config['awsaccesskeyid'] + '\n').encode('utf-8')) os.write(fd, ('secret_key = ' + config['awssecretkey'] + '\n').encode('utf-8')) os.close(fd) configfilename = AUTO_S3CFG s3bucketurl = 's3://' + config['awsbucket'] s3cmd = [config['s3cmd'], '--config=' + configfilename] if subprocess.call(s3cmd + ['info', s3bucketurl]) != 0: logging.warning(_('Creating new S3 bucket: {url}') .format(url=s3bucketurl)) if subprocess.call(s3cmd + ['mb', s3bucketurl]) != 0: logging.error(_('Failed to create S3 bucket: {url}') .format(url=s3bucketurl)) raise FDroidException() s3cmd_sync = s3cmd + ['sync', '--acl-public'] if options.verbose: s3cmd_sync += ['--verbose'] if options.quiet: s3cmd_sync += ['--quiet'] indexxml = os.path.join(repo_section, 'index.xml') indexjar = os.path.join(repo_section, 'index.jar') indexv1jar = os.path.join(repo_section, 'index-v1.jar') s3url = s3bucketurl + '/fdroid/' logging.debug('s3cmd sync new files in ' + repo_section + ' to ' + s3url) logging.debug(_('Running first pass with MD5 checking disabled')) if subprocess.call(s3cmd_sync + ['--no-check-md5', '--skip-existing', '--exclude', indexxml, '--exclude', indexjar, '--exclude', indexv1jar, repo_section, s3url]) != 0: raise FDroidException() logging.debug('s3cmd sync all files in ' + repo_section + ' to ' + s3url) if subprocess.call(s3cmd_sync + ['--no-check-md5', '--exclude', indexxml, '--exclude', indexjar, '--exclude', indexv1jar, repo_section, s3url]) != 0: raise FDroidException() logging.debug(_('s3cmd sync indexes {path} to {url} and delete') .format(path=repo_section, url=s3url)) s3cmd_sync.append('--delete-removed') s3cmd_sync.append('--delete-after') if options.no_checksum: s3cmd_sync.append('--no-check-md5') else: s3cmd_sync.append('--check-md5') if subprocess.call(s3cmd_sync + [repo_section, s3url]) != 0: raise FDroidException() def update_awsbucket_libcloud(repo_section): ''' Upload the contents of the directory `repo_section` (including subdirectories) to the AWS S3 "bucket". The contents of that subdir of the bucket will first be deleted. Requires AWS credentials set in config.py: awsaccesskeyid, awssecretkey ''' logging.debug(_('using Apache libcloud to sync with {url}') .format(url=config['awsbucket'])) import libcloud.security libcloud.security.VERIFY_SSL_CERT = True from libcloud.storage.types import Provider, ContainerDoesNotExistError from libcloud.storage.providers import get_driver if not config.get('awsaccesskeyid') or not config.get('awssecretkey'): raise FDroidException( _('To use awsbucket, awssecretkey and awsaccesskeyid must also be set in config.py!')) awsbucket = config['awsbucket'] if os.path.exists(USER_S3CFG): raise FDroidException(_('"{path}" exists but s3cmd is not installed!') .format(path=USER_S3CFG)) cls = get_driver(Provider.S3) driver = cls(config['awsaccesskeyid'], config['awssecretkey']) try: container = driver.get_container(container_name=awsbucket) except ContainerDoesNotExistError: container = driver.create_container(container_name=awsbucket) logging.info(_('Created new container "{name}"') .format(name=container.name)) upload_dir = 'fdroid/' + repo_section objs = dict() for obj in container.list_objects(): if obj.name.startswith(upload_dir + '/'): objs[obj.name] = obj for root, dirs, files in os.walk(os.path.join(os.getcwd(), repo_section)): for name in files: upload = False file_to_upload = os.path.join(root, name) object_name = 'fdroid/' + os.path.relpath(file_to_upload, os.getcwd()) if object_name not in objs: upload = True else: obj = objs.pop(object_name) if obj.size != os.path.getsize(file_to_upload): upload = True else: # if the sizes match, then compare by MD5 md5 = hashlib.md5() with open(file_to_upload, 'rb') as f: while True: data = f.read(8192) if not data: break md5.update(data) if obj.hash != md5.hexdigest(): s3url = 's3://' + awsbucket + '/' + obj.name logging.info(' deleting ' + s3url) if not driver.delete_object(obj): logging.warn('Could not delete ' + s3url) upload = True if upload: logging.debug(' uploading "' + file_to_upload + '"...') extra = {'acl': 'public-read'} if file_to_upload.endswith('.sig'): extra['content_type'] = 'application/pgp-signature' elif file_to_upload.endswith('.asc'): extra['content_type'] = 'application/pgp-signature' logging.info(' uploading ' + os.path.relpath(file_to_upload) + ' to s3://' + awsbucket + '/' + object_name) with open(file_to_upload, 'rb') as iterator: obj = driver.upload_object_via_stream(iterator=iterator, container=container, object_name=object_name, extra=extra) # delete the remnants in the bucket, they do not exist locally while objs: object_name, obj = objs.popitem() s3url = 's3://' + awsbucket + '/' + object_name if object_name.startswith(upload_dir): logging.warn(' deleting ' + s3url) driver.delete_object(obj) else: logging.info(' skipping ' + s3url) def update_serverwebroot(serverwebroot, repo_section): # use a checksum comparison for accurate comparisons on different # filesystems, for example, FAT has a low resolution timestamp rsyncargs = ['rsync', '--archive', '--delete-after', '--safe-links'] if not options.no_checksum: rsyncargs.append('--checksum') if options.verbose: rsyncargs += ['--verbose'] if options.quiet: rsyncargs += ['--quiet'] if options.identity_file is not None: rsyncargs += ['-e', 'ssh -oBatchMode=yes -oIdentitiesOnly=yes -i ' + options.identity_file] elif 'identity_file' in config: rsyncargs += ['-e', 'ssh -oBatchMode=yes -oIdentitiesOnly=yes -i ' + config['identity_file']] indexxml = os.path.join(repo_section, 'index.xml') indexjar = os.path.join(repo_section, 'index.jar') indexv1jar = os.path.join(repo_section, 'index-v1.jar') # Upload the first time without the index files and delay the deletion as # much as possible, that keeps the repo functional while this update is # running. Then once it is complete, rerun the command again to upload # the index files. Always using the same target with rsync allows for # very strict settings on the receiving server, you can literally specify # the one rsync command that is allowed to run in ~/.ssh/authorized_keys. # (serverwebroot is guaranteed to have a trailing slash in common.py) logging.info('rsyncing ' + repo_section + ' to ' + serverwebroot) if subprocess.call(rsyncargs + ['--exclude', indexxml, '--exclude', indexjar, '--exclude', indexv1jar, repo_section, serverwebroot]) != 0: raise FDroidException() if subprocess.call(rsyncargs + [repo_section, serverwebroot]) != 0: raise FDroidException() # upload "current version" symlinks if requested if config['make_current_version_link'] and repo_section == 'repo': links_to_upload = [] for f in glob.glob('*.apk') \ + glob.glob('*.apk.asc') + glob.glob('*.apk.sig'): if os.path.islink(f): links_to_upload.append(f) if len(links_to_upload) > 0: if subprocess.call(rsyncargs + links_to_upload + [serverwebroot]) != 0: raise FDroidException() def sync_from_localcopy(repo_section, local_copy_dir): '''Syncs the repo from "local copy dir" filesystem to this box In setups that use offline signing, this is the last step that syncs the repo from the "local copy dir" e.g. a thumb drive to the repo on the local filesystem. That local repo is then used to push to all the servers that are configured. ''' logging.info('Syncing from local_copy_dir to this repo.') # trailing slashes have a meaning in rsync which is not needed here, so # make sure both paths have exactly one trailing slash common.local_rsync(options, os.path.join(local_copy_dir, repo_section).rstrip('/') + '/', repo_section.rstrip('/') + '/') offline_copy = os.path.join(local_copy_dir, BINARY_TRANSPARENCY_DIR) if os.path.exists(os.path.join(offline_copy, '.git')): online_copy = os.path.join(os.getcwd(), BINARY_TRANSPARENCY_DIR) push_binary_transparency(offline_copy, online_copy) def update_localcopy(repo_section, local_copy_dir): '''copy data from offline to the "local copy dir" filesystem This updates the copy of this repo used to shuttle data from an offline signing machine to the online machine, e.g. on a thumb drive. ''' # local_copy_dir is guaranteed to have a trailing slash in main() below common.local_rsync(options, repo_section, local_copy_dir) offline_copy = os.path.join(os.getcwd(), BINARY_TRANSPARENCY_DIR) if os.path.isdir(os.path.join(offline_copy, '.git')): online_copy = os.path.join(local_copy_dir, BINARY_TRANSPARENCY_DIR) push_binary_transparency(offline_copy, online_copy) def _get_size(start_path='.'): '''get size of all files in a dir https://stackoverflow.com/a/1392549''' total_size = 0 for root, dirs, files in os.walk(start_path): for f in files: fp = os.path.join(root, f) total_size += os.path.getsize(fp) return total_size def update_servergitmirrors(servergitmirrors, repo_section): '''update repo mirrors stored in git repos This is a hack to use public git repos as F-Droid repos. It recreates the git repo from scratch each time, so that there is no history. That keeps the size of the git repo small. Services like GitHub or GitLab have a size limit of something like 1 gig. This git repo is only a git repo for the purpose of being hosted. For history, there is the archive section, and there is the binary transparency log. ''' import git from clint.textui import progress if config.get('local_copy_dir') \ and not config.get('sync_from_local_copy_dir'): logging.debug('Offline machine, skipping git mirror generation until `fdroid server update`') return # right now we support only 'repo' git-mirroring if repo_section == 'repo': git_mirror_path = 'git-mirror' dotgit = os.path.join(git_mirror_path, '.git') git_repodir = os.path.join(git_mirror_path, 'fdroid', repo_section) if not os.path.isdir(git_repodir): os.makedirs(git_repodir) if os.path.isdir(dotgit) and _get_size(git_mirror_path) > 1000000000: logging.warning('Deleting git-mirror history, repo is too big (1 gig max)') shutil.rmtree(dotgit) # rsync is very particular about trailing slashes common.local_rsync(options, repo_section.rstrip('/') + '/', git_repodir.rstrip('/') + '/') # use custom SSH command if identity_file specified ssh_cmd = 'ssh -oBatchMode=yes' if options.identity_file is not None: ssh_cmd += ' -oIdentitiesOnly=yes -i "%s"' % options.identity_file elif 'identity_file' in config: ssh_cmd += ' -oIdentitiesOnly=yes -i "%s"' % config['identity_file'] repo = git.Repo.init(git_mirror_path) for remote_url in servergitmirrors: hostname = re.sub(r'\W*\w+\W+(\w+).*', r'\1', remote_url) r = git.remote.Remote(repo, hostname) if r in repo.remotes: r = repo.remote(hostname) if 'set_url' in dir(r): # force remote URL if using GitPython 2.x r.set_url(remote_url) else: repo.create_remote(hostname, remote_url) logging.info('Mirroring to: ' + remote_url) # sadly index.add don't allow the --all parameter logging.debug('Adding all files to git mirror') repo.git.add(all=True) logging.debug('Committing all files into git mirror') repo.index.commit("fdroidserver git-mirror") if options.verbose: bar = progress.Bar() class MyProgressPrinter(git.RemoteProgress): def update(self, op_code, current, maximum=None, message=None): if isinstance(maximum, float): bar.show(current, maximum) progress = MyProgressPrinter() else: progress = None # push for every remote. This will overwrite the git history for remote in repo.remotes: if remote.name == 'gitlab': logging.debug('Writing .gitlab-ci.yml to deploy to GitLab Pages') with open(os.path.join(git_mirror_path, ".gitlab-ci.yml"), "wt") as out_file: out_file.write("""pages: script: - mkdir .public - cp -r * .public/ - mv .public public artifacts: paths: - public """) repo.git.add(all=True) repo.index.commit("fdroidserver git-mirror: Deploy to GitLab Pages") logging.debug(_('Pushing to {url}').format(url=remote.url)) with repo.git.custom_environment(GIT_SSH_COMMAND=ssh_cmd): pushinfos = remote.push('master', force=True, set_upstream=True, progress=progress) for pushinfo in pushinfos: if pushinfo.flags & (git.remote.PushInfo.ERROR | git.remote.PushInfo.REJECTED | git.remote.PushInfo.REMOTE_FAILURE | git.remote.PushInfo.REMOTE_REJECTED): raise FDroidException(remote.url + ' push failed: ' + str(pushinfo.flags) + ' ' + pushinfo.summary) else: logging.debug(remote.url + ': ' + pushinfo.summary) if progress: bar.done() def upload_to_android_observatory(repo_section): # depend on requests and lxml only if users enable AO import requests from lxml.html import fromstring if repo_section == 'repo': for f in glob.glob(os.path.join(repo_section, '*.apk')): fpath = f fname = os.path.basename(f) logging.info('Uploading ' + fname + ' to androidobservatory.org') # upload the file with a post request r = requests.post('https://androidobservatory.org/upload', files={'apk': (fname, open(fpath, 'rb'))}) response = r.text page = r.url # from now on XPath will be used to retrieve the message in the HTML # androidobservatory doesn't have a nice API to talk with # so we must scrape the page content tree = fromstring(response) alert = tree.xpath("//html/body/div[@class='container content-container']/div[@class='alert alert-info']")[0] message = "" appurl = page for el in alert: # if the application was added successfully we retrive the url # if the application was already uploaded we use the redirect page url if el.attrib.get("href") is not None: appurl = page + el.attrib["href"][1:] message += el.text.replace(" here", "") + el.tail else: message += el.tail message = message.strip() + " " + appurl logging.info(message) def upload_to_virustotal(repo_section, vt_apikey): import json import requests logging.getLogger("urllib3").setLevel(logging.WARNING) logging.getLogger("requests").setLevel(logging.WARNING) if repo_section == 'repo': if not os.path.exists('virustotal'): os.mkdir('virustotal') with open(os.path.join(repo_section, 'index-v1.json')) as fp: index = json.load(fp) for packageName, packages in index['packages'].items(): for package in packages: outputfilename = os.path.join('virustotal', packageName + '_' + str(package.get('versionCode')) + '_' + package['hash'] + '.json') if os.path.exists(outputfilename): logging.debug(package['apkName'] + ' results are in ' + outputfilename) continue filename = package['apkName'] repofilename = os.path.join(repo_section, filename) logging.info('Checking if ' + repofilename + ' is on virustotal') headers = { "User-Agent": "F-Droid" } params = { 'apikey': vt_apikey, 'resource': package['hash'], } needs_file_upload = False while True: r = requests.post('https://www.virustotal.com/vtapi/v2/file/report', params=params, headers=headers) if r.status_code == 200: response = r.json() if response['response_code'] == 0: needs_file_upload = True else: response['filename'] = filename response['packageName'] = packageName response['versionCode'] = package.get('versionCode') response['versionName'] = package.get('versionName') with open(outputfilename, 'w') as fp: json.dump(response, fp, indent=2, sort_keys=True) if response.get('positives', 0) > 0: logging.warning(repofilename + ' has been flagged by virustotal ' + str(response['positives']) + ' times:' + '\n\t' + response['permalink']) break elif r.status_code == 204: time.sleep(10) # wait for public API rate limiting if needs_file_upload: logging.info('Uploading ' + repofilename + ' to virustotal') files = { 'file': (filename, open(repofilename, 'rb')) } r = requests.post('https://www.virustotal.com/vtapi/v2/file/scan', params=params, headers=headers, files=files) response = r.json() logging.info(response['verbose_msg'] + " " + response['permalink']) def push_binary_transparency(git_repo_path, git_remote): '''push the binary transparency git repo to the specifed remote. If the remote is a local directory, make sure it exists, and is a git repo. This is used to move this git repo from an offline machine onto a flash drive, then onto the online machine. Also, this pulls because pushing to a non-bare git repo is error prone. This is also used in offline signing setups, where it then also creates a "local copy dir" git repo that serves to shuttle the git data from the offline machine to the online machine. In that case, git_remote is a dir on the local file system, e.g. a thumb drive. ''' import git logging.info(_('Pushing binary transparency log to {url}') .format(url=git_remote)) if os.path.isdir(os.path.dirname(git_remote)): # from offline machine to thumbdrive remote_path = os.path.abspath(git_repo_path) if not os.path.isdir(os.path.join(git_remote, '.git')): os.makedirs(git_remote, exist_ok=True) thumbdriverepo = git.Repo.init(git_remote) local = thumbdriverepo.create_remote('local', remote_path) else: thumbdriverepo = git.Repo(git_remote) local = git.remote.Remote(thumbdriverepo, 'local') if local in thumbdriverepo.remotes: local = thumbdriverepo.remote('local') if 'set_url' in dir(local): # force remote URL if using GitPython 2.x local.set_url(remote_path) else: local = thumbdriverepo.create_remote('local', remote_path) local.pull('master') else: # from online machine to remote on a server on the internet gitrepo = git.Repo(git_repo_path) origin = git.remote.Remote(gitrepo, 'origin') if origin in gitrepo.remotes: origin = gitrepo.remote('origin') if 'set_url' in dir(origin): # added in GitPython 2.x origin.set_url(git_remote) else: origin = gitrepo.create_remote('origin', git_remote) origin.push('master') def update_wiki(): try: import mwclient site = mwclient.Site((config['wiki_protocol'], config['wiki_server']), path=config['wiki_path']) site.login(config['wiki_user'], config['wiki_password']) # Write a page with the last build log for this version code wiki_page_path = 'deploy_' + time.strftime('%s', start_timestamp) newpage = site.Pages[wiki_page_path] txt = '' txt += "* command line: " + ' '.join(sys.argv) + "\n" txt += "* started at " + common.get_wiki_timestamp(start_timestamp) + '\n' txt += "* completed at " + common.get_wiki_timestamp() + '\n' txt += "\n\n" newpage.save(txt, summary='Run log') newpage = site.Pages['deploy'] newpage.save('#REDIRECT [[' + wiki_page_path + ']]', summary='Update redirect') except Exception as e: logging.error(_('Error while attempting to publish log: %s') % e) def main(): global config, options # Parse command line... parser = ArgumentParser() common.setup_global_opts(parser) parser.add_argument("command", help=_("command to execute, either 'init' or 'update'")) parser.add_argument("-i", "--identity-file", default=None, help=_("Specify an identity file to provide to SSH for rsyncing")) parser.add_argument("--local-copy-dir", default=None, help=_("Specify a local folder to sync the repo to")) parser.add_argument("--no-checksum", action="store_true", default=False, help=_("Don't use rsync checksums")) options = parser.parse_args() config = common.read_config(options) if options.command != 'init' and options.command != 'update': logging.critical(_("The only commands currently supported are 'init' and 'update'")) sys.exit(1) if config.get('nonstandardwebroot') is True: standardwebroot = False else: standardwebroot = True for serverwebroot in config.get('serverwebroot', []): # this supports both an ssh host:path and just a path s = serverwebroot.rstrip('/').split(':') if len(s) == 1: fdroiddir = s[0] elif len(s) == 2: host, fdroiddir = s else: logging.error(_('Malformed serverwebroot line:') + ' ' + serverwebroot) sys.exit(1) repobase = os.path.basename(fdroiddir) if standardwebroot and repobase != 'fdroid': logging.error('serverwebroot path does not end with "fdroid", ' + 'perhaps you meant one of these:\n\t' + serverwebroot.rstrip('/') + '/fdroid\n\t' + serverwebroot.rstrip('/').rstrip(repobase) + 'fdroid') sys.exit(1) if options.local_copy_dir is not None: local_copy_dir = options.local_copy_dir elif config.get('local_copy_dir'): local_copy_dir = config['local_copy_dir'] else: local_copy_dir = None if local_copy_dir is not None: fdroiddir = local_copy_dir.rstrip('/') if os.path.exists(fdroiddir) and not os.path.isdir(fdroiddir): logging.error(_('local_copy_dir must be directory, not a file!')) sys.exit(1) if not os.path.exists(os.path.dirname(fdroiddir)): logging.error(_('The root dir for local_copy_dir "{path}" does not exist!') .format(path=os.path.dirname(fdroiddir))) sys.exit(1) if not os.path.isabs(fdroiddir): logging.error(_('local_copy_dir must be an absolute path!')) sys.exit(1) repobase = os.path.basename(fdroiddir) if standardwebroot and repobase != 'fdroid': logging.error(_('local_copy_dir does not end with "fdroid", ' + 'perhaps you meant: "{path}"') .format(path=fdroiddir + '/fdroid')) sys.exit(1) if local_copy_dir[-1] != '/': local_copy_dir += '/' local_copy_dir = local_copy_dir.replace('//', '/') if not os.path.exists(fdroiddir): os.mkdir(fdroiddir) if not config.get('awsbucket') \ and not config.get('serverwebroot') \ and not config.get('servergitmirrors') \ and not config.get('androidobservatory') \ and not config.get('binary_transparency_remote') \ and not config.get('virustotal_apikey') \ and local_copy_dir is None: logging.warn(_('No option set! Edit your config.py to set at least one of these:') + '\nserverwebroot, servergitmirrors, local_copy_dir, awsbucket, virustotal_apikey, androidobservatory, or binary_transparency_remote') sys.exit(1) repo_sections = ['repo'] if config['archive_older'] != 0: repo_sections.append('archive') if not os.path.exists('archive'): os.mkdir('archive') if config['per_app_repos']: repo_sections += common.get_per_app_repos() if options.command == 'init': ssh = paramiko.SSHClient() ssh.load_system_host_keys() for serverwebroot in config.get('serverwebroot', []): sshstr, remotepath = serverwebroot.rstrip('/').split(':') if sshstr.find('@') >= 0: username, hostname = sshstr.split('@') else: username = pwd.getpwuid(os.getuid())[0] # get effective uid hostname = sshstr ssh.connect(hostname, username=username) sftp = ssh.open_sftp() if os.path.basename(remotepath) \ not in sftp.listdir(os.path.dirname(remotepath)): sftp.mkdir(remotepath, mode=0o755) for repo_section in repo_sections: repo_path = os.path.join(remotepath, repo_section) if os.path.basename(repo_path) \ not in sftp.listdir(remotepath): sftp.mkdir(repo_path, mode=0o755) sftp.close() ssh.close() elif options.command == 'update': for repo_section in repo_sections: if local_copy_dir is not None: if config['sync_from_local_copy_dir']: sync_from_localcopy(repo_section, local_copy_dir) else: update_localcopy(repo_section, local_copy_dir) for serverwebroot in config.get('serverwebroot', []): update_serverwebroot(serverwebroot, repo_section) if config.get('servergitmirrors', []): # update_servergitmirrors will take care of multiple mirrors so don't need a foreach servergitmirrors = config.get('servergitmirrors', []) update_servergitmirrors(servergitmirrors, repo_section) if config.get('awsbucket'): update_awsbucket(repo_section) if config.get('androidobservatory'): upload_to_android_observatory(repo_section) if config.get('virustotal_apikey'): upload_to_virustotal(repo_section, config.get('virustotal_apikey')) binary_transparency_remote = config.get('binary_transparency_remote') if binary_transparency_remote: push_binary_transparency(BINARY_TRANSPARENCY_DIR, binary_transparency_remote) if config.get('wiki_server') and config.get('wiki_path'): update_wiki() sys.exit(0) if __name__ == "__main__": main() fdroidserver-1.0.9/fdroidserver/scanner.py0000664000175000017500000003274113312143773020641 0ustar hanshans00000000000000#!/usr/bin/env python3 # # scanner.py - part of the FDroid server tools # Copyright (C) 2010-13, Ciaran Gultnieks, ciaran@ciarang.com # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . import os import re import traceback from argparse import ArgumentParser import logging from . import _ from . import common from . import metadata from .exception import BuildException, VCSException config = None options = None def get_gradle_compile_commands(build): compileCommands = ['compile', 'provided' 'apk' 'implementation' 'api' 'compileOnly' 'runtimeOnly', 'releaseCompile' 'releaseProvided' 'releaseApk' 'releaseImplementation' 'releaseApi' 'releaseCompileOnly' 'releaseRuntimeOnly'] if build.gradle and build.gradle != ['yes']: compileCommands += [flavor + 'Compile' for flavor in build.gradle] compileCommands += [flavor + 'ReleaseCompile' for flavor in build.gradle] return [re.compile(r'\s*' + c, re.IGNORECASE) for c in compileCommands] def scan_source(build_dir, build=metadata.Build()): """Scan the source code in the given directory (and all subdirectories) and return the number of fatal problems encountered """ count = 0 # Common known non-free blobs (always lower case): usual_suspects = { exp: re.compile(r'.*' + exp, re.IGNORECASE) for exp in [ r'flurryagent', r'paypal.*mpl', r'google.*analytics', r'admob.*sdk.*android', r'google.*ad.*view', r'google.*admob', r'google.*play.*services', r'crittercism', r'heyzap', r'jpct.*ae', r'youtube.*android.*player.*api', r'bugsense', r'crashlytics', r'ouya.*sdk', r'libspen23', r'firebase', ] } whitelisted = [ 'firebase-jobdispatcher', # https://github.com/firebase/firebase-jobdispatcher-android/blob/master/LICENSE 'com.firebaseui', # https://github.com/firebase/FirebaseUI-Android/blob/master/LICENSE 'geofire-android' # https://github.com/firebase/geofire-java/blob/master/LICENSE ] def is_whitelisted(s): return any(wl in s for wl in whitelisted) def suspects_found(s): for n, r in usual_suspects.items(): if r.match(s) and not is_whitelisted(s): yield n gradle_mavenrepo = re.compile(r'maven *{ *(url)? *[\'"]?([^ \'"]*)[\'"]?') allowed_repos = [re.compile(r'^https?://' + re.escape(repo) + r'/*') for repo in [ 'repo1.maven.org/maven2', # mavenCentral() 'jcenter.bintray.com', # jcenter() 'jitpack.io', 'www.jitpack.io', 'repo.maven.apache.org/maven2', 'oss.jfrog.org/artifactory/oss-snapshot-local', 'oss.sonatype.org/content/repositories/snapshots', 'oss.sonatype.org/content/repositories/releases', 'oss.sonatype.org/content/groups/public', 'clojars.org/repo', # Clojure free software libs 's3.amazonaws.com/repo.commonsware.com', # CommonsWare 'plugins.gradle.org/m2', # Gradle plugin repo 'maven.google.com', # Google Maven Repo, https://developer.android.com/studio/build/dependencies.html#google-maven ] ] scanignore = common.getpaths_map(build_dir, build.scanignore) scandelete = common.getpaths_map(build_dir, build.scandelete) scanignore_worked = set() scandelete_worked = set() def toignore(path_in_build_dir): for k, paths in scanignore.items(): for p in paths: if path_in_build_dir.startswith(p): scanignore_worked.add(k) return True return False def todelete(path_in_build_dir): for k, paths in scandelete.items(): for p in paths: if path_in_build_dir.startswith(p): scandelete_worked.add(k) return True return False def ignoreproblem(what, path_in_build_dir): logging.info('Ignoring %s at %s' % (what, path_in_build_dir)) return 0 def removeproblem(what, path_in_build_dir, filepath): logging.info('Removing %s at %s' % (what, path_in_build_dir)) os.remove(filepath) return 0 def warnproblem(what, path_in_build_dir): if toignore(path_in_build_dir): return logging.warn('Found %s at %s' % (what, path_in_build_dir)) def handleproblem(what, path_in_build_dir, filepath): if toignore(path_in_build_dir): return ignoreproblem(what, path_in_build_dir) if todelete(path_in_build_dir): return removeproblem(what, path_in_build_dir, filepath) logging.error('Found %s at %s' % (what, path_in_build_dir)) return 1 def is_executable(path): return os.path.exists(path) and os.access(path, os.X_OK) textchars = bytearray({7, 8, 9, 10, 12, 13, 27} | set(range(0x20, 0x100)) - {0x7f}) def is_binary(path): d = None with open(path, 'rb') as f: d = f.read(1024) return bool(d.translate(None, textchars)) # False positives patterns for files that are binary and executable. safe_paths = [re.compile(r) for r in [ r".*/drawable[^/]*/.*\.png$", # png drawables r".*/mipmap[^/]*/.*\.png$", # png mipmaps ] ] def safe_path(path): for sp in safe_paths: if sp.match(path): return True return False gradle_compile_commands = get_gradle_compile_commands(build) def is_used_by_gradle(line): return any(command.match(line) for command in gradle_compile_commands) # Iterate through all files in the source code for root, dirs, files in os.walk(build_dir, topdown=True): # It's topdown, so checking the basename is enough for ignoredir in ('.hg', '.git', '.svn', '.bzr'): if ignoredir in dirs: dirs.remove(ignoredir) for curfile in files: if curfile in ['.DS_Store']: continue # Path (relative) to the file filepath = os.path.join(root, curfile) if os.path.islink(filepath): continue path_in_build_dir = os.path.relpath(filepath, build_dir) _ignored, ext = common.get_extension(path_in_build_dir) if ext == 'so': count += handleproblem('shared library', path_in_build_dir, filepath) elif ext == 'a': count += handleproblem('static library', path_in_build_dir, filepath) elif ext == 'class': count += handleproblem('Java compiled class', path_in_build_dir, filepath) elif ext == 'apk': removeproblem('APK file', path_in_build_dir, filepath) elif ext == 'jar': for name in suspects_found(curfile): count += handleproblem('usual suspect \'%s\'' % name, path_in_build_dir, filepath) if curfile == 'gradle-wrapper.jar': removeproblem('gradle-wrapper.jar', path_in_build_dir, filepath) else: warnproblem('JAR file', path_in_build_dir) elif ext == 'aar': warnproblem('AAR file', path_in_build_dir) elif ext == 'java': if not os.path.isfile(filepath): continue with open(filepath, 'r', encoding='utf8', errors='replace') as f: for line in f: if 'DexClassLoader' in line: count += handleproblem('DexClassLoader', path_in_build_dir, filepath) break elif ext == 'gradle': if not os.path.isfile(filepath): continue with open(filepath, 'r', encoding='utf8', errors='replace') as f: lines = f.readlines() for i, line in enumerate(lines): if is_used_by_gradle(line): for name in suspects_found(line): count += handleproblem('usual suspect \'%s\' at line %d' % (name, i + 1), path_in_build_dir, filepath) noncomment_lines = [l for l in lines if not common.gradle_comment.match(l)] joined = re.sub(r'[\n\r\s]+', ' ', ' '.join(noncomment_lines)) for m in gradle_mavenrepo.finditer(joined): url = m.group(2) if not any(r.match(url) for r in allowed_repos): count += handleproblem('unknown maven repo \'%s\'' % url, path_in_build_dir, filepath) elif ext in ['', 'bin', 'out', 'exe']: if is_binary(filepath): count += handleproblem('binary', path_in_build_dir, filepath) elif is_executable(filepath): if is_binary(filepath) and not safe_path(path_in_build_dir): warnproblem('possible binary', path_in_build_dir) for p in scanignore: if p not in scanignore_worked: logging.error('Unused scanignore path: %s' % p) count += 1 for p in scandelete: if p not in scandelete_worked: logging.error('Unused scandelete path: %s' % p) count += 1 return count def main(): global config, options # Parse command line... parser = ArgumentParser(usage="%(prog)s [options] [APPID[:VERCODE] [APPID[:VERCODE] ...]]") common.setup_global_opts(parser) parser.add_argument("appid", nargs='*', help=_("applicationId with optional versionCode in the form APPID[:VERCODE]")) metadata.add_metadata_arguments(parser) options = parser.parse_args() metadata.warnings_action = options.W config = common.read_config(options) # Read all app and srclib metadata allapps = metadata.read_metadata() apps = common.read_app_args(options.appid, allapps, True) probcount = 0 build_dir = 'build' if not os.path.isdir(build_dir): logging.info("Creating build directory") os.makedirs(build_dir) srclib_dir = os.path.join(build_dir, 'srclib') extlib_dir = os.path.join(build_dir, 'extlib') for appid, app in apps.items(): if app.Disabled: logging.info(_("Skipping {appid}: disabled").format(appid=appid)) continue try: if app.RepoType == 'srclib': build_dir = os.path.join('build', 'srclib', app.Repo) else: build_dir = os.path.join('build', appid) if app.builds: logging.info(_("Processing {appid}").format(appid=appid)) else: logging.info(_("{appid}: no builds specified, running on current source state") .format(appid=appid)) count = scan_source(build_dir) if count > 0: logging.warn(_('Scanner found {count} problems in {appid}:') .format(count=count, appid=appid)) probcount += count continue # Set up vcs interface and make sure we have the latest code... vcs = common.getvcs(app.RepoType, app.Repo, build_dir) for build in app.builds: if build.disable: logging.info("...skipping version %s - %s" % ( build.versionName, build.get('disable', build.commit[1:]))) continue logging.info("...scanning version " + build.versionName) # Prepare the source code... common.prepare_source(vcs, app, build, build_dir, srclib_dir, extlib_dir, False) count = scan_source(build_dir, build) if count > 0: logging.warn(_('Scanner found {count} problems in {appid}:{versionCode}:') .format(count=count, appid=appid, versionCode=build.versionCode)) probcount += count except BuildException as be: logging.warn("Could not scan app %s due to BuildException: %s" % ( appid, be)) probcount += 1 except VCSException as vcse: logging.warn("VCS error while scanning app %s: %s" % (appid, vcse)) probcount += 1 except Exception: logging.warn("Could not scan app %s due to unknown error: %s" % ( appid, traceback.format_exc())) probcount += 1 logging.info(_("Finished")) print(_("%d problems found") % probcount) if __name__ == "__main__": main() fdroidserver-1.0.9/fdroidserver/vmtools.py0000664000175000017500000005322413323655167020721 0ustar hanshans00000000000000#!/usr/bin/env python3 # # vmtools.py - part of the FDroid server tools # Copyright (C) 2017 Michael Poehn # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . from os.path import isdir, isfile, basename, abspath, expanduser import os import math import json import tarfile import shutil import subprocess import textwrap from .common import FDroidException from logging import getLogger from fdroidserver import _ import threading lock = threading.Lock() logger = getLogger('fdroidserver-vmtools') def get_clean_builder(serverdir, reset=False): if not os.path.isdir(serverdir): if os.path.islink(serverdir): os.unlink(serverdir) logger.info("buildserver path does not exists, creating %s", serverdir) os.makedirs(serverdir) vagrantfile = os.path.join(serverdir, 'Vagrantfile') if not os.path.isfile(vagrantfile): with open(os.path.join('builder', 'Vagrantfile'), 'w') as f: f.write(textwrap.dedent("""\ # generated file, do not change. Vagrant.configure("2") do |config| config.vm.box = "buildserver" config.vm.synced_folder ".", "/vagrant", disabled: true end """)) vm = get_build_vm(serverdir) if reset: logger.info('resetting buildserver by request') elif not vm.vagrant_uuid_okay(): logger.info('resetting buildserver, because vagrant vm is not okay.') reset = True elif not vm.snapshot_exists('fdroidclean'): logger.info("resetting buildserver, because snapshot 'fdroidclean' is not present.") reset = True if reset: vm.destroy() vm.up() vm.suspend() if reset: logger.info('buildserver recreated: taking a clean snapshot') vm.snapshot_create('fdroidclean') else: logger.info('builserver ok: reverting to clean snapshot') vm.snapshot_revert('fdroidclean') vm.up() try: sshinfo = vm.sshinfo() except FDroidBuildVmException: # workaround because libvirt sometimes likes to forget # about ssh connection info even thou the vm is running vm.halt() vm.up() sshinfo = vm.sshinfo() return sshinfo def _check_call(cmd, cwd=None): logger.debug(' '.join(cmd)) return subprocess.check_call(cmd, shell=False, cwd=cwd) def _check_output(cmd, cwd=None): logger.debug(' '.join(cmd)) return subprocess.check_output(cmd, shell=False, cwd=cwd) def get_build_vm(srvdir, provider=None): """Factory function for getting FDroidBuildVm instances. This function tries to figure out what hypervisor should be used and creates an object for controlling a build VM. :param srvdir: path to a directory which contains a Vagrantfile :param provider: optionally this parameter allows specifiying an spesific vagrant provider. :returns: FDroidBuildVm instance. """ abssrvdir = abspath(srvdir) # use supplied provider if provider: if provider == 'libvirt': logger.debug('build vm provider \'libvirt\' selected') return LibvirtBuildVm(abssrvdir) elif provider == 'virtualbox': logger.debug('build vm provider \'virtualbox\' selected') return VirtualboxBuildVm(abssrvdir) else: logger.warn('build vm provider not supported: \'%s\'', provider) # try guessing provider from installed software try: kvm_installed = 0 == _check_call(['which', 'kvm']) except subprocess.CalledProcessError: kvm_installed = False try: kvm_installed |= 0 == _check_call(['which', 'qemu']) except subprocess.CalledProcessError: pass try: vbox_installed = 0 == _check_call(['which', 'VBoxHeadless']) except subprocess.CalledProcessError: vbox_installed = False if kvm_installed and vbox_installed: logger.debug('both kvm and vbox are installed.') elif kvm_installed: logger.debug('libvirt is the sole installed and supported vagrant provider, selecting \'libvirt\'') return LibvirtBuildVm(abssrvdir) elif vbox_installed: logger.debug('virtualbox is the sole installed and supported vagrant provider, selecting \'virtualbox\'') return VirtualboxBuildVm(abssrvdir) else: logger.debug('could not confirm that either virtualbox or kvm/libvirt are installed') # try guessing provider from .../srvdir/.vagrant internals has_libvirt_machine = isdir(os.path.join(abssrvdir, '.vagrant', 'machines', 'default', 'libvirt')) has_vbox_machine = isdir(os.path.join(abssrvdir, '.vagrant', 'machines', 'default', 'virtualbox')) if has_libvirt_machine and has_vbox_machine: logger.info('build vm provider lookup found virtualbox and libvirt, defaulting to \'virtualbox\'') return VirtualboxBuildVm(abssrvdir) elif has_libvirt_machine: logger.debug('build vm provider lookup found \'libvirt\'') return LibvirtBuildVm(abssrvdir) elif has_vbox_machine: logger.debug('build vm provider lookup found \'virtualbox\'') return VirtualboxBuildVm(abssrvdir) logger.info('build vm provider lookup could not determine provider, defaulting to \'virtualbox\'') return VirtualboxBuildVm(abssrvdir) class FDroidBuildVmException(FDroidException): pass class FDroidBuildVm(): """Abstract base class for working with FDroids build-servers. Use the factory method `fdroidserver.vmtools.get_build_vm()` for getting correct instances of this class. This is intended to be a hypervisor independant, fault tolerant wrapper around the vagrant functions we use. """ def __init__(self, srvdir): """Create new server class. """ self.srvdir = srvdir self.srvname = basename(srvdir) + '_default' self.vgrntfile = os.path.join(srvdir, 'Vagrantfile') self.srvuuid = self._vagrant_fetch_uuid() if not isdir(srvdir): raise FDroidBuildVmException("Can not init vagrant, directory %s not present" % (srvdir)) if not isfile(self.vgrntfile): raise FDroidBuildVmException("Can not init vagrant, '%s' not present" % (self.vgrntfile)) import vagrant self.vgrnt = vagrant.Vagrant(root=srvdir, out_cm=vagrant.stdout_cm, err_cm=vagrant.stdout_cm) def up(self, provision=True): global lock with lock: try: self.vgrnt.up(provision=provision) self.srvuuid = self._vagrant_fetch_uuid() except subprocess.CalledProcessError as e: raise FDroidBuildVmException("could not bring up vm '%s'" % self.srvname) from e def suspend(self): global lock with lock: logger.info('suspending buildserver') try: self.vgrnt.suspend() except subprocess.CalledProcessError as e: raise FDroidBuildVmException("could not suspend vm '%s'" % self.srvname) from e def halt(self): global lock with lock: self.vgrnt.halt(force=True) def destroy(self): """Remove every trace of this VM from the system. This includes deleting: * hypervisor specific definitions * vagrant state informations (eg. `.vagrant` folder) * images related to this vm """ logger.info("destroying vm '%s'", self.srvname) try: self.vgrnt.destroy() logger.debug('vagrant destroy completed') except subprocess.CalledProcessError as e: logger.exception('vagrant destroy failed: %s', e) vgrntdir = os.path.join(self.srvdir, '.vagrant') try: shutil.rmtree(vgrntdir) logger.debug('deleted vagrant dir: %s', vgrntdir) except Exception as e: logger.debug("could not delete vagrant dir: %s, %s", vgrntdir, e) try: _check_call(['vagrant', 'global-status', '--prune']) except subprocess.CalledProcessError as e: logger.debug('pruning global vagrant status failed: %s', e) def package(self, output=None): self.vgrnt.package(output=output) def vagrant_uuid_okay(self): '''Having an uuid means that vagrant up has run successfully.''' if self.srvuuid is None: return False return True def _vagrant_file_name(self, name): return name.replace('/', '-VAGRANTSLASH-') def _vagrant_fetch_uuid(self): if isfile(os.path.join(self.srvdir, '.vagrant')): # Vagrant 1.0 - it's a json file... with open(os.path.join(self.srvdir, '.vagrant')) as f: id = json.load(f)['active']['default'] logger.debug('vm uuid: %s', id) return id elif isfile(os.path.join(self.srvdir, '.vagrant', 'machines', 'default', self.provider, 'id')): # Vagrant 1.2 (and maybe 1.1?) it's a directory tree... with open(os.path.join(self.srvdir, '.vagrant', 'machines', 'default', self.provider, 'id')) as f: id = f.read() logger.debug('vm uuid: %s', id) return id else: logger.debug('vm uuid is None') return None def box_add(self, boxname, boxfile, force=True): """Add vagrant box to vagrant. :param boxname: name assigned to local deployment of box :param boxfile: path to box file :param force: overwrite existing box image (default: True) """ boxfile = abspath(boxfile) if not isfile(boxfile): raise FDroidBuildVmException('supplied boxfile \'%s\' does not exist', boxfile) self.vgrnt.box_add(boxname, abspath(boxfile), force=force) def box_remove(self, boxname): try: _check_call(['vagrant', 'box', 'remove', '--all', '--force', boxname]) except subprocess.CalledProcessError as e: logger.debug('tried removing box %s, but is did not exist: %s', boxname, e) boxpath = os.path.join(expanduser('~'), '.vagrant', self._vagrant_file_name(boxname)) if isdir(boxpath): logger.info("attempting to remove box '%s' by deleting: %s", boxname, boxpath) shutil.rmtree(boxpath) def sshinfo(self): """Get ssh connection info for a vagrant VM :returns: A dictionary containing 'hostname', 'port', 'user' and 'idfile' """ import paramiko try: sshconfig_path = os.path.join(self.srvdir, 'sshconfig') with open(sshconfig_path, 'wb') as fp: fp.write(_check_output(['vagrant', 'ssh-config'], cwd=self.srvdir)) vagranthost = 'default' # Host in ssh config file sshconfig = paramiko.SSHConfig() with open(sshconfig_path, 'r') as f: sshconfig.parse(f) sshconfig = sshconfig.lookup(vagranthost) idfile = sshconfig['identityfile'] if isinstance(idfile, list): idfile = idfile[0] elif idfile.startswith('"') and idfile.endswith('"'): idfile = idfile[1:-1] return {'hostname': sshconfig['hostname'], 'port': int(sshconfig['port']), 'user': sshconfig['user'], 'idfile': idfile} except subprocess.CalledProcessError as e: raise FDroidBuildVmException("Error getting ssh config") from e def snapshot_create(self, snapshot_name): raise NotImplementedError('not implemented, please use a sub-type instance') def snapshot_list(self): raise NotImplementedError('not implemented, please use a sub-type instance') def snapshot_exists(self, snapshot_name): raise NotImplementedError('not implemented, please use a sub-type instance') def snapshot_revert(self, snapshot_name): raise NotImplementedError('not implemented, please use a sub-type instance') class LibvirtBuildVm(FDroidBuildVm): def __init__(self, srvdir): self.provider = 'libvirt' super().__init__(srvdir) import libvirt try: self.conn = libvirt.open('qemu:///system') except libvirt.libvirtError as e: raise FDroidBuildVmException('could not connect to libvirtd: %s' % (e)) def destroy(self): super().destroy() # resorting to virsh instead of libvirt python bindings, because # this is way more easy and therefore fault tolerant. # (eg. lookupByName only works on running VMs) try: _check_call(('virsh', '-c', 'qemu:///system', 'destroy', self.srvname)) except subprocess.CalledProcessError as e: logger.info("could not force libvirt domain '%s' off: %s", self.srvname, e) try: # libvirt python bindings do not support all flags required # for undefining domains correctly. _check_call(('virsh', '-c', 'qemu:///system', 'undefine', self.srvname, '--nvram', '--managed-save', '--remove-all-storage', '--snapshots-metadata')) except subprocess.CalledProcessError as e: logger.info("could not undefine libvirt domain '%s': %s", self.srvname, e) def package(self, output=None, keep_box_file=False): if not output: output = "buildserver.box" logger.debug('no output name set for packaging \'%s\',' + 'defaulting to %s', self.srvname, output) storagePool = self.conn.storagePoolLookupByName('default') domainInfo = self.conn.lookupByName(self.srvname).info() if storagePool: if isfile('metadata.json'): os.remove('metadata.json') if isfile('Vagrantfile'): os.remove('Vagrantfile') if isfile('box.img'): os.remove('box.img') logger.debug('preparing box.img for box %s', output) vol = storagePool.storageVolLookupByName(self.srvname + '.img') imagepath = vol.path() # TODO use a libvirt storage pool to ensure the img file is readable if not os.access(imagepath, os.R_OK): logger.warning(_('Cannot read "{path}"!').format(path=imagepath)) _check_call(['sudo', '/bin/chmod', '-R', 'a+rX', '/var/lib/libvirt/images']) shutil.copy2(imagepath, 'box.img') _check_call(['qemu-img', 'rebase', '-p', '-b', '', 'box.img']) img_info_raw = _check_output(['qemu-img', 'info', '--output=json', 'box.img']) img_info = json.loads(img_info_raw.decode('utf-8')) metadata = {"provider": "libvirt", "format": img_info['format'], "virtual_size": math.ceil(img_info['virtual-size'] / (1024. ** 3)), } logger.debug('preparing metadata.json for box %s', output) with open('metadata.json', 'w') as fp: fp.write(json.dumps(metadata)) logger.debug('preparing Vagrantfile for box %s', output) vagrantfile = textwrap.dedent("""\ Vagrant.configure("2") do |config| config.ssh.username = "vagrant" config.ssh.password = "vagrant" config.vm.provider :libvirt do |libvirt| libvirt.driver = "kvm" libvirt.host = "" libvirt.connect_via_ssh = false libvirt.storage_pool_name = "default" libvirt.cpus = {cpus} libvirt.memory = {memory} end end""".format_map({'memory': str(int(domainInfo[1] / 1024)), 'cpus': str(domainInfo[3])})) with open('Vagrantfile', 'w') as fp: fp.write(vagrantfile) with tarfile.open(output, 'w:gz') as tar: logger.debug('adding metadata.json to box %s ...', output) tar.add('metadata.json') logger.debug('adding Vagrantfile to box %s ...', output) tar.add('Vagrantfile') logger.debug('adding box.img to box %s ...', output) tar.add('box.img') if not keep_box_file: logger.debug('box packaging complete, removing temporary files.') os.remove('metadata.json') os.remove('Vagrantfile') os.remove('box.img') else: logger.warn('could not connect to storage-pool \'default\',' + 'skipping packaging buildserver box') def box_add(self, boxname, boxfile, force=True): boximg = '%s_vagrant_box_image_0.img' % (boxname) if force: try: _check_call(['virsh', '-c', 'qemu:///system', 'vol-delete', '--pool', 'default', boximg]) logger.debug("removed old box image '%s' from libvirt storeage pool", boximg) except subprocess.CalledProcessError as e: logger.debug("tried removing old box image '%s', file was not present in first place", boximg, exc_info=e) super().box_add(boxname, boxfile, force) def box_remove(self, boxname): super().box_remove(boxname) try: _check_call(['virsh', '-c', 'qemu:///system', 'vol-delete', '--pool', 'default', '%s_vagrant_box_image_0.img' % (boxname)]) except subprocess.CalledProcessError as e: logger.debug("tried removing '%s', file was not present in first place", boxname, exc_info=e) def snapshot_create(self, snapshot_name): logger.info("creating snapshot '%s' for vm '%s'", snapshot_name, self.srvname) try: _check_call(['virsh', '-c', 'qemu:///system', 'snapshot-create-as', self.srvname, snapshot_name]) except subprocess.CalledProcessError as e: raise FDroidBuildVmException("could not cerate snapshot '%s' " "of libvirt vm '%s'" % (snapshot_name, self.srvname)) from e def snapshot_list(self): import libvirt try: dom = self.conn.lookupByName(self.srvname) return dom.listAllSnapshots() except libvirt.libvirtError as e: raise FDroidBuildVmException('could not list snapshots for domain \'%s\'' % self.srvname) from e def snapshot_exists(self, snapshot_name): import libvirt try: dom = self.conn.lookupByName(self.srvname) return dom.snapshotLookupByName(snapshot_name) is not None except libvirt.libvirtError: return False def snapshot_revert(self, snapshot_name): logger.info("reverting vm '%s' to snapshot '%s'", self.srvname, snapshot_name) import libvirt try: dom = self.conn.lookupByName(self.srvname) snap = dom.snapshotLookupByName(snapshot_name) dom.revertToSnapshot(snap) except libvirt.libvirtError as e: raise FDroidBuildVmException('could not revert domain \'%s\' to snapshot \'%s\'' % (self.srvname, snapshot_name)) from e class VirtualboxBuildVm(FDroidBuildVm): def __init__(self, srvdir): self.provider = 'virtualbox' super().__init__(srvdir) def snapshot_create(self, snapshot_name): logger.info("creating snapshot '%s' for vm '%s'", snapshot_name, self.srvname) try: _check_call(['VBoxManage', 'snapshot', self.srvuuid, 'take', 'fdroidclean'], cwd=self.srvdir) except subprocess.CalledProcessError as e: raise FDroidBuildVmException('could not cerate snapshot ' 'of virtualbox vm %s' % self.srvname) from e def snapshot_list(self): try: o = _check_output(['VBoxManage', 'snapshot', self.srvuuid, 'list', '--details'], cwd=self.srvdir) return o except subprocess.CalledProcessError as e: raise FDroidBuildVmException("could not list snapshots " "of virtualbox vm '%s'" % (self.srvname)) from e def snapshot_exists(self, snapshot_name): try: return str(snapshot_name) in str(self.snapshot_list()) except FDroidBuildVmException: return False def snapshot_revert(self, snapshot_name): logger.info("reverting vm '%s' to snapshot '%s'", self.srvname, snapshot_name) try: _check_call(['VBoxManage', 'snapshot', self.srvuuid, 'restore', 'fdroidclean'], cwd=self.srvdir) except subprocess.CalledProcessError as e: raise FDroidBuildVmException("could not load snapshot " "'fdroidclean' for vm '%s'" % (self.srvname)) from e fdroidserver-1.0.9/fdroidserver/asynchronousfilereader/0000775000175000017500000000000013324115531023377 5ustar hanshans00000000000000fdroidserver-1.0.9/fdroidserver/asynchronousfilereader/__init__.py0000664000175000017500000000260413302025213025503 0ustar hanshans00000000000000""" AsynchronousFileReader ====================== Simple thread based asynchronous file reader for Python. see https://github.com/soxofaan/asynchronousfilereader MIT License Copyright (c) 2014 Stefaan Lippens """ __version__ = '0.2.1' import threading try: # Python 2 from Queue import Queue except ImportError: # Python 3 from queue import Queue class AsynchronousFileReader(threading.Thread): """ Helper class to implement asynchronous reading of a file in a separate thread. Pushes read lines on a queue to be consumed in another thread. """ def __init__(self, fd, queue=None, autostart=True): self._fd = fd if queue is None: queue = Queue() self.queue = queue threading.Thread.__init__(self) if autostart: self.start() def run(self): """ The body of the tread: read lines and put them on the queue. """ while True: line = self._fd.readline() if not line: break self.queue.put(line) def eof(self): """ Check whether there is no more content to expect. """ return not self.is_alive() and self.queue.empty() def readlines(self): """ Get currently available lines. """ while not self.queue.empty(): yield self.queue.get() fdroidserver-1.0.9/fdroidserver/dscanner.py0000664000175000017500000004137713303240575021010 0ustar hanshans00000000000000#!/usr/bin/env python3 # # dscanner.py - part of the FDroid server tools # Copyright (C) 2016-2017 Shawn Gustaw # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . import logging import os import json import sys from time import sleep from argparse import ArgumentParser from subprocess import CalledProcessError, check_output from . import _ from . import common from . import metadata try: from docker import Client except ImportError: logging.error(("Docker client not installed." "Install it using pip install docker-py")) config = None options = None class DockerConfig: ALIAS = "dscanner" CONTAINER = "dscanner/fdroidserver" EMULATOR = "android-19" ARCH = "armeabi-v7a" class DockerDriver(object): """ Handles all the interactions with the docker container the Android emulator runs in. """ class Commands: build = ['docker', 'build', '--no-cache=false', '--pull=true', '--quiet=false', '--rm=true', '-t', '{0}:latest'.format(DockerConfig.CONTAINER), '.'] run = [ 'docker', 'run', '-e', '"EMULATOR={0}"'.format(DockerConfig.EMULATOR), '-e', '"ARCH={0}"'.format(DockerConfig.ARCH), '-d', '-P', '--name', '{0}'.format(DockerConfig.ALIAS), '--log-driver=json-file', DockerConfig.CONTAINER] start = ['docker', 'start', '{0}'.format(DockerConfig.ALIAS)] inspect = ['docker', 'inspect', '{0}'.format(DockerConfig.ALIAS)] pm_list = 'adb shell "pm list packages"' install_drozer = "docker exec {0} python /home/drozer/install_agent.py" run_drozer = 'python /home/drozer/drozer.py {0}' copy_to_container = 'docker cp "{0}" {1}:{2}' copy_from_container = 'docker cp {0}:{1} "{2}"' def __init__(self, init_only=False, fresh_start=False, clean_only=False): self.container_id = None self.ip_address = None self.cli = Client(base_url='unix://var/run/docker.sock') if fresh_start or clean_only: self.clean() if clean_only: logging.info("Cleaned containers and quitting.") exit(0) self.init_docker() if init_only: logging.info("Initialized and quitting.") exit(0) def _copy_to_container(self, src_path, dest_path): """ Copies a file (presumed to be an apk) from src_path to home directory on container. """ path = '/home/drozer/{path}.apk'.format(path=dest_path) command = self.Commands.copy_to_container.format(src_path, self.container_id, path) try: check_output(command, shell=True) except CalledProcessError as e: logging.error(('Command "{command}" failed with ' 'error code {code}'.format(command=command, code=e.returncode))) raise def _copy_from_container(self, src_path, dest_path): """ Copies a file from src_path on the container to dest_path on the host machine. """ command = self.Commands.copy_from_container.format(self.container_id, src_path, dest_path) try: check_output(command, shell=True) except CalledProcessError as e: logging.error(('Command "{command}" failed with ' 'error code {code}'.format(command=command, code=e.returncode))) raise logging.info("Log stored at {path}".format(path=dest_path)) def _adb_install_apk(self, apk_path): """ Installs an apk on the device running in the container using adb. """ logging.info("Attempting to install an apk.") exec_id = self.cli.exec_create( self.container_id, 'adb install {0}' .format(apk_path) )['Id'] output = self.cli.exec_start(exec_id).decode('utf-8') if "INSTALL_PARSE_FAILED_NO_CERTIFICATES" in output: raise Exception('Install parse failed, no certificates') elif "INSTALL_FAILED_ALREADY_EXISTS" in output: logging.info("APK already installed. Skipping.") elif "Success" not in output: logging.error("APK didn't install properly") return False return True def _adb_uninstall_apk(self, app_id): """ Uninstalls an application from the device running in the container via its app_id. """ logging.info( "Uninstalling {app_id} from the emulator." .format(app_id=app_id) ) exec_id = self.cli.exec_create( self.container_id, 'adb uninstall {0}'.format(app_id) )['Id'] output = self.cli.exec_start(exec_id).decode('utf-8') if 'Success' in output: logging.info("Successfully uninstalled.") return True def _verify_apk_install(self, app_id): """ Checks that the app_id is installed on the device running in the container. """ logging.info( "Verifying {app} is installed on the device." .format(app=app_id) ) exec_id = self.cli.exec_create( self.container_id, self.Commands.pm_list )['Id'] output = self.cli.exec_start(exec_id).decode('utf-8') if ("Could not access the Package Manager" in output or "device offline" in output): logging.info("Device or package manager isn't up") if app_id.split('_')[0] in output: # TODO: this is a temporary fix logging.info("{app} is installed.".format(app=app_id)) return True logging.error("APK not found in packages list on emulator.") def _delete_file(self, path): """ Deletes file off the container to preserve space if scanning many apps """ command = "rm {path}".format(path=path) exec_id = self.cli.exec_create(self.container_id, command)['Id'] logging.info("Deleting {path} on the container.".format(path=path)) self.cli.exec_start(exec_id) def _install_apk(self, apk_path, app_id): """ Installs apk found at apk_path on the emulator. Will then verify it installed properly by looking up its app_id in the package manager. """ if not all([self.container_id, self.ip_address]): # TODO: maybe have this fail nicely raise Exception("Went to install apk and couldn't find container") path = "/home/drozer/{app_id}.apk".format(app_id=app_id) self._copy_to_container(apk_path, app_id) self._adb_install_apk(path) self._verify_apk_install(app_id) self._delete_file(path) def _install_drozer(self): """ Performs all the initialization of drozer within the emulator. """ logging.info("Attempting to install com.mwr.dz on the emulator") logging.info("This could take a while so be patient...") logging.info(("We need to wait for the device to boot AND" " the package manager to come online.")) command = self.Commands.install_drozer.format(self.container_id) try: output = check_output(command, shell=True).decode('utf-8') except CalledProcessError as e: logging.error(('Command "{command}" failed with ' 'error code {code}'.format(command=command, code=e.returncode))) raise if 'Installed ok' in output: return True def _run_drozer_scan(self, app): """ Runs the drozer agent which connects to the app running on the emulator. """ logging.info("Running the drozer agent") exec_id = self.cli.exec_create( self.container_id, self.Commands.run_drozer.format(app) )['Id'] self.cli.exec_start(exec_id) def _container_is_running(self): """ Checks whether the emulator container is running. """ for container in self.cli.containers(): if DockerConfig.ALIAS in container['Image']: return True def _docker_image_exists(self): """ Check whether the docker image exists already. If this returns false we'll need to build the image from the DockerFile. """ for image in self.cli.images(): for tag in image['RepoTags']: if DockerConfig.ALIAS in tag: return True _image_queue = {} def _build_docker_image(self): """ Builds the docker container so we can run the android emulator inside it. """ logging.info("Pulling the container from docker hub") logging.info("Image is roughly 5 GB so be patient") logging.info("(Progress output is slow and requires a tty.)") # we pause briefly to narrow race condition windows of opportunity sleep(1) is_a_tty = os.isatty(sys.stdout.fileno()) for output in self.cli.pull( DockerConfig.CONTAINER, stream=True, tag="latest"): if not is_a_tty: # run silent, run quick continue try: p = json.loads(output.decode('utf-8')) p_id = p['id'] self._image_queue[p_id] = p t, c, j = 1, 1, 0 for k in sorted(self._image_queue): j += 1 v = self._image_queue[k] vd = v['progressDetail'] t += vd['total'] c += vd['current'] msg = "\rDownloading: {0}/{1} {2}% [{3} jobs]" msg = msg.format(c, t, int(c / t * 100), j) sys.stdout.write(msg) sys.stdout.flush() except Exception: pass print("\nDONE!\n") def _verify_apk_exists(self, full_apk_path): """ Verifies that the apk path we have is actually a file. """ return os.path.isfile(full_apk_path) def init_docker(self): """ Perform all the initialization required before a drozer scan. 1. build the image 2. run the container 3. install drozer and enable the service within the app """ built = self._docker_image_exists() if not built: self._build_docker_image() running = self._container_is_running() if not running: logging.info('Trying to run container...') try: check_output(self.Commands.run) except CalledProcessError as e: logging.error(( 'Command "{command}" failed with error code {code}' .format(command=self.Commands.run, code=e.returncode) )) running = self._container_is_running() if not running: logging.info('Trying to start container...') try: check_output(self.Commands.start) except CalledProcessError as e: logging.error(( 'Command "{command}" failed with error code {code}' .format(command=self.Commands.run, code=e.returncode) )) running = self._container_is_running() if not running: raise Exception("Running container not found, critical error.") containers = self.cli.containers() for container in containers: if DockerConfig.ALIAS in container['Image']: self.container_id = container['Id'] n = container['NetworkSettings']['Networks'] self.ip_address = n['bridge']['IPAddress'] break if not self.container_id or not self.ip_address: logging.error("No ip address or container id found.") exit(1) if self._verify_apk_install('com.mwr.dz'): return self._install_drozer() def clean(self): """ Clean up all the containers made by this script. Should be run after the drozer scan completes. """ for container in self.cli.containers(): if DockerConfig.ALIAS in container['Image']: logging.info("Removing container {0}".format(container['Id'])) self.cli.remove_container(container['Id'], force=True) def perform_drozer_scan(self, apk_path, app_id): """ Entrypoint for scanning an android app. Performs the following steps: 1. installs an apk on the device 2. runs a drozer scan 3. copies the report off the container 4. uninstalls the apk to save space on the device """ self._install_apk(apk_path, app_id) logging.info("Running the drozer scan.") self._run_drozer_scan(app_id) logging.info("Scan finished. Moving the report off the container") dest = apk_path + '.drozer' self._copy_from_container('/tmp/drozer_report.log', dest) self._adb_uninstall_apk(app_id) def main(): global config, options # Parse command line... parser = ArgumentParser( usage="%(prog)s [options] [APPID[:VERCODE] [APPID[:VERCODE] ...]]" ) common.setup_global_opts(parser) parser.add_argument( "app_id", nargs='*', help=_("applicationId with optional versionCode in the form APPID[:VERCODE]")) parser.add_argument( "-l", "--latest", action="store_true", default=False, help=_("Scan only the latest version of each package")) parser.add_argument( "--clean-after", default=False, action='store_true', help=_("Clean after all scans have finished")) parser.add_argument( "--clean-before", default=False, action='store_true', help=_("Clean before the scans start and rebuild the container")) parser.add_argument( "--clean-only", default=False, action='store_true', help=_("Clean up all containers and then exit")) parser.add_argument( "--init-only", default=False, action='store_true', help=_("Prepare Drozer to run a scan")) parser.add_argument( "--repo-path", default="repo", action="store", help=_("Override path for repo APKs (default: ./repo)")) options = parser.parse_args() config = common.read_config(options) if not os.path.isdir(options.repo_path): sys.stderr.write("repo-path not found: \"" + options.repo_path + "\"") exit(1) # Read all app and srclib metadata allapps = metadata.read_metadata() apps = common.read_app_args(options.app_id, allapps, True) docker = DockerDriver( init_only=options.init_only, fresh_start=options.clean_before, clean_only=options.clean_only ) if options.clean_before: docker.clean() if options.clean_only: exit(0) for app_id, app in apps.items(): vercode = 0 if ':' in app_id: vercode = app_id.split(':')[1] for build in reversed(app.builds): if build.disable: continue if options.latest or vercode == 0 or build.versionCode == vercode: app.builds = [build] break continue continue for app_id, app in apps.items(): for build in app.builds: apks = [] for f in os.listdir(options.repo_path): n = common.get_release_filename(app, build) if f == n: apks.append(f) for apk in sorted(apks): apk_path = os.path.join(options.repo_path, apk) docker.perform_drozer_scan(apk_path, app.id) if options.clean_after: docker.clean() if __name__ == "__main__": main() fdroidserver-1.0.9/fdroidserver/nightly.py0000664000175000017500000003573613323655167020704 0ustar hanshans00000000000000#!/usr/bin/env python3 # # nightly.py - part of the FDroid server tools # Copyright (C) 2017 Hans-Christoph Steiner # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . import base64 import datetime import git import hashlib import logging import os import paramiko import platform import shutil import subprocess import sys import tempfile import yaml from urllib.parse import urlparse from argparse import ArgumentParser from . import _ from . import common # hard coded defaults for Android ~/.android/debug.keystore files # https://developers.google.com/android/guides/client-auth KEYSTORE_FILE = os.path.join(os.getenv('HOME'), '.android', 'debug.keystore') PASSWORD = 'android' KEY_ALIAS = 'androiddebugkey' DISTINGUISHED_NAME = 'CN=Android Debug,O=Android,C=US' # standard suffix for naming fdroid git repos NIGHTLY = '-nightly' def _ssh_key_from_debug_keystore(keystore=KEYSTORE_FILE): tmp_dir = tempfile.mkdtemp(prefix='.') privkey = os.path.join(tmp_dir, '.privkey') key_pem = os.path.join(tmp_dir, '.key.pem') p12 = os.path.join(tmp_dir, '.keystore.p12') _config = dict() common.fill_config_defaults(_config) subprocess.check_call([_config['keytool'], '-importkeystore', '-srckeystore', keystore, '-srcalias', KEY_ALIAS, '-srcstorepass', PASSWORD, '-srckeypass', PASSWORD, '-destkeystore', p12, '-destalias', KEY_ALIAS, '-deststorepass', PASSWORD, '-destkeypass', PASSWORD, '-deststoretype', 'PKCS12']) subprocess.check_call(['openssl', 'pkcs12', '-in', p12, '-out', key_pem, '-passin', 'pass:' + PASSWORD, '-passout', 'pass:' + PASSWORD]) subprocess.check_call(['openssl', 'rsa', '-in', key_pem, '-out', privkey, '-passin', 'pass:' + PASSWORD]) os.remove(key_pem) os.remove(p12) os.chmod(privkey, 0o600) # os.umask() should cover this, but just in case rsakey = paramiko.RSAKey.from_private_key_file(privkey) fingerprint = base64.b64encode(hashlib.sha256(rsakey.asbytes()).digest()).decode('ascii').rstrip('=') ssh_private_key_file = os.path.join(tmp_dir, 'debug_keystore_' + fingerprint.replace('/', '_') + '_id_rsa') shutil.move(privkey, ssh_private_key_file) pub = rsakey.get_name() + ' ' + rsakey.get_base64() + ' ' + ssh_private_key_file with open(ssh_private_key_file + '.pub', 'w') as fp: fp.write(pub) logging.info(_('\nSSH Public Key to be used as Deploy Key:') + '\n' + pub) return ssh_private_key_file def main(): parser = ArgumentParser(usage="%(prog)s") common.setup_global_opts(parser) parser.add_argument("--keystore", default=KEYSTORE_FILE, help=_("Specify which debug keystore file to use.")) parser.add_argument("--show-secret-var", action="store_true", default=False, help=_("Print the secret variable to the terminal for easy copy/paste")) parser.add_argument("--file", default='app/build/outputs/apk/*.apk', help=_('The the file to be included in the repo (path or glob)')) parser.add_argument("--no-checksum", action="store_true", default=False, help=_("Don't use rsync checksums")) # TODO add --with-btlog options = parser.parse_args() # force a tighter umask since this writes private key material umask = os.umask(0o077) if 'CI' in os.environ: v = os.getenv('DEBUG_KEYSTORE') debug_keystore = None if v: debug_keystore = base64.b64decode(v) if not debug_keystore: logging.error(_('DEBUG_KEYSTORE is not set or the value is incomplete')) sys.exit(1) os.makedirs(os.path.dirname(KEYSTORE_FILE), exist_ok=True) if os.path.exists(KEYSTORE_FILE): logging.warning(_('overwriting existing {path}').format(path=KEYSTORE_FILE)) with open(KEYSTORE_FILE, 'wb') as fp: fp.write(debug_keystore) repo_basedir = os.path.join(os.getcwd(), 'fdroid') repodir = os.path.join(repo_basedir, 'repo') cibase = os.getcwd() os.makedirs(repodir, exist_ok=True) if 'CI_PROJECT_PATH' in os.environ and 'CI_PROJECT_URL' in os.environ: # we are in GitLab CI repo_git_base = os.getenv('CI_PROJECT_PATH') + NIGHTLY clone_url = os.getenv('CI_PROJECT_URL') + NIGHTLY repo_base = clone_url + '/raw/master/fdroid' servergitmirror = 'git@' + urlparse(clone_url).netloc + ':' + repo_git_base deploy_key_url = clone_url + '/settings/repository' git_user_name = os.getenv('GITLAB_USER_NAME') git_user_email = os.getenv('GITLAB_USER_EMAIL') elif 'TRAVIS_REPO_SLUG' in os.environ: # we are in Travis CI repo_git_base = os.getenv('TRAVIS_REPO_SLUG') + NIGHTLY clone_url = 'https://github.com/' + repo_git_base _branch = os.getenv('TRAVIS_BRANCH') repo_base = 'https://raw.githubusercontent.com/' + repo_git_base + '/' + _branch + '/fdroid' servergitmirror = 'git@github.com:' + repo_git_base deploy_key_url = ('https://github.com/' + repo_git_base + '/settings/keys' + '\nhttps://developer.github.com/v3/guides/managing-deploy-keys/#deploy-keys') git_user_name = repo_git_base git_user_email = os.getenv('USER') + '@' + platform.node() elif 'CIRCLE_REPOSITORY_URL' in os.environ \ and 'CIRCLE_PROJECT_USERNAME' in os.environ \ and 'CIRCLE_PROJECT_REPONAME' in os.environ: # we are in Circle CI repo_git_base = (os.getenv('CIRCLE_PROJECT_USERNAME') + '/' + os.getenv('CIRCLE_PROJECT_REPONAME') + NIGHTLY) clone_url = os.getenv('CIRCLE_REPOSITORY_URL') + NIGHTLY repo_base = clone_url + '/raw/master/fdroid' servergitmirror = 'git@' + urlparse(clone_url).netloc + ':' + repo_git_base deploy_key_url = ('https://github.com/' + repo_git_base + '/settings/keys' + '\nhttps://developer.github.com/v3/guides/managing-deploy-keys/#deploy-keys') git_user_name = os.getenv('CIRCLE_USERNAME') git_user_email = git_user_name + '@' + platform.node() else: print(_('ERROR: unsupported CI type, patches welcome!')) sys.exit(1) repo_url = repo_base + '/repo' git_mirror_path = os.path.join(repo_basedir, 'git-mirror') git_mirror_repodir = os.path.join(git_mirror_path, 'fdroid', 'repo') git_mirror_metadatadir = os.path.join(git_mirror_path, 'fdroid', 'metadata') if not os.path.isdir(git_mirror_repodir): logging.debug(_('cloning {url}').format(url=clone_url)) try: git.Repo.clone_from(clone_url, git_mirror_path) except Exception: pass if not os.path.isdir(git_mirror_repodir): os.makedirs(git_mirror_repodir, mode=0o755) mirror_git_repo = git.Repo.init(git_mirror_path) writer = mirror_git_repo.config_writer() writer.set_value('user', 'name', git_user_name) writer.set_value('user', 'email', git_user_email) writer.release() for remote in mirror_git_repo.remotes: mirror_git_repo.delete_remote(remote) readme_path = os.path.join(git_mirror_path, 'README.md') readme = ''' # {repo_git_base} [![{repo_url}](icon.png)]({repo_url}) Last updated: {date}'''.format(repo_git_base=repo_git_base, repo_url=repo_url, date=datetime.datetime.utcnow().strftime('%Y-%m-%d %H:%M:%S UTC')) with open(readme_path, 'w') as fp: fp.write(readme) mirror_git_repo.git.add(all=True) mirror_git_repo.index.commit("update README") icon_path = os.path.join(git_mirror_path, 'icon.png') try: import qrcode qrcode.make(repo_url).save(icon_path) except Exception: exampleicon = os.path.join(common.get_examples_dir(), 'fdroid-icon.png') shutil.copy(exampleicon, icon_path) mirror_git_repo.git.add(all=True) mirror_git_repo.index.commit("update repo/website icon") shutil.copy(icon_path, repo_basedir) os.chdir(repo_basedir) if os.path.isdir(git_mirror_repodir): common.local_rsync(options, git_mirror_repodir + '/', 'repo/') if os.path.isdir(git_mirror_metadatadir): common.local_rsync(options, git_mirror_metadatadir + '/', 'metadata/') ssh_private_key_file = _ssh_key_from_debug_keystore() # this is needed for GitPython to find the SSH key ssh_dir = os.path.join(os.getenv('HOME'), '.ssh') os.makedirs(ssh_dir, exist_ok=True) ssh_config = os.path.join(ssh_dir, 'config') logging.debug(_('adding IdentityFile to {path}').format(path=ssh_config)) with open(ssh_config, 'a') as fp: fp.write('\n\nHost *\n\tIdentityFile %s\n' % ssh_private_key_file) config = '' config += "identity_file = '%s'\n" % ssh_private_key_file config += "repo_name = '%s'\n" % repo_git_base config += "repo_url = '%s'\n" % repo_url config += "repo_icon = 'icon.png'\n" config += "archive_name = '%s'\n" % (repo_git_base + ' archive') config += "archive_url = '%s'\n" % (repo_base + '/archive') config += "archive_icon = 'icon.png'\n" config += "servergitmirrors = '%s'\n" % servergitmirror config += "keystore = '%s'\n" % KEYSTORE_FILE config += "repo_keyalias = '%s'\n" % KEY_ALIAS config += "keystorepass = '%s'\n" % PASSWORD config += "keypass = '%s'\n" % PASSWORD config += "keydname = '%s'\n" % DISTINGUISHED_NAME config += "make_current_version_link = False\n" config += "accepted_formats = ('txt', 'yml')\n" # TODO add update_stats = True with open('config.py', 'w') as fp: fp.write(config) os.chmod('config.py', 0o600) config = common.read_config(options) common.assert_config_keystore(config) for root, dirs, files in os.walk(cibase): for d in ('fdroid', '.git', '.gradle'): if d in dirs: dirs.remove(d) for f in files: if f.endswith('-debug.apk'): apkfilename = os.path.join(root, f) logging.debug(_('Striping mystery signature from {apkfilename}') .format(apkfilename=apkfilename)) destapk = os.path.join(repodir, os.path.basename(f)) os.chmod(apkfilename, 0o644) logging.debug(_('Resigning {apkfilename} with provided debug.keystore') .format(apkfilename=os.path.basename(apkfilename))) common.apk_strip_signatures(apkfilename, strip_manifest=True) common.sign_apk(apkfilename, destapk, KEY_ALIAS) if options.verbose: logging.debug(_('attempting bare ssh connection to test deploy key:')) try: subprocess.check_call(['ssh', '-Tvi', ssh_private_key_file, '-oIdentitiesOnly=yes', '-oStrictHostKeyChecking=no', servergitmirror.split(':')[0]]) except subprocess.CalledProcessError: pass app_url = clone_url[:-len(NIGHTLY)] template = dict() template['AuthorName'] = clone_url.split('/')[4] template['AuthorWebSite'] = '/'.join(clone_url.split('/')[:4]) template['Categories'] = ['nightly'] template['SourceCode'] = app_url template['IssueTracker'] = app_url + '/issues' template['Summary'] = 'Nightly build of ' + urlparse(app_url).path[1:] template['Description'] = template['Summary'] with open('template.yml', 'w') as fp: yaml.dump(template, fp) subprocess.check_call(['fdroid', 'update', '--rename-apks', '--create-metadata', '--verbose'], cwd=repo_basedir) common.local_rsync(options, repo_basedir + '/metadata/', git_mirror_metadatadir + '/') mirror_git_repo.git.add(all=True) mirror_git_repo.index.commit("update app metadata") try: subprocess.check_call(['fdroid', 'server', 'update', '--verbose'], cwd=repo_basedir) except subprocess.CalledProcessError: logging.error(_('cannot publish update, did you set the deploy key?') + '\n' + deploy_key_url) sys.exit(1) if shutil.rmtree.avoids_symlink_attacks: shutil.rmtree(os.path.dirname(ssh_private_key_file)) else: if not os.path.isfile(options.keystore): androiddir = os.path.dirname(options.keystore) if not os.path.exists(androiddir): os.mkdir(androiddir) logging.info(_('created {path}').format(path=androiddir)) logging.error(_('{path} does not exist! Create it by running:').format(path=options.keystore) + '\n keytool -genkey -v -keystore ' + options.keystore + ' -storepass android \\' + '\n -alias androiddebugkey -keypass android -keyalg RSA -keysize 2048 -validity 10000 \\' + '\n -dname "CN=Android Debug,O=Android,C=US"') sys.exit(1) ssh_dir = os.path.join(os.getenv('HOME'), '.ssh') os.makedirs(os.path.dirname(ssh_dir), exist_ok=True) privkey = _ssh_key_from_debug_keystore(options.keystore) ssh_private_key_file = os.path.join(ssh_dir, os.path.basename(privkey)) shutil.move(privkey, ssh_private_key_file) shutil.move(privkey + '.pub', ssh_private_key_file + '.pub') if shutil.rmtree.avoids_symlink_attacks: shutil.rmtree(os.path.dirname(privkey)) if options.show_secret_var: with open(options.keystore, 'rb') as fp: debug_keystore = base64.standard_b64encode(fp.read()).decode('ascii') print(_('\n{path} encoded for the DEBUG_KEYSTORE secret variable:') .format(path=options.keystore)) print(debug_keystore) os.umask(umask) if __name__ == "__main__": main() fdroidserver-1.0.9/fdroidserver/exception.py0000664000175000017500000000215313272566407021210 0ustar hanshans00000000000000class FDroidException(Exception): def __init__(self, value=None, detail=None): self.value = value self.detail = detail def shortened_detail(self): if len(self.detail) < 16000: return self.detail return '[...]\n' + self.detail[-16000:] def get_wikitext(self): ret = repr(self.value) + "\n" if self.detail: ret += "=detail=\n" ret += "

      \n" + self.shortened_detail() + "
      \n" return ret def __str__(self): if self.value is None: ret = __name__ else: ret = str(self.value) if self.detail: ret += "\n==== detail begin ====\n%s\n==== detail end ====" % ''.join(self.detail).strip() return ret class MetaDataException(Exception): def __init__(self, value): self.value = value def __str__(self): return self.value class VCSException(FDroidException): pass class NoSubmodulesException(VCSException): pass class BuildException(FDroidException): pass class VerificationException(FDroidException): pass fdroidserver-1.0.9/fdroidserver/lint.py0000664000175000017500000006126213303240575020154 0ustar hanshans00000000000000#!/usr/bin/env python3 # # lint.py - part of the FDroid server tool # Copyright (C) 2013-2014 Daniel Martí # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See th # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public Licen # along with this program. If not, see . from argparse import ArgumentParser import glob import os import re import sys import urllib.parse from . import _ from . import common from . import metadata from . import rewritemeta config = None options = None def enforce_https(domain): return (re.compile(r'^[^h][^t][^t][^p][^s]://[^/]*' + re.escape(domain) + r'(/.*)?', re.IGNORECASE), domain + " URLs should always use https://") https_enforcings = [ enforce_https('github.com'), enforce_https('gitlab.com'), enforce_https('bitbucket.org'), enforce_https('apache.org'), enforce_https('google.com'), enforce_https('git.code.sf.net'), enforce_https('svn.code.sf.net'), enforce_https('anongit.kde.org'), enforce_https('savannah.nongnu.org'), enforce_https('git.savannah.nongnu.org'), enforce_https('download.savannah.nongnu.org'), enforce_https('savannah.gnu.org'), enforce_https('git.savannah.gnu.org'), enforce_https('download.savannah.gnu.org'), enforce_https('github.io'), enforce_https('gitlab.io'), enforce_https('githubusercontent.com'), ] def forbid_shortener(domain): return (re.compile(r'https?://[^/]*' + re.escape(domain) + r'/.*'), _("URL shorteners should not be used")) http_url_shorteners = [ forbid_shortener('1url.com'), forbid_shortener('adf.ly'), forbid_shortener('bc.vc'), forbid_shortener('bit.do'), forbid_shortener('bit.ly'), forbid_shortener('bitly.com'), forbid_shortener('budurl.com'), forbid_shortener('buzurl.com'), forbid_shortener('cli.gs'), forbid_shortener('cur.lv'), forbid_shortener('cutt.us'), forbid_shortener('db.tt'), forbid_shortener('filoops.info'), forbid_shortener('goo.gl'), forbid_shortener('is.gd'), forbid_shortener('ity.im'), forbid_shortener('j.mp'), forbid_shortener('l.gg'), forbid_shortener('lnkd.in'), forbid_shortener('moourl.com'), forbid_shortener('ow.ly'), forbid_shortener('para.pt'), forbid_shortener('po.st'), forbid_shortener('q.gs'), forbid_shortener('qr.ae'), forbid_shortener('qr.net'), forbid_shortener('rdlnk.com'), forbid_shortener('scrnch.me'), forbid_shortener('short.nr'), forbid_shortener('sn.im'), forbid_shortener('snipurl.com'), forbid_shortener('su.pr'), forbid_shortener('t.co'), forbid_shortener('tiny.cc'), forbid_shortener('tinyarrows.com'), forbid_shortener('tinyurl.com'), forbid_shortener('tr.im'), forbid_shortener('tweez.me'), forbid_shortener('twitthis.com'), forbid_shortener('twurl.nl'), forbid_shortener('tyn.ee'), forbid_shortener('u.bb'), forbid_shortener('u.to'), forbid_shortener('ur1.ca'), forbid_shortener('urlof.site'), forbid_shortener('v.gd'), forbid_shortener('vzturl.com'), forbid_shortener('x.co'), forbid_shortener('xrl.us'), forbid_shortener('yourls.org'), forbid_shortener('zip.net'), forbid_shortener('✩.ws'), forbid_shortener('➡.ws'), ] http_checks = https_enforcings + http_url_shorteners + [ (re.compile(r'.*github\.com/[^/]+/[^/]+\.git'), _("Appending .git is not necessary")), (re.compile(r'.*://[^/]*(github|gitlab|bitbucket|rawgit)[^/]*/([^/]+/){1,3}master'), _("Use /HEAD instead of /master to point at a file in the default branch")), ] regex_checks = { 'WebSite': http_checks, 'SourceCode': http_checks, 'Repo': https_enforcings, 'UpdateCheckMode': https_enforcings, 'IssueTracker': http_checks + [ (re.compile(r'.*github\.com/[^/]+/[^/]+/*$'), _("/issues is missing")), (re.compile(r'.*gitlab\.com/[^/]+/[^/]+/*$'), _("/issues is missing")), ], 'Donate': http_checks + [ (re.compile(r'.*flattr\.com'), _("Flattr donation methods belong in the FlattrID flag")), (re.compile(r'.*liberapay\.com'), _("Liberapay donation methods belong in the LiberapayID flag")), ], 'Changelog': http_checks, 'Author Name': [ (re.compile(r'^\s'), _("Unnecessary leading space")), (re.compile(r'.*\s$'), _("Unnecessary trailing space")), ], 'Summary': [ (re.compile(r'.*\b(free software|open source)\b.*', re.IGNORECASE), _("No need to specify that the app is Free Software")), (re.compile(r'.*((your|for).*android|android.*(app|device|client|port|version))', re.IGNORECASE), _("No need to specify that the app is for Android")), (re.compile(r'.*[a-z0-9][.!?]( |$)'), _("Punctuation should be avoided")), (re.compile(r'^\s'), _("Unnecessary leading space")), (re.compile(r'.*\s$'), _("Unnecessary trailing space")), ], 'Description': https_enforcings + http_url_shorteners + [ (re.compile(r'\s*[*#][^ .]'), _("Invalid bulleted list")), (re.compile(r'^\s'), _("Unnecessary leading space")), (re.compile(r'.*\s$'), _("Unnecessary trailing space")), (re.compile(r'.*<(applet|base|body|button|embed|form|head|html|iframe|img|input|link|object|picture|script|source|style|svg|video).*', re.IGNORECASE), _("Forbidden HTML tags")), (re.compile(r'''.*\s+src=["']javascript:.*'''), _("Javascript in HTML src attributes")), ], } locale_pattern = re.compile(r'^[a-z]{2,3}(-[A-Z][A-Z])?$') def check_regexes(app): for f, checks in regex_checks.items(): for m, r in checks: v = app.get(f) t = metadata.fieldtype(f) if t == metadata.TYPE_MULTILINE: for l in v.splitlines(): if m.match(l): yield "%s at line '%s': %s" % (f, l, r) else: if v is None: continue if m.match(v): yield "%s '%s': %s" % (f, v, r) def get_lastbuild(builds): lowest_vercode = -1 lastbuild = None for build in builds: if not build.disable: vercode = int(build.versionCode) if lowest_vercode == -1 or vercode < lowest_vercode: lowest_vercode = vercode if not lastbuild or int(build.versionCode) > int(lastbuild.versionCode): lastbuild = build return lastbuild def check_update_check_data_url(app): """UpdateCheckData must have a valid HTTPS URL to protect checkupdates runs """ if app.UpdateCheckData: urlcode, codeex, urlver, verex = app.UpdateCheckData.split('|') for url in (urlcode, urlver): if url != '.': parsed = urllib.parse.urlparse(url) if not parsed.scheme or not parsed.netloc: yield _('UpdateCheckData not a valid URL: {url}').format(url=url) if parsed.scheme != 'https': yield _('UpdateCheckData must use HTTPS URL: {url}').format(url=url) def check_vercode_operation(app): if app.VercodeOperation and not common.VERCODE_OPERATION_RE.match(app.VercodeOperation): yield _('Invalid VercodeOperation: {field}').format(field=app.VercodeOperation) def check_ucm_tags(app): lastbuild = get_lastbuild(app.builds) if (lastbuild is not None and lastbuild.commit and app.UpdateCheckMode == 'RepoManifest' and not lastbuild.commit.startswith('unknown') and lastbuild.versionCode == app.CurrentVersionCode and not lastbuild.forcevercode and any(s in lastbuild.commit for s in '.,_-/')): yield _("Last used commit '{commit}' looks like a tag, but Update Check Mode is '{ucm}'")\ .format(commit=lastbuild.commit, ucm=app.UpdateCheckMode) def check_char_limits(app): limits = config['char_limits'] if len(app.Summary) > limits['summary']: yield _("Summary of length {length} is over the {limit} char limit")\ .format(length=len(app.Summary), limit=limits['summary']) if len(app.Description) > limits['description']: yield _("Description of length {length} is over the {limit} char limit")\ .format(length=len(app.Description), limit=limits['description']) def check_old_links(app): usual_sites = [ 'github.com', 'gitlab.com', 'bitbucket.org', ] old_sites = [ 'gitorious.org', 'code.google.com', ] if any(s in app.Repo for s in usual_sites): for f in ['WebSite', 'SourceCode', 'IssueTracker', 'Changelog']: v = app.get(f) if any(s in v for s in old_sites): yield _("App is in '{repo}' but has a link to {url}")\ .format(repo=app.Repo, url=v) def check_useless_fields(app): if app.UpdateCheckName == app.id: yield _("Update Check Name is set to the known app id - it can be removed") filling_ucms = re.compile(r'^(Tags.*|RepoManifest.*)') def check_checkupdates_ran(app): if filling_ucms.match(app.UpdateCheckMode): if not app.AutoName and not app.CurrentVersion and app.CurrentVersionCode == '0': yield _("UCM is set but it looks like checkupdates hasn't been run yet") def check_empty_fields(app): if not app.Categories: yield _("Categories are not set") all_categories = set([ "Connectivity", "Development", "Games", "Graphics", "Internet", "Money", "Multimedia", "Navigation", "Phone & SMS", "Reading", "Science & Education", "Security", "Sports & Health", "System", "Theming", "Time", "Writing", ]) def check_categories(app): for categ in app.Categories: if categ not in all_categories: yield _("Category '%s' is not valid" % categ) def check_duplicates(app): if app.Name and app.Name == app.AutoName: yield _("Name '%s' is just the auto name - remove it") % app.Name links_seen = set() for f in ['Source Code', 'Web Site', 'Issue Tracker', 'Changelog']: v = app.get(f) if not v: continue v = v.lower() if v in links_seen: yield _("Duplicate link in '{field}': {url}").format(field=f, url=v) else: links_seen.add(v) name = app.Name or app.AutoName if app.Summary and name: if app.Summary.lower() == name.lower(): yield _("Summary '%s' is just the app's name") % app.Summary if app.Summary and app.Description and len(app.Description) == 1: if app.Summary.lower() == app.Description[0].lower(): yield _("Description '%s' is just the app's summary") % app.Summary seenlines = set() for l in app.Description.splitlines(): if len(l) < 1: continue if l in seenlines: yield _("Description has a duplicate line") seenlines.add(l) desc_url = re.compile(r'(^|[^[])\[([^ ]+)( |\]|$)') def check_mediawiki_links(app): wholedesc = ' '.join(app.Description) for um in desc_url.finditer(wholedesc): url = um.group(1) for m, r in http_checks: if m.match(url): yield _("URL {url} in Description: {error}").format(url=url, error=r) def check_bulleted_lists(app): validchars = ['*', '#'] lchar = '' lcount = 0 for l in app.Description.splitlines(): if len(l) < 1: lcount = 0 continue if l[0] == lchar and l[1] == ' ': lcount += 1 if lcount > 2 and lchar not in validchars: yield _("Description has a list (%s) but it isn't bulleted (*) nor numbered (#)") % lchar break else: lchar = l[0] lcount = 1 def check_builds(app): supported_flags = set(metadata.build_flags) # needed for YAML and JSON for build in app.builds: if build.disable: if build.disable.startswith('Generated by import.py'): yield _("Build generated by `fdroid import` - remove disable line once ready") continue for s in ['master', 'origin', 'HEAD', 'default', 'trunk']: if build.commit and build.commit.startswith(s): yield _("Branch '{branch}' used as commit in build '{versionName}'")\ .format(branch=s, versionName=build.versionName) for srclib in build.srclibs: if '@' in srclib: ref = srclib.split('@')[1].split('/')[0] if ref.startswith(s): yield _("Branch '{branch}' used as commit in srclib '{srclib}'")\ .format(branch=s, srclib=srclib) else: yield _('srclibs missing name and/or @') + ' (srclibs: ' + srclib + ')' for key in build.keys(): if key not in supported_flags: yield _('%s is not an accepted build field') % key def check_files_dir(app): dir_path = os.path.join('metadata', app.id) if not os.path.isdir(dir_path): return files = set() for name in os.listdir(dir_path): path = os.path.join(dir_path, name) if not (os.path.isfile(path) or name == 'signatures' or locale_pattern.match(name)): yield _("Found non-file at %s") % path continue files.add(name) used = {'signatures', } for build in app.builds: for fname in build.patch: if fname not in files: yield _("Unknown file '{filename}' in build '{versionName}'")\ .format(filename=fname, versionName=build.versionName) else: used.add(fname) for name in files.difference(used): if locale_pattern.match(name): continue yield _("Unused file at %s") % os.path.join(dir_path, name) def check_format(app): if options.format and not rewritemeta.proper_format(app): yield _("Run rewritemeta to fix formatting") def check_license_tag(app): '''Ensure all license tags are in https://spdx.org/license-list''' if app.License.rstrip('+') not in SPDX: yield _('Invalid license tag "%s"! Use only tags from https://spdx.org/license-list') \ % (app.License) def check_extlib_dir(apps): dir_path = os.path.join('build', 'extlib') unused_extlib_files = set() for root, dirs, files in os.walk(dir_path): for name in files: unused_extlib_files.add(os.path.join(root, name)[len(dir_path) + 1:]) used = set() for app in apps: for build in app.builds: for path in build.extlibs: if path not in unused_extlib_files: yield _("{appid}: Unknown extlib {path} in build '{versionName}'")\ .format(appid=app.id, path=path, versionName=build.versionName) else: used.add(path) for path in unused_extlib_files.difference(used): if any(path.endswith(s) for s in [ '.gitignore', 'source.txt', 'origin.txt', 'md5.txt', 'LICENSE', 'LICENSE.txt', 'COPYING', 'COPYING.txt', 'NOTICE', 'NOTICE.txt', ]): continue yield _("Unused extlib at %s") % os.path.join(dir_path, path) def check_for_unsupported_metadata_files(basedir=""): """Checks whether any non-metadata files are in metadata/""" global config return_value = False formats = config['accepted_formats'] for f in glob.glob(basedir + 'metadata/*') + glob.glob(basedir + 'metadata/.*'): if os.path.isdir(f): exists = False for t in formats: exists = exists or os.path.exists(f + '.' + t) if not exists: print(_('"%s/" has no matching metadata file!') % f) return_value = True elif not os.path.splitext(f)[1][1:] in formats: print('"' + f.replace(basedir, '') + '" is not a supported file format: (' + ','.join(formats) + ')') return_value = True return return_value def main(): global config, options # Parse command line... parser = ArgumentParser(usage="%(prog)s [options] [APPID [APPID ...]]") common.setup_global_opts(parser) parser.add_argument("-f", "--format", action="store_true", default=False, help=_("Also warn about formatting issues, like rewritemeta -l")) parser.add_argument("appid", nargs='*', help=_("applicationId in the form APPID")) metadata.add_metadata_arguments(parser) options = parser.parse_args() metadata.warnings_action = options.W config = common.read_config(options) # Get all apps... allapps = metadata.read_metadata(xref=True) apps = common.read_app_args(options.appid, allapps, False) anywarns = check_for_unsupported_metadata_files() apps_check_funcs = [] if len(options.appid) == 0: # otherwise it finds tons of unused extlibs apps_check_funcs.append(check_extlib_dir) for check_func in apps_check_funcs: for warn in check_func(apps.values()): anywarns = True print(warn) for appid, app in apps.items(): if app.Disabled: continue app_check_funcs = [ check_regexes, check_update_check_data_url, check_vercode_operation, check_ucm_tags, check_char_limits, check_old_links, check_checkupdates_ran, check_useless_fields, check_empty_fields, check_categories, check_duplicates, check_mediawiki_links, check_bulleted_lists, check_builds, check_files_dir, check_format, check_license_tag, ] for check_func in app_check_funcs: for warn in check_func(app): anywarns = True print("%s: %s" % (appid, warn)) if anywarns: sys.exit(1) # A compiled, public domain list of official SPDX license tags from: # https://github.com/sindresorhus/spdx-license-list/blob/v4.0.0/spdx-simple.json # The deprecated license tags have been removed from the list, they are at the # bottom, starting after the last license tags that start with Z. # This is at the bottom, since its a long list of data SPDX = [ "PublicDomain", # an F-Droid addition, until we can enforce a better option "0BSD", "AAL", "Abstyles", "Adobe-2006", "Adobe-Glyph", "ADSL", "AFL-1.1", "AFL-1.2", "AFL-2.0", "AFL-2.1", "AFL-3.0", "Afmparse", "AGPL-1.0", "AGPL-3.0-only", "AGPL-3.0-or-later", "Aladdin", "AMDPLPA", "AML", "AMPAS", "ANTLR-PD", "Apache-1.0", "Apache-1.1", "Apache-2.0", "APAFML", "APL-1.0", "APSL-1.0", "APSL-1.1", "APSL-1.2", "APSL-2.0", "Artistic-1.0-cl8", "Artistic-1.0-Perl", "Artistic-1.0", "Artistic-2.0", "Bahyph", "Barr", "Beerware", "BitTorrent-1.0", "BitTorrent-1.1", "Borceux", "BSD-1-Clause", "BSD-2-Clause-FreeBSD", "BSD-2-Clause-NetBSD", "BSD-2-Clause-Patent", "BSD-2-Clause", "BSD-3-Clause-Attribution", "BSD-3-Clause-Clear", "BSD-3-Clause-LBNL", "BSD-3-Clause-No-Nuclear-License-2014", "BSD-3-Clause-No-Nuclear-License", "BSD-3-Clause-No-Nuclear-Warranty", "BSD-3-Clause", "BSD-4-Clause-UC", "BSD-4-Clause", "BSD-Protection", "BSD-Source-Code", "BSL-1.0", "bzip2-1.0.5", "bzip2-1.0.6", "Caldera", "CATOSL-1.1", "CC-BY-1.0", "CC-BY-2.0", "CC-BY-2.5", "CC-BY-3.0", "CC-BY-4.0", "CC-BY-NC-1.0", "CC-BY-NC-2.0", "CC-BY-NC-2.5", "CC-BY-NC-3.0", "CC-BY-NC-4.0", "CC-BY-NC-ND-1.0", "CC-BY-NC-ND-2.0", "CC-BY-NC-ND-2.5", "CC-BY-NC-ND-3.0", "CC-BY-NC-ND-4.0", "CC-BY-NC-SA-1.0", "CC-BY-NC-SA-2.0", "CC-BY-NC-SA-2.5", "CC-BY-NC-SA-3.0", "CC-BY-NC-SA-4.0", "CC-BY-ND-1.0", "CC-BY-ND-2.0", "CC-BY-ND-2.5", "CC-BY-ND-3.0", "CC-BY-ND-4.0", "CC-BY-SA-1.0", "CC-BY-SA-2.0", "CC-BY-SA-2.5", "CC-BY-SA-3.0", "CC-BY-SA-4.0", "CC0-1.0", "CDDL-1.0", "CDDL-1.1", "CDLA-Permissive-1.0", "CDLA-Sharing-1.0", "CECILL-1.0", "CECILL-1.1", "CECILL-2.0", "CECILL-2.1", "CECILL-B", "CECILL-C", "ClArtistic", "CNRI-Jython", "CNRI-Python-GPL-Compatible", "CNRI-Python", "Condor-1.1", "CPAL-1.0", "CPL-1.0", "CPOL-1.02", "Crossword", "CrystalStacker", "CUA-OPL-1.0", "Cube", "curl", "D-FSL-1.0", "diffmark", "DOC", "Dotseqn", "DSDP", "dvipdfm", "ECL-1.0", "ECL-2.0", "EFL-1.0", "EFL-2.0", "eGenix", "Entessa", "EPL-1.0", "EPL-2.0", "ErlPL-1.1", "EUDatagrid", "EUPL-1.0", "EUPL-1.1", "EUPL-1.2", "Eurosym", "Fair", "Frameworx-1.0", "FreeImage", "FSFAP", "FSFUL", "FSFULLR", "FTL", "GFDL-1.1-only", "GFDL-1.1-or-later", "GFDL-1.2-only", "GFDL-1.2-or-later", "GFDL-1.3-only", "GFDL-1.3-or-later", "Giftware", "GL2PS", "Glide", "Glulxe", "gnuplot", "GPL-1.0-only", "GPL-1.0-or-later", "GPL-2.0-only", "GPL-2.0-or-later", "GPL-3.0-only", "GPL-3.0-or-later", "gSOAP-1.3b", "HaskellReport", "HPND", "IBM-pibs", "ICU", "IJG", "ImageMagick", "iMatix", "Imlib2", "Info-ZIP", "Intel-ACPI", "Intel", "Interbase-1.0", "IPA", "IPL-1.0", "ISC", "JasPer-2.0", "JSON", "LAL-1.2", "LAL-1.3", "Latex2e", "Leptonica", "LGPL-2.0-only", "LGPL-2.0-or-later", "LGPL-2.1-only", "LGPL-2.1-or-later", "LGPL-3.0-only", "LGPL-3.0-or-later", "LGPLLR", "Libpng", "libtiff", "LiLiQ-P-1.1", "LiLiQ-R-1.1", "LiLiQ-Rplus-1.1", "LPL-1.0", "LPL-1.02", "LPPL-1.0", "LPPL-1.1", "LPPL-1.2", "LPPL-1.3a", "LPPL-1.3c", "MakeIndex", "MirOS", "MIT-advertising", "MIT-CMU", "MIT-enna", "MIT-feh", "MIT", "MITNFA", "Motosoto", "mpich2", "MPL-1.0", "MPL-1.1", "MPL-2.0-no-copyleft-exception", "MPL-2.0", "MS-PL", "MS-RL", "MTLL", "Multics", "Mup", "NASA-1.3", "Naumen", "NBPL-1.0", "NCSA", "Net-SNMP", "NetCDF", "Newsletr", "NGPL", "NLOD-1.0", "NLPL", "Nokia", "NOSL", "Noweb", "NPL-1.0", "NPL-1.1", "NPOSL-3.0", "NRL", "NTP", "OCCT-PL", "OCLC-2.0", "ODbL-1.0", "OFL-1.0", "OFL-1.1", "OGTSL", "OLDAP-1.1", "OLDAP-1.2", "OLDAP-1.3", "OLDAP-1.4", "OLDAP-2.0.1", "OLDAP-2.0", "OLDAP-2.1", "OLDAP-2.2.1", "OLDAP-2.2.2", "OLDAP-2.2", "OLDAP-2.3", "OLDAP-2.4", "OLDAP-2.5", "OLDAP-2.6", "OLDAP-2.7", "OLDAP-2.8", "OML", "OpenSSL", "OPL-1.0", "OSET-PL-2.1", "OSL-1.0", "OSL-1.1", "OSL-2.0", "OSL-2.1", "OSL-3.0", "PDDL-1.0", "PHP-3.0", "PHP-3.01", "Plexus", "PostgreSQL", "psfrag", "psutils", "Python-2.0", "Qhull", "QPL-1.0", "Rdisc", "RHeCos-1.1", "RPL-1.1", "RPL-1.5", "RPSL-1.0", "RSA-MD", "RSCPL", "Ruby", "SAX-PD", "Saxpath", "SCEA", "Sendmail", "SGI-B-1.0", "SGI-B-1.1", "SGI-B-2.0", "SimPL-2.0", "SISSL-1.2", "SISSL", "Sleepycat", "SMLNJ", "SMPPL", "SNIA", "Spencer-86", "Spencer-94", "Spencer-99", "SPL-1.0", "SugarCRM-1.1.3", "SWL", "TCL", "TCP-wrappers", "TMate", "TORQUE-1.1", "TOSL", "Unicode-DFS-2015", "Unicode-DFS-2016", "Unicode-TOU", "Unlicense", "UPL-1.0", "Vim", "VOSTROM", "VSL-1.0", "W3C-19980720", "W3C-20150513", "W3C", "Watcom-1.0", "Wsuipa", "WTFPL", "X11", "Xerox", "XFree86-1.1", "xinetd", "Xnet", "xpp", "XSkat", "YPL-1.0", "YPL-1.1", "Zed", "Zend-2.0", "Zimbra-1.3", "Zimbra-1.4", "zlib-acknowledgement", "Zlib", "ZPL-1.1", "ZPL-2.0", "ZPL-2.1", ] if __name__ == "__main__": main() fdroidserver-1.0.9/fdroidserver/publish.py0000664000175000017500000003651513323655167020670 0ustar hanshans00000000000000#!/usr/bin/env python3 # # publish.py - part of the FDroid server tools # Copyright (C) 2010-13, Ciaran Gultnieks, ciaran@ciarang.com # Copyright (C) 2013-2014 Daniel Martí # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . import sys import os import re import shutil import glob import hashlib from argparse import ArgumentParser from collections import OrderedDict import logging from gettext import ngettext import json import zipfile from . import _ from . import common from . import metadata from .common import FDroidPopen, SdkToolsPopen from .exception import BuildException, FDroidException config = None options = None def publish_source_tarball(apkfilename, unsigned_dir, output_dir): """Move the source tarball into the output directory...""" tarfilename = apkfilename[:-4] + '_src.tar.gz' tarfile = os.path.join(unsigned_dir, tarfilename) if os.path.exists(tarfile): shutil.move(tarfile, os.path.join(output_dir, tarfilename)) logging.debug('...published %s', tarfilename) else: logging.debug('...no source tarball for %s', apkfilename) def key_alias(appid): """Get the alias which F-Droid uses to indentify the singing key for this App in F-Droids keystore. """ if config and 'keyaliases' in config and appid in config['keyaliases']: # For this particular app, the key alias is overridden... keyalias = config['keyaliases'][appid] if keyalias.startswith('@'): m = hashlib.md5() m.update(keyalias[1:].encode('utf-8')) keyalias = m.hexdigest()[:8] return keyalias else: m = hashlib.md5() m.update(appid.encode('utf-8')) return m.hexdigest()[:8] def read_fingerprints_from_keystore(): """Obtain a dictionary containing all singning-key fingerprints which are managed by F-Droid, grouped by appid. """ env_vars = {'LC_ALL': 'C', 'FDROID_KEY_STORE_PASS': config['keystorepass'], 'FDROID_KEY_PASS': config['keypass']} p = FDroidPopen([config['keytool'], '-list', '-v', '-keystore', config['keystore'], '-storepass:env', 'FDROID_KEY_STORE_PASS'], envs=env_vars, output=False) if p.returncode != 0: raise FDroidException('could not read keysotre {}'.format(config['keystore'])) realias = re.compile('Alias name: (?P.+)\n') resha256 = re.compile(r'\s+SHA256: (?P[:0-9A-F]{95})\n') fps = {} for block in p.output.split(('*' * 43) + '\n' + '*' * 43): s_alias = realias.search(block) s_sha256 = resha256.search(block) if s_alias and s_sha256: sigfp = s_sha256.group('sha256').replace(':', '').lower() fps[s_alias.group('alias')] = sigfp return fps def sign_sig_key_fingerprint_list(jar_file): """sign the list of app-signing key fingerprints which is used primaryily by fdroid update to determine which APKs where built and signed by F-Droid and which ones were manually added by users. """ cmd = [config['jarsigner']] cmd += '-keystore', config['keystore'] cmd += '-storepass:env', 'FDROID_KEY_STORE_PASS' cmd += '-digestalg', 'SHA1' cmd += '-sigalg', 'SHA1withRSA' cmd += jar_file, config['repo_keyalias'] if config['keystore'] == 'NONE': cmd += config['smartcardoptions'] else: # smardcards never use -keypass cmd += '-keypass:env', 'FDROID_KEY_PASS' env_vars = {'FDROID_KEY_STORE_PASS': config['keystorepass'], 'FDROID_KEY_PASS': config['keypass']} p = common.FDroidPopen(cmd, envs=env_vars) if p.returncode != 0: raise FDroidException("Failed to sign '{}'!".format(jar_file)) def store_stats_fdroid_signing_key_fingerprints(appids, indent=None): """Store list of all signing-key fingerprints for given appids to HD. This list will later on be needed by fdroid update. """ if not os.path.exists('stats'): os.makedirs('stats') data = OrderedDict() fps = read_fingerprints_from_keystore() for appid in sorted(appids): alias = key_alias(appid) if alias in fps: data[appid] = {'signer': fps[key_alias(appid)]} jar_file = os.path.join('stats', 'publishsigkeys.jar') with zipfile.ZipFile(jar_file, 'w', zipfile.ZIP_DEFLATED) as jar: jar.writestr('publishsigkeys.json', json.dumps(data, indent=indent)) sign_sig_key_fingerprint_list(jar_file) def main(): global config, options # Parse command line... parser = ArgumentParser(usage="%(prog)s [options] " "[APPID[:VERCODE] [APPID[:VERCODE] ...]]") common.setup_global_opts(parser) parser.add_argument("appid", nargs='*', help=_("applicationId with optional versionCode in the form APPID[:VERCODE]")) metadata.add_metadata_arguments(parser) options = parser.parse_args() metadata.warnings_action = options.W config = common.read_config(options) if not ('jarsigner' in config and 'keytool' in config): logging.critical(_('Java JDK not found! Install in standard location or set java_paths!')) sys.exit(1) common.assert_config_keystore(config) log_dir = 'logs' if not os.path.isdir(log_dir): logging.info(_("Creating log directory")) os.makedirs(log_dir) tmp_dir = 'tmp' if not os.path.isdir(tmp_dir): logging.info(_("Creating temporary directory")) os.makedirs(tmp_dir) output_dir = 'repo' if not os.path.isdir(output_dir): logging.info(_("Creating output directory")) os.makedirs(output_dir) unsigned_dir = 'unsigned' if not os.path.isdir(unsigned_dir): logging.warning(_("No unsigned directory - nothing to do")) sys.exit(1) if not os.path.exists(config['keystore']): logging.error("Config error - missing '{0}'".format(config['keystore'])) sys.exit(1) # It was suggested at # https://dev.guardianproject.info/projects/bazaar/wiki/FDroid_Audit # that a package could be crafted, such that it would use the same signing # key as an existing app. While it may be theoretically possible for such a # colliding package ID to be generated, it seems virtually impossible that # the colliding ID would be something that would be a) a valid package ID, # and b) a sane-looking ID that would make its way into the repo. # Nonetheless, to be sure, before publishing we check that there are no # collisions, and refuse to do any publishing if that's the case... allapps = metadata.read_metadata() vercodes = common.read_pkg_args(options.appid, True) allaliases = [] for appid in allapps: m = hashlib.md5() m.update(appid.encode('utf-8')) keyalias = m.hexdigest()[:8] if keyalias in allaliases: logging.error(_("There is a keyalias collision - publishing halted")) sys.exit(1) allaliases.append(keyalias) logging.info(ngettext('{0} app, {1} key aliases', '{0} apps, {1} key aliases', len(allapps)).format(len(allapps), len(allaliases))) # Process any APKs or ZIPs that are waiting to be signed... for apkfile in sorted(glob.glob(os.path.join(unsigned_dir, '*.apk')) + glob.glob(os.path.join(unsigned_dir, '*.zip'))): appid, vercode = common.publishednameinfo(apkfile) apkfilename = os.path.basename(apkfile) if vercodes and appid not in vercodes: continue if appid in vercodes and vercodes[appid]: if vercode not in vercodes[appid]: continue logging.info(_("Processing {apkfilename}").format(apkfilename=apkfile)) # There ought to be valid metadata for this app, otherwise why are we # trying to publish it? if appid not in allapps: logging.error("Unexpected {0} found in unsigned directory" .format(apkfilename)) sys.exit(1) app = allapps[appid] if app.Binaries: # It's an app where we build from source, and verify the apk # contents against a developer's binary, and then publish their # version if everything checks out. # The binary should already have been retrieved during the build # process. srcapk = re.sub(r'.apk$', '.binary.apk', apkfile) # Compare our unsigned one with the downloaded one... compare_result = common.verify_apks(srcapk, apkfile, tmp_dir) if compare_result: logging.error("...verification failed - publish skipped : " + compare_result) else: # Success! So move the downloaded file to the repo, and remove # our built version. shutil.move(srcapk, os.path.join(output_dir, apkfilename)) os.remove(apkfile) publish_source_tarball(apkfilename, unsigned_dir, output_dir) logging.info('Published ' + apkfilename) elif apkfile.endswith('.zip'): # OTA ZIPs built by fdroid do not need to be signed by jarsigner, # just to be moved into place in the repo shutil.move(apkfile, os.path.join(output_dir, apkfilename)) publish_source_tarball(apkfilename, unsigned_dir, output_dir) logging.info('Published ' + apkfilename) else: # It's a 'normal' app, i.e. we sign and publish it... skipsigning = False # First we handle signatures for this app from local metadata signingfiles = common.metadata_find_developer_signing_files(appid, vercode) if signingfiles: # There's a signature of the app developer present in our # metadata. This means we're going to prepare both a locally # signed APK and a version signed with the developers key. signaturefile, signedfile, manifest = signingfiles with open(signaturefile, 'rb') as f: devfp = common.signer_fingerprint_short(f.read()) devsigned = '{}_{}_{}.apk'.format(appid, vercode, devfp) devsignedtmp = os.path.join(tmp_dir, devsigned) shutil.copy(apkfile, devsignedtmp) common.apk_implant_signatures(devsignedtmp, signaturefile, signedfile, manifest) if common.verify_apk_signature(devsignedtmp): shutil.move(devsignedtmp, os.path.join(output_dir, devsigned)) else: os.remove(devsignedtmp) logging.error('...verification failed - skipping: %s', devsigned) skipsigning = True # Now we sign with the F-Droid key. # Figure out the key alias name we'll use. Only the first 8 # characters are significant, so we'll use the first 8 from # the MD5 of the app's ID and hope there are no collisions. # If a collision does occur later, we're going to have to # come up with a new alogrithm, AND rename all existing keys # in the keystore! if not skipsigning: if appid in config['keyaliases']: # For this particular app, the key alias is overridden... keyalias = config['keyaliases'][appid] if keyalias.startswith('@'): m = hashlib.md5() m.update(keyalias[1:].encode('utf-8')) keyalias = m.hexdigest()[:8] else: m = hashlib.md5() m.update(appid.encode('utf-8')) keyalias = m.hexdigest()[:8] logging.info("Key alias: " + keyalias) # See if we already have a key for this application, and # if not generate one... env_vars = { 'FDROID_KEY_STORE_PASS': config['keystorepass'], 'FDROID_KEY_PASS': config['keypass'], } p = FDroidPopen([config['keytool'], '-list', '-alias', keyalias, '-keystore', config['keystore'], '-storepass:env', 'FDROID_KEY_STORE_PASS'], envs=env_vars) if p.returncode != 0: logging.info("Key does not exist - generating...") p = FDroidPopen([config['keytool'], '-genkey', '-keystore', config['keystore'], '-alias', keyalias, '-keyalg', 'RSA', '-keysize', '2048', '-validity', '10000', '-storepass:env', 'FDROID_KEY_STORE_PASS', '-keypass:env', 'FDROID_KEY_PASS', '-dname', config['keydname']], envs=env_vars) if p.returncode != 0: raise BuildException("Failed to generate key", p.output) signed_apk_path = os.path.join(output_dir, apkfilename) if os.path.exists(signed_apk_path): raise BuildException("Refusing to sign '{0}' file exists in both " "{1} and {2} folder.".format(apkfilename, unsigned_dir, output_dir)) # TODO replace below with common.sign_apk() once it has proven stable # Sign the application... p = FDroidPopen([config['jarsigner'], '-keystore', config['keystore'], '-storepass:env', 'FDROID_KEY_STORE_PASS', '-keypass:env', 'FDROID_KEY_PASS', '-sigalg', 'SHA1withRSA', '-digestalg', 'SHA1', apkfile, keyalias], envs=env_vars) if p.returncode != 0: raise BuildException(_("Failed to sign application"), p.output) # Zipalign it... p = SdkToolsPopen(['zipalign', '-v', '4', apkfile, os.path.join(output_dir, apkfilename)]) if p.returncode != 0: raise BuildException(_("Failed to align application")) os.remove(apkfile) publish_source_tarball(apkfilename, unsigned_dir, output_dir) logging.info('Published ' + apkfilename) store_stats_fdroid_signing_key_fingerprints(allapps.keys()) logging.info('published list signing-key fingerprints') if __name__ == "__main__": main() fdroidserver-1.0.9/fdroidserver/net.py0000664000175000017500000000454613272566407020010 0ustar hanshans00000000000000#!/usr/bin/env python3 # # net.py - part of the FDroid server tools # Copyright (C) 2015 Hans-Christoph Steiner # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . import os import requests def download_file(url, local_filename=None, dldir='tmp'): filename = url.split('/')[-1] if local_filename is None: local_filename = os.path.join(dldir, filename) # the stream=True parameter keeps memory usage low r = requests.get(url, stream=True, allow_redirects=True) r.raise_for_status() with open(local_filename, 'wb') as f: for chunk in r.iter_content(chunk_size=1024): if chunk: # filter out keep-alive new chunks f.write(chunk) f.flush() return local_filename def http_get(url, etag=None): """ Downloads the content from the given URL by making a GET request. If an ETag is given, it will do a HEAD request first, to see if the content changed. :param url: The URL to download from. :param etag: The last ETag to be used for the request (optional). :return: A tuple consisting of: - The raw content that was downloaded or None if it did not change - The new eTag as returned by the HTTP request """ headers = {'User-Agent': 'F-Droid'} # TODO disable TLS Session IDs and TLS Session Tickets # (plain text cookie visible to anyone who can see the network traffic) if etag: r = requests.head(url, headers=headers) r.raise_for_status() if 'ETag' in r.headers and etag == r.headers['ETag']: return None, etag r = requests.get(url, headers=headers) r.raise_for_status() new_etag = None if 'ETag' in r.headers: new_etag = r.headers['ETag'] return r.content, new_etag fdroidserver-1.0.9/fdroidserver/rewritemeta.py0000664000175000017500000000760113321213314021522 0ustar hanshans00000000000000#!/usr/bin/env python3 # # rewritemeta.py - part of the FDroid server tools # This cleans up the original .txt metadata file format. # Copyright (C) 2010-12, Ciaran Gultnieks, ciaran@ciarang.com # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . from argparse import ArgumentParser import os import logging import io from . import _ from . import common from . import metadata config = None options = None def proper_format(app): s = io.StringIO() # TODO: currently reading entire file again, should reuse first # read in metadata.py with open(app.metadatapath, 'r', encoding='utf8') as f: cur_content = f.read() _ignored, extension = common.get_extension(app.metadatapath) if extension == 'yml': metadata.write_yaml(s, app) elif extension == 'txt': metadata.write_txt(s, app) content = s.getvalue() s.close() return content == cur_content def main(): global config, options supported = ['txt', 'yml'] # Parse command line... parser = ArgumentParser(usage="%(prog)s [options] [APPID [APPID ...]]") common.setup_global_opts(parser) parser.add_argument("-l", "--list", action="store_true", default=False, help=_("List files that would be reformatted")) parser.add_argument("-t", "--to", default=None, help=_("Rewrite to a specific format: ") + ', '.join(supported)) parser.add_argument("appid", nargs='*', help=_("applicationId in the form APPID")) metadata.add_metadata_arguments(parser) options = parser.parse_args() metadata.warnings_action = options.W config = common.read_config(options) # Get all apps... allapps = metadata.read_metadata(xref=True) apps = common.read_app_args(options.appid, allapps, False) if options.list and options.to is not None: parser.error(_("Cannot use --list and --to at the same time")) if options.to is not None and options.to not in supported: parser.error(_("Unsupported metadata format, use: --to [{supported}]") .format(supported=' '.join(supported))) for appid, app in apps.items(): path = app.metadatapath base, ext = common.get_extension(path) if not options.to and ext not in supported: logging.info(_("Ignoring {ext} file at '{path}'").format(ext=ext, path=path)) continue elif options.to is not None: logging.info(_("Rewriting '{appid}' to '{path}'").format(appid=appid, path=options.to)) else: logging.info(_("Rewriting '{appid}'").format(appid=appid)) to_ext = ext if options.to is not None: to_ext = options.to if options.list: if not proper_format(app): print(path) continue newbuilds = [] for build in app.builds: new = metadata.Build() for k in metadata.build_flags: v = build[k] if v is None or v is False or v == [] or v == '': continue new[k] = v newbuilds.append(new) app.builds = newbuilds metadata.write_metadata(base + '.' + to_ext, app) if ext != to_ext: os.remove(path) logging.debug(_("Finished")) if __name__ == "__main__": main() fdroidserver-1.0.9/fdroidserver/tail.py0000664000175000017500000000621113272566407020142 0ustar hanshans00000000000000#!/usr/bin/env python ''' Python-Tail - Unix tail follow implementation in Python. python-tail can be used to monitor changes to a file. Example: import tail # Create a tail instance t = tail.Tail('file-to-be-followed') # Register a callback function to be called when a new line is found in the followed file. # If no callback function is registerd, new lines would be printed to standard out. t.register_callback(callback_function) # Follow the file with 5 seconds as sleep time between iterations. # If sleep time is not provided 1 second is used as the default time. t.follow(s=5) ''' # Author - Kasun Herath # Source - https://github.com/kasun/python-tail # modified by Hans-Christoph Steiner to add the # background thread and support reading multiple lines per read cycle import os import sys import time import threading class Tail(object): ''' Represents a tail command. ''' def __init__(self, tailed_file): ''' Initiate a Tail instance. Check for file validity, assigns callback function to standard out. Arguments: tailed_file - File to be followed. ''' self.check_file_validity(tailed_file) self.tailed_file = tailed_file self.callback = sys.stdout.write self.t_stop = threading.Event() def start(self, s=1): '''Start tailing a file in a background thread. Arguments: s - Number of seconds to wait between each iteration; Defaults to 3. ''' t = threading.Thread(target=self.follow, args=(s,)) t.start() def stop(self): '''Stop a background tail. ''' self.t_stop.set() def follow(self, s=1): ''' Do a tail follow. If a callback function is registered it is called with every new line. Else printed to standard out. Arguments: s - Number of seconds to wait between each iteration; Defaults to 1. ''' with open(self.tailed_file, encoding='utf8') as file_: # Go to the end of file file_.seek(0, 2) while not self.t_stop.is_set(): curr_position = file_.tell() lines = file_.readlines() if len(lines) == 0: file_.seek(curr_position) else: for line in lines: self.callback(line) time.sleep(s) def register_callback(self, func): ''' Overrides default callback function to provided function. ''' self.callback = func def check_file_validity(self, file_): ''' Check whether the a given file exists, readable and is a file ''' if not os.access(file_, os.F_OK): raise TailError("File '%s' does not exist" % (file_)) if not os.access(file_, os.R_OK): raise TailError("File '%s' not readable" % (file_)) if os.path.isdir(file_): raise TailError("File '%s' is a directory" % (file_)) class TailError(Exception): def __init__(self, msg): self.message = msg def __str__(self): return self.message fdroidserver-1.0.9/fdroidserver/gpgsign.py0000664000175000017500000000507613314154323020642 0ustar hanshans00000000000000#!/usr/bin/env python3 # # gpgsign.py - part of the FDroid server tools # Copyright (C) 2014, Ciaran Gultnieks, ciaran@ciarang.com # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . import os import glob from argparse import ArgumentParser import logging from . import _ from . import common from .common import FDroidPopen from .exception import FDroidException config = None options = None def main(): global config, options # Parse command line... parser = ArgumentParser(usage="%(prog)s [options]") common.setup_global_opts(parser) options = parser.parse_args() config = common.read_config(options) repodirs = ['repo'] if config['archive_older'] != 0: repodirs.append('archive') for output_dir in repodirs: if not os.path.isdir(output_dir): raise FDroidException(_("Missing output directory") + " '" + output_dir + "'") # Process any apks that are waiting to be signed... for f in sorted(glob.glob(os.path.join(output_dir, '*.*'))): if common.get_file_extension(f) == 'asc': continue if not common.is_repo_file(f): continue filename = os.path.basename(f) sigfilename = filename + ".asc" sigpath = os.path.join(output_dir, sigfilename) if not os.path.exists(sigpath): gpgargs = ['gpg', '-a', '--output', sigpath, '--detach-sig'] if 'gpghome' in config: gpgargs.extend(['--homedir', config['gpghome']]) if 'gpgkey' in config: gpgargs.extend(['--local-user', config['gpgkey']]) gpgargs.append(os.path.join(output_dir, filename)) p = FDroidPopen(gpgargs) if p.returncode != 0: raise FDroidException("Signing failed.") logging.info('Signed ' + filename) if __name__ == "__main__": main() fdroidserver-1.0.9/fdroidserver/common.py0000664000175000017500000035723613323655230020507 0ustar hanshans00000000000000#!/usr/bin/env python3 # # common.py - part of the FDroid server tools # Copyright (C) 2010-13, Ciaran Gultnieks, ciaran@ciarang.com # Copyright (C) 2013-2014 Daniel Martí # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . # common.py is imported by all modules, so do not import third-party # libraries here as they will become a requirement for all commands. import io import os import sys import re import ast import shutil import glob import stat import subprocess import time import operator import logging import hashlib import socket import base64 import zipfile import tempfile import json import xml.etree.ElementTree as XMLElementTree from binascii import hexlify from datetime import datetime, timedelta from distutils.version import LooseVersion from queue import Queue from zipfile import ZipFile from pyasn1.codec.der import decoder, encoder from pyasn1_modules import rfc2315 from pyasn1.error import PyAsn1Error import fdroidserver.metadata from fdroidserver import _ from fdroidserver.exception import FDroidException, VCSException, NoSubmodulesException,\ BuildException, VerificationException from .asynchronousfilereader import AsynchronousFileReader # this is the build-tools version, aapt has a separate version that # has to be manually set in test_aapt_version() MINIMUM_AAPT_VERSION = '26.0.0' VERCODE_OPERATION_RE = re.compile(r'^([ 0-9/*+-]|%c)+$') # A signature block file with a .DSA, .RSA, or .EC extension CERT_PATH_REGEX = re.compile(r'^META-INF/.*\.(DSA|EC|RSA)$') APK_NAME_REGEX = re.compile(r'^([a-zA-Z][\w.]*)_(-?[0-9]+)_?([0-9a-f]{7})?\.apk') STANDARD_FILE_NAME_REGEX = re.compile(r'^(\w[\w.]*)_(-?[0-9]+)\.\w+') XMLElementTree.register_namespace('android', 'http://schemas.android.com/apk/res/android') config = None options = None env = None orig_path = None default_config = { 'sdk_path': "$ANDROID_HOME", 'ndk_paths': { 'r10e': None, 'r11c': None, 'r12b': "$ANDROID_NDK", 'r13b': None, 'r14b': None, 'r15c': None, 'r16b': None, }, 'build_tools': MINIMUM_AAPT_VERSION, 'force_build_tools': False, 'java_paths': None, 'ant': "ant", 'mvn3': "mvn", 'gradle': 'gradle', 'accepted_formats': ['txt', 'yml'], 'sync_from_local_copy_dir': False, 'allow_disabled_algorithms': False, 'per_app_repos': False, 'make_current_version_link': True, 'current_version_name_source': 'Name', 'update_stats': False, 'stats_ignore': [], 'stats_server': None, 'stats_user': None, 'stats_to_carbon': False, 'repo_maxage': 0, 'build_server_always': False, 'keystore': 'keystore.jks', 'smartcardoptions': [], 'char_limits': { 'author': 256, 'name': 30, 'summary': 80, 'description': 4000, 'video': 256, 'whatsNew': 500, }, 'keyaliases': {}, 'repo_url': "https://MyFirstFDroidRepo.org/fdroid/repo", 'repo_name': "My First FDroid Repo Demo", 'repo_icon': "fdroid-icon.png", 'repo_description': ''' This is a repository of apps to be used with FDroid. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitlab.com/u/fdroid. ''', 'archive_older': 0, } def setup_global_opts(parser): try: # the buildserver VM might not have PIL installed from PIL import PngImagePlugin logger = logging.getLogger(PngImagePlugin.__name__) logger.setLevel(logging.INFO) # tame the "STREAM" debug messages except ImportError: pass parser.add_argument("-v", "--verbose", action="store_true", default=False, help=_("Spew out even more information than normal")) parser.add_argument("-q", "--quiet", action="store_true", default=False, help=_("Restrict output to warnings and errors")) def _add_java_paths_to_config(pathlist, thisconfig): def path_version_key(s): versionlist = [] for u in re.split('[^0-9]+', s): try: versionlist.append(int(u)) except ValueError: pass return versionlist for d in sorted(pathlist, key=path_version_key): if os.path.islink(d): continue j = os.path.basename(d) # the last one found will be the canonical one, so order appropriately for regex in [ r'^1\.([16-9][0-9]?)\.0\.jdk$', # OSX r'^jdk1\.([16-9][0-9]?)\.0_[0-9]+.jdk$', # OSX and Oracle tarball r'^jdk1\.([16-9][0-9]?)\.0_[0-9]+$', # Oracle Windows r'^jdk([16-9][0-9]?)-openjdk$', # Arch r'^java-([16-9][0-9]?)-openjdk$', # Arch r'^java-([16-9][0-9]?)-jdk$', # Arch (oracle) r'^java-1\.([16-9][0-9]?)\.0-.*$', # RedHat r'^java-([16-9][0-9]?)-oracle$', # Debian WebUpd8 r'^jdk-([16-9][0-9]?)-oracle-.*$', # Debian make-jpkg r'^java-([16-9][0-9]?)-openjdk-[^c][^o][^m].*$', # Debian r'^oracle-jdk-bin-1\.([17-9][0-9]?).*$', # Gentoo (oracle) r'^icedtea-bin-([17-9][0-9]?).*$', # Gentoo (openjdk) ]: m = re.match(regex, j) if not m: continue for p in [d, os.path.join(d, 'Contents', 'Home')]: if os.path.exists(os.path.join(p, 'bin', 'javac')): thisconfig['java_paths'][m.group(1)] = p def fill_config_defaults(thisconfig): for k, v in default_config.items(): if k not in thisconfig: thisconfig[k] = v # Expand paths (~users and $vars) def expand_path(path): if path is None: return None orig = path path = os.path.expanduser(path) path = os.path.expandvars(path) if orig == path: return None return path for k in ['sdk_path', 'ant', 'mvn3', 'gradle', 'keystore', 'repo_icon']: v = thisconfig[k] exp = expand_path(v) if exp is not None: thisconfig[k] = exp thisconfig[k + '_orig'] = v # find all installed JDKs for keytool, jarsigner, and JAVA[6-9]_HOME env vars if thisconfig['java_paths'] is None: thisconfig['java_paths'] = dict() pathlist = [] pathlist += glob.glob('/usr/lib/jvm/j*[16-9]*') pathlist += glob.glob('/usr/java/jdk1.[16-9]*') pathlist += glob.glob('/System/Library/Java/JavaVirtualMachines/1.[16-9][0-9]?.0.jdk') pathlist += glob.glob('/Library/Java/JavaVirtualMachines/*jdk*[0-9]*') pathlist += glob.glob('/opt/oracle-jdk-*1.[0-9]*') pathlist += glob.glob('/opt/icedtea-*[0-9]*') if os.getenv('JAVA_HOME') is not None: pathlist.append(os.getenv('JAVA_HOME')) if os.getenv('PROGRAMFILES') is not None: pathlist += glob.glob(os.path.join(os.getenv('PROGRAMFILES'), 'Java', 'jdk1.[16-9][0-9]?.*')) _add_java_paths_to_config(pathlist, thisconfig) for java_version in ('14', '13', '12', '11', '10', '9', '8', '7'): if java_version not in thisconfig['java_paths']: continue java_home = thisconfig['java_paths'][java_version] jarsigner = os.path.join(java_home, 'bin', 'jarsigner') if os.path.exists(jarsigner): thisconfig['jarsigner'] = jarsigner thisconfig['keytool'] = os.path.join(java_home, 'bin', 'keytool') break for k in ['ndk_paths', 'java_paths']: d = thisconfig[k] for k2 in d.copy(): v = d[k2] exp = expand_path(v) if exp is not None: thisconfig[k][k2] = exp thisconfig[k][k2 + '_orig'] = v def regsub_file(pattern, repl, path): with open(path, 'rb') as f: text = f.read() text = re.sub(bytes(pattern, 'utf8'), bytes(repl, 'utf8'), text) with open(path, 'wb') as f: f.write(text) def read_config(opts, config_file='config.py'): """Read the repository config The config is read from config_file, which is in the current directory when any of the repo management commands are used. If there is a local metadata file in the git repo, then config.py is not required, just use defaults. """ global config, options if config is not None: return config options = opts config = {} if os.path.isfile(config_file): logging.debug(_("Reading '{config_file}'").format(config_file=config_file)) with io.open(config_file, "rb") as f: code = compile(f.read(), config_file, 'exec') exec(code, None, config) else: logging.warning(_("No 'config.py' found, using defaults.")) for k in ('mirrors', 'install_list', 'uninstall_list', 'serverwebroot', 'servergitroot'): if k in config: if not type(config[k]) in (str, list, tuple): logging.warning( _("'{field}' will be in random order! Use () or [] brackets if order is important!") .format(field=k)) # smartcardoptions must be a list since its command line args for Popen if 'smartcardoptions' in config: config['smartcardoptions'] = config['smartcardoptions'].split(' ') elif 'keystore' in config and config['keystore'] == 'NONE': # keystore='NONE' means use smartcard, these are required defaults config['smartcardoptions'] = ['-storetype', 'PKCS11', '-providerName', 'SunPKCS11-OpenSC', '-providerClass', 'sun.security.pkcs11.SunPKCS11', '-providerArg', 'opensc-fdroid.cfg'] if any(k in config for k in ["keystore", "keystorepass", "keypass"]): st = os.stat(config_file) if st.st_mode & stat.S_IRWXG or st.st_mode & stat.S_IRWXO: logging.warning(_("unsafe permissions on '{config_file}' (should be 0600)!") .format(config_file=config_file)) fill_config_defaults(config) for k in ["repo_description", "archive_description"]: if k in config: config[k] = clean_description(config[k]) if 'serverwebroot' in config: if isinstance(config['serverwebroot'], str): roots = [config['serverwebroot']] elif all(isinstance(item, str) for item in config['serverwebroot']): roots = config['serverwebroot'] else: raise TypeError(_('only accepts strings, lists, and tuples')) rootlist = [] for rootstr in roots: # since this is used with rsync, where trailing slashes have # meaning, ensure there is always a trailing slash if rootstr[-1] != '/': rootstr += '/' rootlist.append(rootstr.replace('//', '/')) config['serverwebroot'] = rootlist if 'servergitmirrors' in config: if isinstance(config['servergitmirrors'], str): roots = [config['servergitmirrors']] elif all(isinstance(item, str) for item in config['servergitmirrors']): roots = config['servergitmirrors'] else: raise TypeError(_('only accepts strings, lists, and tuples')) config['servergitmirrors'] = roots return config def assert_config_keystore(config): """Check weather keystore is configured correctly and raise exception if not.""" nosigningkey = False if 'repo_keyalias' not in config: nosigningkey = True logging.critical(_("'repo_keyalias' not found in config.py!")) if 'keystore' not in config: nosigningkey = True logging.critical(_("'keystore' not found in config.py!")) elif not os.path.exists(config['keystore']): nosigningkey = True logging.critical("'" + config['keystore'] + "' does not exist!") if 'keystorepass' not in config: nosigningkey = True logging.critical(_("'keystorepass' not found in config.py!")) if 'keypass' not in config: nosigningkey = True logging.critical(_("'keypass' not found in config.py!")) if nosigningkey: raise FDroidException("This command requires a signing key, " + "you can create one using: fdroid update --create-key") def find_sdk_tools_cmd(cmd): '''find a working path to a tool from the Android SDK''' tooldirs = [] if config is not None and 'sdk_path' in config and os.path.exists(config['sdk_path']): # try to find a working path to this command, in all the recent possible paths if 'build_tools' in config: build_tools = os.path.join(config['sdk_path'], 'build-tools') # if 'build_tools' was manually set and exists, check only that one configed_build_tools = os.path.join(build_tools, config['build_tools']) if os.path.exists(configed_build_tools): tooldirs.append(configed_build_tools) else: # no configed version, so hunt known paths for it for f in sorted(os.listdir(build_tools), reverse=True): if os.path.isdir(os.path.join(build_tools, f)): tooldirs.append(os.path.join(build_tools, f)) tooldirs.append(build_tools) sdk_tools = os.path.join(config['sdk_path'], 'tools') if os.path.exists(sdk_tools): tooldirs.append(sdk_tools) sdk_platform_tools = os.path.join(config['sdk_path'], 'platform-tools') if os.path.exists(sdk_platform_tools): tooldirs.append(sdk_platform_tools) tooldirs.append('/usr/bin') for d in tooldirs: path = os.path.join(d, cmd) if os.path.isfile(path): if cmd == 'aapt': test_aapt_version(path) return path # did not find the command, exit with error message ensure_build_tools_exists(config) def test_aapt_version(aapt): '''Check whether the version of aapt is new enough''' output = subprocess.check_output([aapt, 'version'], universal_newlines=True) if output is None or output == '': logging.error(_("'{path}' failed to execute!").format(path=aapt)) else: m = re.match(r'.*v([0-9]+)\.([0-9]+)[.-]?([0-9.-]*)', output) if m: major = m.group(1) minor = m.group(2) bugfix = m.group(3) # the Debian package has the version string like "v0.2-23.0.2" too_old = False if '.' in bugfix: if LooseVersion(bugfix) < LooseVersion(MINIMUM_AAPT_VERSION): too_old = True elif LooseVersion('.'.join((major, minor, bugfix))) < LooseVersion('0.2.4062713'): too_old = True if too_old: logging.warning(_("'{aapt}' is too old, fdroid requires build-tools-{version} or newer!") .format(aapt=aapt, version=MINIMUM_AAPT_VERSION)) else: logging.warning(_('Unknown version of aapt, might cause problems: ') + output) def test_sdk_exists(thisconfig): if 'sdk_path' not in thisconfig: if 'aapt' in thisconfig and os.path.isfile(thisconfig['aapt']): test_aapt_version(thisconfig['aapt']) return True else: logging.error(_("'sdk_path' not set in 'config.py'!")) return False if thisconfig['sdk_path'] == default_config['sdk_path']: logging.error(_('No Android SDK found!')) logging.error(_('You can use ANDROID_HOME to set the path to your SDK, i.e.:')) logging.error('\texport ANDROID_HOME=/opt/android-sdk') return False if not os.path.exists(thisconfig['sdk_path']): logging.critical(_("Android SDK path '{path}' does not exist!") .format(path=thisconfig['sdk_path'])) return False if not os.path.isdir(thisconfig['sdk_path']): logging.critical(_("Android SDK path '{path}' is not a directory!") .format(path=thisconfig['sdk_path'])) return False return True def ensure_build_tools_exists(thisconfig): if not test_sdk_exists(thisconfig): raise FDroidException(_("Android SDK not found!")) build_tools = os.path.join(thisconfig['sdk_path'], 'build-tools') versioned_build_tools = os.path.join(build_tools, thisconfig['build_tools']) if not os.path.isdir(versioned_build_tools): raise FDroidException( _("Android build-tools path '{path}' does not exist!") .format(path=versioned_build_tools)) def get_local_metadata_files(): '''get any metadata files local to an app's source repo This tries to ignore anything that does not count as app metdata, including emacs cruft ending in ~ and the .fdroid.key*pass.txt files. ''' return glob.glob('.fdroid.[a-jl-z]*[a-rt-z]') def read_pkg_args(appid_versionCode_pairs, allow_vercodes=False): """ :param appids: arguments in the form of multiple appid:[vc] strings :returns: a dictionary with the set of vercodes specified for each package """ vercodes = {} if not appid_versionCode_pairs: return vercodes for p in appid_versionCode_pairs: if allow_vercodes and ':' in p: package, vercode = p.split(':') else: package, vercode = p, None if package not in vercodes: vercodes[package] = [vercode] if vercode else [] continue elif vercode and vercode not in vercodes[package]: vercodes[package] += [vercode] if vercode else [] return vercodes def read_app_args(appid_versionCode_pairs, allapps, allow_vercodes=False): """Build a list of App instances for processing On top of what read_pkg_args does, this returns the whole app metadata, but limiting the builds list to the builds matching the appid_versionCode_pairs and vercodes specified. If no appid_versionCode_pairs are specified, then all App and Build instances are returned. """ vercodes = read_pkg_args(appid_versionCode_pairs, allow_vercodes) if not vercodes: return allapps apps = {} for appid, app in allapps.items(): if appid in vercodes: apps[appid] = app if len(apps) != len(vercodes): for p in vercodes: if p not in allapps: logging.critical(_("No such package: %s") % p) raise FDroidException(_("Found invalid appids in arguments")) if not apps: raise FDroidException(_("No packages specified")) error = False for appid, app in apps.items(): vc = vercodes[appid] if not vc: continue app.builds = [b for b in app.builds if b.versionCode in vc] if len(app.builds) != len(vercodes[appid]): error = True allvcs = [b.versionCode for b in app.builds] for v in vercodes[appid]: if v not in allvcs: logging.critical(_("No such versionCode {versionCode} for app {appid}") .format(versionCode=v, appid=appid)) if error: raise FDroidException(_("Found invalid versionCodes for some apps")) return apps def get_extension(filename): base, ext = os.path.splitext(filename) if not ext: return base, '' return base, ext.lower()[1:] def has_extension(filename, ext): _ignored, f_ext = get_extension(filename) return ext == f_ext publish_name_regex = re.compile(r"^(.+)_([0-9]+)\.(apk|zip)$") def clean_description(description): 'Remove unneeded newlines and spaces from a block of description text' returnstring = '' # this is split up by paragraph to make removing the newlines easier for paragraph in re.split(r'\n\n', description): paragraph = re.sub('\r', '', paragraph) paragraph = re.sub('\n', ' ', paragraph) paragraph = re.sub(' {2,}', ' ', paragraph) paragraph = re.sub(r'^\s*(\w)', r'\1', paragraph) returnstring += paragraph + '\n\n' return returnstring.rstrip('\n') def publishednameinfo(filename): filename = os.path.basename(filename) m = publish_name_regex.match(filename) try: result = (m.group(1), m.group(2)) except AttributeError: raise FDroidException(_("Invalid name for published file: %s") % filename) return result apk_release_filename = re.compile(r'(?P[a-zA-Z0-9_\.]+)_(?P[0-9]+)\.apk') apk_release_filename_with_sigfp = re.compile(r'(?P[a-zA-Z0-9_\.]+)_(?P[0-9]+)_(?P[0-9a-f]{7})\.apk') def apk_parse_release_filename(apkname): """Parses the name of an APK file according the F-Droids APK naming scheme and returns the tokens. WARNING: Returned values don't necessarily represent the APKs actual properties, the are just paresed from the file name. :returns: A triplet containing (appid, versionCode, signer), where appid should be the package name, versionCode should be the integer represion of the APKs version and signer should be the first 7 hex digists of the sha256 signing key fingerprint which was used to sign this APK. """ m = apk_release_filename_with_sigfp.match(apkname) if m: return m.group('appid'), m.group('vercode'), m.group('sigfp') m = apk_release_filename.match(apkname) if m: return m.group('appid'), m.group('vercode'), None return None, None, None def get_release_filename(app, build): if build.output: return "%s_%s.%s" % (app.id, build.versionCode, get_file_extension(build.output)) else: return "%s_%s.apk" % (app.id, build.versionCode) def get_toolsversion_logname(app, build): return "%s_%s_toolsversion.log" % (app.id, build.versionCode) def getsrcname(app, build): return "%s_%s_src.tar.gz" % (app.id, build.versionCode) def getappname(app): if app.Name: return app.Name if app.AutoName: return app.AutoName return app.id def getcvname(app): return '%s (%s)' % (app.CurrentVersion, app.CurrentVersionCode) def get_build_dir(app): '''get the dir that this app will be built in''' if app.RepoType == 'srclib': return os.path.join('build', 'srclib', app.Repo) return os.path.join('build', app.id) def setup_vcs(app): '''checkout code from VCS and return instance of vcs and the build dir''' build_dir = get_build_dir(app) # Set up vcs interface and make sure we have the latest code... logging.debug("Getting {0} vcs interface for {1}" .format(app.RepoType, app.Repo)) if app.RepoType == 'git' and os.path.exists('.fdroid.yml'): remote = os.getcwd() else: remote = app.Repo vcs = getvcs(app.RepoType, remote, build_dir) return vcs, build_dir def getvcs(vcstype, remote, local): if vcstype == 'git': return vcs_git(remote, local) if vcstype == 'git-svn': return vcs_gitsvn(remote, local) if vcstype == 'hg': return vcs_hg(remote, local) if vcstype == 'bzr': return vcs_bzr(remote, local) if vcstype == 'srclib': if local != os.path.join('build', 'srclib', remote): raise VCSException("Error: srclib paths are hard-coded!") return getsrclib(remote, os.path.join('build', 'srclib'), raw=True) if vcstype == 'svn': raise VCSException("Deprecated vcs type 'svn' - please use 'git-svn' instead") raise VCSException("Invalid vcs type " + vcstype) def getsrclibvcs(name): if name not in fdroidserver.metadata.srclibs: raise VCSException("Missing srclib " + name) return fdroidserver.metadata.srclibs[name]['Repo Type'] class vcs: def __init__(self, remote, local): # svn, git-svn and bzr may require auth self.username = None if self.repotype() in ('git-svn', 'bzr'): if '@' in remote: if self.repotype == 'git-svn': raise VCSException("Authentication is not supported for git-svn") self.username, remote = remote.split('@') if ':' not in self.username: raise VCSException(_("Password required with username")) self.username, self.password = self.username.split(':') self.remote = remote self.local = local self.clone_failed = False self.refreshed = False self.srclib = None def repotype(self): return None def clientversion(self): versionstr = FDroidPopen(self.clientversioncmd()).output return versionstr[0:versionstr.find('\n')] def clientversioncmd(self): return None def gotorevision(self, rev, refresh=True): """Take the local repository to a clean version of the given revision, which is specificed in the VCS's native format. Beforehand, the repository can be dirty, or even non-existent. If the repository does already exist locally, it will be updated from the origin, but only once in the lifetime of the vcs object. None is acceptable for 'rev' if you know you are cloning a clean copy of the repo - otherwise it must specify a valid revision. """ if self.clone_failed: raise VCSException(_("Downloading the repository already failed once, not trying again.")) # The .fdroidvcs-id file for a repo tells us what VCS type # and remote that directory was created from, allowing us to drop it # automatically if either of those things changes. fdpath = os.path.join(self.local, '..', '.fdroidvcs-' + os.path.basename(self.local)) fdpath = os.path.normpath(fdpath) cdata = self.repotype() + ' ' + self.remote writeback = True deleterepo = False if os.path.exists(self.local): if os.path.exists(fdpath): with open(fdpath, 'r') as f: fsdata = f.read().strip() if fsdata == cdata: writeback = False else: deleterepo = True logging.info("Repository details for %s changed - deleting" % ( self.local)) else: deleterepo = True logging.info("Repository details for %s missing - deleting" % ( self.local)) if deleterepo: shutil.rmtree(self.local) exc = None if not refresh: self.refreshed = True try: self.gotorevisionx(rev) except FDroidException as e: exc = e # If necessary, write the .fdroidvcs file. if writeback and not self.clone_failed: os.makedirs(os.path.dirname(fdpath), exist_ok=True) with open(fdpath, 'w+') as f: f.write(cdata) if exc is not None: raise exc def gotorevisionx(self, rev): # pylint: disable=unused-argument """Derived classes need to implement this. It's called once basic checking has been performed. """ raise VCSException("This VCS type doesn't define gotorevisionx") # Initialise and update submodules def initsubmodules(self): raise VCSException('Submodules not supported for this vcs type') # Get a list of all known tags def gettags(self): if not self._gettags: raise VCSException('gettags not supported for this vcs type') rtags = [] for tag in self._gettags(): if re.match('[-A-Za-z0-9_. /]+$', tag): rtags.append(tag) return rtags def latesttags(self): """Get a list of all the known tags, sorted from newest to oldest""" raise VCSException('latesttags not supported for this vcs type') def getref(self): """Get current commit reference (hash, revision, etc)""" raise VCSException('getref not supported for this vcs type') def getsrclib(self): """Returns the srclib (name, path) used in setting up the current revision, or None.""" return self.srclib class vcs_git(vcs): def repotype(self): return 'git' def clientversioncmd(self): return ['git', '--version'] def git(self, args, envs=dict(), cwd=None, output=True): '''Prevent git fetch/clone/submodule from hanging at the username/password prompt While fetch/pull/clone respect the command line option flags, it seems that submodule commands do not. They do seem to follow whatever is in env vars, if the version of git is new enough. So we just throw the kitchen sink at it to see what sticks. Also, because of CVE-2017-1000117, block all SSH URLs. ''' # # supported in git >= 2.3 git_config = [ '-c', 'core.askpass=/bin/true', '-c', 'core.sshCommand=/bin/false', '-c', 'url.https://.insteadOf=ssh://', ] for domain in ('bitbucket.org', 'github.com', 'gitlab.com'): git_config.append('-c') git_config.append('url.https://u:p@' + domain + '/.insteadOf=git@' + domain + ':') git_config.append('-c') git_config.append('url.https://u:p@' + domain + '.insteadOf=git://' + domain) git_config.append('-c') git_config.append('url.https://u:p@' + domain + '.insteadOf=https://' + domain) envs.update({ 'GIT_TERMINAL_PROMPT': '0', 'GIT_ASKPASS': '/bin/true', 'SSH_ASKPASS': '/bin/true', 'GIT_SSH': '/bin/false', # for git < 2.3 }) return FDroidPopen(['git', ] + git_config + args, envs=envs, cwd=cwd, output=output) def checkrepo(self): """If the local directory exists, but is somehow not a git repository, git will traverse up the directory tree until it finds one that is (i.e. fdroidserver) and then we'll proceed to destroy it! This is called as a safety check. """ p = FDroidPopen(['git', 'rev-parse', '--show-toplevel'], cwd=self.local, output=False) result = p.output.rstrip() if not result.endswith(self.local): raise VCSException('Repository mismatch') def gotorevisionx(self, rev): if not os.path.exists(self.local): # Brand new checkout p = self.git(['clone', '--', self.remote, self.local]) if p.returncode != 0: self.clone_failed = True raise VCSException("Git clone failed", p.output) self.checkrepo() else: self.checkrepo() # Discard any working tree changes p = FDroidPopen(['git', 'submodule', 'foreach', '--recursive', 'git', 'reset', '--hard'], cwd=self.local, output=False) if p.returncode != 0: raise VCSException(_("Git reset failed"), p.output) # Remove untracked files now, in case they're tracked in the target # revision (it happens!) p = FDroidPopen(['git', 'submodule', 'foreach', '--recursive', 'git', 'clean', '-dffx'], cwd=self.local, output=False) if p.returncode != 0: raise VCSException(_("Git clean failed"), p.output) if not self.refreshed: # Get latest commits and tags from remote p = self.git(['fetch', 'origin'], cwd=self.local) if p.returncode != 0: raise VCSException(_("Git fetch failed"), p.output) p = self.git(['fetch', '--prune', '--tags', 'origin'], output=False, cwd=self.local) if p.returncode != 0: raise VCSException(_("Git fetch failed"), p.output) # Recreate origin/HEAD as git clone would do it, in case it disappeared p = FDroidPopen(['git', 'remote', 'set-head', 'origin', '--auto'], cwd=self.local, output=False) if p.returncode != 0: lines = p.output.splitlines() if 'Multiple remote HEAD branches' not in lines[0]: raise VCSException(_("Git remote set-head failed"), p.output) branch = lines[1].split(' ')[-1] p2 = FDroidPopen(['git', 'remote', 'set-head', 'origin', '--', branch], cwd=self.local, output=False) if p2.returncode != 0: raise VCSException(_("Git remote set-head failed"), p.output + '\n' + p2.output) self.refreshed = True # origin/HEAD is the HEAD of the remote, e.g. the "default branch" on # a github repo. Most of the time this is the same as origin/master. rev = rev or 'origin/HEAD' p = FDroidPopen(['git', 'checkout', '-f', rev], cwd=self.local, output=False) if p.returncode != 0: raise VCSException(_("Git checkout of '%s' failed") % rev, p.output) # Get rid of any uncontrolled files left behind p = FDroidPopen(['git', 'clean', '-dffx'], cwd=self.local, output=False) if p.returncode != 0: raise VCSException(_("Git clean failed"), p.output) def initsubmodules(self): self.checkrepo() submfile = os.path.join(self.local, '.gitmodules') if not os.path.isfile(submfile): raise NoSubmodulesException(_("No git submodules available")) # fix submodules not accessible without an account and public key auth with open(submfile, 'r') as f: lines = f.readlines() with open(submfile, 'w') as f: for line in lines: for domain in ('bitbucket.org', 'github.com', 'gitlab.com'): line = re.sub('git@' + domain + ':', 'https://u:p@' + domain + '/', line) f.write(line) p = FDroidPopen(['git', 'submodule', 'sync'], cwd=self.local, output=False) if p.returncode != 0: raise VCSException(_("Git submodule sync failed"), p.output) p = self.git(['submodule', 'update', '--init', '--force', '--recursive'], cwd=self.local) if p.returncode != 0: raise VCSException(_("Git submodule update failed"), p.output) def _gettags(self): self.checkrepo() p = FDroidPopen(['git', 'tag'], cwd=self.local, output=False) return p.output.splitlines() tag_format = re.compile(r'tag: ([^),]*)') def latesttags(self): self.checkrepo() p = FDroidPopen(['git', 'log', '--tags', '--simplify-by-decoration', '--pretty=format:%d'], cwd=self.local, output=False) tags = [] for line in p.output.splitlines(): for tag in self.tag_format.findall(line): tags.append(tag) return tags class vcs_gitsvn(vcs): def repotype(self): return 'git-svn' def clientversioncmd(self): return ['git', 'svn', '--version'] def checkrepo(self): """If the local directory exists, but is somehow not a git repository, git will traverse up the directory tree until it finds one that is (i.e. fdroidserver) and then we'll proceed to destory it! This is called as a safety check. """ p = FDroidPopen(['git', 'rev-parse', '--show-toplevel'], cwd=self.local, output=False) result = p.output.rstrip() if not result.endswith(self.local): raise VCSException('Repository mismatch') def git(self, args, envs=dict(), cwd=None, output=True): '''Prevent git fetch/clone/submodule from hanging at the username/password prompt AskPass is set to /bin/true to let the process try to connect without a username/password. The SSH command is set to /bin/false to block all SSH URLs (supported in git >= 2.3). This protects against CVE-2017-1000117. ''' git_config = [ '-c', 'core.askpass=/bin/true', '-c', 'core.sshCommand=/bin/false', ] envs.update({ 'GIT_TERMINAL_PROMPT': '0', 'GIT_ASKPASS': '/bin/true', 'SSH_ASKPASS': '/bin/true', 'GIT_SSH': '/bin/false', # for git < 2.3 'SVN_SSH': '/bin/false', }) return FDroidPopen(['git', ] + git_config + args, envs=envs, cwd=cwd, output=output) def gotorevisionx(self, rev): if not os.path.exists(self.local): # Brand new checkout gitsvn_args = ['svn', 'clone'] remote = None if ';' in self.remote: remote_split = self.remote.split(';') for i in remote_split[1:]: if i.startswith('trunk='): gitsvn_args.extend(['-T', i[6:]]) elif i.startswith('tags='): gitsvn_args.extend(['-t', i[5:]]) elif i.startswith('branches='): gitsvn_args.extend(['-b', i[9:]]) remote = remote_split[0] else: remote = self.remote if not remote.startswith('https://'): raise VCSException(_('HTTPS must be used with Subversion URLs!')) # git-svn sucks at certificate validation, this throws useful errors: import requests r = requests.head(remote) r.raise_for_status() location = r.headers.get('location') if location and not location.startswith('https://'): raise VCSException(_('Invalid redirect to non-HTTPS: {before} -> {after} ') .format(before=remote, after=location)) gitsvn_args.extend(['--', remote, self.local]) p = self.git(gitsvn_args) if p.returncode != 0: self.clone_failed = True raise VCSException(_('git svn clone failed'), p.output) self.checkrepo() else: self.checkrepo() # Discard any working tree changes p = self.git(['reset', '--hard'], cwd=self.local, output=False) if p.returncode != 0: raise VCSException("Git reset failed", p.output) # Remove untracked files now, in case they're tracked in the target # revision (it happens!) p = self.git(['clean', '-dffx'], cwd=self.local, output=False) if p.returncode != 0: raise VCSException("Git clean failed", p.output) if not self.refreshed: # Get new commits, branches and tags from repo p = self.git(['svn', 'fetch'], cwd=self.local, output=False) if p.returncode != 0: raise VCSException("Git svn fetch failed") p = self.git(['svn', 'rebase'], cwd=self.local, output=False) if p.returncode != 0: raise VCSException("Git svn rebase failed", p.output) self.refreshed = True rev = rev or 'master' if rev: nospaces_rev = rev.replace(' ', '%20') # Try finding a svn tag for treeish in ['origin/', '']: p = self.git(['checkout', treeish + 'tags/' + nospaces_rev], cwd=self.local, output=False) if p.returncode == 0: break if p.returncode != 0: # No tag found, normal svn rev translation # Translate svn rev into git format rev_split = rev.split('/') p = None for treeish in ['origin/', '']: if len(rev_split) > 1: treeish += rev_split[0] svn_rev = rev_split[1] else: # if no branch is specified, then assume trunk (i.e. 'master' branch): treeish += 'master' svn_rev = rev svn_rev = svn_rev if svn_rev[0] == 'r' else 'r' + svn_rev p = self.git(['svn', 'find-rev', '--before', svn_rev, treeish], cwd=self.local, output=False) git_rev = p.output.rstrip() if p.returncode == 0 and git_rev: break if p.returncode != 0 or not git_rev: # Try a plain git checkout as a last resort p = self.git(['checkout', rev], cwd=self.local, output=False) if p.returncode != 0: raise VCSException("No git treeish found and direct git checkout of '%s' failed" % rev, p.output) else: # Check out the git rev equivalent to the svn rev p = self.git(['checkout', git_rev], cwd=self.local, output=False) if p.returncode != 0: raise VCSException(_("Git checkout of '%s' failed") % rev, p.output) # Get rid of any uncontrolled files left behind p = self.git(['clean', '-dffx'], cwd=self.local, output=False) if p.returncode != 0: raise VCSException(_("Git clean failed"), p.output) def _gettags(self): self.checkrepo() for treeish in ['origin/', '']: d = os.path.join(self.local, '.git', 'svn', 'refs', 'remotes', treeish, 'tags') if os.path.isdir(d): return os.listdir(d) def getref(self): self.checkrepo() p = FDroidPopen(['git', 'svn', 'find-rev', 'HEAD'], cwd=self.local, output=False) if p.returncode != 0: return None return p.output.strip() class vcs_hg(vcs): def repotype(self): return 'hg' def clientversioncmd(self): return ['hg', '--version'] def gotorevisionx(self, rev): if not os.path.exists(self.local): p = FDroidPopen(['hg', 'clone', '--ssh', '/bin/false', '--', self.remote, self.local], output=False) if p.returncode != 0: self.clone_failed = True raise VCSException("Hg clone failed", p.output) else: p = FDroidPopen(['hg', 'status', '-uS'], cwd=self.local, output=False) if p.returncode != 0: raise VCSException("Hg status failed", p.output) for line in p.output.splitlines(): if not line.startswith('? '): raise VCSException("Unexpected output from hg status -uS: " + line) FDroidPopen(['rm', '-rf', '--', line[2:]], cwd=self.local, output=False) if not self.refreshed: p = FDroidPopen(['hg', 'pull', '--ssh', '/bin/false'], cwd=self.local, output=False) if p.returncode != 0: raise VCSException("Hg pull failed", p.output) self.refreshed = True rev = rev or 'default' if not rev: return p = FDroidPopen(['hg', 'update', '-C', '--', rev], cwd=self.local, output=False) if p.returncode != 0: raise VCSException("Hg checkout of '%s' failed" % rev, p.output) p = FDroidPopen(['hg', 'purge', '--all'], cwd=self.local, output=False) # Also delete untracked files, we have to enable purge extension for that: if "'purge' is provided by the following extension" in p.output: with open(os.path.join(self.local, '.hg', 'hgrc'), "a") as myfile: myfile.write("\n[extensions]\nhgext.purge=\n") p = FDroidPopen(['hg', 'purge', '--all'], cwd=self.local, output=False) if p.returncode != 0: raise VCSException("HG purge failed", p.output) elif p.returncode != 0: raise VCSException("HG purge failed", p.output) def _gettags(self): p = FDroidPopen(['hg', 'tags', '-q'], cwd=self.local, output=False) return p.output.splitlines()[1:] class vcs_bzr(vcs): def repotype(self): return 'bzr' def clientversioncmd(self): return ['bzr', '--version'] def bzr(self, args, envs=dict(), cwd=None, output=True): '''Prevent bzr from ever using SSH to avoid security vulns''' envs.update({ 'BZR_SSH': 'false', }) return FDroidPopen(['bzr', ] + args, envs=envs, cwd=cwd, output=output) def gotorevisionx(self, rev): if not os.path.exists(self.local): p = self.bzr(['branch', self.remote, self.local], output=False) if p.returncode != 0: self.clone_failed = True raise VCSException("Bzr branch failed", p.output) else: p = self.bzr(['clean-tree', '--force', '--unknown', '--ignored'], cwd=self.local, output=False) if p.returncode != 0: raise VCSException("Bzr revert failed", p.output) if not self.refreshed: p = self.bzr(['pull'], cwd=self.local, output=False) if p.returncode != 0: raise VCSException("Bzr update failed", p.output) self.refreshed = True revargs = list(['-r', rev] if rev else []) p = self.bzr(['revert'] + revargs, cwd=self.local, output=False) if p.returncode != 0: raise VCSException("Bzr revert of '%s' failed" % rev, p.output) def _gettags(self): p = self.bzr(['tags'], cwd=self.local, output=False) return [tag.split(' ')[0].strip() for tag in p.output.splitlines()] def unescape_string(string): if len(string) < 2: return string if string[0] == '"' and string[-1] == '"': return string[1:-1] return string.replace("\\'", "'") def retrieve_string(app_dir, string, xmlfiles=None): if not string.startswith('@string/'): return unescape_string(string) if xmlfiles is None: xmlfiles = [] for res_dir in [ os.path.join(app_dir, 'res'), os.path.join(app_dir, 'src', 'main', 'res'), ]: for root, dirs, files in os.walk(res_dir): if os.path.basename(root) == 'values': xmlfiles += [os.path.join(root, x) for x in files if x.endswith('.xml')] name = string[len('@string/'):] def element_content(element): if element.text is None: return "" s = XMLElementTree.tostring(element, encoding='utf-8', method='text') return s.decode('utf-8').strip() for path in xmlfiles: if not os.path.isfile(path): continue xml = parse_xml(path) element = xml.find('string[@name="' + name + '"]') if element is not None: content = element_content(element) return retrieve_string(app_dir, content, xmlfiles) return '' def retrieve_string_singleline(app_dir, string, xmlfiles=None): return retrieve_string(app_dir, string, xmlfiles).replace('\n', ' ').strip() def manifest_paths(app_dir, flavours): '''Return list of existing files that will be used to find the highest vercode''' possible_manifests = \ [os.path.join(app_dir, 'AndroidManifest.xml'), os.path.join(app_dir, 'src', 'main', 'AndroidManifest.xml'), os.path.join(app_dir, 'src', 'AndroidManifest.xml'), os.path.join(app_dir, 'build.gradle')] for flavour in flavours: if flavour == 'yes': continue possible_manifests.append( os.path.join(app_dir, 'src', flavour, 'AndroidManifest.xml')) return [path for path in possible_manifests if os.path.isfile(path)] def fetch_real_name(app_dir, flavours): '''Retrieve the package name. Returns the name, or None if not found.''' for path in manifest_paths(app_dir, flavours): if not has_extension(path, 'xml') or not os.path.isfile(path): continue logging.debug("fetch_real_name: Checking manifest at " + path) xml = parse_xml(path) app = xml.find('application') if app is None: continue if "{http://schemas.android.com/apk/res/android}label" not in app.attrib: continue label = app.attrib["{http://schemas.android.com/apk/res/android}label"] result = retrieve_string_singleline(app_dir, label) if result: result = result.strip() return result return None def get_library_references(root_dir): libraries = [] proppath = os.path.join(root_dir, 'project.properties') if not os.path.isfile(proppath): return libraries with open(proppath, 'r', encoding='iso-8859-1') as f: for line in f: if not line.startswith('android.library.reference.'): continue path = line.split('=')[1].strip() relpath = os.path.join(root_dir, path) if not os.path.isdir(relpath): continue logging.debug("Found subproject at %s" % path) libraries.append(path) return libraries def ant_subprojects(root_dir): subprojects = get_library_references(root_dir) for subpath in subprojects: subrelpath = os.path.join(root_dir, subpath) for p in get_library_references(subrelpath): relp = os.path.normpath(os.path.join(subpath, p)) if relp not in subprojects: subprojects.insert(0, relp) return subprojects def remove_debuggable_flags(root_dir): # Remove forced debuggable flags logging.debug("Removing debuggable flags from %s" % root_dir) for root, dirs, files in os.walk(root_dir): if 'AndroidManifest.xml' in files and os.path.isfile(os.path.join(root, 'AndroidManifest.xml')): regsub_file(r'android:debuggable="[^"]*"', '', os.path.join(root, 'AndroidManifest.xml')) vcsearch_g = re.compile(r'''.*[Vv]ersionCode\s*=?\s*["']*([0-9]+)["']*''').search vnsearch_g = re.compile(r'''.*[Vv]ersionName\s*=?\s*(["'])((?:(?=(\\?))\3.)*?)\1.*''').search vnssearch_g = re.compile(r'''.*[Vv]ersionNameSuffix\s*=?\s*(["'])((?:(?=(\\?))\3.)*?)\1.*''').search psearch_g = re.compile(r'''.*(packageName|applicationId)\s*=*\s*["']([^"']+)["'].*''').search fsearch_g = re.compile(r'''.*(applicationIdSuffix)\s*=*\s*["']([^"']+)["'].*''').search def app_matches_packagename(app, package): if not package: return False appid = app.UpdateCheckName or app.id if appid is None or appid == "Ignore": return True return appid == package def parse_androidmanifests(paths, app): """ Extract some information from the AndroidManifest.xml at the given path. Returns (version, vercode, package), any or all of which might be None. All values returned are strings. """ ignoreversions = app.UpdateCheckIgnore ignoresearch = re.compile(ignoreversions).search if ignoreversions else None if not paths: return (None, None, None) max_version = None max_vercode = None max_package = None for path in paths: if not os.path.isfile(path): continue logging.debug(_("Parsing manifest at '{path}'").format(path=path)) version = None vercode = None package = None flavour = None temp_app_id = None temp_version_name = None if app.builds and 'gradle' in app.builds[-1] and app.builds[-1].gradle: flavour = app.builds[-1].gradle[-1] if has_extension(path, 'gradle'): with open(path, 'r') as f: inside_flavour_group = 0 inside_required_flavour = 0 for line in f: if gradle_comment.match(line): continue if "applicationId" in line and not temp_app_id: matches = psearch_g(line) if matches: temp_app_id = matches.group(2) if "versionName" in line and not temp_version_name: matches = vnsearch_g(line) if matches: temp_version_name = matches.group(2) if inside_flavour_group > 0: if inside_required_flavour > 0: matches = psearch_g(line) if matches: s = matches.group(2) if app_matches_packagename(app, s): package = s else: # If build.gradle contains applicationIdSuffix add it to the end of package name matches = fsearch_g(line) if matches and temp_app_id: suffix = matches.group(2) temp_app_id = temp_app_id + suffix if app_matches_packagename(app, temp_app_id): package = temp_app_id matches = vnsearch_g(line) if matches: version = matches.group(2) else: # If build.gradle contains applicationNameSuffix add it to the end of version name matches = vnssearch_g(line) if matches and temp_version_name: name_suffix = matches.group(2) version = temp_version_name + name_suffix matches = vcsearch_g(line) if matches: vercode = matches.group(1) if '{' in line: inside_required_flavour += 1 if '}' in line: inside_required_flavour -= 1 else: if flavour and (flavour in line): inside_required_flavour = 1 if '{' in line: inside_flavour_group += 1 if '}' in line: inside_flavour_group -= 1 else: if "productFlavors" in line: inside_flavour_group = 1 if not package: matches = psearch_g(line) if matches: s = matches.group(2) if app_matches_packagename(app, s): package = s if not version: matches = vnsearch_g(line) if matches: version = matches.group(2) if not vercode: matches = vcsearch_g(line) if matches: vercode = matches.group(1) else: try: xml = parse_xml(path) if "package" in xml.attrib: s = xml.attrib["package"] if app_matches_packagename(app, s): package = s if "{http://schemas.android.com/apk/res/android}versionName" in xml.attrib: version = xml.attrib["{http://schemas.android.com/apk/res/android}versionName"] base_dir = os.path.dirname(path) version = retrieve_string_singleline(base_dir, version) if "{http://schemas.android.com/apk/res/android}versionCode" in xml.attrib: a = xml.attrib["{http://schemas.android.com/apk/res/android}versionCode"] if string_is_integer(a): vercode = a except Exception: logging.warning(_("Problem with xml at '{path}'").format(path=path)) # Remember package name, may be defined separately from version+vercode if package is None: package = max_package logging.debug("..got package={0}, version={1}, vercode={2}" .format(package, version, vercode)) # Always grab the package name and version name in case they are not # together with the highest version code if max_package is None and package is not None: max_package = package if max_version is None and version is not None: max_version = version if vercode is not None \ and (max_vercode is None or vercode > max_vercode): if not ignoresearch or not ignoresearch(version): if version is not None: max_version = version if vercode is not None: max_vercode = vercode if package is not None: max_package = package else: max_version = "Ignore" if max_version is None: max_version = "Unknown" if max_package and not is_valid_package_name(max_package): raise FDroidException(_("Invalid package name {0}").format(max_package)) return (max_version, max_vercode, max_package) def is_valid_package_name(name): return re.match("[A-Za-z_][A-Za-z_0-9.]+$", name) def getsrclib(spec, srclib_dir, subdir=None, basepath=False, raw=False, prepare=True, preponly=False, refresh=True, build=None): """Get the specified source library. Returns the path to it. Normally this is the path to be used when referencing it, which may be a subdirectory of the actual project. If you want the base directory of the project, pass 'basepath=True'. """ number = None subdir = None if raw: name = spec ref = None else: name, ref = spec.split('@') if ':' in name: number, name = name.split(':', 1) if '/' in name: name, subdir = name.split('/', 1) if name not in fdroidserver.metadata.srclibs: raise VCSException('srclib ' + name + ' not found.') srclib = fdroidserver.metadata.srclibs[name] sdir = os.path.join(srclib_dir, name) if not preponly: vcs = getvcs(srclib["Repo Type"], srclib["Repo"], sdir) vcs.srclib = (name, number, sdir) if ref: vcs.gotorevision(ref, refresh) if raw: return vcs libdir = None if subdir: libdir = os.path.join(sdir, subdir) elif srclib["Subdir"]: for subdir in srclib["Subdir"]: libdir_candidate = os.path.join(sdir, subdir) if os.path.exists(libdir_candidate): libdir = libdir_candidate break if libdir is None: libdir = sdir remove_signing_keys(sdir) remove_debuggable_flags(sdir) if prepare: if srclib["Prepare"]: cmd = replace_config_vars(srclib["Prepare"], build) p = FDroidPopen(['bash', '-x', '-c', '--', cmd], cwd=libdir) if p.returncode != 0: raise BuildException("Error running prepare command for srclib %s" % name, p.output) if basepath: libdir = sdir return (name, number, libdir) gradle_version_regex = re.compile(r"[^/]*'com\.android\.tools\.build:gradle:([^\.]+\.[^\.]+).*'.*") def prepare_source(vcs, app, build, build_dir, srclib_dir, extlib_dir, onserver=False, refresh=True): """ Prepare the source code for a particular build :param vcs: the appropriate vcs object for the application :param app: the application details from the metadata :param build: the build details from the metadata :param build_dir: the path to the build directory, usually 'build/app.id' :param srclib_dir: the path to the source libraries directory, usually 'build/srclib' :param extlib_dir: the path to the external libraries directory, usually 'build/extlib' Returns the (root, srclibpaths) where: :param root: is the root directory, which may be the same as 'build_dir' or may be a subdirectory of it. :param srclibpaths: is information on the srclibs being used """ # Optionally, the actual app source can be in a subdirectory if build.subdir: root_dir = os.path.join(build_dir, build.subdir) else: root_dir = build_dir # Get a working copy of the right revision logging.info("Getting source for revision " + build.commit) vcs.gotorevision(build.commit, refresh) # Initialise submodules if required if build.submodules: logging.info(_("Initialising submodules")) vcs.initsubmodules() # Check that a subdir (if we're using one) exists. This has to happen # after the checkout, since it might not exist elsewhere if not os.path.exists(root_dir): raise BuildException('Missing subdir ' + root_dir) # Run an init command if one is required if build.init: cmd = replace_config_vars(build.init, build) logging.info("Running 'init' commands in %s" % root_dir) p = FDroidPopen(['bash', '-x', '-c', '--', cmd], cwd=root_dir) if p.returncode != 0: raise BuildException("Error running init command for %s:%s" % (app.id, build.versionName), p.output) # Apply patches if any if build.patch: logging.info("Applying patches") for patch in build.patch: patch = patch.strip() logging.info("Applying " + patch) patch_path = os.path.join('metadata', app.id, patch) p = FDroidPopen(['patch', '-p1', '-i', os.path.abspath(patch_path)], cwd=build_dir) if p.returncode != 0: raise BuildException("Failed to apply patch %s" % patch_path) # Get required source libraries srclibpaths = [] if build.srclibs: logging.info("Collecting source libraries") for lib in build.srclibs: srclibpaths.append(getsrclib(lib, srclib_dir, build, preponly=onserver, refresh=refresh, build=build)) for name, number, libpath in srclibpaths: place_srclib(root_dir, int(number) if number else None, libpath) basesrclib = vcs.getsrclib() # If one was used for the main source, add that too. if basesrclib: srclibpaths.append(basesrclib) # Update the local.properties file localprops = [os.path.join(build_dir, 'local.properties')] if build.subdir: parts = build.subdir.split(os.sep) cur = build_dir for d in parts: cur = os.path.join(cur, d) localprops += [os.path.join(cur, 'local.properties')] for path in localprops: props = "" if os.path.isfile(path): logging.info("Updating local.properties file at %s" % path) with open(path, 'r', encoding='iso-8859-1') as f: props += f.read() props += '\n' else: logging.info("Creating local.properties file at %s" % path) # Fix old-fashioned 'sdk-location' by copying # from sdk.dir, if necessary if build.oldsdkloc: sdkloc = re.match(r".*^sdk.dir=(\S+)$.*", props, re.S | re.M).group(1) props += "sdk-location=%s\n" % sdkloc else: props += "sdk.dir=%s\n" % config['sdk_path'] props += "sdk-location=%s\n" % config['sdk_path'] ndk_path = build.ndk_path() # if for any reason the path isn't valid or the directory # doesn't exist, some versions of Gradle will error with a # cryptic message (even if the NDK is not even necessary). # https://gitlab.com/fdroid/fdroidserver/issues/171 if ndk_path and os.path.exists(ndk_path): # Add ndk location props += "ndk.dir=%s\n" % ndk_path props += "ndk-location=%s\n" % ndk_path # Add java.encoding if necessary if build.encoding: props += "java.encoding=%s\n" % build.encoding with open(path, 'w', encoding='iso-8859-1') as f: f.write(props) flavours = [] if build.build_method() == 'gradle': flavours = build.gradle if build.target: n = build.target.split('-')[1] regsub_file(r'compileSdkVersion[ =]+[0-9]+', r'compileSdkVersion %s' % n, os.path.join(root_dir, 'build.gradle')) # Remove forced debuggable flags remove_debuggable_flags(root_dir) # Insert version code and number into the manifest if necessary if build.forceversion: logging.info("Changing the version name") for path in manifest_paths(root_dir, flavours): if not os.path.isfile(path): continue if has_extension(path, 'xml'): regsub_file(r'android:versionName="[^"]*"', r'android:versionName="%s"' % build.versionName, path) elif has_extension(path, 'gradle'): regsub_file(r"""(\s*)versionName[\s'"=]+.*""", r"""\1versionName '%s'""" % build.versionName, path) if build.forcevercode: logging.info("Changing the version code") for path in manifest_paths(root_dir, flavours): if not os.path.isfile(path): continue if has_extension(path, 'xml'): regsub_file(r'android:versionCode="[^"]*"', r'android:versionCode="%s"' % build.versionCode, path) elif has_extension(path, 'gradle'): regsub_file(r'versionCode[ =]+[0-9]+', r'versionCode %s' % build.versionCode, path) # Delete unwanted files if build.rm: logging.info(_("Removing specified files")) for part in getpaths(build_dir, build.rm): dest = os.path.join(build_dir, part) logging.info("Removing {0}".format(part)) if os.path.lexists(dest): # rmtree can only handle directories that are not symlinks, so catch anything else if not os.path.isdir(dest) or os.path.islink(dest): os.remove(dest) else: shutil.rmtree(dest) else: logging.info("...but it didn't exist") remove_signing_keys(build_dir) # Add required external libraries if build.extlibs: logging.info("Collecting prebuilt libraries") libsdir = os.path.join(root_dir, 'libs') if not os.path.exists(libsdir): os.mkdir(libsdir) for lib in build.extlibs: lib = lib.strip() logging.info("...installing extlib {0}".format(lib)) libf = os.path.basename(lib) libsrc = os.path.join(extlib_dir, lib) if not os.path.exists(libsrc): raise BuildException("Missing extlib file {0}".format(libsrc)) shutil.copyfile(libsrc, os.path.join(libsdir, libf)) # Run a pre-build command if one is required if build.prebuild: logging.info("Running 'prebuild' commands in %s" % root_dir) cmd = replace_config_vars(build.prebuild, build) # Substitute source library paths into prebuild commands for name, number, libpath in srclibpaths: libpath = os.path.relpath(libpath, root_dir) cmd = cmd.replace('$$' + name + '$$', libpath) p = FDroidPopen(['bash', '-x', '-c', '--', cmd], cwd=root_dir) if p.returncode != 0: raise BuildException("Error running prebuild command for %s:%s" % (app.id, build.versionName), p.output) # Generate (or update) the ant build file, build.xml... if build.build_method() == 'ant' and build.androidupdate != ['no']: parms = ['android', 'update', 'lib-project'] lparms = ['android', 'update', 'project'] if build.target: parms += ['-t', build.target] lparms += ['-t', build.target] if build.androidupdate: update_dirs = build.androidupdate else: update_dirs = ant_subprojects(root_dir) + ['.'] for d in update_dirs: subdir = os.path.join(root_dir, d) if d == '.': logging.debug("Updating main project") cmd = parms + ['-p', d] else: logging.debug("Updating subproject %s" % d) cmd = lparms + ['-p', d] p = SdkToolsPopen(cmd, cwd=root_dir) # Check to see whether an error was returned without a proper exit # code (this is the case for the 'no target set or target invalid' # error) if p.returncode != 0 or p.output.startswith("Error: "): raise BuildException("Failed to update project at %s" % d, p.output) # Clean update dirs via ant if d != '.': logging.info("Cleaning subproject %s" % d) p = FDroidPopen(['ant', 'clean'], cwd=subdir) return (root_dir, srclibpaths) def getpaths_map(build_dir, globpaths): """Extend via globbing the paths from a field and return them as a map from original path to resulting paths""" paths = dict() for p in globpaths: p = p.strip() full_path = os.path.join(build_dir, p) full_path = os.path.normpath(full_path) paths[p] = [r[len(build_dir) + 1:] for r in glob.glob(full_path)] if not paths[p]: raise FDroidException("glob path '%s' did not match any files/dirs" % p) return paths def getpaths(build_dir, globpaths): """Extend via globbing the paths from a field and return them as a set""" paths_map = getpaths_map(build_dir, globpaths) paths = set() for k, v in paths_map.items(): for p in v: paths.add(p) return paths def natural_key(s): return [int(sp) if sp.isdigit() else sp for sp in re.split(r'(\d+)', s)] def check_system_clock(dt_obj, path): """Check if system clock is updated based on provided date If an APK has files newer than the system time, suggest updating the system clock. This is useful for offline systems, used for signing, which do not have another source of clock sync info. It has to be more than 24 hours newer because ZIP/APK files do not store timezone info """ checkdt = dt_obj - timedelta(1) if datetime.today() < checkdt: logging.warning(_('System clock is older than date in {path}!').format(path=path) + '\n' + _('Set clock to that time using:') + '\n' + 'sudo date -s "' + str(dt_obj) + '"') class KnownApks: """permanent store of existing APKs with the date they were added This is currently the only way to permanently store the "updated" date of APKs. """ def __init__(self): '''Load filename/date info about previously seen APKs Since the appid and date strings both will never have spaces, this is parsed as a list from the end to allow the filename to have any combo of spaces. ''' self.path = os.path.join('stats', 'known_apks.txt') self.apks = {} if os.path.isfile(self.path): with open(self.path, 'r', encoding='utf8') as f: for line in f: t = line.rstrip().split(' ') if len(t) == 2: self.apks[t[0]] = (t[1], None) else: appid = t[-2] date = datetime.strptime(t[-1], '%Y-%m-%d') filename = line[0:line.rfind(appid) - 1] self.apks[filename] = (appid, date) check_system_clock(date, self.path) self.changed = False def writeifchanged(self): if not self.changed: return if not os.path.exists('stats'): os.mkdir('stats') lst = [] for apk, app in self.apks.items(): appid, added = app line = apk + ' ' + appid if added: line += ' ' + added.strftime('%Y-%m-%d') lst.append(line) with open(self.path, 'w', encoding='utf8') as f: for line in sorted(lst, key=natural_key): f.write(line + '\n') def recordapk(self, apkName, app, default_date=None): ''' Record an apk (if it's new, otherwise does nothing) Returns the date it was added as a datetime instance ''' if apkName not in self.apks: if default_date is None: default_date = datetime.utcnow() self.apks[apkName] = (app, default_date) self.changed = True _ignored, added = self.apks[apkName] return added def getapp(self, apkname): """Look up information - given the 'apkname', returns (app id, date added/None). Or returns None for an unknown apk. """ if apkname in self.apks: return self.apks[apkname] return None def getlatest(self, num): """Get the most recent 'num' apps added to the repo, as a list of package ids with the most recent first""" apps = {} for apk, app in self.apks.items(): appid, added = app if added: if appid in apps: if apps[appid] > added: apps[appid] = added else: apps[appid] = added sortedapps = sorted(apps.items(), key=operator.itemgetter(1))[-num:] lst = [app for app, _ignored in sortedapps] lst.reverse() return lst def get_file_extension(filename): """get the normalized file extension, can be blank string but never None""" if isinstance(filename, bytes): filename = filename.decode('utf-8') return os.path.splitext(filename)[1].lower()[1:] def use_androguard(): """Report if androguard is available, and config its debug logging""" try: import androguard if use_androguard.show_path: logging.debug(_('Using androguard from "{path}"').format(path=androguard.__file__)) use_androguard.show_path = False if options and options.verbose: logging.getLogger("androguard.axml").setLevel(logging.INFO) return True except ImportError: return False use_androguard.show_path = True def _get_androguard_APK(apkfile): try: from androguard.core.bytecodes.apk import APK except ImportError: raise FDroidException("androguard library is not installed and aapt not present") return APK(apkfile) def ensure_final_value(packageName, arsc, value): """Ensure incoming value is always the value, not the resid androguard will sometimes return the Android "resId" aka Resource ID instead of the actual value. This checks whether the value is actually a resId, then performs the Android Resource lookup as needed. """ if value: returnValue = value if value[0] == '@': try: # can be a literal value or a resId res_id = int('0x' + value[1:], 16) res_id = arsc.get_id(packageName, res_id)[1] returnValue = arsc.get_string(packageName, res_id)[1] except (ValueError, TypeError): pass return returnValue def is_apk_and_debuggable_aapt(apkfile): p = SdkToolsPopen(['aapt', 'dump', 'xmltree', apkfile, 'AndroidManifest.xml'], output=False) if p.returncode != 0: raise FDroidException(_("Failed to get APK manifest information")) for line in p.output.splitlines(): if 'android:debuggable' in line and not line.endswith('0x0'): return True return False def is_apk_and_debuggable_androguard(apkfile): apkobject = _get_androguard_APK(apkfile) if apkobject.is_valid_APK(): debuggable = apkobject.get_element("application", "debuggable") if debuggable == 'true': return True return False def is_apk_and_debuggable(apkfile): """Returns True if the given file is an APK and is debuggable :param apkfile: full path to the apk to check""" if get_file_extension(apkfile) != 'apk': return False if use_androguard(): return is_apk_and_debuggable_androguard(apkfile) else: return is_apk_and_debuggable_aapt(apkfile) def get_apk_id(apkfile): """Extract identification information from APK using aapt. :param apkfile: path to an APK file. :returns: triplet (appid, version code, version name) """ if use_androguard(): return get_apk_id_androguard(apkfile) else: return get_apk_id_aapt(apkfile) def get_apk_id_androguard(apkfile): if not os.path.exists(apkfile): raise FDroidException(_("Reading packageName/versionCode/versionName failed, APK invalid: '{apkfilename}'") .format(apkfilename=apkfile)) a = _get_androguard_APK(apkfile) versionName = ensure_final_value(a.package, a.get_android_resources(), a.get_androidversion_name()) if not versionName: versionName = '' # versionName is expected to always be a str return a.package, a.get_androidversion_code(), versionName def get_apk_id_aapt(apkfile): r = re.compile("^package: name='(?P.*)' versionCode='(?P.*)' versionName='(?P.*?)'(?: platformBuildVersionName='.*')?") p = SdkToolsPopen(['aapt', 'dump', 'badging', apkfile], output=False) for line in p.output.splitlines(): m = r.match(line) if m: return m.group('appid'), m.group('vercode'), m.group('vername') raise FDroidException(_("Reading packageName/versionCode/versionName failed, APK invalid: '{apkfilename}'") .format(apkfilename=apkfile)) def get_minSdkVersion_aapt(apkfile): """Extract the minimum supported Android SDK from an APK using aapt :param apkfile: path to an APK file. :returns: the integer representing the SDK version """ r = re.compile(r"^sdkVersion:'([0-9]+)'") p = SdkToolsPopen(['aapt', 'dump', 'badging', apkfile], output=False) for line in p.output.splitlines(): m = r.match(line) if m: return int(m.group(1)) raise FDroidException(_('Reading minSdkVersion failed: "{apkfilename}"') .format(apkfilename=apkfile)) class PopenResult: def __init__(self): self.returncode = None self.output = None def SdkToolsPopen(commands, cwd=None, output=True): cmd = commands[0] if cmd not in config: config[cmd] = find_sdk_tools_cmd(commands[0]) abscmd = config[cmd] if abscmd is None: raise FDroidException(_("Could not find '{command}' on your system").format(command=cmd)) if cmd == 'aapt': test_aapt_version(config['aapt']) return FDroidPopen([abscmd] + commands[1:], cwd=cwd, output=output) def FDroidPopenBytes(commands, cwd=None, envs=None, output=True, stderr_to_stdout=True): """ Run a command and capture the possibly huge output as bytes. :param commands: command and argument list like in subprocess.Popen :param cwd: optionally specifies a working directory :param envs: a optional dictionary of environment variables and their values :returns: A PopenResult. """ global env if env is None: set_FDroidPopen_env() process_env = env.copy() if envs is not None and len(envs) > 0: process_env.update(envs) if cwd: cwd = os.path.normpath(cwd) logging.debug("Directory: %s" % cwd) logging.debug("> %s" % ' '.join(commands)) stderr_param = subprocess.STDOUT if stderr_to_stdout else subprocess.PIPE result = PopenResult() p = None try: p = subprocess.Popen(commands, cwd=cwd, shell=False, env=process_env, stdin=subprocess.DEVNULL, stdout=subprocess.PIPE, stderr=stderr_param) except OSError as e: raise BuildException("OSError while trying to execute " + ' '.join(commands) + ': ' + str(e)) # TODO are these AsynchronousFileReader threads always exiting? if not stderr_to_stdout and options.verbose: stderr_queue = Queue() stderr_reader = AsynchronousFileReader(p.stderr, stderr_queue) while not stderr_reader.eof(): while not stderr_queue.empty(): line = stderr_queue.get() sys.stderr.buffer.write(line) sys.stderr.flush() time.sleep(0.1) stdout_queue = Queue() stdout_reader = AsynchronousFileReader(p.stdout, stdout_queue) buf = io.BytesIO() # Check the queue for output (until there is no more to get) while not stdout_reader.eof(): while not stdout_queue.empty(): line = stdout_queue.get() if output and options.verbose: # Output directly to console sys.stderr.buffer.write(line) sys.stderr.flush() buf.write(line) time.sleep(0.1) result.returncode = p.wait() result.output = buf.getvalue() buf.close() # make sure all filestreams of the subprocess are closed for streamvar in ['stdin', 'stdout', 'stderr']: if hasattr(p, streamvar): stream = getattr(p, streamvar) if stream: stream.close() return result def FDroidPopen(commands, cwd=None, envs=None, output=True, stderr_to_stdout=True): """ Run a command and capture the possibly huge output as a str. :param commands: command and argument list like in subprocess.Popen :param cwd: optionally specifies a working directory :param envs: a optional dictionary of environment variables and their values :returns: A PopenResult. """ result = FDroidPopenBytes(commands, cwd, envs, output, stderr_to_stdout) result.output = result.output.decode('utf-8', 'ignore') return result gradle_comment = re.compile(r'[ ]*//') gradle_signing_configs = re.compile(r'^[\t ]*signingConfigs[ \t]*{[ \t]*$') gradle_line_matches = [ re.compile(r'^[\t ]*signingConfig [^ ]*$'), re.compile(r'.*android\.signingConfigs\.[^{]*$'), re.compile(r'.*\.readLine\(.*'), ] def remove_signing_keys(build_dir): for root, dirs, files in os.walk(build_dir): if 'build.gradle' in files: path = os.path.join(root, 'build.gradle') with open(path, "r", encoding='utf8') as o: lines = o.readlines() changed = False opened = 0 i = 0 with open(path, "w", encoding='utf8') as o: while i < len(lines): line = lines[i] i += 1 while line.endswith('\\\n'): line = line.rstrip('\\\n') + lines[i] i += 1 if gradle_comment.match(line): o.write(line) continue if opened > 0: opened += line.count('{') opened -= line.count('}') continue if gradle_signing_configs.match(line): changed = True opened += 1 continue if any(s.match(line) for s in gradle_line_matches): changed = True continue if opened == 0: o.write(line) if changed: logging.info("Cleaned build.gradle of keysigning configs at %s" % path) for propfile in [ 'project.properties', 'build.properties', 'default.properties', 'ant.properties', ]: if propfile in files: path = os.path.join(root, propfile) with open(path, "r", encoding='iso-8859-1') as o: lines = o.readlines() changed = False with open(path, "w", encoding='iso-8859-1') as o: for line in lines: if any(line.startswith(s) for s in ('key.store', 'key.alias')): changed = True continue o.write(line) if changed: logging.info("Cleaned %s of keysigning configs at %s" % (propfile, path)) def set_FDroidPopen_env(build=None): ''' set up the environment variables for the build environment There is only a weak standard, the variables used by gradle, so also set up the most commonly used environment variables for SDK and NDK. Also, if there is no locale set, this will set the locale (e.g. LANG) to en_US.UTF-8. ''' global env, orig_path if env is None: env = os.environ orig_path = env['PATH'] for n in ['ANDROID_HOME', 'ANDROID_SDK']: env[n] = config['sdk_path'] for k, v in config['java_paths'].items(): env['JAVA%s_HOME' % k] = v missinglocale = True for k, v in env.items(): if k == 'LANG' and v != 'C': missinglocale = False elif k == 'LC_ALL': missinglocale = False if missinglocale: env['LANG'] = 'en_US.UTF-8' if build is not None: path = build.ndk_path() paths = orig_path.split(os.pathsep) if path not in paths: paths = [path] + paths env['PATH'] = os.pathsep.join(paths) for n in ['ANDROID_NDK', 'NDK', 'ANDROID_NDK_HOME']: env[n] = build.ndk_path() def replace_build_vars(cmd, build): cmd = cmd.replace('$$COMMIT$$', build.commit) cmd = cmd.replace('$$VERSION$$', build.versionName) cmd = cmd.replace('$$VERCODE$$', build.versionCode) return cmd def replace_config_vars(cmd, build): cmd = cmd.replace('$$SDK$$', config['sdk_path']) cmd = cmd.replace('$$NDK$$', build.ndk_path()) cmd = cmd.replace('$$MVN3$$', config['mvn3']) if build is not None: cmd = replace_build_vars(cmd, build) return cmd def place_srclib(root_dir, number, libpath): if not number: return relpath = os.path.relpath(libpath, root_dir) proppath = os.path.join(root_dir, 'project.properties') lines = [] if os.path.isfile(proppath): with open(proppath, "r", encoding='iso-8859-1') as o: lines = o.readlines() with open(proppath, "w", encoding='iso-8859-1') as o: placed = False for line in lines: if line.startswith('android.library.reference.%d=' % number): o.write('android.library.reference.%d=%s\n' % (number, relpath)) placed = True else: o.write(line) if not placed: o.write('android.library.reference.%d=%s\n' % (number, relpath)) APK_SIGNATURE_FILES = re.compile(r'META-INF/[0-9A-Za-z_\-]+\.(SF|RSA|DSA|EC)') def signer_fingerprint_short(sig): """Obtain shortened sha256 signing-key fingerprint for pkcs7 signature. Extracts the first 7 hexadecimal digits of sha256 signing-key fingerprint for a given pkcs7 signature. :param sig: Contents of an APK signing certificate. :returns: shortened signing-key fingerprint. """ return signer_fingerprint(sig)[:7] def signer_fingerprint(sig): """Obtain sha256 signing-key fingerprint for pkcs7 signature. Extracts hexadecimal sha256 signing-key fingerprint string for a given pkcs7 signature. :param: Contents of an APK signature. :returns: shortened signature fingerprint. """ cert_encoded = get_certificate(sig) return hashlib.sha256(cert_encoded).hexdigest() def apk_signer_fingerprint(apk_path): """Obtain sha256 signing-key fingerprint for APK. Extracts hexadecimal sha256 signing-key fingerprint string for a given APK. :param apkpath: path to APK :returns: signature fingerprint """ with zipfile.ZipFile(apk_path, 'r') as apk: certs = [n for n in apk.namelist() if CERT_PATH_REGEX.match(n)] if len(certs) < 1: logging.error("Found no signing certificates on %s" % apk_path) return None if len(certs) > 1: logging.error("Found multiple signing certificates on %s" % apk_path) return None cert = apk.read(certs[0]) return signer_fingerprint(cert) def apk_signer_fingerprint_short(apk_path): """Obtain shortened sha256 signing-key fingerprint for APK. Extracts the first 7 hexadecimal digits of sha256 signing-key fingerprint for a given pkcs7 APK. :param apk_path: path to APK :returns: shortened signing-key fingerprint """ return apk_signer_fingerprint(apk_path)[:7] def metadata_get_sigdir(appid, vercode=None): """Get signature directory for app""" if vercode: return os.path.join('metadata', appid, 'signatures', vercode) else: return os.path.join('metadata', appid, 'signatures') def metadata_find_developer_signature(appid, vercode=None): """Tires to find the developer signature for given appid. This picks the first signature file found in metadata an returns its signature. :returns: sha256 signing key fingerprint of the developer signing key. None in case no signature can not be found.""" # fetch list of dirs for all versions of signatures appversigdirs = [] if vercode: appversigdirs.append(metadata_get_sigdir(appid, vercode)) else: appsigdir = metadata_get_sigdir(appid) if os.path.isdir(appsigdir): numre = re.compile('[0-9]+') for ver in os.listdir(appsigdir): if numre.match(ver): appversigdir = os.path.join(appsigdir, ver) appversigdirs.append(appversigdir) for sigdir in appversigdirs: sigs = glob.glob(os.path.join(sigdir, '*.DSA')) + \ glob.glob(os.path.join(sigdir, '*.EC')) + \ glob.glob(os.path.join(sigdir, '*.RSA')) if len(sigs) > 1: raise FDroidException('ambiguous signatures, please make sure there is only one signature in \'{}\'. (The signature has to be the App maintainers signature for version of the APK.)'.format(sigdir)) for sig in sigs: with open(sig, 'rb') as f: return signer_fingerprint(f.read()) return None def metadata_find_signing_files(appid, vercode): """Gets a list of singed manifests and signatures. :param appid: app id string :param vercode: app version code :returns: a list of triplets for each signing key with following paths: (signature_file, singed_file, manifest_file) """ ret = [] sigdir = metadata_get_sigdir(appid, vercode) sigs = glob.glob(os.path.join(sigdir, '*.DSA')) + \ glob.glob(os.path.join(sigdir, '*.EC')) + \ glob.glob(os.path.join(sigdir, '*.RSA')) extre = re.compile(r'(\.DSA|\.EC|\.RSA)$') for sig in sigs: sf = extre.sub('.SF', sig) if os.path.isfile(sf): mf = os.path.join(sigdir, 'MANIFEST.MF') if os.path.isfile(mf): ret.append((sig, sf, mf)) return ret def metadata_find_developer_signing_files(appid, vercode): """Get developer signature files for specified app from metadata. :returns: A triplet of paths for signing files from metadata: (signature_file, singed_file, manifest_file) """ allsigningfiles = metadata_find_signing_files(appid, vercode) if allsigningfiles and len(allsigningfiles) == 1: return allsigningfiles[0] else: return None def apk_strip_signatures(signed_apk, strip_manifest=False): """Removes signatures from APK. :param signed_apk: path to apk file. :param strip_manifest: when set to True also the manifest file will be removed from the APK. """ with tempfile.TemporaryDirectory() as tmpdir: tmp_apk = os.path.join(tmpdir, 'tmp.apk') shutil.move(signed_apk, tmp_apk) with ZipFile(tmp_apk, 'r') as in_apk: with ZipFile(signed_apk, 'w') as out_apk: for info in in_apk.infolist(): if not APK_SIGNATURE_FILES.match(info.filename): if strip_manifest: if info.filename != 'META-INF/MANIFEST.MF': buf = in_apk.read(info.filename) out_apk.writestr(info, buf) else: buf = in_apk.read(info.filename) out_apk.writestr(info, buf) def apk_implant_signatures(apkpath, signaturefile, signedfile, manifest): """Implats a signature from metadata into an APK. Note: this changes there supplied APK in place. So copy it if you need the original to be preserved. :param apkpath: location of the apk """ # get list of available signature files in metadata with tempfile.TemporaryDirectory() as tmpdir: apkwithnewsig = os.path.join(tmpdir, 'newsig.apk') with ZipFile(apkpath, 'r') as in_apk: with ZipFile(apkwithnewsig, 'w') as out_apk: for sig_file in [signaturefile, signedfile, manifest]: with open(sig_file, 'rb') as fp: buf = fp.read() info = zipfile.ZipInfo('META-INF/' + os.path.basename(sig_file)) info.compress_type = zipfile.ZIP_DEFLATED info.create_system = 0 # "Windows" aka "FAT", what Android SDK uses out_apk.writestr(info, buf) for info in in_apk.infolist(): if not APK_SIGNATURE_FILES.match(info.filename): if info.filename != 'META-INF/MANIFEST.MF': buf = in_apk.read(info.filename) out_apk.writestr(info, buf) os.remove(apkpath) p = SdkToolsPopen(['zipalign', '-v', '4', apkwithnewsig, apkpath]) if p.returncode != 0: raise BuildException("Failed to align application") def apk_extract_signatures(apkpath, outdir, manifest=True): """Extracts a signature files from APK and puts them into target directory. :param apkpath: location of the apk :param outdir: folder where the extracted signature files will be stored :param manifest: (optionally) disable extracting manifest file """ with ZipFile(apkpath, 'r') as in_apk: for f in in_apk.infolist(): if APK_SIGNATURE_FILES.match(f.filename) or \ (manifest and f.filename == 'META-INF/MANIFEST.MF'): newpath = os.path.join(outdir, os.path.basename(f.filename)) with open(newpath, 'wb') as out_file: out_file.write(in_apk.read(f.filename)) def sign_apk(unsigned_path, signed_path, keyalias): """Sign and zipalign an unsigned APK, then save to a new file, deleting the unsigned android-18 (4.3) finally added support for reasonable hash algorithms, like SHA-256, before then, the only options were MD5 and SHA1 :-/ This aims to use SHA-256 when the APK does not target older Android versions, and is therefore safe to do so. https://issuetracker.google.com/issues/36956587 https://android-review.googlesource.com/c/platform/libcore/+/44491 """ if get_minSdkVersion_aapt(unsigned_path) < 18: signature_algorithm = ['-sigalg', 'SHA1withRSA', '-digestalg', 'SHA1'] else: signature_algorithm = ['-sigalg', 'SHA256withRSA', '-digestalg', 'SHA-256'] p = FDroidPopen([config['jarsigner'], '-keystore', config['keystore'], '-storepass:env', 'FDROID_KEY_STORE_PASS', '-keypass:env', 'FDROID_KEY_PASS'] + signature_algorithm + [unsigned_path, keyalias], envs={ 'FDROID_KEY_STORE_PASS': config['keystorepass'], 'FDROID_KEY_PASS': config['keypass'], }) if p.returncode != 0: raise BuildException(_("Failed to sign application"), p.output) p = SdkToolsPopen(['zipalign', '-v', '4', unsigned_path, signed_path]) if p.returncode != 0: raise BuildException(_("Failed to zipalign application")) os.remove(unsigned_path) def verify_apks(signed_apk, unsigned_apk, tmp_dir): """Verify that two apks are the same One of the inputs is signed, the other is unsigned. The signature metadata is transferred from the signed to the unsigned apk, and then jarsigner is used to verify that the signature from the signed apk is also varlid for the unsigned one. If the APK given as unsigned actually does have a signature, it will be stripped out and ignored. :param signed_apk: Path to a signed apk file :param unsigned_apk: Path to an unsigned apk file expected to match it :param tmp_dir: Path to directory for temporary files :returns: None if the verification is successful, otherwise a string describing what went wrong. """ if not os.path.isfile(signed_apk): return 'can not verify: file does not exists: {}'.format(signed_apk) if not os.path.isfile(unsigned_apk): return 'can not verify: file does not exists: {}'.format(unsigned_apk) with ZipFile(signed_apk, 'r') as signed: meta_inf_files = ['META-INF/MANIFEST.MF'] for f in signed.namelist(): if APK_SIGNATURE_FILES.match(f): meta_inf_files.append(f) if len(meta_inf_files) < 3: return "Signature files missing from {0}".format(signed_apk) tmp_apk = os.path.join(tmp_dir, 'sigcp_' + os.path.basename(unsigned_apk)) with ZipFile(unsigned_apk, 'r') as unsigned: # only read the signature from the signed APK, everything else from unsigned with ZipFile(tmp_apk, 'w') as tmp: for filename in meta_inf_files: tmp.writestr(signed.getinfo(filename), signed.read(filename)) for info in unsigned.infolist(): if info.filename in meta_inf_files: logging.warning('Ignoring %s from %s', info.filename, unsigned_apk) continue if info.filename in tmp.namelist(): return "duplicate filename found: " + info.filename tmp.writestr(info, unsigned.read(info.filename)) verified = verify_apk_signature(tmp_apk) if not verified: logging.info("...NOT verified - {0}".format(tmp_apk)) return compare_apks(signed_apk, tmp_apk, tmp_dir, os.path.dirname(unsigned_apk)) logging.info("...successfully verified") return None def verify_jar_signature(jar): """Verifies the signature of a given JAR file. jarsigner is very shitty: unsigned JARs pass as "verified"! So this has to turn on -strict then check for result 4, since this does not expect the signature to be from a CA-signed certificate. :raises: VerificationException() if the JAR's signature could not be verified """ error = _('JAR signature failed to verify: {path}').format(path=jar) try: output = subprocess.check_output([config['jarsigner'], '-strict', '-verify', jar], stderr=subprocess.STDOUT) raise VerificationException(error + '\n' + output.decode('utf-8')) except subprocess.CalledProcessError as e: if e.returncode == 4: logging.debug(_('JAR signature verified: {path}').format(path=jar)) else: raise VerificationException(error + '\n' + e.output.decode('utf-8')) def verify_apk_signature(apk, min_sdk_version=None): """verify the signature on an APK Try to use apksigner whenever possible since jarsigner is very shitty: unsigned APKs pass as "verified"! Warning, this does not work on JARs with apksigner >= 0.7 (build-tools 26.0.1) :returns: boolean whether the APK was verified """ if set_command_in_config('apksigner'): args = [config['apksigner'], 'verify'] if min_sdk_version: args += ['--min-sdk-version=' + min_sdk_version] if options.verbose: args += ['--verbose'] try: output = subprocess.check_output(args + [apk]) if options.verbose: logging.debug(apk + ': ' + output.decode('utf-8')) return True except subprocess.CalledProcessError as e: logging.error('\n' + apk + ': ' + e.output.decode('utf-8')) else: if not config.get('jarsigner_warning_displayed'): config['jarsigner_warning_displayed'] = True logging.warning(_("Using Java's jarsigner, not recommended for verifying APKs! Use apksigner")) try: verify_jar_signature(apk) return True except Exception as e: logging.error(e) return False def verify_old_apk_signature(apk): """verify the signature on an archived APK, supporting deprecated algorithms F-Droid aims to keep every single binary that it ever published. Therefore, it needs to be able to verify APK signatures that include deprecated/removed algorithms. For example, jarsigner treats an MD5 signature as unsigned. jarsigner passes unsigned APKs as "verified"! So this has to turn on -strict then check for result 4. Just to be safe, this never reuses the file, and locks down the file permissions while in use. That should prevent a bad actor from changing the settings during operation. :returns: boolean whether the APK was verified """ _java_security = os.path.join(os.getcwd(), '.java.security') if os.path.exists(_java_security): os.remove(_java_security) with open(_java_security, 'w') as fp: fp.write('jdk.jar.disabledAlgorithms=MD2, RSA keySize < 1024') os.chmod(_java_security, 0o400) try: cmd = [ config['jarsigner'], '-J-Djava.security.properties=' + _java_security, '-strict', '-verify', apk ] output = subprocess.check_output(cmd, stderr=subprocess.STDOUT) except subprocess.CalledProcessError as e: if e.returncode != 4: output = e.output else: logging.debug(_('JAR signature verified: {path}').format(path=apk)) return True finally: if os.path.exists(_java_security): os.chmod(_java_security, 0o600) os.remove(_java_security) logging.error(_('Old APK signature failed to verify: {path}').format(path=apk) + '\n' + output.decode('utf-8')) return False apk_badchars = re.compile('''[/ :;'"]''') def compare_apks(apk1, apk2, tmp_dir, log_dir=None): """Compare two apks Returns None if the apk content is the same (apart from the signing key), otherwise a string describing what's different, or what went wrong when trying to do the comparison. """ if not log_dir: log_dir = tmp_dir absapk1 = os.path.abspath(apk1) absapk2 = os.path.abspath(apk2) if set_command_in_config('diffoscope'): logfilename = os.path.join(log_dir, os.path.basename(absapk1)) htmlfile = logfilename + '.diffoscope.html' textfile = logfilename + '.diffoscope.txt' if subprocess.call([config['diffoscope'], '--max-report-size', '12345678', '--max-diff-block-lines', '128', '--html', htmlfile, '--text', textfile, absapk1, absapk2]) != 0: return("Failed to run diffoscope " + apk1) apk1dir = os.path.join(tmp_dir, apk_badchars.sub('_', apk1[0:-4])) # trim .apk apk2dir = os.path.join(tmp_dir, apk_badchars.sub('_', apk2[0:-4])) # trim .apk for d in [apk1dir, apk2dir]: if os.path.exists(d): shutil.rmtree(d) os.mkdir(d) os.mkdir(os.path.join(d, 'content')) # extract APK contents for comparision with ZipFile(absapk1, 'r') as f: f.extractall(path=os.path.join(apk1dir, 'content')) with ZipFile(absapk2, 'r') as f: f.extractall(path=os.path.join(apk2dir, 'content')) if set_command_in_config('apktool'): if subprocess.call([config['apktool'], 'd', absapk1, '--output', 'apktool'], cwd=apk1dir) != 0: return("Failed to run apktool " + apk1) if subprocess.call([config['apktool'], 'd', absapk2, '--output', 'apktool'], cwd=apk2dir) != 0: return("Failed to run apktool " + apk2) p = FDroidPopen(['diff', '-r', apk1dir, apk2dir], output=False) lines = p.output.splitlines() if len(lines) != 1 or 'META-INF' not in lines[0]: if set_command_in_config('meld'): p = FDroidPopen([config['meld'], apk1dir, apk2dir], output=False) return("Unexpected diff output:\n" + p.output) # since everything verifies, delete the comparison to keep cruft down shutil.rmtree(apk1dir) shutil.rmtree(apk2dir) # If we get here, it seems like they're the same! return None def set_command_in_config(command): '''Try to find specified command in the path, if it hasn't been manually set in config.py. If found, it is added to the config dict. The return value says whether the command is available. ''' if command in config: return True else: tmp = find_command(command) if tmp is not None: config[command] = tmp return True return False def find_command(command): '''find the full path of a command, or None if it can't be found in the PATH''' def is_exe(fpath): return os.path.isfile(fpath) and os.access(fpath, os.X_OK) fpath, fname = os.path.split(command) if fpath: if is_exe(command): return command else: for path in os.environ["PATH"].split(os.pathsep): path = path.strip('"') exe_file = os.path.join(path, command) if is_exe(exe_file): return exe_file return None def genpassword(): '''generate a random password for when generating keys''' h = hashlib.sha256() h.update(os.urandom(16)) # salt h.update(socket.getfqdn().encode('utf-8')) passwd = base64.b64encode(h.digest()).strip() return passwd.decode('utf-8') def genkeystore(localconfig): """ Generate a new key with password provided in :param localconfig and add it to new keystore :return: hexed public key, public key fingerprint """ logging.info('Generating a new key in "' + localconfig['keystore'] + '"...') keystoredir = os.path.dirname(localconfig['keystore']) if keystoredir is None or keystoredir == '': keystoredir = os.path.join(os.getcwd(), keystoredir) if not os.path.exists(keystoredir): os.makedirs(keystoredir, mode=0o700) env_vars = { 'FDROID_KEY_STORE_PASS': localconfig['keystorepass'], 'FDROID_KEY_PASS': localconfig['keypass'], } p = FDroidPopen([config['keytool'], '-genkey', '-keystore', localconfig['keystore'], '-alias', localconfig['repo_keyalias'], '-keyalg', 'RSA', '-keysize', '4096', '-sigalg', 'SHA256withRSA', '-validity', '10000', '-storepass:env', 'FDROID_KEY_STORE_PASS', '-keypass:env', 'FDROID_KEY_PASS', '-dname', localconfig['keydname']], envs=env_vars) if p.returncode != 0: raise BuildException("Failed to generate key", p.output) os.chmod(localconfig['keystore'], 0o0600) if not options.quiet: # now show the lovely key that was just generated p = FDroidPopen([config['keytool'], '-list', '-v', '-keystore', localconfig['keystore'], '-alias', localconfig['repo_keyalias'], '-storepass:env', 'FDROID_KEY_STORE_PASS'], envs=env_vars) logging.info(p.output.strip() + '\n\n') # get the public key p = FDroidPopenBytes([config['keytool'], '-exportcert', '-keystore', localconfig['keystore'], '-alias', localconfig['repo_keyalias'], '-storepass:env', 'FDROID_KEY_STORE_PASS'] + config['smartcardoptions'], envs=env_vars, output=False, stderr_to_stdout=False) if p.returncode != 0 or len(p.output) < 20: raise BuildException("Failed to get public key", p.output) pubkey = p.output fingerprint = get_cert_fingerprint(pubkey) return hexlify(pubkey), fingerprint def get_cert_fingerprint(pubkey): """ Generate a certificate fingerprint the same way keytool does it (but with slightly different formatting) """ digest = hashlib.sha256(pubkey).digest() ret = [' '.join("%02X" % b for b in bytearray(digest))] return " ".join(ret) def get_certificate(certificate_file): """ Extracts a certificate from the given file. :param certificate_file: file bytes (as string) representing the certificate :return: A binary representation of the certificate's public key, or None in case of error """ content = decoder.decode(certificate_file, asn1Spec=rfc2315.ContentInfo())[0] if content.getComponentByName('contentType') != rfc2315.signedData: return None content = decoder.decode(content.getComponentByName('content'), asn1Spec=rfc2315.SignedData())[0] try: certificates = content.getComponentByName('certificates') cert = certificates[0].getComponentByName('certificate') except PyAsn1Error: logging.error("Certificates not found.") return None return encoder.encode(cert) def load_stats_fdroid_signing_key_fingerprints(): """Load list of signing-key fingerprints stored by fdroid publish from file. :returns: list of dictionanryies containing the singing-key fingerprints. """ jar_file = os.path.join('stats', 'publishsigkeys.jar') if not os.path.isfile(jar_file): return {} cmd = [config['jarsigner'], '-strict', '-verify', jar_file] p = FDroidPopen(cmd, output=False) if p.returncode != 4: raise FDroidException("Signature validation of '{}' failed! " "Please run publish again to rebuild this file.".format(jar_file)) jar_sigkey = apk_signer_fingerprint(jar_file) repo_key_sig = config.get('repo_key_sha256') if repo_key_sig: if jar_sigkey != repo_key_sig: raise FDroidException("Signature key fingerprint of file '{}' does not match repo_key_sha256 in config.py (found fingerprint: '{}')".format(jar_file, jar_sigkey)) else: logging.warning("repo_key_sha256 not in config.py, setting it to the signature key fingerprint of '{}'".format(jar_file)) config['repo_key_sha256'] = jar_sigkey write_to_config(config, 'repo_key_sha256') with zipfile.ZipFile(jar_file, 'r') as f: return json.loads(str(f.read('publishsigkeys.json'), 'utf-8')) def write_to_config(thisconfig, key, value=None, config_file=None): '''write a key/value to the local config.py NOTE: only supports writing string variables. :param thisconfig: config dictionary :param key: variable name in config.py to be overwritten/added :param value: optional value to be written, instead of fetched from 'thisconfig' dictionary. ''' if value is None: origkey = key + '_orig' value = thisconfig[origkey] if origkey in thisconfig else thisconfig[key] cfg = config_file if config_file else 'config.py' # load config file, create one if it doesn't exist if not os.path.exists(cfg): open(cfg, 'a').close() logging.info("Creating empty " + cfg) with open(cfg, 'r', encoding="utf-8") as f: lines = f.readlines() # make sure the file ends with a carraige return if len(lines) > 0: if not lines[-1].endswith('\n'): lines[-1] += '\n' # regex for finding and replacing python string variable # definitions/initializations pattern = re.compile(r'^[\s#]*' + key + r'\s*=\s*"[^"]*"') repl = key + ' = "' + value + '"' pattern2 = re.compile(r'^[\s#]*' + key + r"\s*=\s*'[^']*'") repl2 = key + " = '" + value + "'" # If we replaced this line once, we make sure won't be a # second instance of this line for this key in the document. didRepl = False # edit config file with open(cfg, 'w', encoding="utf-8") as f: for line in lines: if pattern.match(line) or pattern2.match(line): if not didRepl: line = pattern.sub(repl, line) line = pattern2.sub(repl2, line) f.write(line) didRepl = True else: f.write(line) if not didRepl: f.write('\n') f.write(repl) f.write('\n') def parse_xml(path): return XMLElementTree.parse(path).getroot() def string_is_integer(string): try: int(string) return True except ValueError: return False def local_rsync(options, fromdir, todir): '''Rsync method for local to local copying of things This is an rsync wrapper with all the settings for safe use within the various fdroidserver use cases. This uses stricter rsync checking on all files since people using offline mode are already prioritizing security above ease and speed. ''' rsyncargs = ['rsync', '--recursive', '--safe-links', '--times', '--perms', '--one-file-system', '--delete', '--chmod=Da+rx,Fa-x,a+r,u+w'] if not options.no_checksum: rsyncargs.append('--checksum') if options.verbose: rsyncargs += ['--verbose'] if options.quiet: rsyncargs += ['--quiet'] logging.debug(' '.join(rsyncargs + [fromdir, todir])) if subprocess.call(rsyncargs + [fromdir, todir]) != 0: raise FDroidException() def get_per_app_repos(): '''per-app repos are dirs named with the packageName of a single app''' # Android packageNames are Java packages, they may contain uppercase or # lowercase letters ('A' through 'Z'), numbers, and underscores # ('_'). However, individual package name parts may only start with # letters. https://developer.android.com/guide/topics/manifest/manifest-element.html#package p = re.compile('^([a-zA-Z][a-zA-Z0-9_]*(\\.[a-zA-Z][a-zA-Z0-9_]*)*)?$') repos = [] for root, dirs, files in os.walk(os.getcwd()): for d in dirs: print('checking', root, 'for', d) if d in ('archive', 'metadata', 'repo', 'srclibs', 'tmp'): # standard parts of an fdroid repo, so never packageNames continue elif p.match(d) \ and os.path.exists(os.path.join(d, 'fdroid', 'repo', 'index.jar')): repos.append(d) break return repos def is_repo_file(filename): '''Whether the file in a repo is a build product to be delivered to users''' if isinstance(filename, str): filename = filename.encode('utf-8', errors="surrogateescape") return os.path.isfile(filename) \ and not filename.endswith(b'.asc') \ and not filename.endswith(b'.sig') \ and os.path.basename(filename) not in [ b'index.jar', b'index_unsigned.jar', b'index.xml', b'index.html', b'index-v1.jar', b'index-v1.json', b'categories.txt', ] def get_examples_dir(): '''Return the dir where the fdroidserver example files are available''' examplesdir = None tmp = os.path.dirname(sys.argv[0]) if os.path.basename(tmp) == 'bin': egg_links = glob.glob(os.path.join(tmp, '..', 'local/lib/python3.*/site-packages/fdroidserver.egg-link')) if egg_links: # installed from local git repo examplesdir = os.path.join(open(egg_links[0]).readline().rstrip(), 'examples') else: # try .egg layout examplesdir = os.path.dirname(os.path.dirname(__file__)) + '/share/doc/fdroidserver/examples' if not os.path.exists(examplesdir): # use UNIX layout examplesdir = os.path.dirname(tmp) + '/share/doc/fdroidserver/examples' else: # we're running straight out of the git repo prefix = os.path.normpath(os.path.join(os.path.dirname(__file__), '..')) examplesdir = prefix + '/examples' return examplesdir def get_wiki_timestamp(timestamp=None): """Return current time in the standard format for posting to the wiki""" if timestamp is None: timestamp = time.gmtime() return time.strftime("%Y-%m-%d %H:%M:%SZ", timestamp) def get_android_tools_versions(ndk_path=None): '''get a list of the versions of all installed Android SDK/NDK components''' global config sdk_path = config['sdk_path'] if sdk_path[-1] != '/': sdk_path += '/' components = [] if ndk_path: ndk_release_txt = os.path.join(ndk_path, 'RELEASE.TXT') if os.path.isfile(ndk_release_txt): with open(ndk_release_txt, 'r') as fp: components.append((os.path.basename(ndk_path), fp.read()[:-1])) pattern = re.compile('^Pkg.Revision=(.+)', re.MULTILINE) for root, dirs, files in os.walk(sdk_path): if 'source.properties' in files: source_properties = os.path.join(root, 'source.properties') with open(source_properties, 'r') as fp: m = pattern.search(fp.read()) if m: components.append((root[len(sdk_path):], m.group(1))) return components def get_android_tools_version_log(ndk_path=None): '''get a list of the versions of all installed Android SDK/NDK components''' log = '== Installed Android Tools ==\n\n' components = get_android_tools_versions(ndk_path) for name, version in sorted(components): log += '* ' + name + ' (' + version + ')\n' return log def get_git_describe_link(): """Get a link to the current fdroiddata commit, to post to the wiki """ try: output = subprocess.check_output(['git', 'describe', '--always', '--dirty', '--abbrev=0'], universal_newlines=True).strip() except subprocess.CalledProcessError: pass if output: commit = output.replace('-dirty', '') return ('* fdroiddata: [https://gitlab.com/fdroid/fdroiddata/commit/{commit} {id}]\n' .format(commit=commit, id=output)) else: logging.error(_("'{path}' failed to execute!").format(path='git describe')) return '' def calculate_math_string(expr): ops = {ast.Add: operator.add, ast.Sub: operator.sub, ast.Mult: operator.mul} def execute_ast(node): if isinstance(node, ast.Num): # return node.n elif isinstance(node, ast.BinOp): # return ops[type(node.op)](execute_ast(node.left), execute_ast(node.right)) elif isinstance(node, ast.UnaryOp): # e.g., -1 return ops[type(node.op)](eval(node.operand)) else: raise SyntaxError(node) try: if '#' in expr: raise SyntaxError('no comments allowed') return execute_ast(ast.parse(expr, mode='eval').body) except SyntaxError: raise SyntaxError("could not parse expression '{expr}', " "only basic math operations are allowed (+, -, *)" .format(expr=expr)) fdroidserver-1.0.9/fdroidserver/signatures.py0000664000175000017500000000721013303240575021363 0ustar hanshans00000000000000#!/usr/bin/env python3 # # Copyright (C) 2017, Michael Poehn # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . from argparse import ArgumentParser import re import os import sys import logging from . import _ from . import common from . import net from .exception import FDroidException def extract_signature(apkpath): if not os.path.exists(apkpath): raise FDroidException("file APK does not exists '{}'".format(apkpath)) if not common.verify_apk_signature(apkpath): raise FDroidException("no valid signature in '{}'".format(apkpath)) logging.debug('signature okay: %s', apkpath) appid, vercode, _ignored = common.get_apk_id(apkpath) sigdir = common.metadata_get_sigdir(appid, vercode) if not os.path.exists(sigdir): os.makedirs(sigdir) common.apk_extract_signatures(apkpath, sigdir) return sigdir def extract(options): # Create tmp dir if missing… tmp_dir = 'tmp' if not os.path.exists(tmp_dir): os.mkdir(tmp_dir) if not options.APK or len(options.APK) <= 0: logging.critical(_('no APK supplied')) sys.exit(1) # iterate over supplied APKs downlaod and extract them… httpre = re.compile(r'https?:\/\/') for apk in options.APK: try: if os.path.isfile(apk): sigdir = extract_signature(apk) logging.info(_("Fetched signatures for '{apkfilename}' -> '{sigdir}'") .format(apkfilename=apk, sigdir=sigdir)) elif httpre.match(apk): if apk.startswith('https') or options.no_check_https: try: tmp_apk = os.path.join(tmp_dir, 'signed.apk') net.download_file(apk, tmp_apk) sigdir = extract_signature(tmp_apk) logging.info(_("Fetched signatures for '{apkfilename}' -> '{sigdir}'") .format(apkfilename=apk, sigdir=sigdir)) finally: if tmp_apk and os.path.exists(tmp_apk): os.remove(tmp_apk) else: logging.warn(_('refuse downloading via insecure HTTP connection (use HTTPS or specify --no-https-check): {apkfilename}').format(apkfilename=apk)) except FDroidException as e: logging.warning(_("Failed fetching signatures for '{apkfilename}': {error}") .format(apkfilename=apk, error=e)) if e.detail: logging.debug(e.detail) def main(): global config, options # Parse command line... parser = ArgumentParser(usage="%(prog)s [options] APK [APK...]") common.setup_global_opts(parser) parser.add_argument("APK", nargs='*', help=_("signed APK, either a file-path or HTTPS URL.")) parser.add_argument("--no-check-https", action="store_true", default=False) options = parser.parse_args() # Read config.py... config = common.read_config(options) extract(config, options) fdroidserver-1.0.9/setup.cfg0000664000175000017500000000105613324115531015746 0ustar hanshans00000000000000[aliases] release = versioncheck compile_catalog register sdist upload --sign [extract_messages] keywords = _ charset = UTF-8 sort_output = true no_location = true add-comments = true output_file = locale/fdroidserver.pot msgid-bugs-address = https://gitlab.com/fdroid/fdroidserver/issues [update_catalog] output_dir = locale input_file = locale/fdroidserver.pot [init_catalog] input_file = locale/fdroidserver.pot output_dir = locale [compile_catalog] domain = fdroidserver directory = locale [egg_info] tag_svn_revision = 0 tag_date = 0 tag_build = fdroidserver-1.0.9/jenkins-test0000775000175000017500000001054013303240575016473 0ustar hanshans00000000000000#!/bin/bash # # this is the script run by the Jenkins server to run the tools tests. Be # sure to always run it in its dir, i.e. ./jenkins-test, otherwise it might # remove things that you don't want it to. # # runs here: # https://jenkins.debian.net/job/reproducible_fdroid_test if [ `dirname $0` != "." ]; then echo "only run this script like ./`basename $0`" exit fi # jenkins.debian.net slaves do not export WORKSPACE if [ -z $WORKSPACE ]; then export WORKSPACE=`pwd` fi set -e set -x # set up Android SDK to use the Debian packages in stretch export ANDROID_HOME=/usr/lib/android-sdk rm -rf "$WORKSPACE/.testfiles" cd tests ./run-tests $WORKSPACE/fdroiddata/repo # this is set up and managed by jenkins-build-all cd $WORKSPACE/fdroiddata rm -f config.py keystore.jks ../fdroid init --verbose export GNUPGHOME=$WORKSPACE/tests/gnupghome if [ ! -e $GNUPGHOME/private-keys-v1.d ]; then mkdir -p $GNUPGHOME/private-keys-v1.d chmod 0700 $GNUPGHOME/private-keys-v1.d fi gpg --import $GNUPGHOME/secring.gpg echo "build_server_always = True" >> config.py echo "make_current_version_link = False" >> config.py echo "gpghome = '$GNUPGHOME'" >> config.py echo "gpgkey = 'CE71F7FB'" >> config.py chmod 0600 config.py sed -i '/\s*repo_key_sha256\s*=.*/d' config.py # publish process when building and signing are on separate machines test -d repo || mkdir repo test -d archive || mkdir archive # when everything is copied over to run on SIGN machine ../fdroid publish ../fdroid gpgsign # when everything is copied over to run on BUILD machine, # which does not have a keyring, only a cached pubkey echo "repo_pubkey = '308204e1308202c9a003020102020434597643300d06092a864886f70d01010b050030213110300e060355040b1307462d44726f6964310d300b06035504031304736f7661301e170d3136303931333230313930395a170d3434303133303230313930395a30213110300e060355040b1307462d44726f6964310d300b06035504031304736f766130820222300d06092a864886f70d01010105000382020f003082020a028202010086ef94b5aacf2ba4f38c875f4194b44f5644392e3715575d7c92828577e692c352b567172823851c8c72347fbc9d99684cd7ca3e1db3e4cca126382c53f2a5869fb4c19bdec989b2930501af3e758ff40588915fe96b10076ce3346a193a0277d79e83e30fd8657c20e35260dd085aa32eac7c4b85786ffefbf1555cafe2bc928443430cdbba48cfbe701e12ae86e676477932730d4fc7c00af820aef85038a5b4df084cf6470d110dc4c49ea1b749b80b34709d199b3db516b223625c5de4501e861f7d261b3838f8f616aa78831d618d41d25872dc810c9b2087b5a9e146ca95be740316dcdbcb77314e23ab87d4487913b800b1113c0603ea2294188b71d3e49875df097b56f9151211fc6832f9790c5c83d17481f14ad37915fd164f4fd713f6732a15f4245714b84cd665bdbd085660ea33ad7d7095dcc414f09e3903604a40facc2314a115c0045bb50e9df38efb57e1b8e7cc105f340a26eeb46aba0fa6672953eee7f1f92dcb408e561909bbd4bdf4a4948c4d57c467d21aa238c34ba43be050398be963191fa2b49828bc1e4eeed224b40dbe9dc3e570890a71a974a2f4527edb1b07105071755105edcb2af2f269facfb89180903a572a99b46456e80d4a01685a80b233278805f2c876678e731f4ec4f52075aeef6b2b023efbb8a3637ef507c4c37c27e428152ec1817fcba640ad601cb09f72f0fbe2d274a2410203010001a321301f301d0603551d0e04160414c28bf33dd5a9a17338e5b1d1a6edd8c7d141ed0b300d06092a864886f70d01010b0500038202010084e20458b2aafd7fc27146b0986f9324f4260f244920417a77c9bf15e2e2d22d2725bdd8093ec261c3779c3ca03312516506f9410075b90595b41345956d8eb2786fb5994f195611382c2b99dba13381b0100a30bc9e6e47248bf4325e2f6eec9d789216dc7536e753bf1f4be603d9fa2e6f5e192b4eb988b8cdb0bb1e8668a9225426f7d4636479f73ed24ad1d2657c31e63c93d9679b9080171b3bd1bf10a3b92b80bd790fbf62d3644900cd08eae8b9bf9c2567be98dc8cdd2ae19a8d57a3e3e2de899f81f1279f578989e6af906f80c8c2b67651730ee7e568c1af5bcb845b6d685dc55332a9984aeceaea3b7e883447edf1c76b155d95253e39b9710eaa22efa6c81468829702b5dce7126538f3ca70c2f0ad9a5795435fdb1f715f20d60359ef9a9926c7050116e802df651727447848827815f70bd82af3cedd08783156102d2d8ce995c4c43b8e47e91a3e6927f3505a5d395e6bebb84542c570903eeab4382a1c2151f1471c7a06a34dc4d268d8fa72e93bdcd2dccc4302ecac47b9e7e3d8bc9b46d21cd097874a24d529548018dc190ff568c6aa428f0a5eedff1a347730931c74f19277538e49647a4ad7254f4c1ec7d4da12cce9e1fad9607534e66ab40a56b473d9d7e3d563fd03cad2052bad365c5a29f8ae54f09b60dbca3ea768d7767cbe1c133ca08ce725c1c1370f4aab8e5b6e286f52dc0be8d0982b5a'" >> config.py ../fdroid update --nosign sed -i '/^repo_pubkey = /d' config.py # when everything is copied over to run on SIGN machine ../fdroid signindex --verbose ../fdroid rewritemeta --quiet git --no-pager diff git status ls -lR cache || true ../fdroid checkupdates --auto --autoonly --commit fdroidserver-1.0.9/LICENSE0000664000175000017500000010333013243530567015142 0ustar hanshans00000000000000 GNU AFFERO GENERAL PUBLIC LICENSE Version 3, 19 November 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU Affero General Public License is a free, copyleft license for software and other kinds of works, specifically designed to ensure cooperation with the community in the case of network server software. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, our General Public Licenses are intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. Developers that use our General Public Licenses protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License which gives you legal permission to copy, distribute and/or modify the software. A secondary benefit of defending all users' freedom is that improvements made in alternate versions of the program, if they receive widespread use, become available for other developers to incorporate. Many developers of free software are heartened and encouraged by the resulting cooperation. However, in the case of software used on network servers, this result may fail to come about. The GNU General Public License permits making a modified version and letting the public access it on a server without ever releasing its source code to the public. The GNU Affero General Public License is designed specifically to ensure that, in such cases, the modified source code becomes available to the community. It requires the operator of a network server to provide the source code of the modified version running there to the users of that server. Therefore, public use of a modified version, on a publicly accessible server, gives the public access to the source code of the modified version. An older license, called the Affero General Public License and published by Affero, was designed to accomplish similar goals. This is a different license, not a version of the Affero GPL, but Affero has released a new version of the Affero GPL which permits relicensing under this license. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU Affero General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Remote Network Interaction; Use with the GNU General Public License. Notwithstanding any other provision of this License, if you modify the Program, your modified version must prominently offer all users interacting with it remotely through a computer network (if your version supports such interaction) an opportunity to receive the Corresponding Source of your version by providing access to the Corresponding Source from a network server at no charge, through some standard or customary means of facilitating copying of software. This Corresponding Source shall include the Corresponding Source for any work covered by version 3 of the GNU General Public License that is incorporated pursuant to the following paragraph. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the work with which it is combined will remain governed by version 3 of the GNU General Public License. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU Affero General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU Affero General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU Affero General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU Affero General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. If your software can interact with users remotely through a computer network, you should also make sure that it provides a way for users to get its source. For example, if your program is a web application, its interface could display a "Source" link that leads users to an archive of the code. There are many ways you could offer source, and different solutions will be better for different programs; see section 13 for the specific requirements. You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU AGPL, see . fdroidserver-1.0.9/README.md0000664000175000017500000001153513303240575015413 0ustar hanshans00000000000000 | CI Builds | fdroidserver | buildserver | fdroid build --all | publishing tools | |--------------------------|:-------------:|:-----------:|:------------------:|:----------------:| | Debian | [![fdroidserver status on Debian](https://gitlab.com/fdroid/fdroidserver/badges/master/build.svg)](https://gitlab.com/fdroid/fdroidserver/builds) | [![buildserver status](https://jenkins.debian.net/job/reproducible_setup_fdroid_build_environment/badge/icon)](https://jenkins.debian.net/job/reproducible_setup_fdroid_build_environment) | [![fdroid build all status](https://jenkins.debian.net/job/reproducible_fdroid_build_apps/badge/icon)](https://jenkins.debian.net/job/reproducible_fdroid_build_apps/) | [![fdroid test status](https://jenkins.debian.net/job/reproducible_fdroid_test/badge/icon)](https://jenkins.debian.net/job/reproducible_fdroid_test/) | | macOS & Ubuntu/LTS | [![fdroidserver status on macOS & Ubuntu/LTS](https://travis-ci.org/f-droid/fdroidserver.svg?branch=master)](https://travis-ci.org/f-droid/fdroidserver) | | | | # F-Droid Server Server for [F-Droid](https://f-droid.org), the Free Software repository system for Android. The F-Droid server tools provide various scripts and tools that are used to maintain the main [F-Droid application repository](https://f-droid.org/packages). You can use these same tools to create your own additional or alternative repository for publishing, or to assist in creating, testing and submitting metadata to the main repository. For documentation, please see , or you can find the source for the documentation in [fdroid/fdroid-website](https://gitlab.com/fdroid/fdroid-website). ### What is F-Droid? F-Droid is an installable catalogue of FOSS (Free and Open Source Software) applications for the Android platform. The client makes it easy to browse, install, and keep track of updates on your device. ### Installing There are many ways to install _fdroidserver_, they are documented on the website: https://f-droid.org/docs/Installing_the_Server_and_Repo_Tools All sorts of other documentation lives there as well. ### Tests There are many components to all of the tests for the components in this git repo. The most commonly used parts of well tested, while some parts still lack tests. This test suite has built over time a bit haphazardly, so it is not as clean, organized, or complete as it could be. We welcome contributions. Before rearchitecting any parts of it, be sure to [contact us](https://f-droid.org/about) to discuss the changes beforehand. #### `fdroid` commands The test suite for all of the `fdroid` commands is in the _tests/_ subdir. _.gitlab-ci.yml_ and _.travis.yml_ run this test suite on various configurations. * _tests/complete-ci-tests_ runs _pylint_ and all tests on two different pyvenvs * _tests/run-tests_ runs the whole test suite * _tests/*.TestCase_ are individual unit tests for all of the `fdroid` commands, which can be run separately, e.g. `./update.TestCase`. #### Additional tests for different linux distributions These tests are also run on various distributions through GitLab CI. This is only enabled for `master@fdroid/fdroidserver` because it'll take longer to complete than the regular CI tests. Most of the time you won't need to worry about them but sometimes it might make sense to also run them for your merge request. In that case you need to remove [these lines from .gitlab-ci.yml](https://gitlab.com/fdroid/fdroidserver/blob/master/.gitlab-ci.yml#L34-35) and push this to a new branch of your fork. Alternatively [run them locally](https://docs.gitlab.com/runner/commands/README.html#gitlab-runner-exec) like this: `gitlab-runner exec docker ubuntu_lts` #### buildserver The tests for the whole build server setup are entirely separate because they require at least 200GB of disk space, and 8GB of RAM. These test scripts are in the root of the project, all starting with _jenkins-_ since they are run on https://jenkins.debian.net. ### Drozer Scanner There is a new feature under development that can scan any APK in a repo, or any build, using Drozer. Drozer is a dynamic exploit scanner, it runs an app in the emulator and runs known exploits on it. This setup requires specific versions of two Python modules: _docker-py_ 1.9.0 and _requests_ older than 2.11. Other versions might cause the docker-py connection to break with the containers. Newer versions of docker-py might have this fixed already. For Debian based distributions: apt-get install libffi-dev libssl-dev python-docker ## Translation Everything can be translated. See [Translation and Localization](https://f-droid.org/docs/Translation_and_Localization) for more info. [![translation status](https://hosted.weblate.org/widgets/f-droid/-/fdroidserver/multi-auto.svg)](https://hosted.weblate.org/engage/f-droid/?utm_source=widget) fdroidserver-1.0.9/.pylint-rcfile0000664000175000017500000000260413243530516016713 0ustar hanshans00000000000000[MASTER] # Use multiple processes to speed up Pylint. jobs=4 # 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=HIGH,INFERENCE # 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=invalid-name,missing-docstring,no-member [MISCELLANEOUS] # List of note tags to take in consideration, separated by a comma. notes=FIXME,XXX,TODO [BASIC] # Good variable names which should always be accepted, separated by a comma good-names=i,j,k,ex,Run,_,e,f,fp [ELIF] # Maximum number of nested blocks for function / method body max-nested-blocks=5 fdroidserver-1.0.9/setup.py0000775000175000017500000000636013323655300015647 0ustar hanshans00000000000000#!/usr/bin/env python3 from setuptools import Command from setuptools import setup import os import re import subprocess import sys class VersionCheckCommand(Command): """Make sure git tag and version match before uploading""" user_options = [] def initialize_options(self): """Abstract method that is required to be overwritten""" def finalize_options(self): """Abstract method that is required to be overwritten""" def run(self): version = self.distribution.get_version() version_git = subprocess.check_output(['git', 'describe', '--tags', '--always']).rstrip().decode('utf-8') if version != version_git: print('ERROR: Release version mismatch! setup.py (%s) does not match git (%s)' % (version, version_git)) sys.exit(1) print('Upload using: twine upload dist/fdroidserver*.tar.gz*') def get_data_files(): # workaround issue on OSX or --user installs, where sys.prefix is not an installable location if os.access(sys.prefix, os.W_OK | os.X_OK): data_prefix = sys.prefix else: data_prefix = '.' data_files = [] with open('MANIFEST.in') as fp: data = fp.read() data_files.append((data_prefix + '/share/doc/fdroidserver/examples', ['buildserver/config.buildserver.py', ] + re.findall(r'include (examples/.*)', data))) for f in re.findall(r'include (locale/[a-z][a-z][a-zA-Z_]*/LC_MESSAGES/fdroidserver.mo)', data): d = os.path.join(data_prefix, 'share', os.path.dirname(f)) data_files.append((d, [f, ])) return data_files setup(name='fdroidserver', version='1.0.9', description='F-Droid Server Tools', long_description='README.md', long_description_content_type='text/markdown', author='The F-Droid Project', author_email='team@f-droid.org', url='https://f-droid.org', license='AGPL-3.0', packages=['fdroidserver', 'fdroidserver.asynchronousfilereader'], scripts=['fdroid', 'makebuildserver'], data_files=get_data_files(), python_requires='>=3.4', cmdclass={'versioncheck': VersionCheckCommand}, setup_requires=[ 'babel', ], install_requires=[ 'androguard >= 3.1.0rc2', 'clint', 'GitPython', 'mwclient', 'paramiko', 'Pillow', 'apache-libcloud >= 0.14.1', 'pyasn1 <0.5.0, >=0.4.1', 'pyasn1-modules == 0.2.1', 'python-vagrant', 'PyYAML', 'qrcode', 'ruamel.yaml >= 0.13', 'requests >= 2.5.2, != 2.11.0, != 2.12.2, != 2.18.0', 'docker-py >= 1.9, < 2.0', ], classifiers=[ 'Development Status :: 4 - Beta', 'Intended Audience :: Developers', 'Intended Audience :: Information Technology', 'Intended Audience :: System Administrators', 'Intended Audience :: Telecommunications Industry', 'License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+)', 'Operating System :: POSIX', 'Operating System :: MacOS :: MacOS X', 'Operating System :: Unix', 'Topic :: Utilities', ], ) fdroidserver-1.0.9/jenkins-setup-build-environment0000775000175000017500000000675413303240575022327 0ustar hanshans00000000000000#!/bin/bash # # runs here: # https://jenkins.debian.net/job/reproducible_setup_fdroid_build_environment if [ `dirname $0` != "." ]; then echo "only run this script like ./`basename $0`" exit fi if [ -z $WORKSPACE ]; then WORKSPACE=`pwd` fi # make sure that no VirtualBox processes are left running cleanup_all() { set +e echo "$(date -u) - cleanup in progress..." ps auxww | grep -e VBox -e qemu virsh --connect qemu:///system list --all ls -hl /var/lib/libvirt/images cd $WORKSPACE/buildserver vagrant halt sleep 5 killall VBoxHeadless sleep 5 killall -9 VBoxHeadless echo "$(date -u) - cleanup done." } trap cleanup_all INT TERM EXIT set -e set -x # make sure we have the vagrant box image cached test -e ~/.cache/fdroidserver || mkdir -p ~/.cache/fdroidserver cd ~/.cache/fdroidserver wget --tries=1 --timeout=5 --continue https://f-droid.org/jessie64.box || true echo "de3e3c4a9c13e8c015e30edeea0f583b195d1ee8ff9ad4814e933bbfb560200f jessie64.box" > jessie64.box.sha256 sha256sum -c jessie64.box.sha256 # redirect homes to be in the git repo, so they'll get cleaned and reset export XDG_CONFIG_HOME=$WORKSPACE export VBOX_USER_HOME=$WORKSPACE/VirtualBox mkdir $VBOX_USER_HOME if which VBoxManage; then VBoxManage setproperty machinefolder $WORKSPACE/virtualbox.d VBoxManage setproperty logginglevel debug fi export VAGRANT_HOME=$WORKSPACE/vagrant.d mkdir $VAGRANT_HOME # delete leftovers from previous run virsh -c qemu:///system undefine buildserver_default \ --nvram --managed-save --remove-all-storage --snapshots-metadata || true virsh -c qemu:///system undefine builder_default \ --nvram --managed-save --remove-all-storage --snapshots-metadata || true virsh -c qemu:///system vol-delete --pool default \ /var/lib/libvirt/images/buildserver_vagrant_box_image_0.img || true virsh -c qemu:///system vol-delete --pool default \ /var/lib/libvirt/images/jessie64_vagrant_box_image_0.img || true rm -rf "$WORKSPACE"/../*/.testfiles cd $WORKSPACE echo "debian_mirror = 'https://deb.debian.org/debian/'" > $WORKSPACE/makebuildserver.config.py echo "boot_timeout = 1200" >> $WORKSPACE/makebuildserver.config.py echo "apt_package_cache = True" >> $WORKSPACE/makebuildserver.config.py echo "copy_caches_from_host = True" >> $WORKSPACE/makebuildserver.config.py echo "memory = 6144" >> $WORKSPACE/makebuildserver.config.py echo "cpus = 2" >> $WORKSPACE/makebuildserver.config.py ./makebuildserver -vv --clean if [ -z "`vagrant box list | egrep '^buildserver\s+\((libvirt|virtualbox), [0-9]+\)$'`" ]; then vagrant box list echo "ERROR: buildserver box does not exist!" exit 1 fi # this can be handled in the jenkins job, or here: if [ -e fdroiddata ]; then cd fdroiddata while ! git fetch origin --tags --prune; do sleep 10; done git remote update -p git checkout master git reset --hard origin/master git clean -fdx cd .. else git clone --depth 1 https://gitlab.com/fdroid/fdroiddata.git fdroiddata fi cd fdroiddata echo "build_server_always = True" > config.py if [ -z $ANDROID_HOME ]; then if [ -e ~/.android/bashrc ]; then . ~/.android/bashrc else echo "ANDROID_HOME must be set!" exit 1 fi fi # if it can't build fdroid, then its really broken ../fdroid build --verbose --stop --latest org.fdroid.fdroid # Gradle, JNI, preassemble ../fdroid build --verbose --stop org.adaway:55 # building old versions should still work ../fdroid build --verbose --stop org.fdroid.fdroid:96150 fdroidserver-1.0.9/fdroid0000775000175000017500000001412413303240575015326 0ustar hanshans00000000000000#!/usr/bin/env python3 # # fdroid.py - part of the FDroid server tools # Copyright (C) 2010-2015, Ciaran Gultnieks, ciaran@ciarang.com # Copyright (C) 2013-2014 Daniel Marti # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . import sys import os import logging import fdroidserver.common import fdroidserver.metadata from fdroidserver import _ from argparse import ArgumentError from collections import OrderedDict commands = OrderedDict([ ("build", _("Build a package from source")), ("init", _("Quickly start a new repository")), ("publish", _("Sign and place packages in the repo")), ("gpgsign", _("Add PGP signatures using GnuPG for packages in repo")), ("update", _("Update repo information for new packages")), ("deploy", _("Interact with the repo HTTP server")), ("verify", _("Verify the integrity of downloaded packages")), ("checkupdates", _("Check for updates to applications")), ("import", _("Add a new application from its source code")), ("install", _("Install built packages on devices")), ("readmeta", _("Read all the metadata files and exit")), ("rewritemeta", _("Rewrite all the metadata files")), ("lint", _("Warn about possible metadata errors")), ("scanner", _("Scan the source code of a package")), ("dscanner", _("Dynamically scan APKs post build")), ("stats", _("Update the stats of the repo")), ("server", _("Old, deprecated name for fdroid deploy")), ("signindex", _("Sign indexes created using update --nosign")), ("btlog", _("Update the binary transparency log for a URL")), ("signatures", _("Extract signatures from APKs")), ("nightly", _("Set up an app build for a nightly build repo")), ("mirror", _("Download complete mirrors of small repos")), ]) def print_help(): print(_("usage: ") + _("fdroid [] [-h|--help|--version|]")) print("") print(_("Valid commands are:")) for cmd, summary in commands.items(): print(" " + cmd + ' ' * (15 - len(cmd)) + summary) print("") def main(): if len(sys.argv) <= 1: print_help() sys.exit(0) command = sys.argv[1] if command not in commands: if command in ('-h', '--help'): print_help() sys.exit(0) elif command == '--version': output = _('no version info found!') cmddir = os.path.realpath(os.path.dirname(__file__)) moduledir = os.path.realpath(os.path.dirname(fdroidserver.common.__file__) + '/..') if cmddir == moduledir: # running from git os.chdir(cmddir) if os.path.isdir('.git'): import subprocess try: output = subprocess.check_output(['git', 'describe'], stderr=subprocess.STDOUT, universal_newlines=True) except subprocess.CalledProcessError: output = 'git commit ' + subprocess.check_output(['git', 'rev-parse', 'HEAD'], universal_newlines=True) elif os.path.exists('setup.py'): import re m = re.search(r'''.*[\s,\(]+version\s*=\s*["']([0-9a-z.]+)["'].*''', open('setup.py').read(), flags=re.MULTILINE) if m: output = m.group(1) + '\n' else: from pkg_resources import get_distribution output = get_distribution('fdroidserver').version + '\n' print(output), sys.exit(0) else: print(_("Command '%s' not recognised.\n" % command)) print_help() sys.exit(1) verbose = any(s in sys.argv for s in ['-v', '--verbose']) quiet = any(s in sys.argv for s in ['-q', '--quiet']) # Helpful to differentiate warnings from errors even when on quiet logformat = '%(levelname)s: %(message)s' loglevel = logging.INFO if verbose: loglevel = logging.DEBUG elif quiet: loglevel = logging.WARN logging.basicConfig(format=logformat, level=loglevel) if verbose and quiet: logging.critical("Specifying --verbose and --quiet and the same time is silly") sys.exit(1) # temporary workaround until server.py becomes deploy.py if command == 'deploy': command = 'server' sys.argv.insert(2, 'update') # Trick optparse into displaying the right usage when --help is used. sys.argv[0] += ' ' + command del sys.argv[1] mod = __import__('fdroidserver.' + command, None, None, [command]) try: mod.main() # These are ours, contain a proper message and are "expected" except (fdroidserver.common.FDroidException, fdroidserver.metadata.MetaDataException) as e: if verbose: raise else: logging.critical(str(e)) sys.exit(1) except ArgumentError as e: logging.critical(str(e)) sys.exit(1) except KeyboardInterrupt: print('') sys.stdout.flush() sys.stderr.flush() os._exit(1) # These should only be unexpected crashes due to bugs in the code # str(e) often doesn't contain a reason, so just show the backtrace except Exception as e: logging.critical(_("Unknown exception found!")) raise e sys.exit(0) if __name__ == "__main__": main() fdroidserver-1.0.9/docker/0000775000175000017500000000000013324115531015372 5ustar hanshans00000000000000fdroidserver-1.0.9/docker/Dockerfile0000664000175000017500000001461213243530567017402 0ustar hanshans00000000000000# This image is intended to be used with fdroidserver for the purpose # of dynamic scanning of pre-built APKs during the fdroid build process. # Start with ubuntu 12.04 (i386). FROM ubuntu:14.04 MAINTAINER fdroid.dscanner ENV DROZER_URL https://github.com/mwrlabs/drozer/releases/download/2.3.4/drozer_2.3.4.deb ENV DROZER_DEB drozer_2.3.4.deb ENV AGENT_URL https://github.com/mwrlabs/drozer/releases/download/2.3.4/drozer-agent-2.3.4.apk ENV AGENT_APK drozer-agent-2.3.4.apk # Specially for SSH access and port redirection ENV ROOTPASSWORD android # Expose ADB, ADB control and VNC ports EXPOSE 22 EXPOSE 5037 EXPOSE 5554 EXPOSE 5555 EXPOSE 5900 EXPOSE 5901 ENV DEBIAN_FRONTEND noninteractive RUN echo "debconf shared/accepted-oracle-license-v1-1 select true" | debconf-set-selections RUN echo "debconf shared/accepted-oracle-license-v1-1 seen true" | debconf-set-selections # Update packages RUN apt-get -y update # Drozer packages RUN apt-get install wget python2.7 python-dev python2.7-dev python-openssl python-twisted python-protobuf bash-completion -y # First, install add-apt-repository, sshd and bzip2 RUN apt-get -y install python-software-properties bzip2 ssh net-tools # ubuntu 14.04 needs this too RUN apt-get -y install software-properties-common # Add oracle-jdk7 to repositories RUN add-apt-repository ppa:webupd8team/java # Make sure the package repository is up to date RUN echo "deb http://archive.ubuntu.com/ubuntu trusty main universe" > /etc/apt/sources.list # Update apt RUN apt-get update # Add drozer RUN useradd -ms /bin/bash drozer # Install oracle-jdk7 RUN apt-get -y install oracle-java7-installer # Install android sdk RUN wget http://dl.google.com/android/android-sdk_r23-linux.tgz RUN tar -xvzf android-sdk_r23-linux.tgz RUN mv -v android-sdk-linux /usr/local/android-sdk # Install apache ant RUN wget http://archive.apache.org/dist/ant/binaries/apache-ant-1.8.4-bin.tar.gz RUN tar -xvzf apache-ant-1.8.4-bin.tar.gz RUN mv -v apache-ant-1.8.4 /usr/local/apache-ant # Add android tools and platform tools to PATH ENV ANDROID_HOME /usr/local/android-sdk ENV PATH $PATH:$ANDROID_HOME/tools ENV PATH $PATH:$ANDROID_HOME/platform-tools # Add ant to PATH ENV ANT_HOME /usr/local/apache-ant ENV PATH $PATH:$ANT_HOME/bin # Export JAVA_HOME variable ENV JAVA_HOME /usr/lib/jvm/java-7-oracle # Remove compressed files. RUN cd /; rm android-sdk_r23-linux.tgz && rm apache-ant-1.8.4-bin.tar.gz # Some preparation before update RUN chown -R root:root /usr/local/android-sdk/ # Install latest android tools and system images RUN echo "y" | android update sdk --filter platform-tool --no-ui --force RUN echo "y" | android update sdk --filter platform --no-ui --force RUN echo "y" | android update sdk --filter build-tools-22.0.1 --no-ui -a RUN echo "y" | android update sdk --filter sys-img-x86-android-19 --no-ui -a #RUN echo "y" | android update sdk --filter sys-img-x86-android-21 --no-ui -a #RUN echo "y" | android update sdk --filter sys-img-x86-android-22 --no-ui -a RUN echo "y" | android update sdk --filter sys-img-armeabi-v7a-android-19 --no-ui -a #RUN echo "y" | android update sdk --filter sys-img-armeabi-v7a-android-21 --no-ui -a #RUN echo "y" | android update sdk --filter sys-img-armeabi-v7a-android-22 --no-ui -a # Update ADB RUN echo "y" | android update adb # Create fake keymap file RUN mkdir /usr/local/android-sdk/tools/keymaps RUN touch /usr/local/android-sdk/tools/keymaps/en-us # Run sshd RUN apt-get install -y openssh-server RUN mkdir /var/run/sshd RUN echo "root:$ROOTPASSWORD" | chpasswd RUN sed -i 's/PermitRootLogin without-password/PermitRootLogin yes/' /etc/ssh/sshd_config RUN sed -i 's/PermitEmptyPasswords no/PermitEmptyPasswords yes/' /etc/ssh/sshd_config # SSH login fix. Otherwise user is kicked off after login RUN sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd ENV NOTVISIBLE "in users profile" RUN echo "export VISIBLE=now" >> /etc/profile # Install socat RUN apt-get install -y socat # symlink android bins RUN ln -sv /usr/local/android-sdk/tools/android /usr/local/bin/ RUN ln -sv /usr/local/android-sdk/tools/emulator /usr/local/bin/ RUN ln -sv /usr/local/android-sdk/tools/ddms /usr/local/bin/ RUN ln -sv /usr/local/android-sdk/tools/scheenshot2 /usr/local/bin/ RUN ln -sv /usr/local/android-sdk/tools/monkeyrunner /usr/local/bin/ RUN ln -sv /usr/local/android-sdk/tools/monitor /usr/local/bin/ RUN ln -sv /usr/local/android-sdk/tools/mksdcard /usr/local/bin/ RUN ln -sv /usr/local/android-sdk/tools/uiautomatorviewer /usr/local/bin/ RUN ln -sv /usr/local/android-sdk/tools/traceview /usr/local/bin/ RUN ln -sv /usr/local/android-sdk/platform-tools/adb /usr/local/bin/ RUN ln -sv /usr/local/android-sdk/platform-tools/fastboot /usr/local/bin/ RUN ln -sv /usr/local/android-sdk/platform-tools/sqlite3 /usr/local/bin/ # Setup DROZER... # https://labs.mwrinfosecurity.com/tools/drozer/ # Run as drozer user WORKDIR /home/drozer # Site lists the shasums, however, I'm not sure the best way to integrate the # checks here. No real idiomatic way for Dockerfile to do that and most of # the examples online use chained commands but we want things to *BREAK* when # the sha doesn't match. So far, I can't seem to reliably make Docker not # finish the image build process. # Download the console RUN wget -c $DROZER_URL # Install the console RUN dpkg -i $DROZER_DEB # Download agent RUN wget -c $AGENT_URL # Keep it version agnostic for other scripts such as install_drozer.py RUN mv -v $AGENT_APK drozer-agent.apk # Port forwarding required by drozer RUN echo 'adb forward tcp:31415 tcp:31415' >> /home/drozer/.bashrc # Alias for Drozer RUN echo "alias drozer='drozer console connect'" >> /home/drozer/.bashrc # add extra scripting COPY install_agent.py /home/drozer/install_agent.py RUN chmod 755 /home/drozer/install_agent.py COPY enable_service.py /home/drozer/enable_service.py RUN chmod 755 /home/drozer/enable_service.py COPY drozer.py /home/drozer/drozer.py RUN chmod 755 /home/drozer/drozer.py # fix ownerships RUN chown -R drozer.drozer /home/drozer RUN apt-get -y --force-yes install python-pkg-resources=3.3-1ubuntu1 RUN apt-get -y install python-pip python-setuptools git RUN pip install "git+https://github.com/dtmilano/AndroidViewClient.git#egg=androidviewclient" RUN apt-get -y install python-pexpect # Add entrypoint COPY entrypoint.sh /home/drozer/entrypoint.sh RUN chmod +x /home/drozer/entrypoint.sh ENTRYPOINT ["/home/drozer/entrypoint.sh"] fdroidserver-1.0.9/docker/drozer.py0000664000175000017500000000236113272566407017271 0ustar hanshans00000000000000#!/usr/bin/env python2 import pexpect import sys prompt = "dz>" target = sys.argv[1] drozer = pexpect.spawn("drozer console connect") drozer.logfile = open("/tmp/drozer_report.log", "w") # start drozer.expect(prompt) def send_command(command, target): cmd = "run {0} -a {1}".format(command, target) drozer.sendline(cmd) drozer.expect(prompt) scanners = [ "scanner.misc.native", # Find native components included in packages #"scanner.misc.readablefiles", # Find world-readable files in the given folder #"scanner.misc.secretcodes", # Search for secret codes that can be used from the dialer #"scanner.misc.sflagbinaries", # Find suid/sgid binaries in the given folder (default is /system). #"scanner.misc.writablefiles", # Find world-writable files in the given folder "scanner.provider.finduris", # Search for content providers that can be queried. "scanner.provider.injection", # Test content providers for SQL injection vulnerabilities. "scanner.provider.sqltables", # Find tables accessible through SQL injection vulnerabilities. "scanner.provider.traversal" # Test content providers for basic directory traversal ] for scanner in scanners: send_command(scanner, target) fdroidserver-1.0.9/docker/entrypoint.sh0000775000175000017500000000237513272566407020171 0ustar hanshans00000000000000#!/bin/bash if [[ $EMULATOR == "" ]]; then EMULATOR="android-19" echo "Using default emulator $EMULATOR" fi if [[ $ARCH == "" ]]; then ARCH="x86" echo "Using default arch $ARCH" fi echo EMULATOR = "Requested API: ${EMULATOR} (${ARCH}) emulator." if [[ -n $1 ]]; then echo "Last line of file specified as non-opt/last argument:" tail -1 $1 fi # Run sshd /usr/sbin/sshd adb start-server # Detect ip and forward ADB ports outside to outside interface ip=$(ifconfig | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}') socat tcp-listen:5037,bind=$ip,fork tcp:127.0.0.1:5037 & socat tcp-listen:5554,bind=$ip,fork tcp:127.0.0.1:5554 & socat tcp-listen:5555,bind=$ip,fork tcp:127.0.0.1:5555 & # Set up and run emulator if [[ $ARCH == *"x86"* ]] then EMU="x86" else EMU="arm" fi #FASTDROID_VNC_URL="https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/fastdroid-vnc/fastdroid-vnc" #wget -c "${FASTDROID_VNC_URL}" export PATH="${PATH}:/usr/local/android-sdk/tools/:/usr/local/android-sdk/platform-tools/" echo "no" | android create avd -f -n test -t ${EMULATOR} --abi default/${ARCH} echo "no" | emulator64-${EMU} -avd test -noaudio -no-window -gpu off -verbose -qemu -usbdevice tablet -vnc :0 fdroidserver-1.0.9/docker/install_agent.py0000775000175000017500000000351113272566407020611 0ustar hanshans00000000000000#!/usr/bin/env python2 import os from subprocess import call, check_output from time import sleep FNULL = open(os.devnull, 'w') print("Ensuring device is online") call("adb wait-for-device", shell=True) print("Installing the drozer agent") print("If the device just came online it is likely the package manager hasn't booted.") print("Will try multiple attempts to install.") print("This may need tweaking depending on hardware.") attempts = 0 time_to_sleep = 30 while attempts < 8: output = check_output('adb shell "pm list packages"', shell=True) print("Checking whether the package manager is up...") if "Could not access the Package Manager" in output: print("Nope. Sleeping for 30 seconds and then trying again.") sleep(time_to_sleep) else: break time_to_sleep = 5 attempts = 0 while attempts < 5: sleep(time_to_sleep) try: install_output = check_output("adb install /home/drozer/drozer-agent.apk", shell=True) except Exception: print("Failed. Trying again.") attempts += 1 else: attempts += 1 if "Error: Could not access the Package Manager" not in install_output: break print("Install attempted. Checking everything worked") pm_list_output = check_output('adb shell "pm list packages"', shell=True) if "com.mwr.dz" not in pm_list_output: print(install_output) exit("APK didn't install properly. Exiting.") print("Installed ok.") print("Starting the drozer agent main activity: com.mwr.dz/.activities.MainActivity") call('adb shell "am start com.mwr.dz/.activities.MainActivity"', shell=True, stdout=FNULL) print("Starting the service") # start the service call("python /home/drozer/enable_service.py", shell=True, stdout=FNULL) print("Forward dem ports mon.") call("adb forward tcp:31415 tcp:31415", shell=True, stdout=FNULL) fdroidserver-1.0.9/docker/Makefile0000664000175000017500000000232213243530567017043 0ustar hanshans00000000000000SHELL := /bin/bash ALIAS = "dscanner" EXISTS := $(shell docker ps -a -q -f name=$(ALIAS)) RUNNED := $(shell docker ps -q -f name=$(ALIAS)) ifneq "$(RUNNED)" "" IP := $(shell docker inspect $(ALIAS) | grep "IPAddress\"" | head -n1 | cut -d '"' -f 4) endif STALE_IMAGES := $(shell docker images | grep "" | awk '{print($$3)}') EMULATOR ?= "android-19" ARCH ?= "armeabi-v7a" COLON := : .PHONY = build clean kill info all: help help: @echo "usage: make {help|build|clean|kill|info}" @echo "" @echo " help this help screen" @echo " build create docker image" @echo " clean remove images and containers" @echo " kill stop running containers" @echo " info details of running container" build: @docker build -t "dscanner/fdroidserver:latest" . clean: kill @docker ps -a -q | xargs -n 1 -I {} docker rm -f {} ifneq "$(STALE_IMAGES)" "" @docker rmi -f $(STALE_IMAGES) endif kill: ifneq "$(RUNNED)" "" @docker kill $(ALIAS) endif info: @docker ps -a -f name=$(ALIAS) ifneq "$(RUNNED)" "" $(eval ADBPORT := $(shell docker port $(ALIAS) | grep '5555/tcp' | awk '{split($$3,a,"$(COLON)");print a[2]}')) @echo -e "Use:\n adb kill-server\n adb connect $(IP):$(ADBPORT)" else @echo "Run container" endif fdroidserver-1.0.9/docker/README.md0000664000175000017500000000044413272566407016671 0ustar hanshans00000000000000# dscanner docker image # Use `make help` for up-to-date instructions. ``` usage: make {help|build|clean|kill|info} help this help screen build create docker image clean remove images and containers kill stop running containers info details of running container ``` fdroidserver-1.0.9/docker/enable_service.py0000775000175000017500000000050313272566407020731 0ustar hanshans00000000000000#!/usr/bin/env python2 from com.dtmilano.android.viewclient import ViewClient vc = ViewClient(*ViewClient.connectToDeviceOrExit()) button = vc.findViewWithText("OFF") if button: (x, y) = button.getXY() button.touch() else: print("Button not found. Is the app currently running?") exit() print("Done!")